diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..a872ee84 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,37 @@ +# Pull Request Template + +## Description +Please include a summary of the change and which issue is addressed. Please also include relevant motivation and context. + +## Type of Change +- [ ] Bug fix +- [ ] New feature +- [ ] New model +- [ ] Code improvement +- [ ] README update + +## Code Changes +### Summary of Changes +- Describe the changes made in the codebase. +- Link to any relevant issues or discussions. + +### Unit Testing +- Provide a list of unit tests added or updated. +- Ensure all tests pass before submitting the PR. + +## Supporting Analysis +- Provide description of analysis and relevant output + +## Example Job +### Subheader Describing any Comparisons / Analysis +- Provide a description of how to execute the new feature/model. +- Compare to benchmark results if applicable. +- Include any relevant logs, graphs, or data files. + +## Checklist +- [ ] Code is commented +- [ ] I have made corresponding changes to the documentation +- [ ] Unit tests are present and working + +## Additional Notes +- Add any other context about the pull request here. diff --git a/.github/workflows/FormatCheck.yml b/.github/workflows/FormatCheck.yml new file mode 100644 index 00000000..6be5fea6 --- /dev/null +++ b/.github/workflows/FormatCheck.yml @@ -0,0 +1,37 @@ +name: format-check + +on: + push: + branches: + - 'main' + pull_request: + branches: + - dev* + - staging + - main + +jobs: + format_check: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Create and activate virtual environment + run: | + python -m venv venv + source venv/bin/activate + + - name: Install black in virtual environment + run: | + venv/bin/pip install black + + - name: Check Python Code Formatting + run: | + venv/bin/black --check --diff ./cellmodeller/ + venv/bin/black --check --diff ./scripts/ diff --git a/.github/workflows/SpellCheck.yml b/.github/workflows/SpellCheck.yml new file mode 100644 index 00000000..ed4fe177 --- /dev/null +++ b/.github/workflows/SpellCheck.yml @@ -0,0 +1,13 @@ +name: Spell Check + +on: [pull_request] + +jobs: + typos-check: + name: Spell Check with Typos + runs-on: ubuntu-latest + steps: + - name: Checkout Actions Repository + uses: actions/checkout@v4 + - name: Check spelling + uses: crate-ci/typos@v1.18.0 diff --git a/.github/workflows/validate-branch-targets.yml b/.github/workflows/validate-branch-targets.yml new file mode 100644 index 00000000..182f9dd2 --- /dev/null +++ b/.github/workflows/validate-branch-targets.yml @@ -0,0 +1,58 @@ +name: Validate PR Branch Targets + +on: + pull_request: + branches: + - dev* + - staging + - main + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Check branch naming and targets + run: | + HEAD="${{ github.head_ref }}" + BASE="${{ github.base_ref }}" + + echo "Head branch: $HEAD" + echo "Base branch: $BASE" + + # + # === ALLOWED HEAD BRANCH PATTERNS === + # + if [[ ! "$HEAD" =~ ^(feature|bug|hotfix)/ && ! "$HEAD" =~ ^dev.*$ && "$HEAD" != "staging" ]]; then + echo "� Branch name must start with 'feature/', 'bug/', 'hotfix/', 'dev*', or be 'staging'." + exit 1 + fi + + # + # === MERGE RULES === + # + + # 1. feature/bug/hotfix/dev* may NOT merge directly into main + if [[ ( "$HEAD" =~ ^(feature|bug|hotfix)/ || "$HEAD" =~ ^dev.*$ ) && "$BASE" == "main" ]]; then + echo "� '$HEAD' cannot merge into 'main'. Merge into 'staging' instead." + exit 1 + fi + + # 2. feature/bug/hotfix branches may only merge into dev* or staging + if [[ "$HEAD" =~ ^(feature|bug|hotfix)/ && ! "$BASE" =~ ^(dev.*|staging)$ ]]; then + echo "� Feature/bug/hotfix branches may only merge into 'dev*' or 'staging'." + exit 1 + fi + + # 3. dev* branches may only merge into staging or other dev* branches + if [[ "$HEAD" =~ ^dev.*$ && ! "$BASE" =~ ^(staging|dev.*)$ ]]; then + echo "� Dev* branches may only merge into 'staging' or another dev* branch." + exit 1 + fi + + # 4. staging may only merge into main + if [[ "$HEAD" == "staging" && "$BASE" != "main" ]]; then + echo "� 'staging' may only merge into 'main'." + exit 1 + fi + + echo "✅ PR branch name and target are valid." diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..fd658f9a --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +__pycache__/ +*.py[cod] +*.egg-info/ +build/ +dist/ +.eggs/ +.ipynb_checkpoints/ +.vscode/ +.idea/ +.DS_Store +data/ diff --git a/CellModeller/Biophysics/BacterialModels/CLBacterium.cl b/CellModeller/Biophysics/BacterialModels/CLBacterium.cl deleted file mode 100644 index b121da0d..00000000 --- a/CellModeller/Biophysics/BacterialModels/CLBacterium.cl +++ /dev/null @@ -1,1045 +0,0 @@ -#define EPSILON 0.1f -#define MARGIN 0.01f -#define RHS_FRAC 1.f -#define ANG_LIMIT ((float)(5.f*3.14159f/180.f)) -#define ISQRT2 ((float)(1.f/sqrt(2.f))) -#define POINT 0.01f - -// multiply a matrix and a vector -// m -- 4x4 matrix -// v -- 4-vector -float4 matmul(float4 m[], float4 v) { - return m[0]*v.s0 + m[1]*v.s1 + m[2]*v.s2 + m[3]*v.s3; -} - - -// transpose a matrix -// m -- matrix to transpose (vector of columns) -// t -- result -void transpose(float4 m[], float4 t[]) { - t[0].s0 = m[0].s0; - t[0].s1 = m[1].s0; - t[0].s2 = m[2].s0; - t[0].s3 = m[3].s0; - t[1].s0 = m[0].s1; - t[1].s1 = m[1].s1; - t[1].s2 = m[2].s1; - t[1].s3 = m[3].s1; - t[2].s0 = m[0].s2; - t[2].s1 = m[1].s2; - t[2].s2 = m[2].s2; - t[2].s3 = m[3].s2; - t[3].s0 = m[0].s3; - t[3].s1 = m[1].s3; - t[3].s2 = m[2].s3; - t[3].s3 = m[3].s3; -} - - -// multiply two 4x4 matrices -// a -- left matrix -// b -- right matrix -// r -- result -// this is the naive way -void matmulmat(float4 a[], float4 b[], float4 r[]) { - r[0].s0 = a[0].s0 * b[0].s0 + a[1].s0 * b[0].s1 + a[2].s0 * b[0].s2 + a[3].s0 * b[0].s3; - r[1].s0 = a[0].s0 * b[1].s0 + a[1].s0 * b[1].s1 + a[2].s0 * b[1].s2 + a[3].s0 * b[1].s3; - r[2].s0 = a[0].s0 * b[2].s0 + a[1].s0 * b[2].s1 + a[2].s0 * b[2].s2 + a[3].s0 * b[2].s3; - r[3].s0 = a[0].s0 * b[3].s0 + a[1].s0 * b[3].s1 + a[2].s0 * b[3].s2 + a[3].s0 * b[3].s3; - r[0].s1 = a[0].s1 * b[0].s0 + a[1].s1 * b[0].s1 + a[2].s1 * b[0].s2 + a[3].s1 * b[0].s3; - r[1].s1 = a[0].s1 * b[1].s0 + a[1].s1 * b[1].s1 + a[2].s1 * b[1].s2 + a[3].s1 * b[1].s3; - r[2].s1 = a[0].s1 * b[2].s0 + a[1].s1 * b[2].s1 + a[2].s1 * b[2].s2 + a[3].s1 * b[2].s3; - r[3].s1 = a[0].s1 * b[3].s0 + a[1].s1 * b[3].s1 + a[2].s1 * b[3].s2 + a[3].s1 * b[3].s3; - r[0].s2 = a[0].s2 * b[0].s0 + a[1].s2 * b[0].s1 + a[2].s2 * b[0].s2 + a[3].s2 * b[0].s3; - r[1].s2 = a[0].s2 * b[1].s0 + a[1].s2 * b[1].s1 + a[2].s2 * b[1].s2 + a[3].s2 * b[1].s3; - r[2].s2 = a[0].s2 * b[2].s0 + a[1].s2 * b[2].s1 + a[2].s2 * b[2].s2 + a[3].s2 * b[2].s3; - r[3].s2 = a[0].s2 * b[3].s0 + a[1].s2 * b[3].s1 + a[2].s2 * b[3].s2 + a[3].s2 * b[3].s3; - r[0].s3 = a[0].s3 * b[0].s0 + a[1].s3 * b[0].s1 + a[2].s3 * b[0].s2 + a[3].s3 * b[0].s3; - r[1].s3 = a[0].s3 * b[1].s0 + a[1].s3 * b[1].s1 + a[2].s3 * b[1].s2 + a[3].s3 * b[1].s3; - r[2].s3 = a[0].s3 * b[2].s0 + a[1].s3 * b[2].s1 + a[2].s3 * b[2].s2 + a[3].s3 * b[2].s3; - r[3].s3 = a[0].s3 * b[3].s0 + a[1].s3 * b[3].s1 + a[2].s3 * b[3].s2 + a[3].s3 * b[3].s3; -} - - -// return the inverse of a quaternion -// q -- a quaternion -float4 quat_inv(float4 q) { - float l2 = dot(q, q); - if (l2==0.f) - return(q); - float4 inv = {-q.x/l2, -q.y/l2, -q.z/l2, q.w/l2}; - return inv; -} - - -// multiply two quaternions -// a -- a quaternion -// b -- a quaternion -float4 quat_prod(float4 a, float4 b) { - float4 res; - res.x = a.x*b.w + a.y*b.z - a.z*b.y + a.w*b.x; - res.y = -a.x*b.z + a.y*b.w + a.z*b.x + a.w*b.y; - res.z = a.x*b.y - a.y*b.x + a.z*b.w + a.w*b.z; - res.w = -a.x*b.x - a.y*b.y - a.z*b.z + a.w*b.w; - return res; -} - - -// rotate a vector using a quaternion -// q -- quaternion -// v -- vector, w ('real') component is ignored -float4 quat_rot(float4 q, float4 v) { - v.w = 0.f; - float4 qi = quat_inv(q); - float4 v_prime = quat_prod(q, quat_prod(v, qi)); - v_prime.w = 0.f; - return v_prime; -} - - -// rotate a vector -// axis -- axis about which to rotate -// angle -- amount to rotate (radians) -// v -- the vector to rotate -float4 rot(float4 axis, float angle, float4 v) { - float4 q = axis*sin(angle/2.f); - q.w = cos(angle/2.f); - return quat_rot(q, v); -} - - -void print_matrix(float4* m) { - /* - printf("\ - % 3.3f % 3.3f % 3.3f (% 3.3f)\n\ - % 3.3f % 3.3f % 3.3f (% 3.3f)\n\ - % 3.3f % 3.3f % 3.3f (% 3.3f)\n\ -(% 3.3f)(% 3.3f)(% 3.3f)(% 3.3f)\n\n", - m[0].x, m[1].x, m[2].x, m[3].x, - m[0].y, m[1].y, m[2].y, m[3].y, - m[0].z, m[1].z, m[2].z, m[3].z, - m[0].w, m[1].w, m[2].w, m[3].w); - */ -} - -void cyl_inertia_tensor(float muA, float l, float4 axis, float4 res[]) { - // first find the inv inertia tensor for a capsule along the x axis - float diag = (muA*l*l*l) / 12.f; - - // now find the matrix that transforms from the x-axis to the axis - float4 x_axis = {1.f, 0.f, 0.f, 0.f}; - float4 y_axis = {0.f, 1.f, 0.f, 0.f}; - float4 z_axis = {0.f, 0.f, 1.f, 0.f}; - float rot_ang = acos(dot(x_axis, axis)); - - float4 empty = {0.f, 0.f, 0.f, 0.f}; - - float4 y_prime = y_axis; - float4 z_prime = z_axis; - - if (rot_ang > EPSILON) { - y_prime = rot(z_prime, rot_ang, y_axis); - z_prime = normalize(cross(x_axis, axis)); - } - - float4 M[4]; - M[0] = axis; - M[1] = y_prime; - M[2] = z_prime; - M[3] = empty; - - float4 MT[4]; - transpose(M, MT); - - float4 I[4]; - I[0] = empty; - I[1] = empty; - I[2] = empty; - I[3] = empty; - I[0].s0 = 0.f; - I[1].s1 = diag; - I[2].s2 = diag; - I[3].s3 = 0.f; - - // M^T(I)M - float4 IM[4]; - matmulmat(I, M, IM); - matmulmat(MT, IM, res); -} - -void cyl_inv_inertia_tensor(float muA, float l, float4 axis, float4 res[]) { - // first find the inv inertia tensor for a capsule along the x axis - float diag = 12.f/(muA*l*l*l); - - // now find the matrix that transforms from the x-axis to the axis - float4 x_axis = {1.f, 0.f, 0.f, 0.f}; - float4 y_axis = {0.f, 1.f, 0.f, 0.f}; - float4 z_axis = {0.f, 0.f, 1.f, 0.f}; - float rot_ang = acos(dot(x_axis, axis)); - - float4 y_prime = y_axis; - float4 z_prime = z_axis; - - if (rot_ang > EPSILON) { - y_prime = rot(z_prime, rot_ang, y_axis); - z_prime = normalize(cross(x_axis, axis)); - } - - float4 M[4]; - M[0] = axis; - M[1] = y_prime; - M[2] = z_prime; - M[3] = 0.f; - - float4 MD[4]; - MD[0] = 0.f; - MD[1] = M[1]*diag; - MD[2] = M[2]*diag; - MD[3] = 0.f; - - float4 MDT[4]; - transpose(MD, MDT); - - // I in the world is = M(I_D)M^T - matmulmat(M, MDT, res); -} - - - -// Set the sq of each cell based on its position. -__kernel void bin_cells(const int grid_x_min, - const int grid_x_max, - const int grid_y_min, - const int grid_y_max, - const float grid_spacing, - __global const float4* centers, - __global int* sqs) -{ - int i = get_global_id(0); - int x = (int)floor(centers[i].x / grid_spacing) - grid_x_min; - int y = (int)floor(centers[i].y / grid_spacing) - grid_y_min; - sqs[i] = y*(grid_x_max-grid_x_min) + x; -} - - -// find the closest points on two line segments -void closest_points_on_segments(const float4 r_a, // center of first segment - const float4 r_b, // center of second segment - const float4 a, // direction of first segment (unit) - const float4 b, // direction of second segment (unit) - const float len_a, // length of first segment - const float len_b, // length of second segment - float4* p_a, // (return) point on first segment - float4* p_b, // (return) point on second segment - float4* p_a2, // (return) 2nd point on first segment - float4* p_b2, // (return) 2nd point on second segment - int* two_pts) // (return) were two points picked? -{ - float hlen_a = len_a / 2.f; - float hlen_b = len_b / 2.f; - float4 r = r_b - r_a; - float a_dot_r = dot(a, r); - float b_dot_r = dot(b, r); - float a_dot_b = dot(a, b); - float denom = 1.f - a_dot_b * a_dot_b; - - float t_a = 0.f; - float t_b = 0.f; - - *two_pts = 0; - float t_a2 = 0.f; - float t_b2 = 0.f; - - if (sqrt(denom) > EPSILON) { - // non-parallel lines - - // closest points on the same lines if they were infinitely long - float t_a0 = (a_dot_r - b_dot_r * a_dot_b) / denom; - float t_b0 = (a_dot_r * a_dot_b - b_dot_r) / denom; - - // there are a few different cases we have to handle... - bool on_a = fabs(t_a0) < hlen_a; - bool on_b = fabs(t_b0) < hlen_b; - if (!on_a && !on_b) { - // the corner - float c_a = copysign(hlen_a, t_a0); - float c_b = copysign(hlen_b, t_b0); - - // signs of partials at the corner - float dd_dt_a = 2.f*(c_a - a_dot_b*c_b - a_dot_r); - float dd_dt_b = 2.f*(c_b - a_dot_b*c_a + b_dot_r); - - if (sign(dd_dt_a) == sign(c_a)) { - // on the other edge - t_b = c_b; - t_a = clamp(t_b*a_dot_b + a_dot_r, -hlen_a, hlen_a); - } else { - t_a = c_a; - t_b = clamp(t_a*a_dot_b - b_dot_r, -hlen_b, hlen_b); - } - } else if (on_a && !on_b) { - t_b = copysign(hlen_b, t_b0); // +/- end of b? - t_a = clamp(t_b*a_dot_b + a_dot_r, -hlen_a, hlen_a); - } else if (!on_a && on_b) { - t_a = copysign(hlen_a, t_a0); // +/- end of a? - t_b = clamp(t_a*a_dot_b - b_dot_r, -hlen_b, hlen_b); - } else { - t_a = t_a0; - t_b = t_b0; - } - } else { - // lines are roughly parallel, this case is degenerate - // start off assuming the lines are in the same direction - // project a onto b - - // use the same _dot_r for each for consistency - float x_dot_r = copysign(min(a_dot_r, b_dot_r), a_dot_r); - - // project the ends of a into b coordinates - float a_l = -x_dot_r - hlen_a; - float a_r = -x_dot_r + hlen_a; - - // find the intersection of the two on b - float i_l = max(a_l, -hlen_b); - float i_r = min(a_r, hlen_b); - - if (i_l > i_r) { - // they don't intersect - if (a_l < -hlen_b) { - t_a = hlen_a; - t_b = -hlen_b; - } else { - t_a = -hlen_a; - t_b = hlen_b; - } - } else { - // the segments intersect, pick two points - *two_pts = 1; - t_b = i_l; - t_a = t_b + x_dot_r; - t_b2 = i_r; - t_a2 = t_b2 + x_dot_r; - } - - // if they weren't in the same direction, negate - if (a_dot_b < 0.f) { - t_b = -t_b; - t_b2 = -t_b2; - } - } - *p_a = r_a + t_a*a; - *p_b = r_b + t_b*b; - if (two_pts) { - *p_a2 = r_a + t_a2*a; - *p_b2 = r_b + t_b2*b; - } -} - - -// intest distance from a point p to a plane passing through point v -// with unit normal n -float pt_to_plane_dist(float4 v, float4 n, float4 p) -{ - return dot((p-v), n); -} - -// intest distance from a point p to a sphere at point v -// with radius r -float pt_to_sphere_dist(float4 v, float rad, float4 p) -{ - return length(p - v) - rad; -} - -__kernel void find_sphere_contacts(const int max_cells, - const int max_contacts, - const int n_spheres, - __global const float4* sphere_pts, - __global const float* sphere_coeffs, - __global const float* sphere_rads, - __global const float* sphere_norms, - __global const float4* centers, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global int* n_cts, - __global int* frs, - __global int* tos, - __global float* dists, - __global float4* pts, - __global float4* norms, - __global float* reldists, - __global float* stiff) -{ - int i = get_global_id(0); - - // collision count - int k = n_cts[i]; //keep existing contacts - - float4 end1 = centers[i] - 0.5f*lens[i]*dirs[i]; // 'left' end of the cell - float4 end2 = centers[i] + 0.5f*lens[i]*dirs[i]; // 'right' end of the cell - - for (int n = 0; n < n_spheres; n++) { // loop through all spheres - int to1 = -2*n - 1; // 'to' if left end has contact with sphere n - int to2 = to1 - 1; // 'to' if right end has contact with sphere n - - float dist1 = sphere_norms[n] * pt_to_sphere_dist(sphere_pts[n], sphere_rads[n], end1)-rads[i]; - float dist2 = sphere_norms[n] * pt_to_sphere_dist(sphere_pts[n], sphere_rads[n], end2)-rads[i]; - - // check for old contacts with this sphere - int cti1 = -1; - int cti2 = -1; - for (int m = i*max_contacts; m < i*max_contacts+n_cts[i]; m++) { - if (tos[m] == to1) cti1 = m; - else if (tos[m] == to2) cti2 = m; - } - - bool two_pts = ((cti1 >= 0) || (dist1<0.f) ) && ( (cti2 >= 0) || (dist2<0.f) ); - float stiffness = two_pts*ISQRT2 + (!two_pts)*1.0; - - // if we're in contact, or we were in contact, recompute - if ((cti1 >= 0) || (dist1<0.f) ){ - // need to make a new contact - if (cti1 < 0) { - cti1 = i*max_contacts+k; - k++; - } - - frs[cti1] = i; - tos[cti1] = to1; - dists[cti1] = dist1; - pts[cti1] = end1; // FIXME: not really the right point - norms[cti1] = sphere_norms[n] * normalize(-end1 + sphere_pts[n]); - reldists[cti1] = stiffness*sphere_coeffs[n]*dist1; - stiff[cti1] = stiffness*sphere_coeffs[n]; - } - - if ( (cti2 >= 0) || (dist2<0.f) ){ - if (cti2 < 0) { - cti2 = i*max_contacts+k; - k++; - } - - frs[cti2] = i; - tos[cti2] = to2; - dists[cti2] = dist2; - pts[cti2] = end2; - norms[cti2] = sphere_norms[n] * normalize(-end2 + sphere_pts[n]); - reldists[cti2] = stiffness*sphere_coeffs[n]*dist2; - stiff[cti2] = stiffness*sphere_coeffs[n]; - } - } - n_cts[i] = k; -} - - -__kernel void find_plane_contacts(const int max_cells, - const int max_contacts, - const int n_planes, - __global const float4* plane_pts, - __global const float4* plane_norms, - __global const float* plane_coeffs, - __global const float4* centers, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global int* n_cts, - __global int* frs, - __global int* tos, - __global float* dists, - __global float4* pts, - __global float4* norms, - __global float* reldists, - __global float* stiff) -{ - int i = get_global_id(0); - - // collision count - int k = n_cts[i]; //keep existing contacts - - float4 end1 = centers[i] - 0.5f*lens[i]*dirs[i]; // 'left' end of the cell - float4 end2 = centers[i] + 0.5f*lens[i]*dirs[i]; // 'right' end of the cell - - for (int n = 0; n < n_planes; n++) { // loop through all planes - int to1 = -2*n - 1; // 'to' if left end has contact with plane n - int to2 = to1 - 1; // 'to' if right end has contact with plane n - - float dist1 = pt_to_plane_dist(plane_pts[n], plane_norms[n], end1)-rads[i]; - float dist2 = pt_to_plane_dist(plane_pts[n], plane_norms[n], end2)-rads[i]; - - // check for old contacts with this plane - int cti1 = -1; - int cti2 = -1; - for (int m = i*max_contacts; m < i*max_contacts+n_cts[i]; m++) { - if (tos[m] == to1) cti1 = m; - else if (tos[m] == to2) cti2 = m; - } - - // common to both ends - float4 norm = -plane_norms[n]; - - bool two_pts = ((cti1 >= 0) || (dist1<0.f) ) && ( (cti2 >= 0) || (dist2<0.f) ); - float stiffness = two_pts*ISQRT2 + (!two_pts)*1.0; - - // if we're in contact, or we were in contact, recompute - if ((cti1 >= 0) || (dist1<0.f) ){ - // need to make a new contact - if (cti1 < 0) { - cti1 = i*max_contacts+k; - k++; - } - - frs[cti1] = i; - tos[cti1] = to1; - dists[cti1] = dist1; - pts[cti1] = end1; // FIXME: not really the right point - norms[cti1] = norm; - reldists[cti1] = stiffness*plane_coeffs[n]*dist1; - stiff[cti1] = stiffness*plane_coeffs[n]; - } - - if ( (cti2 >= 0) || (dist2<0.f) ){ - if (cti2 < 0) { - cti2 = i*max_contacts+k; - k++; - } - - frs[cti2] = i; - tos[cti2] = to2; - dists[cti2] = dist2; - pts[cti2] = end2; - norms[cti2] = norm; - reldists[cti2] = stiffness*plane_coeffs[n]*dist2; - stiff[cti2] = stiffness*plane_coeffs[n]; - } - } - n_cts[i] = k; -} - - -// -__kernel void find_contacts(const int max_cells, - const int n_cells, - const int grid_x_min, - const int grid_x_max, - const int grid_y_min, - const int grid_y_max, - const int n_sqs, - const int max_contacts, - __global const float4* centers, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global const int* sqs, - __global const int* sorted_ids, - __global const int* sq_inds, - __global int* n_cts, - __global int* frs, - __global int* tos, - __global float* dists, - __global float4* pts, - __global float4* norms, - __global float* reldists, - __global float* stiff, - __global float* overlap) -{ - // our id - int i = get_global_id(0); - - // collision count - int k = n_cts[i]; //keep existing contacts - - // what square are we in? - int grid_x_range = grid_x_max-grid_x_min; - int grid_y_range = grid_y_max-grid_y_min; - int sq_row = sqs[i] / grid_x_range; // square row - int sq_col = sqs[i] % grid_x_range; // square col - - // loop through our square and the eight squares surrounding it - // (fewer squares if we're on an edge) - for (int row = max(0, sq_row-1); row < min((int)(sq_row+2), grid_y_range); row++) { - for (int col = max(0, sq_col-1); col < min((int)(sq_col+2), grid_x_range); col++) { - - // what square is this? - int sq = row*grid_x_range + col; - - // loop through all the cell ids in the current square (but - // don't go past the end of the list) - for (int n = sq_inds[sq]; n < (sq < n_sqs-1 ? sq_inds[sq+1] : n_cells); n++) { - - int j = sorted_ids[n]; // the neighboring cell - - if (j<=i) continue; // we can't collide with ourself, only find low -> hi contacts - - // Look for any existing contacts, count them, and store idx's - int n_existing_cts=0; - int existing_cts_idx[2]; - for (int m=i*max_contacts; m 0.5*(lens[i]+lens[j])+rads[i]+rads[j]+MARGIN && n_existing_cts==0) - { - // if not... - continue; - } - - // if so, find closest points - float4 pi, pj; // pi is point on our line seg, pj point on other - float4 pi2, pj2; // optional second points - int two_pts = 0; // are there two contacts? - closest_points_on_segments(centers[i], centers[j], - dirs[i], dirs[j], - lens[i], lens[j], - &pi, &pj, &pi2, &pj2, &two_pts); - - float4 v_ij = pj-pi; // vector between closest points - float dist = length(v_ij) - (rads[i]+rads[j]); - float4 norm = normalize(v_ij); // normal on our cell at the contact - float4 pt = pi + rads[i]*norm; // point on the capsule surface - - int ct_i; - ct_i = i*max_contacts+k; // index of this contact - - float stiffness = two_pts*ISQRT2 + (!two_pts)*1.0; - - float overlap_length = two_pts*fabs(dot(pi-pi2,dirs[i]))/(2*POINT) + (!two_pts)*1.0; - - if (dist < MARGIN) - { - if (n_existing_cts==0) - { - // make new contact and compute distance etc. - k++; // next contact - frs[ct_i] = i; - tos[ct_i] = j; - dists[ct_i] = dist; - pts[ct_i] = pt; - norms[ct_i] = norm; - reldists[ct_i] = stiffness*RHS_FRAC*dist; - stiff[ct_i] = stiffness; - overlap[ct_i] = overlap_length; - } - } - if(n_existing_cts>0){ - // recompute dist etc. for existing contact - int idx = existing_cts_idx[0]; - dists[idx] = dist; - pts[idx] = pt; - norms[idx] = norm; - reldists[idx] = stiffness*RHS_FRAC*dist; - stiff[idx] = stiffness; - overlap[idx]=overlap_length; - } - - - if (!two_pts){ - if(n_existing_cts>1){ - // Not parallel, but were before - how to deal with this? - // Set stiffness and rhs (reldists) to zero so that this row has no effect - int idx = existing_cts_idx[1]; - /*dists[idx] = 0.0; - pts[idx] = pt; - norms[idx] = norm;*/ - reldists[idx] = 0.0; - stiff[idx] = 0.0; - overlap[idx]=overlap_length; - } - continue; - } - - // if we had two contacts, add the second point - v_ij = pj2-pi2; - dist = length(v_ij) - (rads[i]+rads[j]); - norm = normalize(v_ij); - pt = pi2 + rads[i]*norm; - - // Are cells moving together or penetrating? - if (dist < MARGIN) - { - if (n_existing_cts<2) - { - ct_i = i*max_contacts+k; - k++; - frs[ct_i] = i; - tos[ct_i] = j; - dists[ct_i] = dist; - pts[ct_i] = pt; - norms[ct_i] = norm; - reldists[ct_i] = stiffness*RHS_FRAC*dist; - stiff[ct_i] = stiffness; - overlap[ct_i]=overlap_length; - } - } - if(n_existing_cts>1){ - // recompute dist etc. for existing contact - int idx = existing_cts_idx[1]; - dists[idx] = dist; - pts[idx] = pt; - norms[idx] = norm; - reldists[idx] = stiffness*RHS_FRAC*dist; - stiff[idx] = stiffness; - overlap[idx]=overlap_length; - } - - } - } - } - n_cts[i] = k; - - // zero out unused contacts - // this IS necessary for calculate_Mx to work - for (int u = k; u < max_contacts; u++) { - frs[i*max_contacts+u] = 0; - tos[i*max_contacts+u] = 0; - } -} - - - -__kernel void collect_tos(const int max_cells, - const int n_cells, - const int grid_x_min, - const int grid_x_max, - const int grid_y_min, - const int grid_y_max, - const int n_sqs, - const int max_contacts, - __global const int* sqs, - __global const int* sorted_ids, - __global const int* sq_inds, - __global const int* n_cts, - __global const int* frs, - __global const int* tos, - __global int* cell_tos, - __global int* n_cell_tos) -{ - // our id - int i = get_global_id(0); - - // what square are we in? - int grid_x_range = grid_x_max-grid_x_min; - int grid_y_range = grid_y_max-grid_y_min; - int sq_row = sqs[i] / grid_x_range; // square row - int sq_col = sqs[i] % grid_x_range; // square col - - int k = 0; // how many cts are we the 'to' of? - - // loop through our square and the eight squares surrounding it - // (fewer squares if we're on an edge) - for (int row = max(0, sq_row-1); row < min((int)(sq_row+2), grid_y_range); row++) { - for (int col = max(0, sq_col-1); col < min((int)(sq_col+2), grid_x_range); col++) { - - // what square is this? - int sq = row*grid_x_range + col; - - // loop through all the cell ids in the current square (but - // don't go past the end of the list) - for (int n = sq_inds[sq]; n < (sq < n_sqs-1 ? sq_inds[sq+1] : n_cells); n++) { - - int j = sorted_ids[n]; // the neighboring cell - - if (j>=i || j<0) continue; // only looking at cells with lower ids - - // look through all the other cell's contacts - for (int m = 0; m < n_cts[j]; m++) { - int ct_i = (int)(j)*(int)(max_contacts)+m; - if (tos[ct_i] == i) { - // if one of them is us, collect it - cell_tos[i*max_contacts+k] = ct_i; - k++; - } - } - } - } - } - n_cell_tos[i] = k; - - // zero out unused tos - // this probably isn't necessary - for (int u = k; u < max_contacts; u++) { - cell_tos[i*max_contacts+u] = 0; - } - -} - - -__kernel void build_matrix(const int max_contacts, - __global const float4* centers, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global const int* n_cts, - __global const int* frs, - __global const int* tos, - __global const float4* pts, - __global const float4* norms, - __global float8* fr_ents, - __global float8* to_ents, - __global float* stiff) -{ - int id = get_global_id(0); - int ct = get_global_id(1); - - if (ct >= n_cts[id]) return; - - int i = id*max_contacts + ct; - - int a = frs[i]; - float4 r_a = pts[i]-centers[a]; - float8 fr_ent = 0.f; - - float4 nxr_a = 0.f; - nxr_a = cross(norms[i], r_a); - - fr_ent.s012 = norms[i].s012; - fr_ent.s345 = -nxr_a.s012; - //fr_ent.s3 = -dot(nxr_a, Ia[0]); - //fr_ent.s4 = -dot(nxr_a, Ia[1]); - //fr_ent.s5 = -dot(nxr_a, Ia[2]); - fr_ent.s6 = dot(dirs[a], r_a) * dot(dirs[a], norms[i])/(lens[a]+2.f*rads[a]); - fr_ents[i] = fr_ent * stiff[i]; - - int b = tos[i]; - - // plane and sphere contacts have no to_ent, and have negative indices - if (b < 0) { - to_ents[i] = 0.f; - return; - } - - float4 r_b = pts[i]-centers[b]; - float8 to_ent = 0.f; - - float4 nxr_b = 0.f; - nxr_b = cross(norms[i], r_b); - - to_ent.s012 = norms[i].s012; - to_ent.s345 = -nxr_b.s012; - //to_ent.s3 = -dot(nxr_b, Ib[0]); - //to_ent.s4 = -dot(nxr_b, Ib[1]); - //to_ent.s5 = -dot(nxr_b, Ib[2]); - to_ent.s6 = dot(dirs[b], r_b) * dot(dirs[b], norms[i])/(lens[b]+2.f*rads[b]); - to_ents[i] = to_ent * stiff[i]; -} - -__kernel void calculate_Bx(const int max_contacts, - __global const int* frs, - __global const int* tos, - __global const float8* fr_ents, - __global const float8* to_ents, - __global const float8* deltap, - __global float* Bx) -{ - int id = get_global_id(0); - int ct = get_global_id(1); - int i = id*max_contacts + ct; - int a = frs[i]; - int b = tos[i]; - if (a == 0 && b == 0) return; // not a contact - float8 to_ents_i = b < 0 ? 0.f : to_ents[i]; - //my machine can't dot float8s... - float res0123 = dot(fr_ents[i].s0123, deltap[a].s0123) - dot(to_ents_i.s0123, deltap[b].s0123); - float res4567 = dot(fr_ents[i].s4567, deltap[a].s4567) - dot(to_ents_i.s4567, deltap[b].s4567); - Bx[i] = res0123 + res4567; -} - - -__kernel void calculate_BTBx(const int max_contacts, - __global const int* n_cts, - __global const int* n_cell_tos, - __global const int* cell_tos, - __global const float8* fr_ents, - __global const float8* to_ents, - __global const float* Bx, - __global float8* BTBx) -{ - int i = get_global_id(0); - int base = i*max_contacts; - float8 res = 0.f; - for (int k = base; k < base+n_cts[i]; k++) { - float8 oldres = res; - res += fr_ents[k]*Bx[k]; - } - for (int k = base; k < base+n_cell_tos[i]; k++) { - int n = cell_tos[k]; - if (n < 0) continue; - res -= to_ents[n]*Bx[n]; - } - BTBx[i] = res; -} - -__kernel void calculate_Mx(const float muA, - const float gamma, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global const float8* x, - __global float8* Mx) -{ - int i = get_global_id(0); - float l = lens[i] + 2.f * rads[i]; - - float8 xi = x[i]; - float8 v = 0.f; - v.s012 = xi.s012 * muA * l; - - float4 I[4]; - cyl_inertia_tensor(muA, l, dirs[i], I); - float4 L = 0.f; - L.s012 = xi.s345; - float4 w = matmul(I, L); - v.s345 = w.s012; - - //float4 w = 0.f; - //w.s012 = xi.s345; - //float4 a = dirs[i]; - //float4 vv = (w - a*dot(a,w)) * muA * l*l*l / 12.f; - //v.s345 = vv.s012; - - v.s6 = xi.s6 * gamma; - - Mx[i] = v; -} - - -__kernel void calculate_Minv_x(const float muA, - const float gamma, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global const float8* x, - __global float8* Minvx) -{ - int i = get_global_id(0); - - float8 xi = x[i]; - float8 v = 0.f; - v.s012 = xi.s012/(muA*(lens[i]+2.f*rads[i])); - - float4 Iinv[4]; - cyl_inv_inertia_tensor(muA, lens[i]+2.f*rads[i], dirs[i], Iinv); - float4 L = 0.f; - L.s012 = xi.s345; - float4 w = matmul(Iinv, L); - v.s345 = w.s012; - - v.s6 = xi.s6/gamma; - - Minvx[i] = v; -} - - -__kernel void predict(__global const float4* centers, - __global const float4* dirs, - __global const float* lens, - __global const float4* dcenters, - __global const float4* dangs, - __global const float* dlens, - __global float4* pred_centers, - __global float4* pred_dirs, - __global float* pred_lens) -{ - int i = get_global_id(0); - float4 center_i = centers[i]; - float4 dir_i = dirs[i]; - float len_i = lens[i]; - float4 dcenter_i = dcenters[i]; - float4 dang_i = dangs[i]; - float dlen_i = dlens[i]; - - pred_centers[i] = center_i + dcenter_i; - - if (length(dang_i)>1e-12) - { - float4 rot_axis = normalize(dang_i); - float rot_angle = length(dang_i); - pred_dirs[i] = normalize(rot(rot_axis, rot_angle, dir_i)); - } else { - pred_dirs[i] = dir_i; - } - - pred_lens[i] = len_i + dlen_i; - -} - -__kernel void integrate(__global float4* centers, - __global float4* dirs, - __global float* lens, - __global float4* dcenters, - __global float4* dangs, - __global float* dlens) -{ - int i = get_global_id(0); - float4 center_i = centers[i]; - float4 dir_i = dirs[i]; - float len_i = lens[i]; - float4 dcenter_i = dcenters[i]; - float4 dang_i = dangs[i]; - float dlen_i = dlens[i]; - - centers[i] = center_i + dcenter_i; - - if (length(dang_i)>1e-12) - { - float4 rot_axis = normalize(dang_i); - float rot_angle = length(dang_i); - dirs[i] = normalize(rot(rot_axis, rot_angle, dir_i)); - } - - lens[i] = len_i + dlen_i; - - // fully damped - dcenters[i] = 0.f; - dangs[i] = 0.f; - dlens[i] = 0.f; -} - -__kernel void add_impulse(const float muA, - const float gamma, - __global const float8* deltap, - __global const float4* dirs, - __global const float* lens, - __global const float* rads, - __global float4* dcenters, - __global float4* dangs, - __global const float* target_dlens, - __global float* dlens) -{ - int i = get_global_id(0); - - float4 dir_i = dirs[i]; - float len_i = lens[i]; - float rad_i = rads[i]; - float8 deltap_i = deltap[i]; - - float4 dplin = 0.f; - dplin.s012 = deltap_i.s012; - dcenters[i] += dplin; - - // FIXME: should probably store these so we don't recompute them - //float4 Iinv[4]; - //cyl_inv_inertia_tensor(muA, len_i+2.f*rad_i, dir_i, Iinv); - //float4 dL = 0.f; - //dL.s012 = deltap_i.s345; - //float4 dpang = matmul(Iinv, dL); - - float4 dpang = 0.f; - dpang.s012 = deltap_i.s345; - float dpangmag = length(dpang); - if (dpangmag>ANG_LIMIT) - { - dpang *= ANG_LIMIT/dpangmag; - } - dangs[i] += dpang; - - float dplen = deltap_i.s6; - //dlens[i] += max(0.f, target_dlens[i] + dplen); - dlens[i] = max(0.f, dlens[i]+dplen); -} - - diff --git a/CellModeller/Biophysics/BacterialModels/CLBacterium.py b/CellModeller/Biophysics/BacterialModels/CLBacterium.py deleted file mode 100644 index 85d8180d..00000000 --- a/CellModeller/Biophysics/BacterialModels/CLBacterium.py +++ /dev/null @@ -1,1254 +0,0 @@ -import sys -import math -import numpy -import pyopencl as cl -import pyopencl.array as cl_array -from pyopencl.array import vec -from pyopencl.array import max as device_max -from pyopencl.elementwise import ElementwiseKernel -from pyopencl.reduction import ReductionKernel -import random -import time - - -ct_map = {} - -class CLBacterium: - """A rigid body model of bacterial growth implemented using - OpenCL. - """ - - def __init__(self, simulator, - max_substeps=8, - max_cells=10000, - max_contacts=24, - max_planes=1, - max_spheres=1, - max_sqs=192**2, - grid_spacing=5.0, - muA=1.0, - gamma=10.0, - dt=None, - cgs_tol=5e-3, - jitter_z=True, - alternate_divisions=False, - printing=True, - compNeighbours=False): - - # Should we compute neighbours? (bit slow) - self.computeNeighbours = compNeighbours - - self.frame_no = 0 - self.simulator = simulator - self.regulator = None - - self.time_begin = time.time() - self.seconds_elapsed = 0 - self.minutes_elapsed = 0 - self.hours_elapsed = 0 - - self.max_cells = max_cells - self.max_contacts = max_contacts - self.max_planes = max_planes - self.max_spheres = max_spheres - self.max_sqs = max_sqs - self.grid_spacing = grid_spacing - self.muA = muA - self.gamma = gamma - self.dt = dt - self.cgs_tol = cgs_tol - - self.max_substeps = max_substeps - - self.n_cells = 0 - self.n_cts = 0 - self.n_planes = 0 - self.n_spheres = 0 - - self.next_id = 0 - - self.grid_x_min = 0 - self.grid_x_max = 0 - self.grid_y_min = 0 - self.grid_y_max = 0 - self.n_sqs = 0 - - self.init_cl() - #self.init_kernels() - self.init_data() - - self.parents = {} - - self.jitter_z = jitter_z - self.alternate_divisions = alternate_divisions - self.printing = printing - self.progress_initialised = False - self.sub_tick_initialised = False - - # Biophysical Model interface - def reset(self): - self.n_cells=0 - self.n_cts=0 - self.n_planes=0 - self.n_spheres=0 - - def setRegulator(self, regulator): - self.regulator = regulator - self.init_kernels() - - - def addCell(self, cellState, pos=(0,0,0), dir=(1,0,0), rad=0.5, **kwargs): - i = cellState.idx - self.n_cells += 1 - cid = cellState.id - self.cell_centers[i] = tuple(pos+(0,)) - self.cell_dirs[i] = tuple(dir+(0,)) - self.cell_lens[i] = cellState.length - self.cell_rads[i] = rad - self.initCellState(cellState) - self.set_cells() - self.calc_cell_geom() # cell needs a volume - - #--- - # Some functions to modify existing cells (e.g. from GUI) - # Eventually prob better to have a generic editCell() that deals with this stuff - # - def moveCell(self, cellState, delta_pos): - print("cell idx = %d"%cellState.idx) - i = cellState.idx - cid = cellState.id - print("cell center = ") - print(self.cell_centers[i]) - print("delta_pos") - print(delta_pos) - pos = numpy.array(tuple(self.cell_centers[i])) - pos[0:3] += numpy.array(tuple(delta_pos)) - self.cell_centers[i] = pos - self.simulator.cellStates[cid].pos = [self.cell_centers[i][j] for j in range(3)] - self.set_cells() - self.updateCellState(cellState) - - def addPlane(self, pt, norm, coeff): - pidx = self.n_planes - self.n_planes += 1 - self.plane_pts[pidx] = tuple(pt)+(0,) - self.plane_norms[pidx] = tuple(norm) + (0,) - self.plane_coeffs[pidx] = coeff - self.set_planes() - - def addSphere(self, pt, rad, coeff, norm): - sidx = self.n_spheres - self.n_spheres += 1 - self.sphere_pts[sidx] = tuple(pt)+(0,) - self.sphere_rads[sidx] = rad - self.sphere_coeffs[sidx] = coeff - self.sphere_norms[sidx] = norm - self.set_spheres() - - def hasNeighbours(self): - return False - - def divide(self, parentState, daughter1State, daughter2State, *args, **kwargs): - self.divide_cell(parentState.idx, daughter1State.idx, daughter2State.idx) - # Initialise cellState data - self.initCellState(daughter1State) - self.initCellState(daughter2State) - - def init_cl(self): - if self.simulator: - (self.context, self.queue) = self.simulator.getOpenCL() - - def init_kernels(self): - """Set up the OpenCL kernels.""" - from pkg_resources import resource_string - kernel_src = resource_string(__name__, 'CLBacterium.cl').decode() - - self.program = cl.Program(self.context, kernel_src).build(cache_dir=False) - # Some kernels that seem like they should be built into pyopencl... - self.vclearf = ElementwiseKernel(self.context, "float8 *v", "v[i]=0.0", "vecclearf") - self.vcleari = ElementwiseKernel(self.context, "int *v", "v[i]=0", "veccleari") - self.vadd = ElementwiseKernel(self.context, "float8 *res, const float8 *in1, const float8 *in2", - "res[i] = in1[i] + in2[i]", "vecadd") - self.vsub = ElementwiseKernel(self.context, "float8 *res, const float8 *in1, const float8 *in2", - "res[i] = in1[i] - in2[i]", "vecsub") - self.vaddkx = ElementwiseKernel(self.context, - "float8 *res, const float k, const float8 *in1, const float8 *in2", - "res[i] = in1[i] + k*in2[i]", "vecaddkx") - self.vsubkx = ElementwiseKernel(self.context, - "float8 *res, const float k, const float8 *in1, const float8 *in2", - "res[i] = in1[i] - k*in2[i]", "vecsubkx") - self.vmulk = ElementwiseKernel(self.context, - "float8 *res, const float k, const float8 *in1", - "res[i] = k*in1[i]", "vecmulk") - self.vnorm = ElementwiseKernel(self.context, - "float8 *res, const float8 *in1", - "res[i] = dot(in1[i], in1[i]", "vecnorm") - - - # cell geometry kernels - self.calc_cell_area = ElementwiseKernel(self.context, "float* res, float* r, float* l", - "res[i] = 2.f*3.1415927f*r[i]*(2.f*r[i]+l[i])", "cell_area_kern") - self.calc_cell_vol = ElementwiseKernel(self.context, "float* res, float* r, float* l", - "res[i] = 3.1415927f*r[i]*r[i]*(2.f*r[i]+l[i])", "cell_vol_kern") - - # A dot product as sum of float4 dot products - - # i.e. like flattening vectors of float8s into big float vectors - # then computing dot - # NB. Some openCLs seem not to implement dot(float8,float8) so split - # into float4's - self.vdot = ReductionKernel(self.context, numpy.float32, neutral="0", - reduce_expr="a+b", map_expr="dot(x[i].s0123,y[i].s0123)+dot(x[i].s4567,y[i].s4567)", - arguments="__global float8 *x, __global float8 *y") - - - def init_data(self): - """Set up the data OpenCL will store on the device.""" - # cell data - cell_geom = (self.max_cells,) - self.cell_centers = numpy.zeros(cell_geom, vec.float4) - self.cell_centers_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - self.cell_dirs = numpy.zeros(cell_geom, vec.float4) - self.cell_dirs_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - self.cell_lens = numpy.zeros(cell_geom, numpy.float32) - self.cell_lens_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.pred_cell_centers = numpy.zeros(cell_geom, vec.float4) - self.pred_cell_centers_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - self.pred_cell_dirs = numpy.zeros(cell_geom, vec.float4) - self.pred_cell_dirs_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - self.pred_cell_lens = numpy.zeros(cell_geom, numpy.float32) - self.pred_cell_lens_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_rads = numpy.zeros(cell_geom, numpy.float32) - self.cell_rads_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_sqs = numpy.zeros(cell_geom, numpy.int32) - self.cell_sqs_dev = cl_array.zeros(self.queue, cell_geom, numpy.int32) - self.cell_n_cts = numpy.zeros(cell_geom, numpy.int32) - self.cell_n_cts_dev = cl_array.zeros(self.queue, cell_geom, numpy.int32) - self.cell_dcenters = numpy.zeros(cell_geom, vec.float4) - self.cell_dcenters_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - self.cell_dangs = numpy.zeros(cell_geom, vec.float4) - self.cell_dangs_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - self.cell_dlens = numpy.zeros(cell_geom, numpy.float32) - self.cell_dlens_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_target_dlens_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_growth_rates = numpy.zeros(cell_geom, numpy.float32) - - # cell geometry calculated from l and r - self.cell_areas_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_vols_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_old_vols_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - - # gridding - self.sq_inds = numpy.zeros((self.max_sqs,), numpy.int32) - self.sq_inds_dev = cl_array.zeros(self.queue, (self.max_sqs,), numpy.int32) - self.sorted_ids = numpy.zeros(cell_geom, numpy.int32) - self.sorted_ids_dev = cl_array.zeros(self.queue, cell_geom, numpy.int32) - - # constraint planes - plane_geom = (self.max_planes,) - self.plane_pts = numpy.zeros(plane_geom, vec.float4) - self.plane_pts_dev = cl_array.zeros(self.queue, plane_geom, vec.float4) - self.plane_norms = numpy.zeros(plane_geom, vec.float4) - self.plane_norms_dev = cl_array.zeros(self.queue, plane_geom, vec.float4) - self.plane_coeffs = numpy.zeros(plane_geom, numpy.float32) - self.plane_coeffs_dev = cl_array.zeros(self.queue, plane_geom, numpy.float32) - - # constraint spheres - sphere_geom = (self.max_spheres,) - self.sphere_pts = numpy.zeros(sphere_geom, vec.float4) - self.sphere_pts_dev = cl_array.zeros(self.queue, sphere_geom, vec.float4) - self.sphere_rads = numpy.zeros(sphere_geom, numpy.float32) - self.sphere_rads_dev = cl_array.zeros(self.queue, sphere_geom, numpy.float32) - self.sphere_coeffs = numpy.zeros(sphere_geom, numpy.float32) - self.sphere_coeffs_dev = cl_array.zeros(self.queue, sphere_geom, numpy.float32) - self.sphere_norms = numpy.zeros(sphere_geom, numpy.float32) - self.sphere_norms_dev = cl_array.zeros(self.queue, sphere_geom, numpy.float32) - - # contact data - ct_geom = (self.max_cells, self.max_contacts) - self.ct_frs = numpy.zeros(ct_geom, numpy.int32) - self.ct_frs_dev = cl_array.zeros(self.queue, ct_geom, numpy.int32) - self.ct_tos = numpy.zeros(ct_geom, numpy.int32) - self.ct_tos_dev = cl_array.zeros(self.queue, ct_geom, numpy.int32) - self.ct_dists = numpy.zeros(ct_geom, numpy.float32) - self.ct_dists_dev = cl_array.zeros(self.queue, ct_geom, numpy.float32) - self.ct_pts = numpy.zeros(ct_geom, vec.float4) - self.ct_pts_dev = cl_array.zeros(self.queue, ct_geom, vec.float4) - self.ct_norms = numpy.zeros(ct_geom, vec.float4) - self.ct_norms_dev = cl_array.zeros(self.queue, ct_geom, vec.float4) - self.ct_stiff_dev = cl_array.zeros(self.queue, ct_geom, numpy.float32) - self.ct_overlap_dev = cl_array.zeros(self.queue, ct_geom, numpy.float32) - self.neighbours = numpy.zeros(ct_geom, numpy.int32) - self.cell_cts = numpy.zeros(self.max_cells, numpy.int32) - - # where the contacts pointing to this cell are collected - self.cell_tos = numpy.zeros(ct_geom, numpy.int32) - self.cell_tos_dev = cl_array.zeros(self.queue, ct_geom, numpy.int32) - self.n_cell_tos = numpy.zeros(cell_geom, numpy.int32) - self.n_cell_tos_dev = cl_array.zeros(self.queue, cell_geom, numpy.int32) - - - # the constructed 'matrix' - mat_geom = (self.max_cells*self.max_contacts,) - self.ct_inds = numpy.zeros(mat_geom, numpy.int32) - self.ct_inds_dev = cl_array.zeros(self.queue, mat_geom, numpy.int32) - self.ct_reldists = numpy.zeros(mat_geom, numpy.float32) - self.ct_reldists_dev = cl_array.zeros(self.queue, mat_geom, numpy.float32) - - self.fr_ents = numpy.zeros(mat_geom, vec.float8) - self.fr_ents_dev = cl_array.zeros(self.queue, mat_geom, vec.float8) - self.to_ents = numpy.zeros(mat_geom, vec.float8) - self.to_ents_dev = cl_array.zeros(self.queue, mat_geom, vec.float8) - - - # vectors and intermediates - self.deltap = numpy.zeros(cell_geom, vec.float8) - self.deltap_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - self.Mx = numpy.zeros(mat_geom, numpy.float32) - self.Mx_dev = cl_array.zeros(self.queue, mat_geom, numpy.float32) - self.BTBx = numpy.zeros(cell_geom, vec.float8) - self.BTBx_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - self.Minvx_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - - # CGS intermediates - self.p_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - self.Ap_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - self.res_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - self.rhs_dev = cl_array.zeros(self.queue, cell_geom, vec.float8) - - - def load_from_cellstates(self, cell_states): - for (cid,cs) in list(cell_states.items()): - i = cs.idx - self.cell_centers[i] = tuple(cs.pos)+(0,) - self.cell_dirs[i] = tuple(cs.dir)+(0,) - self.cell_rads[i] = cs.radius - self.cell_lens[i] = cs.length - - self.n_cells = len(cell_states) - self.set_cells() - self.calc_cell_area(self.cell_areas_dev, self.cell_rads_dev, self.cell_lens_dev) - self.calc_cell_vol(self.cell_vols_dev, self.cell_rads_dev, self.cell_lens_dev) - - def load_test_data(self): - import CellModeller.Biophysics.BacterialModels.CLData as data - self.cell_centers.put(list(range(len(data.pos))), data.pos) - self.cell_dirs.put(list(range(len(data.dirs))), data.dirs) - self.cell_lens.put(list(range(len(data.lens))), data.lens) - self.cell_rads.put(list(range(len(data.rads))), data.rads) - self.n_cells = data.n_cells - self.set_cells() - - def load_1_cell(self): - self.cell_centers.put([0], [(0,0,0,0)]) - self.cell_dirs.put([0], [(1,0,0,0)]) - self.cell_lens.put([0], [2.0]) - self.cell_rads.put([0], [0.5]) - self.n_cells = 1 - self.set_cells() - - - def load_2_cells(self): - root2 = numpy.sqrt(2.0) - self.cell_centers.put([0,1], [(-root2-0.5, 0, 0, 0), (root2+0.5, 0, 0, 0)]) - self.cell_dirs.put([0,1], [(root2/2.0, root2/2.0, 0, 0), (-root2/2.0, root2/2.0, 0, 0)]) - self.cell_lens.put([0,1], [4.0, 4.0]) - self.cell_rads.put([0,1], [0.5, 0.5]) - self.n_cells = 2 - self.set_cells() - - - def load_3_cells(self): - root2 = numpy.sqrt(2.0) - self.cell_centers.put([0,1,2], [(-root2-0.5, 0, 0, 0), (root2+0.5, 0, 0, 0), (root2+0.5+3.3, 0, 0, 0)]) - self.cell_dirs.put([0,1,2], [(root2/2.0, root2/2.0, 0, 0), (-root2/2.0, root2/2.0, 0, 0), (1, 0, 0, 0)]) - self.cell_lens.put([0,1,2], [3.0, 3.0, 3.0]) - self.cell_rads.put([0,1,2], [0.5, 0.5, 0.5]) - self.n_cells = 3 - self.set_cells() - - - def load_3_cells_1_plane(self): - root2 = numpy.sqrt(2.0) - self.cell_centers.put([0,1,2], [(-root2-0.5, 0, 0, 0), (root2+0.5, 0, 0, 0), (root2+0.5+3.3, 0, 0, 0)]) - self.cell_dirs.put([0,1,2], [(root2/2.0, root2/2.0, 0, 0), (-root2/2.0, root2/2.0, 0, 0), (1, 0, 0, 0)]) - self.cell_lens.put([0,1,2], [3.0, 3.0, 3.0]) - self.cell_rads.put([0,1,2], [0.5, 0.5, 0.5]) - self.n_cells = 3 - self.set_cells() - - self.n_planes = 1 - self.plane_pts.put([0], [(0, 0, -0.5, 0)]) - self.plane_norms.put([0], [(0, 0, 1, 0)]) - self.plane_coeffs.put([0], [0.5]) - self.set_planes() - - def load_3_cells_2_planes(self): - root2 = numpy.sqrt(2.0) - self.cell_centers.put([0,1,2], [(-root2-0.5, 0, 0, 0), (root2+0.5, 0, 0, 0), (root2+0.5+3.3, 0, 0, 0)]) - self.cell_dirs.put([0,1,2], [(root2/2.0, root2/2.0, 0, 0), (-root2/2.0, root2/2.0, 0, 0), (1, 0, 0, 0)]) - self.cell_lens.put([0,1,2], [3.0, 3.0, 3.0]) - self.cell_rads.put([0,1,2], [0.5, 0.5, 0.5]) - self.n_cells = 3 - self.set_cells() - - self.n_planes = 2 - self.plane_pts.put([0,1], [(0, 0, -0.5, 0), (0, 0, 0.5, 0)]) - self.plane_norms.put([0,1], [(0, 0, 1, 0), (0, 0, -1, 0)]) - self.plane_coeffs.put([0,1], [0.5, 0.1]) - self.set_planes() - - - def load_1_cell_1_plane(self): - self.cell_centers.put([0], [(0,0,0,0)]) - self.cell_dirs.put([0], [(1,0,0,0)]) - self.cell_lens.put([0], [3.0]) - self.cell_rads.put([0], [0.5]) - self.n_cells = 1 - self.set_cells() - - self.plane_pts.put([0], [(4, 0, 0, 0)]) - self.plane_norms.put([0], [(-1, 0, 0, 0)]) - self.plane_coeffs.put([0], [0.5]) - self.n_planes = 1 - self.set_planes() - - - def load_1024_cells(self): - d = 32 - for i in range(-d/2,d/2): - for j in range(-d/2,d/2): - n = (i+d/2)*d + (j+d/2) - x = i*3.5 + random.uniform(-0.05,0.05) - y = j*2.0 + random.uniform(-0.05,0.05) - th = random.uniform(-0.15, 0.15) - dir_x = math.cos(th) - dir_y = math.sin(th) - self.cell_centers.put([n], [(x, y, 0, 0)]) - self.cell_dirs.put([n], [(dir_x, dir_y, 0, 0)]) - self.cell_lens.put([n], [2]) - self.cell_rads.put([n], 0.5) - self.n_cells = d*d - self.set_cells() - - def get_cells(self): - """Copy cell centers, dirs, lens, and rads from the device.""" - self.cell_centers[0:self.n_cells] = self.cell_centers_dev[0:self.n_cells].get() - self.cell_dirs[0:self.n_cells] = self.cell_dirs_dev[0:self.n_cells].get() - self.cell_lens[0:self.n_cells] = self.cell_lens_dev[0:self.n_cells].get() - self.cell_rads[0:self.n_cells] = self.cell_rads_dev[0:self.n_cells].get() - self.cell_dlens[0:self.n_cells] = self.cell_dlens_dev[0:self.n_cells].get() - self.cell_dcenters[0:self.n_cells] = self.cell_dcenters_dev[0:self.n_cells].get() - self.cell_dangs[0:self.n_cells] = self.cell_dangs_dev[0:self.n_cells].get() - - def set_cells(self): - """Copy cell centers, dirs, lens, and rads to the device from local.""" - self.cell_centers_dev[0:self.n_cells].set(self.cell_centers[0:self.n_cells]) - self.cell_dirs_dev[0:self.n_cells].set(self.cell_dirs[0:self.n_cells]) - self.cell_lens_dev[0:self.n_cells].set(self.cell_lens[0:self.n_cells]) - self.cell_rads_dev[0:self.n_cells].set(self.cell_rads[0:self.n_cells]) - self.cell_dlens_dev[0:self.n_cells].set(self.cell_dlens[0:self.n_cells]) - self.cell_dcenters_dev[0:self.n_cells].set(self.cell_dcenters[0:self.n_cells]) - self.cell_dangs_dev[0:self.n_cells].set(self.cell_dangs[0:self.n_cells]) - - def set_planes(self): - """Copy plane pts, norms, and coeffs to the device from local.""" - self.plane_pts_dev[0:self.n_planes].set(self.plane_pts[0:self.n_planes]) - self.plane_norms_dev[0:self.n_planes].set(self.plane_norms[0:self.n_planes]) - self.plane_coeffs_dev[0:self.n_planes].set(self.plane_coeffs[0:self.n_planes]) - - - def set_spheres(self): - """Copy sphere pts and coeffs to the device from local.""" - self.sphere_pts_dev[0:self.n_spheres].set(self.sphere_pts[0:self.n_spheres]) - self.sphere_rads_dev[0:self.n_spheres].set(self.sphere_rads[0:self.n_spheres]) - self.sphere_coeffs_dev[0:self.n_spheres].set(self.sphere_coeffs[0:self.n_spheres]) - self.sphere_norms_dev[0:self.n_spheres].set(self.sphere_norms[0:self.n_spheres]) - - - def get_cts(self): - """Copy contact froms, tos, dists, pts, and norms from the device.""" - self.ct_frs[0:self.n_cts] = self.ct_frs_dev[0:self.n_cts].get() - self.ct_tos[0:self.n_cts] = self.ct_tos_dev[0:self.n_cts].get() - self.ct_dists[0:self.n_cts] = self.ct_dists_dev[0:self.n_cts].get() - self.ct_pts[0:self.n_cts] = self.ct_pts_dev[0:self.n_cts].get() - self.ct_norms[0:self.n_cts] = self.ct_norms_dev[0:self.n_cts].get() - self.cell_n_cts[0:self.n_cells] = self.cell_n_cts_dev[0:self.n_cells].get() - - def matrixTest(self): - x_dev = cl_array.zeros(self.queue, (self.n_cells,), vec.float8) - Ax_dev = cl_array.zeros(self.queue, (self.n_cells,), vec.float8) - opstring = '' - for i in range(self.n_cells): - x = numpy.zeros((self.n_cells,), vec.float8) - for j in range(7): - if j>0: - x[i][j-1]=0.0 - x[i][j]=1.0 - x_dev.set(x) - self.calculate_Ax(Ax_dev, x_dev) - Ax = Ax_dev.get() - for ii in range(self.n_cells): - for jj in range(7): - opstring += str(Ax[ii][jj]) - if ii!=self.n_cells-1 or jj!=6: - opstring = opstring + '\t' - opstring = opstring + '\n' - print("MTM") - print(opstring) - open('CellModeller/Biophysics/BacterialModels/matrix.mat', 'w').write(opstring) - - - def dump_cell_data(self, n): - import pickle - filename = 'data/data-%04i.pickle'%n - outfile = open(filename, 'wb') - data = (self.n_cells, - self.cell_centers_dev.get(), - self.cell_dirs_dev.get(), - self.cell_lens_dev.get(), - self.cell_rads_dev.get(), - self.parents), - pickle.dump(data, outfile, protocol=-1) - - def dydt(self): - self.set_cells() - - def finish(self): - # pull cells from the device and update simulator - if self.simulator: - self.get_cells() - for state in list(self.simulator.cellStates.values()): - self.updateCellState(state) - - def progress_init(self, dt): - self.set_cells() - # NOTE: by default self.dt=None, and time step == simulator time step (dt) - if self.dt: - self.n_ticks = int(math.ceil(dt/self.dt)) - else: - self.n_ticks = 1 - # print("n_ticks = %d"%(self.n_ticks)) - self.actual_dt = dt / float(self.n_ticks) - self.progress_initialised = True - - def progress(self): - if self.n_ticks: - if self.tick(self.actual_dt): - self.n_ticks -= 1 - return False - else: - return True - - def progress_finalise(self): - self.frame_no += 1 - self.progress_initialised = False - self.seconds_elapsed = numpy.float32(time.time() - self.time_begin) - self.minutes_elapsed = (numpy.float32(self.seconds_elapsed) / 60.0) - self.hours_elapsed = (numpy.float32(self.minutes_elapsed) / 60.0) - if self.frame_no % 10 == 0: - print('% 8i % 8i cells % 8i contacts %f hour(s) or %f minute(s) or %f second(s)' % (self.frame_no, self.n_cells, self.n_cts, self.hours_elapsed, self.minutes_elapsed, self.seconds_elapsed)) - # pull cells from the device and update simulator - if self.simulator: - self.get_cells() - # TJR: added incremental construction of this dict to same places as idToIdx - not fully tested - #idxToId = {idx: id for id, idx in self.simulator.idToIdx.iteritems()} - # TJR: add flag for this cos a bit time consuming - if self.computeNeighbours: - self.updateCellNeighbours(self.simulator.idxToId) - for state in list(self.simulator.cellStates.values()): - self.updateCellState(state) - - def step(self, dt): - """Step forward dt units of time. - - Assumes that: - cell_centers is up to date when it starts. - """ - if not self.progress_initialised: - self.progress_init(dt) - if self.progress(): - self.progress_finalise() - return True - else: - return False - - def sub_tick_init(self, dt): - # set target dlens (taken from growth rates set by updateCellStates) - #self.cell_target_dlens_dev.set(dt*self.cell_growth_rates) - #self.cell_dlens_dev.set(dt*self.cell_dlens) - self.cell_dlens_dev[0:self.n_cells].set(dt*self.cell_growth_rates[0:self.n_cells]) - - # redefine gridding based on the range of cell positions - self.cell_centers[0:self.n_cells] = self.cell_centers_dev[0:self.n_cells].get() - self.update_grid() # we assume local cell_centers is current - - # get each cell into the correct sq and retrieve from the device - self.bin_cells() - - # sort cells and find sq index starts in the list - self.cell_sqs = self.cell_sqs_dev[0:self.n_cells].get() # get updated cell sqs - self.sort_cells() - self.sorted_ids_dev.set(self.sorted_ids) # push changes to the device - self.sq_inds_dev.set(self.sq_inds) - - self.n_cts = 0 - self.vcleari(self.cell_n_cts_dev) # clear the accumulated contact count - self.sub_tick_i=0 - self.sub_tick_initialised=True - - def tick(self, dt): - if not self.sub_tick_initialised: - self.sub_tick_init(dt) - if self.sub_tick(dt): - self.sub_tick_finalise() - return True - else: - return False - - def sub_tick(self, dt): - old_n_cts = self.n_cts - self.predict() - # find all contacts - self.find_contacts() - # place 'backward' contacts in cells - self.collect_tos() - - self.sub_tick_i += 1 - alpha = 10**(self.sub_tick_i) - new_cts = self.n_cts - old_n_cts - if (new_cts>0 or self.sub_tick_i==0) and self.sub_tick_i0:#not a plane contact - self.neighbours[i, cell_cts[i]] = idx2Id[ct_tos[i,j]] - cell_cts[i] += 1 - self.neighbours[ct_tos[i,j], cell_cts[ct_tos[i,j]]] = idx2Id[i] - cell_cts[ct_tos[i,j]] += 1 - self.cell_cts = cell_cts - - def updateCellState(self, state): - cid = state.id - i = state.idx - - state.vel = [self.cell_centers[i][j]-state.pos[j] for j in range(3)] - state.pos = [self.cell_centers[i][j] for j in range(3)] - state.dir = [self.cell_dirs[i][j] for j in range(3)] - state.radius = self.cell_rads[i] - state.length = self.cell_lens[i] - state.strainRate = (state.length - state.oldLen)/state.oldLen - - #currently the effective growth rate is calculated over the entire history of the cell - state.effGrowth = state.effGrowth * state.cellAge + state.strainRate * state.oldLen - state.cellAge += 1 - state.effGrowth = state.effGrowth / state.cellAge - state.oldLen = state.length - - state.neighbours = [] #clear contacts - if self.computeNeighbours: #populate cellstate.neighbours - for n in range(self.cell_cts[i]): - if self.neighbours[i,n] not in state.neighbours: - state.neighbours.append(self.neighbours[i,n]) #ids of all cells in physical contact - state.cts = len(state.neighbours) - - state.volume = state.length # TO DO: do something better here - pa = numpy.array(state.pos) - da = numpy.array(state.dir) - state.ends = (pa-da*state.length*0.5, pa+da*state.length*0.5) - # Length vel is linearisation of exponential growth - self.cell_growth_rates[i] = state.growthRate*state.length - - - def update_grid(self): - """Update our grid_(x,y)_min, grid_(x,y)_max, and n_sqs. - - Assumes that our copy of cell_centers is current. - """ - coords = self.cell_centers.view(numpy.float32).reshape((self.max_cells, 4)) - - x_coords = coords[:,0] - min_x_coord = x_coords.min() - max_x_coord = x_coords.max() - self.grid_x_min = int(math.floor(min_x_coord / self.grid_spacing)) - self.grid_x_max = int(math.ceil(max_x_coord / self.grid_spacing)) - if self.grid_x_min == self.grid_x_max: - self.grid_x_max += 1 - - y_coords = coords[:,1] - min_y_coord = y_coords.min() - max_y_coord = y_coords.max() - self.grid_y_min = int(math.floor(min_y_coord / self.grid_spacing)) - self.grid_y_max = int(math.ceil(max_y_coord / self.grid_spacing)) - if self.grid_y_min == self.grid_y_max: - self.grid_y_max += 1 - - self.n_sqs = (self.grid_x_max-self.grid_x_min)*(self.grid_y_max-self.grid_y_min) - - - def bin_cells(self): - """Call the bin_cells kernel. - - Assumes cell_centers is current on the device. - - Calculates cell_sqs. - """ - self.program.bin_cells(self.queue, - (self.n_cells,), - None, - numpy.int32(self.grid_x_min), - numpy.int32(self.grid_x_max), - numpy.int32(self.grid_y_min), - numpy.int32(self.grid_y_max), - numpy.float32(self.grid_spacing), - self.cell_centers_dev.data, - self.cell_sqs_dev.data).wait() - - - def sort_cells(self): - """Sort the cells by grid square and find the start of each - grid square's cells in that list. - - Assumes that the local copy of cell_sqs is current. - - Calculates local sorted_ids and sq_inds. - """ - self.sorted_ids.put(numpy.arange(self.n_cells), numpy.argsort(self.cell_sqs[:self.n_cells])) - self.sorted_ids_dev[0:self.n_cells].set(self.sorted_ids[0:self.n_cells]) - - # find the start of each sq in the list of sorted cell ids and send to the device - sorted_sqs = numpy.sort(self.cell_sqs[:self.n_cells]) - self.sq_inds.put(numpy.arange(self.n_sqs), numpy.searchsorted(sorted_sqs, numpy.arange(self.n_sqs), side='left')) - self.sq_inds_dev.set(self.sq_inds) - - - def find_contacts(self, predict=True): - """Call the find_contacts kernel. - - Assumes that cell_centers, cell_dirs, cell_lens, cell_rads, - cell_sqs, cell_dcenters, cell_dlens, cell_dangs, - sorted_ids, and sq_inds are current on the device. - - Calculates cell_n_cts, ct_frs, ct_tos, ct_dists, ct_pts, - ct_norms, ct_reldists, and n_cts. - """ - if predict: - centers = self.pred_cell_centers_dev - dirs = self.pred_cell_dirs_dev - lens = self.pred_cell_lens_dev - else: - centers = self.cell_centers_dev - dirs = self.cell_dirs_dev - lens = self.cell_lens_dev - - self.program.find_plane_contacts(self.queue, - (self.n_cells,), - None, - numpy.int32(self.max_cells), - numpy.int32(self.max_contacts), - numpy.int32(self.n_planes), - self.plane_pts_dev.data, - self.plane_norms_dev.data, - self.plane_coeffs_dev.data, - centers.data, - dirs.data, - lens.data, - self.cell_rads_dev.data, - self.cell_n_cts_dev.data, - self.ct_frs_dev.data, - self.ct_tos_dev.data, - self.ct_dists_dev.data, - self.ct_pts_dev.data, - self.ct_norms_dev.data, - self.ct_reldists_dev.data, - self.ct_stiff_dev.data).wait() - - self.program.find_sphere_contacts(self.queue, - (self.n_cells,), - None, - numpy.int32(self.max_cells), - numpy.int32(self.max_contacts), - numpy.int32(self.n_spheres), - self.sphere_pts_dev.data, - self.sphere_coeffs_dev.data, - self.sphere_rads_dev.data, - self.sphere_norms_dev.data, - centers.data, - dirs.data, - lens.data, - self.cell_rads_dev.data, - self.cell_n_cts_dev.data, - self.ct_frs_dev.data, - self.ct_tos_dev.data, - self.ct_dists_dev.data, - self.ct_pts_dev.data, - self.ct_norms_dev.data, - self.ct_reldists_dev.data, - self.ct_stiff_dev.data).wait() - - self.program.find_contacts(self.queue, - (self.n_cells,), - None, - numpy.int32(self.max_cells), - numpy.int32(self.n_cells), - numpy.int32(self.grid_x_min), - numpy.int32(self.grid_x_max), - numpy.int32(self.grid_y_min), - numpy.int32(self.grid_y_max), - numpy.int32(self.n_sqs), - numpy.int32(self.max_contacts), - centers.data, - dirs.data, - lens.data, - self.cell_rads_dev.data, - self.cell_sqs_dev.data, - self.sorted_ids_dev.data, - self.sq_inds_dev.data, - self.cell_n_cts_dev.data, - self.ct_frs_dev.data, - self.ct_tos_dev.data, - self.ct_dists_dev.data, - self.ct_pts_dev.data, - self.ct_norms_dev.data, - self.ct_reldists_dev.data, - self.ct_stiff_dev.data, - self.ct_overlap_dev.data).wait() - - # set dtype to int32 so we don't overflow the int32 when summing - #self.n_cts = self.cell_n_cts_dev.get().sum(dtype=numpy.int32) - self.n_cts = cl_array.sum(self.cell_n_cts_dev[0:self.n_cells]).get() - - - def collect_tos(self): - """Call the collect_tos kernel. - - Assumes that cell_sqs, sorted_ids, sq_inds, cell_n_cts, - ct_frs, and ct_tos are current on the device. - - Calculates cell_tos and n_cell_tos. - """ - self.program.collect_tos(self.queue, - (self.n_cells,), - None, - numpy.int32(self.max_cells), - numpy.int32(self.n_cells), - numpy.int32(self.grid_x_min), - numpy.int32(self.grid_x_max), - numpy.int32(self.grid_y_min), - numpy.int32(self.grid_y_max), - numpy.int32(self.n_sqs), - numpy.int32(self.max_contacts), - self.cell_sqs_dev.data, - self.sorted_ids_dev.data, - self.sq_inds_dev.data, - self.cell_n_cts_dev.data, - self.ct_frs_dev.data, - self.ct_tos_dev.data, - self.cell_tos_dev.data, - self.n_cell_tos_dev.data).wait() - - - def build_matrix(self): - """Build the matrix so we can calculate M^TMx = Ax. - - Assumes cell_centers, cell_dirs, cell_lens, cell_rads, - ct_inds, ct_frs, ct_tos, ct_dists, and ct_norms are current on - the device. - - Calculates fr_ents and to_ents. - """ - self.program.build_matrix(self.queue, - (self.n_cells, self.max_contacts), - None, - numpy.int32(self.max_contacts), - self.pred_cell_centers_dev.data, - self.pred_cell_dirs_dev.data, - self.pred_cell_lens_dev.data, - self.cell_rads_dev.data, - self.cell_n_cts_dev.data, - self.ct_frs_dev.data, - self.ct_tos_dev.data, - self.ct_pts_dev.data, - self.ct_norms_dev.data, - self.fr_ents_dev.data, - self.to_ents_dev.data, - self.ct_stiff_dev.data).wait() - - - def calculate_Ax(self, Ax, x, dt, alpha): - - self.program.calculate_Bx(self.queue, - (self.n_cells, self.max_contacts), - None, - numpy.int32(self.max_contacts), - self.ct_frs_dev.data, - self.ct_tos_dev.data, - self.fr_ents_dev.data, - self.to_ents_dev.data, - x.data, - self.Mx_dev.data).wait() - self.program.calculate_BTBx(self.queue, - (self.n_cells,), - None, - numpy.int32(self.max_contacts), - self.cell_n_cts_dev.data, - self.n_cell_tos_dev.data, - self.cell_tos_dev.data, - self.fr_ents_dev.data, - self.to_ents_dev.data, - self.Mx_dev.data, - Ax.data).wait() - # Tikhonov test - #self.vaddkx(Ax, numpy.float32(0.01), Ax, x) - - # Energy mimizing regularization - self.program.calculate_Mx(self.queue, - (self.n_cells,), - None, - numpy.float32(self.muA), - numpy.float32(self.gamma), - self.cell_dirs_dev.data, - self.cell_lens_dev.data, - self.cell_rads_dev.data, - x.data, - self.Mx_dev.data).wait() - - #this was altered from dt*reg_param - #self.vaddkx(Ax, self.gamma, Ax, self.Mx_dev).wait() - #self.vaddkx(Ax, alpha, self.Mx_dev, Ax).wait() - self.vaddkx(Ax, 1/self.gamma, Ax, self.Mx_dev).wait() - # 1/math.sqrt(self.n_cells) removed from the reg_param NB - - #print(self.Minvx_dev) - - def CGSSolve(self, dt, alpha, substep=False): - # Solve A^TA\deltap=A^Tb (Ax=b) - - # There must be a way to do this using built in pyopencl - what - # is it?! - self.vclearf(self.deltap_dev[0:self.n_cells]) - self.vclearf(self.rhs_dev[0:self.n_cells]) - - # put M^T n^Tv_rel in rhs (b) - self.program.calculate_BTBx(self.queue, - (self.n_cells,), - None, - numpy.int32(self.max_contacts), - self.cell_n_cts_dev.data, - self.n_cell_tos_dev.data, - self.cell_tos_dev.data, - self.fr_ents_dev.data, - self.to_ents_dev.data, - self.ct_reldists_dev.data, - self.rhs_dev.data).wait() - - - # res = b-Ax - self.calculate_Ax(self.BTBx_dev, self.deltap_dev, dt, alpha) - self.vsub(self.res_dev[0:self.n_cells], self.rhs_dev[0:self.n_cells], self.BTBx_dev[0:self.n_cells]) - - # p = res - cl.enqueue_copy(self.queue, self.p_dev[0:self.n_cells].data, self.res_dev[0:self.n_cells].data) - - # rsold = l2norm(res) - rsold = self.vdot(self.res_dev[0:self.n_cells], self.res_dev[0:self.n_cells]).get() - rsfirst = rsold - if math.sqrt(rsold/self.n_cells) < self.cgs_tol: - if self.printing and self.frame_no%10==0: - print('% 5i'%self.frame_no + '% 6i cells % 6i cts % 6i iterations residual = %f' % (self.n_cells, - self.n_cts, 0, math.sqrt(rsold/self.n_cells))) - return (0.0, rsold) - - # iterate - # max iters = matrix dimension = 7 (dofs) * num cells - #dying=False - max_iters = self.n_cells*7 - - for iter in range(max_iters): - # Ap - self.calculate_Ax(self.Ap_dev[0:self.n_cells], self.p_dev[0:self.n_cells], dt, alpha) - - # p^TAp - pAp = self.vdot(self.p_dev[0:self.n_cells], self.Ap_dev[0:self.n_cells]).get() - - # alpha = rsold/p^TAp - alpha = numpy.float32(rsold/pAp) - - # x = x + alpha*p, x=self.disp - self.vaddkx(self.deltap_dev[0:self.n_cells], alpha, self.deltap_dev[0:self.n_cells], self.p_dev[0:self.n_cells]) - - # res = res - alpha*Ap - self.vsubkx(self.res_dev[0:self.n_cells], alpha, self.res_dev[0:self.n_cells], self.Ap_dev[0:self.n_cells]) - - # rsnew = l2norm(res) - rsnew = self.vdot(self.res_dev[0:self.n_cells], self.res_dev[0:self.n_cells]).get() - - # Test for convergence - if math.sqrt(rsnew/self.n_cells) < self.cgs_tol: - #if math.sqrt(rsnew/rsfirst) < self.cgs_tol: - break - - # Stopped converging -> terminate - #if rsnew/rsold>2.0: - # break - - # p = res + rsnew/rsold *p - self.vaddkx(self.p_dev[0:self.n_cells], numpy.float32(rsnew/rsold), self.res_dev[0:self.n_cells], self.p_dev[0:self.n_cells]) - - rsold = rsnew - #print ' ',iter,rsold - - if self.printing and self.frame_no%10==0: - print('% 5i'%self.frame_no + '% 6i cells % 6i cts % 6i iterations residual = %f' % (self.n_cells, self.n_cts, iter+1, math.sqrt(rsnew/self.n_cells))) - return (iter+1, math.sqrt(rsnew/self.n_cells)) - - - def predict(self): - """Predict cell centers, dirs, lens for a timestep dt based - on the current velocities. - - Assumes cell_centers, cell_dirs, cell_lens, cell_rads, and - cell_dcenters, cell_dangs, cell_dlens are current on the device. - - Calculates new pred_cell_centers, pred_cell_dirs, pred_cell_lens. - """ - self.program.predict(self.queue, - (self.n_cells,), - None, - self.cell_centers_dev.data, - self.cell_dirs_dev.data, - self.cell_lens_dev.data, - self.cell_dcenters_dev.data, - self.cell_dangs_dev.data, - self.cell_dlens_dev.data, - self.pred_cell_centers_dev.data, - self.pred_cell_dirs_dev.data, - self.pred_cell_lens_dev.data).wait() - - def integrate(self): - """Integrates cell centers, dirs, lens for a timestep dt based - on the current deltap. - - Assumes cell_centers, cell_dirs, cell_lens, cell_rads, and - deltap are current on the device. - - Calculates new cell_centers, cell_dirs, cell_lens. - """ - self.program.integrate(self.queue, - (self.n_cells,), - None, - self.cell_centers_dev.data, - self.cell_dirs_dev.data, - self.cell_lens_dev.data, - self.cell_dcenters_dev.data, - self.cell_dangs_dev.data, - self.cell_dlens_dev.data).wait() - - def add_impulse(self): - self.program.add_impulse(self.queue, (self.n_cells,), None, - numpy.float32(self.muA), - numpy.float32(self.gamma), - self.deltap_dev.data, - self.cell_dirs_dev.data, - self.cell_lens_dev.data, - self.cell_rads_dev.data, - self.cell_dcenters_dev.data, - self.cell_dangs_dev.data, - self.cell_target_dlens_dev.data, - self.cell_dlens_dev.data).wait() - - def divide_cell(self, i, d1i, d2i): - """Divide a cell into two equal sized daughter cells. - - Fails silently if we're out of cells. - - Assumes our local copy of cells is current. - - Calculates new cell_centers, cell_dirs, cell_lens, and cell_rads. - """ - if self.n_cells >= self.max_cells: - return - # idxs of the two new cells - a = d1i - b = d2i - - # seems to be making shallow copies without the tuple calls - parent_center = tuple(self.cell_centers[i]) - parent_dir = tuple(self.cell_dirs[i]) - parent_rad = self.cell_rads[i] - parent_len = self.cell_lens[i] - - daughter_len = parent_len/2.0 - parent_rad #- 0.025 - daughter_offset = daughter_len/2.0 + parent_rad - center_offset = tuple([parent_dir[k]*daughter_offset for k in range(4)]) - - self.cell_centers[a] = tuple([(parent_center[k] - center_offset[k]) for k in range(4)]) - self.cell_centers[b] = tuple([(parent_center[k] + center_offset[k]) for k in range(4)]) - - if not self.alternate_divisions: - cdir = numpy.array(parent_dir) - jitter = numpy.random.uniform(-0.001,0.001,3) - if not self.jitter_z: jitter[2] = 0.0 - cdir[0:3] += jitter - cdir /= numpy.linalg.norm(cdir) - self.cell_dirs[a][0] = cdir[0] - self.cell_dirs[a][1] = cdir[1] - self.cell_dirs[a][2] = cdir[2] - - cdir = numpy.array(parent_dir) - jitter = numpy.random.uniform(-0.001,0.001,3) - if not self.jitter_z: jitter[2] = 0.0 - cdir[0:3] += jitter - cdir /= numpy.linalg.norm(cdir) - self.cell_dirs[b][0] = cdir[0] - self.cell_dirs[b][1] = cdir[1] - self.cell_dirs[b][2] = cdir[2] - else: - cdir = numpy.array(parent_dir) - tmp = cdir[0] - cdir[0] = -cdir[1] - cdir[1] = tmp - self.cell_dirs[a] = cdir - self.cell_dirs[b] = cdir - - - self.cell_lens[a] = daughter_len - self.cell_lens[b] = daughter_len - self.cell_rads[a] = parent_rad - self.cell_rads[b] = parent_rad - - self.n_cells += 1 - - self.parents[b] = a - - vols = self.cell_vols_dev[0:self.n_cells].get() - daughter_vol = vols[i] / 2.0 - vols[a] = daughter_vol - vols[b] = daughter_vol - self.cell_vols_dev[0:self.n_cells].set(vols) - - # Inherit velocities from parent (conserve momentum) - parent_dlin = self.cell_dcenters[i] - self.cell_dcenters[a] = parent_dlin - self.cell_dcenters[b] = parent_dlin - parent_dang = self.cell_dangs[i] - self.cell_dangs[a] = parent_dang - self.cell_dangs[b] = parent_dang - - - #return indices of daughter cells - return (a,b) - - - def calc_cell_geom(self): - """Calculate cell geometry using lens/rads on card.""" - # swap cell vols and cell_vols old - tmp = self.cell_old_vols_dev[0:self.n_cells] - self.cell_old_vols_dev[0:self.n_cells] = self.cell_vols_dev[0:self.n_cells] - self.cell_vols_dev[0:self.n_cells] = tmp - # update geometry - self.calc_cell_area(self.cell_areas_dev[0:self.n_cells], \ - self.cell_rads_dev[0:self.n_cells], \ - self.cell_lens_dev[0:self.n_cells]) - self.calc_cell_vol(self.cell_vols_dev[0:self.n_cells], \ - self.cell_rads_dev[0:self.n_cells], \ - self.cell_lens_dev[0:self.n_cells]) - - - def profileGrid(self): - if self.n_cts==0: - return - import time - t1 = time.clock() - for i in range(1000): - # redefine gridding based on the range of cell positions - self.cell_centers = self.cell_centers_dev.get() - self.update_grid() # we assume local cell_centers is current - - # get each cell into the correct sq and retrieve from the device - self.bin_cells() - - # sort cells and find sq index starts in the list - self.cell_sqs = self.cell_sqs_dev.get() # get updated cell sqs - self.sort_cells() - self.sorted_ids_dev.set(self.sorted_ids) # push changes to the device - self.sq_inds_dev.set(self.sq_inds) - t2 = time.clock() - print("Grid stuff timing for 1000 calls, time per call (s) = %f"%((t2-t1)*0.001)) - open("grid_prof","a").write( "%i, %i, %f\n"%(self.n_cells,self.n_cts,(t2-t1)*0.001) ) - - - def profileFindCts(self): - if self.n_cts==0: - return - import time - t1 = time.clock() - dt = 0.005 - for i in range(1000): - self.n_cts = 0 - self.vcleari(self.cell_n_cts_dev) # clear the accumulated contact count - self.predict(dt) - # find all contacts - self.find_contacts(dt) - # place 'backward' contacts in cells - self.collect_tos() - - # compact the contacts so we can dispatch only enough threads - # to deal with each - self.ct_frs = self.ct_frs_dev.get() - self.ct_tos = self.ct_tos_dev.get() - self.compact_cts() - self.ct_inds_dev.set(self.ct_inds) - t2 = time.clock() - print("Find contacts timing for 1000 calls, time per call (s) = %f"%((t2-t1)*0.001)) - open("findcts_prof","a").write( "%i, %i, %f\n"%(self.n_cells,self.n_cts,(t2-t1)*0.001) ) - - def profileCGS(self): - if self.n_cts==0: - return - import time - t1 = time.clock() - dt = 0.005 - for i in range(1000): - self.build_matrix(dt) # Calculate entries of the matrix - (iters, res) = self.CGSSolve() - print("cgs prof: iters=%i, res=%f"%(iters,res)) - t2 = time.clock() - print("CGS timing for 1000 calls, time per call (s) = %f"%((t2-t1)*0.001)) - open("cgs_prof","a").write( "%i, %i, %i, %f\n"%(self.n_cells,self.n_cts,iters,(t2-t1)*0.001) ) - - diff --git a/CellModeller/Biophysics/GeneralModels/CLFixedPosition.py b/CellModeller/Biophysics/GeneralModels/CLFixedPosition.py deleted file mode 100644 index 87d6e7cf..00000000 --- a/CellModeller/Biophysics/GeneralModels/CLFixedPosition.py +++ /dev/null @@ -1,88 +0,0 @@ -import sys -import math -import numpy -import pyopencl as cl -import pyopencl.array as cl_array -from pyopencl.array import vec - -class CLFixedPosition: - def __init__(self, sim, max_cells=100): - self.simulator = sim - self.max_cells = max_cells - self.init_cl() - self.init_data() - self.n_cells = 0 - - def setRegulator(self, reg): - self.reg = reg - - def init_cl(self): - if self.simulator: - (self.context, self.queue) = self.simulator.getOpenCL() - - def init_data(self): - """Set up the data OpenCL will store on the device.""" - # cell data - cell_geom = (self.max_cells,) - self.cell_centers = numpy.zeros(cell_geom, vec.float4) - self.cell_centers_dev = cl_array.zeros(self.queue, cell_geom, vec.float4) - - # cell geometry - self.cell_areas_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_areas = numpy.zeros(cell_geom, numpy.float32) - self.cell_vols_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_vols = numpy.zeros(cell_geom, numpy.float32) - self.cell_old_vols_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - self.cell_old_vols = numpy.zeros(cell_geom, numpy.float32) - - self.cell_growth_rates = numpy.zeros(cell_geom, numpy.float32) - self.cell_growth_rates_dev = cl_array.zeros(self.queue, cell_geom, numpy.float32) - - def addCell(self, cellState, pos=(0,0,0), vol=1, **kwargs): - i = cellState.idx - self.n_cells += 1 - cid = cellState.id - self.cell_centers[i] = tuple(pos+(0,)) - self.cell_vols[i] = vol - self.cell_old_vols[i] = vol - self.initCellState(cellState) - self.set_cells() - - def initCellState(self, state): - cid = state.id - i = state.idx - state.pos = [self.cell_centers[i][j] for j in range(3)] - state.volume = self.cell_vols[i] - state.startVol = state.volume - - def updateCellState(self, state): - cid = state.id - i = state.idx - state.volume = self.cell_vols[i] - self.cell_growth_rates[i] = state.growthRate*state.volume - - def get_cells(self): - """Copy cell centers, dirs, lens, and rads from the device.""" - self.cell_centers[0:self.n_cells] = self.cell_centers_dev[0:self.n_cells].get() - self.cell_vols[0:self.n_cells] = self.cell_vols_dev[0:self.n_cells].get() - - def set_cells(self): - """Copy cell centers, dirs, lens, and rads to the device from local.""" - self.cell_centers_dev[0:self.n_cells].set(self.cell_centers[0:self.n_cells]) - self.cell_vols_dev[0:self.n_cells].set(self.cell_vols[0:self.n_cells]) - self.cell_growth_rates_dev[0:self.n_cells].set(self.cell_growth_rates[0:self.n_cells]) - - def step(self, dt): - self.set_cells() - - # No change in positions, just growth increasing volume - self.cell_old_vols_dev[0:self.n_cells] = self.cell_vols_dev[0:self.n_cells] - self.cell_vols_dev += self.cell_growth_rates_dev * dt - - if self.simulator: - self.get_cells() - for state in list(self.simulator.cellStates.values()): - self.updateCellState(state) - - return True - diff --git a/CellModeller/Biophysics/GeneralModels/__init__.py b/CellModeller/Biophysics/GeneralModels/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/CellModeller/Biophysics/__init__.py b/CellModeller/Biophysics/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/CellModeller/GUI/__init__.py b/CellModeller/GUI/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/CellModeller/Integration/CLCrankNicIntegrator.cl b/CellModeller/Integration/CLCrankNicIntegrator.cl deleted file mode 100644 index f14f3b2c..00000000 --- a/CellModeller/Integration/CLCrankNicIntegrator.cl +++ /dev/null @@ -1,329 +0,0 @@ - - -void userSignalRates(float gridVolume, float area, float volume, const int cellType, float* rates, __global const float* species, __global const float* signals) -{ - %(sigKernel)s -} -void userSpecRates(float gridVolume, float area, float volume, const int cellType, __global float* rates, __global float* species, __global const float* signals) -{ - %(specKernel)s -} - -__kernel void gridCells(const float gridOrigx, - const float gridOrigy, - const float gridOrigz, - const float gridSizex, - const float gridSizey, - const float gridSizez, - const int gridDimx, - const int gridDimy, - const int gridDimz, - __global const float4* pos, - __global float* weights, - __global int* indices) -{ - int id = get_global_id(0); - int base = id*8; - int4 idx = 0; - float4 p = pos[id]; - float ix = floor((p.x - gridOrigx) / gridSizex); - float iy = floor((p.y - gridOrigy) / gridSizey); - float iz = floor((p.z - gridOrigz) / gridSizez); - idx.x = (int)(ix); - idx.y = (int)(iy); - idx.z = (int)(iz); - - - - // Indices of 8 nearest grid nodes - for (int i=0; i<2; i++) { - for (int j=0; j<2; j++) { - for (int k=0; k<2; k++) { - int4 offset = {i,j,k,0}; - int4 ind = idx + offset; - // Is the neighbourhood node in the grid? - int inGrid = (int)(ind.x>=0 && ind.x=0 && ind.y=0 && ind.z=0 && ix=0 && iy=0 && iz=0 && ix=0 && iy=-1 && iz=0 && ix=-1 && iy=0 && iz=0 && ix=-1 && iy=-1 && iz=-1 && ix=0 && iy=0 && iz=-1 && ix=0 && iy=-1 && iz=-1 && ix=-1 && iy=0 && iz=-1 && ix=-1 && iy=-1 && iz threshold - self.greensFunc.shape = self.gridDim - inds = numpy.transpose(numpy.nonzero(self.greensFunc.reshape(self.gridDim)>self.greensThreshold)) - self.greensFunc = self.greensFunc[:, min(inds[:,1]):max(inds[:,1])+1, \ - min(inds[:,2]):max(inds[:,2])+1, \ - min(inds[:,3]):max(inds[:,3])+1] - print("Truncated Green's function size is " + str(self.greensFunc.shape)) - - - def addCell(self, cellState): - idx = cellState.idx - self.nCells += 1 - cellState.species = self.specLevel[idx,:] - cellState.signals = self.cellSigLevels[idx,:] - self.celltype[idx] = numpy.int32(cellState.cellType) - - def divide(self, pState, d1State, d2State): - # Simulator should have organised indexing: - - # Set up slicing of levels for each daughter and copy parent levels - d1idx = d1State.idx - self.nCells += 1 - self.specLevel[d1idx,:] = pState.species - self.cellSigLevels[d1idx,:] = pState.signals - d1State.species = self.specLevel[d1idx,:] - d1State.signals = self.cellSigLevels[d1idx,:] - self.celltype[d1idx] = d1State.cellType - - d2idx = d2State.idx - self.nCells += 1 - self.specLevel[d2idx,:] = pState.species - self.cellSigLevels[d2idx,:] = pState.signals - d1State.species = self.specLevel[d1idx,:] - d1State.signals = self.cellSigLevels[d1idx,:] - self.celltype[d1idx] = d1State.cellType - - d2idx = d2State.idx - self.nCells += 1 - self.specLevel[d2idx,:] = pState.species - d2State.species = self.specLevel[d2idx,:] - d2State.signals = self.cellSigLevels[d2idx,:] - self.celltype[d2idx] = d2State.cellType - - def setSignalling(self, sig): - self.signalling = sig - - def setRegulator(self, regul): - self.regul = regul - # Use regulation module to setup kernels - self.initKernels() - - def initArrays(self): - self.gridIdxs = numpy.zeros((self.maxCells,8),dtype=numpy.int32) - self.gridIdxs_dev = cl_array.zeros(self.queue, (self.maxCells,8),dtype=numpy.int32) - self.triWts = numpy.zeros((self.maxCells,8),dtype=numpy.float32) - self.triWts_dev = cl_array.zeros(self.queue, (self.maxCells,8),dtype=numpy.float32) - self.cellSigRates = numpy.zeros((self.maxCells,8,self.nSignals),dtype=numpy.float32) - self.cellSigRates_dev = cl_array.zeros(self.queue, (self.maxCells,8,self.nSignals),dtype=numpy.float32) - self.cellSigLevels = numpy.zeros((self.maxCells,self.nSignals),dtype=numpy.float32) - self.cellSigLevels_dev = cl_array.zeros(self.queue, (self.maxCells,self.nSignals),dtype=numpy.float32) - self.signalLevel_dev = cl_array.zeros(self.queue, self.gridDim,dtype=numpy.float32) - self.specLevel_dev = cl_array.zeros(self.queue, (self.maxCells,self.nSpecies), dtype=numpy.float32) - self.specRate_dev = cl_array.zeros(self.queue, (self.maxCells,self.nSpecies), dtype=numpy.float32) - - self.celltype = numpy.zeros((self.maxCells,),dtype=numpy.int32) - self.celltype_dev = cl_array.zeros(self.queue, (self.maxCells,),dtype=numpy.int32) - #self.pos_dev = cl_array.zeros(self.queue, (self.maxCells,), dtype=vec.float4) - - def initKernels(self): - # Get user defined kernel source - specRateKernel = self.regul.specRateCL() - sigRateKernel = self.regul.sigRateCL() - #kernel_src = open('CellModeller/Integration/CLCrankNicIntegrator.cl', 'r').read() - from pkg_resources import resource_string - kernel_src = resource_string(__name__, 'CLCrankNicIntegrator.cl').decode() - # substitute user defined kernel code, and number of signals - kernel_src = kernel_src % {'sigKernel': sigRateKernel, - 'specKernel': specRateKernel, - 'nSignals': self.nSignals} - self.program = cl.Program(self.context, kernel_src).build(cache_dir=False) - - - def dydt(self): - # get cell grid idxs and weights - self.program.gridCells(self.queue, (self.nCells,), None, - numpy.float32(self.signalling.gridOrig[0]), - numpy.float32(self.signalling.gridOrig[1]), - numpy.float32(self.signalling.gridOrig[2]), - numpy.float32(self.signalling.gridSize[0]), - numpy.float32(self.signalling.gridSize[1]), - numpy.float32(self.signalling.gridSize[2]), - numpy.int32(self.signalling.gridDim[1]), - numpy.int32(self.signalling.gridDim[2]), - numpy.int32(self.signalling.gridDim[3]), - self.sim.phys.cell_centers_dev.data, - self.triWts_dev.data, - self.gridIdxs_dev.data).wait() - self.gridIdxs[:] = self.gridIdxs_dev.get() - - # put local cell signal levels in array - self.signalLevel_dev.set(self.signalLevel) - self.program.setCellSignals(self.queue, (self.nCells,), None, - numpy.int32(self.nSignals), - numpy.int32(self.gridTotalSize), - numpy.int32(self.signalling.gridDim[1]), - numpy.int32(self.signalling.gridDim[2]), - numpy.int32(self.signalling.gridDim[3]), - self.gridIdxs_dev.data, - self.triWts_dev.data, - self.signalLevel_dev.data, - self.cellSigLevels_dev.data).wait() - - self.celltype_dev.set(self.celltype) - # compute species rates - self.specLevel_dev.set(self.specLevel) - self.program.speciesRates(self.queue, (self.nCells,), None, - numpy.int32(self.nSignals), - numpy.int32(self.nSpecies), - numpy.float32(self.sim.sig.dV), - self.sim.phys.cell_areas_dev.data, - self.sim.phys.cell_vols_dev.data, - self.celltype_dev.data, - self.specLevel_dev.data, - self.cellSigLevels_dev.data, - self.specRate_dev.data).wait() - self.specRate[:] = self.specRate_dev.get() - - # compute signal rates, weighted for grid nodes - self.program.signalRates(self.queue, (self.nCells,), None, - numpy.int32(self.nSignals), - numpy.int32(self.nSpecies), - numpy.float32(self.sim.sig.dV), - self.sim.phys.cell_areas_dev.data, - self.sim.phys.cell_vols_dev.data, - self.celltype_dev.data, - self.specLevel_dev.data, - self.cellSigLevels_dev.data, - self.triWts_dev.data, - self.cellSigRates_dev.data).wait() - self.cellSigRates[:] = self.cellSigRates_dev.get() - - # Put cell signal production into diffusion grid: - # - Using a convoluted way to reduce by key to get cell prod rates - # into grid - gridIdxs = self.gridIdxs[0:self.nCells,:].reshape(self.nCells*8) - order = numpy.argsort(gridIdxs) - gridIdxs = gridIdxs[order] - cellSigRates = self.cellSigRates[0:self.nCells,:,:].reshape((self.nCells*8,self.nSignals)) - cellSigRates = cellSigRates[order] - cellSigRates.cumsum(axis=0, out=cellSigRates) - (u,index) = unique_stable(gridIdxs[::-1],True) # first occurance of each key in reverse keys - index = len(gridIdxs)-1-index # last occurance in forward keys - cellSigRates = cellSigRates[index] - idxs = gridIdxs[index] - cellSigRates[1:] = cellSigRates[1:] - cellSigRates[:-1] # difference in cumsums is sum for each index - - - signalRate = self.signalRate.reshape((self.nSignals,self.gridDim[1]*self.gridDim[2]*self.gridDim[3])) - signalRate[:,idxs] += cellSigRates.transpose() # add into diffusion grid - - - def step(self, dt): - if dt!=self.dt: - print("I can only integrate at fixed dt!") - return - - self.nCells = len(self.cellStates) - # Check we have enough space allocated - try: - s = self.specLevel[self.nCells-1] - except IndexError: - # Could resize here, then would have to rebuild views - print("Number of cells exceeded " \ - + self.__class__.__name__ \ - + "::maxCells (" + self.maxCells + ")") - - self.dataLen = self.signalDataLen + self.nCells*self.nSpecies - - # growth dilution of species - self.diluteSpecies() - - # Do u += h(T(u_t)/2 + hf(u_t)) where T=transport operator, f(u_t) is - # our regulation function dydt - self.signalling.transportRates(self.signalRate, self.signalLevel, self.boundcond) - self.signalRate *= 0.5 - self.dydt() - self.rates[0:self.dataLen] *= self.dt - self.levels[0:self.dataLen] += self.rates[0:self.dataLen] - - # Convolve (I+hT/2)u_t + f(u_t) with the Greens func to get u_{t+1} - sigLvl = self.signalLevel.reshape(self.gridDim) - convolve(sigLvl, self.greensFunc, mode=self.boundcond) - - # put local cell signal levels in array - self.signalLevel_dev.set(self.signalLevel) - self.program.setCellSignals(self.queue, (self.nCells,), None, - numpy.int32(self.nSignals), - numpy.int32(self.gridTotalSize), - numpy.int32(self.signalling.gridDim[1]), - numpy.int32(self.signalling.gridDim[2]), - numpy.int32(self.signalling.gridDim[3]), - self.gridIdxs_dev.data, - self.triWts_dev.data, - self.signalLevel_dev.data, - self.cellSigLevels_dev.data).wait() - self.cellSigLevels[:] = self.cellSigLevels_dev.get() - -# Put the final signal levels into the cell states -# states = self.cellStates -# for (id,c) in states.items(): -# if self.signalling: -# c.signals = self.signalling.signals(c, self.signalLevel) - - # Update cellType array - for (id,c) in list(self.cellStates.items()): - self.celltype[c.idx] = numpy.int32(c.cellType) - self.celltype_dev.set(self.celltype) - - - def diluteSpecies(self): - self.specLevel_dev.set(self.specLevel) - self.program.diluteSpecs(self.queue, (self.nCells,), None, - numpy.int32(self.nSpecies), - self.sim.phys.cell_old_vols_dev.data, - self.sim.phys.cell_vols_dev.data, - self.specLevel_dev.data).wait() - self.specLevel[:] = self.specLevel_dev.get() - - def setLevels(self, SSLevel, cellSigData): - self.cellStates = self.sim.cellStates - self.levels = SSLevel - self.makeViews() - self.cellSigLevels = cellSigData - self.signalLevel_dev.set(self.signalLevel) - self.specLevel_dev.set(self.specLevel) - self.cellSigLevels_dev.set(self.cellSigLevels) - cs = self.cellStates - for id,c in list(cs.items()): #make sure everything is correct here - c.species = self.specLevel[c.idx,:] - c.signals = self.cellSigLevels[c.idx,:] - self.celltype[c.idx] = numpy.int32(c.cellType) - self.celltype_dev.set(self.celltype) - - diff --git a/CellModeller/Integration/CLEulerIntegrator.cl b/CellModeller/Integration/CLEulerIntegrator.cl deleted file mode 100644 index c38665c7..00000000 --- a/CellModeller/Integration/CLEulerIntegrator.cl +++ /dev/null @@ -1,35 +0,0 @@ -void userSpecRates(float4 pos, float area, float volume, const int cellType, const float effGrowth, __global float* rates, __global const float* species) -{ - %s -} - -__kernel void speciesRates(const int numSpecies, - __global const float4* pos, - __global const float* areas, - __global const float* volumes, - __global const int* celltype, - __global const float* effGrow, - __global const float* cellSpecLevels, - __global float* specRate) -{ - int id = get_global_id(0); - int specbase = id*numSpecies; - int cellType = celltype[id]; - __global const float* species = cellSpecLevels+specbase; - __global float* rates = specRate+specbase; - - userSpecRates(pos[id], areas[id], volumes[id], cellType, effGrow[id], rates, species); -} - -__kernel void diluteSpecs(const int numSpecies, - __global const float* oldVols, - __global const float* vols, - __global float* specRates) -{ - int id = get_global_id(0); - float factor = oldVols[id]/vols[id]; - int base = id*numSpecies; - for (int i = 0; i < numSpecies; i++) { - specRates[base+i] = specRates[base+i]*factor; - } -} diff --git a/CellModeller/Integration/CLEulerIntegrator.py b/CellModeller/Integration/CLEulerIntegrator.py deleted file mode 100644 index 3db4d153..00000000 --- a/CellModeller/Integration/CLEulerIntegrator.py +++ /dev/null @@ -1,176 +0,0 @@ -import numpy -import scipy.integrate.odepack -import pyopencl as cl -import pyopencl.array as cl_array -from pyopencl.array import vec -import math - -class CLEulerIntegrator: - #Simple forward Euler integration of species rates - - def __init__(self, sim, nSpecies, maxCells, regul=None): - self.sim = sim - self.dt = self.sim.dt - self.regul = regul - - self.cellStates = sim.cellStates - self.nCells = len(self.cellStates) - - self.nSpecies = nSpecies - self.maxCells = maxCells - - self.maxSpecDataLen = self.maxCells*nSpecies - # no need to scale up signal storage - storageLen = self.maxSpecDataLen - - # These arrays store the level and rate of signals and species - # in a contiguous form. - # To avoid reallocation, create enough space for maxCells - self.levels = numpy.zeros(storageLen,dtype=numpy.float32) - self.rates = numpy.zeros(storageLen,dtype=numpy.float32) - self.makeViews() - - (self.context, self.queue) = self.sim.getOpenCL() - self.initArrays() - #self.initKernels() - - # set the species for existing states to views of the levels array - cs = self.cellStates - for id,c in list(cs.items()): - c.species = self.specLevel[c.idx,:] - - - def makeViews(self): - # Level views (references) to the data - self.specLevel = self.levels[0:self.maxSpecDataLen].reshape(self.maxCells,self.nSpecies) - # Rate views (references) to the data - self.specRate = self.rates[0:self.maxSpecDataLen].reshape(self.maxCells,self.nSpecies) - - def addCell(self, cellState): - idx = cellState.idx - self.nCells += 1 - cellState.species = self.specLevel[idx,:] - self.celltype[idx] = numpy.int32(cellState.cellType) - - def divide(self, pState, d1State, d2State): - # Simulator should have organised indexing: - - # Set up slicing of levels for each daughter and copy parent levels - d1idx = d1State.idx - self.nCells += 1 - self.specLevel[d1idx,:] = pState.species - d1State.species = self.specLevel[d1idx,:] - self.celltype[d1idx] = d1State.cellType - - d2idx = d2State.idx - self.nCells += 1 - self.specLevel[d2idx,:] = pState.species - d1State.species = self.specLevel[d1idx,:] - self.celltype[d1idx] = d1State.cellType - - d2idx = d2State.idx - self.nCells += 1 - self.specLevel[d2idx,:] = pState.species - d2State.species = self.specLevel[d2idx,:] - self.celltype[d2idx] = d2State.cellType - - def setRegulator(self, regul): - self.regul = regul - # Use regulation module to setup kernels - self.initKernels() - - def initArrays(self): - self.specLevel_dev = cl_array.zeros(self.queue, (self.maxCells,self.nSpecies), dtype=numpy.float32) - self.specRate_dev = cl_array.zeros(self.queue, (self.maxCells,self.nSpecies), dtype=numpy.float32) - - self.celltype = numpy.zeros((self.maxCells,), dtype=numpy.int32) - self.celltype_dev = cl_array.zeros(self.queue, (self.maxCells,),dtype=numpy.int32) - - self.effgrow = numpy.zeros((self.maxCells,), dtype=numpy.float32) - self.effgrow_dev = cl_array.zeros(self.queue, (self.maxCells,), dtype=numpy.float32) - - #self.pos_dev = cl_array.zeros(self.queue, (self.maxCells,), dtype=vec.float4) - - def initKernels(self): - # Get user defined kernel source - specRateKernel = self.regul.specRateCL() - from pkg_resources import resource_string - kernel_src = resource_string(__name__, 'CLEulerIntegrator.cl').decode() - # substitute user defined kernel code, and number of signals - kernel_src = kernel_src%(specRateKernel) - self.program = cl.Program(self.context, kernel_src).build(cache_dir=False) - - - def dydt(self): - self.celltype_dev.set(self.celltype) - # compute species rates - self.specLevel_dev.set(self.specLevel) - self.program.speciesRates(self.queue, (self.nCells,), None, - numpy.int32(self.nSpecies), - self.sim.phys.cell_centers_dev.data, - self.sim.phys.cell_areas_dev.data, - self.sim.phys.cell_vols_dev.data, - self.celltype_dev.data, - self.effgrow_dev.data, - self.specLevel_dev.data, - self.specRate_dev.data).wait() - self.specRate[:] = self.specRate_dev.get() - - def step(self, dt): - if dt!=self.dt: - print("I can only integrate at fixed dt!") - return - - self.nCells = len(self.cellStates) - # Check we have enough space allocated - try: - s = self.specLevel[self.nCells-1] - except IndexError: - # Could resize here, then would have to rebuild views - print("Number of cells exceeded " \ - + self.__class__.__name__ \ - + "::maxCells (" + self.maxCells + ")") - - self.dataLen = self.nCells*self.nSpecies - - self.cellStates = self.sim.cellStates - cs = self.cellStates - for id,c in list(cs.items()): - self.effgrow[c.idx] = numpy.float32(c.effGrowth) - self.effgrow_dev.set(self.effgrow) - - # growth dilution of species - self.diluteSpecies() - - self.dydt() - self.rates[0:self.dataLen] *= self.dt - self.levels[0:self.dataLen] += self.rates[0:self.dataLen] - - -# Put the final signal levels into the cell states -# states = self.cellStates -# for (id,c) in states.items(): -# if self.signalling: -# c.signals = self.signalling.signals(c, self.signalLevel) - - def setLevels(self, specLevel): - self.cellStates = self.sim.cellStates - self.levels = specLevel - self.makeViews() - self.specLevel_dev.set(self.specLevel) - cs = self.cellStates - for id,c in list(cs.items()): - c.species = self.specLevel[c.idx,:] - self.celltype[c.idx] = numpy.int32(c.cellType) - self.celltype_dev.set(self.celltype) - - - def diluteSpecies(self): - self.specLevel_dev.set(self.specLevel) - self.program.diluteSpecs(self.queue, (self.nCells,), None, - numpy.int32(self.nSpecies), - self.sim.phys.cell_old_vols_dev.data, - self.sim.phys.cell_vols_dev.data, - self.specLevel_dev.data).wait() - self.specLevel[:] = self.specLevel_dev.get() - diff --git a/CellModeller/Integration/CLEulerSigIntegrator.cl b/CellModeller/Integration/CLEulerSigIntegrator.cl deleted file mode 100644 index f14f3b2c..00000000 --- a/CellModeller/Integration/CLEulerSigIntegrator.cl +++ /dev/null @@ -1,329 +0,0 @@ - - -void userSignalRates(float gridVolume, float area, float volume, const int cellType, float* rates, __global const float* species, __global const float* signals) -{ - %(sigKernel)s -} -void userSpecRates(float gridVolume, float area, float volume, const int cellType, __global float* rates, __global float* species, __global const float* signals) -{ - %(specKernel)s -} - -__kernel void gridCells(const float gridOrigx, - const float gridOrigy, - const float gridOrigz, - const float gridSizex, - const float gridSizey, - const float gridSizez, - const int gridDimx, - const int gridDimy, - const int gridDimz, - __global const float4* pos, - __global float* weights, - __global int* indices) -{ - int id = get_global_id(0); - int base = id*8; - int4 idx = 0; - float4 p = pos[id]; - float ix = floor((p.x - gridOrigx) / gridSizex); - float iy = floor((p.y - gridOrigy) / gridSizey); - float iz = floor((p.z - gridOrigz) / gridSizez); - idx.x = (int)(ix); - idx.y = (int)(iy); - idx.z = (int)(iz); - - - - // Indices of 8 nearest grid nodes - for (int i=0; i<2; i++) { - for (int j=0; j<2; j++) { - for (int k=0; k<2; k++) { - int4 offset = {i,j,k,0}; - int4 ind = idx + offset; - // Is the neighbourhood node in the grid? - int inGrid = (int)(ind.x>=0 && ind.x=0 && ind.y=0 && ind.z=0 && ix=0 && iy=0 && iz=0 && ix=0 && iy=-1 && iz=0 && ix=-1 && iy=0 && iz=0 && ix=-1 && iy=-1 && iz=-1 && ix=0 && iy=0 && iz=-1 && ix=0 && iy=-1 && iz=-1 && ix=-1 && iy=0 && iz=-1 && ix=-1 && iy=-1 && iz0: - print("Errors in reading SBML file...") - checkSBMLConsistency(document) - model = document.getModel() + print("Errors in reading SBML file...") + checkSBMLConsistency(document) + model = document.getModel() if not model: - print("No model!") - return model + print("No model!") + return model # load SBML model form given string. @@ -124,7 +124,7 @@ def pythonMathFromASTNode(astNode, kineticLaw, model): return "1" else: - raise Exception("Un-supported AST node type: " + str(astNode.isName()) + ", node: " + str(astNode.getType())) + raise Exception("Un-supported AST node type: " + str(astNode.isName()) + ", node: " + str(astNode.getType())) # constructs a python program string from given SBML model. diff --git a/CellModeller/Signalling/GridDiffusion.py b/CellModeller/Signalling/GridDiffusion.py deleted file mode 100644 index f863e897..00000000 --- a/CellModeller/Signalling/GridDiffusion.py +++ /dev/null @@ -1,163 +0,0 @@ -from math import floor -import numpy -from scipy.ndimage import laplace -from scipy.ndimage.filters import convolve -from functools import reduce - - -class GridDiffusion: - """ GridDiffusion: - Signal levels/rates on the grid are stored by the Integrator, and this class writes -into that array data. - 1. rates() computes the \Del^2 transport operator for grid based diffusion. - 2. signals() returns the local signal level for a given cell, and given signal -level array. - - Other transport models can be implemented by replacing the rates() function with -something else - e.g. a bulk flow term. -""" - def __init__(self, sim, nSignals, gridDim, gridSize, gridOrig, D, adv=None, initLevels=None, regul=None): - # Data organisation - self.gridDim = (nSignals,) + gridDim - self.gridDataLen = reduce(lambda x, y: x * y, self.gridDim) - - self.gridSize = gridSize - self.gridOrig = numpy.array(gridOrig) - assert gridSize[0]==gridSize[1]==gridSize[2] - - # Scale diffusion/advection rates by gridSize - h = gridSize[0] - self.diffRates = [d/(h**2) for d in D] - self.advRates = [a/h for a in adv] if adv else None - self.nSignals = nSignals - - # Initial signal level - homogeneous distribution - self.initLevels = initLevels - - # This is the volume of the grid element. It should really be used - # to calc local concentration to a cell. Need to go through and make - # everything consistent. - self.dV = reduce(lambda x, y: x * y, self.gridSize) - - self.regul = regul - self.setCellStates(sim.cellStates) - - def setCellStates(self, cs): - self.cellStates = cs - - def setBiophysics(self, biophysics): - self.biophys = biophysics - - def setRegulator(self, regul): - self.regul = regul - - def flattenIdx(self, idx): - print("idx = " + str(idx)) - print("flat idx = " + str(idx[2] + idx[1]*self.gridDim[3] + idx[0]*self.gridDim[2]*self.gridDim[3])) - return idx[2] + idx[1]*self.gridDim[3] + idx[0]*self.gridDim[2]*self.gridDim[3] - - def idxFromPos(self, p): - return ( floor((p[0] - self.gridOrig[0]) / self.gridSize[0]), \ - floor((p[1] - self.gridOrig[1]) / self.gridSize[1]), \ - floor((p[2] - self.gridOrig[2]) / self.gridSize[2]) ) - - def trilinearWeights(self, p): - x = (p[0] - self.gridOrig[0]) / self.gridSize[0] - dx = x - floor(x) - y = (p[1] - self.gridOrig[1]) / self.gridSize[1] - dy = y - floor(y) - z = (p[2] - self.gridOrig[2]) / self.gridSize[2] - dz = z - floor(z) - w = numpy.zeros((2,2,2)) - - # Calculate weights, giving zero if grid point is off grid - w[0,0,0] = (1-dx)*(1-dy)*(1-dz) if x>=0 and x=0 and y=0 and z=-1 and x=0 and y=0 and z=0 and x=-1 and y=0 and z=-1 and x=-1 and y=0 and z=0 and x=0 and y=-1 and z=-1 and x=0 and y=-1 and z=0 and x=-1 and y=-1 and z=-1 and x=-1 and y=-1 and z PyGLCMViewer QWidget -
CellModeller.GUI.PyGLCMViewer
+
CellModeller.gui.py_gl_cm_viewer
setSavePicklesToggle(bool) load() diff --git a/CellModeller/GUI/PyGLWidget.py b/CellModeller/gui/py_gl_widget.py similarity index 100% rename from CellModeller/GUI/PyGLWidget.py rename to CellModeller/gui/py_gl_widget.py diff --git a/CellModeller/GUI/Renderers.py b/CellModeller/gui/renderers.py similarity index 99% rename from CellModeller/GUI/Renderers.py rename to CellModeller/gui/renderers.py index f5dc3128..7935e57e 100644 --- a/CellModeller/GUI/Renderers.py +++ b/CellModeller/gui/renderers.py @@ -191,7 +191,7 @@ def render_gl(self, selection=None): glDisable(GL_TEXTURE_2D) class GLPlantSignalRenderer: - # Render signals as chanels rgb + # Render signals as channels rgb def __init__(self, sim, chanIdx): self.sim = sim self.wallcol = [0, 0, 0] diff --git a/CellModeller/Simulator.py b/CellModeller/simulator.py similarity index 98% rename from CellModeller/Simulator.py rename to CellModeller/simulator.py index c2b5eeb3..57ca5ac4 100644 --- a/CellModeller/Simulator.py +++ b/CellModeller/simulator.py @@ -1,4 +1,4 @@ -from .CellState import CellState +from .cell_state import CellState import copy import pyopencl as cl import sys @@ -166,7 +166,7 @@ def next_idx(self): # and have the user-defined func initialise the 3 modules ## Specify models to be used by simulator object. The four inputs are - # 'phys' = physical model of cell iteractions + # 'phys' = physical model of cell interactions # 'reg' = regulatory model of biochemical circuit in the cell # 'sig' = signaling model of intercellular chemical reaction diffusion. # 'integ' = integrator @@ -191,7 +191,7 @@ def init(self, phys, reg, sig, integ): self.reg.setSignalling(sig) - ## Set up the OpenCL contex, the configuration is set up the first time, and is saved in the config file + ## Set up the OpenCL context, the configuration is set up the first time, and is saved in the config file def init_cl(self, platnum, devnum): # Check that specified platform exists platforms = cl.get_platforms() @@ -378,10 +378,10 @@ def importCells_file(self, filename): for row in list: cpos = [float(row[0]),float(row[1]),float(row[2])] cdir = [float(row[3]),float(row[4]),float(row[5])] - clen = float(row[6]) #radius should be removed from this in the analysis + cell_len = float(row[6]) #radius should be removed from this in the analysis ndir = cdir/numpy.linalg.norm(cdir) #normalize cell dir just in case #this should probably also check for overlaps - self.addCell(pos=tuple(cpos), dir=tuple(ndir), length=clen) + self.addCell(pos=tuple(cpos), dir=tuple(ndir), length=cell_len) ## Write current simulation state to an output file def writePickle(self, csv=False): diff --git a/Community/contributing.md b/Community/contributing.md index 106868e5..01027608 100644 --- a/Community/contributing.md +++ b/Community/contributing.md @@ -10,13 +10,13 @@ Write yout first issue [Here](https://github.com/cellmodeller/CellModeller/issue ## Fork and Pull Request For people that may want to change the code to solve a bug or add a new feature for example we suggest to fork the project, implement the changes and make a pull request. -If you fork the project and adapt it to your usage we strongly reccommend to make a pull request to implement this usage for other users. +If you fork the project and adapt it to your usage we strongly recommend to make a pull request to implement this usage for other users. ## New Branch and Pull Request For recurrent contributors we will add them to the organization and provide authorization to edit. To contribute make a new branch, if you dont know which branch use as base create one from master, implement your changes and make a pull request. -With this we avoid that the project diverge from forks and incentivate a culture of continuous contribution. +With this we avoid that the project diverge from forks and incentivize a culture of continuous contribution. ## General Open Source Guite to Contribute diff --git a/CondaRecipes/appdirs/bld.bat b/CondaRecipes/appdirs/bld.bat deleted file mode 100644 index 87b1481d..00000000 --- a/CondaRecipes/appdirs/bld.bat +++ /dev/null @@ -1,8 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See -:: http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/appdirs/build.sh b/CondaRecipes/appdirs/build.sh deleted file mode 100644 index 4d7fc032..00000000 --- a/CondaRecipes/appdirs/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -$PYTHON setup.py install - -# Add more build steps here, if they are necessary. - -# See -# http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/appdirs/meta.yaml b/CondaRecipes/appdirs/meta.yaml deleted file mode 100644 index e6c3d6fe..00000000 --- a/CondaRecipes/appdirs/meta.yaml +++ /dev/null @@ -1,60 +0,0 @@ -package: - name: appdirs - version: !!str 1.4.0 - -source: - fn: appdirs-1.4.0.tar.gz - url: https://pypi.python.org/packages/source/a/appdirs/appdirs-1.4.0.tar.gz - md5: 1d17b4c9694ab84794e228f28dc3275b -# patches: - # List any patch files here - # - fix.patch - -# build: - # preserve_egg_dir: True - # entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - appdirs = appdirs:main - # - # Would create an entry point called appdirs that calls appdirs.main() - - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 1 - -requirements: - build: - - python 2 - - setuptools - - run: - - python 2 - -test: - # Python imports - imports: - - appdirs - - # commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. - - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: http://github.com/ActiveState/appdirs - license: MIT License - summary: 'A small Python module for determining appropriate " + "platform-specific dirs, e.g. a "user data dir".' - -# See -# http://docs.continuum.io/conda/build.html for -# more information about meta.yaml diff --git a/CondaRecipes/cellmodeller/bld.bat b/CondaRecipes/cellmodeller/bld.bat deleted file mode 100644 index 87b1481d..00000000 --- a/CondaRecipes/cellmodeller/bld.bat +++ /dev/null @@ -1,8 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See -:: http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/cellmodeller/build.sh b/CondaRecipes/cellmodeller/build.sh deleted file mode 100644 index 2e8b221a..00000000 --- a/CondaRecipes/cellmodeller/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -$PYTHON setup.py install - -# Add more build steps here, if they are necessary. - - -# See -# http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/cellmodeller/meta.yaml b/CondaRecipes/cellmodeller/meta.yaml deleted file mode 100644 index 4dec2631..00000000 --- a/CondaRecipes/cellmodeller/meta.yaml +++ /dev/null @@ -1,84 +0,0 @@ -package: - name: cellmodeller - version: !!str "4.3.1" - -source: - git_url: http://github.com/HaseloffLab/CellModeller.git - git_tag: v4.3.1 -# patches: - # List any patch files here - # - fix.patch - -#build: - # preserve_egg_dir: True -# entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - pyopencl = pyopencl:main - # - # Would create an entry point called pyopencl that calls pyopencl.main() -# - cellmodeller = CellModeller:GUI:CellModellerGUI:main -# - cmbatch = CellModeller:batch:main - - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 1 - -requirements: - build: - - python 2 - - numpy 1.9.2 - - setuptools - - scipy - - pyqt 4 - - pyopengl - - pyopencl 2014.1 - - reportlab - - matplotlib - - mock - - nose - - run: - - python 2 - - numpy 1.9.2 - - setuptools - - scipy - - pyqt 4 - - pyopengl - - pyopencl 2014.1 - - reportlab - - matplotlib - - mock - -test: - # Python imports - imports: - - CellModeller - - CellModeller.Biophysics - - CellModeller.Regulation - - CellModeller.Signalling - - CellModeller.Integration - -# commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. -# - cellmodeller -# - cmbatch - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: http://www.cellmodeller.org - license: BSD License - summary: 'Multicellular modelling framework' - -# See -# http://docs.continuum.io/conda/build.html for -# more information about meta.yaml diff --git a/CondaRecipes/cellmodeller_dev/bld.bat b/CondaRecipes/cellmodeller_dev/bld.bat deleted file mode 100644 index 87b1481d..00000000 --- a/CondaRecipes/cellmodeller_dev/bld.bat +++ /dev/null @@ -1,8 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See -:: http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/cellmodeller_dev/build.sh b/CondaRecipes/cellmodeller_dev/build.sh deleted file mode 100644 index 0f82cf5f..00000000 --- a/CondaRecipes/cellmodeller_dev/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -THIS_DIR="`dirname $0`" - -echo Installing CellModeller python package -$PYTHON setup.py install - - -# See -# http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/cellmodeller_dev/meta.yaml b/CondaRecipes/cellmodeller_dev/meta.yaml deleted file mode 100644 index 79d6c428..00000000 --- a/CondaRecipes/cellmodeller_dev/meta.yaml +++ /dev/null @@ -1,79 +0,0 @@ -package: - name: cellmodeller_dev - version: !!str 4.0 - -source: - git_url: http://github.com/HaseloffLab/CellModeller4_private.git -#git@github.com:HaseloffLab/CellModeller4_private.git -# patches: - # List any patch files here - # - fix.patch - -#build: - # preserve_egg_dir: True -# entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - pyopencl = pyopencl:main - # - # Would create an entry point called pyopencl that calls pyopencl.main() -# - cellmodeller = CellModeller.GUI.CellModellerGUI:launch -# - cmbatch = CellModeller.batch:main - - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 1 - -requirements: - build: - - python - - setuptools - - numpy - - scipy - - pyqt - - pyopengl - - pyopencl - - run: - - python - - setuptools - - numpy - - scipy - - pyqt - - pyopengl - - pyopencl - - reportlab - -test: - # Python imports - imports: - - CellModeller - - CellModeller.Biophysics - - CellModeller.Regulation - - CellModeller.Signalling - - CellModeller.Integration - -# commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. -# - cellmodeller -# - cmbatch - - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: http://www.cellmodeller.org - license: BSD License - summary: 'Multicellular modelling framework' - -# See -# http://docs.continuum.io/conda/build.html for -# more information about meta.yaml diff --git a/CondaRecipes/mako/bld.bat b/CondaRecipes/mako/bld.bat deleted file mode 100644 index 87b1481d..00000000 --- a/CondaRecipes/mako/bld.bat +++ /dev/null @@ -1,8 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See -:: http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/mako/build.sh b/CondaRecipes/mako/build.sh deleted file mode 100644 index 4d7fc032..00000000 --- a/CondaRecipes/mako/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -$PYTHON setup.py install - -# Add more build steps here, if they are necessary. - -# See -# http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/mako/meta.yaml b/CondaRecipes/mako/meta.yaml deleted file mode 100644 index 1d0579b3..00000000 --- a/CondaRecipes/mako/meta.yaml +++ /dev/null @@ -1,66 +0,0 @@ -package: - name: mako - version: !!str 1.0.1 - -source: - fn: Mako-1.0.1.tar.gz - url: https://pypi.python.org/packages/source/M/Mako/Mako-1.0.1.tar.gz - md5: 9f0aafd177b039ef67b90ea350497a54 -# patches: - # List any patch files here - # - fix.patch - -build: - preserve_egg_dir: True - entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - mako = mako:main - # - # Would create an entry point called mako that calls mako.main() - - - mako-render=mako.cmd:cmdline - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 1 - -requirements: - build: - - python 2 - - setuptools - - markupsafe >=0.9.2 - - run: - - python 2 - - setuptools - - markupsafe >=0.9.2 - -test: - # Python imports - imports: - - mako - - mako.ext - - commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. - - - mako-render --help - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: http://www.makotemplates.org/ - license: MIT - summary: 'A super-fast templating language that borrows the best ideas from the existing templating languages.' - -# See -# http://docs.continuum.io/conda/build.html for -# more information about meta.yaml diff --git a/CondaRecipes/pyopencl/bld.bat b/CondaRecipes/pyopencl/bld.bat deleted file mode 100644 index 87b1481d..00000000 --- a/CondaRecipes/pyopencl/bld.bat +++ /dev/null @@ -1,8 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See -:: http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/pyopencl/build.sh b/CondaRecipes/pyopencl/build.sh deleted file mode 100644 index 9f635d9b..00000000 --- a/CondaRecipes/pyopencl/build.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -git checkout tags/v2014.1 -git submodule init -git submodule update -$PYTHON configure.py -$PYTHON setup.py build -make -$PYTHON setup.py install - -# Add more build steps here, if they are necessary. - -# See -# http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/pyopencl/meta.yaml b/CondaRecipes/pyopencl/meta.yaml deleted file mode 100644 index 2160ee6d..00000000 --- a/CondaRecipes/pyopencl/meta.yaml +++ /dev/null @@ -1,75 +0,0 @@ -package: - name: pyopencl - version: !!str 2014.1 - -source: -# fn: pyopencl-2014.1.tar.gz -# url: https://pypi.python.org/packages/source/p/pyopencl/pyopencl-2014.1.tar.gz -# md5: f89d26676aaff01312116caea114f06c - git_url: http://git.tiker.net/trees/pyopencl.git - git_tag: v2014.1 -# patches: - # List any patch files here - # - fix.patch - -# build: - # preserve_egg_dir: True - # entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - pyopencl = pyopencl:main - # - # Would create an entry point called pyopencl that calls pyopencl.main() - - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 1 - -requirements: - build: - - python 2 - - setuptools - - pytools 2014.3.5 - - pytest - - decorator - - mako - - numpy 1.9.2 - - run: - - python 2 - - setuptools - - pytools 2014.3.5 - - pytest - - decorator - - mako - - numpy 1.9.2 - -#test: - # Python imports - #imports: - # - pyopencl - # - pyopencl.characterize - # - pyopencl.compyte - - # commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. - - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: http://mathema.tician.de/software/pyopencl - license: MIT License - summary: 'Python wrapper for OpenCL' - -# See -# http://docs.continuum.io/conda/build.html for -# more information about meta.yaml diff --git a/CondaRecipes/pyopengl/bld.bat b/CondaRecipes/pyopengl/bld.bat deleted file mode 100755 index 2d6c912c..00000000 --- a/CondaRecipes/pyopengl/bld.bat +++ /dev/null @@ -1,2 +0,0 @@ -python setup.py install -if errorlevel 1 exit 1 diff --git a/CondaRecipes/pyopengl/build.sh b/CondaRecipes/pyopengl/build.sh deleted file mode 100755 index 6308b482..00000000 --- a/CondaRecipes/pyopengl/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -touch requirements.txt; - -${PYTHON} setup.py install || exit 1; - -mkdir -vp ${PREFIX}/bin; - -#POST_LINK="${PREFIX}/bin/.pyopengl-post-link.sh" -#cp -v ${RECIPE_DIR}/post-link.sh ${POST_LINK}; -#chmod -v 0755 ${POST_LINK}; diff --git a/CondaRecipes/pyopengl/meta.yaml b/CondaRecipes/pyopengl/meta.yaml deleted file mode 100644 index a54e484a..00000000 --- a/CondaRecipes/pyopengl/meta.yaml +++ /dev/null @@ -1,31 +0,0 @@ - -package: - name: pyopengl - version: 3.0.2 - -source: - fn: PyOpenGL-3.0.2.tar.gz - url: https://pypi.python.org/packages/source/P/PyOpenGL/PyOpenGL-3.0.2.tar.gz - md5: 77becc24ffc0a6b28030aa109ad7ff8b - -build: - number: 0 - -requirements: - build: - - python - - distribute - - numpy - - run: - - python - - numpy - -test: - imports: - - OpenGL - -about: - home: http://pyopengl.sourceforge.net/ - license: BSD - diff --git a/CondaRecipes/pyopengl/post-link.sh b/CondaRecipes/pyopengl/post-link.sh deleted file mode 100755 index ea6fdabc..00000000 --- a/CondaRecipes/pyopengl/post-link.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cat <> ${PREFIX}/.messages.txt -This is an install message from the pyopengl package. -EOF diff --git a/CondaRecipes/pytools/bld.bat b/CondaRecipes/pytools/bld.bat deleted file mode 100644 index 87b1481d..00000000 --- a/CondaRecipes/pytools/bld.bat +++ /dev/null @@ -1,8 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See -:: http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/pytools/build.sh b/CondaRecipes/pytools/build.sh deleted file mode 100644 index 4d7fc032..00000000 --- a/CondaRecipes/pytools/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -$PYTHON setup.py install - -# Add more build steps here, if they are necessary. - -# See -# http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/CondaRecipes/pytools/meta.yaml b/CondaRecipes/pytools/meta.yaml deleted file mode 100644 index 1d507c58..00000000 --- a/CondaRecipes/pytools/meta.yaml +++ /dev/null @@ -1,66 +0,0 @@ -package: - name: pytools - version: !!str 2014.3.5 - -source: - fn: pytools-2014.3.5.tar.gz - url: https://pypi.python.org/packages/source/p/pytools/pytools-2014.3.5.tar.gz - md5: 7f8e9d6a88090a601e96a9ee095d3512 -# patches: - # List any patch files here - # - fix.patch - -# build: - # preserve_egg_dir: True - # entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - pytools = pytools:main - # - # Would create an entry point called pytools that calls pytools.main() - - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 1 - -requirements: - build: - - python 2 - - setuptools - - decorator >=3.2.0 - - appdirs >=1.4.0 - - six - - run: - - python 2 - - decorator >=3.2.0 - - appdirs >=1.4.0 - - six - -test: - # Python imports - imports: - - pytools - - # commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. - - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: http://pypi.python.org/pypi/pytools - license: MIT License - summary: 'A collection of tools for Python' - -# See -# http://docs.continuum.io/conda/build.html for -# more information about meta.yaml diff --git a/Doc/BacterialBiophysics/BacterialBiophysics.pdf b/Doc/BacterialBiophysics/BacterialBiophysics.pdf deleted file mode 100644 index db10c9d2..00000000 Binary files a/Doc/BacterialBiophysics/BacterialBiophysics.pdf and /dev/null differ diff --git a/Doc/BacterialBiophysics/BacterialBiophysics.tex b/Doc/BacterialBiophysics/BacterialBiophysics.tex deleted file mode 100644 index 1888be8b..00000000 --- a/Doc/BacterialBiophysics/BacterialBiophysics.tex +++ /dev/null @@ -1,355 +0,0 @@ -\documentclass{report} - -\usepackage{amsmath} -\usepackage{mathtools} - -\usepackage{tikz} -\usetikzlibrary{shapes} - -\renewcommand{\vec}[1]{\mathbf{#1}} -\let\oldhat\hat -\renewcommand{\hat}[1]{\oldhat{\mathbf{#1}}} - -\newcommand{\deltav}{\Delta \vec{v}} -\newcommand{\deltap}{\Delta \vec{p}} -\newcommand{\deltaL}{\Delta \vec{L}} -\newcommand{\deltag}{\Delta g} -\newcommand{\MInv}{\mathbf{M}^{-1}} -\newcommand{\IInv}{\mathbf{I}^{-1}} -\newcommand{\nT}{\hat{n}^\textrm{T}} -\newcommand{\w}{\boldsymbol{\omega}} -\newcommand{\rx}{{\left[\vec{r}\right]}_\times} - -\begin{document} - - -\begin{figure} -\begin{tikzpicture} - -\node[name=A, shape=rounded rectangle, minimum width=3cm, minimum height=0.75cm, rotate=45, anchor=-12.12, very thick, draw] at (-0.05cm,0) {A}; -\node[name=B, shape=rounded rectangle, minimum width=4cm, minimum height=0.75cm, rotate=0, anchor=west, very thick, draw] at (0.05cm,0) {B}; - -\end{tikzpicture} -\end{figure} - -The velocity of a point with position $\vec{r}$ relative to the center -of mass of a cell with its main axis along the unit vector $\hat{a}$ -is: - -\begin{align*} -\vec{v_r} &= \vec{v}_\textrm{linear} + \vec{v}_\textrm{angular} + \vec{v}_\textrm{growth} \\ -&= \vec{v} + \vec{\w} \times \vec{r} + \frac{1}{2} \frac{\hat{a} \cdot \vec{r}}{l} v_{growth} \\ -&= \vec{v} - \vec{r} \times \vec{\w} + \frac{1}{2} \frac{\hat{a} \cdot \vec{r}}{l} v_{growth} \\ -&= \frac{1}{m}\vec{p} - \vec{r} \times \IInv\vec{L} + \frac{1}{2} \frac{\hat{a} \cdot \vec{r}}{l} \frac{g}{G} \\ -&= \frac{1}{m}\vec{p} - \rx \IInv\vec{L} + \frac{1}{2} \frac{\hat{a} \cdot \vec{r}}{l} \frac{g}{G} \\ -\end{align*} - -This expression is linear in $\vec{p}$, $\vec{L}$, and $g$, so the -velocity of the point after an impulse $\deltap$ is: - -\begin{align*} -\vec{v_r} &= \vec{v_r}_0 + \deltav \\ -&= \vec{v_r}_0 + \frac{1}{m}\deltap - \rx\IInv\deltaL \times \vec{r} + \frac{1}{2} \frac{\hat{x} \cdot \vec{r}}{l} \frac{\deltag}{G} \\ -&= \vec{v_r}_0 + \vec{M}_{\hat{a},{\vec{r}}} \deltap -\end{align*} - -\dots where: - -\[ -\vec{M}_{\hat{a},{\vec{r}}} -= -\left[ -\begin{array}{ccc} -\frac{1}{m}I & \rx\IInv & \frac{\hat{a}\cdot\vec{r}}{2lG}\hat{a}\\ -\end{array} -\right] -\] - -\dots and: - -\[ -\deltap -= -\left[ -\begin{array}{c} -\deltap \\ -\deltaL \\ -\deltag \\ -\end{array} -\right] -= -\left[ -\begin{array}{c} -\Delta p_x \\ -\Delta p_y \\ -\Delta p_z \\ -\Delta L_x \\ -\Delta L_y \\ -\Delta L_z \\ -\deltag \\ -\end{array} -\right] -\] - -In the above, $I$ is the identity matrix and $\IInv$ is the inverse -inertia tensor. No confusion should arise from the use of $\deltap$ -to signify both general momentum and specifically linear momentum. - -The inertia tensor for a rod of mass $m$, radius $r$, and length $l$ -centered at the origin and lying along the $x$ axis is: -\[ -\mathbf{I} -= -\frac{1}{12}m -\left[ -\begin{array}{ccc} -6r^2 & 0 & 0 \\ -0 & 3r^2 + l^2 & 0 \\ -0 & 0 & 3r^2 + l^2 \\ -\end{array} -\right] -\] - -Therefore the inverse inertia tensor for the same cylinder is: -\[ -\IInv -= -\frac{12}{m} -\left[ -\begin{array}{ccc} -\frac{1}{6r^2} & 0 & 0 \\ -0 & \frac{1}{3r^2+l^2} & 0 \\ -0 & 0 & \frac{1}{3r^2+l^2} \\ -\end{array} -\right] -\] - -Suppose $\mathbf{T}_i$ transforms from world coordinates to local -coordinates for cell $i$ --- i.e. it transforms the $x$ axis to the -main axis of that cell. Then the inverse inertia tensor for cell $i$ -in world coordinates is given by: - -\[\IInv_i = \mathbf{T}_i \IInv_\textrm{cyl} \mathbf{T}_i^{-1}\] - -So we now have: - -\[ -\vec{M}_{\hat{a},{\vec{r}}} -= -\left[ -\begin{array}{ccc} -\frac{1}{m}I & -\rx \mathbf{T}_i \IInv_\textrm{cyl} \mathbf{T}_i^{-1} & -\frac{\hat{a}\cdot\vec{r}}{2lG}\hat{a}\\ -\end{array} -\right] -\] - - -We assume that colliding capsules --- those that overlap and are -moving toward each other (the dot product of the velocity vectors of -the contact points on the two capsules is negative) --- collide -inelastically. In this case, the relative velocity of the two contact -points along the normal $\hat{n}$ after the impulse provided by the -collision must be zero. So: - -\begin{align*} -\nT\left(\vec{v}_{\vec{r}_a} - \vec{v}_{\vec{r}_b}\right) \cdot &= 0 \\ -\nT \vec{M}_{\vec{r}_a} \vec{p}_a - \nT \vec{M}_{\vec{r}_b} \vec{p}_b &= 0 \\ -\nT \vec{M}_{\vec{r}_a} \left( \vec{p}_{a_0} + \deltap_a \right) - \nT \vec{M}_{\vec{r}_b} \left( \vec{p}_{b_0} + \deltap_b \right) &= 0 \\ -\nT \vec{M}_{\vec{r}_a} \deltap_a - \nT \vec{M}_{\vec{r}_b} \deltap_b &= \nT \vec{M}_{\vec{r}_b} \vec{p}_{b_0} - \nT \vec{M}_{\vec{r}_a} \vec{p}_{a_0} \\ -\nT \vec{M}_{\vec{r}_a} \deltap_a - \nT \vec{M}_{\vec{r}_b} \deltap_b &= \nT \vec{v}_{b_0} - \nT \vec{v}_{a_0} \\ -\nT \vec{M}_{\vec{r}_a} \deltap_a - \nT \vec{M}_{\vec{r}_b} \deltap_b &= \nT \vec{v}_{\textrm{rel}_{a,b}} \\ -\end{align*} - -Write: - -\begin{align*} -\vec{N}_{\hat{a},{\vec{r}}} -&= -\left[ -\begin{array}{ccc} -\nT \frac{1}{m}I & -\nT \rx \mathbf{T}_i \IInv_\textrm{cyl} \mathbf{T}_i^{-1} & -\nT \frac{\hat{a}\cdot\vec{r}}{2lG}\hat{a}\\ -\end{array} -\right] \\ -&= -\left[ -\begin{array}{ccc} -\frac{1}{m} \hat{n} & -\nT \rx \mathbf{T}_i \IInv_\textrm{cyl} \mathbf{T}_i^{-1} & -\frac{1}{2lG}\left(\hat{a}\cdot\vec{r}\right)\left(\hat{a}\cdot\hat{n}\right)\\ -\end{array} -\right] \\ -\end{align*} - -This is a $1\times7$ matrix which when multiplied by the $7\times1$ -matrix $\deltap$ gives a change in velocity along the normal $\hat{n}$. - - - -In block matrix form, we can write: - -\[ -\left[ -\begin{array}{cc} -\nT\vec{M}_{\vec{r}_a} & -\nT\vec{M}_{\vec{r}_b} \\ -\end{array} -\right] -\left[ -\begin{array}{c} -\deltap_a \\ -\deltap_b \\ -\end{array} -\right] -= -\nT\vec{v}_{\textrm{rel}_{a,b}} -\] - -More generally, we will have a system of equations with one such -equation for each pair of colliding cells. We build a larger block -matrix with a row for each constraint and a column for each cell in -the system. If the $i$th constraint involves cells $a$ and $b$ (in -that order), then: - -\[\vec{M}_{ij} = \left\{ -\begin{array}{ll} -\nT\vec{M}_{\vec{r}_a} & \textrm{if } j=a \\ --\nT\vec{M}_{\vec{r}_b} & \textrm{if } j=b \\ -0 & \textrm{otherwise} \\ -\end{array} -\right\}\] - - -A sytem with four cells and four collisions might have the equation: - -\[ -\left[ -\begin{array}{cccc} -\vec{M}_{\vec{r}_{1a}} & -\vec{M}_{\vec{r}_{1b}} & 0 & 0 \\ -0 & \vec{M}_{\vec{r}_{2b}} & -\vec{M}_{\vec{r}_{2c}} & 0 \\ -\vec{M}_{\vec{r}_{3a}} & 0 & 0 & -\vec{M}_{\vec{r}_{3d}} \\ -0 & 0 & \vec{M}_{\vec{r}_{4c}} & -\vec{M}_{\vec{r}_{4d}} \\ -\end{array} -\right] -\left[ -\begin{array}{c} -\deltap_a \\ -\deltap_b \\ -\deltap_c \\ -\deltap_d \\ -\end{array} -\right] -= -\left[ -\begin{array}{c} -\vec{v}_{\textrm{rel}_{a,b}} \\ -\vec{v}_{\textrm{rel}_{b,c}} \\ -\vec{v}_{\textrm{rel}_{a,d}} \\ -\vec{v}_{\textrm{rel}_{c,d}} \\ -\end{array} -\right] -\] - - -We can transform this into a square matrix by multiplying by $\vec{M}^\textrm{T}$. - -\[ -\vec{M}^\textrm{T} \vec{M} \deltap = \vec{M}^\textrm{T} \vec{v}_{\textrm{rel}} -\] - -Consider $\vec{A} = \vec{M}^\textrm{T} \vec{M}$. We have: - -\[ -\vec{A}_{ij} = \sum_{k} \vec{M}^\textrm{T}_{ik} \vec{M}_{kj} -\] - -\dots where $k \in \textrm{constraints}$. - -If $i \neq j$ and there is no constraint between cells $i$ and $j$ -then ${\vec{M}^\textrm{T}}_{ik} \vec{M}_{kj}$ will be zero. If there -is a constraint between $i$ and $j$, then: - -\[ -\vec{A}_{ij} = -\vec{M}^\textrm{T}_{\vec{r}_{ik}} \vec{M}_{\vec{r}_{jk}} -\] - -\dots where $\vec{r}_{ik}$ is the vector from the center of cell $i$ -to the point on the surface of that cell associated with contact $k$. - -If $i=j$, then: - -\[ -\vec{A}_{ii} = \sum_k{\vec{M}^\textrm{T}_{\vec{r}_{ik}}\vec{M}_{\vec{r}_{ik}}} -\] - -\dots where $k$ ranges over all constraints involving cell $i$. - -In general: - -\[ -\vec{M}_\vec{s}^\textrm{T} \vec{M}_\vec{r} -= -\begin{bmatrix*} -\frac{1}{M_1M_2} & 0 & 0 & 0 & \frac{\vec{s}_z}{I_2} & -\frac{\vec{s}_y}{I_2} & \frac{{\vec{a}_\vec{s}}_x}{2l_2G_2} \\[6pt] -0 & \frac{1}{M_1M_2} & 0 & -\frac{\vec{s}_z}{I_2} & 0 & \frac{\vec{s}_x}{I_2} & \frac{{\vec{a}_\vec{s}}_y}{2l_2G_2} \\[6pt] -0 & 0 & \frac{1}{M_1M_2} & \frac{\vec{s}_y}{I_2} & -\frac{\vec{s}_x}{I_2} & 0 & \frac{{\vec{a}_\vec{s}}_z}{2l_2G_2} \\[6pt] -0 & -\frac{\vec{r}_z}{I_1} & \frac{\vec{r}_y}{I_1} & \frac{\vec{r}_y\vec{s}_y + \vec{r}_z\vec{s}_z}{I_1I_2} & -\frac{\vec{r}_y\vec{s}_x}{I_1I_2} & -\frac{\vec{r}_z\vec{s}_x}{I_1I_2} & \frac{\vec{r}_y{\vec{a}_\vec{s}}_z}{2I_1l_2G_2} \\[6pt] -\frac{\vec{r}_z}{I_1} & 0 & -\frac{\vec{r}_x}{I_1} & -\frac{\vec{r}_x\vec{s}_y}{I_1I_2} & \frac{\vec{r}_x\vec{s}_x + \vec{r}_z\vec{s}_z}{I_1I_2} & -\frac{\vec{r}_z\vec{s}_y}{I_1I_2} & \frac{\vec{r}_z{\vec{a}_\vec{s}}_x}{2I_1l_2G_2} \\[6pt] --\frac{\vec{r}_y}{I_1} & \frac{\vec{r}_x}{I_1} & 0 & -\frac{\vec{r}_x\vec{s}_z}{I_1I_2} & -\frac{\vec{r}_y\vec{s}_z}{I_1I_2} & \frac{\vec{r}_y\vec{s}_y + \vec{r}_z\vec{s}_z}{I_1I_2} & \frac{\vec{r}_x{\vec{a}_\vec{s}}_y}{2I_1l_2G_2} \\[6pt] -\frac{{\vec{a}_\vec{r}}_x}{2l_1G_1} & \frac{{\vec{a}_\vec{r}}_y}{2l_1G_1} & \frac{{\vec{a}_\vec{r}}_z}{2l_1G_1} & -\frac{\vec{s}_y{\vec{a}_\vec{r}}_z - \vec{s}_z{\vec{a}_\vec{r}}_y}{2I_2l_1G_1} & -\frac{\vec{s}_z{\vec{a}_\vec{r}}_x - \vec{s}_x{\vec{a}_\vec{r}}_z}{2I_2l_1G_1} & -\frac{\vec{s}_x{\vec{a}_\vec{r}}_y - \vec{s}_y{\vec{a}_\vec{r}}_x}{2I_2l_1G_1} & -\frac{\vec{a}_\vec{r} \cdot \vec{a}_\vec{s}}{4l_1l_2G_1G_2} \\ -\end{bmatrix*} -\] - -\dots and: - -\[ -\vec{M}_\vec{r}^\textrm{T} \vec{M}_\vec{r} -= -\begin{bmatrix*} -\frac{1}{M_1^2} & 0 & 0 & 0 & \frac{\vec{r}_z}{I_1} & -\frac{\vec{r}_y}{I_1} & \frac{{\vec{a}_\vec{r}}_x}{2l_1G_1} \\ -0 & \frac{1}{M_1^2} & 0 & -\frac{\vec{r}_z}{I_1} & 0 & \frac{\vec{r}_x}{I_1} & \frac{{\vec{a}_\vec{r}}_y}{2l_1G_1} \\ -0 & 0 & \frac{1}{M_1^2} & \frac{\vec{r}_y}{I_1} & -\frac{\vec{r}_x}{I_1} & 0 & \frac{{\vec{a}_\vec{r}}_z}{2l_1G_1} \\ -0 & -\frac{\vec{r}_z}{I_1} & \frac{\vec{r}_y}{I_1} & \frac{\vec{r}_y^2 + \vec{r}_z^2}{I_1^2} & -\frac{\vec{r}_y\vec{r}_x}{I_1^2} & -\frac{\vec{r}_z\vec{r}_x}{I_1^2} & \frac{\vec{r}_y{\vec{a}_\vec{r}}_z}{2I_1l_1G_1} \\ -\frac{\vec{r}_z}{I_1} & 0 & -\frac{\vec{r}_x}{I_1} & -\frac{\vec{r}_x\vec{r}_y}{I_1^2} & \frac{\vec{r}_x^2 + \vec{r}_z^2}{I_1^2} & -\frac{\vec{r}_z\vec{r}_y}{I_1^2} & \frac{\vec{r}_z{\vec{a}_\vec{s}}_x}{2I_1l_1G_1} \\ --\frac{\vec{r}_y}{I_1} & \frac{\vec{r}_x}{I_1} & 0 & -\frac{\vec{r}_x\vec{r}_z}{I_1^2} & -\frac{\vec{r}_y\vec{r}_z}{I_1^2} & \frac{\vec{r}_y^2 + \vec{r}_z^2}{I_1^2} & \frac{\vec{r}_x{\vec{a}_\vec{r}}_y}{2I_1l_1G_1} \\ -\frac{{\vec{a}_\vec{r}}_x}{2l_1G_1} & \frac{{\vec{a}_\vec{r}}_y}{2l_1G_1} & \frac{{\vec{a}_\vec{r}}_z}{2l_1G_1} & -\frac{\vec{r}_y{\vec{a}_\vec{r}}_z - \vec{r}_z{\vec{a}_\vec{r}}_y}{2I_1l_1G_1} & -\frac{\vec{r}_z{\vec{a}_\vec{r}}_x - \vec{r}_x{\vec{a}_\vec{r}}_z}{2I_1l_1G_1} & -\frac{\vec{r}_x{\vec{a}_\vec{r}}_y - \vec{r}_y{\vec{a}_\vec{r}}_x}{2I_1l_1G_1} & -\frac{\vec{a}_\vec{r} \cdot \vec{a}_\vec{r}}{4l_1^2G_1^2} \\ -\end{bmatrix*} -\] - -\dots where: - -\begin{align*} -\vec{a}_\vec{r} &= \left(\hat{x}_1 \cdot \vec{r}\right) \vec{r} \\ -\vec{a}_\vec{s} &= \left(\hat{x}_2 \cdot \vec{s}\right) \vec{s} \\ -\end{align*} - -So we are left with the equation: - -\[ -\vec{A}\deltap = \deltav -\] - -\dots where: - -\[ -\vec{A}_{ij} = \left\{ - \begin{array}{ll} - \vec{M}^\textrm{T}_i\vec{M}_i & \textrm{if } i = j \\ - -\vec{M}^\textrm{T}_i\vec{M}_j & \textrm{if cell } i \textrm{ and cell } j \textrm{ are colliding} \\ - \end{array}\right\} -\] - - - - -\end{document} diff --git a/Doc/Maths/cellforces.pdf b/Doc/Maths/cellforces.pdf deleted file mode 100644 index 6e7126d9..00000000 Binary files a/Doc/Maths/cellforces.pdf and /dev/null differ diff --git a/Doc/Maths/celloverlap.ai b/Doc/Maths/celloverlap.ai deleted file mode 100644 index beaba9f6..00000000 --- a/Doc/Maths/celloverlap.ai +++ /dev/null @@ -1,1658 +0,0 @@ -%PDF-1.5 %âãÏÓ -1 0 obj <>/OCGs[7 0 R 44 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - cellforces - - - - - 2014-03-07T21:11:18Z - 2014-03-07T21:11:18Z - 2014-03-07T17:08:10Z - Adobe Illustrator CS6 (Macintosh) - - - - 256 - 136 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAiAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A715n8z3P1mTTdNkMJi2u 7sULBiK+nHWorQ/E3boN+irFJLO3lYvOnryHrJNWVz/sn5HCqLsr3UrA1sLuSFf98sfUiP8AsHqB /saYqyCx89yrRNTszTvcWtWX5mJvjH+xLYFZHp2saZqKFrK5Sfj9tVNHX/WQ0ZfpGKozFXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXktnI0tsk7msk49aQ+ Lynm34thVWxQ7FXYqseGNnWQikqbpKpKup/yWWjD6MVTWx8z6/ZUX1lvoR/uq52entKor/wStjSW Q2PnjSJqJeB9PlO377+6r7SrVB/sqYFZBHJHIivGwdGFVZTUEexGKt4q7FXYq7FXYqkeh+dfLmuX mo22l3S3A0v0jdXCkej++DFOD1owola9KUIqDirUvnnyrH5qsvKrajGdd1C3ku7SzWrFoYiQx5Cq g/C1BXfi3hiqEk/MzybFfajZTXkkM2klxqJltrmNYTG0a7s8ahlb1lKMtVYVINAcVZFZXlte2cF5 ayCa1uY0mglXo8cihlYexBriqD0nzLoerXV7aaddrcXOnOsd9EAytEz8uIYMB14GmKquk6vZapBL Nak/uJ5rWdGFGSa3kMcisN+61HiKEbHFUbirsVdirsVdirsVdirsVdirsVdirsVdirzHUtPfS9Tm sHFIyzSWbHo8LGoA90rxP9uFVHFDsVdirsVdirsVbtXubJy9hPJZsTUiI/AT/lRmqH6VxSn1j541 CGi6hbLcp3ntvgf6YnPE/Q4+WClZJpvmLR9SPC1uVM/U271jlH+wejfT0xVMcVdiqCjKXd3dB45V S2ra0ZiIpRIiSMyqDRqcuPI7ghgO9VWAP+Wx0SFNPspLrUtCv4ktNXjkW3eaGy020lFjFb0SPkQ4 RKsrsxpUjfFUYPyl0fSK6poclwNVsVSfToXMRha4toL+OAOipHUE6pJy+IVou4oaqqusflu3mCM3 NzevpM+q2NvD5ht7WKE/WJYJEmTmzB1K/wB5HIpU81IWoUEMqhdIg8/6zez6F5u0uKXy0JtRhkuW 9NHuIIriM6dIRDJsWiBZuKip24rx+JVR1TRvP/lO11CPyeG1y51cajqE11fLblo770wbWL4GtKrJ 9gMxYII1XiAahVmXljQG0iHUDLIJLnUr+51CcrXipmakaLWn2YkRSe5qcVTnFXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FUJqelWGp231e8iEiA8kapDI38yMN1PyxVit95H1CGrafcrdIOkNx8En0SIOJ+ lR88bVILpLiycR38Elo5NAZRRCf8mQVRvoOFXYodiqjerdNZXC2jiO7aNxbuwqqyFTwJG+wbFWK/ l5p/mGzhuBrEN/C7Q2yt+kL9L71LlEIuJYVUymJHYjb1KHsid1WYYq7FUHq17pNjZNd6rNDbWcRX lPOyoilmCr8TUp8RGKpxY67rlhQW92ZoR/ui6rKtPZ6iQf8ABEe2NJT63/MLTI4y2rRPYBacphWa GpNBRkHMVPimBWQaWrLp1sGufrj+mpe7FKSsRUuKEihPQA7Yqp3jRz3ttZLcPFKh+tyxx1BeKM0C s4pxDSMpp+0AR0riqOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrZI45EaOR Q8bCjIwBBB7EHFWP3/kfSJqvZltPlO/7neKvvE1Vp/q0xVj995Y1+yq3orfQj/dtts9PeJjX/gWb DapUk0bO0YNJU2eJgVdT/lK1GH04oX4q7FXYqx/zl5d0nWrSyOrvEunadcm8uEuEV4XX6vNBR+RC qFM/Pkf5fpxVR8gXMh0NdPm1G31STTeNtFd27xsZYI0VIpXCPLQycSdziqaaxfC3a3jaFbhZGLek aFi8dGj4gnaj0bmdlp40xVU0HX/MNncehHdJa2ty21vGgcRybmoaSv2u9FG+KU9tdZ8zM800moj9 4wELJFASYlHw8m4b1Ysw8K4FRH6a8xf9XJv+RUP/ADRirv015i/6uTf8iof+aMVd+mvMX/Vyb/kV D/zRirv015i/6uTf8iof+aMVd+mvMX/Vyb/kVD/zRirv015i/wCrk3/IqH/mjFXfprzF/wBXJv8A kVD/AM0Yq79NeYv+rk3/ACKh/wCaMVd+mvMX/Vyb/kVD/wA0YqiLbzVrtuwM4ivof2lC+jL/ALFg Sh+RA+eKsr03UrTUbRLq1flG2zKdmRh1Rx2YYqisVdirsVdirsVdirsVdirsVdirsVdiqD1HR9M1 FAt7bJPx+wzCjr/quKMv0HFWOX3kSRavpl4fa3uquvyEq/GPpDYqx69s9R0+v6QtZIEHWcfvIf8A kYtQv+yphVSVlZQykMp6EbjFDeKsE80wad5VigfQ/q+nX+r34VUaUwRl3Uc347x8UVOR5KQOw5MA VKjpEusPqOpalPKmrJPKY7MqEhnS0iJWMBa+m4duTcuS1rX2ChMJ/MWlRXFjbTS+hd3l3BbwW0pM MrO8ig8A1OXEVNVqPDFWd28EVvBHbwrwihRY40HQKooB92Kr8VdirsVYhp3nyRtdvNMv7CdIF1Rt Ms9SiRPq/P0FlSOSspm5tv8AEI+HQVrirL8VdiqQea/NdtoE2jxykV1K9S2YEE8Yip5ybdAjFKn3 xSxPyZdeavLOo2Ok+ZDc38vmJIro3E09vIYL8o5voURGDeilIyvEcBU0NSFKr0vFDsVTHyrctb66 YAaQ30TFk7erFQq30pyB+QwJZtirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqSah5O0S8ZpEiN ncNuZrY+mSfFkoY2+lcVY9feT9ctatblNQiHZaRTf8Cx4N/wQ+WG1YzqpT0zZzH6nfTVjgFxHR1c qTyVHG5UAkdsVYT5W8m6X5UvJrOC4mmeOCKCAzFCWgDM6EBFXfm7A0+ffFCaa7pN7dafc3lpbPda pp600+zj4pJHcylOM/qOVClI2PJQeXBj0JGKpz5b8yaa31LQ2uri51VIXWd7lP3he24LN6jpWLny k3Csd6jqDirJMVdirsVSOPyT5aj1ltYW2f6805uzynuGh+sGP0vW+rmQwepw+ENwqO2Kp1J6tF9P jXkOXKv2a70p3xVL9Q1OWxST1fTeWQ0soEDF3p15Dbp49MVYr5j1rzV6mkz2trZKsNwzXUUnqTSP GLeX1FjC8RyZa8RvvTFKN0PzkdX06HUZbaO3SZibK5kDGMLyKVYkBk5U+Fvskd8VZUPrfrJ/d+hx /efa5cv8ntTFCn/uT+r/AO6PrHL/AC+HH9dcVTTyxb3lx5laRQhtrGBmVviqJpQFRW7fZ5nb2wJZ h/uY9GL/AHn9bkfW+3x412496/PFVHU9SfTLW8vr6e2trGBC8c0pYUIFfj8fYLucVR1tcRXFtFcR OJIpkWSN16MrCoIr4g4qlp83+VF0qTV31myTSopmtpb97iJIFmST0jG0rMEDc/hpXriqIs9e0S9l 9G0v7eeblIvpRyoz1hdo5PhBr8LoQfliqIu72zs4fWvJ47aGoHqTOsa1PQVYgYqsutSsbWCO4nmV IJpIoo5eqF53EcQ5Db43dVHuRiqJxV2KuxV2KuxV2KuxV2KuxV2KoO60+C8uFF5bwXFtEA0IlTmw lPJWNGHEDjQDvufpVS7UvKGizwhrWCHT7qGphuoI0QrXqGAC8kPcYqxi30HzPbwhrrTUe4lo872b xleRAFCJGRiVUBa79PDFUNB5TeC9e+h8vmO9kLM9wqQCQmSnM8g9fi4iuKo39G61/wBWy4/5Jf8A NeFXfo3Wv+rZcf8AJL/mvFXfo3Wv+rZcf8kv+a8Vd+jda/6tlx/yS/5rxVLtXuNQ02NBJp0xuZqi 3grECxHUmjmijucVSBLTVBNJcXFpNcXci8nlX0wu3SKMM4oB2/E4qkXm5pDb6ba32mXJt9RuTbXC rLDE0ccsMkZZmWZTT4/2T+OxVSp/IHmhdZWaK4vH0O1mt3g0uVw54QihSN/rFKMa8ua/ZPHFD0Xy 2NbkiayGl3U31YgCQNAeEbryQPWUEkbr8IPTFKdJpHmidGI0uS1UMFJkktnkKn9pEWbgf9m64FZf pNnHpiCxt7Sb0+PqyXjtEfUlIFeVH58z/q8ew2xVEC+ujAkn6OuA7vxaHlb80H87H1ePH5MT7Yqx T8yPJ935usPqkStA9kLj0muIobm2n+tWsls3GEzxH1IxMWjZyoB26HFUk8teX9c8zR2t5fXU2lJo E402G1iFyiXUVmVPqujtBTmSU3VgQOQ2NAqoeVvJQ8l3+meR47ePU9D1Uw313cJDLaLBPpdlaxiU CINFznurJZmBkDMZDWvEl1UPJ5c8w/l/CfNk1pB5jfR7RdL03TLC2k+uei8/D1hMCR6sq8HmJiPH jwUndmVRp0nXPzI8rXF1OTpEl5cC2uNOvFuZrV7OB+TBbeT6q8Mkv920g3KVpxLfCql03mXzh5ui fySfLn6LieV7Wa/KTwRJDaXKUntw8apQRL8CczVuhoN1XsuKuxV2KuxV2KuxV2KuxV2KuxV2KrJ4 IbiF4Z0WSGQcXjYVVgeoIOKr8VdirsVdirsVSvXtet9Jt1JX1ruaq2tqpozsO5/lVf2mxVhX+kTX El5eSetezf3knRVUdI4x+yi/2nCq7FDG/Onl291lLB4Xt2g0+b63NaXEDTeu0Y5RICroVAccqftE Cu1QVUH5I86a35gumjv9GfTES2SVjIJlb1S3EqPUjjBU7keA69dlXp/kiJi2o3X+63kSBD4mFSWI /wBlJT6MCWUYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlev a9b6TbqSvrXc1VtbVTRnYdz/ACqv7TYqwn/SJriS8vJPWvZv7yToqqOkcY/ZRf7TvhVfih2KuxVU sbG71S7NpaHgiU+tXVKiIHsPGQ9h26n3Us8sbG2sbOK0tl4QwrxQdT4kk9yTuTgVXxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpXr2vW+k26kr613NVbW1U0Z2Hc/y qv7TYqwn/SJriS8vJPWvZv7yToqqOkcY/ZRf7TvhVfih2KuxVUsbG71S7NpaHgiU+tXVKiIHsPGQ 9h26n3Us70/T7TT7RLW1ThEn0kk9WY92Pc4FRGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxVK9e1630m3UlfWu5qra2qmjOw7n+VV/abFWE/wCkTXEl5eSetezf3knR VUdI4x+yi/2nfCq/FDznyLZ/mJb+bbuXXLW5i0ieK4HOa9W7UzCdXhcJ6zCNfSZlURRJ0+JehxV6 NiqpY2N3ql2bS0PBEp9auqVEQPYeMh7Dt1PupZ3p+n2mn2iWtqnCJPpJJ6sx7se5wKiMVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqWa7rsGlQKSvrXc1RbWwNC5HUk /sov7TfxxVhTGea4ku7t/Wu5f7ySlAAOiIP2UXsPpO+FW8UOxV2KqljY3eqXZtLQ8ESn1q6pURA9 h4yHsO3U+6lnen6faafaJa2qcIk+kknqzHux7nAqIxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KpZruuwaVApK+tdzVFtbA0LkdST+yi/tN/HFWFM0808l3dyetdzf3 knQADoiD9lF7D+OFW8UOxV2KqljY3eqXZtLQ8ESn1q6pURA9h4yHsO3U+6lnen6faafaJa2qcIk+ kknqzHux7nAqIxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kqdzc RW1vLcSmkUKNJIfBVFT+AxV5yJri7mfULre6uaMR2jT9iJfZR95qcKr8UOxV2KqljY3eqXZtLQ8E Sn1q6pURA9h4yHsO3U+6lnen6faafaJa2qcIk+kknqzHux7nAqIxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVAeYIZJ9B1KGIcpJbWdEXxZo2AGKsFikSWJJENUd Qyn2IrhQuxV2KqljY3eqXZtLQ8ESn1q6pURA9h4yHsO3U+6lnen6faafaJa2qcIk+kknqzHux7nA qIxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVg+seX7v TJ5JbSFp9MkYuEiBaSAndl4DdkruOO46UpviqUfpLT6Em5jFOoZgCPmDuMKo3TtOv9WkVLRGitT/ AHt860UL/wAVBvtsexHwjv4YFZ1p+n2mn2iWtqnCJPpJJ6sx7se5xVEYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FX/2Q== - - - - - - uuid:59629770-09a3-cc47-a7cb-246e202d9cef - xmp.did:F77F117407206811822AF4FA08899B87 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - uuid:d099f02e-66f4-2e4f-92d6-7d724bb83a97 - xmp.did:CEFFCC408520681183D1C415F6245211 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - - - - saved - xmp.iid:0880117407206811822ABF15CCA4F0A0 - 2012-10-08T12:55:32+01:00 - Adobe Illustrator CS6 (Macintosh) - / - - - saved - xmp.iid:F77F117407206811822AF4FA08899B87 - 2014-03-07T17:08:10Z - Adobe Illustrator CS6 (Macintosh) - / - - - - - - Document - Print - - - False - True - 1 - - 5.854167 - 4.055556 - Inches - - - - - Helvetica - Helvetica - Regular - TrueType - 7.0d20e1 - False - Helvetica.dfont - - - MyriadPro-Regular - Myriad Pro - Regular - Open Type - Version 2.102;PS 2.000;hotconv 1.0.67;makeotf.lib2.5.33168 - False - MyriadPro-Regular.otf - - - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - RGB - PROCESS - 255 - 255 - 255 - - - Black - RGB - PROCESS - 35 - 31 - 32 - - - CMYK Red - RGB - PROCESS - 237 - 28 - 36 - - - CMYK Yellow - RGB - PROCESS - 255 - 242 - 0 - - - CMYK Green - RGB - PROCESS - 0 - 166 - 81 - - - CMYK Cyan - RGB - PROCESS - 0 - 174 - 239 - - - CMYK Blue - RGB - PROCESS - 46 - 49 - 146 - - - CMYK Magenta - RGB - PROCESS - 236 - 0 - 140 - - - C=15 M=100 Y=90 K=10 - RGB - PROCESS - 190 - 30 - 45 - - - C=0 M=90 Y=85 K=0 - RGB - PROCESS - 239 - 65 - 54 - - - C=0 M=80 Y=95 K=0 - RGB - PROCESS - 241 - 90 - 41 - - - C=0 M=50 Y=100 K=0 - RGB - PROCESS - 247 - 148 - 30 - - - C=0 M=35 Y=85 K=0 - RGB - PROCESS - 251 - 176 - 64 - - - C=5 M=0 Y=90 K=0 - RGB - PROCESS - 249 - 237 - 50 - - - C=20 M=0 Y=100 K=0 - RGB - PROCESS - 215 - 223 - 35 - - - C=50 M=0 Y=100 K=0 - RGB - PROCESS - 141 - 198 - 63 - - - C=75 M=0 Y=100 K=0 - RGB - PROCESS - 57 - 181 - 74 - - - C=85 M=10 Y=100 K=10 - RGB - PROCESS - 0 - 148 - 68 - - - C=90 M=30 Y=95 K=30 - RGB - PROCESS - 0 - 104 - 56 - - - C=75 M=0 Y=75 K=0 - RGB - PROCESS - 43 - 182 - 115 - - - C=80 M=10 Y=45 K=0 - RGB - PROCESS - 0 - 167 - 157 - - - C=70 M=15 Y=0 K=0 - RGB - PROCESS - 39 - 170 - 225 - - - C=85 M=50 Y=0 K=0 - RGB - PROCESS - 28 - 117 - 188 - - - C=100 M=95 Y=5 K=0 - RGB - PROCESS - 43 - 57 - 144 - - - C=100 M=100 Y=25 K=25 - RGB - PROCESS - 38 - 34 - 98 - - - C=75 M=100 Y=0 K=0 - RGB - PROCESS - 102 - 45 - 145 - - - C=50 M=100 Y=0 K=0 - RGB - PROCESS - 146 - 39 - 143 - - - C=35 M=100 Y=35 K=10 - RGB - PROCESS - 158 - 31 - 99 - - - C=10 M=100 Y=50 K=0 - RGB - PROCESS - 218 - 28 - 92 - - - C=0 M=95 Y=20 K=0 - RGB - PROCESS - 238 - 42 - 123 - - - C=25 M=25 Y=40 K=0 - RGB - PROCESS - 194 - 181 - 155 - - - C=40 M=45 Y=50 K=5 - RGB - PROCESS - 155 - 133 - 121 - - - C=50 M=50 Y=60 K=25 - RGB - PROCESS - 114 - 102 - 88 - - - C=55 M=60 Y=65 K=40 - RGB - PROCESS - 89 - 74 - 66 - - - C=25 M=40 Y=65 K=0 - RGB - PROCESS - 196 - 154 - 108 - - - C=30 M=50 Y=75 K=10 - RGB - PROCESS - 169 - 124 - 80 - - - C=35 M=60 Y=80 K=25 - RGB - PROCESS - 139 - 94 - 60 - - - C=40 M=65 Y=90 K=35 - RGB - PROCESS - 117 - 76 - 41 - - - C=40 M=70 Y=100 K=50 - RGB - PROCESS - 96 - 57 - 19 - - - C=50 M=70 Y=80 K=70 - RGB - PROCESS - 60 - 36 - 21 - - - - - - Grays - 1 - - - - C=0 M=0 Y=0 K=100 - RGB - PROCESS - 35 - 31 - 32 - - - C=0 M=0 Y=0 K=90 - RGB - PROCESS - 65 - 64 - 66 - - - C=0 M=0 Y=0 K=80 - RGB - PROCESS - 88 - 89 - 91 - - - C=0 M=0 Y=0 K=70 - RGB - PROCESS - 109 - 110 - 113 - - - C=0 M=0 Y=0 K=60 - RGB - PROCESS - 128 - 130 - 133 - - - C=0 M=0 Y=0 K=50 - RGB - PROCESS - 147 - 149 - 152 - - - C=0 M=0 Y=0 K=40 - RGB - PROCESS - 167 - 169 - 172 - - - C=0 M=0 Y=0 K=30 - RGB - PROCESS - 188 - 190 - 192 - - - C=0 M=0 Y=0 K=20 - RGB - PROCESS - 209 - 211 - 212 - - - C=0 M=0 Y=0 K=10 - RGB - PROCESS - 230 - 231 - 232 - - - C=0 M=0 Y=0 K=5 - RGB - PROCESS - 241 - 242 - 242 - - - - - - Brights - 1 - - - - C=0 M=100 Y=100 K=0 - RGB - PROCESS - 237 - 28 - 36 - - - C=0 M=75 Y=100 K=0 - RGB - PROCESS - 242 - 101 - 34 - - - C=0 M=10 Y=95 K=0 - RGB - PROCESS - 255 - 222 - 23 - - - C=85 M=10 Y=100 K=0 - RGB - PROCESS - 0 - 161 - 75 - - - C=100 M=90 Y=0 K=0 - RGB - PROCESS - 33 - 64 - 154 - - - C=60 M=90 Y=0 K=0 - RGB - PROCESS - 127 - 63 - 152 - - - - - - - - - Adobe PDF library 10.01 - - - - - - - - - - - - - - - - - - - - - - - - - endstream endobj 3 0 obj <> endobj 9 0 obj <>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>/XObject<>>>/Thumb 55 0 R/TrimBox[0.0 0.0 421.5 292.0]/Type/Page>> endobj 46 0 obj <>stream -H‰ÔWM�7 ½Ï¯ÐÑ[`d‘EéÐKœ´§´X¬�š¢H¼ÝÅnŠtúëû¨¯gÆÙ.zha`liÈÇGJz”×ßoÜúí&¸W¯7®ûÜÇ•]bòâzûùÇÏÝ;÷ oÖßÞ÷Ëc·þæ!¸×¿w×ó9:1ÇÃÜu·Þ`nsã‚§¨ödnOqîfó]¼ŠûÓ™+™ëgG.àC޲ø;Rñ!Ôèv�½zèúHžLØbwßÝ´ðçhv�§(<î>MCÆìCG%{‰9"/ÙõÑE„ > µ!ðîAÇ.€ ÅÞöÉÇX1¬Â®ŸSuä U×gÌUÇ>—âvÞ¥�1Lb`æì õøªNUì`�¢³\+àÙ Lð.Y°_»;Ëý)VÄ­)£jj‰Ò$à&¯š÷;å$0Å''ö¢ë Y¤\s - -pß8³"ÒÊ’Žì-ù‹Ã¢ÈÁ©6òµYg{³–ÁºŸâÀnÅÆ¤Ëœ± -^“Ñ—èkÆÂOÖMQT?ï³þ!¡Äѵç�ÁݺPõµ0–K*(¤Éàè¬3 -êêÈ?6#3Ö8½Ddâ&Ù£òXð”Q‚@/æ/Å'Jöñ“óŸñ/p«Z“`—UyNÉKåˆü Ž„LN*Ú�7òtí¹ŒËødϹP–®®© -]Œ=�YZ�bR>ÇkОGLQÀ¶ÂÇñ¿HTébèëîÕö WíÓ$j½ÝÆö®#ðLPur 2ß>t«Û«íod¦æf7ü2-š!/¤0Å1S2Ó ^ÁÞ°ZÏð¾6£õ–~ã¯Þ‡¨ÃÜžÒQ´š°ùS9mEÅv€Ž'¼¿íVÛ9лÀiÎæýjzõשt™ÇÀ”uJàã"_¦ê©.#ôft–áP°Kg°»%,zˆ(ÖyNüj‘~¬¬Mé%µ<£°1zŽŠsVMIs:YØ µNDÒÖ¿J9ÛN¨P\Rè©@OÌ�ÍéÍöÒEa"D X27E!šnö°W{4€Â6(1.¾Z (�ßýtôvæöŽÃ(˜Ùðsœ|fHOx-Ø0 -£}hw_͵2RHÑP¼b5þ¿0g -? L~YÍåÌå_cŽâ‡Jñ?Î|Pé’ÌÖƒ„­‘ã~–ËpöO‹‰¦Ñ——ª> endobj 55 0 obj <>stream -8;Z\t9+HS.$q,N2m,gLGcZI^Tpcc5`o>)iR9u*#tF\tY3_=2\m+Qn5c.S5UgbjK(4 -"u9r[X7-T8ABENJ@AjKpBh[np.)*=Hr,)b%c,_i#7QO,+cFK3s.J,IVY[0js9mirI -XVhEJ`6]>ln'B.XKLEfg endstream endobj 57 0 obj [/Indexed/DeviceRGB 255 58 0 R] endobj 58 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 52 0 obj <>/ExtGState<>>>/Subtype/Form>>stream -/CS0 cs 0.502 0.51 0.522 scn -/CS0 CS 0.137 0.122 0.125 SCN -1.5 w 10 M 0 j 0 J []0 d -/GS0 gs -q 1 0 0 1 16.9644 209.4238 cm -0 0 m -121.86 -47.053 l -133.055 -51.424 145.63 -45.821 149.991 -34.665 c -154.279 -23.478 148.726 -10.902 137.528 -6.588 c -15.707 40.554 l -15.707 40.554 m -4.529 44.92 -8.064 39.333 -12.413 28.151 c --16.678 16.957 -11.161 4.401 0 0 c -B* -Q - endstream endobj 53 0 obj <>/ExtGState<>>>/Subtype/Form>>stream -/CS0 cs 0.576 0.584 0.596 scn -/CS0 CS 0.137 0.122 0.125 SCN -1.5 w 10 M 0 j 0 J []0 d -/GS0 gs -q 1 0 0 1 169.2495 152.3472 cm -0 0 m -130.625 0.013 l -142.644 -0.031 152.356 9.727 152.405 21.704 c -152.374 33.685 142.663 43.416 130.663 43.405 c -0.041 43.489 l -0.041 43.489 m --11.959 43.536 -21.694 33.786 -21.722 21.788 c --21.667 9.81 -11.997 0.084 0 0 c -B* -Q - endstream endobj 54 0 obj <>/ExtGState<>>>/Subtype/Form>>stream -/CS0 cs 0.576 0.584 0.596 scn -/CS0 CS 0.137 0.122 0.125 SCN -1.5 w 10 M 0 j 0 J []0 d -/GS0 gs -q 1 0 0 1 193.9482 38.6372 cm -0 0 m -92.357 92.378 l -100.887 100.846 100.855 114.612 92.42 123.115 c -83.927 131.565 70.179 131.58 61.702 123.086 c --30.722 30.78 l --30.722 30.78 m --39.241 22.328 -39.23 8.551 -30.766 0.048 c --22.258 -8.384 -8.542 -8.422 0 0 c -B* -Q - endstream endobj 61 0 obj <> endobj 51 0 obj <> endobj 49 0 obj [/ICCBased 62 0 R] endobj 62 0 obj <>stream -H‰œ–yTSwÇoÉž�•°Ãc [€°�5la‘QIBHØADED„ª•2ÖmtFOE�.®c­Ö}êÒõ0êè8´׎�8G�Ng¦Óïï÷9÷wïïÝß½÷�ó '¥ªµÕ0 �Ö ÏJŒÅb¤  - 2y­.-;!à’ÆK°ZÜ ü‹ž^�i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ -�V�³)g�B£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= -€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±Z�L®Ä„?â_øóyxg)Ë”z¥�ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ß�Þô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ�;ÂA4ˆÉ 䀰ÈA9Ð=¨- t�°lÃ`;»Á~pŒƒ�Á ðGp| ®�[`Lƒ‡`<¯ "A ˆ YA�+äùCb(ЇR¡,¨*�T�2B-Ð -¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°Ž�Sàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4z�BgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p�0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"E�ÒI2’�ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷�?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@� æP+¨íÔ!ê~êêmê�æD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒ�Ó¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™�˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 -N'çÎ)Î].ÂuæJ¸rî -î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…�EŒ…Òb�Å~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X�[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„�Æfm“�Ž;'_9 œr�:œ8Ýq¦:‹�ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö -n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%�—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† �ž�kï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»Îå�wW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™�™üšhšÕ›B›¯œœ‰œ÷�d�Òž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª�««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½�¾ -¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû endstream endobj 60 0 obj <> endobj 59 0 obj <> endobj 44 0 obj <> endobj 63 0 obj [/View/Design] endobj 64 0 obj <>>> endobj 43 0 obj <> endobj 42 0 obj <> endobj 67 0 obj <> endobj 68 0 obj <>stream -H‰ŒÔ tOWðß–D¬¡ˆíåþÞŸ„–R´vjß—Ø— BE,! µÍP´ƒbz˜Ò"„Ôû¾ÄRŒZÒÚ÷]í:µ•¹þþ“cÌ™šwÎï|Ïï¾ûî½ç¾s>€� FCx³–¥ÊÕwªÙ‘3¶ºt‹�ŠKH©7 -«]Ömð@�x£Ú,€b7¸Ot\�Øë2ý0@‰6™�}†Dïì=Ä~_. 5¦{Ô'ŠåÍ P­¬]¯\ŒÈìɱÈö=m_$&v`B±ô�Ò¶Ÿà©ß§_·(¨~2·Ýú¨íÇF%Ä=Ïò>Àh×Î×¾Q±ÝŸö/dû~KâúÅŒÝ8.`ü€OjÇ è·yt_»Þ[|øyN?;÷?{ y•œÑ¯?€ÒÃ!!âß}Ü�ñPŸ‘?¼H‚ª3ð€ÎnfoKJùmyyïÄ̶ØV+xy��Ç—Á�_eþ˜WYpÀ«t†½J3öUº“mžaÓMÉcÇýª@àË[‡@»G6ûnÌ�D˜I0@2| a,†%°–A -,‡° -VÃX ë`=l€�° 6ÃØ -Û ¶ÃØ ?ÀnØ{áï°~„ýpÒà'øŽÀQ8ÇᜄÓöspÞ^ËE¸—á -\…kð \‡p nø¿Â?à7¸à!<‚ÇðžÂ?á9ü/ ý0³`6Ì�A˜4èba,Žïc)üKãGX+`%¬‚Õ±&ÖÆºØasl‰­±-vÂHŒÂO1‡á‰£p4ŽÅ/pN¯p2NÁ©8gàLœ…³1àB\†+p-®Ãõ¸7ávÜ�;ñ žÅËxïà=|€ñ1SArÈ�RY*O©Õ¤ÚT‡P#jFáÔ‚ZR+jCm©=u ŽÔ‰:S$u¡(êN=(†zR/êM±Ô�â¨?  xHƒh0%ÐJŸÑ0N#éO4šÆÐç4ž¾ /i}ESiM§¿Ñ ú–fÑlšCsi%Q2-¦%´”Rh ­¥õ´‘6ÓÚF?ÐnÚCè ¢4ú‰ÓQ:FÇé�¦3t–ÎѺH—é -]¥ëtƒnÒ-ºCwé>= ‡ôˆžÐszAé,ìÇ™8�³rvÎÁAœ“ßáÜœ‡ƒ9?à‚\ˆaÃÊåbü.¿ÇŹ —år\ž+pE®ÄU¸*Ì5¸&×âÚ\‡ër=®Ï ¸7æ¦ÜŒÃ¹9·àÖ܆ÛrŽàŽÉQÜ•ûñ ÊÃyÎcyÉx2'òbNáå¼�SùG>È¿ñ}N?ñ—É$�’Y²HVÉ&Ù%‡4“pi.-¤¥´’ÖÒFÚJ;i/$B:J'é,‘Ò]zJ¬ô—xùT†Èù«Ì”ï$QæÉ|Y*)²BVÉY'd“l“TÙ!{å�–£r\NÊi9/å¹!·ä¡<–§’î‡~ïdÿ8èQÐ3�LN “ÝÉí;ãD8‘NŒÓËéëÄ;ƒœ¡Î6g»³/ä›�!3Cžš<Æ1uLÓÖ´7¦“nV›Íf‹Ùj¶™T³Ýì2ûÍsÐ2‡ÍisÖœ3çÍmsÇÜ5÷ÌóÜün^h&ͬ94Hsj.Í­y4¯k~- ÕÑ5ªêªG k Õ0-ª%µ”~ ¥µŒ–Õõ#-§åµ‚VÒÊZE«j5­®5´¦ÖÒÚZWëim¨�´±6ѦÚLõ¹¶ÔVÚFÛj„vÔΩ]´›öÓ8í¯“ôk�£‰:Wçi’Î×ú½.ÔźD—ê2]¡+u•®Ö5ºÁE—\vÅõwÝln^7ØÍïp]×ㆹEÝwÝ÷Üân·’[Ù­í6r›º‘îHw´;ÆCO€'‡'ȓӓËSÀâ)î©ïéâé^ø`‘¡š54(4wh¾Ð‚¡ãC÷…U «V9¬W‰è}J .\ÒIHΚœ3¹@²ûxá“ôg”ž˜ž”žœžîõ9“OOõê9÷õ\ùV=w½¡çŸž‡_ÓóÔêyÓ«çÝÿ¡ç3Ÿž€þ˜ ³bv¯ž¹0=XK`I¯že°œÕ³"VƪXka¬‡ ±1¶ÀVØÛagì‚]­žCp¸WÏ?{õü NÌÐsšWÏﬞs¬žÉVÏ\“¡gªWÏ]VÏsx¯á]üõ¥žø„òQ! -±z†Y=+P%ªAµ¬žu©!5¶z6Ïг�Õ3â?ôŒþ?õA£|zŽóê9Á«ç×oè™èÕs-ô까–[=×ÑÚdõÜJ©^=÷fèù3ñêy"CÏóVÏK^=¯ùô¼mõ¼çÓó1=¥ß­ž`õô·zfæl>=syõÌËùÞÐÓåÂæÓ³„Õóà =+[=«qõÿÒ³¡Õ³I†ž-½z¶óêÙ‰»X=»ñ@«çgVÏ1^=Ç[='ñžÇK¬ž+¬žÛy¿WÏoÕ3è­zv•hé%q2@J‚L–©2M¾•92W’d‘,“å²RVËZY/e³Õs»ì±z¦É9&'䔜‘ rI®ËM¹-�䉼ð¿ «gÚkzætò:ùÇ©åtr¢¬ž½�þ>=S�]!àÕsŽ“Ϩ©oÂ}zFšQfíkzî0»}z¦™c>=/øôüûeÅ•Æñÿ×Ó­FE x#LtU’Õ`TÄkãzÄûX�âÝÄ�1®ovÕõˆx+Þ뙈7* -Þ D9„™¦§¼Ïî/D*žU©¸µ•­yÅûº™é7óºæ7¿ï?×jÜ*´'|^ñ)SdOÏ"{V)´gõgÚ³ö3í٤؞͊íÙZسÍSöì"ìÙ]س—°gßB{öóZhÏQ>3Ÿ°gôsì‰"{*�ÙÓçöl.ìÙAØ3ä…öXhO{–¯åY«òö ©7¨Þh?øU�Ft©h·h�hŸÛË„=©ØžÄwùßd�³PVÄcñ|-8“uVù:›|霎º|V<Ä)âÑ$qå›h,Öä¡ ÞgY|E8Xá^ÂÇx1,¼H¬dqdTå¹â] NåYâhñ>¨†¤e0]™ŒI–ŠÊ åšr]Y�¯0_Š<÷•S¸«Äâ6×Qšáw’¹Š7²¹«%ß�o)Þâs]i¨Tâ N“Ær@� Ù_©Á‡o%€c¤‘7Þ.…YÀ;¥û–|i¯ç Ò"¹öV <û‰”Ç+x•Ô‡— ãæÊ7y©pš�É×O^ kŠÏQd鸸:ž#%waí©±RZj$ùËùrM©®$ÇJÍø�VCjlz˜Õ„å½%/y„.U“êIu¤·L‹©†)ÉQ…WùHµå)òT9Bž �—$øIUä�äör[1‡Ëmä/Ìp3Ò 3§˜ÃÌ<ó²™kN0í¦njæ%þœØü†{såÁ¦�òÌL³‹™NÙbUªyÑLáŽfK¤ty ¥šg©©™dž1Eß;É�æ)ËD¹'��{˜ñǾܔvÑ>ö–;¼?  `¹Wd/ó�Åf–¦–R®ˆNpT:"ºü&Ñ?¢±öAÖHãͶÆËǨl\0®ˆ™nhÆy#­p¦™†eŒ,ñØTN0¦KÄŒ4SŒÆL1#E�Å{�9Æ\éKѽ¶‰®,m´Ì7Bá#~7 ®‡èx�D ½±¿è��¤6R³/÷}²wàPnÇùh©Ï­ù4§qsÉ�›Iõy³Též×í¨ÛórZä4Í Èy/Ç7ÇÛy7ÇÓ™è<ã¼à<ïLw¦:Sœ'œQÎVÎöײÇÛ½íUõz¸>L¢Ò?ÕCõ�ú½Ÿ¢íÖb´]ÚmœÞGï­ý mÑvè=õîÚm…­wÖfiÿÔfëíõvZ„6Ní¥öU{¨þjS5ÀºTm¢vU;[—dûg7²~ŸÝ »¡µ¿u¹5T­§¾¦V·F¨µÔ:jMë<µ¼ZV­ VTK«ª§6Á¡{k�ÔúªŸ6V¯¢åªµ­_iYÚE­µîn»¯¾®úh‰Ú9-Y;-ê)ý¶vLÏ×sô«Ú±ÓÝÚ-Ö¬ís9;þÖnâàxßÑÈÑT÷µ¾êx×QÏQÛá+æJ‡�c³=Ùg‹Ò {’m®}ÖHû^ûVû&­aæÐÌ1YýìËl£m­l�Y5/ÍM+§ïȺc ÊJ¶/·ÎÎX‘Õ5czV;kDÆEëøŒQÖpk7kƒŒw´HÍ_�UcÔÕê6u‹Ú:5Ï6É6Ñaëšú]jDêè”oS¾ÑCrBl¢vßSò¬²¿T\©C¥b‹’§k¸†k¸†küºQB*]p Â¿ÇA*:“ðâñp¥2”@I‘@_Ai”éÔ­ _¯ž¨€Š¨„ʨ‚ª¨/T‡7^C ø &^ÇðE-‘gßBmÔÁPõP~xïà�h€†xþhT�sEÚmм�ˆfBs´@K´Bkü ¢ þŒ¶"w¶G|„Žè„Îè‚®è†îè�žè…¿ 7úàcôE0>Aú‰ý÷Ç D(>Å Æ Å0„!Ã1Ÿa$>Ç…Ñø«È›©óoøcñ Æá[ŒÇß1ßa""0 “1S1 Ó1‘ø‡431 ³ñ/‘RçbæKs¤yˆÂBé{,Æ,Å2,Ç -¬Ä*) -«¥E"¯Å:¬ÇlÄ&‘¤6c ¶b¶c‡ìÇÄâ á0âpG�ÃqœÀIœÂiœA"’pç�ŒŸp�‚T¤!‘�LXa+$Áò,Ï$!é9<¸Høý“àî"á%��ó?"᜸‚\\~ $x¸Hø�:áîâžødïãÁ¯pžK‚ço$Á•žM‚VL‚þ Ö“`/&Áñ † �'�Ÿ !I�ö¨;ÌÜlý &ćò DO9a¡ ¥€„xAâCj¸œðHøèoºœð_qB1 $Óà‘@ - ù-‰‘†Ò°—’ý\¿"ÅM, (ZH‹h1-¡¥´Œ–Ó -ZI«èß´š¢i ­¥u´ž6ÐFÚDÿ¡Í´…¶Ò6ÚN;èú‘v�@7‘@’@y”/HH£ôG$PæÓ-Ê$+ÙH¥,ÒÈN:9(›.=M9)‡.ÓÊ}‚„8ºJ×è:Ý�'S -¥ÒŠ¡]´›öÐ^ÚGûéÅÒA:D‡)ŽŽÐQЧ:FÇé�¤StšÎP"%ÑY:GÉô�D�— -œ@YJ%:�JŠN&nÍ]÷3H¡T£È�ÊQyòÀòü™÷rŠêºãøùÝÇ. Ê"»¼¼ËuyÈK„Ê -» ˆ »É.‚EcÚZm°h¤©+a:%jjítìtlj¦õŠfºèè`j'Í´IµQ›¦iZã#�N˜¤­ÒVãÞ~ïåQp‡?÷ÎÝ{ιçþÎï~~ßó;çŽçšC±£9�f?˜(FÏ ‰4ŸRɦ+!…2õœp�r(—òheQ6ÑZ¬)� -©x’J¨Œ§rZú`N Rr�“*õœPE.ªÀ¾DË 7i9UcŸPGõÈ ·Ø'´Fß'¬¥uì2=EM´žšéi¬fŸÒBÚÈ>¦/S»&1“x–¥ŠÝ,NÈÒv êq~ ]ƒ«Õ[â[ÌÜ¢þƒ/«Aíä‚¥%ø~}û�ãˆûk(§‚ç«»þ5ÁÛ«”„vCDã·¤ª—�sŒþÛ�Ãö#Ó…ã™-ÐÅ -ÖG6uêv”[ØõGÐC!hžE´›YVªžÄÝDQcó&û ÉÜ !Zý¹zš«‡Í=¸sI]¡‡Þ2  -ò{Ø9²ñ¨íÐ]1¼;ŒÕø;�·ßM§ÔvµS½¨^ƒÆÍÐc#Ž.Ìîküqá[êaõïj$R¡Æ¨¤Yû|?Άˆ�ýfÚFý´Ÿ³s»¹SB�¼  @Mƒ[¡‚S u�ý“ý—>ã̼‰ßÆÿJÍWÿ…¹¡©S{“6¬1�PÌKxÃ×Ù2@ åˆ]½Bûé=.�[͹¹¯q_çnñµ|¿�OxN{ÅW 3‚wÔ3ê[êÌ©Dèù«XŸƒËEv›Ý%¶ÈFÅT†x7S7}ŸD~äê�'.rÇ��®#SÝãD.œ‹áÒ¹m\?÷:÷&÷.¿‰ßÏ�ÿ GX*râñ¦ÁfüS°%¸7ø®Z¬^SÿƒÙ‚Y[Ƶ˜A>}Ý\„Õ±«ØÏ@謮ŷõã:ô5¬}Ý€ZÅAõ58ji%m¤MÈ»§qœÓ}á.”‹äb¹®‘ká¶pÝÜ®›�çÓøåü:þ8Ž_óWù{ü=A¢…¡B¨b½ÂᎣÂk€ð;±H\*ÖŠkÄnq¯ØËo/‰W ; }†Ãg†Ï�©ÆÆ­Æ^Dçmhöü”\&ÐÌæm¬•¾ Ÿe©êz~'_ÁeC ç�Z°¾w±½|;¢¾ÏÚÛ�݃î"”±Dñ ¢³Y,mü°/H[�:?Å6ON¶Js“âã,æØ91³££"M3Ãg„…† ¢ÀsÄ2œ²Ë+))^EH‘++3µºìCƒoRƒW‘ÐäšÚG‘¼z7ijO;zn| §}´§}¢'™¤V’™!9eIyÇ!KZWïFùe‡ì‘”a½\£—¿£—g¢lµâÉinwH -y%§âêl÷;½˜´GXf†–8ìl†fXaå¾®v3.Z§';œŠEvè÷x›ÓתÔÕ»�Žx«Õƒ645¸1FfÆ&ÍO¶/¼Unݰ³¯Vò5¹ÞçQ8¯f+2]‰•J쎛æÿWÇKÎÞI7Îæòµù]@°¯r´êÕj¾^Ôª%˜åz‡Gauî‹Ý¢W23Í;‹­xûÁÌe™Ë´k±Õ¼sôúÉ‹£í¿š¡÷»ðW\«&�6’\?iƒ>ˆ g µ¿¶BæßPˆnøy¯¹ þ”+4ÃÛÑVåSºÇÝhwŒ:çíp „Zâ´wð–yÐßë7-Á0èo’%ÿ†ÊßNmñ�µl¦;L+j�žÐ -î�—;u0Úpf¹]‹o§s¬.›�“P×Ðh>+³•Üê:·U‘礡�7j¥6`Âã÷�Öd«2ä÷Çûµ96Z{°Á>Ö`º Pw�~«[¶ÆëÌ­²ny4¦‹ éqEXþ£ L&¼Þè„ á¢é^2-ÂÅ'\Ÿ‹5Â_zr„—N!\úhÂöÉ„—Á[»N¸ì1.ŸaÇ´;NØŸ�áŠ'G¸r -áªG^>™p5¼]®^ñ˜×L‡pí´¯|8á:ø¼R#\ÿä7L!Üøh«&^ oWé„×<&Âk§CØ=-ž‡^Ÿ=á§&Ûã6™p÷@ÙcGÞ4 9vÀe؇^ÄÇÏŒ¬!H°�,Dgˆ)ÀØEœZeþÃp2”�²Óx‚±5é§aEÄ5;'/Ò9g™ÐøâcñìÝò€Psï$zs›¹Xñ -‹föð�H'¬ˆˆ>C‡Ñ!”ÛCC,³cþm-ý†9=½övÍðåá?×:Û·XiiNvtÔâ‚HÓü>/‰b“(Æd4ð?\èªÏíß~hYJö‚æâÓÁf*èûYÉúù+4gä¹¶®Û_ ¾ÿ·ýÁ�tVÓG\5wï*ÙÃXOq"³b€ÊNZOWj£Þ0ÝbY5ÃÍc]M#Á0îà þìƸ+âwñ)"Ÿ¡åÙÃÁ.ˆ,¬"ÔÔyÁ|áÊý"¸zû<ž¿”çEÊ‘~y(¥oˆñG{ŽÞ}†Ñma‡*$‰?`É쨽¶@p kÅ͉Ï$íHÚC/q!i!ë,›-/X^HxÃ"²dŠfY¬Æ‹@Lœ‘–-JsŸ·&‡[¿i,œ³5yÖüˆ]s “çUÈš—‡o›î ß`¥%÷KJ‡#£Š²¢b‹ר¢¢Hü±õ9ÙåÛí ‚%Ü™2#jV* �mL%‹0Ó–J!1øcéé&¥ã·‹­/ˆ*¥‚Åù‹Räd£Á(£lÍ�Š™m4D� €µ¼çüЮE º+R„_ðeÏSêÈõí®7ö¶¶Æñ³¾X0HQÏn­ÎoÜÜÕß[Ýs¦óŒW{PT×ÿÎ}í²‹°»ì²ì X�]òv Ãt*¨P…D¢�èÄ·�£‘V­-Ò LÕbFٙЙREB‡4¡61µ3bRj3il§©36±c5'íNšƒUY¶¿sö®%øG üîwžßù¿ó]î噩“£û—m^YYÒ¶cq‘¨�®)»äJÁÅ`�ƒeÓû†lM!w’Ar“Úý�¶jÔX¦jxš¢Ñ’EÌá¯àPvÝ�(i÷#råððL뫯´´Ä>Ÿl©TM5ôqÝâ‚EÌd1{’½Á²Ëö¤CÈhKN’=¥†ùI>K²¯ºP*ʯþUµT]Z�g³T£7˜ãô¾Éúêr�¾,CÐWd–|æCM�×nÈ/žï®õä{—§»–Öþš àKõ-v‚t -ߎ4[¦šnFßA@�ÿ�ØBVä£ù(ŠEx^¬Î�ÈÈ‚Ê*G1W«LõSF¦ÇOéÙvÐ9‡ª$?¹}N?|ÅÙ)d–‘ž A¬c~zYiUåR–ÂDJ_ÉW-++Å7ŸÕŽE8"…åæA.å•Ui,eOóúµ'üÛJw>]ÒÊÆkÉÝûWûMÃê�“ç÷~Û™—œi-Xè(HOªúÃw�Ÿ?7Ð÷Áº…�§ú^-ež·x+{Ƹ0ã‘öÖ•­¿}©¡!ðæÈò“µúܺ†¿³Ù4º³ÝE–"–OVWVv�ÿ|G<ùMÑ›7yT#„hâÏ -N‹èeØÒ5Sºf0› ‡Á`iI™‹ñ8QGZ™•‡ÂfµK"ŽÜùñ i»3½lïXõË~wwêêþÇJC§¤-ýý‡¼X6¡NDÿÑ´z&2s{fæµêܦރ·~sæÚÙ?<õ ÁÛêØuù²ÒLnòÐéºâÓ.Î6ŽdÈË�Ö—ì²l×|nÃ<ŸÝì1xəWp·¨¢ÜV6ulèàЩý‡Î°¾ÖEKþ³GGw½1sïóklý­+—Þ»xù÷RUyæ -Éw¯öøÆ'Ø#÷>cmð«…d5$‰LôL]}•Ö@môkÓ¶Ò6¶UÛ§&1UÓòm¨ë&ÓTYeRH‘52h!c’ÉdPk îdy9¹Ìɯû÷Ä9Ü$ 'y…‰/¡PqOQaÏÁwQÖ:ª˜¿Âï`(­¬\:—k£½RßtûàˆLC/FÕ!XÅHü²_iYŸZó%Y�¢¿¾é¨�—.ÔÜù÷æé ¹ßx—¿d±ž‰7iù3ùDÉ ³sBOâÇxLµñÿ @îÐD¤+Ô¢tâÝÕIuÕ«kh-ë¡Ai„Ž_“}Ô¬ŒR;ÖŽ ÿ8äßË×ïè²(ê�&`…ÞnÄÚÐáåz„ì¤Ac]ÇY™À€:Ië€WÐSnИ¢�èaß%…(ãƒ|�6"Öb~_+ä$�£½ûüh� ]n8Ly�/†ž.){²X¾@ßáþ—$÷}/Ψ†\ 4` ·o)ð<›äˆ]Å|Ú½8ÿy>T‹}�T=½˜¯Ç>'ú]h›a‡�KÀ”K£±%;ýX…=£dÓýÎ~Ã�>Á~ݦ‡·±a6pæVÀ¨ç2o–msÑ5«ä2Ú¹M÷{…ô>WVƾD¼&ÕOÈØÀ»üëZ”MÔŽ¾vÖ«ãð}`���±ëÊ`l\¾M;0·@;�nBÜKbÏIST-ý“J´¡gÑžàgïD¬x|0ÖˆÜ.Ãy÷Ñþ:š9âyBì 6Ôó¸óܳ53#êmÚ€5ãÀƽðºø¾ºRôsÆfIÎóo‚7w!³‰Û ÐBÛùJóç¡«@‰Ý�t.€·ŸžÃx rˆ¯�ý·À«+‚·àç¨à 8]~Î?ÁݸñœÅïη°¿ 0m”Ö'~߈ß¾—ß›„nÎ1Î�„äùæ>rN=$ç¬w²A¬ã|û_2qþ\)üÁ}æü„¬€¬•�ÒvùYÔ—2Z+gÑfØ\�˜ü {.ÉGÀcÜ{ôOBw©B±/øý—²¨›Kä-YÈo 6ññÔËï�®ñ%S¢¤ð\ñ{0WòÚÁï/d#¤Sï×?ˆÝóã÷›Ëëº<û»~_»þ_)êÒ¤¸ÿ"·‰¼'äCçá^MOëÀ'Õô6à �(º_0Óøþ˜ÞŸ�> ù$^]ÓýœK³rÀãÖ+j) ›ñ1`#±¿JUt�×øDÍÓka¼Þ-�\ Ý5н…Û€»qŸ#¡‹Û£î¤ù8#Ì¡…äµ8lTÈ¿xÌÃ|M1塦о~Ÿâã“ÈÏ ò¡],êÍ7¾~bæÀ>êÉ9Ì�ÅÜ&Üá°úí€kt›Ã²‡z ‡sd•¶ñ$*Cûû:ÂJ˜<êcXÓ)Р˃X× ÖâWm˜¾isÍÔ{z8 ×ƒs{0ÇácûÄ{)ÌÏã¾óóÃs,¾.WøE¢nûã°¹P»Hn»6H=ûûŸ†.n³G׿{4'yô1ÎÎÕ°noïèžxîgƒs"ú"Pç˽ðUîð5‚[ƒúº¾Y<Û2§ DWéòI}íáøâÄmìFnºÁ£Cºìåm¥ï�Bj•$ê‘—Ä¢œß‚ã$îªU�1çÑO„ÿ”×)Ä�ùµ¢.öR£^›ã÷$L!íSÔßãÔ¥™¨õó¬ÜIg¡÷¢ò#*ä5Œ•Ójœ˜0k¢ÎG¤â½Ö¬×ÿÇÅ{¯˜.êfºðÊË8ÊêŠãÿýÞ›'�WAM2„‚�`x•@(™ ””D+¶Ò˜€€”™Pqx�ˆt¬Š¤¶tj-˜ZÑa´2€¢<äQ:ˆ 6"•¶3BÃcû?wï·l6Owæ7ç~ßÞ{¿û<çÈ>¥u"õŠT¬9‰?z¢Å_Œ®j‘øŸêw½h’ðuóI¼£|š|+k*Èå£/b›œS÷{XÅtÖ!¼z”y÷¢LüŽÒs8載ƒîz£²i³ƒ�Ý. Êò.�6�ïÄ�WùÚP´ŸÄy‰ v‘ò[Ïj­rŸG(X¤Ê Þ‰¿ócžh·àçXèíE¡{ÃÜ3ø¹ýÊ�ë˜á}‰rçŸ7cª 9Ö^ômá˜XÑ6_SE3‰îñý°ïãcïþîàLón¡Ì½ÉñF4pÄG7îKbÄ�›ˆã â1Ç_Î~‡ÐÞ ÝÚtü ªc@asÚûý˜8ßd<�ö«ã›Òg-â·™vQ#£7”>iͶQ�H.!1,ºöw5H¼ÍQ¾U?s½¾æz½Æ¶÷“{£13Îú15bÿÕömm÷È™•socbo“¶ ë»]¯ßv½~¾Ž»BÛ‰Úv�×3ÍÙ:'jßkûåw¸ÙêjëëžÖ¬>7¡8ÛH'E­Ú+$ê|«³ìu³ÚVÙðá–ÿo“míì=Çï\kîŽqÙH>Öò^‡O7÷¿Z³ñ{�—­Ø˜ü£9Ûp~óñ”}/Y+çW¢Òí‹NöêêA>�‰±OI¯Ý�ϸ煼{ ÈÔm+}ëqž¬ÇçÙVµÓ|$Òvkd«Qj-Åãn>Þu€uQy÷®É˜d$‡÷s¬rÇ÷óüœ¤Må³”óYÞÁu-­Æw;Dc±�Ýòžÿ‹+—²®?êeÜ+f{ê9{óœ?s¼9x„íä=ëÌ$;¹.I´óh›ë0Qô/sÜõ¬·ƒï„~|·‹VrÖr–ˈìÓ$U–ØÅÿù�Å|wíz'?“ïÈ{ÚW�d„Ï»IŸ�'°Z𵞔�Cèn¼�î¦�ÕfŸ“‘Aš½øü0ʘ)ëáú¡ÔÉ #çR´cõUæ–UäªÖÇùþ=hé.ÐW\#gÙÇÓ-ø0??UçRî{ô Ô $.…ÿ£ü!÷ѼFß8¯šÂL³íŒc0¬|êqU—ú¾ˆšy%&IÿÜï^îGH¼ËáCÀÿzõ!�#Ä·“5‘uÒ{âû—‡¬Ôç0Œå -ë}ÚS*—z†ö¶YIß5Þ\ÅuÝŠ•¬›gí ;ƒÜ -Æ©Ùô¡¹¼G™GícœØÅ ?\dÛbä²M0Z×o»•ca_ZGþ!Âí²·&D¸ùšþo‚®§ucc�Ëe²àœÁ^ÙþÑ»Œ*µO=qÜ5уï$ç\Þœ¾v~©ÆÚ›uº“>,K|îG+ñJÆžÁ5I×vÀC”é3oá¹p`ïÈL¥U‹ñ#Þñrç%êŽ7‘-uãã5Ï—¡îÁ‡ØlŒB_óqt_b¼Ç2s#ÿ[<#i‚híSšÅÞ‹û-”¸¼óî"Í:rˆwû÷ô% ”i„³�yñ’5¤„Ìc¾vQùžfqé7ï RO>!5XLE™ þH3Šä�áš¾‚ù:ý±§ŽÙA -È&æ -›”l—m„ ÛÙ.ÈvÁ5Þ]-¡æ¸&27oÊÄ�¶„»�ß!Á1dI#CÉ*Îo•KdíýµÔëâÏ;fÌ‘ïë~[ÛG¯J¼v( Ê·O“J²‰üƒß=ªúkq_Ôš�ý{ˆû¢ßÑï‡èã…Öæ<Äö$´Œp ¡¹äI²‡í÷ÄÌ»©3(ñ•8?E†3‡1t z45FÞ• ç tNо‹�^–¬Yø9J>!gÈ9²ŸÔ’™c�aæÓ/7ÞÛ­õ¬â2qþ‚ ·#¿!绩ý�Éÿ×pŒ¿¦ÝÂ1,¡Žð÷SRß>‰ -5fŽWÆ¡ÚvTsÈñV߯fìø*ÐźÎ{ý_ú3ÞgOZÜóÖ`ÿ§È%rB—ÏjŽ� äù@¯Ù9]ç”®Äo×Úi+þþŠÏñý�ò=Úç´ö¿¿— -ߌÐþà‰ˆhK�ý}öïwƒrêˆFß->™þ¶·ÝS�¡í’2ÞeÙS”†¦µK>c{‰; ãì/Бgy¸&W1=¹F=¼d·k±V´¡è6¥›$ÚÈ÷ǰÖ:ƒaÔf)v óËÕ*·½8żà›Í+ØìL`>zŒÖÏ7µ.¡ŸíDíœIí\Aí<žZøujá¥ÔÊÕÔ2hçòy¤ué´¹ü?ƒ6…Z¹šZyqÔ2–)=_ƒ¿™ËØN¿w±¿óXêþÕôÅüzÎƲÉB­�k¿ˆþQ[Aí÷ç ¿¯´a!Û™?õÓ,�Zž€þì§ç`©Üð„DãFçñoô·ª”6x?:fÖ“µ“ýQzxAøŸ\‡>ܧê~±¬ãªŸ•µŠÑ7ðqøŒèKj¨>5Í`M.õT�h–ó»%êþVc¡¼—²½Œ:\? ’¨u%üÎ6�WÍ”\ÃþŒlÂ÷•Шñúðü؇�é|Ä»1’gú>æ?èfÕ!ËZ�qÃî,¦"fµSÖ*$™×yžJ1Íz+ã6f™…Hr6"‡šv„�ŠLàÆ£N-’ù�Þ� (Ô‘YèG©-^A’q]L ]ŒÇÐјÎgáë�†+¸uÈ .CA0 ˆÈC�5ÉÌílÒÞÚ�ÎÖhtõë›w0\°,äšeÜßÇ�G�¸ˆºp/azvk^„ú¹´€;¿¡}žü0¢ÏoýÎz’d+À3 >\D= =̯ÐÓîNM5ƒ¬ÜàëØC?w^b†8ŽÎ¼§�|<„¯D0w’çîÚp]„øg®7ûÀ%¥#SI -é%úYÊÚoÌUû]Îu™¢ò¿>ê¾ç}ÙÇü¢“õ9yÖ>Ž,ç õ`ˆøÁ¬ÂHs9÷ú®�jþ -y¾5®`ªq1†+ -�eDá³9—õã0*031Îü+ú› d‡øý*¤š/ ’k]¨G Âí±zRèû<ɇôyÌTî±PÄy¶G6ËÓÈd°`|Ë{ö­ª“ƒRãïØ{(å³�ÆçTÚû¥,m/"‘¶Ä\€¡R�ÿ{æ,ç»ö´éG~@ß”Æ37˜÷)Gåg—™“Õ"תGŽû Œ`ÝùVàæH_q}<-ÿ[éôOû‘(y®Ü!7�wò0†XŸR¯Ô378Ís]Çó–‰öF Œ³h'ùïå俬=œþÒãÞ%Ò×/ÄËÞ®ÛÿÙ/ó親-ŒßNèÄ\Æ2^æ±�(”±P ”Z(”¹�¶—6´MJ’¢ Ψ€ˆˆ O|*ŠÏ'ˆŠ"Š€ÃPTÄ QEQÅ�ÛPá-øÃõÖ[Ë?n²¾›_Î9ûìsvr÷¾'€9`�#ST ªQ�rº47Wrºc¢ÏÊÙ›Qâ\­¹f#²"Wë¾ësãdŒ×g�L}ÞêÜŽ Ç}Ö31Òq -¹Î8=WÓq†æ¦l=Ó®Óö«˜±i)j‡Œˆ"ýlÃ@ç½G÷a¬s�¶Çª]C WÉŽ_ô“�xÇnäéÙ5×¹Rï³<ŒwQ›|ŒÓû-Ý9 'ÃDZ⿨£ç‹ÿKAý/ù Úÿ÷’³¨6TÓÂ Òø?i‡-[¶lÙ²eË–-[¶lÙ²eË–-[¶lÙ²eË–-[¶lÙ²eËÖßN¢–c9¢Q‚Hêè{šöŽig¨]$Æú ½²U•LµÈ³¨å¤0;Ð3ÂìÔ1W†¹¢°0ÌÚ¾,Ì‘HÄmaŽÕö×*Y/ÑØfêš> -³ Ž…Ù�úø5ÌNIJv˜«!š­Â¬¾Ø9Ì‘¨ÃaŽB-¦†9õ9ÆbêzºÓ´8´«þ\a±CÙÅ=;•ûJeª)'I_‹#Bc¤ÜâÈ�­¬U;:�:S„ì·8B¹–´8írÜâh«ý´ÅÕC¿‚#Æâ¡1Ž&×±ÚÛ[\W9Æ‘dqlh~GŠÅõ¬1Ã-®oÙæZÜÐâ|‹ãB¾^‹›[íóCe­Ó±0Ä5¨åXjqŒ5fÕz#!9ÙŸèr%ƒËËKM#ÕWV^4ýFº· ›êï“`dz¼¾àÜrÓœf„M’Œq¡–_iEÐãó,ƒfé3è)p�5‹*JÝþªïýŒÞÝ\…‰.3¡Ÿ‘èJHˆwõŒwõªê>ÛYÕP†'`¸ ¿Yä èªÌB#èwšen‰á›yîª,2=Eî`…ß èVÊ|^£êû芲|ÝXN¹»Àã-ÊöûÊ}þÐÒÝ¥FeW`”Ïë h·º ·Œö©Åno‘ù?Ìúç^Ì@Шðš†.v…i.-÷–ê§yÁ�èÖƒ†éñ†Td꾋L¯0&¸ý¦wžé)(6½jê¿°íÍê(ä§ Øã ‡ÏïúŒBÏÅ|¦ÎWd†Çš¦¿ÐÐ�š¥�2S£=Çí½°åb¿aƒg}˜êEÇú+ÊûKLcæš‹¬O7Ráu[+tW­¯Ð}ÑX˜!/:1-'fÙ¶�“ §´x»å|ÛYqÞUkö" ~Â/¾P Ÿ^ËàF)ÆÂD*”Üçõ„ú<é �4]G]\‡\G\§wÎßÚxצsfò(�ïåv¶p&83œiÎzM>·'¯Ï¢³r"’#:Dt�yž½T&é3¦Î|�—æùPÖ½«�š¹Bù*J³l ª£jj^­­y¶®fázšW !¡1âÐMÑ ÍÑB3»�Vh�6h‹vh�èˆNèŒ.èŠxtCw¸� ù¼z¢’Ð}�Œ¾è‡þ€�„ Ƥb(†a8Ò0é‰ db”î$K+Ê�PÆa.ÇZ‹®ÂÕ¸×b®Ãõ¸A+Ò",Æ�X‚›°TkË2Ü¢µðV¬ÀJ¬Âj:´®¬ÁíZQîÀ�¸ kq7îÁ:Ü«uå>­'÷c=ÀƒxcÁF<ŠÇð86á <‰Íx -[ð4žÁV­7Û°;ðžÇ Œf ^ÂN¼ŒWðªÖ¼]Ø�×ñöàM¼…·µò½ƒ}xïá}|€±_ëßÇøð)â3|ŽCúý‡q_ákÕšø ¾Åq|‡ïq?àGœÄOø§ð‹ÖÈÓø ¿ã µ–²º¦÷š¬ÅڬúŒe=Ög6d#6f›°)›±9[°% ¶bk¶a[¶c{v`GvbgvaWƳ»ÓÅ&²{²“Ø›}˜Ì¾ìÇþÀ�Äæ¦r(‡q8Ó8‚éÉ frG3‹ÙñÌá8Žg.'p"'q2§p*§1�Ó9ƒnæ³€…49“E,¦‡³XÂR–ÑKË9›~ij¬à^ÂK9—óxçór^Á+y¯æ5¼– x¯ç \ÈE\̹„7q)oæ2ÞÂ引+¸’«¸šÿàm\ÃÛùOÞÁ;y×ònÞÃu¼—ÿâ}ü7ïçz>Àùæ>Â�|”�ñqnâ|’›ù·ði>í|–Û¸�;øŸç |‘ÿáKÜÉ—ù -_åkÜÅÝ|�opßä[|›{ù÷ñ]¾Ç÷ù?ä~~Ä�ù ðSägüœ‡ø¿äaáWüšGyŒßð[çwüž'øäIþÄŸyŠ¿ðWžæoü�gBqˆSªI„DJ”DKŒT—RSjIm©#u%VêI}i ¥‘4–8i"M¥™4—ÒR i%­¥�´•vÒ^:HGé$�¥‹t•xé&ÝÅ% ’(=¤§ô’$é-}$YúJ?é/d  ’,C$U†Ê0.i2BÒe¤dH¦Œ’Ñ’%Ù2FÆJŽŒ“ñ’+d¢L’É2E¦Ê4É“é2CÜ’/R(¦Ì”")�Ì’)•2ñŠOÊe¶ø% A©�9òÃõ 0}»ûj[WÛ¶mÛ¶mÛ¶›¦¶mÛ¶mãò3=¬§õ²ÞÖÇúZ?ëol  ²Á6ĆÚ0n#l¤�²Ñ6ÆÆÚ8ol¢M²É6ŦÚ4›n3l¦Í -˜`³fÚœ€Y67`®Í ´ùA¶ÀÚ"[lKl©Ú2 ²å¶ÂVÚ*[mkl­­³õ¶Á6Ú&Ûl[l«m³í¶ÃvÚ.Ûm{l¯í³ývÀÚ!;lG쨳ãvÂNÚ);mgì¬�³óvÁ.Ú%»lWìª]³ëvÃnÚ-»mwì®Ý³ûöÀÚ#{lOì©=³çöÂ^Ú+{moì­½³÷öÁ>Ú'ûl_ì«}³ïöÃ~Ú/ûmì¯ýCBÀ‚#$B!4 ,Â!<" ""!2¢ *¢!:b &b!6â .â!>þC$D"$F$E2$G -¤D*¤F¤E:¤GdD&dFdE6dGäD.äFäE>äGD!FE1G ”D)”F”E9”GTD%TFTE5TG ÔD-ÔFÔE=ÔG4D#4F4E34G ´D+´F´E;´GtD'tFtE7tGôD/ôFôE?ôÇ Ä Æ Å0 ÇŒÄ(ŒÆŒÅ8ŒÇLÄ$LÆLÅ4LÇ ÌÄ,ÌÆÌÅ<ÌÇ,Ä",Æ,E –!˱+± -«±k±ë±± ›±[± Û±;± »±{±ûqq‡qGq Çq'q -§qgqçqq —qWq ×q7q ·qwq÷ññ�ñOñ Ïñ/ñ -¯ñoñïññ Ÿñ_ñ ßñ?ñ ¿ññ� A#HŠÎ� ÅРð ÇðŒÀˆŒÄȌ¨ŒÆèŒÁ˜ŒÅ،øŒÇøÁIÀ„LÄÄL¤LÆäLÁ”LÅÔLôLÇôÌÀŒÁbÉÌ,ÌÊlÌÎÌÉ\ÌÍ<Ìl˜ü,À‚,ÄÂ,¢,ÆâÁ²)ÉR,¬›²,Çò¬ÀЬÄʬª¬Æê¬Áš¬Åڬú¬ÇúlÀ†lÄÆl¦lÆælÁ–lÅÖlölÇöìÀŽìÄÎì®ìÆîìÁžìÅÞìþìÇþÀ�ÄÁ¡ÆáÁ‘ÅÑñÇñœÀ‰œÄɜ©œÆéœÁ™œÅٜùœÇù\À…\ÄÅ\Â¥ ä2q9Wp%Wq5×p-×q=7p#7q3·p+·q;wp'wq7÷p/÷q?ð ñ0�ð(�ñ8Oð$Oñ4Ïð,Ïñð!ñ1Ÿð)Ÿñ9_ð%_ñ5ßð-ßñ=?ð#?ñ3¿ð+¿ñ;ð'ñ7ÿð/ÿ)@!d‚(ÉR¡ZaVá^Q‘YQUÑ]1S±[qWñ_ÿ)�*‘+‰’*™’+…R*•R+�Ò*�Ò+ƒ2*“2+‹²*›²+‡r*—r+�ò*Ÿò«€ -ª� -«ˆŠª˜Š«„Jª”J«ŒÊªœÊ«‚*ª’*«Šªªšª«†jª–j«Žêªžê«�ª‘«‰šª™š«…Zª•Z«�Úª�Ú«ƒ:ª“:«‹ºª›º«‡zª—z«�úªŸúk€j�kˆ†j˜†k„Fj”FkŒÆjœÆk‚&j’&kЦjš¦k†fj–fkŽæjžæk�j‘k‰–*PˤåZ¡•Z¥ÕZ£µZ§õÚ �Ú¤ÍÚ¢­Ú¦íÚ¡�Ú¥ÝÚ£½Ú§ý: ƒ:¤Ã:¢£:¦ã:¡“:¥Ó:£³:§óº ‹º¤Ëº¢«º¦ëº¡›º¥Ûº£»º§ûz ‡z¤Çz¢§z¦çz¡—z¥×z£·z§÷ú �ú¤Ïú¢¯ú¦ïú¡Ÿú¥ßú£¿úçÂÍát¹{Hå¡=Œ‡õpÞ#xD�ä‘=ŠGõhÝcxL�å±=ŽÇõxßÿóžÐybOâI=™'ÞGJOå©=�§õtž>ø"=“gö,žÕ³yvÏá9ƒ�’Ûóx^Ïçù½€ôB^Ø‹xQ/æÅ½„—ôR^ÚËxY/ç彂WôJ^Ù«xU¯æÕ½†×ôZ^Ûëx]¯çõ½�7ôFÞØ›xSoæÍ½…·ôVÞÚÛx[oçí½ƒwôNÞÙ»xWïæÝ½‡÷üŸÍª lÛ -Â]›Üw±(d3CÇŒiã¥n²¤ ´k�b+¶bEri“23�™™™y혙™™™–žÒí�ïûî=|Ozgê¥>šJÓh:Í ™4‹fÓšKóh>- …´ˆÓZJËh9­ •´ŠVÓ‰t�L§Ð©t�NgЙt�Mçйt�OÐ…t]L—Ð¥t]NWЕt]M×еt]O7Ð�tÝL·Ð­tÝNwÐ�tÝM÷нtÝOЃô­¡µô0=B�Òcô8=AOÒSô4=CÏÒsô<½@/ÒKô2½B¯Òkô:½AoÒ[ô6½CïÒ{ô>}@ÒGô1}BŸÒgô9}A_ÒWô5}CßÒwô=ý@?ÒOô3ýB¿Òoô;ýAÒ_ô7ýƒX1%(`”!†8(G*Q…Á‚¡†j¬�áØb#lŒM°)6ÃæØ[b+l�m°-¶ÃöØ;b'ìŒ]°+F`7ìŽ=°'öÂÞØûb?ì�p ÂÁ8‡â0ŽŒÄ(Ô"‰#P‡ÑHa êÑ€#ш&ŒÅQhF Zцq�£1í8Çâ8�‰8:�F2:‘E -º�‡ŠnhÐQÀ$0aÁF&c -zч©˜†é˜�™˜…Ù˜ƒ¹˜‡ùX€…X„ÅX‚¥X†åX�•X…Õ8'ádœ‚SqNÇ8gálœƒsqÎǸáb\‚Kq.ǸWáj\ƒkq®Ç ¸7áfÜ‚[qnǸwán܃{qîÇxa Öâa<‚GñÇxOái<ƒgñžÇ x/áe¼‚Wñ^Çxoám¼ƒwñÞÇøác|‚Oñ>Çø_ák|ƒoñ¾Çø?ágü‚_ñ~ÇøáoüÃx=ȃ¸„K™Ì\Æ1Žs‚˹‚+¹ŠóÊøš×çá¼oÈñƼ oÊ›ñæ¼oÉ[ñÖ¼ oËÛñö¼ïÈ;ñμ ïÊ#x7Þ�÷à=y/Þ›÷á}y?ÞŸàù >˜áCù0>œkx$�âZNò\Ç£9Åc¸žøHnä&;`Í€µ|7s ·r�ãñ|4Oàv>†�åãøxžÈ'°Äœæ ËÜÉYαÂ]œg•»Yc� <‰ 6Ùb›{x2Oá^îã©<�§ó žÉ³x6Ïá¹<�çó^È‹x1/᥼Œ—ó -^É«xuBW35Ý’'Ù’Zé’‚dXФf”ÎÎr—›vw·d)ºæmU4KÎ’w‰!e”tñ1©P0ô)^˜’¤mèC&ÙNTSѲj‡dÊ#œ=Už+Ó:PÓ-¥ ]ƒä[ªé0ä™$Ï FÏêšœ‡äÛø¨´b¤íîNUžO •Ñ-)�–5+–!Õ¦%7dÆ3H3ÉÅLI?“ì™XRD�Cˆd1¿ì[JúeÏÄë"Õd#ÕÔ‰XÙr]ZÎ(ª*q¶(+¥mKŽ�Ž„É \2ºC2JrÎ¥,EÍȤx©b#JѦŠE*¾˜3PéŠ�‰Dí˜ëƒ2òA ^¤z†‚u5\÷›V=kÍ©BêF?†æÇh bhAŒF?†æ §IÝ´ ½�“ÑTìB/K“,ºgÊ›r¶–• »[•l«\�2jös~Îæ §älös¾iñw›¾æ-ü:­A+ˆÒê?ny¦¤Õ=Ë=“6ÿLlÿLÚŠ]ØÅ.Úü.lÏ”¶ÎGPj»¿åmý:²£ mÅ“´‹¯ûøH•“#xB÷ -Lí~�}ž‰µ‹“ê a¢%­;_s‘˜QÒ%V„°ó¹÷Èéîö; \$uÝž(ó»w]^ãH„™Ï(²áܦƒáªáØÊ¨ÐîæH±âi¸9|mTmꪒ±MUײz�l¨R¯ãu¾zC—¬D]´›l”4D‰%õQ’�’Æ(Ñ¢¤9JŒ¨j½º•5d9_>É–M÷úôXÌÔ;­\¯óêkìh£Ê¦Ù•È»Kš*iÎmZê5T&»¦œ)5Ó¹ÉR©®dçš´lC“3Èéº+AÜë[Ñ\¥«<ÉÍñ8W¬«DÊ Ï JjÙA²æü�Ð WÞ²št¯áhª¤c#厰NÀZS!Œ·ç„»=²C `eJ1�lV¸T/…0© -Ø- À²¦Ð9VÄNš!l 7”µ‰õΰÐú\˜7ÞjŠF‰â-bOyK.-XÕhÉȘJ6¬,1A6«ZœÓŒ®Nç&E¥BÑË„¢¿³fTDÅ}ùû";„üÊ:òçENYÈ/ ùe!¿: "¶,ä—…ü–�ßëBþ|D~+":"¿‘ßì'n]ù{£ò›ëÊ/ÿG~E¥R¢A%„ñº.QRVà²TˆÂÔ±1b9"¡Õ±³7„ñ†H5‚#X8q׊CN´šB»„!ñúÈùÎôE"EýW´õ{]*ì~4Qyá™\—“í‚{1…žìºž¡ÞÅè_^R‡Þãï²,²!‚J6玂jÏh°1îü} Ò0÷²sÿ€ºw`°a¸³áÿüiç~5¤EËØnz/H‡¬ê“]æ�¶�u+šm,îÜÓ® -FXàH¸s, ýê ƒy-`CÄè 7xtÀªûÝãáoƬ´�9¦8*½}bV»ÿ³ò²w”Â;Ì÷öŸœåŽn"P•(èÇÍé,GÆM,¯;x£|hÁ92³ wËšâ͸Ù®²®Æq%|N˜8» —q;ôc ¦aš&}€L7¼Ì‰‹ØVƱ ɯ¿’ª$yÉCòU•K¥O¥¥$aÛ�ˆÄ:as’ðˆ«‚ŸFìàøä⫘U1"kbD é!c÷ Ë!p«ùXêBÄÐ %ë€Î@­Ç¨ºqÎ^¥²^vÔ¿^A &î"�xÉD;"!µ&1=Ê ‘UµöŽý­×€­YÀÑ|™ðÅ~FÖÁ³6=yµ9Æ ËqÌI)%¹ú€LÅ�F¢Ö„ n‘†©"µ'qÛIV¼–îxK¿:’5¼šÊw´X21rd,6Û|"®$h+YŒ—Š×š«3ÒŽR‰Ø'< ñq„†$H#á»\‡¯<€‹ËzÁgò­Ê™uäžHhg³Ðœ²rR�ŽÛ‚šš>2¡q[P5Êýä èT�’Ã�¿ÏÊ,m:”´6àb$‚uµyÁ±ÔWŽ(<š¸úcK‘IDNŠTÎw#±1bJæb…A8ørtÞœ²Y‹“déwDîØ†Ë4‰Ë<:#^#^ ~Cì#^6È”±³ÃÓóc#�é¼k4Z.È˜Š—' ØOµÿâ9â…»¡bàl’øªÙžQÅaËt� u™Ï„«óSœó®’.ÍRÇÈ8žƒ~Óîx7shŠŒ´X$–MÌ_‰¸1*ï“ãºÞýh ^Õ…“Ü´aí×;Õ+\-T.ÿaûŸž#~’ç¦O‚©$gÎ>mTĵšœ#ž ž"ž!bè³ Äoˆ}ÄKÄ+Ä¢‡x�'Ôù|XÍö"°5¡7á+±zÆss$‹‚—Q{j*2†]˜‹Œ3qTW‹8äYÙ´Ü‹ÒPî[y¹Q›ñsÆ ÚÓXY»‘ØEÿ¥$ø_ÈÄtÅ{ "æ�6�¢©·Leéï4tåÜŠ]­Û¸1™Èi×!Èbó�lÔ¦|ψ£]ìçæ”ø1�|ÊG�wÕ‡båñ�Dõ§WBóI¸€­qÍÓ%öŽ~�ìüÅ6Ž@ôdvÀñž™€øµåƳõ´¢FR ð&TàÑC¼®s)ÑÔKmj¨M µ¥¦¶´Ô¨¥j‰¦C3Ô’"µs¤vŽÔνNâót)/"Êkð¢.µÁpX¹û»r÷V Þ*÷Wîß*Ñ›ÓWp À†`�*èŽô…® Ý4¯»æ»º¹i^5_U0ûTóU]¥ìW¥vû…žI^oöE�@‘±Þ÷P ç;Œgð`ùò™˜ãy�vP‡–žÕœ7Híà¥2ØT&绢s¯Ø:‘‚f_ž@êC“±Ö÷ UØÂžQ}};m-¹}s™“uË%9µá™Ô´ðò-h¾Å­iÁL‹Û| –o14-¸i1Ì·àù¦ElZ<ä[Äù#Ó"5-FùiNun`*}˜Jy�!ž#^ ~Cì#^"^!=D8Ì�Ž�¡˜y^oA>öçöiØ77zX ^Š%JÆò l¾±q©Ÿ�W-5/Íå¿ùjÄÎÕ˜ND|¢–IgœÕš{bcL쉉=°±'F¬0Z}‚BoPxeô&C·™š§6Í*ø7Í(=¯• -Ï>SZÔʉ©‰ïЬּ¶£Ÿ±ö:®Íðˆ¸±^¾ÍÑ�É‘o¤}ÎJõ�!…Ö�}tµüŒ|›³²{›?YNu~Ìáøa¸ÌÍÌý°377bãÎxZêž›A^oÞÙHö�Ù»+ÎMP08?�ckî§ÍghóùÓð ó{ëYÏ{ãYOË,²Ìî‹Ì¢âªª<+^-neì:Ó.Ï©íavÑò¬2Ì®`žQœ_ ÈÁ/;²…¬Ûñ>˜ñÆf¦ -3fêÁæ#¶â£�¿´ñMü¥‰ÿ¨hŸî² ?ª“3ó=¯ï™˜Ö´,™šOVL,Ÿ'Ã'1óûd‘Øù}*ÎoR0Ø{¨iNm�2;.µroTŒ›×Í(³nR+wG�ÝM7ÍëÎ?Ê×yWÐøÇŒô]KÎo¸¬~êYÁîþmΗ•–š¿mmf¿Mä•Éáëùa=ÿ˜˜&æ³õ\±õb“ÐÚX¹ñbúÚ˜¾^ì|m¬èÛã'Ñ�UW²ÒU×òß]b#Yn}™˜È}Ÿó9y�£&1b¯où@Á ECÆC¥6ë¡ Ÿ2&ð'²Å˜�¥&2Kö3šù>)ÛZ}uþÃ:"ìŠÚñf«däKò:¶S°�’]°ën]’SÅEPKÆÖôlžm|ª¬Q³U’L‹¯˜uZ̺·-ët[Ö½bÖi1ëÞ–¬Ó²­ykÇÆŒ(.·: ÌHC#qÓzh[sËnX:/†Å\ðb.†ÛrÁ·åbXÌ/æb¸%|K.Ähb(Qr4ZTVx—p#ºÊjH¸<§BÕ9´QbGYuožÕÄÅ]K©á3²S+Ž,µÔŠ#Ë2µ,Gy–ižåȲL-ËQŽešÕœg8Š×ðÄx6œ×†ó³ ¿¶{åöÊ׿¿6ùÿBUاeÛ^ÎOUÕ=Z2©'ÄÉÁ"“U= iÄ…qø -_/=Äâu[MRÂ#*œÚêôC<®±…§[^¡>Ðökô×ß5¢}€úàÚ‰Ò�ƼÅý�Eï4·ùéèð¸ï޹Ès’Æ�„|Ò! ¾Lb¾ð©Ðôc,2;y ”ûÁÉâ·ÝL)†M”­àê\k÷³�)’SÔ ùLŒz¾çIBlLì+t�–L_Ë^*Ôײ+ØËþªÏ-þð¾»ÍòcÅ•U”ãÞ°L——é–½€VÙìe [ö�eË’©=Ê*Í(��l�Ž#uP@ Ubõqì¯HC•Ú€N“ƽ–:Q :›ù‰¼ÞWCioÜ-CÙíBmˆƒÿó]®½m#WZ§ŽãKâØ±›ý …x'?òÚ4E»F‘ýRP-qM“^RÞÄùõrR¼¥_ôòò¼ÏÌh/Ï2c¡\þ}—ÔÛéáð4ÚŽ3¯Ââ)ÉÏb›;¯úÑÛÏ«¸,“MÃøâsý…!šsÓ<žåÕØ«ZÄž]œå[ùu×¼J4‡›ây•Õ�wÓL»mŽ.ÝÌC34D£Íh'φj.{Ëè'ùb>ÿJÜ ŠJ’l£QÅñ¤zÄžÙ¨j¨&Õ o´±%Õ\ œ7Û|@}ëç¡ä]êÜ�Pü]ê\ü\uQü<ê½èDÜ„SSw4*|¥Ò§Ò§Ò÷QFä3Ç@EO{5äz�x -Êõ×{:ÊJzŒËkÇE½O½O½O½O½O}@}ÀÊœ8R¶ãÅ7`^!¼�8"ޏ.¢>jëuö¤†¶±äiª‚ª¨\_M7¹®UÉÑ4Îkìy]®§¦¸²�äNRme*¨Šj´[Èuœ—;Q¨Îù¶-Û|ë‹�Ñú¨‰;õÑ…k¶þøYø[ð-|-|-ÆaqÛ°žÏ‚gÁ³àYðl86ó¶áÛÌdžo÷áÛðmø6|¾ ߆o÷%_Q¥¯¢+¨Šj¨~Zd›ÿÊã5­R£á¡I–¬ح‡÷Z<=Äý*ß7 UY\`ø·Ç´,‹ò¸õ÷öÅ“¸½¯ÐÝH}ÕÏ�óUšÅ«4ÎÖâ¶÷pòSû9Y¶Gï’jWýöïë»sY%›×âU-‹÷i~œÊ§È{ñ Ë’ªúU†µíå6+öû8«Kf?N2­ßIyŸV»¦ª;jÏo«u™>5sU"ùPª *ª¡:j &j¡6ê .ê¡>Ê[Û‚·¼os -|¾_�¯ÀWà+ðx -<žO�§â¯â¯â¯â¯â¯â¯2?•ù©ðTx*<ž -OmyÌOe~| ¾_ƒ¯Á×àkð5ø| ¾_ƒ¯Á×àkð5ø:|¾_‡¯Ã×áëðtx:<žO‡gàoàoàoàoàoào0?ƒùp ü�Ö—ñ›ø›ø›ø›ø›ø›ø›ø›ø›ÌÇ„c2žÉ|L¸&ëg·à[ð-ø| ¾ß‚oÁ·à[ð-ø| ¾߆góáÙðlx6<ž φgóáÙðlxvËc¾6óuà;ðø|¾ß�ïÀwà;ðø|¾ß�ïÀwá»ð]ø.|¾ ß…ïÂwá»ð]ø.|¾ ß…ïÂ÷à{ð=ø|¾׃ëÁõàzp=¸\?????????¿€ñŒ7À?À?À7À7À7À7À7À7Ä/Ä/Ä/Ä/d¼!ëâââââ¶þŒ;Â7Â7Â7Â/Â/Â/Â/Â/Â/òßÄÙÓ.n¾.Î’§*pMð:ÙËìIZptV<¦õÇ¢ ž{¿)“­¼è�{ð û~aë·ìü>÷ýîú~Ÿ;¿Ëß~ 5™kȃäy™Ü‹0_'�qùpºŽËD¼TâÃíÍ>Œ4ΓýYö˜n6YÒ|åeâ•ã:‹W›X>þÅKCóø®Y’ǸÛïq™Æo{‰â[÷/¨Ç’~'š²ëqv\+Àiüaœ˜Ô6ÙºVŽ£ù(m.º8Ä£Ó îz75W£ä¨°a]�âqáa@õŸÓ[¨‹C\Ÿ¾=„ñB÷²OÆer £XòFÉQ¡è(vmvX¸ó.¬OÞtÑ`”‡š†5 Ÿ÷Ãܰª�_ ÃQU7¾÷ìéÞZ^RõEdcÖ7ƒ¹�¦ß›i~êÐ ìvššqèæÐø°Ìïú™ú’�ýÄ`ƒâfP7“Lãùa’ž”7#º™d¦åÝÐß¹ãŽwGïŽ;~œ�];ÎŽkeÇ�“ÚCƒ¹£Žw‡ïŽ:Þ�ëxw¦ãÝQÇ»sïÎtürÔñËaÇ/ÐñËQÇ/ç:~9ÓñËQÇ/ç:~9ÓñËaÇ/¿œïøå°ã—3¿œvürØñË™Ž_N;þnÚñƒTÓñƒÌ°ãï&m|;MÉ~�槲㧩‡CÇßM:¾Ÿi:¾Ÿvüݸ‘o&Ù²“ô¤\vü$3-ï†^¿þ¨ŠüÌU•…JìJ•Ÿ«"6PâEsýB“Ÿw Õ Ž6E¾=‹Ò}¼~)Ó,K×g÷½@^&¿B…¶¶v TùSýÂRÜš§_â}kqúr8¾ Å£#½O“M—IÆ™ÓViwüt8¾üò\eé~Ÿ%]æeœùØ]3výøò£3͘}ù¡)TAUTCuÔ@M©±E,?<…Ú¨ƒº¨‡ú׿ì’MR­“|“”í`®¿Ï$¯~™É}ŸÉ}Ч¹‡™\˜OsÉL.¬f®›Éý<3–ýLî§™±ì¦¹kneÖ3ɳïv‡�[õ‚Ë;ñN§ÛÝaï=�3ͦÖå'‡Pë£àþ.Þ¸ÓuœÉ7ên÷¬tæÏŸâœxøÁ‰ó0ßîQÒ�n»QknŸçó—ŸâU\íÒnE.Æ™z5ãÕî¾säýÕœ$ÿÚ_÷éÙõÿ;{þs²¯³Ú÷£‹0ßÅC&ÃPÜäÄÄvqv_¦ùöèK±Ý½ˆŸ ÑÌ«tÛ]÷2oäÙq7߼̦ß.¿ïÒ}Õm�·é0¾åüf•mKñÇuùt>/otvsSXÊUPÕäÖò#¶XˆÊXÕ î«.ê¡> áiýŽÅ­ãüx)7ÁÅÏâ±,î³ä[½žGÿyÉs|TEMÔB¹Ÿ·�uq³.êoWñ¸É·ÏY\ÖÿÆc±y?J‹”¬ iÔˆD: -!‚19suaø¨�:¨‹z¨�šh€ÊÔàið5Æ£Á×àk‘ƒº¨‡ú(Ĩõ•ÿŒfq�ÅuVp¼’«ÎÊi(óÖùÇt櫇ht²ÿZô+‘ʈTF¤2"5$Ý«}‘'+ñ\ý&z'z¤þCú¹¬ø*R¤¸âœð1Ýô"y)¤èäKõ‹müŸü£;úW{tÁQ^ß¿’ÍÍ0¬žŸ’2-Êór'zl]ï<á|R­w_ã:¸LЧ$¯ßUÊ*Ù4óY @.£ÙnH&¯Ë¿;äE"\(¨Šj¨Ž¨‰Z¨�:¨‹¶þ> !IUà+ðø -|>ïS¡Ÿ¡PÁ_ ®Ó_g…ø=mròøÍZl†d_ßKyóÏø¤Ëâ}šßŠ;M\®wír¯ñ×­WÕoÏâoo÷U‹ŽÌÚ˜×:v¹ÎîÕÛ×=v·AWt…Áõ»ÜðNÃï»vðǧI/ÇGñóZœï{Eþ:áàÿã»z~Ú8¢ð8x�¤%”TÐÆ¬#J€Ð¸Û»¶s(ÞewIµ!�B+lXÃcSc;�^rhQT©m$¤&RšK#JeL”nƒ”þ8õÒKo½µj«þéììg )Ò{ßÌ{3ß÷vÏÎ,ý'±Êg<Ü�c+?ðÜÙÙuÐÞ>·î¸>¶<½¸µ<½5o_Bì:Îïßy@æÿEQÛ®°}ÛZœgìù™lz -‰h²�½ß©¹g2V Œ(cÊX�2V�Œƒ-?‚-ža &€Ú¾L®05×T¦:Å!3÷DÂIô“õ~z¤a »¡§ŠåeË.¼€ - *¶Y-êËÙÅ4‚q`¢™oç‹öLðªØ]U¥ñJ�çÔx$ ¤†Ñ×û`Ê@ê@hzHÁKë¼ `¨5à0ÆCŸBŸBŸBŸBŸBŸ‚—‚·~UÂÖBc¸Jy¿ª‡�Ê@&€I Ú¡/ïqðšÞ#È}±x -FZï«z߆¨(†Šb¨(†Šb˜ÃüX}¾ê@Â}”û÷2÷ -÷qîÜ'¹W¹×¸æ^çÞàÞt½Áù Îop~ƒóœßàüç78¿Áù Îop~ƒóœßàüç78¿ÉùMÎor~“ó›œßäü&ç75ÁÆa”Ù3™Ùà Ú)\#÷„ϘÝeÖ(Øä†°Äì:³/™ù¶[«Ì¾'7j>1õˆ, ¯‘S©VŸt¾£Kêli•~sHÓƒ;Òï�m‘.á€ð'骚Õr—|%L ùZè%ˈÐOnmä¤I–Z˜]cÖÈ=!«µîˆô˜¼)ôú›sTèö‘‡Ò¿ô¸ôuHMú¹Ïñ1ø©›õR/K?îH?f¤ÇÌÖ¼ÔýÇ�³ÈI7»r«&}pK|îA9À¦>”æV¤iÊógVœ†µš”dù ©VII‘äÀßÒ[}ŽHXÿxàŒtŒþ*½àÂŒ´7uP:¸)�`©î€Ñw‚Ù¹On ÇÈíZï)ék²ÇÝH¬8ä£Í‘~Úë�å”2Ò¿20Ò×;pFê0ûúXûÂ/þ�ýøUÄ?èï÷õñ¿îïÛÅ6ñ%q¿Ø"Š¢ß!ßÔ†¤¦-²& ±×²¶)6‰ûò- ú¶È:®'úÄQ;œ'<"t8díA›Ûb�‡M¼Õä�õM/´ž’|nËÇm ®gŽy¡�ˆ Â)¡J>uš„O^­ uµ¿}0iê/r“»üà‹ÿ:I ºrzìbõ~`¼qOãÛÉÿ™èý•ÊÌYÚààésK›•…ËYÃê1&{ ‹ÙdõFe¶³z- n\^pÁjãÑÉÌÔ¬‹i«ºÐcéÕË=zp£’Ý#�uÓ•}CÈç/ndS–^«¤*FOZßÌhʼn]Z×·µŠÚdšKVtµ2{¤'ÜtÆÕšpµ&\­L*õÜç4ì1m±ÄVgаO«ýcÕÑwß¿X ¦Çu‡ÜcA½üŸ‚ôb endstream endobj 65 0 obj <> endobj 66 0 obj <> endobj 69 0 obj <>stream -H‰|�_HQÆgZçn꺑îHYm¶7ÿ­›áŸÐX qÍÂ\C Rgw®ë�ÎÈÌhøRöPš¦²[,BA/AEŠBùR”=h/EóP„Qoç®wƒf¶—ž:çw>Îw.—çòvq<Ïï?>Ûuª¥üô„®Hr§®Uv‘ÄØ°¤;¦Ÿäé¾> endobj 48 0 obj <> endobj 70 0 obj <> endobj 71 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 16.0 %%AI8_CreatorVersion: 16.0.1 %%For: (timothy rudge) () %%Title: (celloverlap.ai) %%CreationDate: 07/03/2014 21:11 %%Canvassize: 16383 %%BoundingBox: 29 -261 444 -39 %%HiResBoundingBox: 29.3604 -260.4097 443.9658 -39.7861 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 12.0 %AI12_BuildNumber: 682 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 27 -292 448.5 0 %AI3_TemplateBox: 298.5 -421.5 298.5 -421.5 %AI3_TileBox: -165.25 -425.5 617.75 133.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 6 48 2 1444 867 18 0 0 -4 37 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:-8 -817 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 72 0 obj <>stream -%%BoundingBox: 29 -261 444 -39 %%HiResBoundingBox: 29.3604 -260.4097 443.9658 -39.7861 %AI7_Thumbnail: 128 68 8 %%BeginData: 5676 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FFFFFFA8A87DA87DA8A8FD78FFA87D7DA8A8A87DA87DA8A8FD74FF %FD04A884FD07A87DA8A8FD70FFA87D7DA87DA87DA87DA87DA87DA87D7D7D %A8A8FD6DFFA87DFD0FA87DA8A8FD6CFF7DA87DA87EA87DA87EA87DA87EA8 %7DA87EA87DA87D7D7DFD69FFA8A8A884A8A8A884A8A8A884A8A8A884FD07 %A87DA8A8FD1BFFA8FD07FFA8FD42FF7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA8A8FD17FF7D52A8FFA87D27FF7D277D7D7D %FFFFFF7D52FFFF7DA8FD36FFFD1BA87DA87DA8FD14FFA87D52FF7D7D5252 %A8FF52A852FFFFFF7D7D7DFFFFA87DFD36FF7DA8A8A87DA87EA87DA87EA8 %7DA87EA87DA87EA87DA87EA87DA87EA87DA87D7D7DFD11FFA8FF7D7D7DFD %04A87DA8FF527D52A87DFF7D7DA87D52A8FD37FF7DA8A8A884A8A8A884A8 %A8A884A8A8A884A8A8A884A8A8A884FD07A87DA8A8FD0DFFA8FD04FF7DA8 %FFFFFF7DA8FFFFFF7D277DFFFFA85252A8FD38FFA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA8A8A87DA87DA87DA87DA87DA87DA8A8FD09 %FFA8A8FD04FFA8FFA8FFFFFFA8FFFFFFA8FFA8FFFFFFA8FD3CFF7DFD14A8 %5352FD0BA87DA87DA8A8FD0DFFA8FD4CFFA87D7DA884A87DA87EA87DA87E %A87DA87EA8A87D27527DA87EA87DA87EA87DA87EA87DA87D7D7DA8A8FFFF %FFA8FD05FFA8FD50FF7DA87DFD05A884A8A8A884A8A8A87D5252FD05A884 %A8A8A884FD07A87DA8A8FD5AFFA8A87D7D7DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87D527DA87DA87DA87D7DA8FD04FFA8A8FD %54FFA8A87DA87DFD16A852F87DFD06A87DA8A8FFFFFFA8FD58FFA8A87DA8 %7DA87DA87EA87DA87EA87DA87EA87DA87EA87DA8527D277DA8A87DA87DA8 %7D7D7DA87D7D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA8A8FD32FFA8A87DFD05A884A8A8A8 %84A8A8A884FD06A87D7DA8A8A8FD067DA8A87DFD27A87EA87DFD32FFA8A8 %7D7D7DA87DA87DA87DA87DA87DA87DA87DA87D7D527D7DA87EA852FD047D %A87DA87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8 %A87DA8A8A87DA8A8A87DFD05A87DFD35FFA87DA87DFD0DA87E5227A87EA8 %527D7DA87DA87DFD1EA8AFA87D52FFFD0AA87DFD36FFA8A87DA87DA87DA8 %7EA87DA87EA87DA8A8A87D5252277DA87D7D7D7EFD10A87D7DFD0CA87DA8 %272784FD0CA8FD38FFA8A87DA87EA8A8A884A8A8A884A8A87D527D527D52 %FD047DFFFD0FA87D277DFD0BA87D527D52527DFD0BA8FD3BFFA17D7DA87D %A87DA87DA87DA82752527D7D7D527D277DFD04A87DA8A8A87DA8A8A87DA8 %A8A85252527DFD04A87DA8A8A884A82752A8A8277DFD04A87DA8A8A87EA8 %7DFD3EFFA8A87DFD07A87D27277D7DA87D5252FD10A87D27527DFFFD07A8 %FFA8A8A8FFFD07A8AFFD06A8FD3FFFA8A87DA87DA87DA8A87D27527D7E7D %7D7D5252FD11A87DA8A8A87DA87DA8A8A87DA8527D7DA8A8A87DA87DA87D %A87EA8A8A87DFFA8FFA8FD05FFA8FD38FFA8A87DA87DA8A8A87DA87D7D7D %A8277DFD18A87DA87D7D7DFD0452A87DA87DFD05A87DA87DA8FD04FFA8FF %A8FD3EFFA8A8527D7D7D52FD047DA8525227A8A8A87DA8A8A87DA8A8A87D %A8A8A87DA8A8A884A8A8A8527D7DA87D7D27A87D7DFD06A87EA8A87DA8FD %07FFA87DA8FFFFFF52A8A87D7DA87DFFFFFFA8A8A8FFA8A8FD2AFFFD07A8 %7DFFA8A8527DFD16A87DA87EA87D7D5252527D52FD06A8A9A8A8A8FD08FF %7D52A8A87D7D277DFF527D7D7DFFFFA8A852FFFFFF52FD2AFFA8FFFFFFA8 %A87DFD1BA8537D7DA87DA87D7D5327F87D7DFD05A87DA8A8FD09FF7D527D %A8527D527DA8FF52527DFFA8A87D52A8FFA87DFD29FFA8FD06FFA8A8A87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8A852FD067D5252A8 %527D52FD067DA87DFFA8FFFFA8FFFFA8FFA8FFA8527DFFFFFFA852FFA8A8 %A82752A8FFA85227527DFD32FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FF7D7D7DA87DA87DA852527DA884A87D7DA8FFA8FFFFFFA8 %FFA8FFA8FFA8FFA8FFFFFF7DA8FD04FF7DFFFFFFA85252FFFFFF7D7D7DFD %30FFA8FD19FF7DFD06A8FFA87D52FFA8A8A8A9A8FD6EFF7DFD09A827527D %A87DA884A8FD6DFF7DFD0BA87D27277DA8A87DFD6CFF7DA8A8A87DA8A8A8 %7DFD05A852527DA87DA8FD6BFF7DFD0EA8FFA8FFA8A8FD6BFF7DFD11A87D %A8A8FD6AFF7DFD13A8CAFD6AFF7DFD05A87DA8A8A87DA8A8A87DA8A8A87D %A8A8FD6AFF7DFD13A8FD6BFF7DFD11A87D7DA8FD6AFF7DFD11A884A8FD6B %FF7DA8A8A87DFD07A87DA8A8A87DA87D7DA8FD6AFF7DFD06A87D52FD08A8 %AFA8A8FD6BFF7DFD07A8522752FFFD06A87DA8A8FD6AFF7DFD08A852F852 %FD08A8CAFD6AFF7DFD05A87DA8A8A87DA87DA87DA8A8A87DA8A8FD6AFF7D %FD0AA8AFFD08A8FD6BFF7DFD11A87D7DA8FD6AFF7DFD11A884A8FD6BFF7D %A8A8A87DA8A8A87DA8A8A87DA8A8A87DA87D7DA8FD6AFF7DFD10A8AFA8A8 %FD6BFF7DFD11A87DA8A8FD6AFF7DFD13A8CAFD6AFF7DFD05A87DA8A8A87D %A8A8A87DA8A8A87DA8A8FD6AFF7DFD13A8FD6BFF7DFD11A87D7DA8FD6BFF %FD11A884A8FD6CFFA87DA87DA8A8A87DA8A8A87DA8A8A87DA87D7DA8FD6C %FFFD0FA8AFA8A8FD6EFFA87DFD0DA87DA8A8FD6EFFFD10A8CAFD6FFFA87D %A8A8A87DA8A8A87DA8A8A87DA8A8FD71FFFD0DA8FD73FFA87DFD08A87D7D %A8FD74FFA8A884FD05A87DA8FD77FFA8A87D7D7DA87DA8A8FD44FFFF %%EndData endstream endobj 73 0 obj <>stream -%AI12_CompressedDataxœì½ër$Éq&úùu~ÈŒÜU2ã’žµ5«´³&rhœ¡–:²µ1�™Á -Ýh¡ÑC�žþøçî‘•  -IaÝ(deFfÆÅ/Ÿßþîÿùí7o6ooÿxõƯÛUów·»»º¸¿½ûÕŠ�®¾º¹ùôñþ‡~ñ»_®º~ÝÒI›¯ÆïÒ‰ÿtu÷ñúöý¯ø«uG_žãê_Ü_¿»½ÿñçÕݧ·?\ýrõ‹_Ò7ß^ßß\Ñw—W77·?]ÝÝ\|X_\ÿRïJÝì/îé„v8ký™k»°rݯ:tº»xÿÓÅÇ�×ÿq…;ùÑÓ±íí§÷o¯ßÿ°½ý÷_­Ü´zãúnBX½ñ}ý?®wõqvÎÚ÷mÀ‰í:´Ó@gûõÔÇ—¬‡±Ç­ö·—ŸÞ]½¿ÿíÝíåÕÇ�»Û›Û»�¿Zí~¾x¿úõÅôÍÅêŸñZmo..ÿµ¸äüöý=�ú?®n~ºº¿¾¼ ¯þëê×?ß]_¼¥ÞÞüîê‡O7wÅ¿¹ºz{õö©—m¾Šß�_ß\Ñ¿»¸_u“±ùªsßm?]ß¼ýͧw¼¢±ïG‡Ãþ;~ôߤg¦ÇÇg¾ûêùæêþžÆ…n‹ ýÝ?lË×¥ƒÜ~ñ/tïkžšœÿýËÔíÝí‡wwÿJ׺�sr4Žã:®ZùþÛ«wnh"Ó˜ã›7Áuô«ü#�K¯Ãç½éú¸vüe¤súnXqÕy¯gæi¹úéúêO¿Zýæöý•ŒÉæîþY!´­ü/ßüîÓÍÕÝïß_ßË{n¾šdP~}ûöê†Î·ëÏo.x,¸uù9áÛ‹»®îi9ÝÞ|ºçÕ>êhÐÿñâç+¬�Nnðõ‡«÷ßÞþ?c¿ -ãÊá‰Âjì‡U7r×oÂÊv³.ÿ/}¢\¯4C¿¥9ûúîú‡ë÷¿zCËuì™Ì¸»~›çrp«Qþã§_�Å¿IÿÉcÒßß_½O�Mkh÷ëbM´ë_Cw=¼»»}‡aÿˆ G‹á=­“›Ûä;ûÌßÐåŸ>4ÿÒøéìß>ÝÞ_}¤¾n®VSöÃÝÅOW´^dzÍÛë«;úæãÙæŽ¾>Û]^½½¾¹¹8;\\~º¿:ûÍ=-䫳¯õ´æì÷vÅ…œrÁ½�]\^ßÑŠøþæêßÏ.ò9rýw~©�_ñ•ÍÙ•\zU\ze—^K÷×rÎuqε�óž»oÎnåÜ[9÷¶8÷Öν•Gù$§~’S?åS›³OvîÛ‹~¸º;{KxuuvIã}öñž$ÞâãÕ%ÖÜÙ?ÝÜ\ÝŸ}¸¸Ã|øñŒ®xwñþíoh”îxŸRooÏ.o?éøáÇû3Ú·o¯°SÏäìvë÷·÷o¯¾?ÛξþxsññÇÆ} zÿîúý§|’þþùêýÙ»OóÃÍÑyúûöîí÷WÔÕõû+|~wññòÓ þÐ.èxºû¿}ºúˆ—|{û§÷gWÿ~ysñŽ?Òê"zxCØUßÓö½~ü? ¼¹"¦ssõý}þKF‚Èõõ¼ùÇ—Wg™ŒMZlé×áìkäý[z¤³«wü‹2 1wªHŸüW>.ß^ÿt�bƒfcþÏöéû» ™Ñç»[~RÞ)öÜüwל}M/œ–ÝùìÝçö-ÏuÞg¼øxeÈЩ÷?Þ~úHK¤9ÛKôP|ÞÈÊ8ØÃdh¾’ã_•Ëõ+;é+9ék9éë¢?}ï¯åŒßË¿/»ù½|õ3Eý¬¸Z&âÝÅåÖ;z>íâ’7„liÙÑÍÙ�ŸÞÿpq÷éÝÍŧ{Ú‡Ä þõìò‚®k¾=0�ÿó»o?ÇÈŒÂÇdêðþò"Á¯VßÇ-xᅵåÃgù!ÖßþÒÑ>ífõíݧ«oþpõä»qö^OOqtðìøBa KOÅâ?Ö¿t}—(˪üÍÐÕ¿}º¸¡?ú³ë÷ßÓ½ÿ¹Ø÷˜>�È6Ie4åø£éÆÛŸÈÏýõÅÍÛëï¿?£}Ç’ÁÙ‡»Û·Ÿ.‰8]S�÷ ³Ôý8�}ýîꇋUÓMñŒh¶òª›†³‹tÁ¿§§˜Æ³ýÕ U® iÿоÿ�«÷?\­\hqò í¨ï¾ùùÝoo¾;“ßÕ„DãïhÌKËL¬ù͇†åÔßÞ|¢¯þáîöÓ‡¯ÞÛüBÛ"ªJ„ä?®Þ®¾þãÿ¡?HFeÁˆæ“XËûèo;‡¤Ô¿|°;â¦wW+ù’®ä?õ÷ãWﯾ'‘._.Gﺺ¹ýPtkGhO¯þ×Å݇ǻþíÍÅ{Z(|ÜzþÇkbÇ¿½ ‘Ê}çcOè”Ä’`K?éÃÍnðÀ ÅWO¸ÑÅý�$eMþh}ËŸõƒË±ÇûûæBÏÝj{÷éã�«oooo¬Ûú+ë=æ£8ÿ/ã¿å Þý^èøNé„ù�HÒý‹» �}úôå_rï» ,X»¾\ºÁÂ÷v'ùîs¾ë�ïòz*Žü„ùòæê›ŸI|÷äÉ]ë'"wb?xÎ7º¸¿üñ¯ÿxGâöÕƒ»@Œæ-­ýo>]ß_åº}÷*úê›/>\ñkÜÿxÎg~cFp¶’¸¿yóÕwíjû¾øþÀyH€ø‘ã æ�ßüëÏ¿lÊ?ˆ‘¸Õö-é.íz˜†a胟bbÓ¢­»Ð»¤‘~|=àwׄÕß}·½+®\é•¡ҕ+½r¥WÒ[Ò#1pÒY©Ò·¾{^'Û�_ò�tðœg°.è ¶{›2ùåÉøúî‚Xüß',…&dv€º‹2)ÿ­icÑúÔò‘P}_ž·tŒZÃÿýwêy»Ûî·‡íù®Ý¹�ß…]Üõ»a7î6»ín·Ûï»ó}»ïönöqßï‡ý¸ŸöÛýn¿ßöç‡öÐQs‡xè›Ãp¹g:s óµEn!} -³æ�ÚüŒÐðè¹}áî�{>ì‹¶[hÛ…¶Yh“´†ÿCÏýØ}ßÇ>ô¾w}GSs4»¸�›8Å‘VZc ÑÅŽ¦ô<è}wa6a -cBbÁºÐ6þܸg¿[lÛ'¶Í¼5üß×�MÃíS ÜÊÏÚtÎ?‡b‰Úg~ê1Œý8ŒÓ¸÷ãaj§nòS˜âÔOã4MÛi7í§óMKÏ6q3lÆÍf³ÝìhpÏ·íÖÑ£‡m¿¶ãvÚn·»¥%7œlX¹Ñߌùï?ÏjC§ç>5W´®jmn‡óª•?i±r§S;ž�zú�ê†Æv¤îÇHcíG7vc;œz¯í°!7DÀ†8„Án膶?ï4n»~Ûoú©—mìÏ«v8ÙöpjÕ¬V–ãæ‹–ר|­ùê¨^•{ ßMÑÙ¼[ú_Þgð#­ð-=Ë�:ëhCÚXm± m¶m»sÚ€.zÚŠ=mʉ¶ç–¶é9mZG›7Ð6hx64Pûþ¼Z;O£ØÓxN4²;áó±¥ñö£¬óýùî¨í¹éoù´;ßžoΧóñ|8ïÏ#·À«¤ãyß¹™ˆ¾‘=ÑÛÀ”·£ëD�wD—'^¶­Üu?»óÖÚÆÚT´ÑÚP´^Zc�$�•¯ ~Sb=±�@ívÝ®¥[ˆÁìh‹nh£Ž´aûm¤­ëi wÛ–à°ÙÓ¶Þl&Úâæ§ÍhÓ»M·i§ó†èçžhÁvÚU§�èC$:á'GCöR»k÷í¡=ïÚ®ë\ç‰QÓ’Ö?�Î>u›nÛíº=q©sZ"�sλࢣÉtƒÝä6nëvnïîœVI×xç½>úž –˔̞–ùyµ€‰pµ#·!5åÎõ_Ç<;V¤1µ¦øc‰Î†jQ×Í-µfùðÑi3BGCÉ÷Žü"x½©Ý´[giçŽÇ9Ð(�<Ê[eŒó9�së\ÃCíi¨e°G{ÃCŽAG;pc -è»Ô\j¡h±¡))Û°Ü„Œû í‡É'è>Ðnéy׳!þ¼MüÄó d5Û.c¬i¬mYí¼ø¥ üOZÞ/ymж�µb/6‹äà¨é^>ýsø’Ö:qÿ§¶æ‰§%æf×&V¶g¹ -21/£k�èšcÙ²å+Aß„Âmif7Ûî›B¨á­Lk·çåÊ£+³½ç&?ÛÔ6©ME’Ë6,7á'¡&"‘‹HËÔÓ²ÅnièQv¼Ô7Dg°ÚØ�V7~:ìføÝ ö*ÏÙ9b ¬(ÒŒ{îÑO½X$'\‡>I öÀ/>´qÊ]õýzŒ~*žðeú“g#±Fص#b è`j½ë¥¯ÉuüâÃØƒÅÌúrãšg.?ÛËô'ÏæIÖ³mˆ#:[uåb[ÑëËÅn,5öÏ¿ôs4õo>}psûý½x<¬þéú‡÷W÷÷W¤´ŸþŽîå Ti" ô¡§™ ï{¡ï„×DzotŒð!†‰XsÚ•/ÒI~–•v³ÒnVÚÍ*u“çK»Q¸¥§Ü´ŠÃ -iœ¼x×é<¯Ûu;"õî»õØ·~5Lëaè^îÁOßáEžŠK@Ù vú9›á÷ïß_¼»z»ú!Zu´ Òt…¯X+€^Í@th]ÒÎGÙ'=šÂ†µè Р3ˆÖ³p�(¬>ˆB®Û°*eêÄÀ*” -¨!AP.H½€‚ÁúžaÆÏ·Äµ“ü@݀•ƒ³{º¶¥kvt¾Ž¤‰t¬uïè†#iÛš6Ɇв'Ò#k×-‰ŸÐ«'R�9ÆöqÛГ�¤gh;}v ÷ìñzHå˜ ò…gÉâÀR$ -HRÉ; I ‘¥ƒŽå€^“õ“Èêƒ3 âQ¤…ƒTaŸXX1åZôAvXyQ„Q4ÜsbÅAÿß°!ÿoéÉôÿ«pú¿þÛ5ÅŸúÿ!ý`Y�ž$ ‡mÕv´ch1·ƒ¶&´v~º-éuÖXnkä×Qse¨øÂÈÖ1†)à ‘�†‘¡†-ƒ ‡78cd`m'Z�[Z–û†Vç9#l®ÂØ6 e;0ÎÖÑʬ­g´mJxÛ>!n]ÂÜâ¶oì¶ðfðqWÈ‚.ã:\éxãâêÈ›yà­=q'ÒÍŽ À!uÖ2qp©ËÀ¤ƒºmšYJß°ü¾c�šajª[–ü�AÈÑ�À‘Q?Њ-Ã× `7À°ÅnÅvŒeÉŽYc,5~VÆ$û³ºGWm§ã?\’Ùúδ»›úÜ;«+PN6BlFš O›ú\:íÒ¶œï_¹ IÐD4`�áû«ŠXKÒÏ#f²ôãèˆZ°èD[–ÅK>Hpë'–ÜH,g±®�ƶx§qM_ô™=·#á”# ã`a½'ªé’åB ™a¥CVˆ·ŽÄóŠ—yÉ€ÔÒöÃY¤¤µÌ>I�(ÝÈâ?¿+$غ¥.;6#•F¥—ì–Ÿ”øL`Õ0%dnê‰dï(]¶,q;‡ÞÙëôr“%Ã×Kuø-Ù;XH‚˜tNdxËæ (&6P@h…ãÉ‚‘âÀˆP0TÀT!¢„)7t X"#Û+vÌ*'ôÄä5&;›çnÂI‡­ Ö6ØÛ¶·Áâ››oHþ ’ñmÇÂä1à`‚#\`DÒñ ‰UDMn›„� ƒ‘=•>ƒB íSS`hb\t`œ4°@'ÐP— !€×»è㬠 éRåÅW¬§]±6¶@¡ج“Û¥i4û~±:žpN É '@ÜÀœgÜ­%^ Æl’æ†åý†žb~6¨@Œ"¿Cr€ýì_�'òvÃëhc&. y6píØÀ%æ-5neÓ–˜b/�–FÄÅ -ËëÁ¬°{^jƒ�<ýl�åi‡qK¦³mð䆱¿]�üeÔ¯MxŸ@}ÏbL³È4ƒgP)@š;Ù°!Iñ®š/ƒò»'µGþ<6ö×Û4_ -ˆ -¤–ÁîÜ\ÑjSk­–ðnäˬ¹ E«6­ö\H^ MúP:?ì«VþT–„’±e{vÿJswmYžéSEë«ffɦ²¿Ô6˜Ú -3·Ãœ0»À„Q½‡üˆ»‚g“výjdþµan¥dÏ#{žT-([¢nF€" ¸€‘…MÃPÃ.é_~â–%Çz˜hb‘±‹�±Œ)id[¶Wìy²XžݬyPÅÚV*Ö¹©X¢`yS°z6l°~Õ°YdYÁr'¬É,Q¯ö¥vÕ$7!ŸVmi�›ÒÒË&¹CZG²h²1N— s“¦Y¦tŸfOæ+[s+cîÌ”Ëö—<zVÓ¦ä°g?€V=â -ŠGsØÓv;'nªNñóÔöæq½}AmN+îÍS4÷§(îIµÞ5•ó—¯Ü¿630sÿª ¬û4‹2ƒ¡áéã©ãYÛñŒUöô,÷?;OƱs¦ŠûôÿžMÍ{Æ·…P$ÎV'„ …"d”"ÆaIÄ!¨´�.ÙIÕ‘b2—�¾ðŽ ß›� ÿ§¬ù™ç«]ØàÙÏÀ�©8òÜ3½¦Ç͸ÀCËõQŒI6ؘÚT´MѶUÛ-I¿å¼'gUʆ¤¼MIÍÛò¿ìb íÀ«âܰnd¨lï`çȾÁ®á=c;¦t*“­Rn”´Md³u’Ñ¿± -vÕ:©ùˆšÝŒsªÏ}íU;zЧYË=‹ -l17›¹ZÍwf5/ìæs³¹ŒÝ²ËØnæ4vÂe¬tr”uR¯ƒÍ‰6�hcnnU�NÀsPêá³Äè8MCëØ~: � #}'VÖ–ˆ{ €cLf”[5P‘Μ�×!Ùݦ°H¾l¿ü¬´K"÷9xÏ=MSèÛuˆj²ÇòȆé�é"ÍŠ˜zÑ^eL‡Þyœ#-a¼�ÌãxwÜŒØ\ëÙ¨­¶õŽztÃ".õR>— -‹¸T€¡×p©$ãw¼sC2ˆ ÉjæŽý‚·ZöU›y«5•ÃÚ�(®:¬e!'‹9Á¼ÖTØQq‡ž†‘-‘yTê¹§”|É¢!æ xB¢‰!�åSèÍ" íY9g™H¤"ÇL`fvÓ3632ÓÛãÙ2z³gös`<‡*ÛÕ9ž<ó$p¥Èœ©gî40‡™KMÌ©´m™gI#:×0””U¡Â³qœÁfc7o§,e%Íζ±ìlšéµ®‚ì¸Oš¼ s£ý Ç«Q>µ�í ;™À„ç•LEƺHv ¦Äêˆ{UäSУÁ�RÁPYyi’<µMKRy/~‹Ôu0¬|ø òšÉo -Š:8âƒxõ9ÆAÔ50pË6°¾hCjâ>8–BGSñ‡eNr’ë<<«ù·[äÎÞþ‰Ì–ä¸&M|=ùµü<^£O CG,¼F‡Æ Û èf€wJËf, àiás±¸šj¥áóf¶æ&C–kœ¹\•Å·Mq`ÛÖÀô¶D¯‹cåÑr™os‡Û£·E[:Æ-ûJ|©Ãn‡êtXºªCõ¦©@Nu1ìØV'n…»äH¨�gv�v…‹ÃžUpRMšäÛ�ý|ò‡î\Ô�aHШ:28Ñ_ÄK:ù1˜Ã&)4µ C`ÏiÏ›»¼åˆ�s.ö7°ãØ�mcøüÄH‡Úž%ÃÈÒ¡ ö>¡ö.‘KYšJ^•à ή“Û¢mfmš7ÂÏMýROö�‰âC¡|‹«HQ3¡A=´Ó¤(ñ9˜ýÄB–^–¦KyZ$j“©›AR;i`“z¤væ‘zì“Zú£N‚À”Þ§½¹Ð¨MHªX%‡šd9R´K=zÜ&ùØìÒBÜÞ6êq3™ß�¶r®ú¢ßolÒÛÉÀ#�Õó™j=�U¨ãæñ - &°°©cŠ›£Àš…pšãÈ/ÃA·ÇÁ]iñŒ¶„[HÚbÑ^Û+,¯3m5\‚Ãí‘/uzØÆ ÙãŸÝBÛžhmMþXµé)­Ôê hK€­eX+.ÂZmBB �”fت¡-·@µ¸•á­Iƒ›×\r <³D3 /ÁLñIÑ~ô軄zìên-ªÁ'=²Œ>°Œž¥t“ÓShRÓ¶<ª”9}or:io,£‹”.úÄòùŽósz:"Ž‹(>"Qäo¼ê9Ë�´+÷Ó]ìø=È8u�ø�böf [æçÌGè%šäÇüy[pgõòÒß›dÔÚÙѽý¿›ý¿°Òl~jî~3û”ÿ߰䑜Ïj;z–l¦$ ©L$Ÿ² UFø ìM—d·&E4¾ˆÍ¨´ý5tÈoþ”XÂ'G¿úèš§À&óërôE{±�®0¦À 1ÀvGر0ÁBujY¿ÚØ!Y_!ðwúæ,¶- n»ÊuYtûv%¹5G‚[ÛDhË"› -lêK¡rZoÉf�€xI(;˜¶M’–ºVô¬Z‡ì`Á ý<Í¢Ì#frÓôBá I ±§|EŸ“ÂÏ®9–NŠ?sѧ|²ÐÓ$—â}%ÎX¹÷•ã“H®³KóÛ”®sÿ­IV«y0™Y¯*ûUiÁ -•QS£ÉƦ@“#›‘³²¨´óØx,‹;ŽpÝ��‘¢/`Ä �+çõ¼b±P&Ê7¼ª±¾i�c½³6ÆÇ7Ì…ÕöyH1´“ñä‰ÿvÌŸ·<1úïÀsvž-ÿLåñ?!´Ñô`‰IT¯*ÇHGdª¯�—ß7ôîCƒ‹ôÆåÃ?ê)+E ›Ñ Ã#jM^• USÑ·p›3€«+|ð|²…&¡\Ù»�ñ-1|M…‡˜üˆŸ˜xŠ9æK3uõÛ3‡*½Æ&ÖÙw¬1ç±ÀÒ{�±4Ö>dÙ‹lÃ|¬ô%‹•/™h6»”IHý.9R3s9ŽRãR¼4«%Lk‚€æÑsƒÏ#œ½YfímË{¿†s\ö?x›°¬&6—ÐÎëØ¢Âpìç’Me€ß,>Œ±�Æ"âlZÓŠ‰…ßòKôÆÏ5u݈§\G¢$ì�Œ½á}áá‹.‘E&¹öv뉗UÖ´ ëÌKv*OI¯Ëq–C -G^’vØ¡·óß@ú° GúFâèê^«h¤íõyfš~ÑLÓÃ}ØfšŽ�[a%ÌF˜�H@ûFL0b7¶¡\ϼb m�ùDhŠ L.‰Hþa ¬‡%Ž�³Gd‘ÒÞÎé#²îÜWº³jÎÁBToÞ=ÇAœ»9r9Öš·EFWy…Â7HD6ÍÉà õR/…ÒOa*¼r †…b$G…Â/®;ò�3Ÿ·ÂámÑÍ­©¼Ü¦£¼=»œÛŽ]Üè§Yòv›ù»=ÜÊü.$6•?Ü—7ó¢kfNuÏnƒfI&[i{–I¶)ÃÅyÊo!²äÀr”˜¼ÎYâk•Ø¡ KÂÙ—åÏèŽÚ^ Ñ!1w2ÛÖîeæ]&2$µ†)†J‘±È:#FSÐŽŽAÏ̹OvP±|’qÓ1a¯ÅÆ\·¬88ë’ä]ò梨Š  بçI#¨uÖ -š$ƒˆb°ãÔLP†D–µIÔ(Q¬AVÅK1gE£ -O«ŠÓ¥æ,sPÄ×[+32LUÛ4–Ý!ÇŠ•?50*t`!Q7&lM©ÉîÍiïžÜ–rš}q‹Ç­Y:øœö7Øá±–�¾KîWóÔS¥a_ÃebcÏqÊ==šM½Ceø-Súé_Cé6ò}¬ÉÚuv4È×i´ê�ìµ ¯ïüÝÙ•­~jªîÊŽ5Ä üÜ�÷Ñßµ~yZE~r+]í–+ëÓtÁlÒ)�ÎÅôä,MKù™¾¤[kÍó.ÿOÑaö€ ïD¬2’` ±Nȯ6�\)IÕ`AÛìG^gvÄ Wn•ŒŒ?¶ 3× ü�X+ëPÔý=Ç3mM5/óyÞ¾Ð<ª’Ï•òR-WÈ]AwÒÍÃ6@טþ®ñpÐxÎh -–Ü«O-'ËùÁò�Ë­ñUÜf½Ž$éÃB›qð&}Ø=ضOlðE:éûyÍÜžš“Þ´_Øþ;Tçƒ=£æãyÏe¸ã�‚[#[9˜p�£�˜)z! ;ûˆ£�f;,sÖè°»¹«q;"Í º+³{f:¡è�/l=‡D0f–ž†}'禞ÎL=JCÌÜS�¦Cš2lÚ$O½„œ&úrž´ó}¢3Š¡n“Óè”Zò&ŠÉ³=7”«Øª’#o(«¶œD£ ­¨#ÉŽyÌ¥è¥ !'\Y˜æmùuÔ¦'·±nÍüÀgµá¸5KŸÓþ;Ì>e¥§àÜWP½Õo¬NR¨ƒN�Äšä†SÆ[ŒÉsPc-²M´LN¸O^„[3²é³©,Ÿj÷¬lž…›W6wž4v6'ì�µÅSmž�¹\ªi1{A%¯É*vv$Û”?SÑÆ¢Õ^½¶&}ˆ³¶´çŽ“Wûd]/ZSüÑ=ÚœSç­)ÿ˜ÎŸßš…ƒ‡ç´æy—ÿ§è0[¦ÚÔ:nEnœ)ú.FI¨&¹Ö`|ô’¸’øÝÀ -iKßM};®$ôd!cÛËt·ýØH}¾~ÕùU0KV}PÏZÃ,šf~øyÆ–qÑØ2¾ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ¼ÆÄ<ç篢Ãט˜×˜˜ÿÔ11s¯œGÃÌãab•Ñm,Â^ج©RôΟýóP¥/ìÂÙfÉp JÕr¸Íž3Qu‰¡c`�j3¥ ²é؇.¤¬~Ãvjª`š}<#u<;^ó¤~fò`öÛê‰ÙMò‡8Îú¦ÿx‘vIк„C]r�Ãÿ鼆�%ÎÙaB׳ù”#yú"’g›pÀ\_,0³É.Ù ¥8ÆGú2–°¼0EšÐd[ñÒ¶xžÒsb?Ì2¦gî�95Ù!3¥üËIÿrtOÏÞ¦‚ïvÝ%ÜÎ%¬nh’1%HnÏÒÄy–&ÇÖ–°ÅØ‚!k½Un�qέ 0ëT–Ése‘<ñ|—p)–â‘�‰âM,{ö~Rzξï‘}ß!oXÎ -¹,0;U�ÿâ²|\Oñ¥â±Rg/Ž5Æ5 ¢{Ùp,íTžÒ‡~âWšh�HyqZ[èÐê9µb ¤!iQ|F¤ä{0 ëeû}ž•pZ´N¿ä•¬„V Ãl¹ã~Öšk9å[.›€¸]cI˜Ýä�Z°ÄÌÚú¢‰š‘ÁVV<š¤ŒÖôgsÔn–°ê­¥zÞ.{žŸŽþ=.�¬–’¢¦lS)ây Jc@®(¡&2©âÚZ ­O61«…‘Ëeäê’ò£ê®Dê…”«5µ&ÝnïRÙ,)œ%¥³ú¤£uI5ËõPû!6DG%‘?¨¨¤ñÏbÒÉÕ´öD6'.§­˜Ã�I¥äî¯é˜B‚:Ž ‘ÆÀÉú…Û€Ë RO‹™É.eæ4>-«¾[†?Déåüɼ’Œ®ã�zkêÞ¦®GÞ4Ju¿ë FäöИ/Þ>I“[óÈÛ¤U:Îüò„ë¾y÷‡ço%”¾ysϼì“×2D25°=î¹ÍkЗ±]ÑŠåØTi %2omwÏ?Ð73|¾Âæg�|Þ+·'Iƒ+ÉÝ7U‚÷½%xog ÞËôî›´áSfw–`»Æ€Û:0Ó°ÛYªî¥dÝUºî¦Ê×�ÀÛÏKØ=«|ìÄ;„–|›ê³¢rà8²Çˆ‹\T0¢`kÔtºÃšHS(“µ>³æŠ$  ””‹±×N^3»öZÌi”œ½vÁãæyÝ<‹ç¹Å²ˆ®«Â�­Ô1^³¯šy»Ô³–Ý™» W�L«�¹jÑõ­¥B—M¡ /{óò;Âê¨5…_éµ—]ô²#žxÙÏ®v�37-5‹h Þ֘Ħ(¾8%ÈoL¸¶hð_Œ]YzíàÝÍZ;ouNïlðmŽ„ m»'·ÊVØÔ~IÒ+¥tPG'SŠ5i9ÒdÃ¥âq°sfº3\¤²ogµ)1×é(S#\L•Ë(mSmœ>ñ�Ž™XÄ&Õ¨Ä�¨…eaœ «�= 2RÇ1�•0�Ûq4’£O%,%BC0\ÎRT½ì¿Bœ«aßÏõ-¹jŽ•P5O“ÿ—õ¿„á väRE)ÅuÞ09/„=wÈ(kirV¥wÏÔóc-0x³x{„æ˜wmNp ¸šdÈéØ:—üŒúäB·÷¹fÆ�²Âlý¡1û›3¹©pŒë*g8É…³MiJ¸Lýݦ†ÝÝ*'·äצ^m½ù±©ÿÚÁâšÕ)Í'¯ Zž ‹��‰¦‚wg…"« •ò`åZæÍ5¦:”ªB¿¨0ô©¤f&[åO"jÍIua“ò/}fkžd}~°%ù•§[Ф¨§äTxJš¯d± -\¶ÄòЍœ&¶Çn­ÜªÕOµz¨®°Ï¦,}Z<âK)ƒ¼I iÛ»Oòë¹ùU¶)Ó�3ÿJŸ„à�DâÞ<-ÕÛ’�½:u›»Íøí.Éßy�¦uj©»r�=áS˜\Õü¬‡"Ä…F�Ù*DÝžþ3–­©ÿü’Æ´åDÒ‚SqN•ı:#�ms-5’‹�¨¯„ÇÑò8Û,�WÒ8{O4)5Ê Õ–,EÊþ�rKeÁ¥\r‰¥ô¦¨»´Ïµ—¬ú’Ö¸uI® -– -¦5%ʈòó©±Ò·›”yE+4í¬N“æb‘Vf+ô'Õ©Ë–0os¥ì8—Âb«5½/jRw¶ŽÉ˜…Y,<ÌåÃ,!nQ8kó€ ¨6bmý‘à+’Zc€þ„(ù™ÂdSI”Çí”xyRÀl–åÊ“móXküzúüÖ|ÉE³.ÊËSÒfE—Mz¬h±ÐaEƒ�‡^™VóÙq’.eé9ÓöÓ9oްëƒ{¨bvw†H– -Œ/û[,Bíb”YöìXöå-Î-°jî,1ÎËØ?Wu_w~A_~f?h·� ølêK€qä“*Ìœ Unp Úh�‚ãίGw‰%†ýì®RQib"£œÕ¡t±\�â0Àü„Ð|-G¸È±;ªAó¬^ž%ø¸%ÐQêØUA6�­ßœu£«ŽÎ¿oóRÕ…*Ë4—BuÉê´+€Ô @j®’v^æÃ*«'òþÞ±§Dvg5Ïôã§KÕ� -3Ê–y¨âÝõîøb-g¢s=è\QWK:·©bó¡=Ô{V)Œl˜õDF¶˜ÑªÑ°.Z¸´œ³¥jè×-ì2¹ÆÑóú‘ÂK-jKÉjœpízš€�óRåúH {±Í V6¢åd†ž6”›ÊGz‰îžµök.…Êpdkú¡ð²ÓÁeUhüš"°,‡•Í«IFS“­'ÙHRÀ*ßWH¢ó˜TœÏª'Ù<\£ïñ<³¥}ÉÍÜÔ¾4KÞÚ�YÙ¤.£êÔº+¢ù$}+‡bqXƒå›4Ñ‚¯†4+£…\åÊ;IåkUÿÄK%Õüã *×pìT°x) Ù®ó¤ð¦2µíò(¡M³æÈŸ£ f*Cš²WNœ•dÍŠk<—ÁIc-dÎþRÝ©�Ç!å¿¶Máé[xüª/ðç„�ªBƒ\7E`P šãÖÔU�µfÎÐ( Î�ÑTnµÇ©‹‰oÕ{ã‘:‡Ëá5›*¼&×hxM\S…Ö@±iŠÀš2¬¦È `EËpšyÉÆ\°ñIy3ÄY�Ö¬nÉÎÖ$ÓÚd&µœ±Ñàiá)§ÌBS0vÍQ`J”2 I©ÃQê8”¤?6³ð“:ì$T±&uŒIUb!$M7RG†TáË.5•yêûç;ÒÔ’üs{z×^4~ÑÑ#¾Ý-ðíÑœvœŒóß®¸¶ Í£\»ª]'4o‹`åPøX¨1Õ�ê&OÈ“ÙÓ5 +ãÖ÷)XÝ*åI‡9OªôΣ Úyþ¿œL°Œœæ€Va5­×X‘‚7£½¨èÿ~h>�þ×éXæOñX ê‰PÕffK] -UÕ8CzªÇhþ©€Ê:œ2S|~ºæÅÏA”UåËÑçcd=¢‹�„DP€‹[Ò?HêmÖj[ÈGx€…Ôäúz=q‹ôÄANi&àÍÖÒSÂ'¦l¸’I›#3$‚-ðtÉLè\Ü[Lz`Ù�Y;vj-a*!íÓ1ß*ð-8-:©mèîÌbÇËÉqGGfÃ|ä1Óâ̼)OGØ©¨ÊTdËù «RèlAÞ“40IVB ¡y ÒRÚ7~¬û$ïZŸöÈ<�’l ÝY†ä\k ïÙ”4éÏK&ï°œ¨ÛÒuŸÊºmm–{¬I.Ñê®,BN«rjýÐð›y´h“ÂEÙùH¢,ÌÃL Ú¤*ì9?Jk±—jù«í~Éêט^Kší ùà ybW…qÒ(ð€ˆ†£l \-dÌku¿Pw‚ƒXWqìz®`MLº�Ò•B)ü}bœBÌ}õn=K_z´gõ—0šapKa1r ÑÓdôu_QáD7£¥Gå»_¨¿ôl¿À@tœ1Úò‘=¤Z ¯ŒJ±o3nÇ%Àf_ðźÝ/Óß³xÇ"x_½&(zMPôš è5AÑk‚¢×E¯ Š^½&(zMPôš è5AÑk‚¢çüüUtøš è5AÑk‚¢×E¯ Š^½&(zMPôš è5AÑk‚¢SÞP±_¡ë_È·J{{MQô•¢(.z¬Å®Š±Èyom‡S­¤ÎMeo1«‹ýä*†ÁÚÜà¢ÆfÏ�XYØØ¸I6ÿmB÷ÉôÈrÈ ÜÉ¥½ŒÿeO€¦B:j¬c)xLRË&™%wUÔ¯ƒ–X"óÝš)ò¼’Zbò~Ïþï¥×„ùM4É xä_àX‚TÒ?¹ OiMúP#ËÈÁ\hJS)mŠ<Ìi‹¨Q×A1Ôfºr±”K$²H¤ cR»›®†&%ZØ›%ZC¹Sã˜ð®>!^"­êZ8HasÉ àl1¨}z”Ї$q‰ÔÕòBpÌ)Tˆ�EÀ7K² 3—2B"r8„ -²»d�¦E!óù?Å^lÒ‡º„h(Z.Ax¼`FKŸ%ë`­g7Õ”—ÆÙs¡6×.Ù`ÕþY¯�Y¦ ¯Ó¼a9XÝ|¶iv�cln»4·y£÷³@’ƒö<µ9Î?$…$²Ç�Ìê.ùœ'Ÿ�SÏ’€HÖËxˆŸÁù,ÀET“˜êÚçÊö¼Íÿó‚sÿw:<­»ÕªËûÙ ->X}fw6³›"Іçµy g{N³} š&94}(@ècÚ| ~V§EžÅg9ù -ä�§%�ðhfy>+çÃm±RöÜÚ©Ž�e+uÇ÷û"íPNšó ±OÄStÌ'é•¥:ÙÚähÚät¤Mé’¦JÎ<>›B—ü MÒÔŒ#E²YÐ$ƒé’šS®Ô%çWàÒ$X¡Ò&Móè*?Šhqõ¢OnJ7gU(^,YûÐ ûJ§<¢1Ø¢Ix×kž3ä§T2›BÇìMÇlÑÈï ÓÌ]áÿK« 1 ó³ôKF´Õ˦Ô/Ùö"3ž CIŽpƒÂ[sChXÃØJ3ÙLÒLw<Ó:Ï2˽ÍòöÈúÕé,‡„ô'ɧ™6ó—̲º¬EJ²<Ëÿ·”³¿é²–ºg�`Á¬‡Í í³Ö?s¨†PÄÒ†˜�´»§h©�j¥s•¥YÐZÓGTYšJgy².zZeiž¨³dmtž.xæòÜZË)ùV­XGi%âVÙæRî‘Vš¬Y�ø3=Ew}ÚÜWXÄÃzêSæÛ—óÝ<à{ü€†zR…éš u>ßÃ‚ŽšçûPÏw³¨¥Öó}JOÍ–ËBQmNh5µ®ºl¿<šñ§h´�j°sõµyPw}@s�ù] ÇÅgé­§ÕÖæ±'æ{k’Ùn޶w?Ó]»s=6êÂJÝ<¨¿.ãM'-Õµž‹´ÏlQ ã8a};Î�52­ŠDmAM‹$÷D7�Ðs_®Ëçê¹È'^JϵΞ¥çŽKjî-7Îb+Oýœò|9ãÞ,~åŠ‹ê ¿‡;uË>–Æ{á¹î°>ù)/]¼AóÈeŸÝNuøø~f‡OmOŸùóÚá/2=§³ŠC=»Ó—™ô:K$?,äÐSǼQuÆf–tÀhT§Ðã.¹ì tÎØ‡P4ì©à�h„Áˆç¬zª²fXä -Ï™Â%KxßXzð2#øÖb-ŠHg†’êDßšÚ[KüÉ»õ'Æ•As9Hk_´CÙ4t´Ñ0½ãhç2ÆÖš?Ñ¢¶&,ZÿävôÓzòÏÒ?;Ãð‹¤)þKì0ïYÉ_гI»E¾+À‡¤^—«ÝfyK&§Yõ™¥-è›´û¦”¼òÀÛMòôOVÚA6SFÑvŒš‰;± fã'´�›«J`Y_†–UÕ”4q{NÙ~žÒµKh™¦hÎ÷¼1gô2»³ìæ’Ι 7–g=çW·ŒêM‘A½Ì’.šToŽêCŠqÐôä›TIZÖÏ�ˆîZo„]ϵyk¡jEÑ�ý0kcs”3|9èïT´àvWØ,î>ÃP?k5zòtûðÉö9Fæ¿¢sÔ»þÚ©«w'Ú¶©ò(×móH›–Z³pð¨rÒ£­ÈÞÑ”|Vë—[sê‹/m§:Œ_Úš/¿ôµÃ¿¨Ë,…ežŠ/Γ[gJ\ÊP¡ùËaæ—0Co›W¢\õ­¨ùVø�ˆ‡‚"=³’oMUñ­¬ù¦…=–Šzœ*ç±EÄäcßÐ>£ŒGcõ<ŽK½Î‹y,ô8*ìÑ×øX(wº•ýhNTyJ[¬rºNݶ¿ÑuÏbÇN´[#òÒ>ÝÓ®™hFÚ›íË=ç””ƒžƒ8ÑÆÃ¦s\yïÀ›lB•Ql+ÏøÎ¹_�LÑ™Á#áK験_VS7†@ 54‡új”UßÌ‚¬ê«ýbˆUdÅE_-Ί㻻” éÜ®InQyk¡W«¯3Z–bIãr�1Ee‹Íò–oÓYÖÍ܊ȳ£ì‹œª°nûÅv¢$‡$U­9‘eó¥­©þ\ UŸÛš—èä/¯ÃŒê·©uÜ>û èh{ÎOýÔ±ƒÚ8x§Y‚DÍbëºG|ׂAàeºÛ~l¸Îé<˜Z¢z“…oôüu鋾[Ã�dåúïb¨®[>£¾~ ^£ëWŽ‹á ×Ïϰë‡a–åq~øy¿hQðUâðÊ"©öHXª¢æ&‹¯Ž �FƒÕO+~é¸à·”{9O9K¶)©Ä&%éSj‰�ìÖ×@ê Æñ³:¨¥=AÏ¿òÍ8�"ybêZ©Î“kæå×]ª“—š¡È´)à…f•‘äS‹QÈÝ›;n3 â4vƒ8±öCë¸öNÛØùB*uÓ«qm–„–vÛ€�Ël=|‘î$†5LmŸ2ÎNÎÉ‹5Ì…°Ú~!ÁëQ¡¡çvô9üýx}õ÷«íÍÅå¿Òήþ<ª^µœ�5[–²¯æ>°@,ÔðQ‡Eµ@hÆÕÞjÛæÚ=uåžœXõ8]ž{ž÷f±Æé|ê7åŒ?}.·í¼Æ–Îd]¯#Í¥Ìd™Ãã±Z[95ùQ­­&ÌŠm=2—ÙSÔüD F¡7•aÇUŒi²ù©�ho¾À³™­â�}cõkOU°-g¸¬c¬Ìô ›sÝ“�§û`fÝð]ÂfüÆÿµ{¯.;Iøb=æŒ2…itY>©ˆLm¶Þü"&óØYBÉm9¦Œ2Û”QƱ:e”aÓ˜çö‰…&Å<;[FØÁ6‚ÁFê§_ÚN{Þ´�Ó-m‰Þž§ôJ°am·ûƒüüj-'�H–^´bWcâyŽh{VÍ®f<•ÑdîøÄŒvÍËä3át&œÐ¤yZZ»2«ÝóæòoµöÚçç%l^d‹¤4ÍÓçP3þ'™Ëùl6OÜ•OžÍæ…ö¤Ífó9;Rfs®$¡°ž�|ðx&(K~’ �TD¦®‹=áZÉ'œJ_ªGh†Ï¨uR�£ßýæöýoï®ßß_¿ÿáÍ›B½+¿h~óßxùæ·÷÷WwïIï;¿½¹¾øáŠT>ý´êB¿Ž$5­ºn\ÓšXÅɯ»ið+?Œk’Å"?ì†ÿÿßè×'þØ¥çÿÃÏüçÿ¤�ÿ‡þ‰ÞõëÕ¿üïvõV.ùÀ(½‰ö¹zGG�î´úÇò¨>Ð?–,¬®OÿÎ6w÷ûëËûëÛ÷w?¯~ÅxØÙöööfõ‹ÍWi<¾;¼½¾¿½ûnKZ/�Ùwß^ß\}÷»«Ëû_®þž.ø韽í×¼>Æ.Ðä3dèHÈØÀÑVâ¬SV…{¢•�ÅCz+­–Õ.ðV©›H¿ïÆaMë^À#-½ÔèÖ0C¬H¢Y·$“®º!Ð7®ã#$a�«®ëÞùÕŽ¯ä::k¤Ý·Š�Ä�ô„…J»’zjéºq\H×�ë »ã: ¥º'Qžk˜èC;¬þ‰ÏóH˜…£›åX=þ?ÓißãÔ®“/õípg~±ÎßttÔ­ÝH»a=�ò°¢Û¯I¤#.¬=I‹t$¬!¦É#ºnÝ#p™Â:¢ íDêkp|D³Ñ‘^Ï…€êB1]×´p-‹€Bãt« •ÊÑW×bœð8Ôݳ_»Aï鹦¹/Ïë�â -oQ}}9s@ i"e}ºÐéËÓS÷-=šŸÖNçxM/S3®‰tàÅ;àNnu‰+û. PÖ<ÙIÇYCÖ]¹6®{jÇžFCÖM�Þ—žšïIë`À…- ¼i¦# KK3íÚA†«�ˆ*¡ÉHF–[ÒÎiM�ëzdçB!ö‰Íu<´hš�fsWÌ3±&mèÓ4·ÔÓ0ÒªˆÈ æ@Á‚¬¿ŽžŠF%ðY9=­â)ò0­§gˆXž´Oˆ�­Â4¢ ‘—µ ø+L4 ´fè Í”&¶Ž€ÃR§—ëzœGs„S]?ÑkŒ™hú°Î{Ô†¢yÁ•arkN ×õ¥ó�GËÛ·÷EçÓSÐ? r„·–\I_Gš:ê�æ†Ö"1·µCmôE«OÑÊEL|Z“�¶#X0 }G7 }æˆsÓ‘ní}ðÔ¸wiÒ'¦¼Qd #0,¸�Ô:°,Z<-o vDn‰a¡¹ì°9°@=ôÄ»‹spè«—gõx<{Öžˆ�§ç´ûéhê°A� ŽV.Üþ‘Éë±}ÀÇ_®Þp¾‘ŽX¬$“€Fœp@˜È›nEzu bŽ{xl™@R}½ý�ú~ã<Í?‘7ôžDÚ4 tî›ÈTÅÑ7£A[o5ôØq$<¬þ€5úÆ“DcNß¼!N�Ù!öqÔ­AšÉ‘d�tXÚpس[¬UºŒnOÛï ÍÏ8`q/Üž¸–') ·'G¢Õjû·3lûÁ{tà8*Dîþ=óŸív™«�•¯Î~s{O ìöî-MÃß›Åêäøžýîêâæ×÷w×ÿN'¯~±Û|¥òÆ·ßßÞ½“¯;$Îùöö�Wßm¾š¾£ùæþgb—ùöÓ„xð‡·º6Ü3Ö†þÏ !�C¿úÅ/Wø_ôé¿|â—Üów8£w´K<‘Ó+µu"hÐXź%úš<¢ÿ$1Làêô»§M‚É] ‰obe÷Ä_è'ívßÒ3õ  Ét™BXõ´g#JoÒô÷£¶`gÑ–íûi¢ËhOŽDyè÷HŒœoÏ܉ÇĆp™÷ÔWïIª@çĈh9@ü¼!‰ÅÐ%ÎF<�Ù”’N'î±Å"‰`…§&dZ ŽÆ—®ZØŽïNç&Àô°¼(IL b:¬úqZû”­£¡¢q ÅWÍð¤JÈ­F/Œ…¸ict1-h+"¤…УƒìƒÁÒš'Š(Ì®XîmÀØN|É4´0h¤wÒ—åñ!æËUúänôlÜùùQ© á­ôDÎhC9€Æi¤…”®"2æ[žYÚJô¥)¥MGÄÞ‡žúqà°&a=|mÉ jô²– cÝ‚hö0û©Åíý”$€ž8gñăS_Ó½I.𦴠-ùín‡‹ù"°Ä¡ëÐSš˜^87 瀊|è–ÄoxIf‘Óí¬Q^ëÄÃŒ­†V8¼\¦Er£Ù!Œ.·¿é^ï5­‡aô6xù! /=-š}Zd•zŸô`µ£pu;Š7çÆ#·!@¥uNÒnîIÅZlI-Lƒèed#Iz¨LHZ×À0lNPÄ�XYOÇÐ¥‰ök|¦Gì'Ñò†¸!gáÅ|”¹¡å‡ü 6�t9b»$NcÈ:Ô: ¸jDúØNTì>´"–óýé[b¹4TXB´‚[,E¢õSKóÄ]Ó¼ Ž"ÒìN¼»ŽH:]Þb·Ðˆ;l_PI³í�Æ�ú‹-ÅíA%é@ßñl'*‚¤³§«h+ÑcŠ-kalE\&)xAHø'™…v�’ -’B@hÀCÄ9­Œ­õZÞ‹Tr’„G?dû�léqiTd““Ø@jÿ°ò˜ŰW˜NzÌEy“,Ié9"wN—ó°Ò˜ L߈ -P/ôSÂ<Ž´ú”sEú²gÍ:±6,á¶gÒ’`ì¡°Óã)›Œb@¿”‘Ú�’ÝÚAeÊÀ&07eÛØ ,Ž•¼�àAÏ“€ñèþ,d=¦‚V'íg¢ÞÓ‘Ê] ,¸Ñ0Æâ,Úã-�|"¤mì–J>".NraŸÅ( %™&“CwO7TÊ�eÁœÀˆ;0YVôŒtÄØ2#L`2ÔÖ/R­Ø26@2S Ë•5dd´GÐj(åpD,-*ña¯±"¿K* †0¡õ-X˜ÊŽ0\0Ý7Ö8Ë Óº‰ÍY\Å-§ÄÌfR-ö kX*÷vDy9›xŒ#¨,šˆn’¢» Hëʤl:F33Â8¬I­ÙàTf§õ.‹Jõ8ÀÖ/þq¤TŽU�T!zRà›¦F@C‡ÙÆ” çZ6­íŒìC#é‚0ÓYè Ç>½¢h68·SÉÈ ê–)ƒªH0£±jšµoU•R… Xì¡ÇªNF,C u¦º±IÎ�*Á% çu-vª*�2^�TWä¾¢ýT£„AÏ{puU:;zH¾U5eªb©Š:k°°¡±=Ë”\¶ŸÁŒdº0h$ÀÎDð¤B'Î�•jpú‘ï™4oX(T!<)膬ÓáñRØq¦éwÃPŒ¬âX®¢…ŽÐb»coÙ,ÉV �Õ1„ÂÑ 3vd†óÄï£ -ŸŠtØyѾò‘òžù¨=›B/ùù¡™½'Ã8:óØx)T «ÂE:ø L²é1Ä©šF¦òt+veK ®ÙÒIH˜®0ƒÊl¢V-VÞlQ6g ?xÕö0”϶‘�¶Õ /¬¶¤Áжu3ò˜vwÆ'K"�aL%èTzbphIv2hªÔÉpU£`¿V”ÎPZ£ˆŠã*Í4°·"­  6Ô8iƒ–+Rn´‘|Ũ•)�m¼cWÂÝÊb 7NôwŸ°sãXŠ®S3 ¾b~†Ô“40ß©aþÃ5Ó€1f³óÎGJ&Ÿ�ª0 Ö -“̦QÉfù0ùÃl#KG -Q¦8š$3ƘPd6›Jx2ÓN>O­?&ˆe+Q)°‰%I…:34™Ügö¨J>4³•É‘fÙ2YÓ `…DjV2\Í�f­ÙÛ*ØÌr&+›áÎäélà+ån³š|n–B•àÍžX úfvT}À “¦2¨ù²Ò,ÌÈiˆšAMI1ci¥Ì˜IUu3ºšZd¶ÙBy2®©Xfã55ÌLÁ•ºfcSę̈¬šŸ™ž+1Ÿ¦Š¤±MÙ4[w¥”šIÜt×l6Wõ6›×K5¸kÁ›ºÌOÁ\GUj�ZŠRõî!R qÌ*:qŒ5í¶)«ñÔKVKuŸN^#t0ÃLóEOÐAO¬‘7†A òžDÙxêŠèÇÄ¿ ²`š8 Âb ÚXZ†ä—Ð��îÄ2H‰‘ä³JÉ=)ܒ侮Ìeõd -ßä7P˜‡Í“ú¦‚å¡P°(Y *å¡UðɆ_ñ)›¥ŲÉT¬+Ï·ÂaÇn¸!\WþZ}VÔ=wûc³ìÀ‚àçìÁû¸«J[z©ôð„‚•Ö ;©Ð\ ã'6Õƒyõˆöæi$VÐ1&¢42áÓ#OŸ=÷5ÇË×۸\¨H?öCÞV‘FÙ÷PNuë‰ ^–[^²ö%; -ÿÚS‘mwøÃðg¯þ|Z"¹+¥.ù–%Ê�fçÙã+E+_ð• œ ºGQ–ß•=l`cA|/²Ž€ßΨÈA>+íÄÜ�nÍt·ËŠú€Ày?oò•`Ôg =K-¢™dèYú*ÖÏìÝ^éÀl @ŸvlÅ*%7&:dõ.´6ø—kò¬JÑà³Hƾ…½¼“óDi„9J x1¡T]+1µxMW&{—ú]�ƒ´ÐôáFBÀI”5¯ùùäJ}G@Å‘‘•3h�¯DŽ¢ÀÂ.vÉ:—ÁúH¼öpGBX ›�'Åäá6Ô©iƒh–àÜ- †b)FFìB/D)¯Ø8Æ4÷b´8ŸGB«FÖUŠŸ©ï8ö þ±'ÚÁØ‚== .òTÅ[âhd;�F$©«å¤ñBWìQP�+.dWÿ8jÐ�Î,?ÏPÎe„º¸Îæ<ÔaxD×…=D¹|Ø:Ã.„ºÌk"¶“´#»Þ´Y»Æü,먃ÛC,^RCœ’ÝÁ ’ûyØ£Ãb:Âji¯Xª6y(ÀšBr5‘áB�KÇ~¢:¬0`³E®LB*WhG™6™ 3°1�È) -f+×¥ù܇•–—­c1°êÊ¡½Ä¯%×Éúš?Â9­@˜B«ð;Äv Á(+ß$Ÿ”V|îF7Fu3Û@úL¶Éô±u+–ï–7¬AÞÔ:Lyó—£™‰„Žz&$:3™àTÊ©&�éL¼t5ä§(WM&†º¸Žé圪^.ð¥–cþX´ -€ ä!�‹ô�74ü$w!Nkè#°Ø("ñ/ÎÿËï_G#�Fä¸GJjì!‹„�ÓÚMÊèÙå°‡Ps%Èõq»'6Ð�mR­�Žc�²I 6þHGÄmP-}ÎÓ�ŒÈBŠ„åÖ§(Alߎ}rHe°‘,�µ'Z9@!ÀcÐivdÐõQã 96�É'ß2ÐþïS0[äÐ5Úú.àJ¸ð ™‰ GlòØÄ©;ϱ¦Ùe«éJ8… Ò“'Ùw�˰za8âþ¡²'@§O2zqÍ`¸ &GÂÃI,ë$À_8¡´|û|ÒCKd&¼zÙl~4•»æ tŽ1Àv5qÀ‰+ü¾±ÕNë¬ðÂ:¦Fœ±m»Õ¸Ì´$ἉQì›oÒw¾ã! ӌœ£çp -�"Õ¢ƒû#^ç�8…¦¾CÀ.ǯåèà1=z„³vĶ_rî W^ ~î±Aþ  [ZOÒ6ièˆÏ:ŽS‡<Œ·£Í0Ê•ÄqSÊÌ6²*G±ÃRÅâr©�´ƒlX ™¡at°Xí$0F;©XʶßIdΩ…ʔ܋!o’˜X`¯Pˆ®èS.ä|–^á ½RT4ð�mwx„4œg‰™B¡ ˜ÀÛV|û‰o¨j‚—YÕØã¿8­Õw´®:‘­g·l“V� FWAXõщîÅ‘µxC ³}’Ïe àù̾Z6XDµ;¾rPáþÊ.|³ïŽL(´Äl8LqÒ(X⯓oØ%7e -ò`,“!àÝ‚ön~G’íB¯6�ÛØïÚF‹ÎcÞ–GµKf-U}Øû'F5u†Z ¡¾H ú¶cÌ~"2áù<]¹/]<õ=u‰ågÓe˜Ÿ_Wkõž¶ªm\]Ü_½YªÈÐdä�¶ÎÁòÈÇ" Ø.3XKà|ÌñÿÈ  -@ÿ�£â…¢ñÿàˆüµÅÿÓ¿dç/ãÿÁÏÅ$¡ñÿÈAW»ÿÏ}¶»ñÿDæÖ²ø¢xëjø¿ó�*QFÿã9"J4úßÅ(Îüï`óå‘)£ÿìÛ왩ÑÿÏ3r€UŠþwÀô¡ -þ'U%Ù 5ø×õ=’h¨¿‹j .ƒÿñü-»òhð?®L–÷üïà�ÏÏZFÿ»˜–µEÿs -V5úÿxþŸ$½œñ~¢ Ãáÿ}Šþ§eðFÂçc -Ÿ‡L1ôœ£ó)üß·I€‰È!È„õ Éd>¥z ]‡ÒÓŸÄÓ�E‰ÿïRü8qÀJ$ÐIü?¨Ýö³î?ÀÙ‰cR×ÿç`ž—àYIyà&´©HÊ×2 UЬ<Ž|‚v§¬<ìÆ”$'å�Ÿ—dêѬ è3X€ÏAÚÝÕ?ÑŽ‡Æ“=pà.‰rÀ§H摬:GÀÀ#PáŸùÒÃËáHãŸ8ʨÓ�fþ/2ê0÷±ˆœtlr‚—X -®dV!±ŒÀÄöÃÔ(M0–Ø»hqœ ˜ìF_F{ÚY -.%^×)j;®Åel).K™@ÄHrËMcT™ÒCÝ*#YA9ÁU4ÜoÆŒ-ÅÃ2?ÏÚ4Ë, hh-¨Ç·kð-Ôˆ˜µ Ñe*SyI†¬ºh¨/Fš›® -†€Ð¢&AŠ&UP¢4¬nâ<@Uð1ó† î}ðzE7¼©5†ÎDâO›�Á=Åҕ¡Aqµ†K —Œ¡Žª6"ªÁ× —,ûhxvÇ‚«‚¸Ñ9ã ê ÂÎ,AƒÁ™k€ûW1ãP±Ø[YCË¡ N=‡-Hð9zæð‚2D%s©gÁØ7rB•¤µë�2>¹ ÎÝ,£#(쮌»çÁbÕè|x/cAiø¾þ]Æøë1MÀ!H©pk¦ªeB¼+­¦€ûÿÒ”ò°´}•¼€C [Ò@Ÿ�BSLÏN™R‡qx>§| -`¨ ²”)u0bž ©ø §±“ä p“ TEŠøš±d ‰ @@pý”)Â’Ã.ÓI0•A”¬&�À–f«�¦¥€,ÄÐJ™¼DÄcíhŠ ðg˜[5$ ôʉ2ðI àdè9ªÙ6ð^œt³LÉ�‘튔:´{©föÀ¡,Ó`9®P“„ kæ=šFÄiöÌ2Ùˆ¹Þ[JŽÌ�Û¯&-azi™Ú„Á ,¬”ÿbLjh‚†,Ø–]¤QÁÖM¶ÒÁ*à;�Ò± °‚E»2i ¯b~pÉìÂW±°•R¿`§ðUMÃ+ 9M!câ©&™é¢&(*RÑt Ũùj$Š„&JÚØ�2í�”û3ê"^3BT$-=L›n„ÓØ÷@Ø-×ëŸÕ=ô = 1’n{TlβQ½OZpöÖX®°ÊÙ¸ÀIEÐ);Dñ*Õñl�:pð©f‰®âH.›K|K›Ï&l \/ ‰¸²uƒ¨y~«´°ûƹèŠÕtø%èeš™ÓBA k‰Ó”ë|ô2Ôº€ürМn†e'I­•7îŽ1Õ�‡<¤÷˜¶&s'××)±¦dWÕ¼YÄ›¼‘¦Ä}E%@¾Á,;—G !#4CËĬÎð%ƒaiÀ¢¸YXž0nºI•KŒ´TH.‰6)bKi'sù:gÙÄÁgFƒ;•#ŒJà ”Cð‹:�YÁW‚ æe�i”ÈVeêú§¼…ï<Ôü‡&¬ã”‰I‘VÌQÆÅœ“ ¨Š×Á=¤Í)æ:È+œNY¦¨øª4æ N.fÜ™æŠ¯Š‡Ã�6çÊÁH0U:ú»ô ‰0!x_õêWŠ&Î æbgI%¡ˆ8)~«„\˜Àä%øåbvL¢j£ k%wao@e5é ã­Öä7Ø�˜ŠTb^eüT„¼‚—Ui¢&ðˆR¤¤u!çqœR@\’J!²Šî_Ê®*?¨„ …–ͽ,�)P¸”’I.å~-kN/¯hIs‚ì‹R �­¸,[ÊœA¬y–'“ä(ïjÙª1Âi4ßf/˜’ê¼ êd9D¾øÅTq,ñg�xãR™ÕxK­JU"báÝ,IŽž’“•[™²òÅï0†:å)= Ê‹©G/ÁÓgzH„€še¨ ö¶Óˆ Ü;øœY�Ûa–Gz´ä8âeÑI>™HêÌ8ôc^ŠubÒS(\[—-³âô½Z5)à=8ªW9q:õyK1Z,X‚èhW[ÙìkÍ„£×["½K™ÇžEcÏì‰Ë,8é�r}i�u³¡©2à¤ñËùoÒŒYú›4 U^š( Ô³™ÔX¾<áeÌŸ­ L 'G¦ÕU¦%h±ˆºF-\1­ã*¨ÑNJ¡�ºrpdÚ0U eÚTi©›Î‚1ÓÆ¬6eëæ¨Î´µ-î3mÿ:ÕM¢DªD$'ºI”¦Îs“ȑŬ*½Ò¨V¥iUì«Ò=��Uºh1´™|–±¶Jc-$7Ñ` ÚU:]Åö*1·`#÷&œÙBMlÌÃbŽ�¿X\²±¡*~Ù¸•Å9CÓPhc{e´´1G‹ª6þi‘ׯf«mãÆÅy‰a[´wq¤ˆ -/ަèqŠIˆ¨ÑMÖ°€uG,¦=)cßóQ�‘WñÇÂèMHªÂíM–²°|“¶,t?‰dU€¿Šm–@å:Ë`Ò_•ÛÆdDM<`’d•ÛÆNMc�RKs�dÖ*‚ʵ–1A¤ÞœR!‰Æuæ…$?çü ÉcD8$¼Nó bzNg£b¼å‹H¢~•U")–zB•ÍNaE™ÄÂÔŽ”êÂôˆaêK•5ôË®¡z�%àPe©ÊÓ‘*Ëå¡ -—¥û0µ¬J bÊ›¥QõNŒ˜Xå!QMÑÒ•˜.i)MLå¬RŸ˜bj)R²îªITLÁ­R­˜lYLUÖ¤-¦PW™]Lí¶ 0Y]×,1ùH™M&Õ1  0«%¤ Ê`c€B>Ï`ëËŽT÷´£ölŠpäçW döžê‡¤Ã¡ˆJ1…]ê‘5tÆf@ñ›úÍ"hj�+íÁ싦d˜ Òô³TVêŠÙ3U©Qƒ§i=f-T#³�šúdæUÓ°Ì -[éaf¬5uÍ칪ЙշRûòiªªùØÔG32WZ¦Ù¢MÍöjÕW³]»TkÁY8�˜úËÁ|G5d&¶<¥í8`4º¬n;†o@fT#wo$ž¿ÐÛá<: ¾ÈpËT_´ë„€¸Jå¶2• &ŽÁEØmf*rï‚$â9¤ä”BŽ%äœÅ×�EsV²à°“ÿÈý(Db·+³ØØC)Ü’Ÿ½Lbcï(ÈMvò`•øOT…‰làG²ù)Á&›FE¤òL+duì逾†§ŸHbƒm]%?ÃVÃRÊ8²¥$)-fÞ1É+ÓG@öœFÕÎ ]Ê@¨©(SïY‰â´”Ø"w¥É/ò-Ë$ùÑì<{|M¸qô–¯kb1mE—òVilòÁ”}&ë>’ŸÆþ®²ØŸ•ýØ‘"£L>ª™gÀ8<Ëëš�&÷]f±�d2ŒiºÓyéÑsW³¼|]K –0ö -ª€Ô´’Ð@³C�){°%�¤ÓuõþŒØzC‘| -1„¥°é%ýHËd'ih–vcÙ±ôfu­ôHzÐZ)ÙüÍ^)Á J »°H`c5ñŒíCMMcÊ6 gÉ.Ìݤ]Y$”±c)ëL±¹EÔÏT§È^S� -=KßÃú™½Ø+˜-¨Ð}‘Pê]ÒÛEeN;Ž×ºœUúoÏÊS™}šlÇú’&)�æ‘ln)‘ ÎÎÍRC J+õoBT–E~2ygoë+ùA4 ®”tšš®E´^ÀeZô×—¹k ¡pT¦eˆAÈ—àíe&0[ΰ΢ËTjÙz-s×à¨$ëÏçu �É}uR¹¾'X—JÒØ“Hä:å 9á:56~b1T© Æq6¤0]ºä6,CÄŸíéir¶ÈQ´…¶Tœ”ÒäŽ4ÅA¾a™ -!?˜¦Lȯiò;–éòXhš†"Od™f"Ox>OEîKO}Ï´ÂìÑlÚãÛZ­^S—´�†­z1ÛÕÈÚ.²ÈûLgi¾Uõýsd™È9’b/š|�îJ&LEº+ÎÅ�"ª–î -Þ‹šÙÀò] 4B¥¶,ß,Y\4Èò]±8aYX4ßU'}W¤»ê}*-ké®ú©¼£æ»‚ÿˆ$fÔ|W(ùÄ™X-ßU EiNËwíJÍwé�SÁX¾«vï^+Ši¾+È=|U,ßÂ"9k å»B^ ^Îù®`wç¼½–ð -Â�ÔÌÒŒWp›qú´–ñ -çÅq,2^±ç féh6wÍó2^qù18 •�Zîbii–ðê(ßÕb²¨€ o˜»ËtWÈù¬‘M°§¯ïWoÂ08f]Ã,ÛÕ<ÙÕòÍGºG •»ýü›óõçôxRDë/ÞÀŽÄYâßgß�¬ðþ‡Õ/¶ÛÍåå§w¿»½¿À¹²+Ÿ–RâÔ4üǾ>+—Ê‚±ç¡(XâfäÜ@¾e&ˇ€Ê ÑÎ;M/Š„6P‰=4èNk°ùA.t©"rHN¹'$@é3©ÛŽ9ç öÛ<ô.%»ÔÙ§óGN&!ÚÃ=Ç׈÷îÑ h6 T|ôB½Fñ.—ääN8[ý¹Ôõ ¦k¦†\6Þý¨&Öi.%ó¶�S^‡:t@x;άƒp„7Â&�çCbšÞi½Mhâ½c"çGL†;´TtÅÉú|ª(È|¢×;b˜äÛiJVaÍæŒ´ÐÁ1 ¡Šœ±¯ŽœA Ó(ùÈånð’B -Aºó`ì -!�ÎèRÕ\‚ô°E£šÊð�_1Uõ-8y�’³¿kZ$ äÔ6 ª(_ã�Ó 9àlîà- ‹.ß’˜³XN‘ ·CREh±l&˜�¢¬ÇS©¬ü(ðÛjzÐæ^ãØI¶7­ ã–\ÈêÆx’](µú2ÞI´Än‘Z‡Æs>²µV ®DOZÑÆ#™N¯Y°ì,? -�µâ8EMÛ.×ÐÁ¢ï†$Y­ì!øjj5ïáäÕ�¹f�G­ÇIÊjm�„HÎcå¼:Þ[™ ãvLµžR1!ߢJ(i½!�l^ŒZ–ÈM©f*ßP«áh×y­oä[d¿À+k$§ hO|C-—„7êFÂTRÉ:A|¯V^ò0çS­ÐäáoÃ\´Š“p‡n‡\íÉ#í(•\™ªBñlsÝ9­…[F®¡”êKy 8Ü6øB-Cåc¯¦RU}‡Õi%­ðqЪMZúÊÃ/¯ ¥±|ìR99­Ÿå!Ù4j�-¬·.V‹Ë»äXf5»ì«Öö*ÎKõ¿<PÕ‘�À¡>,r¥…^�ŠŸ±çQq$Õ&ó ½Ÿlxx,ÀÒ͵Ï<‡E¶cq„!S-0fG»QˆˆUVcVѹ›g·ü)j¡6ÏNƒ¨S¤ÅÜ<;@ ½‚}ÃNë}ŠÿÓÚp`(žëiù8ßµߘÊÌ�9E†mx¸�GYPxÎXÕ:\9M18Jµí�2™cú¬ü�Gr®¿¦eòp„‡‡o Åô|‹ÔkƒT¿b×?i.3g…ù€v]gÔ‰«‹ÂV.Lþ;¨ Î’VÄ‘QÓ>åŠ�(0r˜ŸV„Û`�ê;V|p � Ã¥\©E -GØ7h… Gx¢.»<„‡oÙ÷Z‘s2‚>XíDdLDEW«±Èoäõ5­#‡J¹Aü1Ö̽´¨#¸”²A+ýÈI¬¡sXyHîž#9µŒ$÷4è£j¹Ið8vª±Š”D›ÓþÕÊ• û6#VáÒÃSœëÏiL�곈§±j™ ”C¾§ÔÔ„‡)kª¹9$nh…99¦Ôú�S+e”¥¾§cÇÞsP�²&Þž2U ‰g /W�H.â !;yßÊÚQ}Œ\ÅÔTU«¹ƒ"¶£Ö°ª¨Y¥Õʩ֗)ï™�ê³YµV{~«ê:{O]š6V VÌêÈ–ãšëÍêðçš´:AV»¶šF«qkÓmupmIX½ÜzéhY][bVz7/C-Ñ[-W+åkËÚÊýÚÒÏe�Ë-båƒm#åÃi¯Y%âjKæŠÅºusQcÝÞ¹øqI¬F²R‹\FY)J®¶\Rž\•Y)T®Ü¬TÌ*Æò�ÔKÁ?tâþUAˆp7çÜsI‡°µ²#z©jøÙ!¤Æ4R$;†i- "|A©Û@qdÈÐT �“05IHå0ÔêP�©…¦jôÃ@À:À4>Ôê°±¤åá2†êL„ÏrP¥0æóD­åé&MO¼¡c ¤ÐOñ†'ÿIj,c <ÙªêÆ˜RKšJ,÷$§4ç6ž€ùO$„ÎÐ-ž l×§ø^èºÐ!’-€Ô!t¨E³çüF£äXáiÝóœÊ�I?çŽé“ÐM€‡ ÞõF†9»©çÜÅ�àd‰}¯ *Ãáðªahâ Ì×aH‘]žù2Ò ÿûý€‚?�l£|ÃÈNd}¡ø ײ{Ž瀹¬mj“¤`¯€z©“H*¿*Ç,!ß� €l·/É  ŽYÉz(Ké"@ä”ü*¦ä#*Îί¥Š=Xè"ªh8Ú9€ìoÃqªE(, ÎènÒXÀ"xܤ6¬WÞ*#ÈpsÒyÈÜ*âHäRp*)DˆÁ¾¸KšK”=Êî¨ÐH aêoÂi€ý¸S!J…Ø€´,ΰ8=­7&‹*¨ô,ü«àL«_òL™€Ø… JBx“ Ž£¼©MX1$V«B}è!ĉbÑ?ÄäRÞ3µgSà'?¿DÕ[2ˆd#a(“–bQÕ�&ÀÊ>Z65{UShðXžj…Ðl9Ô6[6 ’³åe°�-Aƒ÷ª¥j0 -iƒ -mÙ'@±Ú;Ú&2dR÷™˜Åf4˜Ó¶¬A¡¶­ 2­¶¿A«F& ~5Jb0mEq Î5Êd�¯Q/ƒ†+*g²QCE™�`]�Uƒ¬�ø¬mÚàïŠ�Ln_‘tã ¸ïØ•À¼ñð�ýÄ7H@¿ñ,µ(W3‹AÅü̲`LÒ¬ÆHÍJQ1\3fc6ƒ‡1ï|¤dòù¨ -jc1yÁL1•\a&“?̬³p¤eŠ£Iâ1S’ Efrª„'3MåóÔ|e‚X6s•›ØÂLª3c™I~fT«$D3¾™$™ t*mš¯JÍÜg«™MÀ5Óa%›‰Ñäe3CšL�Í•¥ìmVM“ÑÍòib¼YH+qß,©¦˜±U55ÉVú…Yn“¢¦]SSÌ\©3f(6µÇŒÉ¦™Ñ¹R¡Ì8mª–™¯U3+w¥´™1Ü”;3˜›h†õJQÌç%}Ò,ô¦rš%¿RMÍâolö -P%7{”Êp¯že¦4óC0ëQÅôVF¢TÀ{ðz4E½ŸÆ5m¸)+óTL·J¥¿GµN­¬àS~VÉ@è‘ø<ÀyOŸ¢Ï�èÇ”Fq &Š(&y%¼1°° ÕJ!�ÁOF\A%ù<…Tr_ -»ä[*ø ß ‰=h/�Ðr­æ“�ü�cxµ$:e7»›‘¥ªeçåŸdÁ¿àëzX ®eÝjdÅ•êœ8eG‰¾³ -¦êm½d[¶#=ŸÂšÔÂi)ß_îɤ^ªZÃG$oJ…3¹êc¬Ä0ˆu> ¦‘FgOÈNu:Ÿ§Ÿûš¿äåëjX\ .Ô$Hg´°�‘Oâ�í> 9‘mGå.�mJ~bG×­&©;žHýz€l�÷çó„|ä®}Éw,¨P~0=+?{"gÕ뽄!íD8@E|Wœaf?’©‰§82ñ)=(NK[1÷¤Òý.KúãF¤Úwýʶ9)t¢ä¾á‰Ð¥ÈP#ÅyöBÖ×ì_©Ál)@½–•|€,v«Ò£¬ï¢À€9óœÀOžýE1þƒfÌnaðìäS›å[”åлu¢Mc-rPqhéÁ¸@¼±0xáÿÿì½[Ï/Çuæ÷ ôx @OwUõ)wöŽ3ãDƒÎ ‰„²Åñ0‰‚,Ëð·Oÿžu¨ªîM‘·c‰ïÚÝýï®Ãªu|ž=ÅlE3ó:ÆàåôŽó/ÒòC8(ދ╆曓|±w¾©à¯s 6¦O�÷±âQ+™Æt Õ²÷±ßÎè"ˆù! $¨´iéC0fL7­OjËΑï0.%jˆ å£xÝŠ_bn"›XWȲ¯ëòY¸Ðç:|ö±ÙÃí'ãÍd>P’/O�•ß8:8},„ɸYÚÆ‹áuîø -ßÔ©ó=vçFé3DŸ”*Õb&q‚õcÆ-=ŒþÛÖľXÊ5V� -ëÀ®zú­Z‰L.ÁJLE¥_±T©iX¶(OŠ%=\çË~xVl�é'sù‹õ}ïÛqúľkc(úÎŽáê`Õ®)bô»6‰êZgrUS9ù„wýk¢¿Ä¸vº>Œ%ö �ùÒ­?©Ç?gûý^‡öûû�/�Òô€ìy�(þÔÿSÿý *1TöyôKâB4›½9µ:…Â9£¸J ”H¬¬\b2?,K‚@D¬ -cÿ zƒê­mõ’�%Úz5ÃR ›¸Òð —J»6»�ÂB•Ñиp|Q�¨(¨yÔ÷@fÁi®ÑW/ì$VÉ#YÎpMVÃ1¥xÎòÙg3ú$= -2Œv-^ñH¦Äï£gKZ˜L40ø°Â¾¤úð>3È")òIÉßM{d’”cXÕ|Ç}ËU¬ÙC¥ÚÔ )��ûEÈìU -FT�œÃp«0IP†€Í/„ÔçªV³(4ÚmY-Õ¨ê·õøâµ>üìG‘¶Çr¶É­ÇÉc©�ßùeÅÙ~ëQ8Û9wŒð{ƒ6* ƒãÖÍ*­—qËÞºœ}ð{‹jª„Ä>ß~«{N+4õ—›i‰±¬èÚ™kB×Âð}ýôEgÿ}U¸1k°Êþ�ŸþòÀîÛ�Eóäý>¥ìw ë¿‚®ÚËÓþ'À€�ñ’•3¹5ÊÕa2‘DÌÏeFͱiDpNìB$`aÓXÿ×¹ZSíåŒ\5¨Þ¹DܾÚùvãah2kUr}û¤f �æ ÁlópeÂ#ÿï ŽVÏAN(…n¸]à4,=LæôoqÙßZ ëñ{tÝß‹âK ÓÆ»ß:c;õ¦ã7²wYø1èUoÇp©�ñ›F•Z -59æèóϵµ>C›:BÎGäh¸îð&Ü|èQÄ ‡ßô²ƒp¥ìÕDÞMÑ^¾>,:j’Íϼ­Â=èþúp`ò©È;‡ì(VÆÓ‡–týy}h5»ÇÃú$íûvÅhV�CT�Ø”çe±(ú“bñÌ¿‹¬¿Y,Äþö±`§¯Ì…�£‘k?G¬ï‘adû^Šö›ÏÒk[Fl®†WnÑ‘¡ªc�]*Rh„0Ô. -¼wZÆ(OàÛPVI!lj¨\,3*¶aF ç| Ïo·ªðk²§ŠµB°ó›±´Tý¶w­v¼:Ó2ü$°,z‘JQ3·y»rÔŸº3G’Pôï´ž\wS¦�í*1„ÍW¼Ô¥R;a0:ͪZí3W¿³.Þ–©Ïs¬só”„x$«ê5t'…õö&·«´v˜Ê/ 7W©–äºG¸v§×ÌêºÝšä®rjìuæ ùƒl�fÊ¢×Û ù‚³ÇÔÉ‚îÙ¨_XÁ%øîûqÏ xËÂÿ`�á×WŠ‚n·õ/þø_×ýØçäïBù( ”nâó¨uˆD~j�Ëi#»Ö¹µxÛ÷ó¡up0Œø'´ÎQƒ,"Ôq -#-ÕŽªŽ6¨è°Ä"œjçt–ˆYíè4ÿZ¨�“åâ¿`jòIûÍQípݲîƒÚá”Hªü6S -£Ú¹<ìÖÕ|B-Kµ£Pþ~ÎjGÑN{W;Ô©ˆÔ,´Žª>„Ù'Ãr*�:•“«l‹Ì×ËÙ* ó5Âr€�åX{XŽØö£õ° �có²ª ËñF'3˜a9FãšM„åxºZ §°K² -%Âr*¿T?Ãrüø²/]ó°¿i=…–3@œeËUNþ¥D<ÏÃrºN“q9^MS÷žÌ—ûÞs5#c_>#s_~2¸ÅÎ-€ÞO¡¹û\»×ÍVæèØë jlß O7ÿ›ûòœûŽ(Êž®stî¾€=A”2ûÿ/ÖÐïô ¡WUÏäß®góºÐðo¡fnŠÛ§5Ó«ë®Zº«g)vþ-<Òªrœü[؃¬v)üÛõ´ójro!»UUÐë ^ÞíJ³ òÉ»%'¡:Óôn-!»aU²CöþäÝr“ô^z·z8†º·kñÔöäÞáÞ`¸·0§¨ 1Ý[efÿÉpo‡Ë"{*Ô¤2¸·Sj Ý[ÞUüéÞŠ`är�;¹·‚ìÍÉ@Ó¿…¡£˜×éþ­è¡N•�¹ƒ+&s÷EÒ¿…ªÝã¿ýT•ýäþ-|Ûé];éßÂíáX²îß’•’ûóšÆ8O_ˆßÔ5Lm[í1ñ6?6Œ¿ûl74 8˜·{àPmÖ;ÝŒ8€økJ‰ξº³�Q¥Ï‡ö\74àäD]�ßsD!]^·\Ž>&xRB`},—c_h(ÏÕøÙìÎbÆ+;H�ò:ോ˜¥­?œZ(¡U^a÷¹mUTÜ Ð†ÕÌ»ÛC2ð ¾’èöª²Bïc"ön4Õ·›X9ò�éXÄI~ø‚$ºm ذ͟Î5N”ݦ”³(±(¢˜¾hï]õÙÍ÷y !P? ±›¬Ð€p W¥:"lñ2Àä0¥:îÐ7–,h/¢ 0Êa‹»$†øaÚˆ*"qÌYlJ ‹(’±0Ô6Ìoü¤ÌG1pŸß0Ä� ÈÛýÎfNA¡”ƒˆùê|�r_�q!èšûn‹¹cóÈZ‚Œ^l'²¨DpT6ª`I`ˆ+o½©EÜ%5B£Ýœ=³ˆ«Op^µÙW3ê H ÜIJ`?úÎq©»%ü¢EJºd1“�µ/$FçÖQ÷'Ñ…�Í \…A>’t ^b'4¡ŸL)¦&=*KšsR�ój¦NÖKœ9iÕ™O¤¥) ¨Â‰�ŠÁÏ&ÒR¶%pëwÕFžÎ’ƒwWŒ°®P�qRººž92"ž\ɨ�C�å¤r ›qdý­®Û ¾á6qÜ ֆιÃÈÿðˆ,×JWûå?@%‹ÒÓ”'-¤€¶Eñ!¶Ÿ< | UŸ¡_kt8°¿èß­k K«ˆ„·²,˜$QÐ…æÙïM(^¤J\ ì~¡� ùZ%•Ü]Yœd¶m‘]ß¿®EÁÑF �ªÖ™[pZTÑf[I�ªÁ4ÃâÅs�‚Êç`õc#AÄê$=Â�sÖ¸OÕ!ZVPk„‰#þ+ð€IPüž¬@˜’’˜yÏé.ýæe½yzE: ibÑÂ#¸¶¨¶î>ø©t¸×�—?‡óh�ŠIÁé9‰ ¬Ôµ©ú\,LðX��µ^†ã`ç,@9§�οaqXî”P›MuŸ‹s”ðHú�Ån4쑬Æ8/GzîÔpmWe;1NøûI¬HFc3¤¯Ð#C<À†Ç…ÉÂpµJ{]UŸ‡ÎlµÌXÚe#qÙv¬NRJ¦Li¾¡a¦-ßœtn¡DkúÂ,‡Ë‘h¾kñÄhÝ7JÍiPAdµuƒßÜWé$|Öå9‘[±’ˆ>á\dÛæ¢�°=×ΘŠ3×ÑŽ6.CJS`õœVëz:Ax¬jY�¦B|å[}+óp5ú(6aUYæf#â îªiSê=4Ú±y…»_[ßà<ü UaRôá^å8º¾Ã[qñÔ)@¾+ä2鞢&5,£ÐQåôPwê1п›øG}GNA�!©1*Uø“º“·8~sÔ±\wQ•ºX�Å2ÃC] ëyÔê@ËMå_ÃÄɳYèMy�ØÐ6·ÍóÀ¶šv³8—~¯¸·…~xU¡ùªÓú·W8ê|2ÃF‡%="Æ ªzDD?œ»DÆúêÇ3‹�'xŒ}Jà \·³/ÒdÊ7VâlZ”Í™ÑM�{l,¥ñ É`Τ4Íê@ ø5i©Vô\®Ù‚Rã QÓ~í‚Z3a‹Q«„Îd²µÃ©�Ò´»@ÓÖÍ?J×éÉLd‡Ék2k[Óà”¦ÊŠÉ0­—5Wt–_Òh„‘‹nˆãd ãÎ+ÀšF³Š’ÝMÚU§Sj2Àk˜9i¨ã¦‹8�y<\ˆG›Ÿ}£H×€´ ÅÂ}(Þá9On .ÂFé�(G 0=6¯"Ç“gÃæ]áõJHÉE*ÓI2M‰0:ShK¨±ÜãW@D?Œæ‹öã£Î®›ˆt®‡‹'ê–sº�8û²ƒ&w±_n%ï~*U®'JQ)ÕÉEUÆ–`@º²Jzˆï!Ü]uÔj=…[lo[ C¶@Xz:%‚�?„Új4 òÕ‘’TãŠë¯œ%§Z¤6G+5®&[›«Ÿ±¤%`<¯:(”)îd­Ëc¾6 æ�ëÊÿrNšJù9Êm pš¾“üïõ ät8ðØ}Äz‹ŒgN …ì‹-]«?#ü·Ÿ‘Á�ëŠpÚL{Öæ-´ý7ïCN‰ò�Ó»ÑǵkÁÄ7¨øí² TÿV˜×T:•ãAêCœ>9nüfñ.¹>¾»#âö9 ËϰÏ¥hK‹msz8×GŸw•3‰—,Ö)ë,‡ÍuDG_Ÿkí>™Œ)'×䥨+M[»j¢o×°€X9JöÁ~¨ÿf¿îtìÜÜS0`* ¶Ã$ä¹Cyk¥vr 4 [3wú}ŠîÕͼ®P4 µÆ=‰ã#µ ï�ì.©…ħQ¬ Nüeó=ê UzE¡@h=ƒFÒ-5#¥^*PL‹3rO]Ñ‚(ÞšYXÎXm}t¥­JI?`R·SvQ/ãL4ýO-¬yNˆmƒÎîŒóä°>“~ä0y*©ÃÍ´~zíÎ ‘çíR‡qžƒ”,naŒæy `éiý"v¤Ò}¥´S½.�_Ìú¬V„‘§8,Û¹_ý´O‰Ù n ×…=AW°`溄ÄV¹f ƒÍ‰W"­•. «Wq�ÙHë‡ú ²Ý@¢ðRˆ)Q¦r/³!ÅæQ23m2嫞¦kC@¨a)˜³6G.3‰•$…¹¨Õ}¶iVV–Ý›†'PÚ?íÓªdùºåY ,j {—;µDþV×¹]|§»ra;óãe9»…� 1¢aQØQ�Á†Nk�-h#¬zëï‰bµ°þÕ^µ¥ÜC¨Åa€Ó“@²;h:P�nFUéNI�t{:/4T)íý!u¿&¨zéT8BêÑÓœûK¬Uå"mÒݯb®M;„ï¥ ;&]úhúž+ -ä—ã:«�pwÏ´Äà*]^ר�sç‘ Ù/•ºƒ©ç7/dƒOrD£pVY¦·Ë|ÑýYÍËvv·¥–¨¹½î£ÄeÁ„­2³²Ôîh3‚¡üèþ�Q—Á@{Ö|n’½“áÜ‹‡gÛz#�‚ܹÁ›�>úÒ0G@�Õ×Õã\æ9zMÐ�/ÎØ.i«!IO!Œ|‘ ‡dúÞƒ&Uµi¾ä"´’yì¥?&Ó¯…0_*B=ýÅ#$4_ ä8¸؇*‚Pó�F°ª}´úôDàkžÆ�õéŽ Z®ˆŒµM 'cr¹¾"n—k0ã{ãJÍ0`®ç æšÏ�â´72ô[(£“¹É2Š9mÆŒvæ¦ÍˆhnìœNû?ã«¡&2›š$Cµ“ÆÉ�nj¦ û¦öÊðð¨ä2Šœº0#Í©/3"=éÕ\§úÍØvªè �OªNïAœü„ˆõ(•š_1¡>7ÊAÃK}l# ÕÇ?BU}žÆ�VŸÏ}õ9�ðØ»º„ßü Çó;0¿!qYHäâù•k7�ÿvË"•q(lR£ -Õ¿hØ�ØNZ¬µ_G?…NÅû VZ%ªi½öë.³¸ú³nåTõß ‰­ -µ¼¬¿ýe¾÷Wþ´(>‰ó+k_ͺ=ÀÞùÕ,­Æ…’N�˜¾Twî,s®øènØ|•â¡mÔ%þƒÝ¿1i«Þn—EÄ÷i&Þ�|8ê -ß!?G1ÉËâÝóQ¯oüøÓbøäb@SÆß¨°H¡š»«(sI˜%v 6±È!§�Z„ðMßV^Gï3~InzŽM_ÍQÿ~�+‘þ¬P4ý7G…Ôß-¯ëïïºíý�?i‡O/ˆØ–Ô -È�þÕ$Ì_ÕQWî‘ч¸€B‡32Îï«|c -IüàÇQQŠ ‹&·ýJ°C…ñpXƒJ$TC‰ôËúÅ£^ßø“vx"Hàe+Ï5Ù ·á%;¥rIo“´kØô º]ò·!À\³ Tµ CÑ$ŠŒ'ù¶ˆfð0™ßš³”X”ÔÐûJ‰Óÿ€TïôT‹­„x(LE+€;‹ûF>QyGó‘é.¥Ÿus(yžg •ñë¤.ÃfYg Í´§Ÿõò;Â` -aà'É¿f5–*$ˆûͶ¾fÑY툂üˆâ½·vU³hMT8ÀÏ?ÞÆz1ŠŠ¢­V¯ ‡½Óø…[`VäHÈñÒÄhíÞ«3�*¼±ÊýçèoÞWÐgO“(ø<“ÄM[‘3¿žb'±(ò%¦µs/¶ó:Ç5&´ }8A±+ðž’È|<®Ëg5§a쿉9\XýÕ0)T2’¯Ox÷UQ|æèúôᨄ45@1dÃ.Þ´eC+*`¯uèoBC„‡Ìm–n\™ª>›P‚ž·�IW•—Í…qßi v¹€È´•„£‹…V줯EB³jŒ�%»xë[¨Y[ØyY.þ|Tn’é'c/å›ånË·Ï]9}eîÞ�Üá1`©¦qM…‘ãŸJ%ç(•Ï4—©¤rÎS�åºÈ—˜ÖOêÅXgoÝùÖ±?©Ï?'ø½¢;øý=^Õ:H»UýóøOxàÿŸµ�OýnÙBžýnÙBžýn½…|ìwËòìwËòìwËò©ß-[ȳß-[ÈÇ~·ì �~·÷¼ȧ~·l Ï~·l Ï~·l ŸšÞ²�<›Þ¢�<{Þ²ƒ|êy³òlxËòleËò©ã-;ȇë¹/ZÞ²ƒ|jyËòlyËòlyËò©å-[È{Ë[´�÷–·è!ŸZÞ¢…<[Þ²…<[Þ²…|jyËòly‹òèx{Oä‡aŠ a«Î)„µÕ;Âé-£âu„5JÐzµ€¬#¬­Â;q*q!¬±,� 4ÖÖÈìXPÍÖV - áM„5*Mõ °FÙÁµG`ÛÖ–bŽU"¬­§×;'ÂÏÖ¦² a�bcÍKÇXãQû9@¬-~8Z¸: ÖZC4!ÖhŒT‹]B¬å‘›;!ÖÖÝŽÕ±¶Ûxb¬…Äî �5öi÷²U€ðçe ¢á|ÛDYÞ¹®g�Úв•/Þ«àÃÏ>ÎÚö†Ä"â'DÙdí �îÒ‘OŒµO!œ}aíËu©*®¾÷~‡X ñ?õÛ` ûí¸Uþ`íþºÃ«ÝºÐSÔŸ ^í»†ö_Aßù�té C£FêS¡‘:ÄTh¤„˜š4RBL¥F -ˆ©TH15©£„˜Ju”S¡Ž:ÂÔ¨Žb*ÔQBL¥:Jˆ©I%ÄTê£2åú¨cL�ú¨cL…>êS¡�:ÆÔ¨�:ÆT裎1Ú§ƒL�ú¨£L…>ê(S¡�:ÌÔ¨�:ÌTè£4úè½~¤>ú#:v©£}@yz‚L /Qúhßg”)NÖÀxªûëŽ1EváËm… -˜úcj5}Ô>ùÛ»µY¹6Ú�`ê{~;à¥î%àÚ¨•Ÿ8:¾O�Ð>aë$Ô~ÇÖ ¨ýŽ­Pû3¶N@í÷â<¯€Nh�¬¡uh¿CëÐ~‡Ö  ýZ'€ö;´Níwh�ÚŸ¡uh¿Cë´DB h�ÚŸ¡uh¿CëÐþ�órî Z'�öZ'�ö['�ö'l�ÚOl�DÚOl�i�.ùHû߇û†ÕùòÓ 4W?ãê8Ü=Ðpšs)—Ø«Ú ÔH…Éa¸½ °¨W�¤Y¯Õð“ÍŒ®Ê)wž›ÿÀµW‹w™¿ƒ}sx[b"°¡üÎÓ&ƒÑØW5¡ß¶oQ9/ä ÞV‚ݹ—%0$ž&ï*<-G_ÌñR�áá�Pä÷x“ûü%ä ò*Ë<)LqY\ª¥ÄÛž›Còrjˆ¦í¶áÎñåÌÝ{6ÿd{âGÑg¬#ÅA–jãəZÛ„Ñ·Š³„âçû¹ßu;ãóåmß4F[ý!öŒïúqq#Gœä�ùq»]~{üôOä?ÎÚx�™­"svSü8O£ñafκ…™Í6¤uCT¢�(ƒÒ‹·fnÞÌ(€oyòté«V“§ã]5�Ö]e¨#AÕE¸®ý*LþMðO›£cÞî¾V:aj]r¿œˆVãFãÉ ƒmUp@jO~Õe�¾4ôô­¼Å2µ¸" ^h5;„“Ðå×Ó{oêQM±¸—fh¶/òúU†…N’ú·V³Óè¤õ‹•S’&TäÑÝÛÊ.†é·è›×è>!ŽÞ,iz란e��¨Ä…÷tUA�àP¢€wû ê4Ñ`ñ\Âh«V²®¦Ú -ܽÐ^ô¿ ìõªKpý1Ù‚úÂ{_ +vvø -B,&°~Ì®e]÷ -RW7‚í)^3�¥Bh<­–U[ëvR?[7 ®|g‚N5€Á*¯GÐþbñ™\uš-æC.Ën KÖêUxV3xë -‰Â½´¯ÙÇu •œK±¯{$p'ÑwñÑw�KwG‹985¯2HöÃNM5èîõê#$"ÂzZcÇzy?V[Œx2¬H¢šúÅ®˜Û©Äœ!1°¾w«M³ž'ºŽhRŠqµÑ^ÙØe摨لóLåŒjàw¤F¢¸Rx@fêŠfµ{ýÝªÂæÒ{(áK¿ˆ�=‚jµsÚaAhˆÛq¥'n³ž\FÑ:—¯Ë€8ô&m1Êûm,µdT—tç2<Ú|¢Œ7EY٬尚#µò2*7¬!¯]íEúIU–PØ�»á[ª»_§9áKrgkàˆ9èïù'=CkP­fÔÂWOä +ê¼Í6EÜlㇹCrµy”Sm’"@Að™jµeñ‚SÜØ.SØ"æÀ½y)^½Hßêsª$Sl ·§ �×)&@QL?ô¤ÙC—·–˜6mÞª„VúÁŠØùÙWØCê—âYÑÞƒ�häËý‘ YW(šÅoF¢VûwkA€QúŒ¬ÍqYhû™õªð–±w«#ýi,ÏÀJäo²âõ çe«;-¾Žâ²܎èãjÆôšæ²rsע궱@›½~醸òeƒàBÙ¯úÉm· mÎêJé,‚KzٔƋðáVµÔmv¯$ÅÔ”¦·ßlaÉÇu¤® )$ž•’é7Sšï†vU;x¾CA¯åù�±Bs’è7T;�翟I•Ow‹ -Áü�{´ÕLú|™{QëTÏW>½Þƒ>¾ëÂ¥¨(>\�Ûë0íçÖ#ˆ¹:N°Šî_‹õCªz%䫌VýÌÄZ¤ ÿ6ÙŽ\ÐÜš¢¯g𠤣Æõ¬’ŸýêØªU,ÃÞ H”Wûö¢·ÿº'-¶`zߣ Ò±²åbÑFPÈ%±Õ©J:/³¤øí{�Ù †Ö Ö«¬Ç=Ô®WûàE]÷4]è%¡ ^÷qŒ:­¨ÐsjçoÞ�ÚP¨(€Û…ºdÈ*UºV½WB¦ÈCù2ù›Çµ3ÉÅ•…*œ|år9ºH(zÍ*ª6Ï3„ÜÏ  é°Ÿ-,b»ÓÏüÜ÷áœâ4~qÚèúѨS{¸ÎOvFCíƒ?·í³`˜(uû"Œ‰Aà6G¹g+6lµYia¿4JK$âëyÍvŽj‹i‘ ‹‰`o¤aÅ"U!… ¬`ì’rëÇ/ÒHC²¼ê¦•�-OÃÞSÝñmf‡AHi¬”wÚ�t`ïk˜8a_RÓ, •´C…DAÙ—¢a¯R+WÊ-Ú{ɶ©[½à\,ÕQÃ4F¨ÝƳÐ$8ÃÄVík؆3°�Æc†ºUàÞ†’[óü�™R·ø›ðPîÁ —€WUš…ãÐ Œ÷.ÀB�!îG»ÿciöUæîàÕl%†+Cy®t@z;ÔçZ)¼"}ŕֶáUð²·•Îczž¸ ÆcÎâÖ�ûi\TÎû‘ӓ9»ÓßÓsî½àÆ«û…êÃ/‹±Áë!ü,{9¼Öž¶�[ÿ 0œ`½ƒŸð“¥q5£7]T»•îtS²fÅá—ÓŽoa—þò�Êz~dqú@D˜§Ø êA£ü +å$�Á§œË QõùŽ Ö»œƒŸü ýã;ÐÃØÜBˆÍ¥£êh-”s¾×ι*[Ú<Þz4ZÄ´Æ‹J+\  ªG´ÍûUÔ¹+ÙÏq,ø®Ý:ûæ¥Ú/L�,M>‰¶Ý**ƒøÁ�Øb�÷Êëú»_¶æÞßøÓ’ø$:�<,Y¿÷n=ŠUBuaÕsw�¶+Ò¸)Ùu‰LŽO\vŸMR -ü÷>ºkcRJ\•��™$›±Ìô‡ßsœÔ0¸~G`?úuþîýQ�/üøÓJøÔJiC•G£V¸Ñ ïccíîfäÞ£¥F©œq‹Ò;'PóÒ�#†ŒØìm<�aö«Lsäc\µäo ú'_Èeý�]�½¾ë'MðšÀ7!9wœå_M‹±¶¡(°sÉ¥K&U0\fÛ°?Èÿö_û8èz\ïC}ÿ"··:ZUú“&ñ¿:úQª‹áºüš|Öãû~Ò�u€G­ZÓQàÇ[…]Hñq­mM ÀÕŠv•fªñØÄ©xWÇ×™×îƒåᚬö&x†É¸ȃ尢úêö¢¬³�riyplU -Œòê°[ý=¨6‘‡¾Þ½B˜A,yÁÍ8j•·;›U¨*FѼjÀ•TË*ð9+‘ (ÌZ¤ÙäÖ§h�A²¶é<¸o½ÅŠÝ=Tܯ[=$ÓŸµ:Üýô›Í©©ãÍÀ{Vf¾»œÇóz|"!•äPÜnk³çÇp�ž$„÷iXa™Ù†Á¯DÃ÷m˜ uÔ.å1‘Õ@rºë}&«:4WD¾Â´rÔ×{Ž+ R1UŸä*”'§*—Dãq]>‹f�Búob3´¨+Éw“áp¸½>á[TV~åèÚôÑP?E>^Ä/â´9ªŠ»:Œy �JÎå L­b°˜I¼…níΘq…HAóÈ5Aoìº Kgßì´¥ãKŒj U©ä2¤sV…¹\E]µE…P,ë~],ýþ¬Ü"ÓoæFŠW‹­–/;rþÈܹ9¹»sÀR L›Ú"' 5JNQ(ži&S=Å„§Ë5‘ï0­�Ôˆ¹ÆÞZó©\?~R�Nh°½~Ñ¡Áî?è0Ù ìì`Ë_¤�~‚û ìuìþh0¢“F™IІ#P‚ÄÀ|¨xP%âKí}-ªLïC�© -2c´Û®3•¢ 00'¶¿yÒ©�æ |hÞ½Ç�‹ª®9& *Éù -©�Ü–ó20&ÖÙ—÷4XáÚa §;†¦ES  hˆÈ?‹“wÐO(&Ãuóþ9ý9�#€ª2Z©¸KW:ò Äí]b½„åV*­—±  E=‰ ReÄ£N'?væ ¯ ûóp/Ñá²hL„çàÚ fJ�c§O³/'öwˆÓs1*‘…TqÜžd†ˆQÙ°Îhó46'é“ÃyKIÍñ©N›ÕËâ–bu¤–%qÑš¬L•ªH#¨&® ;°œ•Å ­ÖǪði³Œ›ó-B—DÛëk? 3¬\5gŸ‚½šá{E‡Ê*ïÅ¢ -êê€è`“Û·&¿mÁ2ºþ0FÖÝ»"ÈgÇ’Üôj�ß÷ÞNF*¢'çú¸?Ç@ý­m˜}ÏR¸ Óâ žee—µ‡Vk<-ÊÓÍ£j‰…aCQð-X‚“L¯Îmø}NÁÿnFLÆsöÅ@ÿm`ª¸<Òë@"U„õhlLxskôùªÔôÌ=½‡íõ9ï¾+ÿU@އPáÏÞË+ ! $“;ýGÒ�c 4ëêµ7[¼é­[dßmηKl\@„*Æïsê?üì_,0lV0lÈ _÷;0çW”š‚í÷ä‹<ûVhMæâý€}Q>¦Ì—·mÊ‚! þ‡Á柧„õö³¼�û]¯@ûa?ìMcBM!MûÕ~Bûç�ÍÀÔ=Ž£>ÜúNïËìQÐ@R4öºÓ‹/AQ4Äè Î¥÷Î[£!.Ûi¸ìª¾Õ¹À -Ôˆ3®™ -_Y rêTòOE žÐÑ´ -’â�@¨á2OðYX�hϾ/V¬{C4šÅxnK�  o^Vã ãAÔÔóù{ÕÝ«þ^«QÝôWûR€ Ó'’Ó Õ‡¢-Þ:ƒå�FoÓzx;mŽ=Õ­:Mó3ïóxo[ÿLŽÃ¡Iû� Çu}h�f1‚Z›�ÝãÀ}’ö}Î5à/ª±&|6åyY,Šþ¤X<ó/úËËe˜/ŸËuúÈXÕ9¹îs¼úþÇ5÷QŽßk1G¯=ÆÆw8ëÿæ/¾ýö?ßJé¯þú¿ûÝ׿ýõWõ÷_ýÍ׿ùú¿ûú—(¨I!uØ�ïxÞöÅ¿ù«[- �ûË_~ó»oûÕ_ÿöëßóõ?~õ7ßþãßÛ#½-ï4õù‰[þÃ7·füw_ówÿÉ_â/—~û›¯¾ùõWÿÃo¿ýõ÷^ûó¯ÿãï~ðÅÿý7¿úê÷¿ùæë¿ÿêúÚ•ó÷~ã‡oÿs|ã•Ö¾ýáoüß¾ùåïþ“Ý@Üá>˜¿ëò?ÿ‡ß}û¿üæ¿ùõß}õï¾ïݹøßþöÛü£Ÿü¿úßõ�üß/þ¯ûÅï‘ù§¯~þíÇal–ïü†ò¯¿þíÇûØê×ço°÷ Kë«ÿðO¿ùú“«ð/ö_ýù_Õ¯þò׿ô›íï¿øúï¾ùµKþ»/þë¿þöW¿ùÅ/¿ý‡ßþ7?þ[Å+<|+1C…—°ì‘ˆ“ó–è¨üsýïÿþ�?3¨™8JoÑ?éÏÿñþÏÿûþãëòÅ¿ÿâÿø?—/~i·üMx]ã3[êñK_ü|”æý||§¥Ó~ýƒ7¹�ò_üâãÿÃŒkÞ&ϼÛùÞÿÖ>ú–•P·:bbˆ�qŸ3„ÉDwÛeXm3IÝOÎþi+·fXÞ”ïôŽíÖˆð+Þzµ ›¹“‚¶—Kàà|ü™±³žà9R --tJÞVõ(ÑNg­!ðú)Z­ŽNwRÌzØ“Z4úQ‘tŸ)»N_±-À“yu'ì†3M¼žó™þÆ5H iH£]˜§Š²óv|— -p°Þ«�¼×~™É‘I™XØ:¥Ôõ‹U°ëP:Ì™1Â^`gn‹_\μ©P -+t¤P�êð*›Qàœ»G1…މD[ܹ•Ãîtü)q IÔ1haµßôJDN½}UÁïfÕƒœoë®Ìæ”ú법ø[wÁŠÉŠˆkD¥RåÅ `I³Â@Ý×¥‡û…xwíp pkªÄ�Õ»Ä~¬âu�ò^Ë®gmNg" ¥ÓúÝËtàHWå~n[aÕ‰ô·Êhк”QRªåƒTPw -+‚˜¸ð%qy+]³H kD²UŒÐÍ«ÞìFÑqï²AÌ€ÚEqn¸æK4”JpZñ¢ÝçBါ«Ž>v""D—ÄÕ±p!uW°x>×±¹ʱwúj¶m�L3’RªWÁ^ú^¤/ƒ5N`u�yI´Æ7Å„|7ϪªZ­+€òÇßëÅH0H)Ðeàd×¾õîoÓ&b -Ôx–ËzŒì“n鹨�÷¬^Ö3»l.i"¥Rþ²ßT¾Ã– -\±Á $]늤3ÔÜšŠÍ1º�g×j“¯>:ÕÚ³�oh‰óÀ³Ê%‘Db<�ÇŸê(÷Œ;wqJqªº8h;ÚìN¸�ÔE%Ø—dèÎ bÞ_Ü2T‘“Äl(T’:jA¤ÊZø>lÎ3ب©#X,‹¯Øv]MÛlðI4«˜Š¥#Ó~�5|Ѳª ýКír$÷¨í¦›‰$Å�÷”˜×xétû 5—Ø0 ãß@T–iwR‹Ëiƪ;©iâ4ÿvâà=�aÿÓ: �L®‚Ì_¹ð>cˆ_zµ3W)T{zEñAȈPÞi<äý¶õ¢¬øôÆáé« ¨'¯µ]v[õælšB5 õnEÍË)GÑÙÔo£Àºk%~J¸.®Rò™ Úê¸M÷ŒÎ\˜´«·˜ \/¶»àr›®Ò©R«ÒÚ×}áà ÅàØ"† kWé(½×á™ü£r0Ò/´Æ¯m¶¶è„”ѽØêΩvÙÔ«jü„ý6–`ðFˆ€Û‹ûiA\Um8�)ØÈ‰nM¤ð^zQ=¿o45©×n/ÖÈ.�ýZ…ùë®"(~è9R«]°(¥hw¹ :¬Ãn:XDŦ,È¥¾šQ!ý¦æàöµò³+€¢ƒ½^·ñÎB€<ö¼mÛŽ?P¹ìú[fÙ‚ý$J`‹QÛà_6Ö¼|ð�Üs×ô,ˆ. ú çÌ…B¢«öJgk…Z´]Åò4áW �Ùr ¤ãg¿ª�ṿ•,/°~)ؼu×nsá=Ž‹(¤1üÈwÝsm½D…ƒ�‘ÅxŽvn:l -=JÕG„ƒ†å—CDíôŠN½ìÛtmàë=ÌÛÚ)½K‘j±xG꥟»Ca#”¥Eû?J‚òʺÜï²m$MïÒ½¶×/ä¼# Í)ÔXÐ)žŒ|È[#Ð -ÝÅÊ»I@ùwÜvrxò,ë,¢*½H šg ¨ò;�FÀîj·Š»7 �ÜëeÝ€'ÓOŠ„ÈÍKÕÅY·ùGo�½@Ý„"˘¢¨n0\6€ië)í¦$ýƱÏÚ%h«áJ|![u“ArËqK7+O–r•Ej·í©e{è¶bºTE!zp«¦Káp±Ûn@0Ph-'o°+ÌÇ7�â -$Âü+—TCÁj#/ã¶r-Ì;²¶á½NgÖF(”È\ú½z$(ú“°»þÄ‰ì¼ ;ŽÚ…|€­¶-7Ê~E³žœFyqÛbΦޗ{ÓP¦ŸG -<»ß%Ù9ú:·&µK½ªjï8Û™�èF:¿e¼æu Ç‚5^ïHË­Uwú`W›Ç -kœ¤š{s›Õlíæg6ú‘„ðm!ÐUºD?HïA!°›×�ì°еv»n]p,–‰‹Ñ”ðþRUmtðT¡á[“/ŸRvR~.ÐmTìœ(qíN ¤Á9Às]KÜB_û·þ ¿E‘Ó&<€Ð]£¹s¤ö«n�ˆÿC�6-< é!‚¯1{ÊÚ°Ôwë4–€…!*E�îeŠÀ·œ»ËÂ5’+›á>tІ@úšç÷hy§váZPäò7�ΪsPi:[Û•»­Ð¥¼ W¡0�!÷öÜçê¿ÂÅzK·•E�R2åįßvΙÝ\Û;¯*»ùo¸oì°PìÎz -Ì{ƒòð ‹ópÃlƒ¹¥Ü¯‚˜ṁ�aÔ·v+H.ú_œ•ÅSë)dŸi†–ÅFµÜ듺¸m%[M²ßö‚dv!Û¡-Í´&Ià�d.9iKÀÛ–á £Òz3³ÁÞTæŸY/³.D�æm³ÏíÒÒ÷sR�ÃgÆ­®Ø Ž-~ŒÙ¤4xõ«ÄnUi�ú÷]PEßÚ;þ¶ÝyšÃØ/ºl ë�’î‚f¡ÅMˆwæº^ÆÔêç$?võªõ—ÝÖl{ ”Š¢1U¬K×üÝ.Õ«XËqÜ¥=T³@u×AÑÄb–›}‡ÊbÖ•©ÖÕ씲Z††óQvÊê ­]°èúG?EÍš!ƒÓLmß|±Ø+8ú"HINÀ® b\?ü!ä7³&ngÌ¢Fb�t¿m£ælBM–‘Åæ_®ûP:Ý.߈"òäs0Ôå •{æB(ª4Nz&嬆`ÜÖ)¤ùU�ô&=;�Å,â,àêTÔúVÞ"’…Á�d0©Ýž' 1ÆÂK�· ZÒOá¯au)¸»Ñ™j}Íe©{ü-¨"òÜì’¸�ð†‹‰Š·mX¯ ~ÉØµ’'�µî›ÆÍ^á‹°’Þ7+s’€¯G`Ø$0¸D¹ÝFY«cO qoPöôfXAŒ||güVµˆ -@ëUFx5¥~l>Ò‹û¸Gçæ„¦!&?‚c½7ËádrXEâaqw¡,‚¡Í‘*´I`®Sg;·UëÿXˆÅÚm'¡R«Þm áUp’qÇu¡Ý/yÙVÿà®C¹'�ò$¸—šmè{yfX¦àrs÷\¸ò«Ô¾1nÚÚ†ºƒEUO‹b”Í8côshB,[qêFùEû´HßÔù~Ù6%#«X¸Eº/ó¨Ua ’ª N cͽU«B^.¡@ºmžá­!Ê{q,�Õ0>4ÀîW÷y€w¦©P¼Z_i/n¯V-ÂðàC±réÅÁHo?dsiµë,¶DTcÖÁb13=ëòI«'Àmåö }…,tH`f%‚5Ø 9~¤¤�$j.e!ÌÕmƒ.� -9¹)¥Uå’›ÏuBjiÂ4XÍ �y<‹Å£ó*Ðîã“eba›ÜúÕ”´ÝÒu `ŒâUïid xV“ÄF†l �í~�ÚƒWÕË[4-%¨YØÆrLMî6sx “·¶˜ßÄÈhgä'ž>±¾ cñ8߸Oľ,I"¸Þv׃zÞî¿°)Џ8™¥$XÅÅŠv{¤2z¯Þ%W1rPC` Εq^¥*b­—¡ˆ¤À†&¢)åô¿òñì˜k…m¶î }ì’�†•Gد㕉÷òA ”cGÙHs®(† -I^Æ«@ãqÿ‡¼paB€j°ED(M -‹™‘vÊÛR¬“eDҨZ bÒB>°˜t)vݽ<£qAp;Å“=,²tãNW$õ}àŽ’BºS¶’ n—ŸÔ� æZÀU,CætW].ξǦ -éÑŒ[VØ'U¸ÐŽê -tÁ�n ÁGתå¸Îá2!†bôÁ]²DƪËöfIr…µ¡�ù -R0¨Á£*£tõ¤ŒVœ²‡yΛ"ìÞžAäôßÕ¿&Ž)Eß6“ªóG…¤�€#âNéÆÃqâNÛ1‡›ØHvÙ[bOÝì7�K¹+dh¿Ó]¥°d5Ë>IÄî ©‚ú…êçnÇ~ ±"8)±¡¥({¯»�Õû\6vdC‰@¯V¤¼Ÿ6ÈÚ%{�dº‚óØY,@}ª¯;Â6*s¸NKöV’]ÔÓBˆSPx›QiÕ¯º[°‰n5ëm¨õ]0e*€�`9ªn ¬°mó´,¯Q´÷ø¢jh]ªDUšÞi5ô¾ˆ’U):j¢gÛÐ/;K¢¶ö ü~)}±æ� ^ù*pÿÓ¦ñ>FL¢²hI”€¿%uß{`î:÷�K…Œ‡Ù–çî¿©ÀÎÜ5>ò´z Õ]yKô�ÍaÝ,Ù¨�³‰jðÄc±^tl¬vçAÑ�S"¤e\­3k·�V¤‚äH¶è<­jƒ+m«Ú,ÛÆ< -©îƒç.‚6Ì~¢ô›ðè…mµXÛÙïuÝbU!HÛr?—]t)üЬÛMýJt|qç¹FÜö2}gÏC3”+bp‹9_’ˆk]ºÿ¯4Åâw»¢°‹ÍátпÁ�V«¡b6¯à€îùÒš‚’oQ½ZL…cX™T"�p˜�Bl�óÏ:oW·KQ¥¦*–÷¥„C’öŒš¾ãvB¿�öÌ«$­‚ÆòDÕ‰{6ãE� -Êí*gt”t%U ÈÖÖ1UfØ«Ü AÏbbUUY¥�Ô¹—ýÚN£n#`¡~l/7ÁLÙÒØ(o-ëŒì´åfsöá3. ׃„6‘ZÜåÒ]ç7lV`rÙkê:A *9OƒÙãG¿Ó¬RaèQú‡„7¥jV%Ÿ½…Í€1¬b‰`5çw„ÈäѸbܶÛö(u(¯åÐÕˆáå˜I‡66ÄýÓ¤b81]éªS©x/(�¹d7/¦ãñe5ëWÉuðƒT0²~@žÖF§¨7tÜi’ÀÜ£xc¡ï åì¹zÉ«øz(™|NéÌóeU`Ê58v÷ÜÊå~æ¤@ �YQ²‡±IÞ^žqùDbœë¬’‹, é¤UÈó‘…  -F' Ž9 ‡ -wÊs; ‹*pªj/,’XÔD®Ý âD Í»™ç€DÅ2*ˆlf�¨²%ãb6DºUC=µ ›lÞ‰*_1z–³ß¹(d‹ýbèÁŸÅÞB€ªÍbôz‡5Â:´–Vƒè¦U=¶üsÑ^Uù§Š3èÑ:µxm·¶ªÂk«E”ßIKóf€³M&”ë–÷)—øṄÕÚa`]‚5§œüÔU#¦³XQ�@‡E›À¢�—-1‹Bu™ÂŽVm}ê,Œmó -Ild«™tõÍÃÍ)¤i­5s*÷Ô4ëä2,ÿ­×’ªÚHL•ç�|}kå+3$…‚¶³’� ---Fñs픪•:Žy†wZ#4c¹m»ÌTO1s‰¹cØüQoFBN£¨Îú… ×ihþŲO使nQ$YZ� „êbÒdë_æ©)�÷hô½¢×ÅH>v%z©‹\‡åe¸†Âoh†‹®'KÞ¯¨Ú´­ugŸCAö ¥ˆ«×Ò㯠-£l •™Qô¤ê–Œçr�jÔ+εÀáA6 ‡:¢¼·!^cbQ…3±;ࢲŠÃ]ÙvZ˜ñƒ ­E›œÔèé,‹¿Wà*ÎCVg)žP,ÝjyÎÍë‘�È@U@�9U`yŸUSlTÄ>tYÞèp€÷¦ˆ‚ü­e(W¡MN~ eRêá!%£Sd’0HÎÃáëŽ^Œ*Ö_¹*CâÇÖâæ‡2(M.Í„Ñn�…móÚ¡ëò¤<1ÂU1˜Õ*!¼Ò�%kv3f…W¨ºôž¨FWA1óe‡Ójê-z¿y#ÉÔU”ÍSÔù*4Å�Šî­®³ìÎfI±!/¤˜ý©¢*ýUU«‚w‚†åZ-¨zVvˆåq›±Z#‰ÝY¢dpõR` -av/XQ´ ÝGlÞ˜‹pap%Î *“,FµZ©~1J2•õ¼ŒdËÚ*°ÞÕi¼ší݄ۼ—/§Rð¬{K_‚„Puäµx&ˆ2-]R‡¸ ¶T7/¹DWµ;-°­ž•Õ#¹÷„X†Ãî`ïó:¢Pqó@‰¾A=|·‚TlÆlq7Ä8Vm¤£ÑâŒNÝ5ÂA †ULÈ^ö“{ qÂs¥;Œ ôê'L&jdr?›¹m0$1 -*ËÆ�÷©)n´]ªŠõ­±Ú‹KиH, ƒä ‹Ç”ŠŽëgÚÝ,a¤M·‚:¦g‘– -è/•rJ{—b§�ÞB±°â|H¬�Ý2lÍØ l3×Èn® -f¨üÞ*–®(Ì� æP‘ÑÒz ¶Jlez© ¬YxNE&ÍhФîOΩVS­ª/û8-Õ¢á…Ũó -ó÷Ö»”gd�, -ç” T-ž{¿Ù½´Î%RÅЦ5#L ¹Z>!Gå),ÚTé€ó¤�l½^NÏ("å—,Ë|¹D‡å´`9©2S6+iïF:/Æq„9ñò| ¹Cfôtá‡ËO•æªkKm?4ºQÀ«$'¦¢…Ô²m^ƳqB(èÇïÂPAzLVÕ˜§RS‡ë<¾=ŠõqƒÕH…+§ßåê¬âuUÉñæµ&hШ  þù`»aOXR¥yrdl\k~rWüEý¾÷U^®mwKåà¨ÝF×âà²zYº�`ugNÕQp°ÔÝ2| ÊeµîÕìNÅMÅosDöb³˜ñrϪÞ?�ØÎʹÙ×a‡ƒ¥"M·D‡�šK¨zÇ»$÷E6ÅŠJ3!ïT«³¶7…êT«JÏ‚3NÏÕú >ø°š]¢†Áiîçàå÷J'k±¹<�ˆ\Q™–Ú!¶¦æ;ì9Ÿ©:£õao†j�Mh*ZWù’añ�³T,Ž©.1l¶ÉäD –~ «D%åB”—�VÅ¿P¬¯Èbÿ¤¡¥¬sËPu�Àì�-]«ñ µ×€nj8t€êÅî³R_Wk[ð1…|Ô"ç¯ -6)E‚ª¹PŽët€^ÂÑêßС§­«"q=n3Ž'vƒÕlã%jvâ(ÈÛ ††Ëhëx”  ŸŽÍf¦Ó±N‹³g™Ôd,èŸÿÌ’ëj|ZÕìvÚ27÷�ëp8Õ{G¾](òŵ:Ùa3ŽD@¢Î¡Ãõ•¸¸Hi¤â0®Þ=IºX@Gó.*f˜z´÷è–¡©èXFóì´6{z¸UqŸ­2AˆæcÈ£³u®�5¡ªñQ-?õm”’6KjS=$æW�ÂжÄì·Z-A 6.ánRPd µ—m‹¿uSCÕ‚ªÇ÷,]Cõ_áe‹Š÷µ¿|·€CoJÐOS_Í.«ª"U°[iŒaN·Y=2AÆÔÑi‘4õ -[zÙ$}ðü’ Jêä  p/À1Í¡~EŒ?g8ú»�ÿè À 4 ¬®\©j#f–{™Q^…U 6k§ U[á)¶tÔ*IÍÈ/FՇĂI(E‚¾oåùØÆ×Û¦û£Ê‡üÚÔµháW•‰R�Ú a§,�3á8ÓÖbTóæ6�*I-[hU/•z:…›y°Õ[i¡'n³ â%«Y�ÍúL-õ€%¨¦ŒËœ?z¼¯œ‚�¶8 • ®¡ËV`­¦LóšR ¬iÕÃÑÔ)¨«b”©'Yg '–-Ó³qè‘6òbñ¥»%s©2_<]FŠ„(2ñšŸ*›ß‚)ž -PAÛ6$*›£@§Û,Ši&ÐbØç¯ûð…2—ÖϱXµ¼ÖÉ-«‹Xœw—ë4³‡× Yå63�€åª #¨„ aVuZ¬e�²w$Kä �€®…#ÿ'ÁgUǸ_ ú’cŒž² oÄÐìR¡AW/½Už€™TílGøH…2ûIЀ†DVóºY/”FJ’øœ²h(ÑTµ!®œÀøsI¶Óžµ×!*%NÜúŒjLRöäQV}°šÕï&Ûì]Ûª#N¥Vl–":Õ)âɈ¥,Êl…ÊJ¡gëÕί )[HÑÈša_—|t÷ó0o&¯‹¨þfz^[™u¯‡ !ÍCĬísC 5�\£9e«£Žl^aœÈ^­jßâZ‚§ÐD€—ºô#b8l¥9™·0@Ô“*ع¦èöV#ʬÔRD.´cù\Ü2”ÁC- ß´”I2TNt)ivUù‘TÀ_],ˆÈ@[MYHl½:ÌK¿Ž ×©æØC0ÿ]@¥e08¤BÛÁs¥ÒPM©Ú¬“¢&ÚâéèÃÜiÕ\Ti|ˆ iqæˆJS¤­yY�ôçefeYÔÁx¨B±˜¡Ú§™©§–üÛŠ—ଠ- ¬j|UÂÁJóš:Ûªå$„'@mÒÝ«ûåž=¤@êÅD8�ҺĀ…³®|Ú<³Óò²l´¤ÂLÚ,m ªùËËæ Ù2|C•{mÖ0  ô±xÎf÷$Ü[W~Îã™Ä±OBõNˆÛjˆîY”ðt²Ù3°ÙÐ—Ê _Ž…D@ÏJORB¯îA¤u5HO¹<º³yC˜�ÎQOw¦zÑ.7î®Óo_Í(Ä QY¯H¿*ù¾Ú©A›=eBVGÕ µÁ ÏzÁãÞÑ;ð… èöxѧШån'9ÊS|ßK:Ù»ÒotZ*O¡5I3!tcÜ`¶¬Ç—.¢¤êó°êP3‘/»qå,ÐOáS±H”½ìe.éڜ̄)©“+Xé’2èE“*y´p7å5B.ºHîô–úSëR‘Ý#¯ ÂŒ5C¥”’µz!¥kK`œG»D„ -¹û<›®6ÃP1ú±À$!=„ -IìðŠËq;Õ¸îó2A®‘2¤*Eù5y×*I*QÁ:øÛV°Ø¬×fQÃ9±9õwl�Õ%$ÉK$pºtñÎô¸ $±w�ì�-à’P•“õë¨�"ª�ô»ÕIç pY(bÜ•¥_T…¥Š_ÖÃ@*›³hEÉÆÕ1HïXêºz—°†²º­8ŒŠCW[X+µe‰4ûêíØZûCbÙ¬Ÿ\Ré•Ý“½M% e”l–0±;SJ�Á Èmûbu=úKÛÎ.±—¥7¶N×-†È€# –U -TK˜U.di+¥¾RU§fAR;¾·Ò%±ŠÞ+¯%Ly}bjÔøv 'wö©¶H‡€%cź{;oÖÀ¸ª.2%ö®k ŽÆuÑ`J5Ð7‡¶Í¶KÁ=œ_´µ¨msØÐ":R•«Þn1n´|§bº§sOê¸Õ5vT5ë ·Ý(ÒÇñgŽLy|¦§Ö]Å'Mïà_½r•!Uy–T;%0”Ý’f© »3¥t¨ÈÐ,?òyV)J«>Ö!U¬{ž9Å·RÞ]P®[Ó¡CÃIõ®µ’å¡Å‰"øm‡]§3� ð…‚ÖW®Væ½FĤª„Q硪Ÿ�`W(v‰'7½K8ÛÜUéRµ -@¡¤`‚Ü節"‚º†>Ûœ“²G—îq9Ì®P�N7v–fq5«ÐonNÑ¥¢!Ÿ0ÄÀ+U›6UB¸œþô¥;ò…‘×»°ª’ê®sJ&e�RÁðà¢ô q€Y3=o±zÝÊw Í \w#±}ÅuiÔ�î&”ƒqYç1ñMbƒºK¬¢Í¬â.9™êA¡Ù L€ÅFÈzÅÔüϧµÁOw+ÛáÐ*{„®UsE²£(¿B¡lÞ¢§Š¡Sq‡ÈÉ…ðŒèœOáé8‘CØ�£mìØ °ÛŠ©Ý~Õb…ä¶° -Ï�šöŠ}¼& ¡÷· sïçþ,á{+hAßV߮ĭÜÉü[xø&7Ùê´E”¾É(HLT”ƒ2'Kž£dïÙù=´Š\}áB `ÕdGZ�÷N#ƒg 1P�›Óâ¶æå«[ó -ÅÍ(ž¤coR;¦²ºe˜Kš– )8#ê*æ²P‹Š…Êfä9xÁê�^­Ô—¸(‡å;ñÎDHR–‘Ëè 1DErÂbµ9Šqµ@‰nK)ï ¥-ý/V·[e9•âs`õÊ'õ G#²mߥF‚͵ßâÏVÍÐwÖ ý‘[€'Úfþ²ÅF÷ïcöû¡L�Ÿ¾îßÿâ›_]Ü·ÿQäcÿö·ßþÃo¾ƒ[ðUÞô™ØÇEQпÈÈNdd&2²"äÝ™Œ¬`íLddÅWŒÝo22ø‰g22I&22»f&#ÓÓ&22$3’7Y�6d"#+âÔÉÈDXü #+x«z '#»ÀLFV”Îz’‘•Ù 2²BÛøDFvΛŒ éLF†d/m #CrÃŒLÒ‰ŒL’­ ddzV+YIh³ #ƒŒüöà’ŒŒ¤ñ“Œl=�‰ŒŒ(ÛLF6Hê«Aêdd@Ýçó@FFüéMFvÛµ22Þk&#[/ ”ãAF&éZ22I&22$o22¤‚™Œ É} ?ÈÈ,C?’‘�75‘‘uÁ@F– #ã«g22¢no22ƒ¨ÉÈVu7Ždd]2ÍHJ�ŒŒXßLFÆ\¿ÉÈÀ³˜ÉÈ]qÎ\d’M\d’L\dŠÈ.‚i¸È$=®�‹ ÉÌEfe -O.2€Zf.²UAÝ‘‹Œ¨ç‹‹¬¬�7R¨â'.24á‹‹L‘‹ Á=`�‹ì¥wã¼´R((ìß\d•.ô‰‹¬–:s‘U�~N\d5Ф“‹L’‰‹¬ª’øÉEV©^™¸È�Ì\dHÞ\dc~â"«å|p‘Õ[Ѿ¹Èª�±.²ªf²‘‹¬Öòâ"“lâ"“dâ"Còæ"«j™¹È�Ì\dHÞ\dµ.²*° �‹ì=�|ž+5èO.2„™®¹È¼¸ÈN\d&.²[[¿¹ÈŠÖ:YQ-âÀEV„Õ÷à"+xŒ\dœ‰Y�ÞkÝg.2„ëuv.2 F.²R—7ÂÛkë\d&.2 ž\dEŒDGç"+$G.²B±Îƒ‹¬>¸n�‹¬Pnç"KÁÈEÖ…ž+A(,cÚíO.2TÉÄEVDX³w.².è\d)s.2}ÇÈEV¨hzr‘•ºÍ\dÔ­s‘é¶'YQ#üÀEVDÒ¹ÈøûÅEVj™¹ÈŠJ5.².¸ÈR\d<|â"ÃF{q‘0†F.²BÐzä"KÁÈE–Âà"+BV¸ÈÊv¼¹ÈŠBäY¡¬xä"+x@O.²B¬ä"»×ÉÌEV®öæ"C8q‘Ž‹‘‹¬.Ë›‹ áÄE†`â"«B?~p‘!œ¸È$¹È$xp‘e.2ÔÊÄEöRuqÖQÅòâ"#;9q‘Qª3q‘�ôâ"C8q‘ >hä"ÈГ‹L‘‹L·�\dzð“‹ Gyâ"Ã)Ÿ¸ÈH»¾¸Èø”‰‹ŒÛ&.29ÒO.29à#™yäÉE¦?Ÿ\dŽ\dŒ\dú­_;q‘ñÊY -.²”‚™‹¬‚1òâ"«:(G.²J{âÈEVëñæ"㪉‹L´´™Œ_\d¢œ�¸È…‰‹,#Y -ƒ‹LØ)#Y `ב‹¬Ökæ"«¤”G.²Œ\d]è\d_tä"ƒ!øÅEÆ+L\du[g.2A“<¹È$¹È$¹ÈêVÞ\d'.2YU¹Úƒ‹Œwš¸ÈDbí?ÁE&éÄE¦;G.2=üÅEÆ'L\d…õ;q‘uÉÈE–Òà"+:¢.²r¶7Y¹êÌE†Ò˜¸ÈR0q‘uip‘ñ¨Ìc…²�Y¡aâ"³¹Èºdä"¤ÎEV¢ìÕ¹Èô1/.2I'.2$3’7Ò™‹L’‰‹L’Ò‰‹ŒW�¸ÈÊÙÞ\d©Œó*ÓÈE–‚‰‹¬Kƒ‹Ì?r‘áï¾¹ÈÃÎ\dŠ5N\dD_\d G.2G.²L\d]j\d~Ý‘‹Œ`›‹ éÌE†dæ"+ g5r‘!�¹È$™¸Ètç‹‹¬\åÁEÆÎ\d]2r‘uip‘±f.²ro.2;hG.2b43Ù I.². &¡¢2ö‘‹ 5øæ"ÓŠ›¸ÈØfY‘-ÿä"C:s‘I2q‘éΙ¤Y®ùÈE†äÍEÆ«Í\d…lÚÄE6H.². .²rì.2‚]o.²².2‚ÆYÁ_q‘7Ž\dX3AÀYiûƒ‹¬´öà"+ {>r‘•r<¸ÈHéÎ\dƒdà"ëÒà"+–†ê\düä‹‹L9䉋 ɱ,™$/.2I'.2=kâ"ÓW¾¸È¶Ï\d„Í÷u¸ÈIç"„ÆEV”|é,cÄŸŸ\d…’£‰‹¬Ôkæ"+õüÒ7Y1ôÕÒ¹Èd]N\dƒdà"ëÒà"+N'.2”Ê›‹Œ³zæ"ᘹȺdä"ëÒà"C_Ï\dDD_\däÃf.2¢GÁ‹7Á°™‹Œß\d„Pf.2 lg.2`iß\dêyœ¸È Xhä"KÉÈE–Bç"S;ÐÀE&˜â'™ºG.2z'.²Wà8"ÊßËEV£¹pâ"«ëöà"ÓuYUùé“‹¬Ò�>q‘áæÎ\dŒû›‹LÒ‰‹ ÉÌE†äÍE¦yœ¸È�L\dŠ–½¸ÈX>Y%‹1q‘m}s‘³›¹Èê^\du¿>ÁEF xä"#R3s‘àxs‘!�¸ÈtÙÈE†àÍE&éÄE¦ÊÄE†äÍE¦¬ÂÄEfõqYå_^\d¢N¹È+Í\dê6~r‘ å~â"£wyâ"«ÊÈ>¹Èhfž¹ÈôE#Ãüâ"C8q‘!˜¹Ècþâ"Sxmâ"“dâ"“äÅE†tæ"SCõÄEÆà¼¹È`M\db`˜¸È Ý|s‘Ñö8s‘‰¦aâ"c\_\dÄÃf.2Àµ'.2´ã›‹¬ªa|ä"#döæ"C:s‘±‹f.²*ÀÃ'Ò™‹L’‰‹L’™Ò#/1s‘q㛋ìÖö.²ª2æ‘‹ •øâ"3=9p‘I•N\do%úûóq‘Y¾àÁE†¹Èj�cY=Ú‹‹ ÙÄE†`â"“àÉE&áÀEfu.2þ~q‘I‰Ž\dUáÄ�‹¬ -ÏñÁE†Ÿ¸Èt�\dèõ™”ýÈEVUp‘Q4µä"+˜B×:s‘©|xä"£ -qÛˆ�a™‘‹¬ùwà"“à*×ÄE†P°–ÁE†@`¢ÁE&¥”#á›u[¯ä"ãpš¸ÈHw½¸ÈP{µ£¥kO.2Òá≋¬ÈY{p‘¡lF.²r­3™´Ñ“‹Œ¤ÉÄE¦ÔÚÀEFJðÅE¦ÔÈEV [öä"c -_\d -ü�\dEűÊ™ºP.2â¦þ‹‹Œ»&.2ÔÒÄE¦àê“‹ áÄEÆ+M\d<¹ÈJ Ò™Ý6p‘ñàY Rëà"+ -"'YQ̃‹Lúuä"+bϸȊ˜u\d(±Êž.2•ÛÞ;¹ÈXÔ(ð�‹L1Ê‘‹¬ˆ›`ï\d¼â‹‹ŒCaâ"#…;q‘‘ú}q‘©:`ä"㶉‹ [èÅEÆ{O\dEì­¥s‘¡QŸ\d¸¹™ÔîÈEVÊúæ"“pä"“`_;YQ…÷6s‘!œ¸Èxlj‹ Áéw…£C›ÔÄE¶ -#aI.2õ=¹ÈdaŽ\d«êa[ç"#óâ"“·>r‘á O\dxîK-3™„ÇÕ¹ÈâôÁE†@¦ïÈEVÕÝ¹Èøû~£ÎEf‚™‹L7•«s‘1iÕÎE¦¥í˜¹Èˆ…Œ\dØq'Þwp‘­JÓÍ\dÄb&.²¢ZË�‹L!„'™õŠu.2Fuâ"+Ê ?¸ÈÙØ–�‹¬$>ip‘a—¼¹È”Ö¹È -Á¤‘‹¬dûÁEÆ2s‘)É6q‘™%üä"+Al—\dØÑo.2îž¹ÈØÞ3Y9®Op‘ÍRmè#Ú]œ‹¬DUÖÄE&éÄE&ÉÄE†äÍE†tæ"+ªp¹È�¼¹È8@g.2eü'.2ð7™¤’‰‹ Á‹‹ áÌE¦|òÈE†àÍE†a1s‘!™¹È0HÞ\dE-‰Ÿ‰‹Œš±™ú®&.2’ô3Y­í\d¤ff.²!=à\d3¿¹ÈªØgF.2I&.2Ýùâ"C:s‘!¸ÈøóÍEF±êÌE¦¸ÎÄEViyq‘!�¹ÈªX}F.2$/.2„™qâ"“äÉEV•õ¸ÈH¦Í\dUd¨3™Ê'.2VÉÌE¦2„YQ ~ä"ãΙ‹¬ªÝöÁEV >ªs‘Ñz7s‘ÕõúY-˃‹Œ;g.² -§Ü‹‹¬á5q‘ñÝ3õ“/.2„3™I.²é¾ä"“tâ"C2s‘!ys‘Õ€gJ.²ºoMp‘±Eß\d*圸ÈôYî“‹L�ˆ#™Êï'.2ºŸ\d耉‹ �3q‘Q®öâ"“_2r‘•hx .²êX`#™ÎÀEÆÞ¹ÈÔ6ñâ"“tâ"C2s‘Uáp>¹ÈÔ`1q‘Y–yä"“äÅEFÅýÄEFüÄE¦Üá“‹ÌÂå™Ú~F.2òeo.2�6N\dë×¹ÈÄþâ"#™7s‘|Ÿ¹ÈŒÄöÉEf|·#™bù#?ùæ"SyùÄE¦v›‰‹ÌHΟ\dÊ®M\d’L\dºóÅE äÄE¦êý‘‹¬ ËÈEV·úà"³æ’‘‹ŒlÊ›‹LwN\dU¡º�‹ Já7ï1s‘U™i#™ÒÉ/.²*’¨‘‹ŒŽ™‹ŒÖ‡™ŠÖ'.2^bæ"£áÍEVEŽ2r‘1Ð#™Ú­^\dÖ¹5p‘!˜¹È�¼¹È�Ž\djHš¸È$yq‘)g=q‘YŽkä"SÿÆ“‹Œïž¹ÈØ éÐ7Y²('�š¸Èx…7™Ig.2’ë3Ë|æ"SïÝ‹‹ŒìðÌE&8߉‹L”ñO.2ÒÅ™fvä"cý¾¸ÈØ YÕÒ¸ÈÐÙ/.2Õø \dÔˆN\dœéO.2*Š&.²*�üà"ÃÔ˜¸ÈÈ»N\d\ñâ"Ãà�¸ÈŠRð…’O.²²­3A˜‰‹L½Â.2rG™B Ù+bü9ÃÑÿr\d*xq‘©@`â"S9ÀÈE&Á‹‹¬ª™yà"c1N\d4¾¸ÈN\dŒ\dvŃ‹LϹÈL\d^\dµ]ÁEV·sæ"Cí¾¸ÈPÿ[â"£ìÅEÆù?q‘QJ2q‘±Ã_\dª/¸ÈT52r‘!xq‘I8r‘I0r‘é9O.2pé'.2JÜF.²FoÉ“‹Lð`B�Œ«äì�‹¬ J¬.t.2aÁãÒ:Ϙ÷÷þ·ýÖbhDq V#™PŸ\d’�\dŒ\d^\d'.²ˆÒÈEÖdˆÏ\dÀS�\d@û�\dýï�‹,…ÁEn:àÙÁEÄ»B #™`Þ-ü`BPÙ˜.²LÂà"3û’\d ¼ê�.2éSÙdd ÜËBÉÈ$¤Å?ØÈ$Às62þÖ¹2°‘I¶®ÉF&æ\â`#C bd#cµ(šldL×ÄF&r†'§òÄF&»`d#Scá‹�LÒ‰� ÉÌFöVŸðXø“ØÈþz²‘¥Å62Bg™Ë'™ÒZ#™#™n{²‘!ÙÈÚÙÈÔžôd#Spd#£–ab#£âÅFDÅÄF¦³‘�LMaO62 G62 F62•H<ØÈH’ ldj—ØÈ”Cy²‘Q<0²‘1ôÙkÆ>|ÆE¡Üå‹�ŒÎЙ�L×MldHÞld’Nld -bNldEfé“�ŒÉÌFV‰ŒLldà/½ÙÈÔ’;±‘UÑž�ldøo62I'6²*(ä‘� É›�LÝã™Љ�¬öÄF&}b#ØÙÈpIÞldU@ž#etY -F6².ô|½ú'6²ºgàw`#«Ê‰Œld*äØÈìïY -ƒ�Ì>gd#Ci¾ÙÈ$�ØÈ$™ØÈ�¼ÙÈä²Mldu?f62…¾ØÈªvìÈF†/>³‘ ’¡v¢Kƒ�ŒŸœÙÈè7™�!&62…½F6².ÙȺ4ØÈTk8±‘Õ�î#wÎldŠ¡MldUш'!‰�ŒðìÌFF öÍF¦ðìÄF&lb#SVâÅF&éÄF†df#Còf#Sub#“db#³kžld„Žg62¯3Ù[W~Îã™Ôñ›�Œí‰�¬¬Çƒ�Œ†­7Ò™�¬ÈtÙÈJ©Ÿ`#“td#Ó�™þb#³ôûÀFVÔ7>²‘1?=ÙÈð†g62rë3YIÅ‘�Le+™$™•¶<ÙÈ$�ØÈ$ÙÈô“/62*gf62¦df#ë’‘�̤#Y1Ã;¸Æ¨—}°‘©š§³‘ –kd#£ÐðÍF&H„‰�L5r%(/6²D%È«Êñ`#3ÉÌF–²`#S]ÊÄFFÅÏ›�ÌJG62Œª™�¬KF6²Aêlde`Ð`£¶òÍFV,uŽ×­62U=ÙÈ$œØÈ$™ØÈ�¼ØÈŠ" #YQlsd#Còf#Sðid#(ÜÄFfëãÉFV`=²‘13Ù ˆ©³‘©"ub#£tîÍF¦&׉�Lx�#Y -F6²�ŸØÈXÍo62–ÀÌF†‡0³‘uÉÈFfÒ‘�ŒÒ‡™�¬¨ïíÉFF­÷ÌFV¢% ÙÈ„÷øb#àãÈF&|lj�L=©/62¤3’™�L×¼ØÈJm62UòOld¥lŸ`#CÅÍld*КØÈÉÀF6HÅFÆ“f62~ñÍF¦÷˜ØÈ�Ìld’¼ØÈL:²‘I2±‘ÙW>ÙÈŠàbG62Û™�l� ld]ldEÁ„‘�¬ˆüâÉF¦9™ØÈ hwd#£„ïÍFÆ6™ÙÈ„X:±‘q:¼ÙÈä?NldT‡Ìld]2)ƒ”Y¹¶?›ÙȬ�þÉFfÐB#ð‰#ùï7™!�ld‘!žØÈ0Jg6²*‡‘�Œ^¡7™IG62“Œld&y²‘a0Ïld’Lld’¼ØÈ”ŠØÈø{f#Ã<²‘Q¼2³‘Õíx°‘ çìÅF†tf#C2³‘ɵ{²‘ Epb#›$ê4×�/62â÷-Ø#Qò'~ÐÿËÞŸ$K�4Û•èTb)°Uûï¾YÜ9äøßÙKUÍTWHJP˜ ¶âó€w8`…{U™”J#ÛJ¦‘™šhdº¤…F†¹È/�ŒªžD#cV™L™?42‰…F†us¦‘©[ú—F&­ÐÈ$GüÒȰ\É42%Î -�L3™ÄB#“Phd>42ÄD#ã¬L#ã}idƒmk¢‘©á®ÐÈ~idë¨E#Ìd‹4†çö�l(Òžhd6*�l)™F¶Ä ‘iWhd¸üÒÈTHShd\ L#[B¦‘mÑidŠ\Ùˆ B¢‘¡eÙhG¡‘iýC#“Thd‰FÆë_™Þ¸ÐÈôù*�l´ç¿¡‘­Áw&£„B#[J¦‘-1hdöö›F6¨÷¨42•™…\7�LQê/�LaàJ##ìZhdKÉ42�ŒjÎL#û[v}id �LB¦‘ñú—F&±ÐÈ2�l@Xü¡‘é—Ë4²qŒB#‹×‰FRÐÈH—gÙÐ -ì—FÆü™idTI&Ù~�hdKŒN �[¢‘i<ûÐȸ­2�LO~¡‘)Ðû¡‘I,42„D#ã¬_b¦‘I(42 ™>Ò¦‘ÑÚ�hdûu¢‘™˜hdTk&¶_™ê)2� #ÙL#´þÐȰrÍ42- -�L±Ç�lœw¡‘ Ì42j“~id -Y™< -�l ™F¶E§‘Q “idüµéñL#“Phd¿42ÄL#ã}�lU]e™Â¿…FFÍP¦‘m!Ñȶè4²9¤àŒ)Úü¡‘Q…•id -»Ù ²à‡F†øK#Ó{«¾D#[¯�,´ ‘ z52�LƒC¢‘Q¥ -�LëüB#3á‡F¶Ä ‘áü—idÚ|hdý¾*�L¥8…FFÙ/�L��B#£¯ô‡F¦Ö¦B#Sè+ÓÈTÀó¡‘)$™idê -)4²%ÙVƒF†yF¡‘©§òK#£s(ÓÈþv›?4²o„øßŒ?ÿ_Ùÿ6Ù=¬$:ÃÈTÁ¤�24•×½Î!gv»s~"‘Ý^²@d�—3-Ùë®jC&v2 ¦ �SÖª. d1ÞÌ {i¸Ø²×»q€Œ¥îõTþØ#·zï+"æ!¡NDÎKi±'xÏŠ»°Ì½6~켬ü;ècÓË! -|ÌLõÆf��øh÷F�iU4ß«’ÇÆmãá�i -׊6°cªæ½Ï^©cû=6tLÂ9îÍÓÛÌveäØô@è"Ž)+¥�—ÃÄä0¡øNâ�i¿u¼ÏÂ��¶€Ý´±%d´ÕkL7è»b*?ì? 1-ltó¬c‹Ã,Ê˜Ú ®»2Ƥ©Yy!Æ`žÎgÆÄ7íý®€1ေ~ÙæuñÅtƒŒ«U¼Xww¥EÓòëŒt§nê-$ºØƒ.ÖOk]ÙÐ0w+l1…´3!ÈŽÍ;ê?Eìˆg)zë¼<¢2Ä.b¾› ¦‚Ÿ÷üAˆusUß±OÄTGÙ~ðaêrv7£‡ ‹RlxØ0§îÊ{­j¡Ãz å 6ºuär¡yÝä!ʹä¼ç↩}| [N鹇uH5 œû^аßá1f5+XÒã�C|a†ñkpáƒFfûms1ø“T¥™ ahŠñ-h˜ÝoýÙÐ0»“û¬Ð0ÝðÔû.h˜=óÙÐ0ŒG¿+4ŒV=­v4Lu*äê4 ï©ã¶<悆‘=ÎsSø£Ï~oj˜RgÔfl"ïØ0”Ù65L‚]·L “Êo²¨aRÈk,jõ9Óß|媔%gÛº¨a [ŸóÜØ°ïOùŸø©µŠ%Í›°a-.ïØ0ŽÒoØ0 漩a8‡“CvîÄò -jý­6à-ƒ„ --QÃ5ƒsáÀ´ÌãiÌÐ0…‰Ôš’Ú´˜;2Œf 9Ò%b˜œËdËÀ0œÌ´r^˜œާД&Õ�°0¢öÚó9+Œå z`�@µü2Á R˜òz -Ï(ìº#´Rò¤ËÄ1aØð}A|âu†„-ÍSVÆù™ þ¥g[³A&„]¯A B“c� ­ƒ¶^ohæ‚]Þ%Ì«ËMO ¦F=ù™ -Æ£[‡‚ÉÓIÁ[¯,´ ‚i¯Hgœ£¾î¸0‰¦¦2µ“†&¯q­Ù‚¯3 ,´`�©™:dG�½´’•çÂÆ8LqÅa¾öÚƒ™¦PlkZ¶ù�†LíAƒ†£§FëL#¥ åOPÀ˜çTÿ0Í2FÚN0‰ü¢aù&Ax”Ekøß&�.§€€!èÙ @òäžÙˆì�kQÀ4Næ -ØgäŠÙKÕ#”Ef -˜²‚˜PL%2DP‚&ºq2LbSzPÀ0î¡åß)`Øû˜Õ̦€!Ú@gÝû:«ÛЈÉï«�3CÀ´?Åù< `Ú [‰£CÀ”í´¸]‚€uÚïÅÄRN¨ 2x¸ëBf€±íÕV=`JX Açg -âB€ñŠúuG€!h‡”`ú®lŸ¦ÌØli�Ó¶üaÅh/¥UmG‘`J!3¾ï㔊:èHu˜ê¤ºâi™¦Ãè8Xfà`{¾i¯L °]šKÕeàÞØ2l‰Áó„^U§{5 U1jÞázY¤Yk¥”Õ ¯3li£jB'Ú«1ö�O€éï/\G=ÖUÆÙØ�4Û8.þ"s‘ó¿ 0¿F #åÓ0€ë½ð¿$²3þ—žƒàI`|Îü/ ]»a/áÁ Ömd/»#ÎYø_*P>ŸtTâë]ø¯-$NÐ=ÒÌâUƒL�½ô×iÆËü/Ý7¬SÖQ¯»ÿk ™ÿµÄà�$ÐR0Ð^¬leL”ð_ú©Y¼®ƒô;èׂÿµ^eþ׃ÿ¥717&'{QW‚Ïû.ľwn­a¤2Ç¢™u�²¢ÿ…[M³Ž߸�îßéø/ ,!2þ‹pžjÿ%›æÀq™òäv4óÁ ü—œz°¡ ²—üdHïfþƾji^�±uG¾%$ü×ÿ¥‘ï¶v ³ïl‡ù÷eúW§û…zœ à�Ž7 wþeÀuÇÏê$HMÿ²ï¥É$Á¿40ÝüKÓ"+“€m!Á¿–ð¯Î.öºwøÓ=Õvø—_¡×¥b°Då�¯!^ßAdöÖDZŸûK>CyP½Ÿà�3û‹]Žë(9þu÷Ná¿á¶*+:Çö,»6(ˆ§(¡ƒ¼ˆý©Ä/@^K( ¯­ÈËâ‚p’ ä…ß—fÄò¢„”ß+@^ø}Ýq¿ yAõ -òÂÎËÆy™Ïïýn�—y‡Ñz•@^Ö-�å§–kr�×V2Èk«òÒ“0ÆÜ€.=5‰�—Íš=Bå¥ßãµ^/ˆW(àQ %ãH�¹ô3’./î4òoë8´© l!¼xmÍž^R}Cæ/”Ó¡^J8óð�ìBxÙã}Í�ð’BXk!¼ð0zó/}6?3†lÅMI&Â+) áµÕ@xÉÑÊf²@s½})¯÷0&ÁŸiî+ÁïÒV›ÀrÆw©!—DcлîHz¼Kn.Z˜evØ�÷ŸEîÒÆöh×raN^6q»p <Çà -eQ»¶� ]K f—2Z/f—6Rïe�5Ñ¡¼+k»TÛ« Çv]î‰Ux]¹H�ë;q8›‹U˜oà ¬ Ãëùg±ºT@>ê$¶°I][3P—2îã`páe™VT‡ ÌK„íœI]·ÇI ¨K~¼$Â3§‹’ÚÃ>¢ W¤{‚Òµ…éZb0º�Ý­†ï&…ù©E@cše Öq3òó�èÚJFtm5]ºi0X^ˆ.ÝW~e6¢‹0¬@t)¸ƒ¹ÐbtaÁot‡Äèba|F—ÎÄK¿0ºæ P{1ºÔHÂNk±·à�oEtõØYîÃðÛaä!þ¥dD×ÑE�ŒF[GtáÞ«O”]´ª:3]jУ*/]Ÿ¨n„{ÿ§ˆ.voZQDW›Ê DÇ šçÑ…¡)#pFtq÷Ýta9¢Kã(OÛBté²[íGFt¡Î¶ ]tÉ+‚²]RØ+B¿"Ãeº¤�+ -Bñ,_�,@—îÖ˜‹Ð%Fë÷týÍOÿ6—âiÄ›K]ô¤]›K *\Ù ›KZ @›KQ​ͥøAœÂæ’jÕÎæâ°ÇÑxaª²—$yfs¡â•à ׄ7,Uìh.)Ät š‹P?£k ¹¬X캚«ÞôXÐ\�˜ÕƒÍ¥˜ÞÅæ¢÷–žÄÄæÂõ]wq ¹ÔÈKEg ¹:iÏó­h.uöZ)B ¹øFTu6—.³-52œK*€‹Î%…`ò¢saìÍ:<Ó¹~é7]t.M‹Î…ÂÞ"Ó¹¤[t.ŒY0�K—Ç®LçR„ÉŠÏ”à†Aæx.‘(±!.x.õòt/<ä‚6Ÿ�çÒµån+|.…¬Ø,>WgŸ£jhçséç2JMæsi~0�Oð¹Õ2³’Ìç’jÕÁçÒ'Ǹsñ¹ÌÅâx*Ÿ ß -RéÁçB±8™ó¹P®«â¹È o >—>cTà¹tžUEd<—}€p<ÕL‡�çbÌ`ÑŸù\6HŽsºHm¼p@×wŽÑûßtY@ÿhÐ¥Û 3tñ´iW€®~xF-ºz¸Ó KáŠt!(f•]ˆzƒÐeG�çBtIPX+ºJuŸ¡K? e.A貊™§B—ÆqÆï t1)Š„®† “Yø­{Þ d¦ã„®Fîó,B‚®™ÐEaÖ= ‹×¯ý1]œ¥0Dti�‚µWºô¡Yšeéó›ýç_¼-‘|GÅsÉšôÆóØ�å¨ÎÁ Øá\Škê«6×åõ Í%áï&sQ÷sÏ -æÒÚ—°_p¹4iG`KOµð–ÜNT.労–_P.¹+±„s&×E§ß[‘\؆¾s¹ôì=NÑ¢>�;eþ¹.÷ŸX<.½ùñl×%³ËwT×õºe±¸î;n^GqñQ[qÉ¢�•p¸^·× —BbåÌ.\«ùŒ�áj‘™^.­èÉu ŽÞÌ�á"$Én,0\D7‰Mf ѧËKÌx<›|ÛÆp)¾ÀR0\DÞçÙ.)0 Jÿ¡pÑØET5(\(\�ÂÅiܙ…­™váÒõ²H£C¸ˆðÎÂE!ðëL/Û8¨gœí¤C¸¸oÙ9&&ÙŒ8AáÒÏaµkAáRœŽµL†pÉ‘pôùÏbp½$ -×ã-¤…ÀÅdØ›]÷;¼ð3ø[ïE€ ¿¥iUö(‹¾¥uJcR«<í�‰sbo=¯Wûzëõ•ÃBo©¾’zÁLÞz# âà-½ÖÀ·¸[T`¾…ºE˜Ýâò8Ò‹ôµÖÓ«ÎW»ØãÉ“Eܺ/[QpëwÔû7'Z}4£dÚŒá1lKÅŠd|¶¥20¯e[aDiZjKåc*éÒ–³DË -YYèy Î.�Ï\˜-Å�´ÄÊNQЭï{A¶@©ÐÜ[Zμ­Ä–êlµ§ˆÞÍx'Æ`6sOkÈ|-•’â)é·3f¶÷\x-½~û,t­KË’g,¸–�NyNz.‘Æ£¿?›ÑZbð�m.²ÖÝ�£ê`­§"µpíÆ|‘ZË—<�Zô¤«hçË•vàé -¢–â¶ØQ‹zc}ÂÔ‚dà�%jÔiô»OËôï^xZ¤¾èsž‰,£�fÒºÿ®4-…‰ž¾XZ€d á(-¼Šå�œHZ—¯®¤u»­jp´´ÝSp#c´ÔL¡¼†S´´óÒó­Ç�Ï3CK1 �Ðz†9ÃA ô| -@KIF­ÌCÓ0¬é1ðYz­Q0Ó³Ì@e.xÖmæœ�Î’y¤n‰LÎzœwà,uScià,ÙãŸ�\ܬÇk›çù¸5 Œ"« š%£žÏ`f©þTñ±0¸Roñ}œ™¥Xák°6¢ºè_}³žn³Iæeiª�¸,%¯øÑ—EÆé¸ -‹|úÓ,K'Y‚ßaYÏey½ÌÊR§¡~²@eÁí ”5}›8Y3ªG“¼ª d�öÉ2#뜖ØD–^_ endstream endobj 74 0 obj <>stream -v ‰gM• U �¥¨“âiÁÇRMcÈúsª¯ìgÁcMÌØK�ùfÅÂà†¹¹U,c åaU\Ø+~V…¿{EªB«€Œ½2—Íû^Ø+‚äZ~öJ£5sz) TÝ µìÖ „S¿í�½Ò|N)Dæ^iƒAD~•qÈ>Þ½¢8Gáìà^±®æÂ^5š4ÛU°W8¦ã\áØ+­ôøË�½Ò ¡Q Q¯žUÔmQ†;Æ!g^AL»Î¼’å´V’�¼RÌ€¬¥#¯~£¶ÿfDøÿñŠ”{w’Õ"^‘r�©9—¼(âÂí'îIZ-» w¥›�k¸+*ZØÙ§ôïª0 Ü•9¾¿ÏÂ]Ù×]pW¼—&ïÀ]I`µ¸«F+„µ±/ÜU{¼Q^uF¯÷ÕïJƒ-{Ê̻ҠÏò!xWzà‰´E§­ŠªˆafÞ•&}â*Á»Rq—:xWz²Oë_.O»Ù wEÆe´$ÒR(€Ë¸+Dê¾<.‹ pJà®x£hmüMÇèo.ÚUï^ç «Nˆø| î -ÿ©Œ»êìîj ‰º´EÇ]a6žpWXºÿà®4DfÜUŸn˜¸+l…eN¸+4 RŽ»BÐŒ¸+ šî3íªãy~´E»êª0Ô*8hWØkdÜUÇ Îšì­\aøÚÝyWûuâ]-1xW�¤Íæ]ÉDüûÂH<ó®äû]xWK(W>Äà]™Iúæ]u³³(¼+¬Ú3ïJ>êÞbæ]!$Þ•^ÿò®Ðï -oÿÌ»’ðá]év)¼+ý`dl‚d…ý?ÃûY�ÐHÄA‡oNwE+Ýã�$Ë/ õt”¸+)„�‚võ:ÿ‡SÂÿíŠhíD»b鯙/hWÚ‡u Ús¤µB§™‹›±`W¼&ë°+Îb½–`W-Šh°+☔mºƒqI"x veÙWs²´èÊñ8_ÜaW�B­þØ•6Þì°vEŒ•*‡]Ñ¥-îõv…0 ‰eážÃó©™vE·ŒlÇ]ÑO£%yð®H‚LçaEþP;p6λÒÅ·Å�ó®>¿ÙþÍÛB™EkH¼+eã_+BpÞÇñãÞËÐÉC…w%µE/¿íª± �Ö•#Z¹îJ;'‹ëîJË_Ø c¥0§>¤ý1]¨#c±(úÄW'pWÚX½HÆ]¡ö ܕ»’BNÁ]Ñ-Í‚&pWl:¹.�»êf±Ü+îŠM9E´�»¢R�üWà®´aƒPpWíõ\àÂ]©&Í#lλÚJ^%Õóç´°³¤ -’£ÏõüS€WÚxÞw7¤Rg¡|#^™0ÜÃh¡]–Ì«~Äæ:˜WýˆÞŽÌ¼B¥h;˜W( 4Á¼’bŸ>3¯Ø®õiªÛ^Íuæv”€LÌ«Îs{z -À¢—{ó*)©’a«Á¼ÒŸ<µyZ,+]j_2ò -36[ë0»|yµ…Œ¼Új ¯¨Þ»ÝŽÐ·Úq–Í_¯¬¦zšA˜S)nÆý×K»5ë7ËÄ«ǽÙ/L r8ûEqÃB¼",K½Q¯Ø|÷ ♄¼Bl³²zf5À=î€h]Uj8°fô¼"púØaKáóå¸+;âhÿÜ–Óki­ôïò4MЮ¾#å¿9=ϨḬ«;‘€]�á)¬«Ó]� -êêtóÜEºbÍtÝÿ,ÐÕ} ™s…-ˆËúItÖ5Æ?‹ruºk_f\‘A ÒB›Ej&Pa&ªÚà PY#w‹@¥H K³L ÒQ ‹N "\ø¶…–¢DH®P@¥ 2?Ã:ªyAe¨–�T[t%)ÓRÆœùkz”3�Š„µ¶ØA êÀæ�S5̤X�Ãó)*D]¥ Pñ>:?T«ü)#¨0 è–�bUGõކÉ@Pm!!¨¶èª™�€K)ø[[&=6ô†¨88Ùù@P©7ÝZÚ‚ -Q—5#¨ô^ƒ@ÅšΗ#¨¶�TK •v7, ¶;§îD­+Ž5“òGwÚóŠ#„ç.ª%… -Ó:ÚË[¬%_» ™BE—‚VA¡R—>ï1©VÆ•Tï´Ñ6T¯› g•†}í/‚@õxÍmÀ¥þÖ„fI™T -!³,rMí¬Žžb[“ S\ÇM�婿´©éõß6¥>œîŽVÓ~AVQAšúDgÿÍÐïÿMýoMMJÓD¨)© Û–*åïá¿ ˜F'©Š½›ê\YFø=¨šH>ô;üÔÛk,B±2yz§Ú$š¹ŽÍœšC•Ïð›ÍÇ(ó5…¸#þ¢jr_?¯³\Í@“JœÇŽb541V¹í�zjjÛ'”^�0DŽء¢U=|m-SÿéϹÙSSÙ¶ilÖ̃i ¶æÍFd¨·Y;!c}j¨þA5bƲ¬î�‹o—]u©¶•›t;íL²ýR†°•œ(«ù6£s/j#11eƒmë6¿S·˜°ÑîÁ0‹5ÕÅh‰ÝÖTsÀ9lÄÁapjaØm˜ �ÚEŸo³x& -c„–@zÒ'H=QŸƒd%uÀ*„2ñV)ÐgQì2+™¨»NgFòj¾”<|2¦‡ü?ºxúÕY}ÇÿøïÖý¹Ðû‹ÛâvØBJa~E¡‹YÊè¯×QÅ@ p•n7Õ…Øn„béŸ"/mFëÕ†%Â_Sö4í²R)"¿ßq9ù€ÄRî�¼Úª– -ðNANì"§Õr1h®YŠýM™™ª(u§·¸í½w·"ÈN�…ØO²=|%Ý,xç)y>µû|ñ×ëyÐRe¶èê Tj e\v¡NÎäÓ«è0¶ÜR¡Ô‚TPx`Ref{o[ÀÑùØ›¯ óàÁSU—>Úͧ8‚Jÿ›ÛÁn¥÷�ÅJêkµ.ú ”8wª_5`ãs$ÅŠx¨:k§œ‚—Ê›ê$—Òž�ÈJêi�¬‰=¸#9ˆÀLµZƒÌ½IY:óïX3dz ¤È”nÐ}ÉdŸ.4<„ÁËšj’€]Ÿ„xÂT¥†š\u¡‚)߬éØ�…Ì’Ê2�ª\�.S�0òº’nMYN¼Ã¬J5K*…ÆR©n’ò·°´ê{»�/|NS‚œ%õ9Üú”ú)ˆîœVíXѺɤ±@ÕeÍ;~5$=—YÐ|‡Ë˜0OkF·‚»ÅÏ:`$zÝ -ý£Æãlޤïjh§ Y{¤[¡àPø“rýT+Ý>nÛ'vx¹‚1-eܯµUÙZ¼DQ•²¦ÒÓéWúBoܶ™‹ì7§´Ç”ƒ¨ªjû“Ÿ‡ÓÖVµ Ô6ý¤ÐWcŽÊú(èÒHzkü -%.í¥ ;§ºˆÇFü¯O¼S_34]¸-T›‡…ÀP¸]º7¾J±¸C›¸ub|z›ù¬][-O…u¥()ÅÆ}½W8êè³Íþø�¦R©S{ÓgØKòÝn–óÝŠ�‰EÚ™�Óˆ{ÛœDa`R’ ÆVUɯMø©ÖàÃüiÕô!þÖVÏV8±E~ÓqÚæj ©?€­UR’áúV‡;6ë/¼ZóöéËÂSݤ�ÞœsC¸t#°T Q;‹95¬ªs7½ÔD®­ª šN&ƒý±ü?'x?åiB±OŠ‘eRõàÌÃí›1š:…ué×I‡ðeþŬƒ¤\Ó{¸í;«)’µŒŽ g-©ÏùÚCâ�×k�R¿í̇f £-�±“žüi4=û’s�‹¥¤%Ie<[°ú±­l:ìµ_Ö ŸuK,%0€1¸ê$ ž¬ã´XeÖŸ¼{3›ÍEçâƒÀ~–ʧØ6¦x\„ÉÂú¹6¡ËÔn~묆9QöÖR¬]ƒoÉǺ7¤K+#]\f5ù²2‚ˆGŸÛRÔxœ®¤6+<=Ù­ßfþq€‹½,–ÂúE.Åÿã¨A}ét;rušŒnÑ­Ë7—§ÌÇŸi Bú ÛøâbyÚ^áT4�7å¿bCÞûܪ6SÄ^t—Ù¶z)yت"íØÊ8LѾ>ÝdªÒìÒL«b³ vMÅÞXÙ'Ж™Šc2‹áP§–3–Öclh×ăMãŠ|ªµî"Z2®%ü¿,/–â(óÛxT˜hµRý[›Z e »Là@aŠðgË”ŠÛæK¥I­+¤K -�z-] )\ÅNƒÆ‹²0^S°¥—¶ÌY0e#{/:.e ÆÅQ™ÖqxPHÏì`c0|‚�™!WÿðMzÏFzMøPt»=¶‘r7: ½�}šî2)‹ì%ÕVVJ²ÌÛÎäQêxFuS.BB* ß�)ÞÖnªÝ–å#ìmÛÂéú¬61ÔG»Q•5ÓÊ ŸPÅRè[VLŸ+F#IßgÚ@y»ã -ñè»™Ç -kp•ŸÒKª­¯Ã¥Jöax“C©ŽÓobûæPì΋{‡!+QäË!çKáE¼w©�äí/hOÿºsŒöá�¥h(ÿåñe6§û8Q‰eS&ç!NÛ^ʘ"ì, -=í¾ºIC½µ˜f¥¶í¥ÜçF‚mU1u|?¶×#Ž«ûI7šxî¾Z‘úu–zt;îï>õãø-ÏîÉ,‡¶—o�!¤ å!q8,éÅ™Zç ¬p§\5©õ� ¦«hÀæf3[éÏvÏݪ -<”«ÐC14¹(sëkj9§‘2„ÿò1¶ß²ˆ\‡á�« Ùôòø­Œ;2rIk–ôP.tL�ÍâÒ`V¬vºAÆìÚI'n;eG÷qJýkhÖÛ7ÿ]ßæß&¦.• ܧ©¸þ¡n31Î$Q8Ûƒ¡êÉQ®€åº”KË4Ëd�ö7ï—¯Ý7lžGœy˜GÓTº�dÞ¸ ¶õ#õ5ˆ„Ú.s™2©Ô¬§l.È/Åä,-Å.­,XZ>®QÄÿ’4ßX¡2„ö•ˆ6s–¾-Ÿ7›ç“”ƒ³`žnz­• >Ø øžœ!ŒØ& ¾Ã�éxÿ]æV,N:ãŽuuÐ:Ó†%ED KʵͶڽÄiXšÍòÌäW´Ó{/KZ¶fåk‰gKº‡_¯~ZêEË(Ò¾±uEå¢é«3“t€^(—Á• –8_¸0¥^9!HÅFJ ÿÝòmI9–£ù›U%K\ ª<ϯísN¿ÓQ…zk ¬’(Э¤è} Ã&�ÑsnõÿçogYÆš°îìJ" §h'el–ÔVO·¿œŠìòxýMVÙ FÉ©t`(1i[N÷D…Å|�×´•Al‚Uµ–ƒ Áð YZ¡ }\ ã]à0åú¬”¡ugÈËÏK7˜–ÆÊê)8ò·(õuOpÈcïjÙ7L'¾ZvV7ì¤_{ymÒÕ+~¡Ù¦8ò·ç�Ûž+¡Ø&tÆB-Ž �~;Ø{+ç¹Éa[¥ŸWüøi3‰ò¶þÞûáS)¤#Á‰×“–Üš64©ž”àjâ=œØü�jG¼ûÊc3©ìÈ 4tFîØ£•Rézã8Ä¥P˜"…„ÊÚ!¨X]ñ¿AêI—V>b¶¬Ì*Y—Ÿ2]ÄÅCeUðÎGuÏ¿¼Þ‘"¥kX´5ÇŠb,ÿšz�cÚϤksV(07ALw•2Ç´¹SI¦Âæô`E|½ôanŒ˜"„­7m(ˆ;•¥™òÖÝ0b§¡/Ùõ¹1b -F{<5çÿ£°ñM½¶x¯Ö_'ÙðscÄNêeQ«¡¬’ªOÕ4+Ü®êB7$›5s]msÄÎÓÎúVª¬o¤º\éÈ1<¶.Ñn6(b‡~ µÍ "vâuä‡ÑåsÒSáÏùìBobuÚ³K¥& ¥¿¦C¡Æ@«·€ˆI}¹Ô -ï™Ó²„%¦: -ü5|)ªuk@ÄNšýU<0ÄNÃý ªl`ˆ�^ÎõM‹!ö·Ãõ'<¬¹tæM]Æãž·º®j{2Tœ’¢il*TÜ‚ÇÆ©­½âG�‹A’¬ ~Ç…SpöíÔ‘u³bVÈ­)+8Àý8BL*µ/ƒÎÄ·ó½ -ë¢!&ÅÖ:3bRmµÅûid�B�šö–Ú‹¡\׉²‚dItóßîû¤aµ�Ú{ÐUÙ_/GÑÝ ±¿m¿Æˆ‡•¶ã -Y·Õ¯¡8´çf‰öl„˜�“Ñ–§O÷¡B‡©šê;ÇøýïÄ,5AÐþØ1 d7A<­øE#CÜÝ€þœžJTî&(b'v¾§‹ZKyUŒ‚¢h#ʈ¤ÏÎ^6«õêw°ÃÌæÌ¼´ –&%bª §ºÝI#“þ#Ézš‰Æóó~ìS-š˜u¢C½;܇)‰,€Èœ8ÓJ£V"ÛòÓ É¤ZݪM)ØE¢t% e7·äZoÝÃÒ[ô¯¡¼þ7isãL¢JÄló•m�†5æ|«iõ™ßßò?ÿâý¢…í­ŒÖL .6h´Ô¤­:s¡±æ“ê8ee¤ÌGf¨Oß|1T­Z;�SÚ;KQÔ\ -ù‰YýI–,– 7>ûƈÚjìø5Qëòä[<’bªUd_—L» –|ÃQªðéÊûh*Y 1©�éX*M$˜X'7/&„1x!,ÔØ°:Sé[Öw¢@“2”íE ܘªQþ†“›QÛ¿dó’_Y1ÝyŸµ|äØÄb_[²óÚÙa�y[1§v.S;[%MFÜ;ÿå±|û°jÔ¥˜)²÷ƒ@­ªØh#ì¶PYÐ1m­SŒAÇ޲³SËøáaÕ‹J·yîûZ„÷òb@šNõÙlg!E¹;E0¦~ -–>ш@\ã}m¥ƒûî¤ RKOCú´R¨ü¥ôì3¼€·»÷7ÑØ§Ð†“w:¬ qQÇ&@$íw�Bª¢ÄÜ4n~=öÄ!ì­Ÿ�S,h¾‡—ªB9/ß—£/dšŸöJ�Óy”k­Ì€~¯3tlmÓÞ��ÌQØ�â -·áŽqS°‹ë•0ÁµÉc¦€n å¥ùÁÅW²zQÒõæ¶iT…UÀÇt�ýý4“˜éÞkÕÒRí<ñ¬Ódð¼›?¦OÒ©[znKhzÒØ‰Ûˆ -�Ä{RÝ�zÛÕÂ¥¯1’ÆáCÏý:Ée¾]»ßµgŸ°TR "zݬ\. 3,‹u¨5ÄšVÛ >©¥}ï¦S1+•ùS—ÿ%ÿÍ9[ 1æ#J;G¦^6Dø+¨«Kk›×½™qÖ!3Ê Wujzk΋�B‰§ý@ƒ²®8*­í‘T*±SÔø 6‘h\Ê*q\®^ÔcÛT ¤¼0È^«¼§{òè8·å'µÔ¤>ÈÈkhQ«…ÖÈÝÒl€N22¢óEMŒÔ˸×KçåD1š”‡ÑüñåxwÈUê}¿®êv’bÅh‡gSQ('9Þm;¨ U½ª¨b…0�ÅðZ-–þ”’fl!±„ •ÆC2½´A2Eý-7Ç åò2ãHæýí^N.~TÌkÆ -ÍÞk~ÆaK( ->¦u&ŸT..’™Æ"6),Ñ(|¢4oxžTõ¤*A¾Þ�!”¦oé¬>´¿’K“eþlÞU-|œ^s¸Çó�»ŠýÉi÷ÀßoË>¶‡'™ý"±ÚÓ �²aý"Úц' ·Óyl¾;ÔÈjwGýäôÚ�é´­(ùU’}QÎt¢ 2ýˆ5ŠÝZ¨³€%š­`­vNkÇÈ/ÐÂ-ïóP§Yìû™4FJaÉ3òð�‰³%²9SuQÃíôîÜP(>Óº‡�©Tvç“àôc&Üwyå”fŽuÛµ¨/ÕwgJTk4�)¡¥.ÿ ×à³¾›�¦Ðò_Û<)GæÊ÷°ÒÍObyÌB#Êû“½;¤æmõZ–{l——Þ —ÁüÚ]M•4¶›¥;Ò|ÂÔÒý¤­hTpQ¬ð¸™»m±F”Q0ÿRpD¾óÙ`´ ´Bßýr¯Ô!�úÓ÷‘œ-̨EÐ «„¸[i-c8yŠáBû{âÃB�*u©ìÁªÃl|¼áCac Jä) ¾6,MêAQ¿½nY}X‹wJQéŒå‚8q•· RK¬M¿Ð4Y��u¼!½[D#ë -p+W{ÿiµ ƒRa&’îð4…HŽ+¢·¾å展·Vk~Õ§(ˤ㌡soØè³)jRÙí47W’Ò•&èÍÁRXZ£,–šJ:5˜šXbTíé­À©¡tCÝ/žçÑZý8Qíòª^êw”Â¥ìÔíhvÎÄÓ�.µX$\v1È–ò…Æ-Yl5…ƒlç¤â×ÿâ¥ð!~äz‰c6íW&¬‘%ä)7ÄšÜNÙÊÊLÍ kÍ<šuï/Î!J2îÛËk”øáKªàIO¡ÖAöŒ¨(m/Çb ¿�ø:Õâ­”S§¿RXC{¸îM[Ó´dC—“œÃé  6š? FzO_¸5VrÜe�÷–iånivmƒ·¦³ÉSãA);–•º|�§€¬ú =ÚܼµªÒ?£¹hnmFy™)у$•-£ <ÃgD~¡Á(íªP‰R)«Ö_ U m6ê!%àº-u;”}ÜžòѸ5MÈsFc"#ïµl·9M˜ë—åbw�lôn `˼ž^B%…%1ptõç�Íx’xZóàm1b2ÜÓ�R�o‚G'�z§r5&²sRmS SZÊmi�ƒwýj…äKj±4ÐCnH©(n* Lí7^W� JðÖèr³VÎîÕMïëeb“4@Íj2»ºß¸¦dÑŒÒ%”©8ÌÊ]•ݯ…8ÎÍõP50mgRéîDa„}N{r8S�Fv+ «}¸J H7«)¼´Ú/½ŒÚ/ÕåÞ”2Ë/ï�cxíî) uÖ°e¹ŸÍ\“Jõ£T+‚£ðòZâ3Rhò’Ì5‰‡FJb¿ -Æë"ùº—CHóÙûYȵ“<¬v‡*¡?Ž‚‡æhÖ÷ª—¤Ò’îÉhQ#w“ó¢»ÄŠê_·b¤0‚ò¹!rm’Ðp÷8ÜVgÚþ�HhRÔàr]›¹6µ$Ò†¿ µ–§g:˜ z&ŰR—zè¢zwjÞµk])ϹÈA=ÍÒýIþSÜV*”Tþ -÷áî{“ŠÓ�j@oZ÷ÜO¤<ŒÙ¢Èv�Ë�2¬B Ÿ· k¨,q(¢IPwdwEc®ki�е ñƒ¢ËûîX»Èu›ÑUÆC¼×snžµ¨6~;Z–OAݵàJ¹´¬²t_ÛÐ5?ɸ>fíB‚US]Q,¤†¡ÛªŸ‚º¦aÀ®¦#4îx èíîê¤a>Rv-Àkìv:•´§E¾fô± fÞR&K+ âkÄƶWâÊ2™VŽiyl@t“›g¡×P‰°ßÃ.Ž”¿]͉bI!­D'¤؅Γ×ÏdÒ²øë -y�ãñøý� ŸÔopclp�QÜŒ/Ée°òDÊiòãžcØ,€ÿX¡1=p4KÑGxžÖŽ©Tž•Ï_϶˜?5c(ì¨áCô’T³êQ£ß>¦(36å­ùïu¿`elã¤%°Ö *ó¶ªhŧ£zA•Ý7Žâ·Ûè�]` ¡¶1íãõ7/ ›ÁF ½=…‡S™A¥Þ^Þf=O·UL „Ù™?V±÷aöä(Œ6Bg(UΙlïc3ØNð»z‚™úð }ýž ê.µê<%ª ÛÙ�ᢷ‚–mxäeld/}YÎëLþ¦uX* §€!õµ¸ÄÙŸQÁE8‡MÄÖ*Z6â#ÍÒí±X[t«�;Á¹š·Äêà£"Ÿ´Ÿ’SŠëC0ÚPy‚—·Ö5˜X�9ŒŽˆ5žš#Ö¬kMi¢þB·Æ+ï O°Hër눘tH˜¶*ŒOŽw¼‘”(Y•j!j©v+¼ýhÖhNEÊâ°‘R'Þ^³^´üÛcæ ÅiY¡å\=`Ûb³Öµ„4®-/¥fÝ"ÍÊÖ²ÖÐ{/Û‰�ƒ!ÍIz+\VH§�–Éc �²Hl¦š6åþiô>v§[%¨C!½OïKÐ�½8lJ^³`ÒMf™µûö�KS®@lçñ0ÍÏá�¥t6~p‘h.Óo‹ÝÃp@À‰Á«³ÜÒ²í1³Åž° ;¹ÿº�ý,ñ5†Û|ŸKX)H²Þ~�TÓJî] ³ùÒsGÛî³™lª€ºùdÚxË*o2N7Ë.*›V":h—H†R9b é)zBŸ€¢ÁºÅ/\<­‰­‹T+ú-¨PïIz­'ô¡éûÑ„&©K“ÇÎ4 üá£pÊÒµz|�²³m+ÃÓ¬Ùðý#\�¦ÙnüÏþ7£åÿç@m6È7I+Ëj£°��t¨”14’é¶"F< {>§oœªüaÎýºE)Õ-jÃó¡‚‘ÝùXyˆÙu3xEQñL¦>޹½¡&3¼éYmÐqµe73<Õ{ÂÕºEJ@ÛÎæ^šÉ»wYõáFµšI2væôè•—¯;´×g8 ÿõî6ïgØn=“‹Ü¦µf2t³«_%1vñÿ† »Z×éq­ã®„M™x/y m¼x­NS¬Ð^ŽU«mU*µw*xüL çÑ)®÷bô9î}gŸ—FMÍÁ…×ðáà5wëS-4ñˆ/ŒÛßèwIêÉÖ‚�üå­è[i›'¶U- -Ì0Ô†¤yaâyÒ9v¶%pž¬¸Ï¶E}0�ü†sÓ!SW,:ªî$R‹çõ°»ŸÎœ5ß}ÛÊAÊJðHõ€Þ4ÇÏ—�fMáPÝN÷ÓNŒBãS›Ã¼"¬väŽÍA3'Ò-@/�jŒ­vë{;Õ9p™O¡1ATãt=·+ÑöN•©W/ø»ÝRQÓ¼’CÉ¿ÆVû0¼Û)‘9,w Vý×Ïö x;iŸ´ÍE�j×&¼�Æ"B4ðÖ‹««ÅõᎼ¸[/[0Þ›í€p\9Ù²œvi )Ç£9VJ`Þt+ý�I“ÇÖJÆd;H®†!y ªÐ̪RB±E¿×WíãÆôõ±°@/k6õ‹4å-_2TÛD¼{“b�L�«Š>Çßÿá¼ò¿D{#Øf7ç½qo“¼ÿ´| ™XÊ­á�ÉQ[/fÞ3Êð2btß®"îsü�ö;ógqv-s¤ÙUSø7T–R²>P …LwPŠB†�¸pJéhêDª¬¡P!½¦£a<æ…²R±Ó-;ô¹dÙ£ßÃÖZªØ§hãóKþç_¼[HÌÒꢥx@àÔ]ûR2Üכ㰲^V!¥i=†8Ô—ŠÃÛ#Ò5<æj!Ÿ+:à]Eôv×B•?™#P4&|C>¡¬Þc+6¥¿JYª&l3®›nÏ­í¹Y¥ˆs±«N -7žvl÷�%ÓLY†jÃd‡9{Z/¿ùÆé8PÔ=ö^ A\€è3*T'²×ýÝðpë‰1ÎÝÞ§qã¤èªß$V5¡ÕnvƒÀ-�\ŒfKôÒL(æ”SÂåíå¾[~7î$=3Þ|\¤ ÷i¯­ô|W.ñ6GMû:ºUš³(4œZߎŠÄöà9½ê¾FT@Ñ*hàÂ'ðH3µú€c—ا©fÐb5a—)Š{ w[ÕQDLxnuí[;¾Uu•¾ÓÑ‹’JE¶ªâ*µ:d¿ö:þAÚšGß„À˜'—uÃ1íÜÚܸ¤>FZ Ìò>mí‘øa9c,5§3­�­»©9ñ;nÎuÅ€tÛS/œâ”ý¶«aÍM -‘R¢Üœ€§h0‹vʲGŒ˜Ú/Ý‹X­j—GU¢Ö—l7 íj¡–Å€C%œ ŸAúd5Å>nDj t×ë t:³­fÔ×R記_]á‘'Ã*’ïs\aj;PU”)Ý­,.±p­ HuÏ~ÇÊsÞVzû²‘óØ8­›xÚšo{Í�Ù›Gpý˜þúâF;Dò×ÒšÛé;îá ñ˜±V™–‘ѳ¯­¯0«cšõIÍ¥ð—•C¨ê²´Ýî}5ΔËýýçwmধ¦ -kNÖ Ý*bòÞ´™·’ÍimHà´Ä2·„î¾e[‘Wz°O¶z8NoŽp†eìÂìá -/†±™Ó"^O:®Ñ=k-§Àã(¥bP~7<‘ž2 ©” ´;n§¹JÁ¢TBĬ'±WbЇ{BU%•~xNY�²ÌíH.œÄÀ‡Ý_bÈáñGÚ¢ìa–ØÉ-ž䴾{T¥ t1<ù|å!)}Ó¦’z™»:¹öx<>*Ø«R¶¥Ø‡Õ 6Êq‡9Xh,£±%ÄYµa&bmKŠ¿¹7Ò ÉîP÷¥Ä-ÐiêXÇ©Œ™<—Âvªr^ -øêä�žŽÁ0ÚÊ•¯(÷îÖ1i|ÚVì³¶ð›�ã¢-ÂÆÖiý¸¶þP_z¤v0÷d¾f}�“g˜ÆB - g—~¥Ñ6UN*6¼ÝtPó–VM6UMïåmƒåTíi½BjéëÃ;nº·.›i†˜Àüh(ÞÜ8÷²Y*eeŒð§#š’Ò6_n«"bX¥-çÕ±23ÀJûÚˆ9>�’T,�ß¾�|¡Ì¡°WC__Õ°Ý[ÔAGk0‘bÖÜ—�æì[6+t_¤¹�U°s5ÈEs.Žƒ*“oV‚ -¹?ß±l•f µKq`Wà}Çãmž[(ýÉT!\ÑÇ|¿n´¬NÈÖ<Ç´�õ(8vN� Õx\o5UàQK³ÙyÛ.C3„½{(ÿ¼Û×qÙ[•ËáÛ饔Á T,¬O¬@ú.�=gvd ïÍž3—&za†±çä{©àÞ{yN¹ø×veȃŒnåI¾eÕÇ]7Tc¬:…’-¬{{n—ˆ-µok¿´”0Î�H/| %- ©¥bTv{=ö/†Ñq;Ž]¾$ÕÌ3Ô%‹ßžZÈZǽ4=GßÄâÌ0ê; Z‡‚×µ² xæ?3J¯��­ÓOi­CÚHÉø‰r! /“ÅZÂ1·.42á/•u¯ÍÒ�NWFÇn%[K±gx¸Ç}¨Ô|^e>tmA ý€×-uµO�øßi@VX -–˜šyOÌL¯�&ã–ÃÑk'ÓÏóbDÚ6¦5Ò¾ÐÅvª§½\e§òZW· -Ý8LãÛ6ÆUûÕÆâN­ƒo³¨= -Õ -ÿ Ó„²v�ÏgöÿÇ›ê¡Ó½ÔÁlÞÀÚR¡Îd³K5ª~k<�•R¢é¸½[±ùÑ«ö×aø½ÖÄÂtÒp9Ýw7€vøóÒX¡ r�rÁ&­5Ï*Ë�Ÿ_Á´;»w¹Ò Aˆú2– ãÖQqEOʽÃâ6ïãf­’yQ1ØRÚµÑvI=¬ˆ"Šnwyáo¾ÖÒÕsœÚ;袪XŒ|‰·£G¡‡åxRr~\^å£ï~v3N {›+"åÖè<›p§p³™†Þ I]ÔÓ,qíéÁ¥ô ¹Kêé~$+ƒØùµâ©ªØ™Ýï}Üáõ ò’Á1—‰Çšê5ÚëNï‡ |'P"Cv­4/K/³‡ �Öæûüaã¡6Ê9�÷š½°ñz8Ñ-6žæÏ¿ýãbã�ýøaãµç.l< ï•�·•LbKª³ñT°ù7™'6�¥�ÅSaãa¨_ØxM ×ýÃÆCm=±ñP -OÊ—�'µ°ñ$T6ž”¿Yÿ‡�Ôª°ñXìe6Þo‰ÁÆÓ·®lh¼ÞÞ4^‡å�Ðx´þÐx¨�gvGOBã}‡ß˜7­vKCÅ�ÇOUÐxäò3�¯¢ñFT‹/4žÝ��g·þ/O�HEãÙ£”ÑxdT?hhh<Ô‚ÆC)h¼qöÿ�'µ¢ñ¤T4ž”/÷á‚Æƒæ]Ðxv³ü¢ñT>^ÑxÆ Ïh¼¤$&ÖV#fÏr;£ñô!¾h<ÝX�Í» ñ’’Ðx[ 4L�‚ÆcEþAãéF(h<¶�·_f4ÞV�§÷©h<ê>h<¨ oàÁ“ÑxfgTÑxø4ž”ŠÆ“òEãõ,h<)�Ç1¿h<P+OP�'S¢›ê‚ÆÓ8_Ñx[Éh¼¤:OƒgEãéO~Ñx|�‚Æ“RÐx(}Ðx¦f4'4ž}Ë_4ž&¦ŠÆÓä[Ñx[Éh¼¤:o°[Oh<¬#Ñxü"�‡™WAã *cÑx˜_4ž†‹ŠÆf勯c#WÐxÚLU4ÞVÊ0°Ô@ãQŠYÐx£�ÿ � -ö‚ÆÇøAã�E�Îhh¼¾ ½�G'cAã±Oû ñ¨ -(hh<…B �jAãm%£ñ¶jh< °&4~u4EÇ�‡_]Aãõp2+h<ìè -Ïœ±3ϼï~Ñxý*�‚傯ÛJFãm5Ðxz(*OÐ�grFã)˜TÑx[Ùh¼¤9ØJ©ÐŠÆÓ/úEãqÛ4%¹�ÇóùAãI­h<”‚ÆãÌÏž÷ŒÆ“RÑx8o}Ðxúh�§¢ãŠÆÛJFãm5Ðxre«h<ݹ_4žnðŠÆÓƒPÐxšª¿h<©�§ ¼¢ñ´ü ñú¼~ÐxÄ6 ¯/—ýŒÆëýþAã™}OFã%%¡ñ¶h<…Z OòƒÆ#G^Ðxø»GBã¡|Ðx¨�gh—ŒÆã[~Ðx¬0 �âÊv$4^R6o‹ŽÆë$–6ô¯—4!›‚Æëã­h<-ò¾hh<Ƙ‚ÆÓ‰_4žÂ4�§þ¤ŠÆƒÏõAã Ûï¦ãÌ,*£ñ¶’Ñx[u4ÝW�‡‰õ�G—iAã© ´¢ñ¾QíˆwÿOÑx#Z: o´ó�Çq�‡{ï�Ç}XÐxn+O—ÿ‹ÆC-h<Ì -OÊ�ÇÏYÐxR -�ÀÜ�§»¨ ñĘ©h<&²OŠƓeCEã‰÷Eã)�Ñx -ûT4ž"$_4žÔ‚Æã°ŒÆ“ðEã¡4˜‚Æ“òEã‘ð(h<+Lh¼¡�Ñ�®#£ñ ªh<½ÑxP -Omã�7H6ÿ¢ñÔG^Ñx|£ŒÆÓeþ ñ$4ž„ŠÆÃðþƒÆ#VWÐx(�‡òAãI­hh<š %¡ñì�~Ñxxñ4ž®XAã‡ø ñ(/h<Â��Ç­ü‹ÆÃF>£ñô{T41ÁOa‡ŠÆã¦Èh<%5¾h¼ÎÊ%£ñªh<¢q4žî±ŠÆ£›º ñ€U}Ðxú$�Gè)£ñ¨�ý ñP3¡ ñ¬|ö�ç´×BãÙåÊh<)_4ž>iE㩯 ñ¾£ä¿9gcƒúAãQvŽ„Æ£ ,£ñ¨Èû ñP �z¾s&4€" RŒ -�g¾¤�GßÙñÞ�ס×g4•Asn4­ioûAãQK]ÐxL¢§Œ�§(Î�D(£ñð­.h<”·¿�'ÕLJ�‡°ùÅz6å¹~Ðxš’ÛÙÞ�ÆÓœUÑxJš}Ñxxâ4žùþg4¶ ¿h<åL*O±æŠÆ£æüƒÆ ’Ñxým?h<#Wü¢ñÈí4¹ºŒÆSâð‹Æ#ŒUÐxª¹�k£ñÌü�G± ñ̺ £ñêü¢ñhØÉh<Å`+�ÒªO'V4žÞ·¢ñÖ~Ðxd[ O­¢ñP>h¼–B �ggf4žÞý‹ÆëÁl_h<:árÅ�ǵ*h<®SAãu�M¿h<�€ƒ‘ Ðx”#?=¡ñ誧Ìz£ñˆ�4^‡tq%4ž>ë�³® ñ”Å«h£ñðhýEãù¾'¡ñ°‰,hh¼N: £ñ0++h<¨O4N¤�ب ñ0Žý ñ°›.h<·³Lh<=û_4°�§o^ÑxÊœ}Ðx+Ï”„Æ+ç-4jAãa‡WÐxR¾h¼±Œ¸�G�}Aãé!ý¢ñ¨E-h<>EAãYÇû/�àzFãÑ…PÐxêý ñ4 T4îÙ�G@òƒÆc·SÐx=úƒo,?¸„ÆcäÉh<=¥�GCÉ�‡ZÐxR*OÊ�GçIAãY -<£ñP>h´÷^p<),L -O7“ާŸ±Âñ �|àxšï+�%G�ãÑ“ù�ã¡8ž” -ÇûŽÀÿÙå ŽG¸íÇc£QàxÚW8sïŽg–PއRàxœù�ãI-ppp<ö‘ާb† -ÇÛJ B]p<=YŽg†¿p<óiÊpp<pp<…Å+oÜïo+Ž—T‡ãQæSàxüÍ_8‰ýÇ“Ráx(8j�ãñ^Ž·*Ë -C‹Ç£2ªÀñ’’àxIu8ÞX¬€Þ)Äý…ãQpVàxŠöW8ž<¾p<ÔOïWáx¬43/„Ç[bÀñ´½*p<@MŽÇúÙáxZRV8ž)¿p¼­‡ÆǃÚó�ãÑ1Ràxš©+�Ö¼O ™ -Ç£¹÷ŽÇÌM·Ó.ŒUQ†ÛIì÷Øl; ç¸7ÚŽ­Z»2Ùn®5Œƒíä³r5ëü"@ca±„µëÁÏpªÝé­ jB!¨-q!ít“¾›T§|bÿáÙéƒÏ–Žy,س`vBª\–ÜÙ¶´ŠåtËÛXxü²|ÄÙž¥pì°¹9¬HÙ¬.Û/Œ�zóÇÕvï–ÍÞ’;­µÏH­ÚMB‚Ø-1 výô~�Ŧ»Í…­ ìäDzJ§ü¬†ÉŤÓþá¾ÇFÒI}V"�dQ@ºÓ»u�îòŒ]ÆÑɯ±íw�H"šgîi ‰E·Ä@ÑÝÞp¾szì1EÏ ºë5ÌÄeÜ„õx`è–�(t[3�¾Çë¥ÆJÈ«Üé=ݱ&¦ë±¢ù “möôÞEãYÁω9 ™r¡Ô µœ.hE…åíÔº7ó\Q.âì9¥5YŽž[B&ÏmÑÁsÚQZ Üyr÷À¾„�Õ»œµ£5> sKÈ̹-:rNQH Aœ{à dÞÜë[¶…›“¯Úpó. nØ\£PˆŸÉ÷öM]L¤\6×úí6× …Lß@ã4ѽÒ}Áæþ¦áðPK°9© �¾†ÅñmU)ܨ éûŸÂš“H'ØbÍ¡ðÄk…æý ›k$†Eøhj¸{à^á°¹ïèS > àdØœž\>lN•=„dlŽP¸F…ÍIm­� ›ÃcI?ú‚ÍæÐüW`s¨>\š‚Nì>Æâ”È›k.¬9ÝLxÚ/ÖÑ¢cÞ›5ÇC ÝLaÍѸäö¼/ѯ÷z÷ØÃ–מфšc¯¬MþBÍ¡`¿°9”¸ 6‡úÏ"ÍñR¿í"Í¡˜ƒË&ÍÙ›:Ž“YIÝêd‚4·•DšÛb�æ´«XTANÀ*6-…4·ðMû8ÁñêÔœÿ~AŽL¨¹íØ 5Ú˜‰@ÈÙ¤uß5¶¸ƒÌqUWƒ{¡æ¶’Qs[ Ôf1˜ËB®áœ«:ªŒškªëϺŽvdŽMš[BÍ-18sB>YB"øqí¾š8sú„(÷q€-Šc:ö+Í�ì 3‡j3œcæZ¸4,Ì\{¼Sº`æ¤ZH 0sp¬xT3×h…í˜eR¤�fO�™Œ�aAàãìN9ç?3'pÕùäà o_6ÿ°ÎOJÂKm5‚ßbj34-|œ>}Ž3§›Ê¨½ë8Ù}P�˜¹¤$ÌÜV3×hÑü8äZNdÊœîã9¬ÃÎè@3·_fÌÜV3§7âB/|œ¢¦:¾Pæ”\м»�Òxv̱!s˧.Sæ°jÞ]ä[ÉÓ¬[eŽÙâtþ×v9Søð|ç¦ÌIÁ»{Qæ8Æþ‘<à´Õ¼´(sŠãB¸ðqfIgÌ££&ç}ØéKã Ìm%Sæ’ê”9FmoE1×v˜‹c�Ì1Ü¿ïµ!s6h:rÈVD3cÎD!؃1Çylû‚1gß‘•s¤ã˜ƒ1§…µÐbÌm%3æ’ꌹÎ~[FwVg]¤‚÷̘ã÷Pø7D²e÷½sZ•³Ã)ˆ9L¤~Ç_öŒÁÑqêѵ÷Έ9vcZ¦ìãÆc¡‘…˜ÛJ–ˆ¹¦Z˜Í�˜kªeÕWsm^Pˆ¹†Í±C Xû7èÍ·¹Î-Ä\£ù4+4 p�`‡“¬1×÷J^G©v‡äD æÞÓòj™0‡v‡ö·“@8Ÿ_a„à`-…° ºk£×š×¨ ‘`ý­‰-'îOj åÞÅ1²œŠzÌyƒåž×Á•“C”½Ýó÷òÍu¡Ê™Ö?‹)§´]e�”ÓŽ‹µU&Ê]±~ - ÂaI1�F'ãä´Á%hršK!¼LNP ƚ̒{|-¾XršIyÊ%·…D’[b€ä¨ŽÒ书…#ÃÉé–`k¾@r£µ¹-�ÜßYöÌ�œTƒ¹HNЧH®�}È 9©ÉHN“f�ä8"¨ŽËúªáVú@‹àyû[ö¸–“äš‚)Ôð%�\c+|nŽœ–¹‹#×Úå[€Ì‘Cþvv[ø 9GŽ÷f�š9r�ÝÌq/ŽÜûn‚ÜûVvÜûnj\c¢ôÙip­Ý¶ÍÌиÖ/³M^GÉtŠZë'‚C.dbÜ×HŽ9Þ³�Ö݈°ãšÊw·ãtis[ĸ¤$bÜVƒ×´ºx½°HÞà|™Fyf"Æ¡‰bœ"Š‹'erµ21®…Gü"Æ¡Lb -KéLŒ“ÊB9€qú¬�µ%8®QÜtÎuâ×qJÉSßÀ¸­d`ÜVgáº6N›é¶xóøRÔ×v‚ë8Å5‡û⬰£m³Û†Â“'·”eO kÞçܼ¸­d^ÜV�צIÁ‹SÐÂ,2/NêC$8xqR®;Žã—Œ‚ü‹“ê#…óâPžÛépJ%q¦Ö,…×úia®Å‹ÓE<¢ŽOœ­d^ÜVƒ§GbàÉà¸Ö¼$¹ðâlvU½B¨Âõ{ÓââõfÅ-Å9O*µ¡0%pón«ÙI 8n7Pë8Uþ�£ RœB³ÎœN¤8©æÐ¤8”ÓÙqq8óp^û"Å¡ È—Ü­…�N�â¤t'“âôÙüL'Å5¥áH–)n+™·Õ ŵãu{­ À½* ¸÷N°‹ÏtûÇÄ=«2-QâÔÞl‰T‡ÄÝžÔYŒ8�›î&DX—÷ŸˆÓNúh6»AÀiž]ÂÃ]GÜŸ.ž—Øn ‰ ·Ä@Ã)+‚s\ áT¯VÈpÊ+·66Nµ“QÔBÖâòû‚…»Ü”fQá.E.(ã¤ÃÖîšV´�pbù…? •-l ÜÒœ§±Œà@½]÷�À*ë°ñy‰É3îØtæÁÝÍv4'c²qÜ›§õ¢Õ_; n ‰·Ä@Áa¡ö>»«¢…³{é³ÐdLVe7£þ Hp[É$¸­ N#1ÎÛ‹§0ª]™D‚SfÍrþA‚SHɸ+�‚SãˆÊ¤…‚S Ì¦§3É�PpÚ Qì¾PpÚJ²A[ˆ7YñR´“Ip4UÚR+É2�Øì/%“à¶ê$8«W½-Q€e¹:¶ùP™GKå5lƒnU¶ò{gí$¸oÈ9‚ÑÿS{¾v¼•צ Žã( œòg…×ÔÓ•î$8ܦl]î$8]}ãTgêlׇt�àl_}� -‚ãÇĬ?@pRH|ŽÐ™¯LN·�‘ç§ðHëNtÒMÓî£"àƒhy¸pDܧCg@ÀþÑÚ¼ à¨ô³§œB2f´8ì*ÎwVœå ޾pö8h…°¡"ØÔdêqoñˆ;Žèëãd¡•ý a’^Æcõn×µpºñhW(8£LPê8ìµi[íÌÀ¯:4/'ÀQZku®·êdtÏ·à°�§é#p|#̬‡“*3à°*¢Î pä4<,ù|2ŽHÔ©€À¡ôwlÜÊEÞé\í€À™VÆÀ‘ ¥á)0p¤t X9N¤×®& œÂ§ÄQ°è´Œ�“JfaàȤQ`8jXGd ÙÖR��[… ‡r]•Gƒ |`àô!"Ž\…™'X‡‘"ƒר^îmSàÐ j;ÎÉqn)ãEpà¾CpŒÞÿÎrG«8�f´®½‘¼ ÜrÔÊ8‰ÜhÐq[ cqàP,¶•8p¨ŒF‚³ãNSÌàà¸-–Ap ªð£§€½Ù¬N:.n§AÝè.‚cF"P 8¥Ý(ó) 8©Ž/q\ ·©‚CQЏ€à~æÙÏáõ? މUdœ0˜¯-œ>> ·Å�ûþ–ÿùïyо£Ràä’µ% pT&�w3à4âó…3Nâ8îM€“p�wà¨yºgå¿imL�0ðošÍ# ¦Ç]Qs³Ið·Ç#¨‹ýÆà€§¬¡ßTÀuö·’ßäq;ß¹Áoúïã°6êóôßcþp߮櫀À¾éφ¾Ioï¨Ì·ë1ÐB¾i´¢6ˆodFZå½É—Ÿ�AàÞ¢Œ*hoMÉ%ú�2íMauûŒA{k‘>_´7­øÍä8ÓÞ¨w•†öF“ÝZÐÞˆ…šNrçhQ¿hoÍ8ÒmÓÞà9)´7¢ttíMе‚í ¥ÿÀÞ$ZCgÀÞP¬Ø§qgdØ›>üÜ`½ézÑ Ö‘{çÄzkß8:Ž�…‚o¶ÝtÖ[Sf”�eb½é<£PìM?‡×í9ìM}Ý,r2ëMxBêM÷»4'½=á¼™Ao¯÷m,ÎÛ;¼ð50o¯+…ò¦ùvœfŅ̃UÏV£R¬41ã|F¼ÉâŸb¡ ¼½¾¤X„7Î÷Soï -nßM¯ûï¦ÊÚó-p·÷rZ»³Ý¸§¥ju«•ú¹±ÈNÀ¶3eÁkÓšlHàÚô*&É´6õ�PGê°¶'ˆÁjS£+åˆÕ¦ ÃEüÞî–¼@m°Ë§á”§Mpª8B”g 9Ç ´I8ÝHf�»ælc Z^PN³ƒH<Ëõ“ç3ÚnOå,>Ûíõ”Ág ò±÷³ÝQŽt6åËðÒŽ 3ˆ¯˜Øl¢…òVšMõ¹4„™œ¯�aÒ‚ÌF_¹c ƒY8m“Íÿ¹»×©e,›úyÇ•MX{"‚ʦÜ-ÙÄ e#½÷ÍdkŸ¨;&Û}F21!Ùԫɽ "[|ƒÇ6ŸðFÚ8¶¹*k�Ʀ±×xhc;ü+fÛÍ�Ab“púQ侕Ã2teâ°)ÓMü.0lB˱Ñ -Û¡ÆgìšNë÷µ©kÊl}ú³¡kÔï^½2×´ŽëÈ5µxXI·׬ª×„D€ƒ¼5í{7ôg¬ÔSJh2ÓÖè;-ÈbµéÛÅ€­ l’+j ¹®Z�Öð;õ]³åýøƒŸ9k$åA˜f­é–Sû˜µÖ—ñX¬i±)0käÌóf«ÞY)kO¸=dM+fËLgÈZÃEÛIEVÂýñ -ØYkͧÑY«*Ý -muÉ8e­E�U¡¬¡$ Ê -ÁÕ ¬5jöOëÒ[”5©†© ÊZ£øù1î±R¬=*SÖZ˜.Êù{KV¹M¯¦pÊt e õè²&�Z¢€¬I˜m¹@®³knsÆYá™!kR,j—!kmx*gAÖ¤x(É3FZ’ܰs2d­i´° ‹AÖ”åá‘ -Èšª¾†ù½mÈýZ Ùœ±¦T»¥Öƒ±¦R8cngÆš²0¶˜ ÆZÊ8cM%Í)ÎŒµF˜²_›±†2ÛF¬qâqUšD Hx™¦[-XÓ?‰ÃÀeuñ`�0 U«XOƒ/\kRÍ´Ú}Ànœ^yBôCŠ5*eÀšÔƒbÖìR~sGØéòúÐDXkQý„5¥Í¬r>k 8ìðþ¿è³ºmÕ³k �¥Ù6a�RêI2a­u÷¦_„5�É=^„µFŸí箄µïGYîcÖÔ°ÇÒzÖÔˆgV0™°ÖÀµÎ± k:ÓS|èibåéKdÀZS–�‚ž¬é‡¯­"ý·ª€¤!ÖZÔ,Àš)@¸Ü¬œ¸k¨,Y‚°&W²EX“b•ü™°Öpsrà&yò6–AÃ'šIÿ¬LX£Óo_ñ-È…a­�ž£Öh_$“é„5Êï­úèŒòæešÆk0 -š¯…tšªÍl*Ê„56&�BRïünѳk S1ÖË ±Æ¸c«hg¬éE5k÷€¬ÑKqÁM�5TÂ×Y“ÒbMÿ†fš k4\<~šÍXd–Ÿ¶ k(ñÑË HµöäºaMuïæh„5R†ÜÜLX³Ðø=6a­Gcé"¬)Sf¥ã™°†$ DAXsá¾ktÌ0¦dÂK®Ó½ÍÜTL,‚°FEÁ™°f´ßãÙ„5¡ô{Ö:è'B1‰°Fý¸½†ŸØQ ¯uš!ãŸ^ k¤ÕèH š >÷&¬q&›»LXÃÆ„ÈRÖ¨Õç™ ÂZ{‚WŸ kÐl„‹¶•ÇS„µv{%I!¬q&óY=›�U a­‘�¾+`MßÖ)Xë,Ú®gÖÈ%G1QðÕI2ߤà«Ñ&`s¿óÕŒÌt°F=ú³�Ãf§€5Å -¸á°ÃJ�°ù†Ú*¬Ñ|emÍ °fÎ(ÍI›çáAÒÜm=x�R&¬Iµ°°ÖhS"Ò„5_É,ÀëÎV 0$¶îÍW£Yƒ®éÄWÓ϶Ú;Ç«éu ¬x5eAïË]ÍÁÑ JRá£î›ãÕô -^ Ì XSTŽJØXÓƒnµAX£E�d{¬Q�>Ûæ«aÌ |5ën¯ÖÃ\7èjÜXÈÆêRœÞV”éjz¨?_t5-õl]t5�Þ6×—zOmx¬6ßèj*eA¿èjšê­‘#ãÕTVD†`áÕ<÷Ïó§àÕ5î‡Ñ˜,ï7o ¼]M‡ðxºšÃÖ7t5m¶øû‹®FÜ�™)ÁÕîéµé‘†¾bÍh5h}çQÑjòt$?d5ÅXêYíSþ›ëÿ:°‘ÔîÀ´V£T (á¨ül^«!\~âžÆ5 oª®W´zUM ?ÈT5©œ ª -^ÄAU³cNo$YÅι̂aFŠEcƒª&…ªâBUkw¸h•øxcѪi@¶áŒUëÔ/Ÿ–¶e·ÜC¨ó�†fòÒö «¦7Êòû�U#BÆ¥¬1ŸÙ˸`Ó¤SÕ((9�½E&�ßÅî!SÕPϨ(¸ýL²M‹ªÆg9±mc“:~Žæ)íœÁ'F�è!×(oö¢ªá V¨j�íD¦ª%%q¼¶T5üè3U ãÿ_ªš×BUÓóhžSÕpŸ&ø�¨jˆ¶U Ŭ€œªF¬é´J¥•k!ªÊ¢= jŠ¡[¸( jRlÿ’©jz¼Ô±j[öŽ;ë@ -!cՒꨲb+X5EÿßX5Ìç V�mcÁªm¥ÜŽ¥VÍÌõV ¦Ø/V�õuÁª±aÕP V %cÕèöþŪ!f¬xˆ‚UÃ÷…UÓÓT±jº‘æ´¸4óFý´?«†Âq¥Ã´ÔàbU�.ÄÛ›j–#êáÄ4¨jÖÜß7Tí=úþ»³Ê -ªFtÍÏUk z†-Þ˜¯›³œZ@Õ˜réCÏP5Rgsl¦‚þ‹©Æ‰Z¦šT‚—ÁT#~z÷fªÑÓDè03Õˆ7†¡©v>áYL5V�Ù,L5ÙgØ~.˜jô¢™ñˆ¯‘èã ÌL5T–PÁTC™Î^³€Ó'2Ȫ¦œŒ…—œªFƒÁìÀª‘¶™^‹ iû¸=E`ÕtGl•Xµ÷½ü×ß|^”ž£3$cÕY"gªš¢3`ªZ›ÁLZ𠣬æ#SÕXå�L_ëäŸcSÕ´í ‡Z¨j¨8cUM -�Ý¢ªIñúËDU£/ÝÐèNUc¯K>&¨jÝŒº{¥ª #Tµ4–EUÓnn°™ªÆ€NeSPÕTœçÕ�ŽUÛJæª%µ‡ÙSwªkÓÚãQçÌUÃõ -  ]gŸ•S0°š í«Ah«W”!øŽ~¡Õ4¦ZÛKF«¡RÈh5�> ­&ž}F«±Gì³oPXÿ¸3W Õpµ•„Vë¼½‡ç",Ìİ@«%%•nl5Ðjú“Ûµ@¦±½ø$ÁžYßÞíð÷¦€ßÈj[Èdµ¤z“ÒÅ+�ÕT 9–Ãc€Õt¢U�X�¨Ïg\/í ­/ƒÕ&ìÍî0 BŠ7¦üç+Ìʽ€ÕˆSj`5¶xþX�”m¼‰«†Øœ™F½�bÁ‹«Ö†¶®ñÛ»o¬‚ƒ‰ñi•ª¦°5½vUSÈ×òEU{�”sÞž^ŽY˜js4Ú™jGXÉRíp?«BT;Nï=  #ÍymžÚá­²§�Ó ©é,,ܦv¸acF©‘éo}‘ÔÈ/Ï©«¢Ž2qÔæãžî�Q;†Ç—‚¢fàÇþ§@Ô”z1à�3Ô$\ŽF#òOýÌ' ¾ÓŒ~êP“€fÔô×§>>MÑà? �vxèv‘ÓB(à4ÄkcÓ4Ù˜ D´+‚ŸšvÌ$ŬY»2íy¬·;ÓoË[þÿª•š™—¦ )�™ŒK[V!žßó,ít‹Ð K mÁÒTír\÷f¥Ýw”À¦=:•Œ³oRšNVx¤´­dRÚVƒ”öÜÑCé4< ÎDDó y©ÑEŠ"ûµ)iw”dJÚíqòI»‡? ->)ßn‹UiÊá[XÐ iø¶tÃb�V„qæ£ÂîÏ£ÝѲ,4žŸMøäÿƒ�&ŠC@ÂH'o!Á�¶è`´ÛóŽ‹w¦ 0¦¦‹Öw´-bfã®XKÈT´í7Ÿ �©)ŒÆƒ EÓÝ6›Pµð§hbAÑ–R h¦¶¹¡h*�ðºh‡�É܆ú“ÌDöif1Zít ¥D;‡Í²±Å˜Þ�J±æSË*};†&¿Wºo‚…&¯Wû[ŽB;G”%$Úé>ÓÁAS’ë:zö=ýp§þBA;Üte‰ŠÈ16m �¶D# Q�´ÃýP -ÿL_ài›~&§‰ðŠ~&�UsfŸ!Þs£Ï÷9^ä3~Xë|†íymîÙ´Dò¢žÅ¿3ó,´ ž Ïn°=Üö¢ôáêÊÓV¸3¹ô2SíL¾¡³m€ÆtkÿN¨3©÷pš)§›e.Ò‡p™3é s2A:SÍ�²œt¦¢«}ʤ3©Võ¤3)Ôã.Ò™ -fÒ*«³@�qf»·£$“{E¥©I!í�5*>ç�¡�Ì ³}\€Îó—[¹Ó·UoÒYSL�T…£2λ…��0¦dÒÙVƒt¦M”E0ÃÚ �t¦Ê»€ë0]*žAçœm!aΖ”3œˆð,ÊY[ƒD9Cü<rÖ¦÷MäL_ë¿L”3‰‰ä ¡ùQü�™r¦�·W8(g �ö³o|™vä\© 9Û=ë°óãú œm%Sζ”3û–­ xx�v¡œ©$ÉX¡Aµ€¸Ûä*Vk¤ÍD9Sp×­A9#‚Ú:/mAÎt'­éÒ!gºŠöNål+ s¶ÄÅ9#ÉN$øeMë´ö´Ê9cöÅ6}wùÆ<8g[Èœ³¥®þ"‡ÌÄ.øe=è•8gEïóÄüæ²OZ´©bi¡gÄ[&¼ú�?VÑ;•}ýþè£o ÚTöoê¶8Ì{ß |j?¡·Bmæ¢&ÎëÞ 49ïPª2o/~Ó.>}û ÐšM±â6 �¶�ÛTƒ¡5!UÇ¡5ã2JI<´f(B©DSaÚÑQœˆ¦âÂa3°¹BŠŠß;5÷7>_EËß�|Ò‡C -ù;ôø7g‰ôÄ#áÇLÊß[I𛇥ÜÓµUá& Ô®v¾ë{Ÿ¨?>0 <¶bñQ2-©ú^€"õÍÍëÄÁæ{ŒÜ‹Ã†U,b©ÈQ¾+Ò¯rØs)¥ œŒ†¸R•Ã’HJRìͽJRŽïS`J`Ò,_H½ÜËáœÀ)õ]�“‚n×â¤-ñ6ãGýêï@{þ94»S� ¾šïg+v]5û(„ºŽS(MPË)$°æK)wd©—Êp.Ú»x9ÜG÷úäú]ŸMP“‰FŸ·¿�Êeâ—ñ�§âÊÁPCTãݤè&þê k|!ÜûéeqÔPï��idîIˆÅ…~­j᱿¹úoåÓÄyŸXÞêÁ'ÉvLˆÈ;h›­['Þš¦{R'�çKv -V*©±ð³ÇBÇ¡ -ü˘)c4)öب=¦Ôñ7&N«›ÒXñسÕ7R�{ÅíP…2ú�&бnµF}ž¼GÙα8‡’D…?¨Eÿ <¿Ïµv‡öìß)‹¨¦w„«.•«½K‡�Iõ�”!:*gQMo4Xëãã¥Ëã<}ÃÇ­™õî~÷ªÃ>4z@'öa'£%–h<þß‹Ñ3È©µb·a6xjh útäñcŒÐHoú$ªGFãsÕ& š²Tí꤅ -Á�Qì2+úð}ê83²hó9sóÍXªê…ÖÅ›ôÔóÓ~ïã¿ü>OQFõ2kxX<5©ß‰ÆËy â¸;Êy´¥—šržªIý®É½°HåR>U7 ÚÄóñ3#«ƒ®UÍ·2ï™5�‡MÚóL}ºYDµ©Ê9ñîã̸ݲ”H�Ê4Scµ¨ÞJ¥>�¹›±ÉUew†û>Œ‡ì¿µÅ®æýÁ¶ã²Ó:‹4$Ý<òéÓ³:\Æ„y`ZÍÀ÷lÛ¡`#‘ �´:UºÝ6@R'rh Á®Åc<\R[k®êí>X’L[üï=XÝt¦€ 5†W3œÙ}PÆ¢�Oת›A9|:·5ú±èùžpÉ=l­H,âP'ô鍸UD _õ}Ï'c0ÑN� o}�N‡¢½¼·ª©Û�ÁœRåê�×Ã…Òíߊ!òo-o½ú‘Ý—ª5"–¢šÈQ´âE>ü“NÁp¥ƒM?�Mâ "ÆoÉwxî s´/e*ÎéÖ»Ãry¶³›nàwÈN…½R(œ ×täãT¼­µ€Ìó¹8T}j‘Ö��`ÓaßeÉÍ‹I±É¡V à*¾¯à¡âìK�y(üI9³ªŸp7‡ï1¾=Ÿ¤(¶–XKòUÓDs åΙûoËbèõS>n¡pækµ'§”ùÄ©Ä{ñ·¢@o˜žmU›@mÓ -�5æDtëÐHziü -%.íÉ„½�Sxó¶Q«ò[>ë³1l¨6 ~,†Âãòx°âR†M*ñ T®­*éMêR›<(¥ûØ1Ë–HßmöÛŸ4ÕlbvßæXªìa9ž­Ø™Š!«“s§÷²9‰BŤ$�¤N‹Î³Üf=ÐlTÓ—ø®­î­pb'Ôü¤ãùÖR±­<É©3RTú kÞæËBVä]{ìPâA`Ù"[Œ©‚Ú—÷?™ˆöUåÖ¹qò{äB^Ár€„dûzíÂ˾yVõâ|ÿ–�»*;:ä°¨uÄù,—´ï'šÇ4ë )§ÖæƒýfÚ诟m^&õ>{Iüõz¬íK -‹mŽ9/SÂÒíÀ¤@Ó“\¦ù‘tÀRTälÒï_ûoTЄ`/ôm[ÙtØãwSn=[¹7‡m«‡WÏhð´uÜá“°þäÕ›9ž._„WéðŸ”ãƒõÀ9KÂda­¶·5‘ ê�“ÑÕð?p\Ûó³t´_Éך›Ä¦‰ÉVFß냰&_[±\¹³¢Fˆ ±mUÑh…±vë,ï­–Fs*±ŒÖ9µq�£ØE_æ¥Î¢å�/,ó,p3ß\”aàFêP] ŸÛÏn{…C!O><”‹ yïs«ÚL{QϺ•< ,U‹z3qÔ˜L´¯¹?Šv‡ýÔG¨v>PlŠ+²¥›p$´eVþüÒªõãæ‰‹þ ß`a�ÿ4ò›“h‰Þ%þËË�¿Kq”Ù�< *L´Z©~§ÀÎþ,Xlˆ6˜ºQ¬)çpe†2Cqº�TÚê´ö'gˆr0ô?VÀ‚Ò´ŸxžMdûþ=}ð‰J–LÊi½•)Ivq> ÊfK".ÓÒ'S­f¶1xüêb“6±»‡¾Rµ‘rµ1M9»¥Cý›Í&•••TJ\§f‹Û¤›à°Õé¾ÂºŽóW�6ˆt‹å/HÛÄV¸ÙÎÂNijæìDíIå}xcAÚ¤ f¡ªe)C!*¶¸ë�b„Í“ÔC! û¼ÆašQ‰lhS<¿Ð²£笩º¤©gët»… ì@·R‘-Y¿_N#¾) Ò&õ»3:\vK)PÚæññ( >+(m¨„oOGšs楑C›ýêùø*VBPÚô׿ë*|'yÚ°M_olEÝ" Þª\T.5™ànÝúËlò¹d‡ºÛ€}<ȾŽ;á<+‡ZŠ -n¢t«sÚÊS›¹kØ¯ÅÆC?ã)Š] †Š×ïã(Po›,@¸•¶Ùm[îƒ3�Óæ<]�Éöñc[8Üh[C½»=ÎìZ¥»DQ¬YÊäŠÑØÒ÷™ ”|Þéá --E_P´×öØmRY_ë«ÙºJ°$ oŒ�:N÷„}óRìÉó{§:qÒK²ä¼m+³íª ­jñ𬿠×FÁ…Òô"4^œPþÍãËlN÷q -¢Z,ûÚ!N¶—Šþ-3…B-ØŠÇ“ÇP/ý(8¡Ì¾ém[UÅãáVîª8D&^=j‹Þ&õæÎIýt;îûœúqÜK)$³Î'[*wBèƒÖðO«�Ï®$½8Së”î< œiþ†Þ¦«hû¸Ûw¶òÛµx©ÚVR¦®—bhra}®²p½@×Õ·ðo>Æöë¹Óaxk)Ù¼N+êœ+X…¦à9I�I῾¡Ìº/v¶Š’’};éÄcGvt§š56�Ó*�y?6™÷f¸Iýþ2S±CDÑÖC -kœ©‘RÊb¸Ùû~Z®€åúÄ+^+tíUÒ‘r=üÈg3ÜôÕüÌË̪¦âÎJæ)Ãm)#ý5ˆ„ª㛿0|ÖÓVæ¼-5C`i)viU/Ýòq�n‚‡¤™œu4U÷Î,õl²ÓÄ#“<ð´|Þl‘Oº½0HAK[>m¡Ü&G]xyí¨…{�ͦA Zò|G—¹‹“Îxb]ôðhÝ¥¤È‡mm(ª°»ˆ¤>Þ΄Ӻç™É¯|°x¶¤e[ñg Ä–x¶¤Ëçã×ëé–:Aaõ´½uEå¢é§3“è³£T‡gAp…†%ÎÙ�¦Ì¤š—Ösù·¸Ãt+×2—O¢•8K\ Ê�<Ïÿ¶ï9}üÞG�V .«ŸÃ%Eïƒî6éÔžs«ÿ›œe#hº³³w”úR´¹^¼¯­ÊÚ€)Ze¦¼^cxeƒ7§Ò�¡Ä¤MNw{……6ë0µ–²F› BUͦ’}zŽ&Ã3qM„×ð ¤rg¼‘§'<'�›"ÁŠY±¸>–ÕSpä»(õuO ÞcÄÕ;$Ä›N|XÊ#o -ÓŒ®Eº6éê]ÿ/žŒW)¹&ªc07[±M茅Zþ#š©pÚŠb~ÁÜØ*dß«§X­f’\ÛÙ©yÁCz1]©#NÓ†&ÕCùp­‘®cÿ÷ŽjG¼û?d¼±™ld@çf¼IµhåãF—§€¸ -S&µ¹<Œ3íô*þ7I=éÒªxÒ–õ‡Këò{OÛŒ7TV"¨X8ª{þE+ ~h£æÜ•#TݹÆTH-DɾÙmRÏ7�9+h›ò¦§H•2*X WïP#$S¡HÇ2Õf"³bˆ¶QoжÞl´¡ îÀkF©W¼E§¥-™|õ¦`ô°×Ssþ…}ˆoêßïÕúK¡'}ç…z“JzPªö,fiy£•H RAÂB½¡~›zu?˜Û? Ö›â×(‘h!áц͢”<ðÒÊ�zr:žþé¹0øQ5‡¢*T4(@Å^[—„uŽ"7DOàðñUO‹Zñê©öñPA´ÂíŠmº!Ù¬ÜïÍz;O8ëkPâÌ/7Qw-u™Y—h7¤7‰C7eEñmòÃh7:€~¦�¸Zû«Óž�ÀäsÛmüÎ&¦zCáªõcƒÞ¤>\êÞíÅR†%æ!?  ÅnZ ·ƒ®C œÃy;Œ¼4»à¼Ê—�ÍÆÅy;䈩7üÀ„½Ù™uÓÍ€u]ÕG:(WЦ±©8èì!zz[iÊ�CÉÉ�"+¨û¸0oMóŠWê�Qz@!·¦¬ ž�…y“Jí áDFôÅ…uQ„yã§hmÁ™�y“Ê€gŸ§‘AŠv#RØ‹¡œˆ\A²$zø‡ÛVéKP¨ÿ 7R'Z9Š2´Áyûnû5Fܼ¨ô?SEC´E K%ƒ5´DSõ@`Þlœ´š[žj(µ¡â°ní÷ ã÷ߣ¼Yj‚ȵ)ozš®‹xã£dÞ42Ä�;Ã3R‰Ú£'—ãÃE-‰¥<£°ÑæDʈ¤ÏÎ^6FÍzÄì°Ó²÷x/ÈSYÛ”ˆ©2œ^ć§ÿTWL¡€‹`­fé¶oµ oÔ‰ î€:Š5%‘xÜ)IÃ<¥Q+‘myŽi%M¨‡—ÎQµI=ˆ²(]¥�ÏH™V­·®aé-:çPÿ›tØqæ=MIf *Û:¬¤ÊÛaÞ-¶Â<-5ô{/ÿõŸB¤ÊÁhÍ´8oƒŽOMÚ8ç5 ÂòM9ŽFa…[o-§ Ô*«VÚ²¸a�EÍ¥�Ÿ«"k& Ë„�ˆ}kb�€;~51èò[S0�HŠi�¤o­K¦]K>†Ù‡29òO›Kô�g„ùXªè”)è/Ū yŽN„…}CÔ’@ªY/=‡mŤ@~“2”îE ô›ªK¾ã‰ <þ+›üé8ào“oÝ,°ðoø@¿xDlk'.¢6Fz¸´u™xeO-¡ÛÀ)˜o_V›$ª™"}¯ã¬Œ�®ÅîIÞÀio=˜c´sŽèèsZbÓêügU©k•x° u�^ H㫾›m-Ú0‡à ‹fÚÚdàl<�=÷xOº.{óÕ�¾­E%Y…±Ô«%ª«º÷�iì[xjŸ?ß!púfß5ÕAš—X™®É>ݽ÷"ì£��€£üùXI%Àâ�'u¸§rAÛ°½N籆ئ®Ú')4¼ÝN�  »öûÚ("Ũ"§}…¶q”{j1—8ÁظÉÒE;¨ûñòÐ~yýîíc:á8Fž{nœž±ï­™5OõY«˜–r牯ž"€Š` Nߤ7‚�λ%ö¤ß�áÎÇÊ`ê(…Zñ×Ñ7�NAùëò|˜eá$Šw�ÈI¨µ†-‹6íA£“Jù£T«‚–YÿéÅ4h¤´i›ÜE£“øÑE$øû±�¡/>ÉÂcÍŠdù‹QeJ"ö±­p?,{ywš»[ß[b}zûdô¨),¢Ïº>F!wCU=–B‡eÿxtYÙŒn’Ðp7/ßä�Íë8äI#§ÖI‹³^ra>ÃSyšM˜õŸ{±åaÁ†›ƒ¦I ÐÚNÏφÑiÏlÛÃm)w´GψAÝÍ"Ò*EXÊ|Z‰ÒáMýòµIÅDH©³‹…Ölû�”é 8 ÆZ†ÍÊCš—äóŒ•%•@t *Ð]ј+Åz‚Jgg6+ÉÔt` b§¯]t­mtÕùxûÑ¢:QŒjã÷ióßâ QÿcÇYÏ;[ì{Ã舮“r=Ì †6¢Ÿ5kTþ�½íÏ‚Ñi ^ØiÔ©M� -Rüâõd6æËÈ>`tìvhˆWºQ‘¯ B,ˆ™·äï¤ñW¥#Ñ ÄÈsÛöjXXYvwVäá‰lHW“‡g‘èPO�2qq¤ôƒ©$²Bø¨W‚bCëÉãg2iYüq…DN2~Ìò‘R´îbF=ª›éÍ8™ô-Q¤%07·6ŒÎ"ø¾á  Žn©û²�ý˜Êå‘Ĥî.<ïÍÝk{ph?0¿lV>j æËÇ¥æF§D#ݶEVYì Ö ²¸Ôº�a.¨£|AIÈ‹—OAI>Ó§Óšoó$¤ºµ€ÑQDÏ[(Ï;m”èIb&ÓqÖôtYÉJX»‘V£®k\æ—n‰6F›ËÊ”9Ó¼2® £S^ÍÂZ£‡êãÏl`‰)Vç-‘ùjÀèÖö.š+蹡”Ôá–JöXíKXW¬3ù›Š)i]~0¼}�üôˆ|¼³‹F§/bk alÍÒí¶`<]¤»yjU8ºLUÓ,]IԲМ­â8®ÓÌ%V %ùTY);¥H°¾„�6O˜‹«T�;® SD‚Æ -ÏÍkÖµ¶ÚÄÛ,dg�!šÖæf=ï¸tH°5žœõ샎]³*Õ -H¥ÚyV±¢�Í:íÀ¿HY4:rêØ}N]£ùmî ÅéYa"ÔWRùÀýë@„GGr�ºˆÛ"ÍJ×ÚZC¶{YéΨÓfU¤�bÑsŒG§¯`�иÁ£3Õ´ ÑVÚ{¢b¥'Ý6:ú� Ú1�NÙk[0iÏEjíº|àÒ€,Ýqy<Œù9\´”Ï6C UÄÓ]6÷{ø8’tf!Ÿ™—m·¹`]CÕ8Änc?K|�á6ßçV*’î1žVCò]{r6šîñaQgpðè´ ¹>Çé¥t{{¼?yl¥O7ÿÓR”¬ÿ­Ñþ´=é¤!X{M…ÝÃx[‘j%BÃ…ª!ˆ§’¥×­©‹ÆM8a×Ê$È42æº,Æ:º…ïèÎ~l׿˜tÊk±ô”[N‚„+”ˆ•¿ßüx8¢Ä³ÿf´ü¿ŽJGeƒŒ“´²\T:*xæC¥Ž�wQcäeÉ>ñD›Zó9�ã”å;,D�¨Õ‡Êo‰áù³B âË}X]"&³(jd žÉÔÇ1—wÔD`†ÏÝbÞ6â(H¸÷ñ\ïA³K÷(x€éTÈ6ác%3–Óý¸a®†f+’ÒÆ'¸tš#lÝ¡zI} T¶®>ï[ÚnM“‹K§µn2„ßÔŽ¯š.¾Â4vµÎÃãZ׬S&jTÀhkŒ@'ëyX!¢”¦C¥øN@ßÛÏôpN´Šë³4ú Ä“}œ --(ФÒtú—ÏáÃÁi>Û!qŘî°2¿¤l-ÉïE_Šð™ÁËIêჼM"mgЃֱ£-�ó”´9ÚÚ€ù± Gé -ã 9£ìN"^Ðn?6`w ¤äqr0`_¶r�²t>§§ ”T½|s@æI Ê-ÌT°µTµ ¨ñí ëÕÇ R¢Ë}Þ—+Ñ÷®þCêÆÕS‰uê.‡Ó'%Ý�­>ãÒ*™ÃrêÕ9°yñýBpétÛ´Í^¥f�jccéƒ#Y¹¯‚Íçmq}@(>ÈÖÌT:Äf; ,W¶,‡EZBÊçÖ+%¨tz”¾[üÉkk5cz8´ a’› *Í+—y¶é f{Âû¸1}},NÑÚMNÎÍÊ–1ªm"NÃÒI±@¦ÆUEŸßãï¿;¯ü§¸tÛì᜛KÇ6cNË2ok lF5§sÀ™yiD<ò �#Ô°žZrl(ØÍ#RzÍz‹¤,0�Tb™¨žž¶´ÀáV ÄGI H 0�¥»ñÚq�¢«Í:¡o‹O*솽½ L§ý¿›Ä Óô¥î -s³n»šû$1òl0jïÖN åð$ #E!ÃN\\:Ú¤É?‘h¤’µ¿þMKÌ‹îÊJÅÎðìP¸ð°�„­µ4R´ñº“ÿú‹O ‰Yëu™›J§šˆ‡’��;‰sœî¶fµUòEë1” Ò¡>”N�H+–:<æj!ŸÓ[PFâ -ÛBMýtCÜŠ‚Ó1áò Hö[±)ýñPJ¨í¯G¦þIÛ�f•§ÏÆÒ¡â.¦ÂKøDØi7[ëØv_�õ¢R–#…ú0i( ØsZ3?S=ljX‚¢l Ÿ0 -âA÷(Q�PѦе :Í]¬ïþ>�q½gZ�Xå„ojûj cCé–xyi. -Dk¯ÓâcÅŸÏ ¥Óž×*-÷qž^¸ Sjÿ¶jÐ]¸Äi–šös>æ¥föˆÆ%*÷à9½ì<ϰŽ `Â7ˆHó}o"»Ä>M5‡ºwñ ¼ ³ëK¸ÍÚ½‰tïíaÆo¶àÔö‚è…~.ƒKÉ¥"Iýx‰£Â­ì×NQèB[gÓ™Ð8s�#XÇ� ¥ß �¤Û‚r/sE¥—zò�:KÚw±�:¬.m,§Í`ÒY=üaÆzv}¿;î|Å@ìuÛS/&�"dÇïèn"µª0ª–´¼§lî>ÖKµ˜tĈ­ök¸×ªvyìJµ¾d»©äÈs[¨eAéP 'èeÕòx»©uЩk„è»Îl«õñúåˆÛ¡O Ø1Ÿ3\McJ˲U:Ã¥£o[ƒÇ³�ï±òoÎÛš’­pw7Ói}fÃi·5Ÿy­t«é6ïÑÇ-¿Ø*õk7¸Yg%LÖæÞ3zz8sz³öµqæž!>¸ïß‘[3c¢–~‹|0•Íf  wJ;Ðú ŠžsX^Þk=?Û+Å<ÁgR�¦’PÊ+ýÀÔQplïý¹9uÄÚm9Eây(j/fEŒ¢™ ãÚ{¢RArŸÆªC9ìDXuüIrxR‚V‡?Œ‹v#Öé– žËÙÊ™ÆES¯éÉënµ7‡9')ÍDdž;û7O¦Š”ˆàú1Ôx\‡\§ °u·ÓxÜÃâv;âjë«Mî˜æ½`IÍPøƒËË!TÜ2Ì�j¿Î”Ó;ýýö‡†�Þa‰¼‹Èe\Åö:oæ­dszÎszøÚì7.ÛŠìÓ¸²UzU1vîÑ9ú1ú—ÍÌ>›G «JõÜ>®ÑÖk=§`ì(¥bP>7Æ‘»¶” 4w®Ñô`u;" -30^›d§Ï·øŠö—˜B¨#‹TºfLN¸!:sÙpö|5J"¼5…°#Më<$úÌPìGNo¼¿Ô¡‹aÉgÕAêMʳ¹W[%Ë9,Áâ&¿‡‡ße•‘K±/ n©÷q ‹ÇœÆ¶Ð7Ön‰„¸úfޤª [Hv'Ô/%�Î÷ZÇÉ¥Ž<—ÂvªrÞÊum®�©JÇÈ1ÚÊ•O/÷–sJ›VxE=èRì»67œ]ÇE_„�­ÓrmýñÜ»3wOæëǼ/°ò ×XðôP�;îÍ·“j>ú¸é& n.}Û¬Ë16cÝq7?n$NO<µ2\´o ›iÅ⦙âÝ�¶wyúV)+c„ïÎ‰Ú -l�°YÞª^>ö<,�6£:VnZª«nï\SO�–�a>ÔÌ…“/¼;Öã*¥ì«¶[¬’õ�Öã($W@¯ÏῲY¡ûbÞ±#dZlÍ wÄD®ËÒQÍJ°B�#v,I½-51ˆ8hW�ÇØ±Y;YnP¦ -áŒFæëq§eõ<¨Ç™5�6G̱ô(8O¯I·ÞÈÛx˜ÔÒmÖ§í24Cا‡òo8ŸžŽ;�¨r¹|;½”2,UesG7³˜U(rŸžúlÔc͹)xfÓ4Ìc -…O�œèe%Ê2ºåæbà™1”;Q·‹4õþ‡¯Mím -U%­ñ†M±ê›zÎf®ù‹�gêu^~Ü1\¹B¹B¹£ÞæûîÛª_QìzÞf¾ƒBÈyoÙpÍ -ªivI 0ðð~°K±x¼1f Þ�€GÇ(çk—ä!j¯óîÍ�@šAX¤P-oÇi9†=dT›ÜûD[T©pR¼¢ 3’á&Ô6O]3áPŽœ´¬z$‚r²¦ýž-¬pÆž’k—ß3qà[×.ߪ¿sÇ­´�À3õ2Ã'Û}ªBfÝŠèã¿bŽ�÷FàQf4ÌûÏÝ#½Y1LF6†_LöDù žToé›æÐˆ}·9LÆžCCÿ°eÓ2–è‚ÓàO¼ufÐè\ޱ%ýÜ<,jHÄ«ˆ1N¸£¾ü2kwÛš�'ÕÊ Q;nRì$ÓCªÃåÁ´©ÏŠ"TT·Y„€Ç‰í>¶£'Ÿ{Ee�ã¾P—˜…vs‹*rz*œÞǩ̄Rmf8ëÁskvÛÙÚ¿mÛv¹¹©£:Ò»‡£’0nŠÔ6o«}¸�0Rì‡5ž6 -”�Öú匢©áWpgŽÇ[S¶#+G2æY*Ø6-*€yÌïÊV*‘Ÿ`•ÿI?Ò¼ªœði K-¥º3°½Ía)róŠÑQâéþ-`ºgÈëÅ}–Óúåo±^rÛ9}¡hèÓmug;íPìîû(½Ss0em°NÛ�®Íò¨•ôÜ'þ‰ºÓº&µP^®a8š1-3çªÅk³Ÿ²ˆêí[I¿ƒ§­’I¦çv‰ØRû¶öKK ç܈ô`Cû$,ìTŒJÌû"_dÚ¯]¾D[œ¹g\n¸'£àÇÝ2³} p0c츌ƒ‡‚ÙµÒ0˜æ«ÝÍJ¯¯ÍÁÓ­´Ö!m¤¦m‚†‡—Éb-A„–â†vÜf±i‘ÃÃÐÅ>:vw¾ ÅÞáá&÷¡Róyâ”I�}´Ð^R#F©ª5zŠU—£Åš÷Å^[Y�>˜ë8¡|<+F¤}šýãá?èˆb;ÕÓž®²Sy¼­[¥sÏÇBRUûU©s`éóñ+fÕ -�oøÝwÚuÞgœùü7ïª'÷HŒ¼'ájiK…:“Ï.Õ¨�­qåˆÝY/xß<ëH½Óaí¶VOp‚´´§ŒãÝ`àaÐKcÅíXNóh–¾µ¬r?mŇ¥K0ðtœÕwÜæH_WES·£âŠî<”k‡Å͵7½hÕ2/Ê=lelÞV•ÝS/E>ª5"¡Jéšþæc-]=Ç©½ƒ.ªŠÇéþ¯—ûÑ£�¬R‚z%çÇéþúíG7ç”ð·9#Rn�þÊó? ãLx3$uQd¹´#·ôàRž�ÀÛª.,†$;ƒ5¬·I!îªØ™ÝïtÜÇêÔÜH V -Þynj´.ž>Ï\à ”¸ÍÒqZz™=ìTô¼%Nfi{ÅÒ#\n5á¾­fZ?wû÷<¢ähV`aÊ“ Ûç„ú}R­—Q�ŒÆÁ1ÚÃ%¡‡Ðùwô‹Prqß+–³„™3œž6Ôâûñ~°EÀÓB†a"Æ$¢ö±f»7�y†“¶â´°7¯~V�öñÞLJ։P"@jË1•u+Ìé(¼¥¨Ô}ñ–ªa,ÞÆ‚*Q?½¡¾…FùÆ£Ûª»›dÞ3ÿŽXÿÍxøÿ‚ãýOƒã}7%ÿÇ“Záx�‚ï Çë8*ÿÀñƒ¬p¼®2úÇúù Çëj¦(p<”dzc*�O+p<)Žg°é_8ž@ÕŽ'e…ã 5ù Ç~üäK8OäÌÇë¤Ø~áx}›":¯S Ÿáxˆ_p<©Ž·ÏcÃñ¤|/ÃUáx¨އr̾áx|Öì-Ãñú²¢ 8ž ²ßý£µ€}æ÷?p¼v/Ñ�¡ 2Ãñ’’Pl[ 8^Ó’jWÐ;±xßp<ÂާïUáxMˆ–ó²ÜÍò¹EmÝ[пhüÀñÈ—_8^Ã;ÇDr£*OÊwÖ?wC˜�xüÀñ@g8Þ2o‹ÇÓ¯®p¼‹éŽ'žt…ã_6Ãñ¶RîÈR Ž×®0×8^Ã÷ýŽ×´H,p¼¦•Ëý§°ñÐ -¥°ñšì>"õzìLºßŸ6^»?ÿÀÆk$î2¯aÎl<�y_l¼ÞÂÿ'Ô<±ñ4¾Ùx¨…�'å{Éúf㽇ߘ7­vkUübã µú6Þ裲ñF­…�7¢Z|±ñP -oPCýËÆªª)l<)•�'åÍÆ<·²ñF¿Øx£ŸÿÀÆؘYo.rC °ÂÆ£¿Øxh…�‡RØxg¿_6žÔÊÆ“RÙxRÞl¼Ñ¯6ÞÀÀÉ‹ÞÅÆ{ßÇù}ŸóØxR+�ã -o|Î`ãI­l<)•�7>Ç?°ñ:¾‰�×)¥Ìl<–ßl<±�+OSdeã}o…X4?l<©í¹¥°ñºî^l<©ßm_bãI©l<”¯«•âsm6žPë•�×Ç|³ñºÜÛ‘Øx@® o+™�—TOãõE© -æÁ‹�§‘¦²ñôÕú}&6^R6/‰ÆÆã'6^W%Ö‹�'µ²ñPÆ‘ØxÝšâ~ØxR+¯“Il¼Ž]æ/¯�þÃÆc¼²ñ’’Øx[ 6žþBeãiM÷fãu±W -¯kÉWØx[Él¼¤:¯+€SØx‚’¿Ùx�¶€ÌÆër�+l¼Néí/¯SØ”Ùx]=W…�÷]àÿ¯7Él¼.“ÂÆŸÏ?°ñ¤V6ÞÀ‘9³ñ~׿l<©•�‡RØx(¿l¼N²$³ñ:^$™�÷.cÂÄUâÅÆÓ‹SÙxªDªlN¸ÉÌÆÓñfã�Ù~Øx°˜ Ïæ¸_6œåÂÆÓŨl¼­d6ÞRs›ÂÆaõ[ØxC•È…�7ÄI)l¼­d6ÞVƒ�'LUeã©­îÍÆÓ7©l¼q´6–1/6jaã¡6Þ8ú?°ñ¤V6ð­ÂÆ“òfãé»U68ïÂÆ³‡å—�'ÚVeã0<³ñ’’ XIõ˜½Hà…�§/ñfãéÁªl«°ñø•/6žR•�§ÀÙ>‰�—”ÍÆK¢±ñ:‰¥?‹z§àù/¯«äª°ñúx*OÅo6žÔ7O7±¶ˆ  ëÎÂÆ[Jaãm5Øx]žr…�ׯëØxš´+Oû�ÊÆ[Jaãm5Øx¯+O‘ÚO¹¾ÊÆS̪°ñy³ñˆ«l<�øfãiãWÙxÚ£V6ž¬‰ßl<úL ÏÌ¢2o+™�·UgãY obãabýbãÑeZØxà6Þ;ªñîÿ��7VKgfã�vü°ñ8®°ñ¤¼ÙxCÆ…�‡ýVaãéò¿Ùx¨…�7Ì™5±ñlÇþËÆãv6ž”ÂÆ#0÷bãé)*l<Å^*oŒU ‘ØxDZ -�Ø~aãaz±ñ¨�Ll<…}*#�ϲ‰�Ça™�G üÅÆC-l<"0…�G�÷ÅÆ#áQØxV -˜Øxzßl<Ão$6¶ã…�G£÷/jBaãQuœÙxƒdó/?ýÂÆãe6K¿l<œ2�DaãY¶ñ—�G¬®°ñP -Ï?l<å Ï\ò3OçÍÆ#ì’Ùx˜ò6žBo6ž"I•� ¤°ñðoúeã‘-l<ÒF™�§AòÍÆSp¶²ñ€}¼ØxR+�|]aãQÚðbãQ’PØxVÞ�Ùx(/6Y’ÌÆÓ—¨l³ñ:$°¹Ùx]¯×Ó~ØxS6žª/�ãtœ’^yc¿ØxR ¯ã�Ùx(Ow%b®RÍ¥4ØxRÜ0ÖÓ©(“f6ž¢>íàÂ:O“Veã)köfãi<¬l<•ÒV6ž*ó^l<%M*OÁæÊÆëlò~Ùx‹ -¯?í‡�Çpõbãu<´2�d]fã)ÓøfãÇ*l¼®�ÏçÜl<ÝÛ7�baã)øUÙxŠu¾Ùxtìd6ž‚°•�§åÁ›�§+O£Xeã­}±ñ¤V6ž¾Ze㡼Øx=<…ÏÎÌl<}ú›�׃ھØx]Ë«ÄÆë0Y~ÙxŒÌ…�×AÄg6^‡ÙôËÆÓ8€ã�zä»'6ž~3òÞl<‚ …�×A]œ‰�§ïúfãi^©l±ÐñÆyU:F±/:Þà½Ít<\¶ o+¹X$©NÇÓŸ¬t•ާÍö/OZ¥ã¡d:Â‹Ž§O¯t¼ÑÆOQ€7o�Òë°~ýÐñ¶’éx[ :žý�DÇÓ~üEÇS9T¥ãY¼6Ññó~ÓñJ®t<"¶…Ž·•LÇ35Óñ(G-t¼¡öŽOj¥ãI)t<„Oj¥ã¡:Þ€úKÇÓ­,t<]ÅBÇ[B¢ã--èxäö ohýö¢ã1ý:UŸ™Ž·…LÇKjÄ(U]]èxßt<¹BÇÓ8Qéx -¿éxR+%Óñ8ñEÇC-t<)•Ž'åMÇÓWKt<ºè3o ™Žgj¦ãQ�šéxÄî^t<•†:>Á…ŽG+׋އEo¡ãiÑQéxú o:žŽ+tþ.ÔNÁ�6ÆÓÎKºÑN݇Ïñƒ´ëf¡¿‰v=^žÚ©n´ýà솺_[¢Ù ‹•l˜�“N*Ëî±Ú­…²#¬‰)u£[»b!Ù‘'ÐCâùx)Ÿsì -Üã–¡ˆ¶±)v˜u_׆ؽFɘݬªic�KbØ5µäsñƒa׎ÓqÁ°kªžG†Ø¡ÍëÚ;”»ßb×(vî³BìZÔ9/ˆ�Ö¸ b'e|úU!víðÎŽ±kg³üá‚Ø}§Xëõ(»†ßØqlŠ]ÓBéèצØ5­:»óéc‡xÒná�Q”Ù6ÅN×­Pì¤rSÅN -‰–E±“B™X¡ØµÓ Å®aµtc÷¾•ÿŠ[­¢yºï2ÆN*™‚…±ã8¢b�±“²mÞ<>"‘üö¢ØI±ýnP쾯q‹±kú2Å®uëÖ^pº¦J¢ˆb§â;õ-QNwGëawj?îJ°“眬µÀºgn~Ýi›…^GQÿqmx�öìƒ]wz"© ëÔè /ã ×)÷h]=®SÉû„Ä­“³#}8�­Ã�èbp¡–�¡u[ôäšÁ£æŸ…¢»œùUˆugð(BTˆþÆ)Òyu[ظº­­N¿ãñ’d%îO�FTh–að4Z%D;>=z:�¯œ9u‚œôZ8síô†ø…©S¾Èe¦Ôñ^aêè�ºÓÝW£n Q·Ä ÔiçiuÏ)¥­ Uøtš �9¶(¯9:’‚N·„ §Û¢³é´¾!xhº‡Nœ?LGIþaåu\‘ç0ïÖu‰äÖG$SéšrO�Ûä1€Ö<5»¨t­_èËT:©¬�•®)¬JËLPéÚˆ=s¦ÒIµ¶Ö0ók#˜:A¥k8M_ -”N"c J‡ÂP:B ™J×HR ‹Ò^¤1†€ì¢Ò½G¿˜UsÚ@–¨twüÖ7•N@º *�•¼¿)Qé:^fml*^LÖ%éT:<›€Ce*ª—æ• »�±X*òá°ã2”NÛ^Ìï”N»l÷Ót(�ò¹î¹™ túQ·Ûhð¹:±ù,ˆ™ŸÇßÑ̤cO�íc0éPHÕ%°|‹J‡­Ó"`H:”ç±…@Ò釛ce éôÕ¹è I·”Œ¤Ûb é´û¿YTj®)„Ȧ%#éÚíEû¸ð\[LºFÉ�™I§ãhÛ^L:ÈLñÁšƒ–}±HKL:øÆN±«º¶Y &ÝV2“n©‹I‡© ÂÁškX쪘<3éÚ}Ãë8ñIæø³�tKÈDº%�®i÷ Ó.@s�¡ó¸ÿ �¾†…2×q-`е:6-Œ\™G‡j3œóè �?έ#±Õb´-<:©„�NŠñƒG×h=}ì˜ef¤¯†ÔâÑAÐÆô98sö¤s+v]É+¥Ã@tŸ6ÿ°ÎOJâP%Õƒä‚o34-Î\£à[±/{ÛÒh÷,«cçÑm%óè–ºxt�Æ­^4¬\ ㌣ÓS` èuØqZ§‚ñèÖ? �n«Á£ÓÙ…Μ ó:¾à蚢3‰zeÌ$htfcXu 3ìã-�E‡v…öÝI ÷Ÿ¢C!8�A>hJV. Ýãn:‹B'(z†Ðih£ü&t*|·±ÝtúªvI6�Ž&¨ûܺ뉅¿{Ÿ±¹Îø9³ÌÚð9¥ÏZ6{NëJ=T=wúúi‘çâyXà9�F'sç.7OYØ9Í¥go›:w»F�ÎQLÌ¡sšI­ÝЙs[Hȹ%qNå=Ò8×4]0üg✠¶æ‹8×Ôp!o{žU¨?Ϋç­ç½‰sR(b[ĹFƒƒ—7/sy©ÓqN“f ç8‚Kœ‘sMáHÓr®}Ü+k!çZ³Œ!Î5š…pNËÜœkÍk -puøÇÙUÔ™Ú”pŽÏf�š�sú Ýœ{ž�š£Q3Aæžgãå–bø��k z¥Ëµ~Z{5,J±Š–�ÑrK ²œ6dT¶-d\S9‚ê‚–k*o¸ÝŠÜŽÓ¥QÌm¡å’’Ðr[ ´\ëîëh9~L#,šÐr¨Ú®/´œ"Š -'erµ2ZN*ãÞBˡܟ¶Ñr(ZJ´œTëUv²œ¾+½Ê‹×(‚¹CÎ~¥�¿û¸�ç‡Yn+™,·Õ ËÙ_8GN›i:á -Y®1k÷|œâšÃýsVØ‘MbqåPx’ø§ƒåk^øé8Xn+,·UË5µ”°cs°œ‚ÖŒ�ÁrRoî[€å¤œWÇ�l^SÀrRm¤°Ê}=,Ç™Z³°\뇅¹XNÑ6c–ÛJË-u�åôJ¨`ãZsÉ–³ÙÿuW‹½/¬\ü{Cå\Y@(±4ö)NcYîB”ãq#¿¸Žkîܼ�r -Íò ¤œTž½…”C92G‡3?Ï]‘r¨ç97RN -q¸…”“Âη åôÝüLGÊ5¥áÝcŽ”[JAÊm5�rí󸼍¸ÇƒB…(÷|l·Ä{šÍNðä´ËïçYqr -›X"ÕirW$u&'ÛÖq‰%wYÑä"Éi'ýiçÄáH�×fâÈ�Ÿx>]”<>A‘[B†ÈmÑr -qié¾rÚœ=g+9å•`ƒ §™Ï§o€œ–B™'‘‹ø8}ãPÐã¨öv*Û‚Ç�Ó*ˆ;Nп°í'¡²…MŽÛš�ã4–µçØL8ŒL³À*ëããsˆ�Ë39îjþÀdpŽ]ã©Ü89UŒÏµ±qŠ: aN� ¡@ã–Ì8Eçy}¢ûBã5P¥C“1Y•}Üôúƒ…Œ[JAÆm5�q‰qè^È8…QíÊ$dœ2k> dœBJæ"Ì8E0>Ö>‘˜q -”ÙøÌ8� º¡0ãJ¡(~1ãdõËm±àdÙKR>#ãh¾´¥V†‡eŽŒÛJFÆmÕ‘q´$Ý—% -°6—·3•úGë%u­�ŒëÝ[‰2îrŽ`ôˆŒcϧevAƵÁÄ@Ƶð�[È8)äÏ -2®)�}ÑùæÈ8ídO[—;2NWßK\2u¶MŒ“`)‘ Æ5š£¯Q‰qÜLFÍ ÆI!ñÄ8Bg¾2YÀ8=B¬91®ÑDxm`\»>•§è�¹ö+NÎÚ¤Œ+®Ë˜@kóŠS”xØ[ +N!b�‹§q¡ÂŠëѬ8»È‚ª -£U PXq¨°K¼×�øˆeÃ'…°rAÅ‘…Ð »PqVwž ×5ãjó]PqÐ+˜Üƒ×1íç,Xq´=+²™YqPTF¨8õPS稸NF÷x**NMÕ¤u*Ž_¤wi±ât™mÅ‘aqRñ|\´8)„²- øxP¢ÅIÓ=]´8Í‹‡¢½F¡ÅI%Ò¶hqôvkݸhqº<Œ_…§øYª…‹|qñË'@*VÔ§ÞKÞî…‹ŽADàâtmyÚ -/N/¶ -‹×Ã?(xq É×^\ã58îÍ‹ST ¿˜Â‹“Jfñâô&aÛºxqRXG^œTF»Å‹CÑcñâPγââH`ht\¼8} �Q × Šé̸¸v?6@,\\£Ê¹·�‹ÓpHL§ðâl�ÇÆ1�ÚxáÀ¸÷£÷߯YîàÓ*0N£F.ŒkO$o×?‘æKÀ8‰ò¸Ðç²@ÆÆ¡(¶U€q¨€+ƒgLj£Ûücî_…Ç z Ké��S’�¢žEŒÓ€ŽÛ[!Ƶ À,b3�ú Æ)íF™O!ÆI¥~hãÚôÌ Æ¡à‰‘‰qR�q0áñ? 0ޱƒÎÀ8-`0i[À8}}[Þóë}/ÿõŸÕt>£ââdR{a‡í‚T&áí°8U&éVœDVª�Š“pŽg“â¨yºfÅimL�08qšÍ# ¦×]&ríy*%N{b«‰“ý•VS‹§¹ÿèOEÄi�0Ÿ¹ q§çf NG|æ îl¶ X|8}øçÞt85ƒ¶gT8Üy1h±á´Q;éw4Ü}ÚL˜Áp�[:/.{Ïó\X¸ïêÀ‚¢ §¸º}ÇÀµȟ/,œ–üä_ NûcJEަ¶k G0ôè£bá`U´°p͈Ómcá€àE)X8ÂÏ}o,œ"k ‡Ò¨p-:?EñY§ÂqÚõ\• -§/¦ÕÓ‚ÂézÒ (¡ûä…S ‡¨…Sô�ýf@ášBmk¹¡p:ÏrýA…Óí°Â½ Â©œ-x†ÂÉ_pô¹™pz&&†„ãóØí'"5ÕãÞ@8ÍS_î‰q%ãà4áŽãÙ48yòG5*•ÀÚæ°ôN,8L—ï{£à_S,œºJ(–Ì$¸'¢›‚Ó¿IFN¬ã)¸çô‹æ8.�#æÈ¢?Þ%Ypwd^‚‡CÉ ÷;ìýÍ)xz i¡¿cðu«µ>üMt̨Ú[±F‰Ð”ý¦¸ö1¬ùŒE§Û.z øMFȟ梸ÍG�}Sjo6òÌ~ÙNó´­˜˜oãO0ßH`6«‹ZŽ ª:¦+z�ÔÑw¨øÑ�og˜ŸeÞ› -‹z3Gdžol�/7éÖšAÂÓ]ˆ@è©%Ìm]c<3ª¯:°õt%�Züõ„z)òhV#ÊÔ~uèíþA¼il³¼j ÞTgêþõŽxS™„êDxSòÂÖTAxSÔã¦Exkír³ÖxÓ¸ÂÆ"o�VÊèÌÒઑ‡ÚËÌwSÄï‚ïFjÌš)�ï&¹ë‡îv™ËÁb»©)SUG»�m; ÙíôUÙ»éI‡×M¥šŠ“¬›Oh:pª›Jfn*�ꦈƒ^fºÝ^_»�n÷£`'ºA9ŸÆ]Z@7Qx`ׇ¨`ªUô8Î�fÂé$½wÍÇV´¼ œf‘y¾�RHn*:;“ÌJQP -®µƒÜ䌥má¸Ý^�¹0nÀÌ?禸Ò —!nz õV/†› -to nnZ&ËÆës„Û嘶Ep»|—ºn·›þ~›¨Np|›R°fwø6%oI'fzù}R…oÓyVxð¶ûôlbf·]¾®Xè6ÊFú·Mß+gnÛ¼¢äʱm{©Y jÛa_±0ÛŽé�l“púQ$¿)4™w¶©B…^ðÚ_,\›lbe -SpmÛ½? Ö6>Ü V[÷ØdAµÉÖâpÏæÇ\G¿÷~X'¬;&XyÆ´ j,JÛðtý‚´)Ó8œ˜¶m­»Gå¤m}ÚÆmËÛh#ÆöÃmrï4g÷(Üô1>óÙtZ¿m’1we[ú³élʱ—+œ Š åûÎfÓzÄjº�Ìæ…P™Ì¦'N¿r�Ù†w�,.Û›,X6šÅ”¾,›@¡šÒ•mà§\™l ÊµÓ$Ûå5¶‹Èv?þàg Yy½EÎck -Qü<¶†9øÝ+�M“Òⱑ4›˜Ø9�ÍV½³âØŒùwm›VÌ–šÎ46�kyÕ ±éÕ¶ÕaÐØZói´ÐتªwÙMÇ֢ªàØP.dž¢;¶plR,͘qlR)›_8¶Fõó36ŽMŠõGe›æOÜŽ�¾e«ÜÏWS8uºdžªè]ÐØ$PL46 ³-»ÈuÖaÝmc#-<3�­§œw¥±5ú±®¾ilR<–ä)#-Iî nH¢±5�¤XœÆ¦4�=RNcSÙ×0(ݦ±Ñ°E1�ÃØ”k·ÜzÀØNŠŒe›Ò0,fŒm'ÆÖ¨ê¾G…±µp¯^06”Ù6‹��«¢Ø$‘›V FbÓ? Ä›JRÙœ-qÊVƒÄÖh²Õb8“ؤR] ¶†å•—žþ�Š­EÓSA±µé…ß Å¦Ž=–Ö ÅÖØ‰i›Ql ®ëŦ3mÞ[TO_"“Ø%fºüAbÓ_[Ep¬5­;‰M"‹Äf -´.÷+'.*K–@±IÁ¾l¡ØZØ -Š­Q ãdNåmøšd¡Øô†Úgeµ˜6x;Š�oqÐî(¶Æ…b³›Plô/’Êtõ÷ÄŦfF¢yŦ1À1ŽbÓ c±·@±©ÜÌüŒbccBWv ØZtÅ,[î%RXlŒ;¶Šv›^ÔÛjËf䈃��il¨4Ý�MJO,6ý{\£¢Øè¸xü4›±H-?m£ØZ@) -ŠMÅö$»ŠM…ït%,9CnnF±YlüÅF‹ÐÍõ÷– -¥ÊÈŽ‘d%Åæ~Ã}¡Ø µ3¦d›y¬ ŠMqv¶= Åê—øRF±øx6Š�°=Ä@±õæôƒ‚b£€œ×0Plôâ0�ŠÍØòO¯(¶·z¡ØPl´ñ†]Î4k†„b“¥E–ÅÖ£âv¡ØšqeFE±µ°T^(6š3ØDJ\i+%É(6ÎäoŠMi$JÅ&þ²M§‰Ä¦ïaË” ±um׳Il$“£š(@lʼÛZ 6µoØÜ 6u;ØJ6“Ø(H;@ÁW-‡l‚ĦV»á™ÄÖ»èE›.µÕò‰�î+âR™Äf*íØ(¶Ž_ì§o›ÿ¤„b“j—†b£OÉ"�ŽbCñ•Ì"±‘²¦]?Hl–Ùº7ˆ�n ¦ÁbÓ϶r<ç°éu°jç°) ÊB#cØœ0ýl ›>ˆšÎÅaÓ°Q sØP±ÜÈ$6åÖ)…]$6=è¶™=zÔ g›ì–Ć›°Ù�8ˆ­‹Z›Ř †�‹SA`ØôøZ01cØô6P€¾0lZêÙº$0l _¬çþ)øT•�ç†M ,è†MS=5…æº"2‹ÃÖ¿l·8lZ†PF°8lʽb.¶†EP;+†M‹akœ ›6[ä vv¸¾% -Û=mH_¶Ë‡§Å`ëw•Ávz~f!Ø;¶WLùo¬ÿëlÔ -t'«-µ<ë¡RÀ[è6„ËOÜÓ¸ò¯¿¦GÓê)¿¦C¤ ¤TÈ4 ¿†2SXOØ1§w’¬jçˆP,üš‹Æ~M -eÅ¿¦æ4Ûhýxdlñ×4 [áQæ¯if°ÅFð×4,Ô[Í*#„ZøkZ xŒÆùkª2áÒ/þš†€Ã[Ç˸À4ø5*JN‡t‘I“BQ_Á¯¡RÈø5”q<¿Æg9Úmó•:Æ�sÓ×T磀cÕ:-µG²q&ùêŒ_ël'2~m+ø•Tï=¸>ã× üâ×:Kç„_Ó³h^à×°©ÆE!á×±ƒüÊÁ/rüš­ -}M¢Õ(}­+´C§yÐפ°)ø5Ùj[hð×%`Güµ$$þÚVƒ¿&Ó÷Â_“Aý›¿†K}á¯ÉU¾ò×’’oÇRƒ¿f.ü‰¿¦Ûñâ¯A(ü5yõ¿ùk¨…¿†’ùk^ü5ÄÌ_ƒ#QøkRÞü5=M•¿¦y˜é~wÞRøkšå-›‡i©Á%ðk´!ÞÞU³,±PG«�_“BÐ2èkïÑ÷ß�UþSô5¢köx&úšbœ˜d,úZkžS[ô5¦\óÀÎS3½EcÃ×0<ø'jEXàkR ^|�ø)Íå_£©‰†¯o çS ì|ü?|M…fz“ákòÏ0SÔ€¯ÑŒFSÀ×Z<�¾†ŠéfÀ×P¦CÚ,àô‰ r¦¯)'󱘻á×è°ƒöü5Ò63m‘!Uy‚ùS8MwÄVYÁ_{ßËýÍçE‰Sk Iü55•Ò͹øk§¾øk(ZmþšT^ÉÅ_#~ºŒD>6}üš¢3ÞÇâeMµ4?VMŽQ^ó‘6æôõŽŒië æŸcã×´íh—ÃÑ~ k¬À¯I±3ØØ#öÙ7Q¬ÓѪݔ3ذ#5›°Ä`ë¼½ÇÜ 6mý-p ¶­äÒ�¤:ƒMò`»l5]jš‚2‚ ; -Rë0ÅÚð¿tÛ2‚-©Ž vñJ¶>M…À¦‰¬/Q;’Æq½´7´^¼L`S€Òú�Á¦è°"œ‹À¦80+÷B`#:l¥VN`c‹Ç–4l¤D€ ±9\�z) ›" -ÀFüö†àŸÄ`bG|Zů)lM³]Ð×ò5™ ¯½GÊ¿9oϨÇÌð5íƒ)´øÚá·n±×7´*è5e*h> ò«ªóÚàµÃ{e wMb ˺%:Kïߢ®¶,Ì52ý­/äù…ãÙÄ5jÓ¨£LÀµùxt;xkrZ‹J:ªvŒÙ+mM©—vÏ [“p9C�È?õ3Ÿ§¢ÖŽ@iM‚9f:iMíi•³&3‰ÍX;>º]ˆµ%dÂâµùjj7 ÐiW?7]íö²3—³&l5M†ý‡¬0 p{©Î¦iC‚2sÕ–WAˆçÇ[ƒªv†Gh¢ª--¨jªv!yPµ;6Íy�Náã쩦…“9Rm+©¶Õ@ª=w4Q:)MªMU ¨¦9„ⱜêׯ©©�‰a,ãÔMí6ç•ÅRÃaò<*KMM¡„J¥¦ô-yð ©áMûy*H�vGíöž�MãiÐf!SÔ·‘ÿwˆšpA#�¼…DMZbÔ7ãX£iÉIÕXæ§Áÿm‹ê’� [¬-$|ÚŸv»�Ï¢ ;£ûRèiºÛ©/µ5/šXô´­dzZ §óEOSé„ÕEM}ŸÊ:xš>df1z:í ¥LN;-ÅÜ4ìÝ©o¾Ó[ -5�-8ͶÎt’�­¹;3í1Í$dÚiFÓ ˜¦’þë :š¾êm7©àÒw]Y¢6kŒÍK[Bf¥mTÚáÞ\‹”¦`(Z”¦/ð´�I;îm %M«æ IC¼çf¤Ih.€Hㇵ^ i8ўפM«ëXx´øw†£-ÍÑhÄ´`�[éã«�qÏ+úªœ‹v¹Ê¢]+ÔÌP4Ñ >×F¢AÿÜ›t¦¦+>6ÑØØiÿ¿TŒx©‰Ѷ’_í­­õ{•kÀC³vy÷÷X<43 ¢íÃyh2]´Vê ¢µá+¬BD3ƒ"7Q`ç¿Òʼn¦ÅbÛéÌ EDSgÖj…ˆfju^~œ[D[Þå 厲3†Z@4Ê̈†B9F¢‘”flw"š‹ˆ¦U3E¯…‰¦²KâM;,†Ã™¹é$&šTw±p&šÒ�‹‰ÖÜí(#ѰlÞ~ ­(< œç]Ó‹ˆÖ°^¢nÇʦԃ̓H4ÅÄ­Hd#Ñ´=±›H4)¶Y $ZRÍT…ôúÚŸ„ßB Ñ𹽨t!Ѩø±¢„†Þs»˜h²yæ-.L4©Þ¶æL4ì ’fÛ�é”Mf&šÔ{aM‹ ëæèH4�²•‘h¸«��ÆeÑ(X^H4ÕØŒ�‘híðfµ…D“B=îB¢5ºA?OE¢¡² &g¶{[Jòáa2¹WTššôÒM-wVømÏ(”Æd"Ú>.ˆh�ùË=‚ÜêÛ¶š‰ÖSÇ]Ó�~m+‰¶Õ@¢iSfƒ@�ám@á{"¢©òÆ.à:ì°ž­DÛBâ¡-1ph -8áY8´ƒŒCCü<›†Ö¦7N M_6Þ‡&‘‘1hhÍ�⯠�ÃÍ84}¼½Â�CÓÅvqδ#çJeÚ¡×açNjˇ¶•ŒCÛjàÐìÌECÓþ˜€hÁ¡©$É‚x¡A% î84¡m«—qh -î–"ph-,-×.g+‡fê‡F=(#�CkŬ£4áФº7„ãФX™·ãÐÈŠešT6œ††€ÍrÐÐdH«-šî¤ñÌœ†¦«È;½ph[I<´-�$;ú�5 bO«@4f_\[×qJ<žø5š=Ú2-©2¤eJ£q€Î4 -:÷#Ñxê°c\ǩԔÔ@ÑÈe˜Í<4‰O;7 aøÏ¦ØŒóôtjÖ¥ZÌEšËüdš¾™Ÿ)cófÄÌÙxh[È<4SG¶z%ÄpéŒPš5;' Z»þ_öÞt9’ãØ~¼þÈLº6€2ÖŒ¼úE‚’>Í”#%�dcc4�&q……ƒF“â}ú/Îq÷ȬÌêîªn�K2’€#32_Ž{^¾=ÿ(¯z³Ñ`rÿŸÜˆÆ"±,Pm7¢Aåèäþ3½ žFê|k7¢á9[è�htH’p͘2¡O�ï�×.Dƒ£ZªÃ·çœ‚GÛ…hÊäB´‘j¢o5ÊMÏ6¿9ÄÙ�h µó>0»ͳR»Þœ¤d5œ”©¬ßˆF*gÍnDc[¼TÍ®Dk¯µ+Ñàý•–v%1JŒ=Ù•hÊäJ´‘jW¢ù1®¤Ø:xœ×)¢•à� -÷;AíJ4” ÐìÁÉ•h¤1½ í±¹ÝˆF=S®¢Ó+ÑFÊôN´‘j—¢9»¦¢Õ[Åæc�ÍÙ"j–À€ v† 4ìV4¡”‰äàK�j·¢±º …²]wã›Ñ©v+šëXÛnE³ÔíR4(ßİMïDCQ&R˜£y€Ô/§W¢¡î /ø±ÑŠÁ�íª3”¾dúÂôB4JÓ4yŠ8S½ -�€âÉ%h´·ôú³`õïìö³¨÷&¬]~†ì%¯ÕÇ"ódN'¨‰á oñ�éŠþ9^|ö†¤ã_ÿáöaÚ0º»ÿò/÷—ß]]~ÿåçwß¿ÒNÔ=ðëÏ/ϯ7<ý׫ëË/ÿ¿Ë«¯¿ys�íÑ»o¿¬ýþÝýÝí;Ÿ]]¾|ØúáÏ®n0W—¯¾ü_—?ÈÓïÞÙÝõ8<¹Èï­cüßW/¾‘â›ÚÆοªsmVwc\÷ÆæÑý¿\Þ_\Þ>ŒÏÏ–ñ·G¿øäáËß޾Зñ{Âï_þéîö/•Y*¿žœùÓ˯ëÜMþpô§oñ—"ùôþõ«o¬�_þéòûcý¥j°¿:êŽ?©ÿüãû£×G@Ý­ìºãÿYø¯Júþ8ÿñøÿüßîøžþüè¤¯Š¬¨i}ÏÛWÜè³F¶ä¶ÈH7Ý@±WW›[\ݲc>âýär_=3½üPnƒHã Ût¸wÊã>/øñS&ŧªéýãíg;Š"¥ŽQö8+Dx$¯fäA)ãûKJ{õåúªºÆ´£Ù§Œ<ÿTÕh¢íMı�ù;ŠØù÷„:ûr9ચ·ý²µ1ûbŒReöI#ϾUóŸ5þ&rkäåÑߎlƒ¼æC�œïõ¡$•½nfd…®H“Q<—o&k#«Ímë¨c\ßì£ò´õD]ámäéG—m¯�ú?^…ô–‰±]öŽ\6<ÿÜHž~x¤´ú„¼ÖH�”­¼ #ÜÌÚ4QCu2ðt6‚´¢`ìëËAr‡‚‹Ógéö"k2‘ÈëË/´�ÎJöó—5ìB5„H4Zw–<(Yú gAF³»õ_ñ1ã·I¢ÝÁýc=s�…L|^%‰éÇ<{…ÂËð•j¯‹ä“šå 2âD®r"C†•}²� Ú-'©7$¦žž aM–ù&™N/,=¦ƒ¹>–µ© -Ÿ"½LgºdÕÂ+Òƒ‚,LiÊ�õ¶>+Dê„Wµáup!i”²¸—¤[TJI¤W†Àì‡JLr£è…r³xI¦J.s@ýžD.’‰vÇbõ2‰ô“’ÌÂsBd,½5¢O=ŸôVwAÚ­;¦°W�ð ÃÅe@C¯ãœtËÙ�G2TõIæåçB¬¶zÐàÏB¤Ã…}¥#Ýè»®—áVYçôcà™!©²>õ’J›ð! ™ö•~¬ØÒ0Lˆ>K«Š¿P>`Å®nëm�ãOù;dÏIÄY£“H[.ÊHNê½s3Ñ^‘ÐI¤‰dÂØ ÛŠX#²G‡Ü+±s²Iƒ¡Ð@–ª­l  lÁj³ÐƒxìD"fø²Î²ëò ‘û"êŠÄämBEü/á;Y|Ök'±²ñDd�û¬[Û#õÙ¾´= 9CbP¹�Yãˆ=  bƒÊÖÛɧˆØ^/¡´u{ˆø e{.„�3p¡u”Ø‘ìwxoìäSÆ.RF$Y†KWž�:5Iî«A$Y–" -}p*¢é’k ¨€mD2ŽˆÉ6a”:²ÎƒN ²�H¡¨»8÷znhî�îb¼'��Ö@W¼1«îâÅ`rª�ø7Ñ”«j½¦'o£>Ç5íÙòíNês2e·ïT‡hêTÂFJ}kµhçÇÕ—‘²�¶N/+ðxé焜$kìÕоºÚÜ¢ªU¸G¤²ÈâS#yÚpÉû|3yí£‹¶õ£}4¾^û脺h[?š´ÖÅì£ò´u* Ë�NÈÓ�.Û6ý¼o:ôô£òZë~¢ˆo$O?ºl{]?ßQ–üíööüæòÅq^“#ؾ»H’ØáVqx²ûSšapƒùÉI[­Óˆž -R{wMßýñ -;Áœ¹X±õU®w�N!zÞBZ"¡ûãõQ¹2À9*ä$_ )WU_ÖÄ|Ðj¨ªÜñâëgà—0 °šYšhPƒâÆÈ>ey|@$†³èyíQ–§ª]mnd¥­­Q¢ý¡‹Ú:œë̲ké…è£ë…ÈŒ)ù` �¶Ì8ä™ö£Ï¬…~@§´î¥^nøc…ЍdT0ò�‹}®÷Y[fè{cmšª:Ú :ù¹Ë6Mn%—¢Á=G©­Np™”- Åx¦ tIƇšÂPä•XŒ8i �Öˤ Õùh�úÞë£nðƒ³g#‡¶Þð�®\aLJ·��£­ÿŠoí×:Õ‚0a¥÷Å�óX—Ë 9…hë \£íƒH�4áý Ï¢(º6ëƒöÖ»0h/PäÐöF[c`¨mÊmðMý:kNsvXÛ3X‡Y%Kɼágeäu—9¯3¤m!vºœ‹vÇåQEOØïø / ½p£kÛ— üžbl#ìƒîhkǦÈCq”|›")'Ãh 4ëØØã¾}®DÏÖ4wÑ›dëzãžeñð¹PŒ…¸#¤¿%Å‘‡J§½ˆ�AÊÛŠK/ª©t¼±gMþ¸Á69 ,šüCtR�|”},öt*#¹$¯Òjèµ€XÉú!^™Ž7~ͺQ&2Ö ÕnèýV‰YæögÒY.®oDIìx_œŠ~ßËá φ6 Ô(ÍÊà=b{ÚÖ9冄£bc¿ÆÏ>hŽ.Ù!ÒâêŠÁMXY‰ÑZp¨Dø†q´]–læ»!¥ÆBƒvÚ Õ˜>÷�Ié.4ê¬ “9ƒ §£Ý(9Ĩ3ÝEo£�_Â餲€ôjs#Ú:rà¢=oNu’ý`»ÅUEáXˆYn�E=‘ì£%§¾i!gÚ@/ç:3)ä8äUÛƒö‚Œ"£M BÆ[u­È\ÔV]v&(³gCÐe nò2Í�’%™Xø¶´> J¬óúÖ®ñ"›Ì¾·gëábÌX5ªã�=8k‹Ú¹büœ¢-jÇŠ�k²p99Õ;�F QnÚæ.É6íÀt¥Þº¾-?KJÙÚͽ3brÇ;6ö¸¶PL‹#¾áƒ¡3ÁîP#]ˆuO™ G~—³ûA$rÃ{T¥/VûaÑè¬_£0�ï$¹Ø„kzŒ'‘Žº3}‘£~ÃTسQ{Aži­Z/RZ³X×ô*þ¡g�h¡æÁN_Þÿ§2NÇÌ;:d΀*2YÁz;&P«¯’Þ÷©=;˜rKäø¦\´9+®3:doœÁzÆüN“œÆÝD.ÚL¤nÐõL)˜¤®ê¶cH¦/>·×nˆz¬É~Ãóút´ý®672ʼ~èuµ»Ðç&ó%z/ª,@0î¶µzô 1M(˜Ç,“w]§¬”×ï36ãfèS“w9ÇûìÙÔ¶hǸÀ¦î�[tÃfãêÚŠ¸ª¥k#�³ b°s…f–’�7UH¥.?fÏz_ÂñƘ(f°5Qª] râ -¹ˆú†Ë)'ÖŸp,o¬ô:|gGF^>Ù[ªÛ7brvô·—g�$'T,agŠiÒÞâ<5¥‚§�Û¸‚ŸŠõd1U#ç¶ÆÉf7 1¼�IˆÓ�{¶oÂ+�8Âx(Mi¢Öe‡âÐ=©¯'+J»Ø0ºNÙÏI…!öf2�<˜æ‡åÓFsÐãšùÆœµY¯G†5ÜL9’M�®G¢MZ×e‡.êÞCÕ1Œ“æ\oCcxO‰M²­å¬ïìškæ YU�¤027Æ�ÞÎõȲc£4ŽrÎÆf>•·lÍÔÈ ÖèäDÛð#móÐx©<»ÀB¡íÌ¢ffЉ1‰í¤Úš»ÁÛ“8Õ¥g¼ûQŸU…= 1®·³¨÷á;»I�äòR4ä>[Õ‚±sS®SrR“Ó7+0h.‰ÑµœûP� �cYKgÀp*ölJ½º�rˆFìUCh‰õhôÙ!XNÅ?Qžj¼±\�éæ"±ä2 -¨Ù"¬Œ, M bm[1Õ·"ËÇn\\[u¸šŒEèO¸QrôN¥ ö•==¤v6‰b�–âêä²ÞˆƒúyJ ãb*Ÿc·éDÍ#;Ç\(�¸Ô€!6é§ÝZĪɸ>¤f¦‡Qñ¯6‡>ß×µÕ{oJŒi]”Q¹±Iÿ‹*XAýe(‘U¼šsu3ZÑ5� átˆkªÃ0 ¾3eÌœ`‚ÚØ|{PúæwL¢Ú¶Ôߦ¥HÂô(G£C“ÉY¯Þ$æ[g»âm -ÌètâaÕyÚ“ƒù>Iní6çÅÙuÝØD3�{½$ƱÙì› l˘S“ÏC×·õꛎ2ø±�vâ:ñˆðSSÛÄÆÚ>”ËdZ¬QÓ†‚›ì�3lÉ›nœ–ªMÙÂÄñ¨ÍÅ6ƒüÛ; ¤Ø���y�­Þ0yã£ÓyNaÊlXÔ7Ê ßú;ºÞd {ã†�xrT«Àm”i4ìHÌ%0Z6šÏ¡eöÀì§'F�«Ñ•XL0Ç¢–ÖâûcÇ‚Nd�ÌëXÐó%È%B4[=45І�ÔoBÍÎ<Úpæ3Bã(¼ ü‰u¹yh�K: -ã9Ø€Ée†˜>Yì(,}§&4oaHSO5W­ê)ÄÑ´ôq0SoôBº¡ó­Ý¬ª ¤vo]�Ä'ñXF›˜ÙÌN•0;Щ(›–Ë`®Ì.iÄ —Æ›ôônä¡×§{¨NFîRÐè�…¡ ˆ5Û[Ð8›z11qŠ€]²ØÀÄÄé9cgø(šhY®67bG‹7/¼Ep@Mè�&[)9€¥ä¼E^Çjs#Ú:.ÝË"À³ ¿QrÖÖY+NûŽÌ‰””Ü ²l¼t×1‰¾¶lW' å)”ͳ¨ê7F#*|"±z¥dSP�,‘©AôÖ9 ¸-ÛÕ"E56O å±è€…h˜C#ÄÑBñ]iÄÜ\y¸�åL(Å·óЖWŠØ‰Ø ÖDÊÍœ‚ê³±cÚc\l{•}tºâ™—ū좿UˆrÁ õG_²{SÌ‹¹¯@Uo”Çh�FUÛ€r’“•¬‡QÈ–±�Ø{íWв+ò轆Öì¬ÕÙÆ¡YX—Z»áš. Ž G<ëêñ¯êI: *%ú,â…KM„/ÛÕ²~°ñJlQ)”Q7X}¥ä�}#‹ .¨# Ìr†nlW?ˆ29£>Ðü•J,\Þ 2ÏH¢éÌ­ÉZ/Bìs‹ uf“ �¡©ÇzàcÍãa -ä²ãֳ葛Dsx£œÏQUt\Ê­V2®GlS»Ö_agÖns¬fU"@ ¦Ö©f¹ì€MZ˜DY ñFÉ!7ÓµvíX‰Á\�]/ ÑC×T³>PJÕ›Òl’©ÑÍ7Á#÷­³>¨rÙ nT[U…ÙHË!pl±ÃuÙ~PIÈlí#ÇÒD)B BÄ=^B,¥UmÍRDýÌPY•Õ!ÄlÏŠê·©ÖµÒ"INn½Q²ï-ÄÛ£L�];¶ê^”Ø…AuWº¢Î´�®™b¬KÍóœXÛÔõG^ëjç˜Óø'Êÿ' #1P©�*% ‹,^>ÛØ¤°@­šÉÇ nŒ¬Þ9$€JÌÄÞí½yhPÀ5XøtôcÈk˜ŽM‰z>#‰Ôçã�=ÐY@ŽuÎ*�9¿7Fî]˜��h -kãÊ1­Ä3k ´Ôl#q°g{•0‹œµµyçšNÖOì\¦�æ]“}æÐé@ãá¶H¾¹µ:5Hû¶ß¦mÎ>?öË5¸¯º´~uºš /çt]o’ÀÌÔÄ5Å€NC[Í!šÔ(½6�'ªA òXö`ìZjð†C­kq”G!Øô„ÞÀC -ÃÛç,hé×®)I †Ñ+«Ž—7nŒ¾=ꃽ„¥JrëÕlʨ¨: Qã(]¸QrP(E%kl•-ŠQÛxA”‹ê@4 ÀÀË$Uý£9¦Dõ£)sn쀩½^Z­pÓÈ]2²0ˆÊìIÊž(1 Ö@HzèñÙÞY|­l5«nœ—ÒãAÄï0¾¿Þ/G¨+ >> U�kÜeU{”WÓh3BIIÃÛ?8áU­¹Úü9ôã?^SBFr±ÓºÝ�’ÍþÌR]l¥äì…� Î ÇàC�œäæ‚çÕ*¢_«x¶ù[P€6H -ˆ ¹kÄ®·“³3̯Îì´Wô¨¯”Üwvøù^¸…¥¬¼>’5+4H‹æwC‘YEìá^Q‘øÀkx/�ý*Í„v ÐJÙº˜zeŽ�$• O6ÛLª55~ÏÅíý”Y5Œ‡Êr�¨r©í7¼/·\‚h›žu]wV÷³Vß`‡u¾4n— 'ªêÔ£§S«—‘Ș£|.77ÂdÆP o FÌÅžŒ½¹7ú=—ÄZZ)™ÉZºÄÃÂ�Ùòð@¶�%m·ÂØnÐÈr/ l%*¶! LD˜�²2£3Ò €Æw ,¬”l!€^!údLN&e¼î†P,âÇ»DÙÆR‰ÅÀ;Ìq}ï[«Î–2(· ÉM®dQ`o÷ŘN!š U³½¬˜ÊPD+–‘å(…hq'¸Â8š:¡YN25a2ˆ°ˆu²¸ã„˜rÒÞ–Æ -¡!á+½ƒQ¼!ZxIg‰Vy×7ŸV×w£âCQ[U§Pý.ÚWRi ˜'DÝw¬Š ŒlŠDïšG"Ù‰ Ã�pºÃú^Ý%Š4ÔµR!áš"\£ùlQÿ¯4�â;›Õ®ùç“lA%*È:5E�Í‚cN¸›¡·g³I”®IÊÔbšýˆK˜µ*K&=a’°Fì>aò‹Ø¸¹h¶Z¬”Õ×Id1!’�†Ï¼mÎ8»EÝ�EÑ›ì"“ -‘ÅLd¢¨h9Ø�j%d��7»!’b³°UÕïÑ7 Ul®¢M~!÷M Oê‚Ëb°ŸIO87T-a‰¯ÔÊ_^î§Z)Ùk˜žNg®�ª$Z˜QCoöè5ê`¾&ë˜!¸‚áYÐhoÎå  $wÁ¢—(r-4³Ñ‚eµM58ô®âæQjQJ7:�¢†zºÌÖ�Í.-;@ЬKmb½®LDµ±It*�Ö@qMA¼M–”í!Ñ6­Y T ã²:›Ñ€}«ï쨪«ÝX£Œç+À)9çdû«9å’ÊMØoö~T/€ÞÂÕVPÕ|Ýõ�3Ó. rš¨Îý�—šc‹bÈ= z�fIƒÚb¯R¼ê"ã­‹B -ÎV<é9Áê[¦ŸPx¶×5ÊîiØÍùG=@ˆYE"Æ•mc ¾$ÞÖ¦4=¨’8È…³Í S¨[¢5ËàèÊȽy{E†±à©õ+©'yŽÎˆ¥kì·” Œšˆ^Šj 'e/D�Û“Á‚®¼™ÓÛ³*jð&ÑœŽ±•¢rZ«øèû½9ì K‹kÇ`ÅÚ¢!ýâxÔ¢h}C§3/Ÿy‡ª£�Š€5k hâM§�WpZ«YIC‚‰ÞÛë�‹vüdƒL#‹¶7].¨1ŽÊ½ÙTAÊ! -…uZx½ZÖH^d/ÞOf˜e†Ûþ?à �©ØgóYÔ“ÞLHÕC¼WsÌE3°x#ÔÉÛŒJó$¥æ2J¼ÄÌxKUç”/1ÍÅÞÙ0fú&NÍk�½-‹�Ÿ)‹_Nz:ÈQ™ !óÄ0šWC7…åû£›iÍ,ÙßÌN=æ4*f£­…;”:{6¹Øž ¦íEuKáÉÐgÛ„­�$© 2¬l¡?T”VÕ(6Í&Ñ1™á�}̲Jt¬]¯Þ¦dÎìT»84á�•;³Ñ©ÈÛ±…„’(ø)bõ -Õ[Phpv"›.H—ÁˆÙÔ¥Jöñ�êB&±´mEä üaò3 f”%ßPQŠ6 Ñ…¨ºFVÐ(*¨7ß K®3^¼¥22Ó…H x¥ÏŽõN±ä›¡µö…8JãÔ›v† žÛþ$|Pˆ1›Ö;(²'ù†ßNʶÞZö^nð:´Úìû¨.i€WˆÞÅÖ@HNÉ£æ�\S®Få¥=UÆ%IkQ¢…à„ì[»–Ò—yÞ[³È·CM¹Î5×ol0\ú¼iWÍ´Å]ÑDz¿)ê�ö�Ôþ1™æÝ; ~ ÙÜ\N*ÎPRWc8éÔ"N¼»È/Ø«kÛyªmàê Ý80Þ%d‰rvÕÁA#ãâMÄmÛ5¤*eÓó“y¯Ksmæ6[qt³d9H¬�Ô›P74#Zõæ®/½@¼bi^P”¬lq¥ÒRñÆÌØ7ŒX÷ºC² ml¸›Ø ²J¶®žá‘ ÚvT·Zmsò¤�äÍtÄ‚#·SuH�5ÆÓºïÇœ7ų íc¡7�)*ÓF5¶ïXmVÈÈ*W-Ùâ#Ž‚b�I‹òH]ÖnBb ÄÖÏM%vMŸ6þÂq1ê&æ!‰¹¹¢a�¢ÖÞ ‚�)ö¾ÙuAR), -âÞIJybj1Î`ù£›‚ GØ®ú~¯ - -¢¨B§Ho1K׌‡Î¬/mn{ÙGÑóˆTÅÄ‚Û(Hœ›Õ¬J†,Mé¦4bÎÅŽ[MuEìX¹X.A·÷-; ¶¤.<�†4¶F�‰-zv­�¤€˜Ø<qÔXcËá�#¤0о& ¸æ - âM×ÎjîëhÓa¬½#tµ)胮¶&3FÞÍÒKº ¡/v0oPìp�§A–Œ‡]K.*[ÝXr&ŠPÉI;˨²H ‡:ôEº Íä¦a%Vã´„ð¢AÂabB›é…ë8{Ã’Å®¡‡eR¸}¬“:�&º¡[¹·¸´œ¶Q  Æ®ldjšÁàJ¦Ì…æËFí-õ¶qÁÚܺÎ>g ¯�X!m i@‡÷RÁ¯cQ©˜ ®bj/"`]gP!ͨ–mÙѹ�f;S8X”~¥dÓ‚\(Ä®…p'183‰Ònív -ñ n²eHLÜÑb6@ÄycšŒ �,—.-7 ¿o;‡5¹’ñG•žñbßÛ“æK@AôÁT@ý.�4Àdà¥Ú¦â%3jÕªlJÞ`x:xã,wePEµ¯Õ÷"'Cl1 �MΆ(e£¤I“uâd¸:BôÔúÖ€ùN\‹wcr4£/"}Cš¤Éô-ŸS-BZg LRÐ5»…¶4y�u Jk w–f_r[›…ÎûNÞ>. æ:c\c7fÅö€º, ©ø#×9C$ûÆù]nY£¾í‘EhÜž5H.Ùr�—�¸˜•8¦–žßè[ft.í[-á^ÕQŽ Ûû1O¦ %&Þ)ÄÒ^ Dq±:�áŒbj«ØOR³[VE�ÒÚV#£kÁë2&ZÇ6z�É-w¨ogZm�ƒ2XNqÏÖ€%¾{q|¯Œ <Ä*Ù½eð5À~™¤¼ŒØßPZð@°› ¶´óNÒS„Ç"&‡Æ÷�ÜþÒŽ§`(‚^Ó7 ÄKë˜Z}¼Ñ8©Øn’8á[9�³¡¾¹ì+=Ïs;øœ¡¥|ó9Ž«öf¼VjYÐÞ;{¶t¶!BÝ+´´Û`¢5ââ–Îæ¡f(P« ÕI�[´ºÐYËß“rBV% £ª¨€g$µ»¦-w-ñ;ãÖ>!š®Ô‰ -mê6Ý<*,†Bza„¥4³Ç¼âÀ»³o†.ÙJXZ o>·ôn¦˜‰e¹V¥ÙW Cñ?5&»†òu¢mšÝfVªk!s؈mƒwfÏ†ÎØyLJLa×QM,WC "„æÌRï[^$kà›©?ÖP©¸¡1X5œb×µÃ)º2ºF\4à_t’b05¨“5ߊÁô|ÔÒƒªÑü–YAÑg ¶¼ ->Ù|3ý˜Êê­³æ›q£+p XŸÍ-+Ù|Cfͺfu‚Ú÷›f+7ËØÊt� µM(Àò˜n×RÊß o.ƒ±ŒÅ6Ò˜læ$ -«Ä†xe‰9Ã̽ŽW/kœƒ¢˜“ª�*ƒÍ¥Íg[*x¯¯�ÐB«“€»¤²åà ¥ùp�…g é–VŸb³PýèJÍ’q“T°DÈj5©�K¹Õ_âyù�å'¤\¬�<©¶b©¼p“¶ìB‹Äñ“dn†¡1w†µj‰�³gsWZ¹€h^bsÞÒ ­�¡•Ca°ÁÜ×±©«Uéɽ·aø"–.È?¶LÑÞM2¸: óö�ä�…iI>\`ÞÒ²iÉži}ÛÚ endstream endobj 75 0 obj <>stream -}7´f Ý Úè ý“ZŽœå@öa’¦9�ò¬�tpÉY³¡ÖB³·z½ÈH·\6øÕhÅù`þQ\ Œ‘-·Sî¨ly$Á°O¥·'i>XYet'º‘6ÐŽ/“yõIÃõÉÆ²�«Q=„¼´¼mÚÐPaV/¢S -queg†K I“$K¿èGÌ ù‡×�"N ¶>O²Ç‹Æz\–>$ã�860Œ'‡fš÷½^&v{oèÍñ´/ÅÔ•¾Lì¢ÒMò`ŒH‡¬7$Ç”‰¾a) =®Ë6wSç%k×[·²u¹­C‹KŒ)(ÅMÊxur‚ØJ/õ-†^üÄÏQZŠ.È-'�q_#—bz§¥kò2Nc°!Ê&+¡azüiKg®Ô12®<ÙÌq�i‚–ZB|±Ð n­îçup›mËP²ù.i’¯:º æ‘íZ¥Oäk9;,,ŠKÜ[mB·áγvÔ—&êxš–}ríÙf§Øf*@ÞÇé¹, Œ©.ÞRÊ «œë¶ñŠQAÕ3oþE¦ôò}z¹ì´ˆj?¢›·JYÅ”`û[±Ž`­&�sÁÁY«ƒºD�¾'†v{0�OAM”,æ¨f•‰ö~²#„ÕTVJ.Ýxâ)p¼n#°š¡\%“É#n„�–V[Am`ÄŸšý”Ôg³Ÿxá¯4�'•VÇ4ÛIò�—Ò^F޹}ηœ‚Ôª)šX\g -WüÌšõÆ¡V3WcÙé®Èd�Û34‚åõÒp®£ƒ>�þÉ®Xž„…Šïг÷M“`ñöÔF5ô-ß.XµYÜÞêÔˆ§¤lHÂNA"•ØÛÊ�3l&v¸�¸®Ò4kÏ*$áÉ&�h±·:óD²kàM™­À‘xc\ÝZuÝØ@i%mè·X)ÙÀa^Ò)�<¸¡™KèZ5ˆë~Ëæ£†ö¹¡E{¹.ŽäÙèÌ™ i!•8‚¼–Þ ±Ä®�m⸬äÑà¥i -ñ -1Je~!*.•䪂˜ù>i�·*;Ìè"¯Ê8ʱ½oX<–Àࣩ� 0 “S"ï&’‰U›YžMcA�€<5σäóUblu~,bOr=¨íc<†åÙ¡kGvŠJìKãLy¹oèàc¡=sÿâÐ`ÁNÊ;Êû�‘欔œ=û¦åÊ…6òdo¯å€˜?9Öb b}’Ú·íɹRbSÔîÑI=é@Ý*Ú¬›xž6BâhTHu6y²šñŠº¬äÐ -8­2\‰IŽMÈ^Ó,{$¢M «I}Sß!ÌÚ³¥mZIw~s¢g?Q$#ÏF³Š�n]Û&¹Ž¼¬Ü“mjø´Lã ñy–�aÖ<m(-Ê ÏöÉ"d¾n�O;-ì¤ûCžõ-&9èöQz#ä€ý-®ò©{jº«¥9ˆÆ© }0@‹:IöÎÐl.Ä¢ÏZf~R ‰cÆL쥜†4Ð2hK -±öØ>ÆêB@Q4�P’Â8Ò@–sK>–u™<íYå„Ôät’2¿ä9‹ä#Z}cEcE©¬”œBƒT2³�Ä1Ï€nå娠sêì#¹ó÷—t�JŒ­àbÒ{j¤ Å £5`É•I®ê”ý4*` ÍbIj­·M:XgÛÌŽv¤ª•B Î ‰tX¾å*ôðù®”Ü Öì² •â ™;�0ÄyŒg$ $DX–ÃÎd•Å/‘ß“²>kκ,†ß�nÂ.)™Ð:“¬6ã¬ó¨"´o{¸§Ì°lÝ$h¥RØÎ+K¸¤h·úSŒÐ¶#¤Mn0¶író-òº^å0žXƒ2-W!–Ú™õd´,W²¢XB�– Å»}WJѹ q‘vàÇæ­IrŒX»Ve5ÉA¢'þÐ0«ÞÙ‰o–é®) vb$½“‹ÄÜ:+Ö8‰]K¬` JðMCJ¢|®”œU?€iß«Îb¾!½Zˆ®D|«PzzƒkZeÜ/\ ñž–ƒ· ¤LÞwÍ9›57…ê•E{¦HOuaùh.(hÁpà wI£cú›äı‹6¡S&¿ñ¬„@'9ÓmëG)\¤=P‰6ÅT¢ƒ¡“äº5 þiÑ_\‡Üp–Œ`5Õ7¦3©{˜Dc 9†Eõ –214ŠdøÉîr½~+µFyã˜]cA– -4Ce(m²´Î4Œ -gÄ^!W¸’>YÍÐ[9§¡´:EIœÍÔÈ6]wåö6±jÜ"9§ܲ¹¢™lÈŬéù¼¸Þ°ûEkîoJôr×�µ h«��áŠJ`6TjCÑ\´cÕ2ùÑÿñæ±­¶V0ä= Ý[Š7p±•ÒÆ&uÌï%")OÂø¾h#hI?NMHfÓdY(Ä 8GS<7ïdÖJÉÕŸ¦¦ˆ%]ZNAãÃÔŠK§Iø†"ß -�0'm¥ä”ìËšZ2¤v+ éB‹íHÊ“‚†’: ÍÂ-¨ÏZ¨CÄ¡<è“Æ„$ÊûQ2udqõâû­ -”!…|ÊQ‰±7ç?M¥(ñâ3- Üꥳ´Rl9òæXÆ*Ÿ¹U¢¡?®hV§gÃÑyâ«¢3>Z!Å® �±Œ&AP—7Ùß7ü½Åédmç{ÜDb©@Z±��3Sð´®~qQ’®-BΖ¡ku¾`¥ŒÂ·§%\Ó#4´Ç¢¿Ø6Yña„)˜¤ÊzǬ4âÇIoöüXÉð gn¬¦“*ôW -¤(OÝèšrÉ6”%€ÁaÖÀÌXªD‹¤¥IaÈ2–²ÑÐpÙYÚ�9càl3EsÊ”¡Í�ã/Ì\pë‘¥%{kÑÊRb š¿p˜hÚ–ËOôI+ÀVÚ÷‹êÎÓÄtŒJQIY.„b×xÖb±鸩mã—Ò£@fû˜a’rþa\«½Ð¹Ñåéû¦ñ4f)Í -Ót}vÌîP”|¦©í°ÑÇ[$—M¦Fqî¥4|¶H1_liZ}‹Ü�Z,½£SÎ1›8°*�è•¥Ùè ÎÉ–ÐjÑ—¾!.ÆÍ\FÃŒÇNT¢9xá1|\É­œlß²ÐËâÓ§ µZ•§†8±éóv£N#¿¹ù%á"‹CídËšìôšhUÆëb²TM<¡ï>)1‹6׿kST-¢`xÈZð ·º –~P¼\]©zÈ0Æ/Zººe‡¢Ñ&2B.FŒ� Sã®e {§‘’1‡NV!ÚA™YfHÞFd M–Uƒ¿¥oE#Î*˜  /~– ÙRæyZÝ(9ŒœZ¡‰ìí´0­¡Oí”D-Û"l©í°Øµ*q¬mc‰ü‹XI¾Ô X‘L~£Ô¢™„8]5%xš‡Á;˜5Ünjb«¡4ôª»Y†%ÍMÓ·<ßù÷­Z@ðs¢Ûö¦‘Í™ôž¡ `^‹¬+±AÃÂC+n Z‚yâZµÝÅ÷ÏìÖZÁ± öAÙ»1jX$‰d -v�Mivè(ά�Á‚bVäàPo׎XNÐ¥ Ò1©S Щ‘¯R–Zĵ•™ž�`¬0HÒ·ÝR“&„yŒ#pŸ"Ì*[Óz±±í¢Ù3¹ÊUç(‰.5c¼äVöÒ|êc²‰–"Èlú“·åø˜0µ8:‰-ï>¶Ò ³LªH¶Ò/ÁJ2‘jg9¡wJLVKD<ÓoØMѳð|Ñ/¹-ö¦b“›z¥¤�ÅåÌ>ÈmçDœ[¦[o€8´|@eÙ·äœÅ–�¨eñÑ@1ߥŋ—=°MÍde/·«yBš€æ‰û·Ìƒ¾´Ð·ª· úÞ�´Vî~†$²Ä¦á,Aïá ir•”ݲè×X.ßœ•A¬œV.߸C.;&1´Ì’Ü»w t–˜Ûõu { ÇÒÁÒ -ÛǾäÐ*s¾•ª -ßqÙ±qŠ}»Ó’š¾M±ù�½˜yB´ôz/¥N$]#[djD¹„8ÁæE»7#Nâ™I)#”rýí`7¨X^“HXÊ%#Îúo‹ ãî%àb…�-{È7� -2QHîGI[F'Ï·®ÅР±e¢TÂZµšx‹Œ•ýJCÛúÔêúY•תׂ8z¿ËòYÁ‘îtLÌê[�N|h*¶ÛíÉRÃfŸ9Á -»ÙÆ .Y tbbl³�µÊS»VnÙÈj,Ù¸Ý÷vÕ¡ô|Ö„WKn²SAu•èZ^¦&²B¦mº<δ�¾uϰÓìƒ%¿)ÈzÙ¯³±ÎçzÃÖáè,fê£%Xù–«îC±l.?Þß‘òØ1sH…†kG£Ñ¶¬3Q°adM*¶ö”x¶PÇ·ŠìL³Èon— .±ãÀµbuZ™þFÉf5±-‡Ã¼¹¡%ˆ#³%ÀZÚ²=:«v‘ê Ÿ¬ä|Ôg‘˜>ËpÇÆŽY9à®™rZ²âFÉ®•À± êeQnU¢%õÇIºØµ2šˆ¼Úü¹qæ,y[+ ÙÌ…æÃ4D/7J­Þ[‹ª¨êaSZQ”V�x,›rÙƒ³vƃe¾ò´3¾[ÔÒ<) k…ä¶›e¶lÄjPØ¥V1ZIÜÄò=æÆÓ2Æ -afÍ#+!�N,+„&ʾoåÕs°‚½žAÈTpf¤v;/úå[=8תcðbQ6ú–+1ÁX~Ö² -¶ÐŒ·Ì�ØTÄVx$Hæ…G$yhªX’£E‰­gòo×K X�¹„L½QòàìV�aŒŽ�WyŒQ«e+iÛwbÔ„4¸1r»²�?YŒ¼¡óx³ø~«:vÔл/­ÖÐÛò[V|<¶(ghWr‚¬IXY²4VFnË¢’ÈÓ`ÞNâ(„˜4R”¥jñÙæÏ�”bÎàÜL7�»ÜשÝw`uS²ÆZmnC/¾•í%ëæFÉ»ì%MJˆæC`HcP¢¹[úÔxs–VÛ|íËœÍnºÿÀ;ïI=®äc÷+\x�Ëì¿çMóo¸öÞu³{ï{* é…ôênvÜ€ÈÓGN锼Z'Ç^nÇYM›ØH¸­ßüü·ªÅ*npß½àÅ^ªìÜQû ¸ö¾Äx -ÃŽÕž©Vñÿ¬Cù¯J«GÊ÷Çñø�ø®¤ ßC�•"·óÖC™äqJ^}Q'¨NYÚãk©å�øÀ>¼ -p`ŸB@�\L]eòÚlÉïu:˜IR[‡¬DùèÀ2:yB¾æG»ã?¿ÿgÏë¨= k•J$ÁÄ–�àFòÚâ¡ÊŽ K"ûz±¾Ð)HI×õV�uê¬ë�¥ìøgÏF¹˜n½Õ‘¸Öƒ)¹õvlum\³9¸XÛe¯¹&Pd@Ó‰".¬j‘k çN>xׄËô÷Çÿœ %S�Dc^oA¸mÇÏ}g[ÀXëUÏBên½ë%ÊÍ‘ã0ÏŽ„̳sœ”©Øø�Ù??Z“2™ú‰¼–Éï$æN2KÚ‚\>*:á:ÑJ b)�X5�jx—¤ÿ4Ó®µÝ ô y¯‹�H,Ÿ¥ -,DN¯|,‹ÞnØÝ…áøÅ��”�òlHˆuä!® G:J|φ„Tì–Ù�²�†&C‚¯Úȼz|mPj´ÖµìïÖûñÍšBñË?ÝÝþåþêöáêöë“!S�˜þáèOßâ/®“?}ñ÷ßÿîêº6sôëöãñýú\ýéîÅ%~üìêâáêîöüþ‡·ýá7Ç¿ü÷ÍõmýÓIíÖýÕW¯._ýêøýú“ûûóÙß\]¿¸¿¼Åßýñ¯ÿpû0þ ÿzøáÛKüí—®ë~ñ«ã_ÿíöꢒ¿¨íÞ~½þèwçׯåÙï¯^<|óö‡¡9áÙÚ}ú<å}syõõ7[Éô1m?¢¶ÌOzÿÞzÿþã¸ûê¿./>½{}û¢víÓ»wôvÖKîÿúèë­¸öΣõ“?|ùÉõ·ßœé¶ãÕ‹úä;Æ„gþÇ=~*bòáõýW¯¯/o/.·�yuË%¶ï<ò¨ü¶ƒ¹}}ó狇óï.·çÚé+�/gN»´íؾ:uù»ûËÿ÷º®îöÒsöÖ£�ðö«‡‹wÇã(_ñé¿^]ï°„kï<ú±å¶Ýýå«××ÛŸãöø6è ]woéúfé79.ÿº¥8ûü–éäu¹ºÝvUî¾½¼?¸»ßz]Æž4·]ݾCpN:<ûè£ùâîõýÅåïïÏ¿ýæêbûaí0ª�¸yÎîn¾½{uõ°ÃÞù)úA­lÛ.üú³Ë—Ç¿9˜€OoDð©Žã`>50þœMÀ—÷çÕž¹þÓÝÕ«gen½¨ûgní²8Ø€p÷®lÀƒ x°6às°ã³³wѾ؀'þ¹X�»ŒäiÛ�Õ8úôò»Ëë/¾9q÷ýÏ;J&GmÅŸìÀyªÖÑ«‡Ÿ]~wuŽí ]O_zôÁ}uýú§×þª×¿?ýêÕÕùí§ïãST°·f»ÛKÇCýè¼·5.ãÕëû—ç—_\œï2ªµ—BâÆòêÛË‹?¿~Çú$ÄcÛ…[ó_ÿëëóû³»ÛWç·ÛmùâG€î:ÊßþûÛ»ÛË÷åøâ>Y*Õþ¬ÿÛv’þ{ëYùï�aK»]ÆòÄýi‡¡ìèøHªÈ_î®nV»8˜~_ååºcWªcìŸvô<Ãïå5yêчµ‡ƒ2ôQÍ¥÷§<™°õiñ¯w¸"&ë�GŸ®bú¯°ý@ÂGÈö+òŽ!OâžôŠl/�ÿõ1„ñùýÕÃ77—ÛÇ�÷éüÜù¨yêgçãDîݳõð—ó«w˜‡#t»x*§ïîžä}A˜üñòþëKÌäþ©D»nµg¼$?]?À£GÇràÑ�vÓSw0n=�§�;úy埜ÝÝ]zyùß[GCŸ#¾Ê�n�±þâêõö l�?úÚ¾¸º>ß>ĽOfé3Ãm=�} o¿2/¶_™-…ÊO£šÞÝûÍÝõÝ×[ŸÂOÇl9H·=’nÏF¦ýôùeOu@™ö†Ó³Á¿>› ¿uXgovünI'{°å÷¾û\kìÀaO|÷o ?Þ¿j[kχjoãÇ­vðÕööϾœL[�h_N¦}®ÚðÜÐdëì–sñ±’-¶g®'ùx>ìW[sÙÞ±­G´³{ì@ÊÖ1¼³oÎoo/¯¿¸¼¾¼ØÅ#µ|ñÑùùÖñ½÷äòÅ�v}võêÛëó‹Ë›ËÛ‡?ž»gÒÍymjëØå>ØJݱýÿxñ£[ûqÛQó§í•X{ü) ʧ~ˆmí¶Û›Cl·Ú�{ ‰Ÿ!Cú�[ˆ�§(övXŽ'¾U¶Ï§ÝÇ)[»‹öFl=¢Ÿ@<•Ý÷r'$ÑË«ëë]�R×aYoïn·ÏùÅÅë›×ïLOF5}åÑÇvIwëá½xqõpõ݃k/|„¤ˆÛËó­¡óç×¼Ûþz)¸gz÷û”ç9È·­ä[þ9Ë·­�oùv�o{%ß~{_ õíY‰·K¬éAº¤ÛAºQº”·ƒt;H·ƒt{nÒm6úr·àø3r[þG‰àîU”ð°‰vØDýÏym=øÃ&:l¢i -twœ¶ʰ?ß 8yãÑU²Ÿ×ÕN¹ú÷åõ_®Ïør·|Ìg&ï/oîÞU´d¿jÒ\ݾ¸|yuûÎ+Q§X°o/Ï>Û¡LÆä���Ww¨¹³‡5w^}‹ª;ÛŽlŸjîlyÊí{Á·}5—CÅ�CÅ�‰éŽÝo|wìRýww\ÿùMý¹þ÷7õÇ?y>ÊG1[v.dóTT©gxóâãZÉ� Þáúø}IØeL?Ó„�G7G᛽Iëßiû’h8³1îŸ\ØÚ‰ø¯wÄ{&ë�GŸnBá¿Þ�=š$| Ûaë�¼cÈÓ�¸'½"ÛËã} q|~õðÍÍåÃöGÌþ�¡;Ú Oý}ŸSgŸNÒŸ¾å38J÷'üñ^K»70¤Câ!þ|ˆ?¿e O"þ¼[ÍÅCüù>ÄŸñç]‡ö|ï|9ÄŸñç¹x<ÄŸDuhßýf'Õós~º>¤§ím9Äœ1çCÌùqÂ3_ìT>~í�§ÛxqõòåëW—gw·U¸Ý~-Þ{ô!þpy}}÷ý¶ã¼¾úú›‡ú÷“ ÔWÝz˜ó×_³ØZÌ¿¾Ym²Ý˜tý¥§-Ÿøy¬â¹�Z;ë_K|pÁ\pÜÁ÷A#Û^ Ù{?ÜáæåƒîãØ¿ùúþòòö7U»¼üM=㮾¾ûÍwWw×—¿¹¿|ñ›»ûóÛwÅٺǮH´µÇôòºþ²“/kòÆãKÁ²õÀÎÿûêæõÃ;î�œ -x{þ£y>»¢í¿Â©ö‘±3Ÿ‰™²Òvÿ6@•LÏݕᾌ=ñe¼úöò¢6÷�‘ñèáá­™P'ag×èòŧ¼Õ´³¿ý÷·ÕZ~�QŽ/œ9gÎÁ™spæ¬ íàÌ™­ÝÁ™spæœ9[žhp݈3G=;ôéœ9OÛ–=8s>Ä™ó1ޱç†KzBž©/ÔNÚ_×Ôs.ÍñÌÒŠßÃqsðE=«œâ'[ ≗çØ~ O¼<ÇöU-žxyŽíWäPžã#ž£»Ÿüú8W®<º–ÿð—ó«w¹÷Gèá=T¸:T¸:¡OÝÄyúÇè®'ξœ ‡ÊVϪ²ÕÎËz¨jõýø¸}x6U­~^¥Ÿ¾øæüÅÝ÷?ï{‡žaá‚­ëx -<-a¿“ý·¾ôÅ;¤ê¿òï�ÀbÛdëkuùè“Þ+O]¨Ý½|ùêò;ãþòÅNâzߤÀŸ9ÒŸ•�ðþ‹ûŒ�…§²8Ïû†ôƒ÷ìŒ8»_l˧ß_½ØD¦O?¾›9l?¢o.wÁdµÇ}L'.m=¦íõ¬�¡fí2’íUß�¡ùþ,Ý?ë²×ÏÐý‘î�ý4|öÛýQž‹ûcû�Ü{`!ï›8¸?î�§$×î�ƒûc¯Ü?3#îá|ÐÚs4á^ÞŸ_<œ_ÿéîj{�¸¼¼åÛ—y\?bèɖĹ}}ó纘ßí�C=}åñ�¼§[×ÁùêüÕåïî/ÿßëËÛ‹í ‡Ù[�>ÀÛ»/®.Þá"žúðô_¯®wXÁµw›míÿÚ— -TÛ�èPLûPéPéPéPi£ÿlû{ßË/ª/ípª¬êK§[ßÈõp·½qs÷´Õæ—÷w7ÛŸÌ|x_ª)ý$ž¤¿¾¾ÿêõu•X{èj<Ô�Ù›ä»lŒ=q¿GvÚÁ ûV§Ï³C¡í0¢}A¡m?¢§�AÛ~ÚÓ ^ŒÊÊ—ï¨Øð¼C[*mûÀØH³^ÿîàö¿Ûo·?¶Üs…lÀƒ øÄ¶ÐÁ -Ü©+ð`>¦Bs°VàS°·V«Ÿ£ø\�l[דØ?;pë¡ÌÀƒ¸{×fàÁ <˜�3pÿÍÀôìÌÀF´/fà‰{.†à.#9˜‚OÇüßww/¾¾?ßþôŽvà³¼bkKéP•âid‘ìT=`OníÛï -‡£oÈ¡ÂÆ*�_a㣌ð¹É´­^Èc{»¯«®'W›ÿçW×çÿúͱ�î¾=¿¸zøá?wð®¾zøáz{7¸>ýø˜é]®qß—MµÓ öeOýŒ¸[êy:M?¤:ÐS÷�î¶{ÄGv¯X1óì9м=¾ßpÇ ³¾¸8ßAYX{çñ½Ì[[JrIêÙÝ-ï¥ßÞlš¿÷èCüþ›*\ë÷'[ÎÉ(ç¯=ú ·Æµ¼z}ÿòüâr7]é`ÀXv¼lx_®]ïP~¾uaòÖµ¨.¯ë/;y¡'o<þI¶–1çÿ}uóz‡k{þÑE¹ý1«ý$ªÖgW�£»:�Ÿüú,�Õ×W9¿z—z8BGècœO¼uˆcÿûnN͵w>^!°×·ŸïŸPyvÌvÚwÇ?vûý�Ý>>»¹Ÿ‹pûô#Uh!ú¯÷ç·¯^nÛÅÓáþçé9yÏ\‰§î4yít4nY®'¢s<'ë D4Þ'××O`ižÊ”¼Ï` ïÑ��Û‡÷¹ÂêŸüÁu_þööE»Ê -¤Ê—º»ýKm‚õ˜N„üéå×W·Ó?ýé[¶åO_üpóÕÝõÑ/ë’ß}~uÔRÿùÇ÷G¯ëØ>ùöhëüã‡úËÿ¬?üW%}�ÿxüþowü�~äÒqê|ãñÍÑÉä·;ɧ¥÷)×_¿�OÞâóøæçõŸß×ãq'tµÕtZ:߇‘t}ÔŸzïsž’¾¨¯þ¹þóõ‘ëŽÿX_оŸ¾tsN}È!Ÿ„ÓØ§4Ô—ÂiHC( ¥Ô»PIC}*‚äê7êó•äê�¥þñ¤;­Mâ�®¾XI |ôÇ.�†>�Ÿ»8²gºÓÔ÷9ôÇÖŒ;­Ã)áØ¾äjwJòõëN8-ÎwŽ”>‡Ó>u]^ ìúèåÑߎ~ñeݾkRê_vÇ¿þôîîúø—uáÃ_ên¿¼¿ýí-íß¿¾z!»þ_šPš>ôïoïîþª ý‹/ûÓtì}ý—«£©�IäŒ_~y~-À™úÌZÃ×WR?«òÞïï¯^ü¯Ë¤©´üÚç•#_=ÜÓ#<~³òü—GÃñ/uü�ÿ=aa܃÷yÿUÕ%×x[¶?©³1”ʧ>œvƒ+•½ðSÉC£¬å¤þàbáž°÷6ÑÆ7oÙ•ÊΧ�B%�óú˜}ý!;Ÿ.ÀéàSå‰Êƒ½ý�r©,û�sl¾ÓÊÐö\ꆾÇöôÝ©O}åíþ4û4Ô|åÉØyyÊÕfÿɧrÈýñIeµ¡ïên8Í}©?ÄÓ¾+•1O\©¦+ t¥/ÃñYýb®,™°—†œJm; ‹=(•ÿÑNeõä<a)ñ­:x—ÑP]rñ4†Ú|¾TF_Žä¬r|›[wêúÜg,@wZ÷C)÷¡n0××]ƒ_û¡îö¿Õöu�¹Â�9´"”й>0¸ËÑq{Õiõcµ‡YIuX]À^ÏÙ»cÌæ§~‡ÿõX-y¥N·Ž·ëj×}¬Â$f|§Ë)†ãE÷1&¬v© ‘1ÔAœ¤*\|”ÕŽ®>KšKËcpU°ÔåîO»è:°GÂr@ÜURŠ|,]ýdý]‡Ñaˆ�¿]Ðöi*o¹Ú‡žCÄ·Ò0TʪR"GRßr=äN_¥qI»‘BýR9uÃàñR›)œ ÚÃPb]±*?rŒOìsÊh%t¡§pìš;[a¥Sò~‹�VNêªôÎuF*Óu0 Õy«?xÌ>³ò`íh]ý¡þ¥œÇX*Óä®ËdÇXêtUþì|GþôÉŒåeÞøZ¨Ü\¹(¦À�=*g;ÏŸ–#Æ[y/z7È38hê—†¾>[ u-ú)§µ+u5êVˆ]ï—¹6‚mR™Ò¹zTÔ³§Î+lóÎñpêux]W»Qw· -&8‚ýêäÔù'¥ŽÁc*x*a{œ–õ†õu±;µUÖ‰ƒ«O–˜dŸ÷]å„¿c�uåI¡®$OÎŒaUBW…P8‹AéÂû›­.|Bæ^(.Õ•�…¯»Á“Áï°)B)¾îˆ>L~Ý*ž‚‹éMm¯Ô' Õj·Kä&«\+#¬Ë¾P9¬"æ l‰i™`21$§­‡\¼ ÓV¼²S¨Áâ ’õñ µ˜ž‹£�“¸œèÙrÔ÷êÉ�$à¹èzªíÔÀ¡.�‹q*ø2�!5Î0uɦ®Ï*>HÜEœ»Ê»$U‰9¤IfSþ�Ì\»#› -Òº.>–° -2ÏíZõ“\øq÷èX•¸NV·î³®ͨŠŽâlð™¬H¢õdˆ~‡iKÂUÞGÊ�®‹¦ ìõ½Þcþ 9Où› šTÁȵ¬ ðf'²8ØHU4w}•àœØK©LAmi1¾åx“Œ3P—笸º„ø^¥•ª%E-›:¤ž*uÒ‘øöZÝ{ºksÆ¡6„}“ zç�’êšW’°55¦ú�<¤)!ôC)jMQ5©&“à±~g*ac*‹þÅÍ3ðݾjä=N'î�«Ø«L$ª›GGj[8ݪ֮¯ˆ½:ÛóD�Ú¦?NE�¯‚'|„FLI‰' -}(² 8ü*!qòÏ8}9˜ "Ü8ô5d®él’Î>\ö­õ@D߬—³aÌ -vr²æŽæB2ÑW#‚è�pelK™@ò)Ø#Q‡®bª'˜Y2ƒ9T™…vªÑ@)äpz Û0ð×Q…à)=àú»9ªCášFi¨š ŽBItóúg*¶LœèR8pÆÖ�S[ò„Žðcý½«ªþ:ZˆÕ -ÜX„kz5[°£á‹ú{mÓuU;¢€�Ä©ìï`jTÕÙyøØÄËQ·U£3Œ‚M¥”jÆ×'¨âàwž³Q~à¡1`¤àò:$øýo aè`\Á+XϬ¾n# ±OP•é2‰2hnéú; yî 'qÊyþÝ…�ΘºÐ�êLWñCßKår²´F:|³]/Τœ9�®Dön»cóÝ ¶°µ×…¶ó|ìl£e‹ïÁ×zçYâ-!øÁØÒH·Ïßé>â¨<‰c¡bÃyì±=èo+‰’‡¤OÕ|ƒ‹Ê{Î4êãy/>P%_86ál›9?7¸G×=¨ð©Ö9Å#pòÓïêºÈ „ é ît4>«zã²ì±²œêAãïâ7€+†YPøHGs§ZUe†Òá‰*)<çiS•j â×tÞ�{|%îñú»ø+p{*[NÔ›^œ{I”1®5ìDõ‡CJ¨îXH®ºXu?á“ÞË©)ÿø…¨'Sㄇ"E #Š?væYÿîhá{_8ç—üAýje {OÁÛ±«uÊ7ø°_-|¶7$!æRìÕ¯‹­ MåÕÀ‰'¦==!Ù<�Úªu9­¼®LÑ…È­— pá:Ø@¢û¥nF+*¡òI=-^t0ÂÂÓ>óÅ/Æzq´˜�ÅŒ-f•ñÍyìd_Y‹À\áˆåyOÁæÅAÐö°úèq@�Ñ*©ë8Ç]ÔF×<ãßÍ\ç ÏúÒû.’!kU{î:š¤ðð:• ƒ#b�E¨S\—® -†ª£Pº"ÀéBŒÚñX‚g®Ô5®‹?!E�h'&Ä}•@/|Ýâ` -t©Ë‰š¨á»J?TU¸²'Ø]ýÖ‚½ÎŽL¸Ų́kSðÝÑ2H±cÌC\A1+ï-ÁêİeÔ|EPî �g¬ B;büúaàÆžÅ(æQŒE¤ƒbÏÓLC¬î�\g€~zo×y 31gÉÕFÆ�Ï×wG›¢³óî†X覈é"¬úÝM|R IX68”½Bá¼dúuÑ8¥C“1‹Ø›…A¿;Ú,]Tg±Ë Yg $V‰âû~úTÀqŸ6/>0ðƒÂ}x‘·`npi½×˜ ãˆ8dãÅ­®{ŸS¨i`k³Ÿ@¾0Â¥á¡E˜”¡Æy0up�EÏ6G×C�ßÁAÕÑàgô3J¨MÃZ°=~h®uÊê¢Ä÷ ›¬nD®T鿣ߞq˜úá"R1ªÚ‚ÇåO�>r'³˜²úwz¢¾ÐÍ.x’œÊ^± ÂAýk„YpBe"œ«Ò|P´ŠmÃuIbdƒƒ×M0 -÷£ízÄÅSQî9�j9‰¶,ÆÌ0ô|f–³·˜ã , òy#©¨Óp­Xj@ôÇÁZ6ÄvÇ4ÂØŒ :1Ly~D:‰Ý©®qÝ€§Ÿ*â~Z¬Ü�¹‰sï&;‘«òa†X4iÈ·¹++“Š ꯬ã¢{ý„GRíØ?²OðšAô$•Órê:SJ¡=‰�RáU–˜|‡Î.|)ÈÀ¤±kh·QæŒÇ°®q™W’“f95G&p9Éó•¸`P+ze„*)%Úˆ‚ -OÅ2äIJì ,TÎ&ôkYæy˜ÿ»£ `€%``v'{SšTH ¡AƳ¥Åz~h”xP¿�4_Ãõ¡ãÑ.ÏžrÞF ê~—:Nz‰{›ô»ë‘UõÑ"6óË®Z0Þ:wžm`áżP^Ä×A:Pcƒ%˜{Ñ“h HÄÅÑàÄZ1‡_\0°¥³Ò‰²Ò"{4½R¸‡èQˆ"¼|Æ!­nÌ:eî�úÝÑëä:G8\-aK¤Ä<Åˣœ'¦°ä�ECGà s ÈÙF¸È30ÐÁ@IcÇ -õNVƒrÜõ -ìRD@ÉÏ\ö†™gtZyÀ+¦bðwQ::FËùV¤Pµf�@­¡>hNwªs²G’DÖÁ =ºÒ�jsÖø@«h.i�Ø™Áe¾;šj€›9Ô„ -Ô["?$$«Ï Ä ‘•¯ŠŒ2�P êìLtjô²s¡Ð2f–Í-ûgÀÉ•U?Ìš›Sw-„ �N¬$ñOQÙyØÕÆ�ÚLˆ˜H¿\)Ú(³Õœ/÷Œ!„Ÿ9 -u¾Òñé„9õ•àK0F3PØ66[Â=zªBJI¯æ†hwýèº(Œ¤"JÊÁoZ‡õ•Z,å|¹É#‰6dQ„L?EÓ©çÀ' -¬8jŸš!¬d%dCI ÓS–`(ÓÜÉZÑ¥íTí†ÅÑ@D,BB0¢ ÝCpÐyUõ>(2Ž\†™"œ(Gj) J‹ÝsÆá-È;•Ì�&À1�<Ô7ækÂS"¨Ð…7®%F|$ZHráhò÷ª¥²ü:}H³.Æ0§8�èšejSî§§ÛûSÑ«˜¦¾ ì ¦ª¸¾‘+æÒ×Eçî úµ‡mÄ�©1;XÜ]Ø&ò|š>Ð4H‡jpU‘yl ^„³Ü&Æ$8Q~wÌ–D™ûdP(}é.E?  CCxúAž¢v¹l¶À£-ksTÛÅè†s„–È�W4šM¬þEÜñe~' 'È!Ë€ªeÔ‰ÅåX¤b„ŽfØñb®>P6-Pu•¼²&C2¤h‡X¸ «:…‰âXÇè Î,ô‘ãDUYôùâhÓ¸æ#_Ÿ„ôÄÈ%ò ³ëDä$ѸÐc¤ý Ló‰§EAÈ »l üîh \Cnã½§b°Äâ *9 §n@jzPëÀÑEbV2E4E3–2ûI$cR5 úáQã=¹G¢ÆhªD§W,¨+ BÚ÷›Š3ãà8‡@^ �Í!ëÀY� õDWxÁ‹£MˆÂ9âpŠI<[ çsù݇m€8}â½i1ód“ ½ÌôóMó<_‰ùJÍ×(&U9šìÄì ä�âÜyq4‡IÎQ”ë(Ë ÀŒ -wTO`«€•:0B�”]œÏDM“»�Òây�h$nió8ÇDÎP“\iš|EO(¹ø/¸HmnÐŒí!Ä‹l¹„ ÚA=’:õD|1‰QÅgó…ûÀô²9ì|Pd‡]ÖAÞž>„ p¼)ª‹èìhB„"# Öçù€ -š q6üùü\x6)†[ôнí¨0ƒ óÝg9Þ áhÈj¨Ï€‘ß-�“ë¸Êîòl1IÅ…Ta„:©™{†„Œ+I�‚)‚§Î¼ÊÒ²À¼,p1(Ô"à+G;æ8 „x•˜>9è=NºîlF$à Ü�3e™#D6€H¼àhIQ¢Ô1+‰Ð}ð‹‰Âaô(ó0 -CŸÅµXå¥ü¡A_g�S‡é—š/*—ã�õB¡CYge86ÌnG㬔%ôâh Ý€%�ñÖ 4¸€. ‡@¶‰Ã4¨#1jhEYÍ ^xi[ÆfÐ,|Öá[ €×‚!± sž]0õl=ñN¦ÿ„h@¨`•@:Ñͺ€,á�uTÓö´ µ AµDYÍà1G@4K ÍŒC �>”D‚N $Ç®£3øÊÀ±yÌ�¢• '% ÒüaÀ/¹™6`h¯ÍKÔÁ› xºY�z=ŽÀuNk~�æ[Ë õ2°= gJCÛ0XæåÜUÌõš¹“78œ×=�|IäcÒ�U"Ì“*–s__™¹ãæþº™'‰ ?s6mpG­»G¸»:N{Íú¢kR g®HZú$¶æ;˜;fîx’–në)p‹ô°‹£¹]}´ÑöŸùNÈF/‚$H¥f˜Në0,ÓuynCÏìHˆíEÖ×,+lÝ,Ã)´n¸Í »¹IýfÝh™Ù43Õù‚º4Ø]L¬tløÊ¨1«¹®{q´Ô†çÚòºªHa-Ñgž´)UhžL4O6ZËF"ÈžÊCeI™B¿¡Ž_YÔšš£Z×�€bü�¿�Õ¡ƒU#¢®î1‹�ˆÙ1 u^x”†.Э -DÏã6™*쪞7hžFÑ‚{rª?} öñÄàÃMÊøìÀÒ6¸‹’Ê@À‹w/!׌֠XÃÌêTYE¯!,”Ê¢°XE·V¨Ïд[Ñ»†f#q#¬ˆ³õtHÕÀ’êp•£!L{µÐWôÅjb‡I}ßgÉØ©²e�©ˆ(€ «£†À‹š=µejP’¤¢ò0Í ¤L“Ö¦Rž¢ÄëÈ‹EßTUˆj°>»‘”èO%EŽ4ùƒ•Ž1IÃJqè¢ó6Ó9™É�¡ÀÍœk JÄ;LÅÅqÙÆÉÅ“(™ÈUqBSaÝ,�V€Œ§E– …˜£®!x@õStl"ÞS*V='c­4‚~‡'¤PpøÒFN‚©Øãš ‚]úÓHÖakg6"�CW1s.Ì8z'ªD‚—óSÏE±äêÆê‰©¢Æš~"¹P6?F*ÁPjæc´oët±�¨öhôëCA·¥µÒãüå„f½¨œÒʉÓÉÉ G¥t¨‘¬Ç­¡Ù˜8C”²?7 nÕÌD5`9E)¶%•ùÕø"ŠPÔU"’�”Ukœ¼Øžjí¯6|Û%Ð -/�%È@ùÄcûyÕžÁ|DV7Œ4)IÏËñ-{&¶\Žù·ÄaS*\rGœÈ D�“4°Fà1 �yñ‡C&u„BNiò‚ýÙš]-¿„ÏÃ’t’ëAÃ�¥†Œ UX/íÔ±'áJ,.kN�ÆSuk7}y|®}eµñÛì“·�Jl.Ó‘@AÄU](A«Ésð‰IÞ¾©…›&$ñ£O_µÇì « _] ~>)6§�,L“[R„Ô¯±š<æ5>Ë“){îÇ5Zµéó°ön{N?±Z~U»˜DîuìŠé�ë¨d´§PqM5�Ht˜’‚NçäE{Ê�³4ÿ¢vCj^šó…ø�P`5û‘[ì)'++$‡Ü”U»^{Qž²æWË/²ˆ‰·T²—É8CˮƧ‚"x9ôÄœß5=A“÷ì!k}µü {áXÆ�™|ŒpïˆÌ\f«ñ)³�ÉûqNëx(²gíÍö˜}`µü¦ˆÖs ¯°ÄÞ ýïNŠ 8U®ÆçN“q8ËÀY£õƒ(Úí]{¬}bµá³+ÖWFÐ=ˆP¦Y²uVí0 (KAÕÍ)E|çã[öLh»{þ-ù¾—‚¾p¾Ò@d0Uô?§Éc«ñ1¯p}´ï¼¦ˆ�¤dÒÌ^lOµöW¾)ʘ¢~C¥íw«ž×žþÃõõ뛫Ûó‡ËǾ?¿ýúr­ u3ƒþüæŠÔ(s¾V‰ŽÂÌžw�V|6ZÕC™1‡ÿâxzmJèSx”r2õdÙ¾`T„h¯�?ØŸºñG¸E°õJZ4°é3Ÿ~Uçã—»EUüÇ_ߟ¿¸º¼}8ŽþWœ˜s$³dÿþôë#i ª1¬¾ìªØó…'ÈqûÃI?t½|®Z¶=ܹÇÿ¸™¾Ùoóf€û®ž™Ÿ^L^E–6"[}ôÓhû§US…[ýí¯ôÈà¯GßAAJ¨JïxE8¯ì:¶âè¬ÀØ 5~úéÏ�Ï\÷¬ø ®�¡va3Hp�âí¯ôŒVý8lÆ´àQòýü¸®Ó�¼‹ëNŒíN6LqéQj ^½¾è§×ïÄ–çí/W{ >þ‚õéè>ñ>¸m¿H‚ï$É™üÖ—z û«"`/ �¸ïx ¸ïäÖ9�™a±{çóPõú0“Ž[NLÛX�o_#†¬×™tº^ø?PyëG¹djù˜\‚Ö!&Éþ{’$24ã°¦‡;rñ ¯K+B÷ø´þ$�ãµ?žÌß>Ùô‰“EGN}�Œäìèw?·ÀÍÑrÓlØXË�qv´Ü¥³mÜvøÙÑlïÏßÜÔü¢‹í;ÆÙtL+qVÓEwš§kºæ±]Ù¸ØpÙ@¼T݉pš€’:àˆbnþK0fœÛñ?>YgÍïø�ÏY¾ªk -î|Jñå¦��Ôwý_¾ßàë{»ÿ_¾ßüâË[œŸÜâ‚ô7Û?Úí>»/¹¿»¸|õêøóË‹‡jº\Ïm—ngÛ…5ˆïBõ ä²š‚8œ‘$!*K¡]"4&„ªÝZ]]’˜ã'î  …òËÚ%ÜIíb) ¢„3Ü$Ó{-ÊŠ”¡Œ¶ª|´:ý�—cÁú¶šRØ}kÒÆgµßÏ–³²z£†º¥‚ -‘S;Ó©ÂøDì”KH¢+ˆ�Î5T„á»w½’àN×5Tp¶ßò«f -…ØÅw½SuÔLßNÁ×sú�¯äÁÍM¡­WpyÏô¨?pí‡q­‚lÛi·ßÅGkìºÝ+}÷ž\‡¥[7ŒÒD®¸p{.4•üÓo6‹ÑáW�}äG\zW9I@,<€cùé¼ -¥–µÞl¿VéO¸¼µ9¬Òâdþ*}'ÅÄÚ¾šYú%ßþn速HY­áj÷̃Ýêƒ 52›óíïöx™ùËÛõvU3õ´�,=B4b IY=8`j`¦HPq@‡`ÂÜ‚�òïW›¬¯rÄt}ç¤ÆÀ³vVjCNÉ)ê~ioJ� k�‡l^«PŒÑ=Ð~SŠ”åHYï’‘ˆií:B±óñtIJtOKаîûFA«½²;3ƒÆßu3e:�Àþ[›:ÀÙœœÍ'ib˜Ú&Yš¥›ëås ê;Ì‹Ï`>ÌÖÆÖ†U�Û`Æ—7�¦¯6k§ -àô$-žÏ¯¾úªcÍœÏ?4[à“ÍvŠ”l¸x”û’U„ðvR¶¿°4,HÈ nU—¢0ؤßA.Š^O ü_–ü Z ¡v†ÑPÍ¿P5‘CjFbÂ<ÐQ}?,'Á’AË " ‚¤«t’)xÁBá¾ *”@0«@îYŒ ¹OÈ ä'¢´7 ò ˜Àß÷’q‹Ø rÕP+9Îý (HO¯�Ô›.¡„„cÈ‘°lÉô欕(¨qfƒ„86Ðq¨•Í´.ÞU‡²_¸Ô ¿BƒY'&ÑíÎÚEð¾VÑÎÒü˜Ä´ù,Uéµ^÷‹&ÄЈ¨©D;I`uÇ¢-±·UNÐPйÀΩ’Ö ^£@GÓp²À¤=ÀúZ3ÅAÁ{M!çE¤ƒÂý˜»Œ3�Bõ³úz½d3Ô…‡–ƒ9 -œÇ÷Á]³q¯þ¸wLþ¯Æû°?ýô“‹‹×7Ÿß=ð®_Ù‹¿üdµš<óÅ7çß^~z}yûâ�çßüõîÓË—w÷ºoù¿6>Ywù7ãæþå§o|èŸMö¿;­[“¥8tyC¼ïê¼—µ°P{§÷6²J ÎR¯)Lš£ƒüÚä¥î˜ì$Ô—d -òöÆfê\Ë¥. -KK-‡"弎%£•Ê`Ä3 žGA5s€¢Y-U -ñ RÔ£@šäƒ¢Pر'ü’÷Þò>‘ Ü’ëSà(ŠÊlA—x�‚HEUQŽŽL@Ù>L -3I™ÞºRÛŽÈk^PëfÄ –Ÿâ“ÖIƒw10á‘÷~ ¸œÈŒÄ%4²‘r_Xï@Ê4bÖ(�ã¬Nû^+`÷I·Q}´gêgêt±Y¨2�Õ@a ï}Ö]‚¤ò'¯-¬ÊmAüÛ‰G ¢ -€è'¬ÚU¤{Ðd䤌 \A‡é’dÇE¯»¨OšÁR7?IÕ%?f�{"y111‘댇M„,á@I*Y%• � -¨Ù$§Øa¹J‰¨Q®äŠÁKYÙÊ5X@*–Z‰Ì¹SÄ W>fq‹ªvZˆJ%™qØ�™-ÈQp˜bAvœ3L¢CÌP¬Y¾ -Iäë ž<á ìzÁi2 Éœ\L€¾CJNäí7}¢jå’çCÌ`p¼‚p¼¼�Eç<›@uQ /yO*¦µ~1±,™ä& )ùPRGŠ$_Ù�ÁeUqŒ¬LRÏ)³Ìbý†Á9ᆀC�Ù»NX±Êoúj©J81E8»—pÉz*JTÊãt’»Ï/õ§’{Å2’EÃZ²-Ù^2žØ@åRèŽÍ²H””I¥ú¤¬H¤=6¡$,9.¢^*%ÛJEJSèõ‡ŽudŽl^D)~ß ãÅ^p7€ò"rÌ­Ïz ž³CNî òžãEqž.ª?'ÏâÜ’ÛIO;vb—ò8žÊ‹(±¤Us¼æ¬'àÁ;²žÆzBKë%  Yœµrbwi�‹ºQuÆ£Ènm�·Jzh'Ç8nþì’¯°èP¹‹éxrO²¯b�3™Y{)S(FïN¥8%Ëg d¾$õœï‰0Ìì$_µŽ­—ψ@‰C/÷,-Âlf]“�ÓË9 Ü'TN° �¢q'ÉT¼9±ŽU§rQê–vR—W -7:—¥¢tQÄ1¦Mk<…Œ¿aÞD_WeB°*°z|5Áë] ´?sÇ{>{•K.H=ßNî¾³œwœ�Š]l "‰;MåCÅMV_˜ñ˜ù7¸Ó Īa¹ri=w+|²,h«ì=rY�Å•ê8rAw¬wÄ3¹ž…±Ýx�’šÀh;)'ÏC½ÊOޙŢ)°…,‚¤¶Õ3žJiLL®qÈëêYÜ�n/‰¥`D¹_É6C]Lþ+§­‡c3FÁˆ<øYî¸M28Uµ€–W;*ÜLÐ*àxT…›5–‹ƒòX/Kx‘÷ò’Ìèx" :“E»‹$ 8=•k‹RìMk�r3kùi]z!¥ÏQ÷Y5œjüréòâ»!Jžißg-ËH*dŠXÇ“Êíá¤üÌ‚ëÀЬ9Á2�U†È˜+*7à» çhØöGª-8TŠL¯¦>ÊíUbCUDŽ–âò¹®gý /ä6j’u bSPÜ,WÍ‹°!–Ì)ÂÀ<ïª�”\VªÈŽª’cN8¸ âçLE8è_ÐÚ0|ng2,Ͳ'×V®‘¤Ì,…bza[1Í亩?‡|\T½‚gF «çz -ù,eJNT—Ã�çÎ -ìI)%«æ�ƒ÷¨XÉ’\! ví)ýP·7ò,ŽÁÖ§n8Ö¨d�)»îÃi &õº$Ú|e)©RÍÄ:)bÖGÑÈ}» µê>EÕJÎØ TÒ=êö:}¯*=9¶<ˆú+·c3íMJcÉu~”’— -Ÿá\lÞKYÏû¢1…ZádÊm`Ah|…fæ`åúW½ˆoV�ARô(ÜÓâ(Ä_œ¨o ©„b²~1>Òwr_J„¶:5k’*…dDTΣ/* CØ,Zû™v‡¤±2™ÊAã4ñªîÒzÐ�Å‘:uMò$É^úåJ=8<ò� Ž„�¥»­î2Ãwrç�é|¼µJ5…¨ öv‡NÓ z7G¾~°óœGã™”-s#6ØAØ‘ÉÑ(Æ2(ÿæS-–#YöƒTÓÞg�dý¬é‰ÂÊ‹©Nðæh?z ʼnè%«@¬¼L8ÁÿÏÞw0´u, €ÿ ÇÆÛÀÙvŠ+¢¹á€ÁÝq @¶�°$Rî¯ÿvʶ#�Ib_ßäù徆=[fg§íìL–•Š¢Œt½øA'*ÎS ²•D2&2”ŠòTóy1†£—JŒ˜�>\N�ËX¾Ÿ“Κ‘Ç eP†4Hº¯)_DN‚¸,)ibJvH‹Ì;Ò� DAMa&)P�À¢Ò“/¤áA¶’”6�÷ `âUš24 -xŸLÚ{ŽÉ(震,se40S€Â÷øpÄ%ÝõÆ”ø°8 -|‹ïN1óV!sªb\"Åe� Jâc=ìjÝK*e@Ú« �wCÕºJU‘ÈGE&L�æg_ô0UVJ~¬Ñ>P¾¼¤òhQ�Z(�PBbÁ‚¬Ò§Â°úšrLlT”¥c:¤Êr6a£°dMÉ¥»PŸ¯”ô9¼ˆ]Òo]’  •"Í …Õsj#̆Ÿ»“â+bØÅh$8K\$‰sÉâqxä™’¿Sdy`¦HÌ‹�™ˆ1q’Á7€ðÌŒÍ%)©Î�0Ó'D¦A(…a9ˆE²ÃRºCbÖbȤÂÜr–+Òq°¤5fñSŽö ÁùAØSþJ¢FÈÛ�³Ê ôj ¬€¯p¸Há§úáD‰àÔdOæÄdôÂ6Ják}*‡Bò¿ O�µD°ó”ç³Oa’© -éÁ*™äª­òŠTYa\RZ002(,Ë9Ôo p@!昮¸Ž 0(%)•êî’7Žt)x G€•÷¿ú²ì쀭01Ù.ÌVð`™ËçÀY5X“³ø+ª¿Ó�\œ„‘ž,BùŽB²±[ð ^�4Ÿ£›J„èÂ)˜EÕ†7m“�"¸"v%ÑL·¦ôQkÈÐ-þ6§93òbÁI ¹b -:,4Z|Re‰çL¾ -n, �5k­�¤HHè�=£] �&z4EŽùœÞ"d¥ƒSƒ²ÕðkMrÍ“GŸÒŠE–WN89ß<•¬ç³Œnf’þ.ñyç‰ `n9rÏ;G3½>¶z]QêKªÏ�zÞ L8‚zZ0Öò@½"7&zEC祩(ºè�6 /¼ÑG_bÖ~*;‰˜yèoG¡—¾,Býš€BIiSñ”•³E¯­ÑظgVWá�Ð ú±âWÒtñwXãk x+Tþâ†ôÈçï3h�sžJÌ&ƒ³‘Šsç�l$¡Ç@X A¹âO)½"Ñ? ÀÜ})€¸‚Þ9â ¦í ¤‚úÊ‚j¸›…û Hœ­ä1©‘©Ê<ù]sÝц?Р‚—f^¹Å¡zTÂÍFî§H…"È65€r‰2|é@U@K’+§­iL²;¤+ �ŒõiD‚$$X˜kg -jGil¥XDƒAn/L!kí0{AA’ -CÒª„öŸxa @�j!€ÐZPžT¥«@mh©v÷xTô ¨ª4�JÃô„Sþ« ”†½iq(G“Ô‚ô<Ø—‚bTd½î$ö�æT?*­ ÕXþÒ€˜£ÕÙi¾2´,x@š^ùSÌ�‚jö–zž£_4¦_BG ñÜ$})sÉ#PjJQ²wAèAü)U¿‹ÚA1IC¸%`-D‚PÊ9Â8. fªDÚ™8å¶Ô UêyW�Ô‹ÈÜI¤¤Œ¢ø.$·œAdÈýí,+wËŒÖEi†‹yÊײÞ‹î@oT O#N¹·bÊí´vQOÂKM©1HVx$y ×ÂÎz�¬Ü˜šwF–� ‰œ‘‰,•ª¦O…çi”G³$O€GRÅøÅl)„òœ{cCMºzìr—P°ÓÀL2ýÒO%>aeºÄë8rT(�”âv†w ‘cªÕd©piÂDB¥>Zám_oÅ ôùñ§ 4è åÎñAʉAƒjwx+?]*Å -lž®p$ï‚*¥Sî�WJ‡3£tÒ ’LK4÷|ï2Iežò¡d ˸ÂñÁÂõF„Ç„(§ 2ÏIõ¨2Ö]ÇD©´*—É —`ºòDÀ -1…×¢]Ö—üé)|m½D³|*$áö(Þ�–e&]bX½”ÃdB¢ÓF"0€dø²½B¹êAÈêÀß -_@Õ§ˆ@žQ¨*y*ï@’�é’‡PÌÿHâTJ?H¨ÈSvŒ¯zp]EUƒ˜Ês,“NfR5Qė ñ B0[¹[øpX8Õ!€PL2Ü<9N'+€níȇí†áÍŸæã Œq@š0e †rYN#Ç;€¼ìSTy €&L ”`r‚)@¢�öÀŒ<üÂÄÍ*Ü^¡hˆQž5ÓU)Ü.p_ˆZ“Q䈫 - GªèÄL>-A-HûÇøVš‡(ƒjT,7Ž…á‹\“*k x혧0†Ð…MCJÞ©LztÓý]²-|ÖâÍÃLrk§ò¯éΓQ(º`í2oæ1�©;˜`º1Tu@x� JÞ'ñâˆ�‰²cõ¸™¤ºËÀI¨z"€2VTÿÒ�øS*�´“¢Ö—¤%HßAª[U›^ Òr^€,™vq¡Nù4ÌbŒP¹ÄwšîoǢݽ(7¼gÚ+Â|¸²HôO$þt8q‚J$ é®èÈzËò„8aP!j4ì´…ˆÖ5× ŒN„¦¬ô0iº;H�“T>öÇÄ�@eú’S­98¿St0®—å”~‰Wïa9#œö#ž9Jò:ïÒ³&§ -%ÛÇ‚+>LšJ1Ö÷Kg¥<ªdÅ�jQG\"Pu‘°~¾EIE„b@S�$åAÜÄ /•b /èŒÅ’“p0hå„r¤!âk¿Hbjz‰U@¯ Èdrb™¬)ò*ý˜,ïHìSj¾šz !t#Ñ"4«±®¡1¿ÞØòSíeÝ+„öN¼¡$æ;mPî;¬5tÀ¼ð -«Z™j¼Öý˜ßDüÓSøú¾)(Î7—CÈŽ,œ -H*›ˆN2Ïó¨6/�"y–—}ä–¬EP>‰”3ÌÊÒÙq®3¼sKE“Í;RxrTm‘LìœA²tZV*q G~yÜΑ³Œ[^/ÄCP™µt&zžÊÝD3ÖlIEëŠ@":’˜»/]g— N¥(×Ìm�¦èïx5U·ö Xª:X7…å…<U�Þ³já��gy ˆlĉ� F Çi(ÝÄ›å�™¡~ -ÀʉFâ\9³×@‘È @¶ì�(³ \8‰Aü@ÒÛØôÊ `¨¬ÓãÉ‘“•8>ÌÜ�vk(A ¯žrÓÖ� -KXÆ=RMM9öK•Cqz�&$æZÆe8¾J2q±ŽéP„”ôÈÔÅä¨m¦«�7Œ4™dS1Á¿y^ž�“‰�DЏÁNK-Iø†Îð¬KS$C;oŒŸ$ ÎtmŠj·Å‹PQ&(‰A±à�žQ¸>n„sQ`åi©,²Êtc£¸íW�“”3žÚŸ]©Ç€è¬J:¤êBɰd&#=3à*TbUEäƒ"œ Ç�ë, Ø�o„Ÿ›Û.]ÕX„¢0唚¢µÇÔ„/@‘=�¯¨ |¬&ؼvPUo;!D�ÒîÚ�+M•àâ®á‹LÀ•žU$ñ¾¸pµ¿¼Xvr›%4ü¨•ÖÑ�Æ|ÕáOOáë»�rxD9§«èZ ª¹ã[-ír}WþVKS_ù[-H° æ Ýõ… -¤p÷øNǃœÄç i»ÌÍÍäOvÓp Ót¥Ó5Q]ו¿ÙŠAþr+jã¿Qn�ø° á†ËÝV�o¸4ØP0¨ -( -@¾á‚! -Z�ð’=Íñ7\N·@wÃXËk™×³éjÅ�ü¾TU­]ÎÈu\šýw°(Á•p$m–»àPE“s\ Iy¾á‚ âß -Â]p9à @|Á¥ç)Û<ì�žè’ÒÍWþ† ’¨2ÊÝÕ•»wr üÔP¬nÚŽJ|àts&èpÇ÷žªb råDDßqyPÝqE@wÇ…½!„ï% ÍEH¸ââ×tW\|¿ˆ ¾º2äð g*Wi3*ˆD IWâu€d¤¨)šˆ»á�Tœ†r{Šº!€ü —S™téo¸4+ý’þ^_WÈm um€ñ—æèi@Q掂AÕÜ�<áçe­Ù¡Ð[åMÓœÑæ/¸´ÛæÒ_p�ª !J�AüWt\z^{ìw…D¦b·ŒRÅí2§jÁ{5‰ÀÝPÑ�¿àÒüTÔ3¯cô;‚ü])ÕÒ�Ì£#£hÂá‚ ßñÎéÂ_\¶iȼvNÚaÕoì�?†¯q“µ{  Æßp޶ wÃ� —Vî†Ëð]ž®ü —a] �nåçKàø¬Rvˆ¯®"î_qQÁ¨�ÆòJòŒ#VIeÁß‚¾qx…;5Úõ¦œÙ– -T¾â²R›Ô&É$_Ö†]ÖPÍ=úËzó„«všŸ(RùES]Ödè„©Â$'Ýq üÞ.;ÄzÇ�äx†äc'�ª*±jÏÄí0ä0nŸ餎SU#ˆw E0vžQ�PæêÂ�X(eX€`îv2„½z’ÍCâ/ÉÂu@·t´„‘ä�GÑ=ð®éfÚ d”cƆG&…*aãàèfå<£P¤C¯d÷i ñ;Ým eÖP¸Í·¨òŽ]É;@vKÖúJï$–NЗÉuMæyO¸¯Á÷ºñ·ðn «’½¯¥‰£D -×Î_ØÐÃ(\–»°ñ øÂ&�S -«»À;®°Na<8¸„ã²áÂFææ¬/D—1ÞðM[ºùŠcMP« JMÔD¸ø¤š§ÀùÆFQ)jñµˆ -:A¸±�’,9·.Z‹d‚\¤”¹ g¾9fÚq©×¸7|âH£*?ªSbÂä(þ —�ó(¥‡[*Y:¥+F -eǨ¡‹{޽öá7„õÓ2ö_:ñëïlÀYmø¨ø�…Üѧ»³‰AEy` |‚Òéàº\�…%áè.æJ´Wâ/æèjQnæJô]%[Ã'.Þ?|+îAΘGSÛ{r ¨" e¡Ì(*O¢{¨ò·:]ÑÌc* ±:f8fSå‘®�5·cíÎpvel¨ a"ŠÏ'kíJ¦áÐy6pTÜ”#ž9˜p 9¯�œ'n­Î}†·µ VàÕdVÇØþY5Ä ‘hG V0ä}ÓÞ ˜¼¿Á÷Aê7Òi‹&=§-Æ ¹îПáÇ¡‰Â¨ª¬‘2ÌN¨„ä!ä¿0ÉÁ€WRÔN¸MLtÔžtÃÇá´ø!*Êp ”‚û󞞊¸`îÕÅ# sÆ:ÝëEÊÎ=½ #³À¢¬’SåÜAɲ‹O$‚Û~zh�°cC/„Ç€hÐGüÝŽ+ -�H˜ -‹Ô - Ý;K –)éAðÄ / b 2Ã7呸ƒ|kÂIèÈGFÙ¶‚ø4Ñ YÃ�O‰„ö§'–Іß$ÓåC¤Ý'¡ÃfSüN¤T@b*' ½‹´µõ§ºÌzê2Úϣ؃‘‚â¤Á€).e�° u!ó àL©ÇðΔ‰œ)è®H¢Î²œP ŠQ•Î%â&ÇåÅq Ì»"�ˆÈ"Éçµð"jçµúLÕ>.Á‘žáÏP<N€¦¬8¢.ZXJâ_=Ð…ûÎB±“Iq¸1=QŠöÆ=˜Iv°½?=Ìì^HNs€¡÷�a“-R¦³)¯J ˆ®D�L“$:ÈD䳆ÄïÍpÅíü32လ½z@&Äà`éB[ɨOZ2LkН L™±‚L×{‰�e¬Ó�„9¤¨RUæ"² ЬèÔ+ÑÉ©W”!9>õŠ¥;.Ö…V�GJ ôEò"»GNÉV(vlF[æ¼:ÑÆª J!ȨM@��Î2'9—]B'Þ�éäH Äpçd`R)’éaÒÕú2$óý°Z,ª›â$€"Ü ?³¬7ÁN”®7åø¾Šªh±';ë—öŸó:¦E× ñHÈe¨Æ€˜¤'êÜì^R9^I8½Ì³Ù"s« KçeŽè)yœÄ@ÏÈ]gÁјa¢¹¹ýÏ~�OH§€Ää­>& …^`QpÙ[Ƽ,‘nÞQRB64LÁžëð[=«D�I–IP ðA6 -k_ïÁ;HTx ­Âch^@G?ªoóûOOá[®H3¸"ÍXàŠ4c�+2~ŽíW¤©®H3¸"Í„À•´]ææ–®H3!pEš±ÀiÆW¤™¸"M=pEšzà -X\U¡Àžf»€iÆW¤™¸"ÍXàŠ4õÀ4.£xs \‘f,pEš±Ài&®$írFn=p#'L-pEš±ÀiÆW¤™¸"ÍXàŠ4c�+ÒL\‘f,pEš±Ài&®$í(pEš±Ài&®H3¸"ÍXàŠÔWdxœÍ�+R×W¤ž¸"õXàŠÔc�+ä¼1UÚÌ®H=¸"ã·Ù¸"õXàŠÔc�+RO\ñ^."$¤-=¸"õxàŠÔc�+R�®8�'ü¼¬µ£Àï} ŽC©ÇW¤ \‘º¸"õ„À©ÇW¤ \‘ése -\‘z,pôÔ¦chŠÔW¤ \‘z,pEê �+R�®H5¸"Õ„À•¤ÝuJ=¸’¬Õ®H=¸"õXàŠÔW¤©®H3¸"Í„ÀiÆW¤ \‘fBàŠ4c�+ÒŒ®H3!pE†·Ù.pEš±Ài&® #õ+Ýç‚!ŒÇ8µÒà k©Ç¬t´¥ò:dÌJ—î¥~ÒYÝJ—z‚•Àš•Žô˜Zé”Xé˜XéÉÇd¥'C�•^› -ÖÑ”�õ-,�[éOQg5+=Á¹³Ò£½qVz²ƒd¥;Pl¥;X7…!ÙÄVºó%VzX8ÑY³Ò¥³Ò�‹*±ÒX³ÒApÕ¬tô‚Õ­tÖ¬t<�©• 1+õ·ÔJÇS•Zé´›"eÜJ¯Iö˜1+‡M­tœ^ÝJÇe¤V:.6µÒ¤ÄÀš•¡ØYéÉV8+=Ú2g¥Gë¬tЬô„&ØJn5f¥×’ÞWUQ˜µ3f¥×–�Vz²Z²¾œИ•Ž8N­t܉ÔJwVIb¥';ë—P·ÒkEVzB<ÎN­ VwëVz4¬³˜qz5+ÝK±`}GôƒÆ¬ôw¡³º•žìC4·º•íª ÂwÜJ¯‘äN³­ǬtóVzz &9Ô‚ê›X]ÊÎ@ŠÞêÎÀs=Q`îÁðeôÖº)BDH¥‰mæoa«ÿÉ |ýP,\¹Šƒ¥n¨àÙT7ódF(o©ƒ&Rò—ÞR7Ì…r–:$oEù«è¹#�è΋AîKŒyKÚÑå>vÆ×+¤»i8½Í(îŽ-uÃ:5¤¯Ü¥hyK=j㿤l�ÎRg ÁRwFVû…k'î*¨ -( -@¶Ôah0)g©NÌ"Td©»Ë ¡¼¥N5øäoy / ê°WÒÔšQfc¡¼¥n8–å-uÒ—ÎP÷®å uC…Nä uÃQÇXÊí ]û å u ªrê-ê†_—°,ܵ§Ã¸3Às÷xXE†º¿ ‰ÛQÆ‚Ø~Nò æáíôÜñDåÍÜœ%ÞØN÷ ÙéÐÙ鹯ç õœžóAŽbo§çà>D_¢¬†b=l&E `£{ r6zÎî8{l£çNmSÄùK­ùt;=wÛ¡¼í1†`£[” ‡4j!%1¼Ü³lJn„b(óTOn,¡¼�n\¶råmôº(MltÍ$B&!ƒ\ªN%!ƒ![E9è8 -LñkÜ6iª,KâÑ[®TÁ.NæUÑ«à4e s@gô º˜|œ£,âL`”AU¤™Àøétœ ÌKœð:€¢ÖôÉÀ¸`e” ,wEfâd`yÉŠüL¸.Éœ>d£0orëgú‹“�a•"û8ôÝ1ÏH6g”Ê™+ƒ>ÏtÄØ�…ÇÖnäpÑXÁ‰ ±Yé€! Ÿ(Xže4�8¦&G �†g�/ÎéånL’¨ÁÌäQ;æÍB,D -¦Ž(jP8ÅQƒôDÄI—è!ŠˆS3yP5€.j�l4!£¨AŠ-2‰ŽÓ†¨Á,p8ïBÀ¨7!gKÅT”ì~ÅG1¤äY"M ædI”LV¼ÿÆûa½N§ãÂÅq/ªÑ)âT_:«"�÷V3¢vocè�SŠ4)˜WbÂìèFMÄYÁ\Da’¬tJWŒJ"jI Œ‡yåÃïk§qR0æiV0gÛG7f¹#Pz÷�‚"’òÀ@zÎÆŽÔqü„�scT�àsOÈþX�g79Sþz. †72„ †£âCѬHO·ñDùØ�‘… zP2€N¹s¸ŽB‹ÏD…¬’#7€*=Ræo5šiUç²K««?6A¼%À‚\‚ëï81ÀõšSqa°ä],U<ÚU4@qМú Aa²TàÒîRÁh¨”k,@áâµdsÛÇýe¹7®£#E§'Í Fï%£�!Õš`Y^0:“’+‹­‚LŠXõ TÛÉòëÊL3(ƒšìo#$_•F´ 9COD1 j;òˆn#°:XL� €3Åx'V€D·n#|gá6®¢É¹«É‘Âщ”œ�49ÍîÖ"9ÎîÞ"¯‚sËD·"gßFP©°hÊ -K% ‹@±†€N‘ð�mC8u&RJ„všŠW^è}s¢ádNÄO0):9Í0¾� ëAÔï#· `ÒM€$èTä>fCÐe°E¾{ÂSÜÇ,ûTä?öî¢à? È€¥{]I)¾¥Vc>¢šòË5a“t¹X€*Q¥¹pbª‡{¬Ä®âÊ9~ d7Lp SrÂèàKgÆ'_B-¨ôä;Ï-®Öy�(ò  ?|¥a}=¸�KǨ#rY9圷Lòi´±’jFz�;SºFð– *ÜGÈ™0� Ì×€{3ø\¿/žË€t\è1^,åGOP@êÐó#JË„QºÞ¼ ç/$$•ªN7Ö¯!l?¥�JJbÝ�1Ú¡w$5 7†}‡N¢ùA3á<²þ:\n ¤* ¾á�ˆ)yŒÄ@Æ\è, ×�oƒ£¿YA ð[*Ȭ’Ë¿ò˜¼Ê.#"`ÌÉáæ/#òª ²G¹UpèxZ7ø§¸è«ÄŠaêß—ÊÔ‡¡G}Ú "¼¦C -«¤twõPd×çC/’âÁ#„¹ÞZ)é@ý¥¢¾OXK«¶ŸôHÖÃÐ@©ÓCNË›„dw ]uãÏë@¼Øt@š$ù¶�áøZXÈSñ™GâSö©_”Ö¯AV#’jÆÆ•æ!iˆ3FiÛ& _*‚QnÀ@¹C(y0äÔx$,tG )0ù˜U>” EcîÃ2ræêOødŸt>0ѣÛÅË÷À$Bdƒ‚ÀåS w8 -¿‰Ï¤“�‘øŽ,Ù?Öµ´s˜Úæ;¶SVh¬»p"2½â¦Šß‰Õ�cZrà0#ð$åe2oÅoJa}`“8�)&�ÔQ8Ïyeæ c-ÅHõ@ -s¢Þxw…÷WLa'•S8ÃŽƒ×˜wÜÑ:JhÊKò˜¦” ·�¿å0‚@¶Ê]ÆÆÔ ú5¡)I?H‡£ añ”|Òԡă+c£��5‚òÙÄã�1Œµhû(Ú¡ŠêÒ×D¨¢H‡ôsºÌÀL¦¾’¦™Æüq�»«CEú)Ãjñ®ö…]AÆj\]ÔQð\bÌÒKW¨ñ.Uæí\z<œá±R�íä4“S¢}rk“l̵sFBXp&ˆ PÙönr×�R+s\=ŽUEw²­2,�¤MÊ\á¡ ºÛkÜ• ÍiÐ_E…U�ߺñxŠ+ÄíŠÇr‘Åí)"ÈÝ`ñXþK\sÖþ1”“ݦ~„QIQZe”]‹hÐdÌhÈdÄtÀúxµáÆFsE(OÁ‰ œ+͹¾.\°_œƒÞÝû”Ƥ?q#üi|§'àŸwàæô+�( -ÙðÍ£Ÿ”ëSEWuÑ÷¢16Žm¾ õÀ9P‚Q"0Ù0ìõÈ>Æ"ÞeŒq+õ/ý]Š7âWÊ'° 1Ø ²l¢æô+¯ÍýO®þÄßä{݇Wú÷é_’ ÷e›¿¦±ùO#—5b™çbž0ÜhGÑ’cgÅöÏÈ…èS¿³GS)a¤»ÑSJi)ú�‡f1I¤ôQRJc)ú¹yÊ�‰æa… %$¡$Ý¿éѶ§‘R‹G*4‹w.ÝÖhÃSRHéÄÏí+2‡íF~-^ð!ˆ¿pü#&ç;Š0šyŒ¦GŸ·=züN{–Ð�¤دÿ-,QÜ{×RHµWŽ~R’ÊâÜo±”‰›ˆ¸�x^Ø$keøÝsD¯o1WÊ$-t /ÚI‘�@•Ì»Šæí‰Á7Abð}ào1f2&:)þs•Œ ¢ü$B�ô¡SÌ|MäÑŒÍWÕXþeÄ÷W5šq4Œm‰Té–ÈØÎ -‚1ê)&¶qZ¬Që8=Çäž JOeãTX£ÓqJN(=™µ›É2ò5 -#ÐB’'™Q�“]B–Éæ�@ôÄ0N,5r'¸„ “ye}éY|Uíê_@^Qû[y}ŸcSϦ¦ß/4£•Î.ôßüѸaAYca©ßï6fš„ÙìüÞîn¶ûíÝÑöG;ýîj¯µÓmjÿ1Û¸n[‹¨µÚl�FíA�šÜ;é쵇¾ÕƒÞ(môûq0zúÇq››T¹!¥²ËEØML,lµ[ÝÇ­Ñ ó»mšôSmw;»ííÝV·Ó;¸7èì=rS3ãƒÆø Cß´ÿ?U5ff/_LMÛæÙûÕÞ-×ï—ì‡=†Ì<·Èèv°£ö¬Ý³¦ýÿ—¿M�øÛêÆÁV¯Ä^þayhøhAèLl¼y›5ö,õ¾Ü‘ÏïHÊ ä’È(t¼ô­ 'y(¡>G¢gß}µ rˆ#o-¬ÒgMÎe QcSmyjßNd¿&#!/©äª#ó²o^@ô�·>¡x¶Œür8Û ‰9(�ƒwy©íŒ -| &°•,±Lå<ÝärŒŸA¼<ŸÍ!Ñfà˜W<šK<Agœs¶õeHC�8ž6¹%!¾ëµ“Ä;H- -HJ$|ƒ)5°ðu)˜«A zo¦J¬À+¨ôáòT*X…ÖPj¸ØÄ[œ"‡¬ež!¢[»¨ˆ™.OI,›‰üª8•¸—j>ËéRUÒSýRSPl&fx1ØŠ_³Y¤`ZÉ’ßÒYôTbŽY9$bæÛK½ÙO€»îØæX¶ñ gÞg”P(K¹Ú5bè²…LÅQbV‘ŒWygÃ[Á!²”\Ù…öÌ%‘á2’V…볨£¤Q€_»€¸qü‚§!^+ôúè.Øì¶(©ø!UˆÏøcŒ”�È5—cMÝÂJ´8¢6\<ÃΫEb1$Üà’"Ë Ö/ítAÄ-ÃG%f�µhÁ×…ZòE~ ÷»vϵ‹ Ë…Á©\|IAüÚU) Ì@�½¤Óƒ9éQÑA ¸žø ç�‘1 (~Œs@®e#|d©ß§å)‹ŠwBˆ�YÁð¬ þP`ùÈÊî5>Ë —‡€¯í|rEßBK2¹ä§ú€uˆO°ÇCp:™¼¢,PcÁ'•©¦œ§1ÊJû…)9É‹βq Êíïð„Þ@Åh ôÞ&)øØÖ�Ô„7Ã5Ûs¸_Î$üŽ÷[Äð¸ûjÏ%� P}Aßd•B€Ä|ù°¨JKú£‘ �!ÎLòsœÈN*WúUkšš^i€iÛ½2œ·ÊäT‡Ò@"dÛ, -HíŸ3¶Ïb¾Ð0ˆ‘ô:ÓvEŒÌºÒÄo(×d1 ½Ò�p2°%T¨èe¨WJ>b¶ßŒ ´÷�ÉB¨$‚q•H• ç«Àû§â•Pó:52?‚TXJ¡>žÏœ¯È%T?Ïð|úŽ„Ëè9$*(¸+•Q[µ䪶̎jÈTÈ)´¡z£ðIEϺ5¼Î„q`RŠ s:xÀŒ¶³ x.�¿›Ô.a´áìw¶7 -¿²_Qµ9”}¦$^lðy-ò,` �• £@'D¡[ö›<§œ1Æe„FeÕ û»*Q!Rô*À² L ߨ#j˜áº˜9å ³œÇ ŠNœ!8×&£O˜Î5?€>€íøV›QÀ„é A$|”‘è)P£"Þ†Œt"<·À�€x ˆ�–š‘€o‡@!ƒÈ‰ÿ’Ú-À@F K‹ )Ê8\@Î<<¦•f) ‡9 Œ€ Ôð %ð¼�3Qa4’áÔK€å`Åš�rzÂZ;jß@¤�£ÂNV@$¿=�~Ç A ÁïÖBBÈ(•AúCÕ°ä)ôío¹¶ÔVÆ„7ÿð(³,!·-˜)øHÑê %‹ oUÂDÁÚ•¤f•@dèL’lY–œÕR²`£�ÕÇ€qO@§l@íÀàŽ"� ‰¿>ey7…ó�Åñ†Æ30IÄ4PáèË@tZIjhËFrÝx:xü¸Œ¦ttl?°Ô©§&sEH,gÒ%Êo”‹Ð‹zXtç!m¸�¥‚£jð-œâdˆÀ2Ê¿ðÆqƒ ´T¬M`ºÄŸ¿k—S”cy -´&Jö †€=š�!| xº€ŽDÅ!žÀ¥ÐÈ–™+ "èe§üLAÞ; n%†1d ã^Ò‹d,ÎaäPºP)}²øŠÌ†å)Q9FlÛàT(=‹­Lnäº%ö Å�„-V�oA¯3€S©0R"Ç,³ ¶µâ2pª¢T¾ úµË'á©/m¡Æ×[ÕvÊTM�W£QüjÖì€Vç+.rX@ÙDªUÔ™·ÄÒÀV�lEc·¥D†*€âPeÔ¤„Á».*G Τ²!]H92 ² )ú @£EoDNI›´"iþ® “Îðš–Ñ]Gu[@ÊÖ­NŠþ<h®V\)Ë-r×Ñ3[KJm -ýôâÃâÕ«9% 3RÊA�Ï*W[Àkh`çÜ'ÌQ•˜ËÒ—„�†Ã—Ø©/œ§ Ä’”"$KéêÀ²/€)®-ˆší p%ýÐÇé†Ðè0¿ËCa-eC*ÿœ�ãG„"±fÆ‹Áq |ô¾T:”è$¶íp!\%Ÿç—[ ÅéçðEaA*„à´sH&@Ë%kÈp”±æ †¿ÒQ‘”¹1G{éÓ—är"Çr+Hô¹ÃÀ‰ýJ\nJ¬ªÀ¦`%ÅŸ„?aŸü¹Ä®È)rÊKúgÒÉÉ9„«ùìì¬9QÐɆIJ[n\¡ÍŒ“… Ø­ŒlºŠòƒY%4Rb9a�F—ž.JQUòEPpè©yθ €0)Ø4*WA�•h äðBO§íÈÐhF±ò/*r @Gœ×­bEÅ'3ª{H–å U”�q‰¥Þ…6¨\Rrtòo¤²ÁÎi…~˜ŠßíYJ ·Äà¹Á�h…×Od ÎqÛŠ´ F‘Äï*W’ÛˆÒqWNÿX…&“©¨É«MÇÍöN­-VQB}xe€XA]I0J®0X5ØOèzG÷ \æHô$¡×ãèÁÑ�Zº·Ù$hèYTT¾GB�dY‚΃K±;eyB9Gviª}ôÀ=:EÅjpL§¶IHWÞ©S‘ÌD_/%ÇUl›[…� -©ÉŒ˜pîáí)|Wð³ H@�p†9°Å24KpãrZ9I…(¨0›‰•”‘Q(~ðæG¡%#³ÂWø L × ï€ëX²ÏñÙ=¸=1¥ -áBÑæU\(.‡ŒZèç*™ÇƒÕ�™3à -Kç‚bAç<7\L/w÷–èJ¬Ž˜cZIn7ºf Ó´$M¯ €fDF­¨Ì˜Õ8*Ì:î¼vÁB‘`뛦^áã'�'ˆ|þÆú“ß�¤E…¯¼Ÿ<ŽÙÏÈ_ ­ÈG ×Jh‚»ƒ—‘&ø‘(;!?(K”Kr&XÏòì¨ÄléÎ/E/œ .jœªtyBæ©LÚ¨SÄ Ñx•�ð¦$Ÿ'Þbp�À–hÎÃÄÅ(>ÀÈùÑ�•¡Dþìlþ Q-rç\R�0&2÷5”ÏÕÈö"×Gnî*w®(®×fxfØRîá6À¾š”CÆ<¸@\ºÁA€¡­òÝ@ñ[âÜ“–)ZuŠ à\·›æ #\wÀÓ|Ð°Æ 8 œ"Ë}Hç »r¥ /$íÀ¹+P¯�ç€m¼ ŵ*)¡(¢ -âp=}¥ÉY©Àlm>Ûð6`{ðô� -4›•¢jšðIEw ðòÌrQhÛ½Q€HYPzbL"¡‘éc"7Ð�AG”’YŸtçYr.ï’\%Òå‚¶à§ÝœR‘ *ï^¾‘æ‚)¼Pó! ¤‚œŸð{&Š îÀŒ`ÛI‘Ã[KT8�úÏA/*º7Sp±BÔž4l•¤ËDÐ"ñ )¸k)èú õ”„;ðu�†¤$—t+àÊZh¬.˜/Ü¡s´žž w¯¦KXºèÅ¡KÊvê¯çà Â)] Ì[‹+{2­D­H¿ZƒŽé™¸ï,¹ck¾êTô¬Zƒ@ÎéJ/É \•‚ÚQ"Hr +t`züŒ¼ÔÄ¢!Ù7¬D)3š/N|–Æá´ò<ãj™ *„ GjÁ t¬2T€ûÈò -79œ'øv9iSoþðR…!«ª¦3n*á%¸¥°À6Öª.ðÒ É¦ØÈ%=î!@oCÑ'Sà•<-¶?ä˜ésX‚˦pF¦þ´ü+ë�öPà…8øí” -HE@çäk™7X`0ÖLƒwÎþJ÷Úpq‰~”Œâà4`NvôRªȹX¢…Ž”{Eü3�Ÿï= M×í¯D4ÝbØ©º[r�Ïàûƒ›uU€ÿüF\£WøZt;ZÃím7‡9žJ¼S·G±œ§·q¤N”À]5„?¡›/ŽQ°ó-JÒ˾“ŸI.$—2|(’ÌaL/dÇDJ�–=œ%˜…p;|¬ �“/D°T¸ `M¸0ò7&=Pü˜Õ9Д¢û;tºá˜†HÔ¡ŠÖ*!‚§$ÏgPOD�Q>Á\¦ð;¼Šå¿Õ+Ó´Ÿxé ] ÐºÁ�¥Éc¦°ÐQ�¿ûH‡€rQ -@ -d^ȆSê× é¸j´\A/r”œÖÓHÄÆEÈŒnñ Ð�àwàšîú€sY¢ -x‚àW „q)‡1\T¡j£à6ÔN /Ña\H–cÇäÃÈ14”ù¡ô„Hz˜×SéUD 1Zi_èž”¤Qƒz¨JÚ0¬Hn•Bð«€ÏD —_˜t é±#rÅ¢Q@”n‰u=0MAª C:$½° Â�à†� …C•“×·"ž(ð¦´�×~áYPçÅ÷ªBB‚иeÍ9 - (ZÅÐNÝŠ],‚Eä.°zæ$!“€Àc€:ëN&C�¬BG xJŒ +3`¤›DæåÂJt¸�"ÃØ¬¢ó¤Û‚‹~ÌYàí^[‘!Ì2ð‹RndAn z?þZ"ÐûÚaF Vd¡? -�9y|§}tœÌ{T×q=hT£+5?ÍiÅ$×ïƒÇ°ªÍ7ÿÀ²0…ä1#œ£„ÓXA(ÚOàˆ3. ˆµz¸»Ÿµw�‚�÷×*—ßTœÓ‚Ø& ƒDInA 1W ùivãHI*ŽóŠÁ‰…«;¸ÅÇ:Xpƒ×µ9S5º- ºŸ¼–‰‘Ó z„sìWTAmìÒf³7­X•ª�Ê3µ£)ps�³QaZü²Q¡–eÏFEyÓ´<w «[­î 6@}¦Þ=^]•”%Ű£)ÉLR„ßKb"pb˰� äÚ2(“ÑË„ÊLn¹Kó„Û¹ -¼òÉõ!`Øg>v—Y�Y‚K¡O¥òŠ—y›0UÈü‚=³L€B)3lŸ¡™\ ©Ø °U?i2Ýâ’òŠ\Ž!ÈÝ[sÍ#�ù…1«Š¦“ƒóÎ�{n.-„Á1˜W´¡Œ/´ê-SÚƒÓbº](tÖØí÷Oz{�áaë¸Ý8êïÅqÐ_%*<ûZQá @f\x”€1AÂ\fÍnà -4žïnà×÷?÷{›ƒNod‡™›#0�ǘúùþRÒ_6»'öß;-§fš{ý�vcip2x¿4°”Þmã—ë�{Ìß/oÛ–æ=l<¡âýZ«÷ßZÉ)cWÓ#ü - -ÿƒì%=±ôÿgÍõ/ ­<µâÀV]³©Þdœ¿ñøêâÇa­5‡«¬ðüÏ7Ô¯8à\v .ö[฾»4pØÛs¬÷kÒá$Naçµ<ÆZ,P6Ïz½ÖQ{¯‘/4Ü?€©…¢K4Â; á²?ÿE4ž2;fdµ)QÛº!Â䀔®Ì¸51 øÁšÙ ü-à±?mæà˜†ÿ�9÷¯¹§1[Ø䶃6¯øçöo®uC§¿ -1þ;mR›„+>k§¾.áUô»�Û£?ºíáÔ£^ÿ·þbÕ¬™f¯o9îÂÏvÿ¬ê±Ð´*دm÷×…eVÜÖ:]»hoɲÓkP‚ÎÒʸÉu«/<ï ;Vó‚Ç{صv?ý‰–ZÃÎn4�~oï¤3:ϧ7§ ›­ÁhB/Û£AÿSûü³�ø‡îÆ€?´=ÆêªE`´ÕÞí[iþHÍ� J ñðV'ÍÛž�Ö,¶MoOá\€üÄÿÂßd‘�sìesòÃ> ±üþ öA«—{vbíýÆÍÆTc&šè•78çFŒ–¿¿Á5ÄÒAb,mìïÛ£Yœÿ)ßóºÝÔƒûƒùÖ±ÕðˆòíGm¦Í™¤Óƺ¥ÓÆê>¶õÓÎè¯ìÓ̃ްÆl˜=4 ËØ†ÇÝÖôëì)[�ZqêYcþÏï‘ÜJpZ«›ää-¬mÀR·m ­óïß™dŒ�…¥[òœüÄR³ÅË ë =œ2ÿoJ�@ _ ÞÀ|6l¯þÚîmìí!yÀC§?íã_”ïM-íX¢�qÔ*,{�¶5Kšé\„ƒû÷¼õ]ZŠ�ìçðÝi"ŠoJ#ÿšÙ¬S²¿þÿsÑ¢åWDËwâ“çDÄŸ:S «¿·wO`øüv’6וù¿ Ñý_W]6NFEw�J -+8€›[‘¡‰XŠ\CÉMµ¥!Ç‚€P‰Iê�°M)A¬u÷§ô›ìZ¿q ç‡vó­e_þC½ùA$‘8“jép2½T³‘ͨüÍÿëôb¾…6ð/Tü¤ø¡O"ýêðßS‡Ë\ÿ£Ôáïášü[•¿NñáíŸÛeÝ8¿Žxæô½ƒli{¥5 -‡ŽþþpÈÐpÔíÍÛ@)þ±7:þ×;%�æû�§A~]ßäÿ5Áº2è7¶[{ýß~HÖšdý_:ßßAÓ%®›PðYLR»ùVg2wNOÃù¤•ÃÎq«3`fLÜù×ö`4™þ=ó°õ§9iÀöp·‹“4^ÆîµŸ’iöÿÁp 07�ä9níL9ÀN÷d{ v‡ƒÝø÷�no/‰)=¶7·×—Üg¹{ކ[Hñ(�Õß�[–Ã.µ÷ûƒv#ñ_}çÐŒïÅœO@ ûÁ•ÿ¹\ùÿ¨)ó…� -�F <ô…LXôÜ -’†TßȤy:hõ†–©}-->êð¼6�g¸ÃÝV·ýüýf{°kqÁL2úÓý÷k-¨¸Ä!k¬é÷…oFÃ$�mÐÞïZÆùjðåì„aïÇÃú/ðOë�^{86æýhL‚ú£Ö¨ýL3‹6G�—wz›ýΤ%=Ÿ´$îh¥}0h·kë²b Ôù� ÛÃî{'GËýãN­éÈí?y:ÍZüA?ãŸä‘çs‚üw_àú|‚àGüá×–b*Á¡¸´ÿUP¿ 6²ý—?¸âqùƒ0¾7a|qù?&-Õ7qü• ç \%dí§ILCÒ#ÏA©šB’�Y•ßêÎìcüÁÿk¼E`‡ìå¿ÿ¨dMò—ƒ&.0�ʼ¨Jõƒ±ü`,ÿ -Æòã‰áw`,:ÑXT!2Y[ÿ9/TÁ+uD¾!ýü/ì~Æ[� xþÎeì߸úþW^w®õ»�ÖAûý½í—žÿäKÏïH)Íú£šùÞ 'ø,ˆº9i -®K)”Pzª>¾mÃcý?€,ä -™¦±öun é[UåPg -× UÀóðóƒÁ}E‡ÉW¶HËm¼üÁä~0¹`¼Ýÿ“T|7“T}[“TüÃLÒïȬ7- míõO?ôÑ8«þ_v:ˆój´ž'ê´‘“à¿«¼~KoÔ?5yÑy÷4Ãwc¼�„ÒÍVû˜é  ä$^j…Z9$.7?tò¯Éæ1c¹?èµÆlÓ¦5ªd -_K«ªuú'¯Ñg^£ÿãEÖ·z¢?‰dÿJjô‡‰òÃYú ùÖ m�tGo#vµÝ9:îzvuÊüwiŸvqÓrÉQ´,±ÚÛ ¥!¾X_bÓš>Ö(Ámîàë$( K¨òRá™”�õ°ÊDî"UgÞÄe®ÞÎ".^þgªŸÚÜGÖÌ‹ÃΨMû»o¶ìÆ[É}e™Ö&G§›Ðj/T…’Pß �’•°‘Uem„¢È±³åǯ5¶Ú{®?U–‚«9(;®Öµb3¸�ñŸ¼jw»ýßø«Ò*FÈr]`ÞÝÊ%N'Ë$ÔŠ…sW?…²ôú®îYK³çq£4NZh,ƒÎ˜œÏK©È¹Hˆñ/ÿÑrßZ¨ ·-7Tt>SºÂ:Yfìÿ Û2S⢲ˆÜ›Â#;\êž´=rsçÑ̈Dl'9V0¬ÂgxS…¸ñO5Æ’aæ– ÛúöáÕí°\4¹¡h¬¦/-7GêŒ0¡àÿ  �â¸+bx:“Ƴ‘È¿-³‚âÖ0½ŠÅ‹„êCó:0O˜ N9Ú`ê4^º±¯±K‹� —.t,µÈƒhˆ¶ÉÄ Ðd;¶hS² U"Áee•¢$ãH®+¢4êR…¹*Ÿ{n…ÒÑY†3ÃÈâë09jô” âÙŠ0[“rWË[íÁ†m‚‚åÌ]Ý Úk0"L¿å2^¹4oxXµ)�SX¥Jê±pÅ¡<Ïá*QÌaåºÔ 2+A\kK¸ðJü!Ëí~©Ð„Œ0N52^êXÃ\µqËve„]f¶¶¨UnM®˜Î™okb³D\*fÆ‹ª<‹éÔna+·G3ǃm�cU* -$&å¤s�[x`¹gÀCŽ=h�[Ë&qµ#ø(�YÉt‹äZ¸ƒš#FL'6°ö={ g:£ÕÚ©cY;ËEK„Ø#–¡ŽdÙ~�gE“ßt8d¥LµEB´Ê.ÝÐe••L‘Fa5TQ +ñ:†ç2¨mÄç±Q&x†õéÑ++Üò²ÌsdŠÊè¢�1”H¦FM}AºÈ�“ìÊu­EIªXnéǰºZ�‚M[Æ�[§¼ v,1«S\Džñ,Dz®Š«RdˆOÛ¯Â=Ì+Q"©ñò½Ž¼#:xÆ÷�)¨kJpƒ6Æõ™‘âºQÔWÚ8ô±1hõ,œÕû/õRkúYkíA5�íO|±�¨)ïÌ' -rÛ>9¶¦5dl£Ù6žwz`Á}±çÓ¿„�Î í¨¹Á}[üðOyУÖ$gî Z wnóà+XƒÄŒ�²ç,©¢0èÎE©‰Ó•™!í'ÏQšC�a‰ân+ß«*­j�#P�™ Ç2QŠÀ)§S �Õ„nK2J%Ñ}m}Z»ev9i eFÀseÅ*·&={¼ÛÂwk¹„¤�-šaJ O$=¤"DbP�\b12Þoî•uÛÖIØçm9…@µDÐé5^qfЉ�ЏW�ë’¥”¤H[…•JuGª¦cÅyÄqâî‚İ›œ#'©¬„G›ÚZxÙ¬…£(o‚¤ãŒwèµk‘W%í‰UJ"G«Ê’¢^:ŦtûTÒ>�w(½RSjÒŽŒ�ަ´bóÚmK$Ƀû3‰æ]V\IÜË1‘+[Ú4lzºu²'ƒÿ;a;Ü1]tGá þ}WËí ‚¥–•U8s½u‚Ì?»{¤‹Z™i¢y‡ê³¤¢…ž 3Þ±¥¨Ü ±Êv“W¸=œEå9AÒG柷_þU ƒJ‘¾aUÑB�WÄê¤ååîp"Db|Ý•U�ÒËBexìíbµ!óChTx…C©cR¬Ý$Öǘr_YÝ æXZ3_�h1)H+rú€tú]r6ó =n.y¿¢sþ™‚µë�á(v´¦ù¡&^�Åx%©K9£OéZ 4s�â$þJõ]‘½�Ò…C7ÿÏŽ5èﶇC;ÁݑպPSøyÂI÷�#ø.—Ž:½Ö¨½× Eabt:G�Ç­Á§aã—™ß:£ÃF5·Ýíì¶™Dtvvú=ûýö`§=hÍòø>0�~ú*ñ+ýÝ“£vo´Òµ¦¦ß/¸ß7ð·È-?áw{¤ùòÊb¯#¦ßû{Š#|š - 9;<î�j­ZÝÎ�@*s�7öŽ;ós¯Evû”CkúýÍÆLóA£y2ê7¶ZÃQ{ÀQ6Óï}æ¬{ÝþN«»Õ>>éºlV8 ýu©ÛnïmÃzÞæ„¿>íG[xùxýçþ^{"ìt~?êöìŸçZ£Ñ ³s2józš«¾ÐW߸‹¯ÐÔj÷°ÓÝ´q.Ñ¥û+ükôÇ1#gæroøþ×Ö`x3*L7ý5 áÃSÚÁó ¿ÃÜðú?;½~¯}Ätû»ŸÚ{çÁŒkù•ó¯®k§ÓSDœcm–8¶Û£Ÿq_^_Üú+mÿßÄ„8çZ§µÓmŸ‡ð¿¸«ÿ¤ƒ~ã×suhú�)–·{2õ�¾/'ûvtxcØ‚«jôöˆ�—¿ù¹Ø†²«ÿ3Sù7œÒáþoÿÃÒø;ƒ!hÐÿð]ÖB[ÛÎøÌ°§­õ·Î¦<ÿâsÃïË‚¥´« &Åi«:lƒò~že¹–ßw]s2oZõÅ…ýqž5ýñ½—#+ðå™/-æ÷sq–ï½o™ž¶Œ�þȪëíýÑÆ cÍåó¬jü›ÿñ�|o»2Øm/�å»Ë+¥¾÷ŽÚ£ÖžU‡þî<ª¿9�‹{ìt9uE�GJó� ÷·Æ§ž5û'£ÆÁ r|fÓΰßm�Ú�ˆ’äJòIãªqÜ‚ë¡aç褋±{)ú¡Ek0Úé·{�Ý~·?H�üŸ9·,Êvÿ°sêìÙÞ¼ãFjYžÚWCÚ™�œ·éFÈ�¯íÀÒ¹1ÊœÞRDøbÓh_lë' r¸ûw-� n¹Õûµ5ÜöxÉþmÚÃöà×vãiû÷Qcu¯3jítº�Ñ“>¨ƒC0³uÒmb†è&±Òw[<æ¤øö<¸Î¡ò³^gמw.ÂHþ‰Þfs‹õ"]ΛÆ\ …Á·Úݧý-'²Ùv`UøWɤ -¡PçýFÔ˜‚›."Ž—ðæq{¯srÔØjÛÓuÂq°õµà>z‡«µ>NŽk]xØ³Ç 7xÔˆ*9=n½�e4}¡²ä‹�“ѱe g#´'ÄñÙ­·z'­ƒvc³±Þ‡ö`xÜFRºgOøûµn¿? â;¼?n©÷‰�ï…ãÍiÝ-¯µvÛMô¥ÓöåRœÖ14�ú-E%T§ÏúwÛ£–ßqžRyêRŸwÚ¿Ù-µ¤ý©ù˶-u _vv7ýýN·Í%-=É"/ÎÚÀ0¾çI¯ðŠÅ’upË›³Q´qÜÚõ,MLšçêÑN{ïÏÌû�bòD7WÖ`®–b¦z:Qb¯5ª<}m¨ÆK‹EsÖØ÷<ÀJðn§×nŒ,�wGú´N—ÛÝnq�yÔc«7ê4ZÝN‹uÏkKfóY¤yX<¬�t»îäsMû×q)4iªC*8É‹Äs6ãÉI �ÚX‡{º/!‹ØHB§nà`Ùª·Ž²Oïõ~ßrÀ~ï~d"~‘ºý4eUŠ3øÍR¢/œÑð‹§ÚJŒQ�Í¢@_B#éZó%ŽOÙÓ#_oò4¶Œœ�ï·�û£ePZ[éÅjBÝ’Ø0ÛíîýÖÈ’Ðzß -"lIÇSÚÚñÚƒ+qËøÏOÁE£žƒnv[½6>/ÂÓ ¼ÜŸ‹9“�)'c�´AÑýµ�Ûþ¼Õë -ÝF²à´Ññƒ³F?�Nÿê´#·Ûí[e¼º¿[eòÀnŸ»"è�Éýs¿ÒõóN«¤¾w-•È¿ˆ�`8m± 9mžÇNUíÿÚÃ-4O3Jï�pßí“«4¬õmÃ-�ž±£ô.ª/Ko�ЧýãhÛ0 ;9Ç÷“öýÜXJgp*ÙõøAo¯ýûv{·ßÛû“:‹_5±‡xá•9ßîú.ê›{îI„•�Í⼋_ë †nؼ8ߎñ•þø–Ý„/ýcÂ窿5Lˆ¸jôú�f�60œå>YÍ�ô{Ùh>8K§OÅ4D6€|n‚|ö¦x|˜Ecus›5øŽ"YŠ�qÚ!4žÐ£¨w¸Q?˜Q/¸„ –îÛ±tkµ i™ÒVÌ�RÛ†<½m¼^ìöŒåŽ÷{ÚL“ëëýM„-]¾»…�ý�ùck QÀN2ÎX3«ÕížÝjø©s¼c÷)=-õf«5 †m˜Þàì–»ýn×K‘™q´ÞÞy(þÄŠÜ'ႈ½pböwôöû�DjŸ²_O½ŠûåSE_žóX%ôFù–'�}Ï@ ¸�%ž‰1œ GÝù=êQç¶î »Ÿqûà<Ï7Ç{GöÏÝÞ¹'u¼wîÎéžÜ1‰úŽ�ÜìôÑ¡ �Îjuåûz»è†ªÔò´Vñ…�(OkÕ9²‡v¾ÛÞ?gËQŸ=%~fËA¾ÌÄÙmé–€qniÍRç^cç�ÆÊÀJ´ÁÙ›½ôbbh·†µÓÅH;£«~äÈ9£³Z³±MÇVè >›uíµ‡�ƒ^äm–g1¢¾Ò8«Glˆ~‚s´k w:££Öñ¹Yg²ã«îæ�¼ítZ «ñASˆ’u[Ç_Æ·;cîÇGŸæÛ=0‚Ïâ»ÐjèR]|‘r±9ñép0Îó�%ùd·á™ÌËÉœšZ¢7åE“'¾®�/´Ùô�¿Ð”²ŽÕ;¾Ðle£øÒ àüØi †gìcX�å�‘x9GãQ¿îK?½m$còS[AØx:�s4öÓ8GÛh“NÑ~o4¿×=›åQ›ãÁ~¿w¿ƒfÓ�aÍ[�Lmhê]‰wq8¿Ó]ïÌ&½öA+Ü„�Òh·îÃ>µ�7½³ûêŠ]ô2;ßîäýÎ[VÙoŸ�%hÔ�Ï¥gçæ7fboi«bŸÿýx>ñ…àüZ«Á ~dNiyPoyJ;–‚Áå=‰¾B;ò7ŸÝ²Û9ƒeØào%ò) ûÇ»gpl0ÕT;Kã$UsÂñø’,ˆmˆsðì¸ùDƒ,éüdØ^éïâmÃDã¾é><ż7áòx³ó{»»Ù@ÉùtøõÖpäîϬDÄÝZ“ù~Ï•í€bõtñ}ÖU7}�¶sü£$Æîº“‘È«ðg‡¢¯Î1ÖŸ½WW�%r[l)7’˾‰~UŠë@_ìØþl·~m?¶¦wç¸Ûn¦Nœ/¸F&‘q§÷©;Yž|Ü®´Ò½O x‹Q §TÜ\YcÏ ¨“ýã¹S÷éÃþNcƒþùwŠ"uÆ­&݄̌õœe·°ÔqËln/?xPš•6pø£¾»qù͵[/n_¹Ùzyý¡º¼1·´8¸wtxã wááÚ…ë3W–;­ùá¥üÙýÕüâ�Åg÷î<Öwo¬ÿråñâàd·X[•�Ëi»�³l¸òqåàzviñæ»ù«‹·®‡�äÂÔôâÍõ ×èáhéàþ“õÅ[º½½Ü¹}gwe~þÊÁØPë{¯ìxÅÊÚô�âõ½ÑÊÇ·KúõÜõæQ}hwvtxíN~ñdmE_z±ô±{åÅÔôÊ~öpgbg—Šj¿xþäÍ/ͧËóÏO4nwãíâ­Okoo ç�®­\Ÿ>Y›¹··?5�ÈZûð~ãdeÿí‹b©»Ø}ycép´|X¼ :>\^ÙëŸoݽò‚ú±S.¿;x×·?]þ¼ò`ïÁ…¥¹òã¥æöÜÅÍáekïdjºú8smwu×<™Y>ÔïoÞjN«Ë×–~¾þáÚâò•gkËí“«wž?¼xxsw·õ ~ê\[Ý_?¤‘E¶Ð*�KntÞ=Ü[êNß½27¸öËIs}ûòg˜ÿìâ͇‡jj:¿ùüíb³·{åèÚíÇ7Š£_nwŠba¸¯šƒÝâÚ§Â÷¸»òpøÜ¢­¸Ò.^¨lïFgy¡e÷W<¾=3w½½Ô-6�h¯Ö§—ܺøbõze†v_¼É/Þ)–ûï®Ýz¾÷æ†Ü¹ø»½Ó›¶ º“_½[ò&‘?éžî,}šÍç˜4Ÿï­gâíÅÇ+ ­[—×.\{=€QrøÃ;ì›LMg;?=Ðøóµ;k·ø§[/VQóå뫨3ùJ>°¤û2»vçÎêu¹r÷à6÷óâö­›{~‡;é'lûÛX2<Šm´ôÐOàm˜€˜¹½�ÚaæÂÒÊ{DõJ{xWç¯ó�»Í§+¯­ì/<ú¼Új]¹´”ï<{RmN¿|ÖÜX^Ú\Ùßî|^üüöÆÁÔô’~õô=!óu¾÷zõ½¸ö|I¿ln¬­||ñ~¹ó1_¸¹4}°¶¼UXÞùP[{ý0^¹ýùèQscýꣵ•Ù½G„‡h¢}»û£ãù'×î>o}¦ÝÉËÖâͧ£ŸšOŽNÆ—VÃl„·/\WÛöäl,�¦¦W_ïMÈ·î®dk¿,*$�[n­­Xê¸zýÚR¿zWß«³ñƺ� ʹ{8¿(Õ€W}à0Û«{@¡‹öP]¶K»8»|p¸:,nî>Ûj¯å‹úlÞï>OúþéÞêÜõ�jÒ–TŸÚ�–§¦›Oï]³æNµ²´þêÓ¤Ùb˨ݽWž=4«2“÷ôãqÊm®Ínvo®­˜×òÚ�{榦úìªv÷×VWL±”ÏmUk‹·_ƒÿ°²£_4ŸMïÓv—›[OßtË�ݹ[ÈÑ‚ °£„¿÷f·–>ÍwÖnÝ3o½uµãÄÊ’ˆY‹lçduæöçAÒÔþj)yfTØéµ·Çþ^~¸vóÁpßrìÝ‹fIœtß4·?<\æ¿VÍ‹·î/ÏÛ&ž[.°~yI¼>yßÜ>yªÃ_±±åcp´8ؽq™v+>Ÿ ¯nÝÝXî[û3bçݳ¦º|áÒ*Ðô²¸·¼¾?ÝÉÞ·³öÎ�»âúÌò]»¾˜š- -¿.+\Æñ×|{]>�¿Þ¦¯ÝË[¢Îš·æÖ -3·²%ß¿>^…&·°1üº25í§·�~ýÐ(0^ÚÅ¢ŸüÿÅMl³ÙÄ)ùå6q"SÓ¸LZ0LªØ¼ÿø)Ànbga좎"7åú ø«ïo›Gñ_ã77á︌»•اGXìÜ|âQ°�øô£Üªm�Ýýt£&lí_؈Ú6ð(ô +ô�Ë@<¥è¸�« -¿bg~ä{æ°8q-w¾¼%4eüÉ÷Hƒ¦¿YXÎaœJÐxݯ*�ÊDdá,%�#ë6­OŽCÇí°fh¼1 ©µ“êx›0V[&âäFÚÅÝt6Ë~d¢éÚ Ø8œ:KÉa·’]½¨›&šŽÊM?ÃMÏ<ˆHñ|ö±Û?�ê³éQŽXÄž™Æ&1@\š?šŽ iKü"n‰sÜÊK1»�?úa8yø×ëTõ»Ú|úüQomñJû©Õô÷e,0ªfÏÊʃõµ�_ÝX»puÞJ1XWé¤ýÜ%«¹¬|Z|qñÙÁrçÝûÅÕÝOŸ/“(‹Ô 3Ú<Ýœ‰ÕŽk/М±¶XjÐàDWæfï’ê·ù`ö— ãk+»¸øüÊLµ|x²õzåÑ£ÏKñ‚–Þ·›[½•�Åíwƒ«Áv�D:Ê5´nüœußßšû°Ö¯ÿuá§Ù7Ö}~¼º{ýéÂR~]ÎEv£XÚ9Xi_]½t+ДžT1¬…ýRnD¦[¬DXÓlÛª»Öß'õl¬ƒ—Ú~6×_x¼õKæe5%«­›×Ç89‡išÒß4NÎaš°Öç)t–F&sbû¾û,”²;?¸Ï{ðlúëG/.¡ðºúwYhH;{êþ/+�–ò+v€Ù�¥'‹o®.=™~;BuXE1O±-‚d'4¿òàcÑ -h³– ŽÑßìÝ/žwן67ž=²änO'g˜ÈiFáóNž_õàÞR7?xƒÚÿÔtÐÿÇ'ÚÞX¹÷iºm�ד[àÔØµ?]Ý;þi§ª®ÝÔ?§Ý®Ÿb¤ÜºBæ^s»»xÍ~}ðYìnÝÝ�‹Ï.Tl©>½Ú¶Èú¤¿`ôËן..þrá†�ðû÷n÷ßÎÛåÎÛ³¿ôéñ5kˆlîk@n€aðn铼}!üÁ{vc福Á6=Llä|iíÖê/ó¾—bíÝÛ«×V{'öTÊéê¨$ʺ~iáMYì®?\z²¹h¥Å«£Ÿy¢'¯¦›O~Þ~¶¶ûË�ŠqÜ¿œŸNv6³õãùî½áF{P™Oemì¯=òÔ´'ɵÅÁàð™¾ñøÅ]àfv÷æ°î–³ýjùAÔ÷ÆñÒý%}²”‰ëφ’=xó®YÝ|4çÿðTžï4Ñ[½¾8øéáýµ«³×µeW/¬}s}¯g¥ÓÖÚÚûÙ ‡°Rµxkç]oñÅ“k—o^ÛîXáW}D:�¸ó˜ãþÜÊÃÁÕDcãsaõµôç7éì|§WæÍË(Áó¥ó«‚ÓñìÓMN¯5ûûË�a'¯ÂÜ›­ìáêçåZ�ç°ò£nŸ\°’Û�^eÕ—G]lrC”¬Î¿6ûjsÔ|ôJìÑ6Þ~ôóÞÊÞQuÝßÌOÖN¿›­,ß¿HÂh®áÎ<9È{öâ¶¹Ñþp¹Íxº¿¹°Ô�ß¶ÓíªSÓ4âÏÏÊ·«ïßM¿±“?¸°øyéÝŒ—X‡žî,×Í/M[LT@æ¬î,¼î¤: rì7h»³¼^?°šRñâññv*»©eqK­¶Wßmì¼·ºÉM`8û³«»×²_šz¦zbÙß‹’t^]\¼u÷Ùå•G�7KæùËùæ“«›Í­§×¬eqoúÞÛb铨Ī - ”Û +Þ¬_ec ›Xî|k{Òä˧—/m¯½¿xùÕʾÅ×R·¼t}åáÌì *7þì£&q0ýÉÒDõÓÍýKÛ‡ÕVˆn W¯]Í÷cñ{uü~éÝâóK£‘yÝnñÁ…|´¾¶e)Ù<�ŸKþtåBöàͽ[Ü…—¯è¡}üqÿFçÊ“ÇV¥»Þ\[yuÿꤥ%í̵©é›oûo~9«Ñó«ÅÏ»77jMn¶ßÍ~B?Ú�ŸnvV¯÷_ Ë�hn›µ·÷ŽFW¯@»�ŽÃŒQÑÅ¡•%�I‘¹›¿¼·üóòó»5ÚàÛ‹Á…7Vmþ¼e7yñs¤rWÙ¼Eï‹ã©i¼™°óö|>ÊóÛkŸïßZé®› ó&¾»xaeûC¹óÓ%c [o4{wô'Ñì ÝF÷¸z¼¿ š7V-Þ\:Ž5ožÙ­™ÅÁ\umÕª�ïWöŸ ­D&VÁ³½qm¹ùö`myñ`ëþ¥ÛâA³ZøÔœÜ¤yõãâó§Zk·VFÑl,'¾øÓâ�íƒÅòxðý’ã£Xƒî*î•¥¢ÍÃó®”Ô¼´—[÷º��®Ý)îÝ·òåó뛯üF)Ë(W‡à¦b©ããåÅçûOO¢¾ïäOVæ·öæoüüñS¤œÛ=ÍZë-óÕ‹?®Ÿ›`½.Yé— ÿJwá°ýîƒCu[Ç踿q²rÿÝp¸r}gmõÖì¥ég–_}^:Ú¸cÆéåÉOV|}z šÒM1cùœž¶ªÚÓ…•ý§kìeûGÑ |0|ûáÞôÚ…G‹ƒ‹ïF+ûýÁü‚­¬Ô<˜…»�—kËûwU8>l¿€rP€#–T¬µK/?v2i>®Ü»3ݶ*F•“v÷ùë¡ïöæÚ̃½`\þ<âåJûÖ;0N®ÐÝò¨«3³¥Ü|aµ¢{›bIY3ûî§Å[wŽ/ÆgÑ©Aö§½…‹ÙðúëüÎ3½Ú4s�ž£ã£`#œè»5ùt¢Lúim½·ºkzvä¹ù٠ȺÒ,¶¯Ù=xµÙì7÷g&�b1ÿ¨<­‹«=e7_SV’>½|á\'5!{Ú—Óß;ß³‘=ÄO{ÍLÞ]{b‰êC¶ºûj`Vïv�¯÷A¡Ë‰�î½ZìâÅ!k×n?|ý0ÂŽ•:o—ºÅâ%4%ø"3‡Ë…âê ð‹­sû·~¥± âñýÙl©Û=þP3à�Eb{gu'»u%Öà¹ÇœþÐì¶Úp+q.k²æV}´r}ãóžÓ”>�øYÇòG¹¼ºûSþÖZ2k«åÖýº²ñùþÖ:Ê7÷�._¶fûÇ<èB4€Ç–c¯ÎãfÛQÎÐ)n¾X½¶qåšE໹³ÚÝyl�á£KväµùI#OMû±_,Þê®ÍÆ:x½³íÓÏáÏËÿŸ·÷LOiOÀ,rF�œsŽ&Û&ƒ1ÆLØwg~|gßî–PB"ÌÎ<㪫ª+W5£ Å=¼8æ¸%ÜRÄܰô¡†Ru­tÁ0#О¿”ý¸¼€Gzâ¾Þ2“ðçGèúvdÍEG'E´7‡Ð"hÜ€=¿Zø3Gÿ6HŠ„<96[¹å)áŸî–¼+1Ü·Æ$d½-ú<-öbÖ»µ¦]¼_°Ža„4ƒ÷�4�¼ÝÌfãK€äÍSk~½HéEp€z@ O—òH¸’hÚãà\–Ö_þ,93³“v”ð;œZ(zE讣ßEÒ½žÏ½�ö ã÷ÅRùÔ×û\ 5,m<Ü †éR)¬e�ÅâŸy,;1fâ¡Aˆ�¾† 'í3ÀåßÖàÎýÜ%^<]žôâKO›.)€öºäNŠ¡ž½öõ7_ktúÕÀ7S‘ôÒãÕ†í§�•7úgÍ-Èú— gg 6²ü‰eMgžÄð±£TÔ�¶HܧM£Ø°�AÊלoÃ@ßé‡θœÏg­ 9±Ö“?¢•ë½õ~Á¹“œ5�þJu8=eǃÓŒ¶0!ÝÈñko¹ÑAð‡Å¡éÓøt9ºààÛæÄïty`y›`Ä!¹Aw /ÆB0l¯Ã`ߨZãÄ=¥q¬›hµ}-v�uü» v¾é -L–Êã.¸¢vø!�‡«;žM+i -·ÒÖ•k¶÷KÉ„ß^€ãW`/ˆVY�HòçÃa$¼ ¦’³D­”‡îÒeÂ�,©¡—Ãâ=4én¿�öêÊ|²™Àv•ö¾Ú€á8ú_{Ûµ÷o†Ã”³²cg-ÇÐ63óZ<ɊŲòý6¨‰‹­Ñ pïW²&€Îú·Œ£ï_&Ý]ÊÁ;ýÕоL´Ò«÷¯4‰E€nlÊU˜ÎÇŽb�z™בô`Õ×ñ�©õàÎÙÈ A5R_ñ¹#]øIuEW>N6>tYs)éçR³oyûØÁ½,gXAýÓ“™¶2Ž3 -f~ƒ‚C~Ž Ög É[ÙT ŽLás¡Í%˜™Œ¿í‰ßVÏŽÍÃGºˆ}âÜòÎc�†¡B-ÿê öÚS°—E–ª1Ü¢ˆ/Áé1Ï&øàÛê½AÝ@Uh‘'0²e*¶ :›ÐPë�™Eó`¨¶q§´3ïúÀ² td°²<´Ë;‡‰Ö×ì×øQ6þN—FÅÎTe?òú¿ÜŸ )à -Ãëé숭L%‘ -w¿ÚY. -ü4‘+Km)fi¾šäEÚ*-áu±ä-Vè›çÊ9‰½RZ‰`¯\І¹õµ8,^&ûÅËñkñÂd]¾GØàðò¿¯ÅïËaòÿÀC�üò›]¿ PÓÉ~Ì…mž‹Ç9_Ú4$ø+ìŸíée÷~´ý}YÌWð ššn [x¯Ù_ÀdìOÁú_Ž[8Älñ²BÉ÷“—ŸÉ?°¦Ýd·ûYÍèòU‡Óì .¯ð›FƒÜ0ôl¿D'°ºí'7ýêðrú]ÃÖ¾Ne”>£z¶_í”SΰÏNÇîb -KB]?VšV¿ëë_esÖ¯/ÕjIòÓ•d)«µÐdëÐIÑ�`ÀÄ‚_'VºÌ¬æò{db•!G¨oÁ¡ýà ¡–]~eû»�}í·›Eœ]¶ZN-™µ¢¾Ú‰ Ï•õxÈ™¡185ÙÑEöV u)W@Âd#�2{áÎ’ƒC&'¦Ûs’’dØ?‹2(7 ØÆÿ¶û5ËÂÔì?1Ûo§“cyòÏb/ªç¤|j¼*_¥Õ¹ˆ‰ò.a§/ùM*3FÞŒLm©{ Ãg˜·œ+ì�2b sp¾«ÏÕb¯¸nu5|¤©¤&¦ï ãŽèöŒ$–ç±µ½è€~É¢…ª*`èV„ĸgQ†:9„�L<; â€KSÂQ)†Æ�]ù Eô¯�Œ"†¯ºr�Wpì9”•¼’y¤¦–œÒ¹0<µð;,û†ƒ—;¹Œf±˜Ù]<Ê3®oHÇÕ/S�’Û—Êéx¿®ª­ rþí+�!ýOU1ë�»7P�®ŽœÌ”J*1/JòˆHéGpšÉqÑú:m¦¿“Õ� -å€áh-^Ýâë†Z¼Ú¤çÚ~À·¼¤%Eш«Œ† -£©£a)§©â¢ò¥Ìš”kU*oÑžpï@gOè+$Ū“¢Ôµ‹d®¯íÿò«¹HT€ P”d·›üžSĕҾ0 Ëœõbr„õ£Q*íªå¡ìİ�$›Ÿ]™ -U1lßÅ1£;ÿÖâÇÀ*[ùø×_럾²Æ\y÷ï¿ÿb˜eœÆ0«I‹aæ¢Vcð{ʙڿÜ?`ŒŒï¼ÐïáÛVÂ7Xþ€†ø£õç’ñE­ÇøŸ{â�ÁŸ¼0™ÐÛÌxV(·!ô6IùC1ø¶F¹õ6 ·3ô6áoP;ð¬…c‡þú÷'xe‰À·-�!gr&ìàµ~Iûš3¬«xe¯Â_gR«CËߢ…zÒÎWǼpèi6µØÿÁ·møÖ‘GÿÌðÅü x’ä×t�Þ¢½Àʼž ÷<›úDþõ¾yw_™i ×fÃéSÂI•cV*érÔ­¿ƒ!›IZIkó 3ÕßaÒ„!]:QC2LJc@À·%tØ™.P2­âãñúï¿Æ�~÷z‹«¥·åè¿‘Ì‘t}m¢¶óyh ð/:bxxíOæð¬ë7úCÞSý€F§…p¶�Їà×àã"ئ©4¯Wçïjƒðtj#ð¤ðÊ­Ö‡°%ÙhÆüÔGÕIä’ý·×Äë°Bm§ÃJŽS+O #¬³Y°ºÑ[ÀÓÄ -k*n¬�÷ÚXçô­Åz[{{E¾À,½¶6~>°qËcǦ�×&6ïíôØç•&Lú<•pè+¶®Gÿj?Dô]g0§ÿpuêúIP÷®ÿ¬”¾ôëñá¤ßsN:E4ƒ±W-l'Ó‡�¨N~ ÞcÂfW�QCÿlr_�/C¥±š>gÜÐ×{†áÏúÏ0ÿ^y ߣqݰûœmŒØ|â6šÖó†ÑiÜìŒnŸ6d Ö‰wc|•0k Æœ·S2Vzë_cËh�ß¹©q‚¯ÜÆåÂónüMw�Æ“ÃÒ5]‡É±põLîÎÀi -5B¦dië6j͹©þ�™º+óÎ4<}ULŸÞ¾Í´)F¦ã:üÏ�`fçg gö¼AsäÛ4g²¡ž¹¸¢¹õÛ4š?>&3ó¼¸+›’¸×|L–´Sr1³¸R¶ºÅW.G-±áÁiÉý¥–ºs=·ôŠ©®e¼ÅJ–U´f±üýø=VCúÏfußuVï ýg�åÝkkžÒ/¬ ãvbíoCëôgòa]¯ïÖãvôn³X–éߎl¡¼vjK�ñO[Õžþ±u+½½m¢=lß¿ÓvÔ¾ú4»y¤KÚÉl¡j;¶ïöÌ!»²×f�½?¨SöÙ˜ÊØ7Óuסým­CÔæð G¢ú×u”~>·ŽŽçƒrŒ?ºÇÚùúå8-ßp§-ù^qz�Ógükfq–:殳Së�“R;ïü)þþ¸´E*ìr¼¾N]þ¹ÎãJ�òCW-x¤\oíâÐÑãú«§¸ÙœãT[·ÆcžI/ë:¼³Lwñiƒòà¿`^ÂP0—5‚¨Z\D¤iù" -¼B´·>’˜©-ñ›¯wHÃß*A’“�Œn3?d)5ì“=«3GUÃGþ•u&Ê’nþR^·eL¥<ã6U÷%‹Ô  �Sßå¥ß­íÖp�Áí:¦lîHØgtû6­»gÕÝ‹¾þà>PúƒÇ¶¶=�®OëÉ¥ROÛU³xfŽ%îù³[}^«5óú‰qÞ›MºšÞÖksä�þ˜¼�¾Ñgýp{}Ë< î³Ü°Ôóu¢äÚ7ßo­¾ÃÞ-•Z×ÎçwþR*éö¿ECUÿªÿèjq2@.Jõ@ÒØÙ™¯p`¼Ðz÷‡íAëªß³Z ð¬X.Ø_|í‚«V$­1„ô¥ŸmÈ�ÊeCé´éj¥åм[4…޼ÆÍ:O8žú^…ë_³Bxâÿ°„ÿ>߯G¬ŸŠD­sK¤:ùšEF})²+z¨¨=WÚG#éé Z-Y ÑÑ[œ~t·ÚcGj‹V÷ƒXmW®Ç&Y{:¶ßMqW-çŠ'|”)Þ4°ø|³Þ%°á`� &ï«DfÞ_&ºËîgâÛ4ùJšÂëïd qÚ$K;|Ÿ&sºän?³i )gÕJ¥d9šj�ÅÔç4×Ië{§yÚW«ÒÅšÓ™t¿éݸÒ̸ŒÑU&é·Z2í,‘YY7ý¬©û}Ȇ\_�lu±ng§µã!‡-‘œÇáæ -–*˜%70Ì*¹?›eŸÇ¥T>]߯ó½¯L4¿±þ, öV)ZHX,ß…öû,UøäöEˉ¬£ �­Øl} Š_�E´d®½J‘·a§4ùà—«cÙìß÷Ë‘™ÔÊMSÂZþê¼W,Ö©DWÉT¥Õ^‘•ïd«Ú|˯j›y¯v=ºjuþHל•l¨–âdí]{²×þ2kS�üšèê…ØÇ©>:� lðyjø³[m£04†Æ§Íky5»êøkŒúö½vü®Øë¦Ú.6] c»™s½N›Ãše×´¶–¿ ·êAs­µ<~NÛÖYG×N¾—‚í·f¼ÑÞ·BëŽg!:•¯h¥óiÌ|w-ɦ[cè&–Ÿíî›ß íî?£™ž7?øîÕlæPo¹®Ìú¶±Þ×OÚÓþà�ô¿a“Õç[ð«{kÙƒÛ·MÆR~'>Ö÷µ¾Ï‡Óè‡%2Ã>R†ÕÛÇÇt`§Qc„ªÁé Ýh–ÛÖ�oèžxuÃöö9\ù¬í‘³ÝÎŒ -fÂ7šõ¾lc‹»p§~‰õxø~œMô…éÇ$ït'oñzsr*ÔÓÐk½>íÌ;õéÞ:}�ù«ÇŽÆ0kˆ÷Ù¶T˜Ì½öå÷¼1Ã÷óMçݲpqÏ¢yK.~R¡×O*ÿ7û¬u{§ÏõgœZR$UXÖšÆÑr}Øb_Tã7ôUwm:_?ëý~åþ°„V�vð}õ[-éóÛ[Ÿ¾›¶Í÷nYˆ¬ÆŸùº“NøÖ‡ïÝä'œiøú'b±Ñö6ÑM<ÜÜl†d¶øk2L¿ññ;sá‘­Ýçã^jÒýiL,æØû@4) ì…¨½Jî�ªîïô擞ÔÝdz¥p]r§Úì&`pWÓ �Aj¯xv»*ÊNj¬Ô9¹Ix®¡{M -f¡\í↵«Ó“úv¢I¦Üˆb&í;Ì¢I=ëæ+=iæc�LúÅË…fÓZ/öš_ÿùÜɘ[jR¼¼ù\ÈNê¯d†SѤpfÚ!^û©5¥'-™ÞJNçv/9i³Bùd'-çÜ%7º+¥öúîÆ[…¦EfÒÓ±Yνû$'íàÇ•hR4 3mkQu}ÉMZÀ;CSTzÒrÀÔ1cÕ˜ä¤]GÈu²{í&Ì!�ܤ+üÍJOZ-,¾±™ÕÌM -t:nÚÁT[‘�tü1e&ýˆáÃaÂ-=iͦÕvVÀÞ%÷:¦zfÙIµý¡Õ%=iÃöûl} 'µ¡IQq8–+ÕȸMëÏÀ¤Á?1W:¿fÒuÀ*šôoäÛìѤà¶7ç;µÔÁé·Ç œÖ~Á -«-—¡¶ª¼‚IãñN3ÕÎLzŒÙDŒÐ€ëG4Ñ�ƒc°o1>ƒhà™L; 'u^²BfZ˜}}0iö$¾S#.G—ž4F”¢I5m«Ø¢k—Ëqêø‹‘©ã NŠ_ì´C}|÷Òa+˜´ˆ‰Á»ßglç;µ¾¹�.02Pøäž‹ŸR³‚Cö©-ÙþH==sþhݸ—ý5ž Ïíç§Í Y Ï¿ŸŸv.Ø{ùµ5b©Rêù|<“ZÁ~– -OÝz'÷ôbxí´þ–ÿu³(<ýÊ$¥ž2Ã[¯Ûšì¯÷G;y¾ÔrýKöØöý�Ÿ~ˆÉ ï,S'b—Ï»úº^á©÷ìð4ÿ•æž^BìÍón“ÿõ`m®É?šÝ=©§gˆ —Ã…ì¯Áõ�Ê?uwù§çg[bD2àvË?­F©­üÓÚ_0¤± q·Éþ3ÚRžóÓÑ^üT_‰®ÏO§‡ ˆa$žÞŸïDd3¯¬ -kDO£;Kx¸Så—a=“×$ój\Œ±ºàc‘VzM¤’®b7­[›é˜­Ùò;0ã ¼ÊÕ�†iJe{Ù9§¿�!t& åYçZE¦pˆÚ àç±W‘<¶×’¦HÝAË^PÓáA"ª£LH�EÌê9}Žáº*þ_P={'x�@ôú KM -4‹Ó8H.R¤éÈLêÕA=g 3iÿƒ›Éc‚½j³;J~R¨çÈN -õœåyÒÜ7)Ԓ˜…¿WwSÏpÝCò&��:x¡ôÏNJ &õ|Aéÿ‡“ÇøÓBä'Õf'NÙI‘ô/5)Ò’€Fäÿ±Ô^!€G -“æô^ùI¡ôÏ“Ç(*A™b"7é«x«¥ŽÔ¤g>e -á©êás;ûÊÁˆKÖˆKÕ÷¨. }¹oâck0¡bD$jqÜZnÜ<«$\NRª˜t8³L4�ë¥HS /@ÀPbsYÔž±óþ¤Ö«¬7 G£?{åËü¬‹-¹=TéU€Wih7È ™E¬ Lß®ƒ·FÈ7NÖó´ÌLÀ[Mݸ³0_jÆùÖ'Àöð¢Ç`àþDwæy‹‘˜Ñ8á‚/ƒeÆÿè¯l‚hÁI�ÁõµH£?::V)[ØÁ{š˜èMy€$ÉÑŒ�ùc¯lEKÚaèEe²‹B«!ìmÂÿ¼óm.Bs yÌœ)1 £?“^šÓ«¥öGéC¥²òþ4Ì6¯� I«âü }vù:Íyg]ŒAªúFXªÏ_|/:~Â[ì°”;¬»*�]sXÆ-‘r·c–ðF¦1+ä|ò¸�ö"¸óÎåFȦœïj9²) €Å2šõd>¢V!ëɈY»{YÖCK}—§Ñ·ïd—,d=‹ºÓH e—°Ë@]º  JñzF'àí; ;³ ì†rpJ–¤Ù¶ UÒö8‰­9´�l #›‹•k [Œˆ†ä`¼c)L¼«ó^è?¹’‘9} ÞžùH;îÜ“3H�ãc:K†<7Â?¯²Ç„Ú¾,Ì]y`”n餙AšHÅuÞxðO“wdò-P¼i0YªÓˆ‰6gÒ]övº“^ë”Áâ;©¡ææÁ®<¢¡à^s=g“ ĈgBŒ|&ĨG6É\ˬÆ~©¸.óøÜ4É<"ÓkMö`{µª„4;Æ0ⵆ°¥©r™Þñ�På1¦¿QQFþXIè%aCß/j¡cT­|aÃIJณQ[¥² )‚½Œ$é˜O/²Ká/D�Š'Z«‰3K‘$ÝÛ"’-áB$dËk0¹B©bÍp¢=æFxEå‘éú�Ü&dtj2§÷Pê3½§x«–Ç[&�3j|8ÕZB†‘br28ü‰ïx©%AÎuQ3š[6 ¬p«¥LvG³ñ6}_~T¬Óª¨åØl<Œ$п®ÜÈb¬•‘ä èëlŸƒTø§é¯'Å`,œ¤â#£“ì?ÞhV ç",÷s€…\ý]y,‰ŃˆÀ)}`w:Ÿ¾’Ö}ݺ´) -­g²%[¥šõŠJ£“,}Wż´…D…IvSÊöUšIÀÖÜæÛÍÇK_Ë·Û}œ8•mˆç³¸aC�?JV�–²ûHÞbEäÜ}ÐîÀò4¿)ÚúĬ@ Ñ ¡£`¯ác2Ç Î¶‘0 㺥w%¡(-9^sůBÅÚ6݃°Û•xw¥ÌzTÚbÁ†I#4†›.B°µàãô²+ ï@P+ây¬m D»âË–*­Ñ¥‹{ïê†X‹¢`CâKïl`ÜmwöðÞ¯ -€.ºs$$”fe #”e¯ÝC’²ìYR‚Î*aüFƒþL%Ý)Sl44ÙõO¤À1¹å9mUë‚„ƒUPlm•äÉp°ÈñA¾Òkr. -Ež¬l‹‡§¦òÊÓ®�#T$ï[ ˜åa -D«‘ðTp£h êÇ9ß|·ß{Â{ &ôÞt‰ -ÍâÐÍkFò¦€[‚O�Ê”£Ö„‡â™ös§Þ³^»/}|2BŒåTJ¾øiÞbBá^— |öGžËa}¯�ã!<}ÿÖ  -8Xù¤–£�ïU -VÇåhmH/»]á©)r4µ´ǹŸ£±ú ç  Žòß+GÈÑ®—çÅádÞ-&>2E#™Àu(°¸±ãí„Ñc‹íR ïužå€Íõ�–¤B‘V–ÌàqâÊĬQÏfÁ`òîRe&{á{…ƒÝ¦4Jsæãƒ§öÐÞ·ÛɹsÔ¤4Š<ŽuníeF�§ÿŒq®)Ô•ã\„©ÉÞ4ØÓlÕpÜ]Èñ1ðéSä{ÈÇ\�k|)ÀHzʘø.Dq2·áõx -•Ñ)C2}ÔnÐë*ß…jo1pj˜´§ÿùŒ"qÞ~‹Áq”ä{©QX{²hœ[oCùS¶'ßvÂÅ;$îº ÒøÝ·áh¯pÚ“fäßçb(î¿ uy™uñAɤ¼÷-&�*K”ª%]0Ô—N çWCÝ`°µ¼ ]2ÖZbjÄÝK}P -“G{Ut®ä=…¤àGCÝN'Z’‘2×Ë’—øbš.•´éAŵ¤Qw1¥œbSäM‘k"}z:½dA©‚¸úOŒ¶ƒ]÷ÝhD곜÷F”Êϱ�LªìÉ2žáIº¸à[E,LFÄ€ñò’¾#xÞ¥E©ÄùXUžíDÙ'­Yòå|ŸïŸ¾ô[¶ÓŒ»ŽÉrf?ŒŒ”3è4†çäÐ)gÐÑC�çÐ)gÐL~J�rÝE¶à�9tÊt°¦Ê3rè.&dÐÑßã9tÊttM•Çsè.'ågÐIe Þ“C§œAÇË}{(‡N9ƒN�Ãû@ûJ2ƒNÑ_yC�M1ƒNhOVH–O{‹ì”•ÞËxùL ¾#wç’øÚ+XTJY­× ¼|¾ÔAår¡#«Î[z¥�ª,½iñmßÑ¡JGMåH3µpÚ -³l„¹¢ì¯.¬ù«NÜP’úKúz–êý!%M`…» P»¿ù4Q6®OÝ¢®÷),I”ùxÅr¥'Å”¹s&×Û±J^“ù(H¦Èˆ#‡¯$PÝ -"¡ñõØ�fãË­õµj¢Ô®lMm(�+*›ìö°ã?ÃÔTyB²ÛU·�FM²›‚̯Îá}iÕŠˆ²‡’Ôr™¸qƒ C°¬—BÄ$+«“߯“³âÔ%•J¯TlÏ$«"ÉTUŠé”üãå%=ªÛ`)ø²k ÆB"e:“1ºÿ.Ì$kÿ^$NÜí±»êÉ»ü”³À,�švMìRŸÇ'йº7ã¢Ü•üˆ¸fžœ,¿(a¬ã©…¬~ÐÉ.Š;:uç'´`JÄÀ«µ­æÄLÅó»–Çw-'F2 èt8˜ Â#˜%•"#ôYÜ2˜\Tý]“È™¹b -®�›7yY -ሉ ¿ÇèŸ8w&ÙJ2!ž<¦NÀ>FO*ˆ]”&´[^Í—“B8€d%aæc½G ?W¨;ÙûS·²ÃV�½ î¼zeOZË_Æ(Þ>ÄÕÒ(Ü9¿ÊäŒÈ¥ÊÝpBуbž¸P¤‘& ˜âv�öyÀ�ÍJ»¦ÄqàP‘#ÇP¥,8”$¸!å’'ç IÛÆ…r¤„·ó»p-+V EÊcráFóŽRzÜ•Œ!!ב͈ÊÈßæ·Êcƒ£AE“¤sS,�n4ïȧÙÙL¢{á”>ÊšwD(pÅrU¸Õ"#½$H•0�íJ-#¡v£°$ib–½Åàt›EF6:½p«EF°$¡E†ÒÖ.qíŽâs,2”>¨Õ -qì®Ô¦›,2(‚H.=‡(Ÿc‘ÑÀæÓƒŒMQÙ"£Qcz€ihWbÕÔS*>#†¦¡ÉXd„©×óóî³Èð-ð0µé9»0E�Opò˜¬.ÕX�-x-¯îîºaœÆóên�דʫ“bÖ™ÂW� :¾›¨Euʇê™%<©ÍÛ/:iýåÙùpòvþgæÃ©®?öP>/ -ºùŒìé|¸Û#Tïɇ“ŠëƒIcÏ͇{0[Pe>œæz×òáøùÈ\FŸrž‘w¶Ã3â‘ð¤òáäª<7N#™÷¬|8±.&ãÖI]T,¾7_ìY’D¯-)’-ÕÄD¶UÅD^¥ýÎöáôzÈ„l*#!¯Ž#*kq�‡—çá ,8 -¼‘t¬¢q”k‘òbà¯G<Ãä:yƒ˜B:믓awI†à3•d("B±µ'%ÕpcF”€¹ê¦w�aGmY� -2ìÜN†—Ò8„÷ãdîp»¬L¯¾0G-*h¯ô8ÏH„´‹ˆðžZ7hÙáÂjZ²aÖp0y·ëU-A\­Ñ$Qæ‹••/0uÞ'Ô™å Ahå3nÎH%´ª’HÕe¤Z÷ê €öBÿ°­eh=##µû”ŒÔî“2R»OÊHíª/-cÒâÙ”R—e  ·™èPgH„üYÀ§må L%^¤Â ùØ�Ù:ªSáèØ©ˆžg¦Â‰ ö¥"7õŽT¸›í–w¥Â©Ð+Ÿ� -«Ð’ác¼îM…㬠-×3MïO…ÚÇT…Ý¥PaU¬€_?Y!ñ鱊ðBylzxRA54”DL „EQET Ì^“(dxŸ “rÞfž”e@IöFWl W«óÂüC…+/kv]½è5R‰üË�o¥¯Ž~a×8Itf΀î¾Ä¿�fï 3˜#A 1G1�Á€“‚¯ú¨i¸Æÿ‡ Ò‹˜=ýš‚`SÍ€ž=P£hÉÌ+AØþ@ø�ó„J`/Z2�Î; k�JÉnN_“ÚÂä²!ð¾ ³±tíÝÏ»\²Û›R²Û·r†Ýgµ)³W¯ÎHG3¹IçJ¹XɦÀ -'JvÓ}-8¦(N‹þé7ìNÅÉn}… ;àˆ|†ž àU™I½:ýë†Êun»’awpËOš³�;²“Ân°_òýøœJ­ñÊ&ÙI÷‡v“�‹-¾L»œ€^1aI½Í7‚Ó—ùÞð´ù•ýš…™ûo˜éÕ®Žèùbð޹:aÔGB$ˆž­4fº ¡PêËžä»$©¹J°<wï¿§o -pRHí©›²"³“”ÏBUÓ¯›b[Pn‚Ü¢„BðÝY~ÙkUšïè$'µ$®¦ÊS:É©´Â¥¯ÇP«„SÈÊ¡«š¸>ÕM䤛­p÷7‘»º?^ß7Éž*wìïj¯õ@WYŠ–$kU¸Þ?Ný’ˆk�%%Ã]³é¤ré$-½eÓÝd‡¹;›N*—N±'dÓIm�çR6�” -{¦—çeÓ=!óñN7¶ðF~F6�T.ß6þœl:õBɦ»íF¾7›îò8'Y W>9›NÎ3òÜl:©ü4åØž{²é¤C™Ü„²é„§KçÒ]©«pG6�”p£yz6�Ô’DÕæŸ�M'•Kw!)=œM'%œò-½Ïɦ“:?N†yV6�T.�DOá³é¤†R•_yS6ÝUˆ=%›N*—îAˆ] •!v6�”å²s1�²îʦ ÀäÒñeË›‡¸Ò—›Ë¥coä§eÓIyKhIé™ÙtrÚës³é¤=#ÏΦ“½_žšM' äMxj6�04OϦ“’"Åýø<+€äà0u -@º¿Ø•Æ»*é~1Y¸k —ž[ùDº«ÄξEVºxB¿:vI†kv˜GúÕIá§æjzƒ9cºN¢<ñïÂuÁB% -|©è÷zuQQÅVu²K’ï.wµÕ«Ú% à–*g -pºBÌb£´¨²ûãf–¹r˜qä(Öˆ`RÕµ0k5–¹Mñ ÑP*ÚÜñjª(‹äµ¹»è.§Ê?|k›;Éþ•×én® ~Ÿ,Ñèîž ÚÜ)u™Q²RÝÖæNÖ¢Èotw=räJ›;()]mt÷p›;ÅÜ7UΣ’87þž:W@2½b@UŸgAÅÚ>ɯ*B”JRÀ·æò€­Yn·¢Š½<¥›beðœ¹Py–°À«lPw “•¾+a�š Ø«ù…LСê©r4L2¼š£Q _¡ü y¤é"Ÿh2º‚ âÚPrWL¼Jw*¢Óë›§EC�¡ž UßÜtÛÉg>^ lV—ùh1‹¬ -÷ŽcU±�ŠqÏç¤y²ý)БïMÆÏVÙSlÆÅ»‘E‰µ–Ë›¯×zbU@0سÃufvk§ YPÎ�¤¸OŽô¹ðI¥j‰bÌ0/(Ê.¥‰ËÆPw¶wŠîâNyò»¾±ƒáaM¨“-ÕdlÖjút]£ý‹ºÇwg>>.N öm -‰ j½Õhœ'T @ã<Ü­�rÑZ‹§%©IeX—Õ¿ïððš$"+`&^J€j-ðà žÓáîZD„ú|"¥w7ö­¾³Ã�TæãÇÃ-ºÄîé”§>ŸH¹SÞÝd(f¥=cœkî4jóCêp'ÕïõãÒ«¯¢Ã�ʪæ0ûéUE»è« Y—bÎ�uGa;¹Ä“e�îɵ Ž=!±–Ð:dkÕ×¹BãÞîö£^yòYÏ×s\Á’®·{dbá¯No†áµåƒÄ|ŒèÓ”0k)D =˜Ö×Äì£y ³¶^˜Ç7š×™ì¾Òȃ»zk#ÿE¶kþòÎÖ%a6³|>œ¿îÂ…¶ a£;“~»ãË›‚>læ©þu-׿N²ãªlŒ¶†ò¹x6é­ÉLêÕé©ÐH. oˆ&å�¾ ÷/‡yä'Íåö}vRqžîÏ{ú¥¦A†ð@!÷¯ç÷¦¦ÙB?m¹$<Ï—5Þµî8Î/NÓÏýà]ⲓâÙA^œnÈÏJ3¬]�©Ü¤¥6wxPvÒýaYÔñ¸åEÞ‡ÎÛ–ë#hWÚiÁ(:SÚ'î@ @¯ÎI˜§¹è›Òß«é*¾§1´µ¦â›ûÓhmà]“pÏBç™pÁoífîê¤#îRJvâÚ«DT¹RØdݸyƒU -­§wwùÚÉš˜ä,$òù?qµ!m¼%IÔ«¯F¹«Ë¶â$ÝG;³Ô�WÂKù•Z¯$êXuù4GÇêbuÓM!hJ‰r—�U÷f¥ÙTÀ‰ƒœEa0ûsö«jܧ¥°$ç5zQŸ -x­ë‰ä’.*)Û‰o\Ò9JKªkF­-+bW}û¯ˆ]ÉÚ˜oî™Ò·Ë'F«¶Áfž–�4Ìpê¯b…C -pß¡U±µ+^žÌ*Ñöí;^ví#ÉnWôf5u­3[–Qì(Ì|´ 4Œê|±«Z L>JK�}L”5{Y+.{g¿ƒK3Ñöd‹òܤ#g9c°r5`^o˜p'3Ǩ}ñ–rV•ì…�ÿ“�†/.ž�Ñv@0Ï]­º  �uäµ_ܧ—gº1‘ìý(ô%Ý]ç w½ô 9V75‘Z}¿ä`fNQÎv|U.I`î$…òØ�©€ú›R9é ¹ü}N�Šœ„ÿd�ékÌ¿÷oìZ�‹ìZ¥ÁúʼoƒØµ\ž6)í¹¼b×úéܱÅQn°‹tayéðýƒ³ÜŸ¨6ðZ™!nì¨'¡½Þ�¨6�ÇùïÈT›¨9;WîÊT›¨º‹™lÚ›š@æ~‘Ó+Y€jsUfÙȃCU BUsY€js¡Ž| pIòiClÆÐå!?±)ßõŽlÏhÊ+Qþ´70®{šò±V…ÿ´)ŸLG¶'7å“çcÏlʧáûuÿ³¦|g©ï¿mʧÜ-ëYMùûW>ДO¸$qåaD½ž+©Á¨¯ŸPËwõ»»6”¨¯ßÝ™\OÊŠ€]ýžUJ¹«ŸÚhÛk}ýTÅ)=Ü×ï|æO¨ ¥Ð×ï†ÚPôõãŸÐeW?Atú}ý”›èˆ»Çûú) ì2D7÷õ“Ø.¯«ŸœMéÖ¾~Ê'©QeнÞ×Oyk4&?Þ×O¹«Ÿú Ê}ý”7Ä»ÅêëÇ“rUóÇúú)GœÉç$>R8[ÜÕ�‘`îë'—Ûf{NVšûJ+Õ¨ÔôõSVuùQÐ�ôõãA[‚ôîëÇ÷xÎû}}ý$Ga¯¼Gûñ©s¨0¾$…qž‘øÎØ-îë§ÜÕzßžÑ×�!C™®~ü:$�ôõSvE"ÚB_?öj‘!ÎTùh_?›bÀ5Ò_žÐ×OÙ1Lgp?Þ×OÙÑ%™+zG_?©4IN~¬ŸZïðÕ~|�Vñ8÷ã{J_?e!^]6Ç⢯Ÿš¼ÙhÛ»ûúIßÏ]ýD³ÜÝ×OD†¢êÊd¥ÝŸAÏòx_?e3Š"xB_?›bW¿ûñݤqÙ�ïa2”èêww?¾›ti™ê —}ýnkÅ'J\QçÞ¾~(ÙB¶«ß•ÌGÕ}ý”¹¡ê¬´+å/”Å!ŽÝß×Ob]¼®~÷Vm÷õ»7ïõ¶¾~J£t¶ÏéÇwMµVÛ�ï±dxš[^öõøŒoK†—èêwcítÙ¾~Ü,R]ý”-ðêûúɉv9+Ü]}ý”�˜èô‡ûú vÑÕO².Ü}ýn¶[ÞÕ×O…^ù„¾~Ê]ýnŽ”éë§, -ùØý}ý”CIOâ}ý”»ú)xFnMˆUèêÇÞ•öõSŽ–Í®½±¯ŸrW?U¾$•-ôä- —Ùµ2ôy¥¯Ÿòå •ÅyO_?ùË– ¦¹%ÿz–²fÅ8M¸rELYÓ..2ìÒwå»’i÷Jà½0m1+2i¥� ‹‹ç7üÈ -ml 1͘ Xx€‰zê[ž"Mæ¾åýÌxÒ2ÝdŸ6wÌ—F‹Ô~!“Ñö oÆ ¿>7f -âY̺m602جØB?Á¤-ÙÇmíÒ— ÏTwž dâxv0Èã9ûé/û’ïxùým†W¬p.x3dòàÍQ,‰·¿§s¼cúýÂ;eâïìŠz¼›¦ñAm]ÂGg¿øØújÀÇá¡e¿¯:LûCbàݶÆÂþ<¾t»ä§“*ûOLfçr[çâ5a•vÒ@úÌÓ¢®ë¼µ¢úß½+k$Ý£ªiÜ úµ­âÌakeë¦h#¼ðÚØT@S~ñ‘qøÊÆop$¶,L{s`ûÕÀe¨­*¯HÜ—´ôòóK-«Ÿfûq7- a?I·¥o ‡AI`!`€íñqÅÜ@;Õd÷j ÍÜà×x,Šg[Ý,žÓmëûƒ¿;G™¤lrhËq9P/J-�“˜É|»ö‡�m~¦»¨lLS G>ÑÈŽ—O‹Œ½µàûd$à`dO°3fµÏ„Ùµ•n3;&Z˜b[„B°©fs¸ŒC¶(ì¶ùiàò8MÔDK3‹cÜ�Î*±Ù–‰R·;´¥í†SÖœ/€þ¹ùв#Ë{ Ðtße=ä0@áë´æõ|à[Ä=yûÊ ;øý@[lª“·ÒY¿à¾¶Ã·væmÊéDúKÞÉþÐeËtzy¸ž*ÖÙ%S«‰‹À]Q·9›!+pÉ% o¡öÀq•±=|`ã?(Ûf옅÷hè[°�¸ùà¦Y&ÎóÕ0ˆeà®\ÄÊ}FXSDˆùr.eG4úÑDŸŠœœ0=Ò -`÷aƒÀ²ú}^ ‘�½R`! +o…Ó¥Í ?£áDÌô¾ ƒC(¶‡æs3G„€_r¡ôHb+@è4æ7�6&­†upfÌö4Ð'iq¸atYËÁMJZbñœ%DÅZG ñ%œKk¢>û,§K¬É1;6ß3%m Be(IZòÙ07¢ÔxŒ/Iýˆ�r„1é9Öõ‹ÜàÍ¿L4OúUæm^‡WK‹`Ït D‘!Б™Óè©3µÜ¼­§c>Yº@2ÝHÁÊ¿]×Ù»`ìéÖDìgtí¢{o _Qô]‰^»é!2¡ ä‡ö£YÉK/o8ûŠà­fLWçÕ¼QüéµÜ/³õ_w­¿=ç½¼yiêÆ-z?Nþ4 {À2Œ‡ðŽÞÆ‹¤;7Úd6ÄýaD1¶›ïÀɧÊh©A°ÀŸ~¶Òì+’ÿ½ÊÒ ?sK¬¦‘wú©´ÍoÉf3•ŽŸ‘ap×qãÁÓ b¨“Ò‡ÃcÈuÞ®±Ñs_Q2Ù·elÂ|dþµóž4nI7¸–ÿ:q×Ñš¶<î0x.Æ]‡] <¨Ó§I½DbÙ€þužu¨‹m™4EµiIÁ -YWÜÐBž ¬‘êcU´ B;©óÛ ¡læqK–Á�·¾=îòfTü‰€ëÆã³¢©ÀxM7jNèØ!Ä~ž4WÃWåóî\›„ŸA(Ú~Åùb)¾?“‘iéà¢9ÈʲU±‘3FZH¶ŽGˆ|<"Ç™qǵ²£x±öÑfjÐ;°&çiúH„¦8Â,DÀ^æ)[,Dâ”q<¨" ‰„îÉŠàª.‰ÜpY€Õ�‚Εtu àƒa”><¦µnq¥èßœ�Ìð€éöT-L¦7^ {ü¸(Âþ§O!%Mjfží‚7÷}3›ÀÆ Pù:xˆéî=B­É¢œÕšçÖÙ¼C`…‰ÜH_µÅ,ž(e˜c)"—ªÙ ?h3«�ô›<ÆÙt£º*³ r9:½ú¨„Õš&fùÚHJã…°­x�*Ø©#FŽ»« -Ü}œ±Dún·èªâYµdúí�ˆ=ÌŒIxIË«)�TXµ‡, hÇdAMš—ï *±©¤Ø1…ç¥�1J€8v¨sÜõõI¤ ‘ºðRð=MÃùªòÌHã{ô�ë]1öÒ(û›Èåþi^ºe²žUR² -:&3ádžJŒ»u°�†ÆZëR (�}ü'è…�‹Æ1;¤§<9¦2>ÊX 3=Ež7©F${!œ¶ÌúNQÆýg i!ö?îˆqš/?\8jÏom¿"ß+ÔäÈCœ§w=Û,ïÔÐgÚTB ~øz„_îjôÐXøØWAÜRñRúmZ@š:iô)Xè3­6ËásÃo(ë[+k�$´×¬�_h=.~]ôi¯WO°C¬ÌãP¹À�d¦/°ÌGÈACï¸èÒvpNÚæ‰>ªBÇI68Œ($8€™‘õFG^á$‘ ý…ÉeƒÕTœ’ -tÛZwÕZ¤2 ë™Ø ¡º=¦ÒÑþ4Ž9ËSùE�,æØû,Ô�§€œÑ�¢s9apRŒ>÷áÝE# NÚ£Õc¶v�€*éR bIK‰5äNíwÙ À¤N²¾°«ùç|Ó Hš\%'��„Ó{�BOï{jzA�à� õ6žAàäU�Buà¡ wV=±ÔߖϘÌé= fR^)¥ �Æ  :%MJùjkä‰P‰t‡1„ÄØÖ•¡�°Oöß9 ÀÊY2x`±ò hcc)DB 9Yr›oÅE‹�@cP^…ܵÛ@ sá|t8ÇfÐYœ©RýiØïÀiaѱÝ.3„ZPÚ�¢m0¨DÛ â ³™b« ‡ T¬A -”œ¥×Nž‡ðê¸Ó8hs¥”`*—•û,ÖV?WêÚ�¢¨äÇqÌò8޹nBbâq³<ŽcÖÛ‡à�AL€"ü!ÄÛ¸”<Ã< —<¹"éBÍöGÖ€n1—$0o8 —$Ås(Eß/ÊÛx±]¸Æðè6Ä´!Eƒâ*ÈG×@©¹‘óîH%e£‡ØG=”`RõÀÝÈ¢U�öë�P^¥·¼¤ó&Œ�â–¤KÅ�*ÝC¤˜À¥åd%Œú¦à­ðV!)ÎÒ‰Ï�ñîòDì\uShÈŒ¾®²­Xð-³:ßyo5Ÿš,‹ßÐyä!“oí2~!ÚÀÂÅwP&ì¿ñ©û'VÏÆ£ÿ5Ún5Of‹~�0Â8`¶ÜnŒY—û†Á]M78Óç…m•?ìŸ�õuB­Åq6Ô!oW9ˆ^�­=HúL9ê,¸—³@�ÇÎÊ­F�æ[ö°õaDZðõqh• ⎠©½°]ðÔBl`JÕíõwMþüg 5ôm™þl¢åÝ´8�Ðc—wñm°¦¯Ï�u~ÐS±xÑÒQÅiÉÅ;Y¼p騪ô~¶ƒŸìºÍü -#̃'Bììs|î¤4OVƒ��à"„Ø6ZTèM¸È¯Ð~'É©Ø$º‘U“ܽ›¤ë[^nMpæ50†ÍÍüfJn kêý�çn†Ìœ×àÛÓ>¨˜C»%ͤÆ~[Ô[ïó¶vv ß$ähÐ~Œþ©7lÓ–¢æÝ/§pD¸¼ÎŸ`úŽ–Õv\>H“à Ú\•–ÙG8 ±¦ 9Ýc!£‡ÌXK Fº8çì¡qÓé'òN=‰Ìœ¤y Ë»ßnx'õ… yec…’½>í˜!M±r”»‡ÀµDånI%ý”ß÷mÊGÙ@F-¾˜ºxqÚK8­rŒeʶèzF�£¹£„ ß`Dk:NaIÎ�ƒ#”a¶‰i T¢3á‹ã$�sÙ,¸FÓ>¼¸NÁŸvžöü,kR„�ì|ˆ=ðƒ4(=qª¼k•ëe ©ÎãZMw6ˆÃÃm :µBäèÝá&rD¯€—‚ -¼*$ˆY!„@íÁ/§ìÑÜGVi*aÅ€4NŽ«U´K×]_Ÿ†0 áŸæ×eÜï[@Ä¡¡= -vÏ0[c›ç)<±]«h ¤½J2¹µ…�¡JWåS¥{ÌCÅÚØ  �Ó¶žâ|eh� ùÜ -@8‹„tnjÑ㎳xÀÏÄ»ŸM¤RIŽòó0 V"fP<)ò#Ó ¤Ûº–§Œ™<à  '2}ŠÈÇME¼d~O´ñ{‰i¹$fNÊO‹]u­!ÚQp‚ ò½>:R°�«ü!OØË�t b:ü&¢m²€¸>ƒ½âf0Y*‘î yDÃß½'½<€lh¢ù$æqÒò+K�fõí¿ k{7;] «;ûåÏ1ع¢›Ûâª4ÿ ¤Úiìޤî'”/Bã%. ÊCl&Ëçü°§½Ü޹ö$ƒˆ³36ŠÍˆ -‚|§½ox©D•‚õܾ‹¥à1�*GïzÀ¤ª¥ªëkkð’–Ó|Joý2vËjc\uµ6d8iÙ$}p¾.Â'p�í4ó€}dÇG  mãìq÷RçÓÏ[`�Áµ²!È�¨MœkU¦a¨ eBÞÕɲÛ?^¶¾uY‹ÁlÁ¿Už{™—ß9Ž|zÕRd&üÆõT‚ÉÚB\ÿù öBÄÌ{H"ôÄUCÿ~Ûì�&€ÃŒ3@O@ñ9›ñCYº£+ð£xR6š{!7(B90½“ƒ²]0Ðûï`‡jt�-d:¶Œf u²Ùm´¶EûB‡”#‡_¤ÏBC&I ‚�‰Èg¨’´Ä¾³0" +A•ÁM^b.&†‹{ܤÀEÿíqqè^OÓÝ2�ÀpL`‡)¡0²`�§#`²ÐSìE€4ô^DÉsb|©ÚÝ~¼D@žlÞ>¾®Bîf#ÓóX�'eÈ¥O(+x¡8;ƒH()”—Q@ç¯Qšà„’Ìß—àè1¢x�•ÔJ -è2fb{ž‚^Y ;ÊTÒõ’º Q6:½€ü®“é¸Ã+�c)2Ù×ÐjÁE�)hÇò0.>Œ{SpöY/ö{^?8?,½±"y¬T„L ÚÛûDŽé›PÔ‘$¢q_—ŸMê+lnÂF#ñûTÎÿc'Á&ÞZH³HXÁ—N1 Á -Øÿ1 ăL0É@¼óƒ™SIr\ÙÍÀJ‰“‹û³½‰”ˆ Êù 4οAýà©,þÙ1yUÞŸ¨]²Uñ0ÃûQV¯ï¡õ\€ØfÎ’†lîz#ºL<=ÆÙqX‚"Œyg…‚‰WGÝ/œþ¶‚¥ÔrL8¯Ìpsüè8i‚bdNáZ6І’'ó„±=Ï<•4ηÁs�úÂxÖ? SÆU5t?‡ày¦޳�çC@(#†'ifãÌ}pðRíEîÔú¡¼øÜüÚGã·Ð¾ }ƒFHzD‰B»?î"aÿ�L�]÷] dׄ¶Ì³U³�ÝkÕd´WY»æs¬š´ óßX’8 +�«3 Þiռ蚡h¼×ªy1‹ÊÅßfÕ”·õ� ŒÏ°jÞ±{­š÷ÛÆŸe}žÁîå6våMÞe½y“H†¹™änµjòóĹØ-ήy£U¶ã’°jÂYÉ®ù«¦Æ l×|ŽUÖ»P²k>Ǫ‰n1»æs¬šˆ^®ˆÚ�[5éê Œ]“ÖxvÍçX5_ÒúÊÓ5¾;¬šgK¯œ]ó9VM¶^ŸŒ]ó9VMÍè<Ǫ 5 %»æs¬š€'+Ú5ŸcÕdjÜÉÚ5ï²jv~EVM€cŠvÍçX5‘¿RÁ®ùËÔ_”ìšÏ±jÒ|LÞ®ù«&ÌP²k>vüˆ;iØ=ê gQ²k>Ǫ Nÿ¿pQIúøäíšÏ±jBίd×|ŽUu™y¦wJÒªy¶'ËÙ5¬š¡�_()È[5¡_É®ù«¦´��³k>Š(ÇJÁ®ù«&¬C¢d×|ŽU“î!o×|ŽUSŽóŸíšê­šö�£Òï¥Uó»�n1á *°k^Z5MIÊ8^Ån²jÒFÞ®ù«&¤%»¦Øªùµ &ÈqhîæRîï¬HtKᥔÏo1æÈÆg8²toæ6€¦H £…°ÚÅm0¤Eÿ�‡I�Q‘Œ®åj &ŒÖÑ]§ÕEZ��¥Æ_q�jÑf 9¯Yàùÿ½Ø0)÷ê>yƒ¦ O"/GR¢è‡-· êž\áDI¯ úøàòðÆ·tý tú(�Æ�MâL/�?Ùâ6²Æ¶²1DÓ¹‘tAÜ¡¤,,Ù›DÂ$�ÖÆxà×üáªqŒ1sNš Îßb}v=]>ŠL!šrTfCòïJ0bï ‘os"Í?”|íThÁWø �ïŸ E',€˜Û`R*`bzÉQ+ùè€ ÉË é5GØw)%zu|X€ ò½KCHŸŒŸ„é›ý±uHz¸îò‡ð&’ž4àZõ¿«0‡Õ+˜™õ÷(Zlí�‚q/GÌ -ô6PÀ:wH3„›2b^ ôÛiZ£zÕÛeî ¼—ƒ¹Úèþ€�¬ “8—’¹"ì¦,sÑ‹²¸îË”P@ûŽ ˆöÝ*¤O‹ -‚dìɪ2ú¼“ 9»ò?%H�uô?#Hrp ny3AºÔ$?Vá¿#HDŽPGþO ‘£Æð<‚K$"Gx¿ü§‰Èö³øO =ÖN—"È~„ 9žï—ÿŒ ÏñÉÿA²µÄP€ ÒrA2Ñÿ1A"rÅõ=Ÿ ÑÏDÝJy1)£6ÈÒ"G‰à\δ˜â`{-c°@TPü[XEˆ«@«WÜâq¨^‘ìâ­œzuÅé.xÐàW<à''ÅcÙøgÓ=~bÚë³8»°èš@gÅ'x ÅÛøÔËð¶×¯¶ï­ã mKXÊ7ÉD>êçá%`9Áþâ–<Þå^l¬Æ×ú©jÞÆB¥ÝRB’Ò|ÕI,‚ÖD·T—a -J)¤ÞªÈ_ÇÄ�K¸ò ù#o»Pëƒfp�Õß ¤ågHÉʸŒ`Õ+#i_Ä\V§<,Àwt&|¿ð\&œÃû‚ËAUWzÒ„q~þ´LŒfÈ£ãÙD°ãÇÕàE1‹¢jmÊÉ÷‡=#Û¢ŠBxï›·.°¼Ÿ¦¤±mô‡ó9·‚­ ã¼­ Ì4#¤ûHïáÌPR¢ ° bv;hÐ={}ãòHKÜ뇬®W*]�pz‹(ÅÁu‘~Õ‚†¦:¦LÊÈvŽD\B—4 C�‚‹²c†ø³�%òP“Î’´9ÝÎ%YbÉoi ÏÎ¥”b‰Ã™¢,KÖíy�)ʲDz/RLÑz;S<³D8‹€%Â(µ§1EY–HW7}S”e‰¬æLQ–% -üb�2EY–ˆxò³˜¢¬ÿõFg=·0Å´c!-ó€çÒæ{Ái]ì’)NßЧ¼‰)ʲDˆcOcв,Qh!y€)ºö†‘,KTˆ…»�)ʲÄ3½<…)ʎ¯7þ0S”c‰NÖž|SŒÕʉ¬&þ ¦(Ë‘7áYLQ–%²q°Ï`в,fs<�)ʲD~\ßÃL‘ŸjP“Ûº+ŸÅeY"�“ŸÇeY¢æ™LQ¥=Y‰)>stream -.· “̤G-I¦7¥Ê„áå@Fg� `OCÎÏY«³2aÿ @'øÑ 9¬¶š/ È|Q�ggl¡,úÖÙÿÍÒøÂ†¤Š¼ß0®OÚÿÝáz=Ї¦ù¬LÁ{ åŠ - ‚¼ ÞI�'™0•ƒ-ai÷ï0à|T’Ì„ ºk„iA5bº\âtPÌJ—JCí5åôâŸæ÷(™¡]Ú8_<âT¢Û­ßY@£s¥ì"?ãÝÔ ¸sÑÆà�Œ‹œ•.dÅJÀ -ý!¦<,cØ—gk`ޱÑ�r)ÔÏ‚ äLlwï}Ï�´G ÄoÈê¹’3ò¤2>ªk]&¼Ü�:pÑ[ð¼ŠøéÞÔ�X°~¥@_ÒÕ’(§ È.XE€œ°wAäõ»<Û’’‹â÷3Ç&˸„’’ˆ‹6£"w#§a�ߨí¾Ô�ó¤0uÀнÕèN ¬xFÌÞž+šxW/8Gµ”ƒ€tŒyb¼K˜›Äôçd9Œ!Q“ZÊ_èÑ˰¦½ *ƒ0fR’÷�9LX�_a¾cDÄùÎÁCPîžîJ(JK‘ãn7®G޾Zr»9¬k}j£«…4/ç"ïóúdƒ.‘S6|‹¾+o àâò&ÙØÂ3 - ØBï‘ö÷çM²Zu>Oþ¥š„ñoê–’<ùy¯R²§:É“î8'/yòä1IÙ“'y²žÙóØtºÚ­,j­!êƵtæÎ…Ý=ä v¦iôž±›ºÜ l…zwRø­ -uzþ3±R`®�RJמm£”â‹ç®ÿ­:.ôŠ>Q‡JV§cGŸi£”RÇ¡4þ\¥”:ÎzxÿSu\"Þ’SÇÑÌLZ0†A6Ôt‡ßà+;bµúö¼.@Möå2ÊØúèF®µÖ‰~ ðdsD{¥;øÀ;€yõ½°2»bÓ;i -Doƒf(¾äÌÛ²›à³<²½Ÿ<œÓºñü´ÐC7aÇǬDÉo(fO¦ì;ÿA›˜³œÂî?ËÈ‘™/ZæÍÇoË– ¢ŽGp‹™ƒçÏâ6^›´Ì0>?È:¸(†¤½Ÿ–]L+¥\ ‡Èb°ûƒwR•c�bg`{¼5è sÊáÔp°œ_®%3ìÜp2 Ѽ)Ä“= ÕØ‡ý_`¹Ö3ììí�`N­Ÿ…‚áš`Zô¥FZ¼A0-§r-ÎÒ+ì°uÑ�‰í�ÑrÝÞ±KcPç3O—î¶µC{o´í®&|ƒ¹™?-oMŒ9Óþ;ɞƘm¼U¢=¼k¶š�ß&-�åx»LVlú­@ÐíäÒ³Ó"0ýÓ&™W§÷!ÍÇ2–ɈyE.=p£�ÒpÄ7'ºÈÑàåè×£Ó+3öØÒcÛG½‘ünh¡ù7ûÀÍvÕš -ö2îb)åtœ]‹m»bdÿˆÐQ†S�í8p1Òe$Ût§.:–~•ž°]Üú&eìlâÕÔR­A6ý£�%^[¦ÌÔïÂ{= ô“¯3ewÞslͳ#� ôÝð»Ýx¬òËü°¶°ÒP4EšVZö€\Ží€´†ÓëŠu3¶vÇd�vp„iÞ@(µÛ]LÇ.OÄβhêL>K9az`�í/faÄyOÖÅõ‰Öœ[!“`fçžF°“úƒDÝf”ƒÍg.Ñ Ú†™ÏW¢q¤Å›8Zpáži‰Î{exÃÑv)üܬLÔßà Ù\Ä -ôÁoÈÖ«¶³™€îÕ„çâ;fˆó±t!ƒÓÂâLŸ2o™ë|Æ1³³Nžø¿¨ÆçP/>Ÿq½ž~ûÚ~µ\ý¾Ø5!�+Q ˆöï|›Ý/­Åÿ{Log§Íâ÷ø|q%š©BÁïI/fÛùâ…®æ8ö±ÌÐÁì†'))/‹ˆÉôg ·Îë^#“ô'Þ�Š£,M»Öl>š‡µ¢gNfÍß1;™mbæüÁßöé¾'œ'îBé@B°U—^ì“§Œ­RîŠ(©$�q+At¯q×avåo¥ô[¶ÓŒ»Žø‰ÕBMà¬[È›P‹ £³„«nÌá2u`·T ©cú´ß…Ù-ñ8ü´ˆÙÚ*Ü_>ˆÁnªsÌ^éå1ëŸnÏ7­Ü &œ£¥XAá?Pn_P�&ÇÀ™b|îш�÷€×Ç4šrh /†–ÏÔ—7[Kþøu~?¤i*qLËÍó.‹“à±çäÑËŒA–ãG À« q~5çä°s—¿Ý«ñ;Y«%òuÚJv\1˜XlÊ8:ø`:­^‘¥‚Ÿ=ÎëF[ò¯…Ò²½§aÇés÷iº÷´¥úfføæ)X‡,5xi¬%Ñ{š‹Î7ÒÞ@úÀ"}šÕ¢I˜Á±.4”Ð_šüA>ׇ-NÝXf'RbYÁƒ)± ¸¥�á–PháqËþÖ‰L>¤)Ž Î2Îg -5\«ÛÉÁ)\p­zG'-ò­ìAÔ{°…\S¼¾ôùÂа(:}äDÄéF`gÖJó±C"¾ª-ìK¥Å–Áaº¦[¥ -:S!Â×ɧÆëÄ\¤rAܨ aeøiIÖ%€WÔ²f{JçTA”´bçTQb‚ÈØˆÀÏ»–Ré3CÛÒ¯�Ú‘‰»:øMýfþÏÚ‡>ÃŽæ;Dý¢+ Ûšsºó‰�¨¥Ÿ°«FØQ±)tôê0CRŸ>13òå4@ÒÅ€Èör²*°9ñˆìéÔƒÊ/ãp²>Ѿ6æ³Îßù³þÞµªýÚ85¡ß'ŽöÌö¸Ã˜öw¡Í«lÏ=ìhF·›CíK.ÚÍÑíKØfsƒ¸çlVü@»9®s”Rg0¥v*ÐÍÏaÈj‚È€à�°6Rríß��§x@@-f ¸]àjÖ ^â�ãi´Å‚ëß3¬!në4w ‚ÈåÇÜØ{‘o1‡ž¸ë�‘+Ývê†åÎ…Ê} !Ÿ¶¢¸ž]×°ñbBkS»¦ÕÅA³ý±m¤œޤ˜>½7n£tÝÔó’*í�£õœ†FB›hbj!͉ŽkÛ˜@K÷yêý‡ðó+íÑÙJRÛP JØoœ@´¹|ò<€WGw úã}3—ü³0ßÌ~Ü7axê˜�ç“‘éAŠù1+»�ܲ8¦8Ä0Ž?Šc¦/óc8†ÿZdpLõe›ý*‚ð@›âØÐç|ä4PÛ{©Ž©¦á]¥ôç( ð©æ}Òk:¥AÉt9Sq@À¼JñJk€þÌ]ð±Ó€R­2(Ñý¢´�¼#{m\¬Á[& 4þmäc¯ä•5ì£.‚w#çÝGg;Ìb:4ÆúKÆ@eþq2¾dµëÏ<+ÜŒ:ÙW„™v�Ó -®Çg¥#+hÝÖ±ÓZ7 §Cn�óϲ.Vw‡½:e¢á,ü�#ëþ+ÙøʶûÀÁÀW£]ÂYv©%ûˆà=²´·Vù^SÀ_Y¯i•ï5L�uBÕ¨T0z]§½W�›@įŒÖ{…oü±¡AÈ6=`|�QMìÝœ„H ñ®ábü™±mOn0ÃBÃR<£$¬F{|,7DÎ0¤%©ð†!«ÏfþáùÃHK>¾Ù¿F¥‘±QŽp® ϱ®_äoþe¢yÒ¯2oó:ìÆÙ"8üå¢ÎqWH±vK·Àn™ŽùXdé:f#ÙP×uFü.{:€úi—8›¢ºÈ¥]]Š}å¦È„6^ðöÍÁú3gèàß\ç_¿áì+‚ï»$‡¬sð�â?H¯õg“ä·ç¼—7¯ ~Y¥Ã˜ÿGì.ðüb”ÑRƒ@à(ØáØ€ Á+’ÿÍÊzæn ÷u#;îôSi›ß’Íf*�³«ò¸ñÀð/ÄO'kÔx£-ð>µ¦Á; ƒ��Ý`¼Ó0¨¹Í4x§að-¥Ò4x§aPcPmÜþ_TÒ ›r”ù�ó]”ƒ|Ò\O;øÏ(¹X®~Ë“{ ñBÿ‹ƒá__à… ý/¤ÇÞxà§å©ÆŒ¾ûBX^Ê¿ÃÈ•ØÓ«Ùqµý�ìÿy Â�z•r»�~ ¾Ðß�ï†^Ì`5ø|<²@¿è¬p¤Á_à¿Þÿ4ÖøMƒ;=$é&©Üé&½Ÿ¾À}~Ÿ¼À½$¾ƒ/�^ü8|ä! �7ðÒ›€Q^Á(à§^Òx}`@ô‚ò{|`'Nðxà(åC{sô�á � —†D€‹û¼-‚ß/øð/þRyyà/s²Þ«Æ³à�‡›tâ$éyÙhÜ~§;@ù^”Ïéõxü/”Çéàw('éO(0–‡ ^7Ø©‡z™iHŸ“ô{½/¯Çé%Ä E:ý8Åçw>ððã€×í~qøI§lð%¥IJ‚™ �TÀ fyq5�ûÕïòÅœL&f ^·Ç ü.ï.Þh° -?é³$Ø é¼ühÐψ€|H¹_Àé ¸Iø?œî…€�<°‚»q$ØðÃ=ïá^'î? ¤Óë‡ð?pƒS&ü€8(“ðº½`kp-?i·Öös†(ëtDHyq?±‰rû ˆ¶8€BMŸ×íCÈêwSú$à( ‘ ±“„Pð‚MS^v¿›ý„ðHùÜQ<ðpp ÞóG$ÙF‡@†úI}\`&ê å�ƒ8(¯œœÏMŸ€®�·" -ù¼pª !1ôFC‘^§ßwþŒ -xQ”Ðåe>ôƒWdN/îa ½ý‘ÇMÑ› ¸ýp“èC’¢a?}�ƒý"€î>SrŸ¸áÅPVÄ£¶¬„G· s+Ä�$ iŸ$Iú!*N¡Gn�SàœÑGØ·ƒt»�~R`[~þÒC9~ŠóB´t�^ð7˜krã^ŠùÈï!_H‡€%™Ÿz•‘�‚ü -w»UmIbh€ ` -G¨ì�ý€ßl §Ÿ‚'ï'|�ë Û#Àáú<¸çýÒ ‡#((·Ï ‘w3¸~à €‚ €…ƒôG~ÀrHÀм ôK@Š. ­€7m\%næ¤�×aZƒ3×1} `¼ü^—¯È@!B|à>IJä }¸�àòô75ç›õ¡;ð*07 'î÷Ðèö‚;`ƒ>wúÐOß?èCå%è½8N Wô@¸ÃŸƒ«])?ÄPfÑ@í/„ÇçtSˆàhlð‰÷ÿ«îjzÛ¸�è/ÐØ‹€ä`…ßäS m-Z ‡@°UÇ€,vÑ´ÿ¾o†K‘\m9ðèIÒ393œμY[0"îVô޳ËB$“—)˜Žu„* %�ñ(Ȭ4¦¬½†ÿ¬ëRšÛXBt¨3û Råy£üx�þÄûÕŸ«ßV4¼x9üñ{÷n>òl¯UŠÎ -¼„újF™ë³�|ê�w€z4ÈÚáî0ÀibDNÆç`U9� ¡ “’ÀW”î¶¥}Øôܹ۪E?9ᚤD¶-½4F®IŠ-- Vœ»ÇvÚ(•A®F¤LÌQ¸¼h®c\ƒÀ„¬ôa�*C º*Æ]ˆÁr+c0xI¶v�ƒj…!äI»F'ïôÈñ 6ÖŒ“sÌœøËÉ{’y3fßöp Tμš6~‘´+D¡ÈŠÚ¡J#Ku0‚Aîî¹â½ñ‘ÛQ^3YìÍ̇ \è¥zOÖ¨7à& ÈÐOÐ&˜‘¼¶~+%vt@‘"dý׫À3Ä -xæüà'z¦†Wüþ*6ȧííîíáj÷>kwÿoùl†W¼ïõᯛíþfûÀŠùë Ócž¯!-®�¾Qƒ^™#H£%÷å�¿Qûð†:j¯¶ùY?à²)È @›”$Ä ˆºœpc�îყÌÕ"†@¼<æ*ÐøXÆ)ß­³›hT/í­¼µ‚ 4#T# �rÔi-o=ZW×Õƒ¥�œõôPÿÓ’H™J–ÇR È#qc5aÆDeÉn¶<þKŽè2�ªÑ˜n�A½×½´ -�ZóÖ‚ÝyEC+ 3¤U½Öâ­Õºãºz†£´“³² ˜ë'So´•ZWA‡, -¨y&Ò½5ØDèÈ~�˜² �§nÓU:iG¨hÍ[ ˆYÃi=4Ò,¸>ÈN«µ@—«Æºº®ì(í䬠U‘J±w��{�v­ ŒG×F‡nŒ)P為îx´*­B£ÖÎÆ03l=DaV딎Pç�º®¡;9);à …V�_¥Pb¾¹ÆÅËmX\ƒ_\ƒ[\ƒ]\ƒY\ÃR¶Óðî‡ükÃ7‡+ùåÞÅÅj½þe{½ûõ~{³ßݯ®¶ï†íáÀTf÷ ?®ïwе>Þ}f[ÊòõúÍÏ?®þ©€”‰ endstream endobj 56 0 obj [/ICCBased 62 0 R] endobj 7 0 obj <> endobj 27 0 obj [/View/Design] endobj 28 0 obj <>>> endobj 45 0 obj [44 0 R] endobj 77 0 obj <> endobj xref 0 78 0000000004 65535 f -0000000016 00000 n -0000000159 00000 n -0000042606 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000285581 00000 n -0000000000 00000 f -0000042657 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000285651 00000 n -0000285682 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000050489 00000 n -0000050225 00000 n -0000050038 00000 n -0000285767 00000 n -0000043134 00000 n -0000044305 00000 n -0000075990 00000 n -0000047229 00000 n -0000075877 00000 n -0000047116 00000 n -0000045344 00000 n -0000045916 00000 n -0000046484 00000 n -0000044367 00000 n -0000285546 00000 n -0000044783 00000 n -0000044831 00000 n -0000049975 00000 n -0000049912 00000 n -0000047053 00000 n -0000047264 00000 n -0000050109 00000 n -0000050140 00000 n -0000074826 00000 n -0000074916 00000 n -0000050828 00000 n -0000051081 00000 n -0000075208 00000 n -0000076058 00000 n -0000076298 00000 n -0000077312 00000 n -0000083189 00000 n -0000148777 00000 n -0000214365 00000 n -0000279953 00000 n -0000285792 00000 n -trailer <<7EF4BF3AA73D410CAD3CA11AF0794393>]>> startxref 285969 %%EOF \ No newline at end of file diff --git a/Doc/Maths/celloverlap.pdf b/Doc/Maths/celloverlap.pdf deleted file mode 100644 index 91e51eeb..00000000 Binary files a/Doc/Maths/celloverlap.pdf and /dev/null differ diff --git a/Doc/Maths/cellvel.pdf b/Doc/Maths/cellvel.pdf deleted file mode 100644 index ec615c79..00000000 Binary files a/Doc/Maths/cellvel.pdf and /dev/null differ diff --git a/Doc/Maths/math.pdf b/Doc/Maths/math.pdf deleted file mode 100644 index 00d4aa18..00000000 Binary files a/Doc/Maths/math.pdf and /dev/null differ diff --git a/Doc/Maths/math.tex b/Doc/Maths/math.tex deleted file mode 100644 index 4be048d0..00000000 --- a/Doc/Maths/math.tex +++ /dev/null @@ -1,913 +0,0 @@ -\documentclass{report} - -\usepackage{booktabs} -\usepackage{float} -\usepackage{comment} -\usepackage{graphicx} -\usepackage{amsthm} -\usepackage{amsfonts} -\usepackage{pdfpages} -\usepackage{siunitx} -\usepackage{mhchem} -\usepackage{subfloat} -\usepackage{fullpage} -\usepackage{array} -\usepackage[toc,page]{appendix} - -\newcommand{\ecoli}{\textit{E. coli}} -\newcommand{\ecloni}{\textit{E. cloni 10g}} -\newcommand{\bsub}{\textit{B. subtilis}} -\newcommand{\pbad}{P$_{BAD}$} -\newcommand{\plux}{P$_{LUX}$} -\newcommand{\etal}{\textit{et al.}} -\newcommand{\invivo}{\textit{in vivo}} -\newcommand{\invitro}{\textit{in vitro}} -\newcommand{\csix}{3OC6HSL} - -\newcommand{\tred}[1]{\textcolor{red}{#1}} -\newcommand{\tgr}[1]{\textcolor{green}{#1}} - -% Units -\DeclareSIUnit{\molar}{M} -\newcommand{\ul}{\si{\micro\litre}} -\newcommand{\um}{\si{\micro\metre}} -\newcommand{\ml}{\si{\milli\litre}} -\newcommand{\nm}{\si{\nano\metre}} -\newcommand{\ugml}{\si{\micro\gram\per\milli\litre}} -\newcommand{\degC}{\si{\degreeCelsius}} - -% Misc -\newcommand{\tenx}{\ensuremath{10\times}} -\newcommand{\fortyx}{\ensuremath{40\times}} -\newcommand{\sixtyx}{\ensuremath{60\times}} -\newcommand{\hundredx}{\ensuremath{100\times}} -\newcommand{\odsix}{\ensuremath{\textrm{OD}_{600}}} -\newcommand{\Pspo}{\ensuremath{\textrm{P}_{\textrm{\scriptsize SPO1-26}}}} - -% Matrix/ vector shit -\let\oldhat\hat -\renewcommand{\vec}[1]{\mathbf{#1}} -\renewcommand{\hat}[1]{\oldhat{\mathbf{#1}}} -\let\oldcaption\caption -%\renewcommand{\caption}[2][]{\oldcaption[#1]{\small\textbf{#1.} #2\normalsize}} -\renewcommand{\caption}[2][]{\oldcaption[#1]{\textbf{#1.} #2}} - -\newcommand{\mat}{\mathbf} -\newcommand{\invmat}[1]{\mat{#1}^{-1}} -\newcommand{\deltap}{\Delta \vec{p}} -\newcommand{\deltaL}{\Delta \vec{L}} -\newcommand{\deltag}{\Delta g} -\newcommand{\Iinv}{\mat{I}^{-1}} -\newcommand{\Minv}{\mat{M}^{-1}} -\newcommand{\crossmat}[1]{{\left[#1\right]}_{\times}} - -\newtheorem{remark}{Remark} -\newtheorem*{note}{Note} - -\begin{document} - -\chapter{Biophysical modelling of rod-shaped bacterial cells} -\section{Biophysical model} -The measurements of individual cells in microcolonies of \ecoli\ -presented above are consistent with the overview presented by -Koch~\cite{Koch:1995} that cells have fixed diameter and grow only along their -major axis, and the findings of Wang \etal~\cite{Wang:2010} showing that cells -are equally bisected on division. The observation that cell diameter is -constant suggests that cells are \textit{rigid} except in the direction of -their growth axis. Following this suggestion, we formulated a simple model of -cellular growth on an agar substrate as follows: -\begin{enumerate} -\item Cells are rigid elongating capsules~\cite{Koch:1995}. -\item Viscous drag dominates inertia; cells are non-motile and move only when -subjected to a force~\cite{Purcell:1977}. -\item The distribution of cell lengths at division is constant, and each cell -divides in half~\cite{Wang:2010,Koch:1995}. -\item Each cell's unconstrained growth rate is proportional to its -length~\cite{Wang:2010}. -\item Growth is constrained by forces between cells and from viscous drag from -the substrate (figure \ref{fig:model}). The ratio of the work required to -constrain growth to the work required to move a cell is defined by a parameter -$\Gamma$. -\end{enumerate} -In a rigid body mechanics model objects cannot be deformed and are completely -represented by their position and orientation. We extend this formulation by -allowing cell length to vary, adding an extra degree of freedom to accommodate -growth. - -\section{Mathematical description of biophysical model} -\subsection{Motion of cells due to applied impulse} -Bacterial cells are modelled as capsule-shaped rigid bodies, that is cylinders -capped with hemispherical ends. Each cell is represented by its -position, orientation and length ($\vec{x}$, $\vec{\theta}$, $l$), and the -associated linear, angular, and growth velocity ($\vec{v}_\textrm{lin}$, -$\vec{w}$, $v_\textrm{growth}$). Here $v_\textrm{growth}$ is the -linear growth rate $dl/dt$. By extension of the usual rigid-body -formulation, we define the generalised position of a cell as -$\tilde{\vec{x}} = -\left(\begin{array}{lll}\vec{x} & \vec{\theta} & l \end{array}\right)^T$, and -the generalised velocity as $\tilde{\vec{v}} = d\tilde{\vec{x}}/dt = -\left(\begin{array}{lll}\vec{v}_\textrm{lin} & \vec{w} & v_\textrm{growth} \end{array}\right)^T$. -Similarly there is a generalised momentum associated with the motion of the cell -$\tilde{\vec{p}} = -\left(\begin{array}{lll}\vec{p} & \vec{L} & g \end{array}\right)^T$, with -linear, angular and growth components. -Cells grow by -acquiring growth momentum $g$ which causes extension in length. For a physically -possible arrangement of cells, this extension in length cannot cause the cells -to overlap or intersect, leading to a system of constraints. It is the solution -of this system of constraints, which is derived below, that results in -computation of the correct arrangement of cells during colony growth. - -In appendix \ref{app:eqmot} I show with the assumptions listed above, under a generalised impulse $\Delta -\tilde{\vec{p}}_i$ the change in generalised position of a cell $\Delta -\tilde{\vec{x}}_i$ is -determined by a matrix $\mat{M}_i$ such that: -\begin{align} -\Delta \tilde{\vec{ x}}_i &= -\invmat{M_i} \Delta \tilde{\vec{p}}_i \\ -&= -\left[ -\begin{array}{ccc} -\textrm{diag}(\frac{1}{\mu l_0}) & 0 & 0 \\ -0 & \frac{12\mat{P_i}}{\mu l_0^3} & 0 \\ -0 & 0 & \frac{1}{\gamma} \\ -\end{array} -\right] -\left[ -\begin{array}{l} -\deltap_i \\ \deltaL_i \\ \deltag_i -\end{array} -\right]%\\ -%&= -%\mat{M}^{-1}\deltap -\label{eqn:motion2} -\end{align} -where $l_0$ is the length of cell $i$, and $\invmat{M_i}$ is written in block form - $\textrm{diag}(\frac{1}{\mu l_0})$ -and $\frac{12\mat{P}}{\mu l_0^3}$ are $(3\times3)$, and $\frac{1}{\gamma}$ is -$(1\times1)$. The matrix $\mat{P}$ is the projection onto -the plane perpendicular to the cell axis $\hat{\vec{a}}$, i.e. $\mat{P}\deltaL -\equiv \deltaL - -\hat{\vec{a}}(\hat{\vec{a}} \cdot \deltaL)$. - -\begin{note} -There are 7 degrees of freedom for each cell, hence generalised position, -velocity and impulse are $7\times1$ vectors. There are 3 components of centroid -position/velocity/impulse ($\vec{x}$, $\vec{v}_\mathrm{lin}$, $\Delta \vec{p}$), -3 components of angular position/velocity/impulse ($\vec{\theta}$, $\vec{w}$, -$\deltaL$), and 1 component of length/growth rate/growth impulse ($l$, -$v_\textrm{growth}$, $g$). -\end{note} - -\begin{center} -\begin{figure}[p]\centering -\subfloat[]{\includegraphics[scale=0.75]{cellforces}}\qquad -\subfloat[]{\includegraphics{cellvel}} -\caption[Biophysical model of rod-shaped bacteria, forces and motion] -{Biophysical model of rod-shaped bacteria considers each cell as a capsule -(shown in two-dimensions). Forces on each cell (a) are generated by viscous drag -(red) and constraints at cell-cell contacts (black). The velocity of a point on -a cell consists of multiple components (b): the cell centre of mass (red circle) -moves with linear velocity $\vec{v}_\textrm{lin}$, the cell rotates with angular -velocity $\vec{w}$, and grows at instantaneous linear rate $v_\textrm{growth}$ causing all points to -move away from the centre of mass along the axis ($\hat{\vec{a}}$).} -\label{fig:model} -\end{figure} -\end{center} - -\begin{center} -\begin{figure}[p]\centering -\includegraphics[scale=0.75]{celloverlap} -\caption{} -\label{fig:overlap} -\end{figure} -\end{center} - -\subsection{Motion of points on cell surfaces} -We described above the change in generalised position of a cell due to a -generalised impulse, that is the change in its centroid location, angular -orientation, and length. Now consider the motion of a point on the -surface of this cell due to the change in generalised position. This point is -positioned according to vector $\vec{q}$ from the center -of the capsule $\vec{x}_i$, which has axis $\hat{\vec{a}}_i$. Its original position is -$\vec{q}_w = \vec{x}_i + \vec{q}$. -For small displacments the cell axis $\hat{\vec{a}}_i$, the associated -projection matrix $\mat{P}_i$, and the cell length $l_0$ remain approximately constant, and -\[ -\Delta \vec{q}_w \approx -\Delta \vec{ x_i} + -(\Delta \vec{\theta_i}\times\vec{q}) + -\frac{\Delta l_i}{l_0} \left(\hat{a}_i\cdot\vec{q}\right)\hat{a}_i -\] - -And substituting from equation \ref{eqn:motion}: -\begin{align*} -\Delta \vec{ q}_w &\approx -\Delta \vec{ x_i} - -(\vec{q} \times \Delta \vec{\theta_i}) + -\frac{\left(\hat{a}_i\cdot\vec{q}\right)\hat{a}_i}{l_0} \Delta l_i \\ -&\approx -\frac{1}{\mu l_0} \deltap_i - -(\vec{q} \times \frac{12\mat{P}_i}{\mu l_0^3}\deltaL_i) + -\frac{\left(\hat{a}_i\cdot\vec{q}\right)\hat{a}_i}{l_0}\frac{\deltag_i}{\gamma} -\end{align*} - -Now project this vector along the direction vector $\hat{n}$ of interest to get -the position change in a particular direction: -\begin{align*} -\Delta q_{\hat{n}} -&= -\hat{n} \cdot -\left( -\frac{1}{\mu l_0} \deltap_i - -(\vec{q} \times \frac{12\mat{P}_i}{\mu l_0^3}\deltaL_i) + -\frac{\left(\hat{a}_i\cdot\vec{q}\right)\hat{a}_i}{l_0}\frac{\deltag_i}{\gamma} -\right) \\ -&= -\frac{1}{\mu l_0}\hat{n}\cdot\deltap_i - -\frac{12}{\mu l_0^3}\left(\hat{n}\times\vec{q}\right)\cdot \mat{P}_i\deltaL_i + -\frac{\left(\hat{n}\cdot\hat{a}_i\right)\left(\hat{q}\cdot\hat{a}_i\right)}{l_0}\frac{\deltag_i}{\gamma} \\ -\end{align*} - -Which can be written in block matrix form as: -\begin{align*} -\Delta q_{\hat{n}} -&= -\left[ -\begin{array}{lll} -\hat{n}^{\textrm{T}} & -\left(\hat{n}\times\vec{q}\right)^{\textrm{T}} & -\frac{\left(\hat{n}\cdot\hat{a}_i\right)\left(\vec{q}\cdot\hat{a}_i\right)}{l_0} \\ -\end{array} -\right] -\left[ -\begin{array}{lll} -\frac{1}{\mu l_0} & 0 & 0 \\ -0 & \frac{12\mat{P}_i}{\mu l_0^3} & 0 \\ -0 & 0 & \frac{1}{\gamma} \\ -\end{array} -\right] -\left[ -\begin{array}{l} -\deltap_i \\ \deltaL_i \\ \deltag_i -\end{array} -\right]\\ -&= \mat{B}_{\hat{n},\vec{q},i}\invmat{M}_i\Delta\tilde{\vec{p}}_i -\end{align*} - -Here $\mat{B}_{\hat{n},\vec{q},i}$ is a matrix which represents -the geometric effect of a generalised position change on a point at $\vec{q}$ -from the centre of cell $i$ along direction $\hat{n}$, and -matrix $\invmat{M}_i$ is the inverse drag matrix for cell $i$. -The expression for $\Delta q_{\hat{n}}$ represents the motion of the surface point -at position $\vec{q}$ relative to the capsule centre in the direction $\hat{n}$ that -results from application of generalised impulse $\Delta \tilde{\vec{p}}$. This quantity is central -to the formation of the constraints explained below. - -\subsection{Effect of a set of applied impulses on cell-cell overlap distances} -Now consider two overlapping capsules $a$ and $b$, forming contact $k$. We find the contact points on -each cell $\vec{z}_{ak}$ and $\vec{z}_{bk}$ as described above (figure \ref{fig:overlap}). The -change in overlap distance $d_k$ is the difference in the movement of these -contact points along the contact normal $\hat{n}_k$. That is for generalised -impulses $\Delta\tilde{\vec{p}}_a$ and $\Delta\tilde{\vec{p}}_b$ applied to cell -$a$ and $b$, -\begin{align*} -\mat{B}_{ak} \Minv_a \Delta\tilde{\vec{p}}_a - -\mat{B}_{bk} \Minv_b \Delta\tilde{\vec{p}}_b -&= -\Delta d_k \\ -\end{align*} -where $\mat{B}_{ak}$ -and $\mat{B}_{bk}$ are as $\mat{B}$ matrices as defined above using the contact normal -$\hat{\vec{n}}_k$ as the direction vector, and the relative positions of -$\vec{z}_{ak}$ and $\vec{z}_{bk}$ from their respective cells. Viewed in block matrix form: -\begin{align*} -\left[ -\begin{array}{ll} -\mat{B}_{ak} \Minv_a & --\mat{B}_{bk} \Minv_b \\ -\end{array} -\right] -\left[ -\begin{array}{l} -\Delta\tilde{\vec{p}}_a \\ -\Delta\tilde{\vec{p}}_b \\ -\end{array} -\right] -= -\left[ -\begin{array}{l} -\Delta d_k -\end{array} -\right] -\end{align*} - -In a system of multiple cells, there will be one such equation for each contact $k$ between two capsules. -To solve all these equations simultaneously, each equation becomes a -row in a matrix equation. For example, with four cells and -three contacts, the -system might be: -\begin{align*} -\left[ -\begin{array}{llll} -\mat{B}_{a1}\Minv_1 & -\mat{B}_{b1}\Minv_2 & 0 & 0 \\ -\mat{B}_{a2}\Minv_1 & 0 & -\mat{B}_{c2}\Minv_3 & 0 \\ -0 & \mat{B}_{b3}\Minv_1 & 0 & -\mat{B}_{d3}\Minv_4 \\ -\end{array} -\right] -\left[ -\begin{array}{c} -\Delta\tilde{\vec{p}}_a\\ -\Delta\tilde{\vec{p}}_b\\ -\Delta\tilde{\vec{p}}_c\\ -\Delta\tilde{\vec{p}}_d\\ -\end{array} -\right] -= -\left[ -\begin{array}{c} -\Delta d_1\\ -\Delta d_2\\ -\Delta d_3\\ -\end{array} -\right] -\end{align*} - -\begin{align*} -\left[ -\begin{array}{llll} -\mat{B}_{a1} & -\mat{B}_{b1} & 0 & 0 \\ -\mat{B}_{a2} & 0 & -\mat{B}_{c2} & 0 \\ -0 & \mat{B}_{b3} & 0 & -\mat{B}_{d3} \\ -\end{array} -\right] -\left[ -\begin{array}{llll} -\Minv_1 & 0 & 0 & 0 \\ -0 & \Minv_2 & 0 & 0 \\ -0 & 0 & \Minv_3 & 0 \\ -0 & 0 & 0 & \Minv_1 \\ -\end{array} -\right] -\left[ -\begin{array}{c} -\Delta\tilde{\vec{p}}_a\\ -\Delta\tilde{\vec{p}}_b\\ -\Delta\tilde{\vec{p}}_c\\ -\Delta\tilde{\vec{p}}_d\\ -\end{array} -\right] -= -\left[ -\begin{array}{c} -\Delta d_1\\ -\Delta d_2\\ -\Delta d_3\\ -\end{array} -\right]\\ -\end{align*} - -and writing the system with single collected matrices and vectors, - -\begin{equation*} -\mat{B} \invmat{M} \Delta \tilde{\vec{p}} = \Delta \vec{d} -\end{equation*} - -\begin{note} -The elements $\mat{B}_{ij}\invmat{M}_i$ are computed by the \texttt{to\_ents} -(positive) and -\texttt{fr\_ents} (negative) arrays ($7\times1$ vectors stored in -\texttt{float8}) which are stored for each cell for each contact it -is involved in. We consider contacts to be directed from low to high index, and -so only the cell with the lowest index in each contact stores and calculates -these entries. -\end{note} - -\begin{note} -In the analysis above I have split the matrices $\mat{B}$ and $\invmat{M}$, but -currently the combination $\mat{B}\invmat{M}$ is computed. It may be better to -split it so that we can more easily compute other forms of $\mat{B}$, e.g. for adhesion (see -below). Application of $\invmat{M}$ is already implemented by -\texttt{compute\_Minvx}. -\end{note} - - -\subsection{Growth of cells generates impulses to prevent overlap} -Growth of cells during a discrete time-step $\Delta t$ is modelled by simply -increasing the length of each cell by $v_\textrm{growth}\Delta t$. This -causes cells to overlap (figure \ref{fig:overlap}). For a physically correct -arrangement of cells, reaction or constraint forces must be generated to -eliminate this overlap. - -A capsule of total length $l$ and radius $r$ -is defined as the locus of points within a -radius $r$ of the line segment of length $l-2r$ along its axis. -When two such capsules overlap, we define the points of intersection on each cell -($\vec{z}$ in figure \ref{fig:overlap}) as follows. First we find the closest points -on each cell's axis line segment. The line joining these points then intersects -each cell surface at points labelled $\vec{z}$, where it is normal to the surface. -Hence we have defined contact points on each cell, and the normal to the contact -$\hat{\vec{n}}$. The distance of overlap $d$ for each contact is then determined -by the distance between the contact points along the contact normal direction -(figure \ref{fig:overlap}). - -In order to constrain the system of cells to produce -a physically possible, non-overlapping arrangement, we must find the -impulse applied to each cell $\Delta \tilde{\vec{p}}$ that produces a change in -the overlap distance so that $d=0$ for each contact. -We have just described how these overlap distances are changed by a set of -applied impulses, and so we can now formulate the constraint system. - -\subsection{Constraint formulation} -To form a physically possible arrangement of cells after increasing their length -we wish to apply constraint impulses to cells such that -\begin{eqnarray*} -\vec{d} + \Delta \vec{d} &=& 0\\ -\Delta \vec{d} &=& -\vec{d} -\end{eqnarray*} -As shown above the change in overlaps $\Delta \vec{d}$ produced by a set of -generalised impulses $\Delta \tilde{\vec{p}}$ means that -\[ -\mat{B}\invmat{M}\Delta\tilde{\vec{p}} = \mat{A}\Delta\tilde{\vec{p}} = \Delta -\vec{d} -\] -where $\mat{A}$ is a block matrix $n_{\textrm{contacts}} \times -n_{\textrm{cells}}$, $\Delta\tilde{\vec{p}}$ is a block vector $n_{\textrm{cells}} \times 1$ and -$\vec{d}$ is $n_{\textrm{contacts}}\times 1$. Hence the constrained system is -given by: -\[ -\mat{A}\Delta\tilde{\vec{p}} + \vec{d} = 0 -\] -Hence we have formulated the system of constraints as a linear system. Given the -solution of this system, the change in generalised position of each cell is then $\Minv \Delta\tilde{\vec{p}}$. -However it is clear that in general this linear system does not have a unique solution. -To see this consider that cells may move perpendicular to the normal(s) of their -contact(s) without affecting $\Delta \vec{d}$. - -\subsection{Energy minimising solution} -The least squares solution of the constraint system is: -\[\underset{\deltap}{\operatorname{argmin}} -\left\{ -\left\|\mat{A}\Delta\tilde{\vec{p}} + \vec{d}\right\|^2 \right\} \] -%\[\mat{A}^{\textrm{T}}\mat{A}\deltap = -\mat{A}^{\textrm{T}}\vec{d}\] -where the expression $\mat{A}\Delta\tilde{\vec{p}} + \vec{d}$ is the vector of overlap -distances of each contact after application of impulses $\Delta \tilde{\vec{p}}$. If we interpret the least-squares -solution as an energy minimising solution, where the energy is -associated with the overlap of each contact. If the overlap at each -contact is $\vec{\epsilon}$, and if the energy is stored in an elastic -fashion, then this energy is: -\[\frac{1}{2}\vec{\epsilon}^T \mat{K} \vec{\epsilon} - = \frac{1}{2}\left\| \sqrt{\mat{K}}\vec{\epsilon} \right\|^2 - = \frac{1}{2}\left\| \sqrt{\mat{K}}\left(\mat{A}\Delta\tilde{\vec{p}} + \vec{d}\right) \right\|^2 \] - where $\mat{K}$ is a diagonal stiffness coefficient matrix. So -it is implicit in the above minimisation that $\mat{K}=2\mat{I}$. If -all the stiffnesses are the same (i.e. $\mat{K} = K\mat{I}$), then -this makes no difference to the solution. If some -contacts softer than others are required, the corresponding entry should be changed such that -$K_i<1$. We use this approach to approximate the -effect of a soft agarose substrate. This is a bit of distraction for now, so -lets just stick with $\mat{K}=\mat{I}$. - -As explained above the matrix $\mat{A}$ will typically be poorly conditioned, -and the matrix $\mat{A}^T\mat{A}$ will be even worse. So we still can't get a -unique solution. The usual approach is to use regularisation to `select' a -solution. -Following the energy minimisation formalism the solution obtained should -minimise the work done or energy expended by the constraint impulses. -Given an impulse $\Delta \tilde{\vec{p}}$ and time step $\Delta t$, the average -force applied over the time step is $\vec{F}=\Delta \tilde{\vec{p}}/\Delta t$. The work -done by these forces is then -\begin{eqnarray*} -W &=& \vec{F}\Delta \tilde{\vec{x}} \\ -&=& \vec{F} \invmat{M} \Delta \tilde{\vec{p}} \\ -&=& \frac{1}{\Delta t} \Delta \tilde{\vec{p}}^\textrm{T} \invmat{M}\Delta \tilde{\vec{p}} -\end{eqnarray*} -Combining this -with the overlap energy described above leads to the problem -\[\underset{\deltap}{\operatorname{argmin}} -\left\{ -\left\|\mat{A}\Delta\tilde{\vec{p}} + \vec{d}\right\|^2 + \frac{\alpha}{\Delta -t} \Delta \tilde{\vec{p}}^\textrm{T}\invmat{M}\Delta \tilde{\vec{p}} \right\} \] -where $\alpha$ is a regularisation parameter. In this case we can interpret -$\alpha$ physically as the relative energy cost of cell-cell overlap (e.g. due -to deformation of the cell wall) compared to the energy cost in overcoming drag. -Differentiating the above total energy, and setting to zero gives: -\begin{equation} -\left(\mat{A}^{\textrm{T}}\mat{A} + \frac{\alpha}{\Delta t}\Minv\right)\Delta \tilde{\vec{p}} = -\mat{A}^{\textrm{T}}\vec{d} -\label{eqn:finalsystem} -\end{equation} - -It is now clear that \textit{any} quadratic energy term can be included in the -system by forming the appropriate matrix $\mat{H}$ such that the energy is given -by $E = \|\mat{H}\Delta \tilde{\vec{p}} \|^2$. Or maybe more usefully, the -energy can be defined directly in terms of change in generalised position -$\Delta \tilde{\vec{x}}$ as $E = \|\mat{G}\Delta \tilde{\vec{x}} \|^2 = -\|\mat{G}\invmat{M}\Delta \tilde{\vec{p}} \|^2$, and the linear system is then -given by -\begin{equation} -\left(\frac{1}{\alpha}\mat{A}^{\textrm{T}}\mat{A} + \frac{1}{\Delta t}\Minv + -\invmat{M}\mat{G}^\textrm{T} \mat{G}\invmat{M} \right) \Delta \tilde{\vec{p}} = -\mat{A}^{\textrm{T}}\vec{d} -\label{eqn:finalsystem} -\end{equation} -where I have moved the $\alpha$ to make clear its physical interpretation as the -relative cost of overlap. Note also I have used the fact that -$\mat{M}^{-\textrm{T}} \equiv \invmat{M}$ because it is diagonal except for terms -involving the projection matrices $\mat{P}_i$, which are themselves symmetric by -definition. - -\begin{note} -Writing out the matrix $\mat{A}=\mat{B}\invmat{M}$ and $\Delta \tilde{\vec{p}} = -\mat{M}\Delta \tilde{\vec{x}}$ in the above system gives a -factor of $\invmat{M}$ which could be eliminated. However, this is actually -acting as a right-preconditioner. Similarly expanding -$\mat{A}^\textrm{T}=\invmat{M}\mat{B}^\textrm{T}$ gives us left-preconditioning. -Hence we have split-preconditioning. -I'm pretty sure we did some testing and the preconditioning did improve -the condition number. -\end{note} - -\begin{note} -The factor of $1/\Delta t$ is not computed in the current code. At the -time we were considering a kind of ad hoc regularisation term rather than -explicitly minimising physical work. Adding the $1/\Delta t$ makes sense. -\end{note} - -\begin{note} -In the current code the viscosity from substrate per unit length of cells $\mu$ -is set at $\mu=1$ - -i.e. it is factored out of the $\invmat{M}$ matrices. This means that the -parameter $\alpha$ incorporates the value of $\mu$ into the ratio of drag from the substrate to -resistance to deformation of cells. It seems sensible that this should be the -same as the ratio $\Gamma = \mu/\gamma$, where $\gamma$ is the resistance to -change in length (see appendix). This would be nice because the whole model -would then be parameterised only by $\Gamma$. Need to think about this a bit more. -\end{note} - -\section{Adhesion} -Now we want to form a matrix $\mat{G}$ that adds a quadratic energy to the -system to simulate adhesion. Consider adhesion that acts only in the plane of -the cell surface at each contact (tangent plane), such that $E_k = (\Delta -d^{\perp}_k)^2 = \|\Delta \vec{d}^\perp_k\|^2$ where $\Delta \vec{d}^\perp_k$ is -the movement vector in the tangent plane -between contact points on each cell involved in contact $k$. This is a -$3\times1$ vector that is the projection of the total movement into the tangent plane of -the contact. In this case -\begin{equation*} -\mat{G}\invmat{M}\Delta \tilde{\vec{p}} = \Delta \vec{d}^\perp -\end{equation*} -where the matrices and vectors are in block form, with one block per cell or -contact. - -This matrix $\mat{G}$ is closely related to the above described $\mat{B}$ -matrix, which projects the movement of each contact point along its respective contact -normal $\hat{n}_k$. The tangent plane is perpendicular to this normal vector. -For cell $i$ and contact $k$, -\begin{equation*} -\mat{B}_{ik} = -\left[ -\begin{array}{lll} -\hat{n}_k^{\textrm{T}} & -\left(\hat{n}_k\times\vec{z}_{ik}\right)^{\textrm{T}} & -\frac{\left(\hat{n}_k\cdot\hat{a}_i\right)\left(\vec{z}_{ik}\cdot\hat{a}_i\right)}{l_0} \\ -\end{array} -\right] -\end{equation*} -where $\mat{B}_{ik}$ is a $1\times7$ matrix. The matrix blocks $\mat{G}_{ik}$ -are $3\times7$ and given by -\begin{eqnarray*} -\mat{G}_{ik} &=& -\left[ -\begin{array}{lll} -\mat{Q} & \mat{Q}\mat{Z}^\times_{ik} & -\left[\hat{a}_i - \hat{n}_k\left(\hat{n}_k\cdot\hat{a}_i\right)\right] \frac{\left(\vec{z}_{ik}\cdot\hat{a}_i\right)}{l_0} \\ -\end{array} -\right]\\ -&=& -\left[ -\begin{array}{lll} -\mat{Q} & \mat{Q}\mat{Z}^\times_{ik} & -\frac{\left(\vec{z}_{ik}\cdot\hat{a}_i\right)}{l_0} \mat{Q}\hat{a}_i \\ -\end{array} -\right]\\ -&=& -\mat{Q} -\left[ -\begin{array}{lll} -\mat{I} & \mat{Z}^\times_{ik} & -\frac{\left(\vec{z}_{ik}\cdot\hat{a}_i\right)}{l_0} \hat{a}_i \\ -\end{array} -\right] -\end{eqnarray*} -Here $\mat{Q}$ is the $3\times3$ matrix projecting into the tangent plane, so that for any vector -$\vec{u}$ -\begin{equation} -\mat{Q}\vec{u} = \vec{u} - \hat{n}_k\left(\hat{n}_k \cdot \vec{u}\right) -\label{eqn:Q} -\end{equation} -and $\mat{Z}^\times_{ik}$ is the matrix representing the cross product -\begin{equation} -\mat{Z}^\times_{ik} \vec{u} = \vec{z}_{ik} \times \vec{u} -\label{eqn:Z} -\end{equation} -These first two blocks ($\mat{Q}$ and $\mat{Q}\mat{Z}^\times_{ik}$) of $\mat{G}_{ik}$ are $3\times3$ and the third -($\frac{\left(\vec{z}_{ik}\cdot\hat{a}_i\right)}{l_0} \mat{Q}\vec{a}_i$) is -$3\times1$. - -\begin{note} -We could explicitly store the $3\times3$ blocks and apply them as matrix -multiplications. However, it is more efficient to do the computation directly -using equations \ref{eqn:Q} and \ref{eqn:Z}. -\end{note} - -\begin{note} -The result of applying each block $\mat{G}_{ik}$ to the cells impulse $\Delta -\tilde{\vec{p}}_i$ is a $3\times1$ vector. Hence the array storing the result of -$\mat{G}\Delta \tilde{\vec{p}}$ must use \texttt{float4} types. This might seem -counterintuitive since the distances are projected onto a plane, but note that -the tangent plane of each contact is in general different. -\end{note} - -\section{Viscous adhesion} -Because we recompute the closest points for contacts at each time step the above -described adhesion energy will be completely dissipated. This is effectively a -viscous model in which -\begin{equation*} -\vec{F} = C \frac{d\vec{x}}{dt} \approx C \frac{\Delta \vec{x}}{\Delta t} -\end{equation*} -and thus $E \approx \frac{1}{\Delta t}C\|\Delta \vec{x}\|^2$. So that using the -above analyis the energy from viscous adhesion is given by -\begin{equation*} -E = \left(\frac{1}{\Delta t}C \right) \|\mat{G}\invmat{M}\Delta \tilde{\vec{p}}\|^2 -\end{equation*} -for the same viscosity coefficient at each contact. More generally, -\begin{equation*} -E = \left(\frac{1}{\Delta t} \right) -\Delta \tilde{\vec{p}}^\textrm{T}\invmat{M}\mat{G}^\textrm{T}\mat{C}\mat{G}\invmat{M}\Delta \tilde{\vec{p}} -\end{equation*} -where $\mat{C}$ is a diagonal matrix of viscosity coefficients for each contact. -In practice this matrix is best implemented by just scaling each block -$\mat{G}_{ik}$ by the appropriate coefficient. - -\begin{note} -The scaling by $1/\Delta t$ is required to make this purely viscous model physically sensible. -To implement a purely elastic model of contact would require keeping track of -the original point of contact between each pair of cells. -\end{note} - -\section{Implementation in CellModeller4} -The following table describes which functions or OpenCL kernels perform which -calculations and data arrays that contain the results, using the mathematical notation above. - -\begin{table}[H] -\begin{tabular}{c c p{4in}} -\toprule -Function/kernel & Maths & Description\\ -\midrule -\texttt{find\_contacts} & $\vec{d}$, $\hat{\vec{n}}$ & Finds overlapping cells -and computes the overlap distance $d_k$ and surface normal $\hat{\vec{n}}_k$ for -each contact $k$.\\ -\addlinespace -\texttt{rel\_dists} & $\vec{d}$ & Stores the vector of overlap distances, one -element (\texttt{float}) per contact.\\ -\addlinespace -\texttt{compute\_Minvx} & $\invmat{M}$ & Applies the inverse drag matrix to some -given vector of length $n_\mathrm{cells}$ and type \texttt{float8} (only first 7 -elements are used). It does this per cell, by applying its $\invmat{M}_i$ matrix -block.\\ -\bottomrule -\end{tabular} -\end{table} - -% Long maths in appendix for ease of reading -\begin{appendices} -\chapter{Equations of motion} -\label{app:eqmot} -Consider a capsule with main axis $\hat{\vec{a}}$, mass $m$, and length $l$. -When in motion the capsule is associated with linear ($\vec{v}_\textrm{lin}$), -angular ($\vec{w}$), and growth ($v_\textrm{growth}$) velocities (figure -\ref{fig:model}b). -Now consider a point on the -surface of the capsule with position $\vec{r}$ relative to the -capsule's center of mass. The velocity of that point is given by: -\begin{align*} -\vec{v}_{r} -&= -\vec{v}_\textrm{lin} -+ \vec{w} \times \vec{r} -+ \frac{1}{2}\frac{\hat{a}\cdot\vec{r}}{l_0}\hat{a}v_\textrm{growth} \\ -&= -\vec{v}_\textrm{lin} -- \vec{r} \times \vec{w} -+ \frac{1}{2}\frac{\hat{a}\cdot\vec{r}}{l_0}\hat{a}v_\textrm{growth} -\end{align*} -where $l_0$ is the current capsule length. The first term in this expression is -the linear velocity of the whole cell, the second term is the angular component, -and the final term is due to growth. Growth is assumed to occur by extension of -all parts of the cell wall along the axis, meaning that any point on the cell is -moving away from the centre of mass at a rate proportional to its distance from -the centre. The maximum velocity due to growth then occurs at the tips of the cell -which are each moving away from the centre of mass at rate -$\frac{1}{2}v_\textrm{growth}$ along the cell axis $\hat{\vec{a}}$. - -Each point on the cell surface experiences viscous drag from the growth substrate due -to its motion. The viscous drag force on a differential length $dr$ of the -capsule is approximately given by: \[d\vec{F} = -\mu dr \vec{v}_r\] where $\mu$ -is a drag coefficient per unit length. To understand the motion of the capsule -shape, initially at rest, after the application of a generalised impulse -$\Delta\tilde{\vec{p}}$, which can be divided into linear, angular and growth -components $\left(\begin{array}{lll}\deltap & \deltaL & -\deltag\end{array}\right)^T$, we must find the net force on the capsule due to -viscous drag at each point on its surface. Given this force, Newton's laws can -be applied to find the change in generalised position. - -\section{Linear impulse $\deltap$} -Approximating the forces on the differential length element at the average -position, so that position $\vec{r}=r\hat{a}$ lies on the axis of the cell: - -\begin{align*} -d\vec{F} &= -\mu dr \vec{v}_r\\ -d\vec{F} &= -\mu dr -\left( -\vec{v}_\textrm{lin} -- \vec{r} \times \vec{w} -+ \frac{1}{2}\frac{\hat{a}\cdot\vec{r}}{l_0}\hat{a}v_\textrm{growth} -\right) -\\ -d\vec{F} &= -\mu dr -\left( -\vec{v}_\textrm{lin} -- r\hat{a} \times \vec{w} -+ \frac{1}{2}\frac{r}{l_0}\hat{a}v_\textrm{growth} -\right) -\\ -\end{align*} - -The total force on the capsule is given by the integral over the length of -the capsule from $-\frac{l_0}{2}$ to $+\frac{l_0}{2}$. The -second two terms in the expression for velocity are odd in $r$ and -so will cancel when integrated so the total force on -the capsule is: -\begin{align*} -\vec{F} &= -\mu \vec{v}_\textrm{lin} \int_{-\frac{l_0}{2}}^{+\frac{l_0}{2}} dr \\ -&= -\mu \vec{v}_\textrm{lin} l_0 \\ -\end{align*} -And following Newton's laws: -\begin{align*} -m \frac{d\vec{v}_\textrm{lin}}{dt} &= -\mu l_0 \vec{v}_\textrm{lin}\\ -\vec{v}_\textrm{lin} &= v_0\exp{(-\frac{\mu l_0}{m}t)} \\ -&= \frac{\deltap}{m}\exp{(-\frac{\mu l_0}{m}t)} \\ -\end{align*} - -The change in position of the centre of mass of the capsule $\vec{x}$ due to -linear impulse $\deltap$, and thus the change in position of any point on the -cell is then found as: -\begin{align*} -\frac{d\vec{x}}{dt} &= \frac{\deltap}{m}\exp{(-\frac{\mu l_0}{m}t)} \\ -%x &= -\frac{m\deltap}{m\mu l}\exp{(-\frac{\mu l}{m}t)} + C \\ -\Delta \vec{x} &= \frac{\deltap}{\mu l_0}\left(1-\exp{(-\frac{\mu l_0}{m}t)}\right) \\ -\end{align*} -In the case of a bacterium, inertial effects are very small compared to drag -forces~\cite{Purcell:1977} meaning $m/\mu \approx 0$, so that the -exponential term is nearly zero and so: -\begin{equation} -\Delta \vec{x} \approx \frac{\deltap}{\mu l_0} -\label{eqn:deltax} -\end{equation} - -\section{Angular impulse $\Delta\vec{L}$} -Now consider the rotational motion of the cell. The torque applied at a -differential section of the cell at position $\vec{r}=r\hat{\vec{a}}$ is: -\begin{align*} -d\vec{\tau} &= \vec{r} \times d\vec{F} \\ -&= \vec{r} \times -\mu dr \vec{v}_r \\ -&= \vec{r} \times -\mu dr \left( -\vec{v}_\textrm{linear} -- r\hat{a} \times \vec{w} -+ \frac{1}{2}\frac{r}{l_0}\hat{a}v_\textrm{growth} -\right) \\ -\end{align*} - -The drag force due to linear velocity makes no total -contribution to torque (the contributions on the two sides of the -capsule's center of mass cancel) and neither does drag force due to -growth velocity (it is parallel to $\vec{r}$). Note that the triple product: -\begin{align*} -\vec{r}\times(\vec{w}\times\vec{r}) &= \vec{w}(\vec{r}\cdot\vec{r}) - \vec{r}(\vec{r}\cdot\vec{w}) \\ -&= \vec{w}r^2 - \vec{r}(\vec{r}\cdot\vec{w}) -\end{align*} -and so: -\begin{align*} -d\tau &= -\mu \left( \vec{w}r^2 - r\hat{a}(r\hat{a}\cdot\vec{w}) \right) dr \\ - &= -\mu \left( \vec{w} - \hat{a}(\hat{a}\cdot\vec{w}) \right) r^2 dr \\ -\tau &= -\mu \left( \vec{w} - \hat{a}(\hat{a}\cdot\vec{w}) \right) \int_{-\frac{l_0}{2}}^{\frac{l_0}{2}}r^2dr \\ -&=-\frac{1}{12}\mu l_0^3 \left( \vec{w} - \hat{a}(\hat{a}\cdot\vec{w}) \right) = \mat{I}\frac{d\vec{w}}{dt} \\ -\end{align*} - -The expression $\vec{w} - \hat{a}(\hat{a}\cdot\vec{w})$ represents a projection of the vector $\vec{w}$ onto the -plane perpendicular to the axis $\hat{a}$, and can be written as $\mat{P}\vec{w}$ where $\mat{P}$ is the -appropriate projection matrix: - -\begin{align*} -\tau &=-\frac{1}{12}\mu l_0^3 \mat{P}\vec{w} = I\frac{d\vec{w}}{dt} \\ -\vec{w} &= \vec{w}_0 \exp{\left( -\frac{\mu l_0^3 \mat{P}t}{12 I} \right)} \\ -\end{align*} - -For a projection matrix $\mat{P}$, an exponential of the form $\exp{(k\mat{P})}$, where $k$ is a scalar, is: -\[\exp{(k\mat{P})} = \mat{P}\exp{(k)} + \left(\mat{I}-\mat{P}\right)\] - so: -\[\vec{w} = \mat{P} \vec{w}_0 \exp{\left( -\frac{\mu l_0^3 t}{12 I} \right)} + \left(\mat{I}-\mat{P}\right) \vec{w}_0\] - - -In which the second term $\left(\mat{I}-\mat{P}\right) \vec{w}_0$ is the angular velocity about the cell axis $\hat{a}$. -Approximating the capsule as a `slender rod' with no rotational inertia about its axis -the second term can be ignored, and: - -\begin{align*} -%\frac{dw}{w} &= -\frac{\mu l^3}{12I}dt \\ -%\log{w} &= -\frac{\mu l^3}{12I}t + C \\ -\vec{w} &= \mat{P} \vec{w}_0\exp{(-\frac{\mu l_0^3}{12I}t)} \\ -&= \frac{\mat{P} \deltaL}{I}\exp{(-\frac{\mu l_0^3}{12I}t)} = \frac{d\vec{\theta}}{dt} \\ -%\Delta \theta &= -\frac{12I \mat{P} \deltaL}{I\mu l_0^3}\exp{(-\frac{\mu l_0^3}{12I}t)} + C \\ -%&= \frac{12 \mat{P} \deltaL}{\mu l_0^3}\left(1-\exp{(-\frac{\mu l_0^3}{12I}t)}\right) \\ -\end{align*} - -Making the same approximation for negligible inertia as above $I/\mu \approx -0$ gives: - -\begin{equation} -\Delta \vec{\theta} \approx \frac{12 \mat{P} \deltaL}{\mu l_0^3} -\label{eqn:deltatheta} -\end{equation} - -So, the effect of a rotational impulse is projected onto the plane of the cell axis - that is, it only causes rotation -about the other two axes. - -\section{Growth impulse $\Delta g$} -A growth impulse tends to elongate the cell, and is resisted by compressive forces along the axis of the capsule due to drag: - -\begin{align*} - F_c &= \mu \frac{1}{2} \left[ \int_{0}^{\frac{l_0}{2}}{\frac{r}{l_0}v_\textrm{growth}} dr - - \int_{-\frac{l_0}{2}}^{0}{\frac{r}{l_0}v_\textrm{growth}} dr \right] \\ - &= \frac{\mu}{2} v_\textrm{growth} \left[ \int_{0}^{\frac{l_0}{2}}{\frac{r}{l_0}} dr - - \int_{-\frac{l_0}{2}}^{0}{\frac{r}{l_0}} dr \right] \\ - &= \frac{\mu l_0}{8} v_\textrm{growth} -\end{align*} - -%Here we have written the same drag coefficient $\mu$. We incorporate forces from the cells growth, -% and resulting resistance to length change, as a drag term. Thus rewriting: -This is the drag due to interaction with the substrate. In order to -model the cell's resistance to change in length due to its own structural and -mechanical properties, I incorporate an additional -drag term: -\begin{align*} - F_c = \left( \frac{\mu l_0}{8} + \gamma \right) v_\textrm{growth} -\end{align*} -where $\gamma$ describes cell growth drag. Following the same -reasoning as above, integrating and neglecting inertial effects, and assuming -that $\Delta l << l$ so that $l_0$ can be taken as constant, the effect of -growth impulse $\delta g$ on cell length is: -\begin{align*} - \Delta l \approx \frac{8 \Delta g}{\mu l_0 + 8 \gamma} -\end{align*} -where $\Delta g$ is the applied growth impulse. Assuming that the resistance of -the cell to deformation dominates viscous drag from the substrate, then -this can be reduced to: -\begin{equation} - \Delta l \approx \frac{\Delta g}{\gamma} - \label{eqn:deltal} -\end{equation} - -\section{Motion due to generalised impulse} -%We have shown above that the change in the capsule generalised position vector -Combining the results for each component of motion from equations -\ref{eqn:deltax}, \ref{eqn:deltatheta} and \ref{eqn:deltal}, the change in generalised -position $\tilde{\vec{x}} = \left(\begin{array}{lll}\vec{x} & \vec{\theta} & l -\end{array}\right)^T$ after the application of a general impulse $\Delta\tilde{\vec{p}} = -\left(\begin{array}{lll} \deltap & \deltaL & \deltag\end{array}\right)^T$ -can be written in block matrix form as: -\begin{align} -\Delta \tilde{\vec{ x}} &= -\left[ -\begin{array}{l} -\frac{\deltap}{\mu l_0} \\ -\frac{12\mat{P}\deltaL}{\mu l_0^3} \\ -\frac{\deltag}{\gamma} \\ -\end{array} -\right] \\ -&= -\left[ -\begin{array}{lll} -\textrm{diag}(\frac{1}{\mu l_0}) & 0 & 0 \\ -0 & \frac{12\mat{P}}{\mu l_0^3} & 0 \\ -0 & 0 & \frac{1}{\gamma} \\ -\end{array} -\right] -\left[ -\begin{array}{l} -\deltap \\ \deltaL \\ \deltag -\end{array} -\right]%\\ -%&= -%\mat{M}^{-1}\deltap -\label{eqn:motion} -\end{align} - - -\end{document} diff --git a/Doc/modules.pdf b/Doc/modules.pdf deleted file mode 100644 index 0340d954..00000000 Binary files a/Doc/modules.pdf and /dev/null differ diff --git a/Doc/modules.png b/Doc/modules.png deleted file mode 100644 index 9fcbb22e..00000000 Binary files a/Doc/modules.png and /dev/null differ diff --git a/DoxygenConfig b/DoxygenConfig deleted file mode 100644 index 86b2c5fe..00000000 --- a/DoxygenConfig +++ /dev/null @@ -1,2366 +0,0 @@ -# Doxyfile 1.8.9.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = Cellmodeller - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = YES - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /