From 4e70fbe95cb7a00fa52f64d15a3800a8896a402a Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 9 Sep 2025 20:10:00 -0700 Subject: [PATCH 01/94] Minor format change --- flystar/tests/test_startable.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 9962c05..cf3be71 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -554,9 +554,15 @@ def make_star_table(): starlist_names = np.array(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7', 'file8']) # Generate the startable - startable = StarTable(name=name_in, x=x_in, y=y_in, m=m_in, xe=xe_in, ye=ye_in, me=me_in, n=n_in, - ref_list=1, - list_times=starlist_times, list_names=starlist_names) + startable = StarTable( + name=name_in, + x=x_in, y=y_in, m=m_in, + xe=xe_in, ye=ye_in, me=me_in, + n=n_in, + ref_list=1, + list_times=starlist_times, + list_names=starlist_names + ) return startable From 243b56f675d0757623861ec4d270b311691153a9 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 17 Sep 2025 00:00:27 -0700 Subject: [PATCH 02/94] Remove 2-epoch linear fitting as scipy/matrix already handles it; Fixed absolute sigma in Linear model --- flystar/motion_model.py | 117 ++++++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 58 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index ebf4c46..39e2573 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -3,7 +3,7 @@ import pdb from flystar import parallax from astropy.time import Time -from scipy.optimize import curve_fit +from scipy.optimize import curve_fit, OptimizeWarning import warnings class MotionModel(ABC): @@ -207,64 +207,65 @@ def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, if params_guess is None: params_guess = [x.mean(),0.0,y.mean(),0.0] - # Handle 2-data point case - if len(np.unique(dt))==2: - if len(x)>2: # Catch case where bootstrap sends only 2 unique epochs - _,idx=np.unique(dt, return_index=True) - dt = dt[idx] - x = x[idx] - y = y[idx] - xe = xe[idx] - ye = ye[idx] - dx = np.diff(x)[0] - dy = np.diff(y)[0] - dt_diff = np.diff(dt)[0] - vx = dx / dt_diff - vy = dy / dt_diff - # TODO: still not sure about the error handling here - x0 = x[0] - dt[0]*vx # np.average(x, weights=x_wt) # - y0 = y[0] - dt[0]*vy # np.average(y, weights=y_wt) # - x0e = np.abs(dx) / 2**0.5 # np.sqrt(np.sum(xe**2)/2) # - y0e = np.abs(dy) / 2**0.5 # np.sqrt(np.sum(ye**2)/2) # - vxe = 0.0 #np.abs(vx) * np.sqrt(np.sum(xe**2/x**2)) - vye = 0.0 #np.abs(vy) * np.sqrt(np.sum(ye**2/y**2)) - + if use_scipy: + def linear(t, c0, c1): + return c0 + c1*t + x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) + x0, vx = x_opt + y0, vy = y_opt + x0e, vxe = np.sqrt(x_cov.diagonal()) + y0e, vye = np.sqrt(y_cov.diagonal()) + x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) else: - if use_scipy: - def linear(t, c0, c1): - return c0 + c1*t - x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) - x0, vx = x_opt - y0, vy = y_opt - x0e, vxe = np.sqrt(x_cov.diagonal()) - y0e, vye = np.sqrt(y_cov.diagonal()) - x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) - else: - # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme - x = np.array(x) - y = np.array(y) - dt = np.array(dt) - X_mat_t = np.vander(dt, 2) - # x calculation - W_mat_x = np.diag(x_wt) - XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t - pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix - popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution - perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution - # y calculation - W_mat_y = np.diag(y_wt) - XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t - pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix - popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution - perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution - # prepare values to return - x0, vx = popt_x[1], popt_x[0] - y0, vy = popt_y[1], popt_y[0] - x0e, vxe = perr_x[1], perr_x[0] - y0e, vye = perr_y[1], perr_y[0] - x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) - + # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme + x = np.array(x) + y = np.array(y) + dt = np.array(dt) + X_mat_t = np.vander(dt, 2) + # x calculation + W_mat_x = np.diag(x_wt) + XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t + pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix + popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution + perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + # y calculation + W_mat_y = np.diag(y_wt) + XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t + pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix + popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution + perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + # prepare values to return + vx, x0 = popt_x + vy, y0 = popt_y + vxe, x0e = perr_x + vye, y0e = perr_y + x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) + + residual_x = x - X_mat_t @ popt_x + residual_y = y - X_mat_t @ popt_y + + chi2_x = residual_x.T @ W_mat_x @ residual_x + chi2_y = residual_y.T @ W_mat_y @ residual_y + + if not absolute_sigma: + degree_of_freedom = len(x) - 2 + if degree_of_freedom > 0: + reduced_chi2_x = chi2_x/(len(x) - 2) + reduced_chi2_y = chi2_y/(len(x) - 2) + x0e *= reduced_chi2_x**0.5 + y0e *= reduced_chi2_y**0.5 + vxe *= reduced_chi2_x**0.5 + vye *= reduced_chi2_y**0.5 + else: + warnings.warn( + "Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to infinity.", + OptimizeWarning, stacklevel=2 + ) + x0e *= np.inf + y0e *= np.inf + vxe *= np.inf + vye *= np.inf params = [x0, vx, y0, vy] param_errors = [x0e, vxe, y0e, vye] return params, param_errors From 138546437d9a8adf352d15b7e2f4800c181c0c6c Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 17 Sep 2025 00:13:30 -0700 Subject: [PATCH 03/94] Add testing function for both absolute_sigma True and False --- flystar/tests/test_motion_model.py | 219 +++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) diff --git a/flystar/tests/test_motion_model.py b/flystar/tests/test_motion_model.py index a5d8fdb..2fa1b57 100755 --- a/flystar/tests/test_motion_model.py +++ b/flystar/tests/test_motion_model.py @@ -1,6 +1,8 @@ from flystar import motion_model import numpy as np import pytest +import matplotlib.pyplot as plt +from scipy.optimize import curve_fit def within_error(true_val, fit_val, fit_err, n_sigma=3): #print('True', true_val, 'Fit', fit_val, 'Fit err', fit_err) @@ -278,3 +280,220 @@ def test_Parallax_PA(): dat_pa90 = mod_pa90.get_pos_at_time([y0,vy,-x0,-vx,pi],[2020.0],t_set) assert (np.abs(dat_pa0[0]-(-dat_pa90[1]))<1e-10).all() assert (np.abs(dat_pa0[1]-(dat_pa90[0]))<1e-10).all() + + +def test_Linear_fit_vs_scipy(): + # Compare Linear fit results to scipy curve_fit results + t = np.array([0, 1., 2.2, 3.5, 5.]) + + x = np.array([ + [0., 0.5, 2.1, 3.2, 6.0], # Increasing 5 Epochs + [10.0, 8.9, 9.2, 7.4, 7.0], # Decreasing 5 Epochs + [2.5, np.nan, 5.2, np.nan, 5.0], # 3 Epochs + [np.nan, 6.2, np.nan, np.nan, 9.2], # 2 Epochs + # [np.nan, 2.0, np.nan, np.nan, np.nan], # 1 Epoch + # [np.nan, np.nan, np.nan, np.nan, np.nan] # All NaNs + ]) + + y = np.array([ + [10.2, 8.5, 9.1, 12.2, 13.0], # Increasing 5 Epochs + [8.0, 9.9, 8.2, 7.4, 7.0], # Decreasing 5 Epochs + [5.2, np.nan, 4.7, np.nan, 6.0], # 3 Epochs + [np.nan, 1.2, np.nan, np.nan, 3.2], # 2 Epochs + # [np.nan, 2.0, np.nan, np.nan, np.nan], # 1 Epoch + # [np.nan, np.nan, np.nan, np.nan, np.nan] # All NaNs + ]) + + xe = np.array([ + [0.2, 0.5, 0.3, 0.4, 0.6], + [0.5, 0.2, 0.7, 0.3, 0.2], + [0.5, np.nan, 0.6, np.nan, 0.3], + [np.nan, 0.6, np.nan, np.nan, 0.3], + # [np.nan, 0.4, np.nan, np.nan, np.nan], + # [np.nan, np.nan, np.nan, np.nan, np.nan] + ]) + + ye = np.array([ + [0.3, 0.2, 0.5, 0.2, 0.4], + [0.2, 0.5, 0.6, 0.4, 0.2], + [0.7, np.nan, 0.5, np.nan, 0.2], + [np.nan, 0.4, np.nan, np.nan, 0.5], + # [np.nan, 0.5, np.nan, np.nan, np.nan], + # [np.nan, np.nan, np.nan, np.nan, np.nan] + ]) + + x = np.ma.masked_invalid(x) + y = np.ma.masked_invalid(y) + xe = np.ma.masked_invalid(xe) + ye = np.ma.masked_invalid(ye) + mask = np.ma.getmaskarray(x) | np.ma.getmaskarray(y) | np.ma.getmaskarray(xe) | np.ma.getmaskarray(ye) + + # tab = StarTable({ + # 'x': x, + # 'y': y, + # 'xe': xe, + # 'ye': ye + # }) + # tab.meta['LIST_TIMES'] = t + # tab.fit_velocities(use_scipy=True, absolute_sigma=True) + + # Plot data + N = x.shape[0] + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6)) + for i in range(N): + line_mask = ~np.isnan(x[i]) & ~mask[i] + ax1.errorbar(t[line_mask], x[i][line_mask], yerr=xe[i][line_mask], fmt='o-', label=f'Line {i}') + ax2.errorbar(t[line_mask], y[i][line_mask], yerr=ye[i][line_mask], fmt='o-', label=f'Line {i}') + ax1.set_xlabel('Time') + ax1.set_ylabel('Position') + ax1.legend() + ax1.set_title('X vs Time') + ax2.set_xlabel('Time') + ax2.set_ylabel('Position') + ax2.legend() + ax2.set_title('Y vs Time') + plt.show() + + N = len(x) + t0 = np.average(np.broadcast_to(t, x.shape), weights=1./np.hypot(xe, ye), axis=1) + dt = np.zeros_like(x) + + # velfit + # vx_velfit = np.zeros(N) + # vxe_velfit = np.zeros(N) + # vy_velfit = np.zeros(N) + # vye_velfit = np.zeros(N) + # x0_velfit = np.zeros(N) + # x0e_velfit = np.zeros(N) + # y0_velfit = np.zeros(N) + # y0e_velfit = np.zeros(N) + + # scipy + vx_scipy = np.zeros(N) + vxe_scipy = np.zeros(N) + vy_scipy = np.zeros(N) + vye_scipy = np.zeros(N) + x0_scipy = np.zeros(N) + x0e_scipy = np.zeros(N) + y0_scipy = np.zeros(N) + y0e_scipy = np.zeros(N) + + # motion_model + mm = motion_model.Linear() + + vx_mm_scipy = np.zeros(N) + vxe_mm_scipy = np.zeros(N) + vy_mm_scipy = np.zeros(N) + vye_mm_scipy = np.zeros(N) + x0_mm_scipy = np.zeros(N) + x0e_mm_scipy = np.zeros(N) + y0_mm_scipy = np.zeros(N) + y0e_mm_scipy = np.zeros(N) + + vx_mm = np.zeros(N) + vxe_mm = np.zeros(N) + vy_mm = np.zeros(N) + vye_mm = np.zeros(N) + x0_mm = np.zeros(N) + x0e_mm = np.zeros(N) + y0_mm = np.zeros(N) + y0e_mm = np.zeros(N) + + def linear(t, c0, c1): + return c0 + c1*t + + # Absolute sigma + for absolute_sigma in [True, False]: + for i in range(N): + dt[i] = t - t0[i] + + # # velfit.linear_fit + # vx_velfit_results = linear_fit(dt[i][~mask[i]], x[i][~mask[i]], sigma=xe[i][~mask[i]], absolute_sigma=absolute_sigma) + # vy_velfit_results = linear_fit(dt[i][~mask[i]], y[i][~mask[i]], sigma=ye[i][~mask[i]], absolute_sigma=absolute_sigma) + + # vx_velfit[i] = vx_velfit_results['slope'] + # vxe_velfit[i] = vx_velfit_results['e_slope'] + # vy_velfit[i] = vy_velfit_results['slope'] + # vye_velfit[i] = vy_velfit_results['e_slope'] + # x0_velfit[i] = vx_velfit_results['intercept'] + # x0e_velfit[i] = vx_velfit_results['e_intercept'] + # y0_velfit[i] = vy_velfit_results['intercept'] + # y0e_velfit[i] = vy_velfit_results['e_intercept'] + + # scipy.curve_fit + p0x = np.array([0., x[i][~mask[i]].mean()]) + p0y = np.array([0., y[i][~mask[i]].mean()]) + popt_x, pcov_x = curve_fit(linear, dt[i][~mask[i]], x[i][~mask[i]], p0=p0x, sigma=xe[i][~mask[i]], absolute_sigma=absolute_sigma) + vx_scipy[i], vxe_scipy[i] = popt_x[1], np.sqrt(pcov_x[1, 1]) + x0_scipy[i], x0e_scipy[i] = popt_x[0], np.sqrt(pcov_x[0, 0]) + popt_y, pcov_y = curve_fit(linear, dt[i][~mask[i]], y[i][~mask[i]], p0=p0y, sigma=ye[i][~mask[i]], absolute_sigma=absolute_sigma) + vy_scipy[i], vye_scipy[i] = popt_y[1], np.sqrt(pcov_y[1, 1]) + y0_scipy[i], y0e_scipy[i] = popt_y[0], np.sqrt(pcov_y[0, 0]) + + # motion_model without scipy + params, param_errs = mm.fit_motion_model( + t[~mask[i]], x[i][~mask[i]], y[i][~mask[i]], + xe[i][~mask[i]], ye[i][~mask[i]], t0[i], + weighting='var', + use_scipy=False, + absolute_sigma=absolute_sigma + ) + vx_mm[i] = params[mm.fitter_param_names.index('vx')] + vy_mm[i] = params[mm.fitter_param_names.index('vy')] + vxe_mm[i] = param_errs[mm.fitter_param_names.index('vx')] + vye_mm[i] = param_errs[mm.fitter_param_names.index('vy')] + x0_mm[i] = params[mm.fitter_param_names.index('x0')] + y0_mm[i] = params[mm.fitter_param_names.index('y0')] + x0e_mm[i] = param_errs[mm.fitter_param_names.index('x0')] + y0e_mm[i] = param_errs[mm.fitter_param_names.index('y0')] + + # motion_model with scipy + params, param_errs = mm.fit_motion_model( + t[~mask[i]], x[i][~mask[i]], y[i][~mask[i]], + xe[i][~mask[i]], ye[i][~mask[i]], t0[i], + weighting='var', + use_scipy=True, + absolute_sigma=absolute_sigma + ) + vx_mm_scipy[i] = params[mm.fitter_param_names.index('vx')] + vy_mm_scipy[i] = params[mm.fitter_param_names.index('vy')] + vxe_mm_scipy[i] = param_errs[mm.fitter_param_names.index('vx')] + vye_mm_scipy[i] = param_errs[mm.fitter_param_names.index('vy')] + x0_mm_scipy[i] = params[mm.fitter_param_names.index('x0')] + y0_mm_scipy[i] = params[mm.fitter_param_names.index('y0')] + x0e_mm_scipy[i] = param_errs[mm.fitter_param_names.index('x0')] + y0e_mm_scipy[i] = param_errs[mm.fitter_param_names.index('y0')] + + rtol = 1e-5 + # np.testing.assert_allclose(vx_velfit, vx_scipy, rtol=rtol) + # np.testing.assert_allclose(vxe_velfit, vxe_scipy, rtol=rtol) + # np.testing.assert_allclose(vy_velfit, vy_scipy, rtol=rtol) + # np.testing.assert_allclose(vye_velfit, vye_scipy, rtol=rtol) + # np.testing.assert_allclose(x0_velfit, x0_scipy, rtol=rtol) + # np.testing.assert_allclose(x0e_velfit, x0e_scipy, rtol=rtol) + # np.testing.assert_allclose(y0_velfit, y0_scipy, rtol=rtol) + # np.testing.assert_allclose(y0e_velfit, y0e_scipy, rtol=rtol) + # np.testing.assert_allclose(vx_velfit, vx_mm, rtol=rtol) + # np.testing.assert_allclose(vxe_velfit, vxe_mm, rtol=rtol) + # np.testing.assert_allclose(vy_velfit, vy_mm, rtol=rtol) + # np.testing.assert_allclose(vye_velfit, vye_mm, rtol=rtol) + # np.testing.assert_allclose(x0_velfit, x0_mm, rtol=rtol) + # np.testing.assert_allclose(x0e_velfit, x0e_mm, rtol=rtol) + # np.testing.assert_allclose(y0_velfit, y0_mm, rtol=rtol) + # np.testing.assert_allclose(y0e_velfit, y0e_mm, rtol=rtol) + np.testing.assert_allclose(vx_scipy, vx_mm, rtol=rtol) + np.testing.assert_allclose(vxe_scipy, vxe_mm, rtol=rtol) + np.testing.assert_allclose(vy_scipy, vy_mm, rtol=rtol) + np.testing.assert_allclose(vye_scipy, vye_mm, rtol=rtol) + np.testing.assert_allclose(x0_scipy, x0_mm, rtol=rtol) + np.testing.assert_allclose(x0e_scipy, x0e_mm, rtol=rtol) + np.testing.assert_allclose(y0_scipy, y0_mm, rtol=rtol) + np.testing.assert_allclose(y0e_scipy, y0e_mm, rtol=rtol) + np.testing.assert_allclose(vx_scipy, vx_mm_scipy, rtol=rtol) + np.testing.assert_allclose(vxe_scipy, vxe_mm_scipy, rtol=rtol) + np.testing.assert_allclose(vy_scipy, vy_mm_scipy, rtol=rtol) + np.testing.assert_allclose(vye_scipy, vye_mm_scipy, rtol=rtol) + np.testing.assert_allclose(x0_scipy, x0_mm_scipy, rtol=rtol) + np.testing.assert_allclose(x0e_scipy, x0e_mm_scipy, rtol=rtol) + np.testing.assert_allclose(y0_scipy, y0_mm_scipy, rtol=rtol) + np.testing.assert_allclose(y0e_scipy, y0e_mm_scipy, rtol=rtol) From d7884e85dc250e44bc2394f732c21d53a9e22e3a Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 17 Sep 2025 00:14:14 -0700 Subject: [PATCH 04/94] Simple cleanup --- flystar/startables.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index a0bf3e3..422f9a7 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -828,7 +828,7 @@ def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scip # If the points do not cover multiple times, go to a fixed model if (t == t[0]).all(): motion_model_use = 'Fixed' - + self['motion_model_used'][ss] = motion_model_use # # Get the motion model object. @@ -960,15 +960,8 @@ def fit_velocities_all_detected(self, motion_model_to_fit, weighting='var', use_ valid_ye = np.all(self['ye'][select_stars, :][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['ye'][select_stars, :][:, epoch_cols]), axis=1) if mask_val: - x = np.ma.masked_values(self['x'][select_stars, :][:, epoch_cols], mask_val) - y = np.ma.masked_values(self['y'][select_stars, :][:, epoch_cols], mask_val) - - # If no mask, convert x.mask to list - if not np.ma.is_masked(x): - x.mask = np.zeros_like(self['x'][select_stars, :][:, epoch_cols].data, dtype=bool) - if not np.ma.is_masked(y): - y.mask = np.zeros_like(self['y'][select_stars, :][:, epoch_cols].data, dtype=bool) - + x = np.ma.masked_values(self['x'][select_stars, :][:, epoch_cols], mask_val, shrink=False) + y = np.ma.masked_values(self['y'][select_stars, :][:, epoch_cols], mask_val, shrink=False) valid_x = ~np.any(x.mask, axis=1) valid_y = ~np.any(y.mask, axis=1) detected_in_all_epochs = np.logical_and.reduce(( From 200d7e70653702411533cce2bc1ed50006eaa8bb Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 17 Sep 2025 10:09:56 -0700 Subject: [PATCH 05/94] Revert 2 epoch case changes --- flystar/motion_model.py | 138 +++++++++++++++++++++++----------------- 1 file changed, 80 insertions(+), 58 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 549b46a..c5642d6 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -207,65 +207,87 @@ def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, if params_guess is None: params_guess = [x.mean(),0.0,y.mean(),0.0] - if use_scipy: - def linear(t, c0, c1): - return c0 + c1*t - x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) - x0, vx = x_opt - y0, vy = y_opt - x0e, vxe = np.sqrt(x_cov.diagonal()) - y0e, vye = np.sqrt(y_cov.diagonal()) - x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) + # Handle 2-data point case + if len(np.unique(dt))==2: + if len(x)>2: # Catch case where bootstrap sends only 2 unique epochs + _,idx=np.unique(dt, return_index=True) + dt = dt[idx] + x = x[idx] + y = y[idx] + xe = xe[idx] + ye = ye[idx] + dx = np.diff(x)[0] + dy = np.diff(y)[0] + dt_diff = np.diff(dt)[0] + vx = dx / dt_diff + vy = dy / dt_diff + # TODO: still not sure about the error handling here + x0 = x[0] - dt[0]*vx # np.average(x, weights=x_wt) # + y0 = y[0] - dt[0]*vy # np.average(y, weights=y_wt) # + x0e = np.abs(dx) / 2**0.5 # np.sqrt(np.sum(xe**2)/2) # + y0e = np.abs(dy) / 2**0.5 # np.sqrt(np.sum(ye**2)/2) # + vxe = 0.0 #np.abs(vx) * np.sqrt(np.sum(xe**2/x**2)) + vye = 0.0 #np.abs(vy) * np.sqrt(np.sum(ye**2/y**2)) else: - # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme - x = np.array(x) - y = np.array(y) - dt = np.array(dt) - X_mat_t = np.vander(dt, 2) - # x calculation - W_mat_x = np.diag(x_wt) - XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t - pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix - popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution - perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution - # y calculation - W_mat_y = np.diag(y_wt) - XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t - pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix - popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution - perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution - # prepare values to return - vx, x0 = popt_x - vy, y0 = popt_y - vxe, x0e = perr_x - vye, y0e = perr_y - x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) - - residual_x = x - X_mat_t @ popt_x - residual_y = y - X_mat_t @ popt_y - - chi2_x = residual_x.T @ W_mat_x @ residual_x - chi2_y = residual_y.T @ W_mat_y @ residual_y - - if not absolute_sigma: - degree_of_freedom = len(x) - 2 - if degree_of_freedom > 0: - reduced_chi2_x = chi2_x/(len(x) - 2) - reduced_chi2_y = chi2_y/(len(x) - 2) - x0e *= reduced_chi2_x**0.5 - y0e *= reduced_chi2_y**0.5 - vxe *= reduced_chi2_x**0.5 - vye *= reduced_chi2_y**0.5 - else: - warnings.warn( - "Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to infinity.", - OptimizeWarning, stacklevel=2 - ) - x0e *= np.inf - y0e *= np.inf - vxe *= np.inf - vye *= np.inf + if use_scipy: + def linear(t, c0, c1): + return c0 + c1*t + x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) + x0, vx = x_opt + y0, vy = y_opt + x0e, vxe = np.sqrt(x_cov.diagonal()) + y0e, vye = np.sqrt(y_cov.diagonal()) + x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) + else: + # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme + x = np.array(x) + y = np.array(y) + dt = np.array(dt) + X_mat_t = np.vander(dt, 2) + # x calculation + W_mat_x = np.diag(x_wt) + XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t + pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix + popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution + perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + # y calculation + W_mat_y = np.diag(y_wt) + XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t + pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix + popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution + perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + # prepare values to return + vx, x0 = popt_x + vy, y0 = popt_y + vxe, x0e = perr_x + vye, y0e = perr_y + x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) + + residual_x = x - X_mat_t @ popt_x + residual_y = y - X_mat_t @ popt_y + + chi2_x = residual_x.T @ W_mat_x @ residual_x + chi2_y = residual_y.T @ W_mat_y @ residual_y + + if not absolute_sigma: + degree_of_freedom = len(x) - 2 + if degree_of_freedom > 0: + reduced_chi2_x = chi2_x/(len(x) - 2) + reduced_chi2_y = chi2_y/(len(x) - 2) + x0e *= reduced_chi2_x**0.5 + y0e *= reduced_chi2_y**0.5 + vxe *= reduced_chi2_x**0.5 + vye *= reduced_chi2_y**0.5 + else: + warnings.warn( + "Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to infinity.", + OptimizeWarning, stacklevel=2 + ) + x0e *= np.inf + y0e *= np.inf + vxe *= np.inf + vye *= np.inf params = [x0, vx, y0, vy] param_errors = [x0e, vxe, y0e, vye] return params, param_errors From 5a859dbeefbe43427cb7026a1bd49816b89fe1aa Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 24 Sep 2025 18:17:01 -0700 Subject: [PATCH 06/94] Fix r string import warning --- flystar/plots.py | 12 ++++++------ flystar/starlists.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/flystar/plots.py b/flystar/plots.py index be6f0fe..d6a8d40 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -262,7 +262,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None py.plot(x, norm.pdf(x,mean,sigma), 'g-', linewidth=2) # Annotate reduced chi-sqared values in plot: with outliers - xstr = '$\chi^2_r$ = {0}'.format(np.round(chi_sq_red, decimals=3)) + xstr = r'$\chi^2_r$ = {0}'.format(np.round(chi_sq_red, decimals=3)) py.annotate(xstr, xy=(0.3, 0.77), xycoords='figure fraction', color='black') txt = r'$\nu$ = 2*{0} - {1} = {2}'.format(len(diff_x), num_mod_params, deg_freedom) @@ -273,7 +273,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None py.annotate(xstr3, xy=(0.25, 0.80), xycoords='figure fraction', color='black') # Annotate reduced chi-sqared values in plot: without outliers - xstr = '$\chi^2_r$ = {0}'.format(np.round(chi_sq_red_good, decimals=3)) + xstr = r'$\chi^2_r$ = {0}'.format(np.round(chi_sq_red_good, decimals=3)) py.annotate(xstr, xy=(0.7, 0.8), xycoords='figure fraction', color='black') txt = r'$\nu$ = 2*{0} - {1} = {2}'.format(len(good[0]), num_mod_params, deg_freedom_good) @@ -2221,7 +2221,7 @@ def plot_chi2_dist(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, boot_ plt.hist(x[idx], bins=chi2_bins, histtype='step', label='X', density=True) plt.hist(y[idx], bins=chi2_bins, histtype='step', label='Y', density=True) plt.plot(chi2_xaxis, chi2.pdf(chi2_xaxis, Ndof), 'r-', alpha=0.6, - label='$\chi^2$ ' + str(Ndof) + ' dof') + label=r'$\chi^2$ ' + str(Ndof) + ' dof') plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) plt.xlim(0, xlim) plt.legend() @@ -2306,7 +2306,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, motion_model_dict={}, xlim=40, n_bin plt.hist(x[idx], bins=chi2_bins, histtype='stepfilled', label='RA', density=True, color='skyblue', alpha=0.8, edgecolor='k') plt.hist(y[idx], bins=chi2_bins, histtype='stepfilled', label='DEC', density=True, color='orange', alpha=0.8, edgecolor='k') plt.plot(chi2_xaxis, chi2.pdf(chi2_xaxis, Ndof), 'r-', alpha=0.6, - label='$\chi^2$ ' + str(Ndof) + ' dof') + label=r'$\chi^2$ ' + str(Ndof) + ' dof') #plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) plt.title(str(filter)+' (N = '+str(len(chi2_x_list))+')', fontsize=22) plt.xlim(0, xlim) @@ -2593,7 +2593,7 @@ def plot_chi2_dist_mag(tab, Ndetect, xlim=40, n_bins=30, boot_err=False): plt.clf() plt.hist(chi2_m[idx], bins=np.arange(xlim*10), histtype='step', density=True) plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, - label='$\chi^2$ ' + str(Ndof) + ' dof') + label=r'$\chi^2$ ' + str(Ndof) + ' dof') plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) plt.xlim(0, xlim) plt.legend() @@ -2642,7 +2642,7 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil plt.clf() plt.hist(chi2_m[idx], bins=np.arange(xlim*10), label='mag', histtype='stepfilled', density=True, color='green', alpha=0.7, edgecolor='k') plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, - label='$\chi^2$ ' + str(Ndof) + ' dof') + label=r'$\chi^2$ ' + str(Ndof) + ' dof') #plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) plt.xlim(0, xlim) plt.xlabel(r'$\chi^{2}$', fontsize=28) diff --git a/flystar/starlists.py b/flystar/starlists.py index 23df44f..f1f3278 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -421,7 +421,7 @@ def read_starlist(starlistFile, error=True): starlist astropy table. containing: name, m, x, y, xe, ye, t """ - t_ref = Table.read(starlistFile, format='ascii', delimiter='\s') + t_ref = Table.read(starlistFile, format='ascii', delimiter=r'\s') # Check if this already has column names: cols = t_ref.colnames @@ -624,7 +624,7 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): ------ starlists.StarList() object (subclass of Astropy Table). """ - t_ref = Table.read(filename, format='ascii', delimiter='\s') + t_ref = Table.read(filename, format='ascii', delimiter=r'\s') # Check if this already has column names: cols = t_ref.colnames From 253c52db5b0337944237a490a4850a67aa1b950e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 7 Nov 2025 12:42:39 -0800 Subject: [PATCH 07/94] Clean up: Remove scale_errors; Update init functions; Update Linear model error calculations --- flystar/motion_model.py | 370 +++++++++++++++++++++------------------- 1 file changed, 199 insertions(+), 171 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index c5642d6..3c5069c 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -41,8 +41,13 @@ def get_batch_pos_at_time(self, t): #return x, y, x_err, y_err pass - def run_fit(self, t, x, y, xe, ye, t0, weighting='var', - use_scipy=True, absolute_sigma=True): + def run_fit( + self, t, x, y, xe, ye, t0, + weighting='var', + use_scipy=True, + absolute_sigma=True, + fill_value=np.inf + ): # Run a single fit (used both for overall fit + bootstrap iterations) pass @@ -54,37 +59,43 @@ def get_weights(self, xe, ye, weighting='var'): else: warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) return 1./xe**2, 1./ye**2 - - def scale_errors(self, errs, weighting='var'): - if weighting=='std': - return np.array(errs)**2 - elif weighting=='var': - return errs - else: - warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) - return errs - def fit_motion_model(self, t, x, y, xe, ye, t0, bootstrap=0, weighting='var', - use_scipy=True, absolute_sigma=True): + def fit_motion_model( + self, t, x, y, xe, ye, t0, + bootstrap=0, + weighting='var', + use_scipy=True, + absolute_sigma=True, + fill_value=np.inf, + rng=None + ): """ Fit the input positions on the sky and errors to determine new parameters for this motion model (MM). Best-fit parameters will be returned along with uncertainties. """ - params, param_errs = self.run_fit(t, x, y, xe, ye, t0=t0, weighting=weighting, - use_scipy=use_scipy, absolute_sigma=absolute_sigma) - - if bootstrap>0 and len(x)>(self.n_pts_req): + params, param_errs, chi2x, chi2y = self.run_fit( + t, x, y, xe, ye, t0=t0, + weighting=weighting, + use_scipy=use_scipy, + absolute_sigma=absolute_sigma, + fill_value=fill_value + ) + + if bootstrap > 0 and len(x) > (self.n_pts_req): edx = np.arange(len(x), dtype=int) bb_params = [] bb_params_errs = [] for bb in range(bootstrap): - bdx = np.random.choice(edx, len(x)) - while len(np.unique(bdx)) 0: + reduced_chi2x = chi2x / degree_of_freedom + reduced_chi2y = chi2y / degree_of_freedom + + param_errors[0] *= reduced_chi2x**0.5 + param_errors[1] *= reduced_chi2y**0.5 + else: + warnings.warn( + f'Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value {fill_value}.', + OptimizeWarning, stacklevel=2 + ) + param_errors = np.full_like(param_errors, fill_value) + + return params, param_errors, chi2x, chi2y + class Linear(MotionModel): """ A 2D linear motion model for a star on the sky. """ - n_pts_req = 2 - n_params=2 - fitter_param_names = ['x0', 'vx', 'y0', 'vy'] - fixed_param_names = ['t0'] - def __init__(self, **kwargs): # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() + self.n_pts_req = 2 + self.n_params = 2 + self.fitter_param_names = ['x0', 'vx', 'y0', 'vy'] + self.fixed_param_names = ['t0'] return def get_pos_at_time(self, fit_params, fixed_params, t): @@ -183,7 +216,7 @@ def get_pos_at_time(self, fit_params, fixed_params, t): fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) dt = t-fixed_params_dict['t0'] return fit_params_dict['x0'] + fit_params_dict['vx']*dt, fit_params_dict['y0'] + fit_params_dict['vy']*dt - + def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], t0=[], x0_err=[],vx_err=[], y0_err=[],vy_err=[], **kwargs): if hasattr(t, "__len__"): @@ -200,113 +233,98 @@ def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], t0=[], y_err = np.hypot(y0_err, vy_err*dt) return x,y,x_err,y_err - def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, - use_scipy=True, absolute_sigma=True): - dt = t-t0 - x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) + def run_fit( + self, t, x, y, xe, ye, t0, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, + fill_value=np.inf + ): + dt = t - t0 + x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) if params_guess is None: - params_guess = [x.mean(),0.0,y.mean(),0.0] - - # Handle 2-data point case - if len(np.unique(dt))==2: - if len(x)>2: # Catch case where bootstrap sends only 2 unique epochs - _,idx=np.unique(dt, return_index=True) - dt = dt[idx] - x = x[idx] - y = y[idx] - xe = xe[idx] - ye = ye[idx] - dx = np.diff(x)[0] - dy = np.diff(y)[0] - dt_diff = np.diff(dt)[0] - vx = dx / dt_diff - vy = dy / dt_diff - # TODO: still not sure about the error handling here - x0 = x[0] - dt[0]*vx # np.average(x, weights=x_wt) # - y0 = y[0] - dt[0]*vy # np.average(y, weights=y_wt) # - x0e = np.abs(dx) / 2**0.5 # np.sqrt(np.sum(xe**2)/2) # - y0e = np.abs(dy) / 2**0.5 # np.sqrt(np.sum(ye**2)/2) # - vxe = 0.0 #np.abs(vx) * np.sqrt(np.sum(xe**2/x**2)) - vye = 0.0 #np.abs(vy) * np.sqrt(np.sum(ye**2/y**2)) + params_guess = [x.mean(), 0., y.mean(), 0.] + + if use_scipy: + def linear(t, c0, c1): + return c0 + c1*t + x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) + x0, vx = x_opt + y0, vy = y_opt + x0e, vxe = np.sqrt(x_cov.diagonal()) + y0e, vye = np.sqrt(y_cov.diagonal()) + params = np.array([x0, vx, y0, vy]) + param_errors = np.array([x0e, vxe, y0e, vye]) + chi2_x, chi2_y = self.get_chi2(params, [t0], t, x, y, xe, ye) + else: - if use_scipy: - def linear(t, c0, c1): - return c0 + c1*t - x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) - x0, vx = x_opt - y0, vy = y_opt - x0e, vxe = np.sqrt(x_cov.diagonal()) - y0e, vye = np.sqrt(y_cov.diagonal()) - x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) - else: - # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme - x = np.array(x) - y = np.array(y) - dt = np.array(dt) - X_mat_t = np.vander(dt, 2) - # x calculation - W_mat_x = np.diag(x_wt) - XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t - pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix - popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution - perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution - # y calculation - W_mat_y = np.diag(y_wt) - XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t - pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix - popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution - perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution - # prepare values to return - vx, x0 = popt_x - vy, y0 = popt_y - vxe, x0e = perr_x - vye, y0e = perr_y - x0e, vxe, y0e, vye = self.scale_errors([x0e, vxe, y0e, vye], weighting=weighting) - - residual_x = x - X_mat_t @ popt_x - residual_y = y - X_mat_t @ popt_y - - chi2_x = residual_x.T @ W_mat_x @ residual_x - chi2_y = residual_y.T @ W_mat_y @ residual_y - - if not absolute_sigma: - degree_of_freedom = len(x) - 2 - if degree_of_freedom > 0: - reduced_chi2_x = chi2_x/(len(x) - 2) - reduced_chi2_y = chi2_y/(len(x) - 2) - x0e *= reduced_chi2_x**0.5 - y0e *= reduced_chi2_y**0.5 - vxe *= reduced_chi2_x**0.5 - vye *= reduced_chi2_y**0.5 - else: - warnings.warn( - "Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to infinity.", - OptimizeWarning, stacklevel=2 - ) - x0e *= np.inf - y0e *= np.inf - vxe *= np.inf - vye *= np.inf - params = [x0, vx, y0, vy] - param_errors = [x0e, vxe, y0e, vye] - return params, param_errors - - + # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme + x = np.array(x) + y = np.array(y) + dt = np.array(dt) + X_mat_t = np.vander(dt, 2) + # x calculation + W_mat_x = np.diag(x_wt) + XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t + pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix + popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution + perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + # y calculation + W_mat_y = np.diag(y_wt) + XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t + pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix + popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution + perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + # prepare values to return + vx, x0 = popt_x + vy, y0 = popt_y + vxe, x0e = perr_x + vye, y0e = perr_y + + # Does not use get_chi2 to accelerate calculation + residual_x = x - X_mat_t @ popt_x + residual_y = y - X_mat_t @ popt_y + + + chi2_x = residual_x.T @ W_mat_x @ residual_x + chi2_y = residual_y.T @ W_mat_y @ residual_y + + params = np.array([x0, vx, y0, vy]) + param_errors = np.array([x0e, vxe, y0e, vye]) + + if not absolute_sigma: + degree_of_freedom = len(x) - 2 + if degree_of_freedom > 0: + reduced_chi2_x = chi2_x/(len(x) - 2) + reduced_chi2_y = chi2_y/(len(x) - 2) + + param_errors[0:2] *= reduced_chi2_x**0.5 + param_errors[2:4] *= reduced_chi2_y**0.5 + + else: + warnings.warn( + f'Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value {fill_value}.', + OptimizeWarning, stacklevel=2 + ) + param_errors = np.full_like(param_errors, fill_value) + + return params, param_errors, chi2_x, chi2_y + class Acceleration(MotionModel): """ A 2D accelerating motion model for a star on the sky. """ - n_pts_req = 4 # TODO: consider special case for 3 pts - n_params=3 - fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] - fixed_param_names = ['t0'] - def __init__(self, x0=0, vx0=0, ax=0, y0=0, vy0=0, ay=0, t0=None, x0_err=0, vx0_err=0, ax_err=0, y0_err=0, vy0_err=0, ay_err=0, **kwargs): # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() + self.n_pts_req = 4 # TODO: consider special case for 3 pts + self.n_params = 3 + self.fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] + self.fixed_param_names = ['t0'] return def get_pos_at_time(self, fit_params, fixed_params, t): @@ -334,18 +352,24 @@ def get_batch_pos_at_time(self,t, y_err = np.sqrt(y0_err**2 + (vy0_err*dt)**2 + (0.5*ay_err*dt**2)**2) return x,y,x_err,y_err - def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, - use_scipy=True, absolute_sigma=True): + def run_fit( + self, t, x, y, xe, ye, t0, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, + fill_value=np.inf + ): if not use_scipy: Warning("Acceleration model has no non-scipy fitter option. Running with scipy.") - dt = t-t0 + dt = t - t0 x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) if params_guess is None: - params_guess = [x.mean(),0.0,0.0,y.mean(),0.0,0.0] - - def accel(t, c0,c1,c2): + params_guess = [x.mean(), 0., 0., y.mean(), 0., 0.] + + def accel(t, c0, c1, c2): return c0 + c1*t + 0.5*c2*t**2 - + x_opt, x_cov = curve_fit(accel, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=True) y_opt, y_cov = curve_fit(accel, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=True) x0 = x_opt[0] @@ -354,14 +378,13 @@ def accel(t, c0,c1,c2): vy0 = y_opt[1] ax = x_opt[2] ay = y_opt[2] - + x0e, vx0e, axe = np.sqrt(x_cov.diagonal()) y0e, vy0e, aye = np.sqrt(y_cov.diagonal()) - x0e, vx0e, axe, y0e, vy0e, aye = self.scale_errors([x0e, vx0e, axe, y0e, vy0e, aye], weighting=weighting) params = [x0, vx0, ax, y0, vy0, ay] param_errors = [x0e, vx0e, axe, y0e, vy0e, aye] - + return params, param_errors class Parallax(MotionModel): @@ -373,18 +396,17 @@ class Parallax(MotionModel): Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ - n_pts_req = 4 - n_params=3 - fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] - fixed_param_names = ['t0'] - fixed_meta_data = ['RA','Dec','PA','obs'] - def __init__(self, RA, Dec, PA=0.0, obs='earth', **kwargs): self.RA = RA self.Dec = Dec self.PA = PA self.obs = obs self.plx_vector_cached = None + self.n_pts_req = 4 + self.n_params = 3 + self.fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] + self.fixed_param_names = ['t0'] + self.fixed_meta_data = ['RA','Dec','PA','obs'] return def get_parallax_vector(self, t_mjd): @@ -411,7 +433,7 @@ def get_parallax_vector(self, t_mjd): def get_pos_at_time(self, fit_params, fixed_params, t): fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) - dt = t-fixed_params_dict['t0'] + dt = t - fixed_params_dict['t0'] t_mjd = Time(t, format='decimalyear', scale='utc').mjd pvec = self.get_parallax_vector(t_mjd) @@ -420,7 +442,7 @@ def get_pos_at_time(self, fit_params, fixed_params, t): x = fit_params_dict['x0'] + fit_params_dict['vx']*dt + fit_params_dict['pi']*pvec_x y = fit_params_dict['y0'] + fit_params_dict['vy']*dt + fit_params_dict['pi']*pvec_y return x, y - + def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], pi=[], t0=[], x0_err=[],vx_err=[], y0_err=[],vy_err=[], pi_err=[], **kwargs): @@ -446,8 +468,14 @@ def get_batch_pos_at_time(self, t, x_err,y_err = [],[] return x,y,x_err,y_err - def run_fit(self, t, x, y, xe, ye, t0, weighting='var', params_guess=None, - use_scipy=True, absolute_sigma=True): + def run_fit( + self, t, x, y, xe, ye, t0, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, + fill_value=np.inf + ): if not use_scipy: Warning("Parallax model has no non-scipy fitter option. Running with scipy.") t_mjd = Time(t, format='decimalyear', scale='utc').mjd @@ -467,8 +495,8 @@ def fit_func(t, x0,vx, y0,vy, pi): y.mean(),(y[idx_last]-y[idx_first])/(t[idx_last]-t[idx_first]), 1] res = curve_fit(fit_func, np.append(t,t), np.append(x,y), p0=params_guess, sigma = 1.0/np.append(x_wt,y_wt)) - x0,vx,y0,vy,pi = res[0] - x0_err,vx_err,y0_err,vy_err,pi_err = self.scale_errors(np.sqrt(np.diag(res[1])), weighting=weighting) + x0, vx, y0, vy, pi = res[0] + x0_err, vx_err, y0_err, vy_err, pi_err = np.sqrt(np.diag(res[1])) params = [x0, vx, y0, vy, pi] param_errors = [x0_err, vx_err, y0_err, vy_err, pi_err] @@ -498,7 +526,7 @@ def validate_motion_model_dict(motion_model_dict, startable, default_motion_mode raise ValueError(f"Cannot use {mm} motion model without required metadata. Please initialize with required metadata and provide in motion_model_dict.") else: motion_model_dict[mm] = mm_obj() - warnings.warn(f"Using default model/fitter for {mm}.", UserWarning) + # warnings.warn(f"Using default model/fitter for {mm}.", UserWarning) return motion_model_dict From 0ba32c91bb052d2f6fa924e4c10c936962aa2220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 7 Nov 2025 12:47:53 -0800 Subject: [PATCH 08/94] Rename py to plt; Add save path; Fix unclosed figure --- flystar/plots.py | 531 ++++++++++++++++++++++++----------------------- 1 file changed, 268 insertions(+), 263 deletions(-) diff --git a/flystar/plots.py b/flystar/plots.py index d6a8d40..d2dea16 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -1,9 +1,8 @@ from flystar import analysis, motion_model, startables -import pylab as py -import pylab as plt import numpy as np import matplotlib.mlab as mlab import matplotlib +import matplotlib.pyplot as plt from matplotlib import colors import matplotlib.cm as cm from scipy.stats import chi2 @@ -23,8 +22,8 @@ #################################################### -def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, fileName=None, - equal_axis=True, root='./'): +def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, + equal_axis=True, save_path=None, show_plot=True): """ Plot positions of stars in reference list and the transformed starlist, in reference list coordinates. Stars used in the transformation are @@ -55,31 +54,37 @@ def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, equal_axis: boolean If true, make axes equal. True by default + + save_path: string + Path to save the figure to. Default is None + show_plot: boolean + If true, show the plot. Default is True + """ - py.figure(figsize=(10,10)) - py.clf() - py.plot(ref['x'], ref['y'], 'g+', ms=5, label='Reference') - py.plot(starlist['x'], starlist['y'], 'rx', ms=5, label='starlist') - py.plot(ref_mat['x'], ref_mat['y'], color='skyblue', marker='s', ms=10, alpha=0.3, + plt.figure(figsize=(10,10)) + plt.clf() + plt.plot(ref['x'], ref['y'], 'g+', ms=5, label='Reference') + plt.plot(starlist['x'], starlist['y'], 'rx', ms=5, label='starlist') + plt.plot(ref_mat['x'], ref_mat['y'], color='skyblue', marker='s', ms=10, alpha=0.3, linestyle='None', label='Matched Reference') - py.plot(starlist_mat['x'], starlist_mat['y'], color='darkblue', marker='s', ms=5, alpha=0.3, + plt.plot(starlist_mat['x'], starlist_mat['y'], color='darkblue', marker='s', ms=5, alpha=0.3, linestyle='None', label='Matched starlist') - py.xlabel('X position (Reference Coords)') - py.ylabel('Y position (Reference Coords)') - py.legend(numpoints=1) - py.title('Label.dat Positions After Transformation') + plt.xlabel('X position (Reference Coords)') + plt.ylabel('Y position (Reference Coords)') + plt.legend(numpoints=1) + plt.title('Label.dat Positions After Transformation') if xlim != None: - py.axis([xlim[0], xlim[1], ylim[0], ylim[1]]) + plt.axis([xlim[0], xlim[1], ylim[0], ylim[1]]) if equal_axis: - py.axis('equal') - if fileName!=None: - #py.savefig(root + fileName[3:8] + 'Transformed_positions_' + '.png') - py.savefig(root + 'Transformed_positions_{0}'.format(fileName) + '.png') - else: - py.savefig(root + 'Transformed_positions.png') + plt.axis('equal') + + if save_path: + plt.savefig(save_path) + if show_plot: + plt.show() - py.close() + plt.close() return @@ -121,22 +126,22 @@ def pos_diff_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, xlim=None, fi bins = np.arange(min_range, max_range+bin_width, bin_width) - py.figure(figsize=(10,10)) - py.clf() - py.hist(diff_x, histtype='step', bins=bins, color='blue', label='X') - py.hist(diff_y, histtype='step', bins=bins, color='red', label='Y') - py.xlabel('Reference Position - starlist Position') - py.ylabel('N stars') - py.title('Position Differences for matched stars') + plt.figure(figsize=(10,10)) + plt.clf() + plt.hist(diff_x, histtype='step', bins=bins, color='blue', label='X') + plt.hist(diff_y, histtype='step', bins=bins, color='red', label='Y') + plt.xlabel('Reference Position - starlist Position') + plt.ylabel('N stars') + plt.title('Position Differences for matched stars') if xlim != None: - py.xlim([xlim[0], xlim[1]]) - py.legend() + plt.xlim([xlim[0], xlim[1]]) + plt.legend() if fileName != None: - py.savefig(root + fileName[3:8] + 'Positions_hist_' + '.png') + plt.savefig(root + fileName[3:8] + 'Positions_hist_' + '.png') else: - py.savefig(root + 'Positions_hist.png') + plt.savefig(root + 'Positions_hist.png') - py.close() + plt.close() return def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None, errs='both', xlim=None, @@ -248,51 +253,51 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None bins = np.arange(min_range, max_range+bin_width, bin_width) - py.figure(figsize=(10,10)) - py.clf() - n_x, bins_x, p = py.hist(ratio_x, histtype='step', bins=bins, color='blue', + plt.figure(figsize=(10,10)) + plt.clf() + n_x, bins_x, p = plt.hist(ratio_x, histtype='step', bins=bins, color='blue', label='X', density=True, linewidth=2) - n_y, bins_y, p = py.hist(ratio_y, histtype='step', bins=bins, color='red', + n_y, bins_y, p = plt.hist(ratio_y, histtype='step', bins=bins, color='red', label='Y', density=True, linewidth=2) # Overplot a Gaussian, as well mean = 0 sigma = 1 x = np.arange(-6, 6, 0.1) - py.plot(x, norm.pdf(x,mean,sigma), 'g-', linewidth=2) + plt.plot(x, norm.pdf(x,mean,sigma), 'g-', linewidth=2) # Annotate reduced chi-sqared values in plot: with outliers xstr = r'$\chi^2_r$ = {0}'.format(np.round(chi_sq_red, decimals=3)) - py.annotate(xstr, xy=(0.3, 0.77), xycoords='figure fraction', color='black') + plt.annotate(xstr, xy=(0.3, 0.77), xycoords='figure fraction', color='black') txt = r'$\nu$ = 2*{0} - {1} = {2}'.format(len(diff_x), num_mod_params, deg_freedom) - py.annotate(txt, xy=(0.25,0.74), xycoords='figure fraction', color='black') + plt.annotate(txt, xy=(0.25,0.74), xycoords='figure fraction', color='black') xstr2 = 'With Outliers' xstr3 = '{0} with +/- {1}+ sigma'.format(len(ratio_x) - len(good[0]), outlier) - py.annotate(xstr2, xy=(0.29, 0.83), xycoords='figure fraction', color='black') - py.annotate(xstr3, xy=(0.25, 0.80), xycoords='figure fraction', color='black') + plt.annotate(xstr2, xy=(0.29, 0.83), xycoords='figure fraction', color='black') + plt.annotate(xstr3, xy=(0.25, 0.80), xycoords='figure fraction', color='black') # Annotate reduced chi-sqared values in plot: without outliers xstr = r'$\chi^2_r$ = {0}'.format(np.round(chi_sq_red_good, decimals=3)) - py.annotate(xstr, xy=(0.7, 0.8), xycoords='figure fraction', color='black') + plt.annotate(xstr, xy=(0.7, 0.8), xycoords='figure fraction', color='black') txt = r'$\nu$ = 2*{0} - {1} = {2}'.format(len(good[0]), num_mod_params, deg_freedom_good) - py.annotate(txt, xy=(0.65,0.77), xycoords='figure fraction', color='black') + plt.annotate(txt, xy=(0.65,0.77), xycoords='figure fraction', color='black') xstr2 = 'Without Outliers' - py.annotate(xstr2, xy=(0.67, 0.83), xycoords='figure fraction', color='black') + plt.annotate(xstr2, xy=(0.67, 0.83), xycoords='figure fraction', color='black') - py.xlabel('(Ref Pos - TransStarlist Pos) / Ast. Error') - py.ylabel('N stars (normalized)') - py.title('Position Residuals for Matched Stars') + plt.xlabel('(Ref Pos - TransStarlist Pos) / Ast. Error') + plt.ylabel('N stars (normalized)') + plt.title('Position Residuals for Matched Stars') if xlim != None: - py.xlim([xlim[0], xlim[1]]) - py.legend() + plt.xlim([xlim[0], xlim[1]]) + plt.legend() if fileName != None: - py.savefig(root + fileName[3:8] + 'Positions_err_ratio_hist_' + '.png') + plt.savefig(root + fileName[3:8] + 'Positions_err_ratio_hist_' + '.png') else: - py.savefig(root + 'Positions_err_ratio_hist.png') + plt.savefig(root + 'Positions_err_ratio_hist.png') - py.close() + plt.close() return @@ -319,18 +324,18 @@ def mag_diff_hist(ref_mat, starlist_mat, bins=25, fileName=None, root='./'): bad2 = np.where(bad == True) diff_m = np.delete(diff_m, bad2) - py.figure(figsize=(10,10)) - py.clf() - py.hist(diff_m, bins=bins) - py.xlabel('Reference Mag - TransStarlist Mag') - py.ylabel('N stars') - py.title('Magnitude Difference for matched stars') + plt.figure(figsize=(10,10)) + plt.clf() + plt.hist(diff_m, bins=bins) + plt.xlabel('Reference Mag - TransStarlist Mag') + plt.ylabel('N stars') + plt.title('Magnitude Difference for matched stars') if fileName != None: - py.savefig(root + fileName[3:8] + 'Magnitude_hist_' + '.png') + plt.savefig(root + fileName[3:8] + 'Magnitude_hist_' + '.png') else: - py.savefig(root + 'Magnitude_hist.png') + plt.savefig(root + 'Magnitude_hist.png') - py.close() + plt.close() return def pos_diff_quiver(ref_mat, starlist_mat, qscale=10, keyLength=0.2, xlim=None, ylim=None, @@ -411,35 +416,35 @@ def pos_diff_quiver(ref_mat, starlist_mat, qscale=10, keyLength=0.2, xlim=None, s = len(xpos) - py.figure(figsize=(10,10)) - py.clf() - q = py.quiver(xpos, ypos, diff_x, diff_y, scale=qscale) + plt.figure(figsize=(10,10)) + plt.clf() + q = plt.quiver(xpos, ypos, diff_x, diff_y, scale=qscale) fmt = '{0} ref units'.format(keyLength) - #py.quiverkey(q, 0.2, 0.92, keyLength, fmt, coordinates='figure', color='black') + #plt.quiverkey(q, 0.2, 0.92, keyLength, fmt, coordinates='figure', color='black') # Make our reference arrow a different color - q2 = py.quiver(xpos[s-2:s], ypos[s-2:s], diff_x[s-2:s], diff_y[s-2:s], scale=qscale, color='red') + q2 = plt.quiver(xpos[s-2:s], ypos[s-2:s], diff_x[s-2:s], diff_y[s-2:s], scale=qscale, color='red') # Annotate our reference quiver arrow - py.annotate(fmt, xy=(xpos[-1]-2, ypos[-1]+0.5), color='red') - py.xlabel('X Position (Reference coords)') - py.ylabel('Y Position (Reference coords)') + plt.annotate(fmt, xy=(xpos[-1]-2, ypos[-1]+0.5), color='red') + plt.xlabel('X Position (Reference coords)') + plt.ylabel('Y Position (Reference coords)') if xlim != None: - py.axis([xlim[0], ylim[1], ylim[0], ylim[1]]) + plt.axis([xlim[0], ylim[1], ylim[0], ylim[1]]) if sigma: if fileName != None: - py.title('(Reference - Transformed Starlist positions) / sigma') - py.savefig(root + fileName[3:8] + 'Positions_quiver_sigma_' + '.png') + plt.title('(Reference - Transformed Starlist positions) / sigma') + plt.savefig(root + fileName[3:8] + 'Positions_quiver_sigma_' + '.png') else: - py.title('(Reference - Transformed Starlist positions) / sigma') - py.savefig(root + 'Positions_quiver_sigma.png') + plt.title('(Reference - Transformed Starlist positions) / sigma') + plt.savefig(root + 'Positions_quiver_sigma.png') else: if fileName != None: - py.title('Reference - Transformed Starlist positions') - py.savefig(root + fileName[3:8] + 'Positions_quiver_' + '.png') + plt.title('Reference - Transformed Starlist positions') + plt.savefig(root + fileName[3:8] + 'Positions_quiver_' + '.png') else: - py.title('Reference - Transformed Starlist positions') - py.savefig(root + 'Positions_quiver.png') + plt.title('Reference - Transformed Starlist positions') + plt.savefig(root + 'Positions_quiver.png') - py.close() + plt.close() return def vpd(ref, starlist_trans, vxlim, vylim): @@ -472,17 +477,17 @@ def vpd(ref, starlist_trans, vxlim, vylim): trans_vx = starlist_trans['vx'] trans_vy = starlist_trans['vy'] - py.figure(figsize=(10,10)) - py.clf() - py.plot(trans_vx, trans_vy, 'k.', ms=8, label='Transformed', alpha=0.4) - py.plot(ref_vx, ref_vy, 'r.', ms=8, label='Reference', alpha=0.4) - py.xlabel('Vx (Reference units)') - py.ylabel('Vy (Reference units)') + plt.figure(figsize=(10,10)) + plt.clf() + plt.plot(trans_vx, trans_vy, 'k.', ms=8, label='Transformed', alpha=0.4) + plt.plot(ref_vx, ref_vy, 'r.', ms=8, label='Reference', alpha=0.4) + plt.xlabel('Vx (Reference units)') + plt.ylabel('Vy (Reference units)') if vxlim != None: - py.axis([vxlim[0], vylim[1], vylim[0], vylim[1]]) - py.title('Reference and Transformed Proper Motions') - py.legend() - py.savefig('Transformed_velocities.png') + plt.axis([vxlim[0], vylim[1], vylim[0], vylim[1]]) + plt.title('Reference and Transformed Proper Motions') + plt.legend() + plt.savefig('Transformed_velocities.png') return @@ -538,27 +543,27 @@ def vel_diff_err_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, vxlim=Non sigma = 1 x = np.arange(-6, 6, 0.1) - py.figure(figsize=(20,10)) - py.subplot(121) - py.subplots_adjust(left=0.1) - py.hist(ratio_vx, bins=xbins, histtype='step', color='black', density=True, + plt.figure(figsize=(20,10)) + plt.subplot(121) + plt.subplots_adjust(left=0.1) + plt.hist(ratio_vx, bins=xbins, histtype='step', color='black', density=True, linewidth=2) - py.plot(x, norm.pdf(x,mean,sigma), 'r-', linewidth=2) - py.xlabel('(Ref Vx - Trans Vx) / Vxe') - py.ylabel('N_stars') - py.title('Vx Residuals, Matched') + plt.plot(x, norm.pdf(x,mean,sigma), 'r-', linewidth=2) + plt.xlabel('(Ref Vx - Trans Vx) / Vxe') + plt.ylabel('N_stars') + plt.title('Vx Residuals, Matched') if vxlim != None: - py.xlim([vxlim[0], vxlim[1]]) - py.subplot(122) - py.hist(ratio_vy, bins=ybins, histtype='step', color='black', density=True, + plt.xlim([vxlim[0], vxlim[1]]) + plt.subplot(122) + plt.hist(ratio_vy, bins=ybins, histtype='step', color='black', density=True, linewidth=2) - py.plot(x, norm.pdf(x,mean,sigma), 'r-', linewidth=2) - py.xlabel('(Ref Vy - Trans Vy) / Vye') - py.ylabel('N_stars') - py.title('Vy Residuals, Matched') + plt.plot(x, norm.pdf(x,mean,sigma), 'r-', linewidth=2) + plt.xlabel('(Ref Vy - Trans Vy) / Vye') + plt.ylabel('N_stars') + plt.title('Vy Residuals, Matched') if vylim != None: - py.xlim([vylim[0], vylim[1]]) - py.savefig('Vel_err_ratio_dist.png') + plt.xlim([vylim[0], vylim[1]]) + plt.savefig('Vel_err_ratio_dist.png') return @@ -606,17 +611,17 @@ def residual_vpd(ref_mat, starlist_trans_mat, pscale=None): yerr = np.hypot(ref_mat['vy_err'], starlist_trans_mat['vy_err']) # Plotting - py.figure(figsize=(10,10)) - py.clf() - py.errorbar(diff_x, diff_y, xerr=xerr, yerr=yerr, fmt='k.', ms=8, alpha=0.5) + plt.figure(figsize=(10,10)) + plt.clf() + plt.errorbar(diff_x, diff_y, xerr=xerr, yerr=yerr, fmt='k.', ms=8, alpha=0.5) if pscale != None: - py.xlabel('Reference_vx - Transformed_vx (mas/yr)') - py.ylabel('Reference_vy - Transformed_vy (mas/yr)') + plt.xlabel('Reference_vx - Transformed_vx (mas/yr)') + plt.ylabel('Reference_vy - Transformed_vy (mas/yr)') else: - py.xlabel('Reference_vx - Transformed_vx (reference coords)') - py.ylabel('Reference_vy - Transformed_vy (reference coords)') - py.title('Proper Motion Residuals') - py.savefig('resid_vpd.png') + plt.xlabel('Reference_vx - Transformed_vx (reference coords)') + plt.ylabel('Reference_vy - Transformed_vy (reference coords)') + plt.title('Proper Motion Residuals') + plt.savefig('resid_vpd.png') return @@ -636,8 +641,8 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', else: Nrows = math.ceil(Nstars / (Ncols / 2)) * 3 - py.close('all') - py.figure(2, figsize=figsize) + plt.close('all') + plt.figure(2, figsize=figsize) names = s.getArray('name') mag = s.getArray('mag') x = s.getArray('x') @@ -746,7 +751,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', t0 = int(np.floor(np.min(time))) tO = int(np.ceil(np.max(time))) - dateTicLoc = py.MultipleLocator(3) + dateTicLoc = plt.MultipleLocator(3) dateTicRng = [t0-1, tO+1] dateTics = np.arange(t0, tO+1) DateTicsLabel = dateTics-2000 @@ -754,7 +759,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', # See if we are using MJD instead. if time[0] > 50000: print('MJD') - dateTicLoc = py.MultipleLocator(1000) + dateTicLoc = plt.MultipleLocator(1000) t0 = int(np.round(np.min(time), 50)) tO = int(np.round(np.max(time), 50)) dateTicRng = [t0-200, tO+200] @@ -779,121 +784,121 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', ind = (row-1)*Ncols + col - paxes = py.subplot(Nrows, Ncols, ind) - py.plot(time, fitLineX, 'b-') - py.plot(time, fitLineX + fitSigX, 'b--') - py.plot(time, fitLineX - fitSigX, 'b--') - py.errorbar(time, x, yerr=xerr, fmt='k.') - rng = py.axis() - py.ylim(np.min(x-xerr-0.1),np.max(x+xerr+0.1)) - py.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) + paxes = plt.subplot(Nrows, Ncols, ind) + plt.plot(time, fitLineX, 'b-') + plt.plot(time, fitLineX + fitSigX, 'b--') + plt.plot(time, fitLineX - fitSigX, 'b--') + plt.errorbar(time, x, yerr=xerr, fmt='k.') + rng = plt.axis() + plt.ylim(np.min(x-xerr-0.1),np.max(x+xerr+0.1)) + plt.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) if time[0] > 50000: - py.xlabel('Date (MJD)', fontsize=fontsize1) - py.ylabel('X (pix)', fontsize=fontsize1) + plt.xlabel('Date (MJD)', fontsize=fontsize1) + plt.ylabel('X (pix)', fontsize=fontsize1) paxes.xaxis.set_major_formatter(fmtX) paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.yaxis.set_major_formatter(fmtY) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - py.yticks(np.arange(np.min(x-xerr-0.1), np.max(x+xerr+0.1), 0.2)) - py.xticks(dateTics, DateTicsLabel) - py.xlim(np.min(dateTics), np.max(dateTics)) - py.annotate(starName,xy=(1.0,1.1), xycoords='axes fraction', fontsize=12, color='red') + plt.yticks(np.arange(np.min(x-xerr-0.1), np.max(x+xerr+0.1), 0.2)) + plt.xticks(dateTics, DateTicsLabel) + plt.xlim(np.min(dateTics), np.max(dateTics)) + plt.annotate(starName,xy=(1.0,1.1), xycoords='axes fraction', fontsize=12, color='red') col = col + 1 ind = (row-1)*Ncols + col - paxes = py.subplot(Nrows, Ncols, ind) - py.plot(time, fitLineY, 'b-') - py.plot(time, fitLineY + fitSigY, 'b--') - py.plot(time, fitLineY - fitSigY, 'b--') - py.errorbar(time, y, yerr=yerr, fmt='k.') - rng = py.axis() - py.axis(dateTicRng + [rng[2], rng[3]], fontsize=fontsize1) - py.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) + paxes = plt.subplot(Nrows, Ncols, ind) + plt.plot(time, fitLineY, 'b-') + plt.plot(time, fitLineY + fitSigY, 'b--') + plt.plot(time, fitLineY - fitSigY, 'b--') + plt.errorbar(time, y, yerr=yerr, fmt='k.') + rng = plt.axis() + plt.axis(dateTicRng + [rng[2], rng[3]], fontsize=fontsize1) + plt.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) if time[0] > 50000: - py.xlabel('Date (MJD)', fontsize=fontsize1) - py.ylabel('Y (pix)', fontsize=fontsize1) + plt.xlabel('Date (MJD)', fontsize=fontsize1) + plt.ylabel('Y (pix)', fontsize=fontsize1) #paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.xaxis.set_major_formatter(fmtX) paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.yaxis.set_major_formatter(fmtY) paxes.tick_params(axis='both', which='major', labelsize=12) - py.ylim(np.min(y-yerr-0.1),np.max(y+yerr+0.1)) - py.yticks(np.arange(np.min(y-yerr-0.1), np.max(y+yerr+0.1), 0.2)) - py.xticks(dateTics, DateTicsLabel) - py.xlim(np.min(dateTics), np.max(dateTics)) + plt.ylim(np.min(y-yerr-0.1),np.max(y+yerr+0.1)) + plt.yticks(np.arange(np.min(y-yerr-0.1), np.max(y+yerr+0.1), 0.2)) + plt.xticks(dateTics, DateTicsLabel) + plt.xlim(np.min(dateTics), np.max(dateTics)) row = row + 1 col = col - 1 ind = (row-1)*Ncols + col - paxes = py.subplot(Nrows, Ncols, ind) - py.plot(time, np.zeros(len(time)), 'b-') - py.plot(time, fitSigX, 'b--') - py.plot(time, -fitSigX, 'b--') - py.errorbar(time, x - fitLineX, yerr=xerr, fmt='k.') - py.axis(dateTicRng + resTicRng, fontsize=fontsize1) - py.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) + paxes = plt.subplot(Nrows, Ncols, ind) + plt.plot(time, np.zeros(len(time)), 'b-') + plt.plot(time, fitSigX, 'b--') + plt.plot(time, -fitSigX, 'b--') + plt.errorbar(time, x - fitLineX, yerr=xerr, fmt='k.') + plt.axis(dateTicRng + resTicRng, fontsize=fontsize1) + plt.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) if time[0] > 50000: - py.xlabel('Date (MJD)', fontsize=fontsize1) - py.ylabel('X Residuals (pix)', fontsize=fontsize1) + plt.xlabel('Date (MJD)', fontsize=fontsize1) + plt.ylabel('X Residuals (pix)', fontsize=fontsize1) paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.xaxis.set_major_formatter(fmtX) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - py.xticks(dateTics, DateTicsLabel) - py.xlim(np.min(dateTics), np.max(dateTics)) + plt.xticks(dateTics, DateTicsLabel) + plt.xlim(np.min(dateTics), np.max(dateTics)) col = col + 1 ind = (row-1)*Ncols + col - paxes = py.subplot(Nrows, Ncols, ind) - py.plot(time, np.zeros(len(time)), 'b-') - py.plot(time, fitSigY, 'b--') - py.plot(time, -fitSigY, 'b--') - py.errorbar(time, y - fitLineY, yerr=yerr, fmt='k.') - py.axis(dateTicRng + resTicRng, fontsize=fontsize1) - py.xlabel('Date -2000 (yrs)', fontsize=fontsize1) + paxes = plt.subplot(Nrows, Ncols, ind) + plt.plot(time, np.zeros(len(time)), 'b-') + plt.plot(time, fitSigY, 'b--') + plt.plot(time, -fitSigY, 'b--') + plt.errorbar(time, y - fitLineY, yerr=yerr, fmt='k.') + plt.axis(dateTicRng + resTicRng, fontsize=fontsize1) + plt.xlabel('Date -2000 (yrs)', fontsize=fontsize1) if time[0] > 50000: - py.xlabel('Date (MJD)', fontsize=fontsize1) - py.ylabel('Y Residuals (pix)', fontsize=fontsize1) + plt.xlabel('Date (MJD)', fontsize=fontsize1) + plt.ylabel('Y Residuals (pix)', fontsize=fontsize1) paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.xaxis.set_major_formatter(fmtX) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - py.xticks(dateTics, DateTicsLabel) - py.xlim(np.min(dateTics), np.max(dateTics)) + plt.xticks(dateTics, DateTicsLabel) + plt.xlim(np.min(dateTics), np.max(dateTics)) row = row + 1 col = col - 1 ind = (row-1)*Ncols + col - paxes = py.subplot(Nrows, Ncols, ind) - py.errorbar(x,y, xerr=xerr, yerr=yerr, fmt='k.') - py.yticks(np.arange(np.min(y-yerr-0.1), np.max(y+yerr+0.1), 0.2)) - py.xticks(np.arange(np.min(x-xerr-0.1), np.max(x+xerr+0.1), 0.2), rotation = 270) - py.axis('equal') + paxes = plt.subplot(Nrows, Ncols, ind) + plt.errorbar(x,y, xerr=xerr, yerr=yerr, fmt='k.') + plt.yticks(np.arange(np.min(y-yerr-0.1), np.max(y+yerr+0.1), 0.2)) + plt.xticks(np.arange(np.min(x-xerr-0.1), np.max(x+xerr+0.1), 0.2), rotation = 270) + plt.axis('equal') paxes.tick_params(axis='both', which='major', labelsize=fontsize1) paxes.yaxis.set_major_formatter(FormatStrFormatter('%.2f')) paxes.xaxis.set_major_formatter(FormatStrFormatter('%.2f')) - py.xlabel('X (pix)', fontsize=fontsize1) - py.ylabel('Y (pix)', fontsize=fontsize1) - py.plot(fitLineX, fitLineY, 'b-') + plt.xlabel('X (pix)', fontsize=fontsize1) + plt.ylabel('Y (pix)', fontsize=fontsize1) + plt.plot(fitLineX, fitLineY, 'b-') col = col + 1 ind = (row-1)*Ncols + col bins = np.arange(-7.5, 7.5, 1) - paxes = py.subplot(Nrows, Ncols, ind) + paxes = plt.subplot(Nrows, Ncols, ind) id = np.where(diffY < 0)[0] sig[id] = -1.*sig[id] - (n, b, p) = py.hist(sigX, bins, histtype='stepfilled', color='b', label='X') - py.setp(p, 'facecolor', 'b') - (n, b, p) = py.hist(sigY, bins, histtype='step', color='r', label='Y') - py.axis([-7, 7, 0, 8], fontsize=10) - py.legend() - py.xlabel('Residuals (sigma)', fontsize=fontsize1) - py.ylabel('Number of Epochs', fontsize=fontsize1) + (n, b, p) = plt.hist(sigX, bins, histtype='stepfilled', color='b', label='X') + plt.setp(p, 'facecolor', 'b') + (n, b, p) = plt.hist(sigY, bins, histtype='step', color='r', label='Y') + plt.axis([-7, 7, 0, 8], fontsize=10) + plt.legend() + plt.xlabel('Residuals (sigma)', fontsize=fontsize1) + plt.ylabel('Number of Epochs', fontsize=fontsize1) ########## # @@ -901,9 +906,9 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', # ########## if (radial == True): - py.clf() + plt.clf() - dateTicLoc = py.MultipleLocator(3) + dateTicLoc = plt.MultipleLocator(3) maxErr = np.array([rerr, terr]).max() resTicRng = [-3*maxErr, 3*maxErr] @@ -912,83 +917,83 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', fmtX = FormatStrFormatter('%5i') fmtY = FormatStrFormatter('%6.2f') - paxes = py.subplot(3,2,1) - py.plot(time, fitLineR, 'b-') - py.plot(time, fitLineR + fitSigR, 'b--') - py.plot(time, fitLineR - fitSigR, 'b--') - py.errorbar(time, r, yerr=rerr, fmt='k.') - rng = py.axis() - py.axis(dateTicRng + [rng[2], rng[3]]) - py.xlabel('Date (yrs)') - py.ylabel('R (pix)') + paxes = plt.subplot(3,2,1) + plt.plot(time, fitLineR, 'b-') + plt.plot(time, fitLineR + fitSigR, 'b--') + plt.plot(time, fitLineR - fitSigR, 'b--') + plt.errorbar(time, r, yerr=rerr, fmt='k.') + rng = plt.axis() + plt.axis(dateTicRng + [rng[2], rng[3]]) + plt.xlabel('Date (yrs)') + plt.ylabel('R (pix)') paxes.xaxis.set_major_formatter(fmtX) paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.yaxis.set_major_formatter(fmtY) - paxes = py.subplot(3, 2, 2) - py.plot(time, fitLineT, 'b-') - py.plot(time, fitLineT + fitSigT, 'b--') - py.plot(time, fitLineT - fitSigT, 'b--') - py.errorbar(time, t, yerr=terr, fmt='k.') - rng = py.axis() - py.axis(dateTicRng + [rng[2], rng[3]]) - py.xlabel('Date (yrs)') - py.ylabel('T (pix)') + paxes = plt.subplot(3, 2, 2) + plt.plot(time, fitLineT, 'b-') + plt.plot(time, fitLineT + fitSigT, 'b--') + plt.plot(time, fitLineT - fitSigT, 'b--') + plt.errorbar(time, t, yerr=terr, fmt='k.') + rng = plt.axis() + plt.axis(dateTicRng + [rng[2], rng[3]]) + plt.xlabel('Date (yrs)') + plt.ylabel('T (pix)') paxes.xaxis.set_major_formatter(fmtX) paxes.get_xaxis().set_major_locator(dateTicLoc) paxes.yaxis.set_major_formatter(fmtY) - paxes = py.subplot(3, 2, 3) - py.plot(time, np.zeros(len(time)), 'b-') - py.plot(time, fitSigR, 'b--') - py.plot(time, -fitSigR, 'b--') - py.errorbar(time, r - fitLineR, yerr=rerr, fmt='k.') - py.axis(dateTicRng + resTicRng) - py.xlabel('Date (yrs)') - py.ylabel('R Residuals (pix)') + paxes = plt.subplot(3, 2, 3) + plt.plot(time, np.zeros(len(time)), 'b-') + plt.plot(time, fitSigR, 'b--') + plt.plot(time, -fitSigR, 'b--') + plt.errorbar(time, r - fitLineR, yerr=rerr, fmt='k.') + plt.axis(dateTicRng + resTicRng) + plt.xlabel('Date (yrs)') + plt.ylabel('R Residuals (pix)') paxes.get_xaxis().set_major_locator(dateTicLoc) - paxes = py.subplot(3, 2, 4) - py.plot(time, np.zeros(len(time)), 'b-') - py.plot(time, fitSigT, 'b--') - py.plot(time, -fitSigT, 'b--') - py.errorbar(time, t - fitLineT, yerr=terr, fmt='k.') - py.axis(dateTicRng + resTicRng) - py.xlabel('Date (yrs)') - py.ylabel('T Residuals (pix)') + paxes = plt.subplot(3, 2, 4) + plt.plot(time, np.zeros(len(time)), 'b-') + plt.plot(time, fitSigT, 'b--') + plt.plot(time, -fitSigT, 'b--') + plt.errorbar(time, t - fitLineT, yerr=terr, fmt='k.') + plt.axis(dateTicRng + resTicRng) + plt.xlabel('Date (yrs)') + plt.ylabel('T Residuals (pix)') paxes.get_xaxis().set_major_locator(dateTicLoc) bins = np.arange(-7, 7, 1) - py.subplot(3, 2, 5) - (n, b, p) = py.hist(sigR, bins) - py.setp(p, 'facecolor', 'k') - py.axis([-5, 5, 0, 20]) - py.xlabel('T Residuals (sigma)') - py.ylabel('Number of Epochs') - - py.subplot(3, 2, 6) - (n, b, p) = py.hist(sigT, bins) - py.axis([-5, 5, 0, 20]) - py.setp(p, 'facecolor', 'k') - py.xlabel('Y Residuals (sigma)') - py.ylabel('Number of Epochs') - - py.subplots_adjust(wspace=0.4, hspace=0.4, right=0.95, top=0.95) - py.savefig(rootDir+'plots/plotStarRadial_' + starName + '.png') - py.show() + plt.subplot(3, 2, 5) + (n, b, p) = plt.hist(sigR, bins) + plt.setp(p, 'facecolor', 'k') + plt.axis([-5, 5, 0, 20]) + plt.xlabel('T Residuals (sigma)') + plt.ylabel('Number of Epochs') + + plt.subplot(3, 2, 6) + (n, b, p) = plt.hist(sigT, bins) + plt.axis([-5, 5, 0, 20]) + plt.setp(p, 'facecolor', 'k') + plt.xlabel('Y Residuals (sigma)') + plt.ylabel('Number of Epochs') + + plt.subplots_adjust(wspace=0.4, hspace=0.4, right=0.95, top=0.95) + plt.savefig(rootDir+'plots/plotStarRadial_' + starName + '.png') + plt.show() title = rootDir.split('/')[-2] - py.suptitle(title, x=0.5, y=0.97) + plt.suptitle(title, x=0.5, y=0.97) if Nstars == 1: - py.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) - py.savefig(rootDir+'plots/plotStar_' + starName + '.png') + plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) + plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') else: - py.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) - py.savefig(rootDir+'plots/plotStar_all.png') - py.show() + plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) + plt.savefig(rootDir+'plots/plotStar_all.png') + plt.show() - py.show() + plt.show() print('Fubar') @@ -1051,7 +1056,7 @@ def plot_pm_error(tab): plt.legend() plt.xlabel('Mag') plt.ylabel('PM Error (mas/yr)') - + plt.show() return def plot_mag_error(tab): @@ -3607,8 +3612,8 @@ def plot_sky(stars_tab, foo = cnorm(yearsInt[ee]) colorList.append( cmap(cnorm(yearsInt[ee])) ) - py.close(2) - fig = py.figure(2, figsize=(13,10)) + plt.close(2) + fig = plt.figure(2, figsize=(13,10)) previousYear = 0.0 @@ -3646,13 +3651,13 @@ def plot_sky(stars_tab, label = '_nolegend_' if plot_errors: - (line, foo1, foo2) = py.errorbar(x, y, xerr=xe, yerr=ye, + (line, foo1, foo2) = plt.errorbar(x, y, xerr=xe, yerr=ye, color=colorList[ee], fmt='^', markeredgecolor=colorList[ee], markerfacecolor=colorList[ee], label=label, picker=4) else: - (line, foo1, foo2) = py.errorbar(x, y, xerr=None, yerr=None, + (line, foo1, foo2) = plt.errorbar(x, y, xerr=None, yerr=None, color=colorList[ee], fmt='^', markeredgecolor=colorList[ee], markerfacecolor=colorList[ee], @@ -3670,19 +3675,19 @@ def plot_sky(stars_tab, point_labels[line] = points_info foo = PrintSelected(point_labels, fig, stars_tab, mag_range, manual_print=manual_print) - py.connect('pick_event', foo) + plt.connect('pick_event', foo) xlo = xcenter + (range) xhi = xcenter - (range) ylo = ycenter - (range) yhi = ycenter + (range) - py.axis('equal') - py.axis([xlo, xhi, ylo, yhi]) - py.xlabel('R.A. Offset from Sgr A* (arcsec)') - py.ylabel('Dec. Offset from Sgr A* (arcsec)') + plt.axis('equal') + plt.axis([xlo, xhi, ylo, yhi]) + plt.xlabel('R.A. Offset from Sgr A* (arcsec)') + plt.ylabel('Dec. Offset from Sgr A* (arcsec)') - py.legend(handles=epochs_legend, numpoints=1, loc='lower left', fontsize=12) + plt.legend(handles=epochs_legend, numpoints=1, loc='lower left', fontsize=12) if show_names: xpos = stars_tab['x0'] @@ -3690,16 +3695,16 @@ def plot_sky(stars_tab, goodind = np.where((xpos <= xlo) & (xpos >= xhi) & (ypos >= ylo) & (ypos <= yhi))[0] for ind in goodind: - py.text(xpos[ind], ypos[ind], stars_tab['name'][ind], size=10) + plt.text(xpos[ind], ypos[ind], stars_tab['name'][ind], size=10) if saveplot: - py.show(block=0) + plt.show(block=0) if (center_star != None): - py.savefig('plot_sky_' + center_star + '.png') + plt.savefig('plot_sky_' + center_star + '.png') else: - py.savefig('plot_sky.png') + plt.savefig('plot_sky.png') else: - py.show() + plt.show() return From f0e478cf0b0396f850e694771e3af6a969c2c1dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 7 Nov 2025 12:51:14 -0800 Subject: [PATCH 09/94] Minor fix: Add assertion message; Add times into ref_table meta data; Update trans_positions --- flystar/align.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 7b00ba0..152ceac 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -241,15 +241,15 @@ def = None. If not None, then this should contain an array or list of transform def fix_iterable_conditions(self): if not np.iterable(self.dr_tol): self.dr_tol = np.repeat(self.dr_tol, self.iters) - assert len(self.dr_tol) == self.iters + assert len(self.dr_tol) == self.iters, f'len(dr_tol)={len(self.dr_tol)} != iters={self.iters}' if not np.iterable(self.dm_tol): self.dm_tol = np.repeat(self.dm_tol, self.iters) - assert len(self.dm_tol) == self.iters + assert len(self.dm_tol) == self.iters, f'len(dm_tol)={len(self.dm_tol)} != iters={self.iters}' if not np.iterable(self.outlier_tol): self.outlier_tol = np.repeat(self.outlier_tol, self.iters) - assert len(self.outlier_tol) == self.iters + assert len(self.outlier_tol) == self.iters, f'len(outlier_tol)={len(self.outlier_tol)} != iters={self.iters}' if self.mag_lim is None: self.mag_lim = np.repeat([[None, None]], len(self.star_lists), axis=0) @@ -367,6 +367,10 @@ def fit(self): if self.iter_callback != None: self.iter_callback(self.ref_table, nn) + # Add times into ref_table meta data + complete_times = np.array([np.unique(col[~np.isnan(col)])[0] for col in self.ref_table['t'].T]) + self.ref_table.meta['LIST_TIMES'] = complete_times + if self.save_path: with open(self.save_path, 'wb') as file: pickle.dump(self, file) @@ -504,7 +508,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar dy=(star_t['y'] - star_r['y']) * 1e3, dm=(star_t['m'] - star_r['m']), xo=star_s['x'], yo=star_s['y'], mo=star_s['m'])) - + idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], ref_list['x'], ref_list['y'], ref_list['m'], dr_tol=dr_tol, dm_tol=dm_tol, verbose=self.verbose) @@ -515,7 +519,8 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ## Make plot, if desired plots.trans_positions(ref_list, ref_list[idx_ref], star_list_T, star_list_T[idx_lis], - fileName='{0}'.format(star_list_T['t'][0])) + save_path=f"{self.save_path}/Transformed_Positions_{star_list_T['t'][0]}.png" if self.save_path else None, + show_plot=False) ### Update the observed (but transformed) values in the reference table. self.update_ref_table_from_list(star_list, star_list_T, ii, idx_ref, idx_lis, idx2) @@ -1424,7 +1429,7 @@ def __init__(self, ref_list, list_of_starlists, iters=2, If different from None, it indicates the minimum and maximum magnitude on the catalogs for finding the transformations. Note, if you want specify the mag_lim separately for each list and each iteration, you need to pass in a 2D array that - has shape (N_lists, 2). + has shape (N_lists, N_iters). ref_mag_lim : array If different from None, it indicates the minimum and maximum magnitude @@ -2485,7 +2490,7 @@ def transform_from_object(starlist, transform): keys = list(starlist.keys()) # Check to see if velocities or motion_model are present in starlist. - vel = ('vx' in keys)and ~("motion_model_input" in keys) + vel = ('vx' in keys) and ("motion_model_input" not in keys) mot = ("motion_model_input" in keys) # If the only motion models used are Fixed and Linear, we can still transform velocities. if mot: From 7b010034e7257ed3c6e64599c687e376ad7c92a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 7 Nov 2025 12:52:02 -0800 Subject: [PATCH 10/94] Minor fix: Update startables accordingly with motion model --- flystar/startables.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 422f9a7..8f7a397 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -845,13 +845,13 @@ def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scip fixed_params = [self[par][ss] for par in mod.fixed_param_names] # Fit for the best parameters - params, param_errs = mod.fit_motion_model(t, x, y, xe, ye, t0, bootstrap=bootstrap, + params, param_errs, chi2_x, chi2_y = mod.fit_motion_model(t, x, y, xe, ye, t0, bootstrap=bootstrap, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma) - chi2_x,chi2_y = mod.get_chi2(params,fixed_params, t,x,y,xe,ye) + # chi2_x,chi2_y = mod.get_chi2(params,fixed_params, t,x,y,xe,ye) self['chi2_x'][ss]=chi2_x self['chi2_y'][ss]=chi2_y self['n_params'][ss] = mod.n_params - + # Save parameters and errors to table. for pp in range(len(mod.fitter_param_names)): par = mod.fitter_param_names[pp] From 289150ddf5b054e539e8e56df0b2de16d1092730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 7 Nov 2025 13:48:53 -0800 Subject: [PATCH 11/94] Revert class meta definitions --- flystar/motion_model.py | 58 +++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 3c5069c..27d84af 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -129,14 +129,15 @@ class Fixed(MotionModel): A non-moving motion model for a star on the sky. """ + n_pts_req = 1 + n_params = 1 + fitter_param_names = ['x0','y0'] + fixed_param_names = [] + def __init__(self, **kwargs): # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() - self.n_pts_req = 1 - self.n_params = 1 - self.fitter_param_names = ['x0','y0'] - self.fixed_param_names = [] return def get_pos_at_time(self, fit_params, fixed_params, t): @@ -200,17 +201,19 @@ class Linear(MotionModel): """ A 2D linear motion model for a star on the sky. """ + + n_pts_req = 2 + n_params = 2 + fitter_param_names = ['x0', 'vx', 'y0', 'vy'] + fixed_param_names = ['t0'] + def __init__(self, **kwargs): # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() - self.n_pts_req = 2 - self.n_params = 2 - self.fitter_param_names = ['x0', 'vx', 'y0', 'vy'] - self.fixed_param_names = ['t0'] return - + def get_pos_at_time(self, fit_params, fixed_params, t): fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) @@ -316,15 +319,16 @@ class Acceleration(MotionModel): """ A 2D accelerating motion model for a star on the sky. """ + n_pts_req = 4 # TODO: consider special case for 3 pts + n_params = 3 + fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] + fixed_param_names = ['t0'] + def __init__(self, x0=0, vx0=0, ax=0, y0=0, vy0=0, ay=0, t0=None, x0_err=0, vx0_err=0, ax_err=0, y0_err=0, vy0_err=0, ay_err=0, **kwargs): # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() - self.n_pts_req = 4 # TODO: consider special case for 3 pts - self.n_params = 3 - self.fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] - self.fixed_param_names = ['t0'] return def get_pos_at_time(self, fit_params, fixed_params, t): @@ -396,17 +400,19 @@ class Parallax(MotionModel): Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ + + n_pts_req = 4 + n_params = 3 + fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] + fixed_param_names = ['t0'] + fixed_meta_data = ['RA','Dec','PA','obs'] + def __init__(self, RA, Dec, PA=0.0, obs='earth', **kwargs): self.RA = RA self.Dec = Dec self.PA = PA self.obs = obs self.plx_vector_cached = None - self.n_pts_req = 4 - self.n_params = 3 - self.fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] - self.fixed_param_names = ['t0'] - self.fixed_meta_data = ['RA','Dec','PA','obs'] return def get_parallax_vector(self, t_mjd): @@ -549,11 +555,19 @@ def get_one_motion_model_param_names(motion_model_name, with_errors=True, with_f Optionally, include fixed and error parameters (included by default). """ def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_fixed=True): + motion_model_map = { + 'Fixed': Fixed, + 'Linear': Linear, + 'Acceleration': Acceleration, + 'Parallax': Parallax + } + list_of_parameters = [] - all_motion_models = [eval(mm) for mm in np.unique(motion_model_list).tolist()] - for aa in range(len(all_motion_models)): - param_names = getattr(all_motion_models[aa], 'fitter_param_names') - param_fixed_names = getattr(all_motion_models[aa], 'fixed_param_names') + # all_motion_models = [eval(mm) for mm in np.unique(motion_model_list).tolist()] + for mm in range(len(motion_model_list)): + motion_model = motion_model_map[motion_model_list[mm]] + param_names = motion_model.fitter_param_names + param_fixed_names = motion_model.fixed_param_names param_err_names = [par+'_err' for par in param_names] list_of_parameters += param_names From 443c4bdff1ddbe09f980acc7a8d563d69998a178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 11 Nov 2025 20:03:44 -0800 Subject: [PATCH 12/94] Add get_sigma --- flystar/motion_model.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index fd9f0cd..e38d6df 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -50,7 +50,16 @@ def run_fit( ): # Run a single fit (used both for overall fit + bootstrap iterations) pass - + + def get_sigma(self, xe, ye, weighting='var'): + if weighting=='std': + return xe**0.5, ye**0.5 + elif weighting=='var': + return xe, ye + else: + warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) + return xe, ye + def get_weights(self, xe, ye, weighting='var'): if weighting=='std': return 1./xe, 1./ye @@ -74,7 +83,7 @@ def fit_motion_model( to determine new parameters for this motion model (MM). Best-fit parameters will be returned along with uncertainties. """ - params, param_errs, chi2x, chi2y = self.run_fit( + params, param_errs, chi2_x, chi2_y = self.run_fit( t, x, y, xe, ye, t0=t0, weighting=weighting, use_scipy=use_scipy, @@ -82,6 +91,7 @@ def fit_motion_model( fill_value=fill_value ) + # Bootstrap errors if bootstrap > 0 and len(x) > (self.n_pts_req): edx = np.arange(len(x), dtype=int) bb_params = [] @@ -101,12 +111,12 @@ def fit_motion_model( # Save the errors from the bootstrap param_errs = np.std(bb_params, axis=0) - + # Account for odd case inf_errs = [np.all(arr==np.inf) for arr in np.transpose(np.array(bb_params_errs))] param_errs[inf_errs] = 0.0 - return params, param_errs, chi2x, chi2y + return params, param_errs, chi2_x, chi2_y def get_chi2(self, fit_params, fixed_params, t, x, y, xe, ye, reduced=False): """ @@ -217,7 +227,7 @@ def __init__(self, **kwargs): def get_pos_at_time(self, fit_params, fixed_params, t): fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) - dt = t-fixed_params_dict['t0'] + dt = t - fixed_params_dict['t0'] return fit_params_dict['x0'] + fit_params_dict['vx']*dt, fit_params_dict['y0'] + fit_params_dict['vy']*dt def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], t0=[], @@ -234,7 +244,7 @@ def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], t0=[], y = y0 + dt*vy x_err = np.hypot(x0_err, vx_err*dt) y_err = np.hypot(y0_err, vy_err*dt) - return x,y,x_err,y_err + return x, y, x_err, y_err def run_fit( self, t, x, y, xe, ye, t0, @@ -245,15 +255,15 @@ def run_fit( fill_value=np.inf ): dt = t - t0 - x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) + sigma_x, sigma_y = self.get_sigma(xe, ye, weighting=weighting) if params_guess is None: params_guess = [x.mean(), 0., y.mean(), 0.] if use_scipy: def linear(t, c0, c1): return c0 + c1*t - x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/np.sqrt(x_wt), absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/np.sqrt(y_wt), absolute_sigma=absolute_sigma) + x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=sigma_x, absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=sigma_y, absolute_sigma=absolute_sigma) x0, vx = x_opt y0, vy = y_opt x0e, vxe = np.sqrt(x_cov.diagonal()) @@ -269,13 +279,13 @@ def linear(t, c0, c1): dt = np.array(dt) X_mat_t = np.vander(dt, 2) # x calculation - W_mat_x = np.diag(x_wt) + W_mat_x = np.diag(1 / sigma_x**2) XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution # y calculation - W_mat_y = np.diag(y_wt) + W_mat_y = np.diag(1 / sigma_y**2) XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution From a1ef471d1339816be94876531af6c4a88d1f04c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 11 Nov 2025 20:15:31 -0800 Subject: [PATCH 13/94] Revert back to get_weight --- flystar/motion_model.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index e38d6df..90d1442 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -50,16 +50,7 @@ def run_fit( ): # Run a single fit (used both for overall fit + bootstrap iterations) pass - - def get_sigma(self, xe, ye, weighting='var'): - if weighting=='std': - return xe**0.5, ye**0.5 - elif weighting=='var': - return xe, ye - else: - warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) - return xe, ye - + def get_weights(self, xe, ye, weighting='var'): if weighting=='std': return 1./xe, 1./ye @@ -255,15 +246,15 @@ def run_fit( fill_value=np.inf ): dt = t - t0 - sigma_x, sigma_y = self.get_sigma(xe, ye, weighting=weighting) + x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) if params_guess is None: params_guess = [x.mean(), 0., y.mean(), 0.] if use_scipy: def linear(t, c0, c1): return c0 + c1*t - x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=sigma_x, absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=sigma_y, absolute_sigma=absolute_sigma) + x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) x0, vx = x_opt y0, vy = y_opt x0e, vxe = np.sqrt(x_cov.diagonal()) @@ -279,13 +270,13 @@ def linear(t, c0, c1): dt = np.array(dt) X_mat_t = np.vander(dt, 2) # x calculation - W_mat_x = np.diag(1 / sigma_x**2) + W_mat_x = np.diag(x_wt) XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution # y calculation - W_mat_y = np.diag(1 / sigma_y**2) + W_mat_y = np.diag(y_wt) XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution From 1a7481d45e3ad44035c4bf2a8ca7dafaac5c9ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 12 Nov 2025 23:34:02 -0800 Subject: [PATCH 14/94] Major Update: Update data fitting logic: Compare observed data points with model parameters. If n_obs < n_params, return fill value for the parameters and infinity for the uncertainties; Otherwise, calculate parameters normally. If n_obs = n_params and absolute_sigma=False, return infinity for uncertainties (Same behavior as scipy curve fit). --- flystar/motion_model.py | 506 +++++++++++++++++++++++++++------------- 1 file changed, 343 insertions(+), 163 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 90d1442..939cd0b 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -7,8 +7,6 @@ import warnings class MotionModel(ABC): - # Number of data points required to fit model - n_pts_req = 0 # Degrees of freedom for model n_params = 0 @@ -33,7 +31,7 @@ def __init__(self, *args, **kwargs): setattr(self, param, np.array([param_var]))''' return - def get_pos_at_time(self, params, t): + def get_pos_at_time(self, fit_params, fixed_params, t): #return x, y pass @@ -46,10 +44,11 @@ def run_fit( weighting='var', use_scipy=True, absolute_sigma=True, - fill_value=np.inf + fill_value=np.nan, + verbose=True ): # Run a single fit (used both for overall fit + bootstrap iterations) - pass + return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf), np.nan, np.nan def get_weights(self, xe, ye, weighting='var'): if weighting=='std': @@ -66,36 +65,74 @@ def fit_motion_model( weighting='var', use_scipy=True, absolute_sigma=True, - fill_value=np.inf, - rng=None + fill_value=np.nan, + verbose=True, + seed=None ): - """ - Fit the input positions on the sky and errors - to determine new parameters for this motion model (MM). - Best-fit parameters will be returned along with uncertainties. + """Fit stellar motion parameters + + Parameters + ---------- + t : array-like + Times of measurements + x : array-like + x-coordinates + y : array-like + y-coordinates + xe : array-like + Uncertainty of x + ye : array-like + Uncertainty of y + t0 : array-like + Reference time for fitting, i.e. dt = t - t0 will be used in fitting + bootstrap : int, optional + Bootstrapping uncertainties, by default 0 + weighting : str, optional + Use standard error weighting ('std': w=1/xe, 1/ye) or variance weighting ('var': w=1/xe**2, 1/ye**2), by default 'var' + use_scipy : bool, optional + Use scipy for optmization. Otherwise, use linear algebraic solution (Linear model only), which is faster for < 300 epochs, by default True + absolute_sigma : bool, optional + Absolute sigma. See scipy.optimize.curve_fit for details, by default True + fill_value : float, optional + Fill value for parameters when not enough data points to fit model, by default np.nan + verbose : bool, optional + Print warning messages, by default True + seed : int, optional + Seed for the random number generator, by default None + Returns + ------- + params, params_err, chi2_x, chi2_y + Parameters, uncertainties, and chi squares. The corresponding parameter names are in self.fitter_param_names. """ params, param_errs, chi2_x, chi2_y = self.run_fit( t, x, y, xe, ye, t0=t0, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, - fill_value=fill_value + fill_value=fill_value, + verbose=verbose ) - + if seed is not None: + rng = np.random.default_rng(seed) + else: + rng = np.random.default_rng() + # Bootstrap errors - if bootstrap > 0 and len(x) > (self.n_pts_req): - edx = np.arange(len(x), dtype=int) + n_obs = len(t) + if bootstrap > 0 and n_obs > (self.n_params): + edx = np.arange(n_obs, dtype=int) bb_params = [] bb_params_errs = [] for bb in range(bootstrap): - bdx = np.random.choice(edx, len(x), replace=False) + bdx = rng.choice(edx, n_obs, replace=False) params_bdx, param_errs_bdx, chi2x_bdx, chi2y_bdx = self.run_fit( t[bdx], x[bdx], y[bdx], xe[bdx], ye[bdx], t0=t0, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, params_guess=params, - fill_value=fill_value + fill_value=fill_value, + verbose=verbose ) bb_params.append(params_bdx) bb_params_errs.append(param_errs_bdx) @@ -125,12 +162,51 @@ def get_chi2(self, fit_params, fixed_params, t, x, y, xe, ye, reduced=False): chi2x, chi2y = chi2x / dof, chi2y / dof return chi2x, chi2y +class Empty(MotionModel): + n_params = 0 + fitter_param_names = [] + fixed_param_names = [] + + def __init__(self, **kwargs): + """Empty motion model, returns nan for values and inf for uncertainties. + """ + super().__init__() + return + + def get_pos_at_time(self, fit_params, fixed_params, t): + if hasattr(t, "__len__"): + return np.full(len(t), np.nan), np.full(len(t), np.nan) + else: + return np.nan, np.nan + + def get_batch_pos_at_time(self,t, + x0=[],y0=[],t0=[], + x0_err=[], y0_err=[]): + if hasattr(t, "__len__"): + return np.full((len(x0), len(t)), np.nan), np.full((len(y0), len(t)), np.nan), np.full((len(x0), len(t)), np.nan), np.full((len(y0), len(t)), np.nan) + else: + return np.nan, np.nan, np.nan, np.nan + + def run_fit( + self, t, x, y, xe, ye, t0, + weighting='var', + use_scipy=True, + absolute_sigma=True, + fill_value=np.nan, + verbose=True + ): + if verbose: + warnings.warn(f"Empty data cannot be fit. Setting parameters to {fill_value} and uncertainties to np.inf.", OptimizeWarning, stacklevel=2) + params = np.full(self.n_params, fill_value) + param_errors = np.full(self.n_params, np.inf) + return params, param_errors, np.nan, np.nan + + class Fixed(MotionModel): """ A non-moving motion model for a star on the sky. """ - n_pts_req = 1 n_params = 1 fitter_param_names = ['x0','y0'] fixed_param_names = [] @@ -154,7 +230,7 @@ def get_batch_pos_at_time(self,t, if hasattr(t, "__len__"): return np.repeat(x0[:,np.newaxis],len(t),axis=1), np.repeat(y0[:,np.newaxis],len(t),axis=1), np.repeat(x0_err[:,np.newaxis],len(t),axis=1), np.repeat(y0_err[:,np.newaxis],len(t),axis=1) else: - return x0,y0,x0_err,y0_err + return x0, y0, x0_err, y0_err def run_fit( self, t, x, y, xe, ye, t0, @@ -162,26 +238,40 @@ def run_fit( use_scipy=True, absolute_sigma=True, params_guess=None, - fill_value=np.inf + fill_value=np.nan, + verbose=True ): - if not use_scipy: - Warning("Fixed model has no non-scipy fitter option. Running with scipy.") - # Handle single data point case - if len(x)==1: - x0, y0, x0e, y0e = x[0], y[0], xe[0], ye[0] - - else: - x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) - x0 = np.average(x, weights=x_wt) - x0e = np.sqrt(np.average((x - x0)**2, weights=x_wt)) - y0 = np.average(y, weights=y_wt) - y0e = np.sqrt(np.average((y - y0)**2, weights=y_wt)) + if verbose and (not use_scipy): + warnings.warn("Fixed model has no non-scipy fitter option. Running with scipy.") + + n_obs = len(t) + degree_of_freedom = n_obs - self.n_params + # Not enough data points to fit model + if degree_of_freedom < 0: + if verbose: + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) + params = np.full(self.n_params, fill_value) + param_errors = np.full(self.n_params, np.inf) + return params, param_errors, np.nan, np.nan + + # degree_of_freedom >= 0 + # Calculate weighted average position + x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) + x_wt_norm = x_wt / np.sum(x_wt) + y_wt_norm = y_wt / np.sum(y_wt) + x0 = np.average(x, weights=x_wt) + x0e = (np.sum(x_wt_norm**2 * xe**2))**0.5 / n_obs # Error propagation + y0 = np.average(y, weights=y_wt) + y0e = (np.sum(y_wt_norm**2 * ye**2))**0.5 / n_obs # Error propagation params = np.array([x0, y0]) param_errors = np.array([x0e, y0e]) chi2x, chi2y = self.get_chi2(params, [], t, x, y, xe, ye) - degree_of_freedom = len(x) - 1 + if not absolute_sigma: if degree_of_freedom > 0: reduced_chi2x = chi2x / degree_of_freedom @@ -190,11 +280,13 @@ def run_fit( param_errors[0] *= reduced_chi2x**0.5 param_errors[1] *= reduced_chi2y**0.5 else: + # degree_of_freedom == 0, as < 0 case already handled above warnings.warn( - f'Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value {fill_value}.', + f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value np.inf.', OptimizeWarning, stacklevel=2 ) - param_errors = np.full_like(param_errors, fill_value) + # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit + param_errors = np.full_like(param_errors, np.inf) return params, param_errors, chi2x, chi2y @@ -202,8 +294,6 @@ class Linear(MotionModel): """ A 2D linear motion model for a star on the sky. """ - - n_pts_req = 2 n_params = 2 fitter_param_names = ['x0', 'vx', 'y0', 'vy'] fixed_param_names = ['t0'] @@ -224,13 +314,13 @@ def get_pos_at_time(self, fit_params, fixed_params, t): def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], t0=[], x0_err=[],vx_err=[], y0_err=[],vy_err=[], **kwargs): if hasattr(t, "__len__"): - dt = t-t0[:,np.newaxis] + dt = t - t0[:,np.newaxis] x = x0[:,np.newaxis] + dt*vx[:,np.newaxis] y = y0[:,np.newaxis] + dt*vy[:,np.newaxis] x_err = np.hypot(x0_err[:,np.newaxis], vx_err[:,np.newaxis]*dt) y_err = np.hypot(y0_err[:,np.newaxis], vy_err[:,np.newaxis]*dt) else: - dt = t-t0 + dt = t - t0 x = x0 + dt*vx y = y0 + dt*vy x_err = np.hypot(x0_err, vx_err*dt) @@ -243,8 +333,23 @@ def run_fit( use_scipy=True, absolute_sigma=True, params_guess=None, - fill_value=np.inf + fill_value=np.nan, + verbose=True ): + n_obs = len(t) + degree_of_freedom = n_obs - self.n_params + # Not enough data points to fit model + if degree_of_freedom < 0: + if verbose: + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) + params = np.full(self.n_params, fill_value) + param_errors = np.full(self.n_params, np.inf) + return params, param_errors, np.nan, np.nan + + # degree_of_freedom >= 0 dt = t - t0 x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) if params_guess is None: @@ -290,8 +395,7 @@ def linear(t, c0, c1): # Does not use get_chi2 to accelerate calculation residual_x = x - X_mat_t @ popt_x residual_y = y - X_mat_t @ popt_y - - + chi2_x = residual_x.T @ W_mat_x @ residual_x chi2_y = residual_y.T @ W_mat_y @ residual_y @@ -299,20 +403,21 @@ def linear(t, c0, c1): param_errors = np.array([x0e, vxe, y0e, vye]) if not absolute_sigma: - degree_of_freedom = len(x) - 2 if degree_of_freedom > 0: - reduced_chi2_x = chi2_x/(len(x) - 2) - reduced_chi2_y = chi2_y/(len(x) - 2) + reduced_chi2_x = chi2_x / degree_of_freedom + reduced_chi2_y = chi2_y / degree_of_freedom param_errors[0:2] *= reduced_chi2_x**0.5 param_errors[2:4] *= reduced_chi2_y**0.5 else: + # degree_of_freedom == 0, as < 0 case already handled above warnings.warn( - f'Degree of freedom <= 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value {fill_value}.', + f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value np.inf.', OptimizeWarning, stacklevel=2 ) - param_errors = np.full_like(param_errors, fill_value) + # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit + param_errors = np.full_like(param_errors, np.inf) return params, param_errors, chi2_x, chi2_y @@ -320,7 +425,6 @@ class Acceleration(MotionModel): """ A 2D accelerating motion model for a star on the sky. """ - n_pts_req = 4 # TODO: consider special case for 3 pts n_params = 3 fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] fixed_param_names = ['t0'] @@ -335,7 +439,7 @@ def __init__(self, x0=0, vx0=0, ax=0, y0=0, vy0=0, ay=0, t0=None, def get_pos_at_time(self, fit_params, fixed_params, t): fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) - dt = t-fixed_params_dict['t0'] + dt = t - fixed_params_dict['t0'] x = fit_params_dict['x0'] + fit_params_dict['vx0']*dt + 0.5*fit_params_dict['ax']*dt**2 y = fit_params_dict['y0'] + fit_params_dict['vy0']*dt + 0.5*fit_params_dict['ay']*dt**2 return x, y @@ -344,18 +448,18 @@ def get_batch_pos_at_time(self,t, x0=[],vx0=[],ax=[], y0=[],vy0=[],ay=[], t0=[], x0_err=[],vx0_err=[],ax_err=[], y0_err=[],vy0_err=[],ay_err=[], **kwargs): if hasattr(t, "__len__"): - dt = t-t0[:,np.newaxis] - x = x0[:,np.newaxis] + dt*vx0[:,np.newaxis] + 0.5*dt**2*ax[:,np.newaxis] - y = y0[:,np.newaxis] + dt*vy0[:,np.newaxis] + 0.5*dt**2*ay[:,np.newaxis] - x_err = np.sqrt(x0_err[:,np.newaxis]**2 + (vx0_err[:,np.newaxis]*dt)**2 + (0.5*ax_err[:,np.newaxis]*dt**2)**2) - y_err = np.sqrt(y0_err[:,np.newaxis]**2 + (vy0_err[:,np.newaxis]*dt)**2 + (0.5*ay_err[:,np.newaxis]*dt**2)**2) + dt = t - t0[:,np.newaxis] + x = x0[:, np.newaxis] + dt * vx0[:, np.newaxis] + 0.5 * ax[:, np.newaxis] * dt**2 + y = y0[:, np.newaxis] + dt * vy0[:, np.newaxis] + 0.5 * ay[:, np.newaxis] * dt**2 + x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx0_err[:, np.newaxis]*dt)**2 + (0.5*ax_err[:, np.newaxis]*dt**2)**2) + y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy0_err[:, np.newaxis]*dt)**2 + (0.5*ay_err[:, np.newaxis]*dt**2)**2) else: - dt = t-t0 - x = x0 + dt*vx0 + 0.5*dt**2*ax - y = y0 + dt*vy0 + 0.5*dt**2*ay - x_err = np.sqrt(x0_err**2 + (vx0_err*dt)**2 + (0.5*ax_err*dt**2)**2) - y_err = np.sqrt(y0_err**2 + (vy0_err*dt)**2 + (0.5*ay_err*dt**2)**2) - return x,y,x_err,y_err + dt = t - t0 + x = x0 + dt * vx0 + 0.5 * ax * dt**2 + y = y0 + dt * vy0 + 0.5 * ay * dt**2 + x_err = np.sqrt(x0_err**2 + (vx0_err * dt)**2 + (0.5 * ax_err * dt**2)**2) + y_err = np.sqrt(y0_err**2 + (vy0_err * dt)**2 + (0.5 * ay_err * dt**2)**2) + return x, y, x_err, y_err def run_fit( self, t, x, y, xe, ye, t0, @@ -363,34 +467,50 @@ def run_fit( use_scipy=True, absolute_sigma=True, params_guess=None, - fill_value=np.inf + fill_value=np.nan, + verbose=True ): if not use_scipy: - Warning("Acceleration model has no non-scipy fitter option. Running with scipy.") + if verbose: + warnings.warn("Acceleration model has no non-scipy fitter option. Running with scipy.") + + n_obs = len(t) + degree_of_freedom = n_obs - self.n_params + # Not enough data points to fit model + if degree_of_freedom < 0: + if verbose: + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) + params = np.full(self.n_params, fill_value) + param_errors = np.full(self.n_params, np.inf) + return params, param_errors, np.nan, np.nan + + # degree_of_freedom >= 0 dt = t - t0 x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) if params_guess is None: - params_guess = [x.mean(), 0., 0., y.mean(), 0., 0.] + # Initial guess for velocity: + idx_first, idx_last = np.argmin(t), np.argmax(t) + t_span = t[idx_last] - t[idx_first] + params_guess = [x.mean(), (x[idx_last] - x[idx_first]) / t_span, 0., y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.] def accel(t, c0, c1, c2): return c0 + c1*t + 0.5*c2*t**2 - x_opt, x_cov = curve_fit(accel, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=True) - y_opt, y_cov = curve_fit(accel, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=True) - x0 = x_opt[0] - y0 = y_opt[0] - vx0 = x_opt[1] - vy0 = y_opt[1] - ax = x_opt[2] - ay = y_opt[2] - + x_opt, x_cov = curve_fit(accel, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(accel, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) + x0, vx0, ax = x_opt + y0, vy0, ay = y_opt x0e, vx0e, axe = np.sqrt(x_cov.diagonal()) y0e, vy0e, aye = np.sqrt(y_cov.diagonal()) - params = [x0, vx0, ax, y0, vy0, ay] - param_errors = [x0e, vx0e, axe, y0e, vy0e, aye] + params = np.array([x0, vx0, ax, y0, vy0, ay]) + param_errors = np.array([x0e, vx0e, axe, y0e, vy0e, aye]) + chi2_x, chi2_y = self.get_chi2(params, [t0], t, x, y, xe, ye) - return params, param_errors + return params, param_errors, chi2_x, chi2_y class Parallax(MotionModel): """ @@ -401,8 +521,6 @@ class Parallax(MotionModel): Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ - - n_pts_req = 4 n_params = 3 fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] fixed_param_names = ['t0'] @@ -473,7 +591,7 @@ def get_batch_pos_at_time(self, t, y_err = np.sqrt(y0_err**2 + (vy_err*dt)**2 + (pi_err*pvec[1])**2) except: x_err,y_err = [],[] - return x,y,x_err,y_err + return x, y, x_err, y_err def run_fit( self, t, x, y, xe, ye, t0, @@ -481,10 +599,27 @@ def run_fit( use_scipy=True, absolute_sigma=True, params_guess=None, - fill_value=np.inf + fill_value=np.nan, + verbose=True ): if not use_scipy: - Warning("Parallax model has no non-scipy fitter option. Running with scipy.") + if verbose: + warnings.warn("Parallax model has no non-scipy fitter option. Running with scipy.", UserWarning) + + n_obs = len(t) + degree_of_freedom = n_obs - self.n_params + # Not enough data points to fit model + if degree_of_freedom < 0: + if verbose: + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) + params = np.full(self.n_params, fill_value) + param_errors = np.full(self.n_params, np.inf) + return params, param_errors + + # degree_of_freedom >= 0 t_mjd = Time(t, format='decimalyear', scale='utc').mjd pvec = self.get_parallax_vector(t_mjd) x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) @@ -494,107 +629,152 @@ def fit_func(use_t, x0,vx, y0,vy, pi): return np.hstack([x_res, y_res]) # Initial guesses, x0,y0 as x,y averages; # vx,vy as average velocity if first and last points are perfectly measured; - # pi for 10 pc disance + # pi for 10 pc distance if params_guess is None: idx_first, idx_last = np.argmin(t), np.argmax(t) - params_guess = [x.mean(),(x[idx_last]-x[idx_first])/(t[idx_last]-t[idx_first]), - y.mean(),(y[idx_last]-y[idx_first])/(t[idx_last]-t[idx_first]), 0.1] - res = curve_fit(fit_func, t, np.hstack([x,y]), - p0=params_guess, sigma = 1.0/np.hstack([x_wt,y_wt])) + t_span = t[idx_last] - t[idx_first] + params_guess = [ + x.mean(), (x[idx_last] - x[idx_first]) / t_span, + y.mean(), (y[idx_last] - y[idx_first]) / t_span, + 0.1 + ] + res = curve_fit( + fit_func, t, np.hstack([x,y]), + p0=params_guess, sigma = 1.0/np.hstack([x_wt,y_wt]), + absolute_sigma=absolute_sigma + ) x0, vx, y0, vy, pi = res[0] x0_err, vx_err, y0_err, vy_err, pi_err = np.sqrt(np.diag(res[1])) - params = [x0, vx, y0, vy, pi] - param_errors = [x0_err, vx_err, y0_err, vy_err, pi_err] - return params, param_errors + params = np.array([x0, vx, y0, vy, pi]) + param_errors = np.array([x0_err, vx_err, y0_err, vy_err, pi_err]) + chi2_x, chi2_y = self.get_chi2(params, [t0], t, x, y, xe, ye) -""" -Check that everything is set up properly for motion models to run and their -required metadata. -""" -def validate_motion_model_dict(motion_model_dict, startable, default_motion_model): - # Collect names of all motion models that might get used. - all_motion_model_names = ['Fixed'] - if default_motion_model is not None: - all_motion_model_names.append(default_motion_model) - if 'motion_model_input' in startable.columns: - all_motion_model_names += np.unique(startable['motion_model_input']).tolist() - if 'motion_model_used' in startable.columns: - all_motion_model_names += np.unique(startable['motion_model_used']).tolist() - all_motion_model_names = np.unique(all_motion_model_names) - - # Check whether all motion models are in the dict, and if not, try to add them - # here or raise an error. - for mm in all_motion_model_names: - if mm not in motion_model_dict: - mm_obj = eval(mm) - if len(mm_obj.fixed_meta_data)>0: - raise ValueError(f"Cannot use {mm} motion model without required metadata. Please initialize with required metadata and provide in motion_model_dict.") - else: - motion_model_dict[mm] = mm_obj() - # warnings.warn(f"Using default model/fitter for {mm}.", UserWarning) + return params, param_errors, chi2_x, chi2_y - return motion_model_dict - -""" -Get all the motion model parameters for a given motion_model_name. -Optionally, include fixed and error parameters (included by default). -""" -def get_one_motion_model_param_names(motion_model_name, with_errors=True, with_fixed=True): - mod = eval(motion_model_name) - list_of_parameters = [] - list_of_parameters += getattr(mod, 'fitter_param_names') - if with_fixed: - list_of_parameters += getattr(mod, 'fixed_param_names') - if with_errors: - list_of_parameters += [par+'_err' for par in getattr(mod, 'fitter_param_names')] - return list_of_parameters -""" -Get all the motion model parameters for all models given in motion_model_list. -Optionally, include fixed and error parameters (included by default). -""" -def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_fixed=True): +def validate_motion_models(motion_models, startable, default_motion_model): + """Validate that all the unique motion models in startable and default_motion_model are in the motion_models. If not, add available models to the list. + + Parameters + ---------- + motion_models : list of MotionModels + List of MotionModels that are expected to encompass all the motion models + startable : StarTable + Star table that possibly contains 'motion_model_input' and 'motion_model_used' + default_motion_model : MotionModel + Default MotionModel + """ motion_model_map = { 'Fixed': Fixed, 'Linear': Linear, 'Acceleration': Acceleration, 'Parallax': Parallax } + # Collect names of all motion models that might get used. + all_motion_model_names = set() + all_motion_model_names.add('Fixed') + if default_motion_model is not None: + all_motion_model_names.add(default_motion_model.__name__) + if 'motion_model_input' in startable.colnames: + all_motion_model_names.update(startable['motion_model_input'].tolist()) + if 'motion_model_used' in startable.colnames: + all_motion_model_names.update(startable['motion_model_used'].tolist()) + + # Check whether all motion models are in the list, and if not, raise an error. + all_motion_models = [motion_model_map[mm] for mm in all_motion_model_names] + for mm in all_motion_models: + if mm not in motion_models: + if len(mm.fixed_meta_data) > 0: + raise ValueError(f"Cannot use {mm} motion model without required metadata. Please initialize with required metadata and provide in motion_models.") + else: + motion_models.append(mm) + warnings.warn(f"{mm} not found in motion_models list. Added default instance.", UserWarning) + + return motion_models + + +def get_one_motion_model_param_names(motion_model, with_errors=True, with_fixed=True): + """Get all the motion model parameters + + Parameters + ---------- + motion_model : MotionModel + MotionModel instance + with_errors : bool, optional + Add uncertainty names with '_err' suffix or not, by default True + with_fixed : bool, optional + Add fixed param names with '_fixed' suffix or not, by default True + Returns + ------- + list + List of all parameter names for the motion model + """ list_of_parameters = [] - # all_motion_models = [eval(mm) for mm in np.unique(motion_model_list).tolist()] - for mm in range(len(motion_model_list)): - motion_model = motion_model_map[motion_model_list[mm]] - param_names = motion_model.fitter_param_names - param_fixed_names = motion_model.fixed_param_names - param_err_names = [par+'_err' for par in param_names] - - list_of_parameters += param_names - if with_fixed: - list_of_parameters += param_fixed_names - if with_errors: - list_of_parameters += param_err_names - return np.unique(list_of_parameters).tolist() + def list_add(name): + if name not in list_of_parameters: + list_of_parameters.append(name) + + for param in motion_model.fitter_param_names: + # Fitter params + list_add(param) + # Error params + if with_errors: + list_add(param + '_err') + # Fixed params + if with_fixed: + for param in motion_model.fixed_param_names: + list_add(param) + return list_of_parameters + -""" -Get all the motion model parameters for all models defined in this module. -Optionally, include fixed and error parameters (included by default). -""" -def get_all_motion_model_param_names(with_errors=True, with_fixed=True): +def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_fixed=True): + """Get all the motion model parameters + + Parameters + ---------- + motion_model_list : list + List of MotionModels + with_errors : bool, optional + Add uncertainty names with '_err' suffix or not, by default True + with_fixed : bool, optional + Add fixed param names with '_fixed' suffix or not, by default True + + Returns + ------- + list + List of all unique parameter names across all motion models + """ list_of_parameters = [] - all_motion_models = MotionModel.__subclasses__() - for aa in range(len(all_motion_models)): - param_names = getattr(all_motion_models[aa], 'fitter_param_names') - param_fixed_names = getattr(all_motion_models[aa], 'fixed_param_names') - param_err_names = [par+'_err' for par in param_names] - list_of_parameters += param_names + def list_add(name): + if name not in list_of_parameters: + list_of_parameters.append(name) + + for mm in motion_model_list: + for param in mm.fitter_param_names: + # Fitter params + list_add(param) + # Error params + if with_errors: + list_add(param + '_err') + # Fixed params if with_fixed: - list_of_parameters += param_fixed_names - if with_errors: - list_of_parameters += param_err_names - - return np.unique(list_of_parameters).tolist() - + for param in mm.fixed_param_names: + list_add(param) + return list(list_of_parameters) + + +def get_all_motion_model_names(with_errors=True, with_fixed=True): + return get_list_motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) + +def motion_model_map(): + return { + 'Empty': Empty, + 'Fixed': Fixed, + 'Linear': Linear, + 'Acceleration': Acceleration, + 'Parallax': Parallax + } \ No newline at end of file From 77820b2ab6d28cbe519bfb7edd90a9473c6514ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 12 Nov 2025 23:37:32 -0800 Subject: [PATCH 15/94] Rewrite startable fit velocity function for acceleration and the new motion models. Update fitting logic: Provide multiple motion models, use the available model with the most number of parameters to fit according to the observed data points (i.e., choose the model with n_obs >= n_params). Removed motion_model_input and default_motion_model for clarity. --- flystar/startables.py | 296 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 243 insertions(+), 53 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 8f7a397..60b8310 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -11,78 +11,74 @@ import copy from flystar import motion_model import pandas as pd +from flystar.motion_model import Empty, Fixed, Linear class StarTable(Table): - """ - A StarTable is an astropy.Table with stars matched from multiple starlists. + def __init__(self, *args, ref_list=0, **kwargs): + """ + A StarTable is an astropy.Table with stars matched from multiple starlists. - Required table columns (input as keywords): - ------------------------- - name : 1D numpy.array with shape = N_stars - List of unique names for each of the stars in the table. + Required table columns (input as keywords): + ------------------------- + name : 1D numpy.array with shape = N_stars + List of unique names for each of the stars in the table. - x : 2D numpy.array with shape = (N_stars, N_lists) - Positions of N_stars in each of N_lists in the x dimension. + x : 2D numpy.array with shape = (N_stars, N_lists) + Positions of N_stars in each of N_lists in the x dimension. - y : 2D numpy.array with shape = (N_stars, N_lists) - Positions of N_stars in each of N_lists in the y dimension. + y : 2D numpy.array with shape = (N_stars, N_lists) + Positions of N_stars in each of N_lists in the y dimension. - m : 2D numpy.array with shape = (N_stars, N_lists) - Magnitudes of N_stars in each of N_lists. + m : 2D numpy.array with shape = (N_stars, N_lists) + Magnitudes of N_stars in each of N_lists. - Optional table columns (input as keywords): - ------------------------- - motion_model : 1D numpy.array with shape = N_stars - string indicating motion model type for each star - - xe : 2D numpy.array with shape = (N_stars, N_lists) - Position uncertainties of N_stars in each of N_lists in the x dimension. + Optional table columns (input as keywords): + ------------------------- + motion_model : 1D numpy.array with shape = N_stars + string indicating motion model type for each star + + xe : 2D numpy.array with shape = (N_stars, N_lists) + Position uncertainties of N_stars in each of N_lists in the x dimension. - ye : 2D numpy.array with shape = (N_stars, N_lists) - Position uncertainties of N_stars in each of N_lists in the y dimension. + ye : 2D numpy.array with shape = (N_stars, N_lists) + Position uncertainties of N_stars in each of N_lists in the y dimension. - me : 2D numpy.array with shape = (N_stars, N_lists) - Magnitude uncertainties of N_stars in each of N_lists. + me : 2D numpy.array with shape = (N_stars, N_lists) + Magnitude uncertainties of N_stars in each of N_lists. - ep_name : 2D numpy.array with shape = (N_stars, N_lists) - Names in each epoch for each of N_stars in each of N_lists. This is - useful for tracking purposes. - - corr : 2D numpy.array with shape = (N_stars, N_lists) - Fitting correlation for each of N_stars in each of N_lists. + ep_name : 2D numpy.array with shape = (N_stars, N_lists) + Names in each epoch for each of N_stars in each of N_lists. This is + useful for tracking purposes. + + corr : 2D numpy.array with shape = (N_stars, N_lists) + Fitting correlation for each of N_stars in each of N_lists. - Optional table meta data - ------------------------- - list_names : list of strings - List of names, one for each of the starlists. + Optional table meta data + ------------------------- + list_names : list of strings + List of names, one for each of the starlists. - list_times : list of integers or floats - List of times/dates for each starlist. + list_times : list of integers or floats + List of times/dates for each starlist. - ref_list : int - Specify which list is the reference list (if any). + ref_list : int + Specify which list is the reference list (if any). - Examples - -------------------------- + Examples + -------------------------- - t = startables.StarTable(name=name, x=x, y=y, m=m) + t = startables.StarTable(name=name, x=x, y=y, m=m) - # Access the data: - print(t) - print(t['name'][0:10]) # print the first 10 star names - print(t['x'][0:10, 0]) # print x from the first epoch/list/column for the first 10 stars - """ - def __init__(self, *args, ref_list=0, **kwargs): - """ + # Access the data: + print(t) + print(t['name'][0:10]) # print the first 10 star names + print(t['x'][0:10, 0]) # print x from the first epoch/list/column for the first 10 stars """ # Check if the required arguments are present arg_req = ('name', 'x', 'y', 'm') - - found_all_required = True - for arg_test in arg_req: - if arg_test not in kwargs: - found_all_required = False + + found_all_required = all(arg in kwargs for arg in arg_req) if not found_all_required: if len(args) > 1: # If there are no arguments, it's because the @@ -151,7 +147,7 @@ def __init__(self, *args, ref_list=0, **kwargs): names=('name', 'x', 'y', 'm')) self['name'] = self['name'].astype('U20') self.meta = {'n_stars': n_stars, 'n_lists': n_lists, 'ref_list': ref_list} - + for meta_arg in meta_tab: if meta_arg in kwargs: self.meta[meta_arg] = kwargs[meta_arg] @@ -536,6 +532,200 @@ def detections(self): return + def fit_velocities_new( + self, + motion_models=['Empty', 'Fixed', 'Linear'], + weighting='var', + use_scipy=False, + absolute_sigma=True, + bootstrap=0, + fixed_t0=False, + verbose=True, + mask_value=None, + fill_value=np.nan, + show_progress=True + ): + """Fit velocity for star table + + Parameters + ---------- + motion_models : list, optional + Motion models name to use. + If multiple models are supplied, prioritize the model with the most parameters to fit. + If multiple models have the same number of parameters, raise AssertionError: not sure which to use. + When not enough data points, use the model with just enough parameters to fit, by default ['Empty, 'Fixed', 'Linear'] + weighting : str, optional + Uncertainty weighting, 'std' for weight=1/xe(ye) or 'var' for weight=1/xe(ye)**2, by default 'var' + use_scipy : bool, optional + Use scipy.optimize.curve_fit or algebraic solution (for Linear model only), by default False + absolute_sigma : bool, optional + Use absolute sigma or not, see scipy curve_fit for details, by default True + bootstrap : int, optional + Number of bootstrap for uncertainty resampling, by default 0 + fixed_t0 : bool or float, optional + If provided, use the fixed t0. Otherwise, use average t weighted by 1/np.hypot(xe, ye), by default False + verbose : bool, optional + Print verbose messages or not, by default True + mask_value : float, optional + Values to mask in data, by default None + fill_value : float, optional + Fill value when there is not enough data points to fit, by default np.nan + show_progress : bool, optional + Show progress bar or not, by default True + + Raises + ------ + ValueError + If weighting is not 'var' or 'std'. + KeyError + If time values are not found in the table or meta. + KeyError + If required columns 'x' and 'y' are missing in the table. + """ + ########################### + ####### Check Params ###### + ########################### + if weighting not in ['var', 'std']: + raise ValueError(f"fit_velocities: Weighting must either be 'var' or 'std', not {weighting}!") + + if ('t' not in self.colnames) and ('LIST_TIMES' not in self.meta): + raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'LIST_TIMES' in meta.") + + # Check if we have the required columns + if not all([_ in self.colnames for _ in ['x', 'y']]): + raise KeyError(f"fit_velocities: Missing required columns in the table: {', '.join(['x', 'y'])}!") + + # Convert motion models from strings to classes + motion_model_map = motion_model.motion_model_map() + if 'Empty' not in motion_models: + motion_models.insert(0, 'Empty') # Ensure Empty model is always included + motion_models = [motion_model_map[mm] for mm in motion_models] + + ########################### + ####### Prepare Data ###### + ########################### + # Prepare data for fitting + N_stars = len(self) + x_data = np.ma.masked_invalid(self['x'].data, copy=True) + y_data = np.ma.masked_invalid(self['y'].data, copy=True) + xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else None + ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else None + # t_data: 2d array with shape (N_stars, N_epochs) + # t0: 1d array with shape (N_stars,) + if 't' in self.colnames: + t_data = copy.deepcopy(self['t'].data) + t0 = np.average(t_data, axis=1, weights=1/np.hypot(xe_data, ye_data)) if not fixed_t0 else np.ones(N_stars)*fixed_t0 + else: + t_data = copy.deepcopy(np.array(self.meta['LIST_TIMES'])) + t_data = np.broadcast_to(t_data, x_data.shape) + t0 = np.average(t_data, axis=1, weights=1/np.hypot(xe_data, ye_data)) if not fixed_t0 else np.ones(N_stars)*fixed_t0 + if mask_value: + x_data = np.ma.masked_values(x_data, mask_value) + y_data = np.ma.masked_values(y_data, mask_value) + if xe_data is not None: + xe_data = np.ma.masked_values(xe_data, mask_value) + if ye_data is not None: + ye_data = np.ma.masked_values(ye_data, mask_value) + + # Calculate mask array + xy_mask = (~x_data.mask) & (~y_data.mask) + self['n_obs'] = xy_mask.sum(axis=1) + + # Convert to lists of arrays for faster access during fitting + t_stars = [np.array(t_data[i][xy_mask[i]]) for i in range(N_stars)] + x_stars = [np.array(x_data[i][xy_mask[i]]) for i in range(N_stars)] + y_stars = [np.array(y_data[i][xy_mask[i]]) for i in range(N_stars)] + xe_stars = [np.array(xe_data[i][xy_mask[i]]) if xe_data is not None else None for i in range(N_stars)] + ye_stars = [np.array(ye_data[i][xy_mask[i]]) if ye_data is not None else None for i in range(N_stars)] + + + ########################### + ####### Determine MM ###### + ########################### + mm_n_params = np.sort([mm.n_params for mm in motion_models]) + # Assert that motion model n_params are unique and sorted + assert len(mm_n_params) == len(set(mm_n_params)), "fit_velocities: Provided motion model n_params are not unique! Cannot decide which motion model to use based on n_obs." + + # Select motion model based on n_obs + mm_digitized = np.digitize( + x=self['n_obs'], + bins=mm_n_params + ) - 1 # -1 to convert to 0-based index + self['motion_model'] = np.array([motion_models[d].__name__ for d in mm_digitized]) + + # Fill table with all possible motion model parameter names as new columns. + new_col_list = motion_model.get_list_motion_model_param_names(motion_models, with_errors=True) + new_col_list += ['chi2_x', 'chi2_y', 'n_params'] + if 't0' not in new_col_list: + new_col_list.append('t0') + + # Replace old columns if they exist + for col in new_col_list: + if col.endswith('_err'): + self.add_column( + Column(data=np.full(N_stars, np.inf, dtype=float), name=col), + rename_duplicate=True + ) + else: + self.add_column( + Column(data=np.full(N_stars, np.nan, dtype=float), name=col), + rename_duplicate=True + ) + + # Add a column to keep track of the number of points used in a fit and number of bootstrap used. + self['n_bootstrap'] = bootstrap + + ########################### + ######### FITTING ######### + ########################### + unique_motion_models, unique_inv_indices = np.unique(self['motion_model'], return_inverse=True) + indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} + + for unique_motion_model, unique_index in indices_by_motion_model.items(): + # Create motion model instance + motion_model_instance = motion_model_map[unique_motion_model]() + # Initialize arrays to store results + n_stars_this_model = len(unique_index) + n_params = len(motion_model_instance.fitter_param_names) + + params_array = np.full((n_stars_this_model, n_params), fill_value, dtype=float) + param_errs_array = np.full((n_stars_this_model, n_params), np.inf, dtype=float) + chi2_x_array = np.full(n_stars_this_model, np.nan, dtype=float) + chi2_y_array = np.full(n_stars_this_model, np.nan, dtype=float) + + for idx, i_star in enumerate(tqdm(unique_index, disable=not show_progress, desc=f"Fitting motion model {unique_motion_model}")): + # Fit the star + params, param_errs, chi2_x, chi2_y = motion_model_instance.fit_motion_model( + t=t_stars[i_star], + x=x_stars[i_star], + y=y_stars[i_star], + xe=xe_stars[i_star], + ye=ye_stars[i_star], + t0=t0[i_star], + weighting=weighting, + use_scipy=use_scipy, + absolute_sigma=absolute_sigma, + bootstrap=bootstrap, + fill_value=fill_value, + verbose=verbose + ) + # Store results to arrays + params_array[idx] = params + param_errs_array[idx] = param_errs + chi2_x_array[idx] = chi2_x + chi2_y_array[idx] = chi2_y + + # Store results back to the table + param_names = motion_model_instance.fitter_param_names + for j, param_name in enumerate(param_names): + self[param_name][unique_index] = params_array[:, j] + self[param_name + '_err'][unique_index] = param_errs_array[:, j] + self['chi2_x'][unique_index] = chi2_x_array + self['chi2_y'][unique_index] = chi2_y_array + self['n_params'][unique_index] = n_params + self['t0'][unique_index] = t0[unique_index] + return + def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, bootstrap=0, fixed_t0=False, verbose=False, mask_val=None, mask_lists=False, show_progress=True, default_motion_model='Linear', reassign_motion_model=False, select_stars=None, motion_model_dict={}): From 043cdf1386c90320fa1b29f9b50ec8d23778630b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 16 Nov 2025 20:22:18 -0800 Subject: [PATCH 16/94] Add support for motion_model_input --- flystar/motion_model.py | 44 +++++++++++----- flystar/startables.py | 113 +++++++++++++++++++++++++++++----------- 2 files changed, 114 insertions(+), 43 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 939cd0b..4849214 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -7,12 +7,12 @@ import warnings class MotionModel(ABC): - # Degrees of freedom for model - n_params = 0 - # Fit paramters: Shared fit parameters fitter_param_names = [] + # Number of fit parameters/required observations in each direction + n_params = int(np.ceil(len(fitter_param_names) / 2)) + # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. fixed_param_names = [] @@ -22,6 +22,7 @@ class MotionModel(ABC): # These parameters should be derived from the fit parameters and # they must exist as a variable on the model object optional_param_names = [] + name = "MotionModel" def __init__(self, *args, **kwargs): # TODO: do we need this? @@ -59,7 +60,7 @@ def get_weights(self, xe, ye, weighting='var'): warnings.warn("Invalid weighting, using default weighting scheme var.", UserWarning) return 1./xe**2, 1./ye**2 - def fit_motion_model( + def fit( self, t, x, y, xe, ye, t0, bootstrap=0, weighting='var', @@ -163,9 +164,11 @@ def get_chi2(self, fit_params, fixed_params, t, x, y, xe, ye, reduced=False): return chi2x, chi2y class Empty(MotionModel): - n_params = 0 fitter_param_names = [] fixed_param_names = [] + name = "Empty" + # Number of fit parameters/required observations in each direction + n_params = int(np.ceil(len(fitter_param_names) / 2)) def __init__(self, **kwargs): """Empty motion model, returns nan for values and inf for uncertainties. @@ -207,9 +210,12 @@ class Fixed(MotionModel): A non-moving motion model for a star on the sky. """ - n_params = 1 fitter_param_names = ['x0','y0'] fixed_param_names = [] + # Number of fit parameters/required observations in each direction + n_params = int(np.ceil(len(fitter_param_names) / 2)) + + name = "Fixed" def __init__(self, **kwargs): # Must call after setting parameters. @@ -294,10 +300,14 @@ class Linear(MotionModel): """ A 2D linear motion model for a star on the sky. """ - n_params = 2 fitter_param_names = ['x0', 'vx', 'y0', 'vy'] fixed_param_names = ['t0'] + # Number of fit parameters/required observations in each direction + n_params = int(np.ceil(len(fitter_param_names) / 2)) + + name = "Linear" + def __init__(self, **kwargs): # Must call after setting parameters. @@ -348,7 +358,7 @@ def run_fit( params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) return params, param_errors, np.nan, np.nan - + # degree_of_freedom >= 0 dt = t - t0 x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) @@ -425,9 +435,12 @@ class Acceleration(MotionModel): """ A 2D accelerating motion model for a star on the sky. """ - n_params = 3 fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] fixed_param_names = ['t0'] + name = "Acceleration" + + # Number of fit parameters/required observations in each direction + n_params = int(np.ceil(len(fitter_param_names) / 2)) def __init__(self, x0=0, vx0=0, ax=0, y0=0, vy0=0, ay=0, t0=None, x0_err=0, vx0_err=0, ax_err=0, y0_err=0, vy0_err=0, ay_err=0, **kwargs): @@ -521,10 +534,13 @@ class Parallax(MotionModel): Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ - n_params = 3 fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] fixed_param_names = ['t0'] fixed_meta_data = ['RA','Dec','PA','obs'] + name = "Parallax" + + # Number of fit parameters/required observations in each direction + n_params = int(np.ceil(len(fitter_param_names) / 2)) def __init__(self, RA, Dec, PA=0.0, obs='earth', **kwargs): self.RA = RA @@ -771,10 +787,14 @@ def get_all_motion_model_names(with_errors=True, with_fixed=True): return get_list_motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) def motion_model_map(): - return { + mm_map = { 'Empty': Empty, 'Fixed': Fixed, 'Linear': Linear, 'Acceleration': Acceleration, 'Parallax': Parallax - } \ No newline at end of file + } + + # Sort by n_params + mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].n_params)) + return mm_map \ No newline at end of file diff --git a/flystar/startables.py b/flystar/startables.py index 60b8310..08461a1 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -532,9 +532,9 @@ def detections(self): return - def fit_velocities_new( + def fit_motion_model( self, - motion_models=['Empty', 'Fixed', 'Linear'], + motion_models=[Empty(), Fixed(), Linear()], weighting='var', use_scipy=False, absolute_sigma=True, @@ -549,11 +549,19 @@ def fit_velocities_new( Parameters ---------- - motion_models : list, optional - Motion models name to use. - If multiple models are supplied, prioritize the model with the most parameters to fit. - If multiple models have the same number of parameters, raise AssertionError: not sure which to use. - When not enough data points, use the model with just enough parameters to fit, by default ['Empty, 'Fixed', 'Linear'] + motion_models : list of MotionModel, optional + Motion models to use. + Empty() and Fixed() models are always added automatically for stars with n_fit = 0 or 1. + The behavior is as follows: + 1. If 'motion_model_input' column is NOT in table: + - Use the most complex model that has enough parameters to fit the data (n_fit >= n_params). + - If multiple models are supplied, prioritize the model with the most parameters to fit. + - If multiple models have the same number of parameters, raise AssertionError: not sure which to use. + 2. If 'motion_model_input' column is in table: + - Use the model specified in the 'motion_model_input' column. + - If motion model requires initialization parameters, an instance of the motion model must be provided in motion_models list, i.e., motion_models=[Parallax(RA=0, DEC=0)]. + - If not enough data points to fit the specified model, use the most complex model that has enough parameters to fit the data (n_fit >= n_params) among the provided motion_models and 'motion_model_input'. + The actual used motion model is stored in the 'motion_model_used' column. The default motion_models are [Empty(), Fixed(), Linear()]. weighting : str, optional Uncertainty weighting, 'std' for weight=1/xe(ye) or 'var' for weight=1/xe(ye)**2, by default 'var' use_scipy : bool, optional @@ -595,11 +603,38 @@ def fit_velocities_new( if not all([_ in self.colnames for _ in ['x', 'y']]): raise KeyError(f"fit_velocities: Missing required columns in the table: {', '.join(['x', 'y'])}!") - # Convert motion models from strings to classes - motion_model_map = motion_model.motion_model_map() - if 'Empty' not in motion_models: - motion_models.insert(0, 'Empty') # Ensure Empty model is always included - motion_models = [motion_model_map[mm] for mm in motion_models] + # Always add Empty and Fixed in motion models + mm_names = [mm.name for mm in motion_models] + if 'Fixed' not in mm_names: + motion_models.insert(0, Fixed()) + if 'Empty' not in mm_names: + motion_models.insert(0, Empty()) + mm_names = [mm.name for mm in motion_models] + + # Construct motion models if motion_model_input column exists + all_mm_map = motion_model.motion_model_map() + if 'motion_model_input' in self.colnames: + input_mm_names = np.unique(self['motion_model_input']) + assert all([name in all_mm_map.keys() for name in input_mm_names]), \ + f"fit_velocities: Unknown motion model name(s) in 'motion_model_input' column. Available motion models are: {', '.join(all_mm_map.keys())}." + for mm_name in input_mm_names: + if mm_name not in mm_names: + try: + motion_models.append(all_mm_map[mm_name]()) + except Exception as e: + raise ValueError(f"fit_velocities: An instance of motion model {mm_name} with initialization parameters is missing in motion_models: {e}") + + # Sort motion models by n_params + motion_models = sorted(motion_models, key=lambda mm: mm.n_params) + + input_mm_map = {mm.name: mm for mm in motion_models} + + mm_n_params = np.sort([mm.n_params for mm in motion_models]) + if 'motion_model_input' not in self.colnames: + # If motion_model_input column is not provided, assert that motion model n_params are unique and sorted + # Otherwise the fitter does not know which motion model to use based on n_obs + assert len(mm_n_params) == len(set(mm_n_params)), "fit_velocities: Provided motion model n_params are not unique! Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." + ########################### ####### Prepare Data ###### @@ -610,6 +645,7 @@ def fit_velocities_new( y_data = np.ma.masked_invalid(self['y'].data, copy=True) xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else None ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else None + # t_data: 2d array with shape (N_stars, N_epochs) # t0: 1d array with shape (N_stars,) if 't' in self.colnames: @@ -619,6 +655,7 @@ def fit_velocities_new( t_data = copy.deepcopy(np.array(self.meta['LIST_TIMES'])) t_data = np.broadcast_to(t_data, x_data.shape) t0 = np.average(t_data, axis=1, weights=1/np.hypot(xe_data, ye_data)) if not fixed_t0 else np.ones(N_stars)*fixed_t0 + if mask_value: x_data = np.ma.masked_values(x_data, mask_value) y_data = np.ma.masked_values(y_data, mask_value) @@ -629,7 +666,7 @@ def fit_velocities_new( # Calculate mask array xy_mask = (~x_data.mask) & (~y_data.mask) - self['n_obs'] = xy_mask.sum(axis=1) + self['n_fit'] = xy_mask.sum(axis=1) # Convert to lists of arrays for faster access during fitting t_stars = [np.array(t_data[i][xy_mask[i]]) for i in range(N_stars)] @@ -642,19 +679,31 @@ def fit_velocities_new( ########################### ####### Determine MM ###### ########################### - mm_n_params = np.sort([mm.n_params for mm in motion_models]) - # Assert that motion model n_params are unique and sorted - assert len(mm_n_params) == len(set(mm_n_params)), "fit_velocities: Provided motion model n_params are not unique! Cannot decide which motion model to use based on n_obs." + if 'motion_model_input' in self.colnames: + # Determine which motion model to use based on motion_model_input column + # If n_fit < required n_params for the input motion model, use the most complicated motion model with n_fit >= n_params + motion_model_names = np.unique(self['motion_model_input']) + required_params = [all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']] + mm_digitized = np.digitize( + x=np.minimum(np.array(self['n_fit']), required_params), + bins=mm_n_params + ) - 1 # Convert to 0-based index + + else: + mm_digitized = np.digitize( + x=np.array(self['n_fit']), + bins=mm_n_params + ) - 1 # Convert to 0-based index + + self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized]) - # Select motion model based on n_obs - mm_digitized = np.digitize( - x=self['n_obs'], - bins=mm_n_params - ) - 1 # -1 to convert to 0-based index - self['motion_model'] = np.array([motion_models[d].__name__ for d in mm_digitized]) + ############################ + ####### Prepare Table ###### + ############################ # Fill table with all possible motion model parameter names as new columns. - new_col_list = motion_model.get_list_motion_model_param_names(motion_models, with_errors=True) + motion_model_used = [all_mm_map[name] for name in np.unique(self['motion_model_used'])] + new_col_list = motion_model.get_list_motion_model_param_names(motion_model_used, with_errors=True) new_col_list += ['chi2_x', 'chi2_y', 'n_params'] if 't0' not in new_col_list: new_col_list.append('t0') @@ -668,7 +717,7 @@ def fit_velocities_new( ) else: self.add_column( - Column(data=np.full(N_stars, np.nan, dtype=float), name=col), + Column(data=np.full(N_stars, fill_value, dtype=float), name=col), rename_duplicate=True ) @@ -678,12 +727,13 @@ def fit_velocities_new( ########################### ######### FITTING ######### ########################### - unique_motion_models, unique_inv_indices = np.unique(self['motion_model'], return_inverse=True) + unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} - + + start_time = time.time() for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance - motion_model_instance = motion_model_map[unique_motion_model]() + motion_model_instance = input_mm_map[unique_motion_model] # Initialize arrays to store results n_stars_this_model = len(unique_index) n_params = len(motion_model_instance.fitter_param_names) @@ -695,7 +745,7 @@ def fit_velocities_new( for idx, i_star in enumerate(tqdm(unique_index, disable=not show_progress, desc=f"Fitting motion model {unique_motion_model}")): # Fit the star - params, param_errs, chi2_x, chi2_y = motion_model_instance.fit_motion_model( + params, param_errs, chi2_x, chi2_y = motion_model_instance.fit( t=t_stars[i_star], x=x_stars[i_star], y=y_stars[i_star], @@ -709,7 +759,7 @@ def fit_velocities_new( fill_value=fill_value, verbose=verbose ) - # Store results to arrays + # print(f'{params_array.shape=}, {idx=}, {params=}') params_array[idx] = params param_errs_array[idx] = param_errs chi2_x_array[idx] = chi2_x @@ -722,10 +772,11 @@ def fit_velocities_new( self[param_name + '_err'][unique_index] = param_errs_array[:, j] self['chi2_x'][unique_index] = chi2_x_array self['chi2_y'][unique_index] = chi2_y_array - self['n_params'][unique_index] = n_params + self['n_params'][unique_index] = motion_model_instance.n_params self['t0'][unique_index] = t0[unique_index] return + def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, bootstrap=0, fixed_t0=False, verbose=False, mask_val=None, mask_lists=False, show_progress=True, default_motion_model='Linear', reassign_motion_model=False, select_stars=None, motion_model_dict={}): @@ -1100,7 +1151,7 @@ def get_star_positions_at_time(self, t, motion_model_dict, allow_alt_models=True param_dict[par] = self[par][idx] x[idx],y[idx],xe[idx],ye[idx] = mod.get_batch_pos_at_time(t,**param_dict) - return x,y,xe,ye + return x, y, xe, ye def fit_velocities_all_detected(self, motion_model_to_fit, weighting='var', use_scipy=True, absolute_sigma=True, times=None, From 5ec18cb6847b97562f8936c33890cf3b3bb7e8f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 20 Nov 2025 19:05:15 -0800 Subject: [PATCH 17/94] Passed testing for fit_motion_model. Merged get_pos_at_time and get_batch_pos at_time into model; Renamed get_ functions into calc_ functions --- flystar/motion_model.py | 568 +++++++++++++++++++---------- flystar/parallax.py | 43 ++- flystar/startables.py | 17 +- flystar/tests/test_align.py | 2 +- flystar/tests/test_motion_model.py | 288 +++++++++------ flystar/tests/test_startable.py | 12 +- 6 files changed, 599 insertions(+), 331 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 4849214..5a542e0 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -8,10 +8,10 @@ class MotionModel(ABC): # Fit paramters: Shared fit parameters - fitter_param_names = [] + fit_param_names = [] # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fitter_param_names) / 2)) + n_params = int(np.ceil(len(fit_param_names) / 2)) # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. @@ -25,21 +25,16 @@ class MotionModel(ABC): name = "MotionModel" def __init__(self, *args, **kwargs): - # TODO: do we need this? - '''for param in self.fitter_param_names: - param_var = getattr(self, param) - if not isinstance(param_var, (list, np.ndarray)): - setattr(self, param, np.array([param_var]))''' return + + def model_fit(self, dt): + return np.full_like(dt, np.nan) + + def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): + if fit_param_errs is None: + return np.full_like(t, np.nan), np.full_like(t, np.nan) + return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) - def get_pos_at_time(self, fit_params, fixed_params, t): - #return x, y - pass - - def get_batch_pos_at_time(self, t): - #return x, y, x_err, y_err - pass - def run_fit( self, t, x, y, xe, ye, t0, weighting='var', @@ -103,7 +98,7 @@ def fit( Returns ------- params, params_err, chi2_x, chi2_y - Parameters, uncertainties, and chi squares. The corresponding parameter names are in self.fitter_param_names. + Parameters, uncertainties, and chi squares. The corresponding parameter names are in self.fit_param_names. """ params, param_errs, chi2_x, chi2_y = self.run_fit( t, x, y, xe, ye, t0=t0, @@ -147,48 +142,41 @@ def fit( return params, param_errs, chi2_x, chi2_y - def get_chi2(self, fit_params, fixed_params, t, x, y, xe, ye, reduced=False): + def calc_chi2(self, fit_params, fixed_params, t, x, y, xe, ye, reduced=False): """ Get the chi^2 value for the current MM and the input data. """ - x_pred, y_pred = self.get_pos_at_time(fit_params, fixed_params, t) + x_pred, y_pred = self.model(t, fit_params, fixed_params) chi2x = np.sum((x - x_pred)**2 / xe**2) chi2y = np.sum((y - y_pred)**2 / ye**2) if reduced: if len(t) == self.n_params: - chi2x, chi2y = 0, 0 + return np.inf, np.inf else: - dof = len(x) - self.n_params - chi2x, chi2y = chi2x / dof, chi2y / dof + degree_of_freedom = len(x) - self.n_params + chi2x, chi2y = chi2x / degree_of_freedom, chi2y / degree_of_freedom return chi2x, chi2y class Empty(MotionModel): - fitter_param_names = [] + fit_param_names = [] fixed_param_names = [] name = "Empty" # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fitter_param_names) / 2)) + n_params = int(np.ceil(len(fit_param_names) / 2)) def __init__(self, **kwargs): """Empty motion model, returns nan for values and inf for uncertainties. """ super().__init__() return - - def get_pos_at_time(self, fit_params, fixed_params, t): - if hasattr(t, "__len__"): - return np.full(len(t), np.nan), np.full(len(t), np.nan) - else: - return np.nan, np.nan + + def model_fit(self, dt): + return np.full_like(dt, np.nan) - def get_batch_pos_at_time(self,t, - x0=[],y0=[],t0=[], - x0_err=[], y0_err=[]): - if hasattr(t, "__len__"): - return np.full((len(x0), len(t)), np.nan), np.full((len(y0), len(t)), np.nan), np.full((len(x0), len(t)), np.nan), np.full((len(y0), len(t)), np.nan) - else: - return np.nan, np.nan, np.nan, np.nan + def model(self, t, fit_params, fixed_params, fixed_param_errs=None): + t = np.atleast_1d(t) + return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) def run_fit( self, t, x, y, xe, ye, t0, @@ -210,10 +198,10 @@ class Fixed(MotionModel): A non-moving motion model for a star on the sky. """ - fitter_param_names = ['x0','y0'] + fit_param_names = ['x0','y0'] fixed_param_names = [] # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fitter_param_names) / 2)) + n_params = int(np.ceil(len(fit_param_names) / 2)) name = "Fixed" @@ -222,22 +210,78 @@ def __init__(self, **kwargs): # This checks for proper parameter formatting. super().__init__() return + + def model_fit(self, dt, x0): + """Fit function for Fixed motion model + + Parameters + ---------- + dt : array-like + Time offset, shape (N_times,) + x0 : float or array-like + Average positions, scalar or shape (N_stars,) - def get_pos_at_time(self, fit_params, fixed_params, t): - fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) - if hasattr(t, "__len__"): - return np.repeat(fit_params_dict['x0'], len(t)), np.repeat(fit_params_dict['y0'], len(t)) - else: - return fit_params_dict['x0'], fit_params_dict['y0'] - - def get_batch_pos_at_time(self,t, - x0=[],y0=[],t0=[], - x0_err=[], y0_err=[]): - if hasattr(t, "__len__"): - return np.repeat(x0[:,np.newaxis],len(t),axis=1), np.repeat(y0[:,np.newaxis],len(t),axis=1), np.repeat(x0_err[:,np.newaxis],len(t),axis=1), np.repeat(y0_err[:,np.newaxis],len(t),axis=1) - else: - return x0, y0, x0_err, y0_err - + Returns + ------- + x : array-like + Predicted positions, shape (N_times,) if scalar x0, else (N_stars, N_times) + """ + dt = np.atleast_1d(dt) + x0 = np.asarray(x0) + return np.broadcast_to(x0[:, np.newaxis], (x0.shape[0], dt.shape[0])) if x0.ndim > 0 else np.full_like(dt, x0) + + def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): + """Predicted positions (and uncertainties, if fit_param_errs is provided) at time t of Fixed model. + + Parameters + ---------- + t : float or array-like + Time array, shape (N_times,) + fit_params : array-like + Fit parameters x0, y0 in shape (N_params,) or (N_stars, N_params) + fixed_params : array-like, optional + Not applicable for Fixed, by default None + fit_param_errs : array-like, optional + Uncertainties for x0, y0 in shape (N_params,) or (N_stars, N_params), by default None + + Returns + ------- + x, y (, xe, ye) + Predicted position (and uncertainties) of Fixed model, shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 + """ + t = np.atleast_1d(t) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + + N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_times = len(t) + x0, y0 = fit_params.T # Each shape (N_stars,) + + # Return results in (N_stars, N_times) shape + x = self.model_fit(t, x0) # Shape (N_stars, N_times) + y = self.model_fit(t, y0) # Shape (N_stars, N_times) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x = x.flatten() + y = y.flatten() + + if fit_param_errs is None: + return x, y + + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + x0_err, y0_err = fit_param_errs.T + + # Return results in (N_stars, N_times) shape + x_err = np.broadcast_to(x0_err[:, np.newaxis], (N_stars, N_times)) + y_err = np.broadcast_to(y0_err[:, np.newaxis], (N_stars, N_times)) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x_err = x_err.flatten() + y_err = y_err.flatten() + + return x, y, x_err, y_err + def run_fit( self, t, x, y, xe, ye, t0, weighting='var', @@ -262,22 +306,22 @@ def run_fit( params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) return params, param_errors, np.nan, np.nan - + # degree_of_freedom >= 0 # Calculate weighted average position x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) x_wt_norm = x_wt / np.sum(x_wt) y_wt_norm = y_wt / np.sum(y_wt) x0 = np.average(x, weights=x_wt) - x0e = (np.sum(x_wt_norm**2 * xe**2))**0.5 / n_obs # Error propagation + x0e = (np.sum(x_wt_norm**2 * xe**2))**0.5 # Error propagation y0 = np.average(y, weights=y_wt) - y0e = (np.sum(y_wt_norm**2 * ye**2))**0.5 / n_obs # Error propagation + y0e = (np.sum(y_wt_norm**2 * ye**2))**0.5 # Error propagation params = np.array([x0, y0]) param_errors = np.array([x0e, y0e]) - - chi2x, chi2y = self.get_chi2(params, [], t, x, y, xe, ye) - + + chi2x, chi2y = self.calc_chi2(params, [], t, x, y, xe, ye) + if not absolute_sigma: if degree_of_freedom > 0: reduced_chi2x = chi2x / degree_of_freedom @@ -300,41 +344,89 @@ class Linear(MotionModel): """ A 2D linear motion model for a star on the sky. """ - fitter_param_names = ['x0', 'vx', 'y0', 'vy'] + fit_param_names = ['x0', 'vx', 'y0', 'vy'] fixed_param_names = ['t0'] # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fitter_param_names) / 2)) + n_params = int(np.ceil(len(fit_param_names) / 2)) name = "Linear" def __init__(self, **kwargs): - # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() return - def get_pos_at_time(self, fit_params, fixed_params, t): - fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) - fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) - dt = t - fixed_params_dict['t0'] - return fit_params_dict['x0'] + fit_params_dict['vx']*dt, fit_params_dict['y0'] + fit_params_dict['vy']*dt - - def get_batch_pos_at_time(self, t, x0=[],vx=[], y0=[],vy=[], t0=[], - x0_err=[],vx_err=[], y0_err=[],vy_err=[], **kwargs): - if hasattr(t, "__len__"): - dt = t - t0[:,np.newaxis] - x = x0[:,np.newaxis] + dt*vx[:,np.newaxis] - y = y0[:,np.newaxis] + dt*vy[:,np.newaxis] - x_err = np.hypot(x0_err[:,np.newaxis], vx_err[:,np.newaxis]*dt) - y_err = np.hypot(y0_err[:,np.newaxis], vy_err[:,np.newaxis]*dt) - else: - dt = t - t0 - x = x0 + dt*vx - y = y0 + dt*vy - x_err = np.hypot(x0_err, vx_err*dt) - y_err = np.hypot(y0_err, vy_err*dt) + def model_fit(self, dt, x0, v): + """Linear motion model fit function + + Parameters + ---------- + dt : array-like + Time offset, shape (N_times,) + x0 : float or array-like + Initial position, shape (N_stars,) or scalar + v : float or array-like + Velocity, shape (N_stars,) or scalar + + Returns + ------- + x : array-like + Predicted position(s) + """ + return x0 + v * dt + + def model(self, t, fit_params, fixed_params, fit_param_errs=None): + """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Linear model. + + Parameters + ---------- + t : float or array-like + Time(s) at which to evaluate the model + fit_params : array-like + Fit parameters x0, vx, y0, vy in shape (N_params,) or (N_stars, N_params) + fixed_params : array-like + Fixed parameters t0 in shape (1,) or (N_stars, 1) + fit_param_errs : array-like, optional + Uncertainties of fit parameters in shape (N_params,) or (N_stars, N_params), by default None + + Returns + ------- + x, y (, xe, ye) + Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 + """ + t = np.atleast_1d(t) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + + N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_times = len(t) + + x0, vx, y0, vy = fit_params.T # Each shape (N_stars,) + t0 = np.atleast_1d(fixed_params[0]) # Shape (N_stars,) or (1,) + + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + + x = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis]) # Shape (N_stars, N_times) + y = self.model_fit(dt, y0[:, np.newaxis], vy[:, np.newaxis]) # Shape (N_stars, N_times) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x = x.flatten() + y = y.flatten() + + if fit_param_errs is None: + return x, y + + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + x0_err, vx_err, y0_err, vy_err = fit_param_errs.T # Each shape (N_stars,) + x_err = np.hypot(x0_err[:, np.newaxis], vx_err[:, np.newaxis] * dt) # Shape (N_stars, N_times) + y_err = np.hypot(y0_err[:, np.newaxis], vy_err[:, np.newaxis] * dt) # Shape (N_stars, N_times) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x_err = x_err.flatten() + y_err = y_err.flatten() return x, y, x_err, y_err def run_fit( @@ -366,17 +458,15 @@ def run_fit( params_guess = [x.mean(), 0., y.mean(), 0.] if use_scipy: - def linear(t, c0, c1): - return c0 + c1*t - x_opt, x_cov = curve_fit(linear, dt, x, p0=np.array(params_guess[:2]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(linear, dt, y, p0=np.array(params_guess[2:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) + x_opt, x_cov = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:2]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[2:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) x0, vx = x_opt y0, vy = y_opt x0e, vxe = np.sqrt(x_cov.diagonal()) y0e, vye = np.sqrt(y_cov.diagonal()) params = np.array([x0, vx, y0, vy]) param_errors = np.array([x0e, vxe, y0e, vye]) - chi2_x, chi2_y = self.get_chi2(params, [t0], t, x, y, xe, ye) + chi2_x, chi2_y = self.calc_chi2(params, [t0], t, x, y, xe, ye) else: # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme @@ -435,45 +525,94 @@ class Acceleration(MotionModel): """ A 2D accelerating motion model for a star on the sky. """ - fitter_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] + fit_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] fixed_param_names = ['t0'] name = "Acceleration" # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fitter_param_names) / 2)) - - def __init__(self, x0=0, vx0=0, ax=0, y0=0, vy0=0, ay=0, t0=None, - x0_err=0, vx0_err=0, ax_err=0, y0_err=0, vy0_err=0, ay_err=0, **kwargs): + n_params = int(np.ceil(len(fit_param_names) / 2)) + + def __init__(self): # Must call after setting parameters. # This checks for proper parameter formatting. super().__init__() return + + def model_fit(self, t, x0, v0, a): + """Model positions at time t of Acceleration model. + + Parameters + ---------- + t : float or array-like + Time(s) at which to evaluate the model + x0 : float or array-like + Initial position(s) + v0 : float or array-like + Initial velocity(ies) + a : float or array-like + Acceleration(s) + + Returns + ------- + float or array-like + Model positions at time t of Acceleration model + """ + return x0 + v0*t + 0.5*a*t**2 + + def model(self, t, fit_params, fixed_params, fit_param_errs=None): + """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Acceleration model. + + Parameters + ---------- + t : float or array-like + Time(s) at which to evaluate the model + fit_params : array-like + Fit parameters with shape (N_stars, N_params) or (N_params,) + fixed_params : array-like + Fixed parameters with shape (N_stars, N_fixed_params) or (N_fixed_params,) + fit_param_errs : array-like, optional + Fit parameter uncertainties with shape (N_stars, N_params) or (N_params,), by default None + + Returns + ------- + x, y (, xe, ye) + Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 + """ + t = np.atleast_1d(t) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + + N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_times = len(t) - def get_pos_at_time(self, fit_params, fixed_params, t): - fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) - fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) - dt = t - fixed_params_dict['t0'] - x = fit_params_dict['x0'] + fit_params_dict['vx0']*dt + 0.5*fit_params_dict['ax']*dt**2 - y = fit_params_dict['y0'] + fit_params_dict['vy0']*dt + 0.5*fit_params_dict['ay']*dt**2 - return x, y + x0, vx0, ax, y0, vy0, ay = fit_params.T # Each shape (N_stars,) + t0 = np.atleast_1d(fixed_params[0]) # Shape (N_stars,) or (1,) - def get_batch_pos_at_time(self,t, - x0=[],vx0=[],ax=[], y0=[],vy0=[],ay=[], t0=[], - x0_err=[],vx0_err=[],ax_err=[], y0_err=[],vy0_err=[],ay_err=[], **kwargs): - if hasattr(t, "__len__"): - dt = t - t0[:,np.newaxis] - x = x0[:, np.newaxis] + dt * vx0[:, np.newaxis] + 0.5 * ax[:, np.newaxis] * dt**2 - y = y0[:, np.newaxis] + dt * vy0[:, np.newaxis] + 0.5 * ay[:, np.newaxis] * dt**2 - x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx0_err[:, np.newaxis]*dt)**2 + (0.5*ax_err[:, np.newaxis]*dt**2)**2) - y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy0_err[:, np.newaxis]*dt)**2 + (0.5*ay_err[:, np.newaxis]*dt**2)**2) - else: - dt = t - t0 - x = x0 + dt * vx0 + 0.5 * ax * dt**2 - y = y0 + dt * vy0 + 0.5 * ay * dt**2 - x_err = np.sqrt(x0_err**2 + (vx0_err * dt)**2 + (0.5 * ax_err * dt**2)**2) - y_err = np.sqrt(y0_err**2 + (vy0_err * dt)**2 + (0.5 * ay_err * dt**2)**2) + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + + x = self.model_fit(dt, x0[:, np.newaxis], vx0[:, np.newaxis], ax[:, np.newaxis]) # Shape (N_stars, N_times) + y = self.model_fit(dt, y0[:, np.newaxis], vy0[:, np.newaxis], ay[:, np.newaxis]) # Shape (N_stars, N_times) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x = x.flatten() + y = y.flatten() + + if fit_param_errs is None: + return x, y + + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + x0_err, vx0_err, ax_err, y0_err, vy0_err, ay_err = fit_param_errs.T + x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx0_err[:, np.newaxis] * dt)**2 + (0.5 * ax_err[:, np.newaxis] * dt**2)**2) # Shape (N_stars, N_times) + y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy0_err[:, np.newaxis] * dt)**2 + (0.5 * ay_err[:, np.newaxis] * dt**2)**2) # Shape (N_stars, N_times) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x_err = x_err.flatten() + y_err = y_err.flatten() + return x, y, x_err, y_err + def run_fit( self, t, x, y, xe, ye, t0, weighting='var', @@ -509,11 +648,8 @@ def run_fit( t_span = t[idx_last] - t[idx_first] params_guess = [x.mean(), (x[idx_last] - x[idx_first]) / t_span, 0., y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.] - def accel(t, c0, c1, c2): - return c0 + c1*t + 0.5*c2*t**2 - - x_opt, x_cov = curve_fit(accel, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(accel, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) + x_opt, x_cov = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) + y_opt, y_cov = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) x0, vx0, ax = x_opt y0, vy0, ay = y_opt x0e, vx0e, axe = np.sqrt(x_cov.diagonal()) @@ -521,7 +657,7 @@ def accel(t, c0, c1, c2): params = np.array([x0, vx0, ax, y0, vy0, ay]) param_errors = np.array([x0e, vx0e, axe, y0e, vy0e, aye]) - chi2_x, chi2_y = self.get_chi2(params, [t0], t, x, y, xe, ye) + chi2_x, chi2_y = self.calc_chi2(params, [t0], t, x, y, xe, ye) return params, param_errors, chi2_x, chi2_y @@ -534,81 +670,135 @@ class Parallax(MotionModel): Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ - fitter_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] + fit_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] fixed_param_names = ['t0'] fixed_meta_data = ['RA','Dec','PA','obs'] name = "Parallax" # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fitter_param_names) / 2)) - - def __init__(self, RA, Dec, PA=0.0, obs='earth', **kwargs): - self.RA = RA - self.Dec = Dec - self.PA = PA + n_params = int(np.ceil(len(fit_param_names) / 2)) + + def __init__(self, ra, dec, pa=0., obs='earth'): + super().__init__() + self.ra = ra + self.dec = dec + self.pa = pa self.obs = obs self.plx_vector_cached = None return - - def get_parallax_vector(self, t_mjd): - recalc_plx = True + + def calc_parallax_vector(self, t_mjd): + """Calculate parallax vector of shape (2, N_times) + + Parameters + ---------- + t_mjd : array-like + Time array in mjd + + Returns + ------- + pvec + Parallax vector of shape (2, N_times) + """ if self.plx_vector_cached is not None: - if hasattr(t_mjd, "__len__"): - if list(t_mjd) == list(self.plx_vector_cached[0]): - pvec = self.plx_vector_cached[1:] - recalc_plx = False - elif all([t_mjd_i in self.plx_vector_cached[0] for t_mjd_i in t_mjd]): - pvec_idxs = [np.argwhere(self.plx_vector_cached[0]==t_mjd_i)[0][0] for t_mjd_i in t_mjd] - pvec = [self.plx_vector_cached[1][pvec_idxs], self.plx_vector_cached[2][pvec_idxs]] - recalc_plx = False - elif t_mjd in self.plx_vector_cached[0]: - idx = np.where(t_mjd==self.plx_vector_cached[0])[0][0] - pvec = np.array([self.plx_vector_cached[1][idx], self.plx_vector_cached[2][idx]]) - recalc_plx = False - if recalc_plx: - pvec = parallax.parallax_in_direction(self.RA, self.Dec, t_mjd, obsLocation=self.obs, PA=self.PA).T - if hasattr(t_mjd, "__len__"): - self.plx_vector_cached = [t_mjd, pvec[0], pvec[1]] + t_mjd = np.atleast_1d(t_mjd) + t_mjd_cached = self.plx_vector_cached[0] + if np.allclose(t_mjd, t_mjd_cached): + # If cached values match input times, return cached values + return self.plx_vector_cached[1] + + elif all(np.isin(t_mjd, t_mjd_cached)): + # If all input times are in cached values, return those + # Calculate pvec_idxs such that t_mjd_cached[ pvec_idxs ] == t_mjd + pvec_idxs = np.array([np.where(t_mjd_cached==t_mjd_i)[0][0] for t_mjd_i in t_mjd]) + pvec = self.plx_vector_cached[1][:, pvec_idxs] + return pvec + + pvec = parallax.parallax_in_direction(self.ra, self.dec, t_mjd, obsLocation=self.obs, PA=self.pa).T + self.plx_vector_cached = [t_mjd, pvec] return pvec + + def model_fit(self, dt, x0, vx, y0, vy, pi): + """Model positions at time t of Parallax model. + + Parameters + ---------- + dt : float or array-like + Time(s) at which to evaluate the model + x0 : float or array-like + Initial position(s) + vx : float or array-like + Velocity(ies) + y0 : float or array-like + Initial position(s) + vy : float or array-like + Velocity(ies) + pi : float or array-like + Parallax factor(s) + + Returns + ------- + 2d array + Model positions at time t of Parallax model, shape (2, N_times) + """ + x_res = x0 + vx*dt + pi * self.pvec[0] + y_res = y0 + vy*dt + pi * self.pvec[1] + return np.vstack([x_res, y_res]) + + + def model(self, t, fit_params, fixed_params, fit_param_errs=None): + """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Parallax model. + + Parameters + ---------- + t : float or array-like + Times at which to evaluate the model + fit_params : array-like + Fit parameters for the model + fixed_params : array-like + Fixed parameters for the model + fit_param_errs : array-like, optional + Uncertainties in fit parameters, by default None + + Returns + ------- + x, y (, xe, ye) + Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 + """ + t = np.atleast_1d(t) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) - def get_pos_at_time(self, fit_params, fixed_params, t): - fit_params_dict = dict(zip(self.fitter_param_names, fit_params)) - fixed_params_dict = dict(zip(self.fixed_param_names, fixed_params)) - dt = t - fixed_params_dict['t0'] + N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_times = len(t) + + x0, vx, y0, vy, pi = fit_params.T # Each shape (N_stars,) + t0 = np.atleast_1d(fixed_params[0]) # Shape (N_stars,) or (1,) + + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) + self.pvec = self.calc_parallax_vector(t_mjd) # Shape (2, N_times) + x, y = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) + + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x = x.flatten() + y = y.flatten() + + if fit_param_errs is None: + return x, y + + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + x0_err, vx_err, y0_err, vy_err, pi_err = fit_param_errs.T + x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[0][np.newaxis, :])**2) # Shape (N_stars, N_times) + y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[1][np.newaxis, :])**2) # Shape (N_stars, N_times) - t_mjd = Time(t, format='decimalyear', scale='utc').mjd - pvec = self.get_parallax_vector(t_mjd) - pvec_x = np.reshape(pvec[0], t.shape) - pvec_y = np.reshape(pvec[1], t.shape) - x = fit_params_dict['x0'] + fit_params_dict['vx']*dt + fit_params_dict['pi']*pvec_x - y = fit_params_dict['y0'] + fit_params_dict['vy']*dt + fit_params_dict['pi']*pvec_y - return x, y - - def get_batch_pos_at_time(self, t, - x0=[],vx=[], y0=[],vy=[], pi=[], t0=[], - x0_err=[],vx_err=[], y0_err=[],vy_err=[], pi_err=[], **kwargs): - t_mjd = Time(t, format='decimalyear', scale='utc').mjd - pvec = self.get_parallax_vector(t_mjd) - if hasattr(t, "__len__"): - dt = t-t0[:,np.newaxis] - x = x0[:,np.newaxis] + dt*vx[:,np.newaxis] + pi[:,np.newaxis]*pvec[0].T - y = y0[:,np.newaxis] + dt*vy[:,np.newaxis] + pi[:,np.newaxis]*pvec[1].T - try: - x_err = np.sqrt(x0_err[:,np.newaxis]**2 + (vx_err[:,np.newaxis]*dt)**2 + (pi_err[:,np.newaxis]*pvec[0].T)**2) - y_err = np.sqrt(y0_err[:,np.newaxis]**2 + (vy_err[:,np.newaxis]*dt)**2 + (pi_err[:,np.newaxis]*pvec[1].T)**2) - except: - x_err,y_err = [],[] - else: - dt = t-t0 - x = x0 + dt*vx + pi*pvec[0] - y = y0 + dt*vy + pi*pvec[1] - try: - x_err = np.sqrt(x0_err**2 + (vx_err*dt)**2 + (pi_err*pvec[0])**2) - y_err = np.sqrt(y0_err**2 + (vy_err*dt)**2 + (pi_err*pvec[1])**2) - except: - x_err,y_err = [],[] + if N_stars == 1 or N_times == 1: + # If only one star, return flattened arrays + x_err = x_err.flatten() + y_err = y_err.flatten() return x, y, x_err, y_err + def run_fit( self, t, x, y, xe, ye, t0, weighting='var', @@ -622,6 +812,7 @@ def run_fit( if verbose: warnings.warn("Parallax model has no non-scipy fitter option. Running with scipy.", UserWarning) + t = np.atleast_1d(t) n_obs = len(t) degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model @@ -637,12 +828,9 @@ def run_fit( # degree_of_freedom >= 0 t_mjd = Time(t, format='decimalyear', scale='utc').mjd - pvec = self.get_parallax_vector(t_mjd) + self.pvec = self.get_parallax_vector(t_mjd) x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) - def fit_func(use_t, x0,vx, y0,vy, pi): - x_res = x0 + vx*(use_t-t0) + pi*pvec[0] - y_res = y0 + vy*(use_t-t0) + pi*pvec[1] - return np.hstack([x_res, y_res]) + # Initial guesses, x0,y0 as x,y averages; # vx,vy as average velocity if first and last points are perfectly measured; # pi for 10 pc distance @@ -655,7 +843,7 @@ def fit_func(use_t, x0,vx, y0,vy, pi): 0.1 ] res = curve_fit( - fit_func, t, np.hstack([x,y]), + self.model_fit, t - t0, np.vstack([x, y]), p0=params_guess, sigma = 1.0/np.hstack([x_wt,y_wt]), absolute_sigma=absolute_sigma ) @@ -664,7 +852,7 @@ def fit_func(use_t, x0,vx, y0,vy, pi): params = np.array([x0, vx, y0, vy, pi]) param_errors = np.array([x0_err, vx_err, y0_err, vy_err, pi_err]) - chi2_x, chi2_y = self.get_chi2(params, [t0], t, x, y, xe, ye) + chi2_x, chi2_y = self.calc_chi2(params, [t0], t, x, y, xe, ye) return params, param_errors, chi2_x, chi2_y @@ -733,7 +921,7 @@ def list_add(name): if name not in list_of_parameters: list_of_parameters.append(name) - for param in motion_model.fitter_param_names: + for param in motion_model.fit_param_names: # Fitter params list_add(param) # Error params @@ -770,7 +958,7 @@ def list_add(name): list_of_parameters.append(name) for mm in motion_model_list: - for param in mm.fitter_param_names: + for param in mm.fit_param_names: # Fitter params list_add(param) # Error params diff --git a/flystar/parallax.py b/flystar/parallax.py index b4b3a1b..3f7602b 100755 --- a/flystar/parallax.py +++ b/flystar/parallax.py @@ -24,20 +24,32 @@ cache_memory.reduce_size() @cache_memory.cache() -def parallax_in_direction(RA, Dec, mjd, obsLocation='earth', PA=0): +def parallax_in_direction(ra, dec, mjd, obsLocation='earth', PA=0.): """ - | R.A. in degrees. (J2000) - | Dec. in degrees. (J2000) - | MJD - | PA in degrees. (counterclockwise offset of the image y-axis from North) - - Equations following MulensModel. + Calculate the parallax vector in a given direction following MulensModel. + + Parameters + ---------- + RA : float + Right Ascension in degrees. (J2000) + Dec : float + Declination in degrees. (J2000) + mjd : float or array-like + Modified Julian Date. + obsLocation : str, optional + Observer location, by default 'earth'. + PA : float, optional + Position angle in degrees (counterclockwise offset of the image y-axis from North), by default 0. + + Returns + ------- + pvec : ndarray + Parallax vector components, shape of (N, 2), where N is the number of mjd entries. """ - #print('parallax_in_direction: len(t) = ', len(mjd)) - # Munge inputs into astropy format. - times = Time(mjd + 2400000.5, format='jd', scale='tdb') - coord = SkyCoord(RA, Dec, unit=(units.deg, units.deg)) + # times = Time(mjd + 2400000.5, format='jd', scale='tdb') + times = Time(mjd, format='mjd', scale='tdb') # convert to TDB + coord = SkyCoord(ra, dec, unit=(units.deg, units.deg)) direction = coord.cartesian.xyz.value north = np.array([0., 0., 1.]) @@ -58,13 +70,12 @@ def parallax_in_direction(RA, Dec, mjd, obsLocation='earth', PA=0): PA_rad = np.pi/180.0 * PA x = -e.value*np.cos(PA_rad) + n.value*np.sin(PA_rad) y = e.value*np.sin(PA_rad) + n.value*np.cos(PA_rad) - pvec = np.array([x, y]).T - + return pvec -def dparallax_dt_in_direction(RA, Dec, mjd, obsLocation='earth'): +def dparallax_dt_in_direction(ra, dec, mjd, obsLocation='earth'): """ R.A. in degrees. (J2000) Dec. in degrees. (J2000) @@ -76,8 +87,8 @@ def dparallax_dt_in_direction(RA, Dec, mjd, obsLocation='earth'): """ # print('parallax_in_direction: len(t) = ', len(mjd)) # Munge inputs into astropy format. - times = Time(mjd + 2400000.5, format='jd', scale='tdb') - coord = SkyCoord(RA, Dec, unit=(units.deg, units.deg)) + times = Time(mjd, format='mjd', scale='tdb') + coord = SkyCoord(ra, dec, unit=(units.deg, units.deg)) direction = coord.cartesian.xyz.value north = np.array([0., 0., 1.]) diff --git a/flystar/startables.py b/flystar/startables.py index 08461a1..661382f 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -730,19 +730,19 @@ def fit_motion_model( unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} - start_time = time.time() for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance motion_model_instance = input_mm_map[unique_motion_model] # Initialize arrays to store results n_stars_this_model = len(unique_index) - n_params = len(motion_model_instance.fitter_param_names) + n_params = len(motion_model_instance.fit_param_names) params_array = np.full((n_stars_this_model, n_params), fill_value, dtype=float) param_errs_array = np.full((n_stars_this_model, n_params), np.inf, dtype=float) chi2_x_array = np.full(n_stars_this_model, np.nan, dtype=float) chi2_y_array = np.full(n_stars_this_model, np.nan, dtype=float) + # Expensive for loop! Prepare everything beforehand to speed up. for idx, i_star in enumerate(tqdm(unique_index, disable=not show_progress, desc=f"Fitting motion model {unique_motion_model}")): # Fit the star params, param_errs, chi2_x, chi2_y = motion_model_instance.fit( @@ -759,14 +759,13 @@ def fit_motion_model( fill_value=fill_value, verbose=verbose ) - # print(f'{params_array.shape=}, {idx=}, {params=}') params_array[idx] = params param_errs_array[idx] = param_errs chi2_x_array[idx] = chi2_x chi2_y_array[idx] = chi2_y # Store results back to the table - param_names = motion_model_instance.fitter_param_names + param_names = motion_model_instance.fit_param_names for j, param_name in enumerate(param_names): self[param_name][unique_index] = params_array[:, j] self[param_name + '_err'][unique_index] = param_errs_array[:, j] @@ -1077,7 +1076,7 @@ def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scip # # # Load up any prior information on parameters for this model. # param_dict = {} -# for par in modClass.fitter_param_names+modClass.fixed_param_names: +# for par in modClass.fit_param_names+modClass.fixed_param_names: # if ~np.isnan(self[par][ss]): # param_dict[par] = self[par][ss] @@ -1094,8 +1093,8 @@ def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scip self['n_params'][ss] = mod.n_params # Save parameters and errors to table. - for pp in range(len(mod.fitter_param_names)): - par = mod.fitter_param_names[pp] + for pp in range(len(mod.fit_param_names)): + par = mod.fit_param_names[pp] par_err = par + '_err' self[par][ss] = params[pp] self[par_err][ss] = param_errs[pp] @@ -1131,7 +1130,7 @@ def get_star_positions_at_time(self, t, motion_model_dict, allow_alt_models=True mod = motion_model_dict[mm] # Set up parameters param_dict = {} - for par in mod.fitter_param_names + mod.fixed_param_names + [pm+'_err' for pm in mod.fitter_param_names]: + for par in mod.fit_param_names + mod.fixed_param_names + [pm+'_err' for pm in mod.fit_param_names]: param_dict[par] = self[par][idx] x[idx],y[idx],xe[idx],ye[idx] = mod.get_batch_pos_at_time(t,**param_dict) except: @@ -1211,7 +1210,7 @@ def fit_velocities_all_detected(self, motion_model_to_fit, weighting='var', use_ detected_in_all_epochs = np.logical_and(valid_xe, valid_ye) N = len(self['x'][select_stars, :]) - fit_params = motion_model_to_fit.fitter_param_names + fit_params = motion_model_to_fit.fit_param_names param_data = {p: np.zeros(N) for p in fit_params} param_data.update({p+'_err': np.zeros(N) for p in fit_params}) param_data.update({p: np.zeros(N) for p in motion_model_to_fit.fixed_param_names}) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 9b65eb6..195a67b 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -990,7 +990,7 @@ def make_fake_starlists_poly1_par(seed=-1): for ss in range(len(times)): dt = times[ss] - lis['t0'] - par_mod = motion_model.Parallax(PA=0,RA=18.0, Dec=-30.0) + par_mod = motion_model.Parallax(pa=0,ra=18.0, dec=-30.0) par_mod_dat = par_mod.get_batch_pos_at_time(dt+lis['t0'], x0=lis['x0'],vx=lis['vx']/1e3, pi=lis['pi'], y0=lis['y0'], vy=lis['vy']/1e3, t0=lis['t0']) x,y = par_mod_dat[0], par_mod_dat[1] diff --git a/flystar/tests/test_motion_model.py b/flystar/tests/test_motion_model.py index 2fa1b57..ccbba68 100755 --- a/flystar/tests/test_motion_model.py +++ b/flystar/tests/test_motion_model.py @@ -1,27 +1,35 @@ from flystar import motion_model import numpy as np -import pytest import matplotlib.pyplot as plt from scipy.optimize import curve_fit def within_error(true_val, fit_val, fit_err, n_sigma=3): #print('True', true_val, 'Fit', fit_val, 'Fit err', fit_err) - return (true_val < (fit_val+fit_err*n_sigma)) & (true_val> (fit_val-fit_err*n_sigma)) + # return (true_val < (fit_val + fit_err*n_sigma)) & (true_val > (fit_val - fit_err*n_sigma)) + return np.abs(true_val - fit_val) <= n_sigma*fit_err def test_Fixed(): # Test handling of a single star true_params = {'x0': 1.0, 'y0':0.5, 'x0_err':0.1, 'y0_err':0.1} mod = motion_model.Fixed() - param_list = mod.fitter_param_names + param_list = mod.fit_param_names fixed_param_list = mod.fixed_param_names # Confirm return of proper values for single t and array t - x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], 0.0) + # x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + # [true_params[p] for p in fixed_param_list], 0.0) + x_t, y_t = mod.model( + 0.0, + fit_params=np.array([true_params['x0'], true_params['y0']]).T + ) assert x_t==true_params['x0'] assert y_t==true_params['y0'] - x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], - [0.0,2025.0,10000]) + # x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], + # [true_params[p] for p in fixed_param_list], + # [0.0,2025.0,10000]) + x_t, y_t = mod.model( + [0.0,2025.0,10000], + fit_params=np.array([true_params['x0'], true_params['y0']]).T + ) assert (x_t==true_params['x0']).all() assert (y_t==true_params['y0']).all() @@ -32,16 +40,26 @@ def test_Fixed(): y0_err_batch = np.repeat(0.1, 50) # Single epoch t_batch=2020.0 - x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) + # x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + # x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( + t_batch, + fit_params=np.array([x0_batch, y0_batch]).T, + fit_param_errs=np.array([x0_err_batch, y0_err_batch]).T + ) assert (x_t_batch==x0_batch).all() assert (y_t_batch==y0_batch).all() assert (x_err_t_batch==x0_err_batch).all() assert (y_err_t_batch==y0_err_batch).all() # Multiple times t_batch = np.arange(2015.0,2025.0, 0.5) - x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) + # x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, + # x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( + t_batch, + fit_params=np.array([x0_batch, y0_batch]).T, + fit_param_errs=np.array([x0_err_batch, y0_err_batch]).T + ) assert (x_t_batch==np.array([np.repeat(x0_batch_i, len(t_batch)) for x0_batch_i in x0_batch])).all() assert (y_t_batch==np.array([np.repeat(y0_batch_i, len(t_batch)) for y0_batch_i in y0_batch])).all() assert (x_err_t_batch==np.array([np.repeat(x0_err_batch_i, len(t_batch)) for x0_err_batch_i in x0_err_batch])).all() @@ -50,15 +68,22 @@ def test_Fixed(): # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter - x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], t) + # x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + # [true_params[p] for p in fixed_param_list], t) + x_true, y_true = mod.model( + t, + fit_params=np.array([true_params['x0'], true_params['y0']]) + ) x_sim = np.random.normal(x_true, true_params['x0_err']) y_sim = np.random.normal(y_true, true_params['y0_err']) # Run fit - params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, - np.ones(len(t))*true_params['x0_err'], - np.ones(len(t))*true_params['y0_err'], - np.nan) + params, param_errs, _ , _ = mod.fit( + t, + x_sim,y_sim, + xe=np.ones(len(t))*true_params['x0_err'], + ye=np.ones(len(t))*true_params['y0_err'], + t0=np.nan + ) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) @@ -69,21 +94,25 @@ def test_Linear(): 'vx':0.2, 'vy':0.5, 'vx_err':0.05, 'vy_err':0.05, 't0':2025.0} mod = motion_model.Linear() - param_list = mod.fitter_param_names + param_list = mod.fit_param_names fixed_param_list = mod.fixed_param_names # Confirm return of proper values for single t=t0 and array t - x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], - true_params['t0']) + x_t, y_t = mod.model( + t=true_params['t0'], + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + ) assert x_t==true_params['x0'] assert y_t==true_params['y0'] t_arr = np.array([2010.0,true_params['t0'],2030.0]) - x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], - t_arr) + x_t, y_t = mod.model( + t=t_arr, + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + ) assert (x_t==(true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx'])).all() assert (y_t==(true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy'])).all() - + # Check behavior of get_batch_pos_at_time x0_batch = np.random.uniform(-2.0,2.0, 50) y0_batch = np.random.uniform(-2.0,2.0, 50) @@ -96,20 +125,24 @@ def test_Linear(): t0_batch = np.repeat(2025.0,50) # Single epoch t_batch=2020.0 - x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, - vx=vx_batch, vy=vy_batch, vx_err=vx_err_batch, vy_err=vy_err_batch, - t0=t0_batch) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( + t=t_batch, + fit_params=np.array([x0_batch, vx_batch, y0_batch, vy_batch]).T, + fit_param_errs=np.array([x0_err_batch, vx_err_batch, y0_err_batch, vy_err_batch]).T, + fixed_params=t0_batch + ) assert (x_t_batch==(x0_batch+(t_batch-t0_batch)*vx_batch)).all() assert (y_t_batch==(y0_batch+(t_batch-t0_batch)*vy_batch)).all() assert (x_err_t_batch==np.hypot(x0_err_batch, (t_batch-t0_batch)*vx_err_batch)).all() assert (y_err_t_batch==np.hypot(y0_err_batch, (t_batch-t0_batch)*vy_err_batch)).all() # Multiple times t_batch = np.arange(2015.0,2025.0, 0.5) - x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, - vx=vx_batch, vy=vy_batch, vx_err=vx_err_batch, vy_err=vy_err_batch, - t0=t0_batch) + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( + t=t_batch, + fit_params=np.array([x0_batch, vx_batch, y0_batch, vy_batch]).T, + fit_param_errs=np.array([x0_err_batch, vx_err_batch, y0_err_batch, vy_err_batch]).T, + fixed_params=t0_batch + ) assert (x_t_batch==np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx_batch[i] for i in range(len(x0_batch))])).all() assert (y_t_batch==np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy_batch[i] for i in range(len(x0_batch))])).all() assert (x_err_t_batch==np.array([np.hypot(x0_err_batch[i], (t_batch-t0_batch[i])*vx_err_batch[i]) for i in range(len(x0_batch))])).all() @@ -118,13 +151,24 @@ def test_Linear(): # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter - x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list],t) + # x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], + # [true_params[p] for p in fixed_param_list],t) + x_true, y_true = mod.model( + t=t, + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + ) x_sim = np.random.normal(x_true, 0.05) y_sim = np.random.normal(y_true, 0.05) # Run fit - params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, - np.repeat(0.05, len(t)), np.repeat(0.05,len(t)), true_params['t0']) + params, param_errs, _, _ = mod.fit( + t=t, + x=x_sim, + y=y_sim, + xe=np.repeat(0.05, len(t)), + ye=np.repeat(0.05,len(t)), + t0=true_params['t0'] + ) print(param_errs) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) @@ -138,11 +182,11 @@ def test_Linear(): x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0'],bootstrap=10) + params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0'],bootstrap=10) print(param_errs) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) - + # # Test fitter for 2 pts # t = np.array([2015.0,2025.0]) # # Get values from model and add scatter @@ -169,20 +213,24 @@ def test_Acceleration(): 'ax':0.1, 'ay':-0.1, 'ax_err':0.02, 'ay_err':0.02, 't0':2025.0} mod = motion_model.Acceleration() - param_list = mod.fitter_param_names + param_list = mod.fit_param_names fixed_param_list = mod.fixed_param_names # Confirm return of proper values for single t=t0 and array t - x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], - true_params['t0']) - assert x_t==true_params['x0'] - assert y_t==true_params['y0'] - t_arr = np.array([2010.0,true_params['t0'],2030.0]) - x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list], - t_arr) - assert (x_t==(true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ax'])).all() - assert (y_t==(true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ay'])).all() + x_t, y_t = mod.model( + t=true_params['t0'], + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + ) + np.testing.assert_allclose(x_t, true_params['x0']) + np.testing.assert_allclose(y_t, true_params['y0']) + t_arr = np.array([2010.0, true_params['t0'], 2030.0]) + x_t, y_t = mod.model( + t=t_arr, + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + ) + np.testing.assert_allclose(x_t, true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ax']) + np.testing.assert_allclose(y_t, true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ay']) # Check behavior of get_batch_pos_at_time x0_batch = np.random.uniform(-2.0,2.0, 50) @@ -200,43 +248,56 @@ def test_Acceleration(): t0_batch = np.repeat(2025.0,50) # Single epoch t_batch=2020.0 - x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, - vx0=vx0_batch, vy0=vy0_batch, vx0_err=vx0_err_batch, vy0_err=vy0_err_batch, - ax=ax_batch, ay=ay_batch, ax_err=ax_err_batch, ay_err=ay_err_batch, - t0=t0_batch) - assert (x_t_batch==(x0_batch + (t_batch-t0_batch)*vx0_batch + 0.5*(t_batch-t0_batch)**2*ax_batch)).all() - assert (y_t_batch==(y0_batch + (t_batch-t0_batch)*vy0_batch + 0.5*(t_batch-t0_batch)**2*ay_batch)).all() - assert (x_err_t_batch==np.sqrt(x0_err_batch**2 + ((t_batch-t0_batch)*vx0_err_batch)**2 + - (0.5*(t_batch-t0_batch)**2*ax_err_batch)**2)).all() - assert (y_err_t_batch==np.sqrt(y0_err_batch**2 + ((t_batch-t0_batch)*vy0_err_batch)**2 + - (0.5*(t_batch-t0_batch)**2*ay_err_batch)**2)).all() + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( + t=t_batch, + fit_params=np.array([x0_batch, vx0_batch, ax_batch, y0_batch, vy0_batch, ay_batch]).T, + fit_param_errs=np.array([x0_err_batch, vx0_err_batch, ax_err_batch, y0_err_batch, vy0_err_batch, ay_err_batch]).T, + fixed_params=t0_batch + ) + np.testing.assert_allclose(x_t_batch, x0_batch + (t_batch-t0_batch)*vx0_batch + 0.5*(t_batch-t0_batch)**2*ax_batch) + np.testing.assert_allclose(y_t_batch, y0_batch + (t_batch-t0_batch)*vy0_batch + 0.5*(t_batch-t0_batch)**2*ay_batch) + np.testing.assert_allclose(x_err_t_batch, np.sqrt(x0_err_batch**2 + ((t_batch-t0_batch)*vx0_err_batch)**2 + + (0.5*(t_batch-t0_batch)**2*ax_err_batch)**2)) + np.testing.assert_allclose(y_err_t_batch, np.sqrt(y0_err_batch**2 + ((t_batch-t0_batch)*vy0_err_batch)**2 + + (0.5*(t_batch-t0_batch)**2*ay_err_batch)**2)) + # Multiple times t_batch = np.arange(2015.0,2025.0, 0.5) - x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch, - vx0=vx0_batch, vy0=vy0_batch, vx0_err=vx0_err_batch, vy0_err=vy0_err_batch, - ax=ax_batch, ay=ay_batch, ax_err=ax_err_batch, ay_err=ay_err_batch, - t0=t0_batch) - assert (x_t_batch==np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ax_batch[i] for i in range(len(x0_batch))])).all() - assert (y_t_batch==np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ay_batch[i] for i in range(len(x0_batch))])).all() - assert (x_err_t_batch==np.array([np.sqrt(x0_err_batch[i]**2 + ((t_batch-t0_batch[i])*vx0_err_batch[i])**2 + (0.5*(t_batch-t0_batch[i])**2*ax_err_batch[i])**2) for i in range(len(x0_batch))])).all() - assert (y_err_t_batch==np.array([np.sqrt(y0_err_batch[i]**2 + ((t_batch-t0_batch[i])*vy0_err_batch[i])**2 + (0.5*(t_batch-t0_batch[i])**2*ay_err_batch[i])**2) for i in range(len(x0_batch))])).all() - + x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( + t=t_batch, + fit_params=np.array([x0_batch, vx0_batch, ax_batch, y0_batch, vy0_batch, ay_batch]).T, + fit_param_errs=np.array([x0_err_batch, vx0_err_batch, ax_err_batch, y0_err_batch, vy0_err_batch, ay_err_batch]).T, + fixed_params=t0_batch + ) + np.testing.assert_allclose(x_t_batch, np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ax_batch[i] for i in range(len(x0_batch))])) + np.testing.assert_allclose(y_t_batch, np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ay_batch[i] for i in range(len(x0_batch))])) + np.testing.assert_allclose(x_err_t_batch, np.array([np.sqrt(x0_err_batch[i]**2 + ((t_batch-t0_batch[i])*vx0_err_batch[i])**2 + (0.5*(t_batch-t0_batch[i])**2*ax_err_batch[i])**2) for i in range(len(x0_batch))])) + np.testing.assert_allclose(y_err_t_batch, np.array([np.sqrt(y0_err_batch[i]**2 + ((t_batch-t0_batch[i])*vy0_err_batch[i])**2 + (0.5*(t_batch-t0_batch[i])**2*ay_err_batch[i])**2) for i in range(len(x0_batch))])) + # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter - x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list],t) - x_true_err = np.sqrt(true_params['x0_err']**2 + ((t-true_params['t0'])*true_params['vx0_err'])**2 + - (0.5*(t-true_params['t0'])**2*true_params['ax_err'])**2) - y_true_err = np.sqrt(true_params['y0_err']**2 + ((t-true_params['t0'])*true_params['vy0_err'])**2 + - (0.5*(t-true_params['t0'])**2*true_params['ay_err'])**2) + x_true, y_true = mod.model( + t=t, + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + ) + x_true_err = np.sqrt(true_params['x0_err']**2 + ((t - true_params['t0']) * true_params['vx0_err'])**2 + + (0.5*(t - true_params['t0'])**2 * true_params['ax_err'])**2) + y_true_err = np.sqrt(true_params['y0_err']**2 + ((t - true_params['t0']) * true_params['vy0_err'])**2 + + (0.5*(t - true_params['t0'])**2 * true_params['ay_err'])**2) x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - mod_fit = motion_model.Acceleration(t0=true_params['t0']) - params, param_errs = mod_fit.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) + mod_fit = motion_model.Acceleration() + params, param_errs, _, _ = mod_fit.fit( + t=t, + x=x_sim, + y=y_sim, + xe=x_true_err, + ye=y_true_err, + t0=true_params['t0'] + ) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) @@ -248,7 +309,7 @@ def test_Parallax(): 'pi':0.5, 'RA':17.76, 'Dec':-28.933, 'PA':0, 't0':2020.0} mod = motion_model.Parallax(**{'RA':17.76, 'Dec':-28.933, 'PA':0}) - param_list = mod.fitter_param_names + param_list = mod.fit_param_names fixed_param_list = mod.fixed_param_names print(param_list) @@ -261,7 +322,7 @@ def test_Parallax(): x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - params, param_errs = mod.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) + params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) @@ -270,16 +331,25 @@ def test_Parallax_PA(): # Set PA=0 model x0, y0 = 2.0, -1.0 vx, vy = 0.2, 0.5 - RA, Dec = 17.76, -28.933 + ra, dec = 17.76, -28.933 pi = 0.5 - mod_pa0 = motion_model.Parallax(RA=RA,Dec=Dec, PA=0) + mod_pa0 = motion_model.Parallax(ra=ra, dec=dec, pa=0) # Set PA=90 model with equivalent parameters in that frame - mod_pa90 = motion_model.Parallax(RA=RA,Dec=Dec,t0=2020.0, PA=90) - t_set = np.arange(2018,2024,0.01) - dat_pa0 = mod_pa0.get_pos_at_time([x0,vx,y0,vy,pi],[2020.0],t_set) - dat_pa90 = mod_pa90.get_pos_at_time([y0,vy,-x0,-vx,pi],[2020.0],t_set) - assert (np.abs(dat_pa0[0]-(-dat_pa90[1]))<1e-10).all() - assert (np.abs(dat_pa0[1]-(dat_pa90[0]))<1e-10).all() + mod_pa90 = motion_model.Parallax(ra=ra, dec=dec, pa=90) + + t_set = np.arange(2018, 2024, 0.01) + dat_pa0 = mod_pa0.model( + t = t_set, + fit_params = np.array([x0, vx, y0, vy, pi]).T, + fixed_params = [2020.0] + ) + dat_pa90 = mod_pa90.model( + t = t_set, + fit_params = np.array([y0, vy, -x0, -vx, pi]).T, + fixed_params = [2020.0] + ) + np.testing.assert_allclose(dat_pa0[0], -dat_pa90[1], atol=1e-10) + np.testing.assert_allclose(dat_pa0[1], dat_pa90[0], atol=1e-10) def test_Linear_fit_vs_scipy(): @@ -431,38 +501,38 @@ def linear(t, c0, c1): y0_scipy[i], y0e_scipy[i] = popt_y[0], np.sqrt(pcov_y[0, 0]) # motion_model without scipy - params, param_errs = mm.fit_motion_model( + params, param_errs = mm.fit( t[~mask[i]], x[i][~mask[i]], y[i][~mask[i]], xe[i][~mask[i]], ye[i][~mask[i]], t0[i], weighting='var', use_scipy=False, absolute_sigma=absolute_sigma ) - vx_mm[i] = params[mm.fitter_param_names.index('vx')] - vy_mm[i] = params[mm.fitter_param_names.index('vy')] - vxe_mm[i] = param_errs[mm.fitter_param_names.index('vx')] - vye_mm[i] = param_errs[mm.fitter_param_names.index('vy')] - x0_mm[i] = params[mm.fitter_param_names.index('x0')] - y0_mm[i] = params[mm.fitter_param_names.index('y0')] - x0e_mm[i] = param_errs[mm.fitter_param_names.index('x0')] - y0e_mm[i] = param_errs[mm.fitter_param_names.index('y0')] + vx_mm[i] = params[mm.fit_param_names.index('vx')] + vy_mm[i] = params[mm.fit_param_names.index('vy')] + vxe_mm[i] = param_errs[mm.fit_param_names.index('vx')] + vye_mm[i] = param_errs[mm.fit_param_names.index('vy')] + x0_mm[i] = params[mm.fit_param_names.index('x0')] + y0_mm[i] = params[mm.fit_param_names.index('y0')] + x0e_mm[i] = param_errs[mm.fit_param_names.index('x0')] + y0e_mm[i] = param_errs[mm.fit_param_names.index('y0')] # motion_model with scipy - params, param_errs = mm.fit_motion_model( + params, param_errs = mm.fit( t[~mask[i]], x[i][~mask[i]], y[i][~mask[i]], xe[i][~mask[i]], ye[i][~mask[i]], t0[i], weighting='var', use_scipy=True, absolute_sigma=absolute_sigma ) - vx_mm_scipy[i] = params[mm.fitter_param_names.index('vx')] - vy_mm_scipy[i] = params[mm.fitter_param_names.index('vy')] - vxe_mm_scipy[i] = param_errs[mm.fitter_param_names.index('vx')] - vye_mm_scipy[i] = param_errs[mm.fitter_param_names.index('vy')] - x0_mm_scipy[i] = params[mm.fitter_param_names.index('x0')] - y0_mm_scipy[i] = params[mm.fitter_param_names.index('y0')] - x0e_mm_scipy[i] = param_errs[mm.fitter_param_names.index('x0')] - y0e_mm_scipy[i] = param_errs[mm.fitter_param_names.index('y0')] + vx_mm_scipy[i] = params[mm.fit_param_names.index('vx')] + vy_mm_scipy[i] = params[mm.fit_param_names.index('vy')] + vxe_mm_scipy[i] = param_errs[mm.fit_param_names.index('vx')] + vye_mm_scipy[i] = param_errs[mm.fit_param_names.index('vy')] + x0_mm_scipy[i] = params[mm.fit_param_names.index('x0')] + y0_mm_scipy[i] = params[mm.fit_param_names.index('y0')] + x0e_mm_scipy[i] = param_errs[mm.fit_param_names.index('x0')] + y0e_mm_scipy[i] = param_errs[mm.fit_param_names.index('y0')] rtol = 1e-5 # np.testing.assert_allclose(vx_velfit, vx_scipy, rtol=rtol) diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index cf3be71..1b8e5cb 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -305,7 +305,7 @@ def test_fit_velocities(): tab = table.vstack((tab1, tab2, tab3)) tab.meta = tab1.meta - tab.fit_velocities(verbose=True) + tab.fit_motion_model(verbose=True) # Test creation of new variables assert len(tab['vx']) == len(tab) @@ -313,7 +313,7 @@ def test_fit_velocities(): assert len(tab['vx_err']) == len(tab) assert len(tab['vy_err']) == len(tab) assert len(tab['n_fit']) == len(tab) - assert tab.meta['n_fit_bootstrap'] == 0 + assert tab.meta['n_bootstrap'] == 0 # Test no-fit for stars with N<2 epochs. n_epochs = (tab['x'] >= 0).sum(axis=1) @@ -365,7 +365,7 @@ def test_fit_velocities(): tab_b.meta = tab1.meta tab_b.fit_velocities(verbose=True, bootstrap=50) - assert tab_b.meta['n_fit_bootstrap'] == 50 + assert tab_b.meta['n_bootstrap'] == 50 assert tab_b['x0_err'][0] > tab['x0_err'][0] assert tab_b['vx_err'][0] > tab['vx_err'][0] assert tab_b['y0_err'][0] > tab['y0_err'][0] @@ -559,10 +559,10 @@ def make_star_table(): x=x_in, y=y_in, m=m_in, xe=xe_in, ye=ye_in, me=me_in, n=n_in, - ref_list=1, - list_times=starlist_times, - list_names=starlist_names + ref_list=1 ) + startable.meta['LIST_TIMES'] = starlist_times + startable.meta['LIST_NAMES'] = starlist_names return startable From e0e0c2c13573ba5d199aa3019a0df2d14fa67b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 25 Nov 2025 15:54:47 -0800 Subject: [PATCH 18/94] MotionModel acceleration with passed testings. Merged get_pos_at_time and get_batch_pos_at_time into model; Replaced MotionModel.fit_motion_model with MotionModel.fit; Rewrote and accelerated StarTable.fit_velocities with StarTable.fit_motion_model --- flystar/motion_model.py | 479 +++-- flystar/parallax.py | 41 +- flystar/startables.py | 119 +- flystar/tests/test_all_detected.fits | 2911 -------------------------- flystar/tests/test_motion_model.py | 411 +--- flystar/tests/test_startable.py | 182 +- 6 files changed, 595 insertions(+), 3548 deletions(-) delete mode 100644 flystar/tests/test_all_detected.fits diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 5a542e0..5ccb6ee 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -1,6 +1,5 @@ import numpy as np from abc import ABC -import pdb from flystar import parallax from astropy.time import Time from scipy.optimize import curve_fit, OptimizeWarning @@ -36,17 +35,19 @@ def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) def run_fit( - self, t, x, y, xe, ye, t0, + self, t, x, y, xe, ye, + fixed_params_dict=None, weighting='var', use_scipy=True, absolute_sigma=True, + params_guess=None, fill_value=np.nan, verbose=True ): # Run a single fit (used both for overall fit + bootstrap iterations) return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf), np.nan, np.nan - def get_weights(self, xe, ye, weighting='var'): + def calc_weights(self, xe, ye, weighting='var'): if weighting=='std': return 1./xe, 1./ye elif weighting=='var': @@ -56,12 +57,15 @@ def get_weights(self, xe, ye, weighting='var'): return 1./xe**2, 1./ye**2 def fit( - self, t, x, y, xe, ye, t0, - bootstrap=0, + self, t, x, y, xe, ye, + fixed_params_dict=None, weighting='var', use_scipy=True, absolute_sigma=True, fill_value=np.nan, + params_guess=None, + return_chi2=False, + bootstrap=0, verbose=True, seed=None ): @@ -79,10 +83,8 @@ def fit( Uncertainty of x ye : array-like Uncertainty of y - t0 : array-like - Reference time for fitting, i.e. dt = t - t0 will be used in fitting - bootstrap : int, optional - Bootstrapping uncertainties, by default 0 + fixed_params_dict : dict, optional + Dictionary of fixed parameters, see each motion model's fixed_param_names for details, by default None weighting : str, optional Use standard error weighting ('std': w=1/xe, 1/ye) or variance weighting ('var': w=1/xe**2, 1/ye**2), by default 'var' use_scipy : bool, optional @@ -91,6 +93,12 @@ def fit( Absolute sigma. See scipy.optimize.curve_fit for details, by default True fill_value : float, optional Fill value for parameters when not enough data points to fit model, by default np.nan + params_guess : array-like, optional + Initial guess for the fit parameters used in scipy curve_fit, by default None + return_chi2 : bool, optional + Return chi^2 values along with parameters and uncertainties in params, param_errs, chi2_x, chi2_y, by default False + bootstrap : int, optional + Bootstrapping uncertainties, by default 0 verbose : bool, optional Print warning messages, by default True seed : int, optional @@ -100,39 +108,66 @@ def fit( params, params_err, chi2_x, chi2_y Parameters, uncertainties, and chi squares. The corresponding parameter names are in self.fit_param_names. """ - params, param_errs, chi2_x, chi2_y = self.run_fit( - t, x, y, xe, ye, t0=t0, + fit_result = self.run_fit( + t, x, y, xe, ye, + fixed_params_dict=fixed_params_dict, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, fill_value=fill_value, + params_guess=params_guess, + return_chi2=return_chi2, verbose=verbose ) - if seed is not None: - rng = np.random.default_rng(seed) + + if return_chi2: + params, param_errs, chi2_x, chi2_y = fit_result else: - rng = np.random.default_rng() + params, param_errs = fit_result + # Bootstrap errors n_obs = len(t) + if bootstrap > 0 and n_obs > (self.n_params): + # Use m out of n bootstrap to ensure enough unique points + m = np.max([self.n_params, int(len(t) * 0.8)]) + rng = np.random.default_rng(seed) edx = np.arange(n_obs, dtype=int) + # Precompute All Bootstrap Draws at Once + bdx_all = rng.choice(edx, size=(bootstrap, m), replace=True) + + # Count unique indices per bootstrap sample + uniq_counts = np.apply_along_axis(lambda x: len(np.unique(x)), 1, bdx_all) + + # Identify invalid samples + bad = uniq_counts < self.n_params + n_bad = bad.sum() + + while n_bad > 0: + # Resample only bad rows + bdx_all[bad] = rng.choice(edx, size=(n_bad, m), replace=True) + uniq_counts = np.apply_along_axis(lambda x: len(np.unique(x)), 1, bdx_all) + bad = uniq_counts < self.n_params + n_bad = bad.sum() + bb_params = [] bb_params_errs = [] - for bb in range(bootstrap): - bdx = rng.choice(edx, n_obs, replace=False) - params_bdx, param_errs_bdx, chi2x_bdx, chi2y_bdx = self.run_fit( - t[bdx], x[bdx], y[bdx], xe[bdx], ye[bdx], t0=t0, + for bdx in bdx_all: + params_bdx, param_errs_bdx = self.run_fit( + t[bdx], x[bdx], y[bdx], xe[bdx], ye[bdx], + fixed_params_dict=fixed_params_dict, weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, params_guess=params, fill_value=fill_value, + return_chi2=False, verbose=verbose ) bb_params.append(params_bdx) bb_params_errs.append(param_errs_bdx) - + # Save the errors from the bootstrap param_errs = np.std(bb_params, axis=0) @@ -140,14 +175,18 @@ def fit( inf_errs = [np.all(arr==np.inf) for arr in np.transpose(np.array(bb_params_errs))] param_errs[inf_errs] = 0.0 - return params, param_errs, chi2_x, chi2_y + if return_chi2: + return params, param_errs, chi2_x, chi2_y + else: + return params, param_errs + - def calc_chi2(self, fit_params, fixed_params, t, x, y, xe, ye, reduced=False): + def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced=False): """ Get the chi^2 value for the current MM and the input data. """ - x_pred, y_pred = self.model(t, fit_params, fixed_params) + x_pred, y_pred = self.model(t, fit_params, fixed_params_dict) chi2x = np.sum((x - x_pred)**2 / xe**2) chi2y = np.sum((y - y_pred)**2 / ye**2) if reduced: @@ -174,23 +213,86 @@ def __init__(self, **kwargs): def model_fit(self, dt): return np.full_like(dt, np.nan) - def model(self, t, fit_params, fixed_params, fixed_param_errs=None): + def model(self, t, fit_params, fixed_params_dict, fixed_param_errs=None): + """Predicted positions (and uncertainties, if fit_param_errs is provided) at time t of Empty model. + + Parameters + ---------- + t : float or array-like + Time array, shape (N_times,) + fit_params : array-like + Fit parameters, shape (N_params,) or (N_stars, N_params) + fixed_params_dict : dict + Dictionary of fixed parameters, not applicable for Empty model + fixed_param_errs : array-like, optional + Uncertainties for fixed parameters, not applicable for Empty model, by default None + + Returns + ------- + x, y (, xe, ye) + Predicted position (and uncertainties) of Empty model, shape (N_times,) + """ + t = np.atleast_1d(t) + if fixed_param_errs is None: + return np.full_like(t, np.nan), np.full_like(t, np.nan) return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) def run_fit( - self, t, x, y, xe, ye, t0, + self, t, x, y, xe, ye, + fixed_params_dict=None, weighting='var', use_scipy=True, absolute_sigma=True, fill_value=np.nan, + params_guess=None, + return_chi2=False, verbose=True ): + """Fit stellar motion parameters + + Parameters + ---------- + t : float or array-like + Time array, shape (N_times,) + x : array-like + Observed x positions, shape (N_times,) + y : array-like + Observed y positions, shape (N_times,) + xe : array-like + Observed uncertainties in x positions, shape (N_times,) + ye : array-like + Observed uncertainties in y positions, shape (N_times,) + fixed_params_dict : dict, optional + Dictionary of fixed parameters, not applicable for Empty model, by default None + weighting : str, optional + Weighting scheme to use, 'var' or 'std', by default 'var' + use_scipy : bool, optional + Whether to use scipy.optimize for fitting, by default True + absolute_sigma : bool, optional + Whether to treat sigma as absolute, by default True + fill_value : float, optional + Value to fill parameters with when fitting is not possible, by default np.nan + params_guess : array-like, optional + Initial guess for parameters, by default None + return_chi2 : bool, optional + Whether to return chi-squared value, by default False + verbose : bool, optional + Whether to print verbose output, by default True + + Returns + ------- + params, param_errors (, chi2_x, chi2_y) + Fitted parameters, their uncertainties, and optionally chi-squared values + """ if verbose: warnings.warn(f"Empty data cannot be fit. Setting parameters to {fill_value} and uncertainties to np.inf.", OptimizeWarning, stacklevel=2) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) - return params, param_errors, np.nan, np.nan + if return_chi2: + return params, param_errors, np.nan, np.nan + else: + return params, param_errors class Fixed(MotionModel): @@ -230,7 +332,7 @@ def model_fit(self, dt, x0): x0 = np.asarray(x0) return np.broadcast_to(x0[:, np.newaxis], (x0.shape[0], dt.shape[0])) if x0.ndim > 0 else np.full_like(dt, x0) - def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): + def model(self, t, fit_params, fixed_params_dict=None, fit_param_errs=None): """Predicted positions (and uncertainties, if fit_param_errs is provided) at time t of Fixed model. Parameters @@ -238,8 +340,8 @@ def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): t : float or array-like Time array, shape (N_times,) fit_params : array-like - Fit parameters x0, y0 in shape (N_params,) or (N_stars, N_params) - fixed_params : array-like, optional + x0, y0 in shape (N_params,) or (N_stars, N_params) + fixed_params_dict : dict, optional Not applicable for Fixed, by default None fit_param_errs : array-like, optional Uncertainties for x0, y0 in shape (N_params,) or (N_stars, N_params), by default None @@ -283,12 +385,14 @@ def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): return x, y, x_err, y_err def run_fit( - self, t, x, y, xe, ye, t0, + self, t, x, y, xe, ye, + fixed_params_dict=None, weighting='var', use_scipy=True, absolute_sigma=True, - params_guess=None, fill_value=np.nan, + params_guess=None, + return_chi2=False, verbose=True ): if verbose and (not use_scipy): @@ -309,7 +413,7 @@ def run_fit( # degree_of_freedom >= 0 # Calculate weighted average position - x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) + x_wt, y_wt = self.calc_weights(xe, ye, weighting=weighting) x_wt_norm = x_wt / np.sum(x_wt) y_wt_norm = y_wt / np.sum(y_wt) x0 = np.average(x, weights=x_wt) @@ -320,7 +424,8 @@ def run_fit( params = np.array([x0, y0]) param_errors = np.array([x0e, y0e]) - chi2x, chi2y = self.calc_chi2(params, [], t, x, y, xe, ye) + if (not absolute_sigma) or return_chi2: + chi2x, chi2y = self.calc_chi2(t, x, y, xe, ye, params) if not absolute_sigma: if degree_of_freedom > 0: @@ -338,7 +443,10 @@ def run_fit( # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit param_errors = np.full_like(param_errors, np.inf) - return params, param_errors, chi2x, chi2y + if return_chi2: + return params, param_errors, chi2x, chi2y + else: + return params, param_errors class Linear(MotionModel): """ @@ -349,7 +457,6 @@ class Linear(MotionModel): # Number of fit parameters/required observations in each direction n_params = int(np.ceil(len(fit_param_names) / 2)) - name = "Linear" def __init__(self, **kwargs): @@ -377,7 +484,7 @@ def model_fit(self, dt, x0, v): """ return x0 + v * dt - def model(self, t, fit_params, fixed_params, fit_param_errs=None): + def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Linear model. Parameters @@ -385,9 +492,9 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): t : float or array-like Time(s) at which to evaluate the model fit_params : array-like - Fit parameters x0, vx, y0, vy in shape (N_params,) or (N_stars, N_params) - fixed_params : array-like - Fixed parameters t0 in shape (1,) or (N_stars, 1) + x0, vx, y0, vy in shape (N_params,) or (N_stars, N_params) + fixed_params_dict : dict + t0, shape (1,) or (N_stars,) fit_param_errs : array-like, optional Uncertainties of fit parameters in shape (N_params,) or (N_stars, N_params), by default None @@ -396,6 +503,8 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): x, y (, xe, ye) Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ + assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Linear model." + t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) @@ -403,7 +512,7 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): N_times = len(t) x0, vx, y0, vy = fit_params.T # Each shape (N_stars,) - t0 = np.atleast_1d(fixed_params[0]) # Shape (N_stars,) or (1,) + t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) @@ -430,14 +539,24 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): return x, y, x_err, y_err def run_fit( - self, t, x, y, xe, ye, t0, + self, t, x, y, xe, ye, + fixed_params_dict, weighting='var', use_scipy=True, absolute_sigma=True, - params_guess=None, fill_value=np.nan, + params_guess=None, + return_chi2=False, verbose=True ): + assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Linear model." + t0 = fixed_params_dict['t0'] + t = np.atleast_1d(t) + x = np.atleast_1d(x) + y = np.atleast_1d(y) + xe = np.atleast_1d(xe) + ye = np.atleast_1d(ye) + n_obs = len(t) degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model @@ -449,11 +568,14 @@ def run_fit( ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) - return params, param_errors, np.nan, np.nan + if return_chi2: + return params, param_errors, np.nan, np.nan + else: + return params, param_errors # degree_of_freedom >= 0 dt = t - t0 - x_wt, y_wt = self.get_weights(xe, ye, weighting=weighting) + x_wt, y_wt = self.calc_weights(xe, ye, weighting=weighting) if params_guess is None: params_guess = [x.mean(), 0., y.mean(), 0.] @@ -466,60 +588,65 @@ def run_fit( y0e, vye = np.sqrt(y_cov.diagonal()) params = np.array([x0, vx, y0, vy]) param_errors = np.array([x0e, vxe, y0e, vye]) - chi2_x, chi2_y = self.calc_chi2(params, [t0], t, x, y, xe, ye) - - else: - # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution scheme - x = np.array(x) - y = np.array(y) - dt = np.array(dt) - X_mat_t = np.vander(dt, 2) - # x calculation - W_mat_x = np.diag(x_wt) - XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t - pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix - popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution - perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution - # y calculation - W_mat_y = np.diag(y_wt) - XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t - pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix - popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution - perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution - # prepare values to return - vx, x0 = popt_x - vy, y0 = popt_y - vxe, x0e = perr_x - vye, y0e = perr_y - - # Does not use get_chi2 to accelerate calculation + if return_chi2: + chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + return params, param_errors, chi2_x, chi2_y + else: + return params, param_errors + + # Linear algebraic solution + # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution_scheme + X_mat_t = np.vander(dt, 2) + # x calculation + W_mat_x = np.diag(x_wt) + XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t + pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix + popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution + perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + # y calculation + W_mat_y = np.diag(y_wt) + XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t + pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix + popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution + perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + # prepare values to return + vx, x0 = popt_x + vy, y0 = popt_y + vxe, x0e = perr_x + vye, y0e = perr_y + + params = np.array([x0, vx, y0, vy]) + param_errors = np.array([x0e, vxe, y0e, vye]) + + # Does not use get_chi2 to accelerate calculation + if return_chi2 or (not absolute_sigma): residual_x = x - X_mat_t @ popt_x residual_y = y - X_mat_t @ popt_y chi2_x = residual_x.T @ W_mat_x @ residual_x chi2_y = residual_y.T @ W_mat_y @ residual_y - params = np.array([x0, vx, y0, vy]) - param_errors = np.array([x0e, vxe, y0e, vye]) + if not absolute_sigma: + if degree_of_freedom > 0: + reduced_chi2_x = chi2_x / degree_of_freedom + reduced_chi2_y = chi2_y / degree_of_freedom + + param_errors[0:2] *= reduced_chi2_x**0.5 + param_errors[2:4] *= reduced_chi2_y**0.5 - if not absolute_sigma: - if degree_of_freedom > 0: - reduced_chi2_x = chi2_x / degree_of_freedom - reduced_chi2_y = chi2_y / degree_of_freedom - - param_errors[0:2] *= reduced_chi2_x**0.5 - param_errors[2:4] *= reduced_chi2_y**0.5 - - else: - # degree_of_freedom == 0, as < 0 case already handled above - warnings.warn( - f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value np.inf.', - OptimizeWarning, stacklevel=2 - ) - # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit - param_errors = np.full_like(param_errors, np.inf) - - return params, param_errors, chi2_x, chi2_y + else: + # degree_of_freedom == 0, as < 0 case already handled above + warnings.warn( + f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value np.inf.', + OptimizeWarning, stacklevel=2 + ) + # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit + param_errors = np.full_like(param_errors, np.inf) + + if return_chi2: + return params, param_errors, chi2_x, chi2_y + else: + return params, param_errors class Acceleration(MotionModel): """ @@ -559,7 +686,7 @@ def model_fit(self, t, x0, v0, a): """ return x0 + v0*t + 0.5*a*t**2 - def model(self, t, fit_params, fixed_params, fit_param_errs=None): + def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Acceleration model. Parameters @@ -567,9 +694,9 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): t : float or array-like Time(s) at which to evaluate the model fit_params : array-like - Fit parameters with shape (N_stars, N_params) or (N_params,) - fixed_params : array-like - Fixed parameters with shape (N_stars, N_fixed_params) or (N_fixed_params,) + x0, vx0, ax, y0, vy0, ay in shape (N_params,) or (N_stars, N_params) + fixed_params_dict : dict + t0, shape (1,) or (N_stars,) fit_param_errs : array-like, optional Fit parameter uncertainties with shape (N_stars, N_params) or (N_params,), by default None @@ -578,6 +705,8 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): x, y (, xe, ye) Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ + assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Acceleration model." + t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) @@ -585,7 +714,7 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): N_times = len(t) x0, vx0, ax, y0, vy0, ay = fit_params.T # Each shape (N_stars,) - t0 = np.atleast_1d(fixed_params[0]) # Shape (N_stars,) or (1,) + t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) @@ -614,18 +743,28 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): def run_fit( - self, t, x, y, xe, ye, t0, + self, t, x, y, xe, ye, + fixed_params_dict, weighting='var', use_scipy=True, absolute_sigma=True, params_guess=None, fill_value=np.nan, + return_chi2=False, verbose=True ): + assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Acceleration model." + t0 = fixed_params_dict['t0'] + t = np.atleast_1d(t) + x = np.atleast_1d(x) + y = np.atleast_1d(y) + xe = np.atleast_1d(xe) + ye = np.atleast_1d(ye) + if not use_scipy: if verbose: warnings.warn("Acceleration model has no non-scipy fitter option. Running with scipy.") - + n_obs = len(t) degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model @@ -637,11 +776,14 @@ def run_fit( ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) - return params, param_errors, np.nan, np.nan + if return_chi2: + return params, param_errors, np.nan, np.nan + else: + return params, param_errors # degree_of_freedom >= 0 dt = t - t0 - x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) + x_wt, y_wt = self.calc_weights(xe,ye, weighting=weighting) if params_guess is None: # Initial guess for velocity: idx_first, idx_last = np.argmin(t), np.argmax(t) @@ -657,9 +799,11 @@ def run_fit( params = np.array([x0, vx0, ax, y0, vy0, ay]) param_errors = np.array([x0e, vx0e, axe, y0e, vy0e, aye]) - chi2_x, chi2_y = self.calc_chi2(params, [t0], t, x, y, xe, ye) - - return params, param_errors, chi2_x, chi2_y + if return_chi2: + chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + return params, param_errors, chi2_x, chi2_y + else: + return params, param_errors class Parallax(MotionModel): """ @@ -671,29 +815,32 @@ class Parallax(MotionModel): Optional obs parameter describes observer location, default is 'earth'. """ fit_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] - fixed_param_names = ['t0'] - fixed_meta_data = ['RA','Dec','PA','obs'] + fixed_param_names = ['t0', 'ra', 'dec', 'pa', 'obsLocation'] name = "Parallax" # Number of fit parameters/required observations in each direction n_params = int(np.ceil(len(fit_param_names) / 2)) - def __init__(self, ra, dec, pa=0., obs='earth'): + def __init__(self): super().__init__() - self.ra = ra - self.dec = dec - self.pa = pa - self.obs = obs - self.plx_vector_cached = None + self.plx_vector_cached = None # Cache for parallax vector return - def calc_parallax_vector(self, t_mjd): + def calc_parallax_vector(self, t_mjd, ra, dec, pa=0., obsLocation='earth'): """Calculate parallax vector of shape (2, N_times) Parameters ---------- t_mjd : array-like Time array in mjd + ra : float or array-like + Right ascension(s) in degrees + dec : float or array-like + Declination(s) in degrees + pa : float or array-like, optional + Position angle(s) of image y-axis from North in degrees, by default 0. + obsLocation : str, optional + Observer location, by default 'earth' Returns ------- @@ -710,11 +857,11 @@ def calc_parallax_vector(self, t_mjd): elif all(np.isin(t_mjd, t_mjd_cached)): # If all input times are in cached values, return those # Calculate pvec_idxs such that t_mjd_cached[ pvec_idxs ] == t_mjd - pvec_idxs = np.array([np.where(t_mjd_cached==t_mjd_i)[0][0] for t_mjd_i in t_mjd]) + pvec_idxs = np.array([np.where(t_mjd_cached == t_mjd_i)[0][0] for t_mjd_i in t_mjd]) pvec = self.plx_vector_cached[1][:, pvec_idxs] return pvec - pvec = parallax.parallax_in_direction(self.ra, self.dec, t_mjd, obsLocation=self.obs, PA=self.pa).T + pvec = parallax.parallax_in_direction(ra, dec, t_mjd, obsLocation=obsLocation, pa=pa) self.plx_vector_cached = [t_mjd, pvec] return pvec @@ -738,15 +885,20 @@ def model_fit(self, dt, x0, vx, y0, vy, pi): Returns ------- - 2d array - Model positions at time t of Parallax model, shape (2, N_times) + x_res, y_res : array-like + Model positions at time t of Parallax model """ - x_res = x0 + vx*dt + pi * self.pvec[0] - y_res = y0 + vy*dt + pi * self.pvec[1] - return np.vstack([x_res, y_res]) - + # x0, vx, y0, vy, pi are all shape (N_stars, N_times) + x_res = x0 + vx * dt + pi * self.pvec[0] + y_res = y0 + vy * dt + pi * self.pvec[1] + return x_res, y_res + + def _model_fit(self, dt, x0, vx, y0, vy, pi): + """Wrapper for model_fit to return concatenated results for scipy fitting.""" + x_res, y_res = self.model_fit(dt, x0, vx, y0, vy, pi) + return np.hstack([x_res, y_res]) # Shape (N_stars, 2*N_times) - def model(self, t, fit_params, fixed_params, fit_param_errs=None): + def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Parallax model. Parameters @@ -754,9 +906,13 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): t : float or array-like Times at which to evaluate the model fit_params : array-like - Fit parameters for the model - fixed_params : array-like - Fixed parameters for the model + x0, vx, y0, vy, pi in shape (N_params,) or (N_stars, N_params) + fixed_params : dict + - t0, shape (N_stars,) or (1,). + - ra, shape (N_stars,) or (1,). + - dec, shape (N_stars,) or (1,). + - pa, optional, shape (N_stars,) or (1,), by default 0. + - obsLocation, optional,shape (N_stars,) or (1,), by default 'earth' fit_param_errs : array-like, optional Uncertainties in fit parameters, by default None @@ -767,17 +923,22 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): """ t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) - N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 N_times = len(t) x0, vx, y0, vy, pi = fit_params.T # Each shape (N_stars,) - t0 = np.atleast_1d(fixed_params[0]) # Shape (N_stars,) or (1,) + t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) + ra = np.atleast_1d(fixed_params_dict['ra']) + dec = np.atleast_1d(fixed_params_dict['dec']) + pa = np.atleast_1d(fixed_params_dict.get('pa', 0.0)) + obsLocation = fixed_params_dict.get('obsLocation', 'earth') dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) - self.pvec = self.calc_parallax_vector(t_mjd) # Shape (2, N_times) - x, y = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) + self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (2, N_times) + xy = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) + x = xy[:, :N_times] # Shape (N_stars, N_times) + y = xy[:, N_times:] # Shape (N_stars, N_times) if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays @@ -800,21 +961,30 @@ def model(self, t, fit_params, fixed_params, fit_param_errs=None): def run_fit( - self, t, x, y, xe, ye, t0, + self, t, x, y, xe, ye, + fixed_params_dict, weighting='var', use_scipy=True, absolute_sigma=True, params_guess=None, fill_value=np.nan, + return_chi2=False, verbose=True ): if not use_scipy: if verbose: warnings.warn("Parallax model has no non-scipy fitter option. Running with scipy.", UserWarning) - + + assert all([k in fixed_params_dict for k in ['t0', 'ra', 'dec']]), "Parallax model requires 't0', 'ra', and 'dec' in fixed_params." t = np.atleast_1d(t) - n_obs = len(t) - degree_of_freedom = n_obs - self.n_params + t0 = np.atleast_1d(fixed_params_dict['t0']) + ra = np.atleast_1d(fixed_params_dict['ra']) + dec = np.atleast_1d(fixed_params_dict['dec']) + pa = np.atleast_1d(fixed_params_dict.get('pa', 0.0)) + obsLocation = fixed_params_dict.get('obsLocation', 'earth') + + n_fit = len(t) + degree_of_freedom = n_fit - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: if verbose: @@ -824,12 +994,15 @@ def run_fit( ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) - return params, param_errors - + if return_chi2: + return params, param_errors, np.nan, np.nan + else: + return params, param_errors + # degree_of_freedom >= 0 t_mjd = Time(t, format='decimalyear', scale='utc').mjd - self.pvec = self.get_parallax_vector(t_mjd) - x_wt, y_wt = self.get_weights(xe,ye, weighting=weighting) + self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (2, N_times) + x_wt, y_wt = self.calc_weights(xe, ye, weighting=weighting) # Initial guesses, x0,y0 as x,y averages; # vx,vy as average velocity if first and last points are perfectly measured; @@ -842,20 +1015,22 @@ def run_fit( y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.1 ] - res = curve_fit( - self.model_fit, t - t0, np.vstack([x, y]), - p0=params_guess, sigma = 1.0/np.hstack([x_wt,y_wt]), + popt, pcov = curve_fit( + self._model_fit, t - t0, np.hstack([x, y]), + p0=params_guess, sigma=np.hstack([x_wt, y_wt]), absolute_sigma=absolute_sigma ) - x0, vx, y0, vy, pi = res[0] - x0_err, vx_err, y0_err, vy_err, pi_err = np.sqrt(np.diag(res[1])) + x0, vx, y0, vy, pi = popt + x0_err, vx_err, y0_err, vy_err, pi_err = np.sqrt(pcov.diagonal()) params = np.array([x0, vx, y0, vy, pi]) param_errors = np.array([x0_err, vx_err, y0_err, vy_err, pi_err]) - chi2_x, chi2_y = self.calc_chi2(params, [t0], t, x, y, xe, ye) - return params, param_errors, chi2_x, chi2_y - + if return_chi2: + chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + return params, param_errors, chi2_x, chi2_y + else: + return params, param_errors def validate_motion_models(motion_models, startable, default_motion_model): """Validate that all the unique motion models in startable and default_motion_model are in the motion_models. If not, add available models to the list. @@ -869,12 +1044,7 @@ def validate_motion_models(motion_models, startable, default_motion_model): default_motion_model : MotionModel Default MotionModel """ - motion_model_map = { - 'Fixed': Fixed, - 'Linear': Linear, - 'Acceleration': Acceleration, - 'Parallax': Parallax - } + motion_model_map = motion_model_map() # Collect names of all motion models that might get used. all_motion_model_names = set() all_motion_model_names.add('Fixed') @@ -975,14 +1145,9 @@ def get_all_motion_model_names(with_errors=True, with_fixed=True): return get_list_motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) def motion_model_map(): - mm_map = { - 'Empty': Empty, - 'Fixed': Fixed, - 'Linear': Linear, - 'Acceleration': Acceleration, - 'Parallax': Parallax - } - + mm_map = dict( + [(mm.__name__, mm()) for mm in MotionModel.__subclasses__()] + ) # Sort by n_params mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].n_params)) return mm_map \ No newline at end of file diff --git a/flystar/parallax.py b/flystar/parallax.py index 3f7602b..2bd352a 100755 --- a/flystar/parallax.py +++ b/flystar/parallax.py @@ -23,16 +23,16 @@ # Default cache size is 1 GB cache_memory.reduce_size() -@cache_memory.cache() -def parallax_in_direction(ra, dec, mjd, obsLocation='earth', PA=0.): +# @cache_memory.cache() +def parallax_in_direction(ra, dec, mjd, obsLocation='earth', pa=0.): """ Calculate the parallax vector in a given direction following MulensModel. Parameters ---------- - RA : float + RA : float or array-like Right Ascension in degrees. (J2000) - Dec : float + Dec : float or array-like Declination in degrees. (J2000) mjd : float or array-like Modified Julian Date. @@ -44,33 +44,42 @@ def parallax_in_direction(ra, dec, mjd, obsLocation='earth', PA=0.): Returns ------- pvec : ndarray - Parallax vector components, shape of (N, 2), where N is the number of mjd entries. + Parallax vector components, shape of (2, N) or (2,), where N is the number of stars. """ # Munge inputs into astropy format. # times = Time(mjd + 2400000.5, format='jd', scale='tdb') + ra = np.atleast_1d(ra) + dec = np.atleast_1d(dec) + mjd = np.atleast_1d(mjd) times = Time(mjd, format='mjd', scale='tdb') # convert to TDB coord = SkyCoord(ra, dec, unit=(units.deg, units.deg)) - direction = coord.cartesian.xyz.value + directions = coord.cartesian.xyz.value.T # Shape (N_stars, 3) north = np.array([0., 0., 1.]) - _east_projected = np.cross(north, direction) / np.linalg.norm(np.cross(north, direction)) - _north_projected = np.cross(direction, _east_projected) / np.linalg.norm(np.cross(direction, _east_projected)) + # Cross product of each star with north vector + _east_projected = np.cross(north, directions) + _east_projected /= np.linalg.norm(_east_projected, axis=1)[:, np.newaxis] # Shape (N_stars, 3) + _north_projected = np.cross(directions, _east_projected) + _north_projected /= np.linalg.norm(_north_projected, axis=1)[:, np.newaxis] # Shape (N_stars, 3) obs_pos = get_observer_barycentric(obsLocation, times) sun_pos = get_body_barycentric(body='sun', time=times) sun_obs_pos = sun_pos - obs_pos - pos = sun_obs_pos.xyz.T.to(units.au) + pos = sun_obs_pos.xyz.T.to(units.au).value # Shape (N_stars, 3) + + e = np.einsum('ij,ij->i', pos, _east_projected) # Shape (N_stars,) + n = np.einsum('ij,ij->i', pos, _north_projected) # Shape (N_stars,) - e = np.dot(pos, _east_projected) - n = np.dot(pos, _north_projected) - # Rotate frame e,n->x,y accounting for PA - PA_rad = np.pi/180.0 * PA - x = -e.value*np.cos(PA_rad) + n.value*np.sin(PA_rad) - y = e.value*np.sin(PA_rad) + n.value*np.cos(PA_rad) - pvec = np.array([x, y]).T + pa = np.deg2rad(pa) + x = -e * np.cos(pa) + n * np.sin(pa) + y = e * np.sin(pa) + n * np.cos(pa) + pvec = np.array([x, y]) # Shape (2, N_stars) + + if pvec.shape[1] == 1: + pvec = pvec.flatten() return pvec diff --git a/flystar/startables.py b/flystar/startables.py index 661382f..dd44178 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -125,7 +125,7 @@ def __init__(self, *args, ref_list=0, **kwargs): # We have to have special handling of meta-data (i.e. info that has # dimensions of n_lists). - meta_tab = ('LIST_TIMES', 'LIST_NAMES') + meta_tab = ('list_times', 'list_names') meta_type = ((float, int), str) for mm in range(len(meta_tab)): meta_test = meta_tab[mm] @@ -154,7 +154,7 @@ def __init__(self, *args, ref_list=0, **kwargs): del kwargs[meta_arg] for arg in kwargs: - if arg in ['name', 'x', 'y', 'm']: + if arg in ['name', 'x', 'y', 'm', 'list_times', 'list_names']: continue else: self.add_column(Column(data=kwargs[arg], name=arg)) @@ -218,7 +218,7 @@ def _add_list_data_from_starlist(self, starlist): else: # Add junk data it if wasn't input self._set_invalid_list_values(col_name, -1) - + ########## # Update the table meta-data. Remember that entries are lists not numpy arrays. ########## @@ -246,10 +246,10 @@ def _add_list_data_from_starlist(self, starlist): # Update the n_lists meta keyword. self.meta['n_lists'] += 1 - + return - - + + def _add_list_data_from_keywords(self, **kwargs): # # Check if the required arguments are present # arg_req = ('x', 'y', 'm') @@ -534,14 +534,15 @@ def detections(self): def fit_motion_model( self, - motion_models=[Empty(), Fixed(), Linear()], + motion_models=[Empty, Fixed, Linear], + fixed_params_dict=None, weighting='var', use_scipy=False, absolute_sigma=True, bootstrap=0, - fixed_t0=False, verbose=True, mask_value=None, + mask_lists=None, fill_value=np.nan, show_progress=True ): @@ -551,17 +552,21 @@ def fit_motion_model( ---------- motion_models : list of MotionModel, optional Motion models to use. - Empty() and Fixed() models are always added automatically for stars with n_fit = 0 or 1. + Empty and Fixed models are always added automatically for stars with n_fit = 0 or 1. The behavior is as follows: 1. If 'motion_model_input' column is NOT in table: - Use the most complex model that has enough parameters to fit the data (n_fit >= n_params). - If multiple models are supplied, prioritize the model with the most parameters to fit. - If multiple models have the same number of parameters, raise AssertionError: not sure which to use. - 2. If 'motion_model_input' column is in table: + 2. If 'motion_model_input' column IS in table: - Use the model specified in the 'motion_model_input' column. - - If motion model requires initialization parameters, an instance of the motion model must be provided in motion_models list, i.e., motion_models=[Parallax(RA=0, DEC=0)]. - - If not enough data points to fit the specified model, use the most complex model that has enough parameters to fit the data (n_fit >= n_params) among the provided motion_models and 'motion_model_input'. - The actual used motion model is stored in the 'motion_model_used' column. The default motion_models are [Empty(), Fixed(), Linear()]. + - If not enough data points to fit the specified model, use the most complex model in any 'motion_model_input' column that has enough parameters to fit the data (n_fit >= n_params) among the provided motion_models and 'motion_model_input'. + The actual used motion model is stored in the 'motion_model_used' column. The default motion_models are [Empty, Fixed, Linear]. + fixed_params_dict : dict, optional + Dictionary of fixed parameters for motion models, e.g., {'t0': 0., 'ra': np.array([...]), 'dec': np.array([...])}. + - Scalar values are used for all stars, array values should have length = N_stars. + - t0 is automatically calculated as np.average(t, weights=1/np.hypot(xe, ye)) if not provided. + - The keys should match the fixed parameter names in the motion models. See MotionModel class for details, by default None weighting : str, optional Uncertainty weighting, 'std' for weight=1/xe(ye) or 'var' for weight=1/xe(ye)**2, by default 'var' use_scipy : bool, optional @@ -570,12 +575,12 @@ def fit_motion_model( Use absolute sigma or not, see scipy curve_fit for details, by default True bootstrap : int, optional Number of bootstrap for uncertainty resampling, by default 0 - fixed_t0 : bool or float, optional - If provided, use the fixed t0. Otherwise, use average t weighted by 1/np.hypot(xe, ye), by default False verbose : bool, optional Print verbose messages or not, by default True mask_value : float, optional Values to mask in data, by default None + mask_lists : list of int, optional + Indices of lists to mask/exclude from fitting, by default None fill_value : float, optional Fill value when there is not enough data points to fit, by default np.nan show_progress : bool, optional @@ -596,19 +601,24 @@ def fit_motion_model( if weighting not in ['var', 'std']: raise ValueError(f"fit_velocities: Weighting must either be 'var' or 'std', not {weighting}!") - if ('t' not in self.colnames) and ('LIST_TIMES' not in self.meta): - raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'LIST_TIMES' in meta.") + if ('t' not in self.colnames) and ('list_times' not in self.meta): + raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'list_times' in meta.") # Check if we have the required columns if not all([_ in self.colnames for _ in ['x', 'y']]): raise KeyError(f"fit_velocities: Missing required columns in the table: {', '.join(['x', 'y'])}!") + # Check fixed_params_dict is a dict + if fixed_params_dict is not None: + if not isinstance(fixed_params_dict, dict): + raise ValueError("fit_velocities: fixed_params_dict must be a dictionary!") + # Always add Empty and Fixed in motion models mm_names = [mm.name for mm in motion_models] if 'Fixed' not in mm_names: - motion_models.insert(0, Fixed()) + motion_models.insert(0, Fixed) if 'Empty' not in mm_names: - motion_models.insert(0, Empty()) + motion_models.insert(0, Empty) mm_names = [mm.name for mm in motion_models] # Construct motion models if motion_model_input column exists @@ -643,19 +653,52 @@ def fit_motion_model( N_stars = len(self) x_data = np.ma.masked_invalid(self['x'].data, copy=True) y_data = np.ma.masked_invalid(self['y'].data, copy=True) - xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else None - ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else None + xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else np.ones_like(x_data) + ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else np.ones_like(y_data) + + if mask_lists is not None: + x_data.mask[:, mask_lists] = True + y_data.mask[:, mask_lists] = True + xe_data.mask[:, mask_lists] = True + ye_data.mask[:, mask_lists] = True # t_data: 2d array with shape (N_stars, N_epochs) # t0: 1d array with shape (N_stars,) if 't' in self.colnames: t_data = copy.deepcopy(self['t'].data) - t0 = np.average(t_data, axis=1, weights=1/np.hypot(xe_data, ye_data)) if not fixed_t0 else np.ones(N_stars)*fixed_t0 else: - t_data = copy.deepcopy(np.array(self.meta['LIST_TIMES'])) + t_data = copy.deepcopy(np.array(self.meta['list_times'])) t_data = np.broadcast_to(t_data, x_data.shape) - t0 = np.average(t_data, axis=1, weights=1/np.hypot(xe_data, ye_data)) if not fixed_t0 else np.ones(N_stars)*fixed_t0 + + # Add default t0 if not provided in fixed_params_dict + if fixed_params_dict is None: + weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None + t0 = np.average(t_data, axis=1, weights=weights) + fixed_params_dict = {'t0': t0} + elif 't0' not in fixed_params_dict: + weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None + fixed_params_dict['t0'] = np.average(t_data, axis=1, weights=weights) + else: + if np.ndim(fixed_params_dict['t0']) == 0: + fixed_params_dict['t0'] = np.full(N_stars, fixed_params_dict['t0']) + t0 = fixed_params_dict['t0'] + + # Prepare fixed_params_dict for each star + # This avoids checking types and slicing inside the fitting loop + fixed_params_stars = [{} for _ in range(N_stars)] + # Identify array parameters (length N_stars) and scalar parameters + array_params = {k: v for k, v in fixed_params_dict.items() if np.ndim(v) > 0 and len(v) == N_stars} + scalar_params = {k: v for k, v in fixed_params_dict.items() if k not in array_params} + + # Construct list of dicts for each star + # Using list comprehension for speed + fixed_params_stars = [ + {**scalar_params, **{k: v[i] for k, v in array_params.items()}} + for i in range(N_stars) + ] + + # Apply mask_value if provided if mask_value: x_data = np.ma.masked_values(x_data, mask_value) y_data = np.ma.masked_values(y_data, mask_value) @@ -664,6 +707,7 @@ def fit_motion_model( if ye_data is not None: ye_data = np.ma.masked_values(ye_data, mask_value) + # Calculate mask array xy_mask = (~x_data.mask) & (~y_data.mask) self['n_fit'] = xy_mask.sum(axis=1) @@ -682,7 +726,6 @@ def fit_motion_model( if 'motion_model_input' in self.colnames: # Determine which motion model to use based on motion_model_input column # If n_fit < required n_params for the input motion model, use the most complicated motion model with n_fit >= n_params - motion_model_names = np.unique(self['motion_model_input']) required_params = [all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']] mm_digitized = np.digitize( x=np.minimum(np.array(self['n_fit']), required_params), @@ -694,7 +737,8 @@ def fit_motion_model( x=np.array(self['n_fit']), bins=mm_n_params ) - 1 # Convert to 0-based index - + + # Assign motion models to stars self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized]) @@ -722,7 +766,8 @@ def fit_motion_model( ) # Add a column to keep track of the number of points used in a fit and number of bootstrap used. - self['n_bootstrap'] = bootstrap + self.meta['n_bootstrap'] = bootstrap + ########################### ######### FITTING ######### @@ -730,9 +775,10 @@ def fit_motion_model( unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} + # Expensive for loop! Prepare everything beforehand to speed up. for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance - motion_model_instance = input_mm_map[unique_motion_model] + motion_model_instance = input_mm_map[unique_motion_model]() # Initialize arrays to store results n_stars_this_model = len(unique_index) n_params = len(motion_model_instance.fit_param_names) @@ -751,12 +797,13 @@ def fit_motion_model( y=y_stars[i_star], xe=xe_stars[i_star], ye=ye_stars[i_star], - t0=t0[i_star], + fixed_params_dict=fixed_params_stars[i_star], weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, bootstrap=bootstrap, fill_value=fill_value, + return_chi2=True, verbose=verbose ) params_array[idx] = params @@ -808,8 +855,8 @@ def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, b if weighting not in ['var', 'std']: raise ValueError(f"fit_velocities: Weighting must either be 'var' or 'std', not {weighting}!") - if ('t' not in self.colnames) and ('LIST_TIMES' not in self.meta): - raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'LIST_TIMES' in meta.") + if ('t' not in self.colnames) and ('list_times' not in self.meta): + raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'list_times' in meta.") # Check if we have the required columns if not all([_ in self.colnames for _ in ['x', 'y']]): @@ -827,9 +874,9 @@ def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, b if ('motion_model_input' not in self.colnames) or reassign_motion_model: self['motion_model_input'] = default_motion_model self['motion_model_used'] = self['motion_model_input'] - + motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, self, default_motion_model) - + # # Fill table with all possible motion model parameter names as new # columns. Make everything empty for now. @@ -864,7 +911,7 @@ def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, b if 't' in self.colnames: self['t0'] = self['t'] else: - self['t0'] = self.meta['LIST_TIMES'][0] + self['t0'] = self.meta['list_times'][0] if 'xe' in self.colnames: self['x0_err'] = self['xe'] self['y0_err'] = self['ye'] @@ -879,7 +926,7 @@ def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, b if 't' in self.colnames: self['t0'] = self['t'][:, 0] else: - self['t0'] = self.meta['LIST_TIMES'][0] + self['t0'] = self.meta['list_times'][0] if 'xe' in self.colnames: self['x0_err'] = self['xe'][:,0] self['y0_err'] = self['ye'][:,0] @@ -996,7 +1043,7 @@ def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scip if 't' in self.colnames: t = np.ma.masked_invalid(self['t'][ss, :].data) else: - t = np.ma.masked_invalid(self.meta['LIST_TIMES']) + t = np.ma.masked_invalid(self.meta['list_times']) if mask_val: t = np.ma.masked_values(t, mask_val) diff --git a/flystar/tests/test_all_detected.fits b/flystar/tests/test_all_detected.fits deleted file mode 100644 index ae56198..0000000 --- a/flystar/tests/test_all_detected.fits +++ /dev/null @@ -1,2911 +0,0 @@ -SIMPLE = T / conforms to FITS standard BITPIX = 8 / array data type NAXIS = 0 / number of array dimensions EXTEND = T END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 632 / length of dimension 1 NAXIS2 = 2000 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 21 / number of table fields TTYPE1 = 'name ' TFORM1 = 'K ' TTYPE2 = 'x ' TFORM2 = '12D ' TDIM2 = '(2,6) ' TTYPE3 = 'y ' TFORM3 = '12D ' TDIM3 = '(2,6) ' TTYPE4 = 'm ' TFORM4 = '12D ' TDIM4 = '(2,6) ' TTYPE5 = 'xe ' TFORM5 = '6D ' TDIM5 = '(6) ' TTYPE6 = 'ye ' TFORM6 = '6D ' TDIM6 = '(6) ' TTYPE7 = 'me ' TFORM7 = '6D ' TDIM7 = '(6) ' TTYPE8 = 'n ' TFORM8 = '6D ' TDIM8 = '(6) ' TTYPE9 = 'det ' TFORM9 = '6D ' TDIM9 = '(6) ' TTYPE10 = 'vx ' TFORM10 = 'D ' TTYPE11 = 'vy ' TFORM11 = 'D ' TTYPE12 = 'vxe ' TFORM12 = 'D ' TTYPE13 = 'vye ' TFORM13 = 'D ' TTYPE14 = 'x0 ' TFORM14 = 'D ' TTYPE15 = 'y0 ' TFORM15 = 'D ' TTYPE16 = 'x0e ' TFORM16 = 'D ' TTYPE17 = 'y0e ' TFORM17 = 'D ' TTYPE18 = 'chi2_vx ' TFORM18 = 'D ' TTYPE19 = 'chi2_vy ' TFORM19 = 'D ' TTYPE20 = 't0 ' TFORM20 = 'D ' TTYPE21 = 'n_vfit ' TFORM21 = 'D ' EPNAMES = '2005_F814W_F1' EPNAMES = '2010_F125W_F3' EPNAMES = '2010_F139M_F2' EPNAMES = '2010_F160W_F1' EPNAMES = '2013_F160W_F1' EPNAMES = '2015_F160W_F1' ZPOINTS = 32.6783 ZPOINTS = 25.2305 ZPOINTS = 23.2835 ZPOINTS = 24.5698 ZPOINTS = 24.5698 ZPOINTS = 24.5698 YEARS = 2005.485 YEARS = 2010.652 YEARS = 2010.652 YEARS = 2010.652 YEARS = 2013.199 YEARS = 2015.148 HIERARCH DATE PRODUCED = '2025-06-30' HIERARCH INSTRUMENT = 'ACSWFC ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' HIERARCH INSTRUMENT = 'WFC3IR ' END @Ÿ ˆ1&éy@Ÿ ›c+Ø(@Ÿ ˆ1&éy@Ÿ “4U‡*@Ÿ ˆ1&éy@Ÿ ¥ÆàOS@Ÿ ˆ1&éy@Ÿ…ÍÅ•Ü@Ÿ ˆ1&éy@Ÿ èÁ Î!@Ÿ ˆ1&éy@Ÿ]H/Ò@¢nzáG®@¢ns2ph@¢nzáG®@¢nˆ:ötä@¢nzáG®@¢mÐüùI±@¢nzáG®@¢mÓÐùòm@¢nzáG®@¢nbö3›@¢nzáG®@¢nsþ¤ÿŠ@8‚ò䎊@8m¥1›Š@4›¥ãSø@3¹Ã!dÏÎ@3š~ùÛ"Ñ@3Q@䩤@2èè§æ›@2h4¥àûZ@2èè§æ›@2•ÄŠÉRd@2èè§æ›@2–&îEK?¤hja¢ÖQ?¤ƒ´Æ*àä?¢iœy‘Ï?ÁÛÆÀï?» -Ld¢?²OU=°6i?¿/nI|Áâ?˜Š·¤‰ÿ?•`«²lñ??ºþ!æàg?Àî’”ï '?»Ï‡Ê1ñ?¶å¿#ý ?–ãjo¼ð?ƒ /±‘OÈ?‘‰©Þ¥e?£ü.Eôv?£ì¶Ñ [\@@"@@"@4@.?ð?ð?ð?ð?ð?ð?“EkŸ€?m¥•oÜ?zÁ•ºS ?œT 8O@ŸËÌÃ@¢n?ð/Ç? ? Csù?¹9wZe`?öª3#õ¶ì@ú溦z@ŸkøªÍ%>@@¤®`Ä›¥ã@¤®\¬1'@¤®`Ä›¥ã@¤®Q4êK@¤®`Ä›¥ã@¤®Mw1Ä@¤®`Ä›¥ã@¤®G¯·é@¤®`Ä›¥ã@¤®:6âë@¤®`Ä›¥ã@¤®4¼j~ú@ÛŠ=p£×@ÛŽV“@ÛŠ=p£×@Û{çl‹D@ÛŠ=p£×@Ûž¸Që…@ÛŠ=p£×@ÛTÉ…ð@ÛŠ=p£×@Û™b¶®@ÛŠ=p£×@ÛÌcñA@6=:’£@6:ÇË)^@4 í‘hr°@4SŽóMj@3ÒÐå`A‰@3ÕÂ\(ö@3._oÒ @3:¦L/ƒ|@3._oÒ @3BëC,¦@3._oÒ @3GÛô‡ü¹?‚á²Olºü?—.‰†5¸?™À‘öô{?™d`ÝXpœ?¨ÇÍµá ›?«Ú>˜¯;Õ?€‚ñêã ?™>%?›ÿµŽ:Þç?Ò–‚h±n?¤|Å9.)?¢¢@ ~?¥ -½ƒBÍ?¤7lyÎ\?¦Jê鞤à?’J×ñf?¡‘8²™ç?ÉJ6Л@@@@@,@(?ð?ð?ð?ð?ð?ð¿€ùC·Ü¿&óÐÔ ?*2iÛ‚A?Yé ˜~õ±@¤®OûÄZ@ÛŒ­˜c¦?DŸ²Ï?t¢NÔù'p?{«QÂ( ñ?ê™ú׺Â@Ÿbn{„Ø@@ª¦Ù‡+Á.„€@ª¦Ù‡+Á.„€@ª¦Ù‡+Á.„€@ª¦Ù‡+Á.„€@ª¦Ù‡+@ª¥Ù¦µ @ª¦Ù‡+@ª¤Àù kº@“(6E¡ÊÁÁ.„€@“(6E¡ÊÁÁ.„€@“(6E¡ÊÁÁ.„€@“(6E¡ÊÁÁ.„€@“(6E¡ÊÁ@“)¸Që…@“(6E¡ÊÁ@“!’ˆÎp<@8«µsê´Á.„>¤µÜÆ@4›¥ãSøÁ.„M‰ûçm@3€å`A‰7Á.„QnÙ‡@2æYJôðØÁ.„NÜC,¥@2æYJôðØ@2üú¬Ùè>@2æYJôðØ@1E2a|Ú@8J¨@8#˜@8¾:@8 >+?¥B¦­xT?Ég{ª£=@8J¨@8Î÷@8i§@8Å?¶VYkøƒ ?ÕŠuÝû@8p÷@8 * @8p÷@8¶?±éŽäþZ?·™Ý\í@@ ?ð?ðøøøøøøøøøøøø@­ÔzáG®@­ÏŸ¾w@­ÔzáG®@­ÏùrGF@­ÔzáG®@­Ûµsì@­ÔzáG®@­Ù=Ùb@­ÔzáG®@­Õ*™0@­ÔzáG®@­×Xâ@¨Õ·KƧð@¨Õ¼(õÂŽ@¨Õ·KƧð@¨ÕÄÂø7¶@¨Õ·KƧð@¨Õ·Xâ@¨Õ·KƧð@¨Õ·Á½¥@¨Õ·KƧð@¨Õ¶z˜@¨Õ·KƧð@¨Õ¸}¿H@8£g ù l@8£þ\‘ÑN@4¡hr° Ä@4§§†Â&€@4"-V@4*Ížƒä&@3B‚@·€5@3GKƧïž@3B‚@·€5@3GÛô‡ü¹@3B‚@·€5@3H´9Xb?š•§q!U?“+ÄWè? ¼¸](Þs?–¼A2xý?™¼wX¬?—>æV¡¶$?¨TU‚?˜[Gú,Ã?¢ðÒŒîI?œ¾,#“t¿?šs°Àãª?“ù|ö[ÿz?žþÓ–O_ö?“[ ·S?“ e?‘ñZa7Þ?“ÌUõÎs¼?ùDâΊ@@@@@*@(?ð?ð?ð?ð?ð?ð?VM²¿B“—x?QÔ¬•y!?B„ex.Œ@­ÕðW.V@¨Õ¸A£A?nçÉ¢f?[ƒç·~?Êéëu?œã+€\…t@ŸoF»5‹i@@¦¤E¸Qì@¦¤9RÒ4ë@¦¤E¸Qì@¦¤G2íì‚@¦¤E¸Qì@¦¤?'-Š9@¦¤E¸Qì@¦¤D›qN@¦¤E¸Qì@¦¤D †¶ï@¦¤E¸Qì@¦¤FÈöWÅ@œ/j~ùÛ#@œ/¨,‚ˆl@œ/j~ùÛ#@œ/iÍ3ߢ@œ/j~ùÛ#@œ/qjK>h@œ/j~ùÛ#@œ/fì¤X@œ/j~ùÛ#@œ/m“·*@œ/j~ùÛ#@œ/u½AªŽ@8£g ù l@8Ãu·¾”@2ør° Äœ@2ùQU|¼Ý@2gKƧïž@2lÂ7À6@1³&Á½¥@1¶ "Áª@1³&Á½¥@1´[ÞÎ@1³&Á½¥@1³} õt?„Ú¢Ó¯?ÿýÑí£œ?’b™ r}»?‹ÊN[×ßx?ó}Ê,AÞ?ñ ëÞJÑ?©¹ûP*i?’6 £Ð k?‘Àƒ¹ ZU?1ì«O}?Ë=еê?‘z¦p»àY?“iÓ èâ¨?V0qRŽi?Š@&àpp?…Ñ?øˆ~Þ?‡øÇãzA?‰Ad¾¬ä`@@ @&@"@&@.?ð?ð?ð?ð?ð?ð?gy—G{¿G;TŸŠ?DOúü­Ý?n@Ù¨3@¦¤C{y"E@œ/p4}pE?g j¯Ë?Öƒ$,¼?ÐgŒ*©âu?ù«8¬Ì·Ê@ŸoÊ›¯œÿ@@§íVÁ.„€@§íV@§Ü»fâ@§íV@§é…¤µÜÆ@3ã÷ÎÙ‡@3µÑ¹ wC@2ÐA‰7KÇ@2Õð……Ï@2(è§æ›@2ìD¦R@2(è§æ›@2÷Ñ4¢Ñ@2(è§æ›@2":>F¸f@8J¨?¡uPÖ„ -?ŸÎ¿}ž?“Í]9tã? ¦fN= ?´â‘wÒp@8J¨?Áo¨!ȼØ?¡@½²;ö?¡<ÜA´lª?žbÑõÐ:u?‡¾¥°Š@8p÷?‘ÕJ­Õø ?“{˜x-â’?“œ¢ÿC×?˜-”Aô?“”­ál­@(@&@&@3@0?ð?ð?ð?ð?ðøøøøøøøøøøøø@©¢Ñë…¸@©¢Òn—P@©¢Ñë…¸@©¢ÓüPG@©¢Ñë…¸@©¢Òñ©ûæ@©¢Ñë…¸@©¢ÔSŽóL@©¢Ñë…¸@©¢Ò-V@©¢Ñë…¸@©¢ÑÑN;Í@¦Õ~ùÛ"Ñ@¦Õ;dZ@¦Õ~ùÛ"Ñ@¦Õ€·€4o@¦Õ~ùÛ"Ñ@¦ÕØ­«Ÿ@¦Õ~ùÛ"Ñ@¦Õ€@¦Õ~ùÛ"Ñ@¦Õ!-w2@¦Õ~ùÛ"Ñ@¦ÕØ­«Ÿ@4T xFÜ@4S¼ÓZ…ˆ@2#÷ÎÙ‡@2&µ '»@0éÛ"Ðå`@0ë"Ðå`B@0‚@·€5@0Äýó¶E¢@0‚@·€5@0Ä÷eýŠÛ@0‚@·€5@0ÄêJŒM?}Ñ¿ž,?‘ ·èe?‘G¿yÛ?ï?‹¬àÌ’Ç?‘˜¯ -`É?‘•S‚üJ?|öOÿÝ?“[¡ŽuœÙ?ÙšlqùÚ?Níú¾?‘Ð¥uvý)­ü?¼¦ @?3fÍÍÅ-? -]¯ÔD@©¢Ò°ÇÇ´@¦ÕxnÚ@?SB!ÒÄ?8FîÌâ°?²Ø¼xqž ?|ÜsþÆ]Þ@ŸfÅžV@@¡ùàÄ›¥ã@¡ûF$Ý/@¡ùàÄ›¥ã@¡úC¼ÓZ†@¡ùàÄ›¥ã@¡úFÁ½¥@¡ùàÄ›¥ã@¡úrˆÎp;@¡ùàÄ›¥ã@¡úéDg8@¡ùàÄ›¥ã@¡úM:’£@¬•=p£× -@¬””¼j~ú@¬•=p£× -@¬•<í‘hs@¬•=p£× -@¬•<]cˆf@¬•=p£× -@¬•3 àÞÔ@¬•=p£× -@¬•æ1ø¡@¬•=p£× -@¬•!TÉ…ñ@87â‚@·€@7†“t¼@2žÙ‡+@2z…‡“ݘ@24“t¼j@2ò{²þÆ@1p–»˜Çã@1<]cˆe•@1p–»˜Çã@1"ø7´¢4@1p–»˜Çã@1-ã¼Ó[?õp·÷ÜÊ?¸ëgUêá?¹y(eM+?–àa¦vf¤µÜÆ@4c÷ÎÙ‡Á.„M‰ûçm@31‰7KƨÁ.„QnÙ‡@3G ù kºÁ.„NÜC,¥@3G ù kºÁ.„NÜC,¥@3G ù kºÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø -@¨;ì‹C•@¨;ø=ÁLº@¨;ì‹C•@¨;éê=Õ~@¨;ì‹C•@¨;ìQbç@¨;ì‹C•@¨;ì^˜Ê·@¨;ì‹C•@¨;í’ŸÇ@¨;ì‹C•@¨;í À@“Êœ¬1'@“Ê•Á¡e´@“Êœ¬1'@“Ê—•F˜o@“Êœ¬1'@“Êœ¨Z -l@“Êœ¬1'@“ÊŸ-fU…@“Êœ¬1'@“ʦ‡À¨@“Êœ¬1'@“Ê MÁ±@7õS&Á¾@7üvU÷@3k¥ãS÷Ï@3nesg'à@2Õ`A‰7L@2Ô6‰çù@2 ¿±[W?@2¬†ù,$@2 ¿±[W?@22Š¥•P@2 ¿±[W?@2 Tœn?}x—™C@R†$Ý/@RuÂ\(@R†$Ý/@R;µsë@R†$Ý/@R0ØDÐ@7í¥œàvÁ.„>¤µÜÆ@4GÎÙ‡+@43Ãa@N@4~ùÛ"Ñ@3çškP°ò@2ëxFÜ^@2á–R½<6@2ëxFÜ^@2êŒL˜_@2ëxFÜ^@2ëÓÃa@@8J¨?¤5‚O}Ó?Ï^sx?¤¥¶‰Ió,?¢L!ñ{©?™ÊU¹Á A@8J¨?i½ÆÝCv?¡z/=–ü?¢¯ÄÕ¨E­?¤•éõ9ð?¨­l÷º Ý@8p÷?Ÿ ‰$FÓ)?¾ï€SÓÌ?¦D'ôö?›˜tgië? ¦å_¹@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøø @¦1®zá@¦1®zá@¦1®zá@¦1 ^ž @¦1®zá@¦1RT`«@¦1®zá@¦1®zá@¦1®zá@¦1ï²-@¦1®zá@¦1l‹C–@¬ƒ« Iº@¬ƒªÀƒp@¬ƒ« Iº@¬ƒªŒL˜@¬ƒ« Iº@¬ƒ« I¹@¬ƒ« Iº@¬ƒªW§†Á@¬ƒ« Iº@¬ƒ«Æ§ïž@¬ƒ« Iº@¬ƒªçÕfÏ@4`ØDЩ@4`ªdÂø7@1i‡+ @1iÇy¦µ @1,j~ùÛ#@1-V”@0O „M@0·éùr@0O „M@0±[W>¬@0O „M@0v_Ø­¬?|¬Çëý ?x°ºà1?‘©ŠÕ ·Ñ?ŒªèkÜ?‘EÉ@Ú?‘C!ƒžÈ?|öOÿÝ?’Q_Ú¸FN?‘F·ˆN ?Œþ%å_D?‚˜YªüÏF?ƒƒQçÐ(?‡×7°º?‡×7°º@@@@@*@,?ð?ð?ð?ð?ð?ð¾àoùX?Ýx?Iç·9lÅ?Òoc2Ðï@¦1¬ƒu¹@¬ƒªåum ?'!·Å—Ã?@(6µ1Ú…?\^s1Ȧé?Š7C…&ð†@ŸfÃZ| @ @¯@ -=p¤@¯@y%¦Õ@¯@ -=p¤@¯@¬2@¯@ -=p¤@¯@ÜÆ?@¯@ -=p¤@¯@ŽóMj@¯@ -=p¤@¯@§†Â(@¯@ -=p¤@¯@z–@œ{>vÈ´9@œ{>ùÛ"Ñ@œ{>vÈ´9@œ{DêJŒ@œ{>vÈ´9@œ{D›¥ãT@œ{>vÈ´9@œ{B&€I@œ{>vÈ´9@œ{BÃÉîË@œ{>vÈ´9@œ{B&€J@4kµsê´@4kêk50@2J^5?|í@2K…¸Që@2 "Ðå`B@2 Oß;dZ@1xDЩ*@1z¹õY³Ñ@1xDЩ*@1yXbMÓ@1xDЩ*@1yÎ_oÒ?}x—™ZÌw?…<ò N ?гá‡}?Œ8¸wx¯@@@@@(@,?ð?ð?ð?ð?ð?ð¿5ªžð?:Á aÀ?@ŠÄ*óîz?º)ç¹@¯@€;_@œ{@Ê%;?`£‚Dµ?7¦$%¥+?ʾ[&+@8Iç@8Ù?†‡+ Iº@8Î÷@8i§@8Å@8S@8û—?˜s5r–¹@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@§EKƧïž@§EQ&éxÔ@§EKƧïžÁ.„€@§EKƧïžÁ.„€@§EKƧïžÁ.„€@§EKƧïžÁ.„€@§EKƧïžÁ.„€@¥êúáG®@¥êø“t¼j@¥êúáG®Á.„€@¥êúáG®Á.„€@¥êúáG®Á.„€@¥êúáG®Á.„€@¥êúáG®Á.„€@7 ØDЩ@7 -¬Ùè>B@3 í‘hr°Á.„M‰ûçm@2€å`A‰7Á.„QnÙ‡@1‘Þi­BÄÁ.„NÜC,¥@1‘Þi­BÄÁ.„NÜC,¥@1‘Þi­BÄÁ.„NÜC,¥?1·†Æjñ@8#˜@8¾:@8 >+@8Iç@8Ù?”¼íÒh?@8Î÷@8i§@8Å@8S@8û—?Úæ5BZ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@®:ŽV“Á.„€@®:ŽV“@®:”`ªdÃ@®:ŽV“@®:’•éá²@®:ŽV“@®:šÔ,<Ÿ@®:ŽV“@®:–ð¹@®:ŽV“@®:’•éá°@£$Ý/Á.„€@£$Ý/@£ŒèõÂ\@£$Ý/@£ŒõÂ\)@£$Ý/@£Œ½¿HÌ@£$Ý/@£ŒÝ²-V@£$Ý/@£ŒÈ§æ›@8Hè§æÁ.„>¤µÜÆ@3n5?|í‘@3d xFÜ@3²-V@3 [À7@2Öý!ÿ.I@2»jçÕfÏ@2Öý!ÿ.I@2·ü¹#¢@2Öý!ÿ.I@2º#9Àëî@8J¨?›úV˜[u9?‘–”«ëó?œ¦]`úæ? k‚ˆŸ;æ?™ÊU¹Á A@8J¨?ª´˜lV±°?šJ‘ÍÒÁ?»5;7Ä»M?¹ê®Q•Ò?»·ÕAû8D@8p÷?ŽOv_Ø­«?† - Ðló]?‡v¯ªIì?”ø™¾?¤ËÜþgì“@@@@,@,?ð?ð?ð?ð?ðøøøøøøøøøøøø@®þ3¶E¡Ë@®þ/ß;dZ@®þ3¶E¡Ë@®þ5Â\)@®þ3¶E¡Ë@®þ33332@®þ3¶E¡Ë@®þ3¶E¡Ë@®þ3¶E¡Ë@®þ3œ¾à@®þ3¶E¡Ë@®þ4!-w@£E1&éxÕ@£E.V“@£E1&éxÕ@£E2¼£@£E1&éxÕ@£E3©*0U@£E1&éxÕ@£E49Xb@£E1&éxÕ@£E3×Ûõ@£E1&éxÕ@£E8­«ŸW@6ý:’£@6ø†YJôñ@1û Iº^@1ù³Ð|„¶@1iÛ"Ðå`@1iŒ~($ @0‚@·€5@0ÂZîcŠ@0‚@·€5@0ÂGE8ï5@0‚@·€5@0¿¾vÈ´:?¦NIÉ®š?ÎÁ¯‰t0?‘¶å¤wk½?Œ‚èõЊ?‘Dj?‘#†»{׈?”¼íÒh??“í -Âô‚?‘}7ˆ.Ñ?‘M –=?‘+ùÔ!½‹?‘ ‡#é -´?¥¤Pà7?c I??…/‡ÙX·³?ƒ­=aÊw%?‡gϵ’õ?ˆ -¿„r©Ý@@@@@(@$?ð?ð?ð?ð?ð?ð?@%+sT?^> -3F?5?Ód/?BõZƦ@®þ3ƒëñõ@£E4q¿¨õ?I\Iñ;Œ?_)T¯`l¯?Ž:õ•{÷§?¸RÅ«\k@Ÿo£´y@@®Û©xÔýô@®Û©7Kƨ@®Û©xÔýô@®Û¯*Á…/@®Û©xÔýô@®Ün<ºÃZ@®Û©xÔýô@®Û¬‘™•u@®Û©xÔýô@®Û¨0Ñ/@®Û©xÔýô@®Û¥Íë»4@œ™™™™š@œš¬1@œ™™™™š@œ– “ÒÄ@œ™™™™š@œŽæì¾@œ™™™™š@œ›I]غ@œ™™™™š@œšœr@œ™™™™š@œ£ÀÑÓä@5:qÞi­C@5:’£S&@1J^5?|í@1žŠp}&Þ@0¾V“u@0íâJé×@0zÔ,<ží@0àW÷R#@0zÔ,<ží@0zãoõ Ö@0zÔ,<ží@0{85;‡÷?~ì“?ÕÒJ?Ïk…¼_?‘ÛåÅ?Ç?ŒIa‰UU?‘ ¯ö`*?¸gèïWœ?|Ñb×¶@?’<ð/Oí?„•à?^c¨gÖ5?‘´ _®?Oâ2¯Ö;?‚ÿÀ_~Š?Œ¬2aà?ƒ]nx+@8Iç@8Ù?‘ɱb)Q@8Î÷@8i§@8Å@8S@8û—?Äþ`ÈÿïS@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@ªbƒ•%@ªb„›¥ãT@ªbƒ•%@ªb„ÜucÕ@ªbƒ•%@ªb„¸œ@ªbƒ•%@ªb„ß©*Ä@ªbƒ•%@ªbƒZVn@ªbƒ•%@ªbƒ)o•U@™®µ?|í‘@™®¶E¡ÊÂ@™®µ?|í‘@™®µÌ¤«@™®µ?|í‘@™®µÃËéH@™®µ?|í‘@™®¶æºûq@™®µ?|í‘@™®¸~=ÂÌ@™®µ?|í‘@™®¸¢î‘@4 xFÜ@4ŸU›=@0&‡+ J@0&?Ü1’@/XÔýó¶F@/W¹Iô@.(Û‹¬q @.(_Œ÷n @.(Û‹¬q @.(ºÇË*@.(Û‹¬q @.(&°ÚI?}@T˜ÁÎ¥?ÜnøÃ!?‘Ûø÷BÉ?‹ÁšŸ™I?ëF BØ?Â*®¼?}@T˜ÁÎ¥?’ï R”?‚¼ FO??Šb£’?ÏnG$GI?]S¶X³d?‚o,¬qVÙ?ŒÂk®/¥?‚‘X ¶ ?‚øL¨ØxŠ?†ÏÅ1C?†‘·ª -9X@@,@$@*@4@7?ð?ð?ð?ð?ð?ð¿/Ú‡j ?.ÅKnà?"©£è¯¦S?ÒØÛoi@ªb„*l@™®·C‡aÜ?B˜lKÑJ?(PÀäñ3?’ž¹«hÉk?^rTÕÂ?›@ŸgäØ¿ @@«›u?|í‘@«›r-V@«›u?|í‘@«›q·Xâ@«›u?|í‘@«›jÚ¹õZ@«›u?|í‘@«›…Ö8†Z@«›u?|í‘@«›x_ö”@«›u?|í‘@«›|žì¿±@¦ÝåãS÷Ï@¦ÝâÐå`B@¦ÝåãS÷Ï@¦ÝéûçlŠ@¦ÝåãS÷Ï@¦Ýá°‰ &@¦ÝåãS÷Ï@¦ÝÛšu@¦ÝåãS÷Ï@¦Ýß¼@¦ÝåãS÷Ï@¦ÝÚ6âë@7*0U2b@7…ðoiD@4Œí‘hr°@4‡$tSŽó@3ûƧï²@3ùº^5?}@3ý!ÿ.I@3œàu÷@3ý!ÿ.I@3$Ý/@3ý!ÿ.I@3Ü]cˆf?ˆÿÀ)T¿Æ?™05¦ ê[?FwôÅ?”ø”gt>?”Å¥ÒB–W?”ÙA!Xá¨?‚á²Olºü?š«Õ LP?–¾Oäë ?‘tÄdªE·?“¹ ¾´î?˜„AP0P?˜o\¾Z{?‘ûKá•)†?”³Ž+k?‡ÕZ›µûÜ?<ש‹äN?Œ8¸wx¯@@@@@$@(?ð?ð?ð?ð?ð?ð?bíútÀ¿Z’¼?_L|H‚bK?EÊjœ-M0@«›y4_í@¦ÝÞ»úúÎ?› /ذ™?eëfÉб)?ùÚ8’ا?ÍK{~´‰@Ÿh,éóµ›@@¥¢Ä›¥ãT@¥¢ºáG®@¥¢Ä›¥ãT@¥¢Ã¼ÓZ‡@¥¢Ä›¥ãT@¥¢ÏhÛŒ@¥¢Ä›¥ãT@¥¢Å¸Qì@¥¢Ä›¥ãT@¥¢ÅýŠÚº@¥¢Ä›¥ãT@¥¢Éã¾@¡çð£× -=@¡çë…¸R@¡çð£× -=@¡çóMj@¡çð£× -=@¡è Iº^@¡çð£× -=@¡çô¼j~ú@¡çð£× -=@¡çð©*0@¡çð£× -=@¡çíOß;d@7įO „M@7Æ¡aä÷f@3k¥ãS÷Ï@3m¸ºÇË@2¹7KƧð@2½ÅÖ8†Y@1î_oÒ @1ð6âë@1î_oÒ @1â\(õÃ@1î_oÒ @1ân—Oà?}Ñ¿ž,?‘–Œ ˆŽ ?“IK¹É?nii)â?šÞjFáÊ?—Ò¸ùBz3?Œs¤DÅÐ?š8º¶{:?‘%gÇ¿µ?‘Nw]6»ô?žrø·óç?¡má\È@à?¯ßÁx}²?’Эs_ª`?‰~}œ…o_?‡õ{CxÞ?屘Úã?˜§zy@@@@@,@*?ð?ð?ð?ð?ð?ð?iŽ|š?W¸öÖ?8ò"ªœ‹?Ufݸbzi@¥¢Á¶• q@¡çïÒj¤þ?XwøÍ6O?rò8G®ËÍ?´Pžðäê?ÛnÿÒ9¶ô@Ÿf¡QF$`@@°=p£× -Á.„€@°=p£× -@°=quŽ@°=p£× -@°;’:)Ç@°=p£× -@°<L˜_@°=p£× -@°;P°ò|@°=p£× -@°;˜Çâ‚@žÈq©ûçmÁ.„€@žÈq©ûçm@žÈgRT`ª@žÈq©ûçm@žÈc¢œwš@žÈq©ûçm@žÈixÔýó@žÈq©ûçm@žÈg8}À@žÈq©ûçm@žÈd÷eý‹@7Âò䎊Á.„>¤µÜÆ@2û Iº^@2ùÔ•*™@2 ²-V@2 ˜Çâ‚A@1a:’£S@1_iDg8@1a:’£S@1_U›=È@1a:’£S@1_Aò×s@8J¨?­hX™*?‘=?ùKh?Œ:Z2‚b?‘ÇöÃÞ`?‘•S‚üJ@8J¨?“Á4œÝi?ÏtP°*?Ò–‚h±n?‘C å;Ã?‘]Ë™$ë>@8p÷?u/®Xã?‚‹¡8*ú?ƒÛ®«etZ?ˆCns¥ ?ˆ¾þúWZ‹@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøø@£Ï!ÊÀƒ@£Ï%¸Që@£Ï!ÊÀƒ@£Ï$÷eý‹@£Ï!ÊÀƒ@£Ï#ˆe”¯@£Ï!ÊÀƒ@£Ï$Âø7¶@£Ï!ÊÀƒ@£Ï!TÉ…ñ@£Ï!ÊÀƒ@£Ï!TÉ…ð@§¾n—@§¾õÂ[@§¾n—@§¾¶®}U@§¾n—@§¾g8~@§¾n—@§¾u%F @§¾n—@§¾n.±Ä@§¾n—@§¾\(ö@7Q|ÚQ@7QÊÀƒn@1O|í‘hr@1O–»˜È@01‰7Kƨ@01uŽ!–S@/fL/ƒ{K@/f€IQƒ@/fL/ƒ{K@/fL/ƒ{K@/fL/ƒ{K@/fÂ&€J? Eˆ‡ðó‹?êÚÏ$?‘,fŸCô6?‹ó#ƒt£?ÿ £‰¸9?¸û:?žˆ2}?’)£µ“[+@8Iç@8Ù?€‚ñêã @8Î÷@8i§@8Å@8S@8û—?œÁXÙðÿ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¬ÁnzáH@¬ÁmV@¬ÁnzáHÁ.„€@¬ÁnzáHÁ.„€@¬ÁnzáHÁ.„€@¬ÁnzáH@¬Áo²-@¬ÁnzáH@¬ÁmV@¯i@ƒn˜@¯i:^5?}@¯i@ƒn˜Á.„€@¯i@ƒn˜Á.„€@¯i@ƒn˜Á.„€@¯i@ƒn˜@¯iC× -=q@¯i@ƒn˜@¯i?|í‘h@8[¹Œ~($@8WéùrH@2€ Ä›¥ãÁ.„M‰ûçm@1€å`A‰7Á.„QnÙ‡@1 ù kºÁ.„NÜC,¥@1 ù kº@1â‚@·€@1 ù kº@1ÕϪ͟?£È‰·akû@8#˜@8¾:@8 >+?‘ ·èf?‘/¹ß…?‚á²Olºü@8Î÷@8i§@8Å?‘އ Àí?’9ñ9¶ò8?žhËJÎæ@8 * @8p÷@8¶?‹&¸ê±fÂ?’¸ø‰o@@@?ð?ð?ðøøøøøøøøøøøø@¢L¬‹C•@¢L¬‹C•@¢L¬‹C•@¢L®záH@¢L¬‹C•@¢L­‘hr°@¢L¬‹C•@¢L¯v_Ø®@¢L¬‹C•@¢L¨Ë’;@¢L¬‹C•@¢L©Çy¦µ@¦,`A‰7L@¦,`Ä›¥ã@¦,`A‰7L@¦,aaä÷f@¦,`A‰7L@¦,_;dZ@¦,`A‰7L@¦,]ŠÚ¹õ@¦,`A‰7L@¦,cÉîËû@¦,`A‰7L@¦,cn—@3 ]cˆe”@3 íúCþ\@/û"Ðå`A@/ô‡ü¹#¢@/N—Oß<@/C•$Ý@-õ¨Xy=Ú@-é­BÃÉï@-õ¨Xy=Ú@-ëP°ò{³@-õ¨Xy=Ú@-ëP°ò{´?€‚ñêã ?ûJ`ÕYð?‘"žæÆó¡?‹¬àÌ’Ç?”ä+ïè?“Q´Î`°€?|¬Çëý ?’eCŒO?œõLÁE?@§[*^?”*v7¹¿?“½w¢8…?‚s@ˆaÚ?=d­úå?‚¸“Îè ø?ƒžÂâk,?ˆëÅoë?Ž .0åv@@@@@,@,?ð?ð?ð?ð?ð?ð¿8ÃZâ¸?2Øà?HTœãË*?D)Zî£<@¢L¬7Lë@¦,aÀ%?g !í/Ù?cýtÏá2Á?×ÍIN½­£?щØmó&å@Ÿfg¨áµ`@@­ÀÀÁ.„€@­ÀÀ@­Á(ZªÖ;@­ÀÀ@­Áû S@­ÀÀ@­À¸w6Ç@­ÀÀ@­ÀçxQýÇ@­ÀÀ@­ÀÌ\&SÁ@›E49XbÁ.„€@›E49Xb@›E3ûÕi6@›E49Xb@›E £¯ºg@›E49Xb@›Dãµ\8…@›E49Xb@›E"ß;Ô·@›E49Xb@›E7gþù@8ð4mÅÖ8Á.„>¤µÜÆ@3¡hr° Ä@3{R­!4€@2Æ“t¼@2céN`@2 -0U2a|@1ÖPŠX§ô@2 -0U2a|@1ØÅˆöˆÂ@2 -0U2a|@1Ü·+•ò@8J¨?˜Á¥MŒtÞ?—s˜¥¸Î¿?®¦â|vã?“N?ªó¥±e@8J¨?p¦&tìC?™éø„s?£Yg3–÷?šŒŠJ](?›YöîÈÉé@8p÷?–¯´Å”s ?¹ -ÁNr)?’ål-¦Q?‘I`ÊïN?upß-z¢@&@"@*@.@0?ð?ð?ð?ð?ðøøøøøøøøøøøø@ž™‹C•@ž™¤Ô}@ž™‹C•@ž™‘­:=@ž™‹C•@ž™È¨ÉV@ž™‹C•@ž™ÊB%¥†@ž™‹C•@ž™½.Ûø@ž™‹C•@ž™ÂÍφ@ öœ(õÂ@ ö±ë…¸@ öœ(õÂ@ öòx[ññ@ öœ(õÂ@ öʾ€´@ öœ(õÂ@ öÔgº¨@ öœ(õÂ@ öÓgß^V@ öœ(õÂ@ öÔÇÄG@6*0U2b@6á(E\@1—+ Iº@1+­{N¾@0éÛ"Ðå`@0Îm°ðK@03&Á½¦@0©*SEŸ@03&Á½¦@0‚Ñ@03&Á½¦@0lÃðRÌ?€Z=ú‚¡?¤^£ ‰?™42`Ò??‹éþ7?”L–—í ?”Fœ0ê^?Œ}ØEò?•ð·÷ô'?•ÀÔÏ>?1ß”ñìÿ?•ìG -̾ù?”PQÌ-2?— abŽ?TàŒx?ŒŒ­Ÿèã?‡“m« pØ?Œ:w€…êB?޽±Yfž³@@"@$@@2@2?ð?ð?ð?ð?ð?ð?oÜá¾é?€Ð'8€?Y´P;rq§?d#ÈÍÁŠ@ž™¹¤äó}@ öÈ ß¼x?zXXd–¹W?ƒ•ta%?ú\2¶eÇ@.^F;!–@Ÿhú‹¶™@ @¨ÊÒñ©ü@¨Ê‘hr°@¨ÊÒñ©ü@¨ÊŒô!-@¨ÊÒñ©ü@¨Ê‹Æ§ïŸ@¨ÊÒñ©ü@¨Êqu@¨ÊÒñ©ü@¨ÊúCþ]@¨ÊÒñ©ü@¨ÊŒÌÌÌÍ@«‚“u@«‚KƧñ@«‚“u@«‚»˜Çã@«‚“u@«‚ðØDÑ@«‚“u@«‚škP±@«‚“u@«‚®}Vm@«‚“u@«‚+jçÕ@6ò䎊@6aä÷eþ@1 í‘hr°@1 wškP°@0¾V“u@0¼žì¿±[@0&YJôðØ@0&Á½¥@0&YJôðØ@0'¯·é@0&YJôðØ@0'1Å‚?1·†Æjñ?qÂ' -B›?’5 µ¿$„?Œ‚èõЊ?‘¾%î -ã?Ðýð^–Ö?|öOÿÝ?’4 "ëžØ?‘;¨™,?‘M –=?‘ ^Íü?ÿ?lINõÕ„?‡}¤íý?3I¶#i?ƒ!A -mº¹?ƒ­=aÊw%?†ùadô|?†Ü‘ °Ô@@@@@*@(?ð?ð?ð?ð?ð?ð¿›Y–¿&=3!@?²J¶‘Ô?ózÑÕ©)@¨ÊcÐXÌ@«‚ú¸ò:?<ó‡)ÄÑß?:»Çejâ?…Gæ¶ŸFa?ón AõÌ@Ÿg9.Íè¤@!@¨WŽV“Á.„€@¨WŽV“@¨W Ä›¥ã@¨WŽV“@¨W„ŽŠqß@¨WŽV“@¨WŠOv@¨WŽV“@¨W¾ í*@¨WŽV“@¨W˜†YJõ@ ƒn˜Á.„€@ ƒn˜@ ïŸ¾w@ ƒn˜@ ñø .@ ƒn˜@ û‹¬q @ ƒn˜@ óœ¾à@ ƒn˜@ ï'»/ì@8#g ù lÁ.„>¤µÜÆ@4!hr° Ä@3ü¾ß¤@@3lj~ùÛ#@3[xFÜ]@2°–»˜Çã@2®ŠqÞi®@2°–»˜Çã@2¨ -à@2°–»˜Çã@2£{J#9Á@8J¨?¡³¡Bš™?¥Äü¸§‚e?‘4ãM^?›À‰¥xsÎ?¥˜9‹´j@8J¨?Æ“¡0°Øf?±·`;9›?–ª'G_ßJ?žFl}ÖÑì?£:ó;Ãç@8p÷?›¿G¶‘µ?“ø­×N?Ÿ.BZO¶?œpO‹4I?™/ã̽`ª@@@@(@*?ð?ð?ð?ð?ðøøøøøøøøøøøø"@©Î—Oß;@©Î–È´9X@©Î—Oß;@©Î–‡+ @©Î—Oß;@©Î˜}¿G@©Î—Oß;@©Î“œ¾à@©Î—Oß;@©Î›²þÅm@©Î—Oß;@©ÎšCþ\’@­9XbN@­9XbN@­9XbN@­6_Ø­¬@­9XbN@­2ˆÎp:@­9XbN@­7Xâ@­9XbN@­0ØDÐ@­9XbN@­1Þi­C@6*0U2b@6K]Ìcò@2Ô›¥ãSø@2ÑTÉ…ðo@1ä¼j~ùÛ@1âGE8ï5@1B‚@·€5@1;P°ò{³@1B‚@·€5@1Fð¸»@1B‚@·€5@1DFs×Ü?1·†Æjñ?ôÊ_?“ „qç -*?•¬+ÌYI˜?”1މ,jˆ?‘&¶Gf¡?Œs¤DÅÐ?’7Îf¬ps?’±ä?—,àÐÑž?•ò±É*³¯?’ω:hT†?‡z"2Úù(?’á²Olºü?‡š¿]b?†ú#ѧ?‹ ˜1 D@?‹ì3åý@@@@@,@*?ð?ð?ð?ð?ð?ð?FÙÎ0¿[!˜”x?COÕصC?:õݶFNc@©Î˜IC”@­5m$žò?enþÂD`¸?[Ä7Yä–?Ð^d‚üqã?±õŽýÜ Ý@Ÿi2О‚;@#@¢"½ó¶E¢@¢,1&é@¢"½ó¶E¢@¢H`ù³@¢"½ó¶E¢@¢Z^Áë-@¢"½ó¶E¢@¢]&ãW@¢"½ó¶E¢@¢-¼Ÿ@¢"½ó¶E¢@¢2-0@˜"šŸ¾vÉ@˜%° Ä›¦@˜"šŸ¾vÉ@˜%šœy€@˜"šŸ¾vÉ@˜%… Œ@˜"šŸ¾vÉ@˜%)3°³@˜"šŸ¾vÉ@˜%‹]d*±@˜"šŸ¾vÉ@˜%1MY@6Ô xFÜ@3YîËû¶@3ÜIº^5?@/¥2Ø4Ž@2ìj~ùÛ#@.lÿð¾ o@2‘Þi­BÄ@-WM4@2‘Þi­BÄ@-jVwˆ®)@2‘Þi­BÄ@-]`߈?}@T˜ÁÎ¥?˜H%€]¾^?‘,Qú"Œ»?ÎÍQ#“ï?}x—™ÃMÐ?ƒ&C@=V?†Á‡ÄQS?†ºEZë€J@@ @"@$@,@0?ð?ð?ð?ð?ð?ð¿O-b,¿ ww€?@±LU?# œßã¥@ ÷-+¤,@¦ ·¶[’?_äܳ.?CÏ„ú—È?Çãdw"D?“JÏEÔ÷@ŸgÍv¶Y§@%@©“í‘hr°@©“í‘hr°@©“í‘hr°@©“î¿}n@©“í‘hr°@©“îòÙ9@©“í‘hr°@©“î"™Ü9@©“í‘hr°@©“ì³ew€@©“í‘hr°@©“ìÇÅøb@–©÷ÎÙ‡@–©÷ÎÙ‡@–©÷ÎÙ‡@–©ø}¿I@–©÷ÎÙ‡@–©÷æïÙ7@–©÷ÎÙ‡@–©øÐ6k”@–©÷ÎÙ‡@–©ø…Wã‘@–©÷ÎÙ‡@–©÷†“Ÿ€@3:qÞi­C@3:kP°ò|@-û"Ðå`A@-û?÷ÿ@-4ýó¶E¢@-5F -¦L0@,=Vlô"@,=‚÷…Š\@,=Vlô"@,=Áç–|¯@,=Vlô"@,=§°³‘“?|¬h2:“?Ëš]Üus?‘ùBì?‹®’‘8ø?î¤Ë)>ñ?ºT|/ÿ?|¬h2:“?’…;*;h?’Ìw¸&?1–‹ï ?Òh‘›1?T©£q/G?‚nÚ¨´8Ð?Œ¯ê¸wœ?‚u¹k‚=?‚ê ëZ“E?†Š7´is\?†Œ§÷‹Ý@@*@,@&@;@;?ð?ð?ð?ð?ð?ð¿ -xJà?'¬¯@?"ˆgÝé?{­²ºk@©“íb¨n@–©øR?p?Boû{ù×?2Ó@CŠ„¦?’¦…f´?r›6Æä@ŸfòÕN[¤@&@¬T5?|î@¬T/Ÿ¾@¬T5?|î@¬Tƒä%®@¬T5?|î@¬T¸Që…@¬T5?|î@¬T«6z@¬T5?|î@¬TÑ·@¬T5?|î@¬TVlô@©ÙIº^5?@©ÙLÌÌÌÎ@©ÙIº^5?@©ÙI7Kƨ@©ÙIº^5?@©ÙIº^5?@©ÙIº^5?@©ÙJŒL˜@©ÙIº^5?@©ÙIîËû@©ÙIº^5?@©ÙJW§†Â@6Q|ÚQ@6O\(õÂ@0Ò Iº^5@0ÒMÒñ©ü@/rn—Oà@/r{²þÅn@-p‰ 'RU@-p£× -=q@-p‰ 'RU@-p|„µÜÇ@-p‰ 'RU@-p°ò{²ÿ?|¬Çëý ?Òç{íj?‘G¿yÛ?ï?‹ÁË…ÉT?÷6r In?¶*WFÑ?…ÅBðrç?’›ÈÖÝ?»Þ‹"è?6) }’ë?â2„&ÿh?e¾DQ„Q?–Õ ­Ÿû?ŒÂ§dß±?‚˜YªüÏF?ƒE 8?†–f_ÔŠŠ?†©b/bJö@@@@@,@,?ð?ð?ð?ð?ð?ð?%WÛ­€¿CCW ?&èá.´?"›,|¡x@¬T±šù -@©ÙK<òv>?GÜ>uTô‚?B†ãèah?œ|NáRuÈ?ŠdË;T0@Ÿh¹pI™D@'@«™ Ƨïž@«™ ƧïŸ@«™ Ƨïž@«™ ÓÃa@«™ Ƨïž@«™ "h Õ@«™ Ƨïž@«™ ÌÌÌÍ@«™ Ƨïž@«™ cñA @«™ Ƨïž@«™ BÃÉï@¨+u?|í‘@¨+u$Ý@¨+u?|í‘@¨+tÉ…ðn@¨+u?|í‘@¨+u¨Xy>@¨+u?|í‘@¨+uéá°‹@¨+u?|í‘@¨+tmÅÖ:@¨+u?|í‘@¨+tÉ…ðo@5-¥œàv@5-úCþ\’@1sS÷ÎÙ@1sˆe”¯N@0ÝV”@0ÝIQ‚©“@0ëxFÜ^@0ëjçÕfÐ@0ëxFÜ^@0ìIº^5@@0ëxFÜ^@0ëíúCþ]?€‚ñêã ? ¸×KG?‘O‚%c?Žl¢¦µ¥?‘‘n{ÆäK?‘Ò\.:Ø@?|öOÿÝ?’CòO…?‘;¨™,?‘°ß‡O©?’l{9ÙŽ?¦QÎð\ã?„‘Za¹P?3I¶#i?‚Ì ÝŽ‚8?„ mŠmsi?‡L8õASÎ?ˆ‹”âó@@@@@,@,?ð?ð?ð?ð?ð?ð?1`åß¿#ZLw€?AdA•‡I?=!^é@«™ aPP@¨+u9¥¶:?4-4ÆLª:??'mwƒ?r«1ÃV0?‡Y[º¦Pœ@Ÿg%{Ñ’?@(@ d›¥ãSø@ dšÆkÅ”@ d›¥ãSøÁ.„€@ d›¥ãSøÁ.„€@ d›¥ãSøÁ.„€@ d›¥ãSøÁ.„€@ d›¥ãSøÁ.„€@§¨÷ÎÙ@§¨n—Q@§¨÷ÎÙÁ.„€@§¨÷ÎÙÁ.„€@§¨÷ÎÙÁ.„€@§¨÷ÎÙÁ.„€@§¨÷ÎÙÁ.„€@6Œ]cˆe”@6n*ó¨‡@2óS÷ÎÙÁ.„M‰ûçm@2t“t¼jÁ.„QnÙ‡@2 ¿±[W?Á.„NÜC,¥@2 ¿±[W?Á.„NÜC,¥@2 ¿±[W?Á.„NÜC,¥?€Z=ú‚¡@8#˜@8¾:@8 >+@8Iç@8Ù?ŽÕQp Î@8Î÷@8i§@8Å@8S@8û—?‚ãTʼ =@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø)@£#Cn—Á.„€@£#Cn—@£#9#¢œx@£#Cn—@£#F?@£#Cn—@£#5L˜_@£#Cn—@£#,VÕÏ«@£#Cn—@£#3 àÞÒ@§ž5?|îÁ.„€@§ž5?|î@§Ç ù m@§ž5?|î@§²° Ä›@§ž5?|î@§­BÃÉð@§ž5?|î@§­à q@§ž5?|î@§µfÏAò@9–»˜ÈÁ.„>¤µÜÆ@5Œí‘hr°@5ž5?|í‘@4²-V@4—Oß;d@40–»˜Çã@41$Ý/@40–»˜Çã@4$`ªdÂø@40–»˜Çã@4%¨Xy=Ú@8J¨?®ÖJ éf?¢Ø‹)¬Ô?¡àp½ùW²?¯ÂÿU܈9?¦ìm°Z³@8J¨?°k3–~?©oÌ„»É—?·Ë¿ o¶?°KNø»«ú?¬H"¨Û#¦@8p÷?³/ÇÅ‘B?«ý¿­¨?²Ž Ÿ‘W?®zoV÷?œÐ€IÙN†@@@@,@(?ð?ð?ð?ð?ðøøøøøøøøøøøø*@¥{dZ¬@¥xÔýó¶@¥{dZ¬@¥~ÒˆÎp@¥{dZ¬@¤þ‘[W>«@¥{dZ¬@¤ÿÿØ­«Ÿ@¥{dZ¬Á.„€@¥{dZ¬Á.„€@¦S_¾vÈ´@¦Sg+ K@¦S_¾vÈ´@¦S\¬1(@¦S_¾vÈ´@¦SYJôðÙ@¦S_¾vÈ´@¦S ùrG@¦S_¾vÈ´Á.„€@¦S_¾vÈ´Á.„€@6ð4mÅÖ8@6ïO „M@4ÇÎÙ‡+@4°@4RÐå`A‰@4žì¿±[W@4 ù kº@4 ¹Œ~($@4 ù kºÁ.„NÜC,¥@4 ù kºÁ.„NÜC,¥?‚á²Olºü?­ÙEÔy©Ñ?ê¶i’•ðX?´ÿ,¶ö -d@8Iç@8Ù?–ªÎ­¡?°k3–~?Çù9Ø‚àÁ?³R(gÉF²@8S@8û—?™N³“—õ?ÉôÒ:æøš?ȧuð Ì?¼ ÿvrC@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø+@§kPå`A‰@§kQ©ûçm@§kPå`A‰@§kEo@§kPå`A‰@§k-¸ºÇ@§kPå`A‰@§k(e”¯P@§kPå`A‰@§kSg ù@§kPå`A‰@§k‡“Ý—÷@­»X“t¼j@­»s÷ÎÙ@­»X“t¼j@­»3Mj@­»X“t¼j@­»W´¢3œ@­»X“t¼j@­»s àÞÓ@­»X“t¼j@­»h>BZî@­»X“t¼j@­»ª™0¾@95S&Á¾@9?v_Ø­¬@5ã÷ÎÙ‡@5ëP°ò{³@5lj~ùÛ#@5usê³g¡@4ž«6z‘@4ž}Vlô@4ž«6z‘@4¨è§æ›@4ž«6z‘@4z0U2a|?©W»¥ÿ$B?°õ - åã¢?Â9œÐ/¹?´>5’cª?§?7¡â±?¸Ú2džý?¼xòaz#û?¨Õ¼2®?¸P@÷ë?¶5O¯WÕ?ª#Uºû?Ì·ö~ø Ì?Ãm¢Üå?¢:™/ʼn?¢ó6õ··?§øe8ú?ªé¦ªC¨?²ÞY')î@@@@@$@(?ð?ð?ð?ð?ð?ð?k¶è{º€¿Ta}ø?€hãf®ëz?y·V"Ý@§kR¹öp@­»nÃ^Ò?ŸµÅßS~?‘¶ôÐ8ˆ¢@}—Àc?ÕélIß¡@Ÿlö¥å£@,@¯>=ó¶E¢@¯>9Û"Ðå@¯>=ó¶E¢@¯>C¼ÓZ‡@¯>=ó¶E¢@¯>F1ø @¯>=ó¶E¢@¯>Ik¹Œ}@¯>=ó¶E¢@¯>B Iº_@¯>=ó¶E¢@¯>@ƒn™@¨55Â\)@¨56E¡ÊÁ@¨55Â\)@¨5:6âë@¨55Â\)@¨52òä@¨55Â\)@¨58ï4Ö¡@¨55Â\)@¨5/hÛŒ@¨55Â\)@¨5/ìVÕÐ@4–šÔ,<Ÿ@4‹¹Œ~($@1û Iº^@1øbMÒò@1,j~ùÛ#@1(è§æš@0¸DЩ*@0µ '»0@0¸DЩ*@0³¼ÓZ…ˆ@0¸DЩ*@0³S&Â?›’qvš°•?‘U «¼é¥?–/¸Í”p?ZÁ».œ?’?;Áƒè?‘ë´¤G?›’qvš°•?’)£µ“[j¢Ó=?V­à¾$f‰@¯>CƱÿ@¨53Äz¢?|·M²l­?qµÉÓ‡l?ò³h<~5?Ù$m½ò @Ÿn“G ˆ.@-@®A‰7KÇÁ.„€@®A‰7KÇ@®A×Ûôˆ@®A‰7KÇ@®B‚@·€@®A‰7KÇ@®Aä÷eý@®A‰7KÇ@®@4mÅÖ@®A‰7KÇ@®@4mÅÖ@ ‰)xÔýôÁ.„€@ ‰)xÔýô@ ‰(r° Å@ ‰)xÔýô@ ‰(ÁTɆ@ ‰)xÔýô@ ‰(šu%@ ‰)xÔýô@ ‰)*0U2@ ‰)xÔýô@ ‰(ÁTÉ…@3įO „MÁ.„>¤µÜÆ@0n5?|í‘@0nvÈ´9X@/¥¡ÊÀƒ@/¥ðoiDg@.³üPH@.³@N¤¨Â@.³üPH@.³Z…‡“Þ@.³üPH@.²×süQ@8J¨? ¸×KG?‘\H{gX ?Œݶ\ñr?òǹíT­?Å{¿Ž<¹@8J¨?’0nà=Q“?‘Jâ”âj?7枪y7?ÚÌA B{?Sñƒ´V.@8p÷?ŒÂ§dß±?‚† SFò?ƒ!Ë *(?†£îž«î?†©b/bJö@@@@&@&?ð?ð?ð?ð?ðøøøøøøøøøøøø.@¥Û~vÈ´9@¥Û~ùÛ"Ñ@¥Û~vÈ´9@¥ÛU›=@¥Û~vÈ´9@¥Û}cˆe•@¥Û~vÈ´9@¥Û|Æ?@¥Û~vÈ´9@¥Û}!ÿ.I@¥Û~vÈ´9@¥Û~Ov_Ù@¨F,‹C•@¨F,‹C•@¨F,‹C•@¨F+àÞÒˆ@¨F,‹C•@¨F$ xH@¨F,‹C•@¨F&šÔ,=@¨F,‹C•@¨F)Dg8@¨F,‹C•@¨F'ÈK]Ë@3cg ù l@3cS÷ÎÙ@0Ô›¥ãSø@0ÕfÏAò@0š~ùÛ"Ñ@0›/ìVÕÐ@0cÉîËû@0eýŠÚ¹ö@0cÉîËû@0f$Ý/ @0cÉîËû@0eãS÷ÎÚ?|¬Çëý ?äm°û0Ž?’´ýBI{?‡{@áè?‘@@Nßo9?‘ë´¤G?|¬Çëý ?’j%ÓRa?•¶ÀA½ -;?’ƾ| ?‘êë·áþA?‘:i€ÑìÂ?‚nâwfÿ?Œþ%å_D?†úŒz_–È?…p=¤J‰?‰G±±ZÎ?ˆA0û)n@@@@@(@"?ð?ð?ð?ð?ð?ð¿5wå"x¿Q(Á©Š?-"Sù`ÏÀ?9z¸T‹ü@¥Û~%Ã1ž@¨F*$h(^?M8Mñ¡Ö?Y–Ðwª“6?¦&–YD!?¿G¹¤óñ@Ÿf–?®%<@/@©þÃn—@©þÁF£ç@©þÃn—@©þœáûÌx@©þÃn—@©þŸ|óÂ@©þÃn—@©þ£4‡.y@©þÃn—@©þ¦VÉ¡@©þÃn—@©þÎp:û@˜týó¶E¢@˜uPa$á@˜týó¶E¢@˜tôã÷Ô¿@˜týó¶E¢@˜udˆŽö?£¡q\^/ü?¯ˆÂ(¦#@@(@(@*@;@*?ð?ð?ð?ð?ð?ð¿q}o{?0tz–€?nAÖ…`Ä?hÜÃòk@©þ¼yö¼@˜uÙµ®o?‚¿ëBh?~õÜ,øãâ?ðîcs{eˆ?ïò4Ù~Ÿ@Ÿ^¸T@0@¥Z¬1@¥XQë…@¥Z¬1@¥OìVÕÐ@¥Z¬1@¥U›=È@¥Z¬1@¥TzáG®@¥Z¬1@¥9Û"Ðä@¥Z¬1@¥@N¤¨Á@£ ?|í‘h@£ 9Û"Ðå@£ ?|í‘h@£ mÅÖ8†@£ ?|í‘h@£ i^ž @£ ?|í‘h@£ QÄ2ÊX@£ ?|í‘h@£ Që…¸@£ ?|í‘h@£ ^Ov_Ù@7Ô xFÜ@7ÞÒˆÎp;@4i‡+ @4QÞi­BÄ@3Ú~ùÛ"Ñ@3»ÚQÎ@2ÏO „M@2½w1Å@2ÏO „M@2¶z–¼@2ÏO „M@2µ®æ1ø¡?¡EÉ@Ú?§îéZ]›$?¥×DZ?“êXÔ #{?«XàzÆ=?¨\LïTu?ˆÿÀ)T¿Æ?®*JŠË?¥ûS]:°¸?agÌf ?©®,<Å?²í(Uëó?±ÖÉ„‹?˜¼qlPg?ªÞe»þ?›a½%¨?žæŠ;Ü”ä?¨S![cé@@@@@&@*?ð?ð?ð?ð?ð?ð¿tt‚Ó ?€Þ’üE€?ijÀÉÐ?P–Ý€ò ?@¥Q§w³¹@£ M^^ÛG?°P}d?n7¼±/õ?ärý@øM?Çe¹½æI†@ŸhæÂâ@1@¨=å`A‰@¨=bMÒó@¨=å`A‰@¨="Ðå`B@¨=å`A‰@¨=!ÊÀƒ@¨=å`A‰@¨==ã¼Ó@¨=å`A‰@¨=LIº^4@¨=å`A‰@¨=_oÒô@£p£× -=@£p£× -=@£p£× -=@£q©ûçm@£p£× -=@£mà q@£p£× -=@£På`A‰@£p£× -=@£JÚ¹õZ@£p£× -=@£%zxl#@4Œ]cˆe”@4Œ¿ q@2Ìí‘hr°@2È Ô•*@2“t¼@1þHè§ç@2OO „M@29á°‰ (@2OO „M@20@2OO „M@20|„µÜÆ?~ì“?ÕÒJ?•ª „¼w(?Ÿçdl\’ž? l§s¼C^?´²Ò–ù?ºÙ Gýü?|¬h2:“?•Ð\ÄÙ?•Ó%Øc~?•è­¸‡?¸á®`cë?¿râÂ{?‚¬®eà?ލf†)"?‹v'þ­X?‡µ‚[Ö?–Ö8ýÆN0?–{=rƒ™K@@@@@(@,?ð?ð?ð?ð?ð?ð?¹=âÀ¿x¶œ<§?A‡¨:%^?<Âã|d±@¨= è¹$@£e#á¾?QÝv¥”í?Nbè$h?–Ý oˆ]ž?™œÉgŸuÑ@Ÿ]eß䟽@2@§¹Ç®zá@§¹âÐå`B@§¹Ç®zá@§¹Ãn.±Ã@§¹Ç®zá@§¹ÕϪ͟@§¹Ç®zá@§¹Ãn—@§¹Ç®zá@§¹Èšu%@§¹Ç®zá@§¹ÍBÃÉð@ªÞ¸Që…@ªíÒñ©û@ªÞ¸Që…@ªÎ±Ä2Ê@ªÞ¸Që…@ªÕµsê´@ªÞ¸Që…@ª½<63@ªÞ¸Që…@ª¬<žìÁ@ªÞ¸Që…@ª§ü¹#£@9[¹Œ~($@9múCþ\’@4}‘hr° @4sä%®æ2@4lj~ùÛ#@4gö+jçÕ@3èè§æ›@3ϱ[W>¬@3èè§æ›@3Óœ¾ß¤@3èè§æ›@3Ó{J#9Á?®í©@Šþ?”„ö}>žå?™¬þ.OÀ…? ¨1‚–Áx?£*bQtË6?¤=Bù+?­g;+³ût?”ï©ÛÉ?ŸíBðÐÄ? £½:…? øó¼o?³YðÕ{¸?Ání+î?•ða˜,F?žåÍ1¶ã‘?³d&ó? ü‡—Üä?£ªS@Gd·@@@@@$@(?ð?ð?ð?ð?ð?ð¿fê6tô¿M¤ -@?p‘Ba&\?a\ör”@§¹ËzP'¦@ª»}Þ,?ˆ#v <ã/?v ×ú"í?åרwGµ%?Â>íì÷Ïu@Ÿm)·\å@3@©KƧïž@©KƧïž@©KƧïž@©LVÕÏ«@©KƧïž@©LÌÌÌÍ@©KƧïž@©M„M;@©KƧïž@©KP°ò}@©KƧïž@©JŒL—@¥—vE¡ÊÁ@¥—vE¡ÊÁ@¥—vE¡ÊÁ@¥—vOva@¥—vE¡ÊÁ@¥—v4ê@¥—vE¡ÊÁ@¥—usê³i@¥—vE¡ÊÁ@¥—v»˜Çã@¥—vE¡ÊÁ@¥—vz–@2ºqÞi­C@2ºxl"h -@/ðå`A‰7@/ðØDЩ@.cn—P@.cS&Â@-Aò×t@-ŽóMj@-Aò×t@-Ÿ¾vÉ@-Aò×t@-'»/ìW?É^žQ5P‚?ôÊ_?‘@˜¯³¸?‹µ™eU!µ?‘ ·èf?¼‚Ë¡K?ÐbMçê_x?’ÍîfÕ?«'Q™µ?4–Ú‰3?‘Ú‚ýc¯?Sñƒ´V.?€n|ð̲?ŒÂ§dß±?‚¸“Îè ø?‚æÊ¬vã?†µ°jÆÃ?†£îž«î@@@@@,@(?ð?ð?ð?ð?ð?ð¿U,$  ?>;§ ”?.[}HÛÆ?/¹YXu® @©KøT;p@¥—v'†?=:æ|7v?>#¢},?tæO¬• ¾?sÀ3uó@Ÿsè˜'t@4@ª‘S÷ÎÙ@ª‘VE¡ÊÁ@ª‘S÷ÎÙ@ª‘„Щ*@ª‘S÷ÎÙ@ª‘F€IR@ª‘S÷ÎÙ@ª‘c,¥zx@ª‘S÷ÎÙ@ªúû~‘@ª‘S÷ÎÙ@ª‘Á½¥@¥.—Oß@¥-Òñ©ü@¥.—Oß@¥*™0¾@¥.—Oß@¥ ëíúD@¥.—Oß@¥ó&Á¾@¥.—Oß@¥ye+ÓÄ@¥.—Oß@¥mw1Å@8½:’£@8¯ò䎊r@4µãS÷ÎÙ@4‚MÒñ©ü@4“t¼j@4ÞÒˆÎp@3”mÅÖ8†@3D÷eýŠÛ@3”mÅÖ8†@3>BZîc @3”mÅÖ8†@3Q«ÇÑÚ?“ü”òÖÂ?‘!´ö‚?¯ðòçÊ’K?¬Dc†Ù?±a²OúDæ@@@@@*@(?ð?ð?ð?ð?ð?ð¿…³ô_€¿mWFt?Ñ¿ÿ¼?W¨ã8?‘@ª‘H¼o4ç@¥%Æf®?–À¤¥Óè?¥ú¶Â…•Ÿ?óÐÒÍè#x@ÏGF5—@Ÿ`ç17@5@£èr° Å@£áÊÀƒ@£èr° Å@£唯O@£èr° Å@£ç†Â&@£èr° Å@£èÎp:û@£èr° Å@£ç+ J@£èr° Å@£ÞOv_Ù@¤ÃF§ï²@¤ÃCn—Œ@¤ÃF§ï²@¤ÃC¢œwš@¤ÃF§ï²@¤Ã>žš@¤ÃF§ï²@¤Ã<£n0@¤ÃF§ï²@¤Ã>š@¤ÃF§ï²@¤Ã$?åÉ@8}:’£@8°‰ 'R@3ý‘hr° @3ùb¶®}@3V”@3êJŒL@2ò䎊r@2}:’£@2ò䎊r@2|~($ x@2ò䎊r@2qaä÷eþ?‚á²Olºü?”û#T©È?˜2<ºT?d"¹QZ?”¶q fì?˜Ê`1ó€`?¤ÊŽaÈ]Ó? 3ÝP‰j?­¾Ñ,†L?“{¡7¨Üò?žßÂÚÅ8‡?¤’sæmÅI?“²pÅâ-Ý?”3®èÚ ?•Wí+ Æ?’»•e¨ò?ˆT“Ÿÿ?”"éã/åY@@@@@(@*?ð?ð?ð?ð?ð?ð?F\àéпrôpÀ?S²r‘m@;?jÃ@® ‰{@£ä~3Ï?@¤Ã:©¶Tp?v,ûçœöU?z®ßÃÙ?çr3Zq?ç­˜êVó @Ÿl#UÚù@6@©t¼j~ú@©†$Ý/@©t¼j~ú@©r-V@©t¼j~ú@©v”Fs‚@©t¼j~ú@©tÉ…ðo@©t¼j~ú@©sœ¾à@©t¼j~ú@©ra|Ú@¨þÉ7Kƨ@¨þÖ‡+ @¨þÉ7Kƨ@¨þÅýŠÚ»@¨þÉ7Kƨ@¨þµöý!ÿ@¨þÉ7Kƨ@¨þ´`ªdÃ@¨þÉ7Kƨ@¨þ´ðØDÏ@¨þÉ7Kƨ@¨þ·´¢3œ@8m¥œàv@8h Ô•*@43S÷ÎÙ@4-cˆe”¯@3´“t¼j@3®Hè§ç@2ãÉîËû@2Ü„µÜÆ?@2ãÉîËû@2ÙÇy¦µ @2ãÉîËû@2ÝVlô"?¥Ìõ}êáþ?’bÓ}?•Mq —¦?¢Ö -ƒ«Y?Ÿ´°îéõl?žý¨B3ŒR?}Ñ¿ž,?™ÿÓH*¥?¢†$öf:?™ðyµCÒW?œCuC’?£On4;E?ôê÷º»â?ª‚eûƒ+?”ù‰ÚÞ©)?‹µ¼a?’;WZŸÿÔ?™^ÓnÔl©@@@@@*@*?ð?ð?ð?ð?ð?ð¿o“(²¿Õ2Ø?Rl‚ðÎ\8?^æ&¬Dg@©xM†@¨þ½¼J´?o]),Tð›?ƒõ'ªÌû?¸ïh…Yœ?ò uKq¢@Ÿl%McÌú@7@¥{ùÛ"Ðå@¥|G®{@¥{ùÛ"ÐåÁ.„€@¥{ùÛ"ÐåÁ.„€@¥{ùÛ"ÐåÁ.„€@¥{ùÛ"ÐåÁ.„€@¥{ùÛ"ÐåÁ.„€@¦5|í‘h@¦5ˆr° Å@¦5|í‘hÁ.„€@¦5|í‘hÁ.„€@¦5|í‘hÁ.„€@¦5|í‘hÁ.„€@¦5|í‘hÁ.„€@8kµsê´@8r Iº^6@6ÎÙ‡+Á.„M‰ûçm@4ñ‰7KƨÁ.„QnÙ‡@4Š0U2a|Á.„NÜC,¥@4Š0U2a|Á.„NÜC,¥@4Š0U2a|Á.„NÜC,¥?œä%—ëš@8#˜@8¾:@8 >+@8Iç@8Ù?¤I~Óy‘@8Î÷@8i§@8Å@8S@8û—?³Is -Æ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø8@ŸäâMÒñª@ŸäâMÒñ©@ŸäâMÒñª@Ÿä÷mâ@ŸäâMÒñª@ŸäçÁ¶´¿@ŸäâMÒñª@Ÿäè˜Ó³€@ŸäâMÒñª@ŸäçÉúT@ŸäâMÒñª@ŸääQ"Ú»@«}èr° Å@«}á#xæ`@«}èr° Å@«}íZX\@«}èr° Å@«}éÆtCx@«}èr° Å@«}çhâÕ…@«}èr° Å@«}èè @«}èr° Å@«}æ*Ý=¦@8 xFÜ@8 L³Àæ‚@3f‡+ J@3c­Ö@@2y7KƧð@2z Ï}Š @1ãÉîËû@1ß©s€ëÀ@1ãÉîËû@1ß‹'ZšE@1ãÉîËû@1á)5¢Fˆ?¿pÉÃV?“†}\¯\?’~€\Ñ ‹?…´£ÂÛ•?’¥W"/ãÂ?‘h$‡§ƒ[?ƒÔo"ë–?” -èÂ~>i?’ó†ÖàO%?Þ¿×I\¬?”qAx†û?‘/À•þª?¦ ¹kDþ?XM=nk?„QÇW%;2?„=ÈË\b -?'wChÌ?à -)¥€@@,@,@*@9@5?ð?ð?ð?ð?ð?ð??§x`x?VÀ6KÔ?6Säù­w‡?A5p¤ÉÎ@ŸäåA¯Ü@«}äÊÉß?VÁÒTDœm?a„0—x?·YVÁF*v?ƹHqñi@Ÿh+šœÈ@9@ ¡j~ùÛ#@ ¡oŸ¾w@ ¡j~ùÛ#Á.„€@ ¡j~ùÛ#Á.„€@ ¡j~ùÛ#Á.„€@ ¡j~ùÛ#Á.„€@ ¡j~ùÛ#Á.„€@•ˆô¼j~ú@•ˆêa/ Ö@•ˆô¼j~úÁ.„€@•ˆô¼j~úÁ.„€@•ˆô¼j~úÁ.„€@•ˆô¼j~úÁ.„€@•ˆô¼j~úÁ.„€@4Âò䎊@4­w1›Ø«@2Å?|í‘hÁ.„M‰ûçm@2§KƧïžÁ.„QnÙ‡@2O „MÁ.„NÜC,¥@2O „MÁ.„NÜC,¥@2O „MÁ.„NÜC,¥?|Í>·G3Ó@8#˜@8¾:@8 >+@8Iç@8Ù?‰PÑ&Éx®@8Î÷@8i§@8Å@8S@8û—?‚n—8ˆ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø:@§ž•%@§žA‰7L@§ž•%@§ž Iº^@§ž•%@§žo@§ž•%@§žñA \@§ž•%@§že+Õ@§ž•%@§ž{J#:@«qD›¥ãT@«qDZ¬@«qD›¥ãT@«qC¼ÓZ…@«qD›¥ãT@«qC,¥zx@«qD›¥ãT@«qCñA \@«qD›¥ãT@«qDŽŠqÞ@«qD›¥ãT@«qDZ¬@7Bò䎊@7BZîcŠ@2!hr° Ä@2!ÊÀƒn@0ä¼j~ùÛ@0äÖ¡aäø@0O „M@0b¶®}V@0O „M@0‘-w1Å@0O „M@0HË’:?‡YÍ_?Ï[äe?iT£C~t?ƒúʳ_Ä?ƒ=rµE=?‰©OO ¨?†Óß -tõ@@@@@,@,?ð?ð?ð?ð?ð?ð?EB -t>µ-•@?7Q m­¸?þ‘Š¥@§žCÈÍ@«qDQ®`?VF‹ôc/?0Ùeos ?²§å½?fåZÂRé@ŸiLò‰?@;@¢ ÌÌÌÍ@¢ŽøÔýó¶@¢ ÌÌÌÍÁ.„€@¢ ÌÌÌÍÁ.„€@¢ ÌÌÌÍÁ.„€@¢ ÌÌÌÍÁ.„€@¢ ÌÌÌÍÁ.„€@ ~mV@ ~TzáG®@ ~mVÁ.„€@ ~mVÁ.„€@ ~mVÁ.„€@ ~mVÁ.„€@ ~mVÁ.„€@8™*0U2b@8£t¼j~ú@5 -^5?|íÁ.„M‰ûçm@4š~ùÛ"ÑÁ.„QnÙ‡@4xDЩ*Á.„NÜC,¥@4xDЩ*Á.„NÜC,¥@4xDЩ*Á.„NÜC,¥?°{QBãï@8#˜@8¾:@8 >+@8Iç@8Ù?½=,ÜŠ{g@8Î÷@8i§@8Å@8S@8û—?§K¥xMÐR@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø<@­ÒùÛ"Ðå@­Òú¬1@­ÒùÛ"Ðå@­Òú^5?}@­ÒùÛ"Ðå@­Òûçl‹D@­ÒùÛ"Ðå@­Òÿ;dZ@­ÒùÛ"Ðå@­Òý²-V@­ÒùÛ"Ðå@­ÓA‰7L@®ÿ‰7KÇ@®ÿÊÀƒ@®ÿ‰7KÇ@®ÿ@®ÿ‰7KÇ@®þþùÛ"Ò@®ÿ‰7KÇ@®ÿ›¥ãT@®ÿ‰7KÇ@®ÿ`A‰7@®ÿ‰7KÇ@®ÿ+ I@3ð4mÅÖ8@3ð'RT`ª@0£÷ÎÙ‡@0¡ä÷eýŠ@/¿;dZ¬@/¹õY³Ð|@/#¼ÓZ…ˆ@/C,¥zy@/#¼ÓZ…ˆ@/5?|í’@/#¼ÓZ…ˆ@/]cˆe•?|öOÿÝ? ÿ1‡åH?‘*"AaIÐ?Œä%—ëš?‘Dj?’ëÆ[2?|öOÿÝ?’?Á• ñ:?Œqç©Fü?ni"Í š?ÏtP°*?’›â¾Ð'µ?‚Ÿ JŠÅ?îŠõ ?ƒmÕ+&¬Š?„XïWÉò~?†‰Oú|q?‡<û¡71@@@@@@?ð?ð?ð?ð?ð?ð?TS™ß8?P±¥D¸?5hápÿ8‚?ç® Ü±@­Òüä30@®ÿò˜ ¬?Tê´Zª²î?2ØO‡R?¶c—XZG®?qjôW“â`@Ÿfšžï¾@=@­ß²-V@­ßª=p£×@­ß²-V@­ßw1Å@­ß²-V@­ß Ä›¥â@­ß²-V@­ß Ä›¥ã@­ß²-V@­ßšQÎ@­ß²-VÁ.„€@Ÿ<Ÿ¾vÈ´@Ÿ<³3333@Ÿ<Ÿ¾vÈ´@Ÿ<¥”¯O@Ÿ<Ÿ¾vÈ´@Ÿ@ª²‘ë…¸@ª²ˆõÂ[@ª²‘ë…¸@ª²4Ö¡b@ª²‘ë…¸@ª²hÛ@ª²‘ë…¸@ª²’×s@ª²‘ë…¸@ª²°ò{²@ª²‘ë…¸@ª²’þÅm]@¨Ót¼j@¨Ì1&é@¨Ót¼j@¨ÕY³Ð|@¨Ót¼j@¨ÓÝ—ö+@¨Ót¼j@¨ÔSŽóM@¨Ót¼j@¨Ò䎊r@¨Ót¼j@¨ÓÐ|„¶@8Bò䎊@8C©*0U2@3i‡+ @3jŒL˜_@2b-V@2aø -à@1ÿò䎊r@2hr° Å@1ÿò䎊r@2ëíúCþ@1ÿò䎊r@2 [À7?°:-%šÀ?dYûë„{?’Õ ØÎ†{?Ž,OêK˜u?‘‘n{ÆäK?’»«ÒñŒ?žˆ2}?’&u÷E»@?‘½ÀèÑmK?’"Š6›Wz?‘Ð¥uvæ‹o²¿4.ƒ‡ˆ?Øé9ð?(L5}y@¦‹%Ë~‘%@¨¿cnï?!_¨æG»?9òӢס?=FÞ"”§W?ûfºyâ@Ÿs ©§Íû@@@¦Ìw@¦Ìw@¦Ìw@¦ÌðoiDg@¦Ìw@¦Ìðÿ—$s@¦Ìw@¦Ìð|„µÝ@¦Ìw@¦Ìí\ú¬Ù@¦Ìw@¦ÌíúCþ]@©Ž¡ÊÀƒ@©Ž¡ÊÀƒ@©Ž¡ÊÀƒ@©Ž¢‚@·€@©Ž¡ÊÀƒ@©Ž¡ÿ.Hè@©Ž¡ÊÀƒ@©Ž¢\(ö@©Ž¡ÊÀƒ@©Ž¢u%F @©Ž¡ÊÀƒ@©Ž¡°‰ '@0ð4mÅÖ8@0ð:û~‘@.MV“@.L篷è@.h1&éxÕ@.h1&éxÕ@.kjçÕfÐ@.kàÞÒˆÏ@.kjçÕfÐ@.k)^ž @.kjçÕfÐ@.kjçÕfÐ?É^žQ5P‚?äm°û0Ž?‘G¿yÛ?ï?‹ë¤½?‡á?‘Dj?ÛF»0?ÐbMçê_x?’ ,øÕC©?«'Q™µ?>\‰å‘?â2„&ÿh?{L Õ¢D?€bMÕky?Œµ3‰;šÏ?‚‹¡8*ú?‚ìxqC?†¯Mž684?†¼Š˜L¥÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿S‰üÖü¿7¥’L?B\‰Ã vS?"—´\{Yë@¦ÌîѪ@©Ž¢EÆŽ*?Q¦¥¨äÈØ?1“ó»Ž@?ž(+q:ºã?ZØ4ä§[†@ŸsY²¥@A@§ÿ -=p£×@§ÿ -~ùÛ#@§ÿ -=p£×@§ÿ -ŒL™@§ÿ -=p£×@§ÿÛ‹¬r@§ÿ -=p£×@§ÿ º^5?@§ÿ -=p£×@§ÿ1ø @§ÿ -=p£×@§ÿr° Å@¥q“t¼j@¥qÔýó¶@¥q“t¼j@¥qâëC@¥q“t¼j@¥qbMÔ@¥q“t¼j@¥q_ö“@¥q“t¼j@¥q‡ü¹$@¥q“t¼j@¥qµsê³@3Y*0U2b@3Y‡+ @1…?|í‘h@1„%®æ1ø@1t¼j~ú@1ohÛŒ@0”mÅÖ8†@0‘Þi­BÄ@0”mÅÖ8†@0‘Ä2ÊW§@0”mÅÖ8†@0’GE8ï5?|öOÿÝ?Kb½™×?‘½ÉaR º?Ça_b‹?’PY8~Qj?‘ø)±'3?|öOÿÝ?’V"y$R?Ê -ä\ä?‘< /0ç˜?‘ýuãá$6?‘pN.>7E?‚uÞ@>N ?Å9–o?ƒ¡É^&Ö?ƒË´ÔC¶¼?‡æê7²zE?’ymícw\@@@@@,@*?ð?ð?ð?ð?ð?ð¿C »ù ¿G¡T´?2ºïW²åy?1º>Œ`@§ÿ @3ÞJ@¥q]ÐÆã?R‡oÊ-'¼?QAfwºàŽ?±&¨­¾¬Â?¬à£ <@Ÿf‚²¦³;@B@¥ñÚŸ¾vÉ@¥ñÙ™™™š@¥ñÚŸ¾vÉ@¥ñÙ³Ð|…@¥ñÚŸ¾vÉ@¥ñÛ‹¬q@¥ñÚŸ¾vÉ@¥ñÛšt@¥ñÚŸ¾vÉ@¥ñÚ¬Ùè=@¥ñÚŸ¾vÉ@¥ñØÇâ‚A@¢ÉPå`A‰@¢ÉQhr°!@¢ÉPå`A‰@¢ÉP-à @¢ÉPå`A‰@¢ÉPbMÒò@¢ÉPå`A‰@¢ÉP:û~‘@¢ÉPå`A‰@¢ÉP¾ í)@¢ÉPå`A‰@¢ÉP°ò{³@5¥öý!ÿ.@5¥2a|Ú@1ë¥ãS÷Ï@1ëxFÜ]@0È“t¼j@0È“t¼j@0?ò䎊r@0@°ò{²ÿ@0?ò䎊r@0@HðŽ@0?ò䎊r@0?ß;dZ?|¬Çëý ?Úþþ³?‘"žæÆó¡?Œ:Z2‚b?‘¾%î -ã?ø·-/ge?}Ñ¿ž,?’ ŠŠ¤Hì?¹º–Èj?>\‰å‘?‘ ^Íü?ÿ?±—'¶Ü+?‚oÁÆÜ§ö?ŒÆò/¢äÍ?‚yî8Á$?ƒGϵ¨í'?†Ü‘ °Ô?‡ã ËÄž@@@@@(@,?ð?ð?ð?ð?ð?ð?r}M@¿([p?0a|ăó?6Y ²ª¼@¥ñÙêRO¼@¢ÉPò”Z?PU&„µ"°?8—¤ëÇò?¬¥ Cv??~`(üÄç˜@ŸfüÍè8@C@¯iÒn—P@¯iÒn—Q@¯iÒn—PÁ.„€@¯iÒn—PÁ.„€@¯iÒn—PÁ.„€@¯iÒn—PÁ.„€@¯iÒn—PÁ.„€@¯Ê=p£×@¯Ê=p£×@¯Ê=p£×Á.„€@¯Ê=p£×Á.„€@¯Ê=p£×Á.„€@¯Ê=p£×Á.„€@¯Ê=p£×Á.„€@4Y*0U2b@4XÇâ‚@¸@0ÜIº^5@Á.„M‰ûçm@06§ï²-Á.„QnÙ‡@/u¨Xy=ÚÁ.„NÜC,¥@/u¨Xy=ÚÁ.„NÜC,¥@/u¨Xy=ÚÁ.„NÜC,¥?}Ñ¿ž,@8#˜@8¾:@8 >+@8Iç@8Ù?|¬Çëý @8Î÷@8i§@8Å@8S@8û—?‚¯­Ù¤Áµ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøD@¦°MOß;d@¦°W -=p¤@¦°MOß;dÁ.„€@¦°MOß;dÁ.„€@¦°MOß;dÁ.„€@¦°MOß;dÁ.„€@¦°MOß;dÁ.„€@©ªo²-@©ª}²-W@©ªo²-Á.„€@©ªo²-Á.„€@©ªo²-Á.„€@©ªo²-Á.„€@©ªo²-Á.„€@9 xFÜ@8ñhr° Å@3ë¥ãS÷ÏÁ.„M‰ûçm@2ù7KƧðÁ.„QnÙ‡@2uµsê³hÁ.„NÜC,¥@2uµsê³hÁ.„NÜC,¥@2uµsê³hÁ.„NÜC,¥?Ÿ‹‘+-/Ü@8#˜@8¾:@8 >+@8Iç@8Ù?óA[ØïF@8Î÷@8i§@8Å@8S@8û—?Ä`âe@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøE@¥¶Ü¬1'@¥¶ë Iº@¥¶Ü¬1'Á.„€@¥¶Ü¬1'Á.„€@¥¶Ü¬1'Á.„€@¥¶Ü¬1'Á.„€@¥¶Ü¬1'Á.„€@§¥Àƒn˜@§¥¾¸Që…@§¥Àƒn˜Á.„€@§¥Àƒn˜Á.„€@§¥Àƒn˜Á.„€@§¥Àƒn˜Á.„€@§¥Àƒn˜Á.„€@7Ì]cˆe”@7ËP°ò{³@30Ä›¥ãTÁ.„M‰ûçm@2U`A‰7LÁ.„QnÙ‡@2Vý!ÿ.IÁ.„NÜC,¥@2Vý!ÿ.IÁ.„NÜC,¥@2Vý!ÿ.IÁ.„NÜC,¥?|¬Çëý @8#˜@8¾:@8 >+@8Iç@8Ù?°¼x‡Ç…Ä@8Î÷@8i§@8Å@8S@8û—?†' -³}÷B@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøF@¦ñ÷ÎÙ‡@¦ñÿ;dZ@¦ñ÷ÎÙ‡@¦ñúxl"h@¦ñ÷ÎÙ‡@¦ñö¡aä÷@¦ñ÷ÎÙ‡@¦ñöÈ´9X@¦ñ÷ÎÙ‡@¦ñ÷Xâe@¦ñ÷ÎÙ‡@¦ñùrGE8@¡cW -=p¤@¡cdZ¬@¡cW -=p¤@¡cSŽóMj@¡cW -=p¤@¡c["Ðå`@¡cW -=p¤@¡cR×sü@¡cW -=p¤@¡cVý!ÿ.@¡cW -=p¤@¡cUŽ!–S@804mÅÖ8@8.V“u@3Ìí‘hr°@3͸ºÇË@3lj~ùÛ#@3l]cˆe•@2Œ¿±[W?@2'RT`ª@2Œ¿±[W?@2U›=È@2Œ¿±[W?@2Aò×t?°¼x‡Ç…Ä?‘" Á°–•?‘\H{gX ? Ìç,Z?”z|œèç™?–"ûe”M?}Ñ¿ž,?’ÚlE0º?Å)Ì_“?’:u.ý ?–Â4¨ß?”æâ„o?µeão‘ñ?·ïö)h?ƒ~¨õ/¥O?…”rsw?ŠE§e,¤?”8©èÈí@@@@@,@,?ð?ð?ð?ð?ð?ð?./”0¸¿n) èÉ?P·6È;Õõ?R®îH|²Š@¦ñ÷±5l/@¡cW¸ªZJ?aÏk½Ù?yß^*˜‰ø?¶ö½×¸ ü?ê!M^#­b@ŸoŸÌ˜:(@G@ªü.—Oß@ªü5Â\(@ªü.—Oß@ªü3Mj@ªü.—Oß@ªüAohÜ@ªü.—Oß@ªü;‹¬q@ªü.—Oß@ªü.;Í5¨@ªü.—Oß@ªü)*0U2@ª>ûçl‹D@ª?ƒn™@ª>ûçl‹D@ª>úxl"h@ª>ûçl‹D@ª? w1Æ@ª>ûçl‹D@ª>û/ìVÕ@ª>ûçl‹D@ª? [À@ª>ûçl‹D@ª>ü¹#¢œ@7Âò䎊@7¿Ë’:)Ç@5?|í‘h@5>«6z@4iÛ"Ðå`@4k’:)Çz@4O „M@4?|í‘i@4O „M@4éá°‰ @4O „M@4-à ?›’qvš°•?Žd±Ìº?”‰oüq u?ž\ôÖeú?œhÈï?—oN„R?3ßa=„?“Á4œÝi?˜û9]t`? ZÁ».œ?žßÂÚÅ8‡?šÛ’ä|?´÷#i›ÄN?’K•ªQ5?’ÌRû ã?”AXÄ|åy?šz"+;‚á?›°Ô¤A]@@@@@,@(?ð?ð?ð?ð?ð?ð¿fþœH½Â?{våo‚¾‚?eäDF ,w?à;—Þ„ò?¸åÇè/5@Ÿk©¶’@H@®€¢MÒñª@®€¢MÒñª@®€¢MÒñª@®€¤ xF@®€¢MÒñª@®€ŸØ­«Ÿ@®€¢MÒñª@®€¡ohÜ@®€¢MÒñª@®€ uöý"@®€¢MÒñª@®€ Ñ·X@žÆƒn—@žÆƒn—@žÆƒn—@žÆò×s@žÆƒn—@žÆ‰7Kƨ@žÆƒn—@žÆ‚ Iº^@žÆƒn—@žÆƒ¯·é@žÆƒn—@žÆ‚&€I@35S&Á¾@352a|Ú@1k¥ãS÷Ï@1k…¸Që@1,j~ùÛ#@1+çl‹C–@0½cˆe”°@0¼‘ÑN;Î@0½cˆe”°@0¼Æ?@0½cˆe”°@0½!ÿ.Hé?|¬Çëý ?W[†?‘=?ùKh?ŒÇQ´—;}?a¢¶û\?™pf°Žœ@Ÿiˆqu´'@J@ª;ùÛ"Ðå@ª;ú¬1@ª;ùÛ"Ðå@ª;ûdZ¬@ª;ùÛ"Ðå@ª;ú^5?}@ª;ùÛ"Ðå@ª;úŸ¾vÊ@ª;ùÛ"Ðå@ª;ø†YJö@ª;ùÛ"Ðå@ª;øï4Ö¡@¯ w@¯ îÙ‡+@¯ w@¯ ï\(õÄ@¯ w@¯ ðå`A‰@¯ w@¯ ï²-@¯ w@¯ ïhÛ@¯ w@¯ î;Í5§@5¹Œ~($@5²þÅm^@/¤“t¼j@/£ñA [À@.ÄZ¬1@.Ä?åÉ@-zÇË)_@-z)Çy¦µ@-zÇË)_@-{"Ðå`B@-zÇË)_@-zÇË)_?|öOÿÝ?ß‹’bÏ?‘*"AaIÐ?‹¯eU5?‘2A¥Ø?¸û:?1·†Æjñ?’ aÒ¹zï?€s8rÅ?-õI¸`K?Ø¥²À<(?Uÿyu”#?‚íWçé„?Œáò¯ž¼ù?‚Ö˜>µDá?‚ôhBì^?†špk Y?†žóB» “@@@@@@?ð?ð?ð?ð?ð?ð¿-U–½À¿­†€?(U?¨”y×? òôéáãü@ª;ù¶¼ @¯ îÞ¯Ç,?Hbª3lþ?AJ-•x+?ŸÖ´¹[$?|Œ‹é@ŸgJª@¥ô2° Äœ@¥ô-Òñ©ü@¥ô2° Äœ@¥ôÀ qv@¥ô2° Äœ@¥ô¤%®æ1@¥ô2° Äœ@¥ôèr° Å@¥ô2° Äœ@¥óªqÞi®@¥ô2° Äœ@¥ô¬1@9Q|ÚQ@9BÞÑ·@6¦‡+ J@8QÊÀƒn@5Æ“t¼@6–ö”Fs‚@5a:’£S@7uŽ!–S@5a:’£S@5DÉ…ðoj@5a:’£S@5%+ÓÃa?Á¯Ì:¦å%?̰ùC?Ђ·x6?ÀáÜVÖI?¶ÏÇÖ¤¤?¸Ÿû•Öæ?¾„CÚ–•F?Ô¥(Ÿ‚Щ?ÆÆh2áEö?¸§p¦ÿæë?«¬5Kؘ£?Èç -ˆÍ5?ÄR¸P¸?➪“ûŸU?Éÿ*'þn?ÜýÙì 2,?µÝƒÏþ§?±¼BXFzS@@@@@&@*?ð?ð?ð?ð?ð?ð?T~| P¿¦m¼í·4?“¿~¡>?¬à–ú7@¨Ûj]©Ðø@¥ô - åžò?¯™˜òÔ?Ãõq§^×@»Ý§b«F@8æÛNE½ù@ŸmIY€|ü@L@¯› Iº^@¯šót¼j~@¯› Iº^@¯› ’:)Ç@¯› Iº^@¯› -ŒL˜@¯› Iº^@¯› Òñ©ü@¯› Iº^@¯›?åÉ@¯› Iº^@¯›þÅm\@Ÿ\—Oß;@Ÿ\›¥ãSù@Ÿ\—Oß;@Ÿ\¥ãS÷Ï@Ÿ\—Oß;@Ÿ\¤÷eýŠ@Ÿ\—Oß;@Ÿ\¬¿±[V@Ÿ\—Oß;@Ÿ\  qw@Ÿ\—Oß;@Ÿ\ÂZîc!@7ëµsê´@7ä!-w2@3‚° Ä›¦@34Ö¡aå@2²-V@2Šxl"h -@1¸DЩ*@1³S&Â@1¸DЩ*@1·+ Iº@1¸DЩ*@1¬Æ??гá‡}?•.å§ØjM? ±ubÊÅ5?‹¹GüÞõ?“êôÉøX?œˆš—I?}Ñ¿ž,?šr’nc?›«9ØYº,?9ÍÇ~FÀ?’¯dL¶t?–ẕ?ˆïhƒEõ¦?ž=fA:?“'ü#šgã?‰hS—p]Ð?€=P|?žTIœ@@@@@(@&?ð?ð?ð?ð?ð?ð?y$ÓÁÌ?d~×þ?ePEI?U7™°m‹‹@¯›ôR @Ÿ\§ï¢e?‚,1¼\µ?u­Ñœ=©·@Þ&;•©õ?ñ©’}…“Ã@ŸgØ\¼HŠ@M@£X4¼j~ú@£X4¼j~ú@£X4¼j~ú@£X5öý!ÿ@£X4¼j~ú@£X5?|í‘@£X4¼j~ú@£X4ðØDÐ@£X4¼j~ú@£X4mÅÖ:@£X4¼j~ú@£X4záG®@¨ã(õÂ@¨ãj~ùÛ@¨ã(õÂ@¨ãú¬Ùè@¨ã(õÂ@¨ã„µÜÆ@¨ã(õÂ@¨ãžì¿±@¨ã(õÂ@¨ã¹#¢œ@¨ã(õÂ@¨ã¬1'@2p4mÅÖ8@2p-à r@-ëÆ§ï²@-ëÓÃa@@-cn—P@-bÐå`A‰@,ëjçÕfÐ@,ë6z—@,ëjçÕfÐ@,ëjçÕfÐ@,ëjçÕfÐ@,ë6z—?É^žQ5P‚?°çR;?‘ÌË>¯f?‹ËØ|*(?ÿ £‰¸9?²õ/]?ÐbV‡,?’˜‰%F²?~ËQ§?;ß $Þû?ÚÌA B{?M\³Ù“@?€b¡´ñ@?Œµ3‰;šÏ?‚uÞ@>N ?‚ù8 ±^?†’Õaì+’?†’Õaì+’@@@@@*@ ?ð?ð?ð?ð?ð?ð¿, Ÿp>û¤ˆà?Ñ‹GK°x>ú”b9Ô‡@£X4¦ÖÑ@¨ãªáÜ‘?%ø³¹í? )º Îpn?E“•ò€t? ¸I £j,@Ÿs -Ý~¤¡@N@¥bl1&é@¥bl1&é@¥bl1&é@¥bnËûµ@¥bl1&é@¥bra|Ú@¥bl1&é@¥bw§†Â'@¥bl1&é@¥bx}¿H@¥bl1&é@¥bw -=p£@ý-V@ý-V@ý-V@ý1Å@ý-V@ý1Ä2ÊX@ý-V@ý6E¡ÊÂ@ý-V@ý7Xâ@ý-V@ý6”Fsƒ@0Bò䎊@0Be+ÓÃ@-ðå`A‰7@-íBÃÉîÌ@-h1&éxÕ@-b©“ àß@--úCþ\’@-#S&Â@--úCþ\’@-#¯·éú@--úCþ\’@-#ˆe”¯N?É^žQ5P‚?Úþþ³?” -Ÿ”îtI?“ׂa†Üü?–~9n4ºÀ?—oN„R?ÐbMçê_x?’&u÷E»@? Dñ£P?‘§›ßÉîj?’…4Ü.?’ Óº^?€bMÕky?Œ».êxóÚ?‚Ì ÝŽ‚8?„l¯¸‰ŒÎ?†ïRÉv‘Ñ?‰Â“yä–ê@@@@@,@*?ð?ð?ð?ð?ð?ð¾ü5Ÿu€?âWO?Cj®Ú=S?&PõNkxO@¥bw’}eõ@ý6™Ç ?R¥é[Ž?5 /|ÿíB?‘ÞWÔ ?`I¿7"Ö@Ÿrß“€·®@O@¡ ûdZ¬Á.„€@¡ ûdZ¬Á.„€@¡ ûdZ¬Á.„€@¡ ûdZ¬Á.„€@¡ ûdZ¬Á.„€@¡ ûdZ¬Á.„€@’ÝáG®{Á.„€@’ÝáG®{Á.„€@’ÝáG®{Á.„€@’ÝáG®{Á.„€@’ÝáG®{Á.„€@’ÝáG®{Á.„€@8Ù*0U2bÁ.„>¤µÜÆ@4Ù‡+Á.„M‰ûçm@3V”Á.„QnÙ‡@2øDЩ*Á.„NÜC,¥@2øDЩ*Á.„NÜC,¥@2øDЩ*Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøP@­4{çl‹D@­4{çl‹E@­4{çl‹D@­4xÔýó¶@­4{çl‹D@­4}ÈK^@­4{çl‹D@­4ÿÿÿÿ@­4{çl‹D@­4zîcŠ@­4{çl‹D@­4|64@ªÂq©ûçm@ªÂoß;dZ@ªÂq©ûçm@ªÂoÒòä@ªÂq©ûçm@ªÂnzáH@ªÂq©ûçm@ªÂpË)^ž@ªÂq©ûçm@ªÂt•*™@ªÂq©ûçm@ªÂt¯O „@5Ô xFÜ@5ÓÉîËû@3W+ Iº@3V¡aä÷f@2K"Ðå`B@2H*™0¾@1Åœàu÷@1Áÿ.Hè§@1Åœàu÷@1ÄðØDÐ@1Åœàu÷@1ÄmÅÖ8†?€‚ñêã ?‘€5{ºÎ#?‘ê ÷“'?Œ'õ‚$5ñ?’(æ„+Zk?‘‚ÊŸû©?1·†Æjñ?•Ð\ÄÙ?“„;Ë~½ú?ð{¥âdû?’ÞH†<²?›ªU3Îp?ƒ{¬ÉV?3ßa=„?„ü›ðÓ?ƒý¥ñÍú?‡…¤$Ó?ˆk! ¨l@@@@@,@"?ð?ð?ð?ð?ð?ð?'Ç}}`?OŸ“ƒ¨?C°[V‘ZÌ?.Ìüª‰š]@­4|»Ê>•@ªÂqë­¼ ?c”P±8Dj?OÏj.M?Ò6½Ÿh?¦ò,.Wê@ŸgsÐ8a@Q@«lgl‹C–@«lk ¿%Û@«lgl‹C–@«lm]j^ù@«lgl‹C–@«lxìÿb)@«lgl‹C–@«lx+ÞÃÆ@«lgl‹C–@«l…ž[Š@«lgl‹C–@«lzô«Ž×@™Ö“u@™ÂܶÆ@™Ö“u@™ê—µ¤<@™Ö“u@™¿ü›–ó@™Ö“u@™Û­„hò@™Ö“u@™ÌÌ,?@™Ö“u@™³`»úÛ@7ÿ–»˜È@8DóÁâ@3óS÷ÎÙ@3ù6a—Š0@3lj~ùÛ#@3kí/+Н@2}cˆe”°@2q”Gg"µ@2}cˆe”°@2q‹Þ -ÓŒ@2}cˆe”°@2pÝC»?¡D6?E?š×§að?—Rªð‰=»?‘°ûlð~?éñLÉeT?–%t;Ò?€Z=ú‚¡?šõÈí8?“8šYˆðà?–ö«ÂbÚ‘?¤Ž`äëî?˜KaÐOëb?¢&—ìô?“òipžR? Ý®ÙÐ5?6 aµ"?=E8šº?”ˆº¶,:‹@@*@(@&@7@3?ð?ð?ð?ð?ð?ð?kßñ®¿¸¥(?aç‘­"¡’?`0Ö²kÿs@«lx[8o@™ÄíìŒ?{[Dìs?„Œðú— -w?ãÂ@`žŸ?ù„˜Ç…^<@Ÿl*r>@R@£/Ÿ¾Á.„€@£/Ÿ¾@£ŸoÒó@£/Ÿ¾@£ži­BÅ@£/Ÿ¾@£ë…¸R@£/Ÿ¾@£ª0U2b@£/Ÿ¾@£¦s×Ü@ž­Ü(õÂÁ.„€@ž­Ü(õÂ@ž­Ã,¥zy@ž­Ü(õÂ@ž®$÷eý‹@ž­Ü(õÂ@žº?|í‘h@ž­Ü(õÂ@ž­´mÅÖ9@ž­Ü(õÂ@ž­“t¼j€@0òÃÉîËûÁ.„>¤µÜÆ@) -~ùÛ"Ð@)× -=p£@(wOß;d@(›²þÅm^@&¸7´¢3œ@,;À6âì@&¸7´¢3œ@& ÞÒˆÎq@&¸7´¢3œ@&¤%®æ1ù@8 -Näy?ÿ﯒?’,³Zêª@ŸÄ67ÅU?˜ -0˜ggk?˜ñ<óâg…@82rê?’j•×›c?›0–4,Þ@{Æ5_?-C i|â?¬ðþÒg(@8L?àQdËЈ?‡»¢Øˆ‹@ÄéKðo?†ïRÉv‘Ñ?ž#¢¦‘6@@@@$@,?ð?ð?ð?ð?ðøøøøøøøøøøøøS@«·ºáG®@«·»¥ãSø@«·ºáG®@«·¶Ov`@«·ºáG®@«·¾Ñ·@«·ºáG®@«··Á½¥@«·ºáG®@«·µÏªÍŸ@«·ºáG®@«·¸†YJõ@©@@©H1&éy@©@@©Hð@©@@©?U›= @©@@©@uöý"@©@@©4ôgŒ9?‘aYZ†«q?‘އ Àí?‘pN.>7E?©›¿Ínoð?[™ÕÈ™8?ˆïhƒEõ§?†Á{0Ÿà®?ˆ¾þúWZ‹?Š—à `ž@@@@@&@*?ð?ð?ð?ð?ð?ð¿€Dû¿aòÜ2?Jøµì’ÊA?E°*ÀÄ!ø@«··^lÈ@©?Ô"k4?Z_¥2ý¾w?hòsƈ?ª{…ÊR»?ͨˆß”n@Ÿq£ºVËè@T@¨° Ä›¦@¨¯ß;dZ@¨° Ä›¦@¨°Hð@¨° Ä›¦@¨°|„µÝ@¨° Ä›¦@¨°°ò{²@¨° Ä›¦@¨°°ò{²@¨° Ä›¦@¨±&éxÖ@«dæéxÔþ@«dæéxÔþ@«dæéxÔþ@«dèXy=Ø@«dæéxÔþ@«dìL˜_@«dæéxÔþ@«dçE8ï6@«dæéxÔþ@«dè´9X@«dæéxÔþ@«dç_oÒ @4[¹Œ~($@4[ô‡ü¹$@1c÷ÎÙ‡@1d!-w1@0Ͳ-V@0Ìú¬Ùè>@0œÚQÎ@0(Œç°@0œÚQÎ@0cˆe”°@0œÚQÎ@05¨Xy>?|öOÿÝ?¦Ì '?‘ùé éµ??Œ¸ðËb?‘VšÐ^Ø?ý‰w'¬?|¬Çëý ?’p RN%Î?‘´"«Õa?‘§›ßÉîj?‘=d¦^™?›ªU3Îp?‚‘´…=Ca?ŒöOÿÝ?ƒúʳ_Ä?ƒv_.^?‡?®\Âä?ˆk! ¨l@@@@@,@,?ð?ð?ð?ð?ð?ð?0jÂh`?+š{PÀ?v¼x$N»?"—|ú>‚@¨°l}dä@«dçb¶6? cñPG‚¿?C µ_=Õ?Lwz¨ØñL?’5ËPg$@ŸfÏbÙ -@U@£ÛÉ7Kƨ@£ÛÏß;dZ@£ÛÉ7Kƨ@£ÛÈe”¯O@£ÛÉ7Kƨ@£ÛÅÉã@£ÛÉ7Kƨ@£ÛÍÒñ©ü@£ÛÉ7Kƨ@£ÛÇï²-@£ÛÉ7Kƨ@£Û¼ÓZ…‰@¢`(õÂ@¢`XbN@¢`(õÂ@¢`e+ÓÄ@¢`(õÂ@¢`×sü@¢`(õÂ@¢`<65@¢`(õÂ@¢`ÌcñB@¢`(õÂ@¢`dZ¬@7įO „M@7Ãn—P@3|í‘hr@3Œ(õÂ\@3ï²-@3¶®}Vm@2._oÒ @2)ùrGF@2._oÒ @2'eýŠÚº@2._oÒ @2¿HË’?€‚ñêã ?•ìspîî?”Uy*ð>ýÜÇœ‰LØ>ûˆü²Á$®@¢Îh†›…Ú@•‰¼Î(Š?½~'b¢? Fýë¿Þ?H¹½u[9?DFLx‹0ï@Ÿgpôa@X@«˜—Oß;@«˜‹Æ§ïž@«˜—Oß;@«˜“œ¾à@«˜—Oß;@«˜’a|Û@«˜—Oß;@«˜ªÍž„@«˜—Oß;@«˜‘ÑN;Í@«˜—Oß;@«˜’䎊r@¤y4¼j~ú@¤y3¶E¡Ë@¤y4¼j~ú@¤y:Ÿ¾vÊ@¤y4¼j~ú@¤y9b¶¯@¤y4¼j~ú@¤y:)Çy§@¤y4¼j~ú@¤y;²þÅn@¤y4¼j~ú@¤y=¥œß@8ãg ù l@9ªdÂø8@4©‡+ @4¨Ôýó¶F@3V”@3cˆe”¯@2á:’£S@2ÝjOv@2á:’£S@2ÚÀƒn˜@2á:’£S@2Û…¸Qì?±ÿ}ö?—TÛ’}÷”?›£=Ñã5?šniÙÊ¢Ð?–(Ži´™^?’Ýå"çX?™™™™™™š?“«ö„@×®?“½ ™¸‹ì?—,àÐÑž?—å$ZÌÆ?”÷\Å©U?½&·-æ¨?–xéCìZÒ?ˆAᆽÃí?†ü¢q+ÄU?‘HAõY‚§?’Oûh´6c@@@@@,@&?ð?ð?ð?ð?ð?ð?W,d“œ?`"Ôa?IæOý*(?(ÍB¡Óœñ@«˜áé­w@¤y:î%ø?/%-³Á`?F32ƒH(Ì?E{YH™$?|?qÒŒ@Ÿpé&Ìq@Y@£ù¤Ý/ @£ù¥¸Qì@£ù¤Ý/ @£ù¢&€I@£ù¤Ý/ @£ùŸ;dZ@£ù¤Ý/ @£ù¥ýŠÚº@£ù¤Ý/ @£ù¥m\ú­@£ù¤Ý/ @£ù¢ÃÉîÍ@®Ì A‰7L@®Ì¡G®{@®Ì A‰7L@®Ì ÞÒˆÎ@®Ì A‰7L@®Ì¥`A‰7@®Ì A‰7L@®Ì£ñA [@®Ì A‰7L@®Ì£,¥zx@®Ì A‰7L@®Ì§ü¹#£@5Ù*0U2b@5ÙÎ_oÒ@3.5?|í‘@3-}¿HË@2H“t¼j@2GOß;d@2(è§æ›@2(1&éxÕ@2(è§æ›@2(Ë’:*@2(è§æ›@2&€IQƒ?1·†Æjñ?‘‘Ç`[?‘:€¾¶ˆ?Œ‚èõЊ?“Ýâqß?”ÙA!Xá¨?…ÅBðrç?“?xr¢I?³2ºŽ'?èÊ\då?•Ÿ6mþ)¢?“ 3—·²W?‚oÁÆÜ§ö?Ñ¿ž,?…~ÆÎÇ$‡?…bv{3dZ?‰®ââP\?ˆT“Ÿÿ@@@@@"@$?ð?ð?ð?ð?ð?ð¿"aã ?QÉ^̤?3};t$ß?7b|(Íkr@£ù¤ùHü@®Ì£œœà?SfQ -³?W:KÖãs°?®ÒŸHý|?±h9lÚþ@Ÿg¥/e+@Z@¨˜(õÂ\@¨˜)º^5?@¨˜(õÂ\@¨˜7süQ@¨˜(õÂ\@¨˜2ˆÎp;@¨˜(õÂ\@¨˜?|í‘h@¨˜(õÂ\@¨˜>i­BÄ@¨˜(õÂ\@¨˜fö”Ft@¦7¬1'@¦7çl‹E@¦7¬1'@¦7ŠÚ¹õ@¦7¬1'@¦7ÓZ…ˆ@¦7¬1'@¦7=ÈL@¦7¬1'@¦7&Á¾@¦7¬1'@¦7}¿H@4òÃÉîËû@4ò-V@0û Iº^@0ôðØDÐ@0'KƧïž@0!ë…¸R@0:Ô,<ží@02@·€4n@0:Ô,<ží@0&¸ºÇ@0:Ô,<ží@0'ÕfÏAò?|öOÿÝ?’g½þË£?‘Ú¾¯ïé?Ž‚¨Ø†{~?žî üÑ)?ºæ'Ýt?|öOÿÝ?’p RN%Î?ÏtP°*?‘§›ßÉîj?—÷Ë5D«ç? új^œqò?ƒ~¨õ/¥M?ŒÐ¤Âÿê?…/‡ÙX·³?…bv{3dZ?a…眷D? tÆùlŠ@@@@@ @,?ð?ð?ð?ð?ð?ð?~#|îK¿S{õD?VáŽã„Vn?FrŸ\Þ@¨˜4¸7ÜÄ@¦7BÐz?p·§W¨ZÁ?aüþ?Sî?ã £wšºp?Ê•ZŒ{Ô@Ÿax@15d@[@¥j~ùÛ#@¥hõÂ\@¥j~ùÛ#Á.„€@¥j~ùÛ#Á.„€@¥j~ùÛ#Á.„€@¥j~ùÛ#Á.„€@¥j~ùÛ#Á.„€@zLÌÌÌÍ@zN\2@zLÌÌÌÍÁ.„€@zLÌÌÌÍÁ.„€@zLÌÌÌÍÁ.„€@zLÌÌÌÍÁ.„€@zLÌÌÌÍÁ.„€@7ò䎊@7XÛIÇ@3óS÷ÎÙÁ.„M‰ûçm@3ÐA‰7KÇÁ.„QnÙ‡@3&YJôðØÁ.„NÜC,¥@3&YJôðØÁ.„NÜC,¥@3&YJôðØÁ.„NÜC,¥?…Hùg @8#˜@8¾:@8 >+@8Iç@8Ù?ƒÔo"ë–@8Î÷@8i§@8Å@8S@8û—?¡›Y,ën@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø\@¡)gï²-Á.„€@¡)gï²-Á.„€@¡)gï²-Á.„€@¡)gï²-Á.„€@¡)gï²-Á.„€@¡)gï²-Á.„€@¦hœ(õÂÁ.„€@¦hœ(õÂÁ.„€@¦hœ(õÂÁ.„€@¦hœ(õÂÁ.„€@¦hœ(õÂÁ.„€@¦hœ(õÂÁ.„€@8úqÞi­CÁ.„>¤µÜÆ@5Ê^5?|íÁ.„M‰ûçm@5v§ï²-Á.„QnÙ‡@4Ì¿±[W?Á.„NÜC,¥@4Ì¿±[W?Á.„NÜC,¥@4Ì¿±[W?Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø]@®Œ½p£× -@®ŒÇï²-@®Œ½p£× -@®ŒÂÐå`C@®Œ½p£× -@®ŒÈÛ‹¬r@®Œ½p£× -@®Œº6âë@®Œ½p£× -@®ŒŸb¶®}@®Œ½p£× -@®Œ¢ÃÉîÍ@¬¸F$Ý/@¬¸Iº^5?@¬¸F$Ý/@¬¸P Ä›¦@¬¸F$Ý/@¬¸xâe,@¬¸F$Ý/@¬¸FÂ&€œ@¬¸F$Ý/@¬¸pbMÒò@¬¸F$Ý/@¬¸lq ²–@8è†YJôñ@8à6âë@45ãS÷ÎÙ@4!£n.±Ä@3•`A‰7L@3mjOw@3O „M@2æs×Ûõ@3O „M@2í\ú¬Ùè@3O „M@2ï „M;?¤I~Óy‘?™•žõ‰Û?ª¦­|JOÐ?°ž‹<›Þ?©×žA:ã#?­½ò™Ýq?›’qvš°•?›ƒ¸Ý³?º÷hwpØc?²ÅD­ŒB,?¶£œ¤ƒ?ºÎŒtìn?¦ -Ð0ú:C?›Õ¼ÉUÓ›?’-BR1Å?’¤õ³Æ«?“!S{uu?¬·¹½'ñ›@@@@@*@,?ð?ð?ð?ð?ð?ð¿eº€?yõã:?^mC¿z?k*dSÁ -¾@®Œµõ9b@¬¸Vš¼°†?~MïlúÙ?‹€c£Û7Ö?Å„ Ìu`?×_ËI«ò@Ÿfîçˆ@^@žòIº^5?@žòJ=p£×@žòIº^5?@žòLIº^5@žòIº^5?@žòL"4jŒ@žòIº^5?@žòKÑ€ÚÁ@žòIº^5?@žòG1ÎlP@žòIº^5?@žòGB Ç@¬Rñ©ûç@¬Rñ©ûç@¬Rñ©ûç@¬Sv õØ@¬Rñ©ûç@¬SQlu@¬Rñ©ûç@¬SUÍ‘î@¬Rñ©ûç@¬S©²8e@¬Rñ©ûç@¬T.f’@1D¯O „M@1D¼j~ùÛ@,³t¼j~ù@,³x4Ÿ@+/ß;dZ@+/Ùý6÷å@+p‰ 'RU@+pIQ‚ª@+p‰ 'RU@+p|„µÜÇ@+p‰ 'RU@+pt#mR«?É^¨¯Âj?¾Œn‘†?‘-jõ¬?‹«ég€eÜ?쑪…Tƒ?µûê?ÐbMÝn½?’ΰ¡ày?[UòkV?2,gÉ Ô?ÐsRdéÑ?Iâo®É?€bMÔŠ»?Œ­Ea©Ó‰?‚nÚ¨´8Ñ?‚ç\fò ?†‰ýçïe?†Š®ÚH„ð@@@"@$@4@4?ð?ð?ð?ð?ð?ð¿Q"G/œ?7~fº‚?6ut¥Ì÷f? YUðoÜÚ@žòI¼²d@¬S¯kÖ›?Eš!K?ÔÎ>¡‹F?†ól¶ù©£?/¢‡ß²^|@Ÿs ƒê@_@¦¯mV@¦¯a$Ý/@¦¯mVÁ.„€@¦¯mVÁ.„€@¦¯mVÁ.„€@¦¯mVÁ.„€@¦¯mVÁ.„€@¤Ô;çl‹D@¤ÔA$Ý/@¤Ô;çl‹DÁ.„€@¤Ô;çl‹DÁ.„€@¤Ô;çl‹DÁ.„€@¤Ô;çl‹DÁ.„€@¤Ô;çl‹DÁ.„€@8?–»˜È@88ÁTÉ…ð@5Ù‡+Á.„M‰ûçm@5"-VÁ.„QnÙ‡@4QÞi­BÄÁ.„NÜC,¥@4QÞi­BÄÁ.„NÜC,¥@4QÞi­BÄÁ.„NÜC,¥?гá‡}@8#˜@8¾:@8 >+@8Iç@8Ù?¢Æ÷Xê†@8Î÷@8i§@8Å@8S@8û—?ƒúʳ_Ã@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø`@©˜ Iº^Á.„€@©˜ Iº^@©—úxl"h@©˜ Iº^@©—Çü¹#£@©˜ Iº^@©—ó@N¤¨@©˜ Iº^Á.„€@©˜ Iº^Á.„€@ŸYOß;dÁ.„€@ŸYOß;d@ŸY’:)Çz@ŸYOß;d@ŸZ Ä›¥ä@ŸYOß;d@ŸYÖR½<7@ŸYOß;dÁ.„€@ŸYOß;dÁ.„€@7„¯O „MÁ.„>¤µÜÆ@5›¥ãSø@4ÿHË’:@4±‰7Kƨ@4Æý!ÿ.I@3¦YJôðØ@3ž;Í5¨Y@3¦YJôðØÁ.„NÜC,¥@3¦YJôðØÁ.„NÜC,¥@8J¨?±;)ry²/?Æ”ø‹Ø¯?—Ýúâþ @8Iç@8Ù@8J¨?¢åµ0Å?Ä‹“IV÷q?®¡E¬Óɨ@8S@8û—@8p÷?¯r -e&#œ?Ã¾áØ³qª?ožQw@8 Ø@8 Ø@@@?ð?ð?ðøøøøøøøøøøøøa@ª"í‘hr°@ª"ï²-@ª"í‘hr°@ª"íBÃÉð@ª"í‘hr°@ª"éûçlŠ@ª"í‘hr°@ª"àƒn˜@ª"í‘hr°@ª"Ýp£× -@ª"í‘hr°@ª"áTÉ…ï@Ÿ­ 7Kƨ@Ÿ­n—P@Ÿ­ 7Kƨ@Ÿ­KƧïž@Ÿ­ 7Kƨ@Ÿ­¯4Ö¡b@Ÿ­ 7Kƨ@Ÿ­Ž¤¨ÁT@Ÿ­ 7Kƨ@Ÿ­w€4mÆ@Ÿ­ 7Kƨ@Ÿ­Ò×sû@7*0U2b@7"h Ô•@4}‘hr° @4v$Ý/ @4€å`A‰7@4iDg8~@3õµsê³h@3ØÛ‹¬q @3õµsê³h@3Ê Þ@3õµsê³h@3ÈõÂ\)?ð°–Ž]? dãŸ^?­;ðÕwß{?£ìߦË>?¡úñÙà?¡X“P#®?ð°–Ž]?&”ðÚ˜?´#f¨’L -?´f *N˜?»ðŒQÔE?ÄùËä#ÚÉ?ð*wjs—?“êXÔ #{?§K¥xMÐR?£øƒqÌ?¥VËMª¼‰?±¨ÙN;…?ð@@@@&@,?ð?ð?ð?ð?ð?ð?5maê?§0{£?U†«$+å'?…N1¥J»@ª"ßž: @Ÿ­“*RX´?e|œkÍP?’gÂÛ#?› “?Š8m?Æ)-[¤µÜÆ@3{ Iº^Á.„M‰ûçm@2Àå`A‰7Á.„QnÙ‡@2mÅÖ8†Á.„NÜC,¥@2mÅÖ8†Á.„NÜC,¥@2mÅÖ8†Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøc@¦¬€ƒn˜@¦¬yÛ"Ðå@¦¬€ƒn˜@¦¬m‘hr°@¦¬€ƒn˜@¦¬q[W>ª@¦¬€ƒn˜@¦¬gÈK]Ì@¦¬€ƒn˜@¦¬ezxl#@¦¬€ƒn˜@¦¬fµ (@§ìMÒñ©ü@§ìGl‹C–@§ìMÒñ©ü@§ì["Ðå_@§ìMÒñ©ü@§ìP°ò{³@§ìMÒñ©ü@§ìU¨Xy>@§ìMÒñ©ü@§ìYŒ~($@§ìMÒñ©ü@§ìWsüP@7`ØDЩ@7aœàuöý@1½‘hr° @1·RT`ªd@0¾V“u@0·´¢3œ@0 ¿±[W?@0 ^žš@0 ¿±[W?@0?åÉ@0 ¿±[W?@0'RT`ª?€‚ñêã ?“”üU§<­?˜g± ÓË?Ž,OêK˜u?Ÿˆ`“Q?¢zvíÈ­c?„F/·ÿP5?–wzCœËï?œ”ÒÚ×¾æ?0ÜN :s?œ—ø#\á?›¶x•7fÙ?ŒÊ­#г^? *i B??˜o\¾Z|?…âC£½¾Ý?ˆT“Ÿÿ?¢ŠEÈ>g@@@@@,@*?ð?ð?ð?ð?ð?ð¿vlYQ°?q Ôoî?QØß›i ?JÊ»½ÄÎ(@¦¬nôN†–@§ìO뫸?mÙ[’‰_ã?h%²8ºþ.?ÙÅxc^Ø?ÐÛ6VïñÒ@ŸdæWÍr@d@­}\¬1'@­}]p£× -@­}\¬1'@­}n;Í5§@­}\¬1'@­}¥o@­}\¬1'@­}—$tS@­}\¬1'@­}‰ 'Q@­}\¬1'@­}˜bMÓ@¢¼+ Iº@¢¼)º^5?@¢¼+ Iº@¢¼!$Ý/@¢¼+ Iº@¢¼)­BÃÊ@¢¼+ Iº@¢»æÁ½¥@¢¼+ Iº@¢¼hÛŒ@¢¼+ Iº@¢¼rGE9@5·â‚@·€@5¸ Ô•*@6¡hr° Ä@6&éxÔþ@6V”@5çXâe@5(è§æ›@4ïªÍžƒä@5(è§æ›@4õ`A‰7L@5(è§æ›@4ù…ðoiE?|öOÿÝ? í+ÁÁú?·¢…£qðÎ?ªî…T%?ªxàôTl?·ÞN*·?|öOÿÝ?™|ÎFe‰f?È7tgÛ?­&*N‡?´g“®zà?¹«5t3w9?ƒ>ZÌw~?¬œ”e¸?­æMBé–?¢U]^á,Ç?¡EL¬À?Ú¾ÉÛ²º@@@@@(@(?ð?ð?ð?ð?ð?ð?Žþ©€¿‡=Í€?g˯N™?|<ªjb@­}j&Ê@¢¼ÔÇ[?vØym¼Ù$?Š?­îà›­?åTjŠ\&@¹_³‘œ@Ÿ\¢¢éÈ@e@¥<Ÿ;dZ@¥<¨õÂ[@¥<Ÿ;dZ@¥=|¾ß¤@¥<Ÿ;dZ@¥=2° Äœ@¥<Ÿ;dZ@¥=ò¼£@¥<Ÿ;dZÁ.„€@¥<Ÿ;dZÁ.„€@«5?|î@«p£× -@«5?|î@«Ezxl"@«5?|î@«Hð@«5?|î@«G+ J@«5?|îÁ.„€@«5?|îÁ.„€@7#g ù l@7"þÅm\ú@4GÎÙ‡+@4÷ÎÙ‡@3{Ƨï²@3MV”@3+xFÜ^@2ÏU›=È@3+xFÜ^Á.„NÜC,¥@3+xFÜ^Á.„NÜC,¥?Œs¤DÅÐ?Í€¼îVê?à ñ•º?ÜKw¦¢£Ž@8Iç@8Ù?Ž=fA:?©ûÙ_Â.`?°ì3&‡Ì?Äcx!þaD@8S@8û—?•@K/Ù{?§Y+®„£:?§C9«ã?·ÌŸ²$@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøf@ª£ÍOß;d@ª£âMÒñ©@ª£ÍOß;d@ª£È1&éy@ª£ÍOß;d@ª£Æ¸ºÈ@ª£ÍOß;d@ª£ÈXy=Ú@ª£ÍOß;d@ª£Ð°ò{³@ª£ÍOß;d@ª£Ó×Ûõ@««Æ§ï²@««Ót¼j~@««Æ§ï²@««Â©“ á@««Æ§ï²@««¿|í‘h@««Æ§ï²@««ÅF -¦L@««Æ§ï²@««Á°‰ '@««Æ§ï²@««¸ -à@92ÃÉîËû@9<žì¿²@4ahr° Ä@4\„µÜÆ?@3±‰7Kƨ@3°A‰7KÆ@2î_oÒ @2ê…‡“ݘ@2î_oÒ @2ëW>«6z@2î_oÒ @2è†YJôñ?îŠõ ?‘@@Nßo9?”B 'nr?U›=ÈK?•bJÖµæÿ?•ï¢Ò®F?¿Ëg1Ñ?“£PuòN?—+Áèlç?‘M –=?“«YNÚ˜°?¢ðŒHößÃ?À -šeKsÁ?“8í¢ßA?‡š¿]b?…bv{3dZ?IÏáå$?–‘ñ ç{t@@@@@"@(?ð?ð?ð?ð?ð?ð¿\“^¿rC­6?nó·S l…?S~€È†Óñ@ª£ÏsðI@««Â·r½d?†}¿j½o?`ƒf¬ˆe@¼/sD36?­®XTWóï@Ÿp/%Æ5@g@§¯n—Oß@§¯wÎÙ‡@§¯n—Oß@§¯ov_Ø®@§¯n—Oß@§¯p£× -=@§¯n—Oß@§¯mà q@§¯n—Oß@§¯pØDÐ@§¯n—Oß@§¯p¾ í)@¨kÌIº^5@¨kÌ1&é@¨kÌIº^5@¨kÐ£× ->@¨kÌIº^5@¨kÐË)^Ÿ@¨kÌIº^5@¨kЖ»˜Ç@¨kÌIº^5@¨kË’:)Ç@¨kÌIº^5@¨kË Iº@7ò䎊@6ÿv_Ø­¬@2ahr° Ä@2cS&Á@1—ï²-@1šçÕfÏB@1a:’£S@1g§†Â&@1a:’£S@1cn.±Ä3@1a:’£S@1dFs×Ü?‚á²Olºü?µ‡:úÎ ?‘jh¨qã9? Ìç,Z?’o?P´À?‘À?ÙÂ#’?‡YÍ_?’u¦ieõ–?ö”iåó¨?”¡VòÄ\F?’ºñS©YÖ?“t‡o(ÚÊ?•‡C¿ ?]ÒivLÿ?…/‡ÙX·³?‡µ‚[Ö?ˆ©{2¡Î?‹DVóö@@@@@,@,?ð?ð?ð?ð?ð?ð¿]žZä¿Pè,€?Kxn‹º_?DAý)TÙ„@§¯r£ƒŸ@¨kÌrÎ@Î?k³µ W:·?d¾•~#µ^?ÞuP*üK?ÉÔõ™o»@Ÿhí>>w@h@¨s¯²-@¨s¯\(õÄ@¨s¯²-@¨s°¸»@¨s¯²-@¨s° Ä›¦@¨s¯²-@¨s°¸»@¨s¯²-@¨s¯hÛŒ@¨s¯²-@¨s®æ1ø¡@­ª®—Oß@­ª­Òñ©ü@­ª®—Oß@­ª¯Ÿ¾w@­ª®—Oß@­ª¯ƒ{J"@­ª®—Oß@­ª¯hÛŒ@­ª®—Oß@­ª®Ù‡+@­ª®—Oß@­ª®±Ä2Ê@4™*0U2b@4™“ àÞÒ@/Û"Ðå`@/è>BZî@,¿;dZ¬@,¿|í‘hs@+Ǔݗö,@+džÂ&€ž@+Ǔݗö,@+Ç ù kº@+Ǔݗö,@+Ǔݗö,?|öOÿÝ?ÉGãA­÷?‘!!Ø×‹7?‹¨þ„/š?ÿ £‰¸9?È2I/?|öOÿÝ?’ aÒ¹zï?ŠA)Nîá?7枪y7?Ö§­îQD?X78›š?ƒíÈm½!¾?Œ¯þuõí?‚‹¡8*ú?‚æÊ¬vã?†’Õaì+’?†½ª»—@@@@@,@(?ð?ð?ð?ð?ð?ð¿­ŽË€?.V¾þ?Ç™¶Õ?©û¬…@¨s¯Y3r&@­ª®a2+??ž¿á ¶¥?5{^Þ†1Ï?‹ù€º?wþTC0Ú@ŸgÌ[À@i@¡; Ä›¥ã@¡;¥`A‰6@¡; Ä›¥ã@¡;¢\(ö@¡; Ä›¥ã@¡;¡G®{@¡; Ä›¥ã@¡; Ä›¥ã@¡; Ä›¥ã@¡;¡@N¥@¡; Ä›¥ã@¡;¡ohÜ@«7ï²-@«7ÚáG®@«7ï²-@«7î;Í5¨@«7ï²-@«7ê¦L/ƒ@«7ï²-@«7ë…¸R@«7ï²-@«7ë]Ìcñ@«7ï²-@«7êÍžƒä@7Y*0U2b@7B½<64@1» Iº^@1ºÚ¹õY´@1Wï²-@1Vµ '»@1Œ~($ @1škP°ò@1Œ~($ @1*™0¾@1Œ~($ @1y¦µ ?ˆÿÀ)T¿Æ?ûJ`ÕYð?‘"žæÆó¡?ŒR‹w#z?’êÔÒ?’4¶ó?„F/·ÿP5?’5CàQ?ŽËÜ¿€?-õI¸`K?’W;„zY?’.8 -B?«ú—ÇZà?R©i»èi?ƒ´],m=?ƒv_.^?‡?®\Âä?‡?®\Âä@@@@@(@*?ð?ð?ð?ð?ð?ð¿OI=H¬?oKý ?9>ìÉ ×«?Q_X¹ëeÿ@¡;¢kòùÏ@«7å„ö6E?W¹|¬oJÉ?qÁyÔ .?³r+p€8?æfâÙ´k+@Ÿi˜!šyµ@j@«¢âMÒñª@«¢Û"Ðå`@«¢âMÒñª@«¢çÕfÏB@«¢âMÒñª@«¢ßb¶®}@«¢âMÒñª@«¢å`A‰6@«¢âMÒñª@«¢ßb¶®|@«¢âMÒñª@«¢å`A‰7@®Û"Ðå`@®çï²-@®Û"Ðå`@®ÜÆ?@®Û"Ðå`@®ÙÀëíû@®Û"Ðå`@®Ü]cˆf@®Û"Ðå`@®àƒn—@®Û"Ðå`@®Ü£n/@8‡>«6z@8’ˆÎp:ü@3ÜIº^5?@3Ý!ÿ.Hè@3Wï²-@3Z’£S&@3mÅÖ8†@3§†Â&@3mÅÖ8†@31Å‚@3mÅÖ8†@3?|í‘i?€‚ñêã ?‘+ùÔ!½Š?•XYäý?“ׂa†Üü?’yÊêºq?’*Mõis?¸¤(¾ÂeI?’ ·6Öc¤?•¶ÀA½ -;?›|¦l¯âU?“úaû]?‘Qïʾ?Ãp`ŠÛD?Ž*JŠË?‰¢Ò+ÜÝ—œ ?ŒC ãSG?Š|)-}í(@@@@@@?ð?ð?ð?ð?ð?ð?_O:Ë$¿RCu–?HÁw½ª?ZØ-Ê‹œ@«¢âP,{(@®ÞiÁ¶›?qšÚ_ºë?k›r -ç«þ?ÙºÿƒÿX?ÂTbî˜BO@Ÿr>:`´Ô@k@¨P½ó¶E¢@¨P¶‡+ @¨P½ó¶E¢@¨P½ó¶E¡@¨P½ó¶E¢@¨Pµéá°Š@¨P½ó¶E¢@¨P¼wškP@¨P½ó¶E¢@¨Pµ '»@¨P½ó¶E¢@¨P ÞÒˆÍ@§ó}ó¶E¢@§óy™™™š@§ó}ó¶E¢@§ó~Ov_Ø@§ó}ó¶E¢@§óˆK]Ìe@§ó}ó¶E¢@§óˆ$ x@§ó}ó¶E¢@§óxüPH@§ó}ó¶E¢@§ó~ÒˆÎp@8|ÚQ@8ë…¸R@3½‘hr° @3¹xÔýó¶@3PA‰7KÇ@3L‹C•@2«xFÜ^@2¬Æ?@2«xFÜ^@2¬ç¯·é@2«xFÜ^@2¦®}Vlô?1·†Æjñ?‘Ð`HÇh?™KÔ9\Ä?’èÞ㬱_?™ìbðCú?¥Œ#ghç›?–ªÎ­¡?’j%ÓRa?•ê?íuA?•WŠ­ ?—ˆ”„òõ¤?—vÑékÜ?— —‰Ò‡?’[éæóL³?qÂ' -Bœ?‹µ¼a?”"‚Ò#?›P^eNÇQ@@@@@,@*?ð?ð?ð?ð?ð?ð¿BC}Ø?@oqI¬?`1ðâXk?c̽Øf²,@¨Pµ·F®±@§ó~­ñ´?ry›ÏP„?‚ø,A?õÊ.ü‰³"?ó~~‹-m@ŸhûÔ V`@l@¦¾St¼j@¦¾==}mq@¦¾St¼j@¦¾ì‰Îô@¦¾St¼j@¦¾ Û:Žo@¦¾St¼j@¦½ý¿‚¬ì@¦¾St¼j@¦½ø+Ë@¦¾St¼j@¦¾­«ŸW@•°!ÊÀƒ@•°8Që…@•°!ÊÀƒ@•°/ÓùF@•°!ÊÀƒ@•°1‡T@•°!ÊÀƒ@•°2q‡I@•°!ÊÀƒ@•¯ÎÛZ@•°!ÊÀƒ@•°¡ÿ.Hé@7Âò䎊@7ªÐïtÔt@4Å?|í‘h@4¼ÇUį@3Ú~ùÛ"Ñ@3ÈJ!"6@3fYJôðØ@3T¤¡†fÆ@3fYJôðØ@3Cp~W“ÿ@3fYJôðØ@2ûçl‹C–?ƒ6ð]g™ä?¡fÕA½ž¶?¨Q¼O&7*?š³5ñ© -z?£ê-T³Ý?ÂH[ R§C?Ö?ŠÓ'P?´õm'Èx?³2õïÆ"?¦Íɳê?°N¨Gአ-?¹d -™Oe?¥•ÏÛäå°?¤{®ìbÆâ?§Ör7\Àå?§!N/p?¢k´¨†Çi?«ê3ƒsЍ@@(@,@(@7@*?ð?ð?ð?ð?ð?ð¿”RÔ¥i@¿f Üïß?k#£L4?¬Ðs4@¦¾£{‚Š@•°,ÔÅ»Â?ˆ9Q)Mf?ž‡Åx~?ù{½0“@ fíÅ0²›@Ÿd‰ÏU¹ @m@¦ÜÕ$Ý@¦ÜÔ¼j~ù@¦ÜÕ$Ý@¦ÜÖÈ´9X@¦ÜÕ$Ý@¦ÜÖ”Fsƒ@¦ÜÕ$Ý@¦ÜÖ8†YJ@¦ÜÕ$Ý@¦ÜÕ›=È@¦ÜÕ$Ý@¦ÜÔ`ªdÃ@«ô™™™™š@«ô—KƧñ@«ô™™™™š@«ô™‡+@«ô™™™™š@«ôŸ±[W@@«ô™™™™š@«ôœ£n0@«ô™™™™š@«ôš)Çy¨@«ô™™™™š@«ô˜_ö”@7-¥œàv@7.±Ä2ÊX@2é‡+ @2é=Ùb¶@2"-V@2"T`ªdÃ@1O „M@1Ÿ¾vÉ@1O „M@1!-w1@1O „M@1Žì¿±[X?’Óusÿ\Ã?ï1ïºÅ?’Õ ØÎ†{?ºgk\0?‘×´<î¯j?‘…Rgå.?„F/·ÿP5?’ -‰¸Ì?‘[RK¶ËE?‘~¬Àm?ó?‘†óèJL\?‘ ‡#é -´?“ d?îŠõ ?ƒÆ×q„nð?ƒ­=aÊw%?‡?®\Âä?‡YÍ_@@@@@,@*?ð?ð?ð?ð?ð?ð¿¥™Ç@??úË@?3ƒÔÌ]?@£_ý-@¦ÜÕNìü@«ô™#Ûì ?På“`¡|ô?aëat³wœ?ÒûV¿R?ÅÊNTp–@Ÿk¥˜ãoÅ@n@¤çl‹C–@¤âÐå`B@¤çl‹C–@¤åœàv@¤çl‹C–@¤ì‹C•@¤çl‹C–@¤ä2ÊW©@¤çl‹C–@¤ç¯·é@¤çl‹C–@¤ç®zá@¤ÅLIº^5@¤ÅNÙ‡+@¤ÅLIº^5@¤ÅHšu%@¤ÅLIº^5@¤ÅPË)^ž@¤ÅLIº^5@¤ÅHÛ‹¬q@¤ÅLIº^5@¤ÅIÔ•+@¤ÅLIº^5@¤ÅKC,¥@7” xFÜ@7quŽ"@3º^5?}@3~ÿ—$@2Ͳ-V@2Ξš@2fYJôðØ@2iQ‚©“ @2fYJôðØ@2iÇy¦µ @2fYJôðØ@2k=ÈK^?¡ÅꯨŠT?‘‘Ç`[?‘„ë2‘~?• +ÏÄ¡?“2{Áw¸?•(Ï¢Uÿ?•²»UbB2?“-N•I`(?‘t‰WZñ?—°Ó&v'ç?•nW*Ø„?•êÁØ|?„ò—TËÃ?Fƒ¿p7€?qÂ' -Bœ?‘l_zU’Ý?’3¨£„È?K·‘d\@@@@@*@*?ð?ð?ð?ð?ð?ð?R¾p<~¿KiÌ`¤?2Ð\C?CŒâÛ@¤å˜B“@¤ÅKfC -?K:8è•¶?b#Øyú?†XýÀ‹Qõ?µ¿Íjy <@ŸnT<ì?@o@¦ß;dZ@¦È1&éy@¦ß;dZ@¦ã× -=r@¦ß;dZ@¦ÙõY³Ñ@¦ß;dZ@¦ã¯·é@¦ß;dZ@¦àN¤¨Á@¦ß;dZ@¦Ûô‡ü¸@¬qàA‰7L@¬rzáH@¬qàA‰7L@¬qÚ¬1@¬qàA‰7L@¬qâÞÑ·@¬qàA‰7L@¬qá [À@¬qàA‰7L@¬qÜPHð@¬qàA‰7L@¬qàhÛ‹­@9‡>«6z@9g´¢3œ@4Ùº^5?}@4ߪ͞ƒä@4t“t¼j@4y¦µ (@3¸DЩ*@3¾ì¿±[X@3¸DЩ*@3¾_oÒ @3¸DЩ*@3À‰ 'RT?±ÿ}ö?êÚÏ$?¡ ×1èB?ŒGZ0eê;?—À °Ø§ ?—šÜ!2f…?±Á1Èáý?ƒÁþGEÛ?Hžyq?·ïö)h?„ã¼ÓZ…ˆ?„2ÌôÏ?ˆW|¶DC?ˆCns¥ @@@@@,@$?ð?ð?ð?ð?ð?ð¿6ÕnÛœ¿P/:[‚?@$ Âè?S»]^0ú_@§½O]¾ »@¦\#R,Ê?U‡³^.(?mHEšð?œê,xc…?¡Ì÷=ä·?—Ði&¿C?¢7ÿP›µK?‚~ƒ7qé“?m¸¼‚ý?…á%¦aȲ?˜…]k™7?]˜m3ÆŒ?ð2ƒX@@&@$@*@7@9?ð?ð?ð?ð?ð?ð?Uà£þ¿c‹Fc €?cl‘ jÏ?cÖö¢C@¦ö1ÐV@˜aoº."?‚(¤ZµN)?M·@]KÑV?þÆHì:º@Ÿc¦îÐ@r@¦>,1&é@¦>>Ø [@¦>,1&éÁ.„€@¦>,1&éÁ.„€@¦>,1&éÁ.„€@¦>,1&é@¦@¶“u@¦>,1&é@¦=#× -=q@œ)Àƒn˜@œ)­V@œ)Àƒn˜Á.„€@œ)Àƒn˜Á.„€@œ)Àƒn˜Á.„€@œ)Àƒn˜@œB Iº^@œ)Àƒn˜@œ.V‡+ @9|ÚQ@9 -¦7?1k@5pÄ›¥ãTÁ.„M‰ûçm@4â-VÁ.„QnÙ‡@4î_oÒ Á.„NÜC,¥@4î_oÒ @31Å‚@4î_oÒ @4Ö®}Vlô?‚Cš æI@8#˜@8¾:@8 >+?¢WÃTþi?ÁÜñÀdå¢?¦_»o_d@8Î÷@8i§@8Å?-C i|â?Å1=îIL?±Ž‰-»ÕÃ@8 * @8p÷@8¶?¼ïõÀq2?¬]Çwsƒ@@@?ð?ð?ðøøøøøøøøøøøøs@¥ObÐå`B@¥O`Ä›¥ã@¥ObÐå`B@¥Oa]­K©@¥ObÐå`B@¥OCŸéî@¥ObÐå`B@¥O`S@¥ObÐå`B@¥OHùGß@¥ObÐå`B@¥OR± ä@—„ 7Kƨ@—ƒ÷œ]y@—„ 7Kƨ@—ƒó†&½@—„ 7Kƨ@—ƒÛÃ[©@—„ 7Kƨ@—ƒIð¤Ú@—„ 7Kƨ@—ƒr›(@—„ 7Kƨ@—ƒcÐâ@8 Î_oÒ@8 #59 @2E?|í‘h@2#2íViú@1~V“u@1RzEn@0ÑÞi­BÄ@0¥éŠCô˜@0ÑÞi­BÄ@0¢b5€œ@0ÑÞi­BÄ@0£‰z&WÙ?¦]OëvÙú?šm@pZG?ŸóË[®·?©þK;0ê? ‚°ëÒ¦—?›Ázç9?•Ö/ê€÷Æ?—)ž®ˆ¡ø?”!vqG_¾?¦¾«Õñ(µ?™‚ááqQ'?—¯¦`R?¤¶e‰ ND?ßHQÅaG?œ³ùf-%l?V¸5Àñù?‘ &ºåX?”ôEö L@@ @$@(@2@3?ð?ð?ð?ð?ð?ð¿lûÅÓ¿˜…Eô`?e˜ß6å5?qP~Ë*h@¥OUJëkõ@—ƒ³Ñ޾?‚à¤XÛ?’I¾Ÿ%Ê?àÀ' fï@ƒš·" ã@Ÿnl.³:C@t@¤}ØbMÓ@¤}Ù‡+@¤}ØbMÓÁ.„€@¤}ØbMÓÁ.„€@¤}ØbMÓÁ.„€@¤}ØbMÓÁ.„€@¤}ØbMÓÁ.„€@¥ÃŸ¾vÈ´@¥Ã¶È´9W@¥ÃŸ¾vÈ´Á.„€@¥ÃŸ¾vÈ´Á.„€@¥ÃŸ¾vÈ´Á.„€@¥ÃŸ¾vÈ´Á.„€@¥ÃŸ¾vÈ´Á.„€@8Ù*0U2b@8宿1ø @4½‘hr° Á.„M‰ûçm@3†“t¼Á.„QnÙ‡@3Þi­BÄÁ.„NÜC,¥@3Þi­BÄÁ.„NÜC,¥@3Þi­BÄÁ.„NÜC,¥?îŠõ @8#˜@8¾:@8 >+@8Iç@8Ù?¢Æ÷Xê†@8Î÷@8i§@8Å@8S@8û—?«Æá뼑:@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøu@¤Ö+…¸R@¤Ö)º^5?@¤Ö+…¸R@¤Ö+C,¥@¤Ö+…¸R@¤ÖØ­«Ÿ@¤Ö+…¸R@¤ÖCˆe”¯@¤Ö+…¸R@¤Ö/Ÿ¾w@¤Ö+…¸R@¤Ö>쿱[@¬]eãS÷Ï@¬]gl‹C–@¬]eãS÷Ï@¬]>vÈ´9@¬]eãS÷Ï@¬]J=p£Ö@¬]eãS÷Ï@¬]XbMÔ@¬]eãS÷Ï@¬]Sê³g @¬]eãS÷Ï@¬]DЩ+@5Ù*0U2b@5×Ûô‡ü¹@20Ä›¥ãT@2XÁTÉ…ð@1çKƧïž@1ô2ÊW§†@1 -0U2a|@1":)Çy§@1 -0U2a|@1\ú¬Ùè@1 -0U2a|@1 xFÜ^?„F/·ÿP5?­Na~|¾>?°õ%ÆÛ'^?¤OXâi}i?›«Âp°¦ý?“èÿºp–Þ?|¬Çëý ?µØ~—ñ;„?®÷†ÕS w?œÎuµ/è?¬Ì0û?)?§lÅBCk?ƒ]€µ,VÞ?šà+>G–Ì?œÚ.ô §Æ?š"âŒÀxÐ?œño(?›8~à,ã™@@@@@,@&?ð?ð?ð?ð?ð?ð?oQ¿yZ¾õ?Y7ÿ£É¶?Ck®}™°@¤Ö/á’Âø@¬]]̽ýæ?yƒ_~? B[?¯ò5}'Î?œÿ‰eVé?£”S)$Å?šX“Øû?–Ãù‚ò@‰?—šÜ!2f…?¢Æ÷Xê†?žO£·»Ïy?ž‰_Ó?”`íÖ†›?™B°*Z?™šô•Üy?Ìùüy‰5Í?•¾Ä6Ü?—5"GWÈ?µõsÌþq?’d­©‡ò?—Ò¸ùBz4@@@@@(@&?ð?ð?ð?ð?ð?ð?rÿ¹‡ËÀ¿S•”l¸?QZ`E‚3?PM²Ÿç.$@© -MÝt@Ÿqi»N4?e¨ˆ'­ý·?g‰bS¼?² -•X ¬,?»ÚÒœ‰Y®@Ÿoðˆ Š®@z@  A‰7L@ ¤>70‚@  A‰7L@ ¡y÷†7@  A‰7L@ £?æ@  A‰7L@  w¢o @  A‰7L@ ŸÔLet@  A‰7L@ ž[…@¬õð£× -=@¬ö Iº^@¬õð£× -=@¬õî®âG„@¬õð£× -=@¬õîPý¾Ê@¬õð£× -=@¬õòŒ¬‘µ@¬õð£× -=@¬õð‘Ên@¬õð£× -=@¬õð’PAÐ@8zqÞi­C@8ˆ+[@2®5?|í‘@2®=LÄÁÀ@1ä¼j~ùÛ@1ä“s6zä@10–»˜Çã@11ÞBÒè@10–»˜Çã@10~@10–»˜Çã@10âómÀ?¦,¹(g©?ÿß -…×·?’ÝrõÂ+@8Iç@8Ù?®ƒ›‚á@8Î÷@8i§@8Å@8S@8û—?›pÒ̺Ô@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø|@ %Òñ©ü@ %ŽzáH@ %Òñ©ü@ %–ÕO,Ý@ %Òñ©ü@ %Ÿ]/‘ƒ@ %Òñ©ü@ %–èÌòó@ %Òñ©ü@ %—„¥ê@ %Òñ©ü@ %˜,v´{@WIº^5?@WI7Kƨ@WIº^5?@W-ÔH²—@WIº^5?@W1"Û¡y@WIº^5?@WYSP@WIº^5?@WaCUÓˆ@WIº^5?@Wa¿'@1«µsê´@1«;dZ¬@0 -^5?|î@0 -¨ÞTå@/ΗOß<@/Ó9Àëíû@.”`ªdÂù@.‡K+I@.”`ªdÂù@.ˆ“E›ñÓ@.”`ªdÂù@.Œm]Ÿ&œ?É^£eeäí?ϦÓlÛ„?•{ͱϑ?@ ú­Q»?’T) -K?’Ï¡Sbw>?ÐbOß;C–?”Ó\Ó¯¸­?™@?¼Ë.G?’º Š]è?’ˆ¾ú|‰5?“è&Üÿ´Í?€bbË™Æø?î:ÆÍ(?”¹[©c?“ =ãù±?eÁË?’@ £LÁD@ @,@$@*@7@7?ð?ð?ð?ð?ð?ð?CÆéŽ?_{õl‰?0ª¸ |3À?C/nT\ž.@ %—qLw>@W^6<œø??×þ«„(?QÊó>Õ ?uVÉÖi?”Æ®#;ŽÀ@ŸrÒ“\¢ñ@}@¯7ÎÙ‡@¯Ižz¼@¯7ÎÙ‡@¯g»/ìW@¯7ÎÙ‡@¯•Y³Ð~@¯7ÎÙ‡@¯®¾ß¤@@¯7ÎÙ‡@¯Í5¨W@¯7ÎÙ‡@¯™rGE9@œx¸Që…@œx?8I«e@œx¸Që…@œvï·éú@œx¸Që…@œwOß;@œx¸Që…@œwV8†YL@œx¸Që…@œv·´¢3œ@œx¸Që…@œyp‰ 'R@9(†YJôñ@9&ŠqÞi­@6pÄ›¥ãT@5Âø7´¢@6V”@4u8ï4Ö¡@5î_oÒ @4 Ä›¥ä@5î_oÒ @3ô9XbN@5î_oÒ @75ÜÆ??’j ÑÐ|?ßÜ¡÷u¸k?ºNéxZBÇ?ľ}'0y¥?¤š%OÜ–õ?ÑuYdÈP?³*Y¯*?ÌÅë¬òð¿?¢äEÊ»¶)?µùpQ$?¦OY¸¾?؆É8àÐ?³|Ö[¡Dÿ?§e¥n”UW?ž6Øìhâ?ª‰ ƒ~?žæŠ;Ü”ä?ÞÅÙÀ=ɧ@@@@@@"?ð?ð?ð?ð?ð?ð¿Øô‘»D€¿¨(ÓÉ?®Ô5ÞÜd?ƒY–rÓî@¯Чrs@œwUrÇ’À?ÑgΙtY?ªaã}„DG@mNƒ›}þ @éJ%SR3@Ÿi~fÝÑ@~@®L®záH@®L®V“@®L®záH@®L®¾ß¤@@®L®záH@®L±N;Í6@®L®záH@®L¯Ÿ¾x@®L®záH@®L¬¥zxl@®L®záH@®L«Æ§ïŸ@®f¦ffff@®f§+ K@®f¦ffff@®f¦éxÕ@®f¦ffff@®f¨Ë’:@®f¦ffff@®f¡ä÷eÿ@®f¦ffff@®f¦šÔ,<@®f¦ffff@®f¤ŽŠqÞ@4Y*0U2b@4XõÂ\)@2f‡+ J@2f‡+ J@2²-V@2HË’:@1ž«6z‘@1žƒä%¯@1ž«6z‘@1ŸŠ Þ@1ž«6z‘@1›íúCþ]?|öOÿÝ?jÝ‚È?’•íX~4w?ŒÖ -Äȱ?‘,IÝ Áé?‘W×ý°A?|öOÿÝ?’Òc§—Ûí?‘Ç€˜­r?’‘Ç#·X?Ø¥²À<(?‘]Ë™$ë>?ƒ´],mBZî@ªɺ^5?@ªÈÛ‹¬p@«-bMÒò@«-bMÒò@«-bMÒò@«-Ë)^ž@«-bMÒò@«--à @«-bMÒò@«-‚©“ @«-bMÒò@«-–»˜È@«-bMÒò@«-ÿ—$t@0¨†YJôñ@0¨†YJôñ@/¼j~ùÛ@/œ¾ß¥@- ƒn—@-Ÿ—$tS@-£¼ÓZ…ˆ@-¡:’£T@-£¼ÓZ…ˆ@-¡£n.±Å@-£¼ÓZ…ˆ@-¡°‰ 'S?É^žQ5P‚?é¥3i£ó?‘4!Ÿ•p’?‹¬àÌ’Ç?‘ ·èf?ÔCXsñ?ÐbMçê_x?’uß¿çÒ?†[‘'Í?6) }’ë?øóéM Ÿ?lINõÕ„?€bMÕky?ŒÆò/¢äÍ?‚2Y0âµ?‚ìxqC?†–f_ÔŠŠ?†žóB» “@@@@@,@(?ð?ð?ð?ð?ð?ð¿,¤µ<¿/Lm~è?0I¾úPÅ?,¦E½ÙX›@ªÈÔ‰N@«-F¼¾?>è-ú]+?;'ÅïóL%?wO6Ú/ά?p{&AÏE@ŸseÊ -å@€@¦ÄaÊÀƒ@¦ÄJ=p£×@¦ÄaÊÀƒ@¦Äd÷eýŠ@¦ÄaÊÀƒ@¦Äbø7´¢@¦ÄaÊÀƒ@¦ÄdЩ*@¦ÄaÊÀƒ@¦Äc× -=q@¦ÄaÊÀƒ@¦Äf?@ªË º^5?@ªËp£× -@ªË º^5?@ªËÈK]Ì@ªË º^5?@ªË )^ž@ªË º^5?@ªËDЩ@ªË º^5?@ªËMj@ªË º^5?@ªËý!ÿ-@9+µsê´@9,~($ x@4)‡+ @4(7´¢3œ@3)Û"Ðå`@3(K]Ìcñ@35µsê³h@34g8}À@35µsê³h@33ÉîËû@35µsê³h@30å`A‰8?´Žé`m?‘Ð`HÇh?’•íX~4w?‘´CF õ?–91£ƒ’?œH÷A”mà?ª[Xxöp?“Öæ…0Âû?’t-Eü?–r°¤»®?˜Op¢‘¬?—Õàq¶Ù?¬r¥R‚?‘ -òtMŠ?‹‘+-/Ý?Œw%è®?“6‰møŸã?›€*:€R}@@@@@(@(?ð?ð?ð?ð?ð?ð?aer¸%€¿U´ŽCÜ?b°ö®Üá?Qþã÷4@¦Ädh:@ªËþRÒ?rø“0ùUþ?g­–¢Sà?Òÿ„ìÙ™?¸ŠË6Ä›@ŸpH/¡Vz@@¡ª|í‘h@¡ª‚\(ö@¡ª|í‘h@¡ªßHË‘@¡ª|í‘h@¡«#{J#:@¡ª|í‘h@¡«QÎ@¡ª|í‘h@¡«/ìVÕÐ@¡ª|í‘hÁ.„€@¤±¾vÈ´@¤±ï²-@¤±¾vÈ´@¤±YÎ_p@¤±¾vÈ´@¤±u›=È@¤±¾vÈ´@¤±“ŽóMj@¤±¾vÈ´@¤±kP°ñ@¤±¾vÈ´Á.„€@8Û¹Œ~($@8¿Aò×s@4œIº^5?@4tZ¬1@4"-V@3×§†Â&@3kxFÜ^@3 P°ò{³@3kxFÜ^@3¼¤@3kxFÜ^Á.„NÜC,¥?ˆÿÀ)T¿Æ?·ts3¢ø?¨%1¿6?¶äŒ›%þØ?Ô®þ>†@8Ù?|öOÿÝ?³r‘‹O?°˜Â•0}|?´Eð)öpü?ÎA\"I @8û—?‹´¡`Ƕà? çaŸ¹5? øk@×õ{?¶7òh³Þù?¬·¹½'ñ›@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø‚@¢ñë…¸R@¢ñì1&é@¢ñë…¸R@¢ñõ*™0@¢ñë…¸R@¢ñúu%G@¢ñë…¸R@¢ò „M@¢ñë…¸R@¢ò àÞÒ‰@¢ñë…¸R@¢ò-V@¦æffff@¦æéxÔþ@¦æffff@¦î;Í5¨@¦æffff@¦‘¼ÓZ†@¦æffff@¦ÊÀƒp@¦æffff@¦£¯·é@¦æffff@¦ŸË’:*@4+µsê´@4+¥ãS÷Ï@1µãS÷ÎÙ@1©e+ÓÃa@16§ï²-@1,àuöý"@0ÔmÅÖ8†@0·ï²-@0ÔmÅÖ8†@0¼~($ x@0ÔmÅÖ8†@0½p£× ->?}Ñ¿ž,?¡'‹Q›p?—bÕ/ŸÓ?›©Ñ®vtQ?¨àt/1  ?¬‰…dkUÛ?|¬Çëý ?@`WÓæ?ŸÀh¡º?–= £6Ï?´”zœ&>?±à¦ÌTS?‚n—8‹8?›9WTêW?”US9úÅ?•*¥Q«_“?–í -e˜›ï?˜ŒL.C-¹@@@@@*@*?ð?ð?ð?ð?ð?ð?„Y›K]€¿‰ þÚÇ€?_çŸö§ðp?[Ï‚œÇÉÍ@¢ñ÷ÑÖ@¦Øâ%©š?t€×˜îà¢?q‰s0?ä1ó:X[É?Ü~Ÿ|@Ÿ_ÝÄX¿@ƒ@£ò&ffff@£ò49Xb@£ò&ffff@£òRT`©@£ò&ffff@£ò×s@£ò&ffff@£òÿ—$t@£ò&ffff@£ò}¿H€@£ò&ffff@£ò>«6y@£¸Ôýó¶@£¶“u@£¸Ôýó¶@£ËíúCÿ@£¸Ôýó¶@£Ì¥zxk@£¸Ôýó¶@£Õµsê³@£¸Ôýó¶@£é7KÆ©@£¸Ôýó¶@£Û=ÈK@8‚ò䎊@8}p£× ->@3c÷ÎÙ‡@3PIQ‚©@2Ú~ùÛ"Ñ@2ÊÇË)_@2&YJôðØ@2 ¹#¢œx@2&YJôðØ@1þËûµt@2&YJôðØ@1ÿË’:)È?¢Æ÷Xê†?‘Ð`HÇh?’´ýBI{? `ĉ5‘5?º,j -í[?º=¸¨cÏ?”¼íÒh??“[¡ŽuœÙ?–AuøG1?¡ 3Õ¬T?»É¬ê\©ù?½pî=ëDó?¿àéå=c"?“êXÔ #{?’q6tNø6?–ì k.÷A?•°QŸ?]Í?«¶Ûİ^Ï@@@@@*@*?ð?ð?ð?ð?ð?ð¿ƒkí™?†ÉsK€?náCâ¨0U?Yu@:Æû@£òô’Õ\@£ÌXùqx?‡D³4„Ii?uð2v#ã6?ß+>”F¾?¿×0ä¦Q@Ÿe[Æ:Ðá@„@Ÿ†dZ¬@Ÿ†cS÷ÎÙ@Ÿ†dZ¬@Ÿ†gÓ+s@Ÿ†dZ¬@Ÿ†lAûp@Ÿ†dZ¬@Ÿ†[#5y¹@Ÿ†dZ¬@Ÿ†c -óùk@Ÿ†dZ¬@Ÿ†c¼ç¢@¥ ô9Xb@¥ ô9Xb@¥ ô9Xb@¥ ÷oˆk´@¥ ô9Xb@¥ ö3íµ@¥ ô9Xb@¥ ýÕ2q­@¥ ô9Xb@¥ úÀIb@¥ ô9Xb@¥ üÖöž†@45S&Á¾@45L˜_ö@1 -^5?|î@1Fnß @0 "Ðå`B@0›…=KW@/á-w1Å@/ת,ú@/á-w1Å@/Ío¡œ@/á-w1Å@/Ó< ì -?|¬h2:“?Ãÿž«R÷?‘;"Ùµ•Û?‹¦S¹?‘…ù/¬] ?“&XÄ=†I?}@T˜ÁÎ¥?’“Dæ»Zœ?‘ =׿?Jôª?“Ô^ ?”Rnwø?‚o,¬qVÙ?2ãsF­H?…Ë„f?ƒéÚisŒ?‡çìI.Î?‰áRqœË1@@$@&@ @:@8?ð?ð?ð?ð?ð?ð¿1öp&À?`3kõÖ?B›ÁŒàob?FekÐÏ@Ÿ†a…ó_b@¥ ø D ?aä<Ò#O?e鈨g?ÐÂUÜð£Ö?Õ qþá,C@Ÿf>uJ}@…@¦ã× -=q@¦ä“t¼@¦ã× -=q@¦䎊qÞ@¦ã× -=q@¦ä÷eý‹@¦ã× -=q@¦ãˆe”®@¦ã× -=q@¦ãŠ @¦ã× -=q@¦ã9Àëî@¡@bÐå`B@¡@bÐå`B@¡@bÐå`B@¡@bMÒñª@¡@bÐå`B@¡@aÊÀƒ@¡@bÐå`B@¡@` qu@¡@bÐå`B@¡@bMÒñª@¡@bÐå`B@¡@bZîc!@1ÉÎ_oÒ@1ÉÛ"Ðå`@-Š~ùÛ"Ð@-Š0U2a}@+wOß;d@+w>«6z@+æL/ƒ{K@+å¡ÊÀƒ@+æL/ƒ{K@+åýŠÚ¹ö@+æL/ƒ{K@+æÁ½¥?É_\p)Ï?¾‰máÚ?‘@˜¯³¸?ŒArUã@?÷6r In?¾ƒìÈÁ?ÐbMçê_x?’)£µ“[M@Ÿs ‚ç@†@­\âMÒñª@­\à@­\âMÒñª@­\âø7´£@­\âMÒñª@­\âø7´¢@­\âMÒñª@­\ä“t¼@­\âMÒñª@­\âø7´¢@­\âMÒñª@­\Öý!ÿ.@¨ËD“t¼@¨ËDÝ/¡@¨ËD“t¼@¨ËCþ\‘Ñ@¨ËD“t¼@¨ËD÷eý‹@¨ËD“t¼@¨ËCn.±Å@¨ËD“t¼@¨ËD“t¼@¨ËD“t¼@¨Ë@IQƒ@5õS&Á¾@5ô“t¼j@2ahr° Ä@2b¼£n@1—ï²-@1™ k¹Œ~@1p–»˜Çã@1q·Xâ@1p–»˜Çã@1t2ÊW§‡@1p–»˜Çã@1múCþ\’?žˆ2}? ¸×KG?’Z¡*CÂ?nii)â?‘§›ßÉîj?•ÍÂ^mÄ*?|öOÿÝ?“$i «%h?üÓqÔN‰?|Ø}Õ…?‘¦‘=W?“f:[êc#?ƒmÕ+&¬‰?þrªbT?‚ù…žÄ`x?…<ò N ?‡×7°º?ŠÐ+`È“@@@@@(@*?ð?ð?ð?ð?ð?ð¿3OAÙ0¿BòÔL´?Tý÷ÙMô?0¡¡PKW®@­\à"QOh@¨ËC«Æv ?tV lÂwõ?Pª³>o -“?ðˆ'PŶ?©` Å ý@ŸfÇÄÐbs@‡@­UÛ¥ãSø@­UÉ7KƧ@­UÛ¥ãSø@­UÖ_Ø­¬@­UÛ¥ãSø@­UÙÀëíú@­UÛ¥ãSø@­UàIQƒ@­UÛ¥ãSø@­UÝ}¿H@­UÛ¥ãSø@­UÞžš@©ÖÎÙ‡+@©ÖÍOß;d@©ÖÎÙ‡+@©ÖÆ$Ý/@©ÖÎÙ‡+@©Öɺ^5>@©ÖÎÙ‡+@©ÖÇæšÓ@©ÖÎÙ‡+@©ÖÇü¹#¤@©ÖÎÙ‡+@©ÖƸºÇ@7ÞHè§æ@7Ùè>BZî@3k¥ãS÷Ï@3gsüPH@2Ãt¼j~ú@2Áø -à@2Eœàu÷@2ÒˆÎp;?—¤o„C?äm°û0Ž?”—ýÉò€?šAÈ|»x?–~9n4ºÀ?”ªEñeX?ˆÿÀ)T¿Æ?’“ºƒ;Nû?“5ñ µ?•Œ ;qí?—ˆ”„òõ¤?˜I­}ý½Ä? “˜¯ÃÛ?‚ñêã ?Šó¿á§E?ˆW„hðQ?‘ ê$4 ?$Ìj½BÙ@@@@@,@(?ð?ð?ð?ð?ð?ð?qnÈ¿Wü•¶|?[§¼÷?6ȃn9@­UØBXÄ@©ÖÉrÓ¹?yÙÕY?X¦/ÔÌ•h?ãŸ#¹<Д?§v/²¶¹‹@Ÿkj9l¾ë@ˆ@ Ïèr° ÅÁ.„€@ Ïèr° ÅÁ.„€@ Ïèr° ÅÁ.„€@ Ïèr° ÅÁ.„€@ Ïèr° ÅÁ.„€@ Ïèr° ÅÁ.„€@o¤Ý/ Á.„€@o¤Ý/ Á.„€@o¤Ý/ Á.„€@o¤Ý/ Á.„€@o¤Ý/ Á.„€@o¤Ý/ Á.„€@3è†YJôñÁ.„>¤µÜÆ@2; Iº^Á.„M‰ûçm@1Àå`A‰7Á.„QnÙ‡@0øDЩ*Á.„NÜC,¥@0øDЩ*Á.„NÜC,¥@0øDЩ*Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø‰@««§ï²-@«««Æ§ïž@««§ï²-@««­w1Å@««§ï²-@««³ àÞÒ@««§ï²-@««¾š@««§ï²-@««µsê³h@««§ï²-@««¸Çâ‚A@§?ñ©ûçm@§?ò-V@§?ñ©ûçm@§?á£n.²@§?ñ©ûçm@§?Ú^5?~@§?ñ©ûçm@§?º¹õY´@§?ñ©ûçm@§?±N;Í6@§?ñ©ûçm@§?ÑÅ@6¥öý!ÿ.@6¡–R½<6@3û Iº^@3û…¸Që@3Ãt¼j~ú@3¹ûçl‹D@3¡:’£S@3’u%F -¦@3¡:’£S@3”g8}À@3¡:’£S@3“×Ûôˆ?‡YÍ_?‘‹PƧ¢$?˜U%ÛÌx?ºgk\0?©¦¥Ò?šúÉ‚X|?€‚ñêã ?”ŸÚ²t©?—+Áèlç?’ü#q\-v?°Ã¾_.ö?§/\¸ Ó?’‡ïõ+üB?‘¼Åâ<{?•@K/Ù{?“¶º Yæ¸?¬àåŸ ?™ þg¿@@@@@&@"?ð?ð?ð?ð?ð?ð?p=^Œ'¿sã§<€?^ùPñ¯~?tÜþ«¨+@««´7 -Ìð@§?Ö&²5?zõ8R‰ ã?‘c6ZGøö?òm6c*4@bÚ[ðôê@Ÿc•³(@Š@¦ÕoŸ¾w@¦ÕnÙ‡+@¦ÕoŸ¾w@¦ÕnËûµ@¦ÕoŸ¾w@¦ÕoiDg7@¦ÕoŸ¾w@¦ÕoŸ¾w@¦ÕoŸ¾w@¦ÕmquŽ@¦ÕoŸ¾w@¦Õl²•éâ@ªÁ¥ãS÷Ï@ªÁ¦ffff@ªÁ¥ãS÷Ï@ªÁ¤÷eý‹@ªÁ¥ãS÷Ï@ªÁ¢œwšj@ªÁ¥ãS÷Ï@ªÁ¡°‰ &@ªÁ¥ãS÷Ï@ªÁ¢\(ö@ªÁ¥ãS÷Ï@ªÁ¡|ÚQ@5:qÞi­C@59Çy¦µ @35ãS÷ÎÙ@35µsê³h@34“t¼j@33œ¾ß¤@2Åœàu÷@2Å¡ÊÀƒ@2Åœàu÷@2ÄFs×Ü@2Åœàu÷@2Ã÷ÎÙ‡?1·†Æjñ?‘6 '8?“a#mU?‹ÝÉ!ë#?“´<×?”K¬Ò&?|¬Çëý ?’áÄïÃõ?“1Ú©! ?’ÁÛ/’:?“Æ×q„nð?“.½þ¹Š?‚ù…žÄ`w?Ž`ŸÝïöF?„A'Š_^?†ú#ѧ?’3¨£„È?<ש‹äN@@@@@*@(?ð?ð?ð?ð?ð?ð¿5´Í@¿QីD?*¡µ-(·?0nèÛ>4@¦ÕnIõ£*@ªÁ¤zg¼?Ip»Ø/2?P ›,Y?í$ÀÞ?¦•/ru2-@Ÿf'aù¼@‹@§ì¸Qì@§ì·W‘Î@§ì¸Qì@§ìMfÜ*@§ì¸Qì@§ì¢Iò·@§ì¸Qì@§ìTÇ4@§ì¸Qì@§ìtà@§ì¸Qì@§ìÃN1?@•MÀƒn˜@•M¹b÷½•@•MÀƒn˜@•Mº½5L@•MÀƒn˜@•MÀØN‚¸@•MÀƒn˜@•MÀ?‚"Ó@•MÀƒn˜@•MÀ¦GÂ@•MÀƒn˜@•M¿g,qz@7uS&Á¾@7tÜÃn;%@23S÷ÎÙ@23Q·ePå@1H“t¼j@1H6íê3@1ÚQÎ@1ÇÚUÅ‚@1ÚQÎ@1ûµsë@1ÚQÎ@1ZìÂ?™I'%ö«?;"Ò,íÂ?‘y÷Ÿ$?Œ¸LHfX)?‘[p2å×÷?‘;•>zÅ?’Á ˆ|Ί?’Cb°¬?µÈN{BU?‘ňøwž™@«8Rn—P@«8C× -=q@«8Rn—P@«8D¨ÁTË@«8Rn—P@«8LÌÌÌÌ@«8Rn—P@«8M(Œç@©@£S÷ÎÙ@©@¥`A‰7@©@£S÷ÎÙ@©@¤ŽŠqÞ@©@£S÷ÎÙ@©@ ÞÒˆÏ@©@£S÷ÎÙ@©@ 6âë@©@£S÷ÎÙ@©@¢e+Õ@©@£S÷ÎÙ@©@ N¤¨Â@7`ØDЩ@7`|„µÜÆ@2’ Iº^5@2Œ"h Ô•@1q‰7Kƨ@1lú¬Ùè>@0ÑÞi­BÄ@0ÌL˜_@0ÑÞi­BÄ@0ÌC,¥zy@0ÑÞi­BÄ@0Ìí‘hr°?„F/·ÿP5? )™È.‡ -?•ï9aýô?—^tø -a?”NtyÞ"§?”m\¶WqÓ?€‚ñêã ?”ï©ÛÉ?‘Ûcu%ç+?”€ø§¼û3?”V ìi!¾?”6ð a@B?’C߯K?ŒöOÿÝ?ƒ<Õp?ƒ¦$H?‡v>ª¸ ?‰_uñšó@@@@@,@,?ð?ð?ð?ð?ð?ð¿O…]b¿Q}V%?Q žé¢Aþ?4÷×e§1@«8MU ±v@©@¢ß¶hÐ?q¯QÒ?U¤½ì º?âÉ‘üÉš˜?°{’ip -@Ÿg= –2@@­ŒÍOß;dÁ.„€@­ŒÍOß;d@­ŒäB “‘@­ŒÍOß;d@­`NJçÀ@­ŒÍOß;d@­ŒÔÄ -‚@­ŒÍOß;d@­Œíwq_“@­ŒÍOß;d@­Œïi(ш@›:wÎÙ‡Á.„€@›:wÎÙ‡@›9óøŒMW@›:wÎÙ‡@›9å 4¾ý@›:wÎÙ‡@›:` í À@›:wÎÙ‡@›:Áïâ_ë@›:wÎÙ‡@›:™±âöÈ@9µS&Á¾Á.„>¤µÜÆ@5{ Iº^@5b!]4>@51‰7Kƨ@5’3y¬6@3ÔmÅÖ8†@3ÍëvEÉÉ@3ÔmÅÖ8†@3ÐO$‚@3ÔmÅÖ8†@3ÕVWàé@8J¨?˜©ë¡•²ã?°ÿ›Éò^?–Ö³ ¯?œióꚆ?š†bC3Û@8J¨?–„̹мÜ?²-êΦn‰?š¦nØíÌX?¢}B›°HÀ?‘ˆò–Ò–P@8p÷?˜â¢0UF?©#¤ò!¾å?—êÄÅQŒ?–NåA¸. ?–÷u€Ë¾@@(@(@2@,?ð?ð?ð?ð?ðøøøøøøøøøøøøŽ@ª´¼j~ú@ª¸Që…@ª´¼j~ú@ª¹JåØ@ª´¼j~ú@ª¸Õ,Ê*@ª´¼j~ú@ª¶¸zL^@ª´¼j~ú@ª²õd©ä@ª´¼j~ú@ª·hÀÝ@˜ô)ûçl‹@˜ô(r° Æ@˜ô)ûçl‹@˜ô(Þà@˜ô)ûçl‹@˜ôŠ&™$@˜ô)ûçl‹@˜ô!ÎtrJ@˜ô)ûçl‹@˜ô#;ZVÎ@˜ô)ûçl‹@˜ô!Ì‘e@7 ]cˆe”@7Nî—ûœ@3k¥ãS÷Ï@3m\ûÊ@3Ú~ùÛ"Ñ@3äú=(,ï@2Ê0U2a|@2Ï å¯Ö@2Ê0U2a|@2Î\^ðu—@2Ê0U2a|@2Îâp߃?’èþt?WB~±&ð?”À6z/ä?„Ê_\ƒ?“Kêé-\?‘‚ÜïŠ=ù?|Ñb×¶@?’¦y¼?š×i"Òá4?y?Ž <@¯@?½öÍ?…4ü²ƒ4]?‰mýãÖ©¯?‰®‚ZÕnÀ@@ @*@$@9@7?ð?ð?ð?ð?ð?ð¿@–í¿HsN‹È?CêLïç?(²mnló@ª¶ªÔì@˜ô$kcbv?bOUD‰ã?Kr%W+@8Iç@8Ù?³·÷ù—e@8Î÷@8i§@8Å@8S@8û—?¤yíœØAd@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¥äãS÷ÎÙ@¥äýó¶F@¥äãS÷ÎÙ@¥äã¼ÓZ†@¥äãS÷ÎÙ@¥äíBÃÉî@¥äãS÷ÎÙ@¥äÕÜÆ?@¥äãS÷ÎÙ@¥å1uŽ!–@¥äãS÷ÎÙ@¥å°ò{³@¥Šñ&éxÕ@¥‰€Ä›¥ã@¥Šñ&éxÕ@¥ŠòþÅm^@¥Šñ&éxÕ@¥‹ \ú¬Ú@¥Šñ&éxÕ@¥ŠýVlô@¥Šñ&éxÕ@¥‹#n.±Ä@¥Šñ&éxÕ@¥‹#n—@6ëµsê´@6]p£× ->@4R Iº^5@4W_oÒó@46§ï²-@4?iDg8@4TmÅÖ8†@4AÄ2ÊW¨@4TmÅÖ8†@4-ÈK]Ì@4TmÅÖ8†@4O·éùs?é‰w®Vzñ?—oN„Q?°70tæ_c?³n×È­?µý„¼N£?³_…]ÿ¸?öår5]v?•‡S‰Óü?²|ØèÍ?«ù Jy ?µ›Ì%v[Ÿ?³Ó½±bÈ·?ñ>Ò-‹µ?¤rI©‹×s?­ÌfÓ8‚º?´ÿB½À?¤åNka8?Óâlb% @@@@@@*@,?ð?ð?ð?ð?ð?ð?À(4ù´?“Zí•‚à?“šãã†.É?€°ݽa‹@¥åI~î…@¥‹~¹õœ?£S"‰Xò?]sC˜ ?õı=.G?Ô[Æç@ŸrÜżEf@‘@§ §ï²-Á.„€@§ §ï²-Á.„€@§ §ï²-Á.„€@§ §ï²-Á.„€@§ §ï²-Á.„€@§ §ï²-Á.„€@˜%¼j~ùÛÁ.„€@˜%¼j~ùÛÁ.„€@˜%¼j~ùÛÁ.„€@˜%¼j~ùÛÁ.„€@˜%¼j~ùÛÁ.„€@˜%¼j~ùÛÁ.„€@9%öý!ÿ.Á.„>¤µÜÆ@4™º^5?}Á.„M‰ûçm@3ÒÐå`A‰Á.„QnÙ‡@3:Ô,<žíÁ.„NÜC,¥@3:Ô,<žíÁ.„NÜC,¥@3:Ô,<žíÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø’@®N’ñ©ûç@®NªÍž„@®N’ñ©ûç@®N„w*äó@®N’ñ©ûç@®N…Qÿ“?@®N’ñ©ûç@®N“ÀÀÞ@®N’ñ©ûç@®NЏt¥@®N’ñ©ûç@®N‹'èOG@˜ë…¸R@˜èr° Å@˜ë…¸R@˜ëVÛåì@˜ë…¸R@˜ü[.æt@˜ë…¸R@˜ÍquŽ@˜ë…¸R@˜Ò—íº@˜ë…¸R@˜Òߤæ¼@7ÖšÔ,<Ÿ@7×Uí¡v@3À Ä›¥ã@3·©uÐ@2‹"Ðå`B@2‡V¤@2=cˆe”°@270…+hP@2=cˆe”°@25JWú7@2=cˆe”°@25ÇmÄ’ô?|çµB &€?“÷©ukBª?’ aMP?–.ÜbsÓ?”@‹sýÇM?”§QâèŒ?¢t Ø]Ù ?•Þðiß_?”?ðRÉ?š‰ÓÍ¡þ?•âôNï?”㾉´®Ú?Šv'GÛ?ŽúÞfP6…?†ð¦’½¶L?‡—jêAr?‹™t1ê«Ö? éT€O£@@*@*@,@8@7?ð?ð?ð?ð?ð?ð¿I..¸Ð¿ZkÊùŠ?G¦7Ô¸·?V̆œo@®N‹\N@˜Õ XŃ?oÝÃü¶?q6£²b‰Ú?Õ°¹¤%¿@?Ìr~žØH³@Ÿmí£èO@“@¦Æ$Ý/@¦Ä“t¼@¦Æ$Ý/@¦¿Ë’:*@¦Æ$Ý/@¦´mÅÖ9@¦Æ$Ý/@¦Í„M<@¦Æ$Ý/@¦Åm\ú­@¦Æ$Ý/@¦À6âë@¢ÐbMÒò@¢Ê~ùÛ#@¢ÐbMÒò@¢É­BÃË@¢ÐbMÒò@¢Ã9Àëî@¢ÐbMÒò@¢¹JôðØ@¢ÐbMÒò@¢Ç_oÒ @¢ÐbMÒò@¢Æ -¦L0@8(†YJôñ@8ü¹#¢œ@5c÷ÎÙ‡@5g -=p£×@4¶§ï²-@4Â\(õÃ@4QÞi­BÄ@4ˆºÇË*@4QÞi­BÄ@4[P°ò{³@4QÞi­BÄ@4Z…‡“ݘ?¡ÅꯨŠT?©o£þ„5’?±€ÐŸœï?·%W§Íþ$?þ"y?Žª?¦» VŒÂ¹?žŒÝÙ›P?¦wô›¦·?°Œ“ ¹‡?§×#Vz?Ÿ!ÞkDð?¥Ù6hC]?™{Tä=û?¥ð¡T³÷ñ?ªƒõêzÙ?¼¤5 -: £?™Øl›¹?˜ÒF€§ç@@@@@*@*?ð?ð?ð?ð?ð?ð¿1u®”¿MrR?Pò67?^ÊèØvl@¦Ä]Œ*ê@¢Æ±³­?oP'ÁLfƒ?}õë¯]`?³¡ÞT?Õµá¯Æ @ŸkÀ!f|Æ@”@¦ô@¦ô@¦ô@¦ôÞÒˆÎ@¦ô@¦ôªdÂø@¦ô@¦ôÞÒˆÎ@¦ô@¦óÿb¶®}@¦ô@¦óÿ¤?åÉ@¨Ã1©ûçm@¨Ã1©ûçm@¨Ã1©ûçm@¨Ã1ø .@¨Ã1©ûçm@¨Ã1N;Í7@¨Ã1©ûçm@¨Ã2¼£@¨Ã1©ûçm@¨Ã1ÑN;Í@¨Ã1©ûçm@¨Ã2¼£@0–šÔ,<Ÿ@0–šÔ,<Ÿ@,ëÆ§ï²@,ëÆ§ï²@,‘&éxÔþ@,‘‚©“ á@+ëjçÕfÐ@+ëxFÜ_@+ëjçÕfÐ@+ëC,¥{@+ëjçÕfÐ@+ëC•$?É^žQ5P‚?Òç{íj?‘$Cê¡@í?‹½XQê>æ?íOþtà?¼‚Ë¡K?ÐbMçê_x?’ ,øÕC©?Œqç©Fü?Hª¦ºón?Ø¥²À<(?Sñƒ´V.?€bMÕky?Œ¯þuõí?‚† SFò?‚ìxqC?†l&þ?†žóB» “@@@@@(@(?ð?ð?ð?ð?ð?ð¿Bú†€¾Ø½Ë€?1+žÀ˜ð£?u½›¥b@¦ôFOB@¨Ã1õòÎ?@‚'±=ƒH?!vȸN¯(?z¹%Ýrd³?:žKxf8@Ÿs -bû£@•@®‰öE¡ÊÁ@®‰ö“v@®‰öE¡ÊÁ@®‰ú¬1@®‰öE¡ÊÁ@®‰ùÎ_p@®‰öE¡ÊÁ@®‰þ¸Që…@®‰öE¡ÊÁ@®‰úÔ,<Ÿ@®‰öE¡ÊÁ@®‰ú’£S@§ÞÜ(õÂ@§ÞÛçl‹E@§ÞÜ(õÂ@§ÞÓ¶E¡Ë@§ÞÜ(õÂ@§ÞÒn—P@§ÞÜ(õÂ@§ÞËíúCÿ@§ÞÜ(õÂ@§ÞÊJŒM@§ÞÜ(õÂ@§ÞÉk¹Œ}@5ò䎊@5©ûçlŒ@2½‘hr° @2¹xÔýó¶@2'KƧïž@2"GE8ï5@1Ç ù kº@1Á-w1Æ@1Ç ù kº@1ÀU2a|@1Ç ù kº@1À©*0V?|öOÿÝ?¦Ì '?‘`×›mÏ?ŽwX/8?‘à2F0µÔ?’—ØPö«?|öOÿÝ?’0nà=Q“?“Ú%¿»8?‘èÒ§ˆ„Æ?’…4Ü.?–†F5Æ?…ÑTë0Ó?ŒÛÏ·+?ƒ´],m=?„À"aËô??‡´*žZ}Õ?ˆ”Tj«›ª@@@@@,@,?ð?ð?ð?ð?ð?ð?V½;Ï<¿qì‚=€?IB¡HÒ?F7õ~‚p@®‰ùOÞÅh@§ÞÒ£K Z?hÞJ‡PÍ‚?e«ýõ­[?ß`d>‰íD?Ó罜ÃÔ@ŸeíG"¯ã@–@ªT²-V@ªT²-V@ªT²-V@ªT´êJŒ@ªT²-V@ªT´ðØDÐ@ªT²-V@ªT´9Xb@ªT²-V@ªT± ²•ê@ªT²-V@ªT±œàu÷@¤ó‹C•@¤ó‹C•@¤ó‹C•@¤ó‹xFÝ@¤ó‹C•@¤ó‹’:)Ç@¤ó‹C•@¤óŠçÕfÐ@¤ó‹C•@¤ó‹’:)Ç@¤ó‹C•@¤óŠ~ùÛ#@3ÞHè§æ@3ÞcŠ @/ö“t¼@/óÝ—ö+j@.éxÔýô@.m\ú¬Ú@-­úCþ\’@-­V”@-­úCþ\’@-­„M:“@-­úCþ\’@-­„M:“?€‚ñêã ?jÝ‚È?‘WßÈDö@?‹ËØ|*(?ùª¨?À­Õß}º?|¬Çëý ?’,ö´´Ï#?Å)Ì_“?Hª¦ºón?ë,YÁ?{L Õ¢D?‚oÁÆÜ§ö?ŒË›Í‡Çq?‚§W®ê ?‚ð'ã:ÂÝ?†µ°jÆÃ?†špk Y@@@@@&@&?ð?ð?ð?ð?ð?ð¿ -‡+ -¿õE,@?7tw¤'6ù?RœÉ—M@ªT²RVPx@¤ó‹̃V?W@›êµ´?9ŒÓÉí¾?ºÌ2®L?á—Ñ~[@Ÿgv!ŸpÇ@—@¯ )xÔýô@¯ $¡àd@¯ )xÔýô@¯ (×*R@¯ )xÔýô@¯ 2¤Î@¯ )xÔýô@¯ %Éæ@¯ )xÔýô@¯ !>Ô^S@¯ )xÔýô@¯ äÕ×@›…\(õÃ@›…Š=p£×@›…\(õÃ@›…›Ýl…@›…\(õÃ@›…É;@@›…\(õÃ@›…Œ»È™@›…\(õÃ@›…œwß½@›…\(õÃ@›…œKpà@8‚ò䎊@8ƒ@Þ@3³S÷ÎÙ@3¶ú“¨$0@3“t¼@3 -G’v½z@2s&Á½¥@2wd"6É@2s&Á½¥@2uPyõ/–@2s&Á½¥@2qMò5–?Ĺó¥p?” ÆÄPˆ?’/b ?ÉV黀?‘€D”. -r?Ò°(=°Ï?…nDyB Ã?’þáOîö3?‘6'@ ?‘î!2Ã?Úz·O”«?W¼ÇX.ð?¶d¤vG݃?ÓI_°Sì?ƒzb¯˜êâ?ƒbcú»ê°?ÎN^@pá?‡—¥5Ÿ*[@@"@"@"@,@,?ð?ð?ð?ð?ð?ð¿U[&–à?_Ç>`?JYA¨b,?C”ºBÙÔ@¯ "Æ¢Ó@›…“ÈÒ2ß?g<=é,€?cÞÞÙ¥”z?ЕUqÆ?Ì.Ö€*@Ÿknò3@˜@°ç+ JÁ.„€@°ç+ J@°çÛô‡ý@°ç+ J@°æéxÔþ@°ç+ J@°ç´¢3@°ç+ J@°渺Ç@°ç+ J@°æ”Fs‚@«H!ÊÀƒÁ.„€@«H!ÊÀƒ@«H ù kº@«H!ÊÀƒ@«H Ä›¥ã@«H!ÊÀƒ@«H!ò×s@«H!ÊÀƒ@«H uöý!@«H!ÊÀƒ@«H!ò×t@5`ØDЩÁ.„>¤µÜÆ@1ÜIº^5?@1ÜÌÌÌÌÌ@0±‰7Kƨ@0±£n.±Ä@0#ÉîËû@0#× -=p¤@0#ÉîËû@0$?åÉ@0#ÉîËû@0#©*0U2@8J¨?¾‰máÚ?‘"žæÆó¡?ŒªèkÜ?ëÎ@ A2?ý‰w'¬@8J¨?’‡Iš÷?“û#ÆGf?e”[|ú(?Ö§­îQD?±—'¶Ü+@8p÷?3I¶#i?‚¸“Îè ø?ƒE 8?†¼Š˜L¥÷?†Óß -tõ@@@@ @*?ð?ð?ð?ð?ðøøøøøøøøøøøø™@¨ âMÒñª@¨ ãS÷ÎÙ@¨ âMÒñª@¨ æ¸ºÇ@¨ âMÒñª@¨ èe”¯O@¨ âMÒñª@¨ áG®{@¨ âMÒñª@¨ á:’£@¨ âMÒñª@¨ âø7´£@¡Ç+ J@¡Ç+ J@¡Ç+ J@¡ĵܯ?@¡Ç+ J@¡À4mÅ×@¡Ç+ J@¡Àƒn˜@¡Ç+ J@¡Â@·€4@¡Ç+ J@¡¿¤?åÉ@5Ì]cˆe”@5ÍBÃÉîÌ@2”›¥ãSø@2“t¼j~ú@1ö§ï²-@1öR½<6@1¨è§æ›@1§éùrG@1¨è§æ›@1©k¹Œ~(@1¨è§æ›@1§Á½¥?}Ñ¿ž,?’@k=[?”Uy*@1Åœàu÷@1ÅL˜_÷@1Åœàu÷@1ĵܯ?@1Åœàu÷@1Ä“t¼k?ˆÿÀ)T¿Æ?Æ4ÓLè?‘jh¨qã9?î®)„àµ?‘×´<î¯j?‘îƒÔ1a?}Ñ¿ž,?’CòO…?ß‹…&?Ë{4æk?‘Jâ”âj?“å¡jÚ?‚ù…žÄ`w?µœ7}?ˆAᆽÃí?ƒE 8?‡v>ª¸ ?‰_uñšó@@@@@(@,?ð?ð?ð?ð?ð?ð?H> €¾áž‚?#uw#–×Ñ·Y@2ƒt¼j~ú@2uŽ!–R½@1™Œ~($ @1ìVÕÏ«@1™Œ~($ @1”`ªdÂø@1™Œ~($ @1”ŽŠqÞj?„F/·ÿP5?¦@%:Èæ!?™ûР'®?–àa¦vfÚµÕ?‰6‰õË?ˆëÅoë@@@@@*@*?ð?ð?ð?ð?ð?ð?S<­L.?uˆB‰)?C3}ºÑ†?ZUǵ2@©WÃCL\@ž°ü?dËxŸ€Î ?z±GÃv>b?ʉGl¯~?ñkÖêBJa@ŸiÕêßl@œ@¤  Iº^@¤ þú??@¤  Iº^@¤ õ¢Ûñ@¤  Iº^@¤ ¼ñ}¹@¤  Iº^@¤ þžHá4@¤  Iº^@¤ ª=p£Ö@¤  Iº^@¤ ‡h§Àä@œQXbMÓ@œQc¤ °q@œQXbMÓ@œQ+øô@œQXbMÓ@œSªÐéùT@œQXbMÓ@œQ‡ø@œQXbMÓ@œQxQë…@œQXbMÓ@œP)~×ð@6Q|ÚQ@6SÿÚJ,§@3ahr° Ä@3Cj‡‰— @2¤¼j~ùÛ@2=Ëc;$L@2Þi­BÄ@1ÍáD|@2Þi­BÄ@1Õ¼£n/@2Þi­BÄ@1«=€üã?|¬Æ Væ?”Y@ðãT?¡Wˆ%ÞW?Ÿ§VWD^„?§¡«[q)?–2}‘hJ?¿pÉÃV?–¹ÐÑÎn?•óäƒK°”?£ô ä#ÿ?§œZ.žÈJ?¦"4M©?Љ ¯Ó1Ð?¦-œºš?œÞl½o?£{iÚO½Â?†ˆ#.÷?ˆþë]èÆ@@@ @$@@.?ð?ð?ð?ð?ð?ð¿Ž\a­¿“¶Mâ¹€?ÀÿCÞXÀ?†Ž^¼•p@¤ ì kŒ @œQ-óRx?¬k²³ŽÂ?¡#ÿçÆí@]r¬{0æ4@53é[½æ@Ÿaÿoçs@@¨| A‰7L@¨|ÎÙ†@¨| A‰7L@¨|$Ý/ @¨| A‰7L@¨|žš@¨| A‰7L@¨|" Iº^@¨| A‰7L@¨|]cˆg@¨| A‰7L@¨|U›=@¯ ÿ|í‘h@¯ -éxÔþ@¯ ÿ|í‘h@¯ ýVlô @¯ ÿ|í‘h@¯ ÿ—$tT@¯ ÿ|í‘h@¯ -MÒñª@¯ ÿ|í‘h@¯ -4mÅÖ@¯ ÿ|í‘h@¯ -Ä›¥ã@7Î쿱[X@7Ë=ÈK^@3pÄ›¥ãT@3s{J#9Á@2ö§ï²-@2ør° Äœ@2J0U2a|@2Fö”Fs‚@2J0U2a|@2KC•%@2J0U2a|@2Iº^5?}?гá‡}?‘è™è;?–•Kù̃æ?‹¯eU5?’êÔÒ?“lP {“›?|öOÿÝ?” Á lŸž?’üüšë‚J?1ð'7éÃ?”°XÍï#Ë?•åÖuÍa?…~ÆÎÇ$†?•¾Ä6Ü?šˆøQû±?‡¯½.SM?ˆ‹”âó?Š*ÊÔQãú@@@@@@?ð?ð?ð?ð?ð?ð?Y‰V8¿XSî\?Sl¨äD?)¥ºq,sl@¨|¯W¢@¯ -LeL?q îÔûõ?KP2s?ä•Yº6¡?™º +|@Ÿh5¿½`@ž@ªJ Oß;d@ªJ-#¯å@ªJ Oß;d@ªJ -î|#÷@ªJ Oß;d@ªJ¿ß¦¢@ªJ Oß;d@ªJì%%ì@ªJ Oß;d@ªJ[a™J@ªJ Oß;d@ªJ SøßS@œï²-@œèÁTɇ@œï²-@œí¯‘;@œï²-@œQÓóž@œï²-@œïË©½}@œï²-@œì:…µ@œï²-@œöMкß@8G>«6z@8=\E$õÅ@3Ô›¥ãSø@3Ù¢ÙâtÆ@36§ï²-@3;·Çóãj@2œÚQÎ@2ž6'Š­ @2œÚQÎ@2žÌ÷gëÄ@2œÚQÎ@2œvJßø#?Ĺó¥p?’åƒçµ?’­a0{"Y?}ñoð‡#?‘ ªÊë×?‘ å>µÇ¤?|ï"<¶~~?”„Xžq?”‚Z5_Ü?‘Ÿx¾¼Cþ?‘U—’Z"—?§zS!Ń?±‹ F÷?Ž%€$ ß?‡— ‹þUr?…»š¤Gtµ?wOH]Ý?‡8ÏœŒæf@@(@$@&@$@.?ð?ð?ð?ð?ð?ð¿H·Tó?Qœ¾­Æ?3„µm<?8H˜ƒŽ¶™@ªJïó¾@œîq[N¢?,‚!bG`?[ÊÎ[±¡?X9JÕØ*z?¾ÁòúÖ.¨@ŸjÖ<K@Ÿ@­‡:^5?}@­‡8bMÓ@­‡:^5?}@­‡;/ìVÖ@­‡:^5?}@­‡4¼@­‡:^5?}@­‡5Ž!–T@­‡:^5?}@­‡.ŠqÞk@­‡:^5?}@­‡.;Í5¨@¨(õÂ\@¨$Z¬@¨(õÂ\@¨Ÿ¾vÉ@¨(õÂ\@¨“t¼j@¨(õÂ\@¨ë…·@¨(õÂ\@¨Ë’:*@¨(õÂ\@¨ -à @6 Î_oÒ@6ÏAòØ@3|í‘hr@3‰ k¹Œ~@2þV“u@2õŽ!–R½@2£ÉîËû@2˜r° Äœ@2£ÉîËû@2›íúCþ\@2£ÉîËû@2›jçÕfÐ?„F/·ÿP5?—.‰†5¸?•ÝFê˜}é?”ø”gt>?—‰ QQ0¯?”›(¯“?“Æ×q„nï?i½ÆÝCv?ïCbŸNy?™Ücãgp?žFl}ÖÑì?™6Œ%ß6?–EÑ}?Ž`ŸÝïöF?ƒM¬Öe—_?Œ¶š?$Ìj½BÙ?‹ú èNÆö@@@@@,@*?ð?ð?ð?ð?ð?ð¿`R䑼¿QÑÅ?:û†ùË?c¹¸Tí@­‡37¡Læ@¨uÎ&p?]LOB½‹?‚ó¯áž½¥?¶e:é?ó2¦!Á@ŸiÂŒy@ @¯o²-@¯oß;dZ@¯o²-@¯p©*/@¯o²-@¯np:û~@¯o²-@¯q&éxÔ@¯o²-@¯næ1ø¡@¯o²-@¯nÙ‡*@¬KƧïž@¬LÌÌÌÎ@¬KƧïž@¬KíúCþ@¬KƧïž@¬KíúCý@¬KƧïž@¬MquŽ@¬KƧïž@¬L¿±[W@¬KƧïž@¬L<žìÁ@5kµsê´@5k’:)Çz@0‡ÎÙ‡+@0‰Î_oÒ@/íOß;dZ@/îV“t@-ÑÑN;Í6@-Ó33334@-ÑÑN;Í6@-ÒþÅm\ú@-ÑÑN;Í6@-ÒþÅm\ú?žˆ2}?ZÁ».œ?‘šÕU#?Œݶ\ñr?÷6r In?ÍàÊaùX?€‚ñêã ?’`5žña?ˆ9²0?‡@Cvì×?ÐFf$?–’+¸¢d?‚íWçé„?ŒË›Í‡Çq?‚ÂÌ]æ?ƒ3¸Î{Z?†Óß -tõ?†µ°jÆÃ@@@@@&@*?ð?ð?ð?ð?ð?ð¿!ës>€¿>&?1Trïsoÿ?A<.í¹@¯oÆù{h@¬L·»?QA°Ú¡X­?3å­Î&1?«¤}¡ôH‚?qþ˜–ãj@Ÿh&•‰Ü@¡@¥k…¸R@¥k Iº@¥k…¸R@¥l"h Ö@¥k…¸R@¥l1&é@¥k…¸R@¥lL˜_@¥k…¸R@¥k Iº@¥k…¸R@¥kC•@£È»çl‹D@£È¼(õÂ@£È»çl‹D@£È¼¾ß¤@£È»çl‹D@£È»quŽ"@£È»çl‹D@£È»quŽ#@£È»çl‹D@£È»À6ã@£È»çl‹D@£È»²þÅm@4„¯O „M@4„ohÜ@,`A‰7K@,S&Á½@) 1&éy@) íúCþ]@&æL/ƒ{K@&æ?¼@&æL/ƒ{K@&æ?¼@&æL/ƒ{K@&æL/ƒ{K?‚á²Olºü?°çR;?‘"žæÆó¡?‹µ™eU!µ?íOþtà?¶*WFÑ?|öOÿÝ?’˜‰%F²?ˆ9²0?1ð'7éÃ?Ó%y*£=?NÂò‚Ì`?‚2Y0â³?Œ°¶.Ä+Æ?‚q6tNø7?‚ãaÎúvh?†ˆ#.÷?†ˆ#.÷@@@@@,@*?ð?ð?ð?ð?ð?ð?‚~€¿a‘p ?#CT^Óß7? dw@ Ž@¥kP£8™@£È»Û¾Ò?BéØõtM¶?-·õÖªÉ?'cà<3d?eÔFX% ¹@Ÿh² 16@¢@¢ŒµÂ\)@¢Œ¶°_¯@¢ŒµÂ\)@¢Œ¹°d5ë@¢ŒµÂ\)@¢Œºƒ¹hç@¢ŒµÂ\)@¢Œ·~Ñ•@¢ŒµÂ\)@¢ŒÉù.@¢ŒµÂ\)@¢ŒÑ…®D@–\S÷ÎÙ@–\S,øü"@–\S÷ÎÙ@–\M@ÖA@–\S÷ÎÙ@–\JØ¡òK@–\S÷ÎÙ@–\lÝŠ@U@–\S÷ÎÙ@–\€Ã‚¿w@–\S÷ÎÙ@–\ªLËŒ@6–»˜È@6Uæâø2@3¡hr° Ä@3¨xìê×@3îùÛ"Ðå@3쌜q -¶@3…œàu÷@3‚ Ž£é,@3…œàu÷@3Švº‚@3…œàu÷@3Št' fµ?~Ov_Ø­«?–Hk«7®?µ„9­Ä /?ª8†®3šÀ?¦\þǵ"5?¤/…J§ÄÙ?„ÜNó7·å?•Ûq'æä?¶…X‹›A¦?¨jKfùŽ?£„\è³s?ªfõL®O?Š¥þ}¿t7?Ž~†^O0?¡Ï`¿xbò?«-Å Ûô?©FRv–.?¦6é`×%@@&@,@*@:@7?ð?ð?ð?ð?ð?ð?sËú½é?|<%@?Q©ˆÖÈ?SÌPÈGBf@¢Œ¼ööKe@–\f³îN -?kQÎ)±dç?o…̶¤?Ëîô‚½]Þ?ÌšrZÊðS@Ÿa3i® q@£@¬„ -=p¤@¬„KƧï@¬„ -=p¤@¬„éá°Š@¬„ -=p¤@¬„È´9Y@¬„ -=p¤@¬„$Ý@¬„ -=p¤@¬„_Ø­­@¬„ -=p¤@¬„ -=p¤@®¨ž¸Që…@®¨š^5?}@®¨ž¸Që…@®¨ŸØ­«Ÿ@®¨ž¸Që…@®¨ž5?|ï@®¨ž¸Që…@®¨ž\‘ÑO@®¨ž¸Që…@®¨IQ‚ª@®¨ž¸Që…@®¨¡–R½<@7ÖšÔ,<Ÿ@7Ñ‚©“ á@3J^5?|í@3KC,¥z@2—ï²-@2—ÎÙ‡+@2a:’£S@2a|ÚQ@2a:’£S@2aN;Í5¨@2a:’£S@2a:’£T?§Q,Äš¤?:LÓá -í?‘ŸÇSñ?Œ9‚Ù.?’¥.Kn Í?‘É=¦þï?Ž=fA:?“-N•I`(?»Þ‹"è?‘.}áµ$?”*v7¹¿?lINõÕ„?FpÉ'Ý?)‰€Zw?‚á²Olºý?…®×__C?ˆk! ¨l?†¼Š˜L¥÷@@@@@@?ð?ð?ð?ð?ð?ð?4ÏG,è?U/ŽX?5£ËÇ[ÌX?8–­â˜ˆ@¬„%§Ç¤@®¨ž=6?IÝœ¬&?Xùø#_Â?M}Þg‰K?¯b»]šÔ@ŸozaØ^@¤@­q7ÎÙ‡@­q/²- @­q7ÎÙ‡@­qO–»™@­q7ÎÙ‡@­qTêJŒ@­q7ÎÙ‡@­qLIº^4@­q7ÎÙ‡@­qHŒç°@­q7ÎÙ‡@­qG†Â&@ªF›¥ãT@ªF+ J@ªF›¥ãT@ªEü¹#¢›@ªF›¥ãT@ªEÿØ­« @ªF›¥ãT@ªFN¤¨À@ªF›¥ãT@ªFÉä@ªF›¥ãT@ªF *0U3@7¨†YJôñ@7«àÞÒˆÎ@2ý‘hr° @2úÀƒn—@2²-V@2‡1Å‚@1Ê0U2a|@1Äg8}¿@1Ê0U2a|@1Â@·€4n@1Ê0U2a|@1Áò×s?—¤o„C?“à‘û?¢µ‰Š’b?’ {½4?”‰Wïÿ·?–À¬‡$?‚á²Olºü?šÒ’](¼+?™”uÀdª?’RÖò?™Ÿ»6“?–ª ã*Ã?ŒÊ­#г^?îŠõ ?Цÿßë?¤?‡•ó¨–ˆ?>LR_5?‹Ûx§Þ@@@@@$@$?ð?ð?ð?ð?ð?ð?sžf<€¿3²z?g‰Ö‘é1?P£žüæé©@­qCƒy>ˆ@ªF³‡GÎ?ƒ‹°ÔZI?r¼m°Ç9À?ûg¦zOJ>?àîw¯`@Ÿkré @¥@¤s¶E¡Ë@¤‡ï²-@¤s¶E¡Ë@¤jrºaû@¤s¶E¡Ë@¤k/Š1l@¤s¶E¡Ë@¤kB«þ[@¤s¶E¡Ë@¤kÌ>ÒQ@¤s¶E¡Ë@¤k”ÝUæ@–ðE¡ÊÀƒ@–ð8Ôýó¶@–ðE¡ÊÀƒ@–ð30 @–ðE¡ÊÀƒ@–ð>eíH‚@–ðE¡ÊÀƒ@–ðD¦ê9@–ðE¡ÊÀƒ@–ðIÑ2­ª@–ðE¡ÊÀƒ@–ðGENO@8`ØDЩ@8XN¤¨ÁU@2?|í‘h@1ý>ŒâY@1å`A‰7@0ýKTkþŽ@0}cˆe”°@0z—~ýo¿@0}cˆe”°@0|c‹œ*@0}cˆe”°@0jâíDö?æ ç«Z–?”¬1ÅÊQ?‘–[Ze6?‹ÀG&ÁÌ®?’Žºù“H?‘4ލ«,X?æ ç«Z–?”òÌ¡ZùÞ?„š6?5‘Êß) ?’+Ñ2®?øŸ4Vå¡?æ¡‚á¾A?P¬êÝñ?‚€Ü‡Rçá?ƒ9†ò??ˆ¤¦­¤(¹?ŠuRZIòr@@,@$@$@:@2?ð?ð?ð?ð?ð?ð?#€L]¸?E|Á7§?2îìàHQ?Có´öµþ@¤kƒ#è#@–ðFÿ}–9?BdC;ö²š?Rô P”šh?~ªëÆet?”~H -@ŸsXñlšb@¦@¨–Iº^5?@¨–IxÔýõ@¨–Iº^5?@¨–IÔ•+@¨–Iº^5?@¨–IÇy¦µ@¨–Iº^5?@¨–IÇy¦µ@¨–Iº^5?@¨–I 'RS@¨–Iº^5?@¨–IxÔýô@«–“u@«–E¡ÊÂ@«–“u@«–Ov`@«–“u@«–R½<6@«–“u@«–‡+ @«–“u@«–z—@«–“u@«–“u@/Ñ ²•éâ@/Ñ ²•éâ@*©7KƧï@*©7KƧï@*E¡ÊÀƒ@*R½<6@)`ªdÂù@)SŽóMk@)`ªdÂù@)SŽóMk@)`ªdÂù@)`ªdÂù?É^³Dw'?Á+gÅß¶?‘ŸÇSñ?‹½XQê>æ?îú/´`?¶*WFÑ?ÐbV‡,?’ -‰¸Ì?ŠA)Nîá?3.Ylî?Ö§­îQD?Sñƒ´V.?€b¡´ñ@?Œ¬Çëý ?‚s@ˆaÛ?‚ãaÎúvh?†‰Oú|q?†‰Oú|q@@@@@,@*?ð?ð?ð?ð?ð?ð¿ ¡ˆëp¿+P*¹´>öÓÀ4ÇZ?0,ô–‚å@¨–I£ÙÀI@«–\€E¯?ô'ðú;&?$ÿÈYâš?¦KOþ˜?CTõêd5r@Ÿs¾ù¢¿@§@¦‹áÊÀƒÁ.„€@¦‹áÊÀƒÁ.„€@¦‹áÊÀƒÁ.„€@¦‹áÊÀƒÁ.„€@¦‹áÊÀƒÁ.„€@¦‹áÊÀƒÁ.„€@§3‡®záÁ.„€@§3‡®záÁ.„€@§3‡®záÁ.„€@§3‡®záÁ.„€@§3‡®záÁ.„€@§3‡®záÁ.„€@8õS&Á¾Á.„>¤µÜÆ@48r° ÄœÁ.„M‰ûçm@3'KƧïžÁ.„QnÙ‡@2¿ò䎊rÁ.„NÜC,¥@2¿ò䎊rÁ.„NÜC,¥@2¿ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø¨@¦’}p£× -@¦’ŠÀƒo@¦’}p£× -@¦“ qv@¦’}p£× -@¦’ÔFs×@¦’}p£× -@¦‘á½¥@¦’}p£× -@¦‘HK]Ìc@¦’}p£× -@¦‘€-à @ªAݲ-V@ªAƧï²@ªAݲ-V@ªA íúCÿ@ªAݲ-V@ªA]/Ÿ½@ªAݲ-V@ªBD%®æ2@ªAݲ-V@ªA¼¹#¢œ@ªAݲ-V@ªAí„M;@8[¹Œ~($@80–»˜Çâ@3…?|í‘h@3„`ªdÂø@2v§ï²-@2i k¹Œ~@1øDЩ*@0óÉîËû@1øDЩ*@1aä÷eþ@1øDЩ*@1}¿H€?¬å'[ V÷?È”SÂëãî?Æ€v€Fd­?ÃTù Ö?ÓìôC€ò«7@¡þOß;@¡þXâe@¡þOß;@¡þlô!@8wâ‚@·€@8o·éùr@3µãS÷ÎÙ@3´ýó¶E¢@2¢-V@2 @1a:’£S@1bñ©ûçm@1a:’£S@1c¼ÓZ…ˆ@1a:’£S@1cn—P?гá‡}?”û#T©È?“=P™Ê?$¿ÀºÍ?“ £Ê­?’ß5¤µÜÆ@4£÷ÎÙ‡@4¨SÌ)¤@4b-V@4n¤èÙ +@35µsê³h@37庭ά@35µsê³h@35óf¹âÔ@35µsê³h@3ªn<Øà@8J¨?“ŸÈÖ?1?£œoðM¦"?ŽöW–}ä8?”pðÈ­°v?˜!žk$_@8J¨?˜œóÜš?šˆg^}®?ãGŒ%<â?”æÞ¡Ú_Z?•@ô¤,@8p÷?“I–ÏtþM?š6釯¤†?‹³¥vd‹ó?Žl_N?—Q"1Ú@*@*@$@:@8?ð?ð?ð?ð?ðøøøøøøøøøøøø¬@¯Bs3333@¯Bst¼j@¯Bs3333@¯Bs3334@¯Bs3333@¯Buµsê²@¯Bs3333@¯Bt9Xb@¯Bs3333@¯Bra|Ú@¯Bs3333@¯Bqë…¸@¦–¾vÈ´9@¦–¿|í‘h@¦–¾vÈ´9@¦–½ó¶E¢@¦–¾vÈ´9@¦–¿¤?åÉ@¦–¾vÈ´9@¦–¿|í‘i@¦–¾vÈ´9@¦–¿oÒô@¦–¾vÈ´9@¦–¾ƒä%¯@6VšÔ,<Ÿ@6TêJŒ@25ãS÷ÎÙ@26E¡ÊÀƒ@1;Ƨï²@1<"h Ô•@0³&Á½¥@0³¶E¡ÊÁ@0³&Á½¥@0³S÷ÎÙ@0³&Á½¥@0³Z…‡“Þ?|öOÿÝ?ï1ïºÅ?’ -·>á ?Œ9‚Ù.?‘˜¯ -`É?‘PÊÑ<Ýl?|¬Çëý ?’5CàQ?ð{¥âdú?‘*Uešß?‘\{3>Ôa?ÐnçK/?‚ù…žÄ`w?Å9–o?ƒúʳ_Ä?ƒ ?ÿ½?‡?®\Âä?†ïRÉv‘Ñ@@@@@(@,?ð?ð?ð?ð?ð?ð¿+A‡U ¿ã5€?*ÖkõË4?÷»ˆ?kJ@¯Bs#A•Â@¦–¿E+x?Jx—uÄ?5Yhâ5‡?¢ˆ-Óí§?vì_®Ã¡°@Ÿf»{’Î@­@¥Q'l‹C–@¥Q'l‹C–@¥Q'l‹C–@¥QFYJôñ@¥Q'l‹C–@¥Q-„M;@¥Q'l‹C–@¥Q#¯·é@¥Q'l‹C–@¥Q&ö”Ft@¥Q'l‹C–@¥Q*Ú¹õZ@©Iº^5?@©K…¸S@©Iº^5?@©JÍžƒä@©Iº^5?@©V+jçÕ@©Iº^5?@©LÌÌÌÌ@©Iº^5?@©QÞi­C@©Iº^5?@©P Ä›¦@7[¹Œ~($@7^ÿ—$t@2ÞÙ‡+@2Êu%F -@24“t¼j@2#&Á½¥@1B‚@·€5@1:Ú¹õY´@1B‚@·€5@19³Ð|„¶@1B‚@·€5@16µ '¼?ˆÿÀ)T¿Æ?©V½jnè¶?˜/×T•£ð?“zRÈUÄ?•BPbC¡©?™ÞW4»²—?–ªÎ­¡?¦;ûTM¿n?±ˆµZ7?—,àÐÑž?›Hدâ[Â?¢’©)u%?…™ï ufÝ?vùv“?‰6~„æAÕ?…<ò N ?Ž•w “w„?屘Úã@@@@@,@*?ð?ð?ð?ð?ð?ð?Lj…`?S–⛤?H7Äg?A"FSÈ@¥Q',¹¢@©N)ôLf?hL´‰² d?^m°…zlj?ÊlN· D7?¥‹†ûèÌÓ@Ÿi½=H/`@®@®ÐH´9X@®ÐBMÒñ©@®ÐH´9X@®ÐJŒL˜@®ÐH´9X@®ÐIá°‰ @®ÐH´9X@®ÐGRT`©@®ÐH´9X@®ÐF¸ºÇ@®ÐH´9X@®ÐHè§ç@¦¹Û"Ðå@¦¿;dZ@¦¹Û"Ðå@¦·€4mÆ@¦¹Û"Ðå@¦¹Û"Ðå@¦¹Û"Ðå@¦¹ k¹Œ@¦¹Û"Ðå@¦¶ð¹@¦¹Û"Ðå@¦¸ -à@87â‚@·€@823œ¾à@3pÄ›¥ãT@3r&€IQ@2´“t¼j@2·¯·é@2n_oÒ @2ohÛ‹­@2n_oÒ @2p6âë@2n_oÒ @2q4êJŒ?‡YÍ_?“…­tµH?“ï~í"?ŒR‹w#z?“r {#¥&?“Q´Î`°€?¥K¶{Oÿ?“£PuòN?–ˆkCünL?“^œW.‡?“ÀVâŸì?”Æ*%>g?¬¼•§&Œˆ?·ïö)h?† - Ðló]?„À"aËô??Š|)-}í(?‹¼`’ i2@@@@@*@,?ð?ð?ð?ð?ð?ð?U£»¥l¿R>]Ä2?4ds!—Â?G}‘[É­õ@®ÐF¢™@¦¹=ZÀ?UƇ"åçþ?_vz®ò?©Ÿ -gÎÐ1?­œ3Œw>@Ÿn‹úªoô@¯@§q&éxÕ@§o ‰ª@§q&éxÕ@§E9g@§q&éxÕ@§kHƾ@§q&éxÕ@§‘ˆ÷îk@§q&éxÕ@§cÈÑrÊ@§q&éxÕ@§zÿØú?@™.wÎÙ‡@™.vª@Ñ@™.wÎÙ‡@™.]Ø«˜7@™.wÎÙ‡@™-•Ølÿ]@™.wÎÙ‡@™-êé‰î@™.wÎÙ‡@™.gíF¶d@™.wÎÙ‡@™.háŸ@7D¯O „M@7@JK;æ˜@3; Iº^@3.„üc5u@2ù7KƧð@2æŠÇt@2zÔ,<ží@23‚õ]–@2zÔ,<ží@2Sß2û0@2zÔ,<ží@2UÍíà ­?e™”XWø?”áê ?•|i=÷ñ¾?ª ¦õc“?£¤Éí¢?¦Þ}‘çþ?“Ëî(Ù_]?’3ÿï¥Ç?¯üC#]Â?·Ñ©éµ.Ý?¦lŠ­É3Ç?¡l–ðf|?ŽÚ–ÙŽ¿¨?œ ÖHŒ3?‹y¸–æ?•yyȧÚ?¡*«niCÆ? ÙWƒœÕ@@$@@(@;@8?ð?ð?ð?ð?ð?ð?U¤4«¿^c4~"?l†–;ì?lÊÎë´Jˆ@§qlj&@™.lW+O+?‹€}l[:?ŽÖXl¨ê@g¯ Ë?ýsr¸(Î@Ÿe7çÅ@°@¦@oŸ¾w@¦@wKƧð@¦@oŸ¾w@¦@oDG/P@¦@oŸ¾w@¦@qäFÝ—@¦@oŸ¾w@¦@pŠÈÍÄ@¦@oŸ¾w@¦@mùF…W@¦@oŸ¾w@¦@ml½§–@–4V“@–4"MÒñª@–4V“@–4"†èu¯@–4V“@–4ô–›“@–4V“@–4 øª¦@–4V“@–4 ?;ÿ @–4V“@–4oJÓ@804mÅÖ8@8=Â\(ö@3…?|í‘h@3ŠTâ¯@2Ͳ-V@2ÑÖä|¶@23&Á½¥@26æûæÄ÷@23&Á½¥@2:Y»–Î@23&Á½¥@2;”„óç˜?æ ç«Z–?’PÕâ 6ö?–N²Â6ì?‹ÏOÁO;V?’ÇÅ—-?“±ÄÌÔ?æ ç«Z–?•hÎ)ý-?‘¥ÙïÉ¡%?–3¼9M?“ÅâÆ³?“ùà€Þ?æ¡‚á¾A?Ž-dʦí?®Õ>JM?‰t66ËÈò?‰[!.…×?Vçúm3Y@@(@,@@<@:?ð?ð?ð?ð?ð?ð¿W»ýc†?]®â&B?0¾D¡9\ä?L*zƒ5S±@¦@nÞÓvè@–4äðé??Çã[ý8 ?Z–3¼ ×þ?tÖ}*¸>d?¨—žåÍBt@Ÿrî8ð“ƒ@±@¬S Iº^5@¬S Òñ©ü@¬S Iº^5@¬S 5¨Xy@¬S Iº^5@¬S žƒä&@¬S Iº^5@¬S «ŸUš@¬S Iº^5@¬S ¹Œ~)@¬S Iº^5@¬S ÓÃa@®„“t¼@®‚\(ö@®„“t¼@®…ãS÷Î@®„“t¼@®„?åÉ@®„“t¼@®ƒ¯·é@®„“t¼@®„µÜÆ?@®„“t¼@®„%®æ2@5°4mÅÖ8@5°uöý!ÿ@1n5?|í‘@1nšu@0]V”@0]quŽ"@/™b¶®~@/™Û"Ðåa@/™b¶®~@/™¦µ (@/™b¶®~@/š6âëD?|¬Çëý ?%¼ÇÆÃ±?‘e -!ßC?ŒArUã@?‘2A¥Ø?âé¨ë7F?|¬Çëý ?’0nà=Q“?œõLÁE?Y‡…—Ø?‘=d¦^™?Éöm/w+@8Iç@8Ù?§Ò¸ùBz3@8Î÷@8i§@8Å@8S@8û—?ˆAᆽÃì@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø´@¯Ž1&éy@¯Ž1&éy@¯Ž1&éy@¯Ž´9X@¯Ž1&éy@¯Ž ÞÒ@¯Ž1&éy@¯Ž 7Kƨ@¯Ž1&éy@¯Ž“Ý—ö@¯Ž1&éy@¯Ž“Ý—÷@­0ÔzáG®@­0ÔzáG®@­0ÔzáG®@­0ÔÉ…ðo@­0ÔzáG®@­0ÔmÅÖ9@­0ÔzáG®@­0Ô¼j~ú@­0ÔzáG®@­0ÔðØDÐ@­0ÔzáG®@­0Ôã¼Ó[@0Î쿱[X@0Îæ1ø @,\j~ùÛ"@,\j~ùÛ"@*|¬1&ê@*|Æ?@*\¾ß¤@@*\ÚQÎ@*\¾ß¤@@*\ÚQÎ@*\¾ß¤@@*\(õÂ]?É^žQ5P‚?Úþþ³?‘(¥¿á?‹¦ ŸYÔ?îú/´`?·t¤¢‚J?ÐbMçê_x?’ -‰¸Ì?ˆ9²0?0ÜN :s?ÔÒ@úˆ‘?NÂò‚Ì`?€bMÕky?Œ­·Ž~('?‚q6tNø7?‚äÍ“½E'?†ŠúЀ>(?†l&þ@@@@@&@*?ð?ð?ð?ð?ð?ð¿HuG¶¨?Ò4” ?0¥ÕeLÄ?{ƒYâÀ@¯Ž=ˆ@­0ÔØ;Ã¥?>ËWÜMÅ ?ôkMîšh?wRÒóD2?!z›"ûÅ@@ŸsÕUßÖ@µ@§ŠJÀƒo@§ŠJ~ùÛ#@§ŠJÀƒo@§Š<¹#¢œ@§ŠJÀƒo@§Š,ÌÌÌÍ@§ŠJÀƒo@§Š)Çy¦µ@§ŠJÀƒo@§ŠquŽ!@§ŠJÀƒo@§Š xG@¦ï’ñ©ûç@¦ï™XbM@¦ï’ñ©ûç@¦ïàªdÂø@¦ï’ñ©ûç@¦ïØ“t¼j@¦ï’ñ©ûç@¦ðCn—Œ@¦ï’ñ©ûç@¦ðP£× ->@¦ï’ñ©ûç@¦ð)º^5?@6ºqÞi­C@6®ß¤?åÉ@2|í‘hr@1ÞÑ·Y@1b-V@1)ûçl‹D@1Þi­BÄ@0Åm\ú¬Ú@1Þi­BÄ@0Çy¦µ @1Þi­BÄ@0È>BZîc?žŒÝÙ›P? ³Q–“˜Ô?ŸÑF ðÿ.?© Êºd9.?«qÐS=²Ý?³y¥ÒØ?‡YÍ_?¡1™•ÿˆQ?¡c2M?ÍA„ÉÇÔ?Å,Q‰0åb?¿³r -?ÉÏt -j?‘a÷nñ?ÜÒƒN%?<±-ëÃV?’&Á¯»?’Oûh´6c@@@@@,@*?ð?ð?ð?ð?ð?ð¿Šp' Ì?¢'ÕÓl`?O¦Žªúw?}åEûxw@§Š8ª†Ç@¦ïˇ¬„©?mb'PNµ?•'|Ž a?ª!ʶb‘º?íyAåĈÿ@Ÿ`÷ê"­"@¶@¤á§l‹C–@¤á§ï²-@¤á§l‹C–@¤á¨Ë’9@¤á§l‹C–@¤á¨šu%@¤á§l‹C–@¤á¨ÁTɆ@¤á§l‹C–@¤á¦YJôñ@¤á§l‹C–@¤á¦YJôñ@¤ÍTýó¶F@¤ÍU?|í‘@¤ÍTýó¶F@¤ÍTÉ…ðo@¤ÍTýó¶F@¤ÍU*™1@¤ÍTýó¶F@¤ÍT¯O „@¤ÍTýó¶F@¤ÍU?|í‘@¤ÍTýó¶F@¤ÍU%F -¦@+¨ð¸@+¨ð¸@&kƧï²@&kƧï²@$÷Oß;d@$÷Oß;d@$¸7´¢3œ@$¸7´¢3œ@$¸7´¢3œ@$¸7´¢3œ@$¸7´¢3œ@$¸DЩ+?É^žQ5P‚?ÖÈ ¼?‘½ümüñ?‹ª½¨ª8v?éDEâ©×?·t¤¢‚J?ÐbV‡,?’ -‰¸Ì?¹º–Èj?/ò×ÈZø?Í(ÀT >?NÂò‚Ì`?€b¡´ñ@?Œ¬Çëý ?‚nâwg?‚â‡~ûÉ\?†‡hÉÈÓ?†ˆ#.÷@@@@@(@,?ð?ð?ð?ð?ð?ð¿R ¦ ‰?+t?7 -®¤9n4?òNÆá@¤á§Rí@¤ÍTÿ^÷¬?F'ß>Ž\?*pÆ®·‘?ˆ&CÊLAA?NºaËýJ†@Ÿs*)v@·@¡¢ƒn—@¡¢;dZ@¡¢ƒn—@¡¡·Xâe@¡¢ƒn—@¡¡]æšÔ,@¡¢ƒn—@¡¢æ¸ºÇ@¡¢ƒn—@¡¢8DЩ@¡¢ƒn—@¡¢be+Ô@ž;ÌÌÌÌÍ@ž;¸Që… @ž;ÌÌÌÌÍ@žë¢Ã`u? ¯2§ðci?ÒjÉ8¥´n?Ð1'hË -ç?¿N†Ï¸?¼(›Æ´?Ç ”\d?ÇÜà÷Í?µo Þøµ?Ö¾cÓ[†@@@@@,@(?ð?ð?ð?ð?ð?ð?¢Øœ±€¿¥DGKx ?‡¾‰¹[‹µ?{ÌE[úa@¡¢ÄÄ“1u@ž;H??¬?Ÿ:2*³Y¦?‘zòZæ@ªƒúyâ?êÀщ3@Ÿd|EgL@¸@ zNÙ‡+Á.„€@ zNÙ‡+@ zPP ?9@ zNÙ‡+@ zOß2Ô!@ zNÙ‡+@ zPù˜®@ zNÙ‡+@ zMéÈŠw@ zNÙ‡+@ zMÓ¾q@œ\V“uÁ.„€@œ\V“u@œ\V©‚‹@œ\V“u@œ\Y¯×*@œ\V“u@œ\V:ž¥¨@œ\V“u@œ\UîzO@œ\V“u@œ\U˜\;¡@/A°‰ 'RÁ.„>¤µÜÆ@*$“t¼j@*$}Êï‰@(´ýó¶E¢@(´®4·À@( -#9Àëî@( 8—ï‘@( -#9Àëî@( *žR%@( -#9Àëî@(.])—‡@8 -Näy?¾ŸÌVÏù?‘ÛΣ1?‹¬.ÎmA+?ëéû+?µ\ÖXV@82rê?’Î?ž£=?|™v«*å?3FN¡c$?Ü~Õ@#Z?O¦ZQûE@8L?Œ¬²ž–TÈ?‚qŒÊÒÕ?‚懒n°W?†Ò•@ì?†i= ç@(@,@2@=@9?ð?ð?ð?ð?ðøøøøøøøøøøøø¹@®áÿ|í‘h@®â·ïÂ$K@®áÿ|í‘h@®áþöá ‚@®áÿ|í‘h@®áëfL<3@®áÿ|í‘h@®â -ºZÀ(@®áÿ|í‘h@®áþàîf~@®áÿ|í‘h@®áùn©@—øk…¸R@—÷Æ$M{‹@—øk…¸R@—øRN«:@—øk…¸R@—øu.МS@—øk…¸R@—øvI‹@—øk…¸R@—øo«oµ@—øk…¸R@—øt| =Ú@8‰Î_oÒ@7¶‡)s£î@5+¥ãS÷Ï@539í¯I’@4A‰7KÇ@4˜á‹Å/³@4uµsê³h@4„"#á*@4uµsê³h@4†&®ö˜7@4uµsê³h@4‡"&ž?ß@l÷#?©×® Œ?’ß±äãÂ?œ¡Ðyçÿ? \l5wÈ? ë±jÎ×?Õ#{ñ¢W?”­+»21?“(w•ÆÔ?¡=#›o°?£MZèЮí?›Ìbº4?òKŸ:q¾Õ?‘0ÐÙm -i?•fÀ?R]Ñ?”¤.:›ÆN?•‰eæq+k?œ¨>÷â”…@@$@$@,@<@8?ð?ð?ð?ð?ð?ð¿Gæ.o ?IÊx ?nØ|N•W?l7¯yž]¬@®â¡ûP@—ørì¼7Ð?}Ùjð:¬Í?|^Áʲ ?Ø*7]Ò?Ñj@5§)Á@ŸsŽü-5@º@¨+1©ûçm@¨+2-V@¨+1©ûçm@¨+5Ž!–S@¨+1©ûçm@¨+1Þi­C@¨+1©ûçm@¨+/Åo@¨+1©ûçm@¨+1ë…¸@¨+1©ûçm@¨+4SŽóM@©Í8Ôýó¶@©Í9‡+@©Í8Ôýó¶@©Í8ï4Ö¡@©Í8Ôýó¶@©Í<í‘hs@©Í8Ôýó¶@©Í9Î_p@©Í8Ôýó¶@©Í8bMÓ@©Í8Ôýó¶@©Í9Œ~($@4úqÞi­C@4úû~ÿ—@3‡ÎÙ‡+@3‰…ðoiD@2Ct¼j~ú@2Cˆe”¯O@20–»˜Çã@21ë…¸R@20–»˜Çã@223œ¾à@20–»˜Çã@22{²þÅn?}Ñ¿ž,?‘<tc«6z@8ôM:’£@4@ Ä›¥ã@4F“t¼@41‰7Kƨ@4>5?|í‘@3ý!ÿ.I@3"T`ªdÃ@3ý!ÿ.I@3Ëûµt@3ý!ÿ.I@3¤?åÉ?«_$Øï†?%¼ÇÆÃ±?Ç ¾3з&? À߯K?žØ3Ä;5?”éëÀÍ?‘â%ì˜ ä?’uß¿çÒ?¹ £qÅõ)? ZÁ».œ?žÍhÿŒ?”'q²TrQ?°*?Ú±P?œûìôpØ?®'ºwò?‰®ðúcåZ?“KÌ&¨Í?“ÌUõÎs¼@@@@@,@&?ð?ð?ð?ð?ð?ð?]‰‰)T?bI•¯?vjCURÏ?OBzWOËÈ@©'³uj@¤³^õƒ1o?lÐYŽ™?qÈø–4µœ@¡:ãË?Ñ·Å»ú @ŸoÀݪz@½@¥Ëp Ä›¦Á.„€@¥Ëp Ä›¦Á.„€@¥Ëp Ä›¦Á.„€@¥Ëp Ä›¦Á.„€@¥Ëp Ä›¦Á.„€@¥Ëp Ä›¦Á.„€@§Ôýó¶FÁ.„€@§Ôýó¶FÁ.„€@§Ôýó¶FÁ.„€@§Ôýó¶FÁ.„€@§Ôýó¶FÁ.„€@§Ôýó¶FÁ.„€@7°4mÅÖ8Á.„>¤µÜÆ@3³S÷ÎÙÁ.„M‰ûçm@3 "Ðå`BÁ.„QnÙ‡@1ó&Á½¥Á.„NÜC,¥@1ó&Á½¥Á.„NÜC,¥@1ó&Á½¥Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø¾@£üÄ›¥ãT@£üÄ›¥ãT@£üÄ›¥ãT@£üÅ¡ÊÀƒ@£üÄ›¥ãT@£üÄêJŒ@£üÄ›¥ãT@£üÅo@£üÄ›¥ãT@£üÃS÷ÎÚ@£üÄ›¥ãT@£üÃn.±Ä@ &éxÔþ@ &éxÔþ@ &éxÔþ@ &ffff@ &éxÔþ@ %8ï4×@ &éxÔþ@ %ýŠÚº@ &éxÔþ@ %F -¦L@ &éxÔþ@ %¼£n@3Û¹Œ~($@3Ü1&éy@0!hr° Ä@0!£n.±Ä@/mOß;dZ@/mÒñ©ûè@.½Vlô"@.»"Ðå`B@.½Vlô"@.¼wškP±@.½Vlô"@.¼C,¥zy?ð°–Ž]?Úþþ³?‘K]Ã4?‹²MÿAÿ8?ôê÷º»â?æöæ×t?ð°–Ž]?’NÛˆV(?ÔCXsò?3.Ylî?ÝIMÎ?oÌ‘'ýT?ð*wjs—?Œ¾»•lŽ?‚Ö˜>µDá?ƒžÂâk,?†ÃÛSPã?†¯Mž684?ð@@@@&@&?ð?ð?ð?ð?ð?ð¿H´+A–¿!§3¸?0Ïßݕ1?)Ïë0^j@£üÃÿ°¼Ñ@ %®¶!€?@4^3‘´?87‹·,‘?x»ùx¤?iˆUaÄ@Ÿs„BÚÇä@¿@®§s¶E¡Ë@®§v‡+@®§s¶E¡Ë@®§£{J#;@®§s¶E¡Ë@®§l"h Õ@®§s¶E¡Ë@®§tmÅÖ:@®§s¶E¡ËÁ.„€@®§s¶E¡ËÁ.„€@œpÓ÷ÎÙ@œpÔú ³@œpÓ÷ÎÙ@œp­V@œpÓ÷ÎÙ@œpÁ×Ûôˆ@œpÓ÷ÎÙ@œp—>«6y@œpÓ÷ÎÙÁ.„€@œpÓ÷ÎÙÁ.„€@8šÔ,<Ÿ@8ýIÑø@5‡ÎÙ‡+@5€ÞÒˆÎp@4Ͳ-V@4À-à r@3úÔ,<ží@3®($ x@3úÔ,<žíÁ.„NÜC,¥@3úÔ,<žíÁ.„NÜC,¥?”$úÀÁ’?¯"O.áÚ—?¦’޾ÕE?Ày‘Fµc@8Iç@8Ù?|¬Æ Væ?©á,ÌZ?§i©†˜s?Áƒ*¥o’Ü@8S@8û—?š5`‚b?Ÿ°À×þ‚î?«E©åý?¦Ñ"²ÔšÌ@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøÀ@«¦¬1&é@«¦¨´9X@«¦¬1&é@«¦–¡aä÷@«¦¬1&é@«¦ˆË’:@«¦¬1&é@«¦gæšÔ@«¦¬1&é@«¦lÙè>B@«¦¬1&é@«¦usê³h@§³»dZ¬@§³»¥ãSø@§³»dZ¬@§³¶¡aä÷@§³»dZ¬@§³®¾ß¤A@§³»dZ¬@§³«¹Œ~'@§³»dZ¬@§³¯v_د@§³»dZ¬@§³¥`A‰7@7>«6z@7eýŠÚº@3Ìí‘hr°@3¶Ü]cˆe@36§ï²-@3qÞi­C@2¡:’£S@2|ÚQÎ@2¡:’£S@2z)Çy¦µ@2¡:’£S@2|ô!-x?’Óusÿ\Ã?œPîñ°¦?¦br !?¢~ -]zýØ?´HàÙM¨?²¬}Ÿ}ã?1·†Æjñ?œK2ô6Ä?¤(Éõ •?™vEËõB?©>΀mù?¤ÚÄ^Uâô?ƒúʳ_Ã?5¿êÜ?ŒÊ­#г_?†O.ce?Ü×þë¿?£õ¹OONS@@@@@,@,?ð?ð?ð?ð?ð?ð¿‘R6£k¿sTÖ5–?u§ò¹ƒ.‚?JH<²Ž@«¦‰ó·i:@§³³Ž -?’nÙ¤¡;?f(ÜÒâd?ÿ³ÅÄZæ\?ÁêªQ± Ë@Ÿc&Ѓ@Á@ª9íV@ª9Ü(õÂ@ª9íV@ª9`[À8@ª9íV@ª9ŸË’:*@ª9íV@ª9ÎV“@ª9íV@ª9¹e+ÓÃ@ª9íV@ª9½ó¶E¢@ª6¬1'@ª6"MÒñ«@ª6¬1'@ª6ˆð@ª6¬1'@ª7Á½¥@ª6¬1'@ª7 -Àƒo@ª6¬1'@ª6[/ìVÕ@ª6¬1'@ª6ŸU›=@8 ]cˆe”@8Â\(ö@3£÷ÎÙ‡@3i k¹Œ~@3 ²-V@2Æ”FsØ@2 ù kº@1аò{²ÿ@2 ù kº@1ϾvÈ´:@2 ù kº@1ÏoÒòå?›’qvš°•?Ç©2‡?Ä(“ßbðµ?”oý]Þ‡&?«£·æì?¬ptí#°??§Ò¸ùBz3?à ÙÂW~·?Ñ%øiû|?¹·ѹ[0?¥<Õ–—EI?½ßI”2}Ú?¶P€¼@ø”?”!?; Õ?’ã0eʪv?ˆÝíá‰?%üdêË?‹aÊ•TI@@@@@ @*?ð?ð?ð?ð?ð?ð¿zcæ Ü?’Ü÷ß0?Y1/ï~|ù?”7ïDÇ@ª9ÍÜ ’h@ª6X-¥u?s$etŒgü?²ßÿL ¶›?ȋǧ©"7@*o \#j@Ÿh¹Žh -@Â@©–»dZ¬@©–½0æ0@©–»dZ¬@©–¸Øü§ò@©–»dZ¬@©–ÀNë!/@©–»dZ¬@©–¶o¾5™@©–»dZ¬@©–¸Ù§ú@©–»dZ¬@©–·ÆçbÝ@“K¾vÈ´9@“K·3É$@“K¾vÈ´9@“KÁDÃÈ@“K¾vÈ´9@“K§­£¼´@“K¾vÈ´9@“K±\yL@“K¾vÈ´9@“K·$šúP@“K¾vÈ´9@“K¼ªg^@8åöý!ÿ.@8êŒ È @4|í‘hr@4$wMp@2¾V“u@2½öp([”@2–ý!ÿ.I@2—ïoÒè@2–ý!ÿ.I@2™’Õ‰qm@2–ý!ÿ.I@2˜Ucñ¾?ª©ÑÉëÊ2?‘3ªº±°Í?‘›YsNÆ?ñV¢-TL?‘=î…é?óõ±{?ŸáŽJ\m?’­%Ž£‹™?þÛ0{rw?“²€m?”¢$ï,3ú?Èž]Ã?._?È-ìû ?…bsøÂ?…Ï4YQ¤?Šàå&N–?ˆ†–mt -û@@@"@&@3@*?ð?ð?ð?ð?ð?ð¿1Ù`?>&8Ùp?K¹x~Ò?Eeã©Ê“@©–·Ðüî@“K·ûÒãØ?`5E¦rx?e3]é]ð¨?µ°e{N±‹?ÄZjµ6ç4@Ÿp*Ü€ò@Ã@Ÿ³ Iº^5Á.„€@Ÿ³ Iº^5Á.„€@Ÿ³ Iº^5Á.„€@Ÿ³ Iº^5Á.„€@Ÿ³ Iº^5Á.„€@Ÿ³ Iº^5Á.„€@“’n—PÁ.„€@“’n—PÁ.„€@“’n—PÁ.„€@“’n—PÁ.„€@“’n—PÁ.„€@“’n—PÁ.„€@6-¥œàvÁ.„>¤µÜÆ@2Š^5?|íÁ.„M‰ûçm@1nùÛ"ÐæÁ.„QnÙ‡@0‚@·€5Á.„NÜC,¥@0‚@·€5Á.„NÜC,¥@0‚@·€5Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÄ@­p£× -=@­VE¡ÊÁ@­p£× -=@­†L/ƒ|@­p£× -=@­8*™0¿@­p£× -=@­S&Â@­p£× -=@­lÌÌÌÍ@­p£× -=@­lcñA@©áG®{@©Ôýó¶F@©áG®{@©¢3œ@©áG®{@©5fÏAò@©áG®{@©\(ö@©áG®{@©’° Ä›@©áG®{@©™‡+@8–šÔ,<Ÿ@8 uöý!ÿ@5®5?|í‘@5Ÿ\(õÂ@4ûƧï²@4ÎcŠ @4YŒ~($ @42½<64@4YŒ~($ @4JîcŠ @4YŒ~($ @4MVlô"?¥K¶{Oÿ?”·'‚5â–?¦†np½Ý?Àº¿]\ë?§|Qæý S?£6|Obœ?¦Ï±úQm‡?•%!{‚A? Z«42³?ºÇ`ؤ?´Mí¼#£?¤Â¤n°,i?²†N²N7?«…Éšûñ»?©uÃÇ?§¸'ôÔD[?¡xfrÂû?ªi‰o+p@@@@@*@"?ð?ð?ð?ð?ð?ð?thiD¿Š+Ÿç?vœÁÿšh}?z¢GÖWÊ@­ae…$€@©µ ²­õ?—ªßž  ?h6E-Åy?þû³tÄ;@ø™B#@ŸlæÛ ù@Å@©3¶E¡Ë@©3¶E¡Ë@©3¶E¡Ë@©4,<ží@©3¶E¡Ë@©4¢3œ@©3¶E¡Ë@©4FsØ@©3¶E¡Ë@©3ŽóMi@©3¶E¡Ë@©3Z…‡”@¢ÑQhr°!@¢ÑQhr°!@¢ÑQhr°!@¢ÑPØDÐ@¢ÑQhr°!@¢ÑP|„µÝ@¢ÑQhr°!@¢ÑQÎ_@¢ÑQhr°!@¢ÑQ4êK@¢ÑQhr°!@¢ÑPØDÐ@05S&Á¾@05S&Á¾@*ÍV“@*ÍV”@*:¬1'@*9õY³Ð}@(ÿåÉä@(ÿ¾vÈ´:@(ÿåÉä@(ÿ±[W>­@(ÿåÉä@(ÿË’:)È?É^žQ5P‚?Úþþ³?‘&Øç?‘?‹µ™eU!µ?îú/´`?¼‚Ë¡K?ÐbMçê_x?’¼  g¶?ŽËÜ¿€?6) }’ë?ÚÌA B{?PS2K¯™?€b¡´ñ@?Œ­·Ž~('?‚q6tNø7?‚äÍ“½E'?†‰Oú|q?†ŠúЀ>(@@@@@,@*?ð?ð?ð?ð?ð?ð¿:s¾Çð¿¢"« ?Ñ—;ï?x¶éÍå@©3È튰@¢ÑQíYŸ?$Hjòö?$é»à¡¾>?D/-ÎÌÑ’?C(aŠp@Ÿs_«pü@Æ@¦xG+ J@¦xH1&éy@¦xG+ J@¦xI“ àß@¦xG+ J@¦x)ûçl‹@¦xG+ J@¦xHK]Ìd@¦xG+ J@¦x7Ûô‡ü@¦xG+ J@¦x=—ö+k@¥í2° Äœ@¥í2-V@¥í2° Äœ@¥í1ÑN;Í@¥í2° Äœ@¥í0ÿ—$u@¥í2° Äœ@¥í>Åm\û@¥í2° Äœ@¥íiÇy¦¶@¥í2° Äœ@¥ídŽŠqÝ@6šÔ,<Ÿ@68†YJõ@3µãS÷ÎÙ@3¹0¾ í(@2îùÛ"Ðæ@2ô!-w2@2¦YJôðØ@2§_oÒó@2¦YJôðØ@2ÅÖ8†Z@2¦YJôðØ@2˜e”¯O?‚á²Olºü?/³)sšÌ?“ÔÃÆWž?’gh·T°?œ=òÙUä?¡î®ðÎ`~?|¬Çëý ?’uß¿çÒ?‘å†36åG?•%ôµh©F?°X‚O?ªl©N«½?‚q6tNø6?”É…ðoiE?•Wí+ Æ?‡W·ŽA:Þ?•XðküÏ?•XðküÏ@@@@@,@(?ð?ð?ð?ð?ð?ð¿aá-þÌ?ôM+o?W^ó«Å©?eq´ËTÄæ@¦xEW26d@¥í=°0è?sI1Uƒpƒ?€5áèÍË?åìóFa†Ö?õÈ¿ïû@ŸaÑ÷lh@Ç@ªD…¡ÊÀƒ@ªD‰ Ës@ªD…¡ÊÀƒ@ªDŠ’êc½@ªD…¡ÊÀƒ@ªD† ¤Vc@ªD…¡ÊÀƒ@ªDŠÊ˜4Ô@ªD…¡ÊÀƒ@ªD†#à'Ï@ªD…¡ÊÀƒ@ªD‚|…jt@›õÂ\)@›øÔýóµ@›õÂ\)@›ú¦ñ·@›õÂ\)@›úñLÎ @›õÂ\)@›ùÎ5@›õÂ\)@›ôŸï5g@›õÂ\)@›÷H’H@7VšÔ,<Ÿ@7Y’t²–@2—+ Iº@2—"P ™‡@1Ú~ùÛ"Ñ@1ÚŠÚÌå@1–ý!ÿ.I@1•@OÁ%à@1–ý!ÿ.I@1—4&£†³@1–ý!ÿ.I@1”nâ» ²?e™”XWø?<âï„?‘«* rÞ‹?wó™™+?‘2UÜç¶Á?Јæ«Vi?ˆÔ§xöß?’8~¿Ý#?ü‚„®Ö‹?’`]ŽY-?‘0œ3I?LúüÛ?_Ùwwo¸?–ö¹0,i?ƒp±>ÜÖ?„ úA¼?‡ÔÆsCÂa?†ˆHã‘@@"@$@(@0@,?ð?ð?ð?ð?ð?ð¿QBlô¿0ùîXè?CdÆÛ]Œ•?0u¤ÄÖz|@ªD‡iß1@›÷½Ž‹—?d±¡‹Õ=ì?P‡§²¤U;?Ò¬ªñ~ûÝ?¢!‰ -„Ve@Ÿiyh ÷@È@¯NW -=p¤@¯N^ùÛ"Ñ@¯NW -=p¤@¯Mßv Äð@¯NW -=p¤@¯MÖu@¯NW -=p¤@¯NHÅeU0@¯NW -=p¤@¯N—íZb@¯NW -=p¤@¯NÒ{ö$#@šÇó¶E¡Ë@šÈ1\L]„@šÇó¶E¡Ë@šÈr±+@šÇó¶E¡Ë@šÈyì -!@šÇó¶E¡Ë@šÈ”ÿ?”„ߦÑ?›ïkÓM¤µÜÆ@4 í‘hr°@4˜­«ŸU›@3V”@3\ú¬Ùè>@2fYJôðØ@2¡½¥œá@2fYJôðØ@2…ðoiDh@2fYJôðØÁ.„NÜC,¥@8J¨?ÆÇìÝ ý\?ÇD²Ú°*?´>5’cª?»i…Å -¼´@8Ù@8J¨?ǛȦBSÓ?Å€&®Õ—?¬Ã«S?¶Ê@û¤¤@8û—@8p÷?ÀÝÓ>UP?¯ÒÉUq(?£yD¼· ?¸MòÙƒNØ@8 Ø@@@@,?ð?ð?ð?ðøøøøøøøøøøøøÊ@¢.›¥ãSø@¢.žùÛ"Ñ@¢.›¥ãSø@¢.Ùb·@¢.›¥ãSø@¢.Ÿ¾vȳ@¢.›¥ãSø@¢.šxl"h@¢.›¥ãSø@¢.— -=p¤@¢.›¥ãSø@¢.™Àëíù@­[$Ý/@­[G®{@­[$Ý/@­[{šv@­[$Ý/@­[~Ov_Ù@­[$Ý/@­[~«6z@­[$Ý/@­[o4Ö¡c@­[$Ý/@­[r×sû@6 ]cˆe”@6 ~($ x@1é‡+ @1宿1ø @1A‰7KÇ@1 ÚQÎ@/Öð¸»@/Ð Ä›¥ä@/Öð¸»@/Ë…¸Qì@/Öð¸»@/̲•éá±?|öOÿÝ?äm°û0Ž?‘œÁùãJC?Uÿyu”#?“êôÉøX?’¯-! )m?|öOÿÝ?”Iõ`ÆÓ›?‘½ÀèÑmK?’„÷ò¸?˜hüÁ¯Y?”V.·H?‡z"2Úù(?Œèsq‡#?„ò—TËÄ?ƒGϵ¨í'?†å·ÑfWà?†Ü‘ °Ô@@@@@,@*?ð?ð?ð?ð?ð?ð¿WgÞÜ¿hº+¶?7¥š”:;H?O† ?£þö@¢.œ:ad@­[{€k?WTžfUI?nØa%\g¨?¹7É4ó2?âÆg^Óò@Ÿe‹(¯ŠV@Ë@¬Ì]/Ÿ¾@¬ÌXJ„@¬Ì]/Ÿ¾@¬ÌXNù@¬Ì]/Ÿ¾@¬ÌW\ðr.@¬Ì]/Ÿ¾@¬ÌWÔèiÐ@¬Ì]/Ÿ¾@¬ÌSž -˜²@¬Ì]/Ÿ¾@¬ÌTåöÂ@•ô$Ý/@•ôv¨p«è@•ô$Ý/@•ôP«³Þ@•ô$Ý/@•ô>ä0X¹@•ô$Ý/@•ô;ŠR&ç@•ô$Ý/@•ôVX­˜ã@•ô$Ý/@•ôBŸ÷µŒ@7ò䎊@7niši@2pÄ›¥ãT@2hѪÑG@2t¼j~ú@1÷Å`,ÇÛ@1TmÅÖ8†@1H±¨!ç@1TmÅÖ8†@1IÞíÀú@1TmÅÖ8†@1HÔÛL?}x—™?‘µ2uÌHA?’·3')Ö„?‚Cš æI?•©ÄSwñ–?Ÿ!m× -K€?š½CƒQl?–ö§;®l?²·bÓý?‚ï»°Wsþ?ŒÿÜÒÀrÝ?„r¨ún—Ž?ƒ€iÇ‘?ˆj³ïäLÊ?†äúußE@@(@(@(@8@:?ð?ð?ð?ð?ð?ð¿MK™@¿vY÷€?4RÏ:Køp?_Œ›¸Mè³@¬ÌVÖ¹Þ@•ô_ƒ¼ Õ?S|*Ëô¯?~àfCâ?_?³½Ÿ~èš?÷³S,Š2)@Ÿe¦í¬0@Ì@¥á)xÔýô@¥á)º^5@@¥á)xÔýô@¥á2n—P@¥á)xÔýô@¥á'l‹C–@¥á)xÔýô@¥á&Â&€@¥á)xÔýô@¥á%¸Qì@¥á)xÔýô@¥á&µ (@ªö©xÔýô@ªö§ï²-@ªö©xÔýô@ªö³Ð|„¶@ªö©xÔýô@ªö´9Xb@ªö©xÔýô@ªö±Å@ªö©xÔýô@ªö°bMÒò@ªö©xÔýô@ªö¬¥zxk@7÷â‚@·€@7úOv`@3”›¥ãSø@3•Ϫ͞„@2Wï²-@2W´¢3œ@2Œ~($ @2‘ÑN;Î@2Œ~($ @2«6z‘@2Œ~($ @2ü¹#¢?žŒÝÙ›P?“³ß )}o?‘RsÈW?”6Wé=t?“êôÉøX?”‹ÂØ*þ›?‘â%ì˜ ä?•¤-'Ä,?„¦Ô•]I?—êöªDH?“NM–8/?‘êey°úà?±A\ÿŸ#?‘pØ-Ÿt?„+£QKù?Šc^î½)Ô?%üdêË?8Ï£§@@@@@$@&?ð?ð?ð?ð?ð?ð¿E¢à_ˆ?SÃŒíÜ?;Ôå±åE2?P}îË…xî@¥á&Ð-ó&@ªö­A:Æ?Uc~™.›?p"Æ]S¶?Ôà”äB|?ÖùŸÉ@ŸmñI‰“@Í@® t9Xb@® xQë…@® t9Xb@® xüPH@® t9Xb@® rn—P@® t9Xb@® sê³g¡@® t9Xb@® }Ìcñ@@® t9Xb@® t,<žì@­]áÊÀƒ@­]ð Ä›¦@­]áÊÀƒ@­]ÑÅ€@­]áÊÀƒ@­]ÍOß;d@­]áÊÀƒ@­]µ '»@­]áÊÀƒ@­]ǯ·è@­]áÊÀƒ@­]¼„µÜÅ@8쿱[X@8?¼@3™º^5?}@3”÷eýŠÚ@3“t¼@3@N¤¨Á@2Vý!ÿ.I@2JÚ¹õY´@2Vý!ÿ.I@2IÞÑ·@2Vý!ÿ.I@2F_Ø­« ?¡ÅꯨŠT?Čۨ1A?” -Ÿ”îtI?‹©(ÓDÊ?¢Ì|(‘¾?«Á=)Jn?™™™™™™š?“oÆ †ä?’ÉÓDý?ªå9 ?¥þ–ÓOß?ªÜü˜á?¢ÀB§š7?œ]ŸFV”?ëýK|æ?ŒÅÐ7N³¬?^²®':Ì?—ÂÔèÄè@@@@@&@(?ð?ð?ð?ð?ð?ð?(褠п‡[\sÚ?[H\‰°?n˜>·@® wzpžô@­]о‘ÌÝ?vi}Ø@:?/‡'`?ÇÚÄO\ñ?ó§/‚Ï8@Ÿi´§ ¦þ@Î@£9Ä›¥ãT@£9ŸQí@£9Ä›¥ãT@£9Åo@£9Ä›¥ãT@£9È Ô•@£9Ä›¥ãT@£9ǯ·é@£9Ä›¥ãT@£9œwšk@£9Ä›¥ãT@£9ÂMÒñª@¤ó¬1'@¤ó/Ÿ¾@¤ó¬1'@¤ó"Ðå`@¤ó¬1'@¤ó}¿H€@¤ó¬1'@¤óŸ¾vÉ@¤ó¬1'@¤ó í(@¤ó¬1'@¤óˆÎp;@5£g ù l@5¢GE8ï5@2º^5?}@2l‹C•@0´“t¼j@0´µÜÆ?@0á:’£S@0à4mÅÖ9@0á:’£S@0âGE8ï5@0á:’£S@0Ýó¶E¡Ë?}Ñ¿ž,?*£|3Né?‘©ŠÕ ·Ñ?Wø0 ¥?’yÊêºq?‘Iãd©ì«6z@7 ²-V@2œIº^5?Á.„M‰ûçm@21‰7KƨÁ.„QnÙ‡@1½cˆe”°Á.„NÜC,¥@1½cˆe”°Á.„NÜC,¥@1½cˆe”°Á.„NÜC,¥?ˆÿÀ)T¿Æ@8#˜@8¾:@8 >+@8Iç@8Ù?›’qvš°•@8Î÷@8i§@8Å@8S@8û—?—­¦¾z£—@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÑ@­Uº^5?}@­U¥æ5o@­Uº^5?}@­U¾\AÇŽ@­Uº^5?}@­U¶ÐY¤Õ@­Uº^5?}@­Uº@­Uº^5?}@­Uº[|‡@­Uº^5?}@­Uµ¢Š“¨@šEH´9X@šEz@ŸföÜñ^m@Ó@¡w^5?|î@¡w^vÈ´9@¡w^5?|î@¡w^i­BÄ@¡w^5?|î@¡w^5?|î@¡w^5?|î@¡w^Åm\û@¡w^5?|î@¡w]<64@¡w^5?|î@¡w^Ov_Ù@¦ÏÄ“t¼@¦ÏÄ“t¼@¦ÏÄ“t¼@¦ÏÄ xF@¦ÏÄ“t¼@¦ÏÄoi@¦ÏÄ“t¼@¦ÏÄ›¥ãT@¦ÏÄ“t¼@¦ÏÄg8~@¦ÏÄ“t¼@¦ÏÄ“t¼@1Î쿱[X@1Îæ1ø @. -~ùÛ"Ð@. -³g ù @-–E¡ÊÀƒ@-–+jçÕg@,a-w1Å@,a-w1Å@,a-w1Å@,aohÛŒ@,a-w1Å@,a½¥œá?É^³Dw'?ï1ïºÅ?‘&Øç?‘?‹ÑqÔ@vÿ?üEÙáõ{?ºª$Ð?ÐbMçê_x?’&u÷E»@?†[‘'Í?K·‘d]?â2„&ÿh?X78›š?€b¡´ñ@?Œ¯þuõí?‚|׿pZ?‚ôhBì^?†špk Y?†©b/bJö@@@@@,@*?ð?ð?ð?ð?ð?ð¿3=9o¿+ï°ˆL?:µ7xH?¯¤R;sÐ@¡w^0)…@¦ÏÄdy?I²{ƒ‘9‚?† bON¶?èY1ù ?"UûÙÇPâ@Ÿs -ü~Ãi@Ô@¥—o²-@¥—f§ï²@¥—o²-@¥—C¹üi@¥—o²-@¥—Ž_<ý@¥—o²-@¥—–]Dy@¥—o²-@¥—‰T~j.@¥—o²-@¥—¹’Ç@–JQë…¸@–J\PeȦ@–JQë…¸@–J8”“¼=@–JQë…¸@–JG¾DÛ8@–JQë…¸@–Jgx.'@–JQë…¸@–J@·™”V@–JQë…¸@–JXÍ»-6@7zqÞi­C@7†d¼„Nž@3|í‘hr@3ÉNÉn›@2F“t¼@28£¸Š@1î_oÒ @1ß`X¦ÈŽ@1î_oÒ @1àh¹Ÿ%@1î_oÒ @1Þ´“Gí?”Òž“¸8A?£™@ EÕ?¤ K­‡ÿM?©Ó¾»Æÿ?šóÝ @õ?¥H_Ià($ x@§SKƧïž@§Q×´¢3œ@§SKƧïž@§S`uöý"@§SKƧïž@§S…‡“ݘ@©•ØbMÓ@©•áÊÀƒ@©•ØbMÓ@©•Ï4Ö¡b@©•ØbMÓ@©•âœwš@©•ØbMÓ@©•á£n.²@©•ØbMÓ@©•Ù#¢œx@©•ØbMÓ@©•Ê~ùÛ$@8–šÔ,<Ÿ@8V”@4!hr° Ä@4¾ƒä%®æ@3Õ`A‰7L@4sÉîËû@2ó&Á½¥@3ÀëíúCþ@2ó&Á½¥@2äÉ…ðoj@2ó&Á½¥@2㜾ߤ?¡EÉ@Ú?¨j¸K?ÈYœÖüoÈ?¢òߤºE?¨Š;µŸp‹?³™"ÕPx?îŠõ ?§îV1,¯·?­ ßåG?“{¡7¨Üò?š¹'¤Ò ?—Õàq¶Ù?”⦘¹Ô?¡j`cq?¹eÄk+ã?’èïÅ42ô?“6‰møŸã?“ÌUõÎs¼@@@@@$@(?ð?ð?ð?ð?ð?ð¿“°èk ¿szGü…?²Çƒ Q¶³?dL›G4a#@§RÈ€9M@©•ÜsÇÕ?вÎ3õç?€ñ“…£Í@qè°9u(K?í)lÄí0@Ÿiê¢ÿ«z@×@¡°MÒñ©ü@¡°P£× -<@¡°MÒñ©üÁ.„€@¡°MÒñ©üÁ.„€@¡°MÒñ©üÁ.„€@¡°MÒñ©üÁ.„€@¡°MÒñ©üÁ.„€@ Ú~vÈ´9@ Ú|í‘ht@ Ú~vÈ´9Á.„€@ Ú~vÈ´9Á.„€@ Ú~vÈ´9Á.„€@ Ú~vÈ´9Á.„€@ Ú~vÈ´9Á.„€@704mÅÖ8@7.ÒˆÎp;@4û Iº^Á.„M‰ûçm@4PA‰7KÇÁ.„QnÙ‡@4O „MÁ.„NÜC,¥@4O „MÁ.„NÜC,¥@4O „MÁ.„NÜC,¥?гá‡}@8#˜@8¾:@8 >+@8Iç@8Ù?…ÅBðrç@8Î÷@8i§@8Å@8S@8û—?FpÉ'Ý@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøØ@©w&ffffÁ.„€@©w&ffffÁ.„€@©w&ffffÁ.„€@©w&ffffÁ.„€@©w&ffffÁ.„€@©w&ffffÁ.„€@šÍ1&éxÕÁ.„€@šÍ1&éxÕÁ.„€@šÍ1&éxÕÁ.„€@šÍ1&éxÕÁ.„€@šÍ1&éxÕÁ.„€@šÍ1&éxÕÁ.„€@8–šÔ,<ŸÁ.„>¤µÜÆ@5¦‡+ JÁ.„M‰ûçm@4þV“uÁ.„QnÙ‡@4ž«6z‘Á.„NÜC,¥@4ž«6z‘Á.„NÜC,¥@4ž«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÙ@Ÿ™$Ý@Ÿ™$Ý@Ÿ™$Ý@Ÿ™v[Oà@Ÿ™$Ý@Ÿ™$*V@Ÿ™$Ý@Ÿ™ÅéTx@Ÿ™$Ý@Ÿ™Ý-¦‰@Ÿ™$Ý@Ÿ™+¸, -@ŸFèr° Å@ŸFèr° Å@ŸFèr° Å@ŸF攀M¼@ŸFèr° Å@ŸFå}ûÑÍ@ŸFèr° Å@ŸFå>|@ŸFèr° Å@ŸFç-ì<§@ŸFèr° Å@ŸFæk¤“È@1‘|ÚQ@1‘Çy¦µ @,æ§ï²-@,äÛK–@+ΗOß;@+Î^áôbû@+³üPH@+¬WÙÇß@+³üPH@+®`."R®@+³üPH@+¯8†T?çÞ–L I?Ô®m†¨#?‘!,1 ®þ?ŒIfÇ4)¿?‘ …¡Ç«O?Ô¿<Ž?èŽìr¡-?’øTöÕ·?€Ýörh?r©»i?þ¢w°?gã!_'?æ ýM¹<Ç?ŒÛ4ñ ]??‚vK»oº>?‚ë•ä™ Š?†£¢Ä«?†ŸF½"ªÒ@@*@(@*@9@5?ð?ð?ð?ð?ð?ð¿E…–Š?2*ø ²?9úf/5Œ´?,Å(Üxš&@Ÿ™Ä2€@ŸFæ:šÔ¶?H½$àNûÔ?:ÚîBlÃ?ýu#4Ä?o?Ó/8H@Ÿs†mø‡½@Ú@¨nzáH@¨iº^5?@¨nzáH@¨k…¸R@¨nzáH@¨l"h Õ@¨nzáH@¨kC,¦@¨nzáH@¨m:’¤@¨nzáH@¨jôðØF@ ø^¸Që…@ øa$Ý/@ ø^¸Që…@ ø[Í5¨W@ ø^¸Që…@ ø]ŠÚ¹õ@ ø^¸Që…@ ø^5?|î@ ø^¸Që…@ ø^($ x@ ø^¸Që…@ ø]cˆe•@7p4mÅÖ8@7nHè§æ@2ør° Äœ@2ù#¢œwš@2PA‰7KÇ@2R©“ àß@1Š0U2a|@1‹'»/ì@1Š0U2a|@1ŠÍžƒä&@1Š0U2a|@1Š…‡“ݘ?œä%—ëš?4ë©$è‰?‘Ú¾¯ïé?i²Pƒè?‘\Žýµ€7?‘)]•\¬?гá‡}?’Dê™.x?‘8“‡«G?‘ݤ`Ìh?‘®7Ö=^9?ú`@0k?Œó}?ï?þ,DöP?…ÑTë0Ô?ƒ¼9XNÄu?‡&üòI?‡&üòI@@@@@&@(?ð?ð?ð?ð?ð?ð?5¾§ °¿H=S™Ø?=£ÆÕÂ? Oþµ Ç@¨kU¼Ü@ ø^›Vp^?TÉ,¸ ?@¶¦5šI?¤Î -[ëêT?ÇèH°«‚@ŸmÍ[å@Û@£‡+ @£"Ðå`B@£‡+ Á.„€@£‡+ Á.„€@£‡+ Á.„€@£‡+ Á.„€@£‡+ Á.„€@”)ÊÀƒo@”)Å\å»3@”)ÊÀƒoÁ.„€@”)ÊÀƒoÁ.„€@”)ÊÀƒoÁ.„€@”)ÊÀƒoÁ.„€@”)ÊÀƒoÁ.„€@7ºqÞi­C@7×”8ê@3‡ÎÙ‡+Á.„M‰ûçm@3t¼j~úÁ.„QnÙ‡@2zÔ,<žíÁ.„NÜC,¥@2zÔ,<žíÁ.„NÜC,¥@2zÔ,<žíÁ.„NÜC,¥?|Ñb×¶@@8#˜@8¾:@8 >+@8Iç@8Ù?¥u´GS:@8Î÷@8i§@8Å@8S@8û—?Å,£N²N @8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÜ@­PNÙ‡+@­P_¾vÈ´@­PNÙ‡+@­PP Ä›§@­PNÙ‡+@­P;quŽ#@­PNÙ‡+@­PY³Ð|„@­PNÙ‡+@­P]¥œà@­PNÙ‡+Á.„€@ªN®—Oß@ªNÊÀƒ@ªN®—Oß@ªNÕÜÆ?@ªN®—Oß@ªNÜÚQ@ªN®—Oß@ªN˜bMÔ@ªN®—Oß@ªN•?|í‘@ªN®—OßÁ.„€@9Y*0U2b@9mVlô!@5ahr° Ä@5ZôðØDÐ@4ƒt¼j~ú@4‰Dg8~@3æYJôðØ@3ælô!.@3æYJôðØ@3ÖÜ]cˆf@3æYJôðØÁ.„NÜC,¥?¡ÅꯨŠT?¯‡¿\Öß?¿ôaBÔÓŒ?­XvŒM?±Ö©¾då@8Ù?ºðŽÄS?²U(˜?ÊÁä«$?•GÝóuS—?´®%ð"5@8û—?Vrÿä€?¯˜TúWÇn?´GLžl?˜<å05ä?¥È©¾ó‚ž@8 Ø@@@@@&?ð?ð?ð?ð?ðøøøøøøøøøøøøÝ@ªÔ§ï²@ªÔ Iº^5@ªÔ§ï²@ªÔ Ô•@ªÔ§ï²@ªÔ ã½@ªÔ§ï²@ªÔ íúCþ@ªÔ§ï²@ªÔ ŸU›>@ªÔ§ï²@ªÔ quŽ@«!½p£× -@«!º¬0@«!½p£× -@«!ºáG®@«!½p£× -@«!¶lô!@«!½p£× -@«!À'RTa@«!½p£× -@«!¾ì¿±[@«!½p£× -@«!»"Ðå`@7‡>«6z@7€Ä›¥ãT@2æ‡+ J@2â‚@·€4@2'KƧïž@2$Fs×Ü@1ÏO „M@1ÍVlô"@1ÏO „M@1ÍÙb¶¯@1ÏO „M@1ÎzáG®?3ßa=„?äm°û0Ž?“‡ƒ×¤?Ž,OêK˜u?”ä+ïè?”OPlðó[?гá‡}?’#maЀ?“h_N’%¾?‘.}áµ$?’êJ>áý?’9ñ9¶ò8?–-¤]î§É?ª‚eûƒ+?„ËD(ºp?†k3`E`-?‘HAõY‚§?IÏáå$@@@@@,@(?ð?ð?ð?ð?ð?ð? )å@?CšÆh?(b¶ý×i­?JZïlâ@ªÔ 3Øß@«!¼ÃƒÃ?EØÖ¢^Bû?j“ÒY;¹?‰kž„Š?ÓqÌêåWì@ŸjÖE¶É@Þ@Ÿw Iº^@Ÿw$Ý/@Ÿw Iº^@Ÿvæ³YÍ”@Ÿw Iº^@Ÿw†™ Å@Ÿw Iº^@ŸwLúP@Ÿw Iº^@ŸvòWé©!@Ÿw Iº^@Ÿw;¯è@¥žŽV“@¥žß;dY@¥žŽV“@¥ž{ÏF†@¥žŽV“@¥žf_>b@¥žŽV“@¥Ë$d³§@¥žŽV“@¥ž¨Pÿ,@¥žŽV“@¥ž©¶¼WI@5­¥œàv@5¬??¬¯X@2óS÷ÎÙ@2ú5e*NÔ@2U`A‰7L@2•*/êƒä@1Ç ù kº@1êÔ#ª:`@1Ç ù kº@1³kûÖfÇ@1Ç ù kº@1°¥¥$ëq?}@T˜ÁÎ¥?¬Æ‡‚s3â?­]>ô ª>?žƒ«6z@4Â&€I@3° Ä›¦@0°Ä›¥ãT@2×ï²-@0íúCþ\@2£ÉîËû@/^($ x@2£ÉîËû@/¬#»Ö(;@2£ÉîËû@/µÂ\(ö?æ ç«Z–?‘j`cq?¨ ƒ3 *??¯ð~aäí?¤Ôr‡³•#?±ùÐ % -?æ ç«Z–?“-N•I`(?¶*ÞºjÎ?¹÷Ø=ëEi?¢¡‰¶Üœ¶?°O­Rh™«?æ¡‚á¾A?Cx}¹x%?¨³Ð(14z?£…üWÅ?¥2§ÅÌþü?«Ý]2°ðƒ@@@@@1@?ð?ð?ð?ð?ð?ð¿—¶9†¹à?rEŸÚá€?yAXØ•?tmeŽîí@¡-òî@žÇÍÝ …¡?ƒòÔDïB?zc_í¬[5?ÈâÒˆŽm;?´éF/¥êý@ŸsçR@à@°¢\(öÁ.„€@°¢\(ö@°t xG@°¢\(ö@°Ä›¥ã@°¢\(ö@°ÎÙ‡@°¢\(ö@°ÈFÜ]@°¢\(öÁ.„€@¡H+…¸RÁ.„€@¡H+…¸R@¡H jçÕg@¡H+…¸R@¡Hå`A‰@¡H+…¸R@¡H#{J#:@¡H+…¸R@¡Gâh Ô•@¡H+…¸RÁ.„€@8£g ù lÁ.„>¤µÜÆ@5ÇÎÙ‡+@5¥zxl"h@5Àå`A‰7@5°ò{²ÿ@5!:’£S@4Ý¿HË’@5!:’£S@4È´9Xc@5!:’£SÁ.„NÜC,¥@8J¨?®££VºÓ‹?ÓK+ûHNÏ?º„Ú¡Ÿ?ÞÐ?”´ö@8Ù@8J¨?š˜‡þCî·?•Ã,X1Ø?¤G›LD3?¾_÷І@8û—@8p÷?­îŠõ ?¸Ü¸I½U,?°p)Õ?µ[}†?ö@8 Ø@@@@(?ð?ð?ð?ðøøøøøøøøøøøøá@Ÿ­VÁ.„€@Ÿ­VÁ.„€@Ÿ­VÁ.„€@Ÿ­VÁ.„€@Ÿ­VÁ.„€@Ÿ­VÁ.„€@“U-VÁ.„€@“U-VÁ.„€@“U-VÁ.„€@“U-VÁ.„€@“U-VÁ.„€@“U-VÁ.„€@7D¯O „MÁ.„>¤µÜÆ@3Œí‘hr°Á.„M‰ûçm@3Ct¼j~úÁ.„QnÙ‡@2ºÔ,<žíÁ.„NÜC,¥@2ºÔ,<žíÁ.„NÜC,¥@2ºÔ,<žíÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøâ@§³¢Ðå`B@§³•Â\(@§³¢Ðå`B@§³ŒøT2@§³¢Ðå`B@§³€÷KP@§³¢Ðå`B@§³–©@§³¢Ðå`B@§³˜Üå¶@§³¢Ðå`B@§³Ž<ä›þ@˜^÷ÎÙ‡@˜^Øv¯!@˜^÷ÎÙ‡@˜^äYR1}@˜^÷ÎÙ‡@˜^Ì-†#@˜^÷ÎÙ‡@˜_{K•|@˜^÷ÎÙ‡@˜^ð°µÄV@˜^÷ÎÙ‡@˜_ÝÐé@8G>«6z@8^ˆ6o@5E?|í‘h@5Qj§Ö˜@4¹7KƧð@4Þ3üèœ1@4=cˆe”°@4P›‡aºŠ@4=cˆe”°@4RÑfçá@4=cˆe”°@4[çÜûû¼?¤·V¶ Á?š•¹Š(¸a? ÍËÛÄõ?›äG>,)ç?§Ë÷úÜÇä?¢É æç·?ƒ6ð]g™ä?˜¨ŽóxSV?¡pCäëmï?›W²·w„?¡šä¿ë?®OaÕùü'?Á·ZÌYØ? )N!?¬ -¶±µÆÖ?ª|X¸.‚é?ž°ÿhk?šis^zaò@@&@*@$@8@9?ð?ð?ð?ð?ð?ð¿U’¥p?ˆž?ML?Fí'=á*?„ïœ:†b{@§³“Ð Yè@˜_rtÔ?e -óà¸?¢YîQ^Y?¶“ Ûù8”@4@‡bßT@Ÿd -P>Õ5@ã@¥+›¥ãTÁ.„€@¥+›¥ãT@¥/„M ¶®@¥+›¥ãT@¥/d©/9™@¥+›¥ãT@¥/‚w•â§@¥+›¥ãT@¥/o_p6Ä@¥+›¥ãT@¥/Rs*@”¦2-VÁ.„€@”¦2-V@”¬Œ¨îàÊ@”¦2-V@”¬·õ=>,@”¦2-V@”¬pÅ/¸Ÿ@”¦2-V@”¬pð Ø@”¦2-V@”¬²ÃŒ>Â@9N쿱[WÁ.„>¤µÜÆ@3û Iº^@1ݸ¢Z@3¢-V@1D=óp?@2–ý!ÿ.I@0Áškuß@2–ý!ÿ.I@0¿” W„@2–ý!ÿ.I@0°Ë¼U÷@8J¨?“)ÂkÙE5?›7ö.ÈC?¢—¢©¯?°vWW›£?¬eÍ+–ø@8J¨?šSáçþlÿ?³uCcCîO?¤@ú;+?°c¼Á‡Q?¥“"Ó8Ÿ@8p÷?t¢dÿÖ?ž'Ö+”Må?¦¶ùà÷v?™ÿ š'S³?¦[‚LÁ @$@*@&@:@1?ð?ð?ð?ð?ðøøøøøøøøøøøøä@ª-Ñhr°!@ª-Ê;~NŽ@ª-Ñhr°!@ª-%`A‰6@ª-Ñhr°!@ª,¤Ý/ @ª-Ñhr°!@ª,q©ûçm@ª-Ñhr°!@ª,¶‡+ @ª-Ñhr°!@ª-1Ä2ÊW@œã¦éxÔþ@œã»dZ¬@œã¦éxÔþ@œäè§æ›@œã¦éxÔþ@œåN¤¨Á@œã¦éxÔþ@œåáG®|@œã¦éxÔþ@œäÚîc‹@œã¦éxÔþ@œã€@7}:’£@7o”ØK¬=@4^Ù‡+@4 Ä›¥ã@3éÛ"Ðå`@3†§ï²-@3^«6z‘@3£× -=q@3^«6z‘@2ùŒ~($ @3^«6z‘@2àªdÂø8?|¬Æ Væ?´b0BiÅ‹?«/b²›?¡‹÷;Ïœ(?ÓÖ ‡ -ŽQ?Ìéí'iÙ?€‘gQÚÃ?³ŒW¦"°?²N…i?¨[3.ù?ÉWl4t ;?Ôë· ={2?ƒöä.)¨w?àìÚJ>?º6¤¨weN?“ûæÛØs?£‘6èYkC?Ê©D·P2@@@@@*@*?ð?ð?ð?ð?ð?ð¿¿¿åÀ?¶ï¥=ð?“ÿËðñ?—Â÷ÿ·Ú6@ª-ƒdo.´@œä$$è?œiùÁã¡?Ÿ­C¼é@2m¯ó>2±@-OÄc!â@ŸZxÝ;ßH@å@«|Rn—P@«|7KƧñ@«|Rn—P@«|TêJ@«|Rn—P@«|TÖ¡aå@«|Rn—P@«|S àÞÓ@«|Rn—P@«|QÅ@«|Rn—P@«|QuŽ!–@©<n—@©6@®ƒÐå`A‰@®ƒÑD=¶@®ƒÐå`A‰@®ƒÐÔ@®ƒÐå`A‰@®ƒÐ¥*Z¿@®ƒÐå`A‰@®ƒÐïÅ2@7Ç>«6z@7Æâú!Ÿ@1T›¥ãSø@1T¿±[W>@0t“t¼j@0tò›öŒ6@/QÑN;Í6@/RrÕ"õè@/QÑN;Í6@/Q~ô¥ô@/QÑN;Í6@/Qã!¢ç÷?( ˜?Úeqa†?‘Ûƒ{ÜÂ?‹²ô´úMŒ?ê4sFž ?ÌKšK$Þ?•w«ogŸl?’Îÿ@Í{?ƒ&Dd?2âÿ…6H?Íäwh??iåDbƒy?Œ‚°—‡Â[?ŒÃõßî;?‚s*ùÕ¦?ƒA&¡?†°"ŠõíŽ?†“‚I—²@@"@@(@1@1?ð?ð?ð?ð?ð?ð¿4Ô¸pˆ¿.Ó\ÿà?/‘ß1cû?/l·{áqö@ »4™x?IÑÓfx*³?—’¾û?çí?‘IØÅue@Ÿmò»ò!@è@¬ØÆ$Ý/@¬ØÐå`A‰@¬ØÆ$Ý/@¬ØÂ\(ö@¬ØÆ$Ý/@¬ØÉº^5@@¬ØÆ$Ý/@¬ØÈr° Å@¬ØÆ$Ý/@¬ØÏß;dZ@¬ØÆ$Ý/@¬Ø¹XbN@¯%ÿ|í‘h@¯& xÔýó@¯%ÿ|í‘h@¯&´9X@¯%ÿ|í‘h@¯& V@¯%ÿ|í‘h@¯%û¥ãSù@¯%ÿ|í‘h@¯%þ5?|î@¯%ÿ|í‘h@¯%ö‡+ @8–»˜È@8†È´9X@4#÷ÎÙ‡@4%`A‰7L@3€å`A‰7@3ƒþ\‘ÑN@2î_oÒ @2ñ4êJŒ@2î_oÒ @2ñ@N¤©@2î_oÒ @2òœwškQ?3ßa=„?’ÕOäª9ô?—go]Þ?i²Pƒè?‘#6‰¥_?ïˆ6ÏJ?­g;+³ût?’?Á• ñ:?‘½ÀèÑmK?ð{¥âdû?•¯ÃþƒR?—Q,Äš¤?‘c‚ׯ?Å{¿Ž<º?‡š¿]b?‚æÊ¬vã?‘¬xÆ×S?†¯Mž684@@@@@@?ð?ð?ð?ð?ð?ð¿l)°%¿cë¡ï§?d²®¸×a>?Zþ ‘$@¬ØÇžëb@¯%üÆ-æ?ƒ\{ò’Ü?nÒ:x·Ä @ëeQN?ÌÅÆôè@Ÿoq¸r@é@ª$Ý/@ªƒ\ªß?@ª$Ý/@ª’×s@ª$Ý/@ªt‡ü¹#@ª$Ý/@ª‹Æ§ïž@ª$Ý/Á.„€@ª$Ý/Á.„€@•BÙ‡+@•BÚ³ÊQ|@•BÙ‡+@•BÝcˆe”@•BÙ‡+@•Bï²-@•BÙ‡+@•BÑœàu÷@•BÙ‡+Á.„€@•BÙ‡+Á.„€@8 Î_oÒ@8 kãƒ@5’ Iº^5@5¡ÑN;Í6@4®ùÛ"Ðå@4´g8}¿@4–ý!ÿ.I@4¢ÊW§†Â@4–ý!ÿ.IÁ.„NÜC,¥@4–ý!ÿ.IÁ.„NÜC,¥?‰çõ×eµM?­¦¾iî7?™%LÑ”Ô?¬¸O#¶A@8Iç@8Ù?“ý)©>}?¤ÖãUá«?­Jæ;”.ñ?¦°!§ÆV@8S@8û—?-Iÿz?¥™þñt‹ ?¡7‡V/Žr?¦·}­2;¹@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøê@¦`Ÿ¾vÉ@¦`^5?}@¦`Ÿ¾vÉ@¦`šu@¦`Ÿ¾vÉ@¦`¾ß¤@¦`Ÿ¾vÉ@¦`¾ß£@¦`Ÿ¾vÉ@¦`³Ð|„@¦`Ÿ¾vÉ@¦`W>«6@¬õE¸Qì@¬õE¸Qí@¬õE¸Qì@¬õG“Ý—ö@¬õE¸Qì@¬õF$Ý/@¬õE¸Qì@¬õFYJôñ@¬õE¸Qì@¬õF$Ý/@¬õE¸Qì@¬õGl‹C–@2²ÃÉîËû@2±ò×s@1E?|í‘h@1DŽŠqÞj@0¢-V@0 ëíúCþ@/Ǔݗö,@/Åoi@/Ǔݗö,@/Ä xFÝ@/Ǔݗö,@/Å8ï4Ö¢?É^³Dw'?ÿ﯒?‘,fŸCô6?Œ'õ‚$5ñ?‘ƒZ)Àˆ?‘‚ÊŸû©?Ðbn—l‹…?’`5žña?‘N÷J’?Hª¦ºón?‘&”T¦mÂ?低NëV?„ ©¢¤þ?lío>÷?…cü›Š×Õ?„ªÎZ´?‰]³ß’Ý?‰6‰õË@@@@@*@*?ð?ð?ð?ð?ð?ð¿=×ÃL?<•°?DOÆ­·û?2$H~ v?@¦`,½zÖ@¬õF—ïŸ?SžôÒý\?A'©Ï4í¬?¢ò©ÿö?xëäx=lF@Ÿr÷û›f@ë@ gï²-@ nÙ‡+@ gï²-@ '_´­@ gï²-@ Ö—È0B@ gï²-@ iÐÞ Æ@ gï²-@ d71†@ gï²-@ i£[·%@¢ê0£× -=@¢ê4Ás%@¢ê0£× -=@¢ê=ðÓ@¢ê0£× -=@¢ê¥-/n@¢ê0£× -=@¢éø¶C*{@¢ê0£× -=@¢é¹Å††@¢ê0£× -=@¢éÆ?ׂc@8-¥œàv@89õY³Ð}@4Ìí‘hr°@4žE3O«p@497KƧð@3ó4+Ö’‚@3zÔ,<ží@3[ÃþQKN@3zÔ,<ží@3=›ä¤Ç@3zÔ,<ží@3I¸Ã‹õ2?’ÌRû ã?˜àYëÀ?ŸÛùJƒVX?˜Ÿ!?¬L³;G£?°Îè…”Œ?”þÐGžP?™õF¨üù?žé\]Ž®?šVˆk™‰G?¶ì“W¶·-?³H—樑¼?˜ -Àaóä?œ¡·¨KЧ?­ñ'*E?•¥b(Ù‚?¡×§{ç? SÛDâ2@@"@(@(@9@5?ð?ð?ð?ð?ð?ð¿]¼ÇÆ¿˜@Ð'(?A*–7ý°?d;y[ü„;@ kDÄtô@¢êÈŒûò?\·]x5?€™·Üu¸?¥QpR­Í?ÞµOéL®@ŸdâÓœp@ì@«‰;çl‹D@«‰5?|í‘@«‰;çl‹D@«‰Hj(ün@«‰;çl‹D@«‰?_Œ¿=@«‰;çl‹D@«‰K. Q@«‰;çl‹D@«‰<Ë<й@«‰;çl‹D@«‰?’ ɶ_£ ?}@T˜ÁÎ¥?’TÀ§!,ô?’ºMºw @7ÞHè§æ@7Û)å详@4À Ä›¥ã@4½JÙ‘ƒ@3ñ‰7Kƨ@3ïD=²:@3Þi­BÄ@3<'`@3Þi­BÄ@3ø§D|æ@3Þi­BÄ@3A;xvº?•'Z]Ô&?•Ü8Ï w·?’ -.Ý` Ì?’]ªýxõá?’Ù‘›ùlq?“ÅÓ/€ZÊ?‚Á¤õ“²&?š?ÇP¼Y?‘—Á=µRÀ?’Méå¿ái?‘±¨\/ÒÙ?”'ûˆ5êb?œwX '¯Ö?˜R+r7ùÈ?—™uª²êk?Œe;Ƶ?…§á¡1?¼­T(U@@&@&@,@:@:?ð?ð?ð?ð?ð?ð¿W×s8¿TSÕ2ì?S\½1L.å?>-tCX@¬ÙQê´ùÎ@˜“¦¶éQ?pÆê/¡$l?`↵R?×f•VŽ?Á2Öì6"@Ÿk}÷¦5t@ï@©§ï²-@©¦§ï²@©§ï²-@©¢\(÷@©§ï²-@©¨>BZî@©§ï²-@©¥`A‰7@©§ï²-@©¥¡ÊÀ‚@©§ï²-@©¤ŽŠqß@ž4ËÆ§ïž@ž4ÌIº^5@ž4ËÆ§ïž@ž4Þi­BÃ@ž4ËÆ§ïž@ž4ߤ?åÉ@ž4ËÆ§ïž@ž4Þƒä%¯@ž4ËÆ§ïž@ž4Ò£S'@ž4ËÆ§ïž@ž4Ñ·Xã@6^Hè§æ@6`Ë)^ž@1Ê^5?|í@1ļ£@1iÛ"Ðå`@1a ²•éâ@0hè§æ›@0cS&Â@0hè§æ›@0hÇâ‚@¸@0hè§æ›@0hK]Ìcñ?„F/·ÿP5?‘¸ü"ù€2?–QaéQR?’(æ„+Zk?‘¾%î -ã?‘ ê$4Ÿ?žˆ2}?•wi¢‚*?“èËôy?’.p»Cþ?‘–=û.e1?äqÅYÈ?— —‰Ò‡?“ü”òÖÂ?•o•ó}ó?Ž;­B·?‡gϵ’õ?Š|)-}í(@@@@@*@"?ð?ð?ð?ð?ð?ð¿8‘uKÀ?LFÌj´?ËD´ ?Lc þw@©¥¿Zib@ž4ѳ€d?6˜ß]ÇËÁ?mÜÔ £æ?s,çŠÁXf?âÓ5#@Ÿh¶{݆Ë@ð@¥–@1õµsê³hÁ.„NÜC,¥@1õµsê³h@1¯.Hè§?1·†Æjñ?±‡º`¸ú ?³ÿE Ü+?£à•ÒnÁ@8Iç?¾=Ä =ÐF?´M ó¬^õ?°M\³Ù“@?Â0ÒW) [?¬já{X@8S?·% mèc?Ö=¶Ñ!?¸Â ƒÌà?™Jz¬Uf?'ã{>ô‘@8 Ø?ÄLióA›@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøøò@«¨üj~ùÛ@«©¸Qí@«¨üj~ùÛ@«¨ýcˆe•@«¨üj~ùÛ@«¨þš@«¨üj~ùÛ@«¨ü¾ß¤@«¨üj~ùÛ@«¨úQZå@«¨üj~ùÛ@«¨û"ÒL@œšyÛ"Ðå@œšp¢ŠÑb@œšyÛ"Ðå@œšxl"h -@œšyÛ"Ðå@œšw€4mÇ@œšyÛ"Ðå@œšy#¢œy@œšyÛ"Ðå@œšwé©'@œšyÛ"Ðå@œšv®‚ÐH@7eöý!ÿ.@7gãׯ··@0ÞÙ‡+@0ß;dZ¬@0•`A‰7L@0•`A‰7L@0TmÅÖ8†@0T¼j~ùÜ@0TmÅÖ8†@0Um]aÄ@0TmÅÖ8†@0U`B&à?~ì“?ÕÒJ?4ë©$è‰?‘,fŸCô6?ŒR‹w#z?‘22ªÓ$?ý‰G¿~´?|¬Æ Væ?’uß¿çÒ?œõLÁE?|Ø}Õ…?‘=úAq|?Éõç6ß?…ò¤ãŠ?Œ¾»•lŽ?„›‹ÖO?ƒE 8?†Üù¡™´?‡gÏ*¿6ð@@@@@.@,?ð?ð?ð?ð?ð?ð¿cò_ì?JïÌSÄ??ðÎŒgÜ%?3g(@l€±@«¨ÿl¾Éµ@œšt˜%VP?_»?°”¯w?SÖ®W™Gð?ÉÄük†r«?³Ì£ ‘7@Ÿg¬Rlj@ó@ ¢m‘hr°@ ¢pmÞ‚Y@ ¢m‘hr°@ ¢qïg@ ¢m‘hr°@ ¢p–8fù@ ¢m‘hr°@ ¢q*ðõ@ ¢m‘hr°@ ¢wâ6B@ ¢m‘hr°@ ¢xõÑ\©@£3¾vÈ´9@£3¹n¼dÔ@£3¾vÈ´9@£3¹Lo¦@£3¾vÈ´9@£3¹Àëíù@£3¾vÈ´9@£3»+éoŒ@£3¾vÈ´9@£3»¢k@£3¾vÈ´9@£3ºø4J@7cg ù l@7iR§ëÊ@2žÙ‡+@2™~Ý®@1îùÛ"Ðæ@1î92„Ð@1kxFÜ^@1gLsáð@1kxFÜ^@1dWXnQ@1kxFÜ^@1d_©‰p™?|ò0p‰J?còÈúª?‘%`Bë`?Œ‘ä¥@h?“½1Çâ©Ò?•›×±ƒ4?ƒ…†r÷šâ?’Ôœ-4´•?ŸÕË\0.?‘*4Ýf¡?”vQ¾8¬?”0C¤³¡?‹´©šù'i?ÙHñâŒä?ƒ6Ýž}%?‰:r.¶;?š0Áòëe?N ˆÒå@@*@"@,@7@6?ð?ð?ð?ð?ð?ð?W³²j?<;3 -Ð?CkÈ u?!kGÏœ!\@ ¢sC°˜@£3ºuÐ>x?c&å8`+?A3-—k\ú?Ï^ž›Àb„?„P=í$@ŸfܲáZw@ô@ž¹›¥ãSø@ž¹š¬1@ž¹›¥ãSø@ž¹žYòºž@ž¹›¥ãSø@ž¹œ[¿§ @ž¹›¥ãSø@ž¹™ŽC˜W@ž¹›¥ãSø@ž¹˜ž¼Ë/@ž¹›¥ãSø@ž¹™Zw½ø@¥i"Ðå`B@¥i#× -=r@¥i"Ðå`B@¥i&›ÆÍ@¥i"Ðå`B@¥i/¾$åÁ@¥i"Ðå`B@¥i& ˆÇ -@¥i"Ðå`B@¥i%?*Å@¥i"Ðå`B@¥i#ú¬®@5`ØDЩ@5a–R½<6@0Ìí‘hr°@0Ëþ$ñ5¸@0’Ðå`A‰@0‘qÒÉB@/¸7´¢3œ@/´ “ïV¸@/¸7´¢3œ@/¶”†ê~ù@/¸7´¢3œ@/¶uÞ÷;?ŽÕQp Î?Øðù÷?‘SžÕºk²?‹ÂÂisåi?‘RyUq?‘>Õ/dŸò?~ì“?ÕÒJ?’´†LÓN?‘b̼Ýh?4ÁéVr?‘1Á‘{f«?jÛ»BF&?‚À%?56ëÀ#?„â¿Ë$?‰tª+<Ñ?‡²>®$ìŒ?‡p°Ý(Ö @@ @"@@5@4?ð?ð?ð?ð?ð?ð¿[J?/Õ"À?Tµg°G"?4žÁ =@ž¹™‘§²@¥i$™¦öø?(òžÓ­@?UP²ÅÕ J?Z¥ç&¿?µ³ÛÄ R@ŸgÙT¬Ï@õ@®Œ8Ôýó¶@®Œ+pôí@®Œ8Ôýó¶@®‹ç ù l@®Œ8Ôýó¶@®‹¢MÒñ«@®Œ8Ôýó¶@®‹ñÄ2ÊY@®Œ8Ôýó¶@®ŒÒˆÎp@®Œ8Ôýó¶@®Œ!‰7KÇ@œ³ˆ1&éy@œ³Öеâr@œ³ˆ1&éy@œ³!ÊÀƒ@œ³ˆ1&éy@œ²õ%F -¦@œ³ˆ1&éy@œ²á|ÚQ@œ³ˆ1&éy@œ³aG®{@œ³ˆ1&éy@œ³N¤¨ÁV@9-¥œàv@90–:Š’"@3Å?|í‘h@3œ£n.±@3F“t¼@3a|ÚQ@2³&Á½¥@2~ƒä%®æ@2³&Á½¥@2¡hr° Å@2³&Á½¥@2›W>«6z?›ÀM:±?ÅS²«ZŠ?Ò~³4âF…?ÀÁD ±·?£ ^&Â.?§Aù:Âü?|ôŒ<~%>?Â!“ZŠÑ?ÃOn{-Æ?¶;Á`ªÎ•?¡ºøò¤âÍ?«¾-ùOü?‚¡ïSÔÉ?£ÓM'-ç? ß2Wô?­5ªW®áù?Ž .0åv?•*†*Zû@@@@@*@*?ð?ð?ð?ð?ð?ð¿gž‰¿rÆI ?_”Ï’´Ÿà?sþ–M‚ó@®Œ'³NŸO@œ³®œ;?w‰"i”?Š_Ê|ƒÀ?ãó|/ @ ÈÌÛl@Ÿ_ÆÚ˜È@ö@ ¨r° ÅÁ.„€@ ¨r° ÅÁ.„€@ ¨r° ÅÁ.„€@ ¨r° ÅÁ.„€@ ¨r° ÅÁ.„€@ ¨r° ÅÁ.„€@ £/²-Á.„€@ £/²-Á.„€@ £/²-Á.„€@ £/²-Á.„€@ £/²-Á.„€@ £/²-Á.„€@8·â‚@·€Á.„>¤µÜÆ@3ý‘hr° Á.„M‰ûçm@3×ï²-Á.„QnÙ‡@3Eœàu÷Á.„NÜC,¥@3Eœàu÷Á.„NÜC,¥@3Eœàu÷Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø÷@¤ñ™™™š@¤ññ©ûç@¤ñ™™™š@¤ððB‹•@¤ñ™™™š@¤ñ&¯eá@¤ñ™™™š@¤ñÒ˜@@¤ñ™™™š@¤ñ Ñ¡å-@¤ñ™™™š@¤ñ=fí@™™\(õÃ@™™<,¢tÑ@™™\(õÃ@™™73E…@™™\(õÃ@™™5Ò„@™™\(õÃ@™™©“Üû@™™\(õÃ@™™ýœ]Á@™™\(õÃ@™™{hÆ@8VšÔ,<Ÿ@8?˜Œ¿°@2.5?|í‘@1é<"LR@1b-V@14‚‚q7@0YŒ~($ @0=èOMÑÝ@0YŒ~($ @0BxXd>@0YŒ~($ @0CüÁ ?”Òž“¸8A?“›2±Ì_?¬³ü“B?¡c'ï`Åò? BDr²“?œ Øvk‚c?£²Âýž?X× ç^‘?©uíž+«?¢p‹ÐÇÇ?¤7kM‘=;? lõ1èe?õ–Ž ï¨?Q…²<(?•]í× ´?ŠòýÛÒIÏ?(Â!My?’n›î\V@@ @*@*@9@8?ð?ð?ð?ð?ð?ð¿I¨àƨ¿pãÛáÀ?D~E.NTw?J»-<–£Æ@¤ñéÛª÷@™™!÷Ž—¯f?‹¦ ŸYÔ?çR`^?²œ>ÉÐ?ÐbMÝn½?’Ï>`Ï?ŠA)Nîá?-õI¸`K?Ía´ï?Jö²U4?€bMÕ]f?Œ¬2aå?‚oÁÆÜ§÷?‚â‡~ûÉ\?†‡[ÐJ³“?†‡¥âè@@@@@0@.?ð?ð?ð?ð?ð?ð¿S¹X÷?$mœ÷ô?0x”j|ä?,~{†ÆÊÏ@¢ãaW®³è@œÁŠ?ÇéÀ??¬ÅÇE&Ä?:öß§`P÷?x·MP•h?oüÿ¦[@Ÿs“ d @ù@¢Ö©xÔýô@¢Ö©ûçl‹@¢Ö©xÔýô@¢ÖªÍžƒä@¢Ö©xÔýô@¢Öª™0¾ @¢Ö©xÔýô@¢Ö« Iº@¢Ö©xÔýô@¢Ö¨>BZí@¢Ö©xÔýô@¢Ö¨ÁTɇ@§iJ=p£×@§iJ~ùÛ#@§iJ=p£×@§iJdÂø9@§iJ=p£×@§iJ=p£×@§iJ=p£×@§iK)^ž@§iJ=p£×@§iJÚ¹õZ@§iJ=p£×@§iJ³g ù@2Ç>«6z@2Ç>«6z@.a‰7Kƨ@.a‰7Kƨ@-º¬1'@-ºCþ\‘Ò@,ܾߤ@@,Ü£n.²@,ܾߤ@@,ÛÍ5¨Xz@,ܾߤ@@,Ûçl‹C–?É^žQ5P‚?Úþþ³?‘&Øç?‘?‹¯eU5?‘õbÐ\?Êëüâi{?ÐbV‡,?’ ,øÕC©?ŠA)Nîá?3.Ylî?äú’B[@¬£Y‡+@¬£Zxl"h@¬£Y‡+@¬£W§†Â&@¬£Y‡+@¬£Wéùq@¤\(õÂ@¤\*Aûk@¤\(õÂ@¤[šu@¤\(õÂ@¤[ô‡ü¹@¤\(õÂ@¤["Ðå`@¤\(õÂ@¤[W>«5@¤\(õÂ@¤\¾ß¤@/j¦L/ƒ|@/j¦L…g„@).V“t@).V“t@(&éxÔþ@(&éxÔþ@'Š#9Àëî@'ŠOv`@'Š#9Àëî@'‰ûçl‹D@'Š#9Àëî@'Š ÞÒ?É^¨¯Âj?ÉGãA­÷?‘½ümüñ?‹½XQê>æ?îú/´`?³×OÓ+y?ÐbMçµ7§?’¼  g¶?¹º–Èj?3.Ylî?ÔÒ@úˆ‘?J&d„?k?€bMÕ]f?Œ¬Çëý ?‚oÁÆÜ§÷?‚â‡~ûÉ\?†ˆ#.÷?†‡hÉÈÓ@@@@@,@*?ð?ð?ð?ð?ð?ð¿Sz†A¼?(¯û X?=Æ]QqX¤?ñ$ø¬Í˜@¬£XßZD@¤[y±?L£‚Ñh?=;Åj¶?” áý=‡ê?4Ó°³:@Ÿs ßùë…@û@£7'l‹C–Á.„€@£7'l‹C–@£7#S÷ÎÙ@£7'l‹C–@£7'H Zw@£7'l‹C–@£7Aé°@£7'l‹C–@£7*\ù¢@£7'l‹C–@£7$ -0§ @–¾­VÁ.„€@–¾­V@–¾¯WÀ@–¾­V@–¾¥bs¶¿@–¾­V@–¾ÉÞ]»ê@–¾­V@–¾«b¶L@–¾­V@–¾£VÄK@7-¥œàvÁ.„>¤µÜÆ@2À Ä›¥ã@2Ë€ÁV @1ô“t¼j@1úÃG&à@1ò䎊r@1‡úawéª@1ò䎊r@1}éŽWð@1ò䎊r@1ò5b@8J¨?™<õyŸÓû?”4=ø?’½°a&?‘ï~ºÝµ&?”ü¹ ¨õ@8J¨?˜ª7”&j…?—?ª«£Ãu?”^¢Ò˜5¹?’Ò`Ìùx\?‘µ§’Cƒ@8p÷?” .וå?‘?=“ðw{?š( Èß„?‘;Ö&-¹¥?˜¹E{‚ƒ@&@(@$@8@8?ð?ð?ð?ð?ðøøøøøøøøøøøøü@¥¼k Iº@¥¼g®zá@¥¼k Iº@¥¼k…¸R@¥¼k Iº@¥¼l/ƒ{J@¥¼k Iº@¥¼k’:)Ç@¥¼k Iº@¥¼j³g ù@¥¼k Iº@¥¼jqÞi­@¬<’ñ©ûç@¬<‘ë…¸@¬<’ñ©ûç@¬<”FsØ@¬<’ñ©ûç@¬<’ñ©ûç@¬<’ñ©ûç@¬<“g ù @¬<’ñ©ûç@¬<“ê³g¡@¬<’ñ©ûç@¬<“3333@6Ñ|ÚQ@6Í‘hr°"@0×+ Iº@0×Á½¥œ@0H“t¼j@0HüPHð@.Bu%F -§@.BZîc‹@.Bu%F -§@.C9Àëíû@.Bu%F -§@.CŠ Þ?–ªÎ­¡?Qdöÿô¼?‘jh¨qã9?ŒÖ -Äȱ?ùª¨?ÃwZL?3ßa=„?’Q_Ú¸FN?»Þ‹"è?Níú¾?õ<úU?Z˜°,aÝ?‘7#Œ!xv?ŒÆò/¢äÍ?‚¯­Ù¤Á¶?ƒ ?ÿ½?†Ë¢L1Ù?†¯Mž684@@@@@,@(?ð?ð?ð?ð?ð?ð?<€¥?4ó½Oˆ?>WDvÇg?%HŠŒ9øI@¥¼jlP¾,@¬<“"'‡Q?W‰ØË -mA?C”2^íû„?® rÌVoL?†¥ÈN†îÐ@ŸmM=µ˜@ý@¯èŠ=p£×@¯èOß;d@¯èŠ=p£×@¯è‰^ž @¯èŠ=p£×@¯èŠqÞi®@¯èŠ=p£×@¯èŠdÂø8@¯èŠ=p£×@¯è‰­BÃÊ@¯èŠ=p£×@¯è‰ã½@©. -Àƒo@©. …¸R@©. -Àƒo@©.§ï±@©. -Àƒo@©. 7Kƨ@©. -Àƒo@©. -™0¾@©. -Àƒo@©. -0U2a@©. -Àƒo@©.ÕfÏA@4–šÔ,<Ÿ@4’©“ àß@2—+ Iº@2˜âe+Ô@2å`A‰7@2ù k¹Œ@10–»˜Çã@11ÿ.Hè§@10–»˜Çã@10IQ‚ª@10–»˜Çã@1/HË’:?Œs¤DÅÐ?ôÊ_?’ >(lQ ?Œ^:Òf?‘ÇöÃÞ`?‘‚ÊŸû©?1·†Æjñ?’0nà=Q“?’TÖ©E?‘ǧ?D6?‘ýuãá$6?’j“O’I?¡]mZRØ?ŒÖ -ÄȲ?†¼Š˜L¥ø?…ÇóÏ€9"?‡Ä­‹›Ü?‡”_Õ­çW@@@@@,@*?ð?ð?ð?ð?ð?ð¿L›Ë/8¿B| 6l?”Œ–cKs?&Ú}viú@¯èŠæÔR@©. -)Âyð?:2*¾ýM2?IdÅpzt?v­8ïp?—|ÛÂÌ~V@ŸiÆë9Õ+@þ@¦t}p£× -@¦t}p£× -@¦t}p£× -@¦t}ôäÏÝ@¦t}p£× -@¦t~$ŠÆê@¦t}p£× -@¦t~ŒêsÍ@¦t}p£× -@¦t|ªøO@¦t}p£× -@¦t|jcxí@œ<$Ý/@œ<$Ý/@œ<$Ý/@œ<$®æë@œ<$Ý/@œ<ýŠÚº@œ<$Ý/@œ<‹qÿ@œ<$Ý/@œ<J^|@œ<$Ý/@œ<Eµ‡§@.}Vlô @.}Vlô @+ÂÐå`A‰@+»쪸¥@,4ýó¶E¢@,5p -@*³üPH@*³@N¤¨Â@*³üPH@*³Øm$…@*³üPH@*³KÿUõí?É^ž6õP?¾¡¹†ÂÏ?‘YK÷¬6?‹¨ÀœÓI?çZùêj¦?±æZaí?ÐbMÝn½?’Îð•§Œ?~¬@<Ê?/VbªÈ?͈jg¥?Jö²U4?€bMÔŠ»?Œ¬¡“Ò_-?‚rQœÇÕ?‚åáøC¯Ü?†‰Î¢ã‡?†‡f]² @@"@$@@1@0?ð?ð?ð?ð?ð?ð¿OEi/²?%WÈ?/å¼#õ~Â?0$”û5i@¦t}Y”æ¬@œ<þ?>­™–õ?ƒ@¥/{?w. _ ?3'žn}¼Û@ŸsôˆÒ@ÿ@¡? Ä›¥ã@¡?!$Ý/@¡? Ä›¥ã@¡?"©“ á@¡? Ä›¥ã@¡?"ÞÑ·@¡? Ä›¥ã@¡?!aä÷f@¡? Ä›¥ã@¡?¿HË@¡? Ä›¥ã@¡?!½¥@¨;{dZ¬@¨;{dZ¬@¨;{dZ¬@¨;~ž›@¨;{dZ¬@¨;€uöý"@¨;{dZ¬@¨;yXbN@¨;{dZ¬@¨;~ÿ—%@¨;{dZ¬@¨;zÇË)@4T xFÜ@4T`ªdÂø@2+ Iº@2 ù kº@1iÛ"Ðå`@1k6z–@1«6z‘@1U›=È@1«6z‘@1óMj@1«6z‘@1·éùs?|öOÿÝ?“Ãruöò²?‘£Ä›è?Uóú*˜?‘héø†|?‘C!ƒžÈ?|¬Çëý ?“$i «%h?’¤šÜI«?°‹Œ÷€?‘77…Âç?ÐnçK/?‚|׿pY?3XMÊV?”³Ž+k?…{BÕ0Þ?‡&üòI?ˆ -¿„r©Ý@@@@@"@"?ð?ð?ð?ð?ð?ð¿$— ð?Ç`@?9ÍrenœO??+r°¿Þ@¡? ®ÂÐØ@¨;{‚9þl?Y¬OÌ´(I?_„ UÌn®?Á4‹×ZW?ÉC‹bQi@ŸfÅ0á?@@ []/Ÿ¾@ [\¬1'@ []/Ÿ¾@ [O½i*O@ []/Ÿ¾@ [A- Œ@ []/Ÿ¾@ [Hg1#@ []/Ÿ¾@ [AlÁ"[@ []/Ÿ¾@ [@¾Øæ@¦¤½ó¶E¢@¦¤½ô\b@¦¤½ó¶E¢@¦¤½qüz@¦¤½ó¶E¢@¦¤Á»øB@¦¤½ó¶E¢@¦¤µר‘@¦¤½ó¶E¢@¦¤·óvM\@¦¤½ó¶E¢@¦¤·ü±¾@4T xFÜ@4S½vïºÀ@1Œí‘hr°@1…CÑa@1Z~ùÛ"Ñ@1S}!@0Š0U2a|@0ƒœ¢Ç¤Ô@0Š0U2a|@0ys P|@0Š0U2a|@0}d}â ?}@T˜ÁÎ¥?ðš›?‘nǾfü?7»¦X®t?”¦«²&vo?’è…ˆV'Í?|¬Æ Væ?’æÿ‚Ê?µj :O?˜!¼‡ñô?“÷À°B©y?’G县âú?‚«Kµ¶??`Û<·?†L7{™ -?„EëŸå{?‰¤A—ö5?ˆêfµFx@@ @@(@;@6?ð?ð?ð?ð?ð?ð¿z;Ë‚¿[üºíÚ?H–áÅEÌ?D¶›ÉÑ@ [O>/ì@¦¤ºÉÝæ?gàXúk?dŠca©‚?Úÿ¤)š¹ó?ÓÂÙ¤ša@Ÿfßd¨@@­–Ãn—@­–Ì‹C•@­–Ãn—@­–³ê³g¡@­–Ãn—@­–©*0U2@­–Ãn—@­–¢u%F @­–Ãn—@­–¹Û"Ðå@­–Ãn—@­–ÂZîc @¨G¼í‘hs@¨GÀA‰7M@¨G¼í‘hs@¨GÇ+ J@¨G¼í‘hs@¨GÂÞÑ·@¨G¼í‘hs@¨GÍà q@¨G¼í‘hs@¨G½æšÔ,@¨G¼í‘hs@¨G·süP@8 ØDЩ@8|í‘hr@5{ Iº^@5sñA [À@4¹7KƧð@4µF -¦L0@4¿ò䎊r@4µ®æ1ø¡@4¿ò䎊r@4Ì‹C•@4¿ò䎊r@4ÎBZîc ?¢F^ì¼Sð?ò}¥_Z’?—æ'=D´P?±òÛÝ"Ù?§|Qæý S?šèïdË?|öOÿÝ?£kŸ!µ?”Qä\‰Õ?©øpe³­ó?¤”ÈÞg°?¦ÍL ÖŽ?‚‘´…=Ca?™*ŪZÞ[?\ÍÅ“¢?¢ÇrˆG?1 –R¹ù?—Š9÷^Þ@@@@@,@$?ð?ð?ð?ð?ð?ð¿_pcUÄ¿CBW¸?j«XOð\×?XéôŽ(§ù@­–ÂôaÏ‚@¨G¾ãaŠ@«’H´9X@«’Hè§ç@«’H´9X@«’>¸Që…@8·â‚@·€@8Ðò{²þÆ@3ÜIº^5?@3ß¾vÈ´9@3q‰7Kƨ@3w»/ìVÖ@2^«6z‘@2c•$Þ@2^«6z‘@2^Ù‡+@2^«6z‘@2Z¬1'?¤ÊŽaÈ]Ó?•@K/Ùz?žG)ñ†Ü?Aš%ðï?’Þäi]i?“yÄö%Þî?óA[ØïF?•@¼Cк?š!Ïbõ³·?á>G]!?’ºñS©YÖ?“®°ýYè@?¼ÐÁß9&û?ÉGãA­ø?‰¢Ò+ÜÝB\@­ˆûdZ¬@­ˆû¥ãSù@­ˆûdZ¬@­‰@­ˆûdZ¬@­‰tSŽó@­ˆûdZ¬@­‰$Ý.@­ˆûdZ¬@­ˆþž›@­ˆûdZ¬@­ˆýp£× -@4m¥œàv@4mIQ‚©“@2?|í‘h@2g8}¿@2Ðå`A‰@2Ä›¥ãT@1³&Á½¥@1°ÞÒˆÎp@1³&Á½¥@1°-à @1³&Á½¥@1±‚©“ á?|öOÿÝ?‘‘Ç`[?’måGSžq?5~pY5?’[9ƒÍ,?‘£.'É?|öOÿÝ?”A}ý?‘ŽütÅÒ(?’ü#q\-v?’…4Ü.?‘Qïʾ?‚á²Olºü?µœ7}?ƒ´],m=?ƒ¼9XNÄu?ˆ©{2¡Î?Š*ÊÔQãú@@@@@(@ ?ð?ð?ð?ð?ð?ð?@pó ?E 'Àð?MìfMè‘?=Á]D¾Þº@¯šíc¨@­ˆýBZ=Ú?lÞ#ÈÚú—?^‚k=“6Ú?å§#ZNÄÉ?Æ …êÿ¦@Ÿf¢Ê@@@®\(õÃ@®-V@®\(õÃ@® -=p¥@®\(õÃ@®škP°@®\(õÃ@®Ûô‡ü@®\(õÃ@®}Vlô@®\(õÃ@®:)Çy@¥#Ÿ¾vÈ´@¥#¡$Ý/@¥#Ÿ¾vÈ´@¥#²:)Çz@¥#Ÿ¾vÈ´@¥#¦s×Ý@¥#Ÿ¾vÈ´@¥#¼žì¿²@¥#Ÿ¾vÈ´@¥#—süQ@¥#Ÿ¾vÈ´@¥#žÑ·@5‘|ÚQ@5ŒVÕϪÍ@1î5?|í‘@1Ò¶®}Vm@1PA‰7KÇ@14?åÉ@0°–»˜Çã@0¨“t¼j@0°–»˜Çã@0žp:û~‘@0°–»˜Çã@0—škP°ó?|öOÿÝ?¥|»5zÆ?™¬þ.OÀ…?“ׂa†Üü?g;+³ûu?£YîLUñ?|öOÿÝ?«éé¨Íyù?±]×öÂ"?ªå…Þøå?¥Á޾ƒ¢z?¶6‚/÷?‚§W®ê ?•è­¸‡? H6¤„?‘ñZa7Þ?1 –R¹ù?Æa]•o¾è@@@@@,@,?ð?ð?ð?ð?ð?ð?7Ð^à?*>‚à?PŽpö Ÿ?l=3¯Ú³ä@®ÏøìŠ@¥#¡nNl´?gÈ£5b“?Ýu6Λ?Ö…¸Ž6Ä6?óíòœ¿Šˆ@Ÿ_Cw©<%@@­æ§l‹C–@­æ±&éxÔ@­æ§l‹C–@­æ© 'RT@­æ§l‹C–@­æ«xFÜ@­æ§l‹C–@­æ¬L˜^@­æ§l‹C–@­æ©îËû@­æ§l‹C–@­æ§Ë)`@§¼‰7KÇ@§¼nÙ‡,@§¼‰7KÇ@§¼ƒ{J#:@§¼‰7KÇ@§¼€ qv@§¼‰7KÇ@§¼HË’@§¼‰7KÇ@§¼€N¤¨Á@§¼‰7KÇ@§¼€A‰7M@7IÎ_oÒ@7éxÔýô@2 -^5?|í@2 á°‰ '@1©Û"Ðå`@1¨Ë’:*@1 ù kº@1$Ý/@1 ù kº@1ð¸»@1 ù kº@1lô!.?£È‰·akû?:LÓá -í?“u*y?ØTnçE?‘¾%î -ã?‘®¬nÒMê?³Hß_`?’7Îf¬ps?‘†£„Â?°‹Œ÷€?ñ«Ý„ Õ?‘¿¤üî¾Ö?Øà‡›yºã?)‰€Zw?ƒ´],m=?‚þ——³§ø?‡…¤$Ó?ˆCns¥ @@@@@ @,?ð?ð?ð?ð?ð?ð¿`·Ø¬9?U7¯úé?(Çh=B¯?S5X#ˆSó@­æªbïå`@§¼XŽÊî??—~Ø?d)ŽÌÇç£?t½§`ÞjÚ?Àkƒ«@0@ŸqIUêÈò@@¨ž#S÷ÎÙ@¨žùÛ"Ñ@¨ž#S÷ÎÙ@¨ž$Z¬@¨ž#S÷ÎÙ@¨ž#¯·é@¨ž#S÷ÎÙ@¨ž!–R½<@¨ž#S÷ÎÙ@¨ž#þ\‘Ñ@¨ž#S÷ÎÙ@¨ž!G®|@©3›¥ãSø@©3å`A‰@©3›¥ãSø@©3œ¬1'@©3›¥ãSø@©3”mÅÖ9@©3›¥ãSø@©3¤êJŒ@©3›¥ãSø@©3¡‰7KÇ@©3›¥ãSø@©3<64@8žHè§æ@8œL˜_@3µãS÷ÎÙ@3´!-w1@31‰7Kƨ@32 Iº^5@2æYJôðØ@2ãüPH@2æYJôðØ@2åF -¦L0@2æYJôðØ@2åF -¦L0?±>ÏÅósN?’°BÉô-?–ý3¾ZÀ’?—IW`g’?“>û{Ñø~?‘£.'É?µ”Zm?’eCŒO?šJ‘ÍÒÁ?™Š‰nca?–Y:ŸèJ?›ªU3Îp?£ešñS„‰?]ÒivLÿ?‹’Ú[ßõ?¨¡ûðf?qÂ' -Bœ?ŒC ãSG@@@@@*@?ð?ð?ð?ð?ð?ð?Mn9¿WV T?LbFÈBÜ?b„´VÆ@¨ž"'&«¨@©3 h½*Û?_oFË;?t›bÍ3ë?­r´Hï´ý?ÕQ¤%ÄõÉ@Ÿr¢[]à@@¡&7ÎÙ‡@¡&>YÛ–†@¡&7ÎÙ‡@¡&9êçÇ@¡&7ÎÙ‡@¡&8Ñ÷žt@¡&7ÎÙ‡@¡&8Öëæ†@¡&7ÎÙ‡@¡&71Å@¡&7ÎÙ‡@¡&5É%Ëf@«»Ù‡+@«» ×úP@«»Ù‡+@«»©Î;@«»Ù‡+@«»S|]@«»Ù‡+@«»$÷‚@«»Ù‡+@«»¶4‹í@«»Ù‡+@«»¶f@8+µsê´@8/Ò„7Šü@2@ Ä›¥ã@2@YˆB-@0¤¼j~ùÛ@0¤üoìá@/Aò×t@/Žü 3W…@/Aò×t@/†Ÿe¾@/Aò×t@/²-U?‚Ú¡ËG7@¡ÇTýó¶F@¡Ç³Ð|„¶@¡ÇTýó¶FÁ.„€@¡ÇTýó¶FÁ.„€@¦ 7Kƨ@¦õÂ\@¦ 7Kƨ@¦Ð©*@¦ 7Kƨ@¦#ä%®æ@¦ 7Kƨ@¦À@¦ 7KƨÁ.„€@¦ 7KƨÁ.„€@6ÖšÔ,<Ÿ@6Ô‡ü¹#¢@4›¥ãSø@3æs×Ûô@3Ÿ²-V@3c{J#9Á@3p–»˜Çã@3%oi@3p–»˜ÇãÁ.„NÜC,¥@3p–»˜ÇãÁ.„NÜC,¥?}Ñ¿ž,?°UG -?¸Ñ³ÊÕ‚M?¨¸üÍø@8Iç@8Ù?’Óusÿ\Ã?¨€Sn\}?àÀM1#?Èà>½b×@8S@8û—?‚oÁÆÜ§ö?ª0½Uoý(?±¼Ë)–Öõ?¤¾¯S@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø @®CŸ¾vÉ@®C”Ø×@®CŸ¾vÉ@®C)kvÚ@®CŸ¾vÉ@®C±G@®CŸ¾vÉ@®C––@@®CŸ¾vÉ@®C-°‡Q@®CŸ¾vÉ@®C¢cI@“šŸ¾vÉ@“šŸ¾vÊ@“šŸ¾vÉ@“š …Ì@“šŸ¾vÉ@“—¼w¯@“šŸ¾vÉ@“˜’éãÛ@“šŸ¾vÉ@“—;A@“šŸ¾vÉ@“™uT"\@5­¥œàv@5¬XãR¾v@1° Ä›¦@1Áí_‚Ÿs@0]V”@0\ßNhZ=@0:Ô,<ží@09ÚŽUuö@0:Ô,<ží@09ÖúŒÎî@0:Ô,<ží@09ßÉ'º?|¬Æ Væ?7Ò×8?‘'«¿Wc»?‹¾\?¢­n?êNÕU?‘;%ú¿?}@T˜ÁÎ¥?’  A$¢?ˆ’?h¡?-õ$: Ÿ?éþv¿Sô?q¡Åç®­?‚“LÐÛ|?_è‚ ?‚Íz ¡(î?ƒ,Hýß X?†¹Ì*ýâú?†Ó3NóA@@$@*@@3@5?ð?ð?ð?ð?ð?ð¿ lƒ€¿0 ö—¤?7Gê#î¥>?!–uK«°@®C§r=@“™r-Ñå?WªÖЦ?ALÑ/$?¼Äÿ"?ŽâµbsîÐ@Ÿfñ Hâ@ @®cS÷ÎÙ@®c•%@®cS÷ÎÙ@®f§ï²@®cS÷ÎÙ@®aG®{@®cS÷ÎÙ@®b Iº^@®cS÷ÎÙ@®^ùÛ"Ñ@®cS÷ÎÙ@®[¥ãSø@¯ƒ•%@¯ˆ1&éz@¯ƒ•%@¯…¡ÊÀƒ@¯ƒ•%@¯†$Ý/@¯ƒ•%@¯†éxÔþ@¯ƒ•%@¯~vÈ´8@¯ƒ•%@¯ƒn—@7šÔ,<Ÿ@7µsê³h@2ã÷ÎÙ‡@2ãä%®æ2@1éÛ"Ðå`@1é‡+ @1«xFÜ^@1¬‘ÑN;Î@1«xFÜ^@1«¥ãS÷Ï@1«xFÜ^@1«jçÕfÐ?1·†Æjñ?ZÁ».œ?‘£Ä›è?‹û…†_?’°STðS?‘<ƒÜ_õ?‘â%ì˜ ä?’?Á• ñ:?’±ä?1ð'7éÃ?‘Uç·Býi?‘KÔ#•N ?›˜tgiê?ŒÂ§dß±?„„OW°ó?‚ù8 ±^?æšÔ,<ž?‡ã ËÄž@@@@@@?ð?ð?ð?ð?ð?ð¿U·ö È¿X¬ -Œ?7J nQ?P¦ÏmZ.š@®`C¢|î@¯„‡ÔÙo?Y§×@~¥?m‡²$û?ºF®uH?×b>šì•a@Ÿk -Z³)@@­ð£× -=@­ÚŸ¾vÊ@­ð£× -=@­ ¾BZîc@­ð£× -=@­ yè>B[@­ð£× -=@­ Sœ¾à@­ð£× -=@­ kàÞÒ‰@­ð£× -=@­ s÷ÎÙ@£ÇÒñ©ûç@£Ç×ÎÙ‡@£ÇÒñ©ûç@£Æ Dg8@£ÇÒñ©ûç@£Åæ?@£ÇÒñ©ûç@£Å­¸ºÇ@£ÇÒñ©ûç@£Å´ðØDÐ@£ÇÒñ©ûç@£Å¿—$tT@7àØDЩ@7Ö”FsØ@5n5?|í‘@4oiDg8@5²-V@3p[À6ã@5mÅÖ8†@2üVÕϪÎ@5mÅÖ8†@2÷ -=p£Ø@5mÅÖ8†@2ü£n.²?…ÅBðrç?Ëï¦ß]]©?¹Z{úf?‘öJî¯Ê®?¶‹•V•?²0 ï?š•§q!U?º_*_™'»?ÀHÖö’”?“Ôð,äÁ?©|¥ÔÜI -?¥*Ÿê?aäŽ -Ø? ÿ"èœM*?¡*æª\ù?”ûÅìÆÅ?š‘ÝÒcô? ¯Ýù5@@@@@,@*?ð?ð?ð?ð?ð?ð¿Øº±Å+è¿Á\N<à?±!su-?ªâÀ\‰ô@­ ŸKj1û@£Æebd¡?ÏWd~¯Ým?ÅFÆ ÛV@‡î¯`vÌé@q˜fyEå@ŸfHîÓ}@@¢õz›ð¨@¢õ?‘![ì$?‘«†PP]Ë?|Ñb×¶@?’:ø³ØÙl?‘¤¨Ä\þá?‘:GŽò ?‘B{ $Ñ?‘_ÒÈrd+?‚ˆóºRÉ?6¸¼ì?…ÊF³?„g—3#?ˆì͆å?ˆõ S¾Ë@@&@,@,@9@:?ð?ð?ð?ð?ð?ð¿I É¿K\?4œéd!L??12éð[>Ñ@¢õ;&¬™ê@”Ü€›%"?Ty¾èÇQ?Qnœ?µ«]eÔ?­ûýD ¹"@ŸfªZ¡‹8@@¡þaÊÀƒÁ.„€@¡þaÊÀƒ@¡þa‰7KÇ@¡þaÊÀƒ@¡þb Iº^@¡þaÊÀƒ@¡þIÔ•+@¡þaÊÀƒ@¡þqë…¸@¡þaÊÀƒÁ.„€@¯V‡+ Á.„€@¯V‡+ @¯Z…‡“Þ@¯V‡+ @¯}p£× @¯V‡+ @¯9õY³Ï@¯V‡+ @¯³t¼j~@¯V‡+ Á.„€@9D¯O „MÁ.„>¤µÜÆ@4”›¥ãSø@4›¬q ²–@3â-V@3ÞzáG®@3½cˆe”°@3Ƶ '¼@3½cˆe”°@3–R½<6@3½cˆe”°Á.„NÜC,¥@8J¨?¢“*Uä?‘ŸÇSñ?¡+ÇÍÑjÝ?•³™»7…@8Ù@8J¨?™3Ÿ9?“Z—H|:?©­Á –¹‹?©K+Gq)Ý@8û—@8p÷?7'în‹K?“>û{Ñø~?®8z™át?›°Ô¤A]@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø@­Á7KƧð@­Á6“u@­Á7KƧð@­Á64ê@­Á7KƧð@­Á5Ž!–S@­Á7KƧð@­Á8­«ŸU@­Á7KƧð@­Á7Xâ@­Á7KƧð@­Á1Ä2ÊX@£„¯Ÿ¾w@£„­V@£„¯Ÿ¾w@£„¯O „L@£„¯Ÿ¾w@£„¯iDg8@£„¯Ÿ¾w@£„½}¿H@£„¯Ÿ¾w@£„²{²þÅ@£„¯Ÿ¾w@£„·KƧð@82ÃÉîËû@8hÛ‹¬@2ðÄ›¥ãT@2ê¦L/ƒ{@2†“t¼@2}/Ÿ¾w@1®_oÒ @1¢Ðå`AŠ@1®_oÒ @1¢œwškQ@1®_oÒ @1¢×sü?„F/·ÿP5?“ò²nqV?“ï~í"?›î ó4°„?˜ -0˜ggk?—À °Ø§ ?µ”Zm?’áÄïÃõ?– íÇyz?¡çìh±J¼?–%¥ê3–? C˜.NTÃ?¥J´TACG?‘ÌAzÁý?† - Ðló]?…J]j?€=P|?Œ¸ðËb@@@@@$@(?ð?ð?ð?ð?ð?ð¿5’%Öà¿<~Ýå?C Nþ_.­?iÐ4‹@­Á5,|Œ(@£„µÖá³ð?j{άæÀ?{r·_T÷ô?Âݤê¦?Ô~g<‚@ŸpubŠ[Ì@@«7„›¥ãT@«7„›¥ãT@«7„›¥ãT@«7ƒþ\‘Ñ@«7„›¥ãT@«7ˆŒç°@«7„›¥ãT@«7†$Ý/@«7„›¥ãT@«7„›¥ãU@«7„›¥ãT@«7‰7KÇ@®|¼í‘hs@®|ºáG®@®|¼í‘hs@®|¾ùÛ"Ò@®|¼í‘hs@®|¾š@®|¼í‘hs@®|¼í‘ht@®|¼í‘hs@®|½<64@®|¼í‘hs@®|¾«6z@6Œ]cˆe”@6¿HË’@3ÎÙ‡+@31Å@26§ï²-@28K]Ìcñ@2‚@·€5@2?åÉ@2‚@·€5@2œwškQ@2‚@·€5@2{²þÅn?‚á²Olºü?/³)sšÌ?‘K]Ã4?Œj6_?‘¯GàBm?‘‚ÊŸû©?€‚ñêã ?’u¦ieõ–?ŽËÜ¿€?Ùט³ô?’íßš?‘C å;Ã?‚ù…žÄ`w?îŠõ ?‚¸“Îè ø?„À"aËô??€=P|?‰Ü)@Jq«@@@@@@ ?ð?ð?ð?ð?ð?ð¿3À4m ?Gn—?=rLvòù?®5òÛÌ@«7„V­TÙ@®|¼‹àß?]VHâ}?3a·Ã-Aé?ÂZ€OŒ}?oìâΑޘ@Ÿh+!ò£ç@@¬g× -=p¤@¬gÚ^5?}@¬g× -=p¤@¬gÙõY³Ð@¬g× -=p¤@¬gܹ#¢œ@¬g× -=p¤@¬gÖâëC@¬g× -=p¤@¬gÕ?|í@¬g× -=p¤@¬gÖ+jçÕ@ª“%ãS÷Ï@ª“ Ä›¥ã@ª“%ãS÷Ï@ª“1‚©“ @ª“%ãS÷Ï@ª“-quŽ@ª“%ãS÷Ï@ª“,Ùè>B@ª“%ãS÷Ï@ª“-jO@ª“%ãS÷Ï@ª“*#9Àì@6Ô xFÜ@6ÎùÛ"Ðæ@2£÷ÎÙ‡@2(Œç¯@1ñ‰7Kƨ@1ìj~ùÛ#@1B‚@·€5@1@««Ò -î?„Þþï Š?x¡uõ)å¹?ñX’º/?Ó‘ë±íò@Ÿtçé)«o@@¤4oŸ¾w@¤4qI4 s@¤4oŸ¾w@¤4£êÛ[o@¤4oŸ¾w@¤4š39H~@¤4oŸ¾w@¤4`y©x@¤4oŸ¾w@¤4uó}$¾@¤4oŸ¾w@¤4w§Ç c@˜Û¸Që…@˜Û±I¶¾@˜Û¸Që…@˜Ü)G¥&†@˜Û¸Që…@˜Ûõ”œ¡@˜Û¸Që…@˜ÛÊ~³¬@˜Û¸Që…@˜Û“<£{'@˜Û¸Që…@˜Û©þMhÊ@8Î쿱[W@8ÍźÕñê@3Ô›¥ãSø@3ªfo… @36§ï²-@3•ç²]@2YŒ~($ @2l—5œ~@2YŒ~($ @2mþ[auž@2YŒ~($ @2m¯?úx.?§›0µæ[Æ?¤¿±¿º]?ž™b…}ã?—dzé™?—.†¢­€?Ÿá ë&¦? [ó ðP~?¨!˜¨N¿d? VŠwU?”Ê£¥â7?—.¬×®ò3?—i¨§äWõ?»Ðàƒþ;z?Ÿ¬„Îab? ”†›]M-?‡­ù…Õº¨?™gyéá?’¼ÔûþX3@@$@&@*@9@6?ð?ð?ð?ð?ð?ð?móã¨v¿g£#É6€?rלå-;N?r1`ØþÔ@¤4l¤/u”@˜Û°˜Wsê?ŠCÍ‹/ñŽ?‹µ÷&¹?÷ÆÃMˆ}_@WbàF‡@Ÿn9®ü¹Ž@@ ê8Që…@ ê8bMÓ@ ê8Që…@ ê8øyVš@ ê8Që…@ ê8ÝhFW@ ê8Që…@ ê9¾L×I@ ê8Që…@ ê7¶4ÚÓ@ ê8Që…@ ê7eýŠÛ@«wV“u@«wUϪ͟@«wV“u@«wU¾î) @«wV“u@«wT×frH@«wV“u@«wV sÊy@«wV“u@«wU@TZö@«wV“u@«wU" ½@4ÉÎ_oÒ@4É…ðoiD@0)‡+ @0) }µúÐ@/íOß;dZ@/í÷¤ç«u@.(Û‹¬q @.(PÊAõ±@.(Û‹¬q @.(´IôÂ@.(Û‹¬q @.(A µ‹h?|Ñb×¶@?âxú•et?‘9Q&š?‹µgË„ ?ðÌÇßgé?µô£¹u?|çµB &€?’'3 -k?ºÏx†ãŒ?4ñÐkm?ÕB¯Nl?IX§uj?‚póaÏß?ŒèÕƒ¦ÒÐ?‚±uÇØ"7?ƒ -»’¢ïq?†’¸%9§G?†”3ËeBp@@,@,@(@5@3?ð?ð?ð?ð?ð?ð¾à7¿øžq?1S0%þ -?€9\e|@ ê88›:Ì@«wU•L¢?QAg%e\?5m;¦‡ÿ”?°@î5JË?w÷V®‚Ú@Ÿg=Þ‚@@ª/»dZ¬@ª/ºáG®@ª/»dZ¬@ª/¹Û"Ðä@ª/»dZ¬@ª/¿;dZ@ª/»dZ¬@ª/½Ùb¸@ª/»dZ¬@ª/¹XbM@ª/»dZ¬@ª/»¥ãS÷@©tÖ‡+ @©tÖ‡+ @©tÖ‡+ @©tÕY³Ð|@©tÖ‡+ @©tÙrGE9@©tÖ‡+ @©t×$tS@©tÖ‡+ @©tÕöý!þ@©tÖ‡+ @©tÕÂ\)@4įO „M@4ÄêJŒL@2Ê^5?|í@2Éûçl‹D@26§ï²-@26¸ºÇ@1Ì¿±[W?@1ÌVÕϪÎ@1Ì¿±[W?@1Í:’£@1Ì¿±[W?@1̞쿱\?}Ñ¿ž,?‘u:|ñ²¨?‘RsÈW?Ž,OêK˜u?‘èÒ§ˆ„Å?’Æ÷Xê†?|¬Çëý ?”‡r¦5MS?ÔCXsò?‘aYZ†«q?‘ýuãá$6?‘¿¤üî¾Ö?ƒ<Õp?Ž>ž¬ˆ?…™ï ufÞ?…bv{3dZ?‡gϵ’õ?‰w¿˜Í¶ª@@@@@,@*?ð?ð?ð?ð?ð?ð? —sÂ`¿ªýZÀ?>z…¦Z«?—CN*@ª/»X½æÖ@©tÖ].â+?]üëoòb?>ÜüñµZ?ŰT&Rùú?†ííS›óÿ@Ÿfz¼4æ.@@°Ÿ¾wÁ.„€@°Ÿ¾w@°trf@°Ÿ¾w@°MHhÖ@°Ÿ¾w@°•7Â@°Ÿ¾w@°lU/@°Ÿ¾w@°@%; @—FH´9XÁ.„€@—FH´9X@—FIE;s@—FH´9X@—FJÌŠ¹°@—FH´9X@—FH½¸@—FH´9X@—FIvGú@—FH´9X@—FIQ‚©“@3›¹Œ~($Á.„>¤µÜÆ@/ÍV“@/ÌóÒ+~%@/IxÔýó¶@/I¼ÕÒ"k@-#¼ÓZ…ˆ@-#rÐdR@-#¼ÓZ…ˆ@-#n.±Ä3@-#¼ÓZ…ˆ@-#ÉîËû@8J¨?ÂqCÜ ‰?‘((³ Dé?‹¦p¤?íÖéðw?¸«0íN@8J¨?’úC™l?ƒB–Vx?-ôö²-?Ôé.$¨‰?MmUѽ@8p÷?Œ³$-a5[?‚†µ”g¬?‚ãV*ÈÒ?†“D#ã?†ŽÉúª@,@(@ @;@:?ð?ð?ð?ð?ðøøøøøøøøøøøø@¤¡yÛ"Ðå@¤¡|¬1'@¤¡yÛ"Ðå@¤¡ƒ•&@¤¡yÛ"Ðå@¤¡f?@¤¡yÛ"Ðå@¤¡m\ú¬Ú@¤¡yÛ"Ðå@¤¡{dZ¬@¤¡yÛ"Ðå@¤¡t!-x@£)áÊÀƒ@£)·Oß;@£)áÊÀƒ@£)å`A‰6@£)áÊÀƒ@£)ã,¥zx@£)áÊÀƒ@£)æ -¦L0@£)áÊÀƒ@£)ÞùÛ"Ñ@£)áÊÀƒ@£)ÚáG®@9T xFÜ@9iè>BZî@4k¥ãS÷Ï@4t?åÉ@3—ï²-@3™³Ð|„¶@3œàu÷@3 Û"Ðå`@3œàu÷@3ê³g ù@3œàu÷@3Œ~($ ?Ç/q*q:?“”üU§<­?’•íX~4w?¡OÍÉ´Ž?§ö̺Œ ‘?¡AœÏŸ¦?ÀGÚCx4¾?—j2Uíï?‘C\ºÕ¶? Ñ¡b£?¾?Ÿ‹*¾F°?¨)P›?ª¹0ÇåÄ?™Uîœsú?Š[¦Råb?“ÍÁ!÷G?8Ï£§?¢XY-±[®@@@@@*@*?ð?ð?ð?ð?ð?ð?bŒŸö@?zÄà?hùÜb>J?uåÌ[>u@¤¡rjoŸ@£)ßáB°?{‰~vCúP?…ÓJ,_¨?È?v»“L?â >¶Fwv@Ÿq*˜Sn¾@@¨n\(õÂ@¨n\j~ùÛ@¨n\(õÂ@¨n\wškQ@¨n\(õÂ@¨n\¬1'@¨n\(õÂ@¨n\„µÜÆ@¨n\(õÂ@¨n[quŽ"@¨n\(õÂ@¨n\C,¥z@§ìl‹C•@§ìlÌÌÌÍ@§ìl‹C•@§ìm„M<@§ìl‹C•@§ìnzáI@§ìl‹C•@§ìl篷@§ìl‹C•@§ìmV@§ìl‹C•@§ìlcñA@2÷â‚@·€@2÷Ûô‡ü¹@0c÷ÎÙ‡@0d“t¼j@0$¼j~ùÛ@0%m\ú¬Ú@.åÉä@.€[À6â@.åÉä@.€A‰7KÇ@.åÉä@.€[À6ã?É^³Dw'?õ¹Ëh?‘WßÈDö@?‹¬àÌ’Ç?‘Dj?¾ƒìÈÁ?ÐbV‡,?’#maЀ?üÓqÔN‰?0ÜN :s?Ö§­îQD?Sñƒ´V.?€g‹)ØêÀ?ŒÖ -ÄȲ?‚ÂÌ]æ?ƒ=rµE=?†ÃÛSPã?†½ª»—@@@@@*@&?ð?ð?ð?ð?ð?ð¿'Ôe„ð¿*ZÜp?3dYa3ß?#ûºÝ¼h@¨n\" Þ’@§ìlÌäLD?B­ -SÒ¦Ù?2êl‰ÉŽ?Q4#ü?_a9$”;@Ÿs‘š‘u@@¢-‡+ @¢-‡+ @¢-‡+ @¢-‡+ @¢-‡+ @¢-Çâ‚A@¢-‡+ @¢-âëC@¢-‡+ @¢-R½<6@¢-‡+ @¢-Ž!–S@¬8¡G®{@¬8¡‰7KÈ@¬8¡G®{@¬8¡£n.²@¬8¡G®{@¬8¡ò×s@¬8¡G®{@¬8 Ä›¥ã@¬8¡G®{@¬8¢&€J@¬8¡G®{@¬8¢e+Ô@3:qÞi­C@3:W§†Â&@.®V“t@.®}Vlô@.‘&éxÔþ@.ÿ—$tT@--úCþ\’@-.!–R½=@--úCþ\’@-._oÒ @--úCþ\’@--úCþ\’?|¬Çëý ?¾¢`ƒ?‘7[ä­?‹¬àÌ’Ç?ôê÷º»â?×°ë*–w?|öOÿÝ?’j%ÓRa?«'Q™µ?-õI¸`K?â2„&ÿh?e¾DQ„Q?‚q6tNø6?Œ¯þuõí?‚uÞ@>N ?‚â‡~ûÉ\?†’Õaì+’?†l&þ@@@@@*@,?ð?ð?ð?ð?ð?ð¿ß»—à?~0@?'Ñœðõ?!OÙÇ_.@¢-`î ¡@¬8¡¤œß–?<þæøÿ?AžƒÏ†ƒÖ?†ñ$!÷9?#|ßд@Ÿfõß¿@@Ÿ$ Oß;dÁ.„€@Ÿ$ Oß;dÁ.„€@Ÿ$ Oß;dÁ.„€@Ÿ$ Oß;dÁ.„€@Ÿ$ Oß;dÁ.„€@Ÿ$ Oß;dÁ.„€@—m49XbÁ.„€@—m49XbÁ.„€@—m49XbÁ.„€@—m49XbÁ.„€@—m49XbÁ.„€@—m49XbÁ.„€@8D¯O „MÁ.„>¤µÜÆ@3ðÄ›¥ãTÁ.„M‰ûçm@3b-VÁ.„QnÙ‡@2J0U2a|Á.„NÜC,¥@2J0U2a|Á.„NÜC,¥@2J0U2a|Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@¥.µ?|í‘Á.„€@¥.µ?|í‘@¥.¢\(ö@¥.µ?|í‘@¥.¯iDg8@¥.µ?|í‘@¥.¿ÿÿÿÿ@¥.µ?|í‘Á.„€@¥.µ?|í‘Á.„€@œÑ0 Ä›¦Á.„€@œÑ0 Ä›¦@œÑdŽŠqÞ@œÑ0 Ä›¦@œÑGË)_@œÑ0 Ä›¦@œÑ_ö”F@œÑ0 Ä›¦Á.„€@œÑ0 Ä›¦Á.„€@1àØDЩÁ.„>¤µÜÆ@0.5?|í‘@0Që…¸@/ÄZ¬1@/¯²-V@/ -#9Àëî@.Óg ù l@/ -#9ÀëîÁ.„NÜC,¥@/ -#9ÀëîÁ.„NÜC,¥@8 -Näy?©ˆ3Ú"Š?™çÙô½îé?Hžyq@8Iç@8Ù@82rê? ¬q¶™?˜áâ)(?¡–BÝŽ4@8S@8û—@8L?i-ý-›…?‘¼Åâ<{?P Ž)k@8 Ø@8 Ø@@@?ð?ð?ðøøøøøøøøøøøø@®`“t¼@®`Z¬@®`“t¼@®`Â&€@®`“t¼@®`ñA \@®`“t¼@®`Щ*@®`“t¼@®`S÷ÎÙ@®`“t¼@®`e+Ó@¢á)ûçl‹@¢á)ûçl‹@¢á)ûçl‹@¢á*Ov@¢á)ûçl‹@¢á)Q‚©“@¢á)ûçl‹@¢á,VÕÏ«@¢á)ûçl‹@¢á)7Kƨ@¢á)ûçl‹@¢á-«ŸU›@3uS&Á¾@3u`A‰7L@1^Ù‡+@1_iDg8@1iÛ"Ðå`@1iº^5?}@0£ÉîËû@0£¼ÓZ…ˆ@0£ÉîËû@0¤¢3œ¿@0£ÉîËû@0¢ÞÑ·?|öOÿÝ?é¥3i£ó?‘âTÀÊS“?Œ<…ÓÆÝ?‘ §‡g¾?‘PÊÑ<Ýl?|¬Çëý ?’›ÈÖÝ?‘Ûcu%ç+?‘²)ò@a,?øóéM Ÿ?× ³¸ÑZ?‚q6tNø6?2ô]7?‚¯­Ù¤Á¶?ƒ*|š\/´?‡ã ËÄž?‡YÍ_@@@@@&@&?ð?ð?ð?ð?ð?ð¿3”[¦?=¶^¨ ?+Yƒ›×?9æØt÷|@®`Ø>º@¢á*õWˆ?JÔ¹Ê*j¯?ZxÈ¿h·?£+dRÖ·?Á”ºoQÅ‹@ŸfÊ Ÿ?S@@¨‘o²-@¨‘nzáH@¨‘o²-@¨‘q©ûçl@¨‘o²-@¨‘hÎp:û@¨‘o²-@¨‘h§æœ@¨‘o²-@¨‘eðoiD@¨‘o²-@¨‘f€IR@¢¯E¡ÊÀƒ@¢¯Gï²-@¢¯E¡ÊÀƒ@¢¯B©“ á@¢¯E¡ÊÀƒ@¢¯<„µÜÆ@¢¯E¡ÊÀƒ@¢¯=ó¶E¢@¢¯E¡ÊÀƒ@¢¯Cˆe”¯@¢¯E¡ÊÀƒ@¢¯C9Àëî@6(†YJôñ@6!TÉ…ðo@2ÞÙ‡+@2Ý}¿HË@2¾V“u@2¿ùrGE9@2 ù kº@2 0¾ í)@2 ù kº@2S&Â@2 ù kº@2KƧïž?|¬Çëý ?‘‹PƧ¢$?–ý3¾ZÀ’?Ž,OêK˜u?–¡©ÚåŠ?–EŽù±Ò?„F/·ÿP5?’ñ©ûçlŒ?–¾Oäë ?“ÅÒÏPÉä?—v>ª¸ ?š>[F»h?°#ÃIÓ¨&?“&•Z÷˜#?“„*0x)Æ?“ˆÃúžáÓ?“aÑ#?©œÌ ãPÐ@@@@@,@*?ð?ð?ð?ð?ð?ð¿]ŽÍM$¿XÀá*?,@£Wa¿?Pµak;@¨‘jH.Èg@¢¯DNQ‹d?K*(ø¾ ”?oõŠÔOã?ž¡ðÌô2K?Ú@fpŸÈŸ@Ÿf -Aès•@ @¢™2-VÁ.„€@¢™2-V@¢™*~ùÛ#@¢™2-V@¢™8üPH@¢™2-V@¢™'ÈK]Ì@¢™2-V@¢™(Œç°@¢™2-V@¢™,1&é@¡záG®Á.„€@¡záG®@¡·éù@¡záG®@¡óMj@¡záG®@¡ Ô•@¡záG®@¡ŽŠqÞ@¡záG®@¡ -qÞi­@97â‚@·€Á.„>¤µÜÆ@5 Ä›¥ã@4÷´¢3œ@4A‰7KÇ@3ýquŽ"@3‡ ù kº@3t9XbN@3‡ ù kº@3s× -=p¤@3‡ ù kº@3wÎÙ‡+@8J¨?˜¶ÚæÁ€?©q-*³7?”ÑD²Û? `F§C:?¢ÀÂêVAg@8J¨?–XSüra1?œT¹o¿‹õ?Ò–‚h±n?¡7‚c/ç?¨>/ÀËÄÊ@8p÷?¢ŠÕfÐÏ1?¶j“êÜài?©”!ŽÓâï?žþôרì? ¾Á{þÆ%@@@@*@(?ð?ð?ð?ð?ðøøøøøøøøøøøø!@¥ù‡+ @¥øöªlŸ˜@¥ù‡+ @¥ùºÇË@¥ù‡+ @¥ùÁ½¥@¥ù‡+ @¥ù*™1@¥ù‡+ @¥ùðØDÐ@¥ù‡+ @¥ù‡ü¹$@CzáG®@C˜q^@CzáG®@Cš@CzáG®@COß:@CzáG®@C)ûçlŠ@CzáG®@C:)Çy¦@CzáG®@C$÷eýŒ@8Î쿱[W@8Û&-r»Ø@4#÷ÎÙ‡@4!©ûçl‹@3´“t¼j@3´Ð©*0@2‚@·€5@2Åœàu÷@2‚@·€5@2Ç1Å‚@2‚@·€5@2À:û~‘?z›Mß ?™D•ö¬ˆ? ±ubÊÅ5?{¾“úy6?’õ¡EE?“*“žj±»?¤Œã__`?œ_lWF_‚?¡„æZ;¥?–…%j»a?ŸNg xŸ?’ Óº^?†VÊ´}Þç?›’qvš°“?¢GûBå?ŒžVE’D?“‹Ü‚NÐ.?”"‚Ò#@@@@@,@?ð?ð?ð?ð?ð?ð?s½®8-À?a^ØÈE?hmgÖÐÅ?dþÓWa@¥ùªÃl@C%ýÓ?…‘›ö?€l_w5Ê?ú9&“T`Ä?éfxU¾Ð@Ÿo d˜€¢@"@£daG®{@£db Iº^@£daG®{@£dh´9X@£daG®{@£dj³g ú@£daG®{@£dTýó¶F@£daG®{@£dUŽ!–S@£daG®{@£dZ¬Ùè>@§uÔýó¶F@§uÔ¼j~ú@§uÔýó¶F@§u× -=p¤@§uÔýó¶F@§uǓݗö@§uÔýó¶F@§u¿½@§uÔýó¶F@§uÃ× -=r@§uÔýó¶F@§uÁ–R½<@8¨†YJôñ@8°ØDЩ@3ý‘hr° @4n—P@3“t¼@3쿱[W@2‚@·€5@2ÓñA [À@2‚@·€5@2ÍÈK]Ì@2‚@·€5@2Ƨï².?¯oÝ ÷6}?–:ð»}TÇ?—go]Þ?Hžyq?•õþèüäú?™S:Ъ;5?°:-%šÀ?—¿ºÖ÷?™luì<±È?”J6bº?— {ޏ`z?›vûËSÆÒ?§%XÕ’?’®ã‘\’?=Ÿo -F?–ì k.÷A?Ž•w “w„?šÙ,yf’Y@@@@@*@,?ð?ð?ð?ð?ð?ð?6l[äH¿Q䇔?_$ˆ„Í?dÒo54@£dV¾Žµü@§uÂ,§?q9ü.ç_?w›d™4c|?ÑÂZÖ‘0?Ú -]ò”›°@Ÿoíû¹C@#@¯ƒ9Û"Ðå@¯ƒ¼j~ú@¯ƒ9Û"Ðå@¯ƒ4¢3œ@¯ƒ9Û"Ðå@¯ƒA-w1@¯ƒ9Û"Ðå@¯ƒ4!-w@¯ƒ9Û"Ðå@¯ƒ<ÓZ…‡@¯ƒ9Û"Ðå@¯ƒ>Ov_Ú@­.záH@­E`A‰8@­.záH@­2° Ä›@­.záH@­(Îp:ü@­.záH@­<¬1'@­.záH@­0 Ä›§@­.záH@­+xFÝ@8í¥œàv@8îi­BÃÊ@5Iº^5?@5° Ä›¦@4¬j~ùÛ#@4¤,<žìÀ@4 ¿±[W?@3õµsê³h@4 ¿±[W?@44mÅÖ9@4 ¿±[W?@4T`ªdÄ?¡EÉ@Ú?žK›æ¶'B?“mî–‚Žr?¡Ëæ%ðÇ?£Ï½Át/9?ž C@L(?„F/·ÿP5?“6SÇ{Ó?–ˆkCünL?§×#Vz?¡Í‹>¬?¤†k ßð?«ú—ÇZà?à í¡h„?ŠÌ÷7Õ}?™Ø^FC}?•°QŸ?]Í?°4\ɵ@@@@@*@&?ð?ð?ð?ð?ð?ð?xÛ‚ö€¿tý´e;€?Yö9id•?>øù›¬@¯ƒ.%€tì@­8ñôT?wÃlÄç?bcÏÎö-?Íæ!Þ?§8ôêýÚ@ŸjLÖ–B×@$@¨#‰º^5?Á.„€@¨#‰º^5?Á.„€@¨#‰º^5?Á.„€@¨#‰º^5?Á.„€@¨#‰º^5?Á.„€@¨#‰º^5?@¨$–”Fsƒ@£KC•Á.„€@£KC•Á.„€@£KC•Á.„€@£KC•Á.„€@£KC•Á.„€@£KC•@£f§ï²@9VšÔ,<ŸÁ.„>¤µÜÆ@4óS÷ÎÙÁ.„M‰ûçm@4~ùÛ"ÑÁ.„QnÙ‡@3¦YJôðØÁ.„NÜC,¥@3¦YJôðØÁ.„NÜC,¥@3¦YJôðØ@4­BÃÉï@8J¨@8#˜@8¾:@8 >+@8Iç?Êòµõô‡]@8J¨@8Î÷@8i§@8Å@8S?Ìbû—ê*ç@8p÷@8 * @8p÷@8¶@8 Ø?ÂHucLú@&?ðøøøøøøøøøøøø%@­þ}ó¶E¢Á.„€@­þ}ó¶E¢Á.„€@­þ}ó¶E¢Á.„€@­þ}ó¶E¢Á.„€@­þ}ó¶E¢Á.„€@­þ}ó¶E¢Á.„€@˜Ñë…¸Á.„€@˜Ñë…¸Á.„€@˜Ñë…¸Á.„€@˜Ñë…¸Á.„€@˜Ñë…¸Á.„€@˜Ñë…¸Á.„€@8–šÔ,<ŸÁ.„>¤µÜÆ@3ã÷ÎÙ‡Á.„M‰ûçm@2Õ`A‰7LÁ.„QnÙ‡@2ž«6z‘Á.„NÜC,¥@2ž«6z‘Á.„NÜC,¥@2ž«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø&@®Ùz^5?}@®ÙlIº^5@®Ùz^5?}@®ÙÈõÂ[@®Ùz^5?}@®ÙÜj~ùÛ@®Ùz^5?}@®ÙŒL˜_@®Ùz^5?}@®Ù…¸Që@®Ùz^5?}@®ØÔFsØ@ª¢Òñ©ü@ª¢\j~ùÜ@ª¢Òñ©ü@ª¢Å¡ÊÀƒ@ª¢Òñ©ü@ª¢²ÊW§‡@ª¢Òñ©ü@ª¢½¥œà@ª¢Òñ©ü@ª¢¼ÚQ@ª¢Òñ©ü@ª¢lVÕÏ«@9h†YJôñ@9Y#¢œwš@4Ê^5?|í@4ãÝ—ö+k@4“t¼@4 P°ò{³@3…œàu÷@3‚h Ô•@3…œàu÷@3’ÃÉîËû@3…œàu÷@35Â\(ö?Çpíë"¬7?¤÷¢qþó?©3}ÛCºß?© Êºd9.?±ä*í5>?ºD1 `?®k|j“ʨ?²ìÊfä“?³ƒ$G"»ª?lná<9?­I€phùË?Àþ"µ–¥v?£˜Œo7\Ì?­ÀÎJÒfA?µ†wØGò?™Gs#4Iú?¬*fÒdº«?¾C3`ow¥@@@@@(@"?ð?ð?ð?ð?ð?ð¿¡EÄáÐ?•M nò@? œfO¶m?&÷Î@D@®ÙxGG:@ª¢¶E¥?±‹Á”ü0U?£þ\7Y@$úà@ƒòÃŽ¿Ð@Ÿm‚ê[¤@'@¬«6z@8~ƒä%®æ@5 Ä›¥ãÁ.„M‰ûçm@4'KƧïžÁ.„QnÙ‡@3cÉîËûÁ.„NÜC,¥@3cÉîËûÁ.„NÜC,¥@3cÉîËûÁ.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøø)@§Ù1&éxÕ@§Ù1hr°"@§Ù1&éxÕ@§Ù1Å@§Ù1&éxÕ@§Ù2n—P@§Ù1&éxÕ@§Ù1Ä2ÊY@§Ù1&éxÕ@§Ù0–»˜È@§Ù1&éxÕ@§Ù0¾ í)@§¹›¥ãT@§¹Ý/¡@§¹›¥ãT@§¹¸Qì@§¹›¥ãT@§¹8ï4×@§¹›¥ãT@§¹8ï4Ø@§¹›¥ãT@§¹+ÓÃa@§¹›¥ãT@§¹o@2쿱[X@2æ1ø @-\j~ùÛ"@-\wškP±@-]ó¶E¡Ë@-^Ov_Ø®@+̲•éá±@+̲•éá±@+̲•éá±@+Ì¿±[W?@+̲•éá±@+Ì‹C•?É^³Dw'?°çR;?‘=?ùKh?‹¹GüÞõ?÷6r In?À­Õß}º?ÐbV‡,?’ -‰¸Ì?‘N÷J’?6) }’ë?ÚÌA B{?_Ø~tñ?€cPßQª?Œ°¶.Ä+Æ?‚yî8Á$?‚éXëLL÷?†’Õaì+’?†½ª»—@@@@@,@,?ð?ð?ð?ð?ð?ð¿?€ûVœ¿Êû¥À?)ÅÆÿôj>üŽ?ù•"@§Ù1û¯£@§¹%NÇý?8ʘ߯P? ¨·Ñ?n“_H‚?é¿|8­@Ÿsœ32v@*@¨R“t¼@¨RÇ_…@¨R“t¼Á.„€@¨R“t¼Á.„€@¨R“t¼Á.„€@¨R“t¼Á.„€@¨R“t¼Á.„€@šÃí‘hr°@šÃéûçlŠ@šÃí‘hr°Á.„€@šÃí‘hr°Á.„€@šÃí‘hr°Á.„€@šÃí‘hr°Á.„€@šÃí‘hr°Á.„€@8VšÔ,<Ÿ@8[AjZ C@40Ä›¥ãTÁ.„M‰ûçm@3±‰7KƨÁ.„QnÙ‡@2s&Á½¥Á.„NÜC,¥@2s&Á½¥Á.„NÜC,¥@2s&Á½¥Á.„NÜC,¥?¤ïŒ7娠@8#˜@8¾:@8 >+@8Iç@8Ù?‹!»¼ôï@8Î÷@8i§@8Å@8S@8û—?¬æçßÌiâ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø+@¡­Ö“u@¡­× -ã@¡­Ö“uÁ.„€@¡­Ö“uÁ.„€@¡­Ö“uÁ.„€@¡­Ö“uÁ.„€@¡­Ö“uÁ.„€@›¢èr° Å@›¢â€ù[C@›¢èr° ÅÁ.„€@›¢èr° ÅÁ.„€@›¢èr° ÅÁ.„€@›¢èr° ÅÁ.„€@›¢èr° ÅÁ.„€@6ý:’£@6ÿ—I0<¨@3+ IºÁ.„M‰ûçm@2§KƧïžÁ.„QnÙ‡@2 -0U2a|Á.„NÜC,¥@2 -0U2a|Á.„NÜC,¥@2 -0U2a|Á.„NÜC,¥?|¬Æ Væ@8#˜@8¾:@8 >+@8Iç@8Ù?e™”XWø@8Î÷@8i§@8Å@8S@8û—?•ß^$ŒÉû@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø,@§LÍOß;d@§LÐå`A‰@§LÍOß;d@§L× -=p¤@§LÍOß;d@§Lèr° Å@§LÍOß;d@§M Oß;d@§LÍOß;d@§LÒ×s@§LÍOß;d@§LÒ-V@¯u C•@¯uå`A‰@¯u C•@¯u•%@¯u C•@¯u º^5?@¯u C•@¯uß;dZ@¯u C•@¯týp£× -@¯u C•@¯uí‘hs@8p4mÅÖ8@8t,<žìÀ@5!hr° Ä@5=æšÔ,<@4K"Ðå`B@4aN;Í5¨@4p–»˜Çã@4¤µÜÆ?@4p–»˜Çã@4|²•éá±@4p–»˜Çã@4oÒòä?°{QBãï?ð}óßd?ð’FB:?ð_ŒB?¦ ÍÚMý,?“*“žj±»?‚á²Olºü?ð¢dx/?ð‡äR³s?ð‚àÓÁ?¬tPYÓz?L "¾?® 'ð %ö?ðfÁbÂô?ð*wjs—?ð,’Ú|‚?”¦”x£b?†‡+œC@?ð?ð?ð@@?ð?ð?ð?ð?ð?ð?.aö@?a/9š?Bz^öʉ?U™î0f¥±@§LÑæÝ2@¯ug´5Ö?ZóÃÔ?€ØVa?bõ?‹äYS”üÜ?ï±\ùU¸@Ÿrz2÷6\@-@¦/µÂ\)@¦/¶“v@¦/µÂ\)@¦/¶4ê@¦/µÂ\)@¦/¶Ov`@¦/µÂ\)@¦/¶‡+ @¦/µÂ\)@¦/´É…ðo@¦/µÂ\)@¦/³÷ÎÙ@£fX“t¼j@£fXÔýó¶@£fX“t¼j@£fX7´¢4@£fX“t¼j@£fW´¢3œ@£fX“t¼j@£fY‡+@£fX“t¼j@£fXDЩ@£fX“t¼j@£fWškP±@0Ç>«6z@0Ç>«6z@0 Iº^5@0ò×s@.›dZ¬@.›dZ¬@.åÉä@.¾vÈ´:@.åÉä@.Ø­«ŸV@.åÉä@.åÉä?É^³Dw'?é¥3i£ó?‘7[ä­?‹×lÇ…N9?‘Dj?Å{¿Ž<¹?ÐbV‡,?’7Îf¬ps?–ÐO(·Š?7枪y7?õ<úU?sxÙ/T?€bMÕky?ŒÐ¤Âÿê?‚‹¡8*ú?ƒ†+ Å?†špk Y?†©b/bJö@@@@@,@&?ð?ð?ð?ð?ð?ð¿R*Šö°¿DÁgÔF?"ÁÌ[¤þï? |oÐ[XÈ@¦/µ=Ø¢@£fXe…jÙ?2 á¢%­ë?/l#ÁÄ?_µWŸqŒ\?-m‡ŠßNì@Ÿs5ДÉ@.@¡}@ƒn˜@¡}@Ä›¥ã@¡}@ƒn˜@¡}<í‘hs@¡}@ƒn˜@¡};˜Çâ‚@¡}@ƒn˜@¡}B\(ö@¡}@ƒn˜@¡}@Ñ·Y@¡}@ƒn˜@¡}AÊÀƒ@«’« Iº@«’¶‡+ @«’« Iº@«’¯iDg8@«’« Iº@«’ªW§†Â@«’« Iº@«’«]Ìcñ@«’« Iº@«’­w1Å@«’« Iº@«’®—OÞ@7Ù*0U2b@7Ö¸ºÇ@3—+ Iº@3›µsê³@3)Û"Ðå`@3-à qv@2mÅÖ8†@2éá°‰ @2mÅÖ8†@2•*™1@2mÅÖ8†@2›=ÈL?óA[ØïF?•ßóV_Ü^?•|®6zj?$Ìj½BÙ?‘5ø gµÒ?“ d?”¼íÒh??—ò•kÕK2?•¶ÀA½ -;?‘.“¥?‘†óèJL\?’.8 -B?™¬<÷aý?–P¢k"?“„*0x)Æ?†3_¾ˆ?ˆëÅoë?‡Õ˜]–GÄ@@@@@$@*?ð?ð?ð?ð?ð?ð? \J&À¿YPþ’j?3%0Y.Ï?S\ξ‘ß@¡}AŠï—@«’¯&OŠ.?Pã”:…OÀ?p\!ð+Ö4?Ÿ­ƒ -¾2?Ù‰@0x1@Ÿl§!±Å@/@ Z^¸Që…@ `y™™™š@ Z^¸Që…Á.„€@ Z^¸Që…Á.„€@ Z^¸Që…Á.„€@ Z^¸Që…Á.„€@ Z^¸Që…Á.„€@•™õÂ\)@•˜¸Që…@•™õÂ\)Á.„€@•™õÂ\)Á.„€@•™õÂ\)Á.„€@•™õÂ\)Á.„€@•™õÂ\)Á.„€@8Hè§æ@77l‹C•€@5.5?|í‘Á.„M‰ûçm@4d¼j~ùÛÁ.„QnÙ‡@4J0U2a|Á.„NÜC,¥@4J0U2a|Á.„NÜC,¥@4J0U2a|Á.„NÜC,¥?ïT,J(¤r@8#˜@8¾:@8 >+@8Iç@8Ù?ÖFÉ ÿòÞ@8Î÷@8i§@8Å@8S@8û—?ö=ÌÅ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø0@ª?©xÔýô@ª?©xÔýõ@ª?©xÔýô@ª?ªW§†Á@ª?©xÔýô@ª?ª¦L/ƒ@ª?©xÔýô@ª?«C,¥@ª?©xÔýô@ª?©Q‚©“@ª?©xÔýô@ª?©á°‰ @£P° Ä›¦@£P°bMÒó@£P° Ä›¦@£P°U2a|@£P° Ä›¦@£P¯v_Ø®@£P° Ä›¦@£P¯·éù@£P° Ä›¦@£P°‰ 'R@£P° Ä›¦@£P¯–»™@3T xFÜ@3Sþ\‘ÑN@0 Ä›¥ã@/ùè>BZî@.ØÔýó¶F@.Ó&Á½¥@.Aò×t@.ŽËûµt@.Aò×t@. „M;@.Aò×t@.Žæ1ø ‘?}Ñ¿ž,?jú‚<·™?‘:€¾¶ˆ?‹ª½¨ª8v?òǹíT­?âé¨ë7F?|öOÿÝ?’‡Iš÷?ö”iåó¨?/ò×ÈZø?ÔÒ@úˆ‘?hï,ðà?‚uÞ@>N ?ŒöOÿÝ?‚¸“Îè ø?ƒ!Ë *(?†žóB» “?†å·ÑfWà@@@@@$@,?ð?ð?ð?ð?ð?ð? /(@ ¿Ù ?, mŒâ¹ã?Ü;ñ¬@@ª?©ßrƒ@£P°!Ò!?KÛßµÞsq?9am’,p?¤™]ÑÅö?€¥×ñ -€Ý@Ÿg@ÿ0¯@1@«Jz^5?}@«JwKƧñ@«Jz^5?}@«Jx­«ŸV@«Jz^5?}@«JwÎÙˆ@«Jz^5?}@«J|wškQ@«Jz^5?}@«J{çl‹D@«Jz^5?}@«J|¬1'@­ùäÝ/ @­ùæ$Ý/@­ùäÝ/ @­ùäZ¬ @­ùäÝ/ @­ùë…¸Q@­ùäÝ/ @­ùæfffg@­ùäÝ/ @­ùéÞÒ@­ùäÝ/ @­ùè>BZí@7úqÞi­C@7óŠ Þ@3’ Iº^5@3“Ð|„µÜ@3Ct¼j~ú@3DµÜÆ?@2œÚQÎ@2}¿HÌ@2œÚQÎ@2žOv_Ø®@2œÚQÎ@2ŠÚ¹õZ?›’qvš°•?äm°û0Ž?‘RsÈW?“ŒÒ•ÿV{?”§RXFÖf?’?=ÆþÎò?„F/·ÿP5?’5CàQ?‘Jâ”âj?–¼Š˜L¥ø?•’nî …?“ÌUõÎs¼?„+£QKø?Ž`ŸÝïöF?ƒ~¨õ/¥O?ˆW„hðQ?‰ö±«tï?Š`½i=ÓØ@@@@@*@&?ð?ð?ð?ð?ð?ð?N™2_8?@µÝ¸?;V[”lîE?'>w–ä¨@«J{E«3Ê@­ùç‰ ¬`?VhÆCņ?Kz‰àç­Í?¡‚q7V¬Ê?‘„=¯‰£@Ÿl××#Îs@2@ª*ß¾vÈ´@ª*ß¾vÈ´@ª*ß¾vÈ´@ª*àIQƒ@ª*ß¾vÈ´@ª*Üj~ùÛ@ª*ß¾vÈ´@ª*á [À@ª*ß¾vÈ´@ª*äZ¬@ª*ß¾vÈ´@ª*áÊÀƒ@¨ÞbMÒò@¨Þ Ä›¦@¨ÞbMÒò@¨ÞŒ"h Õ@¨ÞbMÒò@¨Þ‰7Kƨ@¨ÞbMÒò@¨Þ|(õÂ@¨ÞbMÒò@¨Þ‘hr°!@¨ÞbMÒò@¨ÞŽ}Vlõ@5µS&Á¾@5µF -¦L0@3ahr° Ä@3_ß;dZ@2ûƧï²@2ùe+ÓÃa@2¦YJôðØ@2 ù k¹@2¦YJôðØ@2«ŸU›>@2¦YJôðØ@2œ¥zxl"?|¬Çëý ?Čۨ1A?”‰oüq u?Hžyq?›ÿËRÈ?•½0 -Žø?„F/·ÿP5?’j%ÓRa?“v@á¿bî?’ äÅ?™=M÷‹¸? J,û¾õ?ƒíÈm½!¾?3ßa=„?¶,1õ'®?ƒžÂâk,?Ü×þë¿?Ž•w “w„@@@@@*@(?ð?ð?ð?ð?ð?ð?C>,Ù`¿^ØšŒ$?/z’ü“?h•¡1©ê@ª*àé(ù@¨ÞŠÎx*£?M›<£—š(?†wnÌÜã?¡Fq|¤ös@ -kâY)@ŸeF’V¦¶@3@¤Ñô¼j~ú@¤Ñõ$Ý@¤Ñô¼j~ú@¤ÑÿÔjž@¤Ñô¼j~ú@¤Ò×.@¤Ñô¼j~ú@¤Ñ÷O9n)@¤Ñô¼j~ú@¤Ñûlgb@¤Ñô¼j~ú@¤ÑúÀ®ŸS@–…¯Ÿ¾w@–…­V@–…¯Ÿ¾w@–…¾óÕž@–…¯Ÿ¾w@–…ßû"¡P@–…¯Ÿ¾w@–…ÏfqŸ¯@–…¯Ÿ¾w@–…ËhXc·@–…¯Ÿ¾w@–…ÜúCÆ@4¿–»˜È@4Àºú£“ò@2; Iº^@23øÒÍž@1ö§ï²-@1ïËaÓÚ@1=cˆe”°@19åâØ‡@1=cˆe”°@14¿w¸5@1=cˆe”°@15N–?|Ñb×¶@?’ò@­9•Ð?›[6.©š7?Ž­Ñºn?“ÿ<$a·?“\¯Û…vŸ?}@T˜ÁÎ¥?’¸«‹Žy?œø)3ÁÐ^?”C\7hv?—3|¯OiÜ?•C⟗áù?„°¼óSôS?Ém±O5?âÔ–o=€?‹Á°üø%A?‘Öl¸h8?‘ÒÅ?ÇÂ@@@&@(@,@9@7?ð?ð?ð?ð?ð?ð?Qú¶ÄÖ?spl?-h^ù]K[?FúÌ;®@¤Ñ÷›¨P@–…ÀnÑk?L$™­q\}?fšÿ6÷?£@üøð“?ÓóƒôÕ¡@ŸereX¯Ý@4@£ÇvE¡ÊÁ@£Çv‡+ @£ÇvE¡ÊÁ@£Çq”¹-Ï@£ÇvE¡ÊÁ@£ÇOì@£ÇvE¡ÊÁ@£ÇpO*Ä@£ÇvE¡ÊÁ@£Çª ÍF@£ÇvE¡ÊÁ@£ÆæMPA@™é¶E¡ÊÁ@™é¶È´9X@™é¶E¡ÊÁ@™é·u @™é¶E¡ÊÁ@™éž=ýl”@™é¶E¡ÊÁ@™éQ(ù@™é¶E¡ÊÁ@™éiñ4£@™é¶E¡ÊÁ@™éØ‘ÑkÎ@3ÞHè§æ@3ÝUhÆ“@0sS÷ÎÙ@0eþRžì@0.ùÛ"Ðæ@0£’påF@0&YJôðØ@/¦Ý̵d@0&YJôðØ@/ªì’J¹S@0&YJôðØ@/¢yUY‘?}õ¬#„­?…þÄž¶?§ÞéÒ‘°Ç?±:7–C1ò?ÀóçWØ?È. |Ý[?|Ñb×¶@?’ý#wgé?§±_m24?¦}å5®,?ÁvÜ.°ø*?¼éEim?‚nÓ3î‰?“KŽå‚U!?ÂeW^¯_?œuÞù<^? ¥a,ŽÄ=?™"­ŒÛ€A@@$@*@$@9@:?ð?ð?ð?ð?ð?𿟋f†Ž^’Ù€?oéóÖTrÆ?}­Óþ†«™@£Çc(E¤;@™é¨:áˆû?v?rå.I-?†oFÚ?×x®%é»A@²Ó¹0 -@ŸZê(ìçP@5@¨F§ï²@¨Gï²,@¨F§ï²@¨@ªdÂ÷@¨F§ï²@¨Aò×r@¨F§ï²@¨G†Â&@¨F§ï²@¨I­BÃÉ@¨F§ï²@¨JÀƒo@£Îæffff@£Îã•%@£Îæffff@£ÎçË)_@£Îæffff@£ÎàA‰7M@£Îæffff@£ÎãFÜ]e@£Îæffff@£ÎåS&Â@£Îæffff@£ÎæL/ƒ|@6è†YJôñ@6éÀëíúD@2Ùº^5?}@2Ö+jçÕf@2,j~ùÛ#@2)ã¼Ô@1³&Á½¥@1¯'»/ìW@1³&Á½¥@1³g ù l@1³&Á½¥@1²° Ä›¦?гá‡}?•Íñ¤Ý q?’,³Zêª?ç\Š2˜?‘˜¯ -`É?‘Iãd©ìGcª# @ªI·i@¤ixm$?C>ìÂÉ?^ÜZ¸P‹¼?’Úg…×+?Ä£fó!˜±@Ÿg¢ÜÏN;@7@¡{å`A‰7Á.„€@¡{å`A‰7@¡{áä÷eþ@¡{å`A‰7@¡{Ö+jçÕ@¡{å`A‰7@¡{ç“Ý—ö@¡{å`A‰7@¡{üÚQ@¡{å`A‰7Á.„€@ªÛ$Ý/Á.„€@ªÛ$Ý/@ªÛ3÷ÎÙ@ªÛ$Ý/@ªÚð¸º@ªÛ$Ý/@ªÚë)^ž@ªÛ$Ý/@ªÛ|ÚR@ªÛ$Ý/Á.„€@3” xFÜÁ.„>¤µÜÆ@08r° Äœ@0M¿HË’@/Ó¶E¡ÊÀ@/ºŸ¾vÈ´@.¸7´¢3œ@.µ '»0@.¸7´¢3œ@.ÅðoiDi@.¸7´¢3œÁ.„NÜC,¥@8J¨?—É·R©Ï? „„³ÉuN?œéû¢­0K?œ=òÙUä@8Ù@8J¨?—® QnS#?ºUŠ"ÄÅ?–sZ -™ø?¬1H9v@8û—@8p÷?—Ö¸¨ú.?¶j“êÜài?Ž«]O8èº?ªƒ&‘n_@8 Ø@@@@&?ð?ð?ð?ðøøøøøøøøøøøø8@Ÿ¾8Që…Á.„€@Ÿ¾8Që…Á.„€@Ÿ¾8Që…Á.„€@Ÿ¾8Që…Á.„€@Ÿ¾8Që…Á.„€@Ÿ¾8Që…Á.„€@œÓs¶E¡ËÁ.„€@œÓs¶E¡ËÁ.„€@œÓs¶E¡ËÁ.„€@œÓs¶E¡ËÁ.„€@œÓs¶E¡ËÁ.„€@œÓs¶E¡ËÁ.„€@7¹Œ~($Á.„>¤µÜÆ@2!hr° ÄÁ.„M‰ûçm@1Ë"Ðå`BÁ.„QnÙ‡@0Åœàu÷Á.„NÜC,¥@0Åœàu÷Á.„NÜC,¥@0Åœàu÷Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø9@¥¦j~ùÛ#@¥¦h1&éy@¥¦j~ùÛ#@¥¦oAò×@¥¦j~ùÛ#@¥¦kÓÃa@¥¦j~ùÛ#@¥¦k¹Œ~(@¥¦j~ùÛ#@¥¦dµÜÆ?@¥¦j~ùÛ#@¥¦f€IQ@¬Ý€@¬Ý‰7KÈ@¬Ý€@¬Ý~5?|î@¬Ý€@¬Ý£n.³@¬Ý€@¬Ý.Hè§@¬Ý€@¬Ý„oi@¬Ý€@¬Ýƒ,¥zy@6è†YJôñ@6èï4Ö¡b@3; Iº^@3;µsê³@2Àå`A‰7@2ˆÎp:ü@2?ò䎊r@2C,¥zxl@2?ò䎊r@2>ߤ?åÉ@2?ò䎊r@2?Åo?„F/·ÿP5?‘¡çL¤?‘ñê&ètä?‘´CF õ?“ £Ê­?šæ5ƒ‹Å‹?}Ñ¿ž,?’š'†­`í?‘¡Kd·´+?‘.}áµ$?“þþ¿=?“‘k–šj?‹v'þ­X?þþoÀM?„ã¼ÓZ…ˆ?„Ö©Ú0?‘„1ôñÂß?ŽÜÂÎÛÖa@@@@@*@*?ð?ð?ð?ð?ð?ð¿4©ëR?2õÄõp?Iv%Òaq?>Ç Ý¤Ã@¥¦göX Æ@¬Ý÷¢Ý?hS,“P?^ÿŸÁO Ä?Ò>tãkà ?ÃìèêC@Ÿf©˜ÝK‡@:@§µ;çl‹D@§µ;dZ¬@§µ;çl‹D@§µhr° Å@§µ;çl‹D@§µ@ qw@§µ;çl‹D@§µX“t¼j@§µ;çl‹D@§µ?oÒó@§µ;çl‹D@§µ ÅÖ8†@¢ƒ£S÷ÎÙ@¢ƒ§ï²-@¢ƒ£S÷ÎÙ@¢ƒÚŸ¾vÉ@¢ƒ£S÷ÎÙ@¢ƒŸö”E@¢ƒ£S÷ÎÙ@¢ƒBÃÉï@¢ƒ£S÷ÎÙ@¢ƒŽËûµ@¢ƒ£S÷ÎÙ@¢ƒÌ¿±[W@8½:’£@8ÄSŽóMj@4Œí‘hr°@4ÀhÛ‹¬q@3©Û"Ðå`@3¿ƒ{J#:@3ý!ÿ.I@3@-à @3ý!ÿ.I@3Q-w1Å@3ý!ÿ.I@3óMj?¯ò5}'Î?¢Ú>¨I ¿?©3}ÛCºß?³•(&V?¬  KüÞ?°»ÂOY‰ò?¢Æ÷Xê†?¬'ø'5?°9›|/ß?¶ãc6; ?¸§e‰B?±€ü@ Ø¤?ÅÃÑ /x/?¡ú-8ûõö?›f°ùr[‚?›ÄAÚ þ ?ªöwóƒY?¸&ä¾±4ý@@@@@,@&?ð?ð?ð?ð?ð?ð¿y5[á6?k‹!_?2§rù¸‚?y|†J¶'¶@§µ9,d‡õ@¢ƒ­%,˜?ŸÝU©fX?ÈŽqŒã?þE½jF(v?÷À>0÷¦õ@Ÿj…ïè¶´@;@¥ÉcS÷ÎÙ@¥ÉcS÷ÎÙ@¥ÉcS÷ÎÙ@¥Éeo@¥ÉcS÷ÎÙ@¥É`-à @¥ÉcS÷ÎÙ@¥Éc{J#:@¥ÉcS÷ÎÙ@¥Éd“t»@¥ÉcS÷ÎÙ@¥Écˆe”®@¡¹dZ¬@¡¹d›¥ãT@¡¹dZ¬@¡¹Z’£S@¡¹dZ¬@¡¹]!ÿ.I@¡¹dZ¬@¡¹gæšÔ@¡¹dZ¬@¡¹e‡“ݘ@¡¹dZ¬@¡¹ezxl"@4įO „M@4Å+ÓÃa@0Ùº^5?|@0×E8ï4Ö@0»Æ§ï²@0¸õÂ\)@0‚@·€4@0ªdÂø8@0‚@·€4@0&€IR@0‚@·€4@0ÿ.Hè¨?|¬Çëý ?‘¸ü"ù€2?•™Þ õ?ޝ“¶¶ÒÍ?‘VšÐ^Ø?‘f]£àG?|öOÿÝ?“¡ƒ[¤45?“èËôy?“3ÏÇF0?‘†óèJL\?Éöm/wE›Æ@¥Éc‡˜c|@¡¹eF¦.p?/ wƒØ›?L¹Õ›Do?i»®«3y?£ ˆ·Uu^@Ÿf©{ʺ@<@¡AÙ™™™š@¡AÙ™™™š@¡AÙ™™™š@¡AÛ˜Çâ‚@¡AÙ™™™š@¡AÚáG®@¡AÙ™™™š@¡A×´¢3œ@¡AÙ™™™š@¡AÙÛ"Ðå@¡AÙ™™™š@¡AØ­«ŸV@®/"MÒñª@®/“t¼i@®/"MÒñª@®/%o@®/"MÒñª@®/(1&éy@®/"MÒñª@®/$Z¬ @®/"MÒñª@®/#{J#:@®/"MÒñª@®/!×Ûô‰@7uS&Á¾@7s àÞÒˆ@3žÙ‡+@3Ÿ.Hè§@3U`A‰7L@3V“t¼@2J0U2a|@2JCþ\‘Ò@2J0U2a|@2L(õÂ\@2J0U2a|@2KÓÃa@?Œs¤DÅÐ?—oN„Q?š^ÇÙ*G?’³Žbtx=?“™p[³ì?—‡XE%:?ˆÿÀ)T¿Æ?œ7»fU‡?’t-Eü?’F—T \*?“'ü#šgâ?“‘k–šj?‡~ ~ã?•<€¥¿ý¢? t€4Ã?„À"aËô??‹ú èNÆö?‹ ˜1 D@@@@@@(@&?ð?ð?ð?ð?ð?ð¿ ²•¾ ?c¤H?3}SñÄ'?MãÙ8Xð@¡AÙ‘1A@®/&E]?R\¤“^y—?míãÈœ? ·£®æ?Ùa¬|ÄÛ@ŸiÓFz3ó@=@¬ðgl‹C–@¬ðbMÒñª@¬ðgl‹C–@¬ðaä÷eþ@¬ðgl‹C–@¬ðezxl"@¬ðgl‹C–@¬ðn}Vlô@¬ðgl‹C–@¬ð\ú¬Ùè@¬ðgl‹C–@¬ð\„µÜÆ@¨ôyXbN@¨ô~¸Që„@¨ôyXbN@¨ô‚Zîc @¨ôyXbN@¨ô.Hè§@¨ôyXbN@¨ôn±Ä2Ê@¨ôyXbN@¨ô–¡aä÷@¨ôyXbN@¨ô Ä›¦@82ÃÉîËû@8%?|í‘h@4+ Iº@4»˜Çâ‚@3M²-V@3M¸ºÇË@2ÜÚQÎ@2Ð@2ÜÚQÎ@2ÛÍ5¨Xz@2ÜÚQÎ@2Ú0U2a|?ªÝ8Ⱥ™J?Æ -×?•Œ–?—;±C??›m¤´¨×¦?”ÙA!Xá¨?¢F^ì¼Sð?’áÄïÃõ?’±ä?ðK^‡?¢€fç½Î?Ÿ…4æµ°?º f -¦?‘pØ-Ÿt?†' -³}÷C?Q§ ç´Í?”èÙ£—?•mCìc¿4@@@@@*@*?ð?ð?ð?ð?ð?ð¿pŽÑÁá?tŸAyù€?jŠ˜êïÝ‹?uªöÚaÞÉ@¬ðd½nä@¨ô„o]ÆÏ?‚‡`þm08?’âø:þ2ú?ì,Ƀ!x4@‹øk.j@ŸnÜó‹·ñ@>@¥†ì‹C•@¥†ìÌÌÌÍ@¥†ì‹C•@¥†ìô!-@¥†ì‹C•@¥†é…ðoi@¥†ì‹C•@¥†ìcñA @¥†ì‹C•@¥†ðHð@¥†ì‹C•@¥†î—OÞ@§•öÈ´9X@§•öÈ´9X@§•öÈ´9X@§•ì1&é@§•öÈ´9X@§•è§æ›@§•öÈ´9X@§•äêJŒ@§•öÈ´9X@§•ö4ê@§•öÈ´9X@§•ò£S%@3|ÚQ@3aä÷eþ@/Û"Ðå`@/U2a|@-òn—Oß@-à·€4mÆ@.žš@-þ í(Œç@.žš@.‡“Ý—÷@.žš@.ÉîËû?|öOÿÝ?òb[±?•Mq —¦?šÞx‚xí¨?˜h†5+P?˜ C®k¯?|¬Çëý ?’¼MÒÀ7F?šˆFy® -?§™sÒ†ŸL? ,¡r×gÁ?£Šï-[w?‚‹¡8*ùÿ?µœ7}?†aÞàI*•?‡¯½.SM?‡”_Õ­çW?‡´*žZ}Õ@@@@@,@,?ð?ð?ð?ð?ð?ð??[‚°0¿Qy4¨ô?1,9˜Qtœ?V7Ð:àg-@¥†í„¼Ÿ@§•ôÿƒ·?N3Èõ V?r:s~\Kš?¡Ï´æ'?Ý#Šœ;@Ÿb™»¹I@?@¯ÚxQë…@¯Úx“t¼j@¯ÚxQë…@¯ÚyXbN@¯ÚxQë…@¯Úye+ÓÂ@¯ÚxQë…@¯Úye+ÓÄ@¯ÚxQë…@¯Úw>«6z@¯ÚxQë…@¯ÚwKƧñ@œ“m‘hr°@œ“nzáI@œ“m‘hr°@œ“lq ²–@œ“m‘hr°@œ“l"h Õ@œ“m‘hr°@œ“l¥zxm@œ“m‘hr°@œ“mÅÖ8†@œ“m‘hr°@œ“mBÃÉî@0÷â‚@·€@0÷â‚@·€@+MV“@+MquŽ!@*ÉxÔýó¶@*É 'RTa@*oi@*÷eýŠÛ@*oi@*oh@*oi@*oi?É^¨¯Âj?ÖÈ ¼?‘&Øç?‘?‹¯eU5?êtÿKÑc?·t¤¢‚J?ÐbQë„›¦?’¼  g¶?¹º–Èj?;ß $Þû?ÐFf$?Sñƒ´V.?€bMÕ]f?Œ¯þuõí?‚uÞ@>N ?‚ãaÎúvh?†l&þ?†½ª»—@@@@@(@,?ð?ð?ð?ð?ð?ð¿O–Z°?"ºªJ?5/•”BÊÇ?!À—63±@¯Úx!J‡€@œ“m.à«,?D_?o´oâ?0ÊP7Ñç?„g7¤‘jß?X²'ÈEc@Ÿs ¸9 @@@¦Àƒn˜@¦³÷ÎÙ@¦Àƒn˜@¦É7Kƨ@¦Àƒn˜@¦®óMj@¦Àƒn˜@¦¸üPH@¦Àƒn˜@¦¢Ðå`B@¦Àƒn˜@¦¢e+Õ@¥$•$Ý@¥$°bMÒò@¥$•$Ý@¥$`hÛ‹«@¥$•$Ý@¥$NV“@¥$•$Ý@¥$Q ²•ê@¥$•$Ý@¥#çy¦µ @¥$•$Ý@¥#ëíúCý@8ý:’£@8Κu@4O|í‘hr@4E '»0@3ÝV”@3ÉîËû¶@3fYJôðØ@3Z¬Ùè>C@3fYJôðØ@3TtSŽóN@3fYJôðØ@3L‘ÑN;Î? Eˆ‡ðó‹?™05¦ ê[?–ý3¾ZÀ’?’9ñ9¶ò8?¯+|ƒº<ó?²Æ ºÔæP?±Á1ÈËŸÓ @Ÿg÷Ï`ã@A@Ÿ³àA‰7L@Ÿ³ð˜°¢Æ@Ÿ³àA‰7LÁ.„€@Ÿ³àA‰7LÁ.„€@Ÿ³àA‰7LÁ.„€@Ÿ³àA‰7L@Ÿ¯B|áöz@Ÿ³àA‰7L@Ÿ¯Õ$Ý@­y¶E¡ÊÁ@­y¹XbL@­y¶E¡ÊÁÁ.„€@­y¶E¡ÊÁÁ.„€@­y¶E¡ÊÁÁ.„€@­y¶E¡ÊÁ@­|åS-@­y¶E¡ÊÁ@­|µY³Ð~@8‡>«6z@8q– -ÌW@3õãS÷ÎÙÁ.„M‰ûçm@2çKƧïžÁ.„QnÙ‡@2Ç ù kºÁ.„NÜC,¥@2Ç ù kº@1¢ú*,¦»@2Ç ù kº@1i0¾ í(?¡`»¢ƒÙÔ@8#˜@8¾:@8 >+?µÒŽ×Óè?Ñ»­, é?‘w×vHf@8Î÷@8i§@8Å?¹ñÒ—#‡?Ú‘ý—L'?š^}\Б@8 * @8p÷@8¶?´óî÷Ôþ?«] óºä@@2@*?ð?ð?ðøøøøøøøøøøøøB@£sèõÂ\@£sé7Kƨ@£sèõÂ\@£sç ù l@£sèõÂ\@£sç“Ý—ö@£sèõÂ\@£sç®zà@£sèõÂ\@£såo@£sèõÂ\@£sâœwšk@® ¹Û"Ðå@® ¹Û"Ðå@® ¹Û"Ðå@® ºu%F@® ¹Û"Ðå@® ¹Û"Ðå@® ¹Û"Ðå@® ¸y=Ù~@® ¹Û"Ðå@® ¸Ôýó¶@® ¹Û"Ðå@® ¸y=Ù@3IÎ_oÒ@3IÇy¦µ @1xr° Äœ@1xl"h Ô@1"-V@1!Î_p@0Åœàu÷@0Â䎊qÞ@0Åœàu÷@0à àÞÒ‰@0Åœàu÷@0Ã@N¤¨Â?žˆ2}?]àÛ‘?‘ê ÷“'? Ìç,Z?‘u×íËÄî?‘·díW‚?|¬Çëý ?’Q_Ú¸FN?‘}7ˆ.Ñ?‘Ò–¬q?‘Uç·Býi?ó‹P=´?‚nâwfÿ?ŒïQ¼º“ã?‚Ö˜>µDá?ƒ¼9XNÄu?‡×7°º?ˆk! ¨l@@@@@&@&?ð?ð?ð?ð?ð?ð¿Ríü®¿3…*‚?0ÿòiÒT?]XØ—&Â@£sæÙ;ž0@® ¹')Ĩ?PÖCÃ\i™?4#ŠÅµAr?©8ù¸(q?s[Pæƒ@ŸgrC 0@C@©¥ãSø@©dZ¬@©¥ãSø@©5?|î@©¥ãSø@©!£n.²@©¥ãSø@©ã¼Ó\@©¥ãSø@© žƒä'@©¥ãSø@©ÊW§‡@©±ñ©ûçm@©±ò° Ä@©±ñ©ûçm@©±éxÔýô@©±ñ©ûçm@©±àhÛ‹¬@©±ñ©ûçm@©±ýó¶E¢@©±ñ©ûçm@©±åãS÷Ï@©±ñ©ûçm@©±ê™0¾@6Hè§æ@6}Vlô@3}‘hr° @3}‘hr° @3{Ƨï²@3|wškP±@3‚@·€5@3œwškQ@3‚@·€5@3䎊qÞ@3‚@·€5@31&éxÕ?1·†Æjñ?*£|3Né?‘ÄÑ ø?•oÕ=\<Â?–~9n4ºÀ?ž»‚>äÚ>?€‚ñêã ?’7Îf¬ps?üÓqÔN‰?”Â1`´? CÚ B÷?Ÿ¥O[õÆ?‚nâwfÿ?pù51íÒ?–EÑ~?ŒžVE’D? ã΋÷ÑN?ŸHF!œ6²@@@@@,@(?ð?ð?ð?ð?ð?ð¿e„Y?n¿Ac]Ðx?D… ¯ÜH~?c’0-©—@©®»ÿ\@©±òz ˜œ?br“cP‰?ZÝÞ£á¯?ÆYÙ±¾@ÎÜfÀÎ@ŸcÌ -°4@D@§ÝG+ J@§ÝFffff@§ÝG+ J@§ÝFÂ&€ž@§ÝG+ J@§ÝGÕfÏB@§ÝG+ J@§ÝCn—@§ÝG+ J@§ÝJ¦L/ƒ@§ÝG+ J@§ÝIîËû@§àÐå`A‰@§àÒ-V@§àÐå`A‰@§àо í*@§àÐå`A‰@§àÎV“@§àÐå`A‰@§àÑhr°!@§àÐå`A‰@§àʦL/„@§àÐå`A‰@§àÏß;dZ@7¥öý!ÿ.@7ªÍžƒä&@3)‡+ @3)0¾ í(@2`A‰7L@21&éxÕ@1î_oÒ @1ï4Ö¡aå@1î_oÒ @1ë’:)Çz@1î_oÒ @1êxl"h -?š•§q!U?‘_¦X ë -?”P"ÒhI?î®)„àµ?”äPÚ=æ?‘ø)±'3?–ªÎ­¡?“H¼k#è?’Qÿc -?iêhAÜ?“ðÐ ?“.½þ¹Š?‡z"2Úù(?7'în‹K?†aÞàI*•?‰®ðúcåZ?Œ¸ðËb?“ )D)@@@@@*@,?ð?ð?ð?ð?ð?ð?UMX=x¿MÕóžô?TFÏIëÿË?PsRž¿“ç@§ÝF° Jl@§àÏÎ|?n 3,Vÿ|?jæV ß*;?ÔÜçé°ÊÁ?Ï…œÆÌž@Ÿm¦üã4@E@¨Å¸Qì@¨Óˆæ¢å@¨Å¸Qì@¨éÂkX@¨Å¸Qì@¨à¯75@¨Å¸Qì@¨Û+ñ¦L@¨Å¸Qì@¨Ïdèål@¨Å¸Qì@¨Õ[~„.@™ct¼j~ú@™cžþö;(@™ct¼j~ú@™c‰DªnÏ@™ct¼j~ú@™cw¨^Æ(@™ct¼j~ú@™cm…*©J@™ct¼j~ú@™ckƒËe@™ct¼j~ú@™cnRãßã@8Î쿱[W@8Ã(õÛ’P@3”›¥ãSø@3‚6=ÐC@2q‰7Kƨ@2f]Ñçùb@1«xFÜ^@1¢ãa+èE@1«xFÜ^@1¢0¸ÙÆL@1«xFÜ^@1£*GQ†ˆ?†Dʯθ?™u‚3ßËv?•E&Ê?£üy?”´äØ÷ô?—Óöœ´%±?œÆæXÆd?•ññì4?‘1Í»?,?·:ÁÌÙ?’2%õ“ô?’Æ8 -$?³ØÇ’}’Ÿ?“(tíl­?… ‘gz?†ÔgKâê?ˆšsÓß ö?‹Fü¶u@@"@(@&@8@5?ð?ð?ð?ð?ð?ð?1ÀK¿q:×ö(À?W€?Ä€»?bÙ¶Þ7^«@¨ÕKî…†@™cvZb¤;?yRÔT˜;?|ˆX¡´ª?îqjZ‡?ðAn]oV@Ÿl Ó1£ä@F@¡v"MÒñª@¡v!ÊÀƒ@¡v"MÒñª@¡v#,¥zw@¡v"MÒñª@¡v"\(ö@¡v"MÒñª@¡v!ÿ.Hé@¡v"MÒñª@¡vË’:*@¡v"MÒñª@¡v" Iº^@­l‹C•@­l1&é@­l‹C•@­m5¨Xx@­l‹C•@­m(Œç@­l‹C•@­lÙè>B@­l‹C•@­l~($ @­l‹C•@­m(Œç@4šÔ,<Ÿ@4lô!.@0R Iº^5@0R×sü@/ØÔýó¶F@/؆YJôñ@/G“Ý—ö,@/F¸ºÇ@/G“Ý—ö,@/FéxÔýô@/G“Ý—ö,@/Gï²-?|¬Çëý ?Čۨ1A?‘"žæÆó¡?Œ:Z2‚b?‘,IÝ Áé?¾ƒìÈÁ?}Ñ¿ž,?’j%ÓRa?ŠA)Nîá?>\‰å‘?çêÑHcÇ?Uÿyu”#?‚‹¡8*ùÿ?)‰€Zw?‚˜YªüÏF?ƒE 8?†Ë¢L1Ù?ˆA0û)n@@@@@*@$?ð?ð?ð?ð?ð?ð¿oqQ?*{:ëÀ?-÷t{ Ћ?±EÙMž@¡v!)L@­l|Øù?Møì¯ø‰?/GîñÎÉ|?¨, Sˆô?hêé¡Ñý@Ÿg¯IzA@G@¤o)xÔýô@¤o)º^5?@¤o)xÔýô@¤o)Dg8@¤o)xÔýô@¤o)ã¼@¤o)xÔýô@¤o.—Oß@¤o)xÔýô@¤o) 'RS@¤o)xÔýô@¤o)îËû@ªëbMÒñª@ªëh´9X@ªëbMÒñª@ªë`·€4n@ªëbMÒñª@ªëem\ú­@ªëbMÒñª@ªëg“Ý—ö@ªëbMÒñª@ªëe”¯O@ªëbMÒñª@ªëhK]Ìc@8–šÔ,<Ÿ@8š’£S&@3ahr° Ä@3`4mÅÖ8@3,j~ùÛ#@3+ŸU›=@2«6z‘@2Ùb¶¯@2«6z‘@2i­BÃÊ@2«6z‘@2ã¼Ó[?’Óusÿ\Ã?’‚€‡d_s?œ -¦ÃDþ?‹ÝÉ!ë#?‘‘n{ÆäK?‘îƒÔ1a?¯oÝ ÷6}?•\´jÒË?– íÇyz?@§[*^?‘c3¸cÜ(?’ ÃCÀ`ú? ânIð?’|׿pZ?“²pÅâ-Ý?†Á{0Ÿà®?‰/ã̽`ª?Œ˜ˆTÙ8ª@@@@@(@(?ð?ð?ð?ð?ð?ð¿# -g ¾Õcú?O»˜™Ö@^?Gæ!1€ÚN@¤o+nП$@ªëg/ iƒ?k—äÿ×?ZªË_IÄš?Ó†qíý¬ ?« ‰oÑ@ŸpHZ£Cº@H@¡p$Ý/@¡pG®{@¡p$Ý/@¡p‚ Iº_@¡p$Ý/@¡pohÜ@¡p$Ý/@¡p–R½<@¡p$Ý/@¡p¤?åÊ@¡p$Ý/@¡pË’:)@ e#S÷ÎÙ@ e#•%@ e#S÷ÎÙ@ e"Ðå`B@ e#S÷ÎÙ@ e!aä÷f@ e#S÷ÎÙ@ e"œwšk@ e#S÷ÎÙ@ e"\(ö@ e#S÷ÎÙ@ e"&€I@2žHè§æ@2ž.±Ä2Ë@-€A‰7KÆ@-€IQ‚©@-¿;dZ¬@-À[À6ã@-fL/ƒ{K@-gÕfÏAò@-fL/ƒ{K@-i*0U2b@-fL/ƒ{K@-hÛ‹¬q?É^³Dw'?Ì&ÏøHÃ?‘(¥¿á?‹ä†€{6è?ÿ £‰¸9?ÍàÊaùX?ÐbV‡,?’j%ÓRa?„¦Ô•]I?e”[|ú(?øóéM Ÿ?r¼Jsž?€‘:9”?Œ°¶.Ä+Æ?‚¯­Ù¤Á¶?‚ôhBì^?†Ë¢L1Ù?†¼Š˜L¥÷@@@@@*@(?ð?ð?ð?ð?ð?ð¿KS½ý¼¿)z@{?4!ÊK×p?þØQ8-@¡p€y̸à@ e"vR·Ú?CQ—‘Zòø?!÷Æ—%?‚!¨÷ñr–?;¸&•bä@ŸsÆ04è@I@­Ç`A‰7L@­Ç`ƒn™@­Ç`A‰7L@­Ça‰7KÆ@­Ç`A‰7L@­Ça‰7KÆ@­Ç`A‰7L@­Çb Iº^@­Ç`A‰7L@­Ç^Åm\ü@­Ç`A‰7L@­Ç_ö”F@¤[° Ä›¦@¤[°bMÒó@¤[° Ä›¦@¤[°‰ 'R@¤[° Ä›¦@¤[°¸»@¤[° Ä›¦@¤[°Ë)^ž@¤[° Ä›¦@¤[°°ò{³@¤[° Ä›¦@¤[°bMÒò@304mÅÖ8@30A‰7KÇ@.ëÆ§ï²@.ë¬q ²”@.éxÔýô@. ù kº@-…oi@-…m\ú¬Ù@-…oi@-…S&Á½@-…oi@-…m\ú¬Ù?|öOÿÝ?ÖÈ ¼?‘=?ùKh?‹×lÇ…N9?‘ ·èf?È2I/?|öOÿÝ?’ ,øÕC©?–ÐO(·Š?Y‡…—Ø?ÝIMÎ?r¼Jsž?‚q6tNø6?Œ».êxóÚ?‚2Y0âµ?‚ù8 ±^?†špk Y?†špk Y@@@@@*@,?ð?ð?ð?ð?ð?ð¿,‹ô ?Ê5€?5Õ”Z]4c? ©Ü½b R@­Ç`>Ð@¤[°€ëò?U»ñÏ$?*&"VÞí?¹‘x%ŽŒµ?a¡ŠK‰@ŸfúÄÙ|@J@¯ß¥ãS÷Ï@¯ß©ûçl‹@¯ß¥ãS÷Ï@¯ß¤Z¬ @¯ß¥ãS÷Ï@¯ß¡G®{@¯ß¥ãS÷Ï@¯ß hÛ‹«@¯ß¥ãS÷Ï@¯ßÙb·@¯ß¥ãS÷Ï@¯ßæšÔ,@¤¼ß;dZ@¤¼àA‰7L@¤¼ß;dZ@¤¼ä2ÊW¨@¤¼ß;dZ@¤¼Û˜Çâ‚@¤¼ß;dZ@¤¼Û~ÿ—@¤¼ß;dZ@¤¼Ú–¼@¤¼ß;dZ@¤¼ÛdZ¬@6ëµsê´@6èbMÒò@2‚° Ä›¦@2}ŠÚ¹õY@1Æ“t¼@1° Ä›¦@1!:’£S@1«ŸU›=@1!:’£S@1îcŠ @1!:’£S@1¾ß¤@?‚á²Olºü?½Ë9ØŠ§?“ýª‘À?‹¬àÌ’Ç?•òJj~u?•Þ©qk#?ˆÿÀ)T¿Æ?’p RN%Î?’¤šÜI«?£û,Ɇ?”Ï#:d ?“t‡o(ÚÊ?†Æ‹™þ?3ßa=„?ˆdÁ --?ƒÈGó?ˆ0&YÊEd?«e(Os@@@@@,@,?ð?ð?ð?ð?ð?ð¿gŒ3Ö¿SúŒ­?=yþ |%?6ö:@KÏ@¯ß¢ÂìN@¤¼Üø9†š?\Ö˜e®$X?Vc5*iÃ?½æ£)ãÒ?­y°Ù$ @Ÿh”PˆÒ@K@ŸËƧïž@ŸÊ=p£×@ŸËƧïž@ŸÌÌ2cæ@ŸËƧïž@ŸËêeÂ@ŸËƧïž@ŸËÿÏÞ`@ŸËƧïž@Ÿȱ¥AÀ@ŸËƧïž@ŸÇü¹#£@¤H¾vÈ´9@¤H¿hÃY@¤H¾vÈ´9@¤H½2þ³—@¤H¾vÈ´9@¤H½+Ú@¤H¾vÈ´9@¤H¾©R/ @¤H¾vÈ´9@¤H¿&ëÔ@¤H¾vÈ´9@¤H¿/6vY@5 xFÜ@5ÇÉÖÚ@.kƧï²@.lˆKÜk=@-Ó¶E¡ÊÁ@-Ô«¾_KÀ@+£¼ÓZ…ˆ@+¥)_­µ´@+£¼ÓZ…ˆ@+¤ I?’@+£¼ÓZ…ˆ@+¤Ç l?|Ñb×¶@?âÂyßði?‘&°!­R?‹±V­{À?êÃËT^?½6m*wÓ?}x—™?‚òs°n?†y €¤Y?†‘"‘Fùá@@*@(@,@7@9?ð?ð?ð?ð?ð?ð¿!¿_$À¿E4€?)Cñʽ!?-@ŸÉæPÊÏ@¤H¿1ÿž‡?I/ñ#J:?3L$R©ï×?¡Bë Ü ?s"Àªq@Ÿgf`Š„@L@¨w¨r° Å@¨w¨r° Å@¨w¨r° Å@¨w© ªŸ@¨w¨r° Å@¨w©IŸu(@¨w¨r° Å@¨w©2ÂùZ@¨w¨r° Å@¨w§tœ&ñ@¨w¨r° Å@¨w§•fýŠ@– -V@– -‘hr°@– -V@– ,‹C•@– -V@– ,p¥t@– -V@– ,œŽg@– -V@– ,@Ò&R@– -V@– ,Ùè>B@/úu%F -@/úu%F -@)Š~ùÛ"Ð@)Š`º†‰°@(S¶E¡ÊÁ@(SŠ;WÄã@'½Vlô"@'½ÈK]Í@'½Vlô"@'½ÈK]Í@'½Vlô"@'½ã¼Ó[?É^ž6õP?Á±¼Ç l?‘õ?‰?‹®úÄD?èäî‰s&?³Ò4Q™?ÐbQë„›¦?’ªK‹}?€qÀñΪ?2j)Å6e?μšjH0?L5–S€k?€bMÕ]f?Œ¬ŒîP0?‚pDøïRh?‚ãáÞ×N?†ˆŠ_cd?†‡î8‹ž'@@(@,@&@:@9?ð?ð?ð?ð?ð?ð¿H~_â?ªÜð?2#—‚¨?‚íZSÏV@¨w¨3öe@– ,’´.?Apö^‡¤ù?%M'¢»\?}ïâÎó!?CïÏqgJÜ@Ÿs Æûž@M@Ÿe¬1'@Ÿe2ÈÍå@Ÿe¬1'Á.„€@Ÿe¬1'Á.„€@Ÿe¬1'Á.„€@Ÿe¬1'Á.„€@Ÿe¬1'Á.„€@\ñ©ûçm@\û"Æiô@\ñ©ûçmÁ.„€@\ñ©ûçmÁ.„€@\ñ©ûçmÁ.„€@\ñ©ûçmÁ.„€@\ñ©ûçmÁ.„€@7·â‚@·€@7¡XGmI@2õãS÷ÎÙÁ.„M‰ûçm@1©Û"Ðå`Á.„QnÙ‡@1Vý!ÿ.IÁ.„NÜC,¥@1Vý!ÿ.IÁ.„NÜC,¥@1Vý!ÿ.IÁ.„NÜC,¥?‘ÀQ.K†ä@8#˜@8¾:@8 >+@8Iç@8Ù?š™»ŽÛr@8Î÷@8i§@8Å@8S@8û—?§kZ—‘™@8 * @8p÷@8¶@8 Ø@8 Ø@ ?ðøøøøøøøøøøøøN@£t‰7Kƨ@£tŠ~ùÛ#@£t‰7KƨÁ.„€@£t‰7KƨÁ.„€@£t‰7KƨÁ.„€@£t‰7KƨÁ.„€@£t‰7KƨÁ.„€@“D@“Cýp£× -@“DÁ.„€@“DÁ.„€@“DÁ.„€@“DÁ.„€@“DÁ.„€@1D¯O „M@1AA [À@-”¼j~ùÛÁ.„M‰ûçm@,›dZ¬Á.„QnÙ‡@,Vð¸»Á.„NÜC,¥@,Vð¸»Á.„NÜC,¥@,Vð¸»Á.„NÜC,¥?É`¤~E @8#˜@8¾:@8 >+@8Iç@8Ù?ÐbQë„›¦@8Î÷@8i§@8Å@8S@8û—?¡çL¤@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøO@¢®$Z¬@¢®#•%@¢®$Z¬@¢®,cñA @¢®$Z¬@¢®*W§†Á@¢®$Z¬@¢®8­«ŸV@¢®$Z¬@¢®1Å@¢®$Z¬Á.„€@§gG+ J@§gG®zá@§gG+ J@§gD“t¼@§gG+ J@§gB¶®}V@§gG+ J@§g;=ÈK@§gG+ J@§g6‡+ @§gG+ JÁ.„€@35S&Á¾@33&Á½¤@1½‘hr° @1¹ÀëíúD@1U`A‰7L@1LPHð@0‚@·€5@0Àù k¹@0‚@·€5@0¾¾ß¤?æ@0‚@·€5Á.„NÜC,¥?|öOÿÝ?‘+ùÔ!½Š?ž1ï3Î??F‘q/b?šµV0o~8@8Ù?|¬Çëý ?’HGªÂÛ^?”Qä\‰Õ?‘< /0ç˜?“ÀVâŸì@8û—?‚† SFñ?i-ý-›…?ŒArUãA?•q$¨_54?•@¼Cк@8 Ø@@@@@*?ð?ð?ð?ð?ðøøøøøøøøøøøøP@¢ÿ$Ý/@¢ÿŠÀƒp@¢ÿ$Ý/@¢ÿ£n.²@¢ÿ$Ý/@¢ÿTÉ…ð@¢ÿ$Ý/@¢ÿ‚ø7´¢@¢ÿ$Ý/@¢ÿ€ªdÂø@¢ÿ$Ý/@¢ÿ~쿱[@®íºáG®@®íÄZ¬@®íºáG®@®í·ÎÙ‡@®íºáG®@®íº)Çy§@®íºáG®@®íº)Çy¨@®íºáG®@®íº¹õY´@®íºáG®@®í¼¹#¢œ@8L]cˆe”@8N;Í5¨X@2+¥ãS÷Ï@2*çÕfÏB@1t“t¼j@1sñA [À@0cÉîËû@0c¯·éú@0cÉîËû@0dzáG®@0cÉîËû@0c¯·éù?­éW«ZM›?]àÛ‘?‘ÓKñá»Ù?ŒvHn&³?ç\Š2˜?‘£‡9²þ? Eˆ‡ðó‹?“ÈÂ`?“ |ɽ‡?Œ°1Ù?‘ ^Íü?ÿ?ó‹P=´?¯x“Jß?ŒïQ¼º“ã?ƒ´],m=?ƒE 8?†å·ÑfWà?‡´*žZ}Õ@@@@@@"?ð?ð?ð?ð?ð?ð¿`0Ü[£¿MÆg'”?1? ‹6?T%ô R@“@¢ÿ» Dë@®í¼l;ò?B»'ª#½Û?keôr2—O?€WóxZx?Ñ4cÌBM6@Ÿp˜„&»U@Q@«_ûçl‹D@«_û¥ãSø@«_ûçl‹DÁ.„€@«_ûçl‹DÁ.„€@«_ûçl‹DÁ.„€@«_ûçl‹D@«_øÔýó¶@«_ûçl‹D@«_ùÛ"Ðå@¯ŽG®zá@¯ŽDZ¬@¯ŽG®záÁ.„€@¯ŽG®záÁ.„€@¯ŽG®záÁ.„€@¯ŽG®zá@¯ŽB Iº^@¯ŽG®zá@¯ŽG®zá@6L]cˆe”@6JqÞi­C@2Lí‘hr°Á.„M‰ûçm@1¤¼j~ùÛÁ.„QnÙ‡@1 ¿±[W?Á.„NÜC,¥@1 ¿±[W?@1¸Që…@1 ¿±[W?@1 -–»™?žˆ2}@8#˜@8¾:@8 >+?ðŽºJ+½?ð‹Ið˜ ?„F/·ÿP5@8Î÷@8i§@8Å?ðÅìq?ð„‰p„Ã?ƒ]€µ,VÞ@8 * @8p÷@8¶?ð?oÚ•¼?ð?oÚ•¼@?ð?ð?ð?ð?ðøøøøøøøøøøøøR@ªýp£× -@ªýó¶E¢@ªýp£× -@ªýæšÔ,@ªýp£× -@ªþÅm\û@ªýp£× -@ªýIQ‚ª@ªýp£× -@ªý—ö+k@ªýp£× -@ªüú¬Ùè@ª’Rn—P@ª’Rñ©ûç@ª’Rn—P@ª’S@N¤©@ª’Rn—P@ª’SÃa@@ª’Rn—P@ª’RÊW§‡@ª’Rn—P@ª’S×Ûõ@ª’Rn—P@ª’R䎊s@3kµsê´@3k'»/ì@/på`A‰7@/pò{²þÅ@/*Àƒn˜@/*0U2a|@.`ªdÂù@.9XbN@.`ªdÂù@.záG®@.`ªdÂù@.¯O „L?|¬Çëý ?Òç{íj?‘1f_¨Ï÷?Œݶ\ñr?òǹíT­?È2I/?|¬Çëý ?’0nà=Q“?–ÐO(·Š?@§[*^?îCq$u?–’+¸¢d?‚uÞ@>N ?Œ¸†‡ÄÅ?‚¸“Îè ø?ƒ†+ Å?†£îž«î?†Ë¢L1Ù@@@@@*@,?ð?ð?ð?ð?ð?ð¿&ŽKÙ@? 7ò? ­%̓)1?Ó0þƒVË@ªý‘¾›@ª’S^ÈB?+ ¬¥.?2*–åì?d±•+8¯é?qª†’ñ@ŸfåfX$Ã@S@¡H›¥ãTÁ.„€@¡H›¥ãTÁ.„€@¡H›¥ãTÁ.„€@¡H›¥ãTÁ.„€@¡H›¥ãTÁ.„€@¡H›¥ãTÁ.„€@žã¸Që…Á.„€@žã¸Që…Á.„€@žã¸Që…Á.„€@žã¸Që…Á.„€@žã¸Që…Á.„€@žã¸Që…Á.„€@9í¥œàvÁ.„>¤µÜÆ@5óS÷ÎÙÁ.„M‰ûçm@5.ùÛ"ÐåÁ.„QnÙ‡@4¡:’£SÁ.„NÜC,¥@4¡:’£SÁ.„NÜC,¥@4¡:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøT@¦ß;dZÁ.„€@¦ß;dZ@¦˜7´¢4@¦ß;dZ@¦—KƧð@¦ß;dZ@¦¡ÊÀƒ@¦ß;dZ@¦ª Þ@¦ß;dZ@¦­5¨Xy@Ÿ.áG®{Á.„€@Ÿ.áG®{@Ÿ.šu@Ÿ.áG®{@Ÿ.‹xFÜ@Ÿ.áG®{@Ÿ.š¬1@Ÿ.áG®{@Ÿ.‹’:)Ç@Ÿ.áG®{@Ÿ.‰7KÆ©@9Û¹Œ~($Á.„>¤µÜÆ@3Ìí‘hr°@3ÀIQ‚ª@3)Û"Ðå`@3’:)Çz@2ºÔ,<ží@2±°‰ 'R@2ºÔ,<ží@2·škP°ó@2ºÔ,<ží@2¸ Ô•+@8J¨?£-Ÿ56æ+?¢µ‰Š’b?•Ô¦?n¸?ŸrA:/™?›8½üãüÏ@8J¨?Á®æ’,g?®…á—{2Š?¥ŸÒ?¤pè·FÌs?¦ò CQÍ«@8p÷?žåÌÆöj?›Mf¸ ?”µ¨É™›Ò?¢2ðø:Uù?£R|à¹Ý@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøøU@¥´/²-@¥´/Òòå@¥´/²-@¥´0ú`P@¥´/²-@¥´09˜@¥´/²-@¥´0àœŒ%@¥´/²-@¥´./§Ia@¥´/²-@¥´/ÃÅ(ó@œY„“t¼@œY„›¥ãT@œY„“t¼@œY…Q¿¥Ù@œY„“t¼@œY‡‡ ù@œY„“t¼@œY†‹<”@œY„“t¼@œYƒ¤aG@œY„“t¼@œY†•ÐxÞ@4ð4mÅÖ8@4ïzhJ[°@0©‡+ @0©/Õ4]@0Ú~ùÛ"Ñ@0ÛP›%„ó@/a-w1Å@/b#¨ù-=@/a-w1Å@/a8‚‘*:@/a-w1Å@/až¥r?|çµB &€?Ù£šA±V?‘+m«7¡Ø?‹®´¤:Xv?‘/Æ[ap?´ž˜Û`?|Ñb×¶@?’ õ‘Ò?˜‘ð1¢!?1“œáí?è…F7*?Kö~½P²?‚qÑ9Ð?Œ½Ê À ?ƒmÃá6›`?ƒÞFÜà ?†ŠÇ¤E+?†‡gÓ¼c@@"@$@ @0@,?ð?ð?ð?ð?ð?ð¿è ? i¬€?0“Ü)‚¿?$-¯@…%@¥´/Á}ò@œY…+ƒ¡?Pfqw³a?D’>³Ýf?­¥4QòF"?–+O%ÒX@ŸfýÉËô@V@«§¶E¡ÊÁ@«§±©ûçm@«§¶E¡ÊÁ@«§¶®}Vm@«§¶E¡ÊÁ@«§¸Që…@«§¶E¡ÊÁ@«§·süQ@«§¶E¡ÊÁ@«§¶4ê@«§¶E¡ÊÁ@«§µsê³h@«Ö`A‰7L@«Öa$Ý/@«Ö`A‰7L@«Ö^ߤ?ç@«Ö`A‰7L@«Ö`·€4m@«Ö`A‰7L@«ÖaTÉ…ð@«Ö`A‰7L@«Ö^ߤ?ç@«Ö`A‰7L@«Ö_—$tT@7ÿ–»˜È@8¸Që…@1×+ Iº@1×RT`ªd@0ä¼j~ùÛ@0äêJŒL@0ý!ÿ.I@0ö”Fs‚@0ý!ÿ.I@0æšÔ,@0ý!ÿ.I@0Ë)^ž?«á¬å÷‰?ï1ïºÅ?‘âTÀÊS“?ŒªèkÜ?‘¾%î -ã?‘‚ÊŸû©?žˆ2}?’j•×›c?‘8“‡«G?á>G]!?ë,YÁ?‘A_f;j?–í -e˜›ð?GÚ -­ ?ƒ´],m=?ƒ ?ÿ½?†Ë¢L1Ù?†ïRÉv‘Ñ@@@@@&@*?ð?ð?ð?ð?ð?ð¿1üÏ(¿6M¹0?FÓóúAv -?)òô9v?¸@«§¶f± ²@«Ö_ýnn?Yºk¶Fð?PhPô¬Û6?®hKüÂld?ž9LÑ@ŸpÅ—ƒ~@W@ŸÍ["Ðå`@ŸÍXUGS"@ŸÍ["Ðå`@ŸÍUPôm@ŸÍ["Ðå`@ŸÍS˜œ¼@ŸÍ["Ðå`@ŸÍQ>Z[½@ŸÍ["Ðå`@ŸÍK¾½l@ŸÍ["Ðå`@ŸÍC“áN-@¡’‰7KÇ@¡‘ÿ|í‘h@¡’‰7KÇ@¡’0ÂßÏ@¡’‰7KÇ@¡’”(å@¡’‰7KÇ@¡’sJ'@¡’‰7KÇ@¡’ ®5ë@¡’‰7KÇ@¡’ªÌë@6¿–»˜È@6ÀÕ+1·@2©‡+ @2©ñyˆ@1È“t¼j@1Ç@ÌÁ³¸@1+xFÜ^@1%™™@1+xFÜ^@1$2Œ0Õ‹@1+xFÜ^@1$Óšð?¥¢É?‘Qì%±?’˜~dOÖæ?fb -YÀ,?’~¢7ix”?“Od·Bþ!?‚n—O߇?†{C%O]"?ŠF÷ÉÌ?Ž(¾„,!B@@(@(@,@6@4?ð?ð?ð?ð?ð?ð¿_ûáwt?W†£WZ?5þf©ÓD?Bj‘×À„@ŸÍOV?‹H@¡’>Áá¢?T3¢÷²8?c—Þ¡mÈ?¥»é«{ ?ÉAu8H@Ÿj.¢°@X@¦ë5?|îÁ.„€@¦ë5?|î@¦ë%çKë @¦ë5?|î@¦ë'ú›ü§@¦ë5?|î@¦ë$ŸÕJÎ@¦ë5?|î@¦ë"k6¥@¦ë5?|î@¦ë {(%@–Ä›¥ãTÁ.„€@–Ä›¥ãT@–é!$OC@–Ä›¥ãT@–²ÍgL¤@–Ä›¥ãT@–¬:öަ@–Ä›¥ãT@–œâðE‚@–Ä›¥ãT@–ûub%@8T xFÜÁ.„>¤µÜÆ@4ÎÙ‡+@4|¨žh¼@2±‰7Kƨ@2ªüo$Þ‘@2Š0U2a|@2†SKÒ@2Š0U2a|@2‡"ûæ@2Š0U2a|@2‡|>ö:@8J¨?‘õå'g?‘Ãiãtv ?‹ÒK! Å?“dô{B?“þ -ÞÓwú@8J¨?’‚ATa?’Š6·ë©?u°Ç8þ?•ÛÁäŸ?–Z`ªLâ@8p÷?³÷z\Ç?ƒzÆô¤?†KªwÀK?Ž7üÒÏ?Œ%dŸ](¿@&@"@"@;@:?ð?ð?ð?ð?ðøøøøøøøøøøøøY@¤×Oß;@¤ëƧïŸ@¤×Oß;@¤ÍÒñ©ü@¤×Oß;@¤ÐbMÒò@¤×Oß;@¤ÑÎ_@¤×Oß;@¤ÙÛ"Ðå@¤×Oß;@¤Ø}¿I@¤ãmV@¤ãkƧïž@¤ãmV@¤ãl/ƒ{K@¤ãmV@¤ãeðoiD@¤ãmV@¤ãnHè§@¤ãmV@¤ãl‹C•‚@¤ãmV@¤ãl篷@7Ì]cˆe”@7¾záG®@4i‡+ @4mÈK]Ì@3’Ðå`A‰@3™ÞÑ·@2á:’£S@2é0¾ í)@2á:’£S@2â×sü@2á:’£S@2æÜ]cˆf?–ªÎ­¡?œ;=?ªT?¤MD¢e?Ÿ½¼/õ?— -æÙõ¡? ­DIö½x?„F/·ÿP5?–¦ÆçŽ -?ž(?{k4?’ƾ| ?–%¥ê3–?˜6@(/ÇÝ?›˜tgiê?•è­¸‡?š?G'ôÜ?ϯ<«¬í?’÷ ¬n±?¾]M>s &@@@@@*@,?ð?ð?ð?ð?ð?ð¿q¼¨ˆû€?5VYX°?ahW$DGÐ?1`)~ˆ@¤Þ Ù@¤ãlÈD©j?€|~ÛYjl?R‚<5d?èà%;$­U? »g%ŽÎC@ŸiúÒE²ª@Z@¬¿^5?|î@¬¿^vÈ´9@¬¿^5?|î@¬¿_¼@¬¿^5?|î@¬¿_;dZ@¬¿^5?|î@¬¿^5?|î@¬¿^5?|î@¬¿]/Ÿ½@¬¿^5?|î@¬¿]—ö+j@®b Iº^5@®b ÌÌÌÍ@®b Iº^5@®b Iº^5@®b Iº^5@®b ²•éâ@®b Iº^5@®b /ƒ{J@®b Iº^5@®b ûµt@®b Iº^5@®b Ƨïž@3›¹Œ~($@3›¹Œ~($@/kƧï²@/k6z•@- ƒn—@-ŸŠ Þ@-Vð¸»@-UÜÆ?@-Vð¸»@-Uéá°‰¡@-Vð¸»@-U›=ÈL?|öOÿÝ?ß‹’bÏ?‘$Cê¡@í?‹ÝÉ!ë#?‘¾%î -ã?¼‚Ë¡K?|¬Çëý ?’NÛˆV(?ŠA)Nîá?]bËn~?Ó%y*£=?X78›š?‚oÁÆÜ§ö?Œ°¶.Ä+Æ?‚yî8Á$?ƒE 8?†µ°jÆÃ?†l&þ@@@@@"@?ð?ð?ð?ð?ð?ð¿+h/À¿+̾`?ƒò·\˜>à2S[j @¬¿^½ïZ@®b V›<Þ?3mÔÞJL?…~½D?to9Ðu‰ˆ? …ýb÷Ô@ŸföÝ8ó@[@§Çûçl‹D@§Çòn—P@§Çûçl‹D@§È -W§†Â@§Çûçl‹D@§È BÃÉî@§Çûçl‹D@§ÈÂø7µ@§Çûçl‹D@§ÇøQë…@§Çûçl‹D@§ÈË)_@¨jÒn—P@¨jÒ-V@¨jÒn—P@¨j³3333@¨jÒn—P@¨jÉk¹Œ~@¨jÒn—P@¨j·§†Â&@¨jÒn—P@¨jµY³Ð~@¨jÒn—P@¨j³©*0V@8*0U2b@8³Ð|„¶@3&‡+ J@3¯O „M@2H“t¼j@23n.±Ä3@1Œ¿±[W?@1|/ƒ{J$@1Œ¿±[W?@1y™™™™š@1Œ¿±[W?@1vµ '¼?¡EÉ@Ú? …BÓ÷ ¡?£ˆ‰•ýkç?‘¾®ªŸV?¨@t¾†~?˜úiêÔÇ?¦NIÉ®š?¢²Ö¤}Ð?¹ £qÅõ)?–ª'G_ßJ?µõÓâ$,? îê÷Ï!?£ešñS„‰?3ßa=„?“'ü#šgã?…®×__C?‘HAõY‚§?™ þg¿@@@@@*@ ?ð?ð?ð?ð?ð?ð?jß“¡]¿w [W?b”.Sg†?b^jêsò @§ÈΘ<ð@¨jºi¯þK?{ª&T>ØÓ?{‘)nÿƒ ?ã—³¯äV„?Ôúv¤º@Ÿl‰9ù¯@\@¤7¡ÊÀƒ@¤7p£× @¤7¡ÊÀƒ@¤7œPHð@¤7¡ÊÀƒ@¤7¤oi@¤7¡ÊÀƒ@¤7¢¶®}V@¤7¡ÊÀƒ@¤7žÒˆÎp@¤7¡ÊÀƒ@¤7Ÿò䎉@ ²“u@ ²!ÊÀƒ@ ²“u@ ²,1&é@ ²“u@ ²Cþ\‘@ ²“u@ ²Oß;@ ²“u@ ²z—@ ²“u@ ²òä@7„¯O „M@7…éá°‰ @2ã÷ÎÙ‡@2ÑA [À@1È“t¼j@1¿ß;dZ@1QÞi­BÄ@1Mžƒä%¯@1QÞi­BÄ@1OŠ Þ@1QÞi­BÄ@1P6âë? Eˆ‡ðó‹?Žd±Ìº?’måGSžq?:LÓá -í?“øâ#0ŸY?˜}>h”'?ˆÿÀ)T¿Æ?–gÝ3ýø’?‘F·ˆRX†à?‚˜YªüÏE?OéáÜtx?„„OW°ó?‘˜†Œ/ž?%üdêË?—ÂÔèÄè@@@@@,@,?ð?ð?ð?ð?ð?ð¾ã=|´¿idFùk?Pw ~Îíì?6mƒ,òH@¤7 ‹½Ç@ ²eÒ ‘?f©ÀIÖy?Wòòóóôõ?Áêz°r˜™?ª–®Ÿ{ØD@Ÿm7B’@]@¨<í‘hs@¨;FêVz@¨<í‘hsÁ.„€@¨<í‘hsÁ.„€@¨<í‘hsÁ.„€@¨<í‘hsÁ.„€@¨<í‘hsÁ.„€@šLÌÌÌÍ@šH´9X@šLÌÌÌÍÁ.„€@šLÌÌÌÍÁ.„€@šLÌÌÌÍÁ.„€@šLÌÌÌÍÁ.„€@šLÌÌÌÍÁ.„€@8Ô xFÜ@8ìDpˆ_@4sS÷ÎÙÁ.„M‰ûçm@4å`A‰7Á.„QnÙ‡@2n_oÒ Á.„NÜC,¥@2n_oÒ Á.„NÜC,¥@2n_oÒ Á.„NÜC,¥?–…­à Ø—@8#˜@8¾:@8 >+@8Iç@8Ù?«cnæçÅ€@8Î÷@8i§@8Å@8S@8û—?¾‚+;=ÑH@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø^@¦¸“t¼j@¦¸“¶E¡Ë@¦¸“t¼jÁ.„€@¦¸“t¼jÁ.„€@¦¸“t¼jÁ.„€@¦¸“t¼j@¦¸’n—P@¦¸“t¼j@¦¸’GE8ï@¯†k…¸R@¯†k…¸R@¯†k…¸RÁ.„€@¯†k…¸RÁ.„€@¯†k…¸RÁ.„€@¯†k…¸R@¯†k]Ìcð@¯†k…¸R@¯†k]Ìcð@1Ñ|ÚQ@1ÒˆÎp:ü@-á‰7KƨÁ.„M‰ûçm@,†éxÔýôÁ.„QnÙ‡@,³üPHÁ.„NÜC,¥@,³üPH@,³©*0U4@,³üPH@,³t¼j~ú?É_\p)Ï@8#˜@8¾:@8 >+?‘ ·èf?ÃwZL?ÐbMçê_x@8Î÷@8i§@8Å?Î ¯xV?Sñƒ´V.?‡çÐ4eè¹@8 * @8p÷@8¶?†£îž«î?†‰Oú|q@@@?ð?ð?ðøøøøøøøøøøøø_@¥ìå`A‰@¥ì–E¡ÊÀ@¥ìå`A‰@¥ìvâ8ª@¥ìå`A‰@¥ìopKQÔ@¥ìå`A‰@¥ìf -¦L0@¥ìå`A‰@¥ìçiöú@¥ìå`A‰@¥ìŒô;­ë@”VvÈ´9X@”VeU’ôV@”VvÈ´9X@”VÖ”¦GÎ@”VvÈ´9X@”V¹3mïÑ@”VvÈ´9X@”V½kÚ8`@”VvÈ´9X@”V­?ÙÙæ@”VvÈ´9X@”VˆÿÆÌ@8N쿱[X@8SŸ¦âßz@3õãS÷ÎÙ@3çĺÌ`[@2ìj~ùÛ#@2Þ†òïº@2³&Á½¥@2˜òZÒ¦H@2³&Á½¥@2žFAŒ$@2³&Á½¥@2Á?Ù¾ù?ª>­¹,Ì*?¦ºãOÎ_?§# -t¨®?¬˜v7Ê7|?™nVVª*V?¡)jgÆÃ¯?¢-CÁ]?§ž\À·ãç? å¿š"²~?¤ÛÏœÔ?¡ v¬òe\?© -ÉkÈ™ç?¦ýv´¸íV?œ™wEH?— ”¤Žn”?˜í±¨á‘?¦V¹y/s?•앸4ÿƒ@@,@,@,@5@6?ð?ð?ð?ð?ð?ð?!Kå P?yÚÅe@?y†ße?t£Îžû’@¥ì‹•È8^@”Všç/¹ÿ?“†½,ìA?“ËC%! -@þBô³õ?ý8“`j@Ÿm¢à²ÀB@`@§ …¡ÊÀƒ@§ ‹ I»@§ …¡ÊÀƒÁ.„€@§ …¡ÊÀƒÁ.„€@§ …¡ÊÀƒÁ.„€@§ …¡ÊÀƒÁ.„€@§ …¡ÊÀƒÁ.„€@¦0¬1@¦/½²-V@¦0¬1Á.„€@¦0¬1Á.„€@¦0¬1Á.„€@¦0¬1Á.„€@¦0¬1Á.„€@8wâ‚@·€@8*Ú¹õY´@4?|í‘hÁ.„M‰ûçm@3€å`A‰7Á.„QnÙ‡@3ÚQÎÁ.„NÜC,¥@3ÚQÎÁ.„NÜC,¥@3ÚQÎÁ.„NÜC,¥?»sW…Ç]â@8#˜@8¾:@8 >+@8Iç@8Ù?ÖwípÑ@8Î÷@8i§@8Å@8S@8û—?á×¢”H®'@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøa@ nÀƒn˜@ nÄû¤æ@ nÀƒn˜@ nËzƒ<Î@ nÀƒn˜@ nÖÏÇ@ nÀƒn˜@ nËøY¹º@ nÀƒn˜@ nÅK»7@ nÀƒn˜@ nÈ›òüQ@£©Â\(ö@£©Ë…¸R@£©Â\(ö@£©²'»Ÿ@£©Â\(ö@£©Ã˜¢@£©Â\(ö@£©¶‹ì¼#@£©Â\(ö@£©Ã.^@£©Â\(ö@£©¾êÄ?‡@7¥öý!ÿ.@7ŸåÉä@3Œí‘hr°@3˜²´«LK@2ñ‰7Kƨ@2ûÀ§Ã@2(è§æ›@2/߬Ÿo[@2(è§æ›@20¡ÆÂÉ @2(è§æ›@2/Óïípe?…ðE[i)?ä*§¶eÔ?’¡R¸ì»Ã?o³›¿ç?“côaК!?’½ÎŒ£#?~ì“?ÕÒJ?’¤]ŸøY?’±Nþw -?“…wæà¨™?“nÞë·Ñ_?‘žH³Õ2C?MœÅ…?“ª4SÐ?o;!†Rõ?‡úËRI=?Šåýëh9?‰ïY¯†õ@@ @"@&@9@7?ð?ð?ð?ð?ð?ð?Gù>œ¿h7cÀ¿?LV"…t"@¦læffff@¦l篷é@­å¤Ý/ @­å¥`A‰7@­å¤Ý/ @­å£¯·é@­å¤Ý/ @­å¤Z¬@­å¤Ý/ @­å¤¨ÁTÉ@­å¤Ý/ @­å¤¨ÁTÊ@­å¤Ý/ @­å¤oi@5?–»˜È@5@6âë@2+ Iº@2fffff@0ô“t¼j@0óMjP@0ºÔ,<ží@0»µsê´@0ºÔ,<ží@0º0U2a|@0ºÔ,<ží@0ºqÞi­C?|öOÿÝ?W[†?‘šÕU#?Uóú*˜?‘\Žýµ€7?Êëüâi{?}Ñ¿ž,?“Á4œÝi?„¦Ô•]I?· ÝûYÁ?‘&”T¦mÂ?hï,ðà?„m~Z_s,?GÚ -­ ?ƒ<Õp?ƒ3¸Î{Z?‡ã ËÄž?‡2[síç@@@@@*@$?ð?ð?ð?ð?ð?ð¿Ϫ5À¿(”üÛ€?Ý“ãHv>þ -`ý‹z@¦lç!å‰Ù@­å¤òÓ¬Ó?8ôœWE«?´ ß²N?€Y”òê-Ä?G•KõÃ÷@ŸgªY@c@Ÿææffff@Ÿææffff@Ÿææffff@Ÿç4mÅÖ@Ÿææffff@ŸæèÓüÅ@Ÿææffff@Ÿæã¢œw™@Ÿææffff@Ÿæßº‰Úµ@Ÿææffff@Ÿæßú ð‹@£;Ÿ;dZ@£;Ÿ;dZ@£;Ÿ;dZ@£;­¡¦Øó@£;Ÿ;dZ@£;–¦k³f@£;Ÿ;dZ@£;˜âe,@£;Ÿ;dZ@£;™»‰>×@£;Ÿ;dZ@£;› 9Sg@2wâ‚@·€@2wåÉä@0µãS÷ÎÙ@0ÄHt±P<@0q‰7Kƨ@0výá¡Ú@/á-w1Å@/â&€IR@/á-w1Å@/ëS†M@/á-w1Å@/æ±l\?É^ž6õP?ÑwæaGÄ?‘Ö·øHkÖ?Ú¾ÉÛ²º?‘)ÕCŸ3²?‘gúÉœY^?ÐbMÝn½?’%l ÇZ?“¸¹R*ò?‘§›ßÉîj?‘[w}^ʨ?‘#q·¥A?€bwÄ' g?Œ»&&Y?„æ €ÛÑ¿?†O.ce?ˆ7kPÍz¿?а­ÈÇ­7@@@,@@9@7?ð?ð?ð?ð?ð?ð¿L®‚`?L«dÔk€?3Ðc±0‹?2‘è¿èþ’@ŸæáW}°t@£;™Î‘â?Bâ@Û¹?Ai3›ù?ô„6 3z?w¯/ c¬#@Ÿs5pP @d@£Óª~ùÛ#@£ÓšáG®@£Óª~ùÛ#@£Ó©ÞÓ@£Óª~ùÛ#@£Ó§Ë)_@£Óª~ùÛ#@£Ó­5¨Xz@£Óª~ùÛ#@£Ó¨Ë’9@£Óª~ùÛ#@£Ó©º^5?@©KƧïž@©Hr° Æ@©KƧïž@©KƧï@©KƧïž@©O'»/ë@©KƧïž@©PË)^ž@©KƧïž@©O–»˜@©KƧïž@©OŸ¾w@8*0U2b@8œwškP@3xr° Äœ@3zÍžƒä&@2±‰7Kƨ@2µ¨Xy=Ú@2J0U2a|@2L²•éá±@2J0U2a|@2L(õÂ\@2J0U2a|@2K’:)Çz?¡EÉ@Ú?•@K/Ùz?“1‘´¹V?ŒÇQ´ž¬ˆ?‡»¢Øˆ‹?‡W·ŽA:Þ@8 Ø?¾Á{þÆ%@@@@@&?ð?ð?ð?ð?ðøøøøøøøøøøøøf@¯—2-V@¯—•ÂÞ¯9@¯—2-V@¯—4~‹f7@¯—2-V@¯—09 r@¯—2-V@¯—5 SÖ,@¯—2-V@¯—1¨*Ï4@¯—2-V@¯—0å`A‰@”˜~ùÛ"Ñ@”˜ A‰7K@”˜~ùÛ"Ñ@”˜xœÁåO@”˜~ùÛ"Ñ@”˜sBÝñ@”˜~ùÛ"Ñ@”˜uMU@”˜~ùÛ"Ñ@”˜yQù²@”˜~ùÛ"Ñ@”˜|¹Ãƒ@8­¥œàv@8 šD@2Ê^5?|í@2Á÷ÞA¾è@1©Û"Ðå`@1¨t{û†@0¸DЩ*@0¶$31@0¸DЩ*@0µÎÈì±”@0¸DЩ*@0µéÌdä?Ó%Û2)ž`?>™k^Ú?‘žUw³ÿ&?‹Ó²Ãég?‘(e±­ ­?ãÎ?ay?Ær4?’m:ûx'?‘ÿ7›ýùì?qHõO?‘,Ð^þÚ°?›ôÃËÁ9?ëC ãs¹?€¶ÍÅ?„ |Ð~?ƒ[yמíG?‡X¶ yäa?‡AShŠU@@$@,@(@9@4?ð?ð?ð?ð?ð?ð¿bNaI?`XÍó ?`GŸì³?XY’¥ØÊæ@¯—2æT[Ï@”˜x!*é?o!Æë„=?gT`¡Es?×[Å¥ h?Ç'£Yƒ_þ@Ÿs …ý#@g@¢€@¢€ƒn˜@¢€@¢$Ý/@¢€@¢‚&€H@¢€@¢‚@·€4@¢€@¢€IQƒ@¢€@¢Ø­«Ÿ@­Ñë…¸@­Ó3333@­Ñë…¸@­Òñ©ûè@­Ñë…¸@­Ò½<6@­Ñë…¸@­Ò½<6@­Ñë…¸@­ÑÞi­C@­Ñë…¸@­ÒGE8ð@7ÖšÔ,<Ÿ@7Ú¬1'@2 Ä›¥ã@1ÿìVÕÏ«@0ö§ï²-@0÷¯·é@0‘Þi­BÄ@0’©“ àß@0‘Þi­BÄ@0’ÊW§†Â@0‘Þi­BÄ@0’ò䎋?Œs¤DÅÐ?ZÁ».œ?‘ÄÑ ø?ŒôƒA˜c ?‘¿ÐÅu?‘W×ý°A?1·†Æjñ?’,ö´´Ï#?™Îd0RÜ?‘.“¥?‘ ÛÌÏõA? êBÐ8ã?† - Ðló\?Å9–o?‚ù…žÄ`x?ƒGϵ¨í'?†µ°jÆÃ?‡×7°º@@@@@$@(?ð?ð?ð?ð?ð?ð¿Eݺ ¿.€X@?6ÑIÈÍ?¼1t2'V@¢€ç…Q)@­Ò™<ñ ?T6¯‡ŸkÈ?2\šbýŒ?ªätöåvd?l<#9œ@Ÿjl‚¦¦@h@«ÐËÆ§ïž@«ÐÒn—P@«ÐËÆ§ïž@«ÑnµË§@«ÐËÆ§ïž@«Ðä!›7ý@«ÐËÆ§ïž@«ÐÜàuk'@«ÐËÆ§ïž@«Ðäfãfn@«ÐËÆ§ïž@«Ðßv$ñ@™úâMÒñª@™úèsüY @™úâMÒñª@™ûüõ‘@™úâMÒñª@™ú莀@™úâMÒñª@™úÿ›=AÛ@™úâMÒñª@™úù‡Úó@™úâMÒñª@™ûË7Ç@7Y*0U2b@7[°™X"ö@4Ò Iº^5@4¶…ßF M@3²-V@3ºÁÞcç@2Þ«6z‘@2Í”³J˜G@2Þ«6z‘@2ÎõÐK—@2Þ«6z‘@2ÎÛçõó?’ÌRû ã?›/¾’sµ?›3ÒsLý¦?1ň_?8U`¦¸ÿ?–Ñh<Žw?|¬Æ Væ?™6عÊÓ?•ÍIé^?”9(GÂ|–?šaˆ£mü2?™›G(Žy?)hä¤ù%?–ûzמÈ?ïÜr!¹1?†²2bê§?ŒÝïâå¬?’—h÷aÇÒ@@&@(@&@9@4?ð?ð?ð?ð?ð?ð?iV T?gÇÎT?Nþ€Œ“,?DÐwY}Qá@«ÐÛ*ÏG@™úöæ¿X?j2fQŠi?g %ìüÞR?ÍÉ¥@˜€?ÉP<˜Ôß<@Ÿhê¦Ø'„@i@¡’p£× -=@¡’o\(õÃ@¡’p£× -=@¡’Vz—@¡’p£× -=@¡’[quŽ"@¡’p£× -=@¡’QuŽ!–@¡’p£× -=@¡’KC,¥@¡’p£× -=@¡’Fµ (@©ù4¼j~ú@©ù4záG®@©ù4¼j~ú@©ù)ÞÒ@©ù4¼j~ú@©ù,1&é@©ù4¼j~ú@©ù&Ü]cˆ@©ù4¼j~ú@©ù#n—Ž@©ù4¼j~ú@©ùOv_Ù@5µS&Á¾@5´êJŒL@2; Iº^@2?·éùr@1±‰7Kƨ@1¯;dZ¬@1YŒ~($ @1U®æ1ø @1YŒ~($ @1YÞѸ@1YŒ~($ @1Y 'RTa?1·†Æjñ?šÏD²öå ?•Mq —¦?˜Ë=ð½ìÔ?’Þäi]i?™zÀnÝÿ?1·†Æjñ?™Ú"üT÷î?’t-Eü?“¶Ì¶Öj”?”îC¯·æo?’ω:hT†?†' -³}÷B?™:K²ïÏ?ˆT“Ÿÿ?’aP¸¾¦Ö?Ž .0åv?‹&¸ê±fÂ@@@@@(@*?ð?ð?ð?ð?ð?ð¿‚bž§@¿r’Úš–?IgZDL0?+7Á¼o@¡’]°—R@©ù+In`?höÇè‘ÝŠ?Jô•Þž®Â?ÕQ,ÅŒ¥?ž -©Õ‚@Ÿež5ÈêÐ@j@¤¹#× -=q@¤¹+…¸R@¤¹#× -=q@¤¹$÷eý‹@¤¹#× -=q@¤¹#ñA \@¤¹#× -=q@¤¹$%®æ1@¤¹#× -=q@¤¹!ò×s@¤¹#× -=q@¤¹!TÉ…ï@®a´¼j~ú@®a»çl‹E@®a´¼j~ú@®a±Ä2ÊX@®a´¼j~ú@®a·Oß;@®a´¼j~ú@®a¸DЪ@®a´¼j~ú@®a´¼j~û@®a´¼j~ú@®a´‡ü¹%@7Ç>«6z@7¿Ÿ¾vÈ@3º^5?}@3P°ò{³@2y7KƧð@2z^5?|î@1kxFÜ^@1m‘hr°!@1kxFÜ^@1l1&éy@1kxFÜ^@1kô‡ü¹$?•²»UbB2?Eˆ‡ðó‹?’Q/Èö -®?ŽwX/8?‘ŠR%¨(0?‘f]£àG?€‚ñêã ?“-N•I`(?‘}7ˆ.Ñ?‘’â·ýÅ?‘¾ãazÅ?‘C å;Ã?ŽŽp±µær?Žrø·óæ?„m~Z_s,?…<ò N ?‡ã ËÄž?‡YÍ_@@@@@$@ ?ð?ð?ð?ð?ð?ð¿`ÕRYE¿Yæ0Ü?8•Æ ê È?#·×~> @¤¹$ªªN¾@®a·na?Sæ9Õñ¨.?FΚ¶,”?¤#˜j(â’?‘Ó{Hð@Ÿl;öð¤@k@¤©ûçl‹@¤«C•@¤©ûçl‹@¤¦éxÔþ@¤©ûçl‹@¤¬1&é@¤©ûçl‹@¤¦ -¦L0@¤©ûçl‹@¤³¶WŠ@¤©ûçl‹@¤ª6´ã>@œß²-V@œß›¥ãSù@œß²-V@œß¨Xy=Ù@œß²-V@œß»µsë@œß²-V@œß¥œàv@œß²-V@œßšŠ}Ñ@œß²-V@œßŠ=p£Ø@6=:’£@6;¡‘}@33S÷ÎÙ@3,~($ x@2¤¼j~ùÛ@2 ƒn—Ž@2._oÒ @2%ãS÷ÎÚ@2._oÒ @2躇@2._oÒ @2$ê¦\”n?|¬h2:“?’ Œ#Çî«?–/ØÃ‡fð?’³Žbtx=?åt—8 ½?–ø¼àÈM¹?‚n—Oß«6z@3p–»˜Çã@3{W>«6z@3p–»˜Çã@3vlô!.?›’qvš°•?˜+Rjþa?§çÆÿë?–&1‰}º?']ð—‘?¢cJlD¿?›’qvš°•?¢¾S̵EÙ?«Þô¯®€?šBÁ3ÍÆ?–Y:ŸèJ?™›,4rÕ9?³fgÁ˜?–l&ÿ?¢Ì÷y\ÛÎ?”*+JÒšF?’Oûh´6c?©P$`¾*@@@@@,@,?ð?ð?ð?ð?ð?ð?QMOÞL?w‡&Ž×€?BlÙ5–Ý?Tïñ>GÛ@§êíšM,@«ï+ãL×ä?^¿¤…ÆH?r2’îlº?£’Þ¦ 9Î?Ð_Õtc°˜@Ÿl}÷rQ@o@¡NaG®{Á.„€@¡NaG®{@¡Nƒn.±Ä@¡NaG®{@¡N‰ÞÒ@¡NaG®{@¡N‚MÒñª@¡NaG®{@¡N…zxl"@¡NaG®{@¡Nn±Ä2Ê@­$Ý/Á.„€@­$Ý/@¬ÿõϪ͠@­$Ý/@¬ÿê³g ù@­$Ý/@¬ÿð:û~’@­$Ý/@¬ÿôFsØ@­$Ý/@­Z¬@904mÅÖ8Á.„>¤µÜÆ@2 -^5?|í@1éÀëíúD@1¤¼j~ùÛ@1}ÈK]Ì@0«xFÜ^@0Žß¤?åÊ@0«xFÜ^@0Œj~ùÛ#@0«xFÜ^@0HðŽ@8J¨?®ÖJ éf?¨bY¶®å?ž‹¬':î?­˜›œÓ0O?µKA¢bŒ@8J¨?ªåøÖ¶£­?©Jœ£&Ñç?¡"JîÃ!?¡^候¼?—œ­ÛpùÄ@8p÷?”ïœ`µPŽ?aäŽ -Ù?‡õ{CxÞ?%üdêË?¢¯À<ÝÞ@@@@,@&?ð?ð?ð?ð?ðøøøøøøøøøøøøp@«ãgï²-@«ãhr° Æ@«ãgï²-@«ãhšu%@«ãgï²-@«ãi*0U2@«ãgï²-@«ãiã½@«ãgï²-@«ãfö”Ft@«ãgï²-@«ãgË)`@­n ÌÌÌÍ@­n V@­n ÌÌÌÍ@­n jO@­n ÌÌÌÍ@­n \ú¬Ú@­n ÌÌÌÍ@­n ²•éâ@­n ÌÌÌÍ@­n 5¨Xy@­n ÌÌÌÍ@­n ô!-@0¿–»˜È@0¿–»˜È@+WKƧï@+WXâe+@+XÔýó¶F@+Xï4Ö¡c@)Öð¸»@)Öý!ÿ.I@)Öð¸»@)Öð¸¼@)Öð¸»@)Öý!ÿ.J?É^òÀXæN?Ï[äe¤µÜÆ@3sS÷ÎÙ@3i^žš@2â-V@2âT`ªdÃ@25µsê³h@20-à r@25µsê³h@2+ûµsë@25µsê³h@2&µ '¼@8J¨?£-Ÿ56æ+?“IK¹É?Ž‚¨Ø†{~?›Yïÿ¾?¨Oüô÷•Ð@8J¨?—{UƒO?‘Ña„>&?•%ôµh©F?šs°Àãª?¡V·ÏŠÞ²@8p÷?–<‘þ2’‚?šÒÅšnê?Œw%è®?•°QŸ?]Í?¥œïÎ@@@@$@(?ð?ð?ð?ð?ðøøøøøøøøøøøør@­Hfffff@­Hk Iº@­Hfffff@­HfšÔ,=@­Hfffff@­HfÂ&€@­Hfffff@­HeðoiD@­Hfffff@­He®æ1ù@­Hfffff@­He”¯O@Ÿ‡+ J@ŸvÈ´9Y@Ÿ‡+ J@Ÿ†$Ý/@Ÿ‡+ J@Ÿ„êJŒ@Ÿ‡+ J@Ÿ†¸ºÇ@Ÿ‡+ J@Ÿ†ö”Ft@Ÿ‡+ J@Ÿ†YJôñ@8Bò䎊@89b¶®~@1&‡+ J@1'Ë)^ž@0_²-V@0_v_Ø­¬@.ܾߤ@@.Üú¬Ùè?@.ܾߤ@@.Ý¿HË“@.ܾߤ@@.ÝVlô"? Å{¿Ž<º?4ë©$è‰?‘½ümüñ?‹ä†€{6è?‘ä~|+?ïˆ6ÏJ?¬å'[ V÷?’0nà=Q“?~ËQ§?e”[|ú(?‘ ÛÌÏõA?›ªU3Îp?¬Öva4z?ŒÂ§dß±?ƒúʳ_Ä?‚þ——³§ø?†–f_ÔŠŠ?†ïRÉv‘Ñ@@@@@*@*?ð?ð?ð?ð?ð?ð¿I×y¸È?CÏu)?=O•¦%²?F€Äo+®ý@­Hf"w³Ü@Ÿ…ÍÏqØ?RæV2J?Y»}©l$?¢÷f?«2¸ÚYh]@ŸpH÷¿@s@«9!G®{@«9!‰7KÈ@«9!G®{@«9"u%F @«9!G®{@«9#S÷ÎØ@«9!G®{@«9!G®{@«9!G®{@«9 ƒn˜@«9!G®{@«9 Ä›¥â@¡ŠdÝ/ @¡Še¸Qí@¡ŠdÝ/ @¡Šdg8~@¡ŠdÝ/ @¡Šcþ\‘Ñ@¡ŠdÝ/ @¡ŠdtSŽó@¡ŠdÝ/ @¡Šeœàv@¡ŠdÝ/ @¡Šf§ï²@3N쿱[X@3OhÛ‹¬@0{ Iº^@0{'»/ì@/ü¬1&ê@/üÆ?@/#¼ÓZ…ˆ@/"¶®}Vm@/#¼ÓZ…ˆ@/$tSŽóN@/#¼ÓZ…ˆ@/%œàu÷?|öOÿÝ?õ¹Ëh?‘G¿yÛ?ï?‹²MÿAÿ8?‘'¬Å™» ?ß-tT?|öOÿÝ?’)£µ“[B@°nzáH@°|žì¿±@°nzáH@°|PHñ@°nzáH@°pÄ›¥ã@°nzáH@°l]cˆf@­u2° ÄœÁ.„€@­u2° Äœ@­u9õY³Ï@­u2° Äœ@­u-(Œç@­u2° Äœ@­u9#¢œx@­u2° Äœ@­u-žƒä%@­u2° Äœ@­uŠÚ¹õ@8Ì]cˆe•Á.„>¤µÜÆ@6|í‘hr@6ÊW§†Â@5nùÛ"Ðå@5yJôðØE@4Þ«6z‘@4îzáG®@4Þ«6z‘@4ãÃa@O@4Þ«6z‘@4éÀëíúD@8J¨?¡ÿ¶?B ?žõ|“”·?¯©C“Ë—?©²x7®VÈ?žc¬+:X£@8J¨?ªvðj?›R?¨:¶$I0?¨©&‚?®¶h†i¾m?¡â/‡ßü+@8p÷?àÛe«]Z?«†CRvÉÂ?³>0O¶m˜?¨ªíß?¨Ϭ -fà@@@@*@(?ð?ð?ð?ð?ðøøøøøøøøøøøøu@£ë•%@£ë•%@£ë•%@£ërüÎ -@£ë•%@£ë­’­@£ë•%@£ën`V@@£ë•%@£ëÔ<&@£ë•%@£ë%–³ˆ@–âzáG®@–â¼@–âzáG®@–âE_@–âzáG®@–⸒üÇ@–âzáG®@–âFÜ\@–âzáG®@–â -]³@–âzáG®@–âN²µ²@4ò䎊@4-V@0Œí‘hr°@0ޏQë…@/|¬1&ê@/}¾ŽÆ@.æL/ƒ{K@.蛈‘Å@.æL/ƒ{K@.çX ù@.æL/ƒ{K@.æÉ1"ª?~ì“?ÕÒJ?Ü>Èg?‘Fí<4½?‹ÒKÝiï8?ÿÃhý?ÐäÊ‹ñâ?|çµB &€?’'úà7x?³†é]Ô¼?Açy>¡$;?“ÌUõÎs¼?º’ ï &?]ÒivLÿ?…µsê³g¡?ƒ¼9XNÄu?‡ø¢:›¸1?ˆW|¶DC@@@@@,@(?ð?ð?ð?ð?ð?ð¿YäøF~?=:žÐ?KbÁh ½?YW8`ÒGÍ@©iŽ^Yé@¥Qhò…Ð?ck¯îwH?t‘(Oåml?Â7Ö–‘–?Þä0þ9®ü@ŸmÞЬ›²@x@¢“>ùÛ"Ñ@¢“6‡+ @¢“>ùÛ"ÑÁ.„€@¢“>ùÛ"ÑÁ.„€@¢“>ùÛ"ÑÁ.„€@¢“>ùÛ"ÑÁ.„€@¢“>ùÛ"ÑÁ.„€@”g¥ãSø@”g&-1@”g¥ãSøÁ.„€@”g¥ãSøÁ.„€@”g¥ãSøÁ.„€@”g¥ãSøÁ.„€@”g¥ãSøÁ.„€@7쿱[X@7 ¨câù@40Ä›¥ãTÁ.„M‰ûçm@3.ùÛ"ÐæÁ.„QnÙ‡@3!:’£SÁ.„NÜC,¥@3!:’£SÁ.„NÜC,¥@3!:’£SÁ.„NÜC,¥?‹?2»ZìF@8#˜@8¾:@8 >+@8Iç@8Ù?ƒÔo"ë–@8Î÷@8i§@8Å@8S@8û—? ž¤ïË[@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøy@¨³¶E¡Ë@¨³÷ÎÙ@¨³¶E¡Ë@¨´¼j~ú@¨³¶E¡Ë@¨´ýó¶G@¨³¶E¡Ë@¨´FsØ@¨³¶E¡Ë@¨²-V@¨³¶E¡Ë@¨²a|Ú@­8$Ý/@­8$Ý/@­8$Ý/@­8€ªdÂø@­8$Ý/@­8$Ý.@­8$Ý/@­8€ù k¹@­8$Ý/@­8ä÷eý@­8$Ý/@­8aä÷f@.­5¨Xy>@.­5¨Xy>@- -~ùÛ"Ð@- -³g ù @, ƒn—@, ªdÂø8@,¨Û‹¬q @,©Çy¦µ -@,¨Û‹¬q @,©­BÃÉï@,¨Û‹¬q @,©­BÃÉï?É^³Dw'?Ì&ÏøHÃ?‘½ümüñ?‹ÝÉ!ë#?ëÎ@ A2?¾ƒìÈÁ?ÐbMçê_x?’ -‰¸Ì?™Îd0RÜ?7枪y7?çêÑHcÇ?Z˜°,aÝ?€bMÕky?Œ¯þuõí?‚2Y0âµ?‚éXëLL÷?†žóB» “?†žóB» “@@@@@$@&?ð?ð?ð?ð?ð?ð¿Lýô€<?*‡f ?6 µ2#4Ô?.Å4æqú@¨³NÅÊ@­8aŠ.ð?EC Eª??=$Ï(tõo?†([ú«Ì?rŠ:#@Ÿs Êpã@z@¬ÝöÈ´9X@¬ÝúŸ¾vÈ@¬ÝöÈ´9X@¬Ýú…‡“ß@¬ÝöÈ´9X@¬Ý÷škP²@¬ÝöÈ´9X@¬ÝùXbO@¬ÝöÈ´9X@¬Ýõ%F -¦@¬ÝöÈ´9X@¬ÝôFsØ@­ïŸ¾w@­øbMÔ@­ïŸ¾w@­ð£× -<@­ïŸ¾w@­öE¡ÊÁ@­ïŸ¾w@­ò¼¢@­ïŸ¾w@­îÙ‡+@­ïŸ¾w@­îæ1ø¡@7Ô xFÜ@7Øl"h Ô@2î5?|í‘@2ñÑN;Í6@2¢-V@2¤•*™1@1ÏO „M@1ÔZ¬2@1ÏO „M@1Ñ|ÚQ@1ÏO „M@1Íà qv?гá‡}?‘J–?-.º?““¶”ÿµb?¨•Ù?‘˜¯ -`É?’Æ÷Xê†?”¼íÒh??’¼MÒÀ7F?”¯_©ïM?•jÛ<÷x?’íßš?’÷fAzQa?’-BR1Ä?R©i»èi?‚ù…žÄ`x?ƒ ?ÿ½?‰/ã̽`ª?¦Òý>¶9î@@@@@&@,?ð?ð?ð?ð?ð?ð¿U^Ȩ¿`,ãz?7KRþ+??4xÆWƒ™õ@¬Ý÷j¿Aú@­ò”Ø?V·gfT1›?R\ ¸Ûo2?®`…ÛÖ@?›’ºæ]º@Ÿl()}¼Ä@{@ª->vÈ´9Á.„€@ª->vÈ´9@ª- 4mÅÖ@ª->vÈ´9@ª-SÐ|„¶@ª->vÈ´9@ª-*dÂø7@ª->vÈ´9@ª- íØÎ@ª->vÈ´9@ª-¼ÑÉ@œ„†$Ý/Á.„€@œ„†$Ý/@œ„Œ/ƒ{J@œ„†$Ý/@œ„„Щ)@œ„†$Ý/@œ„TÉ…ð@œ„†$Ý/@œ„U[„©u@œ„†$Ý/@œ„yz¿-7@9}:’£Á.„>¤µÜÆ@5&‡+ J@5‚©“ á@4"-V@4ÑN;Í6@4Þi­BÄ@3øDЩ+@4Þi­BÄ@3ÿM‰Mvl@4Þi­BÄ@3ýòÛð8Ô@8J¨?²”>I·}´?˜Bg2³ôö?šX“Øû?¦Ks(I,?ŸÌñOöÖ”@8J¨?ªQûpÇj?–¾Oäë ?™9½œÔ.?™guoĺ?Ÿèí†w@8p÷?—ƒFÛ¯/?•ë þÅ?š‹ˆe´?˜?[-¨D?“Ó.}y@@@@.@.?ð?ð?ð?ð?ðøøøøøøøøøøøø|@§ÁÎV“@§ÁÎö¤ß@§ÁÎV“@§ÁÍjO@§ÁÎV“@§ÁÎp:û~@§ÁÎV“@§ÁÍ:’£@§ÁÎV“@§ÁÌ/†7@§ÁÎV“@§ÁÌ‹Rî2@œø²-V@œø­in@œø²-V@œø²{²þÅ@œø²-V@œø¯O „M@œø²-V@œø§ï²-@œø²-V@œø¨Áp†¬@œø²-V@œø¤t«ï9@6µS&Á¾@6´ˆez~ø@2 í‘hr°@2}Vlô@1©Û"Ðå`@1¬PHð@0ÑÞi­BÄ@0Ñ·Xâ@0ÑÞi­BÄ@0ÏùvAâÑ@0ÑÞi­BÄ@0Ïb¿oÚ(?‚Ú¡ËG7@.åÉä@.~˾“©®@.åÉä@.+|”Õ?É^žP¬!?Û*Ð ?‘.t·ç`>?‹¬=ã§@v?ñ1ê\ß?È #­ºØ?ÐbQë„›¦?’Îü¥ó ?¢-Æ´Ô?0rìÝ>ê?Ö9¬%~E?]ÝíVÏK?€bîF¾§?Œ®Í"µ€?‚—Ú¸cX?‚æ“ì{ 4?†öÊEz?†˜G›S@@"@,@"@6@4?ð?ð?ð?ð?ð?ð¿Oºžîl¿ úUˆð?*WVTb@º?™¯°¢²@¡A¶ñ-Ñ@«àéZ?9R­0/?(-Á?Í?oo(¹ê?IšOó”w@Ÿs›´u@~@¦ÍÒñ©ü@¦ÎzáI@¦ÍÒñ©ü@¦Ï\(õÃ@¦ÍÒñ©ü@¦Î±Ä2Ê@¦ÍÒñ©ü@¦Íí(Œç@¦ÍÒñ©ü@¦ÌcñA @¦ÍÒñ©ü@¦ËC,¥@  ¬1'@  /Ÿ¾@  ¬1'@  ‹¬q @  ¬1'@  ¥ãSø@  ¬1'@  ¥ãSø@  ¬1'@  <64@  ¬1'@  ]cˆf@3àØDЩ@3á$Ý/@0ÇÎÙ‡+@0Çy¦µ @0“t¼@0sê³g¡@/­úCþ\’@/­í(Œç@/­úCþ\’@/­í(Œç@/­úCþ\’@/­Òñ©ûè?|öOÿÝ?W[†?‘°&޲P?Wø0 ¥?‘¿ÐÅu?‘äÿ̉ߚ?|¬Çëý ?’j•×›c?ß‹…&?iêhAÜ?‘Jâ”âj?低NëV?‚q6tNø6?Œþ%å_D?ƒÚ@êA²?ƒE 8?†ÃÛSPã?†Ë¢L1Ù@@@@@(@,?ð?ð?ð?ð?ð?ð¿>Uâ±ð¿$ƒßm ?&ãüYâ•?%Ãý7Ã@¦Í2€þ@  ÇÃ$æ?F±B, $?F¸èT<|?š€JÈÞØ?˜ãgcå)@Ÿf¹©|‰@@ªó£S÷ÎÙ@ªó£•%@ªó£S÷ÎÙ@ªó¤µÜÆ?@ªó£S÷ÎÙ@ªó¤Ý/ @ªó£S÷ÎÙ@ªó¤›¥ãT@ªó£S÷ÎÙ@ªó¢@·€5@ªó£S÷ÎÙ@ªó¢&€I@£xñ©ûç@£xñ©ûç@£xñ©ûç@£xÊW§‡@£xñ©ûç@£x•éá²@£xñ©ûç@£xGE8ï@£xñ©ûç@£x£S&@£xñ©ûç@£xˆÎp:@+-5¨Xy>@+-5¨Xy>@')7KƧï@')Dg8}@&cn—P@&cn—P@&zÇË)_@&zÇË)_@&zÇË)_@&zÇË)_@&zÇË)_@&zÇË)_?É`¯&xŽ?ÉGãA­÷?‘!!Ø×‹7?‹²MÿAÿ8?éDEâ©×?¸û:?ÐbMçê_x?’ -‰¸Ì?~ËQ§?6) }’ë?ÔÒ@úˆ‘?Kcìë?€bMÕky?Œ¬8 T£?‚oÁÆÜ§÷?‚ãaÎúvh?†ˆ#.÷?†ˆ#.÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿REs–%?ö_Ű?5©§¥Jáx?uœ4=@ªó£,L Ú@£xwç±?DӹȘ(?#Û?îB¹?…PúôZîz??½UfTü@Ÿs >Q±ô@€@§ùÿ|í‘h@§ú‰7KÆ@§ùÿ|í‘h@§ùõ?|í’@§ùÿ|í‘h@§ùú¬2@§ùÿ|í‘h@§ùíÒñ©ü@§ùÿ|í‘h@§ùì1&è@§ùÿ|í‘h@§ùÞBZîc@®{dZ¬@®†$Ý/@®{dZ¬@®yè>B\@®{dZ¬@®xbMÓ@®{dZ¬@®u›=É@®{dZ¬@®|„µÜÅ@®{dZ¬@®|‘ÑN<@8ÖšÔ,<Ÿ@8¸§æšÔ@5B° Ä›¦@5?–»˜È@5K"Ðå`B@5Gâ‚@·€@4½cˆe”°@4³9Àëíú@4½cˆe”°@4¶éxÔýô@4½cˆe”°@4µöý!ÿ.?¨Ö_pP1?ŸáE‚Xû„?”^RžpX?¡‹÷;Ïœ(?¨VK?¬ptí#°??µ”Zm?¡‹=0ïÍ?›ê‰¬>V?£m¤ˆÛ€|?£<1*T!Â?¯ˆpoIo ?°Ÿ ÜE©?šÇ,þâ?¯M,L¯6?šæÚ§³Á?› £­²ý?¨D d}ù@@@@@$@(?ð?ð?ð?ð?ð?ð¿zl„Ï.€¿?,òf ?S¡üñ¯?ewB…NCæ@§ùíD³›P@®z¾bØ?o¥åjŽr?zÜx+ÈýC?®€•¥ý³?Éw:5@Ÿm“ZÒ`P@@©qWOß;@©q]²-V@©qWOß;@©qOAò×@©qWOß;@©q\(õÂ@©qWOß;@©q>BZîd@©qWOß;@©q@ù kº@©qWOß;@©qA [À@KÂ\(ö@K¨õÂ^@KÂ\(ö@K»²þÅn@KÂ\(ö@KÅ¡ÊÀ„@KÂ\(ö@KÚ¬1@KÂ\(ö@KÒ½<6@KÂ\(ö@KÐbMÒò@7p4mÅÖ8@7_ ?Dº@3Ê^5?|í@3½!ÿ.Hè@26§ï²-@2/±[W>«@2Š0U2a|@2z#9Àëî@2Š0U2a|@2z’£S&@2Š0U2a|@2€‰ 'RT?‰çõ×eµM?›úV˜[u9?‘O‚%c?¤»Ä¢? çÇ?ó1?Ÿò5}'Î?Ïy¨jP? >Ô±µR?“®ÂrVŽx? 1°€µóÒ?Ÿz\½~Û?˜"ߨÇ>?ŠPn -E³?ÉGãA­ø?‚íWçé…?‹Ûu¤ó†4?”Ò -.Ô•?§8©$ -"º@@@@@,@*?ð?ð?ð?ð?ð?ð¿{ƒë€?rsøçÀ?XFÖ=bÛ©?Y;G¦ÀŸ@©qM˜ÃKº@KÀ«õÍÜ?z!k?z–0‘ý1?à÷¤B¹¤µÜÆ@3”›¥ãSø@3wÈK]Ìd@3 ²-V@2ô“t¼j@2\ÚQÎ@2KC,¥{@2\ÚQÎ@2U '»0@2\ÚQÎ@22½<64@8J¨?•ßóV_Ü^?±¦ôˆ¤ªq?’èÞ㬱_?˜{ )é™?³lRA‘ƒ@8J¨?šækM..?¦P{ìjÿ?¨^à18??¢.Óñ€?Эnñ~¤µÜÆ@3ÜIº^5?@3ÛJ#9Àì@2ù7KƧð@2õzxl"h@2kxFÜ^@2jdÂø7µ@2kxFÜ^@2hÛ‹¬q @2kxFÜ^@2iÇy¦µ @8J¨?’ Œ#Çî«?œœê´°EÚ?«àÓ RÆ?”Å¥ÒB–W?•¿!— ö@8J¨?”Ô„÷ËD?“$zü¾6?’k­ªì¢H?•Ñ^¢?•Âê&ÅÅ@8p÷?êzŽx?…íŽ(þÇ?…<ò N ?Œ8¸wx¯?Œ˜ˆTÙ8ª@@@@(@,?ð?ð?ð?ð?ðøøøøøøøøøøøø„@­ë[¥ãSø@­ê¯²-@­ë[¥ãSø@­ëM(Œç@­ë[¥ãSø@­ë[¥ãSø@­ë[¥ãSø@­ëYè>B[@­ë[¥ãSø@­ëWškP±@­ë[¥ãSø@­ëUY³Ð}@ ­‡+@ ®ß;dZ@ ­‡+@ ­ úCþ]@ ­‡+@ ­?|í@ ­‡+@ ­+jçÕ@ ­‡+@ ­>«6z@ ­‡+@ ­¼@8™*0U2b@6öL/ƒ{J@4=‘hr° @46”FsØ@3Ͳ-V@3Ȍ篸@2Ì¿±[W?@2ÈK]Ìcò@2Ì¿±[W?@2ËW>«6z@2Ì¿±[W?@2ÇOß;d?ð°–Ž]?—hÄ”V?“ï~í"?“U†žév?•õþèüäú?“‡SË{d—?ð°–Ž]?˜ü^Š1??’€fç½Î?—ýÖ³²³ÿ?’l{9ÙŽ?”µìSõüS?ð*wjs—?“ÆQ6þ?•bkòí?ŒOà†cÍ?‰ö±«tï?‹Ûx§Þ?ð@@@@&@&?ð?ð?ð?ð?ð?ð¿^ÉçLÈ?m•ŒÔΘ?W¤CÑC3º?p{†ÀfP±@­ëW“7ŠÆ@ ­@ðOü?fž(Kwb?|(¸»gOK?¾'h8/V‡?åîW;°C@Ÿt -’@…@¯Æ>ùÛ"Ñ@¯Æ€@¯Æ>ùÛ"Ñ@¯ÆLIº^5@¯Æ>ùÛ"Ñ@¯ÆVE¡ÊÁ@¯Æ>ùÛ"Ñ@¯ÆHË’:@¯Æ>ùÛ"Ñ@¯ÆWsüO@¯Æ>ùÛ"Ñ@¯ÆPË)^Ÿ@ªjì‹C•@ªj¡ÊÀƒ@ªjì‹C•@ªjð|„µÞ@ªjì‹C•@ªjé7Kƨ@ªjì‹C•@ªjî¾ß¤@@ªjì‹C•@ªjêdÂø7@ªjì‹C•@ªjåœàv@8^Hè§æ@7‹ Iº^@4#÷ÎÙ‡@4!‰7Kƨ@3@å`A‰7@3>BZîc @2á:’£S@2á–R½<6@2á:’£S@2ךkP°ó@2á:’£S@2×KƧïž?×LàðVôð?“ÓLáS{?š†Ä$íf%?–¶±½WÇû?¦ö/cÕ¥?©„¹ïq÷;?Ðæån…âi? îÑšˆHÉ?—cG‰‹o?“§ÞÐÞû?Ä —+¥A?¥/[?jÒ?ù×)2ÿ²?“8í¢ßA?ƒ~¨õ/¥O?éàQx˜?”8©èÈí? \'ÎjK@@@@@,@,?ð?ð?ð?ð?ð?ð?s2X¶Ø¿fNÒ?pj,zò;?pÎûÀÅ @¯ÆMlÖ@ªjë¼dˆ?|Ñé\‘C?{±&]-)?ÑR_uWä??Ù³o¶Y7@Ÿp™ðº¡X@†@©”1&éy@©” C•@©”1&éy@©”y¦µ @©”1&éy@©“äµÜÆ?@©”1&éy@©“â&€H@©”1&éy@©“ýcˆe”@©”1&éy@©“ÙÛ"Ðæ@® E¸Qì@® G+ J@® E¸Qì@® S÷ÎÙ@® E¸Qì@® XüPH@® E¸Qì@® H´9X@® E¸Qì@® i7KÆ©@® E¸Qì@® X“t¼j@6÷â‚@·€@6òþÅm\ú@4+¥ãS÷Ï@4<64@46§ï²-@4%Éã½@3B‚@·€5@3$÷eýŠÛ@3B‚@·€5@3'Ûô‡ü¹@3B‚@·€5@3¬Ùè>B?€‚ñêã ?’«p~v]Ù?©»KÞ9yA?žtN+®6?­ME(©l?›$ kH§2?“Æ×q„nï?›æ¤p¥½?¦<¦Ü7T? £½:…?¾R$Ê(Â×?±Í‚cÊ5?ƒíÈm½!¾?“A ç’?šˆøQû±?¡ãz‘ÈÆ?¥J'Y=¢?¦“€œ„%5@@@@@*@?ð?ð?ð?ð?ð?ð¿„×/ß©?e—ñŠx?cñ‹“§?`Ýz2^ä@©“ù}¤½@® K†c`?0g¬›ˆù?zš/™ìu?ú»‡Ú«ª?ÑNøÇA@@ŸcMÚ¿¾Û@‡@¦õ·ÎÙ‡@¦õ¸bMÓ@¦õ·ÎÙ‡@¦õ»çl‹D@¦õ·ÎÙ‡@¦õºû~‘@¦õ·ÎÙ‡@¦õ»quŽ"@¦õ·ÎÙ‡@¦õµY³Ð}@¦õ·ÎÙ‡@¦õ¸üPH@§·TzáG®@§·T¼j~ú@§·TzáG®@§·TzáG­@§·TzáG®@§·QN;Í6@§·TzáG®@§·P¾ í)@§·TzáG®@§·Q‚©“ @§·TzáG®@§·R•éá°@2ÿ–»˜È@2ÿ—$tS@/×KƧï@/ÏAò×r@-¥¡ÊÀƒ@-Ÿ±[W>«@-­úCþ\’@-¨ÁTÉ…ñ@-­úCþ\’@-ŸåÉä@-­úCþ\’@-¡ä÷eýŠ?É^³Dw'?qÂ' -B›?‘ŒQ®üX?Œ^:Òf?’yÊêºq?’u¹k‚=?ÐbV‡,?’0nà=Q“?§^ ÿo˜?wàËxR?“£c”?’ ÃCÀ`ú?€j|î–éë?ŒÐ¤Âÿê?ƒ!A -mº¹?…®×__C?‡L8õASÎ?Šì¾ ;8´@@@@@*@(?ð?ð?ð?ð?ð?ð¿WÙúÐ?HˆþŽL?XG=]ð.?)6’†.tÅ@¦õ¹=ÊÛ@§·QíÓP?gg°ãðÊl?8E±õþ'?Ç«½àìO2?fX¶h}@Ÿr¹µ+@@ˆ@®ûçl‹DÁ.„€@®ûçl‹DÁ.„€@®ûçl‹DÁ.„€@®ûçl‹DÁ.„€@®ûçl‹DÁ.„€@®ûçl‹DÁ.„€@›YÌÌÌÌÍÁ.„€@›YÌÌÌÌÍÁ.„€@›YÌÌÌÌÍÁ.„€@›YÌÌÌÌÍÁ.„€@›YÌÌÌÌÍÁ.„€@›YÌÌÌÌÍÁ.„€@5›¹Œ~($Á.„>¤µÜÆ@2”›¥ãSøÁ.„M‰ûçm@1€å`A‰7Á.„QnÙ‡@1cÉîËûÁ.„NÜC,¥@1cÉîËûÁ.„NÜC,¥@1cÉîËûÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø‰@¡GäÝ/ @¡Gã•%@¡GäÝ/ @¡GæÂ&€@¡GäÝ/ @¡GÆÁ½¥@¡GäÝ/ @¡GÒ×sü@¡GäÝ/ @¡Gèr° Å@¡GäÝ/ @¡GçæšÔ@¨nûçl‹D@¨nÿ;dZ@¨nûçl‹D@¨o ¸ºÇ@¨nûçl‹D@¨o¢3œ@¨nûçl‹D@¨o1Å@¨nûçl‹D@¨oh Ô•@¨nûçl‹D@¨ov_Ø®@6Ì]cˆe”@6Çü¹#¢œ@2GÎÙ‡+@2X$ xF@1’Ðå`A‰@1—æšÔ,@0𖻘Çã@0ðØDЪ@0𖻘Çã@0î¸Që…@0𖻘Çã@0ñò×s?‡YÍ_?¤^ÎÀ¸ô?£AóôpJ?’9ñ9¶ò8?–[À5ž¨?ŸlgŽ|*?‡YÍ_?–HÞÆzì²?•ûú·ø¨?šüU(\;™ð?†”°…S„N?…žÛ¨[uµ@ [¾¢’û†?ÿ¹¦^…û@Ÿf _”Ï®@Š@ŸWê~ùÛ#@ŸVükS@ŸWê~ùÛ#@ŸW鎂¼@ŸWê~ùÛ#@ŸWís¼ ‚@ŸWê~ùÛ#@ŸWêœX²X@ŸWê~ùÛ#@ŸWæÏäíÇ@ŸWê~ùÛ#@ŸWëÐT&@¯æffff@¯ÙXbN@¯æffff@¯èD_@¯æffff@¯çâ9,z@¯æffff@¯åïÝ–À@¯æffff@¯ç/Sæ@¯æffff@¯è¿«L@7h†YJôñ@7"ZîcŠ@3Ï|í‘hr@3Ò;~š&@2ÝV”@2Þ /2l@2OO „M@2QÙJ7Ð@2OO „M@2RIIqÆ7@2OO „M@2RRð$öç?ÖP£acíÝ?‘¾mîøÀ„?‘9{Scr?„Ñ.HF,?’Lœ@¶Q?‘Ç“ëV“uÁ.„QnÙ‡@3«6z‘Á.„NÜC,¥@3«6z‘Á.„NÜC,¥@3«6z‘Á.„NÜC,¥?¡EÉ@Ú@8#˜@8¾:@8 >+@8Iç@8Ù?“Æ×q„nï@8Î÷@8i§@8Å@8S@8û—?Ÿ®64 Ú@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¨äµÂ\)@¨ä»¥ãSø@¨äµÂ\)@¨ä­jO@¨äµÂ\)@¨ä®—Oß@¨äµÂ\)@¨ä³ê³g¡@¨äµÂ\)@¨ä°oiDh@¨äµÂ\)@¨ä³ê³g¡@§<+…¸R@§<<í‘hs@§<+…¸R@§<"Ðå`@§<+…¸R@§<"3œ¿@§<+…¸R@§<,¿±[W@§<+…¸R@§<,ÌÌÌÍ@§<+…¸R@§<)*0U2@8·â‚@·€@8§RT`ªd@4W+ Iº@4V¸ºÇ@3V”@3œÙè>B[@2ò䎊r@2|VÕϪÎ@2ò䎊r@2|Æ?@2ò䎊r@2}¥œàv?¢F^ì¼Sð?˜“'\žå?šÿ»^ª@?,¡r×gÁ?’PY8~Qj?”éëÀÍ?•²»UbB2?—½Qéœ?•ûú·ø¨?‘.}áµ$?“h_N’%¿?–†F5Æ?´&¾¬Ç‰m?–Ê Dì¢S?•bkòí?‰‹„áùO"?Ä;Ãkr>?“¶Ì¶Öj”@@@@@*@,?ð?ð?ð?ð?ð?ð¿XIû[P¿oË m?Qß‚Xc?QJ˜g(ÒÎ@¨ä³ÛS~|@§<.©t?g‘‡(Ûê¨?m&±tr/?Äõɹ_9ú?Я3Þax@Ÿn(Ëß;@Ž@¥/²-@¥.—Oß@¥/²-@¥4mÅÖ9@¥/²-@¥1hr°!@¥/²-@¥4¼j~ù@¥/²-@¥0¸»@¥/²-@¥/Aò×@£¤j~ùÛ#@£¤j~ùÛ"@£¤j~ùÛ#@£¤kxFÜ@£¤j~ùÛ#@£¤g“Ý—ö@£¤j~ùÛ#@£¤fffff@£¤j~ùÛ#@£¤o\(õÃ@£¤j~ùÛ#@£¤m„M:@7„¯O „M@7ƒ,¥zxl@3ÇÎÙ‡+@3Ê™0¾ í@3"-V@3"þÅm\û@2:Ô,<ží@2?;dZ¬@2:Ô,<ží@2<篷é@2:Ô,<ží@2<ÓZ…‡”? Å{¿Ž<º?”êÎlŒy?‘£Ä›è?F‘q/b?“XMHñëž?’Æ÷Xê†?—¤o„C?šÒ’](¼+?‘kþE<%?íu…XÚ?”¤¦ð¹e?“{P»á?™¯Ùºà?“&•Z÷˜#?‡~ ~ã?ŽY8Z•?‡Ä­‹›Ü?‹ ˜1 D@@@@@@*@(?ð?ð?ð?ð?ð?ð¿G'~_Š?R/[õF?T‚¿OÙ@?VÀ. ·@¥1ÚW@£¤k -…;?kí5“Ù?qÕP;“áè?Ð×C”*é?Û ú䞃e@ŸnXeœ“@@¯ -Àƒo@¯  Iº@¯ -Àƒo@¯ jçÕg@¯ -Àƒo@¯ -ŒL—@¯ -Àƒo@¯ P°ò}@¯ -Àƒo@¯ Dg8@¯ -Àƒo@¯ï²,@¢*ØbMÓ@¢*×ÎÙ‡@¢*ØbMÓ@¢*Ö®}Vm@¢*ØbMÓ@¢*ÖÕϪÏ@¢*ØbMÓ@¢*غÇË@¢*ØbMÓ@¢*×1Å@¢*ØbMÓ@¢*×Xâ@5=:’£@5<ÌÌÌÌÍ@1€ Ä›¥ã@1€uöý!ÿ@0þV“u@0þ¤¨ÁTÉ@0ž«6z‘@0žËûµt@0ž«6z‘@0ž±Ä2ÊX@0ž«6z‘@0žóMj?|öOÿÝ?:LÓá -í?‘`×›mÏ?‹ó#ƒt£?‘|†³„¸?ß-tT?|öOÿÝ?’,ö´´Ï#?»Þ‹"è?e”[|ú(?‘!U?Ð{Ò?oÌ‘'ýT?ƒúʳ_Ã?)‰€Zw?‚Ì ÝŽ‚8?ƒv_.^?‡gϵ’õ?†ùadô|@@@@@,@$?ð?ð?ð?ð?ð?ð¿=ðx%п•°€?0CúÚA?$.˜×hó@¯ -.'–Ë@¢*×°É}“?Oâ-R8/?DZÈöƒõ?«!Ÿ A|œ?•ºû‹fòñ@Ÿfëo+Q}@@§Š¢Ðå`B@§Š£× -=q@§Š¢Ðå`B@§Š A‰7L@§Š¢Ðå`B@§Š¡ÊÀƒ@§Š¢Ðå`B@§Š£,¥zx@§Š¢Ðå`B@§Š ù kº@§Š¢Ðå`B@§Š 'RTb@¯)—Oß;@¯)™XbO@¯)—Oß;@¯)–E¡ÊÁ@¯)—Oß;@¯)˜Që…@¯)—Oß;@¯)˜bMÔ@¯)—Oß;@¯)˜y=Ù~@¯)—Oß;@¯)˜DЩ@7N쿱[X@7N¤¨ÁTÊ@1)‡+ @1(>BZîc@0¤¼j~ùÛ@0¤êJŒ@.žžš@.ã¼Ó[@.žžš@.ž\‘ÑN<@.žžš@.Vlô"?3ßa=„?¾¢`ƒ?‘WßÈDö@?Œä%—ëš?÷6r In?Êëüâi{?óA[ØïF?’ aÒ¹zï? Dñ£P?‘°ß‡O©?çêÑHcÇ?ˆ9²0?š?G'ôÜ?ŒÆò/¢äÍ?ƒúʳ_Ä?‚ôhBì^?†ïRÉv‘Ñ?†¼Š˜L¥÷@@@@@@?ð?ð?ð?ð?ð?ð¿HÖâ -ø¿*Úc^À?.nœ›½ß?ì¶mœ&@§Š¢«È@¯)˜‹g@õ?JÛC€WÌ?;/\‰½?–ÇxSÚ…?tÉ´že¦J@Ÿl^„¾â@‘@  -cS÷ÎÙ@  -^ùÛ"Ñ@  -cS÷ÎÙ@  -h6§é@  -cS÷ÎÙ@  -gˆ­è×@  -cS÷ÎÙ@  -h—”y@  -cS÷ÎÙ@  -d \‘@  -cS÷ÎÙ@  -bÔç'C@©wÒñ©ü@©wOß;d@©wÒñ©ü@©w—~á à@©wÒñ©ü@©wŽ÷|x@©wÒñ©ü@©wìVÕÒ@©wÒñ©ü@©w“hVŠa@©wÒñ©ü@©wÏ©„@8ò䎊@8 -;[kû#@3›¥ãSø@32ádª@2A‰7KÇ@2=¯‹Fí@15µsê³h@13“o¬K»@15µsê³h@14ݶÿè@15µsê³h@13"ž3°?œgØ^XÕF?µÜ,ÄßÌ?‘Š5¶ \n?‹«¦ÖI?‘C?#’pj?‘|ëN2?Ĺó¥p?’êNüÒ?µ…K¦­Ø?9Ø^ÕÛ?‘5ÖYó¾‡?‘4¥;QQ|?Éå¢Ñ‘?ògvfÐb?…lÝýéû?ƒÃ‚6$?‡dZ²VÇ?‡´ UÂb@@&@&@@5@8?ð?ð?ð?ð?ð?ð¿ C× ?O;—Vð?Yô8ý@kñ??€o³›«@  -eJ`Ê@©w†Ð:8?r½5gš?\•INË÷?à¸oþú–¥?¶·”\@Ÿmè ö?{@’@ ÛÐbMÒòÁ.„€@ ÛÐbMÒòÁ.„€@ ÛÐbMÒòÁ.„€@ ÛÐbMÒòÁ.„€@ ÛÐbMÒòÁ.„€@ ÛÐbMÒòÁ.„€@› ŒIº^5Á.„€@› ŒIº^5Á.„€@› ŒIº^5Á.„€@› ŒIº^5Á.„€@› ŒIº^5Á.„€@› ŒIº^5Á.„€@9*0U2bÁ.„>¤µÜÆ@4î5?|í‘Á.„M‰ûçm@4A‰7KÇÁ.„QnÙ‡@3ò䎊rÁ.„NÜC,¥@3ò䎊rÁ.„NÜC,¥@3ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø“@ªõœ(õÂÁ.„€@ªõœ(õÂ@ªõ§ ù l@ªõœ(õÂ@ªõžš@ªõœ(õÂ@ªõ´`ªdÄ@ªõœ(õÂ@ªõ¢&€H@ªõœ(õÂ@ªõ¥œàv@§žY‡+Á.„€@§žY‡+@§žMw1Æ@§žY‡+@§ž?—$tT@§žY‡+@§ž3g ù @§žY‡+@§ž:^5?}@§žY‡+@§žE8ï4×@8÷â‚@·€Á.„>¤µÜÆ@4—+ Iº@4‘hr° @3V”@3–È´9X@3O „M@35%F -¦L@3O „M@3æšÔ,@3O „M@37´¢3œ@8J¨?ŸY?2Õ6?š#Ñ-è ?­‹ 'òUA?— -æÙõ¡?™S:Ъ;5@8J¨?—I9ÝBæf?šJ‘ÍÒÁ?°z€Äã…?šRýi¡ô?™Ã¸å4@8p÷?™:K²ïÏ?•o•ó}ó?ÀËõ›ÄÉ:?–Mí\{WÐ?” 4‹eñ -@@@@*@(?ð?ð?ð?ð?ðøøøøøøøøøøøø”@¥ëŽÙ‡+@¥ëˆ1Íç@¥ëŽÙ‡+@¥éå—ñÞ@¥ëŽÙ‡+@¥éˆ~|pA@¥ëŽÙ‡+@¥é€ˆˆø@¥ëŽÙ‡+@¥éêdÂø8@¥ëŽÙ‡+@¥êXºÇÊ@—Vq©ûçm@—Vm‘hr°@—Vq©ûçm@—Tgöú ]@—Vq©ûçm@—T-©Ç„~@—Vq©ûçm@—T8ßÚ¶s@—Vq©ûçm@—S€IQƒ@—Vq©ûçm@—TGy¦µ @4Âò䎊@4¹© z@2™º^5?}@1ý¾ ¢í @2 "Ðå`B@1cÛoB'@1Š0U2a|@0çºs’"@1Š0U2a|@0×ÈK]Ìd@1Š0U2a|@0Þÿ—$u?|¬Æ Væ?ÕQt€hü?Öh7JÌZ?Õ”¨Ædœ?Ü'z_ó6³?Ù1[ݶÆÃ?}@T˜ÁÎ¥?ÈÐÃàÒ[?˸ÀRÅ{?ÀŽ7f9PÎ?ÎÀÚ$m´>?Ë•V u?‚/»yÅ?¦"vJÈC?“Áj¦ ?Ÿ¤@¦lŒIº^5@¦lw1Æ@¦lŒIº^5@¦l‹íúCþ@8Hè§æ@8µsê´@3f‡+ J@3f1ø .@2q‰7Kƨ@2rn—Oß@1Œ¿±[W?@1Œ˜_ö”@1Œ¿±[W?@1IQ‚©”@1Œ¿±[W?@1„M:“?žˆ2}?ZÁ».œ?’Gßk;m?‡{@áè?’o?P´À?‘&¶Gf¡?‘â%ì˜ ä?’5CàQ?‘C\ºÕ¶?’ž²¢# Y?’pP‡È»?ú`@0k? .ùge%ý?à í¡h„?‚§W®ê ?ƒ3¸Î{Z?‡Õ˜]–GÄ?‡æê7²zE@@@@@,@*?ð?ð?ð?ð?ð?ð¿^ *4°¿fLßd?*8q<^î–?Ujò³™¥ @ª K\Áp@¦lÎÜÆu?L¢Å7 [B?sãU)åÞ?{R[ ?ãWñrNܨ@Ÿk!ÅÅ‹õ@–@¢ül1&é@¢ühr° Å@¢ül1&é@¢üqN;Í7@¢ül1&é@¢üiº^5?@¢ül1&é@¢üwÎÙ‡@¢ül1&é@¢üw$tS@¢ül1&é@¢üsŽóMj@­hIº^5?@­hH1&éz@­hIº^5?@­hOß;dZ@­hIº^5?@­hQÄ2ÊX@­hIº^5?@­hQ·Xâ@­hIº^5?@­hNHè§@­hIº^5?@­hGE8ï4@7`ØDЩ@7aTÉ…ðp@2ÞÙ‡+@2ÔM:’£@1ß²-V@1×l‹C•@1(è§æ›@1 Ñ·Xâ@1(è§æ›@1¤¨ÁTÊ@1(è§æ›@1O „M?ˆÿÀ)T¿Æ?•ßóV_Ü^?‘ÄÑ ø?”–¹rÕ‰?›ÿËRÈ?–4<‘7?‘â%ì˜ ä?™ÿÓH*¥?’¤šÜI«?˜_?[0o_?¡SmImbˆ?•åÖuÍa?¶,1õ'®?ŽõÕJ?„+£QKù?†ü¢q+ÄU?ˆ0&YÊEd?Ò0aˆ‡‡@@@@@*@&?ð?ð?ð?ð?ð?ð?hrYRl?/£tíÀ?TžTI7/?WHâ¿T/S@¢üq!Æ@­hJ·+žž?u€Ô,­?wÊ_•$Æ?ãŸZd.aý?áarÎïËô@Ÿi‡Ò•Vô@—@ªõ|í‘h@ªõ}²-V@ªõ|í‘h@ªô—´¢3œ@ªõ|í‘h@ªóú^5?~@ªõ|í‘h@ªôü„µÜÆ@ªõ|í‘h@ªöG ù l@ªõ|í‘h@ªõ(Xy=Ú@£È@£Çî—Oß@£È@£Ç»À6ã@£È@£Æži­BÅ@£È@£ÇKàÞÒ‰@£È@£È¸ï4Ö¡@£È@£Ç”êJŒ@8`ØDЩ@8G1Å‚@3µãS÷ÎÙ@3yã¼Ó@3¶§ï²-@3@©*0U@2s&Á½¥@2'â‚@·€@2s&Á½¥@3V”FsØ@2s&Á½¥@2>5?|í‘?¨TU‚?¦Ó[T‚®¾?ÙC¤q;˜l?ÐdÜcšÍ?¾§m×¢Aü?½M­9ü?}Ñ¿ž,?ž%Œ@&—?Ö!-•FÀâ?ÎS„^Ù™?À,ÙŠùûë?Æ"šYÃ?›bO—ç†?3XMÊV?šˆøQû±?˜$– Ñê?«ißÛãÀ ?˜uqR¿7@@@@@*@*?ð?ð?ð?ð?ð?ð?u?’Ž €?…Úû€ˆ€?œž8PN?›Ã‰ƒ"¤}@ªõ‰m±…c@£Çÿí,I?»Þ^ñÉb?¶›¡ç­ù@+“ –ÔP@(>ÿŠÚ@Ÿb1ÉËf@˜@¯ŒTýó¶F@¯Œi7Kƨ@¯ŒTýó¶F@¯ŒJ*NWY@¯ŒTýó¶F@¯ŒNN-á¡@¯ŒTýó¶F@¯Œ:”Ę@¯ŒTýó¶F@¯ŒF|W /@¯ŒTýó¶F@¯ŒJ¼Ä™@–ýOß;@–ý"Ðå_@–ýOß;@–ý#©UfÝ@–ýOß;@–ý.<3àÙ@–ýOß;@–ý4šS2@–ýOß;@–ý%q!r @–ýOß;@–ýK‚…Ì@9‡>«6z@9wì^er@4 Ä›¥ã@4Àœ­)Ý@3~V“u@3}#+ê@3+xFÜ^@3,êã@3+xFÜ^@3+r[©ñ @3+xFÜ^@31á†Tñ?( ˜?”/À•?“ñ=Ûÿ•?å»ÿݵ?•ð³õ&a?—ÿ£e¦?®CÌ2ýõ?“µ>™99ß?‘cg >'?c>Ep|?•º–¸­E?—sa3¬6?Ë"ôuM¬Ò?•í\Bæ ?‹˜·êÿÓõ?“µ‹«#ãh¿M9jhü?8ËO§Â$k?&Î'þx -@¤#áúÍ$@¡“!åï†?Xœ/ÃÕ‚o?FjÆû9MÚ?¿&÷R¸Ïz?—oZGº@Ÿg1m -@š@®Àð£× -=@®Àð£× -=@®Àð£× -=@®ÀçlN“ˆ@®Àð£× -=@®Àï`çº|@®Àð£× -=@®Àô?U+U@®Àð£× -=@®Àë>{“@®Àð£× -=@®Àé?l@”™™™š@”¬0@”™™™š@”WÕµŒ@”™™™š@”!j%‹@”™™™š@” Ê¿Wr@”™™™š@”¢êW@”™™™š@”ýý^%Ž@6 ]cˆe”@6 9ÿÖ–@2 Ä›¥ã@1ã`7½~@1©Û"Ðå`@1¤Tͬ@0œÚQÎ@0’ †;„@0œÚQÎ@0“26•†@0œÚQÎ@0”EVA^?}@T˜ÁÎ¥?‘mÓSòÜØ?“o:6@è—?H§—ÅO?“®[Å`?“H‚ÏAu?€‘gQÚÃ?˜ÈOS˜Ü6?”â)ÈøU?—ÏÞÐ}ëá?–­&ÿ“Šè?“}Füè[n?‚p°M¼¯>?’Mûüå?„ù— y7?†v$áä/?ˆN%É–š?Š8Ðñ¢ÀÌ@@ @(@*@:@7?ð?ð?ð?ð?ð?ð¿PÄÿh¿gÀ¸,î?NbÊ"?~òÂ@*@®ÀïiÚì@”!é¢|?mÑ9Õ{?2×õË?äT×bî?iUåÕÊi@Ÿeÿ6‚:@›@¡- A‰7LÁ.„€@¡- A‰7L@¡-•éá°‹@¡- A‰7L@¡-“Ãa@@¡- A‰7L@¡-¡$Ý/@¡- A‰7L@¡- <[·»@¡- A‰7L@¡-’çÆ¨±@£†‡+ JÁ.„€@£†‡+ J@£†«6z‘@£†‡+ J@£†–ý!ÿ.@£†‡+ J@£††$Ý/@£†‡+ J@£††Á#ßó@£†‡+ J@£†”rü@9ÉÎ_oÒÁ.„>¤µÜÆ@4n5?|í‘@4u›=ÈL@3Ãt¼j~ú@3ÊQÎ`@3Œ~($ @3ô!-x@3Œ~($ @3=ë´M@3Œ~($ @3¥ZÅá@8J¨?–„Ø?8ˆ?£þ³Lqa/?”ääܳA³?”O5cOÈ:? !QÓØi@8J¨? ¥¬ ˆ?«¹f‰Ôü¯?—³ÄpÐ? %9½\Ö?–+•><£@8p÷?•cKç4+?ªÑkµn}á?¥k2ïm?ÉïŸJ¿à?œdWj>ö@@@@1@0?ð?ð?ð?ð?ðøøøøøøøøøøøøœ@®Dî—Oß@®Dï\(õÄ@®Dî—Oß@®Ez:µ^@®Dî—Oß@®EÁãˆ@®Dî—Oß@®E0?ˆ”@®Dî—Oß@®EAã”np@®Dî—Oß@®E9ùÀ-@–r¢Ðå`B@–r«IE£Å@–r¢Ðå`B@–rÜ$¶Î@–r¢Ðå`B@–rç¬\A@–r¢Ðå`B@–s2±Ép‘@–r¢Ðå`B@–s:ø_@–r¢Ðå`B@–rè÷õÓ@7žHè§æ@7Ÿ - ¨B¾@2î5?|í‘@2Úiˆs@2H“t¼j@22Š -6#Ñ@2uµsê³h@2I2²1PH@2uµsê³h@2JuQÄQ-@2uµsê³h@2KG§5{†?Ïy¨jP?‘uA Úbô?™Ê_ps?ªLýä5‡á?«¨Î¡–ÿ›?©T†ň¸?…ðE[i)?–g¿l£Fñ?—.»¾­¬Ð?¢yÝÞ7Ï? E‰.ÕÿX?›¾4(¤?˜ª´¤Œª?PgDÌm?ƒÝIE„²?ˆÊ~O0?‡ÿd °/?Ž{çcm¼è@@$@&@*@7@8?ð?ð?ð?ð?ð?ð?’aô§c?‚Ñ8E# ?g¾«í×ò?s"’íRP,@®E¼a6@–rÒ9àQB?†ø„㬃?“P-„­?ìÌ?ëÕÊ¢@i“ÊÛL@Ÿdéõv@È@@¨>]/Ÿ¾@¨>W -=p¤@¨>]/Ÿ¾@¨>V_¸ÿ‹@¨>]/Ÿ¾@¨>m&–ž/@¨>]/Ÿ¾@¨>Z9,µ6@¨>]/Ÿ¾@¨>Y:™Yù@¨>]/Ÿ¾@¨>Ysf9T@›?Ÿ¾vÈ´@›?Ú` À|@›?Ÿ¾vÈ´@›?™ˆƒ:@›?Ÿ¾vÈ´@›?•Jé¸L@›?Ÿ¾vÈ´@›?¡Ã§…2@›?Ÿ¾vÈ´@›?¢½…#@›?Ÿ¾vÈ´@›?¢¿Œ”G@8–šÔ,<Ÿ@8Žž9« @2Ìí‘hr°@2Äψ­×@2Ðå`A‰@2 ѹ{Þ@1=cˆe”°@1;(ˆ5n@1=cˆe”°@195Ä @1=cˆe”°@1;F2ºT{?”$úÀÁ’?’aÉUYÝÝ?‘,Û?Œ…¨F|?‘mt‹?Ý"ˆíƒ&?š­˜]?–…¯Ý Eá?’, e²RZ?‘ $< ¡?’ñÁC+?†Oxû|Î?‘ð±¼?Ž–áÐMÊ?„§Ð‹]@ù?„u„ņÇ?ˆŸC"V?‰@¿ ÁrŽ@@$@&@$@1@2?ð?ð?ð?ð?ð?ð?:¡ñ]¿sNÀÇ@?8?Uµo!?do¦Ø»N«@¨>YF޾™@›?¬ >?Sdê<9ž ?—“ÆÌÔ{?¥šJ–¤Ð?ö87?ü§@Ÿn= nò@ž@¨»²-V@¨»³÷ÎÙ@¨»²-VÁ.„€@¨»²-VÁ.„€@¨»²-VÁ.„€@¨»²-V@¨»®záI@¨»²-V@¨»¨´9X@¯˜Æ§ï²@¯˜ÌIº^5@¯˜Æ§ï²Á.„€@¯˜Æ§ï²Á.„€@¯˜Æ§ï²Á.„€@¯˜Æ§ï²@¯˜ÊÀƒn@¯˜Æ§ï²@¯˜Ãn—@7Bò䎊@7>šu@3W+ IºÁ.„M‰ûçm@2Æ“t¼Á.„QnÙ‡@1𖻘ÇãÁ.„NÜC,¥@1𖻘Çã@1óÉîËû@1𖻘Çã@1óä%®æ2?гá‡}@8#˜@8¾:@8 >+?‘ ·èf?“ d?|¬Çëý @8Î÷@8i§@8Å?‘áÙž­ò?Éöm/w@*›dZ¬@*šáG®{@+L²•éá±@+K…¸Qì@+L²•éá±@+K]ÌcñB@+L²•éá±@+KC•&?É`¯&xŽ?ÉGãA­÷?‘(¥¿á?‹¹GüÞõ?‘Dj?ÃwZL?ÐbV‡,?’ ,øÕC©?†[‘'Í?@§[*^?îCq$u?X78›š?€b¡´ñ@?Œ°¶.Ä+Æ?‚s@ˆaÛ?‚ù8 ±^?†£îž«î?†©b/bJö@@@@@,@(?ð?ð?ð?ð?ð?ð¿:ÙâYˆ?9P1æ`?‹E;?#Ç&Ðü@­‘ny«z@£Aè¯_bÆ? äaIÛÙî?2½¯²Ù\ ?;Þ12NŠh?^–ãsLì@Ÿs˜d#í@ @¯ Ïß;dZ@¯ äZ¬@¯ Ïß;dZ@¯ ÌcñA @¯ Ïß;dZ@¯ Î.±Ä3@¯ Ïß;dZ@¯ Ï·éø@¯ Ïß;dZ@¯ ÎV”@¯ Ïß;dZ@¯ ÌL˜`@©UOß;@©UãS÷Ï@©UOß;@©Uçl‹D@©UOß;@©Uµsê³@©UOß;@©UÛ"Ðå@©UOß;@©UFÜ]@©UOß;@©UJ#9Á@904mÅÖ8@9.záG®@3Ï|í‘hr@3Ò@·€4n@3"-V@3$•*™1@28DЩ*@2:…‡“ݘ@28DЩ*@2:dÂø7´@28DЩ*@29ûçl‹D?³‰ÑpEIt?“Ãruöò²?”lš5B¬î?{¾“úy6?‘·Xâe?’€ú¤ˆ4 ?ÀÊ»d9\?”zòžÕÿ?•¶ÀA½ -;?’:u.ý ?’>H>d#?‘1鄽 Ú?ȉÿ‹¤vw?*øT?ˆdÁ --?…J]j?‰Ü)@Jq«?^^ω•@@@@@,@&?ð?ð?ð?ð?ð?ð¿cŠJe€?OóB{#?TP÷²ZÐ ?TäÂ6ià;@¯ ΚFv@©Uk³ýo?dÚ+O#Ž?dÇB¼ÅN?ÂçNÜïOÏ?¾ïKÆ ì_@ŸrCŠ´@¡@ª.9XbNÁ.„€@ª.9XbN@ª-"œwšk@ª.9XbN@ª,¡G®{@ª.9XbN@ª,”Ö¡aå@ª.9XbN@ª-NHè§@ª.9XbNÁ.„€@œâÕ%Á.„€@œâÕ%@œäìô!-@œâÕ%@œäÏv_Ø®@œâÕ%@œåšîc‰@œâÕ%@œã%zxl"@œâÕ%Á.„€@9p4mÅÖ8Á.„>¤µÜÆ@4Ô›¥ãSø@4\64ê@44“t¼j@3¼¾ß¤@@3uµsê³h@3Ôýó¶F@3uµsê³h@2èl"h Ô@3uµsê³hÁ.„NÜC,¥@8J¨?¾æ'‹ÕlÞ?»²Ï -· ?­dÒ¦Ó 3?ÔÿÖœ¾r@8Ù@8J¨?ÀîluûÞ?¼!z£sØÙ?°.OŠcÉ?ÖÊSx×À@8û—@8p÷?‘S1Êz?õª?ÉØ|Rüs¿?ÂõK/JRZ?‘Èx4ñž?¦W¾ »ZÕ?£¢6¿üs?¤~'àúT#?·}ߊÔ9È?ÝN•—w"?¾"“QÃ$@@@@@,@(?ð?ð?ð?ð?ð?ð? ïF£ ¿ž´7ÞºÀ?–1‹«½§?z„°Ø}ø@©t×fä{õ@§=öÞ‹Þ?©rì›§¢ ?5¸ÚAæ—@/¥"G{ï?ãíà!K?$@Ÿ^>ž>FT@¤@¨Êq&éxÕÁ.„€@¨Êq&éxÕÁ.„€@¨Êq&éxÕÁ.„€@¨Êq&éxÕÁ.„€@¨Êq&éxÕÁ.„€@¨Êq&éxÕÁ.„€@¬ »çl‹DÁ.„€@¬ »çl‹DÁ.„€@¬ »çl‹DÁ.„€@¬ »çl‹DÁ.„€@¬ »çl‹DÁ.„€@¬ »çl‹DÁ.„€@75S&Á¾Á.„>¤µÜÆ@3‚° Ä›¦Á.„M‰ûçm@2¢-VÁ.„QnÙ‡@1ó&Á½¥Á.„NÜC,¥@1ó&Á½¥Á.„NÜC,¥@1ó&Á½¥Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø¥@«²-V@«¥ãSø@«²-V@«šu%@«²-V@«ÙrGE9@«²-V@«Ölô!@«²-V@«ä“t½@«²-V@«è$ x@¢0%`A‰7@¢0 A‰7L@¢0%`A‰7@¢0' ù l@¢0%`A‰7@¢0*#9Àì@¢0%`A‰7@¢07éùr@¢0%`A‰7@¢02ñ©ûç@¢0%`A‰7@¢0 'RT`@8í¥œàv@8åéá°‰ @4J^5?|í@4?;dZ¬@3ß²-V@3ÎÅm\ú­@3 -0U2a|@2ð4mÅÖ9@3 -0U2a|@2ñA [À@3 -0U2a|@2òMÒñ©ü?Ÿ‹‘+-/Ü?éDEâ©Ö?–s3g¾²p?¢Ç˃.†?¦KÊbo¨Þ?´Fø}^«? Å{¿Ž<º?™´¦]˜ó?”_й@’?*ß(…Ž?¦Ì¢„“eE?¨÷¸0Å?ˆLdB"%? e@ˆ’„'?Š[¦Råb?˜µÑ½8|ò? ee«¿?·ßM(® @@@@@&@*?ð?ð?ð?ð?ð?ð¿ŽÍŒvD?cË× þ?yÛµ²àò´?q/ÂóüÉÛ@«ð"Ê@@¢0,ñWF.?—tnQZ?HpG.ï@KÍ=Ø?ô(ÑMöUw@Ÿi+ö‹˜@¦@¥½49Xb@¥½6‡+ @¥½49XbÁ.„€@¥½49XbÁ.„€@¥½49XbÁ.„€@¥½49Xb@¥½C× -=q@¥½49Xb@¥½Iº^5>@¯í‘hr°@¯ïß;dZ@¯í‘hr°Á.„€@¯í‘hr°Á.„€@¯í‘hr°Á.„€@¯í‘hr°@¯ V@¯í‘hr°@¯ -Ow@7ð4mÅÖ8@7ñ ²•éâ@3pÄ›¥ãTÁ.„M‰ûçm@2b-VÁ.„QnÙ‡@1p–»˜ÇãÁ.„NÜC,¥@1p–»˜Çã@1„2ÊW§‡@1p–»˜Çã@1r×sü? Eˆ‡ðó‹@8#˜@8¾:@8 >+?éDEâ©×?˜}>h”'?žˆ2}@8Î÷@8i§@8Å?¢õ%ÒgÔ?ŸÒOÝ&P?‘ -òtMŠ@8 * @8p÷@8¶?°4\ɵ?ŽÜÂÎÛÖa@@@?ð?ð?ðøøøøøøøøøøøø§@¡g 7Kƨ@¡g\(ö@¡g 7Kƨ@¡fö8†YK@¡g 7Kƨ@¡fù0¾ í@¡g 7Kƨ@¡fÉùrG@¡g 7Kƨ@¡fê~ùÛ#@¡g 7Kƨ@¡füPHð@¨ùݲ-V@¨ùÌÌÌÌÍ@¨ùݲ-V@¨ùÏ4Ö¡b@¨ùݲ-V@¨ùÖE¡ÊÁ@¨ùݲ-V@¨ùÕL˜_@¨ùݲ-V@¨ùÑø .@¨ùݲ-V@¨ù°U2a|@8²ÃÉîËû@8±œàuöý@3Ò Iº^5@3Ñ©ûçl‹@36§ï²-@31°‰ 'R@2µµsê³h@2±&éxÔþ@2µµsê³h@2²äŽŠqÞ@2µµsê³h@2¦šÔ,<Ÿ?‚á²Olºü?¢Û)Qé?§$jЂ†Ë?º¬šÄB?¦¬÷4çí?šC…{‹?“Æ×q„nï?­Uóú*˜?¦+öbÚË›?¥ZÑpÉç?¥yoÌå?¢©¨èÖ%˜?¶/é8R”é?ŸÈ$éþ(@@@@@*@*?ð?ð?ð?ð?ð?ð¿Q=½Œ?(ˆ©ÚT?29¿º]êÚ?áXd)´?Qwq»–^ß@Ÿs -m_^Ò@©@¯Ò„›¥ãT@¯Ò„›¥ãT@¯Ò„›¥ãT@¯Ò†YJôñ@¯Ò„›¥ãT@¯Ò…+ÓÃa@¯Ò„›¥ãT@¯Ò…Éä@¯Ò„›¥ãT@¯Òƒˆe”®@¯Ò„›¥ãT@¯ÒƒS÷ÎÙ@¥¦G+ J@¥¦FéxÔþ@¥¦G+ J@¥¦H$ x@¥¦G+ J@¥¦G†Â&@¥¦G+ J@¥¦H>BZî@¥¦G+ J@¥¦G8}¾@¥¦G+ J@¥¦HK]Ìd@3­¥œàv@3­¸ºÇË@0º^5?|@0Ô•*™@/|¬1&ê@/|]cˆe”@.fL/ƒ{K@.f€IQƒ@.fL/ƒ{K@.fL/ƒ{K@.fL/ƒ{K@.f1ø .?€‚ñêã ?¾‰máÚ?‘K]Ã4?Œ ßõIyû?‘õbÐ\?Êëüâi{?|öOÿÝ?’LÁŒÀ´a?«'Q™µ?iêhAÜ?ñ«Ý„ Õ?R g!Ú¢?‚|׿pY?ŒÆò/¢äÍ?‚† SFò?ƒ†+ Å?†¼Š˜L¥÷?†¼Š˜L¥÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿&‹>Ö?/™X0?0øv›±ªd?ÔX`™@¯Ò„lwûþ@¥¦G}‰ß?PÜ6÷@N?@pË<9r¢?«öÎNĬ?‹M7ÔüÛµ@ŸgQ(¿H@ª@¯‹‚\(öÁ.„€@¯‹‚\(ö@¯ˆbMÒñ©@¯‹‚\(ö@¯ˆ "h Õ@¯‹‚\(öÁ.„€@¯‹‚\(ö@¯¼]cˆf@¯‹‚\(ö@¯“ŽóMi@«'ï²-Á.„€@«'ï²-@«Z…‡”@«'ï²-@«öý!ÿ@«'ï²-Á.„€@«'ï²-@«þƒä%®@«'ï²-@«Ù0¾ í@:VšÔ,<ŸÁ.„>¤µÜÆ@5Å?|í‘h@6)“ àÞÒ@5>V“u@5wXâe@4L¿±[W?Á.„NÜC,¥@4L¿±[W?@2ÚÔ,<ží@4L¿±[W?@2»¹Œ~($@8J¨?ë’ŒØPÀè?öýôƒQ¹@8 >+?ÀaC1 ?ÑôA0R@8J¨?Ú¤4H4’Œ?ßÊî„™'Ò@8Å?¹¶ó:†‡V?ÉòàMpù@8p÷?Ñ -Š6ü#6?ÙûæqL…ý@8¶?˜F†éôâß?£Ä·èŠ@@@,@*?ð?ð?ð?ðøøøøøøøøøøøø«@ªž“t¼j@ªž5?|î@ªž“t¼j@ªžÿ—$@ªž“t¼j@ªž#Š @ªž“t¼j@ªž&¸ºÈ@ªž“t¼j@ªž1œàu÷@ªž“t¼j@ªž0–»˜È@¨)’ñ©ûç@¨)’-V@¨)’ñ©ûç@¨)«)^ž@¨)’ñ©ûç@¨)†ÏAò@¨)’ñ©ûç@¨)ƒ,¥zw@¨)’ñ©ûç@¨)l/ƒ{J@¨)’ñ©ûç@¨)‚ Iº^@7ð4mÅÖ8@7í«ŸU›=@4ë¥ãS÷Ï@4ÔohÛ@4t“t¼j@4Wl‹C•@3³&Á½¥@3›¹Œ~($@3³&Á½¥@3ŸHË’:@3³&Á½¥@3¢-V?3ßa=„?œPîñ°¦?·æhÎŒF?©H} ¬ýy?°™û§ü¦?¤;»ŒKå.? Eˆ‡ðó‹?”ÇtæMPÐ?·'_#Š?± Çÿm -È?µh`‘©i¤?¢©¨èÖ%˜?À»¾Ô«­?Å{¿Ž<º?œvå\ƒd?šlFÛj¿þ?˜£™Ðåˆ?ªvWÚÓ;å@@@@@,@*?ð?ð?ð?ð?ð?ð?o‹¥{ ¿owMå?;-O·ËÜ?`â !3:@ªž'B~¸@¨)ˆ3¶F?]ñG¥J -?пv?–ä¿ëkò?Ôo7!w×R@Ÿh_ñ. @¬@¦ÔF§ï²@¦ÔFéxÔþ@¦ÔF§ï²@¦ÔH Ô•@¦ÔF§ï²@¦ÔG®zá@¦ÔF§ï²@¦ÔGâ‚@¸@¦ÔF§ï²@¦ÔE®æ1ù@¦ÔF§ï²@¦ÔE¡ÊÀƒ@¬ãXbMÓ@¬ãXbMÓ@¬ãXbMÓ@¬ãXy=Ù@¬ãXbMÓ@¬ãX_ö”@¬ãXbMÓ@¬ãX†YJô@¬ãXbMÓ@¬ãX}¿G@¬ãXbMÓ@¬ãX­«ŸV@-"ø7´¢4@-"ø7´¢4@%3t¼j~ù@%3t¼j~ù@#XÔýó¶F@#XÔýó¶F@"á-w1Å@"á-w1Å@"á-w1Å@"á-w1Å@"á-w1Å@"á-w1Å?É^³Dw'?°çR;?‘ÌË>¯f?‹²MÿAÿ8?êtÿKÑc?¶*WFÑ?ÐbMçê_x?’ -‰¸Ì?†[‘'Í?9ÍÇ~FÀ?Î ¯xV?L "¾?€bMÕky?Œ¬8 T£?‚nâwg?‚â‡~ûÉ\?†‡hÉÈÓ?†‡hÉÈÓ@@@@@,@*?ð?ð?ð?ð?ð?ð¿PËæRà? ±›÷?4µj¾  ?&9 (@¦ÔFŽ—Ô@¬ãXpµÞ?Céñèz?5ß‚«tå?ƒ~-óF>¿?cd“(cõo@Ÿs Þ5gÓ@­@¢4bMÒò@¢4záG®@¢4bMÒò@¢4$%®æ2@¢4bMÒò@¢4$µÜÆ?@¢4bMÒò@¢4|í‘h@¢4bMÒò@¢4ô‡ü¹@¢4bMÒò@¢4=ÈK@«Iœ(õÂ@«Iž5?|ï@«Iœ(õÂ@«I˜DЩ@«Iœ(õÂ@«I–“u@«Iœ(õÂ@«I–“v@«Iœ(õÂ@«I©*1@«Iœ(õÂ@«I“üPI@7¹Œ~($@7“Ý—ö,@2€ Ä›¥ã@2wy¦µ @1ñ‰7Kƨ@1ëŸU›=@0𖻘Çã@0é=Ùb·@0𖻘Çã@0åzxl"h@0𖻘Çã@0åY³Ð|…?‚á²Olºü?›Î ¥/?˜þ÷þ†ø‰?‹ë¤½?‡á?’Z†Ažj?•8öJ&7µ?€‚ñêã ?”ºu(†¼¦?”aB#Gi?“mŸqa?‘êë·áþA?‘µEÂBÕl?”⦘¹Ô?šÑ~¿²Ô?Ÿ|–„aQ?ƒ*|š\/´?‰6‰õË?Š`½i=ÓØ@@@@@(@(?ð?ð?ð?ð?ð?ð?`« ß¿fŒ¾?QZËà˜Êœ?A¹†#‘t×@¢4ýjï`@«I—Î{¸™?p”_רÁs?bl°žÇðÃ?å«Ù7‹?Ëâí¡°z@ŸgŽœk,Æ@®@¤W‰7KÇ@¤W‰7KÇ@¤W‰7KÇ@¤W€4mÅÖ@¤W‰7KÇ@¤W}!ÿ.J@¤W‰7KÇ@¤WzáG®@¤W‰7KÇ@¤W{"Ðå`@¤W‰7KÇ@¤WzQÎ@® 6E¡ÊÁ@® 6‡+ @® 6E¡ÊÁ@® <„µÜÇ@® 6E¡ÊÁ@® :^5?|@® 6E¡ÊÁ@® ;ÚQÎ@® 6E¡ÊÁ@® 8Ôýóµ@® 6E¡ÊÁ@® 7$tSŽ@5(†YJôñ@5(ºÇË*@3E?|í‘h@3D¢3œ¿@3)Û"Ðå`@3*qÞi­C@2Š0U2a|@2ˆè§æ›@2Š0U2a|@2‡€4mÅÖ@2Š0U2a|@2ˆe”¯O?|¬Çëý ?qÂ' -B›?™™w4fà¨?”oý]Þ‡&?“´<×?“”üU§<­?|öOÿÝ?”Iõ`ÆÓ›?”Ÿ•/ø]Ÿ?“ÅÒÏPÉä?’LÁŒÀ´a?× ³¸ÑZ?‚q6tNø6?œ‘z¥æ?‰¢Ò+ÜÝ®€?–àa¦vf¥?«”©Î›?—ý>5Ptv@Ÿt/NB„¨@°@©õ?|í‘@©×Ûôˆ@©õ?|í‘@©DcÈwb@©õ?|í‘@©1lFp¦@©õ?|í‘@©em¥(×@©õ?|í‘@©:a2¬ @©õ?|í‘@©;T½B@™K9XbN@™K6E¡ÊÂ@™K9XbN@™Kº¹B|‘@™K9XbN@™KYðñ·¥@™K9XbN@™K"¦º@™K9XbN@™KP/½9ƒ@™K9XbN@™K\ŒyO@7#g ù l@7×srh@3ã÷ÎÙ‡@3×t•×ë@3“t¼@2ë¼Ù&'V@2Ê0U2a|@2°N"¥j @2Ê0U2a|@2¸†„Ö«@2Ê0U2a|@2°WPb‰K?|çµB &€? žˆ€¡AÒ?²Cý´È}?§!V™k?žó·eÿ€?™|**ú?˜ê?©úté?©x„œº¥?°€ĉ§?™‰rØï_?¡ ó„íó*?¬Ãëçu¾ñ? è+Áø?•LÔwy»?—³F:>^Ì?’Uÿg·„?™–B¢‚½?›ºÉIÜ'@@,@,@*@9@:?ð?ð?ð?ð?ð?ð?ŒH’À?oþã¨?ra÷`À?€±™¢×@©!jƒãb@™K[Ž |?”R¸6ý[?œ=ˆÇ= @ Qá¢-øô@ƒ¬2¯ð+@ŸgŽnÑ~Ï@±@®ÖÏ\(õÃ@®ÖÓ¶E¡Ë@®ÖÏ\(õÃ@®ÖÙJôðÙ@®ÖÏ\(õÃ@®ÖÊÚ¹õZ@®ÖÏ\(õÃ@®Ö½p£× @®ÖÏ\(õÃ@®ÖÈr° Å@®ÖÏ\(õÃ@®ÖЉ 'R@§Ï º^5?@§Ï C•@§Ï º^5?@§Ï¢œwš@§Ï º^5?@§Ï º^5?@§Ï º^5?@§Ï (Œç@§Ï º^5?@§Ï/Ÿ¾@§Ï º^5?@§ÏwškQ@7·â‚@·€@7¹õY³Ð|@4Ùº^5?}@4á|ÚQ@4A‰7KÇ@4¤¯O „M@4¡:’£S@4¹#¢œw›@4¡:’£S@4¿ò䎊r@4¡:’£S@4¿ö”Ft?°:-%šÀ?¡U¢WªÂ?Ÿýˆh¾b ?¥:-ê°Ü?ªSŸ÷2Ì?ª $Μ$´?3ßa=„?œ°¶.Ä+Æ?­Õ\K\¢?®b̤?©&5³ -M?£®µZš…g?‚nâwfÿ?‘Žèã&!+?£XßÏTo×?¤wúb¼?§^ÐÜ_žr?±Ö$•3É@@@@@*@$?ð?ð?ð?ð?ð?ð¾¾U#°?m:o˜?p d’$u?I©y÷@®ÖÈ&c’@§ÏcŒKM?‰}Qb’þ=?pNK¾Š?ß–’•?µ·ËT¶BÒ@Ÿltqå×ë@²@«p•%@«oÿ|í‘h@«p•%@«pS÷ÎÙ@«p•%@«pS÷ÎÙ@«p•%@«p‰7KÇ@«p•%@«p£n.±@«p•%@«p¶®}V@¯$]²-V@¯$`A‰7L@¯$]²-V@¯$[çl‹D@¯$]²-V@¯$_¾vÈ´@¯$]²-V@¯$]ó¶E¢@¯$]²-V@¯$^ߤ?æ@¯$]²-V@¯$a [À@7G>«6z@7DohÜ@2E?|í‘h@2Eœàu÷@1•`A‰7L@1•¨Xy=Ú@1:Ô,<ží@1;"Ðå`B@1:Ô,<ží@19Û"Ðå`@1:Ô,<ží@1:#9Àëî? Å{¿Ž<º?ZÁ».œ?‘ŸÇSñ?‹¦ ŸYÔ?‘ÏX¼ãs~?‘£‡9²þ?‚á²Olºü?’&u÷E»@?Œqç©Fü?1ð'7éÃ?‘Ú‚ýc¯?ú`@0k?—ÅΤ'Eë?GÚ -­ ?‚˜YªüÏF?‚ù8 ±^?‰]³ß’Ý?‰©OO ¨@@@@@@?ð?ð?ð?ð?ð?ð?B]ã:пk€?# ÆWV?7è±3)@«p׳I@¯$_«éÞï?9!–0rŽÇ?[›ÙQ?n3Ųb?¸Xñ¾4!@Ÿn$êX¿V@³@§Ù§ï²-@§ÙŸ;dZ@§Ù§ï²-@§Ù£,¥zw@§Ù§ï²-@§Ù¢Ðå`B@§Ù§ï²-@§Ù¡ [À@§Ù§ï²-@§ÙŸö”F@§Ù§ï²-@§Ùš^5?|@¥y’ñ©ûç@¥y²-@¥y’ñ©ûç@¥y—éùs@¥y’ñ©ûç@¥y—eýŠÛ@¥y’ñ©ûç@¥y—´¢3œ@¥y’ñ©ûç@¥y£n.²@¥y’ñ©ûç@¥y‡8}¿@7·â‚@·€@7¯ªÍžƒä@2ÎÙ‡+@28†YJõ@0²-V@0\ú¬Ùè@0OO „M@0M(Œç°@0OO „M@0B×sü@0OO „M@0C¢œwšl?}Ñ¿ž,?—ð:±µ~+?‘yß]³Õø?ŽÝ¡uÒ(r?Ÿ0 碽ü?Ÿ)áÚ/aW?Ž=fA:?••´þDê‘?’TÖ©E?“¶Ì¶Öj”?¨ª±(‹yK?  -ýt¨!à? t€4Â?GÚ -­ ?ƒ<Õp?„ mŠmsi?“÷Š>õª?•ƒ•&+B@@@@@,@,?ð?ð?ð?ð?ð?𿠺Ǫ ¿FÞ~ô?CÚ³;¼?c1!ðìÛ™@§ÙŸ0²ï—@¥y ~_X?bSù#ññÿ?t÷Kç?ÚÁ¶IÉ?óDíßd@Ÿeíoˆê@´@¢¶˜“t¼j@¢¶Ÿ¾vÈ´@¢¶˜“t¼j@¢¶Æs×Ü@¢¶˜“t¼j@¢¶µµsê³@¢¶˜“t¼j@¢¶¸ï4Ö¡@¢¶˜“t¼j@¢¶µÏªÍŸ@¢¶˜“t¼j@¢¶¶”Fs‚@ ón—P@ ó"Ðå`@ ón—P@ ó=¿HÌ@ ón—P@ ó<‘ÑN<@ ón—P@ ó@IQ‚@ ón—P@ ó2ñ©ûç@ ón—P@ ó9JôðØ@6[¹Œ~($@6RþÅm\ú@2©‡+ @2vÂ&€I@1®ùÛ"Ðæ@1Šxl"h -@1O „M@0ê0U2a|@1O „M@0ê)Çy¦µ@1O „M@0éDg8~?‚á²Olºü?—.‰†5¸?˜/×T•£ð?‘sNX„êÒ?˜BaÖœÈ?”OPlðó[?‚á²Olºü?±µŠá¤V?¦Öµ gø?™Ücãgp?s»Hz¾?–¼åCÝqÕ?–]_«Q?Žrø·óæ?Ž“‹}Tz?…bv{3dZ?‰_uñšó?‹¼`’ i2@@@@@(@$?ð?ð?ð?ð?ð?ð?vÝ%¥ä€?|n””R?[q<Ço?b»8-O~ø@¢¶¬Äx´-@ ó*×0kˆ?{Ê^ -/ò?ƒ>ù—Œ•Ú?øW÷p½@ˆ‹{ù @ŸfvÇn‹@µ@­Wçl‹C–@­Wçl‹C–@­Wçl‹C–@­WèË’:@­Wçl‹C–@­Wèr° Å@­Wçl‹C–@­Wè§æœ@­Wçl‹C–@­Wæs×Ü@­Wçl‹C–@­WæL/ƒ{@«rQë…¸@«rQë…¸@«rQë…¸@«rQë…¸@«rQë…¸@«rRn—P@«rQë…¸@«rRòä@«rQë…¸@«rRòä@«rQë…¸@«rR{²þÅ@/“œ¾ß¤@/“œ¾ß¤@)MV“@)M(Œç¯@'è1&éxÕ@'èð¹@'”`ªdÂù@'”`ªdÂù@'”`ªdÂù@'”`ªdÂù@'”`ªdÂù@'”SŽóMk?É^žQ5P‚?Æ¿5›7÷?‘Ûü†Nã?‹ª½¨ª8v?êtÿKÑc?¶*WFÑ?ÐbMçê_x?’ ,øÕC©?|™,Ž!?/ò×ÈZø?Ó%y*£=?M\³Ù“@?€bMÕky?Œ¬Çëý ?‚oÁÆÜ§÷?‚äÍ“½E'?†‰Oú|q?†ˆ#.÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿QhUÌ>?#6b”¼?3ß{È~*|?5;· ¢\@­WçKHw@«rR:À×?C} V?!<(âÃ?ø'ƒÅ{¥?:Tª9Ot@ŸsM9 @¶@®ü±&éxÕ@®ü±&éxÕ@®ü±&éxÕ@®ü° Ä›¥@®ü±&éxÕ@®ü±&éxÖ@®ü±&éxÕ@®ü°£× -=@®ü±&éxÕ@®ü¯ „M@®ü±&éxÕ@®ü¯–»™@¨$<í‘hs@¨$=/Ÿ¾@¨$<í‘hs@¨$=Ùb¸@¨$<í‘hs@¨$=—ö+k@¨$<í‘hs@¨$>Ov_Ù@¨$<í‘hs@¨$=ŠÚ¹ô@¨$<í‘hs@¨$>š@3›¹Œ~($@3›~ÿ—$@.…`A‰7K@.„?åÉ@,‘&éxÔþ@,–»˜Çä@+™b¶®~@+˜y=Ùd@+™b¶®~@+˜ºÇË+@+™b¶®~@+˜†YJôð?}Ñ¿ž,?ÖÈ ¼?‘!!Ø×‹7?‹ÁË…ÉT?÷6r In?ºª$Ð?|öOÿÝ?’ÍîfÕ?~ËQ§?;ß $Þû?ÝIMÎ?PS2K¯™?‚s@ˆaÚ?Œ¸†‡ÄÅ?‚yî8Á$?‚äÍ“½E'?†½ª»—?†l&þ@@@@@(@*?ð?ð?ð?ð?ð?ð¿8 øp?'ô3Y? e0ÌL?„i¨‡ã@®ü°`F@Q@¨$= nHè?<í ’Žrß?9€7®†Ê?†B6 n™K?€@ÃYx<¢@Ÿg¤&Qó@·@¦½÷ÎÙ@¦½t¼j@¦½÷ÎÙ@¦½¹ª Ï@¦½÷ÎÙ@¦½ÞAª@¦½÷ÎÙ@¦½¬l=W@¦½÷ÎÙ@¦½Š-$@¦½÷ÎÙ@¦½\fÈ—@™9ê~ùÛ#@™9ë…¸R@™9ê~ùÛ#@™9ìëÕ>I@™9ê~ùÛ#@™9é*0U2@™9ê~ùÛ#@™9ë?Oêå@™9ê~ùÛ#@™9ì¬× @™9ê~ùÛ#@™9ñÄ2ÊX@47â‚@·€@47ú=@ÒF@0f‡+ J@0fe¸×´.@/ÊÀƒn@/¹»#?@.p‰ 'RU@.pì¹—"…@.p‰ 'RU@.s˃Úî@.p‰ 'RU@.s,„Ý?}@T˜ÁÎ¥?ço -W¤?‘@Ѹü?‹¬LdTËO?ùØGBx‡?Ýž¡¾{?}@T˜ÁÎ¥?’hjSƒ?‘‘Sù`ï?0×rà…“?é‚t]r?ÇgTפµÜÆ@0n5?|í‘@0‹J#9Àë@0ï²-@0($ x@0Œ~($ @0p°ò{²ÿ@0Œ~($ Á.„NÜC,¥@0Œ~($ Á.„NÜC,¥@8 -Näy?¨^S2{Ž¡?ºÃU¼í÷É?®½;Ñw~4@8Iç@8Ù@82rê?¡–}y¢‘?¸6kùÔ?°ìô¥MŠ#@8S@8û—@8L?«ë"{Ę?°Mêʸ?Á*Á½ÄvZ@8 Ø@8 Ø@@@?ð?ð?ðøøøøøøøøøøøø¹@®î-V@®î,‹C•@®î-V@®î..±Ä3@®î-V@®î.æ1ø¢@®î-V@®î-Oß;d@®î-V@®î+’:)Ç@®î-VÁ.„€@¨ÿ¸Qì@¨ÿ›¥ãT@¨ÿ¸Qì@¨ÿðŽ@¨ÿ¸Qì@¨ÿ€IS@¨ÿ¸Qì@¨ÿýŠÚº@¨ÿ¸Qì@¨ÿ¢œwš@¨ÿ¸QìÁ.„€@6‰Î_oÒ@6‰îËû¶@2«¥ãS÷Ï@2¬¾ß¤@@2PA‰7KÇ@2OŠ Þ@1£ÉîËû@1¤ŽŠqÞj@1£ÉîËû@1£œ¾ß¤@1£ÉîËûÁ.„NÜC,¥?}Ñ¿ž,??ÖCã ?’´ýBI{?Uÿyu”#?’o?P´À@8Ù?}Ñ¿ž,?’V"y$R?‘K54;­?øQñĨó?’öhšº–Ï@8û—?Œ¢yëjk±?lío>÷?ˆïhƒEõ§?Œ(æQ?ˆA0û)n@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøøº@¬ü‹Æ§ïž@¬ü‹Æ§ïŸ@¬ü‹Æ§ïž@¬üquŽ@¬ü‹Æ§ïž@¬üŒVÕÏ«@¬ü‹Æ§ïž@¬üqu@¬ü‹Æ§ïž@¬ü‹Æ§ïŸ@¬ü‹Æ§ïž@¬ü‹C,¦@¬†”ýó¶F@¬†–‡+ @¬†”ýó¶F@¬†˜l"h -@¬†”ýó¶F@¬†—éùs@¬†”ýó¶F@¬†˜l"h -@¬†”ýó¶F@¬†˜Ôýó·@¬†”ýó¶F@¬†™Û"Ðæ@4ºqÞi­C@4º^5?|î@0ë¥ãS÷Î@0êxl"h -@0H“t¼j@0G8}¿H@/QÑN;Í6@/OAò×t@/QÑN;Í6@/N!–R½=@/QÑN;Í6@/M\ú¬Ùé?}Ñ¿ž,? ¸×KG?’5 µ¿$„?ŒªèkÜ?‘¿ÐÅu?‘)]•\¬?}Ñ¿ž,?“«ö„@×®?’TÖ©E?£û,Ɇ?‘!U?Ð{Ò?‘õe\Š«p?‚q6tNø6?ŒïQ¼º“ã?ƒÆ×q„nð?ƒË´ÔC¶¼?‡v>ª¸ ?ˆCns¥ @@@@@$@*?ð?ð?ð?ð?ð?ð¾»Ã½?E6áI?+’_¹6w²?ë@6 -^5?|íÁ.„M‰ûçm@5ß²-VÁ.„QnÙ‡@5ò䎊rÁ.„NÜC,¥@5ò䎊rÁ.„NÜC,¥@5ò䎊rÁ.„NÜC,¥?›’qvš°•@8#˜@8¾:@8 >+@8Iç@8Ù?óA[ØïF@8Î÷@8i§@8Å@8S@8û—?Žd°3š>@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø¼@§œ.—Oß@§œ"Ðå`B@§œ.—Oß@§œ(e”¯O@§œ.—Oß@§œ€4mÆ@§œ.—Oß@§œ¦µ @§œ.—Oß@§œquŽ!@§œ.—Oß@§œÕϪÎ@¨%Õ%@¨%¥¡ÊÀƒ@¨%Õ%@¨%Á$Ý/@¨%Õ%@¨%ɺ^5?@¨%Õ%@¨%ÑÞi­C@¨%Õ%@¨%³Ãa@@¨%Õ%@¨%»/ìVÕ@8įO „M@8­æšÔ,<@4Iº^5?@4Ñ·Xâ@3©Û"Ðå`@3oÒòä@3!:’£S@3¾ß¤?æ@3!:’£S@3 àÞÒ‰@3!:’£S@3 ú¬Ùè>?´ Z è´ß?£-Ÿ56æ+?»˜èèay?ªE> Ì?¬ ‰M%?§ÙYlãp?¦NIÉ®š?¤³u¿9õ“?·Gž¿£ö?²8”k -7H?°¬ ô ô?ª.Wæ—“?«yWRÉqf?“&•Z÷˜#?—eI¥Ð6?“DάR²? ¦å_¹?¡è9)—N-@@@@@,@,?ð?ð?ð?ð?ð?ð¿`ã~•g?q­ýãÎ?I"¾{mþ¥?p"/Ñpë@§œ -ðð¤@¨%·W°O?cùz[á·?‘>›Ç4.?D–ÇÃ,?ç-§oÚ @ŸmÄÙ.Þ@½@¡¾Ù‡+@¡¾ÙXbN@¡¾Ù‡+@¡¾Ú^5?}@¡¾Ù‡+@¡¾Ù³Ð|…@¡¾Ù‡+@¡¾Ú¬1@¡¾Ù‡+@¡¾×Ûô‡ý@¡¾Ù‡+@¡¾Ø7´¢3@ªnKƧïž@ªnKƧïž@ªnKƧïž@ªnL1&é@ªnKƧïž@ªnKíúCþ@ªnKƧïž@ªnLcñA @ªnKƧïž@ªnL¥zxl@ªnKƧïž@ªnL˜_÷@2úqÞi­C@2ú~ùÛ"Ñ@-{"Ðå`A@-{W>«6z@,|¬1&ê@,|ÓZ…‡•@+Bu%F -§@+Bh Ô•@+Bu%F -§@+BÞÑ·@+Bu%F -§@+BÐå`AŠ?É_\p)Ï?ÉGãA­÷?‘"žæÆó¡?‹½XQê>æ?íOþtà?¼‚Ë¡K?ÐbMçê_x?’ ,øÕC©?~ËQ§?9ÍÇ~FÀ?Ó%y*£=?M\³Ù“@?€cPßQª?Œ°¶.Ä+Æ?‚yî8Á$?‚æÊ¬vã?†½ª»—?†–f_ÔŠŠ@@@@@*@(?ð?ð?ð?ð?ð?ð¿MM˜v²?I}˜?9n©QËÛv? ¢²z2q¼@¡¾ØáA2C@ªnL‡’S?Hsƒ³·8?B[M‘kN?P:î»L‚?)̬w ˆr@Ÿs ‡p@¾@ªÅɺ^5?@ªÆ[¥ãSø@ªÅɺ^5?@ªÅ‹¬q ³@ªÅɺ^5?@ªÅA½¥ž@ªÅɺ^5?@ªÅˆ1&éy@ªÅɺ^5?@ªÅÝæšÔ-@ªÅɺ^5?@ªÅÞÑ·@«‚ Iº^@«ÊÀƒo@«‚ Iº^@«XüPH@«‚ Iº^@«féxÔþ@«‚ Iº^@«;Í5¨X@«‚ Iº^@«Z^5?}@«‚ Iº^@«nóMj@9šÔ,<Ÿ@9ØK]Ìcñ@4E?|í‘h@4#¯·éù@3È“t¼j@3 Ë)^ž@2Ê0U2a|@2¤•*™1@2Ê0U2a|@2®ÿ—$t@2Ê0U2a|@2²×sü?ð°–Ž]?¬97êºþ?½$°¦×›?³U oiý?«oDŽ?®¿sY°(?ð°–Ž]?±Îæ.ð»?²P#G¤Ó—?Àý¾!=?µ•^o i¤?§yÂ~3Y?ð*wjs—?“¢ ßÌF2?¥1?⇦?œX^2If=?œ EÝ‘z6?¤²¢Òó?ð@@@@,@*?ð?ð?ð?ð?ð?ð?¡`1`?“µª›>@?‘ʹÄ\Îë?}ò«_ÃÑ@ªÅËщ)@«\W²?eаÒê?Š*n’ƒØR?õ¦›;XA?Âd«DÉð%@ŸuF¢º{@¿@£›~vÈ´9@£œ$Ý/Ÿ@£›~vÈ´9@£›PbMÒò@£›~vÈ´9@£›y³Ð|…@£›~vÈ´9@£›„tSŽó@£›~vÈ´9@£›r° Äœ@£›~vÈ´9@£›m‘hr¯@¥Ñó¶E¡Ë@¥ÑÉ7Kƨ@¥Ñó¶E¡Ë@¥Ò Ùè>B@¥Ñó¶E¡Ë@¥Ò\(õÃ@¥Ñó¶E¡Ë@¥Ò¶®}V@¥Ñó¶E¡Ë@¥ÑøÇâ‚A@¥Ñó¶E¡Ë@¥ÑÿåÉ@8Q|ÚQ@8 bMÒñª@4R Iº^5@4Rñ©ûçl@3;Ƨï²@34ã¼ÓZ†@2”mÅÖ8†@2’h Ô•@2”mÅÖ8†@2¼@2”mÅÖ8†@2’ëC,¦?æf¯Ìi„¸?©V½jnè¶?”âLñ¹D?”ÑD²Û?•Äí¥×?šæ5ƒ‹Å‹?ÅÇGË`O_?§S„ë`c?’€fç½Î?™MßïšNÆ?” E®!—?˜¿Df©v=?Õ ºúÔ©ù?¢r«X™÷?‚¯­Ù¤Á¶?’wÓ^2&Ú?‘¬xÆ×S?•*†*Zû@@@@@"@*?ð?ð?ð?ð?ð?ð¿…÷­[@¾áòM@?dúÖÓÈÚ?r¨›ÈwJn@£›wŸåHæ@¥ÑýAgQ$?rÛ²>*.­?€³ŠWdÅ?ÐYEÝn/?é5<Éqx%@ŸsKú¤V{@À@«Š(õÂ\@«Š(H¾µ³@«Š(õÂ\@«Š)Ý 4$@«Š(õÂ\@«Š+›Ž‘•@«Š(õÂ\@«Š*^>åp@«Š(õÂ\@«Š)O^Ux@«Š(õÂ\@«Š(ùBúH@š_;dZ@š_;dZ@š_;dZ@šaêù½s@š_;dZ@šaSÚ*P@š_;dZ@šb;@š_;dZ@š`êøu@š_;dZ@šc)fÔ@3«µsê´@3« ¢t#*@0?|í‘h@0ÓÈ™-å@/ÊÀƒn@/€Ç:¼”p@.³üPH@.±×Ûô‡ý@.³üPH@.±~5@.³üPH@.±lðîcŒ?~Ov_Ø­«?ÐzÀ ?‘/S}]û?‹ÇZk÷8?‘dƒ25Û?Êû«?|¬h2:“?’ óž;a?ƒ+GÍ·?Z3—Ñ^:@«Š)×»ÿ@š`Ðïå?L’ž£TÀ?8ñš¨Á?¥ti–´^?€Í|pòÞ@ŸgÏ„ÂÏ@Á@£ Ƨïž@£¤¨ÁU@£ Ƨïž@£FÜ]cˆ@£ Ƨïž@£”¢3œ@£ Ƨïž@£ q ²—@£ Ƨïž@£ÞùÛ"Ñ@£ ƧïžÁ.„€@wÎÙ‡@ƒn—@wÎÙ‡@¿|í‘h@wÎÙ‡@‰…ðoi@wÎÙ‡@œý33333@wÎÙ‡@œþŸ¤?åÊ@wÎÙ‡Á.„€@3£g ù l@3“˜µ--š@0B° Ä›¦@/Ë]ÌcñA@/dZ¬@.[šu%@.žžš@-hr° Äœ@.žžš@- ƒn—Ž@.žžšÁ.„NÜC,¥?|çµB &€?ÐÏbl$‡I?¾TìÄË[?ªE> Ì?Ù Øq—×&@8Ù?}@T˜ÁÎ¥?Ø£áú?¤´ë'‰O?²20&† ?ÙôqéJö@8û—?ŠÐQØÚ3Ö?¥C‡y¿^?‘MM….äí?œq*ƒÒ?ªÃ4|ñ;@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøøÂ@¨PùXbN@¨Pù™™™š@¨PùXbN@¨Q L˜_@¨PùXbN@¨Q Òñ©ü@¨PùXbN@¨Q?U›=@¨PùXbN@¨Q%œàu@¨PùXbN@¨QÅm\û@ -8Që…@ -9õY³Ð@ -8Që…@ -BÃÉîÌ@ -8Që…@ ý¿HË@ -8Që…@ -@ -8Që…@ -ƒä%°@ -8Që…@ -&ÏAò@5°4mÅÖ8@5­äËXê@1¸r° Äœ@1­¿HË’@1$¼j~ùÛ@1Â\(ö@0ëxFÜ^@0Í\ú¬Ùè@0ëxFÜ^@0Ñ$Ý/@0ëxFÜ^@0Ò‚@·€5?ŽÕQp Î?¢{V ‰]?¦zNaË Ð?´Ød¯]QÍ?²…Ð$þ"?±ùÐ % -?|çµB &€?›–ë•ñ^?¡î-™5×U?©| 5r4?§þwÏÇÏ??¬;•{cÉâ?ƒNeý¡|?•¾Ä6Ü?¡]mZRØ?–Ô¿»X¨?ÉJ6Л?§^ÐÜ_žr@@@@@,@,?ð?ð?ð?ð?ð?ð?†-Œa>€¿p ç•Ô?qJ{ü{†B?bmmd*@¨Q!B~ @ -1p,µ|?„ ²Ó•?v¦æ¶]t?òÖpøëwe?å D­§@Ÿ^ãÿs@Ã@£ÝZŸ¾vÉ@£ÝHõÂ\@£ÝZŸ¾vÉ@£Ýe¡ÊÀƒ@£ÝZŸ¾vÉ@£ÝX7´¢5@£ÝZŸ¾vÉ@£ÝZÇË(@£ÝZŸ¾vÉ@£ÝQœàu÷@£ÝZŸ¾vÉ@£ÝYrGE9@¡ýô¼j~ú@¡ýëÆ§ïž@¡ýô¼j~ú@¡ýò-V@¡ýô¼j~ú@¡ýâÐå`B@¡ýô¼j~ú@¡ýìcñA @¡ýô¼j~ú@¡ýíÒñ©ü@¡ýô¼j~ú@¡ýø“t¼j@9 ]cˆe•@9,žì¿±\@4f‡+ J@4_v_Ø­¬@3ù7KƧð@3àù k¹Œ@2æYJôðØ@2ܬ1&ê@2æYJôðØ@2Ýw1Å@2æYJôðØ@2ÝÌcñA!?°:-%šÀ?šÏD²öå ?¢{Xn |?nii)â?‘ÏX¼ãs~?˜Ê`1ó€`?±Á1È$å@¡a«n;¡È@¤ù¨ŠÛØÂ?R–2Œ¢K0?XàA6:•4?±SJDÎ?¹ `œG+L@Ÿgæ·Cmˆ@Å@«>B Iº^@«>D›¥ãU@«>B Iº^@«>A½¥@«>B Iº^@«>Aaä÷f@«>B Iº^@«>>BZîd@«>B Iº^@«><àuöý@«>B Iº^@«>=¿HÌ@£, Iº^@£+üj~ùÛ@£, Iº^@£,n—@£, Iº^@£,÷eý‹@£, Iº^@£,'RTa@£, Iº^@£,-à @£, Iº^@£,Š @7õS&Á¾@7ò×sü@3R Iº^5@3Qø -à@2ö§ï²-@2øXy=Ù€@1úÔ,<ží@1úÔ,<ží@1úÔ,<ží@1ùŒ~($ @1úÔ,<ží@1ù=Ùb·?îŠõ ?’Mj…•Ì‘?•]˜P?Ég(6ßð?’»–j˜ú?’Ýå"çX?}Ñ¿ž,?’“ºƒ;Nû?“÷Š>õª?‘aYZ†«q?”¤¦ð¹e?‘]Ë™$ë>? ¹aÕm ?ŽOv_Ø­«?‡»¢Øˆ‹?„†YÊ’È?ˆÔÞÑ—æJ?ˆ‹”âó@@@@@,@(?ð?ð?ð?ð?ð?ð¿Tu!ˆ¤?TþÝ×z?Bã¸1–71?ú ›å‰@«>>æo¬9@£,AÆ6?\Nvpß´?Cîàl9¼BZî@œÞ³3333@œÞ®}Vlô@œÞ³3333@œÞ³œ¾à@œÞ³3333@œÞÏAò×@œÞ³3333@œÞÚÔ,<ž@7 xFÜ@7ú]|@33S÷ÎÙ@37ÎÙ‡+@2Z~ùÛ"Ñ@2]‘hr°!@1Þ«6z‘@1ã÷ÎÙˆ@1Þ«6z‘@1èõÂ\)@1Þ«6z‘@1åL˜_÷?‡‡á´WÉ?¥nÇx?)?’>¯\¾¦?Žl¢¦µ¥?’¥.Kn Í?–yí+PYu?‡ D¥…ô?’LÁŒÀ´a?’¤šÜI«?ni"Í š?•¯ÃþƒR?—é aÀ‹å?ÚžQâa?Žâç.¡È?‘7#Œ!xv?Ž0 ½~ÿ?Š|)-}í(?„å;m7.@@@@@*@(?ð?ð?ð?ð?ð?ð¿eÎ8Q6?f Ý - ?2¿ü„‡Š?[*˜úTq@ªçŽ5§_@œÞÁDI¯?Q¶¢eTë?z±…§ -Ó?£¸â¦’ ?ó‡¢eb·@@ŸhŽ^dJÂ@Ç@§æ° Ä›¦@§æ¤Z¬@§æ° Ä›¦@§æ±N;Í6@§æ° Ä›¦@§æ°¾ í*@§æ° Ä›¦@§æ°|„µÝ@§æ° Ä›¦@§æ¯hÛŒ@§æ° Ä›¦@§æ¯\(õÃ@§KŠ=p£×@§KKC•@§KŠ=p£×@§K‹ŸU›<@§KŠ=p£×@§KŠW§†Â@§KŠ=p£×@§KŠÀƒp@§KŠ=p£×@§K‹6z‘@§KŠ=p£×@§K‹]Ìcò@7wâ‚@·€@7.ߤ?åÉ@1!hr° Ä@1 uöý!ÿ@0Ÿ²-V@0¡&éxÔþ@/ÑÑN;Í6@/Òn—Oß@/ÑÑN;Í6@/Òn—Oà@/ÑÑN;Í6@/Ò¼£o?¯ò5}'Î?Čۨ1A?‘\H{gX ?‹¬àÌ’Ç?‘'¬Å™» ?‘<ƒÜ_õ?¯ò5}'Î?’r/BÖ?‘c–…•#$?6) }’ë?‘Jâ”âj?¦QÎð\ã?–½™C)?†¡HŸÊç?ˆdÁ --?‚ù8 ±^?‡<û¡71?‡ã ËÄž@@@@@,@,?ð?ð?ð?ð?ð?ð?0ºsæ¸?r´g“á@?R&¥úPåp?tçQTb¹Ç@§æ¯¥ë @§Kˆš8iù?cUWé~??†÷n­h–?Â+‘ ð>æ@S—Ç8X@ŸqJ›’j³@È@¯aG®{@¯a‰7KÇ@¯aG®{@¯aÊÀƒ@¯aG®{@¯bZîc @¯aG®{@¯b‚@·€@¯aG®{@¯`4mÅÖ@¯aG®{@¯`4mÅÖ@©å™™™™š@©å™Û"Ðå@©å™™™™š@©å™õY³Ð@©å™™™™š@©åškP°ò@©å™™™™š@©åšŸ¾vÉ@©å™™™™š@©åšu%F@©å™™™™š@©åš¬1@/KíúCþ\@/KíúCþ\@(a‰7Kƨ@(a|ÚQ@(¿;dZ¬@(¿;dZ¬@'#¼ÓZ…ˆ@'#¼ÓZ…ˆ@'#¼ÓZ…ˆ@'#¼ÓZ…ˆ@'#¼ÓZ…ˆ@'#¼ÓZ…ˆ?É_\p)Ï?Čۨ1A?‘!!Ø×‹7?‹ª½¨ª8v?ëÎ@ A2?ºª$Ð?ÐbV‡,?’˜‰%F²?„¦Ô•]I?-õI¸`K?Ó%y*£=?L "¾?€b¡´ñ@?Œ¬Çëý ?‚oÁÆÜ§÷?‚ãaÎúvh?†ˆ#.÷?†ˆ#.÷@@@@@,@,?ð?ð?ð?ð?ð?ð¿QAÁâ¿-Þ úx?6/³q ?OÓ+7 @¯a#¨˜@©åšG¶+?EUt_”îº?,±îDÔØ?†_n’?RÐHH<@ŸsÃÁñ“@É@£ ¥ãS÷Ï@£ |í‘h@£ ¥ãS÷ÏÁ.„€@£ ¥ãS÷ÏÁ.„€@£ ¥ãS÷ÏÁ.„€@£ ¥ãS÷ÏÁ.„€@£ ¥ãS÷ÏÁ.„€@ º^5?}@ × -=p¤@ º^5?}Á.„€@ º^5?}Á.„€@ º^5?}Á.„€@ º^5?}Á.„€@ º^5?}Á.„€@6wâ‚@·€@6fý!ÿ.I@2{ Iº^Á.„M‰ûçm@1Ͳ-VÁ.„QnÙ‡@1®_oÒ Á.„NÜC,¥@1®_oÒ Á.„NÜC,¥@1®_oÒ Á.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøøÊ@ ´œ(õÂ@ ´œL’o”@ ´œ(õÂ@ ´¢ê‰Åâ@ ´œ(õÂ@ ´©×>@ ´œ(õÂ@ ´£ÁÍ7@ ´œ(õÂ@ ´¤,Få@ ´œ(õÂ@ ´¢æâ8ù@¡AÀ@¡A½²-V@¡AÀ@¡A¾9Ïl@¡AÀ@¡Aµžœ~@¡AÀ@¡A¹ÚmpÒ@¡AÀ@¡Aµ”.Ü@¡AÀ@¡A¼Ô¹v@6è†YJôñ@6ïÊÓ¤°ó@2…?|í‘h@2ˆU2a|@2"-V@2*ì¸mÕ@1p–»˜Çã@1v<é&C@1p–»˜Çã@1vµ0­°@1p–»˜Çã@1wT‡x§?…ðE[i)?¤ûHˆ?”mX!—î%?ìÌ$8ëå?“Œ(ša?“[é˜Áo?|¬h2:“?’¬ÄþõŒƒ?“eÆŸ¡ì?‘X«*_?“™EÈeØ_?“Eï®ÖÂ?‡~P[—]?Ö(‚¬›í?Ø{Ñ—5?‡ºs´6ô?Šw‹/Éxv?Š¢“öÎ×@@&@&@&@4@2?ð?ð?ð?ð?ð?ð?[ϦÔÀ¿NØ]ÇH?BÛ±=î?G_iºøñ@ ´ » €Þ@¡A»Y~D?a—k/™?hYš§à¡K?Å9ž~f?ØàF2¡è@Ÿg»&8£t@Ë@¤Ñ&ffff@¤Ñ&éxÔþ@¤Ñ&ffff@¤Ñ!ÊÀƒ@¤Ñ&ffff@¤Ñ* Þ@¤Ñ&ffff@¤Ñ'ÈK]Ì@¤Ñ&ffff@¤Ñ'»/ìW@¤Ñ&ffff@¤Ñ#þ\‘Ð@© :^5?}@© ;çl‹D@© :^5?}@© 2° Äœ@© :^5?}@© 5sê³g@© :^5?}@© ;À6ã@© :^5?}@© 4¯O „@© :^5?}@© 4ã¼Ó[@6‡>«6z@6‡>«6z@3@ Ä›¥ã@3=ÅÖ8†Y@3 "Ðå`B@3fffff@2\ÚQÎ@2ZQÎ`@2\ÚQÎ@2YJôðØE@2\ÚQÎ@2XË’:*?€‚ñêã ?éDEâ©Ö?™ïfô?‹ÁË…ÉT?”?õ±oW?“ d?Œs¤DÅÐ?“eB^¤t?š }Õ>_?agÌf ?”GO˺Ÿû?“.½þ¹Š?—eI¥Ð5?ŒÐ¤Âÿê?‘bR?ˆã1µR?‹Ûx§Þ?‰ö±«tï@@@@@,@(?ð?ð?ð?ð?ð?ð¿*‰²R ¿XÛ7t?8üè2ÔÀ?F9\cÑ@¤Ñ&¦%?š@© 9—>®?YÓ:´\¦³?e€):?¹ñ…À4†>?È‘ÐRTt@ŸiJwÆ?S@Ì@ŸÙ¦éxÔþ@ŸÙ£ØVvL@ŸÙ¦éxÔþÁ.„€@ŸÙ¦éxÔþÁ.„€@ŸÙ¦éxÔþÁ.„€@ŸÙ¦éxÔþÁ.„€@ŸÙ¦éxÔþÁ.„€@§X˜“t¼j@§X˜“t¼j@§X˜“t¼jÁ.„€@§X˜“t¼jÁ.„€@§X˜“t¼jÁ.„€@§X˜“t¼jÁ.„€@§X˜“t¼jÁ.„€@6zqÞi­C@6{(ò}qv@2{ Iº^Á.„M‰ûçm@1€å`A‰7Á.„QnÙ‡@1TmÅÖ8†Á.„NÜC,¥@1TmÅÖ8†Á.„NÜC,¥@1TmÅÖ8†Á.„NÜC,¥?|¬Æ Væ@8#˜@8¾:@8 >+@8Iç@8Ù?‚n—Oß<@8Î÷@8i§@8Å@8S@8û—?„&z7 @8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÍ@¡AÊÀƒo@¡AÊÀƒp@¡AÊÀƒo@¡AË0#Y@¡AÊÀƒo@¡AˆÉb@¡AÊÀƒo@¡AÊí^Åš@¡AÊÀƒo@¡AËZéô@¡AÊÀƒo@¡AÊÏÏ/@˜ÊŽV“@˜ÊŽV“@˜ÊŽV“@˜Ê؆8@˜ÊŽV“@˜ÊNGcX@˜ÊŽV“@˜ÊŽæ¥­@˜ÊŽV“@˜Ê‹liQ@˜ÊŽV“@˜ÊŒ–5R@1T xFÜ@1T!-w2@,æ§ï²-@,æ¯åAçÖ@,DZ¬1@,E:wˆÿ)@+̲•éá±@+ÏÅ`X­@+̲•éá±@+ÊN–Êï“@+̲•éá±@+Ê¥Û­‹?É^ÈmÔ d?Ôä'µ‡?‘7%Y´£?‹ùùã0of?‘í‡6Q?Æi·¼?ÐbMÝn½?’ X¬ä7?|™~o¬?¼´ÔC¥©? -ÐÎË—½@ŸsÔÔ6›@Î@ bMÒò@ Ë+ô@ bMÒò@ kÅ4@ bMÒò@ Jîé@ bMÒò@ Ä2ÊY@ bMÒò@  Åy¨'@ bMÒò@  €åÛ‡@¤Á'ï²-@¤Á'ï²,@¤Á'ï²-@¤Á(§ËÊ•@¤Á'ï²-@¤Á( Ô•@¤Á'ï²-@¤Á(; €@¤Á'ï²-@¤Á(IÒ"3@¤Á'ï²-@¤Á'Û±l@5m¥œàv@5mvä ×ø@0µãS÷ÎÙ@0µƒ¥;ŽL@0A‰7KÇ@0È6g¸?@.Âu%F -§@.Á]2XÕ@.Âu%F -§@.ÀIQ‚ª@.Âu%F -§@.ÀQ-lºÊ?}x—™ÿ›þ€?<'êˆ_Ì? -V–±¯ @ g!Û÷@¤Á(m&?\Ú€Ö§ì?*ß ‰Q&^?Å„³Ðïþ?aaÔúÁ…¢@Ÿga»5m.@Ï@¡ú!ÊÀƒ@¡ú#n—@¡ú!ÊÀƒ@¡ú"\(ö@¡ú!ÊÀƒ@¡ú"©“ á@¡ú!ÊÀƒ@¡ú"MÒñ©@¡ú!ÊÀƒ@¡ú"Zîc @¡ú!ÊÀƒ@¡ú!aä÷f@«™s¶E¡Ë@«™s3333@«™s¶E¡Ë@«™w$tS@«™s¶E¡Ë@«™tFsØ@«™s¶E¡Ë@«™wKƧð@«™s¶E¡Ë@«™t9Xb@«™s¶E¡Ë@«™sÝ—ö*@5¿–»˜È@5¿U›=È@2B° Ä›¦@2B&€IQ@1Z~ùÛ"Ñ@1Z¬1'@0𖻘Çã@0ïò䎊r@0𖻘Çã@0ð6âë@0𖻘Çã@0ð‰ 'RT?|öOÿÝ?/³)sšÌ?’#ç}iïë?F‘q/b?‘'¬Å™» ?’_‘Oo¨Ž?€‚ñêã ?’u¦ieõ–?‘å†36åG?‘Nw]6»ô?øóéM Ÿ?ú`@0k?‡»¢Øˆ‹?R©i»èi?ƒ~¨õ/¥O?ƒÛ®«etZ?†¼Š˜L¥÷?‰®ââP\@@@@@$@*?ð?ð?ð?ð?ð?ð¿2T—,P?4, B`?(,/#´¢?<7Ȥçù@¡ú"vÁ -@«™t,9Ýû?0*…yŒ±ƒ?\£›»ûg?iÝCt`?®„ðÿhŠ@Ÿg/À<Á¡@Ð@ œ7ÎÙ‡Á.„€@ œ7ÎÙ‡Á.„€@ œ7ÎÙ‡Á.„€@ œ7ÎÙ‡Á.„€@ œ7ÎÙ‡Á.„€@ œ7ÎÙ‡Á.„€@vD›¥ãTÁ.„€@vD›¥ãTÁ.„€@vD›¥ãTÁ.„€@vD›¥ãTÁ.„€@vD›¥ãTÁ.„€@vD›¥ãTÁ.„€@8Žì¿±[XÁ.„>¤µÜÆ@4ÇÎÙ‡+Á.„M‰ûçm@4;Ƨï²Á.„QnÙ‡@3ëxFÜ^Á.„NÜC,¥@3ëxFÜ^Á.„NÜC,¥@3ëxFÜ^Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÑ@ª ž¸Që…@ª ©ûçlŒ@ª ž¸Që…@ª ”¢3œ@ª ž¸Që…@ª ¡G®{@ª ž¸Që…@ª ˜Ôýó¶@ª ž¸Që…@ª ’° Ä@ª ž¸Që…@ª ŽcŠ @ªâ¸Qì@ªâß;dZ@ªâ¸Qì@ªâs×Û@ªâ¸Qì@ªâ‡“Ý—@ªâ¸Qì@ªáüj~ùÛ@ªâ¸Qì@ªâ®æ1ú@ªâ¸Qì@ªây¦µ -@8Y*0U2b@8V¡aä÷f@3T›¥ãSø@3WéùrG@2ä¼j~ùÛ@2æµ '¼@1î_oÒ @1ò¼£n@1î_oÒ @1îóMj@1î_oÒ @1ï!-w1?Ÿ‹‘+-/Ü?“ÓLáS{?’d3ð"7?ŽõÕJ?–lô!-w?—Q,Äš¤?•²»UbB2?˜ଚÿw?’ÖsÄÖ?ð{¥âdû?“4¦{ºÕ?‘êey°úà? zkê 3U?Cx}¹x%?’Z†Ažj?‡v¯ªIì?^^ω•?˜§zy@@@@@*@(?ð?ð?ð?ð?ð?ð¿vH‡´·¿Tyʲ?@£ØòN;?e¼åápR0@ª —ªáò@ªâO 0n?W%ôgiÍ?‚<™¸lMJ?£@,;ˆí,?þdoÑn -@Ÿm£L…*ƒ@Ò@ž¿(õÂ\@ž¿`Ä›¥ã@ž¿(õÂ\@ž¿`¹iÂd@ž¿(õÂ\@ž¿Y¸Šñû@ž¿(õÂ\@ž¿X!TÇ@ž¿(õÂ\@ž¿U O{Q@ž¿(õÂ\@ž¿ˆ¤Ü¿@¢x3¶E¡Ë@¢x ~f›@¢x3¶E¡Ë@¢wžqˆðˆ@¢x3¶E¡Ë@¢xQ6ˆ`v@¢x3¶E¡Ë@¢xUëÐæ€@¢x3¶E¡Ë@¢x[¥ƒ Ð@¢x3¶E¡Ë@¢xq;À@8” xFÜ@8Š?•»ø@3ahr° Ä@3Wî±n·È@2Ãt¼j~ú@2½<0a!(@2O „M@2‘ݪýÐ@2O „M@2-$Y†f@2O „M@2„… B?¨'Yb! ?ª.œ!…~?¡ÉšwP½J?™µ·Ú:þ™?™ËØQ[?¨ø¦¢s?›Q®úL§?¦ ½ ¸%? ‰/ŠS,?¡ƒðâF?—VH¥]?¥Ø]ˆU û?‚…«Ç?’…Y£c;`?¡¶  öˆ¥?‘&°„¼?—ø6_x?’ßfÂ&@@@@ @(@3?ð?ð?ð?ð?ð?ð?XØ ?”e¹ÉõÀ?o´ëAŠ´£?h½)ç°@ž¿\Z8õš@¢xKnãB@1Š0U2a|@1!Ä2ÊW¨?|öOÿÝ?ÐA¿SU–?Î'è{ž÷~?Ò’ÞkúÅ€?Ð3kseý?Ö_…¶¹ÿJ?}Ñ¿ž,?Á¡ã%®L?ÇfTEkúÍ?ÍJÔ‰Àå?ÍR¿‘j ?Í ­Þ…;¦?‚‹¡8*ùÿ?§L²Ÿþ—É?š&½-\aÛ?¦êÉŠYÏ?¦GaªmÀ?À0xÓhŸÖ@@@@@*@,?ð?ð?ð?ð?ð?𿯠ˆô–@?§¾hÝ`?“ÊI¡Y8?†2ÑŸGª@¯ãÖí3U@«JI -c?‰ ÷³…Úç?~|xræ@?÷úÊÕ;"V?éí!0{Ä2@ŸX.äŽ&Ž@Õ@¨XÊ=p£×@¨XÊ=p£×@¨XÊ=p£×@¨XËC•@¨XÊ=p£×@¨XÊÀƒn@¨XÊ=p£×@¨XËP°ò}@¨XÊ=p£×@¨XÉã½@¨XÊ=p£×@¨XÈõÂ\@­•˜“t¼j@­•˜“t¼j@­•˜“t¼j@­•˜“t¼j@­•˜“t¼j@­•˜üPH@­•˜“t¼j@­•™#¢œx@­•˜“t¼j@­•™ k¹Œ@­•˜“t¼j@­•™ k¹Œ@0cg ù l@0cg ù l@*{"Ðå`A@*{µsê³@*òn—Oß@*ò•éá°Š@)ÿåÉä@)ÿåÉä@)ÿåÉä@)ÿåÉã@)ÿåÉä@)ÿØ­«ŸW?É^žQ5P‚?¾¢`ƒ?‘šÕU#?‹µ™eU!µ?êtÿKÑc?²õ/]?ÐbMçê_x?’Ï>`Ï?¹º–Èj?;ß $Þû?Ó%y*£=?M\³Ù“@?€bMÕky?Œ¬8 T£?‚uÞ@>N ?‚äÍ“½E'?†’Õaì+’?†‰Oú|q@@@@@*@&?ð?ð?ð?ð?ð?ð¿Qk6½Z¿Hú¥ ?3À4? $>ømU–Õ:@@¨XÉô1q@­•™q…?BþØÌIkÈ?!t¬À?¼ý~“”?i‹áä§@Ÿs -Såc@Ö@® µÂ\)@® ³â·G@® µÂ\)@® ³8ÌÕ§@® µÂ\)@® ¬Ý(r@® µÂ\)@® ± wf@® µÂ\)@® ´YKuj@® µÂ\)@® ¯pB,Â@— m‘hr°@— oÛ`7@— m‘hr°@— jJ-N@— m‘hr°@— aÓ®:@— m‘hr°@— näs¹6@— m‘hr°@— geu @— m‘hr°@— gk݆@6Ù*0U2b@6Ö`:è n@40Ä›¥ãT@434k£@3´“t¼j@3¸¾&Hõh@3?ò䎊r@3CÕ[X„À@3?ò䎊r@3B–7eÿ@3?ò䎊r@3B!{T?‚Ú¡ËG7Õà=›?”d~»™?~‹ý‰þk??”§'$SÛ?•ÕÕxð‘?’ÈI3º»$?’ïË_<4ý?”Y:ƒ°©Ù?ט¸5?I&†?³Vk%e/?…Jð9‚A´?‹ñŸÏeà\?ŒRê±êЇ@@,@(@*@6@9?ð?ð?ð?ð?ð?ð¿AØù ø¿K\ïîÖ?>ÅRUw€U?0Z–Ïk@® ²ª‚$Š@— lbϧx?^–©®øfÜ?P«¤áMÁQ?ÁÊp½ ?¥ÖmÜ{kš@Ÿg ãMóû@×@¢I6E¡ÊÁ@¢I6È´9X@¢I6E¡ÊÁ@¢I:QÎ@¢I6E¡ÊÁ@¢I8y=Ù@¢I6E¡ÊÁ@¢I9‡+@¢I6E¡ÊÁ@¢I0©*1@¢I6E¡ÊÁ@¢I3g ù @¡„äZ¬@¡„äZ¬@¡„äZ¬@¡„ÜPHð@¡„äZ¬@¡„çE8ï5@¡„äZ¬@¡„åzxl#@¡„äZ¬@¡„å¼£n@¡„äZ¬@¡„æYJôò@3” xFÜ@3”!-w2@0Yº^5?|@0Vlô!.@/¿;dZ¬@/©á°‰ (@.ÑÑN;Í6@.ÅÉã½@.ÑÑN;Í6@.ÃÉîËû@.ÑÑN;Í6@.Æ -¦L/„?|¬Çëý ?‘‹PƧ¢$?’´ýBI{?Œ¸ðËb?–Õ“z‰öì?”K¬Ò&?|¬Çëý ?•¤-'Ä,?ÏtP°*?˜ò¶Ðú?—?—³’sB?–Ï9xä]e?‚n—8‹8?Å{¿Ž<º?†ž5ðqë?…p=¤J‰?‡<û¡71?Œx[‡:©@@@@@,@,?ð?ð?ð?ð?ð?ð¿C8¼D?9¿Æð?Iœ&é ó>øüM°uõk@¢I5õm¿H@¡„åì+?h Ï5¡É¯?‘Žºûˆ'?ÛST)Jh?6l¼{5°ø@Ÿe&_×£þ@Ø@®;?¯ßÁx}²?•ða˜,F?š?G'ôÜ?|ënÓ¿Ü? "ƒrÅÇ?¤€3¼¾BÁ@@@@@$@*?ð?ð?ð?ð?ð?ð?ZåÈOx¿Sà Œ?S‚¾¾¥'?EñÞa¦@®@0®_oÒ @0¯Ÿ¾vÉ@0®_oÒ @0®vÈ´9X@0®_oÒ @0®\‘ÑN¤µÜÆ@3µãS÷ÎÙÁ.„M‰ûçm@2nùÛ"ÐæÁ.„QnÙ‡@1³&Á½¥Á.„NÜC,¥@1³&Á½¥Á.„NÜC,¥@1³&Á½¥Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÛ@£Ó)xÔýôÁ.„€@£Ó)xÔýô@£Ö¿JpS+@£Ó)xÔýô@£ÖÏñ<@£Ó)xÔýô@£Ö¹ƒŽ6@£Ó)xÔýô@£Ö¶Ÿ.¨@£Ó)xÔýô@£ÖºIG§Ý@˜÷¤Ý/ Á.„€@˜÷¤Ý/ @˜÷7´ë‹Ý@˜÷¤Ý/ @˜÷<ô:@˜÷¤Ý/ @˜÷5¬E©@˜÷¤Ý/ @˜÷uJåpà@˜÷¤Ý/ @˜÷vg^±@7 ØDЩÁ.„>¤µÜÆ@2c÷ÎÙ‡@+ô7¬†@2'KƧïž@+¾‚%@1ò䎊r@*q»©Õò@1ò䎊r@*|<òSt @1ò䎊r@*yy®Oͽ@8J¨?’k’ç¢?“nèÙìØ?“ñ3,.?˜tKÄÎhú?—´·ò•@8J¨?”ÉV±‘C'?”ž¨®¶?•.b𦄯?•‰¸T/Ú?‘êÎe²k°@8p÷?‘÷3ìQøì?„ñ=œŒ?‡Ý…Xøwt?Š¡ûIrÊV?Фz{‚@$@$@$@;@8?ð?ð?ð?ð?ðøøøøøøøøøøøøÜ@«?‚‘´…=Ca?Å{¿Ž<º?•ýÿLîO?™/#ÕË®r?¢2ðø:Uù?›ßóÝYM@@@@@,@$?ð?ð?ð?ð?ð?ð>Ùa£¸?{ -Wª?]O½©£é?V€ßßÚø @«ë×?t»ºÃO—Ù?ú­Ä¼:P`?å"Qù~†î@Ÿcâh×Ó@Ý@¥^NÙ‡+@¥^NÙ‡+@¥^NÙ‡+@¥^QÝL×@¥^NÙ‡+@¥^O•~Š}@¥^NÙ‡+@¥^QÎ'} @¥^NÙ‡+@¥^[6‰@¥^NÙ‡+@¥^S‚ªðk@›7‰7Kƨ@›7‰7Kƨ@›7‰7Kƨ@›7{?n@›7‰7Kƨ@›7|Êñ@›7‰7Kƨ@›7uÑO8F@›7‰7Kƨ@›7k%S1–@›7‰7Kƨ@›7j¬]ç@1ÉÎ_oÒ@1ÉÑN;Í6@0 í‘hr°@0Q¢nó¶@/?;dZ¬@/3ºpÅà1@.b¶®~@.òKÑÄ7@.b¶®~@. 3Ô?9G@.b¶®~@. ËäxD‚?É^ž6õP?(©bÊŸ$?‘w´¾QZ?‹Á¨”È7Œ?“¥?{úO?‘K’˜ bT?ÐbMÝn½?’&Y-ƒ(¿?ùÉþÀó¹?6 ºBY?”‹¹ w_†?™Í™§ãe?€cÇ>º)¨?3K_n Û?ƒ#FßÔú?‚ýv>é÷?‡ØðÎÙP?†ä~¶@ê.@@&@"@ @6@5?ð?ð?ð?ð?ð?ð?V«ÐGí¿fûOFü?e5Ù: ?GòûP +]@¥^T‹{¸@›7oÇ[j-?tÒ¢cžZ€?UÉ'ó{û?ãQ´9†ã?œÌóÍ“æ@Ÿr)Uò)@Þ@­|gï²-@­|h´9X@­|gï²-@­|hè§æ@­|gï²-@­|iã½@­|gï²-@­|hË’:@­|gï²-@­|g“Ý—ö@­|gï²-@­|g®zá@¬$Ý@¬“v@¬$Ý@¬ðØDÏ@¬$Ý@¬8†YK@¬$Ý@¬ýó¶E@¬$Ý@¬L˜_@¬$Ý@¬2a|@4í¥œàv@4íjOw@0³S÷ÎÙ@0³¶E¡ÊÀ@0"-V@0"©“ àÞ@.ÿåÉä@/-w1Å@.ÿåÉä@/@N¤©@.ÿåÉä@/ZîcŠ?1·†Æjñ?W[†?‘jh¨qã9?Œ:Z2‚b?‘Dj?ÍàÊaùX?}Ñ¿ž,?’š'†­`í?·t¤¢‚J?@§[*^?‘ ·èf?ŒÙ¶êm¥?‚yî8Á#?ŒÐ¤Âÿê?‚ÂÌ]æ?ƒ¦$H?†¼Š˜L¥÷?‡”_Õ­çW@@@@@&@(?ð?ð?ð?ð?ð?ð¿+ò”À¿)‹f=€?ï´“„?×x{Ÿ¼À@­|hC0ß}@¬Š@¤?1 BöÛ.?2Ge -È$?m›jû)K?p°qRs@ŸgV/ p@ß@¡Å¡ÊÀƒÁ.„€@¡Å¡ÊÀƒ@¡·KƧð@¡Å¡ÊÀƒ@¡µ$Ü@¡Å¡ÊÀƒ@¡Ý}¿H€@¡Å¡ÊÀƒ@¡ùÀëíú@¡Å¡ÊÀƒ@¡Ø_ö”@«š›¥ãSøÁ.„€@«š›¥ãSø@«šŽÙ‡+@«š›¥ãSø@«šê¦L/ƒ@«š›¥ãSø@«š¼ú¬Ùé@«š›¥ãSø@«›QÎ^@«š›¥ãSø@«šúû~‘@9Âò䎊Á.„>¤µÜÆ@6 Ä›¥ã@6’£S&@6'KƧïž@6hy=Ùc@5œÚQÎ@5‚GE8ï5@5œÚQÎ@5lÆ?@5œÚQÎ@5lL˜_@8J¨?¡lôÅø²?ºAú¼ë|?¶(¾Þžs˜?¹¸öb&?ºÒ“÷a¼@8J¨?ªòR¾ŽÜ†?°¥u:Â?ªšêPo?½hŽÁáA?ш—oÙ­@8p÷?ÏÑò©Â­?⃰UjÎ?¸ Vú|LÐ?©\á¥T·?°r™›´@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøøà@ zéxÔýôÁ.„€@ zéxÔýô@ {M$ @ zéxÔýô@ {ˆjá'@ zéxÔýô@ { ñÀFÔ@ zéxÔýô@ zói›7„@ zéxÔýô@ zìiˆ‰q@¤©xÔýôÁ.„€@¤©xÔýô@¤Ô‚ØOm@¤©xÔýô@¤‡YËz @¤©xÔýô@¤2v™Ï@¤©xÔýô@¤%2G#ö@¤©xÔýô@¤ -O}|]@9£g ù lÁ.„>¤µÜÆ@4ahr° Ä@4 ÇÄÒÅ@3;Ƨï²@3$’Á¥@2J0U2a|@2+%‹@ó@2J0U2a|@2— -n@2J0U2a|@2 `¢.¼í@8J¨?Ÿ ºQ"ð0?˜.Ä%±ý?”¹Ë‹õUO?›?Kf£/?£€ ôÑ£@8J¨?£ÁÀõÀÓ¯?™O“‚bN?’ -/É -¬ë?µ`§jNn?´ŸQ³\€@8p÷? àtlÕ* ?“ä)oÆÂ?—Ó\)ö? ‘.¨ÑÈÈ?ŸæÃ¨u@"@@$@:@7?ð?ð?ð?ð?ðøøøøøøøøøøøøá@¬„r° Äœ@¬„rñ©ûæ@¬„r° Äœ@¬„r×sü@¬„r° Äœ@¬„s3333@¬„r° Äœ@¬„sŽóMj@¬„r° Äœ@¬„r-V@¬„r° Äœ@¬„r:)Çz@­Åß;dZ@­Åß;dZ@­Åß;dZ@­Å¸¼@­Åß;dZ@­Å:û~‘@­Åß;dZ@­ÅbMÒñ@­Åß;dZ@­Å£× -=@­Åß;dZ@­ÅHð@/ïÅo@/ïÅo@)Üj~ùÛ"@)Üj~ùÛ"@*rn—Oß@*rˆÎp:ü@(¨Û‹¬q @(¨Û‹¬q @(¨Û‹¬q @(¨Û‹¬q @(¨Û‹¬q @(¨è§æ›?É_\p)Ï?Òç{íj?‘(¥¿á?‹ª½¨ª8v?íOþtà?¾ƒìÈÁ?ÐbMçê_x?’˜‰%F²?ŠA)Nîá?0ÜN :s?Ñ¡b£?¾?R g!Ú¢?€b¡´ñ@?Œ¬Çëý ?‚q6tNø7?‚ãaÎúvh?†ŠúЀ>(?†‰Oú|q@@@@@(@*?ð?ð?ð?ð?ð?ð¿DôÞ¾þæ+€?+»Þ)TŸœ?sk³]@¬„rÀL• @­Åníµ8?:ªŸóÓhå?*ìF_ô?qvèöLÂd?OÑêÁÆ$@Ÿs,Ó2@â@¡Œ]/Ÿ¾@¡ŒQ©ûçn@¡Œ]/Ÿ¾@¡ŒHŒç°@¡Œ]/Ÿ¾@¡Œ=ÌcñA@¡Œ]/Ÿ¾@¡ŒSMj@¡Œ]/Ÿ¾@¡ŒYXbN@¡Œ]/Ÿ¾@¡ŒL1&é@¥ŽÈ´9X@¥ŽÈ1&éy@¥ŽÈ´9X@¥ŽÓœ¾à@¥ŽÈ´9X@¥Ž¿U›=@¥ŽÈ´9X@¥Ž³t¼j@¥ŽÈ´9X@¥Ž¢e+Ô@¥ŽÈ´9X@¥Ž´Ö¡aæ@8è†YJôñ@8÷škP°ò@5; Iº^@5:çÕfÏB@5 "Ðå`B@53{J#9Á@4OO „M@4^¾ß¤?æ@4OO „M@4Pÿ—$tT@4OO „M@4RT`ªdÃ?ÎYgo¢K?­hX™*?ÇT†ˆHÖ?—Ýúâþ ? U ¡,Ø?¨+ âÅw?´ Z è´ß?•%!{‚A?Ä’ŽªÛ‡?©ßˆ¬ÅÛ{?¨AsÊ?¦þLäžÏ?µRW¢ŠP?´þ5.¸žÊ?Û_Y›ÍKÌ?¦÷œ¤Òé(?©CRù¼U?­¸óÛ[Ñ‘@@@@@*@,?ð?ð?ð?ð?ð?ð¿CšÐ4¿q1r°€?júˆ0‚\¼?rbPbÐQ¼@¡ŒT«Ôy@¥Ž°í?wðy35³t?‹ó‚‚·_?˧œÞ"÷‚?àÉÂú”@Ÿqdð|£@ã@¤ Ö‡+ @¤ öÈ´9X@¤ Ö‡+ Á.„€@¤ Ö‡+ Á.„€@¤ Ö‡+ Á.„€@¤ Ö‡+ Á.„€@¤ Ö‡+ Á.„€@¦…¼j~ùÛ@¦…« Iº@¦…¼j~ùÛÁ.„€@¦…¼j~ùÛÁ.„€@¦…¼j~ùÛÁ.„€@¦…¼j~ùÛÁ.„€@¦…¼j~ùÛÁ.„€@8½:’£@8¶È´9X@4n5?|í‘Á.„M‰ûçm@3§KƧïžÁ.„QnÙ‡@2Öý!ÿ.IÁ.„NÜC,¥@2Öý!ÿ.IÁ.„NÜC,¥@2Öý!ÿ.IÁ.„NÜC,¥?}Ñ¿ž,@8#˜@8¾:@8 >+@8Iç@8Ù?°{QBãï@8Î÷@8i§@8Å@8S@8û—?µ“Æÿ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøä@£¥­‘hr°Á.„€@£¥­‘hr°@£¥°"!@£¥­‘hr°@£¥»2º„@£¥­‘hr°@£¥³ø‚>@£¥­‘hr°@£¥ª›k@£¥­‘hr°@£¥£GC\@—9ˆ1&éyÁ.„€@—9ˆ1&éy@—9‹ -MŸ@—9ˆ1&éy@—9¬˜b}Ö@—9ˆ1&éy@—9„>º«Z@—9ˆ1&éy@—9¯3“M@—9ˆ1&éy@—9¢„ìº@8è†YJôñÁ.„>¤µÜÆ@3» Iº^@3ªGPí’@3RÐå`A‰@39NÇá@2TmÅÖ8†@2Fõþ¹BI@2TmÅÖ8†@2[4¡D@2TmÅÖ8†@2\ô!-x@8J¨?—KÆQt -?¥9eÌ5?•*ÞF”É?•’'c$ƒx?”ï+×Ì@8J¨?•uãýœk?˜ˆïý{?“ÝÖ–i?˜‘E*²z–?“åáÓÄÈ@8p÷?›ñ˜`K?µ0|wF?Žy¾þšk?R HðE?”[úsšÁ½@&@&@(@8@7?ð?ð?ð?ð?ðøøøøøøøøøøøøå@¡7(õÂ@¡7Oß;@¡7(õÂÁ.„€@¡7(õÂÁ.„€@¡7(õÂÁ.„€@¡7(õÂÁ.„€@¡7(õÂÁ.„€@Ÿnj~ùÛ#@Ÿn_;dZ@Ÿnj~ùÛ#Á.„€@Ÿnj~ùÛ#Á.„€@Ÿnj~ùÛ#Á.„€@Ÿnj~ùÛ#Á.„€@Ÿnj~ùÛ#Á.„€@7*0U2b@7#÷ÎÙ‡@3ÜIº^5?Á.„M‰ûçm@3v§ï²-Á.„QnÙ‡@2Öý!ÿ.IÁ.„NÜC,¥@2Öý!ÿ.IÁ.„NÜC,¥@2Öý!ÿ.IÁ.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøøæ@¬à¡ÊÀƒÁ.„€@¬à¡ÊÀƒ@¬á@6âë@¬à¡ÊÀƒ@¬á-w1Å@¬à¡ÊÀƒ@¬áiùrF@¬à¡ÊÀƒ@¬áeS&Â@¬à¡ÊÀƒ@¬ábø7´¢@¢òD›¥ãTÁ.„€@¢òD›¥ãT@¢òá@N¥@¢òD›¥ãT@¢òÂ3œÀ@¢òD›¥ãT@¢òÛ"Ðå`@¢òD›¥ãT@¢òHð@¢òD›¥ãT@¢ò|64@9p4mÅÖ8Á.„>¤µÜÆ@4Ï|í‘hr@3í!ÿ.Hè@4'KƧïž@3E¡ÊÀƒ@3Eœàu÷@2€bMÒñª@3Eœàu÷@2ò䎊r@3Eœàu÷@2~—Oß<@8J¨?»ðj#?ÄIM\g-?ºŠòTÓÁ?À&Çe‰S¿?½®ýã|Êø@8J¨?¶%xW8¸É?ËäêîÂÆ?¶¶=qŒÚÚ?ºó÷z­¾Ã?´M«‡c2h@8p÷?œ ùæ´?Ð?¢Z°`´ä(?Ì@ˆj-?™GXêâ?›P^eNÇQ@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøøç@£^q©ûçm@£^rñ©ûç@£^q©ûçm@£^q‚©“ @£^q©ûçm@£^r£S&@£^q©ûçm@£^qÎ_@£^q©ûçm@£^n!–R½@£^q©ûçm@£^mBÃÉï@¥YÄ›¥ãT@¥Y¢\(ö@¥YÄ›¥ãT@¥Y«¬q ³@¥YÄ›¥ãT@¥Y®Hè§@¥YÄ›¥ãT@¥YµÂ\)@¥YÄ›¥ãT@¥Y¶4ê@¥YÄ›¥ãT@¥Y³ÃaA@5Ù*0U2b@5ºu%F -@1³S÷ÎÙ@1¢MÒñ©ü@0Õ`A‰7L@0ÉŒ~($ @/õ¨Xy=Ú@/㯷éú@/õ¨Xy=Ú@/åS&Á¾@/õ¨Xy=Ú@/ãñA [Á?‡YÍ_?àIü'?‘œÁùãJC?Œ:Z2‚b?‘PÊÑ<Ým?‘Iãd©ìÇ?uÎC´Ÿ0!?˜ü5ñâ ?ðHÙz#Ù,@Ÿi`¤ðCª@è@ª-X“t¼j@ª-X“t¼j@ª-X“t¼j@ª-YÎ_p@ª-X“t¼j@ª-XQë… @ª-X“t¼j@ª-Y¦µ @ª-X“t¼j@ª-VâëC@ª-X“t¼j@ª-SÐ|„¶@¢¦ffff@¢¦$Ý/@¢¦ffff@¢§8}¾@¢¦ffff@¢¤÷eý‹@¢¦ffff@¢¥Ö8†X@¢¦ffff@¢¥+ÓÃa@¢¦ffff@¢©Q‚©“@5-¥œàv@5-æšÔ,<@0Ô›¥ãSø@0Ó÷ÎÙ‡@0²-V@0Ÿ¾vÉ@.žš@.Ñ·Y@.žš@.¥œàv@.žš@.õY³Ð}?|¬Çëý ?¾‰máÚ?‘–”«ëó?‹×lÇ…N9?ÿ £‰¸9?‘ë´¤G?|öOÿÝ?’4 "ëžØ?ê‰O)AT?agÌf ?‘Ú‚ýc¯?«àÓ RÆ?‚oÁÆÜ§ö?Œ¾»•lŽ?ƒúʳ_Ä?ƒ ?ÿ½?†µ°jÆÃ?‡gϵ’õ@@@@@&@(?ð?ð?ð?ð?ð?ð¿CGÌP0?2âÑX?=¾…s§´ý?8ÊÆ1÷@ª-W™©Æ“@¢¦—…þ±?]‚VOX?Xj#oéÈ?ÇŠ>‡ÍF?¾ŠÕ F -Ø@Ÿfà10•™@é@ªòk…¸R@ªòe z0@ªòk…¸RÁ.„€@ªòk…¸RÁ.„€@ªòk…¸RÁ.„€@ªòk…¸RÁ.„€@ªòk…¸RÁ.„€@”&çl‹C–@”&ë Iº@”&çl‹C–Á.„€@”&çl‹C–Á.„€@”&çl‹C–Á.„€@”&çl‹C–Á.„€@”&çl‹C–Á.„€@8·â‚@·€@8µ¦¢©!@5k¥ãS÷ÏÁ.„M‰ûçm@4þV“uÁ.„QnÙ‡@4¸DЩ*Á.„NÜC,¥@4¸DЩ*Á.„NÜC,¥@4¸DЩ*Á.„NÜC,¥?‚Ú¡ËG7<@8#˜@8¾:@8 >+@8Iç@8Ù?Ï€×>²„@8Î÷@8i§@8Å@8S@8û—?Œ¨/¸Œr„@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøê@£”‰7KÇ@£”ÊÀƒ@£”‰7KÇ@£”($ w@£”‰7KÇ@£” 7Kƨ@£”‰7KÇ@£” q ²–@£”‰7KÇ@£”šu$@£”‰7KÇ@£”ÉîËû@£j³¶E¡Ë@£j³¶E¡Ë@£j³¶E¡Ë@£j´¯O ƒ@£j³¶E¡Ë@£j IQƒ@£j³¶E¡Ë@£j›¥ãSø@£j³¶E¡Ë@£j‘·Xâ@£j³¶E¡Ë@£jƒ{J#@3½:’£@3½5¨Xy>@2?|í‘h@1ýà qu@1®ùÛ"Ðæ@1©“ àÞÒ@15µsê³h@1,ÓZ…‡”@15µsê³h@1-Òñ©ûè@15µsê³h@1.æ1ø ?|öOÿÝ? œE|s8å?‘yß]³Õø?‹û…†_?šPUó`ÿ?•ŠàuVº`?|¬Çëý ? I­ß4>?‘kþE<%?e”[|ú(?™Ÿ»6“?™^ªÍ€@!?‚Ÿ JŠÅ?1·†Æjñ?‡9Â@0wç?ƒ ?ÿ½?’;WZŸÿÔ?8Ï£§@@@@@*@$?ð?ð?ð?ð?ð?ð?[ï*ü¿€§À?UtðP¨L?D½ÉÕü÷†@£”•£š·@£j¤6i£D?sŒ¦¬DJ?bô˜µ[`?ñP-.2À"?Ë^—¹iñQ@Ÿd›Ýî‹_@ë@¤¼œ¬1'@¤¼™Û"Ðå@¤¼œ¬1'@¤¼Ÿ¼@¤¼œ¬1'@¤¼—ö+jè@¤¼œ¬1'@¤¼¤2ÊW¨@¤¼œ¬1'@¤¼›/ìVÖ@¤¼œ¬1'@¤¼cˆe”@¡ë”ýó¶F@¡ë’-V@¡ë”ýó¶F@¡ëŠôðØE@¡ë”ýó¶F@¡ëŽzáH@¡ë”ýó¶F@¡ë„›¥ãT@¡ë”ýó¶F@¡ë¸ºÇ@¡ë”ýó¶F@¡ëÅÖ8†@6Ù*0U2b@6Ì/ƒ{J$@4€ Ä›¥ã@4‚ZîcŠ@3ä¼j~ùÛ@3í!ÿ.Hé@3a:’£S@3_4Ö¡aå@3a:’£S@3b½<64@3a:’£S@3b×sü?|öOÿÝ?œ½Øu4Þ•?›·Ù!Gfð?º HN¸?¨ƒ ¹´?•(Ï¢Uÿ?гá‡}?¡S"ꉯ?™ ?G·W?Ÿ'Žb÷A?•~VèÔªÂ?›Œ³¶Ñ×?¶W€BH?–Ê Dì¢S?“ø­×N?’aP¸¾¦Ö?•ƒ•&+B?Ÿ‘±bÌ@@@@@&@*?ð?ð?ð?ð?ð?ð?Mjߢˆ¿TS­CØ?IA“­²/Û?R˜&"@¤¼›øü¶P@¡ëŽÇÔZŒ?j˜²Wz¦\?rÓt£`åÉ?Ô$-jCÅ7?ÛªKL£D -@ŸfÀEmņ@ì@¤W+…¸R@¤W#n—@¤W+…¸R@¤W*Ížƒå@¤W+…¸R@¤W/iDg7@¤W+…¸R@¤W-ÅÖ8†@¤W+…¸R@¤W0–»˜È@¤W+…¸R@¤W)îËû@§œ7KƧð@§œ>vÈ´9@§œ7KƧð@§œ:)Çy§@§œ7KƧð@§œ'ü¹#£@§œ7KƧð@§œ=ó¶E¢@§œ7KƧð@§œ8*™0½@§œ7KƧð@§œ9³Ð|†@8-¥œàv@8-!ÿ.Hè@3ÞÙ‡+@3Ù0¾ í(@2ß²-V@2âÞÑ·@2p–»˜Çã@2m5¨Xy>@2p–»˜Çã@2m¸ºÇË@2p–»˜Çã@2l64ê?˜ž^ƒÿ*ˆ?“I\ÄO£º?—2 :M?Ég(6ßð?•³™»7…?˜ÝÈYD?|¬Çëý ?š¾ˆè ”?¢ðÒŒîI? ¬%)¯?˜Ü“Œ¾?• °jà?$¿ÀºÍ?’+0ê­ìT?™“ÇÙ¹?•çѳÍ9?˜F†éôâß?šÁc€RÏ@@@@@,@&?ð?ð?ð?ð?ð?ð?__GË¿Qí4ºn?Y#7J3è?3í3uŠÞK@¤W+i1n€@§œ;‰\Ìä?sÛâC”yA?X›Á´Ñ0E?ÛÒ¡ÙÓWP?ªÄP,¨C@ŸjþxDËù@í@¡mY‡+@¡mWOß;@¡mY‡+@¡m>š@¡mY‡+@¡mG+ J@¡mY‡+@¡mhK]Ìe@¡mY‡+@¡mG®zá@¡mY‡+@¡mI­BÃÊ@£]ž5?|î@£]®Ù‡*@£]ž5?|î@£]“t¼j€@£]ž5?|î@£]—éùq@£]ž5?|î@£]‰á°‰ @£]ž5?|î@£]­ÅÖ8†@£]ž5?|î@£]Á:’£@7ð4mÅÖ8@7éÞÑ·@5º^5?}@5-à @4V”@3ò©“ àß@3úÔ,<ží@3ãÉîËû@3úÔ,<ží@3éÛ"Ðå`@3úÔ,<ží@3çOß;d?“Æ×q„nï?³”¦Ê¿nP?Ÿæ‹—«? Ð ÷Ž ?£|çp9’?›Ê—Am¡?гá‡}?±#ïú¬OÚ?¢Àì#Ì*0?•%ôµh©F?£ ƒU¾Š?±óÌSЧ?–.¨ÿ\?©ñºåÇÂ-?¥$RHŠÇZ?¬@Éléò?®ÔF©Ëåì?¥‰aœÂZ­@@@@@&@(?ð?ð?ð?ð?ð?ð¿[~\1B¿wª®"?tß ‹áWµ?z—·M’ú’@¡m\]—;Æ@£]ŸßäiX?‘‚-¬C?˜–”Àä¸@©”QXÈà@Æ~úQ$@Ÿf˜È¶I@î@°È´9XÁ.„€@°È´9X@°ÕϪÎ@°È´9X@°Û"Ðå@°È´9X@°b¶®@°È´9X@°üPH@°È´9X@°ï²-@¬úÚ¬1Á.„€@¬úÚ¬1@¬ú×ö+jç@¬úÚ¬1@¬ú× -=p¤@¬úÚ¬1@¬úÜ64@¬úÚ¬1@¬úÙ¦µ @¬úÚ¬1@¬úÕsê³h@6” xFÜÁ.„>¤µÜÆ@1é‡+ @1ìq ²•ê@1"-V@1#¼ÓZ…‡@0ºÔ,<ží@0ÅðoiDg@0ºÔ,<ží@0Èð¹@0ºÔ,<ží@0Æý!ÿ.I@8J¨?‘6 '8?‘O‚%c?“Þ5d‡?›Ýr¶?—c‚L±bµ@8J¨?“eB^¤t?³2ºŽ'? ÿ«[á? ‘åP!=4?šÏ7â4l@8p÷?“=ä!ƒK?…µsê³g¡?Ž«]O8èº?8Ï£§?’:™/ʼn@@@@,@,?ð?ð?ð?ð?ðøøøøøøøøøøøøï@£oäÝ/ Á.„€@£oäÝ/ Á.„€@£oäÝ/ Á.„€@£oäÝ/ Á.„€@£oäÝ/ Á.„€@£oäÝ/ Á.„€@ó¶E¡ËÁ.„€@ó¶E¡ËÁ.„€@ó¶E¡ËÁ.„€@ó¶E¡ËÁ.„€@ó¶E¡ËÁ.„€@ó¶E¡ËÁ.„€@8Bò䎊Á.„>¤µÜÆ@3}‘hr° Á.„M‰ûçm@2¹7KƧðÁ.„QnÙ‡@2Š0U2a|Á.„NÜC,¥@2Š0U2a|Á.„NÜC,¥@2Š0U2a|Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøð@¬¨F$Ý/@¬¨.záI@¬¨F$Ý/@¬¨R:)Ç{@¬¨F$Ý/@¬¨H$ x@¬¨F$Ý/@¬¨B3œ¿@¬¨F$Ý/@¬¨>ÿ—%@¬¨F$Ý/@¬¨6Ov`@­6È´9X@­'+ I@­6È´9X@­8Që…@­6È´9X@­0|„µÜ@­6È´9X@­1Ä2ÊX@­6È´9X@­2n—P@­6È´9X@­+C•@5„¯O „M@5iá°‰ (@1—+ Iº@1™³Ð|„¶@11‰7Kƨ@106âë@0Eœàu÷@0B䎊qÞ@0Eœàu÷@0A‚©“ á@0Eœàu÷@0=Vlô"?›’qvš°•?®1Âe¾ -þ?«†‰X´‹?è}fУ?•BPbC¡©?—Q,Äš¤?„F/·ÿP5?«0ä,3?³C˜\ >?Ÿ=øU1WK?š+hd{ö?—é aÀ‹å?ªÇ,þâ?©¦/‰oš?¨Y²Y¬Æñ?—†0ÚŒ#?‘4hÆpÉ„?$Ìj½BÙ@@@@@,@(?ð?ð?ð?ð?ð?ð?_Þ¥÷ü?[I ¬?d`@¯Þ¾?P*»Ú¸¢@¬¨8§f@­,E w?‚:JBE!Ð?sjµ4q×Ú?ð^ëGˆßæ?ÙNhw|Jé@ŸkÈ9®K@ñ@­0äÝ/ @­1&$Ý/@­0äÝ/ @­0åÉä@­0äÝ/ @­0æ§ï²@­0äÝ/ @­0æÏAò@­0äÝ/ @­0äЩ*@­0äÝ/ Á.„€@Ÿøn—@Ÿøhr°"@Ÿøn—@Ÿø$Ý/@Ÿøn—@Ÿ÷ú^5?}@Ÿøn—@Ÿ÷ÿ|í‘h@Ÿøn—@Ÿ÷öý!ÿ.@Ÿøn—Á.„€@1 ]cˆe”@1Xè§æ›@.×KƧï@.Õ›=ÈK@/4ýó¶E¢@/87´¢3œ@.åÉä@.~ÿ—$u@.åÉä@.…F -¦L0@.åÉäÁ.„NÜC,¥?ËOƒÐÎl?äm°û0Ž?‘ŸÇSñ?ŒÇQ´¤µÜÆ@/$“t¼jÁ.„M‰ûçm@.]ó¶E¡Ë@&$.èLÈ@,ܾߤ@Á.„NÜC,¥@,ܾߤ@Á.„NÜC,¥@,ܾߤ@Á.„NÜC,¥@8 -Näy@8#˜?š`ém_B@8 >+@8Iç@8Ù@82rê@8Î÷?œ#¸(‘¾v@8Å@8S@8û—@8L@8 * ?мÅ&Ÿ|½@8¶@8 Ø@8 Ø@6?ðøøøøøøøøøøøøó@­G¿|í‘h@­G¿|í‘h@­G¿|í‘h@­G¿Ë’:+@­G¿|í‘h@­GÀ qv@­G¿|í‘h@­G¿|í‘h@­G¿|í‘h@­G¿b¶®}@­G¿|í‘h@­G¿;dZ@­Ë+…¸R@­Ë+ƧïŸ@­Ë+…¸R@­Ë+ÓÃa@­Ë+…¸R@­Ë+…¸R@­Ë+…¸R@­Ë+àÞÒ‰@­Ë+…¸R@­Ë+’:)Ç@­Ë+…¸R@­Ë,"h Ö@0½:’£@0½:’£@(…`A‰7K@(…`A‰7K@'íOß;dZ@'íOß;dZ@&³üPH@&³üPH@&³üPH@&³&Á½¥@&³üPH@&³üPH?É^žQ5P‚?Ï[äeñ>™JžÕ?$<'ε³@­G¿a<=ò@­Ë+ÛW¬ì?”½ªq<Ò?3%)¨U>û ¼ Ÿƒ—?`¢1¸<Î@Ÿs¶;Ï@ô@©<$Ý/Á.„€@©<$Ý/@©;ü¾ß¤@©<$Ý/@©;ü„µÜÆ@©<$Ý/@©;ô`ªdÄ@©<$Ý/@©;ëC,¥@©<$Ý/@©;ðU2a{@œ°î—OßÁ.„€@œ°î—Oß@œ°æµ (@œ°î—Oß@œ°å+ÓÃ`@œ°î—Oß@œ°äZ¬@œ°î—Oß@œ°Õ›=È@œ°î—Oß@œ°Õµsê³@3‡>«6zÁ.„>¤µÜÆ@/žùÛ"Ðå@/ìVÕϪ@-ãn—P@-Ö®}Vlô@-…oi@-q©ûçlŒ@-…oi@-@[À6ã@-…oi@-FÏAòØ@8J¨?äm°û0Ž?•¬¡´¯ÿ'?‘öJî¯Ê®?ª!ýgÚ7 ?±A+KÄW@8J¨?’ ·6Öc¤?’ÉÓDý?’_3Í\Æ?£Ö ¯†e‚?¢cšŠ5W@8p÷?þþoÀM?…/‡ÙX·³?…üðÿË÷?’3¨£„È?£Eóƒvn@@@@*@,?ð?ð?ð?ð?ðøøøøøøøøøøøøõ@«ögï²-@«öhr° Æ@«ögï²-Á.„€@«ögï²-Á.„€@«ögï²-Á.„€@«ögï²-Á.„€@«ögï²-Á.„€@­'"Ðå`@­'|í‘h@­'"Ðå`Á.„€@­'"Ðå`Á.„€@­'"Ðå`Á.„€@­'"Ðå`Á.„€@­'"Ðå`Á.„€@8Hè§æ@8"GE8ï5@4° Ä›¦Á.„M‰ûçm@3lj~ùÛ#Á.„QnÙ‡@2õµsê³hÁ.„NÜC,¥@2õµsê³hÁ.„NÜC,¥@2õµsê³hÁ.„NÜC,¥?}Ñ¿ž,@8#˜@8¾:@8 >+@8Iç@8Ù?š•§q!U@8Î÷@8i§@8Å@8S@8û—?‘c‚ׯ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøö@¬ÎÙ‡+@¬ÎÙ‡+@¬ÎÙ‡+@¬ÏùrGE@¬ÎÙ‡+@¬ÐbMÒó@¬ÎÙ‡+@¬Ð:û~‘@¬ÎÙ‡+@¬ÍBÃÉï@¬ÎÙ‡+@¬Íí(Œç@Ý;dZ¬@Ý;çl‹E@Ý;dZ¬@Ý:¬Ùè>@Ý;dZ¬@Ý:ÇË)@Ý;dZ¬@Ý:)Çy¨@Ý;dZ¬@Ý:¬Ùè?@Ý;dZ¬@Ý;˜Çâ‚@2ÿ–»˜È@2ÿ—$tS@/8“t¼j@/8ï4Ö¡b@. ƒn—@. ·€4mÆ@-QÑN;Í6@-R° Ä›¦@-QÑN;Í6@-Rn—Oß@-QÑN;Í6@-Ra|ÚR?É^žQ5P‚?ÖÈ ¼?‘"žæÆó¡?‹¹GüÞõ?òǹíT­?È2I/?ÐbV‡,?’&u÷E»@?†[‘'Í?6) }’ë?Ø¥²À<(?hï,ðà?€cPßQª?Œ²ÅŒÕ6?‚§W®ê ?ƒ ?ÿ½?†’Õaì+’?†£îž«î@@@@@&@*?ð?ð?ð?ð?ð?ð¿RΦ?3fŠB?AèXÒüêm?ìUcîÌ@¬ΪÞãô@Ý:¾õd ?Q6åI÷­Î? óÌ «ö?Z -Zóe?9°±ÊÔy@Ÿs4gK@÷@¨—e`A‰7@¨—kC•@¨—e`A‰7@¨—f?@¨—e`A‰7@¨—d¨ÁTÊ@¨—e`A‰7@¨—e”¯O@¨—e`A‰7@¨—dg8~@¨—e`A‰7@¨—eS&Â@­¹àÄ›¥ã@­¹ëƧïž@­¹àÄ›¥ã@­¹áTÉ…ð@­¹àÄ›¥ã@­¹àëíúD@­¹àÄ›¥ã@­¹á:’£@­¹àÄ›¥ã@­¹àªdÂø@­¹àÄ›¥ã@­¹á–R½=@5„¯O „M@5xÎp:û~@1.5?|í‘@1.Ñ·X@0v§ï²-@0v¸ºÇ@0?ò䎊r@0@:û~‘@0?ò䎊r@0@HðŽ@0?ò䎊r@0@:û~‘?˜ž^ƒÿ*ˆ?/³)sšÌ?‘WßÈDö@?‹ó#ƒt£?‘u×íËÄî?‘Iãd©ì«6z@5„•*™1@1µãS÷ÎÙ@1«’:)Çy@0ù7KƧð@0ëçl‹C•@0cÉîËû@0UãS÷ÎÚ@0cÉîËû@0T`ªdÂø@0cÉîËû@0TmÅÖ8†?}Ñ¿ž,?’bÓ}?™KÔ9\Ä?‘öJî¯Ê®?™'Ö™:0í?œ´‹ÛZ?}Ñ¿ž,?“-N•I`(?•ê?íuA?–a6io?£Žæ b×V?¤2R2'Ö•?…/‡ÙX·²?“ü”òÖÂ?†úŒz_–È?†k3`E`-?^²®':Ì?’Ì÷y\ÛÎ@@@@@,@*?ð?ð?ð?ð?ð?ð¿-³¼Ð?c'"&<?Eá’!Qà?N‡ÀOlr–@£„70áµ^@£gÒäæö?b¨Å(B o?hõØ[·ù®?ËŽ3*r?ÍÚßÍQ˜%@Ÿb–HΑ@ù@«úŽÙ‡+@«úŽÙ‡+@«úŽÙ‡+@«ú¸»@«úŽÙ‡+@«úoiDg@«úŽÙ‡+@«úå`A‰@«úŽÙ‡+@«ú£× -=@«úŽÙ‡+@«ú:û~‘@¡I¬1'@¡I¬1'@¡I¬1'@¡I‘ÑN<@¡I¬1'@¡Icˆe•@¡I¬1'@¡I\‘ÑN@¡I¬1'@¡I¥œà@¡I¬1'@¡I<64@0eöý!ÿ.@0eÜÆ?@*\j~ùÛ"@*["Ðå`A@)´ýó¶E¢@)³g ù m@)b¶®~@)Xâf@)b¶®~@)Xâf@)b¶®~@)eýŠÚ»?É_ð©«?ÉGãA­÷?‘K]Ã4?‹¦ ŸYÔ?‘2A¥Ø?âé¨ë7F?ÐbMçê_x?’ -‰¸Ì?¯éÊSÜ?0ÜN :s?ß’ºèh!?hï,ðà?€e@ˆ’„'?Œ¬Çëý ?‚q6tNø7?‚éXëLL÷?†ŠúЀ>(?†©b/bJö@@@@@*@,?ð?ð?ð?ð?ð?ð¿0é›X¿?7¢¡?\5Q6 -?°ó2BX@«ú‰ –@¡IÎ1Äç?(f:€†°†?$‡è^ûÂ?LùqþÕ´?BelôÙü@Ÿs¾TR@ú@¯:ë…¸@¯:È´9X@¯:ë…¸@¯: xF@¯:ë…¸@¯: -Ú¹õZ@¯:ë…¸@¯:®zà@¯:ë…¸@¯:Ðå`B@¯:ë…¸@¯:ýŠÚº@£-‡®zá@£-”9Xb@£-‡®zá@£-t‡ü¹$@£-‡®zá@£-t¼@£-‡®zá@£-wOß;@£-‡®zá@£-ròä@£-‡®zá@£-sœ¾à@8¥öý!ÿ.@8™“ àÞÒ@3£÷ÎÙ‡@3™0¾ í(@2È“t¼j@2¼j~ùÛ#@2 ¿±[W?@2Åo@2 ¿±[W?@2°‰ 'R@2 ¿±[W?@2ò䎊?|öOÿÝ?’¹KTŒDÄ?•Mq —¦?ŽAtùð¥t?’<_+fjä?“7ƒÆD -¹?²C¨y3?•\´jÒË?–Ðf·ËŒ‚?‘èÒ§ˆ„Æ?”¡S•Ÿ¯?˜—àÌÛÆ;?©[K-$›I?¬HO?‡}¤íþ?„Ö©Ú0?ˆ”Tj«›ª?•°QŸ?]Í@@@@@*@,?ð?ð?ð?ð?ð?ð¿q±´X¿p<,)sÀ?Ke3¸8/?b·±´hºI@¯:ûCGR@£-vfÔè?roÛ‡Î!?tTo£at?áf`}º^?Ö½ò“uº@ŸoðïEÛ¿@û@©õÊ=p£×@©õÈr° Å@©õÊ=p£×@©õŸQì@©õÊ=p£×@©õÉ^ž @©õÊ=p£×@©õË'»0@©õÊ=p£×@©õ¾ß¤?æ@©õÊ=p£×@©õƸºÆ@®Ï5?|î@®Ï Ä›¥ã@®Ï5?|î@®Ï¬2@®Ï5?|î@®Ï¾ß¥@®Ï5?|î@®Ï;dZ@®Ï5?|î@®Ï!$Ý/@®Ï5?|î@®ÏÌcñB@7D¯O „M@7Eéá°‰ @4c÷ÎÙ‡@4esê³g¡@4v§ï²-@4}ŠÚ¹õZ@3TmÅÖ8†@3X Ô•+@3TmÅÖ8†@3W1Å‚@3TmÅÖ8†@3Y 'RTa?’Óusÿ\Ã?›ŽÊ–SS?¤:Îrú ?’m’‹}©9?›«Âp°¦ý?—­l²â›}?ˆÿÀ)T¿Æ?—Œ,T®? Ü]^ß¿?–¼Š˜L¥ø?˜hüÁ¯Y?“®°ýYè@?‡»¢Øˆ‹?’Эs_ª`?’%Crì?ÓLÞ?æ?šÙ,yf’Y?•*†*Zû@@@@@@?ð?ð?ð?ð?ð?ð¿Jû5p¿<ÄŽ0?V„xØ_p?29¹–œo¬@©õÇiú~@®Ï¬F~ -?t©y°@ý?Sú •„.?ÞAüá@?¡z¨ŽÜl@Ÿj6µFø@ü@®ÿ;dZ@®ÿ|í‘h@®ÿ;dZ@®ÿåÉ@®ÿ;dZ@®ÿ;dZ@®ÿ;dZ@®ÿ¾vÈ´@®ÿ;dZ@®ÿ!-w2@®ÿ;dZ@®ÿ쿱\@§v¤Ý/ @§v¤›¥ãT@§v¤Ý/ @§v¦?@§v¤Ý/ @§v¦§ï²@§v¤Ý/ @§v¦§ï²@§v¤Ý/ @§v§+ I@§v¤Ý/ @§v¥®æ1ø@4`ØDЩ@4`ØDЩ@0‡ÎÙ‡+@0ˆð¸@/´ýó¶E¢@/µfÏAò@.ÿåÉä@.ÿ¾vÈ´:@.ÿåÉä@.ÿ!-w1@.ÿåÉä@/-à ?|öOÿÝ?ZÁ».œ?‘*"AaIÐ?‹×lÇ…N9?üEÙáõ{?ïˆ6ÏJ?1·†Æjñ?’#maЀ?™Îd0RÜ?;ß $Þû?‘c3¸cÜ(?‘¡ë Þf?‚s@ˆaÚ?ŒÛÏ·+?‚¯­Ù¤Á¶?ƒR¨º“JÞ?†µ°jÆÃ?‰Ü)@Jq«@@@@@*@(?ð?ð?ð?ð?ð?ð¿ƇÖ?:¾6«x?·U˜ëã?+§Ê8¥<@®ÿ^h¾@§v¥¢1Æ?2µK†5?L+Ú57Û?rªÊ ´ ?£*¬ZOëž@Ÿg2ÖxÂ+@ý@¨ßc× -=q@¨ß\¬1'@¨ßc× -=q@¨ßNV“@¨ßc× -=q@¨ßV_Ø­¬@¨ßc× -=q@¨ßVOv`@¨ßc× -=q@¨ß\64@¨ßc× -=q@¨ßW§†Â&@§$¶E¡ÊÁ@§$»dZ¬@§$¶E¡ÊÁ@§$ÛÍ5¨X@§$¶E¡ÊÁ@§$ÖâëC@§$¶E¡ÊÁ@§$Û=ÈL@§$¶E¡ÊÁ@§$ÆšÔ,=@§$¶E¡ÊÁ@§$Ò¼£@8T xFÜ@8SŠ Þ@3|í‘hr@3~Hè§æ@2Àå`A‰7@2­/Ÿ¾w@1Ì¿±[W?@1·éùrH@1Ì¿±[W?@1Ã@N¤¨Â@1Ì¿±[W?@1¾žš?¨Ö_pP1?‘¡çL¤?šJØÜi«?”ƒSÌz?’Þäi]i?‘PÊÑ<Ýl?™™™™™™š?’{cü€øõ?šï/>¬¹’?•ãÿ§…|?•=ƒ™íx?‘ÔÄ÷Õ?£¾Æ¨'–È?Ó%y*£=?ˆ©CwBÅÉ?‰‹„áùO"?mŽÃÎŽ?ùDâΊ@@@@@*@"?ð?ð?ð?ð?ð?ð¿7F`?j„äª?Xo×9R0´?oZ îÙ@¨ßXôûÖ‚@§$Í ¬0Ú?oxz˜d ?ŠŒ|”ñT[?α¨œ¯v°@ I¹ªeÛ@Ÿp;N§ Ü@þ@®ËÍÒñ©ü@®ËÉxÔýô@®ËÍÒñ©ü@®Ëýó¶E£@®ËÍÒñ©ü@®Ëá–R½<@®ËÍÒñ©ü@®Ëñ4êK@®ËÍÒñ©ü@®ËÛ¥ãSø@®ËÍÒñ©ü@®ËÕ¨Xy?@¬Ö¨r° Å@¬Ö¬ÌÌÌÍ@¬Ö¨r° Å@¬Ö¯–»˜@¬Ö¨r° Å@¬Öà-à@¬Ö¨r° Å@¬Ö¹0¾ ì@¬Ö¨r° Å@¬Ö™Û"Ðæ@¬Ö¨r° Å@¬Ö™#¢œx@904mÅÖ8@9üFV?±>ÏÅósN?ÂÂo΃Ù?»¦SóDN?¾FMGô¯¦?°°¶ñÃ9?¤þýª¢Í‘?··#qÉ¥?¼ƒžxåÈê?¥}ç›–Z?ža—㸂?˜F†éôâß?¢2ðø:Uù@@@@@,@(?ð?ð?ð?ð?ð?ð¿=¦@¿r'Áí&?u,®·Ü^?aåܼÔ-Y@®ËÚ¡rJL@¬Ö s×:?޲ƒˆÛ¾»?€¿1Ïà l?õÒŽæå€?ÂÇþh,þX@Ÿp8:T@ÿ@¥ŽV“@¥”9Xc@¥ŽV“@¥›~ÿ—@¥ŽV“@¥“¶E¡Ë@¥ŽV“@¥ޱÄ2Ê@¥ŽV“@¥ˆ§æ›@¥ŽV“@¥†€IR@£$3¶E¡Ë@£$.V“@£$3¶E¡Ë@£$)Çy¦µ@£$3¶E¡Ë@£$(Œç°@£$3¶E¡Ë@£$1hr° @£$3¶E¡Ë@£$*ŒL˜@£$3¶E¡Ë@£$,L˜_@7 ØDЩ@7Ÿ|í‘hr@3óS÷ÎÙ@3ê¬Ùè>B@2A‰7KÇ@2w1Å@23&Á½¥@20£× -=q@23&Á½¥@21œàuöý@23&Á½¥@21Þi­BÄ?–ªÎ­¡?¡³¡Bš™?•ÝFê˜}é?ŽÆv‹‰k?‘èÒ§ˆ„Å?‘_ Ýß?ª[Xxöp?› —/Ù‘?•Ó%Øc~?‘!¥zt9Û?’W;„zY?Éöm/w+?¸ïµ(ýd?Íù7„¯ây?Œs¤DÅÐ@8Î÷@8i§@8Å?¹(¿¢÷SÐ?ÀH{’íŽ? “˜¯ÃÛ@8 * @8p÷@8¶?¨“‘¬?Âè*—NÔ@@@?ð?ð?ðøøøøøøøøøøøø@¬Ÿn—OßÁ.„€@¬Ÿn—OßÁ.„€@¬Ÿn—OßÁ.„€@¬Ÿn—OßÁ.„€@¬Ÿn—OßÁ.„€@¬Ÿn—OßÁ.„€@¦1È1&éyÁ.„€@¦1È1&éyÁ.„€@¦1È1&éyÁ.„€@¦1È1&éyÁ.„€@¦1È1&éyÁ.„€@¦1È1&éyÁ.„€@8ÖšÔ,<ŸÁ.„>¤µÜÆ@5+ IºÁ.„M‰ûçm@4Æ“t¼Á.„QnÙ‡@4._oÒ Á.„NÜC,¥@4._oÒ Á.„NÜC,¥@4._oÒ Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@Ÿ:MÒñ©üÁ.„€@Ÿ:MÒñ©ü@Ÿ:hä`‡î@Ÿ:MÒñ©ü@Ÿ:]”‰*@Ÿ:MÒñ©ü@Ÿ:N×ù*7@Ÿ:MÒñ©ü@Ÿ:S{Gâ¸@Ÿ:MÒñ©ü@Ÿ:Q>9ˆç@¢Ž´¼j~úÁ.„€@¢Ž´¼j~ú@¢Ž°LLÆ@¢Ž´¼j~ú@¢Ž£næ–@¢Ž´¼j~ú@¢Ž¶|ºËû@¢Ž´¼j~ú@¢Ž¸:¶hÎ@¢Ž´¼j~ú@¢ŽÀfE_ž@3cg ù lÁ.„>¤µÜÆ@/.V“t@/-.™‘ˆ@.Ó¶E¡ÊÀ@.½jô@-QÑN;Í6@-?‰ -!@-QÑN;Í6@-B÷þdzF@-QÑN;Í6@->:•È@8J¨?èr€W?‘•¤Ñ禛?Ž*’ý&?‘á„h Þ?‘Mm,bzý@8J¨?’ýhî­?‘W  âï?˜#Ì~\•ê?•ö.Ø—?•Ü=óÝ@8p÷?@c ÃMQ?‚“¾'¥¤<íöÃ?ýÿ3…ô"@%»‘¯@Ÿj§rZ~[@@®B>ùÛ"ÑÁ.„€@®B>ùÛ"Ñ@®BDM:“@®B>ùÛ"Ñ@®B?±[W@@®B>ùÛ"Ñ@®B5*™2@®B>ùÛ"Ñ@®B3t¼j€@®B>ùÛ"Ñ@®B¤µÜÆ@3ðÄ›¥ãT@3øï4Ö¡b@3—ï²-@3£Ð|„µÝ@3!:’£S@37€4mÅÖ@3!:’£S@32MÒñ©ü@3!:’£S@32a|ÚQ@8J¨?”·'‚5â–?¡ ×1èB?¡ÈFªû"b?¤áøl‡ä(?ŸÁÝ·®Š@8J¨?› —/Ù‘?«Þô¯®€?³˜¬6öl@0=cˆe”°@0<ÓZ…‡”@0=cˆe”°@0‹ÿp`¿L^-m?[¢ÿÎc‚û?QÄÔåãÒY@¦8å’¤@® -äfõà?k©p·Î ¤?i¼ÛíD!á?Î\ÖzÏ?ÉB4ü¹H@Ÿqk]áè¿@@®k»çl‹D@®k­BÃÉï@®k»çl‹D@®k¸üPH@®k»çl‹D@®k»À6ã@®k»çl‹D@®k»‹¬q@®k»çl‹D@®k¹Û"Ðæ@®k»çl‹D@®kº–½@lyÛ"Ðå@l\(õÄ@lyÛ"Ðå@lzÇË)@lyÛ"Ðå@lxï4Ö @lyÛ"Ðå@lrGE8î@lyÛ"Ðå@lxl"h -@lyÛ"Ðå@lxQë…@7¨†YJôñ@7 ñ/y¦'@3Š^5?|í@3«ŸU›=@2©Û"Ðå`@2¬Ùè>B[@1œÚQÎ@1žvÈ´9X@1œÚQÎ@1ž!–R½=@1œÚQÎ@1  Ä›¥ä?|çµB &€?—޼½:?•XYäý?îZ¼!ÇŸ?’¥.Kn Í?’?=ÆþÎò?¤ïŒ7娠?–øÐ°€l?“?T¾¹µ ?’:u.ý ?“m^÷´?’j“O’I?™4f5×…?‘Žèã&!+?D/ -b°Þ?…”rsw?ˆW|¶DC?‰]³ß’Ý@@@@@,@,?ð?ð?ð?ð?ð?ð?j¢ú¿NéB›Ä?LÐûØÄôS?[dö›=…@®k·Ý(§Ç@lx™1_I?rÃ_¢}ò?r[$ÕâQ?ã¶ïjïLË?Ö¦/’‡iŽ@ŸnÊ*3{@ @¬†1©ûçm@¬†+Ƨïž@¬†1©ûçm@¬†/ „M@¬†1©ûçm@¬†4•*˜@¬†1©ûçm@¬†0£× -=@¬†1©ûçm@¬†1A [¿@¬†1©ûçm@¬†1ë…¹@¡>ž¸Që…@¡>›dZ¬@¡>ž¸Që…@¡>›ô‡ü¹@¡>ž¸Që…@¡>ÌcñA@¡>ž¸Që…@¡>ã¼Ó@¡>ž¸Që…@¡>ŸoÒó@¡>ž¸Që…@¡>›À6ã@7‚ò䎊@7{)^ž@3\Iº^5?@3`ªdÂø8@2iÛ"Ðå`@2o;dZ¬@1úÔ,<ží@2ÿ—$tT@1úÔ,<ží@2× -=p¤@1úÔ,<ží@2•éá°Š?1·†Æjñ?–[‹Å ?’ª®pµ?Ž‚¨Ø†{~?”NtyÞ"§?’u¹k‚=?„F/·ÿP5?˜¢K½š?’üüšë‚J?“%¾ . »?”ýó¶E¡Ë?’9ñ9¶ò8?”&¥1“V?ª‚eûƒ+?ˆìûIèœlûe?JŒ¤µÜÆ@4B° Ä›¦Á.„M‰ûçm@3A‰7KÇÁ.„QnÙ‡@3uµsê³hÁ.„NÜC,¥@3uµsê³hÁ.„NÜC,¥@3uµsê³hÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø @ªÍ6È´9X@ªÍ8Që…@ªÍ6È´9X@ªÍ*Ížƒä@ªÍ6È´9X@ªÍ 4mÅÖ@ªÍ6È´9X@ªÍ%Ö8†X@ªÍ6È´9X@ªÍ'ï²-@ªÍ6È´9X@ªÍ6“u@ª¥~ùÛ"Ñ@ª¥„›¥ãT@ª¥~ùÛ"Ñ@ª¥8­«ŸV@ª¥~ùÛ"Ñ@ª¥'ü¹#¢@ª¥~ùÛ"Ñ@ª¥GÕfÏB@ª¥~ùÛ"Ñ@ª¥>«6z@ª¥~ùÛ"Ñ@ª¥dÝ/ @7ý:’£@7ýcˆe”°@33S÷ÎÙ@3 Ë)^ž@2M²-V@2<¾ß¤@@1YŒ~($ @1KC,¥{@1YŒ~($ @1MÈK]Ì@1YŒ~($ @1N¾ß¤?æ?«á¬å÷‰?®ÖJ éf?³X€Õ‡s_?¬fJ5 ?¦KÊbo¨Þ?šèïdË?Œs¤DÅÐ?¿µ,i›ª?ÃĽ²;!?¿]«$_2.?»¼¸ölƒ?²m(~ 2ø?·–†»µ½D?“[ ·S?‹’Ú[ßõ?ˆ»ñJî¯Î?‰_uñšó?—ã ËÄž@@@@@,@(?ð?ð?ð?ð?ð?ð?7€cܰ¿„"ëÈ€?i2\  -ÀÎ?q@ñ\ð)@ªÍ1ö"d@ª¥k‚Z?ЏœD‰??”ùjL›¨Ò?àÍ#y+b?êÖcg:@Ÿi£‘y6Ø@ @®j¹XbN@®j³*À¥ô@®j¹XbN@®j¶ºóŽv@®j¹XbN@®j´ãM'@®j¹XbN@®j¶Ê'CÇ@®j¹XbN@®j¶¦«Ë@®j¹XbN@®j´û€’é@“9ÌÌÌÌÍ@“9Óv=ƒ@“9ÌÌÌÌÍ@“9¾’@“9ÌÌÌÌÍ@“9×­í´@“9ÌÌÌÌÍ@“9É<]y@“9ÌÌÌÌÍ@“9Á°O @“9ÌÌÌÌÍ@“9ºŽŒb@8£g ù l@8ŸÈGvÔ@4ahr° Ä@4c?²úrz@3“t¼j@3  zã¢@2ÏO „M@2ÒvðAª@@2ÏO „M@2ÔM™Ø{@2ÏO „M@2Õ¦2´?—‡ŸTVm?’-½Z?‘^ìç¤I•?¤¹èž?’Û±[âVÞ?’*JÛ“†·?–¼À›÷=?“'a¡÷ž?‘poØ?’¸S.ã&?”`´úñ½?‘çM…{3i?™­‹#B?6¢•c?…¿[ÁŽK?„⹯ò{?Š›ìC9ˆ?צmˆ8@@"@"@*@7@3?ð?ð?ð?ð?ð?ð?6l6(¿dUU/?A7¨*0l?2cr×R¡c@®jµ¯§É@“9Ån8š?[K¬ ¿«?O_6 Ûï?±BÁ³Ô:?”`ˆµv½@Ÿm¡-]½G@ @©„çï²-@©„î—Oß@©„çï²-Á.„€@©„çï²-Á.„€@©„çï²-Á.„€@©„çï²-Á.„€@©„çï²-@©„˜DЩ@­ Û¥ãSø@­ ‡+ J@­ Û¥ãSøÁ.„€@­ Û¥ãSøÁ.„€@­ Û¥ãSøÁ.„€@­ Û¥ãSøÁ.„€@­ Û¥ãSø@­ ±Î_@7ý:’£@7›C•%@3#÷ÎÙ‡Á.„M‰ûçm@2Ct¼j~úÁ.„QnÙ‡@1¸DЩ*Á.„NÜC,¥@1¸DЩ*Á.„NÜC,¥@1¸DЩ*@1ªdÂø8?¦Ï±úQm‡@8#˜@8¾:@8 >+@8Iç?ÎN5“‹W¢?îŠõ @8Î÷@8i§@8Å@8S?ÐÜÜ»ã¸?”³Ž+k@8 * @8p÷@8¶@8 Ø?æ®SH²@@*?ð?ðøøøøøøøøøøøø@«—äZ¬@«—䛥ãT@«—äZ¬@«—ãÉîËú@«—äZ¬@«—åÉä@«—äZ¬@«—äM:”@«—äZ¬@«—ãˆe”®@«—äZ¬@«—äg8~@¨÷F§ï²@¨÷G+ J@¨÷F§ï²@¨÷GæšÔ@¨÷F§ï²@¨÷G“Ý—ö@¨÷F§ï²@¨÷GæšÕ@¨÷F§ï²@¨÷Fffff@¨÷F§ï²@¨÷H1&éy@3Âò䎊@3Áÿ.Hè¨@1+¥ãS÷Î@1,L˜_@0±‰7Kƨ@0²3œ¾à@0¨è§æ›@0©XbMÓ@0¨è§æ›@0©Q‚©“ @0¨è§æ›@0©^žš?|öOÿÝ?jú‚<·™?‘yß]³Õø?ŒÇQ´?cvóJz×?€bõ•C?Œ´3‚n”'?‚€.]Øå?‚ù]f¼ÃÈ?†“‚I—²?†œ¶•ÒZ@@$@&@,@4@6?ð?ð?ð?ð?ð?ð¿E·Ènð?4p ·9?#»´?Û?Ü?'ôUt¸‘÷@¬…¦ ¿r…@šnvÇFÖ?2òœµö?6¦efæ"¨?a:êƒ4”?f+qtoþ @Ÿs æ"ø„@@¢à¨õÂ\@¢à¡G®{@¢à¨õÂ\Á.„€@¢à¨õÂ\Á.„€@¢à¨õÂ\Á.„€@¢à¨õÂ\Á.„€@¢à¨õÂ\Á.„€@ ‡+ J@ ‹C•@ ‡+ JÁ.„€@ ‡+ JÁ.„€@ ‡+ JÁ.„€@ ‡+ JÁ.„€@ ‡+ JÁ.„€@7Q|ÚQ@7bGE8ï5@2°Ä›¥ãTÁ.„M‰ûçm@1’Ðå`A‰Á.„QnÙ‡@1hè§æ›Á.„NÜC,¥@1hè§æ›Á.„NÜC,¥@1hè§æ›Á.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøø@¢MáÊÀƒ@¢Mâ Iº^@¢MáÊÀƒ@¢Mϲ-@¢MáÊÀƒ@¢MØï4Ö¡@¢MáÊÀƒ@¢MÆÜ]c‰@¢MáÊÀƒ@¢MÅÉä@¢MáÊÀƒ@¢MµÏªÍ @®Î 7Kƨ@®Î®zá@®Î 7Kƨ@®ÍùõY³Ð@®Î 7Kƨ@®ÍþOv_Ù@®Î 7Kƨ@®Í²äŽŠs@®Î 7Kƨ@®Í¾vÈ´9@®Î 7Kƨ@®Íаò{²@6#g ù l@6!ÊÀƒn@4c÷ÎÙ‡@4Q–R½<6@3;Ƨï²@34?åÉ@4TmÅÖ8†@4/ß;dZ@4TmÅÖ8†@41Î_p@4TmÅÖ8†@4,wškP²?|öOÿÝ?Ÿø5Õb&?˜g± ÓË?°Ëm$.ž?¤F™¢þ¸?´9Uð·d?€‚ñêã ?¢n4Ñ?£¯ðï?³øæp:ì2?§ò0û˜/f?¯íÉv8' ?ˆdÁ -,?«R²QFÆ?Vrÿä?P Ž)k?·C$\ûj$?¶ºjË)™@@@@@ @$?ð?ð?ð?ð?ð?ð¿€>îÍÀ¿ºe€ ?J<]éà?q;½WÛ@¢MÙyfÀK@®ÍõË/hÞ?_\Å*Kb?…?èî`¾?²{êîm&?ýØó‡®6@Ÿ^_ÉU~@@¯…‡+Á.„€@¯…‡+@¯‡=<64@¯…‡+@¯‡SMj@¯…‡+@¯‡QÅ‚@¯…‡+@¯‡sMj@¯…‡+@¯‡• '»@¦»Ù™™™šÁ.„€@¦»Ù™™™š@¦º­¸ºÇ@¦»Ù™™™š@¦ºÅœàw@¦»Ù™™™š@¦º·škP°@¦»Ù™™™š@¦º“üPH@¦»Ù™™™š@¦º$oi@9ãg ù lÁ.„>¤µÜÆ@5ÜIº^5?@5#FÜ]cˆ@5`A‰7L@4Qä÷eý‹@4fYJôðØ@3—€4mÅÖ@4fYJôðØ@3›6z—@4fYJôðØ@3žp:û~‘@8J¨?àÞ;gFÙí?áC>Ó¾S?ᾡ;¦?ÚV…¾Ò¾?Ø8‹R} -.@8J¨?Æîíä”$a?È ŒªgƒA?Æ„@l|L?ÌÙÒ¨PÝ'?Ô9Y14ó5@8p÷?ž°« /I#?˜èò_?þËæ¨Ý?¤¦”x£b?¡!¥zt9Û@@@@,@(?ð?ð?ð?ð?ðøøøøøøøøøøøø@¦›(õÂ@¦›E¡ÊÂ@¦›(õÂ@¦›àuöþ@¦›(õÂ@¦›"MÒñª@¦›(õÂ@¦›)­BÃÊ@¦›(õÂ@¦›쿱\@¦›(õÂ@¦›ã¼Ò@¨sD“t¼@¨s8Ôýóµ@¨sD“t¼@¨s?åÉ@¨sD“t¼@¨s@·€4o@¨sD“t¼@¨s«6z@8Y*0U2b@8aÿ.Hè§@3W+ Iº@3UÜÆ?@2lj~ùÛ#@2n쿱[W@1ºÔ,<ží@1·ÈK]Ìd@1ºÔ,<ží@1³üPH@1ºÔ,<ží@1¶”FsØ?¸bÌk0ÀÕ?‘ĵS…ç_?’µ<ëvar?Ž £Ú?– ÷œ È?–äm¦Qȳ?¯ò5}'Î?’LÁŒÀ´a?”Qä\‰Õ?ni"Í š?“«YNÚ˜°?’ ÃCÀ`ú?«†CRvÉÂ?”~ªd•?D/ -b°Þ?'dÂã—…?“KÌ&¨Í?“!S{uu@@@@@(@(?ð?ð?ð?ð?ð?ð¿r‰g¿ @?X"±¹j?eœ»‘W·?_âxî,*Ã@¦›#ú´ùF@¨s?B$­?u¥ýòªêp?qôýüŒÐ?ßüLþQ??Ø Y”%…è@ŸqAH˜w@@¦ä›"Ðå`@¦ä›¥ãSø@¦ä›"Ðå`@¦ä›˜Çâƒ@¦ä›"Ðå`@¦äIQ‚«@¦ä›"Ðå`@¦ä›"Ðåa@¦ä›"Ðå`@¦ä˜Ôýó¶@¦ä›"Ðå`@¦ä™ k¹Œ@¤ZNÙ‡+@¤ZN—Oß@¤ZNÙ‡+@¤ZNæ1ø¡@¤ZNÙ‡+@¤ZPbMÒò@¤ZNÙ‡+@¤ZTÉ…ðo@¤ZNÙ‡+@¤ZTSŽóM@¤ZNÙ‡+@¤ZRñ©ûç@4™*0U2b@4˜üPHð@0õãS÷ÎÙ@0õÖ8†YJ@0¬j~ùÛ#@0¬"h Ô•@0(è§æ›@0'l‹C•€@0(è§æ›@0'ÕfÏAò@0(è§æ›@0'®záH?}Ñ¿ž,?Kb½™×?‘WßÈDö@?Œ^:Òf?îú/´`?‘)]•\¬?1·†Æjñ?’4 "ëžØ?ö”iåó¨?‘jýÚXÜ?‘Oyn¥Ïj?‘fû›1-&?ƒ´],m÷?‚ù…žÄ`x?ƒR¨º“JÞ?‡ã ËÄž?†Óß -tõ@@@@@&@*?ð?ð?ð?ð?ð?ð¿A¤n\?Sø{"?%!P¸<d?<î¶ê1bc@¦äšŠû¾@¤ZQå(-?EPÐ }?]b}»Ö?— Á.+?Äðn`@Ÿg%Ú\æ"@@¥V“@¥—OÞ@¥V“@¥Ë’:@¥V“@¥üj~ùÚ@¥V“@¥›¥ãS@¥V“@¥r° Å@¥V“@¥§æ›@©8:áG®@©8:Ÿ¾vÊ@©8:áG®@©814êK@©8:áG®@©81Ä2ÊW@©8:áG®@©8=æšÔ,@©8:áG®@©85L˜_@©8:áG®@©84FsØ@3žHè§æ@3ž.±Ä2Ê@0E?|í‘h@0<¹#¢œx@0`A‰7L@0ðØDÐ@.b¶®~@-ü]cˆe•@.b¶®~@-þ«6z’@.b¶®~@.6âë?žˆ2}?—É·R©Ï?¥é+(³?žÑá•®ö0?Ÿ0 碽ü?Ÿò5}'Î?|öOÿÝ? ·yÈG³?¡œåVÉh?”Ò}“® ?Ÿé„ærrl?¢íÐFW?‚nâwfÿ?îŠõ ?†úŒz_–È?‡¯½.SM?‹ ˜1 D@?™/ã̽`ª@@@@@,@,?ð?ð?ð?ð?ð?ð¿[iP¥(¿B u ?FÆpQ˜?Mý®Ðg -@¥ žˆˆ@©89ìÉ/¦?d1žºDt ?i,ŠÞu‰)?Ã3Ÿº±ä?ÒŸo>Èa@Ÿbí›"J£@@£I7KƨÁ.„€@£I7KƨÁ.„€@£I7KƨÁ.„€@£I7KƨÁ.„€@£I7KƨÁ.„€@£I7KƨÁ.„€@/ð£× -=Á.„€@/ð£× -=Á.„€@/ð£× -=Á.„€@/ð£× -=Á.„€@/ð£× -=Á.„€@/ð£× -=Á.„€@6½:’£Á.„>¤µÜÆ@2½‘hr° Á.„M‰ûçm@2V”Á.„QnÙ‡@1ò䎊rÁ.„NÜC,¥@1ò䎊rÁ.„NÜC,¥@1ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@¢¸éxÔýô@¢¸êÀƒo@¢¸éxÔýô@¢¸ìEÈõí@¢¸éxÔýô@¢¸ß} Ê[@¢¸éxÔýô@¢¸ÁO~¦@¢¸éxÔýô@¢¸Ø´˜:)@¢¸éxÔýô@¢¸×_oÒ@˜¤t¼j@˜¤ñ©ûç@˜¤t¼j@˜¤<éu>@˜¤t¼j@˜¤B‹ÔÊÈ@˜¤t¼j@˜¤â9†î@˜¤t¼j@˜¤?ÏÑç@˜¤t¼j@˜¤3=¥øº@6IÎ_oÒ@6G1Å@4 Ä›¥ã@3þcÈb•@3]V”@3qÄQØdñ@30–»˜Çã@3?§}á@”@30–»˜Çã@3:úZÆ@30–»˜Çã@3@¬CHÞ±?}õ¬#„­?˜öð÷v¥§? CÊa›&?‘C`ÞvgÝ?˜yÃó±å?¡ÂdövÁ?€‘gQÚÃ?šg'Ú*/³?«À%/Ï´? ˜TM–G¢?™£ähè—?ŸîÃÈçe’?„væc0·?ÈÞGÈ?§Wyì•+Î?©½I ‡?£oû»yì?¥pÞøA‰Õ@@(@(@"@7@7?ð?ð?ð?ð?ð?ð¿ë«É ?qTû÷?€?qÑ—~?™i1Æ?°ˆÉÕ–z?œ26d®æ?ž‚l{ð :?©:ŠÊÙ?¢D( ?›Àß·Ú™T?’&'Þ’c?Ÿ&ÌZ—ô€?ž÷çî!«?¥vöôÛ-?“¿ŽÁ{¢?“£ïHŸÛë?‘?Ðü ?“qþægu?÷(6 ˜+@@(@*@$@<@9?ð?ð?ð?ð?ð?ð?Oj -Bt?wãa·£??¦à®ª±›?w¶¢ònÓB@¤I…Û°åE@˜lõ…¦‡z?\þ±ÄRj?[…}Ö\?©)ÖëÔ,@§Ñ&%ª@Ÿm-½ÅÚ1@@¤>^¸Që…@¤>V‡+ @¤>^¸Që…@¤>Rñ©ûç@¤>^¸Që…@¤>L"h Õ@¤>^¸Që…@¤>?b¶®}@¤>^¸Që…@¤>\C,¥z@¤>^¸Që…@¤>P°ò{³@©i•$Ý@©i–“u@©i•$Ý@©iŸ¾x@©i•$Ý@©i†€IQ@©i•$Ý@©i·éù@©i•$Ý@©i•›=È@©i•$Ý@©iœÆ?@7¨†YJôñ@7©*0U2b@2T›¥ãSø@2R•éá°Š@1Õ`A‰7L@1Ï!-w1@1B‚@·€5@1:=p£× -@1B‚@·€5@1E$Ý/@1B‚@·€5@1<ô!-w?ð°–Ž]?¾¢`ƒ?ž´g–Ow? l§s¼C^?’dÓÙiº?•ŠàuVº`?ð°–Ž]?“¶†ÿê¡?žËcÃoŸ?¤9Û6 ó?‘†óèJL\?‘õe\Š«p?ð*wjs—?ŒÖ -ÄȲ?ŠÇÿú?Šˆ€!B®?‰G±±ZÎ?IÏáå$?ð@@@@$@"?ð?ð?ð?ð?ð?ð?tœª¹€?y{ÏH?Ž:ìû -?HE¢Ÿ&33@¤>SUWÈ@©i–ÄôÝ7?ŠM½ ]?Q‡¨¾4V@㺚\,?ŽsG 5—Ü@Ÿup²;f¹@@¬D¡ÊÀƒ@¬DŸ;dZ@¬D¡ÊÀƒ@¬D sºPo@¬D¡ÊÀƒ@¬D£~<#@¬D¡ÊÀƒ@¬D¡ÁñÀ@¬D¡ÊÀƒ@¬D¢«Æb7@¬D¡ÊÀƒ@¬DŸµN‡@—|ixÔýô@—|_ycZy@—|ixÔýô@—|€×ÆM9@—|ixÔýô@—|mÂÒþÈ@—|ixÔýô@—|msxÞ@—|ixÔýô@—|kŸ„ce@—|ixÔýô@—|kRö(Ñ@8D¯O „M@85”Ï-¦@4i‡+ @4k—ƒiŠF@3RÐå`A‰@3VK ÿà@2s&Á½¥@2w˜>Éáx@2s&Á½¥@2võ¢å°@2s&Á½¥@2w -‰O)?°cÖ÷ГA?3ª?qJ?‘k<º…EÅ?Óê¸Üð—?“‰·I¯s?‘œnÛùŠ?Ž\Õl6Ò?’ $4;}?‘ÑM uÝ?“©&úSÙ?“có{ç?“)¥ö‚HV?œ9Àåáñs?‘p¦òÝA?†]"ïŠ_/?†OÙ3—¯?ˆ9cjRkÄ?‡Þß 3ª@@$@@*@<@:?ð?ð?ð?ð?ð?ð¿:£Íè?UÐy5?FÜ©Ü6âè?A-̹ @¬D¡TËæø@—|js6\?Yå‘P£†B?bT£µì† ?©híÛÍ¢?»¿p²j´@Ÿpr;ß@@«ñë…¸R@«ñðå`A‰@«ñë…¸R@«ñíÒñ©û@«ñë…¸R@«ñçÈK]Ì@«ñë…¸R@«ñì~($ @«ñë…¸R@«ñëàÞÒŠ@«ñë…¸R@«ñëjçÕg@­Ë‘hr°!@­Ë”9Xc@­Ë‘hr°!@­Ë“ àÞÒ@­Ë‘hr°!@­Ë“Ð|„¶@­Ë‘hr°!@­Ë’ÊW§ˆ@­Ë‘hr°!@­Ëÿ—$t@­Ë‘hr°!@­Ë“ÃaA@6ëµsê´@6âMÒñ©ü@2©‡+ @2©ã¼Ó@2¶§ï²-@2¶§ï²-@2œàu÷@2¼j~ùÛ@2œàu÷@2ŽŠqÞj@2œàu÷@2g ù l?„F/·ÿP5?W[†?‘K]Ã4?’ {½4?’êÔÒ?ø·-/ge?˜ž^ƒÿ*ˆ?’“ºƒ;Nû?üÓqÔN‰?‘ˆ¶´M=?‘®7Ö=^9?·t¤¢‚K?³p}Ù[^8?Žâç.¡È?…íŽ(þÇ?„•ˆG’Z¾?Š*ÊÔQãú?ˆ0&YÊEd@@@@@&@$?ð?ð?ð?ð?ð?ð¿S•a¨¿(ýÊ&@?'/™1òQ?@Æ÷»>Ã@«ñí3 e,@­Ë’ßmô“?IýZ‘T?[)¯§V7Š?•Vò©“,?°SuY4Þ@ŸmrÃ*­@@¨D´¼j~ú@¨DÂÐå`B@¨D´¼j~ú@¨Dµ$Ý@¨D´¼j~ú@¨D°oiDh@¨D´¼j~ú@¨DµY³Ð}@¨D´¼j~ú@¨D±&éxÕ@¨D´¼j~ú@¨D¯·éù@¨N¬1@¨N%`A‰6@¨N¬1@¨Néùs@¨N¬1@¨Nú¬Ùè@¨N¬1@¨NÁ½¥@¨N¬1@¨NÓZ…ˆ@¨N¬1@¨N64@8>«6z@8 Û"Ðå`@3R Iº^5@3Rø7´¢4@2,j~ùÛ#@2,cñA \@1£ÉîËû@1£ÉîËû@1£ÉîËû@1¢u%F -¦@1£ÉîËû@1£FÜ]cˆ?1·†Æjñ?‘Ü„ Þ(£?”4 bà5?‡{@áè?’<_+fjä?’ëÆ[2?™™™™™™š?“?xr¢I?“’OÕƒõ‘?@§[*^?’.<ù?‘–íÍQÜ?¸éÅR[SA?Ž»žä4?…íŽ(þÇ?„2ÌôÏ?ˆ -¿„r©Ý?‹&¸ê±fÂ@@@@@*@,?ð?ð?ð?ð?ð?ð¿q[áâ¿S¦›Ž?:Ç}%\3l?[Þšójö@¨D¶CJ¨«@¨N“Ô¬?_£6¤/?uãt§ #²?¿Û´$Z=ƒ?äò‡qàÐ@ŸlÑâ͸@@©. Oß;d@©.&éxÔ@©. Oß;d@©. ¥zxl@©. Oß;d@©. -=p£×@©. Oß;d@©. ÌÌÌÍ@©. Oß;d@©. 1&é@©. Oß;d@©. ’:)Ç@ži•$Ý@žiŽÙ‡+@ži•$Ý@ži›À6ã@ži•$Ý@ži¤%®æ2@ži•$Ý@ži™™™™š@ži•$Ý@ži—Ûô‡ý@ži•$Ý@ži—ö+jé@7>«6z@7+ÓÃa@1½‘hr° @1»Æ§ï²@1 "Ðå`B@1ÕfÏAò@.ÿåÉä@.üÓZ…‡”@.ÿåÉä@.ÿ.Hè§@.ÿåÉä@.þùÛ"Ðå?š•§q!U?:LÓá -í?‘:€¾¶ˆ?Œj6_?ùª¨?ÛF»0?žˆ2}?“-N•I`(?¯éÊSÜ?Ò–‚h±n?Ø¥²À<(?–’+¸¢d?žšÅö´^'?†¡HŸÊç?…µsê³g¡?ƒ!Ë *(?†Óß -tõ?‡?®\Âä@@@@@$@,?ð?ð?ð?ð?ð?ð¿P½¹%²?QÐ-{?1þ¯í?±Ü?6Œû/Y˜7@©. ísœ@ži•ê<É?JIŽà…: ?Z&"Û1 ú?‘¡u*<–?·f«5©S@ŸmR}ñ´J@@¦¹‰º^5?@¦¹šCYVþ@¦¹‰º^5?@¦¹‡ÏÂ+@¦¹‰º^5?@¦¹wÂÞ@¦¹‰º^5?@¦¹†áMšÖ@¦¹‰º^5?@¦¹…|vIÙ@¦¹‰º^5?@¦¹‹VgWW@˜üí‘hs@˜áÊÀƒ@˜üí‘hs@˜ŽÂ¿Ô @˜üí‘hs@˜áø½ @˜üí‘hs@˜êåSœ¯@˜üí‘hs@˜àòï(ã@˜üí‘hs@˜û„ @8?–»˜È@7ÖšÔ,<ž@3žÙ‡+@3¡‘ó>@2Ͳ-V@2ÍýÃV¢†@2Œ~($ @2#(rÅ8@2Œ~($ @2(fM°@2Œ~($ @2$ÌÆ¿ê6?‹œãµ,r—?dûþ»ÛÀ?’7¦m-§J?×îN*â°?”#Ô¶}_=?“™ kR?“x/0 ª?”ž«¸¹ÐŠ?‘œq(.ÛW?‘úû'®Œ¸?–#)X;?—UÙCJL?µ—bº§|&?‘—»eñ!?†DÁ‘uÞ?ˆ«(A›ë?Š -e»°û?ŒÓúS©À‚@@*@$@&@7@8?ð?ð?ð?ð?ð?ð¿oá¼\¼?[¡®(I?\Î;üXL(?XbeøŸÛ@¦¹WÅ@˜é¬±?|+TÐ~?!?u_²¥F/?õynŒÖ¿?á’»Ôg#t@ŸkAci†@@¬ Iº^@¬ Iº^@¬ Iº^@¬¿U›=@¬ Iº^@¬ÀÄ›¥ã@¬ Iº^@¬üÓZ†@¬ Iº^@¬¾š@¬ Iº^@¬½Ùb·@ªa$Ý/@ªa Iº^@ªa$Ý/@ªañA \@ªa$Ý/@ªaMÒñ©@ªa$Ý/@ªan.±Ä@ªa$Ý/@ªan.±Ä@ªa$Ý/@ªaëC-@5ÿ–»˜È@5ÿò䎊r@2° Ä›¦@2À4mÅÖ8@2 ²-V@2 )^ž @1£ÉîËû@1¡‚©“ á@1£ÉîËû@1£× -=p¤@1£ÉîËû@1¤¨ÁTɆ?‚á²Olºü?ÖÈ ¼?‘e -!ßC?Uÿyu”#?‘¯GàBm?“”üU§<­?‚á²Olºü?’4 "ëžØ?‘8“‡«G?‘¼Øzé±ï?‘êë·áþA?‘fû›1-&?ˆïhƒEõ¦? $gú‡v?ƒÚ@êA²?ˆ6‘F:™Ê?ˆÔÞÑ—æJ?‘p&Æ ç–@@@@@&@&?ð?ð?ð?ð?ð?ð¿Gؾ?1ÚóÐ?BaÌç)¡?yö#Í º@¬ÀÁ&6º@ªaÀ'@?bw")sÄ??Xƒ‰§Z·?ÉšÕ˜¨Î?‚û}]°;Ð@ŸhAž’†¬@ @®ðíV@®ðâ\(õ@®ðíV@®ðç¼¢ã«@®ðíV@®ðæÿÍSã@®ðíV@®ðê¸MI@®ðíV@®ðí¬NYA@®ðíV@®ðäM:“@˜4m‘hr°@˜4l1&è@˜4m‘hr°@˜4W0E@0@˜4m‘hr°@˜4t¨êäµ@˜4m‘hr°@˜4 •| - @˜4m‘hr°@˜4‚x¹ù@˜4m‘hr°@˜4r×s@8:qÞi­C@81äQ›>®@5» Iº^@5µ–Ó3@5Z~ùÛ"Ñ@5d¡×Íd~@5:Ô,<ží@5;«V©+:@5:Ô,<ží@5@-¥¸§S@5:Ô,<ží@5=¸ºÇË?‘w×vHf?›Íîç -?¤°"RÙÃ? Œ—È­â»?¤h?zF?²ù-VñŸ4?“O‹}Ìe?£,d†@Ÿe&i`ôO@!@¤ž³3333@¤¢ÂMÒñª@¤ž³3333@¤¡QÄ2ÊW@¤ž³3333@¤¡-w1@¤ž³3333@¤¡¬"h Õ@¤ž³3333@¤¡7Xâe@¤ž³3333@¤ Ó3333@®|«…¸R@®{‚Ðå`A@®|«…¸R@®|¸»@®|«…¸R@®| Oß;d@®|«…¸R@®{ùXbN@®|«…¸R@®|ŠÚ¹õ@®|«…¸R@®|BÞÑ·@8G>«6z@7+ Iº^@5£÷ÎÙ‡@4NcŠ @4éÛ"Ðå`@3ÒGE8ï5@4œÚQÎ@3aø -à@4œÚQÎ@3_Š Þ@4œÚQÎ@3[~ÿ—%?¢F^ì¼Sð?ØøÛtð?¶§U…A”ô?ÄøÃç÷%?»°Â„Þ ‹?Ø üRAøQ?œä%—ëš?²¦Î^Ï?—Àó%â­?§7&Öcè?šâ6¿°P?§‘§ß±Zî?°*?Ú±P?œFg*V¿3?¤1މ,j†?«~?‹]B0?©CRù¼U?™/ã̽`ª@@@@@ @&?ð?ð?ð?ð?ð?ð¿¹Ìi@?¤´@?Wf>h—ß?^ì==QVÓ@¤¢C³x¯@®{ÄWÁ&Ð?soª0æ‡?€(O-hhÆ?˜ˆÑÑ’³?Ø4P— ¬@Ÿb¤]|å9@"@­š-‘hr°@­š-Òñ©ü@­š-‘hr°@­š.óMj@­š-‘hr°@­š.záH@­š-‘hr°@­š,¿±[V@­š-‘hr°@­š+]Ìcñ@­š-‘hr°@­š+…¸R@­Ï•$Ý@­Ï–“u@­Ï•$Ý@­Ï–È´9Y@­Ï•$Ý@­Ï—>«6z@­Ï•$Ý@­Ï”¢3œ@­Ï•$Ý@­Ï”9Xc@­Ï•$Ý@­Ï—süP@3÷â‚@·€@3÷â‚@·€@2!hr° Ä@2!½¥œà@1çKƧïž@1ç€4mÅÖ@1\ÚQÎ@1\¿±[W?@1\ÚQÎ@1\j~ùÛ#@1\ÚQÎ@1\¾ß¤@?1·†Æjñ?ß‹’bÏ?“­læ>®€? Ìç,Z?‘§›ßÉîj?‘_ Ýß?|¬Çëý ?’LÁŒÀ´a?’hÕü‰­?‘!¥zt9Û?‘¦‘=W?‘C å;Ã?ƒ/‹ÍY}‘?Œáò¯ž¼ù?„ò—TËÄ?ƒiñj6Â?‡L8õASÎ?‡YÍ_@@@@@(@*?ð?ð?ð?ð?ð?ð¿@¼0¿Þ T?s@óå(?5Q[v|@­š,½ Ũ@­Ï•Êwů?3[F"3a«?UÂï±?'?rTrb Éz?·Ð5D¤@ŸfìNÈãk@#@¦bšŸ¾vÉ@¦b›"Ðå`@¦bšŸ¾vÉ@¦b°Ë)^ž@¦bšŸ¾vÉ@¦b¤Z¬@¦bšŸ¾vÉ@¦b©“ àß@¦bšŸ¾vÉ@¦bv®}Vl@¦bšŸ¾vÉ@¦c ¹Œ~)@ª…âMÒñª@ª…â Iº^@ª…âMÒñª@ª…úQÎ@ª…âMÒñª@ª…öðº@ª…âMÒñª@ª…ýŠÚ¹õ@ª…âMÒñª@ª…±hr°!@ª…âMÒñª@ª†i­BÃÉ@7 ØDЩ@7 -à r@3º^5?}@3+…¸Që@1þV“u@2 õY³Ð|@1«xFÜ^@1¼j~ùÛ#@1«xFÜ^@1A‰7KÆ@1«xFÜ^@2zxl"h?‘â%ì˜ ä?¢L -xNCõ?‘–”«ëó?˜Ë=ð½ìÔ?µ—5"Ž?¾ZF,U?’Óusÿ\Ã?¥|ë-ÈJÐ?‘Ûcu%ç+?•è­¸‡?²´Xxeü?Ŷüë'þ?‚‘´…=Ca?÷¾I1;?„‘Za¹Q?ƒžÂâk,?¡S1Êz?GÅ?‘jÐÅx?‘yÃúCŠ?én™‘=Î?Œþ%å_D?ƒ/‹ÍY}’?ƒR¨º“JÞ?‡¤o„C?‡´*žZ}Õ@@@@@(@*?ð?ð?ð?ð?ð?ð¿ZÖt$?Q÷™3?4™ó4Bå?^f¹0Òû½@¬’±yÞÄ@©„WûvÆ?Qu³I$æé?ryFÁáé? ë¾%Lw$?Ú¢‡þ|!@Ÿo¯’¤å@'@©ahõÂ\@©aixÔýô@©ahõÂ\@©ah§æœ@©ahõÂ\@©an;Í5©@©ahõÂ\@©ai*0U2@©ahõÂ\@©ai7Kƨ@©ahõÂ\@©ae¼£n@ ƒmV@ ƒl‹C•@ ƒmV@ ƒiûçl‹@ ƒmV@ ƒféxÔþ@ ƒmV@ ƒl/ƒ{J@ ƒmV@ ƒnËûµ@ ƒmV@ ƒncŠ @6°4mÅÖ8@6¯O „M@3Ìí‘hr°@3ÍVlô!@3ˆ“t¼j@3ˆË’:*@2ž«6z‘@2ÈK]Ì@2ž«6z‘@2<64@2ž«6z‘@2«ŸU›=?ð°–Ž]?”Øÿ4ÙKl?‘e -!ßC?Hð¹?˜¡4wˆŒ?“¾Ž¿ô€?ð°–Ž]?”=øŽî‚}?低NëU?‘ǧ?D6?–›·†ø?‘fû›1-&?ð*wjs—?†¡HŸÊç?‰~}œ…o_?…bv{3dZ?Š`½i=ÓØ?‰G±±ZÎ?ð@@@@,@(?ð?ð?ð?ð?ð?ð¿VwqÉá?P,sPqÀ?B/ù©%Ù?:òno'b¶@©agç‘(@ ƒm˜ÞJ?R8£<Ši}?J~Ùûd¨·?”æ”@èÊë?‡Ó%SŠEk@Ÿsup$z@(@¯âwKƧð@¯âwÎÙ‡@¯âwKƧð@¯âxQë…@¯âwKƧð@¯âx_ö•@¯âwKƧð@¯âwXâd@¯âwKƧð@¯âvOv`@¯âwKƧð@¯âv+jçÔ@¡À­‘hr°@¡À®V“@¡À­‘hr°@¡À­„M;@¡À­‘hr°@¡À®záH@¡À­‘hr°@¡À®cŠ @¡À­‘hr°@¡À­ÅÖ8†@¡À­‘hr°@¡À­úCþ]@1eöý!ÿ.@1e”¯O „@,Çï²-@,ÇÈK]Ìd@+´ýó¶E¢@+´•*™1@+3üPH@+2䎊qà@+3üPH@+2{²þÅn@+3üPH@+2° Ä›¦?Éa—Ã(Ê?ÉGãA­÷?‘ŸÇSñ?‹ë¤½?‡á?òǹíT­?¼‚Ë¡K?ÐbV‡,?’ ÃCÀ`ú?ŽËÜ¿€?@§[*^?ë,YÁ?R g!Ú¢?ma7Î?Œ°¶.Ä+Æ?‚uÞ@>N ?‚äÍ“½E'?†ŠúЀ>(?†–f_ÔŠŠ@@@@@,@*?ð?ð?ð?ð?ð?ð¿Aù  ˜¿(àÂð?'×:Œe’N?!Få çØ@¯âv¡ž‘p@¡À®$Q›?6êº„Š¢?06üÊX0d?i™ÙEì\?Vï*§¨è<@Ÿs j8 .@)@¦‘Ä“t¼@¦‘ÎÙ‡+@¦‘Ä“t¼@¦‘Õ%F -¥@¦‘Ä“t¼@¦‘Î;Í5§@¦‘Ä“t¼@¦‘Æ€IR@¦‘Ä“t¼@¦‘Ð-à @¦‘Ä“t¼@¦‘ÀªdÂ÷@­/z^5?}@­/|j~ùÚ@­/z^5?}@­/s@N¤©@­/z^5?}@­/d›¥ãS@­/z^5?}@­/{~ÿ˜@­/z^5?}@­/gü¹#£@­/z^5?}@­/zÇË)@7·â‚@·€@7µsê³g¡@53S÷ÎÙ@5/U›=È@4Àå`A‰7@4ÇRT`ªe@4 ¿±[W?@4JŒL˜@4 ¿±[W?@4üPH@4 ¿±[W?@4 '»/ì?‚á²Olºü?žÒ·Ì‚? 6K¼Xææ?˜öÔþ¹û?§pˆ/™Š?™òc¾ÿ:e?îŠõ ?Ÿ.Í -üò?¡¿®ªã‹B?ŸjÝá3(?£ù°‘ -sï? ö«ö'ƒ?6´×–°?W<Óܾo?¢Ì÷y\ÛÎ? ²j÷v ?™t#‰$ ?”NtyÞ"§@@@@@,@(?ð?ð?ð?ð?ð?ð¿d„˦ú¿T~ŸØ?M -s7ý£?cÜX«‘@¦‘ÈSÁ @­/x±I8þ?pù=œÍ?ƒŒ:8í?ѧ‡ÀÛû?ç` ºl@Ÿj6®´wË@*@¨k‹Æ§ïž@¨k‹…¸R@¨k‹Æ§ïž@¨k‹ïU©Œ@¨k‹Æ§ïž@¨k‹ŸU›=@¨k‹Æ§ïž@¨kŒx›'@¨k‹Æ§ïž@¨k‹àÞÒ‡@¨k‹Æ§ïž@¨k‹áØv@›^cS÷ÎÙ@›^cS÷ÎÙ@›^cS÷ÎÙ@›^b’Tâg@›^cS÷ÎÙ@›^b¨a@@›^cS÷ÎÙ@›^bñfà@›^cS÷ÎÙ@›^cÑTvw@›^cS÷ÎÙ@›^e|*§þ@3ò䎊@3¥µ0Ï@/\j~ùÛ"@/]ët´`@-òn—Oß@-ò̱Qð•@,žžš@,žì.‚@,žžš@,žéÿ<0G@,žžš@,Ÿ °½1å?|Ñb×¶@?רéª÷4?‘"þ(#*m?‹ªO*j«e?ðÖì¶-?·Œ“Ͷ?|¬h2:“?’’ÛR‘?ŒJà“:?9ÍÇ~FÀ?Ú¥ªÔW?Jö²U4?‚pDøïRg?Œº“zí+‡?‚xþuhy¿?‚éST)FS?†‘Ò®â­c?†Š®ÚH„ð@@*@(@*@3@,?ð?ð?ð?ð?ð?ð?§öl€?"òˆ`?Í|$HÊÓ?}c[ª.@¨k‹Ù@›^cÑ‘Ê?9«–Y×iØ?8÷o}šý—?‚ …$f¾?€X’*¯ @Ÿfø>E@+@£ƒâÐå`BÁ.„€@£ƒâÐå`BÁ.„€@£ƒâÐå`BÁ.„€@£ƒâÐå`BÁ.„€@£ƒâÐå`BÁ.„€@£ƒâÐå`BÁ.„€@bMÒñªÁ.„€@bMÒñªÁ.„€@bMÒñªÁ.„€@bMÒñªÁ.„€@bMÒñªÁ.„€@bMÒñªÁ.„€@4‚ò䎊Á.„>¤µÜÆ@2T›¥ãSøÁ.„M‰ûçm@1È“t¼jÁ.„QnÙ‡@1a:’£SÁ.„NÜC,¥@1a:’£SÁ.„NÜC,¥@1a:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø,@§w<í‘hs@§w6‡+ @§w<í‘hs@§w:¹õY´@§w<í‘hs@§w:ÇË)@§w<í‘hs@§w<Æ?@§w<í‘hs@§w:Ô,<Ÿ@§w<í‘hsÁ.„€@ž+È´9X@ž+º^5?}@ž+È´9X@ž+ÂÞѸ@ž+È´9X@ž+Ì~($ @ž+È´9X@ž+Çü¹#£@ž+È´9X@ž+¾($ x@ž+È´9XÁ.„€@7*0U2b@7Ô•*™@3 Iº^5@3:’£S@1ñ‰7Kƨ@1ñ-w1Å@1µµsê³h@1¶4êK@1µµsê³h@1µS&Á¾@1µµsê³hÁ.„NÜC,¥?˜ž^ƒÿ*ˆ?*£|3Né?‘°&޲P?‹ÑqÔ@vÿ?‘×´<î¯j@8Ù?}Ñ¿ž,?’[ KÄ0R?‘[RK¶ËE?RLnj?” E®!—@8û—?“²pÅâ-Ý?’òÌ&Œ®3?„W;RT?„À"aËô??‰_uñšó@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø-@¡I¡ÊÀƒ@¡I A‰7L@¡I¡ÊÀƒ@¡I¨õÂ\@¡I¡ÊÀƒ@¡I´¼j~ú@¡I¡ÊÀƒ@¡I±Å@¡I¡ÊÀƒ@¡I¸7´¢4@¡I¡ÊÀƒ@¡IÁaä÷f@ ]A‰7KÇ@ ]@Ä›¥ã@ ]A‰7KÇ@ ]S÷ÎÙ@ ]A‰7KÇ@ ]I“ àß@ ]A‰7KÇ@ ]=¿HÌ@ ]A‰7KÇ@ ]ZáG®@ ]A‰7KÇ@ ]YŒ~(#@7uS&Á¾@7uzxl"h@2À Ä›¥ã@2¹Û"Ðå`@1´“t¼j@1°–»˜Çâ@1B‚@·€5@1F¸ºÇ@1B‚@·€5@1.Ù‡+@1B‚@·€5@1/|í‘hs?“Æ×q„nï?•Íñ¤Ý q?–™@^Ú¢?‘´CF õ?­Ê޽˹ÿ?£¸½X—Œ?–ªÎ­¡?”n‹rÕ|?“®ÂrVŽx?“ä$š„…œ?®õw¸æd«?›Œ³¶Ñ×?‹ÛÛÐïE?‘ -òtMŠ?“„*0x)Æ?ˆW„hðQ?—H—‹‰ -0?‘ýÂHåÅÐ@@@@@,@$?ð?ð?ð?ð?ð?ð?zã¸?r¢|?)O_‘úöÙ?j"n¯þ¡q@¡I¯üâfb@ ]FCt M?EIM”;¶ ?‡‚§íâBò?v.Ù)«ª?ú½Óù²·õ@Ÿh¸È@.@¬ -î—Oß@¬ -íöÓa*@¬ -î—Oß@¬ -æ=x@¬ -î—Oß@¬ -Þ’,ü@¬ -î—Oß@¬ -ÖNûü@¬ -î—Oß@¬ -Ðu¶b@¬ -î—Oß@¬ -Ï@`¦@“J,1&é@“J+jçÕg@“J,1&é@“J&šÔ,<@“J,1&é@“J+?ÅI¦@“J,1&é@“J&©ùJß@“J,1&é@“Jo-LP@“J,1&é@“J ¨Ž‚ß@5ý:’£@5û‡ò~Æ¢@3žÙ‡+@3™Öµþf@3 ²-V@3€9à@2ÿò䎊r@2ðìîÀ<Í@2ÿò䎊r@2ñ´c9n@2ÿò䎊r@2ñ"Áš?„ÜNó7·å?“´QzjÇ‹?•· ˜Ùn&?‘Xã‹`Ó?¤µÌ¤ŽÎm?¢ '4&%?|çµB &€?“ultCé?”œ×ŒÇ?=ͱl•8?špU,»?”M€ä ÷?‚¹ !€¶¸?Ž@y‡‘;?‡)T;‹?‡[ž=9á?É´i­Åw?Gr±¼_@@&@$@"@8@3?ð?ð?ð?ð?ð?ð¿~Ͱ¶&¿g…n;?Pù{ƒA?Lr×>ön @¬ -ßGÑÿ4@“J!k·¿X?m—®øË‰é?j°ž;1»?ÓQÍeSÇz?Þ»Šÿçˆ@Ÿd£¼ý®¦@/@¢C•%@¢,ÌÌÌÍ@¢C•%@¢j¦L/ƒ@¢C•%@¢IÔ•,@¢C•%@¢\PHð@¢C•%@¢]ã¼Ó@¢C•%Á.„€@§¯/Ÿ¾@§¯;dZ­@§¯/Ÿ¾@§®üj~ùÛ@§¯/Ÿ¾@§¯ˆÎp;@§¯/Ÿ¾@§¯WXâ@§¯/Ÿ¾@§¯Q4êK@§¯/Ÿ¾Á.„€@9>«6z@9#33333@6 Ä›¥ã@5߃{J#:@5t¼j~ú@5"MÒñ©ü@4‘Þi­BÄ@4ÄŽŠqÞj@4‘Þi­BÄ@4¡ë…¸R@4‘Þi­BÄÁ.„NÜC,¥?|öOÿÝ?¹Lxé5BL?¿ -¢“Šôì?»lE ƒ]?ÛÄÒ®Uš@8Ù?µŸ£'Ñ&?ªvðj?›R?±ÝF͵sS?¶éÖŽyPâ?¶Ý”J {×@8û—?ÅT”#¨ ?¹W»¥ÿ$B?¹§Âƒj?¹é›÷Kûä?Â11õÔ6©@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø0@«€¬1&é@«€¸0 -¢T@«€¬1&é@«€ªˆI:‚@«€¬1&é@«€¦R½<6@«€¬1&é@«€±†©Ô@«€¬1&é@«€²^uÆ–@«€¬1&é@«€¯›]@”é·KƧð@”éÎ Ëåd@”é·KƧð@”é´ö“Î@”é·KƧð@”鳋÷@O@”é·KƧð@”é¶õH.c@”é·KƧð@”é¬Ò °1@”é·KƧð@”é©ÜŸøú@7Ì]cˆe”@7À¡·˜žŒ@3f‡+ J@3li.pÄ@2A‰7KÇ@2Bžy@2‚@·€5@1û¦ƒ)Û.@2‚@·€5@1ûèM{å@2‚@·€5@1úpKÔ?–…­à Ø—?’°weŒ ?“bº|ÄS?ŒuÓ)Pnf?’²¶!©ã=?’臫¡°?‚Ú¡ËG7?%üdêË?%üdêË@@@@@(@(?ð?ð?ð?ð?ð?ð?A~8ü?L(T ?0yäÆ/L®?D}Û_*ù@«ÝpØÚ§@«ºùÃ/=é?NMÿ?A³?b€‰35ê?šun«”'2?»7%@ -“Z@ŸdF¡:þg@2@¨+…¸R@¨{#@¨+…¸R@¨&•Ê8X@¨+…¸R@¨')n“@¨+…¸R@¨%º°õ@¨+…¸R@¨ -̯Q@¨+…¸R@¨$[ŸÚ@˜óvÈ´9X@˜ðÿ;?F|@˜óvÈ´9X@˜óyâ–„@˜óvÈ´9X@˜ó~°é€;@˜óvÈ´9X@˜óxiagØ@˜óvÈ´9X@˜óoäÓ@˜óvÈ´9X@˜ónÇ~y@8ÞHè§ç@7ã/è¦>m@3W+ Iº@3SÁ<¸Ñû@2éÛ"Ðå`@2äð“Fªj@2hè§æ›@2_JrêÎz@2hè§æ›@2WlêgŸ@2hè§æ›@2^ùïÑK?ä¦ÂFæ?ÁEê `?”·¯ZZ/?”M2êñæ?¨Ë„Ve*?›hÆSG?î·¬µ8ˆc?“Ž¿Ñà™f?“¦:s -íÊ?›+¹ï< ?¤ž¨ß}]?œ¸pD³D?õ›4<ý?êö‰°wú?ˆ¿ñ:[ì?‘µÓƒÀÏ?žAVøq[?‘EH ~ -@@(@*@,@8@6?ð?ð?ð?ð?ð?ð¿yw¿fz@¿]S’×À?v:ö΄?p5·§ð:@¨?‘Κ@˜ós!_'ò?‡=CIJ–?€…‰¦œ§?ñVìj­T8?Û¢‚Ãë+@Ÿró¦,­W@3@£õ?|í‘@£õ?|í‘@£õ?|í‘@£õfÏAò@£õ?|í‘@£ñÄ2ÊX@£õ?|í‘@£ù k¹@£õ?|í‘@£íjO@£õ?|í‘@£î¾ß¤@@¨cáÊÀƒ@¨cãS÷ÎÙ@¨cáÊÀƒ@¨cçl‹C•@¨cáÊÀƒ@¨cæ$Ý/@¨cáÊÀƒ@¨cã× -=q@¨cáÊÀƒ@¨câëC-@¨cáÊÀƒ@¨cá [À@4” xFÜ@4“¢œwšl@0®5?|í‘@0°¾ í(Œ@06§ï²-@09k¹Œ~(@/½Vlô"@/Á:’£T@/½Vlô"@/¹³Ð|„¶@/½Vlô"@/¸FÜ]d?€‚ñêã ?jÝ‚È?‘WßÈDö@?U›=ÈK?“>û{Ñø~?’ŒZzˆZ”?€‚ñêã ?’áÄïÃõ?‘8“‡«G?‘!¥zt9Û?“m^÷´?‘ éñ^?ƒ~¨õ/¥M?Ž•ýÙ—±?‡»¢Øˆ‹?†k3`E`-?‘  ¶‚3?’Ž<Dxƒ@@@@@*@"?ð?ð?ð?ð?ð?ð¿Rd/ïÄ¿1õtˆ€?QÈÑ*_†®?+Íü•S-@£ógˆ·4@¨câÜA?qЉkÁì•?LX­õrÖª?êÞÀ¦X[? û„©0ˆ@Ÿg:o¨™C@4@©b« Iº@©b°£× -=@©b« Iº@©b¶lô!@©b« Iº@©b³ê³g @©b« Iº@©bÒGE8ï@©b« Iº@©b…‡“ݘ@©b« Iº@©bº–¼@¦ÝZ¬1@¦ÝZ^5?}@¦ÝZ¬1@¦ÝX -à@¦ÝZ¬1@¦Ýa@N¦@¦ÝZ¬1@¦Ý4Ö¡b@¦ÝZ¬1@¦ÝŠ Þ@¦ÝZ¬1@¦Üü„µÜÆ@7‡>«6z@7ƒŽóMj@4æ‡+ J@5 'RT`@4ÐA‰7KÇ@5aä÷eþ@4:Ô,<ží@4¥Éã½@4:Ô,<ží@4ùÎ_oÒ@4:Ô,<ží@4ÈK]Ìcò?Œs¤DÅÐ?­gžóÉ?¯qÏ}è ?•ƒäôKwö?ÉW±çOrÙ?ÁMȳYh‚?„F/·ÿP5?¶2MÄ®î?²vux"ÕE?™Ç“y”[½?ƨuf -?ÉÓ‰‚?™“ÇÙ¸?°˜­á=­?§C9«ã?ÀY 0–™?Ôý >"Q?Ó!7Ù~.W@@@@@*@,?ð?ð?ð?ð?ð?ð?†É û¿›ît²€?nÁ7’5R?dôÕòÇØ@©b¾Ÿ)œ@¦Ý9{õ‚?ƒÚŸ‰\í?y¥Íÿ´š?õ*† ¢\?à×yü±@Ÿ_Os§² @5@«úáG®@«úáG®@«úáG®@«ûdZ¬@«úáG®@«û‹¬q @«úáG®@«û‹¬q @«úáG®@«úîcŠ@«úáG®@«ú…‡“Ý@®$:áG®@®$;¥ãSù@®$:áG®@®$;˜Çâƒ@®$:áG®@®$;W>«6@®$:áG®@®$;‹¬q @®$:áG®@®$<(õÂ@®$:áG®@®$:Cþ\’@5­¥œàv@5­Ùb¶®@0ý‘hr° @0ý¿HË’@/XÔýó¶F@/XÇâ‚@¸@.£¼ÓZ…ˆ@.¤ xFÜ@.£¼ÓZ…ˆ@.£¼ÓZ…‰@.£¼ÓZ…ˆ@.¤“t¼j?}Ñ¿ž,?õ¹Ëh?‘ÌË>¯f?‹×lÇ…N9?‘çG¸?ß-tT?|öOÿÝ?’NÛˆV(?«'Q™µ?K·‘d]?üÓqÔNŠ?lINõÕ„?ƒ¡É^&Ö?ŒÖ -ÄȲ?‚¸“Îè ø?‚ù8 ±^?†©b/bJö?†Óß -tõ@@@@@&@$?ð?ð?ð?ð?ð?ð>¥5E ¿ }søÀ?\pnìÀ?%FŽcCç@«úõeÙ1@®$;luTÞ?<46#?E{#}Ï?„þSQ¾ëƒ?—µùÐÜ2@Ÿgãœä@6@¯ý6E¡ÊÁ@¯ý5Â\)@¯ý6E¡ÊÁ@¯ýG{þ@¯ý6E¡ÊÁ@¯ýK¯I+@¯ý6E¡ÊÁ@¯ýcêO÷@¯ý6E¡ÊÁ@¯ýfÊO@¯ý6E¡ÊÁ@¯ýdñli@˜Yçl‹C–@˜YéxÔýô@˜Yçl‹C–@˜YáPÉYa@˜Yçl‹C–@˜Yò9@˜Yçl‹C–@˜Y÷¶Þ‡`@˜Yçl‹C–@˜YïèQ­@˜Yçl‹C–@˜Yöa%@6Q|ÚQ@6RÀƒn˜@3ÇÎÙ‡+@3Ì®@RÏ’@3®ùÛ"Ðå@3ª™ÙƒuH@3ÚQÎ@3‡e¤Á@3ÚQÎ@3þ‘~‘Á@3ÚQÎ@3…ðžä?|¬h2:“?“"i!¦¨?”¶zðB"?—.)/­I?§ Éîò–¬?ªC .½?€Ã{s°úi?”tð”»,?“TÂmÕœ?’oh˜¹$?“¿k¡‡±‚?›à.jd·Y?ƒ²üQå€?ŽŸ¡áÉŒ±?‚«s¼r•?…%ÇbÈœ?Ž“:9³Â‚?+[+ -â~@@*@(@$@:@:?ð?ð?ð?ð?ð?ð?‹ò›•?VÊOé?e,*Ã;Ž?D.H ©Ø@¯ýK|S¼Ò@˜Yî,û=X?€…nÁ4sT?a¡èl~8Ë?öAŽwô*?ÈúŸ¹Þþ@Ÿb%Æ÷Ÿî@7@§ÇKC•@§Çu?|í‘@§ÇKC•@§ÇKƧïž@§ÇKC•@§ÇH´9X@§ÇKC•@§ÇKC•@§ÇKC•@§ÇIûçl‹@§ÇKC•@§ÇKƧïž@¯ ŽÙ‡+@¯ ¬1&é@¯ ŽÙ‡+@¯ å`Aˆ@¯ ŽÙ‡+@¯ ²-@¯ ŽÙ‡+@¯ úCþ\@¯ ŽÙ‡+@¯ ²-@¯ ŽÙ‡+@¯ bMÒò@9¹Œ~($@9 ¿HË’@1©‡+ @1¨ -à @0ƒt¼j~ú@0ƒn—P@/ÑÑN;Í6@/Ñ·Xâ@/ÑÑN;Í6@/ÒÊW§†Ã@/ÑÑN;Í6@/Ó àÞÒ‰?ÈÙ þT?ß‹’bÏ?‘Ûü†Nã?‹ó#ƒt£?éDEâ©×?±ŒR°?¸!q Ý?’‡Iš÷?€s8rÅ?9ÍÇ~FÀ?ÏtP°*?H, -r_? ânIð?ŒÐ¤Âÿê?‚† SFò?ƒ!Ë *(?†¼Š˜L¥÷?‡×7°º@@@@@@?ð?ð?ð?ð?ð?ð¿.´†/À¿Gç<à?Wè 칸?`áö§<«@§ÇK"Ì¡ˆ@¯ šA|:?føšŒ_Ë?pëàhú»‰?ÉÑ ˆº×?ÙWß÷÷@Ÿrºï Þ¥@8@§j£× -=q@§j‘ë…¸@§j£× -=q@§j¯hÛŒ@§j£× -=q@§j¡ÊÀƒ@§j£× -=q@§j¨r° Ä@§j£× -=q@§j§æšÔ@§j£× -=q@§j¥8ï4×@®Û?|í‘h@®Û<í‘hs@®Û?|í‘h@®Û:¹õYµ@®Û?|í‘h@®ÛD2ÊW©@®Û?|í‘h@®ÛB&€I@®Û?|í‘h@®ÛCFÜ]d@®Û?|í‘h@®ÛGï².@9Q|ÚQ@9AN;Í5¨@4|í‘hr@4 è>BZî@3—ï²-@3’Ðå`A‰@2æYJôðØ@2â¶®}Vm@2æYJôðØ@2ã9Àëíú@2æYJôðØ@2äêJŒ?ð°–Ž]?’Mj…•Ì‘?™%LÑ”Ô?‘ÔþÆvI‡?”] -° ?’ŒZzˆZ”?ð°–Ž]?”V ìi!¾?¤`á1Bí(?’„÷ò¸?”*v7¹¿?’vMëôUu?ð*wjs—?’žÿ§:­?‡9Â@0wç?ˆÝíá‰?ŒXk-¯‚7?Œúq‘?ð@@@@@?ð?ð?ð?ð?ð?ð¿Vk‰Ùb?cÿ#c?0íÃüíË?Gm9šV'Ý@§j¦ó%²P@®ÛDs³íä?@(¯ãz :?V-˜¬ð{?q­ýí¥€? Ufî–3@Ÿs»Þ¼’@9@§x«…¸R@§x¬Iº^4@§x«…¸R@§x­í(Œç@§x«…¸R@§x¬¿±[W@§x«…¸R@§xª0U2a@§x«…¸R@§x®V“@§x«…¸R@§x¯ƒ{J#@ª º^5?@ªŒù™™™š@ª º^5?@ª xFÛ@ª º^5?@ª «ŸU›@ª º^5?@ª¸ºÇ@ª º^5?@ª - Þ@ª º^5?@ª;Í5¨@97â‚@·€@9(1&éxÕ@3ÇÎÙ‡+@3Åsê³g @2ûƧï²@2úÇË)_@2œÚQÎ@2šQÎ`@2œÚQÎ@2›"Ðå`B@2œÚQÎ@2šçÕfÏB?¾„CÚ–•F?•tæïá,•?”ñ-a} ?ŒôƒA˜c ?’Æ÷Xê†?•½0 -Žø?±>ÏÅósN?”&OÖýæï?—>4ôgŒ9?‘Ò–¬q?’˜£“µ~Ð?“X<‡÷Ú?³iû÷òx.?êzŽx?‡9Â@0wç?Šˆ€!B®?Œ8¸wx¯?޹Þwò,@@@@@*@*?ð?ð?ð?ð?ð?ð?bv2Lú?mJîé?C` Ð3.‹?;Ø><ëU@§x¬¤éc÷@ª "¦?R™÷Õrüê?N}„Ãïë?›róG¸?±êý¥fJ@Ÿq 4ÓÛd@:@§3{çl‹D@§3|j~ùÚ@§3{çl‹D@§3t‡ü¹$@§3{çl‹D@§3y k¹Œ@§3{çl‹D@§3wsüP@§3{çl‹D@§3*Àƒn@§3{çl‹D@§3fÜ]c‰@¡ J=p£×@¡ NzáI@¡ J=p£×@¡ L¿±[W@¡ J=p£×@¡ D xG@¡ J=p£×@¡ Iûçl‹@¡ J=p£×@¡ '†Â&@¡ J=p£×@¡ 2-V@6įO „M@6ȧæšÔ@4sS÷ÎÙ@4v$Ý/ @3ìj~ùÛ#@3è­«ŸU›@3Š0U2a|@3‹ûµsë@3Š0U2a|@3n«6z‘@3Š0U2a|@3u8ï4Ö¢?ˆÿÀ)T¿Æ?ŸoÝ ÷6}?¨¬âö'?’m’‹}©9?Á³jâräz?¢Ø@<š˜*?|öOÿÝ?&”ðÚ˜?°Œ“ ¹‡?–sZ -™ø?¹ƒ:ýw±?°V Õy?³&Ô,ô?Ÿß‹’bÏ?ªÞUWºci?”AXÄ|åy?´kJÂJ¥¶?µ'˜ÒD@@@@@*@ ?ð?ð?ð?ð?ð?ð¿m@Qjö¿k cj?c”˜Y¶=‚?_ºj#@§3wå·qš@¡ Ipí]ˆ?B=âé^?vos=Òb?ò¶Êe½¢ê?áa.ãŽÛ@Ÿa\‹øEÂ@;@¡w•%@¡w‰7KÈ@¡w•%@¡wSœ¾à@¡w•%@¡xʳg ù@¡w•%@¡vþ5?|î@¡w•%@¡vÿoÒô@¡w•%@¡vþOv_Ù@©àÄ›¥ã@©àÄ›¥ä@©àÄ›¥ã@©ÌIº^5@©àÄ›¥ã@©ÔmÅÖ9@©àÄ›¥ã@©ã•%@©àÄ›¥ã@©Û=ÈK@©àÄ›¥ã@©ÛdZ«@7Î쿱[X@7ÍÅÖ8†Z@3©‡+ @3ã,¥zxl@2â-V@3ÍÈK]Ì@2+xFÜ^@2&L/ƒ{J@2+xFÜ^@2+ûµsë@2+xFÜ^@2+)^ž ?…ÅBðrç?µ‡:úÎ ?ϰ.¶48?Ž £Ú?”˜Ié‚%5?’€ú¤ˆ4 ?›’qvš°•?’7Îf¬ps?Â:–Ád¯¢?“AúìÊ„?” E®!—?“{P»á?¨še ?‘D‡>S9?¿¹²Çò?¨Æ# -3/g?ˆÔÞÑ—æJ?гá‡}@@@@@(@&?ð?ð?ð?ð?ð?ð¿F¬Yм¿Z¸?1–,ñWë?SB#No@¡vÿ>@ÙX@©ßP?RÊp‰áh?o¦©}PÌ?¤£œ¢Yžr?Ñš¬ªƒ±ò@ŸlßßèG‘@<@ Æ‰7KÇ@ Æ‰7KÇ@ Æ‰7KÇ@ Æ„-BH@ Æ‰7KÇ@ Æeðõ¡@ Æ‰7KÇ@ Æ? h@ Æ‰7KÇ@ ÆÃãÖ@ Æ‰7KÇ@ Æ[“@©Iñ©ûçm@©Iñª¢Ú@©Iñ©ûçm@©IñªFbü@©Iñ©ûçm@©IñÞSX+@©Iñ©ûçm@©IòYù7þ@©Iñ©ûçm@©Iò"S·)@©Iñ©ûçm@©Iñèáœ@3?–»˜È@3?x5›Ã@@0Œí‘hr°@0åã12@0“t¼j@0l"h Ô@.½Vlô"@.½–ÉV6@.½Vlô"@.½½DFô@.½Vlô"@.½¨½# ž?}@T˜ÁÎ¥?Ä @þ¿ ?‘"®šñÅ?‹ªtš§þ€?ô0 ¼¢s?È®`e˜ú?|¬Æ Væ?’Ï Ó«I?‘8ο?/ÌÔSϵ?ÞW#&-¿?\Ûüøî–?‚pDøïRg?Œ²ßÛ’f?‚–Ë)¬j?‚ìf GA?†—¤ž[w?†“‚I—²@@$@*@(@7@5?ð?ð?ð?ð?ð?ð¿þÔ[?¨t£À?<äf׎»?t—Q0Ûß@ Æ¾{´@©Iñéµ¢?\¸2¦³³w?0ǵée8?ÆGmj‰· ?mj¹ Þ@Ÿg´r™@=@­ˆ´9X@­•$Ý@­ˆ´9X@­ˆÁTɆ@­ˆ´9X@­ˆõÂ\@­ˆ´9X@­Œ/ƒ{J@­ˆ´9X@­ˆÁTɆ@­ˆ´9X@­ŠdÂø7@­£Ã•%@­£Ë…¸Q@­£Ã•%@­£ËÓÃa@­£Ã•%@­£Èð@­£Ã•%@­£ÇRT`«@­£Ã•%@­£Ã{J#;@­£Ã•%@­£Ãa@N@8šÔ,<Ÿ@8ÞѸ@3pÄ›¥ãT@3oŠ Þ@2ˆ“t¼j@2†ö”Fs‚@1Ì¿±[W?@1Ê6âëD@1Ì¿±[W?@1Î쿱[X@1Ì¿±[W?@1Ï–»˜È?}Ñ¿ž,?”"¶²'Ýþ?’Gßk;m?‘sNX„êÒ?“XMHñëž?’IåŠú?гá‡}?›ªÊît…?‘Ç€˜­r?“ ç¥Íç&?’.<ù?’j“O’I?„ò—TËÃ?•ÙK°FÑ?ˆìûIèpÝ"Á<Ô?+?wllé™@­ŽªÊJ@­£Ç.„Ù?`€eÐ}w?JúŽŠÄ¾­?Äô·€Û©¯?”ÖpmRÏð@Ÿig¹²@>@¯>‡+ @¯>“t¼i@¯>‡+ @¯>b¶®}@¯>‡+ @¯>ÇË(@¯>‡+ @¯>!ÊÀƒ@¯>‡+ @¯>záG®@¯>‡+ @¯>5?|ï@¨Ä“t¼@¨Ƨï²@¨Ä“t¼@¨Ïß;dZ@¨Ä“t¼@¨ËC,¦@¨Ä“t¼@¨Ï4Ö¡b@¨Ä“t¼@¨ÅãS÷Ð@¨Ä“t¼@¨ÚkP°ò@2T xFÜ@2Z…‡“ݘ@/²-V@/„g8}¿@/*Àƒn˜@/"@·€4n@/Bu%F -§@/7ö+jçÖ@/Bu%F -§@/DÂø7´£@/Bu%F -§@/1&éxÔþ?É^žQ5P‚?“Ž3ò1p?”Uy*ž¬ˆ?ˆAᆽÃí?‡¯½.SM?гá‡}?qÂ' -Bœ@@@@@,@&?ð?ð?ð?ð?ð?ð¿cfÑJô?l‰'H -?qZõ¶dÿ?xßlŒoø@¯>›;׫@¨Í̉F9?)u h÷j?…Åp:¯ú@?íJãõ½ç?ù‹Až ëY@Ÿrågƒ<@?@©ìë…¸@©ìÈ´9W@©ìë…¸@©ìn—O@©ìë…¸@©ìzáG®@©ìë…¸@©ì×sý@©ìë…¸@©ìN;Í6@©ìë…¸@©ìÄ2ÊX@®ãF§ï²@®ãHr° Å@®ãF§ï²@®ãDg8~@®ãF§ï²@®ãG®zá@®ãF§ï²@®ãG“Ý—ö@®ãF§ï²@®ãEðoiD@®ãF§ï²@®ãFÂ&€@7zqÞi­C@7xÁTÉ…ð@1Ô›¥ãSø@1ÔêJŒ@0¤¼j~ùÛ@0¤Âø7´¢@0Vý!ÿ.I@0W -=p£Ø@0Vý!ÿ.I@0WË)^ž@0Vý!ÿ.I@0WsüPI?‡YÍ_?•ìspîî?‘Ûü†Nã?‹ÝÉ!ë#?‘#6‰¥_?‘C!ƒžÈ?”¼íÒh??’CòO…?Œqç©Fü?siÅqe?ñ«Ý„ Õ?ó‹P=´?ŸÇKÆ‹?Œþ%å_D?‚oÁÆÜ§÷?ƒ!Ë *(?‡L8õASÎ?†©b/bJö@@@@@@?ð?ð?ð?ð?ð?ð¿S+†¿<6ûx?,ôág÷0?+ )Má³@©ì0Û@®ãG0á$?L©VCë?FÉó”ò…?œÜóÐøû?ŠO n©ç>@ŸlX|Ôƒ@@@¦¥bÐå`B@¦¥dÝ/ @¦¥bÐå`B@¦¥eœàv@¦¥bÐå`B@¦¥`hÛ‹¬@¦¥bÐå`B@¦¥bMÒñ©@¦¥bÐå`B@¦¥`ëíúD@¦¥bÐå`B@¦¥c,¥zx@ jàA‰7L@ jæffff@ jàA‰7L@ jÜ„µÜÆ@ jàA‰7L@ jÞ í(Œ@ jàA‰7L@ jÞÒˆÎp@ jàA‰7L@ jÞ\‘ÑN@ jàA‰7L@ jÝÈK^@6ÞHè§æ@6ÜÆ?@2° Ä›¦@2Ä?åÉ@2“t¼@2ýŠÚ¹õ@1ò䎊r@1‚{²þÅn@1ò䎊r@1‚ Iº^6@1ò䎊r@1ÿ.Hè§?ð°–Ž]?­hX™*?‘£Ä›è?Wø0 ¥?‘PÊÑ<Ým?‘•S‚üJ?ð°–Ž]?“£PuòN?ˆ9²0?‘.“¥?‘x9ξÞO?‘ÔÄ÷Õ?ð*wjs—?vùv“?‚ù…žÄ`x?„l¯¸‰ŒÎ?ˆ -¿„r©Ý?†ùadô|?ð@@@@(@&?ð?ð?ð?ð?ð?ð?-„ã’È¿H«ËÐÔ?DRwûö0?*˜ ¬…ø@¦¥b)ò¬@ jÞÀ´é?S4ïQÆá??8Ð×íѬ? jO¹ÀiŠ?f¶šäaf@Ÿs].²G@A@­;…¡ÊÀƒ@­;ŽV“@­;…¡ÊÀƒ@­:JÀƒp@­;…¡ÊÀƒ@­:Næ1ø¡@­;…¡ÊÀƒ@­;;dZ@­;…¡ÊÀƒ@­;Vlô @­;…¡ÊÀƒ@­;V®}Vn@ŸßÀƒn˜@ŸßØ“t¼j@ŸßÀƒn˜@Ÿß‡®zá@ŸßÀƒn˜@ŸÝï4Ö¡b@ŸßÀƒn˜@Ÿß–8†YK@ŸßÀƒn˜@Ÿß3œ¾â@ŸßÀƒn˜@ŸßäÝ/ @8£g ù l@8¢GE8ï5@4#÷ÎÙ‡@3­V“@3Ðå`A‰@2µ8ï4Ö¢@1Þ«6z‘@1¥ãS÷ÎÚ@1Þ«6z‘@1¯v_Ø­¬@1Þ«6z‘@1µzxl"h?®í©@Šþ?ÙÒ."Õ$?à×*;k|?¥‘¢Ñ4À?¸ö*©U¯ -? 1\*]Á?˜ž^ƒÿ*ˆ?ÛGæ²0ÓÎ?æ‹ó®AÇD?¯,lBQÆF?¶c92åMò?¦kxÜ““?œ^:Òe?¾ef×l+?¶ͰöÐ{?µðE@Rsi?«íy#œ®?˜/QBu @@@@@ @*?ð?ð?ð?ð?ð?ð¿t ™±¿cy¦Â?Ž}´ãÄm?{â ùFy'@­;N™¥OX@ŸßÅUøó?«\˜B^4ë?¡4â´Ë@#[òÖ­c@»F+ÌF@ŸlK{éAÔ@B@ŸIRñ©ûç@ŸID“t¼@ŸIRñ©ûç@ŸIV®(,@ŸIRñ©ûç@ŸIScË+@ŸIRñ©ûç@ŸIQqî59@ŸIRñ©ûç@ŸIVo½ @ŸIRñ©ûç@ŸIV -;b^@§ö•%@§ö•%@§ö•%@§öß -îÇ@§ö•%@§ö¶É@@§ö•%@§ö -d––s@§ö•%@§ö“®@§ö•%@§öñA¸r@7¨†YJôñ@7ªÙ¹]„@2sS÷ÎÙ@2vl­Ò9@1@å`A‰7@1B»LÆÑu@0ýcˆe”°@1ÈçĨ@0ýcˆe”°@1 èS©2@0ýcˆe”°@1O®:ù?ƒ_ÿKt˜à?¦a]MmÒ?‘ÍÔVÂi?Œû“äÀW?‘ÝëèÎ?’*Í«[?‡‡á´WÉ?“¨f{¯?‹¬tK±»?‘@EK¶?Þÿð‚>ú?‘-g³½fQ?ƒCgE ?ŒÊ=U -3¤?…?iAÊAþ?‚æÅÙêÿì?ˆÂ_ÑPV ?‰LµQÏ9@@$@ @ @3@7?ð?ð?ð?ð?ð?ð?`ü9' ?¦ø$à?2ÇhÅ{êW?PmÊév @ŸINð(X@§öþ!TJ?Rƽëa—E?p`eo Y?«§Ü¹]ª?â‚+Ø" @Ÿir#:êò@C@§gWOß;@§gNzáI@§gWOß;@§gU%F -¦@§gWOß;@§gUÜÆ?@§gWOß;@§gU*™1@§gWOß;@§gT¼j~ù@§gWOß;@§gS3333@©»(õÂ\@©»&ffff@©»(õÂ\@©»/'»/ì@©»(õÂ\@©»,‹C•@©»(õÂ\@©»%Éã@©»(õÂ\@©»&¸ºÈ@©»(õÂ\@©»* Þ@7åöý!ÿ.@7ælô!-@33S÷ÎÙ@34mÅÖ8†@2lj~ùÛ#@2j…‡“ݘ@1ÿò䎊r@2‰ 'RT@1ÿò䎊r@1ÿHË’:@1ÿò䎊r@1ý‘hr°!?|öOÿÝ?×s·IÓ?’,³Zêª?Ú¾ÉÛ²º?’š'†­`í?’ß5H>d#?‘]Ë™$ë>?–.¨ÿ\?”ïœ`µPŽ?ƒúʳ_Ä?…®×__C?‡Ä­‹›Ü?‰]³ß’Ý@@@@@*@*?ð?ð?ð?ð?ð?ð?X±‡—?;*¨?A_ޝÞVÂ?6P ŠÐÇ}@§gQ”²¤¿@©»'ò?aÇÇI?V”¸°u?Ì3èz‘?¸#ÐO̸^@Ÿf{v8®N@D@§3A‰7KÇ@§3AÊÀƒ@§3A‰7KÇ@§3B¶®}U@§3A‰7KÇ@§3B\(ö@§3A‰7KÇ@§3B\(÷@§3A‰7KÇ@§3@hÛ‹¬@§3A‰7KÇ@§3@[À7@¤yŸ¾vÉ@¤yŸ¾vÉ@¤yŸ¾vÉ@¤yQÎ@¤yŸ¾vÉ@¤yJ#9À@¤yŸ¾vÉ@¤yÇË)@¤yŸ¾vÉ@¤yû~‘@¤yŸ¾vÉ@¤yáG®@0ÞHè§æ@0ÞOv_Ø­@+`A‰7K@+m\ú¬Ù@*rn—Oß@*r{²þÅm@)õ¨Xy=Ú@)õ¨Xy=Ú@)õ¨Xy=Ú@)õÂ\(ö@)õ¨Xy=Ú@)õÂ\(ö?Ébª¸'Ñf?Òç{íj?‘!!Ø×‹7?‹¹GüÞõ?÷6r In?·t¤¢‚J?ÐbMçê_x?’¼  g¶?ˆ9²0?@§[*^?Ø¥²À<(?]#ÍìO¤?€bMÕky?Œ­·Ž~('?‚s@ˆaÛ?‚éXëLL÷?†‰Oú|q?†ŠúЀ>(@@@@@,@,?ð?ð?ð?ð?ð?ð¿Pmöo? -vXWÐ?4ºã½°M? -FŽùxž@§3AC¬}@¤yß#é¨?CL´;Š?ž?Ús<ã¢k?‚BÑÍe(ò?*÷JI¬r~@ŸsÝv†@E@ŸA« Iº@ŸA« Iº@ŸA« Iº@ŸA¯—¥q@ŸA« Iº@ŸAºV7‚@ŸA« Iº@ŸA¹Wõ -/@ŸA« Iº@ŸA­Mßh@ŸA« Iº@ŸAªpŸ ,@ª D“t¼@ª C,ÌZ@ª D“t¼@ª Gý@@ª D“t¼@ª FšzÊ@ª D“t¼@ª Eöº!@ª D“t¼@ª J…bƒ@ª D“t¼@ª OÆE2P@6¯O „M@6cúlr@3{ Iº^@3~R'HÏ@3Z~ùÛ"Ñ@3YLCZ%õ@2‚@·€5@2Ãä‡$²ô@2‚@·€5@2ÄØB$*2@2‚@·€5@2úm’^?~ì“?ÕÒJ?'XtM,È?‘œ$Oªní?‹¦ädá?‘‚(¥B?’ÿÚ»ý ?e™”XWø?’bãsÊâí?Œfuw©?Q’Ý蹟?“= pô*?“-Þå?¡‡?†³Di¿?Œµ¤!„??Œð”÷<½€?…Ê|ƒÜº˜?‹1«[Ü*?‰èHIy:H@@ @"@"@4@5?ð?ð?ð?ð?ð?ð?AwÏXà?aW| -?P:<¹Ýá??÷(ô7@ŸA®§¦"(@ª Go¹ó?oRw”~ª2?_æ§! Ú?çúsÅ™Õ?ÅœjÍW<@ŸfÄZó/D@F@®ÖÄ“t¼@®ÖÅ¡ÊÀƒ@®ÖÄ“t¼@®ÖĨÁTË@®ÖÄ“t¼@®ÖÄ÷eý‹@®ÖÄ“t¼@®ÖÅ8ï4Ø@®ÖÄ“t¼@®ÖÃ,¥zx@®ÖÄ“t¼Á.„€@«¸Që…@«¸“t¼j@«¸Që…@«¹ k¹Œ@«¸Që…@«¸†YJõ@«¸Që…@«ºáG®@«¸Që…@«¶E¡ÊÁ@«¸Që…Á.„€@2G>«6z@2D•*™1@0³S÷ÎÙ@0²©“ àÞ@0å`A‰7@0‰ 'RT@/Öð¸»@/Ö4êK@/Öð¸»@/Ø­«ŸU@/Öð¸»Á.„NÜC,¥?É^žQ5P‚?dYûë„{?’,³Zêª?ŒGZ0eê;?‘ñ•/m£{@8Ù?ÐbV‡,?”V ìi!¾?‘}7ˆ.Ñ?ø,~[´?’we °÷¬@8û—?‚i ú?¨,?ލf†)"?„›‹ÖO?…”rsw?ŒC ãSG@8 Ø@@@@@*?ð?ð?ð?ð?ðøøøøøøøøøøøøG@£+ J@£1&éy@£+ J@£’{²þÅ@£+ J@£éá°Š@£+ J@£X_ö”@£+ JÁ.„€@£+ JÁ.„€@ 6;dZ¬@ 6@@ 6;dZ¬@ 6M(Œç@ 6;dZ¬@ 60 Ä›¦@ 6;dZ¬@ 6ÑA [À@ 6;dZ¬Á.„€@ 6;dZ¬Á.„€@1òÃÉîËû@1ï—$tS@0‡ÎÙ‡+@0ã¶E¡ÊÀ@/¿;dZ¬@/ÖâëC,@/¸7´¢3œ@/8“t¼j@/¸7´¢3œÁ.„NÜC,¥@/¸7´¢3œÁ.„NÜC,¥?ðO­W¬ÃÆ?ÆO'q|õù?žG)ñ†Ü?ÒónxŠˆ@8Iç@8Ù?ð„ƒ;0?Ã’Â7•=œ?Ÿª3’®ý?ÐæÛ!ü¢@8S@8û—?ð!̃?Ü®©á|\?ˆÌ7^|Â?ÁÞ’7:ʪ@8 Ø@8 Ø?ð@@@?ð?ð?ð?ðøøøøøøøøøøøøH@©³På`A‰Á.„€@©³På`A‰Á.„€@©³På`A‰Á.„€@©³På`A‰Á.„€@©³På`A‰Á.„€@©³På`A‰@©³d%®æ3@’÷Y‡+Á.„€@’÷Y‡+Á.„€@’÷Y‡+Á.„€@’÷Y‡+Á.„€@’÷Y‡+Á.„€@’÷Y‡+@’÷†s×Ü@8Û¹Œ~($Á.„>¤µÜÆ@3’ Iº^5Á.„M‰ûçm@2×ï²-Á.„QnÙ‡@1á:’£SÁ.„NÜC,¥@1á:’£SÁ.„NÜC,¥@1á:’£S@1áë…¸R@8J¨@8#˜@8¾:@8 >+@8Iç?Ÿ‚ ˆÃ@8J¨@8Î÷@8i§@8Å@8S?œâ™:;{ˆ@8p÷@8 * @8p÷@8¶@8 Ø?•XðküÏ@&?ðøøøøøøøøøøøøI@¤Ý/Ÿ¾@¤Þ5?|ï@¤Ý/Ÿ¾@¤ÝæšÔ-@¤Ý/Ÿ¾@¤ÝæšÔ-@¤Ý/Ÿ¾@¤Þžš@¤Ý/Ÿ¾@¤ÛquŽ"@¤Ý/Ÿ¾@¤Û˜Çâ‚@¤æ²-V@¤æ²n—P@¤æ²-V@¤æ²ÊW§‡@¤æ²-V@¤æ°ØDÐ@¤æ²-V@¤æ±Ä2ÊX@¤æ²-V@¤æ²£S&@¤æ²-V@¤æ²äŽŠs@4Q|ÚQ@4Q[W>«6@0‚° Ä›¦@0‚GE8ï4@0]V”@0\C,¥zx@/”`ªdÂù@/“œ¾ß¥@/”`ªdÂù@/”záG®@/”`ªdÂù@/”!-w2?€‚ñêã ?õ¹Ëh?‘RsÈW?‹ÑqÔ@vÿ?‘Dj?¾ƒìÈÁ?|öOÿÝ?’ -‰¸Ì?ÀpMºÅ?@§[*^?‘&”T¦mÂ?b¶­-Óx?‚§W®ê ?ŒÆò/¢äÍ?‚Ÿ JŠÆ?‚ôhBì^?†ÃÛSPã?†Ë¢L1Ù@@@@@,@$?ð?ð?ð?ð?ð?ð¿@7Ô?=GÀ?2¡[°?+ýètî@¤ÝMÑ£@¤æ²vÓ­Û?R{¡á -dM?<Kåt³µ?°äM½?ƒÁGqÍ@Ÿg| kdº@J@ 4¼j~úÁ.„€@ 4¼j~ú@ DüóĈ@ 4¼j~ú@ =ÈÄ¥ @ 4¼j~ú@ X’;yÖ@ 4¼j~ú@ O -‡œp@ 4¼j~ú@ @OvÁØ@›r™™™™šÁ.„€@›r™™™™š@›rž«ƒv¢@›r™™™™š@›rÔû²Ô0@›r™™™™š@›r®ÅÌÎ.@›r™™™™š@›r¹\%ÿÚ@›r™™™™š@›ríͳB @4Y*0U2bÁ.„>¤µÜÆ@0ý‘hr° @0ã’"‚h@0'KƧïž@0õ8@05µsê³h@0 Wš§åª@05µsê³h@0 -saØ@05µsê³h@/þõº -@8J¨?›ø…;‹…??‘¡tpÿš{?“”ÆgoA?•u;ßVží?“ú‚Hö@8J¨? á,ØEæ?|™ŠQHf?‘=Øæ B0?™hã<ÛÛ?˜0T,Ái@8p÷?W9cS­Ò?„•ƒaåm?†Fö,lQo?’EõQxƒÄ?Œ”Þ%·þÒ@:@0@6@?@??ð?ð?ð?ð?ðøøøøøøøøøøøøK@£ËyXbN@£Ë}p£× -@£ËyXbN@£Ëm„M<@£ËyXbN@£Ër-V@£ËyXbN@£Ëy=Ùc@£ËyXbN@£Ë|žì¿±@£ËyXbN@£Ë}Ùb¸@¡HîzáH@¡Hú^5?}@¡HîzáH@¡Hí5¨Xy@¡HîzáH@¡HêÀƒo@¡HîzáH@¡Hò䎊r@¡HîzáH@¡Hó@N¤©@¡HîzáH@¡HöÕϪÎ@6įO „M@6¶lô!.@1}‘hr° @1}Ùb¶®@0Wï²-@0U`A‰7L@.ð‰ 'RU@.îËûµt@.ð‰ 'RU@.öR½<6@.ð‰ 'RU@.ìq ²•ê?…ÅBðrç?•tæïá,•?”^RžpX?ŒR‹w#z?‘,IÝ Áé?’_‘Oo¨Ž?‚á²Olºü?—áZk·×?•ûú·ø¨?£û,Ɇ?‘ ÛÌÏõA?‘1鄽 Ú?Šó¿á§E?’®ã‘\’?‡z"2Úù)?„€ã$V?„å;m7.?qÂ' -Bœ@@@@@@$?ð?ð?ð?ð?ð?ð¿'´tÀ¿T}QžÀ?EEℌ–Û?Gó°ö‚@£Ë|<€‹@¡Hö­[;½?d}<˜ØPÁ?h« žæe:?Ð VFº±À?Ø&úÿ&1@ŸiÛmî@L@¢Ä Òñ©üÁ.„€@¢Ä Òñ©ü@¢ÃáohÜ@¢Ä Òñ©ü@¢Ä Iº^5@¢Ä Òñ©ü@¢ÄëíúD@¢Ä Òñ©ü@¢Ä VÕÏ«@¢Ä Òñ©ü@¢Äp£× -@¥Ä$Ý/ Á.„€@¥Ä$Ý/ @¥Äˆe”¯@¥Ä$Ý/ @¥Ä,‹C•€@¥Ä$Ý/ @¥ÄfÏAó@¥Ä$Ý/ @¥Ä2•éá±@¥Ä$Ý/ @¥Ä1[W>«@8·â‚@·€Á.„>¤µÜÆ@3\Iº^5?@3­ÌcñA @2’Ðå`A‰@2¥¡ÊÀƒ@2O „M@2D2ÊW§‡@2O „M@2®æ1ø¡@2O „M@2"@·€4n@8J¨?À%ß°¸…?žX‹<ìu?¨3íçyà?™7reiü? ¡ì„Ìá˜@8J¨?½FÚËlÉ›?”ÿŒÙÿIí?­×4="Ø ?X2»æÕ$?ž…–½´Ö@8p÷?÷Ýù‰Ÿ¿?—’h…b?¤+|¯Ï4E?´~Äé?œè¢ü V@@@@ @(?ð?ð?ð?ð?ðøøøøøøøøøøøøM@§ Ƨïž@§ ƧïŸ@§ ƧïžÁ.„€@§ ƧïžÁ.„€@§ ƧïžÁ.„€@§ Ƨïž@§øy=Ù~@§ ƧïžÁ.„€@¨/Ÿ¾@¨í‘hs@¨/Ÿ¾Á.„€@¨/Ÿ¾Á.„€@¨/Ÿ¾Á.„€@¨/Ÿ¾@¨#{J#9@¨/Ÿ¾Á.„€@5¿–»˜È@5¿ß;dZ@1» Iº^Á.„M‰ûçm@1š~ùÛ"ÑÁ.„QnÙ‡@0𖻘ÇãÁ.„NÜC,¥@0𖻘Çã@0ê’£S&@0𖻘ÇãÁ.„NÜC,¥?€‚ñêã @8#˜@8¾:@8 >+?ž?=€T^@8Ù?„F/·ÿP5@8Î÷@8i§@8Å?•=ƒ™íx@8û—?‚ù…žÄ`w@8 * @8p÷@8¶?”¼íÒh@@8 Ø@@ ?ð?ðøøøøøøøøøøøøN@£ß·KƧð@£ß«åæ–K@£ß·KƧð@£ß–ù@£ß·KƧð@£ß¦"–îˆ@£ß·KƧð@£ß»«.’@£ß·KƧð@£ß8ï4Ö @£ß·KƧð@£ßYPšIþ@—˜¥ãSø@—˜&fffe@—˜¥ãSø@——ß×ÿµm@—˜¥ãSø@—˜LK÷Lþ@—˜¥ãSø@—˜ó§—@—˜¥ãSø@—˜½¿HÌ@—˜¥ãSø@—˜·0µa@6ÞHè§æ@6¾¿Ã]{.@4GÎÙ‡+@4=]j¢†o@3v§ï²-@3bÙ׃Â@3QÞi­BÄ@3Sùâ÷¾r@3QÞi­BÄ@30oiDg8@3QÞi­BÄ@3%Hˆ­ú?‘ 1˜Ó ?±;¤µÜÆ@3×+ IºÁ.„M‰ûçm@4~ùÛ"ÑÁ.„QnÙ‡@2ÏO „MÁ.„NÜC,¥@2ÏO „MÁ.„NÜC,¥@2ÏO „MÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøP@ iäÝ/ @ iæ$Ý/@ iäÝ/ @ iâòù‡@@ iäÝ/ @ iâýi8ˆ@ iäÝ/ @ iäó¢(@ iäÝ/ @ iä>£Ô(@ iäÝ/ @ iâòf“@¤Ì¸Që…@¤ÌCS÷ÎÙ@¤Ì¸Që…@¤Ì!ˆ%@¤Ì¸Që…@¤Ì+MéÚ‘@¤Ì¸Që…@¤Ì'Ž’>s@¤Ì¸Që…@¤Ì&4¬Ãœ@¤Ì¸Që…@¤Ì'ÌÃ’@8™*0U2b@8ŽŒ“ç˜:@3&‡+ J@3%÷Ff2@2;Ƨï²@29ˆäý¹_@1¦YJôðØ@1¤raÏ¥•@1¦YJôðØ@1¢É5–fÜ@1¦YJôðØ@1¤¡™_?Ÿ>KtAÿ?4Tÿ±N?’¸vô|*f?ŒxL’É€?‘§Jß/ ?‘‘ë^L~õ?ŠÊuq•ú?’] mœ?‘å p â«?‘…x_á½?‘xŸ7m¥#?‘?Ö™DÌQ?¢IÍ‘Q?Žp ž›Ì?†“k° ›¸?ƒÄÑŽf@?ˆÎ#ë&z?ˆ¦^§Ð°~@@ @(@(@5@6?ð?ð?ð?ð?ð?ð¿F@¿zÊ[V€?"z&CJò?\€Ëψ@ iäˆ99-@¤Ì-MÐÏJ?9F\”*\?}{f±pƒ§?nmèQÇj?ø¾;šEAG@Ÿn~Œ5p@Q@¢›èõÂ\@¢›è´9X@¢›èõÂ\@¢›ì‹C•@¢›èõÂ\@¢›êOv@¢›èõÂ\@¢›ï'»/ì@¢›èõÂ\@¢›ìL˜`@¢›èõÂ\@¢›ì˜_÷@ ×H´9X@ ×HõÂ\@ ×H´9X@ ×H1&éy@ ×H´9X@ ×K¬q ³@ ×H´9X@ ×LÌÌÌÍ@ ×H´9X@ ×L‹C•‚@ ×H´9X@ ×KC•@3Ç>«6z@3ÇeýŠÚº@1³S÷ÎÙ@1²{²þÅm@1©Û"Ðå`@1¬àuöý"@1}cˆe”°@1}jOv@1}cˆe”°@1zÀƒn˜@1}cˆe”°@1zŒL˜_?|öOÿÝ?‘¡çL¤?‘ojVrnBZî@4’ Iº^5@4”µÜÆ?@4’Ðå`A‰@4‡8}¿H@4‚@·€5@4êJŒM@4‚@·€5@4—$tS@4‚@·€5Á.„NÜC,¥?š•§q!U? …BÓ÷ ¡?¯&)_?¢Ö -ƒ«Y?µÝ\†¶Ç¿@8Ù?Œs¤DÅÐ?›–ë•ñ^?± ·uå¦?ªZ¯åf?¬B<…ª'­@8û—?…™ï ufÝ?Ÿ ‰$FÓ)?§òÄ U¸?™Á7²1lQ?´WÑÞ1x‹@8 Ø@@@@@*?ð?ð?ð?ð?ðøøøøøøøøøøøøS@¦žú^5?}@¦žønØ¢Ô@¦žú^5?}@¦ŸRº~à@¦žú^5?}@¦Ÿ ¯Ý9@¦žú^5?}@¦ŸÇËP@¦žú^5?}@¦Ÿ\A³2@¦žú^5?}@¦ŸD=F²@™§å`A‰7@™§çl°^@™§å`A‰7@™§õ}T˜¹@™§å`A‰7@™§÷f çÜ@™§å`A‰7@™§ô¿ÔGD@™§å`A‰7@™§èU÷¸Í@™§å`A‰7@™§÷n¼!Ê@6²ÃÉîËû@6´33Ü@2E?|í‘h@2C&g/@y@1ƒt¼j~ú@1|‘è¢@0ÔmÅÖ8†@0ÐUÀÕ‘B@0ÔmÅÖ8†@0Ò5†›“*@0ÔmÅÖ8†@0ËfGˆ)ô?‚Ú¡ËG7â?“ï ;m° ?’שÎå;?|¬Çµƒç9?” %M‡}?’j‚B/™œ?=Àaêk3?“ï)RÆPã?”B³ÔL¼ù?”¿éÂÊ?: O'·m?†³!2â{?†ô ‹LÆ?Š­-•üóè?Œg²p¡ý0@@"@ @"@3@2?ð?ð?ð?ð?ð?ð?g vD?UHÈKð?PžWp´ý(?Hˆ­.œQ@¦žÿxxYU@™§íc¬ø?p>¿BñúÅ?h®Þ]whÀ?äà 5Tøø?ÙÍŠ?ÿˆ@Ÿfõ(¥yï@T@ :ýó¶E¢@ :×ð X©@ :ýó¶E¢@ ;µ[?@ :ýó¶E¢@ ;ñJÅÜ@ :ýó¶E¢@ :üi¦½§@ :ýó¶E¢@ ;}ò̇@ :ýó¶E¢@ ;®†E@®•(õÂ\@®•;²Ìú@®•(õÂ\@®•+"»v@®•(õÂ\@®•.5)jÙ@®•(õÂ\@®•'c3Äj@®•(õÂ\@®•!­« @®•(õÂ\@®•&ù* @8h†YJôñ@8C;p@4!hr° Ä@4#%ÚW@3´“t¼j@3±sÙž]@2£ÉîËû@2¥·¿‚V@2£ÉîËû@2¦Öóhèb@2£ÉîËû@2¦Q!¾ùø?«ìÕMoÃ?Îòc -_È?”ÏY«ž&?õÿâ¢?‘jëŸÜ6Ý?‘X¬ ù‡ã?’àÕÂÎ7½?“0f–?“ç%¤%Þ?”BTV„®?Ø›HúN?“»Hò_³? —J£ó?”ªU’n?‘Ŷ0šlW?‡ƒèÏœ˜?ŠÊ@ i2?‹Û)B¢}@@&@(@,@"@(?ð?ð?ð?ð?ð?ð?x×Ýì@@¿t0XU·?b•O -óÇ?[müL x@ :ýŸ±ò@®•(PÜ·&?ub©'Ü/?yP×㞺 -?â–{-—ŠÔ?ìH;Ò}@ŸpCÒ7@z@U@ E0£× -=@ E0å`Aˆ@ E0£× -=@ E1¯:Ï@ E0£× -=@ E1'®+Ÿ@ E0£× -=@ E2+ìÇ­@ E0£× -=@ E.ŽþÇ@ E0£× -=@ E.uÁµµ@§üíV@§üí‘hr°@§üíV@§üì@¯‹@§üíV@§üì(ŸÐ@§üíV@§üí.Øï@§üíV@§üì<íà]@§üíV@§ü쪗éb@1‚ò䎊@1‚ò䎊@,€A‰7KÆ@,Òòä@+ªÀƒn˜@+ªû“‰¶@*õ¨Xy=Ú@*ôSü÷º@*õ¨Xy=Ú@*ôã¼ÓZ†@*õ¨Xy=Ú@*ô÷2#n?É_¦›ùôä?Ëû–´²R?‘ÛêÊlj?‹¦É¯}?ê˜çŽ?´O×û÷«?ÐbMÝn½?’Îð•§Œ?±vÍþ?-õ4ø¦?ÓJ/51^?Tð`0?€bîF¾§?Œ¬ßâýªr?‚nÚ¨´8Ñ?‚æp²ßÆ?†Š%ip¹-?†ŠYæ­p–@@ @"@ @:@8?ð?ð?ð?ð?ð?ð¿[³‚С¿)T0®p?@ʶ•n¨?*«Ž¾N!1@ E/ýʨú@§üì¯¯Š¡?P%¹"æ,?9= -BVàT?™­#~cyp?kö1'€a@Ÿs]¿Q‰@V@ªìŸ¾vÉ@ªí—Oà@ªìŸ¾vÉ@ªì9XbN@ªìŸ¾vÉ@ªì4•*™@ªìŸ¾vÉ@ªì,‹C•@ªìŸ¾vÉ@ªì*JŒM@ªìŸ¾vÉ@ªì,L˜_@­y®—Oß@­z¦éxÔþ@­y®—Oß@­yãþ\‘Ð@­y®—Oß@­y·§†Â'@­y®—Oß@­y¿!-w3@­y®—Oß@­y¸“t¼j@­y®—Oß@­y¾ÿ—%@8eöý!ÿ.@7Ýw1Å@5žÙ‡+@5¼<žì¿±@4þV“u@5Ñ·Xâ@4&YJôðØ@44%®æ1ù@4&YJôðØ@40å`A‰8@4&YJôðØ@4-ÅÖ8†Z?ìå™'• ?¯Ç0¾!©?£À¹¿1?¥¢‹WÕÜ?§5Ç•÷?š”JpÃT"?ð{ä6O?¬ûjŒ{­–?¥ûS]:°¸?ŸY`òƒë?«/móâ“?ž*“ÀMõL?ðÙ§µü??©¿[¡e'?¢€Âï7ÏÅ?˜$– Ñê?š3 ˜ÔDš?y½¼ŸŽ@@@@@,@(?ð?ð?ð?ð?ð?ð¿CI¡‰²¿Dà›?nl~*€€?k6wÇ…‰n@ªì,$VJÀ@­y¾¶Ù‹?}¾Éíé?|x°›ó?Ï%{c”—8?Ϫ]1I @Ÿtj¦ñ¨°@W@ ËC•@ ÅÀÊ@±@ ËC•@ ÐCó~ª@ ËC•@ Ï’ygz@ ËC•@ Êl~¹¦@ ËC•@ Ê’T3 @ ËC•@ ÊÙ_j˜@©¸œ¬1'@©¸œj~ùÛ@©¸œ¬1'@©¸ÉæK¿@©¸œ¬1'@©¸›':K'@©¸œ¬1'@©¸š  @©¸œ¬1'@©¸›×²@©¸œ¬1'@©¸š*Y$O@7m¥œàv@7hG~#Rè@3B° Ä›¦@3Dí†Bí$@2t“t¼j@2uQ“pŠ­@1n_oÒ @1oFŸ@1n_oÒ @1n+(ô+H@1n_oÒ @1n+kÏþw?Ž\Õl6Ò?’@-ï?U?‘+@8Iç@8Ù?¾lO»x#@8Î÷@8i§@8Å@8S@8û—?Äü8ïä$É@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøZ@¥ÆMÒñ©ü@¥ÆPØ_@¥ÆMÒñ©ü@¥Ç”záG®@¥ÆMÒñ©ü@¥Ç”¼j~ù@¥ÆMÒñ©ü@¥Ç†€IR@¥ÆMÒñ©ü@¥ÆÑ‚©“ @¥ÆMÒñ©ü@¥Æzxl#@›häZ¬@›hæºI<‰@›häZ¬@›i&Á¾@›häZ¬@›iM„M;@›häZ¬@›i“t¼j@›häZ¬@›hì1&ê@›häZ¬@›h×Á½¥@6wâ‚@·€@6vÜ=6›ö@3J^5?|í@3y=Ùb@2Ú~ùÛ"Ñ@2¡4êJŒ@2TmÅÖ8†@2>BZîc@2TmÅÖ8†@2·éùr@2TmÅÖ8†@2xFÜ]d?…ðE[i)?¿h(©O‡¬? Þ‘KOî¦?™ ­:>Co?ºFILòXT?—À °Ø§ ?~Ov_Ø­«?šKËlÖ€?¦² ͉«?¨ÿÛ¦k®Q?¡G÷fx^K?“®°ýYè@?‚ˆóºRÉ?‘ûKá•)†?¢ïJ8ÈŸ?šÿh1oS?Žrø·óæ?Š|)-}í(@@@@@@?ð?ð?ð?ð?ð?ð?{˲N¿K{µ†ð?¦q¥Ÿ,„?ZÞ.ò7©‹@¥ÆtmIæ@›hä^Ûá•?ÅRïF*?z€b^f•ë@‚æËv ?ör´Úúb­@Ÿd!1<@[@£R`A‰7L@£R`Ä›¥ã@£R`A‰7L@£RTÖ¡aå@£R`A‰7L@£RWškP±@£R`A‰7L@£RV_Ø­¬@£R`A‰7L@£Rzu%F@£R`A‰7L@£R¾vÈ´@¢W -=p¤@¢S÷ÎÙ@¢W -=p¤@¢KC,¥@¢W -=p¤@¢P©*0@¢W -=p¤@¢G†Â&@¢W -=p¤@¢wÎÙ‡@¢W -=p¤@¢ohÛŒ@6ºqÞi­C@6º³g ù -@3”›¥ãSø@3¡A [À@3 ²-V@3cŠ @2‘Þi­BÄ@2¤M:’£@2‘Þi­BÄ@2£a@N¥@2‘Þi­BÄ@2¡ø -à?€‚ñêã ?“”üU§<­?£|Á±ûŸ?’ {½4?¡ áãà³?¢û‰˜·‡]?‚á²Olºü?–gÝ3ýø’?—uæË}üI?Œ°1Ù?ªä¬¯kF?œ –sPf¤µÜÆ@3 í‘hr°@2[Cô K@2U`A‰7L@1®Œºµ6@1¸DЩ*@1!9üíÎ@1¸DЩ*@1"8aáÒö@1¸DЩ*@1$£õ_*Y@8J¨?°ò û:ºŽ?ËMži1¬ç?ƦJG?Ì ’Ï×’3?Îí^ùºM”@8J¨?ÌEò¹ÞW¾?Ùìç9‡™V?ØnŒÂY§¤?Óó÷su*o?ß­À%Üß@8p÷?—Ö¢úŸö?‘CJã…"h?•J¨€PÖ?œˆ#÷™©_?¥¹p?Í8>@&@,@,@<@;?ð?ð?ð?ð?ðøøøøøøøøøøøø]@©òdÝ/ @©ò\í‘hs@©òdÝ/ @©òBZîc!@©òdÝ/ @©òñA \@©òdÝ/ @©òSMj@©òdÝ/ @©òca@N@©òdÝ/ @©òkC•@£]­V@£]™Û"Ðå@£]­V@£]½}¿H€@£]­V@£]®p:û@£]­V@£]Á:’£@£]­V@£]¾žš@£]­V@£]¹õY³Ð@8‡>«6z@8}cˆe”°@5œIº^5?@5²-V@4V”@4‰…ðoiD@3ÑÞi­BÄ@3ÅŽ!–R¾@3ÑÞi­BÄ@3ÄtSŽóN@3ÑÞi­BÄ@3Á [À7?–ªÎ­¡?¦Ld{±õ6?·•¡°¯äÚ>?œä%—ëš?žãîôÑU˜?’ã0eʪv?’.p»Cþ? ¨„¨ƒZ?¡â/‡ßü+?Šó¿á§E?”܉a^±‚?—M3§´ ?‰Ò–(?”ø™¾?—ÂÔèÄè@@@@@*@(?ð?ð?ð?ð?ð?ð¿[˜¿v[æ€?Fq¥ö®u%?[ñíl·t@ª—Æï^)‰@¤d<ŠR?eÔÂ;…NÊ?u$ˆŸÅÞ?¹Ŷ ù»?Õ6FV$c‹@ŸjyQè/ @`@§h‰º^5?@§h‰ûçl‹@§h‰º^5?@§h‹C•@§h‰º^5?@§h‹Æ§ï@§h‰º^5?@§hŠ=p£×@§h‰º^5?@§hˆÛ‹¬r@§h‰º^5?@§h‡ÕfÏB@©9©ûçl‹@©9ª~ùÛ#@©9©ûçl‹@©9©º^5?@©9©ûçl‹@©9© 'RT@©9©ûçl‹@©9© 'RT@©9©ûçl‹@©9ª¦L/ƒ@©9©ûçl‹@©9©*0U3@3ý:’£@3üô!-x@0Ô›¥ãSø@0Ô¯O „N@/ÉxÔýó¶@/ÈõÂ\)@0«6z‘@0}Vlô @0«6z‘@0Aò×t@0«6z‘@0Aò×t?|öOÿÝ?¦Ì '?‘G¿yÛ?ï?ŒR‹w#z?‘#6‰¥_?ïˆ6ÏJ?|¬Çëý ?’?Á• ñ:?»Þ‹"è?UÕh;·Å?‘ÞIŸö?sxÙ/T?‚íWçé„?ŒÆò/¢äÍ?‚¯­Ù¤Á¶?ƒR¨º“JÞ?†©b/bJö?‡”_Õ­çW@@@@@,@(?ð?ð?ð?ð?ð?ð¿4h¶(à¿'¨¾¦@?&ÍPDüß?!(K´%¤@§h‰l²ÝÔ@©9ª¨Rp?F³[M.šÈ?Ax4ÇY#©?›Œ}Ø!â?¦X*ö¾l@Ÿfæ v³@a@ª9NV“@ª9MV@ª9NV“@ª9YÎ_q@ª9NV“@ª9?Š Þ@ª9NV“@ª9Kûµt@ª9NV“@ª9UÜÆ?@ª9NV“@ª9WÎÙˆ@ªèÙ‡+@ªèØÔýó¶@ªèÙ‡+@ªèÌ¥zxl@ªèÙ‡+@ªèÎ_oÑ@ªèÙ‡+@ªèÈ1&éz@ªèÙ‡+@ªèϪ͞ƒ@ªèÙ‡+@ªèÌ¿±[X@6µS&Á¾@6¶8†YJõ@3æ‡+ J@3Ã9Àëíú@3²-V@3R¼£n@2ÔmÅÖ8†@2¸Îp:û@2ÔmÅÖ8†@2Ô¯O „M@2ÔmÅÖ8†@2Ò䎊qÞ?„F/·ÿP5?¦2ð¥?·¨÷³±FI?¢º™ÁLŠ?“eð7Õ@?™S:Ъ;5?’Óusÿ\Ã?«z]藍Ð?¾Üœžõ?´lyxƒ?•]ÅvüM ?š>[F»h?ƒ!A -mº¸?”3®èÚ ?“àÕèéa‚? ÁpLµAÑ?”¦”x£b?˜§zy@@@@@@ ?ð?ð?ð?ð?ð?ð?aΫ¿cªÄÄÏ?Aân&ן·?@£E|–ó@ª9RQ¯v@ªèÒ®UÁ?câüØèk?a’ðU:©P?Áo³%Œ7^?°SÉQ0þ@ŸišÉˆ=ä@b@¦Që…¸Á.„€@¦Që…¸@¦Xy=Ù@¦Që…¸@¦Qhr°!@¦Që…¸@¦Y‡+@¦Që…¸@¦UL˜_@¦Që…¸@¦QN;Í6@­× Òñ©üÁ.„€@­× Òñ©ü@­×Îp:û@­× Òñ©ü@­×|„µÝ@­× Òñ©ü@­× ¹Œ~'@­× Òñ©ü@­× ²•éâ@­× Òñ©ü@­× ùrF@8è†YJôñÁ.„>¤µÜÆ@4µãS÷ÎÙ@4·ï²-@41‰7Kƨ@42¶®}Vm@3TmÅÖ8†@3\(õÂ\@3TmÅÖ8†@3ZÔ,<ží@3TmÅÖ8†@3YQ‚©“ @8J¨?•˜Qi{cj?œñ=¼™Õ›?¡ÔZûto?™¼wX¬?›ß‘@rY@8J¨?š¾ˆè ”?œlôU °?–…%j»a?™B°*Z?˜]'ŠÎØY@8p÷?’+0ê­ìT?=Ÿo -F?{ЇÞ?“vuØcʲ?™/ã̽`ª@@@@*@,?ð?ð?ð?ð?ðøøøøøøøøøøøøc@¢^7ÎÙ‡@¢^6È´9X@¢^7ÎÙ‡@¢^0|„µÝ@¢^7ÎÙ‡@¢^$Z¬@¢^7ÎÙ‡@¢^%8ï4×@¢^7ÎÙ‡@¢^#¢œwš@¢^7ÎÙ‡@¢^3 àÞÓ@®pîzáH@®píV@®pîzáH@®pÑë…¹@®pîzáH@®pî±Ä2Ë@®pîzáH@®q$Ý/@®pîzáH@®q*³g ù@®pîzáH@®qîcŠ@7‰Î_oÒ@7‡¯·é@5‡ÎÙ‡+@5¦ -¦L/ƒ@56§ï²-@5St¼j~ú@4‚‚@·€5@4‰Q‚©“ @4‚‚@·€5@4„ohÜ@4‚‚@·€5@4n.±Ä2Ê?€‚ñêã ?—A«ª°×Z?­"à‹åÈÞ?¤×%I _¨?¯QW᎕?¢Ì€¬ím?—¤o„C?›ªÊît…?£Å„œ ¹ô?£_™*ã>?«Å0ì7á\?¢übÉ&‘…?˜èò_?¦ªÎ­¡?³ß"xþ?­O‰Mññy?¥pZ;d?³-oÀä@@@@@*@$?ð?ð?ð?ð?ð?ð¿b¦³(7?…¥$€?\¾tý÷G¥?e/æ~†Q>@¢^1»U»h@®qR— ?} 9Šž‹?…U-wX^/?â/ocÍÿ?éo@<@Ÿfs[¨ñ@d@¦ç\¬1'@¦ç5?|í‘@¦ç\¬1'@¦çо í)@¦ç\¬1'@¦íòn—P@¦ç\¬1'@¦çèr° Å@¦ç\¬1'Á.„€@¦ç\¬1'Á.„€@¦Õ­‘hr°@¦Õ”¼j~ú@¦Õ­‘hr°@¦ÕÔ!-w@¦Õ­‘hr°@¦Ó²-V@¦Õ­‘hr°@¦ØO–»™@¦Õ­‘hr°Á.„€@¦Õ­‘hr°Á.„€@8åöý!ÿ.@8Þ.±Ä2Ê@4|í‘hr@35ðoiDg@3È“t¼j@2Í‘hr°!@2ó&Á½¥@2DµÜÆ?@2ó&Á½¥Á.„NÜC,¥@2ó&Á½¥Á.„NÜC,¥?³‰ÑpEIt?àÒÄ©ßaö@åx¾Ë–?Û9ü¸1GÁ@8Iç@8Ù?ºmÇXÿÖ?Ùókbû?ïm e\£?Ûû &Þ÷@8S@8û—?¿d¹ÖÏû?ªî —[b?ßËDø;?¶ôõÝiä,@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøe@­‹C•@­|í‘hs@­‹C•@­”Ö¡aå@­‹C•@­˜bMÓ@­‹C•@­žƒä&@­‹C•@­”É…ðn@­‹C•@­“ÃaA@¤ÙvÈ´9X@¤Ù‡ï²-@¤ÙvÈ´9X@¤Ùr½<6@¤ÙvÈ´9X@¤Ù‚&€I@¤ÙvÈ´9X@¤ÙzîcŠ@¤ÙvÈ´9X@¤ÙxÔýóµ@¤ÙvÈ´9X@¤ÙxüPH@8h†YJôñ@8iº^5?}@4ðÄ›¥ãT@4ïò䎊r@4V”@4 'RTa@3«xFÜ^@3£÷ÎÙˆ@3«xFÜ^@3£S&Â@3«xFÜ^@3£33334?£È‰·akû?¦¢:<ƒ§²?™Ô/©[wÚ?œw!·E3?£¬3¥ê©©?—Ò¸ùBz3? Eˆ‡ðó‹?—·f;m?¤W8K?œ¨…2Œ?£kj \Ä™?˜æØ.ô?±4^Ê ¥T?”~ªd•?¿N†Ï¹?'dÂã—…?›hB1ÌËí?–¿nè$„@@@@@,@"?ð?ð?ð?ð?ð?ð?r5Asw¿h*2RW?Px ö½X?KÅ á ÞÜ@­JÇe’@¤Ù|Ï@+kjçÕfÐ@+kC•%@+kjçÕfÐ@+k’:)Çz@+kjçÕfÐ@+kŸU›=?É^žQ5P‚?Čۨ1A?‘$Cê¡@í?‹¨þ„/š?ëÎ@ A2?À­Õß}º?ÐbV‡,?’Ï>`Ï?†[‘'Í?3.Ylî?ÔÒ@úˆ‘?Z˜°,aÝ?€b¡´ñ@?Œ­·Ž~('?‚‹¡8*ú?‚äÍ“½E'?†½ª»—?†l&þ@@@@@(@*?ð?ð?ð?ð?ð?ð¿Mý+d?%À”?4qmœC? Gϼ>óB@¡Å‡<ç´@«’ý™Õy?C¦ÕÎ9«4?.΃¬ð±N?‚ø¬wXæ9?TÉAZÝ›´@ŸsSùè@g@¦–Rn—P@¦–cŠ @¦–Rn—P@¦–FL@¦–Rn—P@¦–RÞž@¦–Rn—P@¦–*—!7@¦–Rn—P@¦–/fn̉@¦–Rn—P@¦–(¥*è@š.7KƧð@š.>ùÛ"Ð@š.7KƧð@š.‰ί@š.7KƧð@š...n@š.7KƧð@š.kÈáW@š.7KƧð@š.r9$`’@š.7KƧð@š.H¼èj,@8ÿ–»˜È@9ÖO· Ö@4Iº^5?@4"—îí0@3PA‰7KÇ@3KšOy´@2O „M@2ˆò¡ëe@2O „M@2Ž »©t@2O „M@2’j¦ë=6?|çµB &€?—–·Í¼Ô¦?§ïÖòsó?¢sòN·Èº?ž5m;0 Õ?¥ŸÙ`š²¥?³E„ŒgŽ?”ù¯ò?«{.áV?“{ÕÀ€©?¥¶¡c°O(?¨aïÅ‘Õ ?¨KËo¨?›ïâ‹%j?™µö*ÿå?”ÜX³?–ð`oeÝ^?¡û!Žø8œ@@ @(@ @2@9?ð?ð?ð?ð?ð?ð¿Œ&ÃSäÀ¿<–IZÄ?cT¾§KŒF?tl -;ÒÙî@¦–9s–Õ@š.f¸3t9?‹¤] ¸?„d}È1Gˆ?öŠE< Ã?èé]03^@Ÿmq(¬Õð@h@¡—Oß;@¡¢MÒñª@¡—Oß;@¡03[ðÖ@¡—Oß;@¡}X‚ˆ@¡—Oß;@¡?~ÙÓ@¡—Oß;@¡VŒu1z@¡—Oß;@¡Yu%ù/@¬ðÖ‡+ @¬ð×Ç÷ñ›@¬ðÖ‡+ @¬ðÌ&f ­@¬ðÖ‡+ @¬ñðE¡µ@¬ðÖ‡+ @¬ðãY8òî@¬ðÖ‡+ @¬ð¬ûãá‡@¬ðÖ‡+ @¬ð{CìRs@7ÞHè§æ@7Û#ä©@@3ÇÎÙ‡+@4S ŠÇR½@2ûƧï²@2üUä´‘@2¡:’£S@3a`q"@2¡:’£S@2ǯKò¶@2¡:’£S@2ÇÙ°J™Å?‡©½(‡üÐ?«[e‘„?–x,Þöu?ª0±2¡B?­2¹e˜Hv?®&i;~Ô?Žì«ÍÊ#?¼táíáÇ?š;n ?¸ÜÌJqz?¥’è©0ôh?š Ó /?’¥æÀj?²MVÂNlF?•þ¨G’FQ?¡›y²¶©í?™qDÜðå?”%ÐóD¸b@@&@$@(@6@4?ð?ð?ð?ð?ð?ð¿”©z À¿‘ŽXžÃ@?yvXÕ‹£?lM¼ÈDœ@¡~ÄÖ†`@¬ð»°CŠb?–gQ 7Ö?޼/OåæŒ@1¬‡=@¢õG«óW@ŸcNbTè4@i@¡œwKƧð@¡œtýó¶F@¡œwKƧð@¡œt`ªdÃ@¡œwKƧð@¡œu '»@¡œwKƧð@¡œwÎÙ‡@¡œwKƧð@¡œwXâe@¡œwKƧð@¡œiÞÒ@©Qhr°!@©Që…¸@©Qhr°!@©O'»/ë@©Qhr°!@©M„M;@©Qhr°!@©M(Œç@©Qhr°!@©OÅp@©Qhr°!@©@ÞÒˆÍ@7^Hè§æ@7aë…¸R@2» Iº^@2ºkP°ò|@2;Ƨï²@2=žƒä%¯@1Vý!ÿ.I@1VÁ½¥@1Vý!ÿ.I@1U¼£n/@1Vý!ÿ.I@1CÐ|„µÝ?„F/·ÿP5?ÎÁ¯‰t0?’#ç}iïë?Œ'õ‚$5ñ?’ðä¼_?«ûm÷0|?‘â%ì˜ ä?“¡ƒ[¤45?‘Jâ”âj?0ÜN :s?’˜£“µ~Ð?˜"ߨÇ>?¢ó6õ··?êzŽx?ˆ©CwBÅÉ?„•ˆG’Z¾?ˆÔÞÑ—æJ?¨*ކáÁ@@@@@,@*?ð?ð?ð?ð?ð?ð?9 …óP¿aÒÉç?M_d»É—?YñÈ %Š@¡œvJïÕw@©M½ùÏ`?k2Ê¢rP?v}–²:w\?Ôó™k³Â!?çÙ1QÛ(@ŸhŽÿ/òÍ@j@§ÛùXbN@§ÛöÈ´9X@§ÛùXbN@§ÛùXbM@§ÛùXbN@§Ûü„µÜÆ@§ÛùXbN@§ÛùÛ"Ðå@§ÛùXbN@§ÛøFÜ]@§ÛùXbN@§ÛøQë…@¤èyÛ"Ðå@¤èz¬1@¤èyÛ"Ðå@¤è{šu@¤èyÛ"Ðå@¤è{µsì@¤èyÛ"Ðå@¤èyXbN@¤èyÛ"Ðå@¤èz)Çy§@¤èyÛ"Ðå@¤èyb¶®@6Ì]cˆe”@6ÉÎ_oÒ@2Ìí‘hr°@2ÌÌÌÌÌÌ@2~ùÛ"Ñ@2…‡“ݘ@1Š0U2a|@1‹…¸Qì@1Š0U2a|@1ŠW§†Â'@1Š0U2a|@1Š…‡“ݘ?…ÅBðrç?×s·IÓ?‘t‘ócjë?$Ìj½BÙ?’FL{öó?‘<ƒÜ_õ?|öOÿÝ?’Êå\tW?‘%gÇ¿µ?‘.“¥?‘ØèOÍ ì?低NëV?„ò—TËÃ?1·†Æjñ?ƒ~¨õ/¥O?„l¯¸‰ŒÎ?ˆCns¥ ?ˆ”Tj«›ª@@@@@*@&?ð?ð?ð?ð?ð?ð?8à]P¿}*ë`?5>œhcÄ ?6Èï÷Í@§Ûø{Æ@¤èyÙO–?Tþf|X1{?7„ß -6ü#?°Y¸ª^S?xôN „@ŸhmH¢ k@k@¥Oß;Á.„€@¥Oß;@¥±¢ Ì@¥Oß;@¥‚*†³@¥Oß;@¥£³²“º@¥Oß;@¥«Ð‡YV@¥Oß;@¥Æðçu@•+éxÔýôÁ.„€@•+éxÔýô@•+¾ãÙx~@•+éxÔýô@•)¾¢½êN@•+éxÔýô@•,~®yW@•+éxÔýô@•,xüg²0@•+éxÔýô@•,®±l “@8Žì¿±[XÁ.„>¤µÜÆ@4i‡+ @49=]?ê@3Æ“t¼@3KD‚àPŸ@2𖻘Çã@2¬¶oEí¶@2𖻘Çã@2žs%9s@2𖻘Çã@2£¦F¯h@8J¨?ºÂ2‘?¹!Ò±rå?Àó¼ceˆt?¹*- -QÊ?¼öaú@,@8J¨?¶Is|±¿?¿«Ì,ünš?Á^\Nb¾æ?ÅD?Þ?¿ “®†ùÝ@8p÷?¦ðsgá̘?¤u™ìc4ÿ?¦ûä7¡,œ?§áä<?¯þ+Ü̪W@*@&@(@;@8?ð?ð?ð?ð?ðøøøøøøøøøøøøl@ž{ÌÌÌÌÍ@ž{ÊÁÏKJ@ž{ÌÌÌÌÍ@ž{Þ³cû®@ž{ÌÌÌÌÍ@ž{é\NýÃ@ž{ÌÌÌÌÍ@ž{Ò4.@ž{ÌÌÌÌÍ@ž{ëÅØ%&@ž{ÌÌÌÌÍ@ž{ÚUöÏ–@£=p£× -@£=ó)4@£=p£× -@£K‚ç³@£=p£× -@£:œ 2ñ@£=p£× -@£=hH@£=p£× -@£BlJüa@£=p£× -@£A³fñ­@4” xFÜ@4”“t¼j@1õãS÷ÎÙ@1òB•Jv@1‹"Ðå`B@1‹±vG6è@0õµsê³h@0Ô%¯@0õµsê³h@0öy/rÆ@0õµsê³h@0õ0æã ?|¬Æ Væ?Õ|«2×8?‘€ÝøßN…?Œ‚±÷`?›]jÍõ­á?• P€+ü?|¬Æ Væ?’æl0þF?ŒjÃÙÖ?aËÝš¦?—Ÿ±¦p?’Ü OYbç?‚×—‘»®ÿ?Œî(åc€ª?‰Çˆ Âç?ƒ¨úž+@ì?‹“ª×1¿?‹ÆGØÊ@@@@ @2@,?ð?ð?ð?ð?ð?ð?`¿ùè?F<²ÿ?L×—Ô˜à«?9 3PØù@ž{Ò“ƒ)×@£?ðÿª?jÊ"<@D?XT×±ž!?ÞÐKõØw?º{ì­Ði@@Ÿe'b}Ïâ@m@¤LvE¡ÊÁ@¤Lv‡+ @¤LvE¡ÊÁ@¤LuÂ\)@¤LvE¡ÊÁ@¤Lv”Fs‚@¤LvE¡ÊÁ@¤LvR½<6@¤LvE¡ÊÁ@¤Luµsê³@¤LvE¡ÊÁ@¤Lu*™1@ªÝ’n—P@ªÝ’° Ä@ªÝ’n—P@ªÝ’:)Çz@ªÝ’n—P@ªÝ’¼£@ªÝ’n—P@ªÝ“Ãa@@ªÝ’n—P@ªÝ“3333@ªÝ’n—P@ªÝ“t¼j@304mÅÖ8@30:û~‘@0›¥ãSø@0¯O „M@/ÊÀƒn@/G®zâ@.̲•éá±@.̘_ö–@.̲•éá±@.̲•éá±@.̲•éá±@.̲•éá±?|öOÿÝ?é¥3i£ó?‘1f_¨Ï÷?ŒvHn&³?‘ ·èf?Ðýð^–Ö?|öOÿÝ?’¼  g¶?‘N÷J’?íu…XÚ?îCq$u?b¶­-Óx?‚nâwfÿ?Œ¯þuõí?‚uÞ@>N ?‚äÍ“½E'?†ÃÛSPã?†¯Mž684@@@@@*@(?ð?ð?ð?ð?ð?ð¿.³z–`?&Ì ?F §°?›^C¿ù@¤Lv^¯Ø@ªÝ“¬Œ?2>ù=q?5†ÃE?ù?qÔïø=ÔÍ?wÔï"œù‹@ŸføW½þ@n@¬ïŸ¾w@¬í³]þ×@¬ïŸ¾w@¬ò(R@¬ïŸ¾w@¬÷q5ç@¬ïŸ¾w@¬öôº(@¬ïŸ¾w@¬òqOhŽ@¬ïŸ¾w@¬ðÚ§}ª@™³"Ðå`B@™³$ˆ(*@™³"Ðå`B@™³'Lß>‰@™³"Ðå`B@™³$ÌqB@™³"Ðå`B@™³ À¾z@™³"Ðå`B@™³$[§ Ü@™³"Ðå`B@™³”î¦À@8 ]cˆe”@8cA&II@3Š^5?|í@3ˆ‰nÏš@2Àå`A‰7@2½Á[„@2zÔ,<ží@2t°R!LT@2zÔ,<ží@2vYt¹í@2zÔ,<ží@2vËVì?•'Z]Ô&?ä5;-?’`&בɽ?‘ÛÛ2K?‘Ë5‹Þ¸?‘šµû"®?™I'%ö«?’2S÷8žä?’“¿yŒÕ'?”ã‡EƒÑ?’JWV'ñ?‘aÓ¾?—%—º«?@w%±?‚ÝD÷3?…ÉvCy?‰ aç³7?Š®§ª*ç¶@@$@(@,@4@2?ð?ð?ð?ð?ð?ð?>Ðø¿C3º/Æ?Um_ÁsÇØ?Bñ^Ö0É@¬òkUò_@™³!V -?qïMy›G?_9óîßmÓ?ßKÖø`‚?³QÿJ†e6@Ÿn9@ym@o@¡  Iº^@¡ u a@¡  Iº^@¡ n—@¡  Iº^@¡ ÞÑ·@¡  Iº^@¡ …‡ ¨@¡  Iº^@¡ å`AŠ@¡  Iº^@¡ Ín;˜@£bPbMÒò@£bP£× -=@£bPbMÒò@£bPc^K@£bPbMÒò@£bP¡v7¢@£bPbMÒò@£bPô]0@£bPbMÒò@£bP ò1 @£bPbMÒò@£bP|„µÞ@4Û¹Œ~($@4Ü¥zƒ(Ø@.8“t¼j@.8¯ûÂjZ@-h1&éxÕ@-hˆ õÆß@+87´¢3œ@+8_ÌW›1@+87´¢3œ@+8•2&°@+87´¢3œ@+8†YJôð?}x—™Ö@¨Là‰C?d‚3r?p»œ‰Xìá?È—° ø?Ö9Gø¢Èü@Ÿm߀€@q@¨3Z¬1@¨3Z¬1@¨3Z¬1@¨3\]cˆf@¨3Z¬1@¨3XÔýóµ@¨3Z¬1@¨3Zû~‘@¨3Z¬1@¨3YJôðØ@¨3Z¬1@¨3YXbN@¤’« Iº@¤’ª~ùÛ#@¤’« Iº@¤’«¹Œ~'@¤’« Iº@¤’ª™0¾@¤’« Iº@¤’«xFÜ@¤’« Iº@¤’«6z@¤’« Iº@¤’«xFÜ@5>«6z@5+ Iº@1Ùº^5?}@1ÙÛ"Ðå`@0»Æ§ï²@0»ÚQÎ@0œàu÷@0”¯O „@0œàu÷@02a|Ú@0œàu÷@02a|Ú?}Ñ¿ž,?¥nÇx?)?‘°&޲P?Œ^:Òf?‘,IÝ Áé?Ðýð^–Ö?}Ñ¿ž,?’0nà=Q“?ÔCXsò?‡@Cvì×?‘Uç·Býi?]#ÍìO¤?…ÑTë0Ó?ŒïQ¼º“ã?‚ù…žÄ`x?‚ù8 ±^?†ÃÛSPã?†Ë¢L1Ù@@@@@,@&?ð?ð?ð?ð?ð?ð¿ò³¾?+‘^è0?'Râå¼ö? ï|X }@¨3Yÿ{äî@¤’ªý…hŽ?GP)&^²?-¡~}eí?œ^;ûI?eÝIº—¥q@Ÿg%ºã·u@r@£(õÂ@£(1&éy@£(õÂ@£"Ðå`B@£(õÂ@£ -à @£(õÂ@£À6â@£(õÂ@£l"h -@£(õÂ@£!ä÷eý@«òô9Xb@«òòñ©ûç@«òô9Xb@«òðoiDg@«òô9Xb@«òá½¥ž@«òô9Xb@«òôSŽóM@«òô9Xb@«òöÈ´9W@«òô9Xb@«òÿ½@7í¥œàv@7ì<žì¿²@3Ù‡+@3"3œ¾à@2Ë"Ðå`B@2Òn—Oß@1èè§æ›@1ì¥zxl"@1èè§æ›@1ôM:’£@1èè§æ›@1ó&Á½¥?–ªÎ­¡?’‚€‡d_s? Þ‘KOî¦?$¿ÀºÍ?[F»h?¥ñ.EkÐ?’Эs_ª`?ŽâS[ÞDí?ŒÅÐ7N³¬?°4\ɵ?ŠE§e,¤@@@@@&@*?ð?ð?ð?ð?ð?ð¿JX£|p¿c¼õûX?e%6À×¾?T\¤Ò®@¤v¿|„#Ò@­ƒçÿ8Pp?wÍN†÷I?nž‚&K¾?á¥ß'aM?ÇN¿Ú7Ù¤@ŸoHúwði@t@ ø8Ôýó¶@ ø8FÜ]@ ø8Ôýó¶@ ø7Ý0Vn@ ø8Ôýó¶@ ø9èG§¨@ ø8Ôýó¶@ ø7!÷nñ@ ø8Ôýó¶@ ø5ú(=«@ ø8Ôýó¶@ ø4¡…À @¦«r-V@¦«që…¸@¦«r-V@¦«q¦<Ú@¦«r-V@¦«ròæ‰@¦«r-V@¦«uÂ`/À@¦«r-V@¦«q·¹'@¦«r-V@¦«r±B¤@4*0U2b@4˜E¬å@1Œí‘hr°@1Ž£õ’@0ˆ“t¼j@0†ò‘V®¬@0TmÅÖ8†@0Rû~ÿ˜@0TmÅÖ8†@0TGa¹&Ô@0TmÅÖ8†@0S_g{µ‚?|çµB &€?Áù9§?‘e¨>ëc-?‹¯“'â?‘6θ„ À?‘€’9ñd?|Ñb×¶@?’ÎáëÕ~?‹>ºIA?-õHºD4?‘i¤”Ö­?x9f‰‰?‚t¢w{O?Œ·«HÍZS?‚Þþ̯.3?ƒ:I³l¬?†ð˜½#®?†æñŽŒ$@@@ @ @3@2?ð?ð?ð?ð?ð?ð¿Bòaw?/EÊ«à?DP®Ýp?<ŸydÏÝD@ ø6Öì@¦«r©æÜ?>þœÎ´“7?]úþ|•?‰Çc¬x‡š?Åõ>î––@Ÿfångb@u@¦åþùÛ"Ñ@¦åþ¸Që…@¦åþùÛ"Ñ@¦åÿ.Hè¦@¦åþùÛ"Ñ@¦åþùÛ"Ñ@¦åþùÛ"Ñ@¦åþvÈ´9@¦åþùÛ"Ñ@¦åý²-V@¦åþùÛ"Ñ@¦åýŠÚ¹õ@¥YÓ÷ÎÙ@¥YÔzáG®@¥YÓ÷ÎÙ@¥YÓÃa?@¥YÓ÷ÎÙ@¥YÓ÷ÎÙ@¥YÓ÷ÎÙ@¥YÔSŽóN@¥YÓ÷ÎÙ@¥YÓMj@¥YÓ÷ÎÙ@¥YÓ3332@3‚ò䎊@3‚&€IR@0 Ä›¥ã@/ÿU›=È@.DZ¬1@.CFÜ]cˆ@.Vð¸»@.U¨Xy=Ú@.Vð¸»@.UϪ͞„@.Vð¸»@.UfÏAò?|öOÿÝ?¦Ì '?‘šÕU#?Œ<…ÓÆÝ?ÿ £‰¸9?ÍàÊaùX?|¬Çëý ?’4 "ëžØ?«'Q™µ?˜ò¶Ðú?îCq$u?e¾DQ„Q?‚nâwfÿ?ŒÂ§dß±?‚|׿pZ?ƒ ?ÿ½?†¼Š˜L¥÷?†ÃÛSPã@@@@@(@*?ð?ð?ð?ð?ð?ð¿-d%°¿0YÖ½è? ŸLÑ¡F)?¸ï….}H@¦åþCj=Ü@¥YÓøYh3?+†nÔ¡]Ö?2$3Uì[?di\TÝù -?põ¬ LG¦@ŸfðIZw9@v@¢«ûdZ¬@¢«þå°êk@¢«ûdZ¬Á.„€@¢«ûdZ¬Á.„€@¢«ûdZ¬Á.„€@¢«ûdZ¬Á.„€@¢«ûdZ¬Á.„€@–Ò&éxÔþ@–ÒBÓ®ú!@–Ò&éxÔþÁ.„€@–Ò&éxÔþÁ.„€@–Ò&éxÔþÁ.„€@–Ò&éxÔþÁ.„€@–Ò&éxÔþÁ.„€@8%öý!ÿ.@8'¾ömÀ›@43S÷ÎÙÁ.„M‰ûçm@3Wï²-Á.„QnÙ‡@2Ê0U2a|Á.„NÜC,¥@2Ê0U2a|Á.„NÜC,¥@2Ê0U2a|Á.„NÜC,¥?}x—™+@8Iç@8Ù?’t D5·±@8Î÷@8i§@8Å@8S@8û—?¤«¥lˆï{@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøw@¦¥Â Iº^@¦¥¼í‘hs@¦¥Â Iº^@¦¥ÄtSŽó@¦¥Â Iº^@¦¥Ã{J#:@¦¥Â Iº^@¦¥ÀÞÒˆÎ@¦¥Â Iº^@¦¥Á-w1@¦¥Â Iº^@¦¥¿¾vȵ@­Û"Ðå`@­Ôýó¶F@­Û"Ðå`@­ØüPH@­Û"Ðå`@­Þžš@­Û"Ðå`@­Úû~‘@­Û"Ðå`@­Ú)Çy§@­Û"Ðå`@­Ú)Çy§@8 Î_oÒ@8s×Ûô@3° Ä›¦@3Ä9XbN@2Ãt¼j~ú@2Âø7´¢4@2…œàu÷@2„ã¼ÓZ†@2…œàu÷@2†z–¼@2…œàu÷@2†“t½?¢Æ÷Xê†?•tæïá,•?’Q/Èö -®?‹¬àÌ’Ç?“eð7Õ@?“7ƒÆD -¹?ˆÿÀ)T¿Æ?–9}»Ö=?• -o‡É§?£û,Ɇ?‘áÙž­ò?“å¡jÚ?oeư0?3ßa=„?ˆìûIè«6y@®=“u@®=“u@®=“u@®=*™1@¥~6E¡ÊÁ@¥~4ýó¶F@¥~6E¡ÊÁ@¥~7´¢3œ@¥~6E¡ÊÁ@¥~6z—@¥~6E¡ÊÁ@¥~5Y³Ð~@¥~6E¡ÊÁ@¥~5*™1@¥~6E¡ÊÁ@¥~4¢3œ@5ÞHè§æ@5Üàuöý"@2+ Iº@2_ö”F@1ÐA‰7KÇ@1Òu%F -¦@0?ò䎊r@0@ù k¹Œ@0?ò䎊r@0@Ñ·Xâ@0?ò䎊r@0@ Ä›¥ä?|öOÿÝ?Qdöÿô¼?“njĕ‹x?Œ'õ‚$5ñ?‘#6‰¥_?‘f]£àG?„F/·ÿP5?’[ KÄ0R?‘´"«Õa?Níú¾?‘<¸ö}½?Éöm/wª¸ ?€=P|@@@@@,@*?ð?ð?ð?ð?ð?ð¿ØØ€¾ûVTx€?*(ä‹43Ñ?=ç¨é~@®=0às«@¥~5Šˆ?JÝ„–inj?3Va‚”‘ê?¡Åg’Î?mð,÷!‚@Ÿh>ÐïË@y@¦ø“u@¦øS÷ÎÙ@¦ø“u@¦ø33334@¦ø“u@¦õ+…¸R@¦ø“u@¦÷Þ5?|í@¦ø“uÁ.„€@¦ø“uÁ.„€@§w½p£× -@§wÇ+ K@§w½p£× -@§w^ÿ—$@§w½p£× -@§vÚ¬1@§w½p£× -@§wQhr°!@§w½p£× -Á.„€@§w½p£× -Á.„€@8^Hè§æ@8`-à @3Œí‘hr°@3EãS÷ÎÙ@3v§ï²-@2šÚ¹õY´@2ÙŒ~($ @2OhÛ‹­@2ÙŒ~($ Á.„NÜC,¥@2ÙŒ~($ Á.„NÜC,¥?óA[ØïF?µpo‚_?ÓãPàQáÇ?¹f¨P¸Ëý@8Iç@8Ù?ªÝ8Ⱥ™J?³&àÖ`ç?Ð;+óå¬Ç?·øõЦûX@8S@8û—?ªÞUWºci?°ëç¡×4r?¦þ“ßH/b?ÇÓDZ›€@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøz@¯ˆ:^5?}@¯ˆ;dZ¬@¯ˆ:^5?}@¯ˆ;šu@¯ˆ:^5?}@¯ˆ:^5?}@¯ˆ:^5?}@¯ˆ9Î_q@¯ˆ:^5?}@¯ˆ8ï4Ö¡@¯ˆ:^5?}@¯ˆ8“t¼j@ ¶ÌÌÌÌÍ@ ¶ÌÌÌÌÍ@ ¶ÌÌÌÌÍ@ ¶ÍjO@ ¶ÌÌÌÌÍ@ ¶ÍúCþ\@ ¶ÌÌÌÌÍ@ ¶Ì"h Õ@ ¶ÌÌÌÌÍ@ ¶ËÓÃa@ ¶ÌÌÌÌÍ@ ¶ËÓÃa@5[¹Œ~($@5\ô!-w@1Iº^5@@1Oß;dZ@0"-V@0"Ðå`A‰@/Ǔݗö,@/Çâ‚@·€@/Ǔݗö,@/É 'RTa@/Ǔݗö,@/É…ðoiE?ð°–Ž]?ûJ`ÕYð?‘"žæÆó¡?ŒÖ -Äȱ?‘'¬Å™» ?ë+ʦÜ_?ð°–Ž]?’p RN%Î?ˆ9²0?Hª¦ºón?‘ ·èf?›ªU3Îp?ð*wjs—?Å9–o?„ËD(ºp?ƒv_.^?†ÃÛSPã?ŠEÝ‹N?ð@@@@,@,?ð?ð?ð?ð?ð?ð¿Aéû¿ ¿"=cÁü? ÞkàÆõ™? Sgœ½>@¯ˆ9$7,@ ¶Ëðxþ?c)²xT)?kAêä\ó?2»¤ž!ö¼?%ÇPz÷XÖ@Ÿs~÷í@{@ªTr-V@ªT~vÈ´9@ªTr-V@ªToAò×@ªTr-V@ªTuL˜_@ªTr-V@ªTuéá°‹@ªTr-V@ªTp Ä›¦@ªTr-V@ªT‚h Ô•@ªµøÔýó¶@ªµöÈ´9W@ªµøÔýó¶@ªµô¼@ªµøÔýó¶@ªµó àÞÔ@ªµøÔýó¶@ª¶ðoiC@ªµøÔýó¶@ª¶œwšk@ªµøÔýó¶@ª¶SŽóM@8ãg ù l@8ÝÈK]Ì@4E?|í‘h@4Gâ‚@·€@3´“t¼j@3´÷eýŠÛ@3J0U2a|@3HÇâ‚@¸@3J0U2a|@3H´9Xc@3J0U2a|@3CŽóMj?—¤o„C? È»v\¶?–™@^Ú¢?—IW`g’?ž–n.õ}ø?¥ìõ`$-š?º,eª ™?•¤-'Ä,?™ ?G·W?•è­¸‡? !o‹j`?#°‘N˜?–í -e˜›ð?vùv“?“Vné?‹Ûu¤ó†4?¢Kà7~w>?žµ½èq¨®@@@@@*@(?ð?ð?ð?ð?ð?ð¿[u±Ô?upY-Ú€?að{ÎÎïÐ?hN<ñ¾Dd@ªTw:Âòp@ª¶c—Ä?½÷Zàáw?zú•›?ã蔊 w:?Ø‹þ?n@Ÿo4Rš6ž@|@¬šbÐå`B@¬š}/Ÿ½@¬šbÐå`B@¬šÙ0¾ ì@¬šbÐå`B@¬š­V@¬šbÐå`B@¬š×KƧð@¬šbÐå`B@¬›Ð©*@¬šbÐå`B@¬›ò×r@¬TÌIº^5@¬TÃn—@¬TÌIº^5@¬TºCþ\’@¬TÌIº^5@¬TÄÝ/ @¬TÌIº^5@¬TƧï²@¬TÌIº^5@¬T¬ç¯¸@¬TÌIº^5@¬T¬~($ @5åöý!ÿ.@5¾ í(Œæ@2° Ä›¦@2€ Ä›¥ã@2Ðå`A‰@1ã¶E¡ÊÀ@2ý!ÿ.I@1Í}¿HÌ@2ý!ÿ.I@1ÒÐå`A‰@2ý!ÿ.I@1Óˆe”¯O?žˆ2}?¹Rñão¬@?¬Œª:bËf?¢Š3?Úyd?¾w/á›F?¾Wºñø…í?“Æ×q„nï?@`WÓæ?¢zhû›\¾?”¡VòÄ\F?£Pr¶ã™?œŒ9•`}·?¼ÐÁß9&û?’žÿ§:­?™båïVý?…bv{3dZ?$Ìj½BÙ?’&Á¯»@@@@@,@*?ð?ð?ð?ð?ð?ð? ¦ÙÁA€¿pÆ -?aÈŠX¤µÜÆ@3B° Ä›¦@3@A‰7KÆ@2Ðå`A‰@2£n.±Ä@1ÑÞi­BÄ@1Ïß;dZ@1ÑÞi­BÄ@1Ðò{²þÆ@1ÑÞi­BÄ@1аò{²ÿ@8J¨?W[†?“=P™Ê?î®)„àµ?‘¿ÐÅu?’?=ÆþÎò@8J¨?“‚Û£0Τ?”p¶I”“ž?’„÷ò¸?‘ ^Íü?ÿ?“X<‡÷Ú@8p÷?3ßa=„?…/‡ÙX·³?„À"aËô??ŠEÝ‹N?Š—à `ž@@@@ @,?ð?ð?ð?ð?ðøøøøøøøøøøøø~@¤ª²-V@¤ª°£× -=@¤ª²-V@¤ª¥®æ1ù@¤ª²-V@¤ªÁTÉ…ñ@¤ª²-V@¤ªÂh Ô•@¤ª²-V@¤ªÆö”Ft@¤ª²-V@¤ª´!-w@« A‰7L@«¨´9X@« A‰7L@«¸FÜ]@« A‰7L@«£ñA \@« A‰7L@«‹ûµt@« A‰7L@«ˆ Ô•@« A‰7L@«¤%®æ2@7eöý!ÿ.@7e`A‰7L@4Š^5?|í@4”¼j~ùÛ@3ä¼j~ùÛ@3òœwškQ@3…œàu÷@3˜ÁTÉ…ñ@3…œàu÷@3±Î_p@3…œàu÷@3¬¹#¢œx?‘â%ì˜ ä?˜¶ÚæÁ€?”Ä0óçî?¤ïâ NŠ:?´¢¦è?²P£zjÊ?1·†Æjñ?¡Ú4\á2?¡)~Y¡6 ?ª*G„kì?¸û9]t`?·æ±/&?‘MM….äí?™:K²ïÏ?¡§~gN? C×.ΰ?¢ŠEÈ>g?°óËr:vI@@@@@,@,?ð?ð?ð?ð?ð?ð?n ¯¬<¿yùÞ`?b!ftB ?j0a$mT"@¤ª¶d4ˆÔ@«Ÿö:t?|#NÍ?ÐPÒãÅö?ÕÅ@l.d„?ဩ™·™P@Ÿ`‹¡Ôß@@«2wÎÙ‡@«2€ƒn˜@«2wÎÙ‡@«2|PHð@«2wÎÙ‡@«2v4é@«2wÎÙ‡@«2uéá°Š@«2wÎÙ‡@«2t!-v@«2wÎÙ‡@«2v“v@­·ƒn˜@­·Ä›¥ã@­·ƒn˜@­¶ÿ±[W?@­·ƒn˜@­·s×Ü@­·ƒn˜@­¶øï4Ö¢@­·ƒn˜@­¶ö“u@­·ƒn˜@­¶õϪ͟@8uS&Á¾@8kàÞÒˆÎ@3áhr° Ä@3ÝBÃÉîÌ@3Ú~ùÛ"Ñ@3Ô%®æ1ù@3mÅÖ8†@3Ñ·Y@3mÅÖ8†@3êJŒM@3mÅÖ8†@3·éùr?®í©@Šþ?’u~•Ñ?˜²éÃ_ÓÔ?’9ñ9¶ò8?™‰‰…Â?–yí+PYu?|öOÿÝ?”zòžÕÿ?¡âŠÊ -?•ãÿ§…|?•MšuVÑQ?˜6@(/ÇÝ?–uDJ‘`º?*øT?™“ÇÙ¹?‰‹„áùO"?‘\,‚†!?>LR_5@@@@@*@*?ð?ð?ð?ð?ð?ð¿Q¯r{>¿dŒlHL?QŸâ¶"ˆŒ?/U0ÛL¨@«2v<¦šê@­¶ø­"?eA1Ä‹Gµ?Uý˜ºTK‹?·[Éö2? q³8¢@ŸoBçM3@€@žŒp£× -=@ž‹Ã:ÉAÉ@žŒp£× -=Á.„€@žŒp£× -=Á.„€@žŒp£× -=Á.„€@žŒp£× -=Á.„€@žŒp£× -=Á.„€@–$´9Xb@–$ûÌFÂ<@–$´9XbÁ.„€@–$´9XbÁ.„€@–$´9XbÁ.„€@–$´9XbÁ.„€@–$´9XbÁ.„€@7*0U2b@7»¼Y×@3”›¥ãSøÁ.„M‰ûçm@3$¼j~ùÛÁ.„QnÙ‡@3ý!ÿ.IÁ.„NÜC,¥@3ý!ÿ.IÁ.„NÜC,¥@3ý!ÿ.IÁ.„NÜC,¥?•¬š3€å®@8#˜@8¾:@8 >+@8Iç@8Ù?€kz½ -~@8Î÷@8i§@8Å@8S@8û—?kŸsŽŸP@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@žÎ\(õÃÁ.„€@žÎ\(õÃÁ.„€@žÎ\(õÃÁ.„€@žÎ\(õÃÁ.„€@žÎ\(õÃÁ.„€@žÎ\(õÃÁ.„€@™*Ý/Ÿ¾Á.„€@™*Ý/Ÿ¾Á.„€@™*Ý/Ÿ¾Á.„€@™*Ý/Ÿ¾Á.„€@™*Ý/Ÿ¾Á.„€@™*Ý/Ÿ¾Á.„€@7Ñ|ÚQÁ.„>¤µÜÆ@3xr° ÄœÁ.„M‰ûçm@2Z~ùÛ"ÑÁ.„QnÙ‡@1𖻘ÇãÁ.„NÜC,¥@1𖻘ÇãÁ.„NÜC,¥@1𖻘ÇãÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø‚@©/Þ¸Që…@©/ñë…¸@©/Þ¸Që…@©/© 'RU@©/Þ¸Që…@©/ÍOß;e@©/Þ¸Që…@©/wéùs@©/Þ¸Që…@©/Ó&Á¾@©/Þ¸Që…@©/®cŠ -@®é¯Ÿ¾w@®ép£× -@®é¯Ÿ¾w@®é“¶E¡Ê@®é¯Ÿ¾w@®é¨´9X@®é¯Ÿ¾w@®é™0¾ í@®é¯Ÿ¾w@®é“@N¤©@®é¯Ÿ¾w@®ê™³Ð|…@9Y*0U2b@9N($ x@5®5?|í‘@5¾cŠ @5 "Ðå`B@5ÑN;Í6@4Œ¿±[W?@4»ÓÃa@@4Œ¿±[W?@4wÁ½¥@4Œ¿±[W?@4áœàuöý?ÁxgÀ?—µ”öŒqÒ?’´ýBI{?£ìߦË>?¤¦aR¢o?«ÿÄå3:?·à¦_ëý?°M\³Ù“@? Dñ£P?¨œ»ÁÔé?®ƒý{T»¯?°?6-Kò?Ò^áÁèw?¤A8 Kú¿?¹§Âƒj?¤„»•Uñ#?˜uqR¿7?¦Tј+‰@@@@@@?ð?ð?ð?ð?ð?ð?´>¶F@?¨¸º5 ?š3+0‘|\?¥>Hr&Ûø@©/¥u÷@®éÕPrf?¬pYÂfL?½Ùy1ŠÊD@#Ž›¶/†>@=rQÎȈ8@ŸosÄÕ–@ƒ@«aÊÀƒ@«aô±î#@«aÊÀƒ@«a’tûš@«aÊÀƒ@«e““L@«aÊÀƒ@«Šd……|@«aÊÀƒ@«ˆ6‹Lü@«aÊÀƒ@«Šè±0:@•jcS÷ÎÙ@•jR·ÏÀ€@•jcS÷ÎÙ@•iÍ[Y˜@•jcS÷ÎÙ@•iœ@Ϭ×@•jcS÷ÎÙ@•iÃU¾ -ß@•jcS÷ÎÙ@•iàê".Ä@•jcS÷ÎÙ@•iÒAÙ‚;@7›¹Œ~($@7ž+÷ë£p@3W+ Iº@2ú€e*ìA@1ÐA‰7KÇ@1ž¶;Ìù@1ž«6z‘@1jp|&Û @1ž«6z‘@1k åÉÌ’@1ž«6z‘@1pëœz&?~Ov_Ø­«?®ÅWMʨ ? íµß'N5?«ùšô1…ê?¦\?°ZÖl?§lhFB?‚Ú¡ËG7?†K@oþ?ŽƒuèÂ:d?’Á¡QËÙ?‘èÅ~òu‡@@&@ @,@:@9?ð?ð?ð?ð?ð?ð?ƒk±~ù¿ŽD뎀?XÊ´ÎÇè?fí2†™Ìü@«mGmù@•j/(?p¥û½Ú?}ë"5Æãy?׋à¨ùù:?älŒ“5òB@Ÿ_(—Š¿@„@¦]­V@¦]­Oß;d@¦]­V@¦]®p:û@¦]­V@¦]¸y=Ù@¦]­V@¦]·ÎÙˆ@¦]­V@¦]²:)Çz@¦]­V@¦]©^ž @ž3 Ä›¥ã@ž3¡G®{@ž3 Ä›¥ã@ž3©*0U2@ž3 Ä›¥ã@ž3™JôðØ@ž3 Ä›¥ã@ž3œú¬Ùé@ž3 Ä›¥ã@ž3¢œwšj@ž3 Ä›¥ã@ž39#¢œw@3Ñ|ÚQ@3Òe+ÓÄ@2n5?|í‘@2j¹õY³Ð@24“t¼j@23S&Â@1Ê0U2a|@1Ã× -=p¤@1Ê0U2a|@1ÈÇâ‚@¸@1Ê0U2a|@1°ÞÒˆÎp?|öOÿÝ?‘6 '8? ±ubÊÅ5?“U†žév?”#?3ÆÂƒ?¨ÅkÊL?|öOÿÝ?’馿œãj?œ*&Ækúµ?•{G_r¤V?“Ô¼2“#š?½«YÙ­ 8?‚|׿pY?•ŠPç<}¨?“„*0x)Æ?“äÐå÷à?ùDâΊ?ÇùØò¸@@@@@*@*?ð?ð?ð?ð?ð?ð?Yòú­~¿;á×óô?Tú:‡4À?WÙk3^"@¦]°òäª@ž3ŸüÌM]?p¦sHe·G?rüDç¯î?åpAKÇ|Ü?èÅxÙ…ª@Ÿaõc5U @…@¥ü4¼j~ú@¥ü4¼j~ú@¥ü4¼j~ú@¥ü5$Ý@¥ü4¼j~ú@¥ü6“u@¥ü4¼j~ú@¥ü5Â\*@¥ü4¼j~ú@¥ü5 '»@¥ü4¼j~ú@¥ü3œ¾à@¯F&éxÔþ@¯F'+ K@¯F&éxÔþ@¯F'l‹C–@¯F&éxÔþ@¯F)7Kƨ@¯F&éxÔþ@¯F'ï²-@¯F&éxÔþ@¯F)Dg8@¯F&éxÔþ@¯F(Xy=Ø@2Bò䎊@2Be+ÓÄ@-{"Ðå`A@-{çl‹C”@-%¡ÊÀƒ@-%+ÓÃa@,#¼ÓZ…ˆ@,#9Àëíû@,#¼ÓZ…ˆ@,"ÞÑ·@,#¼ÓZ…ˆ@,"‚@·€5?É^žQ5P‚?Æ¿5›7÷?‘ŸÇSñ?‹ËØ|*(?îú/´`?Å{¿Ž<¹?ÐbV‡,?’Ï>`Ï?€s8rÅ?-õI¸`K?ÔÒ@úˆ‘?M\³Ù“@?€cPßQª?Œµ3‰;šÏ?‚|׿pZ?ƒ^ ›¨¬a?†špk Y?†špk Y@@@@@@?ð?ð?ð?ð?ð?ð¿Lpð¢?-8"Ûx?)~˜WÃåÛ?8Šî•Ïù—@¥ü4ä=CÄ@¯F(xŸ)À?8€™¼õ?G<788Z?mWZª§á?‡·©l1@Ÿs -ú@†@¨ ¬1'@¨ ¬1'@¨ ¬1'@¨ ÓZ…ˆ@¨ ¬1'@¨ ¬1(@¨ ¬1'@¨ Æ?@¨ ¬1'@¨ àuöý@¨ ¬1'@¨ —ö+k@®Lèr° Å@®Lè´9X@®Lèr° Å@®Lä“t»@®Lèr° Å@®LäÝ/ @®Lèr° Å@®Lâh Ô•@®Lèr° Å@®Lß|í‘h@®Lèr° Å@®LãFÜ]e@4(†YJôñ@4(e”¯O@0‚° Ä›¦@0‚¼£n@/Ýó¶E¡Ë@/Ûµsê´@.̲•éá±@.Ç+ I»@.̲•éá±@.Ǔݗö+@.̲•éá±@.ȧæšÕ?|¬Çëý ?:LÓá -í?‘D&»ä?Ž‚¨Ø†{~?‘EÉ@Ú?ô Î]V?|öOÿÝ?’®> -fuæ?‘N÷J’?‘.“¥?•¯ÃþƒR?’ Óº^?‚¯­Ù¤Áµ?Œèsq‡#?‚ù…žÄ`x?ƒ*|š\/´?†µ°jÆÃ?‡L8õASÎ@@@@@&@&?ð?ð?ð?ð?ð?ð? hï ¿Z¢ô?ƒd²Óì~?@øõÐ5@¨ 笿Ž@®Lå(Ž(?/N££D?a q²:…8?j xG¸ë ?ɳ¿?¶@ŸfQñÑè@‡@¤4¼j~ú@¤+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøøˆ@¥Õ$Ý@¥Ö‡+ @¥Õ$Ý@¥Ó÷ÎÙ@¥Õ$Ý@¥ÔÉ…ðo@¥Õ$Ý@¥Ö+jçÕ@¥Õ$Ý@¥Öz˜@¥Õ$Ý@¥Öý!ÿ.@¬ÇuÂ\)@¬Çv“u@¬ÇuÂ\)@¬ÇvÈ´9X@¬ÇuÂ\)@¬Çxï4Ö¢@¬ÇuÂ\)@¬Çu*™1@¬ÇuÂ\)@¬ÇqÅ‚@¬ÇuÂ\)@¬Çsg ù @6Q|ÚQ@6Q4êJŒ@2Ù‡+@2í(Œç@1’Ðå`A‰@1‘aä÷eþ@0á:’£S@0Þ}Vlô@0á:’£S@0ßË’:)È@0á:’£S@0à?}Ñ¿ž,?¾¢`ƒ?‘RsÈW?‹ÁË…ÉT?’<_+fjä?‘®¬nÒMê?„F/·ÿP5?’ ,øÕC©?ö”iåó¨?@§[*^?“Æ×q„nð?‘"›ö?ƒM¬Öe—^?Œ°¶.Ä+Æ?„„OW°ó?ƒ3¸Î{Z?†Ü‘ °Ô?‡gϵ’õ@@@@@,@*?ð?ð?ð?ð?ð?ð>ù©¿Eýã‚`?«~sL+¥?2©wÌ}ò@¥Öˆ5*@¬Çt„Zl?4óªuëÑ?R½—õÆ6?uÛb`?©ñQ U…@Ÿgò!‰1È@‰@ d%ãS÷Ï@ d%ãS÷Ï@ d%ãS÷Ï@ d&™Î[@ d%ãS÷Ï@ d&$PR@ d%ãS÷Ï@ d''ÃA@ d%ãS÷Ï@ d%Yfa@ d%ãS÷Ï@ d$Ζ,Š@­÷ÎÙ‡@­øbMÓ@­÷ÎÙ‡@­ø®µ¾f@­÷ÎÙ‡@­øXz£x@­÷ÎÙ‡@­øhÄ@­÷ÎÙ‡@­÷´¢3œ@­÷ÎÙ‡@­ø}¿G@2ò䎊@2ò䎊@/Gï²-@/GéùrG@-|¬1&ê@-{–®E¸÷@-(Û‹¬q @-(fsøF@-(Û‹¬q @-)'WŒ{N@-(Û‹¬q @-(^¹‡§9?É^ž6õP?ÎÅ…ÐS?‘,žÔë5?‹Æ÷– ø?é4ôØ­5?¿óÈj?ÐbQë„›¦?’±5-¨?”Ùí˜6?8³QÁ9Ö?מ‚d?\j¥Ý4?€bwÄ' g?Œ·Zæ[?‚{›ÜL’‚?‚ì&{A‡ð?†”3†° ?†Žpu{,@@,@,@,@8@7?ð?ð?ð?ð?ð?ð¿PÒÙJ¿#dTX?)ÄãP‡"·?(ÐY˜9-@ d%éÌd@­øôi/?8ÃÎÿd?6È -voE?nôÂ)Õ?f²»Ï¹ÿ@Ÿs%[@Š@­ël°@3‚° Ä›¦@3ƒ/€Þ–Ô@2¹7KƧð@2ºÈ?ö¡2@2ò䎊r@2|`æÓºM@2ò䎊r@2€î¢ «@2ò䎊r@2~Ôð·)¤µÜÆ@3!hr° ÄÁ.„M‰ûçm@2ÒÐå`A‰Á.„QnÙ‡@2«6z‘Á.„NÜC,¥@2«6z‘Á.„NÜC,¥@2«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@­š¬1@­˜Që…@­š¬1@­¯Aò×@­š¬1@­¯hÛŒ@­š¬1@­¹b¶®@­š¬1@­¯\(õÃ@­š¬1@­±Þi­C@©Å 7Kƨ@©Ål‹C–@©Å 7Kƨ@©ÅÅ€@©Å 7Kƨ@©Åå`Aˆ@©Å 7Kƨ@©Å÷ÎÙ@©Å 7Kƨ@©Å#¢œx@©Å 7Kƨ@©Å¨Xy=@7Hè§æ@7±Ä2ÊW@3”›¥ãSø@3jOv@36§ï²-@3*Ÿ¾vÈ´@2s&Á½¥@2_—$tS@2s&Á½¥@2b3œ¾à@2s&Á½¥@2bò䎋?žˆ2}?ªi1Ÿ[„ñ?¢ž<³Óž?Ég(6ßð?¬¶Íl…ÿ?ªà—èðŒô?‡YÍ_?—Ð/ω(2?•ÙK°FÑ?—×:`‰?±ÂÍ–M?­87ÞŽ?‘¼Åâ<{?™î  lƒ?˜Ÿó6P¤?‹Bºá­?’Ì÷y\ÛÎ?–í -e˜›ï@@@@@,@,?ð?ð?ð?ð?ð?ð?„Ò4>?p™'³?fP•3?[×?Fœœê@­¨Z4Mf@©Å 뛑Æ?€è7ˆWê?a6 +ª?û¸9Ýÿ?°ya}Qò*@ŸbàOoò@Ž@ŸýÁ‰7KÇ@ŸýÂŽð@ŸýÁ‰7KÇÁ.„€@ŸýÁ‰7KÇÁ.„€@ŸýÁ‰7KÇÁ.„€@ŸýÁ‰7KÇÁ.„€@ŸýÁ‰7KÇÁ.„€@§eOß;@§eÕÉ»[@§eOß;Á.„€@§eOß;Á.„€@§eOß;Á.„€@§eOß;Á.„€@§eOß;Á.„€@7Q|ÚQ@7Q°ùEû@3Ìí‘hr°Á.„M‰ûçm@2’Ðå`A‰Á.„QnÙ‡@1¡:’£SÁ.„NÜC,¥@1¡:’£SÁ.„NÜC,¥@1¡:’£SÁ.„NÜC,¥?|¬Æ Væ@8#˜@8¾:@8 >+@8Iç@8Ù?…ðE[i)@8Î÷@8i§@8Å@8S@8û—?‚§jÃK¶@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@­%›¥ãT@­%~¹T@­%›¥ãT@­%*î€@­%›¥ãT@­%³Oÿ@­%›¥ãT@­%wåÆ@­%›¥ãT@­%…t5@­%›¥ãT@­%¥´á@“AøÔýó¶@“BáÔêé@“AøÔýó¶@“BM:“@“AøÔýó¶@“B¡û®@“AøÔýó¶@“Aö¥+³@“AøÔýó¶@“Aýé(a@“AøÔýó¶@“Aò#¥ËÅ@8zqÞi­C@8{Èh Ö@4 Ä›¥ã@4Y¼¶L@41‰7Kƨ@45ô-yÂ@3”mÅÖ8†@3˜)œÖqb@3”mÅÖ8†@3›Xè¹íC@3”mÅÖ8†@3 ó|ñÜã?‚Cš æI?ðÓ¡ãö€?“ÊÚgÅ?“¦î‘?™ ¶¦€_? Ç -å¸*?©Å°C°ýz?’â›üŸ?”ŽqP:6?™¶  -1Ê?›Ì¦Ú2ô?¡JS¢«6z?É^žQ5P‚?*£|3Né?’d3ð"7?ŽÝ¡uÒ(r?’<_+fjä?‘·díW‚?ÐbMçê_x?’#maЀ?–¬HðºDŸ?¡Ð`HÇi?—ÒGþUÀ?›öBhéÀ?€ÖùL[]–? $gú‡v?ƒM¬Öe—_?ƒR¨º“JÞ?‡<û¡71?†ùadô|@@@@@*@*?ð?ð?ð?ð?ð?ð¿]+ð?|!„V"À?G€ÛÄXZ¯?l°Öb^ç@¢LÙPߥ@¬Q]DK?@?V±þl‹«­?xËÑTR‘\?¥_H®Ëm ?ÑÆôUá›h@Ÿs&a@‘@ªƒn˜@ª%$]\@ªƒn˜@ªòEã©O@ªƒn˜@ªü"Á @ªƒn˜@ªïgÁ{}@ªƒn˜@ªøÉ)L¬@ªƒn˜@ªõ‹oˆ@›¶n—P@›¶[§ E@›¶n—P@›¶Û’R{@›¶n—P@›¶ ‹¬¿È@›¶n—P@›¶ ¤-W@›¶n—P@›¶Ÿ\B³@›¶n—P@›µæÕ#B–@8šÔ,<Ÿ@8A`M* @4óS÷ÎÙ@4öŸwô°@3îùÛ"Ðå@3ï>@¶ãO@3p–»˜Çã@3oÜa@Ø@3p–»˜Çã@3nOx4h@@3p–»˜Çã@3p³­j÷¬?¤c|iÅqd?Ã…tÁâ.?šXMXö?Œ4’“ê<~?‘?ïä7œÝ?’n¥³w‚e?ñ3<' ?’\PÏ‘?–Ì´ù?-õIâG?ÏQ7Ù?’E͵kò?¡Þ—f8§u?“K»jw˜?!× f†?‹Äñ|þäõ?è° ˆ¨›?ŽéºuŠÉT@@@&@ @,@,?ð?ð?ð?ð?ð?ð?6¦ðõ ¿qâxõò?gSZ iÕu?QíW L(@ªô\æ@›µÿöó¡A?|ˆ¦,œez?u…ˆfÑ’µ?ò†q˜+Öð?냣V Qî@ŸnÁØHÆ&@’@¨Ã« Iº@¨Ã©ûçl‹@¨Ã« Iº@¨Ã‡ü¹#£@¨Ã« Iº@¨ÃP‰ 'R@¨Ã« Iº@¨ÃC¼ÓZ†@¨Ã« Iº@¨Ã`ëíúD@¨Ã« Iº@¨Ãf$Ý/@§ Òñ©ûç@§ Ð Ä›¦@§ Òñ©ûç@§ ¨§æ›@§ Òñ©ûç@§ ŽÙ‡+@§ Òñ©ûç@§ ¡ohÛ@§ Òñ©ûç@§ Æffff@§ Òñ©ûç@§ ¿U›=@6í¥œàv@6æ_Ø­« @3õãS÷ÎÙ@3àU2a|@3‹"Ðå`B@3nvÈ´9X@2½cˆe”°@2šOv`@2½cˆe”°@2”ŽŠqÞj@2½cˆe”°@2™0¾ í)?™™™™™™š? )™È.‡ -?·‚L7œS?°ž‹<›Þ?½ø5eyèé?ºæ'Ýt?‡YÍ_?®@ ‰VBš?¹á æèóÏ?µZ]Éÿ·?Àž˜ &°Ô?µ¦’?³&Ô,ô?ž™€ZÁ£ç?¡ƒZ)Àˆ?’oÍb4U?y½¼ŸŽ?¥cp Ž@@@@@,@,?ð?ð?ð?ð?ð?ð¿–ßà{–€¿wé¥L;?°›ÔåŒ?p©Á›:@¨Ã‡i[¿Ù@§ Lj6ùQ?›Ýtî ;¾?ˆcú‹øå@›9‰Ü/â?äàOºBý,@ŸaSn>@“@ªTbMÒò@ªT£× -=@ªTbMÒò@ªT ²•ê@ªTbMÒò@ªT° Äœ@ªTbMÒò@ªTÒòæ@ªTbMÒò@ªTóMj@ªTbMÒò@ªTë…¸@ èÙ‡+@ è²-@ èÙ‡+@ è úCþ]@ èÙ‡+@ è÷ÎÙ@ èÙ‡+@ èŠqÞj@ èÙ‡+@ è :’¢@ èÙ‡+@ è í(Ž@5½:’£@5½æšÔ,<@2Ï|í‘hr@2Ð-à @2$¼j~ùÛ@2%zxl"h@2«6z‘@2! ²•éâ@2«6z‘@2"ˆÎp:ü@2«6z‘@2(õÂ\?žˆ2}?’‚€‡d_s?’,³Zêª?Ô@R’?“øâ#0ŸY?•½0 -Žø?1·†Æjñ?”ºu(†¼¦?•Q²rz¢ù?ð{¥âdû?—QÀ–Íù?–Ï9xä]e?…™ï ufÝ?ŽÎ"”`ù…?ÉÏt -j?ƒ¼9XNÄu?ˆ‹”âó?‘À³ûê%§@@@@@,@*?ð?ð?ð?ð?ð?ð¿#z?SüÀ†°?2 @;@{?W…)'ù´Ç@ªTd%/ß@ è¡K—T?Qú0ɳ´ß?vôþS[?©^¶±?òã])^3@Ÿf8K ³@”@¬¾ C•@¬¾ ÌÌÌÎ@¬¾ C•@¬½üC,¥z@¬¾ C•@¬¾ÇË)@¬¾ C•@¬¾¨Xy?@¬¾ C•@¬¾ŽŠqÞ@¬¾ C•Á.„€@£³þùÛ"Ñ@£´n—@£³þùÛ"Ñ@£³ô‡ü¹$@£³þùÛ"Ñ@£´DЪ@£³þùÛ"Ñ@£³÷§†Â'@£³þùÛ"Ñ@£³ãþ\‘Ñ@£³þùÛ"ÑÁ.„€@6ÿ–»˜È@7-à @3» Iº^@3¯Ø­«ŸV@3Ãt¼j~ú@3¾¤¨ÁTÊ@2õµsê³h@2ìžì¿±\@2õµsê³h@2øÎp:û@2õµsê³hÁ.„NÜC,¥?€‚ñêã ?­Ì£\C)»?³eI2·?¥Â²ãE…|?¢û`ÞŽ q@8Ù?›’qvš°•?¥¬ŽáíÛ~?¶ÚOTá?Ú@/@õ{?®8i¿=F @8û—?Ÿ|–„aQ?™Uîœsú?¡F·ˆõª@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø•@¥Å‹Æ§ïž@¥Å‹Æ§ïž@¥Å‹Æ§ïž@¥Å‹¬q ´@¥Å‹Æ§ïž@¥ÅŒ"h Ô@¥Å‹Æ§ïž@¥ÅŒ"h Ö@¥Å‹Æ§ïž@¥Å‹¹Œ~(@¥Å‹Æ§ïž@¥Å‹Æ§ï@«Ú†§ï²@«Ú†§ï²@«Ú†§ï²@«Ú†Â&€@«Ú†§ï²@«Ú†§ï²@«Ú†§ï²@«Ú†§ï±@«Ú†§ï²@«Ú†Ü]cˆ@«Ú†§ï²@«Ú†Â&€œ@0-¥œàv@0-¥œàv@*³t¼j~ù@*³×Ûôˆ@)´ýó¶E¢@)µ%F -¦L@*#¼ÓZ…ˆ@*#× -=p¤@*#¼ÓZ…ˆ@*#× -=p¤@*#¼ÓZ…ˆ@*#ñA [Â?É^žQ5P‚?°çR;?‘$Cê¡@í?‹ª½¨ª8v?íOþtà?³×OÓ+y?ÐbMçê_x?’˜‰%F²?¹º–Èj?0ÜN :s?ÝIMÎ?Kcìë?€bMÕky?Œ¯þuõí?‚oÁÆÜ§÷?‚ãaÎúvh?†‰Oú|q?†½ª»—@@@@@,@&?ð?ð?ð?ð?ð?ð¿%Ë1X? þ?Að?fÏæiºÛ? -4ó—*K@¥Å‹çï‘ã@«Ú†ÀÖ[?!³vû¿y?ÓSë¤?>Ô+d?¶·?+ :Ž-y @Ÿs›è›@–@¦ìûçl‹D@¦ìüí‘hs@¦ìûçl‹D@¦ìüí‘hs@¦ìûçl‹D@¦ìúáG®@¦ìûçl‹D@¦ìþš@¦ìûçl‹D@¦ìúÇË)@¦ìûçl‹D@¦ìý²-V@­G}ó¶E¢@­GyXbN@­G}ó¶E¢@­G}<64@­G}ó¶E¢@­G{çl‹D@­G}ó¶E¢@­G}IQ‚ª@­G}ó¶E¢@­G~ÿ—%@­G}ó¶E¢@­G€'RTa@8%öý!ÿ.@8# àÞÒ‰@2Ê^5?|í@2Ë/ìVÕÐ@2•`A‰7L@2—ï²-@2TmÅÖ8†@2V“t½@2TmÅÖ8†@2VR½<6@2TmÅÖ8†@2Vlô!.?îŠõ ?‘6 '8?’´ýBI{?ŽAtùð¥t?’õ¡EE?“°™²!¨w?ˆÿÀ)T¿Æ?“£PuòN?’±ä?‘ǧ?D6?’$) ‘?’›â¾Ð'µ?ƒ<Õp?ŽátÖÁ»‡?† - Ðló]?Q§ ç´Í?>LR_5?Žrø·óæ@@@@@*@,?ð?ð?ð?ð?ð?ð¿&çÌ3P?V\–Ì ?E§´%CüÃ? {èÑ—@¦ìý·J@­G}zw²W?^Ý2ä:Ã?/‡ª£ï½ñ?´•0f’?ZöÕYZÌw~?˜U6º y?›f°ùr[‚?—|M4ä^Ì?˜!ÄD‘?šbk6â÷¡@@@@@(@(?ð?ð?ð?ð?ð?ð¿b¤§ä?xâsg5?shYþ*’?d½‡òXÔ@¯“h±q¦…@¬VZoøÄ?0–AµÒq?„{EqÐÒ5?F<7 _öÂ?âE£b§®Ø@Ÿg¡Ÿž@˜@ ÖbÐå`B@ Ötÿ§i @ ÖbÐå`B@ × Ä›¦@ ÖbÐå`B@ ×-V@ ÖbÐå`B@ ×33333@ ÖbÐå`BÁ.„€@ ÖbÐå`BÁ.„€@ C A‰7L@ C&>©Ê@ C A‰7L@ Bš¬1@ C A‰7L@ Bå¡ÊÀƒ@ C A‰7L@ A~¸Që„@ C A‰7LÁ.„€@ C A‰7LÁ.„€@8|ÚQ@8g‘·b@2½‘hr° @2‚‚@·€4@2ƒt¼j~ú@2XbMÒò@2 ¿±[W?@1…Â\(ö@2 ¿±[W?Á.„NÜC,¥@2 ¿±[W?Á.„NÜC,¥?¬tÕJ”?Êóÿ¥Yzí?°$:H’T=?ªö;kE_@8Iç@8Ù?’t D5·±?žyÛ>Ócv?’üüšë‚J?ϪZ»y@8S@8û—?ªT -a?¶[9»Ü×\?´6¤_[í?£èŠFÊ@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø™@ž¬“t¼@ž¬ 3gã@ž¬“t¼@ž«Í¼|Mì@ž¬“t¼@ž«å/ üØ@ž¬“t¼@ž¬=„‡$7@ž¬“t¼@ž¬yYGî‚@ž¬“t¼@ž¬s„f·Ö@§¹6E¡ÊÁ@§¹2F¡ŠÐ@§¹6E¡ÊÁ@§¹I{ 6ó@§¹6E¡ÊÁ@§¹(¿ydð@§¹6E¡ÊÁ@§¹SJVÍó@§¹6E¡ÊÁ@§¹@ÉB-¹@§¹6E¡ÊÁ@§¹C¬Ér@7-¥œàv@7,Ýøæ`@4O|í‘hr@4bLÔmU@3‹"Ðå`B@3¼ªñfñ‡@2¨è§æ›@2¶5îh‘@2¨è§æ›@2 í³Åx@2¨è§æ›@2¢‚ P€À?Œßô™ 8+?«ÈÉ…K“º?‘¢éwï[W?’Ñ"Ôó‰?Ÿ®[Œ@F'?”ZÕ&ôv?e™”XWø?¢Ê A:?¥ü®Œ°?• ,É%L1?¢©PB’ël?š$nçæ¶¦?„†Wl÷ŒÎ?¦í‘Ø<Ç?†nbÆ?ŠÊ)á€zT?­ÓJ(ß.f?›ÿ ø«ã@@$@"@"@3@,?ð?ð?ð?ð?ð?ð?†Ž˜ƒCÀ?v§d¸¦?W¶6–«ùÀ?hÏúÍi.@ž¬:¶ßŒ@@§¹?‚ëc -?wf7/àÙ?‰ {þúƒ?èF~*çô@ L³¶ &@Ÿg(S)À@š@­f/Ÿ¾@­fp£× -@­f/Ÿ¾@­fžƒä%¯@­f/Ÿ¾@­fž¸Që…@­f/Ÿ¾@­fž5?|î@­f/Ÿ¾@­f›À6ã@­f/Ÿ¾@­f›çl‹D@¦uƒn—@¦uƒn—@¦uƒn—@¦uƒa@P@¦uƒn—@¦uƒ•%@¦uƒn—@¦uƒa@P@¦uƒn—@¦uƒˆe”¯@¦uƒn—@¦uƒ9Àëí@0ÉÎ_oÒ@0ÉÎ_oÒ@*a‰7Kƨ@*a–R½<6@*éxÔýô@*ö”Fs‚@'úÇË)_@'úÔ,<žî@'úÇË)_@'úÔ,<ží@'úÇË)_@'úÔ,<žî?É^³Dw'?Ï[äeN ?‚äÍ“½E'?†ˆ#.÷?†‰Oú|q@@@@@,@*?ð?ð?ð?ð?ð?ð¿QzNs`¿ ¬™÷Ð?9\*¿Ñ?Ä£„-Ân@­fœËÒ@¦uƒa«Ú?H"?Væ„?$„ô ?Œ§ ±E?B¨d>8à -@Ÿs#ÿ~Ï@›@¬s5?|î@¬s¥ãSø@¬s5?|î@¬s$Щ*@¬s5?|î@¬s)Q‚©’@¬s5?|î@¬s;dZ@¬s5?|î@¬s ÌÌÌÍ@¬s5?|î@¬qÿHË’@®OàA‰7L@®Oò-V@®OàA‰7L@®O»quŽ"@®OàA‰7L@®O¿U›=@®OàA‰7L@®OÌ"h Õ@®OàA‰7L@®O¼PHñ@®OàA‰7L@®UtzáG®@8h†YJôñ@8c•$Ý@4sS÷ÎÙ@4~žš@3¢-V@3­p£× ->@3TmÅÖ8†@3aÅo@3TmÅÖ8†@3`-à r@3TmÅÖ8†@2³ê³g ù?îŠõ ?¢N`¡?—ø}òg?nii)â?§3!E?ãü+Õº?îŠõ ?¥ £áÔ?•ÙK°FÑ?”ÑÓTœ?¥mÉ£&Z?ø8Ý烔o?‹f°ùr[‚?žk8¤é'è?$¿ÀºÍ?–]ªÍ-W,?§‘¶s½™€?ºìÝóqmE@@@@@$@$?ð?ð?ð?ð?ð?ð¿P6¸x¿Œ/—dà?s ´ -??£ŒØ`ÿ8@¬sõ¯´¾@®OÔ"ÃÂZ?…Üæl\6??”æU>b?õ„æÍÆ^@ >+†9;Z@ŸfO‘½@œ@®‡^5?|î@®‡^5?|î@®‡^5?|î@®‡?ö”E@®‡^5?|î@®‡ŠqÞi@®‡^5?|î@®‡uÜÆ?@®‡^5?|îÁ.„€@®‡^5?|î@®‡ÀÄ›¥â@­ í‘hr°@­ äZ¬@­ í‘hr°@­ ÚQÎ@­ í‘hr°@­ é 'RS@­ í‘hr°@­ 6®}Vn@­ í‘hr°Á.„€@­ í‘hr°@­ ™XbO@8 ]cˆe”@8¼j~ùÛ@4½‘hr° @5I#¢œwš@4.ùÛ"Ðå@4Žƒä%®æ@3–ý!ÿ.I@4Ðå`AŠ@3–ý!ÿ.IÁ.„NÜC,¥@3–ý!ÿ.I@3›6z—?—¤o„C?ÁZùÓ÷¼?б†óM”?ÃÓjÕ0«@8Iç?¦N›:?Œs¤DÅÐ?Ôo,?Ø0Ç?ÇÎÉM‹0D?¾¡=Cì(@8S?¤ÚÄ^Uâô?FpÉ'Ý?¯KÂ^ -N?Ä'˜Á*Ù?Áøºˆ5Ê@8 Ø?´¿°$®@@@@@?ð?ð?ð?ð?ðøøøøøøøøøøøø@­Œ&ffff@­Œ&§ï²@­Œ&ffff@­Œ'ÈK]Ë@­Œ&ffff@­Œ'Ë)_@­Œ&ffff@­Œ&€IR@­Œ&ffff@­Œ$ xG@­Œ&ffff@­Œ#•&@\;dZ¬@\:^5?}@\;dZ¬@\=!ÿ.J@\;dZ¬@\>($ x@\;dZ¬@\6ý!ÿ/@\;dZ¬@\8ºÇË@\;dZ¬@\8}¿H@4›¹Œ~($@4›×ái—Ò@2³S÷ÎÙ@2´•*™1@2‹"Ðå`B@2ŒPHð@1øDЩ*@1úqÞi­C@1øDЩ*@1úu%F @1øDЩ*@1ú…‡“ݘ?|Ñb×¶@?š¾ßÍZ?“›ÿ3?Ça_b‹?’õ¡EE?’_‘Oo¨Ž?|¬h2:“?“Œõ¼dÛã?‘å†36åG?‘§›ßÉîj?”V ìi!¾?‘«VTÓ?‚€Û€¸Ì?Å9–o?…µsê³g¡?„ªÎZ´?‹ ˜1 D@?ˆ”Tj«›ª@@@@@,@*?ð?ð?ð?ð?ð?ð¿A´ §¨¿1ñ*Gà?*h îb? Êv Xwv@­Œ%¤«…”@\9“+L?IÝŽ[u"´?@ába.? ‘‘ý”>?ŠY)y7Šÿ@Ÿf,™{ïˆ@ž@®±MOß;d@®±T9Xb@®±MOß;d@®±zÇË)@®±MOß;d@®±l~($ @®±MOß;d@®±WškP±@®±MOß;d@®±y k¹Œ@®±MOß;d@®±gy¦µ @ªNt¼j@ªN V@ªNt¼j@ªMVð¹@ªNt¼j@ªM=¿HÍ@ªNt¼j@ªM.p:û€@ªNt¼j@ªMä%®æ2@ªNt¼j@ªM”É…ðn@7í¥œàv@7åF -¦L0@3i‡+ @3>}Vlô@2çKƧïž@2ºdÂø7µ@2(è§æ›@1ûxFÜ^@2(è§æ›@1üj~ùÛ#@2(è§æ›@1üPHð?ª[Xxöp?« 烧?°=‚âEDA?®ã kS“?³¨¾ ÃË?°û’—?žŒÝÙ›P?ÐÏêÉgUm?Õ&cu?×=¿×©Dò?¶êvÏÛÂI?ÏpQ…iBÔ?¬ãfi’?Ÿ ‰$FÓ)?¢ÀB§š7?š -r˜ -Dw?ª ßJ‘›?±-÷ôÔß@@@@@@*?ð?ð?ð?ð?ð?ð?tÍD#'¿@GI¿ ?i~|.Û™?‚º÷ -ý÷@®±\xÂÇ…@ªMñëI]?‰Çª0è3Æ? â‘æ¯bô?ÔK¨¡õ³?ô µóª@Ÿd¨à¯`Ë@Ÿ@ =p£× -@ ;¥ãSø@ =p£× -@ AbJ˜@ =p£× -@ =42÷Õ@ =p£× -@ =´lš@ =p£× -@ 5f*h@ =p£× -@ (ÑQ­@«Ì›¥ãSø@«Ì/Ÿ¾@«Ì›¥ãSø@«Ì£ÈZ'ê@«Ì›¥ãSø@«Ì¡¸ƒ¢b@«Ì›¥ãSø@«ÌžŠ5Ð@«Ì›¥ãSø@«Ì—®—yë@«Ì›¥ãSø@«Ì˜ú¨×@6÷â‚@·€@6õ˜‘g™@3GÎÙ‡+@3Iß[YÈ@2)Û"Ðå`@2.FÊ9´»@1hè§æ›@1j†6\+¦@1hè§æ›@1d߯íÍ@1hè§æ›@1_"¬Å@1‚@·€5@1Sê³g ù@1‚@·€5@1[C•%?|çµB &€?À„2w²–8?³9 2me?­hiýFÌ?¸{z¼¤ù?µ5ú`?€Ã{s°úi?°ŒbU'V…?¡n¡Žv›-?¢ÁÛ/’:?¸`‡å53?¶Þ¥¦9?ƒ1BO2˜?Ç?ý‰(£?¿…gê°Ä›?¶lê@†²?¦“€œ„%5?ÄmzÅÅÉ@@@@@,@,?ð?ð?ð?ð?ð?ð?{& ›?knކ?kHðvÖÃþ?ƒ»šÐ@¨‹÷.ÙÒ@œûRv°+{?zk¿© -«ê?”~§§??ãÁ0œg+@©H¨è=t@Ÿ\ãéˆâ>@¢@¡€vÈ´9X@¡€qhr°!@¡€vÈ´9X@¡€hõÂ]@¡€vÈ´9X@¡€}Vlô@¡€vÈ´9X@¡€x†YJõ@¡€vÈ´9X@¡€g†Â&@¡€vÈ´9X@¡€dg8~@¨Ê³¶E¡Ë@¨Ê¸Ôýó¶@¨Ê³¶E¡Ë@¨Ê¾¸Që…@¨Ê³¶E¡Ë@¨Ê¹XbO@¨Ê³¶E¡Ë@¨Ê¸ï4Ö¡@¨Ê³¶E¡Ë@¨ÊÕsê³h@¨Ê³¶E¡Ë@¨ÊÙJôðØ@7Ç>«6z@7Éûçl‹D@1ã÷ÎÙ‡@1Ú=p£× -@0¾V“u@0ªxl"h -@0?ò䎊r@0+P°ò{³@0?ò䎊r@0#&Á½¦@0?ò䎊r@0$ohÜ?”¼íÒh??ß‹’bÏ?¥¬ã×a6H? „rÓ‚¼?©Ë;†ÌçÈ?¬WfŠ¥8?}Ñ¿ž,?“-N•I`(?ŸP­Ñ‚Ÿ½?›|¦l¯âU?¡SmImbˆ?¡ùŠÀs›?©4¡y©ØX?Œ».êxóÚ?£L%.I£0?¥·VK}Ø -?•Vû›¦Ã¡? "ƒrÅÇ@@@@@&@$?ð?ð?ð?ð?ð?ð¿TßrˆÈ?v- í¸?aµ{ûyr„?a©-j1m@¡€pQ&R @¨ÊÃ;»B?€3»ŸRÜ?†„CM™?Ý…ÞÍW{h?õM -ÞÎ*Ø@Ÿe‡K.Œ@£@¤{ß;dZÁ.„€@¤{ß;dZ@¤y½p£× -@¤{ß;dZ@¤yσ{J#@¤{ß;dZ@¤y°°ò{³@¤{ß;dZ@¤y¢ÞÑ·@¤{ß;dZ@¤y´•*™@¨â\(õÂÁ.„€@¨â\(õÂ@¨äÂMÒñª@¨â\(õÂ@¨äÖ“u@¨â\(õÂ@¨äåo@¨â\(õÂ@¨äû/ìV×@¨â\(õÂ@¨å Ô•@5Ù*0U2bÁ.„>¤µÜÆ@3”›¥ãSø@1q ²•ê@2ù7KƧð@0h$ xG@3:Ô,<ží@/«Æ§ï³@3:Ô,<ží@/ŸoÒòå@3:Ô,<ží@/ŸØ­«ŸV@8J¨?š{ ½÷lÙ?¥d· -?¤ïâ NŠ:?¦éÕž‹æe?”øÕ¥ Ìž@8J¨?ž¹i…V‚•?±êùŽ‚?±2ý}û¢í?–žóB» ”?™¯m,·¦h@8p÷?™î  lƒ?‹?ü}(´3?†Á{0Ÿà®?޹Þwò,?‰ö±«tï@@@@"@?ð?ð?ð?ð?ðøøøøøøøøøøøø¤@¤š{dZ¬@¤šs¶E¡Ë@¤š{dZ¬@¤š­BÃÉï@¤š{dZ¬@¤šsê³g¡@¤š{dZ¬@¤šn¾ß¤A@¤š{dZ¬@¤šf1ø @¤š{dZ¬Á.„€@£¢éxÔýô@£¢ñhr°!@£¢éxÔýô@£¢ÀÑ·Y@£¢éxÔýô@£¢óê³g¡@£¢éxÔýô@££‡+@£¢éxÔýô@££/iDg9@£¢éxÔýôÁ.„€@8^Hè§æ@8cS&Â@4Å?|í‘h@4‰ÀëíúD@3V”@3Œ]cˆe•@3 ù kº@2ÓŠ Þ@3 ù kº@2â‚@·€5@3 ù kºÁ.„NÜC,¥?Œs¤DÅÐ?°/Ë -ð¾Ê?œ4D›´A£?ª+½»°ý?QÊÃv8F@8Ù?гá‡}?±áìH{üV?¦² ͉«?ÌU¬¼ÿ/?¸Ábª½ -ˆ@8û—?¡7‡V/Žr?«’qvš°•?šëetîü??›a½%¨?¤ñ¹ÜY¡I@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø¥@¦ì>vÈ´9@¦ì8bMÓ@¦ì>vÈ´9@¦ìXï4Ö¡@¦ì>vÈ´9@¦ì[J#9Á@¦ì>vÈ´9@¦ìQÎ_@¦ì>vÈ´9@¦ì/–»™@¦ì>vÈ´9Á.„€@¨¤²-V@¨¤q&éxÕ@¨¤²-V@¨¢Ô!-w@¨¤²-V@¨¢‰7KÇ@¨¤²-V@¨ âu%F @¨¤²-V@¨ Üàuöý@¨¤²-VÁ.„€@7úqÞi­C@7åéá°‰ @3W+ Iº@2±‰7Kƨ@3'KƧïž@2…¸Që@2Vý!ÿ.I@1sn—P@2Vý!ÿ.I@1nÅm\ú­@2Vý!ÿ.IÁ.„NÜC,¥?1·†Æjñ?¨9)×ðu?µeäàJª>?¬&¾L=§‰?±ÉíDØp@8Ù?•²»UbB2?©+Q™e]-?Âí³HÜ?ß–_-¯0Þ?ç‘Dú¹@8û—?ˆ†Ô‡º:?¹Ìˆ„º¬?ŒR‹w#{?°,U¬f{?±µÉïà 2@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø¦@ŸsÜ(õÂ@ŸsÝ/Ÿ¾@ŸsÜ(õÂ@ŸsÙÎx"@ŸsÜ(õÂ@ŸsÉ7LYú@ŸsÜ(õÂ@ŸsŽÅ@ŸsÜ(õÂ@ŸsО€^Ô@ŸsÜ(õÂ@ŸsÝ{Õ@¯h33333@¯h33333@¯h33333@¯h4ã¹Ý@¯h33333@¯h2ñª0„@¯h33333@¯h3t¼’{@¯h33333@¯h5Ré$í@¯h33333@¯h?¾vȵ@3Q|ÚQ@3QÅo@0ÜIº^5@@0Û6yþ$ú@0¹7KƧð@0¶ö”GB7@0!:’£T@0vȱy©@0!:’£T@0.±¸õ~@0!:’£T@0jÔ‘e?‹¿òȧx?’ÜQ>¿È?‘|ú»½]x?|çµB &€?’‰Ô, þ›?ºvŽüV?-õIGmR?’Ô"£‘˜F?‘f«q{Ü?ƒ0x±æs?Ž·D^0'?ƒ†Kèá¬O?ƒc—[|Â?‡Ý5yƶ\?‡ŸHÄLÎâ@@*@$@$@;@9?ð?ð?ð?ð?ð?ð¿EÝ\¿>Ja€?=.”?Êç? ”n$d^@ Pι“.G@ªÕ9„[Š?\°‰lÛ+?@ÂÙ#e®?ÄÚS}ð?‹Ÿ+@8Iç@8Ù?Œs¤DÅÐ@8Î÷@8i§@8Å@8S@8û—?£ØE.9ì@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø©@©üyXbN@©üy‡+@©üyXbN@©üzCþ\’@©üyXbN@©üz…‡“ß@©üyXbN@©üz–½@©üyXbN@©üwö+jé@©üyXbN@©üx*™0¾@¢MÌÌÌÌÍ@¢MÌÌÌÌÍ@¢MÌÌÌÌÍ@¢MËíúCþ@¢MÌÌÌÌÍ@¢MÌVÕÏ«@¢MÌÌÌÌÍ@¢MÌIº^5@¢MÌÌÌÌÍ@¢MÌô!-@¢MÌÌÌÌÍ@¢MÌ¥zxl@/‰^žš@/‰^žš@)Çï²-@)Çâ‚@·@(÷Oß;d@(÷süPI@(™b¶®~@(™0¾ í)@(™b¶®~@(™0¾ í)@(™b¶®~@(™0¾ í)?É^³Dw'?ÉGãA­÷?‘*"AaIÐ?‹¹GüÞõ?ëÎ@ A2?¸û:?ÐbMçê_x?’ ,øÕC©?ƒ‰/BH?@§[*^?ÝIMÎ?NÂò‚Ì`?€bMÕky?Œ­·Ž~('?‚q6tNø7?‚ãaÎúvh?†‰Oú|q?†‰Oú|q@@@@@,@(?ð?ð?ð?ð?ð?ð¿LÙû\?&´è?6oè´üG-?$Üz­ºŠQ@©üxßYÎ@¢MÌšFêÍ?E’åD¸j9?3À†™ë?†Ø°. Œ1?a ç(ò@Ÿs -âc -@ª@¯l´¼j~ú@¯l´¼j~ú@¯l´¼j~ú@¯l¹¦µ @¯l´¼j~ú@¯l¹=Ùc@¯l´¼j~ú@¯l»˜Çâ‚@¯l´¼j~ú@¯l²þÅm\@¯l´¼j~ú@¯l¶‡+ @ XÑë…¸@ XÑë…¸@ XÑë…¸@ X×´¢3œ@ XÑë…¸@ X×eýŠÛ@ XÑë…¸@ Xß¾vÈ´@ XÑë…¸@ XÛ²þÅm@ XÑë…¸@ X×´¢3œ@4=:’£@4<Æ?@1µãS÷ÎÙ@1²×süP@1V”@1ï4Ö¡b@0úÔ,<ží@0ò@·€4n@0úÔ,<ží@0ñN;Í5¨@0úÔ,<ží@0ñä÷eý‹?ð°–Ž]?‘6 '8?’‹»Ùï§? Ð ÷Ž ?”NtyÞ"§?“lP {“›?ð°–Ž]?•%!{‚A?’±ä?”ãâˆm?š¹'¤Ò ?–,}úºoJ?ð*wjs—?R©i»èi?†Æ‹™ÿ?„E£R ÕY?‡Ä­‹›Ü?–d‘…’Ã~?ð@@@@,@(?ð?ð?ð?ð?ð?ð¿e²3.v¿lQ„Ã.€?]ŠVw®†?1^œ ”@¯l·Œ9˪@ XÛñþ ƒ?loè·'Âð?@²xÍ30Ð?Í +Ù³˜Ì?i‹Ë0a@@Ÿs`{f@«@¥b¾vÈ´9@¥b¾vÈ´9@¥b¾vÈ´9@¥b¼¾ß¤@¥b¾vÈ´9@¥bº¬Ùè>@¥b¾vÈ´9@¥bº^5?}@¥b¾vÈ´9@¥b»J#9Á@¥b¾vÈ´9@¥b¼¹#¢@¬[Ä“t¼@¬[Ä“t¼@¬[Ä“t¼@¬[Åzxl#@¬[Ä“t¼@¬[Å®æ1ù@¬[Ä“t¼@¬[ÃñA [@¬[Ä“t¼@¬[Ä2ÊW©@¬[Ä“t¼@¬[Æ$Ý/@3Ì]cˆe”@3Ì]cˆe”@1û Iº^@1ü£n.²@1š~ùÛ"Ñ@1›W>«6z@1n_oÒ @1q$Ý/@1n_oÒ @1nÅm\ú­@1n_oÒ @1n±Ä2ÊX?|¬Çëý ?qÂ' -B›?”^RžpX? Ð ÷Ž ?’[9ƒÍ,?‘®¬nÒMê?|¬Çëý ?’j•×›c?‘t‰WZñ?‘²)ò@a,?’pP‡È»?‘¿¤üî¾Ö?‚¸“Îè ÷?]ÒivLÿ?„³3Z\ð…?…bv{3dZ?‡ø¢:›¸1?ŠEÝ‹N@@@@@,@*?ð?ð?ð?ð?ð?ð¿EvO$ð?/_©à?8ŠVPOš’?'2½Uˆ@¥b¼Þ„ b@¬[Ä…´Ð?XoúŸ¿)?G6ª\µc?½á–É?™™æÇQ @Ÿf`bØÄ@¬@©Ž‡+ J@©Žˆ´9X@©Ž‡+ J@©Žò×s@©Ž‡+ J@©Ž‚©“ á@©Ž‡+ J@©Ž~BZîc@©Ž‡+ J@©Ž‹Æ§ïž@©Ž‡+ J@©Ž‹¹Œ~(@¬¨r° Å@¬ ƒn˜@¬¨r° Å@¬¬ô!.@¬¨r° Å@¬«¹Œ~(@¬¨r° Å@¬¡ÿ.Hé@¬¨r° Å@¬§8}¿@¬¨r° Å@¬§RT`ª@8Y*0U2b@8Gï²-@3° Ä›¦@3Áÿ.Hè§@3,j~ùÛ#@3%Éã½@2Öý!ÿ.I@2Ø7´¢3œ@2Öý!ÿ.I@2ÒÞÑ·@2Öý!ÿ.I@2аò{²ÿ?3ßa=„?’u~•Ñ?’µ<ëvar?™¦|3Ä?’o?P´À?—Ò¸ùBz3?±>ÏÅósN?”­ŽzF”?’üüšë‚J?œ¾,#“t¿?’ºñS©YÖ?”6ð a@B?¾ÛzYï@?œ‘z¥æ?lû˜¡R?&à|Òß?Š—à `ž?‹Ûx§Þ@@@@@$@*?ð?ð?ð?ð?ð?ð?Bë¿ ?]¶å!P?YO +7#”?H]U5ï¿@©Ž‰$m -¬@¬¥%˜”^?{â½o“Á?\„¾%V*?é§À o;?¡š[–OÞÅ@Ÿp´OÌ~-@­@ž€œ¬1'Á.„€@ž€œ¬1'Á.„€@ž€œ¬1'Á.„€@ž€œ¬1'Á.„€@ž€œ¬1'Á.„€@ž€œ¬1'Á.„€@¦m]²-VÁ.„€@¦m]²-VÁ.„€@¦m]²-VÁ.„€@¦m]²-VÁ.„€@¦m]²-VÁ.„€@¦m]²-VÁ.„€@8ãg ù lÁ.„>¤µÜÆ@3Iº^5?Á.„M‰ûçm@2¬j~ùÛ#Á.„QnÙ‡@1Ì¿±[W?Á.„NÜC,¥@1Ì¿±[W?Á.„NÜC,¥@1Ì¿±[W?Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø®@¬¼ß¾vÈ´@¬¼à@¬¼ß¾vÈ´@¬¼à[À7@¬¼ß¾vÈ´@¬¼ßU›=@¬¼ß¾vÈ´@¬¼Ü£n0@¬¼ß¾vÈ´@¬¼ÖÕϪÎ@¬¼ß¾vÈ´@¬¼×éùr@¤üj~ùÛ@¤ú¬1@¤üj~ùÛ@¤ýÈK^@¤üj~ùÛ@¤ü(õÂ@¤üj~ùÛ@¤ü‘ÑN<@¤üj~ùÛ@¤ xG@¤üj~ùÛ@¤¯·é@5¥öý!ÿ.@5¦z–¼@2’ Iº^5@2’þÅm\û@1Ÿ²-V@1Ÿ·éùr@1Ì¿±[W?@1ÉŒ~($ @1Ì¿±[W?@1À¸ºÇ@1Ì¿±[W?@1À–»˜Çã?1·†Æjñ?qÂ' -B›?‘¶å¤wk½?U›=ÈK?¢†\›†oÈ? V“uÁ.„QnÙ‡@1ÿò䎊rÁ.„NÜC,¥@1ÿò䎊rÁ.„NÜC,¥@1ÿò䎊rÁ.„NÜC,¥?1·†Æjñ@8#˜@8¾:@8 >+@8Iç@8Ù?|¬Çëý @8Î÷@8i§@8Å@8S@8û—?‚† SFñ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø°@¨ Ö‡+ @¨ Ö‡+ @¨ Ö‡+ @¨ Ö‡+ @¨ Ö‡+ @¨ ÖE¡ÊÂ@¨ Ö‡+ @¨ × -=p¤@¨ Ö‡+ @¨ Õµsê³@¨ Ö‡+ @¨ Õ¨Xy>@#$Ý/@#$Ý/@#$Ý/@#¸Qì@#$Ý/@#êJŒ@#$Ý/@#m\ú­@#$Ý/@#¼£m@#$Ý/@#m\ú­@2ò䎊@2 IåP:@,²-V@,O „M@*Ýó¶E¡Ë@*ÝÙb¶¯@)-úCþ\’@)-Òñ©ûè@)-úCþ\’@)-à qv@)-úCþ\’@)-ÅÖ8†[?É^ž6õP?ÉGãA­÷?‘"žæÆó¡?‹²MÿAÿ8?òǹíT­?·t¤¢‚J?ÐbMÝn½?’MœœN ?}Ò€º‡?3.Ylî?ÔÒ@úˆ‘?Uÿyu”#?€bMÕ]f?Œ°¶.Ä+Æ?‚s@ˆaÛ?‚ãaÎúvh?†‰Oú|q?†½ª»—@@@@@,@*?ð?ð?ð?ð?ð?ð¿D”È=6>Ñy”æ?(}éÉLè? Ô_[èY2@¨ Ö;fÔ‚@#†_¡J?7ÎvYf?Ud˜C ¬?kAG}ª©Š?.fÂε@Ÿsçw(@±@¢twKƧð@¢twOß:@¢twKƧð@¢txÔýóµ@¢twKƧð@¢tx“t¼j@¢twKƧð@¢tyJôðØ@¢twKƧð@¢tv»˜Çã@¢twKƧð@¢tvð¹@©Ãn—@©Ä“t¼@©Ãn—@©¿Ø­«ž@©Ãn—@©¾žš@©Ãn—@©¿¤?åÉ@©Ãn—@©ÂÞÑ·@©Ãn—@©Áä÷eÿ@8¥öý!ÿ.@8¡$Ý/@3; Iº^@3;àÞÒˆÎ@2²-V@2Aò×s@1èè§æ›@1éÀëíúD@1èè§æ›@1éã¼Ô@1èè§æ›@1èè§æ›?¢F^ì¼Sð?¦Ì '?’ëÏ™¨?:LÓá -í?’¥.Kn Í?’£sðU Z?ˆÿÀ)T¿Æ?’0nà=Q“?”p¶I”“ž?‘.}áµ$?’£ôùÎ8ï?’„³GÓ’?¢Z°`´ä(?·ïö)h?‡»¢Øˆ‹?„l¯¸‰ŒÎ?ŠEÝ‹N?‰]³ß’Ý@@@@@,@(?ð?ð?ð?ð?ð?ð¿@5_;¾¿>¿—/ø?@}4«6z@1V”@1œô!-w@1 ¿±[W?@1 \ú¬Ùè@1 ¿±[W?@1 «ŸU›=@1 ¿±[W?@1 cˆe”°?|öOÿÝ?äm°û0Ž?‘.Ò®ó_ ?‹ä†€{6è?‘héø†|?æöæ×t?|¬Çëý ?’¼  g¶?·t¤¢‚J?½¶³±×ò?‘77…Âç?¦QÎð\ã?‚s@ˆaÚ?ŒöOÿÝ?ƒ{¬ÉW?ƒ3¸Î{Z?‡&üòI?†Ü‘ °Ô@@@@@*@$?ð?ð?ð?ð?ð?ð¿1RÛ?0Õ²?&ÀJPit?0-&¼Œä@¨ 1LÏ:e@® -5ü?F”¥Úè¡?PMNòã73?›[ãÁ¿ÉÄ?«5Ü7Ÿ¼@ŸfØP'@³@£[µÂ\)Á.„€@£[µÂ\)Á.„€@£[µÂ\)Á.„€@£[µÂ\)Á.„€@£[µÂ\)Á.„€@£[µÂ\)Á.„€@šïýó¶E¢Á.„€@šïýó¶E¢Á.„€@šïýó¶E¢Á.„€@šïýó¶E¢Á.„€@šïýó¶E¢Á.„€@šïýó¶E¢Á.„€@804mÅÖ8Á.„>¤µÜÆ@3ÜIº^5?Á.„M‰ûçm@2¹7KƧðÁ.„QnÙ‡@2«6z‘Á.„NÜC,¥@2«6z‘Á.„NÜC,¥@2«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø´@¦¾vÈ´9@¦ÁÊÀƒ@¦¾vÈ´9@¦Áª¤Æî@¦¾vÈ´9@¦Å -[Zf@¦¾vÈ´9@¦Ây>Iä@¦¾vÈ´9@¦Ãc/¹«@¦¾vÈ´9@¦ÃÁÝèŸ@“—}ó¶E¢@“—…¡ÊÀƒ@“—}ó¶E¢@“—}â~Ú@“—}ó¶E¢@“—|•šZ@“—}ó¶E¢@“—}vÎßB@“—}ó¶E¢@“—{/@“—}ó¶E¢@“—äGÖ@7åöý!ÿ.@7Ûö   8@2?|í‘h@2º°âk@0ÒÐå`A‰@0ÑÕefñ @/ÑÑN;Í6@/Î ÿ¤†¨@/ÑÑN;Í6@/ËÀFaë@/ÑÑN;Í6@/Í>ÄÀI?|ï"<¶~~?…†Ò€Öü?‘M8r»v??‹±À&ÍÄK?‘cŠÚ eW?é“újóá?‚Á¤õ“²&?’¬Xõ£ä£?ŠH«?7OÑi?‘††7’k?”œ›ƒÇ? ¹p0$?Q[/9À?ƒp±>ÜÖ?ƒ`âä>r?‡"‘K©…?‡R&U x@@&@ @"@7@1?ð?ð?ð?ð?ð?ð?8ÄöBX¿L ¥|? -j=µžD?8ۃ˷S@¦¡röt@“—Öö?*å»@â?Á?±Ìž¿@Ÿb‚àËÏì@¶@¥Òñ©ü@¥²-@¥Òñ©ü@¥Œ‹C•‚@¥Òñ©ü@¥‘hr°!@¥Òñ©ü@¥ Ä›§@¥Òñ©ü@¥’×sü@¥Òñ©ü@¥Œç¯¸@¯'W -=p¤@¯'W -=p¤@¯'W -=p¤@¯'XbMÓ@¯'W -=p¤@¯'WOß<@¯'W -=p¤@¯'W -=p¤@¯'W -=p¤@¯&²° Äœ@¯'W -=p¤@¯'V‡+ @6ò䎊@6[W>«6@2™º^5?}@2™#¢œwš@1©Û"Ðå`@1ªOv`@1 -0U2a|@1 -~ùÛ"Ñ@1 -0U2a|@1Hšu%F@1 -0U2a|@1 -¦L/ƒ|?1·†Æjñ?Æ¿5›7÷?’‹»Ùï§?‹¯eU5?›ÕZæ´Ä?‘…Rgå.?|¬Çëý ?’NÛˆV(?‘¡Kd·´+?>\‰å‘?• ¸°R¨?‘A_f;j?Žd°3š>?Œ­·Ž~('?ƒ!A -mº¹?ƒE 8?ˆCns¥ ?†£îž«î@@@@@@?ð?ð?ð?ð?ð?ð¿)ªGç ¿„‚/OZ€?= _jý [?Žé¯çc,@¥d¡~F@¯'A´çÈj?\Iî}­?®òÇ[›9?Ÿ½´hu@gþa}G@Ÿf8¤@·@¨G/Ÿ¾w@¨G0 Ä›¦@¨G/Ÿ¾w@¨G0‰ 'R@¨G/Ÿ¾w@¨G,<žìÀ@¨G/Ÿ¾w@¨G1[W>ª@¨G/Ÿ¾w@¨G,²•éâ@¨G/Ÿ¾w@¨G,ô!,@¦¼ã× -=q@¦¼ãn—@¦¼ã× -=q@¦¼ç¯·è@¦¼ã× -=q@¦¼ä xG@¦¼ã× -=q@¦¼ê³g ù@¦¼ã× -=q@¦¼å‡“Ý™@¦¼ã× -=q@¦¼åýŠÚ¹@704mÅÖ8@7,]cˆe”@3Lí‘hr°@3Qœàuöý@3“t¼@3 -çÕfÏB@2^«6z‘@2c9Àëíú@2^«6z‘@2^Ov_Ø®@2^«6z‘@2_iDg8?…ÅBðrç?Žd±Ìº?“ï~í"?ö€(tUo?’Z†Ažj?•ÍÂ^mÄ*?„F/·ÿP5?’§ioŠ?˜“º£¹‡b?•jÛ<÷x?“þþ¿=?’?;Áƒè?•‡C¿ ?1·†Æjñ?‰¢Ò+ÜÝõÑ.ÓŒ?F;[­ãk@¨G/âªÿ@¦¼å[ô‰²?^t‘ŠoC‹?g]x†Ÿ>D?½i™ù–¬7?ÑHkIm@ŸhhÖ,Æ­@¸@¦ê~ùÛ#@¦ê~ùÛ#@¦ê~ùÛ#@¦ëûµt@¦ê~ùÛ#@¦êÚ¹õ[@¦ê~ùÛ#@¦ë'»0@¦ê~ùÛ#@¦êÚ¹õY@¦ê~ùÛ#@¦ê™0¾ @žÉº^5?@žÉº^5?@žÉº^5?@žÆ§ï²@žÉº^5?@žÄµÜÆ?@žÉº^5?@žÉ 'RT@žÉº^5?@žËƧïŸ@žÉº^5?@žÊ Þ@3àØDЩ@3à‰ 'RT@1c÷ÎÙ‡@1dZ¬1@0ö§ï²-@0÷8}¿H@0+xFÜ^@0+àÞÒˆÎ@0+xFÜ^@0-Oß;dZ@0+xFÜ^@0-/Ÿ¾w?|¬Çëý ?Kb½™×?‘t‘ócjë?Œ2ÌUÃT?ðÌÇßgé?‘_ Ýß?|¬Çëý ?’‡Iš÷?‘˜ÆôõD?Níú¾?ë,YÁ?ú`@0k?‚¯­Ù¤Áµ?3I¶#i?ƒ!A -mº¹?ƒ^ ›¨¬a?‡2[síç?‡¤o„C@@@@@"@*?ð?ð?ð?ð?ð?ð?î­ ?Y}À?ŠYV<Û?ñ4$m!±@¦ê±Qð™@žÊ%~?0`©¸tœÙ?:?8Üý?lÆõ‚"!?±ð;GwŠ@ŸfÇ•Þp;@¹@¬;#× -=qÁ.„€@¬;#× -=q@¬;!ohÝ@¬;#× -=q@¬;/Ÿ¾@¬;#× -=q@¬;#¼ÓZ†@¬;#× -=q@¬;Š Þ@¬;#× -=q@¬;vÈ´9@®.záHÁ.„€@®.záH@®2•éá±@®.záH@®(Îp:ü@®.záH@®,"h Ô@®.záH@®.V“@®.záH@®+íúCÿ@8ëµsê´Á.„>¤µÜÆ@45ãS÷ÎÙ@47Xâe@3Ͳ-V@3Ò3œ¾à@2¡:’£S@2£¢œwšl@2¡:’£S@2¢ÃÉîËû@2¡:’£S@2£ä%®æ2@8J¨?àIü'?–ý3¾ZÀ’?,¡r×gÁ?•"§šmè?’Æ÷Xê†@8J¨?’Q_Ú¸FN?”Ï3½fvI?‘²)ò@a,?”ýó¶E¡Ë?–,}úºoJ@8p÷?3XMÊV?•(¯(Wø?ˆ»ñJî¯Î?‰G±±ZÎ?Žrø·óæ@@@@(@(?ð?ð?ð?ð?ðøøøøøøøøøøøøº@ ãF§ï²Á.„€@ ãF§ï²Á.„€@ ãF§ï²Á.„€@ ãF§ï²Á.„€@ ãF§ï²Á.„€@ ãF§ï²Á.„€@˜À&éxÔþÁ.„€@˜À&éxÔþÁ.„€@˜À&éxÔþÁ.„€@˜À&éxÔþÁ.„€@˜À&éxÔþÁ.„€@˜À&éxÔþÁ.„€@9¹Œ~($Á.„>¤µÜÆ@3°Ä›¥ãTÁ.„M‰ûçm@3'KƧïžÁ.„QnÙ‡@2Þ«6z‘Á.„NÜC,¥@2Þ«6z‘Á.„NÜC,¥@2Þ«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø»@£~¸Qì@£~@£~¸Qì@£~ (Œç@£~¸Qì@£}ö+jçÕ@£~¸Qì@£~=Ùc@£~¸Qì@£}ù=Ùc@£~¸Qì@£}ñœàu÷@žt‹C•@žtŠ=p£×@žt‹C•@žt”É…ðp@žt‹C•@žt)*0U2@žt‹C•@žtE‡“Ý™@žt‹C•@žtŒIº^5@žt‹C•@žt€IQƒ@5ÞHè§æ@5ÝÅÖ8†Y@2+ Iº@2e”¯O @1´“t¼j@1â-V@1=cˆe”°@1S àÞÒ‰@1=cˆe”°@1ZW§†Â'@1=cˆe”°@1em\ú¬Ú?€‚ñêã ?•’nî „?¬¸. ¡? Tã|ø2Ñ?¤¾¯d…8?®þ‹‡Õœu?ˆÿÀ)T¿Æ?•íÌÖf?¨x`¶In?­×4="Ø ?¦ñ5ÜnM8?²&àrP'?‡9Â@0wæ?›’qvš°“?¦~9n4º¿?±VÊMÑx?š‘ÝÒcô?™ì ª# Ù@@@@@(@*?ð?ð?ð?ð?ð?ð?RÊÎQ¤¿^ö¸é>?pn¶@^aÍ?k’J~×@£~0nBË@žtƒì|…ò?ˆ{x»—«¾?…’ª2lq@Z®¬EÊœ?ñÓmv1N@ŸaCÅ¿Õ@¼@ ÖWOß;@ ÖWÎÙ‡@ ÖWOß;@ Ö 0½“ @ ÖWOß;@ Ö0kׄH@ ÖWOß;@ Õé×Ü V@ ÖWOß;@ ÕÄß¼@ ÖWOß;@ Ö?¨n±@”ÁÊÀƒo@”ÁËC•@”ÁÊÀƒo@”Â0·´ @”ÁÊÀƒo@”ÁÊ<~é5@”ÁÊÀƒo@”Áç©ÝžØ@”ÁÊÀƒo@”Â0kòÞ@”ÁÊÀƒo@”Áø'¢9@2kµsê´@2jÝhLŽ×@1 Ä›¥ã@0ÖO °³@/íOß;dZ@/±’]Ä@0J0U2a|@0ßT8ò°@0J0U2a|@/ËQÁq@0J0U2a|@/À‹ê4ã?É^¥(Úx?µÊŒ¤µÜÆ@3 Iº^5@3ZîcŠ@2y7KƧð@2y™™™™š@18DЩ*@187´¢3œ@18DЩ*@17>«6z@18DЩ*@17>«6z@8J¨?ÎÁ¯‰t0?•ï9aýô?ŒôƒA˜c ?’2’Ö¼9?’ Ù–¥£@8J¨?’ ·6Öc¤?“v@á¿bî?‘!¥zt9Û?‘®7Ö=^9?±—'¶Ü+@8p÷?Žrø·óæ?†ž5ðqë?„À"aËô??‡”_Õ­çW?ˆ©{2¡Î@@@@&@&?ð?ð?ð?ð?ðøøøøøøøøøøøø¾@©î« Iº@©î« Iº@©î« IºÁ.„€@©î« IºÁ.„€@©î« IºÁ.„€@©î« Iº@©î©ûçl‹@©î« Iº@©î¨õÂ\@¯‹bMÒò@¯‹bMÒò@¯‹bMÒòÁ.„€@¯‹bMÒòÁ.„€@¯‹bMÒòÁ.„€@¯‹bMÒò@¯‹’° Äœ@¯‹bMÒò@¯‹bMÒó@2Hè§æ@2BZîc @.…`A‰7KÁ.„M‰ûçm@.rn—OßÁ.„QnÙ‡@-™b¶®~Á.„NÜC,¥@-™b¶®~@-™³Ð|„¶@-™b¶®~@-™#¢œw›?É^žQ5P‚@8#˜@8¾:@8 >+?‘b©b<]ô?±ŒR°?ÐbMçê_x@8Î÷@8i§@8Å?‘ÞIŸö?hï,ðà?€b¡´ñ@@8 * @8p÷@8¶?†µ°jÆÃ?†¼Š˜L¥÷@@@?ð?ð?ðøøøøøøøøøøøø¿@¡«KC•@¡«KW¿¹l@¡«KC•Á.„€@¡«KC•Á.„€@¡«KC•Á.„€@¡«KC•Á.„€@¡«KC•Á.„€@˜›A‰7KÇ@˜›?|í‘h@˜›A‰7KÇÁ.„€@˜›A‰7KÇÁ.„€@˜›A‰7KÇÁ.„€@˜›A‰7KÇÁ.„€@˜›A‰7KÇÁ.„€@6wâ‚@·€@6yFlò@3; Iº^Á.„M‰ûçm@2Ͳ-VÁ.„QnÙ‡@2OO „MÁ.„NÜC,¥@2OO „MÁ.„NÜC,¥@2OO „MÁ.„NÜC,¥?}x—™+@8Iç@8Ù?}õ¬#„­@8Î÷@8i§@8Å@8S@8û—?Ž5‹\a@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÀ@¨%/Ÿ¾w@¨%0bMÒñ@¨%/Ÿ¾w@¨%LÌÌÌÍ@¨%/Ÿ¾w@¨%7éùr@¨%/Ÿ¾w@¨%bu%F @¨%/Ÿ¾w@¨%I*0U3@¨%/Ÿ¾w@¨%Aaä÷f@¬C´¼j~ú@¬C¸bMÓ@¬C´¼j~ú@¬CñN;Í6@¬C´¼j~ú@¬Cÿ—$tT@¬C´¼j~ú@¬D" Iº^@¬C´¼j~ú@¬DHè§@¬C´¼j~ú@¬D ù m@6¥öý!ÿ.@6¢@·€4n@4©‡+ @4œÆ?@4`A‰7L@4-à @3ò䎊r@3b½<64@3ò䎊r@3`oiDg8@3ò䎊r@3]žƒä%¯?‡YÍ_?“ÓLáS{?™À‘öô{?¢¢ˆß@p—?£ŸOÖÆC?žy—™öW?1·†Æjñ?æ¦Qì/J?¨.cE:"^?—,àÐÑž?¡Òá%L$?œ ò¿á¼D?ƒ´],mg@@@@@,@(?ð?ð?ð?ð?ð?ð?wXÎ?–×YÃÄ€?p,W–|Õ'?~¹¶Ù¥§~@¨%"@¤xÔýó¶@¤x¢St@¤xÔýó¶@¤w%‡@¤xÔýó¶@¤v”Fs‚@¤xÔýó¶@¤wRC4@šå`A‰7@šå`A‰7@šå`A‰7@šæë²»å@šå`A‰7@šèñ»&@šå`A‰7@šç°³‘”@šå`A‰7@šæ`ÇÝ@šå`A‰7@šæ/#K$@4 ]cˆe”@4 Ã¥H@0Ò Iº^5@0ÒsCå„@0y7KƧð@0zk‘Cœ²@/™b¶®~@/›yRÒ4ì@/™b¶®~@/›+ B@/™b¶®~@/›Œ®x5?|¬h2:“?fÈúÆ?‘1èûzáþ?‹æJJýµ0?‘jf‹Ä€?Ð>Œ,ÖÂ?}@T˜ÁÎ¥?’ZNZSB?‰Õ=¶ :?A¹¿EŠ?ö̶e#‰?fôQ:ý?‚Öð÷îF?ŒÊZSX?‚Ψ,UiW?ƒƒ?m‚¬òÇç_?UC5}&ñ@©…?4Ô7h@žçò†¹£?„8ÊÃ’ƒ±?qÎODƒ™?ïî7´pú?ÊZî-êöœ@Ÿm¯“ÃFÞ@Å@ ³œ(õÂ@ ³ CB@ ³œ(õÂ@ ³›åãO@ ³œ(õÂ@ ³ŸV†x¨@ ³œ(õÂ@ ³šK¾Õ¢@ ³œ(õÂ@ ³š&ó{@ ³œ(õÂ@ ³›P_† @«²\(õÃ@«²Á“ä=@«²\(õÃ@«²ŠñBMø@«²\(õÃ@«²ŽCŽþa@«²\(õÃ@«²°ò{´@«²\(õÃ@«²ŽÑXêÎ@«²\(õÃ@«²1©`W@8>«6z@8Ë&Ämk@35ãS÷ÎÙ@35é š–@2]V”@2[þI6$@1n_oÒ @1mçõôÎ@1n_oÒ @1mAqÆâ@1n_oÒ @1lЇÏÄ?›`^Ãz•T?ÄdóN’?‘8Cõ)*Â?Œw¢?´rò?‘˜¯ -`É?‘S¥?–1¯?„ÜNó7·å?’Gvû§Q?ÈÒÀ©_;?‘ êÈZr ?‘FjØõmY?÷ÎV”&Õ?—NþuæÃ?ž2@غ ?†ZCM?ƒmþœ~MU?‡ Þ3T?ˆGgŸ@@@"@*@8@4?ð?ð?ð?ð?ð?ð¿Hœk.Æ¿–õ¹€?F†°˜¼~?(~˜Ô´ý@ ³›YI%æ@«²Šd™_?_ô·bD€‹?K}”›çT?¹-¥f;?—2SÊ1*ü@Ÿmf¾¤È@Æ@¥¥bMÒò@¥¤Ð‹>@¥¥bMÒò@¥¥âÿÓ@¥¥bMÒò@¥¥793å@¥¥bMÒò@¥¥L(˜œ”@¥¥bMÒò@¥¥QOMo<@¥¥bMÒò@¥¥'ïžÔÜ@œbƧï²@œb³3334@œbƧï²@œb Ç@ZT@œbƧï²@œbS'f›è@œbƧï²@œabT -Mh@œbƧï²@œb´X×@œbƧï²@œb)@9Hè§ç@9yŽ@@3õãS÷ÎÙ@4 -OíF@3v§ï²-@3ƒ®/è£@2«xFÜ^@2ér¦<[©@2«xFÜ^@2ˆº²Ê¬@2«xFÜ^@2‰“Ï\s4?‰çõ×eµM?ÏZi6&Ë?‘–Êv:?v]ÆJ?™´_Évð?±ƒ‹1?¡ùõŠm ?©ôû(¸ÛÞ?•s–«+Ñ\?§)CH ³Ê?•‹R^– ?”O È*Ñ¥?µch0Ñë?” ªûö?–XŽæ¤j?ƒwXPöjÝD8b@Ç@¡ªŒIº^5@¡ªr° Äœ@¡ªŒIº^5@¡ª–”Fs‚@¡ªŒIº^5@¡ªOß;e@¡ªŒIº^5@¡ª—1Å@¡ªŒIº^5@¡ª•2a|@¡ªŒIº^5@¡ª¯iDg8@¬’É7Kƨ@¬’ÕÂ\)@¬’É7Kƨ@¬’ãS&@¬’É7Kƨ@¬’Þ\‘ÑN@¬’É7Kƨ@¬’êOv@¬’É7Kƨ@¬’Ù0¾ î@¬’É7Kƨ@¬’à'RTa@8Î쿱[W@8×Oß;d@5¦‡+ J@5¤?åÉ@4Ãt¼j~ú@4ÀhÛ‹¬q@4¨è§æ›@4ŸË’:)È@4¨è§æ›@4¡4êJŒ@4¨è§æ›@4œ²•éá±?›’qvš°•?ªi1Ÿ[„ñ?’ >(lQ ?š„Åè-ƒ?œè¢ü V?¢}ÉTãvÃ@@@@@*@*?ð?ð?ð?ð?ð?ð?‡ ÍÞ@?p|²;?a¶~Ûdè?c@û2Ÿ$4@¡ªŽ34-Þ@¬’ßR¸Ð¤?~UóðS¶"?„B\_[Œ?ÙÒƒ®ðȸ?øËO©"êG@Ÿg•—p\R@È@¨<‘hr°!@¨<‘AÅaU@¨<‘hr°!@¨<’9&@¨<‘hr°!@¨<’)¯¡3@¨<‘hr°!@¨<•ï˜r@¨<‘hr°!@¨<†œ†ïŽ@¨<‘hr°!@¨<‘äÅ+@–ª^5?|î@–ªˆ´9X@–ª^5?|î@–ªgs;7@–ª^5?|î@–ªKQ —@–ª^5?|î@–ªf±òš“@–ª^5?|î@–ªy5öUé@–ª^5?|î@–ªl–ÁŽY@8–šÔ,<Ÿ@8Œ¨RW÷‘@3óS÷ÎÙ@3ëûYU8ž@3F“t¼@3JXƒJ¶¡@2ÜÚQÎ@2×¢H”ÄH@2ÜÚQÎ@2öÑ+bGz@2ÜÚQÎ@2ØÂ«3$Ð?‹œãµ,r—?”¹GiD ?’@«h¥¤?-êšVç?˜FÖãZ!?“zAõ±?¿¹5,±?˜þ˜ã‰?‘ºÿ¾€F€?”ƒzÇý¢t?™ƒ6WOA?”@[WÄ@ã?¤zø¶ëÊ?]Ö « Ï?Œrè—Q ô?…y߀1í?”ÍÈ`&L?³ÖOªõ#@@*@$@$@;@8?ð?ð?ð?ð?ð?ð¿8eúC¿gB·?Z”X£¹èJ?XŸ‰>êjx@¨<‘=pÏÌ@–ªvîü ¦?yÃ…ÇÆ/ß?xâÓtbrG?ñBƒÍ¶+?êE釋_@Ÿj.yö@É@­Ò5Â\)@­Ò5$Ý@­Ò5Â\)@­Ò:QÎ@­Ò5Â\)@­Ò:6âë@­Ò5Â\)@­Ò:áG®@­Ò5Â\)@­Ò:¬Ùè?@­Ò5Â\)@­Ò9Û"Ðå@¡¬oŸ¾w@¡¬oŸ¾w@¡¬oŸ¾w@¡¬oiDg8@¡¬oŸ¾w@¡¬oƒ{J#@¡¬oŸ¾w@¡¬m‘hr°@¡¬oŸ¾w@¡¬nHè§@¡¬oŸ¾w@¡¬mw1Å@3žHè§æ@3žHè§æ@1×+ Iº@1Ø Ô•*@1Z~ùÛ"Ñ@1[)^ž @1ý!ÿ.I@1+ Iº@1ý!ÿ.I@1l‹C•@1ý!ÿ.I@1 ù kº?|öOÿÝ?Eˆ‡ðó‹?‘âTÀÊS“?‹¹GüÞõ?‘·Xâe?‘¦ µÚ?|¬Çëý ?’§ioŠ?‘†£„Â?6) }’ë?‘êë·áþA? êBÐ8ã?‚uÞ@>N ?2ô]7?„‘Za¹Q?ƒ^ ›¨¬a?‡&üòI?‡v>ª¸ @@@@@,@&?ð?ð?ð?ð?ð?ð?Srž€¿5I^ù ?9R¾–;—Ú?6 pdv¤@­Ò8QµÖŽ@¡¬n\èð?Y -è@5Då?;š_\é|T?À¯: áŽ?ƒ]¼÷L/N@ŸfÄT……û@Ê@¢U°£× -=@¢U°bMÒó@¢U°£× -=@¢U±©ûçm@¢U°£× -=@¢U±ÑN;Í@¢U°£× -=@¢U±Þi­C@¢U°£× -=@¢U°ò{³@¢U°£× -=@¢U°bMÒò@­!St¼j@­!St¼j@­!St¼j@­!S©*0U@­!St¼j@­!Sê³g¡@­!St¼j@­!T!-w@­!St¼j@­!R䎊r@­!St¼j@­!S&Á¾@2=:’£@2=V”@.\j~ùÛ"@.\¾ß¤?@.éxÔýô@.ãS÷ÎÙ@,QÑN;Í6@,På`A‰8@,QÑN;Í6@,P‰ 'RU@,QÑN;Í6@,P£× -=r?É^³Dw'?Úþþ³?‘=?ùKh?‹Æ úJ-M?‘\Žýµ€7?ïˆ6ÏJ?ÐbMçê_x?’›ÈÖÝ?ŽËÜ¿€?wàËxR?‘+ùÔ!½‹?]#ÍìO¤?€cPßQª?Œ».êxóÚ?‚|׿pZ?‚ôhBì^?†špk Y?†½ª»—@@@@@,@*?ð?ð?ð?ð?ð?ð¿Då¿<ž¸Æ?YƒÒ†D?.¢ a r`@¢U±%_1@­!StÔþ?*k9qá&Â?=_"€£?P·¾YfL³?rrj¸.@ŸsÉѬ@Ë@¥èÄ“t¼@¥èÎV“@¥èÄ“t¼@¥èÄÝ/Ÿ@¥èÄ“t¼@¥èÄ›¥ãT@¥èÄ“t¼@¥èĨÁTÊ@¥èÄ“t¼@¥èÃS÷ÎÙ@¥èÄ“t¼@¥èÄ“t¼@®/_;dZ@®/R° Ä›@®/_;dZ@®/_ÿÿÿÿ@®/_;dZ@®/`-à @®/_;dZ@®/^ߤ?æ@®/_;dZ@®/_|í‘h@®/_;dZ@®/_Ø­«Ÿ@5-¥œàv@5!TÉ…ðp@05ãS÷ÎÙ@06$Ý/ @0t¼j~ú@0¢œwšk@.Vð¸»@.W -=p£×@.Vð¸»@.W>«6z@.Vð¸»@.WXâf?¤ÊŽaÈ]Ó?Čۨ1A?‘"žæÆó¡?‹ÑqÔ@vÿ?üEÙáõ{?È2I/?©W»¥ÿ$B?’j%ÓRa?†[‘'Í?;ß $Þû?øóéM Ÿ?{L Õ¢D?¸¨„À!†[?Œµ3‰;šÏ?ƒM¬Öe—_?‚äÍ“½E'?†žóB» “?†–f_ÔŠŠ@@@@@*@*?ð?ð?ð?ð?ð?ð¿U*<·A?WØU­?LòÆ%D¥?P ó®Æ!Ó@¥èĸ¡ãû@®/^‰¤0?aO㘠ÞÞ?bÞ¨ðµ&‘?¾[ÕÓŽü?¾h83µ$V@Ÿp•s ø£@Ì@¨Íüí‘hs@¨Íýp£× -@¨Íüí‘hs@¨Íý/Ÿ¾@¨Íüí‘hs@¨Íýã¼Ó@¨Íüí‘hs@¨Íýó¶E¡@¨Íüí‘hs@¨ÍüPHð@¨Íüí‘hs@¨ÍüwškQ@¨ÄyÛ"Ðå@¨ÄyÛ"Ðå@¨ÄyÛ"Ðå@¨Äy™™™š@¨ÄyÛ"Ðå@¨ÄzCþ\’@¨ÄyÛ"Ðå@¨Äyè>B[@¨ÄyÛ"Ðå@¨ÄzCþ\’@¨ÄyÛ"Ðå@¨ÄyrGE9@2*0U2b@2*0U2b@.û"Ðå`A@.úîcŠ @-è1&éxÕ@-ç»/ìVÖ@-åÉä@-|í‘hs@-åÉä@-|í‘hs@-åÉä@-¾vÈ´:?É^òÀXæN?Čۨ1A?‘,fŸCô6?‹û…†_?‘ §‡g¾?Å{¿Ž<¹?ÐbMçê_x?’j%ÓRa?ŽËÜ¿€?CÚ B÷?çêÑHcÇ?_Ø~tñ?€n|ð̲?ŒË›Í‡Çq?‚¯­Ù¤Á¶?‚æÊ¬vã?†£îž«î?†žóB» “@@@@@*@,?ð?ð?ð?ð?ð?ð¿F›nú¦¿&¡C´?1LÙÐÐè?+ÀÐ;ýSO@¨Íýž@¨ÄyâL‹‹?@¤Í¥S ?:EÂB)q?z֨”&ô?n ÒWF@Ÿs æ«@Í@§Ct¼j@§C–±ö§@§Ct¼j@§CË -PR@§Ct¼j@§CÌ5î¿@§Ct¼j@§C‡^>@§Ct¼j@§CcïÎO@§Ct¼j@§CãÝ+Z@“¢þùÛ"Ñ@“£İž™@“¢þùÛ"Ñ@“£s×Ü@“¢þùÛ"Ñ@“£†€@“¢þùÛ"Ñ@“£m“è@“¢þùÛ"Ñ@“¢ÿÌ;K@“¢þùÛ"Ñ@“£øÝvŠ@7|ÚQ@7š³*`@3‡ÎÙ‡+@3„1 FËÝ@2K"Ðå`B@2JoÊF'ƒ@1Ç ù kº@1ÇL¼J¹}@1Ç ù kº@1È0HÑ@1Ç ù kº@1ÈÊ>´c?•'Z]Ô&?Vö#.ãž?‘B-“šÂ?¤“¯¸ˆV?‘æ*^ú @?‘]¾õ»ý?~Ov_Ø­«?’p`íH”c?Î ´E>Î?‘§WWM@?’‹æ‘¯Î?‘Z§ÓWÈ?œ57E?‰6~„æAÔ?Ž•ýÙ—±?†ž5ðqë?…2 Ôî½?‡&üòI?†ïRÉv‘Ñ@@@@@*@(?ð?ð?ð?ð?ð?ð¿B’ÿœ?>Láø@?†Ç¦ ÆO?-!KêÉ-@¡8Ô º6£@ª1šzÄ!?.Â`òlŠ?Nxݨ<ýf?e¢J³6?¤q~-•@ŸgHž~k4@Ð@ªÝ`A‰7L@ªÝ`A‰7M@ªÝ`A‰7L@ªÝaG®z@ªÝ`A‰7L@ªÝa:’£@ªÝ`A‰7L@ªÝ_ò䎊@ªÝ`A‰7L@ªÝ_Ø­«Ÿ@ªÝ`A‰7L@ªÝb3œÀ@¦Ü§ï²-@¦Ü§ï²-@¦Ü§ï²-@¦Ü®—Oà@¦Ü§ï²-@¦Ü¬˜_÷@¦Ü§ï²-@¦Ü¯Ån@¦Ü§ï²-@¦Ü«Æ§ïž@¦Ü§ï²-@¦Ü§â‚@¸@6ÖšÔ,<Ÿ@6Ö_Ø­« @3Ò Iº^5@3×+ Iº@3ï²-@3‹¬q ²@2¸DЩ*@2»Æ§ï²@2¸DЩ*@2»ŸU›=@2¸DЩ*@2»µsê´?}Ñ¿ž,?‘è™è;?—Á§ Rp?“ý?çðo»?’õ¡EE?’»«ÒñŒ?ˆÿÀ)T¿Æ?›44]Åùt?—ÓÙggÞô?—QÀ–Íù?”îC¯·æo?• D·?ƒ¡É^&Ö?‘žˆ2}?…/‡ÙX·³?ˆ6‘F:™Ê?‹Ûx§Þ?‹ú èNÆö@@@@@*@*?ð?ð?ð?ð?ð?ð?'pÏJ ?@çÿax?+]}ޤF‹?N(õ›@ªÝ`˜]–@¦Ü©õ¿¯?M(¿åé?nÀ<Ò{¦M? uõØ£?×c¢B'Ö@Ÿh"Gø@Ñ@­À‰º^5?@­¿ãn—Ž@­À‰º^5?@­À°¾ í)@­À‰º^5?@­ÀŸ¾vȵ@­À‰º^5?@­À½/Ÿ¾@­À‰º^5?@­ÀÏv_Ø­@­À‰º^5?@­ÀÙè>B\@ª 2-V@ª ÆéxÔþ@ª 2-V@ª @ëíúE@ª 2-V@ª 3Mj@ª 2-V@ª 1©ûçm@ª 2-V@ª Qhr°!@ª 2-V@ª 7Xâd@804mÅÖ8@7—l‹C•@1ðÄ›¥ãT@1Ú¹õY³Ð@0Ë"Ðå`B@0· ù k¹@0L¿±[W?@0!N;Í5¨@0L¿±[W?@0ëC,¦@0L¿±[W?@0éxÔýô?áÓMç©0»?±4ÈáËÓ‹?–Èó^ù„?«Úˆœà§‘?À ŠïÒöµ?Ã) ®oî*?âú1Ç ù©?­„•Ñ.M?˜ºµ²¢Dœ?±2ý}û¢í?ÃZC: ­;?Ã;/…S¢¤?ó$—Òc*?šÊýÛל?”Ê}ÛXœ?§«OÊJI-?žTIœ?³µ›«x¼@@@@@,@,?ð?ð?ð?ð?ð?ð?“k¢×À?QûÎà?Š=ÈP'ëÕ?‹è·’ˆÄ @­Àň]>Ò@ª 8lš2²?•´dÐS2?˜÷S žõ?ר:àU´?×,̱˜b@Ÿo‡åFú@Ò@¤1«…¸R@¤1¤Ý/ @¤1«…¸R@¤1t9Xb@¤1«…¸R@¤1‹P°ò}@¤1«…¸R@¤2µÜÆ?@¤1«…¸RÁ.„€@¤1«…¸RÁ.„€@¥"XbMÓ@¥"dZ¬@¥"XbMÓ@¥"F$Ý/@¥"XbMÓ@¥"ŠôðØE@¥"XbMÓ@¥"zCþ\’@¥"XbMÓÁ.„€@¥"XbMÓÁ.„€@7°4mÅÖ8@7°ëíúCþ@5pÄ›¥ãT@5TðØDÐ@4ˆ“t¼j@4aÑN;Í6@4}cˆe”°@4iîËû¶@4}cˆe”°Á.„NÜC,¥@4}cˆe”°Á.„NÜC,¥?£È‰·akû?m’Ìaø?¿ß¹e/?²Lì÷ïòä@8Iç@8Ù?3ßa=„?“Á4œÝi?Å2µú–6?»U£ ­Þ @8S@8û—?„ã¼ÓZ…‡?®²¼“gz?©[K-$›I?Á'|ÝåVÄ@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøÓ@¤Ý¶E¡ÊÁ@¤Ý¶E¡ÊÂ@¤Ý¶E¡ÊÁ@¤Ý¶¡aäö@¤Ý¶E¡ÊÁ@¤Ý¶âëC@¤Ý¶E¡ÊÁ@¤Ý·eýŠÛ@¤Ý¶E¡ÊÁ@¤Ý´9Xb@¤Ý¶E¡ÊÁ@¤Ýµ '»@£‰€@£‰€@£‰€@£‰€'RTa@£‰€@£‰—$tT@£‰€@£‰€hÛ‹¬@£‰€@£‰HË’@£‰€@£‰b¶®}@4=:’£@4=BÃÉîÌ@0¸r° Äœ@0¸K]Ìcñ@0@å`A‰7@0AA [À@/æL/ƒ{K@/宿1ø¢@/æL/ƒ{K@/åãS÷ÎÚ@/æL/ƒ{K@/åÖ8†YJ?}Ñ¿ž,?Čۨ1A?‘O‚%c?‹Æ úJ-M?‘#6‰¥_?‘‚ÊŸû©?|¬Çëý ?’j%ÓRa?£½:…?;ß $Þû?‘=d¦^™?›ªU3Îp?‚2Y0â³?3I¶#i?‚¯­Ù¤Á¶?ƒGϵ¨í'?‡ã ËÄž?†å·ÑfWà@@@@@*@*?ð?ð?ð?ð?ð?ð¿.UòQ ¿¿9à?3ƒÿËóº?O·ÒZÁ@¤ÝµíÝ -@£‰Îö/Û?SXöj'9?9É(p<Ü?³À-b -"?rÏÙ¨&@ŸfúŒ±±ø@Ô@«St¼j@«O²- @«St¼j@«S÷ÎÙ@«St¼j@«U%F -¦@«St¼j@«RÊW§‡@«St¼j@«OiDg8@«St¼j@«NËû¶@¥/`Ä›¥ã@¥/c•%@¥/`Ä›¥ã@¥/bÐå`B@¥/`Ä›¥ã@¥/a-w1@¥/`Ä›¥ã@¥/_;dZ@¥/`Ä›¥ã@¥/_Š Þ@¥/`Ä›¥ã@¥/`@6 ØDЩ@6 oiDg8@2ÞÙ‡+@2ÝquŽ"@1š~ùÛ"Ñ@1š ÞÒ@1¦YJôðØ@1¢ÊW§†Â@1¦YJôðØ@1£n.±Ä3@1¦YJôðØ@1œ1&éy?‡YÍ_?êÚÏ$?‘ê ÷“'?U›=ÈK?“Á¿À3<ô?–VòFNLG?žˆ2}?’Ï>`Ï?‘C\ºÕ¶?‘¼Øzé±ï?‘®7Ö=^9?’.8 -B?˜Ÿó6P£?Å9–o?ƒíÈm½!¿?„ìsMQ(Œ?‡æê7²zE?µ£f$Åx@@@@@*@*?ð?ð?ð?ð?ð?ð? a@Ä¿Mþêsì?B -MÍ÷¨?2–ÓèÑê@«PPrRÝ@¥/a6kæj?a0Õ2¿ö?SEZ¸†?ÁôDþAĵ?­êl¸]@Ÿhf¿%^@Õ@¨ ]/Ÿ¾@¨ ]/Ÿ¾@¨ ]/Ÿ¾@¨ \Æ?@¨ ]/Ÿ¾@¨ U¨Xy?@¨ ]/Ÿ¾@¨ I^ž@¨ ]/Ÿ¾@¨ C¼ÓZ‡@¨ ]/Ÿ¾@¨ ?ö”E@ªpô9Xb@ªpô¼j~ú@ªpô9Xb@ªq@ªpô9Xb@ªpúáG®@ªpô9Xb@ªpý/Ÿ¿@ªpô9Xb@ªpþùÛ"Ð@ªpô9Xb@ªpÿ;dZ@3įO „M@3ļj~ùÚ@1ahr° Ä@1Y k¹Œ~@1Ct¼j~ú@1:Ÿ¾vÈ´@0ÔmÅÖ8†@0Æö”Fs‚@0ÔmÅÖ8†@0ÆÏAòØ@0ÔmÅÖ8†@0Æ8†YJõ?}Ñ¿ž,?“+ÄWè?’måGSžq?’³Žbtx=?•‚•‹€\†?•iá¸OL™?|¬Çëý ?™Ú"üT÷î?”¯_©ïM?’ äÅ?“úaû]?”æâ„o?‚† SFñ?’žÿ§:­?‘ -òtMŠ?’aP¸¾¦Ö?·♊N?‘˜M\ÿŠ@@@@@,@*?ð?ð?ð?ð?ð?ð¿zHq¸?d¦ÖX?;ƒ -ÂDø?55ý§g„4@¨ P:ÔÉ@ªpù¾…P?Z½&¶.Ý?T•îÛ§?¼L›Ák8?²°—‹¾@Ÿezü;7@Ö@¢paÊÀƒ@¢p]/Ÿ½@¢paÊÀƒ@¢p`XÖ#@¢paÊÀƒ@¢p^¿Áà@¢paÊÀƒ@¢pZõ¤u@¢paÊÀƒ@¢pgó½ë@¢paÊÀƒ@¢pa*‰lô@˜z•$Ý@˜z•$Þ@˜z•$Ý@˜z˜ :!1@˜z•$Ý@˜zš¼bò/@˜z•$Ý@˜zžK/…”@˜z•$Ý@˜z‡‡5i@˜z•$Ý@˜z‡àõÓœ@6ºqÞi­C@6¶ÕÈ>` @2º^5?}@2Cù¡G@1Ͳ-V@1ÌÓà10@1B‚@·€5@14†<ûeì@1B‚@·€5@1DWùù@1B‚@·€5@1BwûÍè?¿¹5,±?•°Wzo¨¬?’Æ­ù¡Ñ”?•Rf‰-ˆŠ?” u•< ?“®Ü#& ?”$úÀÁ’?™‰ŸþÿÎÏ?‘?ÂÝò‚Ø?”ñž°¾?’rË °v?“‹ûÓ;q?‚náÉ!?Mr‰B¨?„x;@&b ?‹ø£Þ—jt?Š@®Tf?‰+“û5.*@@*@$@*@;@:?ð?ð?ð?ð?ð?ð?V´°Þ¿[³ß÷÷?V—ÞFËa ?VÕsUð@¢p`IùÆÓ@˜ze=]?vé/Ï.]?t¡ƒ@¥g,?çÍÀ¬2Q?ák‹@Ÿkô’„¯@×@«šô¼j~ú@«šíV@«šô¼j~ú@«šöE¡ÊÁ@«šô¼j~ú@«šíí(Œè@«šô¼j~ú@«šò{²þÆ@«šô¼j~ú@«šòT`ªd@«šô¼j~ú@«šô•*™@«(ÚŸ¾vÉ@«(ß¾vȵ@«(ÚŸ¾vÉ@«(ÖE¡ÊÂ@«(ÚŸ¾vÉ@«(ÛÍ5¨W@«(ÚŸ¾vÉ@«(Ù0¾ í@«(ÚŸ¾vÉ@«(Ûµsë@«(ÚŸ¾vÉ@«(Þ í(@8ëµsê´@8ê™0¾ í@3Ô›¥ãSø@3Ú0U2a|@3A‰7KÇ@32ÊW§‡@1î_oÒ @1ó9Àëíú@1î_oÒ @1ð[À6ã@1î_oÒ @1îÒˆÎp;?Â2´É½â?•ò‘éÃ!?’5 µ¿$„? Í‹hÆ?‘úy«ôÊ%?‘)]•\¬?§Ò¸ùBz3?˜´1…9„?¯éÊSÜ?‡@Cvì×?’l{9ÙŽ?‘fû›1-&?–uDJ‘`º?’lUˆ%s§?ƒ/‹ÍY}’?ŠŒµIÍ?‰©OO ¨?‰®ââP\@@@@@*@&?ð?ð?ð?ð?ð?ð?Lâ-•$?J ÇL?=@q,5Bð?R_YzÆJ@«šòúŠ @«(ÛŒš8?LÎãÁ„®9?f*@²]?‘} XÛ?ÄU©[‰Ç@Ÿr@n¿½r@Ø@¯*bMÓ@¯*Oß;@¯*bMÓ@¯*ï4Ö¡@¯*bMÓ@¯*¬1@¯*bMÓ@¯*âe+@¯*bMÓ@¯*Ôýó¶@¯*bMÓ@¯*DЪ@ ÈLIº^5@ ÈKƧïž@ ÈLIº^5@ ÈLVÕÏ«@ ÈLIº^5@ ÈP¸»@ ÈLIº^5@ ÈLL˜_@ ÈLIº^5@ ÈL1&é@ ÈLIº^5@ ÈLcñA!@4p4mÅÖ8@4p4mÅÖ8@0ÞÙ‡+@0ß;dZ¬@0b-V@0bœwškQ@/³üPH@/²×süQ@/³üPH@/±ø -ß@/³üPH@/±A [À?ð°–Ž]?êÚÏ$?‘Ûü†Nã?Œ2ÌUÃT?‘#6‰¥_?Êëüâi{?ð°–Ž]?’ ŠŠ¤Hì?ŽËÜ¿€?RLnj?‘77…Âç?ˆ9²0?ð*wjs—?2ô]7?„ò—TËÄ?ƒE 8?†µ°jÆÃ?†¯Mž684?ð@@@@*@&?ð?ð?ð?ð?ð?ð¿/óÀ? SM((?h5kßé/?$†uåÔ@¯*©ÿð‹@ ÈL*w ?(>¼X,Ð?"Ü ïˆ -Â?Kë„Zvΰ?>¡ÁÖ·Ö4@ŸsŒ®˜NÔ@Ù@¦ák…¸RÁ.„€@¦ák…¸R@¦á/iDg7@¦ák…¸R@¦á8âe+@¦ák…¸R@¦áEm\ú®@¦ák…¸R@¦áC¼ÓZ†@¦ák…¸R@¦á-jO@¨2~ùÛ"ÑÁ.„€@¨2~ùÛ"Ñ@¨4µsê³h@¨2~ùÛ"Ñ@¨45sê³h@¨2~ùÛ"Ñ@¨3ú^5?}@¨2~ùÛ"Ñ@¨3°ò{³@¨2~ùÛ"Ñ@¨2ù0¾ í@9IÎ_oÒÁ.„>¤µÜÆ@4° Ä›¦@3ixÔýó¶@3~ùÛ"Ñ@2Ÿö”Ft@25µsê³h@1àëíúCþ@25µsê³h@1ìžì¿±\@25µsê³h@1ò-V@8J¨?Ê2yH?ËX¾ ÙM?³‚1½Á?®ìl\L˜W?£â³x‰»@8J¨?Õš‘¡ìŠ?Ó¢û®ásø?СâÕÎùÓ?ÓÕöD¬?¿X£íŒ1@8p÷?“¢ ßÌF2?¢¦Ú¬šæà?åÃõâü?Ÿ/Òѯ¢?¦ 24 -¾Š@@@@,@?ð?ð?ð?ð?ðøøøøøøøøøøøøÚ@«_ùÛ"Ðå@«_û"Ðå`@«_ùÛ"Ðå@«_÷ÎÙ‡@«_ùÛ"Ðå@«_û/ìVÖ@«_ùÛ"Ðå@«_þOv_Ù@«_ùÛ"Ðå@«_üÚQ@«_ùÛ"Ðå@«_ù™™™š@­£° Ä›¦@­£®—OÞ@­£° Ä›¦@­£¬²•éã@­£° Ä›¦@­£¤ xG@­£° Ä›¦@­£¦¸ºÇ@­£° Ä›¦@­£§ÕfÏA@­£° Ä›¦@­£§_oÒ @7 xFÜ@7ÿ.Hè§@3GÎÙ‡+@3Aÿ.Hè§@2€å`A‰7@2|"h Ô•@1³&Á½¥@1­\ú¬Ùè@1³&Á½¥@1­/Ÿ¾w@1³&Á½¥@1®p:û~‘?‡YÍ_?‘ ·èe?’à©GMõ?—^tø -a?–lô!-w?•iá¸OL™?3ßa=„?’{cü€øõ?œê¹ÂÁR×?—d¨XM?•Àb¤| W?–Ï9xä]e?ˆïhƒEõ¦?‘D‡>S9?„m~Z_s,?‡µ‚[Ö?‰©OO ¨?qÂ' -Bœ@@@@@*@*?ð?ð?ð?ð?ð?ð¾øf]î¿ZM½Û ?>`™Øæ?A¸Û‚o‰u@«_ûr´ &@­£©ã7›)?`0Öˆ‰B?a›ÇèI1_?¸“$Cðâ?·úA!Ťá@Ÿi¡{Ü•ÿ@Û@žÓOß;d@žÓß;dZ@žÓOß;d@žÓ—z¨°@žÓOß;d@žÓ€äPäy@žÓOß;d@žÓz(ðÚü@žÓOß;d@žÓ…[²¼@žÓOß;d@žÓ‰Ï¹UL@¡ÚLÌÌÌÍ@¡ÚK/kH @¡ÚLÌÌÌÍ@¡ÚL´®–Ÿ@¡ÚLÌÌÌÍ@¡ÚT›ÇÇ@¡ÚLÌÌÌÍ@¡Ú9°ˆ0ê@¡ÚLÌÌÌÍ@¡ÚF g°ì@¡ÚLÌÌÌÍ@¡ÚIQJË@6šÔ,<Ÿ@6 Ýc{Mj@2sS÷ÎÙ@2oFM¼xu@2“t¼@1ü£8¬9@2!:’£S@2" Ue @2!:’£S@25T>úÐ@2!:’£S@21>x<Üè?}õ¬#„­?™¹w/óª\?“–fù&Ëù?‹úq¹Ë§×? §ÃÚ‘? õ?Lo?}x—™h ?~á=õ–…?èSöÒ7Í<@nùèÒhÈ@Ÿcxƒ6Ìà@Ü@¤‡¸Qì@¤‡ß;dZ@¤‡¸Qì@¤‡ÿ—$t@¤‡¸Qì@¤‡¸»@¤‡¸Qì@¤‡âëC@¤‡¸Qì@¤‡&€J@¤‡¸Qì@¤‡S&Â@«{¦éxÔþ@«{º^5?}@«{¦éxÔþ@«{ 'RTb@«{¦éxÔþ@«{’䎊r@«{¦éxÔþ@«{ŒÌÌÌÍ@«{¦éxÔþ@«{:û~’@«{¦éxÔþ@«{ŸåÉ@8£g ù l@8}¿HÌ@4‡ÎÙ‡+@4ªÍžƒä@3Ÿ²-V@3˜üPHð@3+xFÜ^@3 £× -=q@3+xFÜ^@38e”¯O@3+xFÜ^@3A4êJŒ?3ßa=„?•¼¦|Ó1?›Ì~” #?’èÞ㬱_?œÑÎ$ôïÔ?žMdzr?¢Æ÷Xê†?›44]Åùt?šˆFy® -?˜® ™¥g?˜ÈÀWTŒá?ª`1`Wâã?£Ë…®ýW™?—ì;!ðß?—M3§´ ?‘®« Ó¤“?–¨¬:­÷?™ þg¿@@@@@$@(?ð?ð?ð?ð?ð?ð¿\¨ód¿€ëÍ^?dt²ë°?và';Ïß@¤‡ ˜Ô…}@«{˜z¬dÝ?„8 ]Å?‡s¹U§ˆ?ø‹&˜€˜@³à68o@Ÿk/§°Þç@Ý@£¾D›¥ãT@£¾DÝ/ @£¾D›¥ãT@£¾F§ï²@£¾D›¥ãT@£¾D›¥ãU@£¾D›¥ãT@£¾EÉä@£¾D›¥ãT@£¾CñA \@£¾D›¥ãT@£¾DM:“@¥ïª~ùÛ#@¥ïª=p£×@¥ïª~ùÛ#@¥ïªÀƒo@¥ïª~ùÛ#@¥ïª~ùÛ#@¥ïª~ùÛ#@¥ïªÀƒo@¥ïª~ùÛ#@¥ï«¹Œ~(@¥ïª~ùÛ#@¥ï«P°ò}@3šÔ,<Ÿ@3¡aä÷f@.{"Ðå`A@.zîcŠ @-N—Oß;@-NV“u@,åÉä@,~BZîc @,åÉä@,}!ÿ.Hé@,åÉä@,}IQ‚©’?|öOÿÝ?¾¢`ƒ?‘*"AaIÐ?‹ë¤½?‡á?‘õbÐ\?ÛF»0?|öOÿÝ?’ aÒ¹zï?|™,Ž!?Y‡…—Ø?ÝIMÎ?ˆ9²0?‚oÁÆÜ§ö?Œ¬2aå?‚† SFò?ƒ!Ë *(?†µ°jÆÃ?†Óß -tõ@@@@@$@&?ð?ð?ð?ð?ð?ð¿£G€?1[Ò:°?(36’k´?·³YX@£¾DÉÆü&@¥ïªÑçt?H캲d ?1ð½þdŒ?ŸL ¢Y"?p–ñ}—R@Ÿf÷e¬î@Þ@£áîzáH@£áç+ J@£áîzáH@£áõÜÆ?@£áîzáH@£áù³Ð|…@£áîzáH@£áöâëC@£áîzáH@£áë¬q ³@£áîzáH@£áîcŠ @¥J•$Ý@¥J‘hr°!@¥J•$Ý@¥J”ã¼Ó[@¥J•$Ý@¥J©*0@¥J•$Ý@¥J°ò{³@¥J•$Ý@¥Jˆ Ô•@¥J•$Ý@¥J‹6z‘@7Âò䎊@7¾óMj@3Iº^5?@3ÁTÉ…ð@2Ct¼j~ú@2>ŠqÞi­@1á:’£S@1á‚©“ á@1á:’£S@1àªdÂø8@1á:’£S@1áÎ_p?š•§q!U?’ -ܦ%Ö?š®ìZ-­l?r*ž¾Ž?’Þäi]i?”éëÀÍ?‘â%ì˜ ä?“6SÇ{Ó?˜ÎEψCÛ?”Ò}“® ?’pP‡È»?—œ­ÛpùÄ?¤±AK\Þ ?•±ŽnBTß?šÒÅšnê?‡•ó¨–ˆ?ŽNîV˜C&?‹aÊ•TI@@@@@$@,?ð?ð?ð?ð?ð?ð?;œü ¿\/¦)–?e³1tã ß?M»ïw>e@£áïŸü@¥JŒègÎ?€xAsÈR*?kàÄÈÊ#?õ´^±“†k?ο–ôÂ@ŸlÙY¯œ¸@ß@Ÿè6E¡ÊÁ@ŸèE¸Qê@Ÿè6E¡ÊÁ@ŸèÑQò@Ÿè6E¡ÊÁ@Ÿè)9êÝZ@Ÿè6E¡ÊÁ@ŸèD2ÊW¨@Ÿè6E¡ÊÁ@Ÿè4¼Éf@Ÿè6E¡ÊÁ@Ÿè9¾x@£èýó¶F@£è î#I+@£èýó¶F@£èû†š@£èýó¶F@£è —*ó@£èýó¶F@£è%¼#ÿ@£èýó¶F@£è ‚-@£èýó¶F@£èÃpô@7µS&Á¾@7¬ƒ @2°Ä›¥ãT@2œê7m>p@1ù7KƧð@1ï%2»í^@1:Ô,<ží@14<{ã¬@1:Ô,<ží@17Ý‚bp`@1:Ô,<ží@16V)eüS?…nDyB Ã?öÒk_ã?”E—ÐÈø‚?Œ?tk¨?’\UýÅ?“‘CDb?¥—å–?žœð'2ã?šdÌwª¸¹?÷’X`&?’)®²½šP?”·üw#?¥Õ6Ù -?ޏïáì•q?‰ýø‘î?„c¶QÌÀõ?Šq~y¾?ŠZÃæv'@@"@"@@7@3?ð?ð?ð?ð?ð?ð¿UÜ›³ž?QǺ4?Fþ3¨î°v?Ez´êÕçµ@Ÿè=œg @£èzžÆ?iB™ R…M?[uÝ ñ;$?ÒMÕhCâ?ªÐ6¥Ú“@ŸnœÞtå¨@à@¬gÔýó¶F@¬gÖ“v@¬gÔýó¶F@¬gàù k»@¬gÔýó¶F@¬gâ\(ö@¬gÔýó¶F@¬gαÄ2Ê@¬gÔýó¶F@¬g¾ß¤?æ@¬gÔýó¶F@¬g¿Š ß@­[íV@­[ï²-@­[íV@­[áaä÷g@­[íV@­[Ñhr°!@­[íV@­[þÒˆÎp@­[íV@­\ -¦L/‚@­[íV@­\ …ðoi@6VšÔ,<Ÿ@6TÉ…ðoi@3û Iº^@3ûÚQÎ@3§KƧïž@3¥Â\(ö@3._oÒ @3@¾ í(@3._oÒ @3'éùrH@3._oÒ @3#ñA [À?…ÅBðrç?‘Ü„ Þ(£?œrôeEÜ?Œ:Z2‚b?¤vNh/?ŸlgŽ|*?|¬Çëý ?—8©$ -"º?ž¿cS?‘E:PXdÅ?˜Op¢‘¬?•lÓªü<?†DJ~_–?­[C½³i?—M3§´ ?†ü¢q+ÄU?—_ŒMŸ]D?ž„ýŸÒ`Ø@@@@@*@"?ð?ð?ð?ð?ð?ð¿pcU*t?wŽI›Î?Pë]–©Ù?Aß]î‰<@¬gÎÆè¡@­[úüg¼v?lëûÀÖ?a£Á©9ò?Öcÿ¯•Ó?Ç—?õ·U@ŸeJ“(˜@á@§’n—P@§œí‘hr@§’n—P@§‹¹Œ~(@§’n—P@§B&€I@§’n—P@§CÉîËû@§’n—P@§3©*0U@§’n—P@§,1&é@§^©xÔýô@§^°å`A‰@§^©xÔýô@§^{çl‹D@§^©xÔýô@§^DÝ/ @§^©xÔýô@§^ºîcŠ@§^©xÔýô@§^ÜwškQ@§^©xÔýô@§^Ä?åÉ@7L]cˆe”@7A×Ûô‡ý@4—+ Iº@4¶µ '»@3×ï²-@4 ³Ð|„¶@3&YJôðØ@2Óä%®æ2@3&YJôðØ@3ù k¹@3&YJôðØ@3®záH? Eˆ‡ðó‹?±è&Ô¸?¾ã°±ÞV?Äß$È×ç?¼ s:¢?³ìixU3?Ž=fA:?½¡†r6ê ?çh¤„]¿?Á\BÓâ9?ĉO’iïÓ?ºÕ¾F}«$ ?`yz|Ž¿a@§w[©@§^¸óyk'?€O©?y¯–>Š~e?Âý·c…Z?¸w‰Å“@Ÿaî«ÅŒ@â@¥zݲ-V@¥zÝó¶E¢@¥zݲ-V@¥zÞ5?|ï@¥zݲ-V@¥zÞž™@¥zݲ-V@¥zÞ í(@¥zݲ-V@¥zÜPHð@¥zݲ-V@¥zܾߤ@®Ëå`A‰@®Ëå`A‰@®Ëå`A‰@®Ë·Xâ@®Ëå`A‰@®Ë&éxÕ@®Ëå`A‰@®ËÎ_@®Ëå`A‰@®ËoiDg@®Ëå`A‰@®Ë4êL@2zqÞi­C@2zdÂø7´@.=²-V@.=cˆe”¯@-]ó¶E¡Ë@-^Ñ·Y@-b¶®~@-=Ùb·@-b¶®~@-JôðØE@-b¶®~@-Çâ‚@¸?É^³Dw'?Ï[äeæ?ÿ £‰¸9?¶*WFÑ?ÐbMçê_x?’˜‰%F²?‘N÷J’?6) }’ë?‘ ·èf?NÂò‚Ì`?€cPßQª?Œ¾»•lŽ?‚‹¡8*ú?ƒ¦$H?†£îž«î?†Ë¢L1Ù@@@@@"@?ð?ð?ð?ð?ð?ð¿Mf"†À>ñëÑÀ€?+L‡Ê¥ÏP?0 -ŽüÚ>¿@¥zÜðÙðð@®ËìÝ~@?:GÄÂÛ3>?>wkè·çÎ?pèªg{u?t6ÒµM£@Ÿs…žz,@ã@¬çÊ=p£×@¬çË…¸R@¬çÊ=p£×@¬çËC•@¬çÊ=p£×@¬çÆÜ]c‰@¬çÊ=p£×@¬ç˹Œ~'@¬çÊ=p£×@¬çË'»0@¬çÊ=p£×@¬çËC,¥@§ÿr° Äœ@§ÿs¶E¡Ë@§ÿr° Äœ@§ÿufÏAó@§ÿr° Äœ@§ÿuöý!ÿ@§ÿr° Äœ@§ÿtã¼ÓZ@§ÿr° Äœ@§ÿt,<ží@§ÿr° Äœ@§ÿuöý!ÿ@6ÞHè§æ@6ß—$tS@3+ Iº@3´9Xb@2~V“u@2hÛ‹¬@1¸DЩ*@1¸_ö”G@1¸DЩ*@1¹ùrGF@1¸DЩ*@1·ü¹#¢œ?‡YÍ_?’«p~v]Ù?’ -N»A3?Œåvæ" ?‘èÒ§ˆ„Å?‘îƒÔ1a?ˆÿÀ)T¿Æ?”üjÒÒtþ?‘ŽütÅÒ(?½¶³±×ò?‘Ð¥uv@£#hõÂ\@£#hÙ˜ä9@£#hõÂ\@£#h’÷ï8@›H33333@›H33333@›H33333@›H4fdµù@›H33333@›H6óáä@›H33333@›H/tçaÎ@›H33333@›H,¾AýÌ@›H33333@›H.væÑ@1žHè§æ@1ž\‘ÑN<@,{"Ðå`A@,u; $¨´@,dZ¬@,-’Ò„@+žžš@+ŸÍ„ÊÛ@+žžš@+ Ef¦Ù@+žžš@+ Ç:¼”q?É^žP¬!?y —“ú@?‘=uÐF¾Þ?‹ØÆ|€Ñ?‘%V¸772?ÝÍŽ$“?ÐbMÝn½?’kcc??¡dc?¢E?Y“ÐÃ|?þ†AùЊ?låƒ,?€feãt²1?ŒÃ}]É}?‚¦‹©¶u?ƒä²§MJ?†Æyu­¦¯?†–— )º`@@(@(@*@6@5?ð?ð?ð?ð?ð?ð¿Q»9n\¿6ÉÍ_?3[²ɾ?5Ùm y@£#i£†=@›H.8\ÅØ?BeZÿIx?D²»óÉú?€W.ù¸qm?‚w Oòœ`@Ÿs€m@å@ í¸Ôýó¶@ í¸ÔW×H@ í¸Ôýó¶@ í¼”Ü@ í¸Ôýó¶@ í»ïq„à@ í¸Ôýó¶@ í»Ú—@ í¸Ôýó¶@ íÇôt€h@ í¸Ôýó¶@ í¼˜D¤@¦2,‹C•@¦2,‹é±ï@¦2,‹C•@¦23¶š@¦2,‹C•@¦2.n»U–@¦2,‹C•@¦2.3˜âÚ@¦2,‹C•@¦2,R@¦2,‹C•@¦2/Ágšé@4Ç>«6z@4È^µ+ù«@1€ Ä›¥ã@1|,7\dþ@0ä¼j~ùÛ@0ßt½ËçÜ@0OO „M@0CüýÅ@0OO „M@0Eû–ž8@0OO „M@0JÂ4OÚ(?|¬Æ Væ?{X`(’b?‘"zùì?Œò¹nPE?˜œG€(M ?‘ž&>7?|¬Æ Væ?’å[ƒA÷‹?‘F¼æÞÀW?…K.w?š`¹¯0l×?”ÆQ_{?‚«Kµ¶??ŽêÂ7q?ƒ”süw"?ƒsÑËùQ?Šœ -áØ‡Í?ˆ”ÈO„@@@@@4@6?ð?ð?ð?ð?ð?ð?V [??¯þ#p?Pp.ýˆø?0ÓŽ+üÙÈ@ í»ãÍ—@¦2-OW?oKÀù·?P=ÜvÈ•)?èéëï8?¥Âλš™@Ÿeu/É‚O@æ@ ‹ó¶E¡Ë@ ‹ó¶E¡Ë@ ‹ó¶E¡Ë@ ‹ôaxý@ ‹ó¶E¡Ë@ ‹ôÀ\0@ ‹ó¶E¡Ë@ ‹ôýýP@ ‹ó¶E¡Ë@ ‹ò/+@ ‹ó¶E¡Ë@ ‹ò9Æë-@¤`ËC•@¤`ËÆ§ïŸ@¤`ËC•@¤`É“y@¤`ËC•@¤`Ë ³À@¤`ËC•@¤`ÌHOT@¤`ËC•@¤`˜ӌÅ@¤`ËC•@¤`ËØÃ™@4­¥œàv@4­ÈãL?4@0áhr° Ä@0âu%F -@0—ï²-@0˜·žŸ±@/ÿåÉä@0¼÷ðŠ@/ÿåÉä@0À @/ÿåÉä@09Åhà?}@T˜ÁÎ¥?ð^Kñ?‘=|x”;¡?‹«F§B ?‘î‡?Ú^8­Ç?}@T˜ÁÎ¥?’ ¤{¾?‘p‹»à?-õ(ƒ½?ßM$rÈ?kÆŠîÜõ?‚;X8?ŒÑb×¶@?‚¹O¼¹ÝX?ƒQÚBnåž?†­Jê˃?†¥<ï˜à@@&@*@ @8@7?ð?ð?ð?ð?ð?ð¿,áâÉ>ñ(k?3zžk"N”?=Û¬äµØ@ ‹óiSÄ~@¤`Ë×Íér?Sa=n˜?1“ w¿J-@ †ŠÀƒo@ †…†òs@ †ŠÀƒo@ †~àJ×@¬  Ä›¥ã@¬ &fffg@¬  Ä›¥ã@¬ #1§@¬  Ä›¥ã@¬ !Cc;@¬  Ä›¥ã@¬ .Ô§½'@¬  Ä›¥ã@¬ 'y®¨@¬  Ä›¥ã@¬ &mT2§@7Ì]cˆe”@7ËfŠä@3žÙ‡+@3F:`ˆ@2çKƧïž@2â^P:}ö@2”mÅÖ8†@2‹»'ðÚ@2”mÅÖ8†@2“‹r–ö@2”mÅÖ8†@2”¬Ohhð?‰çõ×eµM?ãØƒ ?‘‹cerí`?ºÛ.ðìØ?”5'Å¡?“§Ê;  ?ŠÊuq•ú?’kà»Ê¤«?‘hajƒO=?’–=k¥¶?•ÇS ÎÀ?‘›# -îз?‰lÛÐNÉ#?‘8üô´»?´KWQûÝ?†sX¢ê?!ä-«¿C?Fß= 1@@$@$@(@9@5?ð?ð?ð?ð?ð?ð¿LÀ„Ð?*¸6(€?D}ò¨s%?R¹†.âÞ@ †ƒ;t¦y@¬ (M®†?cÍéÓÝu?sjhYç?ƽCËJ0?ä1Iï–;@ŸjÏ”¼@ê@¯gï²-@¯}/Ÿ¾@¯gï²-@¯mí(Œæ@¯gï²-@¯n.±Ä3@¯gï²-@¯nóMj@¯gï²-@¯dÂø7µ@¯gï²-@¯fYJôò@«åÐå`A‰@«åÏ\(õÃ@«åÐå`A‰@«åØFÜ]@«åÐå`A‰@«åÓÝ—ö*@«åÐå`A‰@«åÕ%F -¦@«åÐå`A‰@«åÓ àÞÒ@«åÐå`A‰@«åÒ×sü@5N쿱[X@5A ²•éâ@2GÎÙ‡+@2P Ä›¥ã@1PA‰7KÇ@1TSŽóMj@10–»˜Çã@16YJôðØ@10–»˜Çã@10©*0V@10–»˜Çã@1/¾vÈ´:?µÕjùq®p?“¤bDÒ¼*?’#ç}iïë?‘öJî¯Ê®?‘oNÅ’+?‘¦‘=W?ˆÿÀ)T¿Æ?› —/Ù‘?’€fç½Î?“ ç¥Íç&?‘x9ξÞO?‘ ‡#é -´?¹8¿íxš?ŒË›Í‡Çq?‚ù…žÄ`x?„•ˆG’Z¾?†ïRÉv‘Ñ?ˆ‹”âó@@@@@*@*?ð?ð?ð?ð?ð?ð¿q"NÁ!?Jó©º0?\ÖÑÓRü?@ úÕ]¶ò@¯j!«@«åÒÜà ?n328ow?bžöÅ«{¯?Ð`š*… ë?À†ÿ°4@Ÿq“œ±¢@ë@¯ÅËÆ§ïž@¯ÅÎV“@¯ÅËÆ§ïž@¯ÅÃîÕ¨ô@¯ÅËÆ§ïž@¯ÅÃð2Üñ@¯ÅËÆ§ïž@¯ÅÐß«U@¯ÅËÆ§ïž@¯ÅÌ7ήm@¯ÅËÆ§ïž@¯ÅÌß³@—$‰7Kƨ@—$€J˜H@—$‰7Kƨ@—$7ÿƒdï@—$‰7Kƨ@—$« y¶Ž@—$‰7Kƨ@—$¹÷èlL@—$‰7Kƨ@—$º+ç@7쿱[X@7 "<5@3; Iº^@34ÃF}¾À@2lj~ùÛ#@2gI™a”@1î_oÒ @2 ×oÇ@1î_oÒ @1âHµjœf@1î_oÒ @1âÝ×ny?‡©½(‡üÐ?É3ðèF?‘ð°ˆÔd?—.ê{„±>?“ðY®3Bå?–J¢"þƒ?ñ3<' ?”9E†ìC?‘¨$þâWÚ?¢šà‹ˆ‹?–†OŠR^?˜±jñ -?‡Ù$PUdG?Ô¦O‹?…¢|~±†!?‡aDr€Ä?A´`Òlÿ?ŒÃœØúøÌ@@$@@,@8@7?ð?ð?ð?ð?ð?ð¿;I0½`?zÍ‚ìÔÀ?7_Ú;ÿ?E›5Ù@¯ÅͪÑ~±@—$ı¤|?WÆ †ëã?föÈ…>A¹?­„D¯¨Ð»?É®VÅ0~@ŸgLÀ¡Ý~@ì@¢®Ä“t¼@¢®Ã× -=r@¢®Ä“t¼@¢®Æ?@¢®Ä“t¼@¢®Áä÷eÿ@¢®Ä“t¼@¢®ÅÖ8†Y@¢®Ä“t¼@¢®µÂ\)@¢®Ä“t¼@¢®¦1ø @¬^¸Qì@¬^ãS÷Ï@¬^¸Qì@¬^u%F @¬^¸Qì@¬^ýŠÚ»@¬^¸Qì@¬^ÃÉîË@¬^¸Qì@¬]ø}¿H@¬^¸Qì@¬]ßË’:+@3`ØDЩ@3_ìVÕÏ«@/³t¼j~ù@/¶»˜Çâƒ@/wOß;d@/vE¡ÊÀƒ@.­úCþ\’@.¹e+ÓÃ`@.­úCþ\’@. ëíúD@.­úCþ\’@.†ÏAò×?|öOÿÝ?:LÓá -í?”B 'nr?’9ñ9¶ò8?”¶q fì?œs[Îæz?|öOÿÝ?’&u÷E»@?’TÖ©E?’RÖò?” E®!—?Òƒ~/[™?‚‹¡8*ùÿ?ŒïQ¼º“ã?…/‡ÙX·³?†3_¾ˆ?‡Õ˜]–GÄ?‰®ââP\@@@@@&@(?ð?ð?ð?ð?ð?ð¿m8ʳϿr1·ƒ?`¿öŒ´-l?`‡AtFÙ@¢®¾ -WÀÃ@¬]þ_Öóù?~qA|yÞ?}ö÷ÿ À @Ía£§i‘@6¼+¨D@ŸdQ#ü~@í@­ÎÁ‰7KÇÁ.„€@­ÎÁ‰7KÇ@­Î¤µÜÆ?@­ÎÁ‰7KÇ@­Î¯ùrGD@­ÎÁ‰7KÇ@­Î’¼£@­ÎÁ‰7KÇ@­ÎÙè>BZ@­ÎÁ‰7KÇÁ.„€@£Ï\(õÃÁ.„€@£Ï\(õÃ@£áò×r@£Ï\(õÃ@£ÍÒñ©ý@£Ï\(õÃ@£Ék¹Œ~@£Ï\(õÃ@£Ú…‡“Ý@£Ï\(õÃÁ.„€@8ëµsê´Á.„>¤µÜÆ@4 Iº^5@4 uöý!ÿ@2ìj~ùÛ#@3:û~‘@2L¿±[W?@2gsüPH@2L¿±[W?@2Ahr° Å@2L¿±[W?Á.„NÜC,¥@8J¨?²š¥Z#'f?¥¬ã×a6H?žE 2#Å?¶Ëvö@›@8Ù@8J¨?¶¬HðºDŸ?®`)Ô¤Ü?°?Í{%¼?°Ý aKå¯@8û—@8p÷?¬©Eä„m?©¨¤•£ ‰?°Y¹VϪ·?³G]•ÈJa@8 Ø@@@@*?ð?ð?ð?ðøøøøøøøøøøøøî@¤—Oß;@¤™‡+@¤—Oß;@¤—ö+jè@¤—Oß;@¤˜“t¼j@¤—Oß;@¤˜bMÓ@¤—Oß;@¤–¡aä÷@¤—Oß;@¤–ý!ÿ.@¡–É7Kƨ@¡–È´9X@¡–É7Kƨ@¡–ÈŒç°@¡–É7Kƨ@¡–É7Kƨ@¡–É7Kƨ@¡–ÉQ‚©“@¡–É7Kƨ@¡–ÈË’:@¡–É7Kƨ@¡–ÈXy=Ù@5p4mÅÖ8@5oªÍžƒä@/¸“t¼j@/¸“t¼j@-†éxÔýô@-†ö”Fs‚@+Aò×t@+Ÿ¾vÉ@+Aò×t@+ªÍžƒä@+Aò×t@+–»˜È?‚á²Olºü?äm°û0Ž?‘(¥¿á?‹µ™eU!µ?ðÌÇßgé?´âµÇ>¬?‚á²Olºü?’›ÈÖÝ?Œqç©Fü?6) }’ë?Ø¥²À<(?PS2K¯™?‚¯­Ù¤Áµ?ŒÖ -ÄȲ?‚† SFò?‚ìxqC?†špk Y?†©b/bJö@@@@@*@&?ð?ð?ð?ð?ð?ð¿?ƒØ¿Ò±‰À?*H*?ù?ž:®B@¤—ï…"Ý@¡–ȱÉ‚?8ýžV\â?;I£¨øI>?{‘l»~ló?0">±éƒoð¿bLJ˜?CeÑ9êy©?Gó`@Ü÷–@ªØ±më·:@«9Z¼?aÇ}·q÷T?e<_%n ?Ï»ƒ^ƒ4?ÎtIå‰D@ŸdFâåç@ð@­¸çl‹C–@­¸è1&éz@­¸çl‹C–@­¸éxÔýô@­¸çl‹C–@­¸éº^5?@­¸çl‹C–@­¸æéxÔÿ@­¸çl‹C–@­¸áò×s@­¸çl‹C–@­¸ã•&@¨ñ&éxÕ@¨ñhr°"@¨ñ&éxÕ@¨òþÅm]@¨ñ&éxÕ@¨ñÅ@¨ñ&éxÕ@¨ó@N¤¨@¨ñ&éxÕ@¨ô¢3œ@¨ñ&éxÕ@¨÷€4mÆ@4Ñ|ÚQ@4Ñ·Xâ@2¸r° Äœ@2·KƧïž@297KƧð@27ï²-@1á:’£S@1Þߤ?åÉ@1á:’£S@1ÞHè§æ@1á:’£S@1ÝÌcñA ?|öOÿÝ?4ë©$è‰?‘âTÀÊS“?Žl¢¦µ¥?‘ñ•/m£{?‘m×e\»?|öOÿÝ?“[¡ŽuœÙ?‘ú-8ûõö?’:u.ý ?‘†óèJL\?‘:i€ÑìÂ?ƒ´],mÖ,¤?)F››˜@­¸æ=§ú@¨óŒ?16?V5z•µç?IÃTÆé§Æ?¸õ)þÚÕL?  uEl9¦@ŸfŸ¢Ï×ý@ñ@®;dZ@®|í‘h@®;dZ@® -JŒM@®;dZ@®tSŽò@®;dZ@®Ñë…¸@®;dZ@®ôFsØ@®;dZ@®Øï4Ö¡@§4îzáH@§4îzáH@§4îzáH@§5!ÿ.Hê@§4îzáH@§5êJ‹@§4îzáH@§5 ~($ @§4îzáH@§4ü¬1&@§4îzáH@§5•%@3kµsê´@3k/ìVÕÐ@2!hr° Ä@2$Ý/@1F“t¼@16_Ø­«Ÿ@1YŒ~($ @1<64ê@1YŒ~($ @1«6z@5ÈQë…¸@1xr° Äœ@1wéùrG@1U`A‰7L@1S àÞÒˆ@0kxFÜ^@0i*0U2b@0kxFÜ^@0jÚ¹õY´@0kxFÜ^@0j’£S&?|öOÿÝ?]àÛ‘?’>¯\¾¦?Œ<…ÓÆÝ?‘PÊÑ<Ým?æöæ×t?1·†Æjñ?’7Îf¬ps?‘t‰WZñ?èÊ\då?‘®7Ö=^9?ó‹P=´?‚ÂÌ]å?ŒöOÿÝ?ƒíÈm½!¿?„†YÊ’È?‡YÍ_?†å·ÑfWà@@@@@ @"?ð?ð?ð?ð?ð?ð?>a#¿2…{?4å¼ïÑ?,6DÀ>ü@«Ô¡»œ»P@®„ë®é?Tûþ|Ø÷?L ñ¬®Ú!?µ0眭öã?£._ŽM‹@ŸgS1r¿@ö@¢Ý©ûçl‹@¢Ýž¸Që…@¢Ý©ûçl‹@¢Ý­¸ºÇ@¢Ý©ûçl‹@¢Ý¬²•éá@¢Ý©ûçl‹@¢Ý¬~($ @¢Ý©ûçl‹@¢Ý£S÷ÎÚ@¢Ý©ûçl‹@¢Ý¤÷eý‹@¢¤²-V@¢¤)ûçl‹@¢¤²-V@¢¤;dZ@¢¤²-V@¢¤b¶®}@¢¤²-V@¢¤"œwšk@¢¤²-V@¢¤ðº@¢¤²-V@¢¤rGE9@8–šÔ,<Ÿ@8‹)^ž@2.5?|í‘@21$Ý/@1_²-V@1`:û~‘@0…œàu÷@0‚‚@·€4@0…œàu÷@0ƒn—P@0…œàu÷@0‚ÃÉîËü?…ÅBðrç?‘6 '8?‘&Øç?‘?ŒÖ -Äȱ?’<_+fjä?‘m×e\»?‘â%ì˜ ä?’p RN%Î?ŽËÜ¿€?ø,~[´?’pP‡È»?’ Óº^?‹f°ùr[‚?pù51íÒ?Š6EŸòÙ?†ü¢q+ÄU?°4\ɵ?‹&¸ê±fÂ@@@@@*@(?ð?ð?ð?ð?ð?ð?Z?ÖAè¿o4;u!?Zb?ª5 ?PœÑÿ@@¢Ý¤æ¡<$@¢¤ü$\?z©Š”95?mª´âYÞ®?ùH¢‰ _?Ö_éÆ@j@ŸkOÚm“@÷@¨pøÔýó¶@¨p÷ÎÙ†@¨pøÔýó¶@¨pù³Ð|„@¨pøÔýó¶@¨pùè>B[@¨pøÔýó¶@¨pùe+ÓÃ@¨pøÔýó¶@¨pøºÇË@¨pøÔýó¶@¨pù k¹Œ@ª¯²-@ª­V@ª¯²-@ª±&éxÕ@ª¯²-@ª®æ1ø¡@ª¯²-@ª¯Ÿ¾w@ª¯²-@ª®¾ß¤?@ª¯²-@ª¯Aò×@6zqÞi­C@6yÎ_oÒ@0° Ä›¦@0Â䎊qÞ@/|¬1&ê@/|žì¿±\@.¸7´¢3œ@.·$tSŽô@.¸7´¢3œ@.·$tSŽó@.¸7´¢3œ@.·>«6z?ˆÿÀ)T¿Æ?Čۨ1A?‘=?ùKh?‹ä†€{6è?îú/´`?ÍàÊaùX?}Ñ¿ž,?’ ,øÕC©?Å)Ì_“?e”[|ú(?Ö§­îQD?lINõÕ„?ŽâS[ÞDí?Œáò¯ž¼ù?‚¸“Îè ø?ƒ†+ Å?†µ°jÆÃ?†¯Mž684@@@@@&@(?ð?ð?ð?ð?ð?ð?1.¨ ??fû€?$iú=A­z?{h£Ìaž@¨pø­¬–@ª®Ms_f?C*2л?=»w9Åù&?‹;íö#Ô?ƒçj×”ƒ@ŸiwíºÄ@ø@¢)°£× -=Á.„€@¢)°£× -=Á.„€@¢)°£× -=Á.„€@¢)°£× -=Á.„€@¢)°£× -=Á.„€@¢)°£× -=Á.„€@šÀ¹XbNÁ.„€@šÀ¹XbNÁ.„€@šÀ¹XbNÁ.„€@šÀ¹XbNÁ.„€@šÀ¹XbNÁ.„€@šÀ¹XbNÁ.„€@7Žì¿±[XÁ.„>¤µÜÆ@4{ Iº^Á.„M‰ûçm@4"-VÁ.„QnÙ‡@3uµsê³hÁ.„NÜC,¥@3uµsê³hÁ.„NÜC,¥@3uµsê³hÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøù@®¿€@®¿€@®¿€@®¿€ƒn˜@®¿€@®¿€N¤¨Á@®¿€@®¿£n.³@®¿€@®¿b¶®|@®¿€@®¿~ùÛ"Ñ@®2° Äœ@®2-V@®2° Äœ@®2:)Ç{@®2° Äœ@®2½<6@®2° Äœ@®3œ¾à@®2° Äœ@®2-V@®2° Äœ@®4¼@5šÔ,<Ÿ@5R½<6@0Ìí‘hr°@0ÍŠÚ¹õZ@/÷Oß;d@/øy=Ùd@0 -0U2a|@0 -’£S&@0 -0U2a|@0 -™0¾ î@0 -0U2a|@0 -çÕfÏB?}Ñ¿ž,?Qdöÿô¼?‘\H{gX ?‹ó#ƒt£?‘¿ÐÅu?À­Õß}º?}Ñ¿ž,?’u¦ieõ–?ð{¥âdú?Hª¦ºón?øóéM Ÿ?M\³Ù“@?‚¸“Îè ÷?ŒïQ¼º“ã?‚Ö˜>µDá?ƒ¦$H?‡×7°º?‡v>ª¸ @@@@@$@?ð?ð?ð?ð?ð?ð¿9òÆ€?2{-Wp?2¶Ä:nGg?'N”\ðÛ@®¿€×I@®2Ñî½(?R°ei&8U?G×pG0} ?²`çAn º?œ» -Ïï"Ó@Ÿg4eÚyö@ú@¤¨^¸Që…@¤¨^ùÛ"Ñ@¤¨^¸Që…@¤¨\wškQ@¤¨^¸Që…@¤¨]/Ÿ¾@¤¨^¸Që…@¤¨`ù kº@¤¨^¸Që…@¤¨`4mÅÖ@¤¨^¸Që…@¤¨_±[W@@¥ A‰7L@¥5?|ï@¥ A‰7L@¥¬1'@¥ A‰7L@¥\‘ÑN@¥ A‰7L@¥i­BÄ@¥ A‰7L@¥ 'RTa@¥ A‰7L@¥oÒó@7T xFÜ@7RëC,¦@2Ô›¥ãSø@2ÓŠ Þ@1ù7KƧð@1óÉîËû@1QÞi­BÄ@1Q·Xâ@1QÞi­BÄ@1P6âë@1QÞi­BÄ@1PU2a|?Ž=fA:?‘­b š=?“ýª‘À?Œ‚èõЊ?’êÔÒ?‘¦‘=W?€‚ñêã ?–øÐ°€l?”ïZºœ·?‘jýÚXÜ?‘ô 5Y?‘T¾_Þ?’ž²¢# Y?†¡HŸÊç?† - Ðló]?ƒË´ÔC¶¼?ˆ -¿„r©Ý?‡Õ˜]–GÄ@@@@@,@,?ð?ð?ð?ð?ð?ð?)ʬ{°?4Æïà?1šuÿ„j~? Ðïräë•@¤¨_ý0Šö@¥ùÓÂW?OªÂ(ˆòÐ?Bmêóþ÷?Ÿ?]ês¨?‰À¡¿ ~@Ÿj6IM#3@û@­ó4¼j~ú@­óÈ´9W@­ó4¼j~ú@­óž5?|î@­ó4¼j~ú@­óÆö”Ft@­ó4¼j~ú@­ó§l‹C•@­ó4¼j~ú@­ó_Ø­«Ÿ@­ó4¼j~ú@­ót¯O „@«¹{çl‹D@«¹}ó¶E¢@«¹{çl‹D@«¹kàÞÒ‰@«¹{çl‹D@«¹^($ x@«¹{çl‹D@«¹~ÒˆÎp@«¹{çl‹D@«¹X7´¢3@«¹{çl‹D@«¹i7Kƨ@8™*0U2b@8–_Ø­« @3sS÷ÎÙ@3·€4mÆ@2×ï²-@2rMÒñ©ü@2–ý!ÿ.I@2§ï²-@2–ý!ÿ.I@2*³g ù -@2–ý!ÿ.I@23üPH?­g;+³ût?Íê[º_¹P?Ì nŽæ+?ÊbàÒfgµ?Èÿˆ‰Ûã?Ì,af2 ?Œs¤DÅÐ?ÐAµ#Ã(?Än;ÔIÆ ?Ï—X÷®–€?Õ {Å·?Ó@¤šž”.?‹?ü}(´2? ·õzúÂ?’úz."?¨ŸŠOºÌ™?¢}ÉTãvÃ?º˜$¬‚Í@@@@@,@,?ð?ð?ð?ð?ð?ð?˜2‹ê2À¿sÖÉœ?„† ¯PÍP?d#¾~87‘@­ó6îæÕ`@«¹x±Ì? ZðÂObs?xúÈ£9%?å¾3,›59?˜Ë¬€B\@Ÿ_¿Ï¶n@ü@¬\¬1'Á.„€@¬\¬1'@¬8bMÓ@¬\¬1'@¬>ùÛ"Ñ@¬\¬1'@¬1N;Í6@¬\¬1'@¬?¾vȵ@¬\¬1'@¬FÂ&€@¬¾nzáHÁ.„€@¬¾nzáH@¬¾i7Kƨ@¬¾nzáH@¬¾gE8ï5@¬¾nzáH@¬¾g“Ý—ö@¬¾nzáH@¬¾n¤¨ÁT@¬¾nzáH@¬¾oAò×@9kµsê´Á.„>¤µÜÆ@4» Iº^@4¦lô!.@3çKƧïž@3ØÁTÉ…ð@2á:’£S@2ÒëC,¦@2á:’£S@2Ûšu&@2á:’£S@2Û…¸Qì@8J¨?˜óV“,M?™ûР'®?™¼”Ý‘l??›‚Oã<?šWDáÌ· @8J¨?› Öü{?ÏtP°*?œR6ŠÂU?—uG<Ê?•lÓªü<@8p÷?’;WZŸÿÔ?“>û{Ñø~?‰E^uŠš?ŠEÝ‹N?–¨¬:­÷@@@@,@(?ð?ð?ð?ð?ðøøøøøøøøøøøøý@Ÿ¥ãSøÁ.„€@Ÿ¥ãSø@Ÿë041@Ÿ¥ãSø@Ÿ9Ù}@Ÿ¥ãSø@ŸÛçÕÑ@Ÿ¥ãSø@Ÿì"µ²Ä@Ÿ¥ãSø@Ÿ©¹Ã¥Å@£ZæéxÔþÁ.„€@£ZæéxÔþ@£ZÓH³%â@£ZæéxÔþ@£Z»cÓàù@£ZæéxÔþ@£[ã£5/@£ZæéxÔþ@£Zô$'6@£ZæéxÔþ@£ZôM>Rü@9:qÞi­CÁ.„>¤µÜÆ@4T›¥ãSø@4_|í‘€–@3ÒÐå`A‰@3ÌCFO4@2ó&Á½¥@2æ4»èÃ@2ó&Á½¥@2Ì^!c3@2ó&Á½¥@2Î<†+¦@8J¨?•á‰â7«é?§Vo‚?“EÓÁ˜Ž?¦ßœÚªAó?®>Ëxÿn)@8J¨?’_ê´¼#?¢ÈÎë1Ö?‘xR$;Xy?¤QŠ¡•j{? põ]ö“@8p÷?Œ¬2aå?¡»‚º»?‘O´2é«?—¯“úàú›?•Z ¬P…@"@ @@2@1?ð?ð?ð?ð?ðøøøøøøøøøøøøþ@£!^5?|î@£!lIº^5@£!^5?|î@£!Iá°‰ @£!^5?|î@£!V‡+ @£!^5?|î@£!bø7´¡@£!^5?|î@£!YÛ"Ðå@£!^5?|î@£![W>«6@¥š ÌÌÌÍ@¥™Ü¬1'@¥š ÌÌÌÍ@¥š ô!.@¥š ÌÌÌÍ@¥š`A‰6@¥š ÌÌÌÍ@¥š -³g ù@¥š ÌÌÌÍ@¥š -qÞi­@¥š ÌÌÌÍ@¥šï²,@8 ]cˆe”@7üàuöý"@3°Ä›¥ãT@3¹ 'RT`@2²-V@2•‡“Ý—ö@2O „M@2Š Þ@2O „M@2@·€4n@2O „M@2©*0U2?±Á1È]?“`xþðê@ŸrýTPw@@¦¾bÐå`B@¦¾N¸@¦¾bÐå`B@¦¾e¸Që@¦¾bÐå`B@¦¾]—ö+l@¦¾bÐå`B@¦¾ezxl"@¦¾bÐå`B@¦¾eÌó@¦¾bÐå`B@¦¾eãYôÇ@œ¦Å¡ÊÀƒ@œ¦»ŽÜ¡f@œ¦Å¡ÊÀƒ@œ¦½¥ž@œ¦Å¡ÊÀƒ@œ¦—Xâf@œ¦Å¡ÊÀƒ@œ¦¡–R½<@œ¦Å¡ÊÀƒ@œ¦•ÈÓoÛ@œ¦Å¡ÊÀƒ@œ¦°+6ÿ@7è†YJôñ@7æRcH@3‚° Ä›¦@3z¬1'@2¬j~ùÛ#@2®Ov_Ø®@1ýcˆe”°@1öµ '¼@1ýcˆe”°@1ùÂåÌ/ý@1ýcˆe”°@1÷•ÜWK´?£‚ƒåuCb?–:ð»}TÇ?‘RsÈW?’èÞ㬱_?é>&óÄý?±l8á?€”ëû·«?¤OíÄ?•Q²rz¢ù?—êöªDH?’‡¤Óú]?’ á©ú†—?Ÿ -ãlqbY?“Ø/‰ #?˜‡¦*3?‰Ò–(?ŠV©Þ'f‰?Œ!×]ð@@@@@$@.?ð?ð?ð?ð?ð?ð?j´Wòš¿e6-•)?`´$7 -–«?Y„w烡@¦¾bzè *@œ¦© SÌÜ?v¦9ÿ‡?€ÌŸâ"I¢?ã÷•f?û”Çó¨@Ÿoܪxú@@ŸdvÈ´9X@ŸdwKƧð@ŸdvÈ´9X@Ÿdz‹¥€’@ŸdvÈ´9X@Ÿd‚¶‡S@ŸdvÈ´9X@Ÿd‡DA´y@ŸdvÈ´9X@Ÿdt]ðX‹@ŸdvÈ´9X@ŸdsÛÆ5@£Ÿfffff@£ŸfšÔ,=@£Ÿfffff@£Ÿf..@£Ÿfffff@£Ÿf¶DÉ@£Ÿfffff@£ŸV&åÛ1@£Ÿfffff@£ŸfS‡B@£Ÿfffff@£Ÿe›=È@4VšÔ,<Ÿ@4UíÆå¬"@/ÂÐå`A‰@/Ï%ºÅW@/Œ1&éy@/§êv¨â™@.kjçÕfÐ@.yõC @.kjçÕfÐ@.k%½ø@.kjçÕfÐ@.jèEi{?€‘gQÚÃ?Ï*åŽß?‘MÚÜÖ„¬?‹ýmñëOº?íOà¡™2?Ã9H[áŒ?|çµB &€?’ -wÉ\Ço?¨PqÞlg?VÝch¸?×IÉ»Ba?Sü D¢¨?‚¬®eà?ŒÞ¸ºeq?‚ƒ KKã?ƒÍ©&?†­Jê˃?†¯©ï\3@@$@&@"@5@7?ð?ð?ð?ð?ð?ð?½ãà¿K0‚©à?SÿîfÖy‹?^—c¤Í@ŸdyŠðö<@£Ÿc±)æ;?sãÜB»¯'?ˆ>,‘C?óê P,ö@ QÝÅ@ŸgeãD>5@@¢åãS÷Ï@¢âïäào@¢åãS÷Ï@¢ôêJŒ@¢åãS÷Ï@¢ç¯·é@¢åãS÷Ï@¢îæ1ø¡@¢åãS÷Ï@¢ë]6j@¢åãS÷Ï@¢æU˜ø@a©ûçl‹@aŠÿ_Ë@a©ûçl‹@a° Ä›¥@a©ûçl‹@aº^5?}@a©ûçl‹@a‡Ë)_@a©ûçl‹@aò©/=@a©ûçl‹@a‹›M ¹@7G>«6z@7-i~ÝU‰@2|í‘hr@2 -Ížƒä&@1{Ƨï²@1‚\(õÂ@0ÔmÅÖ8†@0ÐbMÒñª@0ÔmÅÖ8†@0ÑA"jœ@0ÔmÅÖ8†@0О7'L?Ž\Õl6Ò?™¿µ´¿1´?™™w4fà¨?˜Ë;Äõ6?æú ¯_Ñ?—ú'H¸?‘ 1˜Ó ?––ïFHÇN?šï/>¬¹’?¤¥cSÑßÑ?ž†J¥Y&Í?æß­¹Ð)?…϶ ¡œÀ?“êXÔ #{? ;ŠaÙ?’ª=˜Å?’y +5G?—Œ—jc­@@@@@.@*?ð?ð?ð?ð?ð?ð?U£@6Â?0nD˜?UŠÔr;žÕ?:ØŽ‘T^@¢çŽ×±ò@aŒÓhÁ?v(ôMÆ$¾?\¿êç¾DÀ?á!CËÜ„ˆ?¢æFwN†@ŸhöûÎÇ@@Ÿóì‹C•Á.„€@Ÿóì‹C•@ŸõÄ›¥ãS@Ÿóì‹C•@Ÿõcˆe”@Ÿóì‹C•@ŸõÅo@Ÿóì‹C•Á.„€@Ÿóì‹C•Á.„€@ž¢+ IºÁ.„€@ž¢+ Iº@ž£È´9X@ž¢+ Iº@ž£S÷ÎÙ@ž¢+ Iº@ž¤{J#9Â@ž¢+ IºÁ.„€@ž¢+ IºÁ.„€@3àØDЩÁ.„>¤µÜÆ@0f‡+ J@.Í5¨Xy=@/S¶E¡ÊÀ@-ª¦L/ƒ{@.Š#9Àëî@,¡½¥œá@.Š#9ÀëîÁ.„NÜC,¥@.Š#9ÀëîÁ.„NÜC,¥@8J¨?šÏD²öå ? ±ubÊÅ5?­dÒ¦Ó 3@8Iç@8Ù@8J¨?¢²Ö¤}Ð?ŸÀh¡º?О:hØ÷@8S@8û—@8p÷?›ì8h z=?‹‘+-/Ý?³úÜfK/Ñ@8 Ø@8 Ø@@@?ð?ð?ðøøøøøøøøøøøø@¢aW -=p¤@¢aT¼j~ú@¢aW -=p¤@¢axl"h @¢aW -=p¤@¢a|‘ÑN<@¢aW -=p¤@¢acñA \@¢aW -=p¤@¢aN}Vlô@¢aW -=p¤@¢aYõY³Ñ@¬åCn—@¬åL1&é@¬åCn—@¬åU$Ü@¬åCn—@¬åES&Â@¬åCn—@¬åZ6âë@¬åCn—@¬å@·€4@¬åCn—@¬å /ƒ{I@7Ç>«6z@7ÆÏAòØ@3f‡+ J@3WeýŠÚº@2®ùÛ"Ðæ@2”%®æ1ù@1𖻘Çã@1Ô xFÝ@1𖻘Çã@1ÍVlô!@1𖻘Çã@1È´9Xc?–ªÎ­¡?œf¨Db?­ß -Ú¹ `?‘CÀ><¹?²i=Í—Ž?·ãöâ?1·†Æjñ?•@¼Cк?±„ -9œ×?˜® ™¥g?œ××€§©? ª w³ -?³&Ô,ô?i-ý-›…?”ù‰ÚÞ©)?”AXÄ|åy?Œ8¸wx¯?гá‡}@@@@@&@*?ð?ð?ð?ð?ð?ð?p;á ¿‡CŒ‹Õ€?fû‰F¼‘?|£OP1ƒå@¢a^(°}@¬å7ÃÀª?ÔákI”?šã´ÇÛ?å«K„u¹@0ã» ä´º@ŸdïB»U¸@@¥ ÌÌÌÍ@¥ Iº^5@¥ ÌÌÌÍ@¥ë…¹@¥ ÌÌÌÍ@¥ w1Å@¥ ÌÌÌÍ@¥ŠqÞj@¥ ÌÌÌÍ@¥Ëû¶@¥ ÌÌÌÍ@¥ L˜_@¬D/²-@¬D/²-@¬D/²-@¬D9³Ð|„@¬D/²-@¬D8*™0¾@¬D/²-@¬D3©*0U@¬D/²-@¬D0°ò{³@¬D/²-@¬D.ŠqÞk@1¯O „M@1¯O „M@/Üj~ùÛ"@/ÓŽóMj@.IxÔýó¶@.@A‰7KÇ@.Bu%F -§@.7Xâf@.Bu%F -§@.6R½<6@.Bu%F -§@.6È´9X?É^òÀXæN?Kb½™×?‘Š©Nà¶?º•÷ ?“2{Áw¸?’4¶ó?ÐbMçê_x?’p RN%Î?üÓqÔN‰?’‘Ç#·X?“Al.6¸?‘yÃúCŠ?€b¡´ñ@?ŒÖ -ÄȲ?‚á²Olºý?…bv{3dZ?‡¤o„C?‰]³ß’Ý@@@@@$@,?ð?ð?ð?ð?ð?ð¿NQmmß¿a¯ 7.`?Bp’èš~Þ?2îµÄ…@¥ ÔäsL@¬D1+ÃØv?QÒQÍÙ¥?B%aˆœ?—±hôY>¾?vìgeàŽ7@Ÿs0¶ô{Ù@@­‰ Ƨïž@­‰ 7Kƨ@­‰ Ƨïž@­‰b¶®}@­‰ Ƨïž@­‰µsê³@­‰ Ƨïž@­‰>«6z@­‰ ƧïžÁ.„€@­‰ ƧïžÁ.„€@ª2(õÂ@ª2å`A‰@ª2(õÂ@ª29³Ð|†@ª2(õÂ@ª21ÑN;Ì@ª2(õÂ@ª2ðoiD@ª2(õÂÁ.„€@ª2(õÂÁ.„€@85S&Á¾@8BZîcŠ@4€ Ä›¥ã@4—§†Â&€@4'KƧïž@4Nÿ—$t@3Œ¿±[W?@3¹“ àÞÓ@3Œ¿±[W?Á.„NÜC,¥@3Œ¿±[W?Á.„NÜC,¥?}Ñ¿ž,?³è csÜ?ªËîi‹à[?³Â´K - ¸@8Iç@8Ù?3ßa=„?®úØÈ?ÀvY'äÆ?´¦MVÜú<@8S@8û—?°…T½cØ?œC ãSG?šˆøQû±?£’´w-@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø@®3Ót¼j@®3Ú¬1@®3Ót¼j@®3Ô!-w@®3Ót¼j@®3ÖE¡ÊÁ@®3Ót¼j@®3Ölô!@®3Ót¼j@®3ÕfÏAò@®3Ót¼j@®3ÑÑN;Î@¨Ý 7Kƨ@¨Ý´9X@¨Ý 7Kƨ@¨Ý¸Qì@¨Ý 7Kƨ@¨ÝzáH@¨Ý 7Kƨ@¨Ý -Àƒo@¨Ý 7Kƨ@¨Ý ~($ @¨Ý 7Kƨ@¨Ý$ x@7Ì]cˆe”@7Ë"Ðå`B@3°Ä›¥ãT@3°6âë@3>V“u@3?b¶®}V@2Ç ù kº@2ƸºÇ@2Ç ù kº@2ËW>«6z@2Ç ù kº@2ÊŒL˜`?€‚ñêã ?×s·IÓ?“ï~í"?ŽAtùð¥t?“r {#¥&?’u¹k‚=?‘â%ì˜ ä?”&OÖýæï?•Ó%Øc~?’_3Í\Æ?–G÷z}YÎ?”'q²TrQ?¬ýG¬Eq¾?Ž.]L ¼?‡}¤íþ?‡•ó¨–ˆ?$Ìj½BÙ?‘  ¶‚3@@@@@*@*?ð?ð?ð?ð?ð?ð¿X}UƒØ?'Õà?(©…^ï~y?CJõ׿¨ó@®3ÖGòÚ£@¨Ý ÜÐI±?J¨°ü”?aó¹–ÔRý?™óá÷Ö€à?»:¾•,´@ŸjRF7q@ @¥ˆãS÷ÎÙ@¥ˆá$Ý/@¥ˆãS÷ÎÙ@¥ˆú^5?}@¥ˆãS÷ÎÙ@¥ˆüú¬Ùè@¥ˆãS÷ÎÙ@¥‰¢œwš@¥ˆãS÷ÎÙ@¥ˆý¥œà@¥ˆãS÷ÎÙ@¥ˆú…‡“Þ@©4`A‰7L@©4a‰7KÇ@©4`A‰7L@©4D÷eý‹@©4`A‰7L@©4R:)Çz@©4`A‰7L@©4KP°ò|@©4`A‰7L@©47ö+jè@©4`A‰7L@©4C¢œwš@7Hè§æ@7Òñ©ûè@2‡ÎÙ‡+@2têJŒL@1nùÛ"Ðæ@1^ÿ—$t@1‚@·€5@0ìí‘hr°@1‚@·€5@0íÙb¶¯@1‚@·€5@0í!ÿ.Hé?¢F^ì¼Sð?®££VºÓ‹?¥|ÀôîÆ?¤ÊÈ8Ó~ö?£ÿ6—@G^?œ^%VÂÜN?‡YÍ_?¨úd”‘$?AFnDk?™ðyµCÒW?¬¦l—ªjÎ?œøD4f™?¢Ì÷y\ÛÎ?œ‘z¥æ?ƒ]€µ,Vß?ˆÝíá‰?‰_uñšó?‹aÊ•TI@@@@@,@"?ð?ð?ð?ð?ð?ð?tFtο|Œµr?gÖÄâ,§?TÂÝ«'¢y@¥ˆôŽ‹‚9@©4N#'Â6?‡)"²KX?x–”¥ `|?éü“ -1?Ú½èé´ÛH@Ÿk3‚~å0@ -@®{ë…¸@®{hr°"@®{ë…¸@®{ñ©ûç@®{ë…¸@®{ë…¸@®{ë…¸@®{{²þÅ@®{ë…¸@®{U2a|@®{ë…¸@®{Î_@ª…•$Ý@ª…•Â\)@ª…•$Ý@ª…•%F -¦@ª…•$Ý@ª…—Á½¥@ª…•$Ý@ª…•Y³Ð~@ª…•$Ý@ª…”‡ü¹$@ª…•$Ý@ª…•$Ý@6:qÞi­C@6;µsê´@2&‡+ J@2&®}Vlô@0éÛ"Ðå`@0ê#9Àëî@0Ê0U2a|@0ÊôðØDÐ@0Ê0U2a|@0Ê6âëD@0Ê0U2a|@0Ê0U2a|?}Ñ¿ž,?4ë©$è‰?‘"žæÆó¡?Œ2ÌUÃT?‘oNÅ’+?‘É=¦þï?žˆ2}?’#maЀ?ŽËÜ¿€?íu…XÚ?‘އ Àí?‘!U?Ð{Ò?‚† SFñ?3I¶#i?ƒ~¨õ/¥O?ƒË´ÔC¶¼?†ùadô|?‡×7°º@@@@@,@,?ð?ð?ð?ð?ð?ð¿ çp¿"°˜à?,:ŒbE?ê‡c&Bâ@®{dˆ 0@ª…•hæÏ?L4A}áX“?ð?£›tÐû”??ß‘ÞÌ;@ŸgŽî»4_@ @¢ü$Ý/@¢ü|í‘h@¢ü$Ý/@¢ü¾ í*@¢ü$Ý/@¢ü…F -¦L@¢ü$Ý/@¢ü~ÒˆÎp@¢ü$Ý/@¢üu?|í‘@¢ü$Ý/@¢ü‡»/ìW@£˜Ù‡+@£˜ß;dZ@£˜Ù‡+@£—óZ…‡”@£˜Ù‡+@£—÷§†Â'@£˜Ù‡+@£—·$tS@£˜Ù‡+@£—óZ…‡”@£˜Ù‡+@£—ð¾ í)@7`ØDЩ@7eöý!ÿ.@3J^5?|í@36Â&€I@2ï²-@2œàuöý@1ÔmÅÖ8†@1±ÿ.Hè¨@1ÔmÅÖ8†@1²-V@1ÔmÅÖ8†@1®ùÛ"Ðæ?îŠõ ?–¼åCÝqÕ?’w·†m?¢e¼€¦B?ªª–- —¾?¯JOËëæ?‘â%ì˜ ä?“H¼k#è?‘Ûcu%ç+?¬]~ɺ¶@?²uD¹â?±íj\SD¼?…™ï ufÝ?1·†Æjñ?†Æ‹™ÿ?'ã{>ô‘? \'ÎjK?¤s™·ra@@@@@,@(?ð?ð?ð?ð?ð?ð¿&_U࿈~; ñÀ?] ÎHÅX?“\úÐ?@¢ü~§6ñ @£—ôâÁÚú?z4ß= ƒ?¡jJÍëÖ?Êý8øû*@hpº@Ÿf"øp@ @£ìwKƧð@£ìw -=p¤@£ìwKƧð@£ìwKƧñ@£ìwKƧð@£ìw§†Â(@£ìwKƧð@£ìx7´¢4@£ìwKƧð@£ìvÈ´9X@£ìwKƧð@£ìuöý!ÿ@§œ,‹C•@§œ,ÌÌÌÍ@§œ,‹C•@§œ-qu@§œ,‹C•@§œ+ÓÃa@§œ,‹C•@§œ.p:û€@§œ,‹C•@§œ-ÅÖ8†@§œ,‹C•@§œ,ÌÌÌÍ@2¯O „M@2¯O „M@0®5?|í‘@0®V“t@/ü¬1&ê@/ýIQ‚©“@0‚@·€4@0n—Oà@0‚@·€4@0䎊qÞ@0‚@·€4@0\(õÃ?É`¯&xŽ?êÚÏ$?‘–”«ëó?ŒvHn&³?‘\Žýµ€7?×°ë*–w?ÐbV‡,?’LÁŒÀ´a?Ê -ä\ä?Hª¦ºón?‘Uç·Býi?ŒÙ¶êm¥?€e@ˆ’„'?ŒÖ -ÄȲ?‚¯­Ù¤Á¶?„ mŠmsi?†Ë¢L1Ù?†Óß -tõ@@@@@,@(?ð?ð?ð?ð?ð?ð¿O|ÉµŠ¿FV-x:?!{Û:Òç? ñÔ=äø@£ìwƒ¼Ã@§œ-¾ŸoG?0z;mÒ?0Æ1"¬à?YÏ|íÄ?V$ƒÆ÷ -@Ÿs3Iì.@ @£Ì²-VÁ.„€@£Ì²-VÁ.„€@£Ì²-VÁ.„€@£Ì²-VÁ.„€@£Ì²-VÁ.„€@£Ì²-VÁ.„€@£­‘hr°Á.„€@£­‘hr°Á.„€@£­‘hr°Á.„€@£­‘hr°Á.„€@£­‘hr°Á.„€@£­‘hr°Á.„€@9G>«6zÁ.„>¤µÜÆ@5é‡+ Á.„M‰ûçm@4È“t¼jÁ.„QnÙ‡@3°–»˜ÇãÁ.„NÜC,¥@3°–»˜ÇãÁ.„NÜC,¥@3°–»˜ÇãÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@¨b…¡ÊÀƒÁ.„€@¨b…¡ÊÀƒ@¨cÿU›=@¨b…¡ÊÀƒ@¨c«]Ìcò@¨b…¡ÊÀƒ@¨dQ ²•ê@¨b…¡ÊÀƒ@¨dŽ_oÒ@¨b…¡ÊÀƒ@¨ds×Ü@­àì‹C•Á.„€@­àì‹C•@­àå`A‰7@­àì‹C•@­àú¬1@­àì‹C•@­àè$ x@­àì‹C•@­à½/Ÿ¾@­àì‹C•@­à»Í5¨X@9–»˜ÈÁ.„>¤µÜÆ@5³S÷ÎÙ@5 W>«6z@4t“t¼j@3ò:)Çy§@3ó&Á½¥@3?\(õÂ@3ó&Á½¥@3Sä%®æ2@3ó&Á½¥@3;C•%@8J¨?°#M+«l?À-ýgêi?Õ5?íS?ÑÇQ£Ú¤µÜÆ@4 -^5?|íÁ.„M‰ûçm@3ä¼j~ùÛÁ.„QnÙ‡@3°–»˜ÇãÁ.„NÜC,¥@3°–»˜ÇãÁ.„NÜC,¥@3°–»˜ÇãÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@¯‰ÌÌÌÌÍ@¯‰Ó3333@¯‰ÌÌÌÌÍ@¯‰Ì”îx®@¯‰ÌÌÌÌÍ@¯‰Ä°õÇÖ@¯‰ÌÌÌÌÍ@¯‰ÐÓãË@¯‰ÌÌÌÌÍ@¯‰Îàh4@¯‰ÌÌÌÌÍ@¯‰ÍH»ÎW@–.záH@–V‡+ @–.záH@– Ns)¶@–.záH@–'_Øó@–.záH@–1iÄé{@–.záH@–9…[Ü?@–.záH@–=‹Áþn@7ý:’£@7Ô%ضF@3€ Ä›¥ã@3~eƒN3@3RÐå`A‰@3QPƒf@2‡ ù kº@2†6˜ÑQT@2‡ ù kº@2†þÚ2èé@2‡ ù kº@2†]')®R?‘w×vHf?Ý'$ü?“’i?ÀhéRr¯?’MŒý¨L ?‘Í$Rü‰?¢+é’Y?’;ø±}º?’; 3=;?‘/ÐeGÚ­?’ÅvY ÿd?’@¶^à†Õ?­j•%ø?W?Ž;¾‡]+Ð?ŠQ‘Õ¶îN?‰Yå*^?‰TÄ=ÛsA?‹¥„ð#"ç@@$@&@,@9@9?ð?ð?ð?ð?ð?ð¿S@1DØ¿P -‹r -?uš¸($í?ccÔNkð@¯‰Ï°’»@–:ãÀh?5¦k·HŒÍ?z½É§Db1?iE zŠ'T?êÉÙäó@Ÿn’yEŸü@@£ÛËC•@£Û8Që…@£ÛËC•@£Ûâ&€H@£ÛËC•@£ÛØÇâ‚A@£ÛËC•@£ÛÏ'»/ì@£ÛËC•@£Ûí\ú¬Û@£ÛËC•@£ÛíquŽ@¡½p£× -@¡ϲ-@¡½p£× -@¡³Z…‡”@¡½p£× -@¡š¹õY´@¡½p£× -@¡¡-w1@¡½p£× -@¡µÜÆ?@¡½p£× -@¡³ŽóMj@7eöý!ÿ.@6êJŒL˜@2ã÷ÎÙ‡@2Òø7´¢4@2PA‰7KÇ@29™™™™š@1½cˆe”°@1!ÿ.Hé@1½cˆe”°@1ÌcñA @1½cˆe”°@1 ù k¹?às»g;?•ìspîî?Ÿýˆh¾b ? l§s¼C^?µ<³5D|ê?´ tÓ??°¼x‡Ç…Ä?“6SÇ{Ó? Âf¶hå÷?£>û}©Ñ?·˜€×+•Á?µU- nÜ¿?ë(ðùÌ(?¢*Mõis?$¿ÀºÍ?žH®hú'$?™ì ª# Ù?¨D d}ù@@@@@,@,?ð?ð?ð?ð?ð?ð?Ȓ圿| ÄÐ}€?xšßÅÎ?}¨h®Àa˜@£ÛÙ—5øÏ@¡©-Ī,?„ËêÆö‘.?—ôPt»?Ï£€M9ôŒ?ðŒ“γ]˜@Ÿoº4éI@@¢\o²-@¢\r‹Ë@¢\o²-@¢\\¬|•é@¢\o²-@¢\L— –@¢\o²-@¢\™' ïl@¢\o²-Á.„€@¢\o²-Á.„€@šŸ²-V@šŸ“t¼j@šŸ²-V@šŸIä²åo@šŸ²-V@šŸK5 =¦@šŸ²-V@šŸ¤¬qÈ«@šŸ²-VÁ.„€@šŸ²-VÁ.„€@6ºqÞi­C@6»bŞƊ@2õãS÷ÎÙ@3#‹–…Q«@1×ï²-@1é9Ú"Ç@1zÔ,<ží@1£BSÔbæ@1zÔ,<žíÁ.„NÜC,¥@1zÔ,<žíÁ.„NÜC,¥?‰døëŽìÃ?£êëëq$?”gý1ºÒÊ?ž;9”Î¥@8Iç@8Ù?}@T˜ÁÎ¥?¨è•ÁLë?“É.ª¼.?¬Ìurí –@8S@8û—?‘J÷±A0?𫤒þnÂ?˜60<)y ?‰9ߺ›C@8 Ø@8 Ø@@,@(@,?ð?ð?ð?ðøøøøøøøøøøøø@§H‰7KÇ@§H‚\(÷@§H‰7KÇ@§H€µûû@@§H‰7KÇ@§H„7'”@§H‰7KÇ@§H…AûÒè@§H‰7KÇ@§H‘å¿7ˆ@§H‰7KÇ@§H|ñ,@•éàA‰7L@•éß;dZ@•éàA‰7L@•éáte\@•éàA‰7L@•éÞ⊚²@•éàA‰7L@•éçíc@•éàA‰7L@•éågB+@•éàA‰7L@•ê 8Ò÷¯@2¿–»˜È@2¼í‘hr°@/û"Ðå`A@/ë R  @.cn—P@._Á³x@-…oi@-~ŸG1½<@-…oi@-™9»û@-…oi@-X‘±euc?É^ÈmÔ d?†BŠV?‘ǧE1Y?É Ï„?™—½¼ûAx?œ!d¯0Ã?Ðb^57KÏ?’¼¯Ä­vþ?‘¶4Á¸i:?؈‡¸ð?œa½CÁN?™·Bùå?€—q° ?’rÁº¶‰’?ƒ–ÚÈ×·>?„nÄÙom?‹ò^óô?˜š¨îã@@&@,@*@<@4?ð?ð?ð?ð?ð?ð?rÕ?€?{ûWL@?cÁC¯¢‡Ó?k¬)Ãß@§HŠ.aç@•éñ à\‚?rJTébt«?zºo®zr?ҪȚ(Yâ?â–××E@Ÿqaæ1µo@@¦¾vÈ´@¦ @¦¾vÈ´@¦ A‰7L@¦¾vÈ´@¦!-w1@¦¾vÈ´@¦ 4mÅÖ@¦¾vÈ´@¦«6z@¦¾vÈ´@¦5?|î@¤ ûdZ¬@¤ ûdZ¬@¤ ûdZ¬@¤ û"Ðå`@¤ ûdZ¬@¤ û‹¬q@¤ ûdZ¬@¤ ûdZ¬@¤ ûdZ¬@¤ ûÍ5¨W@¤ ûdZ¬@¤ û¥ãSø@.[J#9Àì@.[J#9Àì@+æ§ï²-@+æö”Fs@,E¡ÊÀƒ@,»˜Çâ‚@,žš@,ߤ?åÊ@,žš@,ùÛ"Ðæ@,žš@,U›=É?É^³Dw'?Òç{íj?‘½ümüñ?ŒR‹w#z?÷6r In?Å{¿Ž<¹?ÐbMçê_x?’ ,øÕC©?~ËQ§?ø,~[´?Ö§­îQD?Uÿyu”#?€bMÕky?Œµ3‰;šÏ?‚2Y0âµ?‚ð'ã:ÂÝ?†–f_ÔŠŠ?†Ë¢L1Ù@@@@@$@*?ð?ð?ð?ð?ð?ð¿LËç‚¶?*ºT`?#ýNnBÝ?àåÊ?ñ@¦$0(%@¤ û˜è·ª?31R -œK?&Š9ŽGT?a·ÿ q‹ ?EïœÎ¢ð@Ÿs¹¸"@@®ûÏß;dZ@®ûËå§oÌ@®ûÏß;dZ@®ûЮ‘@®ûÏß;dZ@®ûÎfýÿª@®ûÏß;dZ@®ûÐYœÚ@®ûÏß;dZ@®ûÒܰ—d@®ûÏß;dZ@®ûÊóD Í@˜Öî—Oß@˜Öò-V@˜Öî—Oß@˜×Òã˜7@˜Öî—Oß@˜Ö÷l7>@˜Öî—Oß@˜ÖíÿÂ&3@˜Öî—Oß@˜Öõc$h¸@˜Öî—Oß@˜×«¬ß@8?–»˜È@8DÇñ‰=Å@4‚° Ä›¦@4…¦Ø¤/@44“t¼j@48ÌÐÉ:4@2ýcˆe”°@2ÿÈtäè@2ýcˆe”°@2ÿÄÔ@2ýcˆe”°@3aUè4‘?Ž\Õl6Ò?•„°¬|Äþ?“G"eÕÅ?‘%ªÁÓ€1?”Íæ!?’¢_!6]?‘lUIòr?›:Éý¢™?ß! hå?óÔÅJ~?”;àQ¢C?’ÙÖæ×dp?©ÁZ+Þ}?·Ü"/k­?“4º¡LJ?‡ª 2c%C?Œ2·Óå?Œ  óõƒ/@@(@@&@9@6?ð?ð?ð?ð?ð?ð?8ÈÚs ?V-ž\}?Q0+ -iQÝ?RJo2î@®ûÎ!¸ÎÛ@˜ÖõŽl?p†8ÈÅqÜ?pˆV¼»?ÛÇÈQÕÐÿ?Ú]& :ìØ@Ÿky‰*‹@@­ß€ƒn˜Á.„€@­ß€ƒn˜@­ß×{ãòÓ@­ß€ƒn˜@­ß«½ÔÁ@@­ß€ƒn˜@­ßqíà(Ï@­ß€ƒn˜@­ßwKtàÂ@­ß€ƒn˜@­ßoqrÒÁ@šS$Ý/Á.„€@šS$Ý/@šSfÅÃíØ@šS$Ý/@šS+•èÖ@šS$Ý/@šSÛñê1@šS$Ý/@šS&•¡ã@šS$Ý/@šS®¨º@9T xFÜÁ.„>¤µÜÆ@5Lí‘hr°@5klòX3@4F“t¼@4C{WgÃ…@3¿ò䎊r@3·¼…«ê@3¿ò䎊r@3¼Ý7w„Œ@3¿ò䎊r@3¼ÅЃìC@8J¨?¹IÜŸ¸ä? ÈX­€ø?‹úÊ?—D­>è?’êÕõÛ-W@8J¨?µÔ)Û£±Õ?•)¹ÅŠ®Ê?‘X_ªuSZ?ŸÀåÝ5C„?“úR/ô‚Ç@8p÷?Ÿeta˜î?”Ç´°‰Þi?Š¢µ‰PP?˜% ?ð -ºƒc@(@"@@3@,?ð?ð?ð?ð?ðøøøøøøøøøøøø@©ó¶E¡Ë@©Å‚’<4@©ó¶E¡Ë@©jÅÜ1@©ó¶E¡Ë@©£÷ˆË@©ó¶E¡Ë@©ƒÓ/Ré@©ó¶E¡Ë@©£Ù"Ö[@©ó¶E¡Ë@©¦HþÒ@”ewÎÙ‡@”edÛ&éX@”ewÎÙ‡@”f ½q@”ewÎÙ‡@”ef¡ xK@”ewÎÙ‡@”fLœÄ8Ë@”ewÎÙ‡@”ffQ3ô@”ewÎÙ‡@”f̽W@8òÃÉîËû@8æf7n$S@3ÇÎÙ‡+@3w2‹žÙ²@3 ²-V@2·P´^‘²@2‡ ù kº@2/©Ý3Æ@2‡ ù kº@2 Y”®@2‡ ù kº@2*iŽý¥f?§?†'„Ü¢?°Æ*º¢½¾?´5¼$Ź·?½BIÀ%?»BÄg@p?¸ìà‘Ô?·k—<8ð?»Šíž²?²6Ü„aÁé?¾‹¥S¬?ºà9 ‘<_?¿ž•¬Q ?´Ñi©½W´?¦ùÆdÝü?¤Ÿ±…Š @?©—¨[˜-H?ª¤SnÞ„?°'ÿÓYÁ@@(@*@(@9@8?ð?ð?ð?ð?ð?ð¿{¾õ€?¡î§ÏŒH?t¥–oÞ]Ó?p¿““®óf@©¬É’ñú@”fß - ?—Ž:öåÆ? /DPv1?âoCÛWœ??ž­ÇÃ@Ÿiëu¸ †@@£Êk Iº@£Êf§ï±@£Êk IºÁ.„€@£Êk IºÁ.„€@£Êk IºÁ.„€@£Êk IºÁ.„€@£Êk IºÁ.„€@¥ 3¶E¡Ë@¥ &éxÔþ@¥ 3¶E¡ËÁ.„€@¥ 3¶E¡ËÁ.„€@¥ 3¶E¡ËÁ.„€@¥ 3¶E¡ËÁ.„€@¥ 3¶E¡ËÁ.„€@8L]cˆe”@8OìVÕÏ«@4é‡+ Á.„M‰ûçm@4ÐA‰7KÇÁ.„QnÙ‡@4Eœàu÷Á.„NÜC,¥@4Eœàu÷Á.„NÜC,¥@4Eœàu÷Á.„NÜC,¥?гá‡}@8#˜@8¾:@8 >+@8Iç@8Ù?¤ÊŽaÈ]Ó@8Î÷@8i§@8Å@8S@8û—?’C߯K@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¢RU$Ý@¢RJÔ­JÕ@¢RU$Ý@¢Rb¶®}V@¢RU$Ý@¢R_Š Þ@¢RU$Ý@¢Raä÷eþ@¢RU$Ý@¢R_äV @¢RU$Ý@¢Ra±«Ç@œÇÐå`A‰@œÇÓÆ6“‘@œÇÐå`A‰@œÇÎ_oÒ@œÇÐå`A‰@œÇ®záG@œÇÐå`A‰@œÇº)Çy§@œÇÐå`A‰@œÇÍ ãuí@œÇÐå`A‰@œÇÉiÚÄE@7h†YJôñ@7ƒÄ¡Ö:@3° Ä›¦@3 =Ùb¶@2Wï²-@2]ÌcñA @1kxFÜ^@1kÚQÎ@1kxFÜ^@1l0³ò @1kxFÜ^@1kül€Â?}x—™?˜I­}ý½Ä?¤œá˜¡ðè?–O!mS -?‘÷·ÃŠ—?‘—6Ç9ìº?ž91ç |?–µ°jÆÄ?“²pÅâ-Ý?|ënÓ¿Ü?–•RAº*?‰ÄêÈÆŽù@@@@@*@.?ð?ð?ð?ð?ð?ð?v-ÊÅ¿TÄóvü?T©Ò“ÉI?O­\-‹ï@¢RVݯõ@œÇ͵i=Ø?t†øó«Sä?pCjÈ9“@?óˆ2ßö"?è ŒðÈÎí@ŸfL¯¥ @@¯Ñ¯Ÿ¾w@¯Ñ¶È´9X@¯Ñ¯Ÿ¾w@¯Ñ‚ø7´¢@¯Ñ¯Ÿ¾w@¯ÑˆðŽ@¯Ñ¯Ÿ¾w@¯ÑP©*0@¯Ñ¯Ÿ¾w@¯Ñ [À@¯Ñ¯Ÿ¾w@¯ÑrþÅm^@¦ÆY‡+@¦Æ^vÈ´9@¦ÆY‡+@¦ÆNŠqÞj@¦ÆY‡+@¦ÆVE¡ÊÁ@¦ÆY‡+@¦ÆR:)Çz@¦ÆY‡+@¦ÆJOv@¦ÆY‡+@¦ÆU¨Xy>@804mÅÖ8@8/oÒòå@4c÷ÎÙ‡@4P£× -=p@3;Ƨï²@3.Åm\ú­@3!:’£S@3 k¹Œ~@3!:’£S@3ð¹@3!:’£S@3 ùrGE?°ý¢¾Ýb?¦Ç­oK‘?§yĪoè]?¹,:‚ê?µ T.Ûo?µš‡" » ?­g;+³ût?U -£?00?“$zü¾6? vùv“?¥mÉ£&Z?«M~W`?–-¤]î§É?–P¢k"? øk@×õ{?‡9 ƒ–’”?š3 ˜ÔDš?IQ‚©“ @@@@@,@*?ð?ð?ð?ð?ð?𿌺Dc¿g2€?£X_ËC?bôU OP -@¯Ñ…"p‘@¦ÆRÖÜÓì?¡ÁO3 ˜­?{HÉÂqµ8?÷LŽ2N„?ÈÓ!À°@Ÿkìhw8ñ@@¥Èƒ•%@¥È‰º^5?@¥Èƒ•%@¥ÈaohÜ@¥Èƒ•%@¥ÈW -=p¤@¥Èƒ•%@¥ÇçE8ï5@¥Èƒ•%@¥ÈŠÚ¹õ@¥Èƒ•%@¥È³Ð|…@¢rƒn˜@¢rÄ›¥ã@¢rƒn˜@¢qÔÖ¡aå@¢rƒn˜@¢r -ôðØE@¢rƒn˜@¢q¾ÒˆÎp@¢rƒn˜@¢qéÔ•+@¢rƒn˜@¢qÙrGE9@7wâ‚@·€@7r Iº^6@3«¥ãS÷Ï@3˜­«ŸU›@2È“t¼j@2»quŽ!–@2°–»˜Çã@2„záG®@2°–»˜Çã@2‘hr°!@2°–»˜Çã@2ß;dZ?¨Ö_pP1?³T~=¥ªI?ª\=§uÌ?ÐÝð\ùN?´(Ôx±/È?ÉZjðìšÇ?’Óusÿ\Ã?º’ÔQ;®v?¬6¦eI…?Íëæ?¸MWée]{?²_¨³‡#„@Ÿk±&Ë™}@@ªÿŠÀƒo@ªÿ†ffff@ªÿŠÀƒo@ªÿ†$Ý/@ªÿŠÀƒo@ªÿ…‡“ݘ@ªÿŠÀƒo@ªÿ‰7KƧ@ªÿŠÀƒo@ªÿ‡“Ý—ö@ªÿŠÀƒo@ªÿ…¼£n@¢™\(õÂ@¢™[çl‹E@¢™\(õÂ@¢™[J#9Á@¢™\(õÂ@¢™Y=Ùb@¢™\(õÂ@¢™Wö+jè@¢™\(õÂ@¢™YJôðÙ@¢™\(õÂ@¢™W$tS@7[¹Œ~($@7\¬1&ê@3B° Ä›¦@3F -¦L/„@2ˆ“t¼j@2‹Í5¨Xy@1𖻘Çã@1òÐå`AŠ@1𖻘Çã@1òˆÎp:ü@1𖻘Çã@1òÊW§†Â?Ž=fA:?•ìspîî?’Q/Èö -®?Wø0 ¥?‘¯GàBm?”1Ÿøš?|öOÿÝ?’[ KÄ0R?’±ä?‘.“¥?‘ ÛÌÏõA?“‘k–šj?ÞïÏ·çÔ?ŽÎ"”`ù…?Ž“‹}Tz?ˆW„hðQ?ˆ”Tj«›ª?ˆ0&YÊEd@@@@@"@*?ð?ð?ð?ð?ð?ð?õ¥¿NÑ*¬?Aàž•ð?/¡Ç|Ÿu@ªÿ‡oÍN@¢™YƒfÊ?^ZdŽè+º?QP˜7¦,?»Ó–“ëö?§10P«"¿@ŸiùUq@ @¨ç@ƒn˜@¨ç@ƒn˜@¨ç@ƒn˜@¨çAÊÀƒ@¨ç@ƒn˜@¨çAä÷eþ@¨ç@ƒn˜@¨çA£n.³@¨ç@ƒn˜@¨ç?b¶®}@¨ç@ƒn˜@¨ç?b¶®~@©!hõÂ\@©!i7Kƨ@©!hõÂ\@©!hŒç°@©!hõÂ\@©!iã½@©!hõÂ\@©!h´9X@©!hõÂ\@©!i^ž @©!hõÂ\@©!i 'RU@2?–»˜È@2?Š Þ@/¸“t¼j@/¸y=Ùb@.XÔýó¶F@.Y k¹Œ~@-fL/ƒ{K@-fs×Ûõ@-fL/ƒ{K@-fs×Ûõ@-fL/ƒ{K@-fšÔ,<Ÿ?É^žQ5P‚?é¥3i£ó?‘D&»ä?‹¹GüÞõ?÷6r In?Êëüâi{?ÐbV‡,?’7Îf¬ps?œõLÁE?>\‰å‘?Ø¥²À<(?b¶­-Óx?€e@ˆ’„'?Œ».êxóÚ?‚2Y0âµ?‚þ——³§ø?†–f_ÔŠŠ?†£îž«î@@@@@*@*?ð?ð?ð?ð?ð?ð¿PÛ@FB?: tD?5Ó¥»à€?µ;d–sÄ@¨ç@L#… @©!i.õÂg?Düiôm?šÝ‰MD?…‡Ùgb7N?5ËÜ)Š@ŸsDŒ @!@£Ÿ¾vÈ´@£ž5?|î@£Ÿ¾vÈ´@£¦Â&€@£Ÿ¾vÈ´@£¥Éä@£Ÿ¾vÈ´@£¨ðŽ@£Ÿ¾vÈ´@£¤¨ÁTÊ@£Ÿ¾vÈ´@£¢ÃÉîÌ@¨_|í‘h@¨_|í‘h@¨_|í‘h@¨_U›=@¨_|í‘h@¨_€hÛ‹­@¨_|í‘h@¨_ƒˆe”®@¨_|í‘h@¨_TÉ…ð@¨_|í‘h@¨_‚3œ¿@5Î쿱[X@5ÎÒˆÎp;@1Å?|í‘h@1Âò䎊@0†“t¼@0ƒÉîËû@/­úCþ\’@/§ï²-@/­úCþ\’@/§»/ìVÖ@/­úCþ\’@/©^žš?‚á²Olºü?’ñ¼õì?’à©GMõ?[d?”§RXFÖf?“ d?}Ñ¿ž,?•íÌÖf?’F^ì¼Sï?‘ô 5Y?‘ÇmEB«?ÝÒ¥X[?ƒ]€µ,VÞ?=d­úå?‚¸“Îè ø?ƒ!Ë *(?†ùadô|?‡´*žZ}Õ@@@@@,@,?ð?ð?ð?ð?ð?ð?X‚5™(?DZY `?OÚ¥ttøî?3¨ÕPö|@£¢\±ˆ@¨_½¤?oº´›\9?Tl‹á̳?â‹ÕÞµ?³S<­œ˜B@Ÿgm{&ë3@"@©XdZ¬@©Xe¸Qì@©XdZ¬@©Xe”¯O@©XdZ¬@©X_åÉ@©XdZ¬@©XeÉä@©XdZ¬@©XbëC-@©XdZ¬@©Xem\ú­@§å§ï²-@§å§®zá@§å§ï²-@§å¥+ÓÃ`@§å§ï²-@§å¥ãS÷Ï@§å§ï²-@§å«íúCþ@§å§ï²-@§å¡|ÚQ@§å§ï²-@§å¡ohÜ@6ò䎊@6ÊW§†Â@3° Ä›¦@3ÉùrGE@3.ùÛ"Ðæ@32‚@·€4@2‘Þi­BÄ@2š¬1'@2‘Þi­BÄ@2HðŽ@2‘Þi­BÄ@2‘[W>«6?žˆ2}?”Øÿ4ÙKl?‘jh¨qã9?ŒGZ0eê;?”] -° ?’Æ÷Xê†?|öOÿÝ?—áZk·×?„¦Ô•]I?Ä…à6 -æ?–žóB» ”?“ù|ö[ÿz?‚|׿pY?Ž»žä4?‰¢Ò+ÜÝP?R *Ñn?V^²³öˆ‚?HmE£fÚâ@©â{¯?‡î@œ¹p¶Î?vdŒPUÀ?hæðr9ãl?ø¹^r׺?ß­ìRT\œ@Ÿg3JYC@$@«6H´9X@«6Gï²,@«6H´9X@«6FL/ƒz@«6H´9X@«6JqÞi®@«6H´9X@«6G¯·é@«6H´9X@«6)ùrG@«6H´9X@«64¼@®)dÝ/ @®)bÐå`B@®)dÝ/ @®) á°‰ @®)dÝ/ @®)†YJô@®)dÝ/ @®(ñø .@®)dÝ/ @®'ðU2a|@®)dÝ/ @®(F1ø ‘@7¯O „M@7ZîcŠ@3Ù‡+@2ò•éá°Š@2H“t¼j@2¾ß¤?æ@23&Á½¥@1þËûµt@23&Á½¥@1Ìàuöý"@23&Á½¥@1Ö$Ý/ ?‡YÍ_?’ñ¼õì?¦†np½Ý?”½±·CåV?¡ ª¾Tº¥?  =%º?ˆÿÀ)T¿Æ?”ºu(†¼¦?¯ÁÝï7%O?¸àú¬Öp?ÜË%8‘®?×Ö ´ S?‚2Y0â³?‘ÓP!¹p?U”šYC?Ž0 ½~ÿ? ü‡—Üä?ÀçN¬óZ@@@@@(@&?ð?ð?ð?ð?ð?ð¿pËî¬A¿©è¦?cˆÏÆ'vp?„'WÒPÑD@«6F0ƒÆ6@®)B§”¶µ?§WâËdé?Œ\¯ŠSl ?ù¿ç qL?èXÔ­4M@Ÿ[ÒN(æ@%@¨.¾vÈ´9@¨.½ó¶E¢@¨.¾vÈ´9@¨.¾ß¤?æ@¨.¾vÈ´9@¨.Àƒn™@¨.¾vÈ´9@¨.¿!-w2@¨.¾vÈ´9@¨.¾ í(@¨.¾vÈ´9@¨.½æšÔ,@©ŒÖ“u@©ŒÚŸ¾vÊ@©ŒÖ“u@©ŒÖ+jçÖ@©ŒÖ“u@©ŒÖ“v@©ŒÖ“u@©ŒÖ¡aäø@©ŒÖ“u@©ŒÖz—@©ŒÖ“u@©ŒÖ“u@5=:’£@5>Ëûµt@1GÎÙ‡+@1GOß;d@0Ðå`A‰@0ˆÎp:ü@/Bu%F -§@/Aÿ.Hè¨@/Bu%F -§@/B\(õÃ@/Bu%F -§@/Be+ÓÅ?€‚ñêã ?4ë©$è‰?‘"žæÆó¡?5~pY5?‘,IÝ Áé?ÔCXsñ?…ÅBðrç?’LÁŒÀ´a?„¦Ô•]I?Y‡…—Ø?‘ ÛÌÏõA?]#ÍìO¤?„³3Z\ð„?ŒË›Í‡Çq?‚¸“Îè ø?‚þ——³§ø?†Ë¢L1Ù?‡×7°º@@@@@*@*?ð?ð?ð?ð?ð?ð? ¸„'€¿PgWæ¼?$œÑ§ÿ§·?* -F³œï@¨.¾6¡4¶@©Œ×ô!hL?EG6:€Šn?J ’c ÂÌ?”qÓN ¥c?™õ}Öô)@ŸiU°8$@&@©îxÔýó¶@©îˆ1&éy@©îxÔýó¶@©î‰ 'Q@©îxÔýó¶@©î¿!-w3@©îxÔýó¶@©îhÛŒ@©îxÔýó¶Á.„€@©îxÔýó¶@©î¹#¢œx@ xâMÒñª@ xæffff@ xâMÒñª@ x·ö+jè@ xâMÒñª@ x‰“ àß@ xâMÒñª@ xŠ=p£×@ xâMÒñªÁ.„€@ xâMÒñª@ xĨÁTÊ@8eöý!ÿ.@8ZçÕfÏB@4…?|í‘h@4jÀƒn—@4~V“u@48_ö”F@3Þ«6z‘@3žóMj@3Þ«6z‘Á.„NÜC,¥@3Þ«6z‘@3žÒˆÎp;?ð°–Ž]?”„ö}>žå?´9äÐ9?²YÌ3ÉÛ„@8Iç?Àíif}?ð°–Ž]? €l ×Û?ÀÑdjÜ!"`?‹°»vÆr;?û¿Xx?ÿ?¸9cXæ?|Ñb×¶@?’]æ&¬º?•Œä™£K?9ˆ[ƒÄO?ý¹€äÏ?T›ô,í‡?‚„UAÕ|?ŒºÿB’?‚Ò•)úL?ƒh€| 8?‡!éðêÎ?†ÐÐUf@@*@*@(@1@0?ð?ð?ð?ð?ð?ð¾üÔöO¿4¾p!?6is;>¶I?"­ ›W@­†ñMËä÷@™÷¦ªþ´?VM=Zó?C ¼€/?»@Q u?’Ú}ê½´j@Ÿfófò7b@(@¢§|í‘hs@¢§ˆ´9X@¢§|í‘hs@¢§|j~ùÛ@¢§|í‘hs@¢§z^5?}@¢§|í‘hs@¢§x}¿H@¢§|í‘hs@¢§|64@¢§|í‘hs@¢§wÁ½¥@¤¨ñ©ûçm@¤¨äÝ/ @¤¨ñ©ûçm@¤¨ò䎊q@¤¨ñ©ûçm@¤¨ô¼@¤¨ñ©ûçm@¤¨óê³g¡@¤¨ñ©ûçm@¤¨ô¼@¤¨ñ©ûçm@¤¨õsê³h@8Y*0U2b@8?b¶®}V@3°Ä›¥ãT@3´¨ÁTɆ@3“t¼@3 Í5¨Xy@2YŒ~($ @2\í‘hr°@2YŒ~($ @2Ye+ÓÃa@2YŒ~($ @2XÇâ‚@¸?‘â%ì˜ ä?š–ÿô3?“‡ƒ×¤?Wø0 ¥?“Ýâqß?–ËÒÙI°?Â÷Üê~\?•@¼Cк?“v@á¿bî?‘3)10ÑF?’pP‡È»?–¼åCÝqÕ?¸ã>Ì'¯Ž?’®ã‘\’?—eI¥Ð6?ƒÛ®«etZ?‰/ã̽`ª?‹DVóö@@@@@&@,?ð?ð?ð?ð?ð?ð¿kqŒ1^?L'Ô(?Yšúˆ3¨?Gú[ÕŽ{.@¢§z/tš@¤¨ô&Ës­?xS)âf·g?Vz?³®f?ç-j£{Š? to¦ÿŽf@Ÿqb Ÿ2j@)@¡‚r-V@¡‚wÎÙ‡@¡‚r-VÁ.„€@¡‚r-VÁ.„€@¡‚r-VÁ.„€@¡‚r-VÁ.„€@¡‚r-VÁ.„€@ž6B\(ö@ž62-V@ž6B\(öÁ.„€@ž6B\(öÁ.„€@ž6B\(öÁ.„€@ž6B\(öÁ.„€@ž6B\(öÁ.„€@6[¹Œ~($@6aaä÷eþ@3©‡+ Á.„M‰ûçm@3¬j~ùÛ#Á.„QnÙ‡@3¡:’£SÁ.„NÜC,¥@3¡:’£SÁ.„NÜC,¥@3¡:’£SÁ.„NÜC,¥?…ÅBðrç@8#˜@8¾:@8 >+@8Iç@8Ù?}Ñ¿ž,@8Î÷@8i§@8Å@8S@8û—? ;ŠaÙ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø*@¯ ûdZ¬@¯ û¥ãSø@¯ ûdZ¬@¯ ò×sý@¯ ûdZ¬@¯ ÜPHð@¯ ûdZ¬@¯ ŸU›=@¯ ûdZ¬@¯[À6@¯ ûdZ¬@¯ ûçl‹C@¬M#× -=q@¬M.V”@¬M#× -=q@¬M,篸@¬M#× -=q@¬M*#9Àí@¬M#× -=q@¬M!£n.³@¬M#× -=q@¬M%ðoiD@¬M#× -=q@¬M8FÜ]@7VšÔ,<Ÿ@7VšÔ,< @4{ Iº^@4zîcŠ @46§ï²-@4%$Ý/@3¦YJôðØ@3N¤¨ÁU@3¦YJôðØ@3v_Ø­¬@3¦YJôðØ@3’n—Oß?–ªÎ­¡?¡lôÅø²?±Õdð?ž‹¬':î?¦ö/cÕ¥?£ÄžS^· ?£G± *Ç‚?šr’nc?¬6¦eI…?‘ǧ?D6?£w¤µÜÆ@2Iº^5?@2}¿HË@1Ct¼j~ú@1DÝ/Ÿ¾@05µsê³h@06L/ƒ{J@05µsê³h@06?¼@05µsê³h@06z–¼@8J¨?ÿ﯒?‘jh¨qã9?Œ'õ‚$5ñ?‘'¬Å™» ?ø·-/ge@8J¨?’ñ©ûçlŒ?ð{¥âdú?°‹Œ÷€?‘=d¦^™?äqÅYÈ@8p÷?ŒïQ¼º“ã?ƒÆ×q„nð?ƒžÂâk,?‡ã ËÄž?‡&üòI@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøø,@«8|í‘h@«8~¸Që…@«8|í‘h@«8~vÈ´9@«8|í‘h@«8€'RTa@«8|í‘h@«8€hÛ‹«@«8|í‘h@«8~vÈ´9@«8|í‘h@«8~ùÛ"Ò@¤Îå`A‰@¤Î Ä›¦@¤Îå`A‰@¤În—P@¤Îå`A‰@¤ÎˆÎp;@¤Îå`A‰@¤ÎÝ—ö+@¤Îå`A‰@¤ÎuŽ!–@¤Îå`A‰@¤Îë…¹@6[¹Œ~($@6ZîcŠ@1Ê^5?|í@1É­BÃÉî@1iÛ"Ðå`@1hy=Ùc@0Åœàu÷@0Ãa@N¥@0Åœàu÷@0ÃS&Â@0Åœàu÷@0ÃZ…‡“Þ?|öOÿÝ?êÚÏ$?‘K]Ã4?Uóú*˜?‘ñ•/m£{?‘ ê$4Ÿ?„F/·ÿP5?’ ,øÕC©?‘}7ˆ.Ñ?;ß $Þû?‘žˆ2}?äqÅYÈ?…íŽ(þÆ?Å9–o?„ËD(ºp?ƒì%­¹Ï‘?‡×7°º?†Óß -tõ@@@@@,@(?ð?ð?ð?ð?ð?ð?9R?<­Œ*p?-‰Ú·r"?8¬­ \#@«8ôNŠ@¤Î Zö?N>·ÖŠ?XÐ" “ -?¥½Û(³"a?¸I¼ì…3@Ÿh1B3• @-@ kÑë…¸@ kÑë…¸@ kÑë…¸@ lªdù@ kÑë…¸@ l '­5@ kÑë…¸@ kë"Õ)a@ kÑë…¸@ k×Yux@ kÑë…¸@ kÜX%‰@¡ò!ÊÀƒ@¡ò$›¥ãT@¡ò!ÊÀƒ@¡ò.ºs8@¡ò!ÊÀƒ@¡ò6úÀ@¡ò!ÊÀƒ@¡òS’-ú@¡ò!ÊÀƒ@¡òCtù‹@¡ò!ÊÀƒ@¡ò>ŸâÖ@6›¹Œ~($@6™ ’‚È0@3’ Iº^5@3h:ÒÉ -@2ÝV”@2«¡í0Lì@2‘Þi­BÄ@2v•Îó£@2‘Þi­BÄ@2€#BÓ'@2‘Þi­BÄ@2y'š„?}@T˜ÁÎ¥?~âqò4Ï?£Öú¥ø[Â?œÍÀ(¶?˜>=d4PÃ?˜ X<-/?|Ñb×¶@?”Á­iE=µ?žÚ™¡íE?—nõ[>L?—›«Ð¨†?˜Q@´$?S¬\H?–ÑÂy¡Ÿ?ŽïH?å´?›ftÛð?—)ôEbw?’à -Ñ:…8@@$@(@(@5@2?ð?ð?ð?ð?ð?ð?e&'º§¿`ã²;Ø?_´r>¼?KÍCZ?@ k×ú@¡ò –,Q?}êÅŽž‹?iB‘§€På?þ&¼?F[,?Öÿ„‡F4ª@Ÿd&ÆqfJ@.@ªV“u@ªVE¡ÊÂ@ªV“u@ªX -à@ªV“u@ªWXâe@ªV“u@ªV“u@ªV“u@ªT9Xa@ªV“u@ªT¼j~ú@¹vÈ´9X@¹vÈ´9X@¹vÈ´9X@¹uÂ\)@¹vÈ´9X@¹y k¹Œ@¹vÈ´9X@¹z¬Ùè>@¹vÈ´9X@¹uŽ!–S@¹vÈ´9X@¹yXbN@4Ù*0U2b@4Ú–»™@2xr° Äœ@2wï²-@1ö§ï²-@1öð¸»@1”mÅÖ8†@1”`ªdÂø@1”mÅÖ8†@1’©“ àß@1”mÅÖ8†@1“FÜ]c‰?|öOÿÝ?’g½þË£?‘ùé éµ??Œ ßõIyû?‘úy«ôÊ%?‘îƒÔ1a?}Ñ¿ž,?“¡ƒ[¤45?‘ª¦ZqÍ?wàËxR?”*v7¹¿?’Q½£a C?‚uÞ@>N ?²É5†±ó?‰ÕäÖ‚‚?„ìsMQ(Œ?ˆCns¥ ?‹ ˜1 D@@@@@@(@(?ð?ð?ð?ð?ð?ð¿6(=Å?+Ì|µ?!Gðs¼D?0¸>ŠIA @ªU›,~’@¹wØr?@éÜŒ¹vŒ?Pµ.`ÛÉ?¿j $??© /ä^È@ŸfqGÎ@/@¬„n—P@¬„ÕæÈe@¬„n—P@¬„‡Q¨S@¬„n—P@¬„tT]‚@¬„n—P@¬„ŠÎœ(@¬„n—P@¬„£GTÑ@¬„n—P@¬„%5ï@”5`A‰7L@”5i3€@”5`A‰7L@”5^î¶s‰@”5`A‰7L@”5f6¡@”5`A‰7L@”5g9¡V@”5`A‰7L@”5bÒjõÒ@”5`A‰7L@”5iµDõ@7Î쿱[X@7Î(¶&ê5@3Å?|í‘h@3Ç€fT?@3`A‰7L@3^À c@2”mÅÖ8†@2–¼@¸Ô@2”mÅÖ8†@2•éÏ4P@2”mÅÖ8†@2”Û{Ò|–?“mÚÑ‘>Â?L ¤Î‹?’K§øÖ?’AÙ¯,Æ?“WPJJ˜"?‘â·×æÖ?Šš¶ÈŰ?’)XZ…§&?qÍ~[À?“óLJ~:Ú?”ŠÝb°Í?’¢É×ÿ?¥¯–˜*à?Éà–(¤µÜÆ@3¦‡+ JÁ.„M‰ûçm@3å`A‰7Á.„QnÙ‡@28DЩ*Á.„NÜC,¥@28DЩ*Á.„NÜC,¥@28DЩ*Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø1@¢Ñ`A‰7LÁ.„€@¢Ñ`A‰7LÁ.„€@¢Ñ`A‰7LÁ.„€@¢Ñ`A‰7LÁ.„€@¢Ñ`A‰7LÁ.„€@¢Ñ`A‰7LÁ.„€@¢£$ÝÁ.„€@¢£$ÝÁ.„€@¢£$ÝÁ.„€@¢£$ÝÁ.„€@¢£$ÝÁ.„€@¢£$ÝÁ.„€@9N쿱[WÁ.„>¤µÜÆ@4žÙ‡+Á.„M‰ûçm@4ï²-Á.„QnÙ‡@3³&Á½¥Á.„NÜC,¥@3³&Á½¥Á.„NÜC,¥@3³&Á½¥Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø2@¯Ç¯²-@¯Ç¯²-@¯Ç¯²-@¯Ç°bMÒó@¯Ç¯²-@¯Ç¯²-@¯Ç¯²-@¯Ç¯iDg8@¯Ç¯²-@¯Ç®_oÒ@¯Ç¯²-@¯Ç­Òñ©ü@¡Ù« Iº@¡Ù« Iº@¡Ù« Iº@¡ÙªÚ¹õZ@¡Ù« Iº@¡ÙªçÕfÏ@¡Ù« Iº@¡Ù«…¸R@¡Ù« Iº@¡Ù«C•@¡Ù« Iº@¡Ù«ŸU›=@0-¥œàv@0-¥œàv@*8“t¼j@*8FÜ]c@)¥¡ÊÀƒ@)¤¨ÁTɆ@(̲•éá±@(Ë’:)Çz@(̲•éá±@(ËxFÜ]@(̲•éá±@(ˬq ²•?É^žQ5P‚?Ï[äeæ?òǹíT­?À­Õß}º?ÐbMçê_x?’r/BÖ?ˆ9²0?9ÍÇ~FÀ?ß’ºèh!?Uÿyu”#?€bMÕky?Œ°¶.Ä+Æ?‚2Y0âµ?‚ð'ã:ÂÝ?†špk Y?†špk Y@@@@@,@,?ð?ð?ð?ð?ð?ð¿Gsw6¸?ûRð?%LÚ4Hľ? ­#ðØ¿@¯Ç®†¸ÒN@¡Ù«x5D?4{QÕ î?*¡¿ ‚³¡?dЍ%̤C?O-ìb4Ç@ŸstA@3@¥?u?|í‘@¥?xbMÓ@¥?u?|í‘@¥?uöý!þ@¥?u?|í‘@¥?v4ê@¥?u?|í‘@¥?t`ªdÄ@¥?u?|í‘@¥?uϪ͞@¥?u?|í‘@¥?vz—@­Bl1&é@­BixÔýõ@­Bl1&é@­BkÓÃa@­Bl1&é@­Bl/ƒ{K@­Bl1&é@­BjôðØD@­Bl1&é@­Bn_oÒ@­Bl1&é@­BdM:’@6·â‚@·€@6¶_Ø­« @25ãS÷ÎÙ@25éá°‰ @1‹"Ðå`B@1‹quŽ!–@18DЩ*@19™™™™š@18DЩ*@19Q‚©“ @18DЩ*@14Âø7´¢?1·†Æjñ?jú‚<·™?‘@˜¯³¸?ŽVåç0ÇO?’š'†­`í?’Ýå"çX?‘â%ì˜ ä?’馿œãj?‘K54;­?èÊ\då?’…4Ü.?‘ÔÄ÷Õ?•ë þÅ? $gú‡v?ƒ{¬ÉW?ƒžÂâk,?‡2[síç?гá‡}@@@@@(@*?ð?ð?ð?ð?ð?ð¿Bn#ô¿>E¹àP?7'íß ?UL´+ˆ™¥@¥?vXî=@­BiÊ4µ`?Yµ•L®Å?s*Õ‘ÌÀ3?¸™¢Y ½?â£#¹ã—i@ŸjÙ0¿jW@4@§féxÔþ@§h´9X@§féxÔþ@§tX¼·%@§féxÔþ@§XgÖÝÚ@§féxÔþ@§†ËKö@§féxÔþ@§ W¢.@§féxÔþ@§œð{:”@–Iž¸Që…@–IüiV@–Iž¸Që…@–Io>J¾.@–Iž¸Që…@–IaJ,^%@–Iž¸Që…@–I•æÔ!@–Iž¸Që…@–I BpY@–Iž¸Që…@–IŒ ´î@5òÃÉîËû@5ê@·€4n@3›¥ãSø@2öÆ;ªÎ@2ä¼j~ùÛ@2Æ3Ƚ@2?ò䎊r@2"n;Ÿ> @2?ò䎊r@2j¤ž+ø@2?ò䎊r@2éè§Ãƒ?|¬h2:“?•°‘oN«?”²“üÎ?ަÓõVqä?«xÑŒ8 ?¦5üR‰Æå?ñ3<' ?¡qÖÏl÷? 0¦ ·Ç·?ÊÞYI?©iùðØ?¦€\ã¯d½?„Ôl‡aoÚ?‘ëÜ«ÙÝ?”ñy¦â?‰Yå*^?‘h1È^µ¿?¢<Ø9î}@@&@ @@<@;?ð?ð?ð?ð?ð?ð?‡t1Ù™€¿[ûÀƤ?Irë „UC?'J<ÿ @§zese@–I˜Î\?cPÍyñú?Aí±ÑÓË?lj¸Ö"Tf?€½s‹L¸±@ŸbA©å@5@­œ¬1&é@­œ A‰7M@­œ¬1&é@­œ›šu@­œ¬1&é@­œš–½@­œ¬1&é@­œ”Ö¡aå@­œ¬1&é@­œ”‡ü¹$@­œ¬1&é@­œ•sê³i@¬(S÷ÎÙ@¬(N—Oß@¬(S÷ÎÙ@¬(,1&ê@¬(S÷ÎÙ@¬( ²•é@¬(S÷ÎÙ@¬'ûW>«6@¬(S÷ÎÙ@¬(1[W>«@¬(S÷ÎÙ@¬(K¹Œ~(@8[¹Œ~($@8TêJŒ@3óS÷ÎÙ@3áÞi­BÃ@3q‰7Kƨ@3^!–R½<@2Ì¿±[W?@2³•$Þ@2Ì¿±[W?@2´tSŽóN@2Ì¿±[W?@2´ã¼ÓZ†? Å{¿Ž<º?œÓ¶åø×g?žˆ’By„?­‹ 'òUA?§­DÊ—Š?¨ãòC¾N”?Ž=fA:?±iˆ7î33?¹LJ98Â?Á;‘2 k…?°jú‚<·™? ‡Ü*Qk?’®Üq“£?›’qvš°“?“ÉŸ“_Æ?–¥ Ý})\? Cž#’>?©vq¦[½@@@@@(@$?ð?ð?ð?ð?ð?ð¿d¼r7¿]•H?EþÕÓß,¦?k‰$Æö)@­œ™ŒúH@¬(I¥s-?ffà:#Ù?Ê[ìx(? .zXå@?ýüÚj¤+@Ÿhvå–é@6@¨6aÊÀƒ@¨6wÎÙ‡@¨6aÊÀƒÁ.„€@¨6aÊÀƒÁ.„€@¨6aÊÀƒÁ.„€@¨6aÊÀƒÁ.„€@¨6aÊÀƒÁ.„€@©-49Xb@©-?¾vÈ´@©-49XbÁ.„€@©-49XbÁ.„€@©-49XbÁ.„€@©-49XbÁ.„€@©-49XbÁ.„€@9|ÚQ@9A [À@4{ Iº^Á.„M‰ûçm@3¬j~ùÛ#Á.„QnÙ‡@2õµsê³hÁ.„NÜC,¥@2õµsê³hÁ.„NÜC,¥@2õµsê³hÁ.„NÜC,¥?¸¤(¾ÂeI@8#˜@8¾:@8 >+@8Iç@8Ù?ª[Xxöp@8Î÷@8i§@8Å@8S@8û—?ªÞUWºci@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø7@¨E¡ÊÀƒ@¨FéxÔþ@¨E¡ÊÀƒ@¨JÑôiÿ@¨E¡ÊÀƒ@¨G{Tƒ@¨E¡ÊÀƒ@¨L`Vpy@¨E¡ÊÀƒ@¨@[)',@¨E¡ÊÀƒ@¨@ WÆ@—…Ïß;dZ@—…Óö‚ ;@—…Ïß;dZ@—…¿pøŒÁ@—…Ïß;dZ@—…Ë a @—…Ïß;dZ@—…Í -'Òô@—…Ïß;dZ@—…ÒA¡ X@—…Ïß;dZ@—…Ù1”ëj@7:qÞi­C@7;µsê´@3¡hr° Ä@3¡ÄM=$@2ñ‰7Kƨ@2ó_„yAÖ@2Š0U2a|@2Œ3»Œ-@2Š0U2a|@2‚¼ºßdx@2Š0U2a|@2“rk)C?¡ùõŠm ?“¬Âbî¾?‘‘‡¼Có?&I«$Ò>?“õz©ÕK?–¿Ù“)?|¬Æ Væ?”ÙOfÑo?‘3ühúoç?–,>¬Û,?–S60†?˜X’Ò™N_?'Æh¶[8?ܺ_ïIˆ?ŽXB:3 -?‰ÏÉ›~1¼?ŠùÅBqÐ?äSJVÉ@@,@&@,@4@5?ð?ð?ð?ð?ð?ð¿fLÙW>Åqk?bm¦÷UÕx?@úF„Ùù@¨FÂ:˜z@—…Ó¡‘?y‰<Y:?eù,u ½d?æâÚ&wl.?ÂÀU2^@Ÿlã§õ–M@8@¥Cò-V@¥CôðØDÑ@¥Cò-V@¥D+ñÚJƒ@¥Cò-V@¥D--Gð@¥Cò-V@¥D=ó‡-½@¥Cò-V@¥D'‡^Ò@¥Cò-V@¥DE²ª‹R@›j:^5?}@›j3¶E¡Ë@›j:^5?}@›i}ÇÇz@›j:^5?}@›ijå àý@›j:^5?}@›i1?"úË@›j:^5?}@›h4P‰Áo@›j:^5?}@›iFóÇþ@4-¥œàv@4* ¹„~@2=‘hr° @1ý¯o‡Þ@1§KƧïž@1_÷ï£ø@1OO „M@0ù`p)u¦@1OO „M@0ù4Ãèµ @1OO „M@0ùt· É?|çµB &€? )¬¤!,?¡0Ô?šúfŠÍ‡?š¦ˆ¶FÚS?—Ô^á/rÌ?}õ¬#„­?—ªËÄZz?ª €?‘0ÔÜ Œ_?šó-„¬ï?–~Ô|J›?…Q–e¾ö?œ…`’1?…ô{Rvâ¬?‡ yƒ‘õ?ˆ´OjöH?‡â-™aá@@$@&@$@2@1?ð?ð?ð?ð?ð?ð?÷cwq ¿£Í«R‘Ð?lhOhÿìÜ?ŒžÃæÒÁÁ@¥D u'@›iž£_5£?ŠÕêƒHHå?ª`7Pûu\@‡£–ÒMÄ@[>Œ.£Éè@ŸdD`í²@9@ª{çl‹D@ª{¥ãSø@ª{çl‹D@ª|¾ß¤@ª{çl‹D@ª|àuöý@ª{çl‹D@ª}/Ÿ¾@ª{çl‹D@ª{=ÈK@ª{çl‹D@ª{²þÅn@¤îƧï²@¤îÇ+ J@¤îƧï²@¤îÆÂ&€@¤îƧï²@¤îÆö”Ft@¤îƧï²@¤îÇï²-@¤îƧï²@¤îƵ '@¤îƧï²@¤îÇæšÔ@2=:’£@2=V”@.ðå`A‰7@.ð|„µÜÆ@.cn—P@.bÃÉîËû@.kjçÕfÐ@.jçÕfÏB@.kjçÕfÐ@.jôðØDÐ@.kjçÕfÐ@.j¦L/ƒ|?É^³Dw'?°çR;?‘.Ò®ó_ ?‹×lÇ…N9?‘ ·èf?È2I/?ÐbMçê_x?’˜‰%F²?Œqç©Fü?>\‰å‘?‘Ú‚ýc¯?r¼Jsž?€bMÕky?ŒÛÏ·+?‚2Y0âµ?‚ù8 ±^?†©b/bJö?†špk Y@@@@@,@(?ð?ð?ð?ð?ð?ð¿G.}œ ¿8É¿–¦?8 -²ÄŸ´?1?ÇõßÙ@ª|*ö\m@¤îÇO«Æ3?G òSÍì;?@V+vÇ?Š(,66?wj !C€@ŸsdBP@:@¢Ð¸Qì@¢Ð1&éy@¢Ð¸Qì@¢Ð$Ý/@¢Ð¸Qì@¢Ð Ƨïž@¢Ð¸Qì@¢Ð 7Kƨ@¢Ð¸Qì@¢Ðn—@¢Ð¸Qì@¢Ïþš@¯”ì‹C•@¯”ì‹C•@¯”ì‹C•@¯”èr° Å@¯”ì‹C•@¯”áÊÀƒ@¯”ì‹C•@¯”Ù‡+@¯”ì‹C•@¯”ØQë…@¯”ì‹C•@¯”çË)_@5Âò䎊@5ÁÞi­BÄ@1¸r° Äœ@1¶8†YJõ@0®ùÛ"Ðæ@0¬£n.²@0Vý!ÿ.I@0Q-w1Å@0Vý!ÿ.I@0PË)^ž@0Vý!ÿ.I@0R3œ¾à?ð°–Ž]?ð}óßd?ð’FB:?ð_ŒB?åt—‚XS?’ß5@?™:¤ Ø?@Ÿx6¶ÊK,@;@¡.—Oß@¡.záH@¡.—Oß@¡1ë…¸@¡.—Oß@¡&§ï³@¡.—Oß@¡5Â\(@¡.—Oß@¡)Ô•+@¡.—Oß@¡.Hè§@ ˆËƧïž@ ˆÎ—Oß@ ˆËƧïž@ ˆÄZ¬@ ˆËƧïž@ ˆÍV@ ˆËƧïž@ ˆ´¼j~ú@ ˆËƧïž@ ˆÁ–R½<@ ˆËƧïž@ ˆÃñA \@5ð4mÅÖ8@5ïU›=È@1ør° Äœ@1ÛÓÃa@@0ù7KƧð@0Ýp£× ->@0^«6z‘@0Hâe+Ô@0^«6z‘@0F¸ºÇ@0^«6z‘@0Hšu%F?|¬Çëý ?”ŸÍFÒ?¡"‰HÒur?’úˆ_šª?¢Ì|(‘¾?¡Ëæ%ðÇ?„F/·ÿP5?®€YÏP·?£¹›vp6d?•¯TÒV?©2rz%6ù?¤Wf˯?“àÕèéa‚?²ô‚èBM?¶ddÆ ?…{BÕ0Þ?ˆ¾þúWZ‹?‘øù>3}@@@@@,@,?ð?ð?ð?ð?ð?ð?J:—œ,¿u:…is?T‘¶–1 -X?gzLB…7@¡/²¨$¤@ ˆÄõÊ?qîŒÆÿ;?ƒ’‰GñS ?á@½-SÒ?ýtÔ=0é`@ŸbÞZâ?@<@¢c× -=q@¢ws¤K@¢c× -=q@¢[òt@¢c× -=q@¢G1IŽÁ@¢c× -=q@¢sÔbÏ@¢c× -=q@¢^ÜÍŠ@¢c× -=q@¢Xï4Ö¡@–[˜“t¼j@–[vÈ´9X@–[˜“t¼j@–[Ž•Ÿ@–[˜“t¼j@–[¸é»9Ä@–[˜“t¼j@–[Àø̈@–[˜“t¼j@–[¦”÷@–[˜“t¼j@–[âÐå`B@8rÃÉîËû@8kz7>!@@3» Iº^@3À,m³ -@3A‰7KÇ@3 [$5z@2QÞi­BÄ@29Øa…Š`@2QÞi­BÄ@2H=?°º@2QÞi­BÄ@2P-à r?žÕÈNAc?‘NHR­pÚ?•!È}'û)?Íxeûñ'?™> -¢; ?š½+òªª?¶(-~¢ù1?›eÛÊ@½ ?œ#“Ð:©?“4oýŸÃ?—®Yë(?œ –sPfç?|ÆÁïf^@¢h|ùæR@–[¼‰ˆ¨?‚wwb›?Ž…òÕdÁ?ó¦y›–â@¹£œ×è@ŸoÁ•ôö@=@¨‰å`A‰Á.„€@¨‰å`A‰@¨‰ov_Ø®@¨‰å`A‰@¨‰‚h Ô•@¨‰å`A‰@¨‰$Ý/@¨‰å`A‰@¨‰{µsì@¨‰å`A‰@¨‰{ÚQÏ@ Qhr°!Á.„€@ Qhr°!@ Cn.±Ä@ Qhr°!@ 9XbN@ Qhr°!@ 8l"h -@ Qhr°!@ áG®@ Qhr°!@ &€IS@7ÿ–»˜ÈÁ.„>¤µÜÆ@3ør° Äœ@3áø -à@2ñ‰7Kƨ@2á$Ý/@2”mÅÖ8†@2|í‘hr°@2”mÅÖ8†@2wl‹C•@2”mÅÖ8†@2w†Â&€ž@8J¨?§5ÈÔ—jN?Ÿya´ R?œÖ,? vÁ.þ¼å?¢†)™„}U@8J¨? ¥¬ ˆ? ÍÑtƒ!¢?¡"JîÃ!?°¯l¯Ê?°|Í@¢À@8p÷?—ƒFÛ¯/?‰Ç^)7H?‘V]9½êV?’3¨£„È?’ymícw\@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøø>@ªg÷ÎÙ‡Á.„€@ªg÷ÎÙ‡@ªg+]Ìcñ@ªg÷ÎÙ‡@ªgÔýó¶@ªg÷ÎÙ‡@ªg&šÔ,=@ªg÷ÎÙ‡@ªgC,¥z@ªg÷ÎÙ‡@ªg$Ý/Ÿ@ªÕ¥`A‰7Á.„€@ªÕ¥`A‰7@ªÑ¯Ÿ¾w@ªÕ¥`A‰7@ªÑ“¶E¡Ê@ªÕ¥`A‰7@ªÑÒòä@ªÕ¥`A‰7@ªÑP‰ 'R@ªÕ¥`A‰7@ªÑ4!-w@9}:’£Á.„>¤µÜÆ@5ÎÙ‡+@2XK]Ìcñ@41‰7Kƨ@18bMÒò@3‡ ù kº@0,<žìÀ@3‡ ù kº@0ÕfÏAò@3‡ ù kº@0ã¼Ô@8J¨?“…­tµH?œ‡ë8Ê–?™ÒµR24°?œhÈï?›wMÿIf@8J¨? 3ÝP‰j?¥EE+­?¡¡çL¤?™)Â>¡$;?¡ùŠÀs›@8p÷?îÑšˆHÉ?‰~}œ…o_?eLýÂ2G?æšÔ,<ž?’:™/ʼn@@@@(@*?ð?ð?ð?ð?ðøøøøøøøøøøøø?@«LÌÌÌÍ@«OŸ¾v@«LÌÌÌÍ@«MÒñ©ü@«LÌÌÌÍ@«N!–R¼@«LÌÌÌÍ@«L¿±[W@«LÌÌÌÍ@«L¥zxk@«LÌÌÌÍ@«L¿±[W@¥@Þ5?|î@¥@ݲ-V@¥@Þ5?|î@¥@ßoÒó@¥@Þ5?|î@¥@áÊÀƒ@¥@Þ5?|î@¥@Þi­BÄ@¥@Þ5?|î@¥@à[À8@¥@Þ5?|î@¥@ÝÈK^@6²ÃÉîËû@6±ÿ.Hè§@2i‡+ @2irGE8ï@1©Û"Ðå`@1«àÞÒˆÎ@0𖻘Çã@0ñuŽ!–S@0𖻘Çã@0òa|ÚQ@0𖻘Çã@0ñA [À?‡YÍ_?‘" Á°–•?‘¶å¤wk½?Œ^:Òf?’ðä¼_?ø·-/ge?Œs¤DÅÐ?’ùÎ {?‘Ç€˜­r?½¶³±×ò?’8,²ñ±T?ƒÁþGEÛ?„›‹ÖO?ŒÖ -ÄȲ?„+£QKù?ƒì%­¹Ï‘?‡v>ª¸ ?‡×7°º@@@@@*@&?ð?ð?ð?ð?ð?ð¿Að ?%N  ?%tƒ-xý?:ó€îì´@«Mk°|¾@¥@Þ<éßÎ?Dò/v&4û?Yù½òfµ“?œ“ê «?´xx5i½@Ÿjʧ¹/Å@@@¯ÑÞ5?|î@¯ÑÞ¸Që…@¯ÑÞ5?|î@¯ÑàA‰7K@¯ÑÞ5?|î@¯ÑàhÛ‹«@¯ÑÞ5?|î@¯ÑàhÛ‹¬@¯ÑÞ5?|î@¯Ñܞ쿱@¯ÑÞ5?|î@¯ÑÝ—ö+l@¥¦$Ý/@¥¦$Ý/@¥¦$Ý/@¥¦ðoiD@¥¦$Ý/@¥¦§ï²@¥¦$Ý/@¥¦µ (@¥¦$Ý/@¥¦?@¥¦$Ý/@¥¦E8ï5@2” xFÜ@2”¼¤@0sS÷ÎÙ@0sn.±Ä2@0Ÿ²-V@0ŸÅo@03&Á½¦@03Š Þ@03&Á½¦@03g ù l@03&Á½¦@03,¥zxl?É_ð©«?¦Ì '?‘@˜¯³¸?Œj6_?‘'¬Å™» ?‘ë´¤G?ÐbMçê_x?’7Îf¬ps?Œqç©Fü?K·‘d]?îCq$u?½y ¦Å?€b¡´ñ@?ŒÖ -ÄȲ?‚yî8Á$?ƒ!Ë *(?†Óß -tõ?†µ°jÆÃ@@@@@&@,?ð?ð?ð?ð?ð?ð¿VDIÈ&?+`’~”?Gª°gØý?1€pIm_@¯ÑÞs÷Æ@¥¦¸ûd*?Vµk5Ì(G?@‚;Ç >´?¨NJÌÛ@?w_–Š8…@Ÿrÿ>Ê?š@A@¦Ã¬1'@¦ÃÀ¹#@¦Ã¬1'@¦Ã(ð@¦Ã¬1'@¦Ã/ìVÕÐ@¦Ã¬1'@¦Ã($ x@¦Ã¬1'@¦Ã' ù l@¦Ã¬1'@¦Ã+àÞÒ‰@kY‡+@k.Þñõ„@kY‡+@k£× -=q@kY‡+@kÀhÛ‹«@kY‡+@kŒ~($ -@kY‡+@kš…‡“Þ@kY‡+@k©*/@8 ]cˆe”@7à©òï\Ø@2¦‡+ J@2™XbMÓ@2Z~ùÛ"Ñ@2<ú¬Ùè>@1ÜÚQÎ@1Õ¨Xy=Ú@1ÜÚQÎ@1ÖÜ]cˆf@1ÜÚQÎ@1Ó9Àëíú?¥Jí “^»? WZwnÖ;?± ˜Ú¿ðA?–¼A2xý?”Ôð|c¤?•ŠàuVº`?™9A¨»ý?¯lßÔìy=?¼Aå qi?¡Ð`HÇi?°ö…8Ó}?¢?Êÿ*ç?†×ÔÍ¥Èï?•ÙK°FÑ? “˜¯ÃÛ?‘¶i - ?•ƼÀÖæu?™ì ª# Ù@@@@@,@*?ð?ð?ð?ð?ð?ð?`Úüþö€?†šÈ.GÀ?FåZ)µ™ð?h² b„aÉ@¦Ã' PÓ@kun+¬@?avÖØtõ?ŠâåÃùÖÁ?ªgCeÉ?ð=ÉÇœ@ŸlrM -е@B@ªµMOß;d@ªµM‘hr°@ªµMOß;d@ªµMí(Œç@ªµMOß;d@ªµNV“@ªµMOß;d@ªµMí(Œç@ªµMOß;d@ªµLÌÌÌÍ@ªµMOß;d@ªµLIº^5@®¿àA‰7L@®¿àƒn™@®¿àA‰7L@®¿àÞÒˆÎ@®¿àA‰7L@®¿àªdÂù@®¿àA‰7L@®¿àÞÒˆÎ@®¿àA‰7L@®¿á [À@®¿àA‰7L@®¿àÄ›¥ã@0ý:’£@0üú¬Ùè>@,kƧï²@,kíúCþ\@+?;dZ¬@+?b¶®}V@*Âu%F -§@*Â\(õÃ@*Âu%F -§@*ÂZîc‹@*Âu%F -§@*œwškQ?É^³Dw'?Úþþ³?‘"žæÆó¡?‹Æ úJ-M?åt—‚XS?À­Õß}º?ÐbV‡,?’ -‰¸Ì?ŠA)Nîá?3.Ylî?Î ¯xV?hï,ðà?€bMÕky?Œ­·Ž~('?‚q6tNø7?‚æÊ¬vã?†½ª»—?†ŠúЀ>(@@@@@@?ð?ð?ð?ð?ð?ð¿GHüºà¾þ]šrÀ?æ³/ý?ZËà5û™@ªµM;È8@®¿àë¨:®?'ë5ØÁnu?*ËŸ[óË?L ̱U--?Om¦æ¢!@Ÿs’?]a@C@¨Ê…¸Qì@¨Ê…¸Qì@¨Ê…¸Qì@¨Ê‚\(÷@¨Ê…¸Qì@¨Ê„?åÉ@¨Ê…¸Qì@¨Ê†ö”Ft@¨Ê…¸Qì@¨Ê†Ü]cˆ@¨Ê…¸Qì@¨ÊƒŠ @¢0‚ Iº^@¢0ƒS÷ÎÙ@¢0‚ Iº^@¢0ˆ´9X@¢0‚ Iº^@¢0ƒ•&@¢0‚ Iº^@¢0ƒFÜ]d@¢0‚ Iº^@¢0‚MÒñª@¢0‚ Iº^@¢0TÉ…ð@5™*0U2b@5™JôðØD@2é‡+ @2ìIº^5?@2¬j~ùÛ#@2¯ „M:@2L¿±[W?@2R-V@2L¿±[W?@2PhÛ‹¬q@2L¿±[W?@2PA‰7KÇ?|¬Çëý ?Ï[äe‹w™³@¨Ê…‚"h@¢0‚³Yg?W»#[Hœ?7£9ûmܵ?·M:îä?vVqX¾ @Ÿe¤–;øÞ@D@ »@ƒn˜@ »@A‰7L@ »@ƒn˜@ »=8Qf@ »@ƒn˜@ »?2zÔZ@ »@ƒn˜@ »?}5þ@ »@ƒn˜@ »8•Äß@ »@ƒn˜@ »9N±ç.@ ÄixÔýô@ Ähr -W@ ÄixÔýô@ ÄmôŸ¨@ ÄixÔýô@ Ä„‹›\†@ ÄixÔýô@ Ä„äG³C@ ÄixÔýô@ Ät@ ÄixÔýô@ Äs—mîÿ@42ÃÉîËû@43Í…^L@0¡hr° Ä@0Xu\x’@/íOß;dZ@/åÊnæù@/¸7´¢3œ@/§ÂY¼ô@/¸7´¢3œ@/¥’8\h@/¸7´¢3œ@/¤âsù†J?}õ¬#„­?¨%àçø?‘J}+&ný?‹Á‰¯ö}?’oŽ@%“Û?“W­lH?|¬Æ Væ?’ŽT‘}ø˜?‘£ÌUò?‘µâ´Ñü?˜"ê¬X?—ø+éߊ?‚ûÿû‚ÜJ?Iþòxd?ƒw¦¯äÌ:?„]Þ­*~6?‡G2aÆgŠ?ˆ*?Q@¼@@(@"@"@0@.?ð?ð?ð?ð?ð?ð¿Vd~È?qY~mY?A¡³q¯N”?g>UVˆ‰K@ »=ÑNÚ@ Äqò}e¹?`¦mÁ,FÐ?†,! Sd?Ì]“„Sæp@RciÔƒ@Ÿef²qk@E@¬jféxÔþ@¬jg+ K@¬jféxÔþ@¬jhŒç°@¬jféxÔþ@¬jjW§†Â@¬jféxÔþ@¬jh§æ›@¬jféxÔþ@¬jfšÔ,=@¬jféxÔþ@¬jeýŠÚ¹@ òSt¼j@ òSt¼j@ òSt¼j@ òSüPH@ òSt¼j@ òR×s@ òSt¼j@ òQë…·@ òSt¼j@ òR° Äœ@ òSt¼j@ òQÞi­C@3÷â‚@·€@3ø Ô•*@0£÷ÎÙ‡@0£ê³g ù@/ãn—P@/áò×s@.õ¨Xy=Ú@.õ2a|Û@.õ¨Xy=Ú@.õL˜_÷@.õ¨Xy=Ú@.ô¯O „M?|öOÿÝ?ôÊ_?‘SŸ[ÈÙ?Œ'õ‚$5ñ?‘ §‡g¾?ß-tT?|¬Çëý ?’ ŠŠ¤Hì?™Îd0RÜ?]bËn~?ÚÌA B{?sxÙ/T?‚nâwfÿ?ŒÖ -ÄȲ?‚˜YªüÏF?‚þ——³§ø?†¼Š˜L¥÷?†Óß -tõ@@@@@(@,?ð?ð?ð?ð?ð?ð¿7P¿4JiF@?1’ ‘?ŽwF @¬jg$ø;4@ òR½Žj¡?Q~`Šqm?<¡õ¯$” ?°tmä­”?…Vº²;+@ŸfîËŸ¤@F@«ô Ä›¥ã@«ô¡$Ý/@«ô Ä›¥ã@«ô ðE×'@«ô Ä›¥ã@«ô¡ [À@«ô Ä›¥ã@«ô¡J¯{"@«ô Ä›¥ã@«ô Xߊ­@«ô Ä›¥ã@«ô N%²N@–8 Iº^5@–8 Iº^5@–8 Iº^5@–8 ¦ŽB @–8 Iº^5@–8 ;ß¼@–8 Iº^5@–8 1&é@–8 Iº^5@–8  -%@–8 Iº^5@–8 ,ädš@-zu%F -@-zu%F -@&žùÛ"Ðå@&Ÿö”Fs@%›dZ¬@%›quŽ!–@$fL/ƒ{K@$fV«Þ?¼@$fL/ƒ{K@$fYJôðÙ@$fL/ƒ{K@$fL/ƒ{K?É^¨¯Âj?Âܸ“n?‘…3:?è?‹«F§B ?èy’”&€?´O×û÷«?ÐbMÝn½?’Fó®â?}¸)"Òª?2^€ùù?Ï £mv¡?J› öWˆ?€bMÕ]f?Œ¬.гî?‚nÓ3îŠ?‚âxðÄFD?†‡[ÐJ³“?†‡I‚ÿ¯Û@@&@*@*@<@:?ð?ð?ð?ð?ð?ð¿=f‰IØ>þÝ©0?!$O¤wj>ßL]h2]>@«ô ·e+Æ@–8 D“'?0{ë2x8>ížfuÆyÖ?Z¿®E”Ïe>ÓG=¡ŽŒ@Ÿs ÷[g@G@ kò° Äœ@ kw@ kò° Äœ@ kæ0õM@ kò° Äœ@ kæ>ÿFe@ kò° Äœ@ kÞm„Œ.@ kò° Äœ@ kØbMÓ@ kò° Äœ@ k×´¢3œ@®ÿÕ$Ý@®ÿÔ¯O „@®ÿÕ$Ý@®ÿÐa÷5¥@®ÿÕ$Ý@®ÿÎI—(2@®ÿÕ$Ý@®ÿÄ”¤A„@®ÿÕ$Ý@®ÿÈ´9X@®ÿÕ$Ý@®ÿËŸU›=@4ÞHè§æ@4Úÿ_Ãq@1R Iº^5@1Eí8†@0»Æ§ï²@0¬Iº^5@@0…œàu÷@0mÈ´@0…œàu÷@0oÅo@0…œàu÷@0p-à ?}@T˜ÁÎ¥?Æ–wå1?‘m ØÆs?Œ.@miûz?’Þäi]i?‘•S‚üJ?|çµB &€?’ϹXå?ï»ðæ=‡?Š˜õ¼N0?‘I0‚ìB?ÝÒ¥X[?ƒ±`P„~V?„º{6–?ƒ^6™•±?ƒ\µT¯–?‡×7°º?‡Õ˜]–GÄ@@"@&@&@ @?ð?ð?ð?ð?ð?ð¿u³Pìê¿f­8 ?C92ÿq?T®“Ò“Ó@ kãe¼’Æ@®ÿÎ'§¼r?bÞ»³wü?tïTk"¨™?Ñþ‘~WúÝ?öAµyü4š@Ÿf²ùÍŒ@H@¡5l‹C•Á.„€@¡5l‹C•Á.„€@¡5l‹C•Á.„€@¡5l‹C•Á.„€@¡5l‹C•Á.„€@¡5l‹C•Á.„€@”"49XbÁ.„€@”"49XbÁ.„€@”"49XbÁ.„€@”"49XbÁ.„€@”"49XbÁ.„€@”"49XbÁ.„€@6(†YJôñÁ.„>¤µÜÆ@1Å?|í‘hÁ.„M‰ûçm@0²-VÁ.„QnÙ‡@0®_oÒ Á.„NÜC,¥@0®_oÒ Á.„NÜC,¥@0®_oÒ Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøI@®År-V@®Åo\(õÂ@®År-V@®ÅcS&@®År-V@®Åc× -=r@®År-V@®ÅbÐå`C@®År-V@®Ågâ‚@¸@®År-V@®Åe”¯O@¨_MÒñ©ü@¨_PbMÒò@¨_MÒñ©ü@¨_B Iº^@¨_MÒñ©ü@¨_JÀƒo@¨_MÒñ©ü@¨_9³Ð|…@¨_MÒñ©ü@¨_;quŽ"@¨_MÒñ©ü@¨_:–»@62ÃÉîËû@6/O „M@3uãS÷ÎÙ@3j0U2a|@2¾V“u@2¸ºÇË*@2”mÅÖ8†@2ˆy=Ùc@2”mÅÖ8†@2…ýŠÚ¹ö@2”mÅÖ8†@2€bMÒñª?‡YÍ_?žŽ´)D1ü?”Ä0óçî?‘£ºáõÑ?“Ýâqß?›‹ÞV‘?‚á²Olºü? îÑšˆHÉ?低NëU?¥ZÑpÉç?¡Ý¤`Ìi?¡Ö„æ5ç?…ÑTë0Ó?vùv“?‹f°ùr[ƒ?Šˆ€!B®?’¸ø‰o?’áû¦h@@@@@*@&?ð?ð?ð?ð?ð?ð¿cUŒ¦Æ¿u6#ž2?Rxõd…¦?N¥*µù@®Åi× Ø²@¨_F7¦?q V„>Ø\?mçþ±yøÂ?à†(l– ‘?ÊÔe¹rW•@Ÿe5mzÆÄ@J@¦á™™™™š@¦á¨1&éy@¦á™™™™š@¦á™è>B[@¦á™™™™š@¦áš¬Ùè>@¦á™™™™š@¦á›J#9Á@¦á™™™™š@¦á™#¢œx@¦á™™™™š@¦á™¦µ @ª¼Ù‡+@ª¼Ù‡+@ª¼Ù‡+@ª¼Ùe+ÓÃ@ª¼Ù‡+@ª¼Ø}¿I@ª¼Ù‡+@ª¼Ú¹õYµ@ª¼Ù‡+@ª¼Øâe,@ª¼Ù‡+@ª¼Ùè>B[@8Û¹Œ~($@8伤@1.5?|í‘@1.žš@0;Ƨï²@0;íúCþ\@-³üPH@-³üPH@-³üPH@-³&Á½¥@-³üPH@-³33334?¦NIÉ®š?jú‚<·™?‘ŒQ®üX?‹ó#ƒt£?‘2A¥Ø?ÛF»0?¡ÅꯨŠT?’LÁŒÀ´a?ê‰O)AT?Níú¾?ë,YÁ?e¾DQ„Q?Å 6•™ËÅ?Œþ%å_D?ƒ!A -mº¹?ƒE 8?†£îž«î?†žóB» “@@@@@,@*?ð?ð?ð?ð?ð?ð¿_!Ž¿•¤á ?Qq2–µ&?9¾‰KÐs@¦á›cþR@ª¼ÙÔtX?d“Uxvúh?Pøà6$ ?ÄÒp‹ ?š^/æ›Mò@Ÿp.å$—‘@K@«Š’ñ©ûç@«Š‘ë…¸@«Š’ñ©ûç@«Š£× -=p@«Š’ñ©ûç@«Š¾ í)@«Š’ñ©ûç@«Š„Âø7µ@«Š’ñ©ûçÁ.„€@«Š’ñ©ûçÁ.„€@•Å Oß;d@•ѳÀZ@•Å Oß;d@•Äɺ^5?@•Å Oß;d@•ÄçæšÔ@•Å Oß;d@•Ŧµ @•Å Oß;dÁ.„€@•Å Oß;dÁ.„€@2^Hè§æ@2o“ÎWÄ¿@0E?|í‘h@0/¤?åÉ@0 "Ðå`B@0 JôðØE@/Âu%F -§@/‘hr°!@/Âu%F -§Á.„NÜC,¥@/Âu%F -§Á.„NÜC,¥?Éb¿Þ6ùÛ"Ñ@ övE¡ÊÁ@ ö…ãS÷Ï@ övE¡ÊÁ@ öª™0¾@ övE¡ÊÁ@ öÐå`A‰@ övE¡ÊÁ@ ö®Hè§@ övE¡ÊÁ@ ö¹Àëíú@804mÅÖ8@7}jOv@5c÷ÎÙ‡@5]ÈK]Ì@4¶§ï²-@4«"Ðå`B@4zÔ,<ží@4^_oÒ @4zÔ,<ží@4i 'RTa@4zÔ,<ží@4lÙè>B[?õ\<4ØÉ?ÆøØö‚?­‡-¯ÅsA?³añ÷­þ? k‚ˆŸ;æ?±gU¯»aJ?êñç,ÄÄ?¦ KBI?ªBûúÈ…˜?³ç1‹ñ¹?¦OY¸¾?­‚‰%TUx?õÓâ‚:B©?’žÿ§:­?°^&Mªka?šæÚ§³Á?±¯Q—, -?®†ø.ìP´@@@@@&@(?ð?ð?ð?ð?ð?ð?…ë°Þ3X¿ƒÝy/ ?…ÙþXÚH?„è Ò@«™ÌÜb˜š@ ö¹i¶˜?‰ô ’±?@k0ÿþâ?ÚÀ‹L6G?ß²nÖÛÁì@ŸtÃëû@M@ª‚´¼j~úÁ.„€@ª‚´¼j~ú@ª‚Çp•ãw@ª‚´¼j~ú@ª‚‹ÞÚ™@ª‚´¼j~ú@ª‚u³]@ª‚´¼j~ú@ª‚Ó>å-ð@ª‚´¼j~ú@ª‚ÉØ«@”–¬1&éÁ.„€@”–¬1&é@”–E§ÉÌ­@”–¬1&é@”–"C8…@”–¬1&é@”–‘ñJûO@”–¬1&é@”–\ô(G@”–¬1&é@”–±ôëÊõ@8°4mÅÖ8Á.„>¤µÜÆ@2 Ä›¥ã@1—ºÇNɶ@1,j~ùÛ#@0Ýâ«qyR@0B‚@·€4@0ÜÏz¬@0B‚@·€4@0Ó%ìJb@0B‚@·€4@0Rß«¯g@8J¨?±v>ÅÏF?  v—á®?—Õú›?«Cç4-k?¥Ôû‡.[@8J¨?µGÍ̲„f?”t—Di˜g?œI»ÍÈtå?°ÙÜE¹ˆê?°€qjÛߢ@8p÷?±€„*¸?…±?Aeǘ?ˆûqÆàô‹?æsc`D?”0›Â~6Ë@(@@$@<@:?ð?ð?ð?ð?ðøøøøøøøøøøøøN@¤0¯Ÿ¾w@¤0¯²- @¤0¯Ÿ¾w@¤0¯ªÍž„@¤0¯Ÿ¾w@¤0­úCþ]@¤0¯Ÿ¾w@¤0¯²-@¤0¯Ÿ¾w@¤0°-à @¤0¯Ÿ¾w@¤0± ²•ê@¤«\(õÂ@¤«KƧïž@¤«\(õÂ@¤«aohÝ@¤«\(õÂ@¤«Y=Ùc@¤«\(õÂ@¤«[‹¬q@¤«\(õÂ@¤«^Ñ·@¤«\(õÂ@¤«]p£× -@8 xFÜ@8\‘ÑN<@3¡hr° Ä@3¡Î_p@2Õ`A‰7L@2Õœàu÷@2 -0U2a|@2 -…‡“ݘ@2 -0U2a|@2 àÞÒˆÎ@2 -0U2a|@2 P°ò{³?“Æ×q„nï?”êÎlŒy?‘âTÀÊS“?Œåvæ" ?“r {#¥&?‘É=¦þï?£È‰·akû?—YÜCêî?’€fç½Î?‘W×ý°A?’ºñS©YÖ?‘«VTÓ?–EÑ}?’¿½Ë‡è·?‹v'þ­X?ŒžVE’D?‹¹ÇlŒ?‰_uñšó@@@@@,@(?ð?ð?ð?ð?ð?ð?2<ê`?f¡÷Y€?#DÞzÙOB?U‘Ÿß¼Í@¤0°%5@à@¤«ZÒâ~Ó?@)Ö"T ?lòd Q`?zàÝ/÷¾?Ï“*:oç@ŸnøeÝeÜ@O@£‚‰7Kƨ@£~°bMÒò@£‚‰7Kƨ@£~îV”@£‚‰7Kƨ@£@N¥@£‚‰7Kƨ@£~ñ[W>«@£‚‰7Kƨ@£~èŒç°@£‚‰7Kƨ@£~îŠqÞj@¤(õÂ\@¤‚ØbMÓ@¤(õÂ\@¤‚³ŽóMj@¤(õÂ\@¤‚¹³Ð|…@¤(õÂ\@¤‚ÁTÉ…ð@¤(õÂ\@¤‚Ó¶E¡Ë@¤(õÂ\@¤‚غÇË@6‚ò䎊@3±&éxÔþ@2Ê^5?|í@0^vÈ´9X@2iÛ"Ðå`@/ÄohÜ@2Œ~($ @/v_Ø­­@2Œ~($ @/eýŠÚº@2Œ~($ @/Ÿ¾vȵ?1·†Æjñ?¡U¢WªÂ?¤MD¢e?¥F’ë‚ÝÌ?£”ŠFÉÇ¥?žy—™öW?}Ñ¿ž,?&”ðÚ˜?œjá{X?›çôQPL? ¨„¨ƒZ?šÏ7â4l?Œznyž-g?ŽõÕJ?‡»¢Øˆ‹?‹h¢íc„„?“¡NÙ(£(?Œ8¸wx¯@@@@@*@$?ð?ð?ð?ð?ð?ð?Œ»¤ß@¿Vîù§.?eHòªÙ>é?c]žÏÏzï@£~ÇLSÿQ@¤‚Õ9ðp?‚]°¬&tÅ?€ÎtSô÷Â?þÛ°™’@>ì˜Pr@Ÿbuä ÝÔ@P@¥rMÒñ©ü@¥rMOß;d@¥rMÒñ©ü@¥rN¾ß¤@@¥rMÒñ©ü@¥rPU2a{@¥rMÒñ©ü@¥rPbMÒò@¥rMÒñ©ü@¥rQ©ûçm@¥rMÒñ©ü@¥rRòäŽ@Ÿmò° Äœ@Ÿmó¶E¡Ë@Ÿmò° Äœ@Ÿmó3333@Ÿmò° Äœ@Ÿmîæ1ø¡@Ÿmò° Äœ@ŸmëC,¥@Ÿmò° Äœ@ŸmñÅ@Ÿmò° Äœ@ŸmïhÛŒ@2£g ù l@2£t¼j~ú@0E?|í‘h@0AA [À@.÷Oß;d@.ðbMÒñª@/åÉä@/v8†YJõ@/åÉä@/vð¸»@/åÉä@/vÈ´9X?ðO­W¬ÃÆ?‘–Œ ˆŽ ?’Gßk;m?‘Ä{Oç¿`?’ÒuèçxY?’IåŠú?ð„ƒ;0?“$i «%h?‘½ÀèÑmK?‘.“¥?“4¦{ºÕ?’vMëôUu?ð!̃?ŒÛÏ·+?‚˜YªüÏF?„Ö©Ú0?†ùadô|?‡¤o„C?ð@@@@,@*?ð?ð?ð?ð?ð?ð?I7Ý–?O_õNá?d¦¸öv?G+Â>YI@¥rQYëdÏ@ŸmîWÙ²{?(­áûˆX?UçÌ+Õ?EßAÖò?¡dw"‡ñz@Ÿs¦qgA˜@Q@©!G®záÁ.„€@©!G®záÁ.„€@©!G®záÁ.„€@©!G®záÁ.„€@©!G®záÁ.„€@©!G®záÁ.„€@œ}Á‰7KÇÁ.„€@œ}Á‰7KÇÁ.„€@œ}Á‰7KÇÁ.„€@œ}Á‰7KÇÁ.„€@œ}Á‰7KÇÁ.„€@œ}Á‰7KÇÁ.„€@9¹Œ~($Á.„>¤µÜÆ@4Å?|í‘hÁ.„M‰ûçm@3¬j~ùÛ#Á.„QnÙ‡@3Œ¿±[W?Á.„NÜC,¥@3Œ¿±[W?Á.„NÜC,¥@3Œ¿±[W?Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøR@ŸÜ›¥ãSø@ŸÜœ¬1'@ŸÜ›¥ãSø@ŸÜœö墷@ŸÜ›¥ãSø@ŸÜ¢þ¿cÊ@ŸÜ›¥ãSø@ŸÜ£m¤S]@ŸÜ›¥ãSø@ŸÜ˜ ŸÅ@ŸÜ›¥ãSø@ŸÜ™®Êç@¨ZéxÔýô@¨ZéxÔýõ@¨ZéxÔýô@¨Zç[÷ @¨ZéxÔýô@¨ZæÏAò@¨ZéxÔýô@¨Zèma-i@¨ZéxÔýô@¨ZægÃ]·@¨ZéxÔýô@¨Zæ&êÐ@1åöý!ÿ.@1åÙ/¬Â¨@0^Ù‡+@0^ž`¬ÄŠ@0 ²-V@0 =Æ¢:ò@0#ÉîËû@0%WÞ¨`@0#ÉîËû@0$9n Å@0#ÉîËû@0#¤àQô?É^ž6õP?é=ðL?‘m ØÆs?‹½3H+á?‘,kêcµ”?Ò¸QÛgv?Ðb^57KÏ?’!SP¿˜ú?¦ƒUñ…›?xx1’ó?‘Ì´×>.?^­ÿ|&Õ?€t4æ—nÐ?Œ¸UQxÌš?‚ß\3?‚ñjNÒí,?†ú{j½ì?†Â¿'Ù@@*@*@&@8@1?ð?ð?ð?ð?ð?ð¿b4J{¿P€ÙÄ/?Lð߆0£?0‚‚,—û@ŸÜU_ò@¨Zç ìë?[éó]??L5¤Õ9?²ßª+6 ç?tü¼5ºk…@Ÿs -Šôö @S@žµj~ùÛ#Á.„€@žµj~ùÛ#Á.„€@žµj~ùÛ#Á.„€@žµj~ùÛ#Á.„€@žµj~ùÛ#Á.„€@žµj~ùÛ#Á.„€@¥ Iº^Á.„€@¥ Iº^Á.„€@¥ Iº^Á.„€@¥ Iº^Á.„€@¥ Iº^Á.„€@¥ Iº^Á.„€@8¨†YJôñÁ.„>¤µÜÆ@3Š^5?|íÁ.„M‰ûçm@2gKƧïžÁ.„QnÙ‡@1á:’£SÁ.„NÜC,¥@1á:’£SÁ.„NÜC,¥@1á:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøT@¨7Ý/Ÿ¾@¨7Ýp£× -@¨7Ý/Ÿ¾@¨7Ý©ˆ”¶@¨7Ý/Ÿ¾@¨7Ý$¿Á @¨7Ý/Ÿ¾@¨7Ý®%ã@¨7Ý/Ÿ¾@¨7ÜÊRs%@¨7Ý/Ÿ¾@¨7ÜäþÄL@•î¼j~ùÛ@•î¼j~ùÛ@•î¼j~ùÛ@•î¼n&ßc@•î¼j~ùÛ@•î¼t•:Ý@•î¼j~ùÛ@•î¼\akû@•î¼j~ùÛ@•î»ÑÂñ@•î¼j~ùÛ@•œÐ(@5ò䎊@5:’£S@0i‡+ @0iM”‰b@/¯ß;dZ@/¯ç˜Å@.fL/ƒ{K@.fw„6Ì·@.fL/ƒ{K@.f4‘G$@.fL/ƒ{K@.fCìó‡0?|Ñb×¶@?ù>J|Ç×?‘@5$³_2?‹²»ø4!Ó?òë6­?¾cÞISá?}@T˜ÁÎ¥?’ã€Õ?—Ó>º¿?1Œ˜x?à!WSñm?WµfóÚ?‚o,¬qVÙ?Œ¶Ï7ƒ­)?‚v«#0ñ&?‚è$: ¦œ?†’¸%9§G?†–Ðé(Y÷@@,@*@(@<@:?ð?ð?ð?ð?ð?ð¿xC€¿3¡@?6À(æA>ô? ¥#£@¨7ÝEàÍÄ@•î¼'G¬?5"êJ›T?¢ìF,ç›?xQÙ¼Sd??5ý|FFŒš@Ÿg -È~=@U@¯8­VÁ.„€@¯8­VÁ.„€@¯8­VÁ.„€@¯8­VÁ.„€@¯8­VÁ.„€@¯8­VÁ.„€@§ üj~ùÛÁ.„€@§ üj~ùÛÁ.„€@§ üj~ùÛÁ.„€@§ üj~ùÛÁ.„€@§ üj~ùÛÁ.„€@§ üj~ùÛÁ.„€@8`ØDЩÁ.„>¤µÜÆ@3Ê^5?|íÁ.„M‰ûçm@3'KƧïžÁ.„QnÙ‡@2ý!ÿ.IÁ.„NÜC,¥@2ý!ÿ.IÁ.„NÜC,¥@2ý!ÿ.IÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøV@®#LIº^5@®#EãS÷Ï@®#LIº^5@®#NÙ‡+@®#LIº^5@®#QÞi­B@®#LIº^5@®#M(Œç@®#LIº^5@®#N.±Ä3@®#LIº^5@®#LcñA!@Ÿ1&éy@Ÿ“t¼@Ÿ1&éy@Ÿ :’¢@Ÿ1&éy@ŸüÓZ…‰@Ÿ1&éy@Ÿ:’£@Ÿ1&éy@ŸëíúE@Ÿ1&éy@Ÿóê³g¡@6rÃÉîËû@6nzáG®@3xr° Äœ@3wü¹#¢œ@2t“t¼j@2têJŒ@2\ÚQÎ@2\cñA \@2\ÚQÎ@2_¤?åÉ@2\ÚQÎ@2]\ú¬Ùè?£G± *Ç‚?’ÕOäª9ô?“mî–‚Žr?ç\Š2˜?–úc‘c?“‡SË{d—?}Ñ¿ž,?”ï©ÛÉ?“®ÂrVŽx?’„÷ò¸?•Ñ^¢?”æâ„o?­dÒ¦Ó 4?îŠõ ?† - Ðló]?‰hS—p]Ð?Œ¸ðËb?Šì¾ ;8´@@@@@,@*?ð?ð?ð?ð?ð?ð?M#à¿R §6¢?Kwü”˜ú??ã¥nW:Ê@®#LFÛ;v@Ÿý®v¢¨?cË¡`¹?d±@ô,?·ðt›jwÿ?ÃPõß“Zþ@ŸmÖݤb@W@¦Ó>ùÛ"ÑÁ.„€@¦Ó>ùÛ"ÑÁ.„€@¦Ó>ùÛ"ÑÁ.„€@¦Ó>ùÛ"ÑÁ.„€@¦Ó>ùÛ"ÑÁ.„€@¦Ó>ùÛ"ÑÁ.„€@ž4|í‘hsÁ.„€@ž4|í‘hsÁ.„€@ž4|í‘hsÁ.„€@ž4|í‘hsÁ.„€@ž4|í‘hsÁ.„€@ž4|í‘hsÁ.„€@8Bò䎊Á.„>¤µÜÆ@3|í‘hrÁ.„M‰ûçm@2çKƧïžÁ.„QnÙ‡@2!:’£SÁ.„NÜC,¥@2!:’£SÁ.„NÜC,¥@2!:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøX@«8Æ$Ý/@«8Ƨï²@«8Æ$Ý/@«8ÂuåÌñ@«8Æ$Ý/@«8¿(ñµ@«8Æ$Ý/@«8ÂpŸY’@«8Æ$Ý/@«8À²]Q™@«8Æ$Ý/@«8Â__Ä@”b¾vÈ´@”b¾vÈ´@”b¾vÈ´@”b?DÓ@”b¾vÈ´@”b ­šªf@”b¾vÈ´@”b‹Éô@”b¾vÈ´@”b I×@”b¾vÈ´@”b.*ÙÛ@5%öý!ÿ.@5&ÊŒƒž@2é‡+ @2ê¶ËœÀ¦@2¹7KƧð@2¾g1b@2œàu÷@2EPC6@2œàu÷@2TT•‰ä@2œàu÷@2gKo™è?}õ¬#„­?´œCé`?’Ö HCP@?ŒQõôð‚?‘¶,92ïd?’ª¡‰öÇ[?}—êíW?’Ô}^Ãö?‘…kÜ«?mÈuÁ¤‚?‘ª¶ô´yÝ?’)ÉlÕv?„Æxëk?ºc%ù™¶?‡RǶh¼?…ßÂ2ÇÞP?ŠJÝtѧ'?ŠüÛ‘ÖD×@@,@(@&@8@8?ð?ð?ð?ð?ð?ð¿S˜æS8¿JåÈh?3Y Ægm?4¦xü^ê©@«8Ãð—Àã@”b™¯Z¼?RïÜCu¥#?T¶TÄ ;6?±Ã)bZ£Ð?´iN#l˜*@Ÿfª Õ±®@Y@«ß;dZ@«\(õÄ@«ß;dZ@«·éù@«ß;dZ@«Ž.±Ä3@«ß;dZ@«ŠÀƒn@«ß;dZ@«Œ~($ @«ß;dZ@«ŠôðØE@ªz Ä›¥ã@ªz"Ðå`B@ªz Ä›¥ã@ªz A‰7L@ªz Ä›¥ã@ªzžš@ªz Ä›¥ã@ªz!:’£@ªz Ä›¥ã@ªz" Iº^@ªz Ä›¥ã@ªz!×Ûô‡@6#g ù l@6#n.±Ä3@1ã÷ÎÙ‡@1ä“t¼j@1K"Ðå`B@1K¹Œ~($@0Þ«6z‘@0ߟ¾vÉ@0Þ«6z‘@0ß—$tS@0Þ«6z‘@0ÞÙ‡+?€‚ñêã ?­hX™*?‘,fŸCô6?=]. ?‘héø†|?‘£.'É?ˆÿÀ)T¿Æ?“6SÇ{Ó?’¤šÜI«?‘§›ßÉîj?üÓqÔNŠ?‘êey°úà?‚ÂÌ]å?=d­úå?„ò—TËÄ?ƒR¨º“JÞ?‡ã ËÄž?‡&üòI@@@@@&@,?ð?ð?ð?ð?ð?ð¿N°†Óà¿+äªß0?4Ø–íq!#?#•ˆ#Æ\@«ŒÓO‘~@ªz"B 7?U÷þ‘%á´?CL÷¨a}?´}Õ'UõW?‡õ@Tí³@Ÿib‚]ÑÏ@Z@£ Ü(õÂ@£ àîõ@£ Ü(õÂ@£ ßXÍÈ·@£ Ü(õÂ@£ ÓB Êø@£ Ü(õÂ@£ äñx²ó@£ Ü(õÂ@£ Îj09W@£ Ü(õÂ@£ Ò ¿Sþ@˜t -=p£×@˜t÷ÎÙ@˜t -=p£×@˜súÈ@˜t -=p£×@˜søB5µW@˜t -=p£×@˜t%bWö5@˜t -=p£×@˜t(VnÈs@˜t -=p£×@˜t3_E’Ð@5wâ‚@·€@5o H˜@@1õãS÷ÎÙ@1ûÒâ=7@1U`A‰7L@1^+&ŸŽ`@1s&Á½¥@1‚¼‘"Ø @1s&Á½¥@1vÈl·@1s&Á½¥@1s‚õ꣊?~Ov_Ø­«?‘2§Çøoæ?’v=§Ó ?••ÃÖŸ"?¹ p)¶/?˜ó«mÃ?|Ñb×¶@?“"HS?°?’¨g-ÿÿ?™z7ä{û‚?–Uœ:0Û?–bc畯?‚»³hËk?–\Í‘¨iŸ?‡CÿE•¿R?—¢&àûÒ?žÆ”‰¬ôq?žï=L"Ûú@@$@ @$@:@7?ð?ð?ð?ð?ð?ð¿etk þ?hqxÂS?[ra±¨?.Ï’Sƒ/“@£ Ü›@˜tí&A‚?y ”¯?MT¿NrÿI?õZÞ[ƒÇ? 6D(õ²—@ŸdKWkÓF@[@¥X“t¼j@¥X^5?}@¥X“t¼j@¥XKŠ¢ˆ@¥X“t¼j@¥XYÅÙ@¥X“t¼j@¥X¨õõ5@¥X“t¼j@¥X&ÉF@¥X“t¼j@¥X  Ñ.@šš†$Ý/@šš{)² -K@šš†$Ý/@ššŠŒå†@šš†$Ý/@šš‹A"›C@šš†$Ý/@šš‡ôøO•@šš†$Ý/@ššˆÂHa¼@šš†$Ý/@šš‚Q³‹ @7 xFÜ@7Ù”ÿb@1xr° Äœ@1vúu¬@0,j~ùÛ#@0*Ø#l‹^@/#¼ÓZ…ˆ@/©ó±÷@/#¼ÓZ…ˆ@/BA9¾@/#¼ÓZ…ˆ@/ßÜR1q?ƒ_ÿKt˜à?ZUëb?‘9DËç{p?‹ØÆ|€Ñ?‘;—Û [?‘¡­NpI?ƒÔo"ë–?’;ƒùÐêq?¥0ýùŠ?s8”±š?‘ Àþ­?¶Ôò“‰?Ÿ£èyÑ¿?zb›¥¼H?ƒ~m»²Ó?‚ödt?ÍE?†ÙBÖz6ò?‡$°²¾M@@*@&@(@7@8?ð?ð?ð?ð?ð?ð¿OÙÈ?Rûé:p?óD.XV?Dz˜/"×Ë@¥Xý„@ššüõÃ?6¹_T.n?dç¤@ñ‡"?uã î1iÌ?ÑcHù¥Ž@Ÿi ,Žn@\@ ß¶È´9XÁ.„€@ ß¶È´9X@ ß’-V@ ß¶È´9X@ ßtzáG®@ ß¶È´9X@ ßGÈK]Ì@ ß¶È´9X@ ß1‚©“ @ ß¶È´9X@ ßW1Å@¨WOß;Á.„€@¨WOß;@¨x“t¼j@¨WOß;@¨JÚ¹õ[@¨WOß;@¨$Ý/ @¨WOß;@¨H´9X@¨WOß;@¨iÇy¦µ@9‰Î_oÒÁ.„>¤µÜÆ@4Ùº^5?}@4ÔЩ*0@4ï²-@3þ_oÒ @3¨è§æ›@3°-à @3¨è§æ›@3ßb¶®}W@3¨è§æ›@3Õ%F -¦L@8J¨?žè~Œ7* ?°ÛÉÀG?¼ š¥"d?É:NŠð¥?¨¦>Í›Ä@8J¨?«öQÅŽe?²Ã&EÖ«?¹B¥ŽS”?È"ÂÌÑ>?Åáe¤IÌ@8p÷?«Fˆ¶ƒïu?°k pÄ“*?¹›LÎD?¿¨TS§?¾ÙJ½‚*@@@@$@ ?ð?ð?ð?ð?ðøøøøøøøøøøøø]@¬yXbN@¬e¡ÊÀƒ@¬yXbN@¬v8†YJ@¬yXbN@¬zû~‘@¬yXbN@¬y0¾ í@¬yXbN@¬wÎÙ‡@¬yXbN@¬xl"h -@§­,1&é@§­7Oß;@§­,1&é@§­*0U2a@§­,1&é@§­%¸Që@§­,1&é@§­*™0¾@§­,1&é@§­)Q‚©“@§­,1&é@§­)Ô•+@8Ù*0U2b@8Ò° Ä›¦@3° Ä›¦@3ȆYJôñ@3.ùÛ"Ðæ@34›¥ãSø@2‘Þi­BÄ@2•zxl"h@2‘Þi­BÄ@2—RT`ªe@2‘Þi­BÄ@2–R½<6?|öOÿÝ?›ŽÊ–SS?““¶”ÿµb? Ð ÷Ž ?•Ô¦?n¸?–4<‘7?žŒÝÙ›P?i½ÆÝCv?–¬HðºDŸ?‘ÿŒŒhÚ?“â¹Í[Óh?“‚í?eBZ?³äøG—â?˜¼qlPg?–í -e˜›ð?…p=¤J‰?‰©OO ¨?ŠÐ+`È“@@@@@*@*?ð?ð?ð?ð?ð?ð?s¤,,x¿cù*‘¨?S±Øµ* j?RJ•â¤@¬t.õoº@§­,“¢?x<´•Op¼?k· /FÖ#?íw(+¤Î?ÊsOš¿<@Ÿl²\»õ@^@¥Ÿƒn˜@¥žäZ¬@¥Ÿƒn˜@¥Ÿ§æœ@¥Ÿƒn˜@¥žöR½<5@¥Ÿƒn˜@¥žøQë…@¥Ÿƒn˜@¥žû"Ðå`@¥Ÿƒn˜@¥žùrGE9@¤dSt¼j@¤dcn—@¤dSt¼j@¤dK'»1@¤dSt¼j@¤dDêJŒ@¤dSt¼j@¤d=ó¶E£@¤dSt¼j@¤d;/ìV×@¤dSt¼j@¤d-í(Œç@9*0U2b@9ohÜ@3õãS÷ÎÙ@3èDЩ*@3¬j~ùÛ#@3›'»/ì@2𖻘Çã@2ã× -=p¤@2𖻘Çã@2æ$Ý/ @2𖻘Çã@2Ðÿ—$tT?Ÿ‹‘+-/Ü?©•È–¿g?©ÖÌC³1?š+‚¦Ðfñ?–²p+æ0P?«´½H k?š•§q!U?—·f;m?£õ81þ9Ì?¡"JîÃ!?ªËÆŠâqf?®LT1ˆQo?Á[Nä­ð?˜‹”âó?¡D(¸ÿôn?žÞG¤¸'ö?•ó¬>¨ûÝ?¾æX2ú@@@@@@,@&?ð?ð?ð?ð?ð?ð?u… ˆ¿‡ Ìõà€?Uö8y4z?Zw^à†Ûu@¥žó¯5Å -@¤dEíAèÄ?qb/D®ß?yQCqݳ?Æ -¼¥?ÉVÉ]$4@Ÿi7,7™@_@¢¿k…¸R@¢¿Òñ©ü@¢¿k…¸R@¢ÀsMj@¢¿k…¸R@¢¿û"Ðå`@¢¿k…¸R@¢À\(÷@¢¿k…¸RÁ.„€@¢¿k…¸R@¢À Ñ·X@¬j~ùÛ#@¬!ÊÀƒ@¬j~ùÛ#@¬ñë…¸@¬j~ùÛ#@¬WKƧñ@¬j~ùÛ#@¬A$Ý0@¬j~ùÛ#Á.„€@¬j~ùÛ#@¬•Y³Ð|@8‘|ÚQ@8LÚQÎ@4)‡+ @3‰b¶®}@3—ï²-@3 ô!-w@2«xFÜ^@2B&€IR@2«xFÜ^Á.„NÜC,¥@2«xFÜ^@2‚@·€5?£È‰·akû?ÙBÖ}Ï;º?¿>‘9B¨¬?É —§˜È@8Iç?ÝriÉc,?¹&ä"¾ü°?ÑyñCNúë?¢äEÊ»¶)?®Ç4U¤oé@8S?ÙAv"_+S?‘MM….äí?¸G^¿¿~ê?¢æbÂfïU?°%Ùñ¥÷)@8 Ø?ÉJ6Л@@@@@*?ð?ð?ð?ð?ðøøøøøøøøøøøø`@¬;dZ¬@¬8î‘(‚@¬;dZ¬@¬T4M@¬;dZ¬@¬=#èú@¬;dZ¬@¬:S±/d@¬;dZ¬@¬; -Y±L@“/Þ5?|î@“0¸Qì@“/Þ5?|î@“/Þ)c”4@“/Þ5?|î@“/×j¿Â¹@“/Þ5?|î@“/ܵÊgº@“/Þ5?|î@“/ݳ,~@“/Þ5?|î@“/ÞÓz÷@8åöý!ÿ.@8óJ€¿ß¦@3?|í‘h@3S’å`ù@2A‰7KÇ@2Nrª‰¨@1._oÒ @1.š,fX@1._oÒ @1.­ó@m;@1._oÒ @1.Ó Àï?‡ôCbyV?dc:Ná?‘Š‹^‚·Ô?‹ég.ù$W?‘j eéI?‘iÊê›Ø?•$Ý/?’6¸íc?‘ -¯rmH_?fìÃ|w?‘,á4„¯N?±xˆ¬4½?ª³‚úŸ³Š?ŒðãSïê?‚¯Êyˆj?ƒ=¿¼{:é?‡Yû#AÚ2?†ôS˜Í¨@@"@"@"@5@4?ð?ð?ð?ð?ð?ð?? %q°¿mÀhå®?@j”·læ?\ÄzÍQ[ê@¬:ôϺ@“/æwœó?`(‘q¥³Ø?wçY;m?Â2[7¡Õï?ì‡^"{Qý@Ÿl‘~·ÞÆ@a@£ -=p£×@£ -~ùÛ#@£ -=p£×@£ ¹Œ~(@£ -=p£×@£ Ƨïž@£ -=p£×@£ L˜_@£ -=p£×@£ ÁTɆ@£ -=p£×@£ Dg8@§ñV‡+ @§ñVÈ´9X@§ñV‡+ @§ñVÕϪÎ@§ñV‡+ @§ñVâëC@§ñV‡+ @§ñWXâe@§ñV‡+ @§ñWXâ@§ñV‡+ @§ñW>«6z@1-¥œàv@1-‘hr°!@,²-V@,–»˜È@+›dZ¬@+›‹¬q ³@*Aò×t@*O „M@*Aò×t@*\(õÂ@*Aò×t@*\(õÂ?É^³Dw'?Úþþ³?‘Ûü†Nã?‹ª½¨ª8v?íOþtà?´âµÇ>¬?ÐbV‡,?’ -‰¸Ì?r¼Jsž?/ò×ÈZø?Ó%y*£=?X78›š?€rTg€½?Œ­·Ž~('?‚uÞ@>N ?‚â‡~ûÉ\?†ˆ#.÷?†ŠúЀ>(@@@@@,@,?ð?ð?ð?ð?ð?ð¿U²æëË¿ ü ?Bǽ^NK½??<]¤Ä @£ -Bˆ&æ@§ñW<`Óé?Rd8Ó¿ý?!CŽGtØé?  + :œ?:%M¸@ŸsaÍä¢@b@¤ù•$Ý@¤÷àA‰7L@¤ù•$Ý@¤ùjW§†Â@¤ù•$Ý@¤ùo4Ö¡b@¤ù•$Ý@¤ùdoi@¤ù•$ÝÁ.„€@¤ù•$ÝÁ.„€@¥¥áÊÀƒ@¥©›¥ãT@¥¥áÊÀƒ@¥¦fÏAò@¥¥áÊÀƒ@¥¥ôã¼Ó[@¥¥áÊÀƒ@¥¦tSŽò@¥¥áÊÀƒÁ.„€@¥¥áÊÀƒÁ.„€@9m¥œàv@6/hÛ‹¬@5+¥ãS÷Ï@5ˆÎp:û@4 ²-V@4Á½¥@3s&Á½¥@3Oƒ{J#:@3s&Á½¥Á.„NÜC,¥@3s&Á½¥Á.„NÜC,¥?ð°–Ž]?µC\ PçÙ?š6õÂ\9?ŽÝ¡uÒ(r@8Iç@8Ù?ð°–Ž]?¥q¾Ó¡h?•Q²rz¢ù?Ò–‚h±n@8S@8û—?ð*wjs—?¬µöÂ};?ŸÛð°|°?ˆã1µR@8 Ø@8 Ø?ð@@@?ð?ð?ð?ðøøøøøøøøøøøøc@ªÂ9XbNÁ.„€@ªÂ9XbNÁ.„€@ªÂ9XbNÁ.„€@ªÂ9XbNÁ.„€@ªÂ9XbNÁ.„€@ªÂ9XbNÁ.„€@”« 7KƨÁ.„€@”« 7KƨÁ.„€@”« 7KƨÁ.„€@”« 7KƨÁ.„€@”« 7KƨÁ.„€@”« 7KƨÁ.„€@9™*0U2bÁ.„>¤µÜÆ@43S÷ÎÙÁ.„M‰ûçm@34“t¼jÁ.„QnÙ‡@2°–»˜ÇãÁ.„NÜC,¥@2°–»˜ÇãÁ.„NÜC,¥@2°–»˜ÇãÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøød@§Äã× -=q@§ÄÞ5?|ï@§Äã× -=q@§Äáä÷eý@§Äã× -=q@§ÄèÎp:ü@§Äã× -=q@§ÄçæšÔ@§Äã× -=q@§ÄàªdÂù@§Äã× -=q@§ÄÜ64@¡*öE¡ÊÁ@¡*ï\(õÃ@¡*öE¡ÊÁ@¡*õY³Ð~@¡*öE¡ÊÁ@¡*ý—ö+k@¡*öE¡ÊÁ@¡*ô¼j~ú@¡*öE¡ÊÁ@¡*÷Ûô‡ý@¡*öE¡ÊÁ@¡*ë’:)Ç@7žHè§æ@7 ©*0U@3œIº^5?@3œC,¥zx@2éÛ"Ðå`@2ê¹õY³Ñ@2Š0U2a|@2ˆÇâ‚@¸@2Š0U2a|@2‰Î_oÒ@2Š0U2a|@2„!-w2?…ÅBðrç?’«p~v]Ù?’5 µ¿$„?”oý]Þ‡&?’êÔÒ?•zWmoàí?”¼íÒh??’u¦ieõ–?‘K54;­?’¸Ý8h\?“h_N’%¿?˜ÓI­ÂÅ?“²pÅâ-Ý?‘ÓP!¹p?‚Ö˜>µDá?gt»Hö…?ŒXk-¯‚7?·♊N@@@@@&@(?ð?ð?ð?ð?ð?ð?4€ˆR?:WîÀ?Rô¤¨¼ý?]6è̳ Æ@§Äà3Lá@¡*ò°ä‹*?t?ÿï%i¿?y(ïßî:?æ1zü7¶Õ?çÔ™>È@ŸjòËt³Í@e@©Šò° Äœ@©Šõ^Eš@©Šò° Äœ@©ŠÐ‘ƒ*@©Šò° Äœ@©ŠÆ;Û G@©Šò° Äœ@©ŠÖü«@©Šò° Äœ@©Šº,l“n@©Šò° Äœ@©Š¼‚)]@•iõÂ\)@•iï²-@•iõÂ\)@•jy®ÁÇ@•iõÂ\)@•j£amO@•iõÂ\)@•jì-Ö@•iõÂ\)@•jd¦47 @•iõÂ\)@•jEï6À¹@7 ]cˆe”@7 (Wú[D@3ã÷ÎÙ‡@3²’ ™+@3~ùÛ"Ñ@2äð%ŽpT@1Ê0U2a|@1§#‚$@1Ê0U2a|@1§]QùÀû@1Ê0U2a|@1¥uO2?‹ÖFÔÜÚ$?“»ö†Ñ¤h?¦›©ú)³?ŽÖ£‚æ?­¯TŸê-?¨’ŠƒàÎ?‚n—OßÁE@®é+çúó®@žM…õÆõ?PþR+ƒˆ?vn?£JÝ?‰z&6é?Ë=¾ÇpE(@ŸlXÖ°B@h@­±üí‘hsÁ.„€@­±üí‘hs@­±âœwšk@­±üí‘hs@­±å‡“ݘ@­±üí‘hs@­±×Á½¥@­±üí‘hs@­±Ù k¹‹@­±üí‘hs@­±ä÷eý‹@¢5?|îÁ.„€@¢5?|î@¢P-à @¢5?|î@¢4•*™@¢5?|î@¢ZîcŠ@¢5?|î@¢UÂ\)@¢5?|î@¢^ƒä%®@;ð4mÅÖ8Á.„>¤µÜÆ@6«¥ãS÷Ï@6— ù k¹@5²-V@5}ÌcñA @5 ¿±[W?@4ê–»™@5 ¿±[W?@5$Ý0@5 ¿±[W?@5¡ÊÀƒ@8J¨?ÁŸ ¡`?¯ü¦NJL?¨üà«W¦ü?¦Wì07q³?³ŒTAøÉ'@8J¨?ÁI`—Þ?¯µ5®Ë~B?¤á¾Õ·L?ª*-@sØ3?­87ÞŽ@8p÷?®ØùüSY~?¯Vê 2Ó?£ßÊihÂ?¨ƒÑ0¹C?°¬¹57¶ø@@@@(@*?ð?ð?ð?ð?ðøøøøøøøøøøøøi@¤Ç[¥ãSø@¤Ç[¥ãSø@¤Ç[¥ãSø@¤Ç]!ÿ.I@¤Ç[¥ãSø@¤Ç]/Ÿ¾@¤Ç[¥ãSø@¤Ç]cˆe–@¤Ç[¥ãSø@¤ÇZ–½@¤Ç[¥ãSø@¤ÇYõY³Ð@¡+ º^5?@¡+ ûçl‹@¡+ º^5?@¡+ ÞÒ@¡+ º^5?@¡+ÕfÏB@¡+ º^5?@¡+ ù l@¡+ º^5?@¡+â‚@¸@¡+ º^5?@¡+â‚@¸@3 xFÜ@3%®æ1ø@/ö“t¼@/ôýó¶E¡@.ãn—P@.â@·€4n@-ÑÑN;Í6@-ÐU2a|@-ÑÑN;Í6@-ÒGE8ï5@-ÑÑN;Í6@-ÒGE8ï5?|¬Çëý ?ï1ïºÅ?‘\H{gX ?‹ª½¨ª8v?‘ ·èf?ïˆ6ÏJ?|öOÿÝ?’5CàQ?†[‘'Í?Níú¾?üÓqÔNŠ?oÌ‘'ýT?‚n—8‹8?ŒÂ§dß±?‚¯­Ù¤Á¶?‚ù8 ±^?†£îž«î?†©b/bJö@@@@@,@(?ð?ð?ð?ð?ð?ð¿+_}¿@®›W€?7°r©{ø@?"ºŸ£!@¤Ç[jÔÚÔ@¡+ÊÓÞÁ?W‡8ò7ÿ?BméW¯v—?¾}Ýðo??‘Žãçör@Ÿfìü®(‰@j@ª·bMÒò@ª·‘ë…¸@ª·bMÒò@ª·!-w2@ª·bMÒò@ª·n;Í5§@ª·bMÒò@ª·ÈK]@ª·bMÒò@ª·e‡“Ý—@ª·bMÒò@ª·cä%®æ@©qú^5?}@©rÊÀƒ@©qú^5?}@©qË]Ìcñ@©qú^5?}@©qÌ"h Ö@©qú^5?}@©q¢¶®}V@©qú^5?}@©q‡E8ï6@©qú^5?}@©qñ&éxÕ@7įO „M@7ÅÜÆ?@3ÜIº^5?@3ÊŒL˜_@3"-V@3-ã¼ÓZ@23&Á½¥@2QÎ`@23&Á½¥@1òGE8ï5@23&Á½¥@2Ä›¥ãT?îŠõ ?¦®ñd¥?”zùeߎ?¢)[fI?Ã-;‰ ö?¾ ×….ž?˜ž^ƒÿ*ˆ?¤x‰\F®p?—>4ôgŒ9?šªy/2v‘?Ñ0ÂÑ-+þ?°í|:Âã? zkê 3U?ºòã‹3E?¢N²üß0?°FE%ñŽ5?­…zéµl¦?»h¶ðcÓ—@@@@@*@$?ð?ð?ð?ð?ð?ð¿Rˆ´Œ¿”›\Ž@?xÎ‘Š’ƒ?ŽÛõG|2@ª·’ë¸%6@©qÑ |?’è -õJ—ƒ?¨ #ˆwyÅ?ôÕGFz@-_njÏ@Ÿd@žb~¡@k@¨_›¥ãT@¨_›¥ãT@¨_›¥ãT@¨_œàu@¨_›¥ãT@¨_Щ*@¨_›¥ãT@¨_zxl#@¨_›¥ãT@¨_ŽŠqÞ@¨_›¥ãT@¨_ˆe”¯@®ƒ`Ä›¥ã@®ƒ`Ä›¥ã@®ƒ`Ä›¥ã@®ƒa@N¦@®ƒ`Ä›¥ã@®ƒ`ëíúD@®ƒ`Ä›¥ã@®ƒa [À@®ƒ`Ä›¥ã@®ƒ`ù k¹@®ƒ`Ä›¥ã@®ƒa-w1‘@0Hè§ç@0;Í5¨Y@-ÍV“@-Í:’£@-‘&éxÔþ@-å`A‰8@-87´¢3œ@-8 -à @-87´¢3œ@-87´¢3œ@-87´¢3œ@-8}¿H?É^žQ5P‚?Òç{íj?‘1f_¨Ï÷?‹ÑqÔ@vÿ?éDEâ©×?¾ƒìÈÁ?ÐbMçê_x?’#maЀ?ÀpMºÅ?>\‰å‘?ÔÒ@úˆ‘?hï,ðà?€cPßQª?Œµ3‰;šÏ?‚yî8Á$?‚ð'ã:ÂÝ?†©b/bJö?†špk Y@@@@@@"?ð?ð?ð?ð?ð?ð¿JuÃÁ®>ñI(K@?Î8Þ1Ÿå?u‚ϹÛ@¨_-_@®ƒaŸ.Ú?,£Š¯Tð?+óc?TÂ݆ÿÔ?5ì‚­iÙ@Ÿs7êŠæ@l@ U¬‹C•@ U¬Iº^5@ U¬‹C•@ U€K@ßF@ U¬‹C•@ U®“„Þ1@ U¬‹C•@ U­z|rß@ U¬‹C•@ Uœ×Æ*@ U¬‹C•@ Uš#²-@£Fë Iº@£FëÆ§ïŸ@£Fë Iº@£FìèEÔ©@£Fë Iº@£FäsŒ[€@£Fë Iº@£Fá­[@£Fë Iº@£Fé) „Y@£Fë Iº@£Fä­¨ï@4Ç>«6z@4ÇAÕ¥S @2 Iº^5@2È^»õ@1v§ï²-@1f²?êb@1L¿±[W?@18ß }Ê´@1L¿±[W?@1>¶bš/7@1L¿±[W?@1>ÒRˆï?|Ñb×¶@?“u$ðM?‘)Ì~Ï™?”ôOŸ”?š±U'-æ·?š)CÊ"f ?|Ñb×¶@?“VÔ)oÆ?‘P3b东?‘Fq©<?œ×Fj.¤%?•õ7nŸÚ??‚ë‘/ˆ$?±æ‘’Ñ?ƒ'0À­ÅS?‡þVLéSÖ?–: Ê?Œ«ü=–B-@@(@@(@9@8?ð?ð?ð?ð?ð?ð¿gþ¥f§¿]€AŸ?V ÛÛpÊ?O>×ù N@ U§iá’@£Fè*Ø8¨?t•l7y=•?lzQ³M+Þ?ìÛ84ða¯?àQRF#@ŸdK›…†@m@­AG®záÁ.„€@­AG®zá@­A,ÌÌÌÍ@­AG®zá@­AIº^5@@­AG®zá@­AIxÔýõ@­AG®zá@­AVÈ´9X@­AG®zá@­A9‡+@®ÿzáG®Á.„€@®ÿzáG®@®ÿ$Ý@®ÿzáG®@®ÿE¡ÊÁ@®ÿzáG®@®ÿŸ¾v@®ÿzáG®@®ÿfÏAò@®ÿzáG®@®ÿ‡+@7|ÚQÁ.„>¤µÜÆ@2° Ä›¦@2¯HË’:@1ä¼j~ùÛ@1àoiDg8@1G ù kº@1E¡ÊÀƒ@1G ù kº@1?.Hè§@1G ù kº@1@©*0V@8J¨?”ŸÍFÒ?“â÷!N?‹¯eU5?­;â¬"?”º²¶;@8J¨?’‡Iš÷?‘;¨™,?RLnj?”¡S•Ÿ¯?X78›š@8p÷?Fƒ¿p7€?…íŽ(þÇ?„XïWÉò~?‹&¸ê±fÂ?ˆ¾þúWZ‹@@@@@?ð?ð?ð?ð?ðøøøøøøøøøøøøn@¢°>ùÛ"ÑÁ.„€@¢°>ùÛ"ÑÁ.„€@¢°>ùÛ"ÑÁ.„€@¢°>ùÛ"ÑÁ.„€@¢°>ùÛ"ÑÁ.„€@¢°>ùÛ"ÑÁ.„€@–‹E¡ÊÀƒÁ.„€@–‹E¡ÊÀƒÁ.„€@–‹E¡ÊÀƒÁ.„€@–‹E¡ÊÀƒÁ.„€@–‹E¡ÊÀƒÁ.„€@–‹E¡ÊÀƒÁ.„€@9T xFÜÁ.„>¤µÜÆ@4Ìí‘hr°Á.„M‰ûçm@46§ï²-Á.„QnÙ‡@3n_oÒ Á.„NÜC,¥@3n_oÒ Á.„NÜC,¥@3n_oÒ Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøo@¥Ì¸Që…@¥Ìñ©ûç@¥Ì¸Që…@¥Ì¬1&@¥Ì¸Që…@¥Í"u%F @¥Ì¸Që…@¥ÌŸQì@¥Ì¸Që…@¥ÌtÖ¡aå@¥Ì¸Që…@¥Ìk6z‘@ ¯Oß;@ ¯)º^5?@ ¯Oß;@ ±ÊW§‡@ ¯Oß;@ ±÷Oß:@ ¯Oß;@ °ÊdÂø8@ ¯Oß;@ °…+ÓÃa@ ¯Oß;@ °(Û‹¬q@8šÔ,<Ÿ@8_Ø­« @3’ Iº^5@3*Ú¹õY´@2Æ“t¼@2[¬q ²–@1ãÉîËû@1šáG®{@1ãÉîËû@1—$tSŽô@1ãÉîËû@1“ê³g ú?±ÿ}ö?Ó»‹KLý?Î$£»íVL?ØM©. j ?ÂRßqJ ?õ"- -`Ï?™Îd0RÜ?1ð'7éÃ?‘ô 5Y?e¾DQ„Q?…àú^À?Œ²ÅŒÕ6?ƒ<Õp?‚â>¹S?†Óß -tõ?‡L8õASÎ@@@@@ @?ð?ð?ð?ð?ð?ð?@6Åt?0F+/p??&&”¡ º?òþ÷ò^\@¢XÍ4Øð@®ÿŽ×sæ?^ËÃÿ†¯?:º^#®9s?Ç1ågtƒÉ?ÐO%¨@ŸgVϯ µ@q@­èr° Å@­ðbMÒò@­èr° Å@­¾i­BÄ@­èr° Å@­ÌÌÌÌÍ@­èr° Å@­¾š@­èr° Å@­®Ù‡+@­èr° Å@­VR½<6@¦v2-V@¦v+…¸R@¦v2-V@¦v>Åm\û@¦v2-V@¦v7Oß;@¦v2-V@¦v9è>B[@¦v2-V@¦vFÁ½¥@¦v2-V@¦vU*™1@8°4mÅÖ8@8³33334@4#÷ÎÙ‡@4åÉã@3$¼j~ùÛ@3L/ƒ{J@2YŒ~($ @2CÝ—ö+k@2YŒ~($ @2?åÉä@2YŒ~($ @2¸ºÇ?žŒÝÙ›P?¯¡ãƒù?¢X…^ -”1?¢ºã‘~]¦?¬Üd‰ùY5?τˎ^í*?•²»UbB2? ùëङm?¢©cÝä›?¡-ÙóÊÊ´?¨ÃXÜDo|?ÉòàMpù?»ªÔ+Ê„?¡RHÖ¿b?šº(Æ(í?• Cm¨k?—ã ËÄž?¿A·¬çøÈ@@@@@,@$?ð?ð?ð?ð?ð?𿒽̇|@?yÊÆàu?f^o-ýoß?Fˆ>zàØ@­ÍeáðÖ@¦v77ºi?õˆŒÓ‹“?bñh$qéú?Ô\¿GDÔã?Ÿã.ÆqTX@ŸdÐBãØ@r@¥ÿ^¸Që…@¥ÿa$Ý/@¥ÿ^¸Që…@¥ÿ~5?|î@¥ÿ^¸Që…@¥ÿhõÂ[@¥ÿ^¸Që…@¥ÿl‹C•@¥ÿ^¸Që…@¥ÿHXy=Ù@¥ÿ^¸Që…@¥ÿZu%F@¯ „“t¼@¯ ‡l‹C–@¯ „“t¼@¯ ˜Ôýó¶@¯ „“t¼@¯ ³¶E¡Ì@¯ „“t¼@¯ •$Ý@¯ „“t¼@¯ l‹C•@¯ „“t¼@¯ pØDÐ@6Ô xFÜ@6Ô¯O „M@4©‡+ @4”êJŒ@4_²-V@4ZÚ¹õY´@3¦YJôðØ@3¨šu%F@3¦YJôðØ@3²œwškQ@3¦YJôðØ@3µÜÆ??1·†Æjñ?’u~•Ñ?”¦¢œŒÕ?–:²çäÍÍ?’š'†­`í?¥ùÏ@Ì?„F/·ÿP5?¢›â¾Ð'µ?“Z—H|:?¡Ü;çåAˆ?™Ÿ»6“? !™¡kz7?àäœú?Å{¿Ž<º?­~¶Ùµx?¶ºK5ÚAø?– -0gspè? hˆB°š@@@@@@?ð?ð?ð?ð?ð?ð¿l»®f°¿sM›£?k½R.PÃ?gX0ÔÏQ’@¥ÿ[UœHJ@¯ yÔÏ?‰êþÀÒ ?†5ÃkÌÇÁ@ÎÓ`…‡@ÓjF°`@ŸdB1ÛŸú@s@®§xQë…@®§på`A‰@®§xQë…@®§zx$¡@®§xQë…@®§w×j@®§xQë…@®§~U»U{@®§xQë…@®§x±MV@®§xQë…@®§uôûè`@—Ÿhr° Å@—Ÿg=Eªb@—Ÿhr° Å@—Ÿhý8$ @—Ÿhr° Å@—Ÿd”î!.@—Ÿhr° Å@—Ÿcb/ø¼@—Ÿhr° Å@—Ÿeœš³ž@—Ÿhr° Å@—Ÿg²PU‚@8ò䎊@7øKƒ¶8¬@3° Ä›¦@3ÆÐÉŸÀŽ@3)Û"Ðå`@3-K÷uÞ@2\ÚQÎ@2azÃF’ù@2\ÚQÎ@2]²B'Án@2\ÚQÎ@2_ -ö¿ -a?‚n—Oß«_¤?øq¤éyi?§@Ûꘄ@ŸhÑì–ÿ˜@t@¥™ÿ|í‘h@¥šƒn™@¥™ÿ|í‘h@¥™ök)ž@¥™ÿ|í‘h@¥™öñ„3@¥™ÿ|í‘h@¥™÷2§@¥™ý¥ðCÊ@›YûŸj?q{?uª˜M?lÿö½ÉÄ{?츜iy?â·ûâb?“@Ÿf ñ:`;@u@¢CŒIº^5@¢C€ƒn™@¢CŒIº^5@¢C‰Dg8@¢CŒIº^5@¢Cwéùs@¢CŒIº^5@¢Cpÿ—$t@¢CŒIº^5@¢C|wškQ@¢CŒIº^5@¢C¦s×Ü@¦×Që…¸@¦×D›¥ãT@¦×Që…¸@¦×JôðØ@¦×Që…¸@¦×<„µÜÇ@¦×Që…¸@¦× Oß;d@¦×Që…¸@¦×”¼j~ú@¦×Që…¸@¦×Wéùr@7ëµsê´@7å?|í‘h@4)‡+ @4‡1Å@36§ï²-@3kŸU›=@2úÔ,<ží@3z¬Ùè>C@2úÔ,<ží@3ÞcŠ @2úÔ,<ží@3õµsê³h?…ÅBðrç?¿:§A{oŽ?´%=O>Ëæ?ºŠòTÓÁ?ÍéU(Ÿ”?Î^ó§?îŠõ ?Ř¡õ„×Ê?µëªI\8S?ÈÖqÆ‘÷?Ĉ25ƒÇ?Ñ×R9yŒ?£´<×?°hˆB°™?Ãïóˆ5?ÜS~iX?Éë| ¸’?ÕŒžÆì@@@@@*@,?ð?ð?ð?ð?ð?ð¿AÝ} ?‚&˜÷Ü@?q5½ëCÊ{?†yƒnSF@¢Cò#Gv@¦×L-Û¬?ç–ŸÛe¢?˜ç'4DÞ?ÇS÷ÓwÜ?î³*?¦ñÆ@Ÿ]sœY@v@¯”ûçl‹D@¯”õ$Ý@¯”ûçl‹D@¯”þU"!@¯”ûçl‹D@¯”ý!"¿f@¯”ûçl‹D@¯”üþ3}Ž@¯”ûçl‹D@¯”ýí @¯”ûçl‹D@¯”ý0,@™°ËƧïž@™°½+\µ:@™°ËƧïž@™°Ò¯Sü$@™°ËƧïž@™°Õ:Ïân@™°ËƧïž@™°Ñ¾Ö_˜@™°ËƧïž@™°Ò‚“@™°ËƧïž@™°ØhTÂ@8ÉÎ_oÒ@8¸­*c@3ÎÙ‡+@3u)Hl@2ÒÐå`A‰@2Ò¢{c«@1Öý!ÿ.I@1Õb²aZ@1Öý!ÿ.I@1ÕÕUvEÈ@1Öý!ÿ.I@1Ô÷ŒŒÌ?©–Rª—´?ð5 S±?“ }øà?ŒRšúÐË?‘ yòï…nS?’U2ÙLÍ?¢.EZ±?¹Ã4zs?†(Æcf{?–¢Ã­bÖ?‘£"ÃIì¬?—¦GåEP@@@@@4@(?ð?ð?ð?ð?ð?ð?\—-D?WDo²ñ€?Sõ·J{^?gÍ=O#@¦2 mÑm@“¬—;°à?n [™!Ñh?{°ëŒ¨5¹?Ò¿S«÷U?æ'ÿ¹¹y«@Ÿpº~ D@y@¨aÊÀƒ@¨lÌÌÌÎ@¨aÊÀƒ@¨Sœ¾ß@¨aÊÀƒ@¨MjO@¨aÊÀƒ@¨Tã¼ÓZ@¨aÊÀƒ@¨T‡ü¹$@¨aÊÀƒ@¨WsüO@¥õã× -=q@¥õçï²-@¥õã× -=q@¥õð Ä›¦@¥õã× -=q@¥õ×§†Â'@¥õã× -=q@¥õÜàuöý@¥õã× -=q@¥õá°‰ '@¥õã× -=q@¥õåðoiD@7¿–»˜È@7ÃMjP@4}‘hr° @4~ŠqÞi­@3y7KƧð@3yÎ_oÒ@2¨è§æ›@2«~ÿ—%@2¨è§æ›@2«µsê´@2¨è§æ›@2«dZ¬ ?˜ž^ƒÿ*ˆ?›¤<½ÎTß?–™@^Ú¢?Uóú*˜?”§RXFÖf?–҄έ¿o? Å{¿Ž<º?––ïFHÇN?“5ñ µ?Ä…à6 -æ?–å·ÑfWâ?˜Œ» -?ŒÊ­#г^?”kcÿä©Ú?³&Ô,ô?‹8¹ª?Œx[‡:©?‘„1ôñÂß@@@@@,@*?ð?ð?ð?ð?ð?ð¿q§®¯€?1KÆ_H?dºïÓiWà?a'3i…Û×@¨X©Û–¥@¥õá ÷m‘?~ïZÜNh©?x8¾˜¶?ôSÖ(lN?âŒ]C&@Ÿmv<{@z@¡óËC•@¡óÍV@¡óËC•@¡óÚ3ÕN@¡óËC•@¡óâ´0«¦@¡óËC•@¡óài9,@¡óËC•@¡óâÐå`B@¡óËC•@¡óêmw3@“® Iº^@“®SâÖ#@“® Iº^@“­óø¢ñE@“® Iº^@“®rp¡Û@“® Iº^@“­ÙoêO@“® Iº^@“­ÞÑAŸ@“® Iº^@“­Õ‘Ôl(@504mÅÖ8@50m¹ùîÐ@2³S÷ÎÙ@2´ª,4\@3²-V@38i:X…@2G ù kº@2bÈ®@ã@2G ù kº@2N~ááO@2G ù kº@2Sçw¦ ?|Ñb×¶@?“áÍw&?¨óuÌG?ŒF¹lQ‡ô?•#uÃ^´?šñivÌ€?~Ov_Ø­«?“¦èX×?«'_ñóT?žÁÉXÌšý?•J ì'Å—?™· -®]?‚„.™tsÂ?tvÙ•îÐ?ˆ?C Mà:?’N~ÞOÁ?¡TuÃ?™N»lT)ž@@ @@@5@4?ð?ð?ð?ð?ð?ð?y6És€¿r·\ÄþÀ?Ee\lþäî?FÒg ¥­|@¡óØ´ª´@“­ïãGJ?býÓy5Û?e¼ÆfPàp?ÐMØ1á?Ï$‚úrf@Ÿda’WD‡@{@ž•?|í‘h@ž—éûçlŒ@ž•?|í‘h@ž•éÄ)¼m@ž•?|í‘h@ž•ÉF7¹P@ž•?|í‘h@ž”Þj€Q@ž•?|í‘h@ž”Ó4ŒÔ<@ž•?|í‘h@ž”ãbÄ‚r@¤ÛáÊÀƒ@¤Ý€ƒ(\ì@¤ÛáÊÀƒ@¤Üö…®Â@¤ÛáÊÀƒ@¤Ü9u+Ú@¤ÛáÊÀƒ@¤ÛºöÄî@¤ÛáÊÀƒ@¤ÛÁLJñ@¤ÛáÊÀƒ@¤Û»ïý´F@8m¥œàv@8Ã7]P@3f‡+ J@3d1ÚØï@2nùÛ"Ðæ@2k6 Ç@2O „M@2ŒXQÞ›@2O „M@2Ÿ#ÿ ~@2O „M@2¡Tª(¬ö?ìÎ:Å}–?¤uË !a?žb­´‰bÔ?š¸”ò7“‰?°ï¤ N,?¥hqcéDë?ñOqyŸŒ!? Íß#Êû?¢ä¸#²ˆ?›ÈsÖ‚’i?®îLŸ ª…¥¤?[ñ®;b@@"@"@(@9@7?ð?ð?ð?ð?ð?ð¿ƒôaò´¿™¨¶¦]€?j ïõÏ/ó?€<°9İ@ ¤oéYÚb@©·kÚBõü?†ä=åÀFœ?™ÍÝ.—9@Ø"pm‚ƒ@(dV»Q+R@Ÿa¶K[šG@}@ ìÎV“Á.„€@ ìÎV“Á.„€@ ìÎV“Á.„€@ ìÎV“Á.„€@ ìÎV“Á.„€@ ìÎV“Á.„€@šæ;dZ¬Á.„€@šæ;dZ¬Á.„€@šæ;dZ¬Á.„€@šæ;dZ¬Á.„€@šæ;dZ¬Á.„€@šæ;dZ¬Á.„€@5ºqÞi­CÁ.„>¤µÜÆ@3|í‘hrÁ.„M‰ûçm@2M²-VÁ.„QnÙ‡@1ÏO „MÁ.„NÜC,¥@1ÏO „MÁ.„NÜC,¥@1ÏO „MÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø~@©Å3¶E¡Ë@©Å3÷ÎÙ@©Å3¶E¡Ë@©Å/²-@©Å3¶E¡Ë@©Å,cñA @©Å3¶E¡Ë@©ÅLÌÌÌÍ@©Å3¶E¡Ë@©ÅU*™1@©Å3¶E¡Ë@©Å\PHð@£ùwKƧð@£ùw -=p¤@£ùwKƧð@£ùw§†Â'@£ùwKƧð@£ù…o@£ùwKƧð@£ù™=Ùc@£ùwKƧð@£ù§l‹C–@£ùwKƧð@£ù¥+ÓÃa@3‡>«6z@3‡RT`ªd@05ãS÷ÎÙ@0._oÒ @.ΗOß<@.À quŽ@.æL/ƒ{K@.Áaä÷eþ@.æL/ƒ{K@.ÃS&Â@.æL/ƒ{K@.ÅF -¦L0?|öOÿÝ?àIü'?£À¹¿1?¬&¾L=§‰?¹¤¡X‚ ?¯|ÚxÎ?|öOÿÝ?’¼MÒÀ7F?£éIõ¹?³ŸÛ-w?´:±»S÷?¬¬û‹¾5?‚|׿pY?àQdËЈ?†ž5ðqë?Šc^î½)Ô?°4\ɵ?•™ï ufÝ@@@@@,@,?ð?ð?ð?ð?ð?ð?Sô½Ã€?…%ÿ,€?7~Ï"-Ð?Qc^zçW@©Å;«žÌ§@£ù€t¼ ?Höé]€ ?b0dó!^Z?„>!jô–?¸‡Ä7 ¸f@Ÿ]þ a@@¥ÔzáG®@¥Ë Iº@¥ÔzáG®@¥Û/ìVÖ@¥ÔzáG®@¥Õ$Ý@¥ÔzáG®@¥Ù³Ð|…@¥ÔzáG®@¥Õ '»@¥ÔzáG®@¥Ôýó¶F@¥“:^5?}@¥“["Ðå_@¥“:^5?}@¥“:…‡“Þ@¥“:^5?}@¥“7ö+jè@¥“:^5?}@¥“=¿HË@¥“:^5?}@¥“9õY³Ð@¥“:^5?}@¥“9Û"Ðå@7Û¹Œ~($@7ÈDЩ*@2Ùº^5?}@2×KƧï@2M²-V@2LÙè>B[@1œàu÷@1MÒñ©ü@1œàu÷@1•$Ý@1œàu÷@1-V?£G± *Ç‚?”•µ³S_?“u*y?Wø0 ¥?’FL{öó?×°ë*–w?¿Ëg1Ñ?”ï©ÛÉ?–AuøG1?Ë{4æk?’.<ù?ƒÁþGEÛ?»ªÔ+Ê„?ŽátÖÁ»‡?“„*0x)Æ?†‡ °´¥`?ˆ©{2¡Î?‰_uñšó@@@@@,@?ð?ð?ð?ð?ð?ð?/w2õø¿bä'ãîà?_ñ€÷ª9!?VáÔ¨|¤’@¥ÖO#)@¥“;òtI³?t"©’<K?gþ9øY?ã¼ëM¬Â?ÄúAûzÕ>@ŸrŒŒ™ó@€@Ÿ(£× -=q@Ÿ(¼Þ3pª@Ÿ(£× -=qÁ.„€@Ÿ(£× -=qÁ.„€@Ÿ(£× -=qÁ.„€@Ÿ(£× -=qÁ.„€@Ÿ(£× -=qÁ.„€@¥ÑZ¬1@¥Ñm­sªŒ@¥ÑZ¬1Á.„€@¥ÑZ¬1Á.„€@¥ÑZ¬1Á.„€@¥ÑZ¬1Á.„€@¥ÑZ¬1Á.„€@8÷â‚@·€@8õ·¿­%@4{ Iº^Á.„M‰ûçm@3{Ƨï²Á.„QnÙ‡@3 ù kºÁ.„NÜC,¥@3 ù kºÁ.„NÜC,¥@3 ù kºÁ.„NÜC,¥?Œ`àËQã”@8#˜@8¾:@8 >+@8Iç@8Ù?™ÌÜ%=( @8Î÷@8i§@8Å@8S@8û—?¡P:òÔ” @8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¦­‘ë…¸@¦­bMÒó@¦­‘ë…¸@¦­•?|í’@¦­‘ë…¸@¦­˜_ö”@¦­‘ë…¸@¦­§†Â&@¦­‘ë…¸@¦­”`ªdÃ@¦­‘ë…¸@¦­”¼@¨‡ñ&éxÕ@¨‡îV“@¨‡ñ&éxÕ@¨‡×ÎÙ‡@¨‡ñ&éxÕ@¨‡Èe”¯O@¨‡ñ&éxÕ@¨‡éá°‰¡@¨‡ñ&éxÕ@¨‡ëíúCþ@¨‡ñ&éxÕ@¨‡ì1&é@6¯O „M@6S÷ÎÙ@3ã÷ÎÙ‡@3ç»/ìVÖ@3@å`A‰7@3?\(õÂ@2ºÔ,<ží@2³MjP@2ºÔ,<ží@2ºJŒL™@2ºÔ,<ží@2º0U2a|?}Ñ¿ž,?•tæïá,•?”µ^CjD²?™ÿ " ž?˜/˜Jë­? ^?:à ?„F/·ÿP5?“?xr¢I?“1Ú©! ?‘ˆ¶´M=?˜Uý"ÕT?˜æØ.ô?aäŽ -Ø?›9WTêW?˜Ð™Q$Ò? +ƒBä³?”¦”x£b?– ¼µ(0Q@@@@@*@*?ð?ð?ð?ð?ð?ð?a?ìz"¿H=­ ?bã„ÕžþÏ?=J^L§-@¦­•ÕlÍ@¨‡ì–ö)ò?ô3=àp?[_?sÁ -ñ@Æ¡#ôÔ?¶§„G)M:@ŸeÔdKF@‚@¡:fffff@¡:o\(õÃ@¡:fffffÁ.„€@¡:fffffÁ.„€@¡:fffffÁ.„€@¡:fffffÁ.„€@¡:fffffÁ.„€@¨¥5Â\)@¨¥JÀƒp@¨¥5Â\)Á.„€@¨¥5Â\)Á.„€@¨¥5Â\)Á.„€@¨¥5Â\)Á.„€@¨¥5Â\)Á.„€@8uS&Á¾@8k¹Œ~($@5sS÷ÎÙÁ.„M‰ûçm@4Ÿ²-VÁ.„QnÙ‡@4«xFÜ^Á.„NÜC,¥@4«xFÜ^Á.„NÜC,¥@4«xFÜ^Á.„NÜC,¥?’Óusÿ\Ã@8#˜@8¾:@8 >+@8Iç@8Ù?}Ñ¿ž,@8Î÷@8i§@8Å@8S@8û—?µõ@6¯¢[@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøƒ@ ~ùÛ"Ñ@ bÐå`B@ ~ùÛ"Ñ@Ÿÿ¶Ôaì”@ ~ùÛ"Ñ@Ÿþüt>b@ ~ùÛ"Ñ@Ÿþ°~'‹@ ~ùÛ"Ñ@ŸþÒ¹2/@ ~ùÛ"Ñ@Ÿþùã?@¥ð±©ûçm@¥ð¶%·~@¥ð±©ûçm@¥ñÑæFìL@¥ð±©ûçm@¥ñŒ¡™ÿÕ@¥ð±©ûçm@¥ñßQ²Q@¥ð±©ûçm@¥òoz‹@¥ð±©ûçm@¥ò6´‚' -@7cg ù l@7IJÜ~RÌ@4|í‘hr@3`¡Äm0z@4lj~ùÛ#@2êAÊ Ýœ@3Öý!ÿ.I@2\ GÑÉB@3Öý!ÿ.I@2l¾<9@3Öý!ÿ.I@2~ C±Ál?…Hùg ?¤òe= ü@? ŒV|Ôx{?ޝ5ÜIz?»os{pø?³ž¼µ]Þœ?œÆæXÆd?›Ï5h–$¦?¥"_lû^¢?–·²òa£?±m\=ÖŒ(?°æèh~?¤g|®v¬?ŸE#±&¥Ú?¨'Ì Å?¦„GÛ‹õ³?°h¨ËÂ>?²´Mj¯¶@@(@$@"@9@5?ð?ð?ð?ð?ð?ð¿ÑKO¡n¬?¸<³J`?¥6|»?×n})žA@ 5‰w–À@¥ñˆ¼êø?ÁÐ÷~Hå?©¶> ö‰@t/–€~5@1ÿŸvfò@Ÿeº£.q»@„@­j¤Z¬@­j£n—@­j¤Z¬@­j™Î_p@­j¤Z¬@­j©º^5?@­j¤Z¬@­j‚¶®}V@­j¤Z¬@­jÇE8ï5@­j¤Z¬Á.„€@ª<@@ª<6“u@ª<@@ª<'Ë)_@ª<@@ª<‡+@ª<@@ª<]Ùb·@ª<@@ª`Ï?r¼Jsž?9ÍÇ~FÀ?çêÑHcÇ?e¾DQ„Q?‚¯­Ù¤Áµ?Œ¯þuõí?‚¸“Îè ø?‚ð'ã:ÂÝ?†žóB» “?†špk Y@@@@@,@,?ð?ð?ð?ð?ð?ð¿-:Ó‚À>Ó˜¢?'…šg&œ?ìµ@4dß@¯½< Q@¦Nc›¹&L?GhÇ}…?$GHØ`rÂ?¹ØŸ)æ?U[~@¯sW@ŸfðÞKèH@‡@¬…KƧïžÁ.„€@¬…KƧïž@¬…K'»0@¬…KƧïž@¬…J=p£×@¬…KƧïž@¬…Që…¸@¬…KƧïž@¬…H1&éy@¬…KƧïž@¬…NzáH@Ÿè²-VÁ.„€@Ÿè²-V@Ÿèí(Œè@Ÿè²-V@Ÿè„êJŒ@Ÿè²-V@Ÿè®Ëû´@Ÿè²-V@ŸèTÉ…ð@Ÿè²-V@Ÿè‘ÑN;Í@9¨†YJôñÁ.„>¤µÜÆ@4£÷ÎÙ‡@4¢‚@·€4@3d¼j~ùÛ@3e '»0@3YŒ~($ @3Q·Xâ@3YŒ~($ @3XõÂ\*@3YŒ~($ @3XK]Ìcò@8J¨?–[‹Å ?“ÔÃÆWž?‹¹GüÞõ?–(Ži´™^?™òc¾ÿ:e@8J¨?•íÌÖf?˜Y ¶E–X?“¶Ì¶Öj”?• ¸°R¨?™rÊêÚ×þ@8p÷?•vÇC šŽ?”ù‰ÚÞ©)?‹Bºá­?˜§zy?”Ò -.Ô•@@@@&@*?ð?ð?ð?ð?ðøøøøøøøøøøøøˆ@¨²/Ÿ¾wÁ.„€@¨²/Ÿ¾w@¨²/O „M@¨²/Ÿ¾w@¨²$%®æ2@¨²/Ÿ¾w@¨².±Ä2Ë@¨²/Ÿ¾w@¨²5 rË—@¨²/Ÿ¾w@¨²-_>ü@œHA‰7KÇÁ.„€@œHA‰7KÇ@œH_;dZ@œHA‰7KÇ@œHS&Á¾@œHA‰7KÇ@œHGü¹#¤@œHA‰7KÇ@œHQHýŸÓ@œHA‰7KÇ@œHLÏ'³Ž@9IÎ_oÒÁ.„>¤µÜÆ@4Ô›¥ãSø@4Èšu%F@3b-V@3V$Ý/ @2Åœàu÷@2œwškQ@2Åœàu÷@2ºà@xK˜@2Åœàu÷@2ÅjOR@8J¨?¡'‹Q›p?¡fÛ6Eí?‘ƒZ)Àˆ?“.¶Ã>{ -?•ô)‡è,Û@8J¨?¢ÉÓDý?”Ÿ•/ø]Ÿ?“mŸqa?•U­g¨ã$?‘M/)Üa@8p÷?¬Cʯ–ÕÝ?•(¯(Wø?‡9 ƒ–’”?£×LǺŸ?ä–Âü7@@@@.@&?ð?ð?ð?ð?ðøøøøøøøøøøøø‰@®½·ÎÙ‡@®½¸“t¼j@®½·ÎÙ‡@®½Åðµ{@®½·ÎÙ‡@®½Å ƒ@®½·ÎÙ‡@®½¼´ék@®½·ÎÙ‡@®½»­‘3û@®½·ÎÙ‡@®½ºÇXaï@“ïå`A‰7@“ï刕ú@“ïå`A‰7@“ïö`5+æ@“ïå`A‰7@“ïùV=O¼@“ïå`A‰7@“ïì͉N@“ïå`A‰7@“ðX¤v©@“ïå`A‰7@“ïüÜ”¹@5­¥œàv@5¬L˜_@2° Ä›¦@2¸,=²¢Ï@2F“t¼@2?ŠU×ø@1«xFÜ^@1ž6ß#íý@1«xFÜ^@1¢v|Ý2@1«xFÜ^@1¢¸Œ7'(?|Ñb×¶@?•δ¸k?’mH…Šÿ?Ô6óúÑ?“u"Å0X?’–8ƒt_?}x—™ºD A?^êI³e$}?¶ÈPcŽW?ÀÝ8ä€I@ŸeCV[YH@Š@¡$öE¡ÊÁ@¡$ý?þ¦@¡$öE¡ÊÁ@¡$òþ »¦@¡$öE¡ÊÁ@¡$ê–hZ@¡$öE¡ÊÁ@¡$ÞÓ‘@¡$öE¡ÊÁ@¡$íÇ93@¡$öE¡ÊÁ@¡$ìîõLo@•êë…¸R@•êï@h›@•êë…¸R@•êéCøƒ@•êë…¸R@•êÔÍ šF@•êë…¸R@•ëHõva@•êë…¸R@•ëEb´§@•êë…¸R@•ëUËè.U@6=:’£@6/›ˆ*@2E?|í‘h@28J¦<1q@1’Ðå`A‰@1|j@¯¯Z@1J0U2a|@18v -‚èÃ@1J0U2a|@17Mà}U@1J0U2a|@18ܦËf2?DÛ5C‹?™ªm°:S?—(îÕ‚A?“¥aG€¤S?›ñ½´îÌ?•r¹beEZ?‚5Ù‹?›íÆbÜZ*?¡$ñÑ( ?˜K[À×?’zd¡ŠHô?@'ÃP?”VOhŸZ?“¯øgýR§?“1݉?$õ?¸ÝXTl?‘j*Ó«l?–’¾“"5@@.@,@*@<@<?ð?ð?ð?ð?ð?ð¿sábA?„‘²Ö`@?eB`Õéªè?\“‰ØÃ@¡$ò¾åP8@•ë?{‰È?„ŸÌô̶ï?{rŽíòÏ@ zQ÷8?÷BW·óë@Ÿe©$@˜"^5?|î@˜"Trƒœ`@8 Î_oÒ@8 Xêš@2}‘hr° @2v85ö³˜@1Ãt¼j~ú@1½&Á\œ1@1cÉîËû@1]Ò8@1cÉîËû@1[Wåë(@1cÉîËû@1Z¡«öÄ?˜—"ÝÚá?”÷dþâ¤L?’y"Bã´x?‘GQæèA?”ʦøŸ­ý?–D;§6k?®ÌÅþõ¤À?”ÞèÁu3?“g²’Pl?“Xy™b2«?•Àø·D+?–¯³F%]?.ªzu?޶$š‡ã?ƒ­àX[”Ì?ƒ1ž^ô€g?‰ó­v׿å?ŽÎPcÄWÕ@@*@(@*@<@;?ð?ð?ð?ð?ð?ð?ó–h`¿` ·Å]?4r$þƒä?HÑ¥Já"â@¦grÈ c@˜"XvVè?PšÃ¯ºÎ?]RŠKh¼é?“öÀvõÀB?¦£ Žäèd@Ÿožf}Þ@Œ@¢ Iº^@¢¾ùÛ"Ñ@¢ Iº^@¢²¢ÒÎ]@¢ Iº^@¢¦(§{,@¢ Iº^@¢¹Ji;@¢ Iº^@¢«c¹@¢ Iº^@¢«¨ Ö @”ÕdZ¬@”ÕiP€'@”ÕdZ¬@”ÕPKUÇ?@”ÕdZ¬@”ÔþB“¸@”ÕdZ¬@”ÕGúÒi@”ÕdZ¬@”Õ$“'¦ñ@”ÕdZ¬@”Õ<ˆ -¢@6>«6z@6a®pÁ4@3Ù‡+@3 ÷_Óm@2ûƧï²@2Ó_ïK:ï@2Þi­BÄ@2Çgü³?@2Þi­BÄ@2|ât£¢@2Þi­BÄ@1ût+/¸?~ì“?ÕÒJ?ž*pÌ@¾"?ªÓ vWa?Œ×6åÌ?˜nƒ¢Š¸?œ®•Ùû ³?}x—™ ?’;â9Ö?“;+Ìt"\?“ÍÌËdÏ@@,@*@@<@:?ð?ð?ð?ð?ð?ð¿må48 ¿v¼ -ü?O‹n[IY?R«üŸ>ãî@¢¸Æø+‰@”ÕTàÑöH?kl\£ú÷ó?pú3Í;M“?ÞóEèwS?äajX˜@Ÿdl¿‰„@@©XöE¡ÊÁ@©Xö‡+ @©XöE¡ÊÁ@©Xö»˜Çã@©XöE¡ÊÁ@©Xö»˜Çã@©XöE¡ÊÁ@©X÷KƧð@©XöE¡ÊÁ@©Xõ$Ý@©XöE¡ÊÁ@©Xö4ê@©Ò?|í‘h@©Ò?|í‘h@©Ò?|í‘h@©Ò@4mÅÖ@©Ò?|í‘h@©Ò@N¤¨Á@©Ò?|í‘h@©Ò?Š Þ@©Ò?|í‘h@©Ò@uöý"@©Ò?|í‘h@©Ò?|í‘h@4Ç>«6z@4Ç$tSŽô@0J^5?|î@0J^5?|î@0`A‰7L@0`A‰7L@.ð‰ 'RU@.ðU2a|@.ð‰ 'RU@.ð:û~‘@.ð‰ 'RU@.ð¸ºÇ?|öOÿÝ?¾‰máÚ?‘7[ä­?‹ÑqÔ@vÿ?òǹíT­?ë+ʦÜ_?|¬Çëý ?’NÛˆV(?ß‹…&?;ß $Þû?ß’ºèh!?›ªU3Îp?‚nâwfÿ?ŒÆò/¢äÍ?‚íWçé…?‚ð'ã:ÂÝ?†©b/bJö?†¼Š˜L¥÷@@@@@(@,?ð?ð?ð?ð?ð?ð¿ûÕñ?3…À?&c£Ê»HØ?̬re±\@©Xöl¤éè@©Ò?«»ÑÆ?F;ñušÌ?::Ĺv>?šÃ9Õ‘²‡?Øý¦¶X\@Ÿfëð7Ì@Ž@©ŒÂ\(ö@©ŒÅ¡ÊÀƒ@©ŒÂ\(ö@©ŒÁaä÷f@©ŒÂ\(ö@©ŒÁä÷eþ@©ŒÂ\(ö@©ŒÃS&@©ŒÂ\(ö@©ŒÁ½¥@©ŒÂ\(ö@©ŒÂMÒñª@ ËC•@ Ê=p£×@ ËC•@ Ê~ùÛ#@ ËC•@ ÌIº^5@ ËC•@ ËC,¥@ ËC•@ ËjçÕg@ ËC•@ ˹Œ~(@6:qÞi­C@68õÂ\)@2° Ä›¦@2ä%®æ2@197KƧð@1:Ô,<ží@0Œ¿±[W?@0Žp:û~‘@0Œ¿±[W?@0Ž_oÒ @0Œ¿±[W?@0Žšv?ð°–Ž]?¾‰máÚ?‘šÕU#?ŒÖ -Äȱ?‘5ø gµÒ?ô Î]V?ð°–Ž]?’‡Iš÷?|™,Ž!?°‹Œ÷€?‘ ·èf?¦QÎð\ã?ð*wjs—?ŒÛÏ·+?„A'Š_^?„ mŠmsi?‡L8õASÎ?‡2[síç?ð@@@@(@&?ð?ð?ð?ð?ð?ð¿8­-„?1eÔçÒ?2´$DNô€>íà:^ÆÄ‰@©ŒÂgs4Æ@ Ëg™i?A˘°ulñ>û¾boïÞ?}R ÄÎGÐ>ðXšÌÐaE@Ÿs˜åxa÷@@¤Û3¶E¡Ë@¤Û6E¡ÊÁ@¤Û3¶E¡ËÁ.„€@¤Û3¶E¡ËÁ.„€@¤Û3¶E¡ËÁ.„€@¤Û3¶E¡ËÁ.„€@¤Û3¶E¡ËÁ.„€@¦må`A‰@¦m~¸Që„@¦må`A‰Á.„€@¦må`A‰Á.„€@¦må`A‰Á.„€@¦må`A‰Á.„€@¦må`A‰Á.„€@7uS&Á¾@7P°ò{²þ@5}‘hr° Á.„M‰ûçm@5å`A‰7Á.„QnÙ‡@4 ù kºÁ.„NÜC,¥@4 ù kºÁ.„NÜC,¥@4 ù kºÁ.„NÜC,¥?™™™™™™š@8#˜@8¾:@8 >+@8Iç@8Ù?‡YÍ_@8Î÷@8i§@8Å@8S@8û—?„‘Za¹P@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@«ØŠ=p£×@«ØŠ=p£×@«ØŠ=p£×@«Ø‡ÈK]Í@«ØŠ=p£×@«ØÊÀƒ@«ØŠ=p£×@«Ø{šu@«ØŠ=p£×@«Øö”F@«ØŠ=p£×@«Ø$Ý/@¡`ÎÙ‡+@¡`ÎÙ‡+@¡`ÎÙ‡+@¡`Î.±Ä3@¡`ÎÙ‡+@¡`ÎzáI@¡`ÎÙ‡+@¡`Ïß;dY@¡`ÎÙ‡+@¡`Щ*0@¡`ÎÙ‡+@¡`Í«ŸU›@3 ]cˆe”@3 j~ùÛ#@/²-V@/ Iº^5?@.rn—Oß@.múCþ\’@.£¼ÓZ…ˆ@.›˜Çâ‚B@.£¼ÓZ…ˆ@.š^5?|î@.£¼ÓZ…ˆ@.›‹¬q ³?|¬Çëý ?Qdöÿô¼?“ï~í"?™ ­:>Co?–Õ“z‰öì?”º²¶;?|¬Çëý ?’›ÈÖÝ?ö”iåó¨?’.p»Cþ?’Bg4ð3f?ó‹P=´?‚oÁÆÜ§ö?Œáò¯ž¼ù?‚á²Olºý?„ªÎZ´?ˆ¾þúWZ‹?Š*ÊÔQãú@@@@@,@*?ð?ð?ð?ð?ð?ð¿d­GŸ’¾ã Π?Or^•ñwÆ?/“oQ*’@«Ø„ÛgÙ†@¡`Îï q\?or<ÐÚõ?O|ß˺ƒî?â êÀ©k}?©!QÈGÝ€@Ÿe” “׺@‘@«lýó¶E¢@«lþvÈ´9@«lýó¶E¢@«mƒn—@«lýó¶E¢@«m Iº^@«lýó¶E¢@«lüí‘hs@«lýó¶E¢@«lÿò䎋@«lýó¶E¢@«m[À8@«(‡+ @«(È´9X@«(‡+ @«(A [¿@«(‡+ @«(PHï@«(‡+ @«(àuöü@«(‡+ @«("Ðå`@«(‡+ @«(=Ùd@4(†YJôñ@4(*™0¾@2c÷ÎÙ‡@2a$Ý/@2t“t¼j@2q&éxÔþ@1ÔmÅÖ8†@1Ò•éá°Š@1ÔmÅÖ8†@1ÑG®zâ@1ÔmÅÖ8†@1Ñ×Ûô‡ý?€‚ñêã ?Eˆ‡ðó‹?”^RžpX?‹û…†_?‘¿ -Óñ›?‘¦ µÚ?|öOÿÝ?’j%ÓRa?”ß<ö¥?‘¼Øzé±ï?’êJ>áý?±—'¶Ü+?‚|׿pY?Œ¾»•lŽ?† - Ðló]?†3_¾ˆ?‰©OO ¨?„å;m7.@@@@@,@?ð?ð?ð?ð?ð?ð?0/''p?L%$ H?7:½·^û?A2@ßG]@«lþ»È—Ã@«(ùHŸ?VíæuR"?aÒ‚Xì Ñ?¹r»zÆ)?͵³áÔÛÒ@Ÿg0Õì¸ý@’@Ÿ¢NÙ‡+@Ÿ¢=Ó¼Ú°@Ÿ¢NÙ‡+Á.„€@Ÿ¢NÙ‡+Á.„€@Ÿ¢NÙ‡+Á.„€@Ÿ¢NÙ‡+Á.„€@Ÿ¢NÙ‡+Á.„€@Zž¸Që…@ZT‹@Zž¸Që…Á.„€@Zž¸Që…Á.„€@Zž¸Që…Á.„€@Zž¸Që…Á.„€@Zž¸Që…Á.„€@7>«6z@7»ÝA)ú@4«¥ãS÷ÏÁ.„M‰ûçm@4ˆ“t¼jÁ.„QnÙ‡@40–»˜ÇãÁ.„NÜC,¥@40–»˜ÇãÁ.„NÜC,¥@40–»˜ÇãÁ.„NÜC,¥?Œ1†YPÓ@8#˜@8¾:@8 >+@8Iç@8Ù?’ëà€l@8Î÷@8i§@8Å@8S@8û—?„D%aFy¼@8 * @8p÷@8¶@8 Ø@8 Ø@ ?ðøøøøøøøøøøøø“@¯aÏ\(õÃ@¯aΗOß@¯aÏ\(õÃ@¯aÑÎ^@¯aÏ\(õÃ@¯aÓMj@¯aÏ\(õÃ@¯aÔ¯O ƒ@¯aÏ\(õÃ@¯aÏ·éø@¯aÏ\(õÃ@¯aϪ͞…@«{¸Qì@«{Ðå`B@«{¸Qì@«{\(ö@«{¸Qì@«{×Ûôˆ@«{¸Qì@«{s×Ý@«{¸Qì@«{ÕfÏB@«{¸Qì@«{$ x@5í¥œàv@5çKƧï@2Ù‡+@2úCþ\’@1€å`A‰7@1[W>«6@1 -0U2a|@1“t¼j@1 -0U2a|@1y=Ùc@1 -0U2a|@1 ÞÑ·?|öOÿÝ?•ìspîî?’¿êvG¨½?Wø0 ¥?’š'†­`í?’?=ÆþÎò?„F/·ÿP5?’4 "ëžØ?‘ŽütÅÒ(?‡@Cvì×?‘ØèOÍ ì?‘õe\Š«p?„+£QKø?R©i»èi?ƒÆ×q„nð?„l¯¸‰ŒÎ?‡<û¡71?ˆCns¥ @@@@@,@,?ð?ð?ð?ð?ð?ð?Bø{.¸?SÜl?G “% L ?ï "äýì@¯aÐWºˆ@«{–=o"?h)Þt•y?=âyªz÷ð?ÚÛ¥]žS?€è£ Ž@ŸgØëÖ.I@”@«šô¼j~úÁ.„€@«šô¼j~ú@«šþ…àN@«šô¼j~ú@«šú^¬§Î@«šô¼j~ú@«›@Ðq·å@«šô¼j~ú@«›Ú @«šô¼j~ú@«›w½F@•+33333Á.„€@•+33333@•+q€cá@•+33333@•*–©ƒ@•+33333@•++¨äÜ)@•+33333@•, -#S‹`@•+33333@•,"Z$îû@7zqÞi­CÁ.„>¤µÜÆ@45ãS÷ÎÙ@3éîÒ7º@3ƒt¼j~ú@3:ÎÅ>…$@3L¿±[W?@2ûîMöÕÜ@3L¿±[W?@2û/Øu Í@3L¿±[W?@3â«Þ'@8J¨?¯‹Îˆé—`?¥IþQ‘§?¼wÇoÔê?Å¥ƒ·æ I?ÅÌ8Þ^Üž@8J¨?«´b–?¡˜d á?¼ÝМçõ®?Ãã`HlµØ?Æ \eeb@8p÷?¤`I›ÔM‡?–ñĺêñ?›Š•Hö¼X?¢iuòx_?  -6²[@&@"@,@<@;?ð?ð?ð?ð?ðøøøøøøøøøøøø•@¯¯ÌIº^5@¯¯ËƧïž@¯¯ÌIº^5@¯¯Ñ ²•ê@¯¯ÌIº^5@¯¯Ï–»˜@¯¯ÌIº^5@¯¯Ç“Ý—ö@¯¯ÌIº^5@¯¯ÅýŠÚº@¯¯ÌIº^5@¯¯Çï²-@©AÃn—@©AÂÐå`C@©AÃn—@©A Iº^@©AÃn—@©A½p£× -@©AÃn—@©AÂMÒñ«@©AÃn—@©AºÔ,<Ÿ@©AÃn—@©A¾¸Që†@5[¹Œ~($@5\„µÜÆ>@3uãS÷ÎÙ@3oÒòäŽ@3ï²-@3•$Ý@2YŒ~($ @2Týó¶E¢@2YŒ~($ @2UY³Ð|…@2YŒ~($ @2V€IQƒ?|¬Çëý ?—µ”öŒqÒ?•œ‘æ¦M?‘4ãM^?”Å¥ÒB–W?“¢¾_ÂÜ?|öOÿÝ?”ŸÚ²t©?”_й@’?’ƾ| ?“úaû]?’]Ðgµ0 -?‡9Â@0wæ?œ‘z¥æ?† - Ðló]?…p=¤J‰?‹¹ÇlŒ?‘4hÆpÉ„@@@@@(@*?ð?ð?ð?ð?ð?ð¿RrÓä¿RsÌ(?4 âdB˜?B ø» @¯¯ÉgÁÜv@©AÀ”ë¸?Sµ€"³9÷?bRéÝ%?±àz©©£?ÍÁ“Xi€ö@ŸeÛT‹Åè@–@¨Ó)ûçl‹@¨Ó)º^5?@¨Ó)ûçl‹@¨Ó€IS@¨Ó)ûçl‹@¨ÓµÜÆ?@¨Ó)ûçl‹@¨Óø7´¢@¨Ó)ûçl‹Á.„€@¨Ó)ûçl‹Á.„€@¡&×Oß;@¡&Ù‡+@¡&×Oß;@¡&ÙXbN@¡&×Oß;@¡&È´9X@¡&×Oß;@¡&Ð Ä›¥@¡&×Oß;Á.„€@¡&×Oß;Á.„€@7kµsê´@7oÅo@2«¥ãS÷Ï@2ŽùÛ"Ðå@1Æ“t¼@1¨7´¢3œ@1«xFÜ^@1pò{²þÆ@1«xFÜ^Á.„NÜC,¥@1«xFÜ^Á.„NÜC,¥?”¼íÒh??¢Û)Qé?—ø}òg?œÒø.D‡@8Iç@8Ù?¡ÅꯨŠT?¡i‹ë&6?”_й@’?± Çÿm -È@8S@8û—?†' -³}÷B?²É5†±ó?‹’Ú[ßõ?¡‹ áQ´?@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø—@­”µÂ\)@­”¶È´9X@­”µÂ\)@­”´ã¼Ó[@­”µÂ\)@­”»=ÈK@­”µÂ\)@­”·$tS@­”µÂ\)@­”´¼j~ú@­”µÂ\)@­”²ÊW§‡@¦I7Kƨ@¦H´9X@¦I7Kƨ@¦?—$tT@¦I7Kƨ@¦;=ÈL@¦I7Kƨ@¦?!-w2@¦I7Kƨ@¦=æšÔ-@¦I7Kƨ@¦A-w1‘@5–»˜È@5—$tS@30Ä›¥ãT@3/²-V@3t¼j~ú@3|„µÜÆ@2¡:’£S@2™­BÃÉï@2¡:’£S@2›ŸU›=@2¡:’£S@2à qv?€‚ñêã ?’ñ¼õì?‘âTÀÊS“?U›=ÈK?”#?3ÆÂƒ?“DŽèw–?€‚ñêã ?”2¦ww ?‘%gÇ¿µ?Y‡…—Ø?—?—³’sB?’Âuþ!BÖ?‚s@ˆaÚ?†¡HŸÊç?„W;RT?‰hS—p]Ð?‘˜M\ÿŠ?°4\ɵ@@@@@*@&?ð?ð?ð?ð?ð?ð¿Bã)}@¿amo|?4µÊ'Ä ?H+,‰9ý…@­”µÂƒ®0@¦Cª:kV?TwÀ[Ãr?h.²@âD?±b< -a1?ÖëûX¡ „@Ÿf¿U@û@˜@©biûçl‹Á.„€@©biûçl‹Á.„€@©biûçl‹Á.„€@©biûçl‹Á.„€@©biûçl‹Á.„€@©biûçl‹Á.„€@£ï¼j~ùÛÁ.„€@£ï¼j~ùÛÁ.„€@£ï¼j~ùÛÁ.„€@£ï¼j~ùÛÁ.„€@£ï¼j~ùÛÁ.„€@£ï¼j~ùÛÁ.„€@9>«6zÁ.„>¤µÜÆ@4xr° ÄœÁ.„M‰ûçm@3ÝV”Á.„QnÙ‡@2æYJôðØÁ.„NÜC,¥@2æYJôðØÁ.„NÜC,¥@2æYJôðØÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø™@¡Ã4¼j~ú@¡Ã4záG®@¡Ã4¼j~ú@¡Ã6E¡ÊÁ@¡Ã4¼j~ú@¡Ã6Ov`@¡Ã4¼j~ú@¡Ã6E¡ÊÂ@¡Ã4¼j~ú@¡Ã3g ù @¡Ã4¼j~ú@¡Ã3×Ûõ@«­V@«­V@«­V@«­jO@«­V@«¬cñA!@«­V@«®_oÒ@«­V@«¯ƒ{J#@«­V@«®ŠqÞj@0^Hè§ç@0^Ov_Ø®@-\j~ùÛ"@-\j~ùÛ!@-Ó¶E¡ÊÁ@-Ó@N¤¨Á@-p‰ 'RU@-o·éùs@-p‰ 'RU@-nóMj@-p‰ 'RU@-nŠqÞi®?É^³Dw'?ÖÈ ¼?‘4!Ÿ•p’?‹¹GüÞõ?‘õbÐ\?ÃwZL?ÐbMçê_x?’MœœN ?§^ ÿo˜?CÚ B÷?üÓqÔNŠ?]#ÍìO¤?€b¡´ñ@?Œ°¶.Ä+Æ?‚† SFò?ƒ†+ Å?†špk Y?†žóB» “@@@@@*@&?ð?ð?ð?ð?ð?ð¿TÁ8V?1Áüq”?=yºk?:˜MÉ~Ôg@¡Ã4˜êšþ@«®£Øª?Kð¶ªø¾;?I84Éo?“³n´^c?‹›®Qø@ŸsC{dw@š@¤ORn—P@¤ORñ©ûç@¤ORn—P@¤ORGE8ï@¤ORn—P@¤OU$Ü@¤ORn—P@¤OVR½<6@¤ORn—P@¤OVlô"@¤ORn—P@¤O]ŠÚ¹õ@«§l‹C–@«§l‹C–@«§l‹C–@««)^ž@«§l‹C–@«©“ àß@«§l‹C–@«©­BÃÉ@«§l‹C–@«ª~ùÛ$@«§l‹C–@«©ã¼@4è†YJôñ@4çâ‚@·€@2¦‡+ J@2§ÎÙ‡*@2'KƧïž@2'y¦µ @1ÜÚQÎ@1Ú’£S&@1ÜÚQÎ@1ØFÜ]d@1ÜÚQÎ@1Ö‡+ J?}Ñ¿ž,?“‹ë÷?’ª®pµ?’³Žbtx=?’°STðS?•Y‚¦\(?|¬Çëý ?•yom?•ÇØ¼áêZ?’ü#q\-v?’.<ù?’¨¢†¼ ¼?‚|׿pY?êzŽx?ŒÊ­#г_?‡¯½.SM?Šì¾ ;8´?‹¼`’ i2@@@@@&@(?ð?ð?ð?ð?ð?ð?YlÑt?Aãˆ??á†Gë’?) aÕÈ„@¤OUþeÐV@«¨­MÐ?_]ïý‰Û-?I¸ñΔ?Äk¾qûßÐ?5«iXº8@Ÿeì»R³*@›@«ÿ° Ä›¦Á.„€@«ÿ° Ä›¦@«ÿË)^ž@«ÿ° Ä›¦@«ÿǓݗö@«ÿ° Ä›¦@«ÿÁ‰7KÈ@«ÿ° Ä›¦@«ÿÊ @«ÿ° Ä›¦@«ÿÈðŽ@£/”záG®Á.„€@£/”záG®@£/µÜÆ?@£/”záG®@£/£ˆe”¯@£/”záG®@£/ŠÀƒo@£/”záG®@£/š6âë@£/”záG®@£/”¼@9=:’£Á.„>¤µÜÆ@5i‡+ @5ZôðØDÐ@4v§ï²-@4i#¢œwš@3«xFÜ^@3 å`A‰8@3«xFÜ^@3•Ϫ͞„@3«xFÜ^@3šOv`@8J¨?¢Ú>¨I ¿?°û}\ie?£à•ÒnÁ?£Mµ¼Ä1?¡úIä?^e@8J¨? us76Ùc?¢n®Ú| X?›‘Ûê\PK?­0d@Ïè‹?¥ <»Þ\@8p÷?¡Ö$•3É?š6v;vî?>æ¿Îï?£,ãR¯o?¥ÕS^^G>@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøøœ@£r»çl‹D@£r¼(õÂ@£r»çl‹D@£r½p£× -@£r»çl‹D@£r½IQ‚ª@£r»çl‹D@£r½cˆe–@£r»çl‹D@£r»šu@£r»çl‹D@£r»/ìVÖ@¥·+ Iº@¥·+C•@¥·+ Iº@¥·*³g ù@¥·+ Iº@¥·*ôðØF@¥·+ Iº@¥·+6z@¥·+ Iº@¥·+xFÜ@¥·+ Iº@¥·+C•@1¥öý!ÿ.@1¦ -¦L/„@)³t¼j~ù@)³üPH@'Ýó¶E¡Ë@'ÝÌcñA @'fL/ƒ{K@'e¼£n/@'fL/ƒ{K@'e¼£n/@'fL/ƒ{K@'eÉã½?É`¯&xŽ?ÉGãA­÷?‘ÌË>¯f?‹µ™eU!µ?òǹíT­?¸û:?ÐbV‡,?’˜‰%F²?€s8rÅ?7枪y7?ß’ºèh!?NÂò‚Ì`?€cPßQª?Œ¬Çëý ?‚oÁÆÜ§÷?‚ãaÎúvh?†ˆ#.÷?†ŠúЀ>(@@@@@,@*?ð?ð?ð?ð?ð?ð¿P¤‚ƒ>ÿòý ?8lÅ1±E±?Aj²o æ@£r¼…»b@¥·+NÓ©?G~ÓðîÑj?#/LÙÔÇ4?‹¦åaë%?@ukƒw@Ÿsè‡;‡@@¤l¸Ôýó¶@¤l¶“v@¤l¸Ôýó¶Á.„€@¤l¸Ôýó¶Á.„€@¤l¸Ôýó¶Á.„€@¤l¸Ôýó¶Á.„€@¤l¸Ôýó¶Á.„€@¢þâÐå`B@¢ÿ  Iº@¢þâÐå`BÁ.„€@¢þâÐå`BÁ.„€@¢þâÐå`BÁ.„€@¢þâÐå`BÁ.„€@¢þâÐå`BÁ.„€@9šÔ,<Ÿ@9‚©“ á@6k¥ãS÷ÏÁ.„M‰ûçm@6 ²-VÁ.„QnÙ‡@6 -0U2a|Á.„NÜC,¥@6 -0U2a|Á.„NÜC,¥@6 -0U2a|Á.„NÜC,¥?žŒÝÙ›P@8#˜@8¾:@8 >+@8Iç@8Ù?š•§q!U@8Î÷@8i§@8Å@8S@8û—?µ*”éÌ’@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøž@¡Ç…¡ÊÀƒ@¡Ç‚MÒñª@¡Ç…¡ÊÀƒ@¡Ç„Âø7µ@¡Ç…¡ÊÀƒ@¡Ç‹àÞÒ‰@¡Ç…¡ÊÀƒ@¡Ç‚¶®}V@¡Ç…¡ÊÀƒ@¡Ç~\‘ÑN@¡Ç…¡ÊÀƒ@¡ÇxQë…@¡úÞ¸Që…@¡úÞ5?|î@¡úÞ¸Që…@¡úã× -=q@¡úÞ¸Që…@¡úߊ ß@¡úÞ¸Që…@¡úèK]Ìd@¡úÞ¸Që…@¡úá‰7KÇ@¡úÞ¸Që…@¡úÜPHð@7šÔ,<Ÿ@78ï4Ö¢@3Ê^5?|í@3Æ_Ø­«Ÿ@2U`A‰7L@2TêJŒM@25µsê³h@23¯·éú@25µsê³h@22:)Çy§@25µsê³h@2-\ú¬Ùè?žˆ2}?“+ÄWè?“=P™Ê?“ׂa†Üü?”‰Wïÿ·?Ÿ@*Få?‚á²Olºü?˜&§dU(?‘Ûcu%ç+?”`íÖ†›?”¡S•Ÿ¯?•ÔWŒ°R¨?‚íWçé„?—E!Üý·'?ŠÇÿú?Q§ ç´Í?‰©OO ¨?Š—à `ž@@@@@*@*?ð?ð?ð?ð?ð?ð¿R®™´?@ÿµ°8?E|ì¬W(¢?TŲȺç‚@¡Ç€=˜.@¡úàJCx?d¦KÅ?t˜ø¾äÓO?ȯ¸ŒÿçL?ëº ÐŸ,ð@Ÿf[ØÌ9@Ÿ@£ƒð Ä›¦@£„Ä›¥ã@£ƒð Ä›¦@£ƒÞš@£ƒð Ä›¦@£ƒó3333@£ƒð Ä›¦@£ƒË’:)Æ@£ƒð Ä›¦@£ƒñœàu÷@£ƒð Ä›¦@£„ùÛ"Ò@«jt¼j~ú@«jnV“@«jt¼j~ú@«jnzáI@«jt¼j~ú@«j‹ÓÃa@«jt¼j~ú@«jmžƒä%@«jt¼j~ú@«jj#9Àì@«jt¼j~ú@«jSÃaA@8eöý!ÿ.@8b½<64@4J^5?|í@4L£n.²@3V”@3§Xâe@3L¿±[W?@3WOß;d@3L¿±[W?@3L£n.²@3L¿±[W?@38ð¹?–ªÎ­¡?–„Ø?8ˆ?¡ÙuüZÍ?§¶¡Àc?¨ƒ ¹´?³†Z Ü—?Ž=fA:?›Ò¦—†ž?©º?SRÏ?«­Îþl^%?˜ -†Y ë*?¸üTPš?¡ÿ¶?B ?¥\7e)?¨Y²Y¬Æñ?™/#ÕË®r?óRÏ4?™Øl›¹@@@@@(@&?ð?ð?ð?ð?ð?ð¿jñ3´¿W)éjð?zå=~Ý8A?Q4×±aÐ@£ƒõßGtF@«jk…ˆæ?™—Ç2H^?pêOã¡Y@íÇñ3àh?ÈYIQÈ–È@Ÿf’5¨¿@ @©áÑhr°!@©áB\(ö@©áÑhr°!@©áÊ Þ@©áÑhr°!@©áÆ$Ý/@©áÑhr°!@©áÈ Ô•@©áÑhr°!@©áËŸU›>@©áÑhr°!@©áÇ_oÒ @«ízáG®@«í|(õÂ@«ízáG®@«í á°‰ @«ízáG®@«í -Ížƒã@«ízáG®@«í?@«ízáG®@«í¾ß¤A@«ízáG®@«íü¹#¢@7wâ‚@·€@6È$ xG@3E?|í‘h@3=ÌcñA @2•`A‰7L@2—ö+jè@1î_oÒ @1ãÝ—ö+k@1î_oÒ @1ê)Çy¦µ@1î_oÒ @1ç8}¿H?áüBØ&³W?’@k=[?”lš5B¬î?ŽAtùð¥t?’¥.Kn Í?’¯-! )m?Ú. Íù#?”ï©ÛÉ?“?T¾¹µ ?”A8 Kú¿?’8,²ñ±T?•ÔWŒ°R¨?öªë˜Zj¯?ï7è-ÖR?„„OW°ó?‡¯½.SM?‰©OO ¨?$Ìj½BÙ@@@@@*@$?ð?ð?ð?ð?ð?ð?*ÁÎÄ0?L˜ò+ ?aTá¬OÄ[?oMÝò/]@©áÈØÌü“@«í -*5æ?p}‹© -›Z?{¦œXOà?ÕÔóíÙ•ê?çut%PC@ŸsC(mºM@¡@¡<¶È´9X@¡<¶È´9X@¡<¶È´9X@¡<±Fª?U@¡<¶È´9X@¡<°‡’ÃÏ@¡<¶È´9X@¡<º›¡»„@¡<¶È´9X@¡<¾üÊuš@¡<¶È´9X@¡<¯ Ê×V@œcS÷ÎÙ@œbÐå`C@œcS÷ÎÙ@œ~ ¨ -ð@œcS÷ÎÙ@œZ¶Ö@œcS÷ÎÙ@œK-z®8@œcS÷ÎÙ@œ*Â;a @œcS÷ÎÙ@œU‰4'A@3¿–»˜È@3¾á[ Ͼ@0…?|í‘h@0 ‚#+ @/´ýó¶E¢@/­Ž·¸UF@/åÉä@/zåsŸÑÉ@/åÉä@/…ˆÁ>™b@/åÉä@/yI×K( ?}@T˜ÁÎ¥?’é0§ÕÎq?‘S4zïÎs?‹Ó&=ø?]?‘ ó—4ˆw?•§2ðñ?|Ñb×¶@?”¦´´ç´?€€óì–'?P}^ˆU=?‘Ã-ß(?‘ãùR¿?‚r—Ge?‘ÓªÑýœ?„t(XW?ƒ3êp>?” ÝšÒi?“«=ºÜx@@$@@@.@1?ð?ð?ð?ð?ð?ð?@/íпl”w Þ?V¤¢ü!Æ?b¸è¸}@¡<¸KÁ.!@œRî8!?u¦W0ÀP?‚Oû‰[?öÙTÇV_—@¬[¿1Ó@ŸfPð @¢@®îûçl‹D@®îýp£× -@®îûçl‹D@®ï$Ý0@®îûçl‹D@®îþš@®îûçl‹D@®îÿ¾vÈ´@®îûçl‹D@®îûÀ6ã@®îûçl‹D@®îý!ÿ.I@£*¤Z¬@£*œí‘hs@£*¤Z¬@£*£× -=q@£*¤Z¬@£*¥ðoiD@£*¤Z¬@£*¡ä÷eþ@£*¤Z¬@£*¤Ý/¡@£*¤Z¬@£*¤÷eý‹@5T xFÜ@5PÑ·Xâ@2ã÷ÎÙ‡@2æµ '»@24“t¼j@28r° Äœ@1™Œ~($ @1›xFÜ^@1™Œ~($ @1šÀƒn˜@1™Œ~($ @1šÇË)_?€‚ñêã ?”SyÑûê?’µ<ëvar?Œ9‚Ù.?’»–j˜ú?‘C!ƒžÈ? Eˆ‡ðó‹?•jÒb¹¾®?“èËôy?Ä…à6 -æ?‘êë·áþA?‘C å;Ã?šÒÅšnê?‘ -òtMŠ?‡9Â@0wç?„ìsMQ(Œ?‡YÍ_?ˆ -¿„r©Ý@@@@@,@*?ð?ð?ð?ð?ð?ð¾ÿ£Ñ=?Z»÷‡,?;43¦ÿ¼K?4@ßùP@®îýšç÷€@£*¢óîf?`3èo¼0?MØGj·?Àú‘Ë\&?‘1¬fú4@Ÿmîp̧%@£@¢ªÆ§ï²@¢¨ A‰7L@¢ªÆ§ï²@¢¨¸ºÇË@¢ªÆ§ï²@¢¨Â Iº]@¢ªÆ§ï²@¢¨¼‘ÑN<@¢ªÆ§ï²@¢¨©Dg8@¢ªÆ§ï²@¢¨°|„µÞ@Ä+ Iº@Ì'l‹C–@Ä+ Iº@Ëóê³g @Ä+ Iº@ËÐHð@Ä+ Iº@ˈ1&éz@Ä+ Iº@Ì©“ á@Ä+ Iº@Ìu%F @7Û¹Œ~($@4fffff@4©‡+ @0”SŽóMj@4t¼j~ú@0 #¢œwš@3°–»˜Çã@/C,¥zxn@3°–»˜Çã@/87´¢3œ@3°–»˜Çã@/@>ØjO㛦@ŸdÙ®.×@¤@¢ôíV@¢ôì‹C•@¢ôíV@¢ôíjO@¢ôíV@¢ôíOß;d@¢ôíV@¢ôí¸ºÇ@¢ôíV@¢ô첕éâ@¢ôíV@¢ôì¥zxl@®Rn—P@®R° Ä@®Rn—P@®RÊW§‡@®Rn—P@®R•éá²@®Rn—P@®R䎊s@®Rn—P@®Rñ©ûè@®Rn—P@®R䎊r@0D¯O „M@0D¯O „M@*)7KƧï@*)*0U2b@)h1&éxÕ@)h Ô•+@(̲•éá±@(̘_ö•@(̲•éá±@(̲•éá²@(̲•éá±@(̲•éá±?É^žQ5P‚?Ï[äeÊxê?$ë.¦ÑÕ>ó>ƒ¼=eP@¢ôíL@Œ@®Rè“®ô?3>pzc‹y?3xÎà[?b+ù+ë>ý 7Z,ä@ŸsIѨZ@¥@­tÚ¬1@­tÞ5?|ï@­tÚ¬1@­tÐ£× ->@­tÚ¬1@­tÝ}¿H€@­tÚ¬1@­tߊ Þ@­tÚ¬1@­t؆YJö@­tÚ¬1@­tÞi­BÅ@¾« Iº@¾²-V@¾« Iº@¾©ûçl‹@¾« Iº@¾œ¬1'@¾« Iº@¾„M:“@¾« Iº@¾¹=Ùd@¾« Iº@¾—$tS@7-¥œàv@7/b¶®}V@4Å?|í‘h@4µ¸Që…@3ß²-V@3Ý}¿HÌ@4ý!ÿ.I@4¸Që…@4ý!ÿ.I@4'†Â&€ž@4ý!ÿ.I@4ƒ{J#:?‘â%ì˜ ä?•ßóV_Ü^?•|®6zj?©aµ`aÊ?¦p3/ ¤?š›dFÍ?}Ñ¿ž,?—8©$ -"º?™”uÀdª? Ñ¡b£?¾?¢ üb9Ú×? !™¡kz7?ŠÇÿú?•)1Îá_?³&Ô,ô?±å«Oÿ.­?¢ÈÀºn–¿?±GÔšÔj@@@@@,@ ?ð?ð?ð?ð?ð?ð¿%àJ]¿d‘þ›#?A^÷ÔÑ ?byì"@­tÝÍB'@¾§ÏP?c‹q[b?‚ð¦Óæµ?¯S6ƒ#i°?÷åÉ S z@Ÿfp_Gm£@¦@­7O\(õÃ@­7a$Ý0@­7O\(õÃ@­7WeýŠÛ@­7O\(õÃ@­7SMj@­7O\(õÃ@­7UY³Ð|@­7O\(õÃ@­7Mí(Œç@­7O\(õÃ@­7MBÃÉï@¡þå`A‰@¡þ¡$Ý/@¡þå`A‰@¡þ’n—P@¡þå`A‰@¡þ°ò{³@¡þå`A‰@¡þ•¨Xy>@¡þå`A‰@¡þ‰ 'R@¡þå`A‰@¡þ’:)Çz@9 Î_oÒ@9Fs×Ü@3ør° Äœ@3øK]Ìcñ@3q‰7Kƨ@3uzxl"h@3‚@·€5@3Që…¹@3‚@·€5@3‡+ J@3‚@·€5@38}¿I?´M ó¬^õ?’Z†Aži?˜U%ÛÌx?Ú¾ÉÛ²º?”§RXFÖf?˜Cíˆi- ?µÕjùq®p?“ÈÂ`?˜€OìØ¯i?@§[*^?”dápŠ?™J•Ø3ÈÖ?–¥}°i?\{ÏïŽ?†Æ‹™ÿ?ˆã1µR?ˆT“Ÿÿ?ŽNîV˜C&@@@@@(@,?ð?ð?ð?ð?ð?ð¿p—¿–ð¿ci+r?KH\•ß™&?Qþžô¿@­7Qõúcª@¡þ“º¥Ø?[@!)‚ ?aÚCÈB¹?©Éùªçu·?´ >îá½@Ÿp‡9>½@§@¢^¥`A‰7@¢^žvÈ´9@¢^¥`A‰7@¢]̲•éâ@¢^¥`A‰7@¢]ÚÔ,< @¢^¥`A‰7@¢]7ö+jè@¢^¥`A‰7Á.„€@¢^¥`A‰7Á.„€@¦«³3333@¦«¤›¥ãT@¦«³3333@¦¬f -¦L/@¦«³3333@¦«¼64@¦«³3333@¦«Ì‹C•@¦«³3333Á.„€@¦«³3333Á.„€@8·â‚@·€@8¹³Ð|„¶@4Ìí‘hr°@4+ÓÃa@@4~ùÛ"Ñ@3~ƒä%®æ@3kxFÜ^@3Ov_Ø®@3kxFÜ^Á.„NÜC,¥@3kxFÜ^Á.„NÜC,¥?|öOÿÝ?Å)—·#á?ß´UmsA?ÊyÄHá>c@8Iç@8Ù?¥K¶{Oÿ?¿l{׬?׉B,|̶?¼8‘F²µ@8S@8û—?±¶K¬ÞYæ?·z‡ÏÓJ?ÇæWüÌ©'?±/Ö…tÿ,@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø¨@­‰“t¼j@­‰”ýó¶F@­‰“t¼j@­‰®æ1ø¡@­‰“t¼j@­‰ÆL/ƒ{@­‰“t¼j@­‰­Òñ©ü@­‰“t¼j@­‰£¼l?@­‰“t¼j@­‰¢Õ$ô®@œ&MÒñ©ü@œ&M5¨Xy@œ&MÒñ©ü@œ&…8ï4×@œ&MÒñ©ü@œ&‡Ë)^@œ&MÒñ©ü@œ&qÞi­C@œ&MÒñ©ü@œ&{…¤—Å@œ&MÒñ©ü@œ&#pÅ¢@5–»˜È@5€SàO:<@3#÷ÎÙ‡@2ÿ¾vÈ´:@2~V“u@2V+jçÕg@2ý!ÿ.I@1ù 'RTa@2ý!ÿ.I@1ù£â2@2ý!ÿ.I@1õ®½ði?€Ã{s°úi?®ÖJ éf?¸þåx€+?£¯u]÷¥?£c‰Aqæ¤?¢H ¢N_Î?|çµB &€?º¹•»È?¹8䂪P$?¨F'^÷ŠD?§~c]–êl?™Æjð8g/?ƒÄV©äE ?ªájÔø$Û?¬¯¥´öE@©@¨° Ä›¦@¨°bMÒó@¨° Ä›¦@¨¯€‚è“@¨° Ä›¦@¨°YßB@¨° Ä›¦@¨±ú D@¨° Ä›¦@¨®Ý @¨° Ä›¦@¨¯™øX,@•ÒäZ¬@•Òã¼ÓZ†@•ÒäZ¬@•Ò彨>@•ÒäZ¬@•ÒäÅïðË@•ÒäZ¬@•ÒãôÓ`‚@•ÒäZ¬@•Òä;ÿfq@•ÒäZ¬@•ÒäÒ^µ@4zqÞi­C@4ziÜn¦@0Œí‘hr°@0Œó˜épq@0ï²-@0 /¡­W@.½Vlô"@.½ÞJü@.½Vlô"@.½’Ã&‹S@.½Vlô"@.½„M:”?|Ñb×¶@?ÐU£L p?‘1õ‡²"?‹ÁË…ÉT?ðgû*ã±?Ïà­î®š?|çµB &€?’Ø úR?U.VŽœ?FàQ"qH?Ù™r“‘?ZÒì#¼\?‚¨ò15?Œ°XI¬|!?‚ÄA„vÀ?‚ê¬Ù:âk?† Ýèƒ?†•‘d®Bæ@@(@(@,@:@:?ð?ð?ð?ð?ð?ð¿& ¸¤?*î¹`?)jou8IÜ>ìbýè¼C±@¨°ª{†@•Òãë‚2°?IJN˜?? îÒe±?¡eÚjCºé?%Åî&¬þ@Ÿfú0£³@ª@ªŠfffffÁ.„€@ªŠfffff@ªŠAohÜ@ªŠfffff@ªŠ\wškQ@ªŠfffff@ªŠi­BÄ@ªŠfffff@ª‰Ð‰ 'R@ªŠfffffÁ.„€@”Y#× -=qÁ.„€@”Y#× -=q@”XþÅm\û@”Y#× -=q@”Z!-w1@”Y#× -=q@”X>vÈ´9@”Y#× -=q@”X Iº^@”Y#× -=qÁ.„€@9¥öý!ÿ.Á.„>¤µÜÆ@4Œí‘hr°@4Ë’:)Ç@3â-V@3­ó¶E¡Ë@3cÉîËû@3*^5?|î@3cÉîËû@3E2a|Ú@3cÉîËûÁ.„NÜC,¥@8J¨?¶²ÅRž{•?Ã> -ØöA?ÀÔÒ’¢Ÿ?·oŠÀ‡”@8Ù@8J¨?³…±Û!ø?Ã>¦¹ý—?ÂtC½ãœ?®èÚB.ªå@8û—@8p÷?«Ÿ¾=X?¼°=É9?¥÷RãÅü^?®ï£îÏé@8 Ø@@@@*?ð?ð?ð?ðøøøøøøøøøøøø«@ªu·ÎÙ‡@ªu¬Iº^5@ªu·ÎÙ‡@ªu¹b¶®@ªu·ÎÙ‡@ªu²×sû@ªu·ÎÙ‡@ªu¾ÒˆÎp@ªu·ÎÙ‡@ªuÀƒn—@ªu·ÎÙ‡@ªuÁG®z@©‹wÎÙ‡@©‹}/Ÿ¾@©‹wÎÙ‡@©‹^ߤ?æ@©‹wÎÙ‡@©‹Që…¸@©‹wÎÙ‡@©‹mjO@©‹wÎÙ‡@©‹d›¥ãT@©‹wÎÙ‡@©‹gË)_@7òÃÉîËû@7æ1ø .@3E?|í‘h@3:u%F -@2d¼j~ùÛ@2X*™0¾@1Œ¿±[W?@1ë…¸R@1Œ¿±[W?@1}Oß;dZ@1Œ¿±[W?@1'»/ìW?|öOÿÝ?‘6 '8?•XYäý?r*ž¾Ž?—ÒGþUÀ?˜ÝÈYD? Eˆ‡ðó‹?’uß¿çÒ?—ˆ”„òõ¤?“AúìÊ„?—QÀ–Íù?œøD4f™?ëýK|æ?¬HO?…cü›Š×Õ?‡9 ƒ–’”?ˆk! ¨l?™GXêâ@@@@@,@,?ð?ð?ð?ð?ð?ð?u*3(h¿tPÑ -F?Nø<}Úå?SùT'÷µ@ªu»,àˆP@©‹mBbž?r+´n—­g?mœì±«Å?Þ œ/ÕïX?ÆÕe2‰ô@ŸkÚë¤J@¬@¢´®záH@¢´¯\(õÃ@¢´®záH@¢´¯Òòå@¢´®záH@¢´®;Í5¨@¢´®záH@¢´®¤¨ÁU@¢´®záH@¢´­\ú¬Ú@¢´®záH@¢´¬ô!-@¨&ŸQì@¨&¿;dZ@¨&ŸQì@¨&ÈË’:@¨&ŸQì@¨&ÅF -¦L@¨&ŸQì@¨&Ƶ (@¨&ŸQì@¨&Æ$Ý/@¨&ŸQì@¨&Åm\ú®@7 ]cˆe”@7y¦µ @2’ Iº^5@2‘×Ûô‡ü@2U`A‰7L@2UÜÆ?@15µsê³h@16YJôðØ@15µsê³h@168†YJõ@15µsê³h@16“t¼?‡YÍ_?ûJ`ÕYð?‘£Ä›è?Œ2ÌUÃT?’(æ„+Zk?’ïJ8Èž?гá‡}?’Q_Ú¸FN?ŽËÜ¿€?’ÁÛ/’:?‘ØèOÍ ì?‘C å;Ã?•bkòì?3I¶#i?…~ÆÎÇ$‡?†3_¾ˆ?‡YÍ_?ˆ©{2¡Î@@@@@,@*?ð?ð?ð?ð?ð?ð¿?p{ø?W¦D=?<ýž•ø?Byñ;­°@¢´®<›â¤@¨&ÃÈ’Ì?88obtÝ?bF4Í Š?t´çúÙ]†?Äøß"D@Ÿj\†ñºW@­@ ÔÎÙ‡+@ ÔÑ&éxÕ@ ÔÎÙ‡+@ ÔÛxÄX¬@ ÔÎÙ‡+@ ÔÝ6 ¤·@ ÔÎÙ‡+@ ÔকǞ@ ÔÎÙ‡+@ ÔÐ?îî @ ÔÎÙ‡+@ ÔΣ€Ñ@§+Ðå`A‰@§+ÐK¡Ðl@§+Ðå`A‰@§+é¡ÝPí@§+Ðå`A‰@§+ð9Û’@§+Ðå`A‰@§+âRû»@§+Ðå`A‰@§+×ÛB¬@§+Ðå`A‰@§+îÍ6\@6ð4mÅÖ8@6ñÝ$‰Ù¢@2õãS÷ÎÙ@2燛SZ¦@2²-V@2;6K.@1¸DЩ*@1¥•Ö .T@1¸DЩ*@1¨àç%$@1¸DЩ*@1ª³|òà?ƒ_ÿKt˜à?™º0–„7Ä?—DÊŠ,?ŒÃ0íj+ä?’x††d?’läËU?ƒ…†r÷šâ?©1èÂéé?¢š¦ðÓÈ?í¹a0 ”?‘èçý>"?žŒ®Û- ?†¡ÎUë##?ð¾¾LE?žó³Ëö?VDx-~¥?‹è¹”†?—šú]‡…_@@"@$@@0@2?ð?ð?ð?ð?ð?ð?5ý P?ph=@€?dZÌx¬V¢?aá¼T1õC@ ÔÔ:måÞ@§+Ùºô]b?ƒ²•†Q?!n­ *š@ì^²zÚ@.ÖRähR@Ÿg^ÛŽŠL@®@ sY‡+@ sS3333@ sY‡+Á.„€@ sY‡+Á.„€@ sY‡+Á.„€@ sY‡+Á.„€@ sY‡+Á.„€@Ÿ§hr° Å@Ÿ§cS÷ÎÙ@Ÿ§hr° ÅÁ.„€@Ÿ§hr° ÅÁ.„€@Ÿ§hr° ÅÁ.„€@Ÿ§hr° ÅÁ.„€@Ÿ§hr° ÅÁ.„€@7>«6z@6ì¾ß¤@@3xr° ÄœÁ.„M‰ûçm@2>V“uÁ.„QnÙ‡@1ÔmÅÖ8†Á.„NÜC,¥@1ÔmÅÖ8†Á.„NÜC,¥@1ÔmÅÖ8†Á.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø¯@¤HaÊÀƒ@¤HaÊÀƒ@¤HaÊÀƒ@¤Haä÷eÿ@¤HaÊÀƒ@¤Ha×Ûôˆ@¤HaÊÀƒ@¤Hb@·€4@¤HaÊÀƒ@¤Ha-w1@¤HaÊÀƒ@¤Hbe+Ô@¤þ(õÂ\@¤þ(õÂ\@¤þ(õÂ\@¤þ(õÂ\@¤þ(õÂ\@¤þ)*0U1@¤þ(õÂ\@¤þ%S&Â@¤þ(õÂ\@¤þ'»/ìW@¤þ(õÂ\@¤þ(Œç°@2D¯O „M@2D¼j~ùÛ@0µãS÷ÎÙ@0µÏªÍž„@0ï²-@0´¢3œ@0Þi­BÄ@0N;Í5¨@0Þi­BÄ@0ÑN;Í6@0Þi­BÄ@0ÊÀƒo?É^žQ5P‚?°çR;?‘\H{gX ?ŒÖ -Äȱ?‘§›ßÉîj?‘W×ý°A?ÐbMçê_x?’ -‰¸Ì?Å)Ì_“?‘~¬Àm?ó?‘\{3>Ôa?ó‹P=´?€cPßQª?Œ¸†‡ÄÅ?‚ù…žÄ`x?ƒì%­¹Ï‘?‡<û¡71?†ïRÉv‘Ñ@@@@@*@*?ð?ð?ð?ð?ð?ð¿"*À?V‚â*?4¤¥ð)zË?2Ÿ YÏCÄ@¤Haå#‰@¤þ' —— ?Cæ‡I²-?A‡ 륕?öÒìán?xHDØ}`T@Ÿsb^Xö@°@Ÿc‡+ J@Ÿc…¡ÊÀ„@Ÿc‡+ JÁ.„€@Ÿc‡+ JÁ.„€@Ÿc‡+ JÁ.„€@Ÿc‡+ JÁ.„€@Ÿc‡+ JÁ.„€@Ÿ9¦éxÔþ@Ÿ9»çl‹D@Ÿ9¦éxÔþÁ.„€@Ÿ9¦éxÔþÁ.„€@Ÿ9¦éxÔþÁ.„€@Ÿ9¦éxÔþÁ.„€@Ÿ9¦éxÔþÁ.„€@7D¯O „M@7HË’:*@4‡ÎÙ‡+Á.„M‰ûçm@4_²-VÁ.„QnÙ‡@3Åœàu÷Á.„NÜC,¥@3Åœàu÷Á.„NÜC,¥@3Åœàu÷Á.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø±@¯J=p£×@¯J=p£×@¯J=p£×Á.„€@¯J=p£×Á.„€@¯J=p£×Á.„€@¯J=p£×Á.„€@¯J=p£×Á.„€@¡VIº^5?@¡VIxÔýô@¡VIº^5?Á.„€@¡VIº^5?Á.„€@¡VIº^5?Á.„€@¡VIº^5?Á.„€@¡VIº^5?Á.„€@3G>«6z@3GæšÔ-@1áhr° ÄÁ.„M‰ûçm@1éÛ"Ðå`Á.„QnÙ‡@1Œ~($ Á.„NÜC,¥@1Œ~($ Á.„NÜC,¥@1Œ~($ Á.„NÜC,¥?|¬Çëý @8#˜@8¾:@8 >+@8Iç@8Ù?|öOÿÝ@8Î÷@8i§@8Å@8S@8û—?‚yî8Á#@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø²@¢» A‰7L@¢»'®zá@¢» A‰7L@¢»2䎊r@¢» A‰7L@¢»($ x@¢» A‰7L@¢»®¾ß¤@@¢» A‰7L@¢»Ov_Ø®@¢» A‰7L@¢»VâëC@¨z'l‹C–@¨zŸ¾w@¨z'l‹C–@¨z•L˜_@¨z'l‹C–@¨z'8}¿@¨z'l‹C–@¨z=—ö+k@¨z'l‹C–@¨zl‹C–@¨z'l‹C–@¨zS&Ã@6õS&Á¾@6ÕÉã½@4?|í‘h@4n—Oß@3b-V@3vÁ½¥@3‚@·€5@3(Ë’:*@3‚@·€5@3œàu÷@3‚@·€5@2ð[À6ã?|öOÿÝ?±(¬úÝ?¹EïZS‹)?¿™C‰Ü?²¯oÊA>?»̇Ùa?¦NIÉ®š?«Ñ]¼‘’?¡œåVÉh?ªò<8?®¶h†i¾m?¯I$ŠP ‹?¢š'†­`í?µK¶{Oÿ?²+HŽKdÅ?¶ágw_؆?½XSª]ÿ•?Ã&A@% @@@@@&@(?ð?ð?ð?ð?ð?ð?‹F¤ÏÇ@¿Oþ¼ñ?€É ài?€–/„>ä @¢»CŸt˜›@¨z Ï?¡£ÓñtÓ?Ÿç ‚óX@ˆÆ¤ð @@Û1膄@Ÿf@ÒO'n@³@¬ƒÄ“t¼Á.„€@¬ƒÄ“t¼@¬ƒïŸ¾w@¬ƒÄ“t¼@¬ƒÍÒñ©ý@¬ƒÄ“t¼@¬ƒÆYJôñ@¬ƒÄ“t¼@¬ƒÉùrG@¬ƒÄ“t¼@¬ƒÁG®z@§·KƧðÁ.„€@§·KƧð@§ˆ>BZï@§·KƧð@§˜üPH@§·KƧð@§Ÿ±[W?@§·KƧð@§¨Œç°@§·KƧð@§«Æ§ïž@9 xFÜÁ.„>¤µÜÆ@3Å?|í‘h@3²° Ä›¦@2ƒt¼j~ú@2xbMÒò@1Š0U2a|@14Ö¡aå@1Š0U2a|@1@N¤©@1Š0U2a|@1‚ZîcŠ@8J¨?°Uíù˜&? õ/ ebà?F?H´>©?”óÆ»1Ta?–"ûe”M@8J¨?¬Ö ¿_øË?›«9ØYº,?š‰+D¨x?’êJ>áý?‘–íÍQÜ@8p÷?¡"ÒIHÛœ?’-BR1Å?‹h¢íc„„?‘ÔþÆvI‡?’3¨£„È@@@@"@ ?ð?ð?ð?ð?ðøøøøøøøøøøøø´@¥æÛ¥ãSø@¥æÝp£× -@¥æÛ¥ãSø@¥æËxFÝ@¥æÛ¥ãSø@¥æÙ¦µ @¥æÛ¥ãSø@¥ææµ (@¥æÛ¥ãSø@¥æà-à @¥æÛ¥ãSø@¥æ×ÎÙ‡@ ®Rñ©ûç@ ®OŸ¾w@ ®Rñ©ûç@ ®=cˆe•@ ®Rñ©ûç@ ®b&€I@ ®Rñ©ûç@ ®Aò×s@ ®Rñ©ûç@ ®Z)Çy§@ ®Rñ©ûç@ ®]²-V@7ÉÎ_oÒ@7Èâe+Ô@4û Iº^@5æ1ø @3´“t¼j@3¶z–¼@3£ÉîËû@3Ÿ–»˜È@3£ÉîËû@3oiDg8@3£ÉîËû@3•‡“Ý—ö?1·†Æjñ?­ìªJý‘?šQ"Äš%?¢50«åµÎ?§?7¡â±?£¸½X—Œ?¤I~Óy‘?¶™~ˆFs?¦oi(¢î? ô%bB§Û?°±îã"?¦kxÜ““?‚á²Olºü?ª‡ªfƒ‚?šWÔ\æ%¢?¤DúÚ`?®,ÐZ´¹?¡‘8²™ç@@@@@&@$?ð?ð?ð?ð?ð?ð?&ʵ ?f›×:?Ut› ²eÔ?pB’`Ä@¥æÞ@bü@ ®NE¶+?ySÒì–?ŒÌñª=¥ü?Ön”ëzT?íhaj¬è@Ÿi¦ùâní@µ@¯F•%@¯F“t¼@¯F•%@¯F€:ß5@¯F•%@¯FÏf¡À@¯F•%@¯F‡ª‰@¯F•%@¯F*‚ü:@¯F•%@¯FÏ=†@•Ƨï²-@•ƧîQyR@•Ƨï²-@•ƨÊRÝ@•Ƨï²-@•Ʀûü¶d@•Ƨï²-@•ƨ -™ö@•Ƨï²-@•Ƨí[+Û@•Ƨï²-@•ƧÁœ@3«µsê´@3«)^ž@1pÄ›¥ãT@1p¦âô-Þ@0)Û"Ðå`@0)ˆn t@/åÉä@/P3;@/åÉä@/ϲ+ì@/åÉä@/cþ -ºÂ?}@T˜ÁÎ¥?å- ?‘/NÇ‹?ŒL7Š÷?þÞâ(á¸?ÄQg–HÄ?|¬Æ Væ?’ ¦ï)óè?¤¯Õ”öù?6¦K'Y -?á¥,Uw¯?sîÇ0êÒ?‚|´ †Ë#?Œ×ÑŸTŸ?‚­ôÌbø‚?‚æVSà -x?†–9Ζ{?†¬?³$ë@@,@*@(@:@9?ð?ð?ð?ð?ð?ð¿@Í÷¾àèŠ €>öéÓ­ÙŸ>é!TIJm~@¯F÷qéÞ@•Ƨè÷Á?ÐàÐ7? ›ÀGFF?;ù¥Åyâ>?!mœ»%z@ŸfýBåº*@¶@¬[ Ƨïž@¬[ ÌÌÌÍ@¬[ Ƨïž@¬[;Í5¨@¬[ Ƨïž@¬[4Ö¡b@¬[ Ƨïž@¬[ Ô•+@¬[ Ƨïž@¬[ ^ž @¬[ Ƨïž@¬[ Iº^5@¬rß¾vÈ´@¬rÝ/Ÿ¾@¬rß¾vÈ´@¬rèðŽ@¬rß¾vÈ´@¬rßb¶®}@¬rß¾vÈ´@¬r唯O@¬rß¾vÈ´@¬rÝŠÚ¹ö@¬rß¾vÈ´@¬ráaä÷e@6·â‚@·€@6¸è§æ›@4W+ Iº@4Y³Ð|„¶@3ÐA‰7KÇ@3ÒZîcŠ@3Eœàu÷@3GæšÔ,@3Eœàu÷@3DðØDÐ@3Eœàu÷@3Eœàu÷?ˆÿÀ)T¿Æ?–[‹Å ?’d3ð"7?Wø0 ¥?”#?3ÆÂƒ?”1Ÿøš?}Ñ¿ž,?–ÖÀeªw?—ÿfFº?”‘v»?” E®!—?•}ç›–X?Ž“‹}Ty?“êXÔ #{?†aÞàI*•?ŒÅÐ7N³¬?IÏáå$?’Oûh´6c@@@@@(@*?ð?ð?ð?ð?ð?ð¿=6(Þ°?LiH› ?>%KÁÏò?K1ÞúÏž¤@¬[ ?L«s@¬rßuŽ¡Ñ?\(ë¹®?lë.ÅÝÁÓ?¹Þ¬ÔKž?Üç¿6γ@Ÿh§e`@·@®]²-V@®]²-V@®]²-V@®^6Gt@®]²-V@®^ ×Q³@®]²-V@®\e²í@®]²-V@®Y|ß8@®]²-V@®Ywß+@•ý$Ý/@•ýؤT@•ý$Ý/@•ý|p£­@•ý$Ý/@•ý~°‰@•ý$Ý/@•ý{/«ßÙ@•ý$Ý/@•ýzǧ€@•ý$Ý/@•ý|‚V|k@3ºqÞi­C@3º…‡“ݘ@2J^5?|í@2Dž?h@1ÒÐå`A‰@1ѲƒÎ@0î_oÒ @0êŠÅÁ?Ñ@0î_oÒ @0ìzÖq±@0î_oÒ @0ìàv¶M'?}@T˜ÁÎ¥?‘q ªÖ‘?‘FxÌ+IÕ?‹Ð Û¸ig?‘˜DH/7¨?‘y“>Ôm?|¬Æ Væ?“Á¼ó!T?¥CÖ÷W?—WHF,ó?‘}é†ëóv?{8–õä?‚nݺªšG?ÁµFG?ƒ¸‹–æ?ƒ?¾$ɘ1?‡ñîŃH?‡ IÛµ­p@@$@(@"@6@1?ð?ð?ð?ð?ð?ð¿M²ñø¿D–—Xz?'ã q·z@?*Ò(8vK@®[Õå[ª@•ý~ã|?G­()”1â?KXŸLÏÎÐ?°ÐXTÈ?£ÈêÔXº@ŸfÜ#€b[@¸@­ÄÐbMÒò@­ÄÐbMÒò@­ÄÐbMÒò@­ÄÑÄ2ÊX@­ÄÐbMÒò@­ÄÕ*™2@­ÄÐbMÒò@­ÄÎ.±Ä3@­ÄÐbMÒò@­ÄÎ}Vlô@­ÄÐbMÒò@­ÄÌô!-@¤ôã× -=q@¤ôã•%@¤ôã× -=q@¤ôâu%F @¤ôã× -=q@¤ôéùrG@¤ôã× -=q@¤ôß¾vÈ´@¤ôã× -=q@¤ôá½¥@¤ôã× -=q@¤ôâh Ô•@6‚ò䎊@6‚£S&@3+¥ãS÷Ï@3+P°ò{²@2—ï²-@2˜è§æ›@2OO „M@2N¤¨ÁTÊ@2OO „M@2NOv_Ø®@2OO „M@2NOv_Ø®?ˆÿÀ)T¿Æ?‘u:|ñ²¨?”Ä0óçî? Ð ÷Ž ?“r {#¥&?“ÚÁRš )?Ž=fA:?“$i «%h?’Qÿc -?“ŠH#=?” E®!—?’j“O’I?‚nâwfÿ?ŽátÖÁ»‡?„ËD(ºp?‡ÕZ›µûÜ?ˆ0&YÊEd?Š|)-}í(@@@@@*@*?ð?ð?ð?ð?ð?ð¿Dåß¿5#Y¾P?!é¦){¡­?<áX¦O¿ï@­ÄΣlo0@¤ôâË( -?A‚•z$z–?\f¦¸ïî?‚ ™AÀ­‹?³ÿÈöFG@Ÿjtö©ú@¹@¯í‘hr°@¯‘ðÕ¥ñ@¯í‘hr°@¯cI]Ñß@¯í‘hr°@¯ÀJϽš@¯í‘hr°@¯·TU/@¯í‘hr°@¯ì;„݇@¯í‘hr°@¯lÖJ{+@–ÕJÀƒo@–Õ6E¡ÊÂ@–ÕJÀƒo@–ÖQèâíò@–ÕJÀƒo@–ÕâTkq@–ÕJÀƒo@–ÕÉ”úž@–ÕJÀƒo@–Õqÿ°î@–ÕJÀƒo@–ÖJ;ˆŸ@8÷â‚@·€@8õÆ*»IA@4½‘hr° @4z#ñ„yù@3A‰7KÇ@3Tíœg–-@2ÏO „M@2›˜¥—@2ÏO „M@2¤g¦êÐ@2ÏO „M@2 ôûqª?µ…7YuÍì?Åa%Ü莠?´Ë`[þŠ?«c¿ÚV?•Ë=½%uÐ?Ìã*¹~?Ÿ>KtAÿ?ÄeTëC?½ÄXx+Á?·“2ƒhe?•ÎJèÃæÃ?Â-=~º·?ÁȧÄí£?¡;’MÕšw?–¢öúAº²?•Mu]P%®?»f=ä›®?«ø–Oþú@@(@,@,@5@7?ð?ð?ð?ð?ð?ð?Pø“ -?v™0$¾?lõA˜@¹?sôÈðÑ­@¯åK–z@–Õiv§Ë?¡›ù7Ê?’!×ê1@L¡üxèP@±b×Öð@Ÿm§]Ó@º@®æùÛ"Ðå@®æÍV@®æùÛ"Ðå@®æþƒä%¯@®æùÛ"Ðå@®çªdÂø@®æùÛ"Ðå@®æûdZ¬@®æùÛ"Ðå@®æú¬1@®æùÛ"Ðå@®æ÷>«6{@¬"ÌIº^5@¬"œí‘hr@¬"ÌIº^5@¬"ÉùrF@¬"ÌIº^5@¬"Ð:û~‘@¬"ÌIº^5@¬"ÊW§†Â@¬"ÌIº^5@¬"Ì~($ -@¬"ÌIº^5@¬"Í‘hr¯@7°4mÅÖ8@7‡¯·é@3R Iº^5@3R•éá°‰@2Ÿ²-V@2 °ò{²ÿ@28DЩ*@29xÔýó¶@28DЩ*@2:¬1'@28DЩ*@29‡+ ?´Ð3¥}Å?’Qÿc -?‘K]Ã4?Œ9‚Ù.?’ÒuèçxY?’»«ÒñŒ?”ä¸zé—?”&OÖýæï?ß‹…&?Ë{4æk?“uR4ìH?‘êey°úà?´:Fõa¢á?ÉGãA­ø?…ÑTë0Ô?…<ò N ?‰®ââP\?ˆk! ¨l@@@@@*@(?ð?ð?ð?ð?ð?ð?A€"„?a¹³#?mÞm³z?`•G”b{@®æùX7qV@¬"Ës~µ?~¯:­œI?p æs¨—?ô ü:ŽöŽ?ÒÆX—a¦@Ÿr¢Ýµ)@»@¦ø~ùÛ"Ñ@¦ø;dZ@¦ø~ùÛ"Ñ@¦ø€D(Mý@¦ø~ùÛ"Ñ@¦ø€8SVE@¦ø~ùÛ"Ñ@¦ø€%³œ¦@¦ø~ùÛ"Ñ@¦ø~»mš@¦ø~ùÛ"Ñ@¦ø}æšÔ-@•²'ï²-@•²'ï²-@•²'ï²-@•²'†Â&‚@•²'ï²-@•²(1&éy@•²'ï²-@•²'Øåó@•²'ï²-@•²'Â#›@•²'ï²-@•²(PïÝ@+Ùb¶®@+Ùb¶®@%Gï²-@%Gï²-@#N—Oß;@#N—Oß;@#`ªdÂù@#g8}À@#`ªdÂù@#`ªdÂù@#`ªdÂù@#`ªdÂù?É^¨¯Âj?Á؆Qùd?‘c“Ô?‹©`ƆƵ?çzn~1?²ê¶vQS?ÐbMÝn½?’ªK‹}?lÒ:¼?/ÑÕ -Ä?μšjH0?I¼ì'ô%?€bMÔŠ»?Œ¬ (ÇÊ¢?‚n¼Õ‰W?‚âc[ø€?†‡I‚ÿ¯Û?†‡I‚ÿ¯Û@@(@*@(@;@:?ð?ð?ð?ð?ð?ð¿P‹…A?JF(?1m76òm“?¿ô›Šâ@¦ø~ß)&@•²'âä -Ÿ?@Âì+'?±qlð?{©+ßj€P?»¡”ØJî@Ÿsäòº@¼@¤ËâMÒñª@¤Ëç®zá@¤ËâMÒñª@¤ËÞ¸Që…@¤ËâMÒñª@¤ËâÐå`B@¤ËâMÒñª@¤ËÞÒˆÎp@¤ËâMÒñª@¤Ëâ‚@·@¤ËâMÒñª@¤ËâZîc!@«­_;dZ@«­dZ¬@«­_;dZ@«­\í‘hr@«­_;dZ@«­ixÔýó@«­_;dZ@«­`6âê@«­_;dZ@«­aä÷eÿ@«­_;dZ@«­a [À@7Ç>«6z@7Åzxl"h@3‡ÎÙ‡+@3‚a|ÚQ@3Ct¼j~ú@35oi@2Eœàu÷@2<ô!-x@2Eœàu÷@2Ezxl"h@2Eœàu÷@2E¼£n/?¦NIÉ®š?‘6 '8?–™@^Ú¢?ޝ“¶¶ÒÍ?’êÔÒ?’€ú¤ˆ4 ?|¬Çëý ?”‡r¦5MS?¢K‹´ºe?—QÀ–Íù?“NM–8/?’„³GÓ’?„+£QKø?ÉGãA­ø?‹‘+-/Ý?ˆÝíá‰?Š*ÊÔQãú?гá‡}@@@@@*@(?ð?ð?ð?ð?ð?ð?0˜1€¿GwíY(?U& ø‹Ûè?/ˉ¼ª@¤Ëá.ýÕ€@«­añÉ­ÿ?iØøÝ>Z?UYaÀÝ£?ËIùÖ«ïc?¥ÜMÏS:Ú@Ÿo@‚ @½@£nâMÒñª@£nâMÒñª@£nâMÒñª@£n䎊qß@£nâMÒñª@£náÊÀƒ@£nâMÒñª@£nãn.±Ã@£nâMÒñª@£ná×Ûôˆ@£nâMÒñª@£náÊÀƒ@ ‚^¸Që…@ ‚_;dZ@ ‚^¸Që…@ ‚^ž™@ ‚^¸Që…@ ‚^ í(@ ‚^¸Që…@ ‚]ÌcñA@ ‚^¸Që…@ ‚_ö”F@ ‚^¸Që…@ ‚^ùÛ"Ñ@4Bò䎊@4B3œ¾à@/žùÛ"Ðå@/žvÈ´9X@/DZ¬1@/D“t¼k@-£¼ÓZ…ˆ@-¢ÃÉîËü@-£¼ÓZ…ˆ@-£FÜ]c‰@-£¼ÓZ…ˆ@-£S÷ÎÙ?€‚ñêã ?Ì&ÏøHÃ?‘Ûü†Nã?‹ë¤½?‡á?ÿ £‰¸9?Ðýð^–Ö?€‚ñêã ?’MœœN ?r¼Jsž?EÇàÔPà?‘Ú‚ýc¯?hï,ðà?‚Ÿ JŠÅ?ŒöOÿÝ?‚yî8Á$?‚æÊ¬vã?†Ë¢L1Ù?†£îž«î@@@@@*@(?ð?ð?ð?ð?ð?ð¿?°¶€¿.j“?)¬½êS†E?$×Â6¤7@£nâ^?@”@ ‚^ãÍuF?I¯4UÈ?EmLž-gr?ŸýœGÈ;?•3ÊK‹¢u@Ÿgìjvx—@¾@¦×Â\(ö@¦×¾5?|î@¦×Â\(öÁ.„€@¦×Â\(öÁ.„€@¦×Â\(öÁ.„€@¦×Â\(ö@¦×Çï²-@¦×Â\(ö@¦×¿¾vÈ´@¯‰éûçl‹@¯‰æ§ï²@¯‰éûçl‹Á.„€@¯‰éûçl‹Á.„€@¯‰éûçl‹Á.„€@¯‰éûçl‹@¯‰Û¥ãSø@¯‰éûçl‹@¯‰ØÔýó¶@6Û¹Œ~($@6àªdÂø8@3c÷ÎÙ‡Á.„M‰ûçm@3nùÛ"ÐåÁ.„QnÙ‡@2ó&Á½¥Á.„NÜC,¥@2ó&Á½¥@2ùŒ~($ @2ó&Á½¥@2ú0U2a|?š•§q!U@8#˜@8¾:@8 >+?éDEâ©×?‘W_Ì?1·†Æjñ@8Î÷@8i§@8Å?”dápŠ?‘"›ö?¢Ì÷y\ÛÎ@8 * @8p÷@8¶?™^ÓnÔl©?”¦”x£b@@@?ð?ð?ðøøøøøøøøøøøø¿@¨6ËÆ§ïž@¨6ÌÌÌÌÍ@¨6ËÆ§ïž@¨6É^ž -@¨6ËÆ§ïž@¨6ÊçÕfÏ@¨6ËÆ§ïž@¨6ÊôðØE@¨6ËÆ§ïž@¨6ÌIº^5@¨6ËÆ§ïž@¨6ÊçÕfÏ@¡¿‰7KÇ@¡¿§ï±@¡¿‰7KÇ@¡¿n.±Ã@¡¿‰7KÇ@¡¿n—Ž@¡¿‰7KÇ@¡¿|ÚQ@¡¿‰7KÇ@¡¿uöý"@¡¿‰7KÇ@¡¿-à @6h†YJôñ@6fR½<6@2xr° Äœ@2x$ xG@1~V“u@1}Òñ©ûç@1(è§æ›@1)Çy¦µ @1(è§æ›@1)ùrGE@1(è§æ›@1(ÁTÉ…ñ?€‚ñêã ?’&Á¯»?“a#mU?ŽõÕJ?‘˜¯ -`É?‘·díW‚?ˆÿÀ)T¿Æ?’áÄïÃõ?‘å†36åG?‘l™šU?‘¦‘=W?‘Ê$̤T?‘¼Åâ<{?îŠõ ?„³3Z\ð…?ƒ¼9XNÄu?‡”_Õ­çW?‡gϵ’õ@@@@@*@,?ð?ð?ð?ð?ð?ð¿6aUˆ¿V€2¤H?'²¨ÔÕ?1äv0Ÿ@¨6Ëá‡@¡¿êW:Û?H8ØÞ&XQ?Q’)z±£ý?˜WÄ]Ê­?£ä?OÃ@ŸiDÝá‡.@À@¤Õ¥ãSø@¤Õ^5?}@¤Õ¥ãSø@¤ÖžùÛ"Ñ@¤Õ¥ãSø@¤Ö{"Ðå`@¤Õ¥ãSø@¤Ö Iº_@¤Õ¥ãSø@¤ÕgRT`«@¤Õ¥ãSø@¤ÕJ=p£×@¯D†$Ý/@¯D‡l‹C•@¯D†$Ý/@¯D´¼j~û@¯D†$Ý/@¯DÉxÔýô@¯D†$Ý/@¯EA‰7K@¯D†$Ý/@¯C•fÏAò@¯D†$Ý/@¯DÓ÷ÎÙ@6àØDЩ@6Ý«ŸU›=@4¦‡+ J@4hÛ‹¬q @4V”@3ÀIQ‚ª@3µµsê³h@35sê³g¡@3µµsê³h@4Mó¶E¡Ë@3µµsê³h@3†µ '¼?žˆ2}?»EÉa¬:j?ÅøºB¿?Ȇ³Î?°STýÑ;‚?‘<ƒÜ_õ?‡YÍ_?¥ˆÒ¯ó•?³M•Q±?²¸xG‚„?±oEcƒ¼r?‘KÔ#•N ?‡š¿]bœ?”£®e›Ðg?‘Ó0<ïL{?®†*®®?™GXêâ?ˆCns¥ @@@@@@?ð?ð?ð?ð?ð?ð?…ê8³€?‹4ª]€?w{x)2É?Š«º¥@¤Õ0”9@¯D¡ìŠ[?™ËöK•,?®FŽ(¶?@1¶Ê*Î q@S†LU\%O@Ÿf(ê@Á@¯ú²-VÁ.„€@¯ú²-V@¯úkš­¸^@¯ú²-V@¯úލÜàP@¯ú²-V@¯û­ ÔE@¯ú²-V@¯û òt@¯ú²-V@¯úöq†³@–h¼j~ùÛÁ.„€@–h¼j~ùÛ@–hγm(@–h¼j~ùÛ@–gª8ð@–h¼j~ùÛ@–h`îýJ•@–h¼j~ùÛ@–h„pD@–h¼j~ùÛ@–h–›ÿCó@82ÃÉîËûÁ.„>¤µÜÆ@4×+ Iº@5;u8²{@4 "Ðå`B@4G·=ÞŒ@3‘Þi­BÄ@3îzšûR6@3‘Þi­BÄ@3Ñ!A@3‘Þi­BÄ@3¹5.†@8J¨?À–pˆóë?½ž®¯'?£ do) ?­ dßý?°’ZüK@8J¨?Á”;ž]^Y?Çðé7?²)„LÝ ?·ŠeŒòr?´=¶ž -ß@8p÷?Á r`ŸÓ?¬™—s±«K?±ÎH‹b‘L?¨2“Q†·?­¨ÀË^Ð@*@,@(@<@:?ð?ð?ð?ð?ðøøøøøøøøøøøøÂ@£Wð Ä›¦@£XÄ›¥ã@£Wð Ä›¦@£WÞ5?|î@£Wð Ä›¦@£XaÊÀƒ@£Wð Ä›¦@£XL¥zxm@£Wð Ä›¦@£XŠ=p£Ø@£Wð Ä›¦Á.„€@¬e­‘hr°@¬e¬ÌÌÌÍ@¬e­‘hr°@¬dݲ-W@¬e­‘hr°@¬d¸»@¬e­‘hr°@¬e…+ÓÃa@¬e­‘hr°@¬eÄ xG@¬e­‘hr°Á.„€@8–»˜È@8dSŽóMj@4\Iº^5?@3øK]Ìcñ@3Ãt¼j~ú@3"Ðå`B@3YŒ~($ @2çö+jçÖ@3YŒ~($ @2Ùº^5?~@3YŒ~($ Á.„NÜC,¥?žŒÝÙ›P?ǯ;ÔF?Ô³Œ/#*?ÈÊ6ÔÁÁV?Á! Ù¤5ž@8Ù?°:-%šÀ?ÃÀTíŠ î?ËÃSXt'›?ÙŽVån‘?¶i©0Kª @8û—?¨À°ÒÞ@?«l{)ÞŠ?¦W¾ »ZÕ?¥wc U/?²Ì7r_@8 Ø@@@@@?ð?ð?ð?ð?ðøøøøøøøøøøøøÃ@­#•$Ý@­#˜“t¼i@­#•$ÝÁ.„€@­#•$ÝÁ.„€@­#•$ÝÁ.„€@­#•$Ý@­#ÄZ¬@­#•$Ý@­#Çl‹C—@¯0ß;dZ@¯0Û¥ãSø@¯0ß;dZÁ.„€@¯0ß;dZÁ.„€@¯0ß;dZÁ.„€@¯0ß;dZ@¯/w -=p£@¯0ß;dZ@¯/è´9X@6#g ù l@6!$Ý/@4=‘hr° Á.„M‰ûçm@3Õ`A‰7LÁ.„QnÙ‡@2ºÔ,<žíÁ.„NÜC,¥@2ºÔ,<ží@2úCþ\’@2ºÔ,<ží@2Œ¬1&ê?ˆÿÀ)T¿Æ@8#˜@8¾:@8 >+?¸ÏjeЕ?¨ü¦:ka?ˆÿÀ)T¿Æ@8Î÷@8i§@8Å?Ò,¡Û¯á?Äw[¹ä@?D/ -b°Þ@8 * @8p÷@8¶?•ó¬>¨ûÝ?¢¯À<ÝÞ@@@?ð?ð?ðøøøøøøøøøøøøÄ@«Î›"Ðå`@«Î›¥ãSø@«Î›"Ðå`@«Î¸Që…@«Î›"Ðå`@«Ïò䎋@«Î›"Ðå`@«Ïå¼£n@«Î›"Ðå`@«Ï·ö+jé@«Î›"Ðå`@«Ï¬²•éâ@ªûD“t¼@ªûDZ¬@ªûD“t¼@ªû¥‡“ݘ@ªûD“t¼@ªû}¥œà@ªûD“t¼@ªû¶”Fs‚@ªûD“t¼@ªû¡:’£@ªûD“t¼@ªû–ð¸@2ý:’£@2üàuöý"@0\Iº^5@@02•éá°Š@/|¬1&ê@/ w1Å@/(Û‹¬q @.]ÌcñA!@/(Û‹¬q @.^Ñ·Y@/(Û‹¬q @.\¾ß¤@?É^žQ5P‚?•QÂ^ø™?ÃNSCçÚQ?Ét4B¥T?ͤ±ròõ?ÐÐ-†(³?ÐbV‡,?—¿ºÖ÷?³æû8KÝ?¶!úþ!öñ?°‘0Äñ×?±ùý¿?€cPßQª? $gú‡v?Œznyž-i?˜$– Ñê?•XðküÏ?“¡NÙ(£(@@@@@,@*?ð?ð?ð?ð?ð?ð?°/XÚ ¿Eê“Ì?ž€sµ{Ê™?‰•Ï*i@«ÏŒ-múö@ªû g‚ì´?¼iTJ†?¡‚An?þìäÆm9¤µÜÆ@/ö“t¼@/õÜ5%jQ@.cn—P@.c)£`n;@-Ǔݗö,@-ÇlÅÐê@-Ǔݗö,@-Ç.J/@-Ǔݗö,@-Ç&”sˇ@8 -Näy?ÍÛòM9?‘(u‹¹HØ?‹¦ïbew?òë6­?ÃNñÓðó@82rê?’ EÇNÔ?‹ð"à ?0§j3A?× m"öƒ?Xžëú–@8L?ŒËQ=sÝß?‚À%?‚ägûȶÿ?†‘$Ñþþ‘?†–í8Ñ(@,@,@&@:@;?ð?ð?ð?ð?ðøøøøøøøøøøøøÆ@°Â\)Á.„€@°Â\)@°†L/ƒ{@°Â\)@°„›¥ãT@°Â\)@°‹…¸R@°Â\)@°Oò䎊@°Â\)@°KíúCþ@œ«8Që…Á.„€@œ«8Që…@œ«oj@œ«8Që…@œªô¼j~ú@œ«8Që…@œªÙ‡+@œ«8Që…@œ«t¼j@œ«8Që…@œ«*³g ù@8p4mÅÖ8Á.„>¤µÜÆ@3k¥ãS÷Ï@34ðØDÐ@2©Û"Ðå`@2~($ x@2 ¿±[W?@1á&éxÔþ@2 ¿±[W?@1à|„µÜÆ@2 ¿±[W?@1â×süP@8J¨?Öî÷Œ¬ûì?°Ânö Ö‹?®=“ •0˜?Lj!þ_¸ï?È ÷Vß¹Ñ@8J¨?»N4Ï7Š?§‚42¾?¯ò,?°1üTn]?²fÄF›Ž7@8p÷?¡ A™fg?©é‰ÊØo'@@@@@(@*?ð?ð?ð?ð?ð?ð¿g,!¯*¿ƒˆynÓ€?3‡h™ì’?Ró÷¢´³@ª©†þÙaò@¦È…VÚ[?Nïß ?iOÐïXvj?™û™Æ•Ö?½Ï™¢?`R@Ÿ`'æ%Ë@È@¬Ìð Ä›¦Á.„€@¬Ìð Ä›¦@¬Ìû‹¬q @¬Ìð Ä›¦@¬Ìæ?@¬Ìð Ä›¦@¬Ìî¾ß¤@@¬Ìð Ä›¦@¬ÌíOß;d@¬Ìð Ä›¦@¬Ìíí(Œæ@¡‡¥`A‰7Á.„€@¡‡¥`A‰7@¡‡±&éxÕ@¡‡¥`A‰7@¡‡¨Û‹¬q@¡‡¥`A‰7@¡‡žžš@¡‡¥`A‰7@¡‡¥œàv@¡‡¥`A‰7@¡‡£9Àëî@9–»˜ÈÁ.„>¤µÜÆ@4æ‡+ J@4ë~ÿ—$@3ÝV”@3ÜPHð@2Ì¿±[W?@2ÎvÈ´9X@2Ì¿±[W?@2Ð@2Ì¿±[W?@2Ð|„µÜÆ@8J¨?“ÓLáS{?ššÒèôɲ?d"¹QZ?–Õ“z‰öì?“^õA‰°@8J¨?–gÝ3ýø’?¢W@3tå²?”Â1`´?”s̯}¼?”F„t*•5@8p÷?’|׿pZ?’úz."?ˆ6‘F:™Ê?mŽÃÎŽ?”ø™¾@@@@*@(?ð?ð?ð?ð?ðøøøøøøøøøøøøÉ@­òÐbMÒò@­òÕ%@­òÐbMÒòÁ.„€@­òÐbMÒòÁ.„€@­òÐbMÒòÁ.„€@­òÐbMÒòÁ.„€@­òÐbMÒò@­òÅ”¯O @ $Ý/@ n—@ $Ý/Á.„€@ $Ý/Á.„€@ $Ý/Á.„€@ $Ý/Á.„€@ $Ý/@ Õ›=È@7rÃÉîËû@7rT`ªdÃ@5|í‘hrÁ.„M‰ûçm@4ä¼j~ùÛÁ.„QnÙ‡@4a:’£SÁ.„NÜC,¥@4a:’£SÁ.„NÜC,¥@4a:’£S@4s¶E¡ÊÁ?ð°–Ž]@8#˜@8¾:@8 >+@8Iç?³9!.€ê ?ð°–Ž]@8Î÷@8i§@8Å@8S?ª« -#9ï”?ð*wjs—@8 * @8p÷@8¶@8 Ø?¥J'Y=¢?ð@(?ð?ðøøøøøøøøøøøøÊ@­5»dZ¬@­5Í‘hr°@­5»dZ¬@­5Í«ŸUš@­5»dZ¬@­5¶È´9Y@­5»dZ¬@­5¨´9X@­5»dZ¬@­5Ì‹C•€@­5»dZ¬@­5¾vÈ´8@§Ï“t¼j@§Ï¸Që…@§Ï“t¼j@§Îÿö”G@§Ï“t¼j@§Ï%zxl!@§Ï“t¼j@§Ï( Ô•@§Ï“t¼j@§ÏA£n.²@§Ï“t¼j@§ÏLÙè>C@7åöý!ÿ.@7Üú¬Ùè>@4¡hr° Ä@4›C•%@3A‰7KÇ@3‡Á½¥@3¡:’£S@3¡ ²•éâ@3¡:’£S@3¿HË’@3¡:’£S@3ƒg ù l?óA[ØïF?§¤Æµï\?–•Kù̃æ?•èöyÈÜQ?–JØi™”?§Zs»¢Z?©Ùƒ|ËI?²‡†üÇS?•¥º~§?¡Dþ zC1?•MšuVÑQ?¯áƒÙ²? Ú }P!?Á½ï5Jܦ?•Wí+ Æ?˜<å05ä?‘À³ûê%§?®á)»ž0@@@@@@*?ð?ð?ð?ð?ð?ð¿hUAr?…߬¶à?wÞ`) è?iÙ\àwa@­5ÀA@§Ï4½O´?—ב¤Ë?”`ÔØ1@²+ÑG“×?Þ½_â6ÿ@Ÿl¢6k4×@Ë@ ’]²-V@ ’lÌÌÌÍ@ ’]²-VÁ.„€@ ’]²-VÁ.„€@ ’]²-VÁ.„€@ ’]²-VÁ.„€@ ’]²-VÁ.„€@2m‘hr°@2aÊÀƒ@2m‘hr°Á.„€@2m‘hr°Á.„€@2m‘hr°Á.„€@2m‘hr°Á.„€@2m‘hr°Á.„€@4uS&Á¾@4W=ãÎg @1Ê^5?|íÁ.„M‰ûçm@1H“t¼jÁ.„QnÙ‡@0úÔ,<žíÁ.„NÜC,¥@0úÔ,<žíÁ.„NÜC,¥@0úÔ,<žíÁ.„NÜC,¥?}‰c™ýI®@8#˜@8¾:@8 >+@8Iç@8Ù?|Äô­ú}q@8Î÷@8i§@8Å@8S@8û—?‚¬h3zÙ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÌ@ À§ï²-@ À¨§æ›@ À§ï²-@ À¦v î@ À§ï²-@ À¦-Ô¹@ À§ï²-@ À®N ?‚ìxqC?†ŠúЀ>(?†–f_ÔŠŠ@@@@@(@*?ð?ð?ð?ð?ð?ð¿<ÙŒ?%å%eà?ñûºÇe?Ü)æÃÞ’@§ÓÂ…¦œ&@¦µ’u$c?,È #°K?#¹Å>ÿÝ”?TS³7T˜?A™üfÃ@Ÿs¹£û@Î@¨÷Ü(õÂ@¨÷ìÌÌÌÍ@¨÷Ü(õÂ@¨÷Ûµsë@¨÷Ü(õÂ@¨÷ÕfÏAó@¨÷Ü(õÂ@¨÷ß¾vȵ@¨÷Ü(õÂ@¨÷×Oß;@¨÷Ü(õÂ@¨÷Ø_ö”@­Hçl‹C–@­Hâ\(÷@­Hçl‹C–@­HàÄ›¥ã@­Hçl‹C–@­HÚ¬1@­Hçl‹C–@­Håzxl"@­Hçl‹C–@­Hèè§ç@­Hçl‹C–@­Hèe”¯P@5 ØDЩ@5—Xâe@3}‘hr° @3}úCþ\’@3t“t¼j@3qÿ.Hè§@2¨è§æ›@2¤êJŒL@2¨è§æ›@2¥éá°‰ @2¨è§æ›@2§Á½¥?¯oÝ ÷6}?“”üU§<­?–•Kù̃æ?‡{@áè?“XMHñëž?•zWmoàí?óA[ØïF?“áêqú ?“’OÕƒõ‘?—]à4?’ºñS©YÖ?˜ÓI­ÂÅ?´6¤_[í?Ž•ýÙ—±?†Æ‹™ÿ?„•ˆG’Z¾?Œ¸ðËb?‘4hÆpÉ„@@@@@*@(?ð?ð?ð?ð?ð?ð¿pbw¡…?Vk[?Sn’úœ›?0¶…hÛ@¨÷ÜÀCf_@­Hçu±â?eKøÀ k?QU;ªãBñ?À¯Š9?“øwè»B@Ÿo¼‡êgM@Ï@®©ùXbN@®©ù‹6Ëç@®©ùXbN@®©û,}/ @®©ùXbN@®©ü—ÊÈ@®©ùXbN@®©úŸÏ^3@®©ùXbN@®©ø™ï?@®©ùXbN@®©ø”@™’…¸Qì@™’ˆFØ¿¿@™’…¸Qì@™’„h|›ó@™’…¸Qì@™’‰»`Q«@™’…¸Qì@™’†ç6N«@™’…¸Qì@™’„÷ºñ@™’…¸Qì@™’„þDr6@7Žì¿±[X@7ä 1Âh@1¡hr° Ä@1¡ÙÓEŒÒ@0€å`A‰7@07dŒ7ì@/…oi@/…œN×°@/…oi@/…ðoiDg@/…oi@/†W€}„†?ƒ6ð]g™ä?$ëÕæG?‘$‚Ð2_Ó?‹¬=ã§@v?‘ -T* B?»pôe>—?†c£ïDì?’CW¶Ð?Uåä#v?0rìÝ>ê?éR•+¾?^´¡•à•?…ùL÷ëw?ŒÑÚ÷e?‚ÐñétbJ?‚ï%U|5?†žy½œ4h?†Ÿ¥ÊóšÁ@@$@ @"@9@5?ð?ð?ð?ð?ð?ð¿+ÓŒÏÀ¿7:éX?1Á3Ú[ž*? ¬^\ÓÝ—@®©ùJˆÎ$@™’†ŒC?QÀ”üÊ"0?-«·p‡*°?ªî|<ž ?`l`‰z@Ÿi¸ñ†´@Ð@¥ú’ñ©ûç@¥úˆr° Å@¥ú’ñ©ûçÁ.„€@¥ú’ñ©ûçÁ.„€@¥ú’ñ©ûçÁ.„€@¥ú’ñ©ûçÁ.„€@¥ú’ñ©ûçÁ.„€@¯y¤Z¬@¯y™‡+@¯y¤Z¬Á.„€@¯y¤Z¬Á.„€@¯y¤Z¬Á.„€@¯y¤Z¬Á.„€@¯y¤Z¬Á.„€@4p4mÅÖ8@4a·Xâ@2”›¥ãSøÁ.„M‰ûçm@2A‰7KÇÁ.„QnÙ‡@1O „MÁ.„NÜC,¥@1O „MÁ.„NÜC,¥@1O „MÁ.„NÜC,¥?žˆ2}@8#˜@8¾:@8 >+@8Iç@8Ù?|¬Çëý @8Î÷@8i§@8Å@8S@8û—?˜&™*0ø\@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÑ@¨\Týó¶F@¨\Cn—@¨\Týó¶F@¨\Rñ©ûç@¨\Týó¶F@¨\^š@¨\Týó¶F@¨\Y=Ùc@¨\Týó¶F@¨\O·éø@¨\Týó¶F@¨\JqÞi­@¬ß¤Z¬@¬ß/Ÿ¾@¬ß¤Z¬@¬ß¢&€H@¬ß¤Z¬@¬ß†Â&€ž@¬ß¤Z¬@¬ß¾ í)@¬ß¤Z¬@¬ßŸ¾w@¬ß¤Z¬@¬ß”mÅÖ9@8rÃÉîËû@8p@4B° Ä›¦@4?v_Ø­¬@3’Ðå`A‰@3ŠîcŠ @3(è§æ›@3v_Ø­¬@3(è§æ›@3! [À7@3(è§æ›@3$‡ü¹#£?¡ÅꯨŠT?éDEâ©Ö?¡¶ü_΋å?•˜Ú܆‡?•RC}Ëq?›µ¥Ë»‡ ?™™™™™™š?™´¦]˜ó?•swŽ)Ò? ŒÙ¶êm¤?–ÓîTî?œa8wóì|?“mŸq`?š³á‡}?”US9úÅ?‘@fº¬o(?š3 ˜ÔDš?–7Qûñ@@@@@(@*?ð?ð?ð?ð?ð?ð?D%¾–¿c´ô&7?lÿrY·b?U÷œ¯Ä@¨\P#‡Åž@¬ß”èœ~?…>ªƒ[?s—Ê« -zY?ögOÁö?Ñef§Ž@Ÿm‡nˆáý@Ò@­+#× -=q@­+#× -=q@­+#× -=q@­+%¾À@­+#× -=q@­+$P¼=T@­+#× -=q@­+$ûrí@­+#× -=q@­+")U@­+#× -=q@­+#;Oò@“_p£× -=@“_p Ä›¦@“_p£× -=@“_m¥tMd@“_p£× -=@“_o¡Úâ@“_p£× -=@“_q.ð®@“_p£× -=@“_p‰¯ß@“_p£× -=@“_p{µ´@4õS&Á¾@4õrö|ò*@1#÷ÎÙ‡@1$2ÁÓwÌ@0PA‰7KÇ@0PP3ò:@0B‚@·€4@0BÆåA ~@0B‚@·€4@0Bó±Ñ!@0B‚@·€4@0BÞÑ·?|¬h2:“?ÐÍpPïb?‘hÌŒQK?‹öɰŸM6?ò“A]2?Ï"{@Y8?|Ñb×¶@?’AÌ*À¹?Uåä#v?=W:f&/?ÖdȨ –?Uk°>&‚?‚ªp“5/?Œ¾·EÊš?‚®Ë Ë?‚îúb²~?†·6Ö´É@?†° Ñòo@@$@ @"@2@4?ð?ð?ð?ð?ð?ð¿l–ˆÀ? È€ž`?+ÎöxNRv?õ°£5@­+#Í q4@“_pmkf?K²Šþ7s?'c»ša?¤àÖ!l&?\—=n~®@Ÿfó*]½Â@Ó@­2-V@­.Ù‡+@­2-V@­"ÞѸ@­2-V@­Ô,<ž@­2-V@­'»/ì@­2-V@­,¥zxl@­2-V@­*~ùÛ"@ª^bMÒñª@ª^wOß;@ª^bMÒñª@ª^DêJŒ@ª^bMÒñª@ª^<64@ª^bMÒñª@ª^>BZîd@ª^bMÒñª@ª^TzáG®@ª^bMÒñª@ª^Vlô"@8Bò䎊@8E '»0@3œIº^5?@3ŠkP°ò|@2Ú~ùÛ"Ñ@2ÃFÜ]cˆ@2Öý!ÿ.I@2µ$Ý/@2Öý!ÿ.I@2Ó•$Þ@2Öý!ÿ.I@2Õ¸Që…?žˆ2}?«‰O\Íê™?©ÖÌC³1?°«]m…Mä?’PY8~Qj?–"ûe”M?|öOÿÝ?²ÿãkÇ@‚?´pg}5z?³ŸÛ-w?”*v7¹¿?™J•Ø3ÈÖ?§>Ìx¢Þƒ?™¬¨YWî?£´<×?­Ðí+L?ž„ýŸÒ`Ø?Ÿba_¸†@@@@@"@(?ð?ð?ð?ð?ð?ð¿L\(†¿€AÜI?À?Sy=t& ?YP0Z®0Þ@­,ÿ œ,@ª^g늵5?sÜTàž?yõW±¶Q?écMF¿#E?óëûž¦?@ŸeBÖa@Ô@¡ê.—Oß@¡ê0 Ä›¦@¡ê.—OßÁ.„€@¡ê.—OßÁ.„€@¡ê.—OßÁ.„€@¡ê.—OßÁ.„€@¡ê.—OßÁ.„€@¤iˆ1&éy@¤iƒn—@¤iˆ1&éyÁ.„€@¤iˆ1&éyÁ.„€@¤iˆ1&éyÁ.„€@¤iˆ1&éyÁ.„€@¤iˆ1&éyÁ.„€@3쿱[X@3®}Vlô@1 Iº^5Á.„M‰ûçm@1t¼j~úÁ.„QnÙ‡@0ÑÞi­BÄÁ.„NÜC,¥@0ÑÞi­BÄÁ.„NÜC,¥@0ÑÞi­BÄÁ.„NÜC,¥?|¬Çëý @8#˜@8¾:@8 >+@8Iç@8Ù?‚á²Olºü@8Î÷@8i§@8Å@8S@8û—?†aÞàI*”@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÕ@«û/²-Á.„€@«û/²-@«û0ØDÐ@«û/²-@«û.V“@«û/²-@«û0|„µÞ@«û/²-@«û/Aò×@«û/²-@«û.}Vlô@©Ô ÌÌÌÍÁ.„€@©Ô ÌÌÌÍ@©Ô ¸ºÇ@©Ô ÌÌÌÍ@©ÔzáG@©Ô ÌÌÌÍ@©Ô.±Ä2@©Ô ÌÌÌÍ@©Ô¾ß¤?@©Ô ÌÌÌÍ@©ÔŠqÞj@9[¹Œ~($Á.„>¤µÜÆ@2³S÷ÎÙ@2³•$Ý@1×ï²-@1؆YJôð@1YŒ~($ @1Z=p£× -@1YŒ~($ @1Z™0¾ î@1YŒ~($ @1ZÔ,<ží@8J¨?Žd±Ìº?‘t‘ócjë?ŒÇQ´æ?íOþtà?·t¤¢‚J?ÐbMçê_x?’˜‰%F²?†[‘'Í?1ð'7éÃ?ÔÒ@úˆ‘?PS2K¯™?€b¡´ñ@?Œ¯þuõí?‚nâwg?‚äÍ“½E'?†‰Oú|q?†ˆ#.÷@@@@@,@,?ð?ð?ð?ð?ð?ð¿SÓõnd?_ì;à?8Ö’e?óîµÒ(Ÿ@­/·ž]må@žò4kt?GáßµZÝ%?ýê¾Ü0G?‹üÍ(mð?WGˆó†@ŸsßµÃ@×@¯UxÔýó¶@¯UxbMÓ@¯UxÔýó¶@¯Up£× ->@¯UxÔýó¶@¯Ur-V@¯UxÔýó¶@¯UnzáH@¯UxÔýó¶@¯Ug8}¾@¯UxÔýó¶@¯Uiá°‰¡@££ŠÀƒo@££‹ Iº@££ŠÀƒo@££¬L˜^@££ŠÀƒo@££¦$Ý/@££ŠÀƒo@££³Z…‡”@££ŠÀƒo@££¶8†YJ@££ŠÀƒo@££§RT`ª@5Q|ÚQ@5R&€IR@3žÙ‡+@3“&Á½¥@3;Ƨï²@3+ÓÃa@@2¸DЩ*@2¡hr° Å@2¸DЩ*@2 -à @2¸DЩ*@2¢T`ªdÃ?|öOÿÝ?“gU·q#?”P"ÒhI?¢º™ÁLŠ?¥-wî?¦ æY²dR?„m~Z_s,?àìÚJ>?‘ -òtMŠ?ŒOà†cÍ?¢—„¯l?˜øÁ«}@@@@@,@(?ð?ð?ð?ð?ð?ð¿j¿‘æT?~j/€??Ü¿ù×?a½  ¿¹}@¯Uso¬P@££•ŒëÕ?Z°Î•ª|«6zÁ.„>¤µÜÆ@4 Iº^5Á.„M‰ûçm@3)Û"Ðå`Á.„QnÙ‡@2ò䎊rÁ.„NÜC,¥@2ò䎊rÁ.„NÜC,¥@2ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÚ@©féxÔþ@©;dZ¬@©féxÔþÁ.„€@©féxÔþÁ.„€@©féxÔþÁ.„€@©féxÔþÁ.„€@©féxÔþÁ.„€@Ÿ»Oß;d@Ÿ»‰7Kƨ@Ÿ»Oß;dÁ.„€@Ÿ»Oß;dÁ.„€@Ÿ»Oß;dÁ.„€@Ÿ»Oß;dÁ.„€@Ÿ»Oß;dÁ.„€@8N쿱[X@8m²-V@5sS÷ÎÙÁ.„M‰ûçm@5@å`A‰7Á.„QnÙ‡@4s&Á½¥Á.„NÜC,¥@4s&Á½¥Á.„NÜC,¥@4s&Á½¥Á.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøøÛ@£Í¸Qì@£ÍZ¬@£Í¸Qì@£Í“t¼@£Í¸Qì@£ÌþÑ·@£Í¸Qì@£Ìüàuöý@£Í¸Qì@£Ìù™™™š@£Í¸Qì@£ÌýÌcñA@¢0Ö“u@¢0ÕÂ\)@¢0Ö“u@¢0ÓŽóMk@¢0Ö“u@¢0Ô,<ží@¢0Ö“u@¢0Ô‡ü¹$@¢0Ö“u@¢0Ó÷ÎÙ@¢0Ö“u@¢0Òòä@4£g ù l@4¢h Ô•@0°Ä›¥ãT@0®¤¨ÁTÊ@0A‰7KÇ@0Œ¥zxl"@/ܾߤ@@/Ô¢3œ¾@/ܾߤ@@/Ô`ªdÂù@/ܾߤ@@/Õ2a|Û?|öOÿÝ?%¼ÇÆÃ±?“â÷!N?,¡r×gÁ?•rf?¢ê€?‘À?ÙÂ#’?|öOÿÝ?’u¦ieõ–?“v@á¿bî?‘jýÚXÜ?‘+ùÔ!½‹?äqÅYÈ?‚ÂÌ]å?ŒÆò/¢äÍ?„ò—TËÄ?„XïWÉò~?‡…¤$Ó?‡L8õASÎ@@@@@,@&?ð?ð?ð?ð?ð?ð¿^óÛø¿D<} ?C¯ËNE‹?#ý9 [¸@£Íc3@¢0Ô‚ <±?c·ËšŠ€­??‚º'äÄÿ?ÑÓœu=V?‰BßõBW(@Ÿfi[7f)@Ü@ "gl‹C–@ "dÝ/ @ "gl‹C–@ "jˆ³‚i@ "gl‹C–@ "q ²•ë@ "gl‹C–@ "gjÈeô@ "gl‹C–@ "fYWH°@ "gl‹C–@ "e®æ1ù@¨ °£× -=@¨ °=±¹Y@¨ °£× -=@¨ ¯#¦'a@¨ °£× -=@¨ °ßºcq@¨ °£× -=@¨ ¯:²µþ@¨ °£× -=@¨ ¯cÚÅn@¨ °£× -=@¨ ¯:Zþ@6²ÃÉîËû@6°AûY¬ @1Yº^5?}@1] -ïc‚@/ΗOß<@/Üó©-µ±@.úÇË)_@/ziçUõ@.úÇË)_@.û¤¿Ê.@.úÇË)_@.ü© -\†ö?|¬h2:“?äE««²Ø?‘(™Ö€?‹¸³…_¼‘?ûÁ ÿW?»pôe>—?‚Ú¡ËG7ø•©Òp>ý ¬så@®3ÊšÊef@¬B¨ÏNGÜ?¦ –‘¤? ʘH¥@1‘Þi­BÄ@0©=Ùb·@1‘Þi­BÄ@0¤•*™1?‚á²Olºü?Ú™ U–?Ñ-Ì\8?ÀlˆfW¬?×ù¦½é‚?ÜôäO©#? Eˆ‡ðó‹?²š5¥´¢?¿»1ˆÙ?»5;7Ä»M?È4Ö="C!?ÏEÏSŒ±?˜Ð™Q$Ò?œÎgœTíþ?™Ä¶BϪ?“äÐå÷à?Ú¾ÉÛ²º?–{=rƒ™K@@@@@*@*?ð?ð?ð?ð?ð?ð?Ãs¡÷ø(?²¶O9¨P?Ÿ˜Do¡Á?oŽËƒÙ@£ÉŒ‘Ò@¨!±ûà~?«.Å8r†÷?”2MÚwø@6¹Oå`ÿ?ç2âD -@Ÿ\¶oÔ|@ß@­ŸA$Ý/@­Ÿ2° Äœ@­ŸA$Ý/@­Ÿ?|í‘g@­ŸA$Ý/@­Ÿ1&éxÕ@­ŸA$Ý/@­Ÿ)ùrG@­ŸA$Ý/@­Ÿ,cñA @­ŸA$Ý/@­ŸL篹@¦ÈdÝ/ @¦Èy‡+@¦ÈdÝ/ @¦Èk…¸R@¦ÈdÝ/ @¦ÈnV“@¦ÈdÝ/ @¦Èbø7´¢@¦ÈdÝ/ @¦Èk]Ìcñ@¦ÈdÝ/ @¦ÈU›=@8žHè§æ@7ñuŽ!–S@4\Iº^5?@4_ªÍžƒä@3y7KƧð@3ÿ.Hè§@3ž«6z‘@3¦_Ø­« @3ž«6z‘@3¤‡ü¹#£@3ž«6z‘@3A [À?DzʘzT?£ Ú³ñ?¤½’ƒÚc?˜ŸÉZ ÃT?¥r.,¨i†?¥à×Ê/?˜ž^ƒÿ*ˆ? Í”{Í?¢zhû›\¾?žuÉ>—M?£ ƒU¾Š?¬ÞçP°ÐI?õT€…tn?Ÿ$Ìj½BÙ?’q6tNø6?—4`¾ÓÍì?•*†*Zû?­ìpÔÍ@@@@@(@*?ð?ð?ð?ð?ð?ð?‡™ ÇãÀ¿ƒö2Èö?vãß„ÛÅŽ?yMõë6ª@­Ÿ0e½­z@¦È[PB'­?†Ïšh?œ-ð+«ýÍ?å^µœn!æ@ êúF< -T@Ÿo¨°W(ê@à@¬¹’n—P@¬¸áÊÀƒ@¬¹’n—P@¬¹u0ð@¬¹’n—P@¬¹9!±Ï@¬¹’n—P@¬¹—¸m@¬¹’n—P@¬¹•ÔGi”@¬¹’n—P@¬¹’Ø€ûv@“dixÔýô@“bÚàm—@“dixÔýô@“di³2 @“dixÔýô@“dZ¢U]@“dixÔýô@“d\ÆwÇ@“dixÔýô@“da#3G @“dixÔýô@“d^ð÷@8è†YJôñ@7±Û ú–Æ@4\Iº^5?@4U¤ÐkAV@3K"Ðå`B@3B)µàÎ@3‚@·€5@3”,ä@3‚@·€5@2þãd?³@3‚@·€5@3-Q÷-b?ØqT Ä?ž`ñýŸMÉ?—:Ò–DåÎ?‘ð8©(/?’‡#<'?–5xw!¬?â‹_¡Rè?ŸÆçp‚")?–w žº?”yáÜ$¨Ã?’$;î™d3?‘{è,o®û?þ~6„×Èé?’‰½"„Ú?‡5«òì¤?‰ð’;MeÙ?Š_¦òûûœ?Œ#"oØ…K@@*@&@*@2@6?ð?ð?ð?ð?ð?ð¿Q],íª?B4L£¼@?pŠAÀ_ùl?fÎ\Ó–„@¬¹•Qü…„@“d^sd•Œ?}ÇËlœ}˜?t¡ÂT³€5?ìæ„`¾NÒ?ÜלvúJ@Ÿs‹xÏ9@@á@¥ì1&é@¥æffff@¥ì1&é@¥åzxl"@¥ì1&é@¥ì¥zxl@¥ì1&é@¥í‘hr°@¥ì1&é@¥î—Oß@¥ì1&é@¥í„M;@¯ŠÀƒo@¯„›¥ãT@¯ŠÀƒo@¯{~ÿ—@¯ŠÀƒo@¯z^5?~@¯ŠÀƒo@¯mV@¯ŠÀƒo@¯vð¹@¯ŠÀƒo@¯s¶E¡Ë@8?–»˜È@8/Ë’:)È@4B° Ä›¦@4M@¨CTTȺ@¯fî¼ÿ±€?{AVÀ^?V[éÖ¾{ð?ߎ{@ ˆ?˜HÏoLh@Ÿr0-`u@ã@©_!G®{Á.„€@©_!G®{@©`0£× ->@©_!G®{@©`ªdÂ÷@©_!G®{@©`}—ö+j@©_!G®{@©`KC•@©_!G®{@©`?.Hè§@ ¯·ÎÙ‡Á.„€@ ¯·ÎÙ‡@ ±/ „M@ ¯·ÎÙ‡@ °ðË)^ž@ ¯·ÎÙ‡@ ±T!-w@ ¯·ÎÙ‡@ ±ÿ.Hé@ ¯·ÎÙ‡@ ±“Ý—ö+@9šÔ,<ŸÁ.„>¤µÜÆ@4½‘hr° @3Ñ‚©“ á@3ÒÐå`A‰@3z–¼@3Š0U2a|@2~ùÛ"Ðæ@3Š0U2a|@2um\ú¬Ú@3Š0U2a|@2y#¢œw›@8J¨?©•È–¿g?¡rF§‚Å)?¡¤ˆ«>?·rýƒá7?¬cíxë â@8J¨?ÇàI>Wj?¡4þŒk†U?£Á4œÝi?ÆUT¼jî?¿>Äy÷ú@8p÷?—b…ªH=?‡~ ~ã?>æ¿Îï?IÏáå$?¾Á{þÆ%@@@@,@(?ð?ð?ð?ð?ðøøøøøøøøøøøøä@ ¿âÐå`B@ ¿Í±›-ž@ ¿âÐå`B@ ¿×…*>~@ ¿âÐå`B@ ¿ßž9)­@ ¿âÐå`B@ ¿êš*Ó¿@ ¿âÐå`B@ ¿â,ø—@ ¿âÐå`B@ ¿â´Ì"¸@¬høQë…@¬i$¼>± -@¬høQë…@¬hý`´wF@¬høQë…@¬hðhfR@¬høQë…@¬hê’Æ{F@¬høQë…@¬hÔ-nãZ@¬høQë…@¬hïIDC@75S&Á¾@74mŠÝC@40Ä›¥ãT@42žfn@3È“t¼j@3ÚJ³•@²@2ÏO „M@2åpÖ0ƒ@2ÏO „M@2Þæñ ,é@2ÏO „M@2Ý”,L•O?¥—å–?®Ôcö8?›a»òî?çÓ¯×/?•[_¸Ž0?“òÿ|‘G»?Á[‚ÎÉy?’PéC9 -ë?šd)EÑÕÓ?¢Zé¢gæ¹?“Ëî4ó…°?™]Úex‰?Ð}Wä‡?”6ÄTW;?Š_›àq¿Z?§§Î)–N?Œ{:5ÞiÍ?“ýý#¯@@$@*@,@6@8?ð?ð?ð?ð?ð?ð?P{Í¿2)9Þ0?o -xÚ[ö?ˆ­ÉäZß@ ¿äç‰Û~@¬háÇ8?ƒèJ MT\?–ƒu×PœR?üFùÇ‚_@­¼½l@Ÿry±“ -:¥7?–|€‹èÔ2?–f¦¢‚~ƒ?¹ñø« 2¶?‘­$÷Ì™?Ž5-³³?‰pWúÏ¿Ö?Â-qvP?“üO<ˆþï@@$@$@&@9@7?ð?ð?ð?ð?ð?ð?r68€?]±cÊ·€?eI"xð—%?hÔ×p…@­¨¢ãíï¤@— c/Eåj?}+”Õ˜Ý?x~H¨O­ô?í¾µŽg-ø?ß â|Œ@ŸqµkÙd@æ@¬eÈ´9XÁ.„€@¬eÈ´9X@¬e¶ð¸@¬eÈ´9X@¬e‘&éxÕ@¬eÈ´9X@¬e¯O „N@¬eÈ´9X@¬eßåÉ@¬eÈ´9XÁ.„€@¢.Ÿ¾vÉÁ.„€@¢.Ÿ¾vÉ@¢.ùÛ"Ñ@¢.Ÿ¾vÉ@¢.¼j~ú@¢.Ÿ¾vÉ@¢.)á°‰ @¢.Ÿ¾vÉ@¢.;ô‡ü¹@¢.Ÿ¾vÉÁ.„€@7IÎ_oÒÁ.„>¤µÜÆ@2W+ Iº@2Sa@N¤@2t“t¼j@2‚-V@1a:’£S@1hQë…¸@1a:’£S@1Wï²-@1a:’£SÁ.„NÜC,¥@8J¨?‘u:|ñ²¨?Ÿ!=T®?â?žéQÁö£?¥õŒôÓ"@8Ù@8J¨?”¤P ƒË?’ðÀ,°ø?—d¨XM?¡G÷fx^K@8û—@8p÷?›ì8h z=?³çÞOÚD?¡‹ áQ´??ž S è›@8 Ø@@@@&?ð?ð?ð?ðøøøøøøøøøøøøç@ª¸÷ÎÙ‡@ª¸ñƒçù`@ª¸÷ÎÙ‡@ª¸ñ@Çß@ª¸÷ÎÙ‡@ª¸ùT6ö@ª¸÷ÎÙ‡@ª¸ìkj0@ª¸÷ÎÙ‡@ª¸ðÕÊŸ@@ª¸÷ÎÙ‡@ª¸óHÇgÀ@›ð€@›ð†ë,‡Ä@›ð€@›ðÆ|E@›ð€@›ð‚ðUú@›ð€@›ð‰_ý!Ÿ@›ð€@›ðuý_5@›ð€@›ð„§Y|K@7Ç>«6z@7¾þ·76@4J^5?|í@4E áÉÝ@3M²-V@3Lé/×r@38DЩ*@32Ö~AoÞ@38DЩ*@333áM‡@38DЩ*@35õñ–äŽ?Ž\Õl6Ò?–·±áå0?”9 %S½?Œ† }-.Ý?“;<äA›«?À|ÏtËE?œÆæXÆd?“qÌ©ào?’†jN(˜É?³)0ù•?•ø~# ?’ ð½:(œ?‰%‡Ø„DZ?ŽƒÈS­t"?…øf‚ËkÄ?†V¼™²ä?ˆ•úæ©ß?×2в@@(@$@ @0@.?ð?ð?ð?ð?ð?ð?.H²Z¿M-ôBZ?PQ6Ÿ?[A¶˜iÃi@ª¸ðEØT@›ðƒ¨Èïi?n¬º[Oܬ?tØ?MßÞK?Ü#µY$R?àí7úK•@Ÿm’Ì XQ@è@¡rÄ“t¼@¡rÅ¡ÊÀƒ@¡rÄ“t¼@¡rÅ¡ÊÀ„@¡rÄ“t¼@¡rÃñA \@¡rÄ“t¼@¡rÆs×Ü@¡rÄ“t¼@¡rÂ@·€4@¡rÄ“t¼@¡rÂMÒñª@§Õ¯²-@§Õ±ë…¸@§Õ¯²-@§Õ®óMj@§Õ¯²-@§Õ­5¨Xy@§Õ¯²-@§Õ²ÊW§‡@§Õ¯²-@§Õ¯v_Ø®@§Õ¯²-@§Õ®Ù‡*@6D¯O „M@6EÂ\(ö@2k¥ãS÷Ï@2k¹Œ~($@1×ï²-@1×€4mÅÖ@1._oÒ @1,1&éy@1._oÒ @1,‘ÑN;Î@1._oÒ @1,í‘hr°?€‚ñêã ?ï1ïºÅ?‘\H{gX ?ŒÖ -Äȱ?“2{Áw¸?‘W×ý°A?|öOÿÝ?’4 "ëžØ? Dñ£P?’GÎ>GÅ?‘êë·áþA?’ ÃCÀ`ú?„³3Z\ð„?2ô]7?‚ù…žÄ`x?Šˆ€!B®?‡Õ˜]–GÄ?‰_uñšó@@@@@,@*?ð?ð?ð?ð?ð?ð¿Bý/›¿@WtÆh?9zÍŸñi—?3Ô‘¯¨N@¡rÄ¢g›Ú@§Õ°ýŒú¼?Y6Ô3Ê ?T 99ªq©?½jQþ*?³ -:¦÷ê@ŸfþÄ€@é@«p@«o¼í‘hs@«p@«oü¬1'@«p@«p¶®}U@«p@«p ¹Œ~)@«p@«p ûµt@«p@«pÅm\ú@«ÑÒñ©ü@«Ñ¼í‘hs@«ÑÒñ©ü@«Ñƒ9Àëí@«ÑÒñ©ü@«Ñ„êJŒ@«ÑÒñ©ü@«ÑquŽ@«ÑÒñ©ü@«Ñà r@«ÑÒñ©ü@«ÑŒô!-@8ÿ–»˜È@8ì¥zxl#@4áhr° Ä@4æÁ½¥@3ìj~ùÛ#@3ñÎ_p@3”mÅÖ8†@3™Çy¦µ @3”mÅÖ8†@3“œ¾ß¤@3”mÅÖ8†@3oÒòå?ÏÁ³Uy?’°BÉô-?[_œ(Ä? ãçùÇùw?“Ïb³0)3?§—´ ¼r?Á,æ*D7Ö?œ"ÛJÓUO?¦P{ìjÿ?“ÅÒÏPÉä?‘†óèJL\?™J•Ø3ÈÖ?Îî÷! ˜È?Ÿ‚Þ'h»?“àÕèéa‚?Ž«]O8èº?·♊N?¥È©¾ó‚ž@@@@@$@,?ð?ð?ð?ð?ð?ð?~ îÈ[¿W­)®?wyšI®=û?hJFÒ±@«p Åg6ƒ@«ÑØqx/?€ÞF[)?u†}ηx?áã8E-^ œ?è±1uw@¢*~ÞMlJ@¨&挿CX?C5 hG6?$½í‹IŽß?ñŒ…>?B¾~‚q²F@Ÿs¨OÔ±@ì@¬[?|í‘h@¬[<ÈsD™@¬[?|í‘h@¬[< aWB@¬[?|í‘h@¬[@µ<Õ@¬[?|í‘h@¬[>ÔIb²@¬[?|í‘h@¬[?O€yÍ@¬[?|í‘h@¬[?á†h@šø‚ Iº^@šø‚\(õ@šø‚ Iº^@šø€¢€–U@šø‚ Iº^@šøƒ»@šø‚ Iº^@šø~¾Ί@šø‚ Iº^@šø…S]ÏH@šø‚ Iº^@šø„G[åR@6ð4mÅÖ8@6ðbaênØ@2Å?|í‘h@2Ƥ#ͽÆ@2å`A‰7@2&ýëá\@1cÉîËû@1d¢†Øû@1cÉîËû@1c¥œ?©@1cÉîËû@1c¶–•G€?ñ3<' ?O©äú?‘£­ÿÃÏ?‹¬½Þꃩ?‘¯5Gí±½?‘Qãm²0I?†‡+ Iº?’$%Ÿè'?ãõÞ¿`?0Ò£Ìî ?‘Qõ9¥ï?ô<üîìG?Žh 3·œA?k…f¼ü ?‚׆W­–?ƒ$æJîÇ?†ç¬CÈ?†ôð¾6^@@&@(@ @4@2?ð?ð?ð?ð?ð?ð?EIh\h?&®–áÐ? ³ozA«7?87;g¡Ë¤@¬[>nà¿L@šø‚°½½?,ô+·öe?X?܃ݴ?bD®n” ?µ$Å](6@Ÿi/›^¤.@í@¡ñ&éxÕ@¡íOß;d@¡ñ&éxÕ@¡Î'*û"@¡ñ&éxÕ@¡œ}ûÙ@¡ñ&éxÕ@¡è?¨$@¡ñ&éxÕ@¡ö p @¡ñ&éxÕ@¡…:(@Ÿ]üí‘hs@Ÿ]çï².@Ÿ]üí‘hs@Ÿ]±7ñý¨@Ÿ]üí‘hs@Ÿ]sùå3@Ÿ]üí‘hs@Ÿ]Ã>äô,@Ÿ]üí‘hs@Ÿ]°ì)oñ@Ÿ]üí‘hs@Ÿ]öõ•›6@8 Î_oÒ@8åÉä@2Ùº^5?}@2ÇÝ ˆþW@2ˆ“t¼j@2A´P%ä@1kxFÜ^@1M¡-o#@1kxFÜ^@1I‹~Í_@1kxFÜ^@1^%\ïI”?æ ç«Z–?§›BÞ -à‰? "|æ=e?œã}MãmH?š0„ÈRpµ?—!¬CÔ?æ ç«Z–?¬~9;¸xN? ýŒsEj?œ -ø@Ÿjn‰[ØS@ï@¥ -ËÆ§ïžÁ.„€@¥ -ËÆ§ïžÁ.„€@¥ -ËÆ§ïžÁ.„€@¥ -ËÆ§ïžÁ.„€@¥ -ËÆ§ïžÁ.„€@¥ -ËÆ§ïžÁ.„€@š ¢Ðå`BÁ.„€@š ¢Ðå`BÁ.„€@š ¢Ðå`BÁ.„€@š ¢Ðå`BÁ.„€@š ¢Ðå`BÁ.„€@š ¢Ðå`BÁ.„€@8¯O „MÁ.„>¤µÜÆ@4’ Iº^5Á.„M‰ûçm@4Ðå`A‰Á.„QnÙ‡@3”mÅÖ8†Á.„NÜC,¥@3”mÅÖ8†Á.„NÜC,¥@3”mÅÖ8†Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøð@®ªë…¸@®ª`ƒn™@®ªë…¸@®ªa|Ú@®ªë…¸@®ªë…¸@®ªë…¸@®ªbMÓ@®ªë…¸@®ªùrGE@®ªë…¸@®ªGE8î@©8ýó¶E¢@©8‘ë…¸@©8ýó¶E¢@©8þÑ·@©8ýó¶E¢@©8ý¥œà@©8ýó¶E¢@©8øy=Ù~@©8ýó¶E¢@©9Ý/ @©8ýó¶E¢@©8ùÀëíû@7ÿ–»˜È@7Éûçl‹D@3ÞÙ‡+@3áä÷eý‹@2ˆ“t¼j@2‹’:)Çz@2Œ¿±[W?@2'»/ìW@2Œ¿±[W?@2ˆ7´¢3œ@2Œ¿±[W?@2ŽHè§ç?Ûa‚ßi?—hÄ”V?’ʶ‹ùs?Ž,OêK˜u?–JØi™”?•(Ï¢Uÿ?ÙYܲð?˜ü^Š1??• -o‡É§?‘Ò–¬q?¡ºøò¤âÍ?“ 3—·²W?׬˜çß?’pP‡È»?† - Ðló]?†ü¢q+ÄU?Š—à `ž?mŽÃÎŽ@@@@@,@(?ð?ð?ð?ð?ð?ð¿i®@R?QïÞz®À?^zž)ý ?iرô­ƒŠ@®ªI—«@©8úQ ®û?m/ìoו ?{pbf_?ÌÜD߉EÎ?äÃl\lÎ@Ÿr·Ç¬ <@ñ@¯>+…¸R@¯>+ Iº@¯>+…¸R@¯>,ô!.@¯>+…¸R@¯>+àÞÒ‰@¯>+…¸R@¯>-\ú¬Ú@¯>+…¸R@¯>+)^ž@¯>+…¸R@¯>+ I»@ ý*~ùÛ#@ ý)ûçl‹@ ý*~ùÛ#@ ý*JŒM@ ý*~ùÛ#@ ý+)^ž@ ý*~ùÛ#@ ý*³g ù@ ý*~ùÛ#@ ý*qÞi­@ ý*~ùÛ#@ ý+¹Œ~(@4‘|ÚQ@4ޱÄ2ÊX@0žÙ‡+@0ž—Oß;@0A‰7KÇ@0N¤¨ÁT@/(Û‹¬q @/)Dg8~@/(Û‹¬q @/(>BZîd@/(Û‹¬q @/(´9Xb?ð°–Ž]?õ¹Ëh?‘D&»ä?Œ:Z2‚b?‘Dj?ë+ʦÜ_?ð°–Ž]?’ÍîfÕ? Dñ£P?CÚ B÷?ñ«Ý„ Õ?«àÓ RÆ?ð*wjs—?Œáò¯ž¼ù?‚|׿pZ?ƒ¦$H?†špk Y?†µ°jÆÃ?ð@@@@&@*?ð?ð?ð?ð?ð?ð¿QÝ«Ä?:¿ú?2šÍ5Á*Â?2çÊÖ®@¯>+ð¤Á¯@ ý*ñÚ?Aµ?»ØF©?A›îË7I?}Ï·A¬ª?zäS'sJ@Ÿs…87e@ò@®Ðõ?|í‘@®Ñ Iº]@®Ðõ?|í‘@®Ðóïò¨@®Ðõ?|í‘@®Ðõ¢öºL@®Ðõ?|í‘@®Ðõ: ¥Œ@®Ðõ?|í‘@®ÐòŠm, -@®Ðõ?|í‘@®Ð÷Šqq…@˜ Ä›¥ã@˜"•™Ø^@˜ Ä›¥ã@˜0zØËé@˜ Ä›¥ã@˜rX–V@˜ Ä›¥ã@˜A³öÐ@˜ Ä›¥ã@˜8ºïñ@˜ Ä›¥ã@˜,T|þ@9Hè§ç@9+âÙ¦@3Ê^5?|í@3ÐjJèJ@3²-V@3##N™à@2}cˆe”°@2ƒÚ]6væ@2}cˆe”°@2{Ô¸æAQ@2}cˆe”°@2…¸pe°?§›&°#;?ÝÙä3ð?–Õ)`x¿y?ÙzëÄö?’:׉êÑ?’ŸÜùý?£Vå”Åz?“Ú)?¡T‘H³N?ï=?’6ad á=?’p<þþe‹?¸ TÆûØv?D‡¡ÖýÌ?„Ôô²*™ÿ?†%"¸ü?‡‚¹§JDà?Š0‹Ñr;ü@@ @*@&@7@8?ð?ð?ð?ð?ð?ð¿Op x$¿`Ü}‘€?]A?I±Fƒ?q©²L„ßz@®Ðõê° Æ@˜-ÆÎ]?q¹!¸¿¥?†è¹ Ȱ?ÙYüæÁº\@ÒþíB“½@ŸpV¢BÎ@ó@¥[ -=p£×@¥[ ûçl‹@¥[ -=p£×@¥[ jçÕg@¥[ -=p£×@¥[ -™0¾@¥[ -=p£×@¥[ C•@¥[ -=p£×@¥[ -=p£×@¥[ -=p£×@¥[ ÞÒ@­9`Ä›¥ã@­9`Ä›¥ã@­9`Ä›¥ã@­9b@·€4@­9`Ä›¥ã@­9`uöý"@­9`Ä›¥ã@­9`IQ‚@­9`Ä›¥ã@­9b\(ö@­9`Ä›¥ã@­9a [À@4Ç>«6z@4Ç$tSŽô@1 -^5?|î@1 -Ô,<žì@0v§ï²-@0vÈ´9X@0 ù kº@0â‚@·€@0 ù kº@0Oß;e@0 ù kº@0†Â&€ž?|öOÿÝ?*£|3Né?‘°&޲P?ŒArUã@?‘ ·èf?‘£.'É?}Ñ¿ž,?’LÁŒÀ´a?§^ ÿo˜?]bËn~?‘!U?Ð{Ò?hï,ðà?ƒ¡É^&Ö?ŒÖ -ÄȲ?‚ÂÌ]æ?‚þ——³§ø?†Ü‘ °Ô?†ÃÛSPã@@@@@*@&?ð?ð?ð?ð?ð?ð¾îZœb?&ùõ‡ ?-ŠÂ÷±“²?&Š‚Gj}@¥[ -vcG@­9a"ä1Q?Mps»µƒ:?Fü9;„Ät?§Hi ?šžS=-ðv@Ÿg •vä@ô@¬ÔÞ¸Që…@¬Ôݲ-V@¬ÔÞ¸Që…@¬ÔÞ‰ŒUí@¬ÔÞ¸Që…@¬ÔÞ‹Æ^Z@¬ÔÞ¸Që…@¬ÔÝmk„6@¬ÔÞ¸Që…@¬ÔÞ[íE<@¬ÔÞ¸Që…@¬ÔÝ_/ëÇ@–‡ð£× -=@–‡è Ô•@–‡ð£× -=@–‡ôÌö”@–‡ð£× -=@–‡ïȈ¹@–‡ð£× -=@–‡ð'8®@–‡ð£× -=@–‡îÕ˜M@–‡ð£× -=@–‡ï@oC@6” xFÜ@6‘eÚ>iÎ@2^Ù‡+@2^x†çˆ@2.ùÛ"Ðæ@2-Yû×ò@1s&Á½¥@1q¤é›@1s&Á½¥@1rIR1I@1s&Á½¥@1qyAê¥?€‘gQÚÃ?©ýSÏìÅ?‘ÀbÑÀç?Œ´›È?‘ÇÜc娸?‘PÉRŸŒ?|ï"<¶~~?“¿ñ#ëu?‘^Ö:[Î,? íkßÞ?‘w«~A?¹ØÖ3?„ö–'@¡è?ŒÚ¦üˆƒ?†[µó¥t‚?ƒ•sç -í ?‡÷2o»9?‡5zj›«@@(@$@$@9@6?ð?ð?ð?ð?ð?ð¾Ásëø?L†[d?Ìt:ÇDž?.:EÑ•i@¬ÔÝ®Uà@–‡ìÁî?:u, Í?O°zˆ¤?H¸A>q?§Óbù]ÕH@Ÿg2ŒpÎ|@õ@§[ݲ-V@§[ݲ-V@§[ݲ-V@§[Þi­BÄ@§[ݲ-V@§[ÝÙb·@§[ݲ-V@§[ÞÑ·@§[ݲ-V@§[Ü]cˆf@§[ݲ-V@§[Ûçl‹E@°n—P@°n—P@°n—P@°¤¨ÁU@°n—P@° Ô•+@°n—P@° …ðoj@°n—P@° ]Ìcñ@°n—P@° Òñ©û@3Ù*0U2b@3ÙQ‚©“ @/žùÛ"Ðå@/œàuöý"@/dZ¬@/FÜ]d@.-úCþ\’@.*#9Àëî@.-úCþ\’@.*~ùÛ"Ð@.-úCþ\’@.*¦L/ƒ|?|¬Çëý ?dYûë„{?‘£Ä›è?ŽÆv‹‰k?‘‘n{ÆäK?ý‰w'¬?|¬Çëý ?’j•×›c?‘ŽütÅÒ(?‘èÒ§ˆ„Æ?‘c3¸cÜ(?‘á.†8?‚˜YªüÏE?ŒË›Í‡Çq?‚¯­Ù¤Á¶?ƒ*|š\/´?†špk Y?‡&üòI@@@@@,@*?ð?ð?ð?ð?ð?ð¿3ÜÕ€¿G×8t\?$2e¬XD?6Ñãe2f[@§[Ý)¨‘@°ï`Ëi?DAÝ€â?WG6ÀÕ8@2OO „M@2L篷é?¡ë MV{¶?¹sOeÖwS?›(`¥Æ´?¥__z8Ž`?g;+³ûu?¦ŠãóŒìš?Žì«ÍÊ#?¾Iû ÖÒÍ?’ðÀ,°ø?¦róPès¥?¦kG r©Ï?©Êâaþ¾?—¹|­T â?žTK eð?”³Ž+k?ŸB-j·ï?¬D©`Ä?¡‘8²™ç@@@@@,@*?ð?ð?ð?ð?ð?ð¿t ºŸì¿~`H?~y(Kæ¬u?]IXêwe@§„zˆ5æÚ@œÊ]êt–?›—? p™Œ?€‰Rp@Š6´S?Ù¥„¨È÷f@Ÿi”³uÎd@÷@¤ìŠÀƒo@¤ì‰Y:1¨@¤ìŠÀƒoÁ.„€@¤ìŠÀƒoÁ.„€@¤ìŠÀƒoÁ.„€@¤ìŠÀƒoÁ.„€@¤ìŠÀƒoÁ.„€@$D›¥ãT@$Qèó@Ñ@$D›¥ãTÁ.„€@$D›¥ãTÁ.„€@$D›¥ãTÁ.„€@$D›¥ãTÁ.„€@$D›¥ãTÁ.„€@8VšÔ,<Ÿ@8;ô‡ü¹$@4Å?|í‘hÁ.„M‰ûçm@4¢-VÁ.„QnÙ‡@4 ¿±[W?Á.„NÜC,¥@4 ¿±[W?Á.„NÜC,¥@4 ¿±[W?Á.„NÜC,¥?®ÌÅþõ¤À@8#˜@8¾:@8 >+@8Iç@8Ù?²ŒNìK3Í@8Î÷@8i§@8Å@8S@8û—?¢O>Fâ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøø@¥NÙ‡+@¥j~ùÛ"@¥NÙ‡+@¥'†Â&@¥NÙ‡+@¥Ä2ÊX@¥NÙ‡+@¥÷eý‹@¥NÙ‡+@¥õÂ\@¥NÙ‡+@¥ á°‰Ÿ@­tvÈ´9X@­tˆ´9X@­tvÈ´9X@­tN;Í5§@­tvÈ´9X@­tD2ÊW¨@­tvÈ´9X@­tF§ï²@­tvÈ´9X@­tDÝ/ @­tvÈ´9X@­t=Ùb·@8Œ]cˆe”@8yDg8~@3uãS÷ÎÙ@3\ÓZ…‡”@2ù7KƧð@2Ò©“ àß@25µsê³h@2 <64@25µsê³h@2Ov_Ø®@25µsê³h@2 <žì¿²?½=,ÜŠ{g? È»v\¶?¤½’ƒÚc? Tã|ø2Ñ?¡YË@ÜíÛ?©©åðLè…?´ Z è´ß?&”ðÚ˜?£€-S¡^?›=:=N…>?œC]F~Ü?°•†(z@†?º‡Øpi?œ‘z¥æ?‹v'þ­X?…âC£½¾Ý?‰w¿˜Í¶ª?Š`½i=ÓØ@@@@@*@*?ð?ð?ð?ð?ð?ð¿€ü¸)¥¿‡„9‹?„ðÕ"[êº?y;ØÝ÷3…@¥ `¢ôR@­tH¬±-?–CѱK€ª?ŠPäTD‹@öAÅÏ„\?ð…é`¦%*@Ÿo-±û‚@ù@¥-ØbMÓ@¥-ÖE¡ÊÁ@¥-ØbMÓ@¥-Ó×Ûõ@¥-ØbMÓ@¥-ÏŸ¾w@¥-ØbMÓ@¥-Ò×sü@¥-ØbMÓ@¥-×eýŠÛ@¥-ØbMÓ@¥-Ô!-w@«bMÒò@«’n—P@«bMÒò@«”¯O „@«bMÒò@«“3332@«bMÒò@«‹íúCÿ@«bMÒò@«•µsê³@«bMÒò@«:û~‘@6” xFÜ@6•ðoiDh@3E?|í‘h@3IÇy¦µ @2•`A‰7L@2˜y=Ùc@2#ÉîËû@2)ã¼Ó@2#ÉîËû@2)rGE8ð@2#ÉîËû@2)rGE8ð?„F/·ÿP5?—A«ª°×Z?™çÙô½îé?ç\Š2˜?µDá?…2 Ôî½?‰G±±ZÎ?‹Ûx§Þ@@@@@*@,?ð?ð?ð?ð?ð?ð?$a€¿2¶Ô`?9~ñ¶°êÒ?:áçÈZUš@©ù+ÿwˆ@£J÷`”?Xî ”?­õ?[&¼*5l?¿—im4˜ÇÅÏ?]G|¤Ý?0-B¿q›?Í—uèø*?L5–S€k?€bMÔŠ»?Œ¬h2:“?‚nÓ3îŠ?‚â>¹R÷K?†‡I‚ÿ¯Û?†‡I‚ÿ¯Û@@,@,@,@7@;?ð?ð?ð?ð?ð?ð¿CD¨ƒ¿ŠØL¤?/ùÏ·”>ñWu,¦{g@®K”%ê@—?i¤6?>¾ò´7q?hš# l®?w>ï1¨è>÷­¿Ôm¬@Ÿs *rW¥@ý@Ÿ7Që…¸@Ÿ7Rn—Q@Ÿ7Që…¸Á.„€@Ÿ7Që…¸Á.„€@Ÿ7Që…¸Á.„€@Ÿ7Që…¸Á.„€@Ÿ7Që…¸Á.„€@$5?|í‘@$34l@$5?|í‘Á.„€@$5?|í‘Á.„€@$5?|í‘Á.„€@$5?|í‘Á.„€@$5?|í‘Á.„€@4쿱[X@4 YüŸ@1Ìí‘hr°Á.„M‰ûçm@1Ë"Ðå`BÁ.„QnÙ‡@1 -0U2a|Á.„NÜC,¥@1 -0U2a|Á.„NÜC,¥@1 -0U2a|Á.„NÜC,¥?|¾»•lŽ@8#˜@8¾:@8 >+@8Iç@8Ù?|¬g68ó@8Î÷@8i§@8Å@8S@8û—?‚”½Í}@8 * @8p÷@8¶@8 Ø@8 Ø@ ?ðøøøøøøøøøøøøþ@ªÏ}p£× -@ªÏ‚\(ö@ªÏ}p£× -@ªÏb\(ö@ªÏ}p£× -@ªÏt¢3œ@ªÏ}p£× -@ªÏpË)^Ÿ@ªÏ}p£× -@ªÏs@N¤©@ªÏ}p£× -@ªÏst¼j~@¨}aG®{@¨}O\(õÄ@¨}aG®{@¨}R•éá±@¨}aG®{@¨}WOß:@¨}aG®{@¨}ca@P@¨}aG®{@¨}^Åm\û@¨}aG®{@¨}a [À@8Ñ|ÚQ@8¹“ àÞÒ@4f‡+ J@4`°ò{²þ@3—ï²-@3ÿ—$tT@2Œ¿±[W?@2…Y³Ð|…@2Œ¿±[W?@2†È´9X@2Œ¿±[W?@2‡€4mÅ×?3ßa=„?“³ß )}o?›Q-(¥Z°?˜Š4¨]t?•bJÖµæÿ?—>æV¡¶$?­éW«ZM›?œœUX |e?•¥º~§?—wžÈAV?” E®!—?“f:[êc#?¾Ôm¶W?”¶’8¾J?‹?ü}(´3?‡¯½.SM?‹Ûx§Þ?Žrø·óæ@@@@@*@*?ð?ð?ð?ð?ð?ð¿lƒ–0?V"¤ÊQ?SÅt`7´&?ai Ÿ~©@ªÏu…D$t@¨}_…&Þ1?uûÔlîtÄ?uGWùôIM?Ý›sê'z?Ö1å_á@ŸoÿÐ@ÿ@¢Á¬1&é@¢Á¾¸Që…@¢Á¬1&é@¢¼Ñ4êK@¢Á¬1&é@¢¼¾ùÛ"Ñ@¢Á¬1&é@¢¼CŠ @¢Á¬1&é@¢¼VOv`@¢Á¬1&é@¢¼š¬1@¦’—Oß;@¦’‡®zá@¦’—Oß;@¦ßö”E@¦’—Oß;@¦ýÌcñA@¦’—Oß;@¦·€4mÆ@¦’—Oß;@¦ú–¼@¦’—Oß;@¦Ý/Ÿ@8ý:’£@9\(õÃ@4ÇÎÙ‡+@2&Â&€I@3Õ`A‰7L@1em\ú¬Ú@3p–»˜Çã@0Ù“ àÞÓ@3p–»˜Çã@0ÊÀƒn˜@3p–»˜Çã@0ÅýŠÚ¹ö?ÁІ$±™?ÕO;‹5²à?Ñ D¿‡º ?Å^‚¨ˆ2È?Ë.ÐÊI?̼+èHn?µQN?ÂŽsÜ3 ?Æ÷[ì†ú?ÇAöþMª?ÃzÖª=ô‡?ÅXbáé?ÃÕÇêF¬(?……+Qt?£%øZîo ?°LÁ(±“?°;û}¼?¥ÕS^^G>@@@@@*@*?ð?ð?ð?ð?ð?ð¿ÔnTûH¿Ã¬¿t¢H?ºù4/?¤zqC@ç@¢¾#0_¸@¦ðWõú?Ù„mk ?Å¿ó¸È@DK|©>Á@)©.©”µ@Ÿi7Ñų&@@¯ë5?|í‘@¯ëL…ÏçÞ@¯ë5?|í‘@¯ê|ÚP@¯ë5?|í‘@¯ëk…¸R@¯ë5?|í‘@¯ëwškQ@¯ë5?|í‘@¯ëXy‰B@¯ë5?|í‘@¯ë$9?¦]OëvÙú?Ú¢‘:]S?àŸT±f‡x?ÚE³P¤\?ÂË/¯ƒj~?Æ Rhª§?¥“ÓÛƒ ‹?»Ç­Kåß?Å&ÁÐQ~?¿ü)½ÀÍ?˜Ñ‹>?³gÕJªš‚@@@@@5@6?ð?ð?ð?ð?ð?ð¿gmÐ(*¿E Ù`?u º-i¤ß?‚äø£;k@¯ëFº,%·@”óøÕèv?’ýã4{Ý7?¡ -9çÞ/?áÎCà¥t?ì}S?Öa@Ÿc a;N@@ªÝaG®{@ªÝa‰7KÈ@ªÝaG®{@ªÝaÊÀƒ@ªÝaG®{@ªÝaÊÀƒ@ªÝaG®{@ªÝaaä÷f@ªÝaG®{@ªÝ`ªdÂø@ªÝaG®{@ªÝ`ƒn˜@ŸÇ®zá@ŸÇ®zá@ŸÇ®zá@ŸÈð@ŸÇ®zá@ŸÇ®zá@ŸÇ®zá@ŸÉk¹Œ}@ŸÇ®zá@ŸÇâ‚@¸@ŸÇ®zá@ŸÈË’:@3¹Œ~($@3Ƨï²@/¼j~ùÛ@/!-w1@.&éxÔþ@.HðŽ@-`ªdÂù@-©*0U3@-`ªdÂù@-×Ûôˆ@-`ªdÂù@-œ¾ß¥?|öOÿÝ?Ï[äe?¢Ûdâ_#?¶.ŠcC€?½Œ¬@¶[¨?í“C¸<É?Ãd¼Þô?™¬Ð3S³Î?–µPKYÅh?¢m« €R?šÓ”«ú?—¼l3Ê`a?™ä±†Ö4ƒ@@&@ @&@9@7?ð?ð?ð?ð?ð?ð?‰(;V¿”*ª±› ?ayÁÛêÕ³?h´Ø«Vù›@ª¹•ÚŒÍ@•³€¹±°¦?v_hw“RË?€ÈǨlŠ?Ä·.ÍM?Â_ܵµ@Ÿ_s=äÙ@@®Ƨï²Á.„€@®Ƨï²@®Ï\(õÃ@®Ƨï²@®Ò£S&@®Ƨï²@®ãˆe”¯@®Ƨï²@®èÁTɇ@®Ƨï²@®ÝæšÔ-@ D†$Ý/Á.„€@ D†$Ý/@ Dœ¾ß¤@ D†$Ý/@ D‘ÑN;Í@ D†$Ý/@ D§ü¹#£@ D†$Ý/@ D†Á½¥@ D†$Ý/@ DºáG®@9›¹Œ~($Á.„>¤µÜÆ@5€ Ä›¥ã@5jÍžƒä&@4Ú~ùÛ"Ñ@4Êû~ÿ—@4^«6z‘@45Â\(ö@4^«6z‘@4F€IQƒ@4^«6z‘@4*Ížƒä&@8J¨?°o\3dŽØ?ŸcOÖ²Ü?¡ø -à ?«î¢¥'&‡?·ãöâ@8J¨?±ûKá•)†?œ*&Ækúµ?¸Yà5}Go?¬€Ö¡(?µ.•Э[@8p÷?¡:¥UYP§?¦þ“ßH/b?•*¥Q«_“?¥VËMª¼‰?¯!›ÖËf@@@@,@$?ð?ð?ð?ð?ðøøøøøøøøøøøø@§nœ(õÂ@§nœj~ùÛ@§nœ(õÂ@§n/Ÿ¾@§nœ(õÂ@§nœwškP@§nœ(õÂ@§n!ÿ.I@§nœ(õÂ@§n›µsë@§nœ(õÂ@§n›‹¬q @¤Pm‘hr°@¤PmÒñ©ü@¤Pm‘hr°@¤Pm5¨Xy@¤Pm‘hr°@¤PmBÃÉï@¤Pm‘hr°@¤Pm\ú¬Ú@¤Pm‘hr°@¤Pmžƒä&@¤Pm‘hr°@¤PmÒñ©ü@2¥öý!ÿ.@2¥ðoiDh@/Gï²-@/Gü¹#¢œ@.mOß;dZ@.m¸ºÇË@.½Vlô"@.½!ÿ.Hé@.½Vlô"@.½!ÿ.Hé@.½Vlô"@.½}¿HÌ?É^³Dw'?ûJ`ÕYð?‘$Cê¡@í?‹Æ úJ-M?‘¿ÐÅu?ë+ʦÜ_?ÐbV‡,?’&u÷E»@?ƒ‰/BH?K·‘d]?üÓqÔNŠ?{L Õ¢D?€b¡´ñ@?Œ²ÅŒÕ6?‚|׿pZ?ƒ ?ÿ½?†©b/bJö?†–f_ÔŠŠ@@@@@,@*?ð?ð?ð?ð?ð?ð¿I¢SZ?)\‚Ø?8ŠŽY#™`>û•åw„œ@§nœ >Ù@¤Pm”)²˜?GœüùßµÊ? -0Ö^¶J?Š÷9tµÖ´? oÞMš@ŸsëœgÞ@@¤½q©ûçm@¤½q©ûçn@¤½q©ûçm@¤½q©ûçm@¤½q©ûçm@¤½rÊW§‡@¤½q©ûçm@¤½u?|í‘@¤½q©ûçm@¤½pHð@¤½q©ûçm@¤½k6z‘@£oŸ¾w@£nÙ‡+@£oŸ¾w@£m‘hr°@£oŸ¾w@£kÓÃa@£oŸ¾w@£lcñA@£oŸ¾w@£mí(Œç@£oŸ¾w@£lÙè>B@4[¹Œ~($@4[àÞÒˆÎ@0ør° Äœ@0÷y¦µ @0b-V@0`ëíúCþ@/QÑN;Í6@/N!–R½=@/QÑN;Í6@/OªÍžƒæ@/QÑN;Í6@/H´9Xb?}Ñ¿ž,?¾¢`ƒ?‘$Cê¡@í?‹¹GüÞõ?‘ä~|+?’¯-! )m?|öOÿÝ?’ ,øÕC©?–ÐO(·Š?9ÍÇ~FÀ?õ<úU?ëÎ@ A2?‚‘´…=Ca?ŒÐ¤Âÿê?‚ÂÌ]æ?‚ôhBì^?‡×7°º?Š—à `ž@@@@@&@*?ð?ð?ð?ð?ð?ð¿A†]¤¿:ÛÌ®À?MQîÏŸ77?)õÕÓÍK”@¤½qFj^@£m߀íï?l¯Ûì?JD<ÆM×?ä×t‹¦C‚?¡¥8åò@ŸfÏTËIÃ@@¥È€@¥Èr° Äœ@¥È€@¥ÈlÌÌÌÍ@¥È€@¥È|žì¿±@¥È€@¥Èz^5?}@¥È€Á.„€@¥È€Á.„€@žò(õÂ\@žò$Ý@žò(õÂ\@žñýp£× @žò(õÂ\@žñ÷1Å@žò(õÂ\@žò Òñ©ý@žò(õÂ\Á.„€@žò(õÂ\Á.„€@8Q|ÚQ@8J³g ù -@4›¥ãSø@4ÎÙ‡+@3V”@3FÜ]cˆ@2a:’£S@2V€IQƒ@2a:’£SÁ.„NÜC,¥@2a:’£SÁ.„NÜC,¥?™™™™™™š?ÜFÕ^c?¤Ôê -ûQ÷?’úˆ_šª@8Iç@8Ù?¢Æ÷Xê†?¡1™•ÿˆQ?¢Ì²ðˆ»?¡"JîÃ!@8S@8û—?¹ -f)Á7 ?¦…ƒ´3ž?žïó­M?›0Œ’$ž@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø@ ô˜bMÓ@ ô•äÈœk@ ô˜bMÓ@ ô²7Q\@ ô˜bMÓ@ ôŸ99˜@ ô˜bMÓ@ ô¨ÙE@ ô˜bMÓ@ ô™¹›n@ ô˜bMÓ@ ôª‡ @ &éxÔþ@ +Ƨïž@ &éxÔþ@ =ZnIy@ &éxÔþ@ +¡ê¡@ &éxÔþ@ 8)Ïp@ &éxÔþ@ Ú8@¥MzáG®@¥MzÅ*Õ6@¥MzáG®@¥M{6×’º@3uS&Á¾@3uL˜_÷@1º^5?|@1Zñº`@0¶§ï²-@0¶ÿ\˜Ý@0Þi­BÄ@0PwS@0Þi­BÄ@0ŸC?¶@0Þi­BÄ@0½,ÅV?|Ñb×¶@?ëzÐRð¼?‘7*¹£¶€?‹«ég€eÜ?ÿ¡c7A?ÛàuZΑ?|¬h2:“?’³.ª?“(Wò§g?2s `²?äÍ *+R?SR‰—eÇ?‚†µ”g¬?ŒÀÈŠv¯?‚Ψ,UiW?ƒÍ©&?†þ†ÊB1-?†ïÉ'f—@@*@$@@4@4?ð?ð?ð?ð?ð?ð¿8äòñh? ‰gP?¹GJ¯¸?0ƒ0-C.D@ —JÀRŸÚ@¥M{GÍSÅ?7’2ßC?PÑ‚ç§Õ†?~9î]áÞ?­§ãGh¯@Ÿfðð †@ @¬ŸŸ¾vÉ@¬Ÿ¦×@@¬ŸŸ¾vÉ@¬Ÿý!ÿ/@¬ŸŸ¾vÉ@¬ŸOv_Ú@¬ŸŸ¾vÉ@¬Ÿ¬1@¬ŸŸ¾vÉ@¬Ÿ6âë@¬ŸŸ¾vÉ@¬ŸzáI@$³3333@$®6Òo*@$³3333@$«íúCþ@$³3333@$²þÅm]@$³3333@$¦€IQ@$³3333@$¬VÕÏ«@$³3333@$­‘hr°@7µS&Á¾@7³Ô!ª:@4GÎÙ‡+@4N\‘ÑN<@3'KƧïž@3) 'RTa@3?ò䎊r@3Nÿ—$t@3?ò䎊r@3FE¡ÊÀƒ@3?ò䎊r@3YÔ•*™?‡‡á´WÉ?™¿µ´¿1´?”Ä0óçî?˜^ܪɅ ?š(:)[a?¬¯!ò8¾‰?‰ŒÊQ¥?Ÿy­\Ÿ€?’]:»›.ó?ž¡‘dŸ–c?—?—³’sB?¯áƒÙ²?—'WÍüæ?˜jN‹­÷R?ƒ{¬ÉW?šSÌ·ï$€?‹ì3åý?°¬¹57¶ø@@@@@*@,?ð?ð?ð?ð?ð?ð?Y§Œ¶ ¿9}¿T?Qq°ñetC?:Ù¤_èø#@¬Ÿ§x~@$¬e¥ Á?o6rr$Î?XÅ3G½Êå?Ðèú?£–7S#Ám@ŸePÇÎ@ -@©ùíV@©ùíV@©ùíV@©ùî.±Ä3@©ùíV@©ùîV“@©ùíV@©ùî¾ß¤A@©ùíV@©ùëûµt@©ùíV@©ùëŸU›=@¥`Ù‡+@¥`ÙXbN@¥`Ù‡+@¥`Ùe+ÓÃ@¥`Ù‡+@¥`Úu%E@¥`Ù‡+@¥`Ù=Ùc@¥`Ù‡+@¥`ÙÛ"Ðå@¥`Ù‡+@¥`Ùe+ÓÃ@2p4mÅÖ8@2p'RT`ª@.Gï²-@.HK]Ìcñ@-?;dZ¬@-?HË’:@- -#9Àëî@- -dÂø7µ@- -#9Àëî@- -W§†Â'@- -#9Àëî@- -qÞi­C?É^žQ5P‚?ÉGãA­÷?‘"žæÆó¡?‹ÝÉ!ë#?÷6r In?ºª$Ð?ÐbV‡,?’ ÃCÀ`ú?ˆ9²0?EÇàÔPà?ë,YÁ?X78›š?€cPßQª?Œ°¶.Ä+Æ?‚uÞ@>N ?‚ôhBì^?†½ª»—?†–f_ÔŠŠ@@@@@*@(?ð?ð?ð?ð?ð?ð¿VÙ ÿo?m¯ï ?7†Þdh*9?'‰ -«è¨B@©ùìü_JW@¥`ÙzŸW?F nÇzl?6JD¸µjº?ˆü—'·è=?e Ë\ ”±@Ÿs -Û’ó¶@ @­tQë…¸@­tL‹C•€@­tQë…¸@­tK¹Œ~(@­tQë…¸@­tBh Ô”@­tQë…¸@­tBëC,@­tQë…¸@­tUÜÆ?@­tQë…¸@­t+…¸S@§JÑë…¸@§JÍÒñ©ü@§JÑë…¸@§JÏ'»/ë@§JÑë…¸@§JÒn—P@§JÑë…¸@§JЉ 'R@§JÑë…¸@§Jξߤ@@§JÑë…¸@§JÄ“t¼@6Î쿱[X@6Ñ|ÚQ@3+¥ãS÷Ï@3+quŽ!–@2´“t¼j@2´tSŽóN@2ò䎊r@2ƒœ¾ß¤@2ò䎊r@2‹ŸU›=@2ò䎊r@2z^5?|î?„F/·ÿP5?–(.À·÷?“u*y?‘ÔþÆvI‡?£”ŠFÉÇ¥?¡6% v -?•²»UbB2?—áZk·×?³2ºŽ'?’¸Ý8h\?—uG<Ê? µ‘ƒ>?…~ÆÎÇ$†?Å{¿Ž<º?ˆÌ7^|Â?¢ÇrˆG?” 4‹eñ -?›°Ô¤A]@@@@@(@&?ð?ð?ð?ð?ð?ð¿nÓò‘ì¿IœÄt?fmç[¦ÀÈ?W‰Äô}7@­tCñŸÔ#@§JÎvP?†Ç®5 ¡?s´Zð‰.s@ÄÏ.E…Ú?×ë?Óq.@Ÿhw8r4^@ @¢2Rñ©ûç@¢2Q&éxÕ@¢2Rñ©ûç@¢2eF -¦L@¢2Rñ©ûç@¢2_±[W?@¢2Rñ©ûç@¢2SMj@¢2Rñ©ûç@¢2cÉîËû@¢2Rñ©ûç@¢2dÝ/ @£Q·KƧð@£QÑ©ûçm@£Q·KƧð@£Qwéùr@£Q·KƧð@£Q”,<ží@£Q·KƧð@£Q²×sü@£Q·KƧð@£Qç†Â&@£Q·KƧð@£QêçÕfÐ@8Ù*0U2b@8ä¢3œ¿@3¡hr° Ä@3°U2a|@2¤¼j~ùÛ@2¯ìVÕÏ«@2YŒ~($ @2zÇË)_@2YŒ~($ @2}V”@2YŒ~($ @2nŠqÞi®?´M ó¬^õ?’°BÉô-?›mqò -×?• Q™iå”?­×p°C²E?£šÅF ?§Q,Äš¤?›44]Åùt?°&˜1õjb?˜ýšJ¼|T?±"û¤]N?¦_BñWk?˜W|¶DC?“êXÔ #{? “˜¯ÃÛ?éàQx˜?±ö€»H? ¦å_¹@@@@@,@(?ð?ð?ð?ð?ð?ð?xåÈäÑ?xÀK›&?b?Nû,¬C?…K‚%Ö@¢2W”¢÷Ü@£QÇÕ®ü]?t’¥­ôJz?Ÿ±s -gxO?Æ·Dj•MB@|èwøKY@Ÿmt`ÿ‡Q@ @¦`Ôýó¶F@¦`Ö. þ‡@¦`Ôýó¶F@¦`ÐåA `@¦`Ôýó¶F@¦`Óë(O‘@¦`Ôýó¶F@¦`ÊZþ*@¦`Ôýó¶F@¦`ÅŒòw/@¦`Ôýó¶F@¦`Èo€AB@•z Oß;d@•zV“@•z Oß;d@•zVAeº@•z Oß;d@•zä.¦@@•z Oß;d@•z±5@•z Oß;d@•yùº<|É@•z Oß;d@•yùË»N1@5ãg ù l@5â-V@2Ìí‘hr°@2Ë’fŒ|@26§ï²-@25‰ÍI -@2B‚@·€5@2>»‰â37@2B‚@·€5@2?q›ª@2B‚@·€5@2A -PÆ?~Ov_Ø­«?¶AÜ?’IŸþ õ'?‹¬Ä‚‹Œ?“þfR¼ æbÕ?Páêé‹TP?Ø‚êùÀQJ?ª|KÉ"λ@Ÿfým(tÎ@@¡#@@¡#@ƒn˜@¡#@@¡#AÞ\@¡#@@¡#Fbت@¡#@@¡#DX šk@¡#@@¡#@ÒÖÈ@¡#@@¡#Aû;s@§.—Oß@§.Ù‡+@§.—Oß@§3îEN@§.—Oß@§/4œl®@§.—Oß@§9•ŒÄ!@§.—Oß@§6ù#+k@§.—Oß@§=ÜŒ"@4Ô xFÜ@4Ô«šØ@2=‘hr° @2:ºc>ª@1A‰7KÇ@1o‰º(@0úÔ,<ží@0÷Šc¡¦a@0úÔ,<ží@0÷³!( @0úÔ,<ží@0÷Ìø9@¤?|¬h2:“?‘h.vbˆ‚?’†f£ò ?‹¯Q•xÏ?’@µÔ>„?Áª^|#D?|Ñb×¶@?’ÛðQ¬Yó?‘à?“Ú™?1æk4x1?’µ#„Á?Znv`#?„Ç(å?âqÞÒñä?‚xýeS¡¼?ƒ²¶Ê½?‹Šv"s®?‡Oô¦BX@@$@ @ @4@,?ð?ð?ð?ð?ð?ð?;3 n@?g•.¼ì?=ÿ˜Sú?B‡9Â>@¡#Aª`a4@§58Æò?\Ðêr`¥q?bÖ!~R??ÆSM¦!?ÒkC-b@ŸfËAˆçÙ@@ ‰7KÇÁ.„€@ ‰7KÇ@ ¦¼üQ$@ ‰7KÇ@ ¢9Ô@ ‰7KÇ@ ¸aw@ ‰7KÇ@ »çÒÝ@ ‰7KÇ@ ÃÉo@4‡+ Á.„€@4‡+ @8˜l6A@4‡+ @7tO’‘@4‡+ @8ù@ê+:@4‡+ @9üLÐà @4‡+ @7Ížæ†@4(†YJôñÁ.„>¤µÜÆ@0xr° Äœ@/R§ÝO&+@/º¬1'@.QÖ+­u@/™b¶®~@-Øk}ª@/™b¶®~@-ú°ÇIp@/™b¶®~@-õÔ%Êî@8J¨?•]ý¼?¬±?²ò?£¦dX4/?¨ ÛAîwÇ?¥/Xye²@8J¨?žªòìÔ¼Œ?©^C~+°?¾F6ÑHy?šÒ‰[²\¦?¬6rç'×@8p÷?‘ñ`×T?‹C¢ª°?…ü±_-?‡÷™x™…?‡ÎvûþH=@"@"@(@>@<?ð?ð?ð?ð?ðøøøøøøøøøøøø@«Èñ&éxÕ@«Èó¶E¡Ì@«Èñ&éxÕ@«Èéº^5@@«Èñ&éxÕ@«Èç+ I@«Èñ&éxÕ@«Èé*0U2@«Èñ&éxÕ@«ÈéùrG@«Èñ&éxÕ@«Èâu%F @¬…“u@¬…“t¼j@¬…“u@¬…Â\*@¬…“u@¬…Â\)@¬…“u@¬…±Ä2Ë@¬…“u@¬…¤?åÈ@¬…“u@¬…"Ðå`B@8h†YJôñ@8j=p£× -@3µãS÷ÎÙ@3­„M:’@2ù7KƧð@2òò䎊@2hè§æ›@2bëC,¦@2hè§æ›@2\˜_ö•@2hè§æ›@2]æšÔ,=?…ÅBðrç?“âÜ[ê• ?•þ„@óg?“1ÕËt?”Å¥ÒB–W?¢zvíÈ­c?3ßa=„?œ7»fU‡?™ù6×$l?™ðyµCÒW?’LÁŒÀ´a?šøñÒ_¾I?¸¼öݾª?‘ÛÖæÒk~?„‘Za¹Q?†ÞåØÜÓ?Ä;Ãkr>?¡¶|+üÎ~@@@@@$@,?ð?ð?ð?ð?ð?ð¿jðúV?\`›5˜?@: -˜?@?_6{’ª@«Èì!Nt@¬…Æ·?` AÑÆ?~RÚ.Ò3?¶°?Ò?ñåÜG|Z@ŸhoŸ`w@@®¦ffff@®¦ffff@®¦ffff@®¦ffff@®¦ffff@®©…ðoi@®¦ffff@®¬cñA @®¦ffff@®§®zá@®¦ffff@®¦?@®:›¥ãSø@®:œ(õÂ@®:›¥ãSø@®:}¿H€@®:›¥ãSø@®:žƒä%°@®:›¥ãSø@®:Ÿ;dZ@®:›¥ãSø@®:šŸ¾vÉ@®:›¥ãSø@®:Ùb¸@5h†YJôñ@5i#¢œwš@3Iº^5?@35¨Xy>@2»Æ§ï²@2¾}Vlô@2p–»˜Çã@2oAò×s@2p–»˜Çã@2p°ò{²ÿ@2p–»˜Çã@2p°ò{²ÿ?}Ñ¿ž,?’@k=[?’÷˜–Èä?Œj6_?’ §¹i»µ?’4¶ó?}Ñ¿ž,?”zòžÕÿ?‘å†36åG?6) }’ë?‘ýuãá$6?‘¿¤üî¾Ö?‚oÁÆÜ§ö?ŽátÖÁ»‡?ˆìûIè¶@1°–»˜Çã@1›çÄN@1°–»˜Çã@1Š<×Ë·@1°–»˜Çã@1‹äw‘k?„`™ˆ/.~?à³Иô?—ü_”¿p‰?6狳nú?¡ÞA©2f?­™Zf¦ü?¨Sp*?•].>x3?˜7$]°?‘ 2ý‹?¹?”’o²H¢Œ?’DÙkÀ'?‘®§µ†2Ø?Ü2ÄT˜?‘`zö©ˆ&?†ù²˜?Š^.×’Í4?‰#”á4U@@&@"@@7@:?ð?ð?ð?ð?ð?ð?“5 Q?EõS^p?a¡+W†2²?V4h1ÁEè@©'>«bÞ@˜ ^<Üu®?|éåæZ?uk&gƒn?ò}p×9 B?ôÕàÇ@Ÿd-¤”á—@@®‚ Iº^@®­‘hr°@®‚ Iº^@® [À@®‚ Iº^@®Œ"h Õ@®‚ Iº^@®vlô!@®‚ Iº^@®yŒ~($@®‚ Iº^@®{˜Çâ‚@¦¼|j~ùÛ@¦¼aÊÀƒ@¦¼|j~ùÛ@¦¼s àÞÓ@¦¼|j~ùÛ@¦¼uéá°Š@¦¼|j~ùÛ@¦¼p£× -=@¦¼|j~ùÛ@¦¼he”¯O@¦¼|j~ùÛ@¦¼kC,¥@8ëµsê´@8ÕϪ͞„@48r° Äœ@4/·éùr@3'KƧïž@3Ëûµt@2½cˆe”°@2¯iDg8@2½cˆe”°@2¶s×Ûô@2½cˆe”°@2´záG®?¶™b’jk±?•tæïá,•?¢ž<³Óž?’\GyÆ©?˜h†5+P?—c‚L±bµ?°{QBãï?”­ŽzF”?¢n®Ú| X?’àêE©³?£í̽,¶y?¡V·ÏŠÞ²?¾ü'£Ê1…?ª‚eûƒ+?ôê÷º»â?‘ÄÚ êÛu?”NtyÞ"§?“¶Ì¶Öj”@@@@@,@*?ð?ð?ð?ð?ð?ð¿RäËùN¿6PB!ø?s˜MB&x?dïàø[r@®yÿS@¦¼m¥aÙH?…|2 j|?xÙRƒb?öÝgilþ¨?ÔVüsè z@Ÿo¡•ôº@@¤šå`A‰@¤š-‘hr°@¤šå`A‰@¤šT`ªe@¤šå`A‰@¤š¤¨ÁU@¤šå`A‰@¤š -0U2a@¤šå`A‰@¤š "h Õ@¤šå`A‰@¤š -JŒM@ž9Ñë…¸@ž9½ó¶E¢@ž9Ñë…¸@ž9Æö”Fu@ž9Ñë…¸@ž9Ï–»™@ž9Ñë…¸@ž9É 'RS@ž9Ñë…¸@ž9ÏÅo@ž9Ñë…¸@ž9Ïv_Ø®@8Ù*0U2b@8ÐN¤¨ÁU@1î5?|í‘@1îV“t@1M²-V@1IXbMÓ@0+xFÜ^@0(DЩ*@0+xFÜ^@0'y¦µ @0+xFÜ^@0' ù kº?Áñ@5Å@Â?/³)sšÌ?“njĕ‹x?îZ¼!ÇŸ?‘¿ -Óñ›?’_‘Oo¨Ž?¥K¶{Oÿ?’eCŒO?’/ý‡…,v?‘!¥zt9Û?’8,²ñ±T?‘C å;Ã?²“P(?nÂ?ލf†)"?‡Ü̈- -?„•ˆG’Z¾?‡YÍ_?‹aÊ•TI@@@@@(@,?ð?ð?ð?ð?ð?ð¿>zGYH?Zúu9¾€?]§ åÒÓ.An@¬óŠq Yf@˜ê õ»c?Rš Û¦ú?7³lí­?²Ð,¥–ÉÄ?}pxïXVn@Ÿfõ06À@@¯1¿|í‘hÁ.„€@¯1¿|í‘h@¯1ºÇË)@¯1¿|í‘h@¯1½¥œá@¯1¿|í‘h@¯1ÓÐ|„¶@¯1¿|í‘h@¯1Ã,¥zx@¯1¿|í‘h@¯1Çâ‚@¸@§¾n—OßÁ.„€@§¾n—Oß@§¾U$Ü@§¾n—Oß@§¾xºÇË@§¾n—Oß@§¾Z…‡“Þ@§¾n—Oß@§¾s3333@§¾n—Oß@§¾r{²þÅ@7 ]cˆe”Á.„>¤µÜÆ@2Ìí‘hr°@2àhÛ‹¬q@2'KƧïž@2*)Çy¦µ@1uµsê³h@1¸ºÇË@1uµsê³h@1†éxÔýô@1uµsê³h@1‚T`ªdÃ@8J¨?¡„OaMyñ?”P"ÒhI?›8˜îi? k‚ˆŸ;æ?šÑ«Äµ~õ@8J¨?£kŸ!µ?–AuøG1? Ñ¡b£?¾?¢ÒUöˆ?” ™¾,@8p÷?¢f—í¡I%?—ö+jçÕf?—pü”_ù?Ä;Ãkr>?Œ8¸wx¯@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøø@ +.—Oß@ +,ÌÌÌÍ@ +.—Oß@ +(Å6«@ +.—Oß@ +&Þ*7@ +.—Oß@ +8'ÛV|@ +.—Oß@ +3#‚6@ +.—Oß@ +7@.ä1@¬_Ÿ¾vÉ@¬_:S¸ä@¬_Ÿ¾vÉ@¬_ƒ=ü@¬_Ÿ¾vÉ@¬_Æ4@¬_Ÿ¾vÉ@¬_ šHª<@¬_Ÿ¾vÉ@¬_~È3‡@¬_Ÿ¾vÉ@¬_˜…¦À@65S&Á¾@65/9àÊ@3º^5?}@3E) -¢@2]V”@2SÑ£[ôr@1QÞi­BÄ@1;ž†³Ð5@1QÞi­BÄ@16HO™ãö@1QÞi­BÄ@16 ø·Óª?€”ëû·«?’”:¯[º?’‡9#êš?¬ –àrU?›÷øùC¼?›&)˜?~Ov_Ø­«?“>Û¶Å}¼?‘Ì!(Æ8Œ?’A¬|½:?’¤Ê]gõ[?›;Rtbš?…ÎPI»Á¾?’Þ&ÜÝ®7?‰67Dx?‡ -˜ƒèd?7ÎǺ?>ú-œ!@@*@"@ @:@8?ð?ð?ð?ð?ð?ð?e=|¿KF©Mà?Nf„ëOØ?aC=Hž@ +2pwî@¬_ôÜe?kÉ kVå?½µ Â3c?ØêOBJSª@öQ¶{5µ@ŸdÚ§Ú̼@@¡a9XbN@¡a<(õÂŽ@¡a9XbNÁ.„€@¡a9XbNÁ.„€@¡a9XbNÁ.„€@¡a9XbN@¡a:kP°ò@¡a9XbN@¡a;~ÿ—@¤s3333@¤vE¡ÊÂ@¤s3333Á.„€@¤s3333Á.„€@¤s3333Á.„€@¤s3333@¤yb¶¯@¤s3333@¤w1Å@7™*0U2b@7“,¥zxl@3žÙ‡+Á.„M‰ûçm@2Õ`A‰7LÁ.„QnÙ‡@2._oÒ Á.„NÜC,¥@2._oÒ @2)Î_oÒ@2._oÒ @2)Ô•*š?¢F^ì¼Sð@8#˜@8¾:@8 >+?“Ýâqß?’÷åâ6¹?…ÅBðrç@8Î÷@8i§@8Å?—?—³’sB?• °jà?ŽŽp±µær@8 * @8p÷@8¶?‰Ü)@Jq«?‰Ü)@Jq«@@,@*?ð?ð?ðøøøøøøøøøøøø@£Y¾vÈ´Á.„€@£Y¾vÈ´@£Y†9{i@£Y¾vÈ´@£Yô{Ì@£Y¾vÈ´@£Y!ëÿáO@£Y¾vÈ´@£Y篸@£Y¾vÈ´@£YDc“@—¼záG®Á.„€@—¼záG®@—¼xäQú@—¼záG®@—¼z·ö!@—¼záG®@—¼„-Á#@—¼záG®@—¼°‰ (@—¼záG®@—¼Š"1¨G@4eöý!ÿ.Á.„>¤µÜÆ@0’ Iº^5@0–ož©:@.è1&éxÕ@.è“)"«ô@-Âu%F -§@-Åc¿^5@-Âu%F -§@-Ä6:”¡Ð@-Âu%F -§@-Ʋü1ƒ¶@8J¨?EüUà¬?‘pÇ-n†?ŒŒ5¦ª?‘[æÁõ•á?íÈy÷Ù@8J¨?’´7rRÎ?‘SÎ|]•­?†Ã„5Ãù?‘]^ÆA»?’œ+ïð¥±@8p÷?Öözß”"?ƒyŽu?ƒá„¢ïo?‡~3]³é¾?‡«ÇÙý1I@$@(@$@;@8?ð?ð?ð?ð?ðøøøøøøøøøøøø@ ì{dZ¬@ ì|j~ùÛ@ ì{dZ¬@ ì„u%û•@ ì{dZ¬@ ì‚¨•Î/@ ì{dZ¬@ ìƒõprœ@ ì{dZ¬@ ì‘u®°=@ ì{dZ¬@ ì•Ü -Wr@ Á^¸Që…@ Á_¾vÈ´@ Á^¸Që…@ ÁiÈÍ@ Á^¸Që…@ Á,Tð`@ Á^¸Që…@ Á@?«Q[@ Á^¸Që…@ Á6b"YÎ@ Á^¸Që…@ Á<Ñ0 º@4åöý!ÿ.@4Ú­ž›>@0¡hr° Ä@0Žñ}”Ì@0;Ƨï²@0%¾&ûY@/£¼ÓZ…ˆ@/oúœXKo@/£¼ÓZ…ˆ@/y%!ÊÙ@/£¼ÓZ…ˆ@/tfy§9Š?}@T˜ÁÎ¥?ÄŠña>?•9 ·ÂpØ?—Xÿ5ñ?g•íVˆ?œÐåÕ¨zj?‚n—Oß?ø_Æ6+ï@Ÿdð0È\|@@®}@®}A‰7M@®}@®}aä÷e@®}@®}-w1@®}@®}ÞÒˆÎ@®}@®|þÒˆÎo@®}@®|þÿ—%@­â_;dZ@­â_;dZ@­â_;dZ@­â_¾vÈ´@­â_;dZ@­â_åÉ@­â_;dZ@­â_åÉ@­â_;dZ@­â^ƒä%¯@­â_;dZ@­â^Ov_Ù@3Žì¿±[X@3ŽËûµt@0?|í‘h@0›=ÈJ@.¯ß;dZ@.°:û~ÿ@/L²•éá±@/L¥zxl"@/L²•éá±@/Lq ²•ê@/L²•éá±@/LL˜_?|öOÿÝ?Čۨ1A?‘7[ä­?Œݶ\ñr?‘VšÐ^Ø?‘)]•\¬?|¬Çëý ?’ ,øÕC©?ÙšlqùÚ?’GÎ>GÅ?‘77…Âç?‘"›ö?‚‘´…=Ca?Œèsq‡#?‚§W®ê ?ƒ¦$H?†Ü‘ °Ô?‡<û¡71@@@@@$@$?ð?ð?ð?ð?ð?ð¿1Üñ°¿!GÀ?*à=Ž¥3?!ßÜÒ]@®|ÿÒ¤Ô«@­â_€–D?J”^]ña?B |[±QÇ?¢ß ìÈ=r?3°²Æ/@Ÿf·{Æ^@@®â@ƒn˜@®â@ƒn—@®â@ƒn˜@®âC9Àëî@®â@ƒn˜@®âL"h Õ@®â@ƒn˜@®â=Vlô@®â@ƒn˜@®â>($ x@®â@ƒn˜@®âÖGB™?‘žˆ2}?‰¢Ò+ÜݤµÜÆ@4ÎÙ‡+@4Ôýó¶F@397KƧð@39e+ÓÃa@3+xFÜ^@3*6âëD@3+xFÜ^@3*qÞi­C@3+xFÜ^@3* ÞÒ@8J¨?”„ö}>žå?‘–”«ëó?$Ìj½BÙ?“Á¿À3<ô?—Q,Äš¤@8J¨?’Dê™.x?‘F·ˆ -fuæ?’Qÿc -?RLnj?‘®7Ö=^9?–’+¸¢d?…cü›Š×Õ?üÓqÔN‰?ƒ<Õp?ƒžÂâk,?‡æê7²zE?’3¨£„È@@@@@*@"?ð?ð?ð?ð?ð?ð?/¼À›0?;:Wðè?8\%ÒÖœ5?+“²ø_®@£‡*Æ×­{@¥úé{ëì6?X5©9uöü?L$<«úû»?¾Ð¶ªÙ¹æ?£‚Ùýà²@Ÿg’üé:@$@¡ÑyÛ"Ðå@¡Ñy™™™™@¡ÑyÛ"Ðå@¡Ñx­«ŸV@¡ÑyÛ"Ðå@¡Ñ×Ûôˆ@¡ÑyÛ"Ðå@¡Ñ}ÌcñA@¡ÑyÛ"Ðå@¡Ñwö+jè@¡ÑyÛ"Ðå@¡ÑxÔýóµ@ªS:^5?}@ªS?ˆïhƒEõ§?ƒ^ ›¨¬a?ŒXk-¯‚7?¢—„¯l@@@@@$@&?ð?ð?ð?ð?ð?ð¿þ€¿5/zà?IzÍâàDÃ?3•ÃG¥o@¡Ñz;ÏXà@ªS;­8ô?hu51D%?T(~*à?Ö&9¤¸:?­ àkÊCÊ@Ÿi$šnQô@%@£’bMÒò@£’£× -=@£’bMÒò@£’GE8ï@£’bMÒò@£’ÊW§‡@£’bMÒò@£’Ð|„¶@£’bMÒò@£’|„µÝ@£’bMÒò@£’–»™@¥_`A‰7L@¥_`ƒn™@¥_`A‰7L@¥_dg8~@¥_`A‰7L@¥_g8}¿@¥_`A‰7L@¥_pÿ—$t@¥_`A‰7L@¥_jqÞi­@¥_`A‰7L@¥_iîËû@2[¹Œ~($@2[²þÅm\@.)7KƧï@.%oh@-4ýó¶E¢@-0‰ 'RT@,³üPH@,¬q ²•ê@,³üPH@,«C•%@,³üPH@,¬~($ x?É^³Dw'?½Ë9ØŠ§?‘e -!ßC?‹ÑqÔ@vÿ?‘ …É¿¼?‘…Rgå.?ÐbV‡,?”­ŽzF”?“Z—H|:?9ÍÇ~FÀ?—­l²â›}?—œ­ÛpùÄ?€|Ã;}_?Œµ3‰;šÏ?‚Ö˜>µDá?ƒ†+ Å?ˆW|¶DC?ˆ‹”âó@@@@@,@,?ð?ð?ð?ð?ð?ð¿^ˆrxö¿iü_×?9“ËeΡ??R´žnŸH@£’¿‘Ö@¥_mVt©#?H™*I(†í?aL«ù ¨J?Œ:}逭À?±~`wlLF@Ÿr5/VM„@&@¥4#× -=q@¥4vÈ´:@¥4#× -=q@¥4$“t½@¥4#× -=q@¥4#2¥—@¥4#× -=q@¥4$7îÞ¡@¥4#× -=q@¥4"ÏM¢@¥4#× -=q@¥4!¯D&Ÿ@˜° Ä›¦@˜¯Ý|@@˜° Ä›¦@˜¬·q«ù@˜° Ä›¦@˜µb ¿)@˜° Ä›¦@˜¨mJy”@˜° Ä›¦@˜­Ë¶bŽ@˜° Ä›¦@˜¯hIXg@8cg ù l@8WÍö:<†@2)‡+ @2(ŠËmê@1•`A‰7L@1”ÀY¡‹¤@0Ì¿±[W?@0ÍÀ€ç ^@0Ì¿±[W?@0ÍZoÂT@0Ì¿±[W?@0ÍKð†R ?©–Rª—´? ߥØÛÖ?‘Eë—ØqF?‹Ý×Ó1Û?‘> cí?‘Ëç œ?œzó|3?’1bÅŸIr?‘)jS‰õc?H°<˜kÅ?‘´ _®?„dôPë?¬|’œw6 ?×a»D?ƒƒ]€ó¯z?ƒ -»ø”>?†ÑÜ uv?‡ðX8KØ@@(@&@ @7@6?ð?ð?ð?ð?ð?ð¿+@8Iç@8Ù?‘â%ì˜ ä@8Î÷@8i§@8Å@8S@8û—?¸”ñ¬n´@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø(@ªïÒn—P@ªð䛥ãT@ªïÒn—P@ªïÙõY³Ð@ªïÒn—P@ªïé7KƧ@ªïÒn—P@ªïÐbMÒò@ªïÒn—P@ªïÒ-V@ªïÒn—P@ªïË Iº@¯6˜bMÓ@¯6EãS÷Î@¯6˜bMÓ@¯6£S÷ÎÙ@¯6˜bMÓ@¯6¥¡ÊÀƒ@¯6˜bMÓ@¯6— -=p¤@¯6˜bMÓ@¯6¡ÊÀƒ@¯6˜bMÓ@¯6— -=p£@8«µsê´@7æÂ&€J@4f‡+ J@4dM:’£@3ìj~ùÛ#@3ücñA \@2ãÉîËû@2ÞzáG®@2ãÉîËû@2ݲ-V@2ãÉîËû@2æOv_Ù?ðVAæKÍ?™05¦ ê[?[_œ(Ä?=]. ?’[9ƒÍ,?‘m×e\»?Ö¤´ª3¼?™¡û¶ ?‘½ÀèÑmK?ni"Í š?‘ ^Íü?ÿ?‘ÔÄ÷Õ?ø¸mh.?‘žˆ2}?›û…†_?ƒR¨º“JÞ?ŸHF!œ6²?¢áÄïÃõ@@@@@@?ð?ð?ð?ð?ð?ð¿a{qe€?N™ß±†?cáOo>‡À?pÞ¢D}ÍÉ@ªïÏ,Ò†@¯6š’]»b?rß»uË«w??è¦zXþ?Ý·ÀR\?ôŽGϽ@Ÿs{\_ðÑ@)@©ÒÏ\(õÃ@©ÒÏ\(õÃ@©ÒÏ\(õÃ@©ÒÐ:û~‘@©ÒÏ\(õÃ@©ÒÐHð@©ÒÏ\(õÃ@©ÒÐ:û~‘@©ÒÏ\(õÃ@©ÒÎV’@©ÒÏ\(õÃ@©ÒÎcŠ @©üA$Ý/@©üAG®{@©üA$Ý/@©üA£n.²@©üA$Ý/@©üA£n.²@©üA$Ý/@©üA°‰ '@©üA$Ý/@©üAohÜ@©üA$Ý/@©üA°‰ '@-e‡“Ý—ö@-e‡“Ý—ö@+$“t¼j@+#þ\‘ÑN@*òn—Oß@*òò䎊@)žžš@)žvÈ´9W@)žžš@)žƒä%®è@)žžš@)ži­BÃÊ?É^žQ5P‚?ÉGãA­÷?‘ÌË>¯f?‹²MÿAÿ8?è<`.Ÿ?¸û:?ÐbV‡,?’r/BÖ?¹º–Èj?3.Ylî?ÔÒ@úˆ‘?R g!Ú¢?€b¡´ñ@?Œ¯þuõí?‚s@ˆaÛ?‚éXëLL÷?†‰Oú|q?†ŠúЀ>(@@@@@(@,?ð?ð?ð?ð?ð?ð¿K·¥~¾à'ˆ@?2Ö4Î:ó?õ…OÚ@©ÒÏ~€@©üA›Ì¼T?BÓ Å %?%Æ\O:Ê?€3[ uä?DˤžÎvÒ@ŸsK$&é@*@£eE¸Qì@£eE¸Qí@£eE¸Qì@£eE¡ÊÀƒ@£eE¸Qì@£eD2ÊW¨@£eE¸Qì@£eCS÷ÎÙ@£eE¸Qì@£eCþ\‘Ñ@£eE¸Qì@£eDg8~@ªR!ÊÀƒ@ªR" Iº^@ªR!ÊÀƒ@ªR!°‰ '@ªR!ÊÀƒ@ªRò䎊@ªR!ÊÀƒ@ªRvÈ´9@ªR!ÊÀƒ@ªR"u%F @ªR!ÊÀƒ@ªR"MÒñª@1òÃÉîËû@1òÃÉîËû@/WKƧï@/UY³Ð|„@.ÊÀƒo@.ö”Ft@.žš@.~ÿ—%@.žš@.žš@.žš@.«6z‘?É^òÀXæN?õ¹Ëh?‘.Ò®ó_ ?‹¯eU5?üEÙáõ{?âé¨ë7F?ÐbV‡,?’ ŠŠ¤Hì?«'Q™µ?RLnj?ë,YÁ?wN —z_?€b¡´ñ@?ŒÛÏ·+?‚Ö˜>µDá?ƒË´ÔC¶¼?†£îž«î?†žóB» “@@@@@,@*?ð?ð?ð?ð?ð?ð?=j6Ó?[ÍŽ•€?†ZD¿d?Eh±¡8¡@£eCÚ(@ªR اãy?(‡]cŸ˜?T?hA?MR¥×§.Š?¡·±[Ò—@Ÿs|Ю+@+@¬‘Õ%@¬‘Ã× -=r@¬‘Õ%@¬‘Ãúvâ@¬‘Õ%@¬‘Äû°!@¬‘Õ%@¬‘Ãï!!@¬‘Õ%@¬‘Öº@¬‘Õ%@¬‘ÃÏ»â@˜gyÛ"Ðå@˜gyÛ"Ðå@˜gyÛ"Ðå@˜gyÛ«á@˜gyÛ"Ðå@˜gyÛ"Ðæ@˜gyÛ"Ðå@˜gzØt#@˜gyÛ"Ðå@˜gzJÙu@˜gyÛ"Ðå@˜gyo¨.‡@0úqÞi­C@0úqÞi­C@.MV“@.M)bŸù<@-ΗOß;@-ÎXQjw@-zÇË)_@-z¾DÑ{ú@-zÇË)_@-zŽ8@-zÇË)_@-z¥ ¸Ïý?É^¨¯Âj?Ã{TV½‹?‘"þ(#*m?‹ªœñ•ª?ð%r}•Ã?ºT|/ÿ?ÐbMÝn½?’Îùx¥?…àø??/Úå[˜2?Ö“jø?S’ð!¥ó?€bMÔŠ»?Œ±9¯¬ý³?‚u؆"ÂÀ?‚ë•ä™ Š?†‘"‘Fùá?†‹s`@@$@,@&@;@9?ð?ð?ð?ð?ð?ð¿;ZÝàè¿ T&g?³ «¶?!o… -øa@¬‘ÃhÞî[@˜gzÕþf?*òg}ú‡*?0 -¼ÆÝ?QÖ¨Ïð°¢?Wå‚0‡4@Ÿs-ÊHÎ@,@¦aRñ©ûç@¦aRñ©ûç@¦aRñ©ûç@¦aSŽóMj@¦aRñ©ûç@¦aSÐ|„¶@¦aRñ©ûç@¦aSÃa@@¦aRñ©ûç@¦aQ·Xâ@¦aRñ©ûç@¦aQÅ@¢ôÙ™™™š@¢ôÙ™™™š@¢ôÙ™™™š@¢ôØÔýó¶@¢ôÙ™™™š@¢ôØüPH@¢ôÙ™™™š@¢ôÙ k¹Œ@¢ôÙ™™™š@¢ôØÇâ‚A@¢ôÙ™™™š@¢ôÙe+ÓÃ@1}:’£@1}:’£@/¼j~ùÛ@/%F -¦L@.ΗOß<@.αÄ2ÊX@.£¼ÓZ…ˆ@.¤M:’£@.£¼ÓZ…ˆ@.£ÉîËû@.£¼ÓZ…ˆ@.£¯·éú?É^žQ5P‚?Ï[äe¤µÜÆ@4GÎÙ‡+@4$Ù`´@4Ðå`A‰@3À”ºó@3#ÉîËû@2ñFX‡ë=@3#ÉîËû@3Çâ‚@¸@3#ÉîËû@3 “ àÞÓ@8J¨?Ï[×.[?·‡­‹"¬!?šaÀU¦?½ª[Ç$Î$?—‡XE%:@8J¨?™ ¼—;&ì?³Þ‹C·‡º?ÁA4ð«¾?º³=i6º?šÛ’ä|@8p÷?™¤·¾Ag?ª޻ɩ}?“Σªw'Y?™t#‰$ ?˜ÒF€§ç@@$@@@?ð?ð?ð?ð?ðøøøøøøøøøøøø.@¦ÝÌÌÌÌÍ@¦ÝË…¸R@¦ÝÌÌÌÌÍÁ.„€@¦ÝÌÌÌÌÍÁ.„€@¦ÝÌÌÌÌÍÁ.„€@¦ÝÌÌÌÌÍÁ.„€@¦ÝÌÌÌÌÍÁ.„€@ªQhr°!@ªMOß;d@ªQhr°!Á.„€@ªQhr°!Á.„€@ªQhr°!Á.„€@ªQhr°!Á.„€@ªQhr°!Á.„€@7(†YJôñ@7&_Ø­« @4Œí‘hr°Á.„M‰ûçm@4å`A‰7Á.„QnÙ‡@3Œ¿±[W?Á.„NÜC,¥@3Œ¿±[W?Á.„NÜC,¥@3Œ¿±[W?Á.„NÜC,¥?1·†Æjñ@8#˜@8¾:@8 >+@8Iç@8Ù?Œs¤DÅÐ@8Î÷@8i§@8Å@8S@8û—?¶,1õ'®@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø/@¨vE¡ÊÀƒ@¨vE¡ÊÀƒ@¨vE¡ÊÀƒ@¨vJçÕfÏ@¨vE¡ÊÀƒ@¨vES&Â@¨vE¡ÊÀƒ@¨vKC•@¨vE¡ÊÀƒ@¨vIîËû@¨vE¡ÊÀƒ@¨vMí(Œç@¬Š=p£×@¬Š=p£×@¬Š=p£×@¬ˆðŽ@¬Š=p£×@¬‰ã½@¬Š=p£×@¬‰^ž @¬Š=p£×@¬„êJŒ@¬Š=p£×@¬„÷eý‹@1úqÞi­C@1ú~ùÛ"Ò@-ÍV“@-ÅÉã¼@+ãn—P@+Þ\‘ÑN<@,Aò×t@, Ô•+@,Aò×t@,ÈK]Ìe@,Aò×t@, ù kº?É^òÀXæN?¦Ì '?‘G¿yÛ?ï?5~pY5?‘úy«ôÊ%?”ªEñeX?ÐbMçê_x?’CòO…?£½:…?@§[*^?‘êë·áþA?“ 3—·²W?€e@ˆ’„'?Å9–o?‚‹¡8*ú?„À"aËô??ˆ”Tj«›ª?ˆ¾þúWZ‹@@@@@$@*?ð?ð?ð?ð?ð?ð?JÁkèø¿`Éw9Þ?NÛÙÏE³þ?F.ÀB¶„@¨vKˆ.yô@¬†Í™jT?\ÓÀr”¸C?Tʤ?°¸<-î? ŸE+\€÷@Ÿrƒ'Qš@0@­ö]/Ÿ¾@­önzáH@­ö]/Ÿ¾@­öjqÞi­@­ö]/Ÿ¾@­ö^ߤ?æ@­ö]/Ÿ¾@­öW1Å@­ö]/Ÿ¾Á.„€@­ö]/Ÿ¾@­õÿò䎊@«£.záH@«£;dZ@«£.záH@«£‡æšÔ@«£.záH@«£¾vÈ´@«£.záH@«£†€IR@«£.záHÁ.„€@«£.záH@«£Éá°‰¡@9h†YJôñ@9VéxÔýô@5B° Ä›¦@5Á½¥@4d¼j~ùÛ@42ò䎊@3ÜÚQÎ@3£n.±Ä3@3ÜÚQÎÁ.„NÜC,¥@3ÜÚQÎ@3ŽBZîc ?ˆÿÀ)T¿Æ?²Íáœ^y?º‰æÒ’n?±²‘Ñ -@8Iç?ÉÏýS*Õ ?ÆJ>xÛé?ÃÓÝ_’çÇ?€škš?µAÌôjš@8S?Ó:; ݹ?À -šeKsÁ?¨”dÛþö?³"i]äPö?±Š¼’ ¸a@8 Ø?¯üÚ‰øßæ@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø1@ª¢¯Ÿ¾w@ª¢¯²-@ª¢¯Ÿ¾w@ª£kʇ0@ª¢¯Ÿ¾w@ª£^ìð.š@ª¢¯Ÿ¾w@ª£li™÷¾@ª¢¯Ÿ¾w@ª¢ÇŸ÷'@ª¢¯Ÿ¾w@ª¢ÎøÙ@“ ž¸Që…@“ ¡ÊÀƒ@“ ž¸Që…@“ª_¬Éç@“ ž¸Që…@“J„¿t@“ ž¸Që…@“% ë+×@“ ž¸Që…@“ ¹CV¯@“ ž¸Që…@“ UÍS)@3uS&Á¾@3tg|«ó@1‚° Ä›¦@0¬Ã£íÎ@1$¼j~ùÛ@0 ZÀZ@0³&Á½¥@/ìBîÕö@0³&Á½¥@0¨")[>@0³&Á½¥@0©[R®‰Á?|¬h2:“?™z½ÉÓ~?‘Äyãn×'?˜›ÅGw?”¬À¿ß#?°täÇm?}@T˜ÁÎ¥?¾¹óËŸ”g? Gš€tÌ?Çuª:z0?—™d=ûk?¸l€lg|?‚ň¸™?¦R¨Ñ¢y?ŠÒžM?%½?—„\_‚¸?’«Èe< Ž?¥á×ée@@ @@ @4@5?ð?ð?ð?ð?ð?ð?“dìFµ@?SmYÖ¬À?•K -Ò5Wf?޵Ñ\>b#@ª¢Ë ÛvÚ@“ ¥Ý‡‡j?¯„\±H=K?¦›-ûâ:@c?bÓ¤â @IF`y<í@Ÿ_ÚØèÕž@2@¯¹XbN@¯¹‡+@¯¹XbN@¯¼°wáe@¯¹XbN@¯¹QÓu@¯¹XbN@¯·˜Ó§@¯¹XbN@¯·¶„¡T@¯¹XbN@¯·ŸðêŽ@•k\(õÃ@•kZܼç@•k\(õÃ@•kî¦øå@•k\(õÃ@•kýh´H@•k\(õÃ@•kŽM—ç€@•k\(õÃ@•k’Àm¼@•k\(õÃ@•k—†…º@47â‚@·€@48L–ïP@0®5?|í‘@0¬2ÊW§†@0 ²-V@0 ¢ˆGb¢@0^«6z‘@0XЯfó@0^«6z‘@0Yj *6@0^«6z‘@0XÞÒˆÎp?|Ñb×¶@?Õ¶úÂ]?‘_Vfvì?ŽÝõÞZ3g?’‰säCó?’2} ?|¬Æ Væ?’ Í?Å(½Ùr?‘óíé;?’¨®ŒÀ—”?’ÚZÛÖ½?‚wÆ«±Ã ?ŒÃõßî;?‚ÄA„vÀ?ƒºµ¿+?†È[’ùÑï?†ÀÞ°ª@@$@*@*@:@8?ð?ð?ð?ð?ð?ð¿7°‡à?$–Ò?q³Fɸk?#Ò ^”+/@¯¸NhÝÍ@•këú ?6+xö©X?CÎ.Ã@?x3ÑÆ%~?‘îkˆaòø@Ÿf.Y—×@3@¡)"MÒñªÁ.„€@¡)"MÒñªÁ.„€@¡)"MÒñªÁ.„€@¡)"MÒñªÁ.„€@¡)"MÒñªÁ.„€@¡)"MÒñªÁ.„€@X33333Á.„€@X33333Á.„€@X33333Á.„€@X33333Á.„€@X33333Á.„€@X33333Á.„€@9|ÚQÁ.„>¤µÜÆ@5B° Ä›¦Á.„M‰ûçm@4Æ“t¼Á.„QnÙ‡@4ò䎊rÁ.„NÜC,¥@4ò䎊rÁ.„NÜC,¥@4ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø4@¨« Iº@¨«Æ§ïž@¨« Iº@¨±‚©“ @¨« Iº@¨«’:)Ç@¨« Iº@¨¬1&é@¨« Iº@¨¬/ƒ{K@¨« Iº@¨§“Ý—õ@¤ Ù‡+@¤ Ÿ¾w@¤ Ù‡+@¤ º^5@@¤ Ù‡+@¤ Ëûµ@¤ Ù‡+@¤ üPH@¤ Ù‡+@¤ æ1ø¡@¤ Ù‡+@¤ -çÕfÏ@6‚ò䎊@6„ xFÜ@3f‡+ J@3esê³g¡@2Æ“t¼@2Åœàu÷@25µsê³h@23n—P@25µsê³h@23FÜ]cˆ@25µsê³h@2/ƒ{J#:?‡YÍ_?%¼ÇÆÃ±?“1‘´¹V?Œ'õ‚$5ñ?”ä+ïè?•ÍÂ^mÄ*?„F/·ÿP5?’馿œãj?“ |ɽ‡?RLnj?”‚ÍÊL¾l?“X<‡÷Ú?‚˜YªüÏE?•ða˜,F?Šó¿á§E?“DάR²?‹ì3åý?¢—„¯l@@@@@*@&?ð?ð?ð?ð?ð?ð¿9äÁ ¿5‰A ð?>Ç‘oè?K4©½èêƒ@¨«:Û–>@¤ íÎr?\¹$<ó]E?km>ÅòÓ/?º¶ *F?ÙH?çNi@Ÿh•x ‚@5@¥|§ï²-@¥|´ýó¶F@¥|§ï²-@¥}/Ån@¥|§ï²-@¥|fšÔ,=@¥|§ï²-@¥}Ÿ¾vÉ@¥|§ï²-Á.„€@¥|§ï²-Á.„€@ ©ô9Xb@ ©ú^5?}@ ©ô9Xb@ ªHè§@ ©ô9Xb@ ©ýŠÚ¹õ@ ©ô9Xb@ ©Ù=Ùc@ ©ô9XbÁ.„€@ ©ô9XbÁ.„€@804mÅÖ8@86$Ý/ @3¦‡+ J@3XFÜ]c@2ß²-V@2Æý!ÿ.I@2¨è§æ›@2ƒ× -=p¤@2¨è§æ›Á.„NÜC,¥@2¨è§æ›Á.„NÜC,¥?óA[ØïF?Å«û}ü›?³ÞÐοF;?ÁóÀª Ò!@8Iç@8Ù?£È‰·akû?ÀYB9˜J?§‚42¾?¹n¬·«y@8S@8û—?·ø^$f, ?«ë"{Ę?«à¼(??µã=U)¼@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø6@¢“|í‘hs@¢“{çl‹E@¢“|í‘hs@¢“|j~ùÛ@¢“|í‘hs@¢“¾vÈ´@¢“|í‘hs@¢“}ó¶E¢@¢“|í‘hs@¢“{quŽ"@¢“|í‘hs@¢“|í‘hs@®ø° Ä›¦@®øªÀƒo@®ø° Ä›¦@®ø±Å@®ø° Ä›¦@®ø¯v_Ø­@®ø° Ä›¦@®ø®záH@®ø° Ä›¦@®ø­žƒä'@®ø° Ä›¦@®ø±A [¿@6í¥œàv@6ëW>«6z@2ã÷ÎÙ‡@2ãn.±Ä2@2“t¼j@2Çâ‚@¸@1ÜÚQÎ@1ÛÍ5¨Xz@1ÜÚQÎ@1ÛjçÕfÏ@1ÜÚQÎ@1ÚôðØDÐ?…ÅBðrç?‘ ·èe?‘ÓKñá»Ù?ŒvHn&³?’ §¹i»µ?‘#†»{׈?Ž=fA:?” Á lŸž?«'Q™µ?’_3Í\Æ?’8,²ñ±T?‘á.†8?ˆÌ7^|Â?œ‘z¥æ?ƒ]€µ,Vß?†‡ °´¥`?‡´*žZ}Õ?ˆ0&YÊEd@@@@@ @?ð?ð?ð?ð?ð?ð?%‰Žê ?RÑN°?4½r$ù?4¿³„W@¢“|›Ä"»@®ø­¸#Q?T¯º{é×+?T ¯b°7?¯ĘD¢ð?¦1>Öt¤@ŸjÊ嬕Œ@7@¬ÿ¸Që…@¬ÿ‡+@¬ÿ¸Që…@¬ÿƒä%¯@¬ÿ¸Që…@¬ÿí‘hs@¬ÿ¸Që…@¬ÿ! [À@¬ÿ¸Që…@¬ÿæšÔ+@¬ÿ¸Që…@¬ÿj~ùÛ@¤/Ÿ¾@¤ @¤/Ÿ¾@¤æšÔ-@¤/Ÿ¾@¤/Ÿ½@¤/Ÿ¾@¤žžš@¤/Ÿ¾@¤<64@¤/Ÿ¾@¤}¿H@6òÃÉîËû@6ò° Ä›¦@2Ê^5?|í@2Ê^5?|í@2{Ƨï²@2{ŸU›=@1£ÉîËû@1£Ð|„µÝ@1£ÉîËû@1£FÜ]c‰@1£ÉîËû@1£×Ûôˆ?“Æ×q„nï?Žd±Ìº?‘°&޲P? Í‹hÆ?‘·Xâe?’T«¥-ÚN?žˆ2}?’ñ©ûçlŒ?«'Q™µ?‘~¬Àm?ó?‘¾ãazÅ?’.8 -B?‚íWçé„?àìÚJ>?†¼Š˜L¥ø?ƒì%­¹Ï‘?ˆA0û)n?ˆA0û)n@@@@@,@*?ð?ð?ð?ð?ð?ð?DkZX¿BÄñ†d?R>fv\Ä?rlòüœ@¬ÿœ–@¤žinë\?n»9ÖKÝõ?7ø/$ôY€?×ìZ†ýdE?sLtzm@Ÿk~ ‚k@8@ª–~ùÛ"ÑÁ.„€@ª–~ùÛ"Ñ@ª–€žòB}@ª–~ùÛ"Ñ@ª–¶- „@ª–~ùÛ"Ñ@ª–ŠÌ‘=O@ª–~ùÛ"Ñ@ª–’Zùô@ª–~ùÛ"Ñ@ª–¢½9Éw@›bMÒñªÁ.„€@›bMÒñª@›^¬Ž.@›bMÒñª@›¹¡Wç@›bMÒñª@››˜=Y@›bMÒñª@›GÎÎ<Ê@›bMÒñª@›šr²ë@9wâ‚@·€Á.„>¤µÜÆ@4J^5?|í@47^3Ê -@46§ï²-@4‰E3ú¢@3TmÅÖ8†@3! ¯ææ®@3TmÅÖ8†@3%,0â@3TmÅÖ8†@3 TR!Wh@8J¨?—pçÙÒ?¶]ý€]Ûó?¥c ÷³Ü?²/´Ö1û?¨èz+Í›˜@8J¨?—ù›5ot?±N-+gâÐ?«Š`nŠk?°xu‘ç‰ñ?£±Ðt¯ @8p÷?}aE’·?“`oÙ¶º?Š„I›H?™°ñÇ«þê?‘zžò½‡@$@(@(@3@1?ð?ð?ð?ð?ðøøøøøøøøøøøø9@§-˜“t¼j@§-ˆr° Æ@§-˜“t¼j@§-›~ÿ—@§-˜“t¼j@§-¥œàv@§-˜“t¼j@§-žvÈ´9@§-˜“t¼j@§-¦$Ý/@§-˜“t¼j@§-¨1&éx@£]t¼j~ú@£]µ$Ý@£]t¼j~ú@£^ýŠÚº@£]t¼j~ú@£]ÔFsØ@£]t¼j~ú@£]Ôã¼Ó[@£]t¼j~ú@£]ª¦L/ƒ@£]t¼j~ú@£]¾vÈ´9@8ÖšÔ,<Ÿ@8Ñ-w1Å@3Ò Iº^5@3ÈõÂ\)@3M²-V@3GË)^ž@3ý!ÿ.I@3 íúCþ]@3ý!ÿ.I@2þ!–R½<@3ý!ÿ.I@2ùXbMÓ?ºðŽÄS?—A«ª°×Z?¤uzH{*?ŸÆ^¼ò˜?¨ƒ ¹´?­Ðxšh`?ȸaÞ­å?™¡û¶ ?´]&7®í?°ù¯'ýŽy?­ˆOLߎ?¯/Õ’¬Œ»?¿Õ²€?ŽOv_Ø­«?ˆÌ7^|Â?˜m7>ên?™¼òQh@? ËD7<@@@@@ @&?ð?ð?ð?ð?ð?ð?xx•Ÿ`€¿våêNe€?RtR#Þßj?ƒúí@ ?@§-¢l‹H@£]¿*²¨Î?b¼p?—' -ë¨%?›7Œý7!ú?èp~”›z@Ÿp°í¹°@:@¨Åî—Oß@¨Åë…¸R@¨Åî—Oß@¨ÅíÅÖ8…@¨Åî—Oß@¨Åí‘hr°@¨Åî—Oß@¨Åø -à@¨Åî—Oß@¨ÅîŠqÞj@¨Åî—Oß@¨Åï·éù@¨û"Ðå`B@¨û¾vÈ´@¨û"Ðå`B@¨û!-w1@¨û"Ðå`B@¨û¥ãSø@¨û"Ðå`B@¨û!ò×s@¨û"Ðå`B@¨ûŠ Þ@¨û"Ðå`B@¨û64@87â‚@·€@8: ÞÒ@3R Iº^5@3Np:û~@2´“t¼j@2±ä÷eý‹@2L¿±[W?@2HŒç¯¸@2L¿±[W?@2F1ø .@2L¿±[W?@2G$tSŽô? Å{¿Ž<º?š¾ßÍZ?’ -N»A3?’èÞ㬱_?“¦Æ_ÌdA?“Ì›`×ñ¾?¨Ö_pP1?’p RN%Î?‘}7ˆ.Ñ?“§ÞÐÞû?”¤¦ð¹e?”e!¶?° ё٤i?ŽátÖÁ»‡?ƒ{¬ÉW?„†YÊ’È?ˆW|¶DC?ŒÙ”!Çx‡@@@@@(@*?ð?ð?ð?ð?ð?ð¿<íÎ͸¿V¬qmÀ?bîÃå¿ó?Kß®Šõ@¨ÅñÒl8¬@¨û¿‰Ð?{á¦8?a;ô;ÇZ?飓2)?²/3'ÿ7ö@ŸoØë2¡Ð@;@Ÿ#èr° ÅÁ.„€@Ÿ#èr° ÅÁ.„€@Ÿ#èr° ÅÁ.„€@Ÿ#èr° ÅÁ.„€@Ÿ#èr° ÅÁ.„€@Ÿ#èr° ÅÁ.„€@’žvÈ´Á.„€@’žvÈ´Á.„€@’žvÈ´Á.„€@’žvÈ´Á.„€@’žvÈ´Á.„€@’žvÈ´Á.„€@8è†YJôñÁ.„>¤µÜÆ@4‡ÎÙ‡+Á.„M‰ûçm@3â-VÁ.„QnÙ‡@3ž«6z‘Á.„NÜC,¥@3ž«6z‘Á.„NÜC,¥@3ž«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø<@žó'ï²-@žó(r° Æ@žó'ï²-@žó+6ª@žó'ï²-@žó-\ú¬Ù@žó'ï²-@žó+æÃ¥X@žó'ï²-@žó$Ù]I¾@žó'ï²-@žó%JP@¨Ó’ñ©ûç@¨Ó’ñ©ûç@¨Ó’ñ©ûç@¨Ó’\™S.@¨Ó’ñ©ûç@¨Ó[JÎx@¨Ó’ñ©ûç@¨ÓPèä@¨Ó’ñ©ûç@¨Ó’Y“ Ì@¨Ó’ñ©ûç@¨Ó’\Œ„>@2Ô xFÜ@2Ó÷ÎÙˆ@1T›¥ãSø@1Te˜í•¦@1“t¼@1«ÀãŠ@0kxFÜ^@0jj´Ïâ@0kxFÜ^@0iy–@0kxFÜ^@0iÿi}„ä?É^¨¯Âj?ÛñªF -?‘;"½à{?Œ U}ÔƒŸ?‘“äh2$?ÀÁ݆?ÐbMÝn½?’³.ª?€<~zÝ?áaæNl½?ÚÿQ» ?ƒ@âÅÁ)?€z¿nÔU?Œåç“r,?ƒíÁˆ;Üú?‚äÉ…œ%ã?‡´-ê“Ö#?‡Zoh$lå@@"@ @$@3@4?ð?ð?ð?ð?ð?ð¿XéÅP?MvhÉ?B7ƒij›Ò?5¤$õòÀ@žó'Ð53@¨Ó‘“_‹÷?‚ÂÌ]æ?„2ÌôÏ?‡×7°º?‡ø¢:›¸1?ð@@@@*@*?ð?ð?ð?ð?ð?ð¾ñàŽ€?0*<à?8½@ŧ¶?$wǪrEÒ@¨õëýY7g@Ÿòúä27Ú?Gœ”ÂÏ?3îüÆx™?‰ïCOÐ ?^å gê”@Ÿs‹À½Ÿ@>@¬M>vÈ´9Á.„€@¬M>vÈ´9@¬M+’:)È@¬M>vÈ´9@¬M;À6ä@¬M>vÈ´9@¬M>\‘ÑN@¬M>vÈ´9@¬M<£n/@¬M>vÈ´9Á.„€@žt+ IºÁ.„€@žt+ Iº@žtkíúCþ@žt+ Iº@žti*0U1@žt+ Iº@žtSŽóMk@žt+ Iº@žt6z—@žt+ IºÁ.„€@7Žì¿±[XÁ.„>¤µÜÆ@2¸r° Äœ@2ŨXy=Ù@21‰7Kƨ@2;íúCþ\@1O „M@1•Y³Ð|…@1O „M@1/Ÿ¾w@1O „MÁ.„NÜC,¥@8J¨?¬97êºþ?–Èó^ù„?ZÁ».œ?“êôÉøX@8Ù@8J¨?±Û”Ãbâã?¬ÿwŸSïZ?íu…XÚ?¡^候¼@8û—@8p÷?°RQÒ¿¦?¡jÐÅx?‘V]9½êV?•mCìc¿4@8 Ø@@@@*?ð?ð?ð?ðøøøøøøøøøøøø?@©žàÄ›¥ã@©ž‚Ðå`B@©žàÄ›¥ã@©žâe+Ô@©žàÄ›¥ã@©žó3333@©žàÄ›¥ã@©žö»˜Çâ@©žàÄ›¥ã@©žûô‡ü¹@©žàÄ›¥ã@©žù‡+@¤œ¡ÊÀƒ@¤›èr° Å@¤œ¡ÊÀƒ@¤›ò•éá±@¤œ¡ÊÀƒ@¤œƒS&@¤œ¡ÊÀƒ@¤›-žƒä&@¤œ¡ÊÀƒ@¤›VâëC@¤œ¡ÊÀƒ@¤›R{²þÅ@8}:’£@7ÇÎÙ‡+@3û Iº^@3ý«ŸU›=@397KƧð@3/HË’:@2𖻘Çã@2Ñ©ûçlŒ@2𖻘Çã@2º’£S&@2𖻘Çã@2¹õY³Ð}?ÎÜk!Ë«Ü?‘ ·èe?žrÞÀ±ä?¤wá­P?º?Ñl#à¹?µ-AäpaÂ?­éW«ZM›?–÷-A?¿Î¯¼M?œˆ.6·k?¥=ƒ™íx@@@@@(@&?ð?ð?ð?ð?ð?ð?Öʈ¿¡å0Èo?„m¾Õãà‘?€Èö'åY¥@©žô ,@¤›}#a8œ?“‡Ñ“)/£?¦ï‘p:ˆ?åÓ- -ÅA?ß®Æ@‡@Ÿm~¸Øñ@@@¬Ï‡+ J@¬Ï‚ Iº^@¬Ï‡+ J@¬Ï†fffe@¬Ï‡+ J@¬Ï„›¥ãT@¬Ï‡+ J@¬Ï…8ï4×@¬Ï‡+ J@¬Ïƒ,¥zw@¬Ï‡+ J@¬Ï€ÞÒˆÎ@­xTýó¶F@­xWÎÙ‡@­xTýó¶F@­xT!-w@­xTýó¶F@­xS3333@­xTýó¶F@­xN}Vlô@­xTýó¶F@­xSŽóMj@­xTýó¶F@­xT,<ží@7uS&Á¾@7u$Ý/@2xr° Äœ@2usê³g¡@1ß²-V@1Þšv@1n_oÒ @1jdÂø7µ@1n_oÒ @1làuöý"@1n_oÒ @1lC,¥zy?}Ñ¿ž,?’«p~v]Ù?‘jh¨qã9?Aš%ðï?’ÒuèçxY?’Ýå"çX?–ªÎ­¡?“í -Âô‚?Å)Ì_“?‘°ß‡O©?“A ç’?‘ÔÄ÷Õ?ÉÏt -j?3ßa=„?ŒArUãA?‡ÕZ›µûÜ?‰Â“yä–ê?‡æê7²zE@@@@@*@(?ð?ð?ð?ð?ð?ð?#rFQà¿«6z@ }àA‰7L@ }Ü(õÂ@8zqÞi­C@8n í(Œç@4+¥ãS÷Ï@4-!ÿ.Hè@3A‰7KÇ@3“g ù l@3#ÉîËû@3'Á½¥@3#ÉîËû@3 ·€4mÆ@3#ÉîËû@3ƒ{J#:?ð°–Ž]? ÿ1‡åH?–¦r…û?Œä%—ëš?š¡ ùß8{?“Q´Î`°€?ð°–Ž]?•Ð\ÄÙ?—®ÓÿÛ?RLnj?˜| ´uþÁ?’Ü·Õ-í?ð*wjs—?šÑ~¿²Ô?”=øŽî‚}?‘@fº¬o(?Ä;Ãkr>?’ymícw\?ð@@@@,@"?ð?ð?ð?ð?ð?ð¿^$6ÝÞ?@õoŽ?KÔ@†Óò?S(ÑBSˆX@®+‚$DMÂ@ }ÚhÊ)?\U ®Ïá}?c2Ђx?]?¬VY¹s?¸DV¯ùR@Ÿrû#¯YY@B@«¶È´9XÁ.„€@«¶È´9X@«Áò×s@«¶È´9X@«¸ -à@«¶È´9X@«Â‚@·@«¶È´9X@«Ð-à @«¶È´9X@«¸üPH@¨9šŸ¾vÉÁ.„€@¨9šŸ¾vÉ@¨9žš@¨9šŸ¾vÉ@¨9•¨Xy>@¨9šŸ¾vÉ@¨9‘ë…¸@¨9šŸ¾vÉ@¨9˜ -à@¨9šŸ¾vÉ@¨9“3332@9Âò䎊Á.„>¤µÜÆ@58r° Äœ@58>BZîc@3´“t¼j@3´Ð©*0@3î_oÒ @3í¿HË’@3î_oÒ @3ãŽóMj@3î_oÒ @3åsê³g¡@8J¨?–:ð»}TÇ?˜g± ÓË?™ ­:>Co?¥êäa`Œ??µKA¢bŒ@8J¨?’HGªÂÛ^?˜“º£¹‡b? Ý aKå°? CÚ B÷?¡?–ÿŒ4@8p÷?¢»:³ãíÔ?ˆ†Ô‡º:?“¶º Yæ¸?¨ƒÑ0¹C?¤²¢Òó@@@@*@&?ð?ð?ð?ð?ðøøøøøøøøøøøøC@°y‡+Á.„€@°y‡+@°zˆâ.©@°y‡+@°z뤦@°y‡+@°z––@@°y‡+@°xä•âV@°y‡+@°x+š1@—; Ä›¥ãÁ.„€@—; Ä›¥ã@—;¤õ1ß@—; Ä›¥ã@—;£pÞ@—; Ä›¥ã@—;£• М@—; Ä›¥ã@—;Ÿ6Fé'@—; Ä›¥ã@—;¡]á»y@5m¥œàvÁ.„>¤µÜÆ@1©‡+ @1©à,í"@1Z~ùÛ"Ñ@1[åE´@0£ÉîËû@0£Ýxe@0£ÉîËû@0£›V.\K@0£ÉîËû@0£5ÑõH@8J¨?êôýÏIŒ?‘G6ÝÙX]?‹¬–Or†?‘)]«™¿E?ðS{ëaœ@8J¨?’V•ì ?Žg›è$?0ÌIíjû?‘(~Ð ——?›ÊéÅ@8p÷?!ê€ ½?‚æÀ:ÏC8?ƒ!ç•/1?†ÇÏSÿ/¦?†Ã²ØÑ@"@$@@8@5?ð?ð?ð?ð?ðøøøøøøøøøøøøD@Ÿ+ Iº@Ÿa‚Ï@Ÿ+ IºÁ.„€@Ÿ+ IºÁ.„€@Ÿ+ IºÁ.„€@Ÿ+ Iº@ŸÖ£'©¡@Ÿ+ Iº@ŸDÓôœÿ@¬Fˆ´9X@¬F‰xÔýô@¬Fˆ´9XÁ.„€@¬Fˆ´9XÁ.„€@¬Fˆ´9XÁ.„€@¬Fˆ´9X@¬F %zÜc@¬Fˆ´9X@¬F€ÌXk@6VšÔ,<Ÿ@6TÜÇ(À¶@25ãS÷ÎÙÁ.„M‰ûçm@1’Ðå`A‰Á.„QnÙ‡@1zÔ,<žíÁ.„NÜC,¥@1zÔ,<ží@1M¼ á»@1zÔ,<ží@1žÅ±Ë%â?’t D5·±@8#˜@8¾:@8 >+?¨“ðý" -?šÑIÊ ?}@T˜ÁÎ¥@8Î÷@8i§@8Å?¤k¯½µÈ?›JïŸ?Š9sîgD@8 * @8p÷@8¶?—i¾Cþr.?•Ìì K¹é@@5@$?ð?ð?ðøøøøøøøøøøøøE@ží+@8Iç@8Ù?…ðE[i)@8Î÷@8i§@8Å@8S@8û—?ÞwÆvë@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøF@¯6”záG®@¯6“÷ÎÙ@¯6”záG®@¯6”9Xb@¯6”záG®@¯6˜“t¼j@¯6”záG®@¯6“Z…‡”@¯6”záG®@¯6‘©ûçl@¯6”záG®Á.„€@¬ùwÎÙ‡@¬ùwÎÙ‡@¬ùwÎÙ‡@¬ùxl"h -@¬ùwÎÙ‡@¬ùy‡+@¬ùwÎÙ‡@¬ù|PHð@¬ùwÎÙ‡@¬ùu?|í‘@¬ùwÎÙ‡Á.„€@3ÿ–»˜È@3ÿoÒòä@0@ Ä›¥ã@0@Ë)^ž@0'KƧïž@0'8}¿H@/p‰ 'RU@/s÷ÎÙˆ@/p‰ 'RU@/p£× -=p@/p‰ 'RUÁ.„NÜC,¥?€‚ñêã ?ÎÁ¯‰t0?‘¶å¤wk½?Ú¾ÉÛ²º?‘ƒZ)Àˆ@8Ù?}Ñ¿ž,?’j•×›c?‘F·ˆ¤µÜÆ@4@ Ä›¥ãÁ.„M‰ûçm@3È“t¼jÁ.„QnÙ‡@2á:’£SÁ.„NÜC,¥@2á:’£SÁ.„NÜC,¥@2á:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøH@¢Ûhr° Å@¢Ûi7Kƨ@¢Ûhr° Å@¢ÛeðoiD@¢Ûhr° Å@¢Ûp©*0@¢Ûhr° Å@¢Ûyb¶®@¢Ûhr° ÅÁ.„€@¢Ûhr° ÅÁ.„€@ª‹«…¸R@ª‹­V@ª‹«…¸R@ª‹«…¸R@ª‹«…¸R@ª‹£ÉîËú@ª‹«…¸R@ª‹›¥ãSø@ª‹«…¸RÁ.„€@ª‹«…¸RÁ.„€@6^Hè§æ@6]\ú¬Ùè@3¡hr° Ä@3¤mÅÖ8†@3ö§ï²-@3øï4Ö¡b@3œÚQÎ@3˜Xy=Ù€@3œÚQÎÁ.„NÜC,¥@3œÚQÎÁ.„NÜC,¥?|öOÿÝ?—.‰†5¸?£Ï[ì—:¤µÜÆ@4Ï|í‘hrÁ.„M‰ûçm@3îùÛ"ÐåÁ.„QnÙ‡@3½cˆe”°Á.„NÜC,¥@3½cˆe”°Á.„NÜC,¥@3½cˆe”°Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøK@¡kùÛ"Ðå@¡lÊÀƒ@¡kùÛ"Ðå@¡kø†YJõ@¡kùÛ"Ðå@¡kéxÔýô@¡kùÛ"Ðå@¡kõ*™1@¡kùÛ"Ðå@¡kñ4êJ@¡kùÛ"Ðå@¡kìL˜_@ªN{çl‹D@ªNžùÛ"Ñ@ªN{çl‹D@ªNoÒó@ªN{çl‹D@ªNn—Oß@ªN{çl‹D@ªN‡æšÓ@ªN{çl‹D@ªN‰“ àà@ªN{çl‹D@ªN†ÏAò@6¥öý!ÿ.@6•öý!ÿ.@4œIº^5?@4'RT`ª@3×ï²-@3Ñø -à@3ž«6z‘@3œ˜_ö”@3ž«6z‘@3 A‰7KÇ@3ž«6z‘@3¡$Ý/?àþTxvc?¢4o:™v?£YtBs6…?‘CÀ><¹?—­¦¾z£—?œˆš—I?ÀÊ»d9\?©™™™™™š?œT¹o¿‹õ?’àêE©³?™)Â>¡$;?™¯m,·¦h?½`{ÕÄwz?›Õ¼ÉUÓ›?‘¦dpnÐû?”oɼ|)E?–í -e˜›ï?•mCìc¿4@@@@@*@*?ð?ð?ð?ð?ð?ð¿p_kàK€¿DFàì?c¿{¬œ?[ͨ¤T@¡kñ±u>æ@ªN‡ß¦U›?qz+EÃ.?k†ÂQñS?Î2L»Ò‚?ÁûðÊ•ž@Ÿr/wÃ0D@L@¬ r-V@¬ q©ûçn@¬ r-V@¬ sZ…‡”@¬ r-V@¬ sœ¾á@¬ r-V@¬ s@N¤©@¬ r-V@¬ qhr°!@¬ r-V@¬ qÎ_@­ q&éxÕ@­ q&éxÕ@­ q&éxÕ@­ qhr°"@­ q&éxÕ@­ r×s@­ q&éxÕ@­ q[W>¬@­ q&éxÕ@­ quŽ!–@­ q&éxÕ@­ qœàu÷@12ÃÉîËû@12ÃÉîËû@,ÍV“@,Í:’£@,Œ1&éy@,‹àÞÒˆÎ@+G“Ý—ö,@+G ù kº@+G“Ý—ö,@+G_oÒó@+G“Ý—ö,@+Gy¦µ ?É^òÀXæN?°çR;?‘"žæÆó¡?‹Æ úJ-M?ðÌÇßgé?·t¤¢‚J?ÐbMçê_x?’ ,øÕC©?¹º–Èj?;ß $Þû?â2„&ÿh?PS2K¯™?€bMÕky?Œ°¶.Ä+Æ?‚|׿pZ?‚éXëLL÷?†ŠúЀ>(?†’Õaì+’@@@@@,@*?ð?ð?ð?ð?ð?ð¿O7ý#@?—د¸?/ϰÕ>îâïA@ч@¬ rˆ@­ qv³,,?=à^ Þ„Ì>ý@© =Ф?uÝÌÛ©7>ò´äΦ~@Ÿs -}%‚@M@®¹1&éy@®¹éxÔþ@®¹1&éy@®¹â‚@¹@®¹1&éy@®¹ÈK]Ì@®¹1&éy@®¹»/ìW@®¹1&éy@®¹Ë)_@®¹1&éy@®¹ýŠÚ¹@¥*H1&éy@¥*H1&éy@¥*H1&éy@¥*FÏAò@¥*H1&éy@¥*GE8ï6@¥*H1&éy@¥*H§æš@¥*H1&éy@¥*Iã½@¥*H1&éy@¥*Iã½@4–šÔ,<Ÿ@4•¡ÊÀƒ@0Š^5?|î@0ޏQë…@0t“t¼j@0tÖ¡aäø@.­úCþ\’@.¹ k¹Œ@.­úCþ\’@.·škP°ó@.­úCþ\’@.±œàuöþ?žˆ2}?òb[±?‘©ŠÕ ·Ñ?’ {½4?’ §¹i»µ?‘Iãd©ìòîAú.(@®¹Þ -Fé@¥*H ~ô?E»:-?LÇâQ~?’qù¥.?0[Ü^4Îú@Ÿg+ -ì‹^@N@«R_;dZ@«RlFtM@«R_;dZ@«R_W“@«R_;dZ@«R]ô’Eô@«R_;dZ@«R` s‡@«R_;dZ@«R]ÈK]@«R_;dZ@«R]~JÑ@™te`A‰7@™t]tbs|@™te`A‰7@™tv©ms8@™te`A‰7@™tm-ÝÍ@™te`A‰7@™tg2+¦@™te`A‰7@™ttÿß$÷@™te`A‰7@™tk>òµ@8Žì¿±[X@8‹w§r–@2GÎÙ‡+@2B˜tþyB@1>V“u@19-€©@/úÇË)_@/óŠlóU®@/úÇË)_@/ó÷@ ¶ò@/úÇË)_@/ó“Æ©­v?ŸÙù)Ë@ý?î÷ƒ}?‘ýKúñÖ?Œ;Òmîœ?‘1)8’™X?Ù4€nr?£Vå”Åz?“G Dh1Õ?’X˜^¤µÜÆ@3¦‡+ J@3ÔzáG®@2RÐå`A‰@2^p:û~‘@1ÜÚQÎ@1Þƒä%®æ@1ÜÚQÎ@1Üô!-w@1ÜÚQÎÁ.„NÜC,¥@8J¨?µ½½5FÄ´@Ÿp¿ú@Q@¨+çï²-@¨+èõrî@¨+çï²-@¨+çRT`ª@¨+çï²-@¨+êôðØE@¨+çï²-@¨+æ -¦L0@¨+çï²-@¨+è22ë-@¨+çï²-@¨+ë Úœ@œpˆ1&éy@œp‰º^5?@œpˆ1&éy@œpx7´¢4@œpˆ1&éy@œp}Vlô@œpˆ1&éy@œpzCþ\’@œpˆ1&éy@œp†®¸ˆ½@œpˆ1&éy@œpxÔøÒS@4£g ù l@4£dZ¬@2#÷ÎÙ‡@2!Î_p@1²-V@1”M:’£@1+xFÜ^@1<¾ß¤@@1+xFÜ^@14RÀèP@1+xFÜ^@11ŽÓxöv?|¬Æ Væ?‡åƒêM?—bÕ/ŸÓ?›©Ñ®vtQ?éB®ÀTS?‘¾›¡‚ ?|Ñb×¶@?“ý•‘|? rƒ ?@²ËÏ(?‘CX-““?H, -U}?‚n¼Õ‰Vÿ?ŽOv_Ø­«?ˆ†Ô‡º:?ˆW„hðQ?Š2±ÀÒ#Z?ŒŸ6/ºðÐ@@@@@0@0?ð?ð?ð?ð?ð?ð?:Mâ ¿U…ÿœä?7C›IU{?D´Qs@¨+é}]@œp„4‚Ã÷?X18²$´Ç?eNFØ&?ºD·µÎî?Ôò°”¼$@ŸfnB^ Ä@R@©‰7KÇ@©z>åHs@©‰7KÇ@©…ªtò›@©‰7KÇ@©‡ºñs6@©‰7KÇ@©óÞ6@©‰7KÇ@©~¬ªb@©‰7KÇ@©¢’E6@—‹—Oß;@—‹”záG®@—‹—Oß;@—‹ ÍgîŠ@—‹—Oß;@—‹³óf @—‹—Oß;@—‹š}°y@—‹—Oß;@—‹ž¾ƒq@—‹—Oß;@—‹Ÿ'ÛXß@7 ]cˆe”@7Ø0¢v @0î5?|í‘@0îÆ6°–5@0]V”@0\dªÀ½!@/p‰ 'RU@/pßl¯;|@/p‰ 'RU@/oëB&Æ@/p‰ 'RU@/l\ž£?‘ɱb)Q?ª‡:4?‘})°Y°©?Œ=…?‘]Xýæä?‘Ô"†?å ?‚n—Oß>?šÑ~¿²Ô?„ˆëC&z?ƒ¦bŒšl?‡R‚8ë«?†ÿ‘ýöŠÃ@@$@(@(@;@:?ð?ð?ð?ð?ð?ð?PØC‚n?RôT$?A·'&óD>?‡ÍãN|@©~7õÅ @—‹šÏ¢Pˆ?]ô(‘J%?:œœæ?º-/wÄJP?y=–vÙ.ä@Ÿk.§ÀÂ@S@ û×Oß;@ û×Oß;@ û×Oß;Á.„€@ û×Oß;Á.„€@ û×Oß;Á.„€@ û×Oß;Á.„€@ û×Oß;Á.„€@š?éxÔýô@š?ì‹ê…@š?éxÔýôÁ.„€@š?éxÔýôÁ.„€@š?éxÔýôÁ.„€@š?éxÔýôÁ.„€@š?éxÔýôÁ.„€@3·â‚@·€@3¹2åõEÿ@/)7KƧïÁ.„M‰ûçm@-ÄZ¬1Á.„QnÙ‡@-kjçÕfÐÁ.„NÜC,¥@-kjçÕfÐÁ.„NÜC,¥@-kjçÕfÐÁ.„NÜC,¥?}9ãXÕ@8#˜@8¾:@8 >+@8Iç@8Ù?|¬g•~D@8Î÷@8i§@8Å@8S@8û—?‚ïýˆÚ=@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøT@«vÍÒñ©ü@«vÑ©ûçm@«vÍÒñ©ü@«vÃn.±Ã@«vÍÒñ©ü@«vÅm\ú­@«vÍÒñ©ü@«vÎp:û€@«vÍÒñ©ü@«vÊdÂø9@«vÍÒñ©ü@«vÏ·éù@¢ý(õÂ@¢ý$“t¼@¢ý(õÂ@¢ýŠÚ¹õ@¢ý(õÂ@¢ýÀëíú@¢ý(õÂ@¢ýÿ—$@¢ý(õÂ@¢ý3Ð|„¶@¢ý(õÂ@¢ý1ø .@6¨†YJôñ@6¦®}Vlô@4€ Ä›¥ã@4-w1Å@3´“t¼j@3¸ºÇË*@35µsê³h@35‡“Ý—ö@35µsê³h@3.\‘ÑN<@35µsê³h@3/¤?åÉ?¡EÉ@Ú?}S]N -?ÛÁB‰)?’¡ð¾÷ÅÝ?œÑÎ$ôïÔ?œs[Îæz?–ªÎ­¡?›ªÊît…?”¿?>‚#§?’k­ªì¢H?šRýi¡ô?›LÔp%„Y?—}d1HØÂ?™î  lƒ?ˆLdB"%?Œ(æQ?¡ÏX¼ãs~?‘øù>3}@@@@@$@"?ð?ð?ð?ð?ð?ð¿G!-ã ?iç<¦¼?Nk¤Lö?Ï?gåÏ|f1a@«vÎk@¢ý(;-Ål?f2Zwæ½W?„~²n˜R?¸#FtÇ ?ùLîPæ¥@Ÿl‡eeú)@U@¤pOß;dÁ.„€@¤pOß;dÁ.„€@¤pOß;dÁ.„€@¤pOß;dÁ.„€@¤pOß;dÁ.„€@¤pOß;dÁ.„€@ “Ôýó¶FÁ.„€@ “Ôýó¶FÁ.„€@ “Ôýó¶FÁ.„€@ “Ôýó¶FÁ.„€@ “Ôýó¶FÁ.„€@ “Ôýó¶FÁ.„€@9p4mÅÖ8Á.„>¤µÜÆ@6°Ä›¥ãTÁ.„M‰ûçm@5gKƧïžÁ.„QnÙ‡@4æYJôðØÁ.„NÜC,¥@4æYJôðØÁ.„NÜC,¥@4æYJôðØÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøV@¯§Ç®zá@¯§â$Ÿ@¯§Ç®zá@¯¨û—]c@¯§Ç®zá@¯§±ç~@¯§Ç®zá@¯§ý÷fyD@¯§Ç®zá@¯§¨êÄJ@¯§Ç®zá@¯§ÌÙè>B@”É]/Ÿ¾@”É C•@”É]/Ÿ¾@”É _ȱ@”É]/Ÿ¾@”ÉnÄ@Hô@”É]/Ÿ¾@”É$J(ÚÉ@”É]/Ÿ¾@”ÉKµ (Å@”É]/Ÿ¾@”É)“ àß@8ÖšÔ,<Ÿ@8.ʾj¼@5f‡+ J@5FL{|@4Àå`A‰7@4í¼“‹@4‚@·€5@4QoV¢@4‚@·€5@4*ñB΃q@4‚@·€5@4&ÏAòØ?|ò0p‰J?¢X‹û/Z¬?°Ö„;yK?­3ÊR2\?¬–ùLáD?²±ñ?©:ŠÊÙ?©O¸»Ã?±PÈõJ?ž|±‡y‘?¨ögˆzË›?± ÜŠñ+œ?¢ÐÛ&˜Þ?˜$nªiJ=?«’ Gjæ?¢cò[èz?§,B S?°8€4|@@&@(@*@<@*?ð?ð?ð?ð?ð?ð¿xLüƒV?vp/ÿ@?z„øiî?h%b™@¯§ÓË=0@”É%¶ˆšœ?Ÿ5²À±ã÷?x6iPm@ ¶—W;¥?Óí_¸®ò*@Ÿhÿ0f‚f@W@­}Û"Ðå`@­}Þ5?|î@­}Û"Ðå`@­}âZîc @­}Û"Ðå`@­}ÚîcŠ@­}Û"Ðå`@­}áG®{@­}Û"Ðå`@­}èr° Ä@­}Û"Ðå`@­}×´¢3@«ËŸ;dZ@«Ë²-U@«ËŸ;dZ@«ËŠÚ¹õ@«ËŸ;dZ@«Ëœ‘ÑN;@«ËŸ;dZ@«ËˆÎp:û@«ËŸ;dZ@«Ë¦1ø @«ËŸ;dZ@«Ë¤÷eýŒ@7 ØDЩ@7!‰7Kƨ@4¦‡+ J@4¢GE8ï5@3ûƧï²@3ö+jçÕg@4uµsê³h@4d9XbN@4uµsê³h@4r@·€4n@4uµsê³h@4r@·€4n?Œs¤DÅÐ?™Æ‰©·?–·ª_r’ ?–O@:åÊ?žÎÑé?¢†)™„}U?3ßa=„?ž%Œ@&—?—ˆ”„òõ¤?š€ßF à?›™¬ï?£+ÍNPÞ?…~ÆÎÇ$†?‘a÷nñ?‘7#Œ!xv?™Ø^FC}?¥¯X昘?¡è9)—N-@@@@@"@&?ð?ð?ð?ð?ð?ð?D§}¬¸?A*Õ°?Y²–“ŽP?n=Ž9 Òî@­}à’¼K@«Ëœ.=~?wò^BÉ~8?/Xϼ?á[°³@-¼àìé@ŸgsùW@X@¨Š%`A‰7@¨Š%¸Qí@¨Š%`A‰7@¨Š(Îp:û@¨Š%`A‰7@¨Š'“Ý—ö@¨Š%`A‰7@¨Š'»/ìW@¨Š%`A‰7@¨Š$Âø7µ@¨Š%`A‰7@¨Š!ÿ.Hé@©"ÎÙ‡+@©"Ò-V@©"ÎÙ‡+@©"Ж»˜È@©"ÎÙ‡+@©"ÎV“@©"ÎÙ‡+@©"Ó&Á¾@©"ÎÙ‡+@©"Ðå`Aˆ@©"ÎÙ‡+@©"Ð-à @7òÃÉîËû@7íæšÔ,<@3£÷ÎÙ‡@3§+ Iº@2â-V@2ãþ\‘ÑN@2 ¿±[W?@2 «ŸU›=@2 ¿±[W?@2 ¿HË“@2 ¿±[W?@2 —ö+jè?žŒÝÙ›P?“gU·q#?“a#mU?ŽËÜ¿€?’?;Áƒè?’?=ÆþÎò?’Óusÿ\Ã?–HÞÆzì²?˜ Þ€ÁìŸ?“ÅÒÏPÉä?’ÞH†<²?‘)]•\­?–-¤]î§É?÷¾I1;?…/‡ÙX·³?†O.ce?‰/ã̽`ª?ˆCns¥ @@@@@*@&?ð?ð?ð?ð?ð?ð¿P4é¿;ü‘?KËA'o3?4 -Kêÿu¸@¨Š%N=Äö@©"ÑqYN?d… ¥%?Ry§ÛšÛº?À™,&j2q?Ÿ€5ÍóQZ@ŸnBNb<@Y@«;vÈ´9X@«;nÙ‡+@«;vÈ´9X@«;|¾ß¤@«;vÈ´9X@«;yÎ_p@«;vÈ´9X@«;}Ùb¶@«;vÈ´9X@«;yÎ_o@«;vÈ´9X@«;x -á@£´@£´Ðå`B@£´@£³öE¡ÊÀ@£´@£³öÈ´9X@£´@£³ð£× -=@£´@£³ö4ë@£´@£³óMj@7ð4mÅÖ8@7ñ©ûçlŒ@3?|í‘h@3üPH@2—ï²-@2“Ý—ö+k@23&Á½¥@2,ÌÌÌÌÍ@23&Á½¥@2-žƒä%¯@23&Á½¥@2.\‘ÑNµDà?‘­b š=?“ÉŸ“_Æ?—pü”_ù?—ã ËÄž?–í -e˜›ï@@@@@*@&?ð?ð?ð?ð?ð?ð¿gÖ%tX?FšGˆ˜?Qµu¦†2?eL1 -cFƒ@«H8/Â@£¬qÏ66?qõêà;Ð?ƒC*9ê¢?Óß”X‰C?äÂö@Ÿkú­º|²@[@¦“Ä›¥ãT@¦“ϲ-@¦“Ä›¥ãT@¦”;‹¬q @¦“Ä›¥ãT@¦”P°ò{³@¦“Ä›¥ãT@¦‘BZîc @¦“Ä›¥ãT@¦û/ìVÖ@¦“Ä›¥ãT@¦m\ú¬Û@ªFèõÂ\@ªFåãS÷Ï@ªFèõÂ\@ªDK¹Œ~)@ªFèõÂ\@ªFžOv_Ù@ªFèõÂ\@ªCÂ\(ö@ªFèõÂ\@ªC—ö+k@ªFèõÂ\@ªCcÉîËû@8쿱[X@8ÊÀƒn@3ÇÎÙ‡+@52œwškP@3t¼j~ú@3C¯·éú@2ãÉîËû@1;çl‹C–@2ãÉîËû@1J¬Ùè>B@2ãÉîËû@1[…¸Qì?§Q,Äš¤?ËÎ÷‹#c•?Òê¨\æð¥?Ô›_'÷ ?Û-hR?Û§¯Á:b?•²»UbB2?ìg«ný?äôÚ›Ìÿ?á!sÑz?áu¢‚ú?ß[y jXÓ?„A'Š_]?úi‚§œ^6?áN(† ï?« -°š´*?”¼íÒh@?”dIt£©P@@@@@*@*?ð?ð?ð?ð?ð?ð¿ËIÄ'%(¿Ê‰[ì@?š»»³{ßÃ?‡J^`u@¦“5OŸž˜@ªFP¿÷3?¨‚ww?¥½7fªÊ?÷Y­uÃê}?ò=ãÕ›Ô@Ÿ[ˆnùE@\@©ŸmV@©ŸmOß;d@©ŸmV@©Ÿn_oÑ@©ŸmV@©Ÿn¾ß¤@@©ŸmV@©Ÿn_oÒ@©ŸmV@©ŸkŸU›=@©ŸmV@©Ÿlq ²–@¢‰— -=p¤@¢‰— -=p¤@¢‰— -=p¤@¢‰–‡+ @¢‰— -=p¤@¢‰–_Ø­¬@¢‰— -=p¤@¢‰–‡+ @¢‰— -=p¤@¢‰–È´9X@¢‰— -=p¤@¢‰–ð¹@32ÃÉîËû@32ÃÉîËû@.f§ï²-@.fÂ&€I@,ãn—P@,ãn—P@-#¼ÓZ…ˆ@-#ä%®æ2@-#¼ÓZ…ˆ@-#ä%®æ2@-#¼ÓZ…ˆ@-#¯·éú?|öOÿÝ?Òç{íj?‘"žæÆó¡?‹ä†€{6è?‘ ·èf?×°ë*–w?|¬Çëý ?’5CàQ?†[‘'Í?CÚ B÷?îCq$u?_Ø~tñ?‚n—8‹8?Œ¸†‡ÄÅ?‚2Y0âµ?‚ð'ã:ÂÝ?†’Õaì+’?†špk Y@@@@@*@,?ð?ð?ð?ð?ð?ð¿(‹_±@¿ õö@?,-#ÛÍø? -ÑM–z†@©Ÿm^1@¢‰–äi³š?LUs§Cê?+SÍçÚý?¥9gèŽÀ=?cz£BÇ"Õ@Ÿfò‰ì²-@]@¡ÎÑë…¸@¡ÎÒn—P@¡ÎÑë…¸@¡ÎÒÏéHz@¡ÎÑë…¸@¡ÎÒtGF–@¡ÎÑë…¸@¡ÎÔ$Ú“@¡ÎÑë…¸@¡ÎÑêH±r@¡ÎÑë…¸@¡ÎÓYqî@›Z9XbN@›Z9XbN@›Z9XbN@›Z<´@¸>@›Z9XbN@›Z,§ê@-凓ݗö@-凓ݗö@+©7KƧï@+¨Ö-êiá@+Ó¶E¡ÊÁ@+ÓU´AB@*õ¨Xy=Ú@*ñâœ5÷.@*õ¨Xy=Ú@*÷e¡!Tb@*õ¨Xy=Ú@*öX¹÷}?É^ÈmÔ d?ÂjÕͪ_?‘ ëÙn?‹¬ÑÊ–áŽ?‘&¤Ò{Šï?ÄüÃAn?ÐbMÝn½?’¬›Úc’?4Ó˜.?@M÷)Ä%?äÂDE$?jTô–ò ?€bMÔŠ»?Œ¶4=á ‘?‚xºœA}?„]s4P;?†™jËfNª?†«{{¡@@@&@"@"@5@1?ð?ð?ð?ð?ð?ð¿B0<\\¿F© ޝ€?AJSÆÖÖ¯?9 ±E¯„@¡ÎÓ0Îò’@›Z?,—î?P­‹®G<7?G³^v˜Š¦?›óŸD+?ˆn}HÊ@ŸsÔŸ¸ @^@®Á;çl‹D@®Á=\yž£@®Á;çl‹D@®Á=—ö+k@®Á;çl‹D@®Á@ÞÒˆÍ@®Á;çl‹D@®Á<£n.@®Á;çl‹D@®Á?¾vȳ@®Á;çl‹D@®Á<àuöý@:Oß;dZ@:["Ðå`@:Oß;dZ@:JÚ¹õZ@:Oß;dZ@:H´9X@:Oß;dZ@:P|„µÞ@:Oß;dZ@:S àÞÓ@:Oß;dZ@:N;Í5¨@7uS&Á¾@7p -PëöÄ@2£÷ÎÙ‡@2¥‡“Ý—ö@2q‰7Kƨ@2tðØDÐ@1Ê0U2a|@1Ì¿±[W?@1Ê0U2a|@1ÍIQ‚©“@1Ê0U2a|@1Í¿HË’?}x—™åC~¿TÅìáª?6î’QLõW?6%1ÓøBï@®Á=I Ó@:T¤µáí?WŽ=‡Î[À?UÇY6b.?¸QÊÑHøT?°“þ­¹“@Ÿh? ÞÅ@_@° · -=p¤@° · -=p¤@° · -=p¤@° ¶ð¹@° · -=p¤@° · ù m@° · -=p¤@° ·æšÔ@° · -=p¤@° ·Ë)_@° · -=p¤@° ·¯·é@ÒÐå`A‰@ÒÑë…¸@ÒÐå`A‰@ÒÏv_د@ÒÐå`A‰@ÒÍ„M<@ÒÐå`A‰@ÒÔ,<ží@ÒÐå`A‰@ÒÑÎ_@ÒÐå`A‰@ÒÏv_د@5™*0U2b@5˜K]Ìcò@1ë¥ãS÷Ï@1ëÓÃa@@1 "Ðå`B@1 C•%@0ž«6z‘@0žì¿±[X@0ž«6z‘@0žùÛ"Ðå@0ž«6z‘@0žß¤?åÊ?}Ñ¿ž,?š¾ßÍZ?‘ñê&ètä?Œ2ÌUÃT?‘çG¸?‘ë´¤G?‚á²Olºü?’Ȳõa®?ÔCXsò?UÕh;·Å?‘jÐÅx?–’+¸¢d?‚á²Olºü?ŒïQ¼º“ã?‚á²Olºý?ƒ¼9XNÄu?†å·ÑfWà?‡×7°º@@@@@,@(?ð?ð?ð?ð?ð?ð>ܽȿ#N-# >÷ÐñiY? ?,Óâ­Ýû_@° ·K&®@ÒѤp¡\?A( P?M@ÿD’F?=C€jÆ®?¡ÝtE šD@Ÿh «êÜ@`@  ŽV“@  ‘hr°@  ŽV“@  \´Õ”§@  ŽV“@  Êi¯@  ŽV“@  y9v@  ŽV“@  ^x°™×@  ŽV“@  e´\{ @¢zG®zá@¢z@Ñ·Y@¢zG®zá@¢yùãM7|@¢zG®zá@¢y¹ž¶ -¥@¢zG®zá@¢yúVeð@¢zG®zá@¢z1‘lHî@¢zG®zá@¢z5#.©f@8|ÚQ@8àT¶’@3‚° Ä›¦@3‘ ʈ@34“t¼j@3N)JC @2cÉîËû@2hïJÄXH@2cÉîËû@2]³G\¥Ê@2cÉîËû@2_¸.Íø™?‘õRLä1T? Ó¶ºzñ—?¹ˆÑ &bÄ?²Z: mÁ?¡ -:âg?–7ç«í–ž?|çµB &€?©žo0üD?Á—’3ìü?© •ЂA?—ÚËÐ…Æ?™pkQÏ2?Šßä_4'0?™G†²TUò? Óì ¤åÄ?‹¨ÄŒ®?ÆFca¼? ÙöÍÐQ@@*@(@*@5@3?ð?ð?ð?ð?ð?ð¿âD…À¿o`…G?Yn;ª8¿u?mâ®[ |ð@  x«Äq@¢z7VDj?|´2Øÿh?¥‹:˜* ?äRõiRT@iw$/*@ŸhûÜFê@a@£_çl‹C–@£_ç®zà@£_çl‹C–@£_èð@£_çl‹C–@£_èK]Ìd@£_çl‹C–@£_èK]Ìd@£_çl‹C–@£_æšÔ,=@£_çl‹C–@£_æšÔ,=@­€u?|í‘@­€u?|í‘@­€u?|í‘@­€u›=È@­€u?|í‘@­€u›=È@­€u?|í‘@­€u?|í‘@­€u?|í‘@­€usê³h@­€u?|í‘@­€u›=È@-7süPH@-7süPH@&MV“@&MquŽ!@$ãn—P@$ãn—P@$…oi@$…œàu÷@$…oi@$…œàu÷@$…oi@$…œàu÷?É_\p)Ï?Ï[äeæºW†Ë¦@£_çIÈk¬@­€ujÑÕÅ??)=3ج>õ@i½h0?wã»DÛ®e>äHÝviŽ@Ÿs¼Ϋ@b@©§_;dZ@©§_;dZ@©§_;dZ@©§Uéá°‰@©§_;dZ@©§WXâe@©§_;dZ@©§U›=Ç@©§_;dZ@©§ZáG®@©§_;dZ@©§X*™0½@¨9)ûçl‹@¨9%`A‰7@¨9)ûçl‹@¨9 º^5?@¨9)ûçl‹@¨8üj~ùÛ@¨9)ûçl‹@¨8óÝ—ö+@¨9)ûçl‹@¨8ÿ¤?åÈ@¨9)ûçl‹@¨8óÃa@@5Hè§æ@5Çy¦µ @3=‘hr° @3,(õÂ\@3"-V@3 ³Ð|„¶@2¿ò䎊r@2¨l"h Ô@2¿ò䎊r@2­Òñ©ûè@2¿ò䎊r@2®!–R½ -fuæ?œ”ÒÚ×¾æ?’"Š6›Wz?¥þ–ÓOß?­*cuùV?‚¸“Îè ÷?Ž>ž¬ˆ?Œ¢yëjk±?|ënÓ¿Ü?Š|)-}í(?Š—à `ž@@@@@,@*?ð?ð?ð?ð?ð?ð¿[BMZl¿ŽLš'?GE~{_m£?k­gã¤Î@©§\v-id@¨9ƒ *„?d·¿Kb ý?„®ù …‰?Ó*6ïÚë¸@„O+?r@Ÿa²Þ˜?•öÉbÒ%?¥èT+ä?¥¤ð!u†?‘¶ð ‘“ˆ?’'‹Œ®„?‹ˆv>?‹—mGŸÀC?–U$M\ñ?”û²žRY=@@$@@@7@5?ð?ð?ð?ð?ð?𿚠g #¿„#([Ì?bŒe=}w(?B0{VO@¬Žn«´ì@š#…rJ^?yíØ"l>?ZAðÐ4¡ô?ò…­n*ÎÀ?³rø—°@Ÿ`M%Í@d@ªðÈ1&éy@ªð°å`A‰@ªðÈ1&éy@ªðÈË’:@ªðÈ1&éy@ªð»št@ªðÈ1&éy@ªð³g ù @ªðÈ1&éy@ªð¹0¾ í@ªðÈ1&éy@ªð¹õY³Ï@­¬I7Kƨ@­¬@Ä›¥ä@­¬I7Kƨ@­¬JÀƒo@­¬I7Kƨ@­¬I^ž -@­¬I7Kƨ@­¬F?@­¬I7Kƨ@­¬Aò×s@­¬I7Kƨ@­¬AG®|@8Ù*0U2b@8ðbMÒñª@4 Iº^5@43œ¾à@3RÐå`A‰@3R@·€4n@3‚@·€5@2û‹¬q ²@3‚@·€5@2úáG®{@3‚@·€5@2þžš?žˆ2}?ÎÁ¯‰t0?˜²éÃ_ÓÔ?Ég(6ßð?¤R„¯” ,?˜Ê`1ó€`?Ž=fA:?”=øŽî‚}?’$ûJw"Ú?‘~¬Àm?ó?œC]F~Ü?™J•Ø3ÈÖ?¤±AK\Þ ?‘­b š=?•ë þÅ?•B¿²ô@?‘p&Æ ç–?¥0àro{8@@@@@,@*?ð?ð?ð?ð?ð?ð?Z‡8`?<3ÏÀ?8@`ˆ‰b¯?Lªiá@ªð´UÚÛL@­¬BÈcïÎ?XV+ëk?iò²²¸•£?­À¦‡Ôô?ËÚrüÃ×’@Ÿgluôb@e@©däÝ/ @©d䛥ãT@©däÝ/ @©dåðoiC@©däÝ/ @©d凓ݘ@©däÝ/ @©dæ -¦L0@©däÝ/ @©dã× -=q@©däÝ/ @©d㢜wš@©Ô›¥ãSø@©Ô›¥ãSø@©Ô›¥ãSø@©Ô›¥ãSø@©Ô›¥ãSø@©Ôœ„µÜÆ@©Ô›¥ãSø@©ÔœPHð@©Ô›¥ãSø@©Ôœ]cˆf@©Ô›¥ãSø@©ÔœPHð@1¨†YJôñ@1¨Œç¯¸@-©7KƧï@-©7KƧï@-Œ1&éy@-Œ/ƒ{J#@+”`ªdÂù@+”Fs×Û@+”`ªdÂù@+”mÅÖ8‡@+”`ªdÂù@+”‡ü¹#£?É^³Dw'?ÖÈ ¼?‘.Ò®ó_ ?‹²MÿAÿ8?ðÌÇßgé?¾ƒìÈÁ?ÐbMçê_x?’#maЀ?ŽËÜ¿€?3.Ylî?ÚÌA B{?Uÿyu”#?€b¡´ñ@?Œ²ÅŒÕ6?‚2Y0âµ?‚éXëLL÷?†–f_ÔŠŠ?†l&þ@@@@@*@(?ð?ð?ð?ð?ð?ð¿Q´µ>שw5?3vV? >úAÑÐ}n@©däª×d©@©ÔœTñY?BÏ^9Çô?¯Q>Û…;?[d¦Ÿœ;? -¯·¸C3¾@Ÿs/÷[@f@Ÿ9‰7Kƨ@Ÿ9Z¡5›R@Ÿ9‰7KƨÁ.„€@Ÿ9‰7KƨÁ.„€@Ÿ9‰7KƨÁ.„€@Ÿ9‰7KƨÁ.„€@Ÿ9‰7KƨÁ.„€@œÀ©ûçl‹@œÀB5O@œÀ©ûçl‹Á.„€@œÀ©ûçl‹Á.„€@œÀ©ûçl‹Á.„€@œÀ©ûçl‹Á.„€@œÀ©ûçl‹Á.„€@7ÞHè§æ@7ö"LýïQ@3®5?|í‘Á.„M‰ûçm@3ÝV”Á.„QnÙ‡@2”mÅÖ8†Á.„NÜC,¥@2”mÅÖ8†Á.„NÜC,¥@2”mÅÖ8†Á.„NÜC,¥?|¬gvÃ×é@8#˜@8¾:@8 >+@8Iç@8Ù?ƒÑùÑc@8Î÷@8i§@8Å@8S@8û—?Ÿþã’ô™û@8 * @8p÷@8¶@8 Ø@8 Ø@ ?ðøøøøøøøøøøøøg@®mñ©ûçmÁ.„€@®mñ©ûçm@®mò×sü@®mñ©ûçm@®mòn—P@®mñ©ûçm@®mòˆÎp:@®mñ©ûçm@®mðØDÐ@®mñ©ûçm@®mðØDÐ@¨¼¯²-Á.„€@¨¼¯²-@¨¼¯–»š@¨¼¯²-@¨¼¯²- @¨¼¯²-@¨¼¯ìVÕÑ@¨¼¯²-@¨¼¯ùrGE@¨¼¯²-@¨¼¯ìVÕÐ@(oÅoÁ.„>¤µÜÆ@"¸“t¼j@"¸ -à @!ÉxÔýó¶@!ÉxÔýó¶@!oj@!oj@!oj@!oj@!oj@!oj@8 -Näy?°çR;?‘½ümüñ?‹Æ úJ-M?êtÿKÑc?´âµÇ>¬@82rê?’ aÒ¹zï?r¼Jsž?/ò×ÈZø?ÏtP°*?L "¾@8L?Œ¬8 T£?‚nâwg?‚â‡~ûÉ\?†‡hÉÈÓ?†‡hÉÈÓ@@@@,@&?ð?ð?ð?ð?ðøøøøøøøøøøøøh@žÇ1&éxÕÁ.„€@žÇ1&éxÕÁ.„€@žÇ1&éxÕÁ.„€@žÇ1&éxÕÁ.„€@žÇ1&éxÕÁ.„€@žÇ1&éxÕÁ.„€@¥I7KƨÁ.„€@¥I7KƨÁ.„€@¥I7KƨÁ.„€@¥I7KƨÁ.„€@¥I7KƨÁ.„€@¥I7KƨÁ.„€@8ëµsê´Á.„>¤µÜÆ@4=‘hr° Á.„M‰ûçm@3éÛ"Ðå`Á.„QnÙ‡@3ÚQÎÁ.„NÜC,¥@3ÚQÎÁ.„NÜC,¥@3ÚQÎÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøi@¡¢Cn—Á.„€@¡¢Cn—Á.„€@¡¢Cn—Á.„€@¡¢Cn—Á.„€@¡¢Cn—Á.„€@¡¢Cn—Á.„€@ž9éxÔýôÁ.„€@ž9éxÔýôÁ.„€@ž9éxÔýôÁ.„€@ž9éxÔýôÁ.„€@ž9éxÔýôÁ.„€@ž9éxÔýôÁ.„€@9%öý!ÿ.Á.„>¤µÜÆ@4i‡+ Á.„M‰ûçm@3®ùÛ"ÐåÁ.„QnÙ‡@2ýcˆe”°Á.„NÜC,¥@2ýcˆe”°Á.„NÜC,¥@2ýcˆe”°Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøj@¢,‹C•@¢+C•@¢,‹C•@¢0-à @¢,‹C•@¢.Ëû´@¢,‹C•@¢,1&é@¢,‹C•@¢/iDg8@¢,‹C•@¢-úCþ]@¬àò-V@¬àò° Ä@¬àò-V@¬àò¼¤@¬àò-V@¬àômÅÖ9@¬àò-V@¬àò•éá°@¬àò-V@¬à÷§†Â&@¬àò-V@¬àú–½@6²ÃÉîËû@6²ÃÉîËú@2° Ä›¦@2À[À6ã@2RÐå`A‰@2OªÍžƒä@1+xFÜ^@1)*0U2b@1+xFÜ^@1&Â&€J@1+xFÜ^@1&Ov_Ù?„F/·ÿP5?’g½þË£?‘Ëü²ü ?Œ ßõIyû?’Z†Ažj?’÷åâ6¹?}Ñ¿ž,?“í -Âô‚?’½N‹üHù?K·‘d]?‘žˆ2}?‘fû›1-&?‡9Â@0wæ?Ž•ýÙ—±?‰¢Ò+ÜÝÂå‡ãJ@¢,²G\@¬àõ=>°M?RPÿØ?_퀊O@‚?©¹kK¡tˆ?Ç_1G£@Ÿgò+6¦@k@¢Ím‘hr°@¢Ím‘hr°@¢Ím‘hr°@¢ÍnzáH@¢Ím‘hr°@¢ÍmV@¢Ím‘hr°@¢Ím‘hr°@¢Ím‘hr°@¢Íj=p£×@¢Ím‘hr°@¢Ík…¸R@¯–ÐbMÒò@¯–ÐbMÒò@¯–ÐbMÒò@¯–Ðå`A‰@¯–ÐbMÒò@¯–Ñhr°!@¯–ÐbMÒò@¯–ØbMÓ@¯–ÐbMÒò@¯–Ö‡+ @¯–ÐbMÒò@¯–Ë…¸R@4¹Œ~($@4C,¥zx@08r° Äœ@07 ù kº@/›dZ¬@/˜DЩ*@0«6z‘@0è>BZî@0«6z‘@0Cþ\‘Ò@0«6z‘@0^5?|î?ð°–Ž]?ð}óßd?ð’FB:?ð_ŒB?‘ …É¿¼?À­Õß}º?ð°–Ž]?ð¢dx/?ð‡äR³s?ð‚àÓÁ?’LÁŒÀ´a?lINõÕ„?ð*wjs—?ðfÁbÂô?ð*wjs—?ð,’Ú|‚?†ùadô|?†ˆ#.÷?ð?ð?ð?ð@@?ð?ð?ð?ð?ð?ð?T–£±0¿†Mm8 ?%D¬ê¦€?L=˜ë} ò@¢Íj׎ùä@¯–Ñ[ÉAÜ?$÷Y–÷?KðÄM°1Ò?7ñ„&pú?„QzÂê1C@Ÿxq6°äô@l@°T¼j~úÁ.„€@°T¼j~ú@°Usê³h@°T¼j~ú@°Sa@O@°T¼j~ú@°U%F -¦@°T¼j~ú@°SS÷ÎÙ@°T¼j~ú@°R©“ á@¦5³3333Á.„€@¦5³3333@¦5µÂ\)@¦5³3333@¦5µfÏAó@¦5³3333@¦5¼j~ùÜ@¦5³3333@¦5¶z—@¦5³3333@¦5»J#9Á@8ÿ–»˜ÈÁ.„>¤µÜÆ@3Š^5?|í@3Š…‡“ݘ@2ûƧï²@2üÓZ…‡”@2OO „M@2Mw1Å@2OO „M@2O\(õÂ@2OO „M@2WOß;d@8J¨?’ãy)­3c?“›ÿ3?Ô@R’?’š'†­`í?•¬+ÌYI˜@8J¨?“ÈÂ`?’F^ì¼Sï?íu…XÚ?’£ôùÎ8ï?“®°ýYè@@8p÷?Ž.]L ¼?Š[¦Råb?…âC£½¾Ý?‡Ä­‹›Ü?”dIt£©P@@@@,@,?ð?ð?ð?ð?ðøøøøøøøøøøøøm@­*I7Kƨ@­*H´9X@­*I7Kƨ@­*I7Kƨ@­*I7Kƨ@­*F?@­*I7Kƨ@­*I“ àÞ@­*I7Kƨ@­*G+ J@­*I7Kƨ@­*GÕfÏB@§D›¥ãT@§DÝ/ @§D›¥ãT@§EÉä@§D›¥ãT@§E¸Qì@§D›¥ãT@§F€IR@§D›¥ãT@§D%®æ2@§D›¥ãT@§DêJŒ@5·â‚@·€@5¹b¶®}@1€ Ä›¥ã@1€ quŽ@0È“t¼j@0ÇsüPH@/fL/ƒ{K@/f -¦L/„@/fL/ƒ{K@/fÏAòØ@/fL/ƒ{K@/f$Ý/ ?|¬Çëý ?ï1ïºÅ?‘e -!ßC?‹¬àÌ’Ç?üEÙáõ{?‘ ê$4Ÿ?1·†Æjñ?’uß¿çÒ?‘N÷J’?0ÜN :s?ë,YÁ? êBÐ8ã?…ÑTë0Ó?lío>÷?ƒ!A -mº¹?ƒÛ®«etZ?†¼Š˜L¥÷?†©b/bJö@@@@@(@*?ð?ð?ð?ð?ð?ð¿%¢Ú, >îØOe?-Y?ÜW‘?.{æèá@­*Hsô.ä@§Eƒ¤"?MOx_YeÉ?NûMC÷7e?§ -¤yH?§vÕDó@Ÿg.“¿7@n@§çÖ‡+ @§ç×Oß;@§çÖ‡+ @§çÙ¦µ @§çÖ‡+ @§çØï4Ö¡@§çÖ‡+ @§çÖð¹@§çÖ‡+ @§çÕéá°Š@§çÖ‡+ @§çÔÉ…ðp@ å¢Ðå`B@ å¤Ý/ @ å¢Ðå`B@ å¢ÞÑ·@ å¢Ðå`B@ å¤÷eýŒ@ å¢Ðå`B@ å¡£n.²@ å¢Ðå`B@ å¢‚@·€@ å¢Ðå`B@ å¡aä÷f@6|ÚQ@6\(õÂ@1…?|í‘h@1ƒˆe”¯O@1²-V@1±Ä2ÊX@0L¿±[W?@0L"h Ô–@0L¿±[W?@0L(õÂ\@0L¿±[W?@0L"h Ô–?…ÅBðrç?•ìspîî?‘`×›mÏ?‹ÝÉ!ë#?‘5ø gµÒ?‘C!ƒžÈ?|¬Çëý ?“$i «%h?低NëU?CÚ B÷?ñ«Ý„ Õ?‘¡ë Þf?‚|׿pY?Œþ%å_D?ƒ´],m=?ƒ*|š\/´?†Ë¢L1Ù?‡L8õASÎ@@@@@,@,?ð?ð?ð?ð?ð?ð¿?Íi(¿GÛõ­ð? ·Ð=lj?']39ø@§çÖŒFNF@ å£ >&¢?@‡2¾L_?HÑ™-fHø?„¦EKüël?G_XWž›@ŸhœÕzz@o@°†éxÔþÁ.„€@°†éxÔþ@°A‰7L@°†éxÔþ@°Em\ú­@°†éxÔþ@°v1ø @°†éxÔþ@°ÕðoiD@°†éxÔþ@°³©*0U@­²-VÁ.„€@­²-V@­,/ƒ{I@­²-V@­bu%F @­²-V@­^\‘ÑN@­²-V@­ì~($ @­²-V@­ø“t¼j@8õS&Á¾Á.„>¤µÜÆ@4k¥ãS÷Ï@4*™0¾@3†“t¼@3ÒˆÎp;@2ÜÚQÎ@2>Ëûµt@2ÜÚQÎ@2(šu%F@2ÜÚQÎ@2=Ùb¶¯@8J¨?ÚW…ËÞ©Ÿ?Òš«÷9ƒ?ÔTE|÷?Ï÷ª\Ù¹?ˉ4+½ö@8J¨?Ô2?Ó ¶ÿ”?Ò`k£Y›?Ñ0ÂÑ-+þ?ÎMQcçó@8p÷?¨F¦Â p•?žÇ™žsŠ?©{ïÖ/!?«)¿ÜÚv¹?ÊtéÑXñr@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøøp@ª‘X“t¼j@ª‘^vÈ´8@ª‘X“t¼j@ª‘\¬1(@ª‘X“t¼j@ª‘e`A‰7@ª‘X“t¼j@ª‘]/Ÿ½@ª‘X“t¼j@ª‘T9Xb@ª‘X“t¼j@ª‘]cˆe•@¯ àÄ›¥ã@¯ á‰7KÈ@¯ àÄ›¥ã@¯ éûçl‹@¯ àÄ›¥ã@¯ éûçlŠ@¯ àÄ›¥ã@¯ í‘hr¯@¯ àÄ›¥ã@¯ äZ¬@¯ àÄ›¥ã@¯ ãS&@5-¥œàv@5¥zxl"@1¡hr° Ä@1›quŽ!–@0’Ðå`A‰@0O „M@0J0U2a|@0C¶E¡ÊÀ@0J0U2a|@0EÖ8†YK@0J0U2a|@0EL˜_÷?гá‡}?ß‹’bÏ?‘*"AaIÐ?ŒôƒA˜c ?”] -° ?—oN„R?|öOÿÝ?’ñ©ûçlŒ?”ÿŒÙÿIí?“ä$š„…œ?‘¾ãazÅ?” ™¾,?6´×–°?¨ ‰‹U)?‡þ:ó-êÏ?Œ(æQ?гá‡}?‡æê7²zE@@@@@@?ð?ð?ð?ð?ð?ð¿Q—fë@?N.ð?Ræ§/Î2?S0œI_J@ª‘[ÿUÕú@¯ ä9l?qY -Kôh?t‰ßX´‹?àë‘Sh›?ðJ¦^à@Ÿh]œ¡@q@¬)s¶E¡Ë@¬)s¶E¡Ë@¬)s¶E¡Ë@¬)t¼@¬)s¶E¡Ë@¬)u?|í‘@¬)s¶E¡Ë@¬)tã¼Ó\@¬)s¶E¡Ë@¬)uϪ͠@¬)s¶E¡Ë@¬)v4ê@£þKC•@£þKC•@£þKC•@£þLIº^5@£þKC•@£þJÀƒo@£þKC•@£þLÌÌÌÍ@£þKC•@£þM„M;@£þKC•@£þK¬q ³@4 Î_oÒ@4 Î_oÒ@0©‡+ @0¨­«ŸU›@0Ct¼j~ú@0B‚@·€4@0œàu÷@0M:’£@0œàu÷@0•$Þ@0œàu÷@0¯·éù?|¬Çëý ?Čۨ1A?‘1f_¨Ï÷?Œ9‚Ù.?‘\Žýµ€7?âé¨ë7F?|¬Çëý ?’ ,øÕC©?|™,Ž!?‘!¥zt9Û?‘¾ãazÅ?½y ¦Å?ƒíÈm½!¾?2ô]7?‚uÞ@>N ?„l¯¸‰ŒÎ?‡×7°º?‰G±±ZÎ@@@@@,@$?ð?ð?ð?ð?ð?ð??ÿ${?2ªÜÆ8>ýÄÆFvS?+OØ<Qç@¬)tÁ|‹ø@£þK÷ž‘ô?ø|æ4`y?K×K¾œ}O?F†nNlñ3?£Y°Šm²‚@Ÿf¾ÿù²ƒ@r@¤)8Ôýó¶@¤)4záG®@¤)8Ôýó¶@¤)=IQ‚ª@¤)8Ôýó¶@¤)64ê@¤)8Ôýó¶@¤):¹õY´@¤)8Ôýó¶@¤)6E¡ÊÁ@¤)8Ôýó¶@¤)5Ž!–R@ª¹XbN@ª½²-W@ª¹XbN@ª»quŽ"@ª¹XbN@ª¸l"h -@ª¹XbN@ª¹XbN@ª¹XbN@ª¼¹#¢@ª¹XbN@ª»quŽ#@5Q|ÚQ@5HüPHð@3#÷ÎÙ‡@3% '»0@2È“t¼j@2Ê)Çy¦µ@2cÉîËû@2g -=p£×@2cÉîËû@2hË’:*@2cÉîËû@2fµ '¼?’Óusÿ\Ã?‘+ùÔ!½Š?’ʶ‹ùs?,¡r×gÁ?’yÊêºq?“DŽèw–?Ž=fA:?“oÆ †ä?“Z—H|:?’‘Ç#·X?“Al.6¸?’Ü·Õ-í?®¨žŽ´Ä?Žƒä%®æ2?ˆdÁ --?…®×__C?‰G±±ZÎ?ŠEÝ‹N@@@@@(@*?ð?ð?ð?ð?ð?ð?'Ma¿;&ýÁ¨?P` ý€@}?@÷{ÂÐH@¤)7×H+@ª»ä-ˆ(?lTåNÿÁ?`ˆ¿«†%?Ó¬ÛI'X?»f`mð@ŸkÖÒ[H¨@s@«®V“u@«®?|í‘h@«®V“u@«®<(õÂ@«®V“u@«®±Ä2ÊX?™™™™™™š?˜ଚÿw? bídC?£~fܤžv?ªG6NïÌM?Õ¨:Jê0?¢F^ì¼Sð?¢56Q‘?˜ºµ²¢Dœ?¬ôbŸyp?§Ò;~ë`?æÜ-j²í?Ãz00‘!µ? ”w}'bŠ?“àÕèéa‚?§ÅhÒ?O?šJ¹Ê¿?Ácg—–î@@@@@*@&?ð?ð?ð?ð?ð?ð¿Äѳ5h?ÞÚï- š?½îÈd?Íæ…•Ì0@«­:ŠcÇ @¬€ÝÐxSØ?Ùt’a"T?év…g`õ @…ïWV2—@Ÿ/Àa8 -@Ÿdõ& »@t@°f$Ý/Á.„€@°f$Ý/@°g®zá@°f$Ý/@°j’£S@°f$Ý/@°m²-V@°f$Ý/@°f4ê@°f$Ý/@°eY³Ð}@¥áÎÙ‡+Á.„€@¥áÎÙ‡+@¥á¹rGE9@¥áÎÙ‡+@¥á¸­«ŸV@¥áÎÙ‡+@¥áÇ+ J@¥áÎÙ‡+@¥á¶z—@¥áÎÙ‡+@¥á}¿H@8£g ù lÁ.„>¤µÜÆ@4» Iº^@4ªW§†Â&@3çKƧïž@3ÕÖ8†YK@2ÿò䎊r@2õÜÆ?@2ÿò䎊r@2óŽóMj@2ÿò䎊r@2ó àÞÒ‰@8J¨?©=Ùb¶®?¶ÚÔ&‚¶ï?,¡r×gÁ?™Ä¶BϪ?˜ñ<óâg…@8J¨?°Þl²`Û?°lVbjÞ?˜šGja7Ü?¡%£å“J÷?°Îºaa@8p÷?—ì;!ðß?§Ì/¹¸ ?ϯ<«¬í?“vuØcʲ?“KÌ&¨Í@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøøu@Ÿh²-V@Ÿh Yž×@Ÿh²-V@Ÿhiæ¹ ^@Ÿh²-V@Ÿh’Ñ=j£@Ÿh²-V@ŸhŽ*Ák2@Ÿh²-V@Ÿh„–Ìe @Ÿh²-V@Ÿh—’[+@¤k{dZ¬@¤kw±ëøÓ@¤k{dZ¬@¤k€aa͸@¤k{dZ¬@¤k‚ÄÕ@¤k{dZ¬@¤k­€7³œ@¤k{dZ¬@¤kqa»¹È@¤k{dZ¬@¤kWh+Ô¢@62ÃÉîËû@63ÅÙrzä@2.5?|í‘@2¬0¨@1Z~ùÛ"Ñ@1o¡¿x@0¨è§æ›@0 ôKC@0¨è§æ›@0œ|uøT.@0¨è§æ›@0œ%¸¿‰Å?~Ov_Ø­«?“ê„bøÙ~?¤Ë{LÞ!vÈ´:@¦€B\(ö@¦€;J#9Á@¦€B\(ö@¦€L¥zxl@¦€B\(ö@¦€UfÏAò@¡‰å`A‰@¡‰ ‘hr°@¡‰å`A‰@¡‰ÜÆ?@¡‰å`A‰@¡ˆù¦µ @¡‰å`A‰@¡ˆð:û~‘@¡‰å`A‰@¡ˆè Ô•@¡‰å`A‰@¡ˆêçÕfÏ@7Î쿱[X@7ÐN¤¨ÁV@4+¥ãS÷Ï@4ÉîËû@2ö§ï²-@2ÝVlô"@2ÜÚQÎ@2®šu@2ÜÚQÎ@2Á-w1Æ@2ÜÚQÎ@2Â&€IR?žŒÝÙ›P?œ%“=ý7"?®ußãz?»&ìS¢FË?£ˆ¸óùé?©Â±|ºÏ?|öOÿÝ?Ÿ#ïÀŸª¸?§¿Ÿ.ój ?°€Û=M”6?¬NÀ®Z×­?­‚‰%TUx? T®ãÌ…æ?®ÄAIŠa?®›©L Ý/?·wZR)w?œ¸a<›ú?¤A8 Kú¿@@@@@,@*?ð?ð?ð?ð?ð?ð?iOLf¿(Ó`U@?S'mÒŸ©?Qó9>˜2@¦€H•I…Ö@¡ˆûÖÁ§/?t Öøp»?rvx|÷\m?¼É‚ˆu»?¿ß}[¤Þ@Ÿfk¦^’@x@Ÿ¢Ðå`BÁ.„€@Ÿ¢Ðå`BÁ.„€@Ÿ¢Ðå`BÁ.„€@Ÿ¢Ðå`BÁ.„€@Ÿ¢Ðå`BÁ.„€@Ÿ¢Ðå`BÁ.„€@“i%ãS÷ÏÁ.„€@“i%ãS÷ÏÁ.„€@“i%ãS÷ÏÁ.„€@“i%ãS÷ÏÁ.„€@“i%ãS÷ÏÁ.„€@“i%ãS÷ÏÁ.„€@5ÉÎ_oÒÁ.„>¤µÜÆ@2Š^5?|íÁ.„M‰ûçm@1×ï²-Á.„QnÙ‡@1O „MÁ.„NÜC,¥@1O „MÁ.„NÜC,¥@1O „MÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøy@¥lýó¶F@¥lýó¶G@¥lýó¶F@¥lzáG®@¥lýó¶F@¥l?|í‘@¥lýó¶F@¥lâëB@¥lýó¶F@¥lø .@¥lýó¶F@¥lüPH@f Ä›¥ã@f Ä›¥ã@f Ä›¥ã@f£S÷ÎØ@f Ä›¥ã@f¡ÿ.Hè@f Ä›¥ã@f²-V@f Ä›¥ã@f©ûçlŒ@f Ä›¥ã@f¨Xy=Ù@3G>«6z@3H $ p¹@/f§ï²-@/a–R½<6@. ƒn—@.e+ÓÃa@,½Vlô"@,²T`ªdÂ@,½Vlô"@,³g ù l@,½Vlô"@,³Ãa@O?}@T˜ÁÎ¥? ÿ1‡åH?‘G¿yÛ?ï?‹¬àÌ’Ç?‘à2F0µÔ?‘&¶Gf¡?|¬h2:“?’Dê™.x?ŠA)Nîá?6) }’ë?’˜£“µ~Ð?‘ ‡#é -´?‚nÚ¨´8Ð?3I¶#i?‰ì ª# Ù?‚þ——³§ø?‡×7°º?‰®ââP\@@@@@,@,?ð?ð?ð?ð?ð?ð¿4ÍuP?G5»­4?>î3u=8g?@Ni=Þ®@¥l‘6¶@f£W?I?^eËÊø6š?`wë\F ?È*bVËŠ?ÊÛFóôÓÁ@Ÿf¥§ÝU@z@ŸH+ JÁ.„€@ŸH+ J@ŸH zV[t@ŸH+ J@ŸH"ÌNÐ_@ŸH+ J@ŸHì¶m@ŸH+ J@ŸG÷ša@ŸH+ J@ŸH·}þ@ª÷´9XÁ.„€@ª÷´9X@ªöÿ;R†@ª÷´9X@ª÷KÛÄì@ª÷´9X@ª÷ -Á÷·@ª÷´9X@ª÷ !ÚÙÙ@ª÷´9X@ª÷Z:û@6è†YJôñÁ.„>¤µÜÆ@2Œí‘hr°@2’±$¡æ@1¬j~ùÛ#@1²¿²óÚÒ@1+xFÜ^@1+j1¿Ü@1+xFÜ^@1*ÈX™sU@1+xFÜ^@1+Táâ+ì@8J¨?EkĤ¥?ŸÍŒóɼµ?“ -Aí?’&«>šç“?’V)WE7A@8J¨?“Po³SÖ?–ReItû{Ñø~?™f÷ȹ}h?š•§q!U?”n‹rÕ|?“ |ɽ‡?°‹Œ÷€?’pP‡È»?˜ú³¬Ôë?«ÓÎôy…z?ŽOv_Ø­«?‹ÛÛÐïF?ŠÒ(>—œ ?>LR_5?^²®':Ì@@@@@*@*?ð?ð?ð?ð?ð?ð¿^êž@?b}¢`?U -ݵ€Îì?C!ª9:‰‚@©fOBK¼@®E5¿)?sã–=šø?\¢ã]A¯?äB€`oì¥?®‰Þ1ÿÊ@ŸkîJçÌ@|@¡‹!G®{@¡‹!ÊÀƒ@¡‹!G®{@¡‹#•$@¡‹!G®{@¡‹#× -=r@¡‹!G®{@¡‹%o@¡‹!G®{@¡‹!°‰ '@¡‹!G®{@¡‹!ò×s@«Ò“t¼j@«Ò“÷ÎÙ@«Ò“t¼j@«Ò”záG®@«Ò“t¼j@«Ò‘Å@«Ò“t¼j@«Ò–âëC@«Ò“t¼j@«Ò•Ž!–S@«Ò“t¼j@«Ò•éá°‹@4‰Î_oÒ@4‰­BÃÉð@2J^5?|í@2J’£S&@1Ãt¼j~ú@1ÃÉîËû@1^«6z‘@1]ã¼Ó[@1^«6z‘@1]<64@1^«6z‘@1]ÌcñA ?|¬Çëý ?Čۨ1A?’´ýBI{?Žl¢¦µ¥?‘×´<î¯j?’Ýå"çX?|¬Çëý ?’ -‰¸Ì?‘ú-8ûõö?½¶³±×ò?‘އ Àí?ÝÒ¥X[?ƒ´],m@0U`A‰7L@0UÂ\(ö@/b¶®~@/¬1'@/b¶®~@/…‡“ݘ@/b¶®~@/¬1'?€‚ñêã ?Òç{íj?‘K]Ã4?Œj6_?‘¾%î -ã?æöæ×t?|¬Çëý ?’¼  g¶?ÙšlqùÚ?· ÝûYÁ?çêÑHcÇ?sxÙ/T?‚‹¡8*ùÿ?Œ».êxóÚ?‚uÞ@>N ?ƒE 8?†Ë¢L1Ù?†µ°jÆÃ@@@@@(@(?ð?ð?ð?ð?ð?ð¿œÝDÀ?!¼]SÐ?;5ì¥ì7G>ï¬J@¤JRP$@¢«ìôM?[ .‚G…ê?ÓÏYä?ÁÕS ã½?*£u¸¢@ŸglR|àê@@©agl‹C–@©a{¥ãSø@©agl‹C–@©aféxÔþ@©agl‹C–@©aixÔýô@©agl‹C–@©aa$Ý0@©agl‹C–@©aiÞÒ@©agl‹C–@©abu%F @¦µ?|í‘@¦¬Iº^5@¦µ?|í‘@¦°Hð@¦µ?|í‘@¦»‹¬q @¦µ?|í‘@¦¶È´9X@¦µ?|í‘@¦·1Å@¦µ?|í‘@¦¸­«ŸV@9h†YJôñ@9Fs×Ûô@4{ Iº^@4‚ÊW§†Â@3>V“u@3DzáG®@2ó&Á½¥@2ù“ àÞÓ@2ó&Á½¥@2ú^5?|î@2ó&Á½¥@2úŸ¾vÈ´?¬c°Åxt?”Øÿ4ÙKl?[_œ(Ä?“1ÕËt?™póK ?–‹ƒüMAG?¿VŒ†?•ÞèI1Æ@?“Ú%¿»8?‘~¬Àm?ó?›44]Åùs?™rÊêÚ×þ?”US9úÅ?—0b])‘? “˜¯ÃÛ?‰öuП—?Œúq‘?‘À³ûê%§@@@@@(@(?ð?ð?ð?ð?ð?ð¿_ŒLyÆ?QR#~?i¹滸¹?Bä5!Öb@©adÁ ¾@¦·9HÙ%?Wq¢§?S¶eâ?éÍK -?í?’3âgsw@Ÿpý×hÉ@€@«Ô‰7KÇÁ.„€@«Ô‰7KÇ@«Ô†€IR@«Ô‰7KÇ@«Ôqø .@«Ô‰7KÇ@«Ô‰7KÈ@«Ô‰7KÇ@«ÔlIº^4@«Ô‰7KÇ@«Ô`N¤¨Á@ „ -=p¤Á.„€@ „ -=p¤@ „üPH@ „ -=p¤@ „&€I@ „ -=p¤@ „„µÜÆ@ „ -=p¤@ „ Çy¦µ@ „ -=p¤@ „쿱[@9D¯O „MÁ.„>¤µÜÆ@4&‡+ J@461ø .@3ä¼j~ùÛ@3ê6âëC@3 ¿±[W?@3*0U2b@3 ¿±[W?@2ÿiDg8@3 ¿±[W?@2ïªÍžƒä@8J¨?–ª'G_ßI?š6õÂ\9?•ƒäôKwö?Òß© ÷?¨ÅkÊL@8J¨?œ_lWF_‚?•ƒäôKwö?•GÝóuS—?¨ykz4q>?¶cœô:l@8p÷?›’qvš°“?œÚ.ô §Æ?›ø×…N?šðún¤D.? hvÅÜk@@@@*@,?ð?ð?ð?ð?ðøøøøøøøøøøøø@§± -=p¤@§±%¸Qì@§± -=p¤@§±#ˆe”¯@§± -=p¤@§±ãS÷Ð@§± -=p¤@§°é 'RT@§± -=p¤@§°ò¼¤@§± -=p¤@§± qu@£>’n—P@£>“t¼j@£>’n—P@£>œ¾ß¤@£>’n—P@£>“Ð|„¶@£>’n—P@£>ŠÚ¹õ@£>’n—P@£>¥S&Á@£>’n—P@£> Ä›¥ã@8cg ù l@8TðØDÐ@6Iº^5?@6(Xy=Ù@5¬j~ùÛ#@5ȧæšÔ@5Öý!ÿ.I@5Ü¥zxl#@5Öý!ÿ.I@5×®záH@5Öý!ÿ.I@5á [À7?œä%—ëš?¸äï È,[?¯e2½è¾?¢º™ÁLŠ?ÅÒV#m¤?»zòkŸ?•²»UbB2?¬'ø'5?¿Á° ›_¶?ŸjÝá3(?Çí¤ëëí?½åǪrý»?³±’W_æl?¦"55A;?¾ï€SÓÌ?µÅ8'Œe?¸œ›Z|?¸3éYÀ4¨@@@@@,@(?ð?ð?ð?ð?ð?ð¿…}\@?m~Úê?|VŠÏ?:¼ÿm#@§±¢Ñ3›@£>™ÂA#?•Är%b?TAúõ,?üçiëñÕ?€áPlu×@Ÿca$Õ†.@‚@ªhr°!@ªE¡ÊÂ@ªhr°!Á.„€@ªhr°!Á.„€@ªhr°!Á.„€@ªhr°!@ª“u@ªhr°!Á.„€@®ýå`A‰@®ý‡+ @®ýå`A‰Á.„€@®ýå`A‰Á.„€@®ýå`A‰Á.„€@®ýå`A‰@®ý4êK@®ýå`A‰Á.„€@7Ñ|ÚQ@7ÑA [À@3GÎÙ‡+Á.„M‰ûçm@2ä¼j~ùÛÁ.„QnÙ‡@2=cˆe”°Á.„NÜC,¥@2=cˆe”°@2Cä%®æ2@2=cˆe”°Á.„NÜC,¥?²Æ—ÕŒ@8#˜@8¾:@8 >+?”§RXFÖf@8Ù?›’qvš°•@8Î÷@8i§@8Å?¡ºøò¤âÍ@8û—?¬É…À±.Á@8 * @8p÷@8¶?•°QŸ?]Í@8 Ø@@?ð?ðøøøøøøøøøøøøƒ@¯9ˆ1&éy@¯9ˆ1&éz@¯9ˆ1&éy@¯9‰º^5?@¯9ˆ1&éy@¯9‰*0U2@¯9ˆ1&éy@¯9‰7Kƨ@¯9ˆ1&éy@¯9†ö”Fu@¯9ˆ1&éy@¯9‡Ë)`@¦N(@@@@@(@(?ð?ð?ð?ð?ð?ð¿P8'vä¿:n$p?6ϳ˜ —2?v4é;F@¯9‡çÔ}J@¦N<íàjo?EïÒ ¸Ò©?w: t?‡¢ÛÛz8N?1Ç}UÎ@ŸsÊÇ0@„@ªÂ™™™š@ªÂ#•%@ªÂ™™™š@ªÂÎÙ‡@ªÂ™™™š@ªÁíqu@ªÂ™™™š@ªÁÀ4mÅÖ@ªÂ™™™šÁ.„€@ªÂ™™™š@ªÁ´,<ží@•eTýó¶F@•e]/Ÿ¿@•eTýó¶F@•b§ ù l@•eTýó¶F@•bëŸU›<@•eTýó¶F@•a4SŽóM@•eTýó¶FÁ.„€@•eTýó¶F@•b_U›=@8Bò䎊@8,¹'Ÿf6@3°Ä›¥ãT@2õýŠÚ¹õ@3²-V@2™b¶®}@2𖻘Çã@2Ù‡+@2𖻘ÇãÁ.„NÜC,¥@2𖻘Çã@2Z™0¾ í?ª«´ØJµ?µIÌU0âƒ?Ñ«·^š–Š?Ô,‚}¯@8Iç?Г¬í²k’?¨)n•­j²?ÖÑvɃè?á‘´-;Œ?ã'Çg.@8S?Øö(0$d¾?®ÏâÆ©×{?¶¯V#Q5?ÂúŸeŸ†í?ººz«ž®@@8 Ø?Ášíùˆ¿Õ@@@@@(?ð?ð?ð?ð?ðøøøøøøøøøøøø…@¯m‘hr°@¯mOß;d@¯m‘hr°@¯n¾ß¤?@¯m‘hr°@¯n!–R½@¯m‘hr°@¯nzáH@¯m‘hr°@¯l¿±[W@¯m‘hr°@¯m:’£@©¶KC•@©¶KƧïž@©¶KC•@©¶IÔ•,@©¶KC•@©¶JŒL˜@©¶KC•@©¶KƧïž@©¶KC•@©¶KC,¥@©¶KC•@©¶JW§†Â@4™*0U2b@4™ k¹Œ~@0°Ä›¥ãT@0°N¤¨ÁT@0PA‰7KÇ@0O²-V@/b¶®~@/7´¢3œ@/b¶®~@/0¾ í)@/b¶®~@/b¶®}?|öOÿÝ?Úþþ³?‘œÁùãJC?‹ÝÉ!ë#?‘çG¸?ïˆ6ÏJ?|¬Çëý ?’ ,øÕC©?Ê -ä\ä?Hª¦ºón?‘ ^Íü?ÿ? êBÐ8ã?‚ÂÌ]å?ŒÆò/¢äÍ?‚¸“Îè ø?ƒ†+ Å?†©b/bJö?†Ë¢L1Ù@@@@@,@*?ð?ð?ð?ð?ð?ð¿Ü3x¿,«[ ?"0H‡Š(?A¸üˆ¨m@¯mQMëQ@©¶KZ¤VÄ?B…`Áç?7£ÏTšçÔ?‘’²&?|ÚX¦çž@Ÿfãë­â@†@¡æß¾vÈ´@¡æâÐå`B@¡æß¾vÈ´@¡æâ\(ö@¡æß¾vÈ´@¡æÞÅm\û@¡æß¾vÈ´@¡ææéxÔþ@¡æß¾vÈ´@¡æá‰7KÇ@¡æß¾vÈ´@¡æÞÑ·@«J=p£×@«J~ùÛ#@«J=p£×@«EF -¦L@«J=p£×@«DêJŒ@«J=p£×@«IîËû@«J=p£×@«Iá°‰Ÿ@«J=p£×@«F$Ý/@7?–»˜È@7DÂø7´¢@3ë¥ãS÷Ï@3å¡ÊÀƒ@2ÒÐå`A‰@2Ð:û~‘@2‚‚@·€5@2}5¨Xy>@2‚‚@·€5@2v_Ø­¬@2‚‚@·€5@2z¹õY³Ñ?‚á²Olºü?”û#T©È?’>¯\¾¦?•3ö¬' ó?—vÑékÜ?—,¯&€â=?œä%—ëš?™ìôº¥Ï?“?T¾¹µ ?¡"JîÃ!?™‹ôM`¨%?”Ö|HKr^?†ž5ðqê?”àÝ×K?’µ~Yºì?Š>ÚµÕ?“áêqú ?”¼íÒh@@@@@@*@$?ð?ð?ð?ð?ð?ð¿<Ë.‚È¿J(%ù€?I.K¢þ¨®?>òS!ä§@¡æâá˜r@«HóP˜,?mæNwú¥?](vœV©?ÒK¦…3ëô?¢Ñ®¯r,@Ÿl&·@‡@ª“¢Ðå`B@ª“¹XbN@ª“¢Ðå`B@ª“¢MÒñª@ª“¢Ðå`B@ª“¥F -¦L@ª“¢Ðå`B@ª“¸bMÔ@ª“¢Ðå`B@ª“²:)Ç{@ª“¢Ðå`B@ª“¶‡+ @¢!G®{@¢ýó¶E¢@¢!G®{@¢¾vÈ´@¢!G®{@¢"ø7´¢@¢!G®{@¢$Ý/ @¢!G®{@¢Xâ@¢!G®{@¢áG®@8Œ]cˆe”@8šxl"h -@4c÷ÎÙ‡@4` Ä›¥ã@3´“t¼j@3°ò{²þÆ@3+xFÜ^@3)ÀëíúD@3+xFÜ^@3#©*0U2@3+xFÜ^@3!£n.±Ä?Àh’AÝà§?‘­b š=?•lÚ®¡õµ?‡{@áè?“ £Ê­?¨ÅkÊL?‚á²Olºü?•Ð\ÄÙ?˜Y ¶E–X?“3ÏÇF0?• ¸°R¨?¡§î•½y?ÅuIE ²?’òÌ&Œ®3?•¶°nÎf¯?•·Ûïk6¿?¦«DðL?›€*:€R}@@@@@@*?ð?ð?ð?ð?ð?ð¿eú¶Ù?€MgPÐ@?YÈ£_C?i潊N:@ª“µ­zâ@¢©e˜?d3Ô$Ñó?‘4e Ô -?·­ÑŒ²Dœ@ ÁHcÅÚ@Ÿo¤åL‘j@ˆ@§‡´9Xb@§‡´9Xb@§‡´9Xb@§‡µ*™2@§‡´9Xb@§‡µ$Ý@§‡´9Xb@§‡´ýó¶G@§‡´9Xb@§‡³@N¤©@§‡´9Xb@§‡³@N¤ª@¦ágï²-@¦áh1&éy@¦ágï²-@¦áhÎp:ü@¦ágï²-@¦ág“Ý—õ@¦ágï²-@¦áh1&éy@¦ágï²-@¦áh1&éy@¦ágï²-@¦áhXy=Ù@4è†YJôñ@4è Ô•*@.²-V@.¸ºÇ@,ÊÀƒo@,‚&€IR@*-úCþ\’@*.V“u@*-úCþ\’@*-í(Œç@*-úCþ\’@*.záG¯?€‚ñêã ?Ï[äe?Uÿyu”#?ˆAᆽÃì?Œ¯þuõí?‚yî8Á$?‚æÊ¬vã?†‰Oú|q?†’Õaì+’@@@@@&@&?ð?ð?ð?ð?ð?ð¿#tÙ!>ó >ƒ€?(–PÖ`Ž<>ìÞ£d?´‡@§‡´B*¬@¦áh9ëfô?H~`´k? ½™ 'a?‹8âì3?%hwû¿nº@Ÿgů:y¢@‰@£¨dZ¬@£¨d~QÚ$@£¨dZ¬@£¨hGlÏ@£¨dZ¬@£¨^Ðp@£¨dZ¬@£¨iV<~û@£¨dZ¬@£¨g±Mkc@£¨dZ¬@£¨fU@–U¸Që…@–U»çl‹D@–U¸Që…@–UÁg¸×ÿ@–U¸Që…@–UÏ*Wj{@–U¸Që…@–U¼6‰V@–U¸Që…@–U¿’á'X@–U¸Që…@–UÑPÒç¼@6Hè§æ@6²÷Sˆ@3+¥ãS÷Ï@33ÑiË@3t¼j~ú@3ìV62@2á:’£S@2ïK^¢D@2á:’£S@2é­R)®@2á:’£S@2èIŒ'º;?ƒÔo"ë–?“£îömªN?§àqg8¬?ž¸«~j@t?“È}vk·?“eÁá}B?€Ã{s°úi?”•âxm?ŸßXFZ\=?—•ž*d7:?—q•ŠbtÁ?‘ÅTóÅ—?…€vqGœ¨?•ŸN#9·?fÿ;ö?˜ßµ_Oa?“röW÷ì?z5Kï@@,@(@(@5@0?ð?ð?ð?ð?ð?ð?CœõÈ?Zç†Õ·?5ô -„Š6ú?H»B¬hÓ@£¨eùµM»@–U‹Ëå´?WW–‘ÈÓ?iÂUôÐý?°UñýiYp?×ÄuA6›@Ÿg_?<"Ø@Š@­.—Oß@­/Ÿ¾w@­.—Oß@­"ø7´¢@­.—Oß@­'¯·é@­.—Oß@­)ã½@­.—Oß@­#S÷ÎÙ@­.—Oß@­)7Kƨ@ž^záG®@ž^}p£× -@ž^záG®@ž^‘·Xâ@ž^záG®@ž^¸Që…@ž^záG®@ž^°¸º@ž^záG®@ž^§ÕfÏB@ž^záG®@ž^Ÿ;dZ@5cg ù l@5b¼£n@3GÎÙ‡+@31×Ûô‡ü@2Æ“t¼@2«/ìVÕÐ@1î_oÒ @1Ùb¶®~@1î_oÒ @1Ù*0U2b@1î_oÒ @1Ö4êK?‚á²Olºü?‘J–?-.º?‘£Ä›è?‘£ºáõÑ?‘§›ßÉîj?’u¹k‚=?|öOÿÝ?“ÈÂ`?œT¹o¿‹õ?”A8 Kú¿?’¯dL¶t?’µ~Yºì?ƒÆ×q„nï?[™ÕÈ™8?‡YÍ`?„À"aËô??‰®ââP\?‹aÊ•TI@@@@@*@$?ð?ð?ð?ð?ð?ð¿_$zÙ?s0•­˜€?Hõ—UÕ5?[EO?¤3@­*‘"½¡@ž^“Ð1L?i­®©#¢?|td›à‰A?Ø~‡Ñ°¶@¸ïä,ÝÌ@ŸgK½êÞg@‹@«òY‡+@«òXQë…@«òY‡+@«òX÷c -@«òY‡+@«ò[n*ó‹@«òY‡+@«òYÉêH@«òY‡+@«òXà<+k@«òY‡+@«òXÁî}@™ŒzáG®@™ŒÒ»@™ŒzáG®@™Œ%¬'’@™ŒzáG®@™ŒÁÛO²@™ŒzáG®@™ŒÔ «5@™ŒzáG®@™Œ®}Vm@™ŒzáG®@™Œ2a|@7¨†YJôñ@7¥_×Ö½=@3i‡+ @3jæ¥ †v@2×ï²-@2ÙÁO±Y@2 ¿±[W?@2I¼]Iˆ@2 ¿±[W?@2 ‡Ü°`ž@2 ¿±[W?@2E¤¬ ?•w«ogŸl? dJgQ?’:­*QÎ?÷î|£[?‘¡8I²«¤?‘àÇAe ?†É×Hq"1?’¤Ý—†¬?‘b ´±6?ºŒ©¡§Î?’I¿|­q?‘/¹ß†?’‚<(_‡?%>ÇpÑ?‡³jó ?„&};-?‡zGhƦq?ˆ<Éh8kÑ@@$@(@*@8@7?ð?ð?ð?ð?ð?ð?éôà¿ éÕ €?ÖtN4–i?2÷æ‚Ö-Ð@«òXÓ_@™ŒõhŽ™?65ë¥q?Sä}k;h&?i¼£©?¢¬?¨î{èå÷@ŸlET{@Œ@¯éŸ¾vÈ´@¯é¹/Z‹@¯éŸ¾vÈ´@¯é Ì%Ö@¯éŸ¾vÈ´@¯éŸÚh×—@¯éŸ¾vÈ´@¯éŸ9Á•Ì@¯éŸ¾vÈ´@¯éœòO+@¯éŸ¾vÈ´@¯éœÚQ@•¬1'@•"MÒñª@•¬1'@•O½Ô×@•¬1'@•jOÓm@•¬1'@•´×¯@•¬1'@•$H¥¯ï@•¬1'@•Å£±Æ@7m¥œàv@7d`ªdÂø@3ðÄ›¥ãT@3óÛ¿†‘¯@3†“t¼@3‹¶Ä[…2@2”mÅÖ8†@2˜—–#@2”mÅÖ8†@2˜¿i¿)Ï@2”mÅÖ8†@2™öÛAx?Ž'QR x!?’ÓÁŽ[~?’a•¦û?£SqZ¬ˆ?’ÈwD['Ž?’Lú¬ày?€Ã{s°úi?”Ô4å?‘V—(ô>Õ?ó‹@Ê<›?’6ç~œä±?“Vée?´Ëu5¦×?Žœî¤>ë?…ÙŸŒR ð?…¨hrJe?ˆ>)A-?‰5ß+›Ö„@@*@$@$@9@9?ð?ð?ð?ð?ð?ð?g ëª^¿¤µÜÆ@4?|í‘h@3õ”¯O „@31‰7Kƨ@3($ xG@2Œ¿±[W?@2ƒ× -=p¤@2Œ¿±[W?@2€lÏžƒ@2Œ¿±[W?@2|@À)@8J¨?‘¸ü"ù€2?šëwÍœ‹Ý?“1ÕËt?‘(­gxý?—u.%Jº@8J¨?•2ã(_Ïù?ž(?{k4?‘W×ý°A?˜o -E\K?‘¢U¥].è@8p÷?‘a÷nñ?•Îo´ÀÙ?‹Ûu¤ó†4?Šp¹XmÉ>?M[70@@@@0@,?ð?ð?ð?ð?ðøøøøøøøøøøøø@¬sõÂ\)Á.„€@¬sõÂ\)@¬sá‰7KÇ@¬sõÂ\)@¬sæffff@¬sõÂ\)@¬sÒñ©ü@¬sõÂ\)@¬sØÔýó¶@¬sõÂ\)@¬sé7KƧ@¥€¾vÈ´Á.„€@¥€¾vÈ´@¥€ezxl#@¥€¾vÈ´@¥€%‡“ݘ@¥€¾vÈ´@¥€n—Oß@¥€¾vÈ´@¥€<ÓZ…ˆ@¥€¾vÈ´@¥¿!-w2@8[¹Œ~($Á.„>¤µÜÆ@2sS÷ÎÙ@2€6âë@1iÛ"Ðå`@1eÉã½@0ÑÞi­BÄ@1Ëûµt@0ÑÞi­BÄ@0Òh Ô•@0ÑÞi­BÄ@0•ðoiDg@8J¨?§¿u‚3?¤.#ÓYæ?ç\Š2˜?¨4+åRÚ–?¨.¿Èá@8J¨?Åð¡“X ¸?’ã0eʪv?Ÿ'Žb÷A?«Þ.Ïĵd?½Pz‹ Ô@8p÷?¸›¥e©˜Í?œÄDóÙk?Ÿ[+{A†ÿ?–d‘…’Ã~?µb•Hó@@@@(@*?ð?ð?ð?ð?ðøøøøøøøøøøøø@¢_ËÆ§ïž@¢_Ê=p£×@¢_ËÆ§ïžÁ.„€@¢_ËÆ§ïžÁ.„€@¢_ËÆ§ïžÁ.„€@¢_ËÆ§ïžÁ.„€@¢_ËÆ§ïžÁ.„€@Ÿ]F§ï²@Ÿ]XbMÓ@Ÿ]F§ï²Á.„€@Ÿ]F§ï²Á.„€@Ÿ]F§ï²Á.„€@Ÿ]F§ï²Á.„€@Ÿ]F§ï²Á.„€@7ð4mÅÖ8@7ðË)^ž@55ãS÷ÎÙÁ.„M‰ûçm@5;Ƨï²Á.„QnÙ‡@4(è§æ›Á.„NÜC,¥@4(è§æ›Á.„NÜC,¥@4(è§æ›Á.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøø‘@ Ðn—OßÁ.„€@ Ðn—OßÁ.„€@ Ðn—OßÁ.„€@ Ðn—OßÁ.„€@ Ðn—OßÁ.„€@ Ðn—OßÁ.„€@˜¦0 Ä›¦Á.„€@˜¦0 Ä›¦Á.„€@˜¦0 Ä›¦Á.„€@˜¦0 Ä›¦Á.„€@˜¦0 Ä›¦Á.„€@˜¦0 Ä›¦Á.„€@4ð4mÅÖ8Á.„>¤µÜÆ@15ãS÷ÎÙÁ.„M‰ûçm@0V”Á.„QnÙ‡@/åÉäÁ.„NÜC,¥@/åÉäÁ.„NÜC,¥@/åÉäÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø’@¥€ ÌÌÌÍ@¥€È´9X@¥€ ÌÌÌÍ@¥€ Ƨïž@¥€ ÌÌÌÍ@¥€ :’£@¥€ ÌÌÌÍ@¥€V“@¥€ ÌÌÌÍ@¥€ -³g ù@¥€ ÌÌÌÍ@¥€ ¥zxl@¢.¯Ÿ¾w@¢.³÷ÎÙ@¢.¯Ÿ¾w@¢.¯Åo@¢.¯Ÿ¾w@¢.®Hè§@¢.¯Ÿ¾w@¢.±Ä2ÊX@¢.¯Ÿ¾w@¢.¬"h Ö@¢.¯Ÿ¾w@¢.¬¿±[W@87â‚@·€@83@N¤¨Â@2J^5?|í@2JôðØDÐ@1Ct¼j~ú@1D`ªdÂø@0zÔ,<ží@0{’:)Çz@0zÔ,<ží@0z™0¾ î@0zÔ,<ží@0zqÞi­C? Eˆ‡ðó‹?jÝ‚È?‘t‘ócjë?‹ó#ƒt£?‘EÉ@Ú?‘ ê$4Ÿ?¡EÉ@Ú?’®> -fuæ?‘4ãM^?siÅqe?‘1…šá?«àÓ RÆ?± ã)è ˆ?)‰€Zw?ƒíÈm½!¿?„•ˆG’Z¾?‡&üòI?‡æê7²zE@@@@@*@(?ð?ð?ð?ð?ð?ð¿^W‡Q¿^]¾×l?LXÏí"¼§?GB¯ž¹@¥€ Î? š@¢.¯:mY6?b£RÍÚàÌ?_s Aàžë?Á¯•­{©?µÓ»E2'@Ÿoá÷Î@“@£V‚\(öÁ.„€@£V‚\(öÁ.„€@£V‚\(öÁ.„€@£V‚\(öÁ.„€@£V‚\(öÁ.„€@£V‚\(öÁ.„€@“f¸QìÁ.„€@“f¸QìÁ.„€@“f¸QìÁ.„€@“f¸QìÁ.„€@“f¸QìÁ.„€@“f¸QìÁ.„€@8IÎ_oÒÁ.„>¤µÜÆ@3|í‘hrÁ.„M‰ûçm@2¤¼j~ùÛÁ.„QnÙ‡@28DЩ*Á.„NÜC,¥@28DЩ*Á.„NÜC,¥@28DЩ*Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø”@¥çÃn—@¥çÃn—@¥çÃn—@¥ç¿‰À@@¥çÃn—@¥çÀŒí@¥çÃn—@¥ç¿òL@¥çÃn—@¥çÀ럺O@¥çÃn—@¥ç¿(<>"@“vD›¥ãT@“vE¡ÊÀƒ@“vD›¥ãT@“vAб@“vD›¥ãT@“vBtUÅ@“vD›¥ãT@“vCª}@“vD›¥ãT@“v?×t͘@“vD›¥ãT@“v=SÍÝn@4uS&Á¾@4u@Ø -õØ@2pÄ›¥ãT@2n£Ç'@1¬j~ùÛ#@1« `G@1O „M@1‹Ð‘±Ht@1O „M@1‹·°aó#@1O „M@1Ššáãq›?|¬h2:“?‘1J÷*@?‘)¡zІÌ?£Ä£êÌ?’¬‚¹è?Ü_1“<ž?}@T˜ÁÎ¥?’¸ê°g?‘^Æè»ðK?ý³çMfÛ?’01€s #?v4M°§ä?‚xþuhy¾?ŒÊsµ0dþ?ƒ@Š·•`?„aAv3ê`?‰x÷ß»š§?†ôð¾6^@@&@"@$@6@.?ð?ð?ð?ð?ð?ð¿Ii5¸ ¿H×h¨?(„?[¡³?!ðWpAŸ¾@¥çÁRôç$@“vB‡:yª?HŽ2h+Õk?BO/ß.6?Ÿ`!»ýkˆ?•cűâ@ŸfÆøA˜@•@¬ý­V@¬ý®V“@¬ý­V@¬ý«¬q ´@¬ý­V@¬ý«C•@¬ý­V@¬ý­jO@¬ý­V@¬ý˜FÜ]@¬ý­V@¬ýgÕfÏA@«XX“t¼j@«XZ^5?~@«XX“t¼j@«X]!ÿ.I@«XX“t¼j@«XYXbN@«XX“t¼j@«X]Vlô@«XX“t¼j@«Xf$Ý/@«XX“t¼j@«X`ƒn˜@6„¯O „M@6†“t¼@2³S÷ÎÙ@2´É…ðoi@2;Ƨï²@2=ÅÖ8†Y@1‡ ù kº@1Šxl"h -@1‡ ù kº@1”÷eýŠÛ@1‡ ù kº@1®¾ß¤?æ?„F/·ÿP5?‘J–?-.º?’5 µ¿$„?Œj6_?™°ñÃM?£â³x‰»?„F/·ÿP5?”n‹rÕ|?’$ûJw"Ú?@§[*^?›†þ.D?˜6@(/ÇÝ?‚Ì ÝŽ‚8?Ñ¿ž,?„+£QKù?†ÞåØÜÓ?ˆëÅoë?IÏáå$@@@@@,@*?ð?ð?ð?ð?ð?ð¿xg·µP?Z¸} ?sÏÆåf?F;™v¯ó@¬ý¤õ"×ò@«X]Ÿ  ?‘ATÎ O?dá„dÿ·?@ äØRh“Ä?Éê~îaD@Ÿeé*FÕ@–@¥Žûçl‹DÁ.„€@¥Žûçl‹D@¥ŽóüPH@¥Žûçl‹D@¥Žê³g ø@¥Žûçl‹D@¥Žèšu%@¥Žûçl‹D@¥ŽãS÷ÎÙ@¥Žûçl‹D@¥Žæ -¦L0@«wŒIº^5Á.„€@«wŒIº^5@«wHË’9@«wŒIº^5@«wò{²þ@«wŒIº^5@«w’ñ©ûç@«wŒIº^5@«wÒñ©ý@«wŒIº^5@«w‡E8ï5@8 ]cˆe”Á.„>¤µÜÆ@3ÎÙ‡+@2ë¬q ²–@2 ²-V@2E¡ÊÀƒ@1L¿±[W?@1NÑ·Y@1L¿±[W?@1:QÎ`@1L¿±[W?@12×sü@8J¨?¡Ýq+qW?˜ëàÕÁc0?”7lyÎ\?¦p3/ ¤?§°:ÛAJ+@8J¨?¡­·k$Õ?¸V¶nþ„ý?™vEËõB?™d‰u‰5Ž?±§<þ"(o@8p÷?›¿G¶‘µ?‰¢Ò+ÜÝX8ý‘ ?¥é+(³?œ¦]`úæ?•Äí¥×?–®ã–†áž?©W»¥ÿ$B? >Ô±µR?¡¨{ª’®W?“ÅÒÏPÉä?•nW*Ø„?šºi 0/¥?•;¯(ó?”Ú¢Ó¯?—’h…b?ÓLÞ?æ?šÙ,yf’Y?›ÇûP|@@@@@*@,?ð?ð?ð?ð?ð?ð¿ne±ƒ7?~‘l¦À?RàsìS¢?lŽ^—y–í@¤äKz«0Ä@¤9á¬H8¨?cÇ*JÔê?Bî ¾[?¬×FMAr?îþr`¹‹i@Ÿq5XÇñ@™@¬^yÛ"Ðå@¬^k Iº@¬^yÛ"Ðå@¬^X“t¼j@¬^yÛ"Ðå@¬^H1&éy@¬^yÛ"Ðå@¬^Mžƒä&@¬^yÛ"Ðå@¬^QÄ2ÊW@¬^yÛ"Ðå@¬^OŸ¾x@¢±Ï\(õÃ@¢±ÎV“@¢±Ï\(õÃ@¢±Ðå`A‰@¢±Ï\(õÃ@¢±Ö“u@¢±Ï\(õÃ@¢±Òñ©ûç@¢±Ï\(õÃ@¢±Î!–R½@¢±Ï\(õÃ@¢±Ï'»/ì@6 xFÜ@6|ÚQ@1)‡+ @1Dg8~@0¬j~ùÛ#@0™7KƧð@/õ¨Xy=Ú@/ÖOv_Ú@/õ¨Xy=Ú@/Ò½<63@/õ¨Xy=Ú@/Ñø -ß?•²»UbB2?‘¡çL¤?¬4F&xé?¨‹™µ¸¤?°¿ Ý2 ¦?°|S6³Y?Œs¤DÅÐ?’7Îf¬ps?“Ë— -"3?‘.“¥?–ÓîTî?—+Áèlç?ªìýi?Ž*JŠË?aäŽ -Ù?Þ‚ ‡F?^^ω•?‹Ûx§Þ@@@@@,@(?ð?ð?ð?ð?ð?ð¿|€U?1M¬Ê ?]þZÇ?Géwh¶7Ò@¬^[Ô>W@¢±Ïµ{É„?}(Ï{…iR?f[d©m@'?Î&v‘»/?È?:QÓ $@Ÿf×e`â@š@¯oc× -=qÁ.„€@¯oc× -=q@¯l„tSŽó@¯oc× -=q@¯lžƒä&@¯oc× -=q@¯lœ¬1'@¯oc× -=q@¯lÈÎp:ü@¯oc× -=q@¯lÓg ù @¬Ï\(õÃÁ.„€@¬Ï\(õÃ@¬Ž$Ý/@¬Ï\(õÃ@¬ŽŠqÞj@¬Ï\(õÃ@¬Ž¯·è@¬Ï\(õÃ@¬Ó àÞÔ@¬Ï\(õÃ@¬Íw1Æ@9ò䎊Á.„>¤µÜÆ@3Š^5?|í@-’ò䎊@2»Æ§ï²@,™#¢œwš@1Œ¿±[W?@+×éùrH@1Œ¿±[W?@+íw1Å@1Œ¿±[W?@+éá°‰ (@8J¨?¡2¶Qã=t?—U’¹DÆü?•Ô¦?n¸?ž)‚^°y?ŸŸ[‹¹5@8J¨?˜ü^Š1??šJ‘ÍÒÁ?“ä$š„…œ? p G)L?šºi 0/¥@8p÷?•ða˜,F?ŠÇÿú?‹h¢íc„„?“KÌ&¨Í?ˆT“Ÿÿ@@@@(@&?ð?ð?ð?ð?ðøøøøøøøøøøøø›@¬ÜdÝ/ Á.„€@¬ÜdÝ/ @¬Û‰xÔýô@¬ÜdÝ/ @¬ÛÚkP°ò@¬ÜdÝ/ @¬ÛùõY³Ð@¬ÜdÝ/ @¬ÛÞ($ x@¬ÜdÝ/ @¬ÛÈÁTɆ@¥]/Ÿ¾Á.„€@¥]/Ÿ¾@¥ÂMÒñª@¥]/Ÿ¾@¥gl‹C–@¥]/Ÿ¾@¥…o@¥]/Ÿ¾@¥Çâ‚@¸@¥]/Ÿ¾@¥úû~‘@8eöý!ÿ.Á.„>¤µÜÆ@4}‘hr° @3ùk¹Œ~(@3‹"Ðå`B@3<˜_ö”@3 ù kº@2Á©ûçlŒ@3 ù kº@2Â:)Çy§@3 ù kº@2Êû~ÿ—@8J¨?ÇW‘ßÃq?È®|1¹?¾G#}«?ÆlB_l@©˜Ãñ–O0?V7S§ë ]?R,X¼mt?µôtNÙ–?­Ž¥@@ŸgËŒ—^@@©gÚ¬1@©gÚáG®@©gÚ¬1@©gÚ)Çy§@©gÚ¬1@©gÚp[? @©gÚ¬1@©gÚŸ¾vÉ@©gÚ¬1@©gØN¼Ü@©gÚ¬1@©g׻Ȱk@•e¬1&é@•e£S÷ÎÙ@•e¬1&é@•eŸ‚Úÿk@•e¬1&é@•e¡$ì­æ@•e¬1&é@•e¡<%J<@•e¬1&é@•e¡ôÿž~@•e¬1&é@•e¢Çyùõ@3Žì¿±[X@3‰ªôfJ*@0; Iº^@07ÇÀœ@/†éxÔýô@/â!ýv:@.³üPH@.«íúCþ]@.³üPH@.¬'S1@.³üPH@.«ûµsê?ŽÕQp Î?u:I1?‘%ja •a?‹»³!.H.?÷(l¨˜?ưz÷_3?|Ñb×¶@?’!‡!{?™ö-@§y?9ÍÇ~FÀ?äU1 -¶?kN? ïv?‚“rÉÜ?Œ½K ìë?‚À%?‚íS¸0iBZîd?|¬Çëý ?ûJ`ÕYð?‘D&»ä?‹×lÇ…N9?‘2A¥Ø?âé¨ë7F?|¬Çëý ?’&u÷E»@?§^ ÿo˜?K·‘d]?‘ ÛÌÏõA?–’+¸¢d?‚‹¡8*ùÿ?Œ¾»•lŽ?‚¸“Îè ø?ƒ ?ÿ½?†µ°jÆÃ?†–f_ÔŠŠ@@@@@,@,?ð?ð?ð?ð?ð?ð¿©V@¿%óŽW?c«6,9>ŤN(\»@§Rq¢‰@§Ï‹i\ç?':¢{u^>åþ5n½/ð?]^„¸Ë2>Ùõ`ºµÐ@ŸfÞ}ÿõ@ @¯¶4¼j~úÁ.„€@¯¶4¼j~úÁ.„€@¯¶4¼j~úÁ.„€@¯¶4¼j~úÁ.„€@¯¶4¼j~úÁ.„€@¯¶4¼j~úÁ.„€@¨äŽV“Á.„€@¨äŽV“Á.„€@¨äŽV“Á.„€@¨äŽV“Á.„€@¨äŽV“Á.„€@¨äŽV“Á.„€@9 ]cˆe•Á.„>¤µÜÆ@5» Iº^Á.„M‰ûçm@5“t¼jÁ.„QnÙ‡@4Ì¿±[W?Á.„NÜC,¥@4Ì¿±[W?Á.„NÜC,¥@4Ì¿±[W?Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø¡@¢éY‡+@¢éY‡+@¢éY‡+@¢éXy=Ù@¢éY‡+@¢éYõY³Ï@¢éY‡+@¢éX†YJõ@¢éY‡+@¢éXDЩ@¢éY‡+@¢éY™™™™@©Ë'ï²-@©Ë'ï²-@©Ë'ï²-@©Ë)Çy¦µ@©Ë'ï²-@©Ë*W§†Â@©Ë'ï²-@©Ë-¸ºÇ@©Ë'ï²-@©Ë,q ²–@©Ë'ï²-@©Ë-¸ºÇ@32ÃÉîËû@32䎊qÞ@0)‡+ @0(FÜ]d@.›dZ¬@.™™™™™š@/#¼ÓZ…ˆ@/i­BÃÊ@/#¼ÓZ…ˆ@/ @/#¼ÓZ…ˆ@/ A‰7KÇ?‚á²Olºü?*£|3Né?‘7[ä­?Aš%ðï?‘˜¯ -`É?‘#†»{׈?}Ñ¿ž,?’Q_Ú¸FN?‘twæ³?“óoãwlP?‘Uç·Býi?ó‹P=´?‚† SFñ?lío>÷?‚§W®ê ?ƒv_.^?‡´*žZ}Õ?‡<û¡71@@@@@*@&?ð?ð?ð?ð?ð?ð¾úx˜?T_ÙÂÞ?#–uY¿7?2;->à¯@¢éXë6}r@©Ë*íãÃ?CYZ3JM?STUeG 7?'—çÍ*Ã?°‘n®b;·@Ÿgâÿa@¢@¡ ]²-VÁ.„€@¡ ]²-VÁ.„€@¡ ]²-VÁ.„€@¡ ]²-VÁ.„€@¡ ]²-V@¡ ’x7Çþ@¡ ]²-V@¡ ÓŽóMj@¢lKC•Á.„€@¢lKC•Á.„€@¢lKC•Á.„€@¢lKC•Á.„€@¢lKC•@¢lgY|ƒ@¢lKC•@¢l*JŒL@>2ÃÉîËûÁ.„>¤µÜÆ@7Ìí‘hr°Á.„M‰ûçm@6Ͳ-VÁ.„QnÙ‡@5«xFÜ^Á.„NÜC,¥@5«xFÜ^@5––óñ©(@5«xFÜ^@5¼ÌÌÌÌÍ@8@8#˜@8¾:@8 >+? ¶ÕIò…T?Öˆp&`ÁF@8@8Î÷@8i§@8Å? ?cˆ³H‹?ÏBŠ>œÅâ@8@8 * @8p÷@8¶?½µÏΙ¬?ÄŠ†^¤¿è@.@?ð?ðøøøøøøøøøøøø£@Ÿóê~ùÛ#@Ÿô -ü\&û@Ÿóê~ùÛ#Á.„€@Ÿóê~ùÛ#Á.„€@Ÿóê~ùÛ#Á.„€@Ÿóê~ùÛ#@Ÿøõöý!ÿ@Ÿóê~ùÛ#Á.„€@­É}p£× -@­Éaô±î#@­É}p£× -Á.„€@­É}p£× -Á.„€@­É}p£× -Á.„€@­É}p£× -@­ËVlô@­É}p£× -Á.„€@7í¥œàv@7¬ûùÎìü@3…?|í‘hÁ.„M‰ûçm@2â-VÁ.„QnÙ‡@2¨è§æ›Á.„NÜC,¥@2¨è§æ›@1cˆe”¯@2¨è§æ›Á.„NÜC,¥?…ðE[i)@8#˜@8¾:@8 >+?â•`i%|@8Ù?~Ov_Ø­«@8Î÷@8i§@8Å?ó´«×õ¹ð@8û—?…kô%,@8 * @8p÷@8¶?­E(É¡¨@8 Ø@@(?ð?ðøøøøøøøøøøøø¤@ªÒñ©ü@ª‘&éxÖ@ªÒñ©ü@ª(Œç@ªÒñ©ü@ªœ(õÂ@ªÒñ©ü@ª’n—P@ªÒñ©ü@ª“¶E¡Ì@ªÒñ©ü@ª¤µÜÆ?@¬ÃÆ$Ý/@¬ÃÏ\(õÃ@¬ÃÆ$Ý/@¬Ã§_oÒ @¬ÃÆ$Ý/@¬Ãœ¬1&@¬ÃÆ$Ý/@¬Ã´9Xb@¬ÃÆ$Ý/@¬Ã¸†YJö@¬ÃÆ$Ý/@¬Ãª=p£×@9ò䎊@8ýÒñ©ûç@5 Ä›¥ã@4ü‘ÑN;Í@497KƧð@4+çl‹C–@2úÔ,<ží@2ù=Ùb·@2úÔ,<ží@2úÔ,<ží@2úÔ,<ží@2ð©*0V?¹hC%¿ï?¥­|¨Þ?›(`¥Æ´?› { xÄç?¡ãÑWÐö?¡{7]['?ªÝ8Ⱥ™J?¡ÿ}ö?˜“º£¹‡b?™MßïšNÆ?›™¬ï?¥Í " z?ºy„à‘?—E!Üý·'?›Ny”…?–¼ä1ZüŽ?–7Qûñ?¥VËMª¼‰@@@@@,@*?ð?ð?ð?ð?ð?ð?všn5Ò¿vDõM:?gøn[cN`?hÌ?ŠDM’@ª–D¦åô@¬Ã¶oãç"?{…“  ?€âV½?ÑÇÃß¿§|?Þ Àƒˆ@Ÿoxƒð|‹@¥@£Ì>vÈ´9Á.„€@£Ì>vÈ´9Á.„€@£Ì>vÈ´9Á.„€@£Ì>vÈ´9Á.„€@£Ì>vÈ´9Á.„€@£Ì>vÈ´9Á.„€@“±¦éxÔþÁ.„€@“±¦éxÔþÁ.„€@“±¦éxÔþÁ.„€@“±¦éxÔþÁ.„€@“±¦éxÔþÁ.„€@“±¦éxÔþÁ.„€@7ÖšÔ,<ŸÁ.„>¤µÜÆ@5 Iº^5Á.„M‰ûçm@4A‰7KÇÁ.„QnÙ‡@4!:’£SÁ.„NÜC,¥@4!:’£SÁ.„NÜC,¥@4!:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø¦@¤NÙ‡+@¤NÙ‡+@¤NÙ‡+@¤NÙ‡*@¤NÙ‡+@¤OhÛŒ@¤NÙ‡+@¤Lô!-@¤NÙ‡+@¤LIº^5@¤NÙ‡+@¤LÌÌÌÌ@£ ° Ä›¦@£ ° Ä›¦@£ ° Ä›¦@£ ¯ „M@£ ° Ä›¦@£ °ØDÐ@£ ° Ä›¦@£ ¯O „M@£ ° Ä›¦@£ ®æ1ø¡@£ ° Ä›¦@£ ¯4Ö¡b@1‡>«6z@1‡RT`ªe@.®V“t@.¯²-W@.Œ1&éy@.5¨Xy>@-u¨Xy=Ú@-u%F -¦N@-u¨Xy=Ú@-vÈ´9X@-u¨Xy=Ú@-w1Ń?É^žQ5P‚?ûJ`ÕYð?‘@˜¯³¸?‹×lÇ…N9?‘çG¸?ß-tT?ÐbMçê_x?’4 "ëžØ?³2ºŽ'?Níú¾?üÓqÔNŠ?ˆ9²0?€g‹)ØêÀ?Œ²ÅŒÕ6?ƒM¬Öe—_?ƒƒQçÐ(?‡<û¡71?†Ü‘ °Ô@@@@@,@(?ð?ð?ð?ð?ð?ð¿ #À¿xáÃh?)%)òS¨?ÖÂ0¶èK@¤L¸5†g@£ ¯&ï Î?85 -TØ¿?.!76^?lR­¬Íç ?SŠÐlU X@Ÿsã“ã[@§@¦õã× -=q@¦õàA‰7L@¦õã× -=q@¦õÎV”@¦õã× -=q@¦õÉã¼@¦õã× -=q@¦õËC,¥@¦õã× -=q@¦õÊ™0¾@¦õã× -=q@¦õÁÿ.Hé@¦(õÂ@¦XbN@¦(õÂ@¦ Ä›¥ã@¦(õÂ@¦/·éù@¦(õÂ@¦ó¶E¢@¦(õÂ@¦ÌcñA@¦(õÂ@¦dZ­@7÷â‚@·€@7ôŽŠqÞj@3xr° Äœ@3o'»/ìW@3Ct¼j~ú@3*W§†Â&@2…œàu÷@2–»˜È@2…œàu÷@2~Ñ·Y@2…œàu÷@2}í(Œç?€‚ñêã ?£Äìµç¯?œI!S¨?’èÞ㬱_?ž)‚^°y?£‰I$4}?¢F^ì¼Sð?§±¬¯Ö~æ?©Óɰ?›‘Ûê\PK?•޼ÿ>#G?¡íÜ'Ln‹?¥×»xG–? î$£G?¡§~gN?ýÿJÔ{?¡FÍb2x?žµ½èq¨®@@@@@&@&?ð?ð?ð?ð?ð?ð¿zÄz?Dœ~Ò?L÷”ºžþ?ExäVLS™@¦õÎ4˜}a@¦…ó ª@”“Oß;dZ@”“Y.•Æ@”“Oß;dZ@”“Y÷òu’@”“Oß;dZ@”“[cî/@0įO „M@0ÄÉ…ðoi@/€A‰7KÆ@/d?›•@/&éxÔþ@/ Z¼P7@-æL/ƒ{K@-äq°ã@-æL/ƒ{K@-æUê˜6@-æL/ƒ{K@-èÚD!?É^ž-?ü#Ä×ÇÊ?‘ó™èû?Œ]¯Ľ?‘Å åš?´š"·Ù·?ÐbMÙï;Ó?’Y«FÑ£?º:q¬À?Í9GE…?ìÃÉÿ¹i?KäÆÀ?€b×Vï£?Œ·aéÝ?ƒiˆâ2?ƒ/»ñ¶[?‡Ú!ccC?†±KVPn@@(@*@,@@@8?ð?ð?ð?ð?ð?ð?OƲ×?@ÖYÞ?.+s3ú^?C÷©ð¤@ è‡øçÃE@”“ZmŠâ?=ˆakà -?-:¨)?t90ÝìÉ·?R¸ï¸BZ@ŸsÏ“w@©@¦Í Iº^@¦Íoj‹@¦Í Iº^@¦Ìì5C:/@¦Í Iº^@¦Ìögî½@¦Í Iº^@¦ÍH>ä@¦Í Iº^@¦Í¬Öæ@¦Í Iº^@¦Í!¼Æ@•kbMÒò@•j÷€\ç’@•kbMÒò@•k]þ·ã@•kbMÒò@•k œ{©@•kbMÒò@•kwývè@•kbMÒò@•k*Õè ¢@•kbMÒò@•k9š@9(†YJôñ@9);=­e^@4!hr° Ä@4 Èu\pÆ@3.ùÛ"Ðæ@3/8[ã_@2𖻘Çã@2óm !«×@2𖻘Çã@2öÿW6@2𖻘Çã@2ðywÇW?µ³h—†È¶?“t2«xÕ8?“€@m|xù?ñÊÇ/·?¡U‘·ÙÉË?œ1÷ïâá(? Ôøx¡9»?“ëÄA ¿S?“0–­}h-?’²ãˆn©,?Ÿej¡˜ó–?˜ÿ2 Ö2ê?…Üò•Št¤?‘ý£#LŽ?‘ `ÕÞÍ?Ž/©zˆ?òLšÄ—?—$òïñX³@@(@&@"@;@6?ð?ð?ð?ð?ð?ð?ˆ>@L± ?{Ú¢$U@?k•Lø÷Zß?A£Ë[ˆÙ¸@¦Í ÙçzT@•k 8…TÅ?|§ÿ$i?ZáÅrJ‹?ä(ÉafÙÃ?¢p€C¦:@ŸoXÚÔ»@ª@­¯Š=p£×@­¯Š=p£×@­¯Š=p£×@­¯ŠJŒN@­¯Š=p£×@­¯Š™0¾ @­¯Š=p£×@­¯Š³g ù@­¯Š=p£×@­¯‰­BÃÊ@­¯Š=p£×@­¯‰“ àÞ@«³@«³@«³@«²ÿË’:+@«³@«²ÿ¤?åÈ@«³@«³@N¥@«³@«²ÿò䎊@«³@«³ÞÒˆÏ@2™*0U2b@2™7KƧð@.ÂÐå`A‰@.¶®}Vm@-¯ß;dZ@-¯²-V@-½Vlô"@-¼àuöý!@-½Vlô"@-½IQ‚©’@-½Vlô"@-½!ÿ.Hé?É^žQ5P‚?êÚÏ$?‘šÕU#?‹Æ úJ-M?‘¿ÐÅu?ß-tT?ÐbMçê_x?’#maЀ?r¼Jsž?Y‡…—Ø?äú’?6²#šZQ@­¯Šs@«³¨·/µ?1GúÇ?Eyx"hM°?\Ó÷°ÐŽ?ƒûÓr{@ŸsVB@«@¬ÒÖ“u@¬ÒÖ“u@¬ÒÖ“u@¬Ò×1Å@¬ÒÖ“u@¬Ò×Xâe@¬ÒÖ“u@¬Ò×$tS@¬ÒÖ“u@¬ÒÔÖ¡aå@¬ÒÖ“u@¬ÒÔÉ…ðo@¦Îl‹C•@¦ÎlÌÌÌÍ@¦Îl‹C•@¦Îl²•éâ@¦Îl‹C•@¦ÎmV@¦Îl‹C•@¦Îlô!-@¦Îl‹C•@¦Îl¿±[W@¦Îl‹C•@¦ÎmquŽ@/!-w1@/!-w1@){"Ðå`A@){"Ðå`A@(S¶E¡ÊÁ@(SÃa@O@'¸7´¢3œ@'¸7´¢3œ@'¸7´¢3œ@'¸7´¢3œ@'¸7´¢3œ@'¸DЩ+?É^žQ5P‚?ÉGãA­÷?‘$Cê¡@í?‹²MÿAÿ8?îú/´`?·t¤¢‚J?ÐbV‡,?’ -‰¸Ì?¹º–Èj?3.Ylî?Ó%y*£=?J&d„?k?€b¡´ñ@?Œ¬Çëý ?‚oÁÆÜ§÷?‚ãaÎúvh?†‡hÉÈÓ?†ˆ#.÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿QŒ"°? õ9@?5Ãó=«Þ¶?{¹wÎ@¬ÒÕÁýÆ@¦Îlï**”?Dï:õ°H«?(­*«–j?…†ˆöÚ_Á?J½·È‡¸@Ÿs (È@¬@­&Š=p£×@­&dÝ/ @­&Š=p£×Á.„€@­&Š=p£×Á.„€@­&Š=p£×Á.„€@­&Š=p£×@­&ŠÀƒo@­&Š=p£×@­&’n—P@¯us3333@¯tô9Xc@¯us3333Á.„€@¯us3333Á.„€@¯us3333Á.„€@¯us3333@¯ut9Xb@¯us3333@¯uuÂ\)@8Âò䎊@8($ xG@3õãS÷ÎÙÁ.„M‰ûçm@3_²-VÁ.„QnÙ‡@2ëxFÜ^Á.„NÜC,¥@2ëxFÜ^@2îV“u@2ëxFÜ^@2ó{J#9Á?Ó–ÐÌlÏP@8#˜@8¾:@8 >+?ðŽºJ+½?ð‹Ið˜ ?ßž‚.ÂÓ­@8Î÷@8i§@8Å?ðÅìq?ð„‰p„Ã?ë4hÒâ§N@8 * @8p÷@8¶?ð?oÚ•¼?ð?oÚ•¼@?ð?ð?ð?ð?ðøøøøøøøøøøøø­@¡üOß;@¡üOß;@¡üOß;@¡ü_ö”@¡üOß;@¡ü€4mÆ@¡üOß;@¡ü}¿H@¡üOß;@¡üfÏAò@¡üOß;@¡üÂ\)@¦Ô­V@¦Ô­Oß;d@¦Ô­V@¦Ô¯Òòå@¦Ô­V@¦Ô¯AòÖ@¦Ô­V@¦Ô­í(Œæ@¦Ô­V@¦Ô­„M;@¦Ô­V@¦Ô®!–R½@5IÎ_oÒ@5IÛ"Ðå`@08r° Äœ@07ÈK]Ìd@.ÉxÔýó¶@.É*0U2b@,ܾߤ@@,Û¥ãS÷Î@,ܾߤ@@,ÚÔ,<ží@,ܾߤ@@,ÚáG®{?|¬Çëý ?Òç{íj?‘G¿yÛ?ï?‹×lÇ…N9?ÿ £‰¸9?ÔCXsñ?1·†Æjñ?’CòO…?‘kþE<%?]bËn~?ÔÒ@úˆ‘?hï,ðà?ƒ¡É^&Ö?ŒÂ§dß±?„ã¼ÓZ…ˆ?‚éXëLL÷?†ÃÛSPã?†ïRÉv‘Ñ@@@@@&@,?ð?ð?ð?ð?ð?ð¿5ίP?!ë\?/˜•/5T? 19”…@¡üñvéü@¦Ô­ A?O)ýªáÑâ?.ºƒh[©?ªÿ³AG?g0VÀƒm’@Ÿg;óøF˜@®@ª§ž5?|î@ª§¨´9X@ª§ž5?|î@ª§¶ý!ÿ-@ª§ž5?|î@ª§Ÿò䎊@ª§ž5?|î@ª§˜“t¼j@ª§ž5?|î@ª§Ž¤¨ÁU@ª§ž5?|î@ª§œC,¥z@§ê C•@§ê …¸R@§ê C•@§êmÅÖ9@§ê C•@§ê!–R½@§ê C•@§êT`ªe@§ê C•@§ê ^ž @§ê C•@§êñ©ûè@8ëµsê´@8àÞÒˆÎp@5#÷ÎÙ‡@5$!-w1@4¤¼j~ùÛ@4¨ -à @3Ê0U2a|@3ÉõY³Ð}@3Ê0U2a|@3ÖšÔ,<Ÿ@3Ê0U2a|@3Ò‚@·€5?гá‡}?°»¸ ßÛ?–¦r…û?ŽVåç0ÇO?šŒÐ&îèx?¢©LÚTk?¦NIÉ®š?¤„OW°ò?’˜l%F…Z?’ÁÛ/’:?š¹'¤Ò ? “EÅse?¨¦ï»xŒ?§âŒ$“ná?˜o\¾Z|?‡9 ƒ–’”?” 4‹eñ -?–Mí\{WÐ@@@@@$@&?ð?ð?ð?ð?ð?ð¿tÞ)ƒö?bà·@?Zç õL?bL¦Bò@ª§™;i@§ê¯ˆ<&?z÷~8Úu»?w,ÍF·>?è Z &2ª?ØuHl«–}@ŸlLð¦Ð©@¯@¥"(õÂ\@¥")xÔýô@¥"(õÂ\@¥"&ffff@¥"(õÂ\@¥"%¸Qì@¥"(õÂ\@¥"&¸ºÈ@¥"(õÂ\@¥"%o@¥"(õÂ\@¥"$¨ÁTÉ@®E¡ÊÀƒ@®E¸Qí@®E¡ÊÀƒ@®=ó¶E£@®E¡ÊÀƒ@®?Ë’:)@®E¡ÊÀƒ@®8ï4Ö¡@®E¡ÊÀƒ@®;˜Çâƒ@®E¡ÊÀƒ@®<£n/@3ð4mÅÖ8@3îå¦gCb@0@ Ä›¥ã@0@|„µÜÆ@/ØÔýó¶F@/ÚCþ\‘Ò@/ -#9Àëî@/ …ðoiE@/ -#9Àëî@/Ë’:*@/ -#9Àëî@/ ùrGF?|¬h2:“?¾‰máÚ?‘£Ä›è?Ô@R’?‘ŠR%¨(0?×°ë*–w?|Ñb×¶@?’7Îf¬ps?’±ä?‘aYZ†«q?‘–=û.e1?·t¤¢‚K?‚ÁQ(®U?Œèsq‡#?…I‘ÒÁ/À?†¤c·Ó—1?‡v>ª¸ ?‡2[síç@@@@@,@&?ð?ð?ð?ð?ð?ð¿Pù’q¶¿Rè®$?’ûE´.›?9æíLÛî@@¥"'8:°O@®?µås?0ºô‹C`h?Zm2ôI¤Â?l»ØïMóF?Áh;Iá¶Ï@Ÿfºû'±•@°@¨#Ïß;dZ@¨#Ù‡+@¨#Ïß;dZ@¨#Ø -á@¨#Ïß;dZ@¨#Ô¼j~û@¨#Ïß;dZ@¨#Ô`ªdÃ@¨#Ïß;dZ@¨#Ñ‚©“ @¨#Ïß;dZ@¨#ÒþÅm]@ª–ß;dZ@ª–£× -=@ª–ß;dZ@ª–¨è§ç@ª–ß;dZ@ª–›~ÿ—@ª–ß;dZ@ª–•µsê²@ª–ß;dZ@ª– [À7@ª–ß;dZ@ª–žƒä%¯@8šÔ,<Ÿ@8Åo@1k¥ãS÷Ï@1a×Ûô‡ü@0A‰7KÇ@0 Çy¦µ @.£¼ÓZ…ˆ@.–+jçÕg@.£¼ÓZ…ˆ@.•ÜÆ?@.£¼ÓZ…ˆ@.—süPI?°{QBãï?‘_¦X ë -?’©ßc«?Œ2ÌUÃT?’(æ„+Zk?’—ØPö«?«_$Øï†?¦ KBI?—+Áèlç?’„÷ò¸?Ÿé„ærrl?¦¤Wë'?•ë þÅ?i-ý-›…?ƒíÈm½!¿?…®×__C?‡æê7²zE?Œúq‘@@@@@*@*?ð?ð?ð?ð?ð?ð¿P;ì½¶?nкû?DÏ2Ne÷?Uú”˜ üy@¨#Ó˜™l@ª–™|U›6?V£öù!¹ ?jÌJ‰ª*µ?¥·ú3*?¾ºñÔûáQ@Ÿo–ÕzåY@±@¯ÈéxÔýô@¯ÈèõÂ\@¯ÈéxÔýô@¯Èë I»@¯ÈéxÔýô@¯Èê Þ@¯ÈéxÔýô@¯Èë¬q ²@¯ÈéxÔýô@¯ÈèË’;@¯ÈéxÔýô@¯ÈèŒç°@­Tñ©ûçm@­Tñë…¸@­Tñ©ûçm@­Tò•éá±@­Tñ©ûçm@­Tñ[W>¬@­Tñ©ûçm@­Tò-V@­Tñ©ûçm@­Tòñ©ûæ@­Tñ©ûçm@­TòGE8ï@2Ô xFÜ@2Ô¼¤@0k¥ãS÷Î@0kÓÃa@@0M²-V@0MÌcñA @.æL/ƒ{K@.æ€IQƒ@.æL/ƒ{K@.æ -¦L/„@.æL/ƒ{K@.æ§ï²-?É^òÀXæN?õ¹Ëh?‘WßÈDö@?‹¬àÌ’Ç?ÿ £‰¸9?ô Î]V?ÐbV‡,?’5CàQ?‘twæ³?-õI¸`K?çêÑHcÇ?{L Õ¢D?€e@ˆ’„'?ŒÆò/¢äÍ?ƒmÕ+&¬Š?‚æÊ¬vã?†žóB» “?†¼Š˜L¥÷@@@@@*@*?ð?ð?ð?ð?ð?ð¿W[sêD?Â"§°?@#Ÿ›~Ì?/°û‰¹¢@¯ÈéÍ{o@­TòréÏ?NíñÏB­Ö?=þ™õ#eŠ?—A¤qWî?s“Ç+è@Ÿrý£ñøo@²@¬8âMÒñªÁ.„€@¬8âMÒñª@¬8ðX°±7@¬8âMÒñª@¬8ø¯„@¬8âMÒñª@¬8î}¥@¬8âMÒñª@¬8êgqŸU@¬8âMÒñª@¬8ç~êé@•#På`A‰Á.„€@•#På`A‰@•#J¶æ§x@•#På`A‰@•#Fn‘ê@•#På`A‰@•#6 -&÷9@•#På`A‰@•#4f~+@•#På`A‰@•#/aOÿ @9#g ù lÁ.„>¤µÜÆ@4.5?|í‘@41p@3¹7KƧð@3µ˜)k@3‚@·€5@3€b‘SC@3‚@·€5@3N0óöô@3‚@·€5@30Í©@8J¨?‘݇CD&?ÄšFË ç?‘´7ã@ô?’И©ZŽN?“*qh!–@8J¨?’3jR6Þà?—¾b8[.Þ?°vb'Þ?“SÉ)½z?”¿”@8p÷?’;”Ä>p?’mýݹæ?‰/Æ6 4?– ³G+?Ònëĸ@$@*@,@;@9?ð?ð?ð?ð?ðøøøøøøøøøøøø³@©CÒñ©ü@©CŒ1&é@©CÒñ©ü@©CŽ}Vlô@©CÒñ©ü@©CAò×@©CÒñ©ü@©CŽŠqÞj@©CÒñ©ü@©C‰“ àÞ@©CÒñ©ü@©C‹C,¥@©Së…¸R@©SëC•@©Së…¸R@©SîóMj@©Së…¸R@©SóMj@©Së…¸R@©SñÞi­C@©Së…¸R@©Só&Á¾@©Së…¸R@©SñuŽ!–@7^Hè§æ@7`bMÒñª@2ðÄ›¥ãT@2í‘hr° @1—ï²-@1–“t¼@1?ò䎊r@1=Òñ©ûè@1?ò䎊r@1=¿HË“@1?ò䎊r@1=í(Œç?˜ž^ƒÿ*ˆ?Žd±Ìº?‘ñê&ètä?ŽVåç0ÇO?’dÓÙiº?‘îƒÔ1a?–ªÎ­¡?•²»UbB3?’$ûJw"Ú?’ü#q\-v?‘êë·áþA?’?;Áƒè?†Æ‹™þ?iT£C~t?…~ÆÎÇ$‡?…2 Ôî½?‡×7°º?ˆ©{2¡Î@@@@@,@,?ð?ð?ð?ð?ð?ð¿Bd‚(€?UÅôûš?JˆHä]Dð?DñÑpº@©CŒ,ë| -@©SðÈÃ!Z?dNKLŠ¢¦?a…S*%›?úõJ·È„?ºBÌŒ Î@ŸmÏ4V@´@ äu?|í‘@ äxOÊáÐ@ äu?|í‘@ ähQ]@ äu?|í‘@ ä_Á +™@ äu?|í‘@ ätVü¢@ äu?|í‘@ är†¼ìl@ äu?|í‘@ äxôXÉ©@­ˆ“÷ÎÙ@­ˆ‡®zà@­ˆ“÷ÎÙ@­ˆ¢ðjƒ@­ˆ“÷ÎÙ@­ˆ¥h”@­ˆ“÷ÎÙ@­ˆÚ¯âË@­ˆ“÷ÎÙ@­ˆ“ ”¥W@­ˆ“÷ÎÙ@­ˆ’õ»DŸ@9(†YJôñ@9 Á>0!X@4Š^5?|í@4|NÆ@3v§ï²-@3n„ˆÅ¦¶@33&Á½¥@3*)ª™ Ÿ@33&Á½¥@3%¥ÊK@33&Á½¥@3#Þ~*GÇ?”>¢¿,À@?”¾¨R{ä°?—åLôÕ?‘`m޼ÿ?• i¸È?–èÑrÐ7?‡‡á´WÉ?–¨!ãmþ~?“0à"Ì?’RGçÏl€?”JGY$Ãl?“çË,–s?¼P–5¯¶s?šœ…(êÁÒ?ŒtqNæŒ;?:åùkÔÀ?˜¾[%©à?®öÖ¢.@@$@&@&@4@5?ð?ð?ð?ð?ð?ð¿6í`%ð?`ßJøÈ?P`Ÿñµ?`ÃI]º¤ @ äuÚ¥ö=@­ˆ‹oœ¯?l^©‹@ºž?ËŸ9ôå?Ð-~À:T@lp Â;ü@ŸkêÚæ@µ@¨TzáG®@¨S÷ÎÙ@¨TzáG®@¨V4ê@¨TzáG®@¨Vðº@¨TzáG®@¨[¥ãSù@¨TzáG®@¨YŒ~($@¨TzáG®@¨;=ÈK@®¤`Ä›¥ã@®¤`A‰7M@®¤`Ä›¥ã@®¤VâëC@®¤`Ä›¥ã@®¤[šv@®¤`Ä›¥ã@®¤SMj@®¤`Ä›¥ã@®¤]Vlô@®¤`Ä›¥ã@®¤6®}Vm@5wâ‚@·€@5vµ '»@2T›¥ãSø@2PØDЩ@26§ï²-@21Þi­BÄ@1zÔ,<ží@1v»˜Çâ‚@1zÔ,<ží@1w€4mÅ×@1zÔ,<ží@1_—$tS?}Ñ¿ž,?–âFpë3?™_*®k?‘£ºáõÑ?•BPbC¡©?ž»‚>äÚ>?€‚ñêã ?˜I­}ý½Ä?™”uÀdª?“{¡7¨Üò?’êJ>áý?¢¢@ ~?‚‘´…=Ca?à í¡h„?† - Ðló]?ˆx»€ñö2?ŒÙ”!Çx‡?•mCìc¿4@@@@@ @?ð?ð?ð?ð?ð?ð¿:ÃZ½X¿lŽÀùË?eè1Aüýž?e¾(]ðPÌ@¨T-–s@®¤YØJ't?ƒØ 4Û¸?ƒºê©7.š@ EIý†§@ -!3 k°F@Ÿd„”̯Ï@¶@ Ÿ¾vÉ@ ãR5~{@ Ÿ¾vÉÁ.„€@ Ÿ¾vÉÁ.„€@ Ÿ¾vÉÁ.„€@ Ÿ¾vÉÁ.„€@ Ÿ¾vÉÁ.„€@¢?ÚŸ¾vÉ@¢?ýÐ ¢,@¢?ÚŸ¾vÉÁ.„€@¢?ÚŸ¾vÉÁ.„€@¢?ÚŸ¾vÉÁ.„€@¢?ÚŸ¾vÉÁ.„€@¢?ÚŸ¾vÉÁ.„€@9^Hè§ç@9`^ùcc‡@4n5?|í‘Á.„M‰ûçm@3×ï²-Á.„QnÙ‡@2ÿò䎊rÁ.„NÜC,¥@2ÿò䎊rÁ.„NÜC,¥@2ÿò䎊rÁ.„NÜC,¥?»)¢||n@8#˜@8¾:@8 >+@8Iç@8Ù?¿¢ši.&@8Î÷@8i§@8Å@8S@8û—?¶móEKT@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø·@ŸG‘hr°!@ŸGŽÙ‡+@ŸG‘hr°!@ŸG’K«c@ŸG‘hr°!@ŸG“\_y8@ŸG‘hr°!@ŸGN‰'Ò@ŸG‘hr°!@ŸG‰ýF¿ß@ŸG‘hr°!@ŸGˆ²E@¢4m‘hr°@¢4n}ú@¢4m‘hr°@¢4nËû¶@¢4m‘hr°@¢4pù kº@¢4m‘hr°@¢4met@¢4m‘hr°@¢4n\‘ÑN@¢4m‘hr°@¢4nCË6)@5µS&Á¾@5”¹£îz@1^Ù‡+@1^0Èí#b@0È“t¼j@0Ǻ—<@08DЩ*@07Ç$›AÈ@08DЩ*@06¢-Egå@08DЩ*@07 -Õ xÖ?|Ñb×¶@?×Ý¢t’'?‘[È4òÊ?‹ï Æ?‘00‡Ÿ?ýÐýsC?e™”XWø?’ Ö]…â?ǧ5u°?U&¢>/¥?‘Kf¸@í?¨K t ?ƒ]nx¤µÜÆ@4{ Iº^Á.„M‰ûçm@3y7KƧðÁ.„QnÙ‡@2ãÉîËûÁ.„NÜC,¥@2ãÉîËûÁ.„NÜC,¥@2ãÉîËûÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø¹@¤¥ë…¸@¤¥ Òñ©û@¤¥ë…¸@¤¥PS @¤¥ë…¸@¤¥!UŽÃÝ@¤¥ë…¸@¤¥óž»@¤¥ë…¸@¤¥ ªe"@¤¥ë…¸@¤¥xàs @“Ðî—Oß@“ÐîCªy¼@“Ðî—Oß@“Ñ(úè ý@“Ðî—Oß@“ÐôÆßO¹@“Ðî—Oß@“Ðü#Ø·@“Ðî—Oß@“Ðô—.÷¥@“Ðî—Oß@“ÐðpÒÅ@7šÔ,<Ÿ@7*¢¤ Ì@3?|í‘h@3J“â@2b-V@2Z/á>ÇË@1î_oÒ @1é騥¦@1î_oÒ @1äé(p½L@1î_oÒ @1æLR>±¨?Ĺó¥p?Ì -…"ˆÔ?’@»ó>¯é?†úâ™Ú?–Ú ØžÙ?’gà=aù?~Ov_Ø­«?’$•œa?‘ß<å1Iñ?1ÊGe»|?˜µ[ÄŽ™þ?•Bü5„1r?Ÿéd¡GE?Á&Ÿ>G?‘!+Üä?ƒ:šœœÙâ?ŽûJr ¦7?ŽüÇßéy@@@ @@5@5?ð?ð?ð?ð?ð?ð?P½:("?K]>¯V?XQ«î?™?Jý}w½r@¤¥ uÎ=@“ÐóM£ì€?u×[By1Ò?m‰1-M‘?è´UábS?Úy‹ðÈÿB@Ÿi‚á~6@º@«L/²-@«L-Òñ©ü@«L/²-@«L1œàu÷@«L/²-@«L0U2a|@«L/²-@«L3¶E¡Ë@«L/²-@«L/–»™@«L/²-@«L/ùrGE@§…¸Qì@§Ž—OÞ@§…¸Qì@§‡RT`ª@§…¸Qì@§‡»/ìW@§…¸Qì@§‰^ž @§…¸Qì@§…`A‰7@§…¸Qì@§‡ÈK]Ì@7Ô xFÜ@7Óg ù l@3+ Iº@3Éã¼@2“t¼j@2 ÞÑ·@1a:’£S@1`-à r@1a:’£S@1_¾vÈ´9@1a:’£S@1_ìVÕÏ«?š•§q!U?’ Œ#Çî«?’Gßk;m?Ça_b‹?’yÊêºq?âé¨ë7F?‡YÍ_?”ÇtæMPÐ?‘ïɇ}~?’_3Í\Æ?’$) ‘?“IëH!w?ôê÷º»â?Ž»žä4?ŒR‹w#{?„l¯¸‰ŒÎ?‡gϵ’õ?‹ ˜1 D@@@@@@,@(?ð?ð?ð?ð?ð?ð¿ku¿\¤j?P‚i¹û±?<éþ{·"&@«L1ps4@§‰+ã[ ?hë½Ü $‰?_2¶ð’[½?Í6*ÓÎ?º±=[Ex@Ÿm7ƒœ@»@¦¬“t¼j@¦¬3333@¦¬“t¼j@¦¬ ƒn™@¦¬“t¼j@¦¬(õÂ@¦¬“t¼j@¦¬ƒä%¯@¦¬“t¼j@¦¬&$Ý/@¦¬“t¼j@¦¬+ûµt@¢Ç¯²-@¢Ç½ó¶E¢@¢Ç¯²-@¢Ç«¬q ³@¢Ç¯²-@¢Ç¬"h Õ@¢Ç¯²-@¢Ç¥m\ú­@¢Ç¯²-@¢Çš¹õY´@¢Ç¯²-@¢ÇŸHË’@8Ñ|ÚQ@8È­«ŸU›@4Lí‘hr°@4J…‡“ݘ@3€å`A‰7@3Ø­«ŸV@3B‚@·€5@36 -¦L/„@3B‚@·€5@3EðoiDh@3B‚@·€5@3Esê³g¡?|öOÿÝ?‘_¦X ë -?—¯}_ƒÜ»?›"Jª]u?—åaÿ0Ð?¥sú·–Á[?Ÿ‹‘+-/Ü?’CòO…?“’OÕƒõ‘?¢"|ÐOV?™³¤Áa5?¥å`Åðu3?´Ã»™Ö ?–¡aä÷eþ?‘!´ö‚?’ª=˜Å?™ì ª# Ù? hvÅÜk@@@@@&@,?ð?ð?ð?ð?ð?ð?sƒ×ã¿p+É"€?(ÒÔù“s?ZÀYmMg@¦¬l]„^@¢Ç¨fŠc??MJjMP|?w§è|a}d?ˆó˜õ¦?ÐÊ@‚/¦@Ÿj Ø1ñ[@¼@ªÅ@ªÄù™™™š@ªÅ@ªÅ ÞÒˆÎ@ªÅ@ªÅbMÒò@ªÅ@ªÅe+ÓÃ@ªÅ@ªÅã¼Ó@ªÅ@ªÅ"e+Ô@ æÉ7Kƨ@ æÎV“@ æÉ7Kƨ@ æ‹C,¥@ æÉ7Kƨ@ æ•Â\)@ æÉ7Kƨ@ æwKƧï@ æÉ7Kƨ@ ævR½<7@ æÉ7Kƨ@ ælÌÌÌÍ@8wâ‚@·€@8l1&éy@4 í‘hr°@3ßoÒòä@3_²-V@35¸Që…@3 ¿±[W?@2Ñ-w1Å@3 ¿±[W?@2Љ 'RT@3 ¿±[W?@2Ñ‚©“ á?¬c°Åxt?¤eÄ…àÖ‚?Ÿ7'»ˆv?¥__z8Ž`?¨eTm5[]?¬Jà"ÃFr?¹©¢þµ|õ?¨î+³M?ªÊÏËùô?°.OŠcÉ?¶|ùŒg?¾T+)¶ª?…™ï ufÝ?”XÁyÁ´š¬1@¨>ŸF=E@@¨>š¬1@¨>ºÉ@=@¨>š¬1@¨>›Ô»¾@¨>š¬1@¨>­ÁéÁ9@¨>š¬1@¨>¶_­þÉ@¨>š¬1@¨>¬NÄ|@˜&dZ¬@˜&BÑ®K%@˜&dZ¬@˜&’Pþ@˜&dZ¬@˜&™òñU@˜&dZ¬@˜& êHÍ@˜&dZ¬@˜&¶;°·°@˜&dZ¬@˜&œ›ö-@8òÃÉîËû@9˜orX@3î5?|í‘@3ÚZîcŠ@2éÛ"Ðå`@2ØÏD­@2£ÉîËû@2ŠSsFÿ -@2£ÉîËû@2†X r Í@2£ÉîËû@2…À¶ÀNö?†c£ïDì?°òè$nba?•ÂÁm´Bñ?§ö„$~q?«QeÄ,•?¤uhÒ¨ìÏ?®p¹EkIõ?¨ª{9JgD? ·W)²Be?²– ’Äc¢?¯ÙíÒ ?°4Fò§:?°½ |ȶ?’…û: æ?‡ôæ‰[?ŒÑìZ£%¢?‹Û•Ý“ý?b$QߤA@@*@&@*@;@8?ð?ð?ð?ð?ð?ð?nh -2?…ÍehW ?R~| -hÄ?pïA:Oó@¨>©­rÓ@˜&ˆ??w;-´²™?Žg×n„ô?ÉÛâL©Ìæ?ÛæÜW'Æ@ŸkÖëþc@¾@£šyÛ"Ðå@£š½/Ÿ¾@£šyÛ"Ðå@£šxFÜ]@£šyÛ"Ðå@£šyb¶®@£šyÛ"Ðå@£š|‘ÑN<@£šyÛ"Ðå@£šz–¼@£šyÛ"Ðå@£švR½<5@§»àA‰7L@§¼^5?~@§»àA‰7L@§»ãñA \@§»àA‰7L@§»âëC,@§»àA‰7L@§»âø7´¢@§»àA‰7L@§»Ûšv@§»àA‰7L@§»à'RTa@9?–»˜È@8œ²•éá°@3õãS÷ÎÙ@3ý!ÿ.Hè@2Õ`A‰7L@2ÚîcŠ @2B‚@·€5@2E%F -¦L@2B‚@·€5@2GeýŠÚº@2B‚@·€5@2F¸ºÇ?Ô­FLgŽ4?Kb½™×?“‡ƒ×¤?’~ò™rV?•Qð^ûF?’j•×›b?£G± *Ç‚?“Öæ…0Âû?š }Õ>_?—°Ó&v'ç?–%¥ê3–?•lÓªü<?ñLÆ´G¤?“Ø/‰ #?6´×–±?‹µ¼a?ˆk! ¨l?Œ¸ðËb@@@@@*@&?ð?ð?ð?ð?ð?ð¿h «òˆ€¿„¿ ¡ÌÀ?Vïn(I›®?s¯˜@£šyêÇ2¢@§»âáÍí¤?f2Š“‘/? ]¹3É?¿æšO”³×@ýÉti;¬@ŸsN%`EE@¿@®r‘ë…¸@®r‡®zá@®r‘ë…¸@®r‰7Kƨ@®r‘ë…¸@®r•%F -¥@®r‘ë…¸@®r¾ í*@®r‘ë…¸@®rˆÛ‹¬p@®r‘ë…¸@®rŠ™0¾@ E Ä›¥ã@ E¡G®{@ E Ä›¥ã@ Eœ¹#¢@ E Ä›¥ã@ E¤2ÊW¨@ E Ä›¥ã@ Eš^5?}@ E Ä›¥ã@ Ežƒä%¯@ E Ä›¥ã@ E™=Ùc@8+µsê´@81hr° Ä@3ã÷ÎÙ‡@3ßb¶®}V@3lj~ùÛ#@3fÁ½¥@2kxFÜ^@2ffffff@2kxFÜ^@2he”¯O@2kxFÜ^@2hy=Ùc?ð°–Ž]?‘" Á°–•?’ -·>á ?ŒÇQ´ë…¸R@ž>õÂ\)@ž>ë…¸RÁ.„€@ž>ë…¸RÁ.„€@ž>ë…¸RÁ.„€@ž>ë…¸RÁ.„€@ž>ë…¸RÁ.„€@6£g ù l@6¥¸Që…@3|í‘hrÁ.„M‰ûçm@2¬j~ùÛ#Á.„QnÙ‡@1¸DЩ*Á.„NÜC,¥@1¸DЩ*Á.„NÜC,¥@1¸DЩ*Á.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÁ@¡+ܬ1'@¡+ñbÂa@¡+ܬ1'@¡+«tŠH@¡+ܬ1'@¡+ðþ­-@¡+ܬ1'@¡+!u/@¡+ܬ1'@¡+“xEú—@¡+ܬ1'@¡+«]ú¬!@¡#…¸Qì@¡#´Ø%e˜@¡#…¸Qì@¡#ôTg@¡#…¸Qì@¡#ᒖË@¡#…¸Qì@¡$‰Ø·@¡#…¸Qì@¡#²àcƒ@¡#…¸Qì@¡#ÇðœÏ @8Ù*0U2b@8ª›3›þ»@4)‡+ @3ÌUéªÛ@3²-V@3"œ™ðÇs@2µµsê³h@2f„ä+e@2µµsê³h@2y{“¶2@2µµsê³h@2z)$ä? ý+úª?”Xføö[?ž}q㉽a?‘å-ví<?š•«ú'ݘ?“ -U[?¥¢É?˜#P€•5a?¨ÅJÇõ?“ “p®<Ú?îCJÄ?’í¯ )&ü?Š{×§EG?š­(g³`B?ª¨ 7¹Ü9?ˆT¨VX¶W?“…‹×[Çh?˜* ô;•@@ @"@@.@"?ð?ð?ð?ð?ð?ð¿±(¾W@?`ïŽbÏ?ˆá¶Ä{1`?Œ¯¦ÞçTý@¡+¦Ó³®a@¡#ÍUíÎÇ?¢Í£€§Ç?«¤Y¯âÏ@65bÝ]þ@S‘Ï#´@Ÿmè0”þÓ@Â@§§záG®@§§{¥ãSø@§§záG®@§§zÔ,<Ÿ@§§záG®@§§z^5?}@§§záG®@§§záG®@§§záG®@§§z–½@§§záG®@§§z¬Ùè>@¡fŸQì@¡fÇï²-@¡fŸQì@¡fÆ1ø @¡fŸQì@¡fÄÂø7¶@¡fŸQì@¡fÄ›¥ãT@¡fŸQì@¡fÄ?åÉ@¡fŸQì@¡fÄ÷eý‹@5uS&Á¾@5vR½<6@1O|í‘hr@1NùÛ"Ðå@0•`A‰7L@0•¸Që…@/ÑÑN;Í6@/Ñ4êJ@/ÑÑN;Í6@/ÑuŽ!–S@/ÑÑN;Í6@/ÑÞi­BÄ?|öOÿÝ?Qdöÿô¼?‘K]Ã4?Œ'õ‚$5ñ?‘ ·èf?×°ë*–w?1·†Æjñ?’HGªÂÛ^?üÓqÔN‰?iêhAÜ?ß’ºèh!?oÌ‘'ýT?„ü›ðÓ?2ô]7?‚§W®ê ?ƒE 8?†µ°jÆÃ?†Ü‘ °Ô@@@@@$@(?ð?ð?ð?ð?ð?ð¿1ç°"¿II½ÿ?®íLCÛg?+çCÆ8°@@§§{Б@¡fƈýæ?4À’» T?L{€:­*Â?vØ>ˆ8øÚ?£ØË ¸@Ÿg@Ü)!T@Ã@¢Â`A‰7L@¢Â`ƒn™@¢Â`A‰7L@¢Âa×Ûôˆ@¢Â`A‰7L@¢Âa£n.²@¢Â`A‰7L@¢Âa|ÚQ@¢Â`A‰7L@¢Â` qv@¢Â`A‰7L@¢Â`ÞÒˆÎ@¨1ò-V@¨1ó3333@¨1ò-V@¨1ò䎊r@¨1ò-V@¨1ó àÞÓ@¨1ò-V@¨1óÝ—ö*@¨1ò-V@¨1òÊW§ˆ@¨1ò-V@¨1òT`ªe@6Hè§æ@6„M:’@1 Iº^5@1aä÷eþ@0y7KƧð@0xÎp:û~@.p‰ 'RU@.oÅo@.p‰ 'RU@.ov_Ø­¬@.p‰ 'RU@.oÅo?|öOÿÝ?õ¹Ëh?‘"žæÆó¡?‹½XQê>æ?‘¿ÐÅu?À­Õß}º?…ÅBðrç?’HGªÂÛ^?ŽËÜ¿€?UÕh;·Å?õ<úU?e¾DQ„Q?Œznyž-g?Œáò¯ž¼ù?‚ÂÌ]æ?ƒ ?ÿ½?†©b/bJö?†¯Mž684@@@@@,@$?ð?ð?ð?ð?ð?ð?õáN€¿ á²?P?#ƒ¼(´?#P—µ9®@¢Â`¸°¨ª@¨1óÔ£?DKE•Ð-?CRqE} !?”l-LÅ?Œð•Lo@Ÿh¹-æ9@Ä@ ’øÔýó¶@ ’ùCæ)è@ ’øÔýó¶@ ’üî¾q«@ ’øÔýó¶@ ’õÑqž@ ’øÔýó¶@ ’øE¯Hu@ ’øÔýó¶@ ’Û,ç1Ü@ ’øÔýó¶@ ’ᆸ>•@¡½p£× -@¡¾BZîd@¡½p£× -@¡½ó¢Æ¬@¡½p£× -@¡ÈkŒc@¡½p£× -@¡ðM©%@¡½p£× -@¡Ûd'k0@¡½p£× -@¡ßgûPw@5m¥œàv@5m,Ç -@1áhr° Ä@1ÊÑlš @0ûƧï²@0òi0X•'@0õµsê³h@0ÚárJ@0õµsê³h@0Úfy½T@0õµsê³h@0Ø1#%H?}x—™¼:@£¯²-@£°ÎÏ(@£¯²-@£¯ ”_@£¯²-@£¯ŒÄ@£¯²-@£¯>뽕@•õÂ\)@•õÂ\)@•õÂ\)@•õÀ4"_@•õÂ\)@•ö±»C@•õÂ\)@•ô¾Y¸@•õÂ\)@•ö‡¶_@•õÂ\)@•õè/´q@0|ÚQ@0|ÚQ@)=²-V@)>Jüµ@) 1&éy@) ™Bö¬@'Ǔݗö,@'ÇʤÐRø@'Ǔݗö,@'È0ÌÕ>±@'Ǔݗö,@'È?»õN?É^ž6õP?ų6¨¹?‘ YƒÓ`?‹¦ à:?è³/ï†?¶‚µxÅ?ÐbMÝn½?’²ÖxÉ?†t0^[?-õ(ƒ½?Ñ_$^Þ?N@™ˆ£?€bwÄ' g?Œ­ÛÊ™· ?‚zŽbœ¡½?‚ç¬V–…‰?†Žÿ󰉋?†y €¤Y@@(@,@$@;@:?ð?ð?ð?ð?ð?ð¿(ÏŠÓ(?1›:Èþ?“ºVÆ|ø?)rû{A@£¯YÁM”@•õ¥f˜¡?+zÃZQ'?8?WÉx¼$?H쮽âøÐ?B~)ß›ì@¥Œ"®˜Ž@¯©V–H?bÝÃØ„f)?gm="å[?¼æÏÚZl?ÑrdÉàüJ@Ÿm¼»9X¬@Ç@®€ß¾vÈ´@®€ÞvÈ´9@®€ß¾vÈ´@®€à-à @®€ß¾vÈ´@®€á$Ý/@®€ß¾vÈ´@®€à-à @®€ß¾vÈ´@®€Þÿ—$@®€ß¾vÈ´@®€ÞvÈ´9@­£9Û"Ðå@­£9Û"Ðå@­£9Û"Ðå@­£:áG®@­£9Û"Ðå@­£:^5?|@­£9Û"Ðå@­£:)Çy¨@­£9Û"Ðå@­£:xl"h@­£9Û"Ðå@­£:6âë@4Ô xFÜ@4Ñä÷eý‹@/Üj~ùÛ"@/Û~ÿ—$@.N—Oß;@.NV“v@-QÑN;Í6@-Qø -ß@-QÑN;Í6@-QÑN;Í5@-QÑN;Í6@-Q‚©“ á?žˆ2}?ZÁ».œ?‘4!Ÿ•p’?‹ª½¨ª8v?ðÌÇßgé?Êëüâi{?€‚ñêã ?’4 "ëžØ?†[‘'Í?/ò×ÈZø?â2„&ÿh?sxÙ/T?‚nâwfÿ?Œ».êxóÚ?‚q6tNø7?‚éXëLL÷?†špk Y?†špk Y@@@@@(@*?ð?ð?ð?ð?ð?ð?_Gz€?ê+­À?3_û['?ÑŠ±Ÿ:H@®€Þø„‰@­£:¢G¶?S>>ÜØ u?"b³äÇù?±P!>Ý‹I?O‘ÙY -@Ÿh,Ùl,²@È@¦ôD“t¼@¦ôDZ¬@¦ôD“t¼@¦ôDÂø7µ@¦ôD“t¼@¦ôDÝ/ @¦ôD“t¼@¦ôE‡“ݘ@¦ôD“t¼@¦ôC9Àëî@¦ôD“t¼@¦ôC¯·é@ªpô¼j~ú@ªpô¼j~ú@ªpô¼j~ú@ªpõ2a|@ªpô¼j~ú@ªpô¢3œ@ªpô¼j~ú@ªpô¢3œ@ªpô¼j~ú@ªpóg ù @ªpô¼j~ú@ªpóÝ—ö,@204mÅÖ8@20A‰7KÆ@/žùÛ"Ðå@/Ÿö”Fs@.¯ß;dZ@.®Ù‡+@.3üPH@.1hr° Æ@.3üPH@.-úCþ\’@.3üPH@.-žƒä%¯?É^³Dw'?äm°û0Ž?‘.Ò®ó_ ?‹ÑqÔ@vÿ?‘¿ -Óñ›?‘‚ÊŸû©?ÐbMçê_x?’)£µ“[+@8Iç@8Ù?Š÷iž$@8Î÷@8i§@8Å@8S@8û—?« ¡½ÄðJ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøË@ª+…¸R@ª33333@ª+…¸R@ª4¼@ª+…¸R@ª9XbN@ª+…¸R@ª`hÛ‹­@ª+…¸R@ª–lô"@ª+…¸R@ªvR½<6@¡ÖX“t¼j@¡ÖV‡+ @¡ÖX“t¼j@¡Öi 'RT@¡ÖX“t¼j@¡ÖPå`A‰@¡ÖX“t¼j@¡Ög†Â&@¡ÖX“t¼j@¡ÖLÙè>C@¡ÖX“t¼j@¡ÖCŠ @7ëµsê´@7é^žš@5sS÷ÎÙ@5sn.±Ä2@4ù7KƧð@4÷¯·é@4¸DЩ*@4ª³g ù -@4¸DЩ*@4¶lô!.@4¸DЩ*@4­5¨Xy>?}Ñ¿ž,?’‚€‡d_s?”^RžpX?­×‡·lôg?ÊI]mû­B?½:7{ë*J?—¤o„C?’{cü€øõ?低NëU?¬]~ɺ¶@?¯¦>5¬‡?³º{$Õ@?¤WÙAâèå?™Uîœsú?©¼wX¬?§¸'ôÔD[?§R†Í?§8©$ -"º@@@@@*@*?ð?ð?ð?ð?ð?ð? H¼c@¿X—JL?b´½ôÀË?jïdÓx@ªHË„@¡ÖUÿü¯ð?xNæX(&?†Á3ƒHò’?Å…p’øç•?ä4Kð?Ùü@Ÿ`QlüÙ;@Ì@£]3¶E¡ËÁ.„€@£]3¶E¡ËÁ.„€@£]3¶E¡ËÁ.„€@£]3¶E¡ËÁ.„€@£]3¶E¡ËÁ.„€@£]3¶E¡ËÁ.„€@¬>0£× -=Á.„€@¬>0£× -=Á.„€@¬>0£× -=Á.„€@¬>0£× -=Á.„€@¬>0£× -=Á.„€@¬>0£× -=Á.„€@9=:’£Á.„>¤µÜÆ@4œIº^5?Á.„M‰ûçm@3~V“uÁ.„QnÙ‡@3._oÒ Á.„NÜC,¥@3._oÒ Á.„NÜC,¥@3._oÒ Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÍ@©èØbMÓ@©èØQë… @©èØbMÓ@©èØÆäÍø@©èØbMÓ@©è×ÚÅ=Ò@©èØbMÓ@©èØ~çÆ@©èØbMÓ@©è×ÿû£u@©èØbMÓ@©èØÅ†@“+ J@“,NE%@“+ J@“ÍiG@“+ J@“2ÈÙŠ@“+ J@“ö”Fs@“+ J@“4R!@“+ J@“d. @204mÅÖ8@20FÇd®@.Çï²-@.È>BZîc@-›dZ¬@-›Và·e\@.­úCþ\’@.®Xsœ–@.­úCþ\’@.­ì*Ÿýó@.­úCþ\’@.­ã,Ù¢´?É^¨¯Âj?ÅÁè]9?‘"žÉQJé?‹ÇÁBÙù*?üYY%?ÍÊ/z?ÐbMçµ7§?’Ï9þn?„=¾ý,D?4ái¶Ù?ÜÜv©¢ -?\Ÿ¨ð :?€b™Qž?Œ¬7c‹­Ï?‚~ƒ”@\?‚ë•ä™ Š?†‘"‘Fùá?†ßÁL“å@@"@"@&@6@5?ð?ð?ð?ð?ð?ð¿'¼üÈè¿5sæ]ø?6Éúê€?|\·Ãt—@©èØ<Öô—@“`€´R?'HJ´+b?%Hínì?JnðÃGˆ ?CÎÙüYt@Ÿs&)Ž?@Î@­¡oŸ¾w@­¡nV’@­¡oŸ¾w@­¡l‹C•‚@­¡oŸ¾w@­¡hr° Å@­¡oŸ¾w@­¡tðØDÏ@­¡oŸ¾w@­¡n¤¨ÁU@­¡oŸ¾w@­¡mí(Œç@£ÍbMÓ@£Í#× -=q@£ÍbMÓ@£Íéùr@£ÍbMÓ@£Íéùr@£ÍbMÓ@£ÍÃa@@£ÍbMÓ@£ÍeýŠÛ@£ÍbMÓ@£Íï4Ö¡@8¿–»˜È@8©“ àß@3^Ù‡+@3_Š Þ@2Ú~ùÛ"Ñ@2Ü/ƒ{J#@2&YJôðØ@2&”FsØ@2&YJôðØ@2&¸ºÇ@2&YJôðØ@2%m\ú¬Ú?žˆ2}?—É·R©Ï?‘yß]³Õø?ZÁ».œ?‘·Xâe?’£sðU Z?Ÿ‹‘+-/Ü?•yom?‘F·ˆH>d#?’÷fAzQa?Æ<äQøN?ŽõÕJ?„ü›ðÓ?ƒ¼9XNÄu?‡¤o„C?‘  ¶‚3@@@@@ @&?ð?ð?ð?ð?ð?ð?2‡Ô‹¿Xn1‚Æ?Lá¶ ·B÷?^8¶¦ÈÆÄ@­¡oÚŠ@@£Í˜J‚?pþóÎz‹?wsÒ·J?áQ´ê£ú±?áÈxtâ @Ÿm®Èáp§@Ï@¡¹H´9X@¡¹M‘hr¯@¡¹H´9X@¡¹IÞÑ@¡¹H´9X@¡¹K’:)Ç@¡¹H´9X@¡¹G®zá@¡¹H´9X@¡¹GÕfÏB@¡¹H´9X@¡¹KP°ò|@¢îbMÒñª@¢îdÝ/ @¢îbMÒñª@¢îjW§†Â@¢îbMÒñª@¢îjÚ¹õZ@¢îbMÒñª@¢îhÎp:û@¢îbMÒñª@¢îh Ô•@¢îbMÒñª@¢îf1ø @7|ÚQ@7°‰ 'R@3° Ä›¦@34êJ@2>V“u@2BˆÎp:û@1æYJôðØ@1èï4Ö¡b@1æYJôðØ@1ãFÜ]cˆ@1æYJôðØ@1áÄ2ÊW¨?гá‡}?‘‹PƧ¢$?–™@^Ú¢?ŒR‹w#z?“K–ºé…/?‘Û.Yrî?‘â%ì˜ ä?–HÞÆzì²?’üüšë‚J?@§[*^?’we °÷¬?’÷fAzQa?¿N†Ï¸?à í¡h„?„‘Za¹Q?ˆã1µR?Œúq‘?Ä;Ãkr>@@@@@&@(?ð?ð?ð?ð?ð?ð¿K8IÑÐ?9íì¨?I™ÄcÔà?B  eÝŠ@¡¹J-aã@¢îgIrR?h4n«R­Û?_à¨l§¡â?Ò5.ØD?¹¥CtéØ@ŸkzÿNCÄ@Ð@¢Ðå`A‰@¢záG®@¢Ðå`A‰Á.„€@¢Ðå`A‰Á.„€@¢Ðå`A‰Á.„€@¢Ðå`A‰Á.„€@¢Ðå`A‰Á.„€@•ð$Ý/@•öÝ/Ÿ¾@•ð$Ý/Á.„€@•ð$Ý/Á.„€@•ð$Ý/Á.„€@•ð$Ý/Á.„€@•ð$Ý/Á.„€@8G>«6z@5ŠT`ªdÃ@4Yº^5?}Á.„M‰ûçm@3²-VÁ.„QnÙ‡@3O „MÁ.„NÜC,¥@3O „MÁ.„NÜC,¥@3O „MÁ.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÑ@« ¤Z¬@« ¤Z¬@« ¤Z¬@« ¦ -¦L/@« ¤Z¬@« ¢ø7´£@« ¤Z¬@« ¥Éä@« ¤Z¬@« ¡×Ûô‡@« ¤Z¬@« ¡‰7KÆ@ª¡l‹C•@ª¡lIº^5@ª¡l‹C•@ª¡o–»™@ª¡l‹C•@ª¡m\ú¬Ú@ª¡l‹C•@ª¡l¥zxl@ª¡l‹C•@ª¡n.±Ä3@ª¡l‹C•@ª¡m\ú¬Ú@4‡>«6z@4‡§†Â&@25ãS÷ÎÙ@25ÜÆ?@1ÐA‰7KÇ@1Ð quŽ@1._oÒ @1-ŠÚ¹õZ@1._oÒ @1+˜Çâ‚A@1._oÒ @1+çl‹C–?|¬Çëý ?jú‚<·™?” -Ÿ”îtI?Œ<…ÓÆÝ?‘ÏX¼ãs~?’IåŠú?|öOÿÝ?’µ4ãÝÿ?’hÕü‰­?;ß $Þû?’ºñS©YÖ?‘õe\Š«p?‚Ö˜>µDà?=d­úå?ƒ]€µ,Vß?†ÞåØÜÓ?ˆ0&YÊEd?Š|)-}í(@@@@@,@,?ð?ð?ð?ð?ð?ð¿:\F“`?2«ÍÓ?:¤×iÿj-?öƒàJ!@« £¼ÛèÎ@ª¡làuP?Z NV=Sê?=ì >R£h?Á”fæ_H?…zRWëÅ@ŸfiÊí‘ò@Ò@£ìQhr°!@£ì^vÈ´9@£ìQhr°!@£ë;Í5¨X@£ìQhr°!@£ê»²þÅm@£ìQhr°!@£ê·éù@£ìQhr°!@£ê¥®æ1ù@£ìQhr°!@£ê¼„µÜÆ@£Ú»dZ¬@£ÚÆ$Ý/@£Ú»dZ¬@£Ù™‡+@£Ú»dZ¬@£Øç ù l@£Ú»dZ¬@£Øû=ÈJ@£Ú»dZ¬@£Ù}¿H@£Ú»dZ¬@£ØïÒòå@7½:’£@7¢{²þÅn@5™º^5?}@4ó{J#9Á@5`A‰7L@4+À6âë@4O „M@3…+ÓÃa@4O „M@3•Â\(ö@4O „M@3Òñ©ûè?„F/·ÿP5?¿ &ð/d%?Äüjl|Õ?¶÷üG>à -?Ë ^㪶Ê?ÑB¦[!?¡ÅꯨŠT?»üÉ–›ú¢?¿¡3A×ÑO?£…} ÑÉ?ÓfµÙú¶?Ô‚ûüï»Ê?•@K/Ù{?²€8Ð7½À?­ó@¯@ ×? :>è-ƒ?¤€3¼¾BÁ?¦ÆIÊv:@@@@@,@*?ð?ð?ð?ð?ð?ð¿ÂåÖ=@¿Å<¼/Œ?œu˜¶MŒ?“4ܹ³@£ë»Sû\@£ÚòT¼Í?°Oº4¼+?©pÕ˜¥zm@"’LÈ@@‰(‘3S@Ÿ^ïò{ˆ@Ó@«3ºáG®@«3ºŸ¾vÊ@«3ºáG®@«3½ eÐ2@«3ºáG®@«3ºõÈÊ@«3ºáG®@«3¾`Ðc=@«3ºáG®@«3»Ó¤¥\@«3ºáG®@«3¼¶óöý@”?üí‘hs@”?ûè¸Ä@”?üí‘hs@”?þÍþ+@”?üí‘hs@”?þJ¿ô“@”?üí‘hs@”?ýCz‚Í@”?üí‘hs@”@Z ñ@”?üí‘hs@”?ÿÝ>À@3ëµsê´@3ëP°ab@1 Ä›¥ã@0þŸÊe1@0Z~ùÛ"Ñ@0Y~´N0@0‚@·€4@0^×{ê@0‚@·€4@0W… ’1@0‚@·€4@0Oô4ä?|Ñb×¶@?Hˆ]ñ9?‘)ûÍÿ×þ?‹¸–¿;ŸÅ?‘×±T©?‘(ØHÙ?|¬Æ Væ?’Eµ§¢~*?¿§³Œ -?0Ô¾1R -?ÿ±6X?„x++?‚zÄÌí*?ŒÐñX‰I?‚‹HÊoù?‚÷ëá÷?†° Ñòo?†©b/bJö@@,@&@$@7@8?ð?ð?ð?ð?ð?ð?AžÖè?;ÇÊq?8\¼áË[?$ÀG7è2£@«3¼rv@”?ý½ýoÝ?X%v1ÚE©?Eå}¬g?¿‚Š%}ÖZ?—" †´ô³@Ÿfá]‚d@Ô@£ -_¾vÈ´@£ -T9Xb@£ -_¾vÈ´@£ -~Åm\ú@£ -_¾vÈ´@£ -¬<žìÀ@£ -_¾vÈ´@£ -™Î_p@£ -_¾vÈ´@£ -wXâd@£ -_¾vÈ´@£ -}—ö+l@¨¯“÷ÎÙ@¨¯ŽzáI@¨¯“÷ÎÙ@¨¯6ÕϪÎ@¨¯“÷ÎÙ@¨¯0ØDÐ@¨¯“÷ÎÙ@¨®÷§†Â'@¨¯“÷ÎÙ@¨¯ -à@¨¯“÷ÎÙ@¨¯!½¥@8%öý!ÿ.@8)XbMÓ@3i‡+ @3P–»˜Çâ@2þV“u@2áÎ_p@2ž«6z‘@2ò䎊r@2ž«6z‘@2•Ϫ͞„@2ž«6z‘@2ÌcñA ? Eˆ‡ðó‹?ª½Š†kf?¬s¨›¶ |?¦áU³6Ö§?¡úñÙà?¦—d4â?Ž=fA:?·Àº0æo>?³Ã7È‘<Ö?Áî˜/áÕÎ?»¼¸ölƒ?¹P¢¹’s³?”⦘¹Ô?¡:¥UYP§?špdÃ2-´?¦PöÔMmk?¨S![cé?ªi‰o+p@@@@@(@*?ð?ð?ð?ð?ð?ð?‚-ÉiÒÀ¿›éûFB?z2WûiY?|±p^óõH@£ -lWip¼@¨¯[c:ƒb?š©£Áxa -?šI.údS@ i7üßîC@¢ÿÄ›¥ãT@¢ÿ±hr°!@¢ÿÄ›¥ãT@¢ÿ`[À7@¢ÿÄ›¥ãT@¢ýäM:“@¢ÿÄ›¥ãT@¢ÿã{J#:@¢ÿÄ›¥ãT@¢ÿ¬˜_÷@¢ÿÄ›¥ãT@¢ÿ“©*0U@8õS&Á¾@8÷“Ý—ö,@5ør° Äœ@6VÈ´9X@5•`A‰7L@6tmÅÖ8†@4ÑÞi­BÄ@6œwškQ@4ÑÞi­BÄ@5ª…‡“ݘ@4ÑÞi­BÄ@5-ÈK]Í?гá‡}?³ÔØZ:“1?可jÝk?È,J à3?Lj!þ_¸ï?É{='"­?±Á1È+@8Iç@8Ù?“Æ×q„nï@8Î÷@8i§@8Å@8S@8û—?‰¢Ò+ÜÝ:@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø×@¡Ò["Ðå`@¡Ò[¥ãSø@¡Ò["Ðå`@¡ÒXï4Ö¡@¡Ò["Ðå`@¡ÒZkP°ò@¡Ò["Ðå`@¡ÒYÎ_p@¡Ò["Ðå`@¡ÒYJôðØ@¡Ò["Ðå`@¡ÒV®}Vm@£×ŠÀƒo@£×Š~ùÛ#@£×ŠÀƒo@£×‰Dg8@£×ŠÀƒo@£×Š#9Àì@£×ŠÀƒo@£×‹àÞÒ‰@£×ŠÀƒo@£×ŽHè§@£×ŠÀƒo@£×hÛŒ@4 ]cˆe”@4 VÕϪÎ@0‚° Ä›¦@0uŽ!–R@0Z~ùÛ"Ñ@0TÂø7´¢@/Ǔݗö,@/»"Ðå`A@/Ǔݗö,@/¾ì¿±[X@/Ǔݗö,@/¾ì¿±[X?‚á²Olºü?µ‡:úÎ ?‘\H{gX ?Uóú*˜?“”>C,4?’ëÆ[2?|öOÿÝ?’u¦ieõ–?ð{¥âdú?°‹Œ÷€?”8©èÈí?“‘k–šj?‚|׿pY?2ô]7?‹v'þ­X?ˆW„hðQ?‰©OO ¨?ˆ0&YÊEd@@@@@,@,?ð?ð?ð?ð?ð?ð¿KjÁ˜?LR§Ð?&Ñ‘hy?!Ã(¨|Ð@¡ÒYè#@£×ŒTëCÛ?F,F‹i?B ˆSÀ” ?“âzûrt?‹ž…-@Ÿg¾Z@Ø@ž–Z¬1@ž–q©ûçm@ž–Z¬1@ž–YA={@ž–Z¬1@ž–]/}:l@ž–Z¬1@ž–_µÝi@ž–Z¬1@ž–Z•(¿ù@ž–Z¬1@ž–Y–%Óð@ªÛ“÷ÎÙ@ªÛ›Ïeì@ªÛ“÷ÎÙ@ªÛ”ÁÍ’ä@ªÛ“÷ÎÙ@ªÛ”V:[@ªÛ“÷ÎÙ@ªÛ•Ps¾ë@ªÛ“÷ÎÙ@ªÛ–Çã2H@ªÛ“÷ÎÙ@ªÛ•¼@7Ì]cˆe”@7ưj¤~@1‡ÎÙ‡+@1†½À$0@0Z~ùÛ"Ñ@0YpC aí@0kxFÜ^@0iyV )x@0kxFÜ^@0h*ôÎ}@0kxFÜ^@0h(¥ñu?Ö?ŠÓ'P?Üaas?‘Ûø{½?Œ}Ñ -½‰ ?ÿÃhý?Ñskîy¤?Ž\Õl6Ò?’ 71ùR -?€Z5kÙÈ?p™[!¹B?ÑI}/‘@?•VãÒÁ?´LuÛ³?ŒÉ¯›nR\?‚{zÞ&U?ƒ!™ä!È?†¨5 Y?†Ê°Ìæ@@"@ @$@2@2?ð?ð?ð?ð?ð?ð¿b$>ü.¿TdŒâ?AûÿõAJ“?>,ZÌÊaé@ž–_€Umy@ªÛ–ì²ó”?X÷q‘9ò?\¡²Ô­¦è?¯7–!DŸ?¸ü‹ä@Ÿn+ÐïM@Ù@ U7ÎÙ‡@ U8bMÒ@ U7ÎÙ‡@ U8ÄVº@ U7ÎÙ‡@ U8‚Ü;Ñ@ U7ÎÙ‡@ U8žïñ@ U7ÎÙ‡@ U7Xâf@ U7ÎÙ‡@ U7*o@¬í¬1@¬í^5?}@¬í¬1@¬í;X÷,@¬í¬1@¬íåÂ*@¬í¬1@¬ífµÀp@¬í¬1@¬íFŠSs@¬í¬1@¬ívJÐ@1}:’£@1}:’£@.Û"Ðå`@.óUzùz@.]ó¶E¡Ë@.]³+@-u¨Xy=Ú@-u’¼–A@-u¨Xy=Ú@-u÷¢'“¦@-u¨Xy=Ú@-uÉã½?É`úBcM?Ì}Ãûp[?‘-5AÔ˜ß?‹¸šŠš?èמ©?¸‹œ1Y?ÐbQë„›¦?’à,Ä2Þ?Œ÷Ïãk?3]Z@˜Û?Í£Mm/?SÜ»_¼j?€bMÕ]f?Œ®–v?‚€Û€¸Í?‚ê¬Ù:âk?†•7 b ?†ÏÅ1C@@*@(@$@5@9?ð?ð?ð?ð?ð?ð¿9ð|”>ôØo€?÷,_\ ? ©Íf‡Ê@ U7”00@¬ía$Ó]?"^ã2űe?óŠ6¢Á?@“À`ác,?0!kNQK@Ÿs¦K ù@Ú@¦D.—Oß@¦D'ÛsyÆ@¦D.—Oß@¦D#n.±Ä@¦D.—Oß@¦CðbMÒò@¦D.—Oß@¦CûdZ¬@¦D.—Oß@¦D–R½<@¦D.—Oß@¦Cÿ;dZ@rŠ=p£×@r}:ì -@rŠ=p£×@r¿¼@rŠ=p£×@rz)Çy§@rŠ=p£×@rÞi­BÄ@rŠ=p£×@rå`A‰7@rŠ=p£×@s+6z@7wâ‚@·€@7n¶TËb@5+¥ãS÷Ï@5"° Ä›¦@4â-V@4Ðuöý!ÿ@48DЩ*@4Ëûµt@48DЩ*@4*u%F @48DЩ*@4¸Që…?}x—™¤µÜÆ@-¤“t¼j@-{Ó·1#Ù@- 1&éy@-€ É® ­@,#¼ÓZ…ˆ@,/3ºvÊ@,#¼ÓZ…ˆ@+ú)Þˆxû@,#¼ÓZ…ˆ@,1ÍS߬@8 -Näy?*)ÖHé?›Ðê9ÐÙ?È? -˜0B?Ÿ¸ÆÍ­ú?–×UØgsj@82rê?’“pÔðU_?’©†g—´b?š>ÿ¡!¹u?¬Ç–&÷æï?œŒäQc@8L?Œî™%ÜÄ?„€1QcFe?„PÉûÍÀ0?‰]ÞÉ^Ï?‰ « Gg@$@$@$@9@3?ð?ð?ð?ð?ðøøøøøøøøøøøøÜ@§ÊeãS÷Ï@§Êm¯hLÖ@§ÊeãS÷Ï@§Êš[07@§ÊeãS÷Ï@§Êc¬ò2P@§ÊeãS÷Ï@§Ê[kÎê:@§ÊeãS÷Ï@§Ê[›„Ÿ@§ÊeãS÷Ï@§Ê[Ž8ì @•*•$Ý@•*–Mþ˜[@•*•$Ý@•*¨¬ñ®@•*•$Ý@•*¤_êË@•*•$Ý@•*˜G={@•*•$Ý@•*‹Éвn@•*•$Ý@•*ŽJ¯ùÑ@9|ÚQ@9_˜.Î@3Ï|í‘hr@3H+Étw@3Z~ùÛ"Ñ@3,±·aQ@2TmÅÖ8†@2FA¢–a@2TmÅÖ8†@2C]Ÿ±p¿@2TmÅÖ8†@2C9rJÖ³?š­˜]?’v÷KŸ?¬>žžŸÖÞ?]“:VE?”žìÝ}?–§ŽØìT?’t D5·±?¢q Aì«'?¤lôH?‘Qã)\üŽ?”¸r|Øæ2?›<þ–`Þ?·6;:?’öÝ^5ûÜ?•ü -V‚¾?‡¨ŠÍæ?‰àÑ:˜?‹½äøé<@@"@(@$@:@9?ð?ð?ð?ð?ð?ð¿l·¨ñ¿P^äÈ?[Ç ¼éÀ?I˜h#LÀ@§Ê^ãÞ_Ö@•*’¯Çn¬?u(‚h?f°×J0β?à¡ho­??íaßk´@Ÿl=”6¥Ÿ@Ý@¦ªÐbMÒò@¦ªÑÇOðœ@¦ªÐbMÒò@¦ªÒð• @¦ªÐbMÒò@¦ªÌ qo@¦ªÐbMÒò@¦ªÐ"·cÞ@¦ªÐbMÒò@¦ªË@ÙGt@¦ªÐbMÒò@¦ªÌÚÆˆz@•ã@ƒn˜@•ã?EjGw@•ã@ƒn˜@•ã@'—‡@•ã@ƒn˜@•ã<øRø¬@•ã@ƒn˜@•ã6ó âú@•ã@ƒn˜@•ã1Èñe@•ã@ƒn˜@•ã:Vßò=@6쿱[X@6 ¬Èß4@2?|í‘h@2="§ž*@0¶§ï²-@0µ´)¶@0…œàu÷@05ÉÍúå@0…œàu÷@0Ë«GL@0…œàu÷@0¹^4?ƒÔo"ë–?ðÓ¡ãö€?‘)úô}>?ŒŸ?B6?’½u=Ý?‘B&ñYè?¨Sp*?“hã ø+ð?€vnþ×A?» tEÙz?“Nô €s?ÝZ!}ˆ?‚ãTʼ =? ç£Þµ?‚oÁ0_+*?„°ìQ?‡©*ô¿®?ˆz´”w®@@*@"@(@4@8?ð?ð?ð?ð?ð?ð¿RÑ(4¿N¯[ëT?8çBú ?@í;ݾ@¦ªÏC²Ö(@•ã:L‘Wà?W¡úcmën?aŸÇh€M?¶ÚT©=yr?Ép´Ø3|@ŸhX(<@Þ@žz}ó¶E¢Á.„€@žz}ó¶E¢@žzcˆe•@žz}ó¶E¢@žz€@žz}ó¶E¢@žz“&Á¿@žz}ó¶E¢@žzd9ÈKî@žz}ó¶E¢@žz~bb¦@­Å#S÷ÎÙÁ.„€@­Å#S÷ÎÙ@­ÅkP°ó@­Å#S÷ÎÙ@­Å(Œç¯@­Å#S÷ÎÙ@­ÅØ­«Ÿ@­Å#S÷ÎÙ@­Ä­7c3‚@­Å#S÷ÎÙ@­ÅVBD:@9eöý!ÿ.Á.„>¤µÜÆ@4=‘hr° @46»˜Çâ‚@3U`A‰7L@3L‹C•@2Ì¿±[W?@2Å '»0@2Ì¿±[W?@3Ÿ6áL@2Ì¿±[W?@2Ç’0¢d@8J¨?«W@!âÏ?‘RsÈW?”–¹rÕ‰?”ª•âP·?‘™t¦£š -@8J¨?“«ö„@×®?–¬HðºDŸ?”Ò}“® ?“ªÇŠÈ@Í?‘«,3vF@8p÷?› ’„ÚAI?–Ϥ?œC‰þx%?’uÛà ?Š$rM´£y@@@@.@,?ð?ð?ð?ð?ðøøøøøøøøøøøøß@¡el1&é@¡e|(õÂ@¡el1&é@¡eP‰ 'R@¡el1&é@¡eÑN;Í@¡el1&é@¡eSÐ|„¶@¡el1&é@¡e„Щ*@¡el1&é@¡evz—@¬¿MOß;d@¬¿49Xb@¬¿MOß;d@¬¿!-w@¬¿MOß;d@¬¿YõY³Ð@¬¿MOß;d@¬¿:Ÿ¾vÉ@¬¿MOß;d@¬¿³©*0U@¬¿MOß;d@¬¾Ç_oÒ @9D¯O „M@9X­«ŸUœ@5Yº^5?}@51&éxÔþ@4d¼j~ùÛ@4"@·€4n@3¿ò䎊r@3:’£S@3¿ò䎊r@3¡œàuöý@3¿ò䎊r@3¦»˜Çâ‚?°¼x‡Ç…Ä?˜?"‡6$?¸Þ)ÒÆ?°ÅaMzÚ?±$—Ú@â?±›»»Ž?´ Z è´ß?®*JŠË?Çc«ó¶?¸š‚ÄöËÙ?°1üTn]?ºsà_Nùr?œÁXÙðÿ?¥C‡y¿^?¢tñÓu?£èŠFÊ?ª¹0ÇåÄ?¨Ðaî#¾ÿ@@@@@,@&?ð?ð?ð?ð?ð?ð?<åû¶Ð?|/Å}Ñ?}7‹õö"? ŠN"911@¡er—v‹ @¬¿X›«eª?šb Æ/G?½qwHŒ ?óx‡eç³@0C—¯X='@Ÿlz@à@£q Iº^@£qÊ~ùÛ#@£q Iº^Á.„€@£q Iº^Á.„€@£q Iº^Á.„€@£q Iº^Á.„€@£q Iº^Á.„€@¬P=ó¶E¢@¬P1hr° @¬P=ó¶E¢Á.„€@¬P=ó¶E¢Á.„€@¬P=ó¶E¢Á.„€@¬P=ó¶E¢Á.„€@¬P=ó¶E¢Á.„€@8įO „M@8Ú™0¾ í@4sS÷ÎÙÁ.„M‰ûçm@3Æ“t¼Á.„QnÙ‡@3O „MÁ.„NÜC,¥@3O „MÁ.„NÜC,¥@3O „MÁ.„NÜC,¥?¶Ú·Œò¸›@8#˜@8¾:@8 >+@8Iç@8Ù?©W»¥ÿ$B@8Î÷@8i§@8Å@8S@8û—?ÆSÌ~6d)@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøá@«gõÂ\)@«gÛ"Ðå`@«gõÂ\)@«gïv_Ø®@«gõÂ\)@«g·´¢3œ@«gõÂ\)@«gçâ‚@¸@«gõÂ\)@«géDg8@«gõÂ\)@«géùrG@žm‘hr°@žs3333@žm‘hr°@ž.Ëûµ@žm‘hr°@žJÀƒn@žm‘hr°@žc¢œwš@žm‘hr°@ž…ðoiE@žm‘hr°@ž‘ÑN;Í@4Û¹Œ~($@4Êxl"h -@1Ùº^5?}@1·¯·é@1`A‰7L@0í¥œàv@0G ù kº@03&Á½¦@0G ù kº@00bMÒñª@0G ù kº@02&€IR?ˆÿÀ)T¿Æ?”êÎlŒy?¤™9tø3C?“²¡Ž+?“”>C,4?–yí+PYu?š•§q!U?šÒ’](¼+?¹íþ™Æôì? j—SV·?˜hüÁ¯Y?¢µu*ó,?±hU¬óø?”~ªd•?”l´~ðJ?„XïWÉò~?‡Õ˜]–GÄ? ²jÖ]É@@@@@*@,?ð?ð?ð?ð?ð?ð?jМ$¢?fpÛ‚X?FiSÁs>?bgÉõnW@«gäÁ…@ž{‰mtÌ?g^¿Ëœ?€Ì6†Êrl?Ê Èÿ€™?å_¹æ cø@Ÿjïq¥½Å@â@¡Vp Ä›¦@¡Vs÷ÎÙ@¡Vp Ä›¦@¡Vuéá°Š@¡Vp Ä›¦@¡VuÂ\*@¡Vp Ä›¦@¡Vr×sû@¡Vp Ä›¦@¡Vròä@¡Vp Ä›¦@¡VqÄ2ÊW@©P« Iº@©Pª~ùÛ#@©P« Iº@©P¨šu%@©P« Iº@©Pª0U2a@©P« Iº@©Pª=p£×@©P« Iº@©PªqÞi­@©P« Iº@©P«¬q ´@6Âò䎊@6ÀØDШ@2Ï|í‘hr@2Ì‘ÑN;Í@2.ùÛ"Ðæ@2+C•%@1–ý!ÿ.I@1•oi@1–ý!ÿ.I@1–âëC-@1–ý!ÿ.I@1—8}¿H?žˆ2}?ÿ﯒?’ -N»A3?{¾“úy6?’ðä¼_?’4¶ó?|¬Çëý ?’&u÷E»@?’üüšë‚J?‘.}áµ$?’íßš?‘µEÂBÕl?Š:t†?ލf†)"?‡z"2Úù)?„†YÊ’È?‰ö±«tï?Šì¾ ;8´@@@@@,@*?ð?ð?ð?ð?ð?ð¿=o§e€?YÇã€>ì‚°M‘êÎ?/Ô Ø¹@¡Vrû4@©Pª´£®? …-G—ó?@—wÕl -?!,Y=M[?‡ÐÄÅ¥”Ð@Ÿg7H~Í@ã@®¤œ(õÂ@®¤©xÔýó@®¤œ(õÂ@®¤¡×Ûôˆ@®¤œ(õÂ@®¤¿HÌ@®¤œ(õÂ@®¤ž\‘ÑM@®¤œ(õÂ@®¤›²þÅm@®¤œ(õÂ@®¤Žæ1ø¡@¨÷…¸Qì@¨÷ƒn—@¨÷…¸Qì@¨÷‚œwšk@¨÷…¸Qì@¨÷$Ý/@¨÷…¸Qì@¨÷ƒn.±Ã@¨÷…¸Qì@¨÷’¼£@¨÷…¸Qì@¨÷n—Oß@8%öý!ÿ.@8$ohÜ@3©‡+ @3ªáG®{@2ûƧï²@2ü]cˆe•@2‚‚@·€5@2‚‚@·€4@2‚‚@·€5@2yb¶®~@2‚‚@·€5@2ŠCþ\‘Ñ?¢Æ÷Xê†?”žP1²"?“ óÎéð\?ö€(tUo?ž€—zcŠR?ÊþtûÙµ?}Ñ¿ž,?•ÞèI1Æ@?•ÇØ¼áêZ?–ª'G_ßJ?¢ÒUöˆ?¯/Õ’¬Œ»?ŒR‹w#z?‘žˆ2}?‹’Ú[ßõ?Ž‚1(w?‘p&Æ ç–?§ÞF-™ü@@@@@,@*?ð?ð?ð?ð?ð?ð¿t’¹“€?BÔX?T7aØÚ?aàs„aYE@®¤žŒCP(@¨÷„†iL~?l6Sl´ì£?„îe w!°?‚;£gN?ð`‚NZ³+@Ÿi㹎Ë\@ä@£˜å`A‰Á.„€@£˜å`A‰@£˜ í(Œç@£˜å`A‰@£˜;çl‹D@£˜å`A‰@£—ò¼£@£˜å`A‰@£—í\ú¬Ú@£˜å`A‰@£—ò×sü@¡š#S÷ÎÙÁ.„€@¡š#S÷ÎÙ@¡šb¶®}V@¡š#S÷ÎÙ@¡šaä÷eþ@¡š#S÷ÎÙ@¡™÷süP@¡š#S÷ÎÙ@¡šNp:û@¡š#S÷ÎÙ@¡šcÉîËú@8›¹Œ~($Á.„>¤µÜÆ@3Ô›¥ãSø@3k¥ãS÷Ï@2V”@2WÎÙ‡+@2=cˆe”°@1ÝOß;dZ@2=cˆe”°@1ì1&éy@2=cˆe”°@2ÞÒˆÎq@8J¨?´¼6¶¦Êü?½…\­½Æ.?¬&¾L=§‰?Ó[XõÿLj?ÉÆ0ý2Û¼@8J¨?¨áókðI}?ÂQaQÞš·?° ¡ðÒ?Àüàfî÷Þ?ÅÊ-a)—@8p÷?±Ù,å,ÀÓ? Ú }P!?°Ôù· -K?­ùO²Þ‚Ù?Ó"Úþöñõ@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøøå@ž¢éxÔýô@ž¢éxÔýô@ž¢éxÔýôÁ.„€@ž¢éxÔýôÁ.„€@ž¢éxÔýôÁ.„€@ž¢éxÔýôÁ.„€@ž¢éxÔýôÁ.„€@›ÏB\(ö@›ÏA‰7KÇ@›ÏB\(öÁ.„€@›ÏB\(öÁ.„€@›ÏB\(öÁ.„€@›ÏB\(öÁ.„€@›ÏB\(öÁ.„€@1žHè§æ@1蛋5à@0\Iº^5@Á.„M‰ûçm@0>V“uÁ.„QnÙ‡@/á-w1ÅÁ.„NÜC,¥@/á-w1ÅÁ.„NÜC,¥@/á-w1ÅÁ.„NÜC,¥?É^ž(“Ç­@8#˜@8¾:@8 >+@8Iç@8Ù?ÐbMØ/×^@8Î÷@8i§@8Å@8S@8û—?€ngH2É9@8 * @8p÷@8¶@8 Ø@8 Ø@ ?ðøøøøøøøøøøøøæ@¯ -Àƒo@¯›¥ãS@¯ -Àƒo@¯ -™0¾@¯ -Àƒo@¯ -™0¾@¯ -Àƒo@¯ÿ—$t@¯ -Àƒo@¯§æ›@¯ -Àƒo@¯{J#:@­$ÐbMÒò@­$Òn—P@­$ÐbMÒò@­$ÐbMÒò@­$ÐbMÒò@­$×Oß<@­$ÐbMÒò@­$ÌÌÌÌÍ@­$ÐbMÒò@­$Øâe-@­$ÐbMÒò@­$ß.Hè¦@9>«6z@8û’:)Çz@4J^5?|í@4Iè>BZî@3®ùÛ"Ðå@3¬¾ß¤@@2î_oÒ @2èQë…¸@2î_oÒ @2ê)Çy¦µ@2î_oÒ @2èK]Ìcò?²„× ì²x?˜¶ÚæÁ€?–/¸Í”p?’\GyÆ©?”Å¥ÒB–W?”º²¶;?ˆÿÀ)T¿Æ?—{UƒO?‘¡Kd·´+?“§ÞÐÞû?›r=Þw‘‰?›¶x•7fÙ?ÀKøù°ê?’ *ïsr?ˆT“Ÿÿ?R è®ãî?ŒÙ”!Çx‡?‹ú èNÆö@@@@@*@&?ð?ð?ð?ð?ð?ð¿pBê¸Ë?X,¤8?cra@ãÆ?\”Äl¬U@¯ ®-}z@­$ÕÓÚà?uµtê³?£öàGà?ÚZ}%n¯?ð«6û›œ@Ÿo—¼:ª¦@ç@Ÿõ8Që…@Ÿõ8Që…@Ÿõ8Që…@Ÿõ9¶ê\h@Ÿõ8Që…@Ÿõ9YŒ¢ @Ÿõ8Që…@Ÿõ;„ö³s@Ÿõ8Që…@Ÿõ6¶- Þ@Ÿõ8Që…@Ÿõ8eC°ü@­8gï²-@­8gï²-@­8gï²-@­8häú¼@­8gï²-@­8j&_h§@­8gï²-@­8i-^˜@­8gï²-@­8i—Í]@­8gï²-@­8ky¶“Ú@2#g ù l@2#g ù l@.8“t¼j@.7¿¢’×E@.*Àƒn˜@.&&V39@-¨Û‹¬q @-£¼ÓZ…ˆ@-¨Û‹¬q @-¤„Œµòð@-¨Û‹¬q @-¤X‘éú^?É^ž6õP?Ëi<õ?‘O¬±G Ñ?Œúoù?ÿÃhý?Þ³EÆ49?ÐbMÝn½?’ ÌÐvLª?à÷ "ù†?‡Õ$µãœ?íˆ »‡?~ð–šdÃ?€b™Qž?Œ³ºžˆ®>?‚ƒ}µà.™?‚ój1s=?†–Ðé(Y÷?† X^)@@@(@*@*@5@8?ð?ð?ð?ð?ð?ð¿IP- ?O^¦?@WÒõ¥Ê?4˜Éâ@Ÿõ9)6fè@­8iú5”K?Odħ.£?Bþ2ôˆ¾‡?—Ä$¶_›D?~ÓÂßAF@Ÿs Ò™O6@è@¦¾õÂ\)Á.„€@¦¾õÂ\)@¦¾ô/õ¼@¦¾õÂ\)@¦¾ãìÊ÷@¦¾õÂ\)@¦¾æfl´Ì@¦¾õÂ\)@¦¾äh³@J@¦¾õÂ\)@¦¾ñ›/ì}@“áG®{Á.„€@“áG®{@“¡`\J @“áG®{@“$q‘y@“áG®{@“Ø*À%€@“áG®{@“¹š@“áG®{@“ǯe H@7òÃÉîËûÁ.„>¤µÜÆ@3¦‡+ J@3±¢ ðM@3€å`A‰7@3о'|Q5@2Œ¿±[W?@2”8þmR@2Œ¿±[W?@2ŒCGVÌ@2Œ¿±[W?@2ƒÒ}@ -@8J¨?”*†¯û}v?—0ŽÏxO?‹¦ >N?˜AÓ æñ?—H¿Fé™@8J¨?¨¸ç¢ÿ¾?¬¬u† P;?•¼ÏK–È•?—#PG?’^Y:·p@8p÷?Ž˜Ýµ#U?ƒÄ¡Íœ¨+?Šˆ^×›',?Œ—ðøÆ8V?Ž<ûŽU““@"@ @"@4@*?ð?ð?ð?ð?ðøøøøøøøøøøøøé@¡2“t¼j@¡2Ôýó¶@¡2“t¼j@¡2õY³Ð@¡2“t¼j@¡2ï4Ö¡@¡2“t¼j@¡2ºÇË@¡2“t¼j@¡2öý!ÿ@¡2“t¼j@¡2öý!ÿ@¡‚å`A‰@¡‚‘&éxÕ@¡‚å`A‰@¡‚¾ í*@¡‚å`A‰@¡‚–»˜È@¡‚å`A‰@¡‚–»˜È@¡‚å`A‰@¡‚°ò{³@¡‚å`A‰@¡‚°ò{³@1-¥œàv@1-žƒä%¯@,ùÛ"Ðå@,Åm\ú¬@,*Àƒn˜@,*dÂø7µ@+åÉä@+HË’;@+åÉä@+!-w1@+åÉä@+!-w1?É_\p)Ï?Òç{íj?‘$Cê¡@í?‹ÑqÔ@vÿ?ÿ £‰¸9?Å{¿Ž<¹?ÐbV‡,?’ ,øÕC©?¹º–Èj?K·‘d]?ÝIMÎ?]#ÍìO¤?€b¡´ñ@?Œ¯þuõí?‚s@ˆaÛ?‚æÊ¬vã?†–f_ÔŠŠ?†l&þ@@@@@,@,?ð?ð?ð?ð?ð?ð¿TبI­?E½?9Û‰ï³>Ã>ø|À§O@¡2©Ù@¡‚¦îÛ?HßÅ#,?)µ*FT?Ž'Û‚™ž?Zªü"&@Ÿs ”¢ü@ê@ Ø33333@ Ø3÷ÎÙ@ Ø33333Á.„€@ Ø33333Á.„€@ Ø33333Á.„€@ Ø33333Á.„€@ Ø33333Á.„€@¨@ÌIº^5@¨@Ñhr°!@¨@ÌIº^5Á.„€@¨@ÌIº^5Á.„€@¨@ÌIº^5Á.„€@¨@ÌIº^5Á.„€@¨@ÌIº^5Á.„€@7eöý!ÿ.@7gÕmët@3¸r° ÄœÁ.„M‰ûçm@3 ²-VÁ.„QnÙ‡@2èè§æ›Á.„NÜC,¥@2èè§æ›Á.„NÜC,¥@2èè§æ›Á.„NÜC,¥?|¬h2:“@8#˜@8¾:@8 >+@8Iç@8Ù?ƒ6ð]g™ä@8Î÷@8i§@8Å@8S@8û—?ƒ„Zgr´@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøë@¡|í‘hs@¡’L¶ª…@¡|í‘hs@¡~Ð]ÜÔ@¡|í‘hs@¡Ìvù@¡|í‘hs@¡‰)·jÕ@¡|í‘hs@¡‰Z¶t@¡|í‘hs@¡ŽT'-K@¢¡t¼j@¢¡ m±oE@¢¡t¼j@¢¡6óRw@¢¡t¼j@¢¡!NAaw@¢¡t¼j@¢¡g@¢¡t¼j@¢¡˜”@¢¡t¼j@¢¡¿©¶@7ð4mÅÖ8@7ïRþR@3—+ Iº@3‰h k@2¹7KƧð@2µÈ+Ä@2zÔ,<ží@2}0ù—Q@2zÔ,<ží@2}ÜÈ›@2zÔ,<ží@2~RQ44©?–…­à Ø—?’ó̇+ø?’ß ¶Tª÷?Ž×îoïcÃ?’†YB­Ú2?ó”—B?—Õ˜ b2Û?£åº~Ï?—}T9IÐÉ?’‘4Kv–x?“|;‡õ*?PO W”Ó?‡Ì Â93¿?“mçŒ-Ì?‘|6}Š>?„iÁY^#¿?”2êTå?²>ô!@@&@$@"@.@1?ð?ð?ð?ð?ð?ð¿H‰n?bÚ¡íc?Wã-‡?V8rÅNÀ@¡Œ#?Óó@¢¡2‡ ¸?rqFûnš?rdFo7«?á 0@½Š¦?ÝS=6`p@ŸmýûÌ¥Ú@ì@¨%Ÿ;dZ@¨%¢ Iº]@¨%Ÿ;dZÁ.„€@¨%Ÿ;dZÁ.„€@¨%Ÿ;dZÁ.„€@¨%Ÿ;dZ@¨%“©*0V@¨%Ÿ;dZ@¨%˜ -à@¨ôº^5?}@¨ô»dZ¬@¨ôº^5?}Á.„€@¨ôº^5?}Á.„€@¨ôº^5?}Á.„€@¨ôº^5?}@¨ô¾¸Që…@¨ôº^5?}@¨ô»/ìV×@7 ]cˆe”@7 …¸Qì@3é‡+ Á.„M‰ûçm@2¾V“uÁ.„QnÙ‡@2‘Þi­BÄÁ.„NÜC,¥@2‘Þi­BÄ@2·€4mÆ@2‘Þi­BÄ@2·éùr?‡YÍ_@8#˜@8¾:@8 >+?“K–ºé…/?™¢tY+9>?ˆÿÀ)T¿Æ@8Î÷@8i§@8Å?’¯dL¶t?•÷f¸D¦?aäŽ -Ø@8 * @8p÷@8¶?屘Úã?‹¹ÇlŒ@@ @(?ð?ð?ðøøøøøøøøøøøøí@¢ª¬‹C•@¢©n—Oß@¢ª¬‹C•@¢ª±Ä2ÊX@¢ª¬‹C•@¢ª´ã¼Ó[@¢ª¬‹C•@¢ª®æ1ø¡@¢ª¬‹C•@¢ª®±Ä2Ê@¢ª¬‹C•@¢ª«jçÕg@¡‰7KÇ@¡lIº^5@¡‰7KÇ@¡ÞÒˆÏ@¡‰7KÇ@¡ù³Ð|…@¡‰7KÇ@¡IQ‚@¡‰7KÇ@¡ý²-V@¡‰7KÇ@¡û=ÈK@7Y*0U2b@6ÀA‰7KÇ@2€ Ä›¥ã@2{6z–@2 ²-V@2 Û"Ðå`@1._oÒ @1*…‡“ݘ@1._oÒ @1)õY³Ð}@1._oÒ @1*Ÿ¾vÈ´?ó÷ãnÐ(t?”•µ³S_?”ñ-a} ?Žëâÿ1¥?•³™»7…?’ŒZzˆZ”?ÙH²6m§Å?—{UƒO?”p¶I”“ž?èÊ\då?“‚Û£0Î¥?’÷fAzQa?ó˜êޤžR?u/®Xã?‹v'þ­X?‘ÄÚ êÛu?‡v>ª¸ ?‡´*žZ}Õ@@@@@*@(?ð?ð?ð?ð?ð?ð¿U”NÙ¿eQó÷?_-ÌÔ&_ê?_w=™eê"@¢ª­žúèw@¡þ"C(?nÉÃ|äg©?méšu[€?ѿȡ9«?Ïã…5Ta¡@ŸsB.ž @î@¡/å`A‰@¡/å`A‰@¡/å`A‰@¡/šÏem@¡/å`A‰@¡/ëC -@¡/å`A‰@¡/NÌý2@¡/å`A‰@¡/ñÄ@¡/å`A‰@¡/oQV@¤HŸ;dZ@¤HŸ;dZ@¤HŸ;dZ@¤H›hah@¤HŸ;dZ@¤H£Ó›g@¤HŸ;dZ@¤H¥):O7@¤HŸ;dZ@¤H£(Ê•V@¤HŸ;dZ@¤H›núÈž@4í¥œàv@4î_oÒ @1Š^5?|í@1†/Hxqœ@0ô“t¼j@0ê3¡ -z|@0œÚQÎ@0” Ó'Ð@0œÚQÎ@0‘;«äÙ@0œÚQÎ@0’Û("wk?|Ñb×¶@?Š›°i?‘rÞµò?Œ‚•zòÅ?• GœÏÐe?’׎L'y#?|¬h2:“?’¸FšDí?|™"x‹?5Ôá…?–x_OqÊ?•»ÐŽVæN?ƒ’íÕà­?DÆÞ£xÔ?‚þå9¦]±?„2Eó×ùò?Œ=`XªDÔ@3‚° Ä›¦@3fL/ƒ{J@3 "Ðå`B@2Ò×sü@2+xFÜ^@2° Ä›¦@2+xFÜ^@20L`}@2+xFÜ^@2Õ˜4>b?‡‡á´WÉ?´Í U?£Û/_ ·?´jŽ}ªý›?£ t4ÂgU?›ëj5¾?|¬Æ Væ?͹/vö\?Ñ.Ô†U?ÂjVß^ÈÂ?ž^J+¯ƒ‹?¦`‡Lk.î?‚ 8œ@Ž?¨! þý6?³ß"xþ?±]CÞ¶è?› Ž­È™©?©Ð½MrѶ@@@@@7@7?ð?ð?ð?ð?ð?ð¿k`¡j§?OjG¦P?b@v³@Q?aë“ÿ<ðâ@¥¦×lœØ²@—Ë ƒ?¹eHè?~n‘™2?ôòƒªàŒ?ð««ò¿†@ŸbŽ’èä~@ð@­™¼í‘hs@­™½/Ÿ¾@­™¼í‘hs@­™½<63@­™¼í‘hs@­™½²-V@­™¼í‘hs@­™À[À8@­™¼í‘hs@­™»‹¬q @­™¼í‘hs@­™½<64@¢î²-V@¢î²-V@¢î²-V@¢î²½<6@¢î²-V@¢î°å`A‰@¢î²-V@¢îµ*™2@¢î²-V@¢î²äŽŠr@¢î²-V@¢î³3333@4” xFÜ@4“Ð|„µÝ@2i‡+ @2h†YJôñ@1Ÿ²-V@1ŸAò×s@0𖻘Çã@0ïhÛ‹­@0𖻘Çã@0ð'RT`ª@0𖻘Çã@0ïß;dZ?|öOÿÝ?•ìspîî?‘ùé éµ??ŒÇQ´¤µÜÆ@4Ï|í‘hrÁ.„M‰ûçm@4`A‰7LÁ.„QnÙ‡@3Þ«6z‘Á.„NÜC,¥@3Þ«6z‘Á.„NÜC,¥@3Þ«6z‘Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøò@¯È0 Ä›¦@¯È/²-@¯È0 Ä›¦@¯È14êJ@¯È0 Ä›¦@¯È0 Ä›¦@¯È0 Ä›¦@¯È0oiDg@¯È0 Ä›¦@¯È.}Vlõ@¯È0 Ä›¦@¯È.p:û€@ªÛž¸Që…@ªÛŸ;dZ@ªÛž¸Që…@ªÛŸ—$tT@ªÛž¸Që…@ªÛŸ±[W?@ªÛž¸Që…@ªÛŸ;dZ@ªÛž¸Që…@ªÛžß¤?æ@ªÛž¸Që…@ªÛŸb¶®}@4²ÃÉîËû@4²a|ÚR@/Š~ùÛ"Ð@/Š ÞÑ@.rn—Oß@.që…¸R@,ÑÑN;Í6@,Ñ&éxÔÿ@,ÑÑN;Í6@,ÑN;Í5©@,ÑÑN;Í6@,Ñ4êJ?€‚ñêã ?ÖÈ ¼?‘1f_¨Ï÷?Œ<…ÓÆÝ?üEÙáõ{?¾ƒìÈÁ?}Ñ¿ž,?’¼  g¶?ŠA)Nîá?e”[|ú(?äú’M @Ÿkúû“‚ @õ@ ×Â\(ö@ ×Öi*w@ ×Â\(ö@ ××#[@ ×Â\(ö@ ×ØdÙ@ ×Â\(ö@ ×ÄœBýo@ ×Â\(ö@ ×·[]Ñ@ ×Â\(ö@ ×»XÖƒA@¥ö&ffff@¥ö0@ÜEý@¥ö&ffff@¥ö7ž @¥ö&ffff@¥ö5·U>@¥ö&ffff@¥ö'ÀgÁ@¥ö&ffff@¥ö*¢Ù@¥ö&ffff@¥ö3`q3¡@8ÿ–»˜È@8ü«P׌@3Ê^5?|í@3ÁûÊú@3A‰7KÇ@3 psÞ@2ÏO „M@2È9jÃÄ—@2ÏO „M@2¿`Ê,u@2ÏO „M@2Ä ç†7L?šž†%³Õh?ÏZu‰­D?•Ó)sÄó?’âÍÑß?“f94IÝ?’ùŠƒÌ`?¡ë MV{¶?’U:÷”?’—eíhd­?˜,=ãÌÎ?•Økîn™?”‰—Ðhã?‚©³:«?Ž%f+Ö?À…®£?v#wŒ)•?—_¦3+z?‘÷ßÏ åa@@@"@$@3@.?ð?ð?ð?ð?ð?ð¿x,;¥@?R¢Í5Z?[\-þ'+y?a+rf˦Ó@ ×ÁsowÁ@¥ö-Îå·?u¢ÝNwž?z('«†µ?â í¤Í?â5–»z¶à@ŸnÕ¼Ng®@ö@©h-V@©h,ÌÌÌÍ@©h-V@©h+¹Œ~)@©h-V@©h.—Oß@©h-V@©h0 Ä›¦@©h-V@©h/ìVÕÐ@©h-V@©h/·éù@ª©ÌÌÌÌÍ@ª©ÍOß;d@ª©ÌÌÌÌÍ@ª©ÎcŠ -@ª©ÌÌÌÌÍ@ª©Í«ŸU›@ª©ÌÌÌÌÍ@ª©Ð¸º@ª©ÌÌÌÌÍ@ª©Ï\(õÃ@ª©ÌÌÌÌÍ@ª©ÑÞi­C@5[¹Œ~($@5[¹Œ~($@2ý‘hr° @2ü¥zxl"@2•`A‰7L@2”÷eýŠÛ@1õµsê³h@1õÖ8†YK@1õµsê³h@1ôÂø7´¢@1õµsê³h@1óg ù l?|öOÿÝ?“âÜ[ê• ?“IK¹É?ŒR‹w#z?‘·Xâe?‘¦‘=W?}Ñ¿ž,?•íÌÖf?—+Áèlç?RLnj?‘އ Àí?‘C å;Ã?„ã¼ÓZ…‡?7'în‹K?ˆ†Ô‡º:?ƒ=rµE=?‡´*žZ}Õ?‰©OO ¨@@@@@"@$?ð?ð?ð?ð?ð?ð?HÑBF?Jqá8Ø?,ùóéÚW?'._üøÍ@©h.“¨k@ª©ÏËžf?L®…hdÀ,?Gf•p$)q?¥B—\g!?šÀÚAª“®@ŸfÊAƒš˜@÷@§ŸÉº^5?@§ŸÊZ]Á‹@§ŸÉº^5?@§ŸÏQ%Í7@§ŸÉº^5?@§ŸÏô‘nˆ@§ŸÉº^5?@§ŸÎ‚3 -@§ŸÉº^5?@§ŸÏ² Å@§ŸÉº^5?@§ŸËŠiÛ´@”Ù‡+@”ÎSï1@”Ù‡+@”Ƨ8Þd@”Ù‡+@”¸¬<:@”Ù‡+@”ɶaN‘@”Ù‡+@”àîã=@”Ù‡+@”ßøìŽ@6Ñ|ÚQ@6ÑWï¾vˆ@3#÷ÎÙ‡@3'‰Óm1x@2ƒt¼j~ú@2ˆm߸ ª@2Þi­BÄ@2ƒô‰»@2Þi­BÄ@2¡SÑ@2Þi­BÄ@2Íâ^{¬?‚Ú¡ËG7èFo˜?Q+6Í–¡;@§ŸÌk”œö@”ÔÙ§ÛÉ?bÖvÝ´j?qn9ƒ 'l?Ê/o¢¾?ã>GX@Ÿi2¸9#Ë@ø@¥ïàA‰7L@¥ïàÄ›¥ã@¥ïàA‰7L@¥ïàIQƒ@¥ïàA‰7L@¥ïàuöý"@¥ïàA‰7L@¥ïàuöý"@¥ïàA‰7L@¥ïá@N¥@¥ïàA‰7L@¥ïßåÉ@¨“k Iº@¨“k Iº@¨“k Iº@¨“lIº^5@¨“k Iº@¨“i^ž @¨“k Iº@¨“k6z‘@¨“k Iº@¨“jqÞi¬@¨“k Iº@¨“iá°‰ @4” xFÜ@4”“t¼j@0» Iº^@0º¦L/ƒ{@0,j~ùÛ#@0,¬1&ê@/Ǔݗö,@/ÆÂ&€J@/Ǔݗö,@/Á‰7Kƨ@/Ǔݗö,@/Á–R½<6?|¬Çëý ?ß‹’bÏ?‘=?ùKh?‹ÝÉ!ë#?’Z†Ažj?‘£‡9²þ?}Ñ¿ž,?’NÛˆV(?£½:…?ø,~[´?’aÔæ -/ ?Éöm/wBZ@2}:’£@2}ÈK]Ì@1° Ä›¦@14êJŒ@/íOß;dZ@/èÎp:û~@0Œ~($ @04êJŒ@0Œ~($ @0öý!ÿ.@0Œ~($ @0lô!.?É^žQ5P‚?Eˆ‡ðó‹?’>¯\¾¦?—^tø -a?‘oNÅ’+?“ d?ÐbMçê_x?’)£µ“[ -fuæ?”3jà’_?’‘Ç#·X?‘žˆ2}?’.8 -B?ƒ/‹ÍY}‘?þ,DöP?‡Ü̈- -?…”rsw?‡?®\Âä?‡ã ËÄž@@@@@$@*?ð?ð?ð?ð?ð?ð¿BWR¿N–‚ŠŒ?`ö`íA?7ªÑb—~@¥9í¹:x*@ž±’˜?;eH _C?Xø½€­Yb?zÛJ.IR?¹‘ù¢çñë@ŸhC‘ù9=@ý@¬5w@¬5î—Oß@¬5w@¬5ïÅo@¬5w@¬5ïìVÕÐ@¬5w@¬5ï·éù@¬5w@¬5î.±Ä4@¬5w@¬5îzáH@Ÿ­XbMÓ@Ÿ­Y™™™›@Ÿ­XbMÓ@Ÿ­W -=p¤@Ÿ­XbMÓ@Ÿ­WXâe@Ÿ­XbMÓ@Ÿ­WXâe@Ÿ­XbMÓ@Ÿ­WsüP@Ÿ­XbMÓ@Ÿ­Vð¹@1wâ‚@·€@1wKƧïž@+WKƧï@+WXâe,@* 1&éy@* 1&éz@(ÿåÉä@(ÿåÉå@(ÿåÉä@(ÿØ­«ŸW@(ÿåÉä@(ÿò䎊r?É^òÀXæN?Ï[äevÈ´8@®”7ÎÙ‡@®”6E¡ÊÀ@®”7ÎÙ‡@®”_oÓ@®”7ÎÙ‡@®”MBÃÉï@®”7ÎÙ‡@®”R{²þÄ@®”7ÎÙ‡@®”UfÏAò@­¿33333@­¿.—Oß@­¿33333@­¿1&éxÕ@­¿33333@­¿ /ƒ{J@­¿33333@­¿@4mÅÖ@­¿33333@­¿IDg8@­¿33333@­¿?Š Þ@7uS&Á¾@7t9XbN@4™º^5?}@4®V“t@4Ãt¼j~ú@4Üàuöý"@4\ÚQÎ@4xDЩ*@4\ÚQÎ@4ŒIº^5@@4\ÚQÎ@4Ž\‘ÑNp³ø?8Y¸ÀV?Èv0{Gt?v󒇾O@«^µ0WÞp@œw‹6öŠ?+®ëoð¿??)ýƒ­ë¥?Ráƒ%È{A?M´; ´Yç@ŸszÑl@@¤š‡+@¤šðbMÒñ@¤š‡+Á.„€@¤š‡+Á.„€@¤š‡+Á.„€@¤š‡+Á.„€@¤š‡+Á.„€@”Ô‡+ @”Ór-V@”Ô‡+ Á.„€@”Ô‡+ Á.„€@”Ô‡+ Á.„€@”Ô‡+ Á.„€@”Ô‡+ Á.„€@7„¯O „M@6õt-N@5uãS÷ÎÙÁ.„M‰ûçm@4ÒÐå`A‰Á.„QnÙ‡@4–ý!ÿ.IÁ.„NÜC,¥@4–ý!ÿ.IÁ.„NÜC,¥@4–ý!ÿ.IÁ.„NÜC,¥?"r+©©£@8#˜@8¾:@8 >+@8Iç@8Ù? Sñƒ´V-@8Î÷@8i§@8Å@8S@8û—?‚£Ë @8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@ªøQë…@ªõÂ\)@ªøQë…@ªñ;„g‘@ªøQë…@ª𸵜Ã@ªøQë…@ª÷tw[Â@ªøQë…@ªõore@ªøQë…@ªõ¹ èy@“}G®zá@“}A‰7KÇ@“}G®zá@“}VZ3(@“}G®zá@“}KÖ>à%@“}G®zá@“}aGAÅ @“}G®zá@“}O[A‚*@“}G®zá@“}O¼Ç0Ú@7Ì]cˆe”@7·Ï[X?@33S÷ÎÙ@33z{ªéª@2€å`A‰7@2êìn@@2:Ô,<ží@2=¸Ø†@2:Ô,<ží@2=‰ËÌéï@2:Ô,<ží@2=Õ$0šw?~ì“?ÕÒJ?Þ÷ð`¾?‘)õó Ä?Œ»ãÞ~?’O¾mI³?’á\o¯p?a÷nñ?’Y’A?‘“EE/J?-õI­¬?’Húüˆ¦?‘°KÊìCá?©˜­Þ†·f?†Y ‡Ü?ƒÝŠXì#?†»QíB?‰]€Ñ–ÜË?‰ Èt_‚á@@"@"@ @9@6?ð?ð?ð?ð?ð?ð?¤ÏiÀ?`ÐtT?0=ŠMöu?XûHýWq»@ªöKê@“}Lùå=?P.ÔÈ T?y*·bUiû?¨@äÂæxË?úåè¥QZ@Ÿg]£'@@£”¥ãSø@£”“u@£”¥ãSø@£”.æ1ø¡@£”¥ãSø@£”/Aò×@£”¥ãSø@£”+ÓÃa@£”¥ãSø@£”"ÃÉîÌ@£”¥ãSø@£”&ö”Ft@®1©ûçl‹@®1–‡+ @®1©ûçl‹@®1¸ºÇË@®1©ûçl‹@®1ºQÎ@®1©ûçl‹@®1«¹Œ~(@®1©ûçl‹@®1 ëíúD@®1©ûçl‹@®1™b¶¯@8p4mÅÖ8@8T¯O „M@5uãS÷ÎÙ@5~æ1ø @56§ï²-@5,žì¿±[@4æYJôðØ@5æšÔ,@4æYJôðØ@4éîËû¶@4æYJôðØ@4êu%F ?Ÿ‹‘+-/Ü?œ’1„<Ô ?¸Š³ùÓ³¢?¤3Òƒ°?³•Šä•ìS?®¿sY°(?•²»UbB2?¢n4Ñ?¶EÎ%:9?œ¾,#“t¿?®+Ò¥õÿ/?¤n]3mÍ?­$°*a„?¦.œ9؇8?®'ºwò?¡~l’VoŸ?©)Ũ‰(æ?£ªS@Gd·@@@@@(@(?ð?ð?ð?ð?ð?ð?qõëØ<€?c¡W_°?aˆ(Ëžý?hÞ\z‹1³@£”"+s@®1Ÿ)ëV“u@1=›Ñ{@0uµsê³h@0utÐn) -@0uµsê³h@0tZNò¢@0uµsê³h@0v5 Ùì–?}õ¬#„­?!Ô¡.?‘L߉N2;?‹À0ЀÐ?‘-'¬‘Ãi?òrCêÝ?|¬h2:“?’tìFLjù?‚‰í41ð’?ƒ%¹=|ÊV?‡%çqߌ?†àV·þzÇ@@$@ @@4@5?ð?ð?ð?ð?ð?ð¿JLøä?Qs*Μ?0EsÉ€?&Ž Åò@žóüÌ_J@¬¶((Ī?P!³÷Îx?GTÄV¥Ø?«nL¢;uÐ?› -z -ƧL@ŸfýŒ];?@@¢Î½p£× -Á.„€@¢Î½p£× -@¢ÎÛÍ5¨Y@¢Î½p£× -@¢Î³œ¾à@¢Î½p£× -@¢ÎàëíúD@¢Î½p£× -@¢Ï{¥ãSø@¢Î½p£× -@¢Ïô¯O „@¥¢÷ÎÙÁ.„€@¥¢÷ÎÙ@¥¡§l‹C–@¥¢÷ÎÙ@¥¡â©“ á@¥¢÷ÎÙ@¥¢¼@¥¢÷ÎÙ@¥¢ [À@¥¢÷ÎÙ@¥¢”Ö¡aæ@6Ñ|ÚQÁ.„>¤µÜÆ@4J^5?|í@42-V@3éÛ"Ðå`@3ÿ „M;@3p–»˜Çã@3gXâe,@3p–»˜Çã@3%öý!ÿ.@3p–»˜Çã@3-í(Œç@8J¨?¢æ# ßèÄ?ÁHå,Käó?¯©C“Ë—?ѶöÄ¥±¾?ÒüHŽæg@8J¨?£ëÇfÜ\?ËŠè`R*?¿=,Ü„oè?ÇޞEæ?Ç ŸPÅ7L@8p÷?ª‡ªfƒ‚?¼-t*zþË?¨+Î&*ô?«ªwô, ?°Í=üi@@@@*@(?ð?ð?ð?ð?ðøøøøøøøøøøøø@¤¢Qhr°!Á.„€@¤¢Qhr°!Á.„€@¤¢Qhr°!Á.„€@¤¢Qhr°!Á.„€@¤¢Qhr°!Á.„€@¤¢Qhr°!Á.„€@¨× -=p£×Á.„€@¨× -=p£×Á.„€@¨× -=p£×Á.„€@¨× -=p£×Á.„€@¨× -=p£×Á.„€@¨× -=p£×Á.„€@7Y*0U2bÁ.„>¤µÜÆ@3{ Iº^Á.„M‰ûçm@2—ï²-Á.„QnÙ‡@2”mÅÖ8†Á.„NÜC,¥@2”mÅÖ8†Á.„NÜC,¥@2”mÅÖ8†Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@§ívÈ´9X@§íxQë… @§ívÈ´9X@§í}—ö+k@§ívÈ´9X@§íjÚ¹õZ@§ívÈ´9X@§íc× -=r@§ívÈ´9X@§ímÒñ©ü@§ívÈ´9X@§íkûµt@®k¸Qì@®kï²-@®k¸Qì@®kØDÐ@®k¸Qì@®ksüP@®k¸Qì@®k¡ÊÀ‚@®k¸Qì@®k:)Çz@®k¸Qì@®kû~‘@6>«6z@6F -¦L/@3½‘hr° @3¾ŠqÞi­@3‹"Ðå`B@3~Ñ·Y@3:Ô,<ží@33•$Þ@3:Ô,<ží@3..±Ä2Ë@3:Ô,<ží@3*¹õY³Ñ?€‚ñêã ?™ýÏËJ6|?›õåzI#…?‘“~mïÑW?›Ýr¶?¡AœÏŸ¦?1·†Æjñ?•N¬Ÿª`Ž?™ÐÈï£L?“3ÏÇF0?ž0 2Î\é?¡íÜ'Ln‹?ƒmÕ+&¬‰?˜ÔÞÑ—æJ?‡9Â@0wç?“-;dø'ˆ?‘\,‚†!?”8©èÈí@@@@@&@&?ð?ð?ð?ð?ð?ð¿q"@h?`35Ût?`V (‚?Z[˲O@§ípGS|’@®k -â(æÕ?|’ŒF¯?vtðÀø?øŽQH¤æÚ?ìqÛŠ|@Ÿc ‹”@ @§´çï²-@§´Ýó¶E¢@§´çï²-@§´¾Ov_Ù@§´çï²-@§´ÉÞÒ@§´çï²-@§´ÓMj@§´çï²-@§´¤?åÉ@§´çï²-@§´Ë Iº@§ ;çl‹D@§ 6È´9X@§ ;çl‹D@§ NV“@§ ;çl‹D@§ {quŽ"@§ ;çl‹D@§ Xï4Ö¡@§ ;çl‹D@§ -€@§ ;çl‹D@§ 9Î_o@7Î쿱[X@7ÇæšÔ,@4®5?|í‘@4œq ²•ê@4t¼j~ú@4@3ÔmÅÖ8†@3Â\(õÃ@3ÔmÅÖ8†@4DmÅÖ8†@3ÔmÅÖ8†@3ÁÑN;Í6?гá‡}?™öä+†>?­ ÒJ°?“ׂa†Üü?°ët#®ªV?±€Éó/U€?Ÿ‹‘+-/Ü?ž%Œ@&—?µ±¾ïï?”‘v»?À)™È.‡ ?±mݪƒÒ?¢t€FI?“&•Z÷˜#?©uÃÇ?žH®hú'$?°e¯ÜT‰Í?°úAäÈ&»@@@@@(@*?ð?ð?ð?ð?ð?ð¿v”j¾?p_‘ø?i>:³ç?Wú85â@§´Òß¹H3@§ JBŃ?†+L?¥?¤Ĺ+?õY`øò,‡@*?fþ%H}@ŸfFÅW - -@ -@¯ùPå`A‰@¯ùQ©ûçm@¯ùPå`A‰@¯ùR9dfp@¯ùPå`A‰@¯ùPò{²þ@¯ùPå`A‰@¯ùQ¹07Õ@¯ùPå`A‰@¯ùOK‚?@¯ùPå`A‰@¯ùOôg@—€Ÿ¾vÉ@—€¡ -¯¤@—€Ÿ¾vÉ@—€¥ãS÷@—€Ÿ¾vÉ@—€‰Àjà@—€Ÿ¾vÉ@—€Ì\@—€Ÿ¾vÉ@—€œëFí@—€Ÿ¾vÉ@—€f`”m@304mÅÖ8@30'RT`ª@0!hr° Ä@0![Ý?„ø@.¯ß;dZ@.¯ÚÍËÛé@-Öð¸»@-×deg„@-Öð¸»@-Ö»C²È@-Öð¸»@-ÖÁªeŸ›?}õ¬#„­?Úeqa†?‘ 5¾ãC?‹Î -F[?ôáa¦f?ÂKqœ?|¬Æ Væ?’úC™l?‚&šÙ£v?8f_w•³?ÕbÏzÚF?^p_‘Œ?‚t¢w{O?Œº“zí+‡?‚siH4á?‚ïñ-øB\@.ÛJ#9Àì@.ÛJ#9Àì@)`A‰7K@)zxl"h@' ƒn—@' IQ‚ª@'a-w1Å@'aG®zâ@'a-w1Å@'aG®zã@'a-w1Å@'a:’£T?É^žQ5P‚?Æ¿5›7÷?‘ŸÇSñ?‹²MÿAÿ8?êtÿKÑc?·t¤¢‚J?ÐbMçê_x?’¼  g¶?ˆ9²0?7枪y7?ÔÒ@úˆ‘?L "¾?€b¡´ñ@?Œ¬8 T£?‚oÁÆÜ§÷?‚ãaÎúvh?†‰Oú|q?†ˆ#.÷@@@@@&@(?ð?ð?ð?ð?ð?ð¿RÀ d?Bȹ ¬©^@­ïì„ë¢@®yƽ¸?Gl´´aé>×f’ˆü 6?Š÷£Œ‹4C>¨Vp¾ª@Ÿs nY:O@ @§,ݲ-V@§,Ý/Ÿ¾@§,ݲ-V@§,à6âë@§,ݲ-V@§,õ*™1@§,ݲ-V@§,àhÛ‹¬@§,ݲ-V@§,ÛW>«7@§,ݲ-V@§,ÜC,¥y@¥ê\¬1'@¥ê]²-V@¥ê\¬1'@¥êgË)_@¥ê\¬1'@¥êcS÷ÎØ@¥ê\¬1'@¥êmV@¥ê\¬1'@¥êa@N¥@¥ê\¬1'@¥ê\PHð@5IÎ_oÒ@5IrGE8ï@2\Iº^5?@2ZÔ,<žì@1¾V“u@1¹b¶®}@1¦YJôðØ@1¤¼j~ùÛ@1¦YJôðØ@1«)^ž@1¦YJôðØ@1ª6âëD?|¬Çëý ?4ë©$è‰?–•Kù̃æ?ŽwX/8?’o?P´À?“ d?€‚ñêã ?’`5žña?“1Ú©! ?œé®|oí?’íßš?•êÁØ|?ƒÆ×q„nï?þþoÀM?„›‹ÖO?…âC£½¾Ý?‹¹ÇlŒ?Ž .0åv@@@@@*@*?ð?ð?ð?ð?ð?ð¿ èö@?A”S=d?A¡Îïó¾?Uerh£OÀ@§,Ý\“\Û@¥ê_ZA@Ç?a?(åáJ³?uêÚ>@?Í´[_Ô?ñ'Þ.}\@Ÿf7!Aá9@ @¨Qô9Xb@¨Qè1&éy@¨Qô9Xb@¨QíÅÖ8†@¨Qô9Xb@¨Qñœàu÷@¨Qô9Xb@¨Qóg ù @¨Qô9Xb@¨QíjO@¨Qô9Xb@¨Qí:’¢@§âÈ1&éy@§âºŸ¾vÊ@§âÈ1&éy@§âÆö”Ft@§âÈ1&éy@§â¼àuöþ@§âÈ1&éy@§â½¥œà@§âÈ1&éy@§âµ$Ý@§âÈ1&éy@§âÆ€IR@8‰Î_oÒ@8‰ÞÑ·@4^Ù‡+@4aTÉ…ðo@4²-V@4'süPH@3G ù kº@3GškP°ó@3G ù kº@3DmÅÖ8†@3G ù kº@3EF -¦L0?©W»¥ÿ$B?“vuØcʲ?•XYäý?š›'©ÓZ¸?šPUó`ÿ?–"ûe”M?žŒÝÙ›P?”b?Etã?¤xÝH +Ê?š. Œžô?X2»æÕ$?˜]'ŠÎØY?žÇ™žsŠ?‘ÌAzÁý?•ýÿLîO?‰öuП—?”ø™¾?ž S è›@@@@@*@,?ð?ð?ð?ð?ð?ð¿/2ÞA?\%Ç<?Zü™ñÕΈ?b{ø}–b@¨Qî•1ψ@§â¾?ý{Ò?sDs×Y?œÛx¾l?Ì=žMýìd?åhÿò™s„@Ÿo0z¥×ú@@®ïLIº^5@®ïGl‹C–@®ïLIº^5@®ïLIº^5@®ïLIº^5@®ïJ=p£×@®ïLIº^5@®ïM«ŸUœ@®ïLIº^5@®ïJôðØE@®ïLIº^5@®ïL˜_ø@«2ï²-@«2ô¼j~ú@«2ï²-@«2ïùrGF@«2ï²-@«2íjN@«2ï²-@«2ð|„µÝ@«2ï²-@«2ïiDg9@«2ï²-@«2ïìVÕÐ@8ò䎊@7öâëC,@3°Ä›¥ãT@3±hr° Ä@2®ùÛ"Ðæ@2®¤¨ÁTÊ@1èè§æ›@1é=Ùb·@1èè§æ›@1éÞÑ·@1èè§æ›@1é7KƧð?§Q,Äš¤?“…­tµH?“UGNAÂÆ?ŽõÕJ?‘§›ßÉîj?’ïJ8Èž?‚á²Olºü?– ÕDÛuÝ?“$zü¾6?˜ò¶Ðú?’.<ù?‘:i€ÑìÂ?·ˆ]ø„?vùv“?‡Ü̈- -?„ªÎZ´?‡ø¢:›¸1?‡YÍ_@@@@@(@(?ð?ð?ð?ð?ð?ð?#q·@¿R¿S>è?LåN‚½Jt?.V,«ø@®ïLBÐm"@«2ðÒiâ1?al9'}?R9Y {y?¹•G4q?¢‹tˆ `Ø@Ÿo_SÖ!A@@¯ETýó¶F@¯EU$Ý@¯ETýó¶F@¯EUϪ͠@¯ETýó¶F@¯EU$Ý@¯ETýó¶F@¯EUϪ͞@¯ETýó¶F@¯ES÷ÎÙ@¯ETýó¶F@¯ES©*0U@ªbMÒò@ª&éxÕ@ªbMÒò@ª°ò{³@ªbMÒò@ª£× -=@ªbMÒò@ªÎ^@ªbMÒò@ªhr°!@ªbMÒò@ªò{²ÿ@4(†YJôñ@4(e”¯O@0 Ä›¥ã@0-à r@/ÊÀƒn@/‰7Kƨ@.a-w1Å@.aohÛŒ@.a-w1Å@.aG®zâ@.a-w1Å@.aG®zâ?€‚ñêã ?Ì&ÏøHÃ?‘*"AaIÐ?Œݶ\ñr?‘Dj?È2I/?|öOÿÝ?’ ÃCÀ`ú?ŠA)Nîá?]bËn~?äú’«6z@4F÷åLy@0½‘hr° @0½pÕz 8@0H“t¼j@0H8%€‚%@/žžš@/Ÿ8ì½9¿@/žžš@/»)ŠÛ•@/žžš@/žz‚‰?}õ¬#„­?Çé'ÐŒ?‘3W¦?%¥?‹­B¦·‡‰?‘×±T©?ÊVÑñ?|¬h2:“?’Ÿ1(µ?ˆ—tÒy!?7íÞݸ?ê\C„)è?s¬cð§)?‚o«E—P}?Œ³ßl< ?‚x¢ú½û¯?‚ùÉÃk†?†¡“ÿ4?†ž6Íã@@@ @ @5@3?ð?ð?ð?ð?ð?ð¿ -fuæ?‘[RK¶ËE?˜ò¶Ðú?’˜£“µ~Ð?‘A_f;j?¡jÐÅx?Œèsq‡#?†úŒz_–È?ƒ ?ÿ½?‡ø¢:›¸1?‡v>ª¸ @@@@@*@*?ð?ð?ð?ð?ð?ð¿JÇ:jä¿]²zq?NDK·Rs?@:‹Ê~@§Û^›LŒà@£Tn¬‡©n?gÚáÒ?Vã‘á5ß?ËÐV7qF,?¥cÃx -e@Ÿn™G’çc@@§D49Xb@§D3÷ÎÙ@§D49Xb@§D4FsØ@§D49Xb@§D4ðØDÐ@§D49Xb@§D4SŽóM@§D49Xb@§D33333@§D49Xb@§D3×Ûõ@\…¸Qì@\…¸Qì@\…¸Qì@\ƒa@P@\…¸Qì@\‚&€I@\…¸Qì@\ƒn—@\…¸Qì@\‚Zîc @\…¸Qì@\„“t»@25S&Á¾@25Vlô!@/€A‰7KÆ@/oÒòä@/ ƒn—Ž@/Ÿ¼@.`ªdÂù@.!-w2@.`ªdÂù@.záG®@.`ªdÂù@.¢3œÀ?É^ýTïŽ?Ì&ÏøHÃ?‘`×›mÏ?‹ª½¨ª8v?‘Dj?¾ƒìÈÁ?ÐbMÝn½?’ ,øÕC©?·t¤¢‚J?3.Ylî?ß’ºèh!?e¾DQ„Q?€bMÔŠ»?Œµ3‰;šÏ?‚§W®ê ?‚ð'ã:ÂÝ?†¼Š˜L¥÷?†¼Š˜L¥÷@@@@@,@&?ð?ð?ð?ð?ð?ð¿:€å,?(Šƒ¿Ä?,¦ÄŒ»_?->{Ž!6@§D3À§Wÿ@\ƒ&œ‘â?;Ù¹VlB?;÷½ˆÅÊ?qï"øLQŽ?q~Íaú@Ÿsõ\9¬@@¤.s3333@¤.rñ©ûç@¤.s3333@¤.týó¶G@¤.s3333@¤.uÂ\)@¤.s3333@¤.s àÞÔ@¤.s3333@¤.rT`ªe@¤.s3333@¤.qÞi­D@¬…»çl‹D@¬…»¥ãSø@¬…»çl‹D@¬…¾\‘ÑO@¬…»çl‹D@¬…¾ í(@¬…»çl‹D@¬…»ô‡ü¹@¬…»çl‹D@¬…¼]cˆf@¬…»çl‹D@¬…¼žì¿±@4rÃÉîËû@4r䎊qÞ@0£÷ÎÙ‡@0£ê³g ù@0H“t¼j@0HºÇË)@/¨Û‹¬q @/©­BÃÉï@/¨Û‹¬q @/ª~ùÛ"Ñ@/¨Û‹¬q @/ª¦L/ƒ|?|öOÿÝ?ß‹’bÏ?‘e -!ßC?‹ó#ƒt£?ôê÷º»â?‘¦ µÚ?1·†Æjñ?’7Îf¬ps?«'Q™µ?‡@Cvì×?øóéM Ÿ?r¼Jsž?‚2Y0â³?ŒïQ¼º“ã?‚† SFò?ƒ^ ›¨¬a?†Ë¢L1Ù?†å·ÑfWà@@@@@(@,?ð?ð?ð?ð?ð?ð¿$íºÁ?(3á?/.Ü(x>ùj$ö ðc@¤.r¥â¬Ã@¬…¼ œp?6,s•toÓ?ðv˜3q?z%´˜ü?@]¿kåh$@Ÿg5™©à@@¬Þ¦ffff@¬Þ¡‰7KÈ@¬Þ¦ffff@¬Þ­BÃÉï@¬Þ¦ffff@¬Þ¥ýŠÚº@¬Þ¦ffff@¬Þ¥¼£n@¬Þ¦ffff@¬Þ¤¨ÁTÊ@¬Þ¦ffff@¬Þ§E8ï5@ª“¾ùÛ"Ñ@ª“ŸQì@ª“¾ùÛ"Ñ@ª“âœwš@ª“¾ùÛ"Ñ@ª“¾Ov_Ù@ª“¾ùÛ"Ñ@ª“À@ª“¾ùÛ"Ñ@ª“¾ùÛ"Ò@ª“¾ùÛ"Ñ@ª“¿|í‘h@7­¥œàv@7¯–»˜È@2W+ Iº@2W8}¿H@1lj~ùÛ#@1l¬1&é@0s&Á½¦@0ra|ÚR@0s&Á½¦@0rGE8ï5@0s&Á½¦@0r@·€4n?|öOÿÝ?™à*­Ÿš?’ -N»A3?‹¬àÌ’Ç?‘VšÐ^Ø?ß-tT?¡ÅꯨŠT?™Eo…Æ&?‘ŽütÅÒ(?-õI¸`K?‘77…Âç?ŒÙ¶êm¥?‡þ:ó-êÏ?ï7è-ÖR?ƒÚ@êA²?ƒžÂâk,?‡2[síç?‡ã ËÄž@@@@@(@"?ð?ð?ð?ð?ð?ð?RAåD¿Lø&Q?0ÄÕµg?>KMU9Ò@¬Þ¥!³›@ª“ÀD¨8·?TäÅ>È`?T¾‹Ç @?«–B WA?¢,;òô1@Ÿnvr.Ìk@@žŽ~ùÛ"Ñ@žŽ¼j~ùÛ@žŽ~ùÛ"Ñ@žŽéëyFØ@žŽ~ùÛ"Ñ@žŽ×O.+@žŽ~ùÛ"Ñ@ž&'A¥@žŽ~ùÛ"Ñ@žA:’£@žŽ~ùÛ"Ñ@ž’šó¦@¬ÇºáG®@¬Ç¬Iº^5@¬ÇºáG®@¬Ç›l“‘@¬ÇºáG®@¬ÇƒÝUûË@¬ÇºáG®@¬Ç€õx”@¬ÇºáG®@¬Æç ù l@¬ÇºáG®@¬Çt/=~=@8cg ù l@8[_Oå…ä@4 Iº^5@3¾ë8@3Wï²-@3*ˆŠ¥b@3^«6z‘@2Ë -8¬|@3^«6z‘@2â‚@·€5@3^«6z‘@2ÙjD)o‹?™¤Ï}IT?«BGt×ì?¤r¢8¼M?»!\|“?!?½i~ür0)? >£¢;f_?¨'Yb! ?½~6gäL‡?·‰ÛªéÇb?̳÷r`f­?Ëu¥{¤0®?’ôå¸ÿß ?–æSp?¡Œhb“óE?£{ÙÓâ¹­?­G[]=ÿ?¡ÛÈxŪÄ?†ËŽÎY½x@@@ @ @$@&?ð?ð?ð?ð?ð?ð?€zBoÀ¿†æå Õ€?a°—F/§/?tî¶‘€ƒâ@žŽîO–m¡@¬Ç‰)¾èf?†*ˆË¹ZÌ?•œö†ò‡?átÃ"z™Ð?þ Sß@ŸmGhÀ%J@@¤óùXbN@¤óùÛ"Ðå@¤óùXbN@¤óü£n/@¤óùXbN@¤óùõY³Ð@¤óùXbN@¤óùÛ"Ðå@¤óùXbN@¤óø7´¢4@¤óùXbN@¤óø}¿H@ ü A‰7L@ ü Ä›¥ã@ ü A‰7L@ ü¡G®{@ ü A‰7L@ ü ƒn˜@ ü A‰7L@ ü @ ü A‰7L@ ü¢e+Ô@ ü A‰7L@ ü¡½¥ž@3Î쿱[X@3Îæ1ø @0ør° Äœ@0÷§†Â&€@0’Ðå`A‰@0’GE8ï5@/Ǔݗö,@/ÆšÔ,<Ÿ@/Ǔݗö,@/ÈÁTÉ…ò@/Ǔݗö,@/Èð¹?}Ñ¿ž,?Úþþ³?‘`×›mÏ?‹¦ ŸYÔ?‘VšÐ^Ø?‘‚ÊŸû©?|¬Çëý ?’›ÈÖÝ?ö”iåó¨?1ð'7éÃ?‘c3¸cÜ(?äqÅYÈ?ƒ/‹ÍY}‘?ŒÖ -ÄȲ?‚Ì ÝŽ‚8?ƒžÂâk,?†Ü‘ °Ô?‡v>ª¸ @@@@@*@&?ð?ð?ð?ð?ð?ð¿4Õ«€€?'âÈñ ?!ö=ã"½K?'];ÇØŸ@¤óù?ËeÆ@ ü¡ôÔ?AÈ .Sö?GÁèÇ&zý?«›"}e?œ³ &k -@Ÿfð¾Óº@@¯¸Ôýó¶@¯º^5?}@¯¸Ôýó¶@¯¹Û"Ðä@¯¸Ôýó¶@¯¼64@¯¸Ôýó¶@¯ºáG®@¯¸Ôýó¶@¯¸ -à@¯¸Ôýó¶@¯·Oß;@¬MuÂ\)@¬M~¸Që…@¬MuÂ\)@¬MtÖ¡aå@¬MuÂ\)@¬Mqø .@¬MuÂ\)@¬MsŽóMj@¬MuÂ\)@¬Mv¡aä÷@¬MuÂ\)@¬MvR½<6@8šÔ,<Ÿ@8þÅm\û@1ë¥ãS÷Ï@1éÔ•*™@1Z~ùÛ"Ñ@1X“t¼j@0}cˆe”°@0{xFÜ^@0}cˆe”°@0{²þÅm]@0}cˆe”°@0|wškP±?Œs¤DÅÐ?×s·IÓ?‘Š©Nà¶?F‘q/b?‘ƒZ)Àˆ?‘ë´¤G?«_$Øï†?’{cü€øõ?§^ ÿo˜?’"Š6›Wz?‘<¸ö}½?›ªU3Îp? ânIð?ŒÛÏ·+?‚‘´…=Cb?„•ˆG’Z¾?‡ø¢:›¸1?‡v>ª¸ @@@@@&@&?ð?ð?ð?ð?ð?ð¿A•ˆà¿Ç|¯@?53N½î?Tþ1†¯ @@¯¹+—”@¬Mué^-x?U'–tec$?iÍy4ª+?¨óFRÁ?Ç»•ûÔ@Ÿp9Znfü@@©2ß¾vÈ´@©2ã•$@©2ß¾vÈ´@©2Ó÷ÎÙ@©2ß¾vÈ´@©2ŸQí@©2ß¾vÈ´@©2ÕÜÆ?@©2ß¾vÈ´@©2Ý¿HÌ@©2ß¾vÈ´@©2Ý—ö+k@¡:·KƧð@¡:ºŸ¾vÉ@¡:·KƧð@¡:/Ÿ¾@¡:·KƧð@¡:~«6z@¡:·KƧð@¡:Œ²•éâ@¡:·KƧð@¡:¦Á½¥@¡:·KƧð@¡:¢ø7´¢@6òÃÉîËû@6ð-à r@2° Ä›¦@2°¸ºÇ@2ˆ“t¼j@2nšu@1Þi­BÄ@1ohÜ@1Þi­BÄ@1 rGE8ð@1Þi­BÄ@1tSŽóN?‡YÍ_?‘€5{ºÎ#?£«ëS–_??”oý]Þ‡&?”k¸!¯eÕ?žy—™öW?‡YÍ_?œ¾ß¤?æ?±Wz>ð­œ?©1}çï ?¢i ú?¨,?e -,ùž?œÚ.ô §Æ?“~tÒZE?–½™C)?Ž«]O8èº?‡Õ˜]–GÄ?™¼òQh@@@@@@,@&?ð?ð?ð?ð?ð?ð¿_'øÝÆ¿vµ†&A€?W0l’_+6?d'Ê™Ol‡@©2Þ¯ýzë@¡:®…ÐP?uæ®n“ ?„æ“”?çóE['?ùtËص1@Ÿeú¸Y@@¢ÖŠ=p£×@¢ÖOß;d@¢ÖŠ=p£×@¢Ö”ýó¶F@¢ÖŠ=p£×@¢Ö¸ºÇ@¢ÖŠ=p£×@¢Ö“g ù @¢ÖŠ=p£×@¢Ö›ô‡ü¹@¢ÖŠ=p£×@¢Ö!ÿ.I@¢vŸQì@¢vÅãS÷Ï@¢vŸQì@¢v§®zá@¢vŸQì@¢v·§†Â'@¢vŸQì@¢vÆö”Ft@¢vŸQì@¢vÀ4mÅÖ@¢vŸQì@¢vÈè§ç@7Î쿱[X@7Õœàuö@3ã÷ÎÙ‡@3Ó¯·éù@36§ï²-@3)7KƧð@2ýcˆe”°@2èõÂ\)@2ýcˆe”°@2èr° Äœ@2ýcˆe”°@2ëçl‹C–?•²»UbB2?“à‘û?¥p»`£@i? „rÓ‚¼?¤¾¯d…8?¬Jà"ÃFr?¤I~Óy‘?—b…ªH=?ªýîm¿ùl?±?»ä?«Ÿ¸VÅc?«˜™1Á_A?ƒ¡É^&Ö?“=ä!ƒK?Цÿßë?¤?•YžŽAdå?žµ½èq¨®?ŸÂ°çR=@@@@@,@,?ð?ð?ð?ð?ð?ð?j}ÄLŸ¿ -ü´?A+U{³5?PÎ+'àc@¢Ö•H1^@¢vÅq˜1?aÁA²‡—?q, Yõÿê?÷’C=?«±ûƒÜ¾@Ÿihãi¥@@¬U Iº^@¬UÁG®{@¬U Iº^@¬U¡G®{@¬U Iº^@¬UbMÒñ@¬U Iº^@¬U­‘hr°@¬U Iº^@¬Ui 'RT@¬U Iº^@¬U–”Fs@¡.‰7KÇ@¡.ÊÀƒ@¡.‰7KÇ@¡.0Hð@¡.‰7KÇ@¡.M(Œç@¡.‰7KÇ@¡.LIº^5@¡.‰7KÇ@¡/ê³g¡@¡.‰7KÇ@¡/ðoiD@6­¥œàv@6¢3œ¾à@2@ Ä›¥ã@2+xFÜ]@1´“t¼j@1˜Û‹¬q @1TmÅÖ8†@1.Ov_Ø®@1TmÅÖ8†@1ã¼Ó[@1TmÅÖ8†@1u%F -¦?¥K¶{Oÿ?®–ú—ÿ>¦?® ¸¡¢¢?¥©Ù%°Ù\?À¯B¾´¶?¼ìc>Ý‘?óA[ØïF?´«z¤ ³Ð?¹Y8쪒•?¤G›LD3?ÐðûÿôÇÔ?ÆÏ›Ú¾2?‚ÂÌ]å?\{ÏïŽ?›®­,ë?’oÍb4U?“ )D)?–í -e˜›ï@@@@@(@(?ð?ð?ð?ð?ð?ð¿…p§è€?¡GW%€À?tj¸ '8ß?ÓY ô"@¬U±$"Ø9@¡.;¢ëÛ? -µ7ð?œÇÑþ½\ã?ãõm:Ô³ƒ@þµ‡ƒÛæ@Ÿcm.)‘:@@¯ßš¬1@¯ß–E¡ÊÁ@¯ßš¬1@¯ßšû~‘@¯ßš¬1@¯ß›"Ðå`@¯ßš¬1@¯ß›À6ã@¯ßš¬1@¯ß™rGE8@¯ßš¬1@¯ß˜ -à@®=ixÔýô@®=kC•@®=ixÔýô@®=iûçlŠ@®=ixÔýô@®=iQ‚©“@®=ixÔýô@®=i“ àÞ@®=ixÔýô@®=iã¼@®=ixÔýô@®=i“ àß@2šÔ,<Ÿ@2£S&@-kƧï²@-k¬q ²•@,rn—Oß@,rGE8ï5@,Ǔݗö,@,ÇË)^Ÿ@,Ǔݗö,@,Æö”Fs‚@,Ǔݗö,@,džÂ&€ž?Éq0ÀŠ$?Òç{íj?‘*"AaIÐ?‹ÑqÔ@vÿ?è<`.Ÿ?Ðýð^–Ö?Ðcš¾µE?’)£µ“[µDà? $gú‡v?„›‹ÖO?ŒÅÐ7N³¬?Š*ÊÔQãú?‹¹ÇlŒ@@@@@(@(?ð?ð?ð?ð?ð?ð?R`š„¿W~Ô$P?5£çÝ3@?2ÕÎII/ò@¤Ÿa!F?@¬Êøü«}§?TÕ>µ?R«¾©õv?´¡À&Úx?«ŽgA_@Ÿeá¿Om@@¡Iñ©ûçÁ.„€@¡Iñ©ûçÁ.„€@¡Iñ©ûçÁ.„€@¡Iñ©ûçÁ.„€@¡Iñ©ûçÁ.„€@¡Iñ©ûçÁ.„€@žÙüí‘hsÁ.„€@žÙüí‘hsÁ.„€@žÙüí‘hsÁ.„€@žÙüí‘hsÁ.„€@žÙüí‘hsÁ.„€@žÙüí‘hsÁ.„€@7úqÞi­CÁ.„>¤µÜÆ@4ý‘hr° Á.„M‰ûçm@5“t¼Á.„QnÙ‡@4Eœàu÷Á.„NÜC,¥@4Eœàu÷Á.„NÜC,¥@4Eœàu÷Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø @¬—ƒn—@¬—ƒn—@¬—ƒn—Á.„€@¬—ƒn—Á.„€@¬—ƒn—Á.„€@¬—ƒn—@¬—5Y³Ð}@¬—ƒn—@¬—ËàÞÒ‰@¬vÓt¼j@¬vÓt¼j@¬vÓt¼jÁ.„€@¬vÓt¼jÁ.„€@¬vÓt¼jÁ.„€@¬vÓt¼j@¬w7Xâe@¬vÓt¼j@¬vzÔ,<Ÿ@4?–»˜È@4?ß;dZ@2—+ IºÁ.„M‰ûçm@2F“t¼Á.„QnÙ‡@1µµsê³hÁ.„NÜC,¥@1µµsê³h@1æÁ½¥@1µµsê³h@1ƒ¯·éú?}Ñ¿ž,@8#˜@8¾:@8 >+?»B¬W2ì9?¸à”ͬc?|¬Çëý @8Î÷@8i§@8Å?¶"Ý “Sí?·KÃãùE~?‚|׿pY@8 * @8p÷@8¶?«I„t?°XÆl­‘i@@(@*?ð?ð?ðøøøøøøøøøøøø!@¢ˆxQë…Á.„€@¢ˆxQë…@¢ˆtFsØ@¢ˆxQë…@¢ˆxºÇË@¢ˆxQë…@¢ˆzáG®@¢ˆxQë…@¢ˆu$Ý@¢ˆxQë…@¢ˆtzáG®@¨ëD›¥ãTÁ.„€@¨ëD›¥ãT@¨ëDÂø7µ@¨ëD›¥ãT@¨ë@[À7@¨ëD›¥ãT@¨ëCÉîËû@¨ëD›¥ãT@¨ë<¬1'@¨ëD›¥ãT@¨ë>($ y@8^Hè§æÁ.„>¤µÜÆ@4@ Ä›¥ã@4=žƒä%®@3K"Ðå`B@3KŸU›=@2èè§æ›@2æÜ]cˆf@2èè§æ›@2é=Ùb·@2èè§æ›@2éŒ~($ @8J¨?Az;öè?”zùeߎ?º•÷ ?˜ -0˜ggk?–®UÒ.@8J¨?œÅ x[{?•Ó%Øc~?˜8wxšq?™x9ÿ¥l?–b+¡m°:@8p÷?‘ë…¸Qì?–EÑ~?>æ¿Îï?ˆT“Ÿÿ?¢—„¯l@@@@*@(?ð?ð?ð?ð?ðøøøøøøøøøøøø"@¦•%@¦0Ä»ùS@¦•%Á.„€@¦•%Á.„€@¦•%Á.„€@¦•%Á.„€@¦•%Á.„€@˜.záH@˜¦ì°9@˜.záHÁ.„€@˜.záHÁ.„€@˜.záHÁ.„€@˜.záHÁ.„€@˜.záHÁ.„€@8åöý!ÿ.@7ô?Ø\zt@6#÷ÎÙ‡Á.„M‰ûçm@5Àå`A‰7Á.„QnÙ‡@6!:’£SÁ.„NÜC,¥@6!:’£SÁ.„NÜC,¥@6!:’£SÁ.„NÜC,¥?Ç)HÞ@8#˜@8¾:@8 >+@8Iç@8Ù?Í„¡g_H@8Î÷@8i§@8Å@8S@8û—?ô€«ä\é@@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø#@ ƒ³3333@ ƒ¼64@ ƒ³3333@ ƒ°oiDh@ ƒ³3333@ ƒ¸1'ü@ ƒ³3333@ ƒ­( î@ ƒ³3333@ ƒ«™C@ ƒ³3333@ ƒ¥¸6-]@¤µhõÂ\@¤µQÑN;Í@¤µhõÂ\@¤µebKe@¤µhõÂ\@¤µhzÔ÷K@¤µhõÂ\@¤µeÀRü:@¤µhõÂ\@¤µoâÈzþ@¤µhõÂ\@¤µt’¬9¬@8Žì¿±[X@8‡4,Np´@3Ò Iº^5@3Öc%n¤?@3d¼j~ùÛ@3fµ '»@2‡ ù kº@2‹&@\@2‡ ù kº@2}ûNå@2‡ ù kº@2íé.f?|ï"<¶~~?£Ç lJ?”’âùFÁ:?¾à} Ê?”±9/<â£?•5¦«ÿ’\?…%!{‚A?“F¡ö€IÃ?”øõx²?‘/­ÿ6ïí?˜€i›"Å?˜>+W²?›8¢ìþ…^?¥…ü¬X¼?—*ñ*µ?ˆT[S+?Ž ºÕqø?¡,Éëw.@@"@(@ @:@5?ð?ð?ð?ð?ð?ð¿s/‡o€?}ے䮀??¯düª/?0N|ñk³H@ ƒ²ü@¤µa€ßúÇ?D7™‰˜ð@¡9“Î&2@¥âДÀø.?Oå°v«F?d-]]NÝ­?¨Íõ2 ´ñ?ÑWs‡D@Ÿf3ÏÎ@%@¦o!G®{@¦o!‰7KÈ@¦o!G®{@¦o&1ø @¦o!G®{@¦oDZ¬ @¦o!G®{@¦ož¸Që…@¦o!G®{@¦od¨ÁTÊ@¦o!G®{@¦oNV“@ªçÀ@ªçÀƒn™@ªçÀ@ªç§æšÔ@ªçÀ@ªç£n—@ªçÀ@ªçtã¼Ó\@ªçÀ@ªç…®æ1ù@ªçÀ@ªç‹…¸R@4T xFÜ@4SÝ—ö+k@1 Iº^5@1¼j~ùÛ@0lj~ùÛ#@0]w1Å@08DЩ*@0#¢œwš@08DЩ*@0dÂø7µ@08DЩ*@0µsê´?|öOÿÝ?£]fÊÿm?§ôÑw‹‡?Æ ¡'•½`?à t(’“?ÂÔ]GWÔ?}Ñ¿ž,?~y°޵?¢"š°j?¾È7ß™å´?ª¿Tiî©õ?±³þG·)g?‚uÞ@>N ?‚ñêã ?ˆ©CwBÅÉ?•Ïzl¼ãh?8Ï£§?§ÞF-™ü@@@@@,@*?ð?ð?ð?ð?ð?ð?{áÿŠ¿‹É^\À?x˜ª#ý?f2=9ÃC@¦o+þšÿ@ªç¸rá?…à~©?rö Ì(?ñ}²Œ¸EP?ã¢á{^œ@ŸZˆzyª‡@&@­>§ï²-@­>˜“t¼i@­>§ï²-@­>£¨ 5@­>§ï²-@­>¨±ï}V@­>§ï²-@­>¨ãtÚ3@­>§ï²-@­>§8a~@­>§ï²-@­>¦ãâ2@–žÅ¡ÊÀƒ@–žËZ¶ßÖ@–žÅ¡ÊÀƒ@–žÂÂÏT>@–žÅ¡ÊÀƒ@–žÈD5ñš@–žÅ¡ÊÀƒ@–žÄäsxø@–žÅ¡ÊÀƒ@–žÄ†QÇi@–žÅ¡ÊÀƒ@–žÀÚv¤d@6õS&Á¾@6ì~QùÜE@3.5?|í‘@3/=<$n @2PA‰7KÇ@2QaDÐWd@1‚‚@·€5@1ƒÄẄô@1‚‚@·€5@1†@>÷é@1‚‚@·€5@1„m¿ùË©?( ˜?C\Ïç-?‘§øDù¡w?Œ9CŒýµˆ?’×U5?‘?à´:(?|ò0p‰J?’RóEP?‘ˆÅn,…?hÿöžy¾?’¦ñ*_?ÅL Ø -?Šu„Ó7Gý?8ÍG§?‚äê/|?ƒ Ãgñê?ˆb’qÙ?‡n+.'5@@"@(@(@:@7?ð?ð?ð?ð?ð?ð?hËZì¿PÁ­ŽN?XÑ¡šù¿?C'3š8ã@­>£›DX/@–žÅìzaæ?uä µîÓµ?>µbðh ?í/‚nxtÏ?ƒ%OÍA@Ÿj~åV©S@'@¨TøÔýó¶@¨TøQë… @¨TøÔýó¶@¨Tø.KN²@¨TøÔýó¶@¨Tü©Kú@¨TøÔýó¶@¨Tû¤Yf@¨TøÔýó¶@¨TùÏR@¨TøÔýó¶@¨TùXg³K@˜çŽV“@˜ç¦`’S@˜çŽV“@˜ç‘uk\W@˜çŽV“@˜ç«Û Þ@˜çŽV“@˜çŽO$1@˜çŽV“@˜çŠÌ,˜x@˜çŽV“@˜ç e@7í¥œàv@7÷Òçº>@3E?|í‘h@3F§;(@2Ͳ-V@2ÎÜÛ[@2Vý!ÿ.I@2W¿…q22@2Vý!ÿ.I@2XªFÛÆM@2Vý!ÿ.I@2X’Ò±ïd?–0kÎñÉ?’¬˜«!d?“œ‘A ?¨ŽÉ‘  ?’¦ F`"?’[„ä&«?žƒ¸r2ã?“TT%ìô?“1 -ÉúÔ?‘ëÂ^´?’Î=­YÚ?‘Öœf};?›)‰xr? Pkñ?†¯Ä\1—k?‡{®j•9@?‡x–j*ö?‰‡“¤Ë®@@,@*@*@:@:?ð?ð?ð?ð?ð?ð?Uhù@¿aôW€?BŸ~?Q¨¤OyPµ@¨Tù㌵#@˜çƾ -J?]K3nà?iò r?´=bB{N ?Ë 2XËÂ@ŸnFLj@(@§r†§ï²@§r‡+ K@§r†§ï²@§r‰^ž @§r†§ï²@§r%F -¦L@§r†§ï²@§q£{J#;@§r†§ï²@§rU*™2@§r†§ï²@§rl²•éâ@¦´p Ä›¦@¦´k Iº@¦´p Ä›¦@¦´”Ö¡aå@¦´p Ä›¦@¦³U¨Xy>@¦´p Ä›¦@¦³úÔ,<Ÿ@¦´p Ä›¦@¦³ûJ#9Á@¦´p Ä›¦@¦´ÏAò@7” xFÜ@7’ò䎊@4ÇÎÙ‡+@4Îi­BÃÊ@5$¼j~ùÛ@4ê¬1'@4G ù kº@4»/ìVÖ@4G ù kº@4=¥œàv@4G ù kº@48K]Ìcò?€‚ñêã ?’3ˆq×?ÔOLï>?ϩƧ;2k?·ÆÐtµô?«óB?)3y?‚á²Olºü?••´þDê‘?ÊhýýTÈ7?Å÷îØßsÃ?Äø&‰2d?¼?þ®o´÷?’úz."?¤rI©‹×s?а7DuI‘?· Vò§?ÀÀ‰³ŒÍ?Ãô(4ÄÕž@@@@@*@*?ð?ð?ð?ð?ð?ð¿~â;¨b¿˜Pܽ§À?yûÖ:!?réÍ €I@§r¬åmÁ@¦´Z IØÐ?ˆ¾9¡˜§à?~$©Ö™¨à@,K^î!g?ÝæwÁg‚@Ÿ[~;LG@)@©záG®@©f$Ý/@©záG®@©Œq ²—@©záG®@©iDg8@©záG®@©ŠqÞi­@©záG®@©€ qv@©záG®@©b¶®}@¢Ç´9Xb@¢Ç­‘hr°@¢Ç´9Xb@¢Ç½¿HÌ@¢Ç´9Xb@¢Ç¶”Fs‚@¢Ç´9Xb@¢ÇÇÕfÏB@¢Ç´9Xb@¢ÇÔFsØ@¢Ç´9Xb@¢ÇϪ͞„@8ð4mÅÖ8@8ïåÉä@5}‘hr° @5}„M:’@5ï²-@5škP°ò@4®_oÒ @4´›¥ãSø@4®_oÒ @4¯—$tS@4®_oÒ @4ºu%F ?„F/·ÿP5?¡Ýq+qW?©¢“øÌ—>?¢Ç˃.†?¨Ô ‹ÿÑ?«DX ÍSþ?­éW«ZM›?£‚Û£0Τ?´ý³Bí?¥6r”00M?¨;çCÛ=?§ô*²]µ6?Çöµmâ‚?—n„Tºn?¢›Sný{?¦·}­2;¹?¡£‡9²þ?¦«DðL@@@@@"@$?ð?ð?ð?ð?ð?ð?Gе?}äÌí?e¹SFµëF?aGø“ @©{®ÆâÑ@¢ÇÅí\H·?‹­wQüýì?| “Å€Âs?îâP›ÈaŠ?ÄRu§]¶ê@Ÿky@rgÁ@*@ªá£× -=q@ªá¤Ý/ @ªá£× -=q@ªá›¥ãSø@ªá£× -=q@ªá™™™™›@ªá£× -=q@ªá/Ÿ½@ªá£× -=q@ªá¥¸Që@ªá£× -=q@ªá¢ Iº]@¯>éxÔýô@¯>ëC•@¯>éxÔýô@¯>èr° Å@¯>éxÔýô@¯>å¸Qì@¯>éxÔýô@¯?‡+@¯>éxÔýô@¯>êÀƒo@¯>éxÔýô@¯>ñë…¹@8L]cˆe”@8H­«ŸUœ@3µãS÷ÎÙ@3±4êJŒ@3~ùÛ"Ñ@3 ¸ºÇË@2Œ¿±[W?@2Š Þ@2Œ¿±[W?@2}ó¶E¡Ë@2Œ¿±[W?@2}¥œàv?ªÝ8Ⱥ™J?¾¢`ƒ?›£=Ñã5?š„ÅX™c?W2©D?ZF/Dç6Û?dØè‚&ì@ªá¡8‡ø@¯>ð| tM?r~扩-O?Œ~ÊGD7?Å|åFþï@˜)' –¦@ŸoÜýa@+@©oâÐå`B@©oäÝ/¡@©oâÐå`B@©oä2ÊW¨@©oâÐå`B@©oä2ÊW¨@©oâÐå`B@©o㯷é@©oâÐå`B@©oâZîc @©oâÐå`B@©oâ¶®}V@zÏß;dZ@zÒ5Áfj@zÏß;dZ@zË]Ìcñ@zÏß;dZ@zˬq ´@zÏß;dZ@zÍqu@zÏß;dZ@zÍqu@zÏß;dZ@z͸ºÇ@6°4mÅÖ8@6²×süP@1° Ä›¦@1ÃÝ—ö+k@1t¼j~ú@1ŽŠqÞj@0&YJôðØ@0'¯·é@0&YJôðØ@0'ÈK]Ìd@0&YJôðØ@0'»/ìVÖ?‚n—OߤµÜÆ@3n5?|í‘Á.„M‰ûçm@3M²-VÁ.„QnÙ‡@2øDЩ*Á.„NÜC,¥@2øDЩ*Á.„NÜC,¥@2øDЩ*Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø.@   Iº^Á.„€@   Iº^Á.„€@   Iº^Á.„€@   Iº^Á.„€@   Iº^Á.„€@   Iº^Á.„€@žÖ“uÁ.„€@žÖ“uÁ.„€@žÖ“uÁ.„€@žÖ“uÁ.„€@žÖ“uÁ.„€@žÖ“uÁ.„€@8ÖšÔ,<ŸÁ.„>¤µÜÆ@3° Ä›¦Á.„M‰ûçm@3Ðå`A‰Á.„QnÙ‡@2!:’£SÁ.„NÜC,¥@2!:’£SÁ.„NÜC,¥@2!:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø/@£ô/Ÿ¾@£ôœ¬1'@£ô/Ÿ¾@£ôžÒˆÎp@£ô/Ÿ¾@£ôž í(@£ô/Ÿ¾@£ôŸò䎊@£ô/Ÿ¾@£ô›À6ã@£ô/Ÿ¾@£ô˜†YJõ@¨IX“t¼j@¨IXÔýó¶@¨IX“t¼j@¨IYXbN@¨IX“t¼j@¨IXl"h -@¨IX“t¼j@¨IY=Ùd@¨IX“t¼j@¨IYb¶®@¨IX“t¼j@¨I`ëíúE@3Âò䎊@3¼£n@0óS÷ÎÙ@0ó{J#9À@0¶§ï²-@0·ÕfÏAò@0uµsê³h@0v1ø .@0uµsê³h@0uÂ\(ö@0uµsê³h@0q–R½<6?}Ñ¿ž,?ZÁ».œ?‘jh¨qã9?Œä%—ëš?‘@@Nßo9?“yÄö%Þî?|öOÿÝ?’)£µ“[ZÌw?ƒì%­¹Ï‘?‡Õ˜]–GÄ?‰]³ß’Ý@@@@@$@&?ð?ð?ð?ð?ð?ð¿1Ï*?PM÷Ì?F¥©:¿Ù?DˆÎôÿÖH@£ôœˆžÜ@¨IZ¦Ëþâ?f q…C$?d´”¼ËÇñ?×î$Üæ‡ª?ÔôHx¡|@Ÿfà,2í@0@ ŸÍÒñ©ü@ ŸÜj~ùÛ@ ŸÍÒñ©ü@  5?|í‘@ ŸÍÒñ©ü@  0 Ä›¥@ ŸÍÒñ©ü@  !°‰ (@ ŸÍÒñ©ü@  —ð¡¨å@ ŸÍÒñ©ü@  ÈõÂ\@œÅ["Ðå`@œÅ™³,Í@œÅ["Ðå`@œÇ“÷ÎÙ@œÅ["Ðå`@œÈÛquŽ"@œÅ["Ðå`@œÇ ù kº@œÅ["Ðå`@œÉûþE¡h@œÅ["Ðå`@œÇ“t½@5ÉÎ_oÒ@5ë vkT@2}‘hr° @1CMjO@2'KƧïž@0s@N¤¨Á@1œàu÷@/Ø­«ŸU›@1œàu÷@/Ÿ’aÅçT@1œàu÷@/²-V?ˆ°„kº?ªŽµcùX?¶ÔdÒ í?ÀMN:Ò?ξÕW¢×¡?¡]¡q;j?€C‹~?–¦ÆçŽ -?Úö´ºð“?ÖCRn™?R?Ç¥Ôéät»?¨”¯G0¤Ý?³³&°ÕÓ?®fI÷‚=C?·4³;ê$Œ?³ÓÑžoh?°ïÓVläÞ?¹$ÏFtYÜ@@@@@(@?ð?ð?ð?ð?ð?ð?¨I‹s`?¦{€Küð?bu\®¡ü?½ž 1@  ‡Ë@œÅ㫘Ô?~Vþ÷i'?£Ð)ÿ݃?èÏ)g1…@3˜­ÿ7÷@Ÿ^Ï -ÎÝ@1@¥ˆ4¼j~ú@¥ˆß;dZ@¥ˆ4¼j~úÁ.„€@¥ˆ4¼j~úÁ.„€@¥ˆ4¼j~úÁ.„€@¥ˆ4¼j~úÁ.„€@¥ˆ4¼j~úÁ.„€@ž|På`A‰@ž|$Ý.@ž|På`A‰Á.„€@ž|På`A‰Á.„€@ž|På`A‰Á.„€@ž|På`A‰Á.„€@ž|På`A‰Á.„€@8òÃÉîËû@9R½<6@5Yº^5?}Á.„M‰ûçm@4q‰7KƨÁ.„QnÙ‡@4#ÉîËûÁ.„NÜC,¥@4#ÉîËûÁ.„NÜC,¥@4#ÉîËûÁ.„NÜC,¥?´ Z è´ß@8#˜@8¾:@8 >+@8Iç@8Ù?²„× ì²x@8Î÷@8i§@8Å@8S@8û—?©'¾²[@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø2@¨ãt¼j~ú@¨ãv“u@¨ãt¼j~ú@¨ã{–Œ)%@¨ãt¼j~ú@¨ãf£bèm@¨ãt¼j~ú@¨ãh:Ië@@¨ãt¼j~ú@¨ã`º''@¨ãt¼j~ú@¨ãiÄ8B6@œ'ê~ùÛ#@œ'Ý÷@|‘@œ'ê~ùÛ#@œ(“üáé@œ'ê~ùÛ#@œ(aé Ó@œ'ê~ùÛ#@œ(”4ûa@œ'ê~ùÛ#@œ(1Œ—M?@œ'ê~ùÛ#@œ(ù’R¾@9*0U2b@9(”À8ì@4£÷ÎÙ‡@4¥Êö.@4 "Ðå`B@4*XÀis`@3Þi­BÄ@3å“|Њ@3Þi­BÄ@3ÃÕ­Ã@3Þi­BÄ@3Ko?µŸ)Ø1?”:¶a?“ô0ÿèç?,’H!Ó?‘).%@g?“`P(ee?°ÒY%îö?µYÕÎÒØ?¡"U¥\#?å²mÝ?3ç1?œËkÆa"à?¶œH„r’?›Tý”?Y?:å81?†Xh>þ*Ë?ÙAÌ+dý?•…:#ˆ€™@@&@"@@0@*?ð?ð?ð?ð?ð?ð?oØWŸ€?jÚ•³—€?‡È&:Ö-?tÿÆ3’™Î@¨ãs U±@œ(pù ?— e x—?‡£6lw@&±½°¿†N?ùÍÃ^È4@Ÿp8_v¿@3@£&âÐå`B@£&âÐå`B@£&âÐå`B@£&äÝ/ @£&âÐå`B@£&ã9Àëî@£&âÐå`B@£&ÁU@£&âÐå`B@£&ôFs×@£&âÐå`B@£&ê=p£×@¢Rk…¸R@¢Rl1&é@¢Rk…¸R@¢R^\‘ÑM@¢Rk…¸R@¢RdÂø7µ@¢Rk…¸R@¢R;ô‡ü¹@¢Rk…¸R@¢RE8ï4Ø@¢Rk…¸R@¢RC× -=q@4|ÚQ@4G®zâ@1{ Iº^@1vý!ÿ.I@1{Ƨï²@1u8ï4Ö¡@1Œ¿±[W?@1y‡+ @1Œ¿±[W?@1{'»/ì@1Œ¿±[W?@1|‹C•?|¬Çëý ?ÉGãA­÷?’ʶ‹ùs?™ÿ " ž?Òß© ÷?¡Ëê™õ£¥?|¬Çëý ?“‚Û£0Τ?“1Ú©! ?ª\(­A?ª²âëL¢?±š|9?‚yî8Á#?êzŽx?™¯Ùºà?š;UïçAE?›ÇûP|?¤²¢Òó@@@@@(@,?ð?ð?ð?ð?ð?ð?j(!Z꿆 -¥µ½À?Qþ\õtå]?e漫z @£&æÉ]üÛ@¢R_ÚÊl?j®®…ÿ?{”`î\a?Ù`V‘éÜ?æ§ò.}[@Ÿ_>aÎ6@4@­'¢MÒñª@­'£u¶Ä6@­'¢MÒñª@­'¡@N¥@­'¢MÒñª@­'/Ÿ¿@­'¢MÒñª@­'«C,¥@­'¢MÒñª@­'¨ÁTɆ@­'¢MÒñª@­'­úCþ]@œ— Ä›¥ã@œ—£× -=p@œ— Ä›¥ã@œ—´ðØDÑ@œ— Ä›¥ã@œ—§8}¿@œ— Ä›¥ã@œ—‚\(õ@œ— Ä›¥ã@œ—‹'»0@œ— Ä›¥ã@œ—„êJŒ@7½:’£@7ÄÞïl@5+¥ãS÷Ï@51ä÷eý‹@4'KƧïž@4&?¼@3Ê0U2a|@3Ê™0¾ í@3Ê0U2a|@3ÏÒòä@3Ê0U2a|@3Ƈ+ J?™I'%ö«?œ%“=ý7"?’©ßc«?i²Pƒè?šdt O?”|„¥&?ŽÕQp Î?ªåøÖ¶£­?ŽËÜ¿€?’îy†Ò‡‚?™x9ÿ¥l?ŸÙXˆ‡#?‚˜>¸?­Ú@/@õ{?Š[¦Råb?”ûÅìÆÅ?ŸHF!œ6²?–¿nè$„@@@@@*@(?ð?ð?ð?ð?ð?ð?]ü -¿oá­Ë?H¥0H^Ï?SEŸ@­'©¦d®@œ—ŽUn!#?chKqºÕ±?ušÐ/…×e?¼ÞÌ,p?áp:q¯¶¿@Ÿj…$ß2 @5@¡ž€ƒn˜@¡žš^5?}@¡ž€ƒn˜@¡ž€ƒn˜@¡ž€ƒn˜@¡ž~š@¡ž€ƒn˜@¡žTÉ…ð@¡ž€ƒn˜@¡ž¼@¡ž€ƒn˜@¡ž€A‰7M@¥ÂŒÌÌÌÍ@¥Â‡+ J@¥ÂŒÌÌÌÍ@¥ÂBÃÉð@¥ÂŒÌÌÌÍ@¥ÂŒÌÌÌÍ@¥ÂŒÌÌÌÍ@¥ÂŽ_oÒ@¥ÂŒÌÌÌÍ@¥Â5¨Xx@¥ÂŒÌÌÌÍ@¥ÂÒñ©ü@8N쿱[X@8X Ô•*@2?|í‘h@2éá°‰ @1RÐå`A‰@1R䎊qÞ@0 ¿±[W?@0 «ŸU›=@0 ¿±[W?@0 篷ê@0 ¿±[W?@0 ˜_ö”?|öOÿÝ?ÎÁ¯‰t0?‘šÕU#?ŒvHn&³?üEÙáõ{?‘¦ µÚ?´Žé`m?“?xr¢I?„¦Ô•]I?Y‡…—Ø?üÓqÔNŠ?Éöm/w²„?°vs‚¹R_?©¬‰[Ùg??¡Ó㯗Ë?–4Ê?™2ÿËtÎ?~ì“?ÕÒJ?¬ƒÁ^èî?¬“°€?Ÿ¾ä#žˆ?šô8&¨¯?“»lÂÜ`Û?±GJ¬ä ?¡¸­lq³ß?•1C'÷Ó3?’¡ ;’n?’ÖÂäÔ%?•ž}Œæ’@@*@,@*@8@6?ð?ð?ð?ð?ð?ð?yiJ?lâÆð?g "³$Uz?aÕ'¢ÙúJ@¯ X‰˜@™ ,zÕ?…ìF¥¶åæ?† I?ñy¹B -@¥xAQ](@Ÿkô‡Jé²@7@§mØbMÓ@§mØbMÓ@§mØbMÓ@§mÙrGE9@§mØbMÓ@§mÙ™™™š@§mØbMÓ@§mØÔýó¶@§mØbMÓ@§m×´¢3›@§mØbMÓ@§m×>«6y@«4fffff@«4f§ï²@«4fffff@«4g8}¿@«4fffff@«4hðŽ@«4fffff@«4fÏAò@«4fffff@«4fÜ]cˆ@«4fffff@«4g»/ìW@3Žì¿±[X@3¼@.MV“@.MBÃÉîÌ@-òn—Oß@-òGE8ï5@.½Vlô"@.½²-V@.½Vlô"@.½p£× ->@.½Vlô"@.½—ö+jé?|¬Çëý ?é¥3i£ó?‘Ûü†Nã?‹×lÇ…N9?òǹíT­?ß-tT?|öOÿÝ?’#maЀ?r¼Jsž?EÇàÔPà?Ø¥²À<(?{L Õ¢D?‚2Y0â³?Œµ3‰;šÏ?‚s@ˆaÛ?‚æÊ¬vã?†špk Y?†©b/bJö@@@@@(@*?ð?ð?ð?ð?ð?𿜖¿à?#W‹`?#éÊc¬ƒl?†e”® @§m؃ÄX@«4fòšê?CÏkÀ~½?2ÙŸu?'p?•\»JYõô?rg³¿âÁê@Ÿfñlaú@8@¡Î·ÎÙ‡@¡Î´9Xa@¡Î·ÎÙ‡@¡Î·ÎÙ‡@¡Î·ÎÙ‡@¡Î¹Àëíú@¡Î·ÎÙ‡@¡Îº^5?}@¡Î·ÎÙ‡@¡Î·éùs@¡Î·ÎÙ‡@¡Î¸y=Ù@¯»çl‹D@¯º^5?}@¯»çl‹D@¯½p£× @¯»çl‹D@¯½!ÿ.I@¯»çl‹D@¯½/Ÿ¾@¯»çl‹D@¯¼£n.@¯»çl‹D@¯¼]cˆe@6=:’£@63¢œwšl@1GÎÙ‡+@1GškP°ò@0iÛ"Ðå`@0i³Ð|„¶@0._oÒ @0/ „M;@0._oÒ @0.¾ß¤?æ@0._oÒ @0/HË’:?ˆÿÀ)T¿Æ?¥nÇx?)?‘.Ò®ó_ ?‹¦ ŸYÔ?‘; ÷^?‘<ƒÜ_õ?}Ñ¿ž,?’Dê™.x?ÏtP°*?1ð'7éÃ?çêÑHcÇ?ÐnçK/?±êH´ÿ±?lío>÷?ƒ~¨õ/¥O?ƒGϵ¨í'?ˆA0û)n?‡v>ª¸ @@@@@@ ?ð?ð?ð?ð?ð?ð?O{³ôŒ??ç~Ð?D­‡ŽÕ7P?+FF ,ø@¡Î·†6J@¯»°J?cSH:QÚ|?MYŒui+ ?Ë]_̨?£9áT­7Ì@ŸiWæÔ‘D@9@£•Ù‡+@£•ØbMÓ@£•Ù‡+@£•Ô`ªdÃ@£•Ù‡+@£•×eýŠÛ@£•Ù‡+@£•×ö+jè@£•Ù‡+@£•Ót¼j@£•Ù‡+@£•Ô•*™@«¹ãS÷ÎÙ@«¹å¸Qì@«¹ãS÷ÎÙ@«¹âh Ô•@«¹ãS÷ÎÙ@«¹ãn.±Ä@«¹ãS÷ÎÙ@«¹å®æ1ù@«¹ãS÷ÎÙ@«¹æs×Ü@«¹ãS÷ÎÙ@«¹ä xG@5í¥œàv@5ëçl‹C–@2’ Iº^5@2’n—Oß@2Z~ùÛ"Ñ@2\¿±[W?@1Ê0U2a|@1Ì/ƒ{J$@1Ê0U2a|@1Í:’£@1Ê0U2a|@1ɺ^5?}?|¬Çëý ?­hX™*?‘ojVrn7E?ƒ/‹ÍY}‘?OéáÜtx?‡»¢Øˆ‹?„E£R ÕY?гá‡}?‰®ââP\@@@@@,@(?ð?ð?ð?ð?ð?ð¿H>Gà¾ù“¹?4¸k,ËiŸ?-ï.qبÚ@£•Ö”h˜´@«¹å-´‘h?U²¦X5€?NoZ–V?³LMa›!à?¢žª%ý“@ŸfáÏ…@:@¨m8Ôýó¶@¨maÊÀƒ@¨m8Ôýó¶@¨m5*™0@¨m8Ôýó¶@¨m/4Ö¡b@¨m8Ôýó¶@¨m/ƒ{J#@¨m8Ôýó¶@¨m)îËû@¨m8Ôýó¶@¨m..±Ä3@£Ø -=p¤@£Ø3333@£Ø -=p¤@£×ýp£× -@£Ø -=p¤@£×þÿ—$@£Ø -=p¤@£×ú)Çy§@£Ø -=p¤@£Ø Ô•@£Ø -=p¤@£ØÎp:û@7 Î_oÒ@6óŽóMj@38r° Äœ@33FÜ]cˆ@2y7KƧð@2r£S&@1ó&Á½¥@1éÀëíúD@1ó&Á½¥@1é‡+ @1ó&Á½¥@1éQ‚©“ ?Àët#®ªV?qÂ' -B›?”&$#ú/ò?ö€(tUo?šÉ¨³˜+?“÷Vdà?”¼íÒh??•2ã(_Ïù?“Ú%¿»8?–r°¤»®?š+hd{ö?’›â¾Ð'µ?¼ÐÁß9&û?‚ñêã ?„A'Š_^?‡µ‚[Ö?‰/ã̽`ª?Š—à `ž@@@@@,@(?ð?ð?ð?ð?ð?ð¿_á®䀿_ [µè?g¸OØgØá?gà¤ìb-@¨m.ƒ½¨|@£Ø»Í¢?xïüS•æ?ˆTr´"?âk(ЙùÍ@)å”Ç‘i@Ÿqì°JÔ@;@®(r° Å@®(õÂ\@®(r° Å@®)ÞÒ@®(r° Å@®)*0U1@®(r° Å@®(õÂ\@®(r° Å@®'“Ý—ö@®(r° Å@®'“Ý—õ@¢¥Þ¸Që…@¢¥ß;dZ@¢¥Þ¸Që…@¢¥Þ«6z@¢¥Þ¸Që…@¢¥Þ5?|ï@¢¥Þ¸Që…@¢¥Þ¸Që…@¢¥Þ¸Që…@¢¥ÞvÈ´9@¢¥Þ¸Që…@¢¥Þš@3úqÞi­C@3úŒL˜_@/Gï²-@/Hr° Ä›@-/ß;dZ@-/ìVÕÏ«@,u¨Xy=Ú@,usê³g¡@,u¨Xy=Ú@,uéá°‰¡@,u¨Xy=Ú@,uÂ\(ö?}Ñ¿ž,?ZÁ».œ?‘$Cê¡@í?‹¦ ŸYÔ?ôê÷º»â?¼‚Ë¡K?|¬Çëý ?’#maЀ?„¦Ô•]I?-õI¸`K?ß’ºèh!?Uÿyu”#?‚Ì ÝŽ‚8?ŒÂ§dß±?‚|׿pZ?‚æÊ¬vã?†½ª»—?†£îž«î@@@@@*@&?ð?ð?ð?ð?ð?ð¿1½÷à¿+ý2À?ŽLžÛ>îKõKç@®(tŸb}@¢¥ÞÅ[Ô?=bqw©Y?ôÈœL?‡ Ü”k?(õ•¤Ý€˜@Ÿgfƒi@<@©Š ÌÌÌÍ@©Š ¤õ@©Š ÌÌÌÍ@©Š ™hi)@©Š ÌÌÌÍ@©Š ÓGqû@©Š ÌÌÌÍ@©Š »¦¢é@©Š ÌÌÌÍ@©ŠAIZ`@©Š ÌÌÌÍ@©Š(C@“&W -=p¤@“&V× @“&W -=p¤@“&R·è%w@“&W -=p¤@“&T¼eÞ)@“&W -=p¤@“&S©þù@“&W -=p¤@“&Y¨H.*@“&W -=p¤@“&Sö+ó±@6šÔ,<Ÿ@6ÜÌjJ@2B° Ä›¦@2A7¤kE@1v§ï²-@1tË)äõ@0ãÉîËû@0áÞœÏßO@0ãÉîËû@0ámÑÇíÐ@0ãÉîËû@0à%ÞsÔ ?~Ov_Ø­«?þC*«!?‘Ûùw¡|?‹¦ÿ>'‡?’) / 7ã?í…q¥Ú?e™”XWø?’8Á™N?‹^Ónu§?1sææÅ#?’ZpÉs{Ÿ?W¶žî»?‚U«£?!0Æ1?‚s9½+6d?ƒl‘pM?‡Ê¨—ÉÆt?‰e-$#…{@@@ @ @6@(?ð?ð?ð?ð?ð?ð?L=ñE°¿#5A¨?C»+0E÷?3Û)}Ÿè@©Š ¡+ð%@“&VØ¡B?c­Ÿ±Ëˆ?TLæ´]±¼?ÓŸí©?³…¾]¸‚@ŸgC@IAé@=@¢Ð²-V@¢Ð°£× -=@¢Ð²-V@¢ÐœPHñ@¢Ð²-V@¢Ð˜DЩ@¢Ð²-V@¢Ð™™™™š@¢Ð²-V@¢Ð—´¢3œ@¢Ð²-V@¢Ð‘·Xâ@®ÈŒIº^5@®ÈŒ1&é@®ÈŒIº^5@®Èž\‘ÑN@®ÈŒIº^5@®È–“u@®ÈŒIº^5@®È§E8ï5@®ÈŒIº^5@®ÈƒFÜ]e@®ÈŒIº^5@®È—>«6z@8ºqÞi­C@8ÌÌÌÌÌÍ@5ÎÙ‡+@5_ö”F@4Ë"Ðå`B@4Êû~ÿ—@4 -0U2a|@4¯·éú@4 -0U2a|@4:’£@4 -0U2a|@4u%F -¦?¨Ö_pP1?œf¨Db?›£=Ñã5?Uÿyu”#?žî üÑ)?›‹ÞV‘?¢F^ì¼Sð?©\Lž)C?¥iÕ¯‚ùŠ?ŸY`òƒë?¡f’@?¦¤Wë'?¡Âœ•Ð,Ã?˜ª"_¾­?¦—âŸ7 ?‡ÕZ›µûÜ?›€*:€R}?‘øù>3}@@@@@"@$?ð?ð?ð?ð?ð?ð¿t‹„€?6øJÔð?Z ýcû´¿?uÁYEÏ@¢Ð™[,·Ç@®È”·lÒ?oy‹£˜/?’é4‘Ï?ÉÉO7Ï—R@-9™Y²@Ÿn?»©Ú÷@>@ àNV“@ àN_oÓ@ àNV“@ àOìVÕÐ@ àNV“@ àOÅFX@ àNV“@ àLÉQ@ àNV“@ àIÓ0ÊÄ@ àNV“@ àJf:Ç}@§¼í‘hs@§¼î7„à@§¼í‘hs@§¸[ŽÁô@§¼í‘hs@§¾8\~@§¼í‘hs@§´È8ã@§¼í‘hs@§¶æx¹°@§¼í‘hs@§µ¡c@4ÖšÔ,<Ÿ@4׿šÔ,@13S÷ÎÙ@13?ä4Þ†@0¾V“u@0½ï%…©¿@0Eœàu÷@0A¥ÇÌÉ@0Eœàu÷@0>¨ºÝ”@0Eœàu÷@0@-à,ZÎ?|çµB &€?ÃUV&w$?‘'7 O|¬?Œ#™®ÂZ?’ÅÀ;éA1?‘ÂeVV¸?|¬Æ Væ?’´•£Œ? oò|?’kë»S?’Q„xy_?’.?¨p?‚oºáܺ?<œçáTJ?…,mÕ6O?†Sð.Di?‡sžöI?ˆX† ¼|î@@@"@&@6@5?ð?ð?ð?ð?ð?ð¿KBb;¸¿\®Ôp? —›:Àù??2\Û½Ùm@ àLH[Ù@§¹ -ò=è?@9¯yÜò?_ZÿüŽA?‹2KÎ ¬?ƺ?øø¡ @ŸfO×ø\ì@?@«£6È´9X@«£>vÈ´9@«£6È´9X@«¢ö“u@«£6È´9X@«¢ì<žìÀ@«£6È´9X@«¢ò-V@«£6È´9X@«©mžƒä&@«£6È´9X@«©“×Ûõ@¢d“t¼j@¢dñ©ûç@¢d“t¼j@¢dJçÕfÏ@¢d“t¼j@¢cïiDg8@¢d“t¼j@¢cï²-@¢d“t¼j@¢býó¶F@¢d“t¼j@¢bJ=p£×@7Bò䎊@7>p:û~‘@4…?|í‘h@4¶+jçÕf@4ƒt¼j~ú@4Ón.±Ä3@43&Á½¥@4’ñ©ûçm@43&Á½¥@3`:û~‘@43&Á½¥@3ZÀƒn˜?‚á²Olºü?§Bx1 ·?Àñi“Á?»¨òß>ð-?ɧ‡dD2?Î’Ü9ÖÊ?¨Ö_pP1?¨gôÏ*å¯?ÁÕ¬{TÓ?Ì•ËTY?µŽðËèúR?ÃbIÄß­?‚¸“Îè ÷?©ñºåÇÂ-?µûįJ˜?³ÀKá{~?µ‰2 ßý?»N£²›R\@@@@@ @"?ð?ð?ð?ð?ð?ð?É“ü±*¸¿¼ù4I ?ÁÄÈTÛ ?—ZkùÄ@«¤[žš#@¢cqíMÙF?Ù£¾d¼5?µô>rÅ£@jý1,%µ@"qÝh-@Ÿa'‹!¢ù@@@§Òí‘hr°@§Òã•%@§Òí‘hr°@§ÒÓ÷ÎÙ@§Òí‘hr°@§Ò×´¢3œ@§Òí‘hr°@§Ò×§†Â'@§Òí‘hr°@§ÒÓüPG@§Òí‘hr°@§ÒÖ”Fs@®îß¾vÈ´@®îçï²-@®îß¾vÈ´@®î»çl‹D@®îß¾vÈ´@®îÈð@®îß¾vÈ´@®î¡aä÷f@®îß¾vÈ´@®î‹jçÕg@®îß¾vÈ´@®î‡8}¿@8ÿ–»˜È@8ï²-V@5¦‡+ J@5¢ZîcŠ@4ä¼j~ùÛ@4ÎóMj@4–ý!ÿ.I@4pÞÒˆÎp@4–ý!ÿ.I@4‹Í5¨Xz@4–ý!ÿ.I@4…oi?|öOÿÝ?¥?áýí¯?¡.íN?ªÒè"co?¥60«‹a?§¼œ¾ó?¶™b’jk±?¨½P|÷©ß?”ÿŒÙÿIí?´ÓKÓÈÂ?³ÍÂ]%ž®?©üˆ“ª»P?ºÆF¯{ƒ³?¢ß”ÑY?™Jz¬Uf?œC‰þx%?Ÿ/Òѯ¢?¢£A=ñ®@@@@@@?ð?ð?ð?ð?ð?ð¿l6ʪ˜¿“Wü£õÀ?C ŽTUj?krv‘o|@§ÒÙ…¤d@®î¥Ð¸‹?l#ë#qÔ?ˆe7¨&?®0lÝFt8?ˮͿtƒ¹@Ÿm¢÷Ì9Í@A@¬ÂÖ“u@¬ÂÕÂ\)@¬ÂÖ“u@¬Â×eýŠÛ@¬ÂÖ“u@¬ÂÔ`ªdÃ@¬ÂÖ“u@¬ÂÖ_Ø­¬@¬ÂÖ“u@¬ÂÓŽóMj@¬ÂÖ“u@¬ÂÖ‡+ @ þ«…¸R@ þ«Æ§ïž@ þ«…¸R@ þ­5¨Xz@ þ«…¸R@ þ©xÔýô@ þ«…¸R@ þªJŒM@ þ«…¸R@ þ´ýó¶F@ þ«…¸R@ þ±ø .@5N쿱[X@5Nƒä%®æ@2©‡+ @2¨­«ŸU›@2ï²-@2Xy=Ù€@1ãÉîËû@1âÃÉîËû@1ãÉîËû@1â©“ àß@1ãÉîËû@1ã9Àëíû?|öOÿÝ?W[†?‘yß]³Õø?ŽwX/8?‘ …É¿¼?‘…Rgå.?1·†Æjñ?’,ö´´Ï#?‘8“‡«G?•GÝóuS—?’ºñS©YÖ?“IëH!w?ƒmÕ+&¬‰?c I??ƒ]€µ,Vß?„XïWÉò~?Ž .0åv?‘4hÆpÉ„@@@@@&@(?ð?ð?ð?ð?ð?ð¿ +4?Wæ-j?3zàŽÓÔ?H¤"ÓÏG(@¬ÂÕ§™ˆ¶@ þ®­¤M¶?SW -LCô?i%dl[1?³2Xºd{?ÙVoåÖÇ@Ÿf†H5JÏ@B@¤¡˜“t¼j@¤¡œ¬1'@¤¡˜“t¼j@¤¢ -Àƒo@¤¡˜“t¼j@¤¡§ÕfÏC@¤¡˜“t¼j@¤¡Éº^5@@¤¡˜“t¼jÁ.„€@¤¡˜“t¼jÁ.„€@¦GÈ´9X@¦GÅãS÷Î@¦GÈ´9X@¦G™=Ùc@¦GÈ´9X@¦GåãS÷Ï@¦GÈ´9X@¦Gý—ö+l@¦GÈ´9XÁ.„€@¦GÈ´9XÁ.„€@7–»˜È@7Åo@5‚° Ä›¦@5]Oß;dZ@4K"Ðå`B@4|²•éá°@4‚@·€5@3Óþ\‘ÑN@4‚@·€5Á.„NÜC,¥@4‚@·€5Á.„NÜC,¥?Œs¤DÅÐ?²ÔIšéö³?À*ç´ÃþÝ?´]£—´œ/@8Iç@8Ù?‡YÍ_?¢W;„zY?¸ÙàÝ ?ºúèï„@8S@8û—?„W;RS?³A@¯S~`?½µkÈç§?ž/Ç"êõâ@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøC@ C¡ÊÀƒÁ.„€@ C¡ÊÀƒÁ.„€@ C¡ÊÀƒÁ.„€@ C¡ÊÀƒÁ.„€@ C¡ÊÀƒÁ.„€@ C¡ÊÀƒÁ.„€@™–ƒn—Á.„€@™–ƒn—Á.„€@™–ƒn—Á.„€@™–ƒn—Á.„€@™–ƒn—Á.„€@™–ƒn—Á.„€@7rÃÉîËûÁ.„>¤µÜÆ@3 Iº^5Á.„M‰ûçm@3gKƧïžÁ.„QnÙ‡@1õµsê³hÁ.„NÜC,¥@1õµsê³hÁ.„NÜC,¥@1õµsê³hÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøD@£™™™™šÁ.„€@£™™™™šÁ.„€@£™™™™šÁ.„€@£™™™™šÁ.„€@£™™™™šÁ.„€@£™™™™šÁ.„€@ž üí‘hsÁ.„€@ž üí‘hsÁ.„€@ž üí‘hsÁ.„€@ž üí‘hsÁ.„€@ž üí‘hsÁ.„€@ž üí‘hsÁ.„€@8½:’£Á.„>¤µÜÆ@4µãS÷ÎÙÁ.„M‰ûçm@3Ë"Ðå`BÁ.„QnÙ‡@3 -0U2a|Á.„NÜC,¥@3 -0U2a|Á.„NÜC,¥@3 -0U2a|Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøE@ªì¨õÂ\@ªì¦éxÔþ@ªì¨õÂ\@ªì¥8ï4Ö@ªì¨õÂ\@ªì£¢œwš@ªì¨õÂ\@ªìž5?|î@ªì¨õÂ\@ªì¥”¯O@ªì¨õÂ\@ªì¥ýŠÚº@©®—Oß@©­V@©®—Oß@©¬˜_÷@©®—Oß@©©“ àà@©®—Oß@©§ ù l@©®—Oß@©ªÀƒo@©®—Oß@©«íúCþ@6¥öý!ÿ.@6¥ðoiDh@3i‡+ @3cñA [À@2v§ï²-@2r Iº^5@2 ¿±[W?@2ñA [À@2 ¿±[W?@2 Dg8~@2 ¿±[W?@24êK?}Ñ¿ž,?•Íñ¤Ý q?“%HCâ=s?—³Q+Ùv?’<_+fjä?’ß5éõJÈ¿A.”íà?HŽD–=ñ??;õ%Â\á‹@ªì¥§›Ñ@©«Öx« ?hÒ>F¾p?[ù~žw?Úd©('¾?½uE‚ï@ŸeÅû0Úà@F@«îð£× -=@«îñ&éxÕ@«îð£× -=@«îðË)^ž@«îð£× -=@«îð¾ í*@«îð£× -=@«îñÅ@«îð£× -=@«îð-à @«îð£× -=@«îð¸»@©|¯²-@©|¯²-@©|¯²-@©|¯v_Ø®@©|¯²-@©|°¸¼@©|¯²-@©|°¸¼@©|¯²-@©|°‰ 'R@©|¯²-@©|°Hð@6¯O „M@6&Á½¤@/³t¼j~ù@/³ŽóMj@-ãn—P@-âÞÑ·@,`ªdÂù@,mÅÖ8‡@,`ªdÂù@,9XbN@,`ªdÂù@,9XbN?€‚ñêã ?é¥3i£ó?‘½ümüñ?‹ª½¨ª8v?êtÿKÑc?¶*WFÑ?}Ñ¿ž,?’›ÈÖÝ?~ËQ§?/ò×ÈZø?ÔÒ@úˆ‘?M\³Ù“@?ƒ¡É^&Ö?Œ°¶.Ä+Æ?‚‹¡8*ú?‚ð'ã:ÂÝ?†½ª»—?†–f_ÔŠŠ@@@@@,@$?ð?ð?ð?ð?ð?ð¿(…`?%ò¥À?"Õnµ#?‹¥6¤G@«îðÙI@©|°NOÆ?BµãŒ6Q?%1ÚO]Þ?‘VÔéç;?Vj0Õ¸JÅ@Ÿg MCE–@G@¯=Ƨï²@¯=Ƨï²@¯=Ƨï²@¯=Â3œ¿@¯=Ƨï²@¯=¶®}W@¯=Ƨï²@¯=ÂÞÑ·@¯=Ƨï²@¯=Õ%@¯=Ƨï²@¯=¶®}V@®"ÍOß;d@®"ËÆ§ïž@®"ÍOß;d@®"Љ 'R@®"ÍOß;d@®"Ò½<6@®"ÍOß;d@®"Ðò{²ÿ@®"ÍOß;d@®"Íà p@®"ÍOß;d@®"ÍúCþ\@5=:’£@5:îcŠ -@1sS÷ÎÙ@1hÇâ‚@·@0V”@0“{J#9Á@/á-w1Å@/Ì1&éy@/á-w1Å@/ÌÙè>BZ@/á-w1Å@/ÎóMj?‚á²Olºü?‘¸ü"ù€2?—¿ÔÌÆ?’×­“·?“¦Æ_ÌdA?’Ýå"çX?|¬Çëý ?”­ŽzF”?”p¶I”“ž?”1}…B†-?˜#ÛbŸ^?“å¡jÚ?„›‹ÖO?3I¶#i?ƒM¬Öe—_?ƒv_.^?†å·ÑfWà?mŽÃÎŽ@@@@@"@(?ð?ð?ð?ð?ð?ð¿KÒfâ¸?E~âg0?*ʆºœk?BZîb@.3t¼j~ù@.3&Á½¥@-ãn—P@-âëC,§@+¨Û‹¬q @+©Dg8~@+¨Û‹¬q @+©7KƧð@+¨Û‹¬q @+¨è§æ›?|¬Çëý ?Ï[äe(lQ ?ŽwX/8?”¶q fì?’IåŠú?„F/·ÿP5?’ ·6Öc¤?‘ïɇ}~?’‘Ç#·X?Ä —+¥A?•J佪™^?ŒR‹w#z?pù51íÒ?„³3Z\ð…?…ÇóÏ€9"?‹&¸ê±fÂ?‹ ˜1 D@@@@@@,@&?ð?ð?ð?ð?ð?ð?H7.«@?P]žDŒ?1µï\±>?M6mQl!A@§¶X+‰@£î‰Á[äØ?OZGóØP?o -Æ•i-°?›¸þÖ¡Î?×ÜDÄ !ž@ŸiE™]@O@¬Ÿ¾vÈ´@¬Ÿ¾vÈ´@¬Ÿ¾vÈ´@¬¢@·€5@¬Ÿ¾vÈ´@¬¢¶®}V@¬Ÿ¾vÈ´@¬¢&€J@¬Ÿ¾vÈ´@¬¡–R½<@¬Ÿ¾vÈ´@¬¢¶®}W@«Û§ï²@«Û$Ý/@«Û§ï²@«ÚþÑ·@«Û§ï²@«Ûƒn˜@«Û§ï²@«Úÿ.Hè§@«Û§ï²@«ÛëíúD@«Û§ï²@«ÚÿØ­«Ÿ@2Ì]cˆe”@2Ëûµsê@-½²-V@-¶¡aä÷f@+–E¡ÊÀƒ@+‘4êJŒ@*úÇË)_@*õ*™0¾@*úÇË)_@*ô¯O „L@*úÇË)_@*óê³g ù?É^òÀXæN?‘J–?-.º?‘°&޲P?Œ9‚Ù.?‘ÇöÃÞ`?’ Ù–¥£?ÐbMçê_x?“6SÇ{Ó?Ê -ä\ä?£û,Ɇ?‘†óèJL\?‘C å;Ã?€g‹)ØêÀ?þrªbT?ƒ´],m=?ƒ­=aÊw%?‡ø¢:›¸1?ˆCns¥ @@@@@,@*?ð?ð?ð?ð?ð?ð?'d°¢?4;”½p?2àNHíþU?@Ÿ ÃÙQ@¬¢&ƒ@«Úÿíýéî?B¯×7 ?O|#D/Ù?|úŠÚ!Ü?” `ÜWÀ@ŸrâY¶Y:@P@§*ˆ´9X@§*†éxÔÿ@§*ˆ´9X@§*ŒIº^5@§*ˆ´9X@§*”!-v@§*ˆ´9X@§*ŠqÞi­@§*ˆ´9X@§*•Â\)@§*ˆ´9X@§*–R½<5@¢ 7Kƨ@¢ -Àƒp@¢ 7Kƨ@¢®zá@¢ 7Kƨ@¢üí‘hs@¢ 7Kƨ@¢–R½<@¢ 7Kƨ@¢:’£@¢ 7Kƨ@¢Zîc @7wâ‚@·€@7xâe+Ô@3®5?|í‘@3£ê³g ù@2Ãt¼j~ú@2¸ºÇË*@2TmÅÖ8†@2O4Ö¡aæ@2TmÅÖ8†@2>ÿ—$t@2TmÅÖ8†@2@IQ‚ª?˜ž^ƒÿ*ˆ?—hÄ”V?ž1ï3Î??’èÞ㬱_?§|Qæý S?¥[ÖàÇй?‘â%ì˜ ä?”zòžÕÿ? :-%šÀ?’"Š6›Wz?­VA®o?­uð!#©ç?–-¤]î§É?îÑšˆHÉ?ŒÊ­#г_?‡ÕZ›µûÜ?¡ÏX¼ãs~?¢qM¾,ð@@@@@,@(?ð?ð?ð?ð?ð?ð?g*Í^¿f f?RÜn#Oæ±?GÂ?„ƒ´@§*‹¸ƒJj@¢öRRª?m ÐE ?c¡š¾Ã'Å?ó»^Ê?±d²ó$’@Ÿg•° -o@Q@¯¬1'@¯!µŒ—@¯¬1'@¯\¬1'@¯¬1'@¯„µÜÆ@¯¬1'@¯#× -=q@¯¬1'@¯¯O „@¯¬1'@¯>ƒä%¯@•¬Iº^5?@•¬&ffff@•¬Iº^5?@•­=¿HÌ@•¬Iº^5?@•®—Xâe@•¬Iº^5?@•­öz—@•¬Iº^5?@•¬±&éxÕ@•¬Iº^5?@•¬–»˜È@8¥öý!ÿ.@8¦qãî9Â@4 í‘hr°@3¼žì¿±\@3‹"Ðå`B@31-w1Å@2¨è§æ›@2_4Ö¡aå@2¨è§æ›@2]ó¶E¡Ë@2¨è§æ›@2XK]Ìcò?|ò0p‰J?ÍŽÏö­#?Û¸F>±î8?×ÅÂôGe?Ù ÏqsU?ÒlT%ÊuÂ?¹9µ§òó?ÓÿïJ/p?ζa'~©?ËϬÑl×”?Ô¹dë-@Q?ÒN„)‰O·?‚ìÞ[N„Ú?¢ëµ~Ô™ï?«ÓÎôy…z?7<ï 4?°’ãMX¥ç?¥È©¾ó‚ž@@@@@,@&?ð?ð?ð?ð?ð?ð¿¬Ûa“ðà?œòç.8€?ˆKyFÆ4?›%ãÂì@¯ÊÊ#@•¬—@!$?¢TåÅâ?·»§±×Ä?Þn"ãeïf@•Ó#&¥@ŸaÿEb4ž@R@¥¼¥`A‰7@¥¼¥_›lÊ@¥¼¥`A‰7@¥¼¦ -¦L0@¥¼¥`A‰7@¥¼ª~ùÛ#@¥¼¥`A‰7@¥¼ª=p£Ø@¥¼¥`A‰7@¥¼¦µ (@¥¼¥`A‰7@¥¼¤›¥ãU@9aG®{@9bMÒñª@9aG®{@9|žì¿°@9aG®{@9°ò{³@9aG®{@9ˆè§ç@9aG®{@9xÔýó¶@9aG®{@9«ŸU›<@3=:’£@3<篷é@1}‘hr° @1zdÂø7´@297KƧð@2-<64@1zÔ,<ží@1sþ\‘ÑN@1zÔ,<ží@1sMjP@1zÔ,<ží@1kjçÕfÐ?|¬Æ Væ?äm°û0Ž?•=ÛtQ¾F?’(æ„+Zk?•³™»7…?–öfsPa?|¬h2:“?’j%ÓRa?¢Àì#Ì*0?•õ°­¿Èì?–›·†ø?£Ä=à?‚ofî@Ú?Œ¾»•lŽ?™{Tä=û?ŠÒ(>—œ ?°4\ɵ?›8~à,ã™@@@@@,@*?ð?ð?ð?ð?ð?ð?7­ûYp?t«›Ü*?D°»a?\ôœAS@@¥¼¦D.«³@9tDF–?bL…d³ö?yu‰¥Æg2?Í/MW­?ôˆ—¶ü±@Ÿc¯M½1é@S@«á–‡+ Á.„€@«á–‡+ @«á¡–R½<@«á–‡+ @«á4Ö¡a@«á–‡+ @«á™‡+@«á–‡+ @«á™‡+@«á–‡+ @«á”9Xb@œ²;dZ¬Á.„€@œ²;dZ¬@œ²@ëíúD@œ²;dZ¬@œ²>«6z@œ²;dZ¬@œ²@IQƒ@œ²;dZ¬@œ²DµÜÆ?@œ²;dZ¬@œ²=ó¶E¢@9Bò䎊Á.„>¤µÜÆ@4Iº^5?@4!‚©“ à@4“t¼@4SŽóMj@2p–»˜Çã@2pØDЪ@2p–»˜Çã@2pÞÒˆÎp@2p–»˜Çã@2pƒn—Ž@8J¨?›¹·þq§?’ -·>á ?‘ÔþÆvI‡?‘à2F0µÔ?‘Û.Yrî@8J¨?ž%Œ@&—?”p¶I”“ž?’:u.ý ?’aÔæ -/ ?“ <°·Ê@8p÷?™Ø7&½ x?¢AQˆ³3?ˆÝíá‰?Š|)-}í(?ŠÐ+`È“@@@@(@(?ð?ð?ð?ð?ðøøøøøøøøøøøøT@£ø« Iº@£øÊ/®Yÿ@£ø« IºÁ.„€@£ø« IºÁ.„€@£ø« IºÁ.„€@£ø« IºÁ.„€@£ø« IºÁ.„€@—?|í‘h@—Eìéµí@—?|í‘hÁ.„€@—?|í‘hÁ.„€@—?|í‘hÁ.„€@—?|í‘hÁ.„€@—?|í‘hÁ.„€@8¨†YJôñ@8˜5øµ¡@5k¥ãS÷ÏÁ.„M‰ûçm@5)Û"Ðå`Á.„QnÙ‡@4&YJôðØÁ.„NÜC,¥@4&YJôðØÁ.„NÜC,¥@4&YJôðØÁ.„NÜC,¥?œR¦FØR@8#˜@8¾:@8 >+@8Iç@8Ù?¦ˆIùºþ‚@8Î÷@8i§@8Å@8S@8û—?©üþÀUC @8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøU@¡ÎS÷ÎÙ@¡Î¾vȵ@¡ÎS÷ÎÙ@¡ÎcÉîËû@¡ÎS÷ÎÙ@¡Îbu%F @¡ÎS÷ÎÙ@¡Î[šu@¡ÎS÷ÎÙ@¡ÎS©*0U@¡ÎS÷ÎÙ@¡ÎT,<ží@£îPå`A‰@£î¤“t¼@£îPå`A‰@£îy0¾ í@£îPå`A‰@£îl"h Õ@£îPå`A‰@£î]ó¶E¡@£îPå`A‰@£îY#¢œx@£îPå`A‰@£îZ¹õY´@8wâ‚@·€@8)‡+ @2Œí‘hr°@2usê³g @1A‰7KÇ@1ªÍžƒä@0ÚQÎ@0mÅÖ8†@0ÚQÎ@0Ëûµt@0ÚQÎ@0Åo?–ªÎ­¡?òb[±?’÷˜–Èä?Œ^:Òf?’»–j˜ú?‘À?ÙÂ#’?¢F^ì¼Sð?“Öæ…0Âû?ÀpMºÅ?wàËxR?—¿îÁ˜Ë¬?—+Áèlç?®Mìi,†¢?ŽátÖÁ»‡?„ü›ðÓ?ƒƒQçÐ(?‘ ê$4 ?•*†*Zû@@@@@,@,?ð?ð?ð?ð?ð?ð¿)Ew@¿ˆÈRñ ?eðÈ>cž*?zññùò?Ã@¡Î]X!Žå@£îd5±¯Ñ?rËRàˆ?’Lâ[bv?ýó8Þv@oàuG@Ÿn 2@V@¤˜ˆ1&éy@¤˜ˆ´9X@¤˜ˆ1&éy@¤˜‰Çy¦µ@¤˜ˆ1&éy@¤˜‰Ô•,@¤˜ˆ1&éy@¤˜ˆŒç°@¤˜ˆ1&éy@¤˜†¸ºÇ@¤˜ˆ1&éy@¤˜‡ü¹#£@¬ITzáG®@¬ITzáG®@¬ITzáG®@¬IT,<ží@¬ITzáG®@¬IVE¡ÊÁ@¬ITzáG®@¬IT¢3œ@¬ITzáG®@¬IU2a|@¬ITzáG®@¬IU$Ü@5” xFÜ@5”ohÜ@1Ìí‘hr°@1ËÀ6âë@0çKƧïž@0çy¦µ @0°–»˜Çã@0°·€4mÆ@0°–»˜Çã@0±A [À@0°–»˜Çã@0°Ë)^ž?|¬Çëý ?*£|3Né?‘1f_¨Ï÷?Œ ßõIyû?‘u×íËÄî?ÍàÊaùX?€‚ñêã ?’pP‡È»?³2ºŽ'?íu…XÚ?‘q1ýAt?e¾DQ„Q?ƒ]€µ,VÞ?u/®Xã?„‘Za¹Q?ƒ ?ÿ½?‡<û¡71?†ùadô|@@@@@*@&?ð?ð?ð?ð?ð?ð¿0^à2Ð?(<±b@?&ª«/Ñ'?úÉxD4P@¤˜ˆ*Z%@¬ITÛí A?FØ8?ª¥?(‚LJ3„?›jüºÏl?[ÈÈh!Q@ŸgaÒsN@W@®J´9X@®J Iº^@®J´9X@®JŒç°@®J´9X@®J -Àƒp@®J´9X@®J w1Å@®J´9X@®J ÓÃa@®J´9X@®J ‘hr°@®/õ?|í‘@®/æfffg@®/õ?|í‘@®/öý!ÿ.@®/õ?|í‘@®/õŽ!–S@®/õ?|í‘@®/ôýó¶G@®/õ?|í‘@®/ô•*™@®/õ?|í‘@®/ñë…¸@7„¯O „M@7~Ëûµt@33S÷ÎÙ@33MjO@2A‰7KÇ@24mÅÖ8@2QÞi­BÄ@2QuŽ!–S@2QÞi­BÄ@2Q×Ûô‡ý@2QÞi­BÄ@2Q$Ý/?}Ñ¿ž,?’ÕOäª9ô?“‡ƒ×¤?Œ9‚Ù.?’FL{öó?‘äÿ̉ߚ?¥Ìõ}êáþ?”n‹rÕ|?”ïZºœ·?‘l™šU?’$) ‘?”V.·H?‡š¿]bœ?3XMÊV?†ž5ðqë?†k3`E`-?‰_uñšó?ˆk! ¨l@@@@@"@$?ð?ð?ð?ð?ð?ð?f -úq?Q¬ÄŠ?FœêxDê«?\Ày+€1²@®J ›ú@®/òæ}Äà?l•F§ ?r0‚ªZ?ØÆ:žÕÆh?×Qá Ù@Ÿn½­ôJi@X@¥ãáÊÀƒ@¥ãâ Iº^@¥ãáÊÀƒ@¥ãÞxfg@¥ãáÊÀƒ@¥ãÜJÃ@¥ãáÊÀƒ@¥ãÛQ`g™@¥ãáÊÀƒ@¥ãÚ0Kµ@¥ãáÊÀƒ@¥ãÚë8?=@˜}ó¶E¢@˜}ó¶E¢@˜}ó¶E¢@˜‚jÃÙ‡@˜}ó¶E¢@˜ !Hˆ@˜}ó¶E¢@˜uÂÎW¶@˜}ó¶E¢@˜†Ü€,‹@˜}ó¶E¢@˜‡°Èî@1Hè§æ@1Hè±Úœ@.ö“t¼@.ð Ëæÿ@.íOß;dZ@.áTÉ…ðp@-ÑÑN;Í6@-Â:lˆ4Z@-ÑÑN;Í6@-¿”ŸÌí@-ÑÑN;Í6@-½æ]¦¼¤?É^¨¯Âj?$Ê›:kf?“aHÆÎc ?Œ¼åž.4"?’ŸK¶ÖAü?’7gÎ]]?ÐbMÝn½?’~¥ÚBÛX?“]¸ò4q?-õI{Væ?‘V¬#œ?‘#ajÿ?€bMÕgô?Œ×2@,^Ç?‚}{Ifm?‚é­9œ«?‡>xA ´V?†ØÞÅð,Ÿ@@$@"@"@6@7?ð?ð?ð?ð?ð?ð¿3Ɇó?p]ÕÖ€?6Ô+iíÐ?T.ÒTHD½@¥ãÚæzQ@˜€-åV™?F"<å1e?c!8v±°Ä?…™äOsÜ?¾£ã–›l@ŸrØH^˜Ù@Y@«è÷KƧð@«èýߌ =@«è÷KƧð@«èöõ¿/@«è÷KƧð@«èózD€–@«è÷KƧð@«èóÀHL>@«è÷KƧð@«èõÿG -¹@«è÷KƧð@«èôò¶8j@™{q©ûçm@™{€=ÿ\@™{q©ûçm@™{l/Kñ@™{q©ûçm@™{h—™»H@™{q©ûçm@™{q‰ù½@™{q©ûçm@™{q¨(aÕ@™{q©ûçm@™{u×åB@7òÃÉîËû@7ðçìwZ0@3|í‘hr@3§·©å<@2çKƧïž@2èµù­„õ@2(è§æ›@2,$g¢/}@2(è§æ›@2,Ÿ©å@2(è§æ›@2,gPÄ)?}x—™¤µÜÆ@4; Iº^@3Ò¶®}Vm@2çKƧïž@2¬C,¥zx@2«xFÜ^@2^Ù‡+@2«xFÜ^@2hy=Ùc@2«xFÜ^@2l‹C•@8J¨?εŒŸ(C?»˜èèay?¾¼¬9»?·_¦ò” -Ÿ?Ƀ…*8@8J¨?ÆBÖ›¹?ÁÿýLAÌ?σº&ï¯a?Ä[­“Ÿö ?ÊÇ;|hˆ@8p÷?¡š5w?‘!´ö‚?£yD¼· ?™¼òQh@?»HíÕöU@@@@$@*?ð?ð?ð?ð?ðøøøøøøøøøøøø\@®NÐbMÒò@®NÅ`A‰8@®NÐbMÒò@®NÎ ÚÖ@®NÐbMÒò@®NÑ‘ËvÇ@®NÐbMÒò@®NГë¬:@®NÐbMÒò@®NÊt¿Ù»@®NÐbMÒò@®NÈÄ@¼+@“På`A‰@“ì‹C•@“På`A‰@“G­¼1S@“På`A‰@“BÖÙú#@“På`A‰@“9Ùq:µ@“På`A‰@“A·¸M–@“På`A‰@“IÈy¾‚@8úqÞi­C@8µBZî@2ö§ï²-@1“t¼j~ú@2kxFÜ^@0½Vlô"@2kxFÜ^@0¾¤¨ÁTÊ@2kxFÜ^@0¿|í‘hs?˜ž^ƒÿ*ˆ?Ðf¶ÓH¬?ÄÎȵs¥?‘sNX„êÒ?ºÎ(Q!ƒK?¬È7…‚9?‘â%ì˜ ä?ä©^ú?Îê¤/ù?¦)©`%;?ÉGZ> -º?ÀXEMˆä?¼Ã±0âŠh? Ï§¥7?–Ϥ?–¥ Ý})\?“6‰møŸã?”Ò -.Ô•@@@@@,@&?ð?ð?ð?ð?ð?ð¿Èø2vp?ÞÖ,€<<?«ztÝi?»³v0B¶d@¬­êwF˜@§…|o†È?Ã¸Š¨ðFÿ?ÕèH÷b²(@or“ò>O›@z¾Véãt¬@ŸbÎ|tó7@^@¡²Ã•%@¡²†éxÔþ@¡²Ã•%@¡²š¹õYµ@¡²Ã•%@¡²¦1ø @¡²Ã•%@¡²¥`A‰7@¡²Ã•%@¡²“ŽóMj@¡²Ã•%@¡²‘hr°!@¥žÛ¥ãSø@¥žÊÀƒ@¥žÛ¥ãSø@¥ž¯Ÿ¾w@¥žÛ¥ãSø@¥ž¹Œ~($@¥žÛ¥ãSø@¥ž­í(Œç@¥žÛ¥ãSø@¥žžß¤?æ@¥žÛ¥ãSø@¥žŸ¤?åÉ@5ëµsê´@5<Æ?@1ÜIº^5?@1£ÉîËû@1`A‰7L@0馵 (@0𖻘Çã@0¸ÁTÉ…ñ@0𖻘Çã@0¹ùrGF@0𖻘Çã@0¹e+ÓÃa?1·†Æjñ?•ò‘éÃ!?˜²éÃ_ÓÔ?ŒR‹w#z?•2q±ÏºÜ?—‡XE%:?žˆ2}?“—-´œc?’F^ì¼Sï?Ò–‚h±n? dÈr”K?¡ìøV?‚á²Olºü?Cx}¹x%?‚ÂÌ]æ?ƒR¨º“JÞ?‰]³ß’Ý?‡Ä­‹›Ü@@@@@(@*?ð?ð?ð?ð?ð?ð?sgèçÇ?§xáÕ`?l°ö{¼¶?‰%bðŒÆ@¡²‘é@¥ž^÷Œõ?Šhî¶d?¦Rç÷!ˆ@OPs/±8@Jî4rïì@Ÿd½.E«Ÿ@_@ ¯\(õÃ@ ¯ çù„à@ ¯\(õÃ@ ®ßEP2ì@ ¯\(õÃ@ ®w5õÄi@ ¯\(õÃ@ ®Èí!u@ ¯\(õÃ@ ®£æÚAH@ ¯\(õÃ@ ®…Ñq'@­~MOß;d@­~9Û"Ðæ@­~MOß;d@­~]#çGr@­~MOß;d@­~']ûD@­~MOß;d@­~4Àüú@­~MOß;d@­~ -PÔa¿@­~MOß;d@­~ØŠ&@8h†YJôñ@8j˜Vs¸@5E?|í‘h@5^î$@4Ct¼j~ú@4c—v¨+«@4mÅÖ8†@4 Þ(Óqµ@4mÅÖ8†@4‹Þq@4mÅÖ8†@4œžÒ &?¥ÕÍWh¿?ªáA‡¤ó?—H¬¯ñnk?™¿-3’0c?­w )qà?½”œÀ/NT?Ÿó%d(¤?±*Tòhg?“Ч©ÿHg?Ÿ„Yªp4q?§Œ%A`Q?°3È -¡¾?ˆlÌOAx°?² -™y$¦?À&XýØÐ?£ˆÂbZ ®?°Ã´f–Ø?¬øñ§æ”@@(@@&@9@6?ð?ð?ð?ð?ð?ð¿šÓòœ˜@¿Ã×i±?L«Y®ß"ç?rÜÃÅäðË@ ®ÍÒþÛ@­~)ˆÍuW?b·ˆDà¾?GÐ’ptß?š“NçÆh?õ÷~C³u@ŸhÓ>ÿçî@`@¬céûçl‹@¬céûçl‹@¬céûçl‹@¬cíV@¬céûçl‹@¬côFsØ@¬céûçl‹@¬cõÜÆ?@¬céûçl‹@¬cÿ|í‘h@¬céûçl‹@¬cø -à@ $Ý/@ ‰7KÇ@ $Ý/@  Ä›¦@ $Ý/@ Xâe@ $Ý/@ Z…‡”@ $Ý/@ JôðØ@ $Ý/@ ð¹@2ãg ù l@2ãˆe”¯O@1#÷ÎÙ‡@1—Oß;@0þV“u@0ôzáG®@0:Ô,<ží@01A [À@0:Ô,<ží@00ØDЪ@0:Ô,<ží@01$Ý/?ðO­W¬ÃÆ?Qdöÿô¼?™8ŠAWdm?“ׂa†Üü? £× -=p¤?4Üûõ¯?ð„ƒ;0?’ ŠŠ¤Hì?¥-hm7ªµ? vùv“?¤ Á lŸŸ?¢cšŠ5W?ð!̃?ŒöOÿÝ?…I‘ÒÁ/À?†O.ce?‡”_Õ­çW?>LR_5?ð@@@@,@*?ð?ð?ð?ð?ð?ð?_üz°º?]_þ{#?b9ûÐvµ?TbÚ„ ô@¬cøæÇ f@  ¢„?ró€Î Æ?c‡bŠKÆ?Æç»WXÈ"?›t-bPÖ¾@ŸsæÃf@a@¨Ä‡+ J@¨Ä‡®zá@¨Ä‡+ J@¨Ä‡+ J@¨Ä‡+ J@¨Ä‡®zà@¨Ä‡+ J@¨Ä†§ï²@¨Ä‡+ J@¨Ä†Ü]cˆ@¨Ä‡+ J@¨Ä†§ï²@¦Ä(õÂ\@¦Ä)7Kƨ@¦Ä(õÂ\@¦Ä(ÁTɆ@¦Ä(õÂ\@¦Ä(ÁTɆ@¦Ä(õÂ\@¦Ä(ÁTɆ@¦Ä(õÂ\@¦Ä)7Kƨ@¦Ä(õÂ\@¦Ä)ùrF@0ºqÞi­C@0ºqÞi­C@/.V“t@/.Hè§ç@.Ýó¶E¡Ë@.ÝÙb¶®@-u¨Xy=Ú@-u¨Xy=Ú@-u¨Xy=Ú@-u$Ý0@-u¨Xy=Ú@-uÂ\(ö?Éa—Ã(Ê?äm°û0Ž?‘@˜¯³¸?‹¦ ŸYÔ?ùª¨?¾ƒìÈÁ?ÐbV‡,?’&u÷E»@?ŽËÜ¿€?/ò×ÈZø?Ó%y*£=?oÌ‘'ýT?€b¡´ñ@?Œ­·Ž~('?‚2Y0âµ?ƒE 8?†–f_ÔŠŠ?†žóB» “@@@@@&@*?ð?ð?ð?ð?ð?ð>â €€?"{ˆŠx?Ì b?4öb@¨Ä†·Zsî@¦Ä(ýš28?"Z‹ ?(ij›/¨?@†Ö¿9õ?JÒswÅ`{@Ÿs÷E@b@ ‹¢MÒñª@ ‹¢MÒñª@ ‹¢MÒñª@ ‹š>/Í}@ ‹¢MÒñª@ ‹¦ËÖ•@ ‹¢MÒñª@ ‹˜wzÒ‘@ ‹¢MÒñª@ ‹³µÒŽ¢@ ‹¢MÒñª@ ‹·¿¸@ŸÜ™™™š@ŸÜ™™™š@ŸÜ™™™š@ŸÛÛIøL”@ŸÜ™™™š@ŸÜ5ãñ…@ŸÜ™™™š@ŸÜkãe@ŸÜ™™™š@ŸÜ –ð€Ã@ŸÜ™™™š@ŸÜSÑ Þ@2Y*0U2b@2Y&éxÔþ@.Çï²-@.¦Õ -Wç@- ƒn—@-–,7‰.4@-™b¶®~@-< -!°G?@-™b¶®~@-e…x âb@-™b¶®~@-~‚l¤e?çÞ–L I?‘óýÔ+B?“®(¬ 'õ?Žóä”r2?š•ñù#h…?¢uülP“ç?èŽìr¡-?’†jö¼»²?‘M¡¥?š6ͧzÞ÷?ýˆ‘aE?¤§º~Ó€?æ ýM¹<Ç?Œ°°½oª?ƒ”‡åÌ2?‡à[JÅé?‘‘w¹d4?Œ!‰ør;@@"@"@$@,@0?ð?ð?ð?ð?ð?ð?:%Ì&À¿š)Xæ`?i=ˆbCƒ?{1Þ‘¨Á@ ‹¨":0_@ŸÜ3¬"ÕÌ?v4uÏq™?ˆ¦ók¿³?Ô³´'xo?í<Þјóú@Ÿq僥´@c@ O?|í‘h@ O7§N÷š@ O?|í‘h@ OVbIKo@ O?|í‘h@ OF(Â%@ O?|í‘h@ ORÀ?@ O?|í‘h@ OEî*8@ O?|í‘h@ OAiñ@¢b¼í‘hs@¢b«èn˜ @¢b¼í‘hs@¢bi,SG@¢b¼í‘hs@¢b‚j[@¢b¼í‘hs@¢bã×9@¢b¼í‘hs@¢bŒK,Ó@¢b¼í‘hs@¢bžájrV@8·â‚@·€@8ã’?îµê@4{ Iº^@4aˆ -—Á@3²-V@3‚¾šÃÌH@2ÔmÅÖ8†@2Âûg3 9@2ÔmÅÖ8†@2ª Ô?yÊ@2ÔmÅÖ8†@2”vФž?‰døëŽìÃ?Ÿ ‰àü;O?—œy;4å?ò'ìûLä? Ëæ}ßw?©"j­ñª÷?±»àd„˜?¨“äÝýìÀ?”øŠIpì"?˜«¨ƒ'ùŠ?±,?³›çÈ0s?ÊXN;0q‹?ž?µO7Ø?—½}´²|?–gƒ»¹›’?™º‘ò‰È? ´ÁäÒ‹@@,@$@&@8@8?ð?ð?ð?ð?ð?ð?xirl€¿o§+«–?jetÏÂßð?td’¿@c@ OI®Ÿ§„@¢b“B_ÿä?‹X² -Â?…Ã{æz9Ó@Ç) H#¦?àä¥ÛG‚@Ÿk:è«xÚ@d@¢³ËC•@¢³Ë Iº@¢³ËC•@¢³³Mj@¢³ËC•@¢³®Ëûµ@¢³ËC•@¢³¿¤?åÊ@¢³ËC•@¢³¿¼@¢³ËC•@¢³¹ k¹Œ@¨®÷ÎÙ@¨®° Ä@¨®÷ÎÙ@¨­æ -¦L0@¨®÷ÎÙ@¨­ßU›=@¨®÷ÎÙ@¨­ïŸ¾w@¨®÷ÎÙ@¨­óMj@¨®÷ÎÙ@¨­ë…¸R@5›¹Œ~($@5šCþ\‘Ò@2”›¥ãSø@2ƒn—P@2;Ƨï²@2$!-w2@2œàu÷@1å*™0¾@2œàu÷@1ï¾vÈ´:@2œàu÷@1öOv_Ù?1·†Æjñ? 5)ZS?­Y)Þ=’?¡sâ½ë?£¬3¥ê©©?¡ÀX É ö?|öOÿÝ?¯!ÍMHß?¦¢´‰åR?©º1ø°`?²Õ™ý?«ÊµøÍC?‚á²Olºü?”~ªd•?’‡ïõ+üB?Ž‚1(w?›ÇûP|?¢áÄïÃõ@@@@@,@,?ð?ð?ð?ð?ð?ð¿m'“wÔ¿‚cGÑ?4‰éÛš‚?Yà…ý\Ù@¢³Æ± ž@¨®ÄÂjd?Mæ0œÁ`?p™9³cÍ?™#sýb?ЕXŒ¶êÆ@Ÿ_ZÎØNz@e@¥r&éxÔþ@¥pL1&é@¥r&éxÔþ@¥p]ŠÚ¹õ@¥r&éxÔþ@¥pdµÜÆ?@¥r&éxÔþ@¥p[=ÈK@¥r&éxÔþ@¥p>ùÛ"Ò@¥r&éxÔþ@¥pK’:)Ç@¡‹bMÒò@¡ˆRñ©ûç@¡‹bMÒò@¡ˆyXbN@¡‹bMÒò@¡ˆm(Œç@¡‹bMÒò@¡ˆs¶E¡Ë@¡‹bMÒò@¡ˆxï4Ö¡@¡‹bMÒò@¡ˆ£n.²@9}:’£@6%?|í‘h@50Ä›¥ãT@1{ÓÃa@@4‹"Ðå`B@0ˬq ²–@3Ê0U2a|@0Aä÷eý‹@3Ê0U2a|@0>žš@3Ê0U2a|@0;xFÜ^?óA[ØïF?ZÁ».œ?“ºo½Ô€?”½±·CåV? ÅÃsaS?›ô”G5v?•²»UbB2?’Òc§—Ûí?¢‘âÇZÓT?“Ôð,äÁ?£¾Lך7?ž…–½´Ö?ŒArUã@?“A ç’?Œ¢yëjk±?ŠÒ(>—œ ?Ä;Ãkr>?‹¼`’ i2@@@@@*@&?ð?ð?ð?ð?ð?ð¿ ¼œ…À?„´Œ@?j¦6d(R ?W³aÍ0@¥pNè>&q@¡ˆmïhãâ?‰ÙMæ«`†?uþ-nÚ@æÚRm½¶?Ö‡½W•œ±@Ÿi˜áq?ï@f@¯ÉèõÂ\@¯É÷KƧð@¯ÉèõÂ\@¯Éí¸ºÇ@¯ÉèõÂ\@¯Éèr° Å@¯ÉèõÂ\@¯ÉìcñA @¯ÉèõÂ\@¯Éç“Ý—õ@¯ÉèõÂ\@¯Éç“Ý—ö@ž…¸Qì@ž²-V@ž…¸Qì@ž…¸Qí@ž…¸Qì@žz’£R@ž…¸Qì@ž…¸Qì@ž…¸Qì@ž‡Ë)_@ž…¸Qì@žŒ~($ @8²ÃÉîËû@8¯ìVÕϪ@3žÙ‡+@3 N¤¨ÁT@3@å`A‰7@3Aaä÷eþ@2\ÚQÎ@2\¬1&ê@2\ÚQÎ@2\ÌÌÌÌÍ@2\ÚQÎ@2\64ê?îŠõ ?Žd±Ìº?”&$#ú/ò?’×­“·?“Œ4f(Rú?’IåŠú?•²»UbB2?“?xr¢I?“?T¾¹µ ?”±¤ëµu]?•nW*Ø„?‘êey°úà?»!°ÏŸÛº?Žrø·óæ?aäŽ -Ù?ˆš5|Gå?‹ì3åý?ˆk! ¨l@@@@@,@*?ð?ð?ð?ð?ð?ð¿iº]sy¿nóþdø?EQå¡Ç“N?`P™‘wö+@¯ÉëÑFñü@ž‘§É/R?`]—Œ¶³d?}Z:[ýÔ?³Á¡Á$–Î?ðÍÔq•”ÿ@Ÿn2MÒx<@g@¥eýó¶E¢@¥eþvÈ´9@¥eýó¶E¢Á.„€@¥eýó¶E¢Á.„€@¥eýó¶E¢Á.„€@¥eýó¶E¢Á.„€@¥eýó¶E¢Á.„€@¨%6E¡ÊÁ@¨%6E¡ÊÁ@¨%6E¡ÊÁÁ.„€@¨%6E¡ÊÁÁ.„€@¨%6E¡ÊÁÁ.„€@¨%6E¡ÊÁÁ.„€@¨%6E¡ÊÁÁ.„€@7¹Œ~($@7xÔýó¶@4}‘hr° Á.„M‰ûçm@3þV“uÁ.„QnÙ‡@3úÔ,<žíÁ.„NÜC,¥@3úÔ,<žíÁ.„NÜC,¥@3úÔ,<žíÁ.„NÜC,¥?3ßa=„@8#˜@8¾:@8 >+@8Iç@8Ù?3ßa=„@8Î÷@8i§@8Å@8S@8û—?…ÑTë0Ó@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøh@ªíV@ªíV@ªíV@ªíúCþ^@ªíV@ªð¸»@ªíV@ªì<žì¿@ªíV@ªê0U2a@ªíV@ªó¶E¡Ì@¢!ß;dZ@¢! Ä›¦@¢!ß;dZ@¢!V@¢!ß;dZ@¢!Œ²•éâ@¢!ß;dZ@¢!‘·Xá@¢!ß;dZ@¢!“÷ÎÙ@¢!ß;dZ@¢!…ðoiC@4[¹Œ~($@4[¥ãS÷Ï@2° Ä›¦@2-à @1§KƧïž@1§KƧïž@1:Ô,<ží@19Dg8~@1:Ô,<ží@1;~ÿ—%@1:Ô,<ží@1/Åo?|¬Çëý ?Žd±Ìº?—¿ÔÌÆ?ØTnçE?”?õ±oW?‘äÿ̉ߚ?|öOÿÝ?’“ºƒ;Nû?•ACžO?®>)ž!­?™x9ÿ¥l?‘êey°úà?‚‘´…=Ca?Ž>ž¬ˆ?‡9Â@0wç?’4i+Ëè?’ymícw\?屘Úã@@@@@(@ ?ð?ð?ð?ð?ð?ð?BC9…(¿T€C ?JWÜ,JB7?Qš+†±@ªíàÅøõ@¢!æ3¹?iÞ´hjOü?r¦l<ì?à)6ç°KP?èÙÃ×Þý:@Ÿe…õ•aÂ@i@ Sˆ1&éy@ S†¨•º @ Sˆ1&éy@ SŽÀ±tÁ@ Sˆ1&éy@ S‡ t @ Sˆ1&éy@ S‹{Þ+þ@ Sˆ1&éy@ S‹ã%j¡@ Sˆ1&éy@ SÑNÀì@­5n—Oß@­5n˜3lM@­5n—Oß@­5pÛc-@­5n—Oß@­5|ã½.@­5n—Oß@­5yCŸ¹@­5n—Oß@­5|š;c”@­5n—Oß@­57¨i£@3¥öý!ÿ.@3¤Z¬1@1×+ Iº@1Û”ƒ¤½4@1Ct¼j~ú@1F›!J”ð@1œàu÷@1¾‡N0@1œàu÷@1.ÓL½T@1œàu÷@1íí|cš?|¬Æ Væ?-ubÞô*?’X»Öb8?Œh«IÿRÙ?’o°ÉÏó½?’ë'QŒ?|¬Æ Væ?’S!Æ8Î?‘nG¢7?‘œø>ŽÿO?‘£€´Ë@?’S -ûÚ"j?‹t& -rº$?Žbæ«^åå?ƒ9Á„£f?…3Z#m_?‹oWâ´e?ŠTÐ(~@@$@(@&@8@6?ð?ð?ð?ð?ð?ð?X0±Èl?n}x¨2?%u í(8?"ê›[α@ S‰ÒW:³@­5vgì¯Î?Doj+FÊ?B õ[ÏŽ?•„N\ ¬?BÈ×?˜,@ŸfB˜¸s§@j@¯·!ÊÀƒ@¯·" Iº^@¯·!ÊÀƒ@¯·‰9?¶@¯·!ÊÀƒ@¯·8?mE@¯·!ÊÀƒ@¯·$\{B®@¯·!ÊÀƒ@¯¶÷z’% @¯·!ÊÀƒ@¯¶òD·Â@’Èj~ùÛ#@’Èq©ûçn@’Èj~ùÛ#@’ÈŠãò@’Èj~ùÛ#@’ÈbjvxF@’Èj~ùÛ#@’ÈÇ«Õl@’Èj~ùÛ#@’ÈÂçgG«@’Èj~ùÛ#@’ÈŒKk@4Ì]cˆe”@4Ñ}Œ"3@1ahr° Ä@1FÇSöP»@0Ͳ-V@0¹Ÿ÷T@0®_oÒ @0Qé,3®@0®_oÒ @0ƒÐ¹Ý@0®_oÒ @0…5"uµ\?€‘gQÚÃ?§ÛÂPîÙ½?—€¤6ÖS\?hÎѺ³?¥ª%/_ä[?¿FvÅS?~ì“?ÕÒJ?§3@$;?¦„‚Ÿ¢?¦ uºri¦?­Ú/\Ø?œ»Žšš?‚qnÌ鼿?äØ2ѧ7?„lþmUA?‡!ýe? =CQ»”Þ?™g`ž¾O±@@&@"@"@4@,?ð?ð?ð?ð?ð?ð¿uèw¬?sp’µ¼?rèòâ™7?jŸd¯†@¯·¦Dë@’ÈKõ>%?Œß‹s?®>?†ˆ|h[å@û¢ (U@æôVŠ’@Ÿb¹Îh@k@¬©ïŸ¾w@¬©ðbMÒó@¬©ïŸ¾w@¬©ïÅp@¬©ïŸ¾w@¬©ñN;Í6@¬©ïŸ¾w@¬©ñ‚©“ @¬©ïŸ¾w@¬©ïªÍž„@¬©ïŸ¾w@¬©ë¹Œ~'@¬Îœ(õÂ@¬Î›"Ðå`@¬Îœ(õÂ@¬Îó¶E¢@¬Îœ(õÂ@¬Îœžì¿±@¬Îœ(õÂ@¬Î Ä›¥ã@¬Îœ(õÂ@¬ÎžÅm\ü@¬Îœ(õÂ@¬Îžÿ—#@6VšÔ,<Ÿ@6X_ö”F@1û Iº^@1ú#9Àëî@1È“t¼j@1Èe”¯O@15µsê³h@14‡ü¹#£@15µsê³h@15Â\(ö@15µsê³h@15`A‰7L?|öOÿÝ?àIü'?’Z¡*CÂ?Œä%—ëš?‘úy«ôÊ%?‘_ Ýß?€‚ñêã ?“ÈÂ`?’˜l%F…Z?Níú¾?‘¦‘=W?× ³¸ÑZ?ƒÆ×q„nï?3I¶#i?„A'Š_^?ƒ¼9XNÄu?‡ã ËÄž?‡…¤$Ó@@@@@*@$?ð?ð?ð?ð?ð?ð¿@ŒÑOx?Mó£ò0?>öS­þ ?=”8M‹Ú<@¬©ïŽ«‰r@¬Î} y¹?_ð0¨5D?^j„7Ǫ?Èg˜¶@̨?Ä¡™’Ÿ@Ÿg>ÿœs@l@§?bMÒñª@§?_¾vȳ@§?bMÒñª@§?a-w1‘@§?bMÒñª@§?^ߤ?æ@§?bMÒñª@§?R×s@§?bMÒñª@§?]ŠÚ¹õ@§?bMÒñª@§?XºÇË@ ËY‡+@ ËY‡+@ ËY‡+@ ËWÁ½¥@ ËY‡+@ ËRñ©ûç@ ËY‡+@ ËYrGE9@ ËY‡+@ ËUÂ\)@ ËY‡+@ ËTzáG­@7 ØDЩ@7œô!-w@2ë¥ãS÷Ï@2éb¶®}@1ûƧï²@1øÎp:û~@1‘Þi­BÄ@1‹quŽ!–@1‘Þi­BÄ@1ŠçÕfÏB@1‘Þi­BÄ@1Žžš?¤ÊŽaÈ]Ó?”·'‚5â–?“%HCâ=s?’gh·T°? `F§C:?–À¬‡$?›’qvš°•?”n‹rÕ|?•0›ˆÄØû?øQñĨó?™=M÷‹¸?”µìSõüS?”l´~ðJ?ŽátÖÁ»‡?…àú^Á?†3_¾ˆ?K·‘d\?Žrø·óæ@@@@@,@(?ð?ð?ð?ð?ð?ð?%;†T€¿R(’?d.ÎÃůÌ?BÓϼ®@§?W bn@ ËWcPwÈ?|©D+3`å?] ±“?äyÞÃmq?®ZÝ5Z¼J@Ÿn/Tös,@m@¨ßÒñ©ûç@¨ßÓ3333@¨ßÒñ©ûç@¨ßÔ#Ý)@¨ßÒñ©ûç@¨ßÔ6ö/_@¨ßÒñ©ûç@¨ßÔ!~Šƒ@¨ßÒñ©ûç@¨ßщ7KÇ@¨ßÒñ©ûç@¨ßÒ(”é@šç¾vÈ´9@šç¾vÈ´9@šç¾vÈ´9@šç¼òÏ•Õ@šç¾vÈ´9@šç¿Ë’:)@šç¾vÈ´9@šçÀVPÒ2@šç¾vÈ´9@šç½É]›ÿ@šç¾vÈ´9@šç¾Ö¥t -@1[¹Œ~($@1[Ƨī®@0}‘hr° @0}ÅáØ@²@/†éxÔýô@/‡AbÚ|”@/úÇË)_@/ûFø.”@/úÇË)_@/û‰ Z[—@/úÇË)_@/û¿²øQ„?É^ýTïŽ?áq«yÈÊ?‘8R¡~Äx?‹Ôo«$Í ?þ!!.Æ?¼nh&Í?ÐbMÝn½?’½ò?«1©;ýà?5' *x?êê-4éB?bRu£PL?€bMÕ]f?Œ¾ŸY¤?‚ˆT.g?ƒv¡s{Ô?†¸_æ=DÃ?†¤2ËU@@*@,@(@4@2?ð?ð?ð?ð?ð?ð¿OQF–¿6ð*??w”½É(?3+ú‚£í@¨ßÒÇ#¤@šç¿ñó?N^k ¹Ä?B(t–Žž[?–=æ`…¡?|ÂË‹¶‚@Ÿs„•Fü@n@¤ƒ%`A‰7@¤‚Ö“u@¤ƒ%`A‰7@¤ƒ*W§†Â@¤ƒ%`A‰7@¤ƒ%¡ÊÀ‚@¤ƒ%`A‰7@¤ƒ$Z¬@¤ƒ%`A‰7@¤ƒ&µ (@¤ƒ%`A‰7@¤ƒ$?åÉ@¯IzáG®@¯Ie`A‰7@¯IzáG®@¯I{À6ã@¯IzáG®@¯Iz¬2@¯IzáG®@¯IxQë…@¯IzáG®@¯I}p£× -@¯IzáG®@¯I{²þÅm@7” xFÜ@7Iã¼Ô@2—+ Iº@2˜FÜ]c@2Ðå`A‰@2,<žìÀ@1\ÚQÎ@1^p:û~‘@1\ÚQÎ@1]ÈK]Í@1\ÚQÎ@1\]cˆe•?Ô[_ÇgÂ?‘ ·èe?‘=?ùKh?‹ËØ|*(?‘ŠR%¨(0?‘uu‡éÚÇ?°ý¢¾Ýb?—b…ªH=?€s8rÅ?-õI¸`K?‘¶|+üÎ~?Éöm/wˆ?=d­úå?ƒúʳ_Ä?†¤c·Ó—1?‡&üòI?ˆA0û)n@@@@@@?ð?ð?ð?ð?ð?ð?:½}h8?e"2ñ™€?]JvT£Ì?YB=åéH@¤ƒ$ïèmÚ@¯Iz}ü=x?kÅCï=˜ë?k^6YV?Ҭ˷g -?ÏoÆF¹>7@Ÿrç-’“b@o@¢à["Ðå`@¢à[çl‹E@¢à["Ðå`@¢àZŸ¾vÉ@¢à["Ðå`@¢àTÉ…ðo@¢à["Ðå`@¢àWéùr@¢à["Ðå`@¢àXQë…@¢à["Ðå`@¢àW1Å@­¡°£× -=@­¡°å`Aˆ@­¡°£× -=@­¡®±Ä2É@­¡°£× -=@­¡³Ý—ö,@­¡°£× -=@­¡²-V@­¡°£× -=@­¡¬<žìÀ@­¡°£× -=@­¡°-à @5Hè§æ@5!–R½<@2õãS÷ÎÙ@2ö?¼@2â-V@2äFs×Ü@2(è§æ›@2*dÂø7µ@2(è§æ›@2-w1Å@2(è§æ›@2+µsê´?|öOÿÝ?µ‡:úÎ ?” -Ÿ”îtI?‹ÑqÔ@vÿ?“¦Æ_ÌdA?“DŽèw–?1·†Æjñ?“$i «%h?’$ûJw"Ú?’GÎ>GÅ?•’nî …?‘yÃúCŠ?‚Ö˜>µDà?ŽOv_Ø­«?ˆïhƒEõ§?ƒ­=aÊw%?ŒC ãSG?‰w¿˜Í¶ª@@@@@*@&?ð?ð?ð?ð?ð?ð¿Q2ÀŸn¿4¬<¨`?+ìARG*T??íŽdY.V@¢àY’¡…(@­¡°WP]Š?Kèz[/?`¡“°ž?¡Ã—ö:P?ÆÀ[Kêl@Ÿff[ðâ˜@p@ªº&ffff@ªºLíÆ«!@ªº&ffff@ªº;ö„»@ªº&ffff@ªº3„fO@ªº&ffff@ªº0ÀÃåç@ªº&ffff@ªºxŒ½É@ªº&ffff@ªºV¥ø‡#@–ÃNÙ‡+@–ÃÌv N@–ÃNÙ‡+@–©E¥rÛ@–ÃNÙ‡+@–´{»€ò@–ÃNÙ‡+@–ÂWWO]<@–ÃNÙ‡+@–†û]ô@–ÃNÙ‡+@–š¦ƒ´@7+µsê´@7(¸ò @4«¥ãS÷Ï@4ŠZ΢PU@4†“t¼@4\"8Âlä@3ýcˆe”°@3ÒÈÒÙã@3ýcˆe”°@3ÈL|¾U@3ýcˆe”°@3Ù¸íÍ?¼þUÜÆ?œ¦ú—k'?©_ ¿ê4°?£ª˸ŸM?±ªaÔE=?¦8ò3@À?Æ¢¾üÒ?¢1ÞF#†ÿ?±ÜGŠ}¸?±W¸ýöL*?´¡À8J?¸z wv?ÎÄhÜ<žƒ?ÕdÞÄX?‘¾§ðc"?‰éê?"‚ÿ?”4N³e6Ú?™Sák€@@$@,@*@9@:?ð?ð?ð?ð?ð?ð?…°½­U¿-OCo ?‡&:¡?–Óe˜ Í%@ªºFÔ…Ð@–Â)Þ â?ž¤2¿ùðÎ?¬Frûm@§ì4h«Â@â<Ö•§ú@Ÿo((°(ø@q@ ‰ÍÒñ©ü@ ‰ÎV“@ ‰ÍÒñ©ü@ ‰Ï;À®Ø@ ‰ÍÒñ©ü@ ‰ÐÜI%…@ ‰ÍÒñ©ü@ ‰Ñ¿^Wv@ ‰ÍÒñ©ü@ ‰ÐoeêØ@ ‰ÍÒñ©ü@ ‰Ï^‰Oô@¤‹Æ§ïž@¤‹ÇN @¤‹Æ§ïž@¤‰ßõ]©@¤‹Æ§ïž@¤‰v¹Â¼@¤‹Æ§ïž@¤ˆ]·k<@¤‹Æ§ïž@¤‰G§²ï@¤‹Æ§ïž@¤ˆ‘2ˆ¿@3IÎ_oÒ@3IîËû¶@/…`A‰7K@/ƒ¿ø¨ó©@/ÊÀƒn@.þ¸Që…@.…oi@.€²XmúÍ@.…oi@.€e«yZ3@.…oi@.€yãë"?|¬h2:“?ÔˆN³ -U?‘NUŸ˜–?‹îJ×ûú?‘ƒê­ñ?Ö³L_™v?|¬Æ Væ?’ŽcLä±?ùc1ut?W%æ29?‘8¬è_ u?þ¦9™#?‚nÓ3î‰?Œµ»Ò]?‚ƒ„b%£u?‚ò¸ÞÚu^?†²!”,ª8?†´%ü:Ã@@(@*@$@8@6?ð?ð?ð?ð?ð?ð?>¢TõÀ¿G“b*Œ?7J]÷92‹?*‘}&S“@ ‰Ï•G.A@¤Š¢Ñ¡?W)†mû?Jê­_ç!?½$h7\ç”?¢fÕ° -@ô@ŸfÎa®±u@r@¬V„“t¼@¬V†$Ý/@¬V„“t¼@¬V—ö+l@¬V„“t¼@¬VªÚ¹õY@¬V„“t¼@¬VÓ àÞÓ@¬V„“t¼@¬VÝÈK_@¬V„“t¼@¬VÄM:“@¨uâMÒñª@¨uâMÒñª@¨uâMÒñª@¨uÿb¶®}@¨uâMÒñª@¨v -ôðØE@¨uâMÒñª@¨vóMj@¨uâMÒñª@¨v(´9X@¨uâMÒñª@¨v:)Çz@5²ÃÉîËû@5²¶®}Vm@1ã÷ÎÙ‡@1Ò¼£n@1PA‰7KÇ@17eýŠÚº@1 -0U2a|@0ã9Àëíú@1 -0U2a|@0â×sü@1 -0U2a|@0ãÉîËû?|¬Çëý ?ŸB¦Áe‡?©ÖÌC³1?¹§—~ÃL?½ë;V?²¹DrÜþ¸?€‚ñêã ?ŸNÀH?®SiÙ܃ú?©%™¬ÅW?¾ -ÁHQÏj?°ˆÑªC¬#?‹?ü}(´2?\{ÏïŽ?‹f°ùr[ƒ?“äÐå÷à?“ )D)?§^ÐÜ_žr@@@@@,@&?ð?ð?ð?ð?ð?ð?f†pÀ?‰ùó=1?pÝÝ ÊK¨?e´OäýAÍ@¬V“yÛ@¨uìñ«?~Í!¿|_?u?@†0ù?êňR\?àD‚–c¼Ú@Ÿ\e_Íþ@s@žÿZ¬1@žÿ_¾vÈ´@žÿZ¬1@žÿTÉ…ðp@žÿZ¬1@žÿz–¼@žÿZ¬1@žÿžƒä%°@žÿZ¬1@žÿ<žý[ï@žÿZ¬1@žÿCa@N@«ª¨õÂ\@«ª®¹)æ\@«ª¨õÂ\@«ªªJŒM@«ª¨õÂ\@«ªíúCþ^@«ª¨õÂ\@«ªâ¶®}V@«ª¨õÂ\@«ª°›+ñê@«ª¨õÂ\@«ª©îËû@8Ç>«6z@8Æ•e.Í@4+ Iº@4êJŒL@397KƧð@3&»˜Çâ‚@3QÞi­BÄ@33t¼j~ú@3QÞi­BÄ@3BT=¹¦à@3QÞi­BÄ@3>±Ä2ÊX?•w«ogŸl?­gžóÉ?¦¶÷w¿û?°8 ÆYÍ?›šØõ×Ü¡?¢ÀÂêVAg?µ(ÖÐl_‚?§,•4,ô`?½Çýë/?¸èÛ”ýY?™T=ö®ÝU?¤2R2'Ö•?³{ÐQ×y?ª=Xçý?¡©LÒü¬?ª¢×¿l?˜d7õ—?²¥WÁÞú¬@@@@@3@&?ð?ð?ð?ð?ð?ð¿k¤oK*€¿jœ¯BÐ?j/-Ñ:ð?z˜‚°;A@žÿK¯^pB@«ª²¶+Ô?}[ÍŠÑL?:T²?ú_Z%ES?ïêýËz@Ÿp2«Ú@t@ ³õ?|í‘Á.„€@ ³õ?|í‘@ ´!|4bé@ ³õ?|í‘@ ³þ¼‹Î@ ³õ?|í‘@ ³ý îû¬@ ³õ?|í‘@ ³ÑËÓøE@ ³õ?|í‘@ ³Ú^0AJ@¡rr-VÁ.„€@¡rr-V@¡r~ûX P@¡rr-V@¡r^€ÿ#S@¡rr-V@¡re m@¡rr-V@¡rFx @¡rr-V@¡r8‘ôSM@8è†YJôñÁ.„>¤µÜÆ@4^Ù‡+@45@¶ã³ƒ@3»Æ§ï²@3ŠBÕ´në@2ó&Á½¥@2Ö [­ú@2ó&Á½¥@2ÈšÔ«ª@2ó&Á½¥@2ÊÕé 7û@8J¨?š /¹|?‘y2ÈãÁž?‘ÌÑîšóÉ?©Vï2ª¥?¤|Û·t¼@8J¨?’\pe³ -? 7ê OW?•!ZÁó“ ?°möC¤?¬¬Ñ½­4@8p÷?£ÉleÏž$?¥”§puÏ?„¢GyÜt¡?›Ëm\•è‘? 4ÃîŸ@@@@4@3?ð?ð?ð?ð?ðøøøøøøøøøøøøu@¨TOß;d@¨TˆõÂ\@¨TOß;d@¨TÅÖ8†@¨TOß;d@¨TŽV“@¨TOß;d@¨TÒñ©ü@¨TOß;d@¨T‹'»0@¨TOß;d@¨T‰“ àß@¤úß;dZ@¤úäÝ/ @¤úß;dZ@¤úß¼@¤úß;dZ@¤úßU›=@¤úß;dZ@¤úßb¶®}@¤úß;dZ@¤úßåÉ@¤úß;dZ@¤úܹ#¢œ@7}:’£@7z)Çy¦µ@0J^5?|î@0J6âëC@.N—Oß;@.NŠqÞi­@,Vð¸»@,V®}Vlö@,Vð¸»@,Usê³g¡@,Vð¸»@,UY³Ð|…?1·†Æjñ?êÚÏ$?‘ÌË>¯f?‹¦ ŸYÔ?’š'†­`í?‘PÊÑ<Ýl?‚á²Olºü?’7Îf¬ps?~ËQ§?0ÜN :s?’£ôùÎ8ï?Éöm/wN ?ƒ ?ÿ½?†©b/bJö?†Óß -tõ@@@@@(@$?ð?ð?ð?ð?ð?ð?@¢_{¿YÝ;r?Cͳ;h%?0“ŽCÜC…@¨TŠ’§\Î@¤úák•P?cªBçš)?PÏ×"Ì?B?ÒHax´2Ð?¦îïNÜñ+@ŸgðjE’ù@v@¥4öÈ´9X@¥5ì‹C•@¥4öÈ´9X@¥5y=Ù@¥4öÈ´9X@¥4ï²-@¥4öÈ´9X@¥5‰ 'R@¥4öÈ´9X@¥5¯O „@¥4öÈ´9X@¥5 -#9Àë@¦Ä Òñ©ü@¦ÃE`A‰8@¦Ä Òñ©ü@¦Ä1[W>«@¦Ä Òñ©ü@¦Ä8Që…@¦Ä Òñ©ü@¦Ä*W§†Â@¦Ä Òñ©ü@¦ÃöÈ´9X@¦Ä Òñ©ü@¦Äu%F @7Ç>«6z@7–E¡ÊÀƒ@3\Iº^5?@3PHðŽ@2gKƧïž@26lô!.@1æYJôðØ@1ù^žš@1æYJôðØ@2[À6ã@1æYJôðØ@2tSŽóN?î5uê[EÙ?¤5‚O}Ó?¨bY¶®å?¤C: -?® ÍÓâš?¢©LÚTk?è9›ïŸ“?U -£?00?Ÿ}M ¾ñ?§7&Öcè?³‡Täþ¦Ï?¯ áñ M?Ö°\“Wôg?©(p@òvù?±A\ÿŸ#?¡ÖÖk³R?¨4¨æž?ª\»Oå :@@@@@,@*?ð?ð?ð?ð?ð?ð¿jg-C€¿’ ¨ @?qy´Ò×?†ÏÔb‹ðº@¥5+*þŠ@¦Äc¼[»?Ï…¤ã—%?—ešª?Ï%ZŒ"Y†?íÌ -RRC@ŸrÄ;X¿@w@¦mŠÀƒoÁ.„€@¦mŠÀƒo@¦bÌ¥zxl@¦mŠÀƒoÁ.„€@¦mŠÀƒo@¦iþùÛ"Ò@¦mŠÀƒoÁ.„€@¦mŠÀƒo@¦ihÛ‹@šOY‡+Á.„€@šOY‡+@šR° Ä›§@šOY‡+Á.„€@šOY‡+@šG\(õÂŽ@šOY‡+Á.„€@šOY‡+@šI-(Œç@8ãg ù lÁ.„>¤µÜÆ@4Ô›¥ãSø@1™Çy¦µ -@3¶§ï²-Á.„QnÙ‡@3°–»˜Çã@11ë…¸R@3°–»˜ÇãÁ.„NÜC,¥@3°–»˜Çã@1 ¾ß¤@@8J¨?ÄÛ.¯qÊ@8¾:?Áu86@8Iç?ÐUŠ¢’zW@8J¨?¼ž‰´7*@8i§?´Ù¹£—N›@8S?Ô|pU½w@8p÷?”܉a^±‚@8p÷?‹µ¼a@8 Ø?ªé¦ªC¨@@@*?ð?ð?ðøøøøøøøøøøøøx@©Â"Ðå`@©Â^5?~@©Â"Ðå`@©Â¸Që…@©Â"Ðå`@©ÂÇâ‚A@©Â"Ðå`@©Âýó¶E@©Â"Ðå`@©Âe+ÓÃ@©Â"Ðå`@©ÂE¡ÊÁ@¬";dZ@¬"áG®@¬";dZ@¬"ÈK^@¬";dZ@¬"×Ûôˆ@¬";dZ@¬"ÊW§‡@¬";dZ@¬"Z¬ @¬";dZ@¬"$ x@8(†YJôñ@8,¹#¢œx@3ý‘hr° @3õŽ!–R½@3¾V“u@3´Ö¡aä÷@3n_oÒ @3g_oÒó@3n_oÒ @3iÔ•*™@3n_oÒ @3kW>«6z?¥K¶{Oÿ?àIü'?›Ì~” #?–àa¦vfVŠ?“ŸºõÒ‡©?’Oûh´6c?°4\ɵ@@@@@*@*?ð?ð?ð?ð?ð?ð¿)›§ïp¿p·ÿ,?Qp€ŒÍm‚?I»¸g}'÷@©Âke A@¬"Ʋ~b?i¿øÝõ¨­?oÆ[XhŠË?¹yš?¾ÉÖ×÷°@Ÿk^„Œ>Î@y@Ÿ­F§ï²@Ÿ­'l‹C–@Ÿ­F§ï²Á.„€@Ÿ­F§ï²Á.„€@Ÿ­F§ï²Á.„€@Ÿ­F§ï²Á.„€@Ÿ­F§ï²Á.„€@Ÿã -=p£×@Ÿã 7Kƨ@Ÿã -=p£×Á.„€@Ÿã -=p£×Á.„€@Ÿã -=p£×Á.„€@Ÿã -=p£×Á.„€@Ÿã -=p£×Á.„€@7›¹Œ~($@7lµÜÆ?@3=‘hr° Á.„M‰ûçm@2y7KƧðÁ.„QnÙ‡@1ÙŒ~($ Á.„NÜC,¥@1ÙŒ~($ Á.„NÜC,¥@1ÙŒ~($ Á.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøz@ ü¸Ôýó¶@ ü¹‡+@ ü¸Ôýó¶@ üºZP”ê@ ü¸Ôýó¶@ üºÐÔõ@ ü¸Ôýó¶@ üº[–(Ì@ ü¸Ôýó¶@ ü·Ó¹«Ü@ ü¸Ôýó¶@ ü·ñë¤@¤`A‰7L@¤`A‰7L@¤`A‰7L@¤_;ÌH@¤`A‰7L@¤^Kmî+@¤`A‰7L@¤^5½*â@¤`A‰7L@¤ate‹@¤`A‰7L@¤_¯2­ø@2Î쿱[X@2Ï(½LWØ@/{"Ðå`A@/x -à @.&éxÔþ@.¨agš@-³üPH@-°ØÏ˰@-³üPH@-°f},GT@-³üPH@-°ÕàÓú?É^ž6õP?¾¡¦£–?‘(u‹¹HØ?‹½ö’˜©?‘7p‰?³U@Zþ?ÐbMÝn½?’Îü¥ó ?‡š?-õF|îè?ò wÿ!H?Jê©Ùãu?€—7݉‡?ŒµœÛ»~r?‚„UAÕ|?‚èLV#7?†ªÀÜ?†ØÄ|°ˆ@@@ @"@4@(?ð?ð?ð?ð?ð?ð¿R,1µ(?Gf1»?9¦‰ÜñƆ?JéXg9é,@ ü¸ãh°^@¤_§}5?H³X¦^ø·?YˆTþºÕ?ß³š ´?¬‡±3w‰@Ÿs‰ é‚@{@§`Rn—P@§`BÐå`C@§`Rn—P@§`$tS@§`Rn—P@§_þ5?|ï@§`Rn—P@§`W>«6@§`Rn—P@§`p£× ->@§`Rn—P@§`1&éxÕ@¦KéxÔýô@¦KÒn—P@¦KéxÔýô@¦KÛšu@¦KéxÔýô@¦K£× -=@¦KéxÔýô@¦L“t½@¦KéxÔýô@¦Kãä%®æ@¦KéxÔýô@¦Lˆe”®@9 Î_oÒ@9IQ‚©@4®5?|í‘@4° Ä›¦@4¢-V@4ÅãS÷ÎÙ@3µµsê³h@3¨1&éxÕ@3µµsê³h@38bMÒò@3µµsê³h@31N;Í5¨?óA[ØïF?¥d`ÿwªÁ?·ÖËÂ~?º ÞÑ·?Ê«[‰â?Õã$q¬ à?º,eª ™?•wi¢‚*?¤å ù%£a?§ãcé(&ò?Ó’âºÚ ?Ó¾x´ÁF?ɦÇvY¸?¥k2ïm?’÷ ¬n±?’Oûh´6c@@@@@*@(?ð?ð?ð?ð?ð?ð¿o!u‡Ñ¿—a{K½À?c8ž¤¯9?tÿr€ïÞ@¯Ç.zY@¤˜e†þ>??}/§KÄÒ?”2*váb?Þ"Ó±ª@m‰UæwÓ@Ÿk™9×@¼@}@Ÿ¢1&éyÁ.„€@Ÿ¢1&éy@Ÿ¢×G @Ÿ¢1&éy@Ÿ¢8992@Ÿ¢1&éy@Ÿ¢E"yÙ@Ÿ¢1&éy@Ÿ¢\S@Ÿ¢1&éy@Ÿ£å{@¤|¢Ðå`BÁ.„€@¤|¢Ðå`B@¤|ZêlH@¤|¢Ðå`B@¤|¦t±ò@¤|¢Ðå`B@¤|‹°eñÒ@¤|¢Ðå`B@¤|‘2•Ç@¤|¢Ðå`B@¤‚¸Ï&b@9p4mÅÖ8Á.„>¤µÜÆ@3Ê^5?|í@3´vƆë&@2´“t¼j@2¦$6þ¶@2ÚQÎ@1þö”Fs‚@2ÚQÎ@2ã¡ ò@2ÚQÎ@3)¾xê@8J¨?cÞ~¬Vî?£Tªÿó¨?œv«S }?¢âQ×Wb(?°î6ÀäÌ@8J¨?“•>u N—?¨Õ Ýu}?§þØÕª¿Q?¡h["ÒÎÝ?«WìuFY@8p÷?Œ÷8Ï)sü?•¬[†ƒ?ÖYÉdz?Œ9ûÃO­ì?šSLé´ˆ½@"@*@$@8@1?ð?ð?ð?ð?ðøøøøøøøøøøøø~@©4¼j~ú@©]p£× @©4¼j~ú@©— -=p¤@©4¼j~ú@©¬L˜_@©4¼j~ú@©GE8ï6@©4¼j~úÁ.„€@©4¼j~úÁ.„€@ üËC•@ ý 1&é@ üËC•@ üû=ÈK@ üËC•@ üÈ´9X@ üËC•@ ü£S÷ÎÙ@ üËC•Á.„€@ üËC•Á.„€@8Žì¿±[X@8%$Ý/@5ë¥ãS÷Ï@5ÚCþ\‘Ñ@5’Ðå`A‰@5-w1Å@50–»˜Çã@5F§ï²-@50–»˜ÇãÁ.„NÜC,¥@50–»˜ÇãÁ.„NÜC,¥?¸å…þW&l?” ©›’?È„ 2 Ë?°X}vÕé@8Iç@8Ù?ÀÊ»d9\?¾¤¸ß¤ -B?À­ŸÇ¿?¾ÀI å @8S@8û—?èóºWßu€?­#Çò¯½?³fgÁ˜?¼å…¯Öé©@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøø@«[…¡ÊÀƒ@«[o\(õÃ@«[…¡ÊÀƒÁ.„€@«[…¡ÊÀƒÁ.„€@«[…¡ÊÀƒÁ.„€@«[…¡ÊÀƒÁ.„€@«[…¡ÊÀƒÁ.„€@ª1º^5?}@ª1·ÎÙ†@ª1º^5?}Á.„€@ª1º^5?}Á.„€@ª1º^5?}Á.„€@ª1º^5?}Á.„€@ª1º^5?}Á.„€@92ÃÉîËû@92ÞÑ·@5° Ä›¦Á.„M‰ûçm@4K"Ðå`BÁ.„QnÙ‡@3𖻘ÇãÁ.„NÜC,¥@3𖻘ÇãÁ.„NÜC,¥@3𖻘ÇãÁ.„NÜC,¥?­g;+³ût@8#˜@8¾:@8 >+@8Iç@8Ù?3ßa=„@8Î÷@8i§@8Å@8S@8û—?²yMa‘€@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø€@¬Ç?|í‘h@¬Çc× -=r@¬Ç?|í‘h@¬ÇL~($ -@¬Ç?|í‘h@¬ÇB\(ö@¬Ç?|í‘h@¬ÇQÅ@¬Ç?|í‘h@¬Ç<àuöü@¬Ç?|í‘hÁ.„€@¤Í÷KƧð@¤Î Iº^@¤Í÷KƧð@¤Î›¥ãT@¤Í÷KƧð@¤Î¯·é@¤Í÷KƧð@¤Î Iº^5@¤Í÷KƧð@¤ÎÁTɇ@¤Í÷KƧðÁ.„€@9zqÞi­C@9SFÜ]cˆ@4uãS÷ÎÙ@4lÌÌÌÌÌ@3ƒt¼j~ú@3~Ov_Ø®@3&YJôðØ@3ÕfÏAò@3&YJôðØ@3~ÿ—%@3&YJôðØÁ.„NÜC,¥?‘â%ì˜ ä?žK›æ¶'B?˜ëàÕÁc0?ŒôƒA˜c ?•RC}Ëq@8Ù?3ßa=„? (úSú±5?—ˆ”„òõ¤?‘²)ò@a,?•¯ÃþƒR@8û—?ÅÔ-~QvG?‘­b š=?‰6~„æAÕ?‹µ¼a?·♊N@8 Ø@@@@@&?ð?ð?ð?ð?ðøøøøøøøøøøøø@§ö¤b^@§öLχ @§ö+@8Iç@8Ù?®k|j“ʨ@8Î÷@8i§@8Å@8S@8û—?¡7‡V/Žr@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøƒ@ª?]²-V@ª?]ó¶E£@ª?]²-V@ª?[J#9Á@ª?]²-V@ª?]Vlô@ª?]²-V@ª?a£n.²@ª?]²-V@ª?cñA ]@ª?]²-V@ª?`Ä›¥ã@¥8Ôýó¶@¥8Ôýó¶@¥8Ôýó¶@¥8Që…@¥8Ôýó¶@¥:^5?}@¥8Ôýó¶@¥=ÌcñA@¥8Ôýó¶@¥:áG®@¥8Ôýó¶@¥8 -à@5úqÞi­C@5û‹¬q ²@3Yº^5?}@3]cˆe”¯@34“t¼j@3;jçÕfÏ@2‚@·€5@2Ç1Å‚@2‚@·€5@2Åzxl"h@2‚@·€5@2ÆšÔ,< ?|öOÿÝ?Qdöÿô¼?™¬þ.OÀ…?{¾“úy6?“K–ºé…/?–"ûe”M?€‚ñêã ?’ùÎ {?˜€OìØ¯i?•è­¸‡?‘êë·áþA?™›,4rÕ9?‚Ì ÝŽ‚8?šÑ~¿²Ô?ˆÌ7^|Â?Ž«]O8èº?ŒXk-¯‚7?“6‰møŸã@@@@@$@(?ð?ð?ð?ð?ð?ð?Q„WÂ?=£ßa?8`È“„±?A™]ëÓ@ª?`=€ò@¥9üB…¦?Wøö¿z?`©ÎçÝá¶?¸^s@Æqu?ô_Øvü@ŸeµÑŽ5ó@„@Ÿµ-V@Ÿµ0£× -=@Ÿµ-V@Ÿ¶ Ä^©@Ÿµ-V@Ÿ¶'nA¯@Ÿµ-V@Ÿ¶íšž@Ÿµ-V@Ÿ¶¨E÷A†@Ÿµ-V@Ÿ¶;J#9Â@¨AzáG®@¨AE¡ÊÂ@¨AzáG®@¨A;ô‡üº@¨AzáG®@¨ARõLA@¨AzáG®@¨A†aŽÄP@¨AzáG®@¨A9D8 @¨AzáG®@¨A:)Çy§@2–šÔ,<Ÿ@2”›¥ãSø@.½²-V@.èÿ׫Ž@.dZ¬@-º0×ZÄ…@,ܾߤ@@,m‘ámH@,ܾߤ@@,k*µ …@,ܾߤ@@,m¸ºÇÌ?É^¨¯Âj?’mëc^½Í?‘Ÿ«®m+?Ž‘dÞEã?b~e -/?¸Ó¨Qt¦®?ÐbQë„›¦?“R³‹ ·2?»¼yL,{?ïªj?BÑ?£Zc÷Lc? |uO¦'?€üç«»(?ŒöRèa -A?‚xÌLâƒþ?„cI`àTv?‡VÆ“(pü?‰/ã̽`ª@@$@"@"@4@(?ð?ð?ð?ð?ð?ð?( õ¿¢ºÙ2`@?ŽÁ¾Vwq?ŠJ~½U¶@Ÿ¶–W(¯æ@¨Al}Ãô³?“æ­Z& -‡?—‚_ä@B[\ž@g‹à,ùý@Ÿo:RiØ@…@¬-.záH@¬-.záH@¬-.záH@¬-/Åo@¬-.záH@¬-.;Í5§@¬-.záH@¬-.ŠqÞi@¬-.záH@¬-,Ùè>B@¬-.záH@¬--quŽ@ JÀƒo@ JÀƒo@ JÀƒo@ IQ‚©“@ JÀƒo@ J™0¾@ JÀƒo@ IDg8@ JÀƒo@ K Iº@ JÀƒo@ JJŒM@3T xFÜ@3T2ÊW§‡@0\Iº^5@@0\64ê@/¥¡ÊÀƒ@/¤¨ÁTɆ@.åÉä@.Š Þ@.åÉä@.¾vÈ´:@.åÉä@.åÉä?ð°–Ž]?%¼ÇÆÃ±?‘7[ä­?Œݶ\ñr?‘ §‡g¾?æöæ×t?ð°–Ž]?’CòO…? Dñ£P?e”[|ú(?üÓqÔNŠ?wN —z_?ð*wjs—?Œ¸†‡ÄÅ?‚˜YªüÏF?ƒ ?ÿ½?†’Õaì+’?†špk Y?ð@@@@,@*?ð?ð?ð?ð?ð?ð¿F©6Û¸??÷d>R?2±6*×&?::õ–¨g-@¬--‘Á¼v@ J$÷?AÎÄ ÞÍ{?Hu¬ÑVçž?~'ö0È6ƒ?‰òŒªE1 @Ÿs[ PM@†@¡‡+ @¡=á\@¡‡+ @¡Ä“„Û@¡‡+ @¡ yÔ‘@¡‡+ @¡ É¿§Î@¡‡+ @¡ 7N8‰@¡‡+ @¡Æ žä@¢bfffff@¢bFFK=Õ@¢bfffff@¢bn¹’â@¢bfffff@¢bw±ÃÁÑ@¢bfffff@¢bn—s‡@¢bfffff@¢bo¦Ö²¡@¢bfffff@¢bs3*¦/@8ÞHè§ç@8ߌâ´ý@4¦‡+ J@4ž”¨³õf@3©Û"Ðå`@3¦¨Çže@3Eœàu÷@3@Z8Ü@3Eœàu÷@390µN@3Eœàu÷@3C‘ã*?µ…7YuÍì?“nËšž@õ?˜ÎçUÛ³õ?‹ËÃù‹áã?‘ÉIõß?˜µHœÛ‚ð?¢EénÐ)v?“ãg(±[Q?›8à>¨Ü?-õIS¦?’p"ñ.?H, -kc?«¥ ÷Qж?”¼Ð!«›?š+®þÆÃ?‚ìgÒ¤Ç?‘‘^à Îr?”5„Žõå¾@@"@"@ @.@.?ð?ð?ð?ð?ð?ð?3ø_?z·É+€?^[f–ás+?joéÈ'~9@¡ [a‚‚@¢bl©®ù™?l‘wÁ@lb?{5 F?Ð~^éÓ>?û-“®,) -@ŸpŸ”`²á@‡@ŸÌ$Ý/@ŸÌƒÎW- @ŸÌ$Ý/@ŸÌ—ZnŽÆ@ŸÌ$Ý/@ŸÌ†„‘WQ@ŸÌ$Ý/@ŸÌ„ˆµ|@ŸÌ$Ý/@ŸÌ„WY ƒ@ŸÌ$Ý/@ŸÌ„kGih@®9‡®zá@®9ŠŒLš@®9‡®zá@®9„¬û¡Ø@®9‡®zá@®9‰£&u@®9‡®zá@®9ˆÎp:ý@®9‡®zá@®9v½Ó,@®9‡®zá@®9{ÕGKr@67â‚@·€@661ø .@1T›¥ãSø@1Riù«@0Ú~ùÛ"Ñ@0Ú›íµQr@0^«6z‘@0]®|Yô@0^«6z‘@0Zº„e…Ô@0^«6z‘@0Y¬yp.f?ñ3<' ?^-' -˜p?‘Jv­–³‘?ŒpüCza¹?‘sÞ¼‰Mß?‘QÁÝÿ^ ?|çµB &€?’M6G-\ü?„œµ'µ•??gÌ$Î%?‘†Å)·÷¢?öâXõ?‚pëí’ŸÏ?Œá‹J8Ž?ƒâ1u•‚?ƒ®Ú À?‡}­b38/?‡*ïêÙ%@@"@ @$@4@6?ð?ð?ð?ð?ð?ð?Twg ¿k¨÷p>Ø6Fq )?Um£ë™=@ŸÌ„š·@®9ƒF?¬ú>÷Ý?)ðŠÖ?v&¬aq¢>ùµèÒP¤µÜÆ@4sS÷ÎÙÁ.„M‰ûçm@3b-VÁ.„QnÙ‡@2𖻘ÇãÁ.„NÜC,¥@2𖻘ÇãÁ.„NÜC,¥@2𖻘ÇãÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø‹@ªä'ï²-@ªä'j@@ªä'ï²-@ªä7”D2Œ@ªä'ï²-@ªä3féÂc@ªä'ï²-@ªä7ù/Ú@ªä'ï²-@ªä2³Â=E@ªä'ï²-@ªä4‰•CÜ@–‡+ @– @`E@–‡+ @–ìs½.Š@–‡+ @–Í™bÄ@–‡+ @–÷¼û¬@–‡+ @–ý Ü5Ü@–‡+ @–úy5@6^Hè§æ@6]YŸ€Ìr@2õãS÷ÎÙ@2ê - ñŸ@1†“t¼@1÷H±{m@1«6z‘@1uÙ’@1«6z‘@1ÎID¡!@1«6z‘@1L7ÌÂÞ?~Ov_Ø­«?–@HÔMÁ?’…­¦Z È?‘ibª?‘· ¿§U¶?‘ó;›Xd?ñ3<' ?•Nnçu“>?’Á³iI?‘NsC)f"?‘³;°5L?’î %žO)?‘kOvó ?ŒòLΰ‚ë?ƒ4 K ?ƒhŠaý6?‡Ÿò-|£Q?‡®_€Û&@@*@*@,@8@9?ð?ð?ð?ð?ð?ð?jf½"Ø¿ccC J?Rs5¹ìÝ?H÷Ä6@ªä.çŸ`/@–{®?réf–~?h+=ß“–?ð–y‡ˆ?×/r=2æ®@Ÿg\¹hËM@Œ@¥¼9XbN@¥¼1ë…¸@¥¼9XbN@¥¼=Ùb·@¥¼9XbN@¥¼8y=Ù@¥¼9XbN@¥¼:’£S@¥¼9XbN@¥¼5sê³h@¥¼9XbN@¥¼2T`ªe@¬ï}p£× -@¬ï}²-V@¬ï}p£× -@¬ï|¬1'@¬ï}p£× -@¬ï}ÌcñA@¬ï}p£× -@¬ï‚ÃÉîÌ@¬ï}p£× -@¬ï~ƒä%¯@¬ï}p£× -@¬ï~ߤ?å@7í¥œàv@7è§æšÔ@3Œí‘hr°@3ŽBZîc@3Wï²-@3YÔ•*™@2hè§æ›@2k Iº^@2hè§æ›@2t•*™1@2hè§æ›@2rø7´¢4?”¼íÒh??“gU·q#?’´ýBI{?=]. ?™NÆÁÝãÔ?›Ê—Am¡?„F/·ÿP5?” Á lŸž?”Bœ<\ v?˜Õ¼2®?™Çk}Xã??O:bõ@?ž6Øìhâ?’"0÷ú?0ÜN :s?…<ò N ?Žrø·óæ?’£ÂÛ‚@@@@@,@*?ð?ð?ð?ð?ð?ð?A=üÒ?>šÜL?ZuÌe_?A¡€W¦ö@¥¼6^Ø@¬ïÚ‘±?u|xG{"?cCóÓ‘˜?á Šçò](?º¹<<™@ŸiOûîrï@@¯bMÒñª@¯_|í‘h@¯bMÒñª@¯gE8ï4@¯bMÒñª@¯mjN@¯bMÒñª@¯kP°ò|@¯bMÒñª@¯a½¥@¯bMÒñª@¯cˆe”°@ª¤° Ä›¦@ª¤®záH@ª¤° Ä›¦@ª¤¯'»/ì@ª¤° Ä›¦@ª¤©Q‚©“@ª¤° Ä›¦@ª¤¬<žì¿@ª¤° Ä›¦@ª¤®æ1ø¡@ª¤° Ä›¦@ª¤¬"h Õ@72ÃÉîËû@76+jçÕg@3E?|í‘h@3DohÛ@3å`A‰7@3ØDЩ@20–»˜Çã@2..±Ä2Ê@20–»˜Çã@20:û~‘@20–»˜Çã@2/Š Þ?|öOÿÝ?‘ ·èe?‘K]Ã4?€l ×Û?‘|†³„¸?’€ú¤ˆ4 ?|¬Çëý ?“£PuòN?üÓqÔN‰?’ž²¢# Y?‘žˆ2}?’EÈ€›º? H6¤„?Ž*JŠË?„„OW°ó?„ìsMQ(Œ?æšÔ,<ž?Š—à `ž@@@@@(@*?ð?ð?ð?ð?ð?ð?Sââÿ¿,´šG@?SÎ'øeÄm?2wn5 œÏ@¯b¤÷‰Ñ@ª¤­—›0?s²C¯yÕÀ?R¡¥áðö:?òÕß•­ ?°Tñ©RcB@ŸfW‡š@Ž@¦-V@¦,1&é@¦-V@¦-:’£@¦-V@¦ÜÆ?@¦-V@¦*çÕfÏ@¦-V@¦,Iº^5@¦-V@¦/iDg8@©ÎåãS÷Ï@©Îè1&éy@©ÎåãS÷Ï@©ÎâÐå`B@©ÎåãS÷Ï@©ÎÑÄ2ÊX@©ÎåãS÷Ï@©ÎÏAò×@©ÎåãS÷Ï@©ÎÈõÂ]@©ÎåãS÷Ï@©ÎÍ:’£@6µS&Á¾@6­w1Å@3ør° Äœ@3ôã¼ÓZ…@3ìj~ùÛ#@3ã×Ûôˆ@3n_oÒ @3gškP°ó@3n_oÒ @3iè>BZî@3n_oÒ @3cÃa@O?ˆÿÀ)T¿Æ?—µ”öŒqÒ?‘\H{gX ?™zbž61?›À‰¥xsÎ?—uæË}üI?|öOÿÝ?”ºu(†¼¦?˜û9]t`?—Š¢ -Ç—ê?¤¸µ†ê©ö?”Æ*%>g?’-BR1Ä?‘ÛÖæÒk~?ŠÌ÷7Õ}?=2Væð?’:™/ʼn?–{=rƒ™K@@@@@*@"?ð?ð?ð?ð?ð?ð?;Â]?˜¿yàWÉ?8Y‡ÝÌ—?SlTy( {@¦,¥í¡˜@©ÎÚ²zd?X´ž$!(™?sçFG¼øs?©ÃóBëé?çˆu™Œ@ŸfAù¤ëZ@@¡Ð¶È´9X@¡Ð· -=p¤@¡Ð¶È´9X@¡Ð·ö+jè@¡Ð¶È´9X@¡Ð¸†YJõ@¡Ð¶È´9X@¡Ð»çl‹D@¡Ð¶È´9X@¡Ð¸ºÇË@¡Ð¶È´9X@¡Ð¸Çâ‚A@žÐå`A‰@žÐå`A‰@žÐå`A‰@žÏ\(õÃ@žÐå`A‰@žÎ!–R¾@žÐå`A‰@žÇ_oÒ @žÐå`A‰@žÏ'»/ì@žÐå`A‰@žÏªÍž…@2%öý!ÿ.@2&1ø .@-3t¼j~ù@-2ˆÎp:û@,wOß;d@,u¨Xy=Ú@,=Vlô"@,7ö+jçÖ@,=Vlô"@,8ºÇË*@,=Vlô"@,8âe+Ô?É^³Dw'?Ï[äevÈ´9@9cg ù lÁ.„>¤µÜÆ@3° Ä›¦Á.„M‰ûçm@3Ðå`A‰Á.„QnÙ‡@2½cˆe”°Á.„NÜC,¥@2½cˆe”°Á.„NÜC,¥@2½cˆe”°@2‚ZîcŠ@8J¨@8#˜@8¾:@8 >+@8Iç?»G!rÌŸY@8J¨@8Î÷@8i§@8Å@8S?ÂÉ(/æ°œ@8p÷@8 * @8p÷@8¶@8 Ø?«v³Û‹7@$?ðøøøøøøøøøøøø‘@®Z›¥ãSøÁ.„€@®Z›¥ãSø@®Z  qw@®Z›¥ãSø@®ZŠÚ¹ô@®Z›¥ãSø@®ZŠÚ¹õ@®Z›¥ãSø@®Z›~ÿ—@®Z›¥ãSø@®Z›J#9Á@¨øÔýó¶Á.„€@¨øÔýó¶@¨e+Ô@¨øÔýó¶@¨üPHñ@¨øÔýó¶@¨ûçl‹D@¨øÔýó¶@¨uöý"@¨øÔýó¶@¨ü‘ÑN<@9šÔ,<ŸÁ.„>¤µÜÆ@2f‡+ J@2bÐå`A‰@0çKƧïž@0äýó¶E¢@/ÑÑN;Í6@/Î_oÒ @/ÑÑN;Í6@/Î;Í5¨Y@/ÑÑN;Í6@/Τ¨ÁTÊ@8J¨?’&Á¯»?‘yß]³Õø?Œ‚èõЊ?‘¿ÐÅu?Êëüâi{@8J¨?“Öæ…0Âû?»Þ‹"è?‘²)ò@a,?‘ØèOÍ ì?Éöm/w<@8p÷?c I??‚á²Olºý?ƒ†+ Å?†¼Š˜L¥÷?†£îž«î@@@@&@*?ð?ð?ð?ð?ðøøøøøøøøøøøø’@¤°ò-V@¤°ð£× -=@¤°ò-V@¤±RT`ª@¤°ò-V@¤°¥o@¤°ò-V@¤±(õÂ\@¤°ò-VÁ.„€@¤°ò-VÁ.„€@ 3NV“@ 3A‰7KÇ@ 3NV“@ 2u›=È@ 3NV“@ 1»À6ã@ 3NV“@ 2–ð¹@ 3NV“Á.„€@ 3NV“Á.„€@8 ]cˆe”@8–»™@5›¥ãSø@4•ÜÆ?@5~ùÛ"Ñ@4S¢œwšk@4\ÚQÎ@4 ]cˆe•@4\ÚQÎÁ.„NÜC,¥@4\ÚQÎÁ.„NÜC,¥?ð°–Ž]?±ˆLŸ0?±G¤®t Š?ÅN.!b@8Iç@8Ù?ð°–Ž]?•¤-'Ä,?½™°ÅC=?«{ÿÀT@8S@8û—?ð*wjs—?¼I²çÝ·?Æ~WCû #?À8á|7@8 Ø@8 Ø?ð@@@?ð?ð?ð?ðøøøøøøøøøøøø“@¤x›¥ãSø@¤xšáG®@¤x›¥ãSø@¤x¢MÒñª@¤x›¥ãSø@¤x¡£n.²@¤x›¥ãSø@¤x¤Âø7µ@¤x›¥ãSø@¤x§RT`ª@¤x›¥ãSø@¤x£þ\‘Ñ@¡¦ž¸Që…@¡¦£S÷ÎÙ@¡¦ž¸Që…@¡¦hÛŒ@¡¦ž¸Që…@¡¦£{J#;@¡¦ž¸Që…@¡¦šu%F@¡¦ž¸Që…@¡¦‘ÑN;Í@¡¦ž¸Që…@¡¦ŠÚ¹õ@8 Î_oÒ@8 xÔýó·@4…?|í‘h@4† -¦L/ƒ@3ù7KƧð@3ûquŽ!–@3ÜÚQÎ@3Ýà qv@3ÜÚQÎ@3âñ©ûçm@3ÜÚQÎ@3èÇâ‚@¸?‡YÍ_?‘¡çL¤?œÇY#W]?{¾“úy6? (E•¦ðç?¡o’ü:Â?ˆÿÀ)T¿Æ?“—-´œc?š_x¾¶2?š¿Tiî©ó? {QBãï?¡ùŠÀs›?ˆT“Ÿÿ?˜ÔÞÑ—æJ?§r20¡î/?’èïÅ42ô?šz"+;‚á?²ó6õ··@@@@@*@,?ð?ð?ð?ð?ð?ð?g «Û@¿f›Y¦?H€ú+4Ö?Teoî-/Î@¤x¡Hb¥@¡¦u@Æ…?eú·ª,á?s¬r®=À?ÅÇËL kg?×Äá¼@ŸeàHl°%@”@¡#”ýó¶F@¡#‹§¹Y@¡#”ýó¶F@¡#ƒë2ší@¡#”ýó¶F@¡#Bã¹ZÌ@¡#”ýó¶F@¡#)ºßZ@¡#”ýó¶F@¡#Xgr @¡#”ýó¶F@¡#LÄ]-@¦¬cS÷ÎÙ@¦¬_çq@¦¬cS÷ÎÙ@¦¬råÙÅ@¦¬cS÷ÎÙ@¦¬lEnü,@¦¬cS÷ÎÙ@¦¬mtƒ „@¦¬cS÷ÎÙ@¦¬3ˆLÙ@¦¬cS÷ÎÙ@¦¬'=©ª/@7zqÞi­C@7jh’ÄŹ@4«¥ãS÷Ï@4£ñ±á\â@4§KƧïž@4„FPÀžô@4«6z‘@4¬êU³@4«6z‘@4â®Á@4«6z‘@4¯Cŧ?£¬è3Û?”mg´þ{ß?û™˜4ô?›€²:€ÓG?¡ø€±ç—?“0¾;W;À?‡ D¥…ô?“h éãbê?¢ìâ?xÂP?–ê=ëNBé?¢ÜÈz=ˆ?Ö|‡(™?©A6PP 4?ÃͶÿÙ?«¶’$Ec?¨¨ž,»¹Œ?¤0WÀ}Á ?¡Ô`P@@@@@0@&?ð?ð?ð?ð?ð?ð¿{Ó£*ö¿…N0—¼€?†ÉAk¯’?tÏÿ¤½^@¡#Q/®L+@¦¬CÏïà˜?£8ƒ£7t?˜‰Y‡g×_@,ÞÍp~‹@(ž»Qc¦æ@Ÿn/[É‚t@•@§‘¸Që…@§‘¸Që…@§‘¸Që…@§‘¸Që…@§‘¸Që…@§‘¸ºÇË@§‘¸Që…@§‘¶È´9X@§‘¸Që…@§‘³&Á¿@§‘¸Që…@§‘³t¼j@¨‘È´9X@¨‘ÉxÔýô@¨‘È´9X@¨‘ÈõÂ\@¨‘È´9X@¨‘Ék¹Œ@¨‘È´9X@¨‘Æfffg@¨‘È´9X@¨‘ÌÌÌÌÍ@¨‘È´9X@¨‘Ïv_Ø®@1ãg ù l@1âÞÑ·@-R-V@-MúCþ\‘@-÷Oß;d@-ñø -á@,­úCþ\’@,¢ÞÑ·@,­úCþ\’@,—ö+jç@,­úCþ\’@,Ùb¶¯?É^žQ5P‚?¾¢`ƒ?‘jh¨qã9?Žëâÿ1¥?“K–ºé…/?˜£µ³ÿ)?Ðb—Œ©þÒ?’ aÒ¹zï?’TÖ©E?’ äÅ?™ïIÄè?˜p®0=-#?‚:)Çy¦µ?ŒÂ§dß±?ƒ{¬ÉW?Šˆ€!B®?‡ã ËÄž?ŽÜÂÎÛÖa@@@@@(@&?ð?ð?ð?ð?ð?ð¿\4®Ø?p#ŸT§?CG~ä‹0?Ca5((2@§‘´Û›rí@¨‘ÊkzÐ?Q‹xm‚A¨?RÛÀh#õ?•V€j ì?‘Äñ _Ï/@ŸqìÀýÿ¸@–@¢­‘hr°@¢­V@¢­‘hr°@¢°£× -=@¢­‘hr°@¢´`ªdÃ@¢­‘hr°@¢³ àÞÓ@¢­‘hr°@¢±Þi­C@¢­‘hr°@¢²ˆÎp;@©cþvÈ´9@©cþ¸Që…@©cþvÈ´9@©d×Ûô‰@©cþvÈ´9@©d°‰ '@©cþvÈ´9@©dn—@©cþvÈ´9@©dA‰7L@©cþvÈ´9@©d¶®}V@5IÎ_oÒ@5IÛ"Ðå`@1#÷ÎÙ‡@1 ·€4mÆ@0¢-V@0žËûµt@/­úCþ\’@/¦¸ºÇ@/­úCþ\’@/ @/­úCþ\’@/¢&€IS?}Ñ¿ž,?ß‹’bÏ?‘,fŸCô6?‹¬àÌ’Ç?“2{Áw¸?”|„¥&?1·†Æjñ?’,ö´´Ï#?‘kþE<%?Níú¾?”¤¦ð¹e?˜6@(/ÇÝ?‚2Y0â³?ŒÛÏ·+?‚Ÿ JŠÆ?ƒ^ ›¨¬a?‡L8õASÎ?‹¼`’ i2@@@@@*@*?ð?ð?ð?ð?ð?ð?V§üò?JäôšX?;›áÖå?:Ÿ„RLÌ­@¢°  ’@©d -?Z,É:J»™?Yhúñ ±?Àv×—Mó?¹Kgbt@ŸeÜ•¦€z@—@¥…¸QìÁ.„€@¥…¸Qì@¥¿ál-@¥…¸Qì@¥ˆªœO@¥…¸Qì@¥† ?É©@¥…¸Qì@¥¶ŒÓÖ@¥…¸Qì@¥®@RBM@–Oß;dZÁ.„€@–Oß;dZ@–µdi@–Oß;dZ@–‘h¡Ä8@–Oß;dZ@–x¥¹U@–Oß;dZ@–tYÿ-@–Oß;dZ@–k–Ü@5Ç>«6zÁ.„>¤µÜÆ@/€A‰7KÆ@/@†6õñ@-è1&éxÕ@-¬j½L]@+á-w1Å@+»v¢Ôˆ@+á-w1Å@+½M‘a»í@+á-w1Å@+¾†å+àé@8J¨?°óˆi[ÈË?“% -sÜ?ÝV&sÀ?°mwHË+?®‡Hžˆyì@8J¨?±dJî™ÑH?—q ­,êª?‘y­ïp£?§ÿTþV”(? ³w ¹x@8p÷?“¤¤‡'M?‚ŸP -ÈgN?ƒJjë?‰½Ü*ˆl?Šõ.V‘¥@*@$@@;@8?ð?ð?ð?ð?ðøøøøøøøøøøøø˜@¤l‹C•@¤lÌÌÌÍ@¤l‹C•@¤jÚ¹õZ@¤l‹C•@¤gÈK]Ì@¤l‹C•@¤cˆe”¯@¤l‹C•@¤eÒ©?@¤l‹C•@¤^=/¬@œúµ?|í‘@œúµÂ\)@œúµ?|í‘@œú¨§æ›@œúµ?|í‘@œú©Çy¦µ@œúµ?|í‘@œúÛ"Ðå_@œúµ?|í‘@œú‚Ah@œúµ?|í‘@œú˜]`UH@4£g ù l@4Ÿ#äi´¯@2Yº^5?}@2Uöý!ÿ.@1ù7KƧð@1óÉîËû@1£ÉîËû@1©#¢œw›@1£ÉîËû@1 ›€#p¬@1£ÉîËû@1^gÆ’?ƒ_ÿKt˜à?¾‰máÚ?—U’¹DÆü?”7lyÎ\?‘üTºFEQ?”€ÿ' e?|Ñb×¶@?’uß¿çÒ?£BÕx™„?š¿Tiî©ó?’ò@°Ø0ñ?–àÙÐÖ¾?ƒR¨éŠÛ™?ÉGãA­ø?›û…†_?’»•e¨ò?‰YfÓ¶ -Ô?Фz{‚@@@@@.@.?ð?ð?ð?ð?ð?ð¿ewjHS¿n1F?AtA‰EH?i„¡À>Áw@¤g ,5¼@œú§G-ö_?a=_ŒÌg?Š7ÈRúºÎ?ÄxuqÀ·…@è«Ú«@Ÿf˜p]@™@­ª™™™™š@­ª¥¸Qí@­ª™™™™š@­ªžÒˆÎo@­ª™™™™š@­ª›Í5¨X@­ª™™™™š@­ª˜“t¼j@­ª™™™™š@­ªŸŠ Þ@­ª™™™™š@­ªžÅm\û@Ÿñ Oß;d@ŸòX“t¼j@Ÿñ Oß;d@Ÿñ›¥ãT@Ÿñ Oß;d@Ÿñòä@Ÿñ Oß;d@ŸñÅm@Ÿñ Oß;d@Ÿðó×Ûö@Ÿñ Oß;d@ŸñêJŒ@8ÞHè§ç@8ŸhÛ‹¬@4» Iº^@4»À6âë@497KƧð@4;Ƨï²@3Åœàu÷@3Å›=ÈL@3Åœàu÷@3ÈõÂ\)@3Åœàu÷@3ÈÇâ‚@¸?£G± *Ç‚?˜ß!Á}Pé?›tZ'Ð?–.¨ÿ[?–(Ži´™^?Ÿ@*Få?çµÚNö®?“Ëÿ.¬Hp? Ü]^ß¿?“¶Ì¶Öj”?—÷Ë5D«ç?›7Î&Tß+?æoâh56â?“~tÒZE?›˜tgië?‹µ¼a?¾Á{þÆ%?– ¼µ(0Q@@@@@*@(?ð?ð?ð?ð?ð?ð¿?ß¡¨¿p˜zò?`_üO©\»?qv\-Âù2@­ªoÁ'!@Ÿñüóüš?xnªîy­?€ TÕål¹?س…dŸs?çi D£@Ÿr¡£Á² @š@¦×c× -=q@¦×c6"@V@¦×c× -=q@¦×MeÓÒO@¦×c× -=q@¦×\IH™‰@¦×c× -=q@¦×Vý8Ü@¦×c× -=q@¦×HtïLß@¦×c× -=q@¦×N[àñÍ@“Ð$Ý/@“Ðt~k~@“Ð$Ý/@“Ðflàâö@“Ð$Ý/@“ÐOÈØ@“Ð$Ý/@“ÐkÚ^”@“Ð$Ý/@“Ðn¼Ð ¹@“Ð$Ý/@“Ðk?Ú¯ü@8è†YJôñ@8¹ä²t W@4!hr° Ä@4*¼¶e@3)Û"Ðå`@3*WE?;@2ÔmÅÖ8†@2Þù¼±âº@2ÔmÅÖ8†@2Ò -‚@2ÔmÅÖ8†@2׆n5æ?™I'%ö«?áÊ7ƒÀ?‘<ü³î?/ J3?™¤Fº_ØW?”<°1 ”v?Ž\Õl6Ò?’J®?|™e°?1ìqúH:?•@€I?^d?“¶|3Çî?”ªñw43?’ûŽ<‚y?ŽƒPVÍðý?•rð„"Æ–?—æ×N?•eÀl@@"@"@@5@4?ð?ð?ð?ð?ð?ð¿sc®Ì¿M÷„QX?X‚ñœÜ´;?< ¾,lPÈ@¦×U;héÿ@“Ðn–¥?rã¶u õ?ZܳCàiÐ?Üý`€C?±ÐÕÉ8ª@ŸlEÂtž@›@«™ŒIº^5@«™Œ1&é@«™ŒIº^5@«™:’£@«™ŒIº^5@«™Œ<žìÀ@«™ŒIº^5@«™ŒVÕÏ«@«™ŒIº^5@«™‹àÞÒ‰@«™ŒIº^5@«™‹]Ìcñ@8'ï²-@8'ï²-@8'ï²-@8&€IQ@8'ï²-@8%ýŠÚº@8'ï²-@8%zxl"@8'ï²-@8$Âø7µ@8'ï²-@8$%®æ2@1úqÞi­C@1ú~ùÛ"Ñ@0=‘hr° @0=²-V@//ß;dZ@/0‰ 'RT@.p‰ 'RU@.p Ä›¥ä@.p‰ 'RU@.p–»˜Çã@.p‰ 'RU@.p£× -=q?É^¨¯Âj?ï1ïºÅ?‘\H{gX ?Œ ßõIyû?‘#6‰¥_?×°ë*–w?ÐbMÝn½?’&u÷E»@?»Þ‹"è?UÕh;·Å?‘<¸ö}½?¦QÎð\ã?€bœÅÏÑ+?2ô]7?‚‘´…=Cb?ƒ!Ë *(?‡ã ËÄž?†ùadô|@@@@@,@*?ð?ð?ð?ð?ð?ð¿:…Hÿè¿3ø+:? Ó6ÊÁ>ìú¹áê`Õ@«™‹èln;@8$Þ¤z!?ؾ¡>ûpÖäÜ)?1™=–VÃä>ð£êA@ŸsQ @œ@­K²° Äœ@­K³‡ W@­K²° Äœ@­Kµ «´½@­K²° Äœ@­K´²ÛDî@­K²° Äœ@­K±Ø·ªó@­K²° Äœ@­K±ÛÌïÄ@­K²° Äœ@­K³^°É@š[§ï²-@š[¥`A‰6@š[§ï²-@š[¥¿M»/@š[§ï²-@š[¥’Sª@š[§ï²-@š[¥+ÓÃb@š[§ï²-@š[¨ÌÊ@š[§ï²-@š[ª³y‰¢@6åöý!ÿ.@6æ½Ì­dJ@2áhr° Ä@2ãC(a³Ï@2Wï²-@2X˵aõg@1zÔ,<ží@1|TÉ©@1zÔ,<ží@1|Û¹›L@1zÔ,<ží@1|çHµ?a÷nñ?DàÓôæ?‘ûø›a¤?ŒÃå%9bg?‘VQòhFa?‘/k™`î¯?…nDyB Ã?’ß‹óšû?ú:d&‰?Ù:Qˆ²?‘M³Ñsy?ÆyÉ[üš?…9Ž2j¸Ó?Žžÿå¡ ?…D¤W—4L?„Ò²æƒúÉ?†ìÌ´¼N?‡ÂÇ÷Û%@@&@*@,@5@5?ð?ð?ð?ð?ð?ð¿-ÃX‰@?<÷fQp?-ý’ýÓA¦?)°çKZã@­K²ÊûfC@š[§òâú?Nƒ”¾Ç?Ió»i8ý?¤eeÅ=Ã?™æ1ü´ô@ŸhñL²öÿ@@§éûçl‹@§ÙXbN@§éûçl‹@§p|„µÞ@§éûçl‹@§²GE8ï@§éûçl‹@§ÙXbN@§éûçl‹@§Àëíú@§éûçl‹@§q4êJ@§ ]/Ÿ¾@§ Z¬1@§ ]/Ÿ¾@§ H$ x@§ ]/Ÿ¾@§ s àÞÓ@§ ]/Ÿ¾@§ ^\‘ÑN@§ ]/Ÿ¾@§ mžƒä&@§ ]/Ÿ¾@§ …+ÓÃ`@7£g ù l@7ž}Vlô@45ãS÷ÎÙ@41 [À7@3gKƧïž@3!aä÷eþ@2Ì¿±[W?@2~záG®@2Ì¿±[W?@2nŠqÞi­@2Ì¿±[W?@2ЦL/ƒ|?гá‡}?¾ó'@¡Ÿ/?½¿º&Õ/Ì?Âå*‰ã6?¼íÓ¯ì?´yzž|wù?}Ñ¿ž,?°ŒbU'V…?Áìu^]?³‹Ù6ˆ‘—?´j‹G ²?¶ª„!–4?™Ý2÷‚Ë?¤(µ”4è?±ÉÊB\ÞT?´ŠØÉf±{@–MJÀƒo@–M?§¦j†@–MJÀƒo@–MMÆÀ£@–MJÀƒo@–MR«ó4@–MJÀƒo@–MV/ +@–MJÀƒo@–MRÈæŸû@8įO „M@8­.maù»@3GÎÙ‡+@3:Ov`@2Ú~ùÛ"Ñ@2Ì: -ÖmÐ@1ÿò䎊r@1õ«T E@1ÿò䎊r@1ùlõƒ%@1ÿò䎊r@1ú™ÄMµ?¹}ïJÎh~9ZÁ? ¯ã4?„¯ö¼æú?ŒjÉ:‰‰?ŽKwš~u=@@$@*@$@<@;?ð?ð?ð?ð?ð?ð?Nã7ñ°?^²àiÉ?P{™²mÿ?PmÒ垸ê@¥¹$ä ¬@–MQÛ瀛?`˜â 3u?hºÓ2E?°—âÆèbp?Ã= 3µh,@Ÿp5R¿¤h@Ÿ@¬Ú…¸Qì@¬Ú„“t»@¬Ú…¸Qì@¬Ú†ÏAò@¬Ú…¸Qì@¬Úƒ¼ÓZ†@¬Ú…¸Qì@¬Ú†Â&€ž@¬Ú…¸Qì@¬Ú~š@¬Ú…¸Qì@¬Ú€ù kº@¤n½ó¶E¢@¤nº¬1@¤n½ó¶E¢@¤nÂëC-@¤n½ó¶E¢@¤n¼Æ?@¤n½ó¶E¢@¤n¹Œ~($@¤n½ó¶E¢@¤n¼¹#¢œ@¤n½ó¶E¢@¤n»Í5¨X@7p4mÅÖ8@7pË)^ž@3û Iº^@3ûÍ5¨Xy@3Ct¼j~ú@3D÷eýŠÛ@2µµsê³h@2·€4mÅÖ@2µµsê³h@2µ›=ÈL@2µµsê³h@2¶µ '¼?Œs¤DÅÐ?ÖÈ ¼?”^RžpX?Ô@R’?”z|œèç™?“¾§²~Î?œä%—ëš?’áÄïÃõ?”ïZºœ·?‘’â·ýÅ?”‚ÍÊL¾l?’¨¢†¼ ¼?ŒArUã@?‘¼Åâ<{?Šó¿á§E?…âC£½¾Ý?¢—„¯l?Œx[‡:©@@@@@,@(?ð?ð?ð?ð?ð?ð¿J;¹P?BB¨Žä?O}E t?=2æ5Ué@¬Ú‚¾¢N@¤nºàm°?o çÔv?V²°PrJ?جfÞ7?£"p·ZwA@Ÿm32ZQ;@ @¬çl‹C–@¬ç+ K@¬çl‹C–@¬çï².@¬çl‹C–@¬éDg8@¬çl‹C–@¬è Ô•@¬çl‹C–@¬æffff@¬çl‹C–@¬æÂ&€@­B¶È´9X@­B¶‡+ @­B¶È´9X@­B·§†Â'@­B¶È´9X@­B·$tS@­B¶È´9X@­Bµ$Ý@­B¶È´9X@­B·1Å@­B¶È´9X@­B¶»˜Çä@3í¥œàv@3í¸ºÇË@0#÷ÎÙ‡@0#¶E¡ÊÀ@/´ýó¶E¢@/´¼¤@/b¶®~@/üPHð@/b¶®~@/ k¹Œ€@/b¶®~@/Ôýó¶F?|öOÿÝ??ÖCã ?‘Š©Nà¶?‹û…†_?‘Dj?ø·-/ge?|öOÿÝ?’)£µ“[µDá?ƒ*|š\/´?†Ü‘ °Ô?†–f_ÔŠŠ@@@@@,@,?ð?ð?ð?ð?ð?ð¿ |Ó³?¡|?%½»•&–?$c§)ië‡@¬ç#Hr?@­B¶‡\§¦?EžœuAn?DÉ7Z‹B?™!¾%tc?–=DX`¾@ŸfòšÅõ3@¡@¤Wð Ä›¦@¤Wå¡ÊÀƒ@¤Wð Ä›¦@¤WðHð@¤Wð Ä›¦@¤WðU2a|@¤Wð Ä›¦@¤Wñø .@¤Wð Ä›¦@¤Wñhr°!@¤Wð Ä›¦@¤Wï\(õÃ@¬ö× -=p¤@¬öÛ¥ãSù@¬ö× -=p¤@¬öÙÛ"Ðå@¬ö× -=p¤@¬ö×1Å@¬ö× -=p¤@¬öÝ¥œá@¬ö× -=p¤@¬öÚÔ,<Ÿ@¬ö× -=p¤@¬öÙ‡+@8›¹Œ~($@8™Q‚©“ @28r° Äœ@25ÜÆ?@1U`A‰7L@1P–»˜Çâ@0fYJôðØ@0a$Ý/@0fYJôðØ@0a [À6@0fYJôðØ@0a·Xâ?©W»¥ÿ$B?‡åƒêM?’à©GMõ?ºgk\0?”‰Wïÿ·?‘f]£àG?€‚ñêã ?•¤-'Ä,?”ÿŒÙÿIí?–= £6Ï?—÷Ë5D«ç?›ªU3Îp?±¯Ì:¦å%?u/®Xã?ƒíÈm½!¿?„Ö©Ú0?†Óß -tõ?Š|)-}í(@@@@@,@$?ð?ð?ð?ð?ð?ð?7[€Eп7mø… ?Vÿ縆]?5ÈgD´@¤Wðd†P6@¬öÚ¦þö??l=I ºË6?]®5ä«è?Î+e‡ ™^?´øÖ r@ŸoÅÌÀ=‰@¢@­(õÂ\@­(õÂ\@­(õÂ\@­)Ô•,@­(õÂ\@­*qÞi­@­(õÂ\@­)*0U2@­(õÂ\@­'_oÒ@­(õÂ\@­($ x@£+ò-V@£+ò-V@£+ò-V@£+ò-V@£+ò-V@£+ò{²þÅ@£+ò-V@£+ðØDÐ@£+ò-V@£+ñ‚©“ @£+ò-V@£+ñ©ûçn@3ÖšÔ,<Ÿ@3ÖšÔ,< @1›¥ãSø@1Ö¡aä÷@06§ï²-@06‡+ J@.æL/ƒ{K@.åzxl"g@.æL/ƒ{K@.åÖ8†YK@.æL/ƒ{K@.åÖ8†YJ?|¬Çëý ?Kb½™×?‘t‘ócjë?‹×lÇ…N9?‘ä~|+?æöæ×t?|¬Çëý ?’Q_Ú¸FN?»Þ‹"è?@§[*^?‘ ^Íü?ÿ?sxÙ/T?‚Ÿ JŠÅ?Œáò¯ž¼ù?‚† SFò?‚þ——³§ø?†£îž«î?†µ°jÆÃ@@@@@*@*?ð?ð?ð?ð?ð?ð¿*fˆS ¿&€ÔÐ?#}É9À2®?0®ü¯¦6@­(“Ñ‹ò@£+ñ½BùÙ?C]Ý·ù??¹8ê!ß?”`Ë>;/¬?Š/HWóŸ@Ÿfâ%tùµ@£@¢ª)xÔýô@¢ª-V@¢ª)xÔýô@¢ªáG®@¢ª)xÔýô@¢ª®zâ@¢ª)xÔýô@¢©öE¡ÊÁ@¢ª)xÔýô@¢ª¯·é@¢ª)xÔýô@¢©àÄ›¥ã@¨»Â Iº^@¨»ÁG®{@¨»Â Iº^@¨»z^5?~@¨»Â Iº^@¨»<¾ß¤@¨»Â Iº^@¨»$Ý/@¨»Â Iº^@¨».Ëûµ@¨»Â Iº^@¨»HË’:@6„¯O „M@6†ö”Fs‚@4k¥ãS÷Ï@4?Ó™~$“?„W Ä™\?ð,’Ú|‚?ÃAöź®?™ Êû®‡@@@?ð@0@(?ð?ð?ð?ð?ð?ð¿’ßÕœë@¿v‘=»?]ÚºÌj?4­-¸"4m@ –þ¤îÒ@§äFUz´‡?sã¨vO?K·.œÕ,?á)B“Ðaú?”•AŒbyö@Ÿ^^¯Ÿ8@¥@©®=ó¶E¢@©®<¬1'@©®=ó¶E¢@©®BZîc @©®=ó¶E¢@©®>žš@©®=ó¶E¢@©®<ÚQ@©®=ó¶E¢@©®A°‰ '@©®=ó¶E¢@©®Enÿ@ªIdZ¬@ªIfffff@ªIdZ¬@ªIbu%F @ªIdZ¬@ªI^¸Që…@ªIdZ¬@ªIe”¯O@ªIdZ¬@ªIa [À@ªIdZ¬@ªI`hÛ‹¬@5eöý!ÿ.@5bÞÑ·@2€ Ä›¥ã@2Ÿ¾vÈ@2¾V“u@2ÀHðŽ@2B‚@·€5@2H“t¼j@2B‚@·€5@2Cn—P@2B‚@·€5@2@[À6ä?žˆ2}?‘j`cq?•Ìüb¢? Ìç,Z?•bJÖµæÿ?—>æV¡¶$?‚á²Olºü?“oÆ †ä?‘}7ˆ.Ñ?‘.}áµ$?”‚ÍÊL¾l?™^ªÍ€@!?˜¸DU#L†?Ž.]L ¼?•ýÿLîO?ŒísOÅ>?qÂ' -Bœ?ŒXk-¯‚7@@@@@,@*?ð?ð?ð?ð?ð?ð?RºSf`¿R‘Vì?FÏp7?7r®{ý3Ú@©®>¢ù@ªId@ܼ?e¹Ïnµh–?V¬ç*»>W?ÑS6¤?°@³pM(Í@Ÿfœ:èp@¦@ ˜Iº^5?@ ˜Nøf~6@ ˜Iº^5?@ ˜JV|P@ ˜Iº^5?@ ˜JgD]2@ ˜Iº^5?@ ˜JÊ£È%@ ˜Iº^5?@ ˜HVà -@ ˜Iº^5?@ ˜H‹}¨²@¤I@@¤I8³>þZ@¤I@@¤I;Äg–Û@¤I@@¤I=¯÷¥@¤I@@¤I?²qÍ@¤I@@¤I?^i¶e@¤I@@¤I>íž3Ê@4úqÞi­C@4óÃoÔ¢N@1+ Iº@1”ê4@04“t¼j@03F´§É&@0&YJôðØ@0%ȓ쿊@0&YJôðØ@0&º=žHk@0&YJôðØ@0&¸Që…?‘ɱb)Q?ÎÝ;D?‘lȼÛê?ŒJˆ_÷?‘±ãTÈ?»;G 1œ?™I'%ö«?’bâƒR˜?‹%¥¿f[?L½o2ã?‘—t« ð?lÈCYÞ?¥As Ý$?ŒÑ׫}F•?‚Ð׳SÎ\?ƒŒhïú„?†Ì’=Æý?†¶¢œ¸’*@@ @ @*@8@2?ð?ð?ð?ð?ð?ð¿VÇ&‹$?Q)DYN?.pâ€PÇn?Fp 2j@ ˜Jh#ÎP@¤I>/A8R?IÛú­(‰Å?aU^%Áïd?”*/Ñs¼?¼ì±þñÞ@ŸmÏ»k@§@¬5¯²-@¬5±hr° @¬5¯²-@¬5µsê³h@¬5¯²-@¬5¸*™0¾@¬5¯²-@¬5ŸØ­«ž@¬5¯²-@¬5¤?åÉ@¬5¯²-@¬5ŸåÉ@¤Îå`A‰@¤Î²-@¤Îå`A‰@¤Î -à @¤Îå`A‰@¤Ît¼j@¤Îå`A‰@¤ÎÙ‡+@¤Îå`A‰@¤ÎHË‘@¤Îå`A‰@¤Îû~ÿ@6#g ù l@6#33333@40Ä›¥ãT@4+²þÅm]@3Ÿ²-V@3•`A‰7L@33&Á½¥@3 Ô•+@33&Á½¥@3HË’:@33&Á½¥@3!ø -à?„F/·ÿP5?–âFpë3?‘=?ùKh?šniÙÊ¢Ð?£óV·s?ž¥‚±hÕ%?‡YÍ_?–*1€ V?“ |ɽ‡?™9½œÔ.?¤è®Áp™c?œâ™:;{ˆ?„ËD(ºo?“¢ ßÌF2?†aÞàI*•?¤÷™ïy\,?£,ãR¯o?¡£‡9²þ@@@@@*@&?ð?ð?ð?ð?ð?ð¿p®O¸?aˆäÍF?Qæaܪc?Rå¶ 8a^@¬5©ÅtÄ@¤ÎK¿z?pPÅ*¸\,?r3U—vø?Ó¥=¡ Ë×?×Ó»6»Ý£@Ÿeözê¹@¨@¡)`A‰7L@¡)a'ë…ž@¡)`A‰7LÁ.„€@¡)`A‰7LÁ.„€@¡)`A‰7LÁ.„€@¡)`A‰7LÁ.„€@¡)`A‰7LÁ.„€@¤wß¾vÈ´@¤wß;œ6È@¤wß¾vÈ´Á.„€@¤wß¾vÈ´Á.„€@¤wß¾vÈ´Á.„€@¤wß¾vÈ´Á.„€@¤wß¾vÈ´Á.„€@7«µsê´@7¬<žì¿²@3£÷ÎÙ‡Á.„M‰ûçm@2©Û"Ðå`Á.„QnÙ‡@1ýcˆe”°Á.„NÜC,¥@1ýcˆe”°Á.„NÜC,¥@1ýcˆe”°Á.„NÜC,¥?˜—"ÝÚá@8#˜@8¾:@8 >+@8Iç@8Ù?|¬Çµƒç9@8Î÷@8i§@8Å@8S@8û—?“z&FÉ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø©@­NÙ‡+@­0å`A‰@­NÙ‡+@­R•éá²@­NÙ‡+@­K¬q ´@­NÙ‡+@­Mw1Å@­NÙ‡+@­K¹Œ~(@­NÙ‡+@­Lq ²–@¦B–“u@¦BµÂ\*@¦B–“u@¦Bšxl"h@¦B–“u@¦B“œ¾à@¦B–“u@¦B uöý!@¦B–“u@¦B’½<6@¦B–“u@¦B¥¡ÊÀ„@9#g ù l@9 ²þÅm]@3{ Iº^@3|Iº^5?@2{Ƨï²@2yûçl‹D@1¦YJôðØ@1 'RT`ª@1¦YJôðØ@1­:’£@1¦YJôðØ@1¡TÉ…ðp?’Óusÿ\Ã?‘Ü„ Þ(£?’5 µ¿$„?‘S;²~?’Þäi]i?–VòFNLG?É\ OôZ?’Ȳõa®?”p¶I”“ž?¡Š €ùª?”Ï#:d ?œ¡Åë¶TÞ?²“P(?nÂ?–®UÒ.?†úŒz_–È?“¶º Yæ¸?ˆ‹”âó?“vuØcʲ@@@@@,@(?ð?ð?ð?ð?ð?ð?x[ß×®€?YZHu+?bè»yZ?~~Á»Pjž@­K1xDÑ@¦BšSº4?‚¾²Nxâb?‰þL'ÝÌ?÷ìÝz\ôÔ?õ‘68^¬@Ÿr°—wüé@ª@ŸÎÔýó¶F@ŸÎÎÚbÀ@ŸÎÔýó¶F@ŸÎ×d¬uE@ŸÎÔýó¶F@ŸÎÕ-#N¹@ŸÎÔýó¶F@ŸÎÔ–9@0@ŸÎÔýó¶F@ŸÎД™Ó@ŸÎÔýó¶F@ŸÎÏ”àœ@¨nõÂ\)@¨n÷Oß;@¨nõÂ\)@¨nó ±(r@¨nõÂ\)@¨nõeòë>@¨nõÂ\)@¨nòˆêƒ@¨nõÂ\)@¨nõ¸š¬l@¨nõÂ\)@¨nôÅœ}@5÷â‚@·€@5ñüP™(@1sS÷ÎÙ@1n©+èd@0_²-V@0^ k+®Á@/æL/ƒ{K@/æìW<Ü@/æL/ƒ{K@/äG£(²@/æL/ƒ{K@/ãªy»­Á?|¬Æ Væ?2x™¶?‘ -HžOœ?‹û T!×?‘/+‡I?÷…»fq\?ƒ_ÿKt˜à?’5‰]¶g?‘„w9L?]»Æ]?‘ïM£?Ÿ,ã´?…wç{„²?ŒØîë?‚Ì8Kç6?ƒJ™½a7?‡¥ËŒ£?†ë'º£ Z@@"@@(@:@8?ð?ð?ð?ð?ð?ð?0xýHX¿Dæš0Ô?6ws??#%Æ>3@ŸÎÐvÇø@¨nõªX?W—6hz?_yƒ—1Y?ºüp°ê€Þ?Ä|–Žb|@ŸhwuÑ@«@©gOß;dZ@©gP£× -=@©gOß;dZ@©gP—y‡ @©gOß;dZ@©gP—)'@©gOß;dZ@©gPŠï²«@©gOß;dZ@©gO.°Ö§@©gOß;dZ@©gOÂzc@–=hr°!@–=ë…¸@–=hr°!@–=$ÏÜ @–=hr°!@–=‹[SJ@–=hr°!@–=]öU\@–=hr°!@–=G3Qä@–=hr°!@–=„„®q@3úqÞi­C@3úhaã:z@+€A‰7KÆ@+€0Ð"¹@)¥¡ÊÀƒ@)¥žµöÀŽKXP­@©gP ÈY:@–=ž·u1?=ÞRÚj§O?¢eZª·?…>„°R”»?<+5á£9F@ŸgÇØ÷ü@¬@¤cƒn˜@¤cÄ›¥ã@¤cƒn˜@¤c[À7@¤cƒn˜@¤chÛ‹«@¤cƒn˜@¤c©“ á@¤cƒn˜@¤bþ«6z@¤cƒn˜@¤c[À6@¢î¾vÈ´@¢î5?|ï@¢î¾vÈ´@¢î¼@¢î¾vÈ´@¢îƒä%¯@¢î¾vÈ´@¢îã¼Ó@¢î¾vÈ´@¢î«6z@¢î¾vÈ´@¢îU›=@4 ]cˆe”@4 -’£S&@0|í‘hr@0v_Ø­¬@0²-V@0ªÍžƒä@/žžš@/ž\‘ÑN<@/žžš@/Ÿ.Hè§@/žžš@/žvÈ´9W?žˆ2}?Čۨ1A?‘$Cê¡@í?‹Æ úJ-M?‘5ø gµÒ?ÔCXsñ?}Ñ¿ž,?’uß¿çÒ?–ÐO(·Š?Hª¦ºón?‘77…Âç?‘¡ë Þf?†úŒz_–È?Œ¾»•lŽ?ƒÆ×q„nð?ƒ!Ë *(?‡gϵ’õ?†å·ÑfWà@@@@@*@*?ð?ð?ð?ð?ð?ð¿G;z€?¼Qö?;‚àBk?)ÕóY¢ F@¤cÂwƒ<@¢î\„?Z³Õ¶Í»†?JÄâö¹M?À¶rwÿ9q?¡R¸ø*†@ŸgÊ0`å½@­@«šÄ“t¼Á.„€@«šÄ“t¼Á.„€@«šÄ“t¼Á.„€@«šÄ“t¼Á.„€@«šÄ“t¼Á.„€@«šÄ“t¼Á.„€@–ð£× -=Á.„€@–ð£× -=Á.„€@–ð£× -=Á.„€@–ð£× -=Á.„€@–ð£× -=Á.„€@–ð£× -=Á.„€@8Žì¿±[XÁ.„>¤µÜÆ@4Iº^5?Á.„M‰ûçm@3"-VÁ.„QnÙ‡@3Œ~($ Á.„NÜC,¥@3Œ~($ Á.„NÜC,¥@3Œ~($ Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø®@ª“ùÛ"Ðå@ª“ùÛ"Ðå@ª“ùÛ"Ðå@ª“þÒˆÎp@ª“ùÛ"Ðå@ª“ü]cˆg@ª“ùÛ"Ðå@ª“ü64@ª“ùÛ"Ðå@ª“üàuöü@ª“ùÛ"Ðå@ª“üú¬Ùç@¥åV“u@¥åVE¡ÊÀ@¥åV“u@¥åR×s@¥åV“u@¥åSê³g¡@¥åV“u@¥åV®}Vm@¥åV“u@¥åS¶E¡Ë@¥åV“u@¥åOAò×@4}:’£@4|ÓZ…‡”@1óS÷ÎÙ@1òa|ÚQ@1ï²-@1éùrH@0ÏO „M@0ÏhÛ‹­@0ÏO „M@0Í\ú¬Ùè@0ÏO „M@0ËÚQÎ?|¬Çëý ?ÖÈ ¼?“zkrØ-å?5~pY5?‘ÏX¼ãs~?‘#†»{׈?1·†Æjñ?’4 "ëžØ?‘c–…•#$?Ä…à6 -æ?’ºñS©YÖ?‘ éñ^?ƒÚ@êA²?Œ¾»•lŽ?‚ù…žÄ`x?ƒÈGó?‡Ä­‹›Ü?ˆ©{2¡Î@@@@@,@(?ð?ð?ð?ð?ð?ð?G;S»x¿Paë+4?ÒìMÄ\?@¢×5£qå@ª“ûq@Mè@¥åTl[}@2´“t¼j@2²:6¹Ùþ@1ÿò䎊r@1ÿKŽV¼@1ÿò䎊r@1ÿÂ+/iƒ@1ÿò䎊r@1ÿÔ<'??|¬Æ Væ?œe×å›Å?’ŸËÅî]R?‘TêÞ'€?’$åcCy¿?’¤w¼ê -Þ?}õ¬#„­?’hS°áÀ?‘83Ë_K?Ž[l7ˆé?‘Æüú øT?“sŠã;?ƒ+ÖÏZËã?ˆÉ‘øš6?‡c¡: -{?„TJ¿‚úÛ?‹ VZßà¹?‰¹§´ü“}@@$@ @$@1@4?ð?ð?ð?ð?ð?ð?)ÓÒ8ð¿G6s?Q€½^#A?*éBœ«®@žµØŸb€¼@£ÂÌ­ón?q}«M'Mq?J–fp|µ?ìºßü»? ?õsäèŸ@ŸfL¥e¥þ@°@®¤yÛ"Ðå@®¤y™™™š@®¤yÛ"Ðå@®¤{ÂÜ:@®¤yÛ"Ðå@®¤xw´P@®¤yÛ"Ðå@®¤m˜Ê&@®¤yÛ"Ðå@®¤þDk@®¤yÛ"Ðå@®¤}Ùb·@•'ï²-@•'RT`«@•'ï²-@•;IÁ@•'ï²-@•3´GO_@•'ï²-@•/Hû@•'ï²-@•+¾‘ø@•'ï²-@•,î^ —@5òÃÉîËû@5ô.h"@2» Iº^@2ÃÊ{ZÀ@2)Û"Ðå`@2,,R¢Z|@1a:’£S@1fAó+ª˜@1a:’£S@1d[ªžHh@1a:’£S@1dS9Ãñ=?~ì“?ÕÒJ?’ù¾3ü8o?‘<ºOõ`Ž?³±Qje?‘½{`?‘ØÐ{5J?|çµB &€?”µžÃ«hš?Ù¨à‰Ù?‘¤£§‰á&?‘Oõ9o?‘.OJ;@?‡½Ÿ_ y?ŒáÆ_„žœ?†Í¿ÄF?ƒTA¨8¬d?‡˜Þ•+åç?‡=`Ã-Ÿ@@(@$@*@:@5?ð?ð?ð?ð?ð?ð?T؆x?E¾4QÀ?>ƒ>ÒqÆ?2M7Ø@®¤|±Ëíþ@•*ðs?^z€3$Y?RÅ„Èôgÿ?ÇEÆÕ{Éj?±œÀ å@Ÿgí{l@±@©Õ+…¸R@©Õ/²-@©Õ+…¸R@©Õaÿ.Hé@©Õ+…¸R@©ÕQ4êK@©Õ+…¸R@©ÕHõÂ\@©Õ+…¸R@©Õ90¾ ì@©Õ+…¸R@©Õ> í(@­úÚ¬1@­ú×Oß;@­úÚ¬1@­ùÒÊW§‡@­úÚ¬1@­ú}¥œà@­úÚ¬1@­ú°¾ í(@­úÚ¬1@­úÓ©*0V@­úÚ¬1@­úÍ\ú¬Ú@3`ØDЩ@3Zu%F -@0O|í‘hr@03œ¾à@/¯ß;dZ@/!×Ûô‡ý@.-úCþ\’@-¯ùrGE9@.-úCþ\’@. á°‰ (@.-úCþ\’@.ÞÑ·?|¬Çëý ?·Èo|Z[?´ÕÞ@ò?³4ÏÚÓõ?’dÓÙiº?“ d?|¬Çëý ?Ý{æ6ï?Ä’ŽªÛ‡?²%i[¿>?’.<ù?“®°ýYè@?‚ÂÌ]å?°¡Ùir¯?¶ͰöÐ{?²a ä‰ ù?‡ã ËÄž?‰ö±«tï@@@@@,@*?ð?ð?ð?ð?ð?ð?fÊnæÚ¿\‹Oò?Cbk¼QkL?Sæìßsë@©Õ5vÄÚ@­úÔ+‚?cÌmo™Ðî?t>ì¨Ö12?ϵЛ.ká?ðWEn_Kö@Ÿe6à,¿Œ@²@¡cS÷ÎÙ@¡cS÷ÎÙ@¡cS÷ÎÙ@¡cÑä<@¡cS÷ÎÙ@¡c7LG›@¡cS÷ÎÙ@¡d¤¸ã@¡cS÷ÎÙ@¡a¾"è@¡cS÷ÎÙ@¡aßP:w@®ñ©ûçm@®ñ©ûçm@®ñ©ûçm@®ñÿxø@®ñ©ûçm@®ò ?ü2@®ñ©ûçm@®ò\@®ñ©ûçm@®ñ$$é@®ñ©ûçm@®ð<Ý0z@4¹Œ~($@4ë¯$@1T›¥ãSø@1Ucé_û:@0þV“u@0ÿAîH@0‚‚@·€4@0ƒqÛ|@0‚‚@·€4@0ƒEŒÒ -ú@0‚‚@·€4@0ƒ˜pJ¥Á?}@T˜ÁÎ¥?ö¦¿ˆ19?‘);`·Ž¤?‹òæý¾.?‘Cju÷³Œ?‘0_Ä•x?|¬h2:“?’ÝÍ£Ã?‹‚n‡Jd?;4 ïš‘?‘2r¤tŠf?z(-½Ÿ%?‚nÓ3î‰?Œæ»!½œË?‚õ’ºè?ƒV,‚?†¬jG¢Ñr?†Ý~Ã3F@@(@ @&@3@3?ð?ð?ð?ð?ð?ð¿+#;„€¿)*á~@?3ŒDÂM@Ò? æ”å0úV@¡cä¾@®ñS9t -?S`f¡äÕ?A1g7Ÿml?³ÛpQZ+è?Žš \{|’@Ÿfä`Š^@³@£€J=p£×@£€#n—@£€J=p£×@£€êçÕfÏ@£€J=p£×@£÷ -=p¤@£€J=p£×@£€#{J#:@£€J=p£×@£ÿ;dZ@£€J=p£×@£€¸ºÇ@¦›/²-@¦›33333@¦›/²-@¦œË)^ž@¦›/²-@¦œÂ\)@¦›/²-@¦ž ’:)Ç@¦›/²-@¦›ÿ.Hê@¦›/²-@¦›[W>«@8àØDЩ@8ËC•%@4Iº^5?@5u%F -@3A‰7KÇ@4Wâ‚@·€@2O „M@3X1&éxÕ@2O „M@2lô!.@2O „M@2 wškP²?§Q,Äš¤?Øç(Äx~•?ÅazLÑ&{?ºùlmÄŽA?¡ãÑWÐö?ª>Ô›„ïª?¾B×Õrµà?Ë=úÊ„¤?ÔXšŽ4†3}? ¦å_¹@@@@@,@*?ð?ð?ð?ð?ð?ð¿~*É ¿‰£l•€?fEz tg?¥#¹œ'@£€åäü@¦›¬?…‚ÝVïÏ?½ìœ8Äû?×’¦uȧ&@6 ùzͯ@ŸqF=r ö@´@®¢ú^5?}@®£ cg×@®¢ú^5?}Á.„€@®¢ú^5?}Á.„€@®¢ú^5?}Á.„€@®¢ú^5?}Á.„€@®¢ú^5?}Á.„€@˜ÉV“@˜Èì‹C•‚@˜ÉV“Á.„€@˜ÉV“Á.„€@˜ÉV“Á.„€@˜ÉV“Á.„€@˜ÉV“Á.„€@804mÅÖ8@80 - !°@5…?|í‘hÁ.„M‰ûçm@4ù7KƧðÁ.„QnÙ‡@4…œàu÷Á.„NÜC,¥@4…œàu÷Á.„NÜC,¥@4…œàu÷Á.„NÜC,¥?™û-™,Èß@8#˜@8¾:@8 >+@8Iç@8Ù?ŠÊuq•ú@8Î÷@8i§@8Å@8S@8û—?©ÀÛNáN@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøµ@®B\(ö@®L1&é@®B\(ö@®=¥œá@®B\(ö@®A|ÚP@®B\(ö@®OiDg8@®B\(ö@®CFÜ]d@®B\(ö@®H´9X@ª€\(õÃ@ª€…`A‰7@ª€\(õÃ@ª€˜_ö“@ª€\(õÃ@ª€·éú@ª€\(õÃ@ª€ŠçÕfÎ@ª€\(õÃ@ª€Ë)^ž@ª€\(õÃ@ª€y³Ð|†@9Y*0U2b@9OåÉä@5Ùº^5?}@5â3œ¾ß@5M²-V@5TµÜÆ?@5mÅÖ8†@5%›=ÈL@5mÅÖ8†@5eýŠÚº@5mÅÖ8†@5þ\‘ÑN?±>ÏÅósN?›äÄö/>?««ì'Qt?·ñšä~ä?¬„µÜÆ??¤ãn±µ««?¦NIÉ®š?–øÐ°€l?³üë5˜U?´’ö­‡½?£_™QÛÊ -?¤†k ßð? mÖ¿tE?nçO™å?¢ÿÐ4Ây€?§DÛ–£?²Ì7r_?¦ 24 -¾Š@@@@@&@"?ð?ð?ð?ð?ð?ð¿P(áX¿N ÀÉ”?Už–”¯?kj¼–.Ž@®I@UÙ@ª€†&‘O?s ¹5Ó°D?Š>•ý|?ªVœ&Sn?åb?ݽb@Ÿn…\CÚõ@¶@ª¢¬1@ª¡ìæËå*@ª¢¬1@ª¢1g$×@ª¢¬1@ª¢(úŒ@ª¢¬1@ª¢»#ØM@ª¢¬1@ª¢A·ø@ª¢¬1@ª¢—ŽÔŽ@—Ê 7Kƨ@—É㘳€@—Ê 7Kƨ@—Éÿ§ëð@—Ê 7Kƨ@—É÷h•ä*@—Ê 7Kƨ@—Éû -[á@—Ê 7Kƨ@—Éÿ«Û°#@—Ê 7Kƨ@—ÉøjÓP0@8 ØDЩ@8‡>«6z@3R Iº^5@3R*¹ƒŒ2@2ô“t¼j@2÷H§:+h@2fYJôðØ@2c–ÇrÖ¾@2fYJôðØ@2bÕ°ß»¼@2fYJôðØ@2c$š‹Æ?‰døëŽìÃ?‘Cä7j÷?‘Ûür8‡?ŽËú%µ é?’»µ$Qé§?“úïR¸Ø?«é:Ƶ§?’á‡bz½2?‘Jz*(`A?“$Ê H*?“cP×{ï(?‘ä`ÃÃÎ ?ˆ,`´èI?Ž¢f‚ÀàË?‰[eòdWR?|B¡6g?1‹xˆkÔ?‹RR–ó@@*@$@,@<@6?ð?ð?ð?ð?ð?ð?†˜Ë»Í€?KˆÓ/?b™¥iLR‰?XK“_™›@ª¢z–pÊ@—Éùéï@¢?„%~”-M;?n ²Esþ@b2G ?Ëù»»Õb[@ŸoÖb†(@·@§Ô-V@§Ô(õÂ[@§Ô-V@§Ô,/ƒ{J@§Ô-V@§Ô0Ë)^@§Ô-V@§Ô*W§†Â@§Ô-V@§Ô+ Iº@§Ô-V@§Ô-:’£@¬ã¼í‘hs@¬ã»çl‹D@¬ã¼í‘hs@¬ãºCþ\“@¬ã¼í‘hs@¬ã¹Î_p@¬ã¼í‘hs@¬ã³3333@¬ã¼í‘hs@¬ã¸*™0¿@¬ã¼í‘hs@¬ã·KƧñ@7}:’£@7‚u%F -¦@3n5?|í‘@3nHè§æ@2’Ðå`A‰@2•®æ1ø @2™Œ~($ @2›¬q ²–@2™Œ~($ @2›˜Çâ‚A@2™Œ~($ @2›ÓÃa@?ˆÿÀ)T¿Æ?“vuØcʲ?•œ‘æ¦M?‘ƒZ)Àˆ?’Þäi]i?“”üU§<­?Œs¤DÅÐ?’Òc§—Ûí?”_й@’?•Œ ;qí?–žóB» ”?“êXÔ #{?œ¨…2Œ?ލf†)"?„ËD(ºp?‡•ó¨–ˆ?‰/ã̽`ª?$Ìj½BÙ@@@@@(@&?ð?ð?ð?ð?ð?ð?FàxÍ<¿Q%KFÀ?#ïh#€‘¿?K xaq¹@§Ô*ž…äb@¬ã¸N»28?CÉMcc±ù?k¡41I?†²Æ <=?Ñ<€ëšÏe@Ÿi÷;úB@¸@«³É7Kƨ@«³Èr° Å@«³É7Kƨ@«³ÊôðØF@«³É7Kƨ@«³Ê=p£×@«³É7Kƨ@«³È Ô•@«³É7Kƨ@«³ÇæšÔ@«³É7Kƨ@«³Ç“Ý—õ@ªH¥ãSø@ªHQë…@ªH¥ãSø@ªHW>«6@ªH¥ãSø@ªH¬1'@ªH¥ãSø@ªHPHð@ªH¥ãSø@ªH¬1'@ªH¥ãSø@ªHp£× -@6½:’£@6½Òñ©ûè@2&‡+ J@2'süPH@1Õ`A‰7L@1ÖšÔ,<Ÿ@0ÏO „M@0Ð Ä›¥ä@0ÏO „M@0αÄ2ÊX@0ÏO „M@0Î;Í5¨Y?1·†Æjñ??ÖCã ?‘ñê&ètä?$¿ÀºÍ?‘b©b<]ô?‘Iãd©ì?ŒÅð´¯=Í?‚ã<ظÜ??ƒʾÏê?†¨›Z‡–X?†¶Ûã-†@@*@*@*@9@3?ð?ð?ð?ð?ð?ð¿'Ú¶ô@¿”þ€?È]îñ(?YØ@ -&×@©^­b¿×Í@”¶[’½ô?3²KOØ­??ó®¨1s?u%Øà¸õ?Š”}ƒ_%ª@Ÿfí/›M@º@­*~ùÛ#@­*~ùÛ$@­*~ùÛ#@­,1&ê@­*~ùÛ#@­+’:)Ç@­*~ùÛ#@­+íúCý@­*~ùÛ#@­)ÞÑ@­*~ùÛ#@­)7Kƨ@¦ë²-V@¦ë²n—P@¦ë²-V@¦ë³¶E¡Ë@¦ë²-V@¦ë²T`ªe@¦ë²-V@¦ë³Z…‡•@¦ë²-V@¦ë²£S&@¦ë²-V@¦ë²½<6@1cg ù l@1cg ù l@0ÎÙ‡+@0§†Â&€@.ü¬1&ê@.üÚQÎ@/Öð¸»@/ÖOv_Ù@/Öð¸»@/Õ$Ý1@/Öð¸»@/Ö_Ø­« ?É^òÀXæN?Æ¿5›7÷?‘WßÈDö@?Œݶ\ñr?‘EÉ@Ú?ë+ʦÜ_?ÐbV‡,?’NÛˆV(?§^ ÿo˜?Y‡…—Ø?üÓqÔNŠ?wN —z_?€b¡´ñ@?ŒË›Í‡Çq?ƒmÕ+&¬Š?ƒ!Ë *(?†©b/bJö?†¼Š˜L¥÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿T€ûŽ0¿1Û$y¤?>DÊ,ž¤?!W"™2œ@­*Bj.„@¦ë²ò…zš?M-K±\Ó@?0j­KØÙ'?”K3Ó óá?W5…-ï©¶@Ÿs~ùR@»@­hI7Kƨ@­hHõÂ\@­hI7Kƨ@­hOO „M@­hI7Kƨ@­hO4Ö¡b@­hI7Kƨ@­hM«ŸU›@­hI7Kƨ@­hJçÕfÏ@­hI7Kƨ@­hK]Ìcñ@¥«ZŸ¾vÉ@¥«ZáG®@¥«ZŸ¾vÉ@¥«X7´¢4@¥«ZŸ¾vÉ@¥«X*™0¾@¥«ZŸ¾vÉ@¥«Zxl"h@¥«ZŸ¾vÉ@¥«WXâf@¥«ZŸ¾vÉ@¥«X}¿H@4›¹Œ~($@4›)^ž@0ã÷ÎÙ‡@0á×Ûô‡ü@0Wï²-@0VE¡ÊÀƒ@/Š#9Àëî@/†ÏAòØ@/Š#9Àëî@/ˆÎp:û@/Š#9Àëî@/‡â‚@·?|öOÿÝ?š¾ßÍZ?‘Ëü²ü ?‹¬àÌ’Ç?òǹíT­?ÛF»0?|öOÿÝ?’4 "ëžØ?ÀpMºÅ?@§[*^?ÚÌA B{?«àÓ RÆ?ƒ>ZÌw~?vùv“?‰6~„æAÕ?ŠŒµIÍ?ˆ0&YÊEd?‡…¤$Ó@@@@@@(?ð?ð?ð?ð?ð?ð?FM1ùX¿DT†Ï<?=Ý_ Ô?+ßõ‡ƒ@­hJ¼Ø¨@¥«Y—çv?]«°‰ˆ|?LViSÐö?Çä¦\Æï?¤¢w7z@ŸfõØÅp¢@¼@©qZ¬1@©qY™™™›@©qZ¬1@©q^ÒˆÎp@©qZ¬1@©q]Vlô@©qZ¬1@©q`@©qZ¬1@©q]¥œà@©qZ¬1@©qcn.±Ä@§ì1&é@§ï\(õÂ@§ì1&é@§ëjçÕg@§ì1&é@§ñë…¸@§ì1&é@§ª~ùÛ"@§ì1&é@§Ó÷ÎÙ@§ì1&é@§ÑÎ_@6÷â‚@·€@6ø§æšÔ@3¸r° Äœ@3º³g ù @3>V“u@3D,<žìÀ@3OO „M@3DÂø7´¢@3OO „M@3S9Àëíú@3OO „M@3MæšÔ,ëéPå€?)ÿÊõïÈé>ý³PJ‰®@¤"ÙÔà@™€6ÙG ö?8ÿü†÷? -––A?n¼îø ¹€?Xi6S@Ÿs Or’@¾@£õ?|í‘@£ñ©ûçm@£õ?|í‘@£ø}¿H@£õ?|í‘@£ò•éá±@£õ?|í‘@£÷ö+jè@£õ?|í‘@£øâe-@£õ?|í‘@£÷€4mÆ@©ovÈ´9X@©os÷ÎÙ@©ovÈ´9X@©ov”Fs‚@©ovÈ´9X@©o|í‘hs@©ovÈ´9X@©o~Ov_Ù@©ovÈ´9X@©ow€4mÇ@©ovÈ´9X@©oz¬1@7D¯O „M@7Ib¶®~@3‡ÎÙ‡+@3ŠOv`@2ä¼j~ùÛ@2ä¼j~ùÛ@2n_oÒ @2mÌcñA @2n_oÒ @2p¸ºÇ@2n_oÒ @2pØDЩ?3ßa=„?“:„aGS?‘ùé éµ??Œ:Z2‚b?•Äí¥×?”OPlðó[?¥K¶{Oÿ?—·f;m?’€fç½Î?‘~¬Àm?ó?”‚ÍÊL¾l?” ™¾,?…/‡ÙX·²?†¡HŸÊç?Š[¦Råb?†3_¾ˆ?‰6‰õË?ùDâΊ@@@@@,@,?ð?ð?ð?ð?ð?ð?W+¤ ª¿'<ìº?B¶š Où†?\çäÄ-û=@£÷xÔI@©oz¦Xò?abè«éaÉ?sÊ,ÊÂÔ?¼û®-Œ~L?×™&¯Zw@ŸnnG>´|@¿@ d¸Që…@ dµ¢¨y@ d¸Që…@ d”u"ŒH@ d¸Që…@ d¬ËqŸQ@ d¸Që…@ dµ ßý@ d¸Që…@ d«]6Èß@ d¸Që…@ d³ÑvL*@¢r-V@¢{žÂƒõ@¢r-V@¢gø ^@¢r-V@¢q¿+@¢r-V@¢vqXû@¢r-V@¢r¡4Y@¢r-V@¢pLÎ@9ò䎊@9j~ùÛ#@3¸r° Äœ@3»fßì¸@2Ÿ²-V@2§Xžý†©@1n_oÒ @1q¿W @1n_oÒ @1p{å¾f!@1n_oÒ @1qß•XÄñ?´Ÿƒ|…9‰?“húÑø[?”Ь ÷Ô!?cnvmÌ?‘”\‹•¯,?éî¼6-"?¤%„Ä]è?•Sq‹ãú?”hAůö>?Ñt‚U?’0 (ê‚`?k$zø^s?´0Wøî–n?•‘%’›Š?ð{*ÄŒ?„.P3­öc?ˆPBÃc,w?ˆÉZžúÏÒ@@@@$@2@,?ð?ð?ð?ð?ð?ð¿RˆDæÌ¿dÎâ­õ€?e׋%u?+’ÙvFVŽ@ d²'0«@¢s¡f?v¶ÌúL—!?Aˆ8»?çvå§ODß?z† ´ý“A@ŸqnÖ~Ö@À@­Z{dZ¬@­Z{dZ¬@­Z{dZ¬@­Z|‘ÑN=@­Z{dZ¬@­Z|Æ?@­Z{dZ¬@­Z|C,¥z@­Z{dZ¬@­ZzkP°ò@­Z{dZ¬@­Zz–¼@«s3333@«st¼j@«s3333@«s©*0U@«s3333@«t•*˜@«s3333@«s©*0U@«s3333@«sMj@«s3333@«s@N¤©@2ý:’£@2ýquŽ"@/ðå`A‰7@/ñ4êJŒ@-ÄZ¬1@-ÄohÛ@-…oi@-„Ý/ŸÀ@-…oi@-„êJŒM@-…oi@-…oi?É^žQ5P‚?êÚÏ$?‘4!Ÿ•p’?‹û…†_?‘Dj?È2I/?ÐbV‡,?’¼  g¶?ŽËÜ¿€?9ÍÇ~FÀ?îCq$u?_Ø~tñ?€bMÕky?Œ¾»•lŽ?‚† SFò?‚ìxqC?†špk Y?†¯Mž684@@@@@,@,?ð?ð?ð?ð?ð?ð¿P;ù¤¿'ÐÖ?,©f­ïï?D yû¹X@­Z{ Ð@«smâ9?;‘Ù¸µr?üǹ§s—?ri…·ò?'úϕї@Ÿs¥}@Á@£/²-@£ ƒn˜@£/²-@£1‚©“ @£/²-@£.}Vlô@£/²-@£1N;Í7@£/²-@£)7Kƨ@£/²-@£*W§†Â@«ƒ•%@«xbMÓ@«ƒ•%@«‰ 'R@«ƒ•%@«í(Œç@«ƒ•%@«„M:”@«ƒ•%@«‡»/ìW@«ƒ•%@«‚MÒñª@9eöý!ÿ.@9oò䎊r@4?|í‘h@4 àÞÒˆÎ@3²-V@3iDg8@2OO „M@2W¯·é@2OO „M@2R Iº^6@2OO „M@2OùrGE9?ÁxgÀ?’ãy)­3c?—2 :M?”ƒSÌz?“ £Ê­?”OPlðó[?¼ûÃv…cÞ?˜Ø*ªl€ô?ÃŽœ -Üi?•è­¸‡?’‚[fúbF?“t‡o(ÚÊ?¢'õ@hQ?vùv“?†ž5ðqë?…{BÕ0Þ?Œúq‘?<ש‹äN@@@@@&@,?ð?ð?ð?ð?ð?ð¿dÅJ>^@¿)¡<}ð?`*äÚôž?_>zõ0µ¤@£,m”ÊG@«„Õ}¥N?nùNÖs‚ï?ntPÓ¢?Ì~«æÂ–?Ë“"Žv²«@ŸrµäÃË@Â@Ÿ—wÎÙ‡@Ÿ—¥`A‰8@Ÿ—wÎÙ‡@Ÿ—ʼn~c@Ÿ—wÎÙ‡@Ÿ—Kg3ð@Ÿ—wÎÙ‡@Ÿ—䘧]@Ÿ—wÎÙ‡@Ÿ—£üE›h@Ÿ—wÎÙ‡@Ÿ—¯z¼Äy@¤H2-V@¤GêàÆŸß@¤H2-V@¤Hú£à<@¤H2-V@¤H&Ç2=3@¤H2-V@¤HVÌþ@¤H2-V@¤HLpäó@¤H2-V@¤H½0k@8rÃÉîËû@8-i}@3™º^5?}@3‰BHmJy@2ƒt¼j~ú@2o…dÜ.l@28DЩ*@2BÁ,FÍî@28DЩ*@2JdÀЬ@28DЩ*@2@";¡Û?¥¨«Ã& ?¤<¿C=?¨˜]ͱ%e?™TI@¨?£ØiÐ_>•?¤}CÞÙÒ?‚Cš æI?›ó×ÊÜ?>$WŠª9?šx™Hgrê?¥èTìPÝÚ?¡¨× -ic?¤¿Žèút?¯§ëC³9?›_RS´8?•~e÷Bˆ­?“_5 ~ö¼?•yþçÝ^Â@@(@"@&@9@8?ð?ð?ð?ð?ð?ð>ò»|d€?…ÚzÃ?jΗX?q^ºÈ½¯@Ÿ—µ[@¤H稜Ö?„*hõâ¨N?”Étó«9?åQV†W@6‘cý£ @Ÿk e/@Ã@¨@B Iº^@¨@B Iº^@¨@B Iº^@¨@B©“ â@¨@B Iº^@¨@EÉå@¨@B Iº^@¨@ES&Á@¨@B Iº^@¨@>ùÛ"Ñ@¨@B Iº^@¨@?b¶®}@¬ªhõÂ\@¬ªi7Kƨ@¬ªhõÂ\@¬ªmw1Å@¬ªhõÂ\@¬ªmžƒä'@¬ªhõÂ\@¬ªlÙè>A@¬ªhõÂ\@¬ªfö”Ft@¬ªhõÂ\@¬ªg®zà@27â‚@·€@27â‚@·€@.€A‰7KÆ@.v®}Vlô@-dZ¬@-½<64@,QÑN;Í6@,KƧï³@,QÑN;Í6@,KƧï³@,QÑN;Í6@,KŸU›=?É^òÀXæN?éDEâ©Ö?’÷˜–Èä?Uóú*˜?‘à2F0µÔ?‘•S‚üJ?ÐbV‡,?“[¡ŽuœÙ?“„;Ë~½ú?‘!¥zt9Û?‘¶|+üÎ~?‘:i€ÑìÂ?€g‹)ØêÀ?ŒÛÏ·+?‚ÂÌ]æ?ƒ3¸Î{Z?†å·ÑfWà?‡gϵ’õ@@@@@*@,?ð?ð?ð?ð?ð?ð¿fb¢èT€¿bá÷5ç@?Pv,Û8ü?Q ˆ;S0s@¨@A¯^ûœ@¬ªi|vrò?_½,ßî?`$Ž• ª?¶[ûO»’?´BŒ¡@Ë@ŸrÿÇ~çé@Ä@¦ö\¬1'@¦öMV@¦ö\¬1'@¦öKC,¥@¦ö\¬1'@¦öx_ö”@¦ö\¬1'@¦ör:)Çz@¦ö\¬1'Á.„€@¦ö\¬1'Á.„€@ ¥U$Ý@ ¥NzáH@ ¥U$Ý@ ¥fffff@ ¥U$Ý@ ¥Y=Ùc@ ¥U$Ý@ ¥V®}Vm@ ¥U$ÝÁ.„€@ ¥U$ÝÁ.„€@9-¥œàv@9Ö8†YK@4» Iº^@4¯Ÿ¾vÈ@3>V“u@3)îËû¶@2æYJôðØ@2ÒZîcŠ@2æYJôðØÁ.„NÜC,¥@2æYJôðØÁ.„NÜC,¥?¿‰ø«pâ¬?¥HyR‰á?Ã4Eá!³°?ÀlˆfW¬@8Iç@8Ù?ŦŠT±F÷?ŸÏݼÃE?¢ÌïRt?¥à„Ÿ¹Ø@8S@8û—?¤$Ë×ù´A?©P£(®¥?£%øZîo ?¨Ó&È@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøÅ@¥/Ù™™™šÁ.„€@¥/Ù™™™š@¥0ö”Fu@¥/Ù™™™š@¥/ùõY³Ï@¥/Ù™™™š@¥0§ï²@¥/Ù™™™š@¥0 P°ò|@¥/Ù™™™š@¥0SŽóM@ŸÜ‚ Iº^Á.„€@ŸÜ‚ Iº^@ŸÜg ù l@ŸÜ‚ Iº^@ŸÜfšÔ,<@ŸÜ‚ Iº^@ŸÜu%F @ŸÜ‚ Iº^@ŸÛÜC,¥z@ŸÜ‚ Iº^@ŸÜ1&éy@7`ØDЩÁ.„>¤µÜÆ@2Ô›¥ãSø@2³ÉîËû@1¢-V@1‹Í5¨Xy@1zÔ,<ží@1T‡ü¹#¢@1zÔ,<ží@1W†Â&€ž@1zÔ,<ží@1Zu%F -@8J¨?¢4o:™v?›(`¥Æ´?·€r,Ö?° ½Pð Q?³ÒÇÎÛ@8J¨?Ñ¿ž,?˜Y ¶E–X?·0Ï+×Pl?´Ž6ÖEy?·ÙÇJ¡r.@8p÷?ª‚eûƒ+?Œ¢yëjk±?…ÇóÏ€9"?’:™/ʼn?£„©Ó8@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøøÆ@¬ç.—Oß@¬ç+ Iº@¬ç.—Oß@¬ç,VÕϪ@¬ç.—Oß@¬ç+)^ž@¬ç.—Oß@¬ç.Ëûµ@¬ç.—Oß@¬ç._oÒ@¬ç.—Oß@¬ç/²- @«[/Ÿ¾@«[%¸Qí@«[/Ÿ¾@«[¬1'@«[/Ÿ¾@«[¹õYµ@«[/Ÿ¾@«[}¿H@«[/Ÿ¾@«[žì¿°@«[/Ÿ¾@«[¸Që…@8­¥œàv@8´ðØDÐ@3uãS÷ÎÙ@3vÈ´9X@2]V”@2](Œç°@1øDЩ*@1öOv_Ù@1øDЩ*@1øÁTÉ…ñ@1øDЩ*@1ú ÞÒ?¯ò5}'Î?“‹ë÷?’måGSžq? Ð ÷Ž ?“”>C,4?‘f]£àG?¥K¶{Oÿ?–HÞÆzì²?‘ª¦ZqÍ?’‘Ç#·X?“h_N’%¿?‘ÔÄ÷Õ?ɽ±•4á?Ó%y*£=?ƒÚ@êA²?„•ˆG’Z¾?ˆëÅoë?‹&¸ê±fÂ@@@@@,@(?ð?ð?ð?ð?ð?ð??Z. @?2ÿ2p?:·«êümù?^°"é$éÀ@¬ç.¨öxæ@«[_•¸Í?MðL¡n׸?sÊ\¹,ÁW?‘ÖûF¾}î?ÜbÉyî³2@ŸpíˆE»@Ç@£X§ï²@£X× -=q@£X§ï²@£Wù#¢œx@£X§ï²@£X¶®}V@£X§ï²@£WúQÎ@£X§ï²@£XÝ/Ÿ@£X§ï²@£X Iº^5@ª¶Þ¸Që…@ª¶Üj~ùÛ@ª¶Þ¸Që…@ª¶È1&éy@ª¶Þ¸Që…@ª¶Õ '»@ª¶Þ¸Që…@ª¶Í„M<@ª¶Þ¸Që…@ª¶¨è§ç@ª¶Þ¸Që…@ª¶…‡“ݘ@6?–»˜È@6@–»˜Çâ@3R Iº^5@3IXbMÓ@3“t¼j@2ûxFÜ^@2£ÉîËû@2’GE8ï5@2£ÉîËû@2’n—Oà@2£ÉîËû@2Œ‘ÑN;Î?„F/·ÿP5?¥¡J®öT?° -ô«Çñ?¤ÊÈ8Ó~ö?¥–X%ü¯›?©9j -?|öOÿÝ?¬Y©YFpb?£~$Ã9y?™³0%rp?¹\r¸øˆ€?·ŒMÏ>²?†ž5ðqê?”kcÿä©Ú?Œó}?ï?’4i+Ëè?’;WZŸÿÔ?žÎ"”`ù…@@@@@*@(?ð?ð?ð?ð?ð?ð?.5ò@¿ÌU”?WšF: <¬?m 2Xv@£XÕµ I@ª¶ÒÂew?pìˆW¹?6ˆwïh?Ô4,ð~ž?õú™rD@Ÿ^ÝS~ÂP@È@¯ã=ó¶E¢@¯ã>ùÛ"Ñ@¯ã=ó¶E¢@¯ã>ߤ?æ@¯ã=ó¶E¢@¯ã>Åm\û@¯ã=ó¶E¢@¯ã>Åm\ú@¯ã=ó¶E¢@¯ã<ú¬Ùé@¯ã=ó¶E¢@¯ã<ú¬Ùè@ —MÒñ©ü@ —NV“@ —MÒñ©ü@ —MÒñ©û@ —MÒñ©ü@ —N_oÒ@ —MÒñ©ü@ —M\ú¬Ú@ —MÒñ©ü@ —Mžƒä&@ —MÒñ©ü@ —Mžƒä&@0eöý!ÿ.@0eðoiDg@*¼j~ùÛ@*É…ðoi@(´ýó¶E¢@(´ðØDÐ@(Bu%F -§@(Bh Ô•@(Bu%F -§@(Bu%F -§@(Bu%F -§@(B‚@·€5?ðO­W¬ÃÆ?ÉGãA­÷?‘ÌË>¯f?‹Æ úJ-M?ëÎ@ A2?ºª$Ð?ð„ƒ;0?’j%ÓRa?†[‘'Í?CÚ B÷?ÔÒ@úˆ‘?M\³Ù“@?ð!̃?Œ¯þuõí?‚oÁÆÜ§÷?‚ãaÎúvh?†ˆ#.÷?†‰Oú|q?ð@@@@,@,?ð?ð?ð?ð?ð?ð¿K€t? ^7°?0‚Lœ`Z?„ÃÜ#éß@¯ã=¦ÂøP@ —M†¡h??}TYT#‘?!ŒœPA¦?x÷ÃÙû*? *Û<['@Ÿs.½µv@É@¥¨õÂ\@¥¦$Ý/@¥¨õÂ\@¥cˆe•@¥¨õÂ\@¥œ¹#¢@¥¨õÂ\@¥Ž¤¨ÁU@¥¨õÂ\@¥iDg7@¥¨õÂ\@¥’° Äœ@©á,1&é@©á(õÂ[@©á,1&é@©á -à @©á,1&é@©á!TÉ…ñ@©á,1&é@©á¥œá@©á,1&é@©áb¶®|@©á,1&é@©á¿HÌ@7åöý!ÿ.@7ÝŠÚ¹õZ@3\Iº^5?@3V¸ºÇ@2Õ`A‰7L@2Ìí‘hr°@2ò䎊r@2vYJôðØ@2ò䎊r@2ufÏAò@2ò䎊r@2w€4mÅÖ?‡YÍ_?”"¶²'Ýþ?›£=Ñã5?œIXo_í? (E•¦ðç?à¸å¯X8ý‘ ?œñ=¼™Õ›?£(¸u¡w,?›/ÜŠ—‰¶? Ú¼öíËF?§Ò¸ùBz3?ž:“ñŸ«ä?© °¨Þÿ?§7&Öcè?¨`Í“=B‘?ªéyú¤Ÿh?†aÞàI*”?“[ ·S?¦$syW?R è®ãî?•Vû›¦Ã¡?”"‚Ò#@@@@@,@$?ð?ð?ð?ð?ð?ð¿_:ßÃÈ?|õaP?ešÛÚL?cRl°ö~@¥²ã9K¥:@¢f½/×Q®?r‘)2 ?SžÔ8]Î?à)à[C?Ïó4d¥×P@Ÿlµ%š@Ë@«/ž¸Që…@«/ž5?|ï@«/ž¸Që…@«/¥F -¦L@«/ž¸Që…@«/§ÕfÏC@«/ž¸Që…@«/œÚQ@«/ž¸Që…@«/ŸØ­« @«/ž¸Që…@«/ŸË’:*@œé8Që…@œé@t=3@œé8Që…@œéQ·Xâ@œé8Që…@œé7KƧð@œé8Që…@œé>Åm\ú@œé8Që…@œé>\‘ÑM@œé8Që…@œé>«6z@8IÎ_oÒ@8Sg ù l@3|í‘hr@3‰Q‚©“ @2Æ“t¼@2À4mÅÖ8@2Eœàu÷@2AohÛŒ@2Eœàu÷@2Aä÷eý‹@2Eœàu÷@2B×sü?˜ê?©úté?¦Ì '?” -Ÿ”îtI? Ìç,Z?–[À5ž¨?“lP {“›?¦¸Ùûu‘?˜ଚÿw?‘ŽütÅÒ(?›¼`’ i2?•]ÅvüM ?“ÛKÂè• ? ˜û½#Z?·ïö)h?‡9Â@0wç?‰®ðúcåZ?‹aÊ•TI?‹¼`’ i2@@@@@,@(?ð?ð?ð?ð?ð?ð?B 6ø¿åÌ5ð?E°¨†¬Û? *kçÛÛ@«/ž!dJ­@œé>ÎF·÷?`×Ò&D°ˆ?*‹UnÔ£ì?¸!ÃÉØ A?@-ªo¹@Ÿor¼’94@Ì@©Pq©ûçm@©P}ó¶E¢@©Pq©ûçm@©Pmí(Œæ@©Pq©ûçm@©Pw1Å@©Pq©ûçm@©Ps3334@©Pq©ûçm@©PsŽóMj@©Pq©ûçm@©Pu?|í‘@®á33333@®á+ Iº@®á33333@®á2° Ä@®á33333@®á1Ä2ÊY@®á33333@®á-í(Œæ@®á33333@®á0bMÒò@®á33333@®á49Xb@7í¥œàv@7öÁ½¥@3ahr° Ä@3a©ûçl‹@2~V“u@2U›=È@2+xFÜ^@2* ÞÒ@2+xFÜ^@2,j~ùÛ#@2+xFÜ^@2+ŸU›=?¡ÅꯨŠT?W[†?“%HCâ=s?ŽVåç0ÇO?‘õbÐ\?‘_ Ýß?™™™™™™š?’Òc§—Ûí?’ŒZzˆZ•?‘!¥zt9Û?üÓqÔNŠ?X78›š?¶)d”K‚A?ŒÖ -ÄȲ?ƒ>ZÌw?…”rsw?ˆ©{2¡Î?ˆÔÞÑ—æJ@@@@@@?ð?ð?ð?ð?ð?ð¿NµŸ ?_@§²?Tšš¨Ub„?=H«lÃÉ@©PtЈ£@®á/ëýàÉ?jÙõ VM?VkŸèè³0?ЛgR9Ø?¨2ÃoñŠ@ŸoPœo@Í@®>ùXbN@®?@®>ùXbN@®>ùõY³Ï@®>ùXbN@®>üPHñ@®>ùXbN@®?–R½;@®>ùXbN@®>þi­BÄ@®>ùXbN@®?¼£n@¬Î¼í‘hs@¬ÎÈõÂ\@¬Î¼í‘hs@¬Î»dZ¬@¬Î¼í‘hs@¬Î¾ùÛ"Ò@¬Î¼í‘hs@¬Î¸y=Ù~@¬Î¼í‘hs@¬Î³üPI@¬Î¼í‘hs@¬ÎƸºÇ@7Û¹Œ~($@7Ô‡ü¹#¢@4° Ä›¦@4ÈÔýó¶F@4"-V@4'Xâe,@3cÉîËû@3i¦µ (@3cÉîËû@3aN;Í5¨@3cÉîËû@3U`A‰7L?€‚ñêã ?—Ü¡UŒœ-?›£=Ñã5?—³Q+Ùv?¤áøl‡ä(?¤ Yâ9>?š•§q!U?˜[Gú,Ã?¥Eét'?–…%j»a?¤pè·FÌs?¥ý¸Às( ?Ó ¾îóô?–µ°jÆÄ?Vrÿä?•2YyÐ?£P;røo?ž\?/dž@@@@@(@&?ð?ð?ð?ð?ð?ð?C„„4(¿h?&þ?>ßÒ½RDÌ?hëÇ]*@®?XbóZ@¬Î¾e=Nâ?`uŽúÚ ?ƒøSkQ»?¬ó¨ËŒ?ì±3X\*V@Ÿgõ¤hÎ@Î@¬gl‹C–@¬k Iº@¬gl‹C–Á.„€@¬gl‹C–Á.„€@¬gl‹C–Á.„€@¬gl‹C–Á.„€@¬gl‹C–Á.„€@¥Ë¶E¡ÊÁ@¥Ë´9Xa@¥Ë¶E¡ÊÁÁ.„€@¥Ë¶E¡ÊÁÁ.„€@¥Ë¶E¡ÊÁÁ.„€@¥Ë¶E¡ÊÁÁ.„€@¥Ë¶E¡ÊÁÁ.„€@6Žì¿±[X@6Žæ1ø @4)‡+ Á.„M‰ûçm@4t¼j~úÁ.„QnÙ‡@3³&Á½¥Á.„NÜC,¥@3³&Á½¥Á.„NÜC,¥@3³&Á½¥Á.„NÜC,¥?|¬Çëý @8#˜@8¾:@8 >+@8Iç@8Ù?ˆÿÀ)T¿Æ@8Î÷@8i§@8Å@8S@8û—?˜Ð™Q$Ò@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÏ@¥¯ -Àƒo@¥®&éxÔþ@¥¯ -Àƒo@¥®ø_ö”@¥¯ -Àƒo@¥®ü‘ÑN<@¥¯ -Àƒo@¥¯ŠqÞk@¥¯ -Àƒo@¥¯ŽŠqÞ@¥¯ -Àƒo@¥¯ Ƨï@¨Ø²° Äœ@¨Øg+ J@¨Ø²° Äœ@¨Ø¬VÕÏ«@¨Ø²° Äœ@¨Ø§ÕfÏA@¨Ø²° Äœ@¨Ø¡£n.²@¨Ø²° Äœ@¨Ø°å`A‰@¨Ø²° Äœ@¨Ø¬~($ @7^Hè§æ@7X§æšÔ@35ãS÷ÎÙ@3,àuöý"@2K"Ðå`B@2A:’£S@1î_oÒ @1å*™0¾@1î_oÒ @1êÍžƒä&@1î_oÒ @1ê^5?|î?íðÇìLâ?Ÿ†€–5YM?š^ÇÙ*G?“Ÿd§„À?•bJÖµæÿ?”É–wç†è?Óf<Ç4?ŸÏݼÃE?ŸÀh¡º?—,àÐÑž?• ¸°R¨?”'q²TrQ?Цÿßë?£?‘a÷nñ?‰ZaizÚD?‰*6SpK?Œ8¸wx¯?<ש‹äN@@@@@*@&?ð?ð?ð?ð?ð?ð¿XŸ÷þ?t¼ÿ -X?mZ¹…~sP?mS›ŒE¨é@¥¯ -{§°ª@¨Øª5`€Š?{™8)íw?{¯ˆá”E?å›ð[ôÆÀ?âü’üE<Œ@ŸsÖ×I}@Ð@£+Y™™™š@£+UÂ\*@£+Y™™™š@£+f -¦L0@£+Y™™™š@£+qhr°!@£+Y™™™š@£+B3œ¿@£+Y™™™šÁ.„€@£+Y™™™š@£+Eœàv@§M£S÷ÎÙ@§M•Â\)@§M£S÷ÎÙ@§M–È´9Y@§M£S÷ÎÙ@§M—KƧï@§M£S÷ÎÙ@§MmjO@§M£S÷ÎÙÁ.„€@§M£S÷ÎÙ@§M˜y=Ù@8įO „M@8½jOv@4+¥ãS÷Ï@4Fs×Ü@3A‰7KÇ@3‚&€IQ@3L¿±[W?@3)ÞÑ·@3L¿±[W?Á.„NÜC,¥@3L¿±[W?@3Ý—ö+k?’Óusÿ\Ã?¡ùŠÀs› ?¦ªÓz%d?‘4ãM^@8Iç?ÀYëÿMß?ÅèWl ª?¥5Ÿþ:7?  õ%w?žätmî>@8S?ÁšTEkc?›Ny”…?šæÿ1­Í?˜¸DU#L†?²a ä‰ ù@8 Ø?Â>C]æþÅ@@@@@(?ð?ð?ð?ð?ðøøøøøøøøøøøøÑ@¬ š¬1Á.„€@¬ š¬1@¬ ]Æá#Þ@¬ š¬1@¬ |ÚÎ,*@¬ š¬1@¬ AAgDÎ@¬ š¬1@¬ CÏó`Ð@¬ š¬1@¬ Pú@‰‘@•ßþùÛ"ÑÁ.„€@•ßþùÛ"Ñ@•ßÈe¼þù@•ßþùÛ"Ñ@•ßꎠ~@•ßþùÛ"Ñ@•ß™hÿZ@•ßþùÛ"Ñ@•ߪ0Oí[@•ßþùÛ"Ñ@•߈$*€¶@8Ç>«6zÁ.„>¤µÜÆ@3Ìí‘hr°@3«is6¥@2ƒt¼j~ú@2maeÐÌ_@2Œ¿±[W?@2dq¾ÀY+@2Œ¿±[W?@2dÛ¿Š»{@2Œ¿±[W?@2j˜ë¯@8J¨?˜=‚…ذc?—”·17lÞ?³ê?UbBl?¶„H¯!?³|Js3@8J¨?˜²Æ?ÁÕ?œ2OozUÇ?¬ekÉ~‰?¯Xq ®z?¬4PTýFÃ@8p÷?•»„´µî…?ì-b_ž9?‘›>Ûù±?‘r꟧ô?šŽÃhS´þ@@ @,@<@:?ð?ð?ð?ð?ðøøøøøøøøøøøøÒ@¡}bÐå`B@¡}s3333@¡}bÐå`B@¡}` qv@¡}bÐå`B@¡}JŒL˜@¡}bÐå`B@¡}X7´¢4@¡}bÐå`B@¡}M„M;@¡}bÐå`B@¡}Q·Xâ@Ÿÿ8Që…@Ÿÿ8Që…@Ÿÿ8Që…@Ÿÿ 'RTa@Ÿÿ8Që…@Ÿÿ?|í‘h@Ÿÿ8Që…@Ÿÿ*Ov@Ÿÿ8Që…@Ÿÿ6+jçÕ@Ÿÿ8Që…@Ÿÿ=p£× -@7²ÃÉîËû@7¯ƒ{J#:@38r° Äœ@3=¥œàv@2v§ï²-@2hÛ‹¬@1‚‚@·€5@1„!-w2@1‚‚@·€5@1ƒ,¥zxl@1‚‚@·€5@1„ohÜ?ð°–Ž]?’°BÉô-?žÉÖìäÔ”?ŽVåç0ÇO?˜ -0˜ggk?š¨¶$NxÌ?ð°–Ž]?”ºu(†¼¦?ŸP­Ñ‚Ÿ½?”J6bº?“â¹Í[Óh?”æâ„o?ð*wjs—?‘Žèã&!+?¬Öva4z?—†0ÚŒ#?Ü×þë¿?‘  ¶‚3?ð@@@@,@*?ð?ð?ð?ð?ð?ð¿p!I$?qKx°…@?aƒÝFgXs?0©:Šþ{@¡}SAÜc@Ÿÿ3^˜Üg?pºÁpäà?>«Ü T?ÍÕØ.ç@È?kEPÊS@Ÿrß›åX<@Ó@¯§’ñ©ûç@¯§“3333@¯§’ñ©ûç@¯§º^5?~@¯§’ñ©ûç@¯§G®{@¯§’ñ©ûç@¯§˜Që…@¯§’ñ©ûç@¯§”ðØDÐ@¯§’ñ©ûç@¯§Œ"h Õ@žL´9Xb@žL´9Xb@žL´9Xb@žMaG®{@žL´9Xb@žLô9Xa@žL´9Xb@žM)xÔýô@žL´9Xb@žM?@žL´9Xb@žLøFÜ^@5#g ù l@5#Š Þ@6@ Ä›¥ã@6>BZîc@5;Ƨï²@5+ÚQÎ@4œÚQÎ@4…µsê³h@4œÚQÎ@4†ÏAòØ@4œÚQÎ@4‹6z—?|öOÿÝ?¯;©$.ˆ?¡}´v†M÷?¢~ -]zýØ? 3sG &?›8½üãüÏ?}Ñ¿ž,?¯ê‡J˜®2? PÇ´âþ?±Å¢/ó”‡?£ ƒU¾Š?¤VTº¨ÄJ?…/‡ÙX·²?¶Ü£×ìD?£å$óMš?™òvÈc?¢2ðø:Uù?“aÑ#@@@@@@"?ð?ð?ð?ð?ð?ð¿D3Úx?‚mjh?LÉ­Ð=æ^?e|•ï@¯§’z+¨ö@žLÎ^Á ?g° ·N?€>÷7¶ëû?Ò5Õ¿Vl?ôû:Cº€@Ÿa/É·@Ô@¢ïÜ(õÂÁ.„€@¢ïÜ(õÂ@¢ï£Ë ¢@¢ïÜ(õÂ@¢ðx„J˜Ã@¢ïÜ(õÂ@¢ïâÆ~[|@¢ïÜ(õÂ@¢ï ’r¡@¢ïÜ(õÂ@¢ï£Ž ¾Z@šéì‹C•Á.„€@šéì‹C•@šêùòhì@šéì‹C•@šé÷îÄ'4@šéì‹C•@šê€þ .3@šéì‹C•@šé}³o³@šéì‹C•@šéýv¤ãE@8í¥œàvÁ.„>¤µÜÆ@4£÷ÎÙ‡@4R꿪š­@3V”@3} ¼ZÃ@3Þi­BÄ@3È;3¯T@3Þi­BÄ@2ßApÂz¶@3Þi­BÄ@2Óµx¯,@8J¨?¬äJ' o£?˜‘psÚ?©Ž˜7#wš?¢ÎQº'?¬¢jT¦ƒ½@8J¨?µŒS«Ô+?¡ö,æÿC?£V%/@6_?²‡5I¾è?°Ê(®ã@8p÷?®ñôæ\…?²3„´º7¾?¨ë[-ä$ÿ?£îï…ä^?¤J^&¶+ @&@"@&@5@5?ð?ð?ð?ð?ðøøøøøøøøøøøøÕ@§ë­V@§ë¤Ý/Ÿ@§ë­V@§ë|64@§ë­V@§ëohÛŒ@§ë­V@§ëf?@§ë­V@§ë A‰7L@§ë­V@§ë{"Ðå`@¥UxQë…@¥UXQë…@¥UxQë…@¥UÎ_p@¥UxQë…@¥Týã¼Ó@¥UxQë…@¥U"ø7´¢@¥UxQë…@¥Uu$Þ@¥UxQë…@¥UH´9X@6Hè§æ@6oiDg8@2À Ä›¥ã@2‰#¢œwš@2RÐå`A‰@2†Â&€@1cÉîËû@1/Š Þ@1cÉîËû@13œ¾ß¥@1cÉîËû@1× -=p¤?¢Æ÷Xê†?¼±¾YÞd?µR¡™&öù?¶a‰]?“”>C,4?˜£µ³ÿ)?¾„CÚ–•F?ÇFû6£ä¿?Êo†™Æ J?Æö|1©Ö?šâ6¿°P?£+ÍNPÞ?ºWHõVÄå?«R²QFÆ?­$°*a„?¥]Ñ=‹Çÿ?†Ü‘ °Ô?ˆCns¥ @@@@@@?ð?ð?ð?ð?ð?ð¿z?Ïñä¿€¸Ô?~k)ž?‘ÑåOß‹@§ë“¸¬@J@¥Uh–ÊY™?–ý¥M†a7? aƒÚ-/U@6? …(@•Q•ïÛñ@Ÿrñ]C£Ê@Ö@¢ü;dZ¬@¢ü<¬1'@¢ü;dZ¬Á.„€@¢ü;dZ¬Á.„€@¢ü;dZ¬Á.„€@¢ü;dZ¬Á.„€@¢ü;dZ¬Á.„€@œ‡Éº^5?@œ‡Ïß;dZ@œ‡Éº^5?Á.„€@œ‡Éº^5?Á.„€@œ‡Éº^5?Á.„€@œ‡Éº^5?Á.„€@œ‡Éº^5?Á.„€@4 Î_oÒ@4ù7c5@0}‘hr° Á.„M‰ûçm@0“t¼jÁ.„QnÙ‡@/#¼ÓZ…ˆÁ.„NÜC,¥@/#¼ÓZ…ˆÁ.„NÜC,¥@/#¼ÓZ…ˆÁ.„NÜC,¥?|Ñb×¶@@8#˜@8¾:@8 >+@8Iç@8Ù?~ì“?ÕÒJ@8Î÷@8i§@8Å@8S@8û—?Ôgl˹@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø×@ @D›¥ãT@ @E`A‰7@ @D›¥ãT@ @F3H+é@ @D›¥ãT@ @FBN‘@ @D›¥ãT@ @E·ù1À@ @D›¥ãT@ @Cm¯»O@ @D›¥ãT@ @Cj=@¤H±&éxÕ@¤H±&C\g@¤H±&éxÕ@¤H±"„@¤H±&éxÕ@¤H°,Ø@¤H±&éxÕ@¤H±o힟@¤H±&éxÕ@¤H±¯Èœ@¤H±&éxÕ@¤H°òl3\@3ò䎊@3e+ÓÄ@-û"Ðå`A@-û ˆ¤~Ð@,´ýó¶E¢@,´·F!;ü@+Aò×t@+Žål—™¦@+Aò×t@+ކil»©@+Aò×t@+Ž“„Þ17?}õ¬#„­?Ó‡V?‘¦ÿ?‹³Q‹Ï‹Í?è³/ï†?¹ÝGIv ?|¬Æ Væ?’ÈI™™?‡ÜIêÉ?4£´k?Í`äÓ@?PGê&¦?‚nÓ3î‰?Œ­Œl³J?‚wyó2uÕ?‚ä CñB ?†‰Î¢ã‡?†‰Î¢ã‡@@,@*@*@8@9?ð?ð?ð?ð?ð?ð¿7§¾X¾öt»€?*Ä·­ìËT?ÈÓÈ÷ @ @D»†«@¤H±!ßî?JŸù|ý¼Y?(QÍ”ß0¿?¢Ý Ó‘cE?^×ZÑß~@Ÿgô8•@Ø@©\(õÂ@©Y‡+@©\(õÂ@©_¼@©\(õÂ@©[šu@©\(õÂ@©d¨ÁTÊ@©\(õÂ@©_ö”F@©\(õÂ@©^ í(@¨õŸQì@¨õÅ¡ÊÀƒ@¨õŸQì@¨õÀuöý#@¨õŸQì@¨õÇï²,@¨õŸQì@¨õĵܯ?@¨õŸQì@¨õĨÁTÊ@¨õŸQì@¨õÂ\(÷@7N쿱[X@7L~($ x@3|í‘hr@3Œ<žì¿±@2×ï²-@2Ü¥zxl"@2cÉîËû@2ba|ÚQ@2cÉîËû@2ct¼j~ú@2cÉîËû@2bˆÎp:ü?€‚ñêã ?•˜Qi{cj?’÷˜–Èä?[d?“¦Æ_ÌdA?“*“žj±»?}Ñ¿ž,?˜Æ&ÀÒ ˆ?’€fç½Î?‘Ò–¬q?–›·†ø?’"(îL?ŒR‹w#z?‘žˆ2}?ƒ/‹ÍY}’?ŽY8Z•?Ž .0åv?—¤“<†›O@@@@@,@(?ð?ð?ð?ð?ð?ð?ZîÏÞ@¿@"^.ð?R]&œ•ªc?"c¼O¢µÆ@©]RÉj@¨õÄ¢²qç?r#0µÂQ?B¢îOŒ¢?ë˜wDönÓ?GÐxº@Ÿf„럳d@Ù@­ÿŸ¾vÈ´@­ÿŸ¾vÈ´@­ÿŸ¾vÈ´@­ÿŸ|í‘h@­ÿŸ¾vÈ´@­ÿ uöý!@­ÿŸ¾vÈ´@­ÿ ªdÂù@­ÿŸ¾vÈ´@­ÿž¸Që…@­ÿŸ¾vÈ´@­ÿŸö”F@§Ê§ï²@§Êffff@§Ê§ï²@§Ê€IR@§Ê§ï²@§Êâ‚@¸@§Ê§ï²@§ÊÏAò@§Ê§ï²@§Ê$Ý/@§Ê§ï²@§ÊæšÓ@5rÃÉîËû@5qò×s@13S÷ÎÙ@13t¼j~ú@0]V”@0]!ÿ.Hè@/̲•éá±@/ÍjOw@/̲•éá±@/ÍBÃÉîÌ@/̲•éá±@/Ì篷é?|¬Çëý ?ß‹’bÏ?‘O‚%c?Œ ßõIyû?‘ ·èf?ý‰w'¬?|öOÿÝ?’,ö´´Ï#?ÀpMºÅ?6) }’ë?‘Ú‚ýc¯?ÐnçK/?ƒÚ@êA²?ŒÖ -ÄȲ?‚Ì ÝŽ‚8?ƒ¦$H?†©b/bJö?ˆk! ¨l@@@@@&@,?ð?ð?ð?ð?ð?ð¿gÀ?È4?à?)Y9{xŠ«?£ÞR–@­ÿŸžËü@§Ê‘ßæ?I0„þC³?6ó‡’…È7?¡*ÑÖžRµ?zòË1èÝZ@Ÿfß+¯¤/@Ú@§®J=p£×@§®KC•@§®J=p£×@§®EÖ8†Y@§®J=p£×@§®IùrG@§®J=p£×@§®Hð@§®J=p£×@§®He”¯O@§®J=p£×@§®C¼ÓZ†@ª>1&éy@ª>´9X@ª>1&éy@ª> Çy¦´@ª>1&éy@ª>:û~‘@ª>1&éy@ª> Òñ©ü@ª>1&éy@ª>Xâ@ª>1&éy@ª>½<6@4½:’£@4¼ú¬Ùè>@2…?|í‘h@2„mÅÖ8†@1éÛ"Ðå`@1çæšÔ,@1…œàu÷@1.Hè§@1…œàu÷@1~ùÛ"Ðæ@1…œàu÷@1~ŠqÞi®?‚á²Olºü?“XMHñëœ?‘e -!ßC?F‘q/b?•bJÖµæÿ?•ï¢Ò®F?}Ñ¿ž,?“oÆ †ä? Dñ£P?‘M –=?•ò±É*³¯?šèkî?‚|׿pY?þxÖ?„+£QKù?ƒ­=aÊw%?‡”_Õ­çW?‡<û¡71@@@@@*@*?ð?ð?ð?ð?ð?ð¿Sýóë ?e8s³B?3ûÜf:ÒD?EQÛEÙ¾b@§®HѦSo@ª> þÏ?R¿'JšÀÆ?dƒLzÅ{?ªT§(ïŸ?ÍAå‰(à@Ÿf à‹ø@Û@«&·KƧð@«&·Oß;@«&·KƧð@«&¶hˆÚò@«&·KƧð@«&±Îd½H@«&·KƧð@«&¥Çi2­@«&·KƧð@«&¤WøP@«&·KƧð@«& ¼Òõ@›r["Ðå`@›r[v³»ƒ@›r["Ðå`@›r[æ\_?@›r["Ðå`@›rg@EB@›r["Ðå`@›ro¡*µÄ@›r["Ðå`@›rYUHaæ@›r["Ðå`@›raþß¶v@5rÃÉîËû@5rÃÉîËû@3.5?|í‘@3*d‡&@2A‰7KÇ@2Š^û¹ùø@2”mÅÖ8†@2„9¨f|Z@2”mÅÖ8†@2…Ø®P*@2”mÅÖ8†@2…ä#=ŽÐ?}õ¬#„­?Ä…"Ð$§?”TÖ—©g?˜SŠá¼Ïd?“ã ’Æüò?˜OIf½^ ?~Ov_Ø­«?’AödûÇ?’>)Skáh?“QX{Q=?’Ö¢GcÙ?”›RÑ¥„J?‚±T¶éA?ŽT?ïö¤?ƒŽ¢5a›&?„5d|ÍÍ ?Š´ýÚ[“®?Ž5# ÉVë@@"@&@(@0@1?ð?ð?ð?ð?ð?ð¿t>«6z@4ÇsüPH@2’ Iº^5@2’ÞÑ·@2€å`A‰7@2„¼¤@1úÔ,<ží@1ýquŽ"@1úÔ,<ží@1ûÀ6âë@1úÔ,<ží@1ûŸU›=?|¬Çëý ?¥nÇx?)?’´ýBI{?‘ÔÌ’h?“´6=‹á{?“‡SË{d—?|¬Çëý ?’Òc§—Ûí?’°æfÅM“?“™*êÅ*?’pP‡È»?“ 3—·²W?‚íWçé„?Ž*JŠË?„ËD(ºp?ƒ­=aÊw%?‡ø¢:›¸1?ˆëÅoë@@@@@,@,?ð?ð?ð?ð?ð?ð¿œïÀ?Âk¾€?*Ì­û»Ä?*æÍ4)@«Çö¬þ@ªR£b5?JP3º:E'?:9¬ú†?ŸM*-{\?~œSÊ^ÏJ@Ÿe×Û’/@Ý@§™™™™š@§™Û"Ðå@§™™™™š@§™™™™š@§™™™™š@§™"Ðå`@§™™™™š@§™…‡“Þ@§™™™™š@§™Çâ‚A@§™™™™š@§™ -à@¦q^¸Që…@¦q^¸Që…@¦q^¸Që…@¦q]Vlô@¦q^¸Që…@¦q^š@¦q^¸Që…@¦q^ÒˆÎp@¦q^¸Që…@¦q_oÒó@¦q^¸Që…@¦q_ò䎊@1µS&Á¾@1µS&Á¾@0®5?|í‘@0®ß¤?åÉ@0 "Ðå`B@0 jçÕfÏ@/£¼ÓZ…ˆ@/¢ø7´¢4@/£¼ÓZ…ˆ@/¢œwškP@/£¼ÓZ…ˆ@/£Š Þ?É_\p)Ï?õ¹Ëh?‘,fŸCô6?Œ‚èõЊ?‘EÉ@Ú?æöæ×t?ÐbMçê_x?’&u÷E»@?£½:…?9ÍÇ~FÀ?‘!U?Ð{Ò?¦QÎð\ã?€bMÕky?ŒÐ¤Âÿê?ƒ<Õp?ƒ†+ Å?†Óß -tõ?‡?®\Âä@@@@@,@,?ð?ð?ð?ð?ð?ð¿Kà7=P??‘àÖÀ?.^AÞdÕî?*/uf§@§™p“1@¦q_X3?==t4W„¹?D|'Ý¡ú?t(+‘ÙØû?°éë@Ÿs¸ä@Þ@¬.¥ãSø@¬.|í‘h@¬.¥ãSø@¬.7´¢4@¬.¥ãSø@¬.!-w@¬.¥ãSø@¬. ûçlŠ@¬.¥ãSø@¬.–»˜È@¬.¥ãSø@¬.v_Ø®@¡¥ŒÌÌÌÍ@¡¥‹Æ§ïŸ@¡¥ŒÌÌÌÍ@¡¥Œç¯¹@¡¥ŒÌÌÌÍ@¡¥V@¡¥ŒÌÌÌÍ@¡¥‹ Iº@¡¥ŒÌÌÌÍ@¡¥ŒÙè>B@¡¥ŒÌÌÌÍ@¡¥‹àÞÒ‰@6«µsê´@6«xFÜ^@1î5?|í‘@1ëC•%@1t“t¼j@1qN;Í5¨@1O „M@1 ÓÃa@@1O „M@1 ¹Œ~($@1O „M@1 ÌÌÌÌÍ?гá‡}?‘+ùÔ!½Š?’ -N»A3?[d?—÷‘Ý<þ­?•ÍÂ^mÄ*?}Ñ¿ž,?“[¡ŽuœÙ?’Qÿc -?‘.“¥?“'ü#šgâ?’]Ðgµ0 -? aBg`­?iT£C~t?„›‹ÖO?ƒv_.^?ˆk! ¨l?ŠÐ+`È“@@@@@,@*?ð?ð?ð?ð?ð?ð¿pEÛ? ~p@?`ÉÃ#¬EH?$ÿ£¾%Â'@¬.™è 7@¡¥‹Ügâ?Íç‰ æ?F9Ñká¹?úF}^•ã‚?”–Á#î@Ÿhe,äÜ@ß@ ðó¶E¡Ë@ ðó¶E¡Ë@ ðó¶E¡Ë@ ðõK-žÞ@ ðó¶E¡Ë@ ðô8… -@ ðó¶E¡Ë@ ðõðh.@ ðó¶E¡Ë@ ðóeâY@ ðó¶E¡Ë@ ðóg©}:@¦'ŠÀƒo@¦'ŠÀƒo@¦'ŠÀƒo@¦'‰½£Õ@¦'ŠÀƒo@¦'‰³Ð|…@¦'ŠÀƒo@¦'ˆ`ÿ–@¦'ŠÀƒo@¦'‡HIôß@¦'ŠÀƒo@¦'‡M1@0°4mÅÖ8@0¯ò䎊r@+ -~ùÛ"Ð@+Ѹƒ@)íOß;dZ@)é_ ¯@(ÿåÉä@(ûšR¤@(ÿåÉä@(ûÀ6âë@(ÿåÉä@(ü¿Ké;?É^ž6õP?¾ èÑÐ{?‘*=³C?‹¶›£òq^?ç)¸Ðïë?¸³eaÙ?ÐbMÝn½?’G˜ie?€m sMµ?0Ú;®yŠ?‘¤§‘éV?¦xЧqÑ?€iLC-É?Œ¬5NW?‚o«E—P~?‚ùÉÃk†?†ÏÅ1C?†™Ì¹UÖP@@@@@2@3?ð?ð?ð?ð?ð?ð¿P ò!S¿;Ñ_Ø?5¹s¯ •?ÝŠ®ûÎÆ@ ðôFÒeY@¦'‡‡{ÆÙ?Dàìg’˃?%§[gÌ.?…mŒ~"b?D-œ’MÅý@Ÿrÿ¤ —s@à@§ÄÂ\(ö@§ÄÂMÒñª@§ÄÂ\(ö@§ÄÒ:)Çz@§ÄÂ\(ö@§ÄÓê³g¡@§ÄÂ\(ö@§Ä䎊qÞ@§ÄÂ\(ö@§ÄÏÒòå@§ÄÂ\(ö@§ÄÙ0¾ ì@«ï A‰7L@«ïŸ¾vÈ´@«ï A‰7L@«ï¡ [À@«ï A‰7L@«ï¡TÉ…ï@«ï A‰7L@«ïž5?|í@«ï A‰7L@«ï–+jçÕ@«ï A‰7L@«ï˜âe+@5?–»˜È@5?ªÍžƒä@1óS÷ÎÙ@1ìPHð@1PA‰7KÇ@1GKƧïž@0𖻘Çã@0á-w1Å@0𖻘Çã@0ß|í‘hs@0𖻘Çã@0á–R½<6?1·†Æjñ?ž5JÜà ä?›õåzI#…?¡¼3Їàæ?¤j_(!ª³?¤ Yâ9>?|¬Çëý ?” Á lŸž?”ß<ö¥?˜8"–•„?£¦–Jn ? ª w³ -?ƒ´],m%@§ÄËD,ú@«ï¹/?€yO-—4½?Ye9 ‹¸q?öÈnWéÈ?²úþ‚_@Ÿa`JC®¥@á@§l¾ùÛ"Ñ@§l¾vÈ´9@§l¾ùÛ"Ñ@§lÊ @§l¾ùÛ"Ñ@§lº¹õY´@§l¾ùÛ"Ñ@§l¼ÓZ…ˆ@§l¾ùÛ"Ñ@§l¸üPH@§l¾ùÛ"Ñ@§lÇE8ï5@«ä0 Ä›¦@«ä0å`Aˆ@«ä0 Ä›¦@«ä2£S'@«ä0 Ä›¦@«ä8­«ŸU@«ä0 Ä›¦@«ä7škP±@«ä0 Ä›¦@«ä.Ëû´@«ä0 Ä›¦@«ä0Hð@7¹Œ~($@7¿HË“@2Ê^5?|í@2ÕS&Á½@297KƧð@2;6z—@1=cˆe”°@1D‡ü¹#£@1=cˆe”°@1B&€IR@1=cˆe”°@16fffff?ˆÿÀ)T¿Æ?”SyÑûê?‘K]Ã4?’\GyÆ©?‘¯GàBm?˜VûAÑž?1·†Æjñ?š8º¶{:? Dñ£P?›|zk?”¿³+L5?•[ÒÛ6¢?˜W|¶DC?êzŽx?’®Üq“¤?ƒžÂâk,?ˆ -¿„r©Ý?’Ì÷y\ÛÎ@@@@@,@,?ð?ð?ð?ð?ð?ð? \@;`¿ô‹€?WýnÌ¡ ¬?F¿€«Ô@§l½ø­ä@«ä0ò·˜?ví$óÄW?hg%_H1m?íqñÞFP»?Ò]l'—-‹@ŸgÀÿJ@â@ªYÎV“@ªYÏ\(õÄ@ªYÎV“@ªYÑÂê¡3@ªYÎV“@ªYÒÿljÈ@ªYÎV“@ªYÚ„Làˆ@ªYÎV“@ªYÕ½©\@ªYÎV“@ªYÕ¡ °@”Ù·KƧð@”Ù³3333@”Ù·KƧð@”Ùµ•þÚf@”Ù·KƧð@”Ùµ«Ž{>@”Ù·KƧð@”Ù¾“@‹`@”Ù·KƧð@”ÙµÝéQÀ@”Ù·KƧð@”Ùº,ÿ%L@3ºqÞi­C@3´ƒs9?Þ@1žÙ‡+@1ä<.Ì?@1A‰7KÇ@1Œ¥U@1mÅÖ8†@1V¾u`@1mÅÖ8†@1]lñ¯:@1mÅÖ8†@1@ŽˆÁ?}@T˜ÁÎ¥?ã˜Pnx™?‘Kg(^Õ…?Œ¦¡«@5òÃÉîËû@5ó× -=p¤@2áhr° Ä@2àªdÂø8@2q‰7Kƨ@2pù k¹Œ@20–»˜Çã@2.Ov_Ø®@20–»˜Çã@20¸ºÇ@20–»˜Çã@2/iDg8?€‚ñêã ?‘" Á°–•?•Œ–?ö€(tUo?“ϲšI?’j•×›b?|öOÿÝ?“RƒwS5?”Ï3½fvI?‘W×ý°A?•=ƒ™íx?“½w¢8…?ƒÚ@êA²?ŽõÕJ?…íŽ(þÇ?ƒ­=aÊw%?“áêqú ?‰G±±ZÎ@@@@@,@&?ð?ð?ð?ð?ð?ð?J;#Âð¿[ ¢@?SA%ûvÔ? —ïÌØ@@¯€Z‡†ø˜@¢:±J)×?s/‡=Ü?@• 0šÃ"?ïx€I&v?†Ø‰¹7²#@Ÿfg -´!Ï@æ@­ü A‰7L@­ü ƒn™@­ü A‰7L@­ü!–R½<@­ü A‰7L@­ü!TÉ…ð@­ü A‰7L@­ü"h Ô•@­ü A‰7L@­üÒˆÎo@­ü A‰7L@­üö”G@¤™¥ãS÷Ï@¤™¥ãS÷Ï@¤™¥ãS÷Ï@¤™¦ -¦L0@¤™¥ãS÷Ï@¤™¥”¯O@¤™¥ãS÷Ï@¤™¦L/ƒ{@¤™¥ãS÷Ï@¤™¦YJôñ@¤™¥ãS÷Ï@¤™¥ðoiE@0­¥œàv@0­žƒä%¯@*½²-V@*½—ö+jç@*/ß;dZ@*/ß;dZ@)Aò×t@)4Ö¡aæ@)Aò×t@)Aò×t@)Aò×t@)'»/ìW?É^³Dw'?Ï[äe(@@@@@*@,?ð?ð?ð?ð?ð?ð¿Y„–Œ¿"„Òà?Bt˜÷Q/à?² lrÇ@­ü U @¤™¦5:k?Q¾÷“‡àÊ?&<ÕX u?žçHR_ ?E±§=%@ŸsZW"@ç@§\±&éxÕ@§\°å`A‰@§\±&éxÕÁ.„€@§\±&éxÕÁ.„€@§\±&éxÕÁ.„€@§\±&éxÕÁ.„€@§\±&éxÕÁ.„€@¨Ý["Ðå`@¨Ý`ƒn˜@¨Ý["Ðå`Á.„€@¨Ý["Ðå`Á.„€@¨Ý["Ðå`Á.„€@¨Ý["Ðå`Á.„€@¨Ý["Ðå`Á.„€@7ý:’£@7ûƧï²@3T›¥ãSøÁ.„M‰ûçm@2¾V“uÁ.„QnÙ‡@2s&Á½¥Á.„NÜC,¥@2s&Á½¥Á.„NÜC,¥@2s&Á½¥Á.„NÜC,¥?š•§q!U@8#˜@8¾:@8 >+@8Iç@8Ù?žˆ2}@8Î÷@8i§@8Å@8S@8û—?œó}?ð@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøè@¯f‰º^5?Á.„€@¯f‰º^5?@¯fHÛ‹¬r@¯f‰º^5?@¯f-à q@¯f‰º^5?@¯fXl"h -@¯f‰º^5?@¯f=ŠÚ¹õ@¯f‰º^5?@¯fA×Ûô‡@ Ç‡+Á.„€@ Ç‡+@ Ça [À@ Ç‡+@ Çbœwšk@ Ç‡+@ ÇHÎp:û@ Ç‡+@ ÇB Iº^@ Ç‡+@ ÇHŒç±@9 ØDЩÁ.„>¤µÜÆ@3¦‡+ J@3}!ÿ.Hè@3“t¼j@2Ó¯·éù@1õµsê³h@1Ë"Ðå`B@1õµsê³h@1ÊŸ¾vÈ´@1õµsê³h@1Ǔݗö,@8J¨?%¼ÇÆÃ±?³%bŽIßö?§ƒü¾^Zè?§ö̺Œ ‘?©FÔbú%i@8J¨?œîµƒ”?±£çí-Ò?©ëü6Ûù?¢ºã‘~]¦?ªÐ~ªèNO@8p÷?—E!Üý·'?‘c‚ׯ?'dÂã—…?y½¼ŸŽ?–Mí\{WÐ@@@@*@&?ð?ð?ð?ð?ðøøøøøøøøøøøøé@¢è<í‘hs@¢è=—Q%Ö@¢è<í‘hs@¢èRFÖä]@¢è<í‘hs@¢èh‰…ªe@¢è<í‘hs@¢èX6}-7@¢è<í‘hs@¢è;+3]@¢è<í‘hs@¢èD Bè@•<ì‹C•@•<öÈ´9Y@•<ì‹C•@•<Ü©YœÍ@•<ì‹C•@•<·ÑÏ6@•<ì‹C•@•<¯ëfµU@•<ì‹C•@•<{yç($@•<ì‹C•@•<Âçy‡@55S&Á¾@53B¡±@2¦‡+ J@2±ÅÁzv@2lj~ùÛ#@2U›%Ë@2._oÒ @2®ôÁ=Û@2._oÒ @2-JÕAþ`@2._oÒ @2/"X 6?€Z=ú‚¡?—‚V3ò?¥Ä\ÔKÞú?Œ &ŽËÕ~?œÙè¯ ?£Jü.h‹7?|Ñb×¶@?—Œ6x©?¡íO‰Ú¬?Þünž?¦×›—÷¯? ¿ž›öþ?…9Ž2j¸Ó?—2Yö&µÙ?¤»)òüH?£Z¬QÕ§?¨ý ìãª?¦WŒçµ¾@@,@(@@;@:?ð?ð?ð?ð?ð?ð?rëp•C¿„›u­@?pð¼DWvÏ?kÖX²K:@¢èFð¥·%@•<Óšÿ„?‹hày=ç8?‡°FzN@îÌø ú@ËŸ…’@Ÿbû”_¥ç@ê@©ËA$Ý/Á.„€@©ËA$Ý/@©Ë'>ýìñ@©ËA$Ý/@©Ë¤¶ïÛ@©ËA$Ý/@©Ë›H·Œ@©ËA$Ý/@©ËE†Ú @©ËA$Ý/@©Ë¾@”áG®{Á.„€@”áG®{@”è~F@”áG®{@”{OÎ@@”áG®{@”[ï2ò @”áG®{@”þ¶«2W@”áG®{@”u¤µÜÆ@4é‡+ @4©†âÕ­@46§ï²-@3ýAŠ«Ô@3uµsê³h@3>RÛÖbo@3uµsê³h@3b¼Pܘâ@3uµsê³h@3•Æ\»¸t@8J¨?¢h/E?¿ý™@Å -?¼[ü9Å??ž¼mÄC?Ÿýv•”Cá@8J¨?«p…t4¹?½H$/걺?¼¯†Rf?ŸÞ19:ñ?žV›N4LM@8p÷?”åè¿ÐtÐ?—¡“I&a?Âò÷2°?‘zÎö'?Ù¦SqUm@$@,@*@7@5?ð?ð?ð?ð?ðøøøøøøøøøøøøë@©LÚ¬1@©LÓÖ¹Â@©LÚ¬1@©L‰1¡½Ì@©LÚ¬1@©L 2ܶ@©LÚ¬1@©LÚÓœg{@©LÚ¬1@©LÕÐ¥Þ¢@©LÚ¬1@©LÑØ‹Îš@˜çQë…¸@˜çX‰_ 8@˜çQë…¸@˜çp¤c›Ú@˜çQë…¸@˜æàÏVÂ@˜çQë…¸@˜çý]œ~@˜çQë…¸@˜æà¼ß"Þ@˜çQë…¸@˜æÑ•šÞ«@8£g ù l@8ŽÈ¯€Ý…@4#÷ÎÙ‡@4(oä8ÏÐ@3´“t¼j@3ÁOì1 @2¦YJôðØ@2°‚/Ìþ@2¦YJôðØ@2¦~sÿŠ@2¦YJôðØ@2¦Õ«ýà?²£ád_) ?šBÄ|3?¥LÆWôÈ ?”–ù0¹? N~ãb?›7 -ü®8¸?}x—™¥·?|¬Æ Væ?Jå9ÞB»?–tT|Ø2?¦ê!s’6?–Í®E41?‘¸^ªý­?|¬h2:“?’|4c¦ì+?‘Ó!*Í?VÇEÒ,–?•îõ›Ï=?‘—^ _?‚¾<æËS?Œ°£ÂŠ?‚›M$:£»?ƒáîLÀ?ˆª„Ée_:?‰jÕY%Â@@"@$@*@7@0?ð?ð?ð?ð?ð?ð?cžJ¿aâê+?Y›¡…öÏŒ?+wƒ+è@ ŸY–M9!@¢.xi„“?za«4ÙÿÎ?Kùd†~9ä?û;ÿ¤øö? ]'ý=@ŸeSžË¸@ï@¬_X“t¼j@¬_WKƧð@¬_X“t¼jÁ.„€@¬_X“t¼jÁ.„€@¬_X“t¼jÁ.„€@¬_X“t¼jÁ.„€@¬_X“t¼jÁ.„€@¯pšŸ¾vÉ@¯p™Û"Ðä@¯pšŸ¾vÉÁ.„€@¯pšŸ¾vÉÁ.„€@¯pšŸ¾vÉÁ.„€@¯pšŸ¾vÉÁ.„€@¯pšŸ¾vÉÁ.„€@5=:’£@5; Iº^@1 í‘hr°Á.„M‰ûçm@0Ct¼j~úÁ.„QnÙ‡@0 ¿±[W?Á.„NÜC,¥@0 ¿±[W?Á.„NÜC,¥@0 ¿±[W?Á.„NÜC,¥?1·†Æjñ@8#˜@8¾:@8 >+@8Iç@8Ù?1·†Æjñ@8Î÷@8i§@8Å@8S@8û—?ƒmÕ+&¬‰@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøð@­ò° Äœ@­áG®@­ò° Äœ@­ì²æ@­ò° Äœ@­öйµ@­ò° Äœ@­Þ 5Oi@­ò° Äœ@­èmÆíš@­ò° Äœ@­â‰(æ@—Ô>vÈ´9@—ÔMOß;d@—Ô>vÈ´9@—ÔvÈ´9@—Ô$<c@—Ô>vÈ´9@—Ô6i-Ô„@—Ô>vÈ´9@—Ô8hq@—Ô>vÈ´9@—Ô!Î -_g@8ºqÞi­C@8±TÉ…ðp@4Ò Iº^5@4鞦½:õ@4)Û"Ðå`@4EØÞ½@3‡ ù kº@3›ü‘ÛU@3‡ ù kº@3œ?)ðL¼@3‡ ù kº@3—¥YñÌU?æ ç«Z–?”Ç-$ž‰?•° J0Á?µ TKF?œ‰j6‹ª?›Y1×ðz?æ ç«Z–?˜ñÎXw8Ç?•4 ´m?‘16yÄ?œMQ¡eá¥?–DtÛ±T?æ¡‚á¾A?†jÊ&?†˜M­Õ?“ÀˆoÁt?”1¬3C1Ú?›°{0+@@(@ @ @:@8?ð?ð?ð?ð?ð?ð?gotlg¿p{%6·à?bÌ–Õ?]Ê G݉@­á£%|å@—Ô0U#&0?qñúlÓkj?m­R¥}?ÐwÆàBÑÕ?Ç‘½*¯Ê@Ÿr)VZƒ@ñ@¤Ìú^5?}@¤ÌúáG®@¤Ìú^5?}@¤Ìúû~‘@¤Ìú^5?}@¤Ìû²þÅm@¤Ìú^5?}@¤ÌúáG®@¤Ìú^5?}@¤Ìùe+ÓÃ@¤Ìú^5?}@¤ÌùŒ~($@ª?|í‘h@ª?¾vÈ´@ª?|í‘h@ª?|í‘h@ª?|í‘h@ª?|í‘h@ª?|í‘h@ª?HË’@ª?|í‘h@ª?b¶®}@ª?|í‘h@ª?.Hè§@3ÞHè§æ@3ÞHè§æ@00Ä›¥ãT@00ÿ—$tT@0$¼j~ùÛ@0$Âø7´¢@/åÉä@/Š Þ@/åÉä@/€ qu@/åÉä@/€6âë?}Ñ¿ž,?Òç{íj?‘,fŸCô6?ŒArUã@?‘ ·èf?ø·-/ge?|öOÿÝ?’NÛˆV(?‘N÷J’?Y‡…—Ø?ñ«Ý„ Õ?›ªU3Îp?‚q6tNø6?Œ».êxóÚ?‚Ö˜>µDá?‚ìxqC?†¯Mž684?†©b/bJö@@@@@*@,?ð?ð?ð?ð?ð?ð¿1?æ-п±T À?ìÄå¬>ø’ʃk@¤Ìú^åP@ª?|d{?>½P´¢Qð?üÂöˆ›6?ˆá(”æ#r??åþ­Uä@Ÿg -@ò@¢N×i[@?BÐ3 [@¤?)«§lINš@¢N< ŽÐò@¢f²fWØÑ?^ëö+H¬º?MœÝOY8ß?¶ Ç)™p?œOÞhÁå@Ÿkóí6Ž@ó@£JÌÌÌÌÍ@£JÐbMÒò@£JÌÌÌÌÍ@£JÈ´9X@£JÌÌÌÌÍ@£JÎ!–R½@£JÌÌÌÌÍ@£JË'»/@£JÌÌÌÌÍ@£J˹Œ~(@£JÌÌÌÌÍ@£JËÓÃa@©ŸÁ‰7KÇ@©Ÿ¯ß;dZ@©ŸÁ‰7KÇ@©ŸÁ$Ý/@©ŸÁ‰7KÇ@©ŸÁ£n.²@©ŸÁ‰7KÇ@©ŸÆ1ø ‘@©ŸÁ‰7KÇ@©Ÿºû~‘@©ŸÁ‰7KÇ@©ŸÄ“t¼@8^Hè§æ@8Xšu%F@3xr° Äœ@3|L˜_@2‹"Ðå`B@2\(õÂ@2ý!ÿ.I@2 k¹Œ~@2ý!ÿ.I@2Ov`@2ý!ÿ.I@2RT`ªe?“Æ×q„nï?dYûë„{?’‹»Ùï§?‘c[=î#©?“êôÉøX?‘Û.Yrî?„F/·ÿP5?’ ,øÕC©?‘ú-8ûõö?•Xî¨}iQ?•nW*Ø„?’?;Áƒè?…/‡ÙX·²?‘žˆ2}?ˆAᆽÃí?‘l_zU’Ý?Ž .0åv?^^ω•@@@@@(@$?ð?ð?ð?ð?ð?ð¿M¬˜ `?p´¡Z??’‰Å3l?Xþ±%t2Z@£JÌÍ^:Ä@©Ÿ»éhçÜ?\§ÖJ¬?|&Þ))ÿõ?±ÝFÙöÇ?õ]Oò­@Ÿk\Ù¿ªº@ô@¡†ùXbN@¡†ùXbN@¡†ùXbN@¡†ùb¶®@¡†ùXbN@¡†úCþ\’@¡†ùXbN@¡†úxl"h@¡†ùXbN@¡†õÂ\)@¡†ùXbN@¡†õ*™1@¬[¶E¡ÊÁ@¬[¶E¡ÊÁ@¬[¶E¡ÊÁ@¬[´ýó¶F@¬[¶E¡ÊÁ@¬[µÂ\)@¬[¶E¡ÊÁ@¬[µ?|í‘@¬[¶E¡ÊÁ@¬[·Xâ@¬[¶E¡ÊÁ@¬[´¢3œ@4” xFÜ@4”êJŒ@1›¥ãSø@1Fs×Ü@0"-V@0!œàuöý@0._oÒ @0,ÌÌÌÌÍ@0._oÒ @0+ÓÃaA@0._oÒ @0+Ƨï³?}Ñ¿ž,?Ï[äe_«9º^?-/3ÍrD­@¡†ø'q½J@¬[µæuo?^.¬Ws;Ÿ?MÎ8ët?Çúÿ^ªGÒ?¦ÜoçБD@ŸgF(˜n@õ@¯ î—Oß@¯ õÂ\)@¯ î—Oß@¯ îŸâ¾@¯ î—Oß@¯ ðA‰7M@¯ î—Oß@¯ ¾Þ@¯ î—Oß@¯ îþý‡…@¯ î—Oß@¯ ï­Fæ@–JšŸ¾vÉ@–J˜bMÓ@–JšŸ¾vÉ@–J™²ªª@–JšŸ¾vÉ@–JœZÖ\6@–JšŸ¾vÉ@–J–¤¨Ç@–JšŸ¾vÉ@–J—[ò]D@–JšŸ¾vÉ@–J˜F“5@7 ØDЩ@7ùŽsnN@2¸r° Äœ@2¹4³•ë@1þV“u@1þ¡rÎêÛ@1‘Þi­BÄ@1’b˧2à@1‘Þi­BÄ@1“gâê@1‘Þi­BÄ@1“8ñ3ž>?€‘gQÚÃ?ûœûþSÁ?‘MV4½*-?¤xŒ|‰?‘4zùu'¦W½ù›?ÛŒqn‡j@¯ ñ‘%Íi@–J—·ç§ï?^Î -ij?9P-m ˜M?ÅÇÔ{I,?y®1ÚW@"@ŸhGL œÙ@ö@Ÿ`¸Që…@Ÿ`¸¥Î[B@Ÿ`¸Që…@Ÿ`º¯Õês@Ÿ`¸Që…@Ÿ`»帶@Ÿ`¸Që…@Ÿ`¼vZ\@Ÿ`¸Që…@Ÿ`µW&ŠÓ@Ÿ`¸Që…@Ÿ`µŒGà¨@£¦4¼j~ú@£¦4¼j~ú@£¦4¼j~ú@£¦3¶â{@£¦4¼j~ú@£¦4‡E{@£¦4¼j~ú@£¦4¼n8[@£¦4¼j~ú@£¦4azá)@£¦4¼j~ú@£¦4wÉæâ@3 ]cˆe”@3 ñ >(@/ÂÐå`A‰@/ÂGE8ï4@- ƒn—@- G+™àÅ@-Ǔݗö,@-Ç&%Sž@-Ǔݗö,@-Ç%ÃÞç‚@-Ǔݗö,@-ÇO¨ ?~Ov_Ø­«?Ù:¶’?‘*£[Êúu¯÷Æ¥ó@Ÿ`¸I?Ob@£¦45+°?Y2 íƒÞ¯œ¤ ?7x\Á0?4†pkÈ>÷.W7ì1)@©4jÒ{=@®C@¸?T€k­?ÚáFά¾?³?LÃ×af?8ÓZ矣@Ÿh\†ê¯ö@ù@®œ—Oß;@®œŠ~ùÛ$@®œ—Oß;@®œž\‘ÑM@®œ—Oß;@®œ¶¡aä÷@®œ—Oß;@®œ±Ä2ÊX@®œ—Oß;@®œ±A [À@®œ—Oß;@®œÔ¢3œ@©·ÎÙ‡@©°bMÒò@©·ÎÙ‡@©©ûçl‹@©·ÎÙ‡@©U¨Xy>@©·ÎÙ‡@©xl"h -@©·ÎÙ‡@©Ë’:*@©·ÎÙ‡@©q©ûçm@8*0U2b@8 ú¬Ùè>@3©‡+ @3¤!-w2@3y7KƧð@3kÚQÎ@2…œàu÷@2~vÈ´9X@2…œàu÷@2zu%F -@2…œàu÷@2l‘ÑN;Î?˜ž^ƒÿ*ˆ?“vuØcʲ?«/b²›?¨˜-£ÔiÉ?ŸrA:/™?¤w€ùŸb@?1·†Æjñ?’HGªÂÛ^?ÁwKëvþ‹?¦-ÒM—?£ƒwž{_?¾n%м!?…àú^À?ŽÎ"”`ù…?•@K/Ù{?…®×__C?‘éXñ„–†?Ÿ/Òѯ¢@@@@@&@*?ð?ð?ð?ð?ð?ð?‰íäS‘€¿A}ã@?e¬àÕFŽ?fÛ-Ï3@®œ¢RÁ@©”ªHHü?† -4~:Ì?„Éí¤²?ì×:÷¤?êzy ô°@Ÿdÿ‚–\@ú@®|n—P@®|n—P@®|n—P@®|t¼j@®|n—P@®|÷ÎÙ@®|n—P@®|Ãa@@®|n—P@®|&éxÕ@®|n—P@®|&éxÕ@ŸÆ33333@ŸÆ3¶E¡Ì@ŸÆ33333@ŸÆ2×s@ŸÆ33333@ŸÆ2{²þÅ@ŸÆ33333@ŸÆ2-V@ŸÆ33333@ŸÆ2×s@ŸÆ33333@ŸÆ2a|Ú@.¨ð¸@.¨ð¸@,¤“t¼j@,£ñA [À@,wOß;d@,w§†Â&@+p‰ 'RU@+p–»˜Çã@+p‰ 'RU@+poiDg9@+p‰ 'RU@+p|„µÜÇ?É^žQ5P‚?Ï[äe(?†–f_ÔŠŠ@@@@@,@*?ð?ð?ð?ð?ð?ð¿S€þD?¾’@?9d¥«»Xc?1àÙ•éB@®|4ƒçš@ŸÆ24æR?HebÜ‘¿?î2K Ä? ×V%4T?% `Ú3j@Ÿs ;*S@û@¥pÎV“@¥pÎzáI@¥pÎV“@¥pÌIº^4@¥pÎV“@¥pË Iº@¥pÎV“@¥pÊ=p£×@¥pÎV“@¥p¼j~ùÚ@¥pÎV“@¥p®Ëûµ@¥sò-V@¥sò-V@¥sò-V@¥sò×sü@¥sò-V@¥söâëC@¥sò-V@¥sô,<žî@¥sò-V@¥sðØDÐ@¥sò-V@¥sòa|Ù@4[¹Œ~($@4[]ÌcñA@1Ìí‘hr°@1Ì£n.²@1çKƧïž@1å '»0@1(è§æ›@1'Ûô‡ü¹@1(è§æ›@1b¶®}W@1(è§æ›@1<64?|öOÿÝ?‡åƒêM?“1‘´¹V?ŽwX/8?—.‰†5¸€?°‚ªaÚõ1?}Ñ¿ž,?’Dê™.x?‘c–…•#$?‘ݤ`Ìh?™=M÷‹¸?›7Î&Tß+?‚yî8Á#?îŠõ ?‰6~„æAÕ?†Á{0Ÿà®?™ þg¿?—¤“<†›O@@@@@ @,?ð?ð?ð?ð?ð?ð¿kC&p?ÌaÆ ?VÚ“kó­™?64‚{e{@¥pÉ †}@¥sònœn'?r/Ñߢ?SL»ø›P?è»Hɾ¥.?¬™½ùY!@Ÿb´ýôÉ@ü@« Ƨïž@«9Xb@« Ƨïž@«Ä2ÊX@« Ƨïž@«)xÔýô@« Ƨïž@«Hð@« Ƨïž@«y¦µ @« Ƨïž@« "h Õ@®Îu?|í‘@®Îqhr° @®Îu?|í‘@®ÎaG®{@®Îu?|í‘@®ÎxQë…@®Îu?|í‘@®Îusê³h@®Îu?|í‘@®ÎhÁTÉ…@®Îu?|í‘@®Î±[W>@8m¥œàv@8h Ô•*@5û Iº^@5òe+ÓÃ@5{Ƨï²@5~cŠ @4hè§æ›@4kC,¥{@4hè§æ›@4h_ö”G@4hè§æ›@4k/ìVÕÐ?˜ž^ƒÿ*ˆ?›äÄö/>?ñAaú[?¡gÙµ¡V?™¼wX¬?žc¬+:X£?ª[Xxöp?š˜‡þCî·?”ÿŒÙÿIí?”J6bº? á>G]!?žƒ2¶Í¾?¤ GÍ0µò?²¦Î^Î?Ÿ•"x*=k?Ÿ¿8ÖÌk4?£9jé jh?“ )D)@@@@@@?ð?ð?ð?ð?ð?ð¿bšàr"?^òø9ž?O{Jï0Šà?n¥p°ëta@« -QÅI@®Îtå–i?nàKÁ?ƒ­Ó< t?Âæ{ÃIìÀ?ítjÈ%up@ŸnœE¿%@ý@¦‘ Iº^@¦‘ Iº^@¦‘ Iº^@¦‘Ê @¦‘ Iº^@¦‘Ã9Àëî@¦‘ Iº^@¦‘Áò×s@¦‘ Iº^@¦‘Á–R½<@¦‘ Iº^@¦‘À4mÅÖ@­ò:^5?}@­ò:^5?}@­ò:^5?}@­ò;quŽ"@­ò:^5?}@­ò;"Ðå`@­ò:^5?}@­ò9™™™š@­ò:^5?}@­ò:kP°ñ@­ò:^5?}@­ò8*™0¾@3ÉÎ_oÒ@3ÉÇy¦µ @0|í‘hr@0Aò×r@/´ýó¶E¢@/´¢3œÀ@/…oi@/„µÜÆ?@/…oi@/„ohÜ@/…oi@/‚&€IR?}Ñ¿ž,?/³)sšÌ?‘.Ò®ó_ ?‹¹GüÞõ?‘K!UéÄŒ?ïˆ6ÏJ?|¬Çëý ?’[ KÄ0R?‘N÷J’?9ÍÇ~FÀ?øóéM Ÿ?‘Qïʾ?‚Ÿ JŠÅ?ŒÐ¤Âÿê?‚Ÿ JŠÆ?ƒ*|š\/´?†£îž«î?‡ã ËÄž@@@@@,@*?ð?ð?ð?ð?ð?ð¿0 kïh¿27"? 劓9`«?'?”"éã/åY@@@@@,@&?ð?ð?ð?ð?ð?ð?aKéTø¿X„Ÿ˜8?I:âå²µZ?U D]td@¨GþÇ@ª¤·Ø .•?hôÙ‡?u.A´ Š?Ù3ŽE`Ä?ï9—ÏyO@ŸeèM-äç@@«hH1&éy@«h;çl‹E@«hH1&éy@«hE¼£n@«hH1&éy@«hHŒç°@«hH1&éy@«hHè§æ@«hH1&éy@«hG_oÒ@«hH1&éy@«hG“Ý—ö@§’n—P@§ŒIº^5@§’n—P@§ŽóMj@§’n—P@§:û~@§’n—P@§bMÒò@§’n—P@§‘ø .@§’n—P@§‘&éxÕ@6[¹Œ~($@6M¿HË’@2+ Iº@2§ï²-@0ö§ï²-@0öâëC-@0n_oÒ @0nÑ·Z@0n_oÒ @0n í(Œæ@0n_oÒ @0mæšÔ,=?¥Ìõ}êáþ?W[†?‘ùé éµ??Œݶ\ñr?‘héø†|?‘W_Ì?3ßa=„?’[ KÄ0R?‘,­æ& -\?>\‰å‘?‘x9ξÞO?oÌ‘'ýT?¸gE³=`?ŒïQ¼º“ã?‚ù…žÄ`x?ƒ ?ÿ½?†Óß -tõ?†µ°jÆÃ@@@@@,@&?ð?ð?ð?ð?ð?ð?L>RÔ?Qé.º?Vsì™®“e?3£”bÝ@«hGYä·@§U]S‹?kåõÔ9õ?RCJ\Ð|?ÑNÔŠ$»?£ï õ@Ÿom2ô(@@¯†âMÒñª@¯†ãn—@¯†âMÒñª@¯†âaÛ@¯†âMÒñª@¯†áT•b¦@¯†âMÒñª@¯†ã3ÄÐD@¯†âMÒñª@¯†á†ýT@¯†âMÒñª@¯†áÞi­B@—JQë…¸@—JRñ©ûç@—JQë…¸@—JS§¬»@—JQë…¸@—JS´ É«@—JQë…¸@—JQ Ʊ@—JQë…¸@—JNpç®@—JQë…¸@—JR´²é7@5|ÚQ@5LÑÃÈ@1°Ä›¥ãT@1°+9k=@11‰7Kƨ@11bˆ¾‘@0¦YJôðØ@0¦9KRØð@0¦YJôðØ@0¦Tã§§Ö@0¦YJôðØ@0¦u]M?|Ñb×¶@?ˆå;¬?‘(ã[0?‹ØÆ|€Ñ?‘'ÓI¤­'?磮Rã?|¬h2:“?’,9B?‡jz©®?nŸ„“í-?‘E¹=:ä?g©e\‰ª?ƒ™°oÁR?ŒÃ®“”‹!?‚ª}ö¥_Ø?ƒ9Ãdk?†Î ž 3?†¥š{Ó)@@&@$@(@<@6?ð?ð?ð?ð?ð?ð¿0¬ªP¿,Çx²˜?!Ñ<žhE?+¥Œz{ßµ@¯†â›Nȳ@—JQâžvP?A³ª/§¿w?L+ÒPäØ?ï|üå””?¤N'g@Ÿfåñïv÷@@®ü -Àƒo@®ü  Iº@®ü -Àƒo@®ü ¬q ²@®ü -Àƒo@®ü ‹C•€@®ü -Àƒo@®ü -çÕfÐ@®ü -Àƒo@®ü ûçl‹@®ü -Àƒo@®ü -ŒL˜@Ÿ¡‚ Iº^@Ÿ¡‚ Iº^@Ÿ¡‚ Iº^@Ÿ¡×Ûô‰@Ÿ¡‚ Iº^@Ÿ¡~Åm\ü@Ÿ¡‚ Iº^@Ÿ¡‚Zîc @Ÿ¡‚ Iº^@Ÿ¡‚&€I@Ÿ¡‚ Iº^@Ÿ¡½¥ž@3ãg ù l@3㜾ߤ@1°Ä›¥ãT@1±4êJŒ@1U`A‰7L@1U¼£n/@0«xFÜ^@0¬1&éy@0«xFÜ^@0«¹Œ~($@0«xFÜ^@0«Í5¨Xz?|öOÿÝ?Úþþ³?‘Š©Nà¶?ŒvHn&³?‘ñ•/m£{?‘/¹ß…?}Ñ¿ž,?’u¦ieõ–?‘Ña„>&?‘tÄdªE·?‘c3¸cÜ(?–’+¸¢d?‚yî8Á#?ŒïQ¼º“ã?‚ù…žÄ`x?ƒ*|š\/´?†ïRÉv‘Ñ?†Óß -tõ@@@@@,@,?ð?ð?ð?ð?ð?ð¿!zïíà¾áö5E?T™–™ß>üæÆi:Î@®ü -»¢ž@Ÿ¡‚ -LÚ?3‡Ð¹ý*‘?“›ãBb?sÇí?¼@¨?EmI‹kœœ@Ÿfâî¶å¨@@¦/†§ï²@¦/†}þ2Ÿ@¦/†§ï²@¦/ˆksý@¦/†§ï²@¦/‹1ðº@¦/†§ï²@¦/ŠžÃö©@¦/†§ï²@¦/‹Š\å´@¦/†§ï²@¦/Š ¡ô±@”ÉÅ¡ÊÀƒ@”ɳs··@”ÉÅ¡ÊÀƒ@”ÉÊר©@”ÉÅ¡ÊÀƒ@”ÉјzŽ@”ÉÅ¡ÊÀƒ@”ÉÖêØ*©@”ÉÅ¡ÊÀƒ@”ÉÚQ°@”ÉÅ¡ÊÀƒ@”ÉÛ.ÜÌé@3 ØDЩ@3‘@N¤©@1=‘hr° @19àxþ÷C@0Ãt¼j~ú@0À(wg’@0._oÒ @0-z;aô:@0._oÒ @0*¦{©•@0._oÒ @0*yèQ?~Ov_Ø­«?‘l£¯(?“rðÖÞ[?‹õ(¸#×O?’>XÇ`Ÿ?‘[PPî;€ A@“^Ý/Ÿ¾@“^Üíˆ7 -@“^Ý/Ÿ¾@“^ÜÞq¾'@“^Ý/Ÿ¾@“^Ü]úà@-ÛJ#9Àì@-ÛJ#9Àì@,A‰7KÆ@,4îÔ ù@+º¬1'@+¹Û"Ðåa@+åÉä@+d·Ýõ¹@+åÉä@+\(õÂ@+åÉä@+f¹ n?É^ž6õP?¾ jžÍ?‘ÛÙ@?‹¯@y¥[?ëŒE>)¨?³âÒŶ?ÐbQë„›¦?’ÕB“ºÿ?…!.ð$w?5e’Òåi?аì¶?Iâo®É?€bMÕ]f?Œ¬6H^4Ð?‚pã®MG?‚è$: ¦œ?†Š%ip¹-?†Œîa€@@@(@*@8@4?ð?ð?ð?ð?ð?ð¿P¯ð¿'k‡ì?6¿ÎÅLv?CPoÎÚÂ@®:¢ß @“^ܨNe?E:Ùˆ´I?":ëÕ9íò?†*Œ—×Íø?=0I”ù0@Ÿs žZMø@@®¤~ùÛ"Ñ@®¤€@®¤~ùÛ"Ñ@®¤~쿱[@®¤~ùÛ"Ñ@®¤HË’@®¤~ùÛ"Ñ@®¤G®{@®¤~ùÛ"Ñ@®¤}IQ‚ª@®¤~ùÛ"Ñ@®¤}Vlô @§m¦ffff@§m¥¡ÊÀƒ@§m¦ffff@§m¢ÃÉîÌ@§m¦ffff@§m¢‚@·@§m¦ffff@§m¤tSŽó@§m¦ffff@§m£n—@§m¦ffff@§m£¢œwš@5¨†YJôñ@5¨†YJôð@2n5?|í‘@2l²•éá°@2“t¼@24êJ@1œàu÷@1ÞÑ·@1œàu÷@1Ð|„µÝ@1œàu÷@1¼ÓZ…ˆ?}Ñ¿ž,?òb[±?’#ç}iïë?‹ÝÉ!ë#?’ÒuèçxY?‘W×ý°A?1·†Æjñ?’¼MÒÀ7F?’Q½£a C?RLnj?‘®7Ö=^9?‘A_f;j?‚† SFñ?Žâç.¡È?‡š¿]b?„XïWÉò~?‡…¤$Ó?†ïRÉv‘Ñ@@@@@*@,?ð?ð?ð?ð?ð?ð¿;Oü¿?±)ˆ?9·‡÷øV?y çCH@®¤VìQõ@§m¤Ÿ3 ?Y,ôåÆ?9Ð,%Þ„?ÀOzþ•Æ?|–Y«1R@Ÿgæc’@@®“t9Xb@®“z¬1@®“t9Xb@®“týó¶G@®“t9Xb@®“{/ìV×@®“t9Xb@®“uÂ\)@®“t9Xb@®“vâëC@®“t9Xb@®“×Ûôˆ@¬k=p£× -@¬k9XbN@¬k=p£× -@¬kA-w1@¬k=p£× -@¬k:¬Ùè>@¬k=p£× -@¬k=²-V@¬k=p£× -@¬k:–¼@¬k=p£× -@¬k6R½<6@72ÃÉîËû@71ÑN;Í6@2…?|í‘h@2†z–¼@2>V“u@2?·éùr@1‡ ù kº@1ˆy=Ùc@1‡ ù kº@1†éxÔýô@1‡ ù kº@1€ù k¹?žˆ2}?’g½þË£?”Ä0óçî?«àÓ RÆ?’[9ƒÍ,?“‡SË{d—?•²»UbB2?•Ð\ÄÙ?‘ú-8ûõö?íu…XÚ?“4¦{ºÕ?“{P»á?„A'Š_]?Ž>ž¬ˆ?…ÑTë0Ô?…üðÿË÷?Š`½i=ÓØ?˜§zy@@@@@*@&?ð?ð?ð?ð?ð?ð?6>пDY¤Œ?Sí ¨ÞÑT?Q”0Ïéð@®“zJA7¤@¬k:V`.?vA72ÃÆh?m„m9޳?ïuÖR²Æ?Ó/¨Ä@ŸkŸ|%Fr@ @©ïyÛ"Ðå@©ïyÛ"Ðå@©ïyÛ"Ðå@©ï~vÈ´9@©ïyÛ"Ðå@©ïufÏAò@©ïyÛ"Ðå@©ïx­«ŸV@©ïyÛ"Ðå@©ï~i­BÄ@©ïyÛ"Ðå@©ï{Í5¨W@¥æZ¬1@¥æ]/Ÿ¾@¥æZ¬1@¥æXï4Ö @¥æZ¬1@¥æW1Å@¥æZ¬1@¥æY³Ð|…@¥æZ¬1@¥æV»˜Çâ@¥æZ¬1@¥æU2a|@6–šÔ,<Ÿ@6–éxÔýô@3°Ä›¥ãT@3®óMj@3²-V@3 ëíúCþ@2\ÚQÎ@2[W>«6z@2\ÚQÎ@2Yk¹Œ~(@2\ÚQÎ@2Zxl"h -?‚á²Olºü?–—x)nÛ?”Ä0óçî?ŒGZ0eê;?–(Ži´™^?ø·-/ge?}Ñ¿ž,?˜ü^Š1??“v@á¿bî?’‘Ç#·X?“¹ ¾´î?‘ƒZ)Àˆ?ŠÌ÷7Õ}?þ,DöP?…ÑTë0Ô?ƒÛ®«etZ?‘„1ôñÂß?¢—„¯l@@@@@,@"?ð?ð?ð?ð?ð?ð?<šÚr`¿ZŸˆ -?@Y´*jì?°õ ™i@©ïz‡Øv@¥æY¬‡Ä?`˜Ç@?8º˜ÐJø?ÅW¨Ë>‡?yúg¸5&@ŸgnÀp–Ò@ -@¨„E¸Qì@¨„DÝ/¡@¨„E¸Qì@¨„E”¯O@¨„E¸Qì@¨„KàÞÒ‰@¨„E¸Qì@¨„C,¥zw@¨„E¸Qì@¨„DÂø7µ@¨„E¸Qì@¨„B@·€4@¢á…¡ÊÀƒ@¢áƒn—@¢á…¡ÊÀƒ@¢áaä÷g@¢á…¡ÊÀƒ@¢á†$Ý/@¢á…¡ÊÀƒ@¢á~5?|î@¢á…¡ÊÀƒ@¢áØ­«Ÿ@¢á…¡ÊÀƒ@¢áò䎊@6ÞHè§æ@6ߨ­«ŸU@2º^5?}@2$ xG@1ä¼j~ùÛ@1éîËû¶@13&Á½¥@11Åo@13&Á½¥@11:’£S@13&Á½¥@11×Ûô‡ý?|öOÿÝ?µ‡:úÎ ?•ï9aýô?‹û…†_?’<_+fjä?‘É=¦þï?Œs¤DÅÐ?”V ìi!¾?•¥º~§?’GÎ>GÅ?’W;„zY?’9ñ9¶ò8?…ÑTë0Ó?GÚ -­ ?„m~Z_s,?ƒiñj6Â?‡v>ª¸ ?‰Ü)@Jq«@@@@@*@,?ð?ð?ð?ð?ð?ð¿:ªó@¿G¤èÂ|?,oÃ?‚n—8‹8?Ž•ýÙ—±?…/‡ÙX·³?ˆ»ñJî¯Î?ŒC ãSG?ŒC ãSG@@@@@(@*?ð?ð?ð?ð?ð?ð¿GŽà‘à¿7/j˜?4Î3XNÔ?;-±š”äO@®FxÿË»ö@¡Éi¿ó?T×q¾fî?[·÷ð¸?³…É «–?À69A`nÈ@Ÿg`{pšR@ @«ÈZŸ¾vÉ@«È+C•@«ÈZŸ¾vÉ@«ÈTì!œ§@«ÈZŸ¾vÉ@«È](Ì«@«ÈZŸ¾vÉ@«ÈgJSS7@«ÈZŸ¾vÉ@«ÈYñ@«ÈZŸ¾vÉ@«ÈZÍå¤@›_Týó¶F@›_zBg,@›_Týó¶F@›_K„oEÕ@›_Týó¶F@›_gYÿ±H@›_Týó¶F@›_D*>Ï@›_Týó¶F@›_fä=ü@›_Týó¶F@›_U¿éˆ@9-¥œàv@94.Ã4@4W+ Iº@4]0/^@3ˆ“t¼j@3‰ð”AZD@35µsê³h@3=V šÃJ@35µsê³h@36’×ç8p@35µsê³h@38v¤RЯ?˜Òøƒ3N?äTÁ‰ÁÃ?”ÇÃâ7¨ù?Œdº2ÚfÆ?‘úPÙݱq?’»“™¯?ºŽ¢N'P?’31?úB?“P°Q­AÎ?‘Þ4LÃ9?Ï”Ñûz?‘-’ͧGÊ?×?>D&?rywÍK ?Šd¬“Xïä?ƒ -A3­5¸%`¯3Ÿ@«}YÓ=Ö”@”M#=û?c-Ê“À­M?^%Ð=ùð%?Ìç,xš?¼æH2/Ñ@Ÿj57ºœ@@¥íÁ‰7KÇ@¥íÁ‰7KÇ@¥íÁ‰7KÇ@¥í Iº^@¥íÁ‰7KÇ@¥íÂ3œ¿@¥íÁ‰7KÇ@¥í Iº^@¥íÁ‰7KÇ@¥íÀÄ›¥ã@¥íÁ‰7KÇ@¥íÀÑ·X@¡w¡ÊÀƒ@¡w¡ÊÀƒ@¡w¡ÊÀƒ@¡w¡–R½<@¡w¡ÊÀƒ@¡w¡ò×s@¡w¡ÊÀƒ@¡w¡TÉ…ð@¡w¡ÊÀƒ@¡w¡|ÚQ@¡w¡ÊÀƒ@¡w¡‰7KÇ@0=:’£@0=:’£@*Üj~ùÛ"@*Ü]cˆe“@)ØÔýó¶F@)Ø“t¼j@(æL/ƒ{K@(æ -¦L/…@(æL/ƒ{K@(æ -¦L/„@(æL/ƒ{K@(æ -¦L/…?É^žQ5P‚?ÖÈ ¼?‘½ümüñ?‹Æ úJ-M?êtÿKÑc?ºª$Ð?ÐbMçê_x?’ ,øÕC©?‘N÷J’?1ð'7éÃ?ÏtP°*?Z˜°,aÝ?€bMÕky?Œ°¶.Ä+Æ?‚s@ˆaÛ?‚äÍ“½E'?†l&þ?†½ª»—@@@@@,@,?ð?ð?ð?ð?ð?ð¿B†ô*æ?ºžý¸?)¹¥!«>÷L©–amj@¥íÁM=ù@¡w¡pµZõ?8º íki?ޣķ?mø#bñE,?K™hò@Ÿs2éƒ@@©ïRñ©ûç@©ïS3333@©ïRñ©ûç@©ïSZ…‡”@©ïRñ©ûç@©ïSÐ|„µ@©ïRñ©ûç@©ïS÷ÎÙ@©ïRñ©ûç@©ïR•éá±@©ïRñ©ûç@©ïR䎊s@«óæffff@«óæffff@«óæffff@«ó宿1ú@«óæffff@«óçE8ï5@«óæffff@«óåãS÷Ï@«óæffff@«óæÜ]c‡@«óæffff@«óæ€IQ@3Hè§æ@3p:û~‘@.ðå`A‰7@.ðØDЩ@-Œ1&éy@-Œ1&éy@,ëjçÕfÐ@,ë…¸Qì@,ëjçÕfÐ@,ëP°ò{³@,ëjçÕfÐ@,ëC•&?|öOÿÝ?ÉGãA­÷?‘&Øç?‘?‹¦ ŸYÔ?‘2A¥Ø?À­Õß}º?|¬Çëý ?’˜‰%F²?™Îd0RÜ?-õI¸`K?ÝIMÎ?e¾DQ„Q?‚2Y0â³?Œ°¶.Ä+Æ?‚2Y0âµ?‚éXëLL÷?†–f_ÔŠŠ?†©b/bJö@@@@@,@*?ð?ð?ð?ð?ð?ð¿ú³«€>üj#?"˜ôÈ:~ÿ?²û¢€ù@©ïS2 h@«óæl1ÿ;?B}1!æ7?7 Ãp´?’“?ÛršÀ?{ðÓÄõ˜@Ÿföo¡îê@@ †µ?|í‘@ †²-V@ †µ?|í‘Á.„€@ †µ?|í‘Á.„€@ †µ?|í‘Á.„€@ †µ?|í‘Á.„€@ †µ?|í‘Á.„€@®|í‘hs@®» [@®|í‘hsÁ.„€@®|í‘hsÁ.„€@®|í‘hsÁ.„€@®|í‘hsÁ.„€@®|í‘hsÁ.„€@8¥öý!ÿ.@8¤«§êå@4E?|í‘hÁ.„M‰ûçm@3Ú~ùÛ"ÑÁ.„QnÙ‡@2ÿò䎊rÁ.„NÜC,¥@2ÿò䎊rÁ.„NÜC,¥@2ÿò䎊rÁ.„NÜC,¥?§m*HšÎ@8#˜@8¾:@8 >+@8Iç@8Ù?•Ö/ê€÷Æ@8Î÷@8i§@8Å@8S@8û—?À\ï;.=ø@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¦9k…¸RÁ.„€@¦9k…¸RÁ.„€@¦9k…¸RÁ.„€@¦9k…¸RÁ.„€@¦9k…¸RÁ.„€@¦9k…¸RÁ.„€@š4Ÿ¾vÈ´Á.„€@š4Ÿ¾vÈ´Á.„€@š4Ÿ¾vÈ´Á.„€@š4Ÿ¾vÈ´Á.„€@š4Ÿ¾vÈ´Á.„€@š4Ÿ¾vÈ´Á.„€@8í¥œàvÁ.„>¤µÜÆ@4+ IºÁ.„M‰ûçm@3PA‰7KÇÁ.„QnÙ‡@2èè§æ›Á.„NÜC,¥@2èè§æ›Á.„NÜC,¥@2èè§æ›Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@«½ó¶E¢@«ÀgPÉŸ@«½ó¶E¢@«ÀgŠÁ@«½ó¶E¢@«ÁPÔm@«½ó¶E¢@«¿ub˜@«½ó¶E¢@«½cW÷¼@«½ó¶E¢@«»éÖòŸ@œ7XbMÓ@œ7Y™™™›@œ7XbMÓ@œ7Y;ò$@œ7XbMÓ@œ7aÕ9a@œ7XbMÓ@œ7Z¢G*ó@œ7XbMÓ@œ7\¡Œé)@œ7XbMÓ@œ7_9(Ã@6¥öý!ÿ.@6¤P#Nl@1ÞÙ‡+@1ß3$e…á@1H“t¼j@1H\²êeÒ@0ãÉîËû@0â Œûü@0ãÉîËû@0áKü;Â@0ãÉîËû@0àî¢K¶Æ?¨Sp*?Ę'} ?’6nXé?‹Ø7e?‘8‰\\?’D\Zõ(?ˆ´\Ηþ?’¼[“L?‘&aƒD2Õ?`‡úaé^?‘-Ï÷ÃÑ?‘H€ÈX?š@VÇ;Q?ŒÆ‰)ÕÆ?ƒ×ÈÒàS¤?ƒ#ˆïº¤?†ÜÕI±´Ù?‡÷2o»9@@"@"@@,@*?ð?ð?ð?ð?ð?ð¿I‘•?@'KXt?)sí[”ƒt?"ê{H8£@«¾ ~¡0@œ7[®Oÿ¾?I÷kyQK?B{M„Ò¶?œ§Cµ3?‡ ‹-*J‡@Ÿi\¯õ @@¦\G+ J@¦\[ÈÄ’ï@¦\G+ J@¦\PNUÙ @¦\G+ J@¦\I¾²ì'@¦\G+ J@¦\_MÕô5@¦\G+ JÁ.„€@¦\G+ JÁ.„€@˜ç“t¼j@˜çŽ'a@˜ç“t¼j@˜æ¨¢GÔ'@˜ç“t¼j@˜æÙ“Uï@˜ç“t¼j@˜æÃrÑ @˜ç“t¼jÁ.„€@˜ç“t¼jÁ.„€@8*0U2b@8@0f‡+ J@0hð¸@/íOß;dZ@/ëàÞÒˆÎ@/\¾ß¤@@/`[À6â@/\¾ß¤@@/]Ùb¶¯@/\¾ß¤@@/Y‡+ ?}Ñ¿ž,?õ¹Ëh?‘1f_¨Ï÷?Aš%ðï?‘\Žýµ€7?×°ë*–w?|öOÿÝ?’4 "ëžØ?ŽËÜ¿€?‘M –=?‘=d¦^™?hï,ðà?‚† SFñ?2ô]7?ƒ<Õp?ƒ=rµE=?†ùadô|?‡&üòI@@@@@(@$?ð?ð?ð?ð?ð?ð¿H#Cš ?A/Ô,Ø?9{<¥‡.?7ÞÄs—»½@¡MŒDá@¬æœ ?Y|=tëEš?Xz>ÈÕÌ?Àʪ÷ü?¾@n©?+^@Ÿg<œë˜@@§¸n—@§¸Ÿ¾x@§¸n—@§·õéá°Š@§¸n—@§¸ŠqÞi@§¸n—@§¸üPH@§¸n—@§¸'y¦µ @§¸n—@§¸)º^5?@¡«ýó¶E¢@¡«ü¬1'@¡«ýó¶E¢@¡¬/Aò×@¡«ýó¶E¢@¡¬{J#:@¡«ýó¶E¢@¡¬B©“ á@¡«ýó¶E¢@¡¬?|í‘h@¡«ýó¶E¢@¡¬fÂ&€@7m¥œàv@7F+jçÕg@3!hr° Ä@3”FsØ@2A‰7KÇ@2…¼£n/@2+xFÜ^@1ù k¹Œ~@2+xFÜ^@2Ϫ͞„@2+xFÜ^@1ìC,¥zx?óA[ØïF?ªŽµcùX?¡äøLAJ.?¡[Òö¿ì? £× -=p¤?»Õ¥¤8*?‡YÍ_?§8©$ -"º?VÇ·Þóï?¨g(Z%?£ƒwž{_?¼è¦²îCU?—M3§´ ?¢C‰'—˜?“'ü#šgã?·wZR)w?¶sr°ÔY?¯Ô m9@@@@@&@&?ð?ð?ð?ð?ð?ð?v¼-ÒÒ€?“À!)Å?M–xA1·Û?gçdÒi@§¸ YýÔ@¡¬Aœæ?i*ì£Lz?ƒó1Fšg°?¸ŠŠæ~ñ ?ìB6ñ`ÏÎ@ŸcŒ*€»@@¯ËZŸ¾vÉ@¯ËV“u@¯ËZŸ¾vÉ@¯ËQhr° @¯ËZŸ¾vÉ@¯ËOhÛŒ@¯ËZŸ¾vÉ@¯ËO4Ö¡b@¯ËZŸ¾vÉ@¯ËN!–R¼@¯ËZŸ¾vÉ@¯ËVÈ´9Y@§z.—Oß@§zI7Kƨ@§z.—Oß@§z)^ž @§z.—Oß@§z)ÞÒ@§z.—Oß@§z5*™1@§z.—Oß@§z,Iº^5@§z.—Oß@§z6âëB@7÷â‚@·€@7ñÑN;Í6@3!hr° Ä@3FÜ]c@2H“t¼j@2=Oß;dZ@1ãÉîËû@1ÒMÒñ©ü@1ãÉîËû@1Ù“ àÞÓ@1ãÉîËû@1Û²þÅm]?ˆÿÀ)T¿Æ?“¤bDÒ¼*?šQ"Äš%?]]gºÉQ?˜´1…9„?•zWmoàí?¤ÊŽaÈ]Ó?Ñ¿ž,?¤ÙS§`G?¥fóa]G? dÈr”K?”•®fÙ­'?¬Uu6EE?àìÚJ>?•ë þÅ?¥k2ïm?æšÔ,<ž?ŒC ãSG@@@@@*@*?ð?ð?ð?ð?ð?ð¿CñìпkCÜÄ?PàÆÂ?­Í?eQGjP#@¯ËSŒF@§z9åêº?t˜,ãK?‚±A˜{^%?Ûš"üHN?å)~+¥Ž@Ÿn]d‹ h@@­®D›¥ãT@­®'®zá@­®D›¥ãT@­®;À6â@­®D›¥ãT@­®/Òòä@­®D›¥ãT@­®/·éù@­®D›¥ãT@­®EãS÷Î@­®D›¥ãT@­®GÈK]Ì@£5Á$Ý/@£5Ðå`A‰@£5Á$Ý/@£6-w1@£5Á$Ý/@£6P-à @£5Á$Ý/@£6?U›=@£5Á$Ý/@£6<£n0@£5Á$Ý/@£65sê³h@8í¥œàv@8ü1&éy@4™º^5?}@4Uœàu÷@3¬j~ùÛ#@3y‡+ @3«6z‘@2ß—$tS@3«6z‘@2ê¹õY³Ñ@3«6z‘@2ðA‰7KÇ?´M ó¬^õ?º<ß‚9¥?±“áí=1-?·Ô\û‡Ú?£¸ -ÁX¶?I: ­¬?¶¼=Ða?É¥Þµ¶.ó?ÅË,Øh§ß?º2ƒ˜ü?³4)=åD“?°è*T`Í?ÒC -÷ Dk?–(Ži´™^?™Ä¶BϪ?¡2¿ônM|?™^ÓnÔl©?’Ž<Dxƒ@@@@@*@*?ð?ð?ð?ð?ð?ð?{œv'š?”³!îÛ`?[5ö´‹?€¢bÐÑd@­®=q «è@£6"Ö6Ú?u¥Ç$Úº?9õÝò8?µÅ¥Íí0?ð˜meY@ŸoJo@@@ªˆV‡+ @ªˆVE¡ÊÂ@ªˆV‡+ @ªˆ[Í5¨X@ªˆV‡+ @ªˆWXâd@ªˆV‡+ @ªˆYJôðØ@ªˆV‡+ @ªˆY‡+@ªˆV‡+ @ªˆXy=Ù@¥)šŸ¾vÉ@¥)šŸ¾vÉ@¥)šŸ¾vÉ@¥)™Àëíù@¥)šŸ¾vÉ@¥)›¥ãSø@¥)šŸ¾vÉ@¥)–8†YK@¥)šŸ¾vÉ@¥)—>«6z@¥)šŸ¾vÉ@¥)—$tS@4ò䎊@4£S&@1é‡+ @1è_ö”F@0"-V@0"•éá°Š@0𖻘Çã@0îƒä%®æ@0𖻘Çã@0î}Vlô@0𖻘Çã@0î}Vlô?|öOÿÝ?äm°û0Ž?‘G¿yÛ?ï?r*ž¾Ž?’°STðS?‘¦‘=W?|¬Çëý ?’r/BÖ?§^ ÿo˜?’îy†Ò‡‚?’íßš?‘–íÍQÜ?‚yî8Á#?ŒË›Í‡Çq?‚§W®ê ?„2ÌôÏ?ˆÔÞÑ—æJ?ˆ‹”âó@@@@@(@$?ð?ð?ð?ð?ð?ð?D. H¿KÕÞ¢´?,<ЧùàŸ?19á^¹®ã@ªˆW°á3—@¥)˜´5úY?LFgÕðz?Q€OA¯ø3?£VâLiW¦?¬þ vªmt@ŸfcTF×Þ@@ ÑÏß;dZ@ ÑÐ Ä›¦@ ÑÏß;dZ@ ÑѨž@ ÑÏß;dZ@ Ñß/UX!@ ÑÏß;dZ@ ÑÐs½FI@ ÑÏß;dZ@ ÑÏ´(lQ ?ê(~?–ðÒš±r(?‘ëóqÎW?}@T˜ÁÎ¥?’ ü~5ö?’?ÂÛ*9?l‡¹ïœt?”‹ô?”ìÛX*?‚o˜¥Å÷?25´Ð?…´ÕËA‰´?‹hðM5³?“ÅÀ#Åœf?‘÷lÉ™d@@@@@2@4?ð?ð?ð?ð?ð?ð¿P×ÖØÞ?5»"”ð?Eí© S›Û?IÆ3#H)|@ ÑÎ[«@¦Q!U`³?e»¡t¾ÚÃ?iG÷H -?ÔàncXZ?Û -ùϸÃ@ŸeÖŒx:y@@®+öE¡ÊÁ@®+ô9Xb@®+öE¡ÊÁ@®+öý!ÿ.@®+öE¡ÊÁ@®+÷´¢3œ@®+öE¡ÊÁ@®+ùXbO@®+öE¡ÊÁ@®+õöý!ÿ@®+öE¡ÊÁ@®+õ›=È@£V;dZ@£V|í‘h@£V;dZ@£V uöý"@£V;dZ@£VW>«6@£V;dZ@£V„µÜÆ@£V;dZ@£V($ x@£V;dZ@£Vÿ—%@7ÉÎ_oÒ@7Éá°‰ (@1Ï|í‘hr@1ÏåÉä@1PA‰7KÇ@1PA‰7KÇ@0n_oÒ @0n í(Œç@0n_oÒ @0ncŠ @0n_oÒ @0n.±Ä2Ê?…ÅBðrç?¾‰máÚ?‘£Ä›è?‹¹GüÞõ?‘'¬Å™» ?×°ë*–w?žŒÝÙ›P?’7Îf¬ps?³2ºŽ'?@§[*^?‘Uç·Býi?NÂò‚Ì`?˜Ÿó6P£?GÚ -­ ?‚Ì ÝŽ‚8?ƒ!Ë *(?†ùadô|?†¯Mž684@@@@@,@"?ð?ð?ð?ð?ð?ð?>…¨ ?ü+0?EŒkã´Ûã??Ý987g@®+öwË.Y@£V×Çœ?f¸£í@?W-aÌÞd†?Ñv°)î?§ªF7ŒMö@Ÿnšµ;@@¦ãyXbN@¦ãuÂ\)@¦ãyXbN@¦ãyÀëíú@¦ãyXbN@¦ã¤?åÉ@¦ãyXbN@¦ãsÐ|„¶@¦ãyXbN@¦ãzQÎ@¦ãyXbN@¦ãuŽ!–T@£pë…¸R@£qÄ›¥ã@£pë…¸R@£pèr° Å@£pë…¸R@£púŸ¾vÉ@£pë…¸R@£pót¼j@£pë…¸R@£púÔ,<Ÿ@£pë…¸R@£pøºÇË@8›¹Œ~($@8uöý!ÿ.@3£÷ÎÙ‡@3£S&Â@3“t¼@3*™0¾@2£ÉîËû@2¤!-w2@2£ÉîËû@2£t¼j~ú@2£ÉîËû@2£n.±Ä3?€‚ñêã ?–(.À·÷?’w·†m?’(æ„+Zk?šŒÐ&îèx?¢ïĵÐ^M?»ö#°€Ô[?£½‹„@p?‘S1Êz? -ªê@£pöm6¤?m˜Ï­Ÿ0?pëÙýT»‚?Ä\µ¶z|?Ç‘8»ÓEÿ@ŸoCï—ÿÉ@@¤ Ƨïž@¤ L˜_@¤ Ƨïž@¤ ¹Œ~(@¤ Ƨïž@¤ M=\@¤ Ƨïž@¤ ßÊ}å@¤ Ƨïž@¤ _À/@¤ Ƨïž@¤ D'@™óáG®{@™óàÄ›¥ã@™óáG®{@™óá]^Q@™óáG®{@™óâ“7@™óáG®{@™óá\Âv@™óáG®{@™óâ Iº^@™óáG®{@™óâÐå`B@4Ô xFÜ@4Ó²ñÝ›0@0Ù‡+@0Ò/oz^@.&éxÔþ@.•ˆ@,87´¢3œ@,8µó|»š@,87´¢3œ@,8¤TÞ@,87´¢3œ@,8« ˆ¤?|çµB &€?ã«ÁÜq?‘lȼÛê?‹µý-M+ì?ìXk™Z³?º1 -qV?|Ñb×¶@?’ €£·?F¡{r‹?2Nk6y¬?Õa$ÄÂd?VñTL}Á?‚’¤I å?Œ²£ ?‚’¤I æ?‚òƒ¼‡?†Š7´is\?†‹îªViö@@(@$@(@:@:?ð?ð?ð?ð?ð?ð¿$—·5 ?'ì-‡?>çÉÍ@>ÿç²DÝö@¤ ÂƒÝæ@™óᇋ?!*c#è$?«A—=7á?P%¹ö#ä?J.#gdU…@Ÿfþ51ç@@¢àA‰7LÁ.„€@¢àA‰7LÁ.„€@¢àA‰7LÁ.„€@¢àA‰7LÁ.„€@¢àA‰7LÁ.„€@¢àA‰7LÁ.„€@ -Rñ©ûçÁ.„€@ -Rñ©ûçÁ.„€@ -Rñ©ûçÁ.„€@ -Rñ©ûçÁ.„€@ -Rñ©ûçÁ.„€@ -Rñ©ûçÁ.„€@87â‚@·€Á.„>¤µÜÆ@4Œí‘hr°Á.„M‰ûçm@3§KƧïžÁ.„QnÙ‡@2á:’£SÁ.„NÜC,¥@2á:’£SÁ.„NÜC,¥@2á:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø@¯š¬1@¯¢MÒñª@¯š¬1@¯œ¹#¢œ@¯š¬1@¯¢3œÀ@¯š¬1@¯Ÿ!-w2@¯š¬1@¯™ k¹‹@¯š¬1@¯—€4mÇ@¢¯@¢¯`A‰6@¢¯@¢®ý<64@¢¯@¢¯ëíúD@¢¯@¢®ûšu@¢¯@¢®ü¹#¢œ@¢¯@¢®üàuöý@7‡>«6z@7‰Î_oÒ@2^Ù‡+@2\篷é@2M²-V@2Hè§æ›@1Eœàu÷@1@oiDg8@1Eœàu÷@1B3œ¾à@1Eœàu÷@1B Iº^6?•²»UbB2?“:„aGS?’ -N»A3?ŽAtùð¥t?’š'†­`í?‘¦ µÚ?žˆ2}?•wi¢‚*?”3jà’_?”±¤ëµu]?’ÞH†<²?“ <°·Ê?“ÉŸ“_Æ?c I??‹f°ùr[ƒ?ƒR¨º“JÞ?‡&üòI?·♊N@@@@@(@*?ð?ð?ð?ð?ð?ð¿cƒmú¿aKõ>?Bз`Ë?D1#Xj@¯œýÆ¥I@¢®ÿ)¡F6?^pë{ ?gwÁ/óÒ-?¶å|>iH?Ïg+·‰@ŸkÓ@@¤©’n—P@¤©’-V@¤©’n—P@¤©”ã¼Ó\@¤©’n—P@¤©“ŽóMj@¤©’n—P@¤©–_Ø­¬@¤©’n—P@¤©“¶E¡Ë@¤©’n—P@¤©“×Ûõ@¡›¥ãSø@¡œj~ùÛ@¡›¥ãSø@¡šu%F@¡›¥ãSø@¡™0¾ í@¡›¥ãSø@¡˜bMÓ@¡›¥ãSø@¡š^5?}@¡›¥ãSø@¡š)Çy§@4¿–»˜È@4¾óMj@0ë¥ãS÷Î@0ê™0¾ í@0“t¼@0¯O „M@0Œ~($ @0>«6z@0Œ~($ @0ùrGF@0Œ~($ @0*0U2a?|öOÿÝ?°çR;?‘K]Ã4?‹ÑqÔ@vÿ?‘1 °µv¦?‘PÊÑ<Ýl?|öOÿÝ?’uß¿çÒ?³2ºŽ'?6) }’ë?‘<¸ö}½?±—'¶Ü+?ƒmÕ+&¬‰?Œ¯þuõí?‚ù…žÄ`x?ƒ ?ÿ½?†Ü‘ °Ô?‡´*žZ}Õ@@@@@*@,?ð?ð?ð?ð?ð?ð?@ºŽSp¿D ˆ½ä?=§ L±?8M$@¤©““‡Ÿ@¡šà¦?]Z§`63?XZ¢ºí?Æí[š»$Æ?¾f†þdç@ŸfÝ…ï @ @§æî—Oß@§æî—Oß@§æî—Oß@§æï#àJÊ@§æî—Oß@§æïY~Ò@§æî—Oß@§æï>Õ(@§æî—Oß@§æíI(—"@§æî—Oß@§æíV@“+_;dZ@“+_;dZ@“+_;dZ@“+^;L's@“+_;dZ@“+^h¾>@“+_;dZ@“+]xèY¯@“+_;dZ@“+_ÐIñ@“+_;dZ@“+^%˜Í³@1^Hè§æ@1^V“u@+ëÆ§ï²@+달q ±@+íOß;dZ@+ì»^h(@+zÇË)_@+z¹AM^Ö@+zÇË)_@+y`6Âû@+zÇË)_@+zÿçSà?É^ž6õP?¾Ÿˆf¥^?‘F¢þó?‹½ö’˜©?ìXk™Z³?µûê?ÐbMÝn½?’ÎV‡?ƒæjªÄ?7þi¦UÄ?Ú5V¥·?NÍÐ)Çh?€bMÔŠ»?Œ°ž:ød?‚r{e•{t?‚ä°Õ›ƒ’?†§mÇÕ™¤µÜÆ@7+¥ãS÷ÏÁ.„M‰ûçm@6€å`A‰7Á.„QnÙ‡@5«xFÜ^Á.„NÜC,¥@5«xFÜ^Á.„NÜC,¥@5«xFÜ^Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø"@®Òñ©ü@®‹a–zœ@®Òñ©ü@®Žß¸3“@®Òñ©ü@®xðÕ@®Òñ©ü@®~Êõ2Q@®Òñ©ü@®Žo”Ë@®Òñ©ü@®ˆtž|.@›¿ Iº^@›¾÷͌ݬ@›¿ Iº^@›¾Ú¡Ú¦@›¿ Iº^@›¿Õ»ö-@›¿ Iº^@›¾ãL,èú@›¿ Iº^@›¿ ±S{X@›¿ Iº^@›¿d3þ@8[¹Œ~($@8[íXÓz'@3Ê^5?|í@3Ñk¾6@@2Õ`A‰7L@2Þ×ë µ†@2G ù kº@2O´Êj†ê@2G ù kº@2Kæ·k@2G ù kº@2L:þ„GŒ?šž†%³Õh?‘>EˆéG?•üìw•y ?‹ðãÚ6J°?”|yðlŽô?’+w³w?|¬Æ Væ?›Ûœ,º!¤?¡C^]òò?‘@§…Et1?’Äøò‚BE?Ó]ꆑ?…ç¾":,ô?ãR ›èp?ˆ˜)§éG?‚ü6ãm?‰mçûŒ†?$^Ñ}VÈ@@&@&@@0@0?ð?ð?ð?ð?ð?ð?MÌ·„?N,ÃC”?hiV£Ù—Ì?\yQ'‹/@®…žºJò@›¾û¯ŠÏ[?‚ -Ư½Ìÿ?u¶Ífv?þ>iëÿ@w¦A›Š;@ŸlÈű1@#@¦±†$Ý/Á.„€@¦±†$Ý/@¦±„µÜÆ@@¦±†$Ý/@¦±€ªdÂø@¦±†$Ý/@¦±ŽËûµ@¦±†$Ý/@¦±‰^ž -@¦±†$Ý/@¦±†ö”Ft@®cݲ-VÁ.„€@®cݲ-V@®c宿1ù@®cݲ-V@®cáaä÷f@®cݲ-V@®cÜÚQ@®cݲ-V@®cØl"h -@®cݲ-V@®cÐbMÒò@904mÅÖ8Á.„>¤µÜÆ@4O|í‘hr@4H*™0¾@3~V“u@3}ÈK]Ì@3ý!ÿ.I@3¾ í(@3ý!ÿ.I@3å`A‰8@3ý!ÿ.I@33œ¾à@8J¨?šQ&Üg4Ó?—go]Þ?—IW`g’?|³K’!\?›‹ÞV‘@8J¨?› Öü{?”€@N¯â?”!Ø×Ï“è?š¹'¤Ò ?Ÿ¥O[õÆ@8p÷?”É…ðoiE?‘bR?‘˜†Œ/ž?’Oûh´6c?’3¨£„È@@@@$@&?ð?ð?ð?ð?ðøøøøøøøøøøøø$@ªÍ,1&é@ªÍ+…¸R@ªÍ,1&é@ªÍÚQÎ@ªÍ,1&é@ªÍ qv@ªÍ,1&é@ªÍGE8î@ªÍ,1&é@ªÍ[À7@ªÍ,1&é@ªÍ§ï²@¬öýp£× -@¬öý²-V@¬öýp£× -@¬öðË)^Ÿ@¬öýp£× -@¬ö×éùr@¬öýp£× -@¬öØbMÔ@¬öýp£× -@¬öåÉä@¬öýp£× -@¬öëP°ò{@5„¯O „M@5„÷eýŠÛ@3‚° Ä›¦@3yÛ"Ðå`@3€å`A‰7@3sFÜ]cˆ@3OO „M@3AÎ_p@3OO „M@3C¯·éú@3OO „M@3C&Á½¥?|¬Çëý ?¡Iü¤µÜÆ@3&‡+ JÁ.„M‰ûçm@2M²-VÁ.„QnÙ‡@1ãÉîËûÁ.„NÜC,¥@1ãÉîËûÁ.„NÜC,¥@1ãÉîËûÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø&@ªB©xÔýôÁ.„€@ªB©xÔýô@ªB©Q‚©“@ªB©xÔýô@ªB¡ÊÀƒ@ªB©xÔýô@ªB¿HÌ@ªB©xÔýô@ªB›ô‡ü¹@ªB©xÔýô@ªB¡ÊÀƒ@¢õ33333Á.„€@¢õ33333@¢õ,cñA@¢õ33333@¢õ0Ë)^ž@¢õ33333@¢õ-\ú¬Ú@¢õ33333@¢õ$M:’@¢õ33333@¢õ*W§†Â@9Î쿱[WÁ.„>¤µÜÆ@3«¥ãS÷Ï@3¬"h Ô•@2Æ“t¼@2ÄêJŒL@2zÔ,<ží@2|í‘hr°@2zÔ,<ží@2u8ï4Ö¢@2zÔ,<ží@2vµ '»@8J¨?4ë©$è‰?’à©GMõ?žtN+®6?•’ØŒi³?—uæË}üI@8J¨?—áZk·×?‘Ûcu%ç+?žätmî>?œ—ø#\á?š¥£Âº²ƒ@8p÷?‘ë…¸Qì?‚‹¡8*ú?†ÞåØÜÓ?ŽNîV˜C&?óRÏ4@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøø'@¥™£S÷ÎÙ@¥™­Òñ©ü@¥™£S÷ÎÙ@¥™£S÷ÎÙ@¥™£S÷ÎÙ@¥™£ˆe”¯@¥™£S÷ÎÙ@¥™£S÷ÎÙ@¥™£S÷ÎÙ@¥™£,¥zx@¥™£S÷ÎÙ@¥™£FÜ]d@«¾Ý²-V@«¾å¸Qì@«¾Ý²-V@«¾Ýcˆe–@«¾Ý²-V@«¾Þ($ x@«¾Ý²-V@«¾ÞÑ·@«¾Ý²-V@«¾ÝÙb¸@«¾Ý²-V@«¾Þ($ x@6cg ù l@6q©ûçlŒ@-$“t¼j@-$?åÉ@+IxÔýó¶@+I…ðoiC@)ܾߤ@@)Ü(õÂ^@)ܾߤ@@)ܾߤA@)ܾߤ@@)ÜÚQÍ?1·†Æjñ?é¥3i£ó?‘½ümüñ?‹Æ úJ-M?êtÿKÑc?ºª$Ð?„F/·ÿP5?’ ,øÕC©?ƒ‰/BH?;ß $Þû?Ó%y*£=?X78›š?‰6~„æAÔ?Œµ3‰;šÏ?‚uÞ@>N ?‚äÍ“½E'?†‰Oú|q?†’Õaì+’@@@@@*@,?ð?ð?ð?ð?ð?ð¿dñ欿Z¶Ã?DU–ÄñÑ4?¤µÜÆ@4^Ù‡+@4çl‹C•@3§KƧïž@3[àÞÒˆÎ@3+xFÜ^@2Ò° Ä›¦@3+xFÜ^@2Ô?åÉ@3+xFÜ^@2ÔŽŠqÞj@8J¨?·-ie˜ýZ?¼¯páÈZ™?»3ì‡}s¤?¹—³ÔKÒ?µ€Ï7¯eÊ@8J¨?¢ì]veb?Ç4Z~Ð?ÉïZhB·¤?ÄÇ?jy•?¶×¦¿75@8p÷?þxÖ?Ž“‹}Tz?Þ‚ ‡F?’Oûh´6c?“!S{uu@@@@,@(?ð?ð?ð?ð?ðøøøøøøøøøøøø)@¤+…¸R@¤9™™™š@¤+…¸R@¤ô‡ü¹@¤+…¸R@¤"ø7´¢@¤+…¸R@¤u%F@¤+…¸R@¤!ä÷eþ@¤+…¸R@¤(K]Ìd@¬ìµÂ\)@¬ì±ë…¸@¬ìµÂ\)@¬ì«'»/@¬ìµÂ\)@¬ì³¶E¡Ë@¬ìµÂ\)@¬ìÈÎp:ü@¬ìµÂ\)@¬ìËjçÕf@¬ìµÂ\)@¬ìÂÞÑ·@9šÔ,<Ÿ@9䎊qß@4?|í‘h@4ëíúCþ@34“t¼j@35S&Á¾@3mÅÖ8†@35¨Xy>@3mÅÖ8†@3'Ë)^ž@3mÅÖ8†@3(*™0¾?¢F^ì¼Sð?¦ëñ[ñ”¶?‘šÕU#?Œä%—ëš?˜U7t—{V?¤ËiU´v]?„F/·ÿP5?œÙ”!Çx‡?‘S1Êz?/{Ü?œg> Üb -@Ÿg#ï{[N@+@Ÿ8¹XbN@Ÿ8¹Û"Ðå@Ÿ8¹XbN@Ÿ9mL##@Ÿ8¹XbN@Ÿ9¨>Ä&ƒ@Ÿ8¹XbN@Ÿ97PŽÇb@Ÿ8¹XbN@Ÿ9 -`ZÕ@Ÿ8¹XbN@Ÿ9#gTí©@šÕdZ¬@šÕdZ¬@šÕdZ¬@šÖ á8ô@šÕdZ¬@šÖÙ ¤Žý@šÕdZ¬@šÖl×@šÕdZ¬@šÕ!Ö9 «@šÕdZ¬@šÕÎ8~@1·â‚@·€@1¸?â’®¾@-³t¼j~ù@-'Õû¾è¤@,–E¡ÊÀƒ@+•'ï´ž^@+ëjçÕfÐ@+CÞ*)§˜@+ëjçÕfÐ@+\<Öûg@+ëjçÕfÐ@+|¹¨X?É^£eeäí?¤Åz褪ä?™mŸ‰©_?A¸™l?žÇtø•îÁ?­yKËúÇ?ÐbMØ/×^?£ÓõÌÑ ?£ýîûA.¡?”myb¨Á? AÁ¬¸YT?¦hYón?€r5 -<Ðø?“?(Ó†jñ?“?GKÓ®?˜z^Xè{ü?šž°tkòû?Ÿ/€@öÓ)@ @5@5@7@A@C?ð?ð?ð?ð?ð?ð¿€åe*€¿­Ý½ÍèÀ?~ö¿8?­ð?¤JŒ-‚wQ@Ÿ9'ž¶åj@šÕþò¾¨D?‡Êt+——?±;¹ï‹Õ·?ô5Ú9ç@B›Ò‰ ¸ñ@Ÿoâr¦ @,@£¥úáG®@£¥ó3333@£¥úáG®@£¥ùJôðØ@£¥úáG®@£¥ýp£× -@£¥úáG®@£¥ý—ö+k@£¥úáG®@£¥ý}¿H€@£¥úáG®@£¦ÞÑ·@©&ûdZ¬@©&è´9X@©&ûdZ¬@©'8}À@©&ûdZ¬@©'Œç°@©&ûdZ¬@©' V@©&ûdZ¬@©' cñA @©&ûdZ¬@©'œàu@9eöý!ÿ.@9M‘hr°!@4f‡+ J@4ZqÞi­B@3 "Ðå`B@3Ö¡aäø@2ÑÞi­BÄ@2˲þÅm^@2ÑÞi­BÄ@2Í!ÿ.Hé@2ÑÞi­BÄ@2ÌwškP²?¡ÅꯨŠT?«»‡Ä(Bo?‘"žæÆó¡?‡{@áè?—­¦¾z£—?•ŠàuVº`?ÀjáR î?©ïŽ’v1á?–ôÃj¢T?šWl¬Ëz?™Ÿ»6“?–˜k|‹ ;?ÁTÄàj0­?“ÆQ6þ?…µsê³g¡?ˆã1µR?Œ8¸wx¯?¢—„¯l@@@@@*@(?ð?ð?ð?ð?ð?ð?f?ãÖ€¿Vþ1R-€?I_bà??kèNLœ %@£¥þÇN¨T@©' ÈsMZÌw~?ŒïQ¼º“ã?ƒ!A -mº¹?ƒGϵ¨í'?†å·ÑfWà?†ùadô|@@@@@"@,?ð?ð?ð?ð?ð?ð¿E1Qå? Q ?02Óëä?&ä -;ôð[@¡R §}&@¢Œ8IèO$?OÆéÿ)4A?G2zWL‰?ªÍxZN›?›^àà\E¦@ŸfÙ˜E@.@ª'‰7KÇ@ª'‰7KÇ@ª'‰7KÇ@ª'TÉ…ð@ª'‰7KÇ@ª'½¥@ª'‰7KÇ@ª'|ÚQ@ª'‰7KÇ@ª'ò䎊@ª'‰7KÇ@ª'€[À7@ªÁ©ûçl‹@ªÁ©ûçl‹@ªÁ©ûçl‹@ªÁ©Ô•+@ªÁ©ûçl‹@ªÁªdÂø8@ªÁ©ûçl‹@ªÁª Þ@ªÁ©ûçl‹@ªÁ©ûçl‹@ªÁ©ûçl‹@ªÁ©Ô•*@0‰Î_oÒ@0‰Î_oÒ@+½²-V@+½<64@*¯ß;dZ@*¯O „M@*L²•éá±@*KàÞÒˆÐ@*L²•éá±@*L1&éz@*L²•éá±@*LIº^5@?É^žQ5P‚?é¥3i£ó?‘,fŸCô6?‹Æ úJ-M?ùª¨?¸û:?ÐbMçê_x?’uß¿çÒ?¹º–Èj?4–Ú‰3?ÔÒ@úˆ‘?R g!Ú¢?€b¡´ñ@?Œ°¶.Ä+Æ?‚‹¡8*ú?ƒ!Ë *(?†£îž«î?†’Õaì+’@@@@@*@*?ð?ð?ð?ð?ð?ð¿Bö:(¿>Ôk€?2ð~(y|¾>ø“QÒ -…¹@ª'€²—1@ªÁ©õò?B9Iÿ«Ž?A­ÆvÒ?€?n¢¦‚?·‹3÷7×@Ÿs Ò1j@/@¯°÷KƧð@¯°æéxÔþ@¯°÷KƧðÁ.„€@¯°÷KƧðÁ.„€@¯°÷KƧðÁ.„€@¯°÷KƧðÁ.„€@¯°÷KƧðÁ.„€@©ÖÀ@©Ö»¥ãSù@©ÖÀÁ.„€@©ÖÀÁ.„€@©ÖÀÁ.„€@©ÖÀÁ.„€@©ÖÀÁ.„€@8›¹Œ~($@8€[À6ã@5óS÷ÎÙÁ.„M‰ûçm@5ñ‰7KƨÁ.„QnÙ‡@5Vý!ÿ.IÁ.„NÜC,¥@5Vý!ÿ.IÁ.„NÜC,¥@5Vý!ÿ.IÁ.„NÜC,¥?•²»UbB2@8#˜@8¾:@8 >+@8Iç@8Ù?óA[ØïF@8Î÷@8i§@8Å@8S@8û—?Èèì 1@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø0@Ÿ»o²-@Ÿ»P¡þ‰=@Ÿ»o²-Á.„€@Ÿ»o²-Á.„€@Ÿ»o²-Á.„€@Ÿ»o²-Á.„€@Ÿ»o²-Á.„€@¦ç¬‹C•@¦ç¦„à@¦ç¬‹C•Á.„€@¦ç¬‹C•Á.„€@¦ç¬‹C•Á.„€@¦ç¬‹C•Á.„€@¦ç¬‹C•Á.„€@8ý:’£@9?W:*—@4û Iº^Á.„M‰ûçm@3ÝV”Á.„QnÙ‡@3s&Á½¥Á.„NÜC,¥@3s&Á½¥Á.„NÜC,¥@3s&Á½¥Á.„NÜC,¥?š­˜]@8#˜@8¾:@8 >+@8Iç@8Ù?¾»AH­=ø@8Î÷@8i§@8Å@8S@8û—?µÖúLwÊ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø1@¦_[¥ãSø@¦_^5?|î@¦_[¥ãSøÁ.„€@¦_[¥ãSøÁ.„€@¦_[¥ãSøÁ.„€@¦_[¥ãSøÁ.„€@¦_[¥ãSøÁ.„€@¦&ffff@¦!G®{@¦&ffffÁ.„€@¦&ffffÁ.„€@¦&ffffÁ.„€@¦&ffffÁ.„€@¦&ffffÁ.„€@7Y*0U2b@7UðoiDh@4¦‡+ JÁ.„M‰ûçm@4b-VÁ.„QnÙ‡@3ÿò䎊rÁ.„NÜC,¥@3ÿò䎊rÁ.„NÜC,¥@3ÿò䎊rÁ.„NÜC,¥?‚á²Olºü@8#˜@8¾:@8 >+@8Iç@8Ù?3ßa=„@8Î÷@8i§@8Å@8S@8û—?‘c‚ׯ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø2@¦`o²-@¦`p Ä›¦@¦`o²-@¦`n—Oß@¦`o²-@¦`o „M@¦`o²-@¦`oìVÕÐ@¦`o²-@¦`l¿±[W@¦`o²-@¦`l˜_÷@¦ t9Xb@¦ týó¶G@¦ t9Xb@¦ t‡ü¹$@¦ t9Xb@¦ t•*š@¦ t9Xb@¦ vE¡ÊÁ@¦ t9Xb@¦ u '»@¦ t9Xb@¦ u›=È@4‚ò䎊@4[W>«6@15ãS÷ÎÙ@161ø .@0²-V@0 –»˜Çâ@/Aò×t@/Ž_oÒ!@/Aò×t@/hÛ‹­@/Aò×t@/Ž—Oß+@8Iç@8Ù?¸®ˆ¤óÇþ@8Î÷@8i§@8Å@8S@8û—?µ{åÐÖÚ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø5@ª$G®zá@ª$X0yø*@ª$G®zá@ª$dñ›O*@ª$G®zá@ª$Í¢`Ë@ª$G®zá@ª$µðgì¹@ª$G®zá@ª$´áòI@ª$G®zá@ª$Åî|ßø@•øÔýó¶@•ú …@•øÔýó¶@•©‰2"•@•øÔýó¶@•A9t@•øÔýó¶@• ‡Œ‡@•øÔýó¶@•KsÿK@•øÔýó¶@•Xdc 4@8Âò䎊@8³Á;¬³h@5ør° Äœ@5í¶¿±·@61‰7Kƨ@6qæL5@4á:’£S@4³fLoj@4á:’£S@4”;ž$ä‚@4á:’£S@4’­ù ?¡ë MV{¶?“»N+³9G?µ?û¤J?©~ê}²·6?ºt¼2Én?¾Ü“K3ûº?®ÌÅþõ¤À?¢2ðð;Z¦?¶•!|/ñš?· .ß³Q{?Ål™1¡}?Äí‚‘²ƒô?˜óB1ßPÅ?žXzâ×)Ø?»Úဃ?›/ÿŠÆe¹?¤lP‘R©{?¥’SÉF"@@ @&@(@<@9?ð?ð?ð?ð?ð?ð?œj -îÀ?x=lÆ?vßG¤[J©?g×ò¬vWØ@ª$”²wc)@•e‰1?”)Ó‹ %¢?…ÄZtÐ;!?ì…Ÿ4,ñ?·Àµ † f@Ÿfh飤@6@ª2;dZ@ª25?|î@ª2;dZ@ª21&éx@ª2;dZ@ª27´¢4@ª2;dZ@ª2zxl!@ª2;dZ@ª1ÿoÒó@ª2;dZ@ª1þÑ·@§/9XbN@§/6È´9X@§/9XbN@§.Çü¹#£@§/9XbN@§.ô9Xb@§/9XbN@§.Ãn.±Ä@§/9XbN@§.ÉÇy¦µ@§/9XbN@§.½IQ‚ª@8¿–»˜È@8¦+jçÕg@43S÷ÎÙ@4a@N¤@2ß²-V@2ÅF -¦L0@2î_oÒ @2ºçÕfÏB@2î_oÒ @2º¦L/ƒ|@2î_oÒ @2¹™™™™š?¦Ï±úQm‡?“vuØcʲ?“njĕ‹x?ØTnçE?–[À5ž¨?–VòFNLG?—¤o„C?›ªÊît…?•swŽ)Ò?±2ý}û¢í?°KNø»«ú?²fÄF›Ž7?£ ‡ººbë?‘ÌAzÁý?ƒÆ×q„nð?‹h¢íc„„?•XðküÏ?–Ö8ýÆN0@@@@@,@*?ð?ð?ð?ð?ð?ð¿v>£hi€¿œËÑœ ?Z{»„®ˆ†?u‰Ü'#ì@ª2Ú‘î@§.ë’.õÐ?sV}‹zÿ?˜äËiC?ÑVÕ.¥f?ùÈT|Xˆ@ŸjEpÔ É@7@¦ä:áG®@¦ä6‡+ @¦ä:áG®@¦äDÝ/ @¦ä:áG®@¦ä×s@¦ä:áG®@¦ä#,¥zx@¦ä:áG®@¦ä*Ú¹õY@¦ä:áG®@¦ä)xÔýô@¥¸ó3333@¥¸ñ©ûçn@¥¸ó3333@¥¹×sü@¥¸ó3333@¥¸ãS&@¥¸ó3333@¥¸ëxFÜ@¥¸ó3333@¥¹ ]Ìcñ@¥¸ó3333@¥¹ÓZ…ˆ@8 ]cˆe”@8škP°ò@4½‘hr° @4šqÞi­B@4Wï²-@4'_oÒó@3‚@·€5@2å?|í‘i@3‚@·€5@2òœwškQ@3‚@·€5@2÷“Ý—ö,?š•§q!U?¬}æàÀæ?µ¹eüº¦Þ?§ÔÅȉ›?œ=òÙUä?¢‘Þ')ÚÌ?‘â%ì˜ ä?¢›â¾Ð'µ?®Ÿîæ½ä?¬Û7èfQ?¡j`cq?¨V⌰Ö?Œznyž-g?¦; y»Ÿ?¦qeP•QZ?—ôŠÊô?•*†*Zû? kÿà¬@@@@@(@(?ð?ð?ð?ð?ð?ð¿gÂ݃?|meþZ€?Vs`éz7ñ?dC¨’ç'«@¦ä.& Œ$@¥¹ž¬û?v2Í5…/?†/]1?În*P„Â?êü¬ -7h…@Ÿi}R§ê@8@¥JšŸ¾vÉ@¥J›"Ðå`@¥JšŸ¾vÉ@¥JœPHð@¥JšŸ¾vÉ@¥Jœ(õÂ@¥JšŸ¾vÉ@¥Jšû~‘@¥JšŸ¾vÉ@¥J˜l"h @¥JšŸ¾vÉ@¥J™¦µ @¥XbMÓ@¥XbMÓ@¥XbMÓ@¥WOß;@¥XbMÓ@¥Sœ¾ß@¥XbMÓ@¥XQë…@¥XbMÓ@¥Vð¹@¥XbMÓ@¥Vð¹@4÷â‚@·€@4÷_oÒó@1=‘hr° @1>záG®@0§KƧïž@0§ÈK]Ìd@0(è§æ›@0(ï4Ö¡b@0(è§æ›@0(ºÇË*@0(è§æ›@0(è§æ›?|¬Çëý ?ôÊ_?‘"žæÆó¡?ŒÇQ´uøiÛ@ ƒ'ï²-@ ƒEåA‘@ªëó3333@ªëï½É×f@ªëó3333@ªëõO8œ@ªëó3333@ªìrÓæ*@ªëó3333@ªëöGPñÚ@ªëó3333@ªëðé(å¸@ªëó3333@ªëñ—!@8Bò䎊@8Bü)@Œ@58r° Äœ@5>ùH2¸@4—ï²-@4Ö”¬Î@4QÞi­BÄ@4M—ú¼¹®@4QÞi­BÄ@4JG˜Åzg@4QÞi­BÄ@4I0ß I»?Ĺó¥p?”D]„Û?‘i£ð ?”l¨G×D? Et¨×?©·GÃáÏ„?¡ë MV{¶?•h™Oô6?’ ¬G|¦?™Üq—èÂõ?˜ å­fgÓ?–eVC6d?‘}й?*?ŽÆÝŒUÐÊ?ŒÜÏKÚ?¢Ÿ t_?“¾f"7ÿ?šäõõ(åâ@@&@"@(@5@:?ð?ð?ð?ð?ð?ð?wMÁ°ê€¿UBÁ@?n˜ «Š?Q>OÅ\’@ ƒEUð5V@ªëòaõÅY?ìFƒZ?m:“õb@õžJŸ•?ÀæT‡‡÷@ŸkÁ)0j@:@ ðØ“t¼j@ ðÄDKAw@ ðØ“t¼jÁ.„€@ ðØ“t¼jÁ.„€@ ðØ“t¼jÁ.„€@ ðØ“t¼jÁ.„€@ ðØ“t¼jÁ.„€@•]Ÿ¾vÉ@•]"~Ìä@•]Ÿ¾vÉÁ.„€@•]Ÿ¾vÉÁ.„€@•]Ÿ¾vÉÁ.„€@•]Ÿ¾vÉÁ.„€@•]Ÿ¾vÉÁ.„€@7uS&Á¾@7u‹‘ w@5#÷ÎÙ‡Á.„M‰ûçm@4PA‰7KÇÁ.„QnÙ‡@4ÚQÎÁ.„NÜC,¥@4ÚQÎÁ.„NÜC,¥@4ÚQÎÁ.„NÜC,¥?˜²Tëg@8#˜@8¾:@8 >+@8Iç@8Ù?Žýf´ù:ú@8Î÷@8i§@8Å@8S@8û—? ‰M„6™~@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø;@«Ý¼í‘hs@«Ý»D—Î@«Ý¼í‘hs@«Ý¿ZÑ*@«Ý¼í‘hs@«Ý¼ÃùÓ@«Ý¼í‘hs@«Ý»³_ø•@«Ý¼í‘hs@«Ý¹Ñ¶ò:@«Ý¼í‘hs@«Ý¸ÿÊ!>@“c®záH@“cÊÀƒn@“c®záH@“c¯ç¨/…@“c®záH@“cªˆ)8'@“c®záH@“c©ãìÖQ@“c®záH@“c¤Rß%¯@“c®záH@“c¨Ëèú@8}:’£@8õHt4F@4.5?|í‘@41 k¹Œ~@3$¼j~ùÛ@3$®za»°@3 -0U2a|@3 /ñÁÐÅ@3 -0U2a|@3"æQ–±@3 -0U2a|@3 à¡wǘ?˜—"ÝÚá?’ÇŠb4?‘\Уp±•?³©€hš?”[P"mr?Þ@;#Ö?±I€ ¢´‡?”ûP–˜?‘5QTà¡?ì_Ú²±Z?•X1-?^ÅtÙ¤C?ªÏ*DU™?¹ç^2¢+?‡Áã$µG?ˆû™‡îf?Š>º¶Æ?ŠŒ'ê^`N@@&@$@&@8@0?ð?ð?ð?ð?ð?ð¿BæÞøl¿ULJÇÀ?5Q‰þ0ÇÒ?WCiD,‚F@«ÝºZME@“c©Ì÷2ç?P›üî?k(Ž&;ZÞ?šfÄ-£õ?Ê–Œ*@ŸpÇ}UèŽ@<@¦wKƧð@¦w -=p¤@¦wKƧð@¦w¨æd@¦wKƧð@¦{,mIm@¦wKƧð@¦~<ñ·l@¦wKƧð@¦qù³…Ñ@¦wKƧð@¦v*(²"@™ @ƒn˜@™ =ó¶E¢@™ @ƒn˜@™ GÀ{þÜ@™ @ƒn˜@™ 6”ŒEž@™ @ƒn˜@™ c7Ž"@™ @ƒn˜@™ W7#Õr@™ @ƒn˜@™ G!cÄ @6¥öý!ÿ.@6¥ôui×@2é‡+ @2À%3þ@2RÐå`A‰@2㣭Q’@2&YJôðØ@2 Ÿš¶Ã@2&YJôðØ@2/ûR´HÄ@2&YJôðØ@21¢ûmEN?|Ñb×¶@?’,/*¦!Û?”¿’ C%²?‹úßb¦ƒ…?žìÍýÅG8?œÉ…»ã¤Œ?€‘gQÚÃ?”¦HïÃå?˜(32“G?¼Î°ß@?¢+,PíË?¡—@©…÷O?’—Å·zÉ?‘ÀžÂœ?‡¨¶â+‹?‘»ªy@?÷ºYÇó„?«£¡@@(@"@ @8@;?ð?ð?ð?ð?ð?ð?GÛð´?oÀðø?VVÞöoº?aæ„I”ƒx@¦xÊÇ @™ LßÿSÖ?rÓt:I°U?~¼²¿ƒI?ì޷舜,?ú”¡û1 |@Ÿch™[qÈ@=@©€ÚŸ¾vÉ@©€Ó¶E¡Ë@©€ÚŸ¾vÉ@©€Ù k¹Œ@©€ÚŸ¾vÉ@©€ÐË)^ž@©€ÚŸ¾vÉ@©€â Iº^@©€ÚŸ¾vÉ@©€Øl"h -@©€ÚŸ¾vÉ@©€Ù¦µ @¬8*~ùÛ#@¬8*~ùÛ$@¬8*~ùÛ#@¬8'Ë)_@¬8*~ùÛ#@¬8-ÅÖ8†@¬8*~ùÛ#@¬8*™0¾@¬8*~ùÛ#@¬8+'»1@¬8*~ùÛ#@¬8*dÂø8@7­¥œàv@7«íúCþ\@3W+ Iº@3TmÅÖ8†@2¤¼j~ùÛ@2Ÿ¼@1æYJôðØ@1ç8}¿I@1æYJôðØ@1å¼£n/@1æYJôðØ@1åÂ\(ö?‡YÍ_?’ -ܦ%Ö?’ >(lQ ?Ž £Ú?“”>C,4?’¯-! )m?Ÿ‹‘+-/Ü?˜Æ&ÀÒ ˆ?’F^ì¼Sï?‘W×ý°A?’l{9ÙŽ?“{P»á?³czƒ—­?•<€¥¿ý¢?‘c‚ׯ?ƒì%­¹Ï‘?‡L8õASÎ?‡gϵ’õ@@@@@*@*?ð?ð?ð?ð?ð?ð?Z>;î0>æÐSU?\ÕyÞn×? ñb†•F#@©€ÚžÙ|@¬8*©Óð˜?~6ºQÒà=?8²™¶vQ?úS«¾ t?fúEíº¦@Ÿm—Eû€Ã@>@®œ]/Ÿ¾@®œ]ó¶E£@®œ]/Ÿ¾@®œ]—ö+j@®œ]/Ÿ¾@®œ]ÈK]@®œ]/Ÿ¾@®œ]/Ÿ¾@®œ]/Ÿ¾@®œ\C,¥{@®œ]/Ÿ¾@®œ\žì¿²@¤–“u@¤”ýó¶F@¤–“u@¤—eýŠÛ@¤–“u@¤–+jçÕ@¤–“u@¤•$Ý@¤–“u@¤”ðØDÐ@¤–“u@¤•Ϫ͟@6Ç>«6z@6Å8ï4Ö¢@1Œí‘hr°@1‹'»/ì@/ãn—P@/âø7´¢4@/³üPH@/°£× -=q@/³üPH@/²° Ä›¥@/³üPH@/³33334?|öOÿÝ?š¾ßÍZ?‘šÕU#?‹¦ ŸYÔ?‘çG¸?‘W_Ì?|¬Çëý ?’ùÎ {?ŽËÜ¿€?EÇàÔPà?‘ ·èf?«àÓ RÆ?‡}¤íý?îŠõ ?‚|׿pZ?ƒì%­¹Ï‘?†Ë¢L1Ù?‡?®\Âä@@@@@,@,?ð?ð?ð?ð?ð?ð¿5 -à?0?}ÛmÀ?eÈwßxã?ÂØÊ73A@®œ]@:@¤•<¾šÓ?0= õ˜~?4HVwÙ×?ll9sÌ„—?tËà\†i;@Ÿfß(úI@?@¯Üµ?|í‘@¯Üϲ-@¯Üµ?|í‘@¯Ü²ÛÄ¢€@¯Üµ?|í‘@¯Üºvް_@¯Üµ?|í‘@¯ÜºW­Õ,@¯Üµ?|í‘@¯Ü²C\5‹@¯Üµ?|í‘@¯Ü¶kkºw@š{çl‹D@šŒÌÌÌÌ@š{çl‹D@šx9°_¢@š{çl‹D@šƒ 4Ö@š{çl‹D@š„)óÃ6@š{çl‹D@šxBÑF@š{çl‹D@šw•Ѿœ@9쿱[W@8õ¯fŸ@4; Iº^@4:äÆyÿ@3¤¼j~ùÛ@3¥¹„q$ã@3 -0U2a|@3 =­Öð@3 -0U2a|@3 ->˜£ïF@3 -0U2a|@3 £ _ -¥?†c£ïDì?’pvoK‹?“ñ>®kj?ŽØ„èà¯e?‘ºïö©1.?”éÅcÇæZ?¡ÍÜ -Ü?“sŒPì;Š?•²ùuq?ba§U¸?‘ ßäéAÒ?“¤A—Ñ„Ë?•ghZS ?Žb(!èIË?‰8: If…?„$Þ<‚B?‰é Hé‚?U#Ç–ø@@(@*@(@2@5?ð?ð?ð?ð?ð?ð¿yÓ&¾¿d‰5ö€?TÐüòœ|?D<3…@¯Ü»NÈÞ¨@šÝiZb?v^%@K ?[ÓÎí׬|?ëêjrBt?®×›e@Ÿm·©ÓÄ@@@¡½ñ©ûçm@¡½öE¡ÊÁ@¡½ñ©ûçm@¡½Ï–»™@¡½ñ©ûçm@¡½Ðÿ—$t@¡½ñ©ûçm@¡½Þߤ?æ@¡½ñ©ûçmÁ.„€@¡½ñ©ûçmÁ.„€@¬/B\(ö@¬/XÔýó¶@¬/B\(ö@¬/.óMj@¬/B\(ö@¬/@hÛ‹¬@¬/B\(ö@¬/;çl‹E@¬/B\(öÁ.„€@¬/B\(öÁ.„€@8Ì]cˆe•@8»W>«6z@43S÷ÎÙ@4²þÅm]@3¹7KƧð@3›íúCþ\@3ý!ÿ.I@2ýÈK]Ì@3ý!ÿ.IÁ.„NÜC,¥@3ý!ÿ.IÁ.„NÜC,¥?‚á²Olºü?¬„¸ßÜñ|?ªËîi‹à[? [@Ì{@8Iç@8Ù?˜ž^ƒÿ*ˆ?¨î+³M?¥Öä›?ŸÛ€l ì™@8S@8û—?¶j“êÜài?™¬¨YWî?”³Ž+k?‹Ûu¤ó†4@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøA@ª'ß;dZ@ª' …¸Q@ª'ß;dZ@ª'†Â&@ª'ß;dZ@ª' qv@ª'ß;dZ@ª'—Oß@ª'ß;dZ@ª'¼ÓZ†@ª'ß;dZ@ª'¡ÊÀƒ@­ÔàA‰7L@­ÔíÒñ©ý@­ÔàA‰7L@­Ô× -=p¤@­ÔàA‰7L@­ÔÔ¢3œ@­ÔàA‰7L@­ÔÆ$Ý/@­ÔàA‰7L@­Ô÷Xâe@­ÔàA‰7L@­ÔÓ¶E¡Ë@8™*0U2b@8ˆ´9Xb@3”›¥ãSø@3ˆÛ‹¬q @3)Û"Ðå`@3!4êJŒ@3 ù kº@2ý¥œàv@3 ù kº@2ð¸ºÇ@3 ù kº@2éÛ"Ðå`?„F/·ÿP5?”û#T©È?ŸM¾‰Å´?Œ'õ‚$5ñ?¡Ìº"æh?¦5^ÒYŒ?²C¨y3?˜&§dU(?  5q²Ó/?’ äÅ?·$uA Ç?ÁŠ2š`?ÅùðEû?‘5ø gµÒ?‹v'þ­X?‰E^uŠš?£Ü”~‡ÑT?ª7•"U›@@@@@(@(?ð?ð?ð?ð?ð?ð¿#ðÖ¹ ¿vx¤»­?SÄlW™’?‡Ô½d¦¬ÿ@ª' ´ƒÖ@­ÔÊYÎdm?sÓ¡‹(S?¶)”ÚÏ?Ü#ÃBÏ™?þ’7K¬ñ@@ŸiÝ‘ÙÛ@B@¡€äZ¬@¡€ä›¥ãT@¡€äZ¬@¡€ç“Ý—õ@¡€äZ¬@¡€çï².@¡€äZ¬@¡€åýŠÚº@¡€äZ¬@¡€äg8~@¡€äZ¬@¡€äZ¬@«¾‚ Iº^@«¾‚\(ö@«¾‚ Iº^@«¾€ªdÂø@«¾‚ Iº^@«¾ÊÀƒ@«¾‚ Iº^@«¾ohÜ@«¾‚ Iº^@«¾‚e+Ô@«¾‚ Iº^@«¾ [À@3òÃÉîËû@3òœwškQ@1Ô›¥ãSø@1Ô¢3œ¿@1´“t¼j@1³Ý—ö+k@1‚‚@·€5@1‚ø7´¢4@1‚‚@·€5@1ÊÀƒn@1‚‚@·€5@1‚&€IR?|öOÿÝ?ÖÈ ¼?’µ<ëvar?î®)„àµ?’Z†Ažj?‘£‡9²þ?|¬Çëý ?’r/BÖ?’±ä?’:u.ý ?‘¾ãazÅ?‘yÃúCŠ?‚˜YªüÏE?¨ ‰‹U)?ƒ¡É^&Ö?„€ã$V?‡?®\Âä?‡”_Õ­çW@@@@@,@*?ð?ð?ð?ð?ð?ð?ç‚0DEÉ@?)°£Óªa?Yæ.9ë@¡€äË_G@«¾‚Ô†Æ?Iyºþ°ï ?7µí´=óŸ? ]gð«€?{=ÅeHi@ŸfÂZ-@C@¨ð÷ÎÙ@¨ðzáG®@¨ð÷ÎÙ@¨ðÜÆ?@¨ð÷ÎÙ@¨ð:û~‘@¨ð÷ÎÙ@¨ð k¹Œ}@¨ð÷ÎÙ@¨ð8}¿@¨ð÷ÎÙ@¨ðr° Å@©šÌIº^5@©šÌ‹C•@©šÌIº^5@©šË’:)È@©šÌIº^5@©šÉ^ž @©šÌIº^5@©šÎ±Ä2Ë@©šÌIº^5@©šÏhÛŒ@©šÌIº^5@©šÐ¾ í)@5G>«6z@5Gy¦µ @1pÄ›¥ãT@1o¤?åÉ@1A‰7KÇ@1i­BÃÊ@03&Á½¦@0-í(Œç@03&Á½¦@0-(Œç°@03&Á½¦@0.—Oߪ¸ ?“ÌUõÎs¼@@@@@,@(?ð?ð?ð?ð?ð?ð¿gúe„?IcÛ’P?B~û”¹–S?Ú\Î;ÝË@¨ð5ö@©šÎ'ÌN?b„Å8ym$?7 ¢Út!?ϰMû$±Â?v24†/©”@ŸfJ½í;½@D@ ºc× -=q@ ºcÂà -@ ºc× -=q@ ºeo@ ºc× -=q@ ºe£µ`†@ ºc× -=q@ ºc‚>Y@ ºc× -=q@ ºd]¬|@ ºc× -=q@ ºbÑÌî3@«c -Àƒo@«c -¿Üö@«c -Àƒo@«c ãrèÛ@«c -Àƒo@«c vèöK@«c -Àƒo@«c ]Ìcñ@«c -Àƒo@«c -}šÜZ@«c -Àƒo@«c -(…£Â@3 ØDЩ@3 ñ,'¦7@1?|í‘h@1õ Ô@1t¼j~ú@1 ÿ»@08DЩ*@08Âþ[ü@08DЩ*@09¸Ž6@08DЩ*@0:,†ƒ„?}x—™9Oa?‘7ìyï%?óe6ºº­?|¬Æ Væ?’!_í<Ý?ÃFÝÖü?:Íí"íÕ?ÿr<&?‡'P„i?‚o†#BpW?Œ»G•Ýó?‚ëmÄãN?‚ê¬Ù:âk?†âq¯~ï—?†×ézÇ]*@@*@,@&@9@8?ð?ð?ð?ð?ð?ð¿C¦‹@¿pÞ0@?!SÁøpÉ?š?Ab6@ ºc¢qÁ¸@«c -¬ï¶ ?A2e»&ä?<¡ÿÀ›¨?ke!ræ”?„sdñ z -@ŸfötÄ÷/@E@žŠÙ‡+@žŠÙ‡+@žŠÙ‡+@žŠÞ3¢‚¨@žŠÙ‡+@žŠ×:&)×@žŠÙ‡+@žŠÚóì@žŠÙ‡+@žŠØ¿I @žŠÙ‡+@žŠ×„@Èó@¨¯Ù‡+@¨¯Ù‡+@¨¯Ù‡+@¨¯¨eá³@¨¯Ù‡+@¨¯ ÛÍ{@¨¯Ù‡+@¨¯óÚ‘Û@¨¯Ù‡+@¨¯è‹K@¨¯Ù‡+@¨¯ªkÿÕ@2T xFÜ@2T’8]@0ÞÙ‡+@0ÞÉ\@0V”@0R~¹1@0³&Á½¥@0³¥š…@0³&Á½¥@0³`$OÒ@0³&Á½¥@0³ÛÖCUº?É^ÈmÔ d?¾¡òE ë?‘7ë>a*?‹åPvÆoï?‘ çX‹Ñï?ëÝž2?ÐbMÝn½?’ËÙ‘%?‹^Ónu§?Z<ð?ˆ?÷êjãë9?k ö‡_?€b™Qž?Œµ PÜÞ?‚ŠxÝKhù?ƒè?ÉÐ?†ý\áè*¢?†õr {%u@@ @"@ @3@1?ð?ð?ð?ð?ð?ð¿Híµn:?2éÑ?&¶A™²4z?$4×ã›ï@žŠÙ!ë’@¨¯%¸‘ß?5Úötráh?3!γ M?fÿ‚&$Tô?_•UoØ· @Ÿs+O`Ñ@F@©±Rn—P@©±Rn—P@©±Rn—P@©±SüPH@©±Rn—P@©±Rñ©ûè@©±Rn—P@©±R×sü@©±Rn—P@©±R¼£@©±Rn—P@©±QÞi­D@ `ÿ|í‘h@ `ÿ|í‘h@ `ÿ|í‘h@ `ÿö”G@ `ÿ|í‘h@ `þÿ—$@ `ÿ|í‘h@ `ÿ¼@ `ÿ|í‘h@ `ÿö”F@ `ÿ|í‘h@ `ÿö”F@0¯O „M@0¯O „M@*Š~ùÛ"Ð@*Š~ùÛ"Ð@)ΗOß;@)ΗOß<@(b¶®~@(Œ~($ @(b¶®~@(Œ~($ @(b¶®~@(rGE8ð?ðO­W¬ÃÆ?Òç{íj?‘!!Ø×‹7?‹¨þ„/š?íOþtà?¸û:?ð„ƒ;0?’ ÃCÀ`ú?}Ò€º‡?3.Ylî?ÔÒ@úˆ‘?PS2K¯™?ð!̃?Œ¬Çëý ?‚q6tNø7?‚ãaÎúvh?†ˆ#.÷?†‰Oú|q?ð@@@@*@,?ð?ð?ð?ð?ð?ð¿=sÉ@¾øXùà?ÜiŸžn}>àÃ~'â`@©±RGš½Û@ `ÿ Ľ?%иg [>ïFý©VN?G##`L>Õ§ñ5ëÎ@Ÿs‹ÕÈUÇ@G@¯CMOß;d@¯CM‘hr°@¯CMOß;d@¯CNHè§@¯CMOß;d@¯CM‘hr°@¯CMOß;d@¯CMÒñ©û@¯CMOß;d@¯CK¬q ³@¯CMOß;d@¯CKP°ûÖ@œW£× -=q@œW£× -=q@œW£× -=q@œW¢¶®}V@œW£× -=q@œW¢e+Ó@œW£× -=q@œW¢‚@·€@œW£× -=q@œW¡ä÷eþ@œW£× -=q@œW¡ÿ.C@/„?åÉ@/ƒñA [À@,Üj~ùÛ"@,Ü64ê@,íOß;dZ@,íquŽ"@,á-w1Å@,àƒn—@,á-w1Å@,àÞÒˆÎq@,á-w1Å@,àëíå¦X?É_¦›ùôä?Òç{íj?‘,fŸCô6?‹½XQê>æ?ÿ £‰¸9?ºª€LI?ÐbMÝn½?’MœœN ?ŽËÜ¿€?K·‘d]?ß’ºèh!?Uÿwëâ„?€}æô+,b?Œ¯þuõí?‚|׿pZ?‚ù8 ±^?†žóB» “?†žóA,Þ}@@@@@*@(?ð?ð?ð?ð?ð?ð¿RhĦ¿Or{l?0‹!u¼ À? †eøj…@¯CLoÇê@œW¢+–T??Ù#á¤Tm?ðùõò= ?xÐ1o§=Ð?1~fløa@Ÿs -Mù…@H@¥ôØ“t¼j@¥ôØÔýóµ@¥ôØ“t¼j@¥ôÙŒ~(%@¥ôØ“t¼j@¥ôÙ‡+@¥ôØ“t¼j@¥ôÙJôðØ@¥ôØ“t¼j@¥ô×Ûô‡ý@¥ôØ“t¼j@¥ôØFÜ]@¤ÝõÂ\)@¤Ýö“v@¤ÝõÂ\)@¤Ýõöý!ÿ@¤ÝõÂ\)@¤Ýõöý!ÿ@¤ÝõÂ\)@¤Ýö4ê@¤ÝõÂ\)@¤Ýö4ê@¤ÝõÂ\)@¤Ýö4ê@0è†YJôñ@0è†YJôñ@)Üj~ùÛ"@)ÜPHð@(–E¡ÊÀƒ@(–+jçÕg@'ÑÑN;Í6@'Ñ·Xâ@'ÑÑN;Í6@'ÑÑN;Í6@'ÑÑN;Í6@'ÑÑN;Í6?É_\p)Ï?ï1ïºÅ?‘Ûü†Nã?‹¹GüÞõ?ëÎ@ A2?¼‚Ë¡K?ÐbV‡,?’5CàQ?~ËQ§?6) }’ë?Ñ¡b£?¾?R g!Ú¢?€bMÕky?Œ­·Ž~('?‚oÁÆÜ§÷?‚ãaÎúvh?†ˆ#.÷?†ˆ#.÷@@@@@,@,?ð?ð?ð?ð?ð?ð¿C–d¸>’¢=ˆ?.·´ú ³Î>¶–XÈ)ô@¥ôØ|sñ@¤Ýö-š?=‡Ü8w7>Å^Èò|èË?ud¶-Î1ª>„å -^SÀ@Ÿs–÷y¼@I@¦Á‰7KÇ@¦Ã× -=q@¦Á‰7KÇ@¦¿Ø­«Ÿ@¦Á‰7KÇ@¦Âh Ô•@¦Á‰7KÇ@¦Á–R½<@¦Á‰7KÇ@¦¿b¶®}@¦Á‰7KÇ@¦¿Ø­«Ÿ@¬µfffff@¬µi7Kƨ@¬µfffff@¬µg¯·é@¬µfffff@¬µiã½@¬µfffff@¬µg_oÒ @¬µfffff@¬µg_oÒ @¬µfffff@¬µf§ï³@6Û¹Œ~($@6ÛW>«6z@1=‘hr° @1÷?ƒíÈm½!¿?ƒE 8?†Ë¢L1Ù?‡2[síç@@@@@*@,?ð?ð?ð?ð?ð?ð¿M…;fœ¿A¦' ?(ïíë„Ãð?ùŠÖ Ag@¦Á_ÃÛ@¬µgÉt,¶?E»–lóZ?3GC}Õ?Œai‰ :?n„=K³ô@ŸjéÁ$J3@J@¨BÓt¼j@¨BÒn—P@¨BÓt¼j@¨BÖ8†YK@¨BÓt¼j@¨BÖÕϪÎ@¨BÓt¼j@¨B×Xâ@¨BÓt¼j@¨BÖð¹@¨BÓt¼j@¨BÖý!ÿ-@ òcS÷ÎÙ@ òc•%@ òcS÷ÎÙ@ òaÿ.Hé@ òcS÷ÎÙ@ òaG®{@ òcS÷ÎÙ@ òaÿ.Hé@ òcS÷ÎÙ@ òa|ÚP@ òcS÷ÎÙ@ òb Iº^@6+µsê´@6* ÞÒ@0×+ Iº@0Õ8ï4Ö¡@0Ct¼j~ú@0@‰ 'RT@/3üPH@/-‘hr°!@/3üPH@/-quŽ"@/3üPH@/-í(Œç?3ßa=„?û¤â]?”¦¢œŒÕ?’KŸÐÇ¡?‘ÇöÃÞ`?‘f]£àG?„F/·ÿP5?’HGªÂÛ^?‘twæ³?ø,~[´?‘„ÅMè?‘¿¤üî¾Ö?‚˜YªüÏE?ŒÛÏ·+?‚§W®ê ?‚ôhBì^?†¯Mž684?‡Ä­‹›Ü@@@@@,@,?ð?ð?ð?ð?ð?ð?OÞUªä¿:­Ã—¨?5&@d[«?2Eg™@¨BÕ˜½È@ òbeG¤Ú?Sÿ‚l¼XL?@X]Œ‰v~?¥QÆ–î?‚¤è&Hóô@ŸjÙÒ’ªa@K@¦Õ;dZ¬@¦Õ0£× -=@¦Õ;dZ¬@¦Õ8†YJõ@¦Õ;dZ¬@¦Õ;‹¬q @¦Õ;dZ¬@¦Õ;quŽ"@¦Õ;dZ¬@¦ÕA:’£@¦Õ;dZ¬@¦Õ<¾ß¤@­ùÚ¬1@­ùÚ¬1@­ùÚ¬1@­ùà[À7@­ùÚ¬1@­ùÛJ#9À@­ùÚ¬1@­ùß;dZ@­ùÚ¬1@­ùÛquŽ"@­ùÚ¬1@­ùÚÔ,<ž@7ÖšÔ,<Ÿ@7Ý‘hr°!@4|í‘hr@4¾ í(Œ@3.ùÛ"Ðæ@30–»˜Çâ@2èè§æ›@2ê0U2a|@2èè§æ›@2øð¹@2èè§æ›@2÷Xâf?™™™™™™š?‘+ùÔ!½Š?™À‘öô{?—IW`g’?¡“&t‹®q?¥ùÏ@Ì?“Æ×q„nï?••´þDê‘?’Qÿc -?šl Ĩ™ë?¢Œ~0d?£–Úd ªØ?‹’Ú[ßô?[™ÕÈ™8?ŒÊ­#г_?ùïJÓ?•°QŸ?]Í?‘ýÂHåÅÐ@@@@@,@*?ð?ð?ð?ð?ð?ð?j¼'T-?@äAP?PiÓ€7b?G×¾>¸F@¦Õ9¨H«À@­ùÜ Ñ"?kF7ÅnÛ?g$\/ rU?»”WúP?´¸­ùû¨y@Ÿi5˜(%ß@L@§@\(õÃÁ.„€@§@\(õÃ@§@ -=p£×@§@\(õÃ@§@ ÌÌÌÌ@§@\(õÃ@§@‚©“ @§@\(õÃ@§@O „L@§@\(õÃÁ.„€@«rk IºÁ.„€@«rk Iº@«ri*0U2@«rk Iº@«rt¯O …@«rk Iº@«rt¼@«rk Iº@«rn.±Ä2@«rk IºÁ.„€@8è†YJôñÁ.„>¤µÜÆ@4›¥ãSø@4䎊qÞ@3€å`A‰7@3~ÒˆÎp;@2ž«6z‘@2›íúCþ]@2ž«6z‘@25¨Xy>@2ž«6z‘Á.„NÜC,¥@8J¨?–ϱúQm‡?—U’¹DÆü?’KŸÐÇ¡?—ÒGþUÀ@8Ù@8J¨?žd»®~?ŸfújŒ‚$?–¼Š˜L¥ø?–{ôÖãWª@8û—@8p÷?˜êJìž.Ô?˜èò_?ŒOà†cÍ?޹Þwò,@8 Ø@@@@*?ð?ð?ð?ðøøøøøøøøøøøøM@  ¸Qì@  ûçl‹D@  ¸Qì@  !-w1@  ¸Qì@  @@  ¸Qì@  -”!-w@  ¸QìÁ.„€@  ¸QìÁ.„€@§På`A‰@§?ÜcRú@§På`A‰@§yXbN@§På`A‰@§4SŽóL@§På`A‰@§Åo@§På`A‰Á.„€@§På`A‰Á.„€@7ý:’£@7ùcÜF@4|í‘hr@4…Y³Ð|„@3gKƧïž@5S¶E¡ÊÁ@2QÞi­BÄ@1±Ä2ÊW¨@2QÞi­BÄÁ.„NÜC,¥@2QÞi­BÄÁ.„NÜC,¥?¿¹5,±?­PŒ“ð?·¯iÓ—€?Ó“Õ]ãõ–@8Iç@8Ù?…ðE[i)?°Ø1ÀÎ?É% ¹®U??Ó—F)okN@8S@8û—?ŸáRË}1Á?Édþ_ËÚ?ð:S¦¯3V?¶ÀÏÞ~Ð*@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøN@¢Që…¸R@¢Qö‡+ @¢Që…¸R@¢Qöð¹@¢Që…¸R@¢QñA [À@¢Që…¸R@¢Qôã¼Ó[@¢Që…¸R@¢Q÷Xâe@¢Që…¸R@¢Qôã¼Ó[@§*WOß;@§*\j~ùÛ@§*WOß;@§*YõY³Ð@§*WOß;@§*["Ðå`@§*WOß;@§*T¢3œ@§*WOß;@§*^¸Që…@§*WOß;@§*_¼@8­¥œàv@8«Í5¨Xz@3k¥ãS÷Ï@3i“ àÞÒ@3$¼j~ùÛ@3!ò×s@2«xFÜ^@2¦fffff@2«xFÜ^@2©*0U2b@2«xFÜ^@2ª0U2a|?žˆ2}?éDEâ©Ö?•¬¡´¯ÿ'?ŽõÕJ?“&Á½¥?“°™²!¨w?óA[ØïF?’‡Iš÷?ŸfújŒ‚$?ø,~[´?“ðÐ ?•lÓªü<?‘7#Œ!xv?–Ê Dì¢S?lû˜¡R?ŒžVE’D?ŒÙ”!Çx‡?^^ω•@@@@@$@(?ð?ð?ð?ð?ð?ð¿*˜p™Ð?@ýØ\?2™1y6™?Zõ.5$®@¢QõìÆ7˜@§*ZüP -™?S­ŽF}è“?x93N­ko?ªÞºdù\?ëÌJ¼ „;@Ÿj x˜KŽ@O@ ÈdÝ/ Á.„€@ ÈdÝ/ @ È[Õ¼â@ ÈdÝ/ @ Èa´£û@ ÈdÝ/ @ ÈhÕÇ’Ë@ ÈdÝ/ @ ÈjÌÞ—˜@ ÈdÝ/ @ È]Dëø@•:p£× -=Á.„€@•:p£× -=@•:Ÿ -}"@•:p£× -=@•:T®îÂ@•:p£× -=@•:mÞŒö@•:p£× -=@•9ãù}*-@•:p£× -=@•:{^Æ@2‘|ÚQÁ.„>¤µÜÆ@,²-V@,_F»£d¾@*rn—Oß@*X¾¥ó;”@)æL/ƒ{K@)Þ@7È»@)æL/ƒ{K@)°ù¡u?¡@)æL/ƒ{K@)ÛòƒB4@8 -Näy?½Ã·&R?‘ÄÃ-¹š¸?Œ1Ë)¿ð?“\'8•Ý?’ *ëvL@82rê?—4‘êL?”^Äp@â?’o„ÓøÎ?’ÈŽµB[0?PRž,S¬@8L?‘la¹’é?‡>xLpïß?†ÄŒ³Av?†©J¯{?¯5»ù@,@,@0@3@8?ð?ð?ð?ð?ðøøøøøøøøøøøøP@¨\úáG®@¨\þ¸Që…@¨\úáG®@¨\ù‡+@¨\úáG®@¨\ÿ|í‘i@¨\úáG®@¨\ú^5?|@¨\úáG®@¨\ò•éá±@¨\úáG®@¨\õéá°‹@¯5å`A‰@¯5å`A‰@¯5å`A‰@¯5ÎÙ‡@¯5å`A‰@¯5XQë… @¯5å`A‰@¯5)º^5?@¯5å`A‰@¯5Që…@¯5å`A‰@¯5®}Vm@7Ñ|ÚQ@7Òu%F -¦@3J^5?|í@3G®záH@3’Ðå`A‰@3‡ -=p£×@1ÏO „M@1ÈÇâ‚@¸@1ÏO „M@1̾ߤ@@1ÏO „M@1Ì‹C•?|öOÿÝ?Æ¿5›7÷?‘WßÈDö@?Uÿyu”#?“”>C,4?‘®¬nÒMê?}Ñ¿ž,?—Œ,T®?’üüšë‚J?RLnj?’l{9ÙŽ?’vMëôUu?Š6EŸòÙ?Œ²ÅŒÕ6?•Îo´ÀÙ?ƒGϵ¨í'?Œx[‡:©?†ùadô|@@@@@@?ð?ð?ð?ð?ð?ð¿aøÃ(?dªt` -?@õ ð˜Ù?eoćD¢j@¨\ú71*¼@¯5¶=§v?`þÏ‘2‹›?…XËR]µ4?˳Ç<Ü@<*Ÿù¯@Ÿfr »Ä@Q@¬˜™‡+@¬˜ç–|®@¬˜™‡+@¬˜çâ°@¬˜™‡+@¬˜âÞ›@¬˜™‡+@¬˜‚ÃÉîÍ@¬˜™‡+@¬˜Ž¸"3@¬˜™‡+@¬˜ŽµÇD@˜Á™™™™š@˜ÁÙëø5@˜Á™™™™š@˜Áÿ0(/@˜Á™™™™š@˜Á 7fÖ@˜Á™™™™š@˜ÁT¦¨Í @˜Á™™™™š@˜ÁhNsß@˜Á™™™™š@˜Á}ˆ`<@9cg ù l@9f•ª'Ì@6}‘hr° @6jŽ2Ò6}@5K"Ðå`B@5GÍöõÚ@40–»˜Çã@4+ZÅJí¬@40–»˜Çã@4.vvÝ)þ@40–»˜Çã@4)²»å2×?a÷nñ?·(¨Ãõ?µÂJFvYß?–ä^£ëW?•)Žb•3?–È¥æ#@?‡ôCbyV?µeV¬Ÿ¦2?¸t%I?š›õûîòÿ?—”ÿwúoÄ?—³ pA™Ÿ?±Ç÷*¶?®ÔÀ³»¤?ž_xÒ®8?’eºÄX?—³½I?’^bì’+Ø@@*@,@,@5@7?ð?ð?ð?ð?ð?ð?dš÷ŽÔ¿ˆÖÅʤ?H9ï¦ò²ñ?r†­ô¢@¬˜‡2z¯b@˜Áœíš5 ?i -—9•€?“KYjP?Ò¿'ÉUê@ OE}r@ŸgDHÿÌ]@R@¡+^¸Që…@¡+^¸øó@¡+^¸Që…@¡+YÇ.¬ð@¡+^¸Që…@¡+^fŒíz@¡+^¸Që…@¡+bu%F @¡+^¸Që…@¡+S¤œu¥@¡+^¸Që…@¡+YH,í@­’½p£× -@­’½Ú#Õ@­’½p£× -@­’¾×„@­’½p£× -@­’²4¢Ý@­’½p£× -@­’±e>²@­’½p£× -@­’º…Ǥˆ@­’½p£× -@­’¹ÄtÊÃ@6½:’£@6» Ⱥ¢p@3‚° Ä›¦@3‹wd­ƒ@3²-V@3‘žÿÕ‹@2ºÔ,<ží@2ÃÕh׿@2ºÔ,<ží@2»góNÈ@2ºÔ,<ží@2¹ˆùò?|¬Æ Væ?nžùR¨?“·r6xµ?’ætðf*?‘Anz;©?“o^¤ì?e™”XWø?’_]ý¶?š5”ÜEy¬?’‚!A¹a*?‘]Qlùþñ?‘|Àƒp7%?†`­² v?ŽSÔ– Ò? Ý³K“Ø®?†t{ùÒi?ŠèÇê)`Ê?ŠWrè±û@@ @(@*@1@2?ð?ð?ð?ð?ð?ð¿Wè4¿SÓ¥p?RômвfÒ?Se’§Ë@¡+[ãñöv@­’º˜úµc?s?Nkß¹?s½vWhª?ðÐâÖ‚‘5?ñÃt)9”5@Ÿf¬½üŠ @S@£ÅÀ@£ÅÇ Cî@£ÅÀ@£Ã㯷é@£ÅÀ@£Âèr° Å@£ÅÀ@£Äº…‡“Þ@£ÅÀ@£ÅÝp£× -@£ÅÀ@£ÅÔýó¶F@œÆRñ©ûç@œÆ–H‹÷@œÆRñ©ûç@œÄ’£S&@œÆRñ©ûç@œÌV‡+ @œÆRñ©ûç@œÇBÞѸ@œÆRñ©ûç@œÆ5?|í‘@œÆRñ©ûç@œÅ -Àƒo@6¿–»˜È@6©Ãá6Þ@2Œí‘hr°@1hŒç¯¸@1Àå`A‰7@0¥m\ú¬Ú@1Œ~($ @0œàuöþ@1Œ~($ @0ç_oÒó@1Œ~($ @0ÇsüPH?™I'%ö«?Þ'gj¯Fs?À÷½„#µ?ºìl±,IÔ?Ÿ´°îéõl?—‡XE%:?‘ɱb)Q?çÁ£ÝÊ?Î ØÒë>?§Ê»1ð ]?§ò0û˜/f?lINõÕ„?¤ûŒÆ>³?¶'{%ñMÍ?²HFÜOu?ªHŠW ?†l&þ?²˜bè#õÜ@@@@@@?ð?ð?ð?ð?ð?ð?n Ž&¿£ÞŠ€€?‰+²¨eg?ŽÉ*‘|@£ÅÌ'ùÒ@œÅÕ€Ú?«(SI˜ˆ?±›Î.×â²@:‘”9ÁäB@S-š¾ê4D@Ÿl#߉Ž@T@ªþvÈ´9@ª@ªþvÈ´9Á.„€@ªþvÈ´9Á.„€@ªþvÈ´9Á.„€@ªþvÈ´9Á.„€@ªþvÈ´9Á.„€@ªÁ„›¥ãT@ªÁ†§ï²@ªÁ„›¥ãTÁ.„€@ªÁ„›¥ãTÁ.„€@ªÁ„›¥ãTÁ.„€@ªÁ„›¥ãTÁ.„€@ªÁ„›¥ãTÁ.„€@7«µsê´@7­—ö+jè@4¡hr° ÄÁ.„M‰ûçm@4q‰7KƨÁ.„QnÙ‡@4Eœàu÷Á.„NÜC,¥@4Eœàu÷Á.„NÜC,¥@4Eœàu÷Á.„NÜC,¥?€‚ñêã @8#˜@8¾:@8 >+@8Iç@8Ù?‚á²Olºü@8Î÷@8i§@8Å@8S@8û—?°xÈŸˆ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøU@£9V“uÁ.„€@£9V“u@£9W•÷»@£9V“u@£9T¥ù@£9V“u@£9W] °H@£9V“u@£9_eÓQ²@£9V“u@£9\磔@”ŸÎÙ‡+Á.„€@”ŸÎÙ‡+@”ŸÈë­s*@”ŸÎÙ‡+@”Ÿ×7+=|@”ŸÎÙ‡+@”ŸÅ ÁûS@”ŸÎÙ‡+@”ŸÒz7Pb@”ŸÎÙ‡+@”ŸÈé»…@2ò䎊Á.„>¤µÜÆ@/Û"Ðå`@/UŒ«P@-Ýó¶E¡Ë@-Ùê Èà@.žš@.+)Ò@.žš@.%Åç F@.žš@."O‡Ûä@8 -Näy?ÄNçÍ"?‘bT]u?Œ6¤ÛŠ/‚?’ütAýƒ2?’ÏÇÙ×@82rê?’OÃÛ¡?ÁŸxð?[› —çë?’Hrß`?‘Eг¿ô@8L?,Cì»Q?…ÏŸ´£ö?„¹êˆr‡ ?‹/f¦§D?$+½ïˆ@@$@"@:@6?ð?ð?ð?ð?ðøøøøøøøøøøøøV@ ,A‰7KÇ@ ,BÐå`B@ ,A‰7KÇ@ ,%®æ1ù@ ,A‰7KÇ@ ,:ÓFÿ@ ,A‰7KÇ@ ,&§è@ ,A‰7KÇ@ ,1”šÑÎ@ ,A‰7KÇ@ ,57ÓNL@¯"¬1@¯"”Ø×@¯"¬1@¯" íRi¾@¯"¬1@¯" Tù;r@¯"¬1@¯"uUÂ@¯"¬1@¯"Ñ{¿@¯"¬1@¯"âÚx@5‘|ÚQ@5‘Ö@2Ô›¥ãSø@2ê›A›4@2t“t¼j@2wÿêÉØ)@1èè§æ›@2gÌ…ô@1èè§æ›@1älŽ-Ò@1èè§æ›@2_Õ‰¤æ?ùª¨?¼‚Ë¡K?ÐbV‡,?’ ,øÕC©?œõLÁE?@§[*^?ÝIMÎ?X78›š?€cPßQª?Œ°¶.Ä+Æ?‚† SFò?‚ð'ã:ÂÝ?†l&þ?†ŠúЀ>(@@@@@,@,?ð?ð?ð?ð?ð?ð¿G÷XR8?ž¸?©Pÿ –?Žy9û•@¦„úBôz@¨ûMÔÖFÅ?+“•.*M5? ƒ$D'æ?RœÙ‚â@?8lX[.@Ÿsà†µË@Z@ û -=p¤Á.„€@ û -=p¤Á.„€@ û -=p¤Á.„€@ û -=p¤Á.„€@ û -=p¤Á.„€@ û -=p¤Á.„€@šgl‹C–Á.„€@šgl‹C–Á.„€@šgl‹C–Á.„€@šgl‹C–Á.„€@šgl‹C–Á.„€@šgl‹C–Á.„€@8L]cˆe”Á.„>¤µÜÆ@3\Iº^5?Á.„M‰ûçm@3H“t¼jÁ.„QnÙ‡@2 ¿±[W?Á.„NÜC,¥@2 ¿±[W?Á.„NÜC,¥@2 ¿±[W?Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø[@«óËÆ§ïž@«óÌ‹C•@«óËÆ§ïž@«óÎ}Vlô@«óËÆ§ïž@«óÊÚ¹õ[@«óËÆ§ïž@«óÇRT`ª@«óËÆ§ïž@«óÊ0U2a@«óËÆ§ïž@«ó̲•éâ@©0¥`A‰7@©0£•&@©0¥`A‰7@©0¦éxÔþ@©0¥`A‰7@©0¢‚@·€@©0¥`A‰7@©0¨K]Ìd@©0¥`A‰7@©0«íúCÿ@©0¥`A‰7@©0¦éxÔþ@6Ù*0U2b@6ÑÄ2ÊW¨@3û Iº^@4[À6â@3~ùÛ"Ñ@3‘ÑN;Í@2Þ«6z‘@2ä2ÊW§‡@2Þ«6z‘@2áN;Í5¨@2Þ«6z‘@2áA [À?|öOÿÝ?ZÁ».œ?‘„ë2‘~?•ýS0H†?•"§šmè?“‡SË{d—?óA[ØïF?’ ·6Öc¤?”_й@’?•Xî¨}iQ?› °Ö7?•lÓªü<?¦W¾ »ZÕ?”£®e›Ðg?Œznyž-i?Œw%è®?‹DVóö?ŒÙ”!Çx‡@@@@@,@(?ð?ð?ð?ð?ð?ð¿7âÐ# ?QM[ˆ?Ar[yq£?F³ÍLЃ!@«óËlAÜ@©0¦Ñú›Ë?c—åhúßù?fgǘn?ȧÞäK »?Â{Q'˜@Ÿi@xWC@\@¯h¦éxÔþ@¯hŽÙ‡+@¯h¦éxÔþÁ.„€@¯h¦éxÔþÁ.„€@¯h¦éxÔþÁ.„€@¯h¦éxÔþ@¯h}æšÔ,@¯h¦éxÔþÁ.„€@¡~ò° Äœ@¡~Þ¸Që…@¡~ò° ÄœÁ.„€@¡~ò° ÄœÁ.„€@¡~ò° ÄœÁ.„€@¡~ò° Äœ@¡N!–R½@¡~ò° ÄœÁ.„€@8£g ù l@8™e+ÓÃa@5T›¥ãSøÁ.„M‰ûçm@4ÝV”Á.„QnÙ‡@4hè§æ›Á.„NÜC,¥@4hè§æ›@4~ÿ—$t@4hè§æ›Á.„NÜC,¥? Å{¿Ž<º@8#˜@8¾:@8 >+?¦NMwE«@8Ù?•²»UbB2@8Î÷@8i§@8Å?¤ˆÒ¿@8û—?»±\[Pí@8 * @8p÷@8¶?®SrY@³5@8 Ø@@$?ð?ðøøøøøøøøøøøø]@¢f¹XbNÁ.„€@¢f¹XbN@¢fµÂ\)@¢f¹XbN@¢fµ?|í‘@¢f¹XbN@¢fܬ1'@¢f¹XbN@¢fÇ»/ìW@¢f¹XbN@¢f½ó¶E¢@¥³fffffÁ.„€@¥³fffff@¥³p|„µÝ@¥³fffff@¥³oAò×@¥³fffff@¥³_;dZ@¥³fffff@¥³„ŽŠqÞ@¥³fffff@¥³vz˜@9›¹Œ~($Á.„>¤µÜÆ@4Å?|í‘h@4Ñ:’£S@3Ë"Ðå`B@3ÖOv_Ù@3QÞi­BÄ@3q:’£S@3QÞi­BÄ@3oHË’:@3QÞi­BÄ@3k…¸Qì@8J¨?žþÿí©‚7?›mqò -×?º•÷ ?©h?Ñ$|?§ÙYlãp@8J¨?“—-´œc?Føë?wàËxR?¯s´~º‘‹?ª…›´î@8p÷?£} Â±ù? zkê 3U?¨¡ûðf?±ˆ€Ða?­Ÿ6÷0lP@@@@,@,?ð?ð?ð?ð?ðøøøøøøøøøøøø^@¨À©xÔýô@¨À£× -=q@¨À©xÔýô@¨À®—Oß@¨À©xÔýô@¨À¬‹C•@¨À©xÔýô@¨À©xÔýô@¨À©xÔýô@¨Àª~ùÛ#@¨À©xÔýô@¨Àª¦L/„@¯^¼j~ùÛ@¯^½ó¶E¢@¯^¼j~ùÛ@¯^»çl‹D@¯^¼j~ùÛ@¯^¾ùÛ"Ñ@¯^¼j~ùÛ@¯^¹Û"Ðå@¯^¼j~ùÛ@¯^¼í‘hs@¯^¼j~ùÛ@¯^½p£× @8쿱[X@8 Î_oÒ@3Ù‡+@3 IQ‚©@21‰7Kƨ@20ÞÒˆÎp@1½cˆe”°@1½¿HË’@1½cˆe”°@1¼q ²•ê@1½cˆe”°@1¼cñA \?Œs¤DÅÐ?ð}óßd?ð’FB:?ð_ŒB?‘oNÅ’+?’»«ÒñŒ?¦Ï±úQm‡?ð¢dx/?ð‡äR³s?ð‚àÓÁ?‘Uç·Býi?“‘k–šj?º f -¦?ðfÁbÂô?ð*wjs—?ð,’Ú|‚?‰/ã̽`ª?†Ü‘ °Ô@?ð?ð?ð@@?ð?ð?ð?ð?ð?ð?XZÍQ¿«¦€?$Þ³U^?&íxå‘9£@¨À©­x @¯^½BY0µ?Hþ&mÍ%µ?>ØeO…?†ÅÓId^¡?d(‡õ7@Ÿq(V -@_@«#öÈ´9X@«$Ò‹µr@«#öÈ´9X@«$]Õàì@«#öÈ´9X@«#øSò/I@«#öÈ´9X@«#úàÀ|@«#öÈ´9X@«#øL4¥;@«#öÈ´9X@«#ùˆ$êæ@™:e`A‰7@™:VC»™@™:e`A‰7@™:5_aT-@™:e`A‰7@™:JAªh @™:e`A‰7@™:F˜¦÷·@™:e`A‰7@™:29&oè@™:e`A‰7@™:9SÌ€~@87â‚@·€@8=ŠŸMÀ@3^Ù‡+@3M ŠJ”Ë@2)Û"Ðå`@2¨ç+?ô@1°–»˜Çã@1 A<2[@1°–»˜Çã@1 OSÑ Ö@1°–»˜Çã@1 ùËcKo?”e¡Æ<ìæ?—_ŠFw˜?“¯L¤™`¹?“yÏt¦>n?”‡'AUŠœ?œ«ãÜLl?™û-™,Èß? QNÞ0P?•Ht¨ë!?—›p µ?Ÿ–uœ‡?œÅ%7*V;? qD»Ó?Ž=¶ÁD]ø?†çAÇ«¢î?„V…¸Xl?Š -&¹}Ø?гjd«@@*@(@,@;@:?ð?ð?ð?ð?ð?ð¿kß{½¿køm€?L­ÇÏÕ/d?M¡‘Ðà×@«#ý;qP@™:Cº²®?hüê‰øR?j{¾Û…?Åešh'ª?¾í÷l`P÷@Ÿk_íŠ@`@©ïOß;@©ï?|í‘@©ïOß;@©ï!–R½;@©ïOß;@©ïp:û@©ïOß;@©ïÅm\ú@©ïOß;@©ï"ø7´¢@©ïOß;@©ï"\(õ@­Å:áG®@­Å8Që…@­Å:áG®@­Å6ð¹@­Å:áG®@­ÅBÃÉîÌ@­Å:áG®@­ÅJ Þ@­Å:áG®@­Å@ëíúD@­Å:áG®@­ÅH´9X@7ÞHè§æ@7Ò‚@·€4@4™º^5?}@4µöý!ÿ.@3ìj~ùÛ#@3ùXbMÓ@3«6z‘@3#¶E¡ÊÁ@3«6z‘@3!ÿ.Hè§@3«6z‘@3Ÿ¾vÈ´?¦NIÉ®š?µÜSÍ?œœê´°EÚ?§×…Õ ô? I×J j?”ªEñeX?ˆÿÀ)T¿Æ?©URZÁ?¥¾ _S?›Ñ¯•ú%¾?œ­3Ââ&†?•J佪™^?„+£QKø?¬Ö4•?­~¶Ùµx?’èïÅ42ô?–¿nè$„?™¼òQh@@@@@@,@$?ð?ð?ð?ð?ð?ð?e ɱj?jãS ?Cµå2?RuÏíﲬ@©ïÌÖJh@­ÅCQ%Dr?`¿øù°‹H?vüìvš_?ŸÂ–ïi-¦?ßãÊ„ @œì‹C•@œï‡y(@œì‹C•@œóÒ‚™»@œì‹C•@œí@å%%@œì‹C•@œ,/âî@6>«6z@6¥@@2ahr° Ä@2\5…ñfü@1t“t¼j@1pžiJð@1Š0U2a|@1ƒk)yA@1Š0U2a|@1…éUñ]@1Š0U2a|@1‚®š9ì?€”ëû·«?Ƹ^ Ûþ?‘ZÓKèbn?ŽÎì(y?ô¨lNR?’Êö 9¸N?¨Sp*?’ \¬Ý -’?‹Úð<î?‘ ÿØR7?í¢8yÆò?…ÿ’0„?ŽIÊäïàÿ?‚Uz]~?‚µ¾™¶ßA?ƒûÚ8±~?ˆ^¼n]?Œ[]ÂJrñ@@"@ @ @0@.?ð?ð?ð?ð?ð?ð¿`ç‡Ð0?ký>NÚ?G!:¥+@?g!óÜrŸ@©ŽÅ11@œþ*Ýý?g=È”º9?‡Äyw‹ì?×§/lÀ@:\¶š…@ŸgÇþ=0@c@«ô¼j~ú@«@«ô¼j~ú@«ïI³Ÿž@«ô¼j~ú@«íG¨~$@«ô¼j~ú@«ñzs›É@«ô¼j~ú@«õJS Ç@«ô¼j~ú@«ò?š ;@šÂäZ¬@šÂÜ(õÂ@šÂäZ¬@šÂn¼JЧ@šÂäZ¬@šÂ“\½_´@šÂäZ¬@šÂ~Z–@šÂäZ¬@šÂìˆçaŽ@šÂäZ¬@šÂ÷þ‚@8¯O „M@8B )¿@3\Iº^5?@3m®«ïc@2ìj~ùÛ#@3‡þz=6@2J0U2a|@2`5Æd§@2J0U2a|@2FuÊJ|ö@2J0U2a|@2C}öÐBà?~ì“?ÕÒJ?‘L™p‹1?“{•6kº? ³Ø¡Äí?‘»Y‰^ßz?“²lz)m? ®iØ©÷•?œR˜Ãš/q?’¾=E?šƒ%Ī?“7ŒgßBU?•¨ÀV8¼?”Ü"+y Å?‘·Të\y?Š©6'F‰?’`É€öM­?‹;nøänL?6éÒ€@@,@$@"@0@1?ð?ð?ð?ð?ð?ð¿iÝ]¡Ì?z`2?/?NÞxD^?ƒSq“ù\@«õç°5~@šÂÑ8²}ò?rÞî\õµ?žTоmÈ[?äéR5¾UZ@(Y{d`§>@Ÿm–xjÞR@d@¢!—Oß;@¢!£n—Ž@¢!—Oß;Á.„€@¢!—Oß;Á.„€@¢!—Oß;Á.„€@¢!—Oß;Á.„€@¢!—Oß;Á.„€@œèr° Å@œØbMÓ@œèr° ÅÁ.„€@œèr° ÅÁ.„€@œèr° ÅÁ.„€@œèr° ÅÁ.„€@œèr° ÅÁ.„€@8„¯O „M@8ß;dZ@5 Iº^5Á.„M‰ûçm@4±‰7KƨÁ.„QnÙ‡@4xDЩ*Á.„NÜC,¥@4xDЩ*Á.„NÜC,¥@4xDЩ*Á.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøe@©»dZ¬@©|í‘hs@©»dZ¬@©½¥œà@©»dZ¬@©¾5?|í@©»dZ¬@©½ó¶E¢@©»dZ¬@©ºÔ,<ž@©»dZ¬@©¹Û"Ðä@ {„›¥ãT@ {e`A‰7@ {„›¥ãT@ {ƒˆe”¯@ {„›¥ãT@ {„Z¬@ {„›¥ãT@ {‰7KÇ@ {„›¥ãT@ {×Ûôˆ@ {„›¥ãT@ {@N¥@6Ù*0U2b@6·_oÒó@1c÷ÎÙ‡@1b Iº^5@0—ï²-@0–fffff@/Š#9Àëî@/‡l‹C•‚@/Š#9Àëî@/‡Ë)^Ÿ@/Š#9Àëî@/‡_oÒó?ð°–Ž]?Æ4ÓLè?‘šÕU#?Œ:Z2‚b?‘oNÅ’+?×°ë*–w?ð°–Ž]?’{cü€øõ?ŠA)Nîá?RLnj?‘q1ýAt?ŒÙ¶êm¥?ð*wjs—?u/®Xã?‚‘´…=Cb?ƒ ?ÿ½?‡2[síç?†Ü‘ °Ô?ð@@@@&@?ð?ð?ð?ð?ð?ð¿]Ê>li¿%ðgÖœ?AÑjõĦ?2)ðÞ¿k—@©»¯ïÜ„@ {z\ÍL?PTNSðL?Aþp¹L?™.Œµmï?xâÄôrÑ@Ÿsˆª¶S@f@ “t¼@ n—@ “t¼@ ð ‚ @ “t¼@ `Kû:ñ@ “t¼@ ë_¶ªÉ@ “t¼@ ØZòöª@ “t¼@ Üþ¸þ@¦s(r° Å@¦s(á˜Vö@¦s(r° Å@¦s,º¨ÝÙ@¦s(r° Å@¦s9Øô{ô@¦s(r° Å@¦s,Ü]x!@¦s(r° Å@¦s#Æ7Î(@¦s(r° Å@¦s0R°­@6#g ù l@6"†?·À$@2}‘hr° @2€1h®@@1ÐA‰7KÇ@1©·%¨©7@1YŒ~($ @1OÆ•DS0@1YŒ~($ @1KdÅÕÖ@1YŒ~($ @18i áýÄ?~ì“?ÕÒJ?’s3O¥»?–‡¥Øñ8â?™:©»0æb?¥¹X"@L?¢ZýúIßP?}x—™?Ž*JŠË?…I‘ÒÁ/À?ƒ¼9XNÄu?ŒÙ”!Çx‡?²Ù->tÜÙ@@@@@*@*?ð?ð?ð?ð?ð?ð?eØÙÎ?\ùIJÀ?OÍ&$Y}?kÝfZîã@¤qÛ‘Œ>@©ö8tE6º?gAùkŽU?ƒœÐÂ1§”?É«[¼æ¼?û¸¡õiq@ŸaØ¿\K@h@­üŽV“Á.„€@­üŽV“@­ü®jÜó±@­üŽV“@­üBO:õ@­üŽV“@­ü¼r¢jX@­üŽV“@­ý=^v}~@­üŽV“@­ý €Å"è@š›^5?|îÁ.„€@š›^5?|î@š›ˆ–…Ž@š›^5?|î@šœ|WßF@š›^5?|î@š›`Ðå„­@š›^5?|î@ššÌ‘YA@š›^5?|î@šš¹X@ÔÔ@6 xFÜÁ.„>¤µÜÆ@48r° Äœ@3½wkÎM@4“t¼@3Íc'˜ó:@3J0U2a|@3j˹‰v@3J0U2a|@3'%î=‘@3J0U2a|@3-oÅO¨\@8J¨?¾ùÝŒ[¨?™Ñlqš³a?“÷¡ {îþ?´€ø2»ï?¶u­$í¸a@8J¨?ÂTãÉ«ÀŸ?™/6½Z¦×?¨³±t{ Ê?¼Ï²Uà?¹(®Àú š@8p÷?©´1öÔ?² FºÆã?‰¾ÂÀеa?£>hØè¤i?­…SÍóø@*@$@(@4@3?ð?ð?ð?ð?ðøøøøøøøøøøøøi@©|ò-V@©|ëÆ§ïŸ@©|ò-V@©{…¸Qì@©|ò-V@©{Œ¿±[X@©|ò-V@©{„M:’@©|ò-V@©{p¸»@©|ò-V@©{q4êL@£;dZ@£&éxÕ@£;dZ@£„·ö+jè@£;dZ@£„°Ë)^ž@£;dZ@£„¸Ôýó¶@£;dZ@£„ÈË’:@£;dZ@£„Àuöý"@5šÔ,<Ÿ@4÷$tSŽô@2¸r° Äœ@.S×Ûô‡@2 "Ðå`B@-(Îp:û@1Ê0U2a|@,OiDg8@1Ê0U2a|@,L‹C•@1Ê0U2a|@,N.±Ä2Ë?Ž=fA:?”C#ç…%?¤ìÔÓìö?žÑá•®ö0?˜íËj#?›b;ƒ°¾x?гá‡}?U -£?00?œÕ4FégI?¤u1ñ ?œ××€§©?ŸèØŸ#ߦ?µeão‘ñ?”܉a^±‚?Žd°3š>?'dÂã—…?޹Þwò,?޹Þwò,@@@@@*@*?ð?ð?ð?ð?ð?ð¿¶\„¤¤P?Ì>ÏZx´?‘ÇÈHi”f?¤=©î¬Lý@©|Y˜—H@£ƒÙ#[ô?²<•ÂqÉ?ŃXü+{`@UjèK\æ@y ïÎÌÚì@ŸgÖú×Þš@j@ £Á$Ý/Á.„€@ £Á$Ý/Á.„€@ £Á$Ý/Á.„€@ £Á$Ý/Á.„€@ £Á$Ý/Á.„€@ £Á$Ý/Á.„€@˜³$Ý/Á.„€@˜³$Ý/Á.„€@˜³$Ý/Á.„€@˜³$Ý/Á.„€@˜³$Ý/Á.„€@˜³$Ý/Á.„€@7°4mÅÖ8Á.„>¤µÜÆ@5B° Ä›¦Á.„M‰ûçm@5 ²-VÁ.„QnÙ‡@4Ç ù kºÁ.„NÜC,¥@4Ç ù kºÁ.„NÜC,¥@4Ç ù kºÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøk@ª(<í‘hs@ª(?¾vÈ´@ª(<í‘hsÁ.„€@ª(<í‘hsÁ.„€@ª(<í‘hsÁ.„€@ª(<í‘hs@ª(=ó¶E¢@ª(<í‘hs@ª(;"Ðå_@¯–ô9Xb@¯–üí‘hr@¯–ô9XbÁ.„€@¯–ô9XbÁ.„€@¯–ô9XbÁ.„€@¯–ô9Xb@¯–øQë…@¯–ô9Xb@¯–þvÈ´9@8cg ù l@8]w1Å@2Ìí‘hr°Á.„M‰ûçm@1È“t¼jÁ.„QnÙ‡@0ÜÚQÎÁ.„NÜC,¥@0ÜÚQÎ@0âMÒñ©ü@0ÜÚQÎ@0Ú¦L/ƒ|?1·†Æjñ@8#˜@8¾:@8 >+?ðŽºJ+½?“ d?3ßa=„@8Î÷@8i§@8Å?ðÅìq?”e!¶?©ÂnË“"Ý@8 * @8p÷@8¶?ð?oÚ•¼?‡Ä­‹›Ü@?ð@?ð?ð?ðøøøøøøøøøøøøl@¬t$Ý@¬tbMÒò@¬t$Ý@¬t ²•é@¬t$Ý@¬t£S&@¬t$Ý@¬t÷ÎÙ@¬t$Ý@¬t¼@¬t$Ý@¬t@N¤©@žÕ“t¼j@žÕ¯Ÿ¾w@žÕ“t¼j@žÕ‘4êK@žÕ“t¼j@žÕv_Ø®@žÕ“t¼j@žÕ‹¬q ´@žÕ“t¼j@žÕ”¼@žÕ“t¼j@žÕ‹’:)Ç@8«µsê´@8—†Â&€ž@3R Iº^5@3P°ò{²ÿ@2Ÿ²-V@2 Ñ·Xâ@2Œ~($ @2xl"h -@2Œ~($ @2Ížƒä&@2Œ~($ @2À6âë?¬å'[ V÷?‘­b š=?’÷˜–Èä?{¾“úy6?“>û{Ñø~?’ Ù–¥£?³‰ÑpEIt?“øGKTæH?–Ðf·ËŒ‚?’"Š6›Wz?’…4Ü.?’¨¢†¼ ¼?¹$€²§‡s?œ‘z¥æ?Š:t†?†O.ce?‡YÍ_?‰w¿˜Í¶ª@@@@@*@*?ð?ð?ð?ð?ð?ð?úiH ¿KŒårê?:}Îþëà?^–ÊIg/ì@¬t¯0Ïê@žÕ†=Ñà?M²jÑé?pG~e¸T-?’ŸzK«f?ÒKȤµÜÆ@3—+ Iº@3Žp:û~‘@3q‰7Kƨ@3rÐå`AŠ@3¦YJôðØ@3¥fÏAò@3¦YJôðØ@3¥ '»0@3¦YJôðØ@3«¬q ²–@8J¨?›úV˜[u9?™rPt3?š+‚¦Ðfñ?šxœÏs´i?“”üU§<­@8J¨? (úSú±5?™ ?G·W?˜8wxšq?ž³ÑŽúƒ?” ™¾,@8p÷?àìÚJ>?‡z"2Úù)?—Äd<³Î? tÆùlŠ?šÁc€RÏ@@@@(@"?ð?ð?ð?ð?ðøøøøøøøøøøøøn@¦7Rn—P@¦7<í‘ht@¦7Rn—P@¦7XÔýó·@¦7Rn—P@¦7R{²þÅ@¦7Rn—P@¦7På`A‰@¦7Rn—P@¦7S©*0U@¦7Rn—P@¦7QÑN;Î@¢TÂ\(ö@¢T¹™™™š@¢TÂ\(ö@¢TÁä÷eþ@¢TÂ\(ö@¢TÀ·€4n@¢TÂ\(ö@¢TÅo@¢TÂ\(ö@¢TÀ4mÅÖ@¢TÂ\(ö@¢T¿ò䎊@8ð4mÅÖ8@8èð¹@3‚° Ä›¦@3~Ov_Ø®@2ß²-V@2Ü64ê@2&YJôðØ@2¥zxl"@2&YJôðØ@2!×Ûô‡ý@2&YJôðØ@2#ŽóMj?Àët#®ªV?—޼½:?–¦r…û?,¡r×gÁ?“´<×?“7ƒÆD -¹?žˆ2}?’ñ©ûçlŒ?ŸÖÒä-2¢?–= £6Ï?“â¹Í[Óh?’µ~Yºì?´çnñŸ?pù51íÒ?¥‡´{?†Á{0Ÿà®?’3¨£„È?$Ìj½BÙ@@@@@*@*?ð?ð?ð?ð?ð?ð?OükëÔ?Zì;Åò?S°›)m©W?J„1¿æ¤@¦7QÆ(c°@¢TÀ\è†?cn/*ÁRÒ?s ¡4¡¢l?»·ð¦Ðfœ?Û;nã¡+@Ÿr+#ÃM@o@¨Ý/Ÿ¾@¨Ýp£× -@¨Ý/Ÿ¾@¨ÞBZîb@¨Ý/Ÿ¾@¨Þ¸Që…@¨Ý/Ÿ¾@¨Þi­BÄ@¨Ý/Ÿ¾@¨Ûô‡ü¹@¨Ý/Ÿ¾@¨ÜÚQ@§îOß;d@§îOß;d@§îOß;d@§îžƒä&@§îOß;d@§îOß;d@§îOß;d@§î¸ºÇ@§îOß;d@§îÅÖ8†@§îOß;d@§îžƒä&@0òÃÉîËû@0òÃÉîËû@)”¼j~ùÛ@)”¼j~ùÜ@'ªÀƒn˜@'ªÀƒn˜@&QÑN;Í6@&QÞi­BÄ@&QÑN;Í6@&QÑN;Í6@&QÑN;Í6@&QÞi­BÄ?É^³Dw'?Òç{íj?‘Ûü†Nã?‹ª½¨ª8v?éDEâ©×?·t¤¢‚J?ÐbMçê_x?’¼  g¶?|™,Ž!?/3ÉÚgC?ÏtP°*?M\³Ù“@?€b¡´ñ@?Œ­·Ž~('?‚s@ˆaÛ?‚â‡~ûÉ\?†ˆ#.÷?†ˆ#.÷@@@@@,@*?ð?ð?ð?ð?ð?ð¿QtVÂ?¿‘Q ?9<ðh—xœ?éêrú½ê@¨Üÿ!7v@§î´õ@~?HD‚—ûq˜?Ê~î¼å?Œùg?µ)?!7†ÀÆ@Ÿs.¶-@p@­Œî—Oß@­ŒòtÑÄ`@­Œî—Oß@­ŒðoiDg@­Œî—Oß@­Œò° Äœ@­Œî—Oß@­Œí5¨Xy@­Œî—Oß@­Œê™0¾@­Œî—Oß@­ŒîÙ‡+@œµ&éxÔþ@œµ4¼j~ú@œµ&éxÔþ@œµ!-w1@œµ&éxÔþ@œµ¤?åÊ@œµ&éxÔþ@œµ+ Iº@œµ&éxÔþ@œµ*dÂø8@œµ&éxÔþ@œµ$ŽŠqß@7ëµsê´@7â0ü®Ò@3‚° Ä›¦@3…¼£n.@2²-V@2ùrGE9@2Œ~($ @2¥ãS÷Ï@2Œ~($ @2jçÕfÐ@2Œ~($ @2C•%?Ĺó¥p?’Mj…•Ì‘?•œ‘æ¦M?Hžyq?‘¯GàBm?’Æ÷Xê†?§r.†¹‹X?––ïFHÇN?’TÖ©E?’"Š6›Wz?’£ôùÎ8ï?“X<‡÷Ú?ƒ­f‡²Y$?[™ÕÈ™8?–Ϥ?…üðÿË÷?ˆëÅoë?‡ø¢:›¸1@@@@@(@*?ð?ð?ð?ð?ð?ð¿R{8f>¿Wn³äè?I -Br^À?:ª©\y«@­ŒíÄcWl@œµ*i.Ø\?gwÌKWí?PÅct/j?ËÆK³À?’Ï#–ľz@ŸoYÃzP@q@¯î—Oß@¯ãn—@¯î—Oß@¯ñ ޤ0@¯î—Oß@¯þ-Áe@¯î—Oß@¯Ê¤èu@¯î—Oß@¯ß}o@¯î—Oß@¯õ±^É@›q©ûçm@›b¨v/@›q©ûçm@›r›+%@›q©ûçm@›k!äÓß@›q©ûçm@›£)¹GÆ@›q©ûçm@›cqë¿Ö@›q©ûçm@›€¨æÕ@7¹Œ~($@7O­KÛK@2û Iº^@3£{äM@2Ct¼j~ú@2AÖJò×@1èè§æ›@2*h˜w‹@1èè§æ›@1óŽmAjÄ@1èè§æ›@1åÔÕ0Ü?‘w×vHf?–Ÿ]u–û?‘“@ Æ—?©·åÝsY›?éDã\?£ÂgS÷Ó&?œÆæXÆd?Ò¸…†?’&^ǘK?¯°Ñš=Í?‘ 9fɾ?žàU¤K½?·‡å¿CO?u¼¦Oi?„¡Z¶•.? .œ‰R?7c=»•ª?™°ÉYß@@*@$@*@0@2?ð?ð?ð?ð?ð?ð?0J@@?UêÈÜ?fÔ gåá?jFIƒú³o@¯áë2@›jŠQ?‡/ßÝæ©Æ?†ªÑú?¤?ÿ1ìȨŠ?÷œ³W'@Ÿl=™˜çV@r@®€€@®€‚MÒñª@®€€@®€‚e+Ô@®€€@®€ƒñA ]@®€€@®€-w1@®€€@®€~Åm\û@®€€@®€~BZîe@¦àr-V@¦àr° Äœ@¦àr-V@¦àuÂ\*@¦àr-V@¦àt`ªdÄ@¦àr-V@¦àp Ä›§@¦àr-V@¦àtÉ…ðp@¦àr-V@¦àsZ…‡”@6Ô xFÜ@6ÉQ‚©“ @2ðÄ›¥ãT@2ï|í‘hr@2K"Ðå`B@2K Iº^@1kxFÜ^@1k~ÿ—%@1kxFÜ^@1kÀ6âì@1kxFÜ^@1kÚQÎ?|öOÿÝ?’bÓ}?‘âTÀÊS“?ºgk\0?‘˜¯ -`É?‘&¶Gf¡?îŠõ ?•²»UbB3?§^ ÿo˜?‘aYZ†«q?‘q1ýAt?’‚¸7w¼:?§1óÃQ…:?Ž*JŠË?†' -³}÷C?ƒý¥ñÍú?‡×7°º?Œ˜ˆTÙ8ª@@@@@,@,?ð?ð?ð?ð?ð?ð¿Iç½çà?B·‰¯`?"jÞ©ØÃØ?J_'4U‹•@®€ÿWíZ@¦àr€]¶?F±üº…ã?c™h«'mÎ?‘YTl?¾¤rãdvŸ@Ÿmm¼×øî@s@ õô9XbÁ.„€@ õô9XbÁ.„€@ õô9XbÁ.„€@ õô9XbÁ.„€@ õô9XbÁ.„€@ õô9XbÁ.„€@žM 7KƨÁ.„€@žM 7KƨÁ.„€@žM 7KƨÁ.„€@žM 7KƨÁ.„€@žM 7KƨÁ.„€@žM 7KƨÁ.„€@5G>«6zÁ.„>¤µÜÆ@3{ Iº^Á.„M‰ûçm@2ƒt¼j~úÁ.„QnÙ‡@2G ù kºÁ.„NÜC,¥@2G ù kºÁ.„NÜC,¥@2G ù kºÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøt@©œ/Ÿ¾@©œp£× -@©œ/Ÿ¾@©œp£× @©œ/Ÿ¾@©œž í(Œ@©œ/Ÿ¾@©œ 6âê@©œ/Ÿ¾@©œœ¹#¢œ@©œ/Ÿ¾@©œžùÛ"Ñ@¡ª/Ÿ¾@¡ª/Ÿ¾@¡ª/Ÿ¾@¡ª^5?}@¡ª/Ÿ¾@¡ªÔ,<Ÿ@¡ª/Ÿ¾@¡ªPHð@¡ª/Ÿ¾@¡ª(õÂ@¡ª/Ÿ¾@¡ª¥ãSø@2}:’£@2|ú¬Ùè>@1Iº^5@@1"h Ô•@0A‰7KÇ@0:û~‘@0¡:’£S@0 HðŽ@0¡:’£S@0 ƒn—Ž@0¡:’£S@0 :û~‘?É^³Dw'?ÖÈ ¼?‘G¿yÛ?ï?‹¬àÌ’Ç?‘×´<î¯j?ÃwZL?ÐbMçê_x?’ÍîfÕ?ê‰O)AT?@§[*^?‘q1ýAt?ˆ9²0?€b¡´ñ@?ŒÂ§dß±?ƒ!A -mº¹?ƒ¦$H?‡gϵ’õ?‡ã ËÄž@@@@@,@$?ð?ð?ð?ð?ð?ð¿E½$Ø¿2dÓù ?Kö—ïZ8f?”Åq0;@©œž×Þf@¡ª,Äè?[>‹×¡É?"¯¬OJfA?±±kªõk?=ª9¥‡lÃ@ŸrýFêÊW@u@­‚çï²-@­‚ç+ K@­‚çï²-@­‚àIQ‚@­‚çï²-@­‚àhÛ‹¬@­‚çï²-@­‚ÜPHñ@­‚çï²-@­‚ÚCþ\’@­‚çï²-@­‚Ù#¢œx@¢ñ[¥ãSø@¢ñ[¥ãSø@¢ñ[¥ãSø@¢ñZŸ¾vÉ@¢ñ[¥ãSø@¢ñY™™™›@¢ñ[¥ãSø@¢ñS÷ÎÙ@¢ñ[¥ãSø@¢ñV_Ø­¬@¢ñ[¥ãSø@¢ñRÊW§‡@6cg ù l@6ca@N¥@3xr° Äœ@3wE8ï4×@2©Û"Ðå`@2§æšÔ,@2xDЩ*@2p–»˜Çã@2xDЩ*@2ooÒòå@2xDЩ*@2o·éùr?|öOÿÝ?‡åƒêM?‘£Ä›è?”6Wé=t?˜´1…9„?–ËÒÙI°?€‚ñêã ?’Ï>`Ï?“û#ÆGf?”ÑÓTœ?ƒ@…ˆAd?˜«ŒˆÀS)?„ËD(ºo?àQdËЈ?ƒ<Õp?ƒiñj6Â?Š*ÊÔQãú?‰Ü)@Jq«@@@@@,@(?ð?ð?ð?ð?ð?ð¿iЖIJ¿_×V?8¨›Pò€?=œ­›¶à@­‚á?|~@¢ñWå?o6?Wwú³;?[Ý`´D?´ÏU¸]Óv?·Õm>XUŠ@Ÿd¸Añ•<@v@¯K§l‹C–@¯K¶È´9W@¯K§l‹C–@¯K©^ž -@¯K§l‹C–@¯K¦ffff@¯K§l‹C–@¯K©“ àß@¯K§l‹C–@¯K¨Îp:û@¯K§l‹C–@¯K¥m\ú¬@ŸùcS÷ÎÙ@ŸùzáG®@ŸùcS÷ÎÙ@ŸùbMÒñ©@ŸùcS÷ÎÙ@ŸùiÇy¦µ@ŸùcS÷ÎÙ@Ÿùhr° Å@ŸùcS÷ÎÙ@Ÿùeœàu@ŸùcS÷ÎÙ@Ÿùg8}¿@8Ç>«6z@8²n—Oà@3Ï|í‘hr@3Ñ&éxÔþ@3²-V@3Žšu@2Š0U2a|@2ŠîcŠ @2Š0U2a|@2‹ŸU›=@2Š0U2a|@2quŽ"?«á¬å÷‰?‘_¦X ë -?”Uy*þÿà «›?¹Âþµ~B@ªF*²œ.û@šæ¶ÓÔì?ÃÇ•(ó0?4p×'±?I¿ÇQƪÎ?t‘s܋֫@Ÿf㺛O7@z@¨(®—Oß@¨(¯Ÿ¾w@¨(®—Oß@¨(¯–»™@¨(®—Oß@¨(¯'»/ì@¨(®—Oß@¨(°ÿ—$u@¨(®—Oß@¨(­ÅÖ8†@¨(®—Oß@¨(®!–R¾@§záG®@§záG®@§záG®@§{W>«6@§záG®@§{À6â@§záG®@§záG®@§záG®@§zÇË)@§záG®@§{quŽ"@3¯O „M@3Щ*0@/æ§ï²-@/çË)^ž@.ü¬1&ê@.üÓZ…‡”@.a-w1Å@.`'RT`«@.a-w1Å@.^«6z‘@.a-w1Å@.^ÒˆÎp:?}Ñ¿ž,?äm°û0Ž?‘SŸ[ÈÙ?‹ä†€{6è?‘'¬Å™» ?ý‰w'¬?|¬Çëý ?’ ÃCÀ`ú?£½:…?>\‰å‘?ñ«Ý„ Õ?ˆ9²0?‚nâwfÿ?ŒË›Í‡Çq?‚¯­Ù¤Á¶?‚éXëLL÷?†ÃÛSPã?†å·ÑfWà@@@@@*@,?ð?ð?ð?ð?ð?ð¿°Ð€? óžÃ?6×0­ó ? ê?SÐPp@¨(¯…Ä@§zûmè„?V¬ã§]#”?.~¾úª¢þ?»Çì6ò?h @•¸µ0@Ÿg=Û¼p@{@°q&éxÕÁ.„€@°q&éxÕ@°qbïP@°q&éxÕ@°t¼ÀÇQ@°q&éxÕ@°vz±C@°q&éxÕ@°o[z*Û@°q&éxÕ@°lþÁXÝ@”JÀƒoÁ.„€@”JÀƒo@”JSž·+@”JÀƒo@”<…í2à@”JÀƒo@”Gb“J,@”JÀƒo@”5—_oS@”JÀƒo@”C­Kp@6àØDЩÁ.„>¤µÜÆ@3û Iº^@3õäÄà¹@3ÐA‰7KÇ@3ÊÃü¿xF@3ÔmÅÖ8†@3Ȫpª@3ÔmÅÖ8†@3κÌY#z@3ÔmÅÖ8†@3Ë—":2°@8J¨?‘{?Ÿ–†¼éY?›Åeú©¤@8p÷?T¢#0¦?oŸt-kŠ?“$e±æ¤È?Ÿ‹–¥ÿq?›çž§&Ò€@*@(@(@9@6?ð?ð?ð?ð?ðøøøøøøøøøøøø|@¯Û A‰7L@¯Û @¯Û A‰7L@¯Û å ¾¿@¯Û A‰7L@¯Û Ž™ÿÝ@¯Û A‰7L@¯Û Á\{±@¯Û A‰7L@¯ÛË÷Râ@¯Û A‰7L@¯Ûê ¹@”ϾvÈ´@”Ï A‰7L@”ϾvÈ´@”Ï]LKJ@”ϾvÈ´@”ÏyÚ -@”ϾvÈ´@”Ï!DíŽl@”ϾvÈ´@”Ïb(¡@”ϾvÈ´@”Ï E!¤@4í¥œàv@4î‚b™R@0û Iº^@0û©Qà@097KƧð@09 wî@/úÇË)_@/ûY2OºX@/úÇË)_@/û´à±¤d@/úÇË)_@/û‹E2{L?|Ñb×¶@?ȶ¶ú# ?‘6ó4Y?µ?‹´M¢ÍÕ¼?ñ(Gâö¢?ÄÇÚÕ?|Ñb×¶@?’/èÞçq?©4Á?«ü?MCFn3×?éç Ã¤?d¨ã"“H?‚pDøïRg?Œ¹î äý»?‚‰’Í¡v?ƒŒhïú„?†¦9¸yt?†ÈH‚oÇ@@*@,@*@9@:?ð?ð?ð?ð?ð?ð>òSº¿Ì Æ ?VCl? NÈ;x@¯Û ¦Ê@”Ï -šçd?=-ËÒŸ!4?@U?‡:ò;òñ¤?Œ¯·B)Øè@ŸföDj¬„@}@­*^¸Që…@­*k…¸Q@­*^¸Që…@­*\C,¥z@­*^¸Që…@­*_ò䎊@­*^¸Që…@­*_|í‘i@­*^¸Që…@­*\žì¿±@­*^¸Që…@­*\¾ß¤@©jýó¶F@©j“t¼i@©jýó¶F@©jã¼Ó@©jýó¶F@©j_ö”@©jýó¶F@©jy=Ù@©jýó¶F@©jCþ\“@©jýó¶F@©j+jçÕ@8ºqÞi­C@8Áä÷eý‹@3@ Ä›¥ã@3AÊÀƒn@2d¼j~ùÛ@2eoi@2O „M@2'RT`ª@2O „M@2šu@2O „M@2($ x?3ßa=„?‘¸ü"ù€2?”‰oüq u?‡{@áè?“¦Æ_ÌdA?’—ØPö«?›’qvš°•?“H¼k#è?’Q½£a C?íu…XÚ?’˜£“µ~Ð?’›â¾Ð'µ?©'¾²[?Å9–o?…/‡ÙX·³?…<ò N ?‰©OO ¨?ˆ0&YÊEd@@@@@(@(?ð?ð?ð?ð?ð?ð¿k.™t~¿5(”à?D„=ù{‹?E²ˆÐtd(@­*`tòf@©jq¿r½?cú¾ÁsI?`v©ø!¿?ÂÚfĦ9Î?¶c|®[@Ÿm[V?K@~@Ÿ;dZ¬@Ÿ+@8Iç@8Ù?‰døëŽìÃ@8Î÷@8i§@8Å@8S@8û—?¡B€‹{Ü¡@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø‚@®ÊY™™™š@®ÊY™™™™@®ÊY™™™š@®ÊZw¶:@®ÊY™™™š@®ÊW3ú1K@®ÊY™™™š@®ÊXÛ)Wþ@®ÊY™™™š@®ÊWh.…@®ÊY™™™š@®ÊY2ÄÈ@”Ñ$Ý/@”щ7KÈ@”Ñ$Ý/@”Ñ› -²á@”Ñ$Ý/@”Ñ#à¤Q@”Ñ$Ý/@”Ñ9(›þ@”Ñ$Ý/@”Ðüâp,@”Ñ$Ý/@”Ðü!½ @4wâ‚@·€@4wÒ¸T:’@1æ‡+ J@1æåœ P©@1q‰7Kƨ@1q•Uà@1Þi­BÄ@1ÌÌš}@1Þi­BÄ@1þâÖï@1Þi­BÄ@1ðˆçÂ?€Ã{s°úi?<—àMt?‘+5xøªò?ŒA·qŒo?‘è¹í¡?‘2k…‡bð?|Ñb×¶@?’eCŒO?‡anØ¥?‡P°R²ß?‘¹xò(+?½„†æîÑ?‚•÷Çé¹a?Œîݺ?‚¼nž÷?ƒu3±ëX?†ü (Ÿ=d?†Î*OÌôû@@,@ @,@:@9?ð?ð?ð?ð?ð?ð¿0ÀC‘@¿BJõÙÞ?) AÐñ? ×jÌ}Ÿ@®ÊXøµ* @”Ðÿ"Ï4?HÜžÜ,yô?@—”2¡­=?­¦À¼ ?‹R#sÕc@Ÿgl`»vB@ƒ@«B 7Kƨ@«B -AÍá3@«B 7Kƨ@«B z`Ð@«B 7Kƨ@«B}höÆ@«B 7Kƨ@«B ý} @«B 7Kƨ@«B ó:@«B 7Kƨ@«BÔ''Å@˜Y -=p£×@˜Y –É‚@˜Y -=p£×@˜YO«ƒ@˜Y -=p£×@˜Y -©iå @˜Y -=p£×@˜Y <ù1@˜Y -=p£×@˜XÿÄ Ê¯@˜Y -=p£×@˜YñÂå@8 ]cˆe”@8 -FVMÙŒ@3‡ÎÙ‡+@3ˆ>þ‡n@2Àå`A‰7@2Âb¡ - @1ó&Á½¥@1ôZûܳu@1ó&Á½¥@1ô3>4¥@1ó&Á½¥@1ôÈq;${?–×ôäL™?ȱÿ²•c?’ú4vȺ?ŒÀ®ôB5 ?‘]Xýæä?‘—Ë™3HQ?›Q®úL§?’Îç9{»?‘ÁbNù|V?„Å÷Mª?‘^YZ8ÔÐ?äÔhÕ•Q?²PµU+D±?Ž"Çá¸x?‚½l1Y=3?ƒt'†Óß?‡dOõÃ@?‡˜Þ•+åç@@(@*@*@:@9?ð?ð?ð?ð?ð?ð¿<À”(À¿VdÍÄ?@UßÊ5M?Kf“ aXc@«B -`òë@˜Y!#;Æ?Y"€Å"î?d‹«á`ü?°³æ?åt -Îõí?¶D»J¥X?èŽìr¡-?’,ö´´Ï#?€s8rÅ?4–Ú‰3?Ë=̘ê_?PL·Dǽ?æ ýM¹<Ç?Œ²ÅŒÕ6?‚˜YªüÏF?‚ð'ã:ÂÝ?†Æ¸¹%?†‰~±.@@@@@@ ?ð?ð?ð?ð?ð?ð¿AIˆç8>ý8ßÓ@?-u+)3¨x?"hªÈ£?@žÓ„@;5@¯C´œRƒ$?<ÏîRp?¹[Í_?s/ꉄ6H?4¾~L3ø@Ÿs~ËR%ò@…@£ÎV“@£É7Kƨ@£ÎV“@£Ò{²þÅ@£ÎV“@£Ò•éá±@£ÎV“@£Ðå`A‰@£ÎV“@£Í5¨Xy@£ÎV“@£ÎzáH@«¾¸Ôýó¶@«¾¶“u@«¾¸Ôýó¶@«¾¼¹#¢œ@«¾¸Ôýó¶@«¾¼C,¥y@«¾¸Ôýó¶@«¾¼ÓZ…‰@«¾¸Ôýó¶@«¾¸bMÓ@«¾¸Ôýó¶@«¾´¢3œ@8D¯O „M@8JJŒL˜@2ør° Äœ@2ø­«ŸU›@2iÛ"Ðå`@2ju%F @1‡ ù kº@1ƒFÜ]cˆ@1‡ ù kº@1ЦL/ƒ{@1‡ ù kº@1‹’:)Çz?“Æ×q„nï?’ãy)­3c?‘=?ùKh?U›=ÈK?’ÒuèçxY?‘Ò\.:Ø@?«_$Øï†?—·f;m?¯éÊSÜ?‘W×ý°A?‘ÇmEB«?‘êey°úà?ÂðÏvÕûA?•ŠPç<}¨?ŠÇÿú?„•ˆG’Z¾?‰Ü)@Jq«?€=P|@@@@@*@&?ð?ð?ð?ð?ð?ð?J”¶VP¿`çùÍ€?O8¾ü1“?WXE¢uÊ@£Î«`@«¾¹=Òe’?k ÏejMß?kÃÚ+$v?Ñ©ïÜô°?Ì“?$©ÿ@Ÿp uÜÛ@†@ WH´9X@ WK¡‰ËÅ@ WH´9X@ WH:Wt@ WH´9X@ W‡‰·ÅJ@ WH´9X@ W_Ó$@ WH´9X@ WPJæ@ WH´9X@ WR´É§@¯ :^5?}@¯ )™H@¯ :^5?}@¯ ´ØÎ“@¯ :^5?}@¯ G¬Råb@¯ :^5?}@¯ ÂbÜ@¯ :^5?}@¯ $z˜Âq@¯ :^5?}@¯ i©@õý@904mÅÖ8@9>¶ @4ÇÎÙ‡+@4–™d–@@3§KƧïž@3†*'2!ö@3?ò䎊r@3)8–éˆ@3?ò䎊r@3(z­ã’õ@3?ò䎊r@3*Œ |3?ñ3<' ?’ŠïÏØ$? Ÿ£Qî´?–es1“xÕ?˜Ì›B—O/?–Ìù—ã¾µ?§ŸsX]?“,¯ë?£†úþ'±¯?•¾ìiÉ®?‘*Ex Áž?›mr)?ƒ‰"úÿŠì?›w+ã*ª?ˆ%AÉC±‚?‰8‹bÊ-Y?Ï2ÉN‹ü?‹keWP'X@@"@$@ @$@"?ð?ð?ð?ð?ð?ð?a9;j?—Åõ·?^Þ5’A -?¢x¿}=@ WSœs¾@¯ %¶øe¢?ƒž=½-ç?¢YPšd½?úr•sGÈ´@1³dÜ ï@@Ÿn?Žà¼Ð@‡@¨O^¸Që…@¨OaÊÀƒ@¨O^¸Që…@¨O`Ñ·Y@¨O^¸Që…@¨O_Š Þ@¨O^¸Që…@¨ObëC-@¨O^¸Që…@¨O`-à @¨O^¸Që…@¨O[=ÈK@¤ "Ðå`@¤ "MÒñª@¤ "Ðå`@¤ àuöý@¤ "Ðå`@¤ Ov`@¤ "Ðå`@¤ À6ã@¤ "Ðå`@¤ ã¼Ò@¤ "Ðå`@¤ _ö”@72ÃÉîËû@70ƒn—Ž@3û Iº^@3ý(Œç°@3ù7KƧð@4IQ‚ª@2ÙŒ~($ @2ÚW§†Â'@2ÙŒ~($ @2ÝÅÖ8†Z@2ÙŒ~($ @2Ý!ÿ.Hé?•²»UbB2?’‚€‡d_s?–Èó^ù„?“zRÈUÄ?”] -° ?•zWmoàí?Œs¤DÅÐ?£àÂ’âÿ?™ÐÈï£L?–…%j»a?“‚Û£0Î¥?“ù|ö[ÿz? t€4Â?üÓqÔN‰?¡è™è;?…J]j?Ž .0åv?€=P|@@@@@*@*?ð?ð?ð?ð?ð?ð¿R-·²¿]p(ï,?K® _WŒ?;¬'yÃ) @¨O`d´@¤ (°†p?h-y'bÁ@?\”ÂIâ½?ÅÁ§ûPe×?²§)”ï@ŸkÜñî­¯@ˆ@ Ð-‘hr°@ Ð*Àƒo@ Ð-‘hr°@ Ð-cåÜ@ Ð-‘hr°@ Ð.Î÷³H@ Ð-‘hr°@ Ð.˜zš_@ Ð-‘hr°@ Ð,¶øˆ@ Ð-‘hr°@ Ð,¤jhM@­V× -=p¤@­VÔÙ¾ˆ+@­V× -=p¤@­VÖ2ÃŬ@­V× -=p¤@­VÖÕ‚v\@­V× -=p¤@­VÖÆa/÷@­V× -=p¤@­V×ÿ=‚@­V× -=p¤@­V×ãxË@6­¥œàv@6¬s«ÉG@0ÜIº^5@@0Ü‘’…—F@/]ó¶E¡Ë@/]o—g2@.£¼ÓZ…ˆ@.¢jK•(@.£¼ÓZ…ˆ@.£H«EÓ@.£¼ÓZ…ˆ@.¢òù‡?û?ŽÕQp Î?)bÓºÉx?‘-[ÑÈo?‹±mcâcx?ÿor¢òÈ?ÃvURn*?ƒÔo"ë–?’-ä‹Ð?þ%›§Ä?9d‰Ù™Ä?é*’Ð_?cØ•ZI?‚o†#BpW?Œ¿Ïôq¼6?‚˜YªüÏF?‚ý› û¼?†œ!R#?†“[R¿vs@@,@,@&@8@7?ð?ð?ð?ð?ð?ð?Að!ÍH?F<"ž?9zY æ·Ý?PvÚî8©@ Ð,ms8n@­VÖˆîJ?Y ìF Ö™?5¥¬ÝÛÜ?¾êL(Ö¬?s -ÂzØd@ŸhÓ%…xI@‰@ ­•%@ ­× -=q@ ­•%@ ­Ø·f@ ­•%@ ­]èU@ ­•%@ ­ëî@è@ ­•%@ ­Þ¿ÖJ@ ­•%@ ­¯\Tä@ Z›¥ãT@ Z›¥ãT@ Z›¥ãT@ Z$PŒd@ Z›¥ãT@ Z±-éK@ Z›¥ãT@ Z[¯5@ Z›¥ãT@ Zµ$•@ Z›¥ãT@ ZÁÔ÷Ñ@2–»˜È@2|í‘hr@0×+ Iº@0ÛfW˜ -Ø@0ä¼j~ùÛ@0òzP·¦@08DЩ*@0H¨äº•Œ@08DЩ*@0Cîô&Y@08DЩ*@0@ØDЩ?É^¨¯Âj?ÏWº¤¯?“©’Qõ¾?Ž# 8ðÖ‘?“¾”c¼.?“Jq×s=?ÐbMÝn½?’7ÌÇû!?šµÂ%2Ù}? )Nk·@¤dÝ/ @¤b3œ¿@ªc»dZ¬@ªc»çl‹D@ªc»dZ¬@ªc·süP@ªc»dZ¬@ªcµ›=Ç@ªc»dZ¬@ªc¸*™0½@ªc»dZ¬@ªcº…‡“Þ@ªc»dZ¬@ªc·škP²@7`ØDЩ@7bZîcŠ@2i‡+ @2hï4Ö¡b@1È“t¼j@1Ç ù kº@1ý!ÿ.I@1R½<6@1ý!ÿ.I@1}¿H€@1ý!ÿ.I@1Ë)^ž?1·†Æjñ?‘€5{ºÎ#?“­læ>®€?Ça_b‹?‘˜¯ -`É?’ ÖMüõi?ˆÿÀ)T¿Æ?’‡Iš÷?–AuøG1?’.p»Cþ?’>H>d#?‘)]•\­?ŒR‹w#z?¨ ‰‹U)?…àú^Á?„ªÎZ´?ˆ”Tj«›ª?‰G±±ZÎ@@@@@(@(?ð?ð?ð?ð?ð?ð?&Aø ¿H%÷H?1,;@-?7ðÓ?‘™@¤ct/${@ªc¹ç¤(ð?RK­I¶Š?Wò‹†yã ?«Åò þ æ?²Œ\ÐìR@Ÿi&• -—Ë@‹@ ¸Ôýó¶@ ·ÎÙ‡@ ¸Ôýó¶Á.„€@ ¸Ôýó¶Á.„€@ ¸Ôýó¶Á.„€@ ¸Ôýó¶Á.„€@ ¸Ôýó¶Á.„€@ ‘@ îV“@ ‘Á.„€@ ‘Á.„€@ ‘Á.„€@ ‘Á.„€@ ‘Á.„€@6 ØDЩ@6`ªdÂù@3@ Ä›¥ãÁ.„M‰ûçm@2y7KƧðÁ.„QnÙ‡@1èè§æ›Á.„NÜC,¥@1èè§æ›Á.„NÜC,¥@1èè§æ›Á.„NÜC,¥?…ÅBðrç@8#˜@8¾:@8 >+@8Iç@8Ù?–ªÎ­¡@8Î÷@8i§@8Å@8S@8û—?§˜Áuf·@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøŒ@ ÿ|í‘h@ ÿ¾vÈ´@ ÿ|í‘h@ Tˆ¸@ ÿ|í‘h@ PÌ’N@ ÿ|í‘h@ ý–6‰Ö@ ÿ|í‘h@ þ•b’@ ÿ|í‘h@ þÈêbR@  -‰7KÇ@  -ÊÀƒ@  -‰7KÇ@  -~ߤ?ç@  -‰7KÇ@  -sR@  -‰7KÇ@  -ƒI}ÆŠ@  -‰7KÇ@  -‚Í=X|@  -‰7KÇ@  -”Ú !@1ÉÎ_oÒ@1ÉÀëíúD@0Š^5?|î@0‹ý¦çÍc@/òn—Oà@/óñG&À@/õ¨Xy=Ú@/üo០@/õ¨Xy=Ú@/ø£¡9î@/õ¨Xy=Ú@/ùäÁéI±?É^¨¯Âj?Ô­)?‘'æÚÄ ?ŒP4äq{è?‘s£Zò?‘!Ž ¸?ÐbQë„›¦?’½ò?„<ˆ6?húgÊÚö?ôO³â¾?·t7ôT?€bîF¾§?ŒôÊ“:$Ñ?‚´ÎtÎq£?ƒÅ#+Ïé?‡xý’’lÔ?‡>d»S@@$@$@*@6@5?ð?ð?ð?ð?ð?ð?@ùb8Æ¿F÷7øÎ?#úÓß{ÈF?(èÅ}ØX•@ þ>ÎÒ®@  -‚¢Òê?3.N%6?7~EHbeð?axf!@¨½?g‡óz§Ì@ŸsÇ+0w@@¡ý²° Äœ@¡ý·KƧñ@¡ý²° Äœ@¡ý½ÌcñA@¡ý²° Äœ@¡ýÅ`A‰7@¡ý²° Äœ@¡ý°ÿ—$t@¡ý²° Äœ@¡ý°¾ í)@¡ý²° Äœ@¡ý¸ï4Ö¡@ ï`A‰7L@ ïW -=p¤@ ï`A‰7L@ ïv“u@ ï`A‰7L@ ï€ƒn˜@ ï`A‰7L@ ïZ¹õY´@ ï`A‰7L@ ï[¥ãSø@ ï`A‰7L@ ï^¸Që…@7p4mÅÖ8@7l¹#¢œx@3æ‡+ J@3õY³Ð|„@2Ãt¼j~ú@2ØXy=Ù€@2œàu÷@2 ’:)Çz@2œàu÷@2HðŽ@2œàu÷@2 quŽ"?€‚ñêã ?”Øÿ4ÙKl?¡È‡ å? Í‹hÆ?–[À5ž¨?œ´‹ÛZ?|¬Çëý ? Í”{Í?”p¶I”“ž?‘~¬Àm?ó?“â¹Í[Óh?™"Ьç¿?Ÿ•"x*=k?¥*Û:'+)?Œó}?ï?éàQx˜?“aÑ#?˜!ÄD‘@@@@@(@(?ð?ð?ð?ð?ð?ð¿Qä@;.?VpÌÏÄ?O¢´†…?"Ng6Gj³@¡ý´½MéÁ@ ïY®ÀD?lÊ\­Ä{?A1tò–6?ÝÞ -“°è¢?‡õi]û¬Õ@ŸeÕx¸Ç@Ž@¡ýH´9X@¡ýH1&éy@¡ýH´9X@¡ý Ä›¥ã@¡ýH´9X@¡ýC¼ÓZ†@¡ýH´9X@¡ý-¸ºÇ@¡ýH´9X@¡ýFµ '@¡ýH´9X@¡ýG ù l@§\{dZ¬@§\{dZ¬@§\{dZ¬@§[¿¼@§\{dZ¬@§\]Vlô@§\{dZ¬@§[üí‘hs@§\{dZ¬@§\|£n0@§\{dZ¬@§\|£n/@4Bò䎊@4Bh Ô•@0×+ Iº@1 -à @01‰7Kƨ@0>Hè§ç@0ÚQÎ@0L/ƒ{J$@0ÚQÎ@0’:)Çz@0ÚQÎ@0²þÅm]?}Ñ¿ž,?©­ïáuùM?’,³Zêª?$¿ÀºÍ?‘˜¯ -`É?‘…Rgå.?|¬Çëý ?¶EŽù±Ò?¯éÊSÜ?›üfšˆ‚Á?‘C å;Ã?–’+¸¢d?ƒ{¬ÉV?¨ ‰‹U)?ƒÚ@êA²?–Ô¿»X¨?‡<û¡71?†ùadô|@@@@@,@,?ð?ð?ð?ð?ð?ð¿ZðÓP¿`58* ?kô ™îÒç?ƒZ ¸8¶N@¡ýBƒ9>@§\sø8p®?‹¡É–n+k?¤]æ3,Ù"@#z–ˆÔ%@SÒ½‚t@Ÿfú[á§@@¤œ@¤›ïß;dZ@¤œÁ.„€@¤œÁ.„€@¤œÁ.„€@¤œÁ.„€@¤œÁ.„€@¥ËËC•@¥Ë‘ë…¸@¥ËËC•Á.„€@¥ËËC•Á.„€@¥ËËC•Á.„€@¥ËËC•Á.„€@¥ËËC•Á.„€@9G>«6z@9H Ô•+@4µãS÷ÎÙÁ.„M‰ûçm@3ñ‰7KƨÁ.„QnÙ‡@3Š0U2a|Á.„NÜC,¥@3Š0U2a|Á.„NÜC,¥@3Š0U2a|Á.„NÜC,¥?Äâc9X@8#˜@8¾:@8 >+@8Iç@8Ù?îŠõ @8Î÷@8i§@8Å@8S@8û—?ĆpÑ,@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¥ÓIº^5?Á.„€@¥ÓIº^5?@¥ÒÏ]yhì@¥ÓIº^5?@¥Òŵ¸ {@¥ÓIº^5?@¥ÒüxÉ[³@¥ÓIº^5?@¥Ó'_oÒ @¥ÓIº^5?@¥Ó7Oß:@˜•ÍÒñ©üÁ.„€@˜•ÍÒñ©ü@˜•¸¨éÙ@˜•ÍÒñ©ü@˜•ÊçôZž@˜•ÍÒñ©ü@˜•j2ÿÈã@˜•ÍÒñ©ü@˜•zxl"i@˜•ÍÒñ©ü@˜•„“t¼@8” xFÜÁ.„>¤µÜÆ@5° Ä›¦@4ÆüÙ_jK@4Ÿ²-V@4•ñbŽ&Â@4:Ô,<ží@4LΡÙm¯@4:Ô,<ží@3ùÛ"Ðå`@4:Ô,<ží@4 PHð@8J¨?·Uq‚dÏ??xÈÄ@?¹ýݧ·Þâ?ÁxܬiÍ?ªºŠY‡@8J¨?¼óC€TæÃ?µða¢–?Š?ºÙ¿f|‹?Æ"Q¾S–?¯UÌ•"¨–@8p÷?¬«ã-Ýq?´ói°ŒIÖ?Àƒ?ÃF›?Àñkú±0?»N£²›R\@(@$@&@*@$?ð?ð?ð?ð?ðøøøøøøøøøøøø‘@§þ“t¼j@§þ‡+ @§þ“t¼j@§þ1Å@§þ“t¼j@§þmÅÖ9@§þ“t¼j@§þŽóMj@§þ“t¼j@§þ[W>«@§þ“t¼j@§þbMÒ@¡~À@¡~Á‰7KÈ@¡~À@¡~Àƒn˜@¡~À@¡~Äg8~@¡~À@¡~ÅýŠÚº@¡~À@¡~Îp:û@¡~À@¡~Ò¼¢@6}:’£@6~óMj@2ë¥ãS÷Ï@2á×Ûô‡ü@1ˆ“t¼j@1ë…¸R@1a:’£S@1TêJŒL@1a:’£S@1RÃÉîËû@1a:’£S@1TêJŒM?‚á²Olºü?¥nÇx?)?–„6âpñ?ŽËÜ¿€?šòl? ¬?˜j@\"?€‚ñêã ?’§ioŠ?’€fç½Î?‘.“¥?ïeÑÙN¤?ž™<û!æ?ˆÌ7^|Â?Ó%y*£=?‡Ü̈- -?ˆš5|Gå?æšÔ,<ž?ˆ¾þúWZ‹@@@@@&@(?ð?ð?ð?ð?ð?ð¿;J+ð?fötóÑ?EŒƒD½ ?bä–¶ýÑ?É|‚ g–?ÄPÙflý²@Ÿe,¤ 5@’@¡ËdÝ/ @¡Ëe`A‰7@¡ËdÝ/ @¡Ëem\ú­@¡ËdÝ/ @¡Ëgl‹C—@¡ËdÝ/ @¡Ëe‡“ݘ@¡ËdÝ/ @¡Ëb‚@·€@¡ËdÝ/ @¡Ëa–R½=@  LÌÌÌÍ@  LÌÌÌÍ@  LÌÌÌÍ@  L˜_÷@  LÌÌÌÍ@  KC,¥@  LÌÌÌÍ@  Kûµt@  LÌÌÌÍ@  Np:û@  LÌÌÌÍ@  NËûµ@2Q|ÚQ@2Qhr° Ä@.û"Ðå`A@.ù=Ùb¶@.cn—P@.^¸Që…@.Vð¸»@.OÅo@.Vð¸»@.N_oÒ @.Vð¸»@.O „M;?ðO­W¬ÃÆ?%¼ÇÆÃ±?‘ŒQ®üX?,¡r×gÁ?‘úy«ôÊ%?’ ÖMüõi?ð„ƒ;0?’MœœN ?³2ºŽ'?‘aYZ†«q?’ÞH†<²?‘õe\Š«p?ð!̃?Œ¸†‡ÄÅ?‚‘´…=Cb?„ mŠmsi?‰©OO ¨?ŒÙ”!Çx‡?ð@@@@*@,?ð?ð?ð?ð?ð?ð¿\Ýá^?T¡Ü€?1ŒÔ{H²N?3JGZúÆ@¡ËcO¸7@  M¦Ó>?@vø8ûZã?Aù© -à?uŸ‡«ê³6?wÓ/Ÿ.#Ÿ@ŸsšgOx@“@­ C•@­å`A‰@­ C•@¬ÿÁä÷eþ@­ C•@¬ÿ˜bMÒ@­ C•@¬ÿ×éùr@­ C•Á.„€@­ C•@¬þ„ xH@¢}âMÒñª@¢}ß¾vÈ´@¢}âMÒñª@¢}ò¼£@¢}âMÒñª@¢}ý—ö+k@¢}âMÒñª@¢}ì¥zxm@¢}âMÒñªÁ.„€@¢}âMÒñª@¢}Ò£S%@8Ì]cˆe•@8¾_oÒ @4½‘hr° @4¦Ov_Ø@4U`A‰7L@49Q‚©“ @3ý!ÿ.I@3 šu&@3ý!ÿ.IÁ.„NÜC,¥@3ý!ÿ.I@2Ü篷é?ªÝ8Ⱥ™J?Ÿø5Õb&?Äüjl|Õ?³ïàó„âè@8Iç?ä<´3:‰?}Ñ¿ž,? >Ô±µR?—ÿfFº?•õ°­¿Èì@8S?æ¹ÎŸ=²?É*cˆº?¤Y¾Â,v?¨çTBÜôŒ?¥À¨@8 Ø?º6fe>¥º@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø”@®&È´9X@®&ËC•@®&È´9X@®&Ø“t¼j@®&È´9X@®&Ü£n/@®&È´9X@®&ëjçÕg@®&È´9X@®&Ölô!@®&È´9X@®&Ý}¿H€@©®—Oß@©®V“@©®—Oß@©xl"h @©®—Oß@©EãS÷Î@©®—Oß@©ÿ|í‘h@©®—Oß@©Ù‡+@©®—Oß@©˜*™0¾@6#g ù l@6%¸Që…@3³S÷ÎÙ@3š ÞÒ@3iÛ"Ðå`@3=²-V@3 -0U2a|@2Ë)^ž @3 -0U2a|@2Í—ö+jè@3 -0U2a|@2Ö»˜Çâ‚?…ÅBðrç?©Æßˆ J?°]!Àò\Ã?³üɹÀçà?±J¶‰jcJ?°0JeãÝÕ?„F/·ÿP5?³ý•‘|?Ä pÎôÛ“?ÍîI-ØU4?ÐÕ/xÿº?ÝBHÉ¿_?‚ÂÌ]å?œ]ŸFV”?¢³Žbtx=?¡ðc+þ™?¢&z²ÖQ³?²0Ãà÷ïŸ@@@@@(@,?ð?ð?ð?ð?ð?ð?qŒGŒ¿ªG–wY0?`j ÑX`?€ ·¬Ÿ%@®&Í_ݲ@©–Ð.ÉL?p¿¸M°?¤µÜÆ@3W+ IºÁ.„M‰ûçm@2A‰7KÇÁ.„QnÙ‡@2¿ò䎊rÁ.„NÜC,¥@2¿ò䎊rÁ.„NÜC,¥@2¿ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø–@¥FÚ¬1@¥FÚ^5?}@¥FÚ¬1@¥FÙõY³Ð@¥FÚ¬1@¥FÙrGE9@¥FÚ¬1@¥FÛdZ¬@¥FÚ¬1@¥FÚCþ\‘@¥FÚ¬1@¥FÛµsë@¬¨=ó¶E¢@¬¨>5?|ï@¬¨=ó¶E¢@¬¨=¥œà@¬¨=ó¶E¢@¬¨:Ÿ¾vÉ@¬¨=ó¶E¢@¬¨;"Ðå`@¬¨=ó¶E¢@¬¨6ý!ÿ.@¬¨=ó¶E¢@¬¨:¹õYµ@4N쿱[X@4OŸ¾vÈ@1Œí‘hr°@1:’£@1²-V@1 @1¨è§æ›@1¦Ov_Ù@1¨è§æ›@1®}Vlô@1¨è§æ›@1­í(Œç?|öOÿÝ?qÂ' -B›?‘RsÈW?ŒvHn&³?“2{Áw¸?‘£.'É?|öOÿÝ?’Dê™.x? Dñ£P?|Ø}Õ…?–›·†ø?’9ñ9¶ò8?‚Ì ÝŽ‚8? $gú‡v?‚Ì ÝŽ‚8?…J]j?ˆëÅoë?‡&üòI@@@@@(@&?ð?ð?ð?ð?ð?ð?"+½0¿Q'S,Ø? ‰ó) ?9 e¼yvÑ@¥FÚµÊîó@¬¨;ïËy–??§[>î_?YŽ‘ö‚Á?Š4ˆ†)²?½ u±™À@ŸfA,3ªã@—@©ý(õÂ\@©ý(r° Å@©ý(õÂ\@©ý(Îp:û@©ý(õÂ\@©ý+ I¹@©ý(õÂ\@©ý) 'RT@©ý(õÂ\@©ý'y¦µ @©ý(õÂ\@©ý)^ž@¥Pô¼j~ú@¥Pô9Xb@¥Pô¼j~ú@¥Pô9Xb@¥Pô¼j~ú@¥Pñ4êK@¥Pô¼j~ú@¥P÷ -=p£@¥Pô¼j~ú@¥PôðØDÏ@¥Pô¼j~ú@¥Põ›=È@5–šÔ,<Ÿ@5–1ø .@2Ò Iº^5@2Ðù k¹Œ@2v§ï²-@2u2a|Ú@2ý!ÿ.I@2µsê³h@2ý!ÿ.I@2”FsØ@2ý!ÿ.I@2ýó¶E¢?‚á²Olºü?ÎÁ¯‰t0?’ª®pµ?ŒÖ -Äȱ?’»–j˜ú?”ªEñeX?}Ñ¿ž,?’Òc§—Ûí?•ƒäôKwö?á>G]!?“£c”?“ÛKÂè• ?…/‡ÙX·²?]ÒivLÿ?†Æ‹™ÿ?„l¯¸‰ŒÎ?Š*ÊÔQãú?ŠEÝ‹N@@@@@,@*?ð?ð?ð?ð?ð?ð?š£??7ÁC¶X?0…ÅV9u?1öÈ_ùQ@©ý(º† t@¥Põ&=ÕI?Oží™pØ%?R+«üÙF?£½ËpN&³?« m‰*žc@Ÿg­»Ñ=@˜@§e Iº^5@§e Iº^6@§e Iº^5@§e´9X@§e Iº^5@§eéùs@§e Iº^5@§eÄ2ÊY@§e Iº^5@§eXâ@§e Iº^5@§e­«ŸV@©0£× -=@©6È´9X@©0£× -=@©#Š @©0£× -=@©0ÿ—$t@©0£× -=@©—$tU@©0£× -=@©E¼£n@©0£× -=@©CS÷ÎÙ@8¨†YJôñ@8¼ÚQÎ@5)‡+ @5,j~ùÛ"@4ä¼j~ùÛ@4ðÞÒˆÎp@45µsê³h@49º^5?~@45µsê³h@4"u%F -¦@45µsê³h@4Ëûµt?Ÿ‹‘+-/Ü? @u-I­?«ÍÏOø? ãçùÇùw?­rî9X”Y?ª $Μ$´?¨Ö_pP1?›¾³vÈ´9@¥(B\(õ@¥(>vÈ´9@¥(8}¿H@¥(>vÈ´9@¥(BëC-@¥(>vÈ´9@¥(>Ov_Ù@¥(>vÈ´9@¥(9Àëíû@¥(>vÈ´9@¥(;ô‡ü¹@8‰Î_oÒ@8…Â\(ö@3sS÷ÎÙ@3vOv_Ø@2Wï²-@2[ Iº^@2‚@·€5@2ï²-@2‚@·€5@2$Ý0@2‚@·€5@2F -¦L0?…ÅBðrç?™ér¨kÏ?šÿ»^ª@?ŽwX/8?”¶q fì?’*Mõis?—¤o„C?™ Ê£ð‡V?šœ‘9‹T‚?‘ݤ`Ìh?’Òc§—Ûí?•J佪™^?Ày»öô3?\{ÏïŽ?–]_«Q?‡v¯ªIì?ŒC ãSG?ŠEÝ‹N@@@@@*@*?ð?ð?ð?ð?ð?ð?D 0Ø¿Z²w¼º?"’ÆB ²¬?Cв_>Ò@£«)Nv]¸@¥(= ó-d?CzÁ¸V ?_ò`žJ®?‡HCK›¸?³ðÒ_k@ŸkÿÚv@š@ª'féxÔþ@ª'f§ï²@ª'féxÔþ@ª'e®æ1ú@ª'féxÔþ@ª'hõÂ\@ª'féxÔþ@ª'g+ I@ª'féxÔþ@ª'fšÔ,<@ª'féxÔþ@ª'fÁ½¥@£ºk…¸R@£ºkƧïŸ@£ºk…¸R@£ºj0U2a@£ºk…¸R@£ºk¬q ´@£ºk…¸R@£ºjW§†Â@£ºk…¸R@£ºl1&é@£ºk…¸R@£ºoªÍž„@47â‚@·€@47ÎÙ‡*@0¦‡+ J@0§+ Iº@0†“t¼@0†šÔ,<Ÿ@/ëjçÕfÐ@/ëàÞÒˆÏ@/ëjçÕfÐ@/éùrGF@/ëjçÕfÐ@/æYJôðÙ?|öOÿÝ?dYûë„{?‘&Øç?‘?‹ë¤½?‡á?‘VšÐ^Ø?‘<ƒÜ_õ?|öOÿÝ?’;µ” È?„¦Ô•]I?K·‘d]?‘x9ξÞO?‘]Ë™$ë>?‚|׿pY?Œþ%å_D?‚á²Olºý?ƒ=rµE=?†ùadô|?Š`½i=ÓØ@@@@@,@*?ð?ð?ð?ð?ð?𿦆#€?9Êg0?º?‚!&ã?<;•ëÝsÉ@ª'f¥ÃªK@£ºlap½Ë?:l`gòÜ‚?\o¸%R ?‚žµ+G9?Ä+An¸{@ŸfÁ¾î¯@›@§*àA‰7LÁ.„€@§*àA‰7LÁ.„€@§*àA‰7LÁ.„€@§*àA‰7LÁ.„€@§*àA‰7LÁ.„€@§*àA‰7LÁ.„€@•ÿ÷ÎÙ‡Á.„€@•ÿ÷ÎÙ‡Á.„€@•ÿ÷ÎÙ‡Á.„€@•ÿ÷ÎÙ‡Á.„€@•ÿ÷ÎÙ‡Á.„€@•ÿ÷ÎÙ‡Á.„€@9šÔ,<ŸÁ.„>¤µÜÆ@4!hr° ÄÁ.„M‰ûçm@3,j~ùÛ#Á.„QnÙ‡@2Ê0U2a|Á.„NÜC,¥@2Ê0U2a|Á.„NÜC,¥@2Ê0U2a|Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøœ@£×šŸ¾vÉ@£×šŸ¾vÉ@£×šŸ¾vÉ@£×›ô‡ü¹@£×šŸ¾vÉ@£×›quŽ"@£×šŸ¾vÉ@£×›"Ðå`@£×šŸ¾vÉ@£×™Œ~($@£×šŸ¾vÉ@£×™Î_p@®î Ä›¥ã@®î Ä›¥ã@®î Ä›¥ã@®î ù k»@®î Ä›¥ã@®î Ä›¥ã@®î Ä›¥ã@®î¡G®{@®î Ä›¥ã@®î¡|ÚQ@®î Ä›¥ã@®î ù k»@2-¥œàv@2-¥œàv@-ÂÐå`A‰@-ÂëC,¥@-/ß;dZ@-/–»˜È@,fL/ƒ{K@,e¼£n0@,fL/ƒ{K@,fffffg@,fL/ƒ{K@,eðoiDh?É^žQ5P‚?Òç{íj?‘=?ùKh?‹¦ ŸYÔ?òǹíT­?ÔCXsñ?ÐbMçê_x?’ ÃCÀ`ú?¯éÊSÜ?-õI¸`K?Ó%y*£=?J&d„?k?€bMÕky?Œ¬Çëý ?‚˜YªüÏF?‚äÍ“½E'?†–f_ÔŠŠ?†žóB» “@@@@@@"?ð?ð?ð?ð?ð?ð¿Dª[O°¿Ûû`?1ï•…ó·?!5nµ¡ÿ˜@£×šE19@®î¡@Î[y?A<á!ÏÊL?0K˜(ú?}Nˆk?WVd}j3ú@Ÿs:8¢†@@Ÿôó¶E¡ËÁ.„€@Ÿôó¶E¡ËÁ.„€@Ÿôó¶E¡ËÁ.„€@Ÿôó¶E¡ËÁ.„€@Ÿôó¶E¡ËÁ.„€@Ÿôó¶E¡ËÁ.„€@–%—Oß;Á.„€@–%—Oß;Á.„€@–%—Oß;Á.„€@–%—Oß;Á.„€@–%—Oß;Á.„€@–%—Oß;Á.„€@8²ÃÉîËûÁ.„>¤µÜÆ@4 Iº^5Á.„M‰ûçm@2â-VÁ.„QnÙ‡@2!:’£SÁ.„NÜC,¥@2!:’£SÁ.„NÜC,¥@2!:’£SÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøž@«–)ûçl‹@«–+ Iº@«–)ûçl‹@«–) 'RU@«–)ûçl‹@«–,1&é@«–)ûçl‹@«–,"h Õ@«–)ûçl‹@«–)ÞÑ@«–)ûçl‹@«–)“ àß@¡Á¸Që…@¡Á¸“t¼j@¡Á¸Që…@¡Á¸7´¢4@¡Á¸Që…@¡Á¶âëC@¡Á¸Që…@¡Áµ '»@¡Á¸Që…@¡Á·škP±@¡Á¸Që…@¡Á¶È´9X@5kµsê´@5kšu&@2Œí‘hr°@2V“@1H“t¼j@1H†YJôñ@1 -0U2a|@1 =ÈK^@1 -0U2a|@1 -¦L/ƒ|@1 -0U2a|@1 µsê´?}Ñ¿ž,?‘‘Ç`[?‘1f_¨Ï÷?Wø0 ¥?‘,IÝ Áé?‘C!ƒžÈ?|öOÿÝ?’V"y$R?‘4ãM^?EÇàÔPà?‘žˆ2}?‘Qïʾ?‚ÂÌ]å?Ž.]L ¼?ƒmÕ+&¬Š?„ mŠmsi?‡ã ËÄž?‰]³ß’Ý@@@@@,@(?ð?ð?ð?ð?ð?ð¿0îØ`¿=£ð?2ïßÛæ$l?5N4 -FZ@«–*š~Õª@¡Á·qª?RÝÜœ^Ì ?U›W¾£m`?²?k?·9u¡¬Ôy@Ÿfáva @Ÿ@ª7mVÁ.„€@ª7mV@ª7y0¾ í@ª7mV@ª7ŠÚ¹õ[@ª7mV@ª7€A‰7K@ª7mV@ª7FÏAò@ª7mV@ª7ŽcŠ @ l“t¼jÁ.„€@ l“t¼j@ kvâëC@ l“t¼j@ ktýó¶F@ l“t¼j@ kĵܯ?@ l“t¼j@ k³×Ûõ@ l“t¼j@ kÄЩ*@6p4mÅÖ8Á.„>¤µÜÆ@2GÎÙ‡+@1ýúCþ\’@1¹7KƧð@1jW§†Â&@1 ù kº@0³ä%®æ2@1 ù kº@0¾;Í5¨X@1 ù kº@1Òòä@8J¨?Á b¥—}/?Ã-ˆøº_?Á¯C :‡ò?Øþ¿ý†5}?Ì”ôJ>@(@8J¨?¸[:À|àQ?ÊË.%?Ír…£”?ǘ(ކßK?Ä%ÙÍ„ @8p÷?”É…ðoiE?–í -e˜›ð?›zYì3®?? ü‡—Üä?ô@éžî®@@@@,@$?ð?ð?ð?ð?ðøøøøøøøøøøøø @£¨öE¡ÊÁ@£¨íOß;c@£¨öE¡ÊÁ@£¨òT`ªe@£¨öE¡ÊÁ@£¨ô¼j~ú@£¨öE¡ÊÁ@£¨ùÎ_p@£¨öE¡ÊÁ@£¨ó×Ûö@£¨öE¡ÊÁ@£¨ñuŽ!–@¨Ò%`A‰7@¨Ò$›¥ãS@¨Ò%`A‰7@¨Ò'Ë)_@¨Ò%`A‰7@¨Ò& -¦L0@¨Ò%`A‰7@¨Ò$oi@¨Ò%`A‰7@¨Ò%o@¨Ò%`A‰7@¨Ò%m\ú­@8zqÞi­C@8{C•%@3«¥ãS÷Ï@3¬ú¬Ùè>@2Ë"Ðå`B@2Í:’£@1ÿò䎊r@1þ¸Që…@1ÿò䎊r@1ÿìVÕÏ«@1ÿò䎊r@1ÿªÍžƒä?гá‡}?‘€5{ºÎ#?•]˜P?ØTnçE?’Æ÷Xê†?‘6 '8?¢F^ì¼Sð?•yom?”Bœ<\ v?’GÎ>GÅ?’íßš?‘¡ë Þf?¤ŠíšÄ,+?\{ÏïŽ?†úŒz_–È?‡•ó¨–ˆ?‰Ü)@Jq«?‰]³ß’Ý@@@@@,@ ?ð?ð?ð?ð?ð?ð?S2¦O˜?/ýq¨?Wä±¶V=ß? ×Á@£¨ó™Xd@¨Ò$ÛU&v?xã^áã e?37ïßÑ÷?ð«=‹êç?^<–×i@Ÿn½è!^8@¡@¡gxQë…@¡gxQë…@¡gxQë…@¡gyM¼Þ[@¡gxQë…@¡gkŸúd@¡gxQë…@¡gW!Êçí@¡gxQë…@¡gaCqØÝ@¡gxQë…@¡gkÿÿF·@•Ç®zá@•Ìxéö©@•Ç®zá@•˜•@•Ç®zá@•Ë϶‰¬@•Ç®zá@•é¶Õ]@•Ç®zá@•·Xöû@•Ç®zá@•¨±×9@7>«6z@7 3ø÷ù¤@3uãS÷ÎÙ@3q}-Ð@2q‰7Kƨ@2ÔЭÅ@2Vý!ÿ.I@2g0ÏÐ-@2Vý!ÿ.I@2aâ -‹K°@2Vý!ÿ.I@2d1Hf" ?“x/0 ª?’‘a4ÅÞ¯?›•²’Æ›?—<é²–Wò?š|eˆÄP:?¡Ó!o “?~Ov_Ø­«?•xj~‚Á?“cG4W#?˜ð¢:˜&?–¹Œ¿Ú’?žÒ§|á -?¢a>1l¬?˜ÃÑ"ܰ?•Dô\e“‡?ž8É”Ó%.?œ*$]Ø+Õ?šu"I¢(@@"@&@*@7@:?ð?ð?ð?ð?ð?ð¿t`˜å¿^:÷?pÌ._+Ü?dåY ò™@¡ggírš@•ÅQlšô?€†ûµo?†zß¹Êî@!:@ü¼@ts¯$HR@Ÿh”¹ïÓ@¢@§m‚\(ö@§mc4åß@§m‚\(ö@§my­:.-@§m‚\(ö@§mŠb¡p†@§m‚\(ö@§mw£MÕ@§m‚\(ö@§mvA½A{@§m‚\(ö@§mtœ¿¨ö@“hbMÒò@“ho[Uï'@“hbMÒò@“h°;ˆà¾@“hbMÒò@“hÉØ‰Ø@“hbMÒò@“h¿ÞÓÈ@“hbMÒò@“h¸ö‘´@“hbMÒò@“hô'¿ù@8?–»˜È@80uä/p@4&‡+ J@4¤²[·i@3lj~ùÛ#@3R>ïІ@2Œ¿±[W?@2syÂÙZ9@2Œ¿±[W?@2hXÑ©;…@2Œ¿±[W?@2vÎ üˆ³?´C/àÐ?’jÒ¯•?—£‡;¯¡?Ÿ¡Wç§•?œ‚¶üí»³?žÆó©?­®£Õek?–Ón%»t?‘@^ó8"B?¨?ï¶„~? `øÒæ?Ÿõ2Òò?À1CWç6¤µÜÆ@1Œí‘hr°@1~Äk@+@1F“t¼@10gg£§U@0ž«6z‘@0ˆÿ€ÆÙf@0ž«6z‘@0‰£Ðy@0ž«6z‘@0‰Ë%ÿJ@8J¨?‘|ŒBnû‡?•üÎ?˜±w“J?“à¨e?’ý,XsGí@8J¨?“Fæ1ÚQ?’KcûŸUÿ?’ÎùïÛôÐ?‘mñwùÙ?Á–\qâ'@8p÷?%c+5 ?ƒ$4;›?ƒ¦/É>?†î§ZQêË?†ßÌ?€7Ô@*@,@,@<@:?ð?ð?ð?ð?ðøøøøøøøøøøøø¥@¬CŒIº^5@¬C‹Æ§ïŸ@¬CŒIº^5@¬C•%F -¦@¬CŒIº^5@¬CŒÌÌÌÍ@¬CŒIº^5@¬C“ê³g¡@¬CŒIº^5@¬CquŽ@¬CŒIº^5@¬CŒ~($ @¬#D“t¼@¬#K…¸Q@¬#D“t¼@¬#IùrF@¬#D“t¼@¬#;dZ¬@¬#D“t¼@¬#E¸Qì@¬#D“t¼@¬#C× -=p@¬#D“t¼@¬#A½¥@7™*0U2b@7ž±Ä2ÊX@3Ò Iº^5@3Ñ@N¤¨@3q‰7Kƨ@3oØ­«ŸV@2ãÉîËû@2ß±[W>¬@2ãÉîËû@2Ý\ú¬Ùè@2ãÉîËû@2Ü„µÜÆ??}Ñ¿ž,?”tcN~k?’‹»Ùï§?’³Žbtx=?•bJÖµæÿ?”"éã/åY?”¼íÒh??“¡ƒ[¤45?‘¡Kd·´+?”Â1`´?“‚Û£0Î¥?’µ~Yºì?¡D(¸ÿôn?àìÚJ>?†¼Š˜L¥ø?†ú#ѧ?‹Ûx§Þ?‘\,‚†!@@@@@&@$?ð?ð?ð?ð?ð?ð?D Ép¿_¿<r?MZWÉ ¡?)…ÚÕf½k@¬CØ%n&@¬#Eíñ¨6?q8œîc¬?GRDÚj?áˆã¥kû?…b‘¬7«@Ÿky–å@¦@§£@@§£>vÈ´9@§£@@§£>žš@§£@@§£>쿱\@§£@@§£;J#9Á@§£@@§£Bø7´¢@§£@@§£Aä÷eþ@£ X“t¼j@£ X“t¼j@£ X“t¼j@£ Z¹õY³@£ X“t¼j@£ Xâe,@£ X“t¼j@£ Y‡+@£ X“t¼j@£ Zxl"h@£ X“t¼j@£ ZÔ,<Ÿ@6½:’£@6»Í5¨Xz@2©‡+ @2©Ô•*™@1ÝV”@1Þ;Í5¨Y@1‘Þi­BÄ@1‘‰7Kƨ@1‘Þi­BÄ@1‘Þi­BÄ@1‘Þi­BÄ@1‘|ÚQ?€‚ñêã ?’Ç@Š)M?‘ojVrnû{Ñø~?“7ƒÆD -¹?‚á²Olºü?”ï©ÛÉ?‘t‰WZñ?‘< /0ç˜?‘–=û.e1?“ù|ö[ÿz?•ë þÅ?þxÖ?„ã¼ÓZ…ˆ?„2ÌôÏ?ˆ0&YÊEd?‡Õ˜]–GÄ@@@@@,@(?ð?ð?ð?ð?ð?ð?A%ã7¸?<ŠØ0?I é.q?é»õ*)‡@§£?*²€Œ@£ Y}Ÿ#¦?i{¯âq?8Þ²‰mÍÓ?Û-è畺?w&,ìYj@Ÿg‰\ñ¾€@§@®Š±&éxÕ@®Š–ê‹Ë_@®Š±&éxÕ@®ŠÑ ³Äö@®Š±&éxÕ@®‹_€A¦@®Š±&éxÕ@®Š¿ÀéÅG@®Š±&éxÕ@®Š¸G¾Ôu@®Š±&éxÕ@®Šª­‚œ@”ê‡+ J@”êÄW›‡Ñ@”ê‡+ J@”êŠ,U€e@”ê‡+ J@”êà‚‚2@”ê‡+ J@”êÏ図@”ê‡+ J@”ê¯ÂIëU@”ê‡+ J@”ê™}€£H@95S&Á¾@98Á^ø@^@3ør° Äœ@3àvÇá±@3²-V@2ç· ¼M«@2Þi­BÄ@1ö§An¢`@2Þi­BÄ@1í=Ŷ«Û@2Þi­BÄ@1ð+ª„à?—5ÅTêÚ?£®• HT|?¼ ='f?“u"˜L†‚?œ|¤¦.? Sj–±¶“?¬¤¶Î›Êô?™iå‚ùyš?·Ø´c‰Ž?¦À3…PD?žN‡´ä‚?§EYC:Ñ?Ì[hë¤ê ?˜M69!t¯?­NvÝ\b?†%&P)?›@›g¤ƒ?¡óÝYâ4–@@ @(@&@5@8?ð?ð?ð?ð?ð?ð?yɦÄ¿s¯nË?vNU º\?g²é©Èæ@®Š³všÕ @”ê·áÐt8?“s"®ZO?Â7†÷‰@[SY·õï?ÖgS{´¢ó@Ÿm„)kØ@¨@¦WRn—PÁ.„€@¦WRn—P@¦WR•éá²@¦WRn—P@¦WR×s@¦WRn—P@¦W]²-V@¦WRn—P@¦WUŽ!–S@¦WRn—P@¦WVlô!@¤¼Æ$Ý/Á.„€@¤¼Æ$Ý/@¤¼Ðå`A‰@¤¼Æ$Ý/@¤¼Ö_Ø­¬@¤¼Æ$Ý/@¤¼ØüPH@¤¼Æ$Ý/@¤¼Ûô‡ü¹@¤¼Æ$Ý/@¤¼ØDЩ@5Ñ|ÚQÁ.„>¤µÜÆ@1Ê^5?|í@1ÄSŽóMj@1ï²-@1hÛ‹¬q@0æYJôðØ@0Öz–¼@0æYJôðØ@0ׯ·é@0æYJôðØ@0Õzxl"h@8J¨?“Ãruöò²?•™Þ õ?’ñ¼wn-?Ÿ0 碽ü?£6|Obœ@8J¨?˜s˜»ì•?™0˱Á[©?”¡VòÄ\F?¤•éõ9ð?¢cšŠ5W@8p÷?iT£C~t?†úŒz_–È?‡¯½.SM?‹DVóö?Š|)-}í(@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøø©@§Öéûçl‹@§Öß¾vÈ´@§Öéûçl‹@§Öý}¿H@§Öéûçl‹@§×ÏAò@§Öéûçl‹@§×_oÒ@§Öéûçl‹@§Öú¬1@§Öéûçl‹@§×8ï4×@£óRñ©ûç@£ógl‹C–@£óRñ©ûç@£ó_Ë’:+@£óRñ©ûç@£ó_|í‘h@£óRñ©ûç@£óY0¾ í@£óRñ©ûç@£óc9Àëî@£óRñ©ûç@£ów€4mÆ@8?–»˜È@8A [À7@3sS÷ÎÙ@3kÀ6âë@3†“t¼@3|àuöý"@2Š0U2a|@2€ƒn—Ž@2Š0U2a|@2xè§æ›@2Š0U2a|@2lÚQÎ?}Ñ¿ž,?¥d`ÿwªÁ?¡P ÚI?—³Q+Ùv?šxœÏs´i?²’ñZ¶­˜?´Žé`m?¡–}y¢‘?™äú‚#ë?—QÀ–Íù?•’nî …?±aG=)? T®ãÌ…æ?*øT?‘yÃúCŠ?¥k2ïm?‘ÔþÆvI‡?§k‰ K)@@@@@(@,?ð?ð?ð?ð?ð?ð?‚ÿÅ!!@?rkh?gØøGê1?r9zP[ÀÐ@§Öüi÷´@£ó^ºš»ˆ?$#™W?¥íKd½>@v•f‚K?ãÈtYØú}@ŸmeBÐ%V@ª@¨”r-VÁ.„€@¨”r-V@¨—ß;dZ@¨”r-V@¨˜Em\ú­@¨”r-V@¨˜4ê@¨”r-VÁ.„€@¨”r-V@¨—•%F -¦@¢:=ó¶E¢Á.„€@¢:=ó¶E¢@¢;Â3œ¿@¢:=ó¶E¢@¢<“×Ûõ@¢:=ó¶E¢@¢¤µÜÆ@3c÷ÎÙ‡@2%ÜÆ?@2ñ‰7Kƨ@1žOv_Ø®@2=cˆe”°@1 Ùb¶®@2=cˆe”°Á.„NÜC,¥@2=cˆe”°@1…¡ÊÀƒ@8J¨?Þ°ôÕrQÅ?à†áz˜œ?Ý|ËJA]@8Iç?ÜØ/8èJ@8J¨?ÜŸ¯~Œyv?ã?p…—ç?åäÒÕà @8S?ã–`uý%l@8p÷?“&•Z÷˜#?’-BR1Å?¦wfà*-n@8 Ø?ø<È͸÷R@@@@,?ð?ð?ð?ðøøøøøøøøøøøø«@§‚o²-@§‚o²-@§‚o²-@§‚pý\@§‚o²-@§‚p?q`@§‚o²-@§‚pÎE@§‚o²-@§‚n¾¾k]@§‚o²-@§‚n® -¯@“Ïñ©ûçm@“Ïò-V@“Ïñ©ûçm@“Ïî—Z™š@“Ïñ©ûçm@“Ïò \@“Ïñ©ûçm@“Ï¼î@“Ïñ©ûçm@“ÏñžiÛŠ@“Ïñ©ûçm@“Ïò ô@3^Hè§æ@3^1xT²@0?|í‘h@00j+@.ΗOß<@.Î…ªVGL@.=Vlô"@.<¬kÛÏ(@.=Vlô"@.=e d`@.=Vlô"@.=?qÍrK?|¬h2:“?Ís§#?‘&„µ<àa?‹¦p¤?ôÄ ¬Oö?Éâ¦JV?|Ñb×¶@?’+ñßK"?!òEu?-õ=k™ž?Ö“jø?{p²}¸?‚†µ”g¬?Œ­Œl³J?‚{›ÜL’‚?‚â†Æ„µT?†–äÙ¼?†š·8˜ë @@$@&@@8@8?ð?ð?ð?ð?ð?ð¿#ÿ*¿ga‚?!YâR?"lÛßù@§‚oaWœ<@“Ïñ¢Ð[Ä?A­?OÎ?B½8)„®§?¸Sß7?’HK’°?@Ÿfði¯r@¬@®œÒñ©ûç@®œÒ° Ä@®œÒñ©ûç@®œÓœ¾ß@®œÒñ©ûç@®œÓê³g¡@®œÒñ©ûç@®œÔSŽóM@®œÒñ©ûç@®œÑÑN;Í@®œÒñ©ûç@®œÑ‚©“ @­‡+@­Ôýó¶@­‡+@­~ÿ–@­‡+@­5?|î@­‡+@­Ùb¶@­‡+@­ @­‡+@­&YJôñ@4쿱[X@4ߤ?åÉ@1ã÷ÎÙ‡@1á-w1Å@1lj~ùÛ#@1h­«ŸU›@1xDЩ*@1qhr° Å@1xDЩ*@1o!-w1@1xDЩ*@1q$Ý/?|öOÿÝ?‘j`cq?•Mq —¦?Œj6_?˜h†5+P?—ˆZêtü?|öOÿÝ?”¤P ƒË?—›P“o-?½¶³±×ò?™ïIÄè?ŸaùÓH?‚† SFñ?R©i»èi?…~ÆÎÇ$‡?ˆ6‘F:™Ê?‰Â“yä–ê?£ªS@Gd·@@@@@$@*?ð?ð?ð?ð?ð?ð>ÙË1X?aÕŠ5h?5˜Y£*¤?5É…]·A„@®œÒÛ~òÈ@­µ_%X?S@œTTF?S9÷ñþ—á?°·òpB’(?©›ÿ—Zà@Ÿd"nŽÄR@­@§ã²-V@§ãçl‹D@§ã²-V@§ã 4mÅÖ@§ã²-V@§ã#¼ÓZ†@§ã²-V@§ãb¶®~@§ã²-V@§ãHË’@§ã²-V@§ã—ö+k@¬)‰7KÇ@¬(þ5?|ï@¬)‰7KÇ@¬(ø_ö“@¬)‰7KÇ@¬(úu%F@¬)‰7KÇ@¬(þBZîb@¬)‰7KÇ@¬)›¥ãT@¬)‰7KÇ@¬)·€4n@7–šÔ,<Ÿ@7‘A [À@3áhr° Ä@3à@36§ï²-@32MÒñ©ü@2fYJôðØ@2jCþ\‘Ò@2fYJôðØ@2`–»˜Çã@2fYJôðØ@2`oiDg8?š•§q!U?’ñ¼õì?•]˜P?‘ƒZ)Àˆ?“K–ºé…/?•¿!— ö?žŒÝÙ›P?–ÖÀeªw?“Lé94?™Ücãgp?–žóB» ”?—vÑékÜ?‰ì ª# Ø?ŽõÕJ?ޏQë…¹?†¤c·Ó—1?ŠEÝ‹N?‹ì3åý@@@@@,@,?ð?ð?ð?ð?ð?ð?6H"gH?M…Ó¬ ?@ò¬]F[4?NÈ,¨>@§ãdqtÜ@¬)½W*ê?ZËά]?h÷„”~ÒÐ?ª,˜Õ3’?¿3-7¯O@Ÿmè»>@®@«<í‘hs@«<í‘hs@«<í‘hs@«=ÌcñA@«<í‘hs@«=Ùb·@«<í‘hs@«>š@«<í‘hs@«<64@«<í‘hs@«;²þÅm@¨ìŸQì@¨ìŸQì@¨ìŸQì@¨ìÅ+ÓÃa@¨ìŸQì@¨ìÅÉã@¨ìŸQì@¨ìÅm\ú­@¨ìŸQì@¨ìÅm\ú­@¨ìŸQì@¨ìÅ`A‰7@/j¦L/ƒ|@/j¦L/ƒ|@+žùÛ"Ðå@+žùÛ"Ðå@+¿;dZ¬@+¿.Hè§@*æL/ƒ{K@*æs×Ûö@*æL/ƒ{K@*æ?»@*æL/ƒ{K@*æ1ø .?É^žQ5P‚?Òç{íj?‘ÌË>¯f?‹²MÿAÿ8?îú/´`?¶*WFÑ?ÐbMçê_x?’#maЀ?ˆ9²0?>\‰å‘?ÚÌA B{?NÂò‚Ì`?€bMÕky?Œ¬Çëý ?‚|׿pZ?‚äÍ“½E'?†l&þ?†–f_ÔŠŠ@@@@@,@,?ð?ð?ð?ð?ð?ð¿QT«ÀV¾ôh5 ?+‡bTÍw>í"¸vF”@«<Ñ–ûf@¨ìÅi]M8?:zÊù¶~¬>û”Ú¯”¨’?q8ý¼=T>ð£­ÌÌ>@Ÿs ÌA0å@¯@§§ûçl‹D@§§ûçl‹D@§§ûçl‹D@§§ûçl‹D@§§ûçl‹D@§§ûô‡ü¹@§§ûçl‹D@§§ü£n/@§§ûçl‹D@§§ûÍ5¨Y@§§ûçl‹D@§§û²þÅm@­¨;dZ@­¨;dZ@­¨;dZ@­¨¼@­¨;dZ@­¨HË’@­¨;dZ@­¨|í‘h@­¨;dZ@­¨oÒó@­¨;dZ@­¨—$tS@.­5¨Xy>@.­5¨Xy>@(v“t¼@(v4êJ@(dZ¬@(~ÿ—%@&”`ªdÂù@&”mÅÖ8‡@&”`ªdÂù@&”mÅÖ8‡@&”`ªdÂù@&”`ªdÂù?É^žQ5P‚?ÉGãA­÷?‘ŸÇSñ?‹²MÿAÿ8?ëÎ@ A2?¸û:?ÐbMçê_x?’˜‰%F²?ŠA)Nîá?/ò×ÈZø?Ñ¡b£?¾?R g!Ú¢?€bMÕky?Œ¬Çëý ?‚oÁÆÜ§÷?‚ãaÎúvh?†ˆ#.÷?†ˆ#.÷@@@@@,@,?ð?ð?ð?ð?ð?ð¿!]%d ?pÂO`>ò8#L8e?•ß©•~@§§ûÚY¾$@­¨€_~[?„Ó!çÑ_?ˆzÔîG>þ'úÖ;½?)‰Eì1œ@Ÿsò åª@°@¦£ð£× -=@¦£÷ -=p¤@¦£ð£× -=@¦£óÃa@@¦£ð£× -=@¦£ðHð@¦£ð£× -=@¦£ïŸ¾v@¦£ð£× -=@¦£ó&Á¾@¦£ð£× -=@¦£ö+jçÕ@ žë Iº@ žðå`A‰@ žë Iº@ žæ¸ºÈ@ žë Iº@ žìô!-@ žë Iº@ žæ€IS@ žë Iº@ žà4mÅÖ@ žë Iº@ žã¼ÓZ†@8è†YJôñ@8êxl"h -@3û Iº^@3ù¦µ (@3Ðå`A‰@3Xâe,@2µµsê³h@2¶âëC-@2µµsê³h@2´¯O „M@2µµsê³h@2³a@N¥?¤I~Óy‘?“+ÄWè?’÷˜–Èä?“1ÕËt?•Äí¥×?’ß5n?Ñ[NÑé#é?ѱRÇC@Ÿn¤Pwã@±@©ØbMÓ@©ØQë… @©ØbMÓ@©×éùr@©ØbMÓ@©ØFÜ]@©ØbMÓ@©Ø7´¢3@©ØbMÓ@©Ölô!@©ØbMÓ@©ÖÈ´9X@¦]þùÛ"Ñ@¦]ÿ|í‘h@¦]þùÛ"Ñ@¦]þÒˆÎp@¦]þùÛ"Ñ@¦^'RTa@¦]þùÛ"Ñ@¦^'RT`@¦]þùÛ"Ñ@¦]ÿò䎊@¦]þùÛ"Ñ@¦]ÿåÉ@4­¥œàv@4­ÌcñA @0sS÷ÎÙ@0sS÷ÎÙ@0'KƧïž@0'süPH@.ð‰ 'RU@.ðå`A‰8@.ð‰ 'RU@.ðØDЫ@.ð‰ 'RU@.ñ&éxÔþ?|öOÿÝ?Ï[äe+@8Iç@8Ù?©W»¥ÿ$B@8Î÷@8i§@8Å@8S@8û—?§ Tò"Å@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø³@«ˆâÐå`B@«ˆù_‡Š$@«ˆâÐå`B@«ˆÒ{çmK@«ˆâÐå`B@«ˆÓn—Ž@«ˆâÐå`B@«ˆÜXU~½@«ˆâÐå`B@«ˆÜCV@«ˆâÐå`B@«ˆÖø]@™#|í‘hs@™#†d@y£@™#|í‘hs@™#o!> V@™#|í‘hs@™#jhKÉI@™#|í‘hs@™#ƒ: ù@™#|í‘hs@™#vÏ=šŸ@™#|í‘hs@™#‡øÝy@8„¯O „M@8tÅ*wc@4+ Iº@4àÆÆÐL@3 ²-V@3 5K'y@2£ÉîËû@2άÝÄB@2£ÉîËû@2¢zjL,@2£ÉîËû@2›­ÑΊ?š7¼ˆŒ ?’heÀSœÕ?‘®]|ޝ??‘w•ìõ?“ûä)6?˜gV„ä?—5ÅTêÚ?” µ9~ç?‘ãÐös^q?×äÈÝ ?”(?†ŠúЀ>(@@@@@,@*?ð?ð?ð?ð?ð?ð¿[¶J>û, ÞÀ?:+¦ÇÖ/?*f£~V@¢~óq#é¼@­4n¬6,?I?–‡Âýþ?–išî³[?Ž™ú»Ì ?4d¿µ{ü²@Ÿs '˜Í…@µ@®Y²° Äœ@®Y²ñ©ûç@®Y²° Äœ@®Y³¶E¡Ê@®Y²° Äœ@®Y³ê³g @®Y²° Äœ@®Y³Ý—ö+@®Y²° Äœ@®Y°ò{³@®Y²° Äœ@®Y± ²•ê@¨Jú^5?}@¨JôzáG¯@¨Jú^5?}@¨Jú^5?}@¨Jú^5?}@¨JúîcŠ@¨Jú^5?}@¨Jú’£S@¨Jú^5?}@¨Jú¬Ùè=@¨Jú^5?}@¨JúCþ\’@5ý:’£@5ù­BÃÉï@1’ Iº^5@1‘ò×s@0È“t¼j@0Èï4Ö¡b@0‡ ù kº@0‡®záH@0‡ ù kº@0‡ÈK]Ìd@0‡ ù kº@0‡»/ìVÖ?1·†Æjñ?W[†?‘âTÀÊS“?Aš%ðï?‘@@Nßo9?æöæ×t?–ªÎ­¡?’j•×›c?‘C\ºÕ¶?]bËn~?‘c3¸cÜ(?«àÓ RÆ?œÁXÙðÿ?Å9–o?ƒ{¬ÉW?ƒ=rµE=?†Ë¢L1Ù?†å·ÑfWà@@@@@,@*?ð?ð?ð?ð?ð?ð¿50ýú0?QÀ·&?2.ÏrŸÇP?AÝ ¾Ÿåx@®Y²0àC‚@¨Jù.• Î?TåP˜ùa”?]Nᩨ?°‹½7Ñ“Ž?´¢íoRf«@ŸloN‚|D@¶@¢ë-V@¢ë0bMÒò@¢ë-V@¢ë,²•éâ@¢ë-V@¢ë1N;Í5@¢ë-V@¢ë2•éá±@¢ë-V@¢ë*³g ø@¢ë-V@¢ë14êK@¤Åüj~ùÛ@¤Åú¬0@¤Åüj~ùÛ@¤ÅùÛ"Ðå@¤Åüj~ùÛ@¤Å÷ -=p¤@¤Åüj~ùÛ@¤ÅüC,¥z@¤Åüj~ùÛ@¤Åý¿HÌ@¤Åüj~ùÛ@¤Æ·€4n@7¯O „M@7§ï²-@2ðÄ›¥ãT@2í¿HË’@2v§ï²-@2t9XbN@1³&Á½¥@1°-à r@1³&Á½¥@1°ù k¹@1³&Á½¥@1®Ov_Ø®?˜ž^ƒÿ*ˆ?­hX™*?”ÓKÒì"?ŒÇQ´«6@¯ó(õÂ@¯ó!ä÷eþ@øß;dZ@øæéxÔý@øß;dZ@øà'RTb@øß;dZ@øß;dZ@øß;dZ@øç8}À@øß;dZ@øà qu@øß;dZ@ø×Xâf@6[¹Œ~($@6[²þÅm]@2óS÷ÎÙ@2ó× -=p¤@2v§ï²-@2všÔ,<Ÿ@1õµsê³h@1ö‡+ J@1õµsê³h@1õ¼£n/@1õµsê³h@1õ '»0?|öOÿÝ?‘" Á°–•?–Èó^ù„?‹û…†_?’?;Áƒè?ø·-/ge?гá‡}?“?xr¢I?”¿?>‚#§?ª/íÈ«?’êJ>áý?·t¤¢‚K?„‘Za¹P?Ž*JŠË?†' -³}÷C?„l¯¸‰ŒÎ?‰®ââP\?ˆ0&YÊEd@@@@@,@ ?ð?ð?ð?ð?ð?ð?Ovíq ¿Uòʼ??ÀÔ>$Yb?DÒbHŒŠ@¯ó"õ} -@øâõÕ -?`ò¢w?dYãg{÷?Éí¡ì¹Ó?ÉÎzä­@Ÿis·Ò¦@¸@¥§«…¸R@¥§ª³g ú@¥§«…¸R@¥§ª+Õ¢{@¥§«…¸R@¥§«¸0T@¥§«…¸R@¥§¬€kQ@¥§«…¸R@¥§©…x E@¥§«…¸R@¥§ªÒ"NÑ@“ÐaG®{@“Ð`A‰7L@“ÐaG®{@“Ðd–U>@“ÐaG®{@“Ð`ä ˜o@“ÐaG®{@“ÐdYÄœP@“ÐaG®{@“Ð`\A ’@“ÐaG®{@“Ð`sŒÖÑ@5àØDЩ@5àæ¤:è@2+ Iº@2Îóƒ@1M²-V@1N1ø .@0°–»˜Çã@0±w*hÉ@0°–»˜Çã@0°rÆ~_ˆ@0°–»˜Çã@0°ºÉr n?|çµB &€?A«IžÕ?‘º3)½?‹È]SØ&n?‘BŸcõ^?ÚÉMõ‚L?~ì“?ÕÒJ?’bãsÊâí?‘e`Ф?-õGBžö?‘x;¸qÎ?s Ge©í?„”v,ÿ«?‹m$ˆf?‚ç…š(´®?ƒ {7?‡,G]ÜLk?‡43#õC@@&@&@"@8@3?ð?ð?ð?ð?ð?ð>øìâ¹?Àq›p?3ҌLJ‹m?/¨áǦû@¥§ªæïàš@“Ð`ÿ0ÿu?SÒûB)¤?P œíJG?µ{ÕX„\?©—Ü"çßp@Ÿg2± 3Ÿ@¹@ ÿéxÔýô@ ÿé7Kƨ@ ÿéxÔýô@ ÿëvj@ ÿéxÔýô@ ÿì–ZÎ @ ÿéxÔýô@ ÿì d@ ÿéxÔýô@ ÿçwžZ@ ÿéxÔýô@ ÿçÝe}Ÿ@ªÁvE¡ÊÁ@ªÁw -=p¤@ªÁvE¡ÊÁ@ªÁw~ï[ä@ªÁvE¡ÊÁ@ªÁwõtÏ@ªÁvE¡ÊÁ@ªÁwWå@ªÁvE¡ÊÁ@ªÁv-N$Õ@ªÁvE¡ÊÁ@ªÁvñ_@4Ç>«6z@4ÇÏL§Ð<@1ÎÙ‡+@1;kšüb@0;Ƨï²@0U;ÌX@ ÿé;×rð@ªÁv¯f?`)êËÏ µ?2“}sûX¹?ÌŠ‹•sJC?qÿs°XXì@ŸfòÆWy@º@¥ôÌÌÌÌÍ@¥ôÌÌÌÌÍ@¥ôÌÌÌÌÍ@¥ôÍ\ú¬Ú@¥ôÌÌÌÌÍ@¥ôÎV“@¥ôÌÌÌÌÍ@¥ôÌ¿±[X@¥ôÌÌÌÌÍ@¥ôÌVÕÏ«@¥ôÌÌÌÌÍ@¥ô̲•éâ@£;Ÿ;dZ@£;Ÿ;dZ@£;Ÿ;dZ@£;ž5?|î@£;Ÿ;dZ@£;žÒˆÎp@£;Ÿ;dZ@£;ž«6z@£;Ÿ;dZ@£;ž5?|î@£;Ÿ;dZ@£;žžš@5(†YJôñ@5(ºÇË*@1» Iº^@1ºû~ÿ—@0îùÛ"Ðæ@0î쿱[W@05µsê³h@05µsê³h@05µsê³h@05ÜÆ?@05µsê³h@05®æ1ø¡?€‚ñêã ?]àÛ‘?‘4!Ÿ•p’?Œ‚èõЊ?‘1 °µv¦?æöæ×t?€‚ñêã ?’`5žña?ŽËÜ¿€?Ä…à6 -æ?‘&”T¦mÂ?›ªU3Îp?ˆ©CwBÅÉ?)‰€Zw?ƒ{¬ÉW?‚ð'ã:ÂÝ?†Óß -tõ?†Ü‘ °Ô@@@@@,@*?ð?ð?ð?ð?ð?ð¿ -¨€¿&æ¦i€?ŒÃI -3? Cq÷N®@¥ô̯¤Žp@£;žÎæ+(?%œf{yr„?.&ƒ ‹tg?VP¸-"Ê?d–sl\@ŸgÙQc¨@»@ ±E¸Qì@ ±E¸Qì@ ±E¸Qì@ ±FD1‚û@ ±E¸Qì@ ±F2w—@ ±E¸Qì@ ±F“?tþ@ ±E¸Qì@ ±D£ù B@ ±E¸Qì@ ±D¿ízÝ@¢Á‰7KÇ@¢Á‰7KÇ@¢Á‰7KÇ@¢Á[‚ç*@¢Á‰7KÇ@¢Áaä÷f@¢Á‰7KÇ@¢ÁqŸ@¢Á‰7KÇ@¢Á(åý@¢Á‰7KÇ@¢Ác1@1žHè§æ@1žYâ:F@*á‰7Kƨ@*áA [À@)cn—P@)b¶®}Vm@(…oi@(„¨ÁTɆ@(…oi@(„•*™0@(…oi@(„™Ì¢Ü?É^ÈmÔ d?ų6¨¹?‘tÂÍu?‹®úÄD?æ°Ù1%(?¼üï?ÐbMÝn½?’ -i*.˜I?~4pŽU?/ˆ´¯éd?Ía´ï?M›)á?€g"ÆeÖ)?Œ­‡¡ÑSg?‚p„æÁ7?‚ã9©wTÍ?†ˆ=„Ì>(?†ˆâ3`±†@@*@,@,@2@5?ð?ð?ð?ð?ð?ð¿Kw0‡,¾ôR÷,€?4;W·ñ'‰? .ü²‘¤@ ±Et†CÞ@¢Ávq?CrSyœ`±?§Ý@íì?‚—sQº ?(™ÊÔ‘@Ÿsý”Ø@¼@«4nzáH@«4b Iº^@«4nzáH@«4†$Ý/@«4nzáH@«4~š@«4nzáH@«4;dZ@«4nzáH@«4z¬1@«4nzáH@«4€A‰7M@§ëTýó¶F@§ëy‡+@§ëTýó¶F@§ëb\(ö@§ëTýó¶F@§ëJŒL˜@§ëTýó¶F@§ë[~ÿ—@§ëTýó¶F@§ëT9Xb@§ëTýó¶F@§ëYÎ_p@9|ÚQ@9›=ÈK@4f‡+ J@4PØDЩ@3çKƧïž@3Öö”Fs‚@3Œ~($ @3ð¹@3Œ~($ @3¼£n/@3Œ~($ @3÷ÎÙˆ?£G± *Ç‚?›ŽÊ–SS? +*¢«¸u?’m’‹}©9?•³™»7…?–+‚`N?­g;+³ût?¬—ÔŒ,¾?¢W@3tå²?•Œ ;qí?”Þ¨Ëèoé?•)ALŒÀ%?°#ÃIÓ¨&?Ÿ$Ìj½BÙ?›bO—ç†?Ž3lê]0?”NtyÞ"§?“aÑ#@@@@@$@$?ð?ð?ð?ð?ð?ð?qeH4€¿p£k[œ€?h@ÝB_“?i°_ø¦Rz@«4{tRËØ@§ë[@드?€g w¸¹?W9Mj)?ðê™ä¤?é 0ã¸Ë@Ÿp erd@½@¤49Xb@¤/ß;dZ@¤49Xb@¤ÕfÏC@¤49Xb@¤G®zá@¤49Xb@¤·éù@¤49Xb@¤TÒ=¦@¤49Xb@¤uûZ@œêËÆ§ïž@œê×W˜;@œêËÆ§ïž@œê™‡+@œêËÆ§ïž@œêÔ,<žî@œêËÆ§ïž@œê`ù k»@œêËÆ§ïž@œêi]  @œêËÆ§ïž@œéx>G@77â‚@·€@7ÖŽÜ@2sS÷ÎÙ@2@å`A‰7@1Ͳ-V@1·Xâe@1QÞi­BÄ@19…ðoiD@1QÞi­BÄ@1*Û›–ؽ@1QÞi­BÄ@11ÄDíŒà?’Á ˆ|Ί?ÁgÿV¼)¢?®´ËÄt|*? Ð ÷Ž ?š€t]½2?‘;Xïbá?€Z=ú‚¡?ÀLí}ŽÄ?° @çSº¤?“ÅÒÏPÉä?œ•™sù8:?¦ß¼K?Œ@#‹£ôˆ?ª»‡¾X{?ÁeðN ?¤wúb¼?•˜Ùõé=?‰gØ;d7@@@@@0@,?ð?ð?ð?ð?ð?ð¿p_<~€¿—(×é@?p}ìbM#?{lRPÛp8@¤¾^nÜ@œêpžñ©å?Žù_§•mT?œQOÍ6Ûì@¡lh.@,ù±T6Z@Ÿgà-MN@¾@©+ƒn—@©+ƒS÷ÎÙ@©+ƒn—@©+‚\(ö@©+ƒn—@©+„“t¼@©+ƒn—@©+ƒn—@©+ƒn—@©+ƒS÷ÎÙ@©+ƒn—@©+|í‘i@¯r¹XbN@¯r¹™™™›@¯r¹XbN@¯rº^5?}@¯r¹XbN@¯r»dZ¬@¯r¹XbN@¯r»dZ¬@¯r¹XbN@¯r¹‡+@¯r¹XbN@¯r¹Û"Ðæ@3m¥œàv@3m¥œàv@1³S÷ÎÙ@1³&Á½¥@1_²-V@1^«6z@0…œàu÷@0…oi@0…œàu÷@0…m\ú¬Ú@0…œàu÷@0…%F -¦L?1·†Æjñ?ð}óßd?ð’FB:?ð_ŒB?éDEâ©×?À­Õß}º?|öOÿÝ?ð¢dx/?ð‡äR³s?ð‚àÓÁ?ÏtP°*?ˆ9²0?‚nâwfÿ?ðfÁbÂô?ð*wjs—?ð,’Ú|‚?†Ü‘ °Ô?†‡+œC@?ð?ð?ð@@?ð?ð?ð?ð?ð?ð¿@;Poü¾ìÓæ¢?4Ï¿Zˆ#²?­l‚Ý(@©+‚]%5þ@¯r¹öL,?VYYª9ø ?4sá tØA?´—Ÿœ*»&?r`ŠrÅß:@Ÿfjhßèu@¿@¯4åãS÷Ï@¯4áÊÀƒ@¯4åãS÷Ï@¯4æÀ -õ@¯4åãS÷Ï@¯4ã(SBl@¯4åãS÷Ï@¯4ålZÞA@¯4åãS÷Ï@¯4ãSézŒ@¯4åãS÷Ï@¯4ã•>н@™\¿|í‘h@™\¿|í‘h@™\¿|í‘h@™\¿óxR@™\¿|í‘h@™\¾© 8M@™\¿|í‘h@™\Äžýn’@™\¿|í‘h@™\ÂGX»ß@™\¿|í‘h@™\à ph@7+µsê´@72n—Oà@3ahr° Ä@3`ÙÜØË@2Õ`A‰7L@2Õ½Wç³@2«6z‘@2¸Sÿ‘¸@2«6z‘@2­6ƒ¿:@2«6z‘@2± -Vh)?„`™ˆ/.~?ð å??‘œ‚L -v?Œ0Eke?‘©×„Ç¿?‘ùÛCF?‚n—OߤµÜÆ@4¸r° ÄœÁ.„M‰ûçm@3Æ“t¼Á.„QnÙ‡@3L¿±[W?Á.„NÜC,¥@3L¿±[W?Á.„NÜC,¥@3L¿±[W?Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÁ@£ß[¥ãSø@£Þ¦E”þ§@£ß[¥ãSø@£ßZHe8@£ß[¥ãSø@£ß»§ S³@£ß[¥ãSø@£ßO™N@£ß[¥ãSø@£ßEàÒÇ@£ß[¥ãSø@£ßOšÑ’2@š:D›¥ãT@š8úáG®@š:D›¥ãT@š:­S[@š:D›¥ãT@š:‹AѦ@š:D›¥ãT@š:’¡p@š:D›¥ãT@š:ypÙ‰$@š:D›¥ãT@š:”UàÐ@7” xFÜ@7I×Ü“7W@2ý‘hr° @2òs¤¥Í‡@2F“t¼@2A¢Á±‹@1úÔ,<ží@1ð·tqß–@1úÔ,<ží@1÷4~“1@1úÔ,<ží@1ö]ZNh?ݪû†îíø?Ÿýå‘:«?žÌñé‘ÝÌ?’§éŸÏƒ2?’ -4:è~?–`åXÅ÷O?Ü-Õ¸6?¬8%¢Š?”XˆhÉÊÿ?“ýp¼Á€á?•, Gq]?¤E?¹#Ÿ?Þ ‰ ­>Ë?¡I|[ôO¿? •B%M‹?›uS1‹**?™ÒÖ¦Ãbð?–’ã0¸Už@@*@&@$@.@7?ð?ð?ð?ð?ð?ð¿Eð•ª?fÄ-Ö?tr‚¼»à_?wäT“ŠÔ@£ßK„4ä«@š:ª˜’Ä?‚B±?+òi?ƒ†ƒÔBl"?ôãžB¾ŠA?ï¬!ñlëÇ@Ÿr0ulÙ@Â@©‘t¼j@©‘t¼j@©‘t¼j@©‘ -=p¤@©‘t¼j@©‘+jçÕ@©‘t¼j@©‘âëB@©‘t¼j@©‘÷ÎÙ@©‘t¼j@©‘>«6z@¯ ,1&é@¯ ,Iº^5@¯ ,1&é@¯ /²-@¯ ,1&é@¯ /v_Ø®@¯ ,1&é@¯ 1&éxÕ@¯ ,1&é@¯ .V“@¯ ,1&é@¯ *™0¾@7}:’£@7ƒþ\‘ÑO@4}‘hr° @4zqÞi­B@497KƧð@45+ÓÃa@2ÜÚQÎ@2ÚJŒL™@2ÜÚQÎ@2Ù…ðoiE@2ÜÚQÎ@2Ú#9Àëî?€‚ñêã ?•tæïá,•?¤.#ÓYæ?’úˆ_šª?ôê÷º»â?“‡SË{d—?”¼íÒh??”ŸÚ²t©?—cG‰‹o?•†¾N6?‘+ùÔ!½‹?“ÛKÂè• ?‹´¡`Ƕà?–ÞqëJ??¡ÏEqû†»?ˆx»€ñö2?‡×7°º?‰®ââP\@@@@@@?ð?ð?ð?ð?ð?ð?B»ß90¿'³Ãžð?7¨¾º™°¨?MÇ¿tÿF³@©‘ ƒ@¯ -¢ *?[…¯‘oT?jköK > ?·§Jó© ?̧£Eе@Ÿk‚HaÞ@Ã@­Ð0 Ä›¦@­Ð1©ûçl@­Ð0 Ä›¦@­Ð0å`Aˆ@­Ð0 Ä›¦@­Ð0:û~‘@­Ð0 Ä›¦@­Ð7Oß;@­Ð0 Ä›¦@­Ð7>«6z@­Ð0 Ä›¦@­Ð:QÎ@¬e¡ÊÀƒ@¬e»"Ðå`@¬e¡ÊÀƒ@¬e–È´9X@¬e¡ÊÀƒ@¬eޱÄ2Ë@¬e¡ÊÀƒ@¬e›À6ã@¬e¡ÊÀƒ@¬eŠôðØE@¬e¡ÊÀƒ@¬e“3333@8Bò䎊@8@ quŽ@45ãS÷ÎÙ@4.¸Që…@3¾V“u@3º=p£× -@3\ÚQÎ@3XXy=Ù€@3\ÚQÎ@3JçÕfÏB@3\ÚQÎ@3JÀƒn˜?“Æ×q„nï?‘u:|ñ²¨? AoÈöxÎ?‘ÔþÆvI‡?¡Á1ÈBZí@­H1&éy@­Fs×Û@­H1&éy@­Hð@6Ñ|ÚQ@6иºÇ@3›¥ãSø@3 Ä›¥ã@2±‰7Kƨ@2®;Í5¨X@1«xFÜ^@1ª–»™@1«xFÜ^@1©e+ÓÃa@1«xFÜ^@1¨Xy=Ù€?|öOÿÝ?‘‹PƧ¢$?”4 bà5?‘£ºáõÑ?’êÔÒ?”"éã/åY?€‚ñêã ?—Œ,T®?’€fç½Î?“P?Bn¬F?“¹ ¾´î?“IëH!w?„W;RS?Ž•ýÙ—±?‡š¿]b?ƒ­=aÊw%?ˆ©{2¡Î?Ž•w “w„@@@@@*@*?ð?ð?ð?ð?ð?ð?<<пHÒö~X?J,!zv?,ç=Ú”'@£ì =ƒ@ŸfbOm™Ë@Å@¡àÄ›¥ã@¡àÄ›¥ã@¡àÄ›¥ã@¡á!îgQ@¡àÄ›¥ã@¡áBöÕ@¡àÄ›¥ã@¡áe/ƒ@¡àÄ›¥ã@¡à·óèä@¡àÄ›¥ã@¡à 1óu@¬ùl1&é@¬ùl‹C•@¬ùl1&é@¬ùkë1@¬ùl1&é@¬ùl9¾]5@¬ùl1&é@¬ùlm0Ìö@¬ùl1&é@¬ùl“Æäz@¬ùl1&é@¬ùl‰¡É@.V+jçÕf@.VOv_Ø@*™Û"Ðå`@*š“ò«µ@+éxÔýô@+Xâe,@*­úCþ\’@*®ç°¹Î@*­úCþ\’@*®—Oß<@*­úCþ\’@*®µ×>r?É^ž6õP?Â\ófú?‘ØÆì2k?‹´ø:M€ß?éÁ¬èš?¸= -éÑM?ÐbMÝn½?’ q“Àb@?±¸Øÿ?5ߨ“¹?ÌæÝjéÖ?RZ8òp?€bîF¾§?Œ¬3U:?‚pëí’ŸÐ?‚æòõć8?†‹t¾µ.?†‹—ð -«@@(@*@(@4@5?ð?ð?ð?ð?ð?ð¿&Üa¿ð? -lj·@?äiV´Ž?¹,­ÿ@¡àÐL÷ @¬ùl³‚3?3Ó-d·É?P†c˜W?©?)ôOá­N@ŸsÓK©¶@Æ@¤€bMÓ@¤€ùòñ@¤€bMÓ@¤€÷ÎÙ@¤€bMÓ@¤€+ I»@¤€bMÓ@¤€@N¤©@¤€bMÓ@¤€C2º@¤€bMÓ@¤€ 1Ùs@¡ÊÀƒ@®Ûci@¡ÊÀƒ@«ÓÃa@¡ÊÀƒ@¸ -à@¡ÊÀƒ@µ¨Xy>@¡ÊÀƒ@›`)¦õ@¡ÊÀƒ@¦v¿@‘@7£g ù l@7¬$Êò`@2ÞÙ‡+@2ߨ­«ŸV@26§ï²-@2!A [À@1ó&Á½¥@1ß²-V@1ó&Á½¥@1îZ›SUZ@1ó&Á½¥@1ò¶Ëà?‘ɱb)Q?”žP1²"?’à©GMõ?¤3Òƒ°?™ŽåŸîU»?‘Þ½/1üc?•Ö/ê€÷Æ?”zòžÕÿ?”Ï3½fvI?¢ŒZzˆZ”?”ªÝ5yS¢?“rC2¹¢Ú?‘†¹TÈ»L?›9WTêW?¨3 ¤qâ?ŸñK쯎?•¤^'ü³?‘t^“]7]@@@@@0@.?ð?ð?ð?ð?ð?ð?R.ÈοUh>f?7_,ç¡?TybZ•@¤€=nÄá@§O¯~?YKã寮«?t„gøÉ?¥znÚÉJ†?ØÌ==®™ @Ÿl¶ÍNÁð@Ç@¦%÷ÎÙ‡@¦%øbMÓ@¦%÷ÎÙ‡@¦%öøè¸Ž@¦%÷ÎÙ‡@¦%øÁd­@¦%÷ÎÙ‡@¦%õÃ1áH@¦%÷ÎÙ‡@¦%ò‘•Pß@¦%÷ÎÙ‡@¦%óe¤@—V“@—Ù‡+@—V“@——…æ›@—V“@—¡4¹@—V“@—‚e@—V“@—”1@—V“@—îŠMç@2 Î_oÒ@2 Î_oÒ@0‡ÎÙ‡+@0‡”µÏ@0q‰7Kƨ@0p´9Xb@0ý!ÿ.I@0rÉ®ÙÅ@0ý!ÿ.I@0Üÿ]•@0ý!ÿ.I@0ÃÝö¾?É^¨¯Âj?‰©†$Ÿ?‘SÕ24€A?ŒnŠhW¨?‘®q÷¼€Š?ðü²ßGÚ?ÐbQë„›¦?’zé,ìÀ?ˆ¿REÿÉ?ƒîöñr?‘Þ:i”Û?ê'šaJ’?€bMÕgô?ŒÈ”­™ß?‚´“À -?ƒÌØN§†‰?†ÍñàÌÈ{?‡?ÿ¸Å§@@,@$@$@3@,?ð?ð?ð?ð?ð?ð¿UK‡?6ìÂ@¯?A'fæ~8?- qM‘9@¦%ô -£á@—Š¡c?P‰–ë?;À2 U©?™¶Œxâ'b?ol×wi9@Ÿrþ¹ø †@È@¨¦ffff@¨¦$Ý/@¨¦ffff@¨¦šÔ,>@¨¦ffff@¨¤êJŒ@¨¦ffff@¨¤g8~@¨¦ffff@¨£n—@¨¦ffff@¨žì¿±[@¤d;dZ@¤d;dZ@¤d;dZ@¤d¾vÈ´@¤d;dZ@¤d"u%F @¤d;dZ@¤d"œwšk@¤d;dZ@¤d%ðoiC@¤d;dZ@¤d,篷@4÷â‚@·€@4ø7´¢3œ@1Ò Iº^5@1ÑuŽ!–R@0±‰7Kƨ@0°-à r@0}cˆe”°@0z³g ù -@0}cˆe”°@0záG®{@0}cˆe”°@0vÕϪ͞?|öOÿÝ?Kb½™×?‘°&޲P?Ú¾ÉÛ²º?“”>C,4?’ŒZzˆZ”?}Ñ¿ž,?’;µ” È?’¤šÜI«?”pè·FÌs?“£c”?’µ~Yºì?„³3Z\ð„?u/®Xã?ƒ´],m=?„Ö©Ú0?‡ø¢:›¸1?$Ìj½BÙ@@@@@*@*?ð?ð?ð?ð?ð?ð¿Riž¸?b–Ž‚?4„f­’·?@w èúuÏ@¨£ôù¸i@¤d#¾·48?Tý~W?`¬Ýî°Z?³Âq˜¬‡?ÇÅØ i1…@Ÿf65a\9@É@©øQë…@©úŸ¾vÉ@©øQë…@©÷€4mÆ@©øQë…@©ö4é@©øQë…@©÷Xâ@©øQë…@©ôýó¶G@©øQë…@©ø -à@ªÞOß;dZ@ªÞMÒñ©ü@ªÞOß;dZ@ªÞTSŽóN@ªÞOß;dZ@ªÞQë…¸@ªÞOß;dZ@ªÞQ4êK@ªÞOß;dZ@ªÞY¦µ @ªÞOß;dZ@ªÞV8†YK@7L]cˆe”@7MÅÖ8†Z@3° Ä›¦@3Á£n.±Ä@3)Û"Ðå`@3+quŽ!–@2s&Á½¥@2s¼ÓZ…ˆ@2s&Á½¥@2s&Á½¥@2s&Á½¥@2që…¸R?„F/·ÿP5?•@K/Ùz?˜zjÊ©Øi?Hð¹?’Æ÷Xê†?”|„¥&?ˆÿÀ)T¿Æ?”ÇtæMPÐ?œÕ4FégI?’k­ªì¢H?–kš‘ž?”V.·H?‚‹¡8*ùÿ?3ßa=„? t€4Ã?†¤c·Ó—1?‹DVóö?‹ú èNÆö@@@@@*@*?ð?ð?ð?ð?ð?ð¿Lœ ]?`~¾M,?>iP™=;1?E6Fõ5 @©ø<¼IY@ªÞRŠDˆå?^wØg^½°?e5ä¶d?¿E2>oá#?Ç»«(±Ž@ŸhÆçê36@Ê@¢íV@¢ëƧïž@¢íV@¢í‘hr°@¢íV@¢ïùrGE@¢íV@¢ú6âë@¢íV@¢óüPI@¢íV@¢ø7´¢4@£g§ï²@£gÊÀƒ@£g§ï²@£gšu%@£g§ï²@£g C•@£g§ï²@£g¸Qì@£g§ï²@£fó@N¤©@£g§ï²@£fïiDg7@6:qÞi­C@6:QÎ`@2À Ä›¥ã@2ºŸ¾vÈ´@2RÐå`A‰@2AÊÀƒn@2mÅÖ8†@1öR½<6@2mÅÖ8†@2\‘ÑN<@2mÅÖ8†@2 -Ov`?„F/·ÿP5?‘Ü„ Þ(£?§¶Øöƒ.Ò?¦ S~?”k¸!¯eÕ?£P;røp?|öOÿÝ?’{cü€øõ?ž(?{k4?šWl¬Ëz?”Ï#:d ?¦¤Wë'?„‘Za¹P?Ž`ŸÝïöF?•ýÿLîO?›zYì3®??˜§zy?—ã ËÄž@@@@@ @*?ð?ð?ð?ð?ð?ð?bYÁO¿ilTü#?GÐ -Én‚?U×ó…Ô@¢ð/ Q@£füQÊx?f·í?tzbûý?Æz]ÿpî?ëhò[J@Ÿdô¨•j@Ë@¢ º^5?@¢´9X@¢ º^5?@¢÷ÎÙ@¢ º^5?@¢Ë’:@¢ º^5?@¢y¦µ @¢ º^5?@¢ …ðoi@¢ º^5?@¢ -¦L0@©“$Ý/ @©“,‹C•@©“$Ý/ @©“:áG®@©“$Ý/ @©“5?|í’@©“$Ý/ @©“1Þi­C@©“$Ý/ @©“.V”@©“$Ý/ @©“)á°‰¡@7Ç>«6z@7ÁohÛŒ@3T›¥ãSø@3I¦µ (@2A‰7KÇ@2Ь1'@1æYJôðØ@1ß±[W>¬@1æYJôðØ@1áA [À@1æYJôðØ@1á4êJŒ?|¬Çëý ?–(ëR¤?•|®6zj?Œ'õ‚$5ñ?š<¨¸ÆÐ?•½0 -Žø?®í©@Šþ?“?xr¢I?–S•|¡þ?øQñĨó?šâ6¿°P?–,}úºoJ?‰~}œ…o^?Žƒä%®æ2?\ÍÅ“¢?†ÞåØÜÓ?IÏáå$?‰©OO ¨@@@@@,@$?ð?ð?ð?ð?ð?ð¿7è"Ü¿am…‚ -€?/Îy0®:?VQ¶ðzÜ@¢‰‰åð@©“/@Õuh?U"›¦R¸?jMÑ~<Št?£{“¤&Ü‹?Âõ“èT@Ÿnúù­<@Ì@ r° Äœ@ rn—P@ r° Äœ@ oE‘v@ r° Äœ@ jˆñU1@ r° Äœ@ q8É+Û@ r° Äœ@ kp0…@ r° Äœ@ jË×Óí@¦å49Xb@¦å4záG®@¦å49Xb@¦å1¡(Ë1@¦å49Xb@¦å5äýÜÄ@¦å49Xb@¦å]Ð)X@¦å49Xb@¦å@,»g@¦å49Xb@¦å@kAlK@4ÉÎ_oÒ@4Ê1¤½º -@0¦‡+ J@0¥K·y@0ï²-@0­â4¯Ù@/½Vlô"@/—@;„§@/½Vlô"@/´™)ýZ=@/½Vlô"@/Æ0IF?|Ñb×¶@?¼.Mô4?‘Iˆ¾…ƒH?Ž%š´?’H«fk¸V?’&5Ê2¡?}õ¬#„­?’_3µ¨NU?ùa@ÔNy?‘©½XËh?’=UÄ¡¸µ?‘™³XK?‚o†#BpW?s"òYš?‹^`F‡“?ˆïß8ûÚg?‹Ä{^½ï?–dÇ£·@@$@@$@6@8?ð?ð?ð?ð?ð?ð¿W¡Ûâ^?p«ˆä5€?;$+ÕE?pR‰ë¿Z@ o”Ç/¯@¦å?J O8?ZÑ\"3öÂ?}¿d#Óù?Á–kÞµßù@)js‡ÞY@Ÿf­9Ëÿ@Í@žšl‹C•@žšdÍ«Ì@žšl‹C•@žšnÐâ„@žšl‹C•@žšˆL‡·@žšl‹C•@žšp:û~’@žšl‹C•@žšf=®à"@žšl‹C•@žšfõx9@¡¡G®{@¡š€õÊB@¡¡G®{@¡—…Nµ@¡¡G®{@¡¬.ƒø@¡¡G®{@¡±Î_@¡¡G®{@¡œjJJ@¡¡G®{@¡•ÀÈ8Î@6è†YJôñ@6×±}Üyö@23S÷ÎÙ@2¢±†`@1®ùÛ"Ðæ@1•·¼œãÅ@0õµsê³h@0à-à @0õµsê³h@0íº²Êh@0õµsê³h@0çǺ|®r?„ÜNó7·å?•a±F¿§ý?“HÛ.ó//?”ª.#Äç÷?‘ty^µ?’ªzÇÆ`?‹ÖFÔÜÚ$? N²þóá?‘C5ï`½5? HkY¸­?‘äý£0?“•4v/¢Î?“Ü·îDÂ?ލB=â?ƒX+ƒøè?„Ö©Ú0?‰Ý-àλ?‰«œ^tÓŸ@@"@@@1@1?ð?ð?ð?ð?ð?ð?:›éH¿3¡*?Do5Dy*?b%à(Œ%@žšg¸@¡›²ë¼)?e6†wòj?‚ûð»IÖÀ?ÌÏÀ í@槉@ûl@Ÿiâ£1¦Ò@Î@£ŠïŸ¾w@£ŠÔýó¶G@£ŠïŸ¾wÁ.„€@£ŠïŸ¾wÁ.„€@£ŠïŸ¾wÁ.„€@£ŠïŸ¾wÁ.„€@£ŠïŸ¾wÁ.„€@•DšŸ¾vÉ@•Dñ`tÃ@•DšŸ¾vÉÁ.„€@•DšŸ¾vÉÁ.„€@•DšŸ¾vÉÁ.„€@•DšŸ¾vÉÁ.„€@•DšŸ¾vÉÁ.„€@7#g ù l@7.Ò‘œÿ¶@4pÄ›¥ãTÁ.„M‰ûçm@3çKƧïžÁ.„QnÙ‡@3‡ ù kºÁ.„NÜC,¥@3‡ ù kºÁ.„NÜC,¥@3‡ ù kºÁ.„NÜC,¥?~ì“?ÕÒJ@8#˜@8¾:@8 >+@8Iç@8Ù?“ -„L.1Î@8Î÷@8i§@8Å@8S@8û—?¸?–?;•@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøÏ@¢§©ûçl‹@¢§©ûçl‹@¢§©ûçl‹@¢§«àÞÒˆ@¢§©ûçl‹@¢§ª~ùÛ#@¢§©ûçl‹@¢§©Ô•*@¢§©ûçl‹@¢§¨Xy=Ù@¢§©ûçl‹@¢§ªqÞi­@¤Õn—Oß@¤Õn—Oß@¤Õn—Oß@¤Õm‘hr°@¤Õn—Oß@¤ÕlÙè>B@¤Õn—Oß@¤Õr¼£@¤Õn—Oß@¤Õo'»/ì@¤Õn—Oß@¤ÕnV“@4G>«6z@4GKƧïž@1W+ Iº@1W®záH@1Z~ùÛ"Ñ@1\j~ùÛ#@1(è§æ›@1+‹¬q ³@1(è§æ›@1*Ov`@1(è§æ›@1(ï4Ö¡b?}Ñ¿ž,?Čۨ1A?‘½ÉaR º?Œ¸ðËb?‘ …É¿¼?‘m×e\»?|¬Çëý ?’ ,øÕC©?ð{¥âdú?EÇàÔPà?‘áÙž­ò?‘ƒZ)Àˆ?‚yî8Á#?ŒÂ§dß±?„ã¼ÓZ…ˆ?ƒv_.^?ˆ‹”âó?ˆ¾þúWZ‹@@@@@*@&?ð?ð?ð?ð?ð?ð¿%<À?'Ë/;?)–ó~åo†?;­ÎS™C@¢§©Äú+@¤Õo7 -Ž+?IQ“¸(?[?”³Ïÿà? i‡^Ç!?ÂDˆÍm -³@Ÿf»8ôøÕ@Ð@¥Š Iº^5@¥Š -=p£×@¥Š Iº^5@¥Š(K]Ìd@¥Š Iº^5@¥Š4!-x@¥Š Iº^5@¥Š -ŒL˜@¥Š Iº^5@¥Šu%F @¥Š Iº^5@¥Š ‘hr°@¢¢xQë…@¢¢{dZ¬@¢¢xQë…@¢¢„“t¼@¢¢xQë…@¢¢˜“t¼j@¢¢xQë…@¢¢wÁ½¥@¢¢xQë…@¢¢U?|í’@¢¢xQë…@¢¢mà q@7}:’£@7wXâe@4ã÷ÎÙ‡@4òZîcŠ@4•`A‰7L@4«/ìVÕÐ@3úÔ,<ží@4ðoiDh@3úÔ,<ží@4¡ÊÀƒ@3úÔ,<ží@4ëC,¦?—¤o„C?’ãy)­3c?¡  è+î~?¦d†€¹?¡ áãà³? i]½x[?Œs¤DÅÐ?—¿ºÖ÷?¡WŒÒ‚?¤Q ®Q2?› °Ö7?£:ó;Ãç?¥±ŽBÏÄ?¨:!;Ù‰à?¢g`¥uà‹?’Ò=Ù!Wþ?”þ5.¸žÊ?¤L¿€‡4@@@@@&@&?ð?ð?ð?ð?ð?ð¿$Šja ¿xÎOŒ@?TÇôo ?iºåX6P@¥Š ^&Ϧ@¢¢l”;?u—U8'&¶?‹¥r…CÇW?ÎA×áD]Ê@Ì˜ÈØ½–@Ÿh÷Bö@ @Ñ@¢âñ©ûçm@¢âð£× -=@¢âñ©ûçm@¢âçï²,@¢âñ©ûçm@¢âô`ªdÃ@¢âñ©ûçm@¢âæµ '@¢âñ©ûçm@¢âùJôðØ@¢âñ©ûçm@¢ãëC-@¡‡¤Z¬@¡‡¦§ï±@¡‡¤Z¬@¡‡›ô‡ü¹@¡‡¤Z¬@¡‡±œàu÷@¡‡¤Z¬@¡‡½—ö+k@¡‡¤Z¬@¡‡¹XbN@¡‡¤Z¬@¡‡µ2a|@6šÔ,<Ÿ@6Xâe@3…?|í‘h@3tÝ/Ÿ¾@2¬j~ùÛ#@2žì¿±[W@2p–»˜Çã@2ZOv`@2p–»˜Çã@2ZdÂø7´@2p–»˜Çã@2^;Í5¨Y?}Ñ¿ž,?™mv¯rÇ…?¦=Àöw<¸?±j–8K -?®‡›ajÒø?¤sb-ý?žˆ2}?š…FÌ«Ø*?­ ßåG?¬]~ɺ¶@?®wcÈ~Y?°)œpwe ?‚Ö˜>µDà?‘Žèã&!+?š6v;vî?ˆx»€ñö2?’3¨£„È?°+—ߎ @@@@@,@,?ð?ð?ð?ð?ð?ð?g^mÅn?r›C?§?WPQ4Ö{Õ?X™|Ã3L[@¢âóÌSäA@¡‡«ùOpô?n´7ý^U?o5‚‚ràâ?ÓÅ,zcè•?ʦ•.~WÃ@Ÿ^ß~ùË@Ò@§ÂuÂ\)Á.„€@§ÂuÂ\)@§Äš@§ÂuÂ\)@§Ä[µsë@§ÂuÂ\)@§Ä®¾ß¤@@§ÂuÂ\)@§Ä­(Œç@§ÂuÂ\)@§ÄÂø7´¢@ UÏß;dZÁ.„€@ UÏß;dZ@ WŒÌÌÌÍ@ UÏß;dZ@ X²-V@ UÏß;dZ@ X/Òòå@ UÏß;dZ@ X9#¢œx@ UÏß;dZ@ X1Ä2ÊX@6åöý!ÿ.Á.„>¤µÜÆ@2ã÷ÎÙ‡@2Ë’:)Ç@2~ùÛ"Ñ@1P–»˜Çâ@1‚‚@·€5@0µœàu÷@1‚‚@·€5@0²:)Çy§@1‚‚@·€5@0¶È´9X@8J¨?ÑNöŸ:'—?ÞÅDwÜhg?ÙÑ» è°Ô?Ѧ›ó9ÔH?ÓÔ=J7@8J¨?Ý_;Îê$?Þsr±lV?ÛÐGJéÂ?ÔÁ“b)Û‘?Øûo¼@8p÷?’K•ªQ5?Ž;øÑNô?’Ž_½‹Éc?™GXêâ?“!S{uu@@@@,@*?ð?ð?ð?ð?ðøøøøøøøøøøøøÓ@®ã-‘hr°@®ã.Ù‡+@®ã-‘hr°Á.„€@®ã-‘hr°Á.„€@®ã-‘hr°Á.„€@®ã-‘hr°@®âü64@®ã-‘hr°Á.„€@ "Ðå`B@ !$Ý/@ "Ðå`BÁ.„€@ "Ðå`BÁ.„€@ "Ðå`BÁ.„€@ "Ðå`B@ J~ùÛ#@ "Ðå`BÁ.„€@6Û¹Œ~($@6ÚCþ\‘Ò@5º^5?}Á.„M‰ûçm@3Ͳ-VÁ.„QnÙ‡@4(è§æ›Á.„NÜC,¥@4(è§æ›@4éxÔýô@4(è§æ›Á.„NÜC,¥?|öOÿÝ@8#˜@8¾:@8 >+?¾ ¬rLæÛ@8Ù?žˆ2}@8Î÷@8i§@8Å?·*ç*É«S@8û—?¶,1õ'®@8 * @8p÷@8¶?°Í=üi@8 Ø@@(?ð?ðøøøøøøøøøøøøÔ@¤‹ŒÌÌÌÍ@¤ŠÒ-V@¤‹ŒÌÌÌÍ@¤‹poiDg@¤‹ŒÌÌÌÍ@¤‹z–¼@¤‹ŒÌÌÌÍ@¤‹†Â&€@¤‹ŒÌÌÌÍ@¤‹”,<ží@¤‹ŒÌÌÌÍ@¤‹ˆr° Å@¬ù²° Äœ@¬ú7ÎÙ‡@¬ù²° Äœ@¬ù¤êJŒ@¬ù²° Äœ@¬ù¦1ø @¬ù²° Äœ@¬ù¬¥zxk@¬ù²° Äœ@¬ù°©*0@¬ù²° Äœ@¬ùºu%G@9 ØDЩ@8JáG®{@4”›¥ãSø@4™è>BZî@3d¼j~ùÛ@3dÂø7´¢@35µsê³h@3V»˜Çâ‚@35µsê³h@3^šv@35µsê³h@3UÖ8†YK?àíò‡ä9?¤iedA¾?•í¤®Èq{?¡sâ½ë?ª–yHªÃ?ž»‚>äÚ>?á…pn©³?¢ÉÓDý?–v”׆7Ê?´ '³~À?³ÍÂ]%ž®?ž*“ÀMõL?õ¿Ð™8?Û?¡Ê$̤T?¨?õ:Lö]?®íÇ[ÌíY?°È-ìÉB?¡_—‚×! @@@@@,@$?ð?ð?ð?ð?ð?ð?\±Lu@?lââ%?väG¤ã\q?{¢>›z@¤‹‰›—»@¬ùµÅg²?‡¤}ù0Xy?‰×<Ô3ð²?änÏ–ì9?Ô#“½,»@ŸuRrh@Õ@ ß“t¼@ ß qu@ ß“t¼@ ß ˆ=Ö@ ß“t¼@ ß³Qµ‹@ ß“t¼@ ßòb@ ß“t¼@ ß›89i@ ß“t¼@ ßÜŒ+@¬¾€ƒn˜@¬¾‡ï²-@¬¾€ƒn˜@¬¾{‘žX•@¬¾€ƒn˜@¬¾}ìÖ9¶@¬¾€ƒn˜@¬¾zæ†@¬¾€ƒn˜@¬¾}iGt@¬¾€ƒn˜@¬¾‚û‰Ðy@7kµsê´@7eÈ@ àò@3 Ä›¥ã@3&å`@2{Ƨï²@2~öC/‘¢@1£ÉîËû@1©]Óòû@1£ÉîËû@1©ˆÃNÐ@1£ÉîËû@1©o¸Œ¾?|çµB &€?‘tÛŒ?•Êð=éx?é*„4Ie?’]çñÆ[?‘ð0~Wš?’ÌRû ã?’Q?4kÞu?’]ÍdM•J?’é -lr¬·?’Z›ðŸ“?‘>pú—±Â?¢¾•´é?Ž­#³³q?ƒ1B«ð¡!?…aiJ‹k?ˆÁã Tn?ŠüÀ]  @@(@,@,@8@3?ð?ð?ð?ð?ð?ð¿\sª·T¿Sýƒ¬?11tfº?]€“7Ç@ ßPf¸¬@¬¾€í[#²?S‹Ÿ—À³?{ Vs¹?¬ì}ð}±?ñAWƒ@Ÿk!œ83 @Ö@§Ò¥ãSøÁ.„€@§Ò¥ãSø@§Ó‰7KÇ@§Ò¥ãSø@§Óc× -=q@§Ò¥ãSø@§ÓB\(ö@§Ò¥ãSø@§ÓªÍž„@§Ò¥ãSø@§ÓÓZ…‰@ öÈ´9XÁ.„€@ öÈ´9X@ ì<žìÀ@ öÈ´9X@ µéá°Š@ öÈ´9X@ À'RTa@ öÈ´9X@ …m\ú­@ öÈ´9X@ ¤Âø7µ@8·â‚@·€Á.„>¤µÜÆ@4£÷ÎÙ‡@2$Ý/@3Æ“t¼@2Ö8†YK@2úÔ,<ží@1ªÍžƒä@2úÔ,<ží@1ˆ§æšÔ@2úÔ,<ží@1™Ô•*š@8J¨?¨E‹¨¹“‹?·éo‘" -?¯ð~aäí?ÁÚuës`c?§ùä´~«G@8J¨? ¬q¶™?ÁåòÊ(TÅ?ÆfáY|h?ÕNMpÄZ&?Ë@!"‹Š@­µ²-V@­µ·¾S8@­µ²-V@­µºw;/b@3õS&Á¾@3óÉîËû@/”¼j~ùÛ@/‹'µ¡@.mOß;dZ@.cn.gJ¹@-#¼ÓZ…ˆ@-^5K@-#¼ÓZ…ˆ@-ZÑv×@-#¼ÓZ…ˆ@-mÚÎï?€‘gQÚÃ?õ­r ?‘KI4ê?Œ'õI Š?‘&J—œ?ÊûVh -”?}@T˜ÁÎ¥?’§h‰ª?‘Ç}%“ '?RL„óBÛ?‘1b?\š÷šU½?ƒY¥„ûkd?ŒÆò-Ük?‚Â!Üb?ƒ?Âù?†—ò« «?†Žþí}ê@@@@@4@4?ð?ð?ð?ð?ð?ð¿IúÍ1D?UfÎd°?ÝBŠ&’»¨qŠL?MÚÍóüz?‡ ´4õ'f?¦r48ñõþ@Ÿgh¡tZñ@Ø@­8U$Ý@­8R° Äœ@­8U$Ý@­8,VÕϪ@­8U$Ý@­8U?|í‘@­8U$Ý@­8jJŒM@­8U$ÝÁ.„€@­8U$ÝÁ.„€@–ÖOß;dZ@–ÖHìžÑ‹@–ÖOß;dZ@–Ö+P°ò}@–ÖOß;dZ@–Õè$ x@–ÖOß;dZ@–ÖK]Ìcñ@–ÖOß;dZÁ.„€@–ÖOß;dZÁ.„€@8 xFÜ@8ˆNi°@7° Ä›¦@71ohÛŒ@5Ë"Ðå`B@6©ûçl‹@5._oÒ @59JôðØE@5._oÒ Á.„NÜC,¥@5._oÒ Á.„NÜC,¥?“x/0 ª?Æ\5Ÿ#àk?ÀÆÜF¡v?©ßìE½u]@8Iç@8Ù?‘ 1˜Ó ?ÏV Áè?ÄCÚ¶’ú?ºrßpв@8S@8û—?‚·˜²#–n?ÊM#’Ž?µÎ%×€Ý_?³ÓÑžoh@8 Ø@8 Ø@@@@?ð?ð?ð?ðøøøøøøøøøøøøÙ@¬eÞ¸Që…@¬eÞùÛ"Ñ@¬eÞ¸Që…@¬eà·€4o@¬eÞ¸Që…@¬eߨ­«Ÿ@¬eÞ¸Që…@¬eà'RTb@¬eÞ¸Që…@¬eÝó¶E¢@¬eÞ¸Që…@¬eÝ—ö+k@¢Âœ(õÂ@¢Â›çl‹E@¢Âœ(õÂ@¢Âœ(õÂŽ@¢Âœ(õÂ@¢Âš¹õY´@¢Âœ(õÂ@¢Â›~ÿ—@¢Âœ(õÂ@¢Âœ„µÜÆ@¢Âœ(õÂ@¢ÂœÚQ@4įO „M@4ļj~ùÛ@08r° Äœ@08Që…¸@/&éxÔþ@/Î_p@-”`ªdÂù@-”!-w2@-”`ªdÂù@-”êJŒ@-”`ªdÂù@-“×Ûôˆ?|öOÿÝ?êÚÏ$?‘$Cê¡@í?Œ ßõIyû?ùª¨?ÃwZL?|öOÿÝ?’0nà=Q“?ŠA)Nîá?‡@Cvì×?õ<úU?M\³Ù“@?ƒmÕ+&¬‰?Œ».êxóÚ?‚‹¡8*ú?‚ð'ã:ÂÝ?†¯Mž684?‡ã ËÄž@@@@@*@"?ð?ð?ð?ð?ð?ð¿&[ ? E½ï@?0f$ÇC^Q?¹<'5ª@¬eÞÅ5+§@¢Â›þ›è?PYPžBK?6ÿåthg1?¬ßÁ´¦»Ž?{L‡ -?Ì1@Ÿfþ¶NÎU@Ú@©¼äZ¬@©¼éTŸÏÙ@©¼äZ¬@©¼ß‰Ý í@©¼äZ¬@©¼ß~ï:@©¼äZ¬@©¼ÛL!@@©¼äZ¬@©¼ßª-Ú›@©¼äZ¬@©¼ÜädpÅ@›«ÎÙ‡+@›«×Øßá@›«ÎÙ‡+@›«Í¨‰Ñ~@›«ÎÙ‡+@›«ÎRHúg@›«ÎÙ‡+@›«Ðòe@›«ÎÙ‡+@›«Î}ëø@›«ÎÙ‡+@›«Ïïùxç@7*0U2b@7Ø©ãÐ@2sS÷ÎÙ@2sYjÖq@1Ãt¼j~ú@1Â5xΆ@1._oÒ @1,Ý/Ÿ¾@1._oÒ @1,Ü)&$@1._oÒ @1,ÄXCœ -?ƒÔo"ë–? -"ùûü?‘ð¿xÀ‘?°ÿËûÖ?’ -EÜàõ?‘ªÖ¸ÿ†™?¨Sp*?’ ñó«Î?‘ú&:η?­ºRçþ?‘TþòÇÀ?†'ô’U©?û놱_•?CÏR"?„&ÑÄÜC?ƒPo”ž™{?†ÑÜ uv?†ú{j½ì@@ @(@&@1@1?ð?ð?ð?ð?ð?ð¿f訛<¿O£w@?Q¥¹Ò"9?)‘²¨ý@©¼á©w¹Q@›«Òþkî†?q€¤Bj‡F?JŒƒº§s?èSaõ3=?žÌôûúb@Ÿh„Ç:@Û@žhr°!Á.„€@žhr°!Á.„€@žhr°!Á.„€@žhr°!Á.„€@žhr°!Á.„€@žhr°!Á.„€@¦ˆ$Ý/Á.„€@¦ˆ$Ý/Á.„€@¦ˆ$Ý/Á.„€@¦ˆ$Ý/Á.„€@¦ˆ$Ý/Á.„€@¦ˆ$Ý/Á.„€@3¨†YJôñÁ.„>¤µÜÆ@0—+ IºÁ.„M‰ûçm@/÷Oß;dÁ.„QnÙ‡@/87´¢3œÁ.„NÜC,¥@/87´¢3œÁ.„NÜC,¥@/87´¢3œÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøÜ@¯$G+ J@¯$C× -=q@¯$G+ J@¯$EÖ8†Y@¯$G+ J@¯$H1&éy@¯$G+ J@¯$EýŠÚº@¯$G+ J@¯$F¸ºÇ@¯$G+ J@¯$Em\ú­@£hõÂ\@£f$Ý/@£hõÂ\@£gâ‚@¸@£hõÂ\@£gl‹C–@£hõÂ\@£iº^5?@£hõÂ\@£hÛ‹¬q@£hõÂ\@£iîËû@7‰Î_oÒ@7„•*™1@23S÷ÎÙ@23MjO@1ˆ“t¼j@1ˆšu%F@1=cˆe”°@1=<64@1=cˆe”°@1<žì¿±\@1=cˆe”°@1<Æ??–ªÎ­¡??ÖCã ?‘œÁùãJC?‹ÑqÔ@vÿ?’êÔÒ?‘‚ÊŸû©?óA[ØïF?’Ȳõa®?‘twæ³?EÇàÔPà?‘–=û.e1?r¼Jsž?‡~ ~ã? $gú‡v?ƒÚ@êA²?ƒ^ ›¨¬a?ˆCns¥ ?‡æê7²zE@@@@@*@ ?ð?ð?ð?ð?ð?ð?5sýïÐ?Gfš-¼?3™¶ãG@¦†ƒn˜@¦…ÿË’:*@«)Å¡ÊÀƒ@«)Å¡ÊÀƒ@«)Å¡ÊÀƒ@«)ÆL/ƒ{@«)Å¡ÊÀƒ@«)ÅãS÷Ï@«)Å¡ÊÀƒ@«)Ƨï²@«)Å¡ÊÀƒ@«)ÅÖ8†Y@«)Å¡ÊÀƒ@«)ÅðoiD@0«µsê³@0ª³g ù @*û"Ðå`A@*ûµsê³@*XÔýó¶F@*Xï4Ö¡b@* -#9Àëî@* ûçl‹E@* -#9Àëî@* -Ov`@* -#9Àëî@* -0U2a}?É^žQ5P‚?Òç{íj?‘"žæÆó¡?‹²MÿAÿ8?ðÌÇßgé?ºª$Ð?ÐbMçê_x?’ ,øÕC©?¹º–Èj?1ð'7éÃ?ß’ºèh!?Z˜°,aÝ?[Éh(?Œ²ÅŒÕ6?‚q6tNø7?‚äÍ“½E'?†‰Oú|q?†ŠúЀ>(@@@@@,@,?ð?ð?ð?ð?ð?ð¿AF–º¼¿4ÕÓ0?)/„kÛré?#lE „Œ@¦†9 ¦ÿ@«)Æ0?89*uM?2cـ߹Ü?lÌõt3BÝ?]—ãÏßÑÈ@Ÿsêkœª@à@©î”záG®@©î…{q¶@©î”záG®@©î˜|+Nƒ@©î”záG®@©î–]¬V„@©î”záG®@©î–›æ½ò@©î”záG®@©î–njV @©î”záG®@©î•H¦q@”B\(ö@”9Û"Ðå@”B\(ö@”AʉB@”B\(ö@”SÐÜ;@”B\(ö@”?,Í¡i@”B\(ö@”Dã¿@”B\(ö@”EàèÆ@82ÃÉîËû@80ø¯õMÙ@4Lí‘hr°@4M@v©Æ¨@3¬j~ùÛ#@3®?èKž@2ÔmÅÖ8†@2Ó®×2ür@2ÔmÅÖ8†@2ÓÇqÛ‘¤@2ÔmÅÖ8†@2Õ ÒG-ú?€Z=ú‚¡?“H9Ÿ‰?–8¥NJH±?¤ÝÿÏ?’ š¬ ç?“ƒµ†s5t?˜@þà>¨?–ç7!,%ä?‘,e±ò¼É?DìQ |?‘¹Y*.?’$'^ Y?’¶Èñr“?›wºÎ?ï& d?„"æUx?ŠbewFA0?‰ñ{Õ<K@@,@,@"@8@9?ð?ð?ð?ð?ð?ð?p¸ ž?UF.ºó?R*ó-øe?'zׇdmå@©î‘ñ®ŒŽ@”@°XZj?t»nþÙÂ?B´/^4Ÿ?ì˜1Ì$??Ž"Ê_‘@ŸlJ Þ@á@®É9XbN@®É9¿a+ì@®É9XbN@®É:–¼@®É9XbN@®É9XbN@®É9XbN@®É9Œ~(#@®É9XbN@®É8üPN@®É9XbN@®É9 ~1C@œ_;dZ@œ_;dZ@œ_;dZ@œ^5?|ï@œ_;dZ@œ]/Ÿ¾@œ_;dZ@œ^Ov_Ù@œ_;dZ@œ^ƒä…@œ_;dZ@œ_:Ç­x@1‚ò䎊@1‚&€IR@,kƧï²@,k’:)Çy@+E¡ÊÀƒ@+Ov_Ù@*æL/ƒ{K@*æL/ƒ{K@*æL/ƒ{K@*æ$Ý/¡@*æL/ƒ{K@*æbîž=?É`U8ŒrÌ?ÉGãA­÷?‘Ûü†Nã?‹½XQê>æ?íOýï8?¼_ˆæ?ÐbMÝn½?’ ,øÕC©?|™,Ž!?4–Ú‰3?Ö§¬ÙO?H+õm6?€bîF¾§?Œ¯þuõí?‚yî8Á$?‚äÍ“½E'?†ŠúÐv?†Žÿ󰉋@@@@@,@0?ð?ð?ð?ð?ð?ð¿/3q–@?(ª¶ÙÎ?wy -hO -?{ÄÌ×5@®É9;k@œ^¥l(u?&¹Ü‰©?ϧŽü¨?Hõ>[õó0?3€óËpw@Ÿs kXƒg@â@¡hRñ©ûç@¡hT¼j~ú@¡hRñ©ûç@¡hKjçÕg@¡hRñ©ûç@¡hL²•éâ@¡hRñ©ûç@¡hPË)^ž@¡hRñ©ûç@¡hNóMj@¡hRñ©ûç@¡hM«ŸU›@¬ž‰7Kƨ@¬ž‹C•@¬ž‰7Kƨ@¬ž…Ö8†X@¬ž‰7Kƨ@¬ž~($ w@¬ž‰7Kƨ@¬ž„êJŒ@¬ž‰7Kƨ@¬žŽ!–R½@¬ž‰7Kƨ@¬ž„Z¬@5Ì]cˆe”@5ˬq ²–@1î5?|í‘@1ëjçÕfÏ@1~V“u@1zdÂø7µ@0ÜÚQÎ@0Ö¡aä÷f@0ÜÚQÎ@0×â‚@·€@0ÜÚQÎ@0ÔohÜ?1·†Æjñ?–MSMÓ®¬?’à©GMõ?ޝ“¶¶ÒÍ?‘ÏX¼ãs~?’?=ÆþÎò?}Ñ¿ž,?”n‹rÕ|?’€fç½Î?’F—T \*?—QÀ–Íù?’Âuþ!BÖ?‰~}œ…o^?Å{¿Ž<º?„ËD(ºp?Š>ÚµÕ?Œúq‘?‰ö±«tï@@@@@*@ ?ð?ð?ð?ð?ð?ð¿W¼*,h¿Pç§)T>öžÇ?K$7?M¤µÜÆ@3µãS÷ÎÙÁ.„M‰ûçm@3H“t¼jÁ.„QnÙ‡@2µµsê³hÁ.„NÜC,¥@2µµsê³hÁ.„NÜC,¥@2µµsê³hÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøç@¡ÝÕ%@¡Ý¾¸Që…@¡ÝÕ%@¡ÝÇÈK]Ì@¡ÝÕ%@¡ÝÉá°‰ @¡ÝÕ%@¡ÝǓݗö@¡ÝÕ%@¡ÝÄЩ*@¡ÝÕ%@¡ÝÂø7´¢@¤ï²-@¤Û¥ãSø@¤ï²-@¤øl"h @¤ï²-@¤öÈ´9X@¤ï²-@¤ðHð@¤ï²-@¤ò䎊q@¤ï²-@¤ïƒ{J"@8è†YJôñ@9í‘hr°@2&‡+ J@2"e+ÓÃ@1²-V@1û~ÿ—@0ëxFÜ^@0çKƧïž@0ëxFÜ^@0äêJŒM@0ëxFÜ^@0ä•*™1?¯oÝ ÷6}?½Ë9ØŠ§?‘,fŸCô6?Œj6_?“Œ4f(Rú?•(Ï¢Uÿ?¢Æ÷Xê†?“í -Âô‚?³2ºŽ'?]bËn~?–å·ÑfWâ?•ŒSˆw?­‹©(ÓDÊ?ï7è-ÖR?‚ù…žÄ`x?‚ð'ã:ÂÝ?Œ˜ˆTÙ8ª?ˆ¾þúWZ‹@@@@@,@*?ð?ð?ð?ð?ð?ð¿P%d6Å?h¯<¶Ù€?Tk‰áÐ’˜?a×ÚW@¡Ýźz@¤îð#^–?eË‘ÛI>Ä?wîsŠK±D?Âã{ý @Í?ã±î˜H~‡@ŸoÏšOnn@è@«ŒIº^5@«ŒIº^5@«ŒIº^5@«…j½@«ŒIº^5@«„—­”@«ŒIº^5@«{¥<{–@«ŒIº^5@«{e¸O@«ŒIº^5@«€ µ‘ @”« Iº^5@”« Iº^5@”« Iº^5@”ªö€‰R@”« Iº^5@”ªôëë)£@”« Iº^5@”ªú}ýƒT@”« Iº^5@”«bOß¡@”« Iº^5@”«"l—c@3|ÚQ@3ohÛŒ@1Š^5?|í@1zpJ¨@0’Ðå`A‰@0Ž…Ð Ób@0QÞi­BÄ@0CÃfÂkó@0QÞi­BÄ@0Hº0,@0QÞi­BÄ@0I¶0˜àÈ?|¬h2:“?.ƒFI‡?‘%ja •a?‹¯^ÆÅ‹Ú?“v–j“–?“Ø„„1ð…?|¬h2:“?—™‘•³ì4?‡6Ƴ?©€Ù~nY?”d°´}ê¡?“ÿÀ³þ§?‚qÑ9Ð?0ét:äm?ƒÏòt„´&?ƒ8;°­é?z‹!?C¦i;ã@@$@@"@<@8?ð?ð?ð?ð?ð?ð¿o%µ! ?RÃAJ?U•|5T²d?]wl“Bë@«ƒÐ¿à@”«-`z2?t‹…Cœ£?|¿»„¦{û?ôþ¨d>¶@[_ÂÕQ@ŸeÊâ¯Qê@é@¤±n—OßÁ.„€@¤±n—OßÁ.„€@¤±n—OßÁ.„€@¤±n—OßÁ.„€@¤±n—OßÁ.„€@¤±n—OßÁ.„€@Ÿè‡+ Á.„€@Ÿè‡+ Á.„€@Ÿè‡+ Á.„€@Ÿè‡+ Á.„€@Ÿè‡+ Á.„€@Ÿè‡+ Á.„€@9šÔ,<ŸÁ.„>¤µÜÆ@5©‡+ Á.„M‰ûçm@4È“t¼jÁ.„QnÙ‡@4…œàu÷Á.„NÜC,¥@4…œàu÷Á.„NÜC,¥@4…œàu÷Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøê@ªp¢MÒñª@ªp±&éxÔ@ªp¢MÒñª@ªp¡-w1@ªp¢MÒñª@ªp«C,¥@ªp¢MÒñª@ªp IQ‚@ªp¢MÒñª@ªp¡:’£@ªp¢MÒñª@ªp¡–R½=@§ð¬1@§ðýó¶G@§ð¬1@§ði­BÄ@§ð¬1@§ðOv_Ø@§ð¬1@§ð;dZ@§ð¬1@§ðkP°ó@§ð¬1@§ð—ö+k@8Bò䎊@8?²-V@3«¥ãS÷Ï@3­æšÔ,<@2Ú~ùÛ"Ñ@2Þÿ—$t@1½cˆe”°@1¾}Vlô@1½cˆe”°@1¿ò䎊r@1½cˆe”°@1¿Ë’:)È?îŠõ ?ÎÁ¯‰t0?•=ÛtQ¾F?‹û…†_?’Z†Ažj?’€ú¤ˆ4 ?}Ñ¿ž,?” Á lŸž?“5ñ µ?Níú¾?’pP‡È»?“êXÔ #{?Œ¢yëjk±?)‰€Zw?ŠÌ÷7Õ}?ƒGϵ¨í'?‡Ä­‹›Ü?ˆ -¿„r©Ý@@@@@,@,?ð?ð?ð?ð?ð?ð¿c6Q;?_É~Öd?\B0°a ?IœÿÆï@ªp£JÓ -m@§ðÎ-Ü?s°k \õ?oOÕêšZÖ?áîꜵRk?Ü|ð3Í„@ŸmMI@ë@®ÉŽV“@®ÉŽV“@®ÉŽV“@®ÉŽÙ‡+@®ÉŽV“@®É\(õÄ@®ÉŽV“@®ÉŽÙ‡+@®ÉŽV“@®ÉÅÖ8†@®ÉŽV“@®ÉÅÖ8†@¡Îýó¶F@¡Î?|í‘@¡Îýó¶F@¡Î¼j~ù@¡Îýó¶F@¡Îýó¶F@¡Îýó¶F@¡Î¯O „@¡Îýó¶F@¡Î¢3œ@¡Îýó¶F@¡Îã¼Ó[@0­¥œàv@0­¥œàv@*ÍV“@*Í(Œç¯@*†éxÔýô@*†éxÔýô@)”`ªdÂù@)”mÅÖ8‡@)”`ªdÂù@)”záG®@)”`ªdÂù@)”mÅÖ8ˆ?Éa—Ã(Ê?Ì&ÏøHÃ?‘"žæÆó¡?‹ÁË…ÉT?îú/´`?¸û:?ÐbV‡,?’r/BÖ?|™,Ž!?6) }’ë?ÔÒ@úˆ‘?M\³Ù“@?€b¡´ñ@?Œ­·Ž~('?‚s@ˆaÛ?‚ãaÎúvh?†‰Oú|q?†‰Oú|q@@@@@,@(?ð?ð?ð?ð?ð?ð¿@0ø ?zƒrX?$ÍŒ¼`)?ú]Ž=÷@®ÉŽ5â.@¡ÎºÜ®¢?4•ØãP?DBãpA¤?cœû¹A½?4;?׊@Ÿs ¤­Ö7@ì@­–$Z¬@­–'®zà@­–$Z¬@­–%—Ñãb@­–$Z¬@­–(Á=ã@­–$Z¬@­–'a\Ø@­–$Z¬@­–"Ç’k@­–$Z¬@­–$—‡ý@™û}ó¶E¢@™ûgòƃ@™û}ó¶E¢@™ûp¨žŠ@™û}ó¶E¢@™ûo-«é7@™û}ó¶E¢@™ûr+¤o™@™û}ó¶E¢@™ût¬¤Å@™û}ó¶E¢@™û„QHtz@8–»˜È@8}™¬@3‡ÎÙ‡+@3„{5Œ]¶@2Ú~ùÛ"Ñ@2ØP˜æ–`@2 -0U2a|@2”Õ)Ð@2 -0U2a|@2~Ýwn†@2 -0U2a|@2 -äÀÉ‹z?¦¸Ùûu‘?’™SBx®ê?’¨4°¼Ã?ޤUõ{þ?“â÷óÿž?‘¿¿l% ?®Au £8?•+efó†Þ?”Y¿ˆq‹‘?‘0€eä?”p:_j°?‘—Y=OÿD?¡Žá,97?‘Z„­OMŠ?‰ýÅ­LcŒ?…ǹÛ)?;ñ1¼1›?‰1D -"r™@@$@,@*@5@2?ð?ð?ð?ð?ð?ð¿T`Š8ç?k:Á¹¥€?GÆ0!?@Ä?SÎ*’f ª@­–%i!¡É@™ûvÒVHW?]àð¾ù?g= -éZ‚?±súµVH?Âù-kÿÃ@ŸpµÍjΕ@í@¯œ½p£× -@¯œãn—@¯œ½p£× -@¯œ¼C,¥y@¯œ½p£× -@¯œ¿ò䎉@¯œ½p£× -@¯œ½p£× @¯œ½p£× -@¯œ»W>«7@¯œ½p£× -@¯œº¹õY³@¦¤®—Oß@¦¤Ÿ¾vÈ´@¦¤®—Oß@¦¤²T`ªe@¦¤®—Oß@¦¤®æ1ø @¦¤®—Oß@¦¤¶âëC@¦¤®—Oß@¦¤±[W>¬@¦¤®—Oß@¦¤¯·éù@7cg ù l@7Uoi@3‚° Ä›¦@3‚° Ä›¦@2ˆ“t¼j@2ˆ1&éxÕ@1õµsê³h@1õ$Ý/@1õµsê³h@1õF -¦L0@1õµsê³h@1õ¸Që…?¾lO»x#?¦Ì '?“ºo½Ô€? Ð ÷Ž ?’¥.Kn Í?‘f]£àG?±ÿ}ö?’?Á• ñ:?“÷Š>õª?‘’â·ýÅ?’l{9ÙŽ?‘ƒZ)Àˆ?µûįJ˜?†¡HŸÊç?„›‹ÖO?…<ò N ?ˆ -¿„r©Ý?‡<û¡71@@@@@,@&?ð?ð?ð?ð?ð?ð¿`ŧìC€¿Rá?^ÃV @w\?d¸J·\L,@¯œ¼{‰œ@¦¤²t‹ÍÜ?nìQÊ[3É?viò,¿?ÓQ¬H”?ã†#׉@Ÿr*!²e¾@î@¤ Ä›¥ã@¤ Ä›¥ã@¤ Ä›¥ã@¤ !ÿ.Hé@¤ Ä›¥ã@¤ ù kº@¤ Ä›¥ã@¤ !°‰ '@¤ Ä›¥ã@¤ |í‘h@¤ Ä›¥ã@¤ |í‘h@¨Ýž5?|î@¨Ýž¸Që…@¨Ýž5?|î@¨ÝžÑ·@¨Ýž5?|î@¨ÝžOv_Ù@¨Ýž5?|î@¨ÝžvÈ´9@¨Ýž5?|î@¨ÝžÒˆÎp@¨Ýž5?|î@¨Ýžß¤?å@3#g ù l@3#Z…‡“Þ@/³t¼j~ù@/³Ãa@N@/DZ¬1@/D›¥ãSø@.Ǔݗö,@.Ç»/ìVÖ@.Ǔݗö,@.Çâ‚@·@.Ǔݗö,@.Ç8}¿I?|¬Çëý ?ZÁ».œ?‘$Cê¡@í?Œ:Z2‚b?‘çG¸?æöæ×t?|¬Çëý ?’0nà=Q“?–ÐO(·Š?3.Ylî?‘!U?Ð{Ò?e¾DQ„Q?‚|׿pY?Œ¾»•lŽ?‚‘´…=Cb?‚ìxqC?†¼Š˜L¥÷?‡´*žZ}Õ@@@@@,@,?ð?ð?ð?ð?ð?ð¿(Â|°>ïŽP?-øR€¹0?Id1@¤ }¦ÚP@¨Ýžºä+?LòôlîX?$é ïø­?¦¦Å$à ú?VÆbäÃ~@Ÿfà¬!u@ï@¥Õýó¶F@¥Õ$Ü@¥Õýó¶F@¥Õ”Fs‚@¥Õýó¶F@¥Ôÿ±[W?@¥Õýó¶F@¥Õ4mÅÖ@¥Õýó¶F@¥Õã¼Ó[@¥Õýó¶F@¥Õéá°Š@¨Ä“t¼@¨ãS÷ÎÙ@¨Ä“t¼@¨Ãn—@¨Ä“t¼@¨¶R½<7@¨Ä“t¼@¨¾Ñ·@¨Ä“t¼@¨¼C,¥z@¨Ä“t¼@¨ºû~‘@8ºqÞi­C@8Á [À7@4º^5?}@4n—P@34“t¼j@3! ²•éâ@2Ç ù kº@2Ó©*0U2@2Ç ù kº@2Ãê³g ù@2Ç ù kº@2Ã@N¤¨Â?´Žé`m? @u-I­?¤MD¢e?Ÿ¥oí¬Èž?“eð7Õ@?”éëÀÍ?³‰ÑpEIt?•N¬Ÿª`Ž?¦² ͉«?žÎ"”`ù†?“Æ×q„nð?Ÿ¥O[õÆ?³ÿ®Üå/ï?œFg*V¿3?“„*0x)Æ?¢ú5×_ð?Œ8¸wx¯?¡‘8²™ç@@@@@"@*?ð?ð?ð?ð?ð?ð?s´1·§€¿uò„"ê€?q“híãÊw?iHl­]x@¥Õ£E¯N@¨¾½¤H?ƒ,p¿x¯p?z•„ô?í} ú{[Ó?Øù ‚ìì@Ÿq¡äbÇ^@ð@«’‹Æ§ïž@«’‘©ûçm@«’‹Æ§ïžÁ.„€@«’‹Æ§ïžÁ.„€@«’‹Æ§ïžÁ.„€@«’‹Æ§ïžÁ.„€@«’‹Æ§ïžÁ.„€@¬FÖ‡+ @¬FÚŸ¾vÉ@¬FÖ‡+ Á.„€@¬FÖ‡+ Á.„€@¬FÖ‡+ Á.„€@¬FÖ‡+ Á.„€@¬FÖ‡+ Á.„€@8ÞHè§ç@8؆YJôñ@4Ùº^5?}Á.„M‰ûçm@4H“t¼jÁ.„QnÙ‡@3uµsê³hÁ.„NÜC,¥@3uµsê³hÁ.„NÜC,¥@3uµsê³hÁ.„NÜC,¥?¢F^ì¼Sð@8#˜@8¾:@8 >+@8Iç@8Ù?™™™™™™š@8Î÷@8i§@8Å@8S@8û—?²eˬÊup@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøñ@¦Ã‰7Kƨ@¦Ã‰xÔýõ@¦Ã‰7Kƨ@¦Ã‰“ àÞ@¦Ã‰7Kƨ@¦Ã‰ûçl‹@¦Ã‰7Kƨ@¦ÃŠqÞi­@¦Ã‰7Kƨ@¦ÃˆõÂ]@¦Ã‰7Kƨ@¦Ãˆ>BZî@¢ˆ‰º^5?@¢ˆŠ~ùÛ#@¢ˆ‰º^5?@¢ˆ‰“ àß@¢ˆ‰º^5?@¢ˆ‰º^5?@¢ˆ‰º^5?@¢ˆˆ1&éy@¢ˆ‰º^5?@¢ˆˆXy=Ù@¢ˆ‰º^5?@¢ˆˆÁTɆ@5™*0U2b@5˜Ôýó¶F@1{ Iº^@1zû~ÿ—@0®ùÛ"Ðæ@0¯ö”Ft@0n_oÒ @0mÌcñA @0n_oÒ @0m«ŸU›=@0n_oÒ @0mÙb¶®?|öOÿÝ?Čۨ1A?‘\H{gX ?ŒGZ0eê;?‘\Žýµ€7?âé¨ë7F?|öOÿÝ?’uß¿çÒ?ð{¥âdú?’GÎ>GÅ?‘„ÅMè?ƒÁþGEÛ?‰¢Ò+ÜÝ:?Å9–o?‚¸“Îè ø?ƒR¨º“JÞ?‡ã ËÄž?‡2[síç@@@@@,@*?ð?ð?ð?ð?ð?ð¿ “-À¿>¤‘ïˆ?*´|.Ðs-?$z\ÙR@¦Ã‰WÂø@¢ˆ‰ceã`?J•Òï±Ï÷?D߬È?É?¢Øls×–Ð?–hÑ=t@ŸfáýGÜÍ@ò@¦a["Ðå`@¦aVÈ´9X@¦a["Ðå`@¦aIùrH@¦a["Ðå`@¦aQA [¿@¦a["Ðå`@¦aU*™1@¦a["Ðå`Á.„€@¦a["Ðå`@¦aZ)Çy§@¡­¡ÊÀƒ@¡­#S÷ÎÙ@¡­¡ÊÀƒ@¡¬ö+jçÕ@¡­¡ÊÀƒ@¡­:û~‘@¡­¡ÊÀƒ@¡­"©“ à@¡­¡ÊÀƒÁ.„€@¡­¡ÊÀƒ@¡­ /ƒ{J@8ð4mÅÖ8@8ôM:’£@4Yº^5?}@4FÏAò×@3Ãt¼j~ú@3°ò{²þÆ@2øDЩ*@2íV”@2øDЩ*Á.„NÜC,¥@2øDЩ*@3-à ?¢F^ì¼Sð?§½yKÖú? éÞÝí»?‘sNX„êÒ@8Iç?–ËÒÙI°?Ÿ‹‘+-/Ü?¦À o]?£¡Í¾8+ã?§²Ñ’ÂÏ@8S?•÷f¸D¦?ÃË÷–Ç1ó?’Эs_ª`?¡7‡V/Žr?™/#ÕË®r@8 Ø?šÙ,yf’Y@@@@@"?ð?ð?ð?ð?ðøøøøøøøøøøøøó@©˜bMÓ@©ÍOß;d@©˜bMÓ@©?kEø@©˜bMÓ@©IROìœ@©˜bMÓ@©K¨gò@©˜bMÓ@©|E¡€@©˜bMÓ@©•Ët.o@˜5?|í‘@˜vE¡ÊÁ@˜5?|í‘@˜ëdìá7@˜5?|í‘@˜r3DZ]@˜5?|í‘@˜8 !T@˜5?|í‘@˜8X(S@˜5?|í‘@˜<]‹?ê@8zqÞi­C@6ÊÀƒn@30Ä›¥ãT@1Åx^ª»@21‰7Kƨ@0ÓZ>Ũ@1¸DЩ*@0UõU F2@1¸DЩ*@0XÒ¿x@M@1¸DЩ*@0VÇ|_?€Ã{s°úi?’S†­ÍË?“w>Zò«?‘€YãFŸ?²Ýé+i‰?´]lþmY?‡©½(‡üÐ?¢güQ÷?¢bGöF?«ˆß7€G?̽±…Vo??ÇK]°{f?—˜²åe¦?¾á¼¢Ú?‡«tºÛ=?†š<òA$¢?”]Ô4KÖ?‘~³1î@@@@"@;@9?ð?ð?ð?ð?ð?ð?§Â´d»¿¸-ÊЕà?`(×fû?õ…÷Ú@©÷šÅ¤'@˜Éø: l?rÁcþ0Ã@?ŸÔZ¡’.?çvÆ.@gîf!IÚ@Ÿ]N/ÿÍ@ô@©7¥ãSø@©7(õÂ@©7¥ãSø@©7~ÿ—@©7¥ãSø@©7ÇË)@©7¥ãSø@©7cˆe•@©7¥ãSø@©7­«ŸU@©7¥ãSø@©7è>B[@ªóèõÂ\@ªóê~ùÛ$@ªóèõÂ\@ªóå8ï4Ö@ªóèõÂ\@ªóçE8ï6@ªóèõÂ\@ªóí\ú¬Ú@ªóèõÂ\@ªóéQ‚©”@ªóèõÂ\@ªóêŒL˜@6 ]cˆe”@6 ‘ÑN;Í@2€ Ä›¥ã@2\(õÂ@2"-V@2" Iº^5@1TmÅÖ8†@1T!-w2@1TmÅÖ8†@1TÝ/Ÿ¿@1TmÅÖ8†@1Usê³g¡?€‚ñêã ? ¸×KG?’#ç}iïë?‹Æ úJ-M?’»–j˜ú?‘PÊÑ<Ýl?€‚ñêã ?’r/BÖ?“Ú%¿»8?Ò–‚h±n?’8,²ñ±T?‘ ‡#é -´?‚íWçé„?Žâç.¡È?„ò—TËÄ?ƒì%­¹Ï‘?‡Õ˜]–GÄ?ŠEÝ‹N@@@@@*@(?ð?ð?ð?ð?ð?ð¿<~¶|À?2Fm?<{ V¡ô{?:^€J1þð@©7r8ï"@ªóêËn?\L[7t²Á?[ r© ’u?¡*{0±?À½¦´ÓÝ@Ÿg’Ûlq1@õ@¤]¥`A‰7@¤]§l‹C–@¤]¥`A‰7@¤]ž5?|î@¤]¥`A‰7@¤]™Û"Ðå@¤]¥`A‰7@¤]žùÛ"Ñ@¤]¥`A‰7@¤]“Ý—ö+@¤]¥`A‰7@¤]’:)Çz@ ‡|í‘hs@ ‡~vÈ´9@ ‡|í‘hs@ ‡|¬1'@ ‡|í‘hs@ ‡y‡+@ ‡|í‘hs@ ‡}/Ÿ¾@ ‡|í‘hs@ ‡…”¯O@ ‡|í‘hs@ ‡„?åÉ@6?–»˜È@67§†Â&€@2.5?|í‘@2+’:)Çz@1t“t¼j@1iè>BZî@0î_oÒ @0ëJ#9Àì@0î_oÒ @0ã,¥zxl@0î_oÒ @0âÞÑ·?3ßa=„?qÂ' -B›?‘ÓKñá»Ù?‹¯eU5?Ÿ0 碽ü?£eÂÌtµ?}Ñ¿ž,?“-N•I`(?ß‹…&?ð{¥âdû?›†þ.D?ŸèØŸ#ߦ?°ón÷°E”?Œ°¶.Ä+Æ?¨À°ÒÞ@?…ÇóÏ€9"?‹ì3åý?‹¼`’ i2@@@@@(@(?ð?ð?ð?ð?ð?ð¿pÎÚGR?K?H ?JiAçäl„?I1AÌm@¤]Ÿd-Ù5@ ‡€®ïË?d°ßÖ -y?h¶pmùi?Â;)[Õƒ6?Ð&‚ÚÙº@Ÿf¼J­-Z@ö@¦’ë Iº@¦’Ê~ùÛ#@¦’ë Iº@¦’ðË)^ž@¦’ë Iº@¦’Øï4Ö¡@¦’ë Iº@¦’Öý!ÿ-@¦’ë Iº@¦’é­BÃÊ@¦’ë Iº@¦’èÎp:û@£©bMÓ@£©“u@£©bMÓ@£©-V@£©bMÓ@£©&éxÔþ@£©bMÓ@£©»˜Çä@£©bMÓ@£©uŽ!–@£©bMÓ@£©9Xb@8ÿ–»˜È@9Åo@4\Iº^5?@4NvÈ´9X@3´“t¼j@3¢@·€4n@33&Á½¥@3ò䎊r@33&Á½¥@34êJŒM@33&Á½¥@33× -=p¤?²Æ—ÕŒ?¡x¡´BÇ?¨=ŠÂ£¥–?œÖ,?™'Ö™:0í?˜s˜»ì•?º¯*RœÃ¥?§D¾12£?¦\ª‹×›Ý?§*ÅÌö¡?–kš‘ž?˜I­}ý½Ä?®›©L Ý/?œ]ŸFV”?‰ZaizÚD?ϯ<«¬í?‘ ê$4 ?–Mí\{WÐ@@@@@,@,?ð?ð?ð?ð?ð?ð?}™OÒÏÀ¿9È?d%æ¨Èh?V8õ³ÉQ×@¦’âå”È@£©naõ»?wO~ß¹™B?fÚNÖd-Î?Ôg¨¿i?¬à -ˆåD@ŸrrrJ5@÷@¦1µ?|í‘@¦1´†’@¦1µ?|í‘@¦1Âim,@¦1µ?|í‘@¦1Ž@_@¦1µ?|í‘@¦1ôœì@¦1µ?|í‘@¦1žºˆ¨@¦1µ?|í‘@¦1«³Îx@”Š$Ý/@”Š+ J@”Š$Ý/@”ŠDÙ+¿ø@”Š$Ý/@”ŠNÒ2J3@”Š$Ý/@”Š57Ø®e@”Š$Ý/@”Š(ÿ.ž¬@”Š$Ý/@”‰ûÂvæ@7:qÞi­C@7;<üQÂ@3B° Ä›¦@3Êr®©@2Ct¼j~ú@22š¼†à@1xDЩ*@1hs|3ZÓ@1xDЩ*@1ik51ö‚@1xDЩ*@1q2;3Ç?™û-™,Èß?°&Íwh?ŸÜeÜUô?˜Ú|Þ„^?˜®±4¥vã?˜…ÖŸ1¬?}@T˜ÁÎ¥?³eöÕ—S~?¢iÙúÍuh?¦=ÀÝû?Ÿ?AªôËÔ?™ùhr•2¼?–™ªÊN?“èZè¥@Ä?‹ÚÙÿ•+?ˆý¯ŒðòÞ?“ÃÃàž:?»éhO@@,@(@,@8@6?ð?ð?ð?ð?ð?ð¿dŒ®?N¾z:Ø?iE¾2—°?c}(±Ÿ†@¦1§V®=|@”Š èps«?†®ÓMCͽ?ˆ%ªy Œê?ùúÙI¶bÀ@ƒ5ùaÊu@ŸjŒ¥‰Ó@ø@¡ƒ,‹C•@¡ƒ,Iº^5@¡ƒ,‹C•@¡ƒ0©*0@¡ƒ,‹C•@¡ƒ/Åo@¡ƒ,‹C•@¡ƒ.±Ä2Ê@¡ƒ,‹C•@¡ƒ)á°‰ @¡ƒ,‹C•@¡ƒ*JŒM@£ mV@£ mV@£ mV@£ poiDg@£ mV@£ lcñA @£ mV@£ mjO@£ mV@£ lÌÌÌÍ@£ mV@£ l<žìÀ@5VšÔ,<Ÿ@5Wl‹C•‚@2k¥ãS÷Ï@2oùrGE9@1¤¼j~ùÛ@1¥Ö8†YK@1(è§æ›@1,PHð@1(è§æ›@1)b¶®~@1(è§æ›@1*³g ù -?1·†Æjñ?‘6 '8?‘D&»ä?$Ìj½BÙ?‘2A¥Ø?’Ýå"çX?}Ñ¿ž,?’ñ©ûçlŒ?ŽËÜ¿€?Ë{4æk?‘+ùÔ!½‹?‘«VTÓ?„ã¼ÓZ…‡?ŽõÕJ?ˆìûIè÷˜<(À?Hè&ã?&ÞõŒX;â@¬½½zºs>@¬»]Wý A?+b* Kª?5¦!«tÐ?Qñ±þ‡Zì?dy3Qò&L@Ÿs‹Š@ú@«ñ©ûçm@«ñ©ûçn@«ñ©ûçm@«òÖð'J@«ñ©ûçm@«ñÓíR~@«ñ©ûçm@«ò9ü½^@«ñ©ûçm@«ð¼Õ]T@«ñ©ûçm@«ðÂíM•@“qS÷ÎÙ@“qSt¼j@“qS÷ÎÙ@“qP¸#…Ø@“qS÷ÎÙ@“qR.üHÕ@“qS÷ÎÙ@“qTèz@“qS÷ÎÙ@“qRâL@“qS÷ÎÙ@“qS8ý ¥@2VšÔ,<Ÿ@2V€IQ‚@.³t¼j~ù@.³@¨¸ââ@-?;dZ¬@->¨ù˜¤@,Aò×t@,èÑQ®@,Aò×t@,æ1ø ‘@,Aò×t@,Ö5÷ Ñ?É^ÈmÔ d?Ã{TV½‹?‘Èþ× ?‹¬E[ÄØ?ì”:r§þ?µÿ ÎÜ?ÐbQë„›¦?’>pÞª|?„^<+ø?/#ͤ†Â?Ö“jø?P ±pà?€bîF¾§?Œ²/éýòÐ?‚yñìÏòø?‚ãD³Ð²î?†Œîa€?†‰~±.@@$@&@&@8@5?ð?ð?ð?ð?ð?ð¿FÁÆ@¿4ˆÛ2ô?-üO(?%|CËtñ@«ñXû>o@“qS©Šïè?;õ…T´©¬?4Vꇑœ?s8¯«$­&?b(»É @Ÿsötn@û@¦Ï\(õÃ@¦ûdZ¬@¦Ï\(õÃ@¦úŸ¾vÉ@¦Ï\(õÃ@¦?åÉ@¦Ï\(õÃ@¦3@N¤ª@¦Ï\(õÃ@¦ÇË)@¦Ï\(õÃ@¦qø -@®–vE¡ÊÁ@®–†fffg@®–vE¡ÊÁ@®–'ÕfÏB@®–vE¡ÊÁ@®–=—ö+k@®–vE¡ÊÁ@®–Ö¡aä@®–vE¡ÊÁ@®–CFÜ]d@®–vE¡ÊÁ@®•—$tT@9¹Œ~($@9"MÒñ©ü@5Š^5?|í@5eF -¦L/@4¹7KƧð@4’ÞÑ·@4O „M@4L˜_ö”@4O „M@4HõÂ\)@4O „M@4<¿±[W??îŠõ ?·Õ[ÿG£?¦ dW÷Bþ?Â+3ß#Iú?ºFILòXT?¹¢{ãJÂ?ÀÊ»d9\?Àʳ·Ûêy?¨Î×>ÀÉ?×áp:Y_?ÑB¿ú†­Ç?©¥váÛ$>?™Jz¬Uf?š/¶íê¯?˜Ð™Q$Ò?¢{_@j§?¢VÂÀ?–¨¬:­÷@@@@@@?ð?ð?ð?ð?ð?ð?’»ˆŠ/À¿«—3‚$ ?w³ âãG?…[n”d@¦/´3ƒô@®•ò¨1p¾?Ÿ?Ú ’t?¦X·kŠï?í=ç)Qð”?ðÃ1B¯@Ÿl}~¥¸@ü@¯"£S÷ÎÙ@¯"ºŸ¾vÉ@¯"£S÷ÎÙ@¯"£Yõ£<@¯"£S÷ÎÙ@¯"šRÒêÚ@¯"£S÷ÎÙ@¯"¡K p@¯"£S÷ÎÙ@¯"œdp<@¯"£S÷ÎÙ@¯"œ—O@–¥µ?|í‘@–¥ÊvàD{@–¥µ?|í‘@–¥ÓuxJ@–¥µ?|í‘@–¥Îg‡¿˜@–¥µ?|í‘@–¥Íà r@–¥µ?|í‘@–¥¾“òä@–¥µ?|í‘@–¥À“ t@8¨†YJôñ@8‹Õz9.@48r° Äœ@41,”ï@3V”@3˜“¾êŸ@2Œ¿±[W?@2‰‰ËþÊ@2Œ¿±[W?@2‹ö[s#2@2Œ¿±[W?@2‰ð&H|?|¬h2:“?•q»-u1?”ÈÄš\´?:±„@Zt?’æj³úÃ¥?’qPü?†…„â8 ?–À€/À?‘!dxD³?“|˜R2?’·—éÓù‘?’aØ5Ut¬?¼å†W)¶?•¬³´oëº?Ú«4›C?†7Ź œ?ŠGOe”?‰ÄÑ|=†@@$@$@*@5@5?ð?ð?ð?ð?ð?ð¿}½‚"¿QE²é?Q˜M?EbÀ'ê@¯"©zº˜@–¥Æxà†˜?r_ˆlxð ?eÀÅp5Ç?íO H; ¼?Î/`, ->@Ÿh):e…i@ý@«Hýp£× -@«I ®18c@«Hýp£× -@«HíÞÕ;@«Hýp£× -@«H×,—#<@«Hýp£× -@«IæÙ¦@«Hýp£× -@«I jyó^@«Hýp£× -@«I•¦od@•(E¡ÊÀƒ@•(@Âçó@•(E¡ÊÀƒ@•(r^z˜i@•(E¡ÊÀƒ@•(nY¦Ð@•(E¡ÊÀƒ@•(hò–¿Ê@•(E¡ÊÀƒ@•(sÙ2ç@•(E¡ÊÀƒ@•(„¼Ólº@7įO „M@7ÌZL"râ@3|í‘hr@3”ÊYp/Ä@3gKƧïž@3yF^˜`@2ÜÚQÎ@2¿óþDÿñ@2ÜÚQÎ@2½u,† ¨@2ÜÚQÎ@2õjÖÞM? Úïõ¥Ú?îÙ—êà˜?œýÜÁfk?˜ÃíþN?›SPǹ??š_ÅL¥ Q?œÆæXÆd?“Ç€S™k ? oTð?¤Ò]\}aŸ?¢‚$á¡?ŸÎ35MQS? Ópf?‘ Ï¿‰Á?””„ÝÌA??“¤Ê#‚»?¡è VÛ?˜oGÈGû,@@ @(@(@8@7?ð?ð?ð?ð?ð?ð?P¯/Ê?}:U‚DÀ?a«"FM³o?B|Ú„E@«I §r%Ö@•(kd«§f?}pý!g^?bOåT¤ÛB?áq4ÐË*?¢}7ʺg@Ÿl¾b\²@þ@§f|í‘h@§f}p£× -@§f|í‘h@§fu$Ý@§f|í‘h@§fiã½@§f|í‘h@§f„“t¼@§f|í‘h@§fl²•éâ@§f|í‘h@§fiDg8@¦GÝ/Ÿ¾@¦GÓ3334@¦GÝ/Ÿ¾@¦GЉ 'Q@¦GÝ/Ÿ¾@¦GÍV@¦GÝ/Ÿ¾@¦Gé“ àß@¦GÝ/Ÿ¾@¦Gý¿HÌ@¦GÝ/Ÿ¾@¦GäÂø7¶@8VšÔ,<Ÿ@8TÂø7´¢@4 Ä›¥ã@4GE8ï5@3]V”@3w»/ìVÖ@2Ç ù kº@2ÎùÛ"Ðæ@2Ç ù kº@2…ãS÷ÎÙ@2Ç ù kº@2Åo?Ÿ‹‘+-/Ü?™Æ‰©·?«HFÈCý?“gã_$ô?·fl®…?ÀLìTO˜?˜ž^ƒÿ*ˆ?’š'†­`í?VÇ·Þóï?•¯TÒV?ÀÒ›–Óv?Á¤?ŽâS[ÞDí?¬µöÂ};?°ærÂÏ?¤÷™ïy\,?—1©±Æ›n?—ã ËÄž@@@@@,@*?ð?ð?ð?ð?ð?ð?[÷¦£Ì?€ƒÞ 7€?d§V£?Xl&7O™@§fÅ!@¦Gã²cò?ybðsÁ¼?q;9SR…A?Ó¿ÏLh…;?ÀÝn­² 2@Ÿe€”NûH@ÿ@£½€@£½€A‰7L@£½€@£½-w1@£½€@£½€ƒn˜@£½€@£½†L/ƒ{@£½€@£½}Vlô@£½€@£½~i­BÄ@¡µLÌÌÌÍ@¡µK…¸R@¡µLÌÌÌÍ@¡µGÕfÏB@¡µLÌÌÌÍ@¡µL~($ @¡µLÌÌÌÍ@¡µJÀƒo@¡µLÌÌÌÍ@¡µEœàv@¡µLÌÌÌÍ@¡µBÞѸ@3àØDЩ@3ßò䎊r@0‡ÎÙ‡+@0…ÜÆ?@/mOß;dZ@/g ù kº@/oi@.üàuöý"@/oi@/Ä›¥ãT@/oi@/IQ‚ª?|öOÿÝ?“‹ë÷?’,³Zêª?—;±C??‘ÇöÃÞ`?‘ø)±'3?|öOÿÝ?–ÖÀeªw?‘S1Êz?¤µÜÆ@4Ùº^5?}@5#àGC¶@3¶§ï²-@3Þäu@0|ÚQÁ.„>¤µÜÆ@)Š~ùÛ"Ð@)Œæ …Î@(h1&éxÕ@(iAâpÞ\@(3üPH@(49ftE³@(3üPH@(4²ÀüSê@(3üPH@(36Í@8 -Näy?Ãw<5Û™?‘'D —ò?‹« -»w"?õL&VB?Ó{£y@82rê?’Ï|F ?„&ZÆ?8+œ¾ ?ç*Sk?+×n9u@8L?ŒÃ6vJ«?‚½èÔ -?‚ñØ€6>?†“’z^ýj?†º|‘ §@4@2@1@D@D€?ð?ð?ð?ð?ðøøøøøøøøøøøø@©ó–“u@©ó¡$Ý.@©ó–“u@©ó•¨Xy>@©ó–“u@©ó¢Ðå`B@©ó–“u@©óž\‘ÑO@©ó–“u@©ó—Á½¥@©ó–“u@©ó˜DШ@¢õfffff@¢õe`A‰7@¢õfffff@¢õt¢3œ@¢õfffff@¢õp Ä›¦@¢õfffff@¢õmà q@¢õfffff@¢õjOv@¢õfffff@¢õi“ àß@7uS&Á¾@7sä%®æ2@3Ù‡+@3a|ÚQ@1éÛ"Ðå`@1àoiDg8@1YŒ~($ @1Q ²•éâ@1YŒ~($ @1WsüPH@1YŒ~($ @1VÈ´9X?„F/·ÿP5?—µ”öŒqÒ?ñAaú[?–Ë„&³ƒ.?‘ÇöÃÞ`?“lP {“›?…ÅBðrç?˜&§dU(?»Þ‹"è?—×:`‰?“£c”?”µìSõüS?¢4£!– j?–®UÒ.?ƒíÈm½!¿?ˆÝíá‰?ˆ -¿„r©Ý?ˆk! ¨l@@@@@*@*?ð?ð?ð?ð?ð?ð¿_¼ª“Ä?RlÚ?9èéµEI?E[7õÓ÷@©óœˆ$N@¢õh…/:?Z>:­û–?fMÆv–ÿu?¶$—=/u?Ì *A&@ŸhzIW˜•@@Ÿ¼Ü(õÂ@Ÿ¼¹Û"Ðæ@Ÿ¼Ü(õÂÁ.„€@Ÿ¼Ü(õÂÁ.„€@Ÿ¼Ü(õÂÁ.„€@Ÿ¼Ü(õÂÁ.„€@Ÿ¼Ü(õÂÁ.„€@žÉJÀƒo@žÉ;çl‹D@žÉJÀƒoÁ.„€@žÉJÀƒoÁ.„€@žÉJÀƒoÁ.„€@žÉJÀƒoÁ.„€@žÉJÀƒoÁ.„€@6ÞHè§æ@6ì¹#¢œx@5° Ä›¦Á.„M‰ûçm@4$¼j~ùÛÁ.„QnÙ‡@4&YJôðØÁ.„NÜC,¥@4&YJôðØÁ.„NÜC,¥@4&YJôðØÁ.„NÜC,¥?æ ç«Z–@8#˜@8¾:@8 >+@8Iç@8Ù?æ ç«Z–@8Î÷@8i§@8Å@8S@8û—?æ¡‚á¾A@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@¥>å`A‰@¥>—­O Ù@¥>å`A‰Á.„€@¥>å`A‰Á.„€@¥>å`A‰Á.„€@¥>å`A‰Á.„€@¥>å`A‰Á.„€@œÌ\(õÃ@œÌÚ¬1@œÌ\(õÃÁ.„€@œÌ\(õÃÁ.„€@œÌ\(õÃÁ.„€@œÌ\(õÃÁ.„€@œÌ\(õÃÁ.„€@7£g ù l@7-FC¾ž@3^Ù‡+Á.„M‰ûçm@2t“t¼jÁ.„QnÙ‡@2a:’£SÁ.„NÜC,¥@2a:’£SÁ.„NÜC,¥@2a:’£SÁ.„NÜC,¥?Ÿ—Bp±È@8#˜@8¾:@8 >+@8Iç@8Ù?‘w×vHf@8Î÷@8i§@8Å@8S@8û—?¦ÍÌ-ˆ‹@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@­s3333@­w®i¤.@­s3333@­„ „.@­s3333@­rR*%ë@­s3333@­sª"¡¢@­s3333@­r5en@­s3333@­s^Þ×@’é~ùÛ"Ñ@’é²ïqm@’é~ùÛ"Ñ@’ég½ÖI|@’é~ùÛ"Ñ@’émM@$´@’é~ùÛ"Ñ@’éjÍÿ&ç@’é~ùÛ"Ñ@’é{ ,¤›@’é~ùÛ"Ñ@’és’Q@92ÃÉîËû@8ø eBwS@4n5?|í‘@4i1ѵ³Å@3V”@3¶Ch@2fYJôðØ@2a_wæžš@2fYJôðØ@2b_MKý@2fYJôðØ@2_Òòä?±ëg)nÖ”?f)Y™’?‘æ5ç–í?Œw)¸(;ž?‘È5t?‘]\Œ¤¡x?–…­à Ø—?’>í£™í?µ“‘ƒÅM?ic ù`?’ýR¦!ý?Ü=.AŒ?’GÌl´?‘£¥Çæ$?Š/÷)Rÿ?ƒ:|Ãä=·?оî5g‚@?‰o=)þ´@@"@@"@3@.?ð?ð?ð?ð?ð?ð¿A†Š`¿v7Ñ¡?5ðºR#•?lÒn|1ú@­sP—ÊD@’ézPWy‚?GHÚ1zÏ?‡×_fAÇ?ˆ«ªfò¦@ -£Vyv‰Ð@ŸpËR]Âõ@@¨Öë…¸R@¨Öë Iº@¨Öë…¸R@¨Öí5¨Xy@¨Öë…¸R@¨Öî_oÒ@¨Öë…¸R@¨Öî.±Ä3@¨Öë…¸R@¨Ö빌~(@¨Öë…¸R@¨Öéá°‰Ÿ@§£záG®@§£zŸ¾vÊ@§£záG®@§£}—ö+k@§£záG®@§£|¾ß¤@§£záG®@§£zu%G@§£záG®@§£{çl‹D@§£záG®@§£{À6ã@5í¥œàv@5íquŽ"@2›¥ãSø@2L˜_ö@1_²-V@1_¤?åÉ@0zÔ,<ží@0zôðØDÐ@0zÔ,<ží@0y0¾ í)@0zÔ,<ží@0xè§æ›?}Ñ¿ž,?Čۨ1A?‘Ëü²ü ?Œ:Z2‚b?‘ŠR%¨(0?ø·-/ge?|öOÿÝ?’j%ÓRa?‘S1Êz?Ñ·@ ¡(õÂ\Á.„€@8åöý!ÿ.Á.„>¤µÜÆ@4€ Ä›¥ã@4— ù k¹@3Õ`A‰7L@3ËC•%@3Œ~($ @3;˜Çâ‚A@3Œ~($ @3($ x@3Œ~($ Á.„NÜC,¥@8J¨?À»-•d?š®ìZ-­l?½":ãLi?g;+³ûu@8Ù@8J¨?Ê€˜+àŸ?«Òo¹÷?±ø³®°h³?¦ñ5ÜnM8@8û—@8p÷?ÊFŒQãá?¼ÝÒ—Q¿;?³©Èu}+?£¶â€B@8 Ø@@@@&?ð?ð?ð?ðøøøøøøøøøøøø @¡`A‰7L@¡`A‰7L@¡`A‰7L@¡aä÷eþ@¡`A‰7L@¡aÿ.Hé@¡`A‰7L@¡a [À@¡`A‰7L@¡`ëíúD@¡`A‰7L@¡f¸ºÇ@¢HOß;dZ@¢HO²-@¢HOß;dZ@¢HIûçl‹@¢HOß;dZ@¢HJ#9Àì@¢HOß;dZ@¢HEÉä@¢HOß;dZ@¢HM¸ºÇ@¢HOß;dZ@¢HM¸ºÇ@2” xFÜ@2”%®æ1ø@1&‡+ J@1$g8}¿@0Àå`A‰7@0¿ö”Ft@0p–»˜Çâ@0m¸ºÇÌ@0p–»˜Çâ@0l‘ÑN;Î@0p–»˜Çâ@0h´9Xc?É^žQ5P‚? ¸×KG?‘jh¨qã9?ŒÖ -Äȱ?‘|†³„¸?“¾§²~Î?ÐbV‡,?’Q_Ú¸FN?‘´"«Õa?‘Nw]6»ô?’˜£“µ~Ð?”F„t*•5?€‰Äƒ$æ?îŠõ ?ƒ>ZÌw?„•ˆG’Z¾?ˆÔÞÑ—æJ?ŽÜÂÎÛÖa@@@@@&@$?ð?ð?ð?ð?ð?ð?`3Sƒ?mŠw$—?Q×ÀsÍ?U‰KD@¡b‹»½"@¢HJ~­ž~?`Ñ_WÆÂ?d"À–±T?¸qi4ÉV?»ÛÛmc¡$@Ÿr ›îý1@ -@¦…?|í‘h@¦…?¾vÈ´@¦…?|í‘h@¦…=p£× -@¦…?|í‘h@¦…=¿HÍ@¦…?|í‘h@¦…=ó¶E¢@¦…?|í‘h@¦…BÐå`B@¦…?|í‘h@¦…Cn—Œ@¡eãS÷Ï@¡g+ J@¡eãS÷Ï@¡dŽŠqÞ@¡eãS÷Ï@¡i“ àà@¡eãS÷Ï@¡dµÜÆ?@¡eãS÷Ï@¡eðoiD@¡eãS÷Ï@¡hÁTɆ@5rÃÉîËû@5qò×s@3=‘hr° @3:îcŠ @2ñ‰7Kƨ@2îV“u@2Œ¿±[W?@2‡y¦µ @2Œ¿±[W?@2‡RT`ªe@2Œ¿±[W?@2‡_oÒó?|öOÿÝ?‘¡çL¤?–Èó^ù„?Ž˜ùš®E`?•bJÖµæÿ?‘f]£àG?|öOÿÝ?’V"y$R?“ - ½æD/?’ü#q\-v?™x9ÿ¥l?äqÅYÈ?‚˜YªüÏE?iT£C~t?Š[¦Råb?„l¯¸‰ŒÎ?‹ú èNÆö?‹DVóö@@@@@,@ ?ð?ð?ð?ð?ð?ð??·ß?sºÊ?>îObQ¹?8à‹Alê-@¦…@zxŠ@¡gkŒþ?^~ða€7“?YK×w‚Q?Æ¡t¼"€?»û‰Y°`m@Ÿf±àޝ@ @¢Sã× -=qÁ.„€@¢Sã× -=q@¢Sñ{+ù @¢Sã× -=q@¢T=ަÝó@¢Sã× -=q@¢T®¡µT@¢Sã× -=q@¢SýÝPí1@¢Sã× -=q@¢TFó©Ü@˜Ÿ9XbNÁ.„€@˜Ÿ9XbN@˜žäiuÁ*@˜Ÿ9XbN@˜Ÿð„¡E@˜Ÿ9XbN@˜ž±ÕŽÿ@˜Ÿ9XbN@˜ž·% Í—@˜Ÿ9XbN@˜ŸÃeN@8ãg ù lÁ.„>¤µÜÆ@4R Iº^5@4GOÿŒÄ@3@å`A‰7@2ûh,åÕ@2uµsê³h@29r€¼@2uµsê³h@2]çGˆÒÛ@2uµsê³h@2U‹‚¡¡@8J¨?•é³M¼è?°*õZó»×?¦†qB_?¡õi L%?¨8éPßA@8J¨?’“{¾ åó?¦’z1V?²àÉѽ”?¡•˜•«ÜG?™å ?X‹@8p÷?–šNz…´?©spæß?¤Höð?–Ógç< -I?šB¦À«’@$@&@,@;@9?ð?ð?ð?ð?ðøøøøøøøøøøøø @¡èr° Å@¡é7Kƨ@¡èr° Å@¡æê$G+@¡èr° Å@¡çëv± @¡èr° Å@¡æÄ*¹u@¡èr° Å@¡æÅ$#@¡èr° Å@¡æú`<ð@¦W -=p¤@¦Xº" 6@¦W -=p¤@¦X )”.@¦W -=p¤@¦S'£`<@¦W -=p¤@¦XÇøâæ@¦W -=p¤@¦W| ÿ@¦W -=p¤@¦WV;ŽP@5£g ù l@5¢ÆÌ:ÖK@2”›¥ãSø@2•òRe;—@2“t¼@2 K…4@1xDЩ*@1xƒ…zzI@1xDЩ*@1{@‡ìÅ@1xDЩ*@1zxRW×ã?}õ¬#„­?¾¢ Hù?‘˜Š­ú?‹¯ïIA½?‘‡Q¤ð\?‘¾YD=¤"?€Z=ú‚¡?’×Ô"f?“ó~í?Q—¸ï[$?‘a]6˜ß?‘‚•ôë ƒ?†/ó€‡pÍ?F‚½fÅ?„¼ÃÕ$Â?‹të?+;b?‡‹œ?–?ˆgœÕÿ@@"@ @"@5@4?ð?ð?ð?ð?ð?ð¿Cx(¿0ér ?%M#Ú‹?}}©itŽ@¡çÑÈ}g@¦X8ƒ!?DàL,¤£·?;Ëüsô$¢?•î pL¦?+ö. @Ÿg@Աݘ@ @®K›¥ãT@®K ªw@®K›¥ãT@®J;"Ðå`@®K›¥ãT@®JÇ_oÒ @®K›¥ãT@®Jо í)@®K›¥ãT@®KTÉ…ï@®K›¥ãTÁ.„€@0 Ä›¦@I·zo@0 Ä›¦@À@0 Ä›¦@9 k¹‹@0 Ä›¦@cñA \@0 Ä›¦@Ãa@N@0 Ä›¦Á.„€@8àØDЩ@8ÚMÐàK@3õãS÷ÎÙ@3—†Â&€@2Ͳ-V@2“Ãa@N@2ž«6z‘@2;ŸU›=@2ž«6z‘@2WæšÔ,@2ž«6z‘Á.„NÜC,¥?°¿:úç?»ÁÏ"-f?Ãàæ€¯8S?ÎÁzêù]œ?ÃÜí±&Z†@8Ù?­-a(Ê^?Ì‹è0‘ì?ÃøâhK?ÖCRn™?R?ѶÝ×=(H@8û—?ÆbåµÒÈ?§Y+®„£:?™Jz¬Uf?¦êÉŠYÏ?¤MÏ}td@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø@­k=ó¶E¢@­k2ñ©ûè@­k=ó¶E¢@­kBh Ô•@­k=ó¶E¢@­kD÷eý‹@­k=ó¶E¢@­k@'RTa@­k=ó¶E¢@­k?b¶®}@­k=ó¶E¢@­k>žš@¢ Òñ©ûç@¢ ¼í‘ht@¢ Òñ©ûç@¢ Ñhr°!@¢ Òñ©ûç@¢ ÑÎ_@¢ Òñ©ûç@¢ Ò×s@¢ Òñ©ûç@¢ о í)@¢ Òñ©ûç@¢ Ò×s@8 ØDЩ@8šJŒL˜@2¦‡+ J@2£@N¤¨Á@2F“t¼@2B×sü@0Ì¿±[W?@0Ëšu%@0Ì¿±[W?@0ÊçÕfÏB@0Ì¿±[W?@0˵sê´?„F/·ÿP5?4ë©$è‰?˜g± ÓË?‹¬àÌ’Ç?‘§›ßÉîj?‘)]•\¬?µ”Zm?’ ,øÕC©?”_й@’?0ÜN :s?‘C å;Ã?·t¤¢‚K?Æà„ž2m?’®ã‘\’? t€4Ã?†ÞåØÜÓ?‡´*žZ}Õ?†ÃÛSPã@@@@@(@(?ð?ð?ð?ð?ð?ð?gŒ¸Ö?K…Üôþ?P@¸>»?X}‘Ti|e@­k>jÉÛ@¢ Ñ)ÔR×?s|£ñÀ?iÑ«“û„?äÛ;(áõ?ËMøã×@Ÿq/}ÁS„@@¢Øæffff@¢ØÕ?|í‘@¢Øæffff@¢Øß¾vÈ´@¢Øæffff@¢Ø¼¾ß¤@¢Øæffff@¢ØÔ¯O „@¢Øæffff@¢Ùí‘hs@¢Øæffff@¢Ù\(õÃ@¢½0 Ä›¦@¢½(r° Æ@¢½0 Ä›¦@¢¼ŽV“@¢½0 Ä›¦@¢¼«ŸU›@¢½0 Ä›¦@¢½'l‹C–@¢½0 Ä›¦@¢½\PHð@¢½0 Ä›¦@¢½Y‡+@904mÅÖ8@9+"Ðå`A@4®5?|í‘@4ƒ©*0U2@4,j~ùÛ#@3Öð¸»@3œàu÷@2çy¦µ @3œàu÷@2úŒL˜_@3œàu÷@2ú–»™?»ö#°€Ô[?£-Ÿ56æ+?´+¤Ùž-?«u {NÉ?·çó¿©/?¦£@óiÖ?§Ò¸ùBz3?”ŸÚ²t©?ÕÃäj1À»?£µ@$v5¬?±‚[ñçc?®e•…,Z?•ýÿLîO?¨ ‰‹U)?·|p–&?¡Ê2ñHÆD?«v³Û‹7?°_;‘èG@@@@@,@&?ð?ð?ð?ð?ð?ð?‘d»`› ?„~껤?€FRyߦ¥?y;Ħ@1}@¢Øî¦ b¦@¢½=lË[?™‚×÷…A?–òãÖF6?òWáš??÷c @Æé@Ÿn -gE@@¬»;çl‹D@¬»;çl‹E@¬»;çl‹DÁ.„€@¬»;çl‹DÁ.„€@¬»;çl‹DÁ.„€@¬»;çl‹D@¬»;dZ¬@¬»;çl‹D@¬»8Ôýó¶@¯¢Ðå`B@¯£•&@¯¢Ðå`BÁ.„€@¯¢Ðå`BÁ.„€@¯¢Ðå`BÁ.„€@¯¢Ðå`B@¯£× -=q@¯¢Ðå`B@¯Ÿ;dZ@5kµsê´@5j³g ù -@0ÞÙ‡+Á.„M‰ûçm@0>V“uÁ.„QnÙ‡@/”`ªdÂùÁ.„NÜC,¥@/”`ªdÂù@/“MjP@/”`ªdÂù@/“×Ûôˆ?}Ñ¿ž,@8#˜@8¾:@8 >+?ðŽºJ+½?ð‹Ið˜ ?|öOÿÝ@8Î÷@8i§@8Å?ðÅìq?ð„‰p„Ã?ƒ<Õp@8 * @8p÷@8¶?ð?oÚ•¼?ð?oÚ•¼@?ð?ð?ð?ð?ðøøøøøøøøøøøø@©9[¥ãSø@©9mV@©9[¥ãSø@©9RÊW§ˆ@©9[¥ãSø@©9_U›= @©9[¥ãSø@©9VÕϪÎ@©9[¥ãSø@©9R-V@©9[¥ãSø@©9TÖ¡aæ@ l‰7KÇ@ l|í‘hs@ l‰7KÇ@ lˆXy=Ù@ l‰7KÇ@ lŠ™0¾@ l‰7KÇ@ l‘Þi­C@ l‰7KÇ@ l‹ŸU›=@ l‰7KÇ@ lŽcŠ @8#g ù l@8)Q‚©“ @3xr° Äœ@3ncŠ @2;Ƨï²@24Ö¡aäø@1³&Á½¥@1«µsê³@1³&Á½¥@1ª™0¾ í@1³&Á½¥@1ªW§†Â'?ð°–Ž]?‘‘Ç`[?—¯}_ƒÜ»?‘sNX„êÒ?›ÿËRÈ?˜ñ<óâg…?ð°–Ž]?“oÆ †ä?œlôU °?¢€ÝÅp?Ÿ Î;g¶?˜¿Df©v=?ð*wjs—?iT£C~t?Š[¦Råb?‡9 ƒ–’”?Ž .0åv?Œ8¸wx¯?ð@@@@*@(?ð?ð?ð?ð?ð?ð¿SµUiÔ¿RöAâ?PŽonŽ_¦?YˆÁïH‚@©9Tí}0¿@ lŽ›°Ñö?`ýC‚.—Î?gw ºü«6z@®û&éxÔþ@®û±[W?@¤bŠ=p£×@¤b²-V@¤bŠ=p£×@¤brT`ªe@¤bŠ=p£×@¤c)ùrG@¤bŠ=p£×@¤bðò{²ÿ@¤bŠ=p£×@¤bÚ6âë@¤bŠ=p£×@¤bï²-@8¿–»˜È@8¸ð¸@5™º^5?}@5nÑ·Y@5@å`A‰7@4õ2a|Ú@4Ç ù kº@4~V“u@4Ç ù kº@4ƒ÷ÎÙˆ@4Ç ù kº@4ŠJŒL˜?«_$Øï†?¾95€\?Ù’7IDu?»{osG'Ý?´(Ôx±/È?°¨¸ß%$Š?¦Ï±úQm‡?»G¾Z?ÐÂä­â²[?»‰~'zã?»V,À™Ò?»ðªÝû?´Ö‘ì—±š?¥ð¡T³÷ñ?³"i]äPö?´!èÄÌi?®†ø.ìP´?¿ª'wÊ#T@@@@@*@,?ð?ð?ð?ð?ð?ð?JT¿IH?’3AœÁ ?iÞPÞ@8„?sŸ¬d„3@®ûpc B@¤bÊ5‚È|?‹vÑ»pn?”Uz¶Ž$?Ó-´bÃÖT?݇¾¿˜1@Ÿh€Àäd@@¦¸QìÁ.„€@¦¸Qì@¦oi@¦¸Qì@¦&€I@¦¸Qì@¦Ü]cˆ@¦¸Qì@¦þÑ·@¦¸Qì@¦ùÀëíù@¨¸5?|í‘Á.„€@¨¸5?|í‘@¨¸7eýŠÛ@¨¸5?|í‘@¨¸3Ð|„¶@¨¸5?|í‘@¨¸3g ù -@¨¸5?|í‘@¨¸1ÑN;Í@¨¸5?|í‘@¨¸+]Ìcð@4m¥œàvÁ.„>¤µÜÆ@2+¥ãS÷Ï@2(­«ŸU›@1Õ`A‰7L@1ÓMjP@1ž«6z‘@1”M:’£@1ž«6z‘@1“MjP@1ž«6z‘@1’½<64@8J¨?ôÊ_?‘ojVrn@8·â‚@·€@8§škP°ò@2Ê^5?|í@2Ê…‡“ݘ@2H“t¼j@2GË)^ž@1¡:’£S@1ž«6z‘@1¡:’£S@1 [À6ã@1¡:’£S@1 -à r?¦Ï±úQm‡?‘ ·èe?’¿êvG¨½?Wø0 ¥?’»–j˜ú?’ Ù–¥£?ÅèWl ª?“áêqú ?“v@á¿bî?’‘Ç#·X?’ºñS©YÖ?‘pN.>7E?›Ny”…?ŒÛÏ·+?ƒÆ×q„nð?ƒý¥ñÍú?‡ø¢:›¸1?‹DVóö@@@@@*@(?ð?ð?ð?ð?ð?ð?Iþ'!T?DcYC€?:ñ(YΜå?F’sÕ3Ö@¨Ñî¸@®'ʉEaü?PëWwˆ?U’Ç"/îK?–x¥»0ƒ^? nYh\@ŸryQ€f¡@@¥>¥`A‰7@¥>Ÿ;dZ@¥>¥`A‰7@¥>§æšÔ@¥>¥`A‰7@¥>¬1&è@¥>¥`A‰7@¥>£,¥zx@¥>¥`A‰7@¥>Œ"h Õ@¥>¥`A‰7@¥>£n.±Ä@¬}–“u@¬}]/Ÿ¾@¬}–“u@¬}dÝ/ @¬}–“u@¬}Iº^5?@¬}–“u@¬}Ø­«ž@¬}–“u@¬}‡¯·é@¬}–“u@¬}‘Þi­C@8­¥œàv@8jOv@4…?|í‘h@4]ÈK]Ì@4Ðå`A‰@4Ä›¥ãT@2øDЩ*@2øFÜ]d@2øDЩ*@2è´9Xb@2øDЩ*@2áœàuöý?ð°–Ž]?¥'’òrCr?šQ"Äš%?‘´CF õ?–ç=ìW·¹?œáif¢?ð°–Ž]?Ÿ#ïÀŸª¸?–^ÿ,¶›?”A8 Kú¿?”*v7¹¿?˜æØ.ô?ð*wjs—?žåÌÆöj?§òÄ U¸?ùïJÓ?‘  ¶‚3?˜ÒF€§ç?ð@@@@"@$?ð?ð?ð?ð?ð?ð¿o\3{?~»'ôX€?Â|/ð“{?Rø4Áž@¥>›z©ÊK@¬}†æzA?HÍä¶ù?`p%÷00@TVŽÌ?¬#¶P”††@ŸrÊdì¹s@@¢Ò-‘hr°@¢Ôè1&éy@¢Ò-‘hr°@¢Ô.±Ä2Ê@¢Ò-‘hr°@¢Ôö+jè@¢Ò-‘hr°@¢Ô (Œç@¢Ò-‘hr°@¢Ôca@P@¢Ò-‘hr°@¢Ô¯ „M@¤3Oß;dZ@¤14ýó¶F@¤3Oß;dZ@¤1@2ò䎊r@1 -=p£× @2ò䎊r@1zxl"h@2ò䎊r@1YJôðØ?’Óusÿ\Ã?¹_ã÷×n?À…Ýøn±‘?¢Ö -ƒ«Y?Áû -úR?ÇŠÏáH!»?„F/·ÿP5?®½Ah:«?¬6¦eI…?££c“ÿ?º…ðöù~?Æc¨/~?†' -³}÷B?”É…ðoiE?Цÿßë?¤?‹h¢íc„„?˜F†éôâß?’;WZŸÿÔ@@@@@&@*?ð?ð?ð?ð?ð?𿱟‰¤^¿ŒþÐU?”cvù¦oÀ?t«YçFDy@¢Ô¬™¢Q@¤1#qbzV?ªƒ¢O¬o?‰–fa@0ÆÝÖ?õ'^X¹ªx@Ÿ_s´™5@@¡pTýó¶F@¡pTzáG®@¡pTýó¶FÁ.„€@¡pTýó¶FÁ.„€@¡pTýó¶FÁ.„€@¡pTýó¶FÁ.„€@¡pTýó¶FÁ.„€@š›²-V@š›¬1'@š›²-VÁ.„€@š›²-VÁ.„€@š›²-VÁ.„€@š›²-VÁ.„€@š›²-VÁ.„€@5Bò䎊@5B•éá°Š@2Yº^5?}Á.„M‰ûçm@2`A‰7LÁ.„QnÙ‡@1!:’£SÁ.„NÜC,¥@1!:’£SÁ.„NÜC,¥@1!:’£SÁ.„NÜC,¥?}@T˜ÁÎ¥@8#˜@8¾:@8 >+@8Iç@8Ù?„`™ˆ/.~@8Î÷@8i§@8Å@8S@8û—?ƒVÆè3äæ@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@«x~ùÛ"Ñ@«x;dZ@«x~ùÛ"Ñ@«x€@«x~ùÛ"Ñ@«x¾vÈ´@«x~ùÛ"Ñ@«x€'RT`@«x~ùÛ"Ñ@«x~¸Që…@«x~ùÛ"Ñ@«x}¿HÌ@®Ú¯Ÿ¾w@®Ú¯\(õÄ@®Ú¯Ÿ¾w@®Ú¯ß;dZ@®Ú¯Ÿ¾w@®Ú¯Ÿ¾v@®Ú¯Ÿ¾w@®Ú¯Ån@®Ú¯Ÿ¾w@®Ú¯Ÿ¾w@®Ú¯Ÿ¾w@®Ú®—Oß@3*0U2b@3Dg8~@.ðå`A‰7@.ðò{²þÅ@.:¬1'@.:–»™@-£¼ÓZ…ˆ@-£•$ß@-£¼ÓZ…ˆ@-£S&Â@-£¼ÓZ…ˆ@-£FÜ]c‰?|öOÿÝ?¾¢`ƒ?‘(¥¿á?‹¬àÌ’Ç?ùª¨?¾ƒìÈÁ?|öOÿÝ?’ aÒ¹zï?ˆ9²0?0ÜN :s?ÔÒ@úˆ‘?PS2K¯™?‚2Y0â³?Œ¬8 T£?‚|׿pZ?‚ìxqC?†½ª»—?†žóB» “@@@@@@?ð?ð?ð?ð?ð?ð¿$…`¿fY?€?,'–kÊÿÎ?:­é<Â@«x פÏ@®Ú¯6Öm$?L‹¾O?8´`kf’l?¥UÎG±?Ç› -vZ¨@Ÿg›~`q@@¡ÅÄ›¥ãT@¡Åϲ-@¡ÅÄ›¥ãT@¡ÅÅýŠÚº@¡ÅÄ›¥ãT@¡ÅÉ^ž @¡ÅÄ›¥ãT@¡ÅÅãS÷Ï@¡ÅÄ›¥ãT@¡ÅÆéxÔþ@¡ÅÄ›¥ãT@¡Åǯ·é@§¡bMÒò@§¡ …¸S@§¡bMÒò@§¡ Ô•@§¡bMÒò@§¡÷eý‹@§¡bMÒò@§¡ð@§¡bMÒò@§¡“t½@§¡bMÒò@§¡§æ›@8Î쿱[W@8à@4|í‘hr@4 -ŒL˜_@3iÛ"Ðå`@3dÝ/Ÿ¾@2a:’£S@2_.Hè§@2a:’£S@2^i­BÃÊ@2a:’£S@2\ÓZ…‡”?1·†Æjñ?”žP1²"?‘ÓKñá»Ù?ç\Š2˜?”‰Wïÿ·?‘É=¦þï?¸bÌk0ÀÕ?–gÝ3ýø’?üÓqÔN‰?–á~ÿ2lÎ?–Â4¨ß?‘ß…D̽}?Á£=É6„?àìÚJ>?›âCp0x¨?‰*6SpK?mŽÃÎŽ?•™ï ufÝ@@@@@(@"?ð?ð?ð?ð?ð?ð¿aN>Ì? c`?CÅ™6py?Uæ6’ö @¡ÅǼ¯à@@§¡Eã–”?l-LYdFy?h€¨cE{­?ÑK/~/úD?½C½ÔiÖî@Ÿq³&žuˆ@@®a›"Ðå`@®a¨mâ¥?ÄêÈ\?Œßô™ 8+?¥ˆÒ¯ó•?šÅÌÄŠ\ì?­±\Æ¥¾0?­VA®o?Ñ3ŠE“b?»2Dò– B?¡"ÒIHÛœ?˜`1âfß?¡?Zá,kï? ¦å_¹?³€L=@@@@@,@*?ð?ð?ð?ð?ð?ð¿” -ÐăÀ?}ë »ï@?eNØÜ?l„Ðw>v¨@®aŽõ!€&@œ›ŸgN5?~Š£üéý?ƒŸ›íüô˜?Ï%¨b” ‡?âÿ¿ÞL`@Ÿ_üBH@@¯AËÆ§ïž@¯AÌIº^5@¯AËÆ§ïž@¯AdžÂ&@¯AËÆ§ïž@¯AÎÙ‡+@¯AËÆ§ïž@¯AÁ@N¥@¯AËÆ§ïž@¯AÅm\ú­@¯AËÆ§ïž@¯A‚@·@©Hu?|í‘@©Hr° Ä@©Hu?|í‘@©H€Ä›¥ã@©Hu?|í‘@©Hp Ä›¥@©Hu?|í‘@©Hs@N¤©@©Hu?|í‘@©Hr×sý@©Hu?|í‘@©Hp¾ í)@6‘|ÚQ@6’a|ÚQ@4R Iº^5@4MÙb¶®@4;Ƨï²@47Ûô‡ü¹@3‚‚@·€5@3}à qv@3‚‚@·€5@3|žì¿±\@3‚‚@·€5@3{xFÜ^?Œs¤DÅÐ?”ŸÍFÒ?“IK¹É?•GÝóuS—?™póK ?t]·™O>?}Ñ¿ž,?”á¾Õ·L?‘Jâ”âj?œ’åæ™ø?—c÷Ò,*Ý?#°‘N˜?ƒ!A -mº¸?‘Žèã&!+?•@K/Ù{?–uq{™a?—»¢Øˆ‹? ¦å_¹@@@@@&@,?ð?ð?ð?ð?ð?ð¿aùÿæð¿" Ó4ð?NõzÖëT7?(Œ¸ýlój@¯AÆÇ(@@@@@(@ ?ð?ð?ð?ð?ð?ð¿J˜Õy’¿.ÙµYÐ?0“á%Žf©?Ó@Ó@©oÌìžå¹@ªÙ¶åVH??âçÄÍ“.?µ…³6?yµ¶o—?!ÕŸû@ŸsøØË»@@¬2«6z@0ýcˆe”°@0úçÕfÏB?|öOÿÝ?qÂ' -B›?‘ê ÷“'?‹û…†_?‘ƒZ)Àˆ?’ŒZzˆZ”?1·†Æjñ?’[ KÄ0R?’]:»›.ó?‡@Cvì×?“[HÎÃ3?—é aÀ‹å?‚yî8Á#?ŒÆò/¢äÍ?‚íWçé…?…®×__C?‡”_Õ­çW?‘˜M\ÿŠ@@@@@,@,?ð?ð?ð?ð?ð?ð?)ßO ¿ óÛ7€?(+pZXNƒ?BZî@¡ò&éxÔþ@¡ò(Û‹¬q@¡ò&éxÔþ@¡ò*ŒL˜@¡ò&éxÔþ@¡ò(e”¯O@¡ò&éxÔþ@¡ò)…ðoi@ª›Që…¸@ª›Që…¸@ª›Që…¸@ª›RÊW§‡@ª›Që…¸@ª›SÐ|„¶@ª›Që…¸@ª›QÅ‚@ª›Që…¸@ª›R£S'@ª›Që…¸@ª›TÉ…ðo@2™*0U2b@2™ã¼Ô@1 Ä›¥ã@0þ}Vlô@0•`A‰7L@0“¼ÓZ…ˆ@0 ù kº@0fÏAò@0 ù kº@0œàu÷@0 ù kº@0%F -¦L?É^³Dw'?qÂ' -B›?‘1f_¨Ï÷?Œ‚èõЊ?’ðä¼_?’£sðU Z?ÐbMçê_x?“ -x”ÕŽ?–ÐO(·Š?Ä…à6 -æ?‘1…šá?ÝÒ¥X[?€bMÕky?ŒÖ -ÄȲ?„³3Z\ð…?ƒ¦$H?‡2[síç?Š—à `ž@@@@@,@,?ð?ð?ð?ð?ð?ð¿Ba¡Ì?Víu—?A"ÎÒ1¥‘?2€>¤ß™@¡ò)L´V@ª›RПÁ"?PlÄ%ÁUè?A€ùªIÏ?—IÞ|šÿ›?y,ÿwå2æ@ŸráFwû^@"@¥ Ä›¥ã@¥ %à ¡”@¥ Ä›¥ã@¥ #‚N[z@¥ Ä›¥ã@¥ !à– @¥ Ä›¥ã@¥ jzO@¥ Ä›¥ã@¥ š´@¥ Ä›¥ã@¥ *(™*@“­E¡ÊÀƒ@“­/Ÿ½@“­E¡ÊÀƒ@“­49Õc¿@“­E¡ÊÀƒ@“­.\2@“­E¡ÊÀƒ@“­5î V@“­E¡ÊÀƒ@“­¶¸× @“­E¡ÊÀƒ@“­gxk>@87â‚@·€@8(׺[6@4º^5?}@4‘ô^ œ@3Z~ùÛ"Ñ@3^³ l?Ú@2¡:’£S@2£,i©ò:@2¡:’£S@2ß­Y}O@2¡:’£S@2šÁå?Ï€×>²„?8 ˆ×?“…e•àT3?’ŠÃx¬?•4¦ õ±¦?“´ Q–Àx?¡ÍÜ -Ü?’Mñ6M^?›~P„230?”ÛA¾×iâ?•]³V“–µ?‘Áukã½Å?ªºT•?’¼%¿÷ø?š†Vï}*? -g’éH?;1ÌßÔÎ?Œb.xt@@"@&@"@7@1?ð?ð?ð?ð?ð?ð¿e–‚Gú¿i2ƒf?\”.bÊL|?h)®öˆa@¥ Ø–÷ä@“­’}¤?uÈÈ5½õ?‚EíûÙ*?ెÀÌ?õ|#”±çI@Ÿnó½Ü>³@#@ª¡B Iº^@ª¡@ƒn™@ª¡B Iº^@ª¡Aÿ.Hé@ª¡B Iº^@ª¡Aä÷eý@ª¡B Iº^@ª¡A‰7KÇ@ª¡B Iº^@ª¡@ÞÒˆÎ@ª¡B Iº^@ª¡@IQƒ@¦F®záH@¦F®V“@¦F®záH@¦F°©*0@¦F®záH@¦F¬¿±[W@¦F®záH@¦F¯ìVÕÐ@¦F®záH@¦F®æ1ø¡@¦F®záH@¦F±uŽ!–@5–»˜È@5€£× -=p@2Œí‘hr°@2Ž«6z@24“t¼j@26ý!ÿ.I@1…œàu÷@1‡»/ìVÖ@1…œàu÷@1†µ '»@1…œàu÷@1‡KƧïž?€‚ñêã ?µ‡:úÎ ?’‹»Ùï§?Œä%—ëš?‘·Xâe?‘À?ÙÂ#’?1·†Æjñ?”¤P ƒË?‘;¨™,?iêhAÜ?‘x9ξÞO?“IëH!w?ˆAᆽÃì?=d­úå?ƒ]€µ,Vß?„ìsMQ(Œ?‡Ä­‹›Ü?‡´*žZ}Õ@@@@@,@*?ð?ð?ð?ð?ð?ð?ÆÑÝ@?=©x? §ú3Ä?*oë5–yU@ª¡@ÒK@¦F¯T¦@?@p´~î×?J+áµt?‰jö“à »?Ÿ8;(›@Ÿg2nÂr@$@¥u Ä›¥ã@¥u|í‘h@¥u Ä›¥ã@¥u*™1@¥u Ä›¥ã@¥u :’£@¥u Ä›¥ã@¥u+jçÕ@¥u Ä›¥ã@¥u"ÞÑ·@¥u Ä›¥ãÁ.„€@¬6È´9X@¬0å`Aˆ@¬6È´9X@¬/ìVÕÐ@¬6È´9X@¬A£n.±@¬6È´9X@¬:6âë@¬6È´9X@¬ES&Ã@¬6È´9XÁ.„€@8·â‚@·€@8¤êJŒ@3ë¥ãS÷Ï@3ï;dZ¬@3Ãt¼j~ú@3ÍBÃÉîÌ@2¡:’£S@2¨>BZîc@2¡:’£S@25¨Xy>@2¡:’£SÁ.„NÜC,¥?¦NIÉ®š?™öä+†>?¡ü|v8?ŽVåç0ÇO?œ’=Šæ-?@8Ù?гá‡}?––ïFHÇN?§¿Ÿ.ój ?’GÎ>GÅ?™På½Zj@8û—?§òÄ U¸?˜ÔÞÑ—æJ?ª¹0ÇåÄ?…bv{3dZ?•@¼Cк@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø%@°±&éxÕÁ.„€@°±&éxÕ@°¬wškQ@°±&éxÕ@°°4mÅÖ@°±&éxÕ@°·Á½¥@°±&éxÕ@°¨Ë’:@°±&éxÕÁ.„€@©®§l‹C–Á.„€@©®§l‹C–@©®jO@©®§l‹C–@©®w1Å@©®§l‹C–@©®¢œwšj@©®§l‹C–@©®»J#9Á@©®§l‹C–Á.„€@9+µsê´Á.„>¤µÜÆ@4Yº^5?}@4F§ï²-@3´“t¼j@3§RT`ªe@2èè§æ›@2Ý!ÿ.Hé@2èè§æ›@2å%F -¦M@2èè§æ›Á.„NÜC,¥@8J¨?œ½Øu4Þ•? ñ`žM:?ÿ¾Øï?¢WÃTþi@8Ù@8J¨?»ÜråAо? PÇ´âþ?°!žôŸ“?«Å0ì7á\@8û—@8p÷?¸:h$â^z?«^i•?¨ üB?Âyˆ ‘^@8 Ø@@@@(?ð?ð?ð?ðøøøøøøøøøøøø&@¦Ä¹XbN@¦ÄÂÐå`B@¦Ä¹XbN@¦ÄÜ‘ÑN<@¦Ä¹XbN@¦Ä¿!-w2@¦Ä¹XbN@¦ÄÕ%@¦Ä¹XbN@¦ÄÔýó¶F@¦Ä¹XbN@¦ÄÍÅÖ8†@¡÷®záH@¡÷¶“u@¡÷®záH@¡÷³Ð|„¶@¡÷®záH@¡÷µL˜_@¡÷®záH@¡÷µÂ\)@¡÷®záH@¡÷œ„µÜÆ@¡÷®záH@¡÷ [À7@7%öý!ÿ.@7æšÔ,@4 í‘hr°@4å`A‰7@3'KƧïž@3/O „M@2œÚQÎ@2¢T`ªdÃ@2œÚQÎ@2ˆÁTÉ…ñ@2œÚQÎ@2„,<žìÀ?”¼íÒh??’ÕOäª9ô?—¿ÔÌÆ?‘Ä{Oç¿`?g;+³ûu?š{>üFV?”¼íÒh??˜Ø*ªl€ô?˜lñèí« ?’"Š6›Wz?£áêqú ?š)ÑS&³?¶Ì^²û¨?œŠL E®?†¼Š˜L¥ø?ŽÔ¾ç?’ymícw\?Ò0aˆ‡‡@@@@@(@"?ð?ð?ð?ð?ð?ð?fd¿qÆ,wa€?^D¤Oò?dÕ9TÙQ9@¦ÄÈ)8@¡÷®k±b?zM¾ñM™?‚£×{Å0À?æYõk—„c?ôX|šGˆ@ŸjƒD08m@'@©ð¾ùÛ"Ñ@©ðª~ùÛ#@©ð¾ùÛ"Ñ@©òè§ç@©ð¾ùÛ"Ñ@©òxºÇÊ@©ð¾ùÛ"Ñ@©òÄ÷eý‹@©ð¾ùÛ"ÑÁ.„€@©ð¾ùÛ"Ñ@©ò&1ø ‘@ "Ðå`@ bMÒò@ "Ðå`@ ‚}<64@ "Ðå`@ ‚}¿HÌ@ "Ðå`@ ‚m5¨Xy@ "Ðå`Á.„€@ "Ðå`@ ‚¿åÉ@4#g ù l@4 ÞÑ·@1©‡+ @1$êJŒ@1ï²-@0•Ö8†YK@0ÔmÅÖ8†@0=!ÿ.Hé@0ÔmÅÖ8†Á.„NÜC,¥@0ÔmÅÖ8†@09³Ð|„¶?ð°–Ž]?à?`ëLµù?Ë.‹´®Ñ?ÑL_jf@8Iç?Úé¼,Ï–?ð°–Ž]?רðO?2¨?ÏV–fËN¶?Ö µ'@8S?àöäÿTöD?ð*wjs—?¥²»UbB2?° ё٤i?´p¥¼O+@8 Ø?¼ïõÀq2?ð@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøø(@§´r-V@§´2ñ©ûç@§´r-V@§´ž«6z@§´r-V@§´Z…‡”@§´r-V@§´T¢3œ@§´r-V@§³âe+Ô@§´r-V@§´³Ð|„@­E…¡ÊÀƒ@­E‘©ûçm@­E…¡ÊÀƒ@­ExÔýó¶@­E…¡ÊÀƒ@­G¼£n@­E…¡ÊÀƒ@­Fë…¸@­E…¡ÊÀƒ@­EëàÞÒ‰@­E…¡ÊÀƒ@­G&Á½¥@9N쿱[W@9P·€4mÆ@5f‡+ J@5µsê³h@5“t¼@4Ý¿HË’@4p–»˜Çã@42ëC,¦@4p–»˜Çã@4ö8†YJõ@4p–»˜Çã@3™ã¼Ô?Ú¿˜zêï?ÈvîÃ×dš?× OûàV?Áav” ?Ç £Ä<)?°6Ÿƒãán?°:-%šÀ?ÑÝFSfÛ?áÜ8/œJ?ËS~†¶Ä?Ðwû}Z?»T÷š¦ï?ÈsŽˆ? ·õzúÂ?²yMa‘€?»Ó9óñíG?ÃÂñK¨?¯!›ÖËf@@@@@,@?ð?ð?ð?ð?ð?ð¿Ipð?³U ž² ?…„¾K~Ui?ÍÍ> Ä“@§´(ûêÌþ@­Fl D­˜?¤'Ûèˆqò?´G2—ó?ëÙý=Ñ@ ¨¼òI@Ÿm!}SÖ´@)@¤~™™™š@¤~£× -=@¤~™™™š@¤~dZ¬@¤~™™™š@¤~W>«6@¤~™™™š@¤~6âë@¤~™™™š@¤~DЩ@¤~™™™š@¤~DЩ@¦4bÐå`B@¦4d›¥ãS@¦4bÐå`B@¦4a‰7KÇ@¦4bÐå`B@¦4a×Ûôˆ@¦4bÐå`B@¦4a|ÚQ@¦4bÐå`B@¦4d¨ÁTÊ@¦4bÐå`B@¦4c¯·é@7¥öý!ÿ.@7§ÈK]Ìd@2pÄ›¥ãT@2rT`ªdÂ@1ï²-@1ûçl‹D@0ò䎊r@0×Ûô‡ý@0ò䎊r@0‚©“ àß@0ò䎊r@0‚3œ¾à?’Óusÿ\Ã?jÝ‚È?’#ç}iïë?‹ÑqÔ@vÿ?’yÊêºq?ë+ʦÜ_? Eˆ‡ðó‹?’Êå\tW?“„;Ë~½ú?agÌf ?“Al.6¸?oÌ‘'ýT?lû˜¡Q?¨ ‰‹U)?ƒ´],m=?ƒý¥ñÍú?ˆW|¶DC?†¯Mž684@@@@@,@ ?ð?ð?ð?ð?ð?ð?W¢¢Ã®?.)C?P¼Û÷Y„a?DÐA&ƒc@¤~Àâ¨@¦4c-^Ž¢?l ‡X#W?]öó•ÿÙ?Öc„Ê ?²©Ñ”¥8†@Ÿn~I`Ši@*@«K*~ùÛ#@«K2Ö‚Ò@«K*~ùÛ#@«K+C•@«K*~ùÛ#@«K&éxÔþ@«K*~ùÛ#@«K$Ý/¡@«K*~ùÛ#@«K'E8ï5@«K*~ùÛ#@«K!ä÷eþ@œ»öÈ´9X@œ»ë4uÖ¹@œ»öÈ´9X@œ»ý¿HÌ@œ»öÈ´9X@œ¼#ˆe”°@œ»öÈ´9X@œ»úxl"g@œ»öÈ´9X@œ»ù¦µ @œ»öÈ´9X@œ»ùXbM@7uS&Á¾@7HÕñÏ@3» Iº^@3ºqÞi­C@3¶§ï²-@3¶»˜Çâ‚@2ºÔ,<ží@2·8}¿I@2ºÔ,<ží@2¸ð¹@2ºÔ,<ží@2·l‹C•?°z®aà2?“:„aGS?œrôeEÜ?¨•Ù?‘èÒ§ˆ„Å?”‹ÂØ*þ›?¿pÉÃV?•2ã(_Ïù?¢?Ùæc?’ÁÛ/’:?“h_N’%¿?”V.·H?±‚ÎûŠøë?þ,DöP?‰~}œ…o_?‡ÕZ›µûÜ?Œ¸ðËb?‹aÊ•TI@@@@@(@*?ð?ð?ð?ð?ð?ð?^‰òžè?\Ïul?k­ZG -’?<å¿>BëU@«K#©¬@œ»÷oBÕ°?}ãjRL§]?cv½.ê?ðXQxב ?Àß £ ï@ŸpŸ9N@+@¬¥J=p£×@¬¥Iûçl‹@¬¥J=p£×@¬¥J°¼@¬¥J=p£×@¬¥M ¶íg@¬¥J=p£×@¬¥LJKž@¬¥J=p£×@¬¥IÀõeÑ@¬¥J=p£×@¬¥Hñ+oP@™O$Ý/@™O€ƒn™@™O$Ý/@™Oþe‘@™O$Ý/@™O‚ Ïþ_@™O$Ý/@™O ±ñü@™O$Ý/@™O€ŒÕPø@™O$Ý/@™O‚‘™RQ@3°4mÅÖ8@3¯ìVÕÏ«@1sS÷ÎÙ@1s:'è²@1“t¼@1t­]Õ”@0\ÚQÎ@0\òù‡@@0\ÚQÎ@0][ønh@0\ÚQÎ@0\ßÞv]?}õ¬#„­?.od}Æ ?‘EYˆƒê?‹îv[Û‡?‘aë!(¯\¾¦?Ž,OêK˜u?‘úy«ôÊ%?‘À?ÙÂ#’?}Ñ¿ž,?’pP‡È»?‘˜ÆôõD?Ë{4æk?‘†óèJL\?‘C å;Ã?„m~Z_s,?R©i»èi?ƒ´],m=?ƒ¼9XNÄu?‡2[síç?‡L8õASÎ@@@@@,@,?ð?ð?ð?ð?ð?ð?1½fˆ0?*í®à?*Î@ƒYy>íË÷Ÿ3@¯PËúÌĶ@ª +sdÍÚ?J¾ó¡Ë ?6@N¨€…?¡~­úäŸ?& Ó^}(@ŸfÔü[º#@-@«„+ JÁ.„€@«„+ JÁ.„€@«„+ JÁ.„€@«„+ JÁ.„€@«„+ JÁ.„€@«„+ JÁ.„€@–",1&éÁ.„€@–",1&éÁ.„€@–",1&éÁ.„€@–",1&éÁ.„€@–",1&éÁ.„€@–",1&éÁ.„€@8 ØDЩÁ.„>¤µÜÆ@3û Iº^Á.„M‰ûçm@3²-VÁ.„QnÙ‡@2øDЩ*Á.„NÜC,¥@2øDЩ*Á.„NÜC,¥@2øDЩ*Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø.@«3H1&éy@«3J~ùÛ$@«3H1&éy@«3JdÂø8@«3H1&éy@«3Iá°‰ @«3H1&éy@«3GÕfÏC@«3H1&éy@«3Ezxl"@«3H1&éy@«3EýŠÚº@©tñ©ûç@©tt¼j@©tñ©ûç@©tÈ´9X@©tñ©ûç@©t®}Vl@©tñ©ûç@©t_Ø­­@©tñ©ûç@©t1Å@©tñ©ûç@©téá°Š@7ò䎊@7þÅm\ú@2žÙ‡+@2ž;Í5¨X@297KƧð@287´¢3œ@1µµsê³h@1µ¸Që…@1µµsê³h@1²½<64@1µµsê³h@1²œwškQ?|öOÿÝ?­hX™*?’5 µ¿$„?ŽÝ¡uÒ(r?’Z†Ažj?“Q´Î`°€?Œs¤DÅÐ?“RƒwS5?’]:»›.ó?‡@Cvì×?‘®7Ö=^9?’EÈ€›º?‚oÁÆÜ§ö?þrªbT?ƒ¡É^&Ö?‡v¯ªIì?’Ž<Dxƒ?” 4‹eñ -@@@@@"@(?ð?ð?ð?ð?ð?ð¿QÕ´?Ed’`?!Û×»DÙ§?2®eºÂ…_@«3GàS©²@©txø·$?CB±>Õ˜Þ?Q¯Â w?Eíä;pñ?¢ƒ3Õ+r@Ÿijä,¡û@/@¦A$Ý/Á.„€@¦A$Ý/Á.„€@¦A$Ý/Á.„€@¦A$Ý/Á.„€@¦A$Ý/Á.„€@¦A$Ý/Á.„€@¦^å`A‰7Á.„€@¦^å`A‰7Á.„€@¦^å`A‰7Á.„€@¦^å`A‰7Á.„€@¦^å`A‰7Á.„€@¦^å`A‰7Á.„€@6m¥œàvÁ.„>¤µÜÆ@3° Ä›¦Á.„M‰ûçm@3Wï²-Á.„QnÙ‡@2¿ò䎊rÁ.„NÜC,¥@2¿ò䎊rÁ.„NÜC,¥@2¿ò䎊rÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø0@¦2° Äœ@¦\(õÃ@¦2° ÄœÁ.„€@¦2° ÄœÁ.„€@¦2° ÄœÁ.„€@¦2° ÄœÁ.„€@¦2° ÄœÁ.„€@ ]Ù‡+@ ]¹Û"Ðå@ ]Ù‡+Á.„€@ ]Ù‡+Á.„€@ ]Ù‡+Á.„€@ ]Ù‡+Á.„€@ ]Ù‡+Á.„€@85S&Á¾@8 í(Œç@3×+ IºÁ.„M‰ûçm@3.ùÛ"ÐæÁ.„QnÙ‡@2G ù kºÁ.„NÜC,¥@2G ù kºÁ.„NÜC,¥@2G ù kºÁ.„NÜC,¥?ð°–Ž]@8#˜@8¾:@8 >+@8Iç@8Ù?ð°–Ž]@8Î÷@8i§@8Å@8S@8û—?ð*wjs—@8 * @8p÷@8¶@8 Ø@8 Ø?ð?ðøøøøøøøøøøøø1@¬†1&éxÕ@¬†0å`A‰@¬†1&éxÕ@¬†0oiDg@¬†1&éxÕ@¬†2×sü@¬†1&éxÕ@¬†2×sü@¬†1&éxÕ@¬†/v_Ø®@¬†1&éxÕ@¬†0å`AŠ@£A º^5?@£A -=p£×@£A º^5?@£A§æ›@£A º^5?@£A ^ž@£A º^5?@£A C,¥@£A º^5?@£A -=p£Ö@£A º^5?@£A 6z‘@3*0U2b@3ã¼Ô@1+¥ãS÷Î@1+Ƨï²@0Ͳ-V@0Ͳ-V@0ž«6z‘@0Ÿ!-w1@0ž«6z‘@0žì¿±[X@0ž«6z‘@0žŠqÞi®?žˆ2}?¾‰máÚ?‘&Øç?‘?‹û…†_?‘PÊÑ<Ým?‘£.'É?|¬Çëý ?’4 "ëžØ?r¼Jsž?0ÜN :s?‘=d¦^™?½y ¦Å?‚uÞ@>N ?ŒÆò/¢äÍ?‚Ö˜>µDá?ƒv_.^?‹ì3åý?†ùadô|@@@@@*@&?ð?ð?ð?ð?ð?ð¾ò¸|¾?#ËŸÕ ?7ÒcDÅÑ«?2Àηk@¬†1eÝ,@£A -™úˆ\?W~N¡Å8ñ?;$¢bA?¹±A_Móa?‚ ÿeS1u@ŸgŸ1ßE@2@«ìaÊÀƒÁ.„€@«ìaÊÀƒ@«ìbe+Ô@«ìaÊÀƒ@«ì{/ìVÖ@«ìaÊÀƒ@«ìeo@«ìaÊÀƒ@«ìjW§†Ã@«ìaÊÀƒ@«ìhe”¯O@ 2ÍÒñ©üÁ.„€@ 2ÍÒñ©ü@ 2×>«6z@ 2ÍÒñ©ü@ 2ÌÙè>B@ 2ÍÒñ©ü@ 2Ö‡+ @ 2ÍÒñ©ü@ 2Ížƒä'@ 2ÍÒñ©ü@ 2Ç®zà@9„¯O „MÁ.„>¤µÜÆ@3œIº^5?@3ŒwškP±@2Ͳ-V@2»'»/ì@2}cˆe”°@2f“t½@2}cˆe”°@2kJ#9Àì@2}cˆe”°@2l~($ x@8J¨?™ér¨kÏ?Ÿ7'»ˆv?°ñé÷Qi¹?§Kn(¿«?¦r‹ÿÇ×W@8J¨?U -£?00? .ä,?¢Eµ²À•!?šs°Àãª?™†öà|•@8p÷?’òÌ&Œ®3?šˆøQû±?&à|Òß?•°QŸ?]Í?ªìà¢5³@@@@,@,?ð?ð?ð?ð?ðøøøøøøøøøøøø3@§w€@§wœj~ùÚ@§w€@§w‰Q‚©”@§w€@§wË)^Ÿ@§w€@§wŠ Þ@§w€@§w”mÅÖ9@§w€@§w˜ -á@ª´mV@ª´fffff@ª´mV@ª´i“ àß@ª´mV@ª´vâëC@ª´mV@ª´-V@ª´mV@ª´ZŸ¾vÊ@ª´mV@ª´=²-V@9*0U2b@9àuöý"@5©‡+ @5±TÉ…ðo@597KƧð@57ü¹#¢œ@5 ¿±[W?@5Ϫ͞„@5 ¿±[W?@5µÜÆ?@5 ¿±[W?@5IQ‚ª?1·†Æjñ?¡U¢WªÂ?¡[r'{né?ªE> Ì?§ê‰%œôÄ?¯Vñá·µ­?‘â%ì˜ ä?£àÂ’âÿ?§i©†˜s?©Æ£ŒL?®+Ò¥õÿ/?°áÎZÔ?°^&Mªka?Ÿ$Ìj½BÙ?¡7‡V/Žr? ‚™¡0V?°+—ߎ ? 7BjüõÞ@@@@@&@(?ð?ð?ð?ð?ð?ð¿bÅ*j‡¿‚H£&·?YC@«…-V@«…,¥zxl@®Þc× -=q@®ÞdZ¬@®Þc× -=q@®ÞbÐå`A@®Þc× -=q@®Þ` qw@®Þc× -=q@®ÞhõÂ\@®Þc× -=q@®Þ`[À7@®Þc× -=q@®Þc9Àëí@7­¥œàv@7®šu@3k¥ãS÷Ï@3j³g ù -@2M²-V@2LÓZ…‡”@2Þi­BÄ@2ØDЪ@2Þi­BÄ@2åÉä@2Þi­BÄ@2|í‘hs?€‚ñêã ?‘@@Nßo9?’=N K?‹ËØ|*(?’PY8~Qj?‘Ò\.:Ø@?€‚ñêã ?”n‹rÕ|?’F^ì¼Sï?>\‰å‘?•MšuVÑQ?’j“O’I?£å$óM™?‘pØ-Ÿt?‚† SFò?>æ¿Îï?‹&¸ê±fÂ?‹&¸ê±fÂ@@@@@@?ð?ð?ð?ð?ð?ð?OŒ°Œà¿#Ç7 ?CÖ ¤©ƒ©?Jð%=Ìz~@«…,Ñp@®ÞdvPß…?c~Kut4u?k7·åL²P?ÑПý‡?ÝÈPÿ¿U¨@Ÿg3¶#P@6@ªÊ=ó¶E¢@ªÊ/\(õÃ@ªÊ=ó¶E¢@ªÊšû~‘@ªÊ=ó¶E¢@ªÊPHð@ªÊ=ó¶E¢@ªË6âë@ªÊ=ó¶E¢@ªÊ>ߤ?å@ªÊ=ó¶E¢@ªÊ?¾vȵ@¦¥Òñ©ü@¦¥ Ä›¥@¦¥Òñ©ü@¦£%m\ú¬@¦¥Òñ©ü@¦¥;dZ@¦¥Òñ©ü@¦žÒ-V@¦¥Òñ©ü@¦¥·éú@¦¥Òñ©ü@¦¥·éú@9šÔ,<Ÿ@9õÂ\)@3Œí‘hr°@3Ø -à @3`A‰7L@3@ØDЩ@1Öý!ÿ.I@3€N¤¨ÁU@1Öý!ÿ.I@1ÙQ‚©“ @1Öý!ÿ.I@1× ù kº?‡YÍ_?Ì1d?““¶”ÿµb?¼€+|Ò?’Z†Ažj?“¾§²~Î?¨TU‚?êÍ~êÜ^Ž?™€p4“¶Á?ªÕÓW?“ðÐ ?’ Óº^?¸M,ꤺ?šà+>G–Ì?‹´¡`Ƕà?âtî"0‰D?‡æê7²zE?ˆ©{2¡Î@@@@@&@(?ð?ð?ð?ð?ð?ð?nd·wö?‹¥sP€?t5FêÃä?¶‰;t,@ªÊ=7Ää*@¦¥xÛª@4?šŽµÂ7?Îņ¶VJ)@)Ø[Vÿò@oG+<Ã@Ÿq ^´Û¢@7@¤'þvÈ´9Á.„€@¤'þvÈ´9Á.„€@¤'þvÈ´9Á.„€@¤'þvÈ´9Á.„€@¤'þvÈ´9Á.„€@¤'þvÈ´9Á.„€@ BöE¡ÊÁÁ.„€@ BöE¡ÊÁÁ.„€@ BöE¡ÊÁÁ.„€@ BöE¡ÊÁÁ.„€@ BöE¡ÊÁÁ.„€@ BöE¡ÊÁÁ.„€@8„¯O „MÁ.„>¤µÜÆ@5ë¥ãS÷ÏÁ.„M‰ûçm@5lj~ùÛ#Á.„QnÙ‡@5uµsê³hÁ.„NÜC,¥@5uµsê³hÁ.„NÜC,¥@5uµsê³hÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø8@Ÿ8« Iº@Ÿ8­V@Ÿ8« Iº@Ÿ8€Æ$¨~@Ÿ8« Iº@Ÿ8G—˜‹@Ÿ8« Iº@Ÿ7õú}î$@Ÿ8« Iº@Ÿ7ÀÊN?¨@Ÿ8« Iº@Ÿ7è¯t§L@˜èr° Å@˜è'Ê*·@˜èr° Å@˜ó¯@˜èr° Å@˜Ç„3Ã@˜èr° Å@˜õ£ÏSO@˜èr° Å@˜òkVÌ?2OžÑ*¦ÒˆÎp@£çž¸Që…@£ç7>«6z@£çž¸Që…@£çiã¾@£çž¸Që…@£ç‘4êK@£çž¸Që…@£ç’½<6@ò° Äœ@î—Oß@ò° Äœ@ü¹#¢@ò° Äœ@ ÞÒˆÎ@ò° Äœ@‹C•@ò° Äœ@?±[W?@ò° Äœ@UL˜_@4(†YJôñ@4'Pô&Ü@1€ Ä›¥ã@1=quŽ"@1RÐå`A‰@0Û…¸Qì@0øDЩ*@0•fÏAò@0øDЩ*@0›]ÌcñA@0øDЩ*@0¥ '»0?|Ñb×¶@?ÀßL¯-?Ì*$*n?¤*càðyb?ÇnOÙQ?Ç98•ÿ?|¬h2:“?ÅË5Öµ?סϟE™~?ª*G„kì?ÒMWÒXRk?ÓÉXÒ\?„.”r‡É?®¿{dâph?®Ütß½RÛ?•çѳÍ9?«Ý]2°ðƒ?½ûmBüÁ@@@@@,@,?ð?ð?ð?ð?ð?ð¿y^ßÓ@?²‡øF€?t¾8Mèmš?„ -™_QÖÂ@£ç”Œ˜í @=ª F?{³R€RÁ®€?‘´CF õ?«'# ¡?­91)8?Ÿ‹‘+-/Ü?–‡+ Iº?–v”׆7Ê?‘ô 5Y?¯MÑJed€?¯íÉv8' ?„„OW°ò?—ƒFÛ¯/?‘Ó0<ïL{?¡2¿ônM|?§žpå¨,´?¶ ÚäF@@@@@*@*?ð?ð?ð?ð?ð?ð¿==S¿ ¿sQWÁ¯?Kë@N€Gñ?q&ìêÒ¢å@§Âhü=×@ªÈ…²Ž?bŸc?†o³´^óu?¨ÉAqgŽ?ò*OK‘<€@Ÿi#¨~¸*@<@¥g;dZ@¥gp£× @¥g;dZ@¥g”x9Å@¥g;dZ@¥g*oƒæ@¥g;dZ@¥g'p8ä@¥g;dZ@¥gRG^I@¥g;dZ@¥g’ÿ²k@˜%®záH@˜%®—Oà@˜%®záH@˜%‘T^³å@˜%®záH@˜%² ÜW@˜%®záH@˜%Aå†4@˜%®záH@˜%‹n~ÀN@˜%®záH@˜%™†ù,[@6Ô xFÜ@6ÕU²ƒ@35ãS÷ÎÙ@3(ã—¾â@2nùÛ"Ðæ@2eu¾N0y@1‚@·€5@1»àpဠ@1‚@·€5@1º±ɽ@1‚@·€5@1»ápäµ?‚Cš æI?•Â{Íwà3?‘¿° -Æz?ŽEÍ +r‘?“ümbaÆ?“*E̽n?€Ã{s°úi?™{Ï£­0Ä?‘˜ËrÛé´?’Nß>YR?™€$<«É?”Pù—yÇÙ?‘ß“¯Øg?ŽYéc˜?…wç{„³?„?¢Öñ ?ˆ5’©‡µQ?‰¯ëÇR:@@,@$@"@<@7?ð?ð?ð?ð?ð?ð?O6Bœ¿k#ŽDh?Tólžb ?W]D„õ¸@¥g ‚Ñr@˜%ž©ný®?tvÛa4Iö?wbÙ -"†¯?ð³E, ‡ÿ?òzÑôÐ@Ÿfã+Cµ+@=@¯,j~ùÛ#@¯,j~ùÛ#@¯,j~ùÛ#@¯,l@­ Iº^5@­È´9W@­ Iº^5@­9‡+@­ Iº^5@­í‘hs@­ Iº^5@­+Ƨï@­ Iº^5@­(õÂ@­ Iº^5@­@@®ý±&éxÕ@®ý³t¼j~@®ý±&éxÕ@®ý²ñ©ûè@®ý±&éxÕ@®ý¨´9X@®ý±&éxÕ@®ý‹ I¹@®ý±&éxÕ@®ý¢\(÷@®ý±&éxÕ@®ý¶E¡ÊÁ@8Q|ÚQ@8ùrGE9@3° Ä›¦@3«P°ò{³@397KƧð@3Ø­«ŸV@2¸DЩ*@2žŠqÞi®@2¸DЩ*@2«À6âë@2¸DЩ*@2˜ -à ?гá‡}?­³_¦b*—?—æ'=D´P?›“ë '?Òß© ÷?¹ÂÑ*=œU?’Óusÿ\Ã?“¶†ÿê¡?ß‹…&?™b ]jZå?•¯ÃþƒR?#°‘N˜?³â3ù‹?’Эs_ª`?œÁXÙñ?§DÛ–£?»o;Ês€"?¨4¨æž@@@@@@?ð?ð?ð?ð?ð?ð?oww#¿aø’Œ?fdÄlC²?vùWBZ@­w>zÚ@®ý§§øòÚ?„ê嘴?–š9‘h±?ó†31»5l@I¨½jà(@Ÿf^™‡Q@?@¡\³¶E¡Ë@¡\ÄZ¬@¡\³¶E¡Ë@¡\¯\(õÃ@¡\³¶E¡Ë@¡\ÇæšÔ@¡\³¶E¡Ë@¡\œ„µÜÆ@¡\³¶E¡Ë@¡\§â‚@¸@¡\³¶E¡Ë@¡\¨$ x@­n[¥ãSø@­nR-V@­n[¥ãSø@­nr¼£@­n[¥ãSø@­nB3œ¿@­n[¥ãSø@­na½¥@­n[¥ãSø@­nAÿ.Hé@­n[¥ãSø@­nAò×r@8G>«6z@8AA [À@5Œí‘hr°@5aä÷eý@4ìj~ùÛ#@4èâe+Ô@4G ù kº@44%®æ1ù@4G ù kº@4@bMÒñª@4G ù kº@4JÔ,<ží? Eˆ‡ðó‹? /÷œ…?­Y)Þ=’? ñÔ`JU?œ¼•§&Œ‰?¡î®ðÎ`~?1·†Æjñ? 3ÝP‰j?½ç“Oªc_?©øpe³­ó?–kš‘ž? ª w³ -?™Ä¶BϪ?§—“H1ÀÏ?®Ï¤\7?£-n?¶û–Íc]Ö?•@¼Cк@@@@@@(?ð?ð?ð?ð?ð?ð¿x#rÒóÀ¿khŒ²&?pJÉ_+?Z5·òGW€@¡\­C ä@­nI_{N0?ŒYɺŒ?€5ë’¸??øÝaa× ?îm•r>0‡@Ÿjéå)¼@@@­œl1&é@­œqhr°!@­œl1&é@­œn±Ä2É@­œl1&é@­œq‚©“ @­œl1&é@­œr×sü@­œl1&é@­œncŠ @­œl1&é@­œnV“@é Iº^5@èõÂ\)@é Iº^5@é™™™š@é Iº^5@é$tSŽ@é Iº^5@韾vÊ@é Iº^5@éüPH@é Iº^5@é¤?åÉ@8(†YJôñ@8 ÅÖ8†Z@3 í‘hr°@3 ¦µ (@1ûƧï²@1ùº^5?}@1èè§æ›@1å¡ÊÀƒ@1èè§æ›@1êCþ\‘Ò@1èè§æ›@1ì<žì¿²?µÕjùq®p?‘Ð`HÇh?’Gßk;m?F‘q/b?‘à2F0µÔ?’ß5Ov_Ù@«Š¤µÜÆ@4J^5?|í@4J–»˜@3ñ‰7Kƨ@3ì/ƒ{J#@3._oÒ @3&fffff@3._oÒ @3"@·€4n@3._oÒ @3$ xFÜ@8J¨?ZÁ».œ?”Ä0óçî?‘sNX„êÒ?— -æÙõ¡?•I0ùzIJ@8J¨?’LÁŒÀ´a?•Q²rz¢ù?’àêE©³?¢i ú?¨,?—vÑékÜ@8p÷?*øT?aäŽ -Ù?Ž0 ½~ÿ?K·‘d\?‘ ê$4 @@@@*@$?ð?ð?ð?ð?ðøøøøøøøøøøøøB@¨1ò° Äœ@¨1ò-V@¨1ò° Äœ@¨1òT`ªd@¨1ò° Äœ@¨1ñë…·@¨1ò° Äœ@¨1òÊW§‡@¨1ò° Äœ@¨1ñuŽ!—@¨1ò° Äœ@¨1òT`ªd@¡«‡®zá@¡«‡l‹C—@¡«‡®zá@¡«ˆXy=Ù@¡«‡®zá@¡«…zxl"@¡«‡®zá@¡«‡“Ý—ö@¡«‡®zá@¡«†šÔ,=@¡«‡®zá@¡«‡æšÔ@4£g ù l@4£¼ÓZ…ˆ@0ý‘hr° @0ý‘hr°!@0'KƧïž@0&ý!ÿ.I@/=Vlô"@/=<64@/=Vlô"@/=p£× ->@/=Vlô"@/=ÌcñA!?|¬Çëý ?Čۨ1A?‘G¿yÛ?ï?‹×lÇ…N9?‘; ÷^?ÔCXsñ?|öOÿÝ?’j%ÓRa?“û#ÆGf?CÚ B÷?‘!U?Ð{Ò?wN —z_?‚|׿pY?Å9–o?ƒ>ZÌw?‚äÍ“½E'?†špk Y?†µ°jÆÃ@@@@@*@*?ð?ð?ð?ð?ð?ð¾Æòˆ¿xÃ@? Óߘ9Ñ3?þ–;¤@¨1ò78`@¡«‡=VˆŽ?@¼ú¼eJ?4ì †¢õ?Ž_WÍZ†x?vRius@Ÿfè”õñÍ@C@ óÂ\(ö@ óÂŽ¶ ˆ@ óÂ\(ö@ óű‰°r@ óÂ\(ö@ óÃd{*@ óÂ\(ö@ óÆßü2@ óÂ\(ö@ óÁ¥œt'@ óÂ\(ö@ óÁJKÖ‡@ªl3¶E¡Ë@ªl3÷ÎÙ@ªl3¶E¡Ë@ªl4’)®$@ªl3¶E¡Ë@ªl6‘ -l@ªl3¶E¡Ë@ªl2“³Æ'@ªl3¶E¡Ë@ªl3.Ô} @ªl3¶E¡Ë@ªl1ÇÎã£@4–šÔ,<Ÿ@4–†zäÁ†@1«¥ãS÷Ï@1«ÕR½ã¼@1†“t¼@1…ÄO©=&@1Œ~($ @1Û…hÖ@1Œ~($ @110:­¸@1Œ~($ @1¿Q&-p?|¬Æ Væ?0ñÏ’ì?‘FúëWg?ŒWÕ:×Bx?‘?yd%&.?‘(Å( ‹?|Ñb×¶@?’a›I$ž;?¨¥€æ5^?–=Ôcü~?‘+ôÓÉŽÂ?‘‹3ŒÛ¡?‚¢r;;É?8Ç1§$?ƒ@tGy‚þ?ƒ#¡XÏÃ?‡9DP¢ä?‡"#Àѧù@@*@"@*@5@4?ð?ð?ð?ð?ð?ð?}Ç„@¿8XúÊð?Eo2[-•?â•ÛPZ@ óà Œ³k@ªl3)Û®?e<¯µ>*?=%¼ïÀ?Ø2F¦¦Y”?…g«ÀK@Ÿf´µRž§@D@ŸoJÀƒo@ŸoO@ŸoJÀƒo@ŸpöÅ=@ŸoJÀƒo@ŸoÀÔ˜Z@ŸoJÀƒo@Ÿo±ƒ¯<@ŸoJÀƒo@Ÿo–„?¿f@ŸoJÀƒo@ŸoاÁtò@¡HJÀƒo@¡HHü±@¡HJÀƒo@¡H;Ön³&@¡HJÀƒo@¡H44ë(@¡HJÀƒo@¡H1lS£@¡HJÀƒo@¡HKã-#C@¡HJÀƒo@¡HPÊ4@5¿–»˜È@5½%=p)@3’ Iº^5@3{µþ»¶G@3“t¼j@2õvˆÈ²×@2OO „M@2Kv4EŸU@2OO „M@2iÑ-(`@2OO „M@2=ŒË¶·?‰døëŽìÃ?¢uñÌ6!?œV΄Œ„š?™†‹¢ò„?«³,Í@ ?­Ç÷ˆÉ?}x—™?›“;þÄU?™ÿ…Jjì?ª_·Q·?®œ£dÜ'C?‡7Ùù„?•Q½7 -È?‘;u•LÐß?Š×É´¸?›Ÿ}ê?›4¾ÀÍ6@@&@$@&@4@3?ð?ð?ð?ð?ð?ð?Ž.Ñ”¿krïZ?h¥‘¬ØÆÁ?nÐgáh-Ç@Ÿo}‘˜³@¡HB•·Mp?ƒci&ÛVÂ?‡g}' d ?ôIóWJЗ@ô ]èÃï@ŸaÔôC¸@E@¯Ì Iº^@¯ÆºŸ¾vÈ@¯Ì Iº^@¯Ç¤µÜÆ@5T›¥ãSøÁ.„M‰ûçm@4U`A‰7LÁ.„QnÙ‡@3𖻘ÇãÁ.„NÜC,¥@3𖻘ÇãÁ.„NÜC,¥@3𖻘ÇãÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøG@¡·àÄ›¥ã@¡·á$Ý/@¡·àÄ›¥ã@¡·àuöý"@¡·àÄ›¥ã@¡·ãˆe”¯@¡·àÄ›¥ã@¡·ã× -=q@¡·àÄ›¥ã@¡·ß¤?åÉ@¡·àÄ›¥ã@¡·á‰7KÇ@¤Ú»dZ¬@¤Ú»"Ðå`@¤Ú»dZ¬@¤Ú¹rGE9@¤Ú»dZ¬@¤Ú³g ù@¤Ú»dZ¬@¤Ú¸ºÇÊ@¤Ú»dZ¬@¤Ú»~ÿ—@¤Ú»dZ¬@¤Ú¼(õÂ@4wâ‚@·€@4x}¿H€@2Š^5?|í@2‰Î_oÒ@1—ï²-@1˜Çâ‚@¸@1…œàu÷@1‡´¢3œ@1…œàu÷@1†ÕϪ͞@1…œàu÷@1†ö”Fs‚?|öOÿÝ?‘€5{ºÎ#?’5 µ¿$„?ŒªèkÜ?‘ …É¿¼?“DŽèw–?|öOÿÝ?’eCŒO?‘S1Êz?ÿº (€?=~þžè?6€k÷pŽ@¡·áylzÔ@¤Ú»‡ç–?\¹î:ŽO³?VCQ0‘?Ä¢…÷tš?·»j°Ã™@ŸfgC”@H@¡¼1&éy@¡¼9XbN@¡¼1&éy@¡¼ -¦L/ƒ@¡¼1&éy@¡¼t¼j@¡¼1&éy@¡¼}Vlô@¡¼1&éy@¡¼ ù l@¡¼1&éy@¡¼s×Ü@ «ÍOß;d@ «Þ¸Që…@ «ÍOß;d@ «ÈÎp:û@ «ÍOß;d@ «Í:’£@ «ÍOß;d@ «ÏiDg9@ «ÍOß;d@ «Î±Ä2Ê@ «ÍOß;d@ «Í«ŸU›@8Ñ|ÚQ@8ÑTÉ…ðo@2J^5?|í@2L<žì¿±@1K"Ðå`B@1O²-V@0ò䎊r@0‚@·€4n@0ò䎊r@0‚ÊW§†Â@0ò䎊r@0ÿ.Hè¨?Æ‹ºGgÙª?š¾ßÍZ?’måGSžq?Œ‚èõЊ?’êÔÒ?âé¨ë7F?¼ºZ¡ˆ\?“?xr¢I?–ôÃj¢T?‘’â·ýÅ?‘áÙž­ò?wN —z_?Â°ÅÆmÅ?ÉGãA­ø?‡Ü̈- -?…J]j?ˆ0&YÊEd?‡ã ËÄž@@@@@&@?ð?ð?ð?ð?ð?ð¿pQÝfÀ¿R{¡ÙKÀ?VêR—?HäÒMr»h@¡¼ -OVT~@ «ÎÞWO?f`tÁ‘ã?XßF³ x?Çä}„j?¨S¤ýKŸ?@ŸrƜ׎t@I@§Ò•%@§Ò`A‰7@§Ò•%@§Ò¡ÊÀ„@§Ò•%@§Ò›¥ãT@§Ò•%@§Ò¸Qì@§Ò•%@§ÒÐå`B@§Ò•%@§Ò¸Qì@¯G®zá@¯Hr° Å@¯G®zá@¯I7KÆ©@¯G®zá@¯IùrG@¯G®zá@¯G®zá@¯G®zá@¯H´9X@¯G®zá@¯G+ J@6Y*0U2b@6UÉã½@2)‡+ @2)Çy¦µ @1Ct¼j~ú@1CüPH@0&YJôðØ@0'¯·é@0&YJôðØ@0&ÏAòØ@0&YJôðØ@0&€IQƒ?|öOÿÝ?ß‹’bÏ?’d3ð"7?‹¦ ŸYÔ?éDEâ©×?±ŒR°?žˆ2}?’?Á• ñ:?“v@á¿bî?ni"Í š?Ë=ÔU{,?H, -r_?’%Crì?Œ¬Çëý ?ƒ/‹ÍY}’?‚ãaÎúvh?ˆA0û)n?‡?®\Âä@@@@@@?ð?ð?ð?ð?ð?ð¿/}‡d@¿%VÎ@?/T N÷§?#XÓé‘P@§ÒÑ' @¯H.BÍ?OÈ ïsg¼?Chß–$Ö«?ª…•Ì0¬?ð"YcKd@ŸgΦ]¯@J@¦@W -=p¤@¦@W -=p¤@¦@W -=p¤@¦@WÎÙ‡@¦@W -=p¤@¦@VÕϪÎ@¦@W -=p¤@¦@XDЩ@¦@W -=p¤@¦@V“u@¦@W -=p¤@¦@VR½<6@¡‡“u@¡‡E¡ÊÂ@¡‡“u@¡‡lô!@¡‡“u@¡‡éá°Š@¡‡“u@¡‡Ov`@¡‡“u@¡‡ðØDÏ@¡‡“u@¡‡Ž!–T@2ò䎊@2&€IR@0=‘hr° @0=!ÿ.Hè@0Wï²-@0Vý!ÿ.I@.¨Û‹¬q @.¨Ë’:*@.¨Û‹¬q @.©ûçl‹D@.¨Û‹¬q @.©ûçl‹D?É^žQ5P‚?ß‹’bÏ?‘(¥¿á?‹ª½¨ª8v?‘,IÝ Áé?È2I/?ÐbV‡,?’uß¿çÒ?¹º–Èj?3.Ylî?øóéM Ÿ?b¶­-Óx?€g‹)ØêÀ?ŒË›Í‡Çq?ƒ/‹ÍY}’?‚ð'ã:ÂÝ?†©b/bJö?†ùadô|@@@@@,@*?ð?ð?ð?ð?ð?ð¿MÑ€T¿2ó÷J?8æÔ’ª‚/?3W<(½f@¦@W‹‹F@¡‡–kÙ¦?HU+Î?BˆÙ>+F?Œ³³Ø©ý?|ŠÅÂ¥@ŸsWËÞÄ@K@¦ÑõÂ\)Á.„€@¦ÑõÂ\)@¦ÑùXbM@¦ÑõÂ\)@¦ÒÖ8†Y@¦ÑõÂ\)@¦Ñø†YJõ@¦ÑõÂ\)@¦Ñø7´¢4@¦ÑõÂ\)@¦ÑýæšÔ-@¥j33333Á.„€@¥j33333@¥j;dZ¬@¥j33333@¥j,~($ @¥j33333@¥j=<63@¥j33333@¥j=—ö+k@¥j33333@¥j=p£× @9šÔ,<ŸÁ.„>¤µÜÆ@4&‡+ J@41uŽ!–R@3b-V@3f®}Vlô@3 ù kº@3 *0U2b@3 ù kº@3 £n.²@3 ù kº@3Ov_Ù@8J¨?™«» ¿?™ïfô?‘S;²~?•òJj~u?™S:Ъ;5@8J¨?œs°XX=`?¢n®Ú| X?’ü#q\-v?–Y:ŸèJ?–˜k|‹ ;@8p÷?›Õ¼ÉUÓ›?’Z†Ažj?Š>ÚµÕ?‘˜M\ÿŠ?´tï-Ïw@@@@(@*?ð?ð?ð?ð?ðøøøøøøøøøøøøL@££‰7KÇÁ.„€@££‰7KÇÁ.„€@££‰7KÇÁ.„€@££‰7KÇÁ.„€@££‰7KÇÁ.„€@££‰7KÇÁ.„€@šO;dZ¬Á.„€@šO;dZ¬Á.„€@šO;dZ¬Á.„€@šO;dZ¬Á.„€@šO;dZ¬Á.„€@šO;dZ¬Á.„€@6¹Œ~($Á.„>¤µÜÆ@2Ùº^5?}Á.„M‰ûçm@2RÐå`A‰Á.„QnÙ‡@2J0U2a|Á.„NÜC,¥@2J0U2a|Á.„NÜC,¥@2J0U2a|Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 ØøøøøøøøøøøøøM@¥Y“u@¥YÈ´9W@¥Y“u@¥YeýŠÛ@¥Y“u@¥Y -=p¤@¥Y“u@¥Y™™™š@¥Y“u@¥Y*™0½@¥Y“u@¥Y“t¼j@©‘»dZ¬@©‘¼¬1'@©‘»dZ¬@©‘¼j~ùÛ@©‘»dZ¬@©‘¸†YJô@©‘»dZ¬@©‘¸­«ŸV@©‘»dZ¬@©‘¸_ö•@©‘»dZ¬@©‘²þÅm]@6 ]cˆe”@6 C•%@2Lí‘hr°@2Lô!-w@1Ͳ-V@1Ì(õÂ\@1G ù kº@1D¼j~ùÛ@1G ù kº@1?åÉä@1G ù kº@1@Ñ·Xâ?‡YÍ_?äm°û0Ž?’>¯\¾¦?Œ'õ‚$5ñ?’»–j˜ú?“¢¾_ÂÜ?|öOÿÝ?’ ,øÕC©?Å)Ì_“?@§[*^?‘¦‘=W?˜«ŒˆÀS)?ƒ/‹ÍY}‘?Œþ%å_D?…ÑTë0Ô?ƒË´ÔC¶¼?ˆ©{2¡Î?ˆ©{2¡Î@@@@@"@*?ð?ð?ð?ð?ð?ð?<©è訿X}°´d?40î ¹ø?4áB€Ã@¥Y$ˆ@©‘¹NÕ?RÛò‹”G*?UA¿ f¦¯?© ʼß=p?±'»Š9@ŸgÆOOK@N@«}“t¼j@«}“÷ÎÙ@«}“t¼j@«}™Û"Ðå@«}“t¼j@«}šCþ\‘@«}“t¼j@«}™Àëíû@«}“t¼j@«}“üPI@«}“t¼j@«}“ àÞÓ@”‰7Kƨ@”‰7Kƨ@”‰7Kƨ@”‹C•@”‰7Kƨ@”ŠŒL˜@”‰7Kƨ@”ŠôðØD@”‰7Kƨ@”qu@”‰7Kƨ@”Š Þ@4h†YJôñ@4iäêøµ,@1W+ Iº@1V -¦L/ƒ@06§ï²-@05µsê³h@/½Vlô"@/¶ý!ÿ.I@/½Vlô"@/±Î_p@/½Vlô"@/´SŽóMk?|¬h2:“?%¼ÇÆÃ±?‘šÕU#?5~pY5?‘à2F0µÔ?‘Ò\.:Ø@?|¬h2:“?’®> -fuæ?ŽËÜ¿€?’GÎ>GÅ?’W;„zY?‘êey°úà?„Üü«˜Þ ?R©i»èi?‚ÂÌ]æ?„2ÌôÏ?‡Ä­‹›Ü?IÏáå$@@@@@,@(?ð?ð?ð?ð?ð?ð?&™Î¡ ?/À¤j°?K<Ê0?$€”áU°@«}”Ï[¢@”ŠT<Î?j¯nv»¿ã?D‰‚õ,D?âc€^ä?”d¤µÜÆ@3Œí‘hr°@3Œq ²•ê@3M²-V@3NHè§æ@2…œàu÷@2„g8}À@2…œàu÷@2‰xÔýó¶@2…œàu÷@2Šu%F -@8J¨?‘+ùÔ!½Š?“1‘´¹V?Ž˜ùš®E`?•’ØŒi³?‘m×e\»@8J¨?’?Á• ñ:?»Þ‹"è?ni"Í š?”îC¯·æo?’"(îL@8p÷?àQdËЈ?„‘Za¹Q?ƒ!Ë *(?‰]³ß’Ý?†‡+œC@@@@@?ð?ð?ð?ð?ðøøøøøøøøøøøøP@¬•÷ÎÙ‡@¬•÷òuË@¬•÷ÎÙ‡@¬•øŸ&Òâ@¬•÷ÎÙ‡@¬•ùUär@¬•÷ÎÙ‡@¬•ù+™°0@¬•÷ÎÙ‡@¬•÷. ®…@¬•÷ÎÙ‡@¬•÷¸eX@˜¸@ƒn˜@˜¸?IÇ'Ð@˜¸@ƒn˜@˜¸Cðk¦Ü@˜¸@ƒn˜@˜¸JLG™è@˜¸@ƒn˜@˜¸F{³@˜¸@ƒn˜@˜¸GÈÄè³@˜¸@ƒn˜@˜¸Gë÷´è@6`ØDЩ@6`gògÐn@1¸r° Äœ@1¹hì•Nv@1lj~ùÛ#@1n~ÉÐ}¤@0¡:’£S@0¢d ï¤@0¡:’£S@0¡£v{)¹@0¡:’£S@0¡å6îô?…ðE[i)?Ôpóò?‘Sûæ aÝ?Œx0s©4Û?‘9DZ¥pÌ?Ö(#ÿ~?e™”XWø?’awÌuE?»óÎ] æ?Yþ.©§`?‘Kh?§¢?–§9Ä„?ˆÒ,ôœŒ¼?Œ×¯Çr&c?ƒ[´§…/l?ƒ"’º5Mf?†Ì’=Æý?†¸?Z€Ã&9@?RàÌs)Œ?Â~½ýéò?¯ átΨ9@Ÿf pœÛ˜@R@§YxQë…@§YwÎÙ‡@§YxQë…@§Y{W>«6@§YxQë…@§Yyb¶®@§YxQë…@§Yz–¼@§YxQë…@§Ys©*0U@§YxQë…@§YtzáG®@¦u@ƒn˜@¦uA$Ý/@¦u@ƒn˜@¦u?Ë’:)@¦u@ƒn˜@¦u?ÿÿÿÿ@¦u@ƒn˜@¦u@uöý"@¦u@ƒn˜@¦u?¤?åÉ@¦u@ƒn˜@¦u>ƒä%¯@5IÎ_oÒ@5J0U2a|@1î5?|í‘@1êOv`@1gKƧïž@1_O „M@0«xFÜ^@0¨ Ô•*@0«xFÜ^@0© 'RTa@0«xFÜ^@0ªdÂø7µ?}Ñ¿ž,?‘@@Nßo9?˜zjÊ©Øi?Ž˜ùš®E`?‘'¬Å™» ?‘}7ˆ.Ð?|¬Çëý ?–9}»Ö=?›ê‰¬>V?–sZ -™ø?’W;„zY?ÝÒ¥X[?‚n—8‹8?3I¶#i?†ÛdoŠ™?„ mŠmsi?ˆ”Tj«›ª?‰G±±ZÎ@@@@@*@*?ð?ð?ð?ð?ð?ð¿Cmñ‚¨¿<²Þh?CóòþPY?ɹ-Ëý@§YvÙH‘ @¦u@àEà?bü¶w;Ã?6­D‡ió?Ò<špùÕz?w‰’O™È@Ÿf¢‰ÕÕ@S@£FŸ;dZ@£F£•%@£FŸ;dZ@£F uöý#@£FŸ;dZ@£F»Í5¨X@£FŸ;dZ@£FŸoÒô@£FŸ;dZ@£Fš6âë@£FŸ;dZ@£F“g ù @¥ûäÝ/ @¥ûíÒñ©ü@¥ûäÝ/ @¥û­BÃÉð@¥ûäÝ/ @¥ûÿU›=@¥ûäÝ/ @¥ûÒòä@¥ûäÝ/ @¥ûË Iº@¥ûäÝ/ @¥ûÍ\ú¬Ú@8*0U2b@8_Ø­« @3¡hr° Ä@3Ä,<žì¿@2ô“t¼j@3 ¿HË’@2\ÚQÎ@2g8}¿I@2\ÚQÎ@2|í‘hs@2\ÚQÎ@2wRT`ªe? Eˆ‡ðó‹?µêÙš?8L?³>ðÐG‡?™k$®tO?²i=Í—Ž?µ5ú`?˜ž^ƒÿ*ˆ?¹°ã±÷÷T?µ¸."û®E?°Fê¡J?¾8.Ä>?Ó+ÐDoX?”XÅÏŒ? Ûƒ¶30î?²_K. ‹?°p)Õ?·ˆ#j?¿H>”w,@@@@@,@,?ð?ð?ð?ð?ð?ð¿bñnê¿‚0tÍi?HºÊ!ÙÙ?T(£¯Gª@£F 3ŒKf@¥ûÝh/¸é?b;îªÚ±Õ?qƒÃÛbÈ?‹„y¥F?£rÝÎÌxr@Ÿd&Chš@T@­Ê -Àƒo@­Ê ÌÌÌÎ@­Ê -Àƒo@­Ê Ƨï@­Ê -Àƒo@­Ê “ àß@­Ê -Àƒo@­Ê -dÂø7@­Ê -Àƒo@­Ê ˜_ø@­Ê -Àƒo@­Ê  'RT@ªÔ…¡ÊÀƒ@ªÔˆõÂ[@ªÔ…¡ÊÀƒ@ªÔ„›¥ãU@ªÔ…¡ÊÀƒ@ªÔ†L/ƒ{@ªÔ…¡ÊÀƒ@ªÔ‚ø7´¢@ªÔ…¡ÊÀƒ@ªÔ‰ÞÑ@ªÔ…¡ÊÀƒ@ªÔ„Щ*@8(†YJôñ@8)™™™™š@3¦‡+ J@3¦ð¸º@34“t¼j@34¼j~ùÛ@2®_oÒ @2¯ùrGE9@2®_oÒ @2®vÈ´9X@2®_oÒ @2®($ x?€‚ñêã ?½Ë9ØŠ§?”âLñ¹D?Hžyq?’o?P´À?”‹ÂØ*þ›?гá‡}?“«ö„@×®?”p¶I”“ž?‘~¬Àm?ó?“‚Û£0Î¥?’?;Áƒè?±A\ÿŸ#?¨ ‰‹U)?‰6~„æAÕ?„†YÊ’È?‹¼`’ i2?¢—„¯l@@@@@,@*?ð?ð?ð?ð?ð?ð¿>ÍGJ¿E¤p°?3^tÒÕô?J. H@­Ê ˜Kø@ªÔ†±Ô+ô?TT>x$ˆ­?i™7xþ“?­Îð…~–?ÒÏšš«#O@ŸhÿNõ1ß@U@®BhõÂ\@®Be¸Qì@®BhõÂ\@®Bmç®d7@®BhõÂ\@®Bƒï‹œñ@®BhõÂ\@®BfÌÓo@®BhõÂ\@®BƒBbÈ@®BhõÂ\@®B~20x@•`Á‰7KÇ@•`Õ$@•`Á‰7KÇ@•a×+¹Ô@•`Á‰7KÇ@•`ôݬ\y@•`Á‰7KÇ@•`ßOùŠ‹@•`Á‰7KÇ@•`ò€Ö_µ@•`Á‰7KÇ@•a#B@6ÿ–»˜È@6þ!ºËYN@4c÷ÎÙ‡@4;Wž1ÃÓ@3Ÿ²-V@3}2‘n‰@3ò䎊r@3d@’–º@3ò䎊r@3R^éWe3@3ò䎊r@3O5åI™ð?ŽÕQp Î?¦naɹ&?©Ò ‘A?¤€ÁäõE/?¬hÔ­ÓÔù?¬âç ?ŽÕQp Î?§SŽFÛ«?¦YxÌ¿Ó?§Ë¦3áØ?±’oÎ?±µ”×Ã?3ˆ»ðô?” Ôf¨™?•ˆ!Íwà?Œ.u+•?’Ôb©øø1?—W~|@@&@,@,@:@;?ð?ð?ð?ð?ð?ð?t¬Ã?zrÕ©Ô?`1ͺNŒ?G±ª©ïÜ@®Bjã‡\@•`Ò¹âU?uLßd¹Š?^!‹n¼?ÝÃú6f?¦yt‚§@Ÿ_+þ? @V@­záG®@­záG®@­záG®@­¨Xy>@­záG®@­•*™@­záG®@­¨Xy>@­záG®@­Fs×@­záG®@­SŽóM@¥™‘hr°!@¥™‘&éxÕ@¥™‘hr°!@¥™‘Ä2ÊX@¥™‘hr°!@¥™‘N;Í6@¥™‘hr°!@¥™‘hr°!@¥™‘hr°!@¥™’-V@¥™‘hr°!@¥™’×s@3`ØDЩ@3`Ä›¥ãT@0 -^5?|î@0 -’£S&@/:¬1'@/:kP°ò|@. -#9Àëî@. -W§†Â'@. -#9Àëî@. -Ú¹õY´@. -#9Àëî@. -™0¾ î?€‚ñêã ?ï1ïºÅ?‘4!Ÿ•p’?‹¬àÌ’Ç?‘õbÐ\?È2I/?|öOÿÝ?’,ö´´Ï#?ˆ9²0?-õI¸`K?â2„&ÿh?Z˜°,aÝ?‚uÞ@>N ?Œ».êxóÚ?‚§W®ê ?ƒ†+ Å?†£îž«î?†žóB» “@@@@@*@,?ð?ð?ð?ð?ð?ð>ú€]?*¡c0?'li‘jÅo?PxIå}Ü@­­1bØ@¥™‘•Ï?G8ŒHé??)´½?š¯ª «?_求üÊÂ@Ÿg‚æúž@W@§2Ƨï²@§2Éûçl‹@§2Ƨï²@§2½/Ÿ¾@§2Ƨï²@§2ÊdÂø8@§2Ƨï²@§2Ç ù l@§2Ƨï²@§2¥S&Ã@§2Ƨï²@§2©“ àß@¦€åãS÷Ï@¦€¨1&éy@¦€åãS÷Ï@¦€ì/ƒ{J@¦€åãS÷Ï@¦€Î±Ä2Ë@¦€åãS÷Ï@¦€Þ í(Ž@¦€åãS÷Ï@¦€óê³g¡@¦€åãS÷Ï@¦€è§æ›@7–»˜È@7i k¹Œ~@3Ï|í‘hr@3Ú ÞÒ@34“t¼j@3UãS÷ÎÙ@2õµsê³h@3t¼j~ú@2õµsê³h@2¿Òòä@2õµsê³h@2¾vÈ´9X?Ž=fA:?ŸoÝ ÷6}?©ù$q‘îË?–cÙa¢+r?¶dtÀXü±?·=ÎÊ?ÉÿÛŠ›Ì?žù=Beõ?¨„¸olÚÊ?V)0ÁÔ?Àq ]?ĵP§¶û?ÉkÛVä ÷?@`WÓå?¢ó6õ··?™òvÈc?£Ð °?¦ÿc°õ@@@@@*@(?ð?ð?ð?ð?ð?ð¿g¨ÁGÎ?ЧN/÷@?e*üˆEø?tâë ´½â@§2£SÁ4@¦€ß¨hn?‡ù3˜³}X?xiÄŸ¥ý?å š&Iºb?·ºêÞICb@ŸkúÎÉö¦@X@¥ñÌÌÌÌÍ@¥ñÍ4–l@¥ñÌÌÌÌÍ@¥ñaohÛ@¥ñÌÌÌÌÍ@¥ò\Æ?@¥ñÌÌÌÌÍ@¥òʦL/ƒ@¥ñÌÌÌÌÍ@¥òdêJŒ@¥ñÌÌÌÌÍ@¥òféxÔÿ@›l˜“t¼j@›l–‹¬Ÿ@›l˜“t¼j@›e~BZîc@›l˜“t¼j@›d†YJôñ@›l˜“t¼j@›c‰ 'RS@›l˜“t¼j@›dIã½@›l˜“t¼j@›fhõÂ]@7‘|ÚQ@7â³ø­t@4©‡+ @3•”¯O „@3ù7KƧð@3œàuöý@3zÔ,<ží@2;dZ¬@3zÔ,<ží@2ž!–R½<@3zÔ,<ží@2¶$Ý/ ?¨Sp*?Ý\Zõ¦E‡?Ø3ì—àÍ?Á•- -@™?Ê›÷£8?–ËÒÙI°?|¬Æ Væ?è£Ô°ì?épVY^ý?é#Lp~?êx;Ãq -?ϧèr«ì¯? ]Ö~Ò"L?¿\TÉ%“›?§˜Áuf·?ºİiýö?¼ µ:C?³ü«í(@@@@@,@?ð?ð?ð?ð?ð?ð? !‹fd ¿Æ#øó"d?pϳE?¢بu+@¥ñÖw=~Ö@›l4ÌAæ?Œ †ÉX?–Fœ 71@Ê#ø2@XÐ,¡ó@ŸX)‚Wãö@Y@«%n—P@«%° Ä@«%n—P@«%ö5¥É@«%n—P@«% /n @«%n—P@«%¯OÆ¥@«%n—P@«%æ9_v@«%n—P@«%hÖZÉ@›ã“t¼@›ã“t¼@›ã“t¼@›ã´>@›ã“t¼@›ã–P“Å@›ã“t¼@›ã #+@›ã“t¼@›ã¢„—@›ã“t¼@›ãB¸@0ãg ù l@0ãg ù l@+Üj~ùÛ"@+ÜlM˶b@+ÊÀƒo@+©2“Ñ@)Âu%F -§@)ÂbÿF{“@)Âu%F -§@)Â4H)@)Âu%F -§@)Âd‘Ÿõû?É^¨¯Âj?¾¡5¼>?‘J½å?‹¬Ó¯c[?åtxâÕ^?±Ý_4á?ÐbMÝn½?’ÎÇ(tm?~J€ßÂÂ?/—ùœ:?Ë= yκ?J› öWˆ?€bwÄ' g?Œ¬­z=`=?‚pDøïRh?‚ã?Ã@j?†ˆŠ_cd?†ˆ¾®¿‘º@@ @$@&@0@0?ð?ð?ð?ð?ð?ð¿Q°š;¿° P0?@&ð?3 E¸ß@«%.¸pÐ@›ãü…Š€?Nóx>¹?B±~I˜Ã?——È–p?|‹•GÙð@Ÿs JlÞ@Z@¥ ó¶E¡Ë@¥ úáG®@¥ ó¶E¡Ë@¥ ölô!@¥ ó¶E¡Ë@¥ ôêJ@¥ ó¶E¡Ë@¥ óœ¾à@¥ ó¶E¡Ë@¥ ó¶E¡Ë@¥ ó¶E¡Ë@¥ óŽóMj@¢mž¸Që…@¢m£n—@¢mž¸Që…@¢m/Ÿ¾@¢mž¸Që…@¢mš’£S@¢mž¸Që…@¢mœ„µÜÆ@¢mž¸Që…@¢mž5?|î@¢mž¸Që…@¢mœ‘ÑN<@7rÃÉîËû@7n!–R½<@18r° Äœ@16ð¸º@0gKƧïž@0eýŠÚ¹õ@/ -#9Àëî@/Ë’:*@/ -#9Àëî@/ö”Fs@/ -#9Àëî@/l‹C•?…ÅBðrç?äm°û0Ž?‘ñê&ètä?‹ÝÉ!ë#?‘; ÷^?‘<ƒÜ_õ?”¼íÒh??’#maЀ?‘†£„Â?ø,~[´?‘+ùÔ!½‹?‘ÔÄ÷Õ?¢tñÓu?Žƒä%®æ2?„m~Z_s,?…<ò N ?‡æê7²zE?‡gϵ’õ@@@@@(@*?ð?ð?ð?ð?ð?ð¿[ÆõŠ,¿RÜ.Ü?@Ï›Pƒ?C)þ€åÉ@¥ õtXw@¢mž| y8?`7‰µQ ý?`jÏuB}?ÂöT™¹-?º{=ä¦@Ÿl$NßM@[@¢™n—Oß@¢™mÒñ©ü@¢™n—Oß@¢™nÞÜnú@¢™n—Oß@¢™q³ÓÃ>@¢™n—Oß@¢™o¬ÕË@¢™n—Oß@¢™j cr[@¢™n—Oß@¢™lJSö%@—RH´9X@—RE¡ÊÀƒ@—RH´9X@—RRf{@—RH´9X@—Rd°‡Ï@—RH´9X@—R\¾Ù…+@—RH´9X@—R\Â:q@4Q|ÚQ@4N¸?•´ò@0ã÷ÎÙ‡@0ãCkˆ@0±‰7Kƨ@0²µ‡@/QÑN;Í6@/T_Ù§J@/QÑN;Í6@/K‹í`E@/QÑN;Í6@/L ÀÕj/?}õ¬#„­?¢3²…ß?‘FÐUï.Á?ŽzMŠ•´¹?‘Ž\d²?‘\Ãò¦(?„`™ˆ/.~?’M´\]È?XÐè.?’¶?hÜÆ?‘ŒYF·"ô?˜í@¡ØÇ?#ÓA™þÜ?„¤±ÀÖ?Žõ:Ûë>æ?ˆ9D7?ˆ -¢÷͉{?ˆñá+¬¿r@@&@@&@8@7?ð?ð?ð?ð?ð?ð¿8ž£’À?fJ¶ b€?@4ç&rYT?Q„Þdi@¢™m%âÍ@—RTS0i#?`ËN'à»Î?q˜´§JýU?Ê)²Bdκ?çDŠ©‹X@ŸhB§¯™@\@¯¡úáG®@¯¡ûdZ¬@¯¡úáG®Á.„€@¯¡úáG®Á.„€@¯¡úáG®Á.„€@¯¡úáG®Á.„€@¯¡úáG®Á.„€@¯F“t¼j@¯F“t¼j@¯F“t¼jÁ.„€@¯F“t¼jÁ.„€@¯F“t¼jÁ.„€@¯F“t¼jÁ.„€@¯F“t¼jÁ.„€@1šÔ,<Ÿ@1µ 'º@/.V“tÁ.„M‰ûçm@/&éxÔþÁ.„QnÙ‡@.zÇË)_Á.„NÜC,¥@.zÇË)_Á.„NÜC,¥@.zÇË)_Á.„NÜC,¥?É^òÀXæN@8#˜@8¾:@8 >+@8Iç@8Ù?ÐbMçê_x@8Î÷@8i§@8Å@8S@8û—?€j|î–éë@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø]@­JÒñ©ûç@­Jê=p£Ø@­JÒñ©ûçÁ.„€@­JÒñ©ûçÁ.„€@­JÒñ©ûçÁ.„€@­JÒñ©ûçÁ.„€@­JÒñ©ûçÁ.„€@¬7®zá@¬73332@¬7®záÁ.„€@¬7®záÁ.„€@¬7®záÁ.„€@¬7®záÁ.„€@¬7®záÁ.„€@7ëµsê´@7ÀÞÒˆÎp@4—+ IºÁ.„M‰ûçm@4gKƧïžÁ.„QnÙ‡@3¦YJôðØÁ.„NÜC,¥@3¦YJôðØÁ.„NÜC,¥@3¦YJôðØÁ.„NÜC,¥?„F/·ÿP5@8#˜@8¾:@8 >+@8Iç@8Ù?„F/·ÿP5@8Î÷@8i§@8Å@8S@8û—?Œ*Ñ¿°Ö@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø^@§ò:^5?}@§ò:^5?}@§ò:^5?}@§ò;dZ¬@§ò:^5?}@§ò;/ìVÖ@§ò:^5?}@§ò;šu@§ò:^5?}@§ò9JôðØ@§ò:^5?}@§ò9‡+@A¥ãSø@A§/ŒÓ@A¥ãSø@AQÎ@A¥ãSø@A¹õY´@A¥ãSø@AquŽ#@A¥ãSø@A¬1@A¥ãSø@AŸ¾vÉ@.àhÛ‹¬r@.à[À6â@,MV“@,M:’£@,&éxÔþ@,‰ 'RU@+kjçÕfÐ@+k6z—@+kjçÕfÐ@+k]ÌcñB@+kjçÕfÐ@+k6z–?É^ž6õP?Ì&ÏøHÃ?‘"žæÆó¡?‹ª½¨ª8v?ôê÷º»â?ºª$Ð?ÐbMçµ7§?’ -‰¸Ì?ˆ9²0?6) }’ë?Ö§­îQD?Uÿyu”#?€bMÔŠ»?Œ°¶.Ä+Æ?‚yî8Á$?‚æÊ¬vã?†½ª»—?†’Õaì+’@@@@@*@(?ð?ð?ð?ð?ð?ð¿L¤×t¿)OÂT?-=¿6õ?#e×ÝÖ8@§ò9ïWSØ@AÉLEN?<"$Wf Î?2[€eêÎ?snY·¥Ì?]‚ßÙý½½@ŸsƒÕ„l@_@¢Pj~ùÛ#@¢Pi­BÃÊ@¢Pj~ùÛ#@¢Phn¢Ó@¢Pj~ùÛ#@¢Pc{C¤·@¢Pj~ùÛ#@¢P`€RÐv@¢Pj~ùÛ#@¢P_â×Õ@¢Pj~ùÛ#@¢P_x!@—2["Ðå`@—2Z¬1@—2["Ðå`@—2l†˜~¡@—2["Ðå`@—2i­|õ@—2["Ðå`@—2m0¢–@—2["Ðå`@—2jEJÅ@—2["Ðå`@—2~'Ž(/@42ÃÉîËû@41‰Õ@05ãS÷ÎÙ@0/ɾÓN@.ÉxÔýó¶@.½ÖZ¯Áà@.p‰ 'RU@._kç-8@.p‰ 'RU@.`3­÷-@.p‰ 'RU@.`USsË?|çµB &€?ےب@?’Š [ Ëð?‘W‚Åó/¸?‘¬š»-)?’dpÅ -”#?}@T˜ÁÎ¥?“ûS¯êx=?“Ô/à¤JF?‘öÜ~† À?‘¯¼ÃM?ç7_“º]?„9¨Ã¿ÅC?ŒÊñï 5™?‚ûÿû‚ÜK?ƒ\ÖàñX§?†ØøÅ¾¡?†¥<ï˜à@@$@*@(@9@6?ð?ð?ð?ð?ð?ð¿cÐ^¡¨?iÒaˆÏ?9c››6µ?DwMÈP±@¢PdSÈ—@—2gj¯n?YŒyø ’?dÔïžšïò?¾Çž³hÄT?Õ5MTü@Ÿf‹¹ÝìU@`@£·Á$Ý/@£·ÀA‰7L@£·Á$Ý/@£·¡@N¥@£·Á$Ý/@£·•Â\)@£·Á$Ý/@£·©Ô•+@£·Á$Ý/@£·…zxl!@£·Á$Ý/@£·\ú¬Ú@¢ÄyXbN@¢Ä{çl‹D@¢ÄyXbN@¢Ä´êJŒ@¢ÄyXbN@¢Äº¬1@¢ÄyXbN@¢Ä·KƧð@¢ÄyXbN@¢Ä¡‰7KÇ@¢ÄyXbN@¢Ä—ÎÙ‡@7eöý!ÿ.@7`A‰7KÆ@30Ä›¥ãT@3+²þÅm]@2Ÿ²-V@2“33333@2?ò䎊r@24Ö¡aäø@2?ò䎊r@2Ov_Ø®@2?ò䎊r@2!hr° Å? Eˆ‡ðó‹?¥ÒëÞñç?¯KúvBrq?žéQÁö£?ªxàôTl?±4tDÈ?¬å'[ V÷?¥ÜH‚޶S?¦¾DXLa?™ž×=§‘Ã?±ê®Ä6?§…[aÍ,?¤qb“³îÐ?”~ªd•?ŸÛð°|°?•ˆ°ùjõ?¤gTÐ?«Ã±Rõš@@@@@*@*?ð?ð?ð?ð?ð?𿇦4—N€?kØ6…ó?h-´$æ?…*:1ýj[@£·£>/‰X@¢Ä¨'Vt?…x š4V?œÃ,Ùk˜"?à€ ùÌØ«@)[±²?v@Ÿjì?‡L8õASÎ?Œ¸ðËb@@@@@*@,?ð?ð?ð?ð?ð?ð¿DJ->œ?9Rù?J¯õg€?,ü£¯µ¨@ª¬ÙM'Õº@¨‹µùj?iÎý­y -×?LT3ãQÌŒ?ÝþûÅæô;?¢…;Åö¾€@ŸeÎÕ·@@b@§Y‡+@§["Ðå`@§Y‡+@§Q&éxÕ@§Y‡+@§Zxl"h@§Y‡+@§T¼@§Y‡+@§`ªdÂù@§Y‡+@§`ù kº@®Ý¶E¡ÊÁ@®ÝŸ|í‘h@®Ý¶E¡ÊÁ@®Ý¸bMÓ@®Ý¶E¡ÊÁ@®Ý´•*™@®Ý¶E¡ÊÁ@®Ýºxl"h@®Ý¶E¡ÊÁ@®Ý°‰ 'S@®Ý¶E¡ÊÁ@®Ý° Ä›¦@8›¹Œ~($@8˜*™0¾@3ÜIº^5?@3Û"Ðå`A@3Z~ùÛ"Ñ@3b Iº^5@2¦YJôðØ@2¥ýŠÚ¹ö@2¦YJôðØ@2©Û"Ðå`@2¦YJôðØ@2ªÍžƒä&?©Ùƒ|ËI?Eˆ‡ðó‹?“u*y?ŽÝ¡uÒ(r?’°STðS?–®UÒ.?¶Ú·Œò¸›?“¶†ÿê¡?‘Ç€˜­r?™š®ØŽ?’W;„zY?’9ñ9¶ò8?¯k [þXœ?–ÞqëJ?? mÖ¿tE?Šc^î½)Ô?^²®':Ì?‰]³ß’Ý@@@@@@?ð?ð?ð?ð?ð?ð?pLÆUV€¿_Ë"¨?eIo ÷q?iL·›íÈÀ@§[e>üq@®Ý³YÓE?wø­x76£?zþª|èÊ?å¡éa"öô?âjõÔáþˆ@Ÿq¦ˆemÓ@c@®© Iº^5@®© ‹C•@®© Iº^5@®© 85Kõ@®© Iº^5@®© ìAÝ@®© Iº^5@®© ¸»€1@®© Iº^5@®© -–—Ç@®© Iº^5@®© -”xÈi@šJúáG®@šJûçl‹D@šJúáG®@šJþ,¡ç@šJúáG®@šJþ«6z@šJúáG®@šJý‹Ü!X@šJúáG®@šJþvHˆ@šJúáG®@šJþâÑ5@1ò䎊@1 Iº^6@-)7KƧï@-'¤2ýöð@+ØÔýó¶F@+×%Bв@*ÑÑN;Í6@*Ï´¯n<@*ÑÑN;Í6@*ÏâóäO@*ÑÑN;Í6@*ÏØ­«ŸV?É^¨¯Âj?ÅŠXãF?‘Y–(™?‹¬Ó¯c[?èíò=?¸Zw—?ÐbMÝn½?’òBlÂ9?~J€ßÂÂ?5e’Òåi?Òh‘›1?P·?sFÉ?€bMÕ]f?Œ®JE‘—O?‚r—Ge?‚å¬C>¥’?†‰~±.?†‰ýçïe@@(@&@&@4@3?ð?ð?ð?ð?ð?ð¿P¤6?3JQØ2?4 jå8'‚>üýòzg)@®© rí¶J@šJþ9G ?CF·Ä‡G1? -’–ú»¿??‚F)Ð;Â?øb8¹W@Ÿs|èlE@d@ª E¡ÊÀƒÁ.„€@ª E¡ÊÀƒ@ª M¸ºÇ@ª E¡ÊÀƒ@ª KjçÕh@ª E¡ÊÀƒ@ª G ù k@ª E¡ÊÀƒÁ.„€@ª E¡ÊÀƒ@ª HÎp:û@:Që…¸Á.„€@:Që…¸@:^¸Që…@:Që…¸@:Tã¼Ó[@:Që…¸@:dZ¬@:Që…¸Á.„€@:Që…¸@:Xâe-@904mÅÖ8Á.„>¤µÜÆ@3¦‡+ J@3µfÏAò@2È“t¼j@2ÑohÛŒ@2ý!ÿ.I@2#MjP@2ý!ÿ.IÁ.„NÜC,¥@2ý!ÿ.I@2Š Þ@8J¨?ž5JÜà ä?¥”Ïåª?ª©¹(4@8Iç?˜úiêÔÇ@8J¨?¡^VÖ‹? PÇ´âþ?¥swŽ)Ò@8S?”…®«øÄ*@8p÷?˜”Ò91Äa?¡è™è;?¡~l’VoŸ@8 Ø?¾Á{þÆ%@@@@*?ð?ð?ð?ðøøøøøøøøøøøøe@«£å`A‰7@«£âÐå`C@«£å`A‰7@«£âÃÉîÌ@«£å`A‰7@«£ÝæšÔ,@«£å`A‰7@«£å+ÓÃ`@«£å`A‰7@«£ÞÒˆÎp@«£å`A‰7@«£â3œ¾@¢û{Ñø~?•OÞúç*»?›°Í`]u?„E£R ÕY?Œ˜ˆTÙ8ª?qÂ' -Bœ@@@@@*@(?ð?ð?ð?ð?ð?ð¿R!ž?@?Y„¶A?UOœá¦µá?[dŽ×¬ò-@«£âîžÈ0@¢+@8Iç@8Ù?ŽÕQp Î@8Î÷@8i§@8Å@8S@8û—?‚’¤I å@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøg@ •çl‹C–@ •æéxÔþ@ •çl‹C–@ •ëœØr@ •çl‹C–@ •ìÙ°Oæ@ •çl‹C–@ •ê& -@ •çl‹C–@ •ãZT ‰@ •çl‹C–@ •áꡉ)@­DÛ"Ðå`@­DÚŸ¾vÉ@­DÛ"Ðå`@­Dàí‡-‘@­DÛ"Ðå`@­DÜ¿À™ï@­DÛ"Ðå`@­DÚÎþÿ©@­DÛ"Ðå`@­D×pfäÏ@­DÛ"Ðå`@­DÖ`I;Í@3ºqÞi­C@3ºzJHù@0 -^5?|î@0 )8‡@/IxÔýó¶@/OWÌût@-Âu%F -§@-Ä{4-ß@-Âu%F -§@-ÀŽŒv©@-Âu%F -§@-½âøƒÀ?}@T˜ÁÎ¥? ‡iÙƒ?‘­’¦,-?‹Üðî]\8?‘~ãG /Ã?ÿ*O˜ðö?|¬Çq—ô?’m3 -V—?‘üNadL?9É>ÿÝ+?‘Ÿ-§ðxH?|®¡}öÍ?‚pDøïRg?ç µE€?ƒÀam#êæ?ƒ­KÀ?‡ä>ô=á?†Â¿bçø@@"@(@"@6@1?ð?ð?ð?ð?ð?ð¿DíO|d¿HDh?Ix;L"Í–?2ªuñ—au@ •æ - p @­DÙ1ÕË?iA±êŸš?Rýf œÛ?àìA'Š)R?²yØßÉñ·@ŸfÞa?X@h@¯(S÷ÎÙ@¯(Y™™™›@¯(S÷ÎÙ@¯(P Ä›¦@¯(S÷ÎÙ@¯(E‡“ݘ@¯(S÷ÎÙ@¯(MBÃÉï@¯(S÷ÎÙ@¯(K¹Œ~(@¯(S÷ÎÙ@¯(OiDg7@¥» Ä›¥ã@¥»ºáG®@¥» Ä›¥ã@¥»¤Ý/ @¥» Ä›¥ã@¥»¦$Ý/@¥» Ä›¥ã@¥»¨è§ç@¥» Ä›¥ã@¥»§E8ï5@¥» Ä›¥ã@¥»¦s×Ü@8^Hè§æ@8VâëC,@3c÷ÎÙ‡@3b×sü@2´“t¼j@2¶»˜Çâ‚@1ó&Á½¥@1ñ$Ý/@1ó&Á½¥@1𖻘Çã@1ó&Á½¥@1ðÄ›¥ãT?€‚ñêã ?‘U «¼é¥?™_*®k?³ÍŒ™¡?“>û{Ñø~?“ d?¦Ï±úQm‡?•ÞèI1Æ@?•bZèS?’:u.ý ?’LÁŒÀ´a?“‚í?eBZ?…cü›Š×Õ?ª‚eûƒ+?¨€OìØ¯i?Š­®f¥?ˆ”Tj«›ª?‡´*žZ}Õ@@@@@(@,?ð?ð?ð?ð?ð?ð¿gà|P.¿hð4)€?NlƒzZŒ?WåCCèš@¯(O¤^uB@¥»©É×o?sC˜ š?m‚ÅGtý?ãbåÒ×Ê?̽óI?t@Ÿnë÷Ùµ5@i@£/— -=p¤Á.„€@£/— -=p¤@£/„­‹à@£/— -=p¤@£/ªÁ@£/— -=p¤@£/‡Ûí@£/— -=p¤@£/~\‘ÑN@£/— -=p¤@£/a²ÄO¹@—µ?|í‘Á.„€@—µ?|í‘@—§X)Ý:@—µ?|í‘@—•$V@—µ?|í‘@—ͺ¤@—µ?|í‘@—³¶E¡Ë@—µ?|í‘@—™Aâ@9*0U2bÁ.„>¤µÜÆ@45ãS÷ÎÙ@4OIøp8@3]V”@3^G¢‡µ©@3fYJôðØ@3‡²OÃøl@3fYJôðØ@3{=ÈK^@3fYJôðØ@3‰¼íÏÉ@8J¨?”§ŒkG Î?‘œvï8Å?¢„J®³k?±J¶‰jcJ?ªãGX%Õ•@8J¨?¡µ%3G·h?‘jyÅå ?¤vÕAŠ´¤µÜÆ@3@ Ä›¥ã@37+ Iº@2A‰7KÇ@2‚þÅm\û@2\ÚQÎ@24ohÜ@2\ÚQÎ@27ü¹#¢@2\ÚQÎ@25?|í‘i@8J¨? yÅ´­½?¤øË&“1*?¸£ï9£ÖÙ?²Â—0ŒIô?¦£@óiÖ@8J¨?”” -=¤µÜÆ@4¦‡+ JÁ.„M‰ûçm@3¾V“uÁ.„QnÙ‡@3 -0U2a|Á.„NÜC,¥@3 -0U2a|Á.„NÜC,¥@3 -0U2a|Á.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøøl@¥"k…¸R@¥"\‰•®@¥"k…¸RÁ.„€@¥"k…¸RÁ.„€@¥"k…¸RÁ.„€@¥"k…¸RÁ.„€@¥"k…¸RÁ.„€@”R£× -=q@”R¦ffff@”R£× -=qÁ.„€@”R£× -=qÁ.„€@”R£× -=qÁ.„€@”R£× -=qÁ.„€@”R£× -=qÁ.„€@8?–»˜È@8=‘hr° @5‡ÎÙ‡+Á.„M‰ûçm@5{Ƨï²Á.„QnÙ‡@4øDЩ*Á.„NÜC,¥@4øDЩ*Á.„NÜC,¥@4øDЩ*Á.„NÜC,¥?¥¢É@8#˜@8¾:@8 >+@8Iç@8Ù?¬Ó!æÀXW@8Î÷@8i§@8Å@8S@8û—?„“‘1zz@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøm@¨H§ï²@¨H®zá@¨H§ï²@¨Gÿ¥bù@¨H§ï²@¨HH,³T@¨H§ï²@¨GþW”2n@¨H§ï²@¨HÖ*ûJ@¨H§ï²@¨GùÔ$ð„@•Âçl‹C–@•ÂïärC@•Âçl‹C–@•ÃgV{/@•Âçl‹C–@•ÃÊCX@•Âçl‹C–@•ÃÃjyZ@•Âçl‹C–@•ÂâH-¨@•Âçl‹C–@•Ãd+LR@7‰Î_oÒ@7…²c  6@3=‘hr° @3: w$@2§KƧïž@2Ÿ{­@2mÅÖ8†@2 Æ÷b6@2mÅÖ8†@2Is¿(Û@2mÅÖ8†@1þGGO ¦?›´q”¸æ-?QD™¯P™?”®O–|½[?y:܆Á&?’ó8Ä„V?ø¨¥ãn^?ˆ5îå9WÐ?”/£ÆÀan?’v£…Ë›1?‘`%Ò-dE?“&iÊÛç?‘ª~úq_ª?‚…wßGÜÒ?•Ò=ßë?ƒªOí e?„– ê@Þ?‹?¥¢!?‘V]ÍÅÒ@@(@,@*@:@4?ð?ð?ð?ð?ð?ð¿^m¾¤?g½C&€?dÞÜ>!‹I?h9M @¨HPý&@•Âÿ@H®©?€¤)à?‰ÑŒï™s?õÚ°1Ô±!@†çùv¿ -@Ÿmiôj.ì@n@¬r>vÈ´9@¬r>vÈ´9@¬r>vÈ´9@¬r?HË’@¬r>vÈ´9@¬rAG®{@¬r>vÈ´9@¬r>ÿ—#@¬r>vÈ´9@¬r=Ùb·@¬r>vÈ´9@¬r9Û"Ðæ@®­‘hr°@®®—Oß@®­‘hr°@®²¼£@®­‘hr°@®¨r° Å@®­‘hr°@®°¾ í*@®­‘hr°@®¯\(õÃ@®­‘hr°@®¬¥zxk@7«µsê´@7¦Ü]cˆf@3‚° Ä›¦@3‚-V@3å`A‰7@3N¤¨ÁU@1s&Á½¥@1r£S&@1s&Á½¥@1rø7´¢4@1s&Á½¥@1sZ…‡“Þ?3ßa=„?‘" Á°–•?•Mq —¦?=]. ?’(æ„+Zk?Êëüâi{?‚á²Olºü?–÷-A?’ã0eʪv?‘M –=?’£ôùÎ8ï?‘¡ë Þf?º f -¦?‘S1Êz?þ‡ÿítº?%üížñ˜@­ƒÕ½Ú;Æ@”d3Û¬À? j£1* ?Cœa oä?D¯aû:áJ?„ŸêÑ7Š@Ÿkb|Kð@q@¨þ ÌÌÌÍ@¨ýû¥ãSø@¨þ ÌÌÌÍ@¨þªÍžƒ@¨þ ÌÌÌÍ@¨þ  'RT@¨þ ÌÌÌÍ@¨þ “ àß@¨þ ÌÌÌÍ@¨þ -=p£×@¨þ ÌÌÌÍ@¨ýüàuöü@©"MÒñª@©í‘hs@©"MÒñª@© -à @©"MÒñª@©!G®{@©"MÒñª@©64@©"MÒñª@©vÈ´9@©"MÒñª@©)­BÃÉ@8T xFÜ@8^šu@3Ô›¥ãSø@3Ô“t¼j@3"-V@3Ÿ¾vÉ@2Œ~($ @2“ àÞÓ@2Œ~($ @21&éy@2Œ~($ @2‡ü¹#¢?|öOÿÝ?–MSMÓ®¬?““¶”ÿµb?¨•Ù?’o?P´À?•iá¸OL™?‡YÍ_?˜s˜»ì•?’ÖsÄÖ?•GÝóuS—?’¯dL¶t?˜—àÌÛÆ;?©ÏT8¨L?¬HO?…™ï ufÞ?„•ˆG’Z¾?Š`½i=ÓØ?‹Ûx§Þ@@@@@(@(?ð?ð?ð?ð?ð?ð?co`Èø?V/ŽŠ?\`ÊöÅ·R?R,?EÀ -@¨þÀÀˆJ@©9)ÿµ?|ÅìÖÃD¾?qøéæ "¸@øÂ!$B?áO[Q)=Ò@Ÿgt0÷3@r@ªÚŸ¾vÉ@ªÛ¥ãSø@ªÚŸ¾vÉ@ªÛ¥ãSø@ªÚŸ¾vÉ@ªÜÚQ@ªÚŸ¾vÉ@ªÛ²þÅm@ªÚŸ¾vÉ@ªÚ)Çy§@ªÚŸ¾vÉ@ªÙÎ_p@¥¢TzáG®@¥¢U?|í‘@¥¢TzáG®@¥¢TðØDÐ@¥¢TzáG®@¥¢S÷ÎÙ@¥¢TzáG®@¥¢St¼j€@¥¢TzáG®@¥¢TmÅÖ9@¥¢TzáG®@¥¢TFsØ@52ÃÉîËû@53ŽóMj@0›¥ãSø@0tSŽóM@.ØÔýó¶F@.×ö+jçÖ@.oi@.ŽŠqÞj@.oi@.œàu÷@.oi@.µÜÆ??€‚ñêã ?Úþþ³?‘&Øç?‘?‹ÑqÔ@vÿ?éDEâ©×?ÛF»0?|öOÿÝ?’MœœN ?»Þ‹"è?ð{¥âdû?Ìp®eÔ¾?ˆ9²0?„›‹ÖO?ŒÂ§dß±?‚˜YªüÏF?ƒ*|š\/´?†¼Š˜L¥÷?†µ°jÆÃ@@@@@@,?ð?ð?ð?ð?ð?ð¿5þ=п0`*h?"ïW¶¢¿8?"Õï G¶e@ªÛ Ú½¥@¥¢T›n¥N?BÃ[ÎvaF?C}ªíX‰¦?‘gàg â?’츨s9@ŸgxÚ±B6@s@ ~•%@ ~#œ­@ ~•%@ }ÿw¯d@ ~•%@ ~ {3O@ ~•%@ ~QÊo‚@ ~•%@ }ôÂxóâ@ ~•%@ }ú ½¥È@®¢Ö“u@®¢ÖÈ´9W@®¢Ö“u@®¢Ñ“‹/@®¢Ö“u@®¢Ê£A‚@®¢Ö“u@®¢Ïž4¹@®¢Ö“u@®¢Û&ZWŸ@®¢Ö“u@®¢Ó¡}@7쿱[X@7»¬¢ÀZ@4n5?|í‘@4j-FT9è@3¢-V@3£0|Ÿåo@35µsê³h@32Õ)«‹ì@35µsê³h@32qQm°,@35µsê³h@30¹D²F?…ðE[i)?‘ Ùâ}Ù2°ú?”Ûàªj†?@#÷r)Û?’·Äš"Ö]?—¬ž†åÖ?„g¤´õÞ…?“ø£Ú<ž?”`‘±…£¾?„\oXe=?ºÕâ_?àãÇ ®@@"@&@"@,@.?ð?ð?ð?ð?ð?ð¿Vôú¿2snü?X9´­XL?UÚÛL)™@ }ýýy¦@®¢Õ}ãŠ?w+ ‘?uœ˜—õY[?òƒξQ’?Ç@Ÿh,Ó£õ@t@¯UÀ@¯U–È´9Y@¯UÀ@¯UÀA‰7M@¯UÀ@¯U͸ºÇ@¯UÀ@¯U³ àÞÓ@¯UÀ@¯UǓݗö@¯UÀ@¯UÄÂø7¶@§øp Ä›¦@§øp Ä›¦@§øp Ä›¦@§øT¢3œ@§øp Ä›¦@§øL˜_@§øp Ä›¦@§øn}Vlô@§øp Ä›¦@§øo „M@§øp Ä›¦@§øgE8ï5@7wâ‚@·€@71 ²•éâ@4|í‘hr@3ÿHË’:@3éÛ"Ðå`@3¿ „M;@3O „M@3GE8ï5@3O „M@3Îp:û~@3O „M@3 …¸Qì?·à¦_ëý? 5)ZS?¦ÛiÕüaÚ?ŽÝ¡uÒ(r?™uçT5Ï?šèïdË?¥Ìõ}êáþ?©CÍ`ß•Ï?±ÃÅÿÔg´?“ÅëJkÙ?šS³Šßs·?£sUEªk?  0G --?£Æ×q„nï?Ó ¾îóô?œ?§ê¸]&?—v‡ãÃ6œ?ž„ýŸÒ`Ø@@@@@*@*?ð?ð?ð?ð?ð?ð?ƒF´Ø€¿T]áE ?gffpa^?Q¹õ])- -@¯U¹Ÿ¬€@§øm¡âwè?wIÊÓ7¡?f™álRý^?ßU’MŽ ?µL`‚rº@ŸoL=˜T@u@¡<ØbMÓ@¡<×Oß;@¡<ØbMÓ@¡<Û"Ðå`@¡<ØbMÓ@¡<ÙrGE9@¡<ØbMÓ@¡<ÙÀëíú@¡<ØbMÓ@¡<×Á½¥@¡<ØbMÓ@¡<×eýŠÜ@­óE¸Qì@­óEãS÷Î@­óE¸Qì@­óD2ÊW§@­óE¸Qì@­óDtSŽô@­óE¸Qì@­óE`A‰7@­óE¸Qì@­óE¡ÊÀƒ@­óE¸Qì@­óEœàv@5µS&Á¾@5µ+ÓÃa@25ãS÷ÎÙ@25Â\(ö@0éÛ"Ðå`@0ê)Çy¦µ@0–ý!ÿ.I@0—y¦µ @0–ý!ÿ.I@0—†Â&€ž@0–ý!ÿ.I@0— ù kº?}Ñ¿ž,?jú‚<·™?‘&Øç?‘?‹Æ úJ-M?‘oNÅ’+?‘W×ý°A?„F/·ÿP5?’§ioŠ?§^ ÿo˜?K·‘d]?‘ÞIŸö?‘A_f;j?‚‹¡8*ùÿ?3ßa=„?„W;RT?ƒiñj6Â?‡?®\Âä?‡<û¡71@@@@@*@,?ð?ð?ð?ð?ð?ð? ±ëà¿!ÅÌa`?3£ƒ ¿? -­˜8”Yd@¡<Ø×&@­óELß5?TKÈʼØ?*ÂÓ°0†?³”Q®^a:?\@rãç4l@ŸhEgûkº@v@©|9Û"Ðå@©|:^5?}@©|9Û"Ðå@©|9XbM@©|9Û"Ðå@©|;quŽ!@©|9Û"Ðå@©|:^5?|@©|9Û"Ðå@©|8“t¼j@©|9Û"Ðå@©|8“t¼j@¡ÓŒÌÌÌÍ@¡ÓŒIº^5@¡ÓŒÌÌÌÍ@¡ÓŠ0U2`@¡ÓŒÌÌÌÍ@¡Ó‰ÞÒ@¡ÓŒÌÌÌÍ@¡Ó‡Ë)_@¡ÓŒÌÌÌÍ@¡ÓOß;e@¡ÓŒÌÌÌÍ@¡ÓŒ"h Õ@4Û¹Œ~($@4Û6z—@2+ Iº@2süPH@1éÛ"Ðå`@1êŒL˜_@1‡ ù kº@1ˆXy=Ù€@1‡ ù kº@1ˆË’:*@1‡ ù kº@1ˆ>BZîc?|¬Çëý ?Æ -×?“%HCâ=s?ŒArUã@?’ðä¼_?‘À?ÙÂ#’?|¬Çëý ?“‚Û£0Τ?“®ÂrVŽx?£û,Ɇ?’l{9ÙŽ?ó‹P=´?‚§W®ê ?R©i»èi?ƒ{¬ÉW?ƒ¼9XNÄu?ˆ©{2¡Î?‡v>ª¸ @@@@@,@*?ð?ð?ð?ð?ð?ð¿5’Ë ¿'ĶÐ?#·ºÙ -?E2ʤª2@©|9¿:ó©@¡Ó‹•dƒã?BÊ.vH½?eléÀÁü?’o±öæ?ÖÍaÂZÃ@ŸfŠ›ì @w@¯u Ä›¥ã@¯u£× -=r@¯u Ä›¥ã@¯uœ£n.@¯u Ä›¥ã@¯uŸö”E@¯u Ä›¥ã@¯u¢u%F @¯u Ä›¥ã@¯užÒˆÎp@¯u Ä›¥ã@¯užš@­Š‡+ J@­Š„Z¬@­Š‡+ J@­Š†Â&€@­Š‡+ J@­Š‚ÃÉîË@­Š‡+ J@­Š«ŸU›@­Š‡+ J@­Šz¹õY´@­Š‡+ J@­Š¾vÈ´@6wâ‚@·€@6zQÎ`@3ý‘hr° @3øŒç¯¸@3ÐA‰7KÇ@3ÆšÔ,<Ÿ@3zÔ,<ží@3g -=p£×@3zÔ,<ží@3sS&Â@3zÔ,<ží@3pÑ·Xâ?…ÅBðrç?•QÂ^ø™?Ÿ Y—ü"©?“zRÈUÄ?š<¨¸ÆÐ?™?‰¢Ù~?žˆ2}?”ºu(†¼¦?žsô`_7?¡Ð`HÇi?—÷Ë5D«ç?™J•Ø3ÈÖ?–uDJ‘`º?3ßa=„?’úz."?Œ(æQ?„å;m7.?ùDâΊ@@@@@(@*?ð?ð?ð?ð?ð?ð¿QÈì$¿SÚõ€?0°HÙ^›ý?T@j û@¯u¡ÁNr•@­Š‚’~§?PÏüã?t¸Ly¤y?š€e–^?åRJª Q-@Ÿf¹ˆaT@x@¤6º^5?}@¤6º¬1@¤6º^5?}@¤6¶¶ùºF@¤6º^5?}@¤6·m?th@¤6º^5?}@¤6·ÄÍyñ@¤6º^5?}@¤6¸‹0í@¤6º^5?}@¤6¸ñYù@“Ó˜“t¼j@“Ó˜”ÀõE@“Ó˜“t¼j@“Ó–Ö‹zü@“Ó˜“t¼j@“Ó…6üŸî@“Ó˜“t¼j@“Ó‹Õû94@“Ó˜“t¼j@“Ó‘åÇÐI@“Ó˜“t¼j@“Ó‘/Ý3â@3Bò䎊@3Aò×s@.Çï²-@.Â`ÐÔ@.E¡ÊÀƒ@.‚ï—;»@,¸7´¢3œ@,¸Úøÿ@,¸7´¢3œ@,¹P jØ@,¸7´¢3œ@,´èY½««6z@6Æý!ÿ.I@2R Iº^5@2O±[W>«@1’Ðå`A‰@1ó¶E¡Ë@0øDЩ*@0ûP°ò{³@0øDЩ*@0ðÑ·Xâ@0øDЩ*@0ñ–R½<6?€‚ñêã ?’Z†Aži?œrôeEÜ? Í‹hÆ?•Ô¦?n¸?•Þ©qk#?€‚ñêã ?”Ô„÷ËD?™”uÀdª?‘Nw]6»ô?šH¾O”?˜„AP0P?‰~}œ…o^?•cKç4+?•ë þÅ?…âC£½¾Ý?Š*ÊÔQãú?^²®':Ì@@@@@,@*?ð?ð?ð?ð?ð?ð¿aA’?7xîÕ ?@ ½íÑRê?1|ÅBû~ê@¨]tL[¡–@«¿ØÔÊÔ?^¨‹àí­9?P²Õ¿ð“?‘$å¤e?¢/°à-Î@Ÿe¶² Â@z@¥´å`A‰7@¥µ¥ãSø@¥´å`A‰7@¥´Ôã¼Ó[@¥´å`A‰7@¥´ïiDg8@¥´å`A‰7@¥´óÝ—ö*@¥´å`A‰7@¥´Î}Vlô@¥´å`A‰7@¥´À4mÅ×@¦Dj~ùÛ#@¦DwOß;@¦Dj~ùÛ#@¦Dƒ¯·é@¦Dj~ùÛ#@¦D²×sü@¦Dj~ùÛ#@¦DÏìVÕÐ@¦Dj~ùÛ#@¦D™™™™š@¦Dj~ùÛ#@¦Dž¸Që…@7½:’£@7ŠçÕfÏB@3#÷ÎÙ‡@3 í(Œç@3A‰7KÇ@3©*0U2b@1Þ«6z‘@1£þ\‘ÑN@1Þ«6z‘@1±Þi­BÄ@1Þ«6z‘@1±ÑN;Í6?Í2ŸÑ²?§¿u‚3?Âù©d×î?¹HÂåõ?¶þþU«x&?²ìdEmc? Eˆ‡ðó‹?¯¸? ¨ì]?ÀÔ¤õ€«?ÈghæEËH?·¸ÀNî?x?µAáCH)?×kµãÀ¤?¢ÇWiR’½?¬ xGœ÷?š‹ˆe´?¤€3¼¾BÁ?±NKîôÛ—@@@@@&@&?ð?ð?ð?ð?ð?ð¿”ÐÇê?‚! -Þ€?dd sbE?nFR¥”Äþ@¥´ÞËq@¦D–fÏþJ?zn¹“dÏ?–w}þ-Ì]?ŸÙyùFcž?ÜìdÃ$ ¹@Ÿpx`MdW@{@¨{çl‹D@¨{çl‹D@¨{çl‹D@¨|‘…cÿ@¨{çl‹D@¨}šóY@¨{çl‹D@¨|í‘hs@¨{çl‹D@¨{,Ôö -@¨{çl‹D@¨{oOu@“G´9Xb@“G´9Xb@“G´9Xb@“G´w:(@“G´9Xb@“G³”b•o@“G´9Xb@“G´<’í@“G´9Xb@“G´‡ü¹$@“G´9Xb@“G´FsØ@-Q ²•éâ@-Q ²•éâ@)Gï²-@)Gï²-@'òn—Oß@'ò{²þÅm@'ÑÑN;Í6@'Ñί%@'ÑÑN;Í6@'ÑÁðD˜@'ÑÑN;Í6@'ÑÄ2ÊW¨?É^ž6õP?Ç·ñ5“‘?‘c“Ô?‹¦ à:?æä®½·Ó?³fË`??ÐbMÝn½?’ - žž•…?}PIÕ—?-ôö²-?ÌÑ3éVO?KmH¯ôY?€bMÔŠ»?Œ¬ŒîP0?‚ofî@Ü?‚ã'˜zì?†‡ý]™Óÿ?†ˆŠ_cd@@&@"@@5@6?ð?ð?ð?ð?ð?ð¿LYâ>ì­®³à?.º5,Òlž?_l3\«€@¨{Ôœ@“G´W¨ò?=Œ<ÐUn? ·8Œ?u·ôdªc?'fy§;Ÿ;@Ÿsx£µÈ@|@§n—P@§n—P@§n—P@§—ѧŒ@§n—P@§Š @§n—P@§öÔ”ƒ@§n—P@§WŽ5V@§n—P@§‡×@•c/Ÿ¾w@•c/²-@•c/Ÿ¾w@•c-ðñ!È@•c/Ÿ¾w@•c/ÉÐU@•c/Ÿ¾w@•c2,àË@•c/Ÿ¾w@•c/c¶ Ç@•c/Ÿ¾w@•c0-à @2åöý!ÿ.@2åãS÷ÎÙ@0 Iº^5@0ž˜„Ø>@/:¬1'@/9]‹á´@.õ¨Xy=Ú@.ôºâïÞr@.õ¨Xy=Ú@.ô9XbN@.õ¨Xy=Ú@.ôR±/?É^ž6õP?ǧ õHÙ?‘, •¸’?‹¦æx»?‘×»p¹¼?Èñ’!?ÐbQë„›¦?’ 7¨±‚¤?‰5ñ™³?-õ.›ü?íĵl>w?]ÖDg‚Q?€bMÔŠ»?Œ®ÞÆ­h¤µÜÆ@4ahr° ÄÁ.„M‰ûçm@3š~ùÛ"ÑÁ.„QnÙ‡@3£ÉîËûÁ.„NÜC,¥@3£ÉîËûÁ.„NÜC,¥@3£ÉîËûÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø~@Ÿ:èr° Å@Ÿ<.VNQ@Ÿ:èr° ÅÁ.„€@Ÿ:èr° ÅÁ.„€@Ÿ:èr° ÅÁ.„€@Ÿ:èr° ÅÁ.„€@Ÿ:èr° ÅÁ.„€@œ;Ú¬1@œ<(cR(ü@œ;Ú¬1Á.„€@œ;Ú¬1Á.„€@œ;Ú¬1Á.„€@œ;Ú¬1Á.„€@œ;Ú¬1Á.„€@7ý:’£@7‹Á”u¬“@3}‘hr° Á.„M‰ûçm@2ß²-VÁ.„QnÙ‡@2kxFÜ^Á.„NÜC,¥@2kxFÜ^Á.„NÜC,¥@2kxFÜ^Á.„NÜC,¥?ÞÒn¢{@8#˜@8¾:@8 >+@8Iç@8Ù?Œ`àËQã”@8Î÷@8i§@8Å@8S@8û—?è玲ã{¹@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøø@©F¿|í‘h@©F«C•@©F¿|í‘h@©FÃñA ]@©F¿|í‘h@©F½ÌcñA@©F¿|í‘h@©F Iº]@©F¿|í‘h@©F¹³Ð|„@©F¿|í‘h@©F»ÚQÎ@¨¥=ó¶E¢@¨¥AÊÀƒ@¨¥=ó¶E¢@¨¥?¤?åÈ@¨¥=ó¶E¢@¨¥;J#9Â@¨¥=ó¶E¢@¨¥A@N¤@¨¥=ó¶E¢@¨¥<‘ÑN<@¨¥=ó¶E¢@¨¥?»@8Œ]cˆe”@8‹ô‡ü¹$@3À Ä›¥ã@3¾ÒˆÎp;@3²-V@3žƒä%¯@2fYJôðØ@2dÝ/Ÿ¾@2fYJôðØ@2d`ªdÂø@2fYJôðØ@2eF -¦L0?µRÌv·Ë`?‘¸ü"ù€2?“%HCâ=s?nii)â?•RC}Ëq?’Óðç Î? Eˆ‡ðó‹?”n‹rÕ|?™0˱Á[©?’ü#q\-v?”GO˺Ÿû?’ê•8©ñ?¬ýG¬Eq¾?’+0ê­ìT?†' -³}÷C?‰Ò–(?ˆëÅoë?‰G±±ZÎ@@@@@*@(?ð?ð?ð?ð?ð?ð¿ZÝ&öŒ¿JÞˆÔ?d´¯œ›kž?Fì”)È@©F¾Sɦ@¨¥?F¸€?v+uHu\?`³ºŸ##Ç?á°͆½?³ô†Ê!»¶@Ÿqä„& -@€@¤VÄ›¥ãT@¤V¿˜¯6a@¤VÄ›¥ãT@¤VÂWù_{@¤VÄ›¥ãT@¤Vó/o¶¦@¤VÄ›¥ãT@¤VºË®$@¤VÄ›¥ãT@¤VÚö!"@¤VÄ›¥ãT@¤Vѧ„â†@”¡ì‹C•@”¡´ƒ”X@”¡ì‹C•@”¢{¦Ê@”¡ì‹C•@”¢ªÍžƒã@”¡ì‹C•@”¢Oêï\P@”¡ì‹C•@”¢iú‡©õ@”¡ì‹C•@”¢`¦á@7žHè§æ@7¤›ÂCiÖ@3#÷ÎÙ‡@3(Ð/@"˜@2¢-V@2’UÖ½3¸@1ëxFÜ^@1ßèQǰ(@1ëxFÜ^@1ä~’Õ"3@1ëxFÜ^@1æHÄ4?¨Sp*?ErR¡n ?·~SÑj¸±?¤2Fný߉?±ƒ®ˆäü?¬š8 Èùx?ñ3<' ?“´¡S*?È”*8l?˜wß -dã°?¬ääóÿ ?°hsÞVol?¡»®œâ?˜Q-vKÕ—? àë””!d?ŠnVN0žÀ?§¯Sãû¶?¨¨-´^¹v@@ @,@$@7@4?ð?ð?ð?ð?ð?ð?fÉÂ{N?™Orù`?b¨è³–”t?o¥‰Çx(@¤VÂä'@”¡ô -Þ Þ?yB¦ßÓ~˜?…s³¦&ÛN?âvC©±jß@c‡&•K@Ÿ_ÃQŒ@@«)ñ&éxÕ@«)íÒñ©û@«)ñ&éxÕ@«)ò{²þÅ@«)ñ&éxÕ@«)ó3333@«)ñ&éxÕ@«)óÝ—ö,@«)ñ&éxÕ@«)õéá°‹@«)ñ&éxÕ@«)öÈ´9W@¥ö× -=p¤@¥öÉxÔýô@¥ö× -=p¤@¥ö×Oß;@¥ö× -=p¤@¥öÝ/Ÿ¾@¥ö× -=p¤@¥öÖ4ê@¥ö× -=p¤@¥öÖ»˜Çã@¥ö× -=p¤@¥öÜ]cˆf@8(†YJôñ@8' -=p£×@3ðÄ›¥ãT@3ôЩ*0@3)Û"Ðå`@3.óMj@2ž«6z‘@2¥%F -¦L@2ž«6z‘@2¥‡“Ý—÷@2ž«6z‘@2¥L˜_÷?¢F^ì¼Sð?•˜Qi{cj?•Ìüb¢?›×GÁcP?–ǧ/Ë?’IåŠú?žŒÝÙ›P?•Ð\ÄÙ?›WK($ x@¬E¡ÊÀƒ@¬žÔ,<ží@¬E¡ÊÀƒ@¬ž¶ý!ÿ/@5zqÞi­C@5zîcŠ @3¡hr° Ä@3¡½¥œà@3'KƧïž@3#Ð|„µÝ@2°–»˜Çã@2­ÈK]Ì@2°–»˜Çã@2…Y³Ð|…@2°–»˜Çã@2|/ƒ{J$?|öOÿÝ?‘è™è;?–„6âpñ?$Ìj½BÙ?²œIršÏ??¸Ø'Š“?}Ñ¿ž,?–gÝ3ýø’?—æÍw€r‹?’RÖò?Øß”5¾oó?ã´TYä9?‚‘´…=Ca?“8í¢ßA?‹v'þ­X?ˆÝíá‰?›8~à,ã™?™¥bÉ-/@@@@@,@,?ð?ð?ð?ð?ð?ð¿ev–£"¿ba~–4?B˜î´AÕ?yó*#ˆ.£@£}hÁ§„@¬DÝ&$?U^ôf2|?Šøu“_8h?²{p ywA@%‰—·–@Ÿ\ùÎ!›|@ƒ@¦¹nzáH@¦¹mÒñ©ü@¦¹nzáH@¦¹nÕ0ö¼@¦¹nzáH@¦¹nœÓ^@¦¹nzáH@¦¹o4‘®Ö@¦¹nzáH@¦¹nÿ‹Y`@¦¹nzáH@¦¹oDñÆ@—QÊÀƒo@—QËC•@—QÊÀƒo@—QËKÇ@—QÊÀƒo@—Q˯{ëê@—QÊÀƒo@—Qͦ™øÊ@—QÊÀƒo@—QÌ-.mz@—QÊÀƒo@—QÌ5¬«¤@3ÖšÔ,<Ÿ@3Ö°‚AÙ´@0|í‘hr@0n@e @/Ýó¶E¡Ë@/ݹ9KWô@/`ªdÂù@/`’2ä@/`ªdÂù@/T^%ZÈ@/`ªdÂù@/Kì"?|Ñb×¶@?ɧ¶kF?‘,(î¶X¢?‹Çµq?Â?ô2zWƒ/?»KÉ“V?|Ñb×¶@?’’ÛR‘?ŒØSÃÕ‡?9ä7~?ÒoÄc’ ?\=ŸùU?‚zÄÌí*?Œº“zí+‡?‚zŽbœ¡½?‚þT Ї?†šÆŽG•?†´ÙRò†@@$@&@*@:@7?ð?ð?ð?ð?ð?ð?5oF ˜?"y?Þp?açf&?Z¿ˆ¼@¦¹n–Õô(@—QÌiª¤?4èùœÈU?<äo23m?wÖÌ£Ò??…È´ñå-R@ŸfúG¬Þ@„@®ßB Iº^@®ßCn—@®ßB Iº^@®ß3Ý—ö+@®ßB Iº^@®ß33333@®ßB Iº^@®ßvÈ´9@®ßB Iº^@®ß'ÕfÏA@®ßB Iº^@®ß-úCþ\@¥&hõÂ\@¥&bÐå`B@¥&hõÂ\@¥&l¥zxl@¥&hõÂ\@¥&Sœ¾ß@¥&hõÂ\@¥&QÅ€@¥&hõÂ\@¥&a£n.³@¥&hõÂ\@¥&]æšÔ,@7+µsê´@7+P°ò{³@4ÇÎÙ‡+@4Â{²þÅm@4nùÛ"Ðå@4b£S&@3¿ò䎊r@3Æfffff@3¿ò䎊r@3´M:’£@3¿ò䎊r@3°hÛ‹¬q?}Ñ¿ž,?©c0_Õ¥¶? õ/ ebà?’KŸÐÇ¡?¤š%OÜ–õ?§ÈÅCHƒ?¢Æ÷Xê†?§PÔYªÀ—?¦DNYô ?ž‹R)n©? ³×OÓ+z?ª.Wæ—“?™“ÇÙ¸?¯Ëg1Ð?š?G'ôÜ?œ»Qñ¯L‚?§Ñ^Éysæ?¥VËMª¼‰@@@@@*@*?ð?ð?ð?ð?ð?ð¿ƒ[’û€¿AÐjíè?k vù,Ò?jaÞ¦ -”@®ß*q/Yæ@¥&[åÜFn?Žw3È™òÉ?…²àÕQ@ª¾t5tp?楫ô?Qn@Ÿi‰ ÆÃ¶@…@ ½"Ðå`@ ½9çÓ@ ½"Ðå`@ ½*Ú0„@ ½"Ðå`@ ½ƒB'ç@ ½"Ðå`@ ½ŸfˆÛ©@ ½"Ðå`@ ½.Ñm)–@ ½"Ðå`@ ½`­Äâ/@¬Ë$Ý/ @¬ËÙœ‘@¬Ë$Ý/ @¬Ë9bðýï@¬Ë$Ý/ @¬Ë0±u—~@¬Ë$Ý/ @¬ËL1!ýŸ@¬Ë$Ý/ @¬Ë,DX”e@¬Ë$Ý/ @¬ËxИ@8zqÞi­C@8s33334@3ør° Äœ@3þ±¨Ò@3‹"Ðå`B@3«Ä&/Q9@2O „M@2ˆ¦?B§@2O „M@2‡Ru\@2O „M@2sÓ«£ª?°ðéú}Ñ?•¾€‡‰?’xôƒ`ã?Ÿhi­? "·ðú?¹• ¹,ê?žƒ¸r2ã?™(¾…áÐ?“øæo6Î?˜nÕÏ?˜Nb™Ðâ±?’3¥Îz5?‘9ûÎh¬ñ?’’IÞUÄ?Ÿ|ÚÆL)/?Š>­ÂŒ?²oB]òÁ?¢‚ùùáÿ»@@*@$@"@6@8?ð?ð?ð?ð?ð?ð¿w›š ??¿vè? n‘»·ª?‚ˆB\Cѯ@ ½a>òë‚@¬Ë-ØŠ„?³øòp–ý®?žxö+ϬA@=?°¤rÈ@$žêRoø@Ÿlb7<·!@†@ªð?|í‘h@ªð>¸Që…@ªð?|í‘h@ªðAò×s@ªð?|í‘h@ªðD›¥ãT@ªð?|í‘h@ªðDoi@ªð?|í‘h@ªð@ëíúE@ªð?|í‘h@ªðA-w1@ªÉu?|í‘@ªÉuÂ\)@ªÉu?|í‘@ªÉuÜÆ?@ªÉu?|í‘@ªÉu '»@ªÉu?|í‘@ªÉu?|í‘@ªÉu?|í‘@ªÉu$Þ@ªÉu?|í‘@ªÉuL˜_@3L]cˆe”@3LL˜_@-{"Ðå`A@-wÁ½¥›@,N—Oß;@,K¹Œ~($@*åÉä@*}IQ‚©’@*åÉä@*}/Ÿ¾w@*åÉä@*|àuöý#?žˆ2}?Æ -×?’Gßk;m?‹Æ úJ-M?‘2A¥Ø?ë+ʦÜ_?|¬Çëý ?’“ºƒ;Nû?ÏtP°*?1ð'7éÃ?â2„&ÿh?Uÿyu”#?‚¸“Îè ÷?Œ¾»•lŽ?‚yî8Á$?‚éXëLL÷?†l&þ?†½ª»—@@@@@*@(?ð?ð?ð?ð?ð?ð?G·Üÿx¿a@?DšŒá7_×?\13-@ªð@ìoSz@ªÉu†‰:æ?dSEX¼>[?#ºcÜ<?Ók°`¦€?S£b£@ŸgºËñJ@‡@ p0£× -=@ p:Á7s‰@ p0£× -=Á.„€@ p0£× -=Á.„€@ p0£× -=Á.„€@ p0£× -=Á.„€@ p0£× -=Á.„€@¤/Û¥ãSø@¤/àA‰7L@¤/Û¥ãSøÁ.„€@¤/Û¥ãSøÁ.„€@¤/Û¥ãSøÁ.„€@¤/Û¥ãSøÁ.„€@¤/Û¥ãSøÁ.„€@8^Hè§æ@8UËí»€P@5—+ IºÁ.„M‰ûçm@4ûƧï²Á.„QnÙ‡@4ëxFÜ^Á.„NÜC,¥@4ëxFÜ^Á.„NÜC,¥@4ëxFÜ^Á.„NÜC,¥?¡5Vá4S@8#˜@8¾:@8 >+@8Iç@8Ù?"r+©©£@8Î÷@8i§@8Å@8S@8û—?ºÑ„³@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøˆ@ª4_;dZ@ª4hõÂ\@ª4_;dZ@ª4e8ï4×@ª4_;dZ@ª4g»/ìW@ª4_;dZ@ª4u '»@ª4_;dZ@ª4fÜ]c‡@ª4_;dZ@ª4cn.±Ä@£šŸ¾vÉ@£švÈ´9@£šŸ¾vÉ@£šIá°‰ @£šŸ¾vÉ@£š&€I@£šŸ¾vÉ@£šBœwšj@£šŸ¾vÉ@£š'â‚@¸@£šŸ¾vÉ@£šškP±@7” xFÜ@7‡škP°ò@5^Ù‡+@5Q£n.±Ä@4Õ`A‰7L@4Ô,<žìÀ@4fYJôðØ@4v¡aä÷f@4fYJôðØ@4‹xFÜ^@4fYJôðØ@4 quŽ?Ÿ‹‘+-/Ü?“³ß )}o?FwôÅ?¯üÚ‰øßæ?«XàzÆ=?¯Èµóäã?¤I~Óy‘?”ŸÚ²t©?¥ÊÁí·EU?°;Éq:¼?­{¾“úy6?³YðÕ{¸?¹X¶t:w?—ÁÌœÒ?«^i•?’4i+Ëè?Ÿ‘±bÌ?Ÿ/Òѯ¢@@@@@(@(?ð?ð?ð?ð?ð?ð¿<Þ)ݨ?XFC¿?[Ö¢3Va¥?tuòÔX­g@ª4i%~Æè@£š&äHäþ?|×§&ß\?”.5–çî?Åð&<~ù•?ð2Ö•ÚUû@ŸhÊ÷.K:@‰@£!Ÿ¾vÈ´@£!pbMÒò@£!Ÿ¾vÈ´@£!«…¸R@£!Ÿ¾vÈ´@£!’¼£@£!Ÿ¾vÈ´@£!¡½¥@£!Ÿ¾vÈ´@£!§†Â&€@£!Ÿ¾vÈ´@£!¢‚@·€@¬¶¯Ÿ¾w@¬¶©ûçl‹@¬¶¯Ÿ¾w@¬¶­í(Œç@¬¶¯Ÿ¾w@¬¶ˆð@¬¶¯Ÿ¾w@¬¶›quŽ"@¬¶¯Ÿ¾w@¬¶Åzxl"@¬¶¯Ÿ¾w@¬¶ÈXy=Ú@9>«6z@9 6z—@4Ùº^5?}@4õϪ͞„@4Wï²-@4qœàuöý@3µµsê³h@3ÊW§†Â'@3µµsê³h@3ÜÌÌÌÌÍ@3µµsê³h@3á×Ûô‡ý?ºðŽÄS?’Mj…•Ì‘?”ñ-a} ?›“ë '?©¦¥Ò?°‰¸*'?¯ò5}'Î?“Ëÿ.¬Hp?—P¶àeœ¤µÜÆ@4sS÷ÎÙ@4q–R½<6@3Ÿ²-V@3œ¾ß¤@@3!:’£S@3­BÃÉï@3!:’£S@3rGE8ð@3!:’£S@34mÅÖ9@8J¨?š 5öÑ„?—CÅçõð?—ó^G_í?š(:)[a?ž C@L(@8J¨?›–ë•ñ^?¤Àñè_zø?¢€ÝÅp?šRýi¡ô?¡ìøV@8p÷?Å{¿Ž<º?“ e?ŒÅÐ7N³¬?‹&¸ê±fÂ?’d­©‡ò@@@@*@*?ð?ð?ð?ð?ðøøøøøøøøøøøøŒ@¢~Ú¬1@¢~Ú¬1@¢~Ú¬1@¢~Ü„µÜÆ@¢~Ú¬1@¢~Û¥ãSø@¢~Ú¬1@¢~Û¥ãSø@¢~Ú¬1@¢~Ú¹õY´@¢~Ú¬1@¢~؆YJö@¤ªë Iº@¤ªë…¸R@¤ªë Iº@¤ªë]Ìcñ@¤ªë Iº@¤ªê0U2a@¤ªë Iº@¤ªëC,¥@¤ªë Iº@¤ªê™0¾@¤ªë Iº@¤ªêÚ¹õZ@4T xFÜ@4T9XbN@0sS÷ÎÙ@0têJŒ@0'KƧïž@0(DЩ*@0&YJôðØ@0'>«6z@0&YJôðØ@0'RT`ªe@0&YJôðØ@0'Ë)^ž?|¬Çëý ?Ï[äe+@8Iç@8Ù?|öOÿÝ@8Î÷@8i§@8Å@8S@8û—?‡}¤íý@8 * @8p÷@8¶@8 Ø@8 Ø@?ðøøøøøøøøøøøøŽ@ª]õ?|í‘@ª]õÂ\)@ª]õ?|í‘@ª]õ"7Tì@ª]õ?|í‘@ª]ôùëD—@ª]õ?|í‘@ª]öî9!+@ª]õ?|í‘@ª]ó:À @ª]õ?|í‘@ª]ôýó¶E@—°ýó¶E¢@—°þùÛ"Ñ@—°ýó¶E¢@—°ÿ¡ Ï@—°ýó¶E¢@—°ÿy8º`@—°ýó¶E¢@—°þi°ˆÎ@—°ýó¶E¢@—°þW°O@—°ýó¶E¢@—°ýKÈ`F@4L]cˆe”@4KÞ‚×¶4@0» Iº^@0» ò|@/ü¬1&ê@/üÁ“+:@0 ù kº@0•øª0@0 ù kº@02júõÕ@0 ù kº@0ëã·œ ?|¬h2:“?ÄplÉ•?‘"˜»Hé?‹Ôã“x?ý¹EË?ú=A™C?|¬h2:“?’ n?‚ö±ó6?X´§Yæ?ômÎ6Ék?~îÜ‘ü›?‚pDøïRg?Œ¿H(>X?‚‘|ÑE2?ƒʾÏê?†²!”,ª8?†ö‚Ó?‘¤¼BÛTü?Î;|;2@Ÿ]=¼äg@@¯ŸOß;d@¯ŸÒñ©ü@¯ŸOß;d@¯Ÿ{=ÈK@¯ŸOß;d@¯ŸHe”¯N@¯ŸOß;d@¯ŸŠqÞi­@¯ŸOß;d@¯ŸÆÁ½¥@¯ŸOß;d@¯ŸÁTÉ…ð@¬Á½p£× -@¬ÁÑë…¸@¬Á½p£× -@¬Á•$Ý@¬Á½p£× -@¬ÁE8ï4×@¬Á½p£× -@¬À“g ù @¬Á½p£× -@¬Á1Å@¬Á½p£× -@¬ÁìVÕÐ@8cg ù l@8Vz–¼@5Iº^5?@4Û=ÈK^@4çKƧïž@4}ÈK]Ì@4fYJôðØ@3þ;Í5¨Y@4fYJôðØ@4DЩ*@4fYJôðØ@4Ƨï²?¤ÊŽaÈ]Ó?°I6nÓ¨á?³¾Ò*„=?¹ ŽÎÍâ?¹—³ÔKÒ?²?€‚ñêã ?± -¦}TÅE?Í™öÇó©?Õ•Ö"º ˆ?ƺ@â=±t?È@—hÔu?¬ðV÷_cW? 6) }’ê?¯^BÎÒ??¡qÍúr;?¡FÍb2x?Ð %¨âë²@@@@@&@(?ð?ð?ð?ð?ð?ð?…q «Ô€¿§É.êH°?mûŽkáÔŸ?‰+Ü=B)Ÿ@¯Ÿš¡ëÃÁ@¬Á‘|”®?q¯r?¡CNÎÄao?ÝHð]˜f?ö»âH,1i@Ÿ`Õk0º8@‘@¨O€@¨OˆŠÌo@¨O€@¨OË)^ž@¨O€@¨O‰ã½@¨O€@¨O—Xâd@¨O€@¨O} -ú@¨O€@¨O‰ÕÃI`@œ‘["Ðå`@œ‘9áþ@œ‘["Ðå`@œ‘Që…¸@œ‘["Ðå`@œ‘N_oÓ@œ‘["Ðå`@œ‘$tSŽó@œ‘["Ðå`@œ‘6›$•@œ‘["Ðå`@œ‘*ægˆ@8›¹Œ~($@8‹,ÕGfž@4+ Iº@4oiDg8@31‰7Kƨ@38$ xG@2Þ«6z‘@2àÑ·Xâ@2Þ«6z‘@2Ég”Rõ@2Þ«6z‘@2ÎnM’}R? Ôøx¡9»?˜fײ{Î=?”‰oüq u?• Q™iå”?—7ű4Cù?›\F*Õ7†?ºfÈŽÍY?š¾ˆè ”?•ê?íuA?—³ÄpÐ?¤[T‡Ýas?œò½¼U?´$%Gó}?š‡´‘Õä?¡PÊÑ<Ýl?”žWj¬fž?Œ†ž49›Ò?•>¥þ^*@@@@@0@.?ð?ð?ð?ð?ð?ð¿`B|l?L2ã/?sBŒÊ-#2?_§aÓúg1@¨OŠ=­u½@œ‘)ž½àa?$ã¨+?rJ[Œßö@üäcý­Q?Ã3€º¹5@Ÿp%Û}‰Ë@’@¢Ò÷ÎÙ‡@¢Ò÷Oß;@¢Ò÷ÎÙ‡@¢Òó àÞÓ@¢Ò÷ÎÙ‡@¢Òî±Ä2Ê@¢Ò÷ÎÙ‡@¢Òßò䎉@¢Ò÷ÎÙ‡@¢Òç8}¿@¢Ò÷ÎÙ‡@¢ÒæÜ]cˆ@£’¯²-@£’¯ß;dZ@£’¯²-@£’²ˆÎp;@£’¯²-@£’®æ1ø¡@£’¯²-@£’­à q@£’¯²-@£’£S÷ÎÙ@£’¯²-@£’£ñA \@3Ô xFÜ@3Ón.±Ä3@0Ùº^5?|@0ÒÊW§†Â@0y7KƧð@0q°‰ 'R@0QÞi­BÄ@0G§†Â&@0QÞi­BÄ@0EãS÷ÎÚ@0QÞi­BÄ@0F?¼?1·†Æjñ?‡åƒêM?“â÷!N?–¼A2xý?Òß© ÷?—Ò¸ùBz3?|öOÿÝ?’&u÷E»@?’°æfÅM“?’ƾ| ? ,¡r×gÁ? ,ëÌ:¶Ï?‚nâwfÿ?Œ¸†‡ÄÅ?ƒíÈm½!¿?„XïWÉò~?ˆ0&YÊEd?‹¼`’ i2@@@@@,@,?ð?ð?ð?ð?ð?ð¿rDl§Q€¿a%©¤²?[sAš':^?HÝ‚ n.@¢Òï9p­®@£’¬qmÜL?y õ÷DñÎ?ecÁcAðu?õ'_’h/ø?Ëò-!ò]o@Ÿco¢>ªc@“@ w33333@ w32Å@ w33333@ w4Q@ w33333@ w5h¬Õ¥@ w33333@ w5¾ØBR@ w33333@ w2‰*R@ w33333@ w2wØóÿ@§ûçl‹D@§ü(õÂ@§ûçl‹D@§ü]¡´ž@§ûçl‹D@§ýÀÒ;ë@§ûçl‹D@§ûÅ„ž@@§ûçl‹D@§ý¯nÚ¼@§ûçl‹D@§ý¼©i@2­¥œàv@2­´1G-@0€ Ä›¥ã@0~ÓN׋@0å`A‰7@/ýäûÎ<@.G“Ý—ö,@.F:(KÃR@.G“Ý—ö,@.F$ ßRx@.G“Ý—ö,@.Dz²ºtç?É^žP¬!?ïʃš/J?‘!,1 ®þ?‹Ó’{-@F?øpfТ?ßeKþ£?ÐbQë„›¦?’#Øù$S,?˜Ý=yƒˆ?2üÂòñ?æòö/Ÿ?Xð3Z:?€c6JX¨?Œê¸Ávó?ƒ'²x'9?‚ð§h9#?†Ó_³ëêù?†¯B@ùþ@@&@"@&@8@8?ð?ð?ð?ð?ð?ð¿XN¸d?LŒ··,?>ï%¢O‚™?2Y]ý;,@ w3ÐôÖ!@§üò  ¥?M¶s2ZVÞ?Ab–Eäib?•s›ÙÅ¡?ziÞînZ@Ÿs -“Ã@”@ª¦À@ª¦À“4Ì@ª¦À@ª¦Óv‚÷¶@ª¦À@ª¦Ó¥ lþ@ª¦À@ª¦ÓR¥p@ª¦À@ª¦Ùwæ”Þ@ª¦À@ª¦àLlÓÓ@šÄ’n—P@šÄ†§ï³@šÄ’n—P@šÄ…!Ïž¾@šÄ’n—P@šÄ‡}Ú -È@šÄ’n—P@šÄ‰w—v'@šÄ’n—P@šÄy¯¶n@šÄ’n—P@šÄ„É ùã@6òÃÉîËû@6íÙ1Í—Ù@3|í‘hr@3‰ó[D@3,j~ùÛ#@3!ĬlV@2p–»˜Çã@2b©ƒŠÌp@2p–»˜Çã@2e­€Cæ†@2p–»˜Çã@2d‡NN}6?e™”XWø?£KÊ2e¡?š–yÈxb?&’·ž?–XÁ]Nœ?› ÊVMŒ?}@T˜ÁÎ¥?’ê´’º?’´öå¤?z—nÛ¹?“2-+O´Ñ?’®8îPŠÒ?‚oºáܺ?Kdnå -?†uuÕ¢Éþ?†Ù k4?ˆšsÓß ö?‰dÚè±@d@@ @(@$@3@4?ð?ð?ð?ð?ð?ð?{kmÑú¿AN^X?4ßmæ•ãx?FgëþÙð@ª¦Í™›Äþ@šÄ„ÇI’?S.v‰jUø?eÓJ>äé?«ý6œHp÷?ÖÒ©2ò;@Ÿe„?à£R@•@«¦hr°!@«¦&éxÕ@«¦hr°!@«¦°ò{²@«¦hr°!@«¦°ò{³@«¦hr°!@«¦å`A‰@«¦hr°!@«¦|„µÝ@«¦hr°!@«¦ß;d[@Ÿ¼o²-@Ÿ¼m‘hr¯@Ÿ¼o²-@Ÿ¼k6z‘@Ÿ¼o²-@Ÿ¼u '»@Ÿ¼o²-@Ÿ¼r-V@Ÿ¼o²-@Ÿ¼mw1Ä@Ÿ¼o²-@Ÿ¼o·éù@6`ØDЩ@6`oiDg8@2f‡+ J@2gÎÙ‡+@1¾V“u@1¿iDg8@0Ê0U2a|@0ËŸU›=@0Ê0U2a|@0Ë Iº^@0Ê0U2a|@0ÊdÂø7µ?óA[ØïF?š¾ßÍZ?”4 bà5?ŒÖ -Äȱ?‘èÒ§ˆ„Å?‘¦ µÚ?3ßa=„?’Òc§—Ûí?“Z—H|:?Y‡…—Ø?‘–=û.e1?‘C å;Ã?”US9úÅ?îŠõ ?ƒM¬Öe—_?„XïWÉò~?‡ã ËÄž?ŒÙ”!Çx‡@@@@@,@,?ð?ð?ð?ð?ð?ð¿/UÀ?!oþöà?›Ø*K:?75®o_TÕ@«¦¡ŽéI@Ÿ¼oI¸.?1÷©xW‰?UVÔG(ô?c#¥. -RÈ?©ÛÆAÀ}W@Ÿl#m‹é©@–@¢ªçl‹C–@¢ªÞ5?|î@¢ªçl‹C–@¢ªé 'RT@¢ªçl‹C–@¢ªçË)_@¢ªçl‹C–@¢ªïÅp@¢ªçl‹C–@¢ªç®zá@¢ªçl‹C–@¢ªãS&@®l¸Ôýó¶@®l·Oß;@®l¸Ôýó¶@®l¬¿±[V@®l¸Ôýó¶@®l 'RTa@®l¸Ôýó¶@®l±N;Í7@®l¸Ôýó¶@®l±Å‚@®l¸Ôýó¶@®l«íúCþ@8òÃÉîËû@8ãŽóMj@5° Ä›¦@5»¬q ²–@5Z~ùÛ"Ñ@5FOv_Ù@4¨è§æ›@4ªxl"h -@4¨è§æ›@4¥`A‰7L@4¨è§æ›@4BÃÉîÌ?¾Å°[ú_G?ªP2 -¬OÔ?ªOؼïÏ?• +ÏÄ¡?ž)‚^°y?œˆš—I?±>ÏÅósN?ªjÚäƒX?¤ý'º(?°‹Œ÷€?››ÈŒ(¨æ?š)ÑS&³?¿ûI£•Ì?¤ŠØ²f¯?™{Tä=û?«0ÉEK?›€*:€R}?IQ‚©“ @@@@@$@"?ð?ð?ð?ð?ð?ð¿q";ñ ¿`Êt?c8Z4b}·?J Ó_£HN@¢ªê²dg\@®l°2½L­?tî'Txã?\ÏÑËÒQ¤?Í„¥Á½Ó^?¥¶½¢¸@Ÿp›ùø©¦@—@©· A‰7L@©·(Ò2{@©· A‰7L@©·å û_@©· A‰7L@©·'Â?ªŸ@©· A‰7L@©· Ey@©· A‰7L@©· ýñ?U@©· A‰7L@©· ¯@‡¢@˜€× -=p¤@˜€üVs(@˜€× -=p¤@˜€Ì\Þ7@˜€× -=p¤@˜€Ð ŒA@˜€× -=p¤@˜€‚“°J@˜€× -=p¤@˜€´5Âp6@˜€× -=p¤@˜€¾)¹ú®@904mÅÖ8@94"Z§›ì@4{ Iº^@4y.áe¯@3â-V@3ã— †/Æ@3³&Á½¥@3§<5œNÂ@3³&Á½¥@3¼sþëš@3³&Á½¥@3»ñ¯Ði?³,øt£Ø?•…¦|u?”q)·Ô/ž?™”O =?’¼­ÿȺ?—ª±Cš7Ï?‡‡á´WÉ?–Øng':?•¿¾m¢?—ä´„ÁÉ?—ñLŒQ¶N? ¯4³ÆlÁ?º1fÝ2»?‘uÎý• ?¨~‘Û)%?¦„Çïî ?£üØuí™A? Æw@çšs@@,@*@(@5@:?ð?ð?ð?ð?ð?ð?uì®$P@¿„˜‚Wà?xV?–?×?uü«G@ðÃ@©·ŸyE@˜€³‡rÚ?‹”(úù¾?œ¨2ë˜ ?ÿ4,¤nž@"7.Ïò@ŸoÀúb€N@˜@§­‘hr°@§­‘hr°@§­‘hr°@§¯_ýb5@§­‘hr°@§®záG@§­‘hr°@§®ÏsJT@§­‘hr°@§«òƒÃá@§­‘hr°@§¬%¬ D@“¤¬1'@“¤­Tj@“¤¬1'@“¤±V¦“@“¤¬1'@“¤ˆ•@“¤¬1'@“¤aÄ»›@“¤¬1'@“¤Öá@“¤¬1'@“¤ygÊë@4cg ù l@4ca@N¤@0uãS÷ÎÙ@0t²Ž7¶Ž@0lj~ùÛ#@0kîƒ*ZÄ@0œàu÷@0kÕçÑ2@0œàu÷@0«¯waö@0œàu÷@0˜Çâ‚@?}@T˜ÁÎ¥?ÙM‹ß-U?‘Ûùü†?‹«µë­?‘!–ÒOæµ?ÝLï©65?|¬Æ Væ?’Ï -r}ä?‹¬tK±»?0Ö:¢"l?‘"ξfS?†Š¿çK?‚u؆"¿?Œ³$-a5[?‚ň¸™?ƒQ†„ 8?†±@5Gd?†©€‚G¥,@@ @ @@8@7?ð?ð?ð?ð?ð?ð¿+ÁU…À?$4=˜?2÷GêŠ?d¡§x™V@§­Hƒ2š@“¤C½ ?RÒ±†vïÔ@ŸskäŠ@›@ªqô¼j~ú@ªqüí‘hs@ªqô¼j~ú@ªqûô‡ü¹@ªqô¼j~ú@ªqÃS&@ªqô¼j~ú@ªrЩ*@ªqô¼j~ú@ªrŠÚ¹ô@ªqô¼j~ú@ªr#•&@¡“÷ÎÙ@¡t9Xb@¡“÷ÎÙ@¡…+ÓÃa@¡“÷ÎÙ@¡xüPH@¡“÷ÎÙ@¡²¼£@¡“÷ÎÙ@¡ó àÞÓ@¡“÷ÎÙ@¡ôÉ…ðo@8÷â‚@·€@8ЬÙè>B@4ahr° Ä@4YùrGE@41‰7Kƨ@4#¶E¡ÊÀ@3”mÅÖ8†@3Šû~ÿ—@3”mÅÖ8†@3Ž5?|í’@3”mÅÖ8†@3‰rGE8ð?Ÿ‹‘+-/Ü? §Ê]ÁÈ?¢ÌÞõ1?¡sâ½ë?Ÿ\(Ft†ã?¥ÈêƒÔÇ?Ÿ‹‘+-/Ü?¡(õ/Ü(?¡œåVÉh?³ØÐÄÜ_œ?³Ô)ÿ´í?ªõøƒ:‰à?Ùf×ÞÆ¾”?–xéCìZÒ?µ1Ù^ ?¨+Î&*ô?y½¼ŸŽ?™Øl›¹@@@@@*@(?ð?ð?ð?ð?ð?ð?€\š¦€?›«´´¬ ?b;½× -»Â?cä^5ˆ@ªr •\zö@¡¶Êqœ?€ˆ”k - Š?† ›FJÊ?ÝKÉ {í?Ö½òª@Ÿi4>C@œ@Ÿa–‡+ @Ÿa˜Êø[@Ÿa–‡+ Á.„€@Ÿa–‡+ Á.„€@Ÿa–‡+ Á.„€@Ÿa–‡+ Á.„€@Ÿa–‡+ Á.„€@¥ëþùÛ"Ñ@¥ëþùÛ"Ñ@¥ëþùÛ"ÑÁ.„€@¥ëþùÛ"ÑÁ.„€@¥ëþùÛ"ÑÁ.„€@¥ëþùÛ"ÑÁ.„€@¥ëþùÛ"ÑÁ.„€@5ÞHè§æ@5ÜèŽqž@1×+ IºÁ.„M‰ûçm@1gKƧïžÁ.„QnÙ‡@0õµsê³hÁ.„NÜC,¥@0õµsê³hÁ.„NÜC,¥@0õµsê³hÁ.„NÜC,¥?¨Sp*@8#˜@8¾:@8 >+@8Iç@8Ù?|¬h2:“@8Î÷@8i§@8Å@8S@8û—?‚o°V“u@2EÜÆ?@1½cˆe”°@1È*™0¾@1½cˆe”°@1¿v_Ø­¬@1½cˆe”°@1ÄÂø7´£?’Óusÿ\Ã?Žd±Ìº?•lÚ®¡õµ?’×­“·?“>û{Ñø~?”Å0>Û?‘â%ì˜ ä?’ùÎ {?“Ú%¿»8?›gy˜}Ùð?’Bg4ð3f?—>p¼?ƒ<Õp?¨ ‰‹U)?‡š¿]b?‡•ó¨–ˆ?Š|)-}í(?‘„1ôñÂß@@@@@,@*?ð?ð?ð?ð?ð?ð?-øP6°¿Hò òø?DÊ Cô«?Aj´ìj¦@©Û¶€)þ>@¬¼»˜Žhò?bÓDôèõ?`«öu ?¾¶k sð?´‹¶´Ø>ê@ŸkÜå Õ1@ž@¬fdZ¬Á.„€@¬fdZ¬@¬f_¯Hõ@¬fdZ¬@¬fdVåú@¬fdZ¬@¬fcJss@¬fdZ¬@¬fcnw0n@¬fdZ¬@¬faÃv´à@”Чï²-Á.„€@”Чï²-@”Ц<Ñ¥>@”Чï²-@”Š®¤•2@”Чï²-@”Š©ªî`§@”Чï²-@”Š¥Û5n@”Чï²-@”Ѝ8Õù7@8(†YJôñÁ.„>¤µÜÆ@3žÙ‡+@3ž&®üµ@2Ͳ-V@2Î;Í5¨Y@2L¿±[W?@2LÜ·­Qª@2L¿±[W?@2M¹æ°[j@2L¿±[W?@2Oÿtñƒ@8J¨?úD|•Ô?‘7çÖ«?ŒŒ{¡Ä‘?’ç“È–Ÿ?‘‘ä9)¥@8J¨?’íL—²??°Ì·’l^?‘3èòjÔ ?’ÃÎY6?‘ÆúÌþ†«@8p÷?®Y{Õ1*?…«O¡‘?„@×T«[£?ˆCbi¸”?ˆÎ+){ò@&@"@,@<@:?ð?ð?ð?ð?ðøøøøøøøøøøøøŸ@¥”s3333@¥”o²-@¥”s3333@¥”£{J#:@¥”s3333@¥”¦"ôy@¥”s3333@¥”~7º¸­@¥”s3333@¥”„v4J.@¥”s3333@¥”{¯ *Ø@“Kë…¸R@“KØÉ,i@“Kë…¸R@“JÁ‰7KÇ@“Kë…¸R@“Kq{GÜe@“Kë…¸R@“K¤ïó!²@“Kë…¸R@“KùM°vL@“Kë…¸R@“Kùn¬Ì@7Î쿱[X@7Öƒ7zX@4›¥ãSø@4ˆüPHð@3~V“u@3𔆀?³*![Oˆ? š€J‡@¯cè•Ôh @ªj¶¹¨?<ŒZ$€ß?@XÃÅ®Ç?…µÍÛœj?‹‡l—» Ñ@Ÿg‰a@¢@ªpŸ¾vÈ´Á.„€@ªpŸ¾vÈ´Á.„€@ªpŸ¾vÈ´Á.„€@ªpŸ¾vÈ´Á.„€@ªpŸ¾vÈ´Á.„€@ªpŸ¾vÈ´Á.„€@©#ÌÌÌÌÍÁ.„€@©#ÌÌÌÌÍÁ.„€@©#ÌÌÌÌÍÁ.„€@©#ÌÌÌÌÍÁ.„€@©#ÌÌÌÌÍÁ.„€@©#ÌÌÌÌÍÁ.„€@9ÞHè§çÁ.„>¤µÜÆ@7+ IºÁ.„M‰ûçm@6ÝV“Á.„QnÙ‡@5ÑÞi­BÄÁ.„NÜC,¥@5ÑÞi­BÄÁ.„NÜC,¥@5ÑÞi­BÄÁ.„NÜC,¥@8J¨@8#˜@8¾:@8 >+@8Iç@8Ù@8J¨@8Î÷@8i§@8Å@8S@8û—@8p÷@8 * @8p÷@8¶@8 Ø@8 Øøøøøøøøøøøøø£@£¬1&é@£«Æ§ïŸ@£¬1&é@£­0Ì1H@£¬1&é@£­V@£¬1&é@£­-ªWù@£¬1&é@£«C,¥@£¬1&é@£«î²Ñ@˜±&éxÕ@˜±&éxÕ@˜±&éxÕ@˜°êñ+•@˜±&éxÕ@˜³üPH@˜±&éxÕ@˜±N;Í6@˜±&éxÕ@˜±oC„»@˜±&éxÕ@˜±wçÌ@.?åÉ@.?åÉ@(\j~ùÛ"@(\‰ÀjßÄ@'E¡ÊÀƒ@'_Ø­«Ÿ@&ëjçÕfÐ@&ë~ÿ—%@&ëjçÕfÐ@&ëquŽ!—@&ëjçÕfÐ@&ëxFÜ^?É^¨¯Âj?Á€þ†Øª?‘ÑñK·¢?‹­v4¶Ö?çêÑHcÇ?µûê?ÐbMÝn½?’Fó®â?|˜¿ø¾;?0‡j¿þ)?ͪãÓ'?K '‘›»?€bMÔŠ»?Œ¬ŒîP0?‚nÓ3îŠ?‚âÐEi–?†‡¥âè?†‡Óñ˜¤@@(@ @*@<@:?ð?ð?ð?ð?ð?ð¿N¨È&8?Þ]¸?4tÇòFÖ>Ú\ËöâNê@£«ó2G -@˜±d»j2?C«\j©€>èñÕΠɾ?ƒ •aæ>Ë\Št]Þ¹@Ÿsí¥#@¤@­hõÂ\@­h´9X@­hõÂ\@­i?0†´@­hõÂ\@­ix: @­hõÂ\@­iPÞût@­hõÂ\@­h³6 @­hõÂ\@­h‘„!b@™yxÔýó¶@™yxÔýó¶@™yxÔýó¶@™ywöG³@™yxÔýó¶@™yyÐ?7@™yxÔýó¶@™yxV *A@™yxÔýó¶@™yx~*/Ò@™yxÔýó¶@™ywIÂo@1 ]cˆe”@1 ]cˆe”@,`A‰7K@,æÒWv.@*cn—P@*b½<64@*åÉä@*¼@*åÉä@**63@*åÉä@*4Ö¡aå?É^¨¯Âj?É j?‘Û­i)?‹­v4¶Ö?éÝ:ïŽ?µY¾F¼?ÐbMÝn½?’ÙÉÏ·Y?|™;ÕÄ?/]Å\‰?ÑùF#¼?MÊñÊ4C?€bwÄ' g?Œ­Ea©Ó‰?‚sÔü!Ø?‚å¬C>¥’?†‹—ð -«?†ó|V@@(@"@&@8@7?ð?ð?ð?ð?ð?ð¿5ŽËi8¿+¤ûÀ?(˜`¬±? Ñ^=ÂÖÞ@­hèv(R@™yx1Uv?#b[È9K.?/ÕÎÿž'?B|z“£êñ?VCEv¤f@ŸsoI¦_@¥@¡‡+ J@¡€ä‹ë“@¡‡+ J@¡‡/‹5¹@¡‡+ J@¡‚©™³@¡‡+ J@¡…œ„Ͻ@¡‡+ J@¡„žÚ¶@¡‡+ J@¡…Â\*@§žÉ7Kƨ@§žÀ@§žÉ7Kƨ@§žÁØ‘&5@§žÉ7Kƨ@§žÅ莩5@§žÉ7Kƨ@§žÇj r´@§žÉ7Kƨ@§žÆ$æý@§žÉ7Kƨ@§žÇõíÒ@8IÎ_oÒ@8LÎW}þ¬@3ÇÎÙ‡+@3Ä"q)¡¶@2¬j~ùÛ#@2­Úâ[@1𖻘Çã@1ñ¤Wžmã@1𖻘Çã@1ô -ÐÍZæ@1𖻘Çã@1õž1:~?z›Mß ?‘…?©,žG?‘A…Þ¬Ã?‹õ­·%9ó?’ÈwD['Ž?‘ù‚ôT©?¨àÍõ°R{?–kS©²?€~€³q?1ír:ÇÔ?“œ.{*V?‘ïù°ª¹„?¢dÎâÓõŠ?.×­stî?‹rè,z™Ö?‚éQ{ଠ?‹l· ps?ˆŠ«å’{¶@@$@@@6@4?ð?ð?ð?ð?ð?ð?Fˆ#qÜ?J–ÁÊ?@Ie>ü8?GÔœè#@¡„ý«f@§žÆ¶w=~?Vuûïþ'Å?]“wö?¨›I•F ?¯Ç\Àf@ŸoÉe Ã@¦@¯°5?|î@¯°vÈ´9@¯°5?|î@¯°b¶®}@¯°5?|î@¯°¾vÈ´@¯°5?|î@¯°;dZ@¯°5?|î@¯°ã¼Ó@¯°5?|î@¯°<64@­&¹Û"Ðå@­&¹Û"Ðå@­&¹Û"Ðå@­&º…‡“Þ@­&¹Û"Ðå@­&¹XbO@­&¹Û"Ðå@­&º^5?~@­&¹Û"Ðå@­&ºxl"i@­&¹Û"Ðå@­&ºu%G@3L]cˆe”@3Lj~ùÛ#@0›¥ãSø@0Âø7´¢@.ÊÀƒo@.e+ÓÃ@-ÿåÉä@-ÿ¤?åÉ@-ÿåÉä@-ÿò䎊q@-ÿåÉä@.N¤¨ÁU?|öOÿÝ?ÖÈ ¼?‘\H{gX ?‹ä†€{6è?‘ ·èf?Å{¿Ž<¹?|¬Çëý ?’›ÈÖÝ?œõLÁE?Y‡…—Ø?‘ ·èf?b¶­-Óx?‚2Y0â³?Œ¸†‡ÄÅ?‚‹¡8*ú?ƒ†+ Å?†žóB» “?†’Õaì+’@@@@@*@*?ð?ð?ð?ð?ð?ð¿*I9¯?ð(cÀ?+~§C{N?D! êßg@¯°&)ï¶@­&ºË?Jóò«*F?/áp.ºÆ?£®J†Ø1Ê?jdÒšþ„r@Ÿfò(#¿V@§@®ó_;dZ@®óc•%@®ó_;dZ@®ó`[À8@®ó_;dZ@®óa½¥@®ó_;dZ@®ó\ÓZ…ˆ@®ó_;dZ@®ó\C,¥z@®ó_;dZ@®ó\„µÜÆ@¥"MÒñª@¥ A‰7L@¥"MÒñª@¥×sü@¥"MÒñª@¥_ö“@¥"MÒñª@¥×s@¥"MÒñª@¥Å‚@¥"MÒñª@¥SŽóM@6-¥œàv@6(âe+Ô@2©‡+ @2ž¤¨ÁTÉ@1îùÛ"Ðæ@1ä¨ÁTɆ@1?ò䎊r@15ðoiDg@1?ò䎊r@14ã¼ÓZ†@1?ò䎊r@16R½<6?žˆ2}?’u~•Ñ?–@”6Õ«‡?“ŒÒ•ÿV{?’ÒuèçxY?“÷Vdà?€‚ñêã ?•N¬Ÿª`Ž?šJ‘ÍÒÁ?›‘Ûê\PK? p G)L?£:ó;Ãç?Цÿßë?£?Ó%y*£=?„m~Z_s,?„ mŠmsi?‰w¿˜Í¶ª?˜ºíF-dŸ@@@@@*@,?ð?ð?ð?ð?ð?ð¿[¿æ¿è¿lŸ `/?6&Sê;®¹?L‰(ÇlO"@®ó`B£Qù@¥¢JY?UvžÝeÖ‚?iø.$‚Ã?²„QVB)?Ê‘r"ô@ŸdIQ^Ĩ@¨@¥s\(õÃ@¥s£•%@¥s\(õÃ@¥sŠ™0¾@¥s\(õÃ@¥sŒ˜_÷@¥s\(õÃ@¥sÒñ©ý@¥s\(õÃ@¥s¸ºÇ@¥s\(õÃ@¥s‰º^5@@¡6|í‘hs@¡6‰ûçl‹@¡6|í‘hs@¡6}IQ‚ª@¡6|í‘hs@¡6…¼£n@¡6|í‘hs@¡6ŽÙ‡+@¡6|í‘hs@¡6ˆ§æ›@¡6|í‘hs@¡6“œ¾à@9(†YJôñ@96“t½@2» Iº^@2»/ìVÕÐ@1â-V@1ãa@N¥@10–»˜Çã@1)Çy¦µ @10–»˜Çã@1*Ô,<ží@10–»˜Çã@12ZîcŠ?¾„CÚ–•F?Žd±Ìº?’ -·>á ?îZ¼!ÇŸ?”] -° ?“yÄö%Þî?Åe¨ócQ?’¼MÒÀ7F?‘Jâ”âj?š. Œžô?™=M÷‹¸?—Q,Äš¤?Цÿßë?£?–(Ži´™^?Œ*Ñ¿°×?’ª=˜Å?Ž+ôÐ_ÿ?³ˆ54ˆÜG@@@@@*@?ð?ð?ð?ð?ð?ð¿`ÄÕ4˜€?_ª­|ó?S+ál…ó?h3„7˜îž@¥sŒ·…hè@¡6Ž'mþ?c4Å>™Ø»?x'7.”o7?º¨¢…S–R?Õï Èæ@Ÿr˜·åç@©@£…j~ùÛ#@£…lÌÌÌÍ@£…j~ùÛ#@£…›J#9Á@£…j~ùÛ#@£…Iº^5?@£…j~ùÛ#@£…ov_د@£…j~ùÛ#@£…Òòå@£…j~ùÛ#@£…Š#9Àì@ÏõÂ\)@Ïÿ|í‘h@ÏõÂ\)@Ѫ͞ƒ@ÏõÂ\)@Íûçl‹E@ÏõÂ\)@Ñ¿.Hè§@ÏõÂ\)@Ðξߤ@@ÏõÂ\)@кû~‘@3N쿱[X@3H Ô•*@0c÷ÎÙ‡@/ù¦µ '@/ãn—P@.”ðØDÐ@/Aò×t@-º¬1'@/Aò×t@-µ%F -¦M@/Aò×t@-ômÅÖ8‡?|öOÿÝ?˜RôfÂ'Y?Æœ‚¸ß?®ýäÇ—U?ËX~ƒÌ«?ÍËtÝ8Í?1·†Æjñ?˜ଚÿw?äQô0vX?«o)o%?Ҳ«aK?Ñê»S¡h?ƒ<Õp?¤í=š%^?¯M,L¯6?¶K/ê‰õ? tÆùlŠ?Ü µˆä@@@@@,@,?ð?ð?ð?ð?ð?ð?g0¿Tp?²ëÌA°?a Ìcž¤?‘I6­—JE@£…n1Ï&+@ÐJqñm?cr† Ìl0?”=ÓäÞ"?¶˜m¶OŒ@ú»,4‰]@ŸYÛ·ˆ@ª@°Y™™™š@°[ø/AŒ@°Y™™™š@°Wu–0@°Y™™™š@°üÙÙ^á@°Y™™™š@°!«|k@°Y™™™š@°[dZ¬@°Y™™™šÁ.„€@›5Ðå`A‰@›5í«\ãÕ@›5Ðå`A‰@›? Þ´N@›5Ðå`A‰@›<IœL@›5Ðå`A‰@›:oê«[b@›5Ðå`A‰@›5‚ø7´¢@›5Ðå`A‰Á.„€@8Hè§æ@8 +Òù¤”@3Yº^5?}@1ÙY®ª‰@@3F“t¼@1óZ[å@2:Ô,<ží@1Nã+I«õ@2:Ô,<ží@2;J#9Àì@2:Ô,<žíÁ.„NÜC,¥? %÷TŸ÷³?C› »D?¤í¶eŠZ?¡vŒ$yЉ?¤íõµ_'û@8Ù?„9ts#‘?•ui©¯ !?§ÊEòã¬?©*ÏØàˉ?±È`=4l@8û—?³h!lˆd?Œ»*b< «?ç×PM ¡?£x­Øå”!? ²jÖ]É@8 Ø@@@"@$@,?ð?ð?ð?ð?ðøøøøøøøøøøøø«@¥h¿|í‘h@¥hÄ“t¼@¥h¿|í‘h@¥h½ó¶E¢@¥h¿|í‘h@¥h¸üPH@¥h¿|í‘h@¥hÉ^ž @¥h¿|í‘h@¥h¾ì¿±[@¥h¿|í‘h@¥i$Ý/@«òß;dZ@«ò’° Ä@«òß;dZ@«òœ£n0@«òß;dZ@«òŒô!-@«òß;dZ@«ò“Ð|„¶@«òß;dZ@«òy0¾ í@«òß;dZ@«ò¸7´¢5@7¥öý!ÿ.@7¬¿±[W>@3° Ä›¦@3³33333@3nùÛ"Ðå@3^æ1ø @2OO „M@2E?|í‘i@2OO „M@2ÕfÏAò@2OO „M@2åÉä?}Ñ¿ž,?¥ÅãÈV/?›Ì~” #?’(æ„+Zk?¢Ø2Õ„e?À«/^ðˆ?Ž=fA:? _‰Í@‹ -? ”Ô½Ì=?•Ò_ÇF•?¢éÏŸò’«?ºYù¸Éw?’ÌRû ã?–P¢k"?žâç.¡È?>æ¿Îï?³ˆ54ˆÜG?±a²OúDæ@@@@@@(?ð?ð?ð?ð?ð?ð?U›‡LÜ¿_9 Vˆ?ad%0Ní²?o?}Ñ¿ž,?”” -=ª¸ ?šÛ’ä|?‚á²Olºü?ލf†)"?‹´¡`Ƕà?’»•e¨ò? tÆùlŠ?¨4¨æž@@@@@*@*?ð?ð?ð?ð?ð?ð?\ÔU›‚¿aÅ`ã?HJ¨ÀR¤Í?N4tµÕ -å@§(p·Ñºg@£š+q*l?f‘»d|Ý?l\t™†2ì?Òƒ*„Gp÷?Ù†ÜeâÃ@ŸdļW@­@¯E=ó¶E¢@¯EYXbN@¯E=ó¶E¢@¯E<64@¯E=ó¶E¢@¯E9XbO@¯E=ó¶E¢@¯E=²-V@¯E=ó¶E¢@¯E9‡+@¯E=ó¶E¢@¯E8DЩ@¨ú²-V@¨ú¡‰7KÇ@¨ú²-V@¨úžÅm\û@¨ú²-V@¨úŸ¾vȵ@¨ú²-V@¨ú¢¶®}V@¨ú²-V@¨úžÅm\ú@¨ú²-V@¨úžÑ·@8àØDЩ@8Ô xFÜ@3õãS÷ÎÙ@3÷eýŠÚº@3Ðå`A‰@39Àëíú@2¨è§æ›@2©ÀëíúD@2¨è§æ›@2ª™0¾ í@2¨è§æ›@2©…ðoiD?’Óusÿ\Ã?œ;=?ªT?‘"žæÆó¡?’KŸÐÇ¡?“Œ4f(Rú?’ß5d?ž²5ô$¢?ƒôŸŠø@ŸgG *”¶@¯@¦s¸Ôýó¶@¦s¸Që… @¦s¸Ôýó¶@¦s¼Æ?@¦s¸Ôýó¶@¦s´9Xb@¦s¸Ôýó¶@¦s¾ í(@¦s¸Ôýó¶@¦s²×s@¦s¸Ôýó¶@¦s®±Ä2Ê@©¥`A‰7@©¥¡ÊÀƒ@©¥`A‰7@©¦ffff@©¥`A‰7@©±&éxÕ@©¥`A‰7@©¤tSŽó@©¥`A‰7@©¢ÞѸ@©¥`A‰7@©ŸË’:*@5IÎ_oÒ@5J=p£× -@3Š^5?|í@3ŒVÕϪÎ@3F“t¼@3FÜ]cˆf@2ÜÚQÎ@2Ü¥zxl#@2ÜÚQÎ@2×l‹C•@2ÜÚQÎ@2×Xâe,?€‚ñêã ?/³)sšÌ?‘„ë2‘~?’ {½4?”ä+ïè?› ½†Ò*Ã?1·†Æjñ?’¼MÒÀ7F?‘}7ˆ.Ñ?‘ǧ?D6?“h_N’%¿?Ÿ53‡y–@?‚nâwfÿ?“êXÔ #{?’ž²¢# Y?‡ÕZ›µûÜ?•mCìc¿4?”¦”x£b@@@@@"@*?ð?ð?ð?ð?ð?ð¿P~ JãX?V»ÖF¬ ?-ÓÎÖ ê]@¦s·C(8@©¤+NSÒ?u@°@¢´$Ý/ @¢´%¸Qí@¢´$Ý/ @¢´& -¦L/@¢´$Ý/ @¢´&Ü]cˆ@¢´$Ý/ @¢´%ðoiD@¢´$Ý/ @¢´#¢œwš@¢´$Ý/ @¢´#ˆe”¯@®¢J=p£×@®¢K Iº@®¢J=p£×@®¢I“ àß@®¢J=p£×@®¢KÓÃa@®¢J=p£×@®¢KP°ò|@®¢J=p£×@®¢K’:)È@®¢J=p£×@®¢JOu@55S&Á¾@55+ÓÃa@1B° Ä›¦@1B©“ àß@0²-V@0ŽÑ·Y@0#ÉîËû@0$,<žìÀ@0#ÉîËû@0#þ\‘ÑN@0#ÉîËû@0#ä%®æ2?|öOÿÝ?Čۨ1A?‘e -!ßC?Œ:Z2‚b?‘1 °µv¦?ÛF»0?|öOÿÝ?’j%ÓRa?ÏtP°*?ni"Í š?‘ ^Íü?ÿ?½y ¦Å?† - Ðló\?ŒË›Í‡Çq?‚Ì ÝŽ‚8?ƒ ?ÿ½?†ÃÛSPã?†µ°jÆÃ@@@@@$@(?ð?ð?ð?ð?ð?ð¿0 ÿbØ¿ 2sY?.[¬?"ž™âɬ@¢´$ºdò@®¢Jöx¥&?MÛFå'~?Bj¹ YÝ!?§ìóHº¤?‘E‘¿Î@Ÿfé(®Òû@±@¥F÷ÎÙ@¥F“t½@¥F÷ÎÙ@¥E­jO@¥F÷ÎÙ@¥E첕éâ@¥F÷ÎÙ@¥Eîp:û@¥F÷ÎÙ@¥EÍ„M;@¥F÷ÎÙ@¥EÇâ‚@¸@­5ò° Äœ@­5õ?|í‘@­5ò° Äœ@­5ë6z@­5ò° Äœ@­5ðHð@­5ò° Äœ@­5íí(Œè@­5ò° Äœ@­5ò䎊r@­5ò° Äœ@­5ó©*0U@7Bò䎊@7#n.±Ä3@1; Iº^@1QÎ_@0t¼j~ú@/ÙÛ"Ðå`@/G“Ý—ö,@/›¥ãSø@/G“Ý—ö,@/ Q‚©“ @/G“Ý—ö,@/.±Ä2Ë?¥Ìõ}êáþ?¾Ì(hÆ ?¬4F&xé?ŽõÕJ?¶­Oú?æ?¸LcÙRú?}Ñ¿ž,?›¾³LR_5?¢VÂÀ@@@@@*@,?ð?ð?ð?ð?ð?ð¿…Rß¿"€¿G«ƒ€H?hÒ´}¤Ïr?EY /@¥Eïä¬@­5óK‡­¿?vžµb¿•l?fï†,­?Ô a¥ïýË?Ð’/GSm@Ÿho@Hî¦@²@¢‚Ú¬1@¢‚Û¥ãSø@¢‚Ú¬1@¢‚áò×s@¢‚Ú¬1@¢‚ÓMj@¢‚Ú¬1@¢‚Ú–¼@¢‚Ú¬1@¢‚ÛÍ5¨X@¢‚Ú¬1@¢‚ÝÙb¸@®½“t¼j@®½(õÂ@®½“t¼j@®½éùs@®½“t¼j@®½Y³Ð}@®½“t¼j@®½!G®|@®½“t¼j@®½kP°ò@®½“t¼j@®½쿱[@9-¥œàv@9/²-V@4\Iº^5?@4`ÿ—$tS@3®ùÛ"Ðå@3³©*0U2@2ÜÚQÎ@2â£S&@2ÜÚQÎ@2á£n.±Ä@2ÜÚQÎ@2á ²•éâ?¯ò5}'Î?“…­tµH?”Uy*i?–ËÒÙI°?…ÅBðrç?’ ·6Öc¤?ŸÖÒä-2¢?˜Kª³Fš?˜Ü“Œ¾?–ôË{Q?º¬(É™¹Æ?˜ÔÞÑ—æJ?•@K/Ù{?Šˆ€!B®?‰Â“yä–ê?Œúq‘@@@@@$@&?ð?ð?ð?ð?ð?ð?R{Äî?:N€?AÇþ©ù“?EœÐ·Ác@¢‚ÛLPç@®½®¸£ ?TË;ç‰9J?lPAô,b?˜¤‰t0~?ǵOŸ ¸@Ÿoq–í¶+@³@¥V‰7KÇ@¥V}ó¶E¢@¥V‰7KÇ@¥V¸ºÇ@¥V‰7KÇ@¥VŽV’@¥V‰7KÇ@¥V‘œàu÷@¥V‰7KÇ@¥VŒ/ƒ{J@¥V‰7KÇ@¥VŠ#9Àì@¨U&ffff@¨U,ÌÌÌÍ@¨U&ffff@¨U6lô!@¨U&ffff@¨U.p:û~@¨U&ffff@¨U;=ÈK@¨U&ffff@¨U*™0¾@¨U&ffff@¨U*dÂø8@7–»˜È@7|¹#¢œx@2óS÷ÎÙ@2÷ö+jçÕ@2~ùÛ"Ñ@2¾ß¤?æ@1Åœàu÷@1Ö8†YJõ@1Åœàu÷@1ÒœwškQ@1Åœàu÷@1ÔSŽóMj?…ÅBðrç?”êÎlŒy?œ -¦ÃDþ?š±‘DN?Ÿˆ`“Q?œ  ¯Õ?„F/·ÿP5?˜Ø*ªl€ô?—ˆ”„òõ¤?£aº‘¯o;? p G)L?›¶x•7fÙ?“²pÅâ-Ý?’pP‡È»?‡YÍ`?‡v¯ªIì?¾Á{þÆ%?” 4‹eñ -@@@@@,@(?ð?ð?ð?ð?ð?ð?lM‰#¿9W@?Xa;ÉŠ?Vií?À@¥V…ˆj^F@¨U-BA?wßB‰y¶?v‚ÞÂý">?æøæ8‹ V?ã°/„ß@ŸeaÏ«9@´@ Š+ J@ Šq´xA@ Š+ J@ ‰æ¸ºÇ@ Š+ J@ ‰ï\(õÃ@ Š+ J@ ‰ù³Ð|…@ Š+ J@ Š#{J#:@ Š+ JÁ.„€@«‰7KÇ@«ÊÀƒ@«‰7KÇ@«-V@«‰7KÇ@« /ƒ{K@«‰7KÇ@«'¯·é@«‰7KÇ@«3t¼j@«‰7KÇÁ.„€@6™*0U2b@6˜l"h Ô@4)‡+ @4ò䎊r@3×ï²-@3ϲ-V@3Eœàu÷@3@ªdÂø8@3Eœàu÷@3DÝ/Ÿ¿@3Eœàu÷Á.„NÜC,¥?~Ov_Ø­«?œÿ‰eVé?¢Á2ØñÔD?ž\ôÖeú?¬  KüÞ@8Ù?‚Cš æI?£š¨ž(?¡n¡Žv›-?°G²±Ùn?¥yoÌå@8û—?ƒ!;c,`?“&•Z÷˜#?¢ÿÐ4Ây€? Ú˜í2Uš?’¸ø‰o@8 Ø@@@@@,?ð?ð?ð?ð?ðøøøøøøøøøøøøµ@¬ÏD›¥ãT@¬ÏB\(õ@¬ÏD›¥ãT@¬ÏE¸Qí@¬ÏD›¥ãT@¬ÏE¼£o@¬ÏD›¥ãT@¬ÏF€IQ@¬ÏD›¥ãT@¬ÏCFÜ]d@¬ÏD›¥ãT@¬ÏCa@O@©G¸Që…@©G¶È´9X@©G¸Që…@©G¸l"h @©G¸Që…@©G¸“t¼i@©G¸Që…@©G·Á½¥@©G¸Që…@©G·§†Â'@©G¸Që…@©G·éùr@7Žì¿±[X@7„M:’@20Ä›¥ãT@21N;Í5¨@1H“t¼j@1Ik¹Œ~(@0³&Á½¥@0´?åÉ@0³&Á½¥@0³Ý—ö+k@0³&Á½¥@0³ŽóMj?—¤o„C?êÚÏ$?‘D&»ä?ŽAtùð¥t?‘ÇöÃÞ`?‘6 '8?|¬Çëý ?’0nà=Q“?‘8“‡«G?‘l™šU?‘ØèOÍ ì?‘!U?Ð{Ò?‡š¿]bœ?=d­úå?ƒ]€µ,Vß?ƒ¦$H?†Óß -tõ?ˆ‹”âó@@@@@,@(?ð?ð?ð?ð?ð?ð¿³G? ?/¨#¡ ?Gm&¹“‚?îP-Àä@¬ÏDX˜ê@©G·€¼ô ?bw=d‚$G?+±^ o?Àž ÈL«?Z´¸7Ò¹2@Ÿlygaëá@¶@¨€›¥ãSø@¨€™Û"Ðå@¨€›¥ãSø@¨€›˜Çâ‚@¨€›¥ãSø@¨€}¿H€@¨€›¥ãSø@¨€›W>«6@¨€›¥ãSø@¨€™³Ð|…@¨€›¥ãSø@¨€˜DШ@­­ŒÌÌÌÍ@­­ŽÙ‡+@­­ŒÌÌÌÍ@­­ „M@­­ŒÌÌÌÍ@­­ŒVÕÏ«@­­ŒÌÌÌÍ@­­‹jçÕg@­­ŒÌÌÌÍ@­­Œ/ƒ{J@­­ŒÌÌÌÍ@­­Ž.±Ä3@7àØDЩ@7áhr° Ä@3Ù‡+@3!-w1@2y7KƧð@2y k¹Œ~@1Åœàu÷@1ÅF -¦L0@1Åœàu÷@1Å+ÓÃa@1Åœàu÷@1Å¡ÊÀƒ?¡EÉ@Ú?òb[±?–/¸Í”p? Í‹hÆ?’FL{öó?‘uu‡éÚÇ?ˆÿÀ)T¿Æ?•üƯÁ?‘¡Kd·´+?‘aYZ†«q?’íßš?‘"›ö?¨3 ¤qâ?Žrø·óæ?…cü›Š×Õ?„Ö©Ú0?ˆA0û)n?‡L8õASÎ@@@@@*@*?ð?ð?ð?ð?ð?ð¿D(èv¿7Vê`??ƒ {Pm?<{Ÿ‚Zñ“@¨€šÜpR@­­4‹>Þ?U;ì»z„?^OQÆW?£mq€Éd?¹JÃsðs @Ÿn[ðð7–@·@ªhr° Å@ªg0 šc@ªhr° Å@ªe#v/n@ªhr° Å@ªir} -[@ªhr° Å@ªl =§„@ªhr° Å@ªfŒ3 @ªhr° Å@ªgÖ›%Ë@›b0 Ä›¦@›b0Ó¢±@›b0 Ä›¦@›b&DΙ@›b0 Ä›¦@›b)¾'*£@›b0 Ä›¦@›b(îëKÜ@›b0 Ä›¦@›b,&bT@›b0 Ä›¦@›b"ÿ/M@7Bò䎊@7E®“<æ@3«¥ãS÷Ï@3«Íë)xã@3`A‰7L@3n@2ºÔ,<ží@2·®ñu ¿@2ºÔ,<ží@2¹-›;.@2ºÔ,<ží@2¸g^eñs?}x—™?ŒUrx¨â?‘àÙN½²l?‘õ>£Uâ?~Ov_Ø­«?’fÊc?’ÌR úã?[[äÿ?”ªm™Žn?„¾T¢bå?ƒs'£Ù%ˆ?ŽwGÈ{ÙC?…ºA_K?„ª.XýÎ?ˆ±%û¥c ?‡–jÕ¡º@@"@&@@3@&?ð?ð?ð?ð?ð?ð?7k“ ¿SÒ˜?H-*gM6?4‹>²ñb@ªh`?3¤@›b+š i?gÛ7](…Þ?TâË¿¡À­?ܤìr²?´•?·WR@ŸfÇkYä²@¸@Ÿÿ¬1'@Ÿÿ¥ãSø@Ÿÿ¬1'@Ÿÿ¬·h@Ÿÿ¬1'@Ÿÿ"Œßp@Ÿÿ¬1'@ŸÿRÖË@Ÿÿ¬1'@Ÿÿ #”;@Ÿÿ¬1'@ŸÿiÀ9@£ì1&é@£ìIº^5@£ì1&é@£äo.´Š@£ì1&é@£Þf¹À@£ì1&é@£çà$È<@£ì1&é@£çfòAÛ@£ì1&é@£ãÚ$¬5@3½:’£@3½5¨Xy>@0«¥ãS÷Î@0ªo»½Mâ@04“t¼j@00óXÃe@/³üPH@/­ ŒFgÉ@/³üPH@/­6 E@/³üPH@/®¨.î—R?|¬h2:“?ãr—•{á?’QÜ:U?ü¶\kŸ -?‘ÃàcD:Ö?‘R«d"?|Ñb×¶@?’1˜… ”}?’­%¬?’1>á”’?‘þö2Ÿ¿?‘XѪƒˆ4?‚š@”?Œ¼‚wàÿš?‚­‚_6C?ƒšO¦è ?‡'µ0È?ˆ7ÚsÔh@@$@&@,@7@7?ð?ð?ð?ð?ð?ð¿b7eQ0¿Yw%Є?<‹ãX½†Ü?'þ>Ê.î£@Ÿÿ–+cÊ@£èþ˺ô?\rð<€ñ?Hm®g>Ôm?Åòe3ƒÍ?œ†uq¾@Ÿf“5ÚMâ@¹@ªv'l‹C–@ªv+C•@ªv'l‹C–@ªv6âëC@ªv'l‹C–@ªvA:’£@ªv'l‹C–@ªvBœwšj@ªv'l‹C–@ªv14êJ@ªv'l‹C–@ªv2{²þÅ@cMÒñ©ü@cY™™™š@cMÒñ©ü@c~($ x@cMÒñ©ü@c‰ 'RS@cMÒñ©ü@cšu%G@cMÒñ©ü@c£S÷ÎÚ@cMÒñ©ü@c¥ýŠÚ¹@504mÅÖ8@5FIlÊ@2—+ Iº@2$¢3œ¿@2²-V@1ÛÓÃa@@2TmÅÖ8†@1~šu@2TmÅÖ8†@1€Ë)^ž@2TmÅÖ8†@1€Ë)^ž?|Ñb×¶@?W[†?–•Kù̃æ?r*ž¾Ž?”Ôð|c¤?‘£‡9²þ?}õ¬#„­?“$i «%h?’˜l%F…Z?‘ÿŒŒhÚ?“Al.6¸?”Æ*%>g?‚o†#BpW?œ‘z¥æ?„ü›ðÓ?‡W·ŽA:Þ?‡æê7²zE?ŠE§e,¤@@@@@,@(?ð?ð?ð?ð?ð?ð?d›P?‚A¼™«À?c|1®Ìèt?UûP Mõ@ªv1­ºÝ”@cˆ©fý?ƒWÐÄ`Ûo?u¡ˆ‡[¢ -@Äa -+ä?ó—wäœ_@Ÿeù{έ -@º@£áŒÌÌÌÍ@£áŽV“@£áŒÌÌÌÍ@£áŽ}Vlô@£áŒÌÌÌÍ@£áŽ}Vlô@£áŒÌÌÌÍ@£á’-V@£áŒÌÌÌÍ@£á‹C,¦@£áŒÌÌÌÍ@£á‹¬q ´@®\=p£× -@®\A‰7KÇ@®\=p£× -@®\>š@®\=p£× -@®\@ù kº@®\=p£× -@®\A£n.²@®\=p£× -@®\@ù kº@®\=p£× -@®\>ùÛ"Ñ@6^Hè§æ@6^¸Që…@3° Ä›¦@3“Ý—ö+@2V”@2œç¯·é@1°–»˜Çã@1³Ãa@O@1°–»˜Çã@1¯ „M;@1°–»˜Çã@1®ÒˆÎp;?‚á²Olºü?’Qÿc -?”—ýÉò€?Aš%ðï?’¥.Kn Í?’ß5G]!?’W;„zY?“‚í?eBZ?•@K/Ù{?‘5ø gµÒ?„A'Š_^?…<ò N ?‰ö±«tï?ŠEÝ‹N@@@@@*@*?ð?ð?ð?ð?ð?ð¿6°‹X¿7¢»ð?K b‚F«?.tÁ…V@£áŽ(r·|@®\@윟½?k18k¨ß?M¨Ýâ':F?Ü/~{m»Ê?šÍšÁê@Ÿi'PÔ̽@»@¥!õ?|í‘@¥!ã× -=q@¥!õ?|í‘@¥"·éù@¥!õ?|í‘@¥"záH@¥!õ?|í‘@¥"§ï±@¥!õ?|í‘@¥"Ü]cˆ@¥!õ?|í‘@¥"ohÜ@ŸI Oß;d@ŸIOß;@ŸI Oß;d@ŸITÉ…ï@ŸI Oß;d@ŸHþùÛ"Ð@ŸI Oß;d@ŸI - Þ@ŸI Oß;d@ŸHûµsì@ŸI Oß;d@ŸH÷škP±@8?–»˜È@8OŸ¾vÈ@3 Iº^5@32ÊW§†@2²-V@2g8}¿@1®_oÒ @1œ‹C•@1®_oÒ @1˜1&éxÕ@1®_oÒ @1˜r° Äœ?ð°–Ž]?¥L 5¨dÍ?š^ÇÙ*G?–õJe ?¢cfµ(ë?  =%º?ð°–Ž]?™jK¸­€t?’Qÿc -? ¬%)¯?ªä¬¯kF?¨Ò,[œ•?ð*wjs—?™Ø7&½ x?„W;RT?”*+JÒšF?‘éXñ„–†?‘À³ûê%§?ð@@@@,@*?ð?ð?ð?ð?ð?ð¿`ƒÿ¿qXps€?PmÌnÅý³?DàÕÙõ@¥"'‡ß@ŸI2Ó#BZî@¡ûixÔýô@¡ûhe”¯O@¡ûixÔýô@¡ûgRT`ª@1Ñ|ÚQ@1щ7Kƨ@.kƧï²@.iº^5?}@-ÊÀƒo@-~¸Që…@,õ¨Xy=Ú@,ðÿ—$tT@,õ¨Xy=Ú@,ñ&éxÔý@,õ¨Xy=Ú@,ò:)Çy§?Éa—Ã(Ê?ôÊ_?‘SŸ[ÈÙ?Œݶ\ñr?‘¾%î -ã?È2I/?ÐbV‡,?’,ö´´Ï#?‘t‰WZñ?‘.“¥?‘ ÛÌÏõA?‘yÃúCŠ?€cPßQª?Œ».êxóÚ?‚¸“Îè ø?ƒ=rµE=?†å·ÑfWà?ˆ0&YÊEd@@@@@&@,?ð?ð?ð?ð?ð?ð¿K“XÙ€¿8[Us2?1œnnË·?/ñÊdþ @§ÂLDYº@¡ûh ÕÝ?@ó¿ÀÓÁ?=\e¦÷?{µõŸþ7?pàÐT‰P€@Ÿs†k<Ú@¾@©ß;çl‹D@©ß@©ß;çl‹D@©ß<ðG»¦@©ß;çl‹D@©ß:í‡,@©ß;çl‹D@©ß; ¶ÅŒ@”­å`A‰7@”­æƒB@”­å`A‰7@”­æÄÏE@”­å`A‰7@”­ãj\ÜÆ@”­å`A‰7@”­ã_œ^@”­å`A‰7@”­åŸ{@”­å`A‰7@”­ã튫©@5‘|ÚQ@5’«Crél@1f‡+ J@1gD5ÎŽ@0´“t¼j@0´±î$5j@/ð‰ 'RU@/òkŸÔ:@/ð‰ 'RU@/ñÿúâ @/ð‰ 'RU@/ñƽúã?~ì“?ÕÒJ?ü›Î>SU?‘/þù:hn?‹Þ%À£ ?‘ ‡  ¬?ȾŸ¸ª?~Ov_Ø­«?’%õ…mR ?ž8‡Üõä?DNX”1°?ì*d?€˜?rÐûG½?‚tî_™FS?Œ½K ìë?‚š°3ÙÄt?‚ærݳ«&?†œ!R#?†Ä?÷d±@@*@&@*@;@8?ð?ð?ð?ð?ð?ð¿/‰åXÀ¿)÷ëE¸?(¯äˇƒ¥? ÞoÙ³kF@©ß;ÿûÉv@”­åÀê`?H¢‡å,?AI ˆÝX”?Ÿ&eõ¶h?•©@Ð\@Ÿgbm!Oõ@¿@¢°‡®zá@¢°‰ûçl‹@¢°‡®zá@¢°$Ý/@¢°‡®zá@¢°†Ü]c‡@¢°‡®zá@¢°°‰ '@¢°‡®zá@¢°‡ÕfÏB@¢°‡®zá@¢°‚@·€4@¨ûÖ‡+ @¨ûÛdZ«@¨ûÖ‡+ @¨ûÓMj@¨ûÖ‡+ @¨ûÕfÏAò@¨ûÖ‡+ @¨ûÚ…‡“Þ@¨ûÖ‡+ @¨ûÙe+ÓÃ@¨ûÖ‡+ @¨ûÓüPI@8eöý!ÿ.@8S33333@3‡ÎÙ‡+@3…oi@2ß²-V@2Ü‘ÑN;Í@1𖻘Çã@1ìÚQÎ@1𖻘Çã@1ëµsê´@1𖻘Çã@1ì£n.²?óA[ØïF?*£|3Né?–/¸Í”p?Uÿyu”#?šµV0o~8?•iá¸OL™? Eˆ‡ðó‹?“-N•I`(?”€@N¯â?’k­ªì¢H?¢£xŒ(Â7?šºi 0/¥?–Ϥ?þ,DöP?“àÕèéa‚?„XïWÉò~?%üdêË?Ò0aˆ‡‡@@@@@,@(?ð?ð?ð?ð?ð?ð¿W[UÁ6¿Zæ02 -?P›ä‰ÇÍ?K™ª\õV@¢°„­C¨ù@¨ûØìfy„?oú“{IÞ?e*ˆÚðôë?Óál³‹%?µ}+åÎ*Þ@Ÿl'螎@À@§[~ùÛ"Ñ@§[‚p„ÿà@§[~ùÛ"Ñ@§[dŽŠqß@§[~ùÛ"Ñ@§[_b¶®}@§[~ùÛ"Ñ@§[E8ï4×@§[~ùÛ"Ñ@§[ªÍž„@§[~ùÛ"Ñ@§[–ý!ÿ.@šÃ•%@šÌ`¿V@šÃ•%@š€ëíúC@šÃ•%@šTzáG®@šÃ•%@š6È´9X@šÃ•%@›0:û~@šÃ•%@šï²- @8=:’£@8GõÅ;n@3E?|í‘h@32×sü@2È“t¼j@2¯Š Þ@2fYJôðØ@2vs×Ûõ@2fYJôðØ@2<ÌÌÌÌÍ@2fYJôðØ@2 Ì?¯AŸð~“?¬úh¬‹îÂ?…ÅBðrç?ð¢dx/?׈à(ì?ÈÂÙ`Ý|?´ºúÌ!{’?³³¬è®û›?Ÿ|–„aQ?ðfÁbÂô?ø«RCK¼?˜m7>ên?‹&¸ê±fÂ?¨jN‹­÷R@?ð@@@(@(?ð?ð?ð?ð?ð?ð?o¬Qç:?‡vAg8€?‘½6‚óÇQ?„ý¦>;3c@­­ìMôã@­Ñ -H\?«÷s‚s ?œÛ f0&Í@;ÞzÙ0È@®‡|s @Ÿ`{…¤ @Â@­töÈ´9X@­t÷KƧñ@­töÈ´9X@­tû=ÈL@­töÈ´9X@­týIQ‚ª@­töÈ´9X@­uä÷eÿ@­töÈ´9X@­tüÚQ@­töÈ´9X@­tú)Çy¨@¥pyXbN@¥pyXbN@¥pyXbN@¥p{çl‹E@¥pyXbN@¥pxQë…@¥pyXbN@¥pz¬Ùè=@¥pyXbN@¥px_ö”@¥pyXbN@¥py‡+@4Œ]cˆe”@4ŒIº^5@@2+¥ãS÷Ï@2(>BZîc@1š~ùÛ"Ñ@1”ohÜ@1 ù kº@0ÿØ­«ŸV@1 ù kº@1-w1Å@1 ù kº@1ò×s?}Ñ¿ž,?¥nÇx?)?ššÒèôɲ?•oÕ=\<Â?’š'†­`í?’T«¥-ÚN?}Ñ¿ž,?“xß–ø6œ?– íÇyz?“¶Ì¶Öj”?• ¸°R¨?”Æ*%>g?‚oÁÆÜ§ö?þþoÀM?‰ÕäÖ‚‚?‡õ{CxÞ?‹aÊ•TI?‰Â“yä–ê@@@@@(@,?ð?ð?ð?ð?ð?ð?QÕÝôп.Z?L¿›*¬W?*¼'9DÂã@­tù;@¥pyT²ˆ½?m nèÒB$?J‚óÕˆO?â‰FË‘?›rD‰è–…@Ÿeâ­Û'Á@Ã@¤Ò…¡ÊÀƒ@¤Ò…¡ÊÀƒ@¤Ò…¡ÊÀƒ@¤Ò†?@¤Ò…¡ÊÀƒ@¤Ò†$Ý/@¤Ò…¡ÊÀƒ@¤Ò† -¦L/@¤Ò…¡ÊÀƒ@¤Ò…F -¦L@¤Ò…¡ÊÀƒ@¤Ò„Âø7µ@®=ë…¸@®=©ûçn@®=ë…¸@®=ÊW§‡@®=ë…¸@®=T`ªf@®=ë…¸@®=Î_@®=ë…¸@®=a|Ú@®=ë…¸@®=GE8ï@3åöý!ÿ.@3åðoiDh@0O|í‘hr@0O±[W>«@/¥¡ÊÀƒ@/¦$Ý/ @/­úCþ\’@/¯'»/ìX@/­úCþ\’@/®}Vlô @/­úCþ\’@/®cŠ ?|¬Çëý ?äm°û0Ž?‘ÌË>¯f?‹ë¤½?‡á?‘çG¸?âé¨ë7F?|öOÿÝ?’ -‰¸Ì?~ËQ§?Hª¦ºón?îCq$u?ƒÁþGEÛ?‚‹¡8*ùÿ?Œ».êxóÚ?‚¸“Îè ø?ƒ ?ÿ½?†¼Š˜L¥÷?†¼Š˜L¥÷@@@@@(@(?ð?ð?ð?ð?ð?ð¿_Le@?q˜Ó@?Iaè?ä°‰Êí@¤Ò…|u~Ä@®=Õ;ž8?fÂ1åþe?…Û÷<б?‡ß‡R% -@Ÿf꼄IA@Ä@®ò#× -=q@®ò(´9X@®ò#× -=q@®òš@®ò#× -=q@®òÆ?@®ò#× -=q@®ò -à@®ò#× -=q@®òÅ€@®ò#× -=q@®òÎÙ‡@§‚\(ö@§fffff@§‚\(ö@§÷ÎÙ‡@§‚\(ö@§ó¶E¢@§‚\(ö@§½¥ž@§‚\(ö@§†Á½¦@§‚\(ö@§ÿ;dZ@804mÅÖ8@8#©*0U2@3‡ÎÙ‡+@3W ù k¹@3“t¼@2Ï—$tS@2ý!ÿ.I@1íæšÔ,=@2ý!ÿ.I@1óZ…‡“Þ@2ý!ÿ.I@1ðbMÒñª?„F/·ÿP5?”·'‚5â–?“mî–‚Žr? Í‹hÆ?–ç=ìW·¹?”ÙA!Xá¨?…ÅBðrç?¿è„åÕ?À!ÕÞBL¾?ÏGjH>?Ò¨òv‡í?ÌBL«³?¥×»xG–?”kcÿä©Ú?‹ÛÛÐïF?‘V]9½êV?—H—‹‰ -0?¬øþÓQ@@@@@,@,?ð?ð?ð?ð?ð?ð¿pdóŸ¿ + Òüu?Ÿ”ºs¶Q?¸ùåá+"@ŸqÙǨ@È@¬„záG®@¬„¼j~ú@¬„záG®@¬„,<ží@¬„záG®@¬„¨Xy>@¬„záG®@¬„%F -¦@¬„záG®@¬„3333@¬„záG®@¬„,<ží@¡x!G®{@¡x Ä›¥ã@¡x!G®{@¡x!G®{@¡x!G®{@¡x Ä›¥â@¡x!G®{@¡x"MÒñª@¡x!G®{@¡x!|ÚQ@¡x!G®{@¡x ƒn˜@4 ]cˆe”@4 £n.²@0ahr° Ä@0aœàuöý@/ ƒn—Ž@/¡:’£R@/¸7´¢3œ@/¹e+ÓÃa@/¸7´¢3œ@/¸Çâ‚@¸@/¸7´¢3œ@/¹JôðØD?|öOÿÝ?/³)sšÌ?‘:€¾¶ˆ?‹ë¤½?‡á?‘5ø gµÒ?âé¨ë7F?}Ñ¿ž,?’ -‰¸Ì?«'Q™µ?>\‰å‘?‘+ùÔ!½‹?›ªU3Îp?ƒúʳ_Ã?Œµ3‰;šÏ?‚á²Olºý?ƒ†+ Å?†ÃÛSPã?‡ã ËÄž@@@@@,@,?ð?ð?ð?ð?ð?ð¿$“à2@?×=Ÿ`?&)"&yE(?)by—þëW@¬„tœ@¡x!3£L?F,½¼â?IÓ#ÉÑ5ì?šw C÷Q? ¶J »¼D@ŸgÁ“`[@É@¤$ºáG®@¤$§ï²,@¤$ºáG®@¤$¾ÿ—$@¤$ºáG®@¤$½ÈK^@¤$ºáG®@¤$¼ú¬Ùè@¤$ºáG®@¤$¹=Ùc@¤$ºáG®@¤$Çï²-@®wgl‹C–@®w}ó¶E¡@®wgl‹C–@®wdZ¬@®wgl‹C–@®wh1&éz@®wgl‹C–@®weãS÷Ï@®wgl‹C–@®whð@®wgl‹C–@®w•Â\)@6àØDЩ@6ÉXbMÓ@2ÜIº^5?@2ÛàÞÒˆÎ@2²-V@2\(õÂ@1ýcˆe”°@1û~ÿ—%@1ýcˆe”°@1û/ìVÕÐ@1ýcˆe”°@2ÊW§†Â?¶™b’jk±?½Ë9ØŠ§?’µ<ëvar?Ž £Ú?‘§›ßÉîj?–ËÒÙI°?¶™b’jk±?“ý•‘|?Ê -ä\ä?‘3)10ÑF?‘„ÅMè?•±ŽnBTß?É ‘˜çZ?\{ÏïŽ?†aÞàI*•?…âC£½¾Ý?‡2[síç?”ø™¾@@@@@"@&?ð?ð?ð?ð?ð?ð?n8â½ö?Œ«zŒ?jùާC?„šK.aR2@¤$½½ùTê@®wp‚Ö–?y·©ÿ1¿è?”USuðUH?ê[ ñëÒ„@Ú½Eeaì@ŸqEh^Rp@Ê@¯¼œ¬1'@¯¼ŽÙ‡+@¯¼œ¬1'@¯¼.—Oß@¯¼œ¬1'@¯¼T,<ží@¯¼œ¬1'@¯¼E¡ÊÀƒ@¯¼œ¬1'@¯¼ uöý!@¯¼œ¬1'@¯¼š@ŸÃ]/Ÿ¾@ŸÃKC•@ŸÃ]/Ÿ¾@ŸºÊqÞi­@ŸÃ]/Ÿ¾@Ÿ»Ž¾ß¤@@ŸÃ]/Ÿ¾@Ÿ¹¸ -à@ŸÃ]/Ÿ¾@Ÿ»BÃÉîÍ@ŸÃ]/Ÿ¾@ŸºåÉä@8kµsê´@8c•$Ý@5k¥ãS÷Ï@4BëC,¥@5å`A‰7@3ŒC,¥zx@4ÚQÎ@2Îp:û~‘@4ÚQÎ@2ׯ·é@4ÚQÎ@2ÛP°ò{³?ªÝ8Ⱥ™J?²Z£éð ?³K¸šïHä?›À‰¥xsÎ?ªõ9Vc‚ ?¬–f¥Ï?·à¦_ëý?Äyï ~L?àQ‹Àn?ºº!Ú?à>Êš€Cq?Þ÷•pŠ«u?Äz§6À¿?•ða˜,F?£?k2ö5?†Á{0Ÿà®?¢¼@•&ö?¢VÂÀ@@@@@,@*?ð?ð?ð?ð?ð?ð¿˜Òš£@¿Ù¹÷†œ°?ksHØ*¬?¶oí94 ë@¯¼[—@Ÿ½Z]ÿ?†Ož<}?Ðø®/?Åo?Ú{ /gv@: I ò€4@Ÿd–!}zi@Ë@§ò Iº^@§òÃ× -=q@§ò Iº^@§òÄtSŽó@§ò Iº^@§ò²n—P@§ò Iº^@§òÂMÒñª@§ò Iº^@§òÂ\(ö@§ò Iº^@§òÂ&€J@×Þ5?|î@×õ?|í‘@×Þ5?|î@×Ö8†YL@×Þ5?|î@×ïiDg8@×Þ5?|î@×áÿ.Hê@×Þ5?|î@×ãn.±Å@×Þ5?|î@×ÜwškQ@7àØDЩ@7á‰7Kƨ@3pÄ›¥ãT@3nÅm\ú­@2ÝV”@2ßHË’:@2Eœàu÷@2F”FsØ@2Eœàu÷@2G$tSŽô@2Eœàu÷@2FÕϪ͟?’Óusÿ\Ã?™Ô_ Ï ý?£ÃŠëyŠ?’ñ¼wn-?“XMHñëž?’_‘Oo¨Ž?¢F^ì¼Sð?•¤-'Ä,?œT¹o¿‹õ?“ÅëJkÙ?“4¦{ºÕ?“{P»á? øk@×õ{?‘ÌAzÁý?‰ZaizÚD?‹8¹ª?‹¼`’ i2?ˆk! ¨l@@@@@*@&?ð?ð?ð?ð?ð?ð¿5CÆÈ¿`–íŒ.€?ñF%žKÃ?H¯Lfˆd¦@§ò  j@×ãÓ -‘ã?:a݂½-?ahdí‚T?ob´²I?´O*NÍ:™@Ÿn¡9½q…@Ì@¦Ñhr°!@¦Ò-V@¦Ñhr°!@¦æfffg@¦Ñhr°!@¦ܬ1(@¦Ñhr°!@¦Ûšu@¦Ñhr°!@¦ÙrGE9@¦Ñhr°!@¦ß±[W?@£žD›¥ãT@£žKC•@£žD›¥ãT@£žE‡“ݘ@£žD›¥ãT@£žG“Ý—÷@£žD›¥ãT@£ž9=Ùc@£žD›¥ãT@£žKƧïž@£žD›¥ãT@£žN;Í5¨@7ãg ù l@7Úxl"h -@3óS÷ÎÙ@3èDЩ*@3²-V@3$Ý/ @2œÚQÎ@2’T`ªdÃ@2œÚQÎ@2‹ Iº_@2œÚQÎ@2Œ64ë?Ž=fA:?¡D&d4?œrôeEÜ?“êXÔ #{? òñJÏg?œH÷A”mà?Œs¤DÅÐ?šækM..?™ ?G·W?’îy†Ò‡‚?¢]dÔ}Ê?¢K‡À3I?¤¤zP¼z?”3®èÚ ?qÂ' -Bœ?“ÍÁ!÷G?’d­©‡ò?‘ýÂHåÅÐ@@@@@,@,?ð?ð?ð?ð?ð?ð?ej7H¿\‰ÂÄ?A>ÈÑÇ;W?jh,@¦ØUPÍ@£žDÙây2?`ZâòC?ˆ_‡Ùë)?²župb»Ë@¯ñ00 @Ÿgw]…@Í@©\7ÎÙ‡@©\7 -=p¤@©\7ÎÙ‡@©\4¯O „@©\7ÎÙ‡@©\?b¶®}@©\7ÎÙ‡@©\A×Ûôˆ@©\7ÎÙ‡@©\:…‡“Þ@©\7ÎÙ‡@©\Cˆe”¯@ Æ»çl‹D@ Æ½/Ÿ¾@ Æ»çl‹D@ Æ¿.Hè§@ Æ»çl‹D@ ÆÀ@ Æ»çl‹D@ Æ¾ í(@ Æ»çl‹D@ ÆÕL˜_@ Æ»çl‹D@ ÆÆ§ï²@6쿱[X@6¤?åÉ@3sS÷ÎÙ@3pƒn—@2Ú~ùÛ"Ñ@2à:û~‘@2Š0U2a|@2†µ '¼@2Š0U2a|@2•¸Që…@2Š0U2a|@2…8ï4Ö¢?žˆ2}?’ÕOäª9ô?”lš5B¬î?Œ9‚Ù.?™¼wX¬?—>æV¡¶$?1·†Æjñ?•yom?˜“º£¹‡b?‘3)10ÑF?˜ -†Y ë*?žƒ2¶Í¾?š¡‚\i?[™ÕÈ™8?ޏQë…¹?‹µ¼a?¥VËMª¼‰?°4\ɵ@@@@@*@,?ð?ð?ð?ð?ð?ð?d–êû -?h‘µg?Q+«Þfá¡?`\Z ×ø?@©\¦ß°D@Ÿe8á›S=@Î@®#Z¬1@®#Z¬1@®#Z¬1@®#Zîc‹@®#Z¬1@®#XºÇÊ@®#Z¬1@®#\(õÂ@®#Z¬1@®#X -à@®#Z¬1@®#Y=Ùc@¤ÐÜ(õÂ@¤ÐÜ(õÂ@¤ÐÜ(õÂ@¤ÐÜ64@¤ÐÜ(õÂ@¤ÐÚ^5?}@¤ÐÜ(õÂ@¤ÐÛ=ÈK@¤ÐÜ(õÂ@¤ÐÛÍ5¨X@¤ÐÜ(õÂ@¤ÐÚ–¼@2°4mÅÖ8@2°A‰7KÆ@0Ùº^5?|@0Øè§æš@0±‰7Kƨ@0°°ò{²ÿ@0!:’£T@0 ƒn—Ž@0!:’£T@0 ¾ í(@0!:’£T@0 ØDЪ?É^òÀXæN?Qdöÿô¼?‘`×›mÏ?‹×lÇ…N9?‘çG¸?ÛF»0?ÐbMçê_x?’,ö´´Ï#?ÀpMºÅ?K·‘d]?‘Ú‚ýc¯?b¶­-Óx?€b¡´ñ@?ŒÂ§dß±?ƒmÕ+&¬Š?ƒE 8?†ùadô|?†ïRÉv‘Ñ@@@@@*@(?ð?ð?ð?ð?ð?ð¿V‹Lˆì¿>?¾U?D`?¦x¿¹?;gxµ'YÊ@®#Z?ÄáÔ@¤ÐÛ¹XÒ?Sž¿wÅj?Iüiµª?¢ŽõMÂ?6O2œ<@Ÿs8…ð@Ï@­ö˜bMÓ@­ö˜Që… @­ö˜bMÓ@­ö²-V@­ö˜bMÓ@­ö hÛ‹¬@­ö˜bMÓ@­ö¥ãS÷Ï@­ö˜bMÓ@­ö˜üPH@­ö˜bMÓ@­ö˜Çâ‚A@¥Wçl‹C–@¥Wçl‹C–@¥Wçl‹C–@¥W×süP@¥Wçl‹C–@¥WÁ°‰ '@¥Wçl‹C–@¥WÂÃÉîÌ@¥Wçl‹C–@¥WÀÄ›¥ã@¥Wçl‹C–@¥Wµsê³g@4|ÚQ@4G®zâ@1Ê^5?|í@1Áë…¸R@1¬j~ùÛ#@1›ÚQÎ@1œàu÷@0òa|ÚQ@1œàu÷@0òþÅm\û@1œàu÷@0óÝ—ö+k?|öOÿÝ?%¼ÇÆÃ±?”lš5B¬î?’~ò™rV?’2’Ö¼9?“°™²!¨w?|¬Çëý ?™ Ê£ð‡V?¦Ì· ”?¥fóa]G?¡^候¼?¯{Æì5è?‚‘´…=Ca?ŒÛÏ·+?‚Ì ÝŽ‚8?„XïWÉò~?ˆ¾þúWZ‹?–¨¬:­÷@@@@@*@,?ð?ð?ð?ð?ð?ð?H2¤•x¿…BI@?XÂtÐÒ?QÙ9âfR@­öšŸËÆ@¥WØ -þ…?ve&¾úµI?jÕ½Ÿµ?ûqÌÓ|?ÉÌóáoÝÓ@ŸaE›8ÉF@Ð@¥÷+ Iº@¥÷+ Iº@¥÷+ Iº@¥÷*¦L/ƒ@¥÷+ Iº@¥÷+ Iº@¥÷+ Iº@¥÷+6z‘@¥÷+ Iº@¥÷)ûçl‹@¥÷+ Iº@¥÷* Þ@­,G®zá@­,G®zá@­,G®zá@­,H1&éy@­,G®zá@­,H´9X@­,G®zá@­,H1&éy@­,G®zá@­,IxÔýô@­,G®zá@­,HXy=Ú@3úqÞi­C@3ú¦L/ƒ|@0O|í‘hr@0Ov_Ø­¬@/÷Oß;d@/÷$tSŽó@/ -#9Àëî@/ …ðoiE@/ -#9Àëî@/ º^5?}@/ -#9Àëî@/ ÞѸ?}Ñ¿ž,?ß‹’bÏ?‘jh¨qã9?‹Æ úJ-M?‘ä~|+?æöæ×t?|¬Çëý ?’7Îf¬ps?«'Q™µ?CÚ B÷?äú’ (fit_val - fit_err*n_sigma)) return np.abs(true_val - fit_val) <= n_sigma*fit_err def test_Fixed(): @@ -76,16 +74,31 @@ def test_Fixed(): ) x_sim = np.random.normal(x_true, true_params['x0_err']) y_sim = np.random.normal(y_true, true_params['y0_err']) + xe = np.ones_like(t)*true_params['x0_err'] + ye = np.ones_like(t)*true_params['y0_err'] # Run fit - params, param_errs, _ , _ = mod.fit( + params, param_errs = mod.fit( t, x_sim,y_sim, - xe=np.ones(len(t))*true_params['x0_err'], - ye=np.ones(len(t))*true_params['y0_err'], - t0=np.nan + xe=xe, + ye=ye ) + + x_wt = 1. / xe**2 + y_wt = 1. / ye**2 + x_wt_norm = x_wt / np.sum(x_wt) + y_wt_norm = y_wt / np.sum(y_wt) + x_mean = np.average(x_sim, weights=x_wt) + y_mean = np.average(y_sim, weights=y_wt) + x_std = (np.sum(x_wt_norm**2 * xe**2))**0.5 + y_std = (np.sum(y_wt_norm**2 * ye**2))**0.5 + # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) + np.testing.assert_allclose(params[0], x_mean, atol=1e-5) + np.testing.assert_allclose(params[1], y_mean, atol=1e-5) + np.testing.assert_allclose(param_errs[0], x_std, atol=1e-5) + np.testing.assert_allclose(param_errs[1], y_std, atol=1e-5) def test_Linear(): @@ -95,12 +108,11 @@ def test_Linear(): 't0':2025.0} mod = motion_model.Linear() param_list = mod.fit_param_names - fixed_param_list = mod.fixed_param_names # Confirm return of proper values for single t=t0 and array t x_t, y_t = mod.model( t=true_params['t0'], fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + fixed_params_dict={'t0': true_params['t0']} ) assert x_t==true_params['x0'] assert y_t==true_params['y0'] @@ -108,7 +120,7 @@ def test_Linear(): x_t, y_t = mod.model( t=t_arr, fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + fixed_params_dict={'t0': true_params['t0']} ) assert (x_t==(true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx'])).all() assert (y_t==(true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy'])).all() @@ -129,25 +141,28 @@ def test_Linear(): t=t_batch, fit_params=np.array([x0_batch, vx_batch, y0_batch, vy_batch]).T, fit_param_errs=np.array([x0_err_batch, vx_err_batch, y0_err_batch, vy_err_batch]).T, - fixed_params=t0_batch + fixed_params_dict={'t0': t0_batch} ) - assert (x_t_batch==(x0_batch+(t_batch-t0_batch)*vx_batch)).all() - assert (y_t_batch==(y0_batch+(t_batch-t0_batch)*vy_batch)).all() - assert (x_err_t_batch==np.hypot(x0_err_batch, (t_batch-t0_batch)*vx_err_batch)).all() - assert (y_err_t_batch==np.hypot(y0_err_batch, (t_batch-t0_batch)*vy_err_batch)).all() + + + np.testing.assert_allclose(x_t_batch, (x0_batch+(t_batch-t0_batch)*vx_batch), atol=1e-5) + np.testing.assert_allclose(y_t_batch, (y0_batch+(t_batch-t0_batch)*vy_batch), atol=1e-5) + np.testing.assert_allclose(x_err_t_batch, np.hypot(x0_err_batch, (t_batch-t0_batch)*vx_err_batch), atol=1e-5) + np.testing.assert_allclose(y_err_t_batch, np.hypot(y0_err_batch, (t_batch-t0_batch)*vy_err_batch), atol=1e-5) + # Multiple times t_batch = np.arange(2015.0,2025.0, 0.5) x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( t=t_batch, fit_params=np.array([x0_batch, vx_batch, y0_batch, vy_batch]).T, fit_param_errs=np.array([x0_err_batch, vx_err_batch, y0_err_batch, vy_err_batch]).T, - fixed_params=t0_batch + fixed_params_dict={'t0': t0_batch} ) - assert (x_t_batch==np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx_batch[i] for i in range(len(x0_batch))])).all() - assert (y_t_batch==np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy_batch[i] for i in range(len(x0_batch))])).all() - assert (x_err_t_batch==np.array([np.hypot(x0_err_batch[i], (t_batch-t0_batch[i])*vx_err_batch[i]) for i in range(len(x0_batch))])).all() - assert (y_err_t_batch==np.array([np.hypot(y0_err_batch[i], (t_batch-t0_batch[i])*vy_err_batch[i]) for i in range(len(x0_batch))])).all() - + np.testing.assert_allclose(x_t_batch, np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx_batch[i] for i in range(len(x0_batch))]), atol=1e-5) + np.testing.assert_allclose(y_t_batch, np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy_batch[i] for i in range(len(x0_batch))]), atol=1e-5) + np.testing.assert_allclose(x_err_t_batch, np.array([np.hypot(x0_err_batch[i], (t_batch-t0_batch[i])*vx_err_batch[i]) for i in range(len(x0_batch))]), atol=1e-5) + np.testing.assert_allclose(y_err_t_batch, np.array([np.hypot(y0_err_batch[i], (t_batch-t0_batch[i])*vy_err_batch[i]) for i in range(len(x0_batch))]), atol=1e-5) + # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter @@ -156,55 +171,73 @@ def test_Linear(): x_true, y_true = mod.model( t=t, fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + fixed_params_dict={'t0': true_params['t0']} ) x_sim = np.random.normal(x_true, 0.05) y_sim = np.random.normal(y_true, 0.05) # Run fit - params, param_errs, _, _ = mod.fit( - t=t, - x=x_sim, - y=y_sim, - xe=np.repeat(0.05, len(t)), - ye=np.repeat(0.05,len(t)), - t0=true_params['t0'] - ) - print(param_errs) - # Confirm true value is within error bar of fit value - assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) - + xe = np.ones_like(t)*0.05 + ye = np.ones_like(t)*0.05 + + def linear(t, x0, vx): + return x0 + vx * t + + for absolute_sigma in [True, False]: + for weighting in ['std', 'var']: + for use_scipy in [True, False]: + params, param_errs = mod.fit( + t=t, + x=x_sim, + y=y_sim, + xe=xe, + ye=ye, + fixed_params_dict={'t0': true_params['t0']}, + weighting=weighting, + use_scipy=use_scipy, + absolute_sigma=absolute_sigma + ) + + # Scipy + xe_scipy = xe**0.5 if weighting=='std' else xe + ye_scipy = ye**0.5 if weighting=='std' else ye + x_popt, x_pcov = curve_fit( + linear, + t - true_params['t0'], + x_sim, + sigma=xe_scipy, + absolute_sigma=absolute_sigma, + p0=[np.mean(x_sim), 0.0] + ) + y_popt, y_pcov = curve_fit( + linear, + t - true_params['t0'], + y_sim, + sigma=ye_scipy, + absolute_sigma=absolute_sigma, + p0=[np.mean(y_sim), 0.0] + ) + np.testing.assert_allclose(params[:2], x_popt, atol=1e-5) + np.testing.assert_allclose(param_errs[:2], np.sqrt(np.diag(x_pcov)), atol=1e-5) + np.testing.assert_allclose(params[2:], y_popt, atol=1e-5) + np.testing.assert_allclose(param_errs[2:], np.sqrt(np.diag(y_pcov)), atol=1e-5) + # Test fitter with bootstrap - t = np.arange(2015.0,2025.0, 0.5) + t = np.arange(2015.0, 2025.0, 0.5) # Get values from model and add scatter - x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list],t) - x_true_err, y_true_err = np.repeat(0.05,len(t)), np.repeat(0.05,len(t)) + x_true, y_true = mod.model( + t=t, + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params_dict={'t0': true_params['t0']} + ) + x_true_err, y_true_err = np.ones_like(t)*0.05, np.ones_like(t)*0.05 x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0'],bootstrap=10) + params, param_errs = mod.fit(t, x_sim, y_sim, x_true_err, y_true_err, fixed_params_dict={'t0': true_params['t0']}, bootstrap=10) print(param_errs) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) -# # Test fitter for 2 pts -# t = np.array([2015.0,2025.0]) -# # Get values from model and add scatter -# x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], -# [true_params[p] for p in fixed_param_list],t) -# x_true_err, y_true_err = np.repeat(0.05,len(t)), np.repeat(0.05,len(t)) -# x_sim = np.random.normal(x_true, x_true_err) -# y_sim = np.random.normal(y_true, y_true_err) -# # Run fit -# mod_fit = motion_model.Linear(t0=true_params['t0']) -# params, param_errs = mod_fit.fit_motion_model(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) -# print("DJSKBGJ",param_list) -# print([true_params[p] for p in param_list]) -# print(params) -# print(param_errs) -# # Confirm true value is within error bar of fit value -# assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params),2)]) - def test_Acceleration(): # Test handling of a single star @@ -214,12 +247,11 @@ def test_Acceleration(): 't0':2025.0} mod = motion_model.Acceleration() param_list = mod.fit_param_names - fixed_param_list = mod.fixed_param_names # Confirm return of proper values for single t=t0 and array t x_t, y_t = mod.model( t=true_params['t0'], fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + fixed_params_dict={'t0': true_params['t0']} ) np.testing.assert_allclose(x_t, true_params['x0']) np.testing.assert_allclose(y_t, true_params['y0']) @@ -227,7 +259,7 @@ def test_Acceleration(): x_t, y_t = mod.model( t=t_arr, fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + fixed_params_dict={'t0': true_params['t0']} ) np.testing.assert_allclose(x_t, true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ax']) np.testing.assert_allclose(y_t, true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ay']) @@ -252,7 +284,7 @@ def test_Acceleration(): t=t_batch, fit_params=np.array([x0_batch, vx0_batch, ax_batch, y0_batch, vy0_batch, ay_batch]).T, fit_param_errs=np.array([x0_err_batch, vx0_err_batch, ax_err_batch, y0_err_batch, vy0_err_batch, ay_err_batch]).T, - fixed_params=t0_batch + fixed_params_dict={'t0': t0_batch} ) np.testing.assert_allclose(x_t_batch, x0_batch + (t_batch-t0_batch)*vx0_batch + 0.5*(t_batch-t0_batch)**2*ax_batch) np.testing.assert_allclose(y_t_batch, y0_batch + (t_batch-t0_batch)*vy0_batch + 0.5*(t_batch-t0_batch)**2*ay_batch) @@ -267,7 +299,7 @@ def test_Acceleration(): t=t_batch, fit_params=np.array([x0_batch, vx0_batch, ax_batch, y0_batch, vy0_batch, ay_batch]).T, fit_param_errs=np.array([x0_err_batch, vx0_err_batch, ax_err_batch, y0_err_batch, vy0_err_batch, ay_err_batch]).T, - fixed_params=t0_batch + fixed_params_dict={'t0': t0_batch} ) np.testing.assert_allclose(x_t_batch, np.array([x0_batch[i] + (t_batch-t0_batch[i])*vx0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ax_batch[i] for i in range(len(x0_batch))])) np.testing.assert_allclose(y_t_batch, np.array([y0_batch[i] + (t_batch-t0_batch[i])*vy0_batch[i] + 0.5*(t_batch-t0_batch[i])**2*ay_batch[i] for i in range(len(x0_batch))])) @@ -280,7 +312,7 @@ def test_Acceleration(): x_true, y_true = mod.model( t=t, fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params=np.array([true_params[p] for p in fixed_param_list]).T + fixed_params_dict={'t0': true_params['t0']} ) x_true_err = np.sqrt(true_params['x0_err']**2 + ((t - true_params['t0']) * true_params['vx0_err'])**2 + (0.5*(t - true_params['t0'])**2 * true_params['ax_err'])**2) @@ -290,280 +322,65 @@ def test_Acceleration(): y_sim = np.random.normal(y_true, y_true_err) # Run fit mod_fit = motion_model.Acceleration() - params, param_errs, _, _ = mod_fit.fit( + params, param_errs = mod_fit.fit( t=t, x=x_sim, y=y_sim, xe=x_true_err, ye=y_true_err, - t0=true_params['t0'] + fixed_params_dict={'t0': true_params['t0']} ) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) - + #@pytest.mark.skip(reason="not written") def test_Parallax(): # Test handling of a single star true_params = {'x0': 1.0, 'y0':-0.5, 'x0_err':0.1, 'y0_err':0.1, 'vx':-0.2, 'vy':0.5, 'vx_err':0.05, 'vy_err':0.05, - 'pi':0.5, 'RA':17.76, 'Dec':-28.933, 'PA':0, - 't0':2020.0} - mod = motion_model.Parallax(**{'RA':17.76, 'Dec':-28.933, 'PA':0}) + 'pi':0.5, 'ra':17.76, 'dec':-28.933, 'pa':0, + 't0':2020.0, 'obsLocation': 'earth'} + mod = motion_model.Parallax() param_list = mod.fit_param_names fixed_param_list = mod.fixed_param_names - print(param_list) - + # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter - x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - [true_params[p] for p in fixed_param_list],t) - x_true_err, y_true_err = np.repeat(0.1,len(t)), np.repeat(0.1,len(t)) + x_true, y_true = mod.model( + t=t, + fit_params=np.array([true_params[p] for p in param_list]).T, + fixed_params_dict={p: true_params[p] for p in fixed_param_list} + ) + x_true_err, y_true_err = np.ones_like(t)*true_params['x0_err'], np.ones_like(t)*true_params['y0_err'] x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, true_params['t0']) + params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, fixed_params_dict={p: true_params[p] for p in fixed_param_list}) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) - def test_Parallax_PA(): # Set PA=0 model x0, y0 = 2.0, -1.0 vx, vy = 0.2, 0.5 ra, dec = 17.76, -28.933 pi = 0.5 - mod_pa0 = motion_model.Parallax(ra=ra, dec=dec, pa=0) + mod_pa0 = motion_model.Parallax() # Set PA=90 model with equivalent parameters in that frame - mod_pa90 = motion_model.Parallax(ra=ra, dec=dec, pa=90) + mod_pa90 = motion_model.Parallax() t_set = np.arange(2018, 2024, 0.01) + t0 = 2020.0 dat_pa0 = mod_pa0.model( t = t_set, fit_params = np.array([x0, vx, y0, vy, pi]).T, - fixed_params = [2020.0] + fixed_params_dict = {'t0': t0, 'ra': ra, 'dec': dec, 'pa': 0} ) dat_pa90 = mod_pa90.model( t = t_set, fit_params = np.array([y0, vy, -x0, -vx, pi]).T, - fixed_params = [2020.0] + fixed_params_dict = {'t0': t0, 'ra': ra, 'dec': dec, 'pa': 90} ) np.testing.assert_allclose(dat_pa0[0], -dat_pa90[1], atol=1e-10) - np.testing.assert_allclose(dat_pa0[1], dat_pa90[0], atol=1e-10) - - -def test_Linear_fit_vs_scipy(): - # Compare Linear fit results to scipy curve_fit results - t = np.array([0, 1., 2.2, 3.5, 5.]) - - x = np.array([ - [0., 0.5, 2.1, 3.2, 6.0], # Increasing 5 Epochs - [10.0, 8.9, 9.2, 7.4, 7.0], # Decreasing 5 Epochs - [2.5, np.nan, 5.2, np.nan, 5.0], # 3 Epochs - [np.nan, 6.2, np.nan, np.nan, 9.2], # 2 Epochs - # [np.nan, 2.0, np.nan, np.nan, np.nan], # 1 Epoch - # [np.nan, np.nan, np.nan, np.nan, np.nan] # All NaNs - ]) - - y = np.array([ - [10.2, 8.5, 9.1, 12.2, 13.0], # Increasing 5 Epochs - [8.0, 9.9, 8.2, 7.4, 7.0], # Decreasing 5 Epochs - [5.2, np.nan, 4.7, np.nan, 6.0], # 3 Epochs - [np.nan, 1.2, np.nan, np.nan, 3.2], # 2 Epochs - # [np.nan, 2.0, np.nan, np.nan, np.nan], # 1 Epoch - # [np.nan, np.nan, np.nan, np.nan, np.nan] # All NaNs - ]) - - xe = np.array([ - [0.2, 0.5, 0.3, 0.4, 0.6], - [0.5, 0.2, 0.7, 0.3, 0.2], - [0.5, np.nan, 0.6, np.nan, 0.3], - [np.nan, 0.6, np.nan, np.nan, 0.3], - # [np.nan, 0.4, np.nan, np.nan, np.nan], - # [np.nan, np.nan, np.nan, np.nan, np.nan] - ]) - - ye = np.array([ - [0.3, 0.2, 0.5, 0.2, 0.4], - [0.2, 0.5, 0.6, 0.4, 0.2], - [0.7, np.nan, 0.5, np.nan, 0.2], - [np.nan, 0.4, np.nan, np.nan, 0.5], - # [np.nan, 0.5, np.nan, np.nan, np.nan], - # [np.nan, np.nan, np.nan, np.nan, np.nan] - ]) - - x = np.ma.masked_invalid(x) - y = np.ma.masked_invalid(y) - xe = np.ma.masked_invalid(xe) - ye = np.ma.masked_invalid(ye) - mask = np.ma.getmaskarray(x) | np.ma.getmaskarray(y) | np.ma.getmaskarray(xe) | np.ma.getmaskarray(ye) - - # tab = StarTable({ - # 'x': x, - # 'y': y, - # 'xe': xe, - # 'ye': ye - # }) - # tab.meta['LIST_TIMES'] = t - # tab.fit_velocities(use_scipy=True, absolute_sigma=True) - - # Plot data - N = x.shape[0] - fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6)) - for i in range(N): - line_mask = ~np.isnan(x[i]) & ~mask[i] - ax1.errorbar(t[line_mask], x[i][line_mask], yerr=xe[i][line_mask], fmt='o-', label=f'Line {i}') - ax2.errorbar(t[line_mask], y[i][line_mask], yerr=ye[i][line_mask], fmt='o-', label=f'Line {i}') - ax1.set_xlabel('Time') - ax1.set_ylabel('Position') - ax1.legend() - ax1.set_title('X vs Time') - ax2.set_xlabel('Time') - ax2.set_ylabel('Position') - ax2.legend() - ax2.set_title('Y vs Time') - plt.show() - - N = len(x) - t0 = np.average(np.broadcast_to(t, x.shape), weights=1./np.hypot(xe, ye), axis=1) - dt = np.zeros_like(x) - - # velfit - # vx_velfit = np.zeros(N) - # vxe_velfit = np.zeros(N) - # vy_velfit = np.zeros(N) - # vye_velfit = np.zeros(N) - # x0_velfit = np.zeros(N) - # x0e_velfit = np.zeros(N) - # y0_velfit = np.zeros(N) - # y0e_velfit = np.zeros(N) - - # scipy - vx_scipy = np.zeros(N) - vxe_scipy = np.zeros(N) - vy_scipy = np.zeros(N) - vye_scipy = np.zeros(N) - x0_scipy = np.zeros(N) - x0e_scipy = np.zeros(N) - y0_scipy = np.zeros(N) - y0e_scipy = np.zeros(N) - - # motion_model - mm = motion_model.Linear() - - vx_mm_scipy = np.zeros(N) - vxe_mm_scipy = np.zeros(N) - vy_mm_scipy = np.zeros(N) - vye_mm_scipy = np.zeros(N) - x0_mm_scipy = np.zeros(N) - x0e_mm_scipy = np.zeros(N) - y0_mm_scipy = np.zeros(N) - y0e_mm_scipy = np.zeros(N) - - vx_mm = np.zeros(N) - vxe_mm = np.zeros(N) - vy_mm = np.zeros(N) - vye_mm = np.zeros(N) - x0_mm = np.zeros(N) - x0e_mm = np.zeros(N) - y0_mm = np.zeros(N) - y0e_mm = np.zeros(N) - - def linear(t, c0, c1): - return c0 + c1*t - - # Absolute sigma - for absolute_sigma in [True, False]: - for i in range(N): - dt[i] = t - t0[i] - - # # velfit.linear_fit - # vx_velfit_results = linear_fit(dt[i][~mask[i]], x[i][~mask[i]], sigma=xe[i][~mask[i]], absolute_sigma=absolute_sigma) - # vy_velfit_results = linear_fit(dt[i][~mask[i]], y[i][~mask[i]], sigma=ye[i][~mask[i]], absolute_sigma=absolute_sigma) - - # vx_velfit[i] = vx_velfit_results['slope'] - # vxe_velfit[i] = vx_velfit_results['e_slope'] - # vy_velfit[i] = vy_velfit_results['slope'] - # vye_velfit[i] = vy_velfit_results['e_slope'] - # x0_velfit[i] = vx_velfit_results['intercept'] - # x0e_velfit[i] = vx_velfit_results['e_intercept'] - # y0_velfit[i] = vy_velfit_results['intercept'] - # y0e_velfit[i] = vy_velfit_results['e_intercept'] - - # scipy.curve_fit - p0x = np.array([0., x[i][~mask[i]].mean()]) - p0y = np.array([0., y[i][~mask[i]].mean()]) - popt_x, pcov_x = curve_fit(linear, dt[i][~mask[i]], x[i][~mask[i]], p0=p0x, sigma=xe[i][~mask[i]], absolute_sigma=absolute_sigma) - vx_scipy[i], vxe_scipy[i] = popt_x[1], np.sqrt(pcov_x[1, 1]) - x0_scipy[i], x0e_scipy[i] = popt_x[0], np.sqrt(pcov_x[0, 0]) - popt_y, pcov_y = curve_fit(linear, dt[i][~mask[i]], y[i][~mask[i]], p0=p0y, sigma=ye[i][~mask[i]], absolute_sigma=absolute_sigma) - vy_scipy[i], vye_scipy[i] = popt_y[1], np.sqrt(pcov_y[1, 1]) - y0_scipy[i], y0e_scipy[i] = popt_y[0], np.sqrt(pcov_y[0, 0]) - - # motion_model without scipy - params, param_errs = mm.fit( - t[~mask[i]], x[i][~mask[i]], y[i][~mask[i]], - xe[i][~mask[i]], ye[i][~mask[i]], t0[i], - weighting='var', - use_scipy=False, - absolute_sigma=absolute_sigma - ) - vx_mm[i] = params[mm.fit_param_names.index('vx')] - vy_mm[i] = params[mm.fit_param_names.index('vy')] - vxe_mm[i] = param_errs[mm.fit_param_names.index('vx')] - vye_mm[i] = param_errs[mm.fit_param_names.index('vy')] - x0_mm[i] = params[mm.fit_param_names.index('x0')] - y0_mm[i] = params[mm.fit_param_names.index('y0')] - x0e_mm[i] = param_errs[mm.fit_param_names.index('x0')] - y0e_mm[i] = param_errs[mm.fit_param_names.index('y0')] - - # motion_model with scipy - params, param_errs = mm.fit( - t[~mask[i]], x[i][~mask[i]], y[i][~mask[i]], - xe[i][~mask[i]], ye[i][~mask[i]], t0[i], - weighting='var', - use_scipy=True, - absolute_sigma=absolute_sigma - ) - vx_mm_scipy[i] = params[mm.fit_param_names.index('vx')] - vy_mm_scipy[i] = params[mm.fit_param_names.index('vy')] - vxe_mm_scipy[i] = param_errs[mm.fit_param_names.index('vx')] - vye_mm_scipy[i] = param_errs[mm.fit_param_names.index('vy')] - x0_mm_scipy[i] = params[mm.fit_param_names.index('x0')] - y0_mm_scipy[i] = params[mm.fit_param_names.index('y0')] - x0e_mm_scipy[i] = param_errs[mm.fit_param_names.index('x0')] - y0e_mm_scipy[i] = param_errs[mm.fit_param_names.index('y0')] - - rtol = 1e-5 - # np.testing.assert_allclose(vx_velfit, vx_scipy, rtol=rtol) - # np.testing.assert_allclose(vxe_velfit, vxe_scipy, rtol=rtol) - # np.testing.assert_allclose(vy_velfit, vy_scipy, rtol=rtol) - # np.testing.assert_allclose(vye_velfit, vye_scipy, rtol=rtol) - # np.testing.assert_allclose(x0_velfit, x0_scipy, rtol=rtol) - # np.testing.assert_allclose(x0e_velfit, x0e_scipy, rtol=rtol) - # np.testing.assert_allclose(y0_velfit, y0_scipy, rtol=rtol) - # np.testing.assert_allclose(y0e_velfit, y0e_scipy, rtol=rtol) - # np.testing.assert_allclose(vx_velfit, vx_mm, rtol=rtol) - # np.testing.assert_allclose(vxe_velfit, vxe_mm, rtol=rtol) - # np.testing.assert_allclose(vy_velfit, vy_mm, rtol=rtol) - # np.testing.assert_allclose(vye_velfit, vye_mm, rtol=rtol) - # np.testing.assert_allclose(x0_velfit, x0_mm, rtol=rtol) - # np.testing.assert_allclose(x0e_velfit, x0e_mm, rtol=rtol) - # np.testing.assert_allclose(y0_velfit, y0_mm, rtol=rtol) - # np.testing.assert_allclose(y0e_velfit, y0e_mm, rtol=rtol) - np.testing.assert_allclose(vx_scipy, vx_mm, rtol=rtol) - np.testing.assert_allclose(vxe_scipy, vxe_mm, rtol=rtol) - np.testing.assert_allclose(vy_scipy, vy_mm, rtol=rtol) - np.testing.assert_allclose(vye_scipy, vye_mm, rtol=rtol) - np.testing.assert_allclose(x0_scipy, x0_mm, rtol=rtol) - np.testing.assert_allclose(x0e_scipy, x0e_mm, rtol=rtol) - np.testing.assert_allclose(y0_scipy, y0_mm, rtol=rtol) - np.testing.assert_allclose(y0e_scipy, y0e_mm, rtol=rtol) - np.testing.assert_allclose(vx_scipy, vx_mm_scipy, rtol=rtol) - np.testing.assert_allclose(vxe_scipy, vxe_mm_scipy, rtol=rtol) - np.testing.assert_allclose(vy_scipy, vy_mm_scipy, rtol=rtol) - np.testing.assert_allclose(vye_scipy, vye_mm_scipy, rtol=rtol) - np.testing.assert_allclose(x0_scipy, x0_mm_scipy, rtol=rtol) - np.testing.assert_allclose(x0e_scipy, x0e_mm_scipy, rtol=rtol) - np.testing.assert_allclose(y0_scipy, y0_mm_scipy, rtol=rtol) - np.testing.assert_allclose(y0e_scipy, y0e_mm_scipy, rtol=rtol) + np.testing.assert_allclose(dat_pa0[1], dat_pa90[0], atol=1e-10) \ No newline at end of file diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 1b8e5cb..804d4e7 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -41,9 +41,14 @@ def test_StarTable_init1(): starlist_names = np.array(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7', 'file8']) # Generate the startable - startable = StarTable(name=name_in, x=x_in, y=y_in, m=m_in, xe=xe_in, ye=ye_in, me=me_in, - ref_list=1, - list_times=starlist_times, list_names=starlist_names) + startable = StarTable( + name=name_in, + x=x_in, y=y_in, m=m_in, + xe=xe_in, ye=ye_in, me=me_in, + ref_list=1, + list_times=starlist_times, + list_names=starlist_names + ) # Now put in some assertions to make sure all our startable columns # have the right dimensions. @@ -57,7 +62,7 @@ def test_StarTable_init1(): assert len(startable['name']) == N_stars assert startable.meta['list_times'][0] == starlist_times[0] assert type(startable) == StarTable - + return def test_StarTable_init2(): @@ -102,7 +107,7 @@ def test_combine_lists(): t.combine_lists('x', mask_val=-100000) assert t['x0'][0] == x_avg_0 assert t['x0'][-1] == pytest.approx(2108.855, 0.001) - + # Test 4: weighted average of x. x_wgt_0 = 1.0 / t['xe'][0, :]**2 x_avg_0 = np.average(t['x'][0, :], weights=x_wgt_0) @@ -204,8 +209,12 @@ def test_add_starlist(): assert t.meta['n_lists'] == 9 # Test 2: Add as starlist rather than with keywords. - starlist = StarList(name=t_orig['name'], x=x_new, y=y_new, m=m_new, - xe=xe_new, ye=ye_new, me=me_new, list_time=2001.0, list_name='A.lis') + starlist = StarList( + name=t_orig['name'], + x=x_new, y=y_new, m=m_new, + xe=xe_new, ye=ye_new, me=me_new, + list_time=2001.0, list_name='A.lis' + ) t = make_star_table() t.add_starlist(starlist=starlist) @@ -257,7 +266,7 @@ def test_get_starlist(): assert t['x'][0,2] == t_list['x'][0] assert type(t_list) == StarList assert len(t_list['x'].shape) == 1 - + return @@ -305,7 +314,7 @@ def test_fit_velocities(): tab = table.vstack((tab1, tab2, tab3)) tab.meta = tab1.meta - tab.fit_motion_model(verbose=True) + tab.fit_motion_model(verbose=True, mask_value=-100000.) # Test creation of new variables assert len(tab['vx']) == len(tab) @@ -323,18 +332,11 @@ def test_fit_velocities(): assert (tab['n_fit'][idx] == 2).all() # Test that the velocity errors were calculated. - assert (tab['vx_err'][0:100] > 0).all() - assert (tab['x0_err'][0:100] > 0).all() - assert (tab['vy_err'][0:100] > 0).all() - assert (tab['y0_err'][0:100] > 0).all() - assert np.isfinite(tab['x0']).all() - assert np.isfinite(tab['vx']).all() - assert np.isfinite(tab['y0']).all() - assert np.isfinite(tab['vy']).all() - assert np.isfinite(tab['x0_err']).all() - assert np.isfinite(tab['vx_err']).all() - assert np.isfinite(tab['y0_err']).all() - assert np.isfinite(tab['vy_err']).all() + assert (~(tab['vx_err'][0:100] < 0)).all() + assert (~(tab['x0_err'][0:100] < 0)).all() + assert (~(tab['vy_err'][0:100] < 0)).all() + assert (~(tab['y0_err'][0:100] < 0)).all() + ########## # Test running a second time. We should get the same results. @@ -343,28 +345,27 @@ def test_fit_velocities(): x0_orig = tab['x0'] vxe_orig = tab['vx_err'] x0e_orig = tab['x0_err'] - tab.fit_velocities(verbose=False) - - assert (vx_orig == tab['vx']).all() - assert (x0_orig == tab['x0']).all() - assert (vxe_orig == tab['vx_err']).all() - assert (x0e_orig == tab['x0_err']).all() + tab.fit_motion_model(verbose=False, mask_value=-100000.) + + np.testing.assert_allclose(tab['vx'], vx_orig) + np.testing.assert_allclose(tab['x0'], x0_orig) + np.testing.assert_allclose(tab['vx_err'], vxe_orig) + np.testing.assert_allclose(tab['x0_err'], x0e_orig) ########## # Test fixed_t0 functionality ########## fixed_t0 = tab['t0'] + np.random.normal(size=len(tab)) - tab.fit_velocities(fixed_t0=fixed_t0) - - assert(np.sum(abs(tab['t0'] - fixed_t0)) == 0) + tab.fit_motion_model(verbose=False, mask_value=-100000., fixed_params_dict={'t0': fixed_t0}) + np.testing.assert_allclose(tab['t0'], fixed_t0) ########## # Test bootstrap ########## tab_b = table.vstack((tab1, tab2, tab3)) tab_b.meta = tab1.meta - tab_b.fit_velocities(verbose=True, bootstrap=50) - + tab_b.fit_motion_model(verbose=True, bootstrap=50) + assert tab_b.meta['n_bootstrap'] == 50 assert tab_b['x0_err'][0] > tab['x0_err'][0] assert tab_b['vx_err'][0] > tab['vx_err'][0] @@ -375,83 +376,36 @@ def test_fit_velocities(): # Test what happens with no velocity errors ########## tab.remove_columns(['xe', 'ye', 'x0', 'y0', 'x0_err', 'y0_err', 'vx', 'vy', 'vx_err', 'vy_err', 'n_fit']) - tab.fit_velocities(verbose=False) + tab.fit_motion_model(verbose=False) assert len(tab['vx']) == len(tab) assert len(tab['vy']) == len(tab) assert len(tab['vx_err']) == len(tab) assert len(tab['vy_err']) == len(tab) assert len(tab['n_fit']) == len(tab) - assert (tab['vx_err'][0:100] > 0).all() - assert (tab['x0_err'][0:100] > 0).all() - assert (tab['vy_err'][0:100] > 0).all() - assert (tab['y0_err'][0:100] > 0).all() + assert (~(tab['vx_err'][0:100] < 0)).all() + assert (~(tab['x0_err'][0:100] < 0)).all() + assert (~(tab['vy_err'][0:100] < 0)).all() + assert (~(tab['y0_err'][0:100] < 0)).all() ######### # Test mask_list ######### # Test 5a: Masked print("Testing Masked List") - tt.fit_velocities(bootstrap=0, verbose=False, mask_lists=[1]) - assert np.arange(2.25, 48, 5) == pytest.approx(tt['x0'].data) - assert np.arange(2.25, 48, 5) == pytest.approx(tt['y0'].data) - assert np.full(10, 0.05) == pytest.approx(tt['x0_err'].data) - assert np.full(10, 0.05) == pytest.approx(tt['y0_err'].data) - assert np.ones(10) == pytest.approx(tt['vx'].data) - assert np.ones(10) == pytest.approx(tt['vy'].data) - assert np.full(10, 0.03380617) == pytest.approx(tt['vx_err'].data) - assert np.full(10, 0.03380617) == pytest.approx(tt['vy_err'].data) - assert 2017.25 * np.ones(10) == pytest.approx(tt['t0'].data) - - # Test 5b: Things that should break the code. - with pytest.raises(RuntimeError): - tt.fit_velocities(bootstrap=0, verbose=False, mask_lists=np.arange(2)) - with pytest.raises(RuntimeError): - tt.fit_velocities(bootstrap=0, verbose=False, mask_lists=True) + tt.fit_motion_model(verbose=False, mask_lists=[1]) + np.testing.assert_allclose(np.arange(2.25, 48, 5), tt['x0'].data) + np.testing.assert_allclose(np.arange(2.25, 48, 5), tt['y0'].data) + np.testing.assert_allclose(np.full(10, 0.05), tt['x0_err'].data) + np.testing.assert_allclose(np.full(10, 0.05), tt['y0_err'].data) + np.testing.assert_allclose(np.ones(10), tt['vx'].data) + np.testing.assert_allclose(np.ones(10), tt['vy'].data) + np.testing.assert_allclose(np.full(10, 0.03380617), tt['vx_err'].data) + np.testing.assert_allclose(np.full(10, 0.03380617), tt['vy_err'].data) + np.testing.assert_allclose(2017.25 * np.ones(10), tt['t0'].data) return -def test_fit_velocities_1epoch(): - ########## - # Test: only 1 epoch - ########## - tab = make_star_table_1epoch() - - # We don't need the entire table... lets just - # pull a small subset for faster testing. - tab1 = tab[0:100] - tab2 = tab[10000:10100] - tab3 = tab[-100:] - tab_1 = table.vstack((tab1, tab2, tab3)) - tab_1.meta = tab1.meta - - tab_1.fit_velocities(verbose=False) - - assert 'n_fit' in tab_1.colnames - assert 't0' in tab_1.colnames - assert 'x0' in tab_1.colnames - assert 'y0' in tab_1.colnames - assert 'vx' in tab_1.colnames - assert 'vy' in tab_1.colnames - assert 'x0_err' in tab_1.colnames - assert 'y0_err' in tab_1.colnames - assert 'vx_err' in tab_1.colnames - assert 'vy_err' in tab_1.colnames - - assert (tab_1['x0'] == tab_1['x'][:,0]).all() - assert (tab_1['y0'] == tab_1['y'][:,0]).all() - assert (tab_1['x0_err'] == tab_1['xe'][:,0]).all() - assert (tab_1['y0_err'] == tab_1['ye'][:,0]).all() - - assert(np.isnan(tab_1['vx'])).all() - assert(np.isnan(tab_1['vy'])).all() - assert(np.isnan(tab_1['vx_err'])).all() - assert(np.isnan(tab_1['vy_err'])).all() - - assert(tab_1['t0'] == 2001.0).all() - assert(tab_1['n_fit'] == 1).all() - - return def test_fit_velocities_2epoch(): @@ -468,7 +422,7 @@ def test_fit_velocities_2epoch(): tab_2 = table.vstack((tab1, tab2, tab3)) tab_2.meta=tab1.meta - tab_2.fit_velocities(verbose=False) + tab_2.fit_motion_model(verbose=False, mask_value=-100000.) assert 'n_fit' in tab_2.colnames assert 't0' in tab_2.colnames @@ -496,40 +450,6 @@ def test_fit_velocities_2epoch(): return -def test_fit_velocities_all_detected(): - """ - Test the fit_velocities function when all stars are detected in all epochs. - """ - tab = StarTable.read(test_dir + '/test_all_detected.fits') - tab_orig = tab.copy() - # tab = tab[:1] - - epochs = ['2005_F814W', '2010_F160W', '2013_F160W', '2015_F160W'] - epoch_cols = [['_'.join(_.split('_')[:2]) for _ in tab.meta['EPNAMES']].index(epoch) for epoch in epochs] - - mm = motion_model.Linear() - tab.fit_velocities_all_detected( - weighting='var', - use_scipy=False, absolute_sigma=False, - motion_model_to_fit=mm, - epoch_cols=epoch_cols, - art_star=True - ) - - # Check that the output table has the expected columns - for col in ['n_fit', 't0', 'x0', 'y0', 'vx', 'vy', 'x0_err', 'y0_err', 'vx_err', 'vy_err']: - assert col in tab.colnames - - # Check that the fitted values match the original values - np.testing.assert_almost_equal(tab['x0'], tab_orig['x0']) - np.testing.assert_almost_equal(tab['y0'], tab_orig['y0']) - np.testing.assert_almost_equal(tab['t0'], tab_orig['t0']) - np.testing.assert_almost_equal(tab['vx'], tab_orig['vx']) - np.testing.assert_almost_equal(tab['vy'], tab_orig['vy']) - np.testing.assert_almost_equal(tab['vxe'], tab_orig['vxe']) - np.testing.assert_almost_equal(tab['vye'], tab_orig['vye']) - - return def make_star_table(): # User input @@ -561,8 +481,8 @@ def make_star_table(): n=n_in, ref_list=1 ) - startable.meta['LIST_TIMES'] = starlist_times - startable.meta['LIST_NAMES'] = starlist_names + startable.meta['list_times'] = starlist_times + startable.meta['list_names'] = starlist_names return startable From f932e230684738777337c778e1d8ce0643911a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 10 Dec 2025 00:33:26 -0800 Subject: [PATCH 19/94] Add Parallax test plot --- flystar/motion_model.py | 25 ++++---------- flystar/tests/test_motion_model.py | 52 +++++++++++++++++------------- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 5ccb6ee..42a5e54 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -135,21 +135,10 @@ def fit( rng = np.random.default_rng(seed) edx = np.arange(n_obs, dtype=int) # Precompute All Bootstrap Draws at Once - bdx_all = rng.choice(edx, size=(bootstrap, m), replace=True) - - # Count unique indices per bootstrap sample - uniq_counts = np.apply_along_axis(lambda x: len(np.unique(x)), 1, bdx_all) - - # Identify invalid samples - bad = uniq_counts < self.n_params - n_bad = bad.sum() - - while n_bad > 0: - # Resample only bad rows - bdx_all[bad] = rng.choice(edx, size=(n_bad, m), replace=True) - uniq_counts = np.apply_along_axis(lambda x: len(np.unique(x)), 1, bdx_all) - bad = uniq_counts < self.n_params - n_bad = bad.sum() + # Ensure there are enough unique points in each bootstrap sample + bdx_unique = rng.choice(edx, size=(bootstrap, self.n_params), replace=False) + bdx_extra = rng.choice(edx, size=(bootstrap, m - self.n_params), replace=True) + bdx_all = np.hstack((bdx_unique, bdx_extra)) bb_params = [] bb_params_errs = [] @@ -936,9 +925,9 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (2, N_times) - xy = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) - x = xy[:, :N_times] # Shape (N_stars, N_times) - y = xy[:, N_times:] # Shape (N_stars, N_times) + x, y = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) + # x = xy[:, :N_times] # Shape (N_stars, N_times) + # y = xy[:, N_times:] # Shape (N_stars, N_times) if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays diff --git a/flystar/tests/test_motion_model.py b/flystar/tests/test_motion_model.py index 0215dbe..b3bb4e8 100755 --- a/flystar/tests/test_motion_model.py +++ b/flystar/tests/test_motion_model.py @@ -11,19 +11,13 @@ def test_Fixed(): true_params = {'x0': 1.0, 'y0':0.5, 'x0_err':0.1, 'y0_err':0.1} mod = motion_model.Fixed() param_list = mod.fit_param_names - fixed_param_list = mod.fixed_param_names # Confirm return of proper values for single t and array t - # x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - # [true_params[p] for p in fixed_param_list], 0.0) x_t, y_t = mod.model( 0.0, fit_params=np.array([true_params['x0'], true_params['y0']]).T ) assert x_t==true_params['x0'] assert y_t==true_params['y0'] - # x_t, y_t = mod.get_pos_at_time([true_params[p] for p in param_list], - # [true_params[p] for p in fixed_param_list], - # [0.0,2025.0,10000]) x_t, y_t = mod.model( [0.0,2025.0,10000], fit_params=np.array([true_params['x0'], true_params['y0']]).T @@ -31,15 +25,13 @@ def test_Fixed(): assert (x_t==true_params['x0']).all() assert (y_t==true_params['y0']).all() - # Check behavior of get_batch_pos_at_time + # Check behavior of model x0_batch = np.random.uniform(-2.0,2.0, 50) y0_batch = np.random.uniform(-2.0,2.0, 50) x0_err_batch = np.repeat(0.1, 50) y0_err_batch = np.repeat(0.1, 50) # Single epoch t_batch=2020.0 - # x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - # x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( t_batch, fit_params=np.array([x0_batch, y0_batch]).T, @@ -51,8 +43,6 @@ def test_Fixed(): assert (y_err_t_batch==y0_err_batch).all() # Multiple times t_batch = np.arange(2015.0,2025.0, 0.5) - # x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.get_batch_pos_at_time(t_batch, - # x0=x0_batch, y0=y0_batch, x0_err=x0_err_batch, y0_err=y0_err_batch) x_t_batch, y_t_batch, x_err_t_batch, y_err_t_batch = mod.model( t_batch, fit_params=np.array([x0_batch, y0_batch]).T, @@ -66,8 +56,6 @@ def test_Fixed(): # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter - # x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - # [true_params[p] for p in fixed_param_list], t) x_true, y_true = mod.model( t, fit_params=np.array([true_params['x0'], true_params['y0']]) @@ -125,7 +113,7 @@ def test_Linear(): assert (x_t==(true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx'])).all() assert (y_t==(true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy'])).all() - # Check behavior of get_batch_pos_at_time + # Check behavior of model x0_batch = np.random.uniform(-2.0,2.0, 50) y0_batch = np.random.uniform(-2.0,2.0, 50) vx_batch = np.random.uniform(-2.0,2.0, 50) @@ -166,8 +154,6 @@ def test_Linear(): # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter - # x_true, y_true = mod.get_pos_at_time([true_params[p] for p in param_list], - # [true_params[p] for p in fixed_param_list],t) x_true, y_true = mod.model( t=t, fit_params=np.array([true_params[p] for p in param_list]).T, @@ -234,7 +220,6 @@ def linear(t, x0, vx): y_sim = np.random.normal(y_true, y_true_err) # Run fit params, param_errs = mod.fit(t, x_sim, y_sim, x_true_err, y_true_err, fixed_params_dict={'t0': true_params['t0']}, bootstrap=10) - print(param_errs) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) @@ -264,7 +249,7 @@ def test_Acceleration(): np.testing.assert_allclose(x_t, true_params['x0'] + (t_arr-true_params['t0'])*true_params['vx0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ax']) np.testing.assert_allclose(y_t, true_params['y0'] + (t_arr-true_params['t0'])*true_params['vy0'] + 0.5*(t_arr-true_params['t0'])**2*true_params['ay']) - # Check behavior of get_batch_pos_at_time + # Check behavior of model x0_batch = np.random.uniform(-2.0,2.0, 50) y0_batch = np.random.uniform(-2.0,2.0, 50) vx0_batch = np.random.uniform(-2.0,2.0, 50) @@ -342,21 +327,44 @@ def test_Parallax(): 't0':2020.0, 'obsLocation': 'earth'} mod = motion_model.Parallax() param_list = mod.fit_param_names - fixed_param_list = mod.fixed_param_names - + fixed_params_dict = { + 't0': true_params['t0'], + 'ra': true_params['ra'], + 'dec': true_params['dec'], + 'pa': true_params['pa'], + 'obsLocation': true_params['obsLocation'] + } + # Test fitter t = np.arange(2015.0,2025.0, 0.5) # Get values from model and add scatter x_true, y_true = mod.model( t=t, fit_params=np.array([true_params[p] for p in param_list]).T, - fixed_params_dict={p: true_params[p] for p in fixed_param_list} + fixed_params_dict=fixed_params_dict ) x_true_err, y_true_err = np.ones_like(t)*true_params['x0_err'], np.ones_like(t)*true_params['y0_err'] x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, fixed_params_dict={p: true_params[p] for p in fixed_param_list}) + params, param_errs = mod.fit(t, x_sim,y_sim, x_true_err, y_true_err, fixed_params_dict=fixed_params_dict) + + x_model, y_model = mod.model( + t=t, + fit_params=params, + fixed_params_dict=fixed_params_dict + ) + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) + ax1.plot(t, x_true, 'k-', label='True x') + ax1.errorbar(t, x_sim, yerr=x_true_err, fmt='ro', label='Sim x') + ax1.plot(t, x_model, 'r-', label='Model x') + ax1.set_xlabel('t') + ax1.set_ylabel('x') + ax1.legend() + ax2.plot(t, y_true, 'k-', label='True x') + ax2.errorbar(t, y_sim, yerr=x_true_err, fmt='ro', label='Sim x') + ax2.plot(t, y_model, 'r-', label='Model x') + ax2.set_xlabel('t') # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) From be254926a2116bfa4aa8ba1336929309ce38eed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Mon, 15 Dec 2025 06:46:35 -0800 Subject: [PATCH 20/94] Partial Update of align and test_align --- flystar/align.py | 264 ++++++++++++++++++++---------------- flystar/tests/test_align.py | 79 +++++------ 2 files changed, 185 insertions(+), 158 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 8215246..ca9bc93 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1,10 +1,10 @@ import numpy as np -from flystar import match -from flystar import transforms -from flystar import plots -from flystar.starlists import StarList -from flystar.startables import StarTable -from flystar import motion_model +from . import match +from . import transforms +from . import plots +from .starlists import StarList +from .startables import StarTable +from . import motion_model from astropy.table import Table, Column, vstack import datetime import copy @@ -21,12 +21,12 @@ def __init__(self, list_of_starlists, ref_index=0, iters=2, outlier_tol=[None, None], trans_args=[{'order': 2}, {'order': 2}], init_order=1, - mag_trans=True, mag_lim=None, trans_weights=None, vel_weights='var', + mag_trans=True, mag_lim=None, trans_weighting=None, vel_weighting='var', trans_input=None, trans_class=transforms.PolyTransform, calc_trans_inverse=False, init_guess_mode='miracle', iter_callback=None, - default_motion_model='Fixed', - motion_model_dict = {}, + motion_models=['Empty', 'Fixed'], + fixed_params_dict = None, use_scipy=True, absolute_sigma=False, save_path=None, @@ -89,13 +89,13 @@ def __init__(self, list_of_starlists, ref_index=0, iters=2, separately for each list and each iteration, you need to pass in a 2D array that has shape (N_lists, 2). - trans_weights : str + trans_weighting : str Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want to weight by the positional uncertainties (variances) in the individual starlists, or also with the uncertainties in the reference frame itself. Note weighting only works when there are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. - vel_weights : str + vel_weighting : str Either 'var' (def) or 'std', depending on whether you want to weight the motion model fits by the variance or standard deviation of the position data @@ -130,11 +130,11 @@ def = None. If not None, then this should contain an array or list of transform A function to call (that accepts a StarTable object and an iteration number) at the end of every iteration. This can be used for plotting or printing state. - default_motion_model : string - Name of motion model to use for new or unassigned stars + motion_models : list of MotionModel or str, optional + Motion models or their names to use for new or unassigned stars - motion_model_dict : None or dict - Dict of motion model name keys (strings) and corresponding MotionModel object values + fixed_params_dict : None or dict + Dictionary of motion model fixed parameters use_scipy : bool, optional If True, use scipy.optimize.curve_fit for velocity fitting. If False, use linear @@ -192,20 +192,34 @@ def = None. If not None, then this should contain an array or list of transform self.init_order = init_order self.mag_trans = mag_trans self.mag_lim = mag_lim - self.trans_weights = trans_weights - self.vel_weights = vel_weights + self.trans_weighting = trans_weighting + self.vel_weighting = vel_weighting self.trans_input = trans_input self.trans_class = trans_class self.calc_trans_inverse = calc_trans_inverse - self.motion_model_dict = motion_model_dict self.use_scipy = use_scipy self.absolute_sigma = absolute_sigma - self.default_motion_model = default_motion_model + self.fixed_params_dict = fixed_params_dict self.init_guess_mode = init_guess_mode self.iter_callback = iter_callback self.save_path = save_path self.verbose = verbose + all_mm_map = motion_model.motion_model_map() + if all(isinstance(mm, str) for mm in motion_models): + mm_names = motion_models + motion_models = [all_mm_map[mm] for mm in motion_models] + else: + mm_names = [mm.name for mm in motion_models] + if 'Empty' not in mm_names: + motion_models.append(all_mm_map['Empty']) + if 'Fixed' not in mm_names: + motion_models.append(all_mm_map['Fixed']) + + # Sort by increasing n_params + motion_models = sorted(motion_models, key=lambda mm: mm.n_params) + self.motion_models = motion_models + # For backwards compatibility. if self.verbose is True: self.verbose = 9 @@ -235,8 +249,8 @@ def = None. If not None, then this should contain an array or list of transform self.setup_trans_info() # Make sure the motion models are ready - self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, - StarTable(), self.default_motion_model) + # self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, + # StarTable(), self.default_motion_model) return @@ -397,6 +411,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar print(" **********") star_list = self.star_lists[ii] + pdb.set_trance() ref_list = self.get_ref_list_from_table(star_list['t'][0]) trans = self.trans_list[ii] @@ -413,11 +428,15 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Only use "use_in_trans" reference stars, even for initial guessing. keepers = np.where(ref_list['use_in_trans'] == True)[0] - trans = trans_initial_guess(ref_list[keepers], star_list_orig_trim, self.trans_args[0], self.motion_model_dict, - mode=self.init_guess_mode, - order=self.init_order, - verbose=self.verbose, - mag_trans=self.mag_trans) + trans = trans_initial_guess( + ref_list[keepers], + star_list_orig_trim, + self.trans_args[0], + mode=self.init_guess_mode, + order=self.init_order, + verbose=self.verbose, + mag_trans=self.mag_trans + ) if self.mag_trans: star_list_T.transform_xym(trans) # trimmed, transformed @@ -700,14 +719,14 @@ def setup_ref_table_from_starlist(self, star_list, motion_model_used=None): for col_name in ref_table.colnames: if len(ref_table[col_name].data.shape) == 2: # Find the 2D columns ref_table._set_invalid_list_values(col_name, -1) - + if 'motion_model_input' not in ref_table.colnames: - ref_table.add_column(Column(np.repeat(self.default_motion_model, len(ref_table)), name='motion_model_input')) - if 'motion_model_used' not in ref_table.colnames: - if motion_model_used is None: - ref_table.add_column(Column(np.repeat(self.default_motion_model, len(ref_table)), name='motion_model_used')) - else: - ref_table.add_column(Column(np.repeat(motion_model_used, len(ref_table)), name='motion_model_used')) + ref_table.add_column(Column(np.repeat(self.motion_models[-1].name, len(ref_table)), name='motion_model_input')) + # if 'motion_model_used' not in ref_table.colnames: + # if motion_model_used is None: + # ref_table.add_column(Column(np.repeat(self.default_motion_model, len(ref_table)), name='motion_model_used')) + # else: + # ref_table.add_column(Column(np.repeat(motion_model_used, len(ref_table)), name='motion_model_used')) return ref_table @@ -807,35 +826,34 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li if ((self.ref_table['x'].shape[1] != len(self.star_lists)) and (ii != self.ref_index) and (ii >= self.ref_table['x'].shape[1])): - + self.ref_table.add_starlist() - + copy_over_values(self.ref_table, star_list, star_list_T, ii, idx_ref, idx_lis) self.ref_table['used_in_trans'][idx_ref_in_trans, ii] = True ### Add the unmatched stars and grow the size of the reference table. - self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars(self.ref_table, star_list, idx_lis, - default_motion_model=self.default_motion_model) + self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars(self.ref_table, star_list, idx_lis) if len(idx_ref_new) > 0: if self.verbose > 0: print(' Adding {0:d} new stars to the reference table.'.format(len(idx_ref_new))) - + copy_over_values(self.ref_table, star_list, star_list_T, ii, idx_ref_new, idx_lis_new) # Copy the single-epoch values to the aggregate (only for new stars). self.ref_table['x0'][idx_ref_new] = star_list_T['x'][idx_lis_new] self.ref_table['y0'][idx_ref_new] = star_list_T['y'][idx_lis_new] self.ref_table['m0'][idx_ref_new] = star_list_T['m'][idx_lis_new] - + self.ref_table['name'] = update_old_and_new_names(self.ref_table, ii, idx_ref_new) if self.use_ref_new == True: self.ref_table['use_in_trans'][idx_ref_new] = True else: self.ref_table['use_in_trans'][idx_ref_new] = False - + return - + def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): """ Average positions or fit velocities. @@ -852,7 +870,9 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): vals_orig = {} vals_orig['m0'] = self.ref_table['m0'][keep_orig] vals_orig['m0_err'] = self.ref_table['m0_err'][keep_orig] - motion_model_class_names = self.ref_table['motion_model_input'].tolist() + motion_model_class_names = [] + if 'motion_model_input' in self.ref_table.keys(): + motion_model_class_names += self.ref_table['motion_model_input'].tolist() if 'motion_model_used' in self.ref_table.keys(): motion_model_class_names += self.ref_table['motion_model_used'][keep_orig].tolist() vals_orig['motion_model_used'] = self.ref_table['motion_model_used'][keep_orig] @@ -863,24 +883,23 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): fit_star_idxs = [idx for idx in range(len(self.ref_table)) if idx not in keep_orig] else: fit_star_idxs = None - #pdb.set_trace() + # Figure out whether motion fits are necessary - all_fixed = np.all(self.ref_table['motion_model_input']=='Fixed') - if all_fixed: + if ('motion_model_input' in self.ref_table.keys()) and np.all(self.ref_table['motion_model_input']=='Fixed'): weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) weighted_m = ('me' in self.ref_table.colnames) self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) else: # Combine positions with a velocity fit. - self.ref_table.fit_velocities(bootstrap=n_boot, - verbose=self.verbose, - show_progress=(self.verbose>0), - default_motion_model=self.default_motion_model, - select_stars=fit_star_idxs, - motion_model_dict=self.motion_model_dict, - weighting=self.vel_weights, - use_scipy=self.use_scipy, - absolute_sigma=self.absolute_sigma) + self.ref_table.fit_motion_model( + motion_models=self.motion_models, + fixed_params_dict=self.fixed_params_dict, + weighting=self.vel_weighting, + use_scipy=self.use_scipy, + absolute_sigma=self.absolute_sigma, + bootstrap=n_boot, + verbose=self.verbose + ) # Combine (transformed) magnitudes if 'me' in self.ref_table.colnames: @@ -910,18 +929,18 @@ def get_weights_for_lists(self, ref_list, star_list): var_xlis = 0.0 var_ylis = 0.0 - if self.trans_weights != None: - if self.trans_weights == 'both,var': + if self.trans_weighting != None: + if self.trans_weighting == 'both,var': weight = 1.0 / (var_xref + var_xlis + var_yref + var_ylis) - if self.trans_weights == 'both,std': + if self.trans_weighting == 'both,std': weight = 1.0 / np.sqrt(var_xref + var_xlis + var_yref + var_ylis) - if self.trans_weights == 'ref,var': + if self.trans_weighting == 'ref,var': weight = 1.0 / (var_xref + var_yref) - if self.trans_weights == 'ref,std': + if self.trans_weighting == 'ref,std': weight = 1.0 / np.sqrt(var_xref + var_yref) - if self.trans_weights == 'list,var': + if self.trans_weighting == 'list,var': weight = 1.0 / (var_xlis + var_ylis) - if self.trans_weights == 'list,std': + if self.trans_weighting == 'list,std': weight = 1.0 / np.sqrt(var_xlis, var_ylis) else: weight = None @@ -963,7 +982,7 @@ def match_lists(self, dr_tol, dm_tol): else: star_list_T.transform_xy(self.trans_list[ii]) - xref, yref = get_pos_at_time(star_list_T['t'][0], self.ref_table, self.motion_model_dict) + xref, yref = infer_positions(star_list_T['t'][0], self.ref_table) mref = self.ref_table['m0'] idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], @@ -997,7 +1016,8 @@ def get_ref_list_from_table(self, epoch): name = self.ref_table['name'] if ('motion_model_used' in self.ref_table.colnames): - x,y,xe,ye = self.ref_table.get_star_positions_at_time(epoch, self.motion_model_dict, allow_alt_models=True) + print(f'{epoch=}, {epoch.shape=}') + x, y, xe, ye = self.ref_table.infer_positions(epoch) else: # No velocities... just used average positions. x = self.ref_table['x0'] @@ -1144,20 +1164,24 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot m2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) # Set up motion model parameters - motion_model_list = ['Fixed', self.default_motion_model] if 'motion_model_used' in ref_table.keys(): - motion_model_list += ref_table['motion_model_used'].tolist() + motion_model_list = np.unique(ref_table['motion_model_used']).tolist() elif 'motion_model_input' in ref_table.keys(): - motion_model_list += ref_table['motion_model_input'].tolist() - motion_col_list = motion_model.get_list_motion_model_param_names(np.unique(motion_model_list).tolist(), with_errors=False, with_fixed=False) + motion_model_list = np.unique(ref_table['motion_model_input']).tolist() + + all_mm_map = motion_model.motion_model_map() + motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] + + motion_col_list = motion_model.get_list_motion_model_param_names(motion_model_list, with_errors=False, with_fixed=False) if calc_vel_in_bootstrap: motion_boot_sum = {} motion2_boot_sum = {} for col in motion_col_list: motion_boot_sum[col] = np.zeros((len(ref_table['x']))) motion2_boot_sum[col] = np.zeros((len(ref_table['x']))) - motion_boot_min_epochs = np.max([self.motion_model_dict[mod].n_pts_req - for mod in np.unique(motion_model_list)]) + + all_mm_map = motion_model.motion_model_map() + motion_boot_min_epochs = np.max([all_mm_map[mm].n_params for mm in motion_model_list]) ### IF MEMORY PROBLEMS HERE: ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY @@ -1215,7 +1239,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # Calculate weights based on weights keyword. If weights desired, will need to # make starlist objects for this - if self.trans_weights != None: + if self.trans_weighting != None: # In order for weights calculation to work, we need to apply a transformation # to the star_list_T so it is in the same units as ref_boot. So, we'll apply # the final transformation for the epoch to get close enough for the @@ -1296,10 +1320,16 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # Now, do proper motion calculation, making sure to fix t0 to the # orig value (so we can get a reasonable error on x0, y0) - star_table.fit_velocities( - fixed_t0=t0_arr, - default_motion_model=self.default_motion_model, - motion_model_dict=self.motion_model_dict, + if self.fixed_params_dict is None: + fixed_params_dict = {'t0': t0_arr} + elif 't0' not in self.fixed_params_dict.keys(): + fixed_params_dict = self.fixed_params_dict.copy() + fixed_params_dict['t0'] = t0_arr + + star_table.fit_motion_model( + motion_models=self.motion_models, + fixed_params_dict=fixed_params_dict, + weighting=self.vel_weighting, use_scipy=self.use_scipy, absolute_sigma=self.absolute_sigma ) @@ -1351,7 +1381,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot self.ref_table.add_column(col) # Calculate chi^2 with bootstrap positional errors - x_pred, y_pred, _, _ = self.ref_table.get_star_positions_at_time(t_arr, self.motion_model_dict, allow_alt_models=True) + x_pred, y_pred, _, _ = self.ref_table.infer_positions(t_arr) xe_comb = np.hypot(self.ref_table['xe'], self.ref_table['xe_boot']) ye_comb = np.hypot(self.ref_table['ye'], self.ref_table['ye_boot']) data_dict['chi2_x_boot'] = np.nansum((self.ref_table['x']-x_pred)**2/(xe_comb)**2,axis=1) @@ -1373,7 +1403,6 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot col[idx_good] = data_dict[ff] self.ref_table.add_column(col) - #pdb.set_trace() print('===============================') print('Done with bootstrap') @@ -1389,7 +1418,7 @@ def __init__(self, ref_list, list_of_starlists, iters=2, trans_args=[{'order': 2}, {'order': 2}], init_order=1, mag_trans=True, mag_lim=None, ref_mag_lim=None, - trans_weights=None, vel_weights='var', + trans_weighting=None, vel_weighting='var', trans_input=None, trans_class=transforms.PolyTransform, calc_trans_inverse=False, @@ -1397,8 +1426,8 @@ def __init__(self, ref_list, list_of_starlists, iters=2, update_ref_orig=False, init_guess_mode='miracle', iter_callback=None, - default_motion_model='Fixed', - motion_model_dict={}, + motion_models=['Empty', 'Fixed'], + fixed_params_dict=None, use_scipy=True, absolute_sigma=False, save_path=None, @@ -1463,13 +1492,13 @@ def __init__(self, ref_list, list_of_starlists, iters=2, If different from None, it indicates the minimum and maximum magnitude on the reference catalog for finding the transformations. - trans_weights : str + trans_weighting : str Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want to weight by the positional uncertainties (variances) in the individual starlists, or also with the uncertainties in the reference frame itself. Note weighting only works when there are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. - vel_weights : str + vel_weighting : str Either 'var' (def) or 'std', depending on whether you want to weight the motion model fits by the variance or standard deviation of the position data @@ -1529,9 +1558,12 @@ def = None. If not None, then this should contain an array or list of transform default_motion_model : string Name of motion model to use for new or unassigned stars - - motion_model_dict : None or dict - Dict of motion model name keys (strings) and corresponding MotionModel object values + + motion_models : list of str or MotionModel objects + List of motion model names (strings) or MotionModel objects to use + + fixed_params_dict : None or dict + Dictionary of fixed parameters for motion models use_scipy : bool, optional If True, use scipy.optimize.curve_fit for velocity fitting. If False, use linear algebra fitting, by default True. @@ -1578,13 +1610,13 @@ def = None. If not None, then this should contain an array or list of transform outlier_tol=outlier_tol, trans_args=trans_args, init_order=init_order, mag_trans=mag_trans, mag_lim=mag_lim, - trans_weights=trans_weights, vel_weights=vel_weights, + trans_weighting=trans_weighting, vel_weighting=vel_weighting, trans_input=trans_input, trans_class=trans_class, calc_trans_inverse=calc_trans_inverse, - default_motion_model = default_motion_model, init_guess_mode=init_guess_mode, iter_callback=iter_callback, - motion_model_dict=motion_model_dict, + motion_models=motion_models, + fixed_params_dict=fixed_params_dict, verbose=verbose, use_scipy=use_scipy, absolute_sigma=absolute_sigma, save_path=save_path) @@ -1606,10 +1638,10 @@ def = None. If not None, then this should contain an array or list of transform self.ref_list['me'] = self.ref_list['m0_err'] if ('t' not in self.ref_list.colnames) and ('t0' in self.ref_list.colnames): self.ref_list['t'] = self.ref_list['t0'] - + # Make sure the motion models are ready - self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, - self.ref_list, self.default_motion_model) + # self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, + # self.ref_list, self.default_motion_model) return @@ -1646,13 +1678,13 @@ def fit(self): logger(_log, ' mag_trans = ' + str(self.mag_trans), self.verbose) logger(_log, ' mag_lim = ' + str(self.mag_lim), self.verbose) logger(_log, ' ref_mag_lim = ' + str(self.ref_mag_lim), self.verbose) - logger(_log, ' trans_weights = ' + str(self.trans_weights), self.verbose) - logger(_log, ' vel_weights = ' + str(self.vel_weights), self.verbose) + logger(_log, ' trans_weighting = ' + str(self.trans_weighting), self.verbose) + logger(_log, ' vel_weighting = ' + str(self.vel_weighting), self.verbose) logger(_log, ' trans_input = ' + str(self.trans_input), self.verbose) logger(_log, ' trans_class = ' + str(self.trans_class), self.verbose) logger(_log, ' calc_trans_inverse = ' + str(self.calc_trans_inverse), self.verbose) logger(_log, ' use_ref_new = ' + str(self.use_ref_new), self.verbose) - logger(_log, ' default_motion_model = ' + str(self.default_motion_model), self.verbose) + logger(_log, ' motion_models = ' + str([mm.name for mm in self.motion_models]), self.verbose) logger(_log, ' update_ref_orig = ' + str(self.update_ref_orig), self.verbose) logger(_log, ' init_guess_mode = ' + str(self.init_guess_mode), self.verbose) logger(_log, ' iter_callback = ' + str(self.iter_callback), self.verbose) @@ -1687,13 +1719,13 @@ def fit(self): print('Starting iter {0:d} with ref_table shape:'.format(nn), self.ref_table['x'].shape) print("**********") print("**********") - + # ALL the action is in here. Match and transform the stack of starlists. # This updates trans objects and the ref_table. self.match_and_transform(self.ref_mag_lim, self.dr_tol[nn], self.dm_tol[nn], self.outlier_tol[nn], self.trans_args[nn]) - + # Clean up the reference table # Find where stars are detected. self.ref_table.detections() @@ -1898,7 +1930,7 @@ def reset_ref_values(ref_table): return -def add_rows_for_new_stars(ref_table, star_list, idx_lis, default_motion_model='Fixed'): +def add_rows_for_new_stars(ref_table, star_list, idx_lis): """ For each star that is in star_list and NOT in idx_list, make a new row in the reference table. The values will be empty (None, NAN, etc.). @@ -1943,12 +1975,12 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis, default_motion_model=' elif ref_table[col_name].dtype == np.dtype('bool'): new_col_empty = False elif col_name=='motion_model_input': - new_col_empty = default_motion_model + new_col_empty = 'Empty' elif col_name=='motion_model_used': - new_col_empty = 'Fixed' + new_col_empty = 'Empty' else: new_col_empty = np.nan - + if len(ref_table[col_name].shape) == 1: new_col_shape = len(idx_lis_new) else: @@ -1966,7 +1998,7 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis, default_motion_model=' ref_table = vstack([ref_table, ref_table_new]) idx_ref_new = np.arange(last_star_idx, len(ref_table)) - + return ref_table, idx_lis_new, idx_ref_new """ @@ -2863,7 +2895,7 @@ def check_trans_input(list_of_starlists, trans_input, mag_trans): return -def trans_initial_guess(ref_list, star_list, trans_args, motion_model_dict, mode='miracle', +def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', ignore_contains='star', verbose=True, n_req_match=3, mag_trans=True, order=1): """ @@ -2901,7 +2933,7 @@ def trans_initial_guess(ref_list, star_list, trans_args, motion_model_dict, mode # If there are velocities in the reference list, use them. # We assume velocities are in the same units as the positions. - xref, yref = get_pos_at_time(star_list['t'][0], ref_list, motion_model_dict) + xref, yref = infer_positions(star_list['t'][0], ref_list) if 'm' in ref_list.colnames: mref = ref_list['m'] else: @@ -3140,9 +3172,9 @@ def get_weighting_scheme(weights, ref_list, star_list): return weight # TODO: This is sometimes run on a startable, not a starlist, at least as currently used -def get_pos_at_time(t, starlist, motion_model_dict): +def infer_positions(t, startable): """ - Take a starlist, check to see if it has motion/velocity columns. + Take a startable, check to see if it has motion/velocity columns. If it does, then propogate the positions forward in time to the desired epoch. If no motion/velocities exist, then just use ['x0', 'y0'] or ['x', 'y'] @@ -3155,21 +3187,23 @@ def get_pos_at_time(t, starlist, motion_model_dict): as the 't0' column in starlist. """ # Check for motion model - if 'motion_model_used' in starlist.colnames: - x,y,xe,ye = starlist.get_star_positions_at_time(t, motion_model_dict, allow_alt_models=True) + if 'motion_model_used' in startable.colnames: + x, y, xe, ye = startable.infer_positions(t) + # If no motion model, check for velocities - elif ('vx' in starlist.colnames) and ('vy' in starlist.colnames): - x = starlist['x0'] + starlist['vx']*(t-starlist['t0']) - y = starlist['y0'] + starlist['vy']*(t-starlist['t0']) + elif ('vx' in startable.colnames) and ('vy' in startable.colnames): + x = startable['x0'] + startable['vx'] * (t - startable['t0']) + y = startable['y0'] + startable['vy'] * (t - startable['t0']) + # If no velocities, try fitted positon - elif ('x0' in starlist.colnames) and ('y0' in starlist.colnames): - x = starlist['x0'] - y = starlist['y0'] + elif ('x0' in startable.colnames) and ('y0' in startable.colnames): + x = startable['x0'] + y = startable['y0'] # Otherwise, use measured position else: - x = starlist['x'] - y = starlist['y'] - + x = startable['x'] + y = startable['y'] + return (x, y) def logger(logfile, message, verbose = 9): diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 195a67b..cc4de2a 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -6,10 +6,8 @@ from flystar import motion_model from astropy.table import Table import numpy as np -import pylab as plt +import matplotlib.pyplot as plt import pdb -import datetime -import pytest def test_MosaicSelfRef(): """ @@ -28,7 +26,7 @@ def test_MosaicSelfRef(): trans_args={'order': 2}) msc.fit() - + # Check some of the output quantities on the final table. assert 'x0' in msc.ref_table.colnames assert 'x0_err' in msc.ref_table.colnames @@ -42,7 +40,6 @@ def test_MosaicSelfRef(): assert msc.ref_table['use_in_trans'].shape == msc.ref_table['x0'].shape assert msc.ref_table['used_in_trans'].shape == msc.ref_table['x'].shape - # Check that we have some matched stars... should be at least 35 stars # that are detected in all 4 starlists. @@ -50,11 +47,11 @@ def test_MosaicSelfRef(): assert len(idx) > 35 # Check that the transformation error isn't too big - assert (msc.ref_table['x0_err'] < 3.0).all() # less than 1 pix - assert (msc.ref_table['y0_err'] < 3.0).all() - #assert (msc.ref_table['m0_err'] < 1.0).all() # less than 0.5 mag - assert (msc.ref_table['m0_err'] < 1.5).all() # less than 0.5 mag - + valid_err = np.isfinite(msc.ref_table['x0_err']) & np.isfinite(msc.ref_table['y0_err']) & np.isfinite(msc.ref_table['m0_err']) + assert (msc.ref_table['x0_err'][valid_err] < 3.0).all() # less than 1 pix + assert (msc.ref_table['y0_err'][valid_err] < 3.0).all() + #assert (msc.ref_table['m0_err'][valid_err] < 1.0).all() # less than 0.5 mag + assert (msc.ref_table['m0_err'][valid_err] < 1.5).all() # less than 0.5 mag # Check that the transformation lists aren't too wacky for ii in range(4): np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) @@ -81,7 +78,7 @@ def test_MosaicSelfRef(): plt.plot(msc.ref_table['x0'], msc.ref_table['y0'], '.', color='black', alpha=0.2) - + return @@ -102,11 +99,11 @@ def test_MosaicSelfRef_vel_tconst(): dr_tol=[3, 3], dm_tol=[1, 1], trans_class=transforms.PolyTransform, trans_args={'order': 2}, - default_motion_model='Linear', + motion_models=['Empty', 'Fixed', 'Linear'], verbose=False) msc.fit() - + # Check some of the output quantities on the final table. assert 'x0' in msc.ref_table.colnames assert 'x0_err' in msc.ref_table.colnames @@ -126,21 +123,16 @@ def test_MosaicSelfRef_vel_tconst(): assert len(idx) > 35 # Check that the transformation error isn't too big - assert (msc.ref_table['x0_err'] < 3.0).all() # less than 1 pix - assert (msc.ref_table['y0_err'] < 3.0).all() - assert (msc.ref_table['m0_err'] < 1.0).all() # less than 0.5 mag - + valid_err = np.isfinite(msc.ref_table['x0_err']) & np.isfinite(msc.ref_table['y0_err']) & np.isfinite(msc.ref_table['m0_err']) + assert (msc.ref_table['x0_err'][valid_err] < 3.0).all() # less than 1 pix + assert (msc.ref_table['y0_err'][valid_err] < 3.0).all() + assert (msc.ref_table['m0_err'][valid_err] < 1.0).all() # less than 0.5 mag + # Check that the transformation lists aren't too wacky for ii in range(4): np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) - # Check that the velocities aren't crazy... - # they should be non-existent (since there is no time difference) - assert np.isnan(msc.ref_table['vx']).all() - assert np.isnan(msc.ref_table['vy']).all() - assert np.isnan(msc.ref_table['vx_err']).all() - assert np.isnan(msc.ref_table['vy_err']).all() return @@ -172,7 +164,7 @@ def test_MosaicSelfRef_vel(): msc = align.MosaicSelfRef(lists, ref_index=0, iters=3, dr_tol=[5, 3, 3], dm_tol=[1, 1, 0.5], outlier_tol=None, trans_class=transforms.PolyTransform, - trans_args={'order': 2}, default_motion_model='Linear', + trans_args={'order': 2}, motion_models=['Empty', 'Fixed', 'Linear'], verbose=False) msc.fit() @@ -196,10 +188,11 @@ def test_MosaicSelfRef_vel(): assert len(idx) > 35 # Check that the transformation error isn't too big - assert (msc.ref_table['x0_err'] < 3.0).all() # less than 1 pix - assert (msc.ref_table['y0_err'] < 3.0).all() - assert (msc.ref_table['m0_err'] < 1.0).all() # less than 0.5 mag - + valid_err = np.isfinite(msc.ref_table['x0_err']) & np.isfinite(msc.ref_table['y0_err']) & np.isfinite(msc.ref_table['m0_err']) + assert (msc.ref_table['x0_err'][valid_err] < 3.0).all() # less than 1 pix + assert (msc.ref_table['y0_err'][valid_err] < 3.0).all() + assert (msc.ref_table['m0_err'][valid_err] < 1.0).all() # less than 0.5 mag + # Check that the transformation lists aren't too wacky for ii in range(4): np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) @@ -214,7 +207,7 @@ def test_MosaicSelfRef_vel(): def test_MosaicToRef(): make_fake_starlists_poly1(seed=42) - + ref_file = 'random_ref.fits' list_files = ['random_0.fits', 'random_1.fits', @@ -235,7 +228,7 @@ def test_MosaicToRef(): msc = align.MosaicToRef(ref_list, lists, iters=2, dr_tol=[0.2, 0.1], dm_tol=[1, 0.5], trans_class=transforms.PolyTransform, - trans_args={'order': 2}, default_motion_model='Fixed', + trans_args={'order': 2}, motion_models=['Empty', 'Fixed'], update_ref_orig=False, verbose=False) msc.fit() @@ -300,7 +293,7 @@ def test_MosaicToRef_p0_vel(): dr_tol=[0.2, 0.1], dm_tol=[1, 0.5], outlier_tol=[None, None], trans_class=transforms.PolyTransform, - trans_args={'order': 1}, default_motion_model='Linear', + trans_args={'order': 1}, motion_models=['Empty', 'Fixed', 'Linear'], update_ref_orig=False, verbose=False) msc.fit() @@ -326,18 +319,18 @@ def test_MosaicToRef_p0_vel(): # The velocities should be almost the same (but not as close as before) # as the input velocities since update_ref == True. assert (msc.ref_table['name']==ref_list['name']).all() - np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-1) - np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-1) + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], atol=1e-2) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], atol=1e-2) # Also double check that they aren't exactly the same for the reference stars. #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) assert np.not_equal(msc.ref_table['vx'], ref_list['vx']).any() - + return msc def test_MosaicToRef_vel(): make_fake_starlists_poly1_vel(seed=42) - + ref_file = 'random_vel_ref.fits' list_files = ['random_vel_0.fits', 'random_vel_1.fits', @@ -359,14 +352,14 @@ def test_MosaicToRef_vel(): # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 ref_list['vx'] *= -1.0 - + lists = [starlists.StarList.read(lf) for lf in list_files] msc = align.MosaicToRef(ref_list, lists, iters=2, dr_tol=[0.2, 0.1], dm_tol=[1, 0.5], outlier_tol=[None, None], trans_class=transforms.PolyTransform, - trans_args={'order': 1}, default_motion_model='Linear', + trans_args={'order': 1}, motion_models=['Empty', 'Fixed', 'Linear'], update_ref_orig=False, verbose=False) msc.fit() @@ -392,8 +385,8 @@ def test_MosaicToRef_vel(): # The velocities should be almost the same (but not as close as before) # as the input velocities since update_ref == True. assert (msc.ref_table['name']==ref_list['name']).all() - np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-1) - np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-1) + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], atol=1e-2) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], atol=1e-2) # Also double check that they aren't exactly the same for the reference stars. #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) @@ -403,7 +396,7 @@ def test_MosaicToRef_vel(): def test_MosaicToRef_acc(): make_fake_starlists_poly1_acc(seed=42) - + ref_file = 'random_acc_ref.fits' list_files = ['random_acc_0.fits', 'random_acc_1.fits', @@ -427,19 +420,19 @@ def test_MosaicToRef_acc(): ref_list['ay'] *= 1e-3 ref_list['ax_err'] *= 1e-3 ref_list['ay_err'] *= 1e-3 - + # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 ref_list['vx0'] *= -1.0 ref_list['ax'] *= -1.0 - + lists = [starlists.StarList.read(lf) for lf in list_files] msc = align.MosaicToRef(ref_list, lists, iters=2, dr_tol=[0.4, 0.2], dm_tol=[1, 0.5], trans_class=transforms.PolyTransform, trans_args={'order': 2}, - default_motion_model='Acceleration', + motion_models=['Acceleration'], update_ref_orig=False, verbose=False) msc.fit() From a19b10678e4c38b90c16265ebe657a6e0abf3c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 16 Dec 2025 04:16:42 -0800 Subject: [PATCH 21/94] Passed startable tests; Accelerated imports with relative import --- flystar/analysis.py | 13 +- flystar/match.py | 5 +- flystar/motion_model.py | 34 +- flystar/parallax.py | 24 +- flystar/plots.py | 8 +- flystar/startables.py | 573 +++++++------------------------- flystar/tests/test_startable.py | 173 +++++----- 7 files changed, 241 insertions(+), 589 deletions(-) diff --git a/flystar/analysis.py b/flystar/analysis.py index 81ab3f4..9ac826f 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -1,17 +1,15 @@ import numpy as np import pylab as plt -from flystar import starlists -from flystar import startables -from flystar import align -from flystar import match -from flystar import transforms +from . import starlists +from . import startables +from . import align +from . import match +from . import transforms from astropy import table from astropy.table import Table, Column from astropy.coordinates import SkyCoord from astropy import units as u from astropy.wcs import WCS -from astroquery.gaia import Gaia -from astroquery.mast import Observations, Catalogs import pdb, copy import math from scipy.stats import f @@ -42,6 +40,7 @@ def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr3'): table_name : string Options are 'gaiadr2' or 'gaiaedr3' """ + from astroquery.gaia import Gaia target_coords = SkyCoord(ra, dec, unit=(u.hourangle, u.deg), frame='icrs') ra = target_coords.ra.degree dec = target_coords.dec.degree diff --git a/flystar/match.py b/flystar/match.py index d7c391e..4cd5e36 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -1,5 +1,7 @@ import numpy as np -from flystar import starlists, transforms, startables, align +from . import starlists +from . import transforms +from . import startables from collections import Counter from scipy.spatial import cKDTree as KDT from astropy.table import Column, Table @@ -526,6 +528,7 @@ def generic_match(sl1, sl2, init_mode='triangle', Startable of the two matched catalogs """ + from . import align # Check the input StarLists and transform them into astropy Tables if not isinstance(sl1, starlists.StarList): diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 42a5e54..6741c65 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -538,8 +538,7 @@ def run_fit( return_chi2=False, verbose=True ): - assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Linear model." - t0 = fixed_params_dict['t0'] + t0 = fixed_params_dict.get('t0', np.average(t, weights=1./np.hypot(xe, ye))) t = np.atleast_1d(t) x = np.atleast_1d(x) y = np.atleast_1d(y) @@ -742,8 +741,7 @@ def run_fit( return_chi2=False, verbose=True ): - assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Acceleration model." - t0 = fixed_params_dict['t0'] + t0 = fixed_params_dict.get('t0', np.average(t, weights=1./np.hypot(xe, ye))) t = np.atleast_1d(t) x = np.atleast_1d(x) y = np.atleast_1d(y) @@ -839,7 +837,7 @@ def calc_parallax_vector(self, t_mjd, ra, dec, pa=0., obsLocation='earth'): if self.plx_vector_cached is not None: t_mjd = np.atleast_1d(t_mjd) t_mjd_cached = self.plx_vector_cached[0] - if np.allclose(t_mjd, t_mjd_cached): + if np.array_equal(t_mjd, t_mjd_cached): # If cached values match input times, return cached values return self.plx_vector_cached[1] @@ -901,7 +899,7 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): - ra, shape (N_stars,) or (1,). - dec, shape (N_stars,) or (1,). - pa, optional, shape (N_stars,) or (1,), by default 0. - - obsLocation, optional,shape (N_stars,) or (1,), by default 'earth' + - obsLocation, optional, string, by default 'earth' fit_param_errs : array-like, optional Uncertainties in fit parameters, by default None @@ -910,6 +908,9 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): x, y (, xe, ye) Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ + + assert all([_ in fixed_params_dict for _ in ['t0', 'ra', 'dec']]), "Fixed parameters t0, ra, and dec are required for Parallax model." + t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 @@ -922,12 +923,13 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): pa = np.atleast_1d(fixed_params_dict.get('pa', 0.0)) obsLocation = fixed_params_dict.get('obsLocation', 'earth') + # TODO: vectorize parallax.parallax_in_direction to handle multiple obsLocation? + assert type(obsLocation) == str, "obsLocation must be a single string for all stars at this time." + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (2, N_times) x, y = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) - # x = xy[:, :N_times] # Shape (N_stars, N_times) - # y = xy[:, N_times:] # Shape (N_stars, N_times) if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays @@ -1068,14 +1070,18 @@ def get_one_motion_model_param_names(motion_model, with_errors=True, with_fixed= Add uncertainty names with '_err' suffix or not, by default True with_fixed : bool, optional Add fixed param names with '_fixed' suffix or not, by default True - + Returns ------- list List of all parameter names for the motion model """ - list_of_parameters = [] + if isinstance(motion_model, str): + all_mm_map = motion_model_map() + motion_model = all_mm_map[motion_model] + list_of_parameters = [] + def list_add(name): if name not in list_of_parameters: list_of_parameters.append(name) @@ -1112,6 +1118,10 @@ def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_ """ list_of_parameters = [] + if len(motion_model_list) > 0 and isinstance(motion_model_list[0], str): + all_mm_map = motion_model_map() + motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] + def list_add(name): if name not in list_of_parameters: list_of_parameters.append(name) @@ -1130,12 +1140,12 @@ def list_add(name): return list(list_of_parameters) -def get_all_motion_model_names(with_errors=True, with_fixed=True): +def get_all_motion_model_param_names(with_errors=True, with_fixed=True): return get_list_motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) def motion_model_map(): mm_map = dict( - [(mm.__name__, mm()) for mm in MotionModel.__subclasses__()] + [(mm.__name__, mm) for mm in MotionModel.__subclasses__()] ) # Sort by n_params mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].n_params)) diff --git a/flystar/parallax.py b/flystar/parallax.py index 2bd352a..1a6dcf1 100755 --- a/flystar/parallax.py +++ b/flystar/parallax.py @@ -44,7 +44,7 @@ def parallax_in_direction(ra, dec, mjd, obsLocation='earth', pa=0.): Returns ------- pvec : ndarray - Parallax vector components, shape of (2, N) or (2,), where N is the number of stars. + Parallax vector components, shape of (2, N_stars, N_times), or (2, N_stars) if N_times=1, or (2, N_times) if N_stars=1. """ # Munge inputs into astropy format. # times = Time(mjd + 2400000.5, format='jd', scale='tdb') @@ -62,24 +62,24 @@ def parallax_in_direction(ra, dec, mjd, obsLocation='earth', pa=0.): _north_projected = np.cross(directions, _east_projected) _north_projected /= np.linalg.norm(_north_projected, axis=1)[:, np.newaxis] # Shape (N_stars, 3) - obs_pos = get_observer_barycentric(obsLocation, times) - sun_pos = get_body_barycentric(body='sun', time=times) + obs_pos = get_observer_barycentric(obsLocation, times) # Shape (N_times,) + sun_pos = get_body_barycentric(body='sun', time=times) # Shape (N_times,) sun_obs_pos = sun_pos - obs_pos - pos = sun_obs_pos.xyz.T.to(units.au).value # Shape (N_stars, 3) + pos = sun_obs_pos.xyz.T.to(units.au).value # Shape (N_times, 3) - e = np.einsum('ij,ij->i', pos, _east_projected) # Shape (N_stars,) - n = np.einsum('ij,ij->i', pos, _north_projected) # Shape (N_stars,) + e = np.einsum('ti,si->st', pos, _east_projected) # Shape (N_stars, N_times) + n = np.einsum('ti,si->st', pos, _north_projected) # Shape (N_stars, N_times) # Rotate frame e,n->x,y accounting for PA - pa = np.deg2rad(pa) - x = -e * np.cos(pa) + n * np.sin(pa) - y = e * np.sin(pa) + n * np.cos(pa) - pvec = np.array([x, y]) # Shape (2, N_stars) + pa = np.deg2rad(pa) # shape (N_stars,) + x = -e * np.cos(pa[:, np.newaxis]) + n * np.sin(pa[:, np.newaxis]) # Shape (N_stars, N_times) + y = e * np.sin(pa[:, np.newaxis]) + n * np.cos(pa[:, np.newaxis]) # Shape (N_stars, N_times) + pvec = np.array([x, y]) # Shape (2, N_stars, N_times) - if pvec.shape[1] == 1: - pvec = pvec.flatten() + if pvec.shape[1] == 1 or pvec.shape[2] == 1: + pvec = pvec.reshape(2, -1) # Shape (2, N_stars) or (2, N_times) return pvec diff --git a/flystar/plots.py b/flystar/plots.py index 8df9d51..8a2127c 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -1,4 +1,4 @@ -from flystar import analysis, motion_model, startables +from . import motion_model, startables import numpy as np import matplotlib.mlab as mlab import matplotlib @@ -193,6 +193,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None an outlier. """ + from . import analysis diff_x = ref_mat['x'] - starlist_mat['x'] diff_y = ref_mat['y'] - starlist_mat['y'] @@ -1069,16 +1070,15 @@ def plot_mag_error(tab): return -def plot_mean_residuals_by_epoch(tab, motion_model_dict={}): +def plot_mean_residuals_by_epoch(tab): """ Plot mean position and magnitude residuals vs. epoch. Note we are plotting the mean( |dx} ) to see the size of the mean residual. """ # Predicted model positions at each epoch - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod, yt_mod, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod, yt_mod, xt_mod_err, yt_mod_err = tab.predict_positions(tab['t'][i_all_detected]) # Residuals dx = tab['x'] - xt_mod diff --git a/flystar/startables.py b/flystar/startables.py index dd44178..bdcb880 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -227,7 +227,7 @@ def _add_list_data_from_starlist(self, starlist): lis_meta_keys = list(starlist.meta.keys()) # append 's' to the end to pluralize the input starlist. lis_meta_keys_plural = [lis_meta_key + 's' for lis_meta_key in lis_meta_keys] - + for kk in range(len(tab_meta_keys)): tab_key = tab_meta_keys[kk] @@ -237,9 +237,9 @@ def _add_list_data_from_starlist(self, starlist): # If we find the key in the starlists' meta argument, then add the new values. # Otherwise, add "None". - idx = np.where(lis_meta_keys_plural == tab_key)[0] - if len(idx) > 0: - lis_key = lis_meta_keys[idx[0]] + idx = lis_meta_keys_plural.index(tab_key) if tab_key in lis_meta_keys_plural else None + if idx is not None: + lis_key = lis_meta_keys[idx] self.meta[tab_key] = np.append(self.meta[tab_key], [starlist.meta[lis_key]]) else: self._append_invalid_meta_values(tab_key) @@ -550,7 +550,7 @@ def fit_motion_model( Parameters ---------- - motion_models : list of MotionModel, optional + motion_models : list of MotionModel or str, optional Motion models to use. Empty and Fixed models are always added automatically for stars with n_fit = 0 or 1. The behavior is as follows: @@ -612,9 +612,16 @@ def fit_motion_model( if fixed_params_dict is not None: if not isinstance(fixed_params_dict, dict): raise ValueError("fit_velocities: fixed_params_dict must be a dictionary!") - + + # Convert motion_models to MotionModel objects if they are strings: + all_mm_map = motion_model.motion_model_map() + if all(isinstance(mm, str) for mm in motion_models): + mm_names = motion_models + motion_models = [all_mm_map[mm] for mm in motion_models] + else: + mm_names = [mm.name for mm in motion_models] + # Always add Empty and Fixed in motion models - mm_names = [mm.name for mm in motion_models] if 'Fixed' not in mm_names: motion_models.insert(0, Fixed) if 'Empty' not in mm_names: @@ -622,17 +629,13 @@ def fit_motion_model( mm_names = [mm.name for mm in motion_models] # Construct motion models if motion_model_input column exists - all_mm_map = motion_model.motion_model_map() if 'motion_model_input' in self.colnames: input_mm_names = np.unique(self['motion_model_input']) assert all([name in all_mm_map.keys() for name in input_mm_names]), \ f"fit_velocities: Unknown motion model name(s) in 'motion_model_input' column. Available motion models are: {', '.join(all_mm_map.keys())}." for mm_name in input_mm_names: if mm_name not in mm_names: - try: - motion_models.append(all_mm_map[mm_name]()) - except Exception as e: - raise ValueError(f"fit_velocities: An instance of motion model {mm_name} with initialization parameters is missing in motion_models: {e}") + motion_models.append(all_mm_map[mm_name]) # Sort motion models by n_params motion_models = sorted(motion_models, key=lambda mm: mm.n_params) @@ -673,15 +676,16 @@ def fit_motion_model( # Add default t0 if not provided in fixed_params_dict if fixed_params_dict is None: weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None - t0 = np.average(t_data, axis=1, weights=weights) - fixed_params_dict = {'t0': t0} + fixed_params_dict = {'t0': np.average(t_data, axis=1, weights=weights)} + elif 't0' not in fixed_params_dict: weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None fixed_params_dict['t0'] = np.average(t_data, axis=1, weights=weights) else: if np.ndim(fixed_params_dict['t0']) == 0: fixed_params_dict['t0'] = np.full(N_stars, fixed_params_dict['t0']) - t0 = fixed_params_dict['t0'] + + t0 = fixed_params_dict['t0'] # Prepare fixed_params_dict for each star @@ -739,7 +743,7 @@ def fit_motion_model( ) - 1 # Convert to 0-based index # Assign motion models to stars - self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized]) + self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') ############################ @@ -747,8 +751,9 @@ def fit_motion_model( ############################ # Fill table with all possible motion model parameter names as new columns. motion_model_used = [all_mm_map[name] for name in np.unique(self['motion_model_used'])] - new_col_list = motion_model.get_list_motion_model_param_names(motion_model_used, with_errors=True) + new_col_list = motion_model.get_list_motion_model_param_names(motion_model_used, with_errors=True, with_fixed=False) new_col_list += ['chi2_x', 'chi2_y', 'n_params'] + if 't0' not in new_col_list: new_col_list.append('t0') @@ -765,6 +770,32 @@ def fit_motion_model( rename_duplicate=True ) + # Add fixed parameter columns if they do not exist + fixed_param_names = [] + for mm in motion_model_used: + for param in mm.fixed_param_names: + if param not in fixed_param_names: + fixed_param_names.append(param) + if 't0' in fixed_param_names: + fixed_param_names.remove('t0') + + # Add fixed parameter columns + for param in fixed_param_names: + coldata = np.array([fixed_params_stars[i][param] for i in range(N_stars)]) + if param in self.colnames: + # If the column already exists, check if the data are the same + if np.allclose(self[param], coldata, equal_nan=True): + # Same data, skip + continue + else: + # Different data, add with _mm suffix to avoid name conflict + colname = param + '_mm' + else: + colname = param + + self.add_column(Column(data=coldata, name=colname)) + + # Add a column to keep track of the number of points used in a fit and number of bootstrap used. self.meta['n_bootstrap'] = bootstrap @@ -822,332 +853,87 @@ def fit_motion_model( self['t0'][unique_index] = t0[unique_index] return - - def fit_velocities(self, weighting='var', use_scipy=True, absolute_sigma=True, bootstrap=0, - fixed_t0=False, verbose=False, mask_val=None, mask_lists=False, show_progress=True, - default_motion_model='Linear', reassign_motion_model=False, select_stars=None, motion_model_dict={}): - """Fit velocities for all stars in the table and add to the columns 'vx', 'vxe', 'vy', 'vye', 'x0', 'x0e', 'y0', 'y0e'. + def infer_positions(self, times, fill_value=np.nan): + """Infer star positions at given times using fitted motion models. Parameters ---------- - weighting : str, optional - Weight by variance 'var' or standard deviation 'std', by default 'var' - bootstrap : int, optional - Calculate uncertainty using bootstraping or not, by default 0 - fixed_t0 : bool or array-like, optional - Fix the t0 in dt = time - t0 if user provides an array with the same length of the table, or automatically calculate t0 = np.average(time, weights=1/np.hypot(xe, ye)) if False, by default False - verbose : bool, optional - Output verbose information or not, by default False - mask_val : float, optional - Value that needs to be masked in the data, e.g. -100000, by default None - mask_lists : list, optional - Columns that needs to be masked, by default False - show_progress : bool, optional - Show progress bar or not, by default True + times : array_like + Times at which to predict positions. + fill_value : float, optional + Value to use for missing data, by default np.nan - Raises - ------ - ValueError - If weighting is neither 'var' or 'std' - KeyError - If there's not time information in the table + Returns + ------- + x, y, xe, ye : ndarray + Arrays of predicted x, y positions and their uncertainties xe, ye, with shape (N_stars, N_times) or (N_stars,) if N_times=1, or (N_times,) if N_stars=1, or scalar. """ - if weighting not in ['var', 'std']: - raise ValueError(f"fit_velocities: Weighting must either be 'var' or 'std', not {weighting}!") - - if ('t' not in self.colnames) and ('list_times' not in self.meta): - raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'list_times' in meta.") - - # Check if we have the required columns - if not all([_ in self.colnames for _ in ['x', 'y']]): - raise KeyError(f"fit_velocities: Missing required columns in the table: {', '.join(['x', 'y'])}!") - - N_stars = len(self) + assert 'motion_model_used' in self.colnames, \ + "infer_positions: 'motion_model_used' column not found in the table. Please run fit_motion_model() first." - if verbose: - start_time = time.time() - msg = 'Starting startable.fit_velocities for {0:d} stars with n={1:d} bootstrap' - print(msg.format(N_stars, bootstrap)) - - # Set all to default_motion_model if none assigned already. - # Reset motion_model_used to the inputs for now -> will change as fits run - if ('motion_model_input' not in self.colnames) or reassign_motion_model: - self['motion_model_input'] = default_motion_model - self['motion_model_used'] = self['motion_model_input'] - - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, self, default_motion_model) - - # - # Fill table with all possible motion model parameter names as new - # columns. Make everything empty for now. - # - all_motion_models = np.unique(self['motion_model_input'].tolist() + ['Fixed']+[default_motion_model]).tolist() - new_col_list = motion_model.get_list_motion_model_param_names(all_motion_models, with_errors=True) - # Append goodness of fit metrics and t0. - new_col_list += ['chi2_x', 'chi2_y', 'n_params'] - if 't0' not in new_col_list: - new_col_list.append('t0') + N_stars = len(self) + times = np.atleast_1d(times) + N_times = len(times) + + if (N_stars > 1) and (N_times > 1): + x_pred = np.full((N_stars, N_times), fill_value, dtype=float) + y_pred = np.full((N_stars, N_times), fill_value, dtype=float) + xe_pred = np.full((N_stars, N_times), np.inf, dtype=float) + ye_pred = np.full((N_stars, N_times), np.inf, dtype=float) + elif N_stars==1: + x_pred = np.full(N_times, fill_value, dtype=float) + y_pred = np.full(N_times, fill_value, dtype=float) + xe_pred = np.full(N_times, np.inf, dtype=float) + ye_pred = np.full(N_times, np.inf, dtype=float) + else: + x_pred = np.full(N_stars, fill_value, dtype=float) + y_pred = np.full(N_stars, fill_value, dtype=float) + xe_pred = np.full(N_stars, np.inf, dtype=float) + ye_pred = np.full(N_stars, np.inf, dtype=float) - # Define output arrays for the best-fit parameters. - for col in new_col_list: - # Clean/remove up old arrays. - if col in self.colnames: self.remove_column(col) - # Add column #TODO: is this good for filling??? - self.add_column(Column(data = np.full(N_stars, np.nan, dtype=float), name = col)) - # Add a column to keep track of the number of points used in a fit. - self['n_fit'] = 0 - - # Preserve the number of bootstraps that will be run (if any). - self.meta['n_fit_bootstrap'] = bootstrap - - # (FIXME: Do we need to catch the case where there's a single *unmasked* epoch?) - # Catch the case when there is only a single epoch. Just return 0 velocity - # and the same input position for the x0/y0. - if len(self['x'].shape) == 1: - self['motion_model_used'] = 'Fixed' - self['x0'] = self['x'] - self['y0'] = self['y'] - if 't' in self.colnames: - self['t0'] = self['t'] - else: - self['t0'] = self.meta['list_times'][0] - if 'xe' in self.colnames: - self['x0_err'] = self['xe'] - self['y0_err'] = self['ye'] - self['n_fit'] = 1 - self['n_params'] = 1 - return - - if (self['x'].shape[1] == 1): - self['motion_model_used'] = 'Fixed' - self['x0'] = self['x'][:,0] - self['y0'] = self['y'][:,0] - if 't' in self.colnames: - self['t0'] = self['t'][:, 0] - else: - self['t0'] = self.meta['list_times'][0] - if 'xe' in self.colnames: - self['x0_err'] = self['xe'][:,0] - self['y0_err'] = self['ye'][:,0] - self['n_fit'] = 1 - self['n_params'] = 1 - return - - # Only fit selected stars, if list given - fit_star_idxs = range(N_stars) - if select_stars is not None: - fit_star_idxs = select_stars - # STARS LOOP through the stars and work on them 1 at a time. - # This is slow; but robust. - if show_progress: - for ss in tqdm(fit_star_idxs): - self.fit_velocity_for_star(ss, motion_model_dict, weighting=weighting, bootstrap=bootstrap, - use_scipy=use_scipy, absolute_sigma=absolute_sigma, - fixed_t0=fixed_t0, default_motion_model=default_motion_model, - mask_val=mask_val, mask_lists=mask_lists) - else: - for ss in fit_star_idxs: - self.fit_velocity_for_star(ss, motion_model_dict, weighting=weighting, bootstrap=bootstrap, - use_scipy=use_scipy, absolute_sigma=absolute_sigma, - fixed_t0=fixed_t0, default_motion_model=default_motion_model, - mask_val=mask_val, mask_lists=mask_lists) - if verbose: - stop_time = time.time() - print('startable.fit_velocities runtime = {0:.0f} s for {1:d} stars'.format(stop_time - start_time, N_stars)) + unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) + indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} - return - - def fit_velocity_for_star(self, ss, motion_model_dict, weighting='var', use_scipy=True, absolute_sigma=True, - bootstrap=False, fixed_t0=False, mask_val=None, mask_lists=False, - default_motion_model='Linear'): - # TODO: "weighting" is not used - # - # Make a mask of invalid (NaN) values and a user-specified invalid value. - # + # Prepare fit_params, fixed_params, fit_param_errs for each star - x = np.ma.masked_invalid(self['x'][ss, :].data) - y = np.ma.masked_invalid(self['y'][ss, :].data) - if mask_val: - x = np.ma.masked_values(x, mask_val) - y = np.ma.masked_values(y, mask_val) - # If no mask, convert x.mask to list - if not np.ma.is_masked(x): - x.mask = np.zeros_like(x.data, dtype=bool) - if not np.ma.is_masked(y): - y.mask = np.zeros_like(y.data, dtype=bool) - - if mask_lists is not False: - # Remove a list - if isinstance(mask_lists, list): - if all(isinstance(item, int) for item in mask_lists): - x.mask[mask_lists] = True - y.mask[mask_lists] = True - - # Throw a warning if mask_lists is not a list - if not isinstance(mask_lists, list): - raise RuntimeError('mask_lists needs to be a list.') - # - # Assign the appropriate positional errors - # - if 'xe' in self.colnames: - # Make a mask of invalid (NaN) values and a user-specified invalid value. - xe = np.ma.masked_invalid(self['xe'][ss, :].data) - ye = np.ma.masked_invalid(self['ye'][ss, :].data) - - # Catch the case where we have positions but no errors for - # some of the entries... we need to "fill in" reasonable - # weights for these... just use the average weights over - # all the other epochs. - pos_no_err = np.where((np.isfinite(x) & np.isfinite(y)) & - (np.isfinite(xe) == False) & (np.isfinite(ye) == False))[0] - pos_with_err = np.where((np.isfinite(x) & np.isfinite(y)) & - (np.isfinite(xe) & np.isfinite(ye)))[0] - - if len(pos_with_err) > 0: - xe[pos_no_err] = xe[pos_with_err].mean() - ye[pos_no_err] = ye[pos_with_err].mean() - else: - xe[pos_no_err] = 1.0 - ye[pos_no_err] = 1.0 - else: - N_epochs = len(x) - xe = np.ones(N_epochs, dtype=float) - ye = np.ones(N_epochs, dtype=float) - xe = np.ma.masked_invalid(xe) - ye = np.ma.masked_invalid(xe) - - if mask_val: - xe = np.ma.masked_values(xe, mask_val) - ye = np.ma.masked_values(ye, mask_val) - # If no mask, convert xe.mask to list - if not np.ma.is_masked(xe): - xe.mask = np.zeros_like(xe.data, dtype=bool) - if not np.ma.is_masked(ye): - ye.mask = np.zeros_like(ye.data, dtype=bool) + for unique_motion_model, unique_index in indices_by_motion_model.items(): + # Create motion model instance + motion_model_instance = motion_model.motion_model_map()[unique_motion_model]() + # Prepare parameters for prediction + fit_params = np.array([ + self[param_name][unique_index] for param_name in motion_model_instance.fit_param_names + ]).T # shape (N_stars_this_model, N_params) + + fit_param_errs = np.array([ + self[param_name + '_err'][unique_index] for param_name in motion_model_instance.fit_param_names + ]).T # shape (N_stars_this_model, N_params) + + fixed_params = {} + for param_name in motion_model_instance.fixed_param_names: + col_name = param_name + if param_name + '_mm' in self.colnames: + col_name = param_name + '_mm' + fixed_params[param_name] = self[col_name][unique_index] - if mask_lists is not False: - # Remove a list - if isinstance(mask_lists, list): - if all(isinstance(item, int) for item in mask_lists): - xe.mask[mask_lists] = True - ye.mask[mask_lists] = True - - # Throw a warning if mask_lists is not a list - if not isinstance(mask_lists, list): - raise RuntimeError('mask_lists needs to be a list.') + # TODO: vectorize obsLocation handling in motion models + if (param_name == 'obsLocation'): + assert np.unique(fixed_params[param_name]).size == 1, \ + "infer_positions: obsLocation fixed parameter has different values for different stars. Vectorized handling not implemented yet." + fixed_params[param_name] = fixed_params[param_name][0] - # - # Make a mask of invalid (NaN) values and a user-specified invalid value. - # - if 't' in self.colnames: - t = np.ma.masked_invalid(self['t'][ss, :].data) - else: - t = np.ma.masked_invalid(self.meta['list_times']) + # Predict positions + x, y, xe, ye = motion_model_instance.model( + times, fit_params, fixed_params, fit_param_errs + ) + x_pred[unique_index] = x + y_pred[unique_index] = y + xe_pred[unique_index] = xe + ye_pred[unique_index] = ye - if mask_val: - t = np.ma.masked_values(t, mask_val) - if not np.ma.is_masked(t): - t.mask = np.zeros_like(t.data, dtype=bool) - - if mask_lists is not False: - # Remove a list - if isinstance(mask_lists, list): - if all(isinstance(item, int) for item in mask_lists): - t.mask[mask_lists] = True + return x_pred, y_pred, xe_pred, ye_pred - # Throw a warning if mask_lists is not a list - if not isinstance(mask_lists, list): - raise RuntimeError('mask_lists needs to be a list.') - # For inconsistent masks, mask the star if any of the values are masked. - new_mask = np.logical_or.reduce((t.mask, x.mask, y.mask, xe.mask, ye.mask)) - - # - # Figure out where we have detections (as indicated by error columns) - # - good = np.where((xe != 0) & (ye != 0) & - np.isfinite(xe) & np.isfinite(ye) & - np.isfinite(x) & np.isfinite(y) & ~new_mask)[0] - - N_good = len(good) - - # Catch the case where there is NO good data. - if N_good == 0: - #self['motion_model_used'][ss] = 'None' - self['n_fit'][ss] = N_good - self['n_params'][ss] = 0 - return - - # Everything below has N_good >= 1 - x = x[good] - y = y[good] - t = t[good] - xe = xe[good] - ye = ye[good] - - # - # Unless t0 is fixed, calculate the t0 for the stars. - # - if fixed_t0 is False: - t_weight = 1.0 / np.hypot(xe, ye) - t0 = np.average(t, weights=t_weight) - elif fixed_t0 is True: - t0 = self.t0 - else: - t0 = fixed_t0[ss] - self['t0'][ss] = t0 - self['n_fit'][ss] = N_good - - # - # Decide which motion_model to fit. - # - motion_model_use = self['motion_model_input'][ss] - # Go to default model if not enough points for assigned but enough for default - # TODO: think about whether we want other fallbacks besides the singular default and Fixed - if (N_good < motion_model_dict[motion_model_use].n_pts_req) and \ - (N_good >= motion_model_dict[default_motion_model].n_pts_req): - motion_model_use = default_motion_model - # If not enough points for either, go to a fixed model - elif (N_good < motion_model_dict[motion_model_use].n_pts_req) and \ - (N_good < motion_model_dict[default_motion_model].n_pts_req): - motion_model_use = 'Fixed' - # If the points do not cover multiple times, go to a fixed model - if (t == t[0]).all(): - motion_model_use = 'Fixed' - - self['motion_model_used'][ss] = motion_model_use - -# # Get the motion model object. -# modClass = motion_model_dict[motion_model_use] -# -# # Load up any prior information on parameters for this model. -# param_dict = {} -# for par in modClass.fit_param_names+modClass.fixed_param_names: -# if ~np.isnan(self[par][ss]): -# param_dict[par] = self[par][ss] - - # Model object - mod = motion_model_dict[motion_model_use] - fixed_params = [self[par][ss] for par in mod.fixed_param_names] - - # Fit for the best parameters - params, param_errs, chi2_x, chi2_y = mod.fit_motion_model(t, x, y, xe, ye, t0, bootstrap=bootstrap, - weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma) - # chi2_x,chi2_y = mod.get_chi2(params,fixed_params, t,x,y,xe,ye) - self['chi2_x'][ss]=chi2_x - self['chi2_y'][ss]=chi2_y - self['n_params'][ss] = mod.n_params - - # Save parameters and errors to table. - for pp in range(len(mod.fit_param_names)): - par = mod.fit_param_names[pp] - par_err = par + '_err' - self[par][ss] = params[pp] - self[par_err][ss] = param_errs[pp] - - return - # New function, to use in align def get_star_positions_at_time(self, t, motion_model_dict, allow_alt_models=True): """ Get current x,y positions of each star according to its motion_model @@ -1200,137 +986,6 @@ def get_star_positions_at_time(self, t, motion_model_dict, allow_alt_models=True return x, y, xe, ye - def fit_velocities_all_detected(self, motion_model_to_fit, weighting='var', use_scipy=True, absolute_sigma=True, times=None, - select_stars=None, epoch_cols='all', mask_val=None, art_star=False, return_result=False): - """Fit velocities for stars detected in all epochs specified by epoch_cols. - Criterion: xe/ye error > 0 and finite, x/y not masked. - - Parameters - ---------- - motion_model_to_fit : MotionModel - Motion model object to use for fitting all stars - weighting : str, optional - Variance weighting('var') or standard deviation weighting ('std'), by default 'var' - select_idx : array-like, optional - Indices of stars to select for fitting, by default None (fit all detected stars) - epoch_cols : str or list of intergers, optional - List of epoch column indices used for fitting velocity, by default 'all' - mask_val : float, optional - Values in x, y to be masked - art_star : bool, optional - Artificial star or observation star catalog. If artificial star, use 'det' column to select stars detected in all epochs, by default False - return_result : bool, optional - Return the velocity results or not, by default False - - Returns - ------- - vel_result : astropy Table - Astropy Table with velocity results - """ - - N_stars = len(self) - if select_stars is None: - select_stars = np.arange(N_stars) - else: - select_stars = np.asarray(select_stars) - - if epoch_cols == 'all': - epoch_cols = np.arange(np.shape(self['x'])[1]) - - # Artificial Star - if art_star: - detected_in_all_epochs = np.all(self['det'][select_stars, :][:, epoch_cols], axis=1) - - # Observation Star - else: - valid_xe = np.all(self['xe'][select_stars, :][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['xe'][select_stars, :][:, epoch_cols]), axis=1) - valid_ye = np.all(self['ye'][select_stars, :][:, epoch_cols]!=0, axis=1) & np.all(np.isfinite(self['ye'][select_stars, :][:, epoch_cols]), axis=1) - - if mask_val: - x = np.ma.masked_values(self['x'][select_stars, :][:, epoch_cols], mask_val, shrink=False) - y = np.ma.masked_values(self['y'][select_stars, :][:, epoch_cols], mask_val, shrink=False) - valid_x = ~np.any(x.mask, axis=1) - valid_y = ~np.any(y.mask, axis=1) - detected_in_all_epochs = np.logical_and.reduce(( - valid_x, valid_y, valid_xe, valid_ye)) - else: - detected_in_all_epochs = np.logical_and(valid_xe, valid_ye) - - N = len(self['x'][select_stars, :]) - fit_params = motion_model_to_fit.fit_param_names - param_data = {p: np.zeros(N) for p in fit_params} - param_data.update({p+'_err': np.zeros(N) for p in fit_params}) - param_data.update({p: np.zeros(N) for p in motion_model_to_fit.fixed_param_names}) - param_data['chi2_x'] = np.zeros(N) - param_data['chi2_y'] = np.zeros(N) - - if times is None: - if 'YEARS' in self.meta: - times = np.array(self.meta['YEARS'])[epoch_cols] - elif 't' in self.colnames: - times = self['t'][0, epoch_cols] - else: - raise ValueError("No valid time column found.") - - if not art_star: - x_arr = self['x'][select_stars, :][:, epoch_cols] - y_arr = self['y'][select_stars, :][:, epoch_cols] - else: - x_arr = self['x'][select_stars, :][:, epoch_cols, 1] - y_arr = self['y'][select_stars, :][:, epoch_cols, 1] - - xe_arr = self['xe'][select_stars, :][:, epoch_cols] - ye_arr = self['ye'][select_stars, :][:, epoch_cols] - - # Only fit for >1 epochs, otherwise all velocities will be 0 - if len(epoch_cols) > 1: - # For each star - for i in tqdm(range(N)): - x = x_arr[i] - y = y_arr[i] - xe = xe_arr[i] - ye = ye_arr[i] - t0 = np.average(times, weights=1. / np.hypot(xe, ye)) - - # Run fit and record results - params, param_errs = motion_model_to_fit.fit_motion_model( - times, x, y, xe, ye, t0, weighting=weighting, - use_scipy=use_scipy, absolute_sigma=absolute_sigma - ) - if 't0' in motion_model_to_fit.fixed_param_names: - param_data['t0'][i] = t0 - for j, param in enumerate(fit_params): - param_data[param][i] = params[j] - param_data[f'{param}_err'][i] = param_errs[j] - chi2x, chi2y = motion_model_to_fit.get_chi2(params, [t0], times, x, y, xe, ye) - param_data['chi2_x'][i] = chi2x - param_data['chi2_y'][i] = chi2y - - vel_result = Table.from_pandas(pd.DataFrame(param_data)) - - # Add n_vfit - n_fit = len(epoch_cols) - vel_result['n_fit'] = n_fit - - # Clean/remove up old arrays. - columns = [*vel_result.keys(), 'n_fit'] - for column in columns: - if column in self.colnames: self.remove_column(column) - - # Update self - for column in columns: - column_array = MaskedColumn(np.ma.zeros(N_stars), dtype=float, name=column) - column_array[select_stars] = vel_result[column] - column_array[select_stars][~detected_in_all_epochs] = np.nan - column_array.mask[select_stars] = ~detected_in_all_epochs - # Mask unselected indices - column_array.mask[~np.isin(np.arange(N_stars), select_stars)] = True - self[column] = column_array - - if return_result: - return vel_result - else: - return def shift_reference_frame(self, delta_vx=0.0, delta_vy=0.0, delta_pi=0.0, motion_model_dict={}): diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 804d4e7..f9cd97c 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -82,7 +82,6 @@ def test_StarTable_init2(): assert len(tab) == len(list1) - return def test_combine_lists(): @@ -175,39 +174,37 @@ def test_add_starlist(): t.add_starlist(x=x_new, y=y_new, m=m_new, xe=xe_new, ye=ye_new, me=me_new, meta={'list_times': t_new}) - assert len(t) == len(t_orig) + np.testing.assert_equal(len(t), len(t_orig)) expected_shape = np.array(t_orig['x'].shape) expected_shape[1] += 1 - - assert len(t['x'].shape) == len(expected_shape) - assert t['x'].shape[0] == expected_shape[0] + + np.testing.assert_equal(len(t['x'].shape), len(expected_shape)) + np.testing.assert_equal(t['x'].shape[0], expected_shape[0]) assert t['x'].shape[1] == expected_shape[1] - assert len(t['y'].shape) == len(expected_shape) - assert t['y'].shape[0] == expected_shape[0] + np.testing.assert_equal(len(t['y'].shape), len(expected_shape)) + np.testing.assert_equal(t['y'].shape[0], expected_shape[0]) assert t['y'].shape[1] == expected_shape[1] - assert len(t['m'].shape) == len(expected_shape) - assert t['m'].shape[0] == expected_shape[0] + np.testing.assert_equal(len(t['m'].shape), len(expected_shape)) + np.testing.assert_equal(t['m'].shape[0], expected_shape[0]) assert t['m'].shape[1] == expected_shape[1] - assert len(t['xe'].shape) == len(expected_shape) - assert t['xe'].shape[0] == expected_shape[0] - assert t['xe'].shape[1] == expected_shape[1] - - assert len(t['ye'].shape) == len(expected_shape) - assert t['ye'].shape[0] == expected_shape[0] - assert t['ye'].shape[1] == expected_shape[1] + np.testing.assert_equal(len(t['xe'].shape), len(expected_shape)) + np.testing.assert_equal(t['xe'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['xe'].shape[1], expected_shape[1]) - assert len(t['me'].shape) == len(expected_shape) - assert t['me'].shape[0] == expected_shape[0] - assert t['me'].shape[1] == expected_shape[1] - - assert len(t['name']) == len(t_orig['name']) - assert len(t.meta['list_times']) == expected_shape[1] - assert t.meta['n_lists'] == 9 + np.testing.assert_equal(len(t['ye'].shape), len(expected_shape)) + np.testing.assert_equal(t['ye'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['ye'].shape[1], expected_shape[1]) + np.testing.assert_equal(len(t['me'].shape), len(expected_shape)) + np.testing.assert_equal(t['me'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['me'].shape[1], expected_shape[1]) + np.testing.assert_equal(len(t['name']), len(t_orig['name'])) + np.testing.assert_equal(len(t.meta['list_times']), expected_shape[1]) + np.testing.assert_equal(t.meta['n_lists'], 9) # Test 2: Add as starlist rather than with keywords. starlist = StarList( name=t_orig['name'], @@ -219,38 +216,37 @@ def test_add_starlist(): t = make_star_table() t.add_starlist(starlist=starlist) - assert len(t) == len(t_orig) + np.testing.assert_equal(len(t), len(t_orig)) expected_shape = np.array(t_orig['x'].shape) expected_shape[1] += 1 - - assert len(t['x'].shape) == len(expected_shape) - assert t['x'].shape[0] == expected_shape[0] - assert t['x'].shape[1] == expected_shape[1] - assert len(t['y'].shape) == len(expected_shape) - assert t['y'].shape[0] == expected_shape[0] - assert t['y'].shape[1] == expected_shape[1] + np.testing.assert_equal(len(t['x'].shape), len(expected_shape)) + np.testing.assert_equal(t['x'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['x'].shape[1], expected_shape[1]) - assert len(t['m'].shape) == len(expected_shape) - assert t['m'].shape[0] == expected_shape[0] - assert t['m'].shape[1] == expected_shape[1] + np.testing.assert_equal(len(t['y'].shape), len(expected_shape)) + np.testing.assert_equal(t['y'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['y'].shape[1], expected_shape[1]) - assert len(t['xe'].shape) == len(expected_shape) - assert t['xe'].shape[0] == expected_shape[0] - assert t['xe'].shape[1] == expected_shape[1] + np.testing.assert_equal(len(t['m'].shape), len(expected_shape)) + np.testing.assert_equal(t['m'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['m'].shape[1], expected_shape[1]) - assert len(t['ye'].shape) == len(expected_shape) - assert t['ye'].shape[0] == expected_shape[0] - assert t['ye'].shape[1] == expected_shape[1] + np.testing.assert_equal(len(t['xe'].shape), len(expected_shape)) + np.testing.assert_equal(t['xe'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['xe'].shape[1], expected_shape[1]) + np.testing.assert_equal(len(t['ye'].shape), len(expected_shape)) + np.testing.assert_equal(t['ye'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['ye'].shape[1], expected_shape[1]) - assert len(t['me'].shape) == len(expected_shape) - assert t['me'].shape[0] == expected_shape[0] - assert t['me'].shape[1] == expected_shape[1] + np.testing.assert_equal(len(t['me'].shape), len(expected_shape)) + np.testing.assert_equal(t['me'].shape[0], expected_shape[0]) + np.testing.assert_equal(t['me'].shape[1], expected_shape[1]) - assert len(t['name']) == len(t_orig['name']) - assert len(t.meta['list_times']) == expected_shape[1] - assert t.meta['n_lists'] == 9 + np.testing.assert_equal(len(t['name']), len(t_orig['name'])) + np.testing.assert_equal(len(t.meta['list_times']), expected_shape[1]) + np.testing.assert_equal(t.meta['n_lists'], 9) return @@ -298,11 +294,11 @@ def test_combine_1col(): t.combine_lists('x', weights_col='xe') - assert t['x0'][0] == t['x'][0] + np.testing.assert_equal(t['x0'][0], t['x'][0]) return -def test_fit_velocities(): +def test_fit_motion_models(): tab = make_star_table() tt = make_tiny_star_table() @@ -317,26 +313,25 @@ def test_fit_velocities(): tab.fit_motion_model(verbose=True, mask_value=-100000.) # Test creation of new variables - assert len(tab['vx']) == len(tab) - assert len(tab['vy']) == len(tab) - assert len(tab['vx_err']) == len(tab) - assert len(tab['vy_err']) == len(tab) - assert len(tab['n_fit']) == len(tab) - assert tab.meta['n_bootstrap'] == 0 + np.testing.assert_equal(len(tab['vx']), len(tab)) + np.testing.assert_equal(len(tab['vy']), len(tab)) + np.testing.assert_equal(len(tab['vx_err']), len(tab)) + np.testing.assert_equal(len(tab['vy_err']), len(tab)) + np.testing.assert_equal(len(tab['n_fit']), len(tab)) + np.testing.assert_equal(tab.meta['n_bootstrap'], 0) # Test no-fit for stars with N<2 epochs. n_epochs = (tab['x'] >= 0).sum(axis=1) idx = np.where(n_epochs < 2)[0] - assert (tab['vx'][idx] == 0).all() - assert (tab['vx_err'][idx] == 0).all() - assert (tab['n_fit'][idx] == 2).all() + np.testing.assert_equal((tab['vx'][idx] == 0).all(), True) + np.testing.assert_equal((tab['vx_err'][idx] == 0).all(), True) + np.testing.assert_equal((tab['n_fit'][idx] == 2).all(), True) # Test that the velocity errors were calculated. - assert (~(tab['vx_err'][0:100] < 0)).all() - assert (~(tab['x0_err'][0:100] < 0)).all() - assert (~(tab['vy_err'][0:100] < 0)).all() - assert (~(tab['y0_err'][0:100] < 0)).all() - + np.testing.assert_equal((~(tab['vx_err'][0:100] < 0)).all(), True) + np.testing.assert_equal((~(tab['x0_err'][0:100] < 0)).all(), True) + np.testing.assert_equal((~(tab['vy_err'][0:100] < 0)).all(), True) + np.testing.assert_equal((~(tab['y0_err'][0:100] < 0)).all(), True) ########## # Test running a second time. We should get the same results. @@ -366,11 +361,11 @@ def test_fit_velocities(): tab_b.meta = tab1.meta tab_b.fit_motion_model(verbose=True, bootstrap=50) - assert tab_b.meta['n_bootstrap'] == 50 - assert tab_b['x0_err'][0] > tab['x0_err'][0] - assert tab_b['vx_err'][0] > tab['vx_err'][0] - assert tab_b['y0_err'][0] > tab['y0_err'][0] - assert tab_b['vy_err'][0] > tab['vy_err'][0] + np.testing.assert_equal(tab_b.meta['n_bootstrap'], 50) + np.testing.assert_array_less(tab['x0_err'][0], tab_b['x0_err'][0]) + np.testing.assert_array_less(tab['vx_err'][0], tab_b['vx_err'][0]) + np.testing.assert_array_less(tab['y0_err'][0], tab_b['y0_err'][0]) + np.testing.assert_array_less(tab['vy_err'][0], tab_b['vy_err'][0]) ########## # Test what happens with no velocity errors @@ -378,15 +373,15 @@ def test_fit_velocities(): tab.remove_columns(['xe', 'ye', 'x0', 'y0', 'x0_err', 'y0_err', 'vx', 'vy', 'vx_err', 'vy_err', 'n_fit']) tab.fit_motion_model(verbose=False) - assert len(tab['vx']) == len(tab) - assert len(tab['vy']) == len(tab) - assert len(tab['vx_err']) == len(tab) - assert len(tab['vy_err']) == len(tab) - assert len(tab['n_fit']) == len(tab) - assert (~(tab['vx_err'][0:100] < 0)).all() - assert (~(tab['x0_err'][0:100] < 0)).all() - assert (~(tab['vy_err'][0:100] < 0)).all() - assert (~(tab['y0_err'][0:100] < 0)).all() + np.testing.assert_equal(len(tab['vx']), len(tab)) + np.testing.assert_equal(len(tab['vy']), len(tab)) + np.testing.assert_equal(len(tab['vx_err']), len(tab)) + np.testing.assert_equal(len(tab['vy_err']), len(tab)) + np.testing.assert_equal(len(tab['n_fit']), len(tab)) + np.testing.assert_equal((~(tab['vx_err'][0:100] < 0)).all(), True) + np.testing.assert_equal((~(tab['x0_err'][0:100] < 0)).all(), True) + np.testing.assert_equal((~(tab['vy_err'][0:100] < 0)).all(), True) + np.testing.assert_equal((~(tab['y0_err'][0:100] < 0)).all(), True) ######### # Test mask_list @@ -408,7 +403,6 @@ def test_fit_velocities(): def test_fit_velocities_2epoch(): - ########## # Test: only 2 epoch2 ########## @@ -424,30 +418,21 @@ def test_fit_velocities_2epoch(): tab_2.fit_motion_model(verbose=False, mask_value=-100000.) - assert 'n_fit' in tab_2.colnames - assert 't0' in tab_2.colnames - assert 'x0' in tab_2.colnames - assert 'y0' in tab_2.colnames - assert 'vx' in tab_2.colnames - assert 'vy' in tab_2.colnames - assert 'x0_err' in tab_2.colnames - assert 'y0_err' in tab_2.colnames - assert 'vx_err' in tab_2.colnames - assert 'vy_err' in tab_2.colnames + assert all([_ in tab_2.colnames for _ in ['n_fit', 't0', 'x0', 'y0', 'vx', 'vy', 'x0_err', 'y0_err', 'vx_err', 'vy_err']]) # 2 detections print(tab1.meta) np.testing.assert_almost_equal(tab_2['x0'][0], tab_2['x'][0,0], 1) - assert tab_2['n_fit'][0] == 2 + np.testing.assert_equal(tab_2['n_fit'][0], 2) # 1 detection - assert tab_2['x0'][100] == tab_2['x'][100, 0] - assert tab_2['n_fit'][100] == 1 - + np.testing.assert_equal(tab_2['x0'][100], tab_2['x'][100, 0]) + np.testing.assert_equal(tab_2['n_fit'][100], 1) + # 0 detections - assert np.isnan(tab_2['x0'][-1]) - assert tab_2['n_fit'][-1] == 0 - + np.testing.assert_equal(np.isnan(tab_2['x0'][-1]), True) + np.testing.assert_equal(tab_2['n_fit'][-1], 0) + return From 48321cbc93e1c38afd18be389b01344f51c6b638 Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Tue, 16 Dec 2025 20:19:14 +0800 Subject: [PATCH 22/94] Resolve undefined variables and cleaned imports --- flystar/align.py | 45 +++++++++++++++------------------ flystar/analysis.py | 6 +---- flystar/examples.py | 10 ++------ flystar/match.py | 8 ++---- flystar/motion_model.py | 7 +++-- flystar/tests/test_startable.py | 1 - flystar/transforms.py | 19 +++++++------- 7 files changed, 41 insertions(+), 55 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index ca9bc93..53db62f 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1,10 +1,7 @@ import numpy as np -from . import match -from . import transforms -from . import plots +from . import match, transforms, plots, motion_model from .starlists import StarList from .startables import StarTable -from . import motion_model from astropy.table import Table, Column, vstack import datetime import copy @@ -411,7 +408,6 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar print(" **********") star_list = self.star_lists[ii] - pdb.set_trance() ref_list = self.get_ref_list_from_table(star_list['t'][0]) trans = self.trans_list[ii] @@ -880,9 +876,9 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): for mm in motion_model_col_names: if mm in self.ref_table.keys(): vals_orig[mm] = self.ref_table[mm][keep_orig] - fit_star_idxs = [idx for idx in range(len(self.ref_table)) if idx not in keep_orig] - else: - fit_star_idxs = None + # fit_star_idxs = [idx for idx in range(len(self.ref_table)) if idx not in keep_orig] + # else: + # fit_star_idxs = None # Figure out whether motion fits are necessary if ('motion_model_input' in self.ref_table.keys()) and np.all(self.ref_table['motion_model_input']=='Fixed'): @@ -2331,10 +2327,10 @@ def find_transform_new(table1_mat, table2_mat, if transInit != None: table1T_mat = table1_mat.copy() - table1T_mat = transform_by_object(table1T_mat, transInit) + table1T_mat = transform_from_object(table1T_mat, transInit) - x1e = table1T_mag['xe'] - y1e = table1T_mag['ye'] + x1e = table1T_mat['xe'] + y1e = table1T_mat['ye'] # Calculate weights as to user specification if weights == 'both': @@ -2419,8 +2415,7 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric Xcoeff = transform.px.parameters Ycoeff = transform.py.parameters else: - print(( '{0} not yet supported!'.format(transType))) - return + raise Exception(f'{trans_name} not yet supported!') # Write output _out = open(outFile, 'w') @@ -2437,7 +2432,7 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric _out.write('## N_trans: {0}\n'.format(N_trans)) _out.write('## Delta Mag: {0}\n'.format(deltaMag)) _out.write('{0:16s} {1:16s}\n'.format('# Xcoeff', 'Ycoeff')) - + # Write the coefficients such that the orders are together as defined in # documentation. This is a pain because PolyTransform output is weird. # (see astropy Polynomial2D documentation) @@ -2648,7 +2643,7 @@ def position_transform_from_object(x, y, xe, ye, transform): order = transform.order else: txt = 'Transform not yet supported by position_transform_from_object' - raise StandardError(txt) + raise Exception(txt) # How the transformation is applied depends on the type of transform. # This can be determined by the length of Xcoeff, Ycoeff @@ -2747,7 +2742,7 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform order = transform.order else: txt = 'Transform not yet supported by velocity_transform_from_object' - raise StandardError(txt) + raise Exception(txt) # How the transformation is applied depends on the type of transform. # This can be determined by the length of Xcoeff, Ycoeff @@ -2939,13 +2934,15 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', else: mref = ref_list['m0'] - N, x1m, y1m, m1m, x2m, y2m, m2m = match.miracle_match_briteN(star_list['x'], - star_list['y'], - star_list['m'], - xref, - yref, - mref, - briteN) + N, x1m, y1m, m1m, x2m, y2m, m2m = match.miracle_match_briteN( + star_list['x'], + star_list['y'], + star_list['m'], + xref, + yref, + mref, + briteN + ) err_msg = 'Failed to find more than '+str(n_req_match) err_msg += ' (only ' + str(len(x1m)) + ') matches, giving up.' @@ -3066,7 +3063,7 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, verbose=True): """ # Optionally propogate the reference positions forward in time. xref, yref = get_pos_in_time(star_list['t'][0], ref_list) - + # Residuals x_resid_on_old_trans = star_list['x'] - xref y_resid_on_old_trans = star_list['y'] - yref diff --git a/flystar/analysis.py b/flystar/analysis.py index 81ab3f4..ab16f77 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -1,10 +1,6 @@ import numpy as np import pylab as plt -from flystar import starlists -from flystar import startables -from flystar import align -from flystar import match -from flystar import transforms +from . import starlists, match from astropy import table from astropy.table import Table, Column from astropy.coordinates import SkyCoord diff --git a/flystar/examples.py b/flystar/examples.py index 8059562..65723ec 100644 --- a/flystar/examples.py +++ b/flystar/examples.py @@ -1,11 +1,5 @@ -from flystar import transforms -from flystar import match -from flystar import align -from flystar import starlists -from flystar import plots import numpy as np -import copy -import pdb +from . import transforms, match, align, starlists, plots def align_example(labelFile, reference, transModel=transforms.four_paramNW, order=1, N_loop=2, @@ -83,7 +77,7 @@ def align_example(labelFile, reference, transModel=transforms.four_paramNW, orde trans, N_trans = align.find_transform(label[idx_label], label_trans[idx_label], - starlist_mat[idx_starlist], + starlist[idx_starlist], transModel=transModel, order=order, weights=weights) diff --git a/flystar/match.py b/flystar/match.py index d7c391e..9bda523 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -1,14 +1,10 @@ import numpy as np -from flystar import starlists, transforms, startables, align +from . import starlists, transforms, startables, align from collections import Counter from scipy.spatial import cKDTree as KDT -from astropy.table import Column, Table +from astropy.table import Column import itertools import copy -import scipy.signal -from scipy.spatial import distance -import math -import pdb def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 42a5e54..e85d7a7 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -1098,7 +1098,7 @@ def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_ Parameters ---------- - motion_model_list : list + motion_model_list : list of MotionModels or str List of MotionModels with_errors : bool, optional Add uncertainty names with '_err' suffix or not, by default True @@ -1116,7 +1116,10 @@ def list_add(name): if name not in list_of_parameters: list_of_parameters.append(name) + mm_map = motion_model_map() for mm in motion_model_list: + if isinstance(mm, str): + mm = mm_map[mm] for param in mm.fit_param_names: # Fitter params list_add(param) @@ -1130,7 +1133,7 @@ def list_add(name): return list(list_of_parameters) -def get_all_motion_model_names(with_errors=True, with_fixed=True): +def get_all_motion_model_param_names(with_errors=True, with_fixed=True): return get_list_motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) def motion_model_map(): diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 804d4e7..b0ee1b9 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -3,7 +3,6 @@ from flystar import motion_model from flystar.startables import StarTable from flystar.starlists import StarList -from flystar import motion_model import numpy as np import pytest import os diff --git a/flystar/transforms.py b/flystar/transforms.py index 6cc865a..8cb9525 100755 --- a/flystar/transforms.py +++ b/flystar/transforms.py @@ -5,8 +5,9 @@ from astropy.table import Table import collections import re -import pdb -from flystar import motion_model +import copy +import datetime +from . import motion_model class Transform2D(object): ''' @@ -220,7 +221,7 @@ def evaluate(self, x, y): yn = self.py[0] + self.py[1]*x + self.py[2]*y return xn, yn - def evaluate_error(self, x, y): + def evaluate_error(self, x, y, xe, ye): """ Transform positional uncertainties. @@ -245,7 +246,7 @@ def evaluate_error(self, x, y): """ xe_new = np.hypot(self.px[1] * xe, self.px[2] * ye) - xe_new = np.hpyot(self.px[1] * xe, self.px[2] * ye) + ye_new = np.hpyot(self.px[1] * xe, self.px[2] * ye) return xe_new, ye_new @@ -666,7 +667,7 @@ def from_file(cls, trans_file): return trans_obj - def to_file(self, trans_file): + def to_file(self, transform, outFile): """ Given a transformation object, write out the coefficients in a text file (readable by java align). Outfile name is specified by user. @@ -677,9 +678,9 @@ def to_file(self, trans_file): Parameters: ---------- - trans_file : str - The name of the output file to save the coefficients and meta data to. - This file can be read back in with + transform : PolyTransform + The transformation object containing the coefficients and meta data to save. + This object can be recreated with trans_obj = PolyTransfrom.from_file(trans_file). @@ -695,7 +696,7 @@ def to_file(self, trans_file): # Write output _out = open(outFile, 'w') - + # Write the header. DO NOT CHANGE, HARDCODED IN JAVA ALIGN _out.write('## Date: {0}\n'.format(datetime.date.today()) ) _out.write('## File: {0}, Reference: {1}\n'.format(starlist, reference) ) From f0e8884deb5ccbc68a897648f6f204ce1a57c453 Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Tue, 16 Dec 2025 20:57:17 +0800 Subject: [PATCH 23/94] Fix bootstrap sampling strategy and 100% passed startable test --- flystar/motion_model.py | 10 ++++++++-- flystar/tests/test_startable.py | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 60c213b..11f6b16 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -136,8 +136,14 @@ def fit( edx = np.arange(n_obs, dtype=int) # Precompute All Bootstrap Draws at Once # Ensure there are enough unique points in each bootstrap sample - bdx_unique = rng.choice(edx, size=(bootstrap, self.n_params), replace=False) - bdx_extra = rng.choice(edx, size=(bootstrap, m - self.n_params), replace=True) + bdx_unique = np.stack([ + rng.choice(edx, size=self.n_params, replace=False) + for _ in range(bootstrap) + ]) + bdx_extra = np.stack([ + rng.choice(edx, size=self.n_params, replace=True) + for _ in range(bootstrap) + ]) bdx_all = np.hstack((bdx_unique, bdx_extra)) bb_params = [] diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 70ec18a..5580daf 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -340,7 +340,7 @@ def test_fit_motion_models(): vxe_orig = tab['vx_err'] x0e_orig = tab['x0_err'] tab.fit_motion_model(verbose=False, mask_value=-100000.) - + np.testing.assert_allclose(tab['vx'], vx_orig) np.testing.assert_allclose(tab['x0'], x0_orig) np.testing.assert_allclose(tab['vx_err'], vxe_orig) @@ -423,7 +423,7 @@ def test_fit_velocities_2epoch(): print(tab1.meta) np.testing.assert_almost_equal(tab_2['x0'][0], tab_2['x'][0,0], 1) np.testing.assert_equal(tab_2['n_fit'][0], 2) - + # 1 detection np.testing.assert_equal(tab_2['x0'][100], tab_2['x'][100, 0]) np.testing.assert_equal(tab_2['n_fit'][100], 1) From a1ff8f345ac5c661ca6aa9f4b6e3beb0e53e7a82 Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Sat, 20 Dec 2025 15:24:37 +0800 Subject: [PATCH 24/94] Midway save of align --- flystar/align.py | 179 ++++++++++++++++++++++++------------ flystar/match.py | 2 +- flystar/motion_model.py | 59 ++---------- flystar/startables.py | 8 +- flystar/tests/test_align.py | 104 ++++++++++----------- flystar/transforms.py | 2 +- 6 files changed, 185 insertions(+), 169 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 53db62f..3a3160d 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -23,7 +23,7 @@ def __init__(self, list_of_starlists, ref_index=0, iters=2, calc_trans_inverse=False, init_guess_mode='miracle', iter_callback=None, motion_models=['Empty', 'Fixed'], - fixed_params_dict = None, + fixed_params_dict=None, use_scipy=True, absolute_sigma=False, save_path=None, @@ -301,7 +301,7 @@ def fit(self): # x_orig, y_orig, m_orig, (opt. errors) -- the transformed errors for the lists: 2D # w, w_orig (optiona) -- the input and output weights of stars in transform: 2D ########## - self.ref_table = self.setup_ref_table_from_starlist(self.star_lists[self.ref_index],motion_model_used='Fixed') + self.ref_table = self.setup_ref_table_from_starlist(self.star_lists[self.ref_index]) # Save the reference index to the meta data on the reference list. self.ref_table.meta['ref_list'] = self.ref_index @@ -423,11 +423,10 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar if trans is None: # Only use "use_in_trans" reference stars, even for initial guessing. keepers = np.where(ref_list['use_in_trans'] == True)[0] - trans = trans_initial_guess( - ref_list[keepers], - star_list_orig_trim, - self.trans_args[0], + ref_list[keepers], + star_list_orig_trim, + self.trans_args[0], mode=self.init_guess_mode, order=self.init_order, verbose=self.verbose, @@ -603,12 +602,12 @@ def setup_trans_info(self): # Add inverse trans list, if desired if self.calc_trans_inverse: - trans_list_inverse = [None for ii in range(N_lists)] + trans_list_inverse = [None] * N_lists self.trans_list_inverse = trans_list_inverse return - def setup_ref_table_from_starlist(self, star_list, motion_model_used=None): + def setup_ref_table_from_starlist(self, star_list): """ Start with the reference list.... this will change and grow over time, so make a copy that we will keep updating. @@ -616,7 +615,7 @@ def setup_ref_table_from_starlist(self, star_list, motion_model_used=None): array in the original reference star list. """ col_arrays = {} - motion_model_col_names = motion_model.get_all_motion_model_param_names(with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] + motion_model_col_names = motion_model.motion_model_param_names(self.motion_models, with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] for col_name in star_list.colnames: if col_name == 'name': # The "name" column will be 1D; but we will also add a "name_in_list" column. @@ -829,7 +828,12 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li self.ref_table['used_in_trans'][idx_ref_in_trans, ii] = True ### Add the unmatched stars and grow the size of the reference table. - self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars(self.ref_table, star_list, idx_lis) + self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars( + self.ref_table, + star_list, + idx_lis, + motion_model=self.motion_models[-1].name + ) if len(idx_ref_new) > 0: if self.verbose > 0: print(' Adding {0:d} new stars to the reference table.'.format(len(idx_ref_new))) @@ -862,7 +866,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): """ # Keep track of the original reference values. # In certain cases, we will NOT update these. - if keep_orig is not None: + if (keep_orig is not None) and (len(keep_orig) > 0): vals_orig = {} vals_orig['m0'] = self.ref_table['m0'][keep_orig] vals_orig['m0_err'] = self.ref_table['m0_err'][keep_orig] @@ -872,22 +876,41 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): if 'motion_model_used' in self.ref_table.keys(): motion_model_class_names += self.ref_table['motion_model_used'][keep_orig].tolist() vals_orig['motion_model_used'] = self.ref_table['motion_model_used'][keep_orig] - motion_model_col_names = motion_model.get_list_motion_model_param_names(motion_model_class_names, with_errors=True, with_fixed=True) + motion_model_col_names = motion_model.motion_model_param_names(motion_model_class_names, with_errors=True, with_fixed=True) for mm in motion_model_col_names: if mm in self.ref_table.keys(): vals_orig[mm] = self.ref_table[mm][keep_orig] - # fit_star_idxs = [idx for idx in range(len(self.ref_table)) if idx not in keep_orig] - # else: - # fit_star_idxs = None + fit_star_idxs = np.array([idx for idx in range(len(self.ref_table)) if idx not in keep_orig], dtype=int) + else: + fit_star_idxs = None # Figure out whether motion fits are necessary if ('motion_model_input' in self.ref_table.keys()) and np.all(self.ref_table['motion_model_input']=='Fixed'): weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) weighted_m = ('me' in self.ref_table.colnames) self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) + elif fit_star_idxs is None: + self.ref_table.fit_motion_model( + motion_models=self.motion_models, + fixed_params_dict=self.fixed_params_dict, + weighting=self.vel_weighting, + use_scipy=self.use_scipy, + absolute_sigma=self.absolute_sigma, + bootstrap=n_boot, + verbose=self.verbose + ) + # Combine (transformed) magnitudes + if 'me' in self.ref_table.colnames: + weights_col = None + else: + weights_col = 'me' + self.ref_table.combine_lists('m', weights_col=weights_col, ismag=True) + else: # Combine positions with a velocity fit. - self.ref_table.fit_motion_model( + update_ref_table = self.ref_table[fit_star_idxs] + keep_ref_table = self.ref_table[keep_orig] + update_ref_table.fit_motion_model( motion_models=self.motion_models, fixed_params_dict=self.fixed_params_dict, weighting=self.vel_weighting, @@ -897,14 +920,33 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): verbose=self.verbose ) + # Determine motion models for keep_ref_table + pdb.set_trace() + if 'motion_model_used' not in keep_ref_table.colnames: + all_mm_map = motion_model.motion_model_map() + mm_n_params = np.sort([mm.n_params for mm in self.motion_models]) + required_params = np.array([all_mm_map[mm_name].n_params for mm_name in keep_ref_table['motion_model_input']]) + mm_digitized = np.digitize( + x=np.minimum(np.array(keep_ref_table['n_detect']), required_params), + bins=mm_n_params + ) - 1 + keep_ref_table['motion_model_used'] = np.array([self.motion_models[d].name for d in mm_digitized]) + + # Merge back into the full ref_table + new_ref_table = vstack([keep_ref_table, update_ref_table]) + self.ref_table = new_ref_table.copy() + self.ref_table[keep_orig] = new_ref_table[0:len(keep_orig)] + self.ref_table[fit_star_idxs] = new_ref_table[len(keep_orig):] + # Combine (transformed) magnitudes if 'me' in self.ref_table.colnames: weights_col = None else: weights_col = 'me' self.ref_table.combine_lists('m', weights_col=weights_col, ismag=True) + # Replace the originals if we are supposed to keep them fixed. - if keep_orig is not None: + if (keep_orig is not None) and (len(keep_orig) > 0): for val in vals_orig.keys(): self.ref_table[val][keep_orig] = vals_orig[val] @@ -977,14 +1019,14 @@ def match_lists(self, dr_tol, dm_tol): star_list_T.transform_xym(self.trans_list[ii]) else: star_list_T.transform_xy(self.trans_list[ii]) - + xref, yref = infer_positions(star_list_T['t'][0], self.ref_table) mref = self.ref_table['m0'] idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], xref, yref, mref, dr_tol=dr_tol, dm_tol=dm_tol, verbose=self.verbose) - + if self.verbose > 0: fmt = 'Matched {0:5d} out of {1:5d} stars in list {2:2d} [dr = {3:7.4f} +/- {4:6.4f}, dm = {5:5.2f} +/- {6:4.2f}' print(fmt.format(len(idx_lis), len(star_list_T), ii, dr.mean(), dr.std(), dm.mean(), dm.std())) @@ -1012,7 +1054,6 @@ def get_ref_list_from_table(self, epoch): name = self.ref_table['name'] if ('motion_model_used' in self.ref_table.colnames): - print(f'{epoch=}, {epoch.shape=}') x, y, xe, ye = self.ref_table.infer_positions(epoch) else: # No velocities... just used average positions. @@ -1158,17 +1199,19 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot y2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) m_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) m2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) - + # Set up motion model parameters if 'motion_model_used' in ref_table.keys(): motion_model_list = np.unique(ref_table['motion_model_used']).tolist() elif 'motion_model_input' in ref_table.keys(): motion_model_list = np.unique(ref_table['motion_model_input']).tolist() - all_mm_map = motion_model.motion_model_map() - motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] + if 'Empty' not in motion_model_list: + motion_model_list.append('Empty') + if 'Fixed' not in motion_model_list: + motion_model_list.append('Fixed') - motion_col_list = motion_model.get_list_motion_model_param_names(motion_model_list, with_errors=False, with_fixed=False) + motion_col_list = motion_model.motion_model_param_names(motion_model_list, with_errors=False, with_fixed=False) if calc_vel_in_bootstrap: motion_boot_sum = {} motion2_boot_sum = {} @@ -1177,7 +1220,8 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot motion2_boot_sum[col] = np.zeros((len(ref_table['x']))) all_mm_map = motion_model.motion_model_map() - motion_boot_min_epochs = np.max([all_mm_map[mm].n_params for mm in motion_model_list]) + motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] + motion_boot_min_epochs = np.max([mm.n_params for mm in motion_model_list]) ### IF MEMORY PROBLEMS HERE: ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY @@ -1257,7 +1301,6 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot m=starlist_boot['m'], mref=ref_boot['m'], weights=weight, mag_trans=self.mag_trans) #print(jj) - #pdb.set_trace() # Apply transformation to *all* orig positions in this epoch. Need to make a new # FLYSTAR starlist object with the original positions for this. We don't @@ -1337,7 +1380,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # Quick check to make sure bootstrap calc was valid: output t0 should be # same as input t0_arr, since we used fixed_t0 option - assert np.sum(abs(star_table['t0'] - t0_arr) == 0) + np.testing.assert_array_equal(star_table['t0'], t0_arr) #t3 = time.time() #print('=================================================') @@ -1376,7 +1419,19 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot col[idx_good] = data_dict[ff] self.ref_table.add_column(col) - # Calculate chi^2 with bootstrap positional errors + # # Calculate chi^2 with bootstrap positional errors + # # Determine which motion model to use: + # motion_model_list = sorted(motion_model_list, key=lambda mm: mm.n_params) + # mm_n_params = np.sort([mm.n_params for mm in motion_model_list]) + + # required_params = [all_mm_map[mm_name].n_params for mm_name in self.ref_table['motion_model_input']] + # mm_digitized = np.digitize( + # x=np.minimum(np.array(self.ref_table['n_detect']), required_params), + # bins=mm_n_params + # ) - 1 + # self.ref_table['motion_model_used'] = np.array([motion_model_list[d].name for d in mm_digitized], dtype='U20') + + x_pred, y_pred, _, _ = self.ref_table.infer_positions(t_arr) xe_comb = np.hypot(self.ref_table['xe'], self.ref_table['xe_boot']) ye_comb = np.hypot(self.ref_table['ye'], self.ref_table['ye_boot']) @@ -1551,9 +1606,6 @@ def = None. If not None, then this should contain an array or list of transform iter_callback : None or function A function to call (that accepts a StarTable object and an iteration number) at the end of every iteration. This can be used for plotting or printing state. - - default_motion_model : string - Name of motion model to use for new or unassigned stars motion_models : list of str or MotionModel objects List of motion model names (strings) or MotionModel objects to use @@ -1702,7 +1754,6 @@ def fit(self): # ########## for nn in range(self.iters): - # If we are on subsequent iterations, remove matching results from the # prior iteration. This leaves aggregated (1D) columns alone. if nn > 0: @@ -1749,11 +1800,10 @@ def fit(self): print("**********") self.match_lists(self.dr_tol[-1], self.dm_tol[-1]) - keep_ref_orig = (self.update_ref_orig==False) - if keep_ref_orig: - keep_orig = np.where(self.ref_table['ref_orig'])[0] - else: + if self.update_ref_orig: keep_orig=None + else: + keep_orig = np.where(self.ref_table['ref_orig'])[0] self.update_ref_table_aggregates(keep_orig=keep_orig) ########## @@ -1804,7 +1854,7 @@ def get_all_epochs(t): return all_epochs -def setup_ref_table_from_starlist(star_list): +def setup_ref_table_from_starlist(star_list, motion_models): """ Start with the reference list.... this will change and grow over time, so make a copy that we will keep updating. @@ -1812,7 +1862,7 @@ def setup_ref_table_from_starlist(star_list): array in the original reference star list. """ col_arrays = {} - motion_model_col_names = motion_model.get_all_motion_model_param_names(with_errors=True) + motion_model_col_names = motion_model.motion_model_param_names(motion_models, with_errors=True) for col_name in star_list.colnames: if col_name == 'name': # The "name" column will be 1D; but we will also add a "name_in_list" column. @@ -1820,7 +1870,7 @@ def setup_ref_table_from_starlist(star_list): new_col_name = "name_in_list" else: new_col_name = col_name - + # Make every column's 2D arrays except "name" and those # columns used for the motion model. if col_name in motion_model_col_names: @@ -1856,7 +1906,7 @@ def setup_ref_table_from_starlist(star_list): if not new_cols_arr[ii] in ref_cols: # Some munging to convert data shape from (N,1) to (N,), # since these are all 1D cols - vals = np.transpose(np.array(ref_table[orig_cols_arr[ii]]))[0] + vals =np.array(ref_table[orig_cols_arr[ii]]).flatten() # Now add to ref_table new_col = Column(vals, name=new_cols_arr[ii]) @@ -1926,7 +1976,7 @@ def reset_ref_values(ref_table): return -def add_rows_for_new_stars(ref_table, star_list, idx_lis): +def add_rows_for_new_stars(ref_table, star_list, idx_lis, motion_model='Fixed'): """ For each star that is in star_list and NOT in idx_list, make a new row in the reference table. The values will be empty (None, NAN, etc.). @@ -1935,13 +1985,13 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis): ---------- ref_table : StarTable The reference table that the rows will be added to. - star_list : StarList The starlist that will be used to estimate how many new stars there are. - idx_lis : array or list The indices of the non-new stars (those that matched already). The complement of this array will be used as the new stars. + motion_model : str + The motion model to assign to the new stars. Returns ---------- @@ -1957,8 +2007,9 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis): idx_lis_orig = np.arange(len(star_list)) idx_lis_new = np.array(list(set(idx_lis_orig) - set(idx_lis))) + N_newstars = len(idx_lis_new) - if len(idx_lis_new) > 0: + if N_newstars > 0: col_arrays = {} for col_name in ref_table.colnames: @@ -1971,16 +2022,16 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis): elif ref_table[col_name].dtype == np.dtype('bool'): new_col_empty = False elif col_name=='motion_model_input': - new_col_empty = 'Empty' + new_col_empty = motion_model elif col_name=='motion_model_used': - new_col_empty = 'Empty' + new_col_empty = 'Fixed' else: new_col_empty = np.nan - + if len(ref_table[col_name].shape) == 1: - new_col_shape = len(idx_lis_new) + new_col_shape = N_newstars else: - new_col_shape = [len(idx_lis_new), ref_table[col_name].shape[1]] + new_col_shape = [N_newstars, ref_table[col_name].shape[1]] new_col_data = Column(data=np.tile(new_col_empty, new_col_shape), name=col_name, dtype=ref_table[col_name].dtype) @@ -2609,7 +2660,7 @@ def transform_from_object(starlist, transform): # For more complicated motion_models, # we can't easily transform them, set the values to nans and refit later. if mot: - motion_model_params = motion_model.get_all_motion_model_param_names() + motion_model_params = motion_model.motion_model_param_names() for param in motion_model_params: if param in keys: starlist_f[param] = np.nan @@ -2933,7 +2984,7 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', mref = ref_list['m'] else: mref = ref_list['m0'] - + N, x1m, y1m, m1m, x2m, y2m, m2m = match.miracle_match_briteN( star_list['x'], star_list['y'], @@ -2943,10 +2994,9 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', mref, briteN ) - - err_msg = 'Failed to find more than '+str(n_req_match) - err_msg += ' (only ' + str(len(x1m)) + ') matches, giving up.' - assert len(x1m) >= n_req_match, err_msg + + assert len(x1m) >= n_req_match, \ + f'Failed to find more than {n_req_match} (only {len(x1m)}) matches, giving up.' if verbose > 1: print('initial_guess: {0:d} stars matched between starlist and reference list'.format(N)) @@ -2965,12 +3015,12 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', trans.mag_offset = np.mean(m2m - m1m) else: trans.mag_offset = 0 - + if verbose > 1: print('init guess: ', trans.px.parameters, trans.py.parameters) warnings.filterwarnings('default', category=AstropyUserWarning) - + return trans @@ -3062,7 +3112,7 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, verbose=True): The indicies of the stars to keep. """ # Optionally propogate the reference positions forward in time. - xref, yref = get_pos_in_time(star_list['t'][0], ref_list) + xref, yref = infer_positions(star_list['t'][0], ref_list) # Residuals x_resid_on_old_trans = star_list['x'] - xref @@ -3176,12 +3226,19 @@ def infer_positions(t, startable): to the desired epoch. If no motion/velocities exist, then just use ['x0', 'y0'] or ['x', 'y'] - Inputs + Parameters ---------- t_array : float The time to propogate to. Usually in decimal years; but it should be in the same units as the 't0' column in starlist. + startable : StarTable + Startable that needs to be inferred. + + Returns + ------- + x, y : tuple + Inferred position at time t """ # Check for motion model if 'motion_model_used' in startable.colnames: @@ -3201,10 +3258,10 @@ def infer_positions(t, startable): x = startable['x'] y = startable['y'] - return (x, y) + return x, y def logger(logfile, message, verbose = 9): if verbose > 4: print(message) logfile.write(message + '\n') - return + return \ No newline at end of file diff --git a/flystar/match.py b/flystar/match.py index 56710a9..f564cd3 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -1,5 +1,5 @@ import numpy as np -from . import starlists, transforms, startables, align +from . import starlists, transforms, startables from collections import Counter from scipy.spatial import cKDTree as KDT from astropy.table import Column diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 11f6b16..1ba2dcf 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -1065,53 +1065,13 @@ def validate_motion_models(motion_models, startable, default_motion_model): return motion_models -def get_one_motion_model_param_names(motion_model, with_errors=True, with_fixed=True): - """Get all the motion model parameters +def motion_model_param_names(motion_models, with_errors=True, with_fixed=True): + """Get the motion model parameter names from a list of MotionModels. Parameters ---------- - motion_model : MotionModel - MotionModel instance - with_errors : bool, optional - Add uncertainty names with '_err' suffix or not, by default True - with_fixed : bool, optional - Add fixed param names with '_fixed' suffix or not, by default True - - Returns - ------- - list - List of all parameter names for the motion model - """ - if isinstance(motion_model, str): - all_mm_map = motion_model_map() - motion_model = all_mm_map[motion_model] - - list_of_parameters = [] - - def list_add(name): - if name not in list_of_parameters: - list_of_parameters.append(name) - - for param in motion_model.fit_param_names: - # Fitter params - list_add(param) - # Error params - if with_errors: - list_add(param + '_err') - # Fixed params - if with_fixed: - for param in motion_model.fixed_param_names: - list_add(param) - return list_of_parameters - - -def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_fixed=True): - """Get all the motion model parameters - - Parameters - ---------- - motion_model_list : list of MotionModels or str - List of MotionModels + motion_models : MotionModel, str, or list of MotionModels/strings. + Motion model to query parameter names from. If str, should be the name of a MotionModel class. with_errors : bool, optional Add uncertainty names with '_err' suffix or not, by default True with_fixed : bool, optional @@ -1127,9 +1087,10 @@ def get_list_motion_model_param_names(motion_model_list, with_errors=True, with_ def list_add(name): if name not in list_of_parameters: list_of_parameters.append(name) - + + motion_models = np.atleast_1d(motion_models) mm_map = motion_model_map() - for mm in motion_model_list: + for mm in motion_models: if isinstance(mm, str): mm = mm_map[mm] for param in mm.fit_param_names: @@ -1142,11 +1103,11 @@ def list_add(name): if with_fixed: for param in mm.fixed_param_names: list_add(param) - return list(list_of_parameters) + return list_of_parameters -def get_all_motion_model_param_names(with_errors=True, with_fixed=True): - return get_list_motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) +def all_motion_model_param_names(with_errors=True, with_fixed=True): + return motion_model_param_names(MotionModel.__subclasses__(), with_errors=with_errors, with_fixed=with_fixed) def motion_model_map(): mm_map = dict( diff --git a/flystar/startables.py b/flystar/startables.py index bdcb880..861775e 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -730,7 +730,7 @@ def fit_motion_model( if 'motion_model_input' in self.colnames: # Determine which motion model to use based on motion_model_input column # If n_fit < required n_params for the input motion model, use the most complicated motion model with n_fit >= n_params - required_params = [all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']] + required_params = np.array([all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']]) mm_digitized = np.digitize( x=np.minimum(np.array(self['n_fit']), required_params), bins=mm_n_params @@ -751,7 +751,7 @@ def fit_motion_model( ############################ # Fill table with all possible motion model parameter names as new columns. motion_model_used = [all_mm_map[name] for name in np.unique(self['motion_model_used'])] - new_col_list = motion_model.get_list_motion_model_param_names(motion_model_used, with_errors=True, with_fixed=False) + new_col_list = motion_model.motion_model_param_names(motion_model_used, with_errors=True, with_fixed=False) new_col_list += ['chi2_x', 'chi2_y', 'n_params'] if 't0' not in new_col_list: @@ -810,9 +810,10 @@ def fit_motion_model( for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance motion_model_instance = input_mm_map[unique_motion_model]() + param_names = motion_model_instance.fit_param_names # Initialize arrays to store results n_stars_this_model = len(unique_index) - n_params = len(motion_model_instance.fit_param_names) + n_params = len(param_names) params_array = np.full((n_stars_this_model, n_params), fill_value, dtype=float) param_errs_array = np.full((n_stars_this_model, n_params), np.inf, dtype=float) @@ -843,7 +844,6 @@ def fit_motion_model( chi2_y_array[idx] = chi2_y # Store results back to the table - param_names = motion_model_instance.fit_param_names for j, param_name in enumerate(param_names): self[param_name][unique_index] = params_array[:, j] self[param_name + '_err'][unique_index] = param_errs_array[:, j] diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index cc4de2a..ea76ee8 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -259,12 +259,12 @@ def test_MosaicToRef(): # Also double check that they aren't exactly the same for the reference stars. assert np.not_equal(msc.ref_table['x0'], ref_list['x0']).all() assert np.not_equal(msc.ref_table['y0'], ref_list['y0']).all() - + return msc def test_MosaicToRef_p0_vel(): make_fake_starlists_poly0_vel(seed=42) - + ref_file = 'random_vel_ref.fits' list_files = ['random_vel_p0_0.fits', 'random_vel_p0_1.fits', @@ -286,7 +286,8 @@ def test_MosaicToRef_p0_vel(): # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 ref_list['vx'] *= -1.0 - + ref_list['motion_model_used'] = 'Linear' + lists = [starlists.StarList.read(lf) for lf in list_files] msc = align.MosaicToRef(ref_list, lists, iters=2, @@ -391,7 +392,7 @@ def test_MosaicToRef_vel(): # Also double check that they aren't exactly the same for the reference stars. #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) assert np.not_equal(msc.ref_table['vx'], ref_list['vx']).any() - + return msc def test_MosaicToRef_acc(): @@ -469,12 +470,13 @@ def test_MosaicToRef_acc(): if ~np.isnan(msc.ref_table['ax'][ix_fit]): i_orig.append(i) i_fit.append(ix_fit) - np.testing.assert_allclose(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig], rtol=1e-1) - np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], rtol=1e-1) + # Accelerations all too small, rtol doesn't work well here. + np.testing.assert_allclose(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig], atol=1e-3) + np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], atol=1e-3) # Also double check that they aren't exactly the same for the reference stars. - assert np.any(np.not_equal(msc.ref_table['ax'], ref_list['ax'])) - + assert np.any(np.not_equal(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig])) + return msc @@ -483,12 +485,12 @@ def make_fake_starlists_shifts(): x = np.random.rand(N_stars) * 1000 y = np.random.rand(N_stars) * 1000 m = (np.random.rand(N_stars) * 8) + 9 - + sdx = np.argsort(m) x = x[sdx] y = y[sdx] m = m[sdx] - + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] # Save original positions as reference (1st) list. @@ -1016,7 +1018,7 @@ def make_fake_starlists_poly1_par(seed=-1): return (xy_trans, mag_trans) - + def test_MosaicToRef_hst_me(): """ Test Casey's issue with 'me' not getting propogated @@ -1025,30 +1027,30 @@ def test_MosaicToRef_hst_me(): Use data from MB10-364 microlensing target for the test. """ # Target RA and Dec (MOA data download) - ra = '17:57:05.401' - dec = '-34:27:05.01' - + # ra = '17:57:05.401' + # dec = '-34:27:05.01' + # Load up a Gaia catalog (queried around the RA/Dec above) my_gaia = Table.read('mb10364_data/my_gaia.fits') my_gaia['me'] = 0.01 - + # Gather the list of starlists. For first pass, don't modify the starlists. # Loop through the observations and read them in, in prep for alignment with Gaia epochs = [2011.83, 2012.73, 2013.81] starlist_names = ['mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', 'mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', 'mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] - + list_of_starlists = [] - + # Just using the F606W filters first. for ee in range(len(starlist_names)): lis = starlists.StarList.from_lis_file(starlist_names[ee]) - + # # Add additive error term. MAYBE YOU DON'T NEED THIS # lis['xe'] = np.hypot(lis['xe'], 0.01) # Adding 0.01 pix (0.1 mas) in quadrature. # lis['ye'] = np.hypot(lis['ye'], 0.01) - + lis['t'] = epochs[ee] # Lets dump the faint stars. @@ -1056,23 +1058,21 @@ def test_MosaicToRef_hst_me(): lis = lis[idx] list_of_starlists.append(lis) - + msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, dr_tol=[0.1], dm_tol=[5], outlier_tol=[None], mag_lim=[13, 21], trans_class=transforms.PolyTransform, trans_args=[{'order': 1}], - default_motion_model='Fixed', + motion_models=['Empty', 'Fixed'], use_ref_new=False, update_ref_orig=False, mag_trans=False, - trans_weights='both,std', + trans_weighting='both,std', init_guess_mode='miracle', verbose=False) msc.fit() - tab = msc.ref_table - - assert 'me' in tab.colnames + assert 'me' in msc.ref_table.colnames return def test_bootstrap(): @@ -1099,7 +1099,7 @@ def test_bootstrap(): outlier_tol = None mag_lim = None ref_mag_lim = None - trans_weights = 'both,var' + trans_weighting = 'both,var' mag_trans = False n_boot = 15 @@ -1113,8 +1113,8 @@ def test_bootstrap(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - trans_weights=trans_weights, - default_motion_model='Linear', + trans_weighting=trans_weighting, + motion_models=['Linear'], use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -1134,7 +1134,6 @@ def test_bootstrap(): assert np.sum(np.isnan(match1.ref_table['ye_boot'])) == 0 assert np.sum(np.isnan(match1.ref_table['vx_err_boot'])) == 0 assert np.sum(np.isnan(match1.ref_table['vy_err_boot'])) == 0 - #pdb.set_trace() # Test 2: make sure boot_epochs_min is working # Eliminate some rows to list2, so some stars are only in 1 epoch. @@ -1148,8 +1147,8 @@ def test_bootstrap(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - trans_weights=trans_weights, - default_motion_model='Linear', + trans_weighting=trans_weighting, + motion_models=['Linear'], use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -1171,10 +1170,10 @@ def test_bootstrap(): assert len(good[0]) > 0 # For "good" stars: all bootstrap vals should be present - assert np.sum(np.isnan(out['xe_boot'][good])) == 0 - assert np.sum(np.isnan(out['ye_boot'][good])) == 0 - assert np.sum(np.isnan(out['vx_err_boot'][good])) == 0 - assert np.sum(np.isnan(out['vy_err_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['xe_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['ye_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['vx_err_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['vy_err_boot'][good])) == 0 # For "bad" stars, all bootstrap vals should be nans assert np.sum(np.isfinite(out['xe_boot'][bad])) == 0 @@ -1193,7 +1192,7 @@ def test_calc_vel_in_bootstrap(): """ import copy - + # Define match parameters ref = Table.read('ref_vel.lis', format='ascii') @@ -1212,7 +1211,7 @@ def test_calc_vel_in_bootstrap(): outlier_tol = None mag_lim = None ref_mag_lim = None - trans_weights = 'both,var' + trans_weighting = 'both,var' mag_trans = False n_boot = 15 @@ -1226,8 +1225,8 @@ def test_calc_vel_in_bootstrap(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - trans_weights=trans_weights, - default_motion_model='Linear', + trans_weighting=trans_weighting, + motion_models=['Linear'], use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -1280,7 +1279,7 @@ def test_transform_xym(): outlier_tol = None mag_lim = None ref_mag_lim = None - trans_weights = 'both,var' + trans_weighting = 'both,var' n_boot = 15 mag_trans = False @@ -1293,8 +1292,8 @@ def test_transform_xym(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - trans_weights=trans_weights, - default_motion_model='Fixed', + trans_weighting=trans_weighting, + motion_models=['Fixed'], use_ref_new=False, update_ref_orig=False, init_guess_mode='name', @@ -1328,7 +1327,7 @@ def test_transform_xym(): mag_trans=mag_trans, mag_lim=mag_lim, ref_mag_lim=ref_mag_lim, - trans_weights=trans_weights, + trans_weighting=trans_weighting, default_motion_model='Fixed', use_ref_new=False, update_ref_orig=False, @@ -1372,7 +1371,7 @@ def test_MosaicToRef_mag_bug(): outlier_tol=None, trans_class=transforms.PolyTransform, trans_args=[{'order': 1}], - default_motion_model='Fixed', + motion_models=['Fixed'], use_ref_new=False, update_ref_orig=False, verbose=True) @@ -1400,15 +1399,16 @@ def test_masked_cols(): """ # Get gaia reference stars using analysis.py # around a test location. - target = 'ob150029' + # target = 'ob150029' ra = '17:59:46.60' dec = '-28:38:41.8' # Coordinates are arcsecs offset +x to the East. - targets_dict = {'ob150029': [0.0, 0.0], - 'S005': [1.1416, 3.7405], - 'S002': [-4.421, 0.027] - } + targets_dict = { + 'ob150029': [0.0, 0.0], + 'S005': [1.1416, 3.7405], + 'S002': [-4.421, 0.027] + } # Get gaia catalog stars. Note that this produces a masked column table search_rad = 10.0 # arcsec @@ -1418,7 +1418,7 @@ def test_masked_cols(): assert isinstance(my_gaia, Table) # Let's make sure the entire align runs, just to be safe - + # Get starlists to align to gaia epochs = ['15jun07','16jul14', '17may21'] @@ -1427,7 +1427,6 @@ def test_masked_cols(): for ee in range(len(epochs)): lis_file = 'mag' + epochs[ee] + '_ob150029_kp_rms_named.lis' lis = starlists.StarList.from_lis_file(lis_file) - list_of_starlists.append(lis) # Run the align @@ -1435,12 +1434,11 @@ def test_masked_cols(): dr_tol=[0.2, 0.1], dm_tol=[1, 1], trans_class=transforms.PolyTransform, trans_args=[{'order': 1}, {'order': 1}], - default_motion_model='Linear', + motion_models=['Linear'], use_ref_new=False, update_ref_orig=False, mag_trans=True, init_guess_mode='name', verbose=True) msc.fit() - return diff --git a/flystar/transforms.py b/flystar/transforms.py index 8cb9525..968ccfa 100755 --- a/flystar/transforms.py +++ b/flystar/transforms.py @@ -127,7 +127,7 @@ def evaluate_starlist(self, star_list): complex_motion_model=False # Cannot transform more complex motion models - set values to nan if complex_motion_model: - motion_params = motion_model.get_list_motion_model_param_names(new_list['motion_model_input'], with_errors=True, with_fixed=False) + motion_params = motion_model.motion_model_param_names(new_list['motion_model_input'], with_errors=True, with_fixed=False) for param in motion_params: if param in new_list.colnames: new_list[param] = np.nan From 04fd8eae9b72e1e9d75c006517db0ca3573e6caf Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Sat, 20 Dec 2025 18:46:35 +0800 Subject: [PATCH 25/94] Add select_stars functionality in fit_motion_model --- flystar/align.py | 48 ++++++------------------------------- flystar/startables.py | 17 +++++++++++-- flystar/tests/test_align.py | 1 - 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 3a3160d..b4c03c4 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -834,6 +834,7 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li idx_lis, motion_model=self.motion_models[-1].name ) + pdb.set_trace() if len(idx_ref_new) > 0: if self.verbose > 0: print(' Adding {0:d} new stars to the reference table.'.format(len(idx_ref_new))) @@ -889,55 +890,19 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) weighted_m = ('me' in self.ref_table.colnames) self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) - elif fit_star_idxs is None: - self.ref_table.fit_motion_model( - motion_models=self.motion_models, - fixed_params_dict=self.fixed_params_dict, - weighting=self.vel_weighting, - use_scipy=self.use_scipy, - absolute_sigma=self.absolute_sigma, - bootstrap=n_boot, - verbose=self.verbose - ) - # Combine (transformed) magnitudes - if 'me' in self.ref_table.colnames: - weights_col = None - else: - weights_col = 'me' - self.ref_table.combine_lists('m', weights_col=weights_col, ismag=True) else: - # Combine positions with a velocity fit. - update_ref_table = self.ref_table[fit_star_idxs] - keep_ref_table = self.ref_table[keep_orig] - update_ref_table.fit_motion_model( + self.ref_table.fit_motion_model( motion_models=self.motion_models, fixed_params_dict=self.fixed_params_dict, weighting=self.vel_weighting, use_scipy=self.use_scipy, absolute_sigma=self.absolute_sigma, + select_stars=fit_star_idxs, bootstrap=n_boot, verbose=self.verbose ) - # Determine motion models for keep_ref_table - pdb.set_trace() - if 'motion_model_used' not in keep_ref_table.colnames: - all_mm_map = motion_model.motion_model_map() - mm_n_params = np.sort([mm.n_params for mm in self.motion_models]) - required_params = np.array([all_mm_map[mm_name].n_params for mm_name in keep_ref_table['motion_model_input']]) - mm_digitized = np.digitize( - x=np.minimum(np.array(keep_ref_table['n_detect']), required_params), - bins=mm_n_params - ) - 1 - keep_ref_table['motion_model_used'] = np.array([self.motion_models[d].name for d in mm_digitized]) - - # Merge back into the full ref_table - new_ref_table = vstack([keep_ref_table, update_ref_table]) - self.ref_table = new_ref_table.copy() - self.ref_table[keep_orig] = new_ref_table[0:len(keep_orig)] - self.ref_table[fit_star_idxs] = new_ref_table[len(keep_orig):] - # Combine (transformed) magnitudes if 'me' in self.ref_table.colnames: weights_col = None @@ -1949,6 +1914,7 @@ def copy_over_values(ref_table, star_list, star_list_T, idx_epoch, idx_ref, idx_ The indices into the star_list or star_list_T where values are copied from. """ for col_name in ref_table.colnames: + if col_name=='x': pdb.set_trace() if col_name in star_list_T.colnames: if col_name == 'name': ref_table['name_in_list'][idx_ref, idx_epoch] = star_list_T[col_name][list(idx_lis)] @@ -1976,7 +1942,7 @@ def reset_ref_values(ref_table): return -def add_rows_for_new_stars(ref_table, star_list, idx_lis, motion_model='Fixed'): +def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model='Fixed'): """ For each star that is in star_list and NOT in idx_list, make a new row in the reference table. The values will be empty (None, NAN, etc.). @@ -1987,7 +1953,7 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis, motion_model='Fixed'): The reference table that the rows will be added to. star_list : StarList The starlist that will be used to estimate how many new stars there are. - idx_lis : array or list + idx_list : array or list The indices of the non-new stars (those that matched already). The complement of this array will be used as the new stars. motion_model : str @@ -2006,7 +1972,7 @@ def add_rows_for_new_stars(ref_table, star_list, idx_lis, motion_model='Fixed'): last_star_idx = len(ref_table) idx_lis_orig = np.arange(len(star_list)) - idx_lis_new = np.array(list(set(idx_lis_orig) - set(idx_lis))) + idx_lis_new = np.array(list(set(idx_lis_orig) - set(idx_list))) N_newstars = len(idx_lis_new) if N_newstars > 0: diff --git a/flystar/startables.py b/flystar/startables.py index 861775e..25e15dd 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -539,6 +539,7 @@ def fit_motion_model( weighting='var', use_scipy=False, absolute_sigma=True, + select_stars=None, bootstrap=0, verbose=True, mask_value=None, @@ -573,6 +574,8 @@ def fit_motion_model( Use scipy.optimize.curve_fit or algebraic solution (for Linear model only), by default False absolute_sigma : bool, optional Use absolute sigma or not, see scipy curve_fit for details, by default True + select_stars : list of int, optional + Indices of stars to fit, by default None (fit all stars) bootstrap : int, optional Number of bootstrap for uncertainty resampling, by default 0 verbose : bool, optional @@ -757,8 +760,11 @@ def fit_motion_model( if 't0' not in new_col_list: new_col_list.append('t0') - # Replace old columns if they exist + # Add new columns if they do not exist for col in new_col_list: + if col in self.colnames: + # Keep old data if the column already exists + continue if col.endswith('_err'): self.add_column( Column(data=np.full(N_stars, np.inf, dtype=float), name=col), @@ -804,7 +810,14 @@ def fit_motion_model( ######### FITTING ######### ########################### unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) - indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} + if select_stars is not None: + select_stars = np.asarray(select_stars) + if select_stars.dtype == bool: + select_stars = np.flatnonzero(select_stars) + indices_by_motion_model = {key: np.intersect1d(select_stars, np.flatnonzero(unique_inv_indices == k)) for k, key in enumerate(unique_motion_models)} + else: + indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} + # Expensive for loop! Prepare everything beforehand to speed up. for unique_motion_model, unique_index in indices_by_motion_model.items(): diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index ea76ee8..3e55e2c 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -286,7 +286,6 @@ def test_MosaicToRef_p0_vel(): # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 ref_list['vx'] *= -1.0 - ref_list['motion_model_used'] = 'Linear' lists = [starlists.StarList.read(lf) for lf in list_files] From 87d7cc444f6cff384e7ce52cb987e9b4b187b430 Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Sun, 21 Dec 2025 11:57:30 +0800 Subject: [PATCH 26/94] Passed all tests! --- flystar/align.py | 24 +- flystar/analysis.py | 2 +- flystar/startables.py | 14 +- flystar/tests/test_align.ipynb | 366 ------- flystar/tests/test_align.py | 1588 ++++++++++++++++--------------- flystar/tests/test_startable.py | 2 +- 6 files changed, 829 insertions(+), 1167 deletions(-) delete mode 100644 flystar/tests/test_align.ipynb diff --git a/flystar/align.py b/flystar/align.py index b4c03c4..2820ae5 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -616,6 +616,8 @@ def setup_ref_table_from_starlist(self, star_list): """ col_arrays = {} motion_model_col_names = motion_model.motion_model_param_names(self.motion_models, with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] + if 't0' not in motion_model_col_names: + motion_model_col_names.insert(0, 't0') for col_name in star_list.colnames: if col_name == 'name': # The "name" column will be 1D; but we will also add a "name_in_list" column. @@ -657,7 +659,7 @@ def setup_ref_table_from_starlist(self, star_list): if not new_cols_arr[ii] in ref_cols: # Some munging to convert data shape from (N,1) to (N,), # since these are all 1D cols - vals = np.transpose(np.array(ref_table[orig_cols_arr[ii]]))[0] + vals = np.array(ref_table[orig_cols_arr[ii]]).flatten() # Now add to ref_table new_col = Column(vals, name=new_cols_arr[ii]) @@ -717,11 +719,14 @@ def setup_ref_table_from_starlist(self, star_list): if 'motion_model_input' not in ref_table.colnames: ref_table.add_column(Column(np.repeat(self.motion_models[-1].name, len(ref_table)), name='motion_model_input')) - # if 'motion_model_used' not in ref_table.colnames: - # if motion_model_used is None: - # ref_table.add_column(Column(np.repeat(self.default_motion_model, len(ref_table)), name='motion_model_used')) - # else: - # ref_table.add_column(Column(np.repeat(motion_model_used, len(ref_table)), name='motion_model_used')) + if 'motion_model_used' not in ref_table.colnames: + # Order self.motion_models by decreasing n_params + sorted_mms = sorted(self.motion_models, key=lambda mm: mm.n_params, reverse=True) + # Save the most complex motion model that can infer the positions with the existing columns. + for mm in sorted_mms: + if all([_ in ref_table.colnames for _ in mm.fit_param_names]) and all([_ in ref_table.colnames for _ in mm.fixed_param_names]): + ref_table.add_column(Column(np.repeat(mm.name, len(ref_table)), name='motion_model_used')) + break return ref_table @@ -834,7 +839,7 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li idx_lis, motion_model=self.motion_models[-1].name ) - pdb.set_trace() + if len(idx_ref_new) > 0: if self.verbose > 0: print(' Adding {0:d} new stars to the reference table.'.format(len(idx_ref_new))) @@ -1880,10 +1885,10 @@ def setup_ref_table_from_starlist(star_list, motion_models): if 'use_in_trans' not in ref_table.colnames: new_col = Column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') ref_table.add_column(new_col) - + # Now reset the original values to invalids... they will be filled in # at later times. Preserve content only in the columns: name, x0, y0, m0 (and 0e). - # Note that these are all the 1D columsn. + # Note that these are all the 1D columns. for col_name in ref_table.colnames: if len(ref_table[col_name].data.shape) == 2: # Find the 2D columns ref_table._set_invalid_list_values(col_name, -1) @@ -1914,7 +1919,6 @@ def copy_over_values(ref_table, star_list, star_list_T, idx_epoch, idx_ref, idx_ The indices into the star_list or star_list_T where values are copied from. """ for col_name in ref_table.colnames: - if col_name=='x': pdb.set_trace() if col_name in star_list_T.colnames: if col_name == 'name': ref_table['name_in_list'][idx_ref, idx_epoch] = star_list_T[col_name][list(idx_lis)] diff --git a/flystar/analysis.py b/flystar/analysis.py index f502375..ceca739 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -44,7 +44,7 @@ def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr3'): search_radius *= u.arcsec Gaia.ROW_LIMIT = 50000 - gaia_job = Gaia.cone_search_async(target_coords, search_radius, table_name = table_name + '.gaia_source') + gaia_job = Gaia.cone_search_async(target_coords, radius=search_radius, table_name=table_name + '.gaia_source') gaia = gaia_job.get_results() #Change new 'SOURCE_ID' column header back to lowercase 'source_id' so all subsequent functions still work: diff --git a/flystar/startables.py b/flystar/startables.py index 25e15dd..3de41cc 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -602,19 +602,19 @@ def fit_motion_model( ####### Check Params ###### ########################### if weighting not in ['var', 'std']: - raise ValueError(f"fit_velocities: Weighting must either be 'var' or 'std', not {weighting}!") + raise ValueError(f"fit_motion_model: Weighting must either be 'var' or 'std', not {weighting}!") if ('t' not in self.colnames) and ('list_times' not in self.meta): - raise KeyError("fit_velocities: Failed to access time values. No 't' column in table, no 'list_times' in meta.") + raise KeyError("fit_motion_model: Failed to access time values. No 't' column in table, no 'list_times' in meta.") # Check if we have the required columns if not all([_ in self.colnames for _ in ['x', 'y']]): - raise KeyError(f"fit_velocities: Missing required columns in the table: {', '.join(['x', 'y'])}!") + raise KeyError(f"fit_motion_model: Missing required columns in the table: {', '.join(['x', 'y'])}!") # Check fixed_params_dict is a dict if fixed_params_dict is not None: if not isinstance(fixed_params_dict, dict): - raise ValueError("fit_velocities: fixed_params_dict must be a dictionary!") + raise ValueError("fit_motion_model: fixed_params_dict must be a dictionary!") # Convert motion_models to MotionModel objects if they are strings: all_mm_map = motion_model.motion_model_map() @@ -635,7 +635,7 @@ def fit_motion_model( if 'motion_model_input' in self.colnames: input_mm_names = np.unique(self['motion_model_input']) assert all([name in all_mm_map.keys() for name in input_mm_names]), \ - f"fit_velocities: Unknown motion model name(s) in 'motion_model_input' column. Available motion models are: {', '.join(all_mm_map.keys())}." + f"fit_motion_model: Unknown motion model name(s) in 'motion_model_input' column. Available motion models are: {', '.join(all_mm_map.keys())}." for mm_name in input_mm_names: if mm_name not in mm_names: motion_models.append(all_mm_map[mm_name]) @@ -649,7 +649,7 @@ def fit_motion_model( if 'motion_model_input' not in self.colnames: # If motion_model_input column is not provided, assert that motion model n_params are unique and sorted # Otherwise the fitter does not know which motion model to use based on n_obs - assert len(mm_n_params) == len(set(mm_n_params)), "fit_velocities: Provided motion model n_params are not unique! Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." + assert len(mm_n_params) == len(set(mm_n_params)), "fit_motion_model: Provided motion model n_params are not unique! Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." ########################### @@ -814,6 +814,8 @@ def fit_motion_model( select_stars = np.asarray(select_stars) if select_stars.dtype == bool: select_stars = np.flatnonzero(select_stars) + else: + select_stars = np.asarray(select_stars, dtype=int) indices_by_motion_model = {key: np.intersect1d(select_stars, np.flatnonzero(unique_inv_indices == k)) for k, key in enumerate(unique_motion_models)} else: indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} diff --git a/flystar/tests/test_align.ipynb b/flystar/tests/test_align.ipynb deleted file mode 100644 index 02442b9..0000000 --- a/flystar/tests/test_align.ipynb +++ /dev/null @@ -1,366 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Notebook for Running Align Tests" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "from flystar.tests import test_align\n", - "from flystar import starlists\n", - "from astropy.table import Table" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Test: make_fake_starlists_poly1_vel\n", - "\n", - "Just make sure the tables look sensible and are in the right units." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " name m0 m0e ... vye t0 \n", - "-------- ----------------- -------------------- ... ------------------- ------\n", - "star_155 9.106905292995506 0.054167528156861204 ... 0.1564397531527286 2019.5\n", - "star_113 9.153031462110043 0.0421090989942197 ... 0.08128628950126615 2019.5\n", - "star_077 9.16547870263162 0.02021147759307802 ... 0.05907352582911862 2019.5\n", - "star_069 9.169817788300977 0.027788213230369625 ... 0.04965351499764548 2019.5\n", - "star_037 9.173200786855755 0.007665400875860144 ... 0.22723357600795704 2019.5\n", - " name m me ... ye t \n", - "-------- ----------------- -------------------- ... -------------------- ------\n", - "star_155 9.198437965086988 0.054167528156861204 ... 0.02649499466969545 2018.5\n", - "star_113 9.257333243243941 0.0421090989942197 ... 0.02606700846524875 2018.5\n", - "star_077 9.252158908537464 0.02021147759307802 ... 0.04250920654497108 2018.5\n", - "star_069 9.267901667333167 0.027788213230369625 ... 0.042689240225924296 2018.5\n", - "star_037 9.276780126418494 0.007665400875860144 ... 0.03592203011554212 2018.5\n", - " name m me ... ye t \n", - "-------- ----------------- -------------------- ... -------------------- ------\n", - "star_155 9.478887659623185 0.054167528156861204 ... 0.02649499466969545 2019.5\n", - "star_113 9.569878576042546 0.0421090989942197 ... 0.02606700846524875 2019.5\n", - "star_077 9.575998150724095 0.02021147759307802 ... 0.04250920654497108 2019.5\n", - "star_069 9.593581807234129 0.027788213230369625 ... 0.042689240225924296 2019.5\n", - "star_037 9.553127108740597 0.007665400875860144 ... 0.03592203011554212 2019.5\n", - "['name', 'm0', 'm0e', 'x0', 'x0e', 'y0', 'y0e', 'vx', 'vxe', 'vy', 'vye', 't0']\n", - "['name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't']\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jlu/code/python/flystar/flystar/starlists.py:386: UserWarning: The StarList class requires a arguments('name', 'x', 'y', 'm')\n", - " warnings.warn(err_msg, UserWarning)\n" - ] - } - ], - "source": [ - "test_align.make_fake_starlists_poly1_vel()\n", - "\n", - "ref = Table.read('random_vel_ref.fits')\n", - "lis0 = Table.read('random_vel_0.fits')\n", - "lis1 = Table.read('random_vel_1.fits')\n", - "\n", - "print(ref[0:5])\n", - "print(lis0[0:5])\n", - "print(lis1[0:5])\n", - "\n", - "print(ref.colnames)\n", - "print(lis0.colnames)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## test_align_vel\n", - "\n", - "Make sure it runs, make some plots along the way, etc." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jlu/code/python/flystar/flystar/starlists.py:386: UserWarning: The StarList class requires a arguments('name', 'x', 'y', 'm')\n", - " warnings.warn(err_msg, UserWarning)\n", - "/Users/jlu/code/python/flystar/flystar/starlists.py:386: UserWarning: The StarList class requires a arguments('name', 'x', 'y', 'm')\n", - " warnings.warn(err_msg, UserWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " \n", - "**********\n", - "**********\n", - "Starting iter 0 with ref_table shape: (200, 1)\n", - "**********\n", - "**********\n", - " \n", - " **********\n", - " Matching catalog 1 / 4 in iteration 0 with 200 stars\n", - " **********\n", - "initial_guess: 50 stars matched between starlist and reference list\n", - "initial_guess: [-6.05144456e+00 1.01098279e+00 -2.50608887e-04] [-1.07161761e+01 4.89226304e-05 1.01096529e+00]\n", - " Found 0 duplicates out of 196 matches\n", - "In Loop 0 found 196 matches\n", - " Found 0 duplicates out of 196 matches\n", - " \n", - " **********\n", - " Matching catalog 2 / 4 in iteration 0 with 200 stars\n", - " **********\n", - "initial_guess: 49 stars matched between starlist and reference list\n", - "initial_guess: [-1.02158015e+02 1.02080743e+00 -1.45081519e-04] [-5.07779471e+01 -2.60729494e-05 9.99423500e-01]\n", - " Found 0 duplicates out of 200 matches\n", - "In Loop 0 found 200 matches\n", - " Found 0 duplicates out of 200 matches\n", - " \n", - " **********\n", - " Matching catalog 3 / 4 in iteration 0 with 200 stars\n", - " **********\n", - "initial_guess: 50 stars matched between starlist and reference list\n", - "initial_guess: [-2.14220566e-10 1.00000000e+00 -2.24089697e-16] [2.50622339e-10 0.00000000e+00 1.00000000e+00]\n", - " Found 0 duplicates out of 200 matches\n", - "In Loop 0 found 200 matches\n", - " Found 0 duplicates out of 200 matches\n", - " \n", - " **********\n", - " Matching catalog 4 / 4 in iteration 0 with 200 stars\n", - " **********\n", - "initial_guess: 50 stars matched between starlist and reference list\n", - "initial_guess: [-2.57803428e+02 1.03052409e+00 -5.28390832e-05] [ 2.49886631e+02 -6.00884405e-05 9.98642952e-01]\n", - " Found 0 duplicates out of 200 matches\n", - "In Loop 0 found 200 matches\n", - " Found 0 duplicates out of 200 matches\n", - " \n", - "**********\n", - "**********\n", - "Starting iter 1 with ref_table shape: (204, 4)\n", - "**********\n", - "**********\n", - " \n", - " **********\n", - " Matching catalog 1 / 4 in iteration 1 with 200 stars\n", - " **********\n", - " Found 0 duplicates out of 199 matches\n", - "In Loop 1 found 199 matches\n", - " Found 0 duplicates out of 199 matches\n", - " \n", - " **********\n", - " Matching catalog 2 / 4 in iteration 1 with 200 stars\n", - " **********\n", - " Found 0 duplicates out of 198 matches\n", - "In Loop 1 found 198 matches\n", - " Found 0 duplicates out of 199 matches\n", - " \n", - " **********\n", - " Matching catalog 3 / 4 in iteration 1 with 200 stars\n", - " **********\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jlu/code/python/flystar/flystar/starlists.py:386: UserWarning: The StarList class requires a arguments('name', 'x', 'y', 'm')\n", - " warnings.warn(err_msg, UserWarning)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Found 0 duplicates out of 200 matches\n", - "In Loop 1 found 200 matches\n", - " Found 0 duplicates out of 200 matches\n", - " \n", - " **********\n", - " Matching catalog 4 / 4 in iteration 1 with 200 stars\n", - " **********\n", - " Found 0 duplicates out of 200 matches\n", - "In Loop 1 found 200 matches\n", - " Found 0 duplicates out of 200 matches\n", - "**********\n", - "Final Matching\n", - "**********\n", - " Found 0 duplicates out of 199 matches\n", - "Matched 199 out of 200 stars in list 0\n", - " Found 0 duplicates out of 199 matches\n", - "Matched 199 out of 200 stars in list 1\n", - " Found 0 duplicates out of 200 matches\n", - "Matched 200 out of 200 stars in list 2\n", - " Found 0 duplicates out of 199 matches\n", - "Matched 199 out of 200 stars in list 3\n", - "\n", - " Preparing the reference table...\n" - ] - } - ], - "source": [ - "test_align.test_mosaic_lists_vel()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/jlu/code/python/flystar/flystar/align.py(3244)apply_mag_lim()\n", - "-> star_list_T.restrict_by_value(**conditions)\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) conditions\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'m0_min': None, 'm0_max': None}\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) type(star_list_T)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) type(ref_list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "*** NameError: name 'ref_list' is not defined\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) ref_list\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "*** NameError: name 'ref_list' is not defined\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) u\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "> /Users/jlu/code/python/flystar/flystar/align.py(991)mosaic_lists()\n", - "-> ref_list_T = apply_mag_lim(ref_list, mag_lim[ref_index])\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) type(ref_list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "(Pdb) q\n" - ] - } - ], - "source": [ - "import pdb\n", - "pdb.pm()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 3e55e2c..080ded3 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -470,442 +470,510 @@ def test_MosaicToRef_acc(): i_orig.append(i) i_fit.append(ix_fit) # Accelerations all too small, rtol doesn't work well here. - np.testing.assert_allclose(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig], atol=1e-3) - np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], atol=1e-3) + atol = 3e-4 + np.testing.assert_allclose(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig], atol=atol) + np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], atol=atol) + + ax_min = np.min(ref_list['ax'][i_orig]) + ax_max = np.max(ref_list['ax'][i_orig]) + ay_min = np.min(ref_list['ay'][i_orig]) + ay_max = np.max(ref_list['ay'][i_orig]) + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) + ax1.plot(ref_list['ax'][i_orig], msc.ref_table['ax'][i_fit], '.') + ax1.plot([ax_min, ax_max], [ax_min, ax_max], color='C3') + ax1.plot([ax_min, ax_max], [ax_min - atol, ax_max - atol], ls='--', color='C3') + ax1.plot([ax_min, ax_max], [ax_min + atol, ax_max + atol], ls='--', color='C3') + ax1.set_xlabel('Input ax') + ax1.set_ylabel('Ref Table ax') + ax1.set_title('Acceleration in X') + + ax2.plot(ref_list['ay'][i_orig], msc.ref_table['ay'][i_fit], '.') + ax2.plot([ay_min, ay_max], [ay_min, ay_max], color='C3') + ax2.plot([ay_min, ay_max], [ay_min - atol, ay_max - atol], ls='--', color='C3') + ax2.plot([ay_min, ay_max], [ay_min + atol, ay_max + atol], ls='--', color='C3') + ax2.set_xlabel('Input ay') + ax2.set_ylabel('Ref Table ay') + ax2.set_title('Acceleration in Y') + plt.tight_layout() + plt.show() # Also double check that they aren't exactly the same for the reference stars. assert np.any(np.not_equal(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig])) return msc +def test_MosaicToRef_hst_me(): + """ + Test Casey's issue with 'me' not getting propogated + from the input starlists to the output table. -def make_fake_starlists_shifts(): - N_stars = 200 - x = np.random.rand(N_stars) * 1000 - y = np.random.rand(N_stars) * 1000 - m = (np.random.rand(N_stars) * 8) + 9 + Use data from MB10-364 microlensing target for the test. + """ + # Target RA and Dec (MOA data download) + # ra = '17:57:05.401' + # dec = '-34:27:05.01' - sdx = np.argsort(m) - x = x[sdx] - y = y[sdx] - m = m[sdx] + # Load up a Gaia catalog (queried around the RA/Dec above) + my_gaia = Table.read('mb10364_data/my_gaia.fits') + my_gaia['me'] = 0.01 - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + # Gather the list of starlists. For first pass, don't modify the starlists. + # Loop through the observations and read them in, in prep for alignment with Gaia + epochs = [2011.83, 2012.73, 2013.81] + starlist_names = ['mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', + 'mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', + 'mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] - # Save original positions as reference (1st) list. - fmt = '{0:10s} {1:5.2f} 2015.0 {2:9.4f} {3:9.4f} 0 0 0 0\n' - _out = open('random_0.lis', 'w') - for ii in range(N_stars): - _out.write(fmt.format(name[ii], m[ii], x[ii], y[ii])) - _out.close() + list_of_starlists = [] + # Just using the F606W filters first. + for ee in range(len(starlist_names)): + lis = starlists.StarList.from_lis_file(starlist_names[ee]) - ########## - # Shifts - ########## - # Make 4 new starlists with different shifts. - shifts = [[ 6.5, 10.1], - [100.3, 50.5], - [-30.0,-100.7], - [250.0,-250.0]] + # # Add additive error term. MAYBE YOU DON'T NEED THIS + # lis['xe'] = np.hypot(lis['xe'], 0.01) # Adding 0.01 pix (0.1 mas) in quadrature. + # lis['ye'] = np.hypot(lis['ye'], 0.01) - for ss in range(len(shifts)): - xnew = x - shifts[ss][0] - ynew = y - shifts[ss][1] + lis['t'] = epochs[ee] - # Perturb with small errors (0.1 pix) - xnew += np.random.randn(N_stars) * 0.1 - ynew += np.random.randn(N_stars) * 0.1 + # Lets dump the faint stars. + idx = np.where(lis['m'] < 20.0)[0] + lis = lis[idx] - mnew = m + np.random.randn(N_stars) * 0.05 + list_of_starlists.append(lis) - _out = open('random_shift_{0:d}.lis'.format(ss+1), 'w') - for ii in range(N_stars): - _out.write(fmt.format(name[ii], mnew[ii], xnew[ii], ynew[ii])) - _out.close() + msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, + dr_tol=[0.1], dm_tol=[5], + outlier_tol=[None], mag_lim=[13, 21], + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}], + motion_models=['Empty', 'Fixed'], + use_ref_new=False, + update_ref_orig=False, + mag_trans=False, + trans_weighting='both,std', + init_guess_mode='miracle', verbose=False) + msc.fit() - return shifts + assert 'me' in msc.ref_table.colnames + return -def make_fake_starlists_poly1(seed=-1): - # If seed >=0, then set random seed to that value - if seed >= 0: - np.random.seed(seed=seed) - - N_stars = 200 +def test_bootstrap(): + """ + Test to make sure calc_bootstrap_error() call is working + properly (e.g., only called when user calls calc_bootstrap_error, + n_boot param for calc_bootstrap_error only, boot_epochs_min working, + etc.) + """ + # Read in starlists for MosaicToRef + ref = Table.read('ref_vel.lis', format='ascii') + list1 = Table.read('E.lis', format='ascii') + list2 = Table.read('F.lis', format='ascii') - x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) - y0 = np.random.rand(N_stars) * 10.0 # arcsec - x0e = np.random.randn(N_stars) * 5.0e-4 # arcsec - y0e = np.random.randn(N_stars) * 5.0e-4 # arcsec - m0 = (np.random.rand(N_stars) * 8) + 9 # mag - m0e = np.random.randn(N_stars) * 0.05 # mag - t0 = np.ones(N_stars) * 2019.5 + list1 = starlists.StarList.from_table(list1) + list2 = starlists.StarList.from_table(list2) + + # Set parameters for alignment + transModel = transforms.PolyTransform + trans_args = {'order':2} + N_loop = 1 + dr_tol = 0.08 + dm_tol = 99 + outlier_tol = None + mag_lim = None + ref_mag_lim = None + trans_weighting = 'both,var' + mag_trans = False - # Make all the errors positive - x0e = np.abs(x0e) - y0e = np.abs(y0e) - m0e = np.abs(m0e) - - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + n_boot = 15 + boot_epochs_min=-1 - # Make an StarList - lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, t0], - names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', 't0')) - - sdx = np.argsort(m0) - lis = lis[sdx] + # Run FLYSTAR, no bootstraps yet! + match1 = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, + dm_tol=dm_tol, outlier_tol=outlier_tol, + trans_class=transModel, + trans_args=trans_args, + mag_trans=mag_trans, + mag_lim=mag_lim, + ref_mag_lim=ref_mag_lim, + trans_weighting=trans_weighting, + motion_models=['Linear'], + use_ref_new=False, + update_ref_orig=False, + init_guess_mode='name', + verbose=False) + match1.fit() - # Save original positions as reference (1st) list - # in a StarList format (with velocities). - lis.write('random_ref.fits', overwrite=True) + # Make sure no bootstrap columns exist + assert 'xe_boot' not in match1.ref_table.keys() + assert 'ye_boot' not in match1.ref_table.keys() + assert 'vxe_boot' not in match1.ref_table.keys() + assert 'vye_boot' not in match1.ref_table.keys() - ########## - # Shifts - ########## - # Make 4 new starlists with different shifts. - times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] - xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], - [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], - [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], - [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], - [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], - [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], - [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], - [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] - mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] - - # Convert into pixels (undistorted) with the following info. - scale = 0.01 # arcsec / pix - shift = [1.0, 1.0] # pix + # Run bootstrap: no boot_epochs_min + match1.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min) + # Make sure columns exist, and none of them are nan values + assert np.sum(np.isnan(match1.ref_table['xe_boot'])) == 0 + assert np.sum(np.isnan(match1.ref_table['ye_boot'])) == 0 + assert np.sum(np.isnan(match1.ref_table['vx_err_boot'])) == 0 + assert np.sum(np.isnan(match1.ref_table['vy_err_boot'])) == 0 - for ss in range(len(times)): - dt = times[ss] - lis['t0'] - - x = lis['x0'] - y = lis['y0'] - t = np.ones(N_stars) * times[ss] + # Test 2: make sure boot_epochs_min is working + # Eliminate some rows to list2, so some stars are only in 1 epoch. + # Rerun align. Some stars should only be detected in 1 epoch + list3 = list2[0:60] - # Convert into pixels - xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) - yp = (y / scale) + shift[1] - xpe = lis['x0_err'] / scale - ype = lis['y0_err'] / scale + match2 = align.MosaicToRef(ref, [list1, list3], iters=N_loop, dr_tol=dr_tol, + dm_tol=dm_tol, outlier_tol=outlier_tol, + trans_class=transModel, + trans_args=trans_args, + mag_trans=mag_trans, + mag_lim=mag_lim, + ref_mag_lim=ref_mag_lim, + trans_weighting=trans_weighting, + motion_models=['Linear'], + use_ref_new=False, + update_ref_orig=False, + init_guess_mode='name', + verbose=False) + match2.fit() - # Distort the positions - trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) - xd, yd = trans.evaluate(xp, yp) - md = trans.evaluate_mag(lis['m0']) + # Now run_calc_bootstrap_error, with boot_epochs_min engaged + boot_epochs_min2 = 2 + match2.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min2) - # Perturb with small errors (0.1 pix) - xd += np.random.randn(N_stars) * 0.1 - yd += np.random.randn(N_stars) * 0.1 - md += np.random.randn(N_stars) * 0.02 - xde = xpe - yde = ype - mde = lis['m0_err'] + # Make sure boot_epochs_min cut worked as intended + out = match2.ref_table + bad = np.where( (out['n_detect'] == 1) & (out['use_in_trans'] == False) ) + good = np.where(out['n_detect'] == 2) - # Save the new list as a starlist. - new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], - names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + # Some stars must exist in both "good" and "bad" criteria, + # otherwise this test isn't as useful as intended. + assert len(bad[0]) > 0 + assert len(good[0]) > 0 - new_lis.write('random_{0:d}.fits'.format(ss), overwrite=True) + # For "good" stars: all bootstrap vals should be present + assert np.sum(~np.isfinite(out['xe_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['ye_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['vx_err_boot'][good])) == 0 + assert np.sum(~np.isfinite(out['vy_err_boot'][good])) == 0 - return (xy_trans,mag_trans) + # For "bad" stars, all bootstrap vals should be nans + assert np.sum(np.isfinite(out['xe_boot'][bad])) == 0 + assert np.sum(np.isfinite(out['ye_boot'][bad])) == 0 + assert np.sum(np.isfinite(out['vx_err_boot'][bad])) == 0 + assert np.sum(np.isfinite(out['vy_err_boot'][bad])) == 0 -def make_fake_starlists_poly0_vel(seed=-1): - # If seed >=0, then set random seed to that value - if seed >= 0: - np.random.seed(seed=seed) - - N_stars = 200 + return - x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) - y0 = np.random.rand(N_stars) * 10.0 # arcsec - x0e = np.ones(N_stars) * 1.0e-4 # arcsec - y0e = np.ones(N_stars) * 1.0e-4 # arcsec - vx = np.random.randn(N_stars) * 5.0 # mas / yr - vy = np.random.randn(N_stars) * 5.0 # mas / yr - vxe = np.ones(N_stars) * 0.05 # mas / yr - vye = np.ones(N_stars) * 0.05 # mas / yr - m0 = (np.random.rand(N_stars) * 8) + 9 # mag - m0e = np.random.randn(N_stars) * 0.05 # mag - t0 = np.ones(N_stars) * 2019.5 - - # Make all the errors positive - x0e = np.abs(x0e) - y0e = np.abs(y0e) - m0e = np.abs(m0e) - vxe = np.abs(vxe) - vye = np.abs(vye) +def test_calc_vel_in_bootstrap(): + """ + Check calc_vel_in_bootstrap performance in calc_bootstrap_errors() - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + Only calculate velocity bootstrap (e.g., bootstrap over epochs and + calculating proper motions) if calc_vel_in_bootstrap=True. - # Make an StarList - lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], - names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', - 'vx', 'vx_err', 'vy', 'vy_err', 't0')) + """ + import copy + + # Define match parameters + ref = Table.read('ref_vel.lis', format='ascii') + + list1 = Table.read('E.lis', format='ascii') + list2 = Table.read('F.lis', format='ascii') + + list1 = starlists.StarList.from_table(list1) + list2 = starlists.StarList.from_table(list2) + + # Set parameters for alignment + transModel = transforms.PolyTransform + trans_args = {'order':2} + N_loop = 1 + dr_tol = 0.08 + dm_tol = 99 + outlier_tol = None + mag_lim = None + ref_mag_lim = None + trans_weighting = 'both,var' + mag_trans = False + + n_boot = 15 + boot_epochs_min=-1 + + # Run match + match = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, + dm_tol=dm_tol, outlier_tol=outlier_tol, + trans_class=transModel, + trans_args=trans_args, + mag_trans=mag_trans, + mag_lim=mag_lim, + ref_mag_lim=ref_mag_lim, + trans_weighting=trans_weighting, + motion_models=['Linear'], + use_ref_new=False, + update_ref_orig=False, + init_guess_mode='name', + verbose=False) + match.fit() + + # Make 2 copies of match object: one to test + # each case of calc_vel_in_bootstrap + match_vel = copy.deepcopy(match) + + # Run calc_bootstrap_error function with calc_vel_in_bootstrap=True. + # Make sure bootstrap velocity errors are calculated and valid + n_boot = 50 + match_vel.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=True) + + assert 'xe_boot' in match_vel.ref_table.keys() + assert np.sum(np.isnan(match_vel.ref_table['xe_boot'])) == 0 + assert 'vx_err_boot' in match_vel.ref_table.keys() + assert np.sum(np.isnan(match_vel.ref_table['vx_err_boot'])) == 0 + + # Run without calc_vel_in_bootstrap, make sure velocities are NOT calculated + match.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=False) + + assert 'xe_boot' in match.ref_table.keys() + assert np.sum(np.isnan(match.ref_table['xe_boot'])) == 0 + assert 'vx_err_boot' not in match.ref_table.keys() - sdx = np.argsort(m0) - lis = lis[sdx] + return - # Save original positions as reference (1st) list - # in a StarList format (with velocities). - lis.write('random_vel_ref.fits', overwrite=True) +def test_transform_xym(): + """ + Test to make sure transforms are being done to mags only + if mag_trans = True. This can cause subtle bugs + otherwise + """ + #---Align 1: self.mag_Trans = False---# + ref = Table.read('ref_vel.lis', format='ascii') + list1 = Table.read('E.lis', format='ascii') + list2 = Table.read('F.lis', format='ascii') + + list1 = starlists.StarList.from_table(list1) + list2 = starlists.StarList.from_table(list2) + + # Set parameters for alignment + transModel = transforms.PolyTransform + trans_args = {'order':2} + N_loop = 1 + dr_tol = 0.08 + dm_tol = 99 + outlier_tol = None + mag_lim = None + ref_mag_lim = None + trans_weighting = 'both,var' + n_boot = 15 + + mag_trans = False + + # Run FLYSTAR, with bootstraps + match1 = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, + dm_tol=dm_tol, outlier_tol=outlier_tol, + trans_class=transModel, + trans_args=trans_args, + mag_trans=mag_trans, + mag_lim=mag_lim, + ref_mag_lim=ref_mag_lim, + trans_weighting=trans_weighting, + motion_models=['Fixed'], + use_ref_new=False, + update_ref_orig=False, + init_guess_mode='name', + verbose=False) + + match1.fit() + match1.calc_bootstrap_errors(n_boot=n_boot) + + # Make sure all transformations have mag_offset = 0 + trans_list = match1.trans_list + + for ii in trans_list: + assert ii.mag_offset == 0 + + # Check that no mag transformation has been applied to m col in ref_table + tab1 = match1.ref_table + assert np.all(tab1['m'] == tab1['m_orig']) - ########## - # Propogate to new times and distort. - ########## - # Make 4 new starlists with different epochs and transformations. - times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] - xy_trans = [[[ 6.5], [ 10.1]], - [[100.3], [ 50.5]], - [[ 0.0], [ 0.0]], - [[250.0], [-250.0]], - [[ 50.0], [ -31.0]], - [[ 78.0], [ 45.0]], - [[-13.0], [ 150]], - [[ 94.0], [-182.0]]] - mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] + # Check me_boost == 0 or really small (should be the case + # since we don't transform mags) + assert np.isclose(np.max(tab1['me_boot']), 0, rtol=10**-5) + print('Done mag_trans = False case') - # Convert into pixels (undistorted) with the following info. - scale = 0.01 # arcsec / pix - shift = [1.0, 1.0] # pix + #---Align 2: self.mag_Trans = True---# + # Repeat, this time with mag_trans = False + mag_trans = True + match2 = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, + dm_tol=dm_tol, outlier_tol=outlier_tol, + trans_class=transModel, + trans_args=trans_args, + mag_trans=mag_trans, + mag_lim=mag_lim, + ref_mag_lim=ref_mag_lim, + trans_weighting=trans_weighting, + motion_models=['Fixed'], + use_ref_new=False, + update_ref_orig=False, + init_guess_mode='name', + verbose=False) + + match2.fit() + match2.calc_bootstrap_errors(n_boot=n_boot) + + + # Make sure all transformations have correct mag offset + trans_list2 = match2.trans_list + + for ii in trans_list2: + assert ii.mag_offset > 20 + + # Make sure final table mags have transform applied (i.e, + tab2 = match2.ref_table + assert np.all(tab2['m'] != tab2['m_orig']) - for ss in range(len(times)): - dt = times[ss] - lis['t0'] - - x = lis['x0'] + (lis['vx']/1e3) * dt - y = lis['y0'] + (lis['vy']/1e3) * dt - t = np.ones(N_stars) * times[ss] + # Check me_boost > 0 + assert np.min(tab2['me_boot']) > 10**-3 - # Convert into pixels - xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) - yp = (y / scale) + shift[1] - xpe = lis['x0_err'] / scale - ype = lis['y0_err'] / scale + print('Done mag_trans = True case') + + return - # Distort the positions - trans = transforms.PolyTransform(0, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) - xd, yd = trans.evaluate(xp, yp) - md = trans.evaluate_mag(lis['m0']) +def test_MosaicToRef_mag_bug(): + """ + Bug found by Tuan Do on 2020-04-12. + """ + make_fake_starlists_poly1_vel() - # Perturb with small errors (0.1 pix) - xd += np.random.randn(N_stars) * xpe - yd += np.random.randn(N_stars) * ype - md += np.random.randn(N_stars) * 0.02 - xde = xpe - yde = ype - mde = lis['m0_err'] + ref_list = starlists.StarList.read('random_vel_0.fits') + lists = [ref_list] - # Save the new list as a starlist. - new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], - names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + msc = align.MosaicToRef(ref_list, lists, + mag_trans=True, + iters=1, + dr_tol=[0.2], dm_tol=[1], + outlier_tol=None, + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}], + motion_models=['Fixed'], + use_ref_new=False, + update_ref_orig=False, + verbose=True) - new_lis.write('random_vel_p0_{0:d}.fits'.format(ss), overwrite=True) + msc.fit() - return (xy_trans, mag_trans) + out_tab = msc.ref_table + # The issue is that in the initial guess with + # mag_trans = True + # somehow the transformed magnitudes are nan. + # This causes zero matches to occur. + assert len(out_tab) == len(ref_list) -def make_fake_starlists_poly1_vel(seed=-1): - # If seed >=0, then set random seed to that value - if seed >= 0: - np.random.seed(seed=seed) - - N_stars = 200 + return - x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) - y0 = np.random.rand(N_stars) * 10.0 # arcsec - x0e = np.ones(N_stars) * 1.0e-4 # arcsec - y0e = np.ones(N_stars) * 1.0e-4 # arcsec - vx = np.random.randn(N_stars) * 5.0 # mas / yr - vy = np.random.randn(N_stars) * 5.0 # mas / yr - vxe = np.ones(N_stars) * 0.05 # mas / yr - vye = np.ones(N_stars) * 0.05 # mas / yr - m0 = (np.random.rand(N_stars) * 8) + 9 # mag - m0e = np.random.randn(N_stars) * 0.05 # mag - t0 = np.ones(N_stars) * 2019.5 +def test_masked_cols(): + """ + Test to make sure analysis.prepare_gaia_for_flystar + produces an astropy.table.Table, NOT a masked column + table. MosaicToRef cannot handle masked column tables. - # Make all the errors positive - x0e = np.abs(x0e) - y0e = np.abs(y0e) - m0e = np.abs(m0e) - vxe = np.abs(vxe) - vye = np.abs(vye) - - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + Also make sure this example works, since we use it for the examples + jupyter notebook. + """ + # Get gaia reference stars using analysis.py + # around a test location. + # target = 'ob150029' + ra = '17:59:46.60' + dec = '-28:38:41.8' - # Make an StarList - lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], - names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', - 'vx', 'vx_err', 'vy', 'vy_err', 't0')) - - sdx = np.argsort(m0) - lis = lis[sdx] + # Coordinates are arcsecs offset +x to the East. + targets_dict = { + 'ob150029': [0.0, 0.0], + 'S005': [1.1416, 3.7405], + 'S002': [-4.421, 0.027] + } - # Save original positions as reference (1st) list - # in a StarList format (with velocities). - lis.write('random_vel_ref.fits', overwrite=True) - - ########## - # Propogate to new times and distort. - ########## - # Make 4 new starlists with different epochs and transformations. - times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] - xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], - [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], - [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.000]], - [[250.0, 1.01, 2e-5], [-250.0, 1e-5, 0.98]], - [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], - [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], - [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], - [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] - mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] + # Get gaia catalog stars. Note that this produces a masked column table + search_rad = 10.0 # arcsec + gaia = analysis.query_gaia(ra, dec, search_radius=search_rad) + my_gaia = analysis.prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=targets_dict) - # Convert into pixels (undistorted) with the following info. - scale = 0.01 # arcsec / pix - shift = [1.0, 1.0] # pix - - for ss in range(len(times)): - dt = times[ss] - lis['t0'] - - x = lis['x0'] + (lis['vx']/1e3) * dt - y = lis['y0'] + (lis['vy']/1e3) * dt - t = np.ones(N_stars) * times[ss] + assert isinstance(my_gaia, Table) - # Convert into pixels - xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) - yp = (y / scale) + shift[1] - xpe = lis['x0_err'] / scale - ype = lis['y0_err'] / scale + # Let's make sure the entire align runs, just to be safe - # Distort the positions - trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) - xd, yd = trans.evaluate(xp, yp) - md = trans.evaluate_mag(lis['m0']) + # Get starlists to align to gaia + epochs = ['15jun07','16jul14', '17may21'] - # Perturb with small errors (0.1 mas) - xd += np.random.randn(N_stars) * xpe - yd += np.random.randn(N_stars) * ype - md += np.random.randn(N_stars) * 0.02 - xde = xpe - yde = ype - mde = lis['m0_err'] + list_of_starlists = [] - # Save the new list as a starlist. - new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], - names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + for ee in range(len(epochs)): + lis_file = 'mag' + epochs[ee] + '_ob150029_kp_rms_named.lis' + lis = starlists.StarList.from_lis_file(lis_file) + list_of_starlists.append(lis) - new_lis.write('random_vel_{0:d}.fits'.format(ss), overwrite=True) + # Run the align + msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=2, + dr_tol=[0.2, 0.1], dm_tol=[1, 1], + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}, {'order': 1}], + motion_models=['Linear'], + use_ref_new=False, + update_ref_orig=False, + mag_trans=True, + init_guess_mode='name', verbose=True) - return (xy_trans, mag_trans) + msc.fit() + return -def make_fake_starlists_poly1_acc(seed=-1): - # If seed >=0, then set random seed to that value - if seed >= 0: - np.random.seed(seed=seed) - +def make_fake_starlists_shifts(): N_stars = 200 + x = np.random.rand(N_stars) * 1000 + y = np.random.rand(N_stars) * 1000 + m = (np.random.rand(N_stars) * 8) + 9 - x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) - y0 = np.random.rand(N_stars) * 10.0 # arcsec - x0e = np.ones(N_stars) * 1.0e-4 # arcsec - y0e = np.ones(N_stars) * 1.0e-4 # arcsec - vx = np.random.randn(N_stars) * 5.0 # mas / yr - vy = np.random.randn(N_stars) * 5.0 # mas / yr - vxe = np.ones(N_stars) * 0.1 # mas / yr - vye = np.ones(N_stars) * 0.1 # mas / yr - ax = np.random.randn(N_stars) * 0.5 # mas / yr^2 - ay = np.random.randn(N_stars) * 0.5 # mas / yr^2 - axe = np.ones(N_stars) * 0.01 # mas / yr^2 - aye = np.ones(N_stars) * 0.01 # mas / yr^2 - m0 = (np.random.rand(N_stars) * 8) + 9 # mag - m0e = np.random.randn(N_stars) * 0.05 # mag - t0 = np.ones(N_stars) * 2019.5 + sdx = np.argsort(m) + x = x[sdx] + y = y[sdx] + m = m[sdx] - # Make all the errors positive - x0e = np.abs(x0e) - y0e = np.abs(y0e) - m0e = np.abs(m0e) - vxe = np.abs(vxe) - vye = np.abs(vye) - axe = np.abs(axe) - aye = np.abs(aye) - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - # Make an StarList - lis = starlists.StarList([name, m0, m0e, - x0, x0e, y0, y0e, - vx, vxe, vy, vye, - ax, axe, ay, aye, - t0], - names = ('name', 'm0', 'm0_err', - 'x0', 'x0_err', 'y0', 'y0_err', - 'vx0', 'vx0_err', 'vy0', 'vy0_err', - 'ax', 'ax_err', 'ay', 'ay_err', - 't0')) - - sdx = np.argsort(m0) - lis = lis[sdx] + # Save original positions as reference (1st) list. + fmt = '{0:10s} {1:5.2f} 2015.0 {2:9.4f} {3:9.4f} 0 0 0 0\n' + _out = open('random_0.lis', 'w') + for ii in range(N_stars): + _out.write(fmt.format(name[ii], m[ii], x[ii], y[ii])) + _out.close() + - # Save original positions as reference (1st) list - # in a StarList format (with velocities). - lis.write('random_acc_ref.fits', overwrite=True) - ########## - # Propogate to new times and distort. + # Shifts ########## - # Make 4 new starlists with different epochs and transformations. - times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] - xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], - [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], - [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.000]], - [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], - [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], - [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], - [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], - [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] - mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] - - # Convert into pixels (undistorted) with the following info. - scale = 0.01 # arcsec / pix - shift = [1.0, 1.0] # pix - - for ss in range(len(times)): - dt = times[ss] - lis['t0'] - - x = lis['x0'] + (lis['vx0']/1e3) * dt + 0.5*(lis['ax']/1e3) * dt**2 - y = lis['y0'] + (lis['vy0']/1e3) * dt + 0.5*(lis['ay']/1e3) * dt**2 - t = np.ones(N_stars) * times[ss] - - # Convert into pixels - xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) - yp = (y / scale) + shift[1] - xpe = lis['x0_err'] / scale - ype = lis['y0_err'] / scale + # Make 4 new starlists with different shifts. + shifts = [[ 6.5, 10.1], + [100.3, 50.5], + [-30.0,-100.7], + [250.0,-250.0]] - # Distort the positions - trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) - xd, yd = trans.evaluate(xp, yp) - md = trans.evaluate_mag(lis['m0']) + for ss in range(len(shifts)): + xnew = x - shifts[ss][0] + ynew = y - shifts[ss][1] # Perturb with small errors (0.1 pix) - xd += np.random.randn(N_stars) * xpe - yd += np.random.randn(N_stars) * ype - md += np.random.randn(N_stars) * 0.02 - xde = xpe - yde = ype - mde = lis['m0_err'] + xnew += np.random.randn(N_stars) * 0.1 + ynew += np.random.randn(N_stars) * 0.1 - # Save the new list as a starlist. - new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], - names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) + mnew = m + np.random.randn(N_stars) * 0.05 - new_lis.write('random_acc_{0:d}.fits'.format(ss), overwrite=True) + _out = open('random_shift_{0:d}.lis'.format(ss+1), 'w') + for ii in range(N_stars): + _out.write(fmt.format(name[ii], mnew[ii], xnew[ii], ynew[ii])) + _out.close() - return (xy_trans, mag_trans) - -def make_fake_starlists_poly1_par(seed=-1): + return shifts + +def make_fake_starlists_poly1(seed=-1): # If seed >=0, then set random seed to that value if seed >= 0: np.random.seed(seed=seed) @@ -916,12 +984,6 @@ def make_fake_starlists_poly1_par(seed=-1): y0 = np.random.rand(N_stars) * 10.0 # arcsec x0e = np.random.randn(N_stars) * 5.0e-4 # arcsec y0e = np.random.randn(N_stars) * 5.0e-4 # arcsec - vx = np.random.randn(N_stars) * 5.0 # mas / yr - vy = np.random.randn(N_stars) * 5.0 # mas / yr - vxe = np.random.randn(N_stars) * 0.1 # mas / yr - vye = np.random.randn(N_stars) * 0.1 # mas / yr - pi = np.random.randn(N_stars) * 0.5 # mas - pie = np.random.randn(N_stars) * 0.01 # mas m0 = (np.random.rand(N_stars) * 8) + 9 # mag m0e = np.random.randn(N_stars) * 0.05 # mag t0 = np.ones(N_stars) * 2019.5 @@ -929,65 +991,45 @@ def make_fake_starlists_poly1_par(seed=-1): # Make all the errors positive x0e = np.abs(x0e) y0e = np.abs(y0e) - m0e = np.abs(m0e) - vxe = np.abs(vxe) - vye = np.abs(vye) - pie = np.abs(pie) - - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - - # Make an StarList - lis = starlists.StarList([name, m0, m0e, - x0, x0e, y0, y0e, - vx, vxe, vy, vye, - pi, pie, - t0], - names = ('name', 'm0', 'm0_err', - 'x0', 'x0_err', 'y0', 'y0_err', - 'vx', 'vx_err', 'vy', 'vy_err', - 'pi', 'pi_err', - 't0')) + m0e = np.abs(m0e) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + + # Make an StarList + lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, t0], + names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', 't0')) sdx = np.argsort(m0) lis = lis[sdx] # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('random_par_ref.fits', overwrite=True) - + lis.write('random_ref.fits', overwrite=True) + ########## - # Propogate to new times and distort. + # Shifts ########## - # Make 4 new starlists with different epochs and transformations. - '''times = [2018.5, 2019.5, 2020.5, 2021.5] - xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], - [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], - [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], - [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]]] - mag_trans = [0.1, 0.4, 0.0, -0.3]''' - + # Make 4 new starlists with different shifts. times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], - [[ 50.0, 1.00, 0.0], [ -31.0, 0.0, 1.000]], - [[ 78.0, 1.00, 0.0 ], [ 45.0, 0.0, 1.00]], - [[-13.0, 1.00, 0.0], [ 150, 0.0, 1.00]], - [[ 94.0, 1.00, 0.0], [-182.0, 0.0, 1.00]]] - mag_trans = [0.1, 0.4, 0.0, -0.3, 0.0, 0.0, 0.0, 0.0] - + [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], + [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], + [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], + [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] + # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix shift = [1.0, 1.0] # pix - + for ss in range(len(times)): dt = times[ss] - lis['t0'] - par_mod = motion_model.Parallax(pa=0,ra=18.0, dec=-30.0) - par_mod_dat = par_mod.get_batch_pos_at_time(dt+lis['t0'], x0=lis['x0'],vx=lis['vx']/1e3, pi=lis['pi'], - y0=lis['y0'], vy=lis['vy']/1e3, t0=lis['t0']) - x,y = par_mod_dat[0], par_mod_dat[1] + x = lis['x0'] + y = lis['y0'] t = np.ones(N_stars) * times[ss] # Convert into pixels @@ -1013,431 +1055,411 @@ def make_fake_starlists_poly1_par(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_par_{0:d}.fits'.format(ss), overwrite=True) - - return (xy_trans, mag_trans) - - -def test_MosaicToRef_hst_me(): - """ - Test Casey's issue with 'me' not getting propogated - from the input starlists to the output table. - - Use data from MB10-364 microlensing target for the test. - """ - # Target RA and Dec (MOA data download) - # ra = '17:57:05.401' - # dec = '-34:27:05.01' - - # Load up a Gaia catalog (queried around the RA/Dec above) - my_gaia = Table.read('mb10364_data/my_gaia.fits') - my_gaia['me'] = 0.01 - - # Gather the list of starlists. For first pass, don't modify the starlists. - # Loop through the observations and read them in, in prep for alignment with Gaia - epochs = [2011.83, 2012.73, 2013.81] - starlist_names = ['mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', - 'mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', - 'mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] - - list_of_starlists = [] - - # Just using the F606W filters first. - for ee in range(len(starlist_names)): - lis = starlists.StarList.from_lis_file(starlist_names[ee]) - - # # Add additive error term. MAYBE YOU DON'T NEED THIS - # lis['xe'] = np.hypot(lis['xe'], 0.01) # Adding 0.01 pix (0.1 mas) in quadrature. - # lis['ye'] = np.hypot(lis['ye'], 0.01) - - lis['t'] = epochs[ee] - - # Lets dump the faint stars. - idx = np.where(lis['m'] < 20.0)[0] - lis = lis[idx] - - list_of_starlists.append(lis) - - msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, - dr_tol=[0.1], dm_tol=[5], - outlier_tol=[None], mag_lim=[13, 21], - trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}], - motion_models=['Empty', 'Fixed'], - use_ref_new=False, - update_ref_orig=False, - mag_trans=False, - trans_weighting='both,std', - init_guess_mode='miracle', verbose=False) - msc.fit() - - assert 'me' in msc.ref_table.colnames - return + new_lis.write('random_{0:d}.fits'.format(ss), overwrite=True) -def test_bootstrap(): - """ - Test to make sure calc_bootstrap_error() call is working - properly (e.g., only called when user calls calc_bootstrap_error, - n_boot param for calc_bootstrap_error only, boot_epochs_min working, - etc.) - """ - # Read in starlists for MosaicToRef - ref = Table.read('ref_vel.lis', format='ascii') - list1 = Table.read('E.lis', format='ascii') - list2 = Table.read('F.lis', format='ascii') + return (xy_trans,mag_trans) - list1 = starlists.StarList.from_table(list1) - list2 = starlists.StarList.from_table(list2) +def make_fake_starlists_poly0_vel(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) - # Set parameters for alignment - transModel = transforms.PolyTransform - trans_args = {'order':2} - N_loop = 1 - dr_tol = 0.08 - dm_tol = 99 - outlier_tol = None - mag_lim = None - ref_mag_lim = None - trans_weighting = 'both,var' - mag_trans = False - - n_boot = 15 - boot_epochs_min=-1 - - # Run FLYSTAR, no bootstraps yet! - match1 = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, - dm_tol=dm_tol, outlier_tol=outlier_tol, - trans_class=transModel, - trans_args=trans_args, - mag_trans=mag_trans, - mag_lim=mag_lim, - ref_mag_lim=ref_mag_lim, - trans_weighting=trans_weighting, - motion_models=['Linear'], - use_ref_new=False, - update_ref_orig=False, - init_guess_mode='name', - verbose=False) - match1.fit() - - # Make sure no bootstrap columns exist - assert 'xe_boot' not in match1.ref_table.keys() - assert 'ye_boot' not in match1.ref_table.keys() - assert 'vxe_boot' not in match1.ref_table.keys() - assert 'vye_boot' not in match1.ref_table.keys() - - # Run bootstrap: no boot_epochs_min - match1.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min) - # Make sure columns exist, and none of them are nan values - assert np.sum(np.isnan(match1.ref_table['xe_boot'])) == 0 - assert np.sum(np.isnan(match1.ref_table['ye_boot'])) == 0 - assert np.sum(np.isnan(match1.ref_table['vx_err_boot'])) == 0 - assert np.sum(np.isnan(match1.ref_table['vy_err_boot'])) == 0 - - # Test 2: make sure boot_epochs_min is working - # Eliminate some rows to list2, so some stars are only in 1 epoch. - # Rerun align. Some stars should only be detected in 1 epoch - list3 = list2[0:60] - - match2 = align.MosaicToRef(ref, [list1, list3], iters=N_loop, dr_tol=dr_tol, - dm_tol=dm_tol, outlier_tol=outlier_tol, - trans_class=transModel, - trans_args=trans_args, - mag_trans=mag_trans, - mag_lim=mag_lim, - ref_mag_lim=ref_mag_lim, - trans_weighting=trans_weighting, - motion_models=['Linear'], - use_ref_new=False, - update_ref_orig=False, - init_guess_mode='name', - verbose=False) - match2.fit() - - # Now run_calc_bootstrap_error, with boot_epochs_min engaged - boot_epochs_min2 = 2 - match2.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min2) - - # Make sure boot_epochs_min cut worked as intended - out = match2.ref_table - bad = np.where( (out['n_detect'] == 1) & (out['use_in_trans'] == False) ) - good = np.where(out['n_detect'] == 2) - - # Some stars must exist in both "good" and "bad" criteria, - # otherwise this test isn't as useful as intended. - assert len(bad[0]) > 0 - assert len(good[0]) > 0 + N_stars = 200 - # For "good" stars: all bootstrap vals should be present - assert np.sum(~np.isfinite(out['xe_boot'][good])) == 0 - assert np.sum(~np.isfinite(out['ye_boot'][good])) == 0 - assert np.sum(~np.isfinite(out['vx_err_boot'][good])) == 0 - assert np.sum(~np.isfinite(out['vy_err_boot'][good])) == 0 + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.ones(N_stars) * 1.0e-4 # arcsec + y0e = np.ones(N_stars) * 1.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.ones(N_stars) * 0.05 # mas / yr + vye = np.ones(N_stars) * 0.05 # mas / yr + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 - # For "bad" stars, all bootstrap vals should be nans - assert np.sum(np.isfinite(out['xe_boot'][bad])) == 0 - assert np.sum(np.isfinite(out['ye_boot'][bad])) == 0 - assert np.sum(np.isfinite(out['vx_err_boot'][bad])) == 0 - assert np.sum(np.isfinite(out['vy_err_boot'][bad])) == 0 + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - return + # Make an StarList + lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], + names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', + 'vx', 'vx_err', 'vy', 'vy_err', 't0')) + + sdx = np.argsort(m0) + lis = lis[sdx] -def test_calc_vel_in_bootstrap(): - """ - Check calc_vel_in_bootstrap performance in calc_bootstrap_errors() + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_vel_ref.fits', overwrite=True) - Only calculate velocity bootstrap (e.g., bootstrap over epochs and - calculating proper motions) if calc_vel_in_bootstrap=True. + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5], [ 10.1]], + [[100.3], [ 50.5]], + [[ 0.0], [ 0.0]], + [[250.0], [-250.0]], + [[ 50.0], [ -31.0]], + [[ 78.0], [ 45.0]], + [[-13.0], [ 150]], + [[ 94.0], [-182.0]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] - """ - import copy + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + x = lis['x0'] + (lis['vx']/1e3) * dt + y = lis['y0'] + (lis['vy']/1e3) * dt + t = np.ones(N_stars) * times[ss] - # Define match parameters - ref = Table.read('ref_vel.lis', format='ascii') + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale - list1 = Table.read('E.lis', format='ascii') - list2 = Table.read('F.lis', format='ascii') + # Distort the positions + trans = transforms.PolyTransform(0, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) - list1 = starlists.StarList.from_table(list1) - list2 = starlists.StarList.from_table(list2) - - # Set parameters for alignment - transModel = transforms.PolyTransform - trans_args = {'order':2} - N_loop = 1 - dr_tol = 0.08 - dm_tol = 99 - outlier_tol = None - mag_lim = None - ref_mag_lim = None - trans_weighting = 'both,var' - mag_trans = False + # Perturb with small errors (0.1 pix) + xd += np.random.randn(N_stars) * xpe + yd += np.random.randn(N_stars) * ype + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] - n_boot = 15 - boot_epochs_min=-1 + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - # Run match - match = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, - dm_tol=dm_tol, outlier_tol=outlier_tol, - trans_class=transModel, - trans_args=trans_args, - mag_trans=mag_trans, - mag_lim=mag_lim, - ref_mag_lim=ref_mag_lim, - trans_weighting=trans_weighting, - motion_models=['Linear'], - use_ref_new=False, - update_ref_orig=False, - init_guess_mode='name', - verbose=False) - match.fit() + new_lis.write('random_vel_p0_{0:d}.fits'.format(ss), overwrite=True) - # Make 2 copies of match object: one to test - # each case of calc_vel_in_bootstrap - match_vel = copy.deepcopy(match) + return (xy_trans, mag_trans) - # Run calc_bootstrap_error function with calc_vel_in_bootstrap=True. - # Make sure bootstrap velocity errors are calculated and valid - n_boot = 50 - match_vel.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=True) - assert 'xe_boot' in match_vel.ref_table.keys() - assert np.sum(np.isnan(match_vel.ref_table['xe_boot'])) == 0 - assert 'vx_err_boot' in match_vel.ref_table.keys() - assert np.sum(np.isnan(match_vel.ref_table['vx_err_boot'])) == 0 +def make_fake_starlists_poly1_vel(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) + + N_stars = 200 - # Run without calc_vel_in_bootstrap, make sure velocities are NOT calculated - match.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=False) + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.ones(N_stars) * 1.0e-4 # arcsec + y0e = np.ones(N_stars) * 1.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.ones(N_stars) * 0.05 # mas / yr + vye = np.ones(N_stars) * 0.05 # mas / yr + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 - assert 'xe_boot' in match.ref_table.keys() - assert np.sum(np.isnan(match.ref_table['xe_boot'])) == 0 - assert 'vx_err_boot' not in match.ref_table.keys() + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) - return - -def test_transform_xym(): - """ - Test to make sure transforms are being done to mags only - if mag_trans = True. This can cause subtle bugs - otherwise - """ - #---Align 1: self.mag_Trans = False---# - ref = Table.read('ref_vel.lis', format='ascii') - list1 = Table.read('E.lis', format='ascii') - list2 = Table.read('F.lis', format='ascii') + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - list1 = starlists.StarList.from_table(list1) - list2 = starlists.StarList.from_table(list2) + # Make an StarList + lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], + names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', + 'vx', 'vx_err', 'vy', 'vy_err', 't0')) - # Set parameters for alignment - transModel = transforms.PolyTransform - trans_args = {'order':2} - N_loop = 1 - dr_tol = 0.08 - dm_tol = 99 - outlier_tol = None - mag_lim = None - ref_mag_lim = None - trans_weighting = 'both,var' - n_boot = 15 + sdx = np.argsort(m0) + lis = lis[sdx] - mag_trans = False + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_vel_ref.fits', overwrite=True) + + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.000]], + [[250.0, 1.01, 2e-5], [-250.0, 1e-5, 0.98]], + [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], + [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], + [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], + [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] - # Run FLYSTAR, with bootstraps - match1 = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, - dm_tol=dm_tol, outlier_tol=outlier_tol, - trans_class=transModel, - trans_args=trans_args, - mag_trans=mag_trans, - mag_lim=mag_lim, - ref_mag_lim=ref_mag_lim, - trans_weighting=trans_weighting, - motion_models=['Fixed'], - use_ref_new=False, - update_ref_orig=False, - init_guess_mode='name', - verbose=False) + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + x = lis['x0'] + (lis['vx']/1e3) * dt + y = lis['y0'] + (lis['vy']/1e3) * dt + t = np.ones(N_stars) * times[ss] - match1.fit() - match1.calc_bootstrap_errors(n_boot=n_boot) + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale - # Make sure all transformations have mag_offset = 0 - trans_list = match1.trans_list + # Distort the positions + trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) - for ii in trans_list: - assert ii.mag_offset == 0 + # Perturb with small errors (0.1 mas) + xd += np.random.randn(N_stars) * xpe + yd += np.random.randn(N_stars) * ype + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] - # Check that no mag transformation has been applied to m col in ref_table - tab1 = match1.ref_table - assert np.all(tab1['m'] == tab1['m_orig']) - - # Check me_boost == 0 or really small (should be the case - # since we don't transform mags) - assert np.isclose(np.max(tab1['me_boot']), 0, rtol=10**-5) - print('Done mag_trans = False case') + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - #---Align 2: self.mag_Trans = True---# - # Repeat, this time with mag_trans = False - mag_trans = True - match2 = align.MosaicToRef(ref, [list1, list2], iters=N_loop, dr_tol=dr_tol, - dm_tol=dm_tol, outlier_tol=outlier_tol, - trans_class=transModel, - trans_args=trans_args, - mag_trans=mag_trans, - mag_lim=mag_lim, - ref_mag_lim=ref_mag_lim, - trans_weighting=trans_weighting, - default_motion_model='Fixed', - use_ref_new=False, - update_ref_orig=False, - init_guess_mode='name', - verbose=False) + new_lis.write('random_vel_{0:d}.fits'.format(ss), overwrite=True) - match2.fit() - match2.calc_bootstrap_errors(n_boot=n_boot) + return (xy_trans, mag_trans) +def make_fake_starlists_poly1_acc(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) + + N_stars = 200 - # Make sure all transformations have correct mag offset - trans_list2 = match2.trans_list + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.ones(N_stars) * 1.0e-4 # arcsec + y0e = np.ones(N_stars) * 1.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.ones(N_stars) * 0.1 # mas / yr + vye = np.ones(N_stars) * 0.1 # mas / yr + ax = np.random.randn(N_stars) * 0.5 # mas / yr^2 + ay = np.random.randn(N_stars) * 0.5 # mas / yr^2 + axe = np.ones(N_stars) * 0.01 # mas / yr^2 + aye = np.ones(N_stars) * 0.01 # mas / yr^2 + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 - for ii in trans_list2: - assert ii.mag_offset > 20 + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) + axe = np.abs(axe) + aye = np.abs(aye) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - # Make sure final table mags have transform applied (i.e, - tab2 = match2.ref_table - assert np.all(tab2['m'] != tab2['m_orig']) + # Make an StarList + lis = starlists.StarList([name, m0, m0e, + x0, x0e, y0, y0e, + vx, vxe, vy, vye, + ax, axe, ay, aye, + t0], + names = ('name', 'm0', 'm0_err', + 'x0', 'x0_err', 'y0', 'y0_err', + 'vx0', 'vx0_err', 'vy0', 'vy0_err', + 'ax', 'ax_err', 'ay', 'ay_err', + 't0')) - # Check me_boost > 0 - assert np.min(tab2['me_boot']) > 10**-3 + sdx = np.argsort(m0) + lis = lis[sdx] - print('Done mag_trans = True case') - - return + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_acc_ref.fits', overwrite=True) + + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.000]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], + [[ 50.0, 1.01, 1e-5], [ -31.0, 1e-5, 1.000]], + [[ 78.0, 0.98, 0.0 ], [ 45.0, 9e-6, 1.001]], + [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], + [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] -def test_MosaicToRef_mag_bug(): - """ - Bug found by Tuan Do on 2020-04-12. - """ - make_fake_starlists_poly1_vel() + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + x = lis['x0'] + (lis['vx0']/1e3) * dt + 0.5*(lis['ax']/1e3) * dt**2 + y = lis['y0'] + (lis['vy0']/1e3) * dt + 0.5*(lis['ay']/1e3) * dt**2 + t = np.ones(N_stars) * times[ss] - ref_list = starlists.StarList.read('random_vel_0.fits') - lists = [ref_list] + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale - msc = align.MosaicToRef(ref_list, lists, - mag_trans=True, - iters=1, - dr_tol=[0.2], dm_tol=[1], - outlier_tol=None, - trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}], - motion_models=['Fixed'], - use_ref_new=False, - update_ref_orig=False, - verbose=True) + # Distort the positions + trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) - msc.fit() + # Perturb with small errors (0.1 pix) + xd += np.random.randn(N_stars) * xpe + yd += np.random.randn(N_stars) * ype + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] - out_tab = msc.ref_table + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - # The issue is that in the initial guess with - # mag_trans = True - # somehow the transformed magnitudes are nan. - # This causes zero matches to occur. - assert len(out_tab) == len(ref_list) + new_lis.write('random_acc_{0:d}.fits'.format(ss), overwrite=True) - return + return (xy_trans, mag_trans) + +def make_fake_starlists_poly1_par(seed=-1): + # If seed >=0, then set random seed to that value + if seed >= 0: + np.random.seed(seed=seed) + + N_stars = 200 -def test_masked_cols(): - """ - Test to make sure analysis.prepare_gaia_for_flystar - produces an astropy.table.Table, NOT a masked column - table. MosaicToRef cannot handle masked column tables. + x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) + y0 = np.random.rand(N_stars) * 10.0 # arcsec + x0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + y0e = np.random.randn(N_stars) * 5.0e-4 # arcsec + vx = np.random.randn(N_stars) * 5.0 # mas / yr + vy = np.random.randn(N_stars) * 5.0 # mas / yr + vxe = np.random.randn(N_stars) * 0.1 # mas / yr + vye = np.random.randn(N_stars) * 0.1 # mas / yr + pi = np.random.randn(N_stars) * 0.5 # mas + pie = np.random.randn(N_stars) * 0.01 # mas + m0 = (np.random.rand(N_stars) * 8) + 9 # mag + m0e = np.random.randn(N_stars) * 0.05 # mag + t0 = np.ones(N_stars) * 2019.5 - Also make sure this example works, since we use it for the examples - jupyter notebook. - """ - # Get gaia reference stars using analysis.py - # around a test location. - # target = 'ob150029' - ra = '17:59:46.60' - dec = '-28:38:41.8' + # Make all the errors positive + x0e = np.abs(x0e) + y0e = np.abs(y0e) + m0e = np.abs(m0e) + vxe = np.abs(vxe) + vye = np.abs(vye) + pie = np.abs(pie) + + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] - # Coordinates are arcsecs offset +x to the East. - targets_dict = { - 'ob150029': [0.0, 0.0], - 'S005': [1.1416, 3.7405], - 'S002': [-4.421, 0.027] - } + # Make an StarList + lis = starlists.StarList([name, m0, m0e, + x0, x0e, y0, y0e, + vx, vxe, vy, vye, + pi, pie, + t0], + names = ('name', 'm0', 'm0_err', + 'x0', 'x0_err', 'y0', 'y0_err', + 'vx', 'vx_err', 'vy', 'vy_err', + 'pi', 'pi_err', + 't0')) + + sdx = np.argsort(m0) + lis = lis[sdx] - # Get gaia catalog stars. Note that this produces a masked column table - search_rad = 10.0 # arcsec - gaia = analysis.query_gaia(ra, dec, search_radius=search_rad) - my_gaia = analysis.prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=targets_dict) + # Save original positions as reference (1st) list + # in a StarList format (with velocities). + lis.write('random_par_ref.fits', overwrite=True) + + ########## + # Propogate to new times and distort. + ########## + # Make 4 new starlists with different epochs and transformations. + '''times = [2018.5, 2019.5, 2020.5, 2021.5] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]]] + mag_trans = [0.1, 0.4, 0.0, -0.3]''' + + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] + xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], + [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], + [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], + [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]], + [[ 50.0, 1.00, 0.0], [ -31.0, 0.0, 1.000]], + [[ 78.0, 1.00, 0.0 ], [ 45.0, 0.0, 1.00]], + [[-13.0, 1.00, 0.0], [ 150, 0.0, 1.00]], + [[ 94.0, 1.00, 0.0], [-182.0, 0.0, 1.00]]] + mag_trans = [0.1, 0.4, 0.0, -0.3, 0.0, 0.0, 0.0, 0.0] - assert isinstance(my_gaia, Table) + # Convert into pixels (undistorted) with the following info. + scale = 0.01 # arcsec / pix + shift = [1.0, 1.0] # pix + + for ss in range(len(times)): + dt = times[ss] - lis['t0'] + + par_mod = motion_model.Parallax(pa=0,ra=18.0, dec=-30.0) + par_mod_dat = par_mod.get_batch_pos_at_time(dt+lis['t0'], x0=lis['x0'],vx=lis['vx']/1e3, pi=lis['pi'], + y0=lis['y0'], vy=lis['vy']/1e3, t0=lis['t0']) + x,y = par_mod_dat[0], par_mod_dat[1] + t = np.ones(N_stars) * times[ss] - # Let's make sure the entire align runs, just to be safe + # Convert into pixels + xp = (x / -scale) + shift[0] # -1 from switching to increasing to West (right) + yp = (y / scale) + shift[1] + xpe = lis['x0_err'] / scale + ype = lis['y0_err'] / scale - # Get starlists to align to gaia - epochs = ['15jun07','16jul14', '17may21'] + # Distort the positions + trans = transforms.PolyTransform(1, xy_trans[ss][0], xy_trans[ss][1], mag_offset=mag_trans[ss]) + xd, yd = trans.evaluate(xp, yp) + md = trans.evaluate_mag(lis['m0']) - list_of_starlists = [] + # Perturb with small errors (0.1 pix) + xd += np.random.randn(N_stars) * 0.1 + yd += np.random.randn(N_stars) * 0.1 + md += np.random.randn(N_stars) * 0.02 + xde = xpe + yde = ype + mde = lis['m0_err'] - for ee in range(len(epochs)): - lis_file = 'mag' + epochs[ee] + '_ob150029_kp_rms_named.lis' - lis = starlists.StarList.from_lis_file(lis_file) - list_of_starlists.append(lis) + # Save the new list as a starlist. + new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], + names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - # Run the align - msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=2, - dr_tol=[0.2, 0.1], dm_tol=[1, 1], - trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}, {'order': 1}], - motion_models=['Linear'], - use_ref_new=False, - update_ref_orig=False, - mag_trans=True, - init_guess_mode='name', verbose=True) + new_lis.write('random_par_{0:d}.fits'.format(ss), overwrite=True) - msc.fit() - return + return (xy_trans, mag_trans) \ No newline at end of file diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 5580daf..4475970 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -401,7 +401,7 @@ def test_fit_motion_models(): return -def test_fit_velocities_2epoch(): +def test_fit_motion_model_2epoch(): ########## # Test: only 2 epoch2 ########## From a685011dd0ba2205bc8cf3e3c185532f95a628e5 Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Sun, 21 Dec 2025 13:32:53 +0800 Subject: [PATCH 27/94] Merge with upstream mm_rework branch --- flystar/analysis.py | 7 +- flystar/motion_model.py | 9 +- flystar/parallax.py | 186 +----------------------------------- flystar/tests/test_align.py | 8 +- 4 files changed, 16 insertions(+), 194 deletions(-) diff --git a/flystar/analysis.py b/flystar/analysis.py index ceca739..55094e5 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -433,7 +433,8 @@ def startable_subset(tab, idx, mag_trans=True, mag_trans_orig=False): combined astrometry + uncombined photometry table. """ # Multiples: ['x', 'y', 'm', 'name_in_list', 'xe', 'ye', 'me', 't', - # 'x_orig', 'y_orig', 'm_orig', 'xe_orig', 'ye_orig', 'me_orig', 'used_in_trans'] + # 'x_orig', 'y_orig', 'm_orig', 'xe_orig', 'ye_orig', 'me_orig', 'used_in_trans', + # 'xe_boot','ye_boot','me_boot'] # Single: ['name', 'm0', 'm0_err', 'use_in_trans', 'ref_orig', 'n_detect', # 'x0', 'vx', 'y0', 'vy', 'x0_err', 'vx_err', 'y0_err', 'vy_err', 't0'] # Don't include n_vfit @@ -441,8 +442,8 @@ def startable_subset(tab, idx, mag_trans=True, mag_trans_orig=False): new_tab = copy.deepcopy(tab) #new_tab.remove_column('n_fit') new_tab.remove_column('n_detect') - for col in ['x','y','m','xe','ye','me','t','x_orig','y_orig','m_orig', - 'xe_orig','ye_orig','me_orig','used_in_trans']: + for col in ['x','y','m','name_in_list','xe','ye','me','t','x_orig','y_orig','m_orig', + 'xe_orig','ye_orig','me_orig','used_in_trans','xe_boot','ye_boot','me_boot']: new_tab[col] = tab[col][:,idx] new_tab.combine_lists('m', weights_col='me', sigma=3, ismag=True) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 1ba2dcf..9a79c89 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -24,6 +24,12 @@ class MotionModel(ABC): name = "MotionModel" def __init__(self, *args, **kwargs): + """ + Make a motion model object. This object defines the fit and fixed parameters, + and contains functions to fit the model to data and infer positions at given times. + Each instance corresponds to a given motion model, not an individual star, + and thus the fit values are only input/returned in functions, not stored in the object. + """ return def model_fit(self, dt): @@ -802,8 +808,7 @@ class Parallax(MotionModel): """ Motion model for linear proper motion + parallax - Requires RA, Dec, and PA parameters (degrees) for parallax calculation. - RA, Dec in J2000 + Requires RA and Dec J2000 (degrees) for parallax calculation. Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ diff --git a/flystar/parallax.py b/flystar/parallax.py index 1a6dcf1..a4f0f8c 100755 --- a/flystar/parallax.py +++ b/flystar/parallax.py @@ -84,39 +84,6 @@ def parallax_in_direction(ra, dec, mjd, obsLocation='earth', pa=0.): return pvec -def dparallax_dt_in_direction(ra, dec, mjd, obsLocation='earth'): - """ - R.A. in degrees. (J2000) - Dec. in degrees. (J2000) - MJD - - Equations following MulensModel. - Time derivative --> units are yr^-1 - - """ - # print('parallax_in_direction: len(t) = ', len(mjd)) - # Munge inputs into astropy format. - times = Time(mjd, format='mjd', scale='tdb') - coord = SkyCoord(ra, dec, unit=(units.deg, units.deg)) - - direction = coord.cartesian.xyz.value - north = np.array([0., 0., 1.]) - _east_projected = np.cross(north, direction) / np.linalg.norm(np.cross(north, direction)) - _north_projected = np.cross(direction, _east_projected) / np.linalg.norm(np.cross(direction, _east_projected)) - - obs_posvel = get_observer_barycentric(obsLocation, times, velocity=True)[1] - sun_posvel = get_body_barycentric_posvel('Sun', times)[1] - sun_obs_vel = sun_posvel - obs_posvel - vel = sun_obs_vel.xyz.T.to(units.au / units.year) - - e = np.dot(vel, _east_projected) - n = np.dot(vel, _north_projected) - - dpvec_dt = np.array([e.value, n.value]).T - - return dpvec_dt - - def get_observer_barycentric(body, times, min_ephem_step=1, velocity=False): """ Get the barycentric position of a satellite or other Solar System body @@ -197,155 +164,4 @@ def get_observer_barycentric(body, times, min_ephem_step=1, velocity=False): if velocity: return (obs_pos, obs_vel) else: - return obs_pos - - -def sun_position(mjd, radians=False): - """ - - NAME: - SUNPOS - - PURPOSE: - To compute the RA and Dec of the Sun at a given date. - - INPUTS: - mjd - The modified Julian date of the day (and time), scalar or vector - - OUTPUTS: - ra: - | The right ascension of the sun at that date in DEGREES - | double precision, same number of elements as jd - dec: - The declination of the sun at that date in DEGREES - elong: - Ecliptic longitude of the sun at that date in DEGREES. - obliquity: - the obliquity of the ecliptic, in DEGREES - - OPTIONAL INPUT KEYWORD: - RADIAN [def=False] - If this keyword is set to True, then all output variables - are given in Radians rather than Degrees - - NOTES: - Patrick Wallace (Rutherford Appleton Laboratory, UK) has tested the - accuracy of a C adaptation of the sunpos.pro code and found the - following results. From 1900-2100 SUNPOS gave 7.3 arcsec maximum - error, 2.6 arcsec RMS. Over the shorter interval 1950-2050 the figures - were 6.4 arcsec max, 2.2 arcsec RMS. - - The returned RA and Dec are in the given date's equinox. - - Procedure was extensively revised in May 1996, and the new calling - sequence is incompatible with the old one. - METHOD: - Uses a truncated version of Newcomb's Sun. Adapted from the IDL - routine SUN_POS by CD Pike, which was adapted from a FORTRAN routine - by B. Emerson (RGO). - EXAMPLE: - (1) Find the apparent RA and Dec of the Sun on May 1, 1982 - - | IDL> jdcnv, 1982, 5, 1,0 ,jd ;Find Julian date jd = 2445090.5 - | IDL> sunpos, jd, ra, dec - | IDL> print,adstring(ra,dec,2) - | 02 31 32.61 +14 54 34.9 - - The Astronomical Almanac gives 02 31 32.58 +14 54 34.9 so the error - in SUNPOS for this case is < 0.5". - - (2) Find the apparent RA and Dec of the Sun for every day in 1997 - - | IDL> jdcnv, 1997,1,1,0, jd ;Julian date on Jan 1, 1997 - | IDL> sunpos, jd+ dindgen(365), ra, dec ;RA and Dec for each day - - MODIFICATION HISTORY: - - * Written by Michael R. Greason, STX, 28 October 1988. - * Accept vector arguments, W. Landsman - April,1989 - * Eliminated negative right ascensions - MRG, Hughes STX, 6 May 1992. - * Rewritten using the 1993 Almanac. Keywords added. MRG, HSTX, 10 February 1994. - * Major rewrite, improved accuracy, always return values in degrees - W. Landsman May, 1996 - * Added /RADIAN keyword; W. Landsman; August, 1997 - * Converted to IDL V5.0; W. Landsman; September 1997 - * Converted to python; J. R. Lu; August 2016 - """ - # form time in Julian centuries from 1900.0 - t_obj = Time(mjd, format='mjd') - t = (t_obj.jd - 2415020.0) / 36525.0 - - # form sun's mean longitude - l = (279.696678 + ((36000.768925 * t) % 360.0)) * 3600.0 - - # allow for ellipticity of the orbit (equation of centre) - # using the Earth's mean anomaly ME - me = 358.475844 + ((35999.049750 * t) % 360.0) - ellcor = (6910.1 - 17.2 * t) * np.sin(np.radians(me)) + 72.3 * np.sin( - np.radians(2.0 * me)) - l = l + ellcor - - # allow for the Venus perturbations using the mean anomaly of Venus MV - mv = 212.603219 + ((58517.803875 * t) % 360.0) - vencorr = 4.8 * np.cos(np.radians(299.1017 + mv - me)) + \ - 5.5 * np.cos(np.radians(148.3133 + 2.0 * mv - 2.0 * me)) + \ - 2.5 * np.cos(np.radians(315.9433 + 2.0 * mv - 3.0 * me)) + \ - 1.6 * np.cos(np.radians(345.2533 + 3.0 * mv - 4.0 * me)) + \ - 1.0 * np.cos(np.radians(318.1500 + 3.0 * mv - 5.0 * me)) - l += vencorr - - # Allow for the Mars perturbations using the mean anomaly of Mars MM - mm = 319.529425 + ((19139.858500 * t) % 360.0) - marscorr = 2.0 * np.cos(np.radians(343.8883 - 2.0 * mm + 2.0 * me)) + \ - 1.8 * np.cos(np.radians(200.4017 - 2.0 * mm + me)) - l += marscorr - - # Allow for the Jupiter perturbations using the mean anomaly of Jupiter MJ - mj = 225.328328 + ((3034.6920239 * t) % 360.0) - jupcorr = 7.2 * np.cos(np.radians(179.5317 - mj + me)) + \ - 2.6 * np.cos(np.radians(263.2167 - mj)) + \ - 2.7 * np.cos(np.radians(87.1450 - 2.0 * mj + 2.0 * me)) + \ - 1.6 * np.cos(np.radians(109.4933 - 2.0 * mj + me)) - l += jupcorr - - # Allow for the Moons perturbations using the mean elongation of - # the Moon from the Sun D - d = 350.7376814 + ((445267.11422 * t) % 360.0) - mooncorr = 6.5 * np.sin(np.radians(d)) - l += mooncorr - - # Allow for long period terms - longterm = + 6.4 * np.sin(np.radians(231.19 + 20.20 * t)) - l += longterm - l = (l + 2592000.0) % 1296000.0 - longmed = l / 3600.0 - - # Allow for Aberration - l -= 20.5 - - # Allow for Nutation using the longitude of the Moons mean node OMEGA - omega = 259.183275 - ((1934.142008 * t) % 360.0) - l -= 17.2 * np.sin(np.radians(omega)) - - # Form the True Obliquity - oblt = 23.452294 - 0.0130125 * t + ( - 9.2 * np.cos(np.radians(omega))) / 3600.0 - - # Form Right Ascension and Declination - l = l / 3600.0 - l_rad = np.radians(l) - oblt_rad = np.radians(oblt) - ra = np.arctan2(np.sin(l_rad) * np.cos(oblt_rad), np.cos(l_rad)) - - if (len(ra) > 1): - neg = np.where(ra < 0.0)[0] - ra[neg] = ra[neg] + 2.0 * math.pi - - dec = np.arcsin(np.sin(l_rad) * np.sin(oblt_rad)) - - if radians: - oblt = oblt_rad - longmed = np.radians(longmed) - else: - ra = np.degrees(ra) - dec = np.degrees(dec) - - return ra, dec, longmed, oblt + return obs_pos \ No newline at end of file diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 080ded3..ad082cb 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -319,8 +319,8 @@ def test_MosaicToRef_p0_vel(): # The velocities should be almost the same (but not as close as before) # as the input velocities since update_ref == True. assert (msc.ref_table['name']==ref_list['name']).all() - np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], atol=1e-2) - np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], atol=1e-2) + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-1, atol=3e-4) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-1, atol=3e-4) # Also double check that they aren't exactly the same for the reference stars. #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) @@ -385,8 +385,8 @@ def test_MosaicToRef_vel(): # The velocities should be almost the same (but not as close as before) # as the input velocities since update_ref == True. assert (msc.ref_table['name']==ref_list['name']).all() - np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], atol=1e-2) - np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], atol=1e-2) + np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-1, atol=3e-4) + np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-1, atol=3e-4) # Also double check that they aren't exactly the same for the reference stars. #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) From f75a55febe8bca3a61bb792571d821069a716cd2 Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Mon, 22 Dec 2025 23:48:07 +0800 Subject: [PATCH 28/94] Added Motion Model Example Notebook; Revert Acceleration Velocity Names --- .../examples/motion_model_example.ipynb | 1363 +++++++++++++++++ flystar/motion_model.py | 94 +- flystar/startables.py | 39 +- flystar/tests/test_align.py | 10 +- 4 files changed, 1458 insertions(+), 48 deletions(-) create mode 100644 docs/flystar/examples/motion_model_example.ipynb diff --git a/docs/flystar/examples/motion_model_example.ipynb b/docs/flystar/examples/motion_model_example.ipynb new file mode 100644 index 0000000..413b616 --- /dev/null +++ b/docs/flystar/examples/motion_model_example.ipynb @@ -0,0 +1,1363 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "333cd262", + "metadata": {}, + "source": [ + "# Motion Model Examples" + ] + }, + { + "cell_type": "markdown", + "id": "9251851e", + "metadata": {}, + "source": [ + "# Table of Contents" + ] + }, + { + "cell_type": "markdown", + "id": "1e4364ed", + "metadata": {}, + "source": [ + "# Table of Contents\n", + "- [1. Motion Model](#1-motion-model)\n", + " - [1.1. Example: Linear Model Fit](#11-example-linear-model-fit)\n", + " - [1.2. Example: Acceleration Model Fit](#12-example-acceleration-model-fit)\n", + " - [1.3. Example: Parallax Model Fit](#13-example-parallax-model-fit)\n", + "- [2. Fit Motion Model in StarTable](#2-fit-motion-model-in-startable)\n", + " - [2.1. Example: Default Fitting](#21-example-default-fitting)\n", + " - [2.2 Example: Specify Motion Models](#22-example-specify-motion-models)\n", + " - [2.3. Example: Specify the `motion_model_input` Column](#23-example-specify-the-motion_model_input-column)\n", + " - [2.4. Example: Infer Positions](#24-example-infer-positions)\n", + " - [2.5. Speed Test](#25-speed-test)\n" + ] + }, + { + "cell_type": "markdown", + "id": "4bd92a9d", + "metadata": {}, + "source": [ + "# 1. Motion Model" + ] + }, + { + "cell_type": "markdown", + "id": "0d084c38", + "metadata": {}, + "source": [ + "Summary of currently implemented motion models" + ] + }, + { + "cell_type": "markdown", + "id": "faddd6d8", + "metadata": {}, + "source": [ + "| Motion Model | n_params | params | fixed_params | model | Description |\n", + "|--------------|----------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n", + "| Empty | 0 | NA | NA | $x(t) = $ NaN / fill_value
$x_e(t) = $ Inf | |\n", + "| Fixed | 1 | $x_0$
$y_0$ | NA | $x(t) = $ np.average($x$, weights=$x_{wt}$) | $x_{wt} = 1/xe^2$ if weighting='var'
$x_{wt} = 1/\\|xe\\|$ if weighting = 'std' |\n", + "| Linear | 2 | $x_0, v_x$
$y_0, v_y$ | optional: $t_0 =$ np.average($t, 1/\\sqrt{x_e^2 + y_e^2}$) | $x(t) = x_0 + v_x * (t - t_0)$ | |\n", + "| Acceleration | 3 | $x_0, v_{x0}, a_x$
$y_0, v_{y0}, a_y$ | optional: $t_0 =$ np.average($t, 1/\\sqrt{x_e^2 + y_e^2}$) | $x(t) = x_0 + v_{x0} * (t - t_0) + 1/2 * a_x * (t - t_0)^2$ | |\n", + "| Parallax | 3 | $x_0, v_x, pi$
$y_0, v_y$ | required: ra, dec
optional: $t_0 =$ np.average($t, 1/\\sqrt{x_e^2 + y_e^2}$); $pa=0$; obsLocation='earth' | $x(t) = x_0 + v_x * (t - t_0) + pvec * (t - t_0)$ | pvec is the parallax vector calculated based on ra, dec, pa, and obsLocation.
Only supports the same obsLocation for all stars in StarTable.fit_motion_model right now. |" + ] + }, + { + "cell_type": "markdown", + "id": "6fdc98af", + "metadata": {}, + "source": [ + "Examples on using `flystar.MotionModel`:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "51c963a1", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "markdown", + "id": "473b0674", + "metadata": {}, + "source": [ + "Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ce4edb88", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from flystar import motion_model\n", + "from flystar.startables import StarTable\n", + "from flystar.motion_model import Empty, Fixed, Linear, Acceleration, Parallax" + ] + }, + { + "cell_type": "markdown", + "id": "8c0e8559", + "metadata": {}, + "source": [ + "Prepare data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "86b6319d", + "metadata": {}, + "outputs": [], + "source": [ + "t = np.array([0, 1., 2.2, 3.5, 5.]) + 2025.0\n", + "x = np.array([0., 0.5, 2.1, 3.2, 8.0])\n", + "y = np.array([10.2, 8.5, 9.1, 10.5, 13.0])\n", + "xe = np.array([0.2, 0.5, 0.3, 0.4, 0.6])\n", + "ye = np.array([0.3, 0.2, 0.5, 0.2, 0.4])\n", + "t_test = np.linspace(2025.0, 2030.0, 100) # Test times for model evaluation" + ] + }, + { + "cell_type": "markdown", + "id": "b1a87102", + "metadata": {}, + "source": [ + "## 1.1. Example: Linear Model Fit" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0926c0a8", + "metadata": {}, + "outputs": [], + "source": [ + "mm = Linear()\n", + "params, param_errs = mm.fit(t, x, y, xe, ye)" + ] + }, + { + "cell_type": "markdown", + "id": "1fad1962", + "metadata": {}, + "source": [ + "Evaluate model at time t:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "840693ae", + "metadata": {}, + "outputs": [], + "source": [ + "x_model, y_model = mm.model(t, params)" + ] + }, + { + "cell_type": "markdown", + "id": "42fbd575", + "metadata": {}, + "source": [ + "Or if uncertainties of parameters is provided at the same time, the model will return the model uncertainties as well:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "8fcbdc5d", + "metadata": {}, + "outputs": [], + "source": [ + "x_model, y_model, xe_model, ye_model = mm.model(t, params, param_errs)" + ] + }, + { + "cell_type": "markdown", + "id": "6f9954ef", + "metadata": {}, + "source": [ + "Note that we did not provide the `fixed_params_dict` parameter in the `model` function, so the MotionModel will use the saved self.fixed_params_dict. One can also specify the fixed_params_dict as:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6752e477", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'t0': np.float64(2027.0454838983064)}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mm.fixed_params_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "eba675c8", + "metadata": {}, + "outputs": [], + "source": [ + "x_model, y_model, xe_model, ye_model = mm.model(t_test, params, param_errs, mm.fixed_params_dict)" + ] + }, + { + "cell_type": "markdown", + "id": "a2acbe90", + "metadata": {}, + "source": [ + "Define a helper function to visualize result" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "7dba325f", + "metadata": {}, + "outputs": [], + "source": [ + "def visualize_fit(t, x, y, xe, ye, x_model, y_model, xe_model, ye_model, mm_name, t_test=None):\n", + " if t_test is None:\n", + " t_test = t\n", + " x = np.atleast_2d(x)\n", + " y = np.atleast_2d(y)\n", + " xe = np.atleast_2d(xe)\n", + " ye = np.atleast_2d(ye)\n", + " x_model = np.atleast_2d(x_model)\n", + " y_model = np.atleast_2d(y_model)\n", + " xe_model = np.atleast_2d(xe_model)\n", + " ye_model = np.atleast_2d(ye_model)\n", + " \n", + " N_cases = x.shape[0]\n", + " fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))\n", + " for i in range(N_cases):\n", + " l0 = ax1.errorbar(t, x[i], yerr=xe[i], fmt='o', color=f'C{i%10}', label='Data')\n", + " l1, = ax1.plot(t_test, x_model[i], label=f'{mm_name} Fit')\n", + " l2 = ax1.fill_between(t_test, x_model[i] - xe_model[i], x_model[i] + xe_model[i], color=f'C{i%10}', alpha=0.3, label='Model Uncertainty')\n", + "\n", + " r0 = ax2.errorbar(t, y[i], yerr=ye[i], fmt='o', color=f'C{i%10}', label='Data')\n", + " r1, = ax2.plot(t_test, y_model[i], label=f'{mm_name} Fit')\n", + " r2 = ax2.fill_between(t_test, y_model[i] - ye_model[i], y_model[i] + ye_model[i], color=f'C{i%10}', alpha=0.3, label='Model Uncertainty')\n", + " ax1.set_xlabel('Time')\n", + " ax1.set_ylabel('X Position')\n", + " ax1.set_title(f'{mm_name} Motion Model Fit')\n", + " ax1.legend(\n", + " [l0, (l1, l2)], \n", + " ['Data', 'Model Fit'],\n", + " )\n", + " \n", + " ax2.set_xlabel('Time')\n", + " ax2.set_ylabel('Y Position')\n", + " ax2.set_title(f'{mm_name} Motion Model Fit')\n", + " ax2.legend(\n", + " [r0, (r1, r2)], \n", + " ['Data', 'Model Fit'],\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "ad03fc67", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAxv5JREFUeJzs3Xd4XOWZ9/HvqMyMymjUe3XvFYyNCcH03ksKfZMlkAQSNhtC9g2YTQJJdsOShEBClmCIQ4nphECAUBI2gHHvXVbvZYpGU895/xAWFpJsSdZYkvX7XJevizlzZs4zltE993nu534spmmaiIiIiIiIiMiwihnpAYiIiIiIiIgci5Rwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREokAJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAqUcMuot2LFCiwWC2vWrOn3nP3792OxWFixYsXRG9gwevfdd7FYLIf8DKeeeioWi4XS0tIhXeOhhx7q871H8u9u+fLlWCwWYmJi2LdvX6/nOzo6SElJwWKxcP311w/bdY/kMx/4Wb377rsDOq+vP5dffjkAFouF5cuXd79m27ZtLF++nP379w96XCIio5FieBfF8OuH7bqK4TLWxI30AESGQ15eHh988AETJ04c6aEcEYfDwaOPPtorMJWXl/Puu++SkpIy5Pd+6KGHyMzM7PXeo+HvLjk5mccee4wf/vCHPY6vWrWKUChEfHz8CI3syN17770sW7asx7GMjAwAPvjgAwoLC7uPb9u2jXvuuYdTTjllyF/KRETGmtEQh4aDYrhiuGK49EUz3HJMsNlsLF68mKysrJEeSr98Pt9hz7nqqqt4//332b17d4/jv//97ykoKGDp0qXDPq7R8Hd31VVX8fjjj2MYRo/jjz76KJdccglWq3WERnbkJk+ezOLFi3v8mTx5MgCLFy/uEaxFRMaj0RCHDkcxvH+K4SKHpoRbjgl9lRcdKHXaunUrX/ziF3E6neTk5HDjjTficrl6vN40TR566CHmzZtHQkICaWlpXH755b1KpN58800uuugiCgsLsdvtTJo0iZtuuonm5uYe5x249rp167j88stJS0sb0N3nM844g6KiIn7/+993HzMMg8cff5zrrruOmJje/8v6/X7uvPNOysrKsFqtFBQU8PWvf5329vbuc0pLS9m6dSvvvfded0nUgbuv/ZVmvf/++5x22mk4HA4SExM58cQTefXVV3ucc6BU8J133uHmm28mMzOTjIwMLr30Umpraw/7eQ+48cYbqaqq4s033+w+tmvXLt5//31uvPHGPl9TWVnJ1VdfTXZ2NjabjenTp/Pzn/+8V8Cvra3lyiuvxOFw4HQ6ueqqq6ivr+/zPdesWcOFF15Ieno6drud+fPn86c//WnAn2OwDi5HW7FiBVdccQUAy5YtO2x5oojIsUIxXDFcMVyOZUq45Zh32WWXMWXKFJ577jm+973v8eSTT/Ltb3+7xzk33XQT3/rWtzj99NN58cUXeeihh9i6dSsnnngiDQ0N3eft3buXJUuW8PDDD/PGG29w11138dFHH3HSSScRCoV6XfvSSy9l0qRJrFq1it/85jeHHWtMTAzXX389TzzxBJFIBIA33niD6upqbrjhhl7nm6bJxRdfzH//939zzTXX8Oqrr3L77bfz+OOPc+qppxIIBAB44YUXmDBhAvPnz+eDDz7ggw8+4IUXXuh3HO+99x6nnnoqLpeLRx99lKeeegqHw8EFF1zAM8880+v8r3zlK8THx/Pkk0/ys5/9jHfffZerr776sJ/3gMmTJ/O5z32ux5eU3//+95SWlnLaaaf1Or+pqYkTTzyRN954gx/+8Ie8/PLLnH766XznO9/hG9/4Rvd5nZ2dnH766bzxxhvcd999rFq1itzcXK666qpe7/nOO++wdOlS2tvb+c1vfsNLL73EvHnzuOqqq44oYBqGQTgc7vGnL+eddx733nsvAL/+9a+7f07nnXfekK8tIjLWKYYrhiuGy5hnioxyjz32mAmYH3/8cb/nlJeXm4D52GOPdR+7++67TcD82c9+1uPcW265xbTb7aZhGKZpmuYHH3xgAubPf/7zHudVVVWZCQkJ5ne/+90+r2kYhhkKhcyKigoTMF966aVe177rrrsG9BnfeecdEzBXrVpl7tu3z7RYLOaf//xn0zRN84orrjBPOeUU0zRN87zzzjNLSkq6X/f666/3+RmfeeYZEzAfeeSR7mMzZ840P//5z/e6dl9/d4sXLzazs7NNj8fTfSwcDpuzZs0yCwsLu//uDvxsbrnllh7v+bOf/cwEzLq6ukN+7gN/T01NTeZjjz1m2mw2s6WlxQyHw2ZeXp65fPly0zRNMykpybzuuuu6X/e9733PBMyPPvqox/vdfPPNpsViMXfu3Gmapmk+/PDDvX42pmmaX/3qV3t95mnTppnz5883Q6FQj3PPP/98My8vz4xEIqZpfvqzeueddw752Q6c19ef3bt3m6ZpmoB59913d79m1apVA3pvEZGxQjFcMVwxXMY7zXDLMe/CCy/s8XjOnDn4/X4aGxsB+POf/4zFYuHqq6/ucQczNzeXuXPn9uhk2djYyNe+9jWKioqIi4sjPj6ekpISALZv397r2pdddtmgx1tWVsYpp5zC73//e1paWnjppZf6Lcl6++23AXo1UbniiitISkrib3/726Cv39HRwUcffcTll19OcnJy9/HY2FiuueYaqqur2blzZ4/X9PV3DFBRUTHg615xxRVYrVb++Mc/8pe//IX6+vp+u5q+/fbbzJgxg0WLFvU4fv3112OaZvffyzvvvIPD4eg1vi996Us9Hu/Zs4cdO3bw5S9/GaDHv4Nzzz2Xurq6Xp95oH7605/y8ccf9/hTVFQ0pPcSERlvFMMHRzFcMVxGH3Upl2PegW6SB9hsNqCrVAmgoaEB0zTJycnp8/UTJkwAusqKzjzzTGpra/nBD37A7NmzSUpKwjAMFi9e3P1+B8vLyxvSmP/lX/6FG264gfvvv5+EhITuLSg+q6Wlhbi4uF7NUiwWC7m5ubS0tAz62m1tbZim2efY8/Pzu697sMP9HQ9EUlISV111Fb///e8pKSnh9NNP7/4i9FktLS19dgD97PhaWlr6/Lnm5ub2eHyg5PA73/kO3/nOd/q85mfX+A3UhAkTOO6444b0WhGR8U4xfHAUwxXDZfRRwi3jXmZmJhaLhX/84x/dQeZgB45t2bKFjRs3smLFCq677rru5/fs2dPve1ssliGN6dJLL+XrX/86P/nJT/jqV79KQkJCn+dlZGQQDodpamrqEbBN06S+vp7jjz9+0NdOS0sjJiaGurq6Xs8daKKSmZk56PcdiBtvvJH//d//ZdOmTfzxj3/s97yMjIwBjS8jI4PVq1f3Ou+zDVcOnH/nnXdy6aWX9nnNqVOnDuxDiIjIUaMY3pNiuGK4jD4qKZdx7/zzz8c0TWpqajjuuON6/Zk9ezbwaeD9bED/7W9/O+xjSkhI4K677uKCCy7g5ptv7ve8A81IVq5c2eP4c889R0dHR49mJTabbUB3q5OSkjjhhBN4/vnne5xvGAYrV66ksLCQKVOmDPYjDciSJUu48cYbueSSS7jkkkv6Pe+0005j27ZtrFu3rsfxJ554AovF0r1n5rJly/B4PLz88ss9znvyySd7PJ46dSqTJ09m48aNff4bOO6443A4HMP0Kfs3lFkFEZHxTDG8J8VwxXAZfTTDLWPG22+/zf79+3sdP/fcc4/ofZcuXcq//uu/csMNN7BmzRpOPvlkkpKSqKur4/3332f27NncfPPNTJs2jYkTJ/K9730P0zRJT0/nlVde6bENxnC6/fbbuf322w95zhlnnMFZZ53FHXfcgdvtZunSpWzatIm7776b+fPnc80113SfO3v2bJ5++mmeeeYZJkyYgN1u7/4i8ln33XcfZ5xxBsuWLeM73/kOVquVhx56iC1btvDUU08N+a7/QDz66KOHPefb3/42TzzxBOeddx7/+Z//SUlJCa+++ioPPfQQN998c/eXiWuvvZb/+Z//4dprr+XHP/4xkydP5i9/+Qt//etfe73nb3/7W8455xzOOussrr/+egoKCmhtbWX79u2sW7eOVatWDftn/axZs2YB8Mgjj+BwOLDb7ZSVlfUq9xMRGWsUw3tTDFcMl/FBCbeMGXfccUefx8vLy4/4vX/729+yePFifvvb3/LQQw9hGAb5+fksXbq0u6lHfHw8r7zyCrfddhs33XQTcXFxnH766bz11lsUFxcf8RiGwmKx8OKLL7J8+XIee+wxfvzjH5OZmck111zDvffe2+NO/j333ENdXR1f/epX8Xg8lJSU9PnlB+Dzn/88b7/9NnfffTfXX389hmEwd+5cXn75Zc4///yj9On6l5WVxT//+U/uvPNO7rzzTtxuNxMmTOBnP/tZjy84iYmJvP3229x2221873vfw2KxcOaZZ/L0009z4okn9njPZcuWsXr1an784x/zrW99i7a2NjIyMpgxYwZXXnnlUflcZWVlPPDAA/ziF7/glFNOIRKJ8Nhjj/XbeEZEZKxQDO9NMVwxXMYHi2ma5kgPQkRERERERORYozXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREomBM78NtGAa1tbU4HA4sFstID0dERGTATNPE4/GQn59PTMz4u/+tGC4iImPV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KCIiIjIIiuEiIjLWqc5HREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVxIz0AERGRsSDRGsf+n5w30sMQERGRMUQz3CIiIiIiIiJRoIRbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYmCuJEegIiIiIiIiEi0JFrj2P+T80bk2prhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYRERERERGJAiXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREokAJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYRERERERGJAiXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREQGyDBMIoY50sOIur///e9ccMEF5OfnY7FYePHFF7ufC4VC3HHHHcyePZukpCTy8/O59tprqa2tHbkBi4iIjFJKuEVERAag3Rfk77ubWLu/daSHEnUdHR3MnTuXBx98sNdzPp+PdevW8YMf/IB169bx/PPPs2vXLi688MIRGKmIiMjoFjfSAxARERnNIobJviYv6yvbqXV1Mq8odaSHFHXnnHMO55xzTp/POZ1O3nzzzR7HfvWrX7Fo0SIqKyspLi4+GkMUEREZE5Rwi4iI9MPlC7G+qo09jV4SrbGk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nztjDNu3b+eLX/zimP+IvJhN17wFg0GA8/YwDXw9sFoz28zE33UlJSXk5ubyxBNPkJmZyTXXXDP5NzYNJmvuRrp2JBIBYMuWLXi9Xnbu3Dn4+++++y5er3fM68xXiuHJUwxPnmJ4chTDk6cYnrxZG8Mn3GbtInbvvfcap9NpXnvttfOOXQgGg4Pvefjhh43T6TTPPPOM2b9/v/nCF75wXqt4n89nNm3aZFauXGmOHTt23nUGWsW/9dZb5nvf+57Zs2ePOXHihHniiSdMeXm5+cxnPjMj9z0ZpmvujDHmW9/6lqmoqDAvvfSSOXz4sPnqV79qiouLTXd397Tf92SYzrkzxpjf/OY3BjANDQ3Tep+TbbrmraOjw7jdbnPLLbeYDz74wBw5csT89//+3016err54IMPZuTeL9R0/sz9n//zf8yuXbvMkSNHzD//8z+brKws80//9E/Tfs+TZTLm7vjx4+bv/u7vzPvvv29Onz5t3nrrLXPTTTeZgoIC09bWNnidrVu3mlWrVpm3337bvP3222blypU6FmwUiuHJUwxPnmJ4chTDk6cYnrzZGsPnVMINDPtr+/btg++xLMts27bNlJaWGrvdbq666iqzf//+wd9/9dVXR7zOyZMnjTHG7Nq1y2zatMk4nU6TmZlpli5darZt22b6+vqm+Y4nz3TNnTH9R2H8t//230xxcbFxOBzmk5/8pDlw4MA03u3kms65M8aYL3zhC+ayyy6bprubOtM5b++995659tprTUFBgXE4HGbz5s3ml7/85TTe7eSazrm75557TEFBgcnIyDCrVq0yjz322DTe6eSbjLlrbm421113nSkuLjbp6emmsrLS3HnnnUOOCunq6jJ33XWXcTgcxuFwmLvuusv09PRM053OPorhyVMMT55ieHIUw5OnGJ682RrDbWcHLyIiIiIiIiKTaE7t4RYRERERERG5WCjhFhEREREREZkCSrhFREREREREpoASbhEREREREZEpoIRbREREREREZAoo4RYRERERERGZAkq4RURERERERKaAEm4RERERERGRKaCEW2See+CBB1izZs1MD0NEREQmSDFc5OJnM8aYmR6EiEwNm8026u9/6Utf4p//+Z+JRCK43e5pGpWIiIiMRTFcZG5Qwi0yh7W2tg7+9xNPPMFf//Vfc+TIkcHXsrKycDqdMzE0ERERGYViuMjcoJJykTmstLR08JfT6cRmsw157aPlaF/+8pe5+eab+bu/+ztKSkpwuVw8+OCDxONx/uzP/oyCggIqKyv5f//v/533Wc3Nzdxxxx3k5+fjdru56aabOHXq1PTesIiIyByhGC4yNyjhFpEhXnnlFVpaWnjjjTf43ve+xwMPPMANN9xAfn4+7777Ll//+tf5+te/TmNjIwDBYJCPf/zj5Obm8sYbb/Dmm2+Sm5vL1q1biUajM3w3IiIi84diuMjFRQm3iAxRUFDA//7f/5ulS5fyla98haVLlxIMBvmLv/gLFi9ezLe//W0yMjL4z//8TwB++tOfkpKSwr/+67+ycuVKli1bxvbt2zlz5gyvvfbazN6MiIjIPKIYLnJxSZvpAYjIxWfFihWkpPz+eVxJSQn19fWDX6empuJ2u2lvbwdg165dHDt2DIfDcd51wuEwx48fn55Bi4iIiGK4yEVGCbeIDJGenn7e1zabbdjXLMsCwLIs1q9fz3/8x38MuVZRUdHUDVRERETOoxgucnFRwi0iF2zdunU88cQTFBcXk5eXN9PDERERkXFSDBeZWtrDLSIX7K677qKwsJCbbrqJ3/3ud5w8eZLXX3+db33rWzQ1Nc308ERERGQEiuEiU0sJt4hcsOzsbN544w2qq6u55ZZbWLZsGV/5ylcIhUJ6Wi4iInIRUwwXmVo2Y4yZ6UGIiIiIiIiIzDVa4RYRERERERGZAkq4RURERERERKaAEm4RERERERGRKaCEW0RERERERGQKKOEWERERERERmQJKuEVERERERESmgBJuERERERERkSmghFtERERERERkCijhFhEREREREZkCSrhFREREREREpoASbhEREREREZEpoIRbREREREREZAr8f8lDKnAFCkkRAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualize_fit(t, x, y, xe, ye, x_model, y_model, xe_model, ye_model, mm.name, t_test)" + ] + }, + { + "cell_type": "markdown", + "id": "98d3e2c4", + "metadata": {}, + "source": [ + "## 1.2. Example: Acceleration Model Fit" + ] + }, + { + "cell_type": "markdown", + "id": "ede486e5", + "metadata": {}, + "source": [ + "Upon further inspection, acceleration model seems to be a better representation of the data" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "0a0d9d1f", + "metadata": {}, + "outputs": [], + "source": [ + "mm = Acceleration()\n", + "params, param_errs = mm.fit(t, x, y, xe, ye)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "b3d63417", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x_model, y_model, xe_model, ye_model = mm.model(t_test, params, param_errs)\n", + "visualize_fit(t, x, y, xe, ye, x_model, y_model, xe_model, ye_model, mm.name, t_test)" + ] + }, + { + "cell_type": "markdown", + "id": "9d1f63b4", + "metadata": {}, + "source": [ + "Moreover, `MotionModel.model` is fully vectorized, and can infer positions of multiple stars at multiple times, and the resulting inferred positions has shape (N_stars, N_times). See the example below:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "d1e406c5", + "metadata": {}, + "outputs": [], + "source": [ + "t = np.array([0, 1., 2.2, 3.5, 5.]) + 2025.0\n", + "\n", + "xs = np.array([\n", + " [0., 0.5, 2.1, 3.2, 8.0],\n", + " [10.0, 8.9, 9.2, 7.4, 7.0],\n", + " [2.5, 6.2, 5.2, 3.2, 5.0]\n", + "])\n", + "\n", + "ys = np.array([\n", + " [10.2, 8.5, 9.1, 10.5, 13.0],\n", + " [8.0, 9.9, 8.2, 7.4, 7.0],\n", + " [5.2, 6.2, 4.7, 3.2, 6.0]\n", + "])\n", + "\n", + "xes = np.array([\n", + " [0.2, 0.5, 0.3, 0.4, 0.6],\n", + " [0.5, 0.2, 0.7, 0.3, 0.2],\n", + " [0.5, 0.7, 0.6, 0.4, 0.3]\n", + "])\n", + "\n", + "yes = np.array([\n", + " [0.3, 0.2, 0.5, 0.2, 0.4],\n", + " [0.2, 0.5, 0.6, 0.4, 0.2],\n", + " [0.4, 0.2, 0.3, 0.4, 0.5]\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "4adebbe8", + "metadata": {}, + "outputs": [], + "source": [ + "params = []\n", + "param_errs = []\n", + "for xi, yi, xei, yei in zip(xs, ys, xes, yes):\n", + " p, pe = mm.fit(t, xi, yi, xei, yei)\n", + " params.append(p)\n", + " param_errs.append(pe)" + ] + }, + { + "cell_type": "markdown", + "id": "4e0424df", + "metadata": {}, + "source": [ + "Once we have the params and param errors, we can infer the model positions at any given time." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "95745baa", + "metadata": {}, + "outputs": [], + "source": [ + "x_model, y_model, xe_model, ye_model = mm.model(t_test, params, param_errs)" + ] + }, + { + "cell_type": "markdown", + "id": "06fdca50", + "metadata": {}, + "source": [ + "The inferred positions should have shape (N_stars, N_times):" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "54206834", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 100)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_model.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "e6a4e42e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XecXHW9+P/Xmd52ZnvNtvRKQoAAAYRQpIMKNq7S1J+K9ypyVVC/V0G9NBU7cPUioBQbiCgXFKQJBJIQAul1s5tsb9P7zPn98ZnZkuwms8nW7Pv5eJzH7sycmflMZrJn3uf9+bzfmq7rOkIIIYQQQgghhBhVhokegBBCCCGEEEIIcSySgFsIIYQQQgghhBgDEnALIYQQQgghhBBjQAJuIYQQQgghhBBiDEjALYQQQgghhBBCjAEJuIUQQgghhBBCiDEgAbcQQgghhBBCCDEGJOAWQgghhBBCCCHGgATcQgghhBBCCCHEGJCAW4y5n/70p2iaxuLFiyd6KH3OOusszjrrrAl7/scee4wf//jHQ96maRq33nrruI4H4KGHHkLTNDRN4+WXXz7odl3XmT17NpqmHfG/3e23385TTz110PUvv/zysM871q699lo0TSMvL49gMHjQ7Y2NjRgMhlF/X47mNWffq7179+a031DbV77yFfbu3YumaTz00EN993njjTe49dZb8Xq9Ix6XEGJqk+P1weR4PZgcr0dGjtcCJOAW4+DXv/41AJs3b+att96a4NFMDoc6gK9evZpPf/rT4zugAfLy8njggQcOuv6VV15h9+7d5OXlHfFjD3cAX758OatXr2b58uVH/NhHw2w2k0wm+f3vf3/QbQ8++OBRvebJ4MEHH2T16tWDti9+8YtUVFSwevVqLr744r5933jjDW677TY5gAsxDcnx+mByvB5MjtdjS47XxyYJuMWYWrduHe+++27fH4ihDgzHgkgkMmqPdcoppzBjxoxRe7yR+uhHP8oTTzyB3+8fdP0DDzzAqaeeSk1Nzag/p9vt5pRTTsHtdo/6Y+fCYrHwgQ98oO/LZpau6zz00EN89KMfnZBxjZbFixdzyimnDNpqamqwWq2ccsoplJSUTPQQhRATTI7XIyfH6/Enx2s5Xk9FEnCLMZU9YN95552sXLmS3/3ud4TD4YP2a25u5v/7//4/qqursVgsVFZWcuWVV9Le3t63j9fr5T//8z+ZOXMmVquV0tJSLrroIrZt29a3Tzwe53vf+x7z58/HarVSUlLCddddR2dn52HHmut96+rquOSSS3jyySc5/vjjsdls3HbbbQD84he/4H3vex+lpaU4nU6WLFnC3XffTSKR6Lv/WWedxTPPPENjY+OgKUNZQ02F2rRpE5dffjkFBQXYbDaWLVvGww8/PGif7JSnxx9/nG9+85tUVlbidrs599xz2b59+2Fff9bHP/5xAB5//PG+63w+H0888QTXX3/9kPfp6enhhhtuoKqqCovFwsyZM/nmN79JLBYb9LpCoRAPP/xw32vOTnUbbrrW008/zamnnorD4SAvL4/zzjuP1atXD9rn1ltvRdM0Nm/ezMc//nE8Hg9lZWVcf/31+Hy+nF/39ddfzxtvvDHo3+qFF16gsbGR6667bsj75PK+AGzbto0LLrgAh8NBcXExn/vc5wgEAkM+5gsvvMA555yD2+3G4XBw2mmn8c9//jPn1zESB05Ru/XWW/nqV78KQH19/SGnLAohji1yvJbj9cDXJcdrOV6L0SMBtxgzkUiExx9/nJNOOonFixdz/fXXEwgE+OMf/zhov+bmZk466ST+/Oc/c9NNN/Hss8/y4x//GI/HQ29vLwCBQIDTTz+d//mf/+G6667jr3/9K/fffz9z586ltbUVgHQ6zeWXX86dd97JVVddxTPPPMOdd97J888/z1lnnXXIs9ojve/69ev56le/yhe/+EWee+45rrjiCgB2797NVVddxW9/+1v+9re/8alPfYrvf//7fPazn+2777333stpp51GeXn5oClDw9m+fTsrV65k8+bN/PSnP+XJJ59k4cKFXHvttdx9990H7f+Nb3yDxsZG/vd//5df/vKX7Ny5k0svvZRUKnWYd0xxu91ceeWVg84eP/744xgMhiHPHEejUVatWsVvfvMbbrrpJp555hk+8YlPcPfdd/OhD32ob7/Vq1djt9u56KKL+l7zvffeO+w4HnvsMS6//HLcbjePP/44DzzwAL29vZx11lm89tprB+1/xRVXMHfuXJ544gluueUWHnvsMb785S/n9JoBzj33XGprawe97gceeID3ve99zJkz56D9c31f2tvbOfPMM9m0aRP33nsvv/3tbwkGg/z7v//7QY/5yCOP8P73vx+3283DDz/MH/7wBwoLCzn//POP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p7xXb28vbrvtNiSTSaTTadx88804fPhwc0+YiIhogWKdTbSwMXAT0bQ9//zzOH78OF566SU88sgjePDBB3HTTTchmUziF7/4Be666y7cddddOHr0KACgUqng3e9+NyKRCF566SW8/PLLiEQiuOGGG6Dr+hyfDRER0fmLdTbR/MDATUTTlkql8A//8A9YvXo1Pv7xj2P16tWoVCr43Oc+h1WrVuH++++Hz+fDf//3fwMAnnjiCciyjG9961u46KKLsHbtWmzZsgVHjhzBiy++OLcnQ0REdB5jnU00P3jm+gCIaOFYt24dZHniOl02m8X69evdnxVFQTqdxuDgIABgx44d2L9/P6LR6JT9qKqKAwcONOegiYiIFiHW2UTzAwM3EU2b1+ud8rMkSafcZts2AMC2bWzcuBH/8i//ctK+WltbG3egREREixzrbKL5gYGbiBrm0ksvxZNPPolMJoNYLDbXh0NERESnwTqbqDE4hpuIGub2229HS0sLbr75ZvzsZz/DoUOHsHXrVtxzzz04duzYXB8eERERjWOdTdQYDNxE1DChUAgvvfQSlixZgltuuQVr167Fxz/+cVSrVV49JyIimkdYZxM1hiSEEHN9EERERERERETnG7ZwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRA/z/gqHPx4dTtRIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualize_fit(t, xs, ys, xes, yes, x_model, y_model, xe_model, ye_model, mm.name, t_test)" + ] + }, + { + "cell_type": "markdown", + "id": "f7ae3e7f", + "metadata": {}, + "source": [ + "## 1.3. Example: Parallax Model Fit" + ] + }, + { + "cell_type": "markdown", + "id": "08eceab5", + "metadata": {}, + "source": [ + "Parallax model requires some fixed parameters: `ra`, `dec`, `pa`, `obsLocation`, and `t0`.\n", + "- `ra` and `dec` are required parameters. \n", + "- `pa = 0` by default\n", + "- `obsLocation = 'earth'` by default\n", + "- `t0 = np.average(t, 1./np.hypot(xe, ye))` by default\n", + "\n", + "We need to provide the fixed parameters in the `fixed_params_dict`:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "018fc13a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 1 of \"dubious year (Note 6)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 2 of \"dubious year (Note 6)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 2 of \"dubious year (Note 3)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 1 of \"dubious year (Note 3)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 1 of \"dubious year (Note 4)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n" + ] + } + ], + "source": [ + "mm = Parallax()\n", + "fixed_params_dict = {'ra': 0., 'dec': 10., 'pa': 0., 'obsLocation': 'earth'}\n", + "params, param_errs = mm.fit(t, x, y, xe, ye, fixed_params_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "73dafb1f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 20 of \"dubious year (Note 6)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 40 of \"dubious year (Note 6)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 40 of \"dubious year (Note 3)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 20 of \"dubious year (Note 3)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 20 of \"dubious year (Note 4)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA8XlJREFUeJzs3Xd8W+W9+PHP0R625b0Sx3Z2QhgJAZKwEigbSqEUKC2zgwu9pS2dtOVCSi+U3tsyyuivLRAobQIUSmm5UEYgrIQsErLjeO8ha2/pnN8fJiYmdmInkiU73/cLvYiOjo6+smU953ue5/k+iqZpGkIIIYQQQgghhEgqXboDEEIIIYQQQgghxiNJuIUQQgghhBBCiBSQhFsIIYQQQgghhEgBSbiFEEIIIYQQQogUkIRbCCGEEEIIIYRIAUm4hRBCCCGEEEKIFJCEWwghhBBCCCGESAFJuIUQQgghhBBCiBSQhFsIIYQQQgghhEgBSbhFxlq2bBmKovTfDAYDEydO5Prrr6e1tTUtMV133XVUVVUN2FZVVcV111036rEsXrwYRVGYPHkymqbt9/g777zT/7NbtmzZiI+/fft27rzzThoaGvZ7bLCfw2jZ+56G+pn/4he/6N9nsNgP1eG858WLF7N48eJh7bfvZ37f29atW7nzzjtRFGXAcx555JFD+v0KIUSqSTt+YNKOXzfo49KOi/FGEm6R8Z544glWr17N66+/zje+8Q2WL1/OqaeeSiAQSHdoaZednU19fT0rV67c77HHH3+cnJycQz729u3bWbp06aCN3e23387f//73Qz724crOzua5557D5/MN2K5pGsuWLTus951ukydPZvXq1fvdpkyZwte//nVWr149YH9pqIUQmU7a8aFJOy7tuLTj458k3CLjzZkzhwULFrBkyRLuuOMOfvSjH1FfX8+LL7542McOhUKHH2AaTZo0iQULFvD4448P2O7z+Xjuuee44oorUvK6U6ZMYe7cuSk59nBcfPHFaJrGihUrBmxfuXIl9fX1KXvfo8FqtbJgwYL9blarlYkTJ7JgwYJ0hyiEECMi7fjQpB2XdlyMf5JwizFn7xdVY2MjAEuXLuWkk04iPz+fnJwc5s2bx2OPPbbf8KyqqiouvPBCXnjhBebOnYvFYmHp0qUAPPzww5x22mkUFxdjt9s5+uij+fWvf00sFhtxfOFwmO9///scd9xxOBwO8vPzWbhwIf/4xz8G7LdixQoUReGhhx4asP2OO+5Ar9fz+uuvD+v1brjhBl544QXcbveAYwNceeWVgz7nvffe48wzzyQ7OxubzcaiRYt4+eWX+x9ftmwZX/rSlwBYsmTJfkPaBhuWFQ6Hue2226iursZkMjFhwgS+9a1vDYgLPv09vPrqq8ybNw+r1crMmTP3O9k4EIfDwSWXXLLfcx5//HFOPvlkpk+fPujzHn/8cY499lgsFgv5+flccskl7NixY7/9li1bxowZMzCbzcyaNYunnnpq0ONFo1F++ctfMnPmTMxmM0VFRVx//fV0d3cP+72MxGeHolVVVbFt2zZWrVrV/ztK1xBBIYQYLmnHB5J2/FPSjks7Ph4Z0h2AECO1Z88eAIqKigBoaGjgxhtvZNKkSQCsWbOGb3/727S2tvJf//VfA567ceNGduzYwc9//nOqq6ux2+0A1NbWctVVV/U3Mps3b+a///u/2blz54gaEIBIJEJvby8/+MEPmDBhAtFolDfeeINLL72UJ554gmuuuQboa0RXrVrF97//fRYsWMD8+fNZuXIlv/zlL/npT3/KWWedNazXu/LKK/ne977H8uXLuemmmwB47LHHuOyyywYdkrVq1SrOOussjjnmGB577DHMZjOPPPIIF110EcuXL+eKK67gggsu4O677+anP/0pDz/8MPPmzQP6rogPRtM0vvCFL/Dmm29y2223ceqpp/Lxxx9zxx139A+lMpvN/ftv3ryZ73//+/zkJz+hpKSEP/3pT3zta19j6tSpnHbaacN631/72tc488wz2bFjB7NmzcLtdvPCCy/wyCOP4HQ699v/nnvu4ac//Slf/vKXueeee3A6ndx5550sXLiQdevWMW3aNKCvkb7++uu5+OKL+c1vfoPH4+HOO+8kEomg0316jVJVVS6++GLeffddfvSjH7Fo0SIaGxu54447WLx4MevXr8dqtQ7rvXxWPB4fcF+n0w147b3+/ve/c9lll+FwOHjkkUcABvychRAiE0k7PpC049KOSzs+zmlCZKgnnnhCA7Q1a9ZosVhM8/l82r/+9S+tqKhIy87O1jo6OvZ7TiKR0GKxmPaLX/xCKygo0FRV7X+ssrJS0+v12q5duw74unuP8dRTT2l6vV7r7e3tf+zaa6/VKisrB+xfWVmpXXvttUMeLx6Pa7FYTPva176mzZ07d8Bj4XBYmzt3rlZdXa1t375dKykp0U4//XQtHo8fMEZN07TTTz9dO+qoo/rjmj9/vqZpmrZt2zYN0N5++21t3bp1GqA98cQT/c9bsGCBVlxcrPl8vgExzpkzR5s4cWL/z+y5557TAO2tt97a77U/+3N49dVXNUD79a9/PWC/Z555RgO0P/zhD/3bKisrNYvFojU2NvZvC4VCWn5+vnbjjTce9H0D2re+9S1NVVWturpa+8EPfqBpmqY9/PDDWlZWlubz+bT/+Z//0QCtvr5e0zRNc7lcmtVq1c4///wBx2pqatLMZrN21VVXaZrW97svLy/X5s2bN+Cz09DQoBmNxgHvefny5RqgPf/88wOOufdn/sgjj/RvO/3007XTTz/9oO/t9NNP14D9bl/5ylc0TdO0O+64Q/vs1/ZRRx01rGMLIcRok3b8wKQdl3Zc06QdPxLIkHKR8RYsWIDRaCQ7O5sLL7yQ0tJSXnnlFUpKSoC++T6f+9zncDgc6PV6jEYj//Vf/4XT6aSrq2vAsY455phBhyl99NFHfP7zn6egoKD/GNdccw2JRILdu3ePOObnnnuOk08+maysLAwGA0ajkccee2y/YU9ms5lnn30Wp9PJvHnz0DSN5cuXo9frR/R6N9xwA+vXr2fLli089thjTJkyZdArzIFAgA8//JDLLruMrKys/u16vZ6rr76alpYWdu3aNeL3u7fYy2crjn7pS1/Cbrfz5ptvDth+3HHH9fdkAFgsFqZPn94/vHA49lY4/fOf/0w8Huexxx7j8ssvH/C+9lq9ejWhUGi/+CoqKjjjjDP649u1axdtbW1cddVVA4Z8VVZWsmjRogHP/de//kVubi4XXXQR8Xi8/3bcccdRWlrK22+/Pez3sq8pU6awbt26Abe77rrrkI4lhBCZQNrxg5N2XNpxMX5Jwi0y3lNPPcW6dev46KOPaGtr4+OPP+bkk08GYO3atZx99tkA/PGPf+T9999n3bp1/OxnPwP2L6ZSVla23/Gbmpo49dRTaW1t5YEHHuDdd99l3bp1PPzww4Me42BeeOEFLr/8ciZMmMDTTz/N6tWrWbduHTfccAPhcHi//adOncqpp55KOBzmK1/5yqAxHsxpp53GtGnT+H//7//x5z//mRtuuGG/ZScAXC4XmqYN+hrl5eUAgw7jOhin04nBYOgfHriXoiiUlpbud8yCgoL9jmE2m0f8s947z+ruu+9m48aNfO1rXxsyPhj8919eXt7/+N7/l5aW7rffZ7d1dnbidrsxmUwYjcYBt46ODnp6ekb0XvayWCzMnz9/wK26uvqQjiWEEJlA2vGDk3Zc2nExfskcbpHxZs2axfz58wd9bMWKFRiNRv71r39hsVj6tw9V+XSwxuvFF18kEAjwwgsvUFlZ2b9906ZNhxTv008/TXV1Nc8888yA14tEIoPu/6c//YmXX36ZE088kYceeogrrriCk046acSve/311/Pzn/8cRVG49tprB90nLy8PnU5He3v7fo+1tbUBUFhYOOLXLigoIB6P093dPaCx1jSNjo4OTjjhhBEfczgqKir43Oc+x9KlS5kxY8Z+V6/3jQ8Y8n3vfc979+vo6Nhvv89uKywspKCggFdffXXQ18zOzh7+GxFCiHFM2vHhkXZc2nExPkkPtxjTFEXBYDAMGLoVCoX485//PKJjwMAiFZqm8cc//vGQYzKZTAMa6Y6Ojv2qmwJs2bKFW265hWuuuYZ3332XY445hiuuuAKXyzXi17322mu56KKL+OEPf8iECRMG3cdut3PSSSfxwgsvDLgKraoqTz/9NBMnTuwfqrf35zGcq9Vnnnkm0HeSsq/nn3+eQCDQ/3gqfP/73+eiiy7i9ttvH3KfhQsXYrVa94uvpaWFlStX9sc3Y8YMysrKWL58+YDquI2NjXzwwQcDnnvhhRfidDpJJBL7XcmeP38+M2bMSOK7HNqh9CgIIUSmkHb8U9KOSzsuxifp4RZj2gUXXMBvf/tbrrrqKr75zW/idDr53//93xFVeDzrrLMwmUx8+ctf5kc/+hHhcJhHH330kBpLoH/JkptvvpnLLruM5uZm7rrrLsrKyqipqenfLxAIcPnll1NdXc0jjzyCyWTi2WefZd68eVx//fUjXp+0vLx8WM+55557OOuss1iyZAk/+MEPMJlMPPLII2zdupXly5f3n2DMmTMHgD/84Q9kZ2djsViorq4edBjZWWedxTnnnMOPf/xjvF4vJ598cn9107lz53L11VeP6L2MxNlnn90/HHEoubm53H777fz0pz/lmmuu4ctf/jJOp5OlS5disVi44447gL4qonfddRdf//rXueSSS/jGN76B2+3mzjvv3G8o2pVXXslf/vIX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2nAhhBi/JOFOgoSqsfSf2xls0NnebUv/uX1Uhpfv64wzzuDYY4/lhRdeAECn0/Hggw+ydetWnnzySVauXMmPfvQjABYtWsT9999PTk4O7e3ttLe384Mf/ADoO5G666672Lx5My+++CL19fVcd911o/pehBBCjI5vfetbPP300/z1r38lOzubjo4OOjo6CIVCQN+w8O9+97vcfffd/P3vf2fr1q1cd9112Gw2rrrqqv7jXHPNNdx2223997/zne/w2muvce+997Jz507uvfde3njjDb773e+O9lvcTya249KGCyHE+CBF05JgbX0v7Z7wkI9rQLsnzNr6XhZOKRi9wICZM2fy8ccfAww4qamuruauu+7ipptu4pFHHsFkMuFwOFAUpX+44F433HBD/78nT57Mgw8+yIknnojf7ycrK2tU3ocQQmQCdzCKxajHYtSnO5SUefTRRwFYvHjxgO1PPPFEf6L2ox/9iFAoxM0334zL5eKkk07itddeIzs7u3//pqYmdLpPr+svWrSIFStW8POf/5zbb7+dKVOm8Mwzz3DSSSel/D0dTKa249KGCyFE8miaRm8gSp7NhE534JojySQJdxJ0+YZupA9lv2TatyDNW2+9xd1338327dvxer3E43HC4TCBQAC73T7kMT766CPuvPNONm3aRG9vb38Rl6amJmbPnj0q70MIIdKpNxBld6ePhp4A8yrzmF6SffAnjVGadvBe3L1DlvcOWx7M22+/vd+2yy67jMsuu+wwokuNTG3HpQ0XQojkCETibG310OIKcur0IoqzLaP22jKkPAmG+wsbzV/sXjt27KC6uprGxkbOP/985syZw/PPP8+GDRt4+OGHAYjFYkM+PxAIcPbZZ5OVlcXTTz/NunXr+Pvf/w70DVMTQojxzBeOsbbOyStb29nc7KY3EEUdRkIqxpZMbcelDRdCiMOjaRoNPQFe29bJxiYX7lCM0W7GpYc7CU6szqfMYaHDEx50/pcClDosnFidP6pxrVy5ki1btvC9732P9evXE4/H+c1vftM/xO/ZZ58dsL/JZCKRSAzYtnPnTnp6evjVr37VvxzL+vXrR+cNCCFEGiVUjQ/re9nT5acoy0xJkYX6Hn+6wxIpkIntuLThQghxeHoDUXa0ednV6cOgU6gqsNPmCY16HNLDnQR6ncIdF/UNy/rsbIC99++4aDb6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HE6gpdyOpTVuaDSct01ERJPHgLuEzKtwoNpz4tTyjKIiLSuYW26HXst/YiIioolIy+posB20Y1WDFyY9520TEdHUMBorIUadFourXdBrNQglMsfcRlUFukYSqHRbUM3RbSIioglJyyo6huOYU8Zgm4iIcocBd4mpcJmxoMKJgWgKg9EUVCHGfpbMKGgbjCFgN2J5nZuj20RERCegCoH+SAqdw3HMCdixupHBNhER5Y6u2A2g7C2odEAjATsPRdA2EIPbYgAAjCQymFdux7JaD6xG/tMSEREdj6yIsX70lGY/mgI2FholIqKcYlRWgow6LRbXuNEYsGFvXxS7DkWgqAJrG72YW+6AlgVeiIiIjkuSALfVgHqfFfMqHHCY9MVuEhERzUAMuEuY3aTHkho3mgI2ZBQBj9VQ7CYRERGVhCq3BS6LAT6usU1ERHnEgHsGsPOuPBERUVZMei3nahMRUd5xohIRERERERFRHjDgJiIiIiIiIsoDBtxEREREREREecCAm4iIiIiIiCgPGHATERERERER5QEDbiIiIiIiIqI8YMBNRERERERElAcMuImIiIiIiIjygAE3ERERERERUR4w4CYiIiIiIiLKAwbcRERERERERHnAgJuIiIiIiIgoDxhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHumI3oJCEEACAcDhc5JYQEdFsd7gvOtw30YmxHycioukgmz58VgXckUgEAFBdXV3klhAREY2KRCJwOp3FbkZJYD9ORETTyUT6cEnMolvrqqqiu7sbdrsdkiRNaV/hcBjV1dU4ePAgHA5Hjlo4c/F8ZY/nLDs8X9njOctOrs+XEAKRSAQVFRXQaDjDayLYjxcPz1f2eM6yw/OVPZ6z7OTyfGXTh8+qEW6NRoOqqqqc7tPhcPALngWer+zxnGWH5yt7PGfZyeX54sh2dtiPFx/PV/Z4zrLD85U9nrPs5Op8TbQP5y11IiIiIiIiojxgwE1ERERERESUBwy4J8loNOLb3/42jEZjsZtSEni+ssdzlh2er+zxnGWH52tm4b9ndni+ssdzlh2er+zxnGWnWOdrVhVNIyIiIiIiIioUjnATERERERER5QEDbiIiIiIiIqI8YMBNRERERERElAezNuC++eabsWLFCtjtdgQCAXz0ox/Frl27jthGCIEbb7wRFRUVMJvN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/x5PP/30UV+2+vp6BINBbNiwYey1dDqNjRs3Ys2aNWOvhcNhnH322TAYDHj00UdhMplO+Nnbtm0D8F6nVCoKdc6WLVsGo9F4RJn/TCaDAwcOoLa2Nk9Hl3uF/o4JIXDffffhsssuO+HF4nRVqHMWj8cB4Ii5TIefHx6dKQXF+DtWVlYGm82Ghx9+GCaTCWeddVbuDyyPcnXOxtt3KpUCAKxevRqhUAivvPLK2M9ffvllhEKhE+6HJob9eHbYh2eP/Xh22Idnj/14dkq2D8+6zNoM8eUvf1k4nU7x7LPPHrEMQzweH9vmlltuEU6nU/z+978X27dvF5/61KeOKCsfDofFypUrxcKFC8XevXuP2M/hsvIvvfSSuPXWW8W2bdvE/v37xcMPPywqKirERz7ykaIc91QU6pwJIcQ111wjKisrxRNPPCF27twpvvCFL4hAICCGhoYKftyTVcjzJYQQTz31lAAg3n777YIeZy4V6pz19/cLr9crLrroIvH666+LXbt2ia9//etCr9eL119/vSjHPhmF/I795Cc/EVu2bBG7du0St99+uzCbzeJHP/pRwY95qnJxzvbt2yduuukm8dprr4n29nbx0ksviQsvvFB4PB5x6NChsf2ce+65YtGiRWLTpk1i06ZNYuHChVwWLIfYj2eHfXj22I9nh3149tiPZ6dU+/BZG3ADOObjvvvuG9tGVVXx7W9/WwSDQWE0GsW6devE9u3bx37+zDPPjLuftrY2IYQQW7ZsEStXrhROp1OYTCbR0tIivv3tb4tYLFbgI566Qp0zIUaXxPja174mAoGAsNvt4swzzxQ7duwo4NFOXSHPlxBCfOpTnxJr1qwp0NHlRyHP2auvvirOPvts4fF4hN1uF6tWrRKPPfZYAY926gp5vi699FLh8XiEwWAQixYtEg8++GABjzR3cnHOurq6xHnnnScCgYDQ6/WiqqpKfPrTnz5qqZDBwUHxmc98RtjtdmG328VnPvMZMTw8XKAjnfnYj2eHfXj22I9nh3149tiPZ6dU+3Dp3cYTERERERERUQ7N2jncRERERERERPnEgJuIiIiIiIgoDxhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHDLiJiIiIiIiI8oABNxEREREREVEeMOAmIiIiIiIiygMG3ER0lBtvvBGLFy8udjOIiIhoEtiPE00fkhBCFLsRRFQ4kiQd9+ef/exncfvttyOVSsHr9RaoVURERDQR7MeJSgsDbqJZpre3d+z/H374YXzrW9/Crl27xl4zm81wOp3FaBoRERGdAPtxotLClHKiWSYYDI49nE4nJEk66rUPpqJ97nOfw0c/+lHcdNNNKCsrg8vlwne+8x3Isox/+qd/gsfjQVVVFX7+858f8VldXV345Cc/CbfbDa/XiwsvvBAHDhwo7AETERHNIOzHiUoLA24impCnn34a3d3deO6553DrrbfixhtvxAUXXAC3242XX34ZV1xxBa644gocPHgQABCPx3H66afDZrPhueeewwsvvACbzYZzzz0X6XS6yEdDREQ0u7AfJyoOBtxENCEejwc//vGP0dLSgs9//vNoaWlBPB7HP//zP6O5uRk33HADDAYDXnzxRQDAQw89BI1Gg3vuuQcLFy7EvHnzcN9996GjowPPPvtscQ+GiIholmE/TlQcumI3gIhKw4IFC6DRvHePrqysDK2trWPPtVotvF4v+vr6AABbtmzB3r17Ybfbj9hPMpnEvn37CtNoIiIiAsB+nKhYGHAT0YTo9fojnkuSdMzXVFUFAKiqimXLluF//ud/jtqX3+/PX0OJiIjoKOzHiYqDATcR5cXSpUvx8MMPIxAIwOFwFLs5RERElAX240S5wTncRJQXn/nMZ+Dz+XDhhRfi+eefR1tbGzZu3IhrrrkGnZ2dxW4eERERHQf7caLcYMBNRHlhsVjw3HPPoaamBhdddBHmzZuHz3/+80gkErxTTkRENM2xHyfKDUkIIYrdCCIiIiIiIqKZhiPcRERERERERHnAgJuIiIiIiIgoDxhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHDLiJiIiIiIiI8oABNxEREREREVEeMOAmIiIiIiIiygMG3ERERERERER5wICbiIiIiIiIKA8YcBMRERERERHlAQNuIiIiIiIiojz4/3lQGxRIhH3EAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x_model, y_model, xe_model, ye_model = mm.model(t_test, params, param_errs)\n", + "visualize_fit(t, x, y, xe, ye, x_model, y_model, xe_model, ye_model, mm.name, t_test)" + ] + }, + { + "cell_type": "markdown", + "id": "5be8fb7e", + "metadata": {}, + "source": [ + "# 2. Fit Motion Model in StarTable" + ] + }, + { + "cell_type": "markdown", + "id": "3bd8dec7", + "metadata": {}, + "source": [ + "Examples on `flystar.StarTable.fit_motion_model`. Prepare the data with invalid values:" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "aa698e86", + "metadata": {}, + "outputs": [], + "source": [ + "t = np.array([0, 1., 2.2, 3.5, 5.]) + 2025.0\n", + "\n", + "x = np.array([\n", + " [0., 0.5, 2.1, 3.2, 8.0], # Increasing 5 Epochs\n", + " [10.0, 8.9, 9.2, 7.4, 7.0], # Decreasing 5 Epochs\n", + " [2.5, np.nan, 5.2, np.nan, 5.0], # 3 Epochs\n", + " [np.nan, 6.2, np.nan, np.nan, 9.2], # 2 Epochs\n", + " [np.nan, 2.0, np.nan, np.nan, np.nan], # 1 Epoch\n", + " [np.nan, np.nan, np.nan, np.nan, np.nan] # All NaNs\n", + "])\n", + "\n", + "y = np.array([\n", + " [10.2, 8.5, 9.1, 10.5, 13.0], # Increasing 5 Epochs\n", + " [8.0, 9.9, 8.2, 7.4, 7.0], # Decreasing 5 Epochs\n", + " [5.2, np.nan, 4.7, np.nan, 6.0], # 3 Epochs\n", + " [np.nan, 1.2, np.nan, np.nan, 3.2], # 2 Epochs\n", + " [np.nan, 2.0, np.nan, np.nan, np.nan], # 1 Epoch\n", + " [np.nan, np.nan, np.nan, np.nan, np.nan] # All NaNs\n", + "])\n", + "\n", + "xe = np.array([\n", + " [0.2, 0.5, 0.3, 0.4, 0.6],\n", + " [0.5, 0.2, 0.7, 0.3, 0.2],\n", + " [0.5, np.nan, 0.6, np.nan, 0.3],\n", + " [np.nan, 0.6, np.nan, np.nan, 0.3],\n", + " [np.nan, 0.4, np.nan, np.nan, np.nan],\n", + " [np.nan, np.nan, np.nan, np.nan, np.nan]\n", + "])\n", + "\n", + "ye = np.array([\n", + " [0.3, 0.2, 0.5, 0.2, 0.4],\n", + " [0.2, 0.5, 0.6, 0.4, 0.2],\n", + " [0.7, np.nan, 0.5, np.nan, 0.2],\n", + " [np.nan, 0.4, np.nan, np.nan, 0.5],\n", + " [np.nan, 0.5, np.nan, np.nan, np.nan],\n", + " [np.nan, np.nan, np.nan, np.nan, np.nan]\n", + "])\n", + "\n", + "x = np.ma.masked_invalid(x)\n", + "y = np.ma.masked_invalid(y)\n", + "xe = np.ma.masked_invalid(xe)\n", + "ye = np.ma.masked_invalid(ye)\n", + "mask = np.ma.getmaskarray(x) | np.ma.getmaskarray(y) | np.ma.getmaskarray(xe) | np.ma.getmaskarray(ye)\n", + "\n", + "tab = StarTable({\n", + " 'x': x,\n", + " 'y': y,\n", + " 'xe': xe,\n", + " 'ye': ye\n", + "})\n", + "tab.meta['list_times'] = t" + ] + }, + { + "cell_type": "markdown", + "id": "9201897f", + "metadata": {}, + "source": [ + "There are a 2 ways to specify the desired motion models:\n", + "1. Let MotionModel automatically determine which motion model to use among the given `motion_models` list based on the number of valid observations. MotionModel will choose the motion model that has enough observations, i.e. $n_\\text{fit} \\geq n_\\text{params}$. \n", + "2. Specify a motion model for each star in the `motion_model_input` column. In case there is not enough observations, MotionModel will \"downgrade\" to a model with less parameters until $n_\\text{fit} \\geq n_\\text{params}$ among all the unique motion models specified in the column.\n", + "\n", + "Note that when `absolute_sigma=False` and `n_fit == n_params`, we don't have enough degree of freedom to rescale the uncertainties, so the uncertainties will be set to infinity -- the same behavior as `scipy.optimize.curve_fit`.
By default `motion_models = [Empty, Fixed, Linear]`. `Empty` and `Fixed` will always be added in the list to handle 0 and 1 point cases. See examples below for details. Let's start with the most basic usage." + ] + }, + { + "cell_type": "markdown", + "id": "e58f429d", + "metadata": {}, + "source": [ + "## 2.1. Example: Default Fitting" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "02642d3b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Empty: 0%| | 0/1 [00:00StarTable length=6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
n_fitn_requiredmotion_model_used
int64int64str20
52Linear
52Linear
32Linear
22Linear
12Fixed
02Empty
" + ], + "text/plain": [ + "\n", + "n_fit n_required motion_model_used\n", + "int64 int64 str20 \n", + "----- ---------- -----------------\n", + " 5 2 Linear\n", + " 5 2 Linear\n", + " 3 2 Linear\n", + " 2 2 Linear\n", + " 1 2 Fixed\n", + " 0 2 Empty" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tab['n_required'] = 2\n", + "tab[['n_fit', 'n_required', 'motion_model_used']]" + ] + }, + { + "cell_type": "markdown", + "id": "20470c6e", + "metadata": {}, + "source": [ + "Next, let's try `absolute_sigma=False`. As mentioned above, we don't have enough degree of freedom to rescale the uncertainties for the forth star. In this case, the parameter uncertainties will be set to infinity, which is the same behavior as `scipy.optimize.curve_fit`. The same `OptmizieWarning` as in `scipy` will be raised." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "26b11593", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Empty: 0%| | 0/1 [00:00\n", + "0.2398025689409276\n", + "0.07197698078673948\n", + "0.26723109004421475\n", + "inf\n", + "inf\n", + "inf\n", + "" + ], + "text/plain": [ + "\n", + " 0.2398025689409276\n", + "0.07197698078673948\n", + "0.26723109004421475\n", + " inf\n", + " inf\n", + " inf" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tab['vx_err']" + ] + }, + { + "cell_type": "markdown", + "id": "241ab6d6", + "metadata": {}, + "source": [ + "## 2.2. Example: Specify Motion Models" + ] + }, + { + "cell_type": "markdown", + "id": "220922c5", + "metadata": {}, + "source": [ + "Alternatively, one can specify a list of motion models to use, and the function will also automatically determine which model to use for each star depending on the valid observed epochs. In the following example, we specify `Acceleration` model, but **the function will always implicitly add `Empty` and `Fixed`** to handle the 0 or 1 epoch stars." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "a596c8e8", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Acceleration: 0%| | 0/3 [00:00StarTable length=6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
n_fitmotion_model_used
int64str20
5Acceleration
5Acceleration
3Acceleration
2Fixed
1Fixed
0Empty
" + ], + "text/plain": [ + "\n", + "n_fit motion_model_used\n", + "int64 str20 \n", + "----- -----------------\n", + " 5 Acceleration\n", + " 5 Acceleration\n", + " 3 Acceleration\n", + " 2 Fixed\n", + " 1 Fixed\n", + " 0 Empty" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tab[['n_fit', 'motion_model_used']]" + ] + }, + { + "cell_type": "markdown", + "id": "188290a9", + "metadata": {}, + "source": [ + "## 2.3. Example: Specify the `motion_model_input` Column" + ] + }, + { + "cell_type": "markdown", + "id": "99624463", + "metadata": {}, + "source": [ + "One can also specify a motion model for each star as a column in the star table. However, the function will \"downgrade\" the model to one with fewer parameters until $n_\\text{fit} \\geq n_\\text{params}$:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "04db5f9e", + "metadata": {}, + "outputs": [], + "source": [ + "ra = np.zeros(len(x))\n", + "dec = np.zeros(len(x))\n", + "pa = np.zeros(len(x))\n", + "\n", + "motion_model_input = [\n", + " 'Acceleration', # Will use Acceleration\n", + " 'Parallax', # Will use Parallax\n", + " 'Linear', # Will use Linear\n", + " 'Acceleration', # Will use Linear, as n_fit = 2 < 3\n", + " 'Linear', # Will use Fixed, as n_fit = 1 < 2\n", + " 'Fixed' # Will use Empty, as n_fit = 0 < 1\n", + "]\n", + "tab = StarTable({\n", + " 'x': x,\n", + " 'y': y,\n", + " 'xe': xe,\n", + " 'ye': ye,\n", + " 'ra': ra,\n", + " 'dec': dec,\n", + " 'pa': pa,\n", + " 'motion_model_input': motion_model_input\n", + "})\n", + "tab.meta['list_times'] = t" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "2b61fbcf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Acceleration: 0%| | 0/1 [00:00StarTable length=6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
n_fitn_requiredmotion_model_inputmotion_model_used
int64int64str12str12
53AccelerationAcceleration
53ParallaxParallax
32LinearLinear
23AccelerationLinear
12LinearFixed
01FixedEmpty
" + ], + "text/plain": [ + "\n", + "n_fit n_required motion_model_input motion_model_used\n", + "int64 int64 str12 str12 \n", + "----- ---------- ------------------ -----------------\n", + " 5 3 Acceleration Acceleration\n", + " 5 3 Parallax Parallax\n", + " 3 2 Linear Linear\n", + " 2 3 Acceleration Linear\n", + " 1 2 Linear Fixed\n", + " 0 1 Fixed Empty" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_mm_map = motion_model.motion_model_map()\n", + "tab['n_required'] = np.array([all_mm_map[mm].n_params for mm in tab['motion_model_input']], dtype=int)\n", + "tab[['n_fit', 'n_required', 'motion_model_input', 'motion_model_used']]" + ] + }, + { + "cell_type": "markdown", + "id": "d4f96fcb", + "metadata": {}, + "source": [ + "## 2.4. Example: Infer Positions" + ] + }, + { + "cell_type": "markdown", + "id": "c660ec98", + "metadata": {}, + "source": [ + "Continuing from the previous example: Once we fit the motion models and the parameters are added into the table, we can infer the positions at arbitrary times with `StarTable.infer_positions`" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "095be28f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 20 of \"dubious year (Note 6)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 40 of \"dubious year (Note 6)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 40 of \"dubious year (Note 3)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 20 of \"dubious year (Note 3)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", + "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 20 of \"dubious year (Note 4)\"\n", + " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n" + ] + } + ], + "source": [ + "x_model, y_model, xe_model, ye_model = tab.infer_positions(t_test)" + ] + }, + { + "cell_type": "markdown", + "id": "a4df5458", + "metadata": {}, + "source": [ + "As in `MotionModel.model`, `StarTable.infer_positions` is also vectorized and returns positions and uncertainties in shapes of $(N_\\text{stars}, N_\\text{times})$" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "2f7e8b7a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(6, 100)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_model.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "7aab0868", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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eTabRTabLX9/5MgRnHXWWfUPmoiIyEWVzNcrKuC2bRtHjx5FJBKBpml13VYikcDq1atx6NAhRKNRh0Z45uNxqx6PWfV4zGrD41Y9p4+ZUgrJZBK9vb3Q9aW162t4eBjDw8MLXmdwcBB+v3/W5UeOHEFfXx/27NmD8847b9H7cnK+BvjcrgWPWW143KrHY1Y9HrPaOHncqpmvV1RKua7rjq8YRKNRPtFrwONWPR6z6vGY1YbHrXpOHrNYLObI7Titvb0d7e3tNf3uvn37AAA9PT0VXd+N+Rrgc7sWPGa14XGrHo9Z9XjMauPUcat0vl5RATcRERG568knn8SePXvw9re/HbFYDE8//TRuueUWXHHFFejv72/28IiIiBqKATcRERE5xjRN7Nq1C3fddRey2SwGBgZwww034FOf+lSzh0ZERNRwDLhrZJom7rjjDpim2eyhLCs8btXjMasej1lteNyqx2M2244dO7Bnz55mD2Ma/p2qx2NWGx636vGYVY/HrDbNOm4rqmgaERERERERUaMsrRKoRERERERERGcIBtxERERERERELmDATUREREREROSCFRtw33PPPXjTm96ESCSCzs5OvP/978cLL7ww7TpKKdx5553o7e1FIBDA2972Nvz2t78t//z06dP4xCc+gU2bNiEYDKK/vx9/8Rd/gbGxsWm3Mzg4CE3Tpn3cdtttDXmcTmvkcQOA//zP/8R5552HQCCA9vZ2XHXVVa4/Rqc16pj99Kc/nfU8K308/fTTDXu8Tmnkc+3FF1/ElVdeifb2dkSjUVx00UV49NFHG/I4ndTIY/bMM8/g3e9+N1paWtDW1oY//dM/xfj4eEMep9OcOG4A8LGPfQzr1q1DIBBAR0cHrrzySuzfv3/adUZGRnDttdciFoshFovh2muvxejoqNsPcdnjnF09zte14ZxdPc7XteGcXb1lO1+rFeo973mPeuihh9RvfvMb9eyzz6r3vve9qr+/X42Pj5ev87nPfU5FIhH13e9+Vz333HPq6quvVj09PSqRSCillHruuefUVVddpR5++GF14MAB9V//9V9qw4YN6gMf+MC0+xoYGFB33323GhoaKn8kk8mGPl6nNPK4fec731HxeFx95StfUS+88ILav3+/+va3v93Qx+uERh2zbDY77Tk2NDSkrr/+ejU4OKhs2274465XI59r69evV7/3e7+nfvWrX6kXX3xR3XTTTSoYDKqhoaGGPuZ6NeqYHTlyRMXjcXXjjTeq/fv3q6eeekpdeOGFs47rcuHEcVNKqQceeEA99thj6uDBg2rv3r3q93//99Xq1atVPp8vX+eyyy5TW7duVU888YR64okn1NatW9X73ve+hj7e5YhzdvU4X9eGc3b1OF/XhnN29ZbrfL1iA+6ZTpw4oQCoxx57TCmllG3bqru7W33uc58rXyeTyahYLKa++tWvzns7//7v/658Pp/K5XLlywYGBtQXv/hF18beTG4dt1wup1atWqUefPBBdx9AE7j5XJvKsizV2dmp7r77bmcfQJO4ddxOnjypAKjHH3+8fJ1EIqEAqB//+McuPZrGcOuYPfDAA6qzs1MVCoXydfbt26cAqJdeesmlR9M4Th23X/3qVwqAOnDggFJKqeeff14BUHv27Clf58knn1QA1P79+116NGcmztnV43xdG87Z1eN8XRvO2dVbLvP1ik0pn6mUetHa2goAOHjwII4dO4ZLL720fB3TNHHJJZfgiSeeWPB2otEoPJ7pLc4///nPo62tDdu3b8dnPvMZWJblwqNoPLeO2zPPPIMjR45A13Wcc8456OnpweWXXz4rJWQ5cvu5VvLwww9jeHgYH/nIR5wbfBO5ddza2tqwefNmfPOb38TExATy+TweeOABdHV1YefOnS4+Ive5dcyy2Sx8Ph90fXIKCQQCAICf//znjj+ORnPiuE1MTOChhx7CmjVrsHr1agDAk08+iVgshvPOO698vfPPPx+xWGzB40+zcc6uHufr2nDOrh7n69pwzq7ecpmvGXBDcv1vvfVWvOUtb8HWrVsBAMeOHQMAdHV1TbtuV1dX+WcznTp1Cn//93+Pj33sY9Muv/nmm/Gtb30Ljz76KD7+8Y/jvvvuw0033eTCI2ksN4/bK6+8AgC488478bd/+7f4wQ9+gHg8jksuuQSnT5924+E0hNvPtam+9rWv4T3veU/5xWM5c/O4aZqG3bt3Y9++fYhEIvD7/fjiF7+IH/3oR2hpaXHnATWAm8fsHe94B44dO4YvfOELsCwLIyMj+PSnPw0AGBoacuPhNEy9x+3+++9HOBxGOBzGj370I+zevRs+n698O52dnbPus7Ozc97jT7Nxzq4e5+vacM6uHufr2nDOrt5ymq8ZcAP4+Mc/jl//+tf4t3/7t1k/0zRt2vdKqVmXAUAikcB73/tenHXWWbjjjjum/eyWW27BJZdcgm3btuH666/HV7/6VXzta1/DqVOnnH0gDebmcbNtGwDwN3/zN/jABz6AnTt34qGHHoKmafj2t7/t8CNpHLefayWHDx/GI488guuuu86ZgTeZm8dNKYWbbroJnZ2d+NnPfoannnoKV155Jd73vvct64nIzWO2ZcsWfOMb38A//MM/IBgMoru7G2vXrkVXVxcMw3D+wTRQvcftmmuuwb59+/DYY49hw4YN+KM/+iNkMpl5b2O+26H5cc6uHufr2nDOrh7n69pwzq7ecpqvV3zA/YlPfAIPP/wwHn30UfT19ZUv7+7uBoBZZzFOnDgx66xJMpnEZZddhnA4jO9///vwer0L3uf5558PADhw4IATD6Ep3D5uPT09AICzzjqrfJlpmli7di1ef/11xx9PIzTyufbQQw+hra0NV1xxhcOPovHcPm4/+clP8IMf/ADf+ta3cNFFF2HHjh24//77EQgE8I1vfMPFR+aeRjzXPvzhD+PYsWM4cuQITp06hTvvvBMnT57EmjVrXHpU7nPiuMViMWzYsAEXX3wxvvOd72D//v34/ve/X76d48ePz7rfkydPzrodmhvn7Opxvq4N5+zqcb6uDefs6i23+XrFBtxKKXz84x/H9773PfzkJz+Z9YRbs2YNuru7sXv37vJllmXhsccew4UXXli+LJFI4NJLL4XP58PDDz8Mv9+/6H3v27cPwOQktZw06rjt3LkTpmlOK/Wfy+Xw6quvYmBgwKVH545GP9eUUnjooYfwx3/8x4u+kVzKGnXcUqkUAEzb21T6vrRys1w043Wtq6sL4XAYu3btgt/vx7vf/W7nH5jLnDpu8912NpsFAFxwwQUYGxvDU089Vf75L37xC4yNjS16Oysd5+zqcb6uDefs6nG+rg3n7Oot2/m66jJrZ4g/+7M/U7FYTP30pz+d1pIhlUqVr/O5z31OxWIx9b3vfU8999xz6kMf+tC0svKJREKdd9556uyzz1YHDhyYdjulsvJPPPGEuvfee9W+ffvUK6+8onbt2qV6e3vVFVdc0ZTHXa9GHTellLr55pvVqlWr1COPPKL279+vrrvuOtXZ2alOnz7d8Mddj0YeM6WU+vGPf6wAqOeff76hj9NpjTpuJ0+eVG1tbeqqq65Szz77rHrhhRfUX/3VXymv16ueffbZpjz2WjXyufalL31J7d27V73wwgvqy1/+sgoEAuof//EfG/6YneDEcXv55ZfVZz/7WfXLX/5Svfbaa+qJJ55QV155pWptbVXHjx8v385ll12mtm3bpp588kn15JNPqrPPPpttwSrAObt6nK9rwzm7epyva8M5u3rLdb5esQE3gDk/HnroofJ1bNtWd9xxh+ru7lamaaqLL75YPffcc+WfP/roo/PezsGDB5VSSu3du1edd955KhaLKb/frzZt2qTuuOMONTEx0eBH7IxGHTelpEXGX/7lX6rOzk4ViUTUu971LvWb3/ymgY/WGY08Zkop9aEPfUhdeOGFDXp07mnkcXv66afVpZdeqlpbW1UkElHnn3+++uEPf9jAR+uMRh6za6+9VrW2tiqfz6e2bdumvvnNbzbwkTrLieN25MgRdfnll6vOzk7l9XpVX1+f+vCHPzyrfcipU6fUNddcoyKRiIpEIuqaa65RIyMjDXqkyxfn7Opxvq4N5+zqcb6uDefs6i3X+VorDp6IiIiIiIiIHLRi93ATERERERERuYkBNxEREREREZELGHATERERERERuYABNxEREREREZELGHATERERERERuYABNxEREREREZELGHATERERERERuYABNxEREREREZELGHAT0YLuvPNObN++vdnDICIiogVwviZamjSllGr2IIioOTRNW/Dnf/Inf4Ivf/nLyGazaGtra9CoiIiIaCrO10TLFwNuohXs2LFj5a937dqFv/u7v8MLL7xQviwQCCAWizVjaERERFTE+Zpo+WJKOdEK1t3dXf6IxWLQNG3WZTNT1D7ykY/g/e9/Pz772c+iq6sLLS0tuOuuu5DP5/HXf/3XaG1tRV9fH77+9a9Pu68jR47g6quvRjweR1tbG6688kq8+uqrjX3AREREyxDna6LliwE3EVXtJz/5CY4ePYrHH38c9957L+688068733vQzwexy9+8QvceOONuPHGG3Ho0CEAQCqVwtvf/naEw2E8/vjj+PnPf45wOIzLLrsMlmU1+dEQERGdmThfEzUfA24iqlprayv+6Z/+CZs2bcJHP/pRbNq0CalUCp/+9KexYcMG3H777fD5fPjv//5vAMC3vvUt6LqOBx98EGeffTY2b96Mhx56CK+//jp++tOfNvfBEBERnaE4XxM1n6fZAyCi5WfLli3Q9cnzdV1dXdi6dWv5e8Mw0NbWhhMnTgAA9u7diwMHDiASiUy7nUwmg5dffrkxgyYiIlphOF8TNR8DbiKqmtfrnfa9pmlzXmbbNgDAtm3s3LkT//qv/zrrtjo6OtwbKBER0QrG+Zqo+RhwE5HrduzYgV27dqGzsxPRaLTZwyEiIqI5cL4mch73cBOR66655hq0t7fjyiuvxM9+9jMcPHgQjz32GG6++WYcPny42cMjIiIicL4mcgMDbiJyXTAYxOOPP47+/n5cddVV2Lx5Mz760Y8inU7zDDoREdESwfmayHmaUko1exBEREREREREZxqucBMRERERERG5gAE3ERERERERkQsYcBMRERERERG5gAE3ERERERERkQsYcBMRERERERG5gAE3ERERERERkQsYcBMRERERERG5gAE3ERERERERkQsYcBMRERERERG5gAE3ERERERERkQsYcBMRERERERG5gAE3ERERERERkQv+f8ZqD6VV4nMSAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualize_fit(t, x, y, xe, ye, x_model, y_model, xe_model, ye_model, mm.name, t_test)" + ] + }, + { + "cell_type": "markdown", + "id": "12bb0136", + "metadata": {}, + "source": [ + "## 2.5. Speed Test" + ] + }, + { + "cell_type": "markdown", + "id": "43fd87c5", + "metadata": {}, + "source": [ + "Speed test for the most commonly used Linear model. As the `use_scipy=False` option for the Linear model uses the [matrix multiplication solution](https://en.wikipedia.org/wiki/Weighted_least_squares#Solution), it is extremely fast at fewer epochs: " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "de576a47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 10 epochs...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:01<00:00, 6350.75it/s]\n", + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:00<00:00, 25802.05it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 31 epochs...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:01<00:00, 6184.77it/s]\n", + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:00<00:00, 23908.79it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 100 epochs...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:01<00:00, 6347.19it/s]\n", + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:00<00:00, 14309.49it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 316 epochs...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:01<00:00, 5023.37it/s]\n", + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:03<00:00, 3288.47it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 1000 epochs...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting motion model Linear: 100%|██████████| 10000/10000 [00:02<00:00, 4314.91it/s]\n", + "Fitting motion model Linear: 100%|██████████| 10000/10000 [01:19<00:00, 125.47it/s]\n" + ] + } + ], + "source": [ + "import time\n", + "N = 10000\n", + "dims = np.logspace(1, 3, 5, dtype=int)\n", + "rng = np.random.default_rng(42)\n", + "\n", + "scipy_times = []\n", + "analytic_times = []\n", + "\n", + "for dim in dims:\n", + " print(f'Fitting {dim} epochs...')\n", + " t = np.linspace(2025.0, 2030.0, dim)\n", + " x = rng.random((N, dim))\n", + " y = rng.random((N, dim))\n", + " xe = rng.uniform(0, 0.2, size=(N, dim))\n", + " ye = rng.uniform(0, 0.2, size=(N, dim))\n", + " tab = StarTable({\n", + " 'x': x,\n", + " 'y': y,\n", + " 'xe': xe,\n", + " 'ye': ye\n", + " })\n", + " tab.meta['list_times'] = t\n", + " \n", + " start = time.time()\n", + " tab.fit_motion_model(use_scipy=True)\n", + " end = time.time()\n", + " scipy_times.append(end - start)\n", + " \n", + " start = time.time()\n", + " tab.fit_motion_model(use_scipy=False)\n", + " end = time.time()\n", + " analytic_times.append(end - start)\n", + "\n", + "scipy_times = np.array(scipy_times)\n", + "analytic_times = np.array(analytic_times)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "3d2a8457", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "280" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Collect memory garbage data\n", + "import gc\n", + "gc.collect()" + ] + }, + { + "cell_type": "markdown", + "id": "06442faf", + "metadata": {}, + "source": [ + "Let's visualize the performance:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "03d53769", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot(dims, N / scipy_times, marker='o', label='Scipy Curve Fit')\n", + "ax.plot(dims, N / analytic_times, marker='o', color='C3', label='Motion Model Analytic')\n", + "ax.set_xscale('log')\n", + "ax.set_xlabel('Number of Epochs')\n", + "ax.set_ylabel('Stars Fit per Second')\n", + "ax.set_title(f'Motion Model Fitting Performance of {N} Stars')\n", + "ax.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ea672ab4", + "metadata": {}, + "source": [ + "It can be seen that for epochs < 200, the analytic solution is faster than scipy, and vice versa for > 300 epochs." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "main", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 7a28690..b8cde55 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -35,7 +35,7 @@ def __init__(self, *args, **kwargs): def model_fit(self, dt): return np.full_like(dt, np.nan) - def model(self, t, fit_params, fixed_params=None, fit_param_errs=None): + def model(self, t, fit_params, fit_param_errs=None, fixed_params=None): if fit_param_errs is None: return np.full_like(t, np.nan), np.full_like(t, np.nan) return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) @@ -114,6 +114,8 @@ def fit( params, params_err, chi2_x, chi2_y Parameters, uncertainties, and chi squares. The corresponding parameter names are in self.fit_param_names. """ + assert np.ndim(t) == np.ndim(x) == np.ndim(y) == np.ndim(xe) == np.ndim(ye) == 1, "Input arrays must be 1D! Motion model can only fit individual stars" + assert len(t) == len(x) == len(y) == len(xe) == len(ye), "Input arrays must have the same length!" fit_result = self.run_fit( t, x, y, xe, ye, fixed_params_dict=fixed_params_dict, @@ -186,7 +188,7 @@ def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced """ Get the chi^2 value for the input motion model parameters and data. """ - x_pred, y_pred = self.model(t, fit_params, fixed_params_dict) + x_pred, y_pred = self.model(t, fit_params, fixed_params_dict=fixed_params_dict) chi2x = np.sum((x - x_pred)**2 / xe**2) chi2y = np.sum((y - y_pred)**2 / ye**2) if reduced: @@ -213,7 +215,7 @@ def __init__(self, **kwargs): def model_fit(self, dt): return np.full_like(dt, np.nan) - def model(self, t, fit_params, fixed_params_dict, fixed_param_errs=None): + def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Predicted positions (and uncertainties, if fit_param_errs is provided) at time t of Empty model. Parameters @@ -222,10 +224,10 @@ def model(self, t, fit_params, fixed_params_dict, fixed_param_errs=None): Time array, shape (N_times,) fit_params : array-like Fit parameters, shape (N_params,) or (N_stars, N_params) - fixed_params_dict : dict - Dictionary of fixed parameters, not applicable for Empty model - fixed_param_errs : array-like, optional - Uncertainties for fixed parameters, not applicable for Empty model, by default None + fit_param_errs : array-like, optional + Uncertainties for fit parameters, not applicable for Empty model, by default None + fixed_params_dict : dict, optional + Not applicable for Empty model, by default None Returns ------- @@ -234,7 +236,7 @@ def model(self, t, fit_params, fixed_params_dict, fixed_param_errs=None): """ t = np.atleast_1d(t) - if fixed_param_errs is None: + if fit_param_errs is None: return np.full_like(t, np.nan), np.full_like(t, np.nan) return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) @@ -285,6 +287,7 @@ def run_fit( params, param_errors (, chi2_x, chi2_y) Fitted parameters, their uncertainties, and optionally chi-squared values """ + self.fixed_params_dict = fixed_params_dict if verbose: warnings.warn(f"Empty data cannot be fit. Setting parameters to {fill_value} and uncertainties to np.inf.", OptimizeWarning, stacklevel=2) params = np.full(self.n_params, fill_value) @@ -332,7 +335,7 @@ def model_fit(self, dt, x0): x0 = np.asarray(x0) return np.broadcast_to(x0[:, np.newaxis], (x0.shape[0], dt.shape[0])) if x0.ndim > 0 else np.full_like(dt, x0) - def model(self, t, fit_params, fixed_params_dict=None, fit_param_errs=None): + def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Predicted positions (and uncertainties, if fit_param_errs is provided) at time t of Fixed model. Parameters @@ -341,16 +344,18 @@ def model(self, t, fit_params, fixed_params_dict=None, fit_param_errs=None): Time array, shape (N_times,) fit_params : array-like x0, y0 in shape (N_params,) or (N_stars, N_params) - fixed_params_dict : dict, optional - Not applicable for Fixed, by default None fit_param_errs : array-like, optional Uncertainties for x0, y0 in shape (N_params,) or (N_stars, N_params), by default None + fixed_params_dict : dict, optional + Not applicable for Fixed, by default None + Returns ------- x, y (, xe, ye) Predicted position (and uncertainties) of Fixed model, shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ + self.fixed_params_dict = fixed_params_dict t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) @@ -484,7 +489,7 @@ def model_fit(self, dt, x0, v): """ return x0 + v * dt - def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): + def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Linear model. Parameters @@ -493,16 +498,18 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): Time(s) at which to evaluate the model fit_params : array-like x0, vx, y0, vy in shape (N_params,) or (N_stars, N_params) - fixed_params_dict : dict - t0, shape (1,) or (N_stars,) fit_param_errs : array-like, optional Uncertainties of fit parameters in shape (N_params,) or (N_stars, N_params), by default None + fixed_params_dict : dict + t0, shape (1,) or (N_stars,) Returns ------- x, y (, xe, ye) Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ + if fixed_params_dict is None: + fixed_params_dict = self.fixed_params_dict assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Linear model." t = np.atleast_1d(t) @@ -540,7 +547,7 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): def run_fit( self, t, x, y, xe, ye, - fixed_params_dict, + fixed_params_dict=None, weighting='var', use_scipy=True, absolute_sigma=True, @@ -549,7 +556,13 @@ def run_fit( return_chi2=False, verbose=True ): - t0 = fixed_params_dict.get('t0', np.average(t, weights=1./np.hypot(xe, ye))) + if fixed_params_dict is None: + fixed_params_dict = {} + if 't0' not in fixed_params_dict: + # Default t0 to weighted average time + fixed_params_dict['t0'] = np.average(t, weights=1./np.hypot(xe, ye)) + self.fixed_params_dict = fixed_params_dict + t0 = np.atleast_1d(fixed_params_dict['t0']) t = np.atleast_1d(t) x = np.atleast_1d(x) y = np.atleast_1d(y) @@ -592,7 +605,7 @@ def run_fit( return params, param_errors, chi2_x, chi2_y else: return params, param_errors - + # Linear algebraic solution # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution_scheme X_mat_t = np.vander(dt, 2) @@ -685,7 +698,7 @@ def model_fit(self, t, x0, v0, a): """ return x0 + v0*t + 0.5*a*t**2 - def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): + def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Acceleration model. Parameters @@ -693,17 +706,19 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): t : float or array-like Time(s) at which to evaluate the model fit_params : array-like - x0, vx0, ax, y0, vy0, ay in shape (N_params,) or (N_stars, N_params) - fixed_params_dict : dict - t0, shape (1,) or (N_stars,) + x0, vx, ax, y0, vy, ay in shape (N_params,) or (N_stars, N_params) fit_param_errs : array-like, optional Fit parameter uncertainties with shape (N_stars, N_params) or (N_params,), by default None + fixed_params_dict : dict + t0, shape (1,) or (N_stars,) Returns ------- x, y (, xe, ye) Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ + if fixed_params_dict is None: + fixed_params_dict = self.fixed_params_dict assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Acceleration model." t = np.atleast_1d(t) @@ -743,7 +758,7 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): def run_fit( self, t, x, y, xe, ye, - fixed_params_dict, + fixed_params_dict=None, weighting='var', use_scipy=True, absolute_sigma=True, @@ -752,7 +767,13 @@ def run_fit( return_chi2=False, verbose=True ): - t0 = fixed_params_dict.get('t0', np.average(t, weights=1./np.hypot(xe, ye))) + if fixed_params_dict is None: + fixed_params_dict = {} + if 't0' not in fixed_params_dict: + # Default t0 to weighted average time + fixed_params_dict['t0'] = np.average(t, weights=1./np.hypot(xe, ye)) + self.fixed_params_dict = fixed_params_dict + t0 = np.atleast_1d(fixed_params_dict['t0']) t = np.atleast_1d(t) x = np.atleast_1d(x) y = np.atleast_1d(y) @@ -895,7 +916,7 @@ def _model_fit(self, dt, x0, vx, y0, vy, pi): x_res, y_res = self.model_fit(dt, x0, vx, y0, vy, pi) return np.hstack([x_res, y_res]) # Shape (N_stars, 2*N_times) - def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): + def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Parallax model. Parameters @@ -904,21 +925,22 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): Times at which to evaluate the model fit_params : array-like x0, vx, y0, vy, pi in shape (N_params,) or (N_stars, N_params) + fit_param_errs : array-like, optional + Uncertainties in fit parameters, by default None fixed_params : dict - t0, shape (N_stars,) or (1,). - ra, shape (N_stars,) or (1,). - dec, shape (N_stars,) or (1,). - pa, optional, shape (N_stars,) or (1,), by default 0. - obsLocation, optional, string, by default 'earth' - fit_param_errs : array-like, optional - Uncertainties in fit parameters, by default None Returns ------- x, y (, xe, ye) Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ - + if fixed_params_dict is None: + fixed_params_dict = self.fixed_params_dict assert all([_ in fixed_params_dict for _ in ['t0', 'ra', 'dec']]), "Fixed parameters t0, ra, and dec are required for Parallax model." t = np.atleast_1d(t) @@ -934,7 +956,10 @@ def model(self, t, fit_params, fixed_params_dict, fit_param_errs=None): obsLocation = fixed_params_dict.get('obsLocation', 'earth') # TODO: vectorize parallax.parallax_in_direction to handle multiple obsLocation? - assert type(obsLocation) == str, "obsLocation must be a single string for all stars at this time." + + assert (type(obsLocation) == str) or (np.unique(obsLocation).size == 1), "obsLocation must be a single string for all stars at this time." + if type(obsLocation) != str: + obsLocation = np.unique(obsLocation)[0] dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) @@ -975,14 +1000,21 @@ def run_fit( if not use_scipy: if verbose: warnings.warn("Parallax model has no non-scipy fitter option. Running with scipy.", UserWarning) - - assert all([k in fixed_params_dict for k in ['t0', 'ra', 'dec']]), "Parallax model requires 't0', 'ra', and 'dec' in fixed_params." + + assert all([k in fixed_params_dict for k in ['ra', 'dec']]), "Parallax model requires 'ra' and 'dec' in fixed_params." t = np.atleast_1d(t) + + if 't0' not in fixed_params_dict: + # Default t0 to weighted average time + fixed_params_dict['t0'] = np.average(t, weights=1./np.hypot(xe, ye)) + if 'obsLocation' not in fixed_params_dict: + fixed_params_dict['obsLocation'] = 'earth' + self.fixed_params_dict = fixed_params_dict t0 = np.atleast_1d(fixed_params_dict['t0']) ra = np.atleast_1d(fixed_params_dict['ra']) dec = np.atleast_1d(fixed_params_dict['dec']) pa = np.atleast_1d(fixed_params_dict.get('pa', 0.0)) - obsLocation = fixed_params_dict.get('obsLocation', 'earth') + obsLocation = fixed_params_dict['obsLocation'] n_fit = len(t) degree_of_freedom = n_fit - self.n_params diff --git a/flystar/startables.py b/flystar/startables.py index 2bb062c..b25f8c5 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -538,7 +538,7 @@ def detections(self): def fit_motion_model( self, - motion_models=[Empty, Fixed, Linear], + motion_models=None, fixed_params_dict=None, weighting='var', use_scipy=False, @@ -556,7 +556,7 @@ def fit_motion_model( Parameters ---------- motion_models : list of MotionModel or str, optional - Motion models to use. + Motion models to use, by default Empty, Fixed and Linear. Empty and Fixed models are always added automatically for stars with n_fit = 0 or 1. The behavior is as follows: 1. If 'motion_model_input' column is NOT in table: @@ -619,8 +619,12 @@ def fit_motion_model( if fixed_params_dict is not None: if not isinstance(fixed_params_dict, dict): raise ValueError("fit_motion_model: fixed_params_dict must be a dictionary!") - + # Convert motion_models to MotionModel objects if they are strings: + if motion_models is None: + # Setting the default to None to avoid mutable default argument issue + # See https://stackoverflow.com/questions/15189245/assigning-class-variable-as-default-value-to-class-method-argument + motion_models = [Empty, Fixed, Linear] all_mm_map = motion_model.motion_model_map() if all(isinstance(mm, str) for mm in motion_models): mm_names = motion_models @@ -653,7 +657,8 @@ def fit_motion_model( if 'motion_model_input' not in self.colnames: # If motion_model_input column is not provided, assert that motion model n_params are unique and sorted # Otherwise the fitter does not know which motion model to use based on n_obs - assert len(mm_n_params) == len(set(mm_n_params)), "fit_motion_model: Provided motion model n_params are not unique! Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." + assert len(mm_n_params) == len(set(mm_n_params)), \ + f"fit_motion_model: Provided motion model n_params are not unique! Motion Models are: {[_.name for _ in motion_models]} Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." ########################### @@ -684,7 +689,6 @@ def fit_motion_model( if fixed_params_dict is None: weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None fixed_params_dict = {'t0': np.average(t_data, axis=1, weights=weights)} - elif 't0' not in fixed_params_dict: weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None fixed_params_dict['t0'] = np.average(t_data, axis=1, weights=weights) @@ -692,8 +696,7 @@ def fit_motion_model( if np.ndim(fixed_params_dict['t0']) == 0: fixed_params_dict['t0'] = np.full(N_stars, fixed_params_dict['t0']) - t0 = fixed_params_dict['t0'] - + t0 = fixed_params_dict['t0'] # Prepare fixed_params_dict for each star # This avoids checking types and slicing inside the fitting loop @@ -734,24 +737,35 @@ def fit_motion_model( ########################### ####### Determine MM ###### ########################### + n_fit = np.array(self['n_fit']) if 'motion_model_input' in self.colnames: # Determine which motion model to use based on motion_model_input column # If n_fit < required n_params for the input motion model, use the most complicated motion model with n_fit >= n_params required_params = np.array([all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']]) + reassign_mm = n_fit < required_params + mm_digitized = np.digitize( - x=np.minimum(np.array(self['n_fit']), required_params), + x=n_fit[reassign_mm], bins=mm_n_params ) - 1 # Convert to 0-based index + # Assign motion models to stars + self['motion_model_used'] = self['motion_model_input'] + self['motion_model_used'][reassign_mm] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') + else: mm_digitized = np.digitize( - x=np.array(self['n_fit']), + x=n_fit, bins=mm_n_params ) - 1 # Convert to 0-based index - # Assign motion models to stars - self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') + # Assign motion models to stars + self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') + # Add default obsLocation if not provided in fixed_params_dict + mm_used = np.unique(self['motion_model_used'].name) + if 'Parallax' in mm_used and 'obsLocation' not in fixed_params_dict: + fixed_params_dict['obsLocation'] = 'earth' ############################ ####### Prepare Table ###### @@ -786,6 +800,7 @@ def fit_motion_model( for param in mm.fixed_param_names: if param not in fixed_param_names: fixed_param_names.append(param) + # Remove t0 from fixed_param_names as it will be saved during fitting if 't0' in fixed_param_names: fixed_param_names.remove('t0') @@ -943,7 +958,7 @@ def infer_positions(self, times, fill_value=np.nan): # Predict positions x, y, xe, ye = motion_model_instance.model( - times, fit_params, fixed_params, fit_param_errs + times, fit_params, fit_param_errs, fixed_params ) x_pred[unique_index] = x y_pred[unique_index] = y diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index ad082cb..c5ae094 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -410,10 +410,10 @@ def test_MosaicToRef_acc(): ref_list = Table.read(ref_file) # Convert velocities to arcsec/yr - ref_list['vx0'] *= 1e-3 - ref_list['vy0'] *= 1e-3 - ref_list['vx0_err'] *= 1e-3 - ref_list['vy0_err'] *= 1e-3 + ref_list['vx'] *= 1e-3 + ref_list['vy'] *= 1e-3 + ref_list['vx_err'] *= 1e-3 + ref_list['vy_err'] *= 1e-3 # Convert accelerations to arcsec/yr**2 ref_list['ax'] *= 1e-3 @@ -423,7 +423,7 @@ def test_MosaicToRef_acc(): # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 - ref_list['vx0'] *= -1.0 + ref_list['vx'] *= -1.0 ref_list['ax'] *= -1.0 lists = [starlists.StarList.read(lf) for lf in list_files] From 5a049fe02cd2db035d708b17325b879d599c8b2a Mon Sep 17 00:00:00 2001 From: Wei Lingfeng Date: Fri, 16 Jan 2026 00:17:36 +0900 Subject: [PATCH 29/94] Fix bootstrap index size error --- flystar/motion_model.py | 5 ++--- flystar/tests/test_align.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index b8cde55..b69f8f2 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -138,8 +138,6 @@ def fit( n_obs = len(t) if bootstrap > 0 and n_obs > (self.n_params): - # Use m out of n bootstrap to ensure enough unique points - m = np.max([self.n_params, int(len(t) * 0.8)]) rng = np.random.default_rng(seed) edx = np.arange(n_obs, dtype=int) # Precompute All Bootstrap Draws at Once @@ -148,8 +146,9 @@ def fit( rng.choice(edx, size=self.n_params, replace=False) for _ in range(bootstrap) ]) + # Draw with replacement for the rest bdx_extra = np.stack([ - rng.choice(edx, size=self.n_params, replace=True) + rng.choice(edx, size=n_obs - self.n_params, replace=True) for _ in range(bootstrap) ]) bdx_all = np.hstack((bdx_unique, bdx_extra)) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index c5ae094..3937ea6 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -572,7 +572,7 @@ def test_bootstrap(): list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) - + # Set parameters for alignment transModel = transforms.PolyTransform trans_args = {'order':2} From d87766dae14d1976fde04bec2254ad4fbfd35cb2 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 21 Jan 2026 17:50:56 -0800 Subject: [PATCH 30/94] Simplify n_params calculation --- flystar/motion_model.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index b69f8f2..5b34582 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -10,7 +10,7 @@ class MotionModel(ABC): fit_param_names = [] # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fit_param_names) / 2)) + n_params = int((len(fit_param_names) + 1) / 2) # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. @@ -203,7 +203,7 @@ class Empty(MotionModel): fixed_param_names = [] name = "Empty" # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fit_param_names) / 2)) + n_params = int((len(fit_param_names) + 1) / 2) def __init__(self, **kwargs): """Empty motion model, returns nan for values and inf for uncertainties. @@ -305,7 +305,7 @@ class Fixed(MotionModel): fit_param_names = ['x0','y0'] fixed_param_names = [] # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fit_param_names) / 2)) + n_params = int((len(fit_param_names) + 1) / 2) name = "Fixed" @@ -460,7 +460,7 @@ class Linear(MotionModel): fixed_param_names = ['t0'] # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fit_param_names) / 2)) + n_params = int((len(fit_param_names) + 1) / 2) name = "Linear" def __init__(self, **kwargs): @@ -668,7 +668,7 @@ class Acceleration(MotionModel): name = "Acceleration" # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fit_param_names) / 2)) + n_params = int((len(fit_param_names) + 1) / 2) def __init__(self): # Must call after setting parameters. @@ -836,7 +836,7 @@ class Parallax(MotionModel): name = "Parallax" # Number of fit parameters/required observations in each direction - n_params = int(np.ceil(len(fit_param_names) / 2)) + n_params = int((len(fit_param_names) + 1) / 2) def __init__(self): super().__init__() From 2170fbcd0a52b5be7bbc8819b9bcd78ec97aa672 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Mon, 26 Jan 2026 10:51:33 -0800 Subject: [PATCH 31/94] Reorder parameters of MosaicSelf/ToRef --- flystar/align.py | 101 +++++++++++++++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 35 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 2820ae5..d25e903 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -13,21 +13,37 @@ from astropy.utils.exceptions import AstropyUserWarning class MosaicSelfRef(object): - def __init__(self, list_of_starlists, ref_index=0, iters=2, - dr_tol=[1, 1], dm_tol=[2, 1], - outlier_tol=[None, None], - trans_args=[{'order': 2}, {'order': 2}], - init_order=1, - mag_trans=True, mag_lim=None, trans_weighting=None, vel_weighting='var', - trans_input=None, trans_class=transforms.PolyTransform, - calc_trans_inverse=False, - init_guess_mode='miracle', iter_callback=None, - motion_models=['Empty', 'Fixed'], - fixed_params_dict=None, - use_scipy=True, - absolute_sigma=False, - save_path=None, - verbose=True): + def __init__( + self, + list_of_starlists, + # Alignment tolerance parameters + ref_index=0, + iters=2, + dr_tol=[1, 1], + dm_tol=[2, 1], + outlier_tol=[None, None], + # Transformation parameters + trans_class=transforms.PolyTransform, + trans_args=[{'order': 2}, {'order': 2}], + trans_input=None, + trans_weighting=None, + init_order=1, + init_guess_mode='miracle', + calc_trans_inverse=False, + # Magnitude parameters + mag_trans=True, + mag_lim=None, + # Motion model parameters + motion_models=['Empty', 'Fixed'], + fixed_params_dict=None, + vel_weighting='var', + use_scipy=True, + absolute_sigma=False, + # Advanced options + iter_callback=None, + save_path=None, + verbose=True + ): """ Make a mosaic object by passing in a list of starlists and then running fit(). @@ -1433,26 +1449,41 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot class MosaicToRef(MosaicSelfRef): - def __init__(self, ref_list, list_of_starlists, iters=2, - dr_tol=[1, 1], dm_tol=[2, 1], - outlier_tol=[None, None], - trans_args=[{'order': 2}, {'order': 2}], - init_order=1, - mag_trans=True, mag_lim=None, ref_mag_lim=None, - trans_weighting=None, vel_weighting='var', - trans_input=None, - trans_class=transforms.PolyTransform, - calc_trans_inverse=False, - use_ref_new=False, - update_ref_orig=False, - init_guess_mode='miracle', - iter_callback=None, - motion_models=['Empty', 'Fixed'], - fixed_params_dict=None, - use_scipy=True, - absolute_sigma=False, - save_path=None, - verbose=True): + def __init__( + self, + ref_list, + list_of_starlists, + # Alignment tolerance parameters + iters=2, + dr_tol=[1, 1], + dm_tol=[2, 1], + outlier_tol=[None, None], + # Reference behavior (MosiacToRef specific) + use_ref_new=False, + update_ref_orig=False, + # Transformation parameters + trans_class=transforms.PolyTransform, + trans_args=[{'order': 2}, {'order': 2}], + trans_input=None, + trans_weighting=None, + init_order=1, + init_guess_mode='miracle', + calc_trans_inverse=False, + # Magnitude parameters + mag_trans=True, + mag_lim=None, + ref_mag_lim=None, + # Motion model parameters + motion_models=['Empty', 'Fixed'], + fixed_params_dict=None, + vel_weighting='var', + use_scipy=True, + absolute_sigma=False, + # Advanced options + iter_callback=None, + save_path=None, + verbose=True + ): """ Required Parameters From 1422171954f234061bc1ece1dfa70fb2b96131cc Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Mon, 26 Jan 2026 10:55:12 -0800 Subject: [PATCH 32/94] Update type comparison method --- flystar/motion_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 5b34582..7010a4e 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -956,8 +956,8 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): # TODO: vectorize parallax.parallax_in_direction to handle multiple obsLocation? - assert (type(obsLocation) == str) or (np.unique(obsLocation).size == 1), "obsLocation must be a single string for all stars at this time." - if type(obsLocation) != str: + assert isinstance(obsLocation, str) or (np.unique(obsLocation).size == 1), "obsLocation must be a single string for all stars at this time." + if not isinstance(obsLocation, str): obsLocation = np.unique(obsLocation)[0] dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) From 93f4d44754b84ca6ec211a45475e8a34676b20a0 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 27 Jan 2026 17:54:19 -0800 Subject: [PATCH 33/94] Add save path for log file --- flystar/align.py | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index d304d4b..400b6e1 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1738,27 +1738,28 @@ def fit(self): """ # Create a log file of the parameters used in the fit. - with open('MosaicToRef_input_params.log', 'w',) as _log: - logger(_log, 'Parameters used for fit: ', self.verbose) - logger(_log, '------------------------- ', self.verbose) - logger(_log, ' dr_tol = ' + str(self.dr_tol), self.verbose) - logger(_log, ' dm_tol = ' + str(self.dm_tol), self.verbose) - logger(_log, ' outlier_tol = ' + str(self.outlier_tol), self.verbose) - logger(_log, ' trans_args = ' + str(self.trans_args), self.verbose) - logger(_log, ' mag_trans = ' + str(self.mag_trans), self.verbose) - logger(_log, ' mag_lim = ' + str(self.mag_lim), self.verbose) - logger(_log, ' ref_mag_lim = ' + str(self.ref_mag_lim), self.verbose) - logger(_log, ' trans_weighting = ' + str(self.trans_weighting), self.verbose) - logger(_log, ' vel_weighting = ' + str(self.vel_weighting), self.verbose) - logger(_log, ' trans_input = ' + str(self.trans_input), self.verbose) - logger(_log, ' trans_class = ' + str(self.trans_class), self.verbose) - logger(_log, ' calc_trans_inverse = ' + str(self.calc_trans_inverse), self.verbose) - logger(_log, ' use_ref_new = ' + str(self.use_ref_new), self.verbose) - logger(_log, ' motion_models = ' + str([mm.name for mm in self.motion_models]), self.verbose) - logger(_log, ' update_ref_orig = ' + str(self.update_ref_orig), self.verbose) - logger(_log, ' init_guess_mode = ' + str(self.init_guess_mode), self.verbose) - logger(_log, ' iter_callback = ' + str(self.iter_callback), self.verbose) - logger(_log, '-------------------------\n', self.verbose) + if self.save_path is not None: + with open(f'{self.save_path}/MosaicToRef_input_params.log', 'w',) as _log: + logger(_log, 'Parameters used for fit: ', self.verbose) + logger(_log, '------------------------- ', self.verbose) + logger(_log, ' dr_tol = ' + str(self.dr_tol), self.verbose) + logger(_log, ' dm_tol = ' + str(self.dm_tol), self.verbose) + logger(_log, ' outlier_tol = ' + str(self.outlier_tol), self.verbose) + logger(_log, ' trans_args = ' + str(self.trans_args), self.verbose) + logger(_log, ' mag_trans = ' + str(self.mag_trans), self.verbose) + logger(_log, ' mag_lim = ' + str(self.mag_lim), self.verbose) + logger(_log, ' ref_mag_lim = ' + str(self.ref_mag_lim), self.verbose) + logger(_log, ' trans_weighting = ' + str(self.trans_weighting), self.verbose) + logger(_log, ' vel_weighting = ' + str(self.vel_weighting), self.verbose) + logger(_log, ' trans_input = ' + str(self.trans_input), self.verbose) + logger(_log, ' trans_class = ' + str(self.trans_class), self.verbose) + logger(_log, ' calc_trans_inverse = ' + str(self.calc_trans_inverse), self.verbose) + logger(_log, ' use_ref_new = ' + str(self.use_ref_new), self.verbose) + logger(_log, ' motion_models = ' + str([mm.name for mm in self.motion_models]), self.verbose) + logger(_log, ' update_ref_orig = ' + str(self.update_ref_orig), self.verbose) + logger(_log, ' init_guess_mode = ' + str(self.init_guess_mode), self.verbose) + logger(_log, ' iter_callback = ' + str(self.iter_callback), self.verbose) + logger(_log, '-------------------------\n', self.verbose) ########## From 9251d9c1e5be6e9b531fa37ca5696ab57d8258bd Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Thu, 29 Jan 2026 23:22:04 -0800 Subject: [PATCH 34/94] Fix mag_lim error in align --- flystar/align.py | 6 +++--- flystar/starlists.py | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 400b6e1..f7ff27e 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -282,7 +282,7 @@ def fix_iterable_conditions(self): if self.mag_lim is None: self.mag_lim = np.repeat([[None, None]], len(self.star_lists), axis=0) - elif (len(self.mag_lim) == 2): + elif (len(self.mag_lim) == 2) and (np.ndim(self.mag_lim) == 1): self.mag_lim = np.repeat([self.mag_lim], len(self.star_lists), axis=0) assert len(self.mag_lim) == len(self.star_lists) @@ -2979,8 +2979,8 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', if mode == 'name': # First trim the two lists down to only those that don't contain # the "ignore_contains" string. - idx_r = np.flatnonzero(np.char.find(ref_list['name'], ignore_contains) == -1) - idx_s = np.flatnonzero(np.char.find(star_list['name'], ignore_contains) == -1) + idx_r = np.flatnonzero(np.char.find(ref_list['name'].astype(str), ignore_contains) == -1) + idx_s = np.flatnonzero(np.char.find(star_list['name'].astype(str), ignore_contains) == -1) # Match the star names name_matches, ndx_r, ndx_s = np.intersect1d(ref_list['name'][idx_r], diff --git a/flystar/starlists.py b/flystar/starlists.py index f1f3278..8387226 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -737,21 +737,21 @@ def restrict_by_value(self, **kwargs): # Loop through all conditions and build up # an array of indicies of rows to remove. remove_flag = np.zeros(len(self), dtype=bool) - - for kwarg in kwargs: - if kwargs[kwarg] is not None: + + for key, value in kwargs.items(): + if value is not None: # Get the name of the column to act on and # whether the condition is min or max. - kwarg_split = kwarg.split('_') - + key_split = key.split('_') + # Support column names such as x_0. - col = '_'.join(kwarg_split[:-1]) + col = '_'.join(key_split[:-1]) - if kwarg_split[-1] == 'min': - remove_flag = np.logical_or(remove_flag, self[col] <= kwargs[kwarg]) + if key_split[-1] == 'min': + remove_flag = np.logical_or(remove_flag, self[col] <= value) - if kwarg_split[-1] == 'max': - remove_flag = np.logical_or(remove_flag, self[col] >= kwargs[kwarg]) + if key_split[-1] == 'max': + remove_flag = np.logical_or(remove_flag, self[col] >= value) rem_idx = np.where(remove_flag == True)[0] From 4980483a62766e7dfc829193bc387e037a707312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 1 Feb 2026 20:45:35 -0800 Subject: [PATCH 35/94] Update save path: Must ends with pkl --- flystar/align.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flystar/align.py b/flystar/align.py index 2820ae5..ce3a184 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -201,6 +201,12 @@ def = None. If not None, then this should contain an array or list of transform self.iter_callback = iter_callback self.save_path = save_path self.verbose = verbose + + # Setup save_path: + if self.save_path: + assert self.save_path.endswith('.pkl'), 'Save_path must end with .pkl' + if not os.path.exists(os.path.dirname(self.save_path)): + os.makedirs(os.path.dirname(self.save_path)) all_mm_map = motion_model.motion_model_map() if all(isinstance(mm, str) for mm in motion_models): @@ -535,7 +541,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ## Make plot, if desired plots.trans_positions(ref_list, ref_list[idx_ref], star_list_T, star_list_T[idx_lis], - save_path=f"{self.save_path}/Transformed_Positions_{star_list_T['t'][0]}.png" if self.save_path else None, + save_path=f"{os.path.dirname(self.save_path)}/Transformed_Positions_{star_list_T['t'][0]}.png" if self.save_path else None, show_plot=False) ### Update the observed (but transformed) values in the reference table. From dcf8d135f19cf38fdd60382d5f61d7213bbfedf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 3 Feb 2026 13:30:25 -0800 Subject: [PATCH 36/94] Fix string warning message --- flystar/plots.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flystar/plots.py b/flystar/plots.py index 112934c..8b9587d 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -2231,7 +2231,7 @@ def plot_chi2_dist(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, boot_ plt.hist(x[idx], bins=chi2_bins, histtype='step', label='X', density=True) plt.hist(y[idx], bins=chi2_bins, histtype='step', label='Y', density=True) plt.plot(chi2_xaxis, chi2.pdf(chi2_xaxis, Ndof), 'r-', alpha=0.6, - label='$\chi^2$ ' + str(round(Ndof,2)) + ' dof') + label=r'$\chi^2$ ' + str(round(Ndof,2)) + ' dof') plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(round(Ndof,2))) plt.xlim(0, xlim) plt.legend() From 89eaee578f81c1e064b8f978946054abf2793a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sat, 7 Feb 2026 17:31:19 -0800 Subject: [PATCH 37/94] Update motion model used for keep_orig stars in align; Update chi2 after ref table has been created in align; Added save path in plots; Moved all testing data files under flystar/test/test_data; Removed trailing spaces --- .../examples/motion_model_example.ipynb | 84 +++--- flystar/align.py | 66 ++++- flystar/analysis.py | 3 +- flystar/plots.py | 263 +++++++++-------- flystar/startables.py | 9 +- flystar/tests/test_align.py | 268 +++++++++--------- flystar/tests/{ => test_data}/A.lis | 0 flystar/tests/{ => test_data}/B.lis | 0 flystar/tests/{ => test_data}/C.lis | 0 flystar/tests/{ => test_data}/D.lis | 0 flystar/tests/{ => test_data}/E.lis | 0 flystar/tests/{ => test_data}/F.lis | 0 flystar/tests/{ => test_data}/coveragerc | 0 flystar/tests/{ => test_data}/ref.lis | 0 flystar/tests/{ => test_data}/ref_vel.lis | 0 .../tests/{ => test_data}/test_catalog.fits | 0 16 files changed, 383 insertions(+), 310 deletions(-) rename flystar/tests/{ => test_data}/A.lis (100%) rename flystar/tests/{ => test_data}/B.lis (100%) rename flystar/tests/{ => test_data}/C.lis (100%) rename flystar/tests/{ => test_data}/D.lis (100%) rename flystar/tests/{ => test_data}/E.lis (100%) rename flystar/tests/{ => test_data}/F.lis (100%) rename flystar/tests/{ => test_data}/coveragerc (100%) rename flystar/tests/{ => test_data}/ref.lis (100%) rename flystar/tests/{ => test_data}/ref_vel.lis (100%) rename flystar/tests/{ => test_data}/test_catalog.fits (100%) diff --git a/docs/flystar/examples/motion_model_example.ipynb b/docs/flystar/examples/motion_model_example.ipynb index 413b616..4877b5c 100644 --- a/docs/flystar/examples/motion_model_example.ipynb +++ b/docs/flystar/examples/motion_model_example.ipynb @@ -93,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "id": "ce4edb88", "metadata": {}, "outputs": [], @@ -115,7 +115,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 3, "id": "86b6319d", "metadata": {}, "outputs": [], @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "id": "0926c0a8", "metadata": {}, "outputs": [], @@ -157,7 +157,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 5, "id": "840693ae", "metadata": {}, "outputs": [], @@ -175,7 +175,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 6, "id": "8fcbdc5d", "metadata": {}, "outputs": [], @@ -193,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 7, "id": "6752e477", "metadata": {}, "outputs": [ @@ -203,7 +203,7 @@ "{'t0': np.float64(2027.0454838983064)}" ] }, - "execution_count": 15, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -214,7 +214,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 8, "id": "eba675c8", "metadata": {}, "outputs": [], @@ -232,7 +232,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 9, "id": "7dba325f", "metadata": {}, "outputs": [], @@ -280,13 +280,13 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 10, "id": "ad03fc67", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAxv5JREFUeJzs3Xd4XOWZ9/HvqMyMymjUe3XvFYyNCcH03ksKfZMlkAQSNhtC9g2YTQJJdsOShEBClmCIQ4nphECAUBI2gHHvXVbvZYpGU895/xAWFpJsSdZYkvX7XJevizlzZs4zltE993nu534spmmaiIiIiIiIiMiwihnpAYiIiIiIiIgci5Rwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREokAJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAqUcMuot2LFCiwWC2vWrOn3nP3792OxWFixYsXRG9gwevfdd7FYLIf8DKeeeioWi4XS0tIhXeOhhx7q871H8u9u+fLlWCwWYmJi2LdvX6/nOzo6SElJwWKxcP311w/bdY/kMx/4Wb377rsDOq+vP5dffjkAFouF5cuXd79m27ZtLF++nP379w96XCIio5FieBfF8OuH7bqK4TLWxI30AESGQ15eHh988AETJ04c6aEcEYfDwaOPPtorMJWXl/Puu++SkpIy5Pd+6KGHyMzM7PXeo+HvLjk5mccee4wf/vCHPY6vWrWKUChEfHz8CI3syN17770sW7asx7GMjAwAPvjgAwoLC7uPb9u2jXvuuYdTTjllyF/KRETGmtEQh4aDYrhiuGK49EUz3HJMsNlsLF68mKysrJEeSr98Pt9hz7nqqqt4//332b17d4/jv//97ykoKGDp0qXDPq7R8Hd31VVX8fjjj2MYRo/jjz76KJdccglWq3WERnbkJk+ezOLFi3v8mTx5MgCLFy/uEaxFRMaj0RCHDkcxvH+K4SKHpoRbjgl9lRcdKHXaunUrX/ziF3E6neTk5HDjjTficrl6vN40TR566CHmzZtHQkICaWlpXH755b1KpN58800uuugiCgsLsdvtTJo0iZtuuonm5uYe5x249rp167j88stJS0sb0N3nM844g6KiIn7/+993HzMMg8cff5zrrruOmJje/8v6/X7uvPNOysrK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JTabbUB3q5OSkjjhhBN4/vnne5xvGAYrV66ksLCQKVOmDPYjDciSJUu48cYbueSSS7jkkkv6Pe+0005j27ZtrFu3rsfxJ554AovF0r1n5rJly/B4PLz88ss9znvyySd7PJ46dSqTJ09m48aNff4bOO6443A4HMP0Kfs3lFkFEZHxTDG8J8VwxXAZfTTDLWPG22+/zf79+3sdP/fcc4/ofZcuXcq//uu/csMNN7BmzRpOPvlkkpKSqKur4/3332f27NncfPPNTJs2jYkTJ/K9730P0zRJT0/nlVde6bENxnC6/fbbuf322w95zhlnnMFZZ53FHXfcgdvtZunSpWzatIm7776b+fPnc80113SfO3v2bJ5++mmeeeYZJkyYgN1u7/4i8ln33XcfZ5xxBsuWLeM73/kOVquVhx56iC1btvDUU08N+a7/QDz66KOHPefb3/42TzzxBOeddx7/+Z//SUlJCa+++ioPPfQQN998c/eXiWuvvZb/+Z//4dprr+XHP/4xkydP5i9/+Qt//etfe73nb3/7W8455xzOOussrr/+egoKCmhtbWX79u2sW7eOVatWDftn/axZs2YB8Mgjj+BwOLDb7ZSVlfUq9xMRGWsUw3tTDFcMl/FBCbeMGXfccUefx8vLy4/4vX/729+yePFifvvb3/LQQw9hGAb5+fksXbq0u6lHfHw8r7zyCrfddhs33XQTcXFxnH766bz11lsUFxcf8RiGwmKx8OKLL7J8+XIee+wxfvzjH5OZmck111zDvffe2+NO/j333ENdXR1f/epX8Xg8lJSU9PnlB+Dzn/88b7/9NnfffTfXX389hmEwd+5cXn75Zc4///yj9On6l5WVxT//+U/uvPNO7rzzTtxuNxMmTOBnP/tZjy84iYmJvP3229x2221873vfw2KxcOaZZ/L0009z4okn9njPZcuWsXr1an784x/zrW99i7a2NjIyMpgxYwZXXnnlUflcZWVlPPDAA/ziF7/glFNOIRKJ8Nhjj/XbeEZEZKxQDO9NMVwxXMYHi2ma5kgPQkRERERERORYozXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREomBM78NtGAa1tbU4HA4sFstID0dERGTATNPE4/GQn59PTMz4u/+tGC4iImPV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KCIiIjIIiuEiIjLWqc5HREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVxIz0AERGRsSDRGsf+n5w30sMQERGRMUQz3CIiIiIiIiJRoIRbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYmCuJEegIiIiIiIiEi0JFrj2P+T80bk2prhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYRERERERGJAiXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREokAJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYRERERERGJAiXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREQGyDBMIoY50sOIur///e9ccMEF5OfnY7FYePHFF7ufC4VC3HHHHcyePZukpCTy8/O59tprqa2tHbkBi4iIjFJKuEVERAag3Rfk77ubWLu/daSHEnUdHR3MnTuXBx98sNdzPp+PdevW8YMf/IB169bx/PPPs2vXLi688MIRGKmIiMjoFjfSAxARERnNIobJviYv6yvbqXV1Mq8odaSHFHXnnHMO55xzTp/POZ1O3nzzzR7HfvWrX7Fo0SIqKyspLi4+GkMUEREZE5Rwi4iI9MPlC7G+qo09jV4SrbGk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nztjDNu3b+eLX/zimP+IvJhN17wFg0GA8/YwDXw9sFoz28zE33UlJSXk5ubyxBNPkJmZyTXXXDP5NzYNJmvuRrp2JBIBYMuWLXi9Xnbu3Dn4+++++y5er3fM68xXiuHJUwxPnmJ4chTDk6cYnrxZG8Mn3GbtInbvvfcap9NpXnvttfOOXQgGg4Pvefjhh43T6TTPPPOM2b9/v/nCF75wXqt4n89nNm3aZFauXGmOHTt23nUGWsW/9dZb5nvf+57Zs2ePOXHihHniiSdMeXm5+cxnPjMj9z0ZpmvujDHmW9/6lqmoqDAvvfSSOXz4sPnqV79qiouLTXd397Tf92SYzrkzxpjf/OY3BjANDQ3Tep+TbbrmraOjw7jdbnPLLbeYDz74wBw5csT89//+3016err54IMPZuTeL9R0/sz9n//zf8yuXbvMkSNHzD//8z+brKws80//9E/Tfs+TZTLm7vjx4+bv/u7vzPvvv29Onz5t3nrrLXPTTTeZgoIC09bWNnidrVu3mlWrVpm3337bvP3222blypU6FmwUiuHJUwxPnmJ4chTDk6cYnrzZGsPnVMINDPtr+/btg++xLMts27bNlJaWGrvdbq666iqzf//+wd9/9dVXR7zOyZMnjTHG7Nq1y2zatMk4nU6TmZlpli5darZt22b6+vqm+Y4nz3TNnTH9R2H8t//230xxcbFxOBzmk5/8pDlw4MA03u3kms65M8aYL3zhC+ayyy6bprubOtM5b++995659tprTUFBgXE4HGbz5s3ml7/85TTe7eSazrm75557TEFBgcnIyDCrVq0yjz322DTe6eSbjLlrbm421113nSkuLjbp6emmsrLS3HnnnUOOCunq6jJ33XWXcTgcxuFwmLvuusv09PRM053OPorhyVMMT55ieHIUw5OnGJ682RrDbWcHLyIiIiIiIiKTaE7t4RYRERERERG5WCjhFhEREREREZkCSrhFREREREREpoASbhEREREREZEpoIRbREREREREZAoo4RYRERERERGZAkq4RURERERERKaAEm4RERERERGRKaCEW2See+CBB1izZs1MD0NEREQmSDFc5OJnM8aYmR6EiEwNm8026u9/6Utf4p//+Z+JRCK43e5pGpWIiIiMRTFcZG5Qwi0yh7W2tg7+9xNPPMFf//Vfc+TIkcHXsrKycDqdMzE0ERERGYViuMjcoJJykTmstLR08JfT6cRmsw157aPlaF/+8pe5+eab+bu/+ztKSkpwuVw8+OCDxONx/uzP/oyCggIqKyv5f//v/533Wc3Nzdxxxx3k5+fjdru56aabOHXq1PTesIiIyByhGC4yNyjhFpEhXnnlFVpaWnjjjTf43ve+xwMPPMANN9xAfn4+7777Ll//+tf5+te/TmNjIwDBYJCPf/zj5Obm8sYbb/Dmm2+Sm5vL1q1biUajM3w3IiIi84diuMjFRQm3iAxRUFDA//7f/5ulS5fyla98haVLlxIMBvmLv/gLFi9ezLe//W0yMjL4z//8TwB++tOfkpKSwr/+67+ycuVKli1bxvbt2zlz5gyvvfbazN6MiIjIPKIYLnJxSZvpAYjIxWfFihWkpPz+eVxJSQn19fWDX6empuJ2u2lvbwdg165dHDt2DIfDcd51wuEwx48fn55Bi4iIiGK4yEVGCbeIDJGenn7e1zabbdjXLMsCwLIs1q9fz3/8x38MuVZRUdHUDVRERETOoxgucnFRwi0iF2zdunU88cQTFBcXk5eXN9PDERERkXFSDBeZWtrDLSIX7K677qKwsJCbbrqJ3/3ud5w8eZLXX3+db33rWzQ1Nc308ERERGQEiuEiU0sJt4hcsOzsbN544w2qq6u55ZZbWLZsGV/5ylcIhUJ6Wi4iInIRUwwXmVo2Y4yZ6UGIiIiIiIiIzDVa4RYRERERERGZAkq4RURERERERKaAEm4RERERERGRKaCEW0RERERERGQKKOEWERERERERmQJKuEVERERERESmgBJuERERERERkSmghFtERERERERkCijhFhEREREREZkCSrhFREREREREpoASbhEREREREZEpoIRbREREREREZAr8f8lDKnAFCkkRAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAxgJJREFUeJzs3Xd4XNW19/HvqIxm1Ea9V/dewRhTDASCiSF0SOhwk5BKCuk3wZBynXLDhYRcuMmbYDoEMDX0mtCNbblXbKv3MkXT55z3D2FhYckq1liS9fs8jx48Z87M7JGE1qyz117bYpqmiYiIiIiIiIgMq5iRHoCIiIiIiIjI0UgJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbccFfbt24fFYmHVqlUjPZQx5+abb8ZisYz0MI6oa665hrKysiE99pRTTuGUU04Z0TGIiBxNFMOHTjF8cBTDZSQo4ZZRb9WqVVgsFj788MORHkrU7A+YMTExVFdXH3S/y+XCbrdjsVj45je/Oejn93q93HzzzbzxxhvDMNrhY7FYsFgsfOlLX+r1/v/8z//sPqelpeUIj+7wlJWVdY/9019+v/+g80frz0hE5HAohiuGK4bLeBc30gMQGQ6lpaX4fD7i4+NHeiiHJSEhgYceeogf/vCHPY6vXr36sJ7X6/Vyyy23ABx0ZfdnP/sZP/7xjw/r+Q+HzWbj8ccf53//93+xWq097nvooYew2Wy9BrexYN68edx4440HHbdarfz1r3/FMIzuY4f6GYmIHM0Uww9NMXxkKIbLcNEMtxwVLBYLNpuN2NjYkR5Kn7xeb7/nfO5zn+Ohhx466PiDDz7I8uXLozEs4uLisNlsUXnugVi2bBkul4vnn3++x/F33nmHvXv3Ru19HwmFhYVcccUVB33FxMQQHx9PQkLCSA9RRGTEKYYPnWJ49CiGy3BRwi1Hhd7Wf11zzTUkJydTW1vLeeedR3JyMtnZ2Xz/+98nEon0eLxhGNx2223MnDkTm81Gbm4u119/Pe3t7T3Oe+qpp1i+fDkFBQUkJCQwceJEfvnLXx70fKeccgqzZs1i7dq1nHzyySQmJvLTn/603/dx2WWXUVFRwfbt27uPNTQ08Nprr3HZZZf1+pimpib+4z/+g9zcXGw2G3PnzuWee+7p8b3Jzs4G4JZbbukuibr55puB3td/hcNhfvnLXzJx4kQSEhIoKyvjpz/9KYFAoMd5ZWVlnH322bz11lssWrQIm83GhAkTuPfee/t9r/sVFhZy8skn8+CDD/Y4/sADDzB79mxmzZrV6+MeffRRFi5ciN1uJysriyuuuILa2tqDznvyySeZNWsWNpuNWbNm8cQTT/T6fAP9HRguB67/6u9nJCJyNFMMVwxXDJejmRJuOapFIhHOPPNMMjMz+e///m+WLl3KH/7wB/7yl7/0OO/666/nBz/4ASeccAK333471157LQ888ABnnnkmoVCo+7xVq1aRnJzM9773PW6//XYWLlzITTfd1Gs5V2trK2eddRbz5s3jtttu49RTT+13vCeffDJFRUU9AtcjjzxCcnJyr1eJfT4fp5xyCvfddx+XX345v//973E4HFxzzTXcfvvtAGRnZ3PnnXcCcP7553Pfffdx3333ccEFF/Q5ji996UvcdNNNLFiwgP/5n/9h6dKlrFy5ki984QsHnbt7924uuugizjjjDP7whz+Qnp7ONddcw5YtW/p9v/tddtllPPPMM3g8HqDrw8Kjjz7a5weUVatWcckllxAbG8vKlSv58pe/zOrVqznxxBPp6OjoPu+ll17iwgsvxGKxsHLlSs477zyuvfbaXtcSDvR3YDBCoRAtLS09vnqbJRnKz0hE5GinGK4YrhguRwVTZJS7++67TcBcs2ZNn+fs3bvXBMy77767+9jVV19tAuYvfvGLHufOnz/fXLhwYfftf//73yZgPvDAAz3Oe+GFFw467vV6D3rt66+/3kxMTDT9fn/3saVLl5qAeddddw3oPa5YscIEzObmZvP73/++OWnSpO77jj32WPPaa681TdM0AfMb3/hG93233XabCZj3339/97FgMGgef/zxZnJysulyuUzTNM3m5mYTMFesWNHna+9XUVFhAuaXvvSlHud9//vfNwHztdde6z5WWlpqAua//vWv7mNNTU1mQkKCeeONN/b7vve/n7a2NtNqtZr33XefaZqm+c9//tO0WCzmvn37enxv9r+/nJwcc9asWabP5+t+rmeffdYEzJtuuqn72Lx588z8/Hyzo6Oj+9hLL71kAmZpaWn3scH8DixdutRcunRpv+9t//fm01/7fwZXX311jzEc6mckIjJWKYYrhiuGy3inGW456n31q1/tcfukk05iz5493bcfffRRHA4HZ5xxRo+rmAsXLiQ5OZnXX3+9+1y73d79b7fbTUtLCyeddBJer7dHCRl0NU+59tprBz3eyy67jN27d7NmzZru//Z1lfi5554jLy+PL37xi93H4uPjueGGG/B4PLz55puDfv3nnnsOgO9973s9ju9vHPLPf/6zx/EZM2Zw0kkndd/Ozs5m6tSpPb7H/UlPT2fZsmXda98efPBBlixZQmlp6UHnfvjhhzQ1NfH1r3+9x7q15cuXM23atO7x1dfXU1FRwdVXX43D4eg+74wzzmDGjBk9nnMwvwODcdxxx/Hyyy/3+LrqqquG9FwiIuORYvjgKIYrhsvooy7lclSz2Wzd62r2S09P77GmZ9euXTidTnJycnp9jqampu5/b9myhZ/97Ge89tpruFyuHuc5nc4etwsLCw/q2DkQ8+fPZ9q0aTz44IOkpaWRl5fHaaed1uu5lZWVTJ48mZiYntfOpk+f3n3/YFVWVhITE8OkSZN6HM/LyyMtLe2g5ywpKTnoOT79PR6Iyy67jCuvvJKqqiqefPJJfve73/U5PoCpU6cedN+0adN46623epw3efLkg86bOnUq69at6749mN+BwcjKyuL0008f0mNFRMY7xXDFcMVwORoo4Zaj2kA6nhqGQU5ODg888ECv9+8P9h0dHSxdupTU1FR+8YtfMHHiRGw2G+vWreNHP/pRj+0hoOeV9MG67LLLuPPOO0lJSeHSSy89KBgfCZ9uwtKXvr7HpmkO6vU+//nPk5CQwNVXX00gEOCSSy4Z1OMPx0B/B0RE5MhRDB86xfBPKIbLSFPCLePexIkTeeWVVzjhhBMOGWDfeOMNWltbWb16NSeffHL38b179w77mC677DJuuukm6uvrue+++/o8r7S0lI0bN2IYRo+Avr80bn8510AD7/7HGIbBrl27uq+yAzQ2NtLR0dFridhwsNvtnHfeedx///2cddZZZGVl9Tk+gB07dhw0a7Bjx47u+/f/d9euXQc9x44dO3rcHujvQDQN5mckIiJdFMMPfk7F8CNPMVwORWu4Zdy75JJLiEQi/PKXvzzovnA43N0xc/9V4AOv+gaDQf73f/932Mc0ceJEbrvtNlauXMmiRYv6PO9zn/scDQ0NPPLIIz3G/Kc//Ynk5GSWLl0KQGJiIkCP7p+Hek6A2267rcfxW2+9FSCqe2p+//vfZ8WKFfz85z/v85xjjjmGnJwc7rrrrh5bnDz//PNs27ate3z5+fnMmzePe+65p0ep4Msvv8zWrVt7POdAfweiaTA/IxER6aIYfvBzgmL4forhMhpohlvGjL///e+88MILBx3/9re/fVjPu3TpUq6//npWrlxJRUUFn/3sZ4mPj2fXrl08+uij3H777Vx00UUsWbKE9PR0rr76am644QYsFgv33XffoMuuBmog7+srX/kK//d//8c111zD2rVrKSsr47HHHuPtt9/mtttuIyUlBei68jxjxgweeeQRpkyZQkZGBrNmzep1f8y5c+dy9dVX85e//KW7BO+DDz7gnnvu4bzzzhvQ1ihDNXfuXObOnXvIc+Lj4/ntb3/Ltddey9KlS/niF79IY2Mjt99+O2VlZXz3u9/tPnflypUsX76cE088keuuu462tjb+9Kc/MXPmzO7tS2DgvwPRNJifkYjIWKMYfjDFcMVwGSdGskW6yEDs31Kkr6/q6uo+txRJSko66Pk+vYXGfn/5y1/MhQsXmna73UxJSTFnz55t/vCHPzTr6uq6z3n77bfNxYsXm3a73SwoKDB/+MMfmi+++KIJmK+//nr3eUuXLjVnzpw54Pf46W0z+sKnthQxTdNsbGw0r732WjMrK8u0Wq3m7Nmze3wf9nvnnXfMhQsXmlartcfWFb19P0KhkHnLLbeY5eXlZnx8vFlcXGz+5Cc/6bFtiml2bZuxfPnyg15roNtu9PZ+Pq2v780jjzxizp8/30xISDAzMjLMyy+/3KypqTno8Y8//rg5ffp0MyEhwZwxY4a5evXqg7bz2G8gvwOD2VKkt+/Nfr2Noa+fkYjIWKUY/gnF8E8ohst4YjHNKF3aExERERERERnHtIZbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFMSN9AAOh2EY1NXVkZKSgsViGenhiIiIDIppmrjdbgoKCoiJGV/XwBXDRURkLBtoDB/TCXddXR3FxcUjPQwREZHDUl1dTVFR0UgP44hSDBcRkaNBfzF8TCfcKSkpQNebTE1NHeHRiIiIDI7L5aK4uLg7no0niuEiIjKWDTSGj+mEe38JWmpqqoK1iIiMWeOxpFoxXEREjgb9xfDxtWBMRERERERE5AhRwi0iIiIiIiISBUq4RURERERERKJgTK/hHqhIJEIoFBrpYcggxMfHExsbO9LDEBGREaYYPvYohouIfOKoTrhN06ShoYGOjo6RHooMQVpaGnl5eeOymZCIyHinGD62KYaLiHQ5qhPu/YE6JyeHxMRE/dEfI0zTxOv10tTUBEB+fv4Ij0hERI40xfCxSTFcRKSnozbhjkQi3YE6MzNzpIcjg2S32wFoamoiJydHpWkiIuOIYvjYphguIvKJo7Zp2v71XomJiSM8Ehmq/T87rd0TERlfFMPHPsVwEZEuR23CvZ9K0MYu/exERMY3xYGxSz87EZEuR33CPRy8wTBlP/4nZT/+J95geKSHIyIiIgOg+C0iIiNNCbeIiIiIiIhIFCjhHoCIYXb/+4O9bT1uR8M111yDxWLBYrEQHx9Pbm4uZ5xxBn//+98xDGPAz7Nq1SrS0tKiN1AREZFR7EjHb1AMFxGRnpRw9+OFzfWcfuub3bevuXsNJ/72NV7YXB/V1122bBn19fXs27eP559/nlNPPZVvf/vbnH322YTDKosTERE5lJGK36AYLiIin1DCfQgvbK7na/evo9EV6HG8wenna/evi2rQTkhIIC8vj8LCQhYsWMBPf/pTnnrqKZ5//nlWrVoFwK233srs2bNJSkqiuLiYr3/963g8HgDeeOMNrr32WpxOZ/eV9ptvvhmA++67j2OOOYaUlBTy8vK47LLLuvfLFBERGetGMn6DYriIiHxCCXcfIobJLc9spbfis/3Hbnlm6xEpT9vvtNNOY+7cuaxevRqAmJgY/vjHP7JlyxbuueceXnvtNX74wx8CsGTJEm677TZSU1Opr6+nvr6e73//+0DXFh2//OUv2bBhA08++ST79u3jmmuuOWLvQ0REJFpGY/wGxXARkfEqbqQHMFp9sLeNeqe/z/tNoN7p54O9bRw/MfOIjWvatGls3LgRgO985zvdx8vKyvjVr37FV7/6Vf73f/8Xq9WKw+HAYrGQl5fX4zmuu+667n9PmDCBP/7xjxx77LF4PB6Sk5OPyPsQERGJhtEav0ExXERkPNIMdx+a3H0H66GcN1xM0+ze2/KVV17hM5/5DIWFhaSkpHDllVfS2tqK1+s95HOsXbuWc845h5KSElJSUli6dCkAVVVVUR+/iMhYpS2mxobRGr9BMVxEZKSMZAxXwt2HnBTbsJ43XLZt20Z5eTn79u3j7LPPZs6cOTz++OOsXbuWP//5zwAEg8E+H9/Z2cmZZ55JamoqDzzwAGvWrOGJJ57o93EiIiJjwWiN36AYLiIyHqmkvA+LyjPId9hocPp7XQdmAfIcNhaVZxyxMb322mts2rSJ7373u6xduxbDMPjDH/5ATEzXdZN//OMfPc63Wq1EIpEex7Zv305rayu/+c1vKC4uBuDDDz88Mm9AREQkykZj/AbFcBGR8Uoz3H2IjbGw4pwZQFdwPtD+2yvOmUFszKfvHR6BQICGhgZqa2tZt24d//Vf/8W5557L2WefzVVXXcWkSZMIhUL86U9/Ys+ePdx3333cddddPZ6jrKwMj8fDq6++SktLC16vl5KSEqxWa/fjnn76aX75y19G5T2IiIgcaSMdv0ExXEREPqGE+xCWzcrnzisWkJOa0ON4nsPGnVcsYNms/Ki99gsvvEB+fj5lZWUsW7aM119/nT/+8Y889dRTxMbGMnfuXG699VZ++9vfMmvWLB544AFWrlzZ4zmWLFnCV7/6VS699FKys7P53e9+R3Z2NqtWreLRRx9lxowZ/OY3v+G///u/o/Y+REREjrSRjN+gGC4iIp+wmKZ5ZPfFGEYulwuHw4HT6SQ1NbXHfX6/n71791JeXo7NdnjrtNz+ELNvfgmAVdcey0mTs6N6ZVy6DOfPUETkcHmDYWbc9CIAW39xJonWw1+Vdag4drQ7EjFc8XvkKIaLyGgykjFcM9wDcGBwXlSeoWAtIiIyBih+i4jISFPTtAFItMax7zfLR3oYIiIiMgiK3yIiMtI0wy0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRMG43IfbH4oQjBhH5LWssTHY4mOPyGsNxhtvvMGpp55Ke3s7aWlpA3pMWVkZ3/nOd/jOd74z6Ne75ppr6Ojo4Mknnxz0Y0VERPYb7zFc8VtEZGwZdwm3PxThpS0NOP2hI/J6Dls8n52ZN6iAfc0113DPPfdw/fXXc9ddd/W47xvf+Ab/+7//y9VXX82qVauGebSH5+abb+aWW2456PjLL7/M7bffjmma3cdOOeUU5s2bx2233XYERygiImPZaI/hit8iIvJp4y7hDkYMnP4QtrhYEuKiW1EfCHe9VjBiDPoKeXFxMQ8//DD/8z//g91uB8Dv9/Pggw9SUlISjeEOi5kzZ/LKK6/0OJaRkYHVah2hEYmIyNFiLMRwxW8RETnQuF3DnRAXQ6I1Lqpfh/NhYMGCBRQXF7N69eruY6tXr6akpIT58+f3ODcQCHDDDTeQk5ODzWbjxBNPZM2aNT3Oee6555gyZQp2u51TTz2Vffv2HfSab731FieddBJ2u53i4mJuuOEGOjs7BzXuuLg48vLyenxZrVauueYazjvvPKBrBuDNN9/k9ttvx2KxYLFYeh2PiIhIb0ZzDFf8FhGRA42rhNs0TXzBMKGwQTBsEAhHovoVDBuEwkaPUqzBuO6667j77ru7b//973/n2muvPei8H/7whzz++OPcc889rFu3jkmTJnHmmWfS1tYGQHV1NRdccAHnnHMOFRUVfOlLX+LHP/5xj+f46KOPWLZsGRdeeCEbN27kkUce4a233uKb3/zmkMZ+KLfffjvHH388X/7yl6mvr6e+vp7i4uJhfx0RkeEUMT75W/7B3rYetyX6xlIMV/wWEZH9RrSkPBKJcPPNN3P//ffT0NBAQUEB11xzDT/72c+wWCzD/nq+UITj/uu1YX/e/iyfk4/DPvjHXXHFFfzkJz+hsrISgLfffpuHH36YN954o/uczs5O7rzzTlatWsVZZ50FwF//+ldefvll/va3v/GDH/yAO++8k4kTJ/KHP/wBgKlTp7Jp0yZ++9vfdj/PypUrufzyy7sbqkyePJk//vGPLF26lDvvvBObzTagMW/atInk5OTu2zNmzOCDDz7ocY7D4cBqtZKYmEheXt6gvy8iIkfaC5vrWfH0lu7b19y9hnyHjRXnzGDZrPwRHNn4MZZiuOK3iIjsN6IJ929/+1vuvPNO7rnnHmbOnMmHH37Itddei8Ph4IYbbhjJoY0K2dnZLF++nFWrVmGaJsuXLycrK6vHOR999BGhUIgTTjih+1h8fDyLFi1i27ZtAGzbto3jjjuux+OOP/74Hrc3bNjAxo0beeCBB7qPmaaJYRjs3buX6dOnD2jMU6dO5emnn+6+nZCQMLA3KyIySr2wuZ6v3b+OT89zNjj9fO3+ddx5xQIl3dKD4reIiOw3ogn3O++8w7nnnsvy5cuBrm0rHnrooYOuqA4Xe3ws7//0NP65sZ5UWzx2a3S3+vAFI7j8ocPaUuS6667rLgv785//PFxDO4jH4+H666/v9ULHYJq8WK1WJk2aNJxDExEZMRHD5JZnth6UbAOYgAW45ZmtnDEjj9iY4a/Mkk+MtRiu+C0iIjDCCfeSJUv4y1/+ws6dO5kyZQobNmzgrbfe4tZbb+31/EAgQCAQ6L7tcrkG9XoWiwW7NY74uBiscTEkxEU3WEcMk/i4mMMqj1+2bBnBYBCLxcKZZ5550P0TJ07EarXy9ttvU1paCkAoFGLNmjXd5WXTp0/vcdUa4L333utxe8GCBWzduvWIBVur1UokEjkiryUiMlQf7G2j3unv834TqHf6+WBvG8dPzDxyAxuHxloMV/wWEREY4aZpP/7xj/nCF77AtGnTiI+PZ/78+XznO9/h8ssv7/X8lStX4nA4ur/GQ6OO2NhYtm3bxtatW4mNPfjDRVJSEl/72tf4wQ9+wAsvvMDWrVv58pe/jNfr5T/+4z8A+OpXv8quXbv4wQ9+wI4dO3jwwQcP2gP0Rz/6Ee+88w7f/OY3qaioYNeuXTz11FNRaboCXdUM77//Pvv27aOlpQXDMKLyOiIih6PJ3XeyPZTzxop//etfnHPOORQUFGCxWHjyySd73H/zzTczbdo0kpKSSE9P5/TTT+f9998fmcGOUorfIiKjx0g2Ph3RhPsf//gHDzzwAA8++CDr1q3jnnvu4b//+7+55557ej3/Jz/5CU6ns/ururp6yK8dCBt4g+GofgXCwxOEUlNTSU1N7fP+3/zmN1x44YVceeWVLFiwgN27d/Piiy+Snp4OdJWUPf744zz55JPMnTuXu+66i//6r//q8Rxz5szhzTffZOfOnZx00knMnz+fm266iYKCgmF5D5/2/e9/n9jYWGbMmEF2djZVVVVReR0RkcORkzKwhlMDPW+s6OzsZO7cuX2WQk+ZMoU77riDTZs28dZbb1FWVsZnP/tZmpubj8j4xkoMV/wWERl5L2yu5/Rb3+y+fc3dazjxt6/xwub6I/L6FnOoe1YNg+LiYn784x/zjW98o/vYr371K+6//362b9/e7+NdLhcOhwOn03lQQPP7/ezdu5fy8vIeHTr9oQgvbWnA6Q8N3xs5BIctns/OzDusddzjVV8/QxGRIyVimJz429docPp7XcdtAfIcNt760WlDWsN9qDg2WlgsFp544onuvZh7s/99vPLKK3zmM58Z0PMqhh/dFMNFZDToq/Hp/oh9OI1PBxrDR3QNt9frJSam5yR7bGxsVMuTbPGxfHZmHsHIkSmBssbGKFCLiIxRsTEWVpwzg6/dvw4L9AjY+4P1inNmjOuGacFgkL/85S84HA7mzp0b1ddSDBcRkYEaLY1PRzThPuecc/j1r39NSUkJM2fOZP369dx6661cd911UX1dW3ysAqiIiAzIsln53HnFAlY8vYVG1yeNO/PG+T7czz77LF/4whfwer3k5+fz8ssvH7T11YEOt/HpforhIiIyEKOl8emIJtx/+tOf+PnPf87Xv/51mpqaKCgo4Prrr+emm24ayWGJiIj0sGxWPidMymL2zS8BsOraYzlpcva4ntk+9dRTqaiooKWlhb/+9a9ccsklvP/+++Tk5PR6/sqVK7nllluO8ChFRGS8Gi2NT0e0aVpKSgq33XYblZWV+Hw+PvroI371q19htVpHclgiIiIHOTC5XlSeMa6Tbejqsj1p0iQWL17M3/72N+Li4vjb3/7W5/nD2fhURESkP6Ol8emIznCLiIjI0cEwjB4l45+WkJBAQkLCERyRiIiMZ4vKM8h32PptfLqoPCOq4xjRGe4jQftDjl362YmIjAyPx0NFRQUVFRUA7N27l4qKCqqqqujs7OSnP/0p7733HpWVlaxdu5brrruO2tpaLr744mEdh+LA2KWfnYiMtP2NT+GTRqf7HcnGp0ftDLfVaiUmJoa6ujqys7OxWq1YLOO7/G+sME2TYDBIc3MzMTExWmIgInKEffjhh5x66qndt7/3ve8BcPXVV3PXXXexfft27rnnHlpaWsjMzOTYY4/l3//+NzNnzhyW11cMH7sUw0VkNBkNjU+P2oQ7JiaG8vJy6uvrqaurG+nhyBAkJiZSUlJy0NZxIiISXaeccgqm2VsBXpfVq1dH9fUVw8c+xXARGS1GuvHpUZtwQ9cV8pKSEsLhMJFIZKSHI4MQGxtLXFycZjRERMYpxfCxSzFcREabkWx8elQn3AAWi4X4+Hji4+NHeigiIiIyCIrhIiIy1qnOR0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYRERERERGJAiXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKIgb6QGIiIiMBYnWOPb9ZvlID0NERETGEM1wi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREokAJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAriRnoAIiIiIiIiItGSaI1j32+Wj8hra4ZbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYRERERERGJAiXcIiIiIiIiIlGghFtEREREREQkCpRwi4iIiIiIiESBEm4RERERERGRKFDCLSIiIiIiIhIFSrhFREREREREokAJt4iIiIiIiEgUKOEWERERERERiQIl3CIiIiIiIiJRoIRbREREREREJAqUcIuIiIiIiIhEgRJuERERERERkShQwi0iIiIiIiISBUq4RURERERERKJACbeIiIiIiIhIFCjhFhEREREREYkCJdwiIiIiIiIiUaCEW0RERERERCQKlHCLiIiIiIiIRIESbhEREREREZEoUMItIiIiIiIiEgVKuEVERERERESiQAm3iIiIiIiISBQo4RYREZEe/vWvf3HOOedQUFCAxWLhySef7L4vFArxox/9iNmzZ5OUlERBQQFXXXUVdXV1IzdgERGRUUoJt4iIyAA1uwNsb3BhmuZIDyWqOjs7mTt3Ln/+858Pus/r9bJu3Tp+/vOfs27dOlavXs2OHTv4/Oc/PwIjFRERGd3iRnoAIiIio10oYrCjwcXGGifxsTFMzE4mPtYy0sOKmrPOOouzzjqr1/scDgcvv/xyj2N33HEHixYtoqqqipKSkiMxRBERkTFBCbeIiMghNLsDVFS3s7elk1iLhTibisM+zel0YrFYSEtLG+mhiIiIjCpKuEVERHpx4Ky2NximOD2RzkAY4+iuJh80v9/Pj370I774xS+Smpra53mBQIBAINB92+VyHYnhiYiIjKgRv0xfW1vLFVdcQWZmJna7ndmzZ/Phhx+O9LBERGQca3YH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IiIiIiIiGh0T7nEIIdAbiiMQTaC6RI8mlxnFfKpNRERERERE42DCPYZYUkLnQBQGTT4uqCtBXake+XyqTURERERERGlgwj2K7kAMgVgSc0oK0cin2kRERERERDRBTLhHcLwvBJOmABfNtaK2hE+1iYiIiIiIaOKYcJ+hUJ2PUr0GjRVmWApVUz0cIiIiopzRqfJx/D8/O9XDICKasZhwn6a4UIV1c6ywmzR8qk1ERERERETnhAn3afLzlHBZdFM9DCIiIiIiIpoB+BiXiIiIiIiIKAeYcBMRERERERHlABNuIiIiIiIiohxgwk1ERERERESUA0y4iYiIiIiIiHKACTcRERERERFRDjDhJiIiIiIiIsoBJtxEREREREREOcCEm4iIiIiIiCgHmHATERERERER5QATbiIiIiIiIqIcYMJNRERERERElANMuImIiIiIiIhygAk3ERERERERUQ4w4SYiIiIiIiLKgfypHsC5EEIAAPx+/xSPhIiIaOIG49dgPJtNGMOJiGg6SzeGT+uEOxAIAABcLtcUj4SIiChzgUAAJpNpqocxqRjDiYhoJhgvhivENL6tLssyOjs7YTAYoFAozvl8fr8fLpcLbW1tMBqNWRjh7MG5ywznLXOcu8xx7jKX7bkTQiAQCKC8vBxK5exa5cUYfv7g3GWG85Y5zl3mOHeZm6oYPq2fcCuVSjidzqyf12g08gc4Q5y7zHDeMse5yxznLnPZnLvZ9mR7EGP4+YdzlxnOW+Y4d5nj3GVusmP47LqdTkRERERERDRJmHATERERERER5QAT7tOo1Wps3rwZarV6qocy7XDuMsN5yxznLnOcu8xx7s5f/LfJHOcuM5y3zHHuMse5y9xUzd20bppGREREREREdL7iE24iIiIiIiKiHGDCTURERERERJQDTLiJiIiIiIiIcmBGJdwPPPAAVqxYAYPBgNLSUlxzzTU4ePDgsGOi0SjuuusuFBcXQ6/X4/rrr4fX6x36/p49e3DLLbfA5XJBq9ViwYIFePDBB4ed44033oBCoTjrP4/HMynXmQuTNXcAEIvF8M///M+orKyEWq1GVVUVHnnkkZxfY65M1tzdfvvtI/7c1dfXT8p15sJk/tw9/vjjWLJkCXQ6Hex2O770pS+ht7c359eYK5M5dw899BAWLFgArVaLefPm4Te/+U3Ory9XsjFvvb29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xTe+8Q2hVCrFK6+8MqnXm02TNXeBQEA4nU5xww03iH379ok333xT1NXViS9/+cuTer3ZNFlzN2jjxo1i1apVk3JtuTZZc/foo4+K/Px88bOf/UwcOXJEvPXWW2L58uVi5cqVk3q92TRZc3fw4EGxZcsWcejQIfHee++Jm2++WVgslqGgNN1kY95efPFF8cgjj4jm5mZx7Ngx8cILL4gFCxYM6/w6uKXIt771LbF//37x0EMPcVuwcTCGZ44xPHOM4ZljDM8M43fmpmsMn1EJN4AR/3v00UeHjolEIuJrX/uaKCoqEjqdTlx77bXC7XYPfX/z5s0jnqOysnLomO9973tizpw5QqPRCIvFIi655BLx2muvTeKVZt9kzZ0Qqfb869evF1qtVjidTrFp06Zpe2dciMmdu4GBAaHVasX//M//TNLV5dZkzt1PfvITsXDhQqHVaoXdbhdf+MIXRHt7+yRdafZN1ty1traKxsZGodVqhdFoFFdffbU4cODAJF5pdmVj3l577TWxZs0aYTKZhEajEXV1deIf//Efzyphe/3110VjY6NQqVSipqZm2HvQ2RjDM8cYnjnG8MwxhmeG8Ttz0zWGK04NnoiIiIiIiIiyaPq3qCMiIiIiIiI6DzHhJiIiIiIiIsoBJtxEREREREREOcCEm4iIiIiIiCgHmHATERERERER5QATbiIiIiIiIqIcYMJNRERERERElANMuImIiIiIiIhygAk30Sx3++2345prrpnqYRAREdEEMYYTnf/yp3oARJQ7CoVizO9v3rwZDz74IIQQkzQiIiIiSgdjONHMoBD8v5RoxvJ4PEN/fuKJJ3Dffffh4MGDQ6/p9Xro9fqpGBoRERGNgTGcaGZgSTnRDFZWVjb0n8lkgkKhGPaaXq8/qxztkksuwde//nXcc889KCoqgs1mw//+7/8iFArhjjvugMFgQG1tLV566aVh79XS0oLLL78cer0eNpsNt956K3p6eib5iomIiGYGxnCimYEJNxGd5de//jWsVit27tyJr3/967jzzjtx4403Yu3atdi9ezcuvfRS3HrrrQiHwwCAgYEBfPrTn0ZTUxM++OADbN++HV6vFzfddNMUXwkREdHswhhOdH5hwk1EZ1myZAn+5V/+BXV1dbj33nuh0WhgtVrxla98BXV1dbjvvvvQ29uLvXv3AgD+67/+C01NTfiP//gPzJ8/H01NTXjkkUfw+uuv49ChQ1N8NURERLMHYzjR+YVN04joLIsXLx76c15eHoqLi7Fo0aKh12w2GwCgq6sLALBnzx68/vrrI64lO3LkCObOnZvjERMRERHAGE50vmHCTURnKSgoGPa1QqEY9tpg51RZlgEAwWAQV155Jb73ve+ddS673Z7DkRIREdHpGMOJzi9MuInonC1duhRbt25FVVUV8vP5sUJERDRdMIYT5RbXcBPRObvrrrvQ19eHW265Be+//z6OHDmCl19+GXfccQckSZrq4REREdEoGMOJcosJNxGds/Lycrz99tuQJAmXXnopFi1ahHvuuQdmsxlKJT9miIiIzleM4US5pRBCiKkeBBEREREREdFMw9tWRERERERERDnAhJuIiIiIiIgoB5hwExEREREREeUAE24iIiIiIiKiHGDCTURERERERJQDTLiJiIiIiIiIcoAJNxEREREREVEOMOEmIiIiIiIiygEm3EREREREREQ5wISbiIiIiIiIKAeYcBMRERERERHlABNuIiIiIiIiohz4/94PJ/jcgq5VAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -317,7 +317,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 11, "id": "0a0d9d1f", "metadata": {}, "outputs": [], @@ -328,13 +328,13 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 12, "id": "b3d63417", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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2muxfft2nz5zdnY2Zs6cibfffrvl7+mLL76AyWTCVVddhRdeeKHV8UIIXHjhhdi0aRNuueUWTJgwAV999RUefvhhVFRU4Nlnn2059he/+AXeeustXHPNNZg1axY2btzY5ixDTU0NZsyY0fJlMCEhAV988QVuueUWmM1m3H///T59llNZLJZWX3oBIDY29rTlf/7+joho4OMYzjGcYzjHcOpBgqiLdu3aJQCIdevWCSGEkGVZpKeni/vuu6/VcX/4wx8EAPHhhx+edg5ZloUQQvz73/8WAMQzzzzT7jFbtmwRAMTq1atbvf7ll1+e9vzcuXPF3LlzWx6/+eabQqlUii1btrR67yuvvCIAiO+++67lOQBCqVSKgwcPnhaL3W5v9djtdosxY8aIs846q9Xz4eHh4sYbbzzt/W+88YYAIIqKioQQQtTW1gqNRiPOPfdcIUlSy3EvvviiACD+/e9/t/pMAMR//vOfludcLpdITk4WS5cuPe1ap8rKyhKLFy8WXq9XJCcniz/96U9CCCEOHTokAIjNmze3xLdz586W902YMEEkJiaKhoaGluf27t0rlEqluOGGG1qe++tf/9rqs5167ZP/Pu6//34BoNXvw2KxiJycHJGdnd3yd7Fp0yYBQIwcOVK4XK6WY59//nkBQOzfv7/Dz3zy53nxxRdFZGRky+/w8ssvF/Pnz2/1d9Ps448/FgDE448/3up8l112mVAoFOLEiRNCCCHy8/MFAHHnnXe2Ou6aa64RAMSjjz7a8twtt9wiUlJSRH19fatjr7rqKqHX61viKioqEgDEG2+80eFna/67aeun+Xdwagwd/Y6IaHDhGM4xnGM4x3DqWVxSTl22evVqJCUlYf78+QCalr5ceeWVeOeddyBJUstxH3zwAcaPH3/aHc/m9zQfEx8fj3vuuafdY9577z3o9Xqcc845qK+vb/mZPHkyIiIisGnTpnZjfe+99zBy5EiMGDGi1XvPOussADjtvXPnzsWoUaNOO49Op2v5s8FggMlkwpw5c7Bnz552r92R9evXw+124/777291N/PWW29FVFTUacuzIiIicN1117U81mg0mDZtGgoLC32+ZkhICK644gq8/fbbAJp+jxkZGZgzZ85px1ZVVSE/Px/Lli1DbGxsy/Pjxo3DOeecg88//9zn657s888/x7Rp01oVQImIiMAvf/lLFBcX49ChQ62Ov+mmm6DRaFoeN8fqz+e+4oor4HA48Nlnn8FiseCzzz5rdyna559/jpCQENx7772tnn/ooYcghMAXX3zRchyA04479U63EAIffPABlixZAiFEq/8GzzvvPJhMpoD/G/rDH/6AdevWtfrpz/vZiKh3cAznGM4xnGM49SwuKacukSQJ77zzDubPn4+ioqKW56dPn46///3v2LBhA84991wAQEFBAZYuXdrh+QoKCjB8+PAOi0McP34cJpMJiYmJbb5eW1vb4XsPHz7c7tKbU9+bk5PT5nGfffYZHn/8ceTn57faNxZoAZWSkhIAwPDhw1s9r9FoMGTIkJbXm6Wnp592rZiYGOzbt8+v615zzTV44YUXsHfvXqxZswZXXXVVm5+hvfgAYOTIkfjqq69gs9kQHh7u1/VLSkrabEEzcuTIltfHjBnT8nxmZmar42JiYgDAp31/zRISErBgwQKsWbMGdrsdkiThsssuaze+1NRUREZGthtf8/8qlcrTlhue+vdVV1cHo9GIV199Fa+++mqb1+zov9+OjB07tt02MUREbeEYzjGcYzjHcOp5TLipSzZu3Iiqqiq88847eOedd057ffXq1S2DdXeRZRmJiYntFnXpaB+LLMsYO3YsnnnmmTZfz8jIaPX45LvgzbZs2YILL7wQZ555Jl5++WWkpKRArVbjjTfeOK2ASU8JCQlp83lxShGQzkyfPh25ubm4//77UVRU1O5d4r6iuz73Nddcg1tvvRXV1dVYtGhRr7XVkGUZAHDdddfhxhtvbPOYcePG9UosREQcwzmG9yaO4TRYMeGmLlm9ejUSExPx0ksvnfbahx9+iI8++givvPIKdDodcnNzceDAgQ7Pl5ubi+3bt8Pj8bRbNCU3Nxfr16/H7Nmz2xxMOzv/3r17cfbZZwd8J/uDDz6AVqvFV1991arn4xtvvHHasb5eIysrC0BTj8shQ4a0PO92u1FUVNSjdz2vvvpqPP744xg5ciQmTJjQaXynOnLkCOLj41vujPvz95qVldXuOU++bne75JJLcNttt+GHH344ra3KqfGtX78eFoul1R3yU+PLysqCLMstszvNTv1szdVPJUkK6p3sYLWyIaK+hWM4x3CO4RzDqedxDzcFzOFw4MMPP8QFF1yAyy677LSfu+++GxaLBWvXrgUALF26FHv37sVHH3102rma724uXboU9fX1ePHFF9s95oorroAkSfjTn/502jFer/e0Fhwnu+KKK1BRUYHXXnutzc9js9k6/dwhISFQKBSt9rYVFxefVh0VAMLDwzuMp9mCBQug0WjwwgsvtLrT+/rrr8NkMvVYT02gqTLno48+ir///e/tHpOSkoIJEyZg1apVrT7PgQMH8PXXX+P8889vea550Pblc59//vnYsWMHvv/++5bnbDYbXn31VWRnZ7e59647REREYMWKFVi+fDmWLFnSYXySJJ323+Ozzz4LhULRUiW1+X9PrZD63HPPtXocEhKCpUuX4oMPPmjzi2tdXV0gH8dv/vyOiGhg4hjOMZxjOMdw6h2c4aaArV27FhaLBRdeeGGbr8+YMQMJCQlYvXo1rrzySjz88MN4//33cfnll+Pmm2/G5MmT0djYiLVr1+KVV17B+PHjccMNN+A///kPHnzwQezYsQNz5syBzWbD+vXrceedd+Kiiy7C3Llzcdttt+HJJ59Efn4+zj33XKjVahw/fhzvvfcenn/++Xb381x//fV49913cfvtt2PTpk2YPXs2JEnCkSNH8O677+Krr77ClClTOvzcixcvxjPPPIOFCxfimmuuQW1tLV566SUMHTr0tP1XkydPxvr16/HMM88gNTUVOTk5be53SkhIwCOPPILHHnsMCxcuxIUXXoijR4/i5ZdfxtSpU1sVV+luWVlZLf0dO/LXv/4VixYtwsyZM3HLLbe0tBTR6/Wt3j958mQAwO9+9ztcddVVUKvVWLJkSZt7w37729+2tPe49957ERsbi1WrVqGoqAgffPDBae0wulN7y8FOtmTJEsyfPx+/+93vUFxcjPHjx+Prr7/GJ598gvvvv79lv9eECRNw9dVX4+WXX4bJZMKsWbOwYcOGNvuLPvXUU9i0aROmT5+OW2+9FaNGjUJjYyP27NmD9evXo7Gxsds/66n8+R0R0cDEMZxjOMdwjuHUS3q/MDoNFEuWLBFarVbYbLZ2j1m2bJlQq9Ut7RMaGhrE3XffLdLS0oRGoxHp6enixhtvbNVewW63i9/97nciJydHqNVqkZycLC677DJRUFDQ6tyvvvqqmDx5stDpdCIyMlKMHTtW/PrXvxaVlZUtx5zaUkSIpvYfTz/9tBg9erQIDQ0VMTExYvLkyeKxxx4TJpOp5TgA4q677mrzc73++usiLy9PhIaGihEjRog33nhDPProo+LU/0sdOXJEnHnmmUKn0wkALe00Tm0p0uzFF18UI0aMEGq1WiQlJYk77rhDGAyGVsfMnTtXjB49+rSYbrzxRpGVldVmvCc7tW1GW9pqKSKEEOvXrxezZ88WOp1OREVFiSVLlohDhw6d9v4//elPIi0tTSiVylaf89SWIkIIUVBQIC677DIRHR0ttFqtmDZtmvjss89aHdPcNuO9995r9byvbTfa+zynauvvxmKxiAceeECkpqYKtVot8vLyxF//+teWFjfNHA6HuPfee0VcXJwIDw8XS5YsEWVlZae18xBCiJqaGnHXXXeJjIyMlv/Gzz77bPHqq6/6/dna+7s5WVsxtPc7IqLBgWM4x3CO4T/jGE49SSGEn5UKiIiIiIiIiKhT3MNNRERERERE1AOYcBMRERERERH1ACbcRERERERERD2ACTcRERERERFRD2DCTURERERERNQDmHATERERERER9QBVsAPoClmWUVlZicjISCgUimCHQ0RE5BchBCwWC1JTU6FUDq574BzDiYioP/N1DO/XCXdlZSUyMjKCHQYREVGXlJWVIT09Pdhh9CqO4URENBB0Nob364Q7MjISQNOHjIqKCnI0RERE/jGbzcjIyGgZzwYTjuFERNSf+TqG9+uEu3kJWlRUFAdrIiLqtwbjkmqO4URENBB0NoYPrg1jRERERERERL2ECTcRERERERFRD2DCTURERERERNQD+vUebl9JkgSPxxPsMMgParUaISEhwQ6DiIiCjGN4/8MxnIjoZwM64RZCoLq6GkajMdihUACio6ORnJw8KIsJERENdhzD+zeO4URETQZ0wt08UCcmJiIsLIz/6PcTQgjY7XbU1tYCAFJSUoIcERER9TaO4f0Tx3AiotYGbMItSVLLQB0XFxfscMhPOp0OAFBbW4vExEQuTSMiGkQ4hvdvHMOJiH42YIumNe/3CgsLC3IkFKjm3x337hERDS4cw/s/juFERE0GbMLdjEvQ+i/+7oiIBjeOA/0Xf3dERE0GfMLdHexuL7J/+z9k//Z/sLu9wQ6HiIiIfMDxm4iIgo0JNxEREREREVEPYMLtA0kWLX/eUdTY6nFPWLZsGRQKBRQKBdRqNZKSknDOOefg3//+N2RZ9vk8K1euRHR0dM8FSkRE1If19vgNcAwnIqLWmHB34ssDVVjwzOaWx8ve2Ikznt6ILw9U9eh1Fy5ciKqqKhQXF+OLL77A/Pnzcd999+GCCy6A18tlcURERB0J1vgNcAwnIqKfMeHuwJcHqnDHW3tQY3a1er7a5MQdb+3p0UE7NDQUycnJSEtLw6RJk/B///d/+OSTT/DFF19g5cqVAIBnnnkGY8eORXh4ODIyMnDnnXfCarUCAL755hvcdNNNMJlMLXfaly9fDgB48803MWXKFERGRiI5ORnXXHNNS79MIiKi/i6Y4zfAMZyIiH7GhLsdkizw2KeH0Nbis+bnHvv0UK8sT2t21llnYfz48fjwww8BAEqlEi+88AIOHjyIVatWYePGjfj1r38NAJg1axaee+45REVFoaqqClVVVfjVr34FoKlFx5/+9Cfs3bsXH3/8MYqLi7Fs2bJe+xxERNS3ffvtt1iyZAlSU1OhUCjw8ccft3vs7bffDoVCgeeee67X4utIXxy/AY7hRESDlSrYAfRVO4oaUWVytvu6AFBlcmJHUSNm5sb1WlwjRozAvn37AAD3339/y/PZ2dl4/PHHcfvtt+Pll1+GRqOBXq+HQqFAcnJyq3PcfPPNLX8eMmQIXnjhBUydOhVWqxURERG98jmIiKjvstlsGD9+PG6++WZceuml7R730Ucf4YcffkBqamovRtexvjp+AxzDiYiCySPJMNjcSIzS9up1OcPdjlpL+4N1IMd1FyFES2/L9evX4+yzz0ZaWhoiIyNx/fXXo6GhAXa7vcNz7N69G0uWLEFmZiYiIyMxd+5cAEBpaWmPx09E1F8NphZTixYtwuOPP45LLrmk3WMqKipwzz33YPXq1VCr1b0YXcf66vgNcAwnIgqmonobdhUbev26TLjbkRjp250PX4/rLocPH0ZOTg6Ki4txwQUXYNy4cfjggw+we/duvPTSSwAAt9vd7vttNhvOO+88REVFYfXq1di5cyc++uijTt9HRETUTJZlXH/99Xj44YcxevToYIfTSl8dvwGO4UREwSLJAidqrXB4ev+GOZeUt2NaTixS9FpUm5xt7gNTAEjWazEtJ7bXYtq4cSP279+PBx54ALt374Ysy/j73/8OpbLpvsm7777b6niNRgNJklo9d+TIETQ0NOCpp55CRkYGAGDXrl298wGIiGhAePrpp6FSqXDvvff6/B6XywWX6+ciZmazuSdC65PjN8AxnIgomGotTtSYnIjS9X76yxnudoQoFXh0ySgATYPzyZofP7pkFEKUp77aPVwuF6qrq1FRUYE9e/bgiSeewEUXXYQLLrgAN9xwA4YOHQqPx4N//OMfKCwsxJtvvolXXnml1Tmys7NhtVqxYcMG1NfXw263IzMzExqNpuV9a9euxZ/+9Kce+QxERDTw7N69G88//zxWrlzZsjzaF08++ST0en3LT3PC2N2CPX4DHMOJiPqakgY7jA5PUK7NhLsDC8ekYMV1k5AYFdrq+WS9Fiuum4SFY1J67NpffvklUlJSkJ2djYULF2LTpk144YUX8MknnyAkJATjx4/HM888g6effhpjxozB6tWr8eSTT7Y6x6xZs3D77bfjyiuvREJCAv7yl78gISEBK1euxHvvvYdRo0bhqaeewt/+9rce+xxERDSwbNmyBbW1tcjMzIRKpYJKpUJJSQkeeughZGdnt/u+Rx55BCaTqeWnrKysx2IM5vgNcAwnIupLLE4PiuttCNeEBOX6CiFE7/bF6EZmsxl6vR4mkwlRUVGtXnM6nSgqKkJOTg602q7t07I4PRi7/GsAwMqbpmJOXkKP3hmnJt35OyQi6iq724tRf/gKAHDoj+chTNP1ZWkdjWN9hUKhwEcffYSLL74YANDQ0ICqqtZ9rM877zxcf/31uOmmmzB8+HCfztsbYzjH7+DhGE5EfcWRajM2H61DtE4NVYgCSyd3zworX8dw7uH2wcmD87ScWA7WREQ0oFmtVpw4caLlcVFREfLz8xEbG4vMzEzExbVup6VWq5GcnOxzst1bOH4TEQ1uXknGiRorwoI0uw0w4fZJmEaF4qcWBzsMIiKiXrFr1y7Mnz+/5fGDDz4IALjxxhuxcuXKIEXlP47fRESDW43FhRqLEylROlicwdnDzYSbiIiIWpk3bx782XFWXFzcc8EQEREFqLjOBiEENKrglS5j0TQiIiIiIiIaUEwOD0oabYgJC+384B7EhJuIiIiIiIgGlAqDAxanF1Ha4C7qZsJNREREREREA4ZHknG81oKIUBUUiuAWzGTCTURERERERANGldGJOosLseGaYIfChJuIiIiIiIgGjsJ6KxQKQB0S/HQ3+BEQERERERERdYNGmxtlBjviglwsrdmgbAvm9EhwS3KvXEsTooRWHbxG6+355ptvMH/+fBgMBkRHR/v0nuzsbNx///24//77/b7esmXLYDQa8fHHH/v9XiIiomaDfQzn+E1E1LGyRhscbgkpUbpghwJgECbcTo+Erw9Ww9RLjc/1WjXOHZ3s14C9bNkyrFq1CrfddhteeeWVVq/dddddePnll3HjjTdi5cqV3Rxt1yxfvhyPPfbYac+vW7cOzz//fKuervPmzcOECRPw3HPP9WKERETUn/X1MZzjNxFRcDk9Ek7U2hAZqg52KC0GXcLtlmSYnB5oVSEI7eEG6C5v07Xckuz3HfKMjAy88847ePbZZ6HTNd2dcTqdWLNmDTIzM3si3G4xevRorF+/vtVzsbGx0GiCX7CAiIj6t/4whnP8JiIKnkqjAw02NzJj+8bsNjCI93CHqpQI06h69KcrXwYmTZqEjIwMfPjhhy3Pffjhh8jMzMTEiRNbHetyuXDvvfciMTERWq0WZ5xxBnbu3NnqmM8//xzDhg2DTqfD/PnzUVxcfNo1t27dijlz5kCn0yEjIwP33nsvbDabX3GrVCokJye3+tFoNFi2bBkuvvhiAE0zAJs3b8bzzz8PhUIBhULRZjxERH2VLIvOD6Ie05fHcI7fRETBIYRAQZ0VaqUCKmXfSXP7TiS9QAgBh9sLj1eG2yvD5ZV69MftleHxyq2WYvnj5ptvxhtvvNHy+N///jduuumm04779a9/jQ8++ACrVq3Cnj17MHToUJx33nlobGwEAJSVleHSSy/FkiVLkJ+fj1/84hf47W9/2+ocBQUFWLhwIZYuXYp9+/bhv//9L7Zu3Yq77747oNg78vzzz2PmzJm49dZbUVVVhaqqKmRkZHT7dYiIupPH+/O+4R+KGiAx6e5V/WkM5/hNRNT76qwuVBqdiIvoWytzgrqkXJIkLF++HG+99Raqq6uRmpqKZcuW4f/9v//XIw3KHR4J05/Y2O3n7czicSnQB7Cq4brrrsMjjzyCkpISAMB3332Hd955B998803LMTabDStWrMDKlSuxaNEiAMBrr72GdevW4fXXX8fDDz+MFStWIDc3F3//+98BAMOHD8f+/fvx9NNPt5znySefxLXXXttSUCUvLw8vvPAC5s6dixUrVkCr1foU8/79+xEREdHyeNSoUdixY0erY/R6PTQaDcLCwpCcnOz33wsRUW/78kAV/t/HB1oe/2LVbqTotXh0ySgsHJMSxMgGj/40hnP8JiLqfaUNdri8EsI0fWc5ORDkhPvpp5/GihUrsGrVKowePRq7du3CTTfdBL1ej3vvvTeYofUJCQkJWLx4MVauXAkhBBYvXoz4+PhWxxQUFMDj8WD27Nktz6nVakybNg2HDx8GABw+fBjTp09v9b6ZM2e2erx3717s27cPq1evbnlOCAFZllFUVISRI0f6FPPw4cOxdu3alsehoX2jHD8RUaC+PFCFO97ag1PnOatNTtzx1h6suG4Sk25qheM3EVHvsrm8KKizIVrXt2a3gSAn3Nu2bcNFF12ExYsXA2hqW/H222+fdke1u+jUIdj+f2fhf/uqEKVVQ6fp2VYfDrcEs9PTpZYiN998c8uysJdeeqm7QjuN1WrFbbfd1uaNDn+KvGg0GgwdOrQ7QyMiChpJFnjs00OnJdsAIAAoADz26SGcMyoZIcruX5lFP+tvYzjHbyKi3lNucMBodyMnPjzYoZwmqAn3rFmz8Oqrr+LYsWMYNmwY9u7di61bt+KZZ55p83iXywWXy9Xy2Gw2+3U9hUIBnUYFtUoJjUqJUFXPDtaSLKBWKbu0PH7hwoVwu91QKBQ477zzTns9NzcXGo0G3333HbKysgAAHo8HO3fubFleNnLkyFZ3rQHghx9+aPV40qRJOHToUK8NthqNBpIk9cq1iIgCtaOoEVUmZ7uvCwBVJid2FDViZm5c7wU2CPW3MZzjNxFR7/BKMo7XWBCmCYGyB7Yld1VQi6b99re/xVVXXYURI0ZArVZj4sSJuP/++3Httde2efyTTz4JvV7f8jMYCnWEhITg8OHDOHToEEJCTv9yER4ejjvuuAMPP/wwvvzySxw6dAi33nor7HY7brnlFgDA7bffjuPHj+Phhx/G0aNHsWbNmtN6gP7mN7/Btm3bcPfddyM/Px/Hjx/HJ5980iNFV4Cm1Qzbt29HcXEx6uvrIcty528iIuplVUaHT8fVWtpPymlw4vhNRNQ7qs1O1FpciAvvm1thgppwv/vuu1i9ejXWrFmDPXv2YNWqVfjb3/6GVatWtXn8I488ApPJ1PJTVlYW8LVdXhl2t7dHf1ze7hmEoqKiEBUV1e7rTz31FJYuXYrrr78ekyZNwokTJ/DVV18hJiYGQNOSsg8++AAff/wxxo8fj1deeQVPPPFEq3OMGzcOmzdvxrFjxzBnzhxMnDgRf/jDH5Camtotn+FUv/rVrxASEoJRo0YhISEBpaWlPXIdIqKucHl9m8lLjPStMBV1j/4yhnP8JiLqeUX1NggIaLrQkrknKUSgPau6QUZGBn7729/irrvuannu8ccfx1tvvYUjR450+n6z2Qy9Xg+TyXTagOZ0OlFUVIScnJxWFTqdHglfH6yGyenpvg/SAb1WjXNHJ3dpH/dg1d7vkIioNzTa3PjyQBWe/vIoTI62xwwFgGS9Flt/c1ZAe7g7GscGOo7hAxvHcCLqDUa7G//bX4UwdQgiteoOj22wuqAKUWDp5O5ZJe3rGB7UPdx2ux3KU5qSh4SE9OjyJK06BOeOToZb6p0lUJoQJQdqIqJ+RpYF9pUbYXV5cc20DKzYXHjaMc3p9aNLRrFgWi/hGE5ERCcrbbTD4vQiMaJvLicHgpxwL1myBH/+85+RmZmJ0aNH48cff8QzzzyDm2++uUevq1WHcAAlIqJ2FdbbUFBrRapehyHxEbhjrgJv7yiF8aSZ7mT24Q4KjuFERAQ0rXo6XmOFXqvuUpHqnhbUhPsf//gHfv/73+POO+9EbW0tUlNTcdttt+EPf/hDMMMiIqJBzOryYl+5EaGqnxO7yVkxGJUciXv+mw8A+NeNkzF/eBJntomIiIKk0uhAg82NzFhdsEPpUFAT7sjISDz33HN47rnnghkGERERAEAIgYMVJtRZXKf18lSelFxPzY5lsk1ERBQksixwvNYKdYgCKmXfLJbWrG9HR0RE1IsqjA4cqbYgKVLbJ3t5EhEREVBrcaHS6EBCH9673WzAJ9zsD9l/8XdHRL3J6ZGwt9QIIQQitEFdAEY/4TjQf/F3R0Q9qbjBBq8k+kVNjwH7jUKj0UCpVKKyshIJCQnQaDR9ejM9/UwIAbfbjbq6OiiVSmg0mmCHRESDwJEqM8qNDmTFhQU7lEGPY3j/xTGciHqa2elBUZ0NMWEdtwHrKwZswq1UKpGTk4OqqipUVlYGOxwKQFhYGDIzM09rHUdE1N1qLU4crDIjLlzT5/eCDQYcw/s/juFE1FPKGu0wOz0Yckqtlb5qwCbcQNMd8szMTHi9XkiSFOxwyA8hISFQqVSc0SCiHueRZOwtM8Lh9iIpLiLY4dBPOIb3XxzDiainuL0yjtdYERHq/78xQggAvf/v0oBOuAFAoVBArVZDre4fSw6IiKh3FdRZUVxvQ1o0l5L3NRzDiYjoZJVGB+osTmTE+DdmeyQZ/9h0AhMyorF4XGqv7v0e8Ak3ERFRe4x2N/aWmRARqoZGxaWvREREfZUQAifqrAhRKqEK8W/M/r6wARVGJ2yuhl5v68lvF0RENCjJskB+mREmhxvxESzsRERE1JfVWV2oMDj8HrNlIfD1oRoAwJnD4qH2M1nvKibcREQ0KBU12FBQa0WqXse9pkRERH1ccZ0NLq+EMI1/i7T3V5hQbXIiVKXE9JzYHoqufUy4iYho0LE4PcgvNSJUFdIvengSERENZhanB4X1NsSG+b8i7auD1QCAGUNigzLmM+EmIqJBRQiB/RUm1FldSIwKDXY4RERE1ImyRgdMdg+idP4V0Syqt+FYjRVKBbD5WD0eem8f7G5vD0XZNibcREQ0qJQ1OnC0yoKUKC2UXEpORETUp7m9Mo7VWBChVfk9bn99qGl2e2pW7y8lb8aEm4iIBg2HW0J+mQFKhQLhoWzUQURE1NdVGB2otTgRF+7fcvJ6qwu7SgwAgLNHJPZEaD5hwk1ERIPGwUoTqkxOJOu1wQ6FiIiIOiHLAidqLVAH0Aps/eEaCAGMTolCWoyuhyLsHBNuIiIaFCqMDhysNCMxMjSgHpzHay0tf642ObszNCIiImpDndWFCqMD8RH+1VyxubzYcrweAHDu6KSeCM1nTLiJiGjAc3ok7C01QhYCkVr/Cq4AgN3txarvS1oec4aciIio5xXV2+D2ytBp/Ksu/s2xOri8MtJjdBiVEtVD0fmGCTcREQ14h6vMKDPYkRJgorx6eykMdk83R0VERETtMTk8KKqzIS7cv9ltjyRjw+EaAMB5o5OhCHKBVCbcREQ0oNWYnThQaUJcuAYqpf/D3vaiBmwvakQAq9CJiIgoQKUNNpidHkRp/Sty+n1BA8xOL2LDNJiaHdND0fmOJVqJiGjAcntl5Jca4PbKSInyv2BKg9WFt34oBQAsHpuCucMSIAsgTMPhk4iIqKc4PRKO1VgRpVX7NUMtywJf/dQK7JxRSQHdaO9uwY+AiIiohxyrMaOkwY5Uvf/JtiwE3thWDIdHwpD4cCwel9IDERIREdGpyg0ONNhciPWzFVh+uRE1ZhfCNCGYkxffQ9H5hwk3ERENSHUWF/aVmxAdpoHaz1YiAPD1wRocqbZAo1LiljNy+sRdciIiooFOkgWO11oQqgrxq6uIEAJfHmia3Z43PAFatX+F1noKvz0QEdGA45Fk5JcZYHN7/b47DgAlDTZ8lF8BALhqagaSoliVnIiIqDdUm52oNDoQH+Hf+H2i1orCehtUSgXOHhHcVmAnY8JNREQDzrEaC4rqbUiPDvP7vS6vhNe2FEGSBSZmRmPO0L6xJI2IiGgwOFFrAQCEqvybof7yYNPs9qzcOOh1/rcA7SlMuImIaEBpsLqwr8wEvVYd0FLy93aVo9rsRLROjRtnZAe9nQgREdFg0WB1obTBjrgw/1qBVRod2FtuggLAuaOSeya4ADHhJiKiAcMryfixzAiry4u4CP8GawDILzPim2N1AICbZmcjws9WJERERBS4kgY77G7J7/G3eXZ7QkY0kvV9axsYE24iIhowjtdaUVhnRWq0/4OtyeHBqu+LATS1Ehmdqu/m6IiIiKg9NpcXx2utiAnzb+92o82N7YWNAIBFY/rW7DbAhJuIiAaIBqsLe8uMiNKq/d73JQuBf39XBIvTi/QYHS6dmNZDURIREVFbShvtMNrdiA7zb//1ukM1kITA8KRIDEmI6KHoAseEm4iI+j2vJCO/zAiL04u4AKqSbzhci4OVZqhDFPjlnCEB7f0mIiKiwLi9Mo5WWxARqoLSj9opVpcX3x5v2grWF2e3ASbcREQ0AByvtaLgp6Xk/hY5K22044M95QCAK6ZkIDVa1xMhEhERUTvKDXbUWV1+3zTfdLQWLq+MjBgdRqdG9VB0XcOEm4iI+rVGmzvgpeRNLcAK4ZUFJqRHY96whB6KkoiIiNoiywLHa61QKRVQ+bHCzOWVsOFwLQBg0ZiUPttVhAk3ERH1W15Jxo+lBpidnoCWkr+3qxxVJif0OjVunJXVZwdrIiKigara7ESFwY4EP7uLfHeiAVaXF/ERGkzOiumh6LqOCTcREfVbTUvJbUiL1vmdLP9YamhpAXbz7GxEav0r0jKQffvtt1iyZAlSU1OhUCjw8ccft3p9+fLlGDFiBMLDwxETE4MFCxZg+/btwQmWiIj6tRO1FshCQKv2fZWaJAt89VMrsPNGJyNE2fF3AFkWLX/eUdQI6aTHPY0JNxER9Us/VyVX+b2UvNHmxsptxQCA89gC7DQ2mw3jx4/HSy+91Obrw4YNw4svvoj9+/dj69atyM7Oxrnnnou6urpejpSIiPqzBqsLJQ12xIf7185zR3EjGmxuRGpVmJ0b3+Gxu0sM+P3agy2Pl72xE2c8vRFfHqgKKGZ/+ddRnIiIqA/wSDJ+/KkqeXZcmF/vlWWB17cWweaWkBUXhkvYAuw0ixYtwqJFi9p9/Zprrmn1+JlnnsHrr7+Offv24eyzz+7p8IiIaIAoqrfB7pGQove9YKksBL7Y35QsnzMyCRpV+3PIu0sMWLG54LTnq01O3PHWHqy4bhIWjknxP3A/cIabiIj6nWM1FhTWWQNaSv75gSocrbEgVKXEL+cM8atAC53O7Xbj1VdfhV6vx/jx44MdDhER9RNWlxcn6qyI0flXg2VvmRGVJid06hDMG95+sVNZFnhnZ2mbrzUvKH/s00M9vryc3zKIiKhfqbe6sK/MBL1W3eFd7bYU1Fmxdm8lAOCaaZlIivJvCRv97LPPPkNERAS0Wi2effZZrFu3DvHx7S/rc7lcMJvNrX6IiGjwKmmwwWT3IDrM9xoqQgh8fqBp7/b84QkI07S/YPtYrQUGu6f9cwGoMjmxo6jR5+sHggk3ERH1G56fqpLb3F7E+VnN1O724rUthZAFMC07FrNy43ooysFh/vz5yM/Px7Zt27Bw4UJcccUVqK2tbff4J598Enq9vuUnIyOjF6MlIqK+xOmRcLTagkitCko/VqodqbagqN4GdYgCC0YmdXisydF+sn2yWovT5+sHggk3ERH1G0eqzCiqb6pK7g8hBN78oQT1VjfiIzS4bkYmW4B1UXh4OIYOHYoZM2bg9ddfh0qlwuuvv97u8Y888ghMJlPLT1lZWS9GS0REfUm5wY56qwuxfrb0/PynQmdnDI1HlK7jmXF9J683S4zs2dVuLJpGRET9Qq3ZiX0VJkTrNFD7ue9664l67Cw2QKkAbp0zpMMlaBQYWZbhcrnafT00NBShof6tSiAiooHHK8k4Vm2FVhUCldL38byo3obDVRaEKBRYODq50+OHJUYiJkzd7rJyBYBkvRbTcmJ9jiEQnOEmIqI+z+WVsKfUAKdH8vtueKXRgbd3NM2mXjIxDbkJET0R4oBitVqRn5+P/Px8AEBRURHy8/NRWloKm82G//u//8MPP/yAkpIS7N69GzfffDMqKipw+eWXBzdwIiLq8yqNTlSZHIj3c2tY8+z2tJxYn7aVKZUKXDU1s83Xmte4PbpkVKc9vLuKCTcREfV5hyrNKGmwI9WPtiFA057vV7cUwi3JGJUShfN8uCNOwK5duzBx4kRMnDgRAPDggw9i4sSJ+MMf/oCQkBAcOXIES5cuxbBhw7BkyRI0NDRgy5YtGD16dJAjJyKivkwIgeO1FigUCr8Kn1YaHcgvNQIAFo3xfSyfnBWDO+bmIvqU5eXJem2vtAQDuKSciIj6uCqTAwcqTIgL938p+bu7ylBucCBSq8ItZ+T4VZhlMJs3bx6EaL9NyocfftiL0RAR0UBRY3ahzGBHQgCz2wLAxMxopPpZx2VyVgxGJUfinv/mAwBW3jQVc/ISenxmuxlnuImIqM9yeiT8WGqERxKIDvNvKfmeUgM2Ha0DANwyO8fn4ikdcUsyQpQ/L0UjIiIi3xXUWeH1Cug0IT6/p9byc+uuxWMDm5FWnpRcT8uJ7bVkG2DCTUREfZQQAgcqTChrsCM12r8Kog1WF1ZuKwYAnDcqCWPS9F2Ox+bywu6WMCpVD5WfM+1ERESDXaPNjeIGG+Ii/LuB/uWBasgCGJMahey48B6KrufwGwMREfVJ5QYHDlaakRgV6lcVU6/ctG/b7paQEx+OSyamdTkWjySj2uzE2DQ9hidFdvl8REREg01xvQ1WpxeRWt9XnDXa3PiuoAFA4LPbwcaEm4iI+hyby4s9pQYIIfwamAFgbX4lCups0KlD8Ms5Q7o8Gy0LgTKDHbkJ4ZiQGd1qWRoRERF1zuL04FiNxe9OI18fqoYkCwxLikBeF254Sx3UJelpTLiJiKhPEUJgb7kRVSan31XJD1aa8MWBagDAjTOzkBDZ9b7PlUYHEiO1mJoTh1CV73vOiIiIqElJgw0mh8eveipmhwffHqsH0PXZ7Qaru0vv7wom3ERE1KcU1dtwpMqClCitX7PJJocHr28tggAwd1gCpmTHdjmWeqsLapUS03Jiu6XoGhER0WDj9Eg4Wm1FlFbtV7eQdYdr4JZkZMeFYVRKVMDX98oybG5vwO/vKibcRETUZ5idHvxYaoQ6RIHwUN87V8qywGtbCmF2epEWrcOVUzK6HIvV6YXNJWFqdqzfLUiIiIioSWmjHQ1WF+L8WE5uc3mx6WgtAOCCcalQdKGtZ53FhcSorq94CxQTbiIi6hMkWWBPiQH1VheSovyrSv6/A1U4Um2BRqXEbWcOgUbVteHN5ZVQY3FiXIYeeYkRXToXERHRYOX2yjhSZUaYRuXXqrX1h2vg9MhIi9ZhXHrgnUa8kgynR8KI5MBnyLuKCTcREfUJJ2qtOFZjQVq0zq8lZ0erLVi7txIAcN30zC7PRsuyQLnBgWFJkRifHt2lu+pERESDWYXRgWqzE/F+tAJzuCVsONI8u53i13eCU9VaXEjW65AZGxbwObqKCTcREQVdg9WFH0sNiAxVQ6v2vTCZxenBa1sKIQQwKzcOs3LjuxxLmdGOFL0WU3NiuzxTTkRENFhJssDRajM0IUq/OoZsPFoLu1tCsl6LyZkxAV/fI8lwSTJGpkQFdTznNwkiIgoqt1fGnlIDrE6vX3fAZSHw+tYiGB0eJOu1uHZaZpdjqTE7Ea5RYUZuHCL82ENORERErVUaHag0OpEQ4fv+aadHwrpDNQCaKpN3pRVnrdmFNL0OWXHBm90GmHATEVGQHa4yo7DOhrQYnV/Lt788UI0DlWaoQxS4/cwhCPVjZrwtJocHbknGtJxYJEb6t4eciIiIfiaEwPEaKwDh1/j8zdE6WF1eJEaGYloXuo24vTK8soyRqVFQ+zG73hOYcBMRUdBUmRzYV25EXLjGrwHxWI0FH+VXAACumZaJ9Jiu3b12uCU02FyYmBGNnPjwLp2LiIhosKsxu1BqsCEhwvcb2C6vhK8OVQMAzh+bgpAuzG7XmJ1Ij9EhIyb4XUaYcBMRUVA43BJ2FxvgkQSiw3xfSm52ePDqt037tmcOicMZQ7u2b9sryag0OTAqJQpjWSSNiIioy47VmOGRZOg0vs9ubzleD8tP28tmDAl8dtvpkSAAjEzR+7V3vKcEPwIiIhp0hBDYV25EhdGBND+qip+2b3t6ZpcSZFkIlBrsyIoLw5Ts2C7dTSciIqKmvtclDXYkhPs+u+2RZHx5oGl2e9GYFKiUgaepNRYnMuPCkN4HZrcBJtxERBQERfU2HKw0IylK61eS+/n+Khysaqp4eseZuX5VNG9LpdGB+IhQzBgS1+VzEREREVBYZ4XDIyFC63vx0S3H62F0eBATpsas3LiAr+1wS1BCgZEpUV0quNadmHATEVGvMtk9+LHUCE2I0q9K4Eeqzfjkp37b107PRFoX71zXW11QhSgwfUicX0vaiYiIqG1GuxsFdVbEhftemdwjyfjiQBUA4PwxKV0qclZjcSAnIRwpUX2n+CkTbiIi6jVeScaPZQbUW11IjPJ9MDadtG97Vm4cZndx37bF6YHNJWFqdpxfS9qJiIiofYV1NlicXkT5Mbu99Xg9DPam2e0z8gIf320uL9QhIRiR3HdmtwEm3ERE1IuOVltwrMaC9GgdlD7uvZZlgVe/LYTZ6UVatA7XTu9av22XR0KtxYXxGXoMS4ro0rmIiIioicXpwbFaC2LCND7XV/FIMj7/aXZ7UZdnt53ITQhHkh839HuD77ceiIiIuqDG7ER+uRF6rdqvnpyf7K3E0RoLQlVK3DE3F6GqwPdae2UZ5UYHhidHYnwGK5ITERF1l6J6G0x2j1/tNb870TS7Ha1TY04XZrctTg90mhAMT45qc2wP06hQ/NTigM/fFZzhJiKiHuf0SNhdYoDTIyEuwvc7z/srTPjf/qY73zfMzEKyPvA9WUIIlBnsyIgJw9Ts2C7dRSciIqKf2d1eHKm2IFqn9nkFm0eS8fn+5srkyQGPy0II1FpdGJYYiYTIvjW7DTDhJiKiHiaEwL4yI8oa7H7tl26wuvD61iIAwLxhCZieE3jVUgCoNDkRowvF9CGxCPejWBsRERF1rKjeBoPNjZhw34uQbitoQKPdDb1OjTOHJQR8bZPDg8hQFYYnRwZ8jp7EhJuIiHpUcYMdBypNSIrS+txX0yvJ+Oe3hbC6vMiKC8OVUzO6FEOD1QWlApg+JNavGXYiIiLqmNMj4UiVBZFalc+z215Jxuf7m/duBz67LQuBepsbI5Kj+mzHESbcRETUY0wOD/aUGKAOUfrVj/Pd3eUorLchTBOC28/M7dLyb6vTC6vbiynZsciIDQv4PERERHS6kgY76q0uv1qBfVfQgAbbT7PbeYHPbhtsbsSEaZDXh4ugMuEmIqIe4ZVk7ClpagGW5Ec/zB1Fjdh4pBYAcMsZOV3aj+XySqixODEuPRrDk/rmUjMiIqL+yuWVcLjKjPBQFUJ8bMXlkWT8b9/Ps9saVYCz27KA0eHBqJRIRGrVAZ2jNzDhJiKiHnGk2ozjtRakx/jeAqzS6MCq74sBAOePScb49OiAr++VZZQbfqpInh7dp3pyEhERDQRljXbUWpyIj/B9OffW4/VotLsRrVNjbhf2btfbXIiPCEVuYt+d3QaYcBMRUQ+oMjnwY5kRMWEan9t4OT0SXtlcAJdXxojkSFw0IS3g67dUJI9tqkge6N1zIiIiaptHknGkygKtKsTnGi0n990+f2zgfbe9sgyr04vRaVEI0/TtQqj8BkJERN3K7vZid7EBHq9AjI8FTIQQ+M/3Jag0OaHXqXHrnCE+L01rS6Xxp4rkOaxITkRE1BPKGu2oNDn82vr17bE6GOwexIR1re92rdmFZL3Wr57fwcKEm4iIuo0sC+SXGVFhdPjVAmzT0TrsKG5EiEKB288cAr0u8L1YDVYXlCGsSE5ERNRTvJKMI9UWhKpCfJ6ldntlfH6gqe/24i7MbnskGU6vhFGpep9X0QVT0BPuiooKXHfddYiLi4NOp8PYsWOxa9euYIdFREQBKKiz4nClGSl6rc8z1AV1Vvx3VxkA4LLJ6cjrQnEzi9MDq0vCtOw4ViQnIiLqIWUGByqNDiT6M7t9vA4mhwex4RqcMTTw2e1qkxMZsWHIiusf43xQ19kZDAbMnj0b8+fPxxdffIGEhAQcP34cMTExwQyLiIgCUG91YXeJATpNiM/7qcwOD17ZXABJFpiSFYMFIxMDvr7TI6HO6sLkzBgM68PtQYiIiPozSRY4Wm1GiFLh8yy1yyu19N2+YGwKVAHObjs9EgSA0Sn6LrUM7U1BTbiffvppZGRk4I033mh5LicnJ4gRERFRIJweCbuKG2FxeZAd69t+KkkWeHVLIQx2D5L1WiyblQ2Fj9XMT+WVZFQYHRiZEolxGdEBn4eIiIg6VmFwoMLgQIre961j3xytg9npRXyEBrNy4wK+do3Fiey4cKTH+H7tYAvqbYG1a9diypQpuPzyy5GYmIiJEyfitddea/d4l8sFs9nc6oeIiIJLCIH9FSYUN9iQHh3mc7L70Y8VP+3/UuLOubnQqgPbhyULgVKDHVlxYZiaHddv7ngTERH1N5IscLjaDKVC4XMHEKdHwhc/7d1eMi414Nltm8sLlVKJkSlR/arVZ1C/lRQWFmLFihXIy8vDV199hTvuuAP33nsvVq1a1ebxTz75JPR6fctPRkZGL0dMRESnKm6w40C5CUmRWp+T3d0lBnx5sGnwXTYrG6l+FFg7VYXRgYQILWYMiYNO0/eLpxAREfVXlcam2W1/9m6vP1wDq8uLpKhQzBjStdntnPgwpOi1AZ8jGIKacMuyjEmTJuGJJ57AxIkT8ctf/hK33norXnnllTaPf+SRR2AymVp+ysrKejliIiI6mdHuxu5iA1QhCkRqfassXmVy4I1tRQCAc0YlYWp2bMDXrzE7oVWFYGZuHKJ9bEFGRERE/pN/2rsNAKE+rkqzu734+lANAODC8akBt/w0OTwI04RgVKq+320bC2rCnZKSglGjRrV6buTIkSgtLW3z+NDQUERFRbX6ISKi4HB7ZewqMaDR7kJylG93m50eCS9/UwCnR8awpAhcNik94Osb7W64JRnThsQiuZ/d7SYiIupvKk0OlDba/Zrd/vpQDexuCanR2oBvsAshUGd1YXhyFOL7YbvPoCbcs2fPxtGjR1s9d+zYMWRlZQUpIiIi8tXBChMKaq0+79sWQmDltmJUmZyI1qlx25m5Ad/ptrm8aLS7MSUrBrkJrEhORETUk2RZ4Ei1BQB8rrlicXqw7qfZ7YvGp0EZ4Mx0o82N6DA1hicH3jY0mIKacD/wwAP44Ycf8MQTT+DEiRNYs2YNXn31Vdx1113BDIuIiDpR2mDHvgoT4iNCfS6a8vWhGuwqMSBEocDtc3Oh1/m2BP1ULq+EarMT49OjMTpVH9A5iIiIyHeVJgdKG2xIjPR9RdlXB2vg8srIjA3DxMzogK4rywJGhwejU6IQ5ePWtb4mqAn31KlT8dFHH+Htt9/GmDFj8Kc//QnPPfccrr322mCGRUREHTA5PNhV0ggAPifNh6vMeH9POQDgqqkZGJoY2Ky0JAuUGxwYlhSJiZkx/apKKRERUX/UtHfbAgHfZ7dNDg82HqkFAFw0ITXg2e06qwsJkaEYmtg/Z7eBIPfhBoALLrgAF1xwQbDDICIiH3gkGXtKDKizuJAT71u/7QarC//8thBCALNy4zBveEJA15aFQFmjHRkxYZiWE+vzzDoREREFrsrsREmDDUl+zG7/b18V3JKMIfHhGJcW2Go0ryTD5vZiak5sv+5Cwm8rRETks4MVJhyvtSA9RufT3Wq3V8ZL3xTA6vIiKy4M103PCri6aIXRgZhwDWbkxiE8NOj3i4mIiAY8WRY4WuXf7Ha91YXNx+sAAJdMTAt43K8xu5Cm1yE7zrcb/H0VE24iIvJJWaMde8tNiAsPRaiq80FXCIG3tpegtNGOiFAV7pybG/CsdK3FiVCVEjNz4xAbzvZfREREvSGQ2e21eyshyQIjkyMxMiWwrlIujwSvLGN0mr7fr2jr39ETEVGvMDk82Fns377tTUfrsK2gAQoFcNuZQxAXYCsPo90Nl0fGtJw4pEbrAjoHERER+ad5dluG8Hl2u9LowPeFDQCaZrcDVW1xIis+HJmxYQGfo69gwk1ERB3ySDJ2Fzft207xsd/1sRoL/ruzDABw2aT0gO9w291eGBweTM6OQW5C/15SRkRE1J80z24nRvg3uy0EMCEjGkMCbNtpdXmhUioxJlU/IIqjMuEmIqIOHagw4YQf+7YbbW6s2FwASQhMz4nFuaOSArquyyuhyuTEuDQ9xqTqA94DRkRERP6RZYEjVWbIED4XLCtpsGFXiQEKABdPSA342jVmJ4YmRiApKrCVcX0NE24iImpXSYMN+8pNiIvwbd+2R5Lx8jcnYHF6kRGjww0zAyuS5pVllBscGJ7M9l9ERES9rdLk8Hvv9kf5FQCAaTmxSI8JbCm40e5GpFaFkSlRA+ZGOxNuIiJqk9Huxq7ipjvVvuzbFkLgzR9KUNxgR7gmBHfOG+pTkn4qWQiUNtqREcv2X0RERL2teXYb8L0y+bEaCw5UmKFUABeOD2x2WxYCDTY3RiZHDagCqfwWQ0REp3F7ZewqbkSDzYVkH/dtbzxSe1KRtFwkRAa2FKzc4EBChBazcuMQpmH7LyIiot5UYXSgtNGBRB9nt4UQ+GBPOQBgTl4CkqJ8nxU/Wb3VhbjwUOQlRwb0/r6KCTcREbUihMC+ciMK6mzIiAnzad/2kWoz/rurqUja5ZPTMSo1sCJp1SYnwjQhmJkbh+iwgXN3m4iIqD+QZYEj1f7Nbu8tN6GgzgZNiBJLxqUEdF2vJMPq8mJMehQiQgfWzXYm3ERE1EpRvQ37yo1IjAyFOqTzYaLe6sIrmwshC2DGkFicMzKwImmNNjdkITBjSJzPs+pERETUfSqMDpQ1OpDk4yo1WRb48Mem2e2zRyYGfLO8xuxCql6HnPiB15GECTcREbVosLqws9gAjSoEkdrO9227PBJe2nQCVpcX2XFhuGFGdkBFTixODyxOL6bmxCJ7AA62REREfZ0kCxyqMkOhAEJ9nN3+oagBlcam1WkLRycHdF2nR4JXFhiTpg+o9ktfx4SbiIgANA14O4obYXa6fbqzLYTAG9uKUWZwIFKrwp3zhgZU4MzhllBndWFiZjRGDLB9W0RERP1FucGO8kYHEiN8m932SDI+ya8EACwak4zwAJeC11icyI4PQ2ZsYJXN+zom3EREBFkW2FNqQGmDHRnRYT7NUv9vfxV2lRgQolDgzrm5AVUU9UgyKo0OjE7RY1w6e20TEREFg1eScbiqqcq4r7Pbm4/VocHmRrROjbNGJAZ0XYvTA7VSiTFp+gHbApQJNxER4VitBYcqzUjRa6HyYd92fpkRH/90V/ua6ZnIS/J/ZtoryyhttCM3KQKTs2N8ui71jm+//RZLlixBamoqFAoFPv7445bXPB4PfvOb32Ds2LEIDw9HamoqbrjhBlRWVgYvYCIi6pIygwPlBofPFcadHgn/218FAFgyPjWgpeBCCNRaXMhLigi4snl/wG83RESDXLXJid0lBkSGqnxqw1VhdOC1LYUAgPnDEzB3WILf15SFQFmjAxmxYZgxJM7nSqjUO2w2G8aPH4+XXnrptNfsdjv27NmD3//+99izZw8+/PBDHD16FBdeeGEQIiUioq7ySDIOV5qhVip93hr21cFqWJxeJEWGYvbQuICua7B7oNepMSpFH9D7+4uBVXOdiIj8YnF6sKOoAS6PjCQf9k5ZXV68uOkEXF4Zw5MiceXUjICuW25wIC5Cg5lD4gZc+4+BYNGiRVi0aFGbr+n1eqxbt67Vcy+++CKmTZuG0tJSZGZm9kaIRETUTUoa7Cg3OpARo/PpeJPDg68P1QAALp2UDpXS/zlcSRYw2N2YlRsHfVjnRVr7M85wExENUh5Jxu4SA6pMTqRHdz7IemUZ/9xcgDqLC/ERGtw+d0hAg2yVyYEwTQhm5cYjJoB939T3mEwmKBQKREdHBzsUIiLyg8sr4VClCVqV0qdWoADw6d5KuLwyhsSHY1JmdEDXrbU4kRSlDWhLWn/DaQUiokFICIED5SYcq7YgPVrnU6GSd3eW43C1BaEqJe6aP9SntmGnarC6AIC9tgcQp9OJ3/zmN7j66qsRFRXV7nEulwsul6vlsdls7o3wiIioAyUNdlSbnT5XCK82O/Ht8ToAwNJJ6QEVO3V5JTg9EmYNjR8UW8o4w01ENAgVN9iRX25EXESoT9VINx+rw8ajtQCAX5yRg4wY/1t3mBwe2NwSe20PIB6PB1dccQWEEFixYkWHxz755JPQ6/UtPxkZgW1HICKi7uH0SDhUaUaYRuXzirWPfqyALIBxaXoMD7CVZ7XZiez4cGQN0DZgp2LCTUQ0yDRYXdhZ1Ai1Ugm9rvNZ6iPVZqzZXgoAuGRiGiZmxvh9TbvbiwabGxMzozF8ECwfGwyak+2SkhKsW7euw9ltAHjkkUdgMplafsrKynopUiIiaktRvQ01ZicSfOy7XVhnxe4SAxRomt0OhNXlhUqpxOhU/aDpTsIl5UREg4jDLWF7USNMTjeyYzufZa6zuPDK5kJIQmBadizOH5Ps9zVdHglVJifGp+sxLj2avbYHgOZk+/jx49i0aRPi4jqvUBsaGorQUN++1BERUc+yu704VGlGpFaFEB+2lQkh8P6ecgDAzNw4pPlYYO3Uc9SYnRiTpkfKINpWxoSbiGiQkGSB3SWNKG20IzsurNPE1+GW8I9Nx2F1eZEdF4Zls7L9TpY9koxyowPDkyMxKSvWp0Gdgs9qteLEiRMtj4uKipCfn4/Y2FikpKTgsssuw549e/DZZ59BkiRUV1cDAGJjY6HRsBAeEVFfV1BrRb3FhRwft3jtLTfhWI0VKqUCF09IC+iazW3ARqdGDaqb70y4iYgGiUOVJhyqsiBNr+t0r5YsC7y6pRCVRieidWrcNX+oz705m0myaEru48MxPSfO7/dT8OzatQvz589vefzggw8CAG688UYsX74ca9euBQBMmDCh1fs2bdqEefPm9VaYREQUAIvTg0NVFkSHqX0qmirJP89uLxiZhNgAOoyc3AYsOmxw3Zhlwk1ENAiUNtjxY6kRMWFq6DSdF0l7b0859leYoAlR4u75QxHj5+AoC4FSgw1p0TrMzI3z6ZrUd8ybNw9CiHZf7+g1IiLq247XWGGwu5Hr4+z21hP1qDY5ERGqwvlj/d9aBgA1ZieS9YOjDdipON1ARDTAGWxu7CxuBACfEuctx+uw7lANAOCm2dkBVRSvMDoQGxaKmblxiAqgfRgRERF1P6PdjaPVFsSHa3xa1u30SPgkvwIAcMG4FIRp/J+vdXkkeCQZY9P0g6IN2KmYcBMRDWBOj4TtRQ1otLl9KlByrMaCt36qSH7R+FRMzY71+5pVJgd06hDMGhqHOB8rnxIREVHPO1ptgdnp8alLCQB8dbAaZqcXiZGhmDcsIaBrVlucyIoPR1bc4GwJyoSbiGiAaiqSZkBJgx0ZMbpO72TXmJ14adMJSLLA1OwYXDAuxe9r1ltdAIAZQ+KQove/gikRERH1jDqLC8dqLUiICPVpdttod+Orn1a8LZ2UHlAbL4vTA02IEmPT9IO2cCoTbiKiAepwlQmHqsxI0Ws7HSRtLi/+sfEEbG4p4IrkRrsbdrcX04fEBbQMnYiIiHqGEAKHq0xwuCVE+Ti7/Ul+JdxeGbkJ4ZiUGe33NWUhUGtxYVhSJJKiBk8bsFMx4SYiGoBKG+zYXWJEtE7d6X4rryzjlc0FqDY7ERumwT1n5SFU5d8eK6vTC6PDg6nZschLjOhK6ERERNTNqs1OFNbbkBTpW+JbbrBja0E9AODyyRkBtfFqsLoRE6bByNQov987kDDhJiIaYBqsLuwoaoQCnRdJE0JgzfZSHK62IFSlxD1nDfV5X1czh1tCrdWJ8RnRGJ2qH1S9NYmIiPo6WRY4WGmGJAuEh3Ze9EwIgXd3lUMIYEpWDIYGcCPdI8mwuDwYm64f9MVTmXATEQ0gDreE7UWNMNp9K5K27nANvj1eDwWAX545BBmxYX5dz+2VUWlyYHSKHhMzon3q50lERES9p9zgQEm93efZ7QOVZhyqMkOlVGDppPSArlltciI9Jgy5CVz1xoSbiGiA8EoydhY3oLTRjvTYzouk5ZcZ8d6ucgDA5VPSMT492u/rlRnsGJYUiSk5MQEVUyEiIqKe45FkHKg0QamETy25JFng3V1lAICzRyQiIdL/biN2txcAMDZND42K3w34N0BENAAIIbC/woQj1RakR+ugUnb8z3tJgw2vbimEADB3WALOGZnk1/UkWaCk0Y7s+HBMHxLr955vIiIi6nklDXaUGxxI9rFo2ZbjdagyORERqsLiALqVCCFQbXYiLykC6THsVgIw4SYiGhAK623ILzUiLjy00zvYjTY3/rHxBNxeGaNTonD1NP+KochCoKzRjrRoHWbmxnValI2IiIh6n9Mj4WClCTq1EmofVqHZ3V58srcSAHDh+NSAxneD3YPIUDVrupyECTcRUT9Xa3ZiZ1EjNCplpwXPnB4J/9h4HEaHB6nRWtw2d0ins+EnE0Kg3GBHbIQGs4bGD/pCKERERH1VQZ0V1Sanz8vCP99fDYvTi+QoLc4cFu/39byyDIPdjTFpUYgJ77ho62DChJuIqB8zOz34obABNre30x6Xsizw6pZClBkciNSqcO9ZeX7fva40OhEeqsbsofGI5WBKRETUJ1mcHhysNCNKq/bpxnqdxYX1h2sAAJdNTvfrZnyzGrMLKXot8pIi/X7vQMaEm4ion3J5JewoakSVyYmM6I6riwsh8PbOUuwrN0EdosA984ciPsK/Qig1ZifUKgVm5cZ1mtwTERFR8ByvscJgcyMuwreb4+/vKYdXFhiZHInx6Xq/r+dwS5BkgXHp0T4VZxtMmHATEfVDsiywp8SAglorMmPDOm3Hte5wDTYdrYMCwC/OGIIhfrbpaLC6IMkCM4bE+d06jIiIiHpPg9WFI9VmxIVroPRhH/WxGgt2lxigUABXTvWvrkuzKrMDQxLCkcnvCKfxeye8JElYuXIlNmzYgNraWsiy3Or1jRs3dltwRETUtkNVJhyoMCFFr+20EMqeUkNL+6/LJqdjclaMX9cy2t2wuSXMHhrvd6JOREREvUcIgSNVFlhdXgyJ73zMlmWBd3Y2tQE7My8B6TH+J8wGuxsRoSqMTdN3OgEwGPmdcN93331YuXIlFi9ejDFjxrD6HBFRLyuut2F3iRHRYZpO92AX1lvxry1FLe2/zh3lX/svi9MDo8OD6TmxGJbEZLuv27BhQ7s3xP/9738HKSoiIuot1WYnTtRZkRjp29avbYUNKG20Q6cOwcUTUv2+niQLNNrcmJ4Tizg/t6oNFn4n3O+88w7effddnH/++T0RDxERdaDW4sT2okYoFUBMWMf7suosrqb2X5KMMWlRuGZapl83Se1uL+qsLkzKjGF7j37gsccewx//+EdMmTIFKSkp/H0REQ0ykixwsNIMrywjIrTzNM/pkfDRjxUAgCXjUxAZQOeRGrMTKXotRqRE+f3ewcLvhFuj0WDo0KE9EQsREXXA4vTgh4IGWF0eZHay5Mvq8uL5DcdhcXqREaPD7WfmIsSPZV5Oj4QqkxPj0vWYmBnDJWL9wCuvvIKVK1fi+uuvD3YoREQUBKWNdpTU25DsY2HTz/dXweTwIDEyFGcNT/T7ek6PBI8kMJaF0jrkd9G0hx56CM8//zyEED0RDxERtcHpkbD9pIrkHc1eeiQZL206gWqzE7FhGtx3dp5fA6HbK6PC4MDIlEhMyY71K1Gn4HG73Zg1a1awwyAioiBweSUcrDBBFaJEqA9jfp3Fha8PNbUBu2JKBlSd1INpS6XJgdzEcGSxUFqH/J7h3rp1KzZt2oQvvvgCo0ePhlrdeunBhx9+2G3BERFR0xKxPaW+VSSXhcC/vyvC8VordOoQ3Hd2HqI7WXp+Mq8ko8xgR15SJKblxHVakI36jl/84hdYs2YNfv/73wc7FCIi6mWFdTZUGh3IjPMt+X13Vxm8ssColKiA2oA12lgozVd+J9zR0dG45JJLeiIWIiI6hRACBytNOFhp9qki+Yd7KrCz2IAQhQJ3zstFWozO52tJskBJox3Z8eGYkRvL5WH9jNPpxKuvvor169dj3Lhxp90Qf+aZZ4IUGRER9SSry4sDFSZEatVQKTu/UX6o0owfy4xQKoCrAmgD5pVlGOxuzMyNY6E0H/idcL/xxhs9EQcREbWhoM6G3SUGxOjUnVYk33ikFl8erAYA3DgrCyP9KGAiywIljTZkxIZhVm5cp9eivmffvn2YMGECAODAgQOtXmMBNSKigetIlRmNNjdy4sM7PdYry3hnZykA4KwRiUiN9v3GfLMakwtp0ToMS4r0+72DUcDfqOrq6nD06FEAwPDhw5GQkNBtQREREVBpdGBHUQM0IcpOl4XvKTXg7R1NA+jFE1IxKzfe5+vIQqDU0FRkZVZuXEBVSin4Nm3aFOwQiIiol9VbXThaY0F8RCiUPtxc/eZoHSpNTkSEqrBknP9twOxuLyQhMI6F0nzm9+Y8m82Gm2++GSkpKTjzzDNx5plnIjU1FbfccgvsdntPxEhENOgYbG78UNgAt1dGUifVRgvqrHhtSyEEgDPz4rF4bIrP1xFCoNxgR2x4KGYPjfdrvzf1XeXl5SgvLw92GERE1IOEEDhUaYLN5YVe1/nNcovTg7V7KwEAl0xMQ7gPrcNOvV6VyYm8pAik+7FlbbDzO+F+8MEHsXnzZnz66acwGo0wGo345JNPsHnzZjz00EM9ESMR0aBid3vxfWEDGqzuTpd6VZud+MfGE/BIAuPS9bh2epZfy4crjA5EatWYPTSe+7D6OVmW8cc//hF6vR5ZWVnIyspCdHQ0/vSnP0GW5WCHR0RE3azc4EBBre9twD76sQJ2t4SMGB3mDPV9JVyzRpsbep2ahdL85PeS8g8++ADvv/8+5s2b1/Lc+eefD51OhyuuuAIrVqzozviIiAYVt1fGjqJGlDXakRUX1uHyMJPDg+fWH4PV5UV2XBhumzPErxZeVSYHtOoQzBoa3+ksOvV9v/vd7/D666/jqaeewuzZswE0dRZZvnw5nE4n/vznPwc5QiIi6i4eScaBShOggE91V0oabNhyvB4AcPW0TL8TZo8kw+T0cDVcAPxOuO12O5KSkk57PjExkUvKiYi6QJYFfiw14Gi1Bekxug4rjTrcEp7fcBz1VjcSIkNx71l5PvXdbFZjdkKhAGblxiMtgIIp1PesWrUK//rXv3DhhRe2PDdu3DikpaXhzjvvZMJNRDSAFNXbUNZoR0ZM523AZCGwZkcpBIBp2bEBFTurMjmQGRuGvEQWSvOX30vKZ86ciUcffRROp7PlOYfDgcceewwzZ87s1uCIiAYLIQQOVJqwt9yI5CgtQlXtJ89eScbLm0+gtNGOSK0KDyzIQ5QPe7eaNVhdkGSBmbnxPvfrpL6vsbERI0aMOO35ESNGoLGxMQgRERFRT7C5vNhfbkK4RtVpu1AA+L6wAQV1NoSqlLhiSrrf17M4PQhRKjEuPRoald/p46Dn9wz3888/j/POOw/p6ekYP348AGDv3r3QarX46quvuj1AIqLBoKDOit3FBsSGaTosYiILgTe2FeNwlQWhKiXuOysPiZG+LwdvtLlhd0uYnReP3ISI7gid+ojx48fjxRdfxAsvvNDq+RdffLFlvCYiov7vaLUFdVYXhvjQBszu9uL93U1FNJeMS/V7ObgsBGosLkzKiA6ohRgFkHCPGTMGx48fx+rVq3HkyBEAwNVXX41rr70WOh1/CURE/qowOrC9qBFadUinA+EHe8qxvagRIQoF7pibi2wfBttmJocHVpcX04fEIi+RyfZA85e//AWLFy/G+vXrW1acff/99ygrK8Pnn38e5OiIiKg71FtdOFxtRny4xqc2YGv3VsLi9CI5SosFIxP9vl6txYXEyFCMStMHEi4hwD7cYWFhuPXWW7s7FiKiQafe6sL3Jxrg8cpI72Qf1teHqvHVwRoAwA2zsjDGj8HP4vTAaHdjak4sRqVE+VXJnPqHuXPn4tixY3jppZdabohfeumluPPOO5Ga6n+vVSIi6ltkWeBARVMbsKT4zm+cVxgc2HikFgBw9bQMqHxYfn4yl0eC0yNhxpA4RPjZQox+5tPf3Nq1a7Fo0SKo1WqsXbu2w2NPLtZCRETtMzs92HaiHianG5mdJNs/FDbg3V1NS8KWTkrD7Fzf23lYXV7UWd2YkhWDMal6JtsDWGpqKoujERENUOUGBwrrbEiJ6nxVsfipUJosgEmZ0Rid6v8MdaXJiaGJEcjxYzUdnc6nhPviiy9GdXU1EhMTcfHFF7d7nEKhgCRJ3RUbEdGA5XBL+L6gAVUmJ3LiwjtMgg9UmPDGd8UAgAUjE7FwdLLP17G7vai1ODEhIwbjM6LZN3OA2bdvH8aMGQOlUol9+/Z1eOy4ceN6KSoiIupuLq+EfeVGKBWATtN5V5LtRY04WmOBJkSJK6dk+H29Rpsb4aEhGJeu96vlKJ3Op4RbluU2/0xERP7zSDK2FzWgqN6GrNiwDpPgonobVmwugCQEpmXH4oopGT7PUDs9EqpMToxL12NSZjQHzAFowoQJLTfEJ0yYAIVCASHEacfxhjgRUf92osaKCqMDWbGddxexu714d1cZAGDxuBTERYT6dS2vJMNgd2NWbpzf76XT+b0Y/z//+Q+uvPJKhIa2/st3u9145513cMMNN3RbcEREA40sC+wpaeq1nRGt67CdR5XJgec3HIfLK2NUShRunp3tU4EUoGnfVYXRgdGpUZiSHev3vi3qH4qKipCQkNDyZyIiGnhMDg/2V5qg16l9Gs8/ya+E2elFUlQozh2V5Pf1Kk1OZMSGYVgye253B7+/gd10000wmUynPW+xWHDTTTd1S1BERAOREAL7yo3YV2Fq6rWtbn9JWKPNjWfXHYfV5UV2XBjunJfrc9Ls8kooNzgwIiUS03LifOrRSf1TVlZWy4qHkpISpKWlISsrq9VPWloaSkpKghwpEREFQgiBg5UmmOwexIV33tKrtNGOjUebCqVdOy3L7+8ATT23FRifEY1QVedL16lzfn8LE0K0uZyxvLwcej3LxRMRtedYjRV7So2d9tq2Or14dv0xNNrdSI7S4r6z86DtIDk/mUeSUW5wYFhyJKbnxEGjYrI9WMyfPx+NjY2nPW8ymTB//vwgRERERF1VZXLieI0VSVHaTreUyUJg9fYSCAFMyYrBqNQov64lC4FaiwsjkiORqtd2JWw6ic9LyidOnAiFQgGFQoGzzz4bKtXPb5UkCUVFRVi4cGGPBElE1N8V19uwo6gB4ZoQ6HXqdo9zeSS8sPE4qkxOxISp8cCCPERq2z/+ZB5JRmmjHbmJEZgxJM7nJJ0GhvZuiDc0NCA8nBVmiYj6G48kY3+FCZIs+9SWa9uJBhTU2RCqUuLKqf4XSqsxO5EYqcWYNHY06U4+J9zN1cnz8/Nx3nnnISLi595vGo0G2dnZWLp0abcHSETU31WZHPihsAEKKDosPuKVZLy8uQCF9TaEa0LwwIJhPhcr8cpNyfaQhHDMyo3zqYIpDQyXXnopgKbCaMuWLWtVY0WSJOzbtw+zZs0KVnhERBSgwjobShpsyOikdSjQtDru/T1N7UMvHJ+KmLDOl5+fzOGW4PYKjB+q73AVHvnP57/NRx99FACQnZ2NK6+8ElotlxkQEXWm3urCthMNcHokpHcwYMqywL+2FuFgpRkalRL3np2H1OjO+2wCTcl2SYMdWXFhmJkbjzANB8rBpHk7lxACkZGR0Ol+/u9Go9FgxowZuPXWW4MVHhERBcDi9GB/uQkRoSqf9mG/v6ccVpcXadE6nD0y0a9rCSFQaXJgZEoksuO4Iqq7+f2t7MYbb+yJOIiIBhyT3YNtJ+phsLuQFdv+ACaEwFvbS7CrxIAQpQJ3zctFbkJEu8efTJIFShvtyIgNw+yh8T4tOaOB5Y033gDQdEP8V7/6FZePExENAIcqzWiwuZAT3/m/6cdrLNh6oh4AcN2MTKiU/tVvqbe6ER2mwfj0mA5blVJgfPpmFhsbi2PHjiE+Ph4xMTEdrulvq2ALEdFgY3N5sa2wHtVmJ7Jjwzv8d/OjHyvw7fF6KADcekYORqf6VoBSlgVKGm1I1eswe2i8z3u9aWBqXolGRET9W5XJgSPVFiRGhnbaDtQry3hze1MnijlD45GX6F8rL5dXgsXlxdxhCdCH8XtET/Ap4X722WcRGRnZ8mduoiciap/TI+H7wgaU/rTMu6O7xV8drMbnB6oBANfPyMKU7FifriGLppnt5CgtzsiL77AQGw1ckyZNwoYNGxATE9NS3LQ9e/bs6cXIiIgoEB5Jxr7ypkJpvtxIX3eoBpVGJyJCVVg6Kd3v61WaHBgSH47cBK6O6ik+JdwnLyNftmxZT8VCRNTveSQZO4oaUFBrRWZsWIfLur49Vof3djcVOFk6KQ1nDkvw6RqyaJrZTozSYk5eAqL9LIxCA8dFF13UUiStubgpERH1X4V1NpQ22Dqs+9Ks3urCp3urAABXTElHhNa/bWWNNjfCNSqMz4iBys9+3eQ7vzf77dmzB2q1GmPHjgUAfPLJJ3jjjTcwatQoLF++HBoNv/gR0eAkyQK7ihtxuMqCtGhdh0VOdhQ14s0fmpaALRqTjEVjUny6hiwEygx2JERoccbQeMSE89/cwezkZeRcUk5E1L+ZnR7sKzci3IdCaUIIrNlRCrckY1hSBGYOifPrWh5JhsHuxqzcOCRE+tYRhQLj962M2267DceOHQMAFBYW4sorr0RYWBjee+89/PrXv+72AImI+gNZFvix1ID9FSak6LUd9sDeV27E61uLIADMHZaASyem+XQN8VOyHROmwRl58T63DKPBoaysDOXl5S2Pd+zYgfvvvx+vvvpqEKMiIiJfCCFwoMKERpsb8T6M77tLDdhXbkKIUoHrpmf5veW30uRAVlwYhidHBRoy+cjvhPvYsWOYMGECAOC9997D3LlzsWbNGqxcuRIffPBBd8dHRNTnCSFwsNKE/DIjEiJCO2zLdbTaghWbCyAJgek5sbh2eqZPg2Rzsh2t02BOXoJPgzENLtdccw02bdoEAKiursaCBQuwY8cO/O53v8Mf//jHIEdHREQdqTA6cLTagqQobaeF0uxuL97eUQYAOH9Mss9tRJuZHB5oQpSYkBEDjYpLyXua33/DQgjIsgwAWL9+Pc4//3wAQEZGBurr6wMO5KmnnoJCocD9998f8DmIiILhaI0FO4sNiNapOyxwUlhnxQsbj8MjCYxL1+Om2dmdDqpAc7LtgF6nwZy8eC79ojYdOHAA06ZNAwC8++67GDt2LLZt24bVq1dj5cqVwQ2OiIja5fJK2FduggLwqb3nB3sqYHJ4kBQVivPH+rYlrZlXllFndWJMqh7Jem2AEZM//E64p0yZgscffxxvvvkmNm/ejMWLFwMAioqKkJSUFFAQO3fuxD//+U+MGzcuoPcTEQXLiVorthc2IlwT0mHxsjKDHc9tOA6XV8aI5EjcfmauT30yhRAoNzoQpVXjjLx4JEZxcKS2eTyelgJq69evx4UXXggAGDFiBKqqqoIZGhERdeB4jQVlP3Ue6fTYWgs2H6sD0NTdpLO93qeqNjmRER2GkalcSt5b/E64n3vuOezZswd33303fve732Ho0KEAgPfffx+zZs3yOwCr1Yprr70Wr732GmJiYvx+PxFRsJQ02PB9YT3UIYoO91NXm5x4Zt0x2N0SchPCcff8oT4t4RJCoMLoQESoCmfkxSOJyTZ1YPTo0XjllVewZcsWrFu3DgsXLgQAVFZWIi7Ov2I6RETUOxptbuwvNyNap+60UrhXkvHm900FV88YGo8Rfu6/tjg9UCgUmJAV02GtGepeflcpHzduHPbv33/a83/9618REuL/L+6uu+7C4sWLsWDBAjz++OMdHutyueByuVoem81mv69HRNQdKowObDvRAAh0OOtcb3Xh7+uOwuL0IiNGh/vOzvNpkBNCoNzgQPhPyTaXfVFnnn76aVxyySX461//ihtvvBHjx48HAKxdu7ZlqTkREfUdsiywr9wIi8uDnLjO+2B/ebAalSYnIrUqXDbZv57bkixQa3FhclYM0vzc801d43fC3Wz37t04fPgwAGDUqFGYNGmS3+d45513sGfPHuzcudOn45988kk89thjfl+HiKg71Zid+O54PVxeqcM+mQa7G3//+hgMdg9S9Fo8eM6wDguqnazc6EDYT8l2ip4DI3Vu3rx5qK+vh9lsbrVi7Je//CXCwjrv50pERL2ruMGGglorUvW6TguoVpuc+Gxf0/agK6dk+LTX+2SVJgdS9FqMTtUHHC8Fxu+Eu7a2FldeeSU2b96M6OhoAIDRaMT8+fPxzjvvICEhwafzlJWV4b777sO6deug1fo2c/PII4/gwQcfbHlsNpuRkZHh70cgIgpYncWFrcfrYXV5kNFBsm1yePD3r4+hzupCQmQoHjpnWIcF1U5WbrAjTNOUbPtbeZQGt5CQEHi9XmzduhUAMHz4cGRnZwc3KCIiOo3N5cXeMhM0KmWnK99kIbDq+2J4ZYHRqVGYnhPr17WalpIDEzNjoNNwKXlv83sP9z333AOr1YqDBw+isbERjY2NOHDgAMxmM+69916fz7N7927U1tZi0qRJUKlUUKlU2Lx5M1544QWoVCpIknTae0JDQxEVFdXqh4iotzTa3PjuRD2MDjcyYsLavRttdXrxzLpjqDY7ERuuwa/OGdZhQbWTlRvs0GpCcEZePJd8kV9sNhtuvvlmpKSk4Mwzz8SZZ56J1NRU3HLLLbDb7X6d69tvv8WSJUuQmpoKhUKBjz/+uNXrH374Ic4991zExcVBoVAgPz+/+z4IEdEgcLDChFqLE0mRnU88fnusDsdrrQhVKXHDDP96bjcvJR+VHIX0GH6vCAa/E+4vv/wSL7/8MkaOHNny3KhRo/DSSy/hiy++8Pk8Z599Nvbv34/8/PyWnylTpuDaa69Ffn5+QPvBiYh6isnuwdbjdai3uDpMtu1uL57dcAwVRgf0OjUeOmdYhwXVTtacbM/JS2CyTX578MEHsXnzZnz66acwGo0wGo345JNPsHnzZjz00EN+nctms2H8+PF46aWX2n39jDPOwNNPP90doRMRDSoVRgcOV1uQGBkKpbLj5LnR5sb7e8oBAJdMTPP5O0Wzqp+Wko9Nj/YrUafu4/eSclmWoVafvixSrVa39Of2RWRkJMaMGdPqufDwcMTFxZ32PBFRMJmdHnx3oh7VZieyY8Pb7Z3t9Eh4bv1xlDTYEalV4aFzhvlcWZzJNnXVBx98gPfffx/z5s1ree7888+HTqfDFVdcgRUrVvh8rkWLFmHRokXtvn799dcDAIqLiwMNl4hoUHJ5JewtM0KSRadbzYQQWL29BE6PjCHx4ThreKJf17I4PRDgUvJg83uG+6yzzsJ9992HysrKlucqKirwwAMP4Oyzz+7W4IiIgs3q8mLbiXqUGezIig1v9060yyPh+Q3HUVhvQ5gmBA8uGObz/usKgwNaNZNt6hq73Y6kpKTTnk9MTPR7STkREfWMY9VNPbdTfeg+sqvEgL3lJoQoFbhxVnans+Ena15KPjqFS8mDze8Z7hdffBEXXnghsrOzWwqWlZWVYcyYMXjrrbe6FMw333zTpfcTEXUnu9uL707Uo6TBjqy4MIS0l2x7Jfxj0wkcr7VCpw7Bg+cMQ0asb1WhW/ZsD+WebeqamTNn4tFHH8V//vOflmKkDocDjz32GGbOnBnk6Njak4io3urC/goTYsI0nfbctjg9WLOjFABw/phkv78jVHIpeZ/hd8KdkZGBPXv2YMOGDS1twUaOHIkFCxZ0e3BERMHicEvYdqIexfU2ZMWGQaVse2D0SDJe2lSAI9UWaNVKPLAgD9k+9NIUQqDC6OAycuo2zz33HM477zykp6e39ODeu3cvtFotvvrqqyBHx9aeRDS4eSUZ+WVG2F0SsuM7n91+Z2cZLE4vUqO1OH9sil/Xsjg9UCoUXEreR/iVcP/3v//F2rVr4Xa7cfbZZ+Oee+7pqbiIiILG6ZHwfUEDTtT9lGy3cxfaI8l46ZsTOFRlRqhKifvOysOQhIhOzy+EaOqz/VPrLybb1B3Gjh2LEydOYM2aNS03xK+++mpce+210OmC/98YW3sS0WBWUGdDYZ0NadGdJ9v5ZUZsL2qEQgHcNCsH6k5mw0/mlWXUml2YnB3j82o76lk+J9wrVqzAXXfdhby8POh0Onz44YcoKCjAX//6156Mj4ioVzk9En4obMDxWgsyY8LaHeQ8kowV3xTgQIUZmhAl7jlrKPKSIjs9vxAC5QYHwkJVmMM+29RNfvjhB3z66adwu90466yz8Itf/CLYIZ0mNDQUoaH+VdclIhoIjHY38suMiAxVIVTV8YyzzeXFmz+UAADOG5WMnPjOV82drMrkRFqMDmPS9AHHS93L59slL774Ih599FEcPXoU+fn5WLVqFV5++eWejI2IqFc1J9tHqy1Ij9FBo2r7n0ivJOOVzQXYV2GCOkSBe84aihHJUZ2ev3lmO5zJNnWj999/H7Nnz8bzzz+Pf/3rX7jgggvwt7/9rUvntFqtLS07AaCoqAj5+fkoLW3aT9jY2Ij8/HwcOnQIAFq+G1RXV3fpukREA40sC+SXGWFyuBEfoen0+Hd3lcHk8CA5SosLx6f6dS2Tw4MQhQITs2KgVXMpeV/hc8JdWFiIG2+8seXxNddcA6/Xi6qqqh4JjIioN7m8PyXbVRakR+vavQPtlWX889tC7C03QaVU4O75QzEyxbdku8zgQESoCnOGMdmm7vPkk0/i1ltvhclkgsFgwOOPP44nnniiS+fctWsXJk6ciIkTJwJo6vE9ceJE/OEPfwAArF27FhMnTsTixYsBAFdddRUmTpyIV155pWsfhohogCmst6Gg1opUva7T4mUHKkz4rqABCgA3zspq98Z/W7ySjHqrC2PT9Nyq1scohBDClwOVSiVqamqQkJDQ8lxkZCT27t2LIUOG9FiAHTGbzdDr9TCZTIiK6vwLLxFRW9xeGT8U1uNwc7Ldzl1hryzj1W8LsafU2JJs+7JkqynZtiNKq8EZefFI9qEVCA0O3TGORUREID8/H0OHDgUAuN1uhIeHo6KiAomJ/vVs7U0cw4looLM4Pfj6YA0cbqnTsd/u9mL52kNotLuxYGQirpqa6de1ShptSI3W4awRiZ0uW6fu4es45lfRtN///vcIC/t5873b7caf//xn6PU/f+F85plnAgiXiCg43F4ZO4oacLjKgrROku1/fluIH39Ktu/yMdmWf0q2o3UazMmLR2IUk23qXna7vdVAr9FooNVqYbVa+3TCTUQ0kMmywN4yI+qtLp/2Yb+7qxyNdjcSIkNxyYQ0v65lsLsRqlJiUmYMk+0+yOeE+8wzz8TRo0dbPTdr1iwUFha2PGaPNyLqT5qT7YOVZqRF69rd79RWsj3Wj2Q7JqxpZjsxksk29Yx//etfiIj4uUK+1+vFypUrER8f3/LcvffeG4zQiIgGpeIGG47VWJGi10LZSY60v8KErSfqoQBw06zsdm/+t8UjyTDY3Zg5JA5JvKnfJ/m8pLwv4nI0IgpUbyTbpY02xIVrcUZePBIiWZ2ZTtcd41h2dnanN7wVCkWrG+R9AcdwIhqoLE4P1h2qgc3lRYq+4/3UNpcXj649CKPDg3NGJuHKqb63SxRCoKTBjqz4MMwbnuhX+zDquh5ZUk5ENBC0JNtVnSTb0k/Jdpl/e7Ydbi/ueScfALD11/OZbFOPKi4uDnYIRET0E1kW2FduQp3Ft6Xk/91VBqPDg6SoUFw80b+q5PVWNyK0KkzKjGGy3YfxN0NEg0qrmW19+8m2R5KxYnOB38m2JAuUNjpaHsf60AKEiIiIBoaSRjuOVlt8WkqeX2bEtoIGKBTAzbNz/Np/7fRIsLg8mJgZg7gI3tjvyzjDTUSDhssrYXvhzwXSOkq2X/6mAPt/6rN99/yhGJ3aebLtlWWUNtqRrOfAR0RENNhYnB78WGqASqlAmKbjNMvi9OA/3xcDAM4dlYTchIgOjz+ZLAQqTA4MT4rE0ETf30fBwYSbiAaF5j7bRzpJtt1eGS99cwIHK83QhChxz1m+9dn2yjJKGuzIiA3DxIzobo6eiIiI+jJZFthX5ttSciEE3tpeCrPTi1S9Fhf7WZW8xuxEfHgoJmXFIETJotV9HZeUE9GA5/RI+L6gKdlO7yDZdnkk/GPj8aZkW6XEvWf7mGxLTcl2VlwYzsiLhz5M3d0fgahdlZWVwQ6BiGjQK2qw4YiPS8l3FDVid4kBIQoFbjkjx6/911aXF15ZYFJWDKK0/L7RH/j82/39738Pr9fb7uulpaU455xzuiUoIqLu4vQ0zWwf/SnZbq/VhtMj4fmNx3G42oJQlRL3n52HEcmdJ9seSUZxox3Z8eE4Iy+Bgx/1utGjR2PNmjXBDoOIaNAyOTzILzUiVK3sdCl5o82N1TtKAQAXjE9BVlznhdWaSbJAjdmJUSlRyI4L61LM1Ht8TrhXrVqFqVOn4sCBA6e99s9//hNjxoyBSsUV6kTUdzjcEradaMDRagvSY9tPtu1uL55dfwzHaqzQqUPw4DnDMCwpstPzu7wSShrtGJoQjjl58YgI5b+B1Pv+/Oc/47bbbsPll1+OxsbGYIdDRDSoyLJAfpkB9TYXEjvpSiKEwMptxbC7JeTEh+P8MSl+XavC6EBatA7j0qM7bQdJfYfPCfeBAwcwduxYTJkyBU8++SRkWUZpaSkWLFiAX//61/jb3/6GL774oidjJSLymd3txXcn6nC81oKMmLB2K3/aXF48s+4YCupsCNOE4KFzhvlUuMTlkVBuaCpYMntoQqd3tIl6yp133ol9+/ahoaEBo0aNwqeffhrskIiIBo2COiuO11iRptd1upT8m6N1OFRlhjpEgVtm5/i1/9pgd0OtUmBydgx0Gt+rmVPw+fwNMSoqCv/5z3+wdOlS3Hbbbfjvf/+LoqIiTJs2Dfv27UNWVlZPxklE5DOry4ttJ+pRVG9DZmxYu3ujzA4Pnl1/DGUGByJCVXjwnGHIjO18iZbTI6HC6MDw5EjMGBLX7p5wot6Sk5ODjRs34sUXX8Sll16KkSNHnrbqbM+ePUGKjohoYDLY3NhTaoROHdLpd4EqkwPv7S4HACydlI5kvdbn67i8Egx2N2YOiUOKXtelmKn3+T0lM2PGDIwdOxYbNmxAeHg4/t//+39MtomozzA7Pdh2oh6lDfYOk22j3Y2/rTuGapMTUVoVHjpnONJiOh/E7G4vqkxOjE6NwrScOGhUrD1JfUNJSQk+/PBDxMTE4KKLLuI2LyKiHuSRZOwpNcDkcCOnk33YXknGa1uK4JZkjEqJwlkjEn2+jhACFUYHchMiMMKHQq7U9/g1Gr/99tu4++67MWHCBBw+fBivv/46zj33XNx555148sknodX6fqeGiKi7Ge1ubDvRgDJDU8VwlbLtZLjB6sLf1h1DncWFmDA1Hjp3OJKjOv/3y+r0otbqxLh0PaZkx/pVVZSoJ7322mt46KGHsGDBAhw8eBAJCQnBDomIqF+yu70Y9YevAACH/nheu1vGjlabUVBnRVq0rtP91Gv3VaK00Y5wTQhunp3d6dLzk9VaXIgJ02ByVgy/d/RTPv/Wli5diltvvRXLly/Hhg0bMHz4cPzlL3/Bpk2b8Pnnn2P8+PH4/vvvezJWIqJ2Ndrc+PZYHcqNdmTHhbebbNeYnXj6y6Oos7iQEBGK3ywc4VOybXZ4UGdzYWJmDKYy2aY+ZOHChfjNb36DF198ER9++CGTbSKiHlZrdmJvuQnROk27NWKaHaux4Iv91QCA62dmITpM4/N1bC4vXF4ZEzNj/Hof9S0+z3BXV1fjxx9/RF5eXqvnZ82ahfz8fPz2t7/F3Llz4Xa7uz1IIqKO1Flc+O5EPeotLmTHhkPZThGScoMdz6w7BrPTi+QoLR46dxhifBjAjHY3TA4PpmTFYHx6dLvnbybJouXPO4oaMScvwa/CKET+kCQJ+/btQ3p6erBDISIa8JweCbtKDHB6JCTFdnzD3u724vWtRRAAZuXGYUpWrM/X8coyqs1OjE/XIzfB99Zh1Pf4nHBv2bIFynZmjHQ6HZ5//nksXbq02wIjIvJFtcmJ707Uw+hwIzMurN1lWoX1Vjy3/jjsbgkZMTrcv2AY9LrOe2Y32tywuryYlhOL0an6TpPtLw9U4dG1B1seL3tjJ1L0Wjy6ZBQW+tn+g8gX69atC3YIRESDghACBytMKG20ITu28yT47R1laLC5ER+hwdVTM/26VoXRgYyYMIzPiGELsH7O5zWR7SXbJzvzzDO7FAwRkT/KDXZsPlYHs9ODzJj2k+2j1Rb8/etjsLslDIkPx6/OHe5Tsl1nccHhkTAzNw5j0nxLtu94aw9qzK5Wz1ebnLjjrT348kCV7x+OiIiI+pSyRgf2V5qQGKGFqpOtZT8UNuD7wgYoFMAtZ+T41cqrweqCVh3CFmADBDchElG/VFxvw5Zj9XC6JaR3ULBkX7kRz204BpdXxojkSDx4zjCEh3a+uKfa5IRXljF7aBxGpkR1endZkgUe+/QQRBuvNT/32KeHWi03JyIiov7B4vRgd4kBCigQ1clN+zqLC29tLwEAXDA2BXmJkT5fx+mRYHJ6MSEjGkk+1Jihvo8JNxH1OydqLdhyog6SLJAW036yvb2oAS9tKoBHEhiXrsd9Z+d12idTCIEKgwNKJTAnLwFDfRwkdxQ1osrkbP+8AKpMTuwoavTpfERERNQ3SLLAnlIDai1OpHTSP1uSBV7bUginR8bQhAhcMC7V5+vIP7UAG5YUgRHJbAE2ULBJJxH1G0IIHKoyY2dxI0JDQpAQFdrusZuO1mLN9lIIANNzYnHT7Ox2K5c3k4VAucGB8FAVZg+NQ3pMmM+x1VraT7YDOY6IiIj6huO1FhyttiAtWtdpS69P91WisN4GnToEt87J8atoaqXRgaQoLSZnxbDY6gDChJuI+gVZFthXbsSeUiMiQlWIDW+7urgQAl8cqMaHP1YAAOYPT8DV0zI7HSBlWaDUYENMWCjOyIv3exlXYqRvx/t6HBEREfW+UzuNDE+OxI8lRkRp1Z2ukjtWY8H/9jfVa7l+RhbiItqfGDiV0e6GUqHA5KwYRGo7rzND/QcTbiLq87ySjB/LjPix1IC48NB2C54JIfDe7nJ8fagGQNO+qYsmpHa6/9oryyhttCM5SotZQ+MR78cA2WxaTixS9FpUm5xt7uNWAEjWazEtx/eWIERERNR72uo0Eh2mxoKRiVg4uuNOI1anF69tKYQQTS3A/BnvXV4JjXY3pmXHIiPW99V11D9wDzcR9Wkur4TtRY34sdSAxEhtu8m2JAu8sa24Jdm+Yko6Lp6Y1mmy7ZFklDTYkR4ThjOHJQSUbANAiFKBR5eMAtCUXJ+s+fGjS0ZxiRgREVEf1F6nEaPdg/d3V2B3iaHd9wohsHJbMQx2D5IiQ3HNNN9bgDVvZxuaEInRafqA46e+iwk3EfVZdrcX3xc04ECFCSlROkS0U13c7ZWx4psCbCtogFIB3Dw7G+eOSu70/C6vhNJGO4YkhGNOXjyiw9pepu6rhWNSsOK6SUg8ZW95sl6LFddNYh9uIiKiPqijTiPN3tlZCrmdTiMbjtQiv9wIlVKB2+bmdrr0/GTVJifiI0IxOTsG6k5ajVH/xCXlRNQnmZ0efF/QgKJ6GzJidAhVtT142d1evLjpBI7VWKEOUeC2M3MxISO60/M73BIqTHaMSI7C9Jy4butzuXBMCmYPjcfY5V8DAFbeNBVz8hI4s01ERNRHddZpBAAMdg+O1VpOqx5e0mDD+7vLAQBXTMlAph9Lwk0ODwSAKdkx7a7go/6PCTcR9TmNNje2nahHhdGB7NgwqNq542u0u/H8huMoMzigU4fgnrOGYlhS5228rC4vas1OjE2NxpScmHaT+UCdnFxPy4llsk3Uw+xuL0b94SsAwKE/nocwDb/eEJHvfO0gYnJ4Wj12eiT889tCeGWBiRnRmD88wedrur0yGqwuTM2JRVZcuF/xUv/CEYmI+pRqkxPbCurRaHMjOy683WS12uzEc+uPod7qhl6nxn1n5/l0V9nk8KDB5sKEzBhMyoxuN5knIiKiwcHXDiInz0ILIfDmDyWotbgQG67BjbOyO60b00wWAmUGO/ISIzGG+7YHPCbcRNRnFNfb8ENhAxweCZmxYe228iqqt+H5DcdhdXmRGBmKBxYMQ0Jk58XOGqwu2NwSpmXHYlx6NJSceSYiIhr0mjuNdLSsPCZMjWGJP6+i+/Z4PbYXNUKpAG6dk9NunZm2VJmcSIjkvu3Bgr9hIgo6IQSOVluw5XgdvJJARkz7yfaBChP+9vVRWF1eZMWF4bcLR/iUbNeYnXB6ZczMjcP4DCbbRERE1CREqcBD5wzr8Jirpma2fHcobbTj7R2lAIBLJqYhL7Hz7WzNjHY3AGBqdiz3bQ8STLiJKKgkWWBvmRHfnaiHJkSJZH37y7q2FdTjHxtPwOWVMTIlEg+fOxxRnQxWQghUGBxQKIA5efEYmRLl85IvIiIiGvhcXgn6MDUunZSG6FO+V8SEqXHH3FxMzooB0FR09ZXNBfDKAuPS9ThvdOddUVqu42nqtz0+Xc9+24MIl5QTUdC4vTJ2lzRif4UZceGadu/0CiHwxYFqfPhjBQBgek4sbpqV3en+6+Y9UlFaNWbmxiE9hoMbERER/UwIgX3lJhTW2XDOyCTMz0vAPf/NBwDcd9ZQjE7Vt8xsCyGw6vviln3bN8/OaXdF3qlkWaDc6MDwZO7bHmyYcBNRUNjdXuwoasTRagtS9Np2qwrLssA7O8uw8WgtAOC80UlYOim90wHOK8sobbQjMVKLWUPjfC6IQkRERINHYb0N+8tNSIwMhTpE2arX9rCkyFZb0DYdrcOuEgNCFArcduYQv/ZtV5gcSNZrMTkrhgVbBxkm3ETU64x2N34obEBJgx3pHfTYdntlvLa1ED+WGqEAcOXUDCwYmdTp+T1SU7KdERuGWblxiA7TdPMnICIiov6u3urCzuJGhKqUiNR2vEWtoM6K/+4qAwAsnZyG3IQIn6/TYHVBo1JiWk5sp9ehgYcJNxH1qmqTEz8UNqDW4kRWXBhUyrbv8lqcHvxj4wkU1tugUirwizNyMCU7ttPzOz0SKgwO5CZFYMaQOL/uPhMREdHg4HBL2FHUCKvTg6zYjvtgW5wevLK5AJIsMDkzBuf4cPO/md3thcXlxeyh8UjR67oaNvVD/CZKRL2mqN6G7YUNsLslZMeFt7ssvMbsxPMbjqPW4kKYJgR3zx+KYUmdVwC1Or2otTgxOi0KU7JjoVW3PXNOREREg5ckC+wuaURZox1ZcWEdFlOVZYFXtxTCYPcgKSoUy/zot+2VZVSZnBibrsdwH77H0MDEhJuIepwsCxyuMjfte1IqkNlBZc6COite3HQCFqcXceEa3Hd2HlKjO78jbLS7YXR4MDErBhMyooPa1zJMo0LxU4uDdn0iIiJq35EqMw5XW5Cq17W70q7Z2r2VOFxlgUalxJ3zhkKn8e1mvhAC5Y0OZMaFYVJmDNuRDmJMuImoR3kkGT+WGrG/3IgonRoxHeyn3l1iwL+2FsIjCWTGhuG+s/N86lFZZ3HB6ZUwPSe2VTVRIiIiopOVG+zYU2qAXqvuNHneX2HCZ/urAAA3zshCmg8TAM2qzU7ow9SYxhV3gx4TbiLqMSdXIk+K0ra7n1oIga8P1eD93eUQAMal6fHLM4d0OkAJIVBpdEKlUmBOXjxyEyLYY5uIiIjaZLS7saOoEZIsEBve9gRAqDoE/7phCmrMTjz+v8MAgPnDEzB9SJzP1zE5PJCEwNTsWMRFhHZL7NR/MeEmoh7RaGuqRF7W2HElckkWeGdnKTYdrQPQNKhdNTUTIZ3MUsuyQJnRDr1Wgxm5seyxTURERO1yeiRsL2pEvdWF7LiOi6Q5PRJe+uYEHB4JuQnhuHJKhl/XabC5MC07FtnxHV+HBgcm3ETU7coNdmwvbITB5u6wErnDLeGfWwpwoMIMBYDLp6TjnJFJnc5SeyUZpQY7kqO0mJkbj4RI3j0mGsykk/rm7ihqxJy8hE5v2hHR4CHLAntKDSiusyEzLqzdoq1A0+q5lduKUWl0Qq9T4465uT73zZZkgXKjAyOSIzEmTd9d4VM/x4SbiLqNEALHaqzYUdwASRIdVv5ssLrwwsYTqDA6oAlR4pYzcjA5K6bTazg9EsqNDuTEh2PGkDif9ngT0cD15YEqPLr2YMvjZW/sRIpei0eXjMLCMSlBjIyI+orDVWYcrDAhJVrbaVHVrw7WtBR5vWNuLqI7qD1zMiEEyo12pEfrMDU71ucknQY+/pdARN3i/7d333F2XeWh93+n9zq9d3VbXbIkXHEHxyYhGF9MwAnNGIPjCwkmAV8nufEleS9giIEEsKkBbgzYYILBuBfZsiU3dWmappczc3o/e71/HM1YsiXNmV70fD+fsTT7bJ299vbMWfvZa63nyeQ0dneO8uyRIcx6PdW+0wfbHcMx/vl3B+kJJvDYTHzuiuUFBdvRZJaeYIKVFS4uaCmRYFuIs9wje/u4+cd7GAinTtreH0py84/38MjevnlqmRBioegaOZ4kzWbGbj7zWOP+3jC/eKUbgPdvrqG51FnwcQYiKZwWE1sbi3CcJmeNODvJT4MQYtpiqSwvdeSTo5W6LLispw+Ed3eO8r1n20nnNKq8Nj59SXNBCUVG42lCiQwbFkDZLyHE/Mtpirt+sx91itcUoAPu+s1+LltVLtPLhThLBaIpXmwbQVOcNknamMFIkm8/3YpSsKOpiIuWlRR8nFAiQyansaNZlrmJt5OAWwgxLUORFC+2BegOJqjx2rCcJrO4Uor/3tvPr17pAWBNlZuPn99UUD3LgXCSrKbY1ljEygq3lP0SQrCrfYS+UPK0ryugL5RkV/sI25oKzy4shFga4uksL7aPMBovLEnavz1xlHg6R2OxgxvPqyu46slJSdKKJIGreDsJuIUQU9YxHOPF9hGiqQwNRY7TjiJlcho/3NnJzrYAAO9cUcr7NtVMnIlcKbpHE9jNBrY1FdFYUvjULiHE0jYYOX2wPZX9hBBLRyansat9hK6R+BnzyUD+XuO7z7aPJ0n75EVNBc+iy2oa3cEEqyrySdKkNKk4FQm4hRCTltMU+3pDvHIsiEGno/YM67XDiQz3PnmU1qEYeh3csKWWi5eXTniMsUzkJU4r25qKKPdYZ/o0hBCLWKmrsM+EQvcTQiwNSile6wpyuD9Ctdd22kopY379Wi+vdgUx6nXccvEkk6SNJKj129kkSdLEGUjALYSYlEQ6x+7OEfb3RfDbTWfsmLpG4nzjiaOMxNLYTAY+cWEjqysnLpORyuToCiaoL7JzXmNRwZ2fEOLssaXBT4XHSn8oecp13Dqg3GNlS4N/rpsmhJhHhweivNYVosRlOe0ytzEvd47w8Ov55Ip/sa2OxuLCZ9L1hpL4HGbOayyaMBmbOLvJoxghRMEC0RRPHBpkb2+YCrf1jIHwnmOj3P3IQUZiacpcFr5w9YqCgu1oMjtew/KCZSUSbAshTsmg13HnNauAfHB9orHv77xmlSRME+Is0jUSZ1dHAIfFcMYErpBfFnffsx0AXLayjO1NxQUfJxBNodflH/xNlIxNCAm4hRAF6QzEePzgIL2j+ZHn0yU7U0rx8Ou9fPPJVtJZjZUVLr5w9UoqPLYJjxGIphiOpdhQ52NHc7E8MRZCnNGVayr41o0bKHWfnBW43GPlWzdukDrcQpxFhiIpXmgLoGlQPEH1k9F4mn974ijpnMaaKjfv3Vhd8HGiqSzRVJZN9X5q/JIkTUxM7maFEGeUzWns7wvzyrEgeh1nTD6SyuS4//kOXu4cBQpPjqaUoi+URKeDHc3FLC9zSSZyIURBrlxTwY7mYs75X38A4Ps3beb8lhIZ2RbiLBJOZtjZOkw4maHWd+YgOJXNZyQPJjJUeqx87PzGgj8vUtkcA+Ek62u8LC9zzUTTxVlAAm4hxGnFUll2d45wsD+C324+4/TuQDTFvz1xlK7RBAa9jg9sqeWCAmpY5jRFdzCOy2LivMYiaqWkhhBikk68Wd7S4JdgW4izSDKTY1dbgL5QkoYix4QZye97roPOQBynxcitl7QUPJsup+Urpywrc7Gu1icDA6JgEnALIU5pMJJkV9sIPcEEVV4b1jMkHjnUH+FbT7USTWVxWY188sImWgp48pvOanSNxqny2tjaWESJ68xTwIQQQgghxmRzGi93jNA6FKPWb58wCH7o1V52d45i0Ov45EVNBd93KKU4Nhqj2mtjc4Mfs1FW5YrCyU+LEItUPJ2l/vO/pf7zvyWezs7Y+yqlODoY4fEDgwxEktQXOU4bbCulePzgIF959DDRVJZav50vvmtVQcF2NJWlKxinpdTFRStKJdgWYgF5+umnueaaa6isrESn0/Hggw+e9LpSii996UtUVFRgs9m49NJLOXLkyPw09i0Gw6n5boIQYg5omuLVriD7+8JUeW0T1s5+9ugwv33jeEby8+pYNokp4b2hJD6bhfOainBaZLxSTI4E3EKIcalsjpfaR3jq0DCaUtT5HaedmpnJadz/fAf/uesYOaXYUu/nb69cXlC2zpFYmuFoinXVXt7RUiydlxALTCwWY+3atdx7772nfP1f/uVf+PrXv863v/1tXnzxRRwOB1dccQXJZHKOW/p2L7QFCMbT890MIcQs298X4tWuIKVO6xln4QEc6Avzo52dALzrnHzeh0IFoin0etja6KdogmRsQpyK3OUKIQAYjaXZ1TFC+3CUcpcNp/X0Hw8jsTTffPIoHYE4Oh28d0M1l68qO+O6KTg5Odq2piJWlrtlDZQQC9BVV13FVVdddcrXlFJ87Wtf4+///u+59tprAfjhD39IWVkZDz74IO9///vnsqlvMxxNsbMtwIXLSqTSgRBL1NHBKC91jOKxmc54vwLQG0zwzSdbxwcHrltXWfBxIskM0VSOHS1FkpFcTJmMcAtxllNK0TEc47EDg3QGYtT5HWfsvA71R/jH3+6nIxDHYTbw1+9cxhWryycMtrOaRsdIDLvZyEXLS1ld6ZFgW4hFqL29nf7+fi699NLxbR6Ph61bt7Jz5855bFlejd/GsUCcXe0jpLPafDdHCDHDukbivNgewGLU4ztDMleAUCLD1x8/QiKTo7nEyU076ie8XxmTSOcYiqZYXysZycX0yKNfIc5i6azG3p4Qr3UHMep1Z8zuqZTi0QMDPLC7G01Bjc/GJy9qLmjtdSqTozuYoMZvZ2uDTMkSYjHr7+8HoKys7KTtZWVl46+dSiqVIpV6c311OByelfYZdXqqvTYO9UewmQxsrvfLwz0hloiBcJKdrQGyOUWV13bGfZOZHN94/AjD0TSlLgu3XNw04TrvMZmcRm8owepKN+dWewoO0oU4FQm4hThLBePp8cyeJU4LbpvptPumMjl+sLOTXR0jAJzX6OeD59VhMZ55zRRAOJFhOJZiebmLLQ1+meIpxFnq7rvv5q677pqTY1lMBsrdVl7vCWEx6llb45UbZiEWuUA0xXNHh4mmMtRMUGs7pyn+/ek2Oo6X//r0O1twWU9/n3MiTVMcG4nTVOJgU70fY4FBuhCnIz9BQpxllFJ0BvJTyNuGY9T47GcMtgfCSf75dwfZ1TGCQafjf2yp5a92NBQUbA+EkwQTaTbX+dnRXCzBthBLQHl5OQADAwMnbR8YGBh/7VTuuOMOQqHQ+FdXV9esttNhMeK3m9lzLMjhgeisHksIMbtCiQzPHR0mEEtR7bOf8QGaUoofv9DJGz0hzAY9t17STLnbWtBxlFJ0Bd8sVzpRMjYhCiF3v0IsUjlNjf99V/sI57eUnDaj+JgTp5AbdDrqixzoz9Bp7Tk2yv3PdZDI5PDYTHzigsaCSn5pmqI7GMduNnLBslKaSk4/VV0Isbg0NDRQXl7OY489xrp164D89PAXX3yRm2+++bT/zmKxYLHM7XISj81ENqex6/h6z/pix5weXwgxfbFUlp2tw/SHk9T7z3zfAvDw6308c3QYnQ4+dkEjTSXOgo/VE0zgsZo5r6mo4BFxISYiAbcQi9Aje/u489f7xr//8P0vUeGxcuc1q7hyTcUp/81oLM3LnSO0FTCFPKcpfrmnm9/vz49gtZQ6+fgFjXgnSE4C+dJi3aMJKjxWtjYWUVbgU2UhxMIRjUY5evTo+Pft7e28+uqr+P1+amtrue222/inf/onWlpaaGho4Itf/CKVlZVcd91189fo0yhyWugPJXmhLYDFpKfCc+Z1n0KIhSOZybGzdZjOQJy6IvuE+RieOTLEQ6/1AvCBLbWsq/EWfKyBcBKzUc+25iKKJdeMmEEScAuxyDyyt4+bf7wH9Zbt/aEkN/94D9+6ccNJQbdSirbhGHs6RxmNp6n128+YNCQYT/Mfz7SNT8G8YlUZ79lQhVE/8QqUSDLDYCTFsjIXm+p98nRYiEXq5Zdf5uKLLx7//vbbbwfgQx/6EN///vf5m7/5G2KxGB/72McIBoO84x3v4JFHHsFqXZgP2Mo9VrpH4zx/NMAFy0oKSvYohJhfyUyOF9oCHB2KUee3T3gf8sqxUX74Qr7W9tVryrloeWnBxxqNp8lqine0FE+YjE2IyZKAW4hFJKcp7vrN/rcF2wAK0AF3/WY/l60qx6DXkczkeK0ryL7eMGaj/oxZyAEO9IX5j2faiCSzWE16btrewMY6X0FtG4wkSWY0Ntb5WFvjLTgTqBBi4bnoootQ6lSfNHk6nY5/+Id/4B/+4R/msFXTU+W1cWw0znNHh7loeUlBM3aEEPMjnc0vBTnUF6HGb5vwnuLwQIR/f7oNpeAdzcW8Z31VwceKJDOEExnOayya1PRzIQo1r3fEd999N5s3b8blclFaWsp1113HoUOH5rNJQixou9pH6AslT/u6AvpCSXa1jzAQTvL4gUFe7Qrid5gpd1tPG2xrSvGb13v5yh8PE0lmqfLa+Pt3rSoo2M5pimMjMXTouGBZMRvrfBJsCyHmlN1s5Nm/vZgvXL0Cy2mSHOl0Omp8doYiKZ4/GiCSzMxxK4UQhcjkNF7qGOFAX4Qqn23CJK1dI3G+8fhRsppiXbWXD55XN+la22trvKyscM9E84V4m3m9K37qqae45ZZbeOGFF3j00UfJZDJcfvnlxGKx+WyWEAvWYOT0wfaJ9hwb5bEDA/SFE9QV2XFaTj+ZJZLMcM9jR3jo1d7xJ8NfuHpFQRk9U5kcHYEYxU4Ll6wspbnUJcnRhBALll6no9Zvp2s0zvOtAeLp7Hw3SQhxgmxOY0/nKPt6QlR6bBNmCR+KpPjaY0dIZHK0lDr52AWNEyaQHZPK5o7X2vawrsY74fpwIaZqXqeUP/LIIyd9//3vf5/S0lJ2797NBRdcME+tEmLhKnUVtj6yNxin2OGlzn/mjLyHByL8x9NtBBMZzAY9H9hay47m4oKOEUpkCByvr72p3n/GoF4IIRYKg15Hnd9Ox3AMo17HjuZiKf0jxAKQ0xS7O0d5rTtImduKzXzm38tgPM3/ffQQoUSGKq+NWy9pxmwsbCwxm9PoGk2wojyfc0ZqbYvZtKDukEOhEAB+v3+eWyLEwrSlwU+Fx0p/KHnKddwALquR8+qLsJ0hANaU4r/f6OOh1/Kj2uUeK5+4oJFqn33CNiil6A8nySnF5no/51R5pKMSQiwqRoOeGp+do4NRDHod25qKJpy2KoSYPTlNsefY8WDbZcUxwUP8SDLDVx49zHA0TYnTwl9f2oLdXFhYk9MUnSNxGoodbGnwy+++mHULJuDWNI3bbruNHTt2sGbNmlPuk0qlSKVS49+Hw+G5ap4QC4JBr+POa1Zx84/3oINTBt0f2Fp7xmA7lMjwvWfb2d+X//3Z1ljEB7bWFjTCk81pdI8m8NhNbKr3U19klynkQohFyWzUU+2zcag/gl4H5zUWFzw6JoSYOTlN8cqxUV45NkppAcF2Ip3jnseO0BtK4rObuP2yZQUnQdRUPu9MldfGtqaigoN0IaZjwfQst9xyC3v37uVnP/vZafe5++678Xg84181NTVz2EIhFoYr11TwrRs3UOo+uayN12bi5gub2FR3+hki+3pD3PWbfezvC2M26Llpez1/9Y6GgoLteDpL50icar+Nd64so6H4zBnPhRBiobMYDVR5bRzoi/BSxwiZnDbfTRLirDIebHcFKXVaJ1yels5qfOOJI3QE4jgtRv760mUFl/lTStE1GqfYaWV7czFuKV0q5siCeKzzqU99iocffpinn36a6urq0+53xx13jNcChfwItwTd4mx0yYoyXBYjH/jeLgBuvbiJc6pOn/Ajq2k89Govj+ztRwGVXisfv6Cp4FqTw9EUsVSWc6s9rK/1yXpHIcSSYTUZqPTY2NsTQq+DzfV+WSYjxBwYm0b+yrEgJU4zTuuZw5JMTuObTx7l8EAUm8nAX1/aQuUkamZ3BxO4rSZ2NBfhd0hZQDF35jXgVkpx66238qtf/Yonn3yShoaGM+5vsViwWAp7iiXEUjUYSbKnc5QjA9HxbSvK3acNtociKb7zTBttw/ns/xcuK+H6TTUFTZ3MaYqeYByrycA7WkpoKXVKFk8hxJJjMxuo8Fh5oyeEXqdjY50kURJiNo1lI3+tO0ipa+KR7WxO49tPtbK3N4zZqOfTlzRTV3TmxLAn6gslsJkMbG8uprSAKixCzKR5DbhvueUW/vM//5OHHnoIl8tFf38/AB6PB5ut8CdWQpwNMjmNQ/1hXu8OkcjkqPFP/DvyYluAH794jEQmh81k4EPb68445fxEyUyOnmCCKq+NzQ1+yqSDEkIsYXazkXK3lde6gwASdAsxS7I5bTwbeSHBdk5TfOeZdl7rDmEy6Lj14mZaylwFH28okgIdbGsqKnhmnxAzaV4D7m9961sAXHTRRSdtv//++/nwhz889w0SYoEKRFO80hWkbSiK12amzm8llcmddv9kJsdPXjzGzrYAAE0lDj56fiPFzsJmiIzE0gQTGVZWuNhY558wgYkQQsy3rpE4Oe109RsKI0G3ELMrndV4uXOEvT0hyt3WCZOWaZrivufa2X1sFKNexy0XNbOywl3w8QLRFOmcxo7mokmNiAsxk+Z9SrkQ4vSyOY3DA1Fe7w4SSWap9tonnAreNhTlO8+2MxRJodPBu8+p4N3nVmIoYCq4pil6QwkMBh3bm/ysrPAU9O+EEGI+7esN8fEf7abCa+OvL23BqJ96kGw3GylzSdAtxExLZnLsag9woC9ChaewYPv+5zt4sX0Eg07HJy5sYk2Vp+DjjcbTxNM5tjcX01xa+Ii4EDNNhq2EWKDGRrXbh6K4rSYais/8ZDan5Wtr/+b1XjQFfruZj5zfwLICp12NTSEv91jZXO+fVCISIYSYT4ORFIlMjkP9Ef7j6TY+dkHjtIJuh8VIGfmgO6cUm+v9mCToFmLKEukcL7YHONQXocpnmzD56liwvbMtgF4HH72ggXU13oKPF0pkCCeynNfoZ1mZc5qtF2J6JOAWYoHJ5DSOnDCqXem1YTGeuWMajqb44QudtA7lE6Ntqfdz43m1BdeXzE8hT7O83MWmev+E66mEEGIhuXh5Kf/8nnP4/C/fYM+xIP/+dBsfP79xWiPTDouRcp2VN7pDaJpiS0OR1OkWYgpiqSw7W4dpHYpR7Z/4nuatwfbHLmgsOP8MQCSZYTSeZlOdj1WVbilhKuad3FULsYAMRVK81jVK23AMj9VEfZH9tB2FxWTgOx/cyHNHA/zz7w6SymrYTAY+sLWW8xqLCjqepil6QgmMBh3bm4pYUe6WqZNCiEVpW1MR791QxS/29PDKWNB9wfSCbrvZSJXXxr7eMJrKB91SFlGIwoXiGXa2DdMZiFPrt084U2S6wXY0mWU4lmZjrY9zq70SbIsFQQJuIRaAdDafgfyNnhCxdGFrtcOJDD98oZNXu4IAtJQ6+at3NBScGC2RztEbSlDhsbJJppALIZaAplInn7q4mX974iivdAX59lNtfPzCxmlNB7eaDFR5bRzojaAp2NpQhM0sQbcQExmOpnj+6DD94SR1RfYJl3nkjidIe7F9BL0OPn5BExvrfAUfL5rKMhhNsqHWx7oar5QxFQuGBNxCzLP+UJJXu0Y5FojjtZtpKJp4rdGrXUF+sLODSDKLQa/junWVXLGqvODOJRBNEUpmWFXpZkOtT7KQCyGWjDVVnvGg+9XuIP/2xFE+eVHThNNYz8RqMlDtt3GwP0I2p3FeU7EsvRHiDPpCCZ4/GmA0nqLe75jw/iSb0/iPZ9rYcyyIQafjYxc0TirYjqWyDEaSrKvxsb7WJ8G2WFCktxBiniQzOfb3htnXGyKd06gpYKpVIp3jZy8d47nWfLmvSq+Vj7yjkVq/vaBjZjWNnmACm8nA+S0lLCtzSRZyIcSSs6bKw2fe2cI3njjKvt4wX3/sKLde0jyt6eAWo4E6v53WoRjpnGJHczEem2kGWy3E0tAZiLGzNUAyk6PO75hwWncmp/GtJ1t5vSeEUZ/PRj6ZBGnxdJaBSJK11V421HrlvkYsOLJYU4g5ppTiWCDOH/b181L7CHazkTq/Y8Jg+0BfmDt/s4/nWgPogMtWlfHFd60qONiOprJ0BuJUeGxcuqqMlRVu6ZSEEEvWygo3f31pC1aTnkMDEb76x8PE09lpvafJoKeuyE7XaJynDg0SiKZmqLVCLH5KKQ72h3n68BCZnEa17/R5aMakMjm+/vgRXu8JYTboufWS5kkH2/2hJOdUeaSEn1iwZIRbiDkUSmTY2x3i0EAYg05PfbFjwqA3lcnxi1d6ePzgIAAlTgs37agvuNyXUoqBcIp0TmNdjZe1NV5J+iOEOCu0lLr4n5ct56t/PEzrUIz/7w+H+etLW3BZpz4ybdTrafA76ByN8dThIbY3FVPusc5gq4VYfLI5jTe6Q7zSFcRhNlBUQD6ZeDrL1x87ytGhKBajnk9f0sLy8sLrZY8H29UeNtX7JdgWC5b8ZAoxB7I5jUP9Ef6wr5+9vSGKnRaqfLYJg+3DAxH+12/2jwfbFy4r4c5rVhUcbKeyOdoDMawmAxctL2FLg1+CbSHEWaWh2MHnLl+Oy2rk2EicLz9yaNoj03q9jjq/g2A8w5OHBukMxGaoteJsEU9nqf/8b6n//G+nPfNiviUzOV5sH+GlzhF8dlNBwXYokeFff3+Io0NR7GYDt1+2bFrB9nQSIwox22SEW4hZNhBO8np3kPbhOE6LgcbiidczpTI5fvlKD48dD7R9dhMf2lbPmipPwccdjacZjadpLnGxoc6L126e1nkIIcRiVeO387dXruArjx6mP5zky48c4vbLlk1rZFqv01Hrt9MXSvD04SG2NGgsK3NKGSJxVgknM+xqC9A6GKPSaysog38gmuL/PnqYwUgKt9XIX1+2jBpfYcvjQIJtsfhIwC3ELImns+zvDXOgL0w6p1HttU1Y6gvgUH+E7+/sYCiSH4E5v7mYP99Ujd1c2K9rVtPoDSYwGfVsayxiRYVbOiMhxFmv3G3l81eu4Ct/PEx/KMmXf3+Q297ZQl2RY1rvW+GxMRxN8dzRYRLpLOdUS9ImcXYYDCd5oS1AXyhJbdHEiV8BeoMJvvrHw4zGMxQ5zNx+2TLK3IU/+Iql8gnSJNgWi4kE3ELMsJymaB+O8UZ3iMFIkmKnhYoCMtkmMzke2N3Nk4eHgKmNakeT+Y6o2mtjY71f1hUKIcQJ/A4zf3vFcr722BE6A3H+9Q+H+OSFzayqdE/rfYudFkKJDLs6Rolncmys802rDJkQC137cIwX2wPEUlkaiiYu+wVwZDDCNx4/Sjydo8Jj5fbLluGbxOy7aDJfZ3tttVcSpIlFRQJuIWbQYCTJG90h2odjWIz6gjuhvT0hfvhCJyOxNJBfq/3eDdUFTc0C0JSiP5QkpynW13g5VxKjCSHEKbmsJj572XLuffIoB/sj3PP4Ef5yRz1bG4qm9b4emwmTQccb3SHi6RxbG/zTSs4mxEKU0xT7e0P5etnHcxkU4tWuIP/+dCuZnKKx2MGtlzRP6vcjkswwFE2zvtbHhlqfzCIRi4oE3ELMgFgqy8H+CPv7QiQzOSrdNiwFBLyRZIafv9zFC20jQD4D+Ye217GivPDRlmQmR08wQYnLwoZaH3VFE5fhEEKIs5nNbOAz72zhvufaealjlO88004okeHyVeXTel+72Uit307rUJRkOsfWxiJKXBMnkBJiMUikc+zuHGF/Xxi/3Vxwbpinjwzxoxc6UQrOrfLw8QsaC7pHGhNOZAjEUmyq87O2RpZsiMVHAm4hpiGT0+gYjvF6d4jhaCo/fdxtm/DfKaXY1T7CT1/qIprKotPBO1eU8p51VQV3QkophqIp4ukcKytcrK/1yWiKEEIUyGTQ89HzG/HYuvjjgUH+38vdjMYy/PmmavTTeGhpMuip9zvoDsZ54uAgWxr81BdPb524EPMtEE3xYvsIXSNxqry2gmbRKaX49Wu9/Ob1PgB2NBXxwW11GPWFTwUPxtOEEhk21ftZW+0taNagEAuNBNxCTIFSit5Qkr09IToDcRxmAw3FjoJu0oYiKX6yq5O9PWEAqrw2PrS9jsZiZ8HHT2Xzo9oem5kLl/lpKnFKJySEEJOk1+m4flMNXpuZB/Z08+iBAQKxFH/1joZprcE26HXU+uz0h5M8dXiISDLDqkqPjMyJRUcpRUcgzssdIwQTaeqK7AUFzNmcxg92drKzLQDAu86p4Lp1lZOagReIpoilc2xp8LO60iP3OWLRkoBbiEkajaXZ3xvm6FCUnKZR47MVlCUzq2k8un+A37zWRzqnYdTrePe5FVy5unxSiT8C0RThZIamEicban34HFLuSwghpkqn03HlmnJ8DhP3P9fBnmNBRv9wmE9d3IyngISXZ3rfCo+NYDzNzrYRwoksG+t9kl9DLBrprMbenhCvdQUxGnTU+ycuawr5ZXbffLKVQwMR9Dq48bw6LmgpmdSxhyIpUrkc25qKWFHukqVyYlGTgFuIAiXSOQ71hznQFyGczFDmtuK0FPYr1DYU5YcvdNI9mgBgeZmLD55XN6ks4pmcRvdoHKfFxPbmYpaXuSRDpxBCzJCtDUX47GbufeIo7cMx7v7dAT59SQuV3omXCZ2J127GYjSwtzdEJJVhc72fIqes6xYLWyie4eXOEY4ORilxWnAX+PBpKJLinseP0B9KYjXp+cQFTZOqtgLQH0qiULyjuZjmUtdUmi/EgiIBtxATGFunvbcnzGA4ic9hprG48Ke8v3ylh6cPD6EAh9nA+zbVsL2paFJPa0diaYLxNA0lDtbX+iiWmzUhhJhxy8pc3HH1Su557AhDkRR3/+4gH7+gcdIBw1vZzAbq/Ha6RxKEE4NsbvBTLwkuxQJ1LBDn5c4RhqMpanx2zMbCHu4fHojwzSdbiaay+OwmPn1JCzV+e8HHVUrRE0xgNurZ1lRCg+Q+EEuEBNxCnIamKbpHE+ztDdE9GsduNubXaRewhkgpxQvtI/y/l7uIJLMAbGss4n2bqieV2CyT0+gJ5o+9ramIFRXugqavCyGEmJpyt5UvXLWCe59o5ehQlHseP8L1m2p454rSaQXIRoOeuiI7A+EUTx4cZF2NlzXVHvlMFwvG2BTy13uC6NBRX1RYbhqAZ44M8eMXj5HTFHVFdj51cfOkamxrStE1Gsdtzc/iq5rmzBIhFhIJuIU4hYFwkgN9YdqGYuiAGp+94Jui3mCC/9x1jIP9EQDKPVZu3Fo7qVJf8Oaodl2xg/W1XkpdhU8/F0IIMXUuq4n/efkyfvRCJ8+3BvjZS130BhP8j621k8qw/FY6nY5yj5VwIsOujhFG4mk21fnx2KXChJhfI7E0L3eM0D4cm9QUck1TPLCnmz/sHwBgU52Pm3bUTyrpYE5TdI3EKXZZ2N5cJPc7YsmRgFuIE4zE0hzsD3N0IEo6l6PcXVjpC8jXw/7Na7388cAgOaUwGXS8+9xKrlhVNqm11pmcRncwjkNGtYUQYt6YDHpu2l5PldfGA7u7efrIMP3hJJ+4oKngYOR03DYTVpOBo0NRgvEMG+p8MsVczAtNU7QORdl9bJRoIkutv/ABhmgqy3eeaWNfb77qyjXnVnDN2spJldXL5DSOHS81tqO5WBLBiiVJAm4hgHAyw5H+CIcGIkRTWUqdVpzWwqYzKaV4qWOU/9rdxWg8A8C6Gi/Xb6qhxDW5tdaBaIpQMkNDsYO1NTKqLYQQhdLpdOjQkczkZiwTuE6n44rV5VR4rPzHM20cHojyj7/dzy0XNU+7trbZqKehyMFAOMmTBwc5p9rDOdWeaZUjE2IyIskMrxwb5fBAFLvZQN0kHvp0j8a594lWhqIpzAY9H95ez5YG/6SOn8zkS5w2ljg4r7FoUkvuhFhMJOAWZ7VYKkvrUJT9fWFC8QxFDvOk6mF3jcb56a5jHB6IAlDitHDDlhrOrfZOqh2pTI7eUBKnxciO5mKWlblkVFsIISah2GlmRYWLA31hih2FT4ktxLnVXv7u6pXc+0Qr/eEk/+eRg3zwvDp2NBdP6331x0uHRZIZdneOMhxNsaHOJw9bxaxSStEZiLPn2ChDkRSVHhs2c+EPel7uHOH+5zpIZTWKnWY+eVEztZNIjgb5+6/+cJIVFS62NhRJuTyxpEnALc5KyUyOtqEY+3vDBGIpvDZTwZnHId9RPPRqL08cHkQpMBl0XL2mgivXlE8qUFZKMRRNEUvnaCpxsrbGI+VihBBiCixGA9sai3CajbzSFSSV1SY9y+hMKjw2vnD1Cu57toNXu4Pc/3wHHYEY79tUM+0HpC6rCZvJQE8wwUgszdoar5R+FLMimsryRneQA31hjHp9Phlsgfc+OU3xy1e6+f2+/HrtFeUuPn5B46RHpkOJDIFYinU1XjbU+WSAQSx5EnCLs0oyk6N9OMaBvjBDkRRuq2nSnc3Th4d46LVeoql89vGNdT7et7F60oFyIp2jN5TA7zBz4TI/TSVODAVkQBdCCHFqRoOedbVeXDYju9pH6B6NU+m1TWpN6ZnYzUY+eXETD7/ex69f6+WJQ0O0D8e4+cKmaT8sNRr01PkdBKIpnjs6zEAoxYY6L95JZHoW4nQ0TdE5EufVY0EGI0nK3FaclsLDgGA8Pb6sAuCyVWW8d0P1pO9bBiNJUhmNrQ1FnFPlKajyixCLnQTc4qyQzOToDMTZ3xtmMJKfut1QVFiJrzEH+sL87KUueoIJACq9Vm7YXMvKisllH9c0RX84SSanWFnhYm2ND88MTn0UQoizmU6no7nUhd1s5MW2EToCsUlVmpiIXqfjT9ZWUl9k57vPttMRiHPXw/v5yDsaJr2c6FSKnBacViNHhyIMRfOjgM2l8kBWTF04meGNrhCHBiIY9bpJDTQAHOqP8O9PtxJOZrGa8uu1N9VNbr22UoruYAKLUc/5y0poKil8VqEQi50E3GJJOzHQHookcViM1Bc5JnXj0h9O8sDubl7tCgLgMBu4dl0VFy4rmfQNUCSZYTCSosxtZW2Nlzq/XZ7uCiHELKj02rhkRSm7OgK0Dcao8Fqxm2futufcai93vnsV33qqlY5AnK8/fpSr15TzJ+sqp1U6DPLT4xuKHAxH0zx9ZIie0QTrar34JYOzmIRsTqNtOMZrXUFGY2nKPZP7HdA0xe/29fPQqz1oCqq8Nm6+qIly9+RyDOQ0xbGRGH6HhfOaiqTGtjjrSMAtlqRkJkdHIMaB3sh4oF1bZJ/UTVA0leXh13t54uAQOaXQ6+Ci5aX8ydrKSU3DgnzZi75QAqNez4Y6H6sr3TN64yeEEOLtPHYT57eU4LQY2dsTwmMzz2jQWuS08LdXruD/vdzFE4eG+O+9/RwaiPCx8xunPcVcp9NR4rLgzuRHuwcjSc6t9tJS5pQ1r2JCg5Ekr3cFaRuO47QYqJ/kqHYwnuZ7z7ZzoD8CwLbGIm7cWotlksnNUtkc3aMJanx2zmsqkodG4qwkd/xiSYmns7QPxTjYH2E4msJpMVI3yRHtTE7jiUODPPx6H/F0DoBzqzy8d2M1lZN8KquUYiSWJpTMUOu3s7bGS4VHnuwKIcRcsZoMbG0owm0zsadzdMbXdZsMej6wtY7lZS5+sLOT1qEYdz28nw9tq2djnW/a728x5Ue7A7E0zx4d4thITPoScVrxdJaDfRH294VIZnJUe+2YjZN7QLO3J8T3nmsnksxiNur5wNZadjRNPiN/NJllIJJkebmLzfV+HJMcrBBiqZCffLEkhJMZOoZjHOqPMBJL47aaJj11XFOKlzpG+NUrPQxH0wBU+2y8b2MNqyont04b8knR+sIJ3DYTO5qLaSl1TbrTE0IIMX16vY7VlR68djO72kZoH86v657Jz+RN9X7qihx855k22oZjfOupVi5cVsL7NlZPelTwrXQ6HcVOCx6biZ5ggsFwipWVblZVuCWIEUB++nj7cIw3ekIMRVIUOy2Uuyf3UCaT0/jlnh4ePZDPQl7ts/HxCxqn9HAnEE0RTWXZUOdjXY1XZmWIs5p8SotFbSSWpm0oytHBKKFEBo9tclnHxxzsD/PA7m46AnEAPDYT162rZEdT8aTXWGc1jYFQipxSrCh3cW61ZJkVQoiFoMpr45KVpbzUMULrYJRSl2XSJY3OpMRl4W+uXM6Dr/TyyL5+njo8xMG+MH91fgONxc5pv7/peCbzsbrdxwJxzq32UF/skIDmLKWUojeUZG9PiGMjcezHZ0RM9t6lazTOd59pH08Me/HyEv58Y82kH0ppStEXTKI3wI6WYpaVuiRXjTjrScAtFh2lFIORFK1DUdqGosRSOfwO86TqaI85NhLnl3u62dsbBsBi1HPVmnIuW1k2pRGJ0XiakViaCk8+KVqNT5KiCSHEQuKxmbigpQSvzcQbPSFi6RxlLsuMZUw26vW8d2M1qyvd3PdcOwORFP/ndwe55txKrj6nYkayjbusJhwWI0ORFE8cGqJuOMaaKg+VHqtkfj6LDEdT7O8N0ToUQ1OKKo9tSgHyHw8M8Ms9PWQ1hctq5Kbt9VPKuJ/JaXSNxil2WtjS4KfaZ5/0ewixFEnALRaNbE6jN5jkyGCErtE4mayiyGGe9JQpgKFIigdf7eHF9hEADDodFywr5t3nVk6pRFcyk6+p7bQY2drgZ0WFG+s0pxAKIYSYHWajno11PnwOM7s7RukMxKny2WZ0lHhlhZv/dc1qfvxiJy91jPLQa7283hPipu31k84Hcip6nY4yt5VMTqNnNE5fKEFLiYsVFa5pJ2wTC1s4meFwf4RDAxFiqSzl7qll4B+MJLn/uQ6ODOZra6+t9vChbfW4p3AfFE9n6QsmqS9xsLXBLzP7hDiBBNxiwUukc3SNxjncH2EgnMxnbnVasJmnNgL98Ot9PHtkmJxSAGyp93PtukrKJlnmAo5PHw+nyOYUy8pcnFPlkRsdIYRYBHQ6HU0lTrw2Ey93jtIxHKPMZcVpnblbI4fFyMfOb2Rt9Qg/efEY7cMx/uHh/Vy7rpIrVpXPyAwok0FPrd9BNJVlX1+IjpEYy8tcLC93zeh0eTH/oqksRwYiHOqPEEpkKHZaKHNN/t5FU4onDw3xwJ5u0lkNi1HP+zbVcEFL8ZRmSASiKSKpLOfWeFhf65MBByHeQgJuMW3xdJZVX/o9APv/4YoZK3c1GkvTEYjROhhjJJbCajJQ6Z3aCEQkmeGRvf08fmiQTC4faK+ucPOnG6qoK3JM+v2UUozGM4zG89PHz632Uis1tYUQYtEpclq4cFkJPruZvT0hoqksZe6Zm2Ku0+k4r7GI5eUufrizkzd6QvxiTw+vHAvy4Rka7QZwWow4LU5Cifz67tahGKsqXDSWOCWx2gKU09T433e1j3B+S8lplxvEUlnahqIc6IswGk/js09tGR3kR7V/uLOTg8fLfS0vc/Hh7fWUuCY/WKBpip5QApNBx/amYlaUy3ptIU5FPoHFgpLNafSHk7QNRTk2EieWyuG15TOOT+VDPJrK8of9/Tx2YJBUVgOgpdTJe9ZXsazMNaU2xlJZ+sNJ3FYT25uKaClzydNcIYRYxKwmA5vrfRQ7zezpDNIeiE2pnNKZ+OxmPn1JM8+1Bvj5S120HR/tvvqcCq5aUz5j09k9NhNuq5GRWJrnjwY42B9h5fHAe6YeiIvpeWRvH3f+et/49x++/yUqPFbuvGYVV66pGN8eSWZoH45xsC/CaCyN1z61xLCQD/D/sL+fX7/WSyanMBv1vHdDNRctL5nS+6UyObqDCco9VjbX+2fswZEQS5F88ooFIZrK0jOa4MhAhMFICoXCb5/a+mzIj7o/un+APx4YJJHJ19Ku9dt5z/oq1lS6p/RUOHP8YQDA6ko3a6o8skZJCCGWCJ1OR2OJE7/DzMudo7QNRvE7zDP6Oa/T6XhHczGrKtz8+MVOXu8O8evXenmpY4S/2FZHS+nUHgSf6jhFTgs+h5lANM1zRwMc7IuyosJJfbETp4x4z5tH9vZx84/3oN6yvT+U5OYf7+FbN27gvMYi2odiHBrITx332kw0lEwt0AboCMT4wfMddI3mM5CvLHfxwW11lE5hOjpAMJ5mJJ5mebmLjXU+WbogxATkE1fMG03LZxvvDMRoH44RSmawmwyUu61THlWIpbL88cDJgXa1z8a1aytZV+OdUqCtKcVQJEU8naXGb2dNlYcqr00ywQohxBLktZu5cFkJxQ4zb/SEiIzGqfTYZiS7+Bi/w8ytFzfzcucoP911jL5Qki8/cogLWor50/XVM7aOXK/TUeKyUOQ8HngfCbCvN8KyUicNJQ55aDzHcprirt/sf1uwDYxv+7tf7eW2y1qIp3LTmjoO+cGHB1/t5YlDgygFdrOB6zfVsL2paMr3Q33BJDpdPv/N6iqPlKMTogAScIs5F0lm6AslOToYZSCUJKsUPpspXzdyip1K9Hig/dgJgXalx8qfrK1kQ51vyu8bjKcJxNIUOy1sbvDTILVOhRBiyTMZ9Kyr9VHqtrKnc5SOQIwyt3VGR4Z1Oh2b6/2sqnDzX7u7efboME8fGWZ35yh/tqGad7QUT7nveqsTA+9gPMOujhEO9IdpLHHSUOygxGmRtbdzYFf7CH2h5Bn3CcTS9I0mWV87tUECyOeZeaF9hP96uYtwMgvkA+T3b66ZUgZyOD6FPJSg1GllU72PGr+U/BKiUBJwizmRyWkMhJMcG4lzLBAnlMxgMxoocVmmtf45lMjw6P4Bnjj05hrtKq+Na86tmFagHUtlGYgkcVqMbKn3s7zCJWvfhBDiLFPpteGzm3m9O8j+vjCRZIYyt3XGAmHIZzL/8PZ6tjcV8ZMXj9ETTPDDFzp55ugwN2ypobHYOWPH0ut0+B1mfHYT4WSW17uDHOwPU+W10Vzqoso7+TrOonCDkTMH22MymjblYLtrJM5PXzrG4YF8qa9yt5X/saWWVZXuKb0fwEgsTTCRZnmZTCEXYiokghCzRimVf1IbTNA6FGMklianNPx2y7RGsyH/4f/Ivn6eOTI0nnW8xmfj3edWsr7WO+X3TmVzDIST6PU6Vla4WVXhljJfQghxFrOZDWxp8FPqtvLKsVHah2NUeKZW9/hMlpW5+NK7V/HEoUEefLWH9uEY//zfB9nWWMSfbqjCN8NryT02Ex6biUQ6R/dIgvbhGMVOC82lTqq8NvwOsyydmmE+e2GBqmcKo9DhRIYHX+3hmSPDKMBs0PPucyu4bFXZlGfmZTWN3mACs1HP9qYiVpS7McosPyEmTQJuMePCyQz9oSQdgRj9wSTJbA6nxUiFxzrt6di9wQSP7OvnxbaR8TrajcUO3nVuBedWeaZ8c5DVNAbDKdI5jboiO6sqPVR6rHKzIYQQpxGJRPjiF7/Ir371KwYHB1m/fj333HMPmzdvnu+mzTidTkdDsYNip5nXuoIc6o9iMWYpdVtmdLTboNdx6coyNtX5+MWeHna2BdjZFmD3sVGuWl3O5avLsBhntiqGzWygxm8nm9MYjWd4oS2AzWSgymunrtg+Kw8XziY5TTEcTdE7mmAgnMJlNRI5Ps37VHx2E8smkTwvk9N4/OAgD7/eN76kblOdjz/fWD2tAYNoMj/Tr8ZnZ0Odj3LP1BKsCSEk4BYz7JnDQwRiaSKpLFaDAZ/DhN08/VIRrUNRHtnbzytdwfFty8tcvPvcClaUu6YcGGsq3xFGk1nKPVZWV3mo89vlCa4QQkzgIx/5CHv37uVHP/oRlZWV/PjHP+bSSy9l//79VFVVzXfzZoXLamJ7UzEVXhuvHgvO2mi3127mr97RwCUrSvnZS8doHYrx0Gu9PHl4iGvXVrKjuXhGk7gBGA16SlwWSlwWYqksnYEYR4ciuG0mav12anz2aS8DO1toWn6GX38oP3MgEEuTySncViP/Y0sN//50+2n/7fs31xa0nl7TFC+0B3jw1V5GYmkgX43l/Ztrplz2FPL3Rf2hJFlNY12Nl7U1Xvl/LsQ06ZRSp0qWuCiEw2E8Hg+hUAi3e+prU8TUJNL56ddHBiN89Ie7Afj8lSsodVlwWY3THh3WlOK1riC/3zfA0aH8WiQdsK7Wy1Wry2ksmfq6NqUUo/EMo/E0RQ4Lq6vcNBQ7pFMRQsypxdqPJRIJXC4XDz30EO9617vGt2/cuJGrrrqKf/qnf5rwPRbruY8JJzO83hXk8EAUo15Huds6K4nHlFK81DHKL1/pZjiaD6zK3Vbes76KDdNIrFUITVOEkxlCyQwocNtM1Pjzo96lLis2s/SZYzI5jUA0zUA4QWcgzmg8Qyqbw2E24rWZsJxwf7H7eHb6YCIzvs1nN/H+zbVsrPOd8ThKKd7oCfHLV3roPl7my2c3ce26KrY3FU1rxkU8naUvlKTEZWF9rY/6IrvM9BPiDArtx2SEW0xKLJVlMJKiezROTzBBJJklm9PGX6/x2U7qVKYilc2xszXAowcGGAinADDqdWxt8HPF6nIqvdMbMQ8nMgxFU7itJrY0+FlW5sIhNUmFEKJg2WyWXC6H1XryNFObzcazzz47T62aW+7jo91VPjuvdQVpD8SOP3Ce2YRSOp2OLQ1+1td6eerwEA+/3kd/OMm3nmqlrsjOn6ytnNaSqjPR63V47fla5FlNI5zIsq83xOvdQdw2ExUeK5UeG0VOC16b6azKdK6UIpzMMhJLMxhO0j2aIJhIk9PAYTZQ5DCf9iH+xjofq8pd3PrzVwH4zCXNrK70nPH6KaU40Bfhodd6aB2KAWAzGbj6nHIuWVE6raUGSuXLtCYzOVZXullb45XEaELMIIkyxBkppQgnsgxF851JfyhJJJlBr9fhsZqo9dlPCrinIxhP8/ihQZ46NEQsnV+HZDMZuGh5Ce9cUTrteqFjmcdtZgPra7wsL3fjKTCBiRBCiDe5XC62bdvGP/7jP7Jy5UrKysr46U9/ys6dO2lubj7lv0mlUqRSqfHvw+HwXDV31uj1+bXdpS4Le3tCHOyPMBrPUOmxzvjSJJNBz6Ury9jRVMzv9/fz6P4BOgNxvvH4UeqL7Fy7roo1le5ZG5E06vX4HWb8DjM5TRFJZmgdjHGwP4LdZMBjM1Htsx/Pgm7GZTUuqQBcKUUklSUYyzASS9EbSjIaTxNLZdHrdLgsRio9toJz1Zx4bZaVuU57rZRSHBqI8NCrvRwZzM/2Mxl0XLy8lKvPqZh2qbpEOkdvOEGR3cLWxiIaix1L6v+bEAuBBNzibbI5jZFYmuFomq6RGEPRFLFUDpNBj8dmou4tGcazuekdr304xmMHB3ipY5Scll/hUOw0884VZZzfUjztad6JdI6BSAKTwcCqCjcrKtwUS+ZxIYSYlh/96Ef85V/+JVVVVRgMBjZs2MANN9zA7t27T7n/3XffzV133TXHrZwbDouRLQ1+qv350e7OkThem2lWMn3bzAauW1fFO1eU8vt9Azx+aJCOQJx7HjtCXZGdq9dUTKtaRyEMJ4x8Q76fDScz7O4cQR1vo8dqotxjw+8w4baacNtMi2rZVjKTP6dwIstoPM1AKEkomSGWyic8s5uMOK3GfA3zWbjWSile6w7xu7194yPaRr2OC5eVcNWa8mkPQmhKMRBOks4qVpa7WFvjm1J2dCHExCTgFgBEkpn8tKhIimMjccKJDOmshs1kwG0zUeaa2Yzd2ZzG7mOjPHZgkLbh2Pj2llInl64sY32Nd9pPWFOZHAORJDp0NJe6WFHupsxtkfVIQggxA5qamnjqqaeIxWKEw2EqKiq4/vrraWxsPOX+d9xxB7fffvv49+FwmJqamrlq7qzT6XRUeW2UOC0cHgiztydMeyBGhds2K2udXVYT791YzeWrynhkXz9PHhqiMxDnW0+1Uu62cuWacs5r8M9JElCb2TB+jppSJNI5IsksQ5EgWU1hNuixWQy4LSaKnWbcdhNOixGH2YjNbMBi1M9L36yUIpXViKdzxNNZoqks4XiG4WiacCpDIpUjo2nodTpsJgMO8+wF2GOymsbujlH+e28/PcH8Gm2jXsf5LcVctaYCv2P65eGiqSyDkSTFTgs7mr3UF8mothCzSQLus1Qyk2M0niYQTdMzGicQSxNN5dDpFC6LiVKXZcZLj0C+fvbTR4Z45sgwoePJQox6HZvr/bxzRSn1xY5pHyOVzTEYSaFUPmPnykoPFbOUzEYIIc52DocDh8PB6Ogov//97/mXf/mXU+5nsViwWJb+7CKzUc+aKi9VXjtv9AQ5OhhDr4NyjxWjfuaDX7fNxPs21XDVmnIeOzDI44cG6Q8n+f7zHfzqlR4uXl7ChctK5mxNrl6nw2ExnpQbJZPLB7Uj8TS9oQSaUuh1OswGPWaTHqvRgO94EG4zGzEb9ViMesxGPUa9DpNRj0mvR68Hg06HXqc7ZZ+uaYqcUuQ0haYUWU2RyWpkcopMTiOV1UhmciQyOSLHR6+TmRyprEY6p4ECnS6/nM1qMuDxmKZdzrRQsVSWp48M8fjBQUbj+fsji1HPxctLuWxV2YyMPmc1jb5gEnSwpsrDudXeaU9JF0JMTH7LzhLJTI7g8azc/aEkg5EU0VSGXE5hNRlwWY0UT/Gpraa9mej+8EDkbYk/NKU42BfhycODvNoVZGx3j83ERctKuGBZyYx0JOmsxkA4iaYU1X47qyrcVHltEmgLIcQs+P3vf49SiuXLl3P06FE+97nPsWLFCm666ab5btqC4HOYeUdzCfVFTl7vDtIZmL1p5pAf8b5ufRVXrC7n6SNDPLp/gGAiw4Ov9vLbN/o4r6GIS1aUUuO3z/ixJ5JfkqY/qa/XlCKdzQfBiXSOUDxDOqeRv0XI/9eg12HU6zHo82vIdTodeh3ku3UdY88vlMp/gSKn8u+tNMgqjZymxr906ACFTqfDZNBjNuQDe5fFiMmon9WR6zP5+ctdvNg+Qiqbz4njshp554pSLl5eOmNJXUdiaUbjaaq9Ns6t8VLts8mMPyHmiATcS5BSilg6RyiRIXg8wB6OpomlMuNTu5wWI1Ue27Snmo2Vthhzz+NHx0tbtJQ6ea51mKePDDMUeTNRzvIyFxcvL2FdrXdGnvansxoDkSSapqjy2VhZ4abaZ5/xGqVCCCHeFAqFuOOOO+ju7sbv9/Nnf/Zn/O///b8xmWQd6Bi9XkdtkZ0yj4WjA1H29oZpG56dbOZjbGYDV6wu550rS9ndMcqjBwboCMR55ugwzxwdprHYwYXLS9hc58dsnJvR21PR63RYj48kn4pSb45Wj31p6vh2DZTS4C05ZMYCcoNej94ABr3heMCuW1D3BJmcxssdI+PfP31kGIAqr43LV5WxpcE/YyPriXSOvnACp8XItqYilpW5FtVaeiGWAqnDvQSksjnCiSzhZIZgLE1/OEkokSGRzpHTFBajAYfFgMNinNGpUbs7R/nWU62nfV2vY3w022YycF6jn4uWl1I1zbJeY94aaK8od1Ptm/5DBCGEmCtncz92Np57KJHhYF+YwwMRktkcFW7brAc/SimODkZ57OAgr3QFx5OT2s0Gtjb42dFUTJ3UW54TXSNxnmsd5oW2EaLHk68BrK32cOnKMlaUu2bs/0NW0xgIpcgpRWOJg3OqPBRJwlghZpTU4V6ixrJmRpPZ4/Wk04zG0sQzWdJZhU6nsJuM2M0GihyWWXuiq2mKn7107Mz7KKgvsnPRslI21/umXZ97TCqTX6OtqTdHtKu8EmgLIYRY2Dw2E1sbi2godrCvN0z7cAwd+fXds7VWWKfT0VLmoqXMRSiR4bmjwzx1eIhALM0Th4Z44tAQlR4r25uK2dLgn5GkXOJNwXialzpGeb51mK7RxPh2j800nsvmY+c3ztg9klKKkViaYCJDldfGOdUeanx2WV4nxDySgHuBSmZyxNM5Yql81sxQIkMgmiKSzJJI58hoCh350Wu72UCJc3aSnJ3O4cHIeFKPM3nvxmpWlM/MyEXyeKANHB/RdkmgLYQQYtEpdVspdlpoKnGyvy/EsZE4VqOBUrdlVhKrjfHYTFx9TgVXri7nQH+Y51sD7Dk2Sm8oyQN7unlgTzfNJU62NPjZWCdloqYqksyw51iQlzpGONQfYWwqqVGvY22Nlx1NRTSXOPn0z1+d0ePmB2JSeO1mdjQX0Vwq08eFWAgk4J4nY6UoEukc8UyORDr/FUqkGY1niKWzpDIa6WwORT4rp3Uesma+laYUhwci/Oa1voL2H3t6Ox3xdJahaAod+azjy8vdVHptC2o9lhBCCDEZY+u7K71WOkfi7OsJcSwQx2HJJzGdzT5Or9exutLD6koP8XSWlztG2dkW4OhglKND+a+f7jpGU4mTdTVe1td6KXNbZ609S8FQJMWrXUFe7QpyZDDCCflkaSpxsLWhiC31fpzW/K13KpM7zTtNXiKdYyCcxGLWs77Gy4pKN+45ykovhJiYBNwzTClFJqdI5zTS2Te/Utl82YnY8dHqaCr75us5De34UnqTXo/FpMdiNOBy5EtjLIR1VT3BBC+2BXihfYSRWLrgfzedp+PRZJbhaAqTUU9TiZOWMpeU9xJCCLGkGA35Pq7aZ6NjOM7+3jAdgRhOy/Gaz7Pc59nNRi44XjFkNJ7m5Y5RXuoYoW04Nh58P7CnmwqPlTWVHlZXullW5prXhGsLQSancXQwyt6eEHt7w+M1s8fU+u1srvexpd4/a2unU5kcA5EkOnQ0lzlZVemm1CUPRoRYaCTgPoGmKYZjKTQNFCpfZuL4dk3ls2OOZcrMavlSE5msRuJ4DcexWo6ZnCKn5f8c2y9fiCI/Um025ktRjGULN89jKYozCURT7OoY4cX2EbpPWHdkMxnYWOvlte4QkROSfryVz25iWalrUsdUShFOZgnEUthMBpZXuGgpdVHmtiyIBw9CCCHEbLAYDSwvd1FXZKd9OMaBvjDtxwPv2R7xHuOzm7lsVRmXrSpjJJbm1a4gr3SNcrg/Sl8oSV8oyaMHBjDqdbSUOVle5mJ5mYv6Yse8zbybK1lNozMQ5/BAhEMDEQ4PREkfL+MF+USxLaUu1td6WVfjpXgWE5Rlchr94SSaBrVFdlZVemRAQogFTALuEwzHUjx+cJBYKgvHg+180J0PmOHEDzJ1fItuvNxEvl6kDqNBj8VoxHT874tp6vNILM3uzlFe7hyhdSg2vt2g13FOpYfzGv2srfFiMugnzFL+/s21BX/4a0oxejzJh8tqZG21l8YSJyUuyagphBDi7GE1GVhZ4aa+yEFHIB94dwZi2M1Gil3mWV3jfSK/w8wlK0q5ZEUp8XSW/b1h9vaG2dcbYjSe4UBfhAN9EQBMBh0NxQ4ai500FDtoKHbgs5sW9YPyUCJD21CU9uEYbcMx2odj43Wyx3hsJlZXullT6WFVhXt8uvhsSWc1BiNJspqi0mtjdaWUQRViMZCA+wRKQSyVpdLz5vpgHSzqDqMQgWiKPceC7O4c5ehQdHy7Dlhe7sonT6n14bCc/OOysc7HzRc28dNdxwiesFZ7rA73xjrfhMfOahqBaJpoKovXbmZLg5/GYiceu6w9EkIIcfaymfOBd0Oxg2MjcQ70hTk2ksBi0FPsMs9polS72cimej+b6v0opegLJTnQF+bwYJTDAxEiySyHB6IcHnjzHsJjM1HttVHts1Hts1PltVHqtiy4JF6pbD4ha28wQddIgu5gnO6RxEn3NWMcZgPLylwsK3OxotxFtc82J/eIbw20V1a4qZEyqEIsGhJwn4Jep1uQU7xnUl8owSvHguw5NkpHID6+XQc0lzrZXO9nQ60Xr/3M5UE21vlYVe7i1uOZNj9zSTOrKz0TjmynsjmGo2lS2RylLisb6nzU+u1vC+qFEEKIs5nVlA/y6orsdI8mONQfoT+UBBTFTgt289z2mzqdjkqvjUqvjXeuLEMpxUA4xZHBCB2BOG1DUXqCCUKJDKFEhn194ZP+vddmotRtodRlxe8w47eb8TlM+OxmXFYjDrNxxqZGa0oRS2WJJPP5c0Zi6fGvoWiKgXDytBVXdECl1zY+Yt9U4qDSa5vT+8Ox6ixKQYXXKoG2EIuURDdnCU1TtAdivHIsn0GzP5wcf00HtJQ52VDrY2OdD98EQfZbndgxLitznbGjjKby67N16KjwWmkpdVHjt83pk3ohhBBisbEYDTSVOKkvctAbTHBkIErXaJyBcBKf3YzbZpqXwQKdTke5x0q5x8r5LfltqWyO7tEEPaMJukfzo8a9wSTRVJZgIkMwkTlpNPyk9wMcFiMOiwGL0YDVpMdqNIznuzHodeh1+eOO5dXJKUUmp5HKaCSzufHSqtFUFqVOeZiTOMwGyj1Wanz28RH5ap9t3kbjo8ksw7EkBr2e2iI7y0pdVPmkOosQi5UE3EtYIp1jX1+I17tDvNETIpJ8M8GZQa9jRbmLDbU+1tV4Z7XWpqYUwXiG0Xgauzl/w9Bc6qTCI52HEEIIMRkGvY4afz4gHIqm6AzEaR3MrzV2WIwUOczznsBs7OFAU4nzpO2xVJaBSJKBcIrhSCo/2hxPj+dwiafzpVCjqSzRMyRlnSy72YDbasqPqDvMFDnM+J1myt1WylzWWV97XYiT7pUs+VkNLWUuylySDE2IxW7+P2HEjFFK0R1M5EtU9IQ5Ohgld8KjXZvJwDlVHtbVeDmnyoPNPLtPbjM5jUAsTSyVxWM3sbHOR32xgyKHecmvixdCCCFmk06no9RlpdRlZUW5i66RBEcHI/QGk6BT+Gz5KdoLqb91WIw0Wpw0FjtP+XpW04ilckSSGWKp3HhJ1WQmRzqroSmOV43JV5LJj3a/mbTWajo+Im4yYDMZcFmNOK3GOUs0N1X94fz6bJ/dzJZ6P7VF9lkrJSaEmHsScC9y4USGA31h9vWFOdAXfttapHK3lXOrPZxb7aG51DknnU4slSUQS6MpRYnLwsY6HzV+O05Zny2EEELMOJfVxKpKE8vKnPSFknQEYnSNxBkaTmE3G/DbzVgWWLKyUzHq9Xhs+lmddbcQaEoRSp6QbNZhYnWllxq/bc7X5AshZp/8Vi8yiXSOI4MRDvRHONgXpuuE+tgAZoOe5eUuzqnysLrSTZnbOqftaxuO4bGZqC9y0FSaTzAy31PbhBBCiLOB0aCnxm+nxm8nFM/QG0rQNhRlMJwiq2m4rSY8NpMk3ZoniXSOkXiaZDaH1fDmA5DLVpXjsi7thwxCnM0k4F7g4uksRwejx8ttROgIxNDekgCkxmdjVaWbVRVulpW55jTATWVy9IXeTMC2vtbL8nI3xU6ZNi6EEELMF4/dhMduYlmZi+Foiu7RBB3DMbqDCRQKj9WMx2Yim9O45aevAHDvDesXxUj4YpLOagQTaSKpLFajgVK3haYSJx6bkTt/sw9A8tkIscRJwL3AjMbTHB2McmQwytHBfAbSt2bYLHFZWFnuYnm5i5XlbtxzPPVKU4pwIkMwnkGvhyLXm1nNN9T5ZDqUEEIIsUAY9DrK3FbK3FbWVLkZDOdrTncG4nSNxkllc/PdxCUnk9MIxjNEUxkMeh1+h4XVlW4qvDaKHRb0eh3x9MwlhRNCLGwSGR0XT2fZ+s+PAfD196+bk6Axk9M4NhKnbShG23CUtqEYgVj6bfuVuizHs1U6WVHmmrdEGumsRiCWIp7O4bGZWF3lpq7IgWsBZPcUQgghxJlZjIbxKedra7wMhlN0DL9Znqs9EMuXGLOaZj2x6lKTzOQIJTLE0jmMevDYzWwq91PutVLitMg0fiHOYhIpzZFsTqM3mKRjJEZnIE5HIEb3aILcW+aH63RQ47PTfLx0VkuZc9J1sWfSiaPZOj2UuaxsbnBS5bWNrzeSp7RCCCHE4mI1GagtslN8wiy1jXU+hiIpRuNpekM5TAZ9PtO3xSj5WN4iq2lEk1kiySxpTcNqNOB3mDmn2kOpy0qRc/7LswkhFgYJuGdBNJWlZzRB92icYyP5r95Q8m3BNYDLaqSp2ElDiYPGYgcNxQ6sC2D9VDKTYySWJpE5eTS7zG2VtUZCCCHEErS2xovVaCCYyDAcTdEfStIfTtIXSpDVFGaDHofFiMNsxGw8u4LJnKaIHa8PnsxqGHTgsBppKMkniPU7zPjtZqmZLYR4mwURcN97773867/+K/39/axdu5ZvfOMbbNmyZU7bcGIwfGQgwjlV3gk/NOPpLH2hJH3BJL2hBL3BBD3BxNtKc42xmw3U+e3UFTmoL7ZTX7SwalLnNEUwniaUzGA26ilzW2kqcVLptUlJLyGEEOIsoNfr8sGjw8yyMhepbI7RWIaRWJrBcJLBaIqBcJKMptDr8vc2dpMRm9mwZB7IK6VIZTXi6RyxdJZMTsOg0+GwGCnzWKny2vDaTRQ5LDL1XggxoXmPon7+859z++238+1vf5utW7fyta99jSuuuIJDhw5RWlo6J214ZG8fd/563/j333iiFZ/dxPs317Km0s1gNMVQJP81EM4/7e0PJQknTz+Vuthppspro8Znp7bITq3fvqCC6zFKKaKpLKPxNFlN4bdb2FTnp9pno9hpkSe1QgghxFnMYjRQ7jFQ7rGyqtJNKptfqxyK54PwgXCSaCpLIJZCUwqdTofVaMBq0mM1GTAb9Av6XiKT00hmcqSyGol0jszxARirUY/DYqCxxEGJ04rHbsJnN81Yjh+72UjH/3nXjLyXEGJhm/eA+ytf+Qof/ehHuemmmwD49re/zW9/+1vuu+8+Pv/5z8/68R/Z28fNP97DWyd7j8YzfOup1gn/vddmosJrpdJjo9Jro9Kbf/K50DN1nzhl3GU10ljipL7IQbnHuiCmtAshhBBi4bEYDZS6DJS6rED+wX0snSOcyBBNZYkkMgxFU4QT+Yf5qayGpkCHwqjXYzLqMRv0mAw6TAY9RoMOo352pqcrpchqikxOI5PL/5nOaqRzGkqBQmHS67GY9NjMhvGp4W6rCafViNtqlGRnQohpm9eoMJ1Os3v3bu64447xbXq9nksvvZSdO3fO+vFzmuKu3+x/W7D9VjZTfnp1ictCmdtK+fGvUrdlwQfWJxorUxFOZbAaDZS4LDSWOKjw2PDMcWkxIYQQQsy/E5fU7Wof4fyWkklNDdfpdDgtxrctPUtnNeLpLPF0bvzPSDJDOJklnsqSzGhEklkymkZOU+SPqIPjd2U6nQ69TodOR/7PUxxbqXxy1/E/UW++h04HinxAfzy4t5j0FLsseGwm7GYDDrMRuyX/p81kWNAj8UKIxWteo8Xh4WFyuRxlZWUnbS8rK+PgwYNv2z+VSpFKpca/D4fD0zr+rvYR+kLJCfe75eJmVpS7p3Ws+ZLTFKFEhnAig06XX5e1qtJ1Ui1IIYQQQpx93rqk7sP3v0SFx8qd16ziyjUV03pvs1GP2WjGa3/7azlNkcrm8qPNWY3U8VHnbE6R1fJ/pnMamaxGTik0LT9S/VZGfT6YNuj1mPQ6TEZ9fhTdoMNo0OfbcDzQNhv0WIz6Bbe0Twix9C2e4Vng7rvv5q677pqx9xuMTBxsA4QSp06CtlBpmiKczBBKZMgphddu5txqD1V+O6Uuy4yXqZB1SEIIIcTicroldf2hJDf/eA/funHDtIPu0zHoddjNRuax6qkQQsyZeQ24i4uLMRgMDAwMnLR9YGCA8vLyt+1/xx13cPvtt49/Hw6HqampmfLxx9YfTWQxTLfWlCKSzBKKZ8gqDbfVxIpyN9V+G2VuWZcthBBCiLwzLakbm5R912/2c9mq8iWTeVwIIebLvAbcZrOZjRs38thjj3HdddcBoGkajz32GJ/61Kfetr/FYsFisczY8bc0+KnwWOkPJU+7jttnN7Gs1DVjx5xJmlJEk1mCiQxZTcNlMdFY6qDWb6fMbcUhpbyEEEII8RYTLalTQF8oya72EbY1Fc1dw4QQYgma94js9ttv50Mf+hCbNm1iy5YtfO1rXyMWi41nLZ9NBr2OO69Zxc0/3nNCmo6TvX9z7YJa5/zWkWyXxURjiYOa40G21MsWQgghxJkUuqSu0P2EEEKc3rxHZ9dffz1DQ0N86Utfor+/n3Xr1vHII4+8LZHabLlyTQXfunEDd/56HwPhNxOyjdXh3ljnm5N2nElOU0SSGULJDJqmcFlNNJU5qPbl12S7rAt/yrsQQgghFoZCl9QVup8QQojTm/eAG+BTn/rUKaeQz5Ur11Swo7mYc/7XHwC49eImzqnyzuvIdianEU7kS3jp0OGymlhR5qbSZ6PUZZHp4kIIIYSYkomW1OmAco+VLQ3+uW6aEEIsORK1HXdiUpCWMte8BNvJTI5QIkMsncWg1+G1mVlb5aXcY6PUbZHEZ0IIIYSYtjMtqRu7+7nzmlWSME0IIWaABNzzSFOKWCpLOJEllc1hMRnw2U2sqXJT6rZS5LBgNs5sCS8hhBBCiNMtqSufoTrcQggh8iTgPs5uNvLiF97Jw6/3YjHO3khyOqsRSWaIprPkNHBaDFT5bVT7bBQ7Lfjt5gWVpE0IIYQQS9Nbl9R9/6bNnN9SIiPbQggxgyTgnmXjo9jJ/Ci2Sa/HbTdxTrEnP4rtNEvSMyGEEELMixOD6y0Nfgm2hRBihknAPQuSmRyRZJZoOoNSOpwWAxVeK9VeO0VOM36HGZNBpooLIYQQQgghxFImAfcMSGc1oqks0WSWrNKwGg24bSZaypyUuCwUOS1SH1sIIYQQQgghzjISBU5BJqcRS2WJpLJkchomvR6n1ciycidlbit+hxmv3SzTsoQQQgghhBDiLCYBdwEyufwIdiyVJZ3VMBh0uCwmGoodlLmtFB0PsCWjuBBCCCGEEEKIMRJwn0IqmyOZyY9iZzQNo16H02KivshB6fgItknqYgshhBBCCCGEOC0JuN/CYtQzGs/gsBhoKnVS6rbgs+cD7NksFyaEEEIIMdfsZiMd/+dd890MIYRYsiTgPoHfYeYdzSU4rUY8NpNkEhdCCCGEEEIIMWUScJ/AZNBTX+yY72YIIYQQQgghhFgCZAhXCCGEEEIIIYSYBRJwCyGEEEIIIYQQs0ACbiGEEEIIIYQQYhZIwC2EEEIIIYQQQswCCbiFEEIIIYQQQohZIAG3EEIIIYQQQggxCyTgFkIIIYQQQgghZoEE3EIIIYQQQgghxCyQgFsIIYQQQgghhJgFEnALIYQQQgghhBCzQAJuIYQQQgghhBBiFkjALYQQQgghhBBCzAIJuIUQQgghhBBCiFkgAbcQQgghhBBCCDELJOAWQgghhBBCCCFmgXG+GzAdSikAwuHwPLdECCGEmLyx/musPzubSB8uhBBiMSu0D1/UAXckEgGgpqZmnlsihBBCTF0kEsHj8cx3M+aU9OFCCCGWgon6cJ1axI/VNU2jt7cXl8uFTqeb9vuFw2Fqamro6urC7XbPQAvPHnLtpkau29TJtZs6uXZTN9PXTilFJBKhsrISvf7sWuUlffjCIdduauS6TZ1cu6mTazd189WHL+oRbr1eT3V19Yy/r9vtlh/gKZJrNzVy3aZOrt3UybWbupm8dmfbyPYY6cMXHrl2UyPXberk2k2dXLupm+s+/Ox6nC6EEEIIIYQQQswRCbiFEEIIIYQQQohZIAH3CSwWC3feeScWi2W+m7LoyLWbGrluUyfXburk2k2dXLuFS/7fTJ1cu6mR6zZ1cu2mTq7d1M3XtVvUSdOEEEIIIYQQQoiFSka4hRBCCCGEEEKIWSABtxBCCCGEEEIIMQsk4BZCCCGEEEIIIWbBkgq47777bjZv3ozL5aK0tJTrrruOQ4cOnbRPMpnklltuoaioCKfTyZ/92Z8xMDAw/vprr73GDTfcQE1NDTabjZUrV3LPPfec9B5PPvkkOp3ubV/9/f1zcp6zYa6uHUAqleLv/u7vqKurw2KxUF9fz3333Tfr5zhb5uraffjDHz7lz93q1avn5Dxnw1z+3P3kJz9h7dq12O12Kioq+Mu//EsCgcCsn+Nsmctrd++997Jy5UpsNhvLly/nhz/84ayf32yZiesWCAS48sorqaysxGKxUFNTw6c+9SnC4fBJ7/Pkk0+yYcMGLBYLzc3NfP/735+LU1y0pA+fOunDp0768KmTPnxqpP+eukXbh6sl5IorrlD333+/2rt3r3r11VfV1VdfrWpra1U0Gh3f5xOf+ISqqalRjz32mHr55ZfVeeedp7Zv3z7++ve+9z316U9/Wj355JOqtbVV/ehHP1I2m0194xvfGN/niSeeUIA6dOiQ6uvrG//K5XJzer4zaa6unVJK/cmf/InaunWrevTRR1V7e7t6/vnn1bPPPjtn5zrT5uraBYPBk37eurq6lN/vV3feeedcnu6Mmqtr9+yzzyq9Xq/uuece1dbWpp555hm1evVq9Z73vGdOz3cmzdW1++Y3v6lcLpf62c9+plpbW9VPf/pT5XQ61a9//es5Pd+ZMhPXbWRkRH3zm99UL730kuro6FB//OMf1fLly9UNN9wwvk9bW5uy2+3q9ttvV/v371ff+MY3lMFgUI888sicnu9iIn341EkfPnXSh0+d9OFTI/331C3WPnxJBdxvNTg4qAD11FNPKaXyH3Ymk0n913/91/g+Bw4cUIDauXPnad/nk5/8pLr44ovHvx/rrEdHR2et7fNttq7d7373O+XxeFQgEJi9xs+z2bp2b/WrX/1K6XQ61dHRMXONn2ezde3+9V//VTU2Np60z9e//nVVVVU1w2cwf2br2m3btk199rOfPWmf22+/Xe3YsWOGz2B+zNR1u+eee1R1dfX493/zN3+jVq9efdI+119/vbriiitm+AyWLunDp0768KmTPnzqpA+fGum/p26x9OFLakr5W4VCIQD8fj8Au3fvJpPJcOmll47vs2LFCmpra9m5c+cZ32fsPU60bt06KioquOyyy3juuedmuPXza7au3a9//Ws2bdrEv/zLv1BVVcWyZcv47Gc/SyKRmKUzmXuz/XM35nvf+x6XXnopdXV1M9Ty+Tdb127btm10dXXx3//93yilGBgY4IEHHuDqq6+epTOZe7N17VKpFFar9aR9bDYbu3btIpPJzOQpzIuZuG69vb388pe/5MILLxzftnPnzpPeA+CKK64447UXJ5M+fOqkD5866cOnTvrwqZH+e+oWSx++ZANuTdO47bbb2LFjB2vWrAGgv78fs9mM1+s9ad+ysrLTrt16/vnn+fnPf87HPvax8W0VFRV8+9vf5he/+AW/+MUvqKmp4aKLLmLPnj2zdj5zaTavXVtbG88++yx79+7lV7/6FV/72td44IEH+OQnPzlr5zOXZvPanai3t5ff/e53fOQjH5nR9s+n2bx2O3bs4Cc/+QnXX389ZrOZ8vJyPB4P995776ydz1yazWt3xRVX8N3vfpfdu3ejlOLll1/mu9/9LplMhuHh4Vk7p7kw3et2ww03YLfbqaqqwu12893vfnf8tf7+fsrKyt72HuFweEkFJ7NF+vCpkz586qQPnzrpw6dG+u+pW0x9+JINuG+55Rb27t3Lz372sym/x969e7n22mu58847ufzyy8e3L1++nI9//ONs3LiR7du3c99997F9+3a++tWvzkTT591sXjtN09DpdPzkJz9hy5YtXH311XzlK1/hBz/4wZK4CZ3Na3eiH/zgB3i9Xq677ropH2ehmc1rt3//fj7zmc/wpS99id27d/PII4/Q0dHBJz7xiZlo+rybzWv3xS9+kauuuorzzjsPk8nEtddey4c+9CEA9PrF3YVM97p99atfZc+ePTz00EO0trZy++23z3ALz17Sh0+d9OFTJ3341EkfPjXSf0/dourDpzQRfYG75ZZbVHV1tWpraztp+2OPPXbKdVu1tbXqK1/5yknb9u3bp0pLS9UXvvCFgo752c9+Vp133nnTavdCMNvX7i/+4i9UU1PTSdv279+vAHX48OGZOYl5Mlc/d5qmqebmZnXbbbfNWNvn22xfuxtvvFG9973vPWnbM888owDV29s7MycxT+bq5y6dTquuri6VzWbHE7Es5iRTM3HdTvTWn6fzzz9ffeYznzlpn/vuu0+53e4Zaf9SJn341EkfPnXSh0+d9OFTI/331C22PnxJBdyapqlbbrlFVVZWnvKDf2wh/QMPPDC+7eDBg29bSL93715VWlqqPve5zxV87EsvvXTRZktUau6u3b//+78rm82mIpHI+LYHH3xQ6fV6FY/HZ/CM5s5c/9yNJfx54403Zu4k5slcXbs//dM/Ve973/tO2vb8888rQPX09MzQ2cyt+fy8u+CCC07K5rmYzNR1e6unnnpKAaq9vV0plU+4smbNmpP2ueGGGyRp2hlIHz510odPnfThUyd9+NRI/z11i7UPX1IB980336w8Ho968sknTyq9cGIn8IlPfELV1taqxx9/XL388stq27Ztatu2beOvv/HGG6qkpETdeOONJ73H4ODg+D5f/epX1YMPPqiOHDmi3njjDfWZz3xG6fV69cc//nFOz3cmzdW1i0Qiqrq6Wr33ve9V+/btU0899ZRqaWlRH/nIR+b0fGfSXF27MTfeeKPaunXrnJzbbJura3f//fcro9GovvnNb6rW1lb17LPPqk2bNqktW7bM6fnOpLm6docOHVI/+tGP1OHDh9WLL76orr/+euX3+8c7pcVmJq7bb3/7W3XfffepN954Q7W3t6uHH35YrVy58qTMr2MlRT73uc+pAwcOqHvvvVfKgk1A+vCpkz586qQPnzrpw6dG+u+pW6x9+JIKuIFTft1///3j+yQSCfXJT35S+Xw+Zbfb1Xve8x7V19c3/vqdd955yveoq6sb3+fLX/6yampqUlarVfn9fnXRRRepxx9/fA7PdObN1bVTKp+e/9JLL1U2m01VV1er22+/fdE+GVdqbq9dMBhUNptN/cd//Mccnd3smstr9/Wvf12tWrVK2Ww2VVFRoT7wgQ+o7u7uOTrTmTdX127//v1q3bp1ymazKbfbra699lp18ODBOTzTmTUT1+3xxx9X27ZtUx6PR1mtVtXS0qL+9m//9m1T2J544gm1bt06ZTabVWNj40nHEG8nffjUSR8+ddKHT5304VMj/ffULdY+XHe88UIIIYQQQgghhJhBiz9FnRBCCCGEEEIIsQBJwC2EEEIIIYQQQswCCbiFEEIIIYQQQohZIAG3EEIIIYQQQggxCyTgFkIIIYQQQgghZoEE3EIIIYQQQgghxCyQgFsIIYQQQgghhJgFEnALIYQQQgghhBCzQAJuIc5yH/7wh7nuuuvmuxlCCCGEmCTpw4VY+Izz3QAhxOzR6XRnfP3OO+/knnvuQSk1Ry0SQgghRCGkDxdiadAp+S0VYsnq7+8f//vPf/5zvvSlL3Ho0KHxbU6nE6fTOR9NE0IIIcQZSB8uxNIgU8qFWMLKy8vHvzweDzqd7qRtTqfzbdPRLrroIm699VZuu+02fD4fZWVlfOc73yEWi3HTTTfhcrlobm7md7/73UnH2rt3L1dddRVOp5OysjI++MEPMjw8PMdnLIQQQiwN0ocLsTRIwC2EeJsf/OAHFBcXs2vXLm699VZuvvlm/vzP/5zt27ezZ88eLr/8cj74wQ8Sj8cBCAaDXHLJJaxfv56XX36ZRx55hIGBAd73vvfN85kIIYQQZxfpw4VYWCTgFkK8zdq1a/n7v/97WlpauOOOO7BarRQXF/PRj36UlpYWvvSlLxEIBHj99dcB+Ld/+zfWr1/PP//zP7NixQrWr1/PfffdxxNPPMHhw4fn+WyEEEKIs4f04UIsLJI0TQjxNueee+743w0GA0VFRZxzzjnj28rKygAYHBwE4LXXXuOJJ5445Vqy1tZWli1bNsstFkIIIQRIHy7EQiMBtxDibUwm00nf63S6k7aNZU7VNA2AaDTKNddcw5e//OW3vVdFRcUstlQIIYQQJ5I+XIiFRQJuIcS0bdiwgV/84hfU19djNMrHihBCCLFYSB8uxOySNdxCiGm75ZZbGBkZ4YYbbuCll16itbWV3//+99x0003kcrn5bp4QQgghTkP6cCFmlwTcQohpq6ys5LnnniOXy3H55ZdzzjnncNttt+H1etHr5WNGCCGEWKikDxdidumUUmq+GyGEEEIIIYQQQiw18thKCCGEEEIIIYSYBRJwCyGEEEIIIYQQs0ACbiGEEEIIIYQQYhZIwC2EEEIIIYQQQswCCbiFEEIIIYQQQohZIAG3EEIIIYQQQggxCyTgFkIIIYQQQgghZoEE3EIIIYQQQgghxCyQgFsIIYQQQgghhJgFEnALIYQQQgghhBCzQAJuIYQQQgghhBBiFkjALYQQQgghhBBCzIL/H3oCuZf5k4OiAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -358,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 13, "id": "d1e406c5", "metadata": {}, "outputs": [], @@ -392,7 +392,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 14, "id": "4adebbe8", "metadata": {}, "outputs": [], @@ -415,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 15, "id": "95745baa", "metadata": {}, "outputs": [], @@ -433,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 16, "id": "54206834", "metadata": {}, "outputs": [ @@ -443,7 +443,7 @@ "(3, 100)" ] }, - "execution_count": 32, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -454,13 +454,13 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 17, "id": "e6a4e42e", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XecXHW9+P/Xmd52ZnvNtvRKQoAAAYRQpIMKNq7S1J+K9ypyVVC/V0G9NBU7cPUioBQbiCgXFKQJBJIQAul1s5tsb9P7zPn98ZnZkuwms8nW7Pv5eJzH7sycmflMZrJn3uf9+bzfmq7rOkIIIYQQQgghhBhVhokegBBCCCGEEEIIcSySgFsIIYQQQgghhBgDEnALIYQQQgghhBBjQAJuIYQQQgghhBBiDEjALYQQQgghhBBCjAEJuIUQQgghhBBCiDEgAbcQQgghhBBCCDEGJOAWQgghhBBCCCHGgATcQgghhBBCCCHEGJCAW4y5n/70p2iaxuLFiyd6KH3OOusszjrrrAl7/scee4wf//jHQ96maRq33nrruI4H4KGHHkLTNDRN4+WXXz7odl3XmT17NpqmHfG/3e23385TTz110PUvv/zysM871q699lo0TSMvL49gMHjQ7Y2NjRgMhlF/X47mNWffq7179+a031DbV77yFfbu3YumaTz00EN993njjTe49dZb8Xq9Ix6XEGJqk+P1weR4PZgcr0dGjtcCJOAW4+DXv/41AJs3b+att96a4NFMDoc6gK9evZpPf/rT4zugAfLy8njggQcOuv6VV15h9+7d5OXlHfFjD3cAX758OatXr2b58uVH/NhHw2w2k0wm+f3vf3/QbQ8++OBRvebJ4MEHH2T16tWDti9+8YtUVFSwevVqLr744r5933jjDW677TY5gAsxDcnx+mByvB5MjtdjS47XxyYJuMWYWrduHe+++27fH4ihDgzHgkgkMmqPdcoppzBjxoxRe7yR+uhHP8oTTzyB3+8fdP0DDzzAqaeeSk1Nzag/p9vt5pRTTsHtdo/6Y+fCYrHwgQ98oO/LZpau6zz00EN89KMfnZBxjZbFixdzyimnDNpqamqwWq2ccsoplJSUTPQQhRATTI7XIyfH6/Enx2s5Xk9FEnCLMZU9YN95552sXLmS3/3ud4TD4YP2a25u5v/7//4/qqursVgsVFZWcuWVV9Le3t63j9fr5T//8z+ZOXMmVquV0tJSLrroIrZt29a3Tzwe53vf+x7z58/HarVSUlLCddddR2dn52HHmut96+rquOSSS3jyySc5/vjjsdls3HbbbQD84he/4H3vex+lpaU4nU6WLFnC3XffTSKR6Lv/WWedxTPPPENjY+OgKUNZQ02F2rRpE5dffjkFBQXYbDaWLVvGww8/PGif7JSnxx9/nG9+85tUVlbidrs599xz2b59+2Fff9bHP/5xAB5//PG+63w+H0888QTXX3/9kPfp6enhhhtuoKqqCovFwsyZM/nmN79JLBYb9LpCoRAPP/xw32vOTnUbbrrW008/zamnnorD4SAvL4/zzjuP1atXD9rn1ltvRdM0Nm/ezMc//nE8Hg9lZWVcf/31+Hy+nF/39ddfzxtvvDHo3+qFF16gsbGR6667bsj75PK+AGzbto0LLrgAh8NBcXExn/vc5wgEAkM+5gsvvMA555yD2+3G4XBw2mmn8c9//jPn1zESB05Ru/XWW/nqV78KQH19/SGnLAohji1yvJbj9cDXJcdrOV6L0SMBtxgzkUiExx9/nJNOOonFixdz/fXXEwgE+OMf/zhov+bmZk466ST+/Oc/c9NNN/Hss8/y4x//GI/HQ29vLwCBQIDTTz+d//mf/+G6667jr3/9K/fffz9z586ltbUVgHQ6zeWXX86dd97JVVddxTPPPMOdd97J888/z1lnnXXIs9ojve/69ev56le/yhe/+EWee+45rrjiCgB2797NVVddxW9/+1v+9re/8alPfYrvf//7fPazn+2777333stpp51GeXn5oClDw9m+fTsrV65k8+bN/PSnP+XJJ59k4cKFXHvttdx9990H7f+Nb3yDxsZG/vd//5df/vKX7Ny5k0svvZRUKnWYd0xxu91ceeWVg84eP/744xgMhiHPHEejUVatWsVvfvMbbrrpJp555hk+8YlPcPfdd/OhD32ob7/Vq1djt9u56KKL+l7zvffeO+w4HnvsMS6//HLcbjePP/44DzzwAL29vZx11lm89tprB+1/xRVXMHfuXJ544gluueUWHnvsMb785S/n9JoBzj33XGprawe97gceeID3ve99zJkz56D9c31f2tvbOfPMM9m0aRP33nsvv/3tbwkGg/z7v//7QY/5yCOP8P73vx+3283DDz/MH/7wBwoLCzn//POP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p7xXb28vbrvtNiSTSaTTadx88804fPhwc0+YiIhogWKdTbSwMXAT0bQ9//zzOH78OF566SU88sgjePDBB3HTTTchmUziF7/4Be666y7cddddOHr0KACgUqng3e9+NyKRCF566SW8/PLLiEQiuOGGG6Dr+hyfDRER0fmLdTbR/MDATUTTlkql8A//8A9YvXo1Pv7xj2P16tWoVCr43Oc+h1WrVuH++++Hz+fDf//3fwMAnnjiCciyjG9961u46KKLsHbtWmzZsgVHjhzBiy++OLcnQ0REdB5jnU00P3jm+gCIaOFYt24dZHniOl02m8X69evdnxVFQTqdxuDgIABgx44d2L9/P6LR6JT9qKqKAwcONOegiYiIFiHW2UTzAwM3EU2b1+ud8rMkSafcZts2AMC2bWzcuBH/8i//ctK+WltbG3egREREixzrbKL5gYGbiBrm0ksvxZNPPolMJoNYLDbXh0NERESnwTqbqDE4hpuIGub2229HS0sLbr75ZvzsZz/DoUOHsHXrVtxzzz04duzYXB8eERERjWOdTdQYDNxE1DChUAgvvfQSlixZgltuuQVr167Fxz/+cVSrVV49JyIimkdYZxM1hiSEEHN9EERERERERETnG7ZwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRAzBwExERERERETUAAzcRERERERFRA/z/gqHPx4dTtRIAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XecXHW9+P/X9D7be0+vJKRCIEIABYSgAiJFBfFaUC8iFuR6r4B6BfWKigr88KsEJYggFiyABALSQxIC6WWzm2yyvU3vc35/fGa2JLvJbLI1+34+HuexO2fOznxmdpKz7/N5f95vnaZpGkIIIYQQQgghhBhW+rEegBBCCCGEEEIIcSqSgFsIIYQQQgghhBgBEnALIYQQQgghhBAjQAJuIYQQQgghhBBiBEjALYQQQgghhBBCjAAJuIUQQgghhBBCiBEgAbcQQgghhBBCCDECJOAWQgghhBBCCCFGgATcQgghhBBCCCHECJCAW0xK5557Lueee+5YD+Moa9asQafTUV9fP9ZDGVXV1dXccMMNYz2MUaXT6bjzzjuH/HP19fXodDrWrFkzZmMQQojRJOfs8UXO2ZmTc7YACbjFKLj//vvR6XQsX758rIcybnz/+9/nL3/5y1gPo5/q6mp0Oh0XXHDBgPf/6le/QqfTodPp2Lhx45Af//XXX+fOO++ku7v7JEc6fNJ/LOl0Ol599dWj7tc0jYqKCnQ6HZdeeukYjPDEvfTSSz2v7cjt6quvHvBnxuPvSAgxuuScfTQ5Z48Pcs7ubzz+jsTAjGM9AHHqW7t2LdXV1WzYsIF9+/Yxbdq0sR7SmPv+97/PlVdeyYc//OF++z/xiU9w9dVXY7FYxmRcVquV9evX09zcTHFxcb/71q5di9VqJRwOn9Bjv/7669x1113ccMMNZGdn97tv9+7d6PVjd/3ParXy2GOPcfbZZ/fb//LLL3Po0KEx+30Mh5tvvpmlS5f221ddXQ1AKBTCaOw9DRzrdySEmBzknH00OWdn97tPztkjR87ZpyaZ4RYjqq6ujtdff517772XgoIC1q5dO9ZDGnbJZPKET2hHMhgMWK1WdDrdsDzeUJ111lk4nU7+8Ic/9Nt/6NAhXnnlFS655JIReV6LxYLJZBqRx87EBz/4QZ588kni8Xi//Y899hiLFy8+6g+ZiWTlypV8/OMf77el/0ixWq39Tt5CiMlNztlDI+fssSHnbDHRSMAtRtTatWvJycnhkksu4corrxz05N3d3c1XvvIVqqursVgslJeX88lPfpL29vaeY8LhMHfeeSczZszAarVSUlLC5ZdfTm1tbc8xyWSSn/70p8ydOxer1UpRURGf+9zn6OrqOu5YI5EId9xxB9OmTcNisVBRUcE3vvENIpFIv+N0Oh1f+tKXWLt2LXPnzsVisfDss88C8H//93+sWLGCvLw8bDYbixcv5o9//ONRPx8IBHjkkUd60oXSa6EGWw92//339zxXaWkpX/ziF49KITr33HOZN28eO3bsYNWqVdjtdsrKyvjhD3943NeeZrVaufzyy3nsscf67f/9739PTk4OF1544YA/9+KLL7Jy5UocDgfZ2dl86EMfYufOnT3333nnnXz9618HoKampud1p1/nQOvB9u/fz0c/+lFyc3Ox2+2cccYZ/OMf/+h3TDoF64knnuB///d/KS8vx2q1cv7557Nv376MX/c111xDR0cHzz//fM++aDTKH//4R6699toBfyYQCPDVr36ViooKLBYLM2fO5P/+7//QNK3fcZFIhK985SsUFBTgcrm47LLLOHTo0ICPefjwYW688UaKioqwWCzMnTuX3/zmNxm/jqHqux7seL8jIcSpT87Zcs4GOWfLOVsMN7lMIkbU2rVrufzyyzGbzVxzzTU88MADvP322/3SZfx+PytXrmTnzp3ceOONLFq0iPb2dp5++mkOHTpEfn4+iUSCSy+9lBdeeIGrr76aL3/5y/h8Pp5//nm2bdvG1KlTAfjc5z7HmjVr+NSnPsXNN99MXV0dv/jFL3jnnXd47bXXBr0im0wmueyyy3j11Vf57Gc/y+zZs9m6dSs/+clP2LNnz1Frt1588UWeeOIJvvSlL5Gfn9+T7vOzn/2Myy67jOuuu45oNMrjjz/ORz/6Uf7+97/3XGn+3e9+x3/8x3+wbNkyPvvZzwL0jH8gd955J3fddRcXXHABN910E7t37+55H498TV1dXVx00UVcfvnlXHXVVfzxj3/ktttuY/78+Vx88cUZ/c6uvfZaPvCBD1BbW9szrscee4wrr7xywPdv3bp1XHzxxUyZMoU777yTUCjEz3/+c8466yw2b95MdXU1l19+OXv27OH3v/89P/nJT8jPzwegoKBgwDG0tLSwYsUKgsEgN998M3l5eTzyyCNcdtll/PGPf+QjH/lIv+Pvuece9Ho9X/va1/B4PPzwhz/kuuuu46233sroNVdXV3PmmWfy+9//vud9euaZZ/B4PFx99dXcd999/Y7XNI3LLruM9evX8+lPf5qFCxfy3HPP8fWvf53Dhw/zk5/8pOfY//iP/+DRRx/l2muvZcWKFbz44osDzjq0tLRwxhln9PxxWFBQwDPPPMOnP/1pvF4vt9xyS0av5Ug+n6/fH8EAubm5R6UDDvV3JIQ49cg5W87Zcs6Wc7YYAZoQI2Tjxo0aoD3//POapmlaMpnUysvLtS9/+cv9jvv2t7+tAdqf/vSnox4jmUxqmqZpv/nNbzRAu/feewc95pVXXtEAbe3atf3uf/bZZ4/af84552jnnHNOz+3f/e53ml6v11555ZV+P/vggw9qgPbaa6/17AM0vV6vbd++/aixBIPBfrej0ag2b9487bzzzuu33+FwaNdff/1RP//www9rgFZXV6dpmqa1trZqZrNZ+8AHPqAlEome437xi19ogPab3/ym32sCtN/+9rc9+yKRiFZcXKxdccUVRz3XkaqqqrRLLrlEi8fjWnFxsfbd735X0zRN27FjhwZoL7/8cs/43n777Z6fW7hwoVZYWKh1dHT07Hv33Xc1vV6vffKTn+zZ96Mf/ajfazvyufu+H7fccosG9Pt9+Hw+raamRquuru55L9avX68B2uzZs7VIJNJz7M9+9jMN0LZu3XrM19z39fziF7/QXC5Xz+/wox/9qLZq1ap+703aX/7yFw3Qvve97/V7vCuvvFLT6XTavn37NE3TtC1btmiA9oUvfKHfcddee60GaHfccUfPvk9/+tNaSUmJ1t7e3u/Yq6++WsvKyuoZV11dnQZoDz/88DFfW/q9GWhL/w6OHMOxfkdCiFObnLPlnC3nbDlni5EhKeVixKxdu5aioiJWrVoFqFSYj33sYzz++OMkEome45566ikWLFhw1BXQ9M+kj8nPz+c///M/Bz3mySefJCsri/e///20t7f3bIsXL8bpdLJ+/fpBx/rkk08ye/ZsZs2a1e9nzzvvPICjfvacc85hzpw5Rz2OzWbr+b6rqwuPx8PKlSvZvHnzoM99LOvWrSMajXLLLbf0u7r5mc98BrfbfVS6ltPp5OMf/3jPbbPZzLJly9i/f3/Gz2kwGLjqqqv4/e9/D6jfY0VFBStXrjzq2KamJrZs2cINN9xAbm5uz/7TTjuN97///fzzn//M+Hn7+uc//8myZcv6FURxOp189rOfpb6+nh07dvQ7/lOf+hRms7nndnqsQ3ndV111FaFQiL///e/4fD7+/ve/D5qa9s9//hODwcDNN9/cb/9Xv/pVNE3jmWee6TkOOOq4I698a5rGU089xerVq9E0rd9n8MILL8Tj8ZzwZ+jb3/42zz//fL9tIq9vE0KMDDlnyzlbztlyzhYjQ1LKxYhIJBI8/vjjrFq1irq6up79y5cv58c//jEvvPACH/jABwCora3liiuuOObj1dbWMnPmzGMWi9i7dy8ej4fCwsIB729tbT3mz+7cuXPQVJwjf7ampmbA4/7+97/zve99jy1btvRbR3aiBVUOHDgAwMyZM/vtN5vNTJkypef+tPLy8qOeKycnh/fee29Iz3vttddy33338e677/LYY49x9dVXD/gaBhsfwOzZs3nuuecIBAI4HI4hPf+BAwcGbEkze/bsnvvnzZvXs7+ysrLfcTk5OQAZrQNMKygo4IILLuCxxx4jGAySSCS48sorBx1faWkpLpdr0PGlv+r1+qPSD498v9ra2uju7uahhx7ioYceGvA5j/X5PZb58+cP2jZGCCFAztlyzpZzdvqrnLPFSJCAW4yIF198kaamJh5//HEef/zxo+5fu3Ztz8l7uCSTSQoLCwct8nKsdS3JZJL58+dz7733Dnh/RUVFv9t9r4qnvfLKK1x22WW8733v4/7776ekpASTycTDDz98VEGTkWIwGAbcrx1RFOR4li9fztSpU7nllluoq6sb9KrxeDFcr/vaa6/lM5/5DM3NzVx88cWj1mYjmUwC8PGPf5zrr79+wGNOO+20URmLEGLykXO2nLNHk5yzxWQjAbcYEWvXrqWwsJBf/vKXR933pz/9iT//+c88+OCD2Gw2pk6dyrZt2475eFOnTuWtt94iFosNWkRl6tSprFu3jrPOOmvAk+vxHv/dd9/l/PPPP+Er20899RRWq5XnnnuuXw/Ihx9++KhjM32OqqoqQPW8nDJlSs/+aDRKXV3diF4Fveaaa/je977H7NmzWbhw4XHHd6Rdu3aRn5/fc6V8KO9rVVXVoI/Z93mH20c+8hE+97nP8eabbx7VZuXI8a1btw6fz9fvivmR46uqqiKZTPbM9qQd+drS1VATicSYXtkeq9Y2QoixJedsOWfLOVvO2WLkyBpuMexCoRB/+tOfuPTSS7nyyiuP2r70pS/h8/l4+umnAbjiiit49913+fOf/3zUY6Wvdl5xxRW0t7fzi1/8YtBjrrrqKhKJBN/97nePOiYejx/VkqOvq666isOHD/OrX/1qwNcTCASO+7oNBgM6na7fWrf6+vqjqqUCOByOY44n7YILLsBsNnPffff1u/L761//Go/HM2I9NkFV6rzjjjv48Y9/POgxJSUlLFy4kEceeaTf69m2bRv/+te/+OAHP9izL30Sz+R1f/CDH2TDhg288cYbPfsCgQAPPfQQ1dXVA67FGw5Op5MHHniAO++8k9WrVx9zfIlE4qjP409+8hN0Ol1P1dT01yMrpv70pz/td9tgMHDFFVfw1FNPDfiHbFtb24m8nCEbyu9ICHFqkHO2nLPlnC3nbDGyZIZbDLunn34an8/HZZddNuD9Z5xxBgUFBaxdu5aPfexjfP3rX+ePf/wjH/3oR7nxxhtZvHgxnZ2dPP300zz44IMsWLCAT37yk/z2t7/l1ltvZcOGDaxcuZJAIMC6dev4whe+wIc+9CHOOeccPve5z3H33XezZcsWPvCBD2Aymdi7dy9PPvkkP/vZzwZd3/OJT3yCJ554gs9//vOsX7+es846i0Qiwa5du3jiiSd47rnnWLJkyTFf9yWXXMK9997LRRddxLXXXktrayu//OUvmTZt2lHrsRYvXsy6deu49957KS0tpaamZsD1TwUFBdx+++3cddddXHTRRVx22WXs3r2b+++/n6VLl/YrtjLcqqqqevo9HsuPfvQjLr74Ys4880w+/elP97QYycrK6vfzixcvBuBb3/oWV199NSaTidWrVw+4Vuyb3/xmT7uPm2++mdzcXB555BHq6up46qmnjmqPMZwGSw/ra/Xq1axatYpvfetb1NfXs2DBAv71r3/x17/+lVtuuaVn/dfChQu55ppruP/++/F4PKxYsYIXXnhhwH6j99xzD+vXr2f58uV85jOfYc6cOXR2drJ582bWrVtHZ2fnsL/WIw3ldySEODXIOVvO2XLOlnO2GGGjXxhdnOpWr16tWa1WLRAIDHrMDTfcoJlMpp52Ch0dHdqXvvQlraysTDObzVp5ebl2/fXX92u3EAwGtW9961taTU2NZjKZtOLiYu3KK6/Uamtr+z32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dQiFQmhpaUEqlcIDDzxQtfOZKdUstw0bNuC73/0uXn31VQgh8Morr+C73/0ubNvG8PBw1c5pJpxuuV1//fWIRqNob29HMpnEd7/73eC1/v5+NDc3H7WPbDZ7xoSUamF9XRnW15VhfV0Z1teVYX1duflSZy/owH3zzTdj69ateOSRRyrex9atW/G+970Pd999N971rncF25cvX46/+Iu/wJo1a7Bu3To89NBDWLduHb761a9Ox6HPqmqWm+d5kCQJP/zhD7F27Vpcc801uPfee/H9739/3v+DtJrlNtH3v/991NTU4Nprr634e+aSapbb9u3bccstt+Cuu+7Cq6++iqeeegr79u3Dpz/96ek49FlVzXL727/9W7z73e/GZZddBk3T8L73vQ8f//jHAQCyPL+rldMtt69+9avYvHkzHn/8cezevRsbN26c5iNcmFhfV4b1dWVYX1eG9XVlWF9Xbt7U2afcCf0McfPNN4uOjg6xZ8+eSduffvrpY47l6urqEvfee++kbdu2bRNNTU3ir//6r6f0nbfddpu47LLLTuu4Z1u1y+1P/uRPxJIlSyZt2759uwAgdu7cOT0nMQtm6ufN8zyxdOlSceutt07bsc+mapfbRz/6UfHBD35w0rZf//rXAoDo7e2dnpOYBTP182ZZlujp6RGO4wQTs8zXiaaEmJ5ym+jIn6W3vOUt4pZbbpn0noceekgkk8lpOf4zFevryrC+rgzr68qwvq4M6+vKzac6e8EFbs/zxM033yza2tqOWSGUB9o/+uijwbY33njjqIH2W7duFU1NTeJzn/vclL97/fr183Y2xZkqt29961siEomIXC4XbPvJT34iZFkWxWJxGs9oZsz0z1t58p8tW7ZM30nMgpkqtz/6oz8SH/rQhyZt+81vfiMAiEOHDk3T2cyc2fz99ta3vnXS7J7zyXSV25Gee+45AUDs3btXCOFPwLJ69epJ77n++us5adpxsL6uDOvryrC+rgzr68qwvq7cfKyzF1zgvvHGG0UqlRKbNm2atCzDxMrh05/+tOjq6hLPPPOMeOWVV8Tll18uLr/88uD1LVu2iMbGRvHRj3500j4GBweD93z1q18VP/nJT8Sbb74ptmzZIm655RYhy7L41a9+NaPnO11mqtxyuZzo6OgQH/zgB8W2bdvEc889J5YtWyY++clPzuj5TpeZKreyj370o+LSSy+dkXOrppkqt4cfflioqioefPBBsXv3bvH888+Liy++WKxdu3ZGz3e6zFS57dixQ/zgBz8QO3fuFL/97W/FddddJ+rq6oJKar6ZjnL76U9/Kh566CGxZcsWsXfvXvFf//VfYuXKlZNmgi0vMfK5z31O/P73vxcPPPAAlwU7AdbXlWF9XRnW15VhfV0Z1teVm4919oIL3ACOeXv44YeD95RKJXHTTTeJ2tpaEY1Gxfvf/37R19cXvH733Xcfcx/d3d3Be7785S+LJUuWiHA4LOrq6sRVV10lnnnmmRk80+k1U+UmhD91//r160UkEhEdHR1i48aN8/JquRAzW27pdFpEIhHx7W9/e4bOrnpmsty+9rWviVWrVolIJCJaW1vFRz7yEXHw4MEZOtPpNVPltn37dnHBBReISCQiksmkeN/73ifeeOONGTzT6TUd5fbMM8+Iyy+/XKRSKREOh8WyZcvE7bffflSXtmeffVZccMEFIhQKibPOOmvSd9BkrK8rw/q6MqyvK8P6ujKsrys3H+tsafzAiYiIiIiIiGgazf/p6YiIiIiIiIjmIAZuIiIiIiIioipg4CYiIiIiIiKqAgZuIiIiIiIioipg4CYiIiIiIiKqAgZuIiIiIiIioipg4CYiIiIiIiKqAgZuIiIiIiIioipg4CaiY/rEJz6Ba6+9drYPg4iIiE6CdTbR3KXO9gEQ0cyTJOmEr9999924//77IYSYoSMiIiKiY2GdTTS/SYJ/O4kWnP7+/uDxj370I9x1113YsWNHsC0ejyMej8/GoREREdEErLOJ5jd2KSdagFpaWoJbKpWCJEmTtsXj8aO6p1111VX47Gc/i1tvvRW1tbVobm7Gd77zHRQKBdxwww1IJBJYunQpnnzyyUnftXXrVrz73e9GPB5Hc3MzPvaxj2F4eHiGz5iIiGh+Yp1NNL8xcBPRlH3/+99HQ0MDXnrpJXz2s5/FjTfeiD/+4z/GunXrsHnzZrzrXe/Cxz72MRSLRQBAOp3G29/+dlx44YV45ZVX8NRTT2FgYAAf+tCHZvlMiIiIzmyss4nmBgZuIpqy888/H5///OexbNky3HnnnQiHw2hoaMCnPvUpLFu2DHfddRdGRkbwu9/9DgDwjW98AxdeeCG++MUvYsWKFbjwwgvx0EMP4dlnn8XOnTtn+WyIiIjOXKyzieYGTppGRFN23nnnBY8VRUF9fT3OPffcYFtzczMAYHBwEADw+uuv49lnnz3m2LLdu3fj7LPPrvIRExERLUyss4nmBgZuIpoyTdMmPZckadK28kyqnucBAPL5PN773vfiy1/+8lH7am1treKREhERLWyss4nmBgZuIqqaiy66CI899hgWLVoEVeWvGyIiormKdTZRdXAMNxFVzc0334zR0VFcf/31ePnll7F79278/Oc/xw033ADXdWf78IiIiGgc62yi6mDgJqKqaWtrwwsvvADXdfGud70L5557Lm699VbU1NRAlvnrh4iIaK5gnU1UHZIQQsz2QRARERERERGdaXi5ioiIiIiIiKgKGLiJiIiIiIiIqoCBm4iIiIiIiKgKGLiJiIiIiIiIqoCBm4iIiIiIiKgKGLiJiIiIiIiIqoCBm4iIiIiIiKgKGLiJiIiIiIiIqoCBm4iIiIiIiKgKGLiJiIiIiIiIqoCBm4iIiIiIiKgKGLiJiIiIiIiIquD/BxYqhS1y0DpIAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -497,7 +497,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 18, "id": "018fc13a", "metadata": {}, "outputs": [ @@ -505,15 +505,15 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 1 of \"dubious year (Note 6)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 1 of \"dubious year (Note 6)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 2 of \"dubious year (Note 6)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 2 of \"dubious year (Note 6)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 2 of \"dubious year (Note 3)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 2 of \"dubious year (Note 3)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 1 of \"dubious year (Note 3)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 1 of \"dubious year (Note 3)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 1 of \"dubious year (Note 4)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 1 of \"dubious year (Note 4)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n" ] } @@ -526,7 +526,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 19, "id": "73dafb1f", "metadata": {}, "outputs": [ @@ -534,21 +534,21 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 20 of \"dubious year (Note 6)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 20 of \"dubious year (Note 6)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 40 of \"dubious year (Note 6)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"dtf2d\" yielded 40 of \"dubious year (Note 6)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 40 of \"dubious year (Note 3)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 40 of \"dubious year (Note 3)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 20 of \"dubious year (Note 3)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"utctai\" yielded 20 of \"dubious year (Note 3)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n", - "/Users/weilingfeng/Software/miniconda3/envs/main/lib/python3.13/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 20 of \"dubious year (Note 4)\"\n", + "/home/weilingfeng/Software/miniconda3/envs/main/lib/python3.12/site-packages/erfa/core.py:133: ErfaWarning: ERFA function \"taiutc\" yielded 20 of \"dubious year (Note 4)\"\n", " warn(f'ERFA function \"{func_name}\" yielded {wmsg}', ErfaWarning)\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA8XlJREFUeJzs3Xd8W+W9+PHP0R625b0Sx3Z2QhgJAZKwEigbSqEUKC2zgwu9pS2dtOVCSi+U3tsyyuivLRAobQIUSmm5UEYgrIQsErLjeO8ha2/pnN8fJiYmdmInkiU73/cLvYiOjo6+smU953ue5/k+iqZpGkIIIYQQQgghhEgqXboDEEIIIYQQQgghxiNJuIUQQgghhBBCiBSQhFsIIYQQQgghhEgBSbiFEEIIIYQQQogUkIRbCCGEEEIIIYRIAUm4hRBCCCGEEEKIFJCEWwghhBBCCCGESAFJuIUQQgghhBBCiBSQhFsIIYQQQgghhEgBSbhFxlq2bBmKovTfDAYDEydO5Prrr6e1tTUtMV133XVUVVUN2FZVVcV111036rEsXrwYRVGYPHkymqbt9/g777zT/7NbtmzZiI+/fft27rzzThoaGvZ7bLCfw2jZ+56G+pn/4he/6N9nsNgP1eG858WLF7N48eJh7bfvZ37f29atW7nzzjtRFGXAcx555JFD+v0KIUSqSTt+YNKOXzfo49KOi/FGEm6R8Z544glWr17N66+/zje+8Q2WL1/OqaeeSiAQSHdoaZednU19fT0rV67c77HHH3+cnJycQz729u3bWbp06aCN3e23387f//73Qz724crOzua5557D5/MN2K5pGsuWLTus951ukydPZvXq1fvdpkyZwte//nVWr149YH9pqIUQmU7a8aFJOy7tuLTj458k3CLjzZkzhwULFrBkyRLuuOMOfvSjH1FfX8+LL7542McOhUKHH2AaTZo0iQULFvD4448P2O7z+Xjuuee44oorUvK6U6ZMYe7cuSk59nBcfPHFaJrGihUrBmxfuXIl9fX1KXvfo8FqtbJgwYL9blarlYkTJ7JgwYJ0hyiEECMi7fjQpB2XdlyMf5JwizFn7xdVY2MjAEuXLuWkk04iPz+fnJwc5s2bx2OPPbbf8KyqqiouvPBCXnjhBebOnYvFYmHp0qUAPPzww5x22mkUFxdjt9s5+uij+fWvf00sFhtxfOFwmO9///scd9xxOBwO8vPzWbhwIf/4xz8G7LdixQoUReGhhx4asP2OO+5Ar9fz+uuvD+v1brjhBl544QXcbveAYwNceeWVgz7nvffe48wzzyQ7OxubzcaiRYt4+eWX+x9ftmwZX/rSlwBYsmTJfkPaBhuWFQ6Hue2226iursZkMjFhwgS+9a1vDYgLPv09vPrqq8ybNw+r1crMmTP3O9k4EIfDwSWXXLLfcx5//HFOPvlkpk+fPujzHn/8cY499lgsFgv5+flccskl7NixY7/9li1bxowZMzCbzcyaNYunnnpq0ONFo1F++ctfMnPmTMxmM0VFRVx//fV0d3cP+72MxGeHolVVVbFt2zZWrVrV/ztK1xBBIYQYLmnHB5J2/FPSjks7Ph4Z0h2AECO1Z88eAIqKigBoaGjgxhtvZNKkSQCsWbOGb3/727S2tvJf//VfA567ceNGduzYwc9//nOqq6ux2+0A1NbWctVVV/U3Mps3b+a///u/2blz54gaEIBIJEJvby8/+MEPmDBhAtFolDfeeINLL72UJ554gmuuuQboa0RXrVrF97//fRYsWMD8+fNZuXIlv/zlL/npT3/KWWedNazXu/LKK/ne977H8uXLuemmmwB47LHHuOyyywYdkrVq1SrOOussjjnmGB577DHMZjOPPPIIF110EcuXL+eKK67gggsu4O677+anP/0pDz/8MPPmzQP6rogPRtM0vvCFL/Dmm29y2223ceqpp/Lxxx9zxx139A+lMpvN/ftv3ryZ73//+/zkJz+hpKSEP/3pT3zta19j6tSpnHbaacN631/72tc488wz2bFjB7NmzcLtdvPCCy/wyCOP4HQ699v/nnvu4ac//Slf/vKXueeee3A6ndx5550sXLiQdevWMW3aNKCvkb7++uu5+OKL+c1vfoPH4+HOO+8kEomg0316jVJVVS6++GLeffddfvSjH7Fo0SIaGxu54447WLx4MevXr8dqtQ7rvXxWPB4fcF+n0w147b3+/ve/c9lll+FwOHjkkUcABvychRAiE0k7PpC049KOSzs+zmlCZKgnnnhCA7Q1a9ZosVhM8/l82r/+9S+tqKhIy87O1jo6OvZ7TiKR0GKxmPaLX/xCKygo0FRV7X+ssrJS0+v12q5duw74unuP8dRTT2l6vV7r7e3tf+zaa6/VKisrB+xfWVmpXXvttUMeLx6Pa7FYTPva176mzZ07d8Bj4XBYmzt3rlZdXa1t375dKykp0U4//XQtHo8fMEZN07TTTz9dO+qoo/rjmj9/vqZpmrZt2zYN0N5++21t3bp1GqA98cQT/c9bsGCBVlxcrPl8vgExzpkzR5s4cWL/z+y5557TAO2tt97a77U/+3N49dVXNUD79a9/PWC/Z555RgO0P/zhD/3bKisrNYvFojU2NvZvC4VCWn5+vnbjjTce9H0D2re+9S1NVVWturpa+8EPfqBpmqY9/PDDWlZWlubz+bT/+Z//0QCtvr5e0zRNc7lcmtVq1c4///wBx2pqatLMZrN21VVXaZrW97svLy/X5s2bN+Cz09DQoBmNxgHvefny5RqgPf/88wOOufdn/sgjj/RvO/3007XTTz/9oO/t9NNP14D9bl/5ylc0TdO0O+64Q/vs1/ZRRx01rGMLIcRok3b8wKQdl3Zc06QdPxLIkHKR8RYsWIDRaCQ7O5sLL7yQ0tJSXnnlFUpKSoC++T6f+9zncDgc6PV6jEYj//Vf/4XT6aSrq2vAsY455phBhyl99NFHfP7zn6egoKD/GNdccw2JRILdu3ePOObnnnuOk08+maysLAwGA0ajkccee2y/YU9ms5lnn30Wp9PJvHnz0DSN5cuXo9frR/R6N9xwA+vXr2fLli089thjTJkyZdArzIFAgA8//JDLLruMrKys/u16vZ6rr76alpYWdu3aNeL3u7fYy2crjn7pS1/Cbrfz5ptvDth+3HHH9fdkAFgsFqZPn94/vHA49lY4/fOf/0w8Huexxx7j8ssvH/C+9lq9ejWhUGi/+CoqKjjjjDP649u1axdtbW1cddVVA4Z8VVZWsmjRogHP/de//kVubi4XXXQR8Xi8/3bcccdRWlrK22+/Pez3sq8pU6awbt26Abe77rrrkI4lhBCZQNrxg5N2XNpxMX5Jwi0y3lNPPcW6dev46KOPaGtr4+OPP+bkk08GYO3atZx99tkA/PGPf+T9999n3bp1/OxnPwP2L6ZSVla23/Gbmpo49dRTaW1t5YEHHuDdd99l3bp1PPzww4Me42BeeOEFLr/8ciZMmMDTTz/N6tWrWbduHTfccAPhcHi//adOncqpp55KOBzmK1/5yqAxHsxpp53GtGnT+H//7//x5z//mRtuuGG/ZScAXC4XmqYN+hrl5eUAgw7jOhin04nBYOgfHriXoiiUlpbud8yCgoL9jmE2m0f8s947z+ruu+9m48aNfO1rXxsyPhj8919eXt7/+N7/l5aW7rffZ7d1dnbidrsxmUwYjcYBt46ODnp6ekb0XvayWCzMnz9/wK26uvqQjiWEEJlA2vGDk3Zc2nExfskcbpHxZs2axfz58wd9bMWKFRiNRv71r39hsVj6tw9V+XSwxuvFF18kEAjwwgsvUFlZ2b9906ZNhxTv008/TXV1Nc8888yA14tEIoPu/6c//YmXX36ZE088kYceeogrrriCk046acSve/311/Pzn/8cRVG49tprB90nLy8PnU5He3v7fo+1tbUBUFhYOOLXLigoIB6P093dPaCx1jSNjo4OTjjhhBEfczgqKir43Oc+x9KlS5kxY8Z+V6/3jQ8Y8n3vfc979+vo6Nhvv89uKywspKCggFdffXXQ18zOzh7+GxFCiHFM2vHhkXZc2nExPkkPtxjTFEXBYDAMGLoVCoX485//PKJjwMAiFZqm8cc//vGQYzKZTAMa6Y6Ojv2qmwJs2bKFW265hWuuuYZ3332XY445hiuuuAKXyzXi17322mu56KKL+OEPf8iECRMG3cdut3PSSSfxwgsvDLgKraoqTz/9NBMnTuwfqrf35zGcq9Vnnnkm0HeSsq/nn3+eQCDQ/3gqfP/73+eiiy7i9ttvH3KfhQsXYrVa94uvpaWFlStX9sc3Y8YMysrKWL58+YDquI2NjXzwwQcDnnvhhRfidDpJJBL7XcmeP38+M2bMSOK7HNqh9CgIIUSmkHb8U9KOSzsuxifp4RZj2gUXXMBvf/tbrrrqKr75zW/idDr53//93xFVeDzrrLMwmUx8+ctf5kc/+hHhcJhHH330kBpLoH/JkptvvpnLLruM5uZm7rrrLsrKyqipqenfLxAIcPnll1NdXc0jjzyCyWTi2WefZd68eVx//fUjXp+0vLx8WM+55557OOuss1iyZAk/+MEPMJlMPPLII2zdupXly5f3n2DMmTMHgD/84Q9kZ2djsViorq4edBjZWWedxTnnnMOPf/xjvF4vJ598cn9107lz53L11VeP6L2MxNlnn90/HHEoubm53H777fz0pz/lmmuu4ctf/jJOp5OlS5disVi44447gL4qonfddRdf//rXueSSS/jGN76B2+3mzjvv3G8o2pVXXslf/vIX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2nAhhBi/JOFOgoSqsfSf2xls0NnebUv/uX1Uhpfv64wzzuDYY4/lhRdeAECn0/Hggw+ydetWnnzySVauXMmPfvQjABYtWsT9999PTk4O7e3ttLe384Mf/ADoO5G666672Lx5My+++CL19fVcd911o/pehBBCjI5vfetbPP300/z1r38lOzubjo4OOjo6CIVCQN+w8O9+97vcfffd/P3vf2fr1q1cd9112Gw2rrrqqv7jXHPNNdx2223997/zne/w2muvce+997Jz507uvfde3njjDb773e+O9lvcTya249KGCyHE+CBF05JgbX0v7Z7wkI9rQLsnzNr6XhZOKRi9wICZM2fy8ccfAww4qamuruauu+7ipptu4pFHHsFkMuFwOFAUpX+44F433HBD/78nT57Mgw8+yIknnojf7ycrK2tU3ocQQmQCdzCKxajHYtSnO5SUefTRRwFYvHjxgO1PPPFEf6L2ox/9iFAoxM0334zL5eKkk07itddeIzs7u3//pqYmdLpPr+svWrSIFStW8POf/5zbb7+dKVOm8Mwzz3DSSSel/D0dTKa249KGCyFE8miaRm8gSp7NhE534JojySQJdxJ0+YZupA9lv2TatyDNW2+9xd1338327dvxer3E43HC4TCBQAC73T7kMT766CPuvPNONm3aRG9vb38Rl6amJmbPnj0q70MIIdKpNxBld6ePhp4A8yrzmF6SffAnjVGadvBe3L1DlvcOWx7M22+/vd+2yy67jMsuu+wwokuNTG3HpQ0XQojkCETibG310OIKcur0IoqzLaP22jKkPAmG+wsbzV/sXjt27KC6uprGxkbOP/985syZw/PPP8+GDRt4+OGHAYjFYkM+PxAIcPbZZ5OVlcXTTz/NunXr+Pvf/w70DVMTQojxzBeOsbbOyStb29nc7KY3EEUdRkIqxpZMbcelDRdCiMOjaRoNPQFe29bJxiYX7lCM0W7GpYc7CU6szqfMYaHDEx50/pcClDosnFidP6pxrVy5ki1btvC9732P9evXE4/H+c1vftM/xO/ZZ58dsL/JZCKRSAzYtnPnTnp6evjVr37VvxzL+vXrR+cNCCFEGiVUjQ/re9nT5acoy0xJkYX6Hn+6wxIpkIntuLThQghxeHoDUXa0ednV6cOgU6gqsNPmCY16HNLDnQR6ncIdF/UNy/rsbIC99++4aDb6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HE6gpdyOpTVuaDSct01ERJPHgLuEzKtwoNpz4tTyjKIiLSuYW26HXst/YiIioolIy+posB20Y1WDFyY9520TEdHUMBorIUadFourXdBrNQglMsfcRlUFukYSqHRbUM3RbSIioglJyyo6huOYU8Zgm4iIcocBd4mpcJmxoMKJgWgKg9EUVCHGfpbMKGgbjCFgN2J5nZuj20RERCegCoH+SAqdw3HMCdixupHBNhER5Y6u2A2g7C2odEAjATsPRdA2EIPbYgAAjCQymFdux7JaD6xG/tMSEREdj6yIsX70lGY/mgI2FholIqKcYlRWgow6LRbXuNEYsGFvXxS7DkWgqAJrG72YW+6AlgVeiIiIjkuSALfVgHqfFfMqHHCY9MVuEhERzUAMuEuY3aTHkho3mgI2ZBQBj9VQ7CYRERGVhCq3BS6LAT6usU1ERHnEgHsGsPOuPBERUVZMei3nahMRUd5xohIRERERERFRHjDgJiIiIiIiIsoDBtxEREREREREecCAm4iIiIiIiCgPGHATERERERER5QEDbiIiIiIiIqI8YMBNRERERERElAcMuImIiIiIiIjygAE3ERERERERUR4w4CYiIiIiIiLKAwbcRERERERERHnAgJuIiIiIiIgoDxhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHumI3oJCEEACAcDhc5JYQEdFsd7gvOtw30YmxHycioukgmz58VgXckUgEAFBdXV3klhAREY2KRCJwOp3FbkZJYD9ORETTyUT6cEnMolvrqqqiu7sbdrsdkiRNaV/hcBjV1dU4ePAgHA5Hjlo4c/F8ZY/nLDs8X9njOctOrs+XEAKRSAQVFRXQaDjDayLYjxcPz1f2eM6yw/OVPZ6z7OTyfGXTh8+qEW6NRoOqqqqc7tPhcPALngWer+zxnGWH5yt7PGfZyeX54sh2dtiPFx/PV/Z4zrLD85U9nrPs5Op8TbQP5y11IiIiIiIiojxgwE1ERERERESUBwy4J8loNOLb3/42jEZjsZtSEni+ssdzlh2er+zxnGWH52tm4b9ndni+ssdzlh2er+zxnGWnWOdrVhVNIyIiIiIiIioUjnATERERERER5QEDbiIiIiIiIqI8YMBNRERERERElAezNuC++eabsWLFCtjtdgQCAXz0ox/Frl27jthGCIEbb7wRFRUVMJvN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/x5PP/30UV+2+vp6BINBbNiwYey1dDqNjRs3Ys2aNWOvhcNhnH322TAYDHj00UdhMplO+Nnbtm0D8F6nVCoKdc6WLVsGo9F4RJn/TCaDAwcOoLa2Nk9Hl3uF/o4JIXDffffhsssuO+HF4nRVqHMWj8cB4Ii5TIefHx6dKQXF+DtWVlYGm82Ghx9+GCaTCWeddVbuDyyPcnXOxtt3KpUCAKxevRqhUAivvPLK2M9ffvllhEKhE+6HJob9eHbYh2eP/Xh22Idnj/14dkq2D8+6zNoM8eUvf1k4nU7x7LPPHrEMQzweH9vmlltuEU6nU/z+978X27dvF5/61KeOKCsfDofFypUrxcKFC8XevXuP2M/hsvIvvfSSuPXWW8W2bdvE/v37xcMPPywqKirERz7ykaIc91QU6pwJIcQ111wjKisrxRNPPCF27twpvvCFL4hAICCGhoYKftyTVcjzJYQQTz31lAAg3n777YIeZy4V6pz19/cLr9crLrroIvH666+LXbt2ia9//etCr9eL119/vSjHPhmF/I795Cc/EVu2bBG7du0St99+uzCbzeJHP/pRwY95qnJxzvbt2yduuukm8dprr4n29nbx0ksviQsvvFB4PB5x6NChsf2ce+65YtGiRWLTpk1i06ZNYuHChVwWLIfYj2eHfXj22I9nh3149tiPZ6dU+/BZG3ADOObjvvvuG9tGVVXx7W9/WwSDQWE0GsW6devE9u3bx37+zDPPjLuftrY2IYQQW7ZsEStXrhROp1OYTCbR0tIivv3tb4tYLFbgI566Qp0zIUaXxPja174mAoGAsNvt4swzzxQ7duwo4NFOXSHPlxBCfOpTnxJr1qwp0NHlRyHP2auvvirOPvts4fF4hN1uF6tWrRKPPfZYAY926gp5vi699FLh8XiEwWAQixYtEg8++GABjzR3cnHOurq6xHnnnScCgYDQ6/WiqqpKfPrTnz5qqZDBwUHxmc98RtjtdmG328VnPvMZMTw8XKAjnfnYj2eHfXj22I9nh3149tiPZ6dU+3Dp3cYTERERERERUQ7N2jncRERERERERPnEgJuIiIiIiIgoDxhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHDLiJiIiIiIiI8oABNxEREREREVEeMOAmIiIiIiIiygMG3ER0lBtvvBGLFy8udjOIiIhoEtiPE00fkhBCFLsRRFQ4kiQd9+ef/exncfvttyOVSsHr9RaoVURERDQR7MeJSgsDbqJZpre3d+z/H374YXzrW9/Crl27xl4zm81wOp3FaBoRERGdAPtxotLClHKiWSYYDI49nE4nJEk66rUPpqJ97nOfw0c/+lHcdNNNKCsrg8vlwne+8x3Isox/+qd/gsfjQVVVFX7+858f8VldXV345Cc/CbfbDa/XiwsvvBAHDhwo7AETERHNIOzHiUoLA24impCnn34a3d3deO6553DrrbfixhtvxAUXXAC3242XX34ZV1xxBa644gocPHgQABCPx3H66afDZrPhueeewwsvvACbzYZzzz0X6XS6yEdDREQ0u7AfJyoOBtxENCEejwc//vGP0dLSgs9//vNoaWlBPB7HP//zP6O5uRk33HADDAYDXnzxRQDAQw89BI1Gg3vuuQcLFy7EvHnzcN9996GjowPPPvtscQ+GiIholmE/TlQcumI3gIhKw4IFC6DRvHePrqysDK2trWPPtVotvF4v+vr6AABbtmzB3r17Ybfbj9hPMpnEvn37CtNoIiIiAsB+nKhYGHAT0YTo9fojnkuSdMzXVFUFAKiqimXLluF//ud/jtqX3+/PX0OJiIjoKOzHiYqDATcR5cXSpUvx8MMPIxAIwOFwFLs5RERElAX240S5wTncRJQXn/nMZ+Dz+XDhhRfi+eefR1tbGzZu3IhrrrkGnZ2dxW4eERERHQf7caLcYMBNRHlhsVjw3HPPoaamBhdddBHmzZuHz3/+80gkErxTTkRENM2xHyfKDUkIIYrdCCIiIiIiIqKZhiPcRERERERERHnAgJuIiIiIiIgoDxhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHDLiJiIiIiIiI8oABNxEREREREVEeMOAmIiIiIiIiygMG3ERERERERER5wICbiIiIiIiIKA8YcBMRERERERHlAQNuIiIiIiIiojz4/3lQGxRIhH3EAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAHqCAYAAAD27EaEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA71tJREFUeJzs3XeYXGXZ+PHvmV62991kWzpJSIBAYqgJICEg1UJTigIWUAEV5WcBFMXyivTwvioEFAQRCagUCYTQAumkJ5vtvcxO7zPn/P7YZMmStpud2Znd3J/rmuvKnDlzzj07m33OfZ7nuR9F0zQNIYQQQgghhBBCJJQu1QEIIYQQQgghhBBjkSTcQgghhBBCCCFEEkjCLYQQQgghhBBCJIEk3EIIIYQQQgghRBJIwi2EEEIIIYQQQiSBJNxCCCGEEEIIIUQSSMIthBBCCCGEEEIkgSTcQgghhBBCCCFEEkjCLYQQQgghhBBCJIEk3EIMUVVVFddee23/87fffhtFUXj77bdTFtNIW7p0KYqi0NDQkOpQRsxdd92FoihH9N5rr72WqqqqlMYghBBC2nCQNnyopA0XwyUJt0hrexuFvQ+LxcKUKVO4+eab6ezsTHV4KbXvz+a9997b73VN0ygvL0dRFD73uc8d0Tl+9atfsWzZsmFGmlhVVVUoisLZZ599wNf/+Mc/9v9c1q5dO8LRDc+CBQsG/L7v+9ixY8cB35OO35EQQoC04Ycibbi04ZCe35FIPEOqAxBiMH7+859TXV1NKBTivffeY8mSJbzyyits2bIFm82W6vBSymKx8Mwzz3DqqacO2L5y5UpaWlowm81HfOxf/epXfOELX+Diiy8esP0rX/kKl19++bCOPRwWi4UVK1bQ0dFBSUnJgNeefvppLBYLoVAoJbEN1/jx47n33nv3215WVsZPfvITfvSjHw3YfrDvSAgh0oW04Qcnbbi04dKGj32ScItRYfHixZx44okAXH/99eTn53Pffffx0ksvccUVVxzxcVVVJRKJYLFYEhXqiDvvvPN4/vnnefDBBzEYPvkv/cwzzzBnzhx6enoSfk69Xo9er0/4cQfrlFNOYc2aNTz33HN897vf7d/e0tLCu+++yyWXXMILL7yQsviGIzs7my9/+csHfX3f71gIIUYDacMPTtpwacPF2CdDysWodOaZZwJQX18PwP/8z/9w8sknk5+fj9VqZc6cOfzjH//Y732KonDzzTfz9NNPM2PGDMxmM6+99tqQjjEY7777Ll/84hepqKjAbDZTXl7OrbfeSjAY7N+nq6uLwsJCFixYgKZp/dt3796N3W7nsssuG9S5rrjiChwOB2+88Ub/tkgkwj/+8Q+uvPLKA77H7/fzve99j/LycsxmM1OnTuV//ud/BsShKAp+v58nn3yyf0jU3nlvB5v/9eijj/b/XMvKyrjppptwuVwD9lmwYAEzZ85k27ZtLFy4EJvNxrhx4/jtb387qM8LfXfHL730Up555pkB2//2t7+Rm5vLokWLDvi+t956i9NOOw273U5OTg4XXXQR27dv32+/9957j5NOOgmLxcLEiRP53//934PG8te//pU5c+ZgtVrJy8vj8ssvp7m5edCfZSg+Pf/rUN+REEKkK2nDPyFt+CekDZc2fKyShFuMSrW1tQDk5+cD8MADD3D88cfz85//nF/96lcYDAa++MUv8p///Ge/97711lvceuutXHbZZTzwwAP9hTCGcozDef755wkEAnzzm9/koYceYtGiRTz00ENcffXV/fsUFRWxZMkSVq5cyUMPPQT03a2/9tpryczM5NFHHx3Uuaqqqpg/fz5/+9vf+re9+uqruN1uLr/88v321zSNCy+8kD/84Q+ce+653HfffUydOpUf/OAH3Hbbbf37/eUvf8FsNnPaaafxl7/8hb/85S98/etfP2gcd911FzfddBNlZWX8/ve/5/Of/zz/+7//yznnnEM0Gh2wr9Pp5Nxzz2X27Nn8/ve/Z9q0afzwhz/k1VdfHdRnBrjyyitZvXp1/+8C9PUIfOELX8BoNO63//Lly1m0aBFdXV3cdddd3HbbbXzwwQeccsopAy46Nm/ezDnnnNO/33XXXcedd97Jiy++uN8xf/nLX3L11VczefJk7rvvPm655RbefPNNTj/99P0uUgYrHo/T09Mz4OHz+Q6471C/IyGESAfShn9C2nBpw6UNPwpoQqSxJ554QgO05cuXa93d3Vpzc7P27LPPavn5+ZrVatVaWlo0TdO0QCAw4H2RSESbOXOmduaZZw7YDmg6nU7bunXrfuca7DEqKyu1a665pv/5ihUrNEBbsWLFQY+laZp27733aoqiaI2NjQO2X3HFFZrNZtN27dql/e53v9MAbdmyZQf/oeyx92ezZs0a7eGHH9YyMzP7z/vFL35RW7hwYX+8559/fv/7li1bpgHaPffcM+B4X/jCFzRFUbTdu3f3b7Pb7QM+66fPXV9fr2mapnV1dWkmk0k755xztHg83r/fww8/rAHa448/3r/tjDPO0ADtqaee6t8WDoe1kpIS7fOf//xhP/fezxOLxbSSkhLtF7/4haZpmrZt2zYN0FauXDngZ7PXcccdpxUVFWkOh6N/28cff6zpdDrt6quv7t928cUXaxaLZcD3tG3bNk2v12v7/slsaGjQ9Hq99stf/nJAfJs3b9YMBsOA7ddcc41WWVl52M+292fz6cfe7+DOO+/UPv1n+2DfkRBCpJq04Qcnbbi04ZombfjRQnq4xahw9tlnU1hYSHl5OZdffjkZGRm8+OKLjBs3DgCr1dq/r9PpxO12c9ppp7F+/fr9jnXGGWcwffr0/bYP5RiHs++x/H4/PT09nHzyyWiaxoYNGwbs+/DDD5Odnc0XvvAFfvrTn/KVr3yFiy66aEjn+9KXvkQwGOTf//43Xq+Xf//73wcdivbKK6+g1+v5zne+M2D79773PTRNG9Id6r2WL19OJBLhlltuQaf75M/KDTfcQFZW1n49DBkZGQPmOJlMJubOnUtdXd2gz6nX6/nSl77U3yvw9NNPU15ezmmnnbbfvu3t7WzcuJFrr72WvLy8/u2zZs3is5/9LK+88grQd2f69ddf5+KLL6aioqJ/v2OOOWa/IW7//Oc/UVWVL33pSwPuZJeUlDB58mRWrFgx6M+yr6qqKt54440Bj9tvv/2IjiWEEOlA2vBDkzZc2nAxtsnMfTEqPPLII0yZMgWDwUBxcTFTp04d0Cj8+9//5p577mHjxo2Ew+H+7Qda77C6uvqA5xjKMQ6nqamJn/3sZ7z88ss4nc4Br7nd7gHP8/LyePDBB/niF79IcXExDz744JDPV1hYyNlnn80zzzxDIBAgHo/zhS984YD7NjY2UlZWRmZm5oDtxxxzTP/rQ7X3PVOnTh2w3WQyMWHChP2OOX78+P1+rrm5uWzatGlI573yyit58MEH+fjjj3nmmWe4/PLLD/h9HSw+6Pvcr7/+On6/H6/XSzAYZPLkyfvtN3Xq1P5GHaCmpgZN0w64L3DAIXGDYbfbD7pcihBCjEbShh+atOHShouxTRJuMSrMnTu3v8Lpp7377rtceOGFnH766Tz66KOUlpZiNBp54okn9ivIAQPvXB/pMQ4lHo/z2c9+lt7eXn74wx8ybdo07HY7ra2tXHvttaiqut97Xn/9daDvrnxLSws5OTlDOif0NVw33HADHR0dLF68+IiOMVIOVh1V26fgy2DMmzePiRMncsstt1BfX3/QHoFkUFUVRVF49dVXD/h5MjIyRiwWIYRIZ9KGH5604dKGi7FLEm4x6r3wwgtYLBZef/31AWtKPvHEEyN6jL02b97Mrl27ePLJJwcUWNm3Aum+XnvtNf70pz9x++238/TTT3PNNdfw0UcfDXnpiEsuuYSvf/3rfPjhhzz33HMH3a+yspLly5fj9XoH3CHfsWNH/+t7DbZnYO97du7cyYQJE/q3RyIR6uvrk3q394orruCee+7hmGOO4bjjjjtsfJ+2Y8cOCgoKsNvtWCwWrFYrNTU1++336fdOnDgRTdOorq5mypQpw/8gR+hIem+EECJdSBveR9pwacPF2CVzuMWop9frURSFeDzev62hoYFly5aN6DH2PRYMvNOraRoPPPDAfvu6XC6uv/565s6dy69+9Sv+9Kc/sX79en71q18N+bwZGRksWbKEu+66iwsuuOCg+5133nnE43EefvjhAdv/8Ic/oCgKixcv7t9mt9sHVanz7LPPxmQy8eCDDw743H/+859xu92cf/75Q/48g3X99ddz55138vvf//6g+5SWlnLcccfx5JNPDvg8W7Zs4b///S/nnXce0PfdLVq0iGXLltHU1NS/3/bt2/t7MPa69NJL0ev13H333fvd1dc0DYfDkYBPd3iD/Y6EECIdSRveR9pwacPF2CU93GLUO//887nvvvs499xzufLKK+nq6uKRRx5h0qRJg55PlIhj7DVt2jQmTpzI97//fVpbW8nKyuKFF17Ybx4YwHe/+10cDgfLly9Hr9dz7rnncv3113PPPfdw0UUXMXv27CGd+5prrjnsPhdccAELFy7kxz/+MQ0NDcyePZv//ve/vPTSS9xyyy1MnDixf985c+awfPly7rvvPsrKyqiurmbevHn7HbOwsJA77riDu+++m3PPPZcLL7yQnTt38uijj3LSSScNKK6SaJWVldx1112H3e93v/sdixcvZv78+Xzta18jGAzy0EMPkZ2dPeD9d999N6+99hqnnXYa3/rWt4jFYjz00EPMmDFjwO/CxIkTueeee7jjjjtoaGjg4osvJjMzk/r6el588UVuvPFGvv/97yfhEw802O9ICCHSkbThn5A2/OCkDRej2sgWRRdiaA60NMSB/PnPf9YmT56smc1mbdq0adoTTzxxwOUXAO2mm24a1jEGs6TItm3btLPPPlvLyMjQCgoKtBtuuEH7+OOPNUB74oknNE3TtJdeekkDtN///vcDju/xeLTKykpt9uzZWiQSGfbP5tNLimiapnm9Xu3WW2/VysrKNKPRqE2ePFn73e9+p6mqOmC/HTt2aKeffrpmtVoHLG3x6SVF9nr44Ye1adOmaUajUSsuLta++c1vak6nc8A+Z5xxhjZjxoz94hzsshsH+jyfdrCfzfLly7VTTjlFs1qtWlZWlnbBBRdo27Zt2+/9K1eu1ObMmaOZTCZtwoQJ2mOPPXbA3wVN07QXXnhBO/XUUzW73a7Z7XZt2rRp2k033aTt3LlzyJ/tYD+bvQ4Uw8G+IyGESDVpw6UNH8zn+TRpw8VYo2jaECscCCGEEEIIIYQQ4rBkDrcQQgghhBBCCJEEknALIYQQQgghhBBJIAm3EEIIIYQQQgiRBJJwCyGEEEIIIYQQSSAJtxBCCCGEEEIIkQSScAshhBBCCCGEEElgSHUAI0lVVdra2sjMzERRlFSHI4QQ4iimaRper5eysjJ0Orn/fTjShgshhEgng23Hj6qEu62tjfLy8lSHIYQQQvRrbm5m/PjxqQ4j7UkbLoQQIh0drh0/qhLuzMxMoO+HkpWVleJohBBCHM08Hg/l5eX9bZM4NGnDhRBCpJPBtuNHVcK9dwhaVlaWNNZCCCHSggyPHhxpw4UQQqSjw7XjMmlMCCGEEEIIIYRIAkm4hRBCCCGEEEKIJJCEWwghhBBCCCGESIKjag73YKiqSiQSSXUYYgiMRiN6vT7VYQghhEgD8XicaDSa6jDEEEg7LoQYyyTh3kckEqG+vh5VVVMdihiinJwcSkpKpPiQEEIcpTRNo6OjA5fLlepQxBGQdlwIMVZJwr2Hpmm0t7ej1+spLy8/5OLlIn1omkYgEKCrqwuA0tLSFEckhBAiFfYm20VFRdhsNkncRglpx4UQY50k3HvEYjECgQBlZWXYbLZUhyOGwGq1AtDV1UVRUZEMSxNCiGG49957+ec//8mOHTuwWq2cfPLJ/OY3v2Hq1Kn9+4RCIb73ve/x7LPPEg6HWbRoEY8++ijFxcUHPa6madx555388Y9/xOVyccopp7BkyRImT5487Jjj8Xh/sp2fnz/s44mRJe24EGIsk27cPeLxOAAmkynFkYgjsfcmiczbE0KI4Vm5ciU33XQTH374IW+88QbRaJRzzjkHv9/fv8+tt97Kv/71L55//nlWrlxJW1sbl1566SGP+9vf/pYHH3yQxx57jI8++gi73c6iRYsIhULDjnnv3365YT56STsuhBirpIf7U2QI2ugk35sQQiTGa6+9NuD50qVLKSoqYt26dZx++um43W7+/Oc/88wzz3DmmWcC8MQTT3DMMcfw4Ycf8pnPfGa/Y2qaxv33389PfvITLrroIgCeeuopiouLWbZsGZdffnlCYpe2YPSS704IMVZJD3eCBSIxqn70H6p+9B8CkViqwxFCCCGGxe12A5CXlwfAunXriEajnH322f37TJs2jYqKClatWnXAY9TX19PR0THgPdnZ2cybN++g70kVaceFEEIkkvRwCyGEEOKAVFXllltu4ZRTTmHmzJlAX3Eyk8lETk7OgH2Li4vp6Og44HH2bv/0HO9DvSccDhMOh/ufezyeI/0YQgghRMpID3eCxVWt/9+r63sHPE+Ga6+9FkVRUBQFo9FIcXExn/3sZ3n88ceHtLzZ0qVL97t4EkIIcXS76aab2LJlC88+++yIn/vee+8lOzu7/1FeXj4i55V2XAghRCJJwp1Ar21p5+z7VvY/v/aJNZz6m7d4bUt7Us977rnn0t7eTkNDA6+++ioLFy7ku9/9Lp/73OeIxWQ4nBBCiKG7+eab+fe//82KFSsYP358//aSkhIikch+6113dnZSUlJywGPt3d7Z2Tno99xxxx243e7+R3Nz8zA+zeBIOy6EECLRJOFOkNe2tPPNv66n0xMesL3DHeKbf12f1MbabDZTUlLCuHHjOOGEE/h//+//8dJLL/Hqq6+ydOlSAO677z6OPfZY7HY75eXlfOtb38Ln8wHw9ttvc9111+F2u/vvst91110A/OUvf+HEE08kMzOTkpISrrzyyv61MoUQQow9mqZx88038+KLL/LWW29RXV094PU5c+ZgNBp58803+7ft3LmTpqYm5s+ff8BjVldXU1JSMuA9Ho+Hjz766KDvMZvNZGVlDXgkk7TjQgghkkES7gSIqxp3/2sbBxp0tnfb3f/alvRhafs688wz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RJQHDLiJiIiIiIiI8oABNxEREREREVEeMOAmIiIiIiIiygMG3ERERERERER5wICbiIiIiIiIKA8YcBMRERERERHlAQNuIiIiIiIiojxgwE1ERERERESUBwy4iYiIiIiIiPKAATcRERERERFRHmiL3YBCEkIAAILBYJFbQkREc92JvuhE30Snxz6ciIhmksn243Mq4A6FQgCA2traIreEiIgoIxQKweFwFLsZMx77cCIimonO1I9LYg5dWldVFb29vbDZbJAkaVrvFQwGUVtbi66uLtjt9hy1cPbi8coej1n2eMyyw+OVvVweMyEEQqEQqqqqIMuc4XUm7MOLi8csezxm2eHxyh6PWXZyfbwm24/PqRFuWZZRU1OT0/e02+38A88Cj1f2eMyyx2OWHR6v7OXqmHFke/LYh88MPGbZ4zHLDo9X9njMspPL4zWZfpyX1ImIiIiIiIjygAE3ERERERERUR4w4J4ig8GAm2++GQaDodhNKQk8XtnjMcsej1l2eLyyx2M2O/DfMXs8ZtnjMcsOj1f2eMyyU6zjNaeKphEREREREREVCke4iYiIiIiIiPKAATcRERERERFRHjDgJiIiIiIiIsqDORtwb926FWvWrIHNZkNZWRkuu+wy7N+/f9w28Xgc119/PTweD6xWK97znvegv79/7PmXXnoJV155JWpra2EymbBgwQLcdttt497j8ccfhyRJJ936+voKsp+5VKhjBgCJRAL/+q//ivr6ehgMBjQ0NODOO+/M+z7mUqGO10c+8pFT/o0tWrSoIPuZS4X8G/vFL36BZcuWwWw2o7KyEh/96EcxPDyc933MtUIes9tvvx0LFiyAyWTCvHnz8LOf/Szv+5druThew8PDuOiii1BVVQWDwYDa2lrccMMNCAaD497n8ccfx8qVK2EwGNDS0oK77767ELs4Z7Afzw778OyxH88e+/HssA/PXkn242KOuvDCC8Vdd90l9uzZI1588UVxySWXiLq6OhEOh8e2+eQnPylqa2vFtm3bxPPPPy/Wr18vNm7cOPb8T37yE/GZz3xGPP7446K9vV3cc889wmQyie9+97tj2zz22GMCgNi/f784duzY2E1RlILuby4U6pgJIcQ73/lOsW7dOvHwww+LI0eOiKefflo8+eSTBdvXXCjU8fL7/eP+trq6uoTb7RY333xzIXc3Jwp1zJ588kkhy7K47bbbxOHDh8UTTzwhFi1aJN71rncVdH9zoVDH7Pvf/76w2Wzi3nvvFe3t7eJXv/qVsFqt4o9//GNB93e6cnG8RkZGxPe//33x3HPPiaNHj4pHHnlEzJs3T1x55ZVj2xw+fFiYzWaxZcsW8dprr4nvfve7QqPRiIceeqig+zubsR/PDvvw7LEfzx778eywD89eKfbjczbgfrOBgQEBQGzfvl0Ikfnx0+l04te//vXYNnv37hUAxI4dOyZ8n0996lPi/PPPH7t/oqMeHR3NW9uLJV/H7MEHHxQOh0MMDw/nr/FFkK/j9Wa/+93vhCRJ4ujRo7lrfJHk65h9+9vfFk1NTeO2+Z//+R9RXV2d4z0ovHwdsw0bNojPfe5z47bZsmWL2LRpU473oLBydbxuu+02UVNTM3b/C1/4gli0aNG4ba644gpx4YUX5ngP6AT249lhH5499uPZYz+eHfbh2SuFfnzOppS/WSAQAAC43W4AwK5du5BKpbB58+axbebPn4+6ujrs2LHjtO9z4j3eaPny5aisrMTb3vY2PPXUUzlufXHk65j98Y9/xOrVq/Gtb30L1dXVaGtrw+c+9znEYrE87Ulh5Ptv7ISf/OQn2Lx5M+rr63PU8uLJ1zHbsGEDurq68MADD0AIgf7+fvzmN7/BJZdckqc9KZx8HbNEIgGj0ThuG5PJhJ07dyKVSuVyFwoqF8ert7cX999/P84999yxx3bs2DHuPQDgwgsvPO0xp+lhP54d9uHZYz+ePfbj2WEfnr1S6McZcANQVRU33ngjNm3ahMWLFwMA+vr6oNfr4XQ6x21bXl4+4bytp59+Gvfddx/+4R/+YeyxyspK/OAHP8Bvf/tb/Pa3v0VtbS3OO+887N69O2/7Uwj5PGaHDx/Gk08+iT179uB3v/sdvvOd7+A3v/kNPvWpT+Vtf/Itn8frjXp7e/Hggw/i4x//eE7bXwz5PGabNm3CL37xC1xxxRXQ6/WoqKiAw+HA7bffnrf9KYR8HrMLL7wQP/7xj7Fr1y4IIfD888/jxz/+MVKpFIaGhvK2T/k03eN15ZVXwmw2o7q6Gna7HT/+8Y/Hnuvr60N5eflJ7xEMBmdF4DHTsB/PDvvw7LEfzx778eywD89eqfTjDLgBXH/99dizZw/uvffeKb/Hnj17cOmll+Lmm2/GBRdcMPb4vHnz8IlPfAKrVq3Cxo0bceedd2Ljxo249dZbc9H0osnnMVNVFZIk4Re/+AXWrl2LSy65BLfccgt++tOfluyJaj6P1xv99Kc/hdPpxGWXXTblz5kp8nnMXnvtNXz2s5/FV77yFezatQsPPfQQjh49ik9+8pO5aHrR5POYffnLX8bFF1+M9evXQ6fT4dJLL8WHP/xhAIAsl2ZXMt3jdeutt2L37t34wx/+gPb2dmzZsiXHLaTJYj+eHfbh2WM/nj3249lhH569kunHs05Cn2Wuv/56UVNTIw4fPjzu8W3btp1yzlZdXZ245ZZbxj326quvirKyMvEv//Ivk/rMz33uc2L9+vXTancx5fuYXX311aK5uXncY6+99poAIA4cOJCbnSigQv2NqaoqWlpaxI033pizthdLvo/ZVVddJd773veOe+yJJ54QAERvb29udqLACvV3lkwmRVdXl0in02NFWEqteJQQuTleb/Tmv5+zzz5bfPaznx23zZ133insdntO2k+vYz+eHfbh2WM/nj3249lhH569UurH52zAraqquP7660VVVdUpO4ATE+5/85vfjD22b9++kybc79mzR5SVlYnPf/7zk/7szZs3l1wVRSEKd8x++MMfCpPJJEKh0Nhjv//974UsyyIajeZwj/Kr0H9jJwr7vPLKK7nbiQIr1DF797vfLd73vveNe+zpp58WAERPT0+O9qYwivlbds4554yr6FkKcnW83mz79u0CgDhy5IgQIlNsZfHixeO2ufLKK1k0LYfYj2eHfXj22I9nj/14dtiHZ68U+/E5G3Bfd911wuFwiMcff3zcUgxv7Aw++clPirq6OvHoo4+K559/XmzYsEFs2LBh7PlXXnlF+Hw+cdVVV417j4GBgbFtbr31VvH73/9eHDx4ULzyyivis5/9rJBlWTzyyCMF3d9cKNQxC4VCoqamRrz3ve8Vr776qti+fbtobW0VH//4xwu6v9NVqON1wlVXXSXWrVtXkH3Ll0Ids7vuuktotVrx/e9/X7S3t4snn3xSrF69Wqxdu7ag+5sLhTpm+/fvF/fcc484cOCAePbZZ8UVV1wh3G73WMdUKnJxvP7yl7+IO++8U7zyyiviyJEj4s9//rNYsGDBuGqvJ5YT+fznPy/27t0rbr/9di4LlmPsx7PDPjx77Mezx348O+zDs1eK/ficDbgBnPJ21113jW0Ti8XEpz71KeFyuYTZbBbvete7xLFjx8aev/nmm0/5HvX19WPbfPOb3xTNzc3CaDQKt9stzjvvPPHoo48WcE9zp1DHTIhM+f7NmzcLk8kkampqxJYtW0ruynghj5ff7xcmk0n87//+b4H2Lj8Kecz+53/+RyxcuFCYTCZRWVkpPvjBD4ru7u4C7WnuFOqYvfbaa2L58uXCZDIJu90uLr30UrFv374C7mlu5OJ4Pfroo2LDhg3C4XAIo9EoWltbxT//8z+flL722GOPieXLlwu9Xi+amprGfQZNH/vx7LAPzx778eyxH88O+/DslWI/Lh1vOBERERERERHlUOmWpSMiIiIiIiKawRhwExEREREREeUBA24iIiIiIiKiPGDATURERERERJQHDLiJiIiIiIiI8oABNxEREREREVEeMOAmIiIiIiIiygMG3ERERERERER5wICbiE7ykY98BJdddlmxm0FERERTwH6caObQFrsBRFRYkiSd9vmbb74Zt912G4QQBWoRERERTRb7caLSIgl+G4nmlL6+vrH/v++++/CVr3wF+/fvH3vMarXCarUWo2lERER0BuzHiUoLU8qJ5piKioqxm8PhgCRJ4x6zWq0npaKdd955+PSnP40bb7wRLpcL5eXl+NGPfoRIJIJrrrkGNpsNLS0tePDBB8d91p49e3DxxRfDarWivLwcH/rQhzA0NFTgPSYiIpo92I8TlRYG3EQ0KT/96U/h9Xqxc+dOfPrTn8Z1112Hyy+/HBs3bsTu3btxwQUX4EMf+hCi0SgAwO/34y1veQtWrFiB559/Hg899BD6+/vxvve9r8h7QkRENPewHycqDgbcRDQpy5Ytw5e+9CW0trbipptugtFohNfrxbXXXovW1lZ85StfwfDwMF5++WUAwPe+9z2sWLEC3/jGNzB//nysWLECd955Jx577DEcOHCgyHtDREQ0t7AfJyoOFk0joklZunTp2P9rNBp4PB4sWbJk7LHy8nIAwMDAAADgpZdewmOPPXbKeWTt7e1oa2vLc4uJiIjoBPbjRMXBgJuIJkWn0427L0nSuMdOVE1VVRUAEA6H8Y53vAPf/OY3T3qvysrKPLaUiIiI3oz9OFFxMOAmorxYuXIlfvvb36KhoQFaLX9qiIiISgn7caLc4BxuIsqL66+/HiMjI7jyyivx3HPPob29HX/9619xzTXXQFGUYjePiIiIToP9OFFuMOAmoryoqqrCU089BUVRcMEFF2DJkiW48cYb4XQ6Icv86SEiIprJ2I8T5YYkhBDFbgQRERERERHRbMPLU0RERERERER5wICbiIiIiIiIKA8YcBMRERERERHlAQNuIiIiIiIiojxgwE1ERERERESUBwy4iYiIiIiIiPKAATcRERERERFRHjDgJiIiIiIiIsoDBtxEREREREREecCAm4iIiIiIiCgPGHATERERERER5QEDbiIiIiIiIqI8+P/U0OqaNq/eTAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -580,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 20, "id": "aa698e86", "metadata": {}, "outputs": [], @@ -660,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 21, "id": "02642d3b", "metadata": {}, "outputs": [ @@ -668,13 +668,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "Fitting motion model Empty: 0%| | 0/1 [00:00 0): + # Determine motion_model_used for keep_orig stars + # Filter possible motion models based on available columns + motion_models_possible = [] + for mm in self.motion_models: + required_columns = mm.fit_param_names + mm.fixed_param_names + if all(col in self.ref_table.colnames for col in required_columns): + motion_models_possible.append((mm, required_columns)) + + # Check if values are finite for required columns + motion_model_used = [] + for k in keep_orig: + for mm, req in motion_models_possible[::-1]: + if all(np.isfinite(self.ref_table[k][col]) for col in req): + motion_model_used.append(mm.name) + break + + # Assign the determined motion models + self.ref_table['motion_model_used'][keep_orig] = motion_model_used # Combine (transformed) magnitudes if 'me' in self.ref_table.colnames: @@ -1442,7 +1473,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot for ff in ['chi2_x_boot', 'chi2_y_boot']: col = Column(np.ones(len(self.ref_table)), name=ff) col.fill(np.nan) - + col[idx_good] = data_dict[ff][idx_good] self.ref_table.add_column(col) @@ -1721,7 +1752,7 @@ def = None. If not None, then this should contain an array or list of transform return - + def fit(self): """ Using the current parameter settings, match and transform all the lists @@ -1745,7 +1776,7 @@ def fit(self): """ # Create a log file of the parameters used in the fit. if self.save_path is not None: - with open(f'{self.save_path}/MosaicToRef_input_params.log', 'w',) as _log: + with open(f'{os.path.dirname(self.save_path)}/MosaicToRef_input_params.log', 'w',) as _log: logger(_log, 'Parameters used for fit: ', self.verbose) logger(_log, '------------------------- ', self.verbose) logger(_log, ' dr_tol = ' + str(self.dr_tol), self.verbose) @@ -1854,6 +1885,21 @@ def fit(self): if self.iter_callback != None: self.iter_callback(self.ref_table, nn) + # Add times into ref_table meta data + all_epochs = get_all_epochs(self.ref_table) + self.ref_table.meta['list_times'] = all_epochs + + # Update chi2 values in ref table, as motion_model_used may have changed + x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) + chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 + chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 + chi2_x = np.nansum(chi2_x_2d, axis=1) + chi2_y = np.nansum(chi2_y_2d, axis=1) + chi2_x[~np.isfinite(chi2_x_2d).any(axis=1)] = np.nan + chi2_y[~np.isfinite(chi2_y_2d).any(axis=1)] = np.nan + self.ref_table['chi2_x'] = chi2_x + self.ref_table['chi2_y'] = chi2_y + if self.save_path: with open(self.save_path, 'wb') as file: pickle.dump(self, file) diff --git a/flystar/analysis.py b/flystar/analysis.py index 55094e5..c955c2b 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -48,7 +48,8 @@ def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr3'): gaia = gaia_job.get_results() #Change new 'SOURCE_ID' column header back to lowercase 'source_id' so all subsequent functions still work: - gaia['SOURCE_ID'].name = 'source_id' + if 'SOURCE_ID' in gaia.colnames: + gaia.rename_column('SOURCE_ID', 'source_id') return gaia diff --git a/flystar/plots.py b/flystar/plots.py index 8b9587d..4728e60 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -1049,25 +1049,29 @@ def plot_gaia(gaia): return -def plot_pm_error(tab): - plt.figure(figsize=(6,6)) - plt.clf() - plt.semilogy(tab['m0'], tab['vx_err']*1e3, 'r.', label=r'$\sigma_{\mu_{\alpha *}}$', alpha=0.4) - plt.semilogy(tab['m0'], tab['vy_err']*1e3, 'b.', label=r'$\sigma_{\mu_{\delta}}$', alpha=0.4) - plt.legend() - plt.xlabel('Mag') - plt.ylabel('PM Error (mas/yr)') +def plot_pm_error(tab, save_path=None): + fig, ax = plt.subplots(1, 1, figsize=(6, 6)) + ax.semilogy(tab['m0'], tab['vx_err']*1e3, color='C0', marker='.', ls='none', ms=3, label=r'$\sigma_{\mu_{\alpha *}}$', alpha=0.3) + ax.semilogy(tab['m0'], tab['vy_err']*1e3, color='C3', marker='.', ls='none', ms=3, label=r'$\sigma_{\mu_{\delta}}$', alpha=0.3) + ax.legend() + ax.set_xlabel('Mag') + ax.set_ylabel('PM Error (mas/yr)') + plt.tight_layout() + if save_path is not None: + plt.savefig(save_path) plt.show() return -def plot_mag_error(tab): - plt.figure(figsize=(6,6)) - plt.clf() - plt.semilogy(tab['m0'], tab['m0_err'], 'r.', alpha=0.4) - plt.legend() - plt.xlabel('Mag') - plt.ylabel('Mag Error (mag)') - +def plot_mag_error(tab, save_path=None): + fig, ax = plt.subplots(1, 1, figsize=(6, 6)) + ax.semilogy(tab['m0'], tab['m0_err'], color='C0', marker='.', ls='none', alpha=0.4) + ax.legend() + ax.set_xlabel('Mag') + ax.set_ylabel('Mag Error (mag)') + plt.tight_layout() + if save_path is not None: + plt.savefig(save_path) + plt.show() return def plot_mean_residuals_by_epoch(tab): @@ -1127,17 +1131,18 @@ def plot_mean_residuals_by_epoch(tab): return -def plot_quiver_residuals_all_epochs(tab, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None): +def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=None, save_path=None): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) n_good = np.zeros(len(tab), dtype=int) dr_ref = np.zeros(len(tab), dtype=float) n_ref = np.zeros(len(tab), dtype=int) - - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) complete_times = np.array([np.unique(col[~np.isnan(col)])[0] for col in tab['t'].T]) - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(complete_times, motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(complete_times, motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(complete_times) for ee in range(tab['x'].shape[1]): xt_mod = xt_mod_all[:,ee] @@ -1146,11 +1151,19 @@ def plot_quiver_residuals_all_epochs(tab, motion_model_dict={}, unit='arcsec', s good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] - dx, dy = plot_quiver_residuals(tab['x'][:, ee], tab['y'][:, ee], - xt_mod, yt_mod, - good_idx, ref_idx, - 'Epoch {0:d}'.format(ee), - unit=unit, scale=scale, plotlim=plotlim) + dx, dy = plot_quiver_residuals( + tab['x'][:, ee], + tab['y'][:, ee], + xt_mod, + yt_mod, + good_idx, + ref_idx, + 'Epoch {0:d}'.format(ee), + unit=unit, + scale=scale, + plotlim=plotlim, + save_path=f'{save_path}/Quiver_Residual_{ee}.pdf' if save_path else None + ) # Building up average dr for a set of stars. dr = np.hypot(dx, dy) @@ -1169,8 +1182,8 @@ def plot_quiver_residuals_all_epochs(tab, motion_model_dict={}, unit='arcsec', s idx = np.where(n_ref > 0)[0] dr_ref_avg[idx] = dr_ref[idx] / n_ref[idx] - hdr = '{name:>16s} {mag:>5s} {dr:>6s} {x:>6s} {y:>6s} {r:>6s}' - fmt = '{name:16s} {mag:5.2f} {dr:6.4f} {x:6.3f} {y:6.3f} {r:6.3f}' + # hdr = '{name:>16s} {mag:>5s} {dr:>6s} {x:>6s} {y:>6s} {r:>6s}' + # fmt = '{name:16s} {mag:5.2f} {dr:6.4f} {x:6.3f} {y:6.3f} {r:6.3f}' # print() # print('##########') @@ -1194,7 +1207,7 @@ def plot_quiver_residuals_all_epochs(tab, motion_model_dict={}, unit='arcsec', s return -def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None, scale_orig=None, cte_fit=None, mlim=15): +def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', scale=None, plotlim=None, scale_orig=None, cte_fit=None, mlim=15, save_path=None): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) @@ -1202,15 +1215,16 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic dr_ref = np.zeros(len(tab), dtype=float) n_ref = np.zeros(len(tab), dtype=int) - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) - + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) + for ee in range(tab['x'].shape[1]): dt = tab['t'][:, ee] - tab['t0'] xt_mod = xt_mod_all[ee] yt_mod = yt_mod_all[ee] - + good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] @@ -1220,14 +1234,14 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic xt_mod, yt_mod, good_idx, ref_idx, 'Epoch {0:d}'.format(ee), - unit=unit, scale=scale, plotlim=plotlim) + unit=unit, scale=scale, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_{ee}.pdf' if save_path else None) plot_quiver_residuals_orig(tab['x'][:, ee], tab['y'][:, ee], xt_mod, yt_mod, good_idx, ref_idx, tab['x_orig'][:, ee], tab['y_orig'][:, ee], da, 'Epoch {0:d}'.format(ee), - scale=scale_orig, plotlim=plotlim) + scale=scale_orig, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_Orig_{ee}.pdf' if save_path else None) plot_mag_scatter(tab['m'][:, ee], tab['m0'], tab['m0_err'], @@ -1237,7 +1251,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic good_idx, ref_idx, 'Epoch {0:d}'.format(ee), da=da, xorig=tab['x_orig'][:, ee], yorig=tab['y_orig'][:, ee], - cte_fit=cte_fit, mlim=mlim) + cte_fit=cte_fit, mlim=mlim, save_path=f'{save_path}/Mag_Scatter_{ee}.pdf' if save_path else None) plot_y_scatter(tab['m'][:, ee], tab['m0'], tab['m0_err'], @@ -1247,7 +1261,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic good_idx, ref_idx, 'Epoch {0:d}'.format(ee), da=da, xorig=tab['x_orig'][:, ee], yorig=tab['y_orig'][:, ee], - cte_fit=cte_fit, mlim=mlim) + cte_fit=cte_fit, mlim=mlim, save_path=f'{save_path}/Y_Scatter_{ee}.pdf' if save_path else None) # plot_quiver_residuals_orig_angle_xy(tab['x'][:, ee], tab['y'][:, ee], # xt_mod, yt_mod, @@ -1258,7 +1272,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic # plot_quiver_residuals_vs_pos_err(dx, dy, good_idx, ref_idx, # 1e3 * tab['xe'][:, ee], 1e3 * tab['ye'][:, ee], # 'positional err (mas)', 'Epoch {0:d}'.format(ee), da=da) - + # Building up average dr for a set of stars. dr = np.hypot(dx, dy) @@ -1271,13 +1285,13 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic dr_good_avg = np.zeros(len(tab), dtype=float) idx = np.where(n_good > 0)[0] dr_good_avg[idx] = dr_good[idx] / n_good[idx] - + dr_ref_avg = np.zeros(len(tab), dtype=float) idx = np.where(n_ref > 0)[0] dr_ref_avg[idx] = dr_ref[idx] / n_ref[idx] - hdr = '{name:>16s} {mag:>5s} {dr:>6s} {x:>6s} {y:>6s} {r:>6s}' - fmt = '{name:16s} {mag:5.2f} {dr:6.4f} {x:6.3f} {y:6.3f} {r:6.3f}' + # hdr = '{name:>16s} {mag:>5s} {dr:>6s} {x:>6s} {y:>6s} {r:>6s}' + # fmt = '{name:16s} {mag:5.2f} {dr:6.4f} {x:6.3f} {y:6.3f} {r:6.3f}' # print() # print('##########') @@ -1301,7 +1315,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, motion_model_dic return -def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None, scale_orig=None): +def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arcsec', scale=None, plotlim=None, scale_orig=None): m_t_list = [] x_t_list = [] y_t_list = [] @@ -1314,9 +1328,10 @@ def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, motion_mo da_list = [] ntrans = len(tab_list) - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for mm in range(ntrans): tab = tab_list[mm] @@ -1790,7 +1805,7 @@ def T_line(m, a, b): def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, - unit='pixel', scale=None, plotlim=None): + unit='pixel', scale=None, plotlim=None, save_path=None): """ unit : str 'pixel' or 'arcsec' @@ -1827,23 +1842,24 @@ def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, unit2 = 'mas' - plt.figure(101, figsize=(6,6)) - plt.clf() - q = plt.quiver(x_ref[good_idx], y_ref[good_idx], dx[good_idx], dy[good_idx], + fig, ax = plt.subplots(1, 1, figsize=(6, 6)) + q = ax.quiver(x_ref[good_idx], y_ref[good_idx], dx[good_idx], dy[good_idx], color='black', scale=quiv_scale, angles='xy', alpha=0.5) - plt.quiver(x_ref[good_idx][ref_idx], y_ref[good_idx][ref_idx], dx[good_idx][ref_idx], dy[good_idx][ref_idx], + ax.quiver(x_ref[good_idx][ref_idx], y_ref[good_idx][ref_idx], dx[good_idx][ref_idx], dy[good_idx][ref_idx], color='red', scale=quiv_scale, angles='xy') - plt.quiverkey(q, 0.5, 0.85, quiv_label_val, quiv_label, + ax.quiverkey(q, 0.5, 0.85, quiv_label_val, quiv_label, coordinates='figure', labelpos='E', color='green') - plt.xlabel('X (ref ' + unit + ')') - plt.ylabel('Y (ref ' + unit + ')') - plt.title(title) - plt.axis('equal') + ax.set_xlabel('X (ref ' + unit + ')') + ax.set_ylabel('Y (ref ' + unit + ')') + ax.set_title(title) + ax.axis('equal') if plotlim is not None: - plt.xlim(-1 * plotlim, plotlim) - plt.ylim(-1 * plotlim, plotlim) + ax.set_xlim(-1 * plotlim, plotlim) + ax.set_ylim(-1 * plotlim, plotlim) + plt.tight_layout() + if save_path: + plt.savefig(save_path) plt.show() - plt.pause(1) str_fmt = 'Residuals (mean, std): dx = {0:7.3f} +/- {1:7.3f} {5:s} dy = {2:7.3f} +/- {3:7.3f} {5:s} for {4:s} stars' if len(ref_idx) > 1: @@ -1859,7 +1875,7 @@ def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, return (dx, dy) -def plot_quiver_residuals_magcolor_all_epochs(tab, motion_model_dict={}, unit='arcsec', scale=None, plotlim=None, lower_mag=18, upper_mag=13): +def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, plotlim=None, lower_mag=18, upper_mag=13): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) n_good = np.zeros(len(tab), dtype=int) @@ -1869,9 +1885,10 @@ def plot_quiver_residuals_magcolor_all_epochs(tab, motion_model_dict={}, unit='a idx = np.where((tab['m0'] < lower_mag) & (tab['m0'] > upper_mag))[0] tab = tab[idx] - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ee in range(tab['x'].shape[1]): dt = tab['t'][:, ee] - tab['t0'] @@ -1959,39 +1976,36 @@ def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_id # norm=norm, # orientation='horizontal') - plt.figure(101, figsize=(6,6)) - plt.clf() - q = plt.quiver(x_ref[good_idx], y_ref[good_idx], dx[good_idx], dy[good_idx], + fig, ax=plt.subplots(1, 1, figsize=(6, 6)) + q = ax.quiver(x_ref[good_idx], y_ref[good_idx], dx[good_idx], dy[good_idx], color=cm(norm(mag[good_idx])), scale=quiv_scale, angles='xy', alpha=0.8) - plt.quiverkey(q, 0.5, 0.85, quiv_label_val, quiv_label, + ax.quiverkey(q, 0.5, 0.85, quiv_label_val, quiv_label, coordinates='figure', labelpos='E', color='green') - plt.colorbar(sm) - plt.xlabel('X (ref ' + unit + ')') - plt.ylabel('Y (ref ' + unit + ')') - plt.title(title + ', Good') - plt.axis('equal') + fig.colorbar(sm, ax=ax) + ax.set_xlabel('X (ref ' + unit + ')') + ax.set_ylabel('Y (ref ' + unit + ')') + ax.set_title(title + ', Good') + ax.axis('equal') if plotlim is not None: - plt.xlim(-1 * plotlim, plotlim) - plt.ylim(-1 * plotlim, plotlim) + ax.set_xlim(-1 * plotlim, plotlim) + ax.set_ylim(-1 * plotlim, plotlim) + plt.tight_layout() plt.show() - plt.pause(1) - plt.figure(102, figsize=(6,6)) - plt.clf() - q = plt.quiver(x_ref[good_idx][ref_idx], y_ref[good_idx][ref_idx], dx[good_idx][ref_idx], dy[good_idx][ref_idx], + fig, ax = plt.subplots(1, 1, figsize=(6,6)) + q = ax.quiver(x_ref[good_idx][ref_idx], y_ref[good_idx][ref_idx], dx[good_idx][ref_idx], dy[good_idx][ref_idx], color=cm(norm(mag[good_idx][ref_idx])), scale=quiv_scale, angles='xy', alpha=0.8) - plt.quiverkey(q, 0.5, 0.85, quiv_label_val, quiv_label, + ax.quiverkey(q, 0.5, 0.85, quiv_label_val, quiv_label, coordinates='figure', labelpos='E', color='green') - plt.colorbar(sm) - plt.xlabel('X (ref ' + unit + ')') - plt.ylabel('Y (ref ' + unit + ')') - plt.title(title + ', Ref') - plt.axis('equal') + fig.colorbar(sm, ax=ax) + ax.set_xlabel('X (ref ' + unit + ')') + ax.set_ylabel('Y (ref ' + unit + ')') + ax.set_title(title + ', Ref') + ax.axis('equal') if plotlim is not None: - plt.xlim(-1 * plotlim, plotlim) - plt.ylim(-1 * plotlim, plotlim) + ax.set_xlim(-1 * plotlim, plotlim) + ax.set_ylim(-1 * plotlim, plotlim) plt.show() - plt.pause(1) str_fmt = 'Residuals (mean, std): dx = {0:7.3f} +/- {1:7.3f} {5:s} dy = {2:7.3f} +/- {3:7.3f} {5:s} for {4:s} stars' if len(ref_idx) > 1: @@ -2010,7 +2024,7 @@ def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_id def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, x_orig, y_orig, da, title, - scale=None, plotlim=None): + scale=None, plotlim=None, save_path=None): """ unit : str 'pixel' or 'arcsec' @@ -2033,8 +2047,8 @@ def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, dy /= 0.04 # Residual modulus - r_good = np.hypot(dx[good_idx], dy[good_idx]) - r_ref = np.hypot(dx[good_idx][ref_idx], dy[good_idx][ref_idx]) + # r_good = np.hypot(dx[good_idx], dy[good_idx]) + # r_ref = np.hypot(dx[good_idx][ref_idx], dy[good_idx][ref_idx]) # Residual angle agood = angle_from_xy(dx[good_idx], dy[good_idx]) @@ -2050,21 +2064,23 @@ def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, dx_ref_new, dy_ref_new = rotate(dx[good_idx][ref_idx], dy[good_idx][ref_idx], -da) print('Rotation angle between HST and Gaia (deg): ', da) - plt.figure(102, figsize=(6,6)) - plt.clf() - q = plt.quiver(x_orig[good_idx], y_orig[good_idx], dx_good_new, dy_good_new, + fig, ax = plt.subplots(1, 1, figsize=(6, 6)) + q = ax.quiver(x_orig[good_idx], y_orig[good_idx], dx_good_new, dy_good_new, color='black', scale=scale, angles='xy', alpha=0.5) - plt.quiver(x_orig[good_idx][ref_idx], y_orig[good_idx][ref_idx], dx_ref_new, dy_ref_new, + ax.quiver(x_orig[good_idx][ref_idx], y_orig[good_idx][ref_idx], dx_ref_new, dy_ref_new, color='red', scale=scale, angles='xy') - plt.quiverkey(q, 0.5, 0.85, 0.3, '0.3 pix', + ax.quiverkey(q, 0.5, 0.85, 0.3, '0.3 pix', coordinates='figure', labelpos='E', color='green') - plt.xlabel('X (ref pix)') - plt.ylabel('Y (ref pix)') - plt.title(title) - plt.axis('equal') + ax.set_xlabel('X (ref pix)') + ax.set_ylabel('Y (ref pix)') + ax.set_title(title) + ax.axis('equal') if plotlim is not None: - plt.xlim(-1 * plotlim, plotlim) - plt.ylim(-1 * plotlim, plotlim) + ax.set_xlim(-1 * plotlim, plotlim) + ax.set_ylim(-1 * plotlim, plotlim) + plt.tight_layout() + if save_path: + plt.savefig(save_path) plt.show() plt.pause(1) @@ -2169,7 +2185,7 @@ def plot_quiver_residuals_orig_angle_xy(x_t, y_t, x_ref, y_ref, good_idx, ref_id return -def plot_chi2_dist(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, boot_err=False): +def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in @@ -2178,9 +2194,10 @@ def plot_chi2_dist(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, boot_ chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ii in range(len(tab)): # Ignore the NaNs @@ -2254,7 +2271,7 @@ def plot_chi2_dist(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, boot_ return -def plot_chi2_reduced_dist(tab, Ndetect, motion_model_dict={}, xlim=8, n_bins=50, boot_err=False): +def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in @@ -2263,9 +2280,10 @@ def plot_chi2_reduced_dist(tab, Ndetect, motion_model_dict={}, xlim=8, n_bins=50 chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ii in range(len(tab)): # Ignore the NaNs @@ -2333,7 +2351,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, motion_model_dict={}, xlim=8, n_bins=50 return -def plot_chi2_dist_per_filter(tab, Ndetect, motion_model_dict={}, xlim=40, n_bins=50, filter=None, boot_err=False): +def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in @@ -2342,9 +2360,10 @@ def plot_chi2_dist_per_filter(tab, Ndetect, motion_model_dict={}, xlim=40, n_bin chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ii in range(len(tab)): # Ignore the NaNs @@ -2425,7 +2444,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, motion_model_dict={}, xlim=40, n_bin return -def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14,21], ylim = [-1, 1], target_idx = 0, motion_model_dict={}, boot_err=False): +def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14, 21], ylim=[-1, 1], target_idx=0, boot_err=False): """ tab = flystar table Ndetect = Number of epochs star detected in @@ -2438,9 +2457,10 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14,21], ylim = [-1, 1], target_ sigY_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) m_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ii in range(len(tab['xe'])): # Ignore the NaNs @@ -2748,7 +2768,7 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil return -def plot_stars(tab, star_names, motion_model_dict={}, NcolMax=2, epoch_array = None, figsize=(15,25), color_time=False, boot_err=False): +def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), color_time=False, boot_err=False): """ Plot a set of stars positions, flux and residuals over time. @@ -2776,11 +2796,13 @@ def rs(x): x = tab['x0'] y = tab['y0'] r = np.hypot(x, y) - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] cont_times = np.arange(np.min(tab['t'][i_all_detected]), np.max(tab['t'][i_all_detected]), 0.01) - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) - xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) + # xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) + xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.infer_positions(cont_times) for i in range(Nstars): starName = star_names[i] @@ -3167,7 +3189,7 @@ def rs(x): return -def plot_stars_nfilt(tab, star_names, motion_model_dict={}, NcolMax=2, epoch_array_list = None, color_list = None, +def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_list = None, figsize=(15,25), color_time=False, resTicRng=None, save_name=None, boot_err=False): """ Plot a set of stars positions, flux and residuals over time. @@ -3183,9 +3205,10 @@ def plot_stars_nfilt(tab, star_names, motion_model_dict={}, NcolMax=2, epoch_arr def rs(x): return x.reshape(len(x)) - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) Nstars = len(star_names) Ncols = 3 * np.min([Nstars, NcolMax]) @@ -3201,11 +3224,13 @@ def rs(x): x = tab['x0'] y = tab['y0'] r = np.hypot(x, y) - motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] cont_times = np.arange(np.min(tab['t'][i_all_detected]), np.max(tab['t'][i_all_detected]), 0.01) - xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) - xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) + # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) + xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) + # xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) + xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.infer_positions(cont_times) for i in range(Nstars): for ea, epoch_array in enumerate(epoch_array_list): diff --git a/flystar/startables.py b/flystar/startables.py index 0952e15..d934bac 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -893,7 +893,7 @@ def infer_positions(self, times, fill_value=np.nan): Parameters ---------- times : array_like - Times at which to predict positions. + Times at which to predict positions. Scalar, or (N_times,) array, or (N_stars, N_times) array. fill_value : float, optional Value to use for missing data, by default np.nan @@ -928,9 +928,8 @@ def infer_positions(self, times, fill_value=np.nan): unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} - + # Prepare fit_params, fixed_params, fit_param_errs for each star - for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance motion_model_instance = motion_model.motion_model_map()[unique_motion_model]() @@ -949,8 +948,8 @@ def infer_positions(self, times, fill_value=np.nan): if param_name + '_mm' in self.colnames: col_name = param_name + '_mm' fixed_params[param_name] = self[col_name][unique_index] - - # TODO: vectorize obsLocation handling in motion models + + # TODO: vectorize obsLocation handling in motion models? if (param_name == 'obsLocation'): assert np.unique(fixed_params[param_name]).size == 1, \ "infer_positions: obsLocation fixed parameter has different values for different stars. Vectorized handling not implemented yet." diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 3937ea6..d55e81e 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -13,7 +13,7 @@ def test_MosaicSelfRef(): """ Cross-match and align 4 starlists using the OO version of mosaic lists. """ - list_files = ['A.lis', 'B.lis', 'C.lis', 'D.lis'] + list_files = ['test_data/A.lis', 'test_data/B.lis', 'test_data/C.lis', 'test_data/D.lis'] lists = [starlists.StarList.from_lis_file(lf) for lf in list_files] ########## @@ -86,9 +86,9 @@ def test_MosaicSelfRef_vel_tconst(): """ Cross-match and align 4 starlists using the OO version of mosaic lists. The 4 lists are all taken at the same time (so 0 velocities should result). - + """ - list_files = ['A.lis', 'B.lis', 'C.lis', 'D.lis'] + list_files = ['test_data/A.lis', 'test_data/B.lis', 'test_data/C.lis', 'test_data/D.lis'] lists = [starlists.StarList.from_lis_file(lf) for lf in list_files] ########## @@ -120,7 +120,7 @@ def test_MosaicSelfRef_vel_tconst(): # Check that we have some matched stars... should be at least 35 stars # that are detected in all 4 starlists. idx = np.where(msc.ref_table['n_detect'] == 4)[0] - assert len(idx) > 35 + assert len(idx) > 35 # Check that the transformation error isn't too big valid_err = np.isfinite(msc.ref_table['x0_err']) & np.isfinite(msc.ref_table['y0_err']) & np.isfinite(msc.ref_table['m0_err']) @@ -139,22 +139,21 @@ def test_MosaicSelfRef_vel_tconst(): def test_MosaicSelfRef_vel(): """ Cross-match and align 4 starlists using the OO version of mosaic lists. - """ - list_files = ['A.lis', 'B.lis', 'C.lis', 'D.lis'] + list_files = ['test_data/A.lis', 'test_data/B.lis', 'test_data/C.lis', 'test_data/D.lis'] lists = [starlists.StarList.from_lis_file(lf) for lf in list_files] # Modify the times so that we get velocities out. - lists[0].meta['list_time'] = 2001.4 + lists[0].meta['list_times'] = 2001.4 lists[0]['t'] = 2001.4 - - lists[1].meta['list_time'] = 2002.4 + + lists[1].meta['list_times'] = 2002.4 lists[1]['t'] = 2002.4 - - lists[2].meta['list_time'] = 2003.4 + + lists[2].meta['list_times'] = 2003.4 lists[2]['t'] = 2003.4 - - lists[3].meta['list_time'] = 2004.4 + + lists[3].meta['list_times'] = 2004.4 lists[3]['t'] = 2004.4 @@ -168,7 +167,7 @@ def test_MosaicSelfRef_vel(): verbose=False) msc.fit() - + # Check some of the output quantities on the final table. assert 'x0' in msc.ref_table.colnames assert 'x0_err' in msc.ref_table.colnames @@ -197,7 +196,7 @@ def test_MosaicSelfRef_vel(): for ii in range(4): np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) - + plt.clf() plt.plot(msc.ref_table['vx'], msc.ref_table['vy'], @@ -208,21 +207,21 @@ def test_MosaicSelfRef_vel(): def test_MosaicToRef(): make_fake_starlists_poly1(seed=42) - ref_file = 'random_ref.fits' - list_files = ['random_0.fits', - 'random_1.fits', - 'random_2.fits', - 'random_3.fits', - 'random_4.fits', - 'random_5.fits', - 'random_6.fits', - 'random_7.fits'] + ref_file = 'test_data/random_ref.fits' + list_files = ['test_data/random_0.fits', + 'test_data/random_1.fits', + 'test_data/random_2.fits', + 'test_data/random_3.fits', + 'test_data/random_4.fits', + 'test_data/random_5.fits', + 'test_data/random_6.fits', + 'test_data/random_7.fits'] ref_list = Table.read(ref_file) # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 - + lists = [starlists.StarList.read(lf) for lf in list_files] msc = align.MosaicToRef(ref_list, lists, iters=2, @@ -265,15 +264,15 @@ def test_MosaicToRef(): def test_MosaicToRef_p0_vel(): make_fake_starlists_poly0_vel(seed=42) - ref_file = 'random_vel_ref.fits' - list_files = ['random_vel_p0_0.fits', - 'random_vel_p0_1.fits', - 'random_vel_p0_2.fits', - 'random_vel_p0_3.fits'] - #'random_vel_4.fits', - #'random_vel_5.fits', - #'random_vel_6.fits', - #'random_vel_7.fits'] + ref_file = 'test_data/random_vel_ref.fits' + list_files = ['test_data/random_vel_p0_0.fits', + 'test_data/random_vel_p0_1.fits', + 'test_data/random_vel_p0_2.fits', + 'test_data/random_vel_p0_3.fits'] + #'test_data/random_vel_4.fits', + #'test_data/random_vel_5.fits', + #'test_data/random_vel_6.fits', + #'test_data/random_vel_7.fits'] ref_list = Table.read(ref_file) @@ -331,15 +330,15 @@ def test_MosaicToRef_p0_vel(): def test_MosaicToRef_vel(): make_fake_starlists_poly1_vel(seed=42) - ref_file = 'random_vel_ref.fits' - list_files = ['random_vel_0.fits', - 'random_vel_1.fits', - 'random_vel_2.fits', - 'random_vel_3.fits'] - #'random_vel_4.fits', - #'random_vel_5.fits', - #'random_vel_6.fits', - #'random_vel_7.fits'] + ref_file = 'test_data/random_vel_ref.fits' + list_files = ['test_data/random_vel_0.fits', + 'test_data/random_vel_1.fits', + 'test_data/random_vel_2.fits', + 'test_data/random_vel_3.fits'] + #'test_data/random_vel_4.fits', + #'test_data/random_vel_5.fits', + #'test_data/random_vel_6.fits', + #'test_data/random_vel_7.fits'] ref_list = Table.read(ref_file) @@ -370,14 +369,14 @@ def test_MosaicToRef_vel(): assert msc.ref_table['use_in_trans'].shape == msc.ref_table['x0'].shape assert msc.ref_table['used_in_trans'].shape == msc.ref_table['x'].shape - # The velocities should be almost the same as the input + # The velocities should be almost the same as the input # velocities since update_ref_orig == False. assert (msc.ref_table['name']==ref_list['name']).all() np.testing.assert_allclose(msc.ref_table['vx'], ref_list['vx'], rtol=1e-5) np.testing.assert_allclose(msc.ref_table['vy'], ref_list['vy'], rtol=1e-5) ########## - # Align and let velocities be free. + # Align and let velocities be free. ########## msc.update_ref_orig = 'periter' msc.fit() @@ -397,23 +396,23 @@ def test_MosaicToRef_vel(): def test_MosaicToRef_acc(): make_fake_starlists_poly1_acc(seed=42) - ref_file = 'random_acc_ref.fits' - list_files = ['random_acc_0.fits', - 'random_acc_1.fits', - 'random_acc_2.fits', - 'random_acc_3.fits', - 'random_acc_4.fits', - 'random_acc_5.fits', - 'random_acc_6.fits', - 'random_acc_7.fits'] + ref_file = 'test_data/random_acc_ref.fits' + list_files = ['test_data/random_acc_0.fits', + 'test_data/random_acc_1.fits', + 'test_data/random_acc_2.fits', + 'test_data/random_acc_3.fits', + 'test_data/random_acc_4.fits', + 'test_data/random_acc_5.fits', + 'test_data/random_acc_6.fits', + 'test_data/random_acc_7.fits'] ref_list = Table.read(ref_file) # Convert velocities to arcsec/yr - ref_list['vx'] *= 1e-3 - ref_list['vy'] *= 1e-3 - ref_list['vx_err'] *= 1e-3 - ref_list['vy_err'] *= 1e-3 + ref_list['vx0'] *= 1e-3 + ref_list['vy0'] *= 1e-3 + ref_list['vx0_err'] *= 1e-3 + ref_list['vy0_err'] *= 1e-3 # Convert accelerations to arcsec/yr**2 ref_list['ax'] *= 1e-3 @@ -423,7 +422,7 @@ def test_MosaicToRef_acc(): # Switch our list to a "increasing to the West" list. ref_list['x0'] *= -1.0 - ref_list['vx'] *= -1.0 + ref_list['vx0'] *= -1.0 ref_list['ax'] *= -1.0 lists = [starlists.StarList.read(lf) for lf in list_files] @@ -444,7 +443,7 @@ def test_MosaicToRef_acc(): assert msc.ref_table['use_in_trans'].shape == msc.ref_table['x0'].shape assert msc.ref_table['used_in_trans'].shape == msc.ref_table['x'].shape - # The velocities should be almost the same as the input + # The velocities should be almost the same as the input # velocities since update_ref_orig == False. i_orig, i_fit = [],[] for i,star in enumerate(ref_list["name"]): @@ -455,7 +454,7 @@ def test_MosaicToRef_acc(): np.testing.assert_allclose(msc.ref_table['ay'][i_fit], ref_list['ay'][i_orig], rtol=1e-5) ########## - # Align and let velocities be free. + # Align and let velocities be free. ########## msc.update_ref_orig = 'periter' msc.fit() @@ -486,7 +485,7 @@ def test_MosaicToRef_acc(): ax1.set_xlabel('Input ax') ax1.set_ylabel('Ref Table ax') ax1.set_title('Acceleration in X') - + ax2.plot(ref_list['ay'][i_orig], msc.ref_table['ay'][i_fit], '.') ax2.plot([ay_min, ay_max], [ay_min, ay_max], color='C3') ax2.plot([ay_min, ay_max], [ay_min - atol, ay_max - atol], ls='--', color='C3') @@ -504,10 +503,10 @@ def test_MosaicToRef_acc(): def test_MosaicToRef_hst_me(): """ - Test Casey's issue with 'me' not getting propogated + Test Casey's issue with 'me' not getting propogated from the input starlists to the output table. - Use data from MB10-364 microlensing target for the test. + Use data from MB10-364 microlensing target for the test. """ # Target RA and Dec (MOA data download) # ra = '17:57:05.401' @@ -517,6 +516,10 @@ def test_MosaicToRef_hst_me(): my_gaia = Table.read('mb10364_data/my_gaia.fits') my_gaia['me'] = 0.01 + my_gaia.rename_columns( + ['x0e', 'y0e'], + ['x0_err', 'y0_err'] + ) # Gather the list of starlists. For first pass, don't modify the starlists. # Loop through the observations and read them in, in prep for alignment with Gaia epochs = [2011.83, 2012.73, 2013.81] @@ -560,15 +563,15 @@ def test_MosaicToRef_hst_me(): def test_bootstrap(): """ - Test to make sure calc_bootstrap_error() call is working + Test to make sure calc_bootstrap_error() call is working properly (e.g., only called when user calls calc_bootstrap_error, n_boot param for calc_bootstrap_error only, boot_epochs_min working, etc.) """ # Read in starlists for MosaicToRef - ref = Table.read('ref_vel.lis', format='ascii') - list1 = Table.read('E.lis', format='ascii') - list2 = Table.read('F.lis', format='ascii') + ref = Table.read('test_data/ref_vel.lis', format='ascii') + list1 = Table.read('test_data/E.lis', format='ascii') + list2 = Table.read('test_data/F.lis', format='ascii') list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) @@ -669,22 +672,21 @@ def test_bootstrap(): def test_calc_vel_in_bootstrap(): """ Check calc_vel_in_bootstrap performance in calc_bootstrap_errors() - - Only calculate velocity bootstrap (e.g., bootstrap over epochs and + + Only calculate velocity bootstrap (e.g., bootstrap over epochs and calculating proper motions) if calc_vel_in_bootstrap=True. """ import copy # Define match parameters - ref = Table.read('ref_vel.lis', format='ascii') - - list1 = Table.read('E.lis', format='ascii') - list2 = Table.read('F.lis', format='ascii') + ref = Table.read('test_data/ref_vel.lis', format='ascii') + list1 = Table.read('test_data/E.lis', format='ascii') + list2 = Table.read('test_data/F.lis', format='ascii') list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) - + # Set parameters for alignment transModel = transforms.PolyTransform trans_args = {'order':2} @@ -736,19 +738,19 @@ def test_calc_vel_in_bootstrap(): assert 'xe_boot' in match.ref_table.keys() assert np.sum(np.isnan(match.ref_table['xe_boot'])) == 0 assert 'vx_err_boot' not in match.ref_table.keys() - + return def test_transform_xym(): """ Test to make sure transforms are being done to mags only - if mag_trans = True. This can cause subtle bugs + if mag_trans = True. This can cause subtle bugs otherwise """ #---Align 1: self.mag_Trans = False---# - ref = Table.read('ref_vel.lis', format='ascii') - list1 = Table.read('E.lis', format='ascii') - list2 = Table.read('F.lis', format='ascii') + ref = Table.read('test_data/ref_vel.lis', format='ascii') + list1 = Table.read('test_data/E.lis', format='ascii') + list2 = Table.read('test_data/F.lis', format='ascii') list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) @@ -785,7 +787,7 @@ def test_transform_xym(): match1.fit() match1.calc_bootstrap_errors(n_boot=n_boot) - # Make sure all transformations have mag_offset = 0 + # Make sure all transformations have mag_offset = 0 trans_list = match1.trans_list for ii in trans_list: @@ -794,7 +796,7 @@ def test_transform_xym(): # Check that no mag transformation has been applied to m col in ref_table tab1 = match1.ref_table assert np.all(tab1['m'] == tab1['m_orig']) - + # Check me_boost == 0 or really small (should be the case # since we don't transform mags) assert np.isclose(np.max(tab1['me_boot']), 0, rtol=10**-5) @@ -827,15 +829,15 @@ def test_transform_xym(): for ii in trans_list2: assert ii.mag_offset > 20 - # Make sure final table mags have transform applied (i.e, + # Make sure final table mags have transform applied (i.e, tab2 = match2.ref_table assert np.all(tab2['m'] != tab2['m_orig']) - + # Check me_boost > 0 assert np.min(tab2['me_boot']) > 10**-3 print('Done mag_trans = True case') - + return def test_MosaicToRef_mag_bug(): @@ -847,9 +849,9 @@ def test_MosaicToRef_mag_bug(): ref_list = starlists.StarList.read('random_vel_0.fits') lists = [ref_list] - msc = align.MosaicToRef(ref_list, lists, + msc = align.MosaicToRef(ref_list, lists, mag_trans=True, - iters=1, + iters=1, dr_tol=[0.2], dm_tol=[1], outlier_tol=None, trans_class=transforms.PolyTransform, @@ -874,7 +876,7 @@ def test_MosaicToRef_mag_bug(): def test_masked_cols(): """ Test to make sure analysis.prepare_gaia_for_flystar - produces an astropy.table.Table, NOT a masked column + produces an astropy.table.Table, NOT a masked column table. MosaicToRef cannot handle masked column tables. Also make sure this example works, since we use it for the examples @@ -916,10 +918,10 @@ def test_masked_cols(): msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=2, dr_tol=[0.2, 0.1], dm_tol=[1, 1], trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}, {'order': 1}], + trans_args=[{'order': 1}, {'order': 1}], motion_models=['Linear'], use_ref_new=False, - update_ref_orig=False, + update_ref_orig=False, mag_trans=True, init_guess_mode='name', verbose=True) @@ -941,7 +943,7 @@ def make_fake_starlists_shifts(): # Save original positions as reference (1st) list. fmt = '{0:10s} {1:5.2f} 2015.0 {2:9.4f} {3:9.4f} 0 0 0 0\n' - _out = open('random_0.lis', 'w') + _out = open('test_data/random_0.lis', 'w') for ii in range(N_stars): _out.write(fmt.format(name[ii], m[ii], x[ii], y[ii])) _out.close() @@ -966,7 +968,7 @@ def make_fake_starlists_shifts(): mnew = m + np.random.randn(N_stars) * 0.05 - _out = open('random_shift_{0:d}.lis'.format(ss+1), 'w') + _out = open('test_data/random_shift_{0:d}.lis'.format(ss+1), 'w') for ii in range(N_stars): _out.write(fmt.format(name[ii], mnew[ii], xnew[ii], ynew[ii])) _out.close() @@ -977,7 +979,7 @@ def make_fake_starlists_poly1(seed=-1): # If seed >=0, then set random seed to that value if seed >= 0: np.random.seed(seed=seed) - + N_stars = 200 x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) @@ -992,19 +994,19 @@ def make_fake_starlists_poly1(seed=-1): x0e = np.abs(x0e) y0e = np.abs(y0e) m0e = np.abs(m0e) - + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] # Make an StarList lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, t0], names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', 't0')) - + sdx = np.argsort(m0) lis = lis[sdx] # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('random_ref.fits', overwrite=True) + lis.write('test_data/random_ref.fits', overwrite=True) ########## # Shifts @@ -1020,14 +1022,14 @@ def make_fake_starlists_poly1(seed=-1): [[-13.0, 0.99, 1e-5], [ 150, 2e-5, 1.002]], [[ 94.0, 1.00, 9e-6], [-182.0, 0.0, 0.99]]] mag_trans = [0.1, 0.4, 0.0, -0.3, 0.2, 0.0, -0.1, -0.3] - + # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix shift = [1.0, 1.0] # pix for ss in range(len(times)): dt = times[ss] - lis['t0'] - + x = lis['x0'] y = lis['y0'] t = np.ones(N_stars) * times[ss] @@ -1055,7 +1057,7 @@ def make_fake_starlists_poly1(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write('test_data/random_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans,mag_trans) @@ -1063,7 +1065,7 @@ def make_fake_starlists_poly0_vel(seed=-1): # If seed >=0, then set random seed to that value if seed >= 0: np.random.seed(seed=seed) - + N_stars = 200 x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) @@ -1084,21 +1086,21 @@ def make_fake_starlists_poly0_vel(seed=-1): m0e = np.abs(m0e) vxe = np.abs(vxe) vye = np.abs(vye) - + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] # Make an StarList lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', 'vx', 'vx_err', 'vy', 'vy_err', 't0')) - + sdx = np.argsort(m0) lis = lis[sdx] # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('random_vel_ref.fits', overwrite=True) - + lis.write('test_data/random_vel_ref.fits', overwrite=True) + ########## # Propogate to new times and distort. ########## @@ -1117,10 +1119,10 @@ def make_fake_starlists_poly0_vel(seed=-1): # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix shift = [1.0, 1.0] # pix - + for ss in range(len(times)): dt = times[ss] - lis['t0'] - + x = lis['x0'] + (lis['vx']/1e3) * dt y = lis['y0'] + (lis['vy']/1e3) * dt t = np.ones(N_stars) * times[ss] @@ -1148,7 +1150,7 @@ def make_fake_starlists_poly0_vel(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_vel_p0_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write('test_data/random_vel_p0_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans, mag_trans) @@ -1157,7 +1159,7 @@ def make_fake_starlists_poly1_vel(seed=-1): # If seed >=0, then set random seed to that value if seed >= 0: np.random.seed(seed=seed) - + N_stars = 200 x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) @@ -1178,21 +1180,21 @@ def make_fake_starlists_poly1_vel(seed=-1): m0e = np.abs(m0e) vxe = np.abs(vxe) vye = np.abs(vye) - + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] # Make an StarList lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], names = ('name', 'm0', 'm0_err', 'x0', 'x0_err', 'y0', 'y0_err', 'vx', 'vx_err', 'vy', 'vy_err', 't0')) - + sdx = np.argsort(m0) lis = lis[sdx] # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('random_vel_ref.fits', overwrite=True) - + lis.write('test_data/random_vel_ref.fits', overwrite=True) + ########## # Propogate to new times and distort. ########## @@ -1211,10 +1213,10 @@ def make_fake_starlists_poly1_vel(seed=-1): # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix shift = [1.0, 1.0] # pix - + for ss in range(len(times)): dt = times[ss] - lis['t0'] - + x = lis['x0'] + (lis['vx']/1e3) * dt y = lis['y0'] + (lis['vy']/1e3) * dt t = np.ones(N_stars) * times[ss] @@ -1242,7 +1244,7 @@ def make_fake_starlists_poly1_vel(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_vel_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write('test_data/random_vel_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans, mag_trans) @@ -1250,7 +1252,7 @@ def make_fake_starlists_poly1_acc(seed=-1): # If seed >=0, then set random seed to that value if seed >= 0: np.random.seed(seed=seed) - + N_stars = 200 x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) @@ -1277,7 +1279,7 @@ def make_fake_starlists_poly1_acc(seed=-1): vye = np.abs(vye) axe = np.abs(axe) aye = np.abs(aye) - + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] # Make an StarList @@ -1291,14 +1293,14 @@ def make_fake_starlists_poly1_acc(seed=-1): 'vx0', 'vx0_err', 'vy0', 'vy0_err', 'ax', 'ax_err', 'ay', 'ay_err', 't0')) - + sdx = np.argsort(m0) lis = lis[sdx] # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('random_acc_ref.fits', overwrite=True) - + lis.write('test_data/random_acc_ref.fits', overwrite=True) + ########## # Propogate to new times and distort. ########## @@ -1317,10 +1319,10 @@ def make_fake_starlists_poly1_acc(seed=-1): # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix shift = [1.0, 1.0] # pix - + for ss in range(len(times)): dt = times[ss] - lis['t0'] - + x = lis['x0'] + (lis['vx0']/1e3) * dt + 0.5*(lis['ax']/1e3) * dt**2 y = lis['y0'] + (lis['vy0']/1e3) * dt + 0.5*(lis['ay']/1e3) * dt**2 t = np.ones(N_stars) * times[ss] @@ -1348,15 +1350,15 @@ def make_fake_starlists_poly1_acc(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_acc_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write('test_data/random_acc_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans, mag_trans) - + def make_fake_starlists_poly1_par(seed=-1): # If seed >=0, then set random seed to that value if seed >= 0: np.random.seed(seed=seed) - + N_stars = 200 x0 = np.random.rand(N_stars) * 10.0 # arcsec (increasing to East) @@ -1380,7 +1382,7 @@ def make_fake_starlists_poly1_par(seed=-1): vxe = np.abs(vxe) vye = np.abs(vye) pie = np.abs(pie) - + name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] # Make an StarList @@ -1394,14 +1396,14 @@ def make_fake_starlists_poly1_par(seed=-1): 'vx', 'vx_err', 'vy', 'vy_err', 'pi', 'pi_err', 't0')) - + sdx = np.argsort(m0) lis = lis[sdx] # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('random_par_ref.fits', overwrite=True) - + lis.write('test_data/random_par_ref.fits', overwrite=True) + ########## # Propogate to new times and distort. ########## @@ -1412,7 +1414,7 @@ def make_fake_starlists_poly1_par(seed=-1): [[ 0.0, 1.00, 0.0], [ 0.0, 0.0, 1.0]], [[250.0, 0.97, 2e-5], [-250.0, 1e-5, 1.001]]] mag_trans = [0.1, 0.4, 0.0, -0.3]''' - + times = [2018.5, 2019.0, 2019.5, 2020.0, 2020.5, 2021.0, 2021.5, 2022.0] xy_trans = [[[ 6.5, 0.99, 1e-5], [ 10.1, 1e-5, 0.99]], [[100.3, 0.98, 1e-5], [ 50.5, 9e-6, 1.001]], @@ -1427,10 +1429,10 @@ def make_fake_starlists_poly1_par(seed=-1): # Convert into pixels (undistorted) with the following info. scale = 0.01 # arcsec / pix shift = [1.0, 1.0] # pix - + for ss in range(len(times)): dt = times[ss] - lis['t0'] - + par_mod = motion_model.Parallax(pa=0,ra=18.0, dec=-30.0) par_mod_dat = par_mod.get_batch_pos_at_time(dt+lis['t0'], x0=lis['x0'],vx=lis['vx']/1e3, pi=lis['pi'], y0=lis['y0'], vy=lis['vy']/1e3, t0=lis['t0']) @@ -1460,6 +1462,6 @@ def make_fake_starlists_poly1_par(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('random_par_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write('test_data/random_par_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans, mag_trans) \ No newline at end of file diff --git a/flystar/tests/A.lis b/flystar/tests/test_data/A.lis similarity index 100% rename from flystar/tests/A.lis rename to flystar/tests/test_data/A.lis diff --git a/flystar/tests/B.lis b/flystar/tests/test_data/B.lis similarity index 100% rename from flystar/tests/B.lis rename to flystar/tests/test_data/B.lis diff --git a/flystar/tests/C.lis b/flystar/tests/test_data/C.lis similarity index 100% rename from flystar/tests/C.lis rename to flystar/tests/test_data/C.lis diff --git a/flystar/tests/D.lis b/flystar/tests/test_data/D.lis similarity index 100% rename from flystar/tests/D.lis rename to flystar/tests/test_data/D.lis diff --git a/flystar/tests/E.lis b/flystar/tests/test_data/E.lis similarity index 100% rename from flystar/tests/E.lis rename to flystar/tests/test_data/E.lis diff --git a/flystar/tests/F.lis b/flystar/tests/test_data/F.lis similarity index 100% rename from flystar/tests/F.lis rename to flystar/tests/test_data/F.lis diff --git a/flystar/tests/coveragerc b/flystar/tests/test_data/coveragerc similarity index 100% rename from flystar/tests/coveragerc rename to flystar/tests/test_data/coveragerc diff --git a/flystar/tests/ref.lis b/flystar/tests/test_data/ref.lis similarity index 100% rename from flystar/tests/ref.lis rename to flystar/tests/test_data/ref.lis diff --git a/flystar/tests/ref_vel.lis b/flystar/tests/test_data/ref_vel.lis similarity index 100% rename from flystar/tests/ref_vel.lis rename to flystar/tests/test_data/ref_vel.lis diff --git a/flystar/tests/test_catalog.fits b/flystar/tests/test_data/test_catalog.fits similarity index 100% rename from flystar/tests/test_catalog.fits rename to flystar/tests/test_data/test_catalog.fits From 316e79d0e58f2acdaf74caee1de45a9cc8c1eec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 8 Feb 2026 19:35:42 -0800 Subject: [PATCH 38/94] Fixed testing errors (Except general_match); Fixed parallax align error; motion_model_used column does not need to be set separately outside of the motion model fit function --- .gitignore | 1 + flystar/align.py | 523 ++++++++++++++++++----------- flystar/match.py | 16 +- flystar/motion_model.py | 107 ++++-- flystar/parallax.py | 18 +- flystar/startables.py | 68 ++-- flystar/tests/test_align.py | 6 +- flystar/tests/test_match.py | 7 +- flystar/tests/test_motion_model.py | 16 +- flystar/tests/test_starlist.py | 8 +- flystar/tests/test_startable.py | 18 +- flystar/tests/test_transforms.py | 4 +- 12 files changed, 489 insertions(+), 303 deletions(-) diff --git a/.gitignore b/.gitignore index b291312..17d4b90 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.png *random*.fits +*random*.lis *.DS_Store *.pyc .ipynb_checkpoints/ diff --git a/flystar/align.py b/flystar/align.py index ed41e8e..975fe05 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -11,6 +11,7 @@ import warnings import pickle from astropy.utils.exceptions import AstropyUserWarning +from .motion_model import Empty, Fixed class MosaicSelfRef(object): def __init__( @@ -234,7 +235,7 @@ def = None. If not None, then this should contain an array or list of transform motion_models.append(all_mm_map['Empty']) if 'Fixed' not in mm_names: motion_models.append(all_mm_map['Fixed']) - + # Sort by increasing n_params motion_models = sorted(motion_models, key=lambda mm: mm.n_params) self.motion_models = motion_models @@ -407,16 +408,16 @@ def fit(self): all_epochs = get_all_epochs(self.ref_table) self.ref_table.meta['list_times'] = all_epochs - # Update chi2 values in ref table, as motion_model_used may have changed - x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) - chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 - chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 - chi2_x = np.nansum(chi2_x_2d, axis=1) - chi2_y = np.nansum(chi2_y_2d, axis=1) - chi2_x[~np.isfinite(chi2_x_2d).any(axis=1)] = np.nan - chi2_y[~np.isfinite(chi2_y_2d).any(axis=1)] = np.nan - self.ref_table['chi2_x'] = chi2_x - self.ref_table['chi2_y'] = chi2_y + # # Update chi2 values in ref table, as motion_model_used may have changed + # x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) + # chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 + # chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 + # chi2_x = np.nansum(chi2_x_2d, axis=1) + # chi2_y = np.nansum(chi2_y_2d, axis=1) + # chi2_x[~np.isfinite(chi2_x_2d).any(axis=1)] = np.nan + # chi2_y[~np.isfinite(chi2_y_2d).any(axis=1)] = np.nan + # self.ref_table['chi2_x'] = chi2_x + # self.ref_table['chi2_y'] = chi2_y if self.save_path: with open(self.save_path, 'wb') as file: @@ -456,11 +457,12 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ### Initial match and transform: 1st order (if we haven't already). if trans is None: # Only use "use_in_trans" reference stars, even for initial guessing. - keepers = np.where(ref_list['use_in_trans'] == True)[0] + keepers = ref_list['use_in_trans'] trans = trans_initial_guess( ref_list[keepers], star_list_orig_trim, self.trans_args[0], + motion_models=self.motion_models, mode=self.init_guess_mode, order=self.init_order, verbose=self.verbose, @@ -485,18 +487,18 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar keepers = self.outlier_rejection_indices(star_list_T[idx1], ref_list[idx2], outlier_tol) if self.verbose > 1: - print( ' Rejected ', len(idx1) - len(keepers), ' outliers.' ) + print( ' Rejected ', len(idx1) - sum(keepers), ' outliers.' ) idx1 = idx1[keepers] idx2 = idx2[keepers] # Only use stars specified by "use_in_trans" column. if 'use_in_trans' in ref_list.colnames: - keepers = np.where(ref_list[idx2]['use_in_trans'] == True)[0] + keepers = ref_list[idx2]['use_in_trans'] if self.verbose > 1: - print( ' Rejected ', len(idx1) - len(keepers), ' with use_in_trans=False.' ) - + print( ' Rejected ', len(idx1) - sum(keepers), ' with use_in_trans=False.' ) + idx1 = idx1[keepers] idx2 = idx2[keepers] @@ -578,15 +580,15 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ### Update the "average" values to be used as the reference frame for the next list. keep_ref_orig = (self.update_ref_orig==False) or (self.update_ref_orig=='atend') or (self.update_ref_orig=='periter' and ii<(len(self.star_lists) - 1)) if keep_ref_orig and ii < (len(self.star_lists) - 1): - keep_orig = np.where(self.ref_table['ref_orig'] | np.isnan(self.ref_table['x'][:,ii]))[0] + keep_orig = self.ref_table['ref_orig'] | np.isnan(self.ref_table['x'][:,ii]) elif keep_ref_orig: - keep_orig = np.where(self.ref_table['ref_orig'])[0] + keep_orig = self.ref_table['ref_orig'] elif ii < (len(self.star_lists) - 1): - keep_orig = np.where(np.isnan(self.ref_table['x'][:,ii]))[0] + keep_orig = np.isnan(self.ref_table['x'][:,ii]) else: keep_orig=None self.update_ref_table_aggregates(keep_orig=keep_orig) - + # Print out some metrics if self.verbose > 0: msg1 = ' {0:2s} (mean and std) for {1:10s}: {2:8.5f} +/- {3:8.5f}' @@ -754,14 +756,15 @@ def setup_ref_table_from_starlist(self, star_list): if 'motion_model_input' not in ref_table.colnames: ref_table.add_column(Column(np.repeat(self.motion_models[-1].name, len(ref_table)), name='motion_model_input')) # FIXME: Why do we need to set motion_model_used here before fitting? - if 'motion_model_used' not in ref_table.colnames: - # Order self.motion_models by decreasing n_params - sorted_mms = sorted(self.motion_models, key=lambda mm: mm.n_params, reverse=True) - # Save the most complex motion model that can infer the positions with the existing columns. - for mm in sorted_mms: - if all([_ in ref_table.colnames for _ in mm.fit_param_names]) and all([_ in ref_table.colnames for _ in mm.fixed_param_names]): - ref_table.add_column(Column(np.repeat(mm.name, len(ref_table)), name='motion_model_used')) - break + # if 'motion_model_used' not in ref_table.colnames: + # # Order self.motion_models by decreasing n_params + # sorted_mms = sorted(self.motion_models, key=lambda mm: mm.n_params, reverse=True) + # # Save the most complex motion model that can infer the positions with the existing columns. + # for mm in sorted_mms: + # if all([_ in ref_table.colnames for _ in mm.fit_param_names]) and all([_ in ref_table.colnames for _ in mm.fixed_param_names]): + # ref_table.add_column(Column(np.repeat(mm.name, len(ref_table)), name='motion_model_used')) + # break + return ref_table def apply_mag_lim_via_use_in_trans(self, ref_list, ref_mag_lim): @@ -811,8 +814,8 @@ def outlier_rejection_indices(self, star_list, ref_list, outlier_tol, verbose=Tr Returns ---------- - keepers : nd.array - The indicies of the stars to keep. + keepers : boolean array + The boolean array of the stars to keep. """ # Optionally propogate the reference positions forward in time. xref = ref_list['x'] @@ -824,11 +827,11 @@ def outlier_rejection_indices(self, star_list, ref_list, outlier_tol, verbose=Tr resid_on_old_trans = np.hypot(x_resid_on_old_trans, y_resid_on_old_trans) threshold = outlier_tol * resid_on_old_trans.std() - keepers = np.where(resid_on_old_trans < threshold)[0] + keepers = resid_on_old_trans < threshold if verbose: msg = ' Outlier Rejection: Keeping {0:d} of {1:d}' - print(msg.format(len(keepers), len(resid_on_old_trans))) + print(msg.format(sum(keepers), len(resid_on_old_trans))) return keepers @@ -895,21 +898,29 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li return def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): - """ - Average positions or fit velocities. + """ Average positions or fit velocities. Average magnitudes. Calculate bootstrap errors if desired. Update the use_in_trans values as needed. TODO: ???? Updates aggregate columns in self.ref_table in place. + + + Parameters + ---------- + keep_orig : array-like of bool, optional + Boolean array indicating which stars to keep original values for, by default None + n_boot : int, optional + Number of bootstrap iterations, by default 0 """ # Keep track of the original reference values. # In certain cases, we will NOT update these. - if (keep_orig is not None) and (len(keep_orig) > 0): + if (keep_orig is not None) and (sum(keep_orig) > 0): vals_orig = {} vals_orig['m0'] = self.ref_table['m0'][keep_orig] vals_orig['m0_err'] = self.ref_table['m0_err'][keep_orig] + # Collect all motion model parameter names motion_model_class_names = [] if 'motion_model_input' in self.ref_table.keys(): motion_model_class_names += self.ref_table['motion_model_input'].tolist() @@ -918,18 +929,25 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): vals_orig['motion_model_used'] = self.ref_table['motion_model_used'][keep_orig] motion_model_col_names = motion_model.motion_model_param_names(motion_model_class_names, with_errors=True, with_fixed=True) for mm in motion_model_col_names: - if mm in self.ref_table.keys(): + if f'{mm}_mm' in self.ref_table.keys(): + vals_orig[mm] = self.ref_table[mm][keep_orig] + elif mm in self.ref_table.keys(): vals_orig[mm] = self.ref_table[mm][keep_orig] - fit_star_idxs = np.array([idx for idx in range(len(self.ref_table)) if idx not in keep_orig], dtype=int) + fit_star_idxs = ~keep_orig else: fit_star_idxs = None - # Figure out whether motion fits are necessary if ('motion_model_input' in self.ref_table.keys()) and np.all(self.ref_table['motion_model_input']=='Fixed'): + self.ref_table.fit_motion_model( + motion_models=['Fixed'], + weighting=self.vel_weighting, + use_scipy=self.use_scipy, + absolute_sigma=self.absolute_sigma, + verbose=self.verbose + ) weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) weighted_m = ('me' in self.ref_table.colnames) self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) - else: self.ref_table.fit_motion_model( motion_models=self.motion_models, @@ -941,7 +959,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): bootstrap=n_boot, verbose=self.verbose ) - if (keep_orig is not None) and (len(keep_orig) > 0): + if (keep_orig is not None) and (sum(keep_orig) > 0): # Determine motion_model_used for keep_orig stars # Filter possible motion models based on available columns motion_models_possible = [] @@ -949,12 +967,12 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): required_columns = mm.fit_param_names + mm.fixed_param_names if all(col in self.ref_table.colnames for col in required_columns): motion_models_possible.append((mm, required_columns)) - - # Check if values are finite for required columns + + # Check if values are finite for required columns in possible motion models motion_model_used = [] - for k in keep_orig: + for k in np.where(keep_orig)[0]: for mm, req in motion_models_possible[::-1]: - if all(np.isfinite(self.ref_table[k][col]) for col in req): + if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): motion_model_used.append(mm.name) break @@ -969,7 +987,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): self.ref_table.combine_lists('m', weights_col=weights_col, ismag=True) # Replace the originals if we are supposed to keep them fixed. - if (keep_orig is not None) and (len(keep_orig) > 0): + if (keep_orig is not None) and (sum(keep_orig) > 0): for val in vals_orig.keys(): self.ref_table[val][keep_orig] = vals_orig[val] @@ -1021,6 +1039,10 @@ def get_weights_for_lists(self, ref_list, star_list): # Fix bad weights: weight[bad] = 0.0 + if weight is not None and np.all(weight == 0.0): + # Catch the case where all weights were bad. + weight = None + return weight @@ -1043,7 +1065,7 @@ def match_lists(self, dr_tol, dm_tol): else: star_list_T.transform_xy(self.trans_list[ii]) - xref, yref = infer_positions(star_list_T['t'][0], self.ref_table) + xref, yref = infer_positions(star_list_T['t'][0], self.ref_table, self.motion_models) mref = self.ref_table['m0'] idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], @@ -1075,23 +1097,50 @@ def get_ref_list_from_table(self, epoch): """ # Reference stars will be named. name = self.ref_table['name'] - + # Calculate x, y, xe, ye + # x, y, xe, ye = infer_positions(epoch, self.ref_table, self.motion_models, return_errors=True) if ('motion_model_used' in self.ref_table.colnames): x, y, xe, ye = self.ref_table.infer_positions(epoch) else: - # No velocities... just used average positions. - x = self.ref_table['x0'] - y = self.ref_table['y0'] - - if 'x0_err' in self.ref_table.colnames: - xe = self.ref_table['x0_err'] - ye = self.ref_table['y0_err'] - else: - xe = None - ye = None + # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty + for mm in self.motion_models[::-1]: + required_columns = mm.fit_param_names + mm.fixed_param_names + if all([param in self.ref_table.colnames for param in required_columns]): + # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. + if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): + continue + + # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. + if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): + x, y, xe, ye = mm().model( + t=epoch, + fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, + fit_param_errs=np.array([self.ref_table[f'{param}_err'] for param in mm.fit_param_names]).T, + fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} + ) + else: + x, y = mm().model( + t=epoch, + fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, + fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} + ) + xe = None + ye = None + break + + # # No velocities... just used average positions. + # x = self.ref_table['x0'] + # y = self.ref_table['y0'] + + # if 'x0_err' in self.ref_table.colnames: + # xe = self.ref_table['x0_err'] + # ye = self.ref_table['y0_err'] + # else: + # xe = None + # ye = None m = self.ref_table['m0'] - + if 'm0_err' in self.ref_table.colnames: me = self.ref_table['m0_err'] else: @@ -1732,6 +1781,14 @@ def = None. If not None, then this should contain an array or list of transform self.update_ref_orig = update_ref_orig self.use_ref_new = use_ref_new + # If motion_model_used in columns but params columns are missing, raise a warning and remove motion_model_used column to avoid confusion. + if 'motion_model_used' in self.ref_list.colnames: + motion_model_params = motion_model.motion_model_param_names(np.unique(self.ref_list['motion_model_used']), with_errors=False, with_fixed=True) + missing_params = [param for param in motion_model_params if param not in self.ref_list.colnames] + if len(missing_params) > 0: + warnings.warn("Warning: 'motion_model_used' column found in ref_list, but the following motion model parameter columns are missing: " + ", ".join(missing_params) + ". Removing 'motion_model_used' column to avoid confusion.") + self.ref_list.remove_column('motion_model_used') + # Do some temporary clean up of the reference list. if ('x' not in self.ref_list.colnames) and ('x0' in self.ref_list.colnames): self.ref_list['x'] = self.ref_list['x0'] @@ -1828,7 +1885,7 @@ def fit(self): print("**********") # ALL the action is in here. Match and transform the stack of starlists. - # This updates trans objects and the ref_table. + # This updates trans objects and the ref_table. self.match_and_transform(self.ref_mag_lim, self.dr_tol[nn], self.dm_tol[nn], self.outlier_tol[nn], self.trans_args[nn]) @@ -1863,7 +1920,7 @@ def fit(self): if self.update_ref_orig: keep_orig=None else: - keep_orig = np.where(self.ref_table['ref_orig'])[0] + keep_orig = self.ref_table['ref_orig'] self.update_ref_table_aggregates(keep_orig=keep_orig) ########## @@ -1905,6 +1962,99 @@ def fit(self): pickle.dump(self, file) return +# TODO: This is sometimes run on a startable, not a starlist, at least as currently used +def infer_positions(t, startable, motion_models=None, return_errors=False): + """ + Take a startable, check to see if it has motion/velocity columns. + If it does, then propagate the positions forward in time + to the desired epoch. If no motion/velocities exist, then just + use ['x0', 'y0'] or ['x', 'y'] + + Parameters + ---------- + t : float + The time to propagate to. Usually in decimal years; + but it should be in the same units + as the 't0' column in starlist. + startable : StarTable + Startable that needs to be inferred. + motion_models : list of MotionModel classes or strings + The motion models to check for in the startable + return_errors : boolean + Whether to return the inferred position errors. If True, then the function returns x, y, xe, ye. If False, then it just returns x, y, by default False. + + Returns + ------- + x, y, (xe, ye) : tuple + Inferred position (and errors) at time t + """ + if ('motion_model_used' in startable.colnames): + x, y, xe, ye = startable.infer_positions(t) + if return_errors: + return x, y, xe, ye + else: + return x, y + + # Convert motion_models from strings to MotionModel classes if needed. + if motion_models is None: + # Setting the default to None to avoid mutable default argument issue + # See https://stackoverflow.com/questions/15189245/assigning-class-variable-as-default-value-to-class-method-argument + motion_models = [Empty, Fixed] + all_mm_map = motion_model.motion_model_map() + if all(isinstance(mm, str) for mm in motion_models): + mm_names = motion_models + motion_models = [all_mm_map[mm] for mm in motion_models] + else: + mm_names = [mm.name for mm in motion_models] + + # Always add Empty and Fixed in motion models + if 'Fixed' not in mm_names: + motion_models.insert(0, Fixed) + if 'Empty' not in mm_names: + motion_models.insert(0, Empty) + + # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty + # Sort motion models inversely by mm.n_params + motion_models = sorted(motion_models, key=lambda mm: mm.n_params, reverse=True) + for mm in motion_models: + if mm.name == 'Empty': + x = startable['x'] + y = startable['y'] + return x, y + + required_columns = mm.fit_param_names + mm.fixed_param_names + if all([param in startable.colnames for param in required_columns]): + # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. + if not all([np.isfinite(startable[param]).all() for param in required_columns if startable[param].dtype.kind in 'if']): + continue + + # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. + x, y = mm().model( + t=t, + fit_params=np.array([startable[param] for param in mm.fit_param_names]).T, + fixed_params_dict={param: startable[param] for param in mm.fixed_param_names} + ) + xe = None + ye = None + break + + return x, y + + # # If no motion model, check for velocities + # elif ('vx' in startable.colnames) and ('vy' in startable.colnames) and (np.isfinite(startable['vx']).all()) and (np.isfinite(startable['vy']).all()): + # x = startable['x0'] + startable['vx'] * (t - startable['t0']) + # y = startable['y0'] + startable['vy'] * (t - startable['t0']) + + # # If no velocities, try fitted positon + # elif ('x0' in startable.colnames) and ('y0' in startable.colnames) and (np.isfinite(startable['x0']).all()) and (np.isfinite(startable['y0']).all()): + # x = startable['x0'] + # y = startable['y0'] + # # Otherwise, use measured position + # else: + # x = startable['x'] + # y = startable['y'] + # return x, y + def get_all_epochs(t): """ Helper function to get times of all epochs from a ref table. @@ -2804,7 +2954,7 @@ def position_transform_from_object(x, y, xe, ye, transform): Should be doing: ((A**2 + B**2 + C**2) * xe**2) """ - + # xe_new & ye_new in (x,y,xe,ye) xe_new = 0 temp1 = 0 @@ -3016,7 +3166,7 @@ def check_trans_input(list_of_starlists, trans_input, mag_trans): return -def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', +def trans_initial_guess(ref_list, star_list, trans_args, motion_models=None, mode='miracle', ignore_contains='star', verbose=True, n_req_match=3, mag_trans=True, order=1): """ @@ -3027,7 +3177,8 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', is just blind triangle matching on the brightest 50 stars. """ warnings.filterwarnings('ignore', category=AstropyUserWarning) - + if motion_models is None: + motion_models = [] if mode == 'name': # First trim the two lists down to only those that don't contain # the "ignore_contains" string. @@ -3054,7 +3205,7 @@ def trans_initial_guess(ref_list, star_list, trans_args, mode='miracle', # If there are velocities in the reference list, use them. # We assume velocities are in the same units as the positions. - xref, yref = infer_positions(star_list['t'][0], ref_list) + xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models) if 'm' in ref_list.colnames: mref = ref_list['m'] else: @@ -3156,72 +3307,75 @@ def copy_and_rename_for_ref(star_list): return ref_list -def outlier_rejection_indices(star_list, ref_list, outlier_tol, verbose=True): - """ - Determine the outliers based on the residual positions between two different - starlists and some threshold (in sigma). Return the indices of the stars - to keep (that shouldn't be rejected as outliers). - - Note that we assume that the star_list and ref_list are already transformed and - matched. - - Parameters - ---------- - star_list : StarList - starlist with 'x', 'y' - - ref_list : StarList - starlist with 'x0', 'y0' - - outlier_tol : float - Number of sigma inside which we keep stars and outside of which we - reject stars as outliers. - - Optional Parameters - -------------------- - verbose : boolean - - Returns - ---------- - keepers : nd.array - The indicies of the stars to keep. - """ - # Optionally propogate the reference positions forward in time. - xref, yref = infer_positions(star_list['t'][0], ref_list) - - # Residuals - x_resid_on_old_trans = star_list['x'] - xref - y_resid_on_old_trans = star_list['y'] - yref - resid_on_old_trans = np.hypot(x_resid_on_old_trans, y_resid_on_old_trans) - - threshold = outlier_tol * resid_on_old_trans.std() - keepers = np.where(resid_on_old_trans < threshold)[0] - - if verbose > 0: - msg = ' Outlier Rejection: Keeping {0:d} of {1:d}' - print(msg.format(len(keepers), len(resid_on_old_trans))) +# def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, verbose=True): +# """ +# Determine the outliers based on the residual positions between two different +# starlists and some threshold (in sigma). Return the indices of the stars +# to keep (that shouldn't be rejected as outliers). + +# Note that we assume that the star_list and ref_list are already transformed and +# matched. + +# Parameters +# ---------- +# star_list : StarList +# starlist with 'x', 'y' + +# ref_list : StarList +# starlist with 'x0', 'y0' + +# outlier_tol : float +# Number of sigma inside which we keep stars and outside of which we +# reject stars as outliers. + +# motion_models : list of motion_model objects +# The motion models used in the star_list. This is needed to propogate the reference positions forward in time to the epoch of the star_list. + +# Optional Parameters +# -------------------- +# verbose : boolean + +# Returns +# ---------- +# keepers : boolean array +# The boolean array of the stars to keep. +# """ +# # Optionally propogate the reference positions forward in time. +# xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models) + +# # Residuals +# x_resid_on_old_trans = star_list['x'] - xref +# y_resid_on_old_trans = star_list['y'] - yref +# resid_on_old_trans = np.hypot(x_resid_on_old_trans, y_resid_on_old_trans) + +# threshold = outlier_tol * resid_on_old_trans.std() +# keepers = resid_on_old_trans < threshold + +# if verbose > 0: +# msg = ' Outlier Rejection: Keeping {0:d} of {1:d}' +# print(msg.format(sum(keepers), len(resid_on_old_trans))) - return keepers - -def setup_trans_info(trans_input, trans_args, N_lists, iters): - """ Setup transformation info into a usable format. - - trans_input : list or None - trans_args : dict or None - N_lists : int - iters : int - """ - trans_list = [None for ii in range(N_lists)] - if trans_input != None: - trans_list = [trans_input[ii] for ii in range(N_lists)] - - # Keep a list of trans_args, one for each starlist. If only - # a single is passed in, replicate for all star lists, all loop iterations. - if type(trans_args) == dict: - tmp = trans_args - trans_args = [tmp for ii in range(iters)] +# return keepers + +# def setup_trans_info(trans_input, trans_args, N_lists, iters): +# """ Setup transformation info into a usable format. + +# trans_input : list or None +# trans_args : dict or None +# N_lists : int +# iters : int +# """ +# trans_list = [None for ii in range(N_lists)] +# if trans_input != None: +# trans_list = [trans_input[ii] for ii in range(N_lists)] + +# # Keep a list of trans_args, one for each starlist. If only +# # a single is passed in, replicate for all star lists, all loop iterations. +# if type(trans_args) == dict: +# tmp = trans_args +# trans_args = [tmp for ii in range(iters)] - return trans_list, trans_args +# return trans_list, trans_args def apply_mag_lim(star_list, mag_lim): """ Apply a magnitude limit to the list. If no magnitude limit is @@ -3255,85 +3409,44 @@ def apply_mag_lim(star_list, mag_lim): return star_list_T -def get_weighting_scheme(weights, ref_list, star_list): - if 'xe' in ref_list.colnames: - var_xref = ref_list['xe']**2 - var_yref = ref_list['ye']**2 - else: - var_xref = 0.0 - var_yref = 0.0 - - if 'xe' in star_list.colnames: - var_xlis = star_list['xe']**2 - var_ylis = star_list['ye']**2 - else: - var_xlis = 0.0 - var_ylis = 0.0 - - if weights != None: - if weights == 'both,var': - weight = 1.0 / (var_xref + var_xlis + var_yref + var_ylis) - if weights == 'both,std': - weight = 1.0 / np.sqrt(var_xref + var_xlis + var_yref + var_ylis) - if weights == 'ref,var': - weight = 1.0 / (var_xref + var_yref) - if weights == 'ref,std': - weight = 1.0 / np.sqrt(var_xref + var_yref) - if weights == 'list,var': - weight = 1.0 / (var_xlis, var_ylis) - if weights == 'list,std': - weight = 1.0 / np.sqrt(var_xlis, var_ylis) - else: - weight = None - - # One last check to make sure we had weights at all. - # Technically, this is mis-use; but lets handle it anyhow. - if ('xe' not in ref_list.colnames) and ('ye' not in star_list.colnames): - weight = None - - return weight - -# TODO: This is sometimes run on a startable, not a starlist, at least as currently used -def infer_positions(t, startable): - """ - Take a startable, check to see if it has motion/velocity columns. - If it does, then propogate the positions forward in time - to the desired epoch. If no motion/velocities exist, then just - use ['x0', 'y0'] or ['x', 'y'] - - Parameters - ---------- - t_array : float - The time to propogate to. Usually in decimal years; - but it should be in the same units - as the 't0' column in starlist. - startable : StarTable - Startable that needs to be inferred. - - Returns - ------- - x, y : tuple - Inferred position at time t - """ - # Check for motion model - if 'motion_model_used' in startable.colnames: - x, y, xe, ye = startable.infer_positions(t) - - # If no motion model, check for velocities - elif ('vx' in startable.colnames) and ('vy' in startable.colnames): - x = startable['x0'] + startable['vx'] * (t - startable['t0']) - y = startable['y0'] + startable['vy'] * (t - startable['t0']) +# def get_weighting_scheme(weights, ref_list, star_list): +# if 'xe' in ref_list.colnames: +# var_xref = ref_list['xe']**2 +# var_yref = ref_list['ye']**2 +# else: +# var_xref = 0.0 +# var_yref = 0.0 - # If no velocities, try fitted positon - elif ('x0' in startable.colnames) and ('y0' in startable.colnames): - x = startable['x0'] - y = startable['y0'] - # Otherwise, use measured position - else: - x = startable['x'] - y = startable['y'] +# if 'xe' in star_list.colnames: +# var_xlis = star_list['xe']**2 +# var_ylis = star_list['ye']**2 +# else: +# var_xlis = 0.0 +# var_ylis = 0.0 + +# if weights != None: +# if weights == 'both,var': +# weight = 1.0 / (var_xref + var_xlis + var_yref + var_ylis) +# if weights == 'both,std': +# weight = 1.0 / np.sqrt(var_xref + var_xlis + var_yref + var_ylis) +# if weights == 'ref,var': +# weight = 1.0 / (var_xref + var_yref) +# if weights == 'ref,std': +# weight = 1.0 / np.sqrt(var_xref + var_yref) +# if weights == 'list,var': +# weight = 1.0 / (var_xlis, var_ylis) +# if weights == 'list,std': +# weight = 1.0 / np.sqrt(var_xlis, var_ylis) +# else: +# weight = None + +# # One last check to make sure we had weights at all. +# # Technically, this is mis-use; but lets handle it anyhow. +# if ('xe' not in ref_list.colnames) and ('ye' not in star_list.colnames): +# weight = None + +# return weight - return x, y def logger(logfile, message, verbose = 9): if verbose > 4: diff --git a/flystar/match.py b/flystar/match.py index f564cd3..ca7672a 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -1,7 +1,7 @@ import numpy as np from . import starlists, transforms, startables from collections import Counter -from scipy.spatial import cKDTree as KDT +from scipy.spatial import KDTree as KDT from astropy.table import Column import itertools import copy @@ -279,7 +279,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): #KDTree handling of NaNs throws error in scipy v1.10.1 and newer. #Replace NaNs in coords2 with zero (0). -SKT kdt = KDT(np.where(np.isfinite(coords2), coords2, 0), balanced_tree=False) - + # This returns the number of neighbors within the specified # radius. We will use this to find those stars that have no or one # match and deal with them easily. The more complicated conflict @@ -289,7 +289,6 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): # What is the largest number of matches we have for a given star? Nmatch_max = Nmatch.max() - # Loop through and handle all the different numbers of matches. # This turns out to be the most efficient so we can use numpy # array operations. Remember, skip the Nmatch=0 objects... they @@ -302,7 +301,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): if nn == 1: i2_nn = np.array([i2_match[mm][0] for mm in i1_nn]) - if dm_tol != None: + if dm_tol is not None: dm = np.abs(m1[i1_nn] - m2[i2_nn]) keep = dm < dm_tol idxs1[i1_nn[keep]] = i1_nn[keep] @@ -326,7 +325,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): dr = np.abs(x1_nn - x2_nn, y1_nn - y2_nn) dm = np.abs(m1_nn - m2_nn) - if dm_tol != None: + if dm_tol is not None: # Don't even consider stars that exceed our # delta-mag threshold. dr_msk = np.ma.masked_where(dm > dm_tol, dr) @@ -542,7 +541,7 @@ def generic_match(sl1, sl2, init_mode='triangle', y_min=xy_match[6], y_max=xy_match[7]) sl1_cut.restrict_by_value(m_min=m_match[0], m_max=m_match[1]) sl2_cut.restrict_by_value(m_min=m_match[2], m_max=m_match[3]) - + # Find the transformation # TODO: test 'initial_align' with StarList input transf = align.initial_align(sl1_cut, sl2_cut, briteN=n_bright, @@ -579,7 +578,10 @@ def generic_match(sl1, sl2, init_mode='triangle', # sl2_idx, sl1_idx = align.transform_and_match(sl2_match, sl1_match, transf, # dr_tol=order_dr[i_loop][1], # verbose=verbose) - + import matplotlib.pyplot as plt + plt.plot(sl1_match['x'], sl1_match['y'], 'x', ms=10) + plt.plot(sl2_match['x'], sl2_match['y'], 'o') + plt.show() sl2_idx, sl1_idx = align.transform_and_match(sl2_match, sl1_match, transf, dr_tol=order_dr[1], verbose=verbose) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 7010a4e..bf53d3f 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -31,11 +31,37 @@ def __init__(self, *args, **kwargs): and thus the fit values are only input/returned in functions, not stored in the object. """ return - + + def _check_param_dimensions(self, fit_params, fit_params_errs, fixed_params_dict): + """Check that parameters is either a scalar or length of N_stars + + Parameters + ---------- + fit_params: array-like + Fit parameters, shape (N_params,) or (N_stars, N_params) + fit_params_errs: array-like + Errors of fit parameters, shape (N_params,) or (N_stars, N_params) + fixed_params_dict : dict + Dictionary of fixed parameters + """ + N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + if fit_params_errs is not None: + assert fit_params_errs.shape == fit_params.shape, "fit_params and fit_params_errs must have the same shape!" + + if fixed_params_dict is not None: + for key, value in fixed_params_dict.items(): + # assert key in fixed_params_dict, f"Missing fixed parameter {key} in fixed_params_dict!" + value = fixed_params_dict[key] + if np.isscalar(value): + continue + else: + assert len(value) == N_stars, f"Length of fixed parameter {key} must be either 1 or N_stars={N_stars}!" + def model_fit(self, dt): return np.full_like(dt, np.nan) - - def model(self, t, fit_params, fit_param_errs=None, fixed_params=None): + + def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): + self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) if fit_param_errs is None: return np.full_like(t, np.nan), np.full_like(t, np.nan) return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) @@ -111,8 +137,8 @@ def fit( Seed for the random number generator, by default None Returns ------- - params, params_err, chi2_x, chi2_y - Parameters, uncertainties, and chi squares. The corresponding parameter names are in self.fit_param_names. + params, params_err(, chi2_x, chi2_y) + Parameters, uncertainties, and chi squares if return_chi2 is True. The corresponding parameter names are in self.fit_param_names. """ assert np.ndim(t) == np.ndim(x) == np.ndim(y) == np.ndim(xe) == np.ndim(ye) == 1, "Input arrays must be 1D! Motion model can only fit individual stars" assert len(t) == len(x) == len(y) == len(xe) == len(ye), "Input arrays must have the same length!" @@ -233,7 +259,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): x, y (, xe, ye) Predicted position (and uncertainties) of Empty model, shape (N_times,) """ - + self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) if fit_param_errs is None: return np.full_like(t, np.nan), np.full_like(t, np.nan) @@ -357,6 +383,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): self.fixed_params_dict = fixed_params_dict t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 N_times = len(t) @@ -510,6 +537,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fixed_params_dict is None: fixed_params_dict = self.fixed_params_dict assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Linear model." + self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) @@ -719,6 +747,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fixed_params_dict is None: fixed_params_dict = self.fixed_params_dict assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Acceleration model." + self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) @@ -840,11 +869,12 @@ class Parallax(MotionModel): def __init__(self): super().__init__() - self.plx_vector_cached = None # Cache for parallax vector + self.pvec_cached = None # Cache for parallax vector + self.t_mjd_cached = None # Cache for times corresponding to cached parallax vector return def calc_parallax_vector(self, t_mjd, ra, dec, pa=0., obsLocation='earth'): - """Calculate parallax vector of shape (2, N_times) + """Calculate parallax vector of shape (N_stars, 2, N_times) Parameters ---------- @@ -862,24 +892,26 @@ def calc_parallax_vector(self, t_mjd, ra, dec, pa=0., obsLocation='earth'): Returns ------- pvec - Parallax vector of shape (2, N_times) + Parallax vector of shape (N_stars, 2, N_times) """ - if self.plx_vector_cached is not None: + if self.pvec_cached is not None: t_mjd = np.atleast_1d(t_mjd) - t_mjd_cached = self.plx_vector_cached[0] + t_mjd_cached = self.t_mjd_cached if np.array_equal(t_mjd, t_mjd_cached): # If cached values match input times, return cached values - return self.plx_vector_cached[1] + return self.pvec_cached elif all(np.isin(t_mjd, t_mjd_cached)): # If all input times are in cached values, return those # Calculate pvec_idxs such that t_mjd_cached[ pvec_idxs ] == t_mjd pvec_idxs = np.array([np.where(t_mjd_cached == t_mjd_i)[0][0] for t_mjd_i in t_mjd]) - pvec = self.plx_vector_cached[1][:, pvec_idxs] + pvec = self.pvec_cached[:, :, pvec_idxs] return pvec - pvec = parallax.parallax_in_direction(ra, dec, t_mjd, obsLocation=obsLocation, pa=pa) - self.plx_vector_cached = [t_mjd, pvec] + pvec = parallax.parallax_in_direction(ra, dec, t_mjd, obsLocation=obsLocation, pa=pa) # Shape (N_stars, 2, N_times) + # self.plx_vector_cached = [t_mjd, pvec] + self.t_mjd_cached = t_mjd + self.pvec_cached = pvec return pvec def model_fit(self, dt, x0, vx, y0, vy, pi): @@ -902,18 +934,21 @@ def model_fit(self, dt, x0, vx, y0, vy, pi): Returns ------- - x_res, y_res : array-like - Model positions at time t of Parallax model + x_result, y_result : array-like + Model positions at time t of Parallax model, shape (N_stars, N_times) """ # x0, vx, y0, vy, pi are all shape (N_stars, N_times) - x_res = x0 + vx * dt + pi * self.pvec[0] - y_res = y0 + vy * dt + pi * self.pvec[1] - return x_res, y_res - + x_result = x0 + vx * dt + pi * self.pvec[:, 0, :] # Parallax contribution in x direction + y_result = y0 + vy * dt + pi * self.pvec[:, 1, :] # Parallax contribution in y direction + return x_result, y_result + def _model_fit(self, dt, x0, vx, y0, vy, pi): """Wrapper for model_fit to return concatenated results for scipy fitting.""" - x_res, y_res = self.model_fit(dt, x0, vx, y0, vy, pi) - return np.hstack([x_res, y_res]) # Shape (N_stars, 2*N_times) + x_result, y_result = self.model_fit(dt, x0, vx, y0, vy, pi) + # scipy.optimize.curve_fit expects a 1D output array with the same length + # as the input ydata. For single-star fits, intermediate broadcasting can + # yield arrays with shape (1, N_times); flatten to avoid M=1 interpretation. + return np.hstack([np.ravel(x_result), np.ravel(y_result)]) # Shape (2*N_times,) def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Model positions (and uncertainties, if fit_param_errs is provided) at time t of Parallax model. @@ -941,6 +976,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fixed_params_dict is None: fixed_params_dict = self.fixed_params_dict assert all([_ in fixed_params_dict for _ in ['t0', 'ra', 'dec']]), "Fixed parameters t0, ra, and dec are required for Parallax model." + self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) @@ -955,14 +991,13 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): obsLocation = fixed_params_dict.get('obsLocation', 'earth') # TODO: vectorize parallax.parallax_in_direction to handle multiple obsLocation? - assert isinstance(obsLocation, str) or (np.unique(obsLocation).size == 1), "obsLocation must be a single string for all stars at this time." if not isinstance(obsLocation, str): obsLocation = np.unique(obsLocation)[0] dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) - self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (2, N_times) + self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (N_stars, 2, N_times) x, y = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) if N_stars == 1 or N_times == 1: @@ -975,9 +1010,9 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) x0_err, vx_err, y0_err, vy_err, pi_err = fit_param_errs.T - x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[0][np.newaxis, :])**2) # Shape (N_stars, N_times) - y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[1][np.newaxis, :])**2) # Shape (N_stars, N_times) - + x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[:, 0, :])**2) # Shape (N_stars, N_times) + y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[:, 1, :])**2) # Shape (N_stars, N_times) + if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays x_err = x_err.flatten() @@ -1042,14 +1077,24 @@ def run_fit( if params_guess is None: idx_first, idx_last = np.argmin(t), np.argmax(t) t_span = t[idx_last] - t[idx_first] - params_guess = [ + params_guess = np.array([ x.mean(), (x[idx_last] - x[idx_first]) / t_span, y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.1 - ] + ]) + + # Convert weights to 1-sigma uncertainties for curve_fit. + # calc_weights returns w = 1/sigma^2 for 'var' and w = 1/sigma for 'std'. + if weighting == 'std': + sigma_x = 1.0 / x_wt + sigma_y = 1.0 / y_wt + else: + sigma_x = 1.0 / np.sqrt(x_wt) + sigma_y = 1.0 / np.sqrt(y_wt) + popt, pcov = curve_fit( self._model_fit, t - t0, np.hstack([x, y]), - p0=params_guess, sigma=np.hstack([x_wt, y_wt]), + p0=params_guess, sigma=np.hstack([sigma_x, sigma_y]), absolute_sigma=absolute_sigma ) x0, vx, y0, vy, pi = popt diff --git a/flystar/parallax.py b/flystar/parallax.py index a4f0f8c..1605060 100755 --- a/flystar/parallax.py +++ b/flystar/parallax.py @@ -44,15 +44,16 @@ def parallax_in_direction(ra, dec, mjd, obsLocation='earth', pa=0.): Returns ------- pvec : ndarray - Parallax vector components, shape of (2, N_stars, N_times), or (2, N_stars) if N_times=1, or (2, N_times) if N_stars=1. + Parallax vector components, shape of (N_stars, 2, N_times), where the second dimension corresponds to the x or y components. """ # Munge inputs into astropy format. # times = Time(mjd + 2400000.5, format='jd', scale='tdb') ra = np.atleast_1d(ra) dec = np.atleast_1d(dec) mjd = np.atleast_1d(mjd) + pa = np.atleast_1d(pa) times = Time(mjd, format='mjd', scale='tdb') # convert to TDB - coord = SkyCoord(ra, dec, unit=(units.deg, units.deg)) + coord = SkyCoord(ra, dec, unit=(units.deg, units.deg)) # Shape (N_stars,) directions = coord.cartesian.xyz.value.T # Shape (N_stars, 3) north = np.array([0., 0., 1.]) @@ -68,19 +69,18 @@ def parallax_in_direction(ra, dec, mjd, obsLocation='earth', pa=0.): sun_obs_pos = sun_pos - obs_pos pos = sun_obs_pos.xyz.T.to(units.au).value # Shape (N_times, 3) + # Broadcast pos to (N_stars, 3, N_times) and take dot product with east and north unit vectors to get components in those directions. + pos = np.broadcast_to(pos.T, (directions.shape[0], 3, pos.shape[0])) # Shape (N_stars, 3, N_times) - e = np.einsum('ti,si->st', pos, _east_projected) # Shape (N_stars, N_times) - n = np.einsum('ti,si->st', pos, _north_projected) # Shape (N_stars, N_times) + e = np.einsum('sdt,sd->st', pos, _east_projected) # Shape (N_stars, N_times) + n = np.einsum('sdt,sd->st', pos, _north_projected) # Shape (N_stars, N_times) # Rotate frame e,n->x,y accounting for PA pa = np.deg2rad(pa) # shape (N_stars,) x = -e * np.cos(pa[:, np.newaxis]) + n * np.sin(pa[:, np.newaxis]) # Shape (N_stars, N_times) y = e * np.sin(pa[:, np.newaxis]) + n * np.cos(pa[:, np.newaxis]) # Shape (N_stars, N_times) - pvec = np.array([x, y]) # Shape (2, N_stars, N_times) - - if pvec.shape[1] == 1 or pvec.shape[2] == 1: - pvec = pvec.reshape(2, -1) # Shape (2, N_stars) or (2, N_times) - + # pvec Shape (N_stars, 2, N_times) + pvec = np.stack((x, y), axis=1) return pvec diff --git a/flystar/startables.py b/flystar/startables.py index d934bac..f586a50 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -12,6 +12,7 @@ from flystar import motion_model import pandas as pd from flystar.motion_model import Empty, Fixed, Linear +from pandas.api.types import is_string_dtype class StarTable(Table): def __init__(self, *args, ref_list=0, **kwargs): @@ -615,6 +616,9 @@ def fit_motion_model( if not all([_ in self.colnames for _ in ['x', 'y']]): raise KeyError(f"fit_motion_model: Missing required columns in the table: {', '.join(['x', 'y'])}!") + # Make a copy of fixed_params_dict to avoid modifying the original one outside the function + fixed_params_dict = copy.deepcopy(fixed_params_dict) + # Check fixed_params_dict is a dict if fixed_params_dict is not None: if not isinstance(fixed_params_dict, dict): @@ -631,7 +635,7 @@ def fit_motion_model( motion_models = [all_mm_map[mm] for mm in motion_models] else: mm_names = [mm.name for mm in motion_models] - + # Always add Empty and Fixed in motion models if 'Fixed' not in mm_names: motion_models.insert(0, Fixed) @@ -670,6 +674,15 @@ def fit_motion_model( y_data = np.ma.masked_invalid(self['y'].data, copy=True) xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else np.ones_like(x_data) ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else np.ones_like(y_data) + + if np.ndim(x_data) == 1: + x_data = x_data[:, np.newaxis] + if np.ndim(y_data) == 1: + y_data = y_data[:, np.newaxis] + if np.ndim(xe_data) == 1: + xe_data = xe_data[:, np.newaxis] + if np.ndim(ye_data) == 1: + ye_data = ye_data[:, np.newaxis] if mask_lists is not None: x_data.mask[:, mask_lists] = True @@ -696,7 +709,7 @@ def fit_motion_model( if np.ndim(fixed_params_dict['t0']) == 0: fixed_params_dict['t0'] = np.full(N_stars, fixed_params_dict['t0']) - t0 = fixed_params_dict['t0'] + t0 = fixed_params_dict['t0'] # Prepare fixed_params_dict for each star # This avoids checking types and slicing inside the fitting loop @@ -808,8 +821,12 @@ def fit_motion_model( for param in fixed_param_names: coldata = np.array([fixed_params_stars[i][param] for i in range(N_stars)]) if param in self.colnames: + if is_string_dtype(self[param]): + if np.array_equal(self[param], coldata): + # Same data, skip + continue # If the column already exists, check if the data are the same - if np.allclose(self[param], coldata, equal_nan=True): + elif np.allclose(self[param], coldata, equal_nan=True): # Same data, skip continue else: @@ -818,7 +835,7 @@ def fit_motion_model( else: colname = param - self.add_column(Column(data=coldata, name=colname)) + self.add_column(Column(data=coldata, name=colname), rename_duplicate=True) # Add a column to keep track of the number of points used in a fit and number of bootstrap used. @@ -855,27 +872,28 @@ def fit_motion_model( chi2_y_array = np.full(n_stars_this_model, np.nan, dtype=float) # Expensive for loop! Prepare everything beforehand to speed up. - for idx, i_star in enumerate(tqdm(unique_index, disable=not show_progress, desc=f"Fitting motion model {unique_motion_model}")): - # Fit the star - params, param_errs, chi2_x, chi2_y = motion_model_instance.fit( - t=t_stars[i_star], - x=x_stars[i_star], - y=y_stars[i_star], - xe=xe_stars[i_star], - ye=ye_stars[i_star], - fixed_params_dict=fixed_params_stars[i_star], - weighting=weighting, - use_scipy=use_scipy, - absolute_sigma=absolute_sigma, - bootstrap=bootstrap, - fill_value=fill_value, - return_chi2=True, - verbose=verbose - ) - params_array[idx] = params - param_errs_array[idx] = param_errs - chi2_x_array[idx] = chi2_x - chi2_y_array[idx] = chi2_y + if len(unique_index) > 0: + for idx, i_star in enumerate(tqdm(unique_index, disable=not show_progress, desc=f"Fitting motion model {unique_motion_model}")): + # Fit the star + params, param_errs, chi2_x, chi2_y = motion_model_instance.fit( + t=t_stars[i_star], + x=x_stars[i_star], + y=y_stars[i_star], + xe=xe_stars[i_star], + ye=ye_stars[i_star], + fixed_params_dict=fixed_params_stars[i_star], + weighting=weighting, + use_scipy=use_scipy, + absolute_sigma=absolute_sigma, + bootstrap=bootstrap, + fill_value=fill_value, + return_chi2=True, + verbose=verbose + ) + params_array[idx] = params + param_errs_array[idx] = param_errs + chi2_x_array[idx] = chi2_x + chi2_y_array[idx] = chi2_y # Store results back to the table for j, param_name in enumerate(param_names): diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index d55e81e..4561f3a 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -846,7 +846,7 @@ def test_MosaicToRef_mag_bug(): """ make_fake_starlists_poly1_vel() - ref_list = starlists.StarList.read('random_vel_0.fits') + ref_list = starlists.StarList.read('test_data/random_vel_0.fits') lists = [ref_list] msc = align.MosaicToRef(ref_list, lists, @@ -911,7 +911,7 @@ def test_masked_cols(): for ee in range(len(epochs)): lis_file = 'mag' + epochs[ee] + '_ob150029_kp_rms_named.lis' - lis = starlists.StarList.from_lis_file(lis_file) + lis = starlists.StarList.from_lis_file(f'test_data/{lis_file}') list_of_starlists.append(lis) # Run the align @@ -1464,4 +1464,4 @@ def make_fake_starlists_poly1_par(seed=-1): new_lis.write('test_data/random_par_{0:d}.fits'.format(ss), overwrite=True) - return (xy_trans, mag_trans) \ No newline at end of file + return (xy_trans, mag_trans) diff --git a/flystar/tests/test_match.py b/flystar/tests/test_match.py index 594f0b9..1022f6d 100644 --- a/flystar/tests/test_match.py +++ b/flystar/tests/test_match.py @@ -164,7 +164,7 @@ def test_generic_match(): n2 = np.array(['S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19']) - + list1 = Table([n1, x1, y1, m1], names=('name', 'x', 'y', 'm')) list2 = Table([n2, x2, y2, m2], @@ -180,4 +180,7 @@ def test_generic_match(): m_match=(None, None, None, None), sigma_match=None, n_bright=8, verbose=True) - +if __name__ == '__main__': + # test_match_duplicates() + # test_miracle_match_briteN() + test_generic_match() \ No newline at end of file diff --git a/flystar/tests/test_motion_model.py b/flystar/tests/test_motion_model.py index b3bb4e8..7a90288 100755 --- a/flystar/tests/test_motion_model.py +++ b/flystar/tests/test_motion_model.py @@ -355,16 +355,20 @@ def test_Parallax(): fixed_params_dict=fixed_params_dict ) fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) - ax1.plot(t, x_true, 'k-', label='True x') - ax1.errorbar(t, x_sim, yerr=x_true_err, fmt='ro', label='Sim x') - ax1.plot(t, x_model, 'r-', label='Model x') + ax1.plot(t, x_model, color='C3', lw=2, label='Model x') + ax1.plot(t, x_true, color='C0', ls='--', label='True x') + ax1.errorbar(t, x_sim, yerr=x_true_err, fmt='o', color='C0', label='Sim x') ax1.set_xlabel('t') ax1.set_ylabel('x') ax1.legend() - ax2.plot(t, y_true, 'k-', label='True x') - ax2.errorbar(t, y_sim, yerr=x_true_err, fmt='ro', label='Sim x') - ax2.plot(t, y_model, 'r-', label='Model x') + ax2.plot(t, y_model, color='C3', lw=2, label='Model y') + ax2.plot(t, y_true, color='C0', ls='--', label='True y') + ax2.errorbar(t, y_sim, yerr=y_true_err, fmt='o', color='C0', label='Sim y') ax2.set_xlabel('t') + ax2.set_ylabel('y') + ax2.legend() + plt.tight_layout() + plt.show() # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) diff --git a/flystar/tests/test_starlist.py b/flystar/tests/test_starlist.py index 5113c43..c8ab2bb 100644 --- a/flystar/tests/test_starlist.py +++ b/flystar/tests/test_starlist.py @@ -2,15 +2,15 @@ from flystar.starlists import StarList import os, pdb -test_dir = os.path.dirname(__file__) +test_dir = os.path.dirname(__file__) + '/' def make_star_list(): # User input - cat_file = test_dir + '/A.lis' + cat_file = test_dir + 'test_data/A.lis' # Read and arrange the test input - cat_tab = Table.read(cat_file, format='ascii', delimiter='\s') + cat_tab = Table.read(cat_file, format='ascii', delimiter=r'\s') # Copy columns from the input file. # Note that all of these inputs will be numpy arrays. @@ -25,7 +25,7 @@ def make_star_list(): # Name is a unique name for each star and is a 1D array. starlist_time = 2011.1 - starlist_name = 'A.lis' + starlist_name = 'test_data/A.lis' # Generate the starlist starlist = StarList(name=name_in, x=x_in, y=y_in, m=m_in, xe=xe_in, diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 4475970..f99ee38 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -8,14 +8,14 @@ import os import pdb -test_dir = os.path.dirname(__file__) +test_dir = os.path.dirname(__file__) + '/' def test_StarTable_init1(): """ Test creation of new StarTable. """ # User input - cat_file = test_dir + '/test_catalog.fits' + cat_file = test_dir + 'test_data/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -71,8 +71,8 @@ def test_StarTable_init2(): Also double check that we can add a second list to it using add_starlist and we can get_starlist() as well. """ - list_file1 = 'A.lis' - list_file2 = 'B.lis' + list_file1 = 'test_data/A.lis' + list_file2 = 'test_data/B.lis' list1 = StarList.from_lis_file(list_file1) list2 = StarList.from_lis_file(list_file2) @@ -267,7 +267,7 @@ def test_get_starlist(): def test_combine_1col(): # User input - cat_file = test_dir + '/test_catalog.fits' + cat_file = test_dir + 'test_data/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -437,7 +437,7 @@ def test_fit_motion_model_2epoch(): def make_star_table(): # User input - cat_file = test_dir + '/test_catalog.fits' + cat_file = test_dir + 'test_data/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -472,7 +472,7 @@ def make_star_table(): def make_star_table_1epoch(): # User input - cat_file = test_dir + '/test_catalog.fits' + cat_file = test_dir + 'test_data/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -500,8 +500,8 @@ def make_star_table_1epoch(): return startable def make_star_table_2epoch(): - # User inpup - cat_file = test_dir + '/test_catalog.fits' + # User input + cat_file = test_dir + 'test_data/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) diff --git a/flystar/tests/test_transforms.py b/flystar/tests/test_transforms.py index ea7c423..11338ad 100644 --- a/flystar/tests/test_transforms.py +++ b/flystar/tests/test_transforms.py @@ -22,9 +22,9 @@ def compare_evaluate_errors(): xe = np.abs(np.random.randn(100) * 0.1) ye = np.abs(np.random.randn(100) * 0.1) - xe_new1 = foo._evaluate_error2(x, y, xe, ye, foo.px.parameters) + # xe_new1 = foo._evaluate_error2(x, y, xe, ye, foo.px.parameters) - xe_new2, ye_new2 = foo._evaluate_error(x, y, xe, ye) + xe_new2, ye_new2 = foo.evaluate_error(x, y, xe, ye) # BROKEN From 2aedc4d4dad7f6aaaf09f992aac5ae6faea7a8d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 8 Feb 2026 19:42:05 -0800 Subject: [PATCH 39/94] Restore commented functions; Restore update chi squares --- flystar/align.py | 226 +++++++++++++++++++++++------------------------ 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 975fe05..b630675 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -408,16 +408,16 @@ def fit(self): all_epochs = get_all_epochs(self.ref_table) self.ref_table.meta['list_times'] = all_epochs - # # Update chi2 values in ref table, as motion_model_used may have changed - # x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) - # chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 - # chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 - # chi2_x = np.nansum(chi2_x_2d, axis=1) - # chi2_y = np.nansum(chi2_y_2d, axis=1) - # chi2_x[~np.isfinite(chi2_x_2d).any(axis=1)] = np.nan - # chi2_y[~np.isfinite(chi2_y_2d).any(axis=1)] = np.nan - # self.ref_table['chi2_x'] = chi2_x - # self.ref_table['chi2_y'] = chi2_y + # Update chi2 values in ref table, as motion_model_used may have changed + x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) + chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 + chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 + chi2_x = np.nansum(chi2_x_2d, axis=1) + chi2_y = np.nansum(chi2_y_2d, axis=1) + chi2_x[~np.isfinite(chi2_x_2d).any(axis=1)] = np.nan + chi2_y[~np.isfinite(chi2_y_2d).any(axis=1)] = np.nan + self.ref_table['chi2_x'] = chi2_x + self.ref_table['chi2_y'] = chi2_y if self.save_path: with open(self.save_path, 'wb') as file: @@ -3307,75 +3307,75 @@ def copy_and_rename_for_ref(star_list): return ref_list -# def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, verbose=True): -# """ -# Determine the outliers based on the residual positions between two different -# starlists and some threshold (in sigma). Return the indices of the stars -# to keep (that shouldn't be rejected as outliers). - -# Note that we assume that the star_list and ref_list are already transformed and -# matched. - -# Parameters -# ---------- -# star_list : StarList -# starlist with 'x', 'y' - -# ref_list : StarList -# starlist with 'x0', 'y0' - -# outlier_tol : float -# Number of sigma inside which we keep stars and outside of which we -# reject stars as outliers. - -# motion_models : list of motion_model objects -# The motion models used in the star_list. This is needed to propogate the reference positions forward in time to the epoch of the star_list. - -# Optional Parameters -# -------------------- -# verbose : boolean - -# Returns -# ---------- -# keepers : boolean array -# The boolean array of the stars to keep. -# """ -# # Optionally propogate the reference positions forward in time. -# xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models) - -# # Residuals -# x_resid_on_old_trans = star_list['x'] - xref -# y_resid_on_old_trans = star_list['y'] - yref -# resid_on_old_trans = np.hypot(x_resid_on_old_trans, y_resid_on_old_trans) - -# threshold = outlier_tol * resid_on_old_trans.std() -# keepers = resid_on_old_trans < threshold - -# if verbose > 0: -# msg = ' Outlier Rejection: Keeping {0:d} of {1:d}' -# print(msg.format(sum(keepers), len(resid_on_old_trans))) +def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, verbose=True): + """ + Determine the outliers based on the residual positions between two different + starlists and some threshold (in sigma). Return the indices of the stars + to keep (that shouldn't be rejected as outliers). + + Note that we assume that the star_list and ref_list are already transformed and + matched. + + Parameters + ---------- + star_list : StarList + starlist with 'x', 'y' + + ref_list : StarList + starlist with 'x0', 'y0' + + outlier_tol : float + Number of sigma inside which we keep stars and outside of which we + reject stars as outliers. + + motion_models : list of motion_model objects + The motion models used in the star_list. This is needed to propogate the reference positions forward in time to the epoch of the star_list. + + Optional Parameters + -------------------- + verbose : boolean + + Returns + ---------- + keepers : boolean array + The boolean array of the stars to keep. + """ + # Optionally propogate the reference positions forward in time. + xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models) + + # Residuals + x_resid_on_old_trans = star_list['x'] - xref + y_resid_on_old_trans = star_list['y'] - yref + resid_on_old_trans = np.hypot(x_resid_on_old_trans, y_resid_on_old_trans) + + threshold = outlier_tol * resid_on_old_trans.std() + keepers = resid_on_old_trans < threshold + + if verbose > 0: + msg = ' Outlier Rejection: Keeping {0:d} of {1:d}' + print(msg.format(sum(keepers), len(resid_on_old_trans))) -# return keepers - -# def setup_trans_info(trans_input, trans_args, N_lists, iters): -# """ Setup transformation info into a usable format. - -# trans_input : list or None -# trans_args : dict or None -# N_lists : int -# iters : int -# """ -# trans_list = [None for ii in range(N_lists)] -# if trans_input != None: -# trans_list = [trans_input[ii] for ii in range(N_lists)] - -# # Keep a list of trans_args, one for each starlist. If only -# # a single is passed in, replicate for all star lists, all loop iterations. -# if type(trans_args) == dict: -# tmp = trans_args -# trans_args = [tmp for ii in range(iters)] + return keepers + +def setup_trans_info(trans_input, trans_args, N_lists, iters): + """ Setup transformation info into a usable format. + + trans_input : list or None + trans_args : dict or None + N_lists : int + iters : int + """ + trans_list = [None for ii in range(N_lists)] + if trans_input != None: + trans_list = [trans_input[ii] for ii in range(N_lists)] + + # Keep a list of trans_args, one for each starlist. If only + # a single is passed in, replicate for all star lists, all loop iterations. + if type(trans_args) == dict: + tmp = trans_args + trans_args = [tmp for ii in range(iters)] -# return trans_list, trans_args + return trans_list, trans_args def apply_mag_lim(star_list, mag_lim): """ Apply a magnitude limit to the list. If no magnitude limit is @@ -3409,43 +3409,43 @@ def apply_mag_lim(star_list, mag_lim): return star_list_T -# def get_weighting_scheme(weights, ref_list, star_list): -# if 'xe' in ref_list.colnames: -# var_xref = ref_list['xe']**2 -# var_yref = ref_list['ye']**2 -# else: -# var_xref = 0.0 -# var_yref = 0.0 +def get_weighting_scheme(weights, ref_list, star_list): + if 'xe' in ref_list.colnames: + var_xref = ref_list['xe']**2 + var_yref = ref_list['ye']**2 + else: + var_xref = 0.0 + var_yref = 0.0 -# if 'xe' in star_list.colnames: -# var_xlis = star_list['xe']**2 -# var_ylis = star_list['ye']**2 -# else: -# var_xlis = 0.0 -# var_ylis = 0.0 - -# if weights != None: -# if weights == 'both,var': -# weight = 1.0 / (var_xref + var_xlis + var_yref + var_ylis) -# if weights == 'both,std': -# weight = 1.0 / np.sqrt(var_xref + var_xlis + var_yref + var_ylis) -# if weights == 'ref,var': -# weight = 1.0 / (var_xref + var_yref) -# if weights == 'ref,std': -# weight = 1.0 / np.sqrt(var_xref + var_yref) -# if weights == 'list,var': -# weight = 1.0 / (var_xlis, var_ylis) -# if weights == 'list,std': -# weight = 1.0 / np.sqrt(var_xlis, var_ylis) -# else: -# weight = None - -# # One last check to make sure we had weights at all. -# # Technically, this is mis-use; but lets handle it anyhow. -# if ('xe' not in ref_list.colnames) and ('ye' not in star_list.colnames): -# weight = None - -# return weight + if 'xe' in star_list.colnames: + var_xlis = star_list['xe']**2 + var_ylis = star_list['ye']**2 + else: + var_xlis = 0.0 + var_ylis = 0.0 + + if weights != None: + if weights == 'both,var': + weight = 1.0 / (var_xref + var_xlis + var_yref + var_ylis) + if weights == 'both,std': + weight = 1.0 / np.sqrt(var_xref + var_xlis + var_yref + var_ylis) + if weights == 'ref,var': + weight = 1.0 / (var_xref + var_yref) + if weights == 'ref,std': + weight = 1.0 / np.sqrt(var_xref + var_yref) + if weights == 'list,var': + weight = 1.0 / (var_xlis, var_ylis) + if weights == 'list,std': + weight = 1.0 / np.sqrt(var_xlis, var_ylis) + else: + weight = None + + # One last check to make sure we had weights at all. + # Technically, this is mis-use; but lets handle it anyhow. + if ('xe' not in ref_list.colnames) and ('ye' not in star_list.colnames): + weight = None + + return weight def logger(logfile, message, verbose = 9): From 8bf14a97fe95c4a2b1725287154c1686748faff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Mon, 9 Feb 2026 11:08:05 -0800 Subject: [PATCH 40/94] Temporarily added parallax test --- flystar/align.py | 2 +- flystar/tests/test_align.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/flystar/align.py b/flystar/align.py index b630675..11f8c21 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1553,7 +1553,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot return - + class MosaicToRef(MosaicSelfRef): def __init__( diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 4561f3a..a6ad646 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1465,3 +1465,28 @@ def make_fake_starlists_poly1_par(seed=-1): new_lis.write('test_data/random_par_{0:d}.fits'.format(ss), overwrite=True) return (xy_trans, mag_trans) + +if __name__ == '__main__': + import pickle + import matplotlib.pyplot as plt + with open('test_data/my_gaia.pkl', 'rb') as f: + my_gaia = pickle.load(f) + with open('test_data/list_of_starlists.pkl', 'rb') as f: + list_of_starlists = pickle.load(f) + ra_deg, dec_deg = 18.0, -30.0 + msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, + dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], + outlier_tol=[None, None, 3], mag_lim=[6, 20], + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], + motion_models=['Empty','Fixed','Linear','Parallax'], + fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, + use_ref_new=True, + update_ref_orig=False, + mag_trans=True, + trans_weighting='both,std', + init_guess_mode='name', verbose=3) + msc.fit() + for i in range(msc.ref_table['x'].shape[1]): + plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) + plt.show() \ No newline at end of file From 2a4a6118133cac4e266fd95df8df0a17aaca7c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 10 Feb 2026 16:56:02 -0800 Subject: [PATCH 41/94] Midpoint test commit --- flystar/align.py | 97 +++++++++++-------- flystar/startables.py | 21 +++- flystar/tests/test_align.py | 81 ++++++++-------- ...011_10_31_F606W_MATCHUP_XYMEEE_final.calib | 0 ...012_09_25_F606W_MATCHUP_XYMEEE_final.calib | 0 ...013_10_24_F606W_MATCHUP_XYMEEE_final.calib | 0 .../{ => test_data}/mb10364_data/my_gaia.fits | 0 7 files changed, 114 insertions(+), 85 deletions(-) rename flystar/tests/{ => test_data}/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib (100%) rename flystar/tests/{ => test_data}/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib (100%) rename flystar/tests/{ => test_data}/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib (100%) rename flystar/tests/{ => test_data}/mb10364_data/my_gaia.fits (100%) diff --git a/flystar/align.py b/flystar/align.py index 11f8c21..20cc2ee 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -12,6 +12,7 @@ import pickle from astropy.utils.exceptions import AstropyUserWarning from .motion_model import Empty, Fixed +from tqdm import tqdm class MosaicSelfRef(object): def __init__( @@ -463,11 +464,14 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar star_list_orig_trim, self.trans_args[0], motion_models=self.motion_models, + fixed_params_dict=self.fixed_params_dict, mode=self.init_guess_mode, order=self.init_order, verbose=self.verbose, mag_trans=self.mag_trans ) + if np.isnan(trans.px.parameters).any() or np.isnan(trans.py.parameters).any(): + raise ValueError(f"Initial transformation contains NaN parameters. trans.px={trans.px.parameters}, trans.py={trans.py.parameters}.") if self.mag_trans: star_list_T.transform_xym(trans) # trimmed, transformed @@ -484,8 +488,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Outlier rejection if outlier_tol != None: - keepers = self.outlier_rejection_indices(star_list_T[idx1], ref_list[idx2], - outlier_tol) + keepers = self.outlier_rejection_indices(star_list_T[idx1], ref_list[idx2], outlier_tol, verbose=self.verbose) if self.verbose > 1: print( ' Rejected ', len(idx1) - sum(keepers), ' outliers.' ) @@ -495,7 +498,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Only use stars specified by "use_in_trans" column. if 'use_in_trans' in ref_list.colnames: keepers = ref_list[idx2]['use_in_trans'] - + if self.verbose > 1: print( ' Rejected ', len(idx1) - sum(keepers), ' with use_in_trans=False.' ) @@ -570,10 +573,10 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar '. If match count is low, check dr_tol, dm_tol.' ) ## Make plot, if desired - plots.trans_positions(ref_list, ref_list[idx_ref], star_list_T, star_list_T[idx_lis], - save_path=f"{os.path.dirname(self.save_path)}/Transformed_Positions_{star_list_T['t'][0]}.png" if self.save_path else None, - show_plot=False) - + if self.save_path: + plots.trans_positions(ref_list, ref_list[idx_ref], star_list_T, star_list_T[idx_lis], + save_path=f"{os.path.dirname(self.save_path)}/Transformed_Positions_{star_list_T['t'][0]}.png", + show_plot=False) ### Update the observed (but transformed) values in the reference table. self.update_ref_table_from_list(star_list, star_list_T, ii, idx_ref, idx_lis, idx2) @@ -740,7 +743,7 @@ def setup_ref_table_from_starlist(self, star_list): # Make sure we have a column to indicate whether each star # IS USED in the transformation. This will be 2D if 'used_in_trans' not in ref_table.colnames: - new_col = Column(np.zeros([len(ref_table),1], dtype=bool), name='used_in_trans') + new_col = Column(np.zeros([len(ref_table), 1], dtype=bool), name='used_in_trans') ref_table.add_column(new_col) # Keep track of whether this is an original reference star. @@ -780,8 +783,7 @@ def apply_mag_lim_via_use_in_trans(self, ref_list, ref_mag_lim): else: mcol = 'm' - no_use = np.where((ref_list[mcol] < ref_mag_lim[0]) | - (ref_list[mcol] >= ref_mag_lim[1])) + no_use = (ref_list[mcol] < ref_mag_lim[0]) | (ref_list[mcol] >= ref_mag_lim[1]) ref_list['use_in_trans'][no_use] = False @@ -965,14 +967,19 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): motion_models_possible = [] for mm in self.motion_models: required_columns = mm.fit_param_names + mm.fixed_param_names - if all(col in self.ref_table.colnames for col in required_columns): + if all(col in self.ref_table.colnames or col in self.fixed_params_dict.keys() for col in required_columns): motion_models_possible.append((mm, required_columns)) # Check if values are finite for required columns in possible motion models motion_model_used = [] for k in np.where(keep_orig)[0]: for mm, req in motion_models_possible[::-1]: - if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): + # if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): + req_col_in_table = [col for col in req if col in self.ref_table.colnames] + req_col_in_dict = [col for col in req if (self.fixed_params_dict is not None) and (col in self.fixed_params_dict.keys())] + # If requested column in table/fixed_params dict is numeric, check if values are finite. + if all(np.isfinite(self.ref_table[col][k]) for col in req_col_in_table if np.issubdtype(self.ref_table[col].dtype, np.number)) \ + and all(np.isfinite(self.fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(self.fixed_params_dict[col]).dtype, np.number)): motion_model_used.append(mm.name) break @@ -1020,7 +1027,7 @@ def get_weights_for_lists(self, ref_list, star_list): if self.trans_weighting == 'list,var': weight = 1.0 / (var_xlis + var_ylis) if self.trans_weighting == 'list,std': - weight = 1.0 / np.sqrt(var_xlis, var_ylis) + weight = 1.0 / np.sqrt(var_xlis + var_ylis) else: weight = None @@ -1065,7 +1072,7 @@ def match_lists(self, dr_tol, dm_tol): else: star_list_T.transform_xy(self.trans_list[ii]) - xref, yref = infer_positions(star_list_T['t'][0], self.ref_table, self.motion_models) + xref, yref = infer_positions(star_list_T['t'][0], self.ref_table, self.motion_models, self.fixed_params_dict) mref = self.ref_table['m0'] idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], @@ -1098,18 +1105,17 @@ def get_ref_list_from_table(self, epoch): # Reference stars will be named. name = self.ref_table['name'] # Calculate x, y, xe, ye - # x, y, xe, ye = infer_positions(epoch, self.ref_table, self.motion_models, return_errors=True) - if ('motion_model_used' in self.ref_table.colnames): - x, y, xe, ye = self.ref_table.infer_positions(epoch) + if 'motion_model_used' in self.ref_table.colnames: + x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) else: # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty for mm in self.motion_models[::-1]: required_columns = mm.fit_param_names + mm.fixed_param_names - if all([param in self.ref_table.colnames for param in required_columns]): + if all([param in self.ref_table.colnames or param in self.fixed_params_dict.keys() for param in required_columns]): # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): continue - + print(f"Inferring positions using motion model {mm.name}.") # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): x, y, xe, ye = mm().model( @@ -1302,8 +1308,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY ### DECREASE PRECISION ON ARRAYS (32 bit instead of 64: dtype=np.float32) ### AT SOME POINT, NEED TO CONVERT BACK (LOOK UP HOW TO DO THIS CAREFULLY) - t1 = time.time() - for ii in range(n_boot): + for ii in tqdm(range(n_boot), desc='Bootstrap iterations', disable=not show_progress): # Recalculate transformations using bootstrap sample of # reference stars. Use a loop for each epoch here, so we # can handle case where different reference stars are used @@ -1514,7 +1519,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # self.ref_table['motion_model_used'] = np.array([motion_model_list[d].name for d in mm_digitized], dtype='U20') - x_pred, y_pred, _, _ = self.ref_table.infer_positions(t_arr) + x_pred, y_pred, _, _ = self.ref_table.infer_positions(t_arr, fixed_params_dict=self.fixed_params_dict) xe_comb = np.hypot(self.ref_table['xe'], self.ref_table['xe_boot']) ye_comb = np.hypot(self.ref_table['ye'], self.ref_table['ye_boot']) data_dict['chi2_x_boot'] = np.nansum((self.ref_table['x']-x_pred)**2/(xe_comb)**2,axis=1) @@ -1784,7 +1789,7 @@ def = None. If not None, then this should contain an array or list of transform # If motion_model_used in columns but params columns are missing, raise a warning and remove motion_model_used column to avoid confusion. if 'motion_model_used' in self.ref_list.colnames: motion_model_params = motion_model.motion_model_param_names(np.unique(self.ref_list['motion_model_used']), with_errors=False, with_fixed=True) - missing_params = [param for param in motion_model_params if param not in self.ref_list.colnames] + missing_params = [param for param in motion_model_params if (param not in self.ref_list.colnames) and (f'{param}_err' not in self.ref_list.colnames) and (param not in self.fixed_params_dict.keys())] if len(missing_params) > 0: warnings.warn("Warning: 'motion_model_used' column found in ref_list, but the following motion model parameter columns are missing: " + ", ".join(missing_params) + ". Removing 'motion_model_used' column to avoid confusion.") self.ref_list.remove_column('motion_model_used') @@ -1947,7 +1952,7 @@ def fit(self): self.ref_table.meta['list_times'] = all_epochs # Update chi2 values in ref table, as motion_model_used may have changed - x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) + x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs, fixed_params_dict=self.fixed_params_dict) chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 chi2_x = np.nansum(chi2_x_2d, axis=1) @@ -1963,7 +1968,7 @@ def fit(self): return # TODO: This is sometimes run on a startable, not a starlist, at least as currently used -def infer_positions(t, startable, motion_models=None, return_errors=False): +def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, return_errors=False): """ Take a startable, check to see if it has motion/velocity columns. If it does, then propagate the positions forward in time @@ -1989,7 +1994,7 @@ def infer_positions(t, startable, motion_models=None, return_errors=False): Inferred position (and errors) at time t """ if ('motion_model_used' in startable.colnames): - x, y, xe, ye = startable.infer_positions(t) + x, y, xe, ye = startable.infer_positions(t, fixed_params_dict=fixed_params_dict) if return_errors: return x, y, xe, ye else: @@ -2016,6 +2021,7 @@ def infer_positions(t, startable, motion_models=None, return_errors=False): # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty # Sort motion models inversely by mm.n_params motion_models = sorted(motion_models, key=lambda mm: mm.n_params, reverse=True) + pdb.set_trace() for mm in motion_models: if mm.name == 'Empty': x = startable['x'] @@ -2034,8 +2040,6 @@ def infer_positions(t, startable, motion_models=None, return_errors=False): fit_params=np.array([startable[param] for param in mm.fit_param_names]).T, fixed_params_dict={param: startable[param] for param in mm.fixed_param_names} ) - xe = None - ye = None break return x, y @@ -3166,9 +3170,19 @@ def check_trans_input(list_of_starlists, trans_input, mag_trans): return -def trans_initial_guess(ref_list, star_list, trans_args, motion_models=None, mode='miracle', - ignore_contains='star', verbose=True, n_req_match=3, - mag_trans=True, order=1): +def trans_initial_guess( + ref_list, + star_list, + trans_args, + motion_models=None, + fixed_params_dict=None, + mode='miracle', + ignore_contains='star', + verbose=True, + n_req_match=3, + mag_trans=True, + order=1 +): """ Take two starlists and perform an initial matching and transformation. @@ -3190,7 +3204,7 @@ def trans_initial_guess(ref_list, star_list, trans_args, motion_models=None, mod star_list['name'][idx_s], assume_unique=True, return_indices=True) - + x1m = star_list['x'][idx_s][ndx_s] y1m = star_list['y'][idx_s][ndx_s] m1m = star_list['m'][idx_s][ndx_s] @@ -3205,7 +3219,7 @@ def trans_initial_guess(ref_list, star_list, trans_args, motion_models=None, mod # If there are velocities in the reference list, use them. # We assume velocities are in the same units as the positions. - xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models) + xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models, fixed_params_dict=fixed_params_dict) if 'm' in ref_list.colnames: mref = ref_list['m'] else: @@ -3307,7 +3321,7 @@ def copy_and_rename_for_ref(star_list): return ref_list -def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, verbose=True): +def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, fixed_params_dict=None, verbose=True): """ Determine the outliers based on the residual positions between two different starlists and some threshold (in sigma). Return the indices of the stars @@ -3320,20 +3334,17 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, v ---------- star_list : StarList starlist with 'x', 'y' - ref_list : StarList starlist with 'x0', 'y0' - outlier_tol : float Number of sigma inside which we keep stars and outside of which we reject stars as outliers. - motion_models : list of motion_model objects - The motion models used in the star_list. This is needed to propogate the reference positions forward in time to the epoch of the star_list. - - Optional Parameters - -------------------- - verbose : boolean + The motion models to use in the star_list + fixed_params_dict : dict or None, optional + Dictionary of fixed parameters for motion models, by default None + verbose : boolean, optional + If True, print information about the outlier rejection process, by default True Returns ---------- @@ -3341,7 +3352,7 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, v The boolean array of the stars to keep. """ # Optionally propogate the reference positions forward in time. - xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models) + xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models, fixed_params_dict=fixed_params_dict) # Residuals x_resid_on_old_trans = star_list['x'] - xref diff --git a/flystar/startables.py b/flystar/startables.py index f586a50..1590be4 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -905,13 +905,18 @@ def fit_motion_model( self['t0'][unique_index] = t0[unique_index] return - def infer_positions(self, times, fill_value=np.nan): + def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): """Infer star positions at given times using fitted motion models. Parameters ---------- times : array_like Times at which to predict positions. Scalar, or (N_times,) array, or (N_stars, N_times) array. + fixed_params_dict : None or dict, optional + Dictionary of fixed parameters to use for prediction. + If not provided, will try to look for fixed parameters in the table columns. + If fixed params are found in both the table and the fixed_params_dict, the values in the table will be used and the fixed_params_dict values will be ignored, + by default None fill_value : float, optional Value to use for missing data, by default np.nan @@ -943,7 +948,7 @@ def infer_positions(self, times, fill_value=np.nan): xe_pred = np.full(N_stars, np.inf, dtype=float) ye_pred = np.full(N_stars, np.inf, dtype=float) - + # Calculate the dictionary of {motion_model: indices of stars with this motion model} for faster access during prediction unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} @@ -962,12 +967,20 @@ def infer_positions(self, times, fill_value=np.nan): fixed_params = {} for param_name in motion_model_instance.fixed_param_names: - col_name = param_name + col_name = copy.deepcopy(param_name) + # If column not in table, check if it's provided in fixed_params_dict. If not, raise error. If provided, use the value from fixed_params_dict for all stars. + if (col_name not in self.colnames) and (f'{col_name}_mm' not in self.colnames): + if col_name in fixed_params_dict: + fixed_params[param_name] = fixed_params_dict[col_name] + continue + else: + raise KeyError(f"infer_positions: Fixed parameter '{param_name}' not found in table columns or fixed_params_dict. Please provide the value for this parameter in fixed_params_dict or add a column named '{param_name}' to the table.") + + # If original table has column and fit_motion_model added the column with _mm suffix, use the _mm column for prediction. if param_name + '_mm' in self.colnames: col_name = param_name + '_mm' fixed_params[param_name] = self[col_name][unique_index] - # TODO: vectorize obsLocation handling in motion models? if (param_name == 'obsLocation'): assert np.unique(fixed_params[param_name]).size == 1, \ "infer_positions: obsLocation fixed parameter has different values for different stars. Vectorized handling not implemented yet." diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index a6ad646..d37fd17 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -513,7 +513,7 @@ def test_MosaicToRef_hst_me(): # dec = '-34:27:05.01' # Load up a Gaia catalog (queried around the RA/Dec above) - my_gaia = Table.read('mb10364_data/my_gaia.fits') + my_gaia = Table.read('test_data/mb10364_data/my_gaia.fits') my_gaia['me'] = 0.01 my_gaia.rename_columns( @@ -523,9 +523,9 @@ def test_MosaicToRef_hst_me(): # Gather the list of starlists. For first pass, don't modify the starlists. # Loop through the observations and read them in, in prep for alignment with Gaia epochs = [2011.83, 2012.73, 2013.81] - starlist_names = ['mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', - 'mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', - 'mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] + starlist_names = ['test_data/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', + 'test_data/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', + 'test_data/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] list_of_starlists = [] @@ -545,17 +545,21 @@ def test_MosaicToRef_hst_me(): list_of_starlists.append(lis) - msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, - dr_tol=[0.1], dm_tol=[5], - outlier_tol=[None], mag_lim=[13, 21], - trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}], - motion_models=['Empty', 'Fixed'], - use_ref_new=False, - update_ref_orig=False, - mag_trans=False, - trans_weighting='both,std', - init_guess_mode='miracle', verbose=False) + msc = align.MosaicToRef( + my_gaia, list_of_starlists, iters=1, + dr_tol=[0.1], dm_tol=[5], + outlier_tol=[None], mag_lim=[13, 21], + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}], + motion_models=['Empty', 'Fixed'], + use_ref_new=False, + update_ref_orig=False, + mag_trans=False, + trans_weighting='both,std', + init_guess_mode='miracle', + save_path='test_data/mb10364_data/test_MosaicToRef_hst_me.pkl', + verbose=False + ) msc.fit() assert 'me' in msc.ref_table.colnames @@ -1467,26 +1471,27 @@ def make_fake_starlists_poly1_par(seed=-1): return (xy_trans, mag_trans) if __name__ == '__main__': - import pickle - import matplotlib.pyplot as plt - with open('test_data/my_gaia.pkl', 'rb') as f: - my_gaia = pickle.load(f) - with open('test_data/list_of_starlists.pkl', 'rb') as f: - list_of_starlists = pickle.load(f) - ra_deg, dec_deg = 18.0, -30.0 - msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, - dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], - outlier_tol=[None, None, 3], mag_lim=[6, 20], - trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], - motion_models=['Empty','Fixed','Linear','Parallax'], - fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, - use_ref_new=True, - update_ref_orig=False, - mag_trans=True, - trans_weighting='both,std', - init_guess_mode='name', verbose=3) - msc.fit() - for i in range(msc.ref_table['x'].shape[1]): - plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) - plt.show() \ No newline at end of file + test_MosaicToRef_hst_me() + # import pickle + # import matplotlib.pyplot as plt + # with open('test_data/my_gaia.pkl', 'rb') as f: + # my_gaia = pickle.load(f) + # with open('test_data/list_of_starlists.pkl', 'rb') as f: + # list_of_starlists = pickle.load(f) + # ra_deg, dec_deg = 18.0, -30.0 + # msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, + # dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], + # outlier_tol=[None, None, 3], mag_lim=[6, 20], + # trans_class=transforms.PolyTransform, + # trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], + # motion_models=['Empty','Fixed','Linear','Parallax'], + # fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, + # use_ref_new=True, + # update_ref_orig=False, + # mag_trans=True, + # trans_weighting='both,std', + # init_guess_mode='name', verbose=3) + # msc.fit() + # for i in range(msc.ref_table['x'].shape[1]): + # plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) + # plt.show() \ No newline at end of file diff --git a/flystar/tests/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib b/flystar/tests/test_data/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib similarity index 100% rename from flystar/tests/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib rename to flystar/tests/test_data/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib diff --git a/flystar/tests/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib b/flystar/tests/test_data/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib similarity index 100% rename from flystar/tests/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib rename to flystar/tests/test_data/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib diff --git a/flystar/tests/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib b/flystar/tests/test_data/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib similarity index 100% rename from flystar/tests/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib rename to flystar/tests/test_data/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib diff --git a/flystar/tests/mb10364_data/my_gaia.fits b/flystar/tests/test_data/mb10364_data/my_gaia.fits similarity index 100% rename from flystar/tests/mb10364_data/my_gaia.fits rename to flystar/tests/test_data/mb10364_data/my_gaia.fits From f979af7fa22ef46fdfc465ad4366e1c9d3f391f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 17 Feb 2026 23:25:04 -0800 Subject: [PATCH 42/94] Add motion_model_for_new_star used in add_rows_for_new_stars; Fixed motion_model_used column problem: Now it will only be determined by motion model fit, and the column will be removed if provided in the reference list --- flystar/align.py | 392 ++++++++++++++++++++---------------- flystar/tests/test_align.py | 117 +++++------ 2 files changed, 267 insertions(+), 242 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 20cc2ee..9ec4a2f 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -18,7 +18,7 @@ class MosaicSelfRef(object): def __init__( self, list_of_starlists, - # Alignment tolerance parameters + # Alignment parameters ref_index=0, iters=2, dr_tol=[1, 1], @@ -37,6 +37,7 @@ def __init__( mag_lim=None, # Motion model parameters motion_models=['Empty', 'Fixed'], + motion_model_for_new_star=None, fixed_params_dict=None, vel_weighting='var', use_scipy=True, @@ -50,7 +51,7 @@ def __init__( Make a mosaic object by passing in a list of starlists and then running fit(). Required Parameters - ---------- + ------------------- list_of_starlists : array of StarList objects An array or list of flystar.starlists.StarList objects (which are Astropy Tables). There should be one for each starlist and they must contain 'x', 'y', and 'm' columns. @@ -68,7 +69,7 @@ def __init__( for those stars not trimmed out by the other criteria. Optional Parameters - ---------- + ------------------- ref_index : int The index of the reference epoch. (default = 0). Note that this is the reference list only for the first iteration. Subsequent iterations will utilize the sigma-clipped @@ -89,35 +90,6 @@ def __init__( The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. - mag_trans : boolean - If true, this will also calculate and (temporarily) apply a zeropoint offset to - magnitudes in each list to bring them into a common magnitude system. This is - essential for matching (with finite dm_tol) starlists of different filters or - starlists that are not photometrically calibrated. Note that the final_table columns - of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the - final_table column 'm_orig' will contain the original un-transformed magnitudes. - If mag_trans = False, then no such zeropoint offset it applied at any point. - - mag_lim : array - If different from None, it indicates the minimum and maximum magnitude - on the catalogs for finding the transformations. Note, if you want specify the mag_lim - separately for each list and each iteration, you need to pass in a 2D array that - has shape (N_lists, 2). - - trans_weighting : str - Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want - to weight by the positional uncertainties (variances) in the individual starlists, or also with - the uncertainties in the reference frame itself. Note weighting only works when there - are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. - - vel_weighting : str - Either 'var' (def) or 'std', depending on whether you want to weight the motion model - fits by the variance or standard deviation of the position data - - trans_input : array or list of transform objects - def = None. If not None, then this should contain an array or list of transform - objects that will be used as the initial guess in the alignment and matching. - trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal transformation parameters between each list and the reference list. @@ -128,28 +100,59 @@ def = None. If not None, then this should contain an array or list of transform then the transformation argument (i.e. order) will be changed for every iteration in iters. - calc_trans_inverse: boolean - If true, then calculate the inverse transformation (from reference to starlist) - in addition to the normal transformation (from starlist to reference). The inverse - calculation is calculated by switching the order to the positions in match_and_transform. - The inverse transformations are saved in self.trans_list_inverse. + trans_input : array or list of transform objects + def = None. If not None, then this should contain an array or list of transform + objects that will be used as the initial guess in the alignment and matching. - self.trans_list_inverse doesn't exist if calc_trans_inverse == False + trans_weighting : str + Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want + to weight by the positional uncertainties (variances) in the individual starlists, or also with + the uncertainties in the reference frame itself. Note weighting only works when there + are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. + + init_order : int + The order of the initial transformation used for the first iteration. init_guess_mode : string If no initial transformations are passed in via the trans_input keyword, then we have to make the initial transformation and matching blindly. We can do this in a couple of different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). - iter_callback : None or function - A function to call (that accepts a StarTable object and an iteration number) - at the end of every iteration. This can be used for plotting or printing state. + calc_trans_inverse: boolean + If true, then calculate the inverse transformation (from reference to starlist) + in addition to the normal transformation (from starlist to reference). The inverse + calculation is calculated by switching the order to the positions in match_and_transform. + The inverse transformations are saved in self.trans_list_inverse. + self.trans_list_inverse doesn't exist if calc_trans_inverse == False + + mag_trans : boolean + If true, this will also calculate and (temporarily) apply a zeropoint offset to + magnitudes in each list to bring them into a common magnitude system. This is + essential for matching (with finite dm_tol) starlists of different filters or + starlists that are not photometrically calibrated. Note that the final_table columns + of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the + final_table column 'm_orig' will contain the original un-transformed magnitudes. + If mag_trans = False, then no such zeropoint offset it applied at any point. + + mag_lim : array + If different from None, it indicates the minimum and maximum magnitude + on the catalogs for finding the transformations. Note, if you want specify the mag_lim + separately for each list and each iteration, you need to pass in a 2D array that + has shape (N_lists, 2). motion_models : list of MotionModel or str, optional Motion models or their names to use for new or unassigned stars + motion_model_for_new_star : str or MotionModel, optional + Motion model or its name for newly added stars in the ref table. Used in add_rows_for_new_stars(). + If None, the most complex motion model in motion_models will be used, by default None. + fixed_params_dict : None or dict - Dictionary of motion model fixed parameters + Dictionary of motion model fixed parameters, e.g., ra, dec, pa, obsLocation, t0, etc. See motion_model classes for details. + + vel_weighting : str + Either 'var' (def) or 'std', depending on whether you want to weight the motion model + fits by the variance or standard deviation of the position data use_scipy : bool, optional If True, use scipy.optimize.curve_fit for velocity fitting. If False, use linear @@ -159,16 +162,20 @@ def = None. If not None, then this should contain an array or list of transform If True, the velocity fit will use absolute errors in the data. If False, relative errors will be used, by default False. + iter_callback : None or function + A function to call (that accepts a StarTable object and an iteration number) + at the end of every iteration. This can be used for plotting or printing state. + save_path : str, optional Path to save the MosaicSelfRef object as a pickle file. - - verbose : int (0 to 9, inclusive) + + verbose : bool or int (0 to 9, inclusive) Controls the verbosity of print statements. (0 least, 9 most verbose). For backwards compatibility, 0 = False, 9 = True. (Note: technically right now no checks on whether the number is an integer or not...) Example - ---------- + ------- msc = align.MosaicToRef(list_of_starlists, iters=1, dr_tol=[0.1], dm_tol=[5], outlier_tol=[None], mag_lim=[13, 21], @@ -179,7 +186,7 @@ def = None. If not None, then this should contain an array or list of transform msc.fit() # Access a list of all the transformation parameters: - trans_list = msc.trans_list + trans_list = msc.trans_list # Access the fully-combined reference table. stars_table = msc.ref_table @@ -193,8 +200,7 @@ def = None. If not None, then this should contain an array or list of transform # Overplot the best-fit proper motion. times = stars_table['t'][0, :] plt.errorbar(times, stars_table['x'][0, :], yerr=stars_table['xe'][0, :]) - plt.axhline(stars_table['x0'][0] + stars_table['vx'][0]*(times - stars_table['t0'][0])) - + plt.axhline(stars_table['x0'][0] + stars_table['vx'][0]*(times - stars_table['t0'][0])) """ self.star_lists = list_of_starlists @@ -219,7 +225,7 @@ def = None. If not None, then this should contain an array or list of transform self.iter_callback = iter_callback self.save_path = save_path self.verbose = verbose - + # Setup save_path: if self.save_path: assert self.save_path.endswith('.pkl'), 'Save_path must end with .pkl' @@ -228,6 +234,7 @@ def = None. If not None, then this should contain an array or list of transform all_mm_map = motion_model.motion_model_map() if all(isinstance(mm, str) for mm in motion_models): + assert all(mm in all_mm_map.keys() for mm in motion_models), f"All motion model names must be in {list(all_mm_map.keys())}" mm_names = motion_models motion_models = [all_mm_map[mm] for mm in motion_models] else: @@ -241,6 +248,12 @@ def = None. If not None, then this should contain an array or list of transform motion_models = sorted(motion_models, key=lambda mm: mm.n_params) self.motion_models = motion_models + if motion_model_for_new_star is None: + self.motion_model_for_new_star = self.motion_models[-1] + elif isinstance(motion_model_for_new_star, str): + assert motion_model_for_new_star in all_mm_map.keys(), f"motion_model_for_new_star must be in {list(all_mm_map.keys())}" + self.motion_model_for_new_star = all_mm_map[motion_model_for_new_star] + # For backwards compatibility. if self.verbose is True: self.verbose = 9 @@ -268,11 +281,6 @@ def = None. If not None, then this should contain an array or list of transform # is passed in, replicate for all star lists, all loop iterations. ########## self.setup_trans_info() - - # Make sure the motion models are ready - # self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, - # StarTable(), self.default_motion_model) - return def fix_iterable_conditions(self): @@ -549,7 +557,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ml='m_lis_T', mr='m_ref', dx='dx_mpix', dy='dy_mpix', dm='dm', xo='x_orig', yo='y_orig', mo='m_orig')) - + fmt = '{nr:20s} {n:20s} {xl:9.5f} {xr:9.5f} {yl:9.5f} {yr:9.5f} {ml:6.2f} {mr:6.2f} ' fmt += '{dx:7.2f} {dy:7.2f} {dm:6.2f} {xo:9.5f} {yo:9.5f} {mo:6.2f}' for foo in range(len(idx1)): @@ -567,7 +575,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar idx_lis, idx_ref, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], ref_list['x'], ref_list['y'], ref_list['m'], dr_tol=dr_tol, dm_tol=dm_tol, verbose=self.verbose) - + if self.verbose > 1: print( ' Match 2: After trans, found ', len(idx_lis), ' matches out of ', len(star_list_T), '. If match count is low, check dr_tol, dm_tol.' ) @@ -654,6 +662,11 @@ def setup_ref_table_from_starlist(self, star_list): array in the original reference star list. """ col_arrays = {} + # Remove motion_model_used if present, as it can only be determined by fit_motion_model function + if 'motion_model_used' in star_list.colnames: + warnings.warn("The input reference star list contains a 'motion_model_used' column. This column will be removed and re-calculated by the fit_motion_model function.") + star_list.remove_column('motion_model_used') + motion_model_col_names = motion_model.motion_model_param_names(self.motion_models, with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] if 't0' not in motion_model_col_names: motion_model_col_names.insert(0, 't0') @@ -876,7 +889,7 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li self.ref_table, star_list, idx_lis, - motion_model=self.motion_models[-1].name + motion_model_name=self.motion_model_for_new_star.name ) if len(idx_ref_new) > 0: @@ -961,31 +974,6 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): bootstrap=n_boot, verbose=self.verbose ) - if (keep_orig is not None) and (sum(keep_orig) > 0): - # Determine motion_model_used for keep_orig stars - # Filter possible motion models based on available columns - motion_models_possible = [] - for mm in self.motion_models: - required_columns = mm.fit_param_names + mm.fixed_param_names - if all(col in self.ref_table.colnames or col in self.fixed_params_dict.keys() for col in required_columns): - motion_models_possible.append((mm, required_columns)) - - # Check if values are finite for required columns in possible motion models - motion_model_used = [] - for k in np.where(keep_orig)[0]: - for mm, req in motion_models_possible[::-1]: - # if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): - req_col_in_table = [col for col in req if col in self.ref_table.colnames] - req_col_in_dict = [col for col in req if (self.fixed_params_dict is not None) and (col in self.fixed_params_dict.keys())] - # If requested column in table/fixed_params dict is numeric, check if values are finite. - if all(np.isfinite(self.ref_table[col][k]) for col in req_col_in_table if np.issubdtype(self.ref_table[col].dtype, np.number)) \ - and all(np.isfinite(self.fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(self.fixed_params_dict[col]).dtype, np.number)): - motion_model_used.append(mm.name) - break - - # Assign the determined motion models - self.ref_table['motion_model_used'][keep_orig] = motion_model_used - # Combine (transformed) magnitudes if 'me' in self.ref_table.colnames: weights_col = None @@ -993,6 +981,33 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): weights_col = 'me' self.ref_table.combine_lists('m', weights_col=weights_col, ismag=True) + # if (keep_orig is not None) and (sum(keep_orig) > 0): + # Determine motion_model_used for keep_orig stars + # Filter possible motion models based on available columns + motion_models_possible = [] + for mm in self.motion_models: + required_columns = mm.fit_param_names + mm.fixed_param_names + if all(col in self.ref_table.colnames or (self.fixed_params_dict is not None and col in self.fixed_params_dict.keys()) for col in required_columns): + motion_models_possible.append((mm, required_columns)) + + # Check if values are finite for required columns in possible motion models + motion_model_used = [] + # for k in np.where(keep_orig)[0]: + for k in range(len(self.ref_table)): + for mm, req in motion_models_possible[::-1]: + # if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): + req_col_in_table = [col for col in req if col in self.ref_table.colnames] + req_col_in_dict = [col for col in req if (self.fixed_params_dict is not None) and (col in self.fixed_params_dict.keys())] + # If requested column in table/fixed_params dict is numeric, check if values are finite. + if all(np.isfinite(self.ref_table[col][k]) for col in req_col_in_table if np.issubdtype(self.ref_table[col].dtype, np.number)) \ + and all(np.isfinite(self.fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(self.fixed_params_dict[col]).dtype, np.number)): + motion_model_used.append(mm.name) + break + + # Assign the determined motion models + # self.ref_table['motion_model_used'][keep_orig] = motion_model_used + self.ref_table['motion_model_used'] = motion_model_used + # Replace the originals if we are supposed to keep them fixed. if (keep_orig is not None) and (sum(keep_orig) > 0): for val in vals_orig.keys(): @@ -1111,10 +1126,17 @@ def get_ref_list_from_table(self, epoch): # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty for mm in self.motion_models[::-1]: required_columns = mm.fit_param_names + mm.fixed_param_names - if all([param in self.ref_table.colnames or param in self.fixed_params_dict.keys() for param in required_columns]): + if all([param in self.ref_table.colnames or (self.fixed_params_dict is not None and param in self.fixed_params_dict.keys()) for param in required_columns]): # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. + + if any([param not in self.ref_table.colnames for param in required_columns]): + # If any required column is missing, skip to the next motion model. + continue + if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): + # If any required column has non-finite values, skip to the next motion model. continue + print(f"Inferring positions using motion model {mm.name}.") # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): @@ -1565,7 +1587,7 @@ def __init__( self, ref_list, list_of_starlists, - # Alignment tolerance parameters + # Alignment parameters iters=2, dr_tol=[1, 1], dm_tol=[2, 1], @@ -1587,6 +1609,7 @@ def __init__( ref_mag_lim=None, # Motion model parameters motion_models=['Empty', 'Fixed'], + motion_model_for_new_star=None, fixed_params_dict=None, vel_weighting='var', use_scipy=True, @@ -1599,7 +1622,7 @@ def __init__( """ Required Parameters - ---------- + ------------------- ref_list : StarList object Can optionally have velocities. All starlists will be aligned to this one. @@ -1637,38 +1660,24 @@ def __init__( The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. - mag_trans : boolean - If true, this will also calculate and (temporarily) apply a zeropoint offset to - magnitudes in each list to bring them into a common magnitude system. This is - essential for matching (with finite dm_tol) starlists of different filters or - starlists that are not photometrically calibrated. Note that the final_table columns - of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the - final_table column 'm_orig' will contain the original un-transformed magnitudes. - If mag_trans = False, then no such zeropoint offset it applied at any point. - - mag_lim : array - If different from None, it indicates the minimum and maximum magnitude - on the catalogs for finding the transformations. Note, if you want specify the mag_lim - separately for each list and each iteration, you need to pass in a 2D array that - has shape (N_lists, N_iters). + use_ref_new : boolean + Each pass, new stars are matched and added to the ref_table. However, we don't + necessarily want to use these in the reference frame in subsequent passes. + If True, then the new stars will be used in later passes/iterations. + If False, then the new stars will be carried, but not used in the transformation. + We determine which stars to use through setting a boolean use_in_trans flag. - ref_mag_lim : array - If different from None, it indicates the minimum and maximum magnitude - on the reference catalog for finding the transformations. + update_ref_orig : boolean or str + Should we update the reference values (position, velocity, t0) after each starlist + is transformed in each iteration? - trans_weighting : str - Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want - to weight by the positional uncertainties (variances) in the individual starlists, or also with - the uncertainties in the reference frame itself. Note weighting only works when there - are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. - - vel_weighting : str - Either 'var' (def) or 'std', depending on whether you want to weight the motion model - fits by the variance or standard deviation of the position data + False if you want to get into an absolute reference frame and are using Gaia data. + True if you want to use the reference list as more of an initial guess. + 'periter' if you want to align all the starlists, then calculate the velocity. - trans_input : array or list of transform objects - def = None. If not None, then this should contain an array or list of transform - objects that will be used as the initial guess in the alignment and matching. + Note that this only impacts the stars that are in the original reference list... the + newly identified stars that end up in ref_table will always be updated; but not always + used for transformation fitting. trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal @@ -1680,51 +1689,64 @@ def = None. If not None, then this should contain an array or list of transform then the transformation argument (i.e. order) will be changed for every iteration in iters. + trans_input : array or list of transform objects + def = None. If not None, then this should contain an array or list of transform + objects that will be used as the initial guess in the alignment and matching. + + trans_weighting : str + Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want + to weight by the positional uncertainties (variances) in the individual starlists, or also with + the uncertainties in the reference frame itself. Note weighting only works when there + are positional uncertainties availabe. Other options include 'both,std', 'list,std', 'list,var'. + init_order: int Polynomial transformation order to use for initial guess transformation. Order=1 should be used in most cases, but sometimes higher order is needed + init_guess_mode : string + If no initial transformations are passed in via the trans_input keyword, then we have + to make the initial transformation and matching blindly. We can do this in a couple of + different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). + calc_trans_inverse: boolean If true, then calculate the inverse transformation (from reference to starlist) in addition to the normal transformation (from starlist to reference). The inverse calculation is calculated by switching the order to the positions in match_and_transform. The inverse transformations are saved in self.trans_list_inverse. - self.trans_list_inverse doesn't exist if calc_trans_inverse == False - update_ref_orig : boolean or str - Should we update the reference values (position, velocity, t0) after each starlist - is transformed in each iteration? - - False if you want to get into an absolute reference frame and are using Gaia data. - True if you want to use the reference list as more of an initial guess. - 'periter' if you want to align all the starlists, then calculate the velocity. - - Note that this only impacts the stars that are in the original reference list... the - newly identified stars that end up in ref_table will always be updated; but not always - used for transformation fitting. - - use_ref_new : boolean - Each pass, new stars are matched and added to the ref_table. However, we don't - necessarily want to use these in the reference frame in subsequent passes. - If True, then the new stars will be used in later passes/iterations. - If False, then the new stars will be carried, but not used in the transformation. - We determine which stars to use through setting a boolean use_in_trans flag. + mag_trans : boolean + If true, this will also calculate and (temporarily) apply a zeropoint offset to + magnitudes in each list to bring them into a common magnitude system. This is + essential for matching (with finite dm_tol) starlists of different filters or + starlists that are not photometrically calibrated. Note that the final_table columns + of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the + final_table column 'm_orig' will contain the original un-transformed magnitudes. + If mag_trans = False, then no such zeropoint offset it applied at any point. - init_guess_mode : string - If no initial transformations are passed in via the trans_input keyword, then we have - to make the initial transformation and matching blindly. We can do this in a couple of - different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). + mag_lim : array + If different from None, it indicates the minimum and maximum magnitude + on the catalogs for finding the transformations. Note, if you want specify the mag_lim + separately for each list and each iteration, you need to pass in a 2D array that + has shape (N_lists, N_iters). - iter_callback : None or function - A function to call (that accepts a StarTable object and an iteration number) - at the end of every iteration. This can be used for plotting or printing state. + ref_mag_lim : array + If different from None, it indicates the minimum and maximum magnitude + on the reference catalog for finding the transformations. motion_models : list of str or MotionModel objects List of motion model names (strings) or MotionModel objects to use + motion_model_for_new_star : str or MotionModel, optional + Motion model or its name for newly added stars in the ref table. Used in add_rows_for_new_stars(). + If None, the most complex motion model in motion_models will be used, by default None. + fixed_params_dict : None or dict Dictionary of fixed parameters for motion models + + vel_weighting : str + Either 'var' (def) or 'std', depending on whether you want to weight the motion model + fits by the variance or standard deviation of the position data use_scipy : bool, optional If True, use scipy.optimize.curve_fit for velocity fitting. If False, use linear algebra fitting, by default True. @@ -1732,11 +1754,20 @@ def = None. If not None, then this should contain an array or list of transform absolute_sigma : bool, optional If True, the velocity fit will use absolute errors in the data. If False, relative errors will be used, by default False. + iter_callback : None or function + A function to call (that accepts a StarTable object and an iteration number) + at the end of every iteration. This can be used for plotting or printing state. + save_path : str, optional Path to save the MosaicToRef object as a pickle file. + verbose : bool or int (0 to 9, inclusive) + Controls the verbosity of print statements. (0 least, 9 most verbose). + For backwards compatibility, 0 = False, 9 = True. + (Note: technically right now no checks on whether the number is an integer or not...) + Example - ---------- + ------- msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, dr_tol=[0.1], dm_tol=[5], outlier_tol=[None], mag_lim=[13, 21], @@ -1766,20 +1797,37 @@ def = None. If not None, then this should contain an array or list of transform plt.errorbar(times, stars_table['x'][0, :], yerr=stars_table['xe'][0, :]) plt.axhline(stars_table['x0'][0] + stars_table['vx'][0]*(times - stars_table['t0'][0])) """ - super().__init__(list_of_starlists, ref_index=-1, iters=iters, - dr_tol=dr_tol, dm_tol=dm_tol, - outlier_tol=outlier_tol, trans_args=trans_args, - init_order=init_order, - mag_trans=mag_trans, mag_lim=mag_lim, - trans_weighting=trans_weighting, vel_weighting=vel_weighting, - trans_input=trans_input, trans_class=trans_class, - calc_trans_inverse=calc_trans_inverse, - init_guess_mode=init_guess_mode, - iter_callback=iter_callback, - motion_models=motion_models, - fixed_params_dict=fixed_params_dict, - verbose=verbose, use_scipy=use_scipy, - absolute_sigma=absolute_sigma, save_path=save_path) + super().__init__( + list_of_starlists, + # Alignment parameters + ref_index=-1, + iters=iters, + dr_tol=dr_tol, + dm_tol=dm_tol, + outlier_tol=outlier_tol, + # Transformation parameters + trans_class=trans_class, + trans_args=trans_args, + trans_input=trans_input, + trans_weighting=trans_weighting, + init_order=init_order, + init_guess_mode=init_guess_mode, + calc_trans_inverse=calc_trans_inverse, + # Magnitude parameters + mag_trans=mag_trans, + mag_lim=mag_lim, + # Motion model parameters + motion_models=motion_models, + motion_model_for_new_star=motion_model_for_new_star, + fixed_params_dict=fixed_params_dict, + vel_weighting=vel_weighting, + use_scipy=use_scipy, + absolute_sigma=absolute_sigma, + # Advanced options + iter_callback=iter_callback, + save_path=save_path, + verbose=verbose + ) self.ref_list = copy.deepcopy(ref_list) self.ref_mag_lim = ref_mag_lim @@ -1787,12 +1835,17 @@ def = None. If not None, then this should contain an array or list of transform self.use_ref_new = use_ref_new # If motion_model_used in columns but params columns are missing, raise a warning and remove motion_model_used column to avoid confusion. + # if 'motion_model_used' in self.ref_list.colnames: + # motion_model_params = motion_model.motion_model_param_names(np.unique(self.ref_list['motion_model_used']), with_errors=False, with_fixed=True) + # missing_params = [param for param in motion_model_params if (param not in self.ref_list.colnames) and (f'{param}_err' not in self.ref_list.colnames) and (param not in self.fixed_params_dict.keys())] + # if len(missing_params) > 0: + # warnings.warn("Warning: 'motion_model_used' column found in ref_list, but the following motion model parameter columns are missing: " + ", ".join(missing_params) + ". Removing 'motion_model_used' column to avoid confusion.") + # self.ref_list.remove_column('motion_model_used') + + # If motion_model_used in columns, remove it and raise a warning, since it will only be determined after the fit. if 'motion_model_used' in self.ref_list.colnames: - motion_model_params = motion_model.motion_model_param_names(np.unique(self.ref_list['motion_model_used']), with_errors=False, with_fixed=True) - missing_params = [param for param in motion_model_params if (param not in self.ref_list.colnames) and (f'{param}_err' not in self.ref_list.colnames) and (param not in self.fixed_params_dict.keys())] - if len(missing_params) > 0: - warnings.warn("Warning: 'motion_model_used' column found in ref_list, but the following motion model parameter columns are missing: " + ", ".join(missing_params) + ". Removing 'motion_model_used' column to avoid confusion.") - self.ref_list.remove_column('motion_model_used') + warnings.warn("Warning: 'motion_model_used' column found in ref_list. This column will be determined after the fit, so it is being removed from the input ref_list to avoid confusion.") + self.ref_list.remove_column('motion_model_used') # Do some temporary clean up of the reference list. if ('x' not in self.ref_list.colnames) and ('x0' in self.ref_list.colnames): @@ -1808,10 +1861,6 @@ def = None. If not None, then this should contain an array or list of transform if ('t' not in self.ref_list.colnames) and ('t0' in self.ref_list.colnames): self.ref_list['t'] = self.ref_list['t0'] - # Make sure the motion models are ready - # self.motion_model_dict = motion_model.validate_motion_model_dict(self.motion_model_dict, - # self.ref_list, self.default_motion_model) - return @@ -2021,7 +2070,6 @@ def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, re # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty # Sort motion models inversely by mm.n_params motion_models = sorted(motion_models, key=lambda mm: mm.n_params, reverse=True) - pdb.set_trace() for mm in motion_models: if mm.name == 'Empty': x = startable['x'] @@ -2205,7 +2253,7 @@ def reset_ref_values(ref_table): return -def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model='Fixed'): +def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fixed'): """ For each star that is in star_list and NOT in idx_list, make a new row in the reference table. The values will be empty (None, NAN, etc.). @@ -2219,8 +2267,8 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model='Fixed') idx_list : array or list The indices of the non-new stars (those that matched already). The complement of this array will be used as the new stars. - motion_model : str - The motion model to assign to the new stars. + motion_model_name : str + The motion model name to assign to the new stars. Returns ---------- @@ -2251,9 +2299,9 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model='Fixed') elif ref_table[col_name].dtype == np.dtype('bool'): new_col_empty = False elif col_name=='motion_model_input': - new_col_empty = motion_model + new_col_empty = motion_model_name elif col_name=='motion_model_used': - new_col_empty = 'Fixed' + new_col_empty = 'Empty' else: new_col_empty = np.nan @@ -3343,12 +3391,12 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, f The motion models to use in the star_list fixed_params_dict : dict or None, optional Dictionary of fixed parameters for motion models, by default None - verbose : boolean, optional + verbose : bool, optional If True, print information about the outlier rejection process, by default True Returns ---------- - keepers : boolean array + keepers : bool array The boolean array of the stars to keep. """ # Optionally propogate the reference positions forward in time. diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index d37fd17..e88cb79 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1,3 +1,4 @@ +import flystar from flystar import align from flystar import starlists from flystar import startables @@ -9,11 +10,13 @@ import matplotlib.pyplot as plt import pdb +test_data_path = f'{flystar.__path__[0]}/tests/test_data' + def test_MosaicSelfRef(): """ Cross-match and align 4 starlists using the OO version of mosaic lists. """ - list_files = ['test_data/A.lis', 'test_data/B.lis', 'test_data/C.lis', 'test_data/D.lis'] + list_files = [f'{test_data_path}/{f}' for f in ['A.lis', 'B.lis', 'C.lis', 'D.lis']] lists = [starlists.StarList.from_lis_file(lf) for lf in list_files] ########## @@ -88,7 +91,7 @@ def test_MosaicSelfRef_vel_tconst(): The 4 lists are all taken at the same time (so 0 velocities should result). """ - list_files = ['test_data/A.lis', 'test_data/B.lis', 'test_data/C.lis', 'test_data/D.lis'] + list_files = [f'{test_data_path}/{f}' for f in ['A.lis', 'B.lis', 'C.lis', 'D.lis']] lists = [starlists.StarList.from_lis_file(lf) for lf in list_files] ########## @@ -140,7 +143,7 @@ def test_MosaicSelfRef_vel(): """ Cross-match and align 4 starlists using the OO version of mosaic lists. """ - list_files = ['test_data/A.lis', 'test_data/B.lis', 'test_data/C.lis', 'test_data/D.lis'] + list_files = [f'{test_data_path}/{f}' for f in ['A.lis', 'B.lis', 'C.lis', 'D.lis']] lists = [starlists.StarList.from_lis_file(lf) for lf in list_files] # Modify the times so that we get velocities out. @@ -207,15 +210,8 @@ def test_MosaicSelfRef_vel(): def test_MosaicToRef(): make_fake_starlists_poly1(seed=42) - ref_file = 'test_data/random_ref.fits' - list_files = ['test_data/random_0.fits', - 'test_data/random_1.fits', - 'test_data/random_2.fits', - 'test_data/random_3.fits', - 'test_data/random_4.fits', - 'test_data/random_5.fits', - 'test_data/random_6.fits', - 'test_data/random_7.fits'] + ref_file = f'{test_data_path}/random_ref.fits' + list_files = [f'{test_data_path}/random_{i}.fits' for i in range(8)] ref_list = Table.read(ref_file) @@ -264,15 +260,8 @@ def test_MosaicToRef(): def test_MosaicToRef_p0_vel(): make_fake_starlists_poly0_vel(seed=42) - ref_file = 'test_data/random_vel_ref.fits' - list_files = ['test_data/random_vel_p0_0.fits', - 'test_data/random_vel_p0_1.fits', - 'test_data/random_vel_p0_2.fits', - 'test_data/random_vel_p0_3.fits'] - #'test_data/random_vel_4.fits', - #'test_data/random_vel_5.fits', - #'test_data/random_vel_6.fits', - #'test_data/random_vel_7.fits'] + ref_file = f'{test_data_path}/random_vel_ref.fits' + list_files = [f'{test_data_path}/random_vel_p0_{i}.fits' for i in range(4)] ref_list = Table.read(ref_file) @@ -330,15 +319,8 @@ def test_MosaicToRef_p0_vel(): def test_MosaicToRef_vel(): make_fake_starlists_poly1_vel(seed=42) - ref_file = 'test_data/random_vel_ref.fits' - list_files = ['test_data/random_vel_0.fits', - 'test_data/random_vel_1.fits', - 'test_data/random_vel_2.fits', - 'test_data/random_vel_3.fits'] - #'test_data/random_vel_4.fits', - #'test_data/random_vel_5.fits', - #'test_data/random_vel_6.fits', - #'test_data/random_vel_7.fits'] + ref_file = f'{test_data_path}/random_vel_ref.fits' + list_files = [f'{test_data_path}/random_vel_{i}.fits' for i in range(4)] ref_list = Table.read(ref_file) @@ -396,15 +378,8 @@ def test_MosaicToRef_vel(): def test_MosaicToRef_acc(): make_fake_starlists_poly1_acc(seed=42) - ref_file = 'test_data/random_acc_ref.fits' - list_files = ['test_data/random_acc_0.fits', - 'test_data/random_acc_1.fits', - 'test_data/random_acc_2.fits', - 'test_data/random_acc_3.fits', - 'test_data/random_acc_4.fits', - 'test_data/random_acc_5.fits', - 'test_data/random_acc_6.fits', - 'test_data/random_acc_7.fits'] + ref_file = f'{test_data_path}/random_acc_ref.fits' + list_files = [f'{test_data_path}/random_acc_{i}.fits' for i in range(8)] ref_list = Table.read(ref_file) @@ -513,7 +488,7 @@ def test_MosaicToRef_hst_me(): # dec = '-34:27:05.01' # Load up a Gaia catalog (queried around the RA/Dec above) - my_gaia = Table.read('test_data/mb10364_data/my_gaia.fits') + my_gaia = Table.read(f'{test_data_path}/mb10364_data/my_gaia.fits') my_gaia['me'] = 0.01 my_gaia.rename_columns( @@ -523,9 +498,9 @@ def test_MosaicToRef_hst_me(): # Gather the list of starlists. For first pass, don't modify the starlists. # Loop through the observations and read them in, in prep for alignment with Gaia epochs = [2011.83, 2012.73, 2013.81] - starlist_names = ['test_data/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', - 'test_data/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', - 'test_data/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] + starlist_names = [f'{test_data_path}/mb10364_data/2011_10_31_F606W_MATCHUP_XYMEEE_final.calib', + f'{test_data_path}/mb10364_data/2012_09_25_F606W_MATCHUP_XYMEEE_final.calib', + f'{test_data_path}/mb10364_data/2013_10_24_F606W_MATCHUP_XYMEEE_final.calib'] list_of_starlists = [] @@ -557,7 +532,7 @@ def test_MosaicToRef_hst_me(): mag_trans=False, trans_weighting='both,std', init_guess_mode='miracle', - save_path='test_data/mb10364_data/test_MosaicToRef_hst_me.pkl', + # save_path=f'{test_data_path}/mb10364_data/test_MosaicToRef_hst_me.pkl', verbose=False ) msc.fit() @@ -573,9 +548,9 @@ def test_bootstrap(): etc.) """ # Read in starlists for MosaicToRef - ref = Table.read('test_data/ref_vel.lis', format='ascii') - list1 = Table.read('test_data/E.lis', format='ascii') - list2 = Table.read('test_data/F.lis', format='ascii') + ref = Table.read(f'{test_data_path}/ref_vel.lis', format='ascii') + list1 = Table.read(f'{test_data_path}/E.lis', format='ascii') + list2 = Table.read(f'{test_data_path}/F.lis', format='ascii') list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) @@ -684,9 +659,9 @@ def test_calc_vel_in_bootstrap(): import copy # Define match parameters - ref = Table.read('test_data/ref_vel.lis', format='ascii') - list1 = Table.read('test_data/E.lis', format='ascii') - list2 = Table.read('test_data/F.lis', format='ascii') + ref = Table.read(f'{test_data_path}/ref_vel.lis', format='ascii') + list1 = Table.read(f'{test_data_path}/E.lis', format='ascii') + list2 = Table.read(f'{test_data_path}/F.lis', format='ascii') list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) @@ -752,9 +727,9 @@ def test_transform_xym(): otherwise """ #---Align 1: self.mag_Trans = False---# - ref = Table.read('test_data/ref_vel.lis', format='ascii') - list1 = Table.read('test_data/E.lis', format='ascii') - list2 = Table.read('test_data/F.lis', format='ascii') + ref = Table.read(f'{test_data_path}/ref_vel.lis', format='ascii') + list1 = Table.read(f'{test_data_path}/E.lis', format='ascii') + list2 = Table.read(f'{test_data_path}/F.lis', format='ascii') list1 = starlists.StarList.from_table(list1) list2 = starlists.StarList.from_table(list2) @@ -915,7 +890,7 @@ def test_masked_cols(): for ee in range(len(epochs)): lis_file = 'mag' + epochs[ee] + '_ob150029_kp_rms_named.lis' - lis = starlists.StarList.from_lis_file(f'test_data/{lis_file}') + lis = starlists.StarList.from_lis_file(f'{test_data_path}/{lis_file}') list_of_starlists.append(lis) # Run the align @@ -947,7 +922,7 @@ def make_fake_starlists_shifts(): # Save original positions as reference (1st) list. fmt = '{0:10s} {1:5.2f} 2015.0 {2:9.4f} {3:9.4f} 0 0 0 0\n' - _out = open('test_data/random_0.lis', 'w') + _out = open(f'{test_data_path}/random_0.lis', 'w') for ii in range(N_stars): _out.write(fmt.format(name[ii], m[ii], x[ii], y[ii])) _out.close() @@ -972,7 +947,7 @@ def make_fake_starlists_shifts(): mnew = m + np.random.randn(N_stars) * 0.05 - _out = open('test_data/random_shift_{0:d}.lis'.format(ss+1), 'w') + _out = open(f'{test_data_path}/random_shift_{ss+1}.lis', 'w') for ii in range(N_stars): _out.write(fmt.format(name[ii], mnew[ii], xnew[ii], ynew[ii])) _out.close() @@ -1010,7 +985,7 @@ def make_fake_starlists_poly1(seed=-1): # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('test_data/random_ref.fits', overwrite=True) + lis.write(f'{test_data_path}/random_ref.fits', overwrite=True) ########## # Shifts @@ -1061,7 +1036,7 @@ def make_fake_starlists_poly1(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('test_data/random_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write(f'{test_data_path}/random_{ss}.fits', overwrite=True) return (xy_trans,mag_trans) @@ -1091,7 +1066,7 @@ def make_fake_starlists_poly0_vel(seed=-1): vxe = np.abs(vxe) vye = np.abs(vye) - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + name = [f'star_{ii:03d}' for ii in range(N_stars)] # Make an StarList lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], @@ -1154,7 +1129,7 @@ def make_fake_starlists_poly0_vel(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('test_data/random_vel_p0_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write(f'{test_data_path}/random_vel_p0_{ss}.fits', overwrite=True) return (xy_trans, mag_trans) @@ -1185,7 +1160,7 @@ def make_fake_starlists_poly1_vel(seed=-1): vxe = np.abs(vxe) vye = np.abs(vye) - name = ['star_{0:03d}'.format(ii) for ii in range(N_stars)] + name = [f'star_{ii:03d}' for ii in range(N_stars)] # Make an StarList lis = starlists.StarList([name, m0, m0e, x0, x0e, y0, y0e, vx, vxe, vy, vye, t0], @@ -1197,7 +1172,7 @@ def make_fake_starlists_poly1_vel(seed=-1): # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('test_data/random_vel_ref.fits', overwrite=True) + lis.write(f'{test_data_path}/random_vel_ref.fits', overwrite=True) ########## # Propogate to new times and distort. @@ -1248,7 +1223,7 @@ def make_fake_starlists_poly1_vel(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('test_data/random_vel_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write(f'{test_data_path}/random_vel_{ss}.fits', overwrite=True) return (xy_trans, mag_trans) @@ -1303,7 +1278,7 @@ def make_fake_starlists_poly1_acc(seed=-1): # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('test_data/random_acc_ref.fits', overwrite=True) + lis.write(f'{test_data_path}/random_acc_ref.fits', overwrite=True) ########## # Propogate to new times and distort. @@ -1354,7 +1329,7 @@ def make_fake_starlists_poly1_acc(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('test_data/random_acc_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write(f'{test_data_path}/random_acc_{ss}.fits', overwrite=True) return (xy_trans, mag_trans) @@ -1406,7 +1381,7 @@ def make_fake_starlists_poly1_par(seed=-1): # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('test_data/random_par_ref.fits', overwrite=True) + lis.write(f'{test_data_path}/random_par_ref.fits', overwrite=True) ########## # Propogate to new times and distort. @@ -1466,19 +1441,21 @@ def make_fake_starlists_poly1_par(seed=-1): new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) - new_lis.write('test_data/random_par_{0:d}.fits'.format(ss), overwrite=True) + new_lis.write(f'{test_data_path}/random_par_{ss}.fits', overwrite=True) return (xy_trans, mag_trans) if __name__ == '__main__': - test_MosaicToRef_hst_me() + test_MosaicSelfRef() + # test_MosaicToRef_hst_me() # import pickle # import matplotlib.pyplot as plt - # with open('test_data/my_gaia.pkl', 'rb') as f: + # with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: # my_gaia = pickle.load(f) - # with open('test_data/list_of_starlists.pkl', 'rb') as f: + # with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: # list_of_starlists = pickle.load(f) # ra_deg, dec_deg = 18.0, -30.0 + # my_gaia.remove_column('motion_model_used') # msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, # dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], # outlier_tol=[None, None, 3], mag_lim=[6, 20], From 0686a9a6972bc12d70fd50308fce9eeb57ccf33e Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 25 Feb 2026 17:40:31 -0800 Subject: [PATCH 43/94] Trim trailing spaces --- flystar/align.py | 464 ++++++++++++++++---------------- flystar/analysis.py | 102 ++++---- flystar/archive_io.py | 6 +- flystar/examples.py | 48 ++-- flystar/match.py | 104 ++++---- flystar/motion_model.py | 122 ++++----- flystar/plots.py | 538 +++++++++++++++++++------------------- flystar/starlists.py | 100 +++---- flystar/startables.py | 120 ++++----- flystar/stitch_method2.py | 34 +-- flystar/template.py | 44 ++-- 11 files changed, 841 insertions(+), 841 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 9ec4a2f..d698e99 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -21,19 +21,19 @@ def __init__( # Alignment parameters ref_index=0, iters=2, - dr_tol=[1, 1], + dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=[None, None], # Transformation parameters trans_class=transforms.PolyTransform, trans_args=[{'order': 2}, {'order': 2}], - trans_input=None, + trans_input=None, trans_weighting=None, init_order=1, - init_guess_mode='miracle', + init_guess_mode='miracle', calc_trans_inverse=False, # Magnitude parameters - mag_trans=True, + mag_trans=True, mag_lim=None, # Motion model parameters motion_models=['Empty', 'Fixed'], @@ -44,11 +44,11 @@ def __init__( absolute_sigma=False, # Advanced options iter_callback=None, - save_path=None, + save_path=None, verbose=True ): """ - Make a mosaic object by passing in a list of starlists and then running fit(). + Make a mosaic object by passing in a list of starlists and then running fit(). Required Parameters ------------------- @@ -59,10 +59,10 @@ def __init__( Note that there is an optional weights column called 'w'. If this column exists in any of the lists, it will be queried to determine if an individual star can be used to derive the transformations between starlists. This is the most flexible way - to allow you to determine, as a function of time and star, which ones are good enough - in the transformation. Note that just because it can be used (i.e. w_in=1), - doesn't meant that it will be used. The mag limits and outliers still take precedence. - Note also that the weights that go into the transformation are + to allow you to determine, as a function of time and star, which ones are good enough + in the transformation. Note that just because it can be used (i.e. w_in=1), + doesn't meant that it will be used. The mag limits and outliers still take precedence. + Note also that the weights that go into the transformation are star_list['w'] * ref_list['w'] * weight_from_keyword (see the weights parameter) @@ -72,11 +72,11 @@ def __init__( ------------------- ref_index : int The index of the reference epoch. (default = 0). Note that this is the reference - list only for the first iteration. Subsequent iterations will utilize the sigma-clipped - mean of the positions from all the starlists. + list only for the first iteration. Subsequent iterations will utilize the sigma-clipped + mean of the positions from all the starlists. iters : int - The number of iterations used in the matching and transformation. TO DO: INNER/OUTER? + The number of iterations used in the matching and transformation. TO DO: INNER/OUTER? dr_tol : list or array The delta-radius (dr) tolerance for matching in units of the reference coordinate system. @@ -84,25 +84,25 @@ def __init__( dm_tol : list or array The delta-magnitude (dm) tolerance for matching in units of the reference coordinate system. - This is a list of dm values, one for each iteration of matching/transformation. + This is a list of dm values, one for each iteration of matching/transformation. outlier_tol : list or array - The outlier tolerance (in units of sigma) for rejecting outlier stars. + The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal - transformation parameters between each list and the reference list. + transformation parameters between each list and the reference list. trans_args : dictionary - A dictionary (or a list of dictionaries) containing any extra keywords that are needed - in the transformation object. For instance, "order". Note that if a list is passed in, + A dictionary (or a list of dictionaries) containing any extra keywords that are needed + in the transformation object. For instance, "order". Note that if a list is passed in, then the transformation argument (i.e. order) will be changed for every iteration in iters. trans_input : array or list of transform objects def = None. If not None, then this should contain an array or list of transform - objects that will be used as the initial guess in the alignment and matching. + objects that will be used as the initial guess in the alignment and matching. trans_weighting : str Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want @@ -115,7 +115,7 @@ def = None. If not None, then this should contain an array or list of transform init_guess_mode : string If no initial transformations are passed in via the trans_input keyword, then we have - to make the initial transformation and matching blindly. We can do this in a couple of + to make the initial transformation and matching blindly. We can do this in a couple of different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). calc_trans_inverse: boolean @@ -126,13 +126,13 @@ def = None. If not None, then this should contain an array or list of transform self.trans_list_inverse doesn't exist if calc_trans_inverse == False mag_trans : boolean - If true, this will also calculate and (temporarily) apply a zeropoint offset to - magnitudes in each list to bring them into a common magnitude system. This is - essential for matching (with finite dm_tol) starlists of different filters or - starlists that are not photometrically calibrated. Note that the final_table columns + If true, this will also calculate and (temporarily) apply a zeropoint offset to + magnitudes in each list to bring them into a common magnitude system. This is + essential for matching (with finite dm_tol) starlists of different filters or + starlists that are not photometrically calibrated. Note that the final_table columns of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the - final_table column 'm_orig' will contain the original un-transformed magnitudes. - If mag_trans = False, then no such zeropoint offset it applied at any point. + final_table column 'm_orig' will contain the original un-transformed magnitudes. + If mag_trans = False, then no such zeropoint offset it applied at any point. mag_lim : array If different from None, it indicates the minimum and maximum magnitude @@ -192,9 +192,9 @@ def = None. If not None, then this should contain an array or list of transform stars_table = msc.ref_table # Plot the magnitude of the first star vs. time: - # Overplot the mean magnitude. + # Overplot the mean magnitude. plt.plot(stars_table['t'][0, :], stars_table['m'][0, :], 'k.') - plt.axhline(stars_table['m0'][0]) + plt.axhline(stars_table['m0'][0]) # Plot the X position of the first star vs. time: # Overplot the best-fit proper motion. @@ -259,7 +259,7 @@ def = None. If not None, then this should contain an array or list of transform self.verbose = 9 if self.verbose is False: self.verbose = 0 - + self.N_lists = len(self.star_lists) # Hard-coded values: @@ -303,18 +303,18 @@ def fix_iterable_conditions(self): assert len(self.mag_lim) == len(self.star_lists) return - - + + def fit(self): """ Using the current parameter settings, match and transform all the lists to a reference position. Note in the first pass, the reference position is just the specified input reference starlist. In subsequent iterations, - this is updated. + this is updated. The ultimate outcome is the creation of self.ref_table. This reference table will contain "averaged" quantites as well as a big 2D array of all - the matched original and transformed quantities. + the matched original and transformed quantities. Averaged columns on ref_table: x0 @@ -343,8 +343,8 @@ def fit(self): # ########## for nn in range(self.iters): - - # If we are on subsequent iterations, remove matching results from the + + # If we are on subsequent iterations, remove matching results from the # prior iteration. This leaves aggregated (1D) columns alone. if nn > 0: self.reset_ref_values() @@ -358,7 +358,7 @@ def fit(self): print("**********") # ALL the action is in here. Match and transform the stack of starlists. - # This updates trans objects and the ref_table. + # This updates trans objects and the ref_table. self.match_and_transform(self.mag_lim[self.ref_index], self.dr_tol[nn], self.dm_tol[nn], self.outlier_tol[nn], self.trans_args[nn]) @@ -374,13 +374,13 @@ def fit(self): if self.iter_callback != None: self.iter_callback(self.ref_table, nn) - + ########## # # Re-do all matching given final transformations. # No trimming this time. - # First rest the reference table 2D values. + # First rest the reference table 2D values. ########## self.reset_ref_values(exclude=['used_in_trans']) @@ -395,13 +395,13 @@ def fit(self): ########## # Clean up output table. - # + # ########## # Find where stars are detected. if self.verbose > 0: print('') print(' Preparing the reference table...') - + self.ref_table.detections() ### Drop all stars that have 0 detections. @@ -484,7 +484,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar if self.mag_trans: star_list_T.transform_xym(trans) # trimmed, transformed else: - star_list_T.transform_xy(trans) + star_list_T.transform_xy(trans) # Match stars between the transformed, trimmed lists. idx1, idx2, dr, dm = match.match(star_list_T['x'], star_list_T['y'], star_list_T['m'], @@ -499,7 +499,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar keepers = self.outlier_rejection_indices(star_list_T[idx1], ref_list[idx2], outlier_tol, verbose=self.verbose) if self.verbose > 1: print( ' Rejected ', len(idx1) - sum(keepers), ' outliers.' ) - + idx1 = idx1[keepers] idx2 = idx2[keepers] @@ -516,10 +516,10 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Determine weights in the fit. weight = self.get_weights_for_lists(ref_list[idx2], star_list_T[idx1]) - # Derive the best-fit transformation parameters. + # Derive the best-fit transformation parameters. if self.verbose > 1: print( ' Using ', len(idx1), ' stars in transformation.' ) - trans = self.trans_class.derive_transform(star_list_orig_trim['x'][idx1], star_list_orig_trim['y'][idx1], + trans = self.trans_class.derive_transform(star_list_orig_trim['x'][idx1], star_list_orig_trim['y'][idx1], ref_list['x'][idx2], ref_list['y'][idx2], **trans_args, m=star_list_orig_trim['m'][idx1], mref=ref_list['m'][idx2], @@ -567,7 +567,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar print(fmt.format(nr=star_r['name'], n=star_s['name'], xl=star_t['x'], xr=star_r['x'], yl=star_t['y'], yr=star_r['y'], ml=star_t['m'], mr=star_r['m'], - dx=(star_t['x'] - star_r['x']) * 1e3, + dx=(star_t['x'] - star_r['x']) * 1e3, dy=(star_t['y'] - star_r['y']) * 1e3, dm=(star_t['m'] - star_r['m']), xo=star_s['x'], yo=star_s['y'], mo=star_s['m'])) @@ -610,7 +610,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Calculate the residuals just for those used in the transformation used = np.where(self.ref_table['used_in_trans'][:, ii] == True)[0] used_good = used[ np.where(np.isin(used, idx_ref) == True)[0] ] - + dr_u = np.hypot(self.ref_table['x'][used_good, ii] - ref_list['x'][used_good], self.ref_table['y'][used_good, ii] - ref_list['y'][used_good]) dm_u = np.abs(self.ref_table['m'][used_good, ii] - ref_list['m'][used_good]) @@ -620,7 +620,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar print(' Dropped {0:d} matches after transform.'.format(len(used) - len(used_good))) return - + def setup_trans_info(self): """ Setup transformation info into a usable format. @@ -633,7 +633,7 @@ def setup_trans_info(self): trans_args = self.trans_args N_lists = len(self.star_lists) iters = self.iters - + trans_list = [None for ii in range(N_lists)] if trans_input != None: trans_list = [trans_input[ii] for ii in range(N_lists)] @@ -655,7 +655,7 @@ def setup_trans_info(self): return def setup_ref_table_from_starlist(self, star_list): - """ + """ Start with the reference list.... this will change and grow over time, so make a copy that we will keep updating. The reference table will contain one column for every named @@ -688,10 +688,10 @@ def setup_ref_table_from_starlist(self, star_list): # Use the columns from the ref list to make the ref_table. ref_table = StarTable(**col_arrays) - + # Make new columns to hold original values. These will be copies # of the old columns and will only include x, y, m, xe, ye, me. - # The columns we have already created will hold transformed values. + # The columns we have already created will hold transformed values. trans_col_names = ['x', 'y', 'm', 'xe', 'ye', 'me', 'w'] for tt in range(len(trans_col_names)): old_name = trans_col_names[tt] @@ -703,7 +703,7 @@ def setup_ref_table_from_starlist(self, star_list): # Make sure ref_table has the necessary x0, y0, m0 and associated # error columns. If they don't exist, then add them as a copy of - # the original x,y,m etc columns. + # the original x,y,m etc columns. new_cols_arr = ['x0', 'y0', 'm0'] orig_cols_arr = ['x', 'y', 'm'] ref_cols = ref_table.keys() @@ -739,14 +739,14 @@ def setup_ref_table_from_starlist(self, star_list): # new_err_cols as an array of zeros vals = np.zeros(len(ref_table)) new_col = Column(vals, name=new_err_cols[ii]) - ref_table.add_column(new_col) + ref_table.add_column(new_col) # Final check: ref_table should now have x0, y0, m0, x0e, y0e, and m0e columns # This is necessary for later steps, even if the columns are just zeros. final_new_cols = np.concatenate((new_cols_arr, new_err_cols)) for ii in final_new_cols: assert ii in ref_table.keys() - + # Make sure we have a column to indicate whether each star # CAN BE USED in the transformation. This will be 1D if 'use_in_trans' not in ref_table.colnames: @@ -758,7 +758,7 @@ def setup_ref_table_from_starlist(self, star_list): if 'used_in_trans' not in ref_table.colnames: new_col = Column(np.zeros([len(ref_table), 1], dtype=bool), name='used_in_trans') ref_table.add_column(new_col) - + # Keep track of whether this is an original reference star. col_ref_orig = Column(np.ones(len(ref_table), dtype=bool), name='ref_orig') ref_table.add_column(col_ref_orig) @@ -784,8 +784,8 @@ def setup_ref_table_from_starlist(self, star_list): return ref_table def apply_mag_lim_via_use_in_trans(self, ref_list, ref_mag_lim): - """Set the use_in_trans flag to False for any star in the - star list that falls beyond the magnitude limits. + """Set the use_in_trans flag to False for any star in the + star list that falls beyond the magnitude limits. This should really only be applied to reference star lists. """ @@ -799,17 +799,17 @@ def apply_mag_lim_via_use_in_trans(self, ref_list, ref_mag_lim): no_use = (ref_list[mcol] < ref_mag_lim[0]) | (ref_list[mcol] >= ref_mag_lim[1]) ref_list['use_in_trans'][no_use] = False - + return def outlier_rejection_indices(self, star_list, ref_list, outlier_tol, verbose=True): """ Determine the outliers based on the residual positions between two different - starlists and some threshold (in sigma). Return the indices of the stars - to keep (that shouldn't be rejected as outliers). + starlists and some threshold (in sigma). Return the indices of the stars + to keep (that shouldn't be rejected as outliers). Note that we assume that the star_list and ref_list are already transformed and - matched. + matched. Parameters ---------- @@ -820,8 +820,8 @@ def outlier_rejection_indices(self, star_list, ref_list, outlier_tol, verbose=Tr starlist with 'x0', 'y0' outlier_tol : float - Number of sigma inside which we keep stars and outside of which we - reject stars as outliers. + Number of sigma inside which we keep stars and outside of which we + reject stars as outliers. Optional Parameters -------------------- @@ -830,7 +830,7 @@ def outlier_rejection_indices(self, star_list, ref_list, outlier_tol, verbose=Tr Returns ---------- keepers : boolean array - The boolean array of the stars to keep. + The boolean array of the stars to keep. """ # Optionally propogate the reference positions forward in time. xref = ref_list['x'] @@ -855,7 +855,7 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li Inputs ---------- star_list : StarList - The original star list. + The original star list. star_list_T : StarList The original star list now transformed into the reference coordinate system. @@ -870,7 +870,7 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li The indices of the matched targets in the origin starlist (epoch). idx_ref_in_trans : np.array dtype=int - The indices in the reference table (self.ref_table). + The indices in the reference table (self.ref_table). """ ### Update the reference table for matched stars. # Add the matched stars to the reference table. @@ -886,8 +886,8 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li ### Add the unmatched stars and grow the size of the reference table. self.ref_table, idx_lis_new, idx_ref_new = add_rows_for_new_stars( - self.ref_table, - star_list, + self.ref_table, + star_list, idx_lis, motion_model_name=self.motion_model_for_new_star.name ) @@ -1014,7 +1014,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): self.ref_table[val][keep_orig] = vals_orig[val] return - + def get_weights_for_lists(self, ref_list, star_list): if 'xe' in ref_list.colnames: var_xref = ref_list['xe']**2 @@ -1022,7 +1022,7 @@ def get_weights_for_lists(self, ref_list, star_list): else: var_xref = 0.0 var_yref = 0.0 - + if 'xe' in star_list.colnames: var_xlis = star_list['xe']**2 var_ylis = star_list['ye']**2 @@ -1067,14 +1067,14 @@ def get_weights_for_lists(self, ref_list, star_list): return weight - + def match_lists(self, dr_tol, dm_tol): """ Using the existing trans objects, match all the starlists to the - reference starlist (self.ref_table), propogated to the appropriate epoch. + reference starlist (self.ref_table), propogated to the appropriate epoch. No trimming of stars. - No new transformations derived. + No new transformations derived. The resulting matched values will be used to update self.ref_table """ @@ -1105,7 +1105,7 @@ def match_lists(self, dr_tol, dm_tol): def get_ref_list_from_table(self, epoch): """ Convert the averaged quantites in self.ref_table into a StarList object - appropriate for the specified epoch. + appropriate for the specified epoch. Columns in resulting reference list will include: name @@ -1117,7 +1117,7 @@ def get_ref_list_from_table(self, epoch): me (optional) use_in_trans (optional) """ - # Reference stars will be named. + # Reference stars will be named. name = self.ref_table['name'] # Calculate x, y, xe, ye if 'motion_model_used' in self.ref_table.colnames: @@ -1136,7 +1136,7 @@ def get_ref_list_from_table(self, epoch): if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): # If any required column has non-finite values, skip to the next motion model. continue - + print(f"Inferring positions using motion model {mm.name}.") # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): @@ -1198,32 +1198,32 @@ def reset_ref_values(self, exclude=None): """ Reset all the 2D arrays in the reference table. This is the action we take at the beginning of each new iteration. We don't preserve matching - results from the prior iterations. + results from the prior iterations. """ # All 2D columns should be reset. for col_name in self.ref_table.colnames: if (exclude != None) and (col_name in exclude): continue - + if len(self.ref_table[col_name].data.shape) == 2: # Find the 2D columns # Loop through epochs for this array. for cc in range(self.ref_table[col_name].shape[1]): self.ref_table._set_invalid_list_values(col_name, cc) return - + def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_bootstrap=True, weighting='var', use_scipy=True, absolute_sigma=False, show_progress=True, update_errors=False): """ Function to calculate bootstrap errors for the transformations as well as the proper motions. For each iteration, this will: - 1) Draw full-size bootstrap w/replacement sample from reference stars in + 1) Draw full-size bootstrap w/replacement sample from reference stars in ref_table and re-calculate the transformations for each epoch 2) Apply transformation to all stars in each epoch If calc_vel_in_bootstraps: 3) For each star, draw full-size boostrap sample w/replacement from epochs 4) Calculate proper motion for each star using resampled epochs - + The saved outputs will be: x_trans, y_trans, m_trans (transformed postions/mags), as well as the proper motion fit parameters. @@ -1237,39 +1237,39 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot MosaicToRef object after the complete match_and_transform process n_boot: int, must be greater than 0 - Number of bootstrap iterations when calculating transformations and the proper motion. + Number of bootstrap iterations when calculating transformations and the proper motion. PM bootstrap is only done for final proper motion calculation (e.g., not for each iteration of the starlist for matching) boot_epochs_min: int or -1 - In order to be included in bootstrap analysis, non-reference stars must be detected in - at least boot_epochs_min epochs. If boot_epochs_min = -1, then all stars will + In order to be included in bootstrap analysis, non-reference stars must be detected in + at least boot_epochs_min epochs. If boot_epochs_min = -1, then all stars will be included in the analysis, regardless of the number of epochs detected. For stars that fail boot_epochs_min criteria, np.nan is used calc_vel_in_bootstrap: boolean - If true, do bootstrap sample w/ replacement over the epochs and calculate + If true, do bootstrap sample w/ replacement over the epochs and calculate stellar proper motions, as well as the bootstrap over reference stars - to calculate positional alignment errors. If false, only + to calculate positional alignment errors. If false, only calculate position alignment errors. - + weighting: str 'var' or 'std' weighting for velocity fitting, by default 'var'. If 'var', use the variance of the residuals to weight the fit. If 'std', use the standard deviation of the residuals to weight the fit. - + absolute_sigma: boolean If True, use the absolute sigma in the velocity fitting. If False, use the relative sigma, by default False. - + update_errors: boolean If True, save the starlist errors as xe_list, bootstrap errors as xe_boot, and their quad sum as xe (and likewise for ye and me). If False (default), leave the starlist errors in place as xe and bootstrap errors as xe_boot. - + Output: ------ New columns will be added to self.ref_table: 'xe_boot', 2D column: bootstrap x pos uncertainties due to transformation for each epoch 'ye_boot', 2D column: bootstrap y pos uncertainties due to transformation for each epoch 'me_boot', 2D column: bootstrap mag uncertainties due to transformation for each epoch - + If calc_vel_in_bootstrap: '_err_boot', 1D column: bootstrap uncertainties in for motion model fit @@ -1292,9 +1292,9 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot t0_arr = t0_arr[idx_good] else: idx_good = np.arange(0, len(ref_table), 1) - + #idx_ref = np.where(ref_table['use_in_trans'] == True) - + # Initialize sums for output x_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) x2_boot_sum = np.zeros((len(ref_table['x']), n_epochs)) @@ -1321,7 +1321,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot for col in motion_col_list: motion_boot_sum[col] = np.zeros((len(ref_table['x']))) motion2_boot_sum[col] = np.zeros((len(ref_table['x']))) - + all_mm_map = motion_model.motion_model_map() motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] motion_boot_min_epochs = np.max([mm.n_params for mm in motion_model_list]) @@ -1335,7 +1335,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # reference stars. Use a loop for each epoch here, so we # can handle case where different reference stars are used # in different epochs - + # Initialize data arrays x_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 y_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 @@ -1343,13 +1343,13 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot xe_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 ye_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 me_trans_arr = np.ones((len(ref_table['x']), n_epochs)) * -999 - + for jj in range(n_epochs): # Extract bootstrap sample of matched reference stars for this epoch #good = np.where(~np.isnan(ref_table['x_orig'][idx_ref][:,jj])) good = np.where( (ref_table['used_in_trans'][:,jj] == True) & (~np.isnan(ref_table['x_orig'][:,jj])) ) samp_idx = np.random.choice(good[0], len(good[0]), replace=True) - + # Get reference star positions in particular epoch from ref_list. t_epoch = t_arr[jj] ref_orig = self.get_ref_list_from_table(t_epoch)[idx_good] @@ -1383,7 +1383,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # Sanity check: makes sure names match between ref_boot and starlist_boot, # since they need to line up assert np.all(ref_boot['name'] == starlist_boot['name']) - + # Calculate weights based on weights keyword. If weights desired, will need to # make starlist objects for this if self.trans_weighting != None: @@ -1396,11 +1396,11 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot starlist_boot_T.transform_xym(self.trans_list[jj]) else: starlist_boot_T.transform_xy(self.trans_list[jj]) - + weight = self.get_weights_for_lists(ref_boot, starlist_boot_T) else: weight = None - + # Recalculate transformation trans = self.trans_class.derive_transform(starlist_boot['x'], starlist_boot['y'], ref_boot['x'], ref_boot['y'], @@ -1424,7 +1424,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot starlist_T.transform_xym(trans) else: starlist_T.transform_xy(trans) - + # Add output to pos arrays x_trans_arr[:,jj] = starlist_T['x'] y_trans_arr[:,jj] = starlist_T['y'] @@ -1432,7 +1432,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot xe_trans_arr[:,jj] = starlist_T['xe'] ye_trans_arr[:,jj] = starlist_T['ye'] me_trans_arr[:,jj] = starlist_T['me'] - + x_boot_sum += x_trans_arr x2_boot_sum += x_trans_arr**2 y_boot_sum += y_trans_arr @@ -1440,12 +1440,12 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot if self.mag_trans: m_boot_sum += m_trans_arr m2_boot_sum += m_trans_arr**2 - + t2 = time.time() #print('=================================================') #print('Time to do {0} epochs: {1}s'.format(n_epochs, t2-t1)) #print('=================================================') - + # Finally, calculate proper motions for this bootstrap iteration # for each star, if desired. Draw a full-sample bootstrap over the epochs # for each star, and then run it through the startable fit_velocities machinery @@ -1454,7 +1454,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot while len(np.unique(boot_idx)) < motion_boot_min_epochs: boot_idx = np.random.choice(np.arange(0, n_epochs, 1), size=n_epochs) t_boot = t_arr[boot_idx] - + star_table = StarTable(name=ref_table['name'], x=x_trans_arr[:,boot_idx], y=y_trans_arr[:,boot_idx], @@ -1520,14 +1520,14 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot data_dict = {'xe_boot': x_err_b, 'ye_boot': y_err_b, 'me_boot': m_err_b} for col in motion_col_list: data_dict[col+'_err_boot'] = motion_data_err[col] - + for ff in col_heads_2D: col = Column(np.ones((len(self.ref_table), n_epochs)), name=ff) col.fill(np.nan) - + col[idx_good] = data_dict[ff] self.ref_table.add_column(col) - + # # Calculate chi^2 with bootstrap positional errors # # Determine which motion model to use: # motion_model_list = sorted(motion_model_list, key=lambda mm: mm.n_params) @@ -1556,18 +1556,18 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # Now handle the velocities, if they were calculated if calc_vel_in_bootstrap: col_heads_1D = [col+'_err_boot' for col in motion_col_list] - + for ff in col_heads_1D: col = Column(np.ones(len(self.ref_table)), name=ff) col.fill(np.nan) - + col[idx_good] = data_dict[ff] self.ref_table.add_column(col) - + print('===============================') print('Done with bootstrap') print('===============================') - + if update_errors: self.ref_table['xe_list'] = self.ref_table['xe'] self.ref_table['ye_list'] = self.ref_table['ye'] @@ -1578,18 +1578,18 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot print("Saved starlist errors to xe_list and added xe_boot to xe in quadrature.") print("The same was done for ye and me.") - + return class MosaicToRef(MosaicSelfRef): def __init__( - self, - ref_list, - list_of_starlists, + self, + ref_list, + list_of_starlists, # Alignment parameters iters=2, - dr_tol=[1, 1], + dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=[None, None], # Reference behavior (MosiacToRef specific) @@ -1604,8 +1604,8 @@ def __init__( init_guess_mode='miracle', calc_trans_inverse=False, # Magnitude parameters - mag_trans=True, - mag_lim=None, + mag_trans=True, + mag_lim=None, ref_mag_lim=None, # Motion model parameters motion_models=['Empty', 'Fixed'], @@ -1624,7 +1624,7 @@ def __init__( Required Parameters ------------------- ref_list : StarList object - Can optionally have velocities. All starlists will be aligned to this one. + Can optionally have velocities. All starlists will be aligned to this one. list_of_starlists : array of StarList objects An array or list of flystar.starlists.StarList objects (which are Astropy Tables). @@ -1633,20 +1633,20 @@ def __init__( Note that there is an optional weights column called 'w'. If this column exists in any of the lists, it will be queried to determine if an individual star can be used to derive the transformations between starlists. This is the most flexible way - to allow you to determine, as a function of time and star, which ones are good enough - in the transformation. Note that just because it can be used (i.e. w_in=1), - doesn't meant that it will be used. The mag limits and outliers still take precedence. - Note also that the weights that go into the transformation are + to allow you to determine, as a function of time and star, which ones are good enough + in the transformation. Note that just because it can be used (i.e. w_in=1), + doesn't meant that it will be used. The mag limits and outliers still take precedence. + Note also that the weights that go into the transformation are star_list['w'] * ref_list['w'] * weight_from_keyword (see the weights parameter) - for those stars not trimmed out by the other criteria. + for those stars not trimmed out by the other criteria. Optional Parameters ---------- iters : int - The number of iterations used in the matching and transformation. TO DO: INNER/OUTER? + The number of iterations used in the matching and transformation. TO DO: INNER/OUTER? dr_tol : list or array The delta-radius (dr) tolerance for matching in units of the reference coordinate system. @@ -1654,24 +1654,24 @@ def __init__( dm_tol : list or array The delta-magnitude (dm) tolerance for matching in units of the reference coordinate system. - This is a list of dm values, one for each iteration of matching/transformation. + This is a list of dm values, one for each iteration of matching/transformation. outlier_tol : list or array - The outlier tolerance (in units of sigma) for rejecting outlier stars. + The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. use_ref_new : boolean - Each pass, new stars are matched and added to the ref_table. However, we don't - necessarily want to use these in the reference frame in subsequent passes. + Each pass, new stars are matched and added to the ref_table. However, we don't + necessarily want to use these in the reference frame in subsequent passes. If True, then the new stars will be used in later passes/iterations. If False, then the new stars will be carried, but not used in the transformation. We determine which stars to use through setting a boolean use_in_trans flag. update_ref_orig : boolean or str Should we update the reference values (position, velocity, t0) after each starlist - is transformed in each iteration? + is transformed in each iteration? - False if you want to get into an absolute reference frame and are using Gaia data. + False if you want to get into an absolute reference frame and are using Gaia data. True if you want to use the reference list as more of an initial guess. 'periter' if you want to align all the starlists, then calculate the velocity. @@ -1681,17 +1681,17 @@ def __init__( trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal - transformation parameters between each list and the reference list. + transformation parameters between each list and the reference list. trans_args : dictionary - A dictionary (or a list of dictionaries) containing any extra keywords that are needed - in the transformation object. For instance, "order". Note that if a list is passed in, + A dictionary (or a list of dictionaries) containing any extra keywords that are needed + in the transformation object. For instance, "order". Note that if a list is passed in, then the transformation argument (i.e. order) will be changed for every iteration in iters. trans_input : array or list of transform objects def = None. If not None, then this should contain an array or list of transform - objects that will be used as the initial guess in the alignment and matching. + objects that will be used as the initial guess in the alignment and matching. trans_weighting : str Either None (def), 'both,var', 'list,var', or 'ref,var' depending on whether you want @@ -1705,7 +1705,7 @@ def = None. If not None, then this should contain an array or list of transform init_guess_mode : string If no initial transformations are passed in via the trans_input keyword, then we have - to make the initial transformation and matching blindly. We can do this in a couple of + to make the initial transformation and matching blindly. We can do this in a couple of different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). calc_trans_inverse: boolean @@ -1716,13 +1716,13 @@ def = None. If not None, then this should contain an array or list of transform self.trans_list_inverse doesn't exist if calc_trans_inverse == False mag_trans : boolean - If true, this will also calculate and (temporarily) apply a zeropoint offset to - magnitudes in each list to bring them into a common magnitude system. This is - essential for matching (with finite dm_tol) starlists of different filters or - starlists that are not photometrically calibrated. Note that the final_table columns + If true, this will also calculate and (temporarily) apply a zeropoint offset to + magnitudes in each list to bring them into a common magnitude system. This is + essential for matching (with finite dm_tol) starlists of different filters or + starlists that are not photometrically calibrated. Note that the final_table columns of 'm', 'm0', and 'm0_err' will contain the transformed magnitudes while the - final_table column 'm_orig' will contain the original un-transformed magnitudes. - If mag_trans = False, then no such zeropoint offset it applied at any point. + final_table column 'm_orig' will contain the original un-transformed magnitudes. + If mag_trans = False, then no such zeropoint offset it applied at any point. mag_lim : array If different from None, it indicates the minimum and maximum magnitude @@ -1743,7 +1743,7 @@ def = None. If not None, then this should contain an array or list of transform fixed_params_dict : None or dict Dictionary of fixed parameters for motion models - + vel_weighting : str Either 'var' (def) or 'std', depending on whether you want to weight the motion model fits by the variance or standard deviation of the position data @@ -1765,7 +1765,7 @@ def = None. If not None, then this should contain an array or list of transform Controls the verbosity of print statements. (0 least, 9 most verbose). For backwards compatibility, 0 = False, 9 = True. (Note: technically right now no checks on whether the number is an integer or not...) - + Example ------- msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, @@ -1781,30 +1781,30 @@ def = None. If not None, then this should contain an array or list of transform msc.fit() # Access a list of all the transformation parameters: - trans_list = msc.trans_list + trans_list = msc.trans_list # Access the fully-combined reference table. stars_table = msc.ref_table # Plot the magnitude of the first star vs. time: - # Overplot the mean magnitude. + # Overplot the mean magnitude. plt.plot(stars_table['t'][0, :], stars_table['m'][0, :], 'k.') - plt.axhline(stars_table['m0'][0]) + plt.axhline(stars_table['m0'][0]) # Plot the X position of the first star vs. time: # Overplot the best-fit proper motion. times = stars_table['t'][0, :] plt.errorbar(times, stars_table['x'][0, :], yerr=stars_table['xe'][0, :]) - plt.axhline(stars_table['x0'][0] + stars_table['vx'][0]*(times - stars_table['t0'][0])) + plt.axhline(stars_table['x0'][0] + stars_table['vx'][0]*(times - stars_table['t0'][0])) """ super().__init__( - list_of_starlists, + list_of_starlists, # Alignment parameters - ref_index=-1, + ref_index=-1, iters=iters, - dr_tol=dr_tol, + dr_tol=dr_tol, dm_tol=dm_tol, - outlier_tol=outlier_tol, + outlier_tol=outlier_tol, # Transformation parameters trans_class=trans_class, trans_args=trans_args, @@ -1869,11 +1869,11 @@ def fit(self): Using the current parameter settings, match and transform all the lists to a reference position. Note in the first pass, the reference position is just the specified input reference starlist. In subsequent iterations, - this is (optionally) updated. + this is (optionally) updated. The ultimate outcome is the creation of self.ref_table. This reference table will contain "averaged" quantites as well as a big 2D array of all - the matched original and transformed quantities. + the matched original and transformed quantities. Averaged columns on ref_table: x0 @@ -1925,7 +1925,7 @@ def fit(self): # ########## for nn in range(self.iters): - # If we are on subsequent iterations, remove matching results from the + # If we are on subsequent iterations, remove matching results from the # prior iteration. This leaves aggregated (1D) columns alone. if nn > 0: self.reset_ref_values() @@ -1979,13 +1979,13 @@ def fit(self): ########## # Clean up output table. - # + # ########## # Find where stars are detected. if self.verbose > 0: print('') print(' Preparing the reference table...') - + self.ref_table.detections() ### Drop all stars that have 0 detections. @@ -2020,14 +2020,14 @@ def fit(self): def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, return_errors=False): """ Take a startable, check to see if it has motion/velocity columns. - If it does, then propagate the positions forward in time + If it does, then propagate the positions forward in time to the desired epoch. If no motion/velocities exist, then just use ['x0', 'y0'] or ['x', 'y'] Parameters ---------- t : float - The time to propagate to. Usually in decimal years; + The time to propagate to. Usually in decimal years; but it should be in the same units as the 't0' column in starlist. startable : StarTable @@ -2089,7 +2089,7 @@ def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, re fixed_params_dict={param: startable[param] for param in mm.fixed_param_names} ) break - + return x, y # # If no motion model, check for velocities @@ -2110,9 +2110,9 @@ def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, re def get_all_epochs(t): """ Helper function to get times of all epochs from a ref table. - This is required because our previous approach - of simply taking the time array of the star with the most detections - fails for mosaicked catalogs, because it is then possible that + This is required because our previous approach + of simply taking the time array of the star with the most detections + fails for mosaicked catalogs, because it is then possible that no star is detected in all fields. """ nepochs = len(t['t'][0]) @@ -2129,10 +2129,10 @@ def get_all_epochs(t): all_epochs = np.array(all_epochs) return all_epochs - + def setup_ref_table_from_starlist(star_list, motion_models): - """ + """ Start with the reference list.... this will change and grow over time, so make a copy that we will keep updating. The reference table will contain one columne for every named @@ -2161,7 +2161,7 @@ def setup_ref_table_from_starlist(star_list, motion_models): # Make new columns to hold original values. These will be copies # of the old columns and will only include x, y, m, xe, ye, me. - # The columns we have already created will hold transformed values. + # The columns we have already created will hold transformed values. trans_col_names = ['x', 'y', 'm', 'xe', 'ye', 'me', 'w'] for tt in range(len(trans_col_names)): old_name = trans_col_names[tt] @@ -2173,7 +2173,7 @@ def setup_ref_table_from_starlist(star_list, motion_models): # Make sure ref_table has the necessary x0, y0, m0 and associated # error columns. If they don't exist, then add them as a copy of - # the original x,y,m etc columns. + # the original x,y,m etc columns. new_cols_arr = ['x0', 'x0_err', 'y0', 'y0_err', 'm0', 'm0_err'] orig_cols_arr = ['x', 'xe', 'y', 'ye', 'm', 'me'] assert len(new_cols_arr) == len(orig_cols_arr) @@ -2188,7 +2188,7 @@ def setup_ref_table_from_starlist(star_list, motion_models): # Now add to ref_table new_col = Column(vals, name=new_cols_arr[ii]) ref_table.add_column(new_col) - + if 'use_in_trans' not in ref_table.colnames: new_col = Column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') ref_table.add_column(new_col) @@ -2198,7 +2198,7 @@ def setup_ref_table_from_starlist(star_list, motion_models): # Note that these are all the 1D columns. for col_name in ref_table.colnames: if len(ref_table[col_name].data.shape) == 2: # Find the 2D columns - ref_table._set_invalid_list_values(col_name, -1) + ref_table._set_invalid_list_values(col_name, -1) return ref_table @@ -2208,14 +2208,14 @@ def copy_over_values(ref_table, star_list, star_list_T, idx_epoch, idx_ref, idx_ into the reference table we carry around and that is the final output product. Copy only those values for stars that match. - Copy all columns that are in both ref_table and star_list_T. + Copy all columns that are in both ref_table and star_list_T. Copy all columns that are also in star_list but copy them into _orig. Parameters ---------- ref_table : StarTable The table we will be copying values into. Note the columns with the appropriate - names and dimensions must already exist. + names and dimensions must already exist. star_list : StarList The astropy table to copy values from. These should be untransformed (orig) values. star_list_T : StarList @@ -2242,7 +2242,7 @@ def reset_ref_values(ref_table): """ Reset all the 2D arrays in the reference table. This is the action we take at the beginning of each new iteration. We don't preserve matching - results from the prior iterations. + results from the prior iterations. """ # All 2D columns should be reset. for col_name in ref_table.colnames: @@ -2250,13 +2250,13 @@ def reset_ref_values(ref_table): # Loop through epochs for this array. for cc in range(ref_table[col_name].shape[1]): ref_table._set_invalid_list_values(col_name, cc) - + return def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fixed'): """ - For each star that is in star_list and NOT in idx_list, make a - new row in the reference table. The values will be empty (None, NAN, etc.). + For each star that is in star_list and NOT in idx_list, make a + new row in the reference table. The values will be empty (None, NAN, etc.). Parameters ---------- @@ -2277,7 +2277,7 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi idx_lis_new : list The list of indices into the star_list object for the "new" stars. idx_ref_new : list - The list of indices into the ref_table object for the "new" stars. + The list of indices into the ref_table object for the "new" stars. """ last_star_idx = len(ref_table) @@ -2304,7 +2304,7 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi new_col_empty = 'Empty' else: new_col_empty = np.nan - + if len(ref_table[col_name].shape) == 1: new_col_shape = N_newstars else: @@ -2330,7 +2330,7 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi """ def calc_mag_avg_all_stars(d): - # Determine how many stars there are. + # Determine how many stars there are. N_stars = len(d) # Determine how many epochs there are. @@ -2372,7 +2372,7 @@ def initial_align(table1, table2, briteN=100, y: y position xe: error in x position ye: error in y position - + vx: proper motion in x direction vy proper motion in y direction vxe: error in x proper motion @@ -2380,11 +2380,11 @@ def initial_align(table1, table2, briteN=100, m: magnitude me: magnitude error - + t0: linear motion time zero point use: specify use in transformation - + Parameters: ---------- @@ -2412,7 +2412,7 @@ def initial_align(table1, table2, briteN=100, Output: ------ Transformation object - + """ # Extract necessary information from tables (x, y, m) x1 = table1['x'] @@ -2460,7 +2460,7 @@ def transform_and_match(table1, table2, transform, dr_tol=1.0, dm_tol=None, verb starlist file positions. -transform: transformation object - + -verbose: bool, optional Prints on screen information on the matching @@ -2531,7 +2531,7 @@ def find_transform(table1, table1_trans, table2, transModel=transforms.PolyTrans if weights=='starlist', we only use postion error in transformed starlist. if weights=='reference', we only use position error in reference starlist. if weights==None, we don't use weights. - + verbose: bool (default=True) Prints on screen information on the matching @@ -2547,7 +2547,7 @@ def find_transform(table1, table1_trans, table2, transModel=transforms.PolyTrans (transModel != transforms.LegTransform) ): print(( '{0} not supported yet!'.format(transModel))) return - + # Extract *untransformed* coordinates from starlist 1 # and the matching coordinates from starlist 2 x1 = table1['x'] @@ -2625,7 +2625,7 @@ def find_transform_new(table1_mat, table2_mat, if weights = 'both' or 'starlist' then the positions in table 1 are first transformed using the transInit object. This is necessary if the plate scales are very different between the table 1 and the reference list. - + verbose: bool (default=True) Prints on screen information on the matching @@ -2638,7 +2638,7 @@ def find_transform_new(table1_mat, table2_mat, if ( (transModel != transforms.four_paramNW) & (transModel != transforms.PolyTransform) ): print(( '{0} not supported yet!'.format(transModel))) return - + # Extract *untransformed* coordinates from starlist 1 # and the matching coordinates from starlist 2 x1 = table1_mat['x'] @@ -2726,7 +2726,7 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric outFile: string (default: 'outTrans.txt') Name of output text file - + Output: ------ txt file with the file name outFile @@ -2734,7 +2734,7 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric # Extract info about transformation trans_name = transform.__class__.__name__ trans_order = transform.order - + # Extract X, Y coefficients from transform if trans_name == 'four_paramNW': Xcoeff = transform.px @@ -2744,10 +2744,10 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric Ycoeff = transform.py.parameters else: raise Exception(f'{trans_name} not yet supported!') - + # Write output _out = open(outFile, 'w') - + # Write the header. DO NOT CHANGE, HARDCODED IN JAVA ALIGN _out.write('## Date: {0}\n'.format(datetime.date.today()) ) _out.write('## File: {0}, Reference: {1}\n'.format(starlist, reference) ) @@ -2771,12 +2771,12 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric # CODE TO GET INDICIES N = trans_order - 1 idx_list = list() - + # when trans_order=1, N=0 idx_list.append(0) idx_list.append(1) idx_list.append(N+2) - + if trans_order >= 2: for k in range(2, N+2): idx_list.append(k) @@ -2797,7 +2797,7 @@ def write_transform(transform, starlist, reference, N_trans, deltaMag=0, restric _out.close() - + return @@ -2811,7 +2811,7 @@ def transform_from_file(starlist, transFile): are present in starlist. WARNING: THIS CODE WORKS FOR POLYTRANSFORM - + Parameters: ---------- starlist: astropy table @@ -2841,8 +2841,8 @@ def transform_from_file(starlist, transFile): # Do transform transform = transforms.PolyTransform(order, Xcoeff, Ycoeff) return transform_from_object(starlist, transform) - - + + def transform_from_object(starlist, transform): """ @@ -2851,7 +2851,7 @@ def transform_from_object(starlist, transform): if they are present in starlits. If a more complex motion_model is implemented, the motion parameters are set to nan, as we need the full time series to refit. - + Parameters: ---------- starlist: astropy table @@ -2885,11 +2885,11 @@ def transform_from_object(starlist, transform): if len(motion_models_unique)==0: vel=True mot=False - + # Prior code before motion_model implementation # Can still be used as shortcut for Linear+Fixed motion_model only err = 'xe' in keys - + # Extract needed information from starlist x = starlist_f['x'] y = starlist_f['y'] @@ -2910,7 +2910,7 @@ def transform_from_object(starlist, transform): vy = starlist_f['vy'] vxe = starlist_f['vx_err'] vye = starlist_f['vy_err'] - + # calculate the transformed position and velocity x_new, y_new, xe_new, ye_new = position_transform_from_object(x, y, xe, ye, transform) @@ -2923,7 +2923,7 @@ def transform_from_object(starlist, transform): starlist_f['y'] = y_new starlist_f['xe'] = xe_new starlist_f['ye'] = ye_new - + if vel: starlist_f['x0'] = x0_new starlist_f['y0'] = y0_new @@ -2933,7 +2933,7 @@ def transform_from_object(starlist, transform): starlist_f['vy'] = vy_new starlist_f['vx_err'] = vxe_new starlist_f['vy_err'] = vye_new - + # For more complicated motion_models, # we can't easily transform them, set the values to nans and refit later. if mot: @@ -2941,7 +2941,7 @@ def transform_from_object(starlist, transform): for param in motion_model_params: if param in keys: starlist_f[param] = np.nan - + return starlist_f @@ -2954,7 +2954,7 @@ def position_transform_from_object(x, y, xe, ye, transform): - x, y: original position - xe, ye: original position error - transform: transformation object from astropy.modeling.models.polynomial2D - + Outpus: - x_new, y_new: transformed position - xe_new, ye_new: transformed position error @@ -2972,7 +2972,7 @@ def position_transform_from_object(x, y, xe, ye, transform): else: txt = 'Transform not yet supported by position_transform_from_object' raise Exception(txt) - + # How the transformation is applied depends on the type of transform. # This can be determined by the length of Xcoeff, Ycoeff N = order - 1 @@ -2996,7 +2996,7 @@ def position_transform_from_object(x, y, xe, ye, transform): for j in range(1, N+2-i): sub = int(2*N + 2 + j + (2*N+2-i) * (i-1)/2.) y_new += Ycoeff[sub] * (x**i) * (y**j) - + """ THIS IS WRONG BELOW! - NOTE: I don't think this is wrong any more @@ -3054,11 +3054,11 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform - x0, y0, x0e, y0e: original position and position error - vx, vy, vxe, vye: original velocity and velocity error - transform: transformation object from astropy.modeling.models.polynomial2D - + Outpus: - vx_new, vy_new, vxe_new, vye_new: transformed velocity and velocity error """ - + # Read transformation: Extract X, Y coefficients from transform if transform.__class__.__name__ == 'four_paramNW': Xcoeff = transform.px @@ -3071,7 +3071,7 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform else: txt = 'Transform not yet supported by velocity_transform_from_object' raise Exception(txt) - + # How the transformation is applied depends on the type of transform. # This can be determined by the length of Xcoeff, Ycoeff N = order - 1 @@ -3132,7 +3132,7 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform for i in range(1, N+1): for j in range(1, N+2-i): sub = 2*N + 2 + j + (2*N+2-i) * (i-1)/2. - temp3 += i * Xcoeff[int(sub)] * (x0**(i-1)) * (y0**j) + temp3 += i * Xcoeff[int(sub)] * (x0**(i-1)) * (y0**j) for j in range(1, N+2): temp4 += j * Xcoeff[N+1+j] * (y0**(j-1)) @@ -3175,7 +3175,7 @@ def velocity_transform_from_object(x0, y0, x0e, y0e, vx, vy, vxe, vye, transform for i in range(1, N+1): for j in range(1, N+2-i): sub = 2*N + 2 + j + (2*N+2-i) * (i-1)/2. - temp3 += i * Ycoeff[int(sub)] * (x0**(i-1)) * (y0**j) + temp3 += i * Ycoeff[int(sub)] * (x0**(i-1)) * (y0**j) for j in range(1, N+2): temp4 += j * Ycoeff[N+1+j] * (y0**(j-1)) @@ -3206,7 +3206,7 @@ def check_trans_input(list_of_starlists, trans_input, mag_trans): if trans_input != None: assert len(trans_input) == len(list_of_starlists) - if mag_trans: + if mag_trans: for ii in range(len(trans_input)): if trans_input[ii] != None: try: @@ -3215,7 +3215,7 @@ def check_trans_input(list_of_starlists, trans_input, mag_trans): print('Missing trans.mag_offset on trans_input[{0:d}].'.format(ii)) print('Setting mag_offset = 0 and dm_tol[0] = 100 and hoping for the best!!') trans_input[ii].mag_offset = 0.0 - + return def trans_initial_guess( @@ -3236,7 +3236,7 @@ def trans_initial_guess( This function will grow with time to handle difference types of initial guess transformations (triangle matching, match by name, etc.). For now it - is just blind triangle matching on the brightest 50 stars. + is just blind triangle matching on the brightest 50 stars. """ warnings.filterwarnings('ignore', category=AstropyUserWarning) if motion_models is None: @@ -3330,15 +3330,15 @@ def update_old_and_new_names(ref_table, list_index, idx_ref_new): all_names = old_names.astype('U{0:d}'.format(new_name_len_max)) else: all_names = old_names - + all_names[idx_ref_new] = new_names - + return all_names def copy_and_rename_for_ref(star_list): """ Make a deep copy of the starlist and rename the columns to include - "0". This only applies to x, y, m and xe, ye, me (if they exist) + "0". This only applies to x, y, m and xe, ye, me (if they exist) columns. Input @@ -3361,7 +3361,7 @@ def copy_and_rename_for_ref(star_list): if 'w' in star_list.colnames: old_cols += ['w'] new_cols += ['w'] - + ref_list = copy.deepcopy(star_list) for ii in range(len(old_cols)): @@ -3372,11 +3372,11 @@ def copy_and_rename_for_ref(star_list): def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, fixed_params_dict=None, verbose=True): """ Determine the outliers based on the residual positions between two different - starlists and some threshold (in sigma). Return the indices of the stars - to keep (that shouldn't be rejected as outliers). + starlists and some threshold (in sigma). Return the indices of the stars + to keep (that shouldn't be rejected as outliers). Note that we assume that the star_list and ref_list are already transformed and - matched. + matched. Parameters ---------- @@ -3385,8 +3385,8 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, f ref_list : StarList starlist with 'x0', 'y0' outlier_tol : float - Number of sigma inside which we keep stars and outside of which we - reject stars as outliers. + Number of sigma inside which we keep stars and outside of which we + reject stars as outliers. motion_models : list of motion_model objects The motion models to use in the star_list fixed_params_dict : dict or None, optional @@ -3397,7 +3397,7 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, f Returns ---------- keepers : bool array - The boolean array of the stars to keep. + The boolean array of the stars to keep. """ # Optionally propogate the reference positions forward in time. xref, yref = infer_positions(star_list['t'][0], ref_list, motion_models, fixed_params_dict=fixed_params_dict) @@ -3413,7 +3413,7 @@ def outlier_rejection_indices(star_list, ref_list, outlier_tol, motion_models, f if verbose > 0: msg = ' Outlier Rejection: Keeping {0:d} of {1:d}' print(msg.format(sum(keepers), len(resid_on_old_trans))) - + return keepers def setup_trans_info(trans_input, trans_args, N_lists, iters): @@ -3433,12 +3433,12 @@ def setup_trans_info(trans_input, trans_args, N_lists, iters): if type(trans_args) == dict: tmp = trans_args trans_args = [tmp for ii in range(iters)] - + return trans_list, trans_args def apply_mag_lim(star_list, mag_lim): - """ Apply a magnitude limit to the list. If no magnitude limit is - specified, then return a copy of the list. This works on a + """ Apply a magnitude limit to the list. If no magnitude limit is + specified, then return a copy of the list. This works on a reference list (with 'm0') or a star_list ('m') with 'm0' taking priority. @@ -3457,7 +3457,7 @@ def apply_mag_lim(star_list, mag_lim): mcol = 'm' conditions = {} - + cond_key = '{0:s}_min'.format(mcol) conditions[cond_key] = mag_lim[0] @@ -3475,7 +3475,7 @@ def get_weighting_scheme(weights, ref_list, star_list): else: var_xref = 0.0 var_yref = 0.0 - + if 'xe' in star_list.colnames: var_xlis = star_list['xe']**2 var_ylis = star_list['ye']**2 diff --git a/flystar/analysis.py b/flystar/analysis.py index c955c2b..0a1397c 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -29,7 +29,7 @@ def query_gaia(ra, dec, search_radius=30.0, table_name='gaiadr3'): Dec. in degrees in the format such as '-29:00:28.0' search_radius : float - The search radius in arcseconds. + The search radius in arcseconds. Optional Input -------------- @@ -103,13 +103,13 @@ def check_gaia_parallaxes(ra,dec,search_radius=10.0,table_name='gaiadr3',target= plt.yscale('log') plt.tight_layout() plt.savefig('gaiaplx'+file_ext+'.png') - + def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, pi_err_limit=0.4, default_motion_model='Linear'): """ Take a Gaia table (from astroquery) and produce a new table with a tangential projection - and shift such that the origin is centered on the target of interest. - Convert everything into arcseconds and name columns such that they are + and shift such that the origin is centered on the target of interest. + Convert everything into arcseconds and name columns such that they are ready for FlyStar input. Inputs @@ -126,7 +126,7 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, target_coords = SkyCoord(ra, dec, unit=(u.hourangle, u.deg), frame='icrs') ra = target_coords.ra.degree # in decimal degrees dec = target_coords.dec.degree # in decimal degrees - + cos_dec = np.cos(np.radians(dec)) x = (gaia['ra'] - ra) * cos_dec * 3600.0 # arcsec y = (gaia['dec'] - dec) * 3600.0 # arcsec @@ -145,7 +145,7 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, gaia_new['vy'] = gaia['pmdec'].data / 1e3 gaia_new['vx_err'] = gaia['pmra_error'].data / 1e3 gaia_new['vy_err'] = gaia['pmdec_error'].data / 1e3 - + gaia_new['t0'] = gaia['ref_epoch'].data gaia_new['source_id'] = gaia['source_id'].data.astype('S19') @@ -155,7 +155,7 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, gaia_new['vy'][idx] = 0.0 gaia_new['vx_err'][idx] = 0.0 gaia_new['vy_err'][idx] = 0.0 - + gaia_new['m'] = gaia['phot_g_mean_mag'] gaia_new['me'] = 1.09/gaia['phot_g_mean_flux_over_error'] gaia_new['pi'] = gaia['parallax'].data*1e-3 @@ -167,7 +167,7 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, gaia_new['vx_err'][idx] = 0.0 gaia_new['vy'][idx] = 0.0 gaia_new['vy_err'][idx] = 0.0 - + # Cut out stars with high plx error and set motion models idx = np.where((gaia_new['pi_err']>(pi_err_limit/1e3)) | (gaia['parallax'].mask == True))[0] gaia_new['pi'][idx] = 0.0 @@ -188,7 +188,7 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, gaia_new['n_params'] = 1 else: print("Invalid motion model",default_motion_model,"- none assigned") - + #macy additions to try to fix wild magnitude values #gaia_new['ruwe'] = gaia['ruwe'] #try: @@ -224,9 +224,9 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, print('Found match for: ', targ_names[idx], ' - ',gaia_new['source_id'][i_gaia]) return gaia_new - + def run_flystar(): - + test_file = '/u/jlu/work/microlens/OB150211/a_2018_10_19/a_ob150211_2018_10_19/lis/stars_matched2.fits' t = Table.read(test_file) @@ -258,39 +258,39 @@ def run_flystar(): ym_t = y0 + vy * (t - t0) # Model distorted positions - - + + return def project_gaia(gaia, epoch, ra, dec): """ Take the Gaia measurements, forward them in time, and then convert them into a tangential projection. - + Inputs ---------- epoch : float (year) The decimal year to project the measurement to. Note that we use 365.25 days per year. - + ra : float (deg) The right ascension (J2000) in decimal degrees of the center of the field. - + dec : float (deg) The declination (J2000) in decimal degrees of the center of the field. - + """ t0 = gaia['ref_epoch'] x0 = (gaia['ra'] - ra) * np.cos(np.radians(dec)) * 3600.0 # Arcsec y0 = (gaia['dec'] - dec) * 3600.0 x0e = gaia['ra_error'] / 1.0e3 # arcsec, already in alpha* (multiplied by cos(delta)) y0e = gaia['dec_error'] / 1.0e3 # arcsec - - + + vx = gaia['pmra'] / 1.0e3 # arcsec / yr - vy = gaia['pmdec'] / 1.0e3 + vy = gaia['pmdec'] / 1.0e3 vxe = gaia['pmra_error'] / 1.0e3 # arcsec / yr vye = gaia['pmdec_error'] / 1.0e3 - + # Modify any vx/vy, etc. that are zero and make a regular (unmasked) numpy array. vx[vx.mask] = 0.0 vy[vy.mask] = 0.0 @@ -300,29 +300,29 @@ def project_gaia(gaia, epoch, ra, dec): vy = np.array(vy) vxe = np.array(vxe) vye = np.array(vye) - + dt = epoch - t0 x_now = (x0 + (vx * dt)) * -1.0 # Switch to a left-handed coordinate system, like detector pixels. y_now = (y0 + (vy * dt)) xe_now = np.hypot(x0e, vxe*dt) ye_now = np.hypot(y0e, vye*dt) - + # Format as a starlist - gaia_lis = starlists.StarList(name=gaia['source_id'], + gaia_lis = starlists.StarList(name=gaia['source_id'], x=x_now, y=y_now, m=gaia['phot_g_mean_mag'], xe=xe_now, ye=ye_now, me=1.0/gaia['phot_g_mean_flux_over_error']) - + # Duplicate columns to 'x_avg', etc. Needed for initial guessing. gaia_lis['x_avg'] = gaia_lis['x'] gaia_lis['y_avg'] = gaia_lis['y'] - gaia_lis['m_avg'] = gaia_lis['m'] - + gaia_lis['m_avg'] = gaia_lis['m'] + return gaia_lis def rename_after_flystar(star_tab, label_dat_file, new_copy=True, dr_tol=0.05, dm_tol=0.3, verbose=False): """ - Take a StarTable output from FlyStar MosaicToRef that has been + Take a StarTable output from FlyStar MosaicToRef that has been aligned into R.A. and Dec. (usually by way of Gaia). Align the output to a label.dat file for this source and rename everything. @@ -350,20 +350,20 @@ def rename_after_flystar(star_tab, label_dat_file, new_copy=True, dr_tol=0.05, d x_lab[ndx_lab[ii]], star_tab['x0'][ndx_star[ii]], y_lab[ndx_lab[ii]], star_tab['y0'][ndx_star[ii]], m_lab[ndx_lab[ii]], star_tab['m0'][ndx_star[ii]])) - + print('Temporary shift transformations: ') print(' dm = {0:8.4f} +/- {1:8.4f}'.format(dm.mean(), dm.std())) print(' dx = {0:8.4f} +/- {1:8.4f}'.format(dx.mean(), dx.std())) print(' dy = {0:8.4f} +/- {1:8.4f}'.format(dy.mean(), dy.std())) - + m_lab = label_tab['m'] + dm.mean() x_lab += dx.mean() y_lab += dy.mean() - + # Now that we are in a common coordinate and magnitude # system, lets match the whole lists by coordinates. - idx_lab, idx_star, dr, dm = match.match(x_lab, y_lab, m_lab, + idx_lab, idx_star, dr, dm = match.match(x_lab, y_lab, m_lab, star_tab['x0'], star_tab['y0'], star_tab['m0'], dr_tol=dr_tol, dm_tol=dm_tol, verbose=verbose) #print('idx_lab:') @@ -371,7 +371,7 @@ def rename_after_flystar(star_tab, label_dat_file, new_copy=True, dr_tol=0.05, d # print(label_tab["name"][idx_lab[iii]], star_tab["name"][idx_star[iii]]) print('Renaming {0:d} out of {1:d} stars'.format(len(idx_lab), len(star_tab))) - + # Make a copy of the table, UNLESS, the user specifies. if new_copy: new_tab = copy.deepcopy(star_tab) @@ -381,9 +381,9 @@ def rename_after_flystar(star_tab, label_dat_file, new_copy=True, dr_tol=0.05, d # copy over the original names... don't overwrite (this could mean data loss) if 'name_orig' not in new_tab.colnames: new_tab.add_column(Column(star_tab['name'].data, name='name_orig')) - + new_tab['name'][idx_star] = label_tab[idx_lab]['name'] - + return new_tab def pick_good_ref_stars(star_tab, r_cut=None, m_cut=None, p_err_cut=None, pm_err_cut=None, name_cut=None, reset=True): @@ -428,9 +428,9 @@ def pick_good_ref_stars(star_tab, r_cut=None, m_cut=None, p_err_cut=None, pm_err def startable_subset(tab, idx, mag_trans=True, mag_trans_orig=False): """ - Input is MosaicToRef table from alignment of multiple filters, + Input is MosaicToRef table from alignment of multiple filters, such that the astrometry is combined but the photometry is not. - This function is used to separate out a selected filter from the + This function is used to separate out a selected filter from the combined astrometry + uncombined photometry table. """ # Multiples: ['x', 'y', 'm', 'name_in_list', 'xe', 'ye', 'me', 't', @@ -462,7 +462,7 @@ def startable_subset(tab, idx, mag_trans=True, mag_trans_orig=False): # Update the original table. if mag_trans_orig: tab['m'][:,idx[ii]] += mag_offset - + return new_tab @@ -472,13 +472,13 @@ def startable_subset(tab, idx, mag_trans=True, mag_trans_orig=False): def calc_chi2(ref_mat, starlist_mat, transform, errs='both'): """ - calculate the chi2 and reduced chi2 of the position + calculate the chi2 and reduced chi2 of the position between two matched starlists. Input: ref_mat: astropy table Reference starlist only containing matched stars that were used in the transformation. Standard column headers are assumed. - + starlist_mat: astropy table Transformed starlist only containing the matched stars used in the transformation. Standard column headers are assumed. @@ -518,7 +518,7 @@ def calc_chi2(ref_mat, starlist_mat, transform, errs='both'): elif errs == 'starlist': xerr = starlist_mat['xe'] yerr = starlist_mat['ye'] - + # For both X and Y, calculate chi-square. Combine arrays to get combined # chi-square @@ -526,11 +526,11 @@ def calc_chi2(ref_mat, starlist_mat, transform, errs='both'): chi_sq_y = diff_y**2. / yerr**2. chi_sq = np.append(chi_sq_x, chi_sq_y) - + # Calculate degrees of freedom in transformation num_mod_params = calc_nparam(transform) deg_freedom = len(chi_sq) - num_mod_params - + # Calculate reduced chi-square chi_sq = np.sum(chi_sq) chi_sq_red = chi_sq / deg_freedom @@ -547,7 +547,7 @@ def calc_nparam(transformation): nparam = 4 elif transformation.__class__.__name__ == 'PolyTransform': order = transformation.order - nparam = (order+1) * (order+2) + nparam = (order+1) * (order+2) return nparam def calc_F(red_chi2_1, red_chi2_2, v1, v2): @@ -568,24 +568,24 @@ def calc_F(red_chi2_1, red_chi2_2, v1, v2): for 1st order polynomial fitting: x' = a0 + a1*x + a2*y y' = b0 + b1*x + b2*y - v1 = 2*N1 - 2*3 (2*: because x and y direction) + v1 = 2*N1 - 2*3 (2*: because x and y direction) red_chi2_1 = chi2/v1 for 2nd order polynomial fitting: x' = a0 + a1*x + a2*y + a3*x**2 + a4*y**2 + a5*x*y y' = b0 + b1*x + b2*y + b3*x**2 + b4*y**2 + b5*x*y - v1 = 2*N1 - 2*6 + v1 = 2*N1 - 2*6 red_chi2_2 = chi2/v2 calc_F(red_chi2_1, red_chi2_2, v1, v2) - + ***Note*** - * make sure the first model is the simple model + * make sure the first model is the simple model and the second model is the more complicated model - * the return value represents the probability that + * the return value represents the probability that the first model is better than the second model, in other words, the small P means the more colicated model is needed. the large P means the simple model is good enough. - * normally, the P value will increase from model1->model2, to - model2->model3, to model3->model4. The user can decide a + * normally, the P value will increase from model1->model2, to + model2->model3, to model3->model4. The user can decide a critical value (eg, 0.7) to find the proper model. """ diff --git a/flystar/archive_io.py b/flystar/archive_io.py index 88de5cb..2177e40 100755 --- a/flystar/archive_io.py +++ b/flystar/archive_io.py @@ -1,9 +1,9 @@ import pickle -# Need to add these functions to a utility .py file rather than storing them in general structure. +# Need to add these functions to a utility .py file rather than storing them in general structure. def open_archive(file_name): """ - Helper function to open archived files. + Helper function to open archived files. """ with open(file_name, 'rb') as file_archive: file_dict = pickle.load(file_archive) @@ -11,7 +11,7 @@ def open_archive(file_name): def save_archive(file_name, save_data): """ - Helper function to archive a file. + Helper function to archive a file. """ with open(file_name, 'wb') as outfile: pickle.dump(save_data, outfile, protocol=pickle.HIGHEST_PROTOCOL) diff --git a/flystar/examples.py b/flystar/examples.py index 65723ec..0165cb3 100644 --- a/flystar/examples.py +++ b/flystar/examples.py @@ -32,7 +32,7 @@ def align_example(labelFile, reference, transModel=transforms.four_paramNW, orde dr_tol: float (default = 1.0) The search radius for the matching algorithm, in the same units as the starlist file positions. - + dm_tol: float or None If float, sets the maximum magnitude difference allowed in matching between label.dat and starlist. Note that this should be set to @@ -48,10 +48,10 @@ def align_example(labelFile, reference, transModel=transforms.four_paramNW, orde outFile: string (default = 'outTrans.txt') Name of output ascii file which contains the transform parameters. - + Output: ------ - + """ # Read in label.dat file and reference starlist, changing columns to their # standard column headers/epochs/orientations @@ -66,7 +66,7 @@ def align_example(labelFile, reference, transModel=transforms.four_paramNW, orde # Apply intial transformation to label.dat (for error weighting purposes below) label_trans = align.transform_from_object(label, trans) - + # Use transformation to match starlists, then recalculate transformation. # Iterate on this as many times as desired for i in range(N_loop): @@ -74,7 +74,7 @@ def align_example(labelFile, reference, transModel=transforms.four_paramNW, orde trans, dr_tol=dr_tol, dm_tol=dm_tol) - + trans, N_trans = align.find_transform(label[idx_label], label_trans[idx_label], starlist[idx_starlist], @@ -85,14 +85,14 @@ def align_example(labelFile, reference, transModel=transforms.four_paramNW, orde # Write final transform in java align format print('Write transform to {0}'.format(outFile)) align.write_transform(trans, labelFile, reference, N_trans, outFile=outFile) - + # Test transform: apply final transformation to label.dat label_trans2 = align.transform(label, outFile) # Make diagnostic plots - + return - + def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order=1, N_loop=2, dr_tol=1.0, dm_tol=None, briteN=100, weights=None, restrict=False, @@ -125,7 +125,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order dr_tol: float (default = 1.0) The search radius for the matching algorithm, in the same units as the starlist file positions. - + dm_tol: float or None (default = None) If float, sets the maximum magnitude difference allowed in matching between label.dat and starlist. Note that this should be set to @@ -137,7 +137,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order weights: string (default=None) if weights=='both', we use both position error and velocity error in transformed - starlist and reference starlist as uncertanties. And weights is the reciprocal + starlist and reference starlist as uncertanties. And weights is the reciprocal of this uncertanty. if weights=='starlist', we only use postion error and velocity error in transformed starlist as uncertainty. @@ -150,7 +150,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order outFile: string (default = 'outTrans.txt') Name of output ascii file which contains the transform parameters. - + Output: ------ outFile is written containing the tranformation coefficients @@ -164,11 +164,11 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order positions and the label.dat positions after transformation. -Positions_quiver.png: Quiver plot showing the difference between reference - positions and transformed label.dat positions as a function of location. - + positions and transformed label.dat positions as a function of location. + -Magnitude_hist.png: Histogram of the difference between the reference list magnitude and label.dat magnitude for matched stars. - + """ # Read in label.dat file and reference starlist, changing columns to their # standard column headers/epochs/orientations @@ -186,10 +186,10 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order # Perform blind matching of 100 brightest stars and calculate initial transform trans = align.initial_align(label_r, starlist, briteN, transformModel=transModel, order=order) - + # Apply transformation to label.dat file, for weighting purposes. label_trans = align.transform_from_object(label, trans) - + # Use transformation to match starlists, then recalculate transformation. # Iterate on this as many times as desired for i in range(N_loop): @@ -217,7 +217,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order print('Write transform to {0}'.format(outFile)) align.write_transform(trans, labelFile, reference, N_trans, deltaMag=delta_m, restrict=restrict, weights=weights, outFile=outFile) - + # Test transform: apply to label.dat, make diagnostic plots label_trans2 = align.transform_from_file(label, outFile) @@ -235,7 +235,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order label_trans2[idx_label], xlim=xlim, ylim=ylim) # Histogram of difference in transformed and reference positions for - # matched stars + # matched stars plots.pos_diff_hist(starlist[idx_starlist], label_trans2[idx_label]) # Histogram of difference in transformed and reference positions for @@ -244,7 +244,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order plots.pos_diff_err_hist(starlist[idx_starlist], label_trans2[idx_label], trans, errs='both', bin_width=0.5, xlim=[-6,6]) - # Histogram of difference in the magnitudes for the matched stars + # Histogram of difference in the magnitudes for the matched stars plots.mag_diff_hist(starlist[idx_starlist], label_trans2[idx_label]) # Quiver plot showing difference between transformed and reference @@ -254,7 +254,7 @@ def align_Arches(labelFile, reference, transModel=transforms.four_paramNW, order ylim=ylim, outlier_reject=None) print('Done with plots') - print('Done with plots') + print('Done with plots') return @@ -268,7 +268,7 @@ def align_gc(starFile, refFile, transModel=transforms.PolyTransform, order=1, N_ Parameters: ----------- starFile: string - Starlist we would like to transform into the reference frame, eg:label.dat + Starlist we would like to transform into the reference frame, eg:label.dat refFile: string Starlist that defines the reference frame. @@ -306,7 +306,7 @@ def align_gc(starFile, refFile, transModel=transforms.PolyTransform, order=1, N_ """ #---------------------------------------------- - # Read in starlist and reference + # Read in starlist and reference #---------------------------------------------- # starlist has postion & postion err ref = starlists.read_starlist(refFile, error=True) @@ -394,7 +394,7 @@ def align_starlists(starlist, ref, transModel=transforms.PolyTransform, order=2, Parameters: ----------- starlist: Table - Starlist we would like to transform into the reference frame, eg:label.dat + Starlist we would like to transform into the reference frame, eg:label.dat ref: Table Starlist that defines the reference frame. @@ -427,7 +427,7 @@ def align_starlists(starlist, ref, transModel=transforms.PolyTransform, order=2, outFile: string('outTrans.txt') the name of the output transformation file """ - + #-------------------------------------------------- # Initial transformation with brightest briteN stars #-------------------------------------------------- diff --git a/flystar/match.py b/flystar/match.py index ca7672a..3637b8c 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -26,7 +26,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, and brightness uncertainties, the more bigger the bin sizes should really be. But this isn't well tested. """ - + if verbose: print( '') print( ' miracle_match_briteN: use brightest {0}'.format(Nbrite)) @@ -51,7 +51,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, print( ' miracle_match_briteN: ') x1, y1, m1 = order_by_brite(xin1, yin1, min1, Nbrite, verbose=verbose) x2, y2, m2 = order_by_brite(xin2, yin2, min2, Nbrite, verbose=verbose) - + #################### # # Triangle Matching @@ -107,7 +107,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, idx2_vmax_hist = idx2_vmax_hist[good_idx2] idx2_angl_hist = idx2_angl_hist[good_idx2] - + ########## # Possible Matches ########## @@ -121,7 +121,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, # Now vote for all stars in the triangles that have possible matches (same vmax, angle) # between the first and second lists. votes = np.zeros((Nbrite, Nbrite)) - + matches = np.where(stars_in1_matches2[:,0] >= 0)[0] match_stars1 = stars_in1_matches2[matches,:] match_stars2 = stars_in_tri2[matches,:] @@ -134,7 +134,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, add_votes(votes, match_stars1[:,0], match_stars2[:,0]) add_votes(votes, match_stars1[:,1], match_stars2[:,1]) add_votes(votes, match_stars1[:,2], match_stars2[:,2]) - + ########## # Find matching triangles with most votes (and that pass threshold) ########## @@ -203,8 +203,8 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): if one is found that is the best match in both brightness and positional offsets (closest in both), then the match is made. Otherwise, their is a conflict and no match is returned for the star. - - + + Parameters x1 : array-like X coordinate in the first catalog @@ -226,9 +226,9 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): How close in delta-magnitude a match has to be to count as a match. If None, then any delta-magnitude is allowed. verbose : bool or int, optional - Prints on screen information on the matching. Higher verbose values + Prints on screen information on the matching. Higher verbose values (up to 9) provide more detail. - + Returns ------- idx1 : int array @@ -241,27 +241,27 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): Distance between the matches. dm : float array Delta-mag between the matches. (m1 - m2) - + """ - + x1 = np.array(x1, copy=False) y1 = np.array(y1, copy=False) m1 = np.array(m1, copy=False) x2 = np.array(x2, copy=False) y2 = np.array(y2, copy=False) m2 = np.array(m2, copy=False) - + if x1.shape != y1.shape: raise ValueError('x1 and y1 do not match!') if x2.shape != y2.shape: raise ValueError('x2 and y2 do not match!') - + # Setup coords1 pairs and coords 2 pairs # this is equivalent to, but faster than just doing np.array([x1, y1]) coords1 = np.empty((x1.size, 2)) coords1[:, 0] = x1 coords1[:, 1] = y1 - + # this is equivalent to, but faster than just doing np.array([x1, y1]) coords2 = np.empty((x2.size, 2)) coords2[:, 0] = x2 @@ -374,7 +374,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): # Assume the duplicates are confused first... see if we # can resolve the confusion below. keep[dups] = False - + dm_dups = m1[idxs1[dups]] - m2[idxs2[dups]] dr_dups = np.hypot(x1[idxs1[dups]] - x2[idxs2[dups]], y1[idxs1[dups]] - y2[idxs2[dups]]) @@ -395,12 +395,12 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): idxs2 = idxs2[keep] dr = dr[keep] dm = dm[keep] - + return idxs1, idxs2, dr, dm def calc_triangles_vmax_angle(x, y): idx = np.arange(len(x), dtype=np.int16) - + # Option 1 -- this takes 0.217 seconds for 50 objects # t1 = time.time() # combo_iter1 = itertools.combinations(idx1, 3) @@ -409,53 +409,53 @@ def calc_triangles_vmax_angle(x, y): # print( 'Finished Option 1: ', t2 - t1) # print( combo_idx1_1.shape) # print( combo_idx1_1) - + # Option 2 -- this takes 0.016 seconds for 50 objects combo_iter = itertools.combinations(idx, 3) combo_dt = np.dtype('i2,i2,i2') combo_idx_tmp = np.fromiter(combo_iter, dtype=combo_dt) combo_idx = combo_idx_tmp.view(np.int16).reshape(-1, 3) - + ii0 = combo_idx[:,0] ii1 = combo_idx[:,1] ii2 = combo_idx[:,2] - + dxab = x[ii1] - x[ii0] dyab = y[ii1] - y[ii0] dxac = x[ii2] - x[ii0] dyac = y[ii2] - y[ii0] - + dab = np.hypot(dxab, dyab) dac = np.hypot(dxac, dyac) - + dmax = np.max([dab, dac], axis=0) dmin = np.min([dab, dac], axis=0) - + vmax = dmin ** 2 / dmax ** 2 vmax[dab < dac] *= -1 - + vdprod = dxab * dxac + dyab * dyac vcprod = dxab * dyac - dyab * dxac - + angle = np.degrees( np.arctan2( vdprod, vcprod) ) angle[angle < 0] += 360.0 angle[angle > 360] -= 360.0 - + return combo_idx, vmax, angle def add_votes(votes, match1, match2): # Construct a histogram of how often a bin is matched... then add the delta flat_idx = np.ravel_multi_index((match1, match2), dims=votes.shape) - + # extract the unique indices and their position unique_idx, idx_idx = np.unique(flat_idx, return_inverse=True) - + # aggregate the repeated indices deltas = np.bincount(idx_idx) - + # Sum them to the array votes.flat[unique_idx] += deltas - + return @@ -512,7 +512,7 @@ def generic_match(sl1, sl2, init_mode='triangle', init_mode verbose : bool, optional Prints on screen information on the matching - + Returns ------- transf : Transform2D @@ -522,16 +522,16 @@ def generic_match(sl1, sl2, init_mode='triangle', """ from . import align - + # Check the input StarLists and transform them into astropy Tables if not isinstance(sl1, starlists.StarList): raise TypeError("The first catalog has to be a StarList") if not isinstance(sl2, starlists.StarList): raise TypeError("The second catalog has to be a StarList") - + # Find the initial transformation if init_mode == 'triangle': # Blind triangles method - + # Prepare the reduced starlists for matching sl1_cut = copy.deepcopy(sl1) sl2_cut = copy.deepcopy(sl2) @@ -546,16 +546,16 @@ def generic_match(sl1, sl2, init_mode='triangle', # TODO: test 'initial_align' with StarList input transf = align.initial_align(sl1_cut, sl2_cut, briteN=n_bright, transformModel=model, order=order_dr[0]) #order_dr[i_loop][0] ? - + elif init_mode == 'match_name': # Name match sl1_idx_init, sl2_idx_init, _ = starlists.restrict_by_name(sl1, sl2) transf = model(sl2['x'][sl2_idx_init], sl2['y'][sl2_idx_init], sl1['x'][sl1_idx_init], sl1['y'][sl1_idx_init], order=int(order_dr[0][0])) - + elif init_mode == 'load': # Load a transformation file transf = transforms.Transform2D.from_file(kwargs['transf_file']) - + else: # None of the above raise TypeError("Unrecognized initial matching method") @@ -564,16 +564,16 @@ def generic_match(sl1, sl2, init_mode='triangle', sl2_match = copy.deepcopy(sl2) sl1_match.restrict_by_value(m_min=m_match[0], m_max=m_match[1]) sl2_match.restrict_by_value(m_min=m_match[2], m_max=m_match[3]) - + # Refine the transformation if sigma_match: order_dr_len = len(order_dr) - + for i_loop in range(sigma_match[1]): order_dr = np.vstack((np.array(order_dr), np.array(order_dr[-1]))) - + for i_loop in range(len(order_dr)): - + # Transform and match the catalog to the reference frame # sl2_idx, sl1_idx = align.transform_and_match(sl2_match, sl1_match, transf, # dr_tol=order_dr[i_loop][1], @@ -588,7 +588,7 @@ def generic_match(sl1, sl2, init_mode='triangle', # Transform the catalog to the reference frame sl2_transf_match = align.transform_from_object(sl2_match, transf) - + # Sigma-rejection if sigma_match and (i_loop >= order_dr_len): resid = np.sqrt((sl1_match['x'][sl1_idx] - @@ -597,29 +597,29 @@ def generic_match(sl1, sl2, init_mode='triangle', sl2_transf_match['y'][sl2_idx])**2) sl1_idx = sl1_idx[resid <= (sigma_match[0] * np.std(resid))] sl2_idx = sl2_idx[resid <= (sigma_match[0] * np.std(resid))] - + # Test section to observe the matching catalogs before refining the transformation """ from matplotlib import pyplot - + _, axarr = pyplot.subplots(nrows=1, ncols=1, figsize=(10,10)) axarr.scatter(sl1_match['x'][sl1_idx], sl1_match['y'][sl1_idx]) xlim = axarr.get_xlim() ylim = axarr.get_ylim() - + _, axarr = pyplot.subplots(nrows=1, ncols=1, figsize=(10, 10)) axarr.scatter(sl2_transf_match['x'][sl2_idx], sl2_transf_match['y'][sl2_idx]) axarr.set_xlim(xlim) axarr.set_ylim(ylim) """ - + # Find a better transformation transf, _ = align.find_transform(sl2_match[sl2_idx], sl2_transf_match[sl2_idx], sl1_match[sl1_idx], transModel=model, order=order_dr[0], verbose=verbose) # order=int(order_dr[i_loop][0]), verbose=verbose) - + # This section was used for testing transformations with normalized # coordinates. Only several catalogs had reduced residuals when using # high order polynomials (>3), some of them became unstable @@ -638,15 +638,15 @@ def generic_match(sl1, sl2, init_mode='triangle', sl1_match_norm, transModel=model, order=poly_order, verbose=verbose) c_exp = np.zeros(len(transf.px._parameters)) - + for i_c in range(len(transf.px._parameters)): c_exp[i_c] = int(transf.px._param_names[i_c][1:].split('_')[0]) +\ int(transf.px._param_names[i_c][1:].split('_')[1]) - + c_corr = mm ** (1 - c_exp) transf.px._parameters = transf.px._parameters * c_corr transf.py._parameters = transf.py._parameters * c_corr""" - + # Do the final transformation and matching using sl2_idx, sl1_idx = align.transform_and_match(sl2, sl1, transf, dr_tol=dr_final, verbose=verbose) @@ -661,10 +661,10 @@ def generic_match(sl1, sl2, init_mode='triangle', # ep_name=np.column_stack((np.array(sl1['name'][sl1_idx]), np.array(sl2_transf['name'][sl2_idx]))), # list_times=[sl1.meta['list_time'], sl2.meta['list_time']], # list_names=[sl1.meta['list_name'], sl2.meta['list_name']]) - + for col in sl1.colnames: if col in sl2.colnames: if col not in ['name', 'x', 'y', 'm']: st.add_column(Column(np.column_stack((np.array(sl1[col][sl1_idx]),np.array(sl2_transf[col][sl2_idx]))), name=col)) - + return transf, st diff --git a/flystar/motion_model.py b/flystar/motion_model.py index bf53d3f..de76c46 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -12,7 +12,7 @@ class MotionModel(ABC): # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) - # Fixed parameters: These are parameters that are required for the model, but are not + # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. fixed_param_names = [] fixed_meta_data = [] @@ -26,15 +26,15 @@ class MotionModel(ABC): def __init__(self, *args, **kwargs): """ Make a motion model object. This object defines the fit and fixed parameters, - and contains functions to fit the model to data and infer positions at given times. - Each instance corresponds to a given motion model, not an individual star, + and contains functions to fit the model to data and infer positions at given times. + Each instance corresponds to a given motion model, not an individual star, and thus the fit values are only input/returned in functions, not stored in the object. """ return def _check_param_dimensions(self, fit_params, fit_params_errs, fixed_params_dict): """Check that parameters is either a scalar or length of N_stars - + Parameters ---------- fit_params: array-like @@ -67,11 +67,11 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) def run_fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict=None, weighting='var', - use_scipy=True, - absolute_sigma=True, + use_scipy=True, + absolute_sigma=True, params_guess=None, fill_value=np.nan, verbose=True @@ -89,15 +89,15 @@ def calc_weights(self, xe, ye, weighting='var'): return 1./xe**2, 1./ye**2 def fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict=None, weighting='var', - use_scipy=True, + use_scipy=True, absolute_sigma=True, fill_value=np.nan, params_guess=None, return_chi2=False, - bootstrap=0, + bootstrap=0, verbose=True, seed=None ): @@ -143,22 +143,22 @@ def fit( assert np.ndim(t) == np.ndim(x) == np.ndim(y) == np.ndim(xe) == np.ndim(ye) == 1, "Input arrays must be 1D! Motion model can only fit individual stars" assert len(t) == len(x) == len(y) == len(xe) == len(ye), "Input arrays must have the same length!" fit_result = self.run_fit( - t, x, y, xe, ye, + t, x, y, xe, ye, fixed_params_dict=fixed_params_dict, weighting=weighting, - use_scipy=use_scipy, + use_scipy=use_scipy, absolute_sigma=absolute_sigma, fill_value=fill_value, params_guess=params_guess, return_chi2=return_chi2, verbose=verbose ) - + if return_chi2: params, param_errs, chi2_x, chi2_y = fit_result else: params, param_errs = fit_result - + # Bootstrap errors n_obs = len(t) @@ -183,12 +183,12 @@ def fit( bb_params_errs = [] for bdx in bdx_all: params_bdx, param_errs_bdx = self.run_fit( - t[bdx], x[bdx], y[bdx], xe[bdx], ye[bdx], + t[bdx], x[bdx], y[bdx], xe[bdx], ye[bdx], fixed_params_dict=fixed_params_dict, - weighting=weighting, - use_scipy=use_scipy, - absolute_sigma=absolute_sigma, - params_guess=params, + weighting=weighting, + use_scipy=use_scipy, + absolute_sigma=absolute_sigma, + params_guess=params, fill_value=fill_value, return_chi2=False, verbose=verbose @@ -236,7 +236,7 @@ def __init__(self, **kwargs): """ super().__init__() return - + def model_fit(self, dt): return np.full_like(dt, np.nan) @@ -266,10 +266,10 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) def run_fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict=None, - weighting='var', - use_scipy=True, + weighting='var', + use_scipy=True, absolute_sigma=True, fill_value=np.nan, params_guess=None, @@ -327,7 +327,7 @@ class Fixed(MotionModel): """ A non-moving motion model for a star on the sky. """ - + fit_param_names = ['x0','y0'] fixed_param_names = [] # Number of fit parameters/required observations in each direction @@ -350,7 +350,7 @@ def model_fit(self, dt, x0): Time offset, shape (N_times,) x0 : float or array-like Average positions, scalar or shape (N_stars,) - + Returns ------- x : array-like @@ -416,10 +416,10 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return x, y, x_err, y_err def run_fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict=None, - weighting='var', - use_scipy=True, + weighting='var', + use_scipy=True, absolute_sigma=True, fill_value=np.nan, params_guess=None, @@ -549,7 +549,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) - + x = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis]) # Shape (N_stars, N_times) y = self.model_fit(dt, y0[:, np.newaxis], vy[:, np.newaxis]) # Shape (N_stars, N_times) @@ -560,12 +560,12 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fit_param_errs is None: return x, y - + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) x0_err, vx_err, y0_err, vy_err = fit_param_errs.T # Each shape (N_stars,) x_err = np.hypot(x0_err[:, np.newaxis], vx_err[:, np.newaxis] * dt) # Shape (N_stars, N_times) y_err = np.hypot(y0_err[:, np.newaxis], vy_err[:, np.newaxis] * dt) # Shape (N_stars, N_times) - + if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays x_err = x_err.flatten() @@ -573,10 +573,10 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return x, y, x_err, y_err def run_fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict=None, - weighting='var', - use_scipy=True, + weighting='var', + use_scipy=True, absolute_sigma=True, fill_value=np.nan, params_guess=None, @@ -595,7 +595,7 @@ def run_fit( y = np.atleast_1d(y) xe = np.atleast_1d(xe) ye = np.atleast_1d(ye) - + n_obs = len(t) degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model @@ -669,7 +669,7 @@ def run_fit( if degree_of_freedom > 0: reduced_chi2_x = chi2_x / degree_of_freedom reduced_chi2_y = chi2_y / degree_of_freedom - + param_errors[0:2] *= reduced_chi2_x**0.5 param_errors[2:4] *= reduced_chi2_y**0.5 @@ -703,7 +703,7 @@ def __init__(self): # This checks for proper parameter formatting. super().__init__() return - + def model_fit(self, t, x0, v0, a): """Model positions at time t of Acceleration model. @@ -745,7 +745,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): Predicted positions (and uncertainties, if fit_param_errs is provided) with shape (N_stars, N_times), or (N_times,) if N_stars=1, or (N_stars,) if N_times=1 """ if fixed_params_dict is None: - fixed_params_dict = self.fixed_params_dict + fixed_params_dict = self.fixed_params_dict assert 't0' in fixed_params_dict, "Fixed parameter t0 is required for Acceleration model." self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) @@ -754,28 +754,28 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 N_times = len(t) - + x0, vx0, ax, y0, vy0, ay = fit_params.T # Each shape (N_stars,) t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) - + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) - + x = self.model_fit(dt, x0[:, np.newaxis], vx0[:, np.newaxis], ax[:, np.newaxis]) # Shape (N_stars, N_times) y = self.model_fit(dt, y0[:, np.newaxis], vy0[:, np.newaxis], ay[:, np.newaxis]) # Shape (N_stars, N_times) - + if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays x = x.flatten() y = y.flatten() - + if fit_param_errs is None: return x, y - + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) x0_err, vx0_err, ax_err, y0_err, vy0_err, ay_err = fit_param_errs.T x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx0_err[:, np.newaxis] * dt)**2 + (0.5 * ax_err[:, np.newaxis] * dt**2)**2) # Shape (N_stars, N_times) y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy0_err[:, np.newaxis] * dt)**2 + (0.5 * ay_err[:, np.newaxis] * dt**2)**2) # Shape (N_stars, N_times) - + if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays x_err = x_err.flatten() @@ -785,11 +785,11 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): def run_fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict=None, - weighting='var', - use_scipy=True, - absolute_sigma=True, + weighting='var', + use_scipy=True, + absolute_sigma=True, params_guess=None, fill_value=np.nan, return_chi2=False, @@ -855,7 +855,7 @@ def run_fit( class Parallax(MotionModel): """ Motion model for linear proper motion + parallax - + Requires RA and Dec J2000 (degrees) for parallax calculation. Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. @@ -863,7 +863,7 @@ class Parallax(MotionModel): fit_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] fixed_param_names = ['t0', 'ra', 'dec', 'pa', 'obsLocation'] name = "Parallax" - + # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) @@ -1021,12 +1021,12 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): def run_fit( - self, t, x, y, xe, ye, + self, t, x, y, xe, ye, fixed_params_dict, - weighting='var', - use_scipy=True, - absolute_sigma=True, - params_guess=None, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, fill_value=np.nan, return_chi2=False, verbose=True @@ -1034,7 +1034,7 @@ def run_fit( if not use_scipy: if verbose: warnings.warn("Parallax model has no non-scipy fitter option. Running with scipy.", UserWarning) - + assert all([k in fixed_params_dict for k in ['ra', 'dec']]), "Parallax model requires 'ra' and 'dec' in fixed_params." t = np.atleast_1d(t) @@ -1079,7 +1079,7 @@ def run_fit( t_span = t[idx_last] - t[idx_first] params_guess = np.array([ x.mean(), (x[idx_last] - x[idx_first]) / t_span, - y.mean(), (y[idx_last] - y[idx_first]) / t_span, + y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.1 ]) @@ -1102,7 +1102,7 @@ def run_fit( params = np.array([x0, vx, y0, vy, pi]) param_errors = np.array([x0_err, vx_err, y0_err, vy_err, pi_err]) - + if return_chi2: chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) return params, param_errors, chi2_x, chi2_y @@ -1121,7 +1121,7 @@ def motion_model_param_names(motion_models, with_errors=True, with_fixed=True): Add uncertainty names with '_err' suffix or not, by default True with_fixed : bool, optional Add fixed param names with '_fixed' suffix or not, by default True - + Returns ------- list @@ -1132,7 +1132,7 @@ def motion_model_param_names(motion_models, with_errors=True, with_fixed=True): def list_add(name): if name not in list_of_parameters: list_of_parameters.append(name) - + motion_models = np.atleast_1d(motion_models) mm_map = motion_model_map() for mm in motion_models: diff --git a/flystar/plots.py b/flystar/plots.py index 4728e60..e92f5ff 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -22,7 +22,7 @@ #################################################### -def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, +def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, equal_axis=True, save_path=None, show_plot=True): """ Plot positions of stars in reference list and the transformed starlist, @@ -50,14 +50,14 @@ def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, If not None, sets the xmin and xmax limit of the plot ylim: None or list/array [ymin, ymax] - If not None, sets the ymin and ymax limit of the plot + If not None, sets the ymin and ymax limit of the plot equal_axis: boolean If true, make axes equal. True by default save_path: string Path to save the figure to. Default is None - + show_plot: boolean If true, show the plot. Default is True @@ -78,7 +78,7 @@ def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, plt.axis([xlim[0], xlim[1], ylim[0], ylim[1]]) if equal_axis: plt.axis('equal') - + if save_path: plt.savefig(save_path) if show_plot: @@ -98,10 +98,10 @@ def pos_diff_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, xlim=None, fi ref_mat: astropy table Reference starlist only containing matched stars that were used in the transformation. Standard column headers are assumed. - + starlist_mat: astropy table Transformed starlist only containing the matched stars used in - the transformation. Standard column headers are assumed. + the transformation. Standard column headers are assumed. nbins: int Number of bins used in histogram, regardless of data range. This is @@ -113,7 +113,7 @@ def pos_diff_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, xlim=None, fi xlim: None or [xmin, xmax] If not none, set the X range of the plot - + """ diff_x = ref_mat['x'] - starlist_mat['x'] diff_y = ref_mat['y'] - starlist_mat['y'] @@ -125,7 +125,7 @@ def pos_diff_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, xlim=None, fi max_range = max([max(diff_x), max(diff_y)]) bins = np.arange(min_range, max_range+bin_width, bin_width) - + plt.figure(figsize=(10,10)) plt.clf() plt.hist(diff_x, histtype='step', bins=bins, color='blue', label='X') @@ -159,7 +159,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None ref_mat: astropy table Reference starlist only containing matched stars that were used in the transformation. Standard column headers are assumed. - + starlist_mat: astropy table Transformed starlist only containing the matched stars used in the transformation. Standard column headers are assumed. @@ -190,8 +190,8 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None outlier: float (default = 10) Defines how many sigma away from 0 a star must be in order to be considered - an outlier. - + an outlier. + """ from . import analysis diff_x = ref_mat['x'] - starlist_mat['x'] @@ -207,7 +207,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None elif errs == 'starlist': xerr = starlist_mat['xe'] yerr = starlist_mat['ye'] - + # Calculate ratio between differences and the combined error. This is # what we will plot ratio_x = diff_x / xerr @@ -215,7 +215,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None # Identify non-outliers, within +/- sigma away from 0 good = np.where( (np.abs(ratio_x) < outlier) & (np.abs(ratio_y) < outlier) ) - + """ # For both X and Y, calculate chi-square. Combine arrays to get combined # chi-square @@ -223,11 +223,11 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None chi_sq_y = diff_y**2. / yerr**2. chi_sq = np.append(chi_sq_x, chi_sq_y) - + # Calculate degrees of freedom in transformation num_mod_params = calc_nparam(transform) deg_freedom = len(chi_sq) - num_mod_params - + # Calculate reduced chi-square chi_sq_red = np.sum(chi_sq) / deg_freedom """ @@ -239,13 +239,13 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None starlist_mat[good], transform, errs=errs) - + num_mod_params = analysis.calc_nparam(transform) #-------------------------------------------# # Plotting #-------------------------------------------# - + # Set the binning as per user input bins = nbins if bin_width != None: @@ -253,7 +253,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None max_range = max([max(ratio_x), max(ratio_y)]) bins = np.arange(min_range, max_range+bin_width, bin_width) - + plt.figure(figsize=(10,10)) plt.clf() n_x, bins_x, p = plt.hist(ratio_x, histtype='step', bins=bins, color='blue', @@ -266,7 +266,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None sigma = 1 x = np.arange(-6, 6, 0.1) plt.plot(x, norm.pdf(x,mean,sigma), 'g-', linewidth=2) - + # Annotate reduced chi-sqared values in plot: with outliers xstr = r'$\chi^2_r$ = {0}'.format(np.round(chi_sq_red, decimals=3)) plt.annotate(xstr, xy=(0.3, 0.77), xycoords='figure fraction', color='black') @@ -277,7 +277,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None xstr3 = '{0} with +/- {1}+ sigma'.format(len(ratio_x) - len(good[0]), outlier) plt.annotate(xstr2, xy=(0.29, 0.83), xycoords='figure fraction', color='black') plt.annotate(xstr3, xy=(0.25, 0.80), xycoords='figure fraction', color='black') - + # Annotate reduced chi-sqared values in plot: without outliers xstr = r'$\chi^2_r$ = {0}'.format(np.round(chi_sq_red_good, decimals=3)) plt.annotate(xstr, xy=(0.7, 0.8), xycoords='figure fraction', color='black') @@ -286,7 +286,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None plt.annotate(txt, xy=(0.65,0.77), xycoords='figure fraction', color='black') xstr2 = 'Without Outliers' plt.annotate(xstr2, xy=(0.67, 0.83), xycoords='figure fraction', color='black') - + plt.xlabel('(Ref Pos - TransStarlist Pos) / Ast. Error') plt.ylabel('N stars (normalized)') plt.title('Position Residuals for Matched Stars') @@ -312,10 +312,10 @@ def mag_diff_hist(ref_mat, starlist_mat, bins=25, fileName=None, root='./'): ref_mat: astropy table Reference starlist only containing matched stars that were used in the transformation. Standard column headers are assumed. - + starlist_mat: astropy table Transformed starlist only containing the matched stars used in - the transformation. Standard column headers are assumed. + the transformation. Standard column headers are assumed. """ diff_m = ref_mat['m'] - starlist_mat['m'] @@ -324,7 +324,7 @@ def mag_diff_hist(ref_mat, starlist_mat, bins=25, fileName=None, root='./'): bad = np.isnan(diff_m) bad2 = np.where(bad == True) diff_m = np.delete(diff_m, bad2) - + plt.figure(figsize=(10,10)) plt.clf() plt.hist(diff_m, bins=bins) @@ -350,7 +350,7 @@ def pos_diff_quiver(ref_mat, starlist_mat, qscale=10, keyLength=0.2, xlim=None, ref_mat: astropy table Reference starlist only containing matched stars that were used in the transformation. Standard column headers are assumed. - + starlist_mat: astropy table Transformed starlist only containing the matched stars used in the transformation. Standard column headers are assumed. @@ -395,7 +395,7 @@ def pos_diff_quiver(ref_mat, starlist_mat, qscale=10, keyLength=0.2, xlim=None, diff_y = diff_y[good] xpos = xpos[good] ypos = ypos[good] - + # Divide differences by reference error, if desired if sigma: @@ -416,7 +416,7 @@ def pos_diff_quiver(ref_mat, starlist_mat, qscale=10, keyLength=0.2, xlim=None, diff_y = np.append(diff_y, 0) s = len(xpos) - + plt.figure(figsize=(10,10)) plt.clf() q = plt.quiver(xpos, ypos, diff_x, diff_y, scale=qscale) @@ -470,7 +470,7 @@ def vpd(ref, starlist_trans, vxlim, vylim): If not None, sets the vxmin and vxmax limit of the plot vylim: None or list/array [vymin, vymax] - If not None, sets the vymin and vymax limit of the plot + If not None, sets the vymin and vymax limit of the plot """ # Extract velocities ref_vx = ref['vx'] @@ -513,7 +513,7 @@ def vel_diff_err_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, vxlim=Non bin_width: None or float If float, sets the width of the bins used in the histograms. Will override nbins - + vxlim: None or [vx_min, vx_max] If not none, set the X axis of the Vx plot by defining the minimum and maximum values @@ -525,7 +525,7 @@ def vel_diff_err_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, vxlim=Non # Will produce 2-panel plot: Vx resid and Vy resid diff_vx = ref_mat['vx'] - starlist_mat['vx'] diff_vy = ref_mat['vy'] - starlist_mat['vy'] - + vx_err = np.hypot(ref_mat['vx_err'], starlist_mat['vx_err']) vy_err = np.hypot(ref_mat['vy_err'], starlist_mat['vy_err']) @@ -543,7 +543,7 @@ def vel_diff_err_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, vxlim=Non mean = 0 sigma = 1 x = np.arange(-6, 6, 0.1) - + plt.figure(figsize=(20,10)) plt.subplot(121) plt.subplots_adjust(left=0.1) @@ -632,7 +632,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', print( 'Creating residuals plots for star(s):' ) print( starNames ) - + s = starset.StarSet(rootDir + align) s.loadPolyfit(rootDir + poly, accel=0, arcsec=0) Nstars = len(starNames) @@ -649,11 +649,11 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', x = s.getArray('x') y = s.getArray('y') r = np.hypot(x,y) - + for i in range(Nstars): - + starName = starNames[i] - + ii = names.index(starName) star = s.stars[ii] @@ -734,9 +734,9 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', idx = np.where(abs(sig) > 4) print( 'Star: ', starName ) - print( '\tX Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tX Chi^2 = %5.2f (%6.2f for %2d dof)' % (fitx.chi2red, fitx.chi2, fitx.dof)) - print( '\tY Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tY Chi^2 = %5.2f (%6.2f for %2d dof)' % (fity.chi2red, fity.chi2, fity.dof)) # print( 'X Outliers: ', time[idxX] ) # print( 'Y Outliers: ', time[idxY] ) @@ -751,7 +751,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', t0 = int(np.floor(np.min(time))) tO = int(np.ceil(np.max(time))) - + dateTicLoc = plt.MultipleLocator(3) dateTicRng = [t0-1, tO+1] dateTics = np.arange(t0, tO+1) @@ -781,8 +781,8 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', row = 1 else: col = 1 + 2*(i % (Ncols/2)) - row = 1 + 3*(i//(Ncols/2)) - + row = 1 + 3*(i//(Ncols/2)) + ind = (row-1)*Ncols + col paxes = plt.subplot(Nrows, Ncols, ind) @@ -791,7 +791,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', plt.plot(time, fitLineX - fitSigX, 'b--') plt.errorbar(time, x, yerr=xerr, fmt='k.') rng = plt.axis() - plt.ylim(np.min(x-xerr-0.1),np.max(x+xerr+0.1)) + plt.ylim(np.min(x-xerr-0.1),np.max(x+xerr+0.1)) plt.xlabel('Date - 2000 (yrs)', fontsize=fontsize1) if time[0] > 50000: plt.xlabel('Date (MJD)', fontsize=fontsize1) @@ -884,7 +884,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', paxes.xaxis.set_major_formatter(FormatStrFormatter('%.2f')) plt.xlabel('X (pix)', fontsize=fontsize1) plt.ylabel('Y (pix)', fontsize=fontsize1) - plt.plot(fitLineX, fitLineY, 'b-') + plt.plot(fitLineX, fitLineY, 'b-') col = col + 1 ind = (row-1)*Ncols + col @@ -892,7 +892,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', bins = np.arange(-7.5, 7.5, 1) paxes = plt.subplot(Nrows, Ncols, ind) id = np.where(diffY < 0)[0] - sig[id] = -1.*sig[id] + sig[id] = -1.*sig[id] (n, b, p) = plt.hist(sigX, bins, histtype='stepfilled', color='b', label='X') plt.setp(p, 'facecolor', 'b') (n, b, p) = plt.hist(sigY, bins, histtype='step', color='r', label='Y') @@ -987,7 +987,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', plt.suptitle(title, x=0.5, y=0.97) if Nstars == 1: - plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) + plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') else: plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) @@ -996,12 +996,12 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', plt.show() print('Fubar') - + ################################################## # New codes for velocity support in FlyStar and using -# the new StarTable and StarList format. +# the new StarTable and StarList format. ################################################## def plot_pm(tab): @@ -1011,7 +1011,7 @@ def plot_pm(tab): q = plt.quiver(tab['x0'].data, tab['y0'].data, tab['vx'].data*1e3, tab['vy'].data*1e3, scale=1e2, angles='xy') - plt.quiverkey(q, 0.5, 0.8, 10, '10 mas/yr', color='red', + plt.quiverkey(q, 0.5, 0.8, 10, '10 mas/yr', color='red', coordinates='figure', labelpos='E') plt.xlabel(r'$\Delta \alpha$ (")') plt.ylabel(r'$\Delta \delta$ (")') @@ -1028,7 +1028,7 @@ def plot_gaia(gaia): d_ra_tan = (ra_tan - ra_tan_mean) * cos_dec * 3600.0 d_de_tan = (de_tan - de_tan_mean) * 3600.0 - + pmra = gaia['pmra'] pmdec = gaia['pmdec'] plt.figure(figsize=(6,6)) @@ -1037,7 +1037,7 @@ def plot_gaia(gaia): q = plt.quiver(d_ra_tan.data, d_de_tan.data, pmra.data, pmdec.data, scale=1e2, angles='xy') - plt.quiverkey(q, 0.5, 0.8, 10, '10 mas/yr', color='red', + plt.quiverkey(q, 0.5, 0.8, 10, '10 mas/yr', color='red', coordinates='figure', labelpos='E') plt.xlabel(r'$\Delta \alpha \cos \delta$ ('')') plt.ylabel(r'$\Delta \delta$ ('')') @@ -1045,7 +1045,7 @@ def plot_gaia(gaia): fmt = r'[$\alpha$, $\delta$] = [{0:8.3f}$^\circ$, {1:8.3f}$^\circ$]' plt.title(fmt.format(ra_tan_mean, de_tan_mean)) plt.gca().invert_xaxis() - + return @@ -1083,7 +1083,7 @@ def plot_mean_residuals_by_epoch(tab): # Predicted model positions at each epoch i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] xt_mod, yt_mod, xt_mod_err, yt_mod_err = tab.predict_positions(tab['t'][i_all_detected]) - + # Residuals dx = tab['x'] - xt_mod dy = tab['y'] - yt_mod @@ -1128,7 +1128,7 @@ def plot_mean_residuals_by_epoch(tab): plt.axhline(0, ls='--', color='black') plt.xlabel('Time (yr)') plt.ylabel('Mag Residuals') - + return def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=None, save_path=None): @@ -1147,20 +1147,20 @@ def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=Non for ee in range(tab['x'].shape[1]): xt_mod = xt_mod_all[:,ee] yt_mod = yt_mod_all[:,ee] - + good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] dx, dy = plot_quiver_residuals( - tab['x'][:, ee], - tab['y'][:, ee], - xt_mod, - yt_mod, - good_idx, + tab['x'][:, ee], + tab['y'][:, ee], + xt_mod, + yt_mod, + good_idx, ref_idx, - 'Epoch {0:d}'.format(ee), - unit=unit, - scale=scale, + 'Epoch {0:d}'.format(ee), + unit=unit, + scale=scale, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_{ee}.pdf' if save_path else None ) @@ -1177,7 +1177,7 @@ def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=Non dr_good_avg = np.zeros(len(tab), dtype=float) idx = np.where(n_good > 0)[0] dr_good_avg[idx] = dr_good[idx] / n_good[idx] - + dr_ref_avg = np.zeros(len(tab), dtype=float) idx = np.where(n_ref > 0)[0] dr_ref_avg[idx] = dr_ref[idx] / n_ref[idx] @@ -1203,7 +1203,7 @@ def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=Non # if (dr_ref_avg[rr] > 0): # print(fmt.format(name=tab['name'][rr], mag=tab['m0'][rr], dr=dr_ref_avg[rr], # x=tab['x0'][rr], y=tab['y0'][rr], r=np.hypot(tab['x0'][rr], tab['y0'][rr]))) - + return @@ -1214,7 +1214,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s n_good = np.zeros(len(tab), dtype=int) dr_ref = np.zeros(len(tab), dtype=float) n_ref = np.zeros(len(tab), dtype=int) - + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) @@ -1230,47 +1230,47 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s da = calc_da(trans_list[ee]) - dx, dy = plot_quiver_residuals(tab['x'][:, ee], tab['y'][:, ee], - xt_mod, yt_mod, + dx, dy = plot_quiver_residuals(tab['x'][:, ee], tab['y'][:, ee], + xt_mod, yt_mod, good_idx, ref_idx, - 'Epoch {0:d}'.format(ee), + 'Epoch {0:d}'.format(ee), unit=unit, scale=scale, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_{ee}.pdf' if save_path else None) - plot_quiver_residuals_orig(tab['x'][:, ee], tab['y'][:, ee], - xt_mod, yt_mod, + plot_quiver_residuals_orig(tab['x'][:, ee], tab['y'][:, ee], + xt_mod, yt_mod, good_idx, ref_idx, tab['x_orig'][:, ee], tab['y_orig'][:, ee], da, - 'Epoch {0:d}'.format(ee), + 'Epoch {0:d}'.format(ee), scale=scale_orig, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_Orig_{ee}.pdf' if save_path else None) - plot_mag_scatter(tab['m'][:, ee], + plot_mag_scatter(tab['m'][:, ee], tab['m0'], tab['m0_err'], - tab['x'][:, ee], tab['y'][:, ee], + tab['x'][:, ee], tab['y'][:, ee], tab['xe'][:, ee], tab['ye'][:, ee], - xt_mod, yt_mod, + xt_mod, yt_mod, good_idx, ref_idx, 'Epoch {0:d}'.format(ee), da=da, xorig=tab['x_orig'][:, ee], yorig=tab['y_orig'][:, ee], cte_fit=cte_fit, mlim=mlim, save_path=f'{save_path}/Mag_Scatter_{ee}.pdf' if save_path else None) - plot_y_scatter(tab['m'][:, ee], + plot_y_scatter(tab['m'][:, ee], tab['m0'], tab['m0_err'], - tab['x'][:, ee], tab['y'][:, ee], + tab['x'][:, ee], tab['y'][:, ee], tab['xe'][:, ee], tab['ye'][:, ee], - xt_mod, yt_mod, + xt_mod, yt_mod, good_idx, ref_idx, 'Epoch {0:d}'.format(ee), da=da, xorig=tab['x_orig'][:, ee], yorig=tab['y_orig'][:, ee], cte_fit=cte_fit, mlim=mlim, save_path=f'{save_path}/Y_Scatter_{ee}.pdf' if save_path else None) # plot_quiver_residuals_orig_angle_xy(tab['x'][:, ee], tab['y'][:, ee], -# xt_mod, yt_mod, +# xt_mod, yt_mod, # good_idx, ref_idx, # tab['x_orig'][:, ee], tab['y_orig'][:, ee], da, # 'Epoch {0:d}'.format(ee)) # # plot_quiver_residuals_vs_pos_err(dx, dy, good_idx, ref_idx, -# 1e3 * tab['xe'][:, ee], 1e3 * tab['ye'][:, ee], +# 1e3 * tab['xe'][:, ee], 1e3 * tab['ye'][:, ee], # 'positional err (mas)', 'Epoch {0:d}'.format(ee), da=da) # Building up average dr for a set of stars. @@ -1311,7 +1311,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s # if (dr_ref_avg[rr] > 0): # print(fmt.format(name=tab['name'][rr], mag=tab['m0'][rr], dr=dr_ref_avg[rr], # x=tab['x0'][rr], y=tab['y0'][rr], r=np.hypot(tab['x0'][rr], tab['y0'][rr]))) - + return @@ -1319,12 +1319,12 @@ def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arc m_t_list = [] x_t_list = [] y_t_list = [] - xe_t_list = [] + xe_t_list = [] ye_t_list = [] x_ref_list = [] - y_ref_list = [] - good_idx_list = [] - ref_idx_list =[] + y_ref_list = [] + good_idx_list = [] + ref_idx_list =[] da_list = [] ntrans = len(tab_list) @@ -1332,7 +1332,7 @@ def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arc i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) - + for mm in range(ntrans): tab = tab_list[mm] trans_list = trans_list_list[mm] @@ -1340,7 +1340,7 @@ def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arc dt = tab['t'][:, ee] - tab['t0'] xt_mod = xt_mod_all[ee] yt_mod = yt_mod_all[ee] - + good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] @@ -1349,19 +1349,19 @@ def plot_mag_scatter_multi_trans_all_epochs(tab_list, trans_list_list, unit='arc m_t_list.append(tab['m'][:, ee]) x_t_list.append(tab['x'][:, ee]) y_t_list.append(tab['y'][:, ee]) - xe_t_list.append(tab['xe'][:, ee]) + xe_t_list.append(tab['xe'][:, ee]) ye_t_list.append(tab['ye'][:, ee]) x_ref_list.append(xt_mod) y_ref_list.append(yt_mod) - good_idx_list.append(good_idx) - ref_idx_list.append(ref_idx) + good_idx_list.append(good_idx) + ref_idx_list.append(ref_idx) da_list.append(da) for ee in range(tab_list[0]['x'].shape[1]): - plot_mag_scatter_multi_trans(m_t_list[ee::ntrans], x_t_list[ee::ntrans], y_t_list[ee::ntrans], - xe_t_list[ee::ntrans], ye_t_list[ee::ntrans], x_ref_list[ee::ntrans], y_ref_list[ee::ntrans], + plot_mag_scatter_multi_trans(m_t_list[ee::ntrans], x_t_list[ee::ntrans], y_t_list[ee::ntrans], + xe_t_list[ee::ntrans], ye_t_list[ee::ntrans], x_ref_list[ee::ntrans], y_ref_list[ee::ntrans], good_idx_list[ee::ntrans], ref_idx_list[ee::ntrans], 'Epoch {0:d}'.format(ee), da_list[ee::ntrans]) - + return @@ -1383,7 +1383,7 @@ def calc_da(trans_list): c01 = trans_list.px.parameters[c01_idx] c10 = trans_list.px.parameters[c10_idx] da = np.degrees(np.arctan2(-c01, c10)) - + return da @@ -1391,7 +1391,7 @@ def plot_mag_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, # Residual dx = (x_t - x_ref) dy = (y_t - y_ref) - + # Magnitude mgood = m_t[good_idx] mref = m_t[good_idx][ref_idx] @@ -1488,7 +1488,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r # Residual dx = (x_t - x_ref) dy = (y_t - y_ref) - + # Magnitude mgood = m_t[good_idx] mref = m_t[good_idx][ref_idx] @@ -1599,23 +1599,23 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r if cte_fit=='power': idx = np.where(mgood > mlim)[0] gpopt, gpcov = curve_fit(T_cte_y, mgood[idx], ygood[idx], maxfev=100000) - + marr = np.linspace(13, 24, 1000) - + # Corrected values ygood_new = ygood - T_cte_y(mgood, *gpopt) yref_new = yref - T_cte_y(mref, *gpopt) - + agood = angle_from_xy(xgood, ygood) % 360 rgood = np.hypot(xgood, ygood) aref = angle_from_xy(xref, yref) % 360 rref = np.hypot(xref, yref) - + agood_new = angle_from_xy(xgood, ygood_new) % 360 rgood_new = np.hypot(xgood, ygood_new) aref_new = angle_from_xy(xref, yref_new) % 360 rref_new = np.hypot(xref, yref_new) - + fig, ax = plt.subplots(4, 2, figsize=(12,12), sharex=True, sharey='row', num=105) plt.subplots_adjust(hspace=0.01, wspace=0.01) ax[0,0].scatter(mgood, ygood, color='black', alpha=0.3, s=2) @@ -1625,24 +1625,24 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[0,0].axhline(y=0) ax[0,0].plot(marr, T_cte_y(marr, *gpopt), 'k-') ax[0,0].set_title('No correction') - + ax[0,1].scatter(mgood, ygood_new, color='black', alpha=0.3, s=2) ax[0,1].scatter(mref, yref_new, color='red', alpha=0.3, s=2) ax[0,1].set_ylim(-0.01, 0.01) ax[0,1].axhline(y=0) ax[0,1].set_title('Corrected') - + ax[1,0].scatter(mgood, ygood/yegood, color='black', alpha=0.3, s=2) ax[1,0].scatter(mref, yref/yeref, color='red', alpha=0.3, s=2) ax[1,0].set_ylabel('Res/Pos Err, y') ax[1,0].set_ylim(-10, 10) ax[1,0].axhline(y=0) - + ax[1,1].scatter(mgood, ygood_new/yegood, color='black', alpha=0.3, s=2) ax[1,1].scatter(mref, yref_new/yeref, color='red', alpha=0.3, s=2) ax[1,1].set_ylim(-10, 10) ax[1,1].axhline(y=0) - + ax[2,0].scatter(mgood, rgood, color='black', alpha=0.3, s=2) ax[2,0].scatter(mref, rref, color='red', alpha=0.3, s=2) ax[2,0].set_ylabel('Modulus (arcsec)') @@ -1651,7 +1651,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[2,0].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood.data, rref.data]))) else: ax[2,0].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood, rref]))) - + ax[2,1].scatter(mgood, rgood_new, color='black', alpha=0.3, s=2) ax[2,1].scatter(mref, rref_new, color='red', alpha=0.3, s=2) ax[2,1].set_yscale('log') @@ -1659,12 +1659,12 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[2,1].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood_new.data, rref_new.data]))) else: ax[2,1].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood_new, rref_new]))) - + ax[3,0].scatter(mgood, agood, color='black', alpha=0.3, s=2) ax[3,0].scatter(mref, aref, color='red', alpha=0.3, s=2) ax[3,0].set_ylabel('Angle (deg)') ax[3,0].set_xlabel('mag') - + ax[3,1].scatter(mgood, agood_new, color='black', alpha=0.3, s=2) ax[3,1].scatter(mref, aref_new, color='red', alpha=0.3, s=2) ax[3,1].set_xlabel('mag') @@ -1678,7 +1678,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r gpopt1, gpcov1 = curve_fit(T_line, mgood[idx1], ygood[idx1], maxfev=100000) gpopt2, gpcov2 = curve_fit(T_cte_y, mgood[idx2], ygood[idx2], maxfev=100000) - + marr1 = np.linspace(13, 18.5, 1000) marr2 = np.linspace(18.5, 24, 1000) @@ -1706,7 +1706,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r xeref2 = xeref[idx2r] yeref1 = yeref[idx1r] yeref2 = yeref[idx2r] - + # Corrected values ygood_new1 = ygood1 - T_line(mgood1, *gpopt1) yref_new1 = yref1 - T_line(mref1, *gpopt1) @@ -1732,7 +1732,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r rgood_new2 = np.hypot(xgood2, ygood_new2) aref_new2 = angle_from_xy(xref2, yref_new2) % 360 rref_new2 = np.hypot(xref2, yref_new2) - + fig, ax = plt.subplots(4, 2, figsize=(12,12), sharex=True, sharey='row', num=105) plt.subplots_adjust(hspace=0.01, wspace=0.01) ax[0,0].scatter(mgood, ygood, color='black', alpha=0.3, s=2) @@ -1743,7 +1743,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[0,0].plot(marr1, T_line(marr1, *gpopt1), 'b-') ax[0,0].plot(marr2, T_cte_y(marr2, *gpopt2), 'b-') ax[0,0].set_title('No correction') - + ax[0,1].scatter(mgood1, ygood_new1, color='black', alpha=0.3, s=2) ax[0,1].scatter(mref1, yref_new1, color='red', alpha=0.3, s=2) ax[0,1].scatter(mgood2, ygood_new2, color='black', alpha=0.3, s=2) @@ -1751,20 +1751,20 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[0,1].set_ylim(-0.01, 0.01) ax[0,1].axhline(y=0) ax[0,1].set_title('Corrected') - + ax[1,0].scatter(mgood, ygood/yegood, color='black', alpha=0.3, s=2) ax[1,0].scatter(mref, yref/yeref, color='red', alpha=0.3, s=2) ax[1,0].set_ylabel('Res/Pos Err, y') ax[1,0].set_ylim(-10, 10) ax[1,0].axhline(y=0) - + ax[1,1].scatter(mgood1, ygood_new1/yegood1, color='black', alpha=0.3, s=2) ax[1,1].scatter(mref1, yref_new1/yeref1, color='red', alpha=0.3, s=2) ax[1,1].scatter(mgood2, ygood_new2/yegood2, color='black', alpha=0.3, s=2) ax[1,1].scatter(mref2, yref_new2/yeref2, color='red', alpha=0.3, s=2) ax[1,1].set_ylim(-10, 10) ax[1,1].axhline(y=0) - + ax[2,0].scatter(mgood, rgood, color='black', alpha=0.3, s=2) ax[2,0].scatter(mref, rref, color='red', alpha=0.3, s=2) ax[2,0].set_ylabel('Modulus (arcsec)') @@ -1773,7 +1773,7 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[2,0].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood.data, rref.data]))) else: ax[2,0].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood, rref]))) - + ax[2,1].scatter(mgood1, rgood_new1, color='black', alpha=0.3, s=2) ax[2,1].scatter(mref1, rref_new1, color='red', alpha=0.3, s=2) ax[2,1].scatter(mgood2, rgood_new2, color='black', alpha=0.3, s=2) @@ -1783,18 +1783,18 @@ def plot_y_scatter(m_t, m0, m0e, x_t, y_t, xe_t, ye_t, x_ref, y_ref, good_idx, r ax[2,1].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood_new.data2, rref_new.data2]))) else: ax[2,1].set_ylim(1e-6, 1.1 * np.max(np.concatenate([rgood_new2, rref_new2]))) - + ax[3,0].scatter(mgood, agood, color='black', alpha=0.3, s=2) ax[3,0].scatter(mref, aref, color='red', alpha=0.3, s=2) ax[3,0].set_ylabel('Angle (deg)') ax[3,0].set_xlabel('mag') - + ax[3,1].scatter(mgood1, agood_new1, color='black', alpha=0.3, s=2) ax[3,1].scatter(mref1, aref_new1, color='red', alpha=0.3, s=2) ax[3,1].scatter(mgood2, agood_new2, color='black', alpha=0.3, s=2) ax[3,1].scatter(mref2, aref_new2, color='red', alpha=0.3, s=2) ax[3,1].set_xlabel('mag') - + def T_cte_y(m, A, m0, alpha, m1): base = m/m0 @@ -1804,16 +1804,16 @@ def T_line(m, a, b): return a + m*b -def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, +def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, unit='pixel', scale=None, plotlim=None, save_path=None): """ unit : str 'pixel' or 'arcsec' The pixel units of the input values. Note, if arcsec, then the values will be - converted to milli-arcsec for plotting when appropriate. + converted to milli-arcsec for plotting when appropriate. scale : float - The quiver scale. If none, then default units will be used appropriate to the unit. + The quiver scale. If none, then default units will be used appropriate to the unit. plotlim : float (positive) Sets the size of the plotted figure. If None, then default is used. @@ -1868,7 +1868,7 @@ def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, else: print(str_fmt.format(dx[good_idx][ref_idx].mean(), 0.0, dy[good_idx][ref_idx].mean(), 0.0, 'REF', unit2)) - + print(str_fmt.format(dx[good_idx].mean(), dx[good_idx].std(), dy[good_idx].mean(), dy[good_idx].std(), 'GOOD', unit2)) @@ -1882,14 +1882,14 @@ def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, pl dr_ref = np.zeros(len(tab), dtype=float) n_ref = np.zeros(len(tab), dtype=int) - idx = np.where((tab['m0'] < lower_mag) & + idx = np.where((tab['m0'] < lower_mag) & (tab['m0'] > upper_mag))[0] tab = tab[idx] # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) - + for ee in range(tab['x'].shape[1]): dt = tab['t'][:, ee] - tab['t0'] xt_mod = xt_mod_all[ee] @@ -1899,10 +1899,10 @@ def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, pl good_idx = np.where(np.isfinite(tab['x'][:, ee]) == True)[0] ref_idx = np.where(tab[good_idx]['used_in_trans'][:, ee] == True)[0] - dx, dy = plot_quiver_residuals_magcolor(tab['x'][:, ee], tab['y'][:, ee], + dx, dy = plot_quiver_residuals_magcolor(tab['x'][:, ee], tab['y'][:, ee], xt_mod, yt_mod, mag, good_idx, ref_idx, - 'Epoch {0:d}'.format(ee), + 'Epoch {0:d}'.format(ee), unit=unit, scale=scale, plotlim=plotlim) # Building up average dr for a set of stars. @@ -1917,7 +1917,7 @@ def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, pl dr_good_avg = np.zeros(len(tab), dtype=float) idx = np.where(n_good > 0)[0] dr_good_avg[idx] = dr_good[idx] / n_good[idx] - + dr_ref_avg = np.zeros(len(tab), dtype=float) idx = np.where(n_ref > 0)[0] dr_ref_avg[idx] = dr_ref[idx] / n_ref[idx] @@ -1927,16 +1927,16 @@ def plot_quiver_residuals_magcolor_all_epochs(tab, unit='arcsec', scale=None, pl -def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_idx, title, +def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_idx, title, unit='pixel', scale=None, plotlim=None): """ unit : str 'pixel' or 'arcsec' The pixel units of the input values. Note, if arcsec, then the values will be - converted to milli-arcsec for plotting when appropriate. + converted to milli-arcsec for plotting when appropriate. scale : float - The quiver scale. If none, then default units will be used appropriate to the unit. + The quiver scale. If none, then default units will be used appropriate to the unit. plotlim : float (positive) Sets the size of the plotted figure. If None, then default is used. @@ -1971,7 +1971,7 @@ def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_id # cmap = mpl.cm.cool # norm = mpl.colors.Normalize(vmin=np.min(mag), vmax=np.max(mag)) -# +# # cb1 = mpl.colorbar.ColorbarBase(ax, cmap=cmap, # norm=norm, # orientation='horizontal') @@ -2014,7 +2014,7 @@ def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_id else: print(str_fmt.format(dx[good_idx][ref_idx].mean(), 0.0, dy[good_idx][ref_idx].mean(), 0.0, 'REF', unit2)) - + print(str_fmt.format(dx[good_idx].mean(), dx[good_idx].std(), dy[good_idx].mean(), dy[good_idx].std(), 'GOOD', unit2)) @@ -2022,17 +2022,17 @@ def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_id return (dx, dy) -def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, - x_orig, y_orig, da, title, +def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, + x_orig, y_orig, da, title, scale=None, plotlim=None, save_path=None): """ unit : str 'pixel' or 'arcsec' The pixel units of the input values. Note, if arcsec, then the values will be - converted to milli-arcsec for plotting when appropriate. + converted to milli-arcsec for plotting when appropriate. scale : float - The quiver scale. If none, then default units will be used appropriate to the unit. + The quiver scale. If none, then default units will be used appropriate to the unit. plotlim : float (positive) Sets the size of the plotted figure. If None, then default is used. @@ -2094,11 +2094,11 @@ def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, # ax1.hist(aref ,color='red', histtype = 'step', # alpha=0.8, bins = 36, density=True) # ax1.set_xlabel('Quiver angle (degrees), HST camera') -# -# ax2.scatter(x_orig[good_idx], y_orig[good_idx], +# +# ax2.scatter(x_orig[good_idx], y_orig[good_idx], # s=5e3 * r_good**2, alpha=0.3, color='black') -# ax2.scatter(x_orig[good_idx][ref_idx], y_orig[good_idx][ref_idx], -# s=5e3 * r_ref**2, alpha=0.5, color='red') +# ax2.scatter(x_orig[good_idx][ref_idx], y_orig[good_idx][ref_idx], +# s=5e3 * r_ref**2, alpha=0.5, color='red') # ax2.set_xlabel('X (orig pix)') # ax2.set_ylabel('Y (orig pix)') # plt.title(title) @@ -2124,16 +2124,16 @@ def rotate(x, y, theta): return xnew, ynew -def plot_quiver_residuals_orig_angle_xy(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, +def plot_quiver_residuals_orig_angle_xy(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, x_orig, y_orig, da, title, scale=None, plotlim=None): """ unit : str 'pixel' or 'arcsec' The pixel units of the input values. Note, if arcsec, then the values will be - converted to milli-arcsec for plotting when appropriate. + converted to milli-arcsec for plotting when appropriate. scale : float - The quiver scale. If none, then default units will be used appropriate to the unit. + The quiver scale. If none, then default units will be used appropriate to the unit. plotlim : float (positive) Sets the size of the plotted figure. If None, then default is used. @@ -2141,7 +2141,7 @@ def plot_quiver_residuals_orig_angle_xy(x_t, y_t, x_ref, y_ref, good_idx, ref_id """ dx = (x_t - x_ref) dy = (y_t - y_ref) - + # Residual modulus r_good = np.hypot(dx[good_idx], dy[good_idx]) r_ref = np.hypot(dx[good_idx][ref_idx], dy[good_idx][ref_idx]) @@ -2193,17 +2193,17 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): chi2_x_list = [] chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements - + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ii in range(len(tab)): - # Ignore the NaNs + # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) fnd_list.append(len(fnd)) - + x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] if boot_err: @@ -2220,7 +2220,7 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): diffY = y - fitLineY sigX = diffX / xerr sigY = diffY / yerr - + chi2_x = np.sum(sigX**2) chi2_y = np.sum(sigY**2) chi2_x_list.append(chi2_x) @@ -2229,7 +2229,7 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): x = np.array(chi2_x_list) y = np.array(chi2_y_list) fnd = np.array(fnd_list) - + idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract 2 to get Ndof n_params = np.nanmean(tab['n_params'][idx]) @@ -2256,7 +2256,7 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): chi2red_x = x / Ndof chi2red_y = y / Ndof chi2red_t = (x + y) / (2.0 * Ndof) - + print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' med_chi2red_x_f = np.median(chi2red_x[idx]) @@ -2279,7 +2279,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): chi2_x_list = [] chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements - + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) @@ -2289,7 +2289,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) fnd_list.append(len(fnd)) - + x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] if boot_err: @@ -2306,7 +2306,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): diffY = y - fitLineY sigX = diffX / xerr sigY = diffY / yerr - + chi2_x = np.sum(sigX**2) chi2_y = np.sum(sigY**2) chi2_x_list.append(chi2_x) @@ -2315,7 +2315,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): x = np.array(chi2_x_list) y = np.array(chi2_y_list) fnd = np.array(fnd_list) - + idx = np.where(fnd == Ndetect)[0] n_params = tab['n_params'] Ndof = Ndetect - n_params @@ -2335,7 +2335,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): chi2red_x = x / Ndof chi2red_y = y / Ndof chi2red_t = (x + y) / (2.0 * Ndof + 1*(tab['motion_model_used']=='Parallax')) - + print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' med_chi2red_x_f = np.median(chi2red_x[idx]) @@ -2359,17 +2359,17 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo chi2_x_list = [] chi2_y_list = [] fnd_list = [] # Number of non-NaN error measurements - + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) for ii in range(len(tab)): - # Ignore the NaNs + # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) fnd_list.append(len(fnd)) - + x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] if boot_err: @@ -2386,7 +2386,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo diffY = y - fitLineY sigX = diffX / xerr sigY = diffY / yerr - + chi2_x = np.sum(sigX**2) chi2_y = np.sum(sigY**2) chi2_x_list.append(chi2_x) @@ -2397,8 +2397,8 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo x = np.array(chi2_x_list) y = np.array(chi2_y_list) fnd = np.array(fnd_list) - - + + idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract n_params to get Ndof n_params = np.nanmean(tab['n_params'][idx]) @@ -2428,7 +2428,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo chi2red_x = x / Ndof chi2red_y = y / Ndof chi2red_t = (x + y) / (2.0 * Ndof) - + print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' med_chi2red_x_f = np.median(chi2red_x[idx]) @@ -2456,16 +2456,16 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14, 21], ylim=[-1, 1], target_i sigX_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) sigY_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) m_arr = np.nan * np.ones((len(tab['xe']), Ndetect)) - + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) - + for ii in range(len(tab['xe'])): - # Ignore the NaNs + # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) - if len(fnd) == Ndetect and tab['use_in_trans'][ii]: + if len(fnd) == Ndetect and tab['use_in_trans'][ii]: time = tab['t'][ii, fnd] x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] @@ -2480,7 +2480,7 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14, 21], ylim=[-1, 1], target_i fitLineX = xt_mod_all[ii, fnd] fitLineY = yt_mod_all[ii, fnd] - + diffX = x - fitLineX diffY = y - fitLineY sigX = diffX / xerr @@ -2489,7 +2489,7 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14, 21], ylim=[-1, 1], target_i diffX_arr[ii] = diffX.reshape(Ndetect,) diffY_arr[ii] = diffY.reshape(Ndetect,) errX_arr[ii] = xerr.reshape(Ndetect,) - errY_arr[ii] = yerr.reshape(Ndetect,) + errY_arr[ii] = yerr.reshape(Ndetect,) sigX_arr[ii] = sigX.reshape(Ndetect,) sigY_arr[ii] = sigY.reshape(Ndetect,) m_arr[ii] = m.reshape(Ndetect,) @@ -2522,14 +2522,14 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14, 21], ylim=[-1, 1], target_i ax2.legend() #print(errX_arr[:, ii]) - ax3.errorbar(m_arr[:, ii], diffX_arr[:, ii]*1E3, yerr=errX_arr[:, ii]*1E3, + ax3.errorbar(m_arr[:, ii], diffX_arr[:, ii]*1E3, yerr=errX_arr[:, ii]*1E3, marker='s', label = 'X', ls='none', color='tab:blue', alpha=0.4, ms=5) - ax3.errorbar(m_arr[:, ii], diffY_arr[:, ii]*1E3, yerr=errY_arr[:, ii]*1E3, + ax3.errorbar(m_arr[:, ii], diffY_arr[:, ii]*1E3, yerr=errY_arr[:, ii]*1E3, marker='o', label = 'Y', ls='none', color='tab:orange', alpha=0.4, ms=5) if target_idx is not None: - ax3.errorbar(m_arr[target_idx, ii], diffX_arr[target_idx, ii]*1E3, yerr=errX_arr[target_idx, ii]*1E3, + ax3.errorbar(m_arr[target_idx, ii], diffX_arr[target_idx, ii]*1E3, yerr=errX_arr[target_idx, ii]*1E3, marker='s', ls='none', color='black', ms=5) - ax3.errorbar(m_arr[target_idx, ii], diffY_arr[target_idx, ii]*1E3, yerr=errY_arr[target_idx, ii]*1E3, + ax3.errorbar(m_arr[target_idx, ii], diffY_arr[target_idx, ii]*1E3, yerr=errY_arr[target_idx, ii]*1E3, marker='o', ls='none', color='black', ms=5) ax3.set_xlim(mlim[0], mlim[1]) ax3.set_ylim(ylim[0], ylim[1]) @@ -2540,7 +2540,7 @@ def plot_chi2_dist_per_epoch(tab, Ndetect, mlim=[14, 21], ylim=[-1, 1], target_i ax3.set_ylabel('residual (mas)') return - + # TODO: update for motion model def plot_chi2_ecliptic_per_epoch(tab, Ndetect,ra,dec, mlim=[14,21], ylim = [-1, 1], target_idx = 0): """ @@ -2554,7 +2554,7 @@ def plot_chi2_ecliptic_per_epoch(tab, Ndetect,ra,dec, mlim=[14,21], ylim = [-1, sigX_arr = -99 * np.ones((len(tab['xe']), Ndetect)) sigY_arr = -99 * np.ones((len(tab['xe']), Ndetect)) m_arr = -99 * np.ones((len(tab['xe']), Ndetect)) - + rad_to_as = 180/np.pi * 60 * 60 deg_to_as = 60 * 60 def eq_to_ec(ra,dec): @@ -2595,7 +2595,7 @@ def eq_to_ec(ra,dec): dt = tab['t'][ii, fnd] - tab['t0'][ii] fitLineX = lambda_pm fitLineY = beta_pm - + diffX = lambda_obs - fitLineX diffY = beta_obs - fitLineY sigX = diffX / xerr @@ -2670,10 +2670,10 @@ def plot_chi2_dist_mag(tab, Ndetect, xlim=40, n_bins=30, boot_err=False): fnd_list = [] # Number of non-NaN error measurements for ii in range(len(tab['me'])): - # Ignore the NaNs + # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['me'][ii,:])) fnd_list.append(len(fnd)) - + m = tab['m'][ii, fnd] if boot_err: merr = np.hypot(tab['me_boot'][ii, fnd], tab['me'][ii, fnd]) @@ -2684,7 +2684,7 @@ def plot_chi2_dist_mag(tab, Ndetect, xlim=40, n_bins=30, boot_err=False): diff_m = m0 - m sig_m = diff_m/merr - + chi2_m = np.sum(sig_m**2) chi2_m_list.append(chi2_m) @@ -2701,7 +2701,7 @@ def plot_chi2_dist_mag(tab, Ndetect, xlim=40, n_bins=30, boot_err=False): plt.figure(figsize=(6,4)) plt.clf() plt.hist(chi2_m[idx], bins=np.arange(xlim*10), histtype='step', density=True) - plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, + plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, label=r'$\chi^2$ ' + str(Ndof) + ' dof') plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) plt.xlim(0, xlim) @@ -2710,7 +2710,7 @@ def plot_chi2_dist_mag(tab, Ndetect, xlim=40, n_bins=30, boot_err=False): print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' print(fmt.format('M', np.median(chi2_m[idx] / (fnd[idx] - 2)), np.median(chi2_m / (fnd - 2)))) - + return def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, file_name=None, filter=None): @@ -2722,10 +2722,10 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil fnd_list = [] # Number of non-NaN error measurements for ii in range(len(tab['me'])): - # Ignore the NaNs + # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['me'][ii,:])) fnd_list.append(len(fnd)) - + m = tab['m'][ii, fnd] merr = tab['me'][ii, fnd] m0 = tab['m0'][ii] @@ -2733,7 +2733,7 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil diff_m = m0 - m sig_m = diff_m/merr - + chi2_m = np.sum(sig_m**2) chi2_m_list.append(chi2_m) @@ -2750,7 +2750,7 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil plt.figure(figsize=(6,4)) plt.clf() plt.hist(chi2_m[idx], bins=np.arange(xlim*10), label='mag', histtype='stepfilled', density=True, color='green', alpha=0.7, edgecolor='k') - plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, + plt.plot(chi2_maxis, chi2.pdf(chi2_maxis, Ndof), 'r-', alpha=0.6, label=r'$\chi^2$ ' + str(Ndof) + ' dof') #plt.title('$N_{epoch} = $' + str(Ndetect) + ', $N_{dof} = $' + str(Ndof)) plt.xlim(0, xlim) @@ -2765,23 +2765,23 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' print(fmt.format('M', np.median(chi2_m[idx] / (fnd[idx] - 2)), np.median(chi2_m / (fnd - 2)))) - + return def plot_stars(tab, star_names, NcolMax=2, epoch_array = None, figsize=(15,25), color_time=False, boot_err=False): """ - Plot a set of stars positions, flux and residuals over time. + Plot a set of stars positions, flux and residuals over time. epoch_array : None, array Array of the epoch indicies to plot. If None, plots all epochs. """ - + def rs(x): return x.reshape(len(x)) - + print( 'Creating residuals plots for star(s):' ) print( star_names ) - + Nstars = len(star_names) Ncols = 3 * np.min([Nstars, NcolMax]) if Nstars <= Ncols/3: @@ -2803,10 +2803,10 @@ def rs(x): xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) # xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.infer_positions(cont_times) - + for i in range(Nstars): starName = star_names[i] - + try: ii = np.where(tab['name'] == starName)[0][0] except IndexError: @@ -2821,7 +2821,7 @@ def rs(x): fnd = fnd.reshape(len(fnd),1) time = tab['t'][ii, fnd] - dtime = time.data % 1 + dtime = time.data % 1 x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] m = tab['m'][ii, fnd] @@ -2836,7 +2836,7 @@ def rs(x): merr = tab['me'][ii, fnd] dt = tab['t'][ii, fnd] - tab['t0'][ii] - + fitLineX = xt_mod_all[ii, fnd] fitLineY = yt_mod_all[ii, fnd] @@ -2873,14 +2873,14 @@ def rs(x): chi2_red_x = chi2_x / dof chi2_red_y = chi2_y / dof chi2_red_m = chi2_m / dofM - + print( 'Star: ', starName ) - print( '\tX Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tX Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_x, chi2_x, dof)) - print( '\tY Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tY Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_y, chi2_y, dof)) - print( '\tM Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tM Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_m, chi2_m, dofM)) if 'motion_model_used' in tab.keys(): print('\tMotion model:', tab['motion_model_used'][ii]) @@ -2929,7 +2929,7 @@ def rs(x): row = 1 else: col = 1 + 3*(i % (Ncols/3)) - row = 1 + 3*(i//(Ncols/3)) + row = 1 + 3*(i//(Ncols/3)) ind = int((row-1)*Ncols + col) @@ -3023,7 +3023,7 @@ def rs(x): paxes.xaxis.set_major_formatter(fmtX) paxes.yaxis.set_major_formatter(fmtM) paxes.tick_params(axis='both', which='major', labelsize=12) - + ########## # X residuals vs time @@ -3139,7 +3139,7 @@ def rs(x): plt.xlabel('X (asec)', fontsize=fontsize1) plt.ylabel('Y (asec)', fontsize=fontsize1) plt.plot(xt_cont_all[ii], yt_cont_all[ii], 'b-') - + ########## # X, Y Histogram of Residuals ########## @@ -3149,7 +3149,7 @@ def rs(x): bins = np.arange(-7.5, 7.5, 1) paxes = plt.subplot(Nrows, Ncols, ind) id = np.where(diffY < 0)[0] - sig[id] = -1.*sig[id] + sig[id] = -1.*sig[id] (n, b, p) = plt.hist(sigX, bins, histtype='stepfilled', color='b', label='X') plt.setp(p, 'facecolor', 'b') (n, b, p) = plt.hist(sigY, bins, histtype='step', color='r', label='Y') @@ -3175,10 +3175,10 @@ def rs(x): plt.xlabel('Residuals (sigma)', fontsize=fontsize1) plt.ylabel('Number of Epochs', fontsize=fontsize1) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - + if Nstars == 1: - plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) + plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) # plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') else: plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) @@ -3192,7 +3192,7 @@ def rs(x): def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_list = None, figsize=(15,25), color_time=False, resTicRng=None, save_name=None, boot_err=False): """ - Plot a set of stars positions, flux and residuals over time. + Plot a set of stars positions, flux and residuals over time. epoch_array : None, array Array of the epoch indicies to plot. If None, plots all epochs. @@ -3204,12 +3204,12 @@ def plot_stars_nfilt(tab, star_names, NcolMax=2, epoch_array_list = None, color_ print( star_names ) def rs(x): return x.reshape(len(x)) - + # motion_model_dict = motion_model.validate_motion_model_dict(motion_model_dict, tab, None) i_all_detected = np.where(~np.any(np.isnan(tab['t']),axis=1))[0][0] # xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.get_star_positions_at_time(tab['t'][i_all_detected], motion_model_dict, allow_alt_models=True) xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) - + Nstars = len(star_names) Ncols = 3 * np.min([Nstars, NcolMax]) if Nstars <= Ncols/3: @@ -3231,31 +3231,31 @@ def rs(x): xt_mod_all, yt_mod_all, xt_mod_err, yt_mod_err = tab.infer_positions(tab['t'][i_all_detected]) # xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.get_star_positions_at_time(cont_times, motion_model_dict, allow_alt_models=True) xt_cont_all, yt_cont_all, xt_cont_err, yt_cont_err = tab.infer_positions(cont_times) - + for i in range(Nstars): for ea, epoch_array in enumerate(epoch_array_list): color=color_list[ea] starName = star_names[i] - + try: ii = np.where(tab['name'] == starName)[0][0] except IndexError: print("!! %s is not in this list"%starName) continue - + # Ignore the NaNs fnd = np.argwhere(~np.isnan(tab['xe'][ii,:])) - + if epoch_array is not None: fnd = np.intersect1d(fnd, epoch_array) fnd = fnd.reshape(len(fnd),1) - + time = tab['t'][ii, fnd] - dtime = time.data % 1 + dtime = time.data % 1 x = tab['x'][ii, fnd] y = tab['y'][ii, fnd] m = tab['m'][ii, fnd] - + if boot_err: xerr = np.hypot(tab['xe'][ii, fnd], tab['xe_boot'][ii, fnd]) yerr = np.hypot(tab['ye'][ii, fnd], tab['ye_boot'][ii, fnd]) @@ -3264,16 +3264,16 @@ def rs(x): xerr = tab['xe'][ii, fnd] yerr = tab['ye'][ii, fnd] merr = tab['me'][ii, fnd] - + fitLineX = xt_mod_all[ii, fnd] fitLineY = yt_mod_all[ii, fnd] - + fitSigX = xt_mod_err[ii, fnd] fitSigY = yt_mod_err[ii, fnd] - + fitLineM = np.repeat(tab['m0'][ii], len(time)).reshape(len(time),1) fitSigM = np.repeat(tab['m0_err'][ii], len(time)).reshape(len(time),1) - + diffX = x - fitLineX diffY = y - fitLineY diffM = m - fitLineM @@ -3283,42 +3283,42 @@ def rs(x): sigY = diffY / yerr sigM = diffM / merr sig = diff / rerr - + # Determine if there are points that are more than 4 sigma off idxX = np.where(abs(sigX) > 4) idxY = np.where(abs(sigY) > 4) idxM = np.where(abs(sigM) > 4) idx = np.where(abs(sig) > 4) - + # Calculate chi^2 metrics chi2_x = np.sum(sigX**2) chi2_y = np.sum(sigY**2) chi2_m = np.sum(sigM**2) - + dof = len(x) - 2 dofM = len(m) - 1 - + chi2_red_x = chi2_x / dof chi2_red_y = chi2_y / dof chi2_red_m = chi2_m / dofM - - + + print( 'Star: ', starName ) - print( '\tX Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tX Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_x, chi2_x, dof)) - print( '\tY Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tY Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_y, chi2_y, dof)) - print( '\tM Chi^2 = %5.2f (%6.2f for %2d dof)' % + print( '\tM Chi^2 = %5.2f (%6.2f for %2d dof)' % (chi2_red_m, chi2_m, dofM)) - + tmin = time.min() tmax = time.max() - + dateTicLoc = plt.MultipleLocator(3) dateTicRng = [np.floor(tmin), np.ceil(tmax)] dateTics = np.arange(np.floor(tmin), np.ceil(tmax)+0.1) DateTicsLabel = dateTics - + # See if we are using MJD instead. if time[0] > 50000: print('MJD') @@ -3328,12 +3328,12 @@ def rs(x): dateTicRng = [tmin-200, tmax+200] dateTics = np.arange(dateTicRng[0], dateTicRng[-1]+500, 1000) DateTicsLabel = dateTics - - + + maxErr = np.array([(diffX-xerr)*1e3, (diffX+xerr)*1e3, (diffY-yerr)*1e3, (diffY+yerr)*1e3]).max() maxErrM = np.array([(diffM - merr), (diffM + merr)]).max() - + if maxErr > 2: maxErr = 2.0 if maxErrM > 1.0: @@ -3341,13 +3341,13 @@ def rs(x): if resTicRng == None: resTicRng = [-1.1*maxErr, 1.1*maxErr] resTicRngM = [-1.1*maxErrM, 1.1*maxErrM] - + from matplotlib.ticker import FormatStrFormatter fmtX = FormatStrFormatter('%5i') fmtY = FormatStrFormatter('%6.3f') fmtM = FormatStrFormatter('%5.2f') fontsize1 = 10 - + ########## # X vs time ########## @@ -3356,10 +3356,10 @@ def rs(x): row = 1 else: col = 1 + 3*(i % (Ncols/3)) - row = 1 + 3*(i//(Ncols/3)) - + row = 1 + 3*(i//(Ncols/3)) + ind = int((row-1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(cont_times, xt_cont_all[ii], 'b-') plt.plot(cont_times, xt_cont_all[ii] + xt_cont_err[ii], 'b--') @@ -3385,14 +3385,14 @@ def rs(x): paxes.yaxis.set_major_formatter(fmtY) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) plt.annotate(starName, xy=(1.0,1.1), xycoords='axes fraction', fontsize=12, color='red') - - + + ########## # Y vs time ########## col = col + 1 ind = int((row-1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(cont_times, yt_cont_all[ii], 'b-') plt.plot(cont_times, yt_cont_all[ii] + yt_cont_err[ii], 'b--') @@ -3416,13 +3416,13 @@ def rs(x): paxes.xaxis.set_major_formatter(fmtX) paxes.yaxis.set_major_formatter(fmtY) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - + ########## # M vs time ########## col = col + 1 ind = int((row - 1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, fitLineM, 'g-') plt.plot(time, fitLineM + fitSigM, 'g--') @@ -3446,15 +3446,15 @@ def rs(x): paxes.xaxis.set_major_formatter(fmtX) paxes.yaxis.set_major_formatter(fmtM) paxes.tick_params(axis='both', which='major', labelsize=12) - - + + ########## # X residuals vs time ########## row = row + 1 col = col - 2 ind = int((row-1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'b-') plt.plot(cont_times, xt_cont_err[ii]*1e3, 'b--') @@ -3476,13 +3476,13 @@ def rs(x): plt.ylabel('X Residuals (mas)', fontsize=fontsize1) paxes.xaxis.set_major_formatter(fmtX) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - + ########## # Y residuals vs time ########## col = col + 1 ind = int((row-1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'b-') plt.plot(cont_times, yt_cont_err[ii]*1e3, 'b--') @@ -3504,13 +3504,13 @@ def rs(x): plt.ylabel('Y Residuals (mas)', fontsize=fontsize1) paxes.xaxis.set_major_formatter(fmtX) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - + ########## # M residuals vs time ########## col = col + 1 ind = int((row-1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) plt.plot(time, np.zeros(len(time)), 'g-') plt.plot(time, fitSigM*1e3, 'g--') @@ -3532,15 +3532,15 @@ def rs(x): plt.ylabel('m Residuals (mag)', fontsize=fontsize1) paxes.xaxis.set_major_formatter(fmtX) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - - + + ########## # X vs. Y ########## row = row + 1 col = col - 2 ind = int((row-1)*Ncols + col) - + paxes = plt.subplot(Nrows, Ncols, ind) if not color_time: plt.errorbar(rs(x),rs(y), xerr=rs(xerr), @@ -3561,18 +3561,18 @@ def rs(x): paxes.xaxis.set_major_formatter(FormatStrFormatter('%.3f')) plt.xlabel('X (asec)', fontsize=fontsize1) plt.ylabel('Y (asec)', fontsize=fontsize1) - plt.plot(fitLineX, fitLineY, 'b-') - + plt.plot(fitLineX, fitLineY, 'b-') + ########## # X, Y Histogram of Residuals ########## col = col + 1 ind = int((row-1)*Ncols + col) - + bins = np.arange(-7.5, 7.5, 1) paxes = plt.subplot(Nrows, Ncols, ind) id = np.where(diffY < 0)[0] - sig[id] = -1.*sig[id] + sig[id] = -1.*sig[id] (n, b, p) = plt.hist(sigX, bins, histtype='stepfilled', color='b', label='X') plt.setp(p, 'facecolor', 'b') (n, b, p) = plt.hist(sigY, bins, histtype='step', color='r', label='Y') @@ -3582,13 +3582,13 @@ def rs(x): plt.xlabel('Residuals (sigma)', fontsize=fontsize1) plt.ylabel('Number of Epochs', fontsize=fontsize1) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - + ########## # M Histogram of Residuals ########## col = col + 1 ind = int((row-1)*Ncols + col) - + bins = np.arange(-7.5, 7.5, 1) paxes = plt.subplot(Nrows, Ncols, ind) (n, b, p) = plt.hist(sigM, bins, histtype='stepfilled', color='g', label='m') @@ -3598,10 +3598,10 @@ def rs(x): plt.xlabel('Residuals (sigma)', fontsize=fontsize1) plt.ylabel('Number of Epochs', fontsize=fontsize1) paxes.tick_params(axis='both', which='major', labelsize=fontsize1) - + if Nstars == 1: - plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) + plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) # plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') else: plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) @@ -3616,9 +3616,9 @@ def rs(x): def plot_errors_vs_r_m(star_tab, vmax_perr=0.75, vmax_pmerr=0.75): """ - Plot the positional errors and the proper motion errors as a function of radius - and magnitude. The positional an proper motion errors will be the mean in the - two axis (as is used in pick_good_ref_stars()). + Plot the positional errors and the proper motion errors as a function of radius + and magnitude. The positional an proper motion errors will be the mean in the + two axis (as is used in pick_good_ref_stars()). """ r = np.hypot(star_tab['x0'], star_tab['y0']) p_err = np.mean((star_tab['x0_err'], star_tab['y0_err']), axis=0) * 1e3 @@ -3627,7 +3627,7 @@ def plot_errors_vs_r_m(star_tab, vmax_perr=0.75, vmax_pmerr=0.75): plt.figure(figsize=(12, 6)) plt.clf() plt.subplots_adjust(wspace=0.4) - + plt.subplot(1, 2, 1) plt.scatter(star_tab['m0'], r, c=p_err, s=8, vmin=0, vmax=vmax_perr) plt.colorbar(label='Pos Err (mas)') @@ -3655,7 +3655,7 @@ def plot_plxs(star_tab, target_idx=0): ax[1].set_xlabel('Plx/Plx_err') plt.tight_layout() ax[0].set_ylim(-5,5) - + def plot_sky(stars_tab, plot_errors=False, center_star=None, range=0.4, xcenter=0, ycenter=0, show_names=False, saveplot=False, @@ -3669,8 +3669,8 @@ def plot_sky(stars_tab, Parameters ---------- stars_tab : flystar.startables.StarTable - The StarTable containining 'x', 'y', 't', 'xe', 'ye', columns etc. - for plotting, where each of these columns is a 2D array of + The StarTable containining 'x', 'y', 't', 'xe', 'ye', columns etc. + for plotting, where each of these columns is a 2D array of [star_index, epoch_index]. @@ -3715,7 +3715,7 @@ def plot_sky(stars_tab, good_t = np.isfinite(stars_tab['t']) epochs = np.unique(stars_tab['t'][good_t]) assert len(epochs) == stars_tab['t'].shape[1] - + yearsInt = np.floor(epochs).astype('int') # Set up a color scheme @@ -3822,8 +3822,8 @@ def plot_sky(stars_tab, plt.show() return - - + + class PrintSelected(object): def __init__(self, points_info, fig, tab, mag_range, manual_print=False): self.points_info = points_info diff --git a/flystar/starlists.py b/flystar/starlists.py index 8387226..f872516 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -31,7 +31,7 @@ def restrict_by_name(table1, table2): name1 = table1['name'] name2 = table2['name'] - + Name = np.intersect1d(name1, name2) # trim out stars begin with 'star' idx = [] @@ -67,7 +67,7 @@ def restrict_by_area(table1, area, exclude=False): exclude: boolean (default=False) If true, *exclude* the stars that fall within the given area. If false, then only return stars that fall within the given area - + Output: ------ array of indicies corresponding to stars which are within the designated @@ -76,7 +76,7 @@ def restrict_by_area(table1, area, exclude=False): # Extract star coordinates xpos = table1['x'] ypos = table1['y'] - + # Extract desired coordinate ranges x_range = area[0] y_range = area[1] @@ -89,7 +89,7 @@ def restrict_by_area(table1, area, exclude=False): else: good = np.where( ( (xpos < x_range[0]) | (xpos > x_range[1]) ) & ( (ypos < y_range[0]) | (ypos > y_range[1]) ) ) - + return good[0] def restrict_by_use(label_mat, starlist_mat, idx_label, idx_starlist): @@ -114,7 +114,7 @@ def restrict_by_use(label_mat, starlist_mat, idx_label, idx_starlist): idx_starlist: array of indicies Indicies of the matched stars in the starlist. - + Output: ------- idx_label_f: array of indicies in the label catalog that fulfill the restrict @@ -122,15 +122,15 @@ def restrict_by_use(label_mat, starlist_mat, idx_label, idx_starlist): idx_starlist_f: array of indicies in the starlist that fulfill the restrict condition - - + + label_trim: astropy table label table with only use > 2 stars starlist_trim: astropy table reference table with only stars that correspond to use > 2 stars in the label_mat table. - + """ print( 'Restrict option activated') @@ -151,7 +151,7 @@ def restrict_by_use(label_mat, starlist_mat, idx_label, idx_starlist): print( 'Restrict option activated') print(( 'Keeping {0} of {1} stars'.format(len(idx_restrict), len(label_mat)))) - + return idx_label_f, idx_starlist_f @@ -188,7 +188,7 @@ def read_label(labelFile, prop_to_time=None, flipX=True): If true, multiply the x positions and velocities by -1.0. This is useful when label.dat has +x to the east, while reference starlist has +x to the west. - + #OLD# tref: reference epoch that label.dat is converted to. Output: @@ -196,11 +196,11 @@ def read_label(labelFile, prop_to_time=None, flipX=True): labelFile: astropy.table. containing name, m, x0, y0, x0e, y0e, vx, vy, vxe, vye, t0, use, r0, (if prop_to_time: x, y, xe, ye, t) - + x and y is in arcsec, converted to tref epoch, *(-1) so it increases to west - + vx, vy, vxe, vye is converted to arcsec/yr """ @@ -248,7 +248,7 @@ def read_label(labelFile, prop_to_time=None, flipX=True): t_label['y'].format = '.5f' t_label['xe'].format = '.5f' t_label['ye'].format = '.5f' - + # flip the x axis if flipX is True if flipX == True: t_label['x0'] = t_label['x0'] * (-1.0) @@ -295,7 +295,7 @@ def read_label_accel(labelFile, prop_to_time=None, flipX=True): If true, multiply the x positions and velocities by -1.0. This is useful when label.dat has +x to the east, while reference starlist has +x to the west. - + #OLD# tref: reference epoch that label.dat is converted to. Output: @@ -303,11 +303,11 @@ def read_label_accel(labelFile, prop_to_time=None, flipX=True): labelFile: astropy.table. containing name, m, x0, y0, x0e, y0e, vx, vy, vxe, vye, t0, use, r0, (if prop_to_time: x, y, xe, ye, t) - + x and y is in arcsec, converted to tref epoch, *(-1) so it increases to west - + vx, vy, vxe, vye is converted to arcsec/yr """ @@ -411,11 +411,11 @@ def read_starlist(starlistFile, error=True): col7: corr col8: N_frames col9: ? (left as default) - + error: boolean (default=True) If true, assumes starlist has error columns. This significantly changes the order of the columns. - + Output: ------ starlist astropy table. @@ -425,7 +425,7 @@ def read_starlist(starlistFile, error=True): # Check if this already has column names: cols = t_ref.colnames - + if cols[0] != 'col1': t_ref['name'] = t_ref['name'].astype(str) return t_ref @@ -436,7 +436,7 @@ def read_starlist(starlistFile, error=True): t_ref.rename_column(cols[2], 't') t_ref.rename_column(cols[3], 'x') t_ref.rename_column(cols[4], 'y') - + if error==True: t_ref.rename_column(cols[5], 'xe') t_ref.rename_column(cols[6], 'ye') @@ -449,7 +449,7 @@ def read_starlist(starlistFile, error=True): t_ref.rename_column(cols[6], 'corr') t_ref.rename_column(cols[7], 'N_frames') t_ref.rename_column(cols[8], 'flux') - + return t_ref @@ -481,7 +481,7 @@ class StarList(Table): me : 1D numpy.array with shape = N_stars Magnitude uncertainties of N_stars. - + corr : 1D numpy.array with shape = N_stars Fitting correlation of N_stars. @@ -495,7 +495,7 @@ class StarList(Table): """ - + def __init__(self, *args, **kwargs): """ """ @@ -503,7 +503,7 @@ def __init__(self, *args, **kwargs): arg_req = ('name', 'x', 'y', 'm') found_all_required = True - + for arg_test in arg_req: if arg_test not in kwargs: found_all_required = False @@ -583,7 +583,7 @@ def __init__(self, *args, **kwargs): self.add_column(MaskedColumn(data=kwargs[arg], name=arg)) else: self.add_column(Column(data=kwargs[arg], name=arg)) - + return @classmethod @@ -641,7 +641,7 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): t_ref.rename_column(cols[2], 't') t_ref.rename_column(cols[3], 'x') t_ref.rename_column(cols[4], 'y') - + if error==True: t_ref.rename_column(cols[5], 'xe') t_ref.rename_column(cols[6], 'ye') @@ -654,7 +654,7 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): t_ref.rename_column(cols[6], 'corr') t_ref.rename_column(cols[7], 'N_frames') t_ref.rename_column(cols[8], 'flux') - + if ('me' not in cols) and ('snr' in cols) and (error == True): t_ref['me'] = 1.0 / t_ref['snr'] @@ -667,16 +667,16 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): msg = 'Star list and metric list have different lengths.\n' msg += '\t len(stars) = {0:d}\n' msg += '\t len(fvu) = {1:d}\n' - + raise RuntimeError(msg.format(len(t_ref), len(t_fvu))) - - t_ref = astropy.table.hstack([t_ref, t_fvu]) + + t_ref = astropy.table.hstack([t_ref, t_fvu]) return cls.from_table(t_ref) def to_lis_file(self, filename): _out = open(filename, 'w') - + hdr = '{name:13s} {mag:>6s} {year:>8s} ' hdr += '{x:>9s} {y:>9s} {xe:>9s} {ye:>9s} ' hdr += '{snr:>20s} {corr:>6s} {nimg:>8s} {flux:>20s}\n' @@ -684,7 +684,7 @@ def to_lis_file(self, filename): _out.write(hdr.format(name='# name', mag='m', year='t', x='x', y='y', xe='xe', ye='ye', snr='snr', corr='corr', nimg='N_frames', flux='flux')) - + fmt = '{name:13s} {mag:6.3f} {year:8.3f} ' fmt += '{x:9.3f} {y:9.3f} {xe:9.3f} {ye:9.3f} ' @@ -697,10 +697,10 @@ def to_lis_file(self, filename): flux=self['flux'][ss])) _out.close() - + return - - + + @classmethod def from_table(cls, table): """ @@ -709,7 +709,7 @@ def from_table(cls, table): will be added to the new StarList object that is returned. """ starlist = cls(name=table['name'], x=table['x'], y=table['y'], m=table['m'], meta=table.meta) - + for col in table.colnames: if col in ['name', 'x', 'y', 'm']: continue @@ -721,10 +721,10 @@ def from_table(cls, table): def fubar(self): print('This is in StarList') return - + def restrict_by_value(self, **kwargs): """ - Restrict a table to any min/max range of column values. For instance, + Restrict a table to any min/max range of column values. For instance, to restrict to only stars between 10 <= m <= 15, use: starlist.restrict_by_value(m_min=10, m_max=15) @@ -732,10 +732,10 @@ def restrict_by_value(self, **kwargs): where 'm' was the column name. This function acts on self, so the rows are removed - forever. + forever. """ # Loop through all conditions and build up - # an array of indicies of rows to remove. + # an array of indicies of rows to remove. remove_flag = np.zeros(len(self), dtype=bool) for key, value in kwargs.items(): @@ -743,20 +743,20 @@ def restrict_by_value(self, **kwargs): # Get the name of the column to act on and # whether the condition is min or max. key_split = key.split('_') - - # Support column names such as x_0. + + # Support column names such as x_0. col = '_'.join(key_split[:-1]) if key_split[-1] == 'min': remove_flag = np.logical_or(remove_flag, self[col] <= value) - + if key_split[-1] == 'max': remove_flag = np.logical_or(remove_flag, self[col] >= value) rem_idx = np.where(remove_flag == True)[0] - + self.remove_rows(rem_idx) - + return def transform_xym(self, trans): @@ -769,7 +769,7 @@ def transform_xym(self, trans): self.transform_xy(trans) self.transform_m(trans) - + return def transform_xy(self, trans): @@ -781,7 +781,7 @@ def transform_xy(self, trans): """ if trans == None: return - + x_T, y_T = trans.evaluate(self['x'], self['y']) self['x'] = x_T self['y'] = y_T @@ -792,7 +792,7 @@ def transform_xy(self, trans): self['ye'] = ye_T return - + def transform_m(self, trans): """ Apply a transformation (instance of flystar.transforms.Transform2D) @@ -802,14 +802,14 @@ def transform_m(self, trans): """ if trans == None: return - + m_T = trans.evaluate_mag(self['m']) self['m'] = m_T if 'me' in self.colnames: me_T = trans.evaluate_magerror(self['m'], self['me']) self['me'] = me_T - + return diff --git a/flystar/startables.py b/flystar/startables.py index 1590be4..b114fec 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -37,7 +37,7 @@ def __init__(self, *args, ref_list=0, **kwargs): ------------------------- motion_model : 1D numpy.array with shape = N_stars string indicating motion model type for each star - + xe : 2D numpy.array with shape = (N_stars, N_lists) Position uncertainties of N_stars in each of N_lists in the x dimension. @@ -50,7 +50,7 @@ def __init__(self, *args, ref_list=0, **kwargs): ep_name : 2D numpy.array with shape = (N_stars, N_lists) Names in each epoch for each of N_stars in each of N_lists. This is useful for tracking purposes. - + corr : 2D numpy.array with shape = (N_stars, N_lists) Fitting correlation for each of N_stars in each of N_lists. @@ -75,7 +75,7 @@ def __init__(self, *args, ref_list=0, **kwargs): print(t['name'][0:10]) # print the first 10 star names print(t['x'][0:10, 0]) # print x from the first epoch/list/column for the first 10 stars """ - + # Check if the required arguments are present arg_req = ('name', 'x', 'y', 'm') @@ -149,7 +149,7 @@ def __init__(self, *args, ref_list=0, **kwargs): names=('name', 'x', 'y', 'm')) self['name'] = self['name'].astype('U20') self.meta = {'n_stars': n_stars, 'n_lists': n_lists, 'ref_list': ref_list} - + for meta_arg in meta_tab: if meta_arg in kwargs: self.meta[meta_arg] = kwargs[meta_arg] @@ -173,12 +173,12 @@ def __init__(self, *args, ref_list=0, **kwargs): # self['motion_model_input'] = np.repeat(self.default_motion_model, len(self['name'])) return - + def add_starlist(self, **kwargs): """ - Add data from a new list to an existing StarTable. + Add data from a new list to an existing StarTable. Note, you can pass in the data via a StarList object or - via a series of keywords with a 1D array on each. + via a series of keywords with a 1D array on each. In either case, the number of stars must already match the existing number of stars in the StarTable. @@ -214,15 +214,15 @@ def _add_list_data_from_starlist(self, starlist): old_type = self[col_name].info.dtype new_data = np.empty((old_data.shape[0], old_data.shape[1] + 1), dtype=old_type) new_data[:, :-1] = old_data - + # Save the new data array (with both old and new data in it) to the table. - self[col_name] = new_data - + self[col_name] = new_data + if (col_name in starlist.colnames): # Add data if it was input self[col_name][:, -1] = starlist[col_name] else: # Add junk data it if wasn't input self._set_invalid_list_values(col_name, -1) - + ########## # Update the table meta-data. Remember that entries are lists not numpy arrays. @@ -258,12 +258,12 @@ def _add_list_data_from_starlist(self, starlist): def _add_list_data_from_keywords(self, **kwargs): # # Check if the required arguments are present # arg_req = ('x', 'y', 'm') - + # for arg_test in arg_req: # if arg_test not in kwargs: # err_msg = "Added lists require a '{0:s}' argument" # raise TypeError(err_msg.format(arg_test)) - + # # If we have errors, we need them in both dimensions. # if ('xe' in kwargs) ^ ('ye' in kwargs): # raise TypeError("Added lists with errors require both 'xe' and" + @@ -281,15 +281,15 @@ def _add_list_data_from_keywords(self, **kwargs): old_type = self[col_name].info.dtype new_data = np.empty((old_data.shape[0], old_data.shape[1] + 1), dtype=old_type) new_data[:, :-1] = old_data - + # Save the new data array (with both old and new data in it) to the table. self[col_name] = new_data - + if (col_name in kwargs): # Add data if it was input self[col_name][:, -1] = kwargs[col_name] else: # Add junk data it if wasn't input self._set_invalid_list_values(col_name, -1) - + # Update the table meta-data. Remember that entries are lists not numpy arrays. for key in self.meta.keys(): @@ -309,7 +309,7 @@ def _add_list_data_from_keywords(self, **kwargs): # Update the n_lists meta keyword. self.meta['n_lists'] += 1 - + return def _set_invalid_list_values(self, col_name, col_idx): @@ -323,7 +323,7 @@ def _set_invalid_list_values(self, col_name, col_idx): self[col_name][:, col_idx] = np.nan else: self[col_name][:, col_idx] = None - + return def _set_invalid_star_values(self, col_name, row_idx): @@ -337,13 +337,13 @@ def _set_invalid_star_values(self, col_name, row_idx): self[col_name][row_idx] = np.nan else: self[col_name][row_idx] = None - + return - + def _append_invalid_meta_values(self, key): """ - For an existing meta keyword that is a list (already known), - add an invalid value depending on the type. + For an existing meta keyword that is a list (already known), + add an invalid value depending on the type. """ if issubclass(type(self.meta[key][0]), np.integer): self.meta[key] = np.append(self.meta[key], [-1]) @@ -359,11 +359,11 @@ def _append_invalid_meta_values(self, key): warnings.warn(err_msg, UserWarning) return - - + + def get_starlist(self, list_index): """ - Return a StarList object for the specified list_index or epoch. + Return a StarList object for the specified list_index or epoch. Parameters ---------- @@ -383,16 +383,16 @@ def get_starlist(self, list_index): col_req_dict[col_name] = self[col_name] starlist = StarList(**col_req_dict) - + for col_name in self.colnames: if col_name in col_req_names: pass - + if len(self[col_name].data.shape) == 2: # Find the 2D columns starlist[col_name] = self[col_name][:, list_index] else: starlist[col_name] = self[col_name] - + return starlist @@ -402,7 +402,7 @@ def combine_lists_xym(self, weighted_xy=True, weighted_m=True, mask_lists=False, direction. For 'x', 'y' this means calculating the average position with outlier rejection. Optionally, weight by the 'xe' and 'ye' individual uncertainties. Optionally, use sigma clipping. - "mask_lists" is a list with the indices of starlists that are + "mask_lists" is a list with the indices of starlists that are excluded from the combination. Also, count the number of times a star is found in starlists. """ @@ -419,11 +419,11 @@ def combine_lists_xym(self, weighted_xy=True, weighted_m=True, mask_lists=False, weights_colm = 'me' else: weights_colm = None - + self.combine_lists('x', weights_col=weights_colx, mask_lists=mask_lists, sigma=sigma) self.combine_lists('y', weights_col=weights_coly, mask_lists=mask_lists, sigma=sigma) self.combine_lists('m', weights_col=weights_colm, mask_lists=mask_lists, sigma=sigma, ismag=True) - + return def combine_lists(self, col_name_in, weights_col=None, mask_val=None, @@ -437,10 +437,10 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, 0e -- the std (with outlier rejection) Masking of NaN values is also performed. - - "mask_lists" is a list with the indices of starlists that are + + "mask_lists" is a list with the indices of starlists that are excluded from the combination. - + A flag can be stored in the metadata to record if the average was weighted or not. """ @@ -454,31 +454,31 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, val_2d = np.ma.masked_invalid(val_2d) if mask_val: val_2d = np.ma.masked_values(val_2d, mask_val) - + if mask_lists is not False: # Remove a list if isinstance(mask_lists, list): if all(isinstance(item, int) for item in mask_lists): val_2d.mask[:, mask_lists] = True - + # Throw a warning if mask_lists is not a list if not isinstance(mask_lists, list): raise RuntimeError('mask_lists needs to be a list.') # Decide if we are going to have weights (before we # do the expensive sigma clipping routine). Note that - # if we have only 1 column to average, then we can't do weighting. + # if we have only 1 column to average, then we can't do weighting. if (weights_col and weights_col in self.colnames) and (val_2d.shape[1] > 1): err_2d = self[weights_col].data - + if ismag: # Convert to flux error err_2d = err_2d * val_2d * np.log(10) / 2.5 - + np.seterr(divide='ignore') wgt_2d = np.ma.masked_invalid(1.0 / err_2d**2) np.seterr(divide='warn') - + if meta_add: self.meta[col_name_in + '0'] = 'weighted' else: @@ -493,7 +493,7 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, warnings.filterwarnings('default', category=RuntimeWarning) else: val_2d_clip = val_2d - + # Calculate the (weighted) mean and standard deviation along # the N_lists direction (axis=1). if wgt_2d is not None: @@ -521,7 +521,7 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, else: self.add_column(Column(data=avg.data, name=col_name_avg)) self.add_column(Column(data=std.data, name=col_name_std)) - + return def detections(self): @@ -529,25 +529,25 @@ def detections(self): Find where stars are detected. # """ n_detect = np.sum(~np.isnan(self['x']), axis=1) - + if 'n_detect' in self.colnames: self['n_detect'] = n_detect else: self.add_column(Column(n_detect), name='n_detect') - + return - + def fit_motion_model( - self, + self, motion_models=None, fixed_params_dict=None, - weighting='var', - use_scipy=False, - absolute_sigma=True, + weighting='var', + use_scipy=False, + absolute_sigma=True, select_stars=None, bootstrap=0, - verbose=True, - mask_value=None, + verbose=True, + mask_value=None, mask_lists=None, fill_value=np.nan, show_progress=True @@ -562,7 +562,7 @@ def fit_motion_model( The behavior is as follows: 1. If 'motion_model_input' column is NOT in table: - Use the most complex model that has enough parameters to fit the data (n_fit >= n_params). - - If multiple models are supplied, prioritize the model with the most parameters to fit. + - If multiple models are supplied, prioritize the model with the most parameters to fit. - If multiple models have the same number of parameters, raise AssertionError: not sure which to use. 2. If 'motion_model_input' column IS in table: - Use the model specified in the 'motion_model_input' column. @@ -674,7 +674,7 @@ def fit_motion_model( y_data = np.ma.masked_invalid(self['y'].data, copy=True) xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else np.ones_like(x_data) ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else np.ones_like(y_data) - + if np.ndim(x_data) == 1: x_data = x_data[:, np.newaxis] if np.ndim(y_data) == 1: @@ -697,7 +697,7 @@ def fit_motion_model( else: t_data = copy.deepcopy(np.array(self.meta['list_times'])) t_data = np.broadcast_to(t_data, x_data.shape) - + # Add default t0 if not provided in fixed_params_dict if fixed_params_dict is None: weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None @@ -771,7 +771,7 @@ def fit_motion_model( x=n_fit, bins=mm_n_params ) - 1 # Convert to 0-based index - + # Assign motion models to stars self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') @@ -913,7 +913,7 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): times : array_like Times at which to predict positions. Scalar, or (N_times,) array, or (N_stars, N_times) array. fixed_params_dict : None or dict, optional - Dictionary of fixed parameters to use for prediction. + Dictionary of fixed parameters to use for prediction. If not provided, will try to look for fixed parameters in the table columns. If fixed params are found in both the table and the fixed_params_dict, the values in the table will be used and the fixed_params_dict values will be ignored, by default None @@ -931,7 +931,7 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): N_stars = len(self) times = np.atleast_1d(times) N_times = len(times) - + if (N_stars > 1) and (N_times > 1): x_pred = np.full((N_stars, N_times), fill_value, dtype=float) y_pred = np.full((N_stars, N_times), fill_value, dtype=float) @@ -1048,7 +1048,7 @@ def get_star_positions_at_time(self, t, motion_model_dict, allow_alt_models=True x[idx],y[idx],xe[idx],ye[idx] = mod.get_batch_pos_at_time(t,**param_dict) return x, y, xe, ye - + def shift_reference_frame(self, delta_vx=0.0, delta_vy=0.0, delta_pi=0.0, @@ -1058,7 +1058,7 @@ def shift_reference_frame(self, delta_vx=0.0, delta_vy=0.0, delta_pi=0.0, the absolute frame using either Gaia or a Galactic model. This modified the motion model fit parameters as well as the time series astrometry, assuming zero error on the shift values. - + Parameters ---------- delta_vx : float, optional @@ -1093,7 +1093,7 @@ def shift_reference_frame(table, delta_vx=0.0, delta_vy=0.0, delta_pi=0.0, the absolute frame using either Gaia or a Galactic model. This modified the motion model fit parameters as well as the time series astrometry, assuming zero error on the shift values. - + Parameters ---------- delta_vx : float, optional diff --git a/flystar/stitch_method2.py b/flystar/stitch_method2.py index 8cab361..f9aa4e0 100644 --- a/flystar/stitch_method2.py +++ b/flystar/stitch_method2.py @@ -42,7 +42,7 @@ def align_starlists(starlist, ref, transModel=transforms.PolyTransform, order=2, if weights==None, we don't use weights. """ - + #-------------------------------------------------- # Initial transformation with brightest briteN stars #-------------------------------------------------- @@ -98,7 +98,7 @@ def weighted_mean(df,x,xe,frames_in_use): # error = xe or ye # all_frames = e.g. ['A', 'B', 'C', ...] - + cols_x=["{0}_{1}".format(x,f) for f in frames_in_use] # columns for x_* e.g. ['x_A', 'x_B', 'x_C', ....] cols_xe=["{0}_{1}".format(xe,f) for f in frames_in_use] # columns for xe_* e.g. ['xe_A', 'xe_B', 'xe_C', ....] @@ -120,11 +120,11 @@ def weighted_mean(df,x,xe,frames_in_use): xe_master.append(array_xe[i][mask][0]) else: rows_to_drop.append(i) - + df=df.drop(rows_to_drop) df[x]=np.array(x_master) df[xe]=np.array(xe_master) - + return df @@ -132,12 +132,12 @@ def normal_mean(df,x,frames_in_use): cols_x=["{0}_{1}".format(x,f) for f in frames_in_use] df[x]=df[cols_x].mean(axis=1) - + return df def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaster='./master.lis'): - + # all_starslist: the list of the names of all starlists e.g. ['A', 'B', 'C', ... ] # name_initial_ref: the name of the reference that you use in the very first match. # corr_thresh : threshold for correlation values. @@ -149,11 +149,11 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste input_starslists.remove(name_initial_ref) for name_starlist in input_starslists: - + starlist=starlists.read_starlist('{0}.lis'.format(name_starlist)) if 'ref' not in locals(): ref=starlists.read_starlist('{0}.lis'.format(name_initial_ref)) - + #------------ Choose good stars to use for a trans object -------------------- @@ -162,14 +162,14 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste # Select the very first 11 columns (i.e. the master reference) consistent with those of the starlist. # Table -> dataframe -> Table, which lets us avoid the following error: 'MaskedColumn' object has no attribute '_mask' - + ref_for_align=ref_for_align.to_pandas() - + ref_for_align=Table.from_pandas(ref_for_align[starlist_for_align.colnames]) _,_,_,trans=align_starlists(starlist_for_align,ref_for_align,order=2,dr_tol=1,N_loop=15) - + #------------ Transform the whole starlist using the trans object and match with the reference ------------- starlist_transformed=align.transform_from_object(starlist,trans) @@ -183,7 +183,7 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste #-------------Convert the astropy talbes into dataframes --------------------- df_ref=ref.to_pandas() df_starlist_transformed=starlist_transformed.to_pandas() - + #-------------Columns 11-21 contain the measurments for the initial reference-------------- colnames=starlist.colnames @@ -199,11 +199,11 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste for col in colnames: df_ref['{0}_{1}'.format(col,name_starlist)]=np.nan df_ref.loc[idx_ref_matched,'{0}_{1}'.format(col,name_starlist)]= np.array(df_starlist_transformed.loc[idx_starlist_transformed_matched,col]) - + else: for col in colnames: - + df_ref.insert(len(df_ref.columns),'{0}_{1}'.format(col,name_starlist),np.nan) df_ref.loc[idx_ref_matched,'{0}_{1}'.format(col,name_starlist)]= np.array(df_starlist_transformed.loc[idx_starlist_transformed_matched,col]) @@ -218,7 +218,7 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste #-------------- Figure out which frames are currently included in the master frame ----------- frames_in_use=sorted(set([column[-1] for column in columns if (column[-1] in all_starlists)])) - + #-------------- Average the measurements ------------- for col in colnames: if (col!='name') and (col!='x') and (col!='y') and (col!='xe') and (col!='ye') and (col!='N_frames'): @@ -226,7 +226,7 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste df_comb=weighted_mean(df_comb,'x','xe',frames_in_use) df_comb=weighted_mean(df_comb,'y','ye',frames_in_use) - + #-------------Recalculate 'N_frames' for the master frame -> N_frames = the number of input starlists containing the star----------- # N_frames = the number of notnull columns at each row in the master frame divided by the number of columns in an input starlist, then minus one. # The "minus one" at the end accounts for the very first columns, i.e. master columns, that contain the averaged values of all the input starlists. @@ -244,7 +244,7 @@ def stitch(all_starlists, name_initial_ref, N_iter=5, corr_thresh=0.8, outMaste #-------------- Convert the final dataframe back into an astropy table ------ ref=Table.from_pandas(df_comb) - + ref.write(outMaster,format='ascii.commented_header', header_start=-1, overwrite=True) return diff --git a/flystar/template.py b/flystar/template.py index c714f9d..1373799 100644 --- a/flystar/template.py +++ b/flystar/template.py @@ -8,28 +8,28 @@ import pdb -def align_template(labelFile, reference, transModel=transforms.PolyTransform, order=1, N_loop=2, +def align_template(labelFile, reference, transModel=transforms.PolyTransform, order=1, N_loop=2, dr_tol=1.0, dm_tol=None, briteN=100, weights='both', restrict=False, outFile='outTrans.txt'): """ Base example of how to use the flystar code. Assumes we are transforming a label.dat into a reference starlist. - + Parameters: ----------- labelFile: ascii file Starlist we would like to transform into the reference frame. For this code, we expect a label.dat file - + reference: ascii file Starlist that defines the reference frame - + transModel: transformation class (default: transforms.polyTransform) Defines which transformation model to use. Both the four-parameter and polynomial transformations are supported - + order: int (default=1) Order of the polynomial transformation. Only used for polynomial transform - + N_loop: int (default=2) How many times to iterate on the transformation calculation. Ideally, each iteration adds more stars and thus a better transform, to some @@ -39,11 +39,11 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or the distance tolerance for matching two stars in align.transform_and_match dm_tol: float (defalut=None) - the magnitude tolerance for matching two stars in align.trnasform_and_match + the magnitude tolerance for matching two stars in align.trnasform_and_match briteN: int (default=100) the number of stars used in blind matching - + weights: string (default='both') if weights=='both', we use both position error in transformed starlist and reference starlist as uncertanty. And weights is the reciprocal of this uncertanty. @@ -66,7 +66,7 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or tref = starlist['t'][0] # label.dat has position & position err and velocity & velocity error label = starlists.read_label(labelFile, prop_to_time=tref, flipX=True) - + #-------------------------------------------------- # Initial transformation with brightest briteN stars @@ -79,21 +79,21 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or # and calculate initial transform label_ini = label[idx_ini_label] starlist_ini = starlist[idx_ini_starlist] - + trans = align.initial_align(label_ini, starlist_ini, briteN=briteN, transformModel=transModel, order=order) - + # apply the initial transform to label.dat # this is used for future weights calculation label_trans_ini = align.transform_from_object(label, trans) - + #------------------------------------------------------------------------ # Use transformation to match starlists, then recalculate transformation. #------------------------------------------------------------------------ # Iterate on this as many times as desired for i in range(N_loop): - # apply the transformation to label.dat and + # apply the transformation to label.dat and # matched the transformed label with starlist. idx_label, idx_starlist = align.transform_and_match(label, starlist, trans, dr_tol=dr_tol, dm_tol=dm_tol) @@ -101,17 +101,17 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or if restrict: label_match = label[idx_label] starlist_match = starlist[idx_starlist] - idx_label, idx_starlist = stalists.restrict_by_use(label_match, starlist_match, + idx_label, idx_starlist = stalists.restrict_by_use(label_match, starlist_match, idx_label, idx_starlist) - + # use the matched stars to calculate new transformation label_match = label[idx_label] starlist_match = starlist[idx_starlist] label_ini_match = label_trans_ini[idx_label] - trans, N_trans = align.find_transform(label_match, label_ini_match, starlist_match, + trans, N_trans = align.find_transform(label_match, label_ini_match, starlist_match, transModel=transModel, order=order, weights = weights) - + #--------------------------------------------- # Write final transform in java align format @@ -121,7 +121,7 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or # write the transformation coefficients to 'outTrans.txt' align.write_transform(trans, labelFile, reference, N_trans, deltaMag=delta_m, restrict=restrict, weights=weights, outFile=outFile) - + #----------------------------------------------------------- # Test transform: apply to label.dat, make diagnostic plots @@ -129,11 +129,11 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or # apply the final transformation to label.dat label_trans = align.transform_from_object(label, trans) label_trans_match = label_trans[idx_label] - + # postion map with every star in starlist and transformed label. # both matched and unmatched stars. plots.trans_positions( starlist, starlist_match, label_trans, label_trans_match) - + # position difference histogram for matched stars. plots.pos_diff_hist( starlist_match, label_trans_match) @@ -146,6 +146,6 @@ def align_template(labelFile, reference, transModel=transforms.PolyTransform, or # quiver plot of postion residules plots.pos_diff_quiver( starlist_match, label_trans_match) - + return - + From ed8eea0304449ca185a79331c2ad5b11590d193d Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 11 Mar 2026 23:29:02 -0700 Subject: [PATCH 44/94] Update test data paths --- flystar/tests/test_align.py | 8 ++++---- flystar/tests/test_starlist.py | 7 ++++--- flystar/tests/test_startable.py | 13 +++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index e88cb79..d93ba8e 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -492,8 +492,8 @@ def test_MosaicToRef_hst_me(): my_gaia['me'] = 0.01 my_gaia.rename_columns( - ['x0e', 'y0e'], - ['x0_err', 'y0_err'] + ['x0e', 'y0e', 'vxe', 'vye'], + ['x0_err', 'y0_err', 'vx_err', 'vy_err'] ) # Gather the list of starlists. For first pass, don't modify the starlists. # Loop through the observations and read them in, in prep for alignment with Gaia @@ -825,7 +825,7 @@ def test_MosaicToRef_mag_bug(): """ make_fake_starlists_poly1_vel() - ref_list = starlists.StarList.read('test_data/random_vel_0.fits') + ref_list = starlists.StarList.read(f'{test_data_path}/random_vel_0.fits') lists = [ref_list] msc = align.MosaicToRef(ref_list, lists, @@ -1078,7 +1078,7 @@ def make_fake_starlists_poly0_vel(seed=-1): # Save original positions as reference (1st) list # in a StarList format (with velocities). - lis.write('test_data/random_vel_ref.fits', overwrite=True) + lis.write(f'{test_data_path}/random_vel_ref.fits', overwrite=True) ########## # Propogate to new times and distort. diff --git a/flystar/tests/test_starlist.py b/flystar/tests/test_starlist.py index c8ab2bb..568c26d 100644 --- a/flystar/tests/test_starlist.py +++ b/flystar/tests/test_starlist.py @@ -1,13 +1,14 @@ from astropy.table import Table from flystar.starlists import StarList import os, pdb +import flystar -test_dir = os.path.dirname(__file__) + '/' +test_data_path = f'{flystar.__path__[0]}/tests/test_data' def make_star_list(): # User input - cat_file = test_dir + 'test_data/A.lis' + cat_file = f'{test_data_path}/A.lis' # Read and arrange the test input cat_tab = Table.read(cat_file, format='ascii', delimiter=r'\s') @@ -25,7 +26,7 @@ def make_star_list(): # Name is a unique name for each star and is a 1D array. starlist_time = 2011.1 - starlist_name = 'test_data/A.lis' + starlist_name = f'{test_data_path}/A.lis' # Generate the starlist starlist = StarList(name=name_in, x=x_in, y=y_in, m=m_in, xe=xe_in, diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index f99ee38..fbb0a34 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -7,15 +7,16 @@ import pytest import os import pdb +import flystar -test_dir = os.path.dirname(__file__) + '/' +test_data_path = f'{flystar.__path__[0]}/tests/test_data' def test_StarTable_init1(): """ Test creation of new StarTable. """ # User input - cat_file = test_dir + 'test_data/test_catalog.fits' + cat_file = f'{test_data_path}/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -267,7 +268,7 @@ def test_get_starlist(): def test_combine_1col(): # User input - cat_file = test_dir + 'test_data/test_catalog.fits' + cat_file = f'{test_data_path}/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -437,7 +438,7 @@ def test_fit_motion_model_2epoch(): def make_star_table(): # User input - cat_file = test_dir + 'test_data/test_catalog.fits' + cat_file = f'{test_data_path}/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -472,7 +473,7 @@ def make_star_table(): def make_star_table_1epoch(): # User input - cat_file = test_dir + 'test_data/test_catalog.fits' + cat_file = f'{test_data_path}/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) @@ -501,7 +502,7 @@ def make_star_table_1epoch(): def make_star_table_2epoch(): # User input - cat_file = test_dir + 'test_data/test_catalog.fits' + cat_file = f'{test_data_path}/test_catalog.fits' # Read and arrange the test input cat_tab = Table.read(cat_file) From 4f816f2a61dd3806c67e25ee06e25d534698c597 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 11 Mar 2026 23:30:49 -0700 Subject: [PATCH 45/94] Slightly accelerated fit motion model preparation --- flystar/startables.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index b114fec..b1d3a2a 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -675,6 +675,7 @@ def fit_motion_model( xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else np.ones_like(x_data) ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else np.ones_like(y_data) + # Ensure data is 2D for consistent indexing, even if we have only one list/epoch (shape (N_stars, 1) instead of (N_stars,)) if np.ndim(x_data) == 1: x_data = x_data[:, np.newaxis] if np.ndim(y_data) == 1: @@ -736,16 +737,16 @@ def fit_motion_model( # Calculate mask array - xy_mask = (~x_data.mask) & (~y_data.mask) + xy_mask = ~ (x_data.mask | y_data.mask) self['n_fit'] = xy_mask.sum(axis=1) # Convert to lists of arrays for faster access during fitting - t_stars = [np.array(t_data[i][xy_mask[i]]) for i in range(N_stars)] - x_stars = [np.array(x_data[i][xy_mask[i]]) for i in range(N_stars)] - y_stars = [np.array(y_data[i][xy_mask[i]]) for i in range(N_stars)] - xe_stars = [np.array(xe_data[i][xy_mask[i]]) if xe_data is not None else None for i in range(N_stars)] - ye_stars = [np.array(ye_data[i][xy_mask[i]]) if ye_data is not None else None for i in range(N_stars)] - + idx = [np.flatnonzero(xy_mask[i]) for i in range(N_stars)] + t_stars = [np.array(t_data[i][idx[i]]) for i in range(N_stars)] + x_stars = [np.array(x_data[i][idx[i]]) for i in range(N_stars)] + y_stars = [np.array(y_data[i][idx[i]]) for i in range(N_stars)] + xe_stars = [np.array(xe_data[i][idx[i]]) for i in range(N_stars)] if xe_data is not None else [None]*N_stars + ye_stars = [np.array(ye_data[i][idx[i]]) for i in range(N_stars)] if ye_data is not None else [None]*N_stars ########################### ####### Determine MM ###### From 0a4c276b9e8d70d4be6fe6cb7f48c0ae9365ed37 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 11 Mar 2026 23:35:48 -0700 Subject: [PATCH 46/94] Added determine motion model function used in get_ref_list_from_table and update_ref_table_aggregates; Fixed the data dimensions when N_times=1 --- flystar/align.py | 197 +++++++++++++++++++++++++++++++---------------- 1 file changed, 130 insertions(+), 67 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index d698e99..6f596a2 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -419,6 +419,11 @@ def fit(self): # Update chi2 values in ref table, as motion_model_used may have changed x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) + # Ensure x_inferred and y_inferred is 2D for chi2 calculation + if x_inferred.ndim == 1: + x_inferred = x_inferred[:, np.newaxis] + if y_inferred.ndim == 1: + y_inferred = y_inferred[:, np.newaxis] chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 chi2_x = np.nansum(chi2_x_2d, axis=1) @@ -662,14 +667,8 @@ def setup_ref_table_from_starlist(self, star_list): array in the original reference star list. """ col_arrays = {} - # Remove motion_model_used if present, as it can only be determined by fit_motion_model function - if 'motion_model_used' in star_list.colnames: - warnings.warn("The input reference star list contains a 'motion_model_used' column. This column will be removed and re-calculated by the fit_motion_model function.") - star_list.remove_column('motion_model_used') - - motion_model_col_names = motion_model.motion_model_param_names(self.motion_models, with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] - if 't0' not in motion_model_col_names: - motion_model_col_names.insert(0, 't0') + + motion_model_col_names = motion_model.all_motion_model_param_names(with_errors=True, with_fixed=True) + ['m0','m0_err','use_in_trans', 'motion_model_input', 'motion_model_used'] for col_name in star_list.colnames: if col_name == 'name': # The "name" column will be 1D; but we will also add a "name_in_list" column. @@ -745,7 +744,7 @@ def setup_ref_table_from_starlist(self, star_list): # This is necessary for later steps, even if the columns are just zeros. final_new_cols = np.concatenate((new_cols_arr, new_err_cols)) for ii in final_new_cols: - assert ii in ref_table.keys() + assert ii in ref_table.keys(), f"ref_table is missing necessary column {ii}." # Make sure we have a column to indicate whether each star # CAN BE USED in the transformation. This will be 1D @@ -984,29 +983,31 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): # if (keep_orig is not None) and (sum(keep_orig) > 0): # Determine motion_model_used for keep_orig stars # Filter possible motion models based on available columns - motion_models_possible = [] - for mm in self.motion_models: - required_columns = mm.fit_param_names + mm.fixed_param_names - if all(col in self.ref_table.colnames or (self.fixed_params_dict is not None and col in self.fixed_params_dict.keys()) for col in required_columns): - motion_models_possible.append((mm, required_columns)) - - # Check if values are finite for required columns in possible motion models - motion_model_used = [] - # for k in np.where(keep_orig)[0]: - for k in range(len(self.ref_table)): - for mm, req in motion_models_possible[::-1]: - # if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): - req_col_in_table = [col for col in req if col in self.ref_table.colnames] - req_col_in_dict = [col for col in req if (self.fixed_params_dict is not None) and (col in self.fixed_params_dict.keys())] - # If requested column in table/fixed_params dict is numeric, check if values are finite. - if all(np.isfinite(self.ref_table[col][k]) for col in req_col_in_table if np.issubdtype(self.ref_table[col].dtype, np.number)) \ - and all(np.isfinite(self.fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(self.fixed_params_dict[col]).dtype, np.number)): - motion_model_used.append(mm.name) - break + motion_model_used = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) + + # motion_models_possible = [] + # for mm in self.motion_models: + # required_columns = mm.fit_param_names + mm.fixed_param_names + # if all(col in self.ref_table.colnames or (self.fixed_params_dict is not None and col in self.fixed_params_dict.keys()) for col in required_columns): + # motion_models_possible.append((mm, required_columns)) + + # # Check if values are finite for required columns in possible motion models + # motion_model_used = [] + # # for k in np.where(keep_orig)[0]: + # for k in range(len(self.ref_table)): + # for mm, req in motion_models_possible[::-1]: + # # if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): + # req_col_in_table = [col for col in req if col in self.ref_table.colnames] + # req_col_in_dict = [col for col in req if (self.fixed_params_dict is not None) and (col in self.fixed_params_dict.keys())] + # # If requested column in table/fixed_params dict is numeric, check if values are finite. + # if all(np.isfinite(self.ref_table[col][k]) for col in req_col_in_table if np.issubdtype(self.ref_table[col].dtype, np.number)) \ + # and all(np.isfinite(self.fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(self.fixed_params_dict[col]).dtype, np.number)): + # motion_model_used.append(mm.name) + # break # Assign the determined motion models # self.ref_table['motion_model_used'][keep_orig] = motion_model_used - self.ref_table['motion_model_used'] = motion_model_used + self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U15') # Replace the originals if we are supposed to keep them fixed. if (keep_orig is not None) and (sum(keep_orig) > 0): @@ -1120,41 +1121,45 @@ def get_ref_list_from_table(self, epoch): # Reference stars will be named. name = self.ref_table['name'] # Calculate x, y, xe, ye - if 'motion_model_used' in self.ref_table.colnames: - x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) - else: - # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty - for mm in self.motion_models[::-1]: - required_columns = mm.fit_param_names + mm.fixed_param_names - if all([param in self.ref_table.colnames or (self.fixed_params_dict is not None and param in self.fixed_params_dict.keys()) for param in required_columns]): - # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. - - if any([param not in self.ref_table.colnames for param in required_columns]): - # If any required column is missing, skip to the next motion model. - continue - - if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): - # If any required column has non-finite values, skip to the next motion model. - continue - - print(f"Inferring positions using motion model {mm.name}.") - # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. - if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): - x, y, xe, ye = mm().model( - t=epoch, - fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, - fit_param_errs=np.array([self.ref_table[f'{param}_err'] for param in mm.fit_param_names]).T, - fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} - ) - else: - x, y = mm().model( - t=epoch, - fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, - fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} - ) - xe = None - ye = None - break + + if 'motion_model_used' not in self.ref_table.colnames: + motion_model_used = determine_motion_model(self.ref_table) + self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U15') + + x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) + # else: + # # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty + # for mm in self.motion_models[::-1]: + # required_columns = mm.fit_param_names + mm.fixed_param_names + # if all([(param in self.ref_table.colnames) or (self.fixed_params_dict is not None and param in self.fixed_params_dict.keys()) for param in required_columns]): + # # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. + + # if any([param not in self.ref_table.colnames for param in required_columns]): + # # If any required column is missing, skip to the next motion model. + # continue + + # if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): + # # If any required column has non-finite values, skip to the next motion model. + # continue + + # print(f"Inferring positions using motion model {mm.name}.") + # # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. + # if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): + # x, y, xe, ye = mm().model( + # t=epoch, + # fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, + # fit_param_errs=np.array([self.ref_table[f'{param}_err'] for param in mm.fit_param_names]).T, + # fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} + # ) + # else: + # x, y = mm().model( + # t=epoch, + # fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, + # fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} + # ) + # xe = None + # ye = None + # break # # No velocities... just used average positions. # x = self.ref_table['x0'] @@ -2002,6 +2007,11 @@ def fit(self): # Update chi2 values in ref table, as motion_model_used may have changed x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs, fixed_params_dict=self.fixed_params_dict) + # Convert x_inferred and y_inferred to 2D arrays if they are 1D (i.e. if only one epoch), so that the chi2 calculation works correctly. + if x_inferred.ndim == 1: + x_inferred = x_inferred[:, np.newaxis] + if y_inferred.ndim == 1: + y_inferred = y_inferred[:, np.newaxis] chi2_x_2d = ((self.ref_table['x'] - x_inferred) / self.ref_table['xe'])**2 chi2_y_2d = ((self.ref_table['y'] - y_inferred) / self.ref_table['ye'])**2 chi2_x = np.nansum(chi2_x_2d, axis=1) @@ -2107,6 +2117,55 @@ def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, re # y = startable['y'] # return x, y +def determine_motion_model(startable, motion_models=None, fixed_params_dict=None): + """Determine motion model used in star table based on the finite model parameter columns + + Parameters + ---------- + startable : startable + Startable with motion model parameter columns + motion_models : list of MotionModel or str, optional + List of motion model classes or their names to select from. + If None, all available motion models will be considered, by default None + fixed_params_dict : dict, optional + Dictionary of fixed parameters, by default None + + Returns + ------- + motion_model_used : list + List of motion model used for each star + """ + + if motion_models is None: + motion_models = motion_model.MotionModel.__subclasses__() + elif all(isinstance(mm, str) for mm in motion_models): + all_mm_map = motion_model.motion_model_map() + motion_models = [all_mm_map[mm] for mm in motion_models] + + if fixed_params_dict is None: + fixed_params_dict = {} + + motion_models_possible = [] + for mm in motion_models: + required_columns = mm.fit_param_names + mm.fixed_param_names + req_col_in_table = [col for col in required_columns if (col in startable.colnames)] + req_col_in_dict = [col for col in required_columns if (col in fixed_params_dict.keys())] + if all((col in startable.colnames) or (col in fixed_params_dict.keys()) for col in required_columns): + motion_models_possible.append((mm, req_col_in_table, req_col_in_dict)) + + # Check if values are finite for required columns in possible motion models + motion_model_used = [] + + for k in tqdm(range(len(startable)), desc='Determining motion model for each star'): + for mm, req_col_in_table, req_col_in_dict in motion_models_possible[::-1]: + # If requested column in table/fixed_params dict is numeric, check if values are finite. + if all(np.isfinite(startable[col][k]) for col in req_col_in_table if np.issubdtype(startable[col].dtype, np.number)) \ + and all(np.isfinite(fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(fixed_params_dict[col]).dtype, np.number)): + motion_model_used.append(mm.name) + break + return motion_model_used + + def get_all_epochs(t): """ Helper function to get times of all epochs from a ref table. @@ -2310,8 +2369,12 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi else: new_col_shape = [N_newstars, ref_table[col_name].shape[1]] - new_col_data = Column(data=np.tile(new_col_empty, new_col_shape), - name=col_name, dtype=ref_table[col_name].dtype) + new_col_data = Column( + data=np.tile(new_col_empty, new_col_shape), + name=col_name, + dtype=ref_table[col_name].dtype + ) + col_arrays[new_col_name] = new_col_data ref_table_new = StarTable(**col_arrays) @@ -3318,7 +3381,7 @@ def update_old_and_new_names(ref_table, list_index, idx_ref_new): new_name_len_max = 0 for ss in idx_ref_new: - new_name = '{0:3d}_{1:s}'.format(list_index, ref_table['name_in_list'][ss, list_index]) + new_name = f"{list_index:3d}_{str(ref_table['name_in_list'][ss, list_index]):s}" new_names.append(new_name) new_name_len_max = max(new_name_len_max, len(new_name)) From 646a9570a25899fb71f2e948828ca13e2fbc57ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 11 Mar 2026 23:50:26 -0700 Subject: [PATCH 47/94] Passed parallax fit --- flystar/tests/test_align.py | 50 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index d93ba8e..14d1ab1 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1446,29 +1446,27 @@ def make_fake_starlists_poly1_par(seed=-1): return (xy_trans, mag_trans) if __name__ == '__main__': - test_MosaicSelfRef() - # test_MosaicToRef_hst_me() - # import pickle - # import matplotlib.pyplot as plt - # with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: - # my_gaia = pickle.load(f) - # with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: - # list_of_starlists = pickle.load(f) - # ra_deg, dec_deg = 18.0, -30.0 - # my_gaia.remove_column('motion_model_used') - # msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, - # dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], - # outlier_tol=[None, None, 3], mag_lim=[6, 20], - # trans_class=transforms.PolyTransform, - # trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], - # motion_models=['Empty','Fixed','Linear','Parallax'], - # fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, - # use_ref_new=True, - # update_ref_orig=False, - # mag_trans=True, - # trans_weighting='both,std', - # init_guess_mode='name', verbose=3) - # msc.fit() - # for i in range(msc.ref_table['x'].shape[1]): - # plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) - # plt.show() \ No newline at end of file + import pickle + import matplotlib.pyplot as plt + with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: + my_gaia = pickle.load(f) + with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: + list_of_starlists = pickle.load(f) + ra_deg, dec_deg = 18.0, -30.0 + my_gaia.remove_column('motion_model_used') + msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, + dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], + outlier_tol=[None, None, 3], mag_lim=[6, 20], + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], + motion_models=['Empty','Fixed','Linear','Parallax'], + fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, + use_ref_new=True, + update_ref_orig=False, + mag_trans=True, + trans_weighting='both,std', + init_guess_mode='name', verbose=3) + msc.fit() + for i in range(msc.ref_table['x'].shape[1]): + plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) + plt.show() \ No newline at end of file From 3927e66d87cfcec76899de625d0d93217fe17e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 18 Mar 2026 17:51:22 -0700 Subject: [PATCH 48/94] Add number of iterations in align output information --- flystar/align.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 6f596a2..8c98550 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -361,7 +361,7 @@ def fit(self): # This updates trans objects and the ref_table. self.match_and_transform(self.mag_lim[self.ref_index], self.dr_tol[nn], self.dm_tol[nn], self.outlier_tol[nn], - self.trans_args[nn]) + self.trans_args[nn], nn) # Clean up the reference table # Find where stars are detected. @@ -438,7 +438,7 @@ def fit(self): pickle.dump(self, file) return - def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_args): + def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_args, nn=None): """ Given some reference list of positions, loop through all the starlists transform and match them. @@ -449,6 +449,8 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar msg2 = ' {0:8s} < {1:0.3f}' print(" ") print(" **********") + if nn is not None: + print(f" Iteration {nn+1} / {self.iters}") print(msg.format((ii + 1), len(self.star_lists), len(self.star_lists[ii]))) print(msg2.format('dr', dr_tol)) print(msg2.format('|dm|', dm_tol)) @@ -1947,7 +1949,7 @@ def fit(self): # This updates trans objects and the ref_table. self.match_and_transform(self.ref_mag_lim, self.dr_tol[nn], self.dm_tol[nn], self.outlier_tol[nn], - self.trans_args[nn]) + self.trans_args[nn], nn) # Clean up the reference table # Find where stars are detected. From 6a94841f3d9a3828f134a31c60a37faf2fc29e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 18 Mar 2026 17:52:08 -0700 Subject: [PATCH 49/94] n_fit now requires unique times as well --- flystar/startables.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/flystar/startables.py b/flystar/startables.py index b1d3a2a..53d4539 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -738,7 +738,11 @@ def fit_motion_model( # Calculate mask array xy_mask = ~ (x_data.mask | y_data.mask) - self['n_fit'] = xy_mask.sum(axis=1) + # Calculate n_fit: unique times & unmasked x y values + self['n_fit'] = np.array([ + len(set(t_data[i][xy_mask[i]])) + for i in range(N_stars) + ]) # Convert to lists of arrays for faster access during fitting idx = [np.flatnonzero(xy_mask[i]) for i in range(N_stars)] From f5102b1843078fdab3f8d74c3516530dad215dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 25 Mar 2026 13:08:21 -0700 Subject: [PATCH 50/94] Added seed for test function --- flystar/tests/test_align.py | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 14d1ab1..1281b1e 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -823,7 +823,7 @@ def test_MosaicToRef_mag_bug(): """ Bug found by Tuan Do on 2020-04-12. """ - make_fake_starlists_poly1_vel() + make_fake_starlists_poly1_vel(seed=42) ref_list = starlists.StarList.read(f'{test_data_path}/random_vel_0.fits') lists = [ref_list] @@ -1448,25 +1448,25 @@ def make_fake_starlists_poly1_par(seed=-1): if __name__ == '__main__': import pickle import matplotlib.pyplot as plt - with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: - my_gaia = pickle.load(f) - with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: - list_of_starlists = pickle.load(f) - ra_deg, dec_deg = 18.0, -30.0 - my_gaia.remove_column('motion_model_used') - msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, - dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], - outlier_tol=[None, None, 3], mag_lim=[6, 20], - trans_class=transforms.PolyTransform, - trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], - motion_models=['Empty','Fixed','Linear','Parallax'], - fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, - use_ref_new=True, - update_ref_orig=False, - mag_trans=True, - trans_weighting='both,std', - init_guess_mode='name', verbose=3) - msc.fit() - for i in range(msc.ref_table['x'].shape[1]): - plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) - plt.show() \ No newline at end of file + # with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: + # my_gaia = pickle.load(f) + # with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: + # list_of_starlists = pickle.load(f) + # ra_deg, dec_deg = 18.0, -30.0 + # my_gaia.remove_column('motion_model_used') + # msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, + # dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], + # outlier_tol=[None, None, 3], mag_lim=[6, 20], + # trans_class=transforms.PolyTransform, + # trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], + # motion_models=['Empty','Fixed','Linear','Parallax'], + # fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, + # use_ref_new=True, + # update_ref_orig=False, + # mag_trans=True, + # trans_weighting='both,std', + # init_guess_mode='name', verbose=3) + # msc.fit() + # for i in range(msc.ref_table['x'].shape[1]): + # plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) + # plt.show() \ No newline at end of file From ab85b4d071ed1d0e2216b29b8b444dedec38a067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 25 Mar 2026 13:09:23 -0700 Subject: [PATCH 51/94] Added mag offset to verbose output --- flystar/align.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 8c98550..6855dcc 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -3351,7 +3351,7 @@ def trans_initial_guess( assert len(x1m) >= n_req_match, \ f'Failed to find more than {n_req_match} (only {len(x1m)}) matches, giving up.' if verbose > 1: - print('initial_guess: {0:d} stars matched between starlist and reference list'.format(N)) + print('Initial_guess: {0:d} stars matched between starlist and reference list'.format(N)) # Calculate position transformation based on matches if ('order' in trans_args) and (trans_args['order'] == 0): @@ -3370,7 +3370,10 @@ def trans_initial_guess( trans.mag_offset = 0 if verbose > 1: - print('init guess: ', trans.px.parameters, trans.py.parameters) + print('Initial guess:') + print(f'{trans.px.parameters=}') + print(f'{trans.py.parameters=}') + print(f'{trans.mag_offset=}') warnings.filterwarnings('default', category=AstropyUserWarning) From aaadaa5e890746a657f322409c0ef2269f6efdd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 25 Mar 2026 13:10:00 -0700 Subject: [PATCH 52/94] Minor fix of variable names in docstring --- flystar/starlists.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flystar/starlists.py b/flystar/starlists.py index f872516..7a3ad13 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -645,18 +645,18 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): if error==True: t_ref.rename_column(cols[5], 'xe') t_ref.rename_column(cols[6], 'ye') - t_ref.rename_column(cols[7], 'snr') + t_ref.rename_column(cols[7], 'me') t_ref.rename_column(cols[8], 'corr') t_ref.rename_column(cols[9], 'N_frames') t_ref.rename_column(cols[10], 'flux') else: - t_ref.rename_column(cols[5], 'snr') + t_ref.rename_column(cols[5], 'me') t_ref.rename_column(cols[6], 'corr') t_ref.rename_column(cols[7], 'N_frames') t_ref.rename_column(cols[8], 'flux') - if ('me' not in cols) and ('snr' in cols) and (error == True): - t_ref['me'] = 1.0 / t_ref['snr'] + # if ('me' not in cols) and ('snr' in cols) and (error == True): + # t_ref['me'] = 1.0 / t_ref['snr'] if fvu_file is not None: t_fvu = Table.read(fvu_file, format='ascii.no_header') From e097536f6119fec5292f8bb76ede97736129790a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 25 Mar 2026 13:10:45 -0700 Subject: [PATCH 53/94] Masking close to 0 values in xe ye in fit motion model to avoid infinite weight --- flystar/startables.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 53d4539..615b9d0 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -672,8 +672,19 @@ def fit_motion_model( N_stars = len(self) x_data = np.ma.masked_invalid(self['x'].data, copy=True) y_data = np.ma.masked_invalid(self['y'].data, copy=True) - xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else np.ones_like(x_data) - ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else np.ones_like(y_data) + xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else None + ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else None + # Mask out close to 0 values + if xe_data is not None: + xe_data.mask[np.isclose(xe_data, 0)] = True + if ye_data is not None: + ye_data.mask[np.isclose(ye_data, 0)] = True + + # If all of xe and ye is masked for a star, effectively no uncertainties provided, fill with 1. + if (xe_data is not None) and (ye_data is not None): + fill_with_one = np.all(xe_data.mask, axis=1) & np.all(ye_data.mask, axis=1) + xe_data[fill_with_one] = 1. + ye_data[fill_with_one] = 1. # Ensure data is 2D for consistent indexing, even if we have only one list/epoch (shape (N_stars, 1) instead of (N_stars,)) if np.ndim(x_data) == 1: @@ -701,10 +712,10 @@ def fit_motion_model( # Add default t0 if not provided in fixed_params_dict if fixed_params_dict is None: - weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None + weights = 1/np.hypot(xe_data, ye_data) if (xe_data is not None) and (ye_data is not None) else None fixed_params_dict = {'t0': np.average(t_data, axis=1, weights=weights)} elif 't0' not in fixed_params_dict: - weights = 1/np.hypot(xe_data, ye_data) if xe_data is not None else None + weights = 1/np.hypot(xe_data, ye_data) if (xe_data is not None) and (ye_data is not None) else None fixed_params_dict['t0'] = np.average(t_data, axis=1, weights=weights) else: if np.ndim(fixed_params_dict['t0']) == 0: @@ -738,6 +749,8 @@ def fit_motion_model( # Calculate mask array xy_mask = ~ (x_data.mask | y_data.mask) + if (xe_data is not None) and (ye_data is not None): + xy_mask = xy_mask & (~ (xe_data.mask | ye_data.mask)) # Calculate n_fit: unique times & unmasked x y values self['n_fit'] = np.array([ len(set(t_data[i][xy_mask[i]])) From c85d2af27074b303ade2d5c29adf3ef885514fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 25 Mar 2026 13:12:06 -0700 Subject: [PATCH 54/94] Revert "Minor fix of variable names in docstring" This reverts commit aaadaa5e890746a657f322409c0ef2269f6efdd1. --- flystar/starlists.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flystar/starlists.py b/flystar/starlists.py index 7a3ad13..f872516 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -645,18 +645,18 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): if error==True: t_ref.rename_column(cols[5], 'xe') t_ref.rename_column(cols[6], 'ye') - t_ref.rename_column(cols[7], 'me') + t_ref.rename_column(cols[7], 'snr') t_ref.rename_column(cols[8], 'corr') t_ref.rename_column(cols[9], 'N_frames') t_ref.rename_column(cols[10], 'flux') else: - t_ref.rename_column(cols[5], 'me') + t_ref.rename_column(cols[5], 'snr') t_ref.rename_column(cols[6], 'corr') t_ref.rename_column(cols[7], 'N_frames') t_ref.rename_column(cols[8], 'flux') - # if ('me' not in cols) and ('snr' in cols) and (error == True): - # t_ref['me'] = 1.0 / t_ref['snr'] + if ('me' not in cols) and ('snr' in cols) and (error == True): + t_ref['me'] = 1.0 / t_ref['snr'] if fvu_file is not None: t_fvu = Table.read(fvu_file, format='ascii.no_header') From 82462bc90aefd6c355d4c74c5e1bf27253632023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 25 Mar 2026 13:14:28 -0700 Subject: [PATCH 55/94] Minor fix of variable names in docstring --- flystar/motion_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index de76c46..7834e55 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -137,7 +137,7 @@ def fit( Seed for the random number generator, by default None Returns ------- - params, params_err(, chi2_x, chi2_y) + params, param_errs(, chi2_x, chi2_y) Parameters, uncertainties, and chi squares if return_chi2 is True. The corresponding parameter names are in self.fit_param_names. """ assert np.ndim(t) == np.ndim(x) == np.ndim(y) == np.ndim(xe) == np.ndim(ye) == 1, "Input arrays must be 1D! Motion model can only fit individual stars" From 93fa222c6bfd9761c330ecf2199ac753062abb09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 29 Mar 2026 19:12:29 -0700 Subject: [PATCH 56/94] Added singular matrix handling; Optimized warning message printing --- flystar/motion_model.py | 82 ++++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 29 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 7834e55..6a48a80 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -120,7 +120,7 @@ def fit( weighting : str, optional Use standard error weighting ('std': w=1/xe, 1/ye) or variance weighting ('var': w=1/xe**2, 1/ye**2), by default 'var' use_scipy : bool, optional - Use scipy for optmization. Otherwise, use linear algebraic solution (Linear model only), which is faster for < 300 epochs, by default True + Use scipy for optimization. Otherwise, use linear algebraic solution (Linear model only), which is faster for < 300 epochs, by default True absolute_sigma : bool, optional Absolute sigma. See scipy.optimize.curve_fit for details, by default True fill_value : float, optional @@ -142,6 +142,10 @@ def fit( """ assert np.ndim(t) == np.ndim(x) == np.ndim(y) == np.ndim(xe) == np.ndim(ye) == 1, "Input arrays must be 1D! Motion model can only fit individual stars" assert len(t) == len(x) == len(y) == len(xe) == len(ye), "Input arrays must have the same length!" + + if not verbose: + warnings.filterwarnings("ignore", category=OptimizeWarning) + fit_result = self.run_fit( t, x, y, xe, ye, fixed_params_dict=fixed_params_dict, @@ -203,6 +207,9 @@ def fit( inf_errs = [np.all(arr==np.inf) for arr in np.transpose(np.array(bb_params_errs))] param_errs[inf_errs] = 0.0 + if not verbose: + warnings.resetwarnings() + if return_chi2: return params, param_errs, chi2_x, chi2_y else: @@ -433,11 +440,10 @@ def run_fit( degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: - if verbose: - warnings.warn( - f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', - OptimizeWarning, stacklevel=2 - ) + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) return params, param_errors, np.nan, np.nan @@ -468,7 +474,7 @@ def run_fit( else: # degree_of_freedom == 0, as < 0 case already handled above warnings.warn( - f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value np.inf.', + f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to np.inf.', OptimizeWarning, stacklevel=2 ) # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit @@ -600,11 +606,10 @@ def run_fit( degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: - if verbose: - warnings.warn( - f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', - OptimizeWarning, stacklevel=2 - ) + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) if return_chi2: @@ -636,18 +641,39 @@ def run_fit( # Linear algebraic solution # Use https://en.wikipedia.org/wiki/Weighted_least_squares#Solution_scheme X_mat_t = np.vander(dt, 2) + # x calculation W_mat_x = np.diag(x_wt) - XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t - pcov_x = np.linalg.inv(XTWX_mat_x) # Covariance Matrix + XTWX_mat_x = X_mat_t.T @ W_mat_x @ X_mat_t # Shape (2, 2) + pcov_x = np.linalg.pinv(XTWX_mat_x) # Covariance Matrix popt_x = pcov_x @ X_mat_t.T @ W_mat_x @ x # Linear Solution - perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + + # Singular matrix (not enough unique times): Fill uncertainty with Inf. + if np.linalg.matrix_rank(XTWX_mat_x) < 2: + warnings.warn( + f'Singular matrix. Covariance of the parameters could not be estimated. Setting parameter uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) + perr_x = np.full_like(popt_x, np.inf) + else: + perr_x = np.sqrt(np.diag(pcov_x)) # Uncertainty of Linear Solution + # y calculation W_mat_y = np.diag(y_wt) - XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t - pcov_y = np.linalg.inv(XTWX_mat_y) # Covariance Matrix + XTWX_mat_y = X_mat_t.T @ W_mat_y @ X_mat_t # Shape (2, 2) + pcov_y = np.linalg.pinv(XTWX_mat_y) # Covariance Matrix popt_y = pcov_y @ X_mat_t.T @ W_mat_y @ y # Linear Solution - perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + + # Singular matrix (not enough unique times): Fill uncertainty with Inf. + if np.linalg.matrix_rank(XTWX_mat_y) < 2: + warnings.warn( + f'Singular matrix. Covariance of the parameters could not be estimated. Setting parameter uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) + perr_y = np.full_like(popt_y, np.inf) + else: + perr_y = np.sqrt(np.diag(pcov_y)) # Uncertainty of Linear Solution + # prepare values to return vx, x0 = popt_x vy, y0 = popt_y @@ -676,7 +702,7 @@ def run_fit( else: # degree_of_freedom == 0, as < 0 case already handled above warnings.warn( - f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to fill value np.inf.', + f'Degree of freedom < 0. Covariance of the parameters could not be estimated. Setting parameter uncertainties to np.inf.', OptimizeWarning, stacklevel=2 ) # Set parameter uncertainties to np.inf, same behavior as scipy.optimize.curve_fit @@ -816,11 +842,10 @@ def run_fit( degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: - if verbose: - warnings.warn( - f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', - OptimizeWarning, stacklevel=2 - ) + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) if return_chi2: @@ -1054,11 +1079,10 @@ def run_fit( degree_of_freedom = n_fit - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: - if verbose: - warnings.warn( - f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', - OptimizeWarning, stacklevel=2 - ) + warnings.warn( + f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', + OptimizeWarning, stacklevel=2 + ) params = np.full(self.n_params, fill_value) param_errors = np.full(self.n_params, np.inf) if return_chi2: From 3d611b76e218513e315b72519911f70cde448467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 29 Mar 2026 19:16:05 -0700 Subject: [PATCH 57/94] Removed unecessary fixed motion model fit; Fixed bootstrap unmatched data shape; Optimized verbose control of output messages --- flystar/align.py | 72 +++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 6855dcc..9a0d734 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -255,10 +255,10 @@ def = None. If not None, then this should contain an array or list of transform self.motion_model_for_new_star = all_mm_map[motion_model_for_new_star] # For backwards compatibility. - if self.verbose is True: - self.verbose = 9 - if self.verbose is False: - self.verbose = 0 + # if self.verbose is True: + # self.verbose = 9 + # if self.verbose is False: + # self.verbose = 0 self.N_lists = len(self.star_lists) @@ -369,7 +369,8 @@ def fit(self): ### Drop all stars that have 0 detections. idx = np.where((self.ref_table['n_detect'] == 0))[0] - print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) + if self.verbose: + print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) if self.iter_callback != None: @@ -406,7 +407,8 @@ def fit(self): ### Drop all stars that have 0 detections. idx = np.where((self.ref_table['n_detect'] == 0))[0] - print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) + if self.verbose: + print(f' *** Getting rid of {len(idx):d} out of {len(self.ref_table):d} junk sources') self.ref_table.remove_rows(idx) if self.iter_callback != None: @@ -436,6 +438,9 @@ def fit(self): if self.save_path: with open(self.save_path, 'wb') as file: pickle.dump(self, file) + print('================================') + print(f'Done with fit()') + print('================================') return def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_args, nn=None): @@ -954,13 +959,13 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): fit_star_idxs = None if ('motion_model_input' in self.ref_table.keys()) and np.all(self.ref_table['motion_model_input']=='Fixed'): - self.ref_table.fit_motion_model( - motion_models=['Fixed'], - weighting=self.vel_weighting, - use_scipy=self.use_scipy, - absolute_sigma=self.absolute_sigma, - verbose=self.verbose - ) + # self.ref_table.fit_motion_model( + # motion_models=['Fixed'], + # weighting=self.vel_weighting, + # use_scipy=self.use_scipy, + # absolute_sigma=self.absolute_sigma, + # verbose=self.verbose + # ) weighted_xy = ('xe' in self.ref_table.colnames) and ('ye' in self.ref_table.colnames) weighted_m = ('me' in self.ref_table.colnames) self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) @@ -1219,7 +1224,7 @@ def reset_ref_values(self, exclude=None): return - def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_bootstrap=True, weighting='var', use_scipy=True, absolute_sigma=False, show_progress=True, update_errors=False): + def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_bootstrap=True, update_errors=False, verbose=True): """ Function to calculate bootstrap errors for the transformations as well as the proper motions. For each iteration, this will: @@ -1260,16 +1265,12 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot to calculate positional alignment errors. If false, only calculate position alignment errors. - weighting: str - 'var' or 'std' weighting for velocity fitting, by default 'var'. If 'var', use the variance of the residuals to weight the fit. - If 'std', use the standard deviation of the residuals to weight the fit. - - absolute_sigma: boolean - If True, use the absolute sigma in the velocity fitting. If False, use the relative sigma, by default False. - update_errors: boolean If True, save the starlist errors as xe_list, bootstrap errors as xe_boot, and their quad sum as xe (and likewise for ye and me). If False (default), leave the starlist errors in place as xe and bootstrap errors as xe_boot. + verbose: boolean + Print verbose information or not, by default True + Output: ------ New columns will be added to self.ref_table: @@ -1283,7 +1284,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot For stars that fail boot_epochs_min criteria, np.nan is used """ # First, assert than n_boot > 0 - assert n_boot > 0 + assert n_boot > 0, f'{n_boot=} is not possive!' ref_table = copy.deepcopy(self.ref_table) n_epochs = len(ref_table['x'][0]) @@ -1337,7 +1338,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY ### DECREASE PRECISION ON ARRAYS (32 bit instead of 64: dtype=np.float32) ### AT SOME POINT, NEED TO CONVERT BACK (LOOK UP HOW TO DO THIS CAREFULLY) - for ii in tqdm(range(n_boot), desc='Bootstrap iterations', disable=not show_progress): + for ii in tqdm(range(n_boot), desc='Bootstrap iterations', disable=not verbose): # Recalculate transformations using bootstrap sample of # reference stars. Use a loop for each epoch here, so we # can handle case where different reference stars are used @@ -1448,7 +1449,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot m_boot_sum += m_trans_arr m2_boot_sum += m_trans_arr**2 - t2 = time.time() + # t2 = time.time() #print('=================================================') #print('Time to do {0} epochs: {1}s'.format(n_epochs, t2-t1)) #print('=================================================') @@ -1486,7 +1487,8 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot fixed_params_dict=fixed_params_dict, weighting=self.vel_weighting, use_scipy=self.use_scipy, - absolute_sigma=self.absolute_sigma + absolute_sigma=self.absolute_sigma, + verbose=self.verbose ) # Save proper motion fit results to output arrays @@ -1549,6 +1551,10 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot x_pred, y_pred, _, _ = self.ref_table.infer_positions(t_arr, fixed_params_dict=self.fixed_params_dict) + if np.ndim(x_pred) == 1: + x_pred = x_pred[:, np.newaxis] + if np.ndim(y_pred) == 1: + y_pred = y_pred[:, np.newaxis] xe_comb = np.hypot(self.ref_table['xe'], self.ref_table['xe_boot']) ye_comb = np.hypot(self.ref_table['ye'], self.ref_table['ye_boot']) data_dict['chi2_x_boot'] = np.nansum((self.ref_table['x']-x_pred)**2/(xe_comb)**2,axis=1) @@ -1571,9 +1577,10 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot col[idx_good] = data_dict[ff] self.ref_table.add_column(col) - print('===============================') - print('Done with bootstrap') - print('===============================') + if verbose: + print('===============================') + print('Done with bootstrap') + print('===============================') if update_errors: self.ref_table['xe_list'] = self.ref_table['xe'] @@ -1990,14 +1997,14 @@ def fit(self): ########## # Find where stars are detected. if self.verbose > 0: - print('') print(' Preparing the reference table...') self.ref_table.detections() ### Drop all stars that have 0 detections. idx = np.where((self.ref_table['n_detect'] == 0) & (self.ref_table['ref_orig'] == False))[0] - print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) + if self.verbose: + print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) if self.iter_callback != None: @@ -2026,6 +2033,9 @@ def fit(self): if self.save_path: with open(self.save_path, 'wb') as file: pickle.dump(self, file) + print('================================') + print(f'Done with fit()') + print('================================') return # TODO: This is sometimes run on a startable, not a starlist, at least as currently used @@ -2158,7 +2168,7 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None # Check if values are finite for required columns in possible motion models motion_model_used = [] - for k in tqdm(range(len(startable)), desc='Determining motion model for each star'): + for k in range(len(startable)): for mm, req_col_in_table, req_col_in_dict in motion_models_possible[::-1]: # If requested column in table/fixed_params dict is numeric, check if values are finite. if all(np.isfinite(startable[col][k]) for col in req_col_in_table if np.issubdtype(startable[col].dtype, np.number)) \ From 942e148bdfb414fe575912057d21bc63c09b6095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 29 Mar 2026 19:18:04 -0700 Subject: [PATCH 58/94] Merged show_progress into verbose; Changed to construct list of parameters for each motion model, instead of all motion models for memory efficiency --- flystar/startables.py | 46 +++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 615b9d0..cfdbd4b 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -549,8 +549,7 @@ def fit_motion_model( verbose=True, mask_value=None, mask_lists=None, - fill_value=np.nan, - show_progress=True + fill_value=np.nan ): """Fit velocity for star table @@ -591,8 +590,6 @@ def fit_motion_model( Indices of lists to mask/exclude from fitting, by default None fill_value : float, optional Fill value when there is not enough data points to fit, by default np.nan - show_progress : bool, optional - Show progress bar or not, by default True Raises ------ @@ -681,6 +678,7 @@ def fit_motion_model( ye_data.mask[np.isclose(ye_data, 0)] = True # If all of xe and ye is masked for a star, effectively no uncertainties provided, fill with 1. + # Note that this automatically turn the mask to False for these stars if (xe_data is not None) and (ye_data is not None): fill_with_one = np.all(xe_data.mask, axis=1) & np.all(ye_data.mask, axis=1) xe_data[fill_with_one] = 1. @@ -751,20 +749,19 @@ def fit_motion_model( xy_mask = ~ (x_data.mask | y_data.mask) if (xe_data is not None) and (ye_data is not None): xy_mask = xy_mask & (~ (xe_data.mask | ye_data.mask)) + + # Calculate n_fit: unmasked x y values + # This will be used to determine which motion model to use for each star. + # Note that we don't require unique times here + # as scipy.curve_fit and Linear algebra can fit non-unique times. + # self['n_fit'] = np.sum(xy_mask, axis=1) + # Calculate n_fit: unique times & unmasked x y values self['n_fit'] = np.array([ len(set(t_data[i][xy_mask[i]])) for i in range(N_stars) ]) - # Convert to lists of arrays for faster access during fitting - idx = [np.flatnonzero(xy_mask[i]) for i in range(N_stars)] - t_stars = [np.array(t_data[i][idx[i]]) for i in range(N_stars)] - x_stars = [np.array(x_data[i][idx[i]]) for i in range(N_stars)] - y_stars = [np.array(y_data[i][idx[i]]) for i in range(N_stars)] - xe_stars = [np.array(xe_data[i][idx[i]]) for i in range(N_stars)] if xe_data is not None else [None]*N_stars - ye_stars = [np.array(ye_data[i][idx[i]]) for i in range(N_stars)] if ye_data is not None else [None]*N_stars - ########################### ####### Determine MM ###### ########################### @@ -785,6 +782,7 @@ def fit_motion_model( self['motion_model_used'][reassign_mm] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') else: + # If motion_model_input column is not provided, use the most complicated model in motion_models with n_fit >= n_params. mm_digitized = np.digitize( x=n_fit, bins=mm_n_params @@ -874,8 +872,10 @@ def fit_motion_model( else: indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} + # Unmasked indices for each star: + unmasked_idx = [np.flatnonzero(xy_mask[i]) for i in range(N_stars)] - # Expensive for loop! Prepare everything beforehand to speed up. + # For each motion model for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance motion_model_instance = input_mm_map[unique_motion_model]() @@ -889,16 +889,24 @@ def fit_motion_model( chi2_x_array = np.full(n_stars_this_model, np.nan, dtype=float) chi2_y_array = np.full(n_stars_this_model, np.nan, dtype=float) + # Prepare data as lists of arrays for faster access during fitting + t_stars = [np.array(t_data[i][unmasked_idx[i]]) for i in unique_index] + x_stars = [np.array(x_data[i][unmasked_idx[i]]) for i in unique_index] + y_stars = [np.array(y_data[i][unmasked_idx[i]]) for i in unique_index] + xe_stars = [np.array(xe_data[i][unmasked_idx[i]]) for i in unique_index] if xe_data is not None else [None]*n_stars_this_model + ye_stars = [np.array(ye_data[i][unmasked_idx[i]]) for i in unique_index] if ye_data is not None else [None]*n_stars_this_model + + # For each star # Expensive for loop! Prepare everything beforehand to speed up. if len(unique_index) > 0: - for idx, i_star in enumerate(tqdm(unique_index, disable=not show_progress, desc=f"Fitting motion model {unique_motion_model}")): + for idx, i_star in enumerate(tqdm(unique_index, disable=not verbose, desc=f"Fitting motion model {unique_motion_model}")): # Fit the star params, param_errs, chi2_x, chi2_y = motion_model_instance.fit( - t=t_stars[i_star], - x=x_stars[i_star], - y=y_stars[i_star], - xe=xe_stars[i_star], - ye=ye_stars[i_star], + t=t_stars[idx], + x=x_stars[idx], + y=y_stars[idx], + xe=xe_stars[idx], + ye=ye_stars[idx], fixed_params_dict=fixed_params_stars[i_star], weighting=weighting, use_scipy=use_scipy, From c9b54a5c2c49aefe0430eaa882b0cfb579843188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 29 Mar 2026 19:19:04 -0700 Subject: [PATCH 59/94] Adjusted import orders --- flystar/tests/test_startable.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index fbb0a34..64e0681 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -1,13 +1,13 @@ +import os +import pdb +import pytest +import flystar +import numpy as np from astropy.table import Table from astropy import table from flystar import motion_model from flystar.startables import StarTable from flystar.starlists import StarList -import numpy as np -import pytest -import os -import pdb -import flystar test_data_path = f'{flystar.__path__[0]}/tests/test_data' From 5332543174315d79a15165f7c69dc3e469940e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Sun, 29 Mar 2026 19:20:20 -0700 Subject: [PATCH 60/94] Removed velocity assertion in align.ref_table if all epochs are the same: Fixed model will be used instead of assuming 0 velocities --- flystar/tests/test_align.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 1281b1e..ca82077 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -114,10 +114,11 @@ def test_MosaicSelfRef_vel_tconst(): assert 'y0_err' in msc.ref_table.colnames assert 'm0' in msc.ref_table.colnames assert 'm0_err' in msc.ref_table.colnames - assert 'vx' in msc.ref_table.colnames - assert 'vx_err' in msc.ref_table.colnames - assert 'vy' in msc.ref_table.colnames - assert 'vy_err' in msc.ref_table.colnames + # Since they are in the same epoch, no velocity information can be inferred + # assert 'vx' in msc.ref_table.colnames + # assert 'vx_err' in msc.ref_table.colnames + # assert 'vy' in msc.ref_table.colnames + # assert 'vy_err' in msc.ref_table.colnames assert 't0' in msc.ref_table.colnames # Check that we have some matched stars... should be at least 35 stars From f982b5b47fb2aea2b92ea65fa7642c7909dce667 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Fri, 24 Apr 2026 18:14:04 -0700 Subject: [PATCH 61/94] Rename matplotlib imports --- flystar/plots.py | 146 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 116 insertions(+), 30 deletions(-) diff --git a/flystar/plots.py b/flystar/plots.py index e92f5ff..16ec8b1 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -1,20 +1,20 @@ -from . import motion_model, startables +import pdb +import math +import astropy +import matplotlib import numpy as np import matplotlib.mlab as mlab -import matplotlib import matplotlib.pyplot as plt -from matplotlib import colors -import matplotlib.cm as cm +import matplotlib.colors as mcolors +from matplotlib import cm from scipy.stats import chi2 -from scipy.optimize import curve_fit from scipy.stats import norm -import pdb -import math -import astropy -from astropy.table import Table +from scipy.optimize import curve_fit from astropy.io import ascii -from astropy.coordinates import SkyCoord from astropy import units as u +from astropy.table import Table +from astropy.coordinates import SkyCoord +from . import motion_model, startables #################################################### # Code for making diagnostic plots for astrometry @@ -39,7 +39,7 @@ def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, transformation. Standard column headers are assumed. starlist: astropy table - Transformed starist with the reference starlist coordinates. + Transformed starlist with the reference starlist coordinates. Standard column headers are assumed starlist_mat: astropy table @@ -1964,13 +1964,13 @@ def plot_quiver_residuals_magcolor(x_t, y_t, x_ref, y_ref, mag, good_idx, ref_id quiv_label_val = 1.0 unit2 = 'mas' - norm = matplotlib.colors.Normalize() + norm = mcolors.Normalize() norm.autoscale(mag) - cm = matplotlib.cm.viridis - sm = matplotlib.cm.ScalarMappable(cmap=cm, norm=norm) + cmap = matplotlib.colormaps['viridis'] + sm = matplotlib.cm.ScalarMappable(cmap=cmap, norm=norm) # cmap = mpl.cm.cool -# norm = mpl.colors.Normalize(vmin=np.min(mag), vmax=np.max(mag)) +# norm = mpl.mcolors.Normalize(vmin=np.min(mag), vmax=np.max(mag)) # # cb1 = mpl.colorbar.ColorbarBase(ax, cmap=cmap, # norm=norm, @@ -2945,7 +2945,7 @@ def rs(x): plt.errorbar(rs(time), rs(x), yerr=rs(xerr), fmt='k.') #plt.errorbar(time, x, yerr=xerr, fmt='k.') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, x, xerr, time_color): @@ -2977,7 +2977,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(y), yerr=rs(yerr), fmt='k.') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, y, yerr, time_color): @@ -3007,7 +3007,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(m), yerr=rs(merr), fmt='k.') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, m, merr, time_color): @@ -3039,7 +3039,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(x - fitLineX)*1e3, yerr=rs(xerr)*1e3, fmt='k.') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, (x - fitLineX)*1e3, xerr*1e3, time_color): @@ -3067,7 +3067,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(y - fitLineY)*1e3, yerr=rs(yerr)*1e3, fmt='k.') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, (y - fitLineY)*1e3, yerr*1e3, time_color): @@ -3095,7 +3095,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(m - fitLineM), yerr=rs(merr), fmt='k.') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, (m - fitLineM), merr, time_color): @@ -3126,7 +3126,7 @@ def rs(x): sc = plt.scatter(x, y, s=0, c=dtime, vmin=0, vmax=1, cmap='hsv') clb = plt.colorbar(sc) clb.ax.tick_params(labelsize=fontsize1) - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, eexx, eeyy, color in zip(x, y, xerr, yerr, time_color): @@ -3368,7 +3368,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(x), yerr=rs(xerr), marker='.', color=color, ls='none') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, x, xerr, time_color): @@ -3400,7 +3400,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(y), yerr=rs(yerr), marker='.', color=color, ls='none') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, y, yerr, time_color): @@ -3430,7 +3430,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(m), yerr=rs(merr), marker='.', color=color, ls='none') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, m, merr, time_color): @@ -3462,7 +3462,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(x - fitLineX)*1e3, yerr=rs(xerr)*1e3, marker='.', color=color, ls='none') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, (x - fitLineX)*1e3, xerr*1e3, time_color): @@ -3490,7 +3490,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(y - fitLineY)*1e3, yerr=rs(yerr)*1e3, marker='.', color=color, ls='none') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, (y - fitLineY)*1e3, yerr*1e3, time_color): @@ -3518,7 +3518,7 @@ def rs(x): if not color_time: plt.errorbar(rs(time), rs(m - fitLineM), yerr=rs(merr), marker='.', color=color, ls='none') else: - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, ee, color in zip(time, (m - fitLineM), merr, time_color): @@ -3549,7 +3549,7 @@ def rs(x): sc = plt.scatter(x, y, s=0, c=dtime, vmin=0, vmax=1, cmap='hsv') clb = plt.colorbar(sc) clb.ax.tick_params(labelsize=fontsize1) - norm = colors.Normalize(vmin=0, vmax=1, clip=True) + norm = mcolors.Normalize(vmin=0, vmax=1, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='hsv') time_color = np.array([(mapper.to_rgba(v)) for v in dtime]) for xx, yy, eexx, eeyy, color in zip(x, y, xerr, yerr, time_color): @@ -3719,7 +3719,7 @@ def plot_sky(stars_tab, yearsInt = np.floor(epochs).astype('int') # Set up a color scheme - cnorm = colors.Normalize(stars_tab['t'][0, :].min(), stars_tab['t'][0, :].max() + 1) + cnorm = mcolors.Normalize(stars_tab['t'][0, :].min(), stars_tab['t'][0, :].max() + 1) cmap = plt.cm.gist_ncar colorList = [] @@ -3891,3 +3891,89 @@ def __call__(self, event): self.fig.canvas.draw() return + + +def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, label='starlist', fig=None, figsize=(600, 600), show=True): + """Plot stars with plotly in interactive html format + + Parameters + ---------- + x : array-like + x positions + y : array-like + y positions + m : array-like, optional + magnitude to be added in hover label, by default None + marker_size : int, optional + Size of marker, by default 10 + color : str or array, optional + Color of marker, either a string (e.g., 'red') or rgba array, by default 'C0' + alpha : float, optional + Opacity of marker color, by default 0.7 + label : str, optional + Label for the star list, by default 'starlist' + fig : plotly.graph_objects.Figure object, optional + Figure if the stars are to be added to an exisiting plot, by default None + figsize : tuple, optional + Figure size, by default (600, 600) + show : bool, optional + Show figure or not, by default True + + Returns + ------- + fig : plotly.graph_objects.Figure + Figure object + """ + import plotly.graph_objects as go + x = np.asarray(x) + y = np.asarray(y) + hover_template = 'x: %{x:.3f}
y: %{y:.3f}' + + + if isinstance(color, str) and color.startswith('C') and color[1:].isdigit(): + color = mcolors.to_rgba(color, alpha=alpha) + color = f'rgba({color[0]*255}, {color[1]*255}, {color[2]*255}, {color[3]:.2f})' + + if m is not None: + m = np.asarray(m) + hover_template += '
m: %{customdata:.2f}' + fig_data = go.Scatter( + x=x, + y=y, + mode='markers', + marker=dict( + size=marker_size, + color=color + ), + hovertemplate=hover_template, + customdata=m, # Add magnitude to hover data + name=label + ) + else: + fig_data = go.Scatter( + x=x, + y=y, + mode='markers', + marker=dict( + size=marker_size, + color=color + ), + hovertemplate=hover_template, + name=label + ) + + if fig is None: + fig = go.Figure(data=[fig_data]) + else: + fig.add_trace(fig_data) + + fig.update_layout( + xaxis_title='x', + yaxis_title='y', + xaxis=dict(scaleanchor='y', scaleratio=1), # Ensure equal aspect ratio + width=figsize[0], + height=figsize[1] + ) + if show: + fig.show() + return fig \ No newline at end of file From 4f22e99b704032a69270cfa9457b7a3329e8c313 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Fri, 24 Apr 2026 18:15:27 -0700 Subject: [PATCH 62/94] Update prompt message when length < Nbrite --- flystar/match.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/flystar/match.py b/flystar/match.py index 3637b8c..c4cad4a 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -38,10 +38,11 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, nin2 = len(xin2) if (nin1 < Nbrite) or (nin2 < Nbrite): - print(( 'You need at least {0} to '.format(Nbrite))) - print( 'find the matches...') - print(( 'NIN1: ', nin1)) - print(( 'NIN2: ', nin2)) + print(f'WARNING: You need at least {Nbrite} to find the matches...') + print(f'NIN1: {nin1}') + print(f'NIN2: {nin2}') + # Nbrite = min(nin1, nin2) + # print(f'Updating Nbrite to {Nbrite}...') return (0, None, None, None, None, None, None) # Take the Nbrite brightest stars from each list and order by brightness. From 4bac0853ecb95a404f604b2a749158f863b07408 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Fri, 24 Apr 2026 18:21:02 -0700 Subject: [PATCH 63/94] Add dimension check and update dimension manipulation for input starlists; --- flystar/align.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 9a0d734..ad06d84 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -226,6 +226,11 @@ def = None. If not None, then this should contain an array or list of transform self.save_path = save_path self.verbose = verbose + # Check x and y are 1d + for ii in range(len(self.star_lists)): + if self.star_lists[ii]['x'].ndim != 1 or self.star_lists[ii]['y'].ndim != 1: + raise ValueError(f"StarList at index {ii} has x and y that are not 1D. x.ndim={self.star_lists[ii]['x'].ndim}, y.ndim={self.star_lists[ii]['y'].ndim}. Please flatten these columns to be 1D.") + # Setup save_path: if self.save_path: assert self.save_path.endswith('.pkl'), 'Save_path must end with .pkl' @@ -684,12 +689,13 @@ def setup_ref_table_from_starlist(self, star_list): else: new_col_name = col_name - # Make every column's 2D arrays except "name" and those + # Make every column's 2D arrays per star except "name" and those # columns used for the motion model. if col_name in motion_model_col_names: col_arrays[new_col_name] = star_list[col_name].data else: - new_col_data = np.array([star_list[col_name].data]).T + new_col_data = star_list[col_name].data[:, None] + # new_col_data = np.array([star_list[col_name].data]).T col_arrays[new_col_name] = new_col_data # Use the columns from the ref list to make the ref_table. @@ -1557,8 +1563,8 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot y_pred = y_pred[:, np.newaxis] xe_comb = np.hypot(self.ref_table['xe'], self.ref_table['xe_boot']) ye_comb = np.hypot(self.ref_table['ye'], self.ref_table['ye_boot']) - data_dict['chi2_x_boot'] = np.nansum((self.ref_table['x']-x_pred)**2/(xe_comb)**2,axis=1) - data_dict['chi2_y_boot'] = np.nansum((self.ref_table['y']-y_pred)**2/(ye_comb)**2,axis=1) + data_dict['chi2_x_boot'] = np.nansum((self.ref_table['x'] - x_pred)**2 / xe_comb**2, axis=1) + data_dict['chi2_y_boot'] = np.nansum((self.ref_table['y'] - y_pred)**2 / ye_comb**2, axis=1) for ff in ['chi2_x_boot', 'chi2_y_boot']: col = Column(np.ones(len(self.ref_table)), name=ff) col.fill(np.nan) From 9beff67b597745c9815386c9ac99db2e65e31254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 24 Apr 2026 18:36:14 -0700 Subject: [PATCH 64/94] Updated outlier_tol default behavior; Added prefix_name for saved files: PREFIX_input.log, MosaicSelfRef/MosaicToRef.pkl, PREFIX_ref_table.pkl; Added n_fit to ref_table --- flystar/align.py | 281 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 190 insertions(+), 91 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 9a0d734..e8a1888 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1,18 +1,19 @@ +import os +import pdb +import copy +import time +import pickle +import warnings +import datetime import numpy as np +from tqdm import tqdm from . import match, transforms, plots, motion_model from .starlists import StarList from .startables import StarTable +from .motion_model import Empty, Fixed from astropy.table import Table, Column, vstack -import datetime -import copy -import os -import pdb -import time -import warnings -import pickle from astropy.utils.exceptions import AstropyUserWarning -from .motion_model import Empty, Fixed -from tqdm import tqdm + class MosaicSelfRef(object): def __init__( @@ -23,7 +24,7 @@ def __init__( iters=2, dr_tol=[1, 1], dm_tol=[2, 1], - outlier_tol=[None, None], + outlier_tol=None, # Transformation parameters trans_class=transforms.PolyTransform, trans_args=[{'order': 2}, {'order': 2}], @@ -45,6 +46,7 @@ def __init__( # Advanced options iter_callback=None, save_path=None, + prefix_name='msr', verbose=True ): """ @@ -89,6 +91,7 @@ def __init__( outlier_tol : list or array The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. + If not provided, will be None for each iteration. trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal @@ -169,6 +172,9 @@ def = None. If not None, then this should contain an array or list of transform save_path : str, optional Path to save the MosaicSelfRef object as a pickle file. + prefix_name : str, optional + Prefix for the file names, including PREFIX_input.log, PREFIX.pkl, PREFIX_ref_table.fits. + verbose : bool or int (0 to 9, inclusive) Controls the verbosity of print statements. (0 least, 9 most verbose). For backwards compatibility, 0 = False, 9 = True. @@ -176,20 +182,20 @@ def = None. If not None, then this should contain an array or list of transform Example ------- - msc = align.MosaicToRef(list_of_starlists, iters=1, + mtr = align.MosaicToRef(list_of_starlists, iters=1, dr_tol=[0.1], dm_tol=[5], outlier_tol=[None], mag_lim=[13, 21], trans_class=transforms.PolyTransform, trans_args=[{'order': 1}], weights='both,std', init_guess_mode='miracle', verbose=False) - msc.fit() + mtr.fit() # Access a list of all the transformation parameters: - trans_list = msc.trans_list + trans_list = mtr.trans_list # Access the fully-combined reference table. - stars_table = msc.ref_table + stars_table = mtr.ref_table # Plot the magnitude of the first star vs. time: # Overplot the mean magnitude. @@ -208,7 +214,7 @@ def = None. If not None, then this should contain an array or list of transform self.iters = iters self.dr_tol = dr_tol self.dm_tol = dm_tol - self.outlier_tol = outlier_tol + # self.outlier_tol = outlier_tol self.trans_args = trans_args self.init_order = init_order self.mag_trans = mag_trans @@ -224,13 +230,13 @@ def = None. If not None, then this should contain an array or list of transform self.init_guess_mode = init_guess_mode self.iter_callback = iter_callback self.save_path = save_path + self.prefix_name = prefix_name self.verbose = verbose - # Setup save_path: - if self.save_path: - assert self.save_path.endswith('.pkl'), 'Save_path must end with .pkl' - if not os.path.exists(os.path.dirname(self.save_path)): - os.makedirs(os.path.dirname(self.save_path)) + if outlier_tol is None: + self.outlier_tol = [None] * self.iters + else: + self.outlier_tol = outlier_tol all_mm_map = motion_model.motion_model_map() if all(isinstance(mm, str) for mm in motion_models): @@ -326,6 +332,45 @@ def fit(self): additional motion_model columns """ + # Setup save_path: + if self.save_path: + if not os.path.exists(os.path.dirname(self.save_path)): + os.makedirs(os.path.dirname(self.save_path)) + + # Save input params + input_filename = f'{self.prefix_name}_input.txt' + input_dict = { + 'ref_index': self.ref_index, + 'iters': self.iters, + 'dr_tol': self.dr_tol, + 'dm_tol': self.dm_tol, + 'outlier_tol': self.outlier_tol, + 'trans_class': self.trans_class, + 'trans_args': self.trans_args, + 'trans_input': self.trans_input, + 'trans_weighting': self.trans_weighting, + 'init_order': self.init_order, + 'init_guess_mode': self.init_guess_mode, + 'calc_trans_inverse': self.calc_trans_inverse, + 'mag_trans': self.mag_trans, + 'mag_lim': self.mag_lim, + 'motion_models': self.motion_models, + 'fixed_params_dict': self.fixed_params_dict, + 'vel_weighting': self.vel_weighting, + 'use_scipy': self.use_scipy, + 'absolute_sigma': self.absolute_sigma, + 'iter_callback': self.iter_callback, + 'save_path': self.save_path, + 'prefix_name': self.prefix_name, + 'verbose': self.verbose + } + if self.save_path is not None: + if not os.path.exists(self.save_path): + os.makedirs(self.save_path) + with open(os.path.join(self.save_path, input_filename), 'w') as file: + for key, value in input_dict.items(): + file.write(f'{key}:\t{value}\n') + ########## # Setup a reference table to store data. It will contain: # x0, y0, m0 -- the running average of positions: 1D @@ -435,12 +480,18 @@ def fit(self): self.ref_table['chi2_x'] = chi2_x self.ref_table['chi2_y'] = chi2_y - if self.save_path: - with open(self.save_path, 'wb') as file: + if self.save_path is not None: + filename = f'{self.prefix_name}.pkl' + with open(os.path.join(self.save_path, filename), 'wb') as file: pickle.dump(self, file) - print('================================') - print(f'Done with fit()') - print('================================') + # Using pickle here because nan in a fits file is auto-converted to a masked value in astropy.io.fits.open() + filename = f'{self.prefix_name}_ref_table.pkl' + with open(os.path.join(self.save_path, filename), 'wb') as file: + pickle.dump(self.ref_table, file) + + print('===================================') + print('========== Done with fit ==========') + print('===================================') return def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_args, nn=None): @@ -713,15 +764,14 @@ def setup_ref_table_from_starlist(self, star_list): new_cols_arr = ['x0', 'y0', 'm0'] orig_cols_arr = ['x', 'y', 'm'] ref_cols = ref_table.keys() - for ii in range(len(new_cols_arr)): - if not new_cols_arr[ii] in ref_cols: + for new_col, orig_col in zip(new_cols_arr, orig_cols_arr): + if new_col not in ref_cols: # Some munging to convert data shape from (N,1) to (N,), # since these are all 1D cols - vals = np.array(ref_table[orig_cols_arr[ii]]).flatten() + vals = np.array(ref_table[orig_col]).flatten() # Now add to ref_table - new_col = Column(vals, name=new_cols_arr[ii]) - ref_table.add_column(new_col) + ref_table.add_column(vals, name=new_col) # Do the same thing for the x0e, y0e, m0e columns, but # ONLY IF THEY ALREADY EXIST IN REF_TABLE! Otherwise, @@ -730,22 +780,20 @@ def setup_ref_table_from_starlist(self, star_list): # work later on. new_err_cols = ['x0_err', 'y0_err', 'm0_err'] orig_err_cols = ['xe', 'ye', 'me'] - for ii in range(len(new_err_cols)): + for new_err_col, orig_err_col in zip(new_err_cols, orig_err_cols): # If the orig col name (e.g. xe) is in the ref_table, but the new col name # (e.g. x0e) doesn't exist, then add the x0e column as a duplicate of xe. - if (orig_err_cols[ii] in ref_cols) & (not new_err_cols[ii] in ref_cols): + if (orig_err_col in ref_cols) and (new_err_col not in ref_cols): # Some munging to convert data shape from (N,1) to (N,), # since these are all 1D cols - vals = np.transpose(np.array(ref_table[orig_err_cols[ii]]))[0] + vals = np.transpose(np.array(ref_table[orig_err_col]))[0] # Now add to ref_table - new_col = Column(vals, name=new_err_cols[ii]) - ref_table.add_column(new_col) - elif (not orig_err_cols[ii] in ref_cols) & (not new_err_cols[ii] in ref_cols): + ref_table.add_column(vals, name=new_err_col) + elif (orig_err_col not in ref_cols) and (new_err_col not in ref_cols): # If neither the orig_err_col or new_err_col is in the ref_table, put in the # new_err_cols as an array of zeros vals = np.zeros(len(ref_table)) - new_col = Column(vals, name=new_err_cols[ii]) - ref_table.add_column(new_col) + ref_table.add_column(vals, name=new_err_col) # Final check: ref_table should now have x0, y0, m0, x0e, y0e, and m0e columns # This is necessary for later steps, even if the columns are just zeros. @@ -756,18 +804,15 @@ def setup_ref_table_from_starlist(self, star_list): # Make sure we have a column to indicate whether each star # CAN BE USED in the transformation. This will be 1D if 'use_in_trans' not in ref_table.colnames: - new_col = Column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') - ref_table.add_column(new_col) + ref_table.add_column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') # Make sure we have a column to indicate whether each star # IS USED in the transformation. This will be 2D if 'used_in_trans' not in ref_table.colnames: - new_col = Column(np.zeros([len(ref_table), 1], dtype=bool), name='used_in_trans') - ref_table.add_column(new_col) + ref_table.add_column(np.zeros([len(ref_table), 1], dtype=bool), name='used_in_trans') # Keep track of whether this is an original reference star. - col_ref_orig = Column(np.ones(len(ref_table), dtype=bool), name='ref_orig') - ref_table.add_column(col_ref_orig) + ref_table.add_column(np.ones(len(ref_table), dtype=bool), name='ref_orig') # Now reset the original values to invalids... they will be filled in # at later times. Preserve content only in the columns: name, x0, y0, m0 (and 0e). # Note that these are all the 1D columsn. @@ -776,7 +821,7 @@ def setup_ref_table_from_starlist(self, star_list): ref_table._set_invalid_list_values(col_name, -1) if 'motion_model_input' not in ref_table.colnames: - ref_table.add_column(Column(np.repeat(self.motion_models[-1].name, len(ref_table)), name='motion_model_input')) + ref_table.add_column(np.repeat(self.motion_models[-1].name, len(ref_table)), name='motion_model_input') # FIXME: Why do we need to set motion_model_used here before fitting? # if 'motion_model_used' not in ref_table.colnames: # # Order self.motion_models by decreasing n_params @@ -784,7 +829,7 @@ def setup_ref_table_from_starlist(self, star_list): # # Save the most complex motion model that can infer the positions with the existing columns. # for mm in sorted_mms: # if all([_ in ref_table.colnames for _ in mm.fit_param_names]) and all([_ in ref_table.colnames for _ in mm.fixed_param_names]): - # ref_table.add_column(Column(np.repeat(mm.name, len(ref_table)), name='motion_model_used')) + # ref_table.add_column(np.repeat(mm.name, len(ref_table)), name='motion_model_used') # break return ref_table @@ -990,7 +1035,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): # if (keep_orig is not None) and (sum(keep_orig) > 0): # Determine motion_model_used for keep_orig stars # Filter possible motion models based on available columns - motion_model_used = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) + motion_model_used, n_fit = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) # motion_models_possible = [] # for mm in self.motion_models: @@ -1014,7 +1059,8 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): # Assign the determined motion models # self.ref_table['motion_model_used'][keep_orig] = motion_model_used - self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U15') + self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') + self.ref_table['n_fit'] = Column(n_fit, name='n_fit', dtype=int) # Replace the originals if we are supposed to keep them fixed. if (keep_orig is not None) and (sum(keep_orig) > 0): @@ -1130,8 +1176,9 @@ def get_ref_list_from_table(self, epoch): # Calculate x, y, xe, ye if 'motion_model_used' not in self.ref_table.colnames: - motion_model_used = determine_motion_model(self.ref_table) - self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U15') + motion_model_used, n_fit = determine_motion_model(self.ref_table) + self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') + self.ref_table['n_fit'] = Column(n_fit, name='n_fit', dtype=int) x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) # else: @@ -1605,7 +1652,7 @@ def __init__( iters=2, dr_tol=[1, 1], dm_tol=[2, 1], - outlier_tol=[None, None], + outlier_tol=None, # Reference behavior (MosiacToRef specific) use_ref_new=False, update_ref_orig=False, @@ -1631,6 +1678,7 @@ def __init__( # Advanced options iter_callback=None, save_path=None, + prefix_name='mtr', verbose=True ): @@ -1782,7 +1830,7 @@ def = None. If not None, then this should contain an array or list of transform Example ------- - msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, + mtr = align.MosaicToRef(my_gaia, list_of_starlists, iters=1, dr_tol=[0.1], dm_tol=[5], outlier_tol=[None], mag_lim=[13, 21], trans_class=transforms.PolyTransform, @@ -1792,13 +1840,13 @@ def = None. If not None, then this should contain an array or list of transform mag_trans=False, weights='both,std', init_guess_mode='miracle', verbose=False) - msc.fit() + mtr.fit() # Access a list of all the transformation parameters: - trans_list = msc.trans_list + trans_list = mtr.trans_list # Access the fully-combined reference table. - stars_table = msc.ref_table + stars_table = mtr.ref_table # Plot the magnitude of the first star vs. time: # Overplot the mean magnitude. @@ -1840,6 +1888,7 @@ def = None. If not None, then this should contain an array or list of transform # Advanced options iter_callback=iter_callback, save_path=save_path, + prefix_name=prefix_name, verbose=verbose ) @@ -1900,28 +1949,70 @@ def fit(self): """ # Create a log file of the parameters used in the fit. + # Setup save_path: + if self.save_path: + if not os.path.exists(os.path.dirname(self.save_path)): + os.makedirs(os.path.dirname(self.save_path)) + + # Save input params + input_filename = f'{self.prefix_name}_input.txt' + input_dict = { + 'iters': self.iters, + 'dr_tol': self.dr_tol, + 'dm_tol': self.dm_tol, + 'outlier_tol': self.outlier_tol, + 'use_ref_new': self.use_ref_new, + 'update_ref_orig': self.update_ref_orig, + 'trans_class': self.trans_class, + 'trans_args': self.trans_args, + 'trans_input': self.trans_input, + 'trans_weighting': self.trans_weighting, + 'init_order': self.init_order, + 'init_guess_mode': self.init_guess_mode, + 'calc_trans_inverse': self.calc_trans_inverse, + 'mag_trans': self.mag_trans, + 'mag_lim': self.mag_lim, + 'ref_mag_lim': self.ref_mag_lim, + 'motion_models': self.motion_models, + 'fixed_params_dict': self.fixed_params_dict, + 'vel_weighting': self.vel_weighting, + 'use_scipy': self.use_scipy, + 'absolute_sigma': self.absolute_sigma, + 'iter_callback': self.iter_callback, + 'save_path': self.save_path, + 'prefix_name': self.prefix_name, + 'verbose': self.verbose + } if self.save_path is not None: - with open(f'{os.path.dirname(self.save_path)}/MosaicToRef_input_params.log', 'w',) as _log: - logger(_log, 'Parameters used for fit: ', self.verbose) - logger(_log, '------------------------- ', self.verbose) - logger(_log, ' dr_tol = ' + str(self.dr_tol), self.verbose) - logger(_log, ' dm_tol = ' + str(self.dm_tol), self.verbose) - logger(_log, ' outlier_tol = ' + str(self.outlier_tol), self.verbose) - logger(_log, ' trans_args = ' + str(self.trans_args), self.verbose) - logger(_log, ' mag_trans = ' + str(self.mag_trans), self.verbose) - logger(_log, ' mag_lim = ' + str(self.mag_lim), self.verbose) - logger(_log, ' ref_mag_lim = ' + str(self.ref_mag_lim), self.verbose) - logger(_log, ' trans_weighting = ' + str(self.trans_weighting), self.verbose) - logger(_log, ' vel_weighting = ' + str(self.vel_weighting), self.verbose) - logger(_log, ' trans_input = ' + str(self.trans_input), self.verbose) - logger(_log, ' trans_class = ' + str(self.trans_class), self.verbose) - logger(_log, ' calc_trans_inverse = ' + str(self.calc_trans_inverse), self.verbose) - logger(_log, ' use_ref_new = ' + str(self.use_ref_new), self.verbose) - logger(_log, ' motion_models = ' + str([mm.name for mm in self.motion_models]), self.verbose) - logger(_log, ' update_ref_orig = ' + str(self.update_ref_orig), self.verbose) - logger(_log, ' init_guess_mode = ' + str(self.init_guess_mode), self.verbose) - logger(_log, ' iter_callback = ' + str(self.iter_callback), self.verbose) - logger(_log, '-------------------------\n', self.verbose) + if not os.path.exists(self.save_path): + os.makedirs(self.save_path) + with open(os.path.join(self.save_path, input_filename), 'w') as file: + for key, value in input_dict.items(): + file.write(f'{key}:\t{value}\n') + + + # if self.save_path is not None: + # with open(f'{os.path.dirname(self.save_path)}/MosaicToRef_input_params.log', 'w',) as _log: + # logger(_log, 'Parameters used for fit: ', self.verbose) + # logger(_log, '------------------------- ', self.verbose) + # logger(_log, ' dr_tol = ' + str(self.dr_tol), self.verbose) + # logger(_log, ' dm_tol = ' + str(self.dm_tol), self.verbose) + # logger(_log, ' outlier_tol = ' + str(self.outlier_tol), self.verbose) + # logger(_log, ' trans_args = ' + str(self.trans_args), self.verbose) + # logger(_log, ' mag_trans = ' + str(self.mag_trans), self.verbose) + # logger(_log, ' mag_lim = ' + str(self.mag_lim), self.verbose) + # logger(_log, ' ref_mag_lim = ' + str(self.ref_mag_lim), self.verbose) + # logger(_log, ' trans_weighting = ' + str(self.trans_weighting), self.verbose) + # logger(_log, ' vel_weighting = ' + str(self.vel_weighting), self.verbose) + # logger(_log, ' trans_input = ' + str(self.trans_input), self.verbose) + # logger(_log, ' trans_class = ' + str(self.trans_class), self.verbose) + # logger(_log, ' calc_trans_inverse = ' + str(self.calc_trans_inverse), self.verbose) + # logger(_log, ' use_ref_new = ' + str(self.use_ref_new), self.verbose) + # logger(_log, ' motion_models = ' + str([mm.name for mm in self.motion_models]), self.verbose) + # logger(_log, ' update_ref_orig = ' + str(self.update_ref_orig), self.verbose) + # logger(_log, ' init_guess_mode = ' + str(self.init_guess_mode), self.verbose) + # logger(_log, ' iter_callback = ' + str(self.iter_callback), self.verbose) + # logger(_log, '-------------------------\n', self.verbose) ########## @@ -2002,7 +2093,7 @@ def fit(self): self.ref_table.detections() ### Drop all stars that have 0 detections. - idx = np.where((self.ref_table['n_detect'] == 0) & (self.ref_table['ref_orig'] == False))[0] + idx = np.where((self.ref_table['n_detect'] == 0))[0] # & (self.ref_table['ref_orig'] == False))[0] if self.verbose: print(' *** Getting rid of {0:d} out of {1:d} junk sources'.format(len(idx), len(self.ref_table))) self.ref_table.remove_rows(idx) @@ -2030,12 +2121,18 @@ def fit(self): self.ref_table['chi2_x'] = chi2_x self.ref_table['chi2_y'] = chi2_y - if self.save_path: - with open(self.save_path, 'wb') as file: + if self.save_path is not None: + filename = f'{self.prefix_name}.pkl' + with open(os.path.join(self.save_path, filename), 'wb') as file: pickle.dump(self, file) - print('================================') - print(f'Done with fit()') - print('================================') + # Using pickle here because nan in a fits file is auto-converted to a masked value in astropy.io.fits.open() + filename = f'{self.prefix_name}_ref_table.pkl' + with open(os.path.join(self.save_path, filename), 'wb') as file: + pickle.dump(self.ref_table, file) + + print('===================================') + print('========== Done with fit ==========') + print('===================================') return # TODO: This is sometimes run on a startable, not a starlist, at least as currently used @@ -2146,6 +2243,8 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None ------- motion_model_used : list List of motion model used for each star + n_fit : list + List of number of number of observations used to fit for each star """ if motion_models is None: @@ -2167,6 +2266,7 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None # Check if values are finite for required columns in possible motion models motion_model_used = [] + n_fit = [] for k in range(len(startable)): for mm, req_col_in_table, req_col_in_dict in motion_models_possible[::-1]: @@ -2174,8 +2274,9 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None if all(np.isfinite(startable[col][k]) for col in req_col_in_table if np.issubdtype(startable[col].dtype, np.number)) \ and all(np.isfinite(fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(fixed_params_dict[col]).dtype, np.number)): motion_model_used.append(mm.name) + n_fit.append(mm.n_params) break - return motion_model_used + return motion_model_used, n_fit def get_all_epochs(t): @@ -2198,7 +2299,7 @@ def get_all_epochs(t): all_epochs.append(t['t'][good,ii]) - all_epochs = np.array(all_epochs) + # all_epochs = np.array(all_epochs) return all_epochs @@ -2250,19 +2351,17 @@ def setup_ref_table_from_starlist(star_list, motion_models): assert len(new_cols_arr) == len(orig_cols_arr) ref_cols = ref_table.keys() - for ii in range(len(new_cols_arr)): - if not new_cols_arr[ii] in ref_cols: + for new_col, orig_col in zip(new_cols_arr, orig_cols_arr): + if new_col not in ref_cols: # Some munging to convert data shape from (N,1) to (N,), # since these are all 1D cols - vals =np.array(ref_table[orig_cols_arr[ii]]).flatten() + vals = np.array(ref_table[orig_col]).flatten() # Now add to ref_table - new_col = Column(vals, name=new_cols_arr[ii]) - ref_table.add_column(new_col) + ref_table.add_column(vals, name=new_col) if 'use_in_trans' not in ref_table.colnames: - new_col = Column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') - ref_table.add_column(new_col) + ref_table.add_column(np.ones(len(ref_table), dtype=bool), name='use_in_trans') # Now reset the original values to invalids... they will be filled in # at later times. Preserve content only in the columns: name, x0, y0, m0 (and 0e). From 14059722f143f4c651b5bf6f24e04467491def81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 24 Apr 2026 18:53:10 -0700 Subject: [PATCH 65/94] Convert combine_lists into mask lists to avoid minus .data; Optimized mask_lists performance in fit_motion_model: only use the desired columns instead of masking --- flystar/startables.py | 161 +++++++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 74 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index cfdbd4b..64b4b0b 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -1,5 +1,5 @@ from astropy.table import Table, Column, MaskedColumn, hstack -from astropy.stats import sigma_clipping +from astropy.stats import sigma_clip from astropy.time import Time from scipy.optimize import curve_fit from tqdm import tqdm @@ -13,7 +13,7 @@ import pandas as pd from flystar.motion_model import Empty, Fixed, Linear from pandas.api.types import is_string_dtype - +from collections.abc import Iterable class StarTable(Table): def __init__(self, *args, ref_list=0, **kwargs): """ @@ -102,9 +102,9 @@ def __init__(self, *args, ref_list=0, **kwargs): # Check if the type and size of the arguments are correct. # Name checking: type and shape if (not isinstance(kwargs['name'], np.ndarray)) or (len(kwargs['name']) != n_stars): - err_msg = "The '{0:s}' argument has to be a numpy array " - err_msg += "with length = {1:d}" - raise TypeError(err_msg.format('name', n_stars)) + err_msg = f"The 'name' argument has to be a numpy array, not {type(kwargs['name'])};" + err_msg += f"Its length should be {n_stars}, not {len(kwargs['name'])}." + raise TypeError(err_msg) # Check all the 2D arrays. arg_tab = ('x', 'y', 'm', 'xe', 'ye', 'me', 'name_in_list') @@ -112,17 +112,17 @@ def __init__(self, *args, ref_list=0, **kwargs): for arg_test in arg_tab: if arg_test in kwargs: if not isinstance(kwargs[arg_test], np.ndarray): - err_msg = "The '{0:s}' argument has to be a numpy array" - raise TypeError(err_msg.format(arg_test)) + err_msg = f"The '{arg_test}' argument has to be a numpy array, not {type(kwargs[arg_test])}" + raise TypeError(err_msg) if kwargs[arg_test].shape != (n_stars, n_lists): - err_msg = "The '{0:s}' argument has to have shape = ({1:d}, {2:d})" - raise TypeError(err_msg.format(arg_test, n_stars, n_lists)) + err_msg = f"The '{arg_test}' argument has to have shape = ({n_stars}, {n_lists})" + raise TypeError(err_msg) # Check that the reference list is specified. if ref_list not in range(n_lists): - err_msg = "The 'ref_list' argument has to be an integer between 0 and {0:d}" - raise IndexError(err_msg.format(n_lists-1)) + err_msg = f"The 'ref_list' argument has to be an integer between 0 and {n_lists-1}" + raise IndexError(err_msg) # We have to have special handling of meta-data (i.e. info that has # dimensions of n_lists). @@ -135,13 +135,12 @@ def __init__(self, *args, ref_list=0, **kwargs): if meta_test in kwargs: if len(kwargs[meta_test]) != n_lists: - err_msg = "The '{0:s}' argument has to have length = {1:d}" - raise ValueError(err_msg.format(meta_test, n_lists)) + err_msg = f"The '{meta_test}' argument has to have length = {n_lists}" + raise ValueError(err_msg) if not all(isinstance(tt, meta_type_test) for tt in kwargs[meta_test]): - err_msg = "The '{0:s}' argument has to be a list of {1:s}." - raise TypeError(err_msg.format(meta_test, str(meta_type_test))) - + err_msg = f"The '{meta_test}' argument has to be a list of {str(meta_type_test)}." + raise TypeError(err_msg) ##### # Create the startable ##### @@ -238,7 +237,7 @@ def _add_list_data_from_starlist(self, starlist): # Meta table entries with a size that matches the n_lists size are the ones # that need a new value. We have to add something... whatever was passed in or None - if isinstance(self.meta[tab_key], collections.abc.Iterable) and (len(self.meta[tab_key]) == self.meta['n_lists']) and (not isinstance(self.meta[tab_key], str)): + if isinstance(self.meta[tab_key], Iterable) and (len(self.meta[tab_key]) == self.meta['n_lists']) and (not isinstance(self.meta[tab_key], str)): # If we find the key in the starlists' meta argument, then add the new values. # Otherwise, add "None". @@ -295,7 +294,7 @@ def _add_list_data_from_keywords(self, **kwargs): for key in self.meta.keys(): # Meta table entries with a size that matches the n_lists size are the ones # that need a new value. We have to add something... whatever was passed in or None - if isinstance(self.meta[key], collections.abc.Iterable) and (len(self.meta[key]) == self.meta['n_lists']) and (not isinstance(self.meta[key], str)): + if isinstance(self.meta[key], Iterable) and (len(self.meta[key]) == self.meta['n_lists']) and (not isinstance(self.meta[key], str)): # If we find the key is the passed in meta argument, then add the new values. # Otherwise, add "None". if 'meta' in kwargs: @@ -396,7 +395,7 @@ def get_starlist(self, list_index): return starlist - def combine_lists_xym(self, weighted_xy=True, weighted_m=True, mask_lists=False, sigma=3): + def combine_lists_xym(self, weighted_xy=True, weighted_m=True, mask_lists=None, sigma=3): """ For x, y and m columns in the table, collapse along the lists direction. For 'x', 'y' this means calculating the average position with @@ -427,7 +426,7 @@ def combine_lists_xym(self, weighted_xy=True, weighted_m=True, mask_lists=False, return def combine_lists(self, col_name_in, weights_col=None, mask_val=None, - mask_lists=False, meta_add=True, ismag=False, sigma=3): + mask_lists=None, meta_add=True, ismag=False, sigma=3): """ For the specified column (col_name_in), collapse along the starlists direction and calculated the average value, with outlier rejection. @@ -444,68 +443,71 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, A flag can be stored in the metadata to record if the average was weighted or not. """ - # Get the array we are going to combine. Make a copy so we don't mod it. - val_2d = copy.deepcopy( self[col_name_in].data ) + if mask_lists is not None: + # Extract list of indices that we want to keep (i.e. not mask) + mask_lists = np.atleast_1d(mask_lists) + assert mask_lists.dtype == int, "mask_lists needs to be a list of integers." + list_indices = np.array([i for i in np.arange(self[col_name_in].data.shape[1]) if i not in mask_lists]) + else: + # Use all indices + list_indices = np.arange(self[col_name_in].data.shape[1]) + + val_2d = np.ma.masked_invalid(self[col_name_in].data[:, list_indices]) if ismag: # Convert to flux. - val_2d = 10**(-val_2d / 2.5) + val_2d = 10**(-0.4 * val_2d) # Make a mask of invalid (NaN) values and a user-specified invalid value. - val_2d = np.ma.masked_invalid(val_2d) + if mask_val: val_2d = np.ma.masked_values(val_2d, mask_val) - if mask_lists is not False: - # Remove a list - if isinstance(mask_lists, list): - if all(isinstance(item, int) for item in mask_lists): - val_2d.mask[:, mask_lists] = True - - # Throw a warning if mask_lists is not a list - if not isinstance(mask_lists, list): - raise RuntimeError('mask_lists needs to be a list.') + # Figure out which ones are outliers. Returns a masked array. + if sigma: + # with warnings.catch_warnings(): + # warnings.filterwarnings('ignore', category=RuntimeWarning) + val_2d_clip = sigma_clip(val_2d, sigma=sigma, maxiters=5, axis=1) + else: + val_2d_clip = val_2d # Decide if we are going to have weights (before we # do the expensive sigma clipping routine). Note that # if we have only 1 column to average, then we can't do weighting. if (weights_col and weights_col in self.colnames) and (val_2d.shape[1] > 1): - err_2d = self[weights_col].data + err_2d = np.ma.masked_invalid(self[weights_col].data[:, list_indices]) if ismag: # Convert to flux error - err_2d = err_2d * val_2d * np.log(10) / 2.5 + err_2d = 0.4 * np.log(10) * val_2d * err_2d + + # Unify masks + unified_mask = val_2d_clip.mask | err_2d.mask + val_2d_clip.mask = unified_mask + err_2d.mask = unified_mask - np.seterr(divide='ignore') - wgt_2d = np.ma.masked_invalid(1.0 / err_2d**2) - np.seterr(divide='warn') + # Inverse variance weights minimize the propagated uncertainty + wgt_2d = np.ma.masked_invalid(1. / err_2d**2) + + # Calculate the weighted mean and uncertainty + avg = np.ma.average(val_2d_clip, weights=wgt_2d, axis=1) + std = np.ma.sqrt(1 / np.ma.sum(wgt_2d, axis=1)) if meta_add: self.meta[col_name_in + '0'] = 'weighted' else: wgt_2d = None + # Calculate the weighted mean and uncertainty + avg = np.ma.mean(val_2d_clip, axis=1) + std = np.ma.std(val_2d_clip, axis=1) / np.sqrt(len(list_indices)) # Standard error of the mean + if meta_add: self.meta[col_name_in + '0'] = 'not_weighted' - # Figure out which ones are outliers. Returns a masked array. - if sigma: - warnings.filterwarnings('ignore', category=RuntimeWarning) - val_2d_clip = sigma_clipping.sigma_clip(val_2d, sigma=sigma, maxiters=5, axis=1) - warnings.filterwarnings('default', category=RuntimeWarning) - else: - val_2d_clip = val_2d - - # Calculate the (weighted) mean and standard deviation along - # the N_lists direction (axis=1). - if wgt_2d is not None: - avg = np.ma.average(val_2d_clip, weights=wgt_2d, axis=1) - std = np.sqrt(np.ma.average((val_2d_clip.T - avg).T**2, weights=wgt_2d, axis=1)) - else: - avg = np.ma.mean(val_2d_clip, axis=1) - std = np.ma.std(val_2d_clip, axis=1) + # FIXME: What does this part do? # To Do: bring the previous uncertainties of stars that are detected # in only one input frame. if (weights_col and weights_col in self.colnames) and (val_2d.shape[1] > 1): - mask_for_singles = ((~np.isnan(val_2d_clip)).sum(axis=1)==1) + mask_for_singles = ((np.isfinite(val_2d_clip)).sum(axis=1)==1) std[mask_for_singles]=np.nanmean(err_2d[mask_for_singles], axis=1) # Save off our new AVG and STD into new columns with shape (N_stars). @@ -513,14 +515,19 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, col_name_std = col_name_in + '0_err' if ismag: - std = (2.5 / np.log(10)) * std / avg + std = 2.5 / np.log(10) * std / avg avg = -2.5 * np.ma.log10(avg) + + # Fill mask with nan or inf + avg = avg.filled(np.nan) + std = std.filled(np.inf) + if col_name_avg in self.colnames: - self[col_name_avg] = avg.data - self[col_name_std] = std.data + self[col_name_avg] = avg + self[col_name_std] = std else: - self.add_column(Column(data=avg.data, name=col_name_avg)) - self.add_column(Column(data=std.data, name=col_name_std)) + self.add_column(Column(data=avg, name=col_name_avg)) + self.add_column(Column(data=std, name=col_name_std)) return @@ -533,7 +540,7 @@ def detections(self): if 'n_detect' in self.colnames: self['n_detect'] = n_detect else: - self.add_column(Column(n_detect), name='n_detect') + self.add_column(Column(data=n_detect, name='n_detect')) return @@ -542,7 +549,7 @@ def fit_motion_model( motion_models=None, fixed_params_dict=None, weighting='var', - use_scipy=False, + use_scipy=True, absolute_sigma=True, select_stars=None, bootstrap=0, @@ -667,11 +674,17 @@ def fit_motion_model( ########################### # Prepare data for fitting N_stars = len(self) - x_data = np.ma.masked_invalid(self['x'].data, copy=True) - y_data = np.ma.masked_invalid(self['y'].data, copy=True) - xe_data = np.ma.masked_invalid(self['xe'].data, copy=True) if 'xe' in self.colnames else None - ye_data = np.ma.masked_invalid(self['ye'].data, copy=True) if 'ye' in self.colnames else None - # Mask out close to 0 values + N_times = self['x'].data.shape[1] + if mask_lists is not None: + list_indices = np.array([i for i in range(N_times) if i not in mask_lists]) + else: + list_indices = np.arange(N_times) + x_data = np.ma.masked_invalid(self['x'].data[:, list_indices], copy=True) + y_data = np.ma.masked_invalid(self['y'].data[:, list_indices], copy=True) + xe_data = np.ma.masked_invalid(self['xe'].data[:, list_indices], copy=True) if 'xe' in self.colnames else None + ye_data = np.ma.masked_invalid(self['ye'].data[:, list_indices], copy=True) if 'ye' in self.colnames else None + + # Mask out close to 0 values to avoid infinite weights if xe_data is not None: xe_data.mask[np.isclose(xe_data, 0)] = True if ye_data is not None: @@ -694,18 +707,18 @@ def fit_motion_model( if np.ndim(ye_data) == 1: ye_data = ye_data[:, np.newaxis] - if mask_lists is not None: - x_data.mask[:, mask_lists] = True - y_data.mask[:, mask_lists] = True - xe_data.mask[:, mask_lists] = True - ye_data.mask[:, mask_lists] = True + # if mask_lists is not None: + # x_data.mask[:, mask_lists] = True + # y_data.mask[:, mask_lists] = True + # xe_data.mask[:, mask_lists] = True + # ye_data.mask[:, mask_lists] = True # t_data: 2d array with shape (N_stars, N_epochs) # t0: 1d array with shape (N_stars,) if 't' in self.colnames: - t_data = copy.deepcopy(self['t'].data) + t_data = copy.deepcopy(self['t'].data[:, list_indices]) else: - t_data = copy.deepcopy(np.array(self.meta['list_times'])) + t_data = copy.deepcopy(np.array(self.meta['list_times']))[list_indices] t_data = np.broadcast_to(t_data, x_data.shape) # Add default t0 if not provided in fixed_params_dict From 938dbb26ecb701e01f0e3d7d3f4b05548284006b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 24 Apr 2026 18:54:15 -0700 Subject: [PATCH 66/94] Remove main function --- flystar/tests/test_align.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index ca82077..5b4fc66 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1446,9 +1446,9 @@ def make_fake_starlists_poly1_par(seed=-1): return (xy_trans, mag_trans) -if __name__ == '__main__': - import pickle - import matplotlib.pyplot as plt +# if __name__ == '__main__': + # import pickle + # import matplotlib.pyplot as plt # with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: # my_gaia = pickle.load(f) # with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: From 7012551b19787e165b02ca6aaccab2ef4591845b Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Sun, 26 Apr 2026 16:50:11 -0700 Subject: [PATCH 67/94] Added verbose control over done with fit message --- flystar/align.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 466270c..3f58ba9 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -494,9 +494,10 @@ def fit(self): with open(os.path.join(self.save_path, filename), 'wb') as file: pickle.dump(self.ref_table, file) - print('===================================') - print('========== Done with fit ==========') - print('===================================') + if self.verbose > 0: + print('===================================') + print('========== Done with fit ==========') + print('===================================') return def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_args, nn=None): @@ -746,7 +747,6 @@ def setup_ref_table_from_starlist(self, star_list): col_arrays[new_col_name] = star_list[col_name].data else: new_col_data = star_list[col_name].data[:, None] - # new_col_data = np.array([star_list[col_name].data]).T col_arrays[new_col_name] = new_col_data # Use the columns from the ref list to make the ref_table. @@ -2136,9 +2136,10 @@ def fit(self): with open(os.path.join(self.save_path, filename), 'wb') as file: pickle.dump(self.ref_table, file) - print('===================================') - print('========== Done with fit ==========') - print('===================================') + if self.verbose > 0: + print('===================================') + print('========== Done with fit ==========') + print('===================================') return # TODO: This is sometimes run on a startable, not a starlist, at least as currently used From 66dc63177d89e33e5586c924b5421daea7e12b96 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Sun, 26 Apr 2026 17:31:41 -0700 Subject: [PATCH 68/94] Revert get all epochs to numpy array; Changed default mask_lists to None instead of False --- flystar/align.py | 4 ++-- flystar/tests/test_startable.py | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 3f58ba9..0abe28a 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -467,7 +467,7 @@ def fit(self): # Add times into ref_table meta data # complete_times = np.array([np.unique(col[~np.isnan(col)])[0] for col in self.ref_table['t'].T]) all_epochs = get_all_epochs(self.ref_table) - self.ref_table.meta['list_times'] = all_epochs + self.ref_table.meta['list_times'] = list(all_epochs) # Update chi2 values in ref table, as motion_model_used may have changed x_inferred, y_inferred, _, _ = self.ref_table.infer_positions(all_epochs) @@ -2306,7 +2306,7 @@ def get_all_epochs(t): all_epochs.append(t['t'][good,ii]) - # all_epochs = np.array(all_epochs) + all_epochs = np.array(all_epochs) return all_epochs diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index 64e0681..e743b74 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -121,14 +121,14 @@ def test_combine_lists(): # Test 5: make sure mask_list is working. ########## # Test 5ai: Non-masked, weighted_m=False - tt.combine_lists_xym(weighted_xy=True, weighted_m=False, mask_lists=False) + tt.combine_lists_xym(weighted_xy=True, weighted_m=False, mask_lists=None) assert np.arange(1.8, 38, 4) == pytest.approx(tt['x0'].data) assert np.arange(1.8, 38, 4) == pytest.approx(tt['y0'].data) avg_m = -2.5 * np.log10((4 * 10**-0.4 + 1)/5) assert avg_m * np.ones(10) == pytest.approx(tt['m0'].data) # Test 5aii: Non-masked, weighted_m=True - tt.combine_lists_xym(weighted_xy=True, weighted_m=True, mask_lists=False) + tt.combine_lists_xym(weighted_xy=True, weighted_m=True, mask_lists=None) assert np.arange(1.8, 38, 4) == pytest.approx(tt['x0'].data) assert np.arange(1.8, 38, 4) == pytest.approx(tt['y0'].data) avg_m_weight = 0.9391744564422395 @@ -147,9 +147,10 @@ def test_combine_lists(): assert np.ones(10) == pytest.approx(tt['m0'].data) # Test 5c: Things that should break the code. - with pytest.raises(RuntimeError): - t.combine_lists_xym(weighted_xy=True, weighted_m=True, mask_lists=np.arange(2)) - with pytest.raises(RuntimeError): + # with pytest.raises(RuntimeError): + # This would not break the code anymore + # t.combine_lists_xym(weighted_xy=True, weighted_m=True, mask_lists=np.arange(2)) + with pytest.raises(AssertionError): t.combine_lists_xym(weighted_xy=True, weighted_m=True, mask_lists=True) return @@ -556,3 +557,7 @@ def make_tiny_star_table(): xe=xe_in, ye=ye_in, me=me_in) return startable + + +if __name__ == "__main__": + test_fit_motion_models() From 0faeb879b9ebe5bc8a84c8b2b2d86ea00703eab7 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Sun, 26 Apr 2026 19:00:21 -0700 Subject: [PATCH 69/94] Fix dr calculation in match --- flystar/match.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flystar/match.py b/flystar/match.py index c4cad4a..8d13439 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -323,7 +323,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): x2_nn = x2[i2_tmp] y2_nn = y2[i2_tmp] m2_nn = m2[i2_tmp] - dr = np.abs(x1_nn - x2_nn, y1_nn - y2_nn) + dr = np.hypot(x1_nn - x2_nn, y1_nn - y2_nn) dm = np.abs(m1_nn - m2_nn) if dm_tol is not None: From abbf98de883da8cf417db0413ab66eb3a6ddf01e Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Sun, 26 Apr 2026 19:00:48 -0700 Subject: [PATCH 70/94] Fix xe and ye when not provided --- flystar/startables.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 64b4b0b..bbe7e4f 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -681,8 +681,8 @@ def fit_motion_model( list_indices = np.arange(N_times) x_data = np.ma.masked_invalid(self['x'].data[:, list_indices], copy=True) y_data = np.ma.masked_invalid(self['y'].data[:, list_indices], copy=True) - xe_data = np.ma.masked_invalid(self['xe'].data[:, list_indices], copy=True) if 'xe' in self.colnames else None - ye_data = np.ma.masked_invalid(self['ye'].data[:, list_indices], copy=True) if 'ye' in self.colnames else None + xe_data = np.ma.masked_invalid(self['xe'].data[:, list_indices], copy=True) if 'xe' in self.colnames else np.ones_like(x_data) + ye_data = np.ma.masked_invalid(self['ye'].data[:, list_indices], copy=True) if 'ye' in self.colnames else np.ones_like(y_data) # Mask out close to 0 values to avoid infinite weights if xe_data is not None: From 594657a25a04e13d965e0d21cb84fd2f7c9fa2b7 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 28 Apr 2026 18:31:33 -0700 Subject: [PATCH 71/94] Changed plotly scatter to scattergl for faster plotting --- flystar/plots.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flystar/plots.py b/flystar/plots.py index 16ec8b1..71ba07d 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -3937,7 +3937,7 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, label='star if m is not None: m = np.asarray(m) hover_template += '
m: %{customdata:.2f}' - fig_data = go.Scatter( + fig_data = go.Scattergl( x=x, y=y, mode='markers', @@ -3950,7 +3950,7 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, label='star name=label ) else: - fig_data = go.Scatter( + fig_data = go.Scattergl( x=x, y=y, mode='markers', From 01f3e7ea4a29e5a7181382afb0226f636c797d7e Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Wed, 29 Apr 2026 18:32:23 -0700 Subject: [PATCH 72/94] Add symbol control in plotly_stars --- flystar/plots.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flystar/plots.py b/flystar/plots.py index 71ba07d..eaf1400 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -3893,7 +3893,7 @@ def __call__(self, event): return -def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, label='starlist', fig=None, figsize=(600, 600), show=True): +def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='circle', label='starlist', fig=None, figsize=(600, 600), show=True): """Plot stars with plotly in interactive html format Parameters @@ -3910,6 +3910,8 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, label='star Color of marker, either a string (e.g., 'red') or rgba array, by default 'C0' alpha : float, optional Opacity of marker color, by default 0.7 + symbol : str, optional + Marker symbol, by default 'circle' label : str, optional Label for the star list, by default 'starlist' fig : plotly.graph_objects.Figure object, optional From 0655987c66ad74c46def2bf6d5d6e06e9eebd7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 30 Apr 2026 17:15:02 -0700 Subject: [PATCH 73/94] Changed to png with dpi=300 for faster viewing; Fixed marker symbol for plotly_stars; Added show_plot control for quiver residual plots --- flystar/plots.py | 111 +++++++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 53 deletions(-) diff --git a/flystar/plots.py b/flystar/plots.py index eaf1400..8ee8a13 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -80,11 +80,11 @@ def trans_positions(ref, ref_mat, starlist, starlist_mat, xlim=None, ylim=None, plt.axis('equal') if save_path: - plt.savefig(save_path) + plt.savefig(save_path, dpi=300) if show_plot: plt.show() - - plt.close() + else: + plt.close() return @@ -137,9 +137,9 @@ def pos_diff_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, xlim=None, fi plt.xlim([xlim[0], xlim[1]]) plt.legend() if fileName != None: - plt.savefig(root + fileName[3:8] + 'Positions_hist_' + '.png') + plt.savefig(root + fileName[3:8] + 'Positions_hist_' + '.png', dpi=300) else: - plt.savefig(root + 'Positions_hist.png') + plt.savefig(root + 'Positions_hist.png', dpi=300) plt.close() return @@ -274,7 +274,7 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None deg_freedom) plt.annotate(txt, xy=(0.25,0.74), xycoords='figure fraction', color='black') xstr2 = 'With Outliers' - xstr3 = '{0} with +/- {1}+ sigma'.format(len(ratio_x) - len(good[0]), outlier) + xstr3 = '{0} with ± {1}+ sigma'.format(len(ratio_x) - len(good[0]), outlier) plt.annotate(xstr2, xy=(0.29, 0.83), xycoords='figure fraction', color='black') plt.annotate(xstr3, xy=(0.25, 0.80), xycoords='figure fraction', color='black') @@ -294,9 +294,9 @@ def pos_diff_err_hist(ref_mat, starlist_mat, transform, nbins=25, bin_width=None plt.xlim([xlim[0], xlim[1]]) plt.legend() if fileName != None: - plt.savefig(root + fileName[3:8] + 'Positions_err_ratio_hist_' + '.png') + plt.savefig(root + fileName[3:8] + 'Positions_err_ratio_hist_' + '.png', dpi=300) else: - plt.savefig(root + 'Positions_err_ratio_hist.png') + plt.savefig(root + 'Positions_err_ratio_hist.png', dpi=300) plt.close() return @@ -332,9 +332,9 @@ def mag_diff_hist(ref_mat, starlist_mat, bins=25, fileName=None, root='./'): plt.ylabel('N stars') plt.title('Magnitude Difference for matched stars') if fileName != None: - plt.savefig(root + fileName[3:8] + 'Magnitude_hist_' + '.png') + plt.savefig(root + fileName[3:8] + 'Magnitude_hist_' + '.png', dpi=300) else: - plt.savefig(root + 'Magnitude_hist.png') + plt.savefig(root + 'Magnitude_hist.png', dpi=300) plt.close() return @@ -433,17 +433,17 @@ def pos_diff_quiver(ref_mat, starlist_mat, qscale=10, keyLength=0.2, xlim=None, if sigma: if fileName != None: plt.title('(Reference - Transformed Starlist positions) / sigma') - plt.savefig(root + fileName[3:8] + 'Positions_quiver_sigma_' + '.png') + plt.savefig(root + fileName[3:8] + 'Positions_quiver_sigma_' + '.png', dpi=300) else: plt.title('(Reference - Transformed Starlist positions) / sigma') - plt.savefig(root + 'Positions_quiver_sigma.png') + plt.savefig(root + 'Positions_quiver_sigma.png', dpi=300) else: if fileName != None: plt.title('Reference - Transformed Starlist positions') - plt.savefig(root + fileName[3:8] + 'Positions_quiver_' + '.png') + plt.savefig(root + fileName[3:8] + 'Positions_quiver_' + '.png', dpi=300) else: plt.title('Reference - Transformed Starlist positions') - plt.savefig(root + 'Positions_quiver.png') + plt.savefig(root + 'Positions_quiver.png', dpi=300) plt.close() return @@ -488,7 +488,7 @@ def vpd(ref, starlist_trans, vxlim, vylim): plt.axis([vxlim[0], vylim[1], vylim[0], vylim[1]]) plt.title('Reference and Transformed Proper Motions') plt.legend() - plt.savefig('Transformed_velocities.png') + plt.savefig('Transformed_velocities.png', dpi=300) return @@ -564,7 +564,7 @@ def vel_diff_err_hist(ref_mat, starlist_mat, nbins=25, bin_width=None, vxlim=Non plt.title('Vy Residuals, Matched') if vylim != None: plt.xlim([vylim[0], vylim[1]]) - plt.savefig('Vel_err_ratio_dist.png') + plt.savefig('Vel_err_ratio_dist.png', dpi=300) return @@ -622,7 +622,7 @@ def residual_vpd(ref_mat, starlist_trans_mat, pscale=None): plt.xlabel('Reference_vx - Transformed_vx (reference coords)') plt.ylabel('Reference_vy - Transformed_vy (reference coords)') plt.title('Proper Motion Residuals') - plt.savefig('resid_vpd.png') + plt.savefig('resid_vpd.png', dpi=300) return @@ -980,7 +980,7 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', plt.ylabel('Number of Epochs') plt.subplots_adjust(wspace=0.4, hspace=0.4, right=0.95, top=0.95) - plt.savefig(rootDir+'plots/plotStarRadial_' + starName + '.png') + plt.savefig(rootDir+'plots/plotStarRadial_' + starName + '.png', dpi=300) plt.show() title = rootDir.split('/')[-2] @@ -988,10 +988,10 @@ def plotStar(starNames, rootDir='./', align='align/align_d_rms_1000_abs_t', if Nstars == 1: plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) - plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') + plt.savefig(rootDir+'plots/plotStar_' + starName + '.png', dpi=300) else: plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) - plt.savefig(rootDir+'plots/plotStar_all.png') + plt.savefig(rootDir+'plots/plotStar_all.png', dpi=300) plt.show() plt.show() @@ -1058,7 +1058,7 @@ def plot_pm_error(tab, save_path=None): ax.set_ylabel('PM Error (mas/yr)') plt.tight_layout() if save_path is not None: - plt.savefig(save_path) + plt.savefig(save_path, dpi=300) plt.show() return @@ -1070,7 +1070,7 @@ def plot_mag_error(tab, save_path=None): ax.set_ylabel('Mag Error (mag)') plt.tight_layout() if save_path is not None: - plt.savefig(save_path) + plt.savefig(save_path, dpi=300) plt.show() return @@ -1131,7 +1131,7 @@ def plot_mean_residuals_by_epoch(tab): return -def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=None, save_path=None): +def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=None, save_path=None, show_plot=True): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) @@ -1162,7 +1162,8 @@ def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=Non unit=unit, scale=scale, plotlim=plotlim, - save_path=f'{save_path}/Quiver_Residual_{ee}.pdf' if save_path else None + show_plot=show_plot, + save_path=f'{save_path}/Quiver_Residual_{ee}.png' if save_path else None ) # Building up average dr for a set of stars. @@ -1207,7 +1208,7 @@ def plot_quiver_residuals_all_epochs(tab, unit='arcsec', scale=None, plotlim=Non return -def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', scale=None, plotlim=None, scale_orig=None, cte_fit=None, mlim=15, save_path=None): +def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', scale=None, plotlim=None, scale_orig=None, cte_fit=None, mlim=15, show_plot=True, save_path=None): # Keep track of the residuals for averaging. dr_good = np.zeros(len(tab), dtype=float) @@ -1234,14 +1235,14 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s xt_mod, yt_mod, good_idx, ref_idx, 'Epoch {0:d}'.format(ee), - unit=unit, scale=scale, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_{ee}.pdf' if save_path else None) + unit=unit, scale=scale, plotlim=plotlim, show_plot=show_plot, save_path=f'{save_path}/Quiver_Residual_{ee}.png' if save_path else None) plot_quiver_residuals_orig(tab['x'][:, ee], tab['y'][:, ee], xt_mod, yt_mod, good_idx, ref_idx, tab['x_orig'][:, ee], tab['y_orig'][:, ee], da, 'Epoch {0:d}'.format(ee), - scale=scale_orig, plotlim=plotlim, save_path=f'{save_path}/Quiver_Residual_Orig_{ee}.pdf' if save_path else None) + scale=scale_orig, plotlim=plotlim, show_plot=show_plot, save_path=f'{save_path}/Quiver_Residual_Orig_{ee}.png' if save_path else None) plot_mag_scatter(tab['m'][:, ee], tab['m0'], tab['m0_err'], @@ -1251,7 +1252,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s good_idx, ref_idx, 'Epoch {0:d}'.format(ee), da=da, xorig=tab['x_orig'][:, ee], yorig=tab['y_orig'][:, ee], - cte_fit=cte_fit, mlim=mlim, save_path=f'{save_path}/Mag_Scatter_{ee}.pdf' if save_path else None) + cte_fit=cte_fit, mlim=mlim, show_plot=show_plot, save_path=f'{save_path}/Mag_Scatter_{ee}.png' if save_path else None) plot_y_scatter(tab['m'][:, ee], tab['m0'], tab['m0_err'], @@ -1261,7 +1262,7 @@ def plot_quiver_residuals_with_orig_all_epochs(tab, trans_list, unit='arcsec', s good_idx, ref_idx, 'Epoch {0:d}'.format(ee), da=da, xorig=tab['x_orig'][:, ee], yorig=tab['y_orig'][:, ee], - cte_fit=cte_fit, mlim=mlim, save_path=f'{save_path}/Y_Scatter_{ee}.pdf' if save_path else None) + cte_fit=cte_fit, mlim=mlim, show_plot=show_plot, save_path=f'{save_path}/Y_Scatter_{ee}.png' if save_path else None) # plot_quiver_residuals_orig_angle_xy(tab['x'][:, ee], tab['y'][:, ee], # xt_mod, yt_mod, @@ -1805,7 +1806,7 @@ def T_line(m, a, b): def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, - unit='pixel', scale=None, plotlim=None, save_path=None): + unit='pixel', scale=None, plotlim=None, save_path=None, show_plot=True): """ unit : str 'pixel' or 'arcsec' @@ -1858,18 +1859,21 @@ def plot_quiver_residuals(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, title, ax.set_ylim(-1 * plotlim, plotlim) plt.tight_layout() if save_path: - plt.savefig(save_path) - plt.show() + plt.savefig(save_path, dpi=300) + if show_plot: + plt.show() + else: + plt.close() - str_fmt = 'Residuals (mean, std): dx = {0:7.3f} +/- {1:7.3f} {5:s} dy = {2:7.3f} +/- {3:7.3f} {5:s} for {4:s} stars' + str_fmt = '{0:s}: Residuals (mean, std): dx = {1:7.3f} ± {2:7.3f} {6:s} dy = {3:7.3f} ± {4:7.3f} {6:s} for {5:s} stars' if len(ref_idx) > 1: - print(str_fmt.format(dx[good_idx][ref_idx].mean(), dx[good_idx][ref_idx].std(), + print(str_fmt.format(title, dx[good_idx][ref_idx].mean(), dx[good_idx][ref_idx].std(), dy[good_idx][ref_idx].mean(), dy[good_idx][ref_idx].std(), 'REF', unit2)) else: - print(str_fmt.format(dx[good_idx][ref_idx].mean(), 0.0, + print(str_fmt.format(title, dx[good_idx][ref_idx].mean(), 0.0, dy[good_idx][ref_idx].mean(), 0.0, 'REF', unit2)) - print(str_fmt.format(dx[good_idx].mean(), dx[good_idx].std(), + print(str_fmt.format(title, dx[good_idx].mean(), dx[good_idx].std(), dy[good_idx].mean(), dy[good_idx].std(), 'GOOD', unit2)) @@ -2080,7 +2084,7 @@ def plot_quiver_residuals_orig(x_t, y_t, x_ref, y_ref, good_idx, ref_idx, ax.set_ylim(-1 * plotlim, plotlim) plt.tight_layout() if save_path: - plt.savefig(save_path) + plt.savefig(save_path, dpi=300) plt.show() plt.pause(1) @@ -2423,7 +2427,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo plt.tick_params(labelsize=20, direction='in', right=True, top=True) - plt.savefig(str(filter)+'_chi2_dist.png', dpi=400) + plt.savefig(str(filter)+'_chi2_dist.png', dpi=300) chi2red_x = x / Ndof chi2red_y = y / Ndof @@ -2760,7 +2764,7 @@ def plot_chi2_dist_mag_per_filter(tab, Ndetect, mlim=40, n_bins=30, xlim=40, fil plt.tick_params(labelsize=20, direction='in', right=True, top=True) - plt.savefig(str(filter)+'_chi2_dist_mag.png', dpi=400) + plt.savefig(str(filter)+'_chi2_dist_mag.png', dpi=300) print('Mean reduced chi^2: (Ndetect = {0:d} of {1:d})'.format(len(idx), len(tab))) fmt = ' {0:s} = {1:.1f} for N_detect and {2:.1f} for all' @@ -3179,10 +3183,10 @@ def rs(x): if Nstars == 1: plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) - # plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') + # plt.savefig(rootDir+'plots/plotStar_' + starName + '.png', dpi=300) else: plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) - # plt.savefig(rootDir+'plots/plotStar_all.png') + # plt.savefig(rootDir+'plots/plotStar_all.png', dpi=300) plt.show() plt.show() @@ -3602,13 +3606,13 @@ def rs(x): if Nstars == 1: plt.subplots_adjust(wspace=0.4, hspace=0.4, left = 0.15, bottom = 0.1, right=0.9, top=0.9) - # plt.savefig(rootDir+'plots/plotStar_' + starName + '.png') + # plt.savefig(rootDir+'plots/plotStar_' + starName + '.png', dpi=300) else: plt.subplots_adjust(wspace=0.6, hspace=0.6, left = 0.08, bottom = 0.05, right=0.95, top=0.90) - # plt.savefig(rootDir+'plots/plotStar_all.png') + # plt.savefig(rootDir+'plots/plotStar_all.png', dpi=300) plt.show() if save_name is not None: - plt.savefig(save_name + '.png') + plt.savefig(save_name + '.png', dpi=300) plt.show() return @@ -3815,9 +3819,9 @@ def plot_sky(stars_tab, if saveplot: plt.show(block=0) if (center_star != None): - plt.savefig('plot_sky_' + center_star + '.png') + plt.savefig('plot_sky_' + center_star + '.png', dpi=300) else: - plt.savefig('plot_sky.png') + plt.savefig('plot_sky.png', dpi=300) else: plt.show() @@ -3893,7 +3897,7 @@ def __call__(self, event): return -def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='circle', label='starlist', fig=None, figsize=(600, 600), show=True): +def plotly_stars(x, y, m=None, marker_size=3, color=None, alpha=0.7, symbol='circle', label='starlist', fig=None, figsize=(700, 700), show=True): """Plot stars with plotly in interactive html format Parameters @@ -3906,8 +3910,8 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='cir magnitude to be added in hover label, by default None marker_size : int, optional Size of marker, by default 10 - color : str or array, optional - Color of marker, either a string (e.g., 'red') or rgba array, by default 'C0' + color : array or str, optional + Color of marker, either a string (e.g., 'red') or rgba array, by default None alpha : float, optional Opacity of marker color, by default 0.7 symbol : str, optional @@ -3917,7 +3921,7 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='cir fig : plotly.graph_objects.Figure object, optional Figure if the stars are to be added to an exisiting plot, by default None figsize : tuple, optional - Figure size, by default (600, 600) + Figure size, by default (700, 700) show : bool, optional Show figure or not, by default True @@ -3931,7 +3935,6 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='cir y = np.asarray(y) hover_template = 'x: %{x:.3f}
y: %{y:.3f}' - if isinstance(color, str) and color.startswith('C') and color[1:].isdigit(): color = mcolors.to_rgba(color, alpha=alpha) color = f'rgba({color[0]*255}, {color[1]*255}, {color[2]*255}, {color[3]:.2f})' @@ -3945,7 +3948,8 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='cir mode='markers', marker=dict( size=marker_size, - color=color + color=color, + symbol=symbol ), hovertemplate=hover_template, customdata=m, # Add magnitude to hover data @@ -3958,7 +3962,8 @@ def plotly_stars(x, y, m=None, marker_size=3, color='C0', alpha=0.7, symbol='cir mode='markers', marker=dict( size=marker_size, - color=color + color=color, + symbol=symbol ), hovertemplate=hover_template, name=label From 33c1dfabe65c75cfbe7e05735acf519a33d8d3cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 30 Apr 2026 17:19:32 -0700 Subject: [PATCH 74/94] Added required_fixed_param_names and optional_fixed_params for motion models --- flystar/motion_model.py | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 6a48a80..e9b778f 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -6,6 +6,8 @@ import warnings class MotionModel(ABC): + name = "MotionModel" + # Fit paramters: Shared fit parameters fit_param_names = [] @@ -15,13 +17,14 @@ class MotionModel(ABC): # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. fixed_param_names = [] + required_fixed_param_names = [] + optional_fixed_params = {} + fixed_meta_data = [] # Non-fit paramters: Custom paramters that will not be fit. # These parameters should be derived from the fit parameters and # they must exist as a variable on the model object - optional_param_names = [] - name = "MotionModel" def __init__(self, *args, **kwargs): """ @@ -232,9 +235,12 @@ def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced return chi2x, chi2y class Empty(MotionModel): + name = "Empty" fit_param_names = [] fixed_param_names = [] - name = "Empty" + required_fixed_param_names = [] + optional_fixed_params = {} + # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) @@ -334,14 +340,15 @@ class Fixed(MotionModel): """ A non-moving motion model for a star on the sky. """ - + name = "Fixed" fit_param_names = ['x0','y0'] fixed_param_names = [] + required_fixed_param_names = [] + optional_fixed_params = {} + # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) - name = "Fixed" - def __init__(self, **kwargs): # Must call after setting parameters. # This checks for proper parameter formatting. @@ -489,12 +496,14 @@ class Linear(MotionModel): """ A 2D linear motion model for a star on the sky. """ + name = "Linear" fit_param_names = ['x0', 'vx', 'y0', 'vy'] - fixed_param_names = ['t0'] + required_fixed_param_names = ['t0'] + optional_fixed_params = {} + fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) - name = "Linear" def __init__(self, **kwargs): # Must call after setting parameters. @@ -717,9 +726,11 @@ class Acceleration(MotionModel): """ A 2D accelerating motion model for a star on the sky. """ - fit_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] - fixed_param_names = ['t0'] name = "Acceleration" + fit_param_names = ['x0', 'vx0', 'ax', 'y0', 'vy0', 'ay'] + required_fixed_param_names = ['t0'] + optional_fixed_params = {} + fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) @@ -885,9 +896,12 @@ class Parallax(MotionModel): Optional PA is counterclockwise offset of the image y-axis from North. Optional obs parameter describes observer location, default is 'earth'. """ - fit_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] - fixed_param_names = ['t0', 'ra', 'dec', 'pa', 'obsLocation'] name = "Parallax" + fit_param_names = ['x0', 'vx', 'y0', 'vy', 'pi'] + required_fixed_param_names = ['t0', 'ra', 'dec'] + optional_fixed_params = {'pa': 0., 'obsLocation': 'earth'} + fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) + # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) From 0a9c5ce47fec4639ec2aeafb224df23fd2246bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 30 Apr 2026 17:21:41 -0700 Subject: [PATCH 75/94] Update fixed params dict construction in fit_motion_model: If not specified in fixed_params_dict, will try to look for them in the table columns; For optional fixed params, will use the default value if not provided --- flystar/startables.py | 62 ++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index bbe7e4f..85de68b 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -734,20 +734,6 @@ def fit_motion_model( t0 = fixed_params_dict['t0'] - # Prepare fixed_params_dict for each star - # This avoids checking types and slicing inside the fitting loop - fixed_params_stars = [{} for _ in range(N_stars)] - # Identify array parameters (length N_stars) and scalar parameters - array_params = {k: v for k, v in fixed_params_dict.items() if np.ndim(v) > 0 and len(v) == N_stars} - scalar_params = {k: v for k, v in fixed_params_dict.items() if k not in array_params} - - # Construct list of dicts for each star - # Using list comprehension for speed - fixed_params_stars = [ - {**scalar_params, **{k: v[i] for k, v in array_params.items()}} - for i in range(N_stars) - ] - # Apply mask_value if provided if mask_value: x_data = np.ma.masked_values(x_data, mask_value) @@ -775,6 +761,7 @@ def fit_motion_model( for i in range(N_stars) ]) + ########################### ####### Determine MM ###### ########################### @@ -809,11 +796,56 @@ def fit_motion_model( if 'Parallax' in mm_used and 'obsLocation' not in fixed_params_dict: fixed_params_dict['obsLocation'] = 'earth' + + ############################ + # Prepare Fixed Parameters # + ############################ + # If required fixed params in self but not provided in fixed_params_dict, add them to fixed_params_dict + motion_model_used = [all_mm_map[name] for name in np.unique(self['motion_model_used'])] + raise_key_error = False + missing_params = [] + for mm in motion_model_used: + # Check required fixed parameters + for param in mm.required_fixed_param_names: + if param not in fixed_params_dict: + if param in self.colnames: + fixed_params_dict[param] = self[param].data + else: + raise_key_error = True + missing_params.append(f"'{param}'") + + # Check optional fixed parameters + # Set to default value if not provided in fixed_params_dict or in self + for param, value in mm.optional_fixed_params.items(): + if param not in fixed_params_dict: + if param in self.colnames: + fixed_params_dict[param] = self[param].data + else: + fixed_params_dict[param] = value + + if raise_key_error: + raise KeyError(f"fit_motion_model: Missing required fixed parameter(s) for the motion models used: {', '.join(missing_params)}! Please provide them in fixed_params_dict or as columns in the table.") + + + # Prepare fixed_params_dict for each star + # This avoids checking types and slicing inside the fitting loop + fixed_params_stars = [{} for _ in range(N_stars)] + # Identify array parameters (length N_stars) and scalar parameters + array_params = {k: v for k, v in fixed_params_dict.items() if np.ndim(v) > 0 and len(v) == N_stars} + scalar_params = {k: v for k, v in fixed_params_dict.items() if k not in array_params} + + # Construct list of dicts for each star + # Using list comprehension for speed + fixed_params_stars = [ + {**scalar_params, **{k: v[i] for k, v in array_params.items()}} + for i in range(N_stars) + ] + + ############################ ####### Prepare Table ###### ############################ # Fill table with all possible motion model parameter names as new columns. - motion_model_used = [all_mm_map[name] for name in np.unique(self['motion_model_used'])] new_col_list = motion_model.motion_model_param_names(motion_model_used, with_errors=True, with_fixed=False) new_col_list += ['chi2_x', 'chi2_y', 'n_params'] From d8269901f6026b944cdfb3b2ee262b8a56c62728 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Thu, 30 Apr 2026 17:31:39 -0700 Subject: [PATCH 76/94] Unify run_fit parameters for motion models --- flystar/motion_model.py | 59 ++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index e9b778f..378eac6 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -77,10 +77,13 @@ def run_fit( absolute_sigma=True, params_guess=None, fill_value=np.nan, + return_chi2=False, verbose=True ): # Run a single fit (used both for overall fit + bootstrap iterations) - return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf), np.nan, np.nan + if return_chi2: + return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf), np.nan, np.nan + return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf) def calc_weights(self, xe, ye, weighting='var'): if weighting=='std': @@ -279,15 +282,15 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) def run_fit( - self, t, x, y, xe, ye, - fixed_params_dict=None, - weighting='var', - use_scipy=True, - absolute_sigma=True, - fill_value=np.nan, - params_guess=None, - return_chi2=False, - verbose=True + self, t, x, y, xe, ye, + fixed_params_dict=None, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, + fill_value=np.nan, + return_chi2=False, + verbose=True ): """Fit stellar motion parameters @@ -430,15 +433,15 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return x, y, x_err, y_err def run_fit( - self, t, x, y, xe, ye, - fixed_params_dict=None, - weighting='var', - use_scipy=True, - absolute_sigma=True, - fill_value=np.nan, - params_guess=None, - return_chi2=False, - verbose=True + self, t, x, y, xe, ye, + fixed_params_dict=None, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, + fill_value=np.nan, + return_chi2=False, + verbose=True ): if verbose and (not use_scipy): warnings.warn("Fixed model has no non-scipy fitter option. Running with scipy.") @@ -588,15 +591,15 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): return x, y, x_err, y_err def run_fit( - self, t, x, y, xe, ye, - fixed_params_dict=None, - weighting='var', - use_scipy=True, - absolute_sigma=True, - fill_value=np.nan, - params_guess=None, - return_chi2=False, - verbose=True + self, t, x, y, xe, ye, + fixed_params_dict=None, + weighting='var', + use_scipy=True, + absolute_sigma=True, + params_guess=None, + fill_value=np.nan, + return_chi2=False, + verbose=True ): if fixed_params_dict is None: fixed_params_dict = {} From 6caf11e78c9e5b230e03aabf843d93d61e5188f3 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Thu, 30 Apr 2026 19:49:25 -0700 Subject: [PATCH 77/94] Added star name option in plotly stars --- flystar/plots.py | 57 ++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/flystar/plots.py b/flystar/plots.py index 8ee8a13..7213174 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -3897,7 +3897,7 @@ def __call__(self, event): return -def plotly_stars(x, y, m=None, marker_size=3, color=None, alpha=0.7, symbol='circle', label='starlist', fig=None, figsize=(700, 700), show=True): +def plotly_stars(x, y, m=None, star_name=None, marker_size=3, color=None, alpha=0.7, symbol='circle', label='starlist', fig=None, figsize=(700, 700), show=True): """Plot stars with plotly in interactive html format Parameters @@ -3908,6 +3908,8 @@ def plotly_stars(x, y, m=None, marker_size=3, color=None, alpha=0.7, symbol='cir y positions m : array-like, optional magnitude to be added in hover label, by default None + star_name : array-like, optional + Star names to be added in hover label, by default None marker_size : int, optional Size of marker, by default 10 color : array or str, optional @@ -3939,35 +3941,34 @@ def plotly_stars(x, y, m=None, marker_size=3, color=None, alpha=0.7, symbol='cir color = mcolors.to_rgba(color, alpha=alpha) color = f'rgba({color[0]*255}, {color[1]*255}, {color[2]*255}, {color[3]:.2f})' + customdata = [] + if star_name is not None: + hover_template = 'name: %{customdata[0]}
' + hover_template + customdata.append(star_name) + if m is not None: m = np.asarray(m) - hover_template += '
m: %{customdata:.2f}' - fig_data = go.Scattergl( - x=x, - y=y, - mode='markers', - marker=dict( - size=marker_size, - color=color, - symbol=symbol - ), - hovertemplate=hover_template, - customdata=m, # Add magnitude to hover data - name=label - ) - else: - fig_data = go.Scattergl( - x=x, - y=y, - mode='markers', - marker=dict( - size=marker_size, - color=color, - symbol=symbol - ), - hovertemplate=hover_template, - name=label - ) + m_idx = len(customdata) + hover_template += f'
m: %{{customdata[{m_idx}]:.2f}}' + customdata.append(m) + + if customdata: + customdata = np.column_stack(customdata) + hover_template += '' + + fig_data = go.Scattergl( + x=x, + y=y, + mode='markers', + marker=dict( + size=marker_size, + color=color, + symbol=symbol + ), + customdata=customdata, + hovertemplate=hover_template, + name=label + ) if fig is None: fig = go.Figure(data=[fig_data]) From 62f92484ed2b34e25237e3c1760714a1d4e6d391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 22 May 2026 05:31:58 -0700 Subject: [PATCH 78/94] Utilized scipy curve_fit fvec to accelerate chi2 calculation; Added support for 2d time arrays (if length==len(stars), assumes a corresponding relation instead of returning a 2D) --- flystar/align.py | 8 +-- flystar/motion_model.py | 125 +++++++++++++++++++++++++++++++--------- 2 files changed, 102 insertions(+), 31 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 0abe28a..ecaff32 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1285,7 +1285,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot 1) Draw full-size bootstrap w/replacement sample from reference stars in ref_table and re-calculate the transformations for each epoch 2) Apply transformation to all stars in each epoch - If calc_vel_in_bootstraps: + If calc_vel_in_bootstrap: 3) For each star, draw full-size boostrap sample w/replacement from epochs 4) Calculate proper motion for each star using resampled epochs @@ -1631,9 +1631,9 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot self.ref_table.add_column(col) if verbose: - print('===============================') - print('Done with bootstrap') - print('===============================') + print('===================================') + print('======= Done with bootstrap =======') + print('===================================') if update_errors: self.ref_table['xe_list'] = self.ref_table['xe'] diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 378eac6..46c9b2e 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -222,7 +222,28 @@ def fit( return params, param_errs - def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced=False): + # def calc_chi2(self, dt, x, y, x_wt, y_wt, popt_x, popt_y, reduced=False, parallax=False): + # X_mat_t = np.vander(dt, 2) + # residual_x = x - X_mat_t @ popt_x + # residual_y = y - X_mat_t @ popt_y + + # W_mat_x = np.diag(x_wt) + # W_mat_y = np.diag(y_wt) + + # chi2_x = residual_x.T @ W_mat_x @ residual_x + # chi2_y = residual_y.T @ W_mat_y @ residual_y + + # if reduced: + # if len(dt) == self.n_params: + # return np.inf, np.inf + # if not parallax: + # degree_of_freedom = len(x) - self.n_params + # else: + # degree_of_freedom = 2*len(x) - len(self.fit_param_names) + # chi2_x, chi2_y = chi2_x / degree_of_freedom, chi2_y / degree_of_freedom + # return chi2_x, chi2_y + + def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced=False, parallax=False): """ Get the chi^2 value for the input motion model parameters and data. """ @@ -232,9 +253,11 @@ def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced if reduced: if len(t) == self.n_params: return np.inf, np.inf - else: + if not parallax: degree_of_freedom = len(x) - self.n_params - chi2x, chi2y = chi2x / degree_of_freedom, chi2y / degree_of_freedom + else: + degree_of_freedom = 2*len(x) - len(self.fit_param_names) + chi2x, chi2y = chi2x / degree_of_freedom, chi2y / degree_of_freedom return chi2x, chi2y class Empty(MotionModel): @@ -276,10 +299,24 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): Predicted position (and uncertainties) of Empty model, shape (N_times,) """ self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) + t = np.atleast_1d(t) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + + N_stars = fit_params.shape[0] + N_times = len(t) + + if N_times == N_stars or N_times == 1 or N_stars == 1: + # Assume each time corresponds to each star, so N_times = 1 + x = np.full(N_stars, np.nan) + y = np.full(N_stars, np.nan) + else: + x = np.full((N_stars, N_times), np.nan) + y = np.full((N_stars, N_times), np.nan) + if fit_param_errs is None: - return np.full_like(t, np.nan), np.full_like(t, np.nan) - return np.full_like(t, np.nan), np.full_like(t, np.nan), np.full_like(t, np.inf), np.full_like(t, np.inf) + return x, y + return x, y, np.full_like(x, np.inf), np.full_like(y, np.inf) def run_fit( self, t, x, y, xe, ye, @@ -373,9 +410,7 @@ def model_fit(self, dt, x0): x : array-like Predicted positions, shape (N_times,) if scalar x0, else (N_stars, N_times) """ - dt = np.atleast_1d(dt) - x0 = np.asarray(x0) - return np.broadcast_to(x0[:, np.newaxis], (x0.shape[0], dt.shape[0])) if x0.ndim > 0 else np.full_like(dt, x0) + return x0 + np.zeros_like(x0) * dt def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """Predicted positions (and uncertainties, if fit_param_errs is provided) at time t of Fixed model. @@ -402,13 +437,22 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) - N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_stars = fit_params.shape[0] N_times = len(t) x0, y0 = fit_params.T # Each shape (N_stars,) + # FIXME: Do we want this assumption? + if N_times == N_stars: + # Assume each time corresponds to each star, so N_times = 1 + dt = t[:, np.newaxis] # Shape (N_stars, 1) + N_times = 1 + else: + # Else, calculate each time for each star + dt = t[np.newaxis, :] - np.zeros(N_stars)[:, np.newaxis] # Shape (N_stars, N_times) + # Return results in (N_stars, N_times) shape - x = self.model_fit(t, x0) # Shape (N_stars, N_times) - y = self.model_fit(t, y0) # Shape (N_stars, N_times) + x = self.model_fit(t, x0[:, np.newaxis]) # Shape (N_stars, N_times) + y = self.model_fit(t, y0[:, np.newaxis]) # Shape (N_stars, N_times) if N_stars == 1 or N_times == 1: # If only one star, return flattened arrays @@ -560,13 +604,19 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) - N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_stars = fit_params.shape[0] N_times = len(t) x0, vx, y0, vy = fit_params.T # Each shape (N_stars,) t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) - dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + if N_times == N_stars: + # Assume each time corresponds to each star, so N_times = 1 + dt = t - t0 # Shape (N_stars,) + dt = dt[:, np.newaxis] # Shape (N_stars, 1) + N_times = 1 + else: + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) x = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis]) # Shape (N_stars, N_times) y = self.model_fit(dt, y0[:, np.newaxis], vy[:, np.newaxis]) # Shape (N_stars, N_times) @@ -636,8 +686,8 @@ def run_fit( params_guess = [x.mean(), 0., y.mean(), 0.] if use_scipy: - x_opt, x_cov = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:2]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[2:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) + x_opt, x_cov, x_info, x_msg, x_ier = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:2]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma, full_output=True) + y_opt, y_cov, y_info, y_msg, y_ier = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[2:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma, full_output=True) x0, vx = x_opt y0, vy = y_opt x0e, vxe = np.sqrt(x_cov.diagonal()) @@ -645,7 +695,9 @@ def run_fit( params = np.array([x0, vx, y0, vy]) param_errors = np.array([x0e, vxe, y0e, vye]) if return_chi2: - chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + # chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + chi2_x = np.sum(x_info['fvec']**2) + chi2_y = np.sum(y_info['fvec']**2) return params, param_errors, chi2_x, chi2_y else: return params, param_errors @@ -792,13 +844,19 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) - N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + N_stars = fit_params.shape[0] N_times = len(t) x0, vx0, ax, y0, vy0, ay = fit_params.T # Each shape (N_stars,) t0 = np.atleast_1d(fixed_params_dict['t0']) # Shape (N_stars,) or (1,) - dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + if N_times == N_stars: + # Assume each time corresponds to each star, so N_times = 1 + dt = t - t0 # Shape (N_stars,) + dt = dt[:, np.newaxis] # Shape (N_stars, 1) + N_times = 1 + else: + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) x = self.model_fit(dt, x0[:, np.newaxis], vx0[:, np.newaxis], ax[:, np.newaxis]) # Shape (N_stars, N_times) y = self.model_fit(dt, y0[:, np.newaxis], vy0[:, np.newaxis], ay[:, np.newaxis]) # Shape (N_stars, N_times) @@ -876,8 +934,8 @@ def run_fit( t_span = t[idx_last] - t[idx_first] params_guess = [x.mean(), (x[idx_last] - x[idx_first]) / t_span, 0., y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.] - x_opt, x_cov = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma) - y_opt, y_cov = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma) + x_opt, x_cov, x_info, x_msg, x_ier = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma, return_full=True) + y_opt, y_cov, y_info, y_msg, y_ier = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma, return_full=True) x0, vx0, ax = x_opt y0, vy0, ay = y_opt x0e, vx0e, axe = np.sqrt(x_cov.diagonal()) @@ -886,7 +944,9 @@ def run_fit( params = np.array([x0, vx0, ax, y0, vy0, ay]) param_errors = np.array([x0e, vx0e, axe, y0e, vy0e, aye]) if return_chi2: - chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + # chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + chi2_x = np.sum(x_info['fvec']**2) + chi2_y = np.sum(y_info['fvec']**2) return params, param_errors, chi2_x, chi2_y else: return params, param_errors @@ -904,7 +964,7 @@ class Parallax(MotionModel): required_fixed_param_names = ['t0', 'ra', 'dec'] optional_fixed_params = {'pa': 0., 'obsLocation': 'earth'} fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) - + # Number of fit parameters/required observations in each direction n_params = int((len(fit_param_names) + 1) / 2) @@ -1022,7 +1082,8 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t = np.atleast_1d(t) fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) - N_stars = fit_params.shape[0] if fit_params.ndim > 1 else 1 + + N_stars = fit_params.shape[0] N_times = len(t) x0, vx, y0, vy, pi = fit_params.T # Each shape (N_stars,) @@ -1037,7 +1098,15 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if not isinstance(obsLocation, str): obsLocation = np.unique(obsLocation)[0] - dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + + if N_times == N_stars: + # Assume each time corresponds to each star, so N_times = 1 + dt = t - t0 # Shape (N_stars,) + dt = dt[:, np.newaxis] # Shape (N_stars, 1) + N_times = 1 + else: + dt = t[np.newaxis, :] - t0[:, np.newaxis] # Shape (N_stars, N_times) + t_mjd = Time(t, format='decimalyear', scale='utc').mjd # Shape (N_times,) self.pvec = self.calc_parallax_vector(t_mjd, ra, dec, pa=pa, obsLocation=obsLocation) # Shape (N_stars, 2, N_times) x, y = self.model_fit(dt, x0[:, np.newaxis], vx[:, np.newaxis], y0[:, np.newaxis], vy[:, np.newaxis], pi[:, np.newaxis]) # Shape (N_stars, N_times) @@ -1133,10 +1202,10 @@ def run_fit( sigma_x = 1.0 / np.sqrt(x_wt) sigma_y = 1.0 / np.sqrt(y_wt) - popt, pcov = curve_fit( + popt, pcov, infodict, mesg, ier = curve_fit( self._model_fit, t - t0, np.hstack([x, y]), p0=params_guess, sigma=np.hstack([sigma_x, sigma_y]), - absolute_sigma=absolute_sigma + absolute_sigma=absolute_sigma, full_output=True ) x0, vx, y0, vy, pi = popt x0_err, vx_err, y0_err, vy_err, pi_err = np.sqrt(pcov.diagonal()) @@ -1145,7 +1214,9 @@ def run_fit( param_errors = np.array([x0_err, vx_err, y0_err, vy_err, pi_err]) if return_chi2: - chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + # chi2_x, chi2_y = self.calc_chi2(t, x, y, xe, ye, params, fixed_params_dict) + chi2_x = np.sum(infodict['fvec'][:len(t)]**2) + chi2_y = np.sum(infodict['fvec'][len(t):]**2) return params, param_errors, chi2_x, chi2_y else: return params, param_errors From 3f2ce00033c506e7c6f2d9fa7404d9f9df4555cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Fri, 22 May 2026 05:33:22 -0700 Subject: [PATCH 79/94] Fixed infer positions dimension handling --- flystar/startables.py | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 85de68b..976f646 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -1003,21 +1003,10 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): times = np.atleast_1d(times) N_times = len(times) - if (N_stars > 1) and (N_times > 1): - x_pred = np.full((N_stars, N_times), fill_value, dtype=float) - y_pred = np.full((N_stars, N_times), fill_value, dtype=float) - xe_pred = np.full((N_stars, N_times), np.inf, dtype=float) - ye_pred = np.full((N_stars, N_times), np.inf, dtype=float) - elif N_stars==1: - x_pred = np.full(N_times, fill_value, dtype=float) - y_pred = np.full(N_times, fill_value, dtype=float) - xe_pred = np.full(N_times, np.inf, dtype=float) - ye_pred = np.full(N_times, np.inf, dtype=float) - else: - x_pred = np.full(N_stars, fill_value, dtype=float) - y_pred = np.full(N_stars, fill_value, dtype=float) - xe_pred = np.full(N_stars, np.inf, dtype=float) - ye_pred = np.full(N_stars, np.inf, dtype=float) + x_pred = np.full((N_stars, N_times), fill_value, dtype=float) + y_pred = np.full((N_stars, N_times), fill_value, dtype=float) + xe_pred = np.full((N_stars, N_times), np.inf, dtype=float) + ye_pred = np.full((N_stars, N_times), np.inf, dtype=float) # Calculate the dictionary of {motion_model: indices of stars with this motion model} for faster access during prediction unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) @@ -1058,14 +1047,34 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): fixed_params[param_name] = fixed_params[param_name][0] # Predict positions + # shape = (N_stars_this_model, N_times) or (N_stars_this_model,) if N_times=1 or (N_times,) if N_stars_this_model=1 or scalar x, y, xe, ye = motion_model_instance.model( times, fit_params, fit_param_errs, fixed_params ) + if N_stars==1 and N_times > 1: + # Reshape (N_times,) to (1, N_times) + x = x[np.newaxis, :] + y = y[np.newaxis, :] + xe = xe[np.newaxis, :] + ye = ye[np.newaxis, :] + elif N_times==1 and N_stars > 1: + # Reshape (N_stars,) to (N_stars, 1) + x = x[:, np.newaxis] + y = y[:, np.newaxis] + xe = xe[:, np.newaxis] + ye = ye[:, np.newaxis] + x_pred[unique_index] = x y_pred[unique_index] = y xe_pred[unique_index] = xe ye_pred[unique_index] = ye + if N_stars==1 or N_times==1: + # Reshape back to 1D array or scalar + x_pred = x_pred.flatten() + y_pred = y_pred.flatten() + xe_pred = xe_pred.flatten() + ye_pred = ye_pred.flatten() return x_pred, y_pred, xe_pred, ye_pred From b41896d4f391979daa1ad122852a0bd49eefc81f Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 16 Jun 2026 16:39:28 -0700 Subject: [PATCH 80/94] Fix wrong parameter name in curve_fit --- flystar/motion_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 46c9b2e..57f5b78 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -934,8 +934,8 @@ def run_fit( t_span = t[idx_last] - t[idx_first] params_guess = [x.mean(), (x[idx_last] - x[idx_first]) / t_span, 0., y.mean(), (y[idx_last] - y[idx_first]) / t_span, 0.] - x_opt, x_cov, x_info, x_msg, x_ier = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma, return_full=True) - y_opt, y_cov, y_info, y_msg, y_ier = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma, return_full=True) + x_opt, x_cov, x_info, x_msg, x_ier = curve_fit(self.model_fit, dt, x, p0=np.array(params_guess[:3]), sigma=1/x_wt**0.5, absolute_sigma=absolute_sigma, full_output=True) + y_opt, y_cov, y_info, y_msg, y_ier = curve_fit(self.model_fit, dt, y, p0=np.array(params_guess[3:]), sigma=1/y_wt**0.5, absolute_sigma=absolute_sigma, full_output=True) x0, vx0, ax = x_opt y0, vy0, ay = y_opt x0e, vx0e, axe = np.sqrt(x_cov.diagonal()) From 2f64d7da3896ee7b500a1da4af85ca3ffc8450a7 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 16 Jun 2026 16:43:58 -0700 Subject: [PATCH 81/94] Added starlist_vertices function to find briteN stars only in overlapping regions; Added briteN control in MosaicSelfRef and MosaicToRef --- flystar/align.py | 98 +++++++++++++++++++++++++++++-------- flystar/match.py | 123 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 186 insertions(+), 35 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index ecaff32..d9127e0 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1,4 +1,5 @@ import os +import gc import pdb import copy import time @@ -6,6 +7,7 @@ import warnings import datetime import numpy as np +import matplotlib.pyplot as plt from tqdm import tqdm from . import match, transforms, plots, motion_model from .starlists import StarList @@ -19,12 +21,14 @@ class MosaicSelfRef(object): def __init__( self, list_of_starlists, + starlist_vertices=None, # Alignment parameters ref_index=0, iters=2, dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=None, + briteN=None, # Transformation parameters trans_class=transforms.PolyTransform, trans_args=[{'order': 2}, {'order': 2}], @@ -72,6 +76,11 @@ def __init__( Optional Parameters ------------------- + starlist_vertices : list or array + A list or array of polygon vertices coordinates for each starlist. Initial guess will only use stars in overlapping regions defined by these polygons. + If not provided, will be None and will use minimum bounding box of the starlist positions. + Shape of (N_lists, N_vertices, 2) in the format of [[x1, y1], [x2, y2], ..., [xN, yN]] for each starlist, by default None + ref_index : int The index of the reference epoch. (default = 0). Note that this is the reference list only for the first iteration. Subsequent iterations will utilize the sigma-clipped @@ -92,6 +101,10 @@ def __init__( The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. If not provided, will be None for each iteration. + + briteN : int + If init_guess_mode is 'miracle', this is the number of brightest stars to use in the miracle match. + Default is min(50, len(star_list)). trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal @@ -210,11 +223,12 @@ def = None. If not None, then this should contain an array or list of transform """ self.star_lists = list_of_starlists + self.starlist_vertices = starlist_vertices self.ref_index = ref_index self.iters = iters self.dr_tol = dr_tol self.dm_tol = dm_tol - # self.outlier_tol = outlier_tol + self.briteN = briteN self.trans_args = trans_args self.init_order = init_order self.mag_trans = mag_trans @@ -233,6 +247,12 @@ def = None. If not None, then this should contain an array or list of transform self.prefix_name = prefix_name self.verbose = verbose + if self.starlist_vertices is not None: + import shapely + self.reflist_polygon = shapely.make_valid(shapely.Polygon(self.starlist_vertices[self.ref_index])) + else: + self.reflist_polygon = None + # Check x and y are 1d for ii in range(len(self.star_lists)): if self.star_lists[ii]['x'].ndim != 1 or self.star_lists[ii]['y'].ndim != 1: @@ -505,6 +525,8 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar Given some reference list of positions, loop through all the starlists transform and match them. """ + if self.starlist_vertices is not None: + import shapely for ii in range(len(self.star_lists)): if self.verbose > 0: msg = ' Matching catalog {0} / {1} with {2:d} stars' @@ -537,15 +559,19 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar # Only use "use_in_trans" reference stars, even for initial guessing. keepers = ref_list['use_in_trans'] trans = trans_initial_guess( - ref_list[keepers], - star_list_orig_trim, - self.trans_args[0], - motion_models=self.motion_models, - fixed_params_dict=self.fixed_params_dict, + ref_list=ref_list[keepers], + star_list=star_list_orig_trim, + trans_args=self.trans_args[0], mode=self.init_guess_mode, order=self.init_order, - verbose=self.verbose, - mag_trans=self.mag_trans + briteN=self.briteN, + polygon_reflist=self.reflist_polygon, + polygon_starlist=shapely.Polygon(self.starlist_vertices[ii]) if self.starlist_vertices is not None else None, + buffer=dr_tol, + motion_models=self.motion_models, + fixed_params_dict=self.fixed_params_dict, + mag_trans=self.mag_trans, + verbose=self.verbose ) if np.isnan(trans.px.parameters).any() or np.isnan(trans.py.parameters).any(): raise ValueError(f"Initial transformation contains NaN parameters. trans.px={trans.px.parameters}, trans.py={trans.py.parameters}.") @@ -652,7 +678,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar ## Make plot, if desired if self.save_path: plots.trans_positions(ref_list, ref_list[idx_ref], star_list_T, star_list_T[idx_lis], - save_path=f"{os.path.dirname(self.save_path)}/Transformed_Positions_{star_list_T['t'][0]}.png", + save_path=os.path.join(self.save_path, f"Transformed_Positions_{ii}_{star_list_T['t'][0]}.png"), show_plot=False) ### Update the observed (but transformed) values in the reference table. self.update_ref_table_from_list(star_list, star_list_T, ii, idx_ref, idx_lis, idx2) @@ -669,6 +695,10 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar keep_orig=None self.update_ref_table_aggregates(keep_orig=keep_orig) + # Update ref list polygon + if self.starlist_vertices is not None: + self.reflist_polygon = shapely.make_valid(self.reflist_polygon.union(shapely.Polygon(self.starlist_vertices[ii]))) + # Print out some metrics if self.verbose > 0: msg1 = ' {0:2s} (mean and std) for {1:10s}: {2:8.5f} +/- {3:8.5f}' @@ -687,7 +717,7 @@ def match_and_transform(self, ref_mag_lim, dr_tol, dm_tol, outlier_tol, trans_ar print(msg1.format('dm', 'trans stars', dm_u.mean(), dm_u.std())) print(' Used {0:d} trans ref stars.'.format(len(used))) print(' Dropped {0:d} matches after transform.'.format(len(used) - len(used_good))) - + gc.collect() # clean up memory after each iteration return def setup_trans_info(self): @@ -1155,7 +1185,7 @@ def match_lists(self, dr_tol, dm_tol): dr_tol=dr_tol, dm_tol=dm_tol, verbose=self.verbose) if self.verbose > 0: - fmt = 'Matched {0:5d} out of {1:5d} stars in list {2:2d} [dr = {3:7.4f} +/- {4:6.4f}, dm = {5:5.2f} +/- {6:4.2f}' + fmt = 'Matched {0:5d} out of {1:5d} stars in list {2:2d} [dr = {3:7.4f} ± {4:6.4f}, dm = {5:5.2f} ± {6:4.2f}]' print(fmt.format(len(idx_lis), len(star_list_T), ii, dr.mean(), dr.std(), dm.mean(), dm.std())) copy_over_values(self.ref_table, self.star_lists[ii], star_list_T, ii, idx_ref, idx_lis) @@ -1654,11 +1684,13 @@ def __init__( self, ref_list, list_of_starlists, + starlist_vertices=None, # Alignment parameters iters=2, dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=None, + briteN=None, # Reference behavior (MosiacToRef specific) use_ref_new=False, update_ref_orig=False, @@ -1713,6 +1745,11 @@ def __init__( Optional Parameters ---------- + starlist_vertices : list or array + A list or array of polygon vertices coordinates for each starlist. Initial guess will only use stars in overlapping regions defined by these polygons. + If not provided, will be None and will use minimum bounding box of the starlist positions. + Shape of (N_lists, N_vertices, 2) in the format of [[x1, y1], [x2, y2], ..., [xN, yN]] for each starlist, by default None + iters : int The number of iterations used in the matching and transformation. TO DO: INNER/OUTER? @@ -1728,6 +1765,10 @@ def __init__( The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. + briteN : int + If init_guess_mode is 'miracle', this is the number of brightest stars to use in the miracle match. + Default is min(50, len(star_list)). + use_ref_new : boolean Each pass, new stars are matched and added to the ref_table. However, we don't necessarily want to use these in the reference frame in subsequent passes. @@ -1867,12 +1908,14 @@ def = None. If not None, then this should contain an array or list of transform """ super().__init__( list_of_starlists, + starlist_vertices=starlist_vertices, # Alignment parameters ref_index=-1, iters=iters, dr_tol=dr_tol, dm_tol=dm_tol, outlier_tol=outlier_tol, + briteN=briteN, # Transformation parameters trans_class=trans_class, trans_args=trans_args, @@ -3403,14 +3446,18 @@ def trans_initial_guess( ref_list, star_list, trans_args, + mode='miracle', + order=1, + briteN=None, + n_req_match=3, + polygon_reflist=None, + polygon_starlist=None, + buffer=0, motion_models=None, fixed_params_dict=None, - mode='miracle', ignore_contains='star', - verbose=True, - n_req_match=3, mag_trans=True, - order=1 + verbose=True ): """ Take two starlists and perform an initial matching and transformation. @@ -3444,7 +3491,10 @@ def trans_initial_guess( else: # Default is miracle match. - briteN = min(50, len(star_list)) + if briteN is None: + briteN = min(50, len(star_list)) + else: + assert (type(briteN) == int) and (briteN > 0), f'briteN must be a positive integer, but got {briteN}.' # If there are velocities in the reference list, use them. # We assume velocities are in the same units as the positions. @@ -3461,11 +3511,21 @@ def trans_initial_guess( xref, yref, mref, - briteN + briteN, + polygon_reflist, + polygon_starlist, + buffer=buffer ) - assert len(x1m) >= n_req_match, \ - f'Failed to find more than {n_req_match} (only {len(x1m)}) matches, giving up.' + if len(x1m) < n_req_match: + fig, ax = plt.subplots() + ax.scatter(star_list['x'], star_list['y'], s=1, label='star_list') + ax.scatter(xref, yref, s=1, label='ref_list') + ax.legend() + ax.set_aspect('equal') + plt.show() + raise AssertionError(f'Failed to find more than {n_req_match} (only {len(x1m)}) matches, giving up.') + if verbose > 1: print('Initial_guess: {0:d} stars matched between starlist and reference list'.format(N)) diff --git a/flystar/match.py b/flystar/match.py index 8d13439..b3a4271 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -1,19 +1,20 @@ +import copy +import itertools import numpy as np +import matplotlib.pyplot as plt from . import starlists, transforms, startables from collections import Counter -from scipy.spatial import KDTree as KDT from astropy.table import Column -import itertools -import copy +from scipy.spatial import KDTree as KDT -def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, - Nbins_vmax=200, Nbins_angle=360,verbose=False): +def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, + polygon1=None, polygon2=None, buffer=0, Nbins_vmax=200, Nbins_angle=360,verbose=False): """ Take two input starlists and select the brightest stars from each. Then perform a triangle matching algorithm along the lines of Groth 1986. - + For every possible triangle (combination of 3 stars) in a starlist, compute the ratio of two sides and the angle between those sides. These quantities are invariant under scale and rotation transformations. @@ -33,17 +34,108 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, print( ' miracle_match_briteN: ') print( ' miracle_match_briteN: ') + xin1 = np.array(xin1) + yin1 = np.array(yin1) + min1 = np.array(min1) + xin2 = np.array(xin2) + yin2 = np.array(yin2) + min2 = np.array(min2) + + if polygon1 is not None and polygon2 is not None: + import shapely + points1 = shapely.points(xin1, yin1) + points2 = shapely.points(xin2, yin2) + overlap = polygon1.intersection(polygon2).buffer(buffer) + in_poly1 = shapely.contains(overlap, points1) + in_poly2 = shapely.contains(overlap, points2) + xin1 = xin1[in_poly1] + yin1 = yin1[in_poly1] + min1 = min1[in_poly1] + xin2 = xin2[in_poly2] + yin2 = yin2[in_poly2] + min2 = min2[in_poly2] + # else: + # # Only look for matches within overlapping minimum-bounding-boxes of the 2 lists + # valid1 = (np.isfinite(xin1)) & (np.isfinite(yin1)) & (np.isfinite(min1)) + # valid2 = (np.isfinite(xin2)) & (np.isfinite(yin2)) & (np.isfinite(min2)) + # if (sum(valid1) < Nbrite) or (sum(valid2) < Nbrite): + # raise ValueError( + # f'Not enough valid stars to find matches! Need at least {Nbrite} valid stars.\n' + + # f'Valid stars in list 1: {sum(valid1)}\n' + + # f'Valid stars in list 2: {sum(valid2)}\n' + # ) + + # xin1 = xin1[valid1] + # yin1 = yin1[valid1] + # min1 = min1[valid1] + # xin2 = xin2[valid2] + # yin2 = yin2[valid2] + # min2 = min2[valid2] + + # xmin1, xmax1 = np.min(xin1), np.max(xin1) + # ymin1, ymax1 = np.min(yin1), np.max(yin1) + # xmin2, xmax2 = np.min(xin2), np.max(xin2) + # ymin2, ymax2 = np.min(yin2), np.max(yin2) + + # # Find the overlapping minimum bounding box + # x_overlap = (max(xmin1, xmin2), min(xmax1, xmax2)) + # y_overlap = (max(ymin1, ymin2), min(ymax1, ymax2)) + # if x_overlap[0] >= x_overlap[1] or y_overlap[0] >= y_overlap[1]: + # fig, ax = plt.subplots() + # ax.scatter(xin1, yin1, s=1, label='List 1') + # ax.scatter(xin2, yin2, s=1, label='List 2') + # ax.set_aspect('equal') + # ax.legend() + # plt.show() + # raise ValueError('The two star lists do not have an overlapping region!') + + # # Select overlapping regions + # in_overlap1 = (xin1 >= x_overlap[0]) & (xin1 <= x_overlap[1]) & (yin1 >= y_overlap[0]) & (yin1 <= y_overlap[1]) + # in_overlap2 = (xin2 >= x_overlap[0]) & (xin2 <= x_overlap[1]) & (yin2 >= y_overlap[0]) & (yin2 <= y_overlap[1]) + # if sum(in_overlap1) < Nbrite or sum(in_overlap2) < Nbrite: + # raise ValueError( + # 'Not enough stars in the overlapping region to find matches!\n' + + # f'Stars in overlap for list 1: {sum(in_overlap1)}\n' + + # f'Stars in overlap for list 2: {sum(in_overlap2)}\n' + # ) + + # from matplotlib.patches import Rectangle + # fig, ax = plt.subplots() + # polygon1 = Rectangle((xmin1, ymin1), xmax1-xmin1, ymax1-ymin1, fill=True, edgecolor='C0', facecolor='C0', alpha=0.5, label='MBB List 1') + # polygon2 = Rectangle((xmin2, ymin2), xmax2-xmin2, ymax2-ymin2, fill=True, edgecolor='C2', facecolor='C2', alpha=0.5, label='MBB List 2') + # polygon_overlap = Rectangle((x_overlap[0], y_overlap[0]), x_overlap[1]-x_overlap[0], y_overlap[1]-y_overlap[0], fill=True, edgecolor='red', facecolor='C3', alpha=0.5, label='Overlap Region') + # ax.scatter(xin1, yin1, s=1, label='List 1') + # ax.scatter(xin2, yin2, s=1, label='List 2') + # ax.add_patch(polygon1) + # ax.add_patch(polygon2) + # ax.add_patch(polygon_overlap) + # ax.set_aspect('equal') + # ax.legend() + # plt.show() + + # xin1 = xin1[in_overlap1] + # yin1 = yin1[in_overlap1] + # min1 = min1[in_overlap1] + # xin2 = xin2[in_overlap2] + # yin2 = yin2[in_overlap2] + # min2 = min2[in_overlap2] + # Get/check the lengths of the two starlists nin1 = len(xin1) nin2 = len(xin2) if (nin1 < Nbrite) or (nin2 < Nbrite): - print(f'WARNING: You need at least {Nbrite} to find the matches...') - print(f'NIN1: {nin1}') - print(f'NIN2: {nin2}') - # Nbrite = min(nin1, nin2) - # print(f'Updating Nbrite to {Nbrite}...') - return (0, None, None, None, None, None, None) + raise ValueError( + f'Not enough stars in the overlapping region to find matches! Need at least {Nbrite} valid stars.\n' + + f'Stars in overlap for list 1: {nin1}\n' + + f'Stars in overlap for list 2: {nin2}\n' + ) + # print(f'WARNING: You need at least {Nbrite} to find the matches...') + # print(f'NIN1: {nin1}') + # print(f'NIN2: {nin2}') + # # Nbrite = min(nin1, nin2) + # # print(f'Updating Nbrite to {Nbrite}...') + # return (0, None, None, None, None, None, None) # Take the Nbrite brightest stars from each list and order by brightness. if verbose: @@ -108,7 +200,6 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, idx2_vmax_hist = idx2_vmax_hist[good_idx2] idx2_angl_hist = idx2_angl_hist[good_idx2] - ########## # Possible Matches ########## @@ -163,7 +254,6 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, x1_mat = x1[votes_sdx[0, good]] y1_mat = y1[votes_sdx[0, good]] m1_mat = m1[votes_sdx[0, good]] - return len(x1_mat), x1_mat, y1_mat, m1_mat, x2_mat, y2_mat, m2_mat @@ -387,7 +477,7 @@ def match(x1, y1, m1, x2, y2, m2, dr_tol, dm_tol=None, verbose=True): if dm_min == dr_min: keep[dups[dm_min]] = True else: - if verbose: + if verbose > 3: print(' confused, dropping star at',x2[idxs2[dups]][0],y2[idxs2[dups]][0]) @@ -580,9 +670,10 @@ def generic_match(sl1, sl2, init_mode='triangle', # dr_tol=order_dr[i_loop][1], # verbose=verbose) import matplotlib.pyplot as plt + plt.clf() plt.plot(sl1_match['x'], sl1_match['y'], 'x', ms=10) plt.plot(sl2_match['x'], sl2_match['y'], 'o') - plt.show() + sl2_idx, sl1_idx = align.transform_and_match(sl2_match, sl1_match, transf, dr_tol=order_dr[1], verbose=verbose) From c106631defb9a3cc75d20cb46107ce18c6e0da6a Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 16 Jun 2026 16:44:59 -0700 Subject: [PATCH 82/94] Update from_lis_file column from snr to me (NEED CONFIRMATION) --- flystar/starlists.py | 72 +++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/flystar/starlists.py b/flystar/starlists.py index f872516..fcca92c 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -454,50 +454,45 @@ def read_starlist(starlistFile, error=True): class StarList(Table): - """ - A StarList is an astropy.Table with star catalog from a single image. - - Required table columns (input as keywords): - ------------------------- - name : 1D numpy.array with shape = N_stars - List of names of the stars in the table. - - x : 1D numpy.array with shape = N_stars - Positions of N_stars in the x dimension. - - y : 1D numpy.array with shape = N_stars - Positions of N_stars in the y dimension. + def __init__(self, *args, **kwargs): + """ + A StarList is an astropy.Table with star catalog from a single image. - m : 1D numpy.array with shape = N_stars - Magnitudes of N_stars. + Required table columns (input as keywords): + ------------------------- + name : 1D numpy.array with shape = N_stars + List of names of the stars in the table. - Optional table columns (input as keywords): - ------------------------- - xe : 1D numpy.array with shape = N_stars - Position uncertainties of N_stars in the x dimension. + x : 1D numpy.array with shape = N_stars + Positions of N_stars in the x dimension. - ye : 1D numpy.array with shape = N_stars - Position uncertainties of N_stars in the y dimension. + y : 1D numpy.array with shape = N_stars + Positions of N_stars in the y dimension. - me : 1D numpy.array with shape = N_stars - Magnitude uncertainties of N_stars. + m : 1D numpy.array with shape = N_stars + Magnitudes of N_stars. - corr : 1D numpy.array with shape = N_stars - Fitting correlation of N_stars. + Optional table columns (input as keywords): + ------------------------- + xe : 1D numpy.array with shape = N_stars + Position uncertainties of N_stars in the x dimension. - Optional table meta data - ------------------------- - list_name : str - Name of the starlist. + ye : 1D numpy.array with shape = N_stars + Position uncertainties of N_stars in the y dimension. - list_time : int or float - Time/date of the starlist. + me : 1D numpy.array with shape = N_stars + Magnitude uncertainties of N_stars. + corr : 1D numpy.array with shape = N_stars + Fitting correlation of N_stars. - """ + Optional table meta data + ------------------------- + list_name : str + Name of the starlist. - def __init__(self, *args, **kwargs): - """ + list_time : int or float + Time/date of the starlist. """ # Check if the required arguments are present arg_req = ('name', 'x', 'y', 'm') @@ -526,6 +521,7 @@ def __init__(self, *args, **kwargs): # Check if the type and size of the arguments are correct. # Name checking: type and shape + kwargs['name'] = np.asarray(kwargs['name']) if (not isinstance(kwargs['name'], np.ndarray)) or ( len(kwargs['name']) != n_stars): err_msg = "The '{0:s}' argument has to be a numpy array " @@ -645,18 +641,18 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): if error==True: t_ref.rename_column(cols[5], 'xe') t_ref.rename_column(cols[6], 'ye') - t_ref.rename_column(cols[7], 'snr') + t_ref.rename_column(cols[7], 'me') t_ref.rename_column(cols[8], 'corr') t_ref.rename_column(cols[9], 'N_frames') t_ref.rename_column(cols[10], 'flux') else: - t_ref.rename_column(cols[5], 'snr') + t_ref.rename_column(cols[5], 'me') t_ref.rename_column(cols[6], 'corr') t_ref.rename_column(cols[7], 'N_frames') t_ref.rename_column(cols[8], 'flux') - if ('me' not in cols) and ('snr' in cols) and (error == True): - t_ref['me'] = 1.0 / t_ref['snr'] + # if ('me' not in cols) and ('snr' in cols) and (error == True): + # t_ref['me'] = 1.0 / t_ref['snr'] if fvu_file is not None: t_fvu = Table.read(fvu_file, format='ascii.no_header') From dbe04624155252fd5233043e9e14ae24093c6868 Mon Sep 17 00:00:00 2001 From: Lingfeng Wei Date: Tue, 16 Jun 2026 16:46:19 -0700 Subject: [PATCH 83/94] Fixed test functions after fixing match.match dr calculation --- flystar/tests/test_align.py | 36 ++++++++++++------------------ flystar/tests/test_motion_model.py | 3 ++- 2 files changed, 16 insertions(+), 23 deletions(-) mode change 100755 => 100644 flystar/tests/test_motion_model.py diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 5b4fc66..faa0ff2 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1,14 +1,9 @@ +import pdb import flystar -from flystar import align -from flystar import starlists -from flystar import startables -from flystar import transforms -from flystar import analysis -from flystar import motion_model -from astropy.table import Table import numpy as np import matplotlib.pyplot as plt -import pdb +from astropy.table import Table +from flystar import align, starlists, transforms, analysis, motion_model test_data_path = f'{flystar.__path__[0]}/tests/test_data' @@ -81,8 +76,6 @@ def test_MosaicSelfRef(): plt.plot(msc.ref_table['x0'], msc.ref_table['y0'], '.', color='black', alpha=0.2) - - return def test_MosaicSelfRef_vel_tconst(): @@ -136,8 +129,6 @@ def test_MosaicSelfRef_vel_tconst(): for ii in range(4): np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) - - return def test_MosaicSelfRef_vel(): @@ -165,7 +156,7 @@ def test_MosaicSelfRef_vel(): # Test instantiation and basic fitting. ########## msc = align.MosaicSelfRef(lists, ref_index=0, iters=3, - dr_tol=[5, 3, 3], dm_tol=[1, 1, 0.5], outlier_tol=None, + dr_tol=[5, 3, 3], dm_tol=[1, 1, 0.5], outlier_tol=None, briteN=30, trans_class=transforms.PolyTransform, trans_args={'order': 2}, motion_models=['Empty', 'Fixed', 'Linear'], verbose=False) @@ -188,7 +179,7 @@ def test_MosaicSelfRef_vel(): # Check that we have some matched stars... should be at least 35 stars # that are detected in all 4 starlists. idx = np.where(msc.ref_table['n_detect'] == 4)[0] - assert len(idx) > 35 + assert len(idx) >= 35, f"Expected at least 35 stars detected in all 4 starlists, but only found {len(idx)}" # Check that the transformation error isn't too big valid_err = np.isfinite(msc.ref_table['x0_err']) & np.isfinite(msc.ref_table['y0_err']) & np.isfinite(msc.ref_table['m0_err']) @@ -198,14 +189,15 @@ def test_MosaicSelfRef_vel(): # Check that the transformation lists aren't too wacky for ii in range(4): - np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=1e-2) - np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=1e-2) + np.testing.assert_allclose(msc.trans_list[ii].px.c1_0, 1.0, rtol=2e-2) + np.testing.assert_allclose(msc.trans_list[ii].py.c0_1, 1.0, rtol=2e-2) plt.clf() plt.plot(msc.ref_table['vx'], msc.ref_table['vy'], 'k.', color='black', alpha=0.2) + return def test_MosaicToRef(): @@ -256,7 +248,7 @@ def test_MosaicToRef(): assert np.not_equal(msc.ref_table['x0'], ref_list['x0']).all() assert np.not_equal(msc.ref_table['y0'], ref_list['y0']).all() - return msc + return def test_MosaicToRef_p0_vel(): make_fake_starlists_poly0_vel(seed=42) @@ -315,7 +307,7 @@ def test_MosaicToRef_p0_vel(): #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) assert np.not_equal(msc.ref_table['vx'], ref_list['vx']).any() - return msc + return def test_MosaicToRef_vel(): make_fake_starlists_poly1_vel(seed=42) @@ -374,7 +366,7 @@ def test_MosaicToRef_vel(): #assert np.any(np.not_equal(msc.ref_table['vx'], ref_list['vx'])) assert np.not_equal(msc.ref_table['vx'], ref_list['vx']).any() - return msc + return def test_MosaicToRef_acc(): make_fake_starlists_poly1_acc(seed=42) @@ -453,6 +445,8 @@ def test_MosaicToRef_acc(): ax_max = np.max(ref_list['ax'][i_orig]) ay_min = np.min(ref_list['ay'][i_orig]) ay_max = np.max(ref_list['ay'][i_orig]) + + plt.clf() fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) ax1.plot(ref_list['ax'][i_orig], msc.ref_table['ax'][i_fit], '.') ax1.plot([ax_min, ax_max], [ax_min, ax_max], color='C3') @@ -470,12 +464,10 @@ def test_MosaicToRef_acc(): ax2.set_ylabel('Ref Table ay') ax2.set_title('Acceleration in Y') plt.tight_layout() - plt.show() # Also double check that they aren't exactly the same for the reference stars. assert np.any(np.not_equal(msc.ref_table['ax'][i_fit], ref_list['ax'][i_orig])) - - return msc + return def test_MosaicToRef_hst_me(): """ diff --git a/flystar/tests/test_motion_model.py b/flystar/tests/test_motion_model.py old mode 100755 new mode 100644 index 7a90288..5bd4ad2 --- a/flystar/tests/test_motion_model.py +++ b/flystar/tests/test_motion_model.py @@ -354,6 +354,7 @@ def test_Parallax(): fit_params=params, fixed_params_dict=fixed_params_dict ) + plt.clf() fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) ax1.plot(t, x_model, color='C3', lw=2, label='Model x') ax1.plot(t, x_true, color='C0', ls='--', label='True x') @@ -368,7 +369,7 @@ def test_Parallax(): ax2.set_ylabel('y') ax2.legend() plt.tight_layout() - plt.show() + # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) From 33b35d26c55e8931fe40c00985408f13a6c9ddd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 16 Jun 2026 16:55:11 -0700 Subject: [PATCH 84/94] Save bootstrap results automatically after calc_bootstrap_errors --- flystar/align.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flystar/align.py b/flystar/align.py index ecaff32..3ec88f6 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1645,6 +1645,11 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot print("Saved starlist errors to xe_list and added xe_boot to xe in quadrature.") print("The same was done for ye and me.") + if self.save_path is not None: + with open(os.path.join(self.save_path, self.prefix_name+'_bootstrap.pkl'), 'wb') as file: + pickle.dump(self, file) + with open(os.path.join(self.save_path, self.prefix_name+'_ref_table_bootstrap.pkl'), 'wb') as file: + pickle.dump(self.ref_table, file) return From 6431e52a75d44f443ac633bce8e7df48efe5126e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 16 Jun 2026 16:56:13 -0700 Subject: [PATCH 85/94] Add actual shape of arg_test in StarList init error message --- flystar/starlists.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flystar/starlists.py b/flystar/starlists.py index f872516..7ebe7c2 100644 --- a/flystar/starlists.py +++ b/flystar/starlists.py @@ -544,8 +544,8 @@ def __init__(self, *args, **kwargs): raise TypeError(err_msg.format(arg_test)) if kwargs[arg_test].shape != (n_stars,): - err_msg = "The '{0:s}' argument has to have shape = ({1:d},)" - raise TypeError(err_msg.format(arg_test, n_stars)) + err_msg = "The '{0:s}' argument has to have shape = ({1:d},), but has shape = {2}" + raise TypeError(err_msg.format(arg_test, n_stars, kwargs[arg_test].shape)) # We have to have special handling of meta-data meta_tab = ('list_time', 'list_name') @@ -645,18 +645,18 @@ def from_lis_file(cls, filename, error=True, fvu_file=None): if error==True: t_ref.rename_column(cols[5], 'xe') t_ref.rename_column(cols[6], 'ye') - t_ref.rename_column(cols[7], 'snr') + t_ref.rename_column(cols[7], 'me') t_ref.rename_column(cols[8], 'corr') t_ref.rename_column(cols[9], 'N_frames') t_ref.rename_column(cols[10], 'flux') else: - t_ref.rename_column(cols[5], 'snr') + t_ref.rename_column(cols[5], 'me') t_ref.rename_column(cols[6], 'corr') t_ref.rename_column(cols[7], 'N_frames') t_ref.rename_column(cols[8], 'flux') - if ('me' not in cols) and ('snr' in cols) and (error == True): - t_ref['me'] = 1.0 / t_ref['snr'] + # if ('me' not in cols) and ('snr' in cols) and (error == True): + # t_ref['me'] = 1.0 / t_ref['snr'] if fvu_file is not None: t_fvu = Table.read(fvu_file, format='ascii.no_header') From 9df7b009f714bb2c7453057e44042f5f4372b2c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 16 Jun 2026 19:30:05 -0700 Subject: [PATCH 86/94] Changed fit_motion_model to fit_motion_models; Changed n_params to requried_params --- flystar/motion_model.py | 48 ++++++++++++++++++--------------- flystar/startables.py | 32 +++++++++++----------- flystar/tests/test_startable.py | 14 +++++----- 3 files changed, 50 insertions(+), 44 deletions(-) diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 57f5b78..f75528d 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -12,7 +12,8 @@ class MotionModel(ABC): fit_param_names = [] # Number of fit parameters/required observations in each direction - n_params = int((len(fit_param_names) + 1) / 2) + n_params = len(fit_param_names) + required_epochs = int((n_params + 1) / 2) # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. @@ -173,18 +174,18 @@ def fit( # Bootstrap errors n_obs = len(t) - if bootstrap > 0 and n_obs > (self.n_params): + if (bootstrap > 0) and (n_obs > self.required_epochs): rng = np.random.default_rng(seed) edx = np.arange(n_obs, dtype=int) # Precompute All Bootstrap Draws at Once # Ensure there are enough unique points in each bootstrap sample bdx_unique = np.stack([ - rng.choice(edx, size=self.n_params, replace=False) + rng.choice(edx, size=self.required_epochs, replace=False) for _ in range(bootstrap) ]) # Draw with replacement for the rest bdx_extra = np.stack([ - rng.choice(edx, size=n_obs - self.n_params, replace=True) + rng.choice(edx, size=n_obs - self.required_epochs, replace=True) for _ in range(bootstrap) ]) bdx_all = np.hstack((bdx_unique, bdx_extra)) @@ -234,10 +235,10 @@ def fit( # chi2_y = residual_y.T @ W_mat_y @ residual_y # if reduced: - # if len(dt) == self.n_params: + # if len(dt) == self.required_epochs: # return np.inf, np.inf # if not parallax: - # degree_of_freedom = len(x) - self.n_params + # degree_of_freedom = len(x) - self.required_epochs # else: # degree_of_freedom = 2*len(x) - len(self.fit_param_names) # chi2_x, chi2_y = chi2_x / degree_of_freedom, chi2_y / degree_of_freedom @@ -251,10 +252,10 @@ def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced chi2x = np.sum((x - x_pred)**2 / xe**2) chi2y = np.sum((y - y_pred)**2 / ye**2) if reduced: - if len(t) == self.n_params: + if len(t) == self.required_epochs: return np.inf, np.inf if not parallax: - degree_of_freedom = len(x) - self.n_params + degree_of_freedom = len(x) - self.required_epochs else: degree_of_freedom = 2*len(x) - len(self.fit_param_names) chi2x, chi2y = chi2x / degree_of_freedom, chi2y / degree_of_freedom @@ -268,7 +269,8 @@ class Empty(MotionModel): optional_fixed_params = {} # Number of fit parameters/required observations in each direction - n_params = int((len(fit_param_names) + 1) / 2) + n_params = len(fit_param_names) + required_epochs = int((n_params + 1) / 2) def __init__(self, **kwargs): """Empty motion model, returns nan for values and inf for uncertainties. @@ -387,7 +389,8 @@ class Fixed(MotionModel): optional_fixed_params = {} # Number of fit parameters/required observations in each direction - n_params = int((len(fit_param_names) + 1) / 2) + n_params = len(fit_param_names) + required_epochs = int((n_params + 1) / 2) def __init__(self, **kwargs): # Must call after setting parameters. @@ -491,7 +494,7 @@ def run_fit( warnings.warn("Fixed model has no non-scipy fitter option. Running with scipy.") n_obs = len(t) - degree_of_freedom = n_obs - self.n_params + degree_of_freedom = n_obs - self.required_epochs # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( @@ -550,7 +553,8 @@ class Linear(MotionModel): fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) # Number of fit parameters/required observations in each direction - n_params = int((len(fit_param_names) + 1) / 2) + n_params = len(fit_param_names) + required_epochs = int((n_params + 1) / 2) def __init__(self, **kwargs): # Must call after setting parameters. @@ -665,7 +669,7 @@ def run_fit( ye = np.atleast_1d(ye) n_obs = len(t) - degree_of_freedom = n_obs - self.n_params + degree_of_freedom = n_obs - self.required_epochs # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( @@ -787,8 +791,9 @@ class Acceleration(MotionModel): optional_fixed_params = {} fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) - # Number of fit parameters/required observations in each direction - n_params = int((len(fit_param_names) + 1) / 2) + # Number of required observations in each direction + n_params = len(fit_param_names) + required_epochs = int((n_params + 1) / 2) def __init__(self): # Must call after setting parameters. @@ -911,7 +916,7 @@ def run_fit( warnings.warn("Acceleration model has no non-scipy fitter option. Running with scipy.") n_obs = len(t) - degree_of_freedom = n_obs - self.n_params + degree_of_freedom = n_obs - self.required_epochs # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( @@ -966,8 +971,9 @@ class Parallax(MotionModel): fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) - # Number of fit parameters/required observations in each direction - n_params = int((len(fit_param_names) + 1) / 2) + # Number of required observations in each direction + n_params = len(fit_param_names) + required_epochs = int((n_params + 1) / 2) def __init__(self): super().__init__() @@ -1162,7 +1168,7 @@ def run_fit( obsLocation = fixed_params_dict['obsLocation'] n_fit = len(t) - degree_of_freedom = n_fit - self.n_params + degree_of_freedom = n_fit - self.required_epochs # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( @@ -1291,6 +1297,6 @@ def motion_model_map(): mm_map = dict( [(mm.__name__, mm) for mm in MotionModel.__subclasses__()] ) - # Sort by n_params - mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].n_params)) + # Sort by required epochs + mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].required_epochs)) return mm_map \ No newline at end of file diff --git a/flystar/startables.py b/flystar/startables.py index 976f646..dc847aa 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -544,7 +544,7 @@ def detections(self): return - def fit_motion_model( + def fit_motion_models( self, motion_models=None, fixed_params_dict=None, @@ -567,12 +567,12 @@ def fit_motion_model( Empty and Fixed models are always added automatically for stars with n_fit = 0 or 1. The behavior is as follows: 1. If 'motion_model_input' column is NOT in table: - - Use the most complex model that has enough parameters to fit the data (n_fit >= n_params). + - Use the most complex model that has enough parameters to fit the data (n_fit >= required_epochs). - If multiple models are supplied, prioritize the model with the most parameters to fit. - If multiple models have the same number of parameters, raise AssertionError: not sure which to use. 2. If 'motion_model_input' column IS in table: - Use the model specified in the 'motion_model_input' column. - - If not enough data points to fit the specified model, use the most complex model in any 'motion_model_input' column that has enough parameters to fit the data (n_fit >= n_params) among the provided motion_models and 'motion_model_input'. + - If not enough data points to fit the specified model, use the most complex model in any 'motion_model_input' column that has enough parameters to fit the data (n_fit >= required_epochs) among the provided motion_models and 'motion_model_input'. The actual used motion model is stored in the 'motion_model_used' column. The default motion_models are [Empty, Fixed, Linear]. fixed_params_dict : dict, optional Dictionary of fixed parameters for motion models, e.g., {'t0': 0., 'ra': np.array([...]), 'dec': np.array([...])}. @@ -656,17 +656,17 @@ def fit_motion_model( if mm_name not in mm_names: motion_models.append(all_mm_map[mm_name]) - # Sort motion models by n_params - motion_models = sorted(motion_models, key=lambda mm: mm.n_params) + # Sort motion models by required epochs + motion_models = sorted(motion_models, key=lambda mm: mm.required_epochs) input_mm_map = {mm.name: mm for mm in motion_models} - mm_n_params = np.sort([mm.n_params for mm in motion_models]) + mm_required_epochs = np.sort([mm.required_epochs for mm in motion_models]) if 'motion_model_input' not in self.colnames: - # If motion_model_input column is not provided, assert that motion model n_params are unique and sorted + # If motion_model_input column is not provided, assert that motion model required_epochs are unique and sorted # Otherwise the fitter does not know which motion model to use based on n_obs - assert len(mm_n_params) == len(set(mm_n_params)), \ - f"fit_motion_model: Provided motion model n_params are not unique! Motion Models are: {[_.name for _ in motion_models]} Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." + assert len(mm_required_epochs) == len(set(mm_required_epochs)), \ + f"fit_motion_models: Provided motion model required_epochs are not unique! Motion Models are: {[_.name for _ in motion_models]}" + '\n' + "Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." ########################### @@ -768,13 +768,13 @@ def fit_motion_model( n_fit = np.array(self['n_fit']) if 'motion_model_input' in self.colnames: # Determine which motion model to use based on motion_model_input column - # If n_fit < required n_params for the input motion model, use the most complicated motion model with n_fit >= n_params - required_params = np.array([all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']]) + # If n_fit < required_epochs for the input motion model, use the most complicated motion model with n_fit >= required_epochs + required_params = np.array([all_mm_map[mm_name].required_epochs for mm_name in self['motion_model_input']]) reassign_mm = n_fit < required_params mm_digitized = np.digitize( x=n_fit[reassign_mm], - bins=mm_n_params + bins=mm_required_epochs ) - 1 # Convert to 0-based index # Assign motion models to stars @@ -782,10 +782,10 @@ def fit_motion_model( self['motion_model_used'][reassign_mm] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') else: - # If motion_model_input column is not provided, use the most complicated model in motion_models with n_fit >= n_params. + # If motion_model_input column is not provided, use the most complicated model in motion_models with n_fit >= required_epochs. mm_digitized = np.digitize( x=n_fit, - bins=mm_n_params + bins=mm_required_epochs ) - 1 # Convert to 0-based index # Assign motion models to stars @@ -847,7 +847,7 @@ def fit_motion_model( ############################ # Fill table with all possible motion model parameter names as new columns. new_col_list = motion_model.motion_model_param_names(motion_model_used, with_errors=True, with_fixed=False) - new_col_list += ['chi2_x', 'chi2_y', 'n_params'] + new_col_list += ['chi2_x', 'chi2_y', 'required_epochs'] if 't0' not in new_col_list: new_col_list.append('t0') @@ -972,7 +972,7 @@ def fit_motion_model( self[param_name + '_err'][unique_index] = param_errs_array[:, j] self['chi2_x'][unique_index] = chi2_x_array self['chi2_y'][unique_index] = chi2_y_array - self['n_params'][unique_index] = motion_model_instance.n_params + self['required_epochs'][unique_index] = motion_model_instance.required_epochs self['t0'][unique_index] = t0[unique_index] return diff --git a/flystar/tests/test_startable.py b/flystar/tests/test_startable.py index e743b74..f8e24de 100644 --- a/flystar/tests/test_startable.py +++ b/flystar/tests/test_startable.py @@ -311,7 +311,7 @@ def test_fit_motion_models(): tab = table.vstack((tab1, tab2, tab3)) tab.meta = tab1.meta - tab.fit_motion_model(verbose=True, mask_value=-100000.) + tab.fit_motion_models(verbose=True, mask_value=-100000.) # Test creation of new variables np.testing.assert_equal(len(tab['vx']), len(tab)) @@ -341,7 +341,7 @@ def test_fit_motion_models(): x0_orig = tab['x0'] vxe_orig = tab['vx_err'] x0e_orig = tab['x0_err'] - tab.fit_motion_model(verbose=False, mask_value=-100000.) + tab.fit_motion_models(verbose=False, mask_value=-100000.) np.testing.assert_allclose(tab['vx'], vx_orig) np.testing.assert_allclose(tab['x0'], x0_orig) @@ -352,7 +352,7 @@ def test_fit_motion_models(): # Test fixed_t0 functionality ########## fixed_t0 = tab['t0'] + np.random.normal(size=len(tab)) - tab.fit_motion_model(verbose=False, mask_value=-100000., fixed_params_dict={'t0': fixed_t0}) + tab.fit_motion_models(verbose=False, mask_value=-100000., fixed_params_dict={'t0': fixed_t0}) np.testing.assert_allclose(tab['t0'], fixed_t0) ########## @@ -360,7 +360,7 @@ def test_fit_motion_models(): ########## tab_b = table.vstack((tab1, tab2, tab3)) tab_b.meta = tab1.meta - tab_b.fit_motion_model(verbose=True, bootstrap=50) + tab_b.fit_motion_models(verbose=True, bootstrap=50) np.testing.assert_equal(tab_b.meta['n_bootstrap'], 50) np.testing.assert_array_less(tab['x0_err'][0], tab_b['x0_err'][0]) @@ -372,7 +372,7 @@ def test_fit_motion_models(): # Test what happens with no velocity errors ########## tab.remove_columns(['xe', 'ye', 'x0', 'y0', 'x0_err', 'y0_err', 'vx', 'vy', 'vx_err', 'vy_err', 'n_fit']) - tab.fit_motion_model(verbose=False) + tab.fit_motion_models(verbose=False) np.testing.assert_equal(len(tab['vx']), len(tab)) np.testing.assert_equal(len(tab['vy']), len(tab)) @@ -389,7 +389,7 @@ def test_fit_motion_models(): ######### # Test 5a: Masked print("Testing Masked List") - tt.fit_motion_model(verbose=False, mask_lists=[1]) + tt.fit_motion_models(verbose=False, mask_lists=[1]) np.testing.assert_allclose(np.arange(2.25, 48, 5), tt['x0'].data) np.testing.assert_allclose(np.arange(2.25, 48, 5), tt['y0'].data) np.testing.assert_allclose(np.full(10, 0.05), tt['x0_err'].data) @@ -417,7 +417,7 @@ def test_fit_motion_model_2epoch(): tab_2 = table.vstack((tab1, tab2, tab3)) tab_2.meta=tab1.meta - tab_2.fit_motion_model(verbose=False, mask_value=-100000.) + tab_2.fit_motion_models(verbose=False, mask_value=-100000.) assert all([_ in tab_2.colnames for _ in ['n_fit', 't0', 'x0', 'y0', 'vx', 'vy', 'x0_err', 'y0_err', 'vx_err', 'vy_err']]) From fcb50586eddb5c9bf8221c141a96d1e7f5665519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 16 Jun 2026 19:31:23 -0700 Subject: [PATCH 87/94] Added reflist_vertex for MosaicToRef; Removed motion_model_for_new_star --- flystar/align.py | 70 +++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 7d10083..23a3ebe 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -28,7 +28,6 @@ def __init__( dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=None, - briteN=None, # Transformation parameters trans_class=transforms.PolyTransform, trans_args=[{'order': 2}, {'order': 2}], @@ -36,13 +35,14 @@ def __init__( trans_weighting=None, init_order=1, init_guess_mode='miracle', + briteN=None, calc_trans_inverse=False, # Magnitude parameters mag_trans=True, mag_lim=None, # Motion model parameters motion_models=['Empty', 'Fixed'], - motion_model_for_new_star=None, + # motion_model_for_new_star=None, fixed_params_dict=None, vel_weighting='var', use_scipy=True, @@ -78,7 +78,6 @@ def __init__( ------------------- starlist_vertices : list or array A list or array of polygon vertices coordinates for each starlist. Initial guess will only use stars in overlapping regions defined by these polygons. - If not provided, will be None and will use minimum bounding box of the starlist positions. Shape of (N_lists, N_vertices, 2) in the format of [[x1, y1], [x2, y2], ..., [xN, yN]] for each starlist, by default None ref_index : int @@ -101,10 +100,6 @@ def __init__( The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. If not provided, will be None for each iteration. - - briteN : int - If init_guess_mode is 'miracle', this is the number of brightest stars to use in the miracle match. - Default is min(50, len(star_list)). trans_class : transforms.Transform2D object (or subclass) The transform class that will be used to when deriving the optimal @@ -134,6 +129,10 @@ def = None. If not None, then this should contain an array or list of transform to make the initial transformation and matching blindly. We can do this in a couple of different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). + briteN : int + If init_guess_mode is 'miracle', this is the number of brightest stars to use in the miracle match. + Default is min(50, len(star_list)). + calc_trans_inverse: boolean If true, then calculate the inverse transformation (from reference to starlist) in addition to the normal transformation (from starlist to reference). The inverse @@ -228,7 +227,6 @@ def = None. If not None, then this should contain an array or list of transform self.iters = iters self.dr_tol = dr_tol self.dm_tol = dm_tol - self.briteN = briteN self.trans_args = trans_args self.init_order = init_order self.mag_trans = mag_trans @@ -242,6 +240,7 @@ def = None. If not None, then this should contain an array or list of transform self.absolute_sigma = absolute_sigma self.fixed_params_dict = fixed_params_dict self.init_guess_mode = init_guess_mode + self.briteN = briteN self.iter_callback = iter_callback self.save_path = save_path self.prefix_name = prefix_name @@ -276,14 +275,14 @@ def = None. If not None, then this should contain an array or list of transform motion_models.append(all_mm_map['Fixed']) # Sort by increasing n_params - motion_models = sorted(motion_models, key=lambda mm: mm.n_params) + motion_models = sorted(motion_models, key=lambda mm: mm.required_epochs) self.motion_models = motion_models - if motion_model_for_new_star is None: - self.motion_model_for_new_star = self.motion_models[-1] - elif isinstance(motion_model_for_new_star, str): - assert motion_model_for_new_star in all_mm_map.keys(), f"motion_model_for_new_star must be in {list(all_mm_map.keys())}" - self.motion_model_for_new_star = all_mm_map[motion_model_for_new_star] + # if motion_model_for_new_star is None: + # self.motion_model_for_new_star = self.motion_models[-1] + # elif isinstance(motion_model_for_new_star, str): + # assert motion_model_for_new_star in all_mm_map.keys(), f"motion_model_for_new_star must be in {list(all_mm_map.keys())}" + # self.motion_model_for_new_star = all_mm_map[motion_model_for_new_star] # For backwards compatibility. # if self.verbose is True: @@ -976,7 +975,8 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li self.ref_table, star_list, idx_lis, - motion_model_name=self.motion_model_for_new_star.name + # motion_model_name=self.motion_model_for_new_star.name + motion_model_name=self.motion_models[-1].name ) if len(idx_ref_new) > 0: @@ -1040,7 +1040,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): fit_star_idxs = None if ('motion_model_input' in self.ref_table.keys()) and np.all(self.ref_table['motion_model_input']=='Fixed'): - # self.ref_table.fit_motion_model( + # self.ref_table.fit_motion_models( # motion_models=['Fixed'], # weighting=self.vel_weighting, # use_scipy=self.use_scipy, @@ -1051,7 +1051,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): weighted_m = ('me' in self.ref_table.colnames) self.ref_table.combine_lists_xym(weighted_xy=weighted_xy, weighted_m=weighted_m) else: - self.ref_table.fit_motion_model( + self.ref_table.fit_motion_models( motion_models=self.motion_models, fixed_params_dict=self.fixed_params_dict, weighting=self.vel_weighting, @@ -1415,7 +1415,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot all_mm_map = motion_model.motion_model_map() motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] - motion_boot_min_epochs = np.max([mm.n_params for mm in motion_model_list]) + motion_boot_min_epochs = np.max([mm.required_epochs for mm in motion_model_list]) ### IF MEMORY PROBLEMS HERE: ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY @@ -1565,7 +1565,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot fixed_params_dict = self.fixed_params_dict.copy() fixed_params_dict['t0'] = t0_arr - star_table.fit_motion_model( + star_table.fit_motion_models( motion_models=self.motion_models, fixed_params_dict=fixed_params_dict, weighting=self.vel_weighting, @@ -1689,13 +1689,13 @@ def __init__( self, ref_list, list_of_starlists, + reflist_vertex=None, starlist_vertices=None, # Alignment parameters iters=2, dr_tol=[1, 1], dm_tol=[2, 1], outlier_tol=None, - briteN=None, # Reference behavior (MosiacToRef specific) use_ref_new=False, update_ref_orig=False, @@ -1706,6 +1706,7 @@ def __init__( trans_weighting=None, init_order=1, init_guess_mode='miracle', + briteN=None, calc_trans_inverse=False, # Magnitude parameters mag_trans=True, @@ -1713,7 +1714,7 @@ def __init__( ref_mag_lim=None, # Motion model parameters motion_models=['Empty', 'Fixed'], - motion_model_for_new_star=None, + # motion_model_for_new_star=None, fixed_params_dict=None, vel_weighting='var', use_scipy=True, @@ -1750,9 +1751,12 @@ def __init__( Optional Parameters ---------- + reflist_vertex : array + An array of polygon vertices coordinates for the reference starlist. Initial guess will only use stars in overlapping regions defined by these polygons. + Shape of (N_vertices, 2) in the format of [[x1, y1], [x2, y2], ..., [xN, yN]] for the reference starlist, by default None + starlist_vertices : list or array A list or array of polygon vertices coordinates for each starlist. Initial guess will only use stars in overlapping regions defined by these polygons. - If not provided, will be None and will use minimum bounding box of the starlist positions. Shape of (N_lists, N_vertices, 2) in the format of [[x1, y1], [x2, y2], ..., [xN, yN]] for each starlist, by default None iters : int @@ -1770,10 +1774,6 @@ def __init__( The outlier tolerance (in units of sigma) for rejecting outlier stars. This is a list of tol values, one for each iteration of matching/transformation. - briteN : int - If init_guess_mode is 'miracle', this is the number of brightest stars to use in the miracle match. - Default is min(50, len(star_list)). - use_ref_new : boolean Each pass, new stars are matched and added to the ref_table. However, we don't necessarily want to use these in the reference frame in subsequent passes. @@ -1822,6 +1822,10 @@ def = None. If not None, then this should contain an array or list of transform to make the initial transformation and matching blindly. We can do this in a couple of different ways. Options are 'miracle' or 'name' (see trans_initial_guess() for more details). + briteN : int + If init_guess_mode is 'miracle', this is the number of brightest stars to use in the miracle match. + Default is min(50, len(star_list)). + calc_trans_inverse: boolean If true, then calculate the inverse transformation (from reference to starlist) in addition to the normal transformation (from starlist to reference). The inverse @@ -1913,14 +1917,12 @@ def = None. If not None, then this should contain an array or list of transform """ super().__init__( list_of_starlists, - starlist_vertices=starlist_vertices, # Alignment parameters ref_index=-1, iters=iters, dr_tol=dr_tol, dm_tol=dm_tol, outlier_tol=outlier_tol, - briteN=briteN, # Transformation parameters trans_class=trans_class, trans_args=trans_args, @@ -1928,13 +1930,14 @@ def = None. If not None, then this should contain an array or list of transform trans_weighting=trans_weighting, init_order=init_order, init_guess_mode=init_guess_mode, + briteN=briteN, calc_trans_inverse=calc_trans_inverse, # Magnitude parameters mag_trans=mag_trans, mag_lim=mag_lim, # Motion model parameters motion_models=motion_models, - motion_model_for_new_star=motion_model_for_new_star, + # motion_model_for_new_star=motion_model_for_new_star, fixed_params_dict=fixed_params_dict, vel_weighting=vel_weighting, use_scipy=use_scipy, @@ -1946,11 +1949,18 @@ def = None. If not None, then this should contain an array or list of transform verbose=verbose ) + self.starlist_vertices = starlist_vertices self.ref_list = copy.deepcopy(ref_list) self.ref_mag_lim = ref_mag_lim self.update_ref_orig = update_ref_orig self.use_ref_new = use_ref_new + if reflist_vertex is not None: + import shapely + self.reflist_polygon = shapely.make_valid(shapely.Polygon(reflist_vertex)) + else: + self.reflist_polygon = None + # If motion_model_used in columns but params columns are missing, raise a warning and remove motion_model_used column to avoid confusion. # if 'motion_model_used' in self.ref_list.colnames: # motion_model_params = motion_model.motion_model_param_names(np.unique(self.ref_list['motion_model_used']), with_errors=False, with_fixed=True) @@ -2243,7 +2253,7 @@ def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, re # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty # Sort motion models inversely by mm.n_params - motion_models = sorted(motion_models, key=lambda mm: mm.n_params, reverse=True) + motion_models = sorted(motion_models, key=lambda mm: mm.required_epochs, reverse=True) for mm in motion_models: if mm.name == 'Empty': x = startable['x'] From cf29f752d090560c811865b9e9e55f848cef88bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Wed, 17 Jun 2026 12:54:05 -0700 Subject: [PATCH 88/94] Update variable names in example notebook --- .../examples/motion_model_example.ipynb | 2 +- flystar/tests/test_align.py | 48 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/flystar/examples/motion_model_example.ipynb b/docs/flystar/examples/motion_model_example.ipynb index 4877b5c..b3de4b9 100644 --- a/docs/flystar/examples/motion_model_example.ipynb +++ b/docs/flystar/examples/motion_model_example.ipynb @@ -55,7 +55,7 @@ "id": "faddd6d8", "metadata": {}, "source": [ - "| Motion Model | n_params | params | fixed_params | model | Description |\n", + "| Motion Model | required params | fit_params | fixed_params | model | Description |\n", "|--------------|----------|--------------------------------------------|-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n", "| Empty | 0 | NA | NA | $x(t) = $ NaN / fill_value
$x_e(t) = $ Inf | |\n", "| Fixed | 1 | $x_0$
$y_0$ | NA | $x(t) = $ np.average($x$, weights=$x_{wt}$) | $x_{wt} = 1/xe^2$ if weighting='var'
$x_{wt} = 1/\\|xe\\|$ if weighting = 'std' |\n", diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index faa0ff2..5f24208 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1439,27 +1439,27 @@ def make_fake_starlists_poly1_par(seed=-1): return (xy_trans, mag_trans) # if __name__ == '__main__': - # import pickle - # import matplotlib.pyplot as plt - # with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: - # my_gaia = pickle.load(f) - # with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: - # list_of_starlists = pickle.load(f) - # ra_deg, dec_deg = 18.0, -30.0 - # my_gaia.remove_column('motion_model_used') - # msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, - # dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], - # outlier_tol=[None, None, 3], mag_lim=[6, 20], - # trans_class=transforms.PolyTransform, - # trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], - # motion_models=['Empty','Fixed','Linear','Parallax'], - # fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, - # use_ref_new=True, - # update_ref_orig=False, - # mag_trans=True, - # trans_weighting='both,std', - # init_guess_mode='name', verbose=3) - # msc.fit() - # for i in range(msc.ref_table['x'].shape[1]): - # plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) - # plt.show() \ No newline at end of file +# import pickle +# import matplotlib.pyplot as plt +# with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: +# my_gaia = pickle.load(f) +# with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: +# list_of_starlists = pickle.load(f) +# ra_deg, dec_deg = 18.0, -30.0 +# my_gaia.remove_column('motion_model_used') +# msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, +# dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], +# outlier_tol=[None, None, 3], mag_lim=[6, 20], +# trans_class=transforms.PolyTransform, +# trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], +# motion_models=['Linear','Parallax'], +# fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, +# use_ref_new=True, +# update_ref_orig=False, +# mag_trans=True, +# trans_weighting='both,std', +# init_guess_mode='name', verbose=3) +# msc.fit() +# for i in range(msc.ref_table['x'].shape[1]): +# plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) +# plt.show() \ No newline at end of file From a7d1e6be981f2c4234e0dbe6345743116a1a143d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 18 Jun 2026 00:08:28 -0700 Subject: [PATCH 89/94] Fix duplicate columns; Fix plotting error --- flystar/align.py | 54 +++++++++++++++++++++++++------------ flystar/analysis.py | 4 +++ flystar/plots.py | 10 +++---- flystar/startables.py | 7 +++-- flystar/tests/test_align.py | 52 ++++++++++++++++++----------------- 5 files changed, 78 insertions(+), 49 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 23a3ebe..53a5413 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -976,7 +976,8 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li star_list, idx_lis, # motion_model_name=self.motion_model_for_new_star.name - motion_model_name=self.motion_models[-1].name + motion_model_name=self.motion_models[-1].name, + fixed_params_dict=self.fixed_params_dict ) if len(idx_ref_new) > 0: @@ -1029,6 +1030,8 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): if 'motion_model_used' in self.ref_table.keys(): motion_model_class_names += self.ref_table['motion_model_used'][keep_orig].tolist() vals_orig['motion_model_used'] = self.ref_table['motion_model_used'][keep_orig] + vals_orig['required_epochs'] = self.ref_table['required_epochs'][keep_orig] + # vals_orig['n_fit'] = self.ref_table['n_fit'][keep_orig] motion_model_col_names = motion_model.motion_model_param_names(motion_model_class_names, with_errors=True, with_fixed=True) for mm in motion_model_col_names: if f'{mm}_mm' in self.ref_table.keys(): @@ -1071,7 +1074,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): # if (keep_orig is not None) and (sum(keep_orig) > 0): # Determine motion_model_used for keep_orig stars # Filter possible motion models based on available columns - motion_model_used, n_fit = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) + motion_model_used, required_epochs = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) # motion_models_possible = [] # for mm in self.motion_models: @@ -1096,7 +1099,8 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): # Assign the determined motion models # self.ref_table['motion_model_used'][keep_orig] = motion_model_used self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') - self.ref_table['n_fit'] = Column(n_fit, name='n_fit', dtype=int) + # self.ref_table['n_fit'] = Column(required_epochs, name='n_fit', dtype=int) + self.ref_table['required_epochs'] = Column(required_epochs, name='required_epochs', dtype=int) # Replace the originals if we are supposed to keep them fixed. if (keep_orig is not None) and (sum(keep_orig) > 0): @@ -1212,9 +1216,10 @@ def get_ref_list_from_table(self, epoch): # Calculate x, y, xe, ye if 'motion_model_used' not in self.ref_table.colnames: - motion_model_used, n_fit = determine_motion_model(self.ref_table) + motion_model_used, required_epochs = determine_motion_model(self.ref_table) self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') - self.ref_table['n_fit'] = Column(n_fit, name='n_fit', dtype=int) + # self.ref_table['n_fit'] = Column(required_epochs, name='n_fit', dtype=int) + self.ref_table['required_epochs'] = Column(required_epochs, name='required_epochs', dtype=int) x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) # else: @@ -2308,8 +2313,8 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None ------- motion_model_used : list List of motion model used for each star - n_fit : list - List of number of number of observations used to fit for each star + required_epochs : list + List of required epochs for each star """ if motion_models is None: @@ -2331,7 +2336,7 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None # Check if values are finite for required columns in possible motion models motion_model_used = [] - n_fit = [] + required_epochs = [] for k in range(len(startable)): for mm, req_col_in_table, req_col_in_dict in motion_models_possible[::-1]: @@ -2339,9 +2344,9 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None if all(np.isfinite(startable[col][k]) for col in req_col_in_table if np.issubdtype(startable[col].dtype, np.number)) \ and all(np.isfinite(fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(fixed_params_dict[col]).dtype, np.number)): motion_model_used.append(mm.name) - n_fit.append(mm.n_params) + required_epochs.append(mm.required_epochs) break - return motion_model_used, n_fit + return motion_model_used, required_epochs def get_all_epochs(t): @@ -2488,7 +2493,7 @@ def reset_ref_values(ref_table): return -def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fixed'): +def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fixed', fixed_params_dict=None): """ For each star that is in star_list and NOT in idx_list, make a new row in the reference table. The values will be empty (None, NAN, etc.). @@ -2504,6 +2509,8 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi of this array will be used as the new stars. motion_model_name : str The motion model name to assign to the new stars. + fixed_params_dict : dict + The default fixed parameters to assign to the new stars. Returns ---------- @@ -2521,22 +2528,35 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi idx_lis_new = np.array(list(set(idx_lis_orig) - set(idx_list))) N_newstars = len(idx_lis_new) + mm_map = motion_model.motion_model_map() + mm = mm_map[motion_model_name] + + # Add optional fixed params default values into fixed params dict, prioritizing values in fixed_params_dict + if fixed_params_dict is not None: + fixed_params_dict.update({k: v for k, v in mm.optional_fixed_params.items() if k not in fixed_params_dict}) + else: + fixed_params_dict = mm.optional_fixed_params.copy() + if N_newstars > 0: col_arrays = {} for col_name in ref_table.colnames: new_col_name = col_name - - if ref_table[col_name].dtype == np.dtype('float'): + + if col_name in fixed_params_dict.keys(): + new_col_empty = fixed_params_dict[col_name] + elif col_name=='required_epochs': + new_col_empty = mm.required_epochs + elif col_name=='motion_model_input': + new_col_empty = motion_model_name + elif col_name=='motion_model_used': + new_col_empty = 'Empty' + elif ref_table[col_name].dtype == np.dtype('float'): new_col_empty = np.nan elif ref_table[col_name].dtype == np.dtype('int'): new_col_empty = -1 elif ref_table[col_name].dtype == np.dtype('bool'): new_col_empty = False - elif col_name=='motion_model_input': - new_col_empty = motion_model_name - elif col_name=='motion_model_used': - new_col_empty = 'Empty' else: new_col_empty = np.nan diff --git a/flystar/analysis.py b/flystar/analysis.py index 0a1397c..7deaa36 100644 --- a/flystar/analysis.py +++ b/flystar/analysis.py @@ -186,6 +186,10 @@ def prepare_gaia_for_flystar(gaia, ra, dec, targets_dict=None, match_dr_max=0.2, gaia_new['motion_model_input'] = 'Fixed' gaia_new['motion_model_used'] = 'Fixed' gaia_new['n_params'] = 1 + elif default_motion_model=='Empty': + gaia_new['motion_model_input'] = 'Empty' + gaia_new['motion_model_used'] = 'Empty' + gaia_new['n_params'] = 0 else: print("Invalid motion model",default_motion_model,"- none assigned") diff --git a/flystar/plots.py b/flystar/plots.py index 7213174..083676d 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -2236,9 +2236,9 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract 2 to get Ndof - n_params = np.nanmean(tab['n_params'][idx]) + n_params = np.nanmean(tab['required_epochs'][idx]) Ndof = Ndetect - n_params - if len(np.unique(tab['n_params'][idx]))>1: + if len(np.unique(tab['required_epochs'][idx]))>1: print("** Warning: using average Ndof for multiple motion models. **") print("** Consider using plot_chi2_reduced_dist. **") print(f"Ndof={Ndof:.2f}, Ndetect={Ndetect}, Nparams={n_params:.2f}") @@ -2321,7 +2321,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): fnd = np.array(fnd_list) idx = np.where(fnd == Ndetect)[0] - n_params = tab['n_params'] + n_params = tab['required_epochs'] Ndof = Ndetect - n_params print("Reduced chi2 for Ndetect="+str(Ndetect)) chi2_bins = np.linspace(0, xlim, n_bins) @@ -2405,7 +2405,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract n_params to get Ndof - n_params = np.nanmean(tab['n_params'][idx]) + n_params = np.nanmean(tab['required_epochs'][idx]) Ndof = Ndetect - n_params print(f"Ndof={Ndof}, Ndetect={Ndetect}, Nparams={n_params}") chi2_xaxis = np.linspace(0, xlim, xlim*3) @@ -2871,7 +2871,7 @@ def rs(x): chi2_y = np.sum(sigY**2) chi2_m = np.sum(sigM**2) - dof = (len(tab['x'][ii])-tab['n_params'][ii]).astype(int) + dof = (len(tab['x'][ii])-tab['required_epochs'][ii]).astype(int) dofM = len(m) - 1 chi2_red_x = chi2_x / dof diff --git a/flystar/startables.py b/flystar/startables.py index dc847aa..d4377fa 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -535,7 +535,7 @@ def detections(self): """ Find where stars are detected. # """ - n_detect = np.sum(~np.isnan(self['x']), axis=1) + n_detect = np.sum(np.isfinite(self['x']) & np.isfinite(self['y']), axis=1) if 'n_detect' in self.colnames: self['n_detect'] = n_detect @@ -972,8 +972,11 @@ def fit_motion_models( self[param_name + '_err'][unique_index] = param_errs_array[:, j] self['chi2_x'][unique_index] = chi2_x_array self['chi2_y'][unique_index] = chi2_y_array - self['required_epochs'][unique_index] = motion_model_instance.required_epochs self['t0'][unique_index] = t0[unique_index] + + # Update required_epochs regardless of selections + for mm in motion_model_used: + self['required_epochs'][self['motion_model_used'] == mm.name] = mm.required_epochs return def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 5f24208..b914200 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -3,6 +3,7 @@ import numpy as np import matplotlib.pyplot as plt from astropy.table import Table +from flystar.plots import plot_stars from flystar import align, starlists, transforms, analysis, motion_model test_data_path = f'{flystar.__path__[0]}/tests/test_data' @@ -1438,28 +1439,29 @@ def make_fake_starlists_poly1_par(seed=-1): return (xy_trans, mag_trans) -# if __name__ == '__main__': -# import pickle -# import matplotlib.pyplot as plt -# with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: -# my_gaia = pickle.load(f) -# with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: -# list_of_starlists = pickle.load(f) -# ra_deg, dec_deg = 18.0, -30.0 -# my_gaia.remove_column('motion_model_used') -# msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, -# dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], -# outlier_tol=[None, None, 3], mag_lim=[6, 20], -# trans_class=transforms.PolyTransform, -# trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], -# motion_models=['Linear','Parallax'], -# fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, -# use_ref_new=True, -# update_ref_orig=False, -# mag_trans=True, -# trans_weighting='both,std', -# init_guess_mode='name', verbose=3) -# msc.fit() -# for i in range(msc.ref_table['x'].shape[1]): -# plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) -# plt.show() \ No newline at end of file +if __name__ == '__main__': + import pickle + import matplotlib.pyplot as plt + with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: + my_gaia = pickle.load(f) + with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: + list_of_starlists = pickle.load(f) + ra_deg, dec_deg = 18.0, -30.0 + my_gaia.remove_column('motion_model_used') + msc = align.MosaicToRef(my_gaia, list_of_starlists, iters=3, + dr_tol=[0.2, 0.1, 0.08], dm_tol=[5,5,5], + outlier_tol=[None, None, 3], mag_lim=[6, 20], + trans_class=transforms.PolyTransform, + trans_args=[{'order': 1}, {'order': 1}, {'order': 1}], + motion_models=['Linear','Parallax'], + fixed_params_dict = {'ra':ra_deg, 'dec':dec_deg, 'pa':0.0, 'obsLocation':'earth'}, + use_ref_new=True, + update_ref_orig=False, + mag_trans=True, + trans_weighting='both,std', + init_guess_mode='name', verbose=3) + msc.fit() + for i in range(msc.ref_table['x'].shape[1]): + plt.scatter(msc.ref_table['x'][:, i], msc.ref_table['y'][:, i]) + plt.show() + plot_stars(msc.ref_table, msc.ref_table['name'][:3]) \ No newline at end of file From d494c232d7e67593acb47cee777985a3a3fd8a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 18 Jun 2026 14:16:41 -0700 Subject: [PATCH 90/94] Revert n_params name and add n_fit_params attribute --- flystar/align.py | 54 ++++++------------- flystar/motion_model.py | 111 ++++++++++++++++++++-------------------- flystar/plots.py | 10 ++-- flystar/startables.py | 28 +++++----- 4 files changed, 91 insertions(+), 112 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 53a5413..7986bd8 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -275,7 +275,7 @@ def = None. If not None, then this should contain an array or list of transform motion_models.append(all_mm_map['Fixed']) # Sort by increasing n_params - motion_models = sorted(motion_models, key=lambda mm: mm.required_epochs) + motion_models = sorted(motion_models, key=lambda mm: mm.n_params) self.motion_models = motion_models # if motion_model_for_new_star is None: @@ -1030,7 +1030,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): if 'motion_model_used' in self.ref_table.keys(): motion_model_class_names += self.ref_table['motion_model_used'][keep_orig].tolist() vals_orig['motion_model_used'] = self.ref_table['motion_model_used'][keep_orig] - vals_orig['required_epochs'] = self.ref_table['required_epochs'][keep_orig] + vals_orig['n_params'] = self.ref_table['n_params'][keep_orig] # vals_orig['n_fit'] = self.ref_table['n_fit'][keep_orig] motion_model_col_names = motion_model.motion_model_param_names(motion_model_class_names, with_errors=True, with_fixed=True) for mm in motion_model_col_names: @@ -1074,33 +1074,13 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): # if (keep_orig is not None) and (sum(keep_orig) > 0): # Determine motion_model_used for keep_orig stars # Filter possible motion models based on available columns - motion_model_used, required_epochs = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) - - # motion_models_possible = [] - # for mm in self.motion_models: - # required_columns = mm.fit_param_names + mm.fixed_param_names - # if all(col in self.ref_table.colnames or (self.fixed_params_dict is not None and col in self.fixed_params_dict.keys()) for col in required_columns): - # motion_models_possible.append((mm, required_columns)) - - # # Check if values are finite for required columns in possible motion models - # motion_model_used = [] - # # for k in np.where(keep_orig)[0]: - # for k in range(len(self.ref_table)): - # for mm, req in motion_models_possible[::-1]: - # # if all(np.isfinite(self.ref_table[k][col]) for col in req if self.ref_table[col].dtype.kind in 'f'): - # req_col_in_table = [col for col in req if col in self.ref_table.colnames] - # req_col_in_dict = [col for col in req if (self.fixed_params_dict is not None) and (col in self.fixed_params_dict.keys())] - # # If requested column in table/fixed_params dict is numeric, check if values are finite. - # if all(np.isfinite(self.ref_table[col][k]) for col in req_col_in_table if np.issubdtype(self.ref_table[col].dtype, np.number)) \ - # and all(np.isfinite(self.fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(self.fixed_params_dict[col]).dtype, np.number)): - # motion_model_used.append(mm.name) - # break + motion_model_used, n_params = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) # Assign the determined motion models # self.ref_table['motion_model_used'][keep_orig] = motion_model_used self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') - # self.ref_table['n_fit'] = Column(required_epochs, name='n_fit', dtype=int) - self.ref_table['required_epochs'] = Column(required_epochs, name='required_epochs', dtype=int) + # self.ref_table['n_fit'] = Column(n_params, name='n_fit', dtype=int) + self.ref_table['n_params'] = Column(n_params, name='n_params', dtype=int) # Replace the originals if we are supposed to keep them fixed. if (keep_orig is not None) and (sum(keep_orig) > 0): @@ -1216,10 +1196,10 @@ def get_ref_list_from_table(self, epoch): # Calculate x, y, xe, ye if 'motion_model_used' not in self.ref_table.colnames: - motion_model_used, required_epochs = determine_motion_model(self.ref_table) + motion_model_used, n_params = determine_motion_model(self.ref_table) self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') - # self.ref_table['n_fit'] = Column(required_epochs, name='n_fit', dtype=int) - self.ref_table['required_epochs'] = Column(required_epochs, name='required_epochs', dtype=int) + # self.ref_table['n_fit'] = Column(n_params, name='n_fit', dtype=int) + self.ref_table['n_params'] = Column(n_params, name='n_params', dtype=int) x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) # else: @@ -1420,7 +1400,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot all_mm_map = motion_model.motion_model_map() motion_model_list = [all_mm_map[mm_name] for mm_name in motion_model_list] - motion_boot_min_epochs = np.max([mm.required_epochs for mm in motion_model_list]) + motion_boot_min_epochs = np.max([mm.n_params for mm in motion_model_list]) ### IF MEMORY PROBLEMS HERE: ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY @@ -2258,7 +2238,7 @@ def infer_positions(t, startable, motion_models=None, fixed_params_dict=None, re # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty # Sort motion models inversely by mm.n_params - motion_models = sorted(motion_models, key=lambda mm: mm.required_epochs, reverse=True) + motion_models = sorted(motion_models, key=lambda mm: mm.n_params, reverse=True) for mm in motion_models: if mm.name == 'Empty': x = startable['x'] @@ -2313,8 +2293,8 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None ------- motion_model_used : list List of motion model used for each star - required_epochs : list - List of required epochs for each star + n_params : list + List of n parameters per direction for each star """ if motion_models is None: @@ -2336,7 +2316,7 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None # Check if values are finite for required columns in possible motion models motion_model_used = [] - required_epochs = [] + n_params = [] for k in range(len(startable)): for mm, req_col_in_table, req_col_in_dict in motion_models_possible[::-1]: @@ -2344,9 +2324,9 @@ def determine_motion_model(startable, motion_models=None, fixed_params_dict=None if all(np.isfinite(startable[col][k]) for col in req_col_in_table if np.issubdtype(startable[col].dtype, np.number)) \ and all(np.isfinite(fixed_params_dict[col]) for col in req_col_in_dict if np.issubdtype(np.array(fixed_params_dict[col]).dtype, np.number)): motion_model_used.append(mm.name) - required_epochs.append(mm.required_epochs) + n_params.append(mm.n_params) break - return motion_model_used, required_epochs + return motion_model_used, n_params def get_all_epochs(t): @@ -2545,8 +2525,8 @@ def add_rows_for_new_stars(ref_table, star_list, idx_list, motion_model_name='Fi if col_name in fixed_params_dict.keys(): new_col_empty = fixed_params_dict[col_name] - elif col_name=='required_epochs': - new_col_empty = mm.required_epochs + elif col_name=='n_params': + new_col_empty = mm.n_params elif col_name=='motion_model_input': new_col_empty = motion_model_name elif col_name=='motion_model_used': diff --git a/flystar/motion_model.py b/flystar/motion_model.py index f75528d..778255a 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -10,10 +10,9 @@ class MotionModel(ABC): # Fit paramters: Shared fit parameters fit_param_names = [] - + n_fit_params = len(fit_param_names) # Number of fit parameters/required observations in each direction - n_params = len(fit_param_names) - required_epochs = int((n_params + 1) / 2) + n_params = int((n_fit_params + 1) / 2) # Fixed parameters: These are parameters that are required for the model, but are not # fit quantities. For example, RA and Dec in a parallax model. @@ -42,9 +41,9 @@ def _check_param_dimensions(self, fit_params, fit_params_errs, fixed_params_dict Parameters ---------- fit_params: array-like - Fit parameters, shape (N_params,) or (N_stars, N_params) + Fit parameters, shape (N_fit_params,) or (n_stars, N_fit_params) fit_params_errs: array-like - Errors of fit parameters, shape (N_params,) or (N_stars, N_params) + Errors of fit parameters, shape (N_fit_params,) or (n_stars, N_fit_params) fixed_params_dict : dict Dictionary of fixed parameters """ @@ -83,8 +82,8 @@ def run_fit( ): # Run a single fit (used both for overall fit + bootstrap iterations) if return_chi2: - return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf), np.nan, np.nan - return np.full(self.n_params, fill_value), np.full(self.n_params, np.inf) + return np.full(self.n_fit_params, fill_value), np.full(self.n_fit_params, np.inf), np.nan, np.nan + return np.full(self.n_fit_params, fill_value), np.full(self.n_fit_params, np.inf) def calc_weights(self, xe, ye, weighting='var'): if weighting=='std': @@ -174,18 +173,18 @@ def fit( # Bootstrap errors n_obs = len(t) - if (bootstrap > 0) and (n_obs > self.required_epochs): + if (bootstrap > 0) and (n_obs > self.n_params): rng = np.random.default_rng(seed) edx = np.arange(n_obs, dtype=int) # Precompute All Bootstrap Draws at Once # Ensure there are enough unique points in each bootstrap sample bdx_unique = np.stack([ - rng.choice(edx, size=self.required_epochs, replace=False) + rng.choice(edx, size=self.n_params, replace=False) for _ in range(bootstrap) ]) # Draw with replacement for the rest bdx_extra = np.stack([ - rng.choice(edx, size=n_obs - self.required_epochs, replace=True) + rng.choice(edx, size=n_obs - self.n_params, replace=True) for _ in range(bootstrap) ]) bdx_all = np.hstack((bdx_unique, bdx_extra)) @@ -235,10 +234,10 @@ def fit( # chi2_y = residual_y.T @ W_mat_y @ residual_y # if reduced: - # if len(dt) == self.required_epochs: + # if len(dt) == self.n_params: # return np.inf, np.inf # if not parallax: - # degree_of_freedom = len(x) - self.required_epochs + # degree_of_freedom = len(x) - self.n_params # else: # degree_of_freedom = 2*len(x) - len(self.fit_param_names) # chi2_x, chi2_y = chi2_x / degree_of_freedom, chi2_y / degree_of_freedom @@ -252,10 +251,10 @@ def calc_chi2(self, t, x, y, xe, ye, fit_params, fixed_params_dict=None, reduced chi2x = np.sum((x - x_pred)**2 / xe**2) chi2y = np.sum((y - y_pred)**2 / ye**2) if reduced: - if len(t) == self.required_epochs: + if len(t) == self.n_params: return np.inf, np.inf if not parallax: - degree_of_freedom = len(x) - self.required_epochs + degree_of_freedom = len(x) - self.n_params else: degree_of_freedom = 2*len(x) - len(self.fit_param_names) chi2x, chi2y = chi2x / degree_of_freedom, chi2y / degree_of_freedom @@ -268,9 +267,9 @@ class Empty(MotionModel): required_fixed_param_names = [] optional_fixed_params = {} + n_fit_params = len(fit_param_names) # Number of fit parameters/required observations in each direction - n_params = len(fit_param_names) - required_epochs = int((n_params + 1) / 2) + n_params = int((n_fit_params + 1) / 2) def __init__(self, **kwargs): """Empty motion model, returns nan for values and inf for uncertainties. @@ -289,7 +288,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t : float or array-like Time array, shape (N_times,) fit_params : array-like - Fit parameters, shape (N_params,) or (N_stars, N_params) + Fit parameters, shape (N_fit_params,) or (N_stars, N_fit_params) fit_param_errs : array-like, optional Uncertainties for fit parameters, not applicable for Empty model, by default None fixed_params_dict : dict, optional @@ -303,7 +302,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) - fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_fit_params) N_stars = fit_params.shape[0] N_times = len(t) @@ -370,8 +369,8 @@ def run_fit( self.fixed_params_dict = fixed_params_dict if verbose: warnings.warn(f"Empty data cannot be fit. Setting parameters to {fill_value} and uncertainties to np.inf.", OptimizeWarning, stacklevel=2) - params = np.full(self.n_params, fill_value) - param_errors = np.full(self.n_params, np.inf) + params = np.full(self.n_fit_params, fill_value) + param_errors = np.full(self.n_fit_params, np.inf) if return_chi2: return params, param_errors, np.nan, np.nan else: @@ -388,9 +387,9 @@ class Fixed(MotionModel): required_fixed_param_names = [] optional_fixed_params = {} + n_fit_params = len(fit_param_names) # Number of fit parameters/required observations in each direction - n_params = len(fit_param_names) - required_epochs = int((n_params + 1) / 2) + n_params = int((n_fit_params + 1) / 2) def __init__(self, **kwargs): # Must call after setting parameters. @@ -423,9 +422,9 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t : float or array-like Time array, shape (N_times,) fit_params : array-like - x0, y0 in shape (N_params,) or (N_stars, N_params) + x0, y0 in shape (N_fit_params,) or (N_stars, N_fit_params) fit_param_errs : array-like, optional - Uncertainties for x0, y0 in shape (N_params,) or (N_stars, N_params), by default None + Uncertainties for x0, y0 in shape (N_fit_params,) or (N_stars, N_fit_params), by default None fixed_params_dict : dict, optional Not applicable for Fixed, by default None @@ -437,7 +436,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): """ self.fixed_params_dict = fixed_params_dict t = np.atleast_1d(t) - fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_fit_params) self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) N_stars = fit_params.shape[0] @@ -465,7 +464,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fit_param_errs is None: return x, y - fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_fit_params) x0_err, y0_err = fit_param_errs.T # Return results in (N_stars, N_times) shape @@ -494,15 +493,15 @@ def run_fit( warnings.warn("Fixed model has no non-scipy fitter option. Running with scipy.") n_obs = len(t) - degree_of_freedom = n_obs - self.required_epochs + degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', OptimizeWarning, stacklevel=2 ) - params = np.full(self.n_params, fill_value) - param_errors = np.full(self.n_params, np.inf) + params = np.full(self.n_fit_params, fill_value) + param_errors = np.full(self.n_fit_params, np.inf) return params, param_errors, np.nan, np.nan # degree_of_freedom >= 0 @@ -552,9 +551,9 @@ class Linear(MotionModel): optional_fixed_params = {} fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) + n_fit_params = len(fit_param_names) # Number of fit parameters/required observations in each direction - n_params = len(fit_param_names) - required_epochs = int((n_params + 1) / 2) + n_params = int((n_fit_params + 1) / 2) def __init__(self, **kwargs): # Must call after setting parameters. @@ -589,9 +588,9 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t : float or array-like Time(s) at which to evaluate the model fit_params : array-like - x0, vx, y0, vy in shape (N_params,) or (N_stars, N_params) + x0, vx, y0, vy in shape (N_fit_params,) or (N_stars, N_fit_params) fit_param_errs : array-like, optional - Uncertainties of fit parameters in shape (N_params,) or (N_stars, N_params), by default None + Uncertainties of fit parameters in shape (N_fit_params,) or (N_stars, N_fit_params), by default None fixed_params_dict : dict t0, shape (1,) or (N_stars,) @@ -606,7 +605,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) - fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_fit_params) N_stars = fit_params.shape[0] N_times = len(t) @@ -633,7 +632,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fit_param_errs is None: return x, y - fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_fit_params) x0_err, vx_err, y0_err, vy_err = fit_param_errs.T # Each shape (N_stars,) x_err = np.hypot(x0_err[:, np.newaxis], vx_err[:, np.newaxis] * dt) # Shape (N_stars, N_times) y_err = np.hypot(y0_err[:, np.newaxis], vy_err[:, np.newaxis] * dt) # Shape (N_stars, N_times) @@ -669,15 +668,15 @@ def run_fit( ye = np.atleast_1d(ye) n_obs = len(t) - degree_of_freedom = n_obs - self.required_epochs + degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', OptimizeWarning, stacklevel=2 ) - params = np.full(self.n_params, fill_value) - param_errors = np.full(self.n_params, np.inf) + params = np.full(self.n_fit_params, fill_value) + param_errors = np.full(self.n_fit_params, np.inf) if return_chi2: return params, param_errors, np.nan, np.nan else: @@ -791,9 +790,9 @@ class Acceleration(MotionModel): optional_fixed_params = {} fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) + n_fit_params = len(fit_param_names) # Number of required observations in each direction - n_params = len(fit_param_names) - required_epochs = int((n_params + 1) / 2) + n_params = int((n_fit_params + 1) / 2) def __init__(self): # Must call after setting parameters. @@ -830,9 +829,9 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t : float or array-like Time(s) at which to evaluate the model fit_params : array-like - x0, vx, ax, y0, vy, ay in shape (N_params,) or (N_stars, N_params) + x0, vx, ax, y0, vy, ay in shape (N_fit_params,) or (N_stars, N_fit_params) fit_param_errs : array-like, optional - Fit parameter uncertainties with shape (N_stars, N_params) or (N_params,), by default None + Fit parameter uncertainties with shape (N_stars, N_fit_params) or (N_fit_params,), by default None fixed_params_dict : dict t0, shape (1,) or (N_stars,) @@ -847,7 +846,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) - fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_fit_params) N_stars = fit_params.shape[0] N_times = len(t) @@ -874,7 +873,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fit_param_errs is None: return x, y - fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_fit_params) x0_err, vx0_err, ax_err, y0_err, vy0_err, ay_err = fit_param_errs.T x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx0_err[:, np.newaxis] * dt)**2 + (0.5 * ax_err[:, np.newaxis] * dt**2)**2) # Shape (N_stars, N_times) y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy0_err[:, np.newaxis] * dt)**2 + (0.5 * ay_err[:, np.newaxis] * dt**2)**2) # Shape (N_stars, N_times) @@ -916,15 +915,15 @@ def run_fit( warnings.warn("Acceleration model has no non-scipy fitter option. Running with scipy.") n_obs = len(t) - degree_of_freedom = n_obs - self.required_epochs + degree_of_freedom = n_obs - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', OptimizeWarning, stacklevel=2 ) - params = np.full(self.n_params, fill_value) - param_errors = np.full(self.n_params, np.inf) + params = np.full(self.n_fit_params, fill_value) + param_errors = np.full(self.n_fit_params, np.inf) if return_chi2: return params, param_errors, np.nan, np.nan else: @@ -971,9 +970,9 @@ class Parallax(MotionModel): fixed_param_names = required_fixed_param_names + list(optional_fixed_params.keys()) + n_fit_params = len(fit_param_names) # Number of required observations in each direction - n_params = len(fit_param_names) - required_epochs = int((n_params + 1) / 2) + n_params = int((n_fit_params + 1) / 2) def __init__(self): super().__init__() @@ -1066,7 +1065,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): t : float or array-like Times at which to evaluate the model fit_params : array-like - x0, vx, y0, vy, pi in shape (N_params,) or (N_stars, N_params) + x0, vx, y0, vy, pi in shape (N_fit_params,) or (N_stars, N_fit_params) fit_param_errs : array-like, optional Uncertainties in fit parameters, by default None fixed_params : dict @@ -1087,7 +1086,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): self._check_param_dimensions(fit_params, fit_param_errs, fixed_params_dict) t = np.atleast_1d(t) - fit_params = np.atleast_2d(fit_params) # (N_stars, N_params) + fit_params = np.atleast_2d(fit_params) # (N_stars, N_fit_params) N_stars = fit_params.shape[0] N_times = len(t) @@ -1125,7 +1124,7 @@ def model(self, t, fit_params, fit_param_errs=None, fixed_params_dict=None): if fit_param_errs is None: return x, y - fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_params) + fit_param_errs = np.atleast_2d(fit_param_errs) # (N_stars, N_fit_params) x0_err, vx_err, y0_err, vy_err, pi_err = fit_param_errs.T x_err = np.sqrt(x0_err[:, np.newaxis]**2 + (vx_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[:, 0, :])**2) # Shape (N_stars, N_times) y_err = np.sqrt(y0_err[:, np.newaxis]**2 + (vy_err[:, np.newaxis] * dt)**2 + (pi_err[:, np.newaxis] * self.pvec[:, 1, :])**2) # Shape (N_stars, N_times) @@ -1168,15 +1167,15 @@ def run_fit( obsLocation = fixed_params_dict['obsLocation'] n_fit = len(t) - degree_of_freedom = n_fit - self.required_epochs + degree_of_freedom = n_fit - self.n_params # Not enough data points to fit model if degree_of_freedom < 0: warnings.warn( f'Not enough data points to fit model. Setting parameters to {fill_value} and uncertainties to np.inf.', OptimizeWarning, stacklevel=2 ) - params = np.full(self.n_params, fill_value) - param_errors = np.full(self.n_params, np.inf) + params = np.full(self.n_fit_params, fill_value) + param_errors = np.full(self.n_fit_params, np.inf) if return_chi2: return params, param_errors, np.nan, np.nan else: @@ -1298,5 +1297,5 @@ def motion_model_map(): [(mm.__name__, mm) for mm in MotionModel.__subclasses__()] ) # Sort by required epochs - mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].required_epochs)) + mm_map = dict(sorted(mm_map.items(), key=lambda item: item[1].n_params)) return mm_map \ No newline at end of file diff --git a/flystar/plots.py b/flystar/plots.py index 083676d..7213174 100755 --- a/flystar/plots.py +++ b/flystar/plots.py @@ -2236,9 +2236,9 @@ def plot_chi2_dist(tab, Ndetect, xlim=40, n_bins=50, boot_err=False): idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract 2 to get Ndof - n_params = np.nanmean(tab['required_epochs'][idx]) + n_params = np.nanmean(tab['n_params'][idx]) Ndof = Ndetect - n_params - if len(np.unique(tab['required_epochs'][idx]))>1: + if len(np.unique(tab['n_params'][idx]))>1: print("** Warning: using average Ndof for multiple motion models. **") print("** Consider using plot_chi2_reduced_dist. **") print(f"Ndof={Ndof:.2f}, Ndetect={Ndetect}, Nparams={n_params:.2f}") @@ -2321,7 +2321,7 @@ def plot_chi2_reduced_dist(tab, Ndetect, xlim=8, n_bins=50, boot_err=False): fnd = np.array(fnd_list) idx = np.where(fnd == Ndetect)[0] - n_params = tab['required_epochs'] + n_params = tab['n_params'] Ndof = Ndetect - n_params print("Reduced chi2 for Ndetect="+str(Ndetect)) chi2_bins = np.linspace(0, xlim, n_bins) @@ -2405,7 +2405,7 @@ def plot_chi2_dist_per_filter(tab, Ndetect, xlim=40, n_bins=50, filter=None, boo idx = np.where(fnd == Ndetect)[0] # Fitting position and velocity... so subtract n_params to get Ndof - n_params = np.nanmean(tab['required_epochs'][idx]) + n_params = np.nanmean(tab['n_params'][idx]) Ndof = Ndetect - n_params print(f"Ndof={Ndof}, Ndetect={Ndetect}, Nparams={n_params}") chi2_xaxis = np.linspace(0, xlim, xlim*3) @@ -2871,7 +2871,7 @@ def rs(x): chi2_y = np.sum(sigY**2) chi2_m = np.sum(sigM**2) - dof = (len(tab['x'][ii])-tab['required_epochs'][ii]).astype(int) + dof = (len(tab['x'][ii])-tab['n_params'][ii]).astype(int) dofM = len(m) - 1 chi2_red_x = chi2_x / dof diff --git a/flystar/startables.py b/flystar/startables.py index d4377fa..7a245ca 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -567,12 +567,12 @@ def fit_motion_models( Empty and Fixed models are always added automatically for stars with n_fit = 0 or 1. The behavior is as follows: 1. If 'motion_model_input' column is NOT in table: - - Use the most complex model that has enough parameters to fit the data (n_fit >= required_epochs). + - Use the most complex model that has enough parameters to fit the data (n_fit >= n_params). - If multiple models are supplied, prioritize the model with the most parameters to fit. - If multiple models have the same number of parameters, raise AssertionError: not sure which to use. 2. If 'motion_model_input' column IS in table: - Use the model specified in the 'motion_model_input' column. - - If not enough data points to fit the specified model, use the most complex model in any 'motion_model_input' column that has enough parameters to fit the data (n_fit >= required_epochs) among the provided motion_models and 'motion_model_input'. + - If not enough data points to fit the specified model, use the most complex model in any 'motion_model_input' column that has enough parameters to fit the data (n_fit >= n_params) among the provided motion_models and 'motion_model_input'. The actual used motion model is stored in the 'motion_model_used' column. The default motion_models are [Empty, Fixed, Linear]. fixed_params_dict : dict, optional Dictionary of fixed parameters for motion models, e.g., {'t0': 0., 'ra': np.array([...]), 'dec': np.array([...])}. @@ -657,16 +657,16 @@ def fit_motion_models( motion_models.append(all_mm_map[mm_name]) # Sort motion models by required epochs - motion_models = sorted(motion_models, key=lambda mm: mm.required_epochs) + motion_models = sorted(motion_models, key=lambda mm: mm.n_params) input_mm_map = {mm.name: mm for mm in motion_models} - mm_required_epochs = np.sort([mm.required_epochs for mm in motion_models]) + mm_n_params = np.sort([mm.n_params for mm in motion_models]) if 'motion_model_input' not in self.colnames: - # If motion_model_input column is not provided, assert that motion model required_epochs are unique and sorted + # If motion_model_input column is not provided, assert that motion model n_params are unique and sorted # Otherwise the fitter does not know which motion model to use based on n_obs - assert len(mm_required_epochs) == len(set(mm_required_epochs)), \ - f"fit_motion_models: Provided motion model required_epochs are not unique! Motion Models are: {[_.name for _ in motion_models]}" + '\n' + "Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." + assert len(mm_n_params) == len(set(mm_n_params)), \ + f"fit_motion_models: Provided motion model n_params are not unique! Motion Models are: {[_.name for _ in motion_models]}" + '\n' + "Cannot decide which motion model to use based on n_obs. Please provide unique motion_models or a 'motion_model_input' column." ########################### @@ -768,13 +768,13 @@ def fit_motion_models( n_fit = np.array(self['n_fit']) if 'motion_model_input' in self.colnames: # Determine which motion model to use based on motion_model_input column - # If n_fit < required_epochs for the input motion model, use the most complicated motion model with n_fit >= required_epochs - required_params = np.array([all_mm_map[mm_name].required_epochs for mm_name in self['motion_model_input']]) + # If n_fit < n_params for the input motion model, use the most complicated motion model with n_fit >= n_params + required_params = np.array([all_mm_map[mm_name].n_params for mm_name in self['motion_model_input']]) reassign_mm = n_fit < required_params mm_digitized = np.digitize( x=n_fit[reassign_mm], - bins=mm_required_epochs + bins=mm_n_params ) - 1 # Convert to 0-based index # Assign motion models to stars @@ -782,10 +782,10 @@ def fit_motion_models( self['motion_model_used'][reassign_mm] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') else: - # If motion_model_input column is not provided, use the most complicated model in motion_models with n_fit >= required_epochs. + # If motion_model_input column is not provided, use the most complicated model in motion_models with n_fit >= n_params. mm_digitized = np.digitize( x=n_fit, - bins=mm_required_epochs + bins=mm_n_params ) - 1 # Convert to 0-based index # Assign motion models to stars @@ -974,9 +974,9 @@ def fit_motion_models( self['chi2_y'][unique_index] = chi2_y_array self['t0'][unique_index] = t0[unique_index] - # Update required_epochs regardless of selections + # Update n_params regardless of selections for mm in motion_model_used: - self['required_epochs'][self['motion_model_used'] == mm.name] = mm.required_epochs + self['n_params'][self['motion_model_used'] == mm.name] = mm.n_params return def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): From 3d70e5a86b34725f580dd7f477f7dc92f9f2e053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 18 Jun 2026 17:51:06 -0700 Subject: [PATCH 91/94] Search for fixed params in the order of fixed_params_dict -> table columns -> meta data -> default value; Added random seed control in bootstrap functions. --- flystar/align.py | 64 ++++------------ flystar/motion_model.py | 9 ++- flystar/startables.py | 118 +++++++++++++++++++---------- flystar/tests/test_align.py | 20 +++-- flystar/tests/test_motion_model.py | 5 +- 5 files changed, 111 insertions(+), 105 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 7986bd8..0394b0b 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1000,12 +1000,12 @@ def update_ref_table_from_list(self, star_list, star_list_T, ii, idx_ref, idx_li return - def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): + def update_ref_table_aggregates(self, keep_orig=None, n_boot=0, seed=None): """ Average positions or fit velocities. Average magnitudes. Calculate bootstrap errors if desired. - Update the use_in_trans values as needed. TODO: ???? + Update the use_in_trans values as needed. TODO: ????. Updates aggregate columns in self.ref_table in place. @@ -1016,6 +1016,9 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): Boolean array indicating which stars to keep original values for, by default None n_boot : int, optional Number of bootstrap iterations, by default 0 + seed : int, optional + Random seed for reproducible bootstrap results, by default None + """ # Keep track of the original reference values. # In certain cases, we will NOT update these. @@ -1062,6 +1065,7 @@ def update_ref_table_aggregates(self, keep_orig=None, n_boot=0): absolute_sigma=self.absolute_sigma, select_stars=fit_star_idxs, bootstrap=n_boot, + seed=seed, verbose=self.verbose ) # Combine (transformed) magnitudes @@ -1202,50 +1206,6 @@ def get_ref_list_from_table(self, epoch): self.ref_table['n_params'] = Column(n_params, name='n_params', dtype=int) x, y, xe, ye = self.ref_table.infer_positions(epoch, fixed_params_dict=self.fixed_params_dict) - # else: - # # Otherwise, infer positions using the most complex motion model with the existing columns, until it reaches Fixed or Empty - # for mm in self.motion_models[::-1]: - # required_columns = mm.fit_param_names + mm.fixed_param_names - # if all([(param in self.ref_table.colnames) or (self.fixed_params_dict is not None and param in self.fixed_params_dict.keys()) for param in required_columns]): - # # Check if the values are finite for non-string columns in the required columns for this motion model. If not, skip to the next motion model. - - # if any([param not in self.ref_table.colnames for param in required_columns]): - # # If any required column is missing, skip to the next motion model. - # continue - - # if not all([np.isfinite(self.ref_table[param]).all() for param in required_columns if self.ref_table[param].dtype.kind in 'if']): - # # If any required column has non-finite values, skip to the next motion model. - # continue - - # print(f"Inferring positions using motion model {mm.name}.") - # # If we have error columns for all fit parameters, then use them in the model inference. Otherwise, just use the fit parameters without errors. - # if all([f'{param}_err' in self.ref_table.colnames for param in mm.fit_param_names]) and all([np.isfinite(self.ref_table[f'{param}_err']).all() for param in mm.fit_param_names]): - # x, y, xe, ye = mm().model( - # t=epoch, - # fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, - # fit_param_errs=np.array([self.ref_table[f'{param}_err'] for param in mm.fit_param_names]).T, - # fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} - # ) - # else: - # x, y = mm().model( - # t=epoch, - # fit_params=np.array([self.ref_table[param] for param in mm.fit_param_names]).T, - # fixed_params_dict={param: self.ref_table[param] for param in mm.fixed_param_names} - # ) - # xe = None - # ye = None - # break - - # # No velocities... just used average positions. - # x = self.ref_table['x0'] - # y = self.ref_table['y0'] - - # if 'x0_err' in self.ref_table.colnames: - # xe = self.ref_table['x0_err'] - # ye = self.ref_table['y0_err'] - # else: - # xe = None - # ye = None m = self.ref_table['m0'] @@ -1292,7 +1252,7 @@ def reset_ref_values(self, exclude=None): return - def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_bootstrap=True, update_errors=False, verbose=True): + def calc_bootstrap_errors(self, n_boot=100, seed=None, boot_epochs_min=-1, calc_vel_in_bootstrap=True, update_errors=False, verbose=True): """ Function to calculate bootstrap errors for the transformations as well as the proper motions. For each iteration, this will: @@ -1321,6 +1281,9 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot PM bootstrap is only done for final proper motion calculation (e.g., not for each iteration of the starlist for matching) + seed: int, optional + Random seed for reproducible bootstrap results. + boot_epochs_min: int or -1 In order to be included in bootstrap analysis, non-reference stars must be detected in at least boot_epochs_min epochs. If boot_epochs_min = -1, then all stars will @@ -1406,6 +1369,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot ### DEFINE MEAN, STD VARIABLES AND BUILD THEM RATHER THAN SAVING FULL ARRAY ### DECREASE PRECISION ON ARRAYS (32 bit instead of 64: dtype=np.float32) ### AT SOME POINT, NEED TO CONVERT BACK (LOOK UP HOW TO DO THIS CAREFULLY) + rng = np.random.default_rng(seed) for ii in tqdm(range(n_boot), desc='Bootstrap iterations', disable=not verbose): # Recalculate transformations using bootstrap sample of # reference stars. Use a loop for each epoch here, so we @@ -1424,7 +1388,7 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # Extract bootstrap sample of matched reference stars for this epoch #good = np.where(~np.isnan(ref_table['x_orig'][idx_ref][:,jj])) good = np.where( (ref_table['used_in_trans'][:,jj] == True) & (~np.isnan(ref_table['x_orig'][:,jj])) ) - samp_idx = np.random.choice(good[0], len(good[0]), replace=True) + samp_idx = rng.choice(good[0], len(good[0]), replace=True) # Get reference star positions in particular epoch from ref_list. t_epoch = t_arr[jj] @@ -1526,9 +1490,9 @@ def calc_bootstrap_errors(self, n_boot=100, boot_epochs_min=-1, calc_vel_in_boot # for each star, if desired. Draw a full-sample bootstrap over the epochs # for each star, and then run it through the startable fit_velocities machinery if calc_vel_in_bootstrap: - boot_idx = np.random.choice(np.arange(0, n_epochs, 1), size=n_epochs) + boot_idx = rng.choice(np.arange(0, n_epochs, 1), size=n_epochs) while len(np.unique(boot_idx)) < motion_boot_min_epochs: - boot_idx = np.random.choice(np.arange(0, n_epochs, 1), size=n_epochs) + boot_idx = rng.choice(np.arange(0, n_epochs, 1), size=n_epochs) t_boot = t_arr[boot_idx] star_table = StarTable(name=ref_table['name'], diff --git a/flystar/motion_model.py b/flystar/motion_model.py index 778255a..d4750bc 100644 --- a/flystar/motion_model.py +++ b/flystar/motion_model.py @@ -104,8 +104,8 @@ def fit( params_guess=None, return_chi2=False, bootstrap=0, - verbose=True, - seed=None + seed=None, + verbose=True ): """Fit stellar motion parameters @@ -137,10 +137,11 @@ def fit( Return chi^2 values along with parameters and uncertainties in params, param_errs, chi2_x, chi2_y, by default False bootstrap : int, optional Bootstrapping uncertainties, by default 0 - verbose : bool, optional - Print warning messages, by default True seed : int, optional Seed for the random number generator, by default None + verbose : bool, optional + Print warning messages, by default True + Returns ------- params, param_errs(, chi2_x, chi2_y) diff --git a/flystar/startables.py b/flystar/startables.py index 7a245ca..0062921 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -553,10 +553,11 @@ def fit_motion_models( absolute_sigma=True, select_stars=None, bootstrap=0, - verbose=True, + seed=None, mask_value=None, mask_lists=None, - fill_value=np.nan + fill_value=np.nan, + verbose=True ): """Fit velocity for star table @@ -589,15 +590,18 @@ def fit_motion_models( Indices of stars to fit, by default None (fit all stars) bootstrap : int, optional Number of bootstrap for uncertainty resampling, by default 0 - verbose : bool, optional - Print verbose messages or not, by default True + seed : int, optional + Random seed for bootstrap resampling, by default None mask_value : float, optional Values to mask in data, by default None mask_lists : list of int, optional Indices of lists to mask/exclude from fitting, by default None fill_value : float, optional Fill value when there is not enough data points to fit, by default np.nan + verbose : bool, optional + Print verbose messages or not, by default True + Raises ------ ValueError @@ -611,14 +615,14 @@ def fit_motion_models( ####### Check Params ###### ########################### if weighting not in ['var', 'std']: - raise ValueError(f"fit_motion_model: Weighting must either be 'var' or 'std', not {weighting}!") + raise ValueError(f"fit_motion_models: Weighting must either be 'var' or 'std', not {weighting}!") if ('t' not in self.colnames) and ('list_times' not in self.meta): - raise KeyError("fit_motion_model: Failed to access time values. No 't' column in table, no 'list_times' in meta.") + raise KeyError("fit_motion_models: Failed to access time values. No 't' column in table, no 'list_times' in meta.") # Check if we have the required columns if not all([_ in self.colnames for _ in ['x', 'y']]): - raise KeyError(f"fit_motion_model: Missing required columns in the table: {', '.join(['x', 'y'])}!") + raise KeyError(f"fit_motion_models: Missing required columns in the table: {', '.join(['x', 'y'])}!") # Make a copy of fixed_params_dict to avoid modifying the original one outside the function fixed_params_dict = copy.deepcopy(fixed_params_dict) @@ -626,7 +630,7 @@ def fit_motion_models( # Check fixed_params_dict is a dict if fixed_params_dict is not None: if not isinstance(fixed_params_dict, dict): - raise ValueError("fit_motion_model: fixed_params_dict must be a dictionary!") + raise ValueError("fit_motion_models: fixed_params_dict must be a dictionary!") # Convert motion_models to MotionModel objects if they are strings: if motion_models is None: @@ -651,7 +655,7 @@ def fit_motion_models( if 'motion_model_input' in self.colnames: input_mm_names = np.unique(self['motion_model_input']) assert all([name in all_mm_map.keys() for name in input_mm_names]), \ - f"fit_motion_model: Unknown motion model name(s) in 'motion_model_input' column. Available motion models are: {', '.join(all_mm_map.keys())}." + f"fit_motion_models: Unknown motion model name(s) in 'motion_model_input' column. Available motion models are: {', '.join(all_mm_map.keys())}." for mm_name in input_mm_names: if mm_name not in mm_names: motion_models.append(all_mm_map[mm_name]) @@ -721,11 +725,9 @@ def fit_motion_models( t_data = copy.deepcopy(np.array(self.meta['list_times']))[list_indices] t_data = np.broadcast_to(t_data, x_data.shape) + fixed_params_dict = {} if fixed_params_dict is None else fixed_params_dict # Add default t0 if not provided in fixed_params_dict - if fixed_params_dict is None: - weights = 1/np.hypot(xe_data, ye_data) if (xe_data is not None) and (ye_data is not None) else None - fixed_params_dict = {'t0': np.average(t_data, axis=1, weights=weights)} - elif 't0' not in fixed_params_dict: + if 't0' not in fixed_params_dict: weights = 1/np.hypot(xe_data, ye_data) if (xe_data is not None) and (ye_data is not None) else None fixed_params_dict['t0'] = np.average(t_data, axis=1, weights=weights) else: @@ -791,12 +793,6 @@ def fit_motion_models( # Assign motion models to stars self['motion_model_used'] = np.array([motion_models[d].name for d in mm_digitized], dtype='U20') - # Add default obsLocation if not provided in fixed_params_dict - mm_used = np.unique(self['motion_model_used'].name) - if 'Parallax' in mm_used and 'obsLocation' not in fixed_params_dict: - fixed_params_dict['obsLocation'] = 'earth' - - ############################ # Prepare Fixed Parameters # ############################ @@ -808,6 +804,7 @@ def fit_motion_models( # Check required fixed parameters for param in mm.required_fixed_param_names: if param not in fixed_params_dict: + # If not provided in fixed_params_dict, it must be in table columns if param in self.colnames: fixed_params_dict[param] = self[param].data else: @@ -818,13 +815,17 @@ def fit_motion_models( # Set to default value if not provided in fixed_params_dict or in self for param, value in mm.optional_fixed_params.items(): if param not in fixed_params_dict: + # If param is not provided in fixed_params_dict if param in self.colnames: + # Set to column value if column exists fixed_params_dict[param] = self[param].data else: + # Set to default value if neither in columns nor provided in fixed_params_dict fixed_params_dict[param] = value + self.meta[param] = value if raise_key_error: - raise KeyError(f"fit_motion_model: Missing required fixed parameter(s) for the motion models used: {', '.join(missing_params)}! Please provide them in fixed_params_dict or as columns in the table.") + raise KeyError(f"fit_motion_models: Missing required fixed parameter(s) for the motion models used: {', '.join(missing_params)}! Please provide them in fixed_params_dict or as columns in the table.") # Prepare fixed_params_dict for each star @@ -847,7 +848,7 @@ def fit_motion_models( ############################ # Fill table with all possible motion model parameter names as new columns. new_col_list = motion_model.motion_model_param_names(motion_model_used, with_errors=True, with_fixed=False) - new_col_list += ['chi2_x', 'chi2_y', 'required_epochs'] + new_col_list += ['chi2_x', 'chi2_y', 'n_params'] if 't0' not in new_col_list: new_col_list.append('t0') @@ -956,9 +957,10 @@ def fit_motion_models( weighting=weighting, use_scipy=use_scipy, absolute_sigma=absolute_sigma, - bootstrap=bootstrap, fill_value=fill_value, return_chi2=True, + bootstrap=bootstrap, + seed=seed, verbose=verbose ) params_array[idx] = params @@ -988,7 +990,7 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): Times at which to predict positions. Scalar, or (N_times,) array, or (N_stars, N_times) array. fixed_params_dict : None or dict, optional Dictionary of fixed parameters to use for prediction. - If not provided, will try to look for fixed parameters in the table columns. + If not provided, will try to look for fixed parameters in the meta data then in table columns. If fixed params are found in both the table and the fixed_params_dict, the values in the table will be used and the fixed_params_dict values will be ignored, by default None fill_value : float, optional @@ -1000,7 +1002,7 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): Arrays of predicted x, y positions and their uncertainties xe, ye, with shape (N_stars, N_times) or (N_stars,) if N_times=1, or (N_times,) if N_stars=1, or scalar. """ assert 'motion_model_used' in self.colnames, \ - "infer_positions: 'motion_model_used' column not found in the table. Please run fit_motion_model() first." + "infer_positions: 'motion_model_used' column not found in the table. Please run fit_motion_models() first." N_stars = len(self) times = np.atleast_1d(times) @@ -1014,11 +1016,12 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): # Calculate the dictionary of {motion_model: indices of stars with this motion model} for faster access during prediction unique_motion_models, unique_inv_indices = np.unique(self['motion_model_used'], return_inverse=True) indices_by_motion_model = {key: np.flatnonzero(unique_inv_indices == k) for k, key in enumerate(unique_motion_models)} - + + mm_map = motion_model.motion_model_map() # Prepare fit_params, fixed_params, fit_param_errs for each star for unique_motion_model, unique_index in indices_by_motion_model.items(): # Create motion model instance - motion_model_instance = motion_model.motion_model_map()[unique_motion_model]() + motion_model_instance = mm_map[unique_motion_model]() # Prepare parameters for prediction fit_params = np.array([ self[param_name][unique_index] for param_name in motion_model_instance.fit_param_names @@ -1028,26 +1031,57 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): self[param_name + '_err'][unique_index] for param_name in motion_model_instance.fit_param_names ]).T # shape (N_stars_this_model, N_params) - fixed_params = {} - for param_name in motion_model_instance.fixed_param_names: - col_name = copy.deepcopy(param_name) - # If column not in table, check if it's provided in fixed_params_dict. If not, raise error. If provided, use the value from fixed_params_dict for all stars. - if (col_name not in self.colnames) and (f'{col_name}_mm' not in self.colnames): - if col_name in fixed_params_dict: - fixed_params[param_name] = fixed_params_dict[col_name] - continue + # Construct fixed_params: Look for fixed_params_dict -> table columns -> meta data -> default value + fixed_params = fixed_params_dict.copy() if fixed_params_dict is not None else {} + for param in motion_model_instance.required_fixed_param_names: + if param not in fixed_params: + # If required fixed param not provided, find it in the table columns or meta data + if param in self.colnames: + fixed_params[param] = self[param][unique_index] + elif param in self.meta: + fixed_params[param] = self.meta[param] else: - raise KeyError(f"infer_positions: Fixed parameter '{param_name}' not found in table columns or fixed_params_dict. Please provide the value for this parameter in fixed_params_dict or add a column named '{param_name}' to the table.") + raise KeyError(f"infer_positions: Required fixed parameter '{param}' not found for motion model '{unique_motion_model}'. Please provide it in fixed_params_dict, or add it as a column in the table, or add it to the meta data.") + else: + fixed_params[param] = fixed_params_dict[param] - # If original table has column and fit_motion_model added the column with _mm suffix, use the _mm column for prediction. - if param_name + '_mm' in self.colnames: - col_name = param_name + '_mm' - fixed_params[param_name] = self[col_name][unique_index] + for param, default_value in motion_model_instance.optional_fixed_params.items(): + if param not in fixed_params: + # If optional fixed param not provided, find it in the table columns or meta data, otherwise use default value + if param in self.colnames: + fixed_params[param] = self[param][unique_index] + elif param in self.meta: + fixed_params[param] = self.meta[param] + else: + fixed_params[param] = default_value + else: + fixed_params[param] = fixed_params_dict[param] - if (param_name == 'obsLocation'): - assert np.unique(fixed_params[param_name]).size == 1, \ + # Special case for obsLocation: no vectorization implemented yet + if (param == 'obsLocation'): + assert np.unique(fixed_params[param]).size == 1, \ "infer_positions: obsLocation fixed parameter has different values for different stars. Vectorized handling not implemented yet." - fixed_params[param_name] = fixed_params[param_name][0] + fixed_params[param] = fixed_params[param][0] + + # for param_name in motion_model_instance.fixed_param_names: + # col_name = copy.deepcopy(param_name) + # # If column not in table, check if it's provided in fixed_params_dict. If not, raise error. If provided, use the value from fixed_params_dict for all stars. + # if (col_name not in self.colnames) and (f'{col_name}_mm' not in self.colnames): + # if col_name in fixed_params_dict: + # fixed_params[param_name] = fixed_params_dict[col_name] + # continue + # else: + # raise KeyError(f"infer_positions: Fixed parameter '{param_name}' not found in table columns or fixed_params_dict. Please provide the value for this parameter in fixed_params_dict or add a column named '{param_name}' to the table.") + + # # If original table has column and fit_motion_models added the column with _mm suffix, use the _mm column for prediction. + # if param_name + '_mm' in self.colnames: + # col_name = param_name + '_mm' + # fixed_params[param_name] = self[col_name][unique_index] + + # if (param_name == 'obsLocation'): + # assert np.unique(fixed_params[param_name]).size == 1, \ + # "infer_positions: obsLocation fixed parameter has different values for different stars. Vectorized handling not implemented yet." + # fixed_params[param_name] = fixed_params[param_name][0] # Predict positions # shape = (N_stars_this_model, N_times) or (N_stars_this_model,) if N_times=1 or (N_times,) if N_stars_this_model=1 or scalar diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index b914200..1e4ffdf 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -587,7 +587,7 @@ def test_bootstrap(): assert 'vye_boot' not in match1.ref_table.keys() # Run bootstrap: no boot_epochs_min - match1.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min) + match1.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min, seed=42) # Make sure columns exist, and none of them are nan values assert np.sum(np.isnan(match1.ref_table['xe_boot'])) == 0 assert np.sum(np.isnan(match1.ref_table['ye_boot'])) == 0 @@ -616,7 +616,7 @@ def test_bootstrap(): # Now run_calc_bootstrap_error, with boot_epochs_min engaged boot_epochs_min2 = 2 - match2.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min2) + match2.calc_bootstrap_errors(n_boot=n_boot, boot_epochs_min=boot_epochs_min2, seed=42) # Make sure boot_epochs_min cut worked as intended out = match2.ref_table @@ -698,7 +698,7 @@ def test_calc_vel_in_bootstrap(): # Run calc_bootstrap_error function with calc_vel_in_bootstrap=True. # Make sure bootstrap velocity errors are calculated and valid n_boot = 50 - match_vel.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=True) + match_vel.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=True, seed=42) assert 'xe_boot' in match_vel.ref_table.keys() assert np.sum(np.isnan(match_vel.ref_table['xe_boot'])) == 0 @@ -706,7 +706,7 @@ def test_calc_vel_in_bootstrap(): assert np.sum(np.isnan(match_vel.ref_table['vx_err_boot'])) == 0 # Run without calc_vel_in_bootstrap, make sure velocities are NOT calculated - match.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=False) + match.calc_bootstrap_errors(n_boot=n_boot, calc_vel_in_bootstrap=False, seed=42) assert 'xe_boot' in match.ref_table.keys() assert np.sum(np.isnan(match.ref_table['xe_boot'])) == 0 @@ -758,7 +758,7 @@ def test_transform_xym(): verbose=False) match1.fit() - match1.calc_bootstrap_errors(n_boot=n_boot) + match1.calc_bootstrap_errors(n_boot=n_boot, seed=42) # Make sure all transformations have mag_offset = 0 trans_list = match1.trans_list @@ -793,7 +793,7 @@ def test_transform_xym(): verbose=False) match2.fit() - match2.calc_bootstrap_errors(n_boot=n_boot) + match2.calc_bootstrap_errors(n_boot=n_boot, seed=42) # Make sure all transformations have correct mag offset @@ -1026,6 +1026,14 @@ def make_fake_starlists_poly1(seed=-1): yde = ype mde = lis['m0_err'] + # fig, ax = plt.subplots() + # ax.scatter(x0, y0, s=2, label='Reference') + # ax.scatter(xd, yd, s=2, label='Starlist') + # ax.set_xlabel('X (pix)') + # ax.set_ylabel('Y (pix)') + # ax.legend() + # plt.show() + # Save the new list as a starlist. new_lis = starlists.StarList([lis['name'], md, mde, xd, xde, yd, yde, t], names=('name', 'm', 'me', 'x', 'xe', 'y', 'ye', 't')) diff --git a/flystar/tests/test_motion_model.py b/flystar/tests/test_motion_model.py index 5bd4ad2..de67d65 100644 --- a/flystar/tests/test_motion_model.py +++ b/flystar/tests/test_motion_model.py @@ -131,8 +131,7 @@ def test_Linear(): fit_param_errs=np.array([x0_err_batch, vx_err_batch, y0_err_batch, vy_err_batch]).T, fixed_params_dict={'t0': t0_batch} ) - - + np.testing.assert_allclose(x_t_batch, (x0_batch+(t_batch-t0_batch)*vx_batch), atol=1e-5) np.testing.assert_allclose(y_t_batch, (y0_batch+(t_batch-t0_batch)*vy_batch), atol=1e-5) np.testing.assert_allclose(x_err_t_batch, np.hypot(x0_err_batch, (t_batch-t0_batch)*vx_err_batch), atol=1e-5) @@ -219,7 +218,7 @@ def linear(t, x0, vx): x_sim = np.random.normal(x_true, x_true_err) y_sim = np.random.normal(y_true, y_true_err) # Run fit - params, param_errs = mod.fit(t, x_sim, y_sim, x_true_err, y_true_err, fixed_params_dict={'t0': true_params['t0']}, bootstrap=10) + params, param_errs = mod.fit(t, x_sim, y_sim, x_true_err, y_true_err, fixed_params_dict={'t0': true_params['t0']}, bootstrap=10, seed=42) # Confirm true value is within error bar of fit value assert np.all([within_error(true_params[param_list[i]], params[i], param_errs[i]) for i in range(len(params))]) From 4520ed986268364ef8119a76dff0adb4bc210d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Thu, 18 Jun 2026 18:24:49 -0700 Subject: [PATCH 92/94] Update adding fixed parameter into meta or column in fit_motion_models --- flystar/startables.py | 49 +++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/flystar/startables.py b/flystar/startables.py index 0062921..0c2ec41 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -869,7 +869,7 @@ def fit_motion_models( rename_duplicate=True ) - # Add fixed parameter columns if they do not exist + # Add fixed parameter meta if scalar, column if array. fixed_param_names = [] for mm in motion_model_used: for param in mm.fixed_param_names: @@ -879,26 +879,31 @@ def fit_motion_models( if 't0' in fixed_param_names: fixed_param_names.remove('t0') - # Add fixed parameter columns + for param in fixed_param_names: - coldata = np.array([fixed_params_stars[i][param] for i in range(N_stars)]) + coldata = np.array([fps[param] for fps in fixed_params_stars]) + if param in self.colnames: - if is_string_dtype(self[param]): - if np.array_equal(self[param], coldata): - # Same data, skip - continue - # If the column already exists, check if the data are the same - elif np.allclose(self[param], coldata, equal_nan=True): - # Same data, skip - continue - else: - # Different data, add with _mm suffix to avoid name conflict - colname = param + '_mm' - else: - colname = param + existing = self[param] + + # Skip if identical + same = ( + np.array_equal(existing, coldata) + if is_string_dtype(existing) + else np.allclose(existing, coldata, equal_nan=True) + ) - self.add_column(Column(data=coldata, name=colname), rename_duplicate=True) + if same: + continue + # Different (or column does not yet exist) + if len(np.unique(coldata)) == 1: + self.meta[param] = coldata[0] + else: + self.add_column( + Column(data=coldata, name=f"{param}_mm"), + rename_duplicate=True, + ) # Add a column to keep track of the number of points used in a fit and number of bootstrap used. self.meta['n_bootstrap'] = bootstrap @@ -1049,6 +1054,10 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): if param not in fixed_params: # If optional fixed param not provided, find it in the table columns or meta data, otherwise use default value if param in self.colnames: + if param == 'obsLocation': + # Special case for obsLocation: no vectorization implemented yet, use the value from the first star + assert np.unique(self[param][unique_index]).size == 1, \ + f"infer_positions: obsLocation fixed parameter has different values ({np.unique(self[param][unique_index])}) for different stars. Vectorized handling not implemented yet." fixed_params[param] = self[param][unique_index] elif param in self.meta: fixed_params[param] = self.meta[param] @@ -1057,12 +1066,6 @@ def infer_positions(self, times, fixed_params_dict=None, fill_value=np.nan): else: fixed_params[param] = fixed_params_dict[param] - # Special case for obsLocation: no vectorization implemented yet - if (param == 'obsLocation'): - assert np.unique(fixed_params[param]).size == 1, \ - "infer_positions: obsLocation fixed parameter has different values for different stars. Vectorized handling not implemented yet." - fixed_params[param] = fixed_params[param][0] - # for param_name in motion_model_instance.fixed_param_names: # col_name = copy.deepcopy(param_name) # # If column not in table, check if it's provided in fixed_params_dict. If not, raise error. If provided, use the value from fixed_params_dict for all stars. From e6f258389c6e90f3ae10582ddf4031725772b4bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Mon, 22 Jun 2026 17:12:41 -0700 Subject: [PATCH 93/94] Remove extra import --- flystar/tests/test_align.py | 1 - 1 file changed, 1 deletion(-) diff --git a/flystar/tests/test_align.py b/flystar/tests/test_align.py index 1e4ffdf..5b9494b 100644 --- a/flystar/tests/test_align.py +++ b/flystar/tests/test_align.py @@ -1449,7 +1449,6 @@ def make_fake_starlists_poly1_par(seed=-1): if __name__ == '__main__': import pickle - import matplotlib.pyplot as plt with open(f'{test_data_path}/my_gaia.pkl', 'rb') as f: my_gaia = pickle.load(f) with open(f'{test_data_path}/list_of_starlists.pkl', 'rb') as f: From e76292cf63c0d46a4cd9910ecb3c900e87590b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLingfeng?= Date: Tue, 23 Jun 2026 00:10:17 -0700 Subject: [PATCH 94/94] Add missing parameters in determine_motion_model --- flystar/align.py | 10 +++++++--- flystar/match.py | 2 +- flystar/startables.py | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/flystar/align.py b/flystar/align.py index 0394b0b..a99d354 100755 --- a/flystar/align.py +++ b/flystar/align.py @@ -1200,7 +1200,7 @@ def get_ref_list_from_table(self, epoch): # Calculate x, y, xe, ye if 'motion_model_used' not in self.ref_table.colnames: - motion_model_used, n_params = determine_motion_model(self.ref_table) + motion_model_used, n_params = determine_motion_model(self.ref_table, self.motion_models, self.fixed_params_dict) self.ref_table['motion_model_used'] = Column(motion_model_used, name='motion_model_used', dtype='U20') # self.ref_table['n_fit'] = Column(n_params, name='n_fit', dtype=int) self.ref_table['n_params'] = Column(n_params, name='n_params', dtype=int) @@ -3448,6 +3448,8 @@ def trans_initial_guess( warnings.filterwarnings('ignore', category=AstropyUserWarning) if motion_models is None: motion_models = [] + + # Match by name if mode == 'name': # First trim the two lists down to only those that don't contain # the "ignore_contains" string. @@ -3468,8 +3470,8 @@ def trans_initial_guess( m2m = ref_list['m'][idx_r][ndx_r] N = len(x1m) - else: - # Default is miracle match. + # Default is miracle match. + elif mode == 'miracle': if briteN is None: briteN = min(50, len(star_list)) else: @@ -3495,6 +3497,8 @@ def trans_initial_guess( polygon_starlist, buffer=buffer ) + else: + raise ValueError(f'flystar.align.trans_initial_guess: Unknown mode: {mode}. Must be one of ["name", "miracle"].') if len(x1m) < n_req_match: fig, ax = plt.subplots() diff --git a/flystar/match.py b/flystar/match.py index b3a4271..241d334 100644 --- a/flystar/match.py +++ b/flystar/match.py @@ -41,7 +41,7 @@ def miracle_match_briteN(xin1, yin1, min1, xin2, yin2, min2, Nbrite, yin2 = np.array(yin2) min2 = np.array(min2) - if polygon1 is not None and polygon2 is not None: + if (polygon1 is not None) and (polygon2 is not None): import shapely points1 = shapely.points(xin1, yin1) points2 = shapely.points(xin2, yin2) diff --git a/flystar/startables.py b/flystar/startables.py index 0c2ec41..367436a 100644 --- a/flystar/startables.py +++ b/flystar/startables.py @@ -490,7 +490,7 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, # Calculate the weighted mean and uncertainty avg = np.ma.average(val_2d_clip, weights=wgt_2d, axis=1) - std = np.ma.sqrt(1 / np.ma.sum(wgt_2d, axis=1)) + std = np.ma.sqrt(1 / np.ma.sum(wgt_2d, axis=1)) # Error propagation for weighted mean if meta_add: self.meta[col_name_in + '0'] = 'weighted' @@ -498,7 +498,7 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, wgt_2d = None # Calculate the weighted mean and uncertainty avg = np.ma.mean(val_2d_clip, axis=1) - std = np.ma.std(val_2d_clip, axis=1) / np.sqrt(len(list_indices)) # Standard error of the mean + std = np.ma.std(val_2d_clip, axis=1) / np.sqrt(len(list_indices)) # Standard error of the mean if meta_add: self.meta[col_name_in + '0'] = 'not_weighted' @@ -515,7 +515,7 @@ def combine_lists(self, col_name_in, weights_col=None, mask_val=None, col_name_std = col_name_in + '0_err' if ismag: - std = 2.5 / np.log(10) * std / avg + std = 2.5 / np.log(10) * std / avg # Error propagation avg = -2.5 * np.ma.log10(avg) # Fill mask with nan or inf