From 90580d3bcd6090a59a16225365d12965f3e1a720 Mon Sep 17 00:00:00 2001 From: rmsegnitz <43895313+rmsegnitz@users.noreply.github.com> Date: Fri, 20 Feb 2026 21:02:12 -0800 Subject: [PATCH] Add geneLME: parallel per-gene LME with flexible contrast specification Introduces geneLME(), a parallelised per-gene linear mixed effects modelling function built on lme4/emmeans, with full contrast support and benchmarking against kimma::kmFit. Key features: - geneLME_contrast_spec(): pre-run helper to enumerate available contrast levels and build contrast_spec / contrasts_primary arguments - geneLME_build_contrast_args(): pre-computes Branch A contrast vectors once before parallel dispatch (eliminates per-gene rebuilds) - Branch A: explicit pairwise interaction contrasts via contrast_spec - Branch B: named contrast vectors on marginal means with optional 'by' grouping - Second-order contrasts (contrasts-of-contrasts) in both branches - Singular fit flagging: model_status = "singular_fit" instead of hard stop; results returned for all genes, filter downstream on model_status - Soft-fail on wrong-length contrasts_secondary with indexed $contrast_spec returned for debugging - FDR adjustment within term (ANOVA) or contrast x order (contrasts) - Warning suppression: lmer() rescaling + package version messages silenced - Pre-flight input validation with informative errors (11 checks) Benchmarked vs kimma::kmFit (2,000 genes, 8 cores, 5 reps): - 100% direction agreement with kimma across all contrast pairs - ~1.8x faster than kimma at 3-6 contrasts; equal speed at 66 - Estimate r=1.0, MAD~0 vs kimma after direction correction Includes: test suite, tutorial (Rmd + HTML), function overview (md + HTML), benchmark reports v1 and v2 (Rmd + HTML), dev history (geneLME_dev.R, geneLME_dev2.R), and CLAUDE_NOTES session log. Co-Authored-By: Claude Sonnet 4.5 --- Claud_next_steps.rtf | 38 + R_functions/CLAUDE_NOTES_geneLME.md | 569 +++ R_functions/geneLME.R | 1137 ++++- R_functions/geneLME_benchmark.Rmd | 635 +++ R_functions/geneLME_benchmark.html | 4032 ++++++++++++++++ R_functions/geneLME_benchmark2.Rmd | 637 +++ R_functions/geneLME_benchmark2.html | 3853 ++++++++++++++++ .../figure-html/bench-plot-combined-1.png | Bin 0 -> 104386 bytes .../figure-html/bench-plot-scaling-1.png | Bin 0 -> 99692 bytes .../figure-html/dev2-correctness-plot-1.png | Bin 0 -> 129893 bytes .../figure-html/sign-scatter-full-1.png | Bin 0 -> 192634 bytes .../figure-html/sign-scatter-naive-1.png | Bin 0 -> 142590 bytes .../accuracy-scatter-estimate-1.png | Bin 0 -> 129157 bytes .../figure-html/accuracy-scatter-t-1.png | Bin 0 -> 146667 bytes .../figure-html/bench-headtohead-plot-1.png | Bin 0 -> 63091 bytes .../figure-html/bench-selective-plot-1.png | Bin 0 -> 78968 bytes .../figure-html/bench-selective-scaling-1.png | Bin 0 -> 96867 bytes R_functions/geneLME_dev.R | 871 ++++ R_functions/geneLME_dev2.R | 908 ++++ R_functions/geneLME_function_overview.html | 611 +++ R_functions/geneLME_function_overview.md | 299 ++ R_functions/geneLME_test.R | 419 ++ R_functions/geneLME_tutorial.Rmd | 759 ++++ R_functions/geneLME_tutorial.html | 4034 +++++++++++++++++ 24 files changed, 18568 insertions(+), 234 deletions(-) create mode 100644 Claud_next_steps.rtf create mode 100644 R_functions/CLAUDE_NOTES_geneLME.md create mode 100644 R_functions/geneLME_benchmark.Rmd create mode 100644 R_functions/geneLME_benchmark.html create mode 100644 R_functions/geneLME_benchmark2.Rmd create mode 100644 R_functions/geneLME_benchmark2.html create mode 100644 R_functions/geneLME_benchmark2_files/figure-html/bench-plot-combined-1.png create mode 100644 R_functions/geneLME_benchmark2_files/figure-html/bench-plot-scaling-1.png create mode 100644 R_functions/geneLME_benchmark2_files/figure-html/dev2-correctness-plot-1.png create mode 100644 R_functions/geneLME_benchmark2_files/figure-html/sign-scatter-full-1.png create mode 100644 R_functions/geneLME_benchmark2_files/figure-html/sign-scatter-naive-1.png create mode 100644 R_functions/geneLME_benchmark_files/figure-html/accuracy-scatter-estimate-1.png create mode 100644 R_functions/geneLME_benchmark_files/figure-html/accuracy-scatter-t-1.png create mode 100644 R_functions/geneLME_benchmark_files/figure-html/bench-headtohead-plot-1.png create mode 100644 R_functions/geneLME_benchmark_files/figure-html/bench-selective-plot-1.png create mode 100644 R_functions/geneLME_benchmark_files/figure-html/bench-selective-scaling-1.png create mode 100644 R_functions/geneLME_dev.R create mode 100644 R_functions/geneLME_dev2.R create mode 100644 R_functions/geneLME_function_overview.html create mode 100644 R_functions/geneLME_function_overview.md create mode 100644 R_functions/geneLME_test.R create mode 100644 R_functions/geneLME_tutorial.Rmd create mode 100644 R_functions/geneLME_tutorial.html diff --git a/Claud_next_steps.rtf b/Claud_next_steps.rtf new file mode 100644 index 0000000..beb6944 --- /dev/null +++ b/Claud_next_steps.rtf @@ -0,0 +1,38 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2822 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;} +{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red255\green255\blue255;} +{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c100000\c100000\c100000;} +\margl1440\margr1440\vieww13240\viewh11160\viewkind0 +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 + +\f0\fs24 \cf0 # Notes for next session\ +Check your CLAUDE_NOTES and familiarize yourself with geneLME_dev.R and geneLME_dev2.R\ +\ +\ +Pick up with: verifying and validating the dev2 version. I have tested this and still encountered errors stemming from functions not explicitly called from required packages (eg. Line 849: plan(multisession, workers=workers). I corrected this where I could find it, but please review and make sure my specifications are valid and correct all such instances. If needed, should we add explicit package calling to anyplace that non base functions are called?\ +\ +I\'92d also like you to please edit the functions to silence internal warnings such as \'93 +\f1\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 ## Warning: package \'91lme4\'92 was built under R version 4.5.2\'94 +\f0\fs24 \cf0 \cb1 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 or other messages about package versioning. \ +\ +I\'92ve also encountered the warnings \ +\'93 +\f1\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 Warning: Some predictor variables are on very different scales: consider rescaling. \ +\pard\pardeftab720\partightenfactor0 +\cf2 \cb3 \strokec2 ## You may also use (g)lmerControl(autoscale = TRUE) to improve numerical stability.\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 + +\f0\fs24 \cf0 \cb1 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 \'93\ +\ +This may be good rational for setting \'93 +\f1\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0 +lmerControl(autoscale = TRUE)\'94 +\f0\fs24 \cf0 \cb1 \kerning1\expnd0\expndtw0 internally, though I had thought this was the default behavior in lme4 now. If indeed it is, then we should certainly silence that. \ +\ +Once the dev2 version has been more thoroughly debugged, it can be merged into the main geneLME.R script.\ +\ +\ +\ +} \ No newline at end of file diff --git a/R_functions/CLAUDE_NOTES_geneLME.md b/R_functions/CLAUDE_NOTES_geneLME.md new file mode 100644 index 0000000..fa73f11 --- /dev/null +++ b/R_functions/CLAUDE_NOTES_geneLME.md @@ -0,0 +1,569 @@ +# geneLME Project — Claude Session Notes + +> **How to use this file:** At the start of each session, ask Claude to read this file. +> Claude should update the "Current Status" and "Session Log" sections at the end of any +> session where meaningful progress is made. + +--- + +## Project Overview + +**Goal:** A scalable, parallelized per-gene linear mixed effects (LME) modelling function for +RNA-seq expression data stored in a `limma` EList (`dat`) object. Key features: +- Fits one `lmer` model per gene in parallel via `future_lapply` +- Extracts ANOVA table, coefficient estimates, and emmeans-based contrasts +- Supports weighted models (voom weights from `dat$weights`) +- Supports flexible contrast specification including interaction terms + +**Active worktree:** `.claude/worktrees/reverent-satoshi/` +**Key files:** +- `R_functions/geneLME.R` — current stable (merged from dev2 2026-02-20; fully featured) +- `R_functions/geneLME_dev.R` — former dev version (superseded; kept for reference) +- `R_functions/geneLME_dev2.R` — former dev2 (now merged into geneLME.R; kept for reference) +- `R_functions/geneLME_test.R` — mock data and full test suite (SOURCE_FILE variable selects version) +- `R_functions/geneLME_benchmark.Rmd` — v1 benchmark (geneLME vs kimma) +- `R_functions/geneLME_benchmark2.Rmd` — v2 benchmark (sign consistency + speed vs kimma; dev2 correctness section removed post-merge) +- `R_functions/CLAUDE_NOTES_geneLME.md` — this file + +--- + +## Architecture Summary + +The code is split into five functions: + +| Function | Role | +|---|---| +| `geneLME_contrast_spec()` | Helper: generates a contrast level reference template. Two modes (see below). | +| `geneLME_build_contrast_args()` | Branch A helper: pre-computes `contrasts_list` + `spec_lookup` once before parallel dispatch. | +| `geneLME_fit()` | Per-gene worker: fits lmer, extracts ANOVA + contrasts. Runs inside `future_lapply`. | +| `geneLME_dispatch()` | Parallel launcher: calls `future_lapply` with explicit `future.globals` to avoid environment scanning overhead. | +| `geneLME_compiler()` | Aggregator: binds per-gene results into tidy data frames. | +| `geneLME()` | User-facing wrapper: validates inputs, pre-slices data, sets parallel plan, calls dispatch + compiler. | + +### Key Design Decisions Made + +1. **Per-gene pre-slicing** — `dat$E` and `dat$weights` are sliced into a `gene_data_list` of small bundles + *before* entering the parallel stage. This avoids serializing the full EList to every worker. +2. **Formula passed as string** — `formula_str` (a plain character string) is passed to workers, which + reconstruct the formula locally. Avoids locked-environment errors from passing formula objects with + environment references across futures. +3. **Explicit `future.globals`** — `geneLME_dispatch()` explicitly lists all globals rather than relying + on future's automatic environment scan, preventing accidental capture of large objects. +4. **`on.exit(plan(sequential))`** — restores the user's parallel plan after the run completes. +5. **Singular fit flagged, not errored** — `isSingular()` is checked and sets `model_status = "singular_fit"`. + Results are returned for all genes; users filter downstream on `model_status`. Fixed effect estimates + and contrasts are numerically valid even for singular fits — only the random effect structure is unreliable. + +--- + +## Contrast System (`geneLME_dev.R`) + +Two contrast branches in `geneLME_fit()`: + +### Branch A: Interaction contrasts (`contrast_vars` contains `":"`) +- `contrast_vars` is a single string e.g. `"treatment:visit"`. +- **`contrast_spec`** (required): a data.frame with columns `contrast_ref` and `contrast_lvl`. + Each row defines one pairwise contrast across interaction cells. Contrast vectors are built from the + emmeans level ordering to guarantee index alignment. +- Use `geneLME_contrast_spec(dat$targets, contrast_vars = "treatment:visit")` to generate the full + pairwise template, then filter to the rows of interest before passing as `contrast_spec`. +- The formula must contain the corresponding interaction term (`treatment:visit` or `treatment*visit`); + `geneLME()` validation enforces this — emmeans would otherwise silently use additive margins. + +### Branch B: Non-interaction contrasts +- `contrast_vars` is a character vector of 1–2 variable names. +- `contrasts_primary`: named list of contrast vectors. Vector length must match the number of levels + of `contrast_vars[1]`, in alphabetical order (or the order emmeans sees them). +- `contrasts_secondary`: optional second-order contrast (contrast-of-contrasts). +- `contrast_var_2_levels`: optional filter on levels of the second `by` variable. + +### Helper: `geneLME_contrast_spec(targets, contrast_vars)` +Two modes determined by whether `contrast_vars` contains `":"`: + +- **Interaction mode** (`"treatment:visit"`): returns a data.frame with columns `contrast_ref` and + `contrast_lvl` **only** (no `contrast_index`). One row per pairwise combination of interaction-level + strings. User filters and passes as `contrast_spec` to `geneLME()`. + - `contrast_index` is NOT part of the `geneLME_contrast_spec()` output. Instead, `geneLME()` attaches + an indexed copy of the user's filtered spec to its return value as `$contrast_spec`, with + `contrast_index = 1:nrow(contrast_spec)` (simple row positions within the filtered spec). + This is the index users should reference when building `contrasts_secondary` vectors. + - Ordering guarantee: both `var_a` and `var_b` components of `contrast_ref` are always at a + level-index ≤ the corresponding component in `contrast_lvl` (factor level order for factors, + alphabetical for plain characters). This is enforced by explicit factor coercion before + `interaction(...) %>% levels()`. + - Swap tolerance: users may manually swap ref/lvl in any row after filtering. `geneLME_fit()` + handles either direction — the contrast estimate sign flips, but no error occurs. +- **Single-variable mode** (`"treatment"`): returns a data.frame with a single column `level`, listing + unique sorted values of that variable. This is a reference only — used when building `contrasts_primary` + vectors for Branch B. Not passed to `geneLME()` directly. + +--- + +## Function Signatures (current `geneLME_dev.R`) + +```r +geneLME_contrast_spec(targets, contrast_vars) +# Returns: data.frame(contrast_ref, contrast_lvl) [interaction mode] +# or named list of data.frame(level) [single/multi-variable mode] + +geneLME_fit(gene_name, expression_vec, weight_vec, targets, + formula_str, run_contrast, contrast_vars, + contrast_var_2_levels, contrast_spec, + contrasts_primary, contrasts_secondary) + +geneLME_dispatch(gene_data_list, targets_df, formula_str, + run_contrast, contrast_vars, contrast_var_2_levels, + contrast_spec, contrasts_primary, contrasts_secondary) + +geneLME_compiler(fit, fdr_method = "BH", contrast_spec = NULL) +# Returns: list(lme_anova, lme_contrast, lme_fit, lme_err, contrast_spec) + +geneLME(dat, formula_str, + model_weights = NULL, + run_contrast = NULL, + contrast_vars = NULL, + contrast_var_2_levels = NULL, + contrast_spec = NULL, # required when contrast_vars contains ":" + contrasts_primary = NULL, + contrasts_secondary = NULL, + fdr_method = "BH", # any method accepted by p.adjust() + n_cores = NULL) +# Returns: list(lme_anova, lme_contrast, lme_fit, lme_err, contrast_spec) +# $lme_contrast columns include contrast_ref and contrast_lvl: +# - Branch A first-order: populated from contrast_spec (unambiguous sign reference) +# - Branch A second-order, Branch B (all): NA (no single ref/lvl pair) +# $contrast_spec: indexed copy of the filtered contrast_spec (Branch A) or +# data.frame(contrast_index, contrast_name) from contrasts_primary (Branch B); +# NULL when no contrasts run. +# On soft-fail (wrong-length contrasts_secondary): all elements NULL except $contrast_spec. +``` + +Note: `contrast_by` parameter was removed in session 2026-02-19 (Branch A2 eliminated). + +--- + +## Validation Checks in `geneLME()` + +1. All formula variables present in `dat$targets` +2. `dat$weights` present and dimension-matched if `model_weights = TRUE` +3. `contrast_vars` not NULL when `run_contrast = TRUE` +4. **Formula-vs-`contrast_vars` consistency:** + - Interaction contrasts: interaction term must exist in `formula_str` (uses `attr(terms(), "term.labels")`) + - Non-interaction contrasts: each `contrast_vars` element warned if absent as main effect +5. `contrast_spec` required (not NULL) when `contrast_vars` contains `":"` +6. `contrast_spec` column names validated (`contrast_ref`, `contrast_lvl`) +7. All `contrast_vars` components present in `dat$targets` +8. `contrast_var_2_levels` values valid against actual data levels +9. `fdr_method` validated against `p.adjust.methods` +10. `contrasts_secondary` vector lengths validated (**soft-fail**, not hard stop): + - Branch A: each vector must have length == `nrow(contrast_spec)` (the filtered spec, NOT the full template) + - Branch B: each vector must have length == `length(contrasts_primary)` + - On mismatch: emits a `message()` naming offending vectors (observed vs expected length), + then returns `invisible(list(lme_anova=NULL, lme_contrast=NULL, lme_fit=NULL, lme_err=NULL, contrast_spec=indexed_contrast_spec))` + - `$contrast_spec` in the returned list contains the indexed spec so the user can inspect + row ordering and fix their vectors without needing to re-run everything +11. Warn on likely ID columns used as predictors + +--- + +## Current Status + +**Date of last update:** 2026-02-20 (Session 15) + +**Stage:** `geneLME_dev2.R` merged into `geneLME.R` (now the single active stable file). +All tests pass. Warning suppression added. Documentation updated. + +**Benchmark results (2,000 genes, 5 reps, 8 cores) — geneLME_benchmark2.html (Session 15):** + +| Metric | Result | +|---|---| +| Sign consistency (geneLME vs kimma) | 3300/3300 (100%) same direction — no flipped pairs | +| Estimate r (direction-corrected) | 1.00000000 | +| Estimate MAD (direction-corrected) | 1.16e-15 (effectively 0 — floating point only) | +| geneLME 3 contrasts median | 17.4 s (1.85× faster than kimma) | +| geneLME 6 contrasts median | 18.1 s (1.78× faster than kimma) | +| geneLME 66 contrasts median | 32.6 s (0.99× — effectively equal to kimma) | +| kimma (66 contrasts) median | 32.1 s | + +**Key findings:** +- geneLME and kimma always agree on contrast direction (100%) — no sign inversion issue +- kimma's `statistic` column is the **negated** t-statistic (opposite sign to estimate) +- geneLME is ~1.8× faster than kimma when running fewer contrasts (3–6); equal speed at 66 +- Warning suppression confirmed working — no package version or rescaling warnings in output + +**Possible future tasks:** +1. Build runtime scaling estimates: cores × genes × contrasts → expected runtime on this machine + +--- + +## Known Issues / Open Questions + +- [x] `geneLME.R` (stable) — interaction contrast support merged 2026-02-20 +- [x] `geneLME_dev2.R` — tested (all tests pass) and benchmarked (geneLME_benchmark2.html generated) +- **kimma `statistic` column:** kimma's `$lme.contrast$statistic` is `–(estimate/SE)` — the **negated** + t-statistic (opposite sign to estimate). To compare against geneLME `t.ratio`, use `-statistic`. + This was discovered during benchmark2 sign-consistency investigation. +- [ ] `contrast_spec` level ordering with non-alphabetical factors: explicit factor coercion is now + in place in `geneLME_contrast_spec()` (uses existing factor levels if present, otherwise + alphabetical). However, `emmeans` must also see the same level ordering — emmeans inherits + factor levels from the model data, so as long as `dat$targets` columns have matching factor + levels, alignment is guaranteed. This has not been explicitly tested with a non-alphabetical + user-defined factor ordering; worth a targeted test if this use case arises. +- [ ] With only 10 patients, `lmer` fits are singular (patient random effect collinear with + patient-level covariates sex/age). All 10 genes show `isSingular = TRUE` in tests. This is + expected with small mock N and does NOT affect correctness testing. Real data with larger N + will not have this issue. +- [ ] Branch B `contrasts_primary` vector construction: users must supply vectors whose length matches + the number of levels of `contrast_vars[1]` in the order emmeans sees them (alphabetical by + default). This is implicit and could be a source of user error. Consider adding a runtime check + that compares vector length to actual emmeans level count. +- [ ] Non-alphabetical factor level ordering: explicit factor coercion is now in place in + `geneLME_contrast_spec()` (preserves existing factor levels, otherwise alphabetical). + Alignment with `emmeans` internal ordering has not been explicitly tested with a + user-defined non-alphabetical factor; worth a targeted test if this arises. + +--- + +## Bugs Fixed + +### Session 2026-02-19 — Bug 1: Branch A1 returned 0-row contrast result +**Root cause:** `vector("list", n)` pre-allocates n NULL slots indexed by integer. Subsequent +named assignment (`contrasts_list[["name"]] <- cv`) *appends* rather than filling existing slots, +leaving the first n slots as unnamed NULLs. `contrast()` silently skipped NULLs, leaving a +malformed result that `as.data.frame()` could not coerce. +**Fix:** Build `contrasts_list` as `list()` and assign each element by name from the start. + +### Session 2026-02-19 — Bug 2: Branch A2 `"Nonconforming number of contrast coefficients"` +**Root cause:** The `"second"` direction (`var_b | var_a`) was incorrectly passing `contrast_var_2_levels` +keyed to `var_a`, injecting visit-level strings as treatment levels. Additionally, `contrasts_primary` +has length matching var_a's level count (3) but var_b has 4 levels — structurally incompatible. +**Resolution:** Branch A2 (`contrast_by`) was removed entirely per user decision (see Session Log). + +--- + +## Session Log + +### Session 15 — 2026-02-20 +- **Completed merge of `geneLME_dev2.R` → `geneLME.R`** (picked up where Session 14 left off). + Remaining edits applied to `geneLME()` function body: + - Added `contrasts_list <- NULL` and `spec_lookup <- NULL` initialisations. + - Added `geneLME_build_contrast_args()` pre-compute block (inside `run_contrast`, outside + `!is.null(contrast_spec)` — called only when `is_interaction`). + - Updated `plan()` calls: `plan(multisession)` → `future::plan(future::multisession, workers = workers)`; + `on.exit(plan(sequential))` → `on.exit(future::plan(future::sequential), add = TRUE)`. + - Updated `geneLME_dispatch()` call: `contrast_spec` → `contrasts_list` + `spec_lookup`. +- **Warning suppression** (from `Claud_next_steps.rtf`): + - **lmer() rescaling warning** (`"Some predictor variables are on very different scales"`): + Added `check.scaleX = "ignore"` to a shared `lme_ctrl <- lmerControl(...)` object used + for both weighted and unweighted `lmer()` calls in `geneLME_fit()`. + - **Package version warnings** (`"package 'lme4' was built under R version X.Y.Z"`): + Two-pronged approach: + 1. Removed `future.packages = c(...)` from `future_lapply`; added explicit + `suppressPackageStartupMessages(suppressWarnings({ library(lme4); ... }))` block at + the top of `geneLME_fit()` — gives full control over how packages load on workers. + 2. Wrapped `future_lapply(...)` in `withCallingHandlers()` in `geneLME_dispatch()` with + a handler that muffles any warning matching `"was built under R version"`, catching + warnings that the future framework re-raises on the main process after collecting worker results. +- **All `geneLME_test.R` tests pass** against merged `geneLME.R` (SOURCE_FILE updated to `"geneLME.R"`): + Branch A (10/10, 80 ANOVA + 60 contrast), Branch A2 (80 total rows, 60+20 orders), + Branch B (10/10, 70+60), validation 6a–6f (all PASS), soft-fail 6g (both branches PASS). + Worker-sourced package-version warnings no longer appear in test output. +- **Updated `geneLME_tutorial.Rmd`:** + - `source("geneLME_dev.R")` → `source("geneLME.R")` + - Key capabilities bullet: updated from "per-gene error capture" to `model_status` flagging description + - Error Handling section: replaced old stop-based singular fit description with new `model_status` + flagging explanation; updated code to check `!= "success"` for all non-success genes (not just failed) + and added filter example (`result$lme_contrast %>% filter(model_status == "success")`). +- **Updated `geneLME_function_overview.md`:** + - Companion file reference: `geneLME_dev.R` → `geneLME.R`; date updated to 2026-02-20 + - Function Map: added `geneLME_build_contrast_args()` row + - `lme_err` output table entry: updated to describe `"singular_fit"` as a valid value + - Error Handling section: rewrote to describe `model_status` flagging; removed old + `"Boundary (singular) fit"` stop-based description +- **Updated `CLAUDE_NOTES_geneLME.md`:** + - Key files: `geneLME_dev2.R` now "former dev2 (merged); kept for reference" + - Architecture: `geneLME_build_contrast_args()` added to function table + - Design decision 5: updated from "error" to "flagged, not errored" + - Current Status: stage updated to reflect completed merge +- **Re-ran `geneLME_benchmark2.Rmd`** against merged `geneLME.R` only (dev2 correctness section + removed; report now focuses solely on geneLME vs kimma). Fresh results (Session 15): + - Sign consistency: 3300/3300 (100%) same direction, r=1.00000000, MAD=1.16e-15 + - Speed: geneLME 1.85× faster than kimma at 3 contrasts, 1.78× at 6, effectively equal (0.99×) at 66 + - Rendered `geneLME_function_overview.html` via pandoc for easy review + +### Session 14 — 2026-02-20 +- **Confirmed `geneLME.R` (stable) is correct** — does NOT contain dev2 changes (no + `geneLME_build_contrast_args`, no `singular_fit` flagging); the concern about overwrite was unfounded. +- **Audited `geneLME_dev2.R` for unqualified package calls** — all non-base function calls + are correctly handled: `future::plan()`, `future::multisession`, `future::sequential`, and + `future.apply::future_lapply()` are fully qualified in `geneLME()`/`geneLME_dispatch()`; + worker-side calls (`lmer`, `emmeans`, etc.) rely on `future.packages` which loads all required + packages on each worker. No bare unqualified calls that would fail outside an interactive session. +- **All `geneLME_test.R` tests pass** against `geneLME_dev2.R`: + Branch A (10/10 success, 80 ANOVA + 60 contrast rows), Branch A second-order (60+20 rows), + Branch B (10/10 success, 70+60 rows), all 6 validation error tests (6a–6f), soft-fail (6g). +- **Debugged and fixed `geneLME_benchmark2.Rmd`:** + 1. `sign-inspect` chunk: kimma has no `contrast` string column → rewrote to compare + `contrast_ref`/`contrast_lvl` pairs directly using canonical pair keys. + 2. Kimma t-statistic: discovered kimma's `statistic` column is the **negated** t-statistic + (`–estimate/SE`), not the absolute value. Fixed reconstruction to `-statistic`. + 3. Inline `` `r ≈ 1.0` `` parsed as R code → converted to plain text. + 4. Multi-line `if/else` → wrapped in braces to prevent premature statement termination. + 5. `stable_success`: `lme_err` has no names → derived success genes from contrast table instead. +- **`geneLME_benchmark2.html` generated successfully** (44/44 chunks, no errors). +- **Benchmark results:** See Current Status table above. Summary: + - 100% direction agreement with kimma (no flipped pairs) + - dev2 estimates identical to stable (r=1.0, MAD=0) + - dev2 ~1.1–1.2× faster than stable; equal speed to kimma at 66 contrasts + +### Session 13 — 2026-02-20 +- **Created `geneLME_benchmark2.Rmd`** — v2 benchmarking report covering: + 1. **Sign consistency (Section 1):** Direction-aware join between geneLME and kimma. + Forward join (same ref/lvl) + flipped join (kimma ref/lvl swapped) combined. + Scatter plots of estimates and t-statistics before and after direction correction. + Summary table reports % pairs with direction agreement and corrected accuracy metrics. + 2. **dev2 correctness (Section 2):** geneLME.R vs geneLME_dev2.R on same 50-gene, + 6-contrast problem. Joined on (gene, contrast); reports r, MAD, max|Δ| for estimates. + Also shows model_status distribution (singular_fit vs success) in dev2 output. + 3. **Speed comparison (Section 3):** Microbenchmark (5 reps each) sourcing stable and + dev2 sequentially to avoid namespace collision. Bar chart + scaling line plot + comparing all three methods (stable, dev2, kimma) at 3/6/66 contrasts. + Summary table includes dev2 speedup ratios vs stable and vs kimma. +- Requires `gridExtra` package (added to libs chunk) + +### Session 12 — 2026-02-20 +- **Created `geneLME_dev2.R`** with two changes vs `geneLME.R`: + 1. **Singular fit → flag:** `isSingular()` check changed from `stop()` to setting + `model_status = "singular_fit"`. Results returned for all genes; users filter + downstream on `model_status`. `model_status` column now appears in both + `lme_anova` and `lme_contrast` output. + 2. **Pre-computed Branch A contrast structures:** New `geneLME_build_contrast_args()` + helper called once in `geneLME()` before parallel dispatch. Returns `contrasts_list` + (named vector list) and `spec_lookup` (ref/lvl join table). Workers receive these + ready-made; the per-gene `for` loop building contrast vectors is eliminated. + `geneLME_dispatch()` and `geneLME_fit()` signatures updated accordingly + (`contrast_spec` parameter replaced by `contrasts_list` + `spec_lookup`). + - Level ordering in `geneLME_build_contrast_args()` uses the same factor-coercion + logic as `geneLME_contrast_spec()` (preserves existing factor levels; alphabetical + otherwise), ensuring alignment with emmeans' internal ordering without requiring + a fitted model object. +- **Updated `geneLME_test.R`:** + - Added `SOURCE_FILE` variable at top for easy switching between implementations + - Test 4: added singular-fit verification block (checks non-NA estimates for flagged genes) + - Tests 4 and 5: updated output display to show `model_status` column + - Note: with 10-patient mock data all genes are expected to be `singular_fit`, not errors + +### Session 11 — 2026-02-20 +- Merged `geneLME_dev.R` → `geneLME.R` as the new stable version +- Added merge changelog to `geneLME.R` header +- Removed stale "PICKUP HERE" comment and dev-only header label +- Updated CLAUDE_NOTES key files and current status sections + +### Session 1 — 2026-02-19 (first session) +- Identified correct active worktree (`reverent-satoshi`) +- Created `CLAUDE_NOTES_geneLME.md` (this file) +- Created `geneLME_test.R` with mock EList: + - 10 patients × 3 treatments × 4 visits = 120 samples, 50 genes + - Patient-level covariates: `sex` (factor), `age` (continuous) + - Sample-level technical covariates: `rNANgUl`, `percent_duplication`, + `median_cv_coverage`, `lib.size`, `norm.factors` +- Ran full test suite; identified and fixed two bugs in `geneLME_dev.R` +- All three contrast branches (A1, A2, B) passed initially after fixes + +### Session 10 — 2026-02-19 (tenth context window) +- **Created `geneLME_benchmark.Rmd`** (→ `geneLME_benchmark.html`): kimma vs geneLME benchmarking report + - **Mock data:** 10 patients × 3 treatments × 4 visits = 120 samples, 2000 genes; genes 1–100 + have +2.5 log2 TrtC:V3 effect; `libID = sample_id` added to targets for kimma compatibility + - **Contrast subsets defined:** + - `spec_3` (3): longitudinal V2→V3 within-treatment + - `spec_6` (6): between-treatment within-visit at V2 and V3 + - `spec_full` (66): all pairwise — equivalent to kimma's default output + - **Section 1 (Accuracy):** both methods on 50-gene subset with all 66 contrasts. + Results joined on `(gene, contrast_ref, contrast_lvl)` — both methods now have these columns. + Reports Pearson r and MAD for estimates and t-statistics; scatter plots included. + Note: geneLME excludes singular-fit genes (treated as error); kimma returns estimates silently. + - **Section 2 (Selective contrast efficiency):** `microbenchmark(times=5)` on 2000-gene full + dataset comparing geneLME with 3/6/66 contrasts and kimma with 66 contrasts. Bar chart + + scaling plot showing linear runtime scaling with n_contrasts for geneLME. + - **Section 3 (Head-to-head):** reuses 66-contrast runs from Section 2 to compare + geneLME vs kimma directly at equal contrast count. Reports speedup ratio. + - **kimma interface notes:** + - `libraryID = "libID"` required — added `libID` column to targets + - `contrast_var = "treatment:visit"` runs all 66 pairwise automatically + - Output: `$lme.contrast` with columns `gene, contrast_ref, contrast_lvl, estimate, statistic, pval, FDR, std.error, df` + - `statistic` = t-ratio (same as geneLME `t.ratio`); `pval` = p-value; `std.error` = SE + - **Key finding expected:** estimates identical (r ≈ 1.0, MAD ≈ 0) for shared non-singular genes; + geneLME faster when running fewer contrasts; head-to-head speed depends on parallelism overhead + +### Session 9 — 2026-02-19 (ninth context window) +- **Added `contrast_ref` and `contrast_lvl` to `lme_contrast` output** in `geneLME_fit()`: + - Branch A first-order: built a `spec_lookup` data.frame keyed on the contrast name string + (`paste(contrast_lvl, contrast_ref, sep = " - ")`), then `left_join`-ed onto the emmeans + first-order result by `"contrast"`. This ensures `contrast_ref` = the −1 cell and + `contrast_lvl` = the +1 cell, eliminating sign ambiguity. + - Branch A second-order: `contrast_ref = NA_character_, contrast_lvl = NA_character_` + (no single ref/lvl pair applies to a contrast-of-contrasts). + - Branch B (all rows): `contrast_ref = NA_character_, contrast_lvl = NA_character_` + (Branch B uses named coefficient vectors, not a ref/lvl spec). + - Error stub data.frame in `tryCatch` handler: added both NA columns for schema consistency. +- **Tutorial Rmd updated:** added `contrast_ref`/`contrast_lvl` to `select()` calls in all + contrast output display chunks; added explanatory prose in the `lme_contrast` description. +- **CLAUDE_NOTES updated:** added columns to return value documentation. +- Next up: kimma benchmarking (2000-gene mock, speed + estimate comparison). + +### Session 8 — 2026-02-19 (eighth context window) +- **Redesigned `contrast_index` system** — root cause was that `contrast_index` in the + `geneLME_contrast_spec()` output was being misused: users built `contrasts_secondary` vectors + using the full template's row count as the vector length (234 elements) instead of the filtered + spec's row count. `which(my_spec$contrast_index == ...)` correctly identified positions within + `my_spec`, but the outer `rep(0, nrow(full_template))` produced vectors of the wrong length. +- **`geneLME_contrast_spec()` output simplified:** removed `contrast_index` column entirely. + Output is now a two-column data.frame (`contrast_ref`, `contrast_lvl`) only. +- **`geneLME()` now appends `$contrast_spec` to its return value:** + - Branch A: `contrast_spec %>% mutate(contrast_index = seq_len(n())) %>% select(contrast_index, everything())` + — `contrast_index` is `1:nrow(contrast_spec)` (row positions within the *filtered* spec the user passed in) + - Branch B: `data.frame(contrast_index = seq_along(contrasts_primary), contrast_name = names(contrasts_primary))` + - NULL when no contrasts are run +- **Soft-fail on wrong-length `contrasts_secondary`** (changed from hard `stop()`): + - Emits an informative `message()` naming offending vectors, observed length, expected length + - Returns `invisible(list(lme_anova=NULL, lme_contrast=NULL, lme_fit=NULL, lme_err=NULL, contrast_spec=indexed_contrast_spec))` + - User can inspect `result$contrast_spec` to fix their vectors without running any models +- **`geneLME_compiler()` updated:** now accepts `contrast_spec = NULL` argument; includes it in + return list; added column-existence guard for no-contrast runs (prevented crash on empty contrast tibble) +- **Tutorial Rmd updated:** + - `contrast-spec-interaction` chunk: added comment explaining `contrast_index` is NOT in + `spec_template`, is added by `geneLME()` to `$contrast_spec` + - Added `$contrast_spec` display to the Branch A output structure chunk + - Branch A second-order chunk: updated comments to reference `result_A$contrast_spec` for + row-order verification + - Programmatic secondary contrast section: rewritten to use `result_A$contrast_spec` (the + indexed spec from `geneLME()`) instead of `my_spec$contrast_index` + - Added soft-fail validation test (Test 7) to Input Validation section + - Quick-reference table: updated `contrast_spec` description; updated `contrasts_secondary` + description to mention soft-fail + - Key capabilities: added soft-fail bullet +- **`geneLME_test.R` updated:** + - Test 3: removed `contrast_index` range check; updated comment to explain columns + - Test 4b: updated comments to reference `test_A$contrast_spec` for indexed ordering; + corrected `contrasts_secondary` vectors to match actual alphabetical row ordering + (V2 rows 1–3 before V3 rows 4–6); added `print(test_A$contrast_spec)` before test_A2 call + - Added test 6g: soft-fail validation for both Branch A and Branch B wrong-length vectors + +### Session 7 — 2026-02-19 (seventh context window) +- **Root-caused the real-data NA/warning failure:** + - User shared real-data `contrasts_secondary` vectors: length 234 (= nrow of full + unfiltered spec_template). The filtered `contrast_spec` passed to `geneLME()` had far + fewer rows. emmeans throws "Nonconforming number of contrast coefficients" which is + silently caught by `tryCatch` inside `geneLME_fit()`, producing NA-filled rows. + - The programmatic builder from Session 4 used `rep(0, nrow(defined_contrasts_spec))` + where `defined_contrasts_spec` referred to the full template — should be + `nrow(filtered_spec)`. The `which(my_spec$contrast_index == ...)` index lookup was + correct; only the vector length was wrong. +- **Fix: added `contrasts_secondary` length validation to `geneLME()` pre-flight:** + - Branch A (interaction): checked that every vector in `contrasts_secondary` has length + == `nrow(contrast_spec)` (the filtered spec passed in, NOT the full template). + Error message names the offending vectors, shows observed vs expected length, and + explains the common cause (full template vs filtered spec confusion). + - Branch B (non-interaction): checked that every vector has length == + `length(contrasts_primary)`. + - Both checks fire before any parallel work launches — so the user gets a clear, + immediate error instead of silent NAs in results. +- User's real-data fix: rebuild `contrasts_secondary` vectors using + `rep(0, nrow(defined_contrasts_geneLME))` (filtered spec row count) and + `which(defined_contrasts_geneLME$contrast_index == ...)` for index lookup. + +### Session 6 — 2026-02-19 (sixth context window) +- **Diagnosed and fixed second-order contrast warning + spurious NA issue:** + - Symptom: rescaling warnings ("Some predictor variables are on very different scales") + and occasional NA-filled outputs when running with `contrasts_secondary`. + - Root cause (warnings): `emmeans::contrast()` called on a first-order contrast object + internally re-invokes lme4 machinery on the first-order estimate/SE values, which can be + on different scales from the original predictors → benign lme4 scale warning, no effect + on results. Confirmed output is correct by single-gene isolated test. + - Root cause (NAs): not a code bug — was a stochastic singular-fit outcome in the small + mock data (10 patients), not reproducible when re-run. `isSingular()` check is correct. + - Fix 1: wrapped second-order `contrast()` calls in `suppressWarnings()` in **both** Branch A + and Branch B of `geneLME_fit()`, with explanatory comment. Warning is cosmetic only. + - Fix 2 (latent bug): both Branch A and Branch B were gating second-order contrasts with + `length(contrasts_list) > 1` / `length(contrasts_primary) > 1`. This incorrectly + prevented second-order contrasts when only one first-order contrast existed. Changed + both to simply `!is.null(contrasts_secondary)` — the user's provision of + `contrasts_secondary` is the correct and sufficient gate. +- Verified fix: all 10 genes succeed, 60 first-order + 20 second-order rows, all + `p.value_adj` non-NA, zero warnings emitted. + +### Session 5 — 2026-02-19 (fifth context window) +- Added FDR-adjusted p-values (`p.value_adj`) to both `lme_anova` and `lme_contrast` outputs: + - **`geneLME_compiler()`**: now accepts `fdr_method = "BH"` argument; applies `p.adjust()` + within grouped sets after binding all per-gene results: + - `lme_anova`: grouped by `term` — each model term adjusted independently across genes + - `lme_contrast`: grouped by `contrast × contrast_order` — each contrast (including + first- and second-order separately) adjusted independently across genes + - **`geneLME()`**: added `fdr_method = "BH"` argument (any `p.adjust.methods` value valid); + validated against `p.adjust.methods` in pre-flight checks; passed through to compiler + - NA p-values (failed genes) propagate to `p.value_adj` as NA — they are excluded from the + effective adjustment set automatically by `p.adjust()` +- Updated `geneLME_tutorial.Rmd`: + - Added `p.value_adj` to `select()` calls in ANOVA and contrast output display chunks + - Updated descriptions of `lme_anova` and `lme_contrast` to explain grouping logic + - Added new "FDR Adjustment" section (before Input Validation) with grouping table, + method list, and BH vs Bonferroni comparison example + - Added `fdr_method` row to quick-reference argument table +- CLAUDE_NOTES: updated function signatures (added `geneLME_compiler` signature, `fdr_method` + arg to `geneLME`), validation check list (item 9), and current status + +### Session 4 — 2026-02-19 (fourth context window) +- User provided a real-data pattern for programmatic secondary contrast construction using + `contrast_index`. Reviewed approach and identified improvements: + - Replaced `group_by` + `reframe` with `last()`/`first()` with a more robust `summarise` + producing explicit `index_neg`/`index_pos` columns (two-column wide shape) + - Removed unused `nest` + `rowwise` + dead `secondary_contrast` list column + - Replaced opaque `[[i]][1,1][[1]]` nested indexing with `which(my_spec$contrast_index == ...)` + for transparent index-to-row-position mapping + - Replaced `for` loop with `setNames(lapply(...))` pattern consistent with how + `contrasts_primary` is specified elsewhere +- Added new tutorial section "Programmatic second-order contrast construction via `contrast_index`" + to `geneLME_tutorial.Rmd` (between Branch A second-order and Branch B sections) +- Updated quick-reference table to include `contrast_index` in `contrast_spec` column description + +### Session 3 — 2026-02-19 (third context window) +- Three improvements to `geneLME_contrast_spec()` interaction mode: + 1. **Factor-level ordering enforced**: both `var_a` and `var_b` are explicitly coerced to + factors before calling `interaction()`. Existing factor levels are preserved; plain character + columns get alphabetical ordering imposed. This guarantees `contrast_ref` component levels ≤ + `contrast_lvl` component levels (for both variables), consistent with emmeans' internal ordering. + 2. **Swap tolerance documented**: `geneLME_fit()` Branch A already handled swapped ref/lvl + gracefully (sign flip, no error). Added explicit comment in the contrast vector construction + loop documenting this behaviour. + 3. **`contrast_index` column added**: `geneLME_contrast_spec()` interaction mode now returns + a `contrast_index` column (integer, 1-based) as the first column. This index is stable — it + reflects the row's position in the *full unfiltered template* and survives user `filter()` calls. + Intended for downstream use (e.g. joining back to results, building `contrasts_secondary` + with explicit index reference). Tutorial example to be added in a future session. +- Updated `geneLME_test.R`: + - Added `contrast_index` range check in test 3 + - Updated test 4b comments to reflect corrected row ordering (alphabetical interaction levels: + V2 rows before V3 rows) and corrected `contrasts_secondary` vectors accordingly +- Both `geneLME_dev.R` and `geneLME.R` preserved separately (user preference) + +### Session 2 — 2026-02-19 (same day, second context window) +- Reviewed all three branches with user; demonstrated outputs +- **User decision:** eliminate Branch A2 (`contrast_by`) entirely + - Rationale: specifying contrasts in both directions is error-prone; pairwise contrasts + for the second variable can be computationally excessive with many levels +- **Design changes implemented:** + 1. Extended `geneLME_contrast_spec()` to two modes: + - Interaction mode: returns `contrast_ref`/`contrast_lvl` pairs (unchanged) + - Single-variable mode: returns `level` reference frame (new) + 2. Added formula-vs-`contrast_vars` consistency check using `attr(terms(), "term.labels")`: + - Interaction contrast on additive model → hard error + - Non-interaction contrast var absent as main effect → warning + 3. Made `contrast_spec` required (not optional) when `contrast_vars` contains `":"` + 4. Removed `contrast_by` parameter from all four functions + 5. Removed Branch A2 from `geneLME_fit()`; Branch A is now solely the `contrast_spec` approach + 6. Updated `geneLME_test.R`: removed A2 test; added single-variable `geneLME_contrast_spec()` + tests; added 4 new validation error tests (6c–6f) +- Final test run: all 8 tests pass (2 positive + 6 validation errors) + - Branch A: 10/10 genes `success`, 80 ANOVA rows, 60 contrast rows + - Branch B: 10/10 genes `success`, 70 ANOVA rows, 60 contrast rows + - Validation 6a–6f: all produce expected informative errors diff --git a/R_functions/geneLME.R b/R_functions/geneLME.R index 268da68..0f9d98e 100644 --- a/R_functions/geneLME.R +++ b/R_functions/geneLME.R @@ -2,292 +2,961 @@ ######################################################## # Scalable custom gene LMEs with contrast specification ######################################################## +# Merged from geneLME_dev.R (2026-02-20): +# - Added geneLME_contrast_spec() helper +# - Added Branch A: interaction contrast support via contrast_spec +# - Added FDR adjustment (fdr_method argument) +# - Added $contrast_spec in return value +# - Soft-fail on wrong-length contrasts_secondary +# - Added contrast_ref / contrast_lvl columns to lme_contrast output +# +# Merged from geneLME_dev2.R (2026-02-20): +# - Singular fit → model_status flag ("singular_fit") instead of error. +# Results returned for all genes; filter downstream on model_status. +# model_status column now present in both lme_anova and lme_contrast. +# - New geneLME_build_contrast_args() helper: pre-computes Branch A +# contrasts_list and spec_lookup once before parallel dispatch, +# eliminating nrow(contrast_spec) × n_genes per-gene rebuilds. +# - geneLME_fit() signature: contrast_spec replaced by contrasts_list +# and spec_lookup (Branch A). geneLME_dispatch() updated accordingly. +# - Benchmarked (geneLME_benchmark2.html): dev2 estimates identical to +# previous stable (r=1.0, MAD=0); ~1.1-1.2x faster; 100% direction +# agreement with kimma; equal speed to kimma at 66 contrasts. +######################################################## + + +######################################################## +# geneLME_contrast_spec +# Helper: returns a reference template of available contrast levels, +# formatted for use with the contrast_spec argument of geneLME(). +# +# Two modes depending on whether contrast_vars contains ":": +# +# Interaction mode (e.g. contrast_vars = "treatment:visit"): +# contrast_vars must be a single "var_a:var_b" string. +# Returns a data.frame with columns contrast_ref and contrast_lvl, +# one row per pairwise combination of interaction-level strings. +# Filter this to the contrasts of interest, then pass as +# contrast_spec to geneLME(). +# +# Single-variable mode (e.g. contrast_vars = c("treatment", "visit")): +# contrast_vars is a character vector of one or more plain variable +# names (no ":"). Returns a named list, one element per variable, +# each a data.frame with a single column 'level' listing the sorted +# unique values. The message printed for each variable explains how +# it maps to geneLME() arguments: +# - The first variable in contrast_vars → contrast_vars[1] in +# geneLME(); its levels define the length and position order of +# contrasts_primary vectors. +# - Additional variables → contrast_vars[2], used as the 'by' +# grouping variable; filter its levels via contrast_var_2_levels. +# This list is a reference only — it is not passed to geneLME(). +######################################################## + +geneLME_contrast_spec <- function(targets, contrast_vars) { + + has_interaction <- any(grepl(":", contrast_vars)) + has_plain <- any(!grepl(":", contrast_vars)) + + # Disallow mixing interaction and plain variable names in one call + if (has_interaction && has_plain) { + stop( + "contrast_vars mixes interaction terms (containing ':') and plain variable names.\n", + "Call geneLME_contrast_spec() separately for interaction and non-interaction variables." + ) + } + + if (has_interaction) { + + # ---- Interaction mode: must be a single "var_a:var_b" string ---- + if (length(contrast_vars) != 1) { + stop("Interaction mode requires a single 'var_a:var_b' string in contrast_vars.") + } + + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + if (!var_a %in% colnames(targets)) stop(paste0("Variable '", var_a, "' not found in targets.")) + if (!var_b %in% colnames(targets)) stop(paste0("Variable '", var_b, "' not found in targets.")) + + # Coerce each variable to a factor, preserving any existing factor level order. + # If the column is already a factor, levels() preserves the user-defined ordering. + # If it is a plain character vector, we impose alphabetical order explicitly. + # This ensures the interaction level string ordering — and therefore which member + # of each pair lands in contrast_ref vs contrast_lvl — is fully deterministic and + # consistent between geneLME_contrast_spec() and emmeans' internal ordering. + fac_a <- if (is.factor(targets[[var_a]])) targets[[var_a]] else factor(targets[[var_a]], levels = sort(unique(targets[[var_a]]))) + fac_b <- if (is.factor(targets[[var_b]])) targets[[var_b]] else factor(targets[[var_b]], levels = sort(unique(targets[[var_b]]))) + + # Build all interaction level strings in the same order emmeans will use. + # interaction() with two ordered factors produces a factor whose levels are + # var_a[1]:var_b[1], var_a[1]:var_b[2], ..., var_a[n]:var_b[m] — matching + # emmeans' default grid ordering (vary the rightmost variable fastest). + ixn_lvls <- levels(interaction(fac_a, fac_b, sep = " ")) + + # combn() traverses ixn_lvls in order, so for every pair the first element + # (contrast_ref) is always at a lower level-index than the second (contrast_lvl). + # This guarantees: level(var_a in ref) <= level(var_a in lvl) AND + # level(var_b in ref) <= level(var_b in lvl). + # Users may freely swap ref/lvl in any row after filtering — geneLME() and + # geneLME_fit() handle either direction correctly (the sign of the contrast + # estimate will flip, but no error will occur). + # Row-position indices for contrasts_secondary construction are added by geneLME() + # to its $contrast_spec output element after the user's filtered spec is received. + pairs <- combn(ixn_lvls, 2, simplify = FALSE) + spec <- data.frame( + contrast_ref = sapply(pairs, `[[`, 1), + contrast_lvl = sapply(pairs, `[[`, 2), + stringsAsFactors = FALSE + ) + + message( + nrow(spec), " pairwise combinations generated for '", contrast_vars, "'.\n", + "Filter this data.frame to your contrasts of interest, then pass as contrast_spec to geneLME().\n", + "geneLME() will attach an indexed copy of contrast_spec to its output ($contrast_spec)\n", + "showing the row-position index used for contrasts_secondary vector construction." + ) + + return(spec) + + } else { + + # ---- Single/multi-variable mode ---- + # Validate all variables exist + missing_vars <- setdiff(contrast_vars, colnames(targets)) + if (length(missing_vars) > 0) { + stop(paste0("Variable(s) not found in targets: ", paste(missing_vars, collapse = ", "))) + } + + result <- lapply(seq_along(contrast_vars), function(i) { + v <- contrast_vars[i] + lvls <- sort(unique(as.character(targets[[v]]))) + spec <- data.frame(level = lvls, stringsAsFactors = FALSE) + + if (i == 1) { + message( + "'", v, "' — primary contrast variable (contrast_vars[1] in geneLME).\n", + length(lvls), " levels (alphabetical order = position order for contrasts_primary vectors):\n", + paste(seq_along(lvls), lvls, sep = ". ", collapse = "\n"), "\n", + "→ contrast vectors passed to contrasts_primary must have length ", length(lvls), ",\n", + " with each element weighted by position (e.g. '", lvls[length(lvls)], " vs ", lvls[1], + "' = c(", paste(c(-1, rep(0, length(lvls) - 2), 1), collapse = ", "), "))." + ) + } else { + message( + "'", v, "' — secondary 'by' grouping variable (contrast_vars[", i, "] in geneLME).\n", + length(lvls), " levels available:\n", + paste(seq_along(lvls), lvls, sep = ". ", collapse = "\n"), "\n", + "→ pass a subset of these levels to contrast_var_2_levels in geneLME() to restrict\n", + " which groups the primary contrasts are computed within." + ) + } + + spec + }) + + names(result) <- contrast_vars + return(result) + } +} + + +######################################################## +# geneLME_build_contrast_args +# Pre-computes Branch A contrast structures once, before parallel dispatch. +# +# Called by geneLME() when contrast_vars contains ":". +# Returns a list with two elements that are passed directly to workers: +# +# $contrasts_list — named list of contrast vectors, one per row of +# contrast_spec. Each vector has length == number of interaction cells, +# named by emmeans level string ("TrtA V1", "TrtB V2", ...). +# contrast_ref cell receives -1; contrast_lvl cell receives +1. +# Name of each vector is "contrast_lvl - contrast_ref" — the string +# emmeans will use as the 'contrast' column in its output. +# +# $spec_lookup — data.frame(contrast, contrast_ref, contrast_lvl) for +# joining ref/lvl back onto the emmeans first-order result by contrast +# name. Avoids reconstructing this inside every geneLME_fit() call. +# +# The emmeans level ordering is derived from factor levels in targets (the +# same source emmeans uses internally), guaranteeing index alignment without +# requiring a fitted model object. +######################################################## + +geneLME_build_contrast_args <- function(targets, contrast_vars, contrast_spec) { + + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + # Reproduce the exact factor-level ordering that emmeans will use. + # emmeans builds its reference grid from the factor levels of the model + # data (targets); using the same coercion logic as geneLME_contrast_spec() + # guarantees the level strings here match those emmeans returns. + fac_a <- if (is.factor(targets[[var_a]])) targets[[var_a]] else factor(targets[[var_a]], levels = sort(unique(targets[[var_a]]))) + fac_b <- if (is.factor(targets[[var_b]])) targets[[var_b]] else factor(targets[[var_b]], levels = sort(unique(targets[[var_b]]))) + + # Build interaction level strings: "var_a_level var_b_level" in emmeans order. + # emmeans varies the rightmost variable fastest, matching interaction() default. + lvls_a <- levels(fac_a) + lvls_b <- levels(fac_b) + emm_lvls <- as.vector(outer(lvls_a, lvls_b, paste)) # row = var_a, col = var_b + + # Template zero vector, one element per interaction cell + default_vec <- rep(0, length(emm_lvls)) + names(default_vec) <- emm_lvls + + # Build contrasts_list once — identical for all genes + contrasts_list <- list() + for (k in seq_len(nrow(contrast_spec))) { + cv <- default_vec + cv[contrast_spec$contrast_ref[k]] <- -1 + cv[contrast_spec$contrast_lvl[k]] <- 1 + contrast_name <- paste(contrast_spec$contrast_lvl[k], + contrast_spec$contrast_ref[k], sep = " - ") + contrasts_list[[contrast_name]] <- cv + } + + # Build spec_lookup once — identical for all genes + spec_lookup <- data.frame( + contrast = paste(contrast_spec$contrast_lvl, + contrast_spec$contrast_ref, sep = " - "), + contrast_ref = contrast_spec$contrast_ref, + contrast_lvl = contrast_spec$contrast_lvl, + stringsAsFactors = FALSE + ) + + list(contrasts_list = contrasts_list, spec_lookup = spec_lookup) +} + ######################################################## -# Starting point / framework +# geneLME_fit +# Core per-gene fitting function. Called inside future_lapply. +# Receives only the minimal pre-extracted data needed for one gene, +# not the full EList object. +# +# Singular fit is no longer an error; model_status = "singular_fit" +# is recorded and results are returned for user-side filtering. +# Branch A receives pre-computed contrasts_list + spec_lookup instead +# of contrast_spec. The per-gene contrast vector loop is eliminated. ######################################################## +geneLME_fit <- + function(gene_name, + expression_vec, # named numeric vector: expression values for this gene + weight_vec, # named numeric vector or NULL: per-sample weights + targets, # data.frame: sample metadata (dat$targets) + formula_str, # character: formula RHS e.g. "~ treatment*visit + (1|ptID)" + run_contrast, + contrast_vars, + contrast_var_2_levels, + contrasts_list, # Branch A: pre-computed named contrast vector list, or NULL + spec_lookup, # Branch A: pre-computed ref/lvl join table, or NULL + contrasts_primary, # Branch B: named list of contrast vectors, or NULL + contrasts_secondary) { # both branches: second-order contrast vectors, or NULL + + # Load worker-side packages quietly. + # suppressPackageStartupMessages: silences "Loading required package: Matrix" etc. + # suppressWarnings: silences "package 'lme4' was built under R version X.Y.Z". + suppressPackageStartupMessages(suppressWarnings({ + library(lme4) + library(emmeans) + library(car) + library(broom.mixed) + library(dplyr) + library(tibble) + })) -geneLME_fit<- - function(i, - dat=dat, - formula_obj=formula_obj, - model_weights=model_weights, - run_contrast=run_contrast, - contrast_vars = contrast_vars, - contrast_var_2_levels=contrast_var_2_levels, - contrasts_primary = contrasts_primary, - contrasts_secondary = contrasts_secondary){ - - gene_i <- rownames(dat$E)[i] - - # Initialize an empty status - model_status <- "success" - - # Wrap the entire process in tryCatch result <- tryCatch({ - + + # --- BUILD MODEL DATA --- + model_data <- targets + model_data$expression <- expression_vec + + # --- RECONSTRUCT FORMULA LOCALLY --- + # Built from the raw string so its enclosing environment is this call frame. + # lmer resolves 'weight_vec' and other names in local scope — no + # environment stripping needed, no locked-environment errors. + formula_obj <- as.formula(paste("expression", formula_str)) + # --- FIT MODEL --- - # We use a localized data frame to avoid passing the whole 'dat' object to emmeans later - model_data <- dat$targets - model_data$expression <- dat$E[i, ] - - if(is.null(model_weights)){ - lme_i <- lmer( - formula_obj, - data = model_data, - control = lmerControl(calc.derivs = FALSE, autoscale = TRUE)) - - } else if(!is.null(model_weights) & model_weights){ - - model_data$current_weights <- dat$weights[i, ] - - lme_i <- lmer( - formula_obj, - weights = current_weights, - data = model_data, - control = lmerControl(calc.derivs = FALSE, autoscale = TRUE) - ) + # check.scaleX = "ignore": silences the "predictor variables on very + # different scales" warning. This is expected with mixed RNA-seq covariates + # (e.g. lib.size vs binary treatment indicator) and does not affect model fit. + lme_ctrl <- lmerControl(calc.derivs = FALSE, check.scaleX = "ignore") + if (is.null(weight_vec)) { + lme_i <- lmer(formula_obj, data = model_data, control = lme_ctrl) + } else { + lme_i <- lmer(formula_obj, weights = weight_vec, data = model_data, control = lme_ctrl) } - - # Check for singularity manually to be explicit - if(isSingular(lme_i)) stop("Boundary (singular) fit") - - # --- EXTRACT DATA (The only parts we keep) --- - - # 1. AIC - aic_res <- data.frame(gene = gene_i, AIC = AIC(lme_i)) - - # 2. ANOVA & Summary - lme_i_anova <- car::Anova(lme_i) %>% broom.mixed::tidy() - lme_i_summary <- summary(lme_i)$coefficients %>% - as.data.frame() %>% + + # --- SINGULAR FIT: flag, do not stop --- + # isSingular() indicates the random effect variance hit its boundary (zero). + # Fixed effect estimates and contrasts are still numerically valid; the user + # should decide whether to retain or filter these genes downstream. + # model_status records the flag; "success" indicates a clean fit. + model_status <- if (isSingular(lme_i)) "singular_fit" else "success" + + # --- EXTRACT: AIC --- + aic_res <- data.frame(gene = gene_name, AIC = AIC(lme_i)) + + # --- EXTRACT: ANOVA & coefficient summary --- + lme_i_anova <- car::Anova(lme_i) %>% broom.mixed::tidy() + lme_i_summary <- summary(lme_i)$coefficients %>% + as.data.frame() %>% rownames_to_column("variable") - - # 3. Process ANOVA Table + + # --- BUILD ANOVA TABLE --- lme_i_anova_tab <- lme_i_anova %>% - rowwise()%>% + rowwise() %>% mutate( - gene = gene_i, + gene = gene_name, + model_status = model_status, # "success" or "singular_fit" predictor_class = case_when( - grepl(":", term) ~ "interaction", - #!term %in% colnames(model_data) ~ "other", - is.numeric(model_data[[term]]) ~ "continuous", - !(is.numeric(model_data[[term]])) & length(unique(model_data[[term]])) == 2 ~ "two-level-categorical", - !(is.numeric(model_data[[term]])) & length(unique(model_data[[term]])) > 2 ~ "multi-level-categorical" + grepl(":", term) ~ "interaction", + is.numeric(model_data[[term]]) ~ "continuous", + !is.numeric(model_data[[term]]) & length(unique(model_data[[term]])) == 2 ~ "two-level-categorical", + !is.numeric(model_data[[term]]) & length(unique(model_data[[term]])) > 2 ~ "multi-level-categorical" ), Estimate_source = case_when( - predictor_class %in% c("continuous", "two-level-categorical") ~ "lme_summary", - predictor_class == "multi-level-categorical" ~ "seeContrasts", - predictor_class == "interaction" & - length(grep(":", lme_i_summary$variable)) == 1 ~ "lme_summary", - predictor_class == "interaction" & - length(grep(":", lme_i_summary$variable)) > 1 ~ "seeContrasts" + predictor_class %in% c("continuous", "two-level-categorical") ~ "lme_summary", + predictor_class == "multi-level-categorical" ~ "seeContrasts", + predictor_class == "interaction" & length(grep(":", lme_i_summary$variable)) == 1 ~ "lme_summary", + predictor_class == "interaction" & length(grep(":", lme_i_summary$variable)) > 1 ~ "seeContrasts" ), Estimate = case_when( - predictor_class == "continuous" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], + predictor_class == "continuous" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], predictor_class == "two-level-categorical" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], - predictor_class == "interaction" & Estimate_source=="lme_summary" ~ lme_i_summary$Estimate[grep(":", lme_i_summary$variable)][[1]], - predictor_class == "interaction" & Estimate_source == "seeContrasts" ~ NA, - .default = NA + # Guard: grep(":", ...) returns integer(0) when the model has no interaction + # coefficient (e.g. a main-effects-only formula). [[1]] on integer(0) errors, + # so fall through to .default = NA_real_ via the length check. + predictor_class == "interaction" & Estimate_source == "lme_summary" & + length(grep(":", lme_i_summary$variable)) >= 1 ~ + lme_i_summary$Estimate[grep(":", lme_i_summary$variable)[1L]], + .default = NA_real_ ), Estimate_SE = case_when( - predictor_class == "continuous" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], + predictor_class == "continuous" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], predictor_class == "two-level-categorical" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], - predictor_class == "interaction" & Estimate_source=="lme_summary" ~ lme_i_summary$`Std. Error`[grep(":", lme_i_summary$variable)][[1]], - predictor_class == "interaction" & Estimate_source == "seeContrasts" ~ NA, - .default = NA + predictor_class == "interaction" & Estimate_source == "lme_summary" & + length(grep(":", lme_i_summary$variable)) >= 1 ~ + lme_i_summary$`Std. Error`[grep(":", lme_i_summary$variable)[1L]], + .default = NA_real_ ) ) - - # 4. Contrasts - - # --- CONTRASTS (Dynamic) --- - - if(!is.null(run_contrast)){ - - spec_formula <- as.formula(paste("~", paste(contrast_vars, collapse = "|"))) - - if(length(contrast_vars)==2 & !is.null(contrast_var_2_levels)){ # set levels of second term if multiple terms provided. - by_list<-set_names(list(contrast_var_2_levels), paste(contrast_vars[2]))} else { - by_list<-NULL - } - - emm_1st <- emmeans(lme_i, spec = spec_formula, at=by_list, data=model_data) %>% - contrast(method = contrasts_primary, adjust = "none") - - if(!is.null(contrasts_secondary) & length(contrasts_primary)>1){ - - emm_2nd <- contrast(emm_1st, method = contrasts_secondary, adjust = "none") - - contrast_res <- bind_rows( - as.data.frame(emm_1st) %>% mutate(contrast_order = "first_order"), - as.data.frame(emm_2nd) %>% mutate(contrast_order = "second_order") - ) %>% mutate(gene = gene_i) + + # --- CONTRASTS --- + if (isTRUE(run_contrast)) { + + is_interaction <- any(grepl(":", contrast_vars)) + + if (is_interaction) { + + # ---- BRANCH A: Interaction contrast via pre-computed contrasts_list ---- + # contrasts_list and spec_lookup were built once in geneLME() before + # parallel dispatch — no per-gene reconstruction needed here. + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + emm_obj <- emmeans( + lme_i, + spec = as.formula(paste("~", var_a, "*", var_b)), + data = model_data + ) + + emm_1st_A <- contrast(emm_obj, method = contrasts_list, adjust = "none") + + if (!is.null(contrasts_secondary)) { + # suppressWarnings: emmeans internally calls lmer on the first-order contrast + # estimates when computing second-order contrasts; this can emit a benign + # lme4 scale warning when the estimate/SE values differ in magnitude from + # the original predictors. The output is unaffected — the warning is cosmetic. + emm_2nd_A <- suppressWarnings( + contrast(emm_1st_A, method = contrasts_secondary, adjust = "none") + ) + contrast_res <- bind_rows( + # First-order: join ref/lvl from pre-computed spec_lookup by contrast name + as.data.frame(emm_1st_A) %>% + mutate(contrast_order = "first_order") %>% + left_join(spec_lookup, by = "contrast"), + # Second-order: contrasts-of-contrasts have no single ref/lvl pair + as.data.frame(emm_2nd_A) %>% + mutate(contrast_order = "second_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_) + ) %>% mutate(gene = gene_name, model_status = model_status) + } else { + contrast_res <- as.data.frame(emm_1st_A) %>% + mutate(contrast_order = "first_order") %>% + left_join(spec_lookup, by = "contrast") %>% + mutate(gene = gene_name, model_status = model_status) + } + + } else { + + # ---- BRANCH B: Non-interaction ---- + spec_formula <- as.formula(paste("~", paste(contrast_vars, collapse = "|"))) + + by_list <- if (length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { + setNames(list(contrast_var_2_levels), contrast_vars[2]) + } else { + NULL + } + + emm_1st <- emmeans(lme_i, spec = spec_formula, at = by_list, data = model_data) %>% + contrast(method = contrasts_primary, adjust = "none") + + if (!is.null(contrasts_secondary)) { + # suppressWarnings: same benign lme4 scale warning as Branch A second-order step. + emm_2nd <- suppressWarnings( + contrast(emm_1st, method = contrasts_secondary, adjust = "none") + ) + contrast_res <- bind_rows( + # Branch B uses named contrast vectors, not a ref/lvl spec — set NA for both orders + as.data.frame(emm_1st) %>% + mutate(contrast_order = "first_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_), + as.data.frame(emm_2nd) %>% + mutate(contrast_order = "second_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_) + ) %>% mutate(gene = gene_name, model_status = model_status) + } else { + contrast_res <- as.data.frame(emm_1st) %>% + mutate(contrast_order = "first_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_, + gene = gene_name, + model_status = model_status) + } + } + } else { - contrast_res <- - as.data.frame(emm_1st) %>% mutate(contrast_order = "first_order") - }} else {contrast_res=NULL} - - # Return list of results. Once this function returns, 'lme_i' is destroyed. - list(aic = aic_res, anova = lme_i_anova_tab, contrasts = contrast_res, model_status=setNames(c("success"), gene_i)) - + contrast_res <- NULL + } + + list( + aic = aic_res, + anova = lme_i_anova_tab, + contrasts = contrast_res, + model_status = setNames(model_status, gene_name) + ) + }, error = function(e) { - # This block triggers for actual errors AND our forced 'singular fit' stop - err_msg <- as.character(e$message) - + err_msg <- conditionMessage(e) list( - aic = data.frame(gene = gene_i, AIC = NA, model_status = err_msg), - # Return a 1-row ANOVA skeleton so the gene is not lost - + aic = data.frame(gene = gene_name, AIC = NA_real_), anova = data.frame( - term = NA, statistic=NA, df=NA, p.value =NA, gene=gene_i, - predictor_class=NA, Estimate_source=NA, Estimate=NA, Estimate_SE=NA, - model_status = err_msg), - # Return a 1-row Contrast skeleton - contrasts=data.frame(contrast =NA, estimate=NA, SE=NA, df=NA, t.ratio=NA, p.value=NA, - contrast_order=NA, gene=gene_i, model_status = err_msg), - model_status= setNames(paste(err_msg), gene_i) + term = NA_character_, + statistic = NA_real_, + df = NA_real_, + p.value = NA_real_, + gene = gene_name, + model_status = err_msg, + predictor_class = NA_character_, + Estimate_source = NA_character_, + Estimate = NA_real_, + Estimate_SE = NA_real_ + ), + contrasts = data.frame( + contrast = NA_character_, + estimate = NA_real_, + SE = NA_real_, + df = NA_real_, + t.ratio = NA_real_, + p.value = NA_real_, + contrast_order = NA_character_, + contrast_ref = NA_character_, + contrast_lvl = NA_character_, + gene = gene_name + ), + model_status = setNames(err_msg, gene_name) ) }) - - + return(result) } +######################################################## +# geneLME_compiler +# Aggregates list of per-gene results into named result tables, +# then appends FDR-adjusted p-values within each grouping unit. +# +# FDR grouping strategy: +# lme_anova: adjust within each model term (across all genes). +# Each term's p-values form one adjustment set. +# lme_contrast: adjust within each contrast x contrast_order combination +# (across all genes). Branch B contrast labels already encode +# the 'by' variable level (e.g. "TrtC vs TrtA, visit = V2"), +# so grouping by contrast alone is sufficient. +# NA p-values (failed gene models) are preserved as NA in p.value_adj. +# singular_fit genes are included in the adjustment set (their p-values +# are valid; users filter on model_status if they wish to exclude them). +######################################################## + +geneLME_compiler <- function(fit, fdr_method = "BH", contrast_spec = NULL) { + + lme_anova <- map_dfr(fit, "anova") %>% + group_by(term) %>% + mutate(p.value_adj = p.adjust(p.value, method = fdr_method)) %>% + relocate(p.value_adj, .after = p.value)%>% + ungroup() + + lme_contrast_raw <- map_dfr(fit, "contrasts") + lme_contrast <- if (ncol(lme_contrast_raw) > 0 && + all(c("contrast", "contrast_order") %in% colnames(lme_contrast_raw))) { + lme_contrast_raw %>% + group_by(contrast, contrast_order) %>% + mutate(p.value_adj = p.adjust(p.value, method = fdr_method)) %>% + relocate(p.value_adj, .after = p.value)%>% + ungroup() + } else { + lme_contrast_raw # no contrasts run; return as-is (empty or NULL-row stub) + } + + list( + lme_anova = lme_anova, + lme_contrast = lme_contrast, + lme_fit = map_dfr(fit, "aic"), + lme_err = map_chr(fit, "model_status"), + contrast_spec = contrast_spec # indexed spec; NULL when no contrasts run + ) +} + + +######################################################## +# geneLME_dispatch +# Runs future_lapply with explicit global declaration to prevent +# future's automatic environment scan from capturing large objects. +# +# Key design decisions: +# 1. Iterate over an integer index — a plain integer sequence carries +# no environment baggage for future to scan. +# 2. All shared objects passed via future.globals, bypassing automatic +# scanning entirely. +# +# contrast_spec replaced by contrasts_list + spec_lookup (Branch A) +# in both the function signature and future.globals. +######################################################## -# Separate function for compiling results +geneLME_dispatch <- function(gene_data_list, + targets_df, + formula_str, + run_contrast, + contrast_vars, + contrast_var_2_levels, + contrasts_list, + spec_lookup, + contrasts_primary, + contrasts_secondary) { + n_genes <- length(gene_data_list) -geneLME_compiler<-function(fit){ - list(lme_anova_tab= map_dfr(fit, "anova"), # gather anova tables - lme_contrast=map_dfr(fit, "contrasts"), # gather contrast tables - lme_fit=map_dfr(fit, "aic"), # gather model fit - lme_err=map_chr(fit, "model_status") %>% # extract the status string for each gene & preserve names - set_names(map_chr(fit, ~ names(.x$model_status)))) + # Suppress "package 'X' was built under R version Y" warnings that + # future re-raises on the main process after collecting worker results. + # These are cosmetic version-mismatch notices — not actionable errors. + withCallingHandlers( + future.apply::future_lapply( + seq_len(n_genes), + FUN = function(i) { + gene_data <- gene_data_list[[i]] + geneLME_fit( + gene_name = gene_data$gene_name, + expression_vec = gene_data$expression_vec, + weight_vec = gene_data$weight_vec, + targets = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrasts_list = contrasts_list, + spec_lookup = spec_lookup, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary + ) + }, + future.globals = list( + gene_data_list = gene_data_list, + targets_df = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrasts_list = contrasts_list, + spec_lookup = spec_lookup, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary, + geneLME_fit = geneLME_fit + ), + future.seed = TRUE + ), + warning = function(w) { + if (grepl("was built under R version", conditionMessage(w))) { + invokeRestart("muffleWarning") + } + }) } +######################################################## +# geneLME +# User-facing wrapper: validates inputs, sets up parallel plan, +# pre-extracts per-gene data, dispatches geneLME_fit in parallel. +# +# Calls geneLME_build_contrast_args() for Branch A to pre-compute +# contrasts_list and spec_lookup before the parallel stage. +######################################################## + +geneLME <- + function(dat, + formula_str, + model_weights = NULL, + run_contrast = NULL, + contrast_vars = NULL, + contrast_var_2_levels = NULL, + contrast_spec = NULL, # data.frame(contrast_ref, contrast_lvl) or NULL + # required when contrast_vars contains ":" + contrasts_primary = NULL, + contrasts_secondary = NULL, + fdr_method = "BH", # any method accepted by p.adjust() + n_cores = NULL) { + + # --- PRE-FLIGHT VALIDATION --- + + # Build a local formula object solely for variable checking — never + # passed to workers. Workers reconstruct the formula from formula_str. + formula_obj_local <- as.formula(paste("expression", formula_str)) + + # Initialise objects populated during the contrast validation block below. + indexed_contrast_spec <- NULL + contrasts_list <- NULL # Branch A: pre-computed named contrast vectors + spec_lookup <- NULL # Branch A: pre-computed ref/lvl join table + + # 1. Formula variables present in targets + required_vars <- all.vars(formula_obj_local) + required_vars <- required_vars[required_vars != "expression"] + + missing_vars <- setdiff(required_vars, colnames(dat$targets)) + if (length(missing_vars) > 0) { + stop(paste( + "The following variables in the formula are missing from dat$targets:", + paste(missing_vars, collapse = ", ") + )) + } + + # 2. Weights alignment + if (isTRUE(model_weights)) { + if (is.null(dat$weights)) { + stop("model_weights = TRUE but dat$weights is NULL.") + } + if (!identical(dim(dat$weights), dim(dat$E))) { + stop("Dimensions of dat$weights do not match dat$E.") + } + } + + # 3. Contrast variables and spec + if (isTRUE(run_contrast)) { -geneLME <- - function(dat, - formula_str, - model_weights=NULL, - run_contrast=NULL, - contrast_vars=NULL, - contrast_var_2_levels=NULL, - contrasts_primary=NULL, - contrasts_secondary=NULL, - n_cores = NULL) { - -#. --- PRE-FLIGHT DATA VALIDATION --- - - # 1. Check Formula Variables - # Extract all variables from the formula (excluding the LHS 'expression') - required_vars <- all.vars(formula_obj) - required_vars <- required_vars[required_vars != "expression"] - - missing_vars <- setdiff(required_vars, colnames(dat$targets)) - if (length(missing_vars) > 0) { - stop(paste("The following variables in the formula are missing from dat$targets:", - paste(missing_vars, collapse = ", "))) + if (is.null(contrast_vars)) { + stop("run_contrast = TRUE but contrast_vars is NULL.") } - - # 2. Check Weights Alignment - if (!is.null(model_weights)) { - if (is.null(dat$weights)) { - stop("model_weights is specified, but dat$weights is missing.") + + is_interaction <- any(grepl(":", contrast_vars)) + + # 3a. Formula-vs-contrast_vars consistency check. + # Uses terms() so that both "a*b" and "a:b" formula syntax are handled correctly — + # "a*b" expands to include "a:b" in term labels, so both forms are detected. + formula_terms <- attr(terms(formula_obj_local), "term.labels") + + if (is_interaction) { + # For interaction contrasts, verify the interaction term is actually in the model. + # emmeans will silently run contrasts on additive margins if the interaction is absent, + # which is statistically misleading. + ixn_term <- contrast_vars[grep(":", contrast_vars)][1] # e.g. "treatment:visit" + if (!ixn_term %in% formula_terms) { + stop(paste0( + "contrast_vars specifies an interaction contrast for '", ixn_term, "', ", + "but this interaction term is not present in formula_str.\n", + "Either add the interaction to the formula (e.g. '~ treatment * visit + ...') ", + "or change contrast_vars to a non-interaction term." + )) } - if (nrow(dat$weights) != nrow(dat$E) || ncol(dat$weights) != ncol(dat$E)) { - stop("Dimensions of dat$weights do not match dat$E. Weights must be a matrix of same size.") + } else { + # For non-interaction contrasts, verify each contrast variable is in the formula + # as a main effect. Warn (not error) in case it is part of an interaction only. + for (cv in contrast_vars) { + if (!cv %in% formula_terms) { + warning(paste0( + "contrast_vars includes '", cv, "' but this term does not appear as a ", + "main effect in formula_str. Contrasts may be computed from interaction ", + "margins only — verify this is the intended model structure." + )) + } } } - - # 3. Check Contrast Variables & Levels - if (!is.null(run_contrast)) { - # Verify contrast_vars exist in targets - missing_contrast_vars <- setdiff(contrast_vars, colnames(dat$targets)) - if (length(missing_contrast_vars) > 0) { - stop(paste("contrast_vars missing from dat$targets:", - paste(missing_contrast_vars, collapse = ", "))) + + # 3b. contrast_spec validation (required for interaction contrasts) + if (is_interaction && is.null(contrast_spec)) { + stop(paste0( + "contrast_vars specifies an interaction contrast ('", contrast_vars, "') ", + "but contrast_spec is NULL.\n", + "Use geneLME_contrast_spec(dat$targets, contrast_vars = '", contrast_vars, + "') to generate a template, filter it to your contrasts of interest, ", + "then pass it as contrast_spec." + )) + } + + if (!is.null(contrast_spec)) { + if (!is.data.frame(contrast_spec)) { + stop("contrast_spec must be a data.frame.") + } + if (!all(c("contrast_ref", "contrast_lvl") %in% colnames(contrast_spec))) { + stop("contrast_spec must have columns 'contrast_ref' and 'contrast_lvl'.") + } + if (!is_interaction) { + warning("contrast_spec is provided but contrast_vars contains no interaction term (':'). ", + "contrast_spec is designed for interaction contrasts — did you mean to use contrasts_primary?") } - - # Verify Level Filtering for the 'by' variable - if (length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { - actual_levels <- unique(as.character(dat$targets[[contrast_vars[2]]])) - invalid_levels <- setdiff(contrast_var_2_levels, actual_levels) - - if (length(invalid_levels) > 0) { - stop(paste0("The specified levels for '", contrast_vars[2], - "' do not exist in the data: ", paste(invalid_levels, collapse = ", "))) + + # Build the indexed contrast_spec that will be attached to the return value. + # contrast_index here is simply 1:nrow(contrast_spec) — the actual row position + # within the filtered spec passed by the user. This is what contrasts_secondary + # vectors must index into (not any index from the full unfiltered template). + indexed_contrast_spec <- contrast_spec %>% + mutate(contrast_index = seq_len(n())) %>% + select(contrast_index, everything()) + + # Print the indexed spec as a reminder whenever contrasts_secondary is provided. + if (is_interaction && !is.null(contrasts_secondary)) { + n_first <- nrow(contrast_spec) + message( + "contrasts_secondary will be applied to the first-order interaction contrasts ", + "in the order they appear in contrast_spec (", n_first, " contrasts):\n", + paste(seq_len(n_first), + paste(contrast_spec$contrast_lvl, contrast_spec$contrast_ref, sep = " - "), + sep = ". ", collapse = "\n"), + "\nEnsure contrasts_secondary vectors have length ", n_first, + ", with each element corresponding to the contrast at that position.", + "\nThe indexed contrast_spec is returned as $contrast_spec in the output." + ) + + # Soft-fail: wrong-length vectors produce silent NAs deep inside geneLME_fit(). + # Catch this here and return early with only $contrast_spec populated so the + # user has the indexed reference they need to fix their vectors. + bad_lens <- sapply(contrasts_secondary, length) + bad_names <- names(bad_lens)[bad_lens != n_first] + if (length(bad_names) > 0) { + message( + "\ncontrasts_secondary vector(s) have wrong length — returning early without running models.\n", + "Expected length ", n_first, " (= nrow(contrast_spec) after filtering).\n", + "Offending vector(s):\n", + paste0(" '", bad_names, "': length ", bad_lens[bad_names], collapse = "\n"), "\n\n", + "Common cause: vectors were built against nrow() of the full unfiltered\n", + "spec_template rather than nrow() of the filtered contrast_spec passed here.\n", + "Use $contrast_spec in the returned object to re-specify your secondary contrast vectors:\n", + " each vector must have length ", n_first, ", one element per row of $contrast_spec." + ) + return(invisible(list( + lme_anova = NULL, + lme_contrast = NULL, + lme_fit = NULL, + lme_err = NULL, + contrast_spec = indexed_contrast_spec + ))) } } } - - # 4. Check for Character columns that should be Factors - # emmeans and lmer handle strings, but it's safer to warn if a predictor has 100+ unique strings - for (v in required_vars) { - if (is.character(dat$targets[[v]]) && length(unique(dat$targets[[v]])) > (nrow(dat$targets)/2)) { - warning(paste("Variable '", v, "' has a very high number of unique strings. Is it a unique ID instead of a factor?")) + + # --- PRE-COMPUTE BRANCH A CONTRAST STRUCTURES --- + # Build contrasts_list and spec_lookup once here, before parallel dispatch. + # Workers receive these ready-made objects instead of rebuilding from + # contrast_spec on every gene — eliminates nrow(contrast_spec) × n_genes + # iterations of R-level vector construction. + if (is_interaction) { + contrast_args <- geneLME_build_contrast_args(dat$targets, contrast_vars, contrast_spec) + contrasts_list <- contrast_args$contrasts_list + spec_lookup <- contrast_args$spec_lookup + } + + # 3c. contrast_vars present in targets (split on ":" for interaction) + vars_to_check <- unique(unlist(strsplit(contrast_vars, ":"))) + missing_contrast_vars <- setdiff(vars_to_check, colnames(dat$targets)) + if (length(missing_contrast_vars) > 0) { + stop(paste( + "contrast_vars not found in dat$targets:", + paste(missing_contrast_vars, collapse = ", ") + )) + } + + # 3d. contrast_var_2_levels validation (Branch B only) + if (!is_interaction && length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { + actual_levels <- unique(as.character(dat$targets[[contrast_vars[2]]])) + invalid_levels <- setdiff(contrast_var_2_levels, actual_levels) + if (length(invalid_levels) > 0) { + stop(paste0( + "Levels specified for '", contrast_vars[2], + "' not found in data: ", paste(invalid_levels, collapse = ", ") + )) } } - - message("Input check complete: Data formatting looks good. Starting parallel LME fit...") - - - - - # Set Parallel Plan - workers <- if(is.null(n_cores)) parallel::detectCores() - 4 else n_cores - plan(multisession, workers = workers) - - # Convert string formula to object - - formula_obj <- as.formula(paste0("expression", formula_str)) - - # Run in parallel - # We pass the contrast specs into the function - fit_results <- future_lapply( - 1:nrow(dat$E), - FUN = function(x){ - geneLME_fit(i = x, - dat = dat, - formula_obj = formula_obj, - model_weights=model_weights, - run_contrast=run_contrast, - contrast_vars = contrast_vars, - contrast_var_2_levels=contrast_var_2_levels, - contrasts_primary = contrasts_primary, - contrasts_secondary = contrasts_secondary)}, - future.seed = TRUE - ) - - return(geneLME_compiler(fit_results)) -} + + # 3e. Branch B: build indexed contrast_spec from contrasts_primary names, + # and soft-fail on wrong-length contrasts_secondary vectors. + if (!is_interaction && !is.null(contrasts_primary)) { + indexed_contrast_spec <- data.frame( + contrast_index = seq_along(contrasts_primary), + contrast_name = names(contrasts_primary), + stringsAsFactors = FALSE + ) + + if (!is.null(contrasts_secondary)) { + n_primary <- length(contrasts_primary) + bad_lens <- sapply(contrasts_secondary, length) + bad_names <- names(bad_lens)[bad_lens != n_primary] + if (length(bad_names) > 0) { + message( + "\ncontrasts_secondary vector(s) have wrong length — returning early without running models.\n", + "Expected length ", n_primary, " (= number of contrasts_primary vectors).\n", + "Offending vector(s):\n", + paste0(" '", bad_names, "': length ", bad_lens[bad_names], collapse = "\n"), "\n\n", + "Use $contrast_spec in the returned object to confirm the primary contrast ordering:\n", + " each contrasts_secondary vector must have length ", n_primary, + ", one element per row of $contrast_spec." + ) + return(invisible(list( + lme_anova = NULL, + lme_contrast = NULL, + lme_fit = NULL, + lme_err = NULL, + contrast_spec = indexed_contrast_spec + ))) + } + } + } + } + + # 4. fdr_method must be a recognised p.adjust method + valid_fdr_methods <- p.adjust.methods # exported character vector from stats + if (!fdr_method %in% valid_fdr_methods) { + stop(paste0( + "'", fdr_method, "' is not a valid p.adjust method.\n", + "Choose one of: ", paste(valid_fdr_methods, collapse = ", ") + )) + } + + # 5. Warn on likely ID columns used as predictors + for (v in required_vars) { + if (is.character(dat$targets[[v]]) && + length(unique(dat$targets[[v]])) > nrow(dat$targets) / 2) { + warning(paste0( + "Variable '", v, "' has many unique string values — is it an ID column rather than a predictor?" + )) + } + } + + message("Input validation passed. Launching parallel LME fits...") + + # --- PRE-SLICE INTO PER-GENE LIST --- + W_mat <- if (isTRUE(model_weights)) dat$weights else NULL + + gene_data_list <- lapply(rownames(dat$E), function(g) { + list( + gene_name = g, + expression_vec = dat$E[g, ], + weight_vec = if (!is.null(W_mat)) W_mat[g, ] else NULL + ) + }) + + targets_df <- dat$targets + + # --- PARALLEL PLAN --- + workers <- if (is.null(n_cores)) max(1L, parallel::detectCores() - 4L) else n_cores + future::plan(future::multisession, workers = workers) + on.exit(future::plan(future::sequential), add = TRUE) + + # --- DISPATCH via clean-scope helper --- + fit_results <- geneLME_dispatch( + gene_data_list = gene_data_list, + targets_df = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrasts_list = contrasts_list, + spec_lookup = spec_lookup, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary + ) + + return(geneLME_compiler(fit_results, fdr_method = fdr_method, + contrast_spec = indexed_contrast_spec)) + } ######################################################## -# Testing +# Testing (see geneLME_test.R for full test suite) ######################################################## -# dat_sub<-RNAetc::subset_voom(dat, gene_keep = head(rownames(dat$E), 100)) -# -# test_mods<- + +# --- Branch A: interaction contrast via contrast_spec --- +# # Step 1: generate level reference template +# spec_template <- geneLME_contrast_spec( +# targets = dat$targets, +# contrast_vars = "treatment:visit" # interaction string +# ) +# # Step 2: filter to contrasts of interest +# my_spec <- spec_template %>% +# dplyr::filter(...) # e.g. same-visit cross-treatment, or within-treatment longitudinal +# +# test_mods_A <- # geneLME( -# dat = dat_sub, -# formula_str = "~ treatment*visit + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", -# model_weights = TRUE, -# run_contrast=TRUE, -# contrast_vars = c("treatment", "visit"), -# contrast_var_2_levels=c("-1", "S9", "S13"), -# contrasts_primary = list("Dual vs Placebo"=c(-1, 0, 1), "SLIT vs Placebo"=c(-1, 1, 0)), -# contrasts_secondary = list("Second Order Test"= c(1, -1)), -# n_cores = 10 -# +# dat = dat_sub, +# formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = "treatment:visit", # must match an interaction term in formula_str +# contrast_spec = my_spec, # required for interaction contrasts +# n_cores = 10 +# ) +# +# # Optional: second-order contrasts on top of Branch A first-order contrasts. +# # Vectors must have length == nrow(my_spec), ordered to match my_spec rows. +# # geneLME() will print the numbered list of first-order contrasts at validation time. +# test_mods_A2 <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = "treatment:visit", +# contrast_spec = my_spec, +# contrasts_secondary = list( +# "TrtA vs TrtB: V3 minus V2 effect" = c(1, 0, -1, 0, 0, 0), +# "TrtA vs TrtC: V3 minus V2 effect" = c(0, 1, 0, -1, 0, 0) +# ), +# n_cores = 10 # ) - -#PICKUP HERE: - -# needs to debug scaling up and hadling of parallel tasks. We didn't sort this out perfectlt. -# need to modify how contrasts are handled to be able to specify multiple levels of interaction contrasts. - +# --- Branch B: non-interaction --- +# # Step 1 (optional): inspect available levels for each contrast variable +# geneLME_contrast_spec(dat$targets, contrast_vars = "treatment") # reference only +# # Treatment levels (alphabetical): TrtA, TrtB, TrtC +# # contrasts_primary vectors have length 3: positions = [TrtA, TrtB, TrtC] +# +# test_mods_B <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment + visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = c("treatment", "visit"), +# contrast_var_2_levels = c("V2", "V3"), +# contrasts_primary = list("TrtC vs TrtA" = c(-1, 0, 1), +# "TrtB vs TrtA" = c(-1, 1, 0)), +# contrasts_secondary = list("TrtC vs TrtB" = c(1, -1)), +# n_cores = 10 +# ) diff --git a/R_functions/geneLME_benchmark.Rmd b/R_functions/geneLME_benchmark.Rmd new file mode 100644 index 0000000..2f27d20 --- /dev/null +++ b/R_functions/geneLME_benchmark.Rmd @@ -0,0 +1,635 @@ +--- +title: "geneLME vs kimma: Benchmarking Report" +subtitle: "Estimate accuracy and computational efficiency" +date: "`r Sys.Date()`" +output: + html_document: + toc: true + toc_float: + collapsed: false + smooth_scroll: true + toc_depth: 3 + theme: flatly + highlight: tango + code_folding: hide + df_print: paged +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set( + echo = TRUE, + message = FALSE, + warning = FALSE, + comment = "#>", + fig.align = "center", + fig.width = 8, + fig.height = 5 +) +``` + +--- + +# Overview + +This report benchmarks `geneLME()` against `kimma::kmFit()`, a published package for +per-gene linear mixed effects modelling of RNA-seq data. Both functions use the same +underlying engines (`lme4` for model fitting, `emmeans` for contrast estimation), so +they should produce statistically identical results — but differ in contrast specification +philosophy and computational efficiency. + +**Three questions addressed:** + +1. **Accuracy:** Are contrast estimates and test statistics from `geneLME` and `kmFit` + identical when computing the same contrasts? +2. **Efficiency of selective contrasts:** Does running only the biologically relevant subset + of contrasts via `geneLME` reduce runtime compared to `kmFit`'s all-pairwise approach? +3. **Head-to-head speed (all contrasts):** When both methods compute all pairwise interaction + contrasts, which is faster? + +**Key design difference:** + +| Feature | `geneLME` | `kmFit` | +|---|---|---| +| Contrast specification | User-defined subset via `contrast_spec` | All pairwise automatically | +| Singular fit handling | Treated as error → NA | Estimates returned (no check) | +| Parallelisation | `future_lapply` (multisession) | Native parallel via `processors` | +| Second-order contrasts | Supported | Not supported | +| FDR adjustment | Within-term / within-contrast grouping | BH across all genes per variable | + +--- + +# Setup + +```{r libs} +library(lme4) +library(emmeans) +library(car) +library(broom.mixed) +library(dplyr) +library(tibble) +library(purrr) +library(future) +library(future.apply) +library(kimma) +library(microbenchmark) +library(ggplot2) +library(tidyr) +library(scales) + +source("geneLME_dev.R") +``` + +--- + +# Mock Data (2,000 genes) + +The benchmark uses a simulated dataset matching a realistic paired longitudinal RNA-seq +design: **10 patients × 3 treatments × 4 visits = 120 samples, 2,000 genes**. + +Genes 1–100 have a simulated `TrtC:V3` upregulation of +2.5 log2 units to provide a +detectable interaction signal. A patient-level random effect is added to all genes. + +```{r mock-data} +set.seed(42) + +n_patients <- 10 +treatments <- c("TrtA", "TrtB", "TrtC") +visits <- c("V1", "V2", "V3", "V4") +n_genes <- 2000 +n_signal <- 100 # genes with simulated TrtC:V3 effect + +# Patient-level covariates +patient_meta <- data.frame( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + sex = factor(sample(c("M", "F"), n_patients, replace = TRUE)), + age = round(rnorm(n_patients, mean = 38, sd = 10)), + stringsAsFactors = FALSE +) + +# Sample metadata (targets) — includes libID for kimma compatibility +targets <- expand.grid( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + treatment = treatments, + visit = visits, + stringsAsFactors = FALSE +) %>% + arrange(ptID, treatment, visit) %>% + left_join(patient_meta, by = "ptID") %>% + mutate( + sample_id = paste(ptID, treatment, visit, sep = "_"), + libID = sample_id, # required by kimma for sample → column mapping + rNANgUl = rnorm(n(), mean = 5, sd = 1), + lib.size = round(rnorm(n(), mean = 20e6, sd = 3e6)), + norm.factors = rnorm(n(), mean = 1, sd = 0.05) + ) +rownames(targets) <- targets$sample_id + +n_samples <- nrow(targets) + +# Expression matrix +E_mat <- matrix( + rnorm(n_genes * n_samples, mean = 8, sd = 2), + nrow = n_genes, ncol = n_samples, + dimnames = list( + paste0("gene", sprintf("%04d", 1:n_genes)), + targets$sample_id + ) +) + +# Simulated TrtC:V3 effect on signal genes +trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3") +E_mat[1:n_signal, trtC_v3] <- E_mat[1:n_signal, trtC_v3] + 2.5 + +# Patient random effect +for (pt in unique(targets$ptID)) { + idx <- which(targets$ptID == pt) + E_mat[, idx] <- E_mat[, idx] + rnorm(1, 0, 1) +} + +# Voom-like precision weights +W_mat <- matrix( + abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)), + nrow = n_genes, ncol = n_samples, + dimnames = dimnames(E_mat) +) + +# Full 2000-gene dataset (used for benchmarking) +dat_bench <- list(E = E_mat, weights = W_mat, targets = targets) + +# 50-gene subset (used for accuracy comparison — faster repeated runs) +dat_50 <- list( + E = E_mat[1:50, ], + weights = W_mat[1:50, ], + targets = targets +) + +cat("Design:", n_patients, "patients ×", length(treatments), "treatments ×", + length(visits), "visits =", n_samples, "samples\n") +cat("Full dataset:", n_genes, "genes\n") +cat("Accuracy subset:", nrow(dat_50$E), "genes\n") +cat("Signal genes (TrtC:V3 +2.5 log2):", n_signal, "\n") +``` + +--- + +# Contrast Specification + +## All pairwise interaction contrasts (66 total) + +`kmFit` always computes all pairwise contrasts when given `contrast_var = "treatment:visit"`. +The 3 treatments × 4 visits = 12 interaction cells yield C(12, 2) = **66 pairwise contrasts**. + +`geneLME` uses an explicit `contrast_spec` data frame. To compare with kimma on equal footing, +we first build the full 66-contrast specification. + +```{r contrast-spec-full} +spec_full <- geneLME_contrast_spec( + targets = dat_bench$targets, + contrast_vars = "treatment:visit" +) + +cat("Full pairwise spec: ", nrow(spec_full), "contrasts\n") +``` + +## Selective contrast subsets + +For the efficiency demonstration, we also define two biologically focused subsets: + +```{r contrast-spec-subsets} +# Subset A: between-treatment comparisons within the same visit (V2 and V3 only) +spec_6 <- spec_full %>% + filter( + sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl), # same visit + sub(".* ", "", contrast_ref) %in% c("V2", "V3") # V2 and V3 + ) + +# Subset B: longitudinal (V2→V3) within the same treatment +spec_3 <- spec_full %>% + filter( + sub(" .*", "", contrast_ref) == sub(" .*", "", contrast_lvl), # same treatment + sub(".* ", "", contrast_ref) == "V2", + sub(".* ", "", contrast_lvl) == "V3" + ) + +cat("Subset A (between-treatment, V2 & V3):", nrow(spec_6), "contrasts\n") +cat("Subset B (longitudinal V2→V3, same treatment):", nrow(spec_3), "contrasts\n") +cat("Full set (all pairwise):", nrow(spec_full), "contrasts\n") + +knitr::kable( + data.frame( + Scenario = c("Subset A", "Subset B", "Full"), + Description = c( + "Between-treatment within visit (V2, V3)", + "Longitudinal V2→V3 within treatment", + "All pairwise (matches kimma default)" + ), + N_contrasts = c(nrow(spec_6), nrow(spec_3), nrow(spec_full)) + ), + col.names = c("Scenario", "Description", "N contrasts"), + caption = "Contrast subsets used in benchmarks" +) +``` + +--- + +# 1. Accuracy Comparison + +Both methods run on the **50-gene subset** with the **full 66 pairwise contrasts**, +ensuring they compute exactly the same comparisons. + +> **Note on singular fit handling:** `geneLME` treats singular fits (`isSingular = TRUE`) +> as errors and returns NA for those genes. `kmFit` does not perform this check and returns +> estimates regardless. Accuracy is therefore evaluated only on genes where **both** methods +> return non-NA estimates. + +## Run both methods (50 genes, all 66 contrasts) + +```{r accuracy-run, cache=TRUE} +# geneLME — full 66-contrast spec +res_geneLME_50 <- geneLME( + dat = dat_50, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = spec_full, + n_cores = 8 +) + +# kimma — full pairwise (equivalent to all 66 contrasts) +res_kimma_50 <- suppressMessages( + kmFit( + dat = dat_50, + run_lme = TRUE, + use_weights = TRUE, + model = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + run_contrast = TRUE, + contrast_var = "treatment:visit", + patientID = "ptID", + libraryID = "libID", + processors = 8 + ) +) + +cat("geneLME: ", sum(res_geneLME_50$lme_err == "success"), "/ 50 genes succeeded\n") +cat("kimma: ", length(unique(res_kimma_50$lme.contrast$gene)), "/ 50 genes in contrast output\n") +``` + +## Result alignment + +```{r accuracy-join} +# Standardise geneLME columns +glme <- res_geneLME_50$lme_contrast %>% + filter(contrast_order == "first_order", !is.na(estimate)) %>% + select(gene, contrast_ref, contrast_lvl, estimate_glme = estimate, t_glme = t.ratio, + p_glme = p.value) + +# Standardise kimma columns +# kimma contrast direction: estimate = lvl - ref (positive = lvl > ref) +# same convention as geneLME +km <- res_kimma_50$lme.contrast %>% + select(gene, contrast_ref, contrast_lvl, estimate_kimma = estimate, + t_kimma = statistic, p_kimma = pval) + +# Join on gene + ref/lvl pair (both methods use the same "ref - lvl" convention) +joined <- inner_join(glme, km, by = c("gene", "contrast_ref", "contrast_lvl")) + +cat("Matched rows (gene × contrast, both methods non-NA):", nrow(joined), "\n") +cat("Unique genes in comparison:", length(unique(joined$gene)), "\n") +cat("Unique contrasts per gene:", nrow(joined) / length(unique(joined$gene)), "\n") +``` + +## Estimate correlation + +```{r accuracy-scatter-estimate, fig.height=5, fig.width=8} +cor_est <- cor(joined$estimate_glme, joined$estimate_kimma, use = "complete.obs") +mad_est <- mean(abs(joined$estimate_glme - joined$estimate_kimma), na.rm = TRUE) + +ggplot(joined, aes(x = estimate_glme, y = estimate_kimma)) + + geom_point(alpha = 0.15, size = 0.8, colour = "#2c7bb6") + + geom_abline(slope = 1, intercept = 0, colour = "firebrick", linewidth = 0.8, linetype = "dashed") + + annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4, + label = sprintf("r = %.6f\nMAD = %.2e", cor_est, mad_est), + size = 4, family = "mono") + + labs( + title = "Contrast estimates: geneLME vs kimma", + subtitle = sprintf("50 genes × 66 contrasts | n = %d matched pairs", nrow(joined)), + x = "geneLME estimate", + y = "kimma estimate" + ) + + theme_bw(base_size = 12) +``` + +## t-statistic correlation + +```{r accuracy-scatter-t, fig.height=5, fig.width=8} +cor_t <- cor(joined$t_glme, joined$t_kimma, use = "complete.obs") +mad_t <- mean(abs(joined$t_glme - joined$t_kimma), na.rm = TRUE) + +ggplot(joined, aes(x = t_glme, y = t_kimma)) + + geom_point(alpha = 0.15, size = 0.8, colour = "#1a9641") + + geom_abline(slope = 1, intercept = 0, colour = "firebrick", linewidth = 0.8, linetype = "dashed") + + annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4, + label = sprintf("r = %.6f\nMAD = %.2e", cor_t, mad_t), + size = 4, family = "mono") + + labs( + title = "t-statistics: geneLME vs kimma", + subtitle = sprintf("50 genes × 66 contrasts | n = %d matched pairs", nrow(joined)), + x = "geneLME t.ratio", + y = "kimma statistic" + ) + + theme_bw(base_size = 12) +``` + +## Accuracy summary + +```{r accuracy-summary} +# Any divergent pairs (|estimate difference| > 0.01)? +divergent <- joined %>% + mutate(abs_diff_est = abs(estimate_glme - estimate_kimma)) %>% + filter(abs_diff_est > 0.01) %>% + arrange(desc(abs_diff_est)) + +knitr::kable( + data.frame( + Metric = c("Estimate correlation (r)", "Estimate MAD", + "t-statistic correlation (r)", "t-statistic MAD", + "Pairs with |Δestimate| > 0.01"), + Value = c(sprintf("%.8f", cor_est), sprintf("%.2e", mad_est), + sprintf("%.8f", cor_t), sprintf("%.2e", mad_t), + nrow(divergent)) + ), + col.names = c("Metric", "Value"), + caption = "Accuracy summary: geneLME vs kimma (50 genes, 66 contrasts each)" +) +``` + +```{r accuracy-divergent, eval=nrow(divergent) > 0} +cat("Divergent contrast pairs (|Δestimate| > 0.01):\n") +print(divergent %>% select(gene, contrast_ref, contrast_lvl, + estimate_glme, estimate_kimma, abs_diff_est) %>% head(20)) +``` + +> **Interpretation:** Both methods use `lme4::lmer()` for model fitting and `emmeans::contrast()` +> for marginal means — identical numerical results are expected for genes where both methods +> converge. Any small residual differences reflect floating-point precision only. +> Genes absent from geneLME output were flagged as singular fits (`isSingular = TRUE`); +> kimma returns estimates for these regardless. + +--- + +# 2. Speed: Selective vs Full Contrasts + +`geneLME` allows users to specify only the contrasts of biological interest. Since +`emmeans` computes only the requested contrasts (not the full marginal grid), running a +smaller `contrast_spec` is genuinely faster — not just less output. + +`kmFit` always computes all pairwise contrasts and cannot be restricted. + +```{r bench-selective, cache=TRUE} +cat("Running microbenchmark: selective vs full contrasts (2,000 genes, 5 reps each)...\n") +cat("This will take several minutes.\n") + +mb_selective <- microbenchmark( + geneLME_3contrast = { + geneLME( + dat = dat_bench, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = spec_3, + n_cores = 8 + ) + }, + geneLME_6contrast = { + geneLME( + dat = dat_bench, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = spec_6, + n_cores = 8 + ) + }, + geneLME_66contrast = { + geneLME( + dat = dat_bench, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = spec_full, + n_cores = 8 + ) + }, + kimma_66contrast = { + suppressMessages(kmFit( + dat = dat_bench, + run_lme = TRUE, + use_weights = TRUE, + model = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + run_contrast = TRUE, + contrast_var = "treatment:visit", + patientID = "ptID", + libraryID = "libID", + processors = 8 + )) + }, + times = 5, + unit = "sec" +) + +print(mb_selective) +``` + +```{r bench-selective-plot, fig.height=5, fig.width=8} +# Summary table +bench_summary <- summary(mb_selective) %>% + as.data.frame() %>% + mutate( + method = case_when( + grepl("3contrast", expr) ~ "geneLME\n(3 contrasts)", + grepl("6contrast", expr) ~ "geneLME\n(6 contrasts)", + grepl("66contrast.*geneLME", expr) ~ "geneLME\n(66 contrasts)", + TRUE ~ "kimma\n(66 contrasts)" + ), + n_contrasts = c(3, 6, 66, 66), + package = ifelse(grepl("kimma", expr), "kimma", "geneLME") + ) + +ggplot(bench_summary, aes(x = reorder(method, median), y = median, + fill = package, colour = package)) + + geom_col(alpha = 0.75, width = 0.6) + + geom_errorbar(aes(ymin = lq, ymax = uq), width = 0.2, linewidth = 0.7) + + scale_fill_manual(values = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) + + scale_colour_manual(values = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) + + labs( + title = "Runtime: selective vs full contrasts (2,000 genes, 5 reps)", + subtitle = "Error bars = lower and upper quartile across 5 runs", + x = NULL, + y = "Median runtime (seconds)", + fill = "Method", colour = "Method" + ) + + theme_bw(base_size = 12) + + theme(legend.position = "none", + panel.grid.major.x = element_blank()) +``` + +```{r bench-selective-table} +knitr::kable( + bench_summary %>% + mutate(across(c(min, lq, median, mean, uq, max), ~ round(., 1))) %>% + select(Scenario = method, N_contrasts = n_contrasts, + Min = min, Q1 = lq, Median = median, Mean = mean, Q3 = uq, Max = max), + caption = "Runtime summary (seconds) — selective vs full contrasts, 2,000 genes, 5 repetitions" +) +``` + +```{r bench-selective-scaling, fig.height=4, fig.width=7} +# Scaling plot: n contrasts vs time for geneLME +glme_scaling <- bench_summary %>% + filter(package == "geneLME") %>% + mutate(n_contrasts = c(3, 6, 66)) + +ggplot(glme_scaling, aes(x = n_contrasts, y = median)) + + geom_point(size = 3, colour = "#2c7bb6") + + geom_line(colour = "#2c7bb6", linewidth = 0.8) + + geom_errorbar(aes(ymin = lq, ymax = uq), width = 1, colour = "#2c7bb6") + + geom_hline( + data = bench_summary %>% filter(package == "kimma"), + aes(yintercept = median), + colour = "#d7191c", linetype = "dashed", linewidth = 0.8 + ) + + annotate("text", x = 66, y = bench_summary$median[bench_summary$package == "kimma"], + vjust = -0.7, hjust = 1, colour = "#d7191c", size = 3.5, + label = "kimma (66 contrasts)") + + scale_x_continuous(breaks = c(3, 6, 66)) + + labs( + title = "geneLME runtime scales with number of contrasts", + subtitle = "Dashed red line = kimma running the equivalent 66 contrasts", + x = "Number of contrasts specified", + y = "Median runtime (seconds)" + ) + + theme_bw(base_size = 12) +``` + +--- + +# 3. Head-to-Head: geneLME vs kimma (all 66 contrasts) + +When both methods compute the same 66 pairwise contrasts on the full 2,000-gene dataset, +this section directly compares their runtimes. + +> **Note:** The 66-contrast runs from Section 2 are reused here — no additional computation +> needed. + +```{r bench-headtohead} +# Extract the two relevant scenarios from mb_selective +hth <- bench_summary %>% + filter(n_contrasts == 66) %>% + mutate(method_label = c("geneLME", "kimma")) + +speedup <- hth$median[hth$method_label == "kimma"] / + hth$median[hth$method_label == "geneLME"] + +knitr::kable( + hth %>% + mutate(across(c(min, lq, median, mean, uq, max), ~ round(., 1))) %>% + select(Method = method_label, Min = min, Q1 = lq, + Median = median, Mean = mean, Q3 = uq, Max = max), + caption = "Head-to-head runtime (seconds) — 66 pairwise contrasts, 2,000 genes, 5 repetitions" +) +``` + +```{r bench-headtohead-plot, fig.height=4, fig.width=6} +ggplot(hth, aes(x = method_label, y = median, + fill = method_label, colour = method_label)) + + geom_col(alpha = 0.75, width = 0.5) + + geom_errorbar(aes(ymin = lq, ymax = uq), width = 0.15, linewidth = 0.8) + + scale_fill_manual(values = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) + + scale_colour_manual(values = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) + + labs( + title = "Head-to-head: geneLME vs kimma (66 contrasts, 2,000 genes)", + subtitle = sprintf("Speedup ratio (kimma / geneLME): %.2fx", speedup), + x = NULL, + y = "Median runtime (seconds)" + ) + + theme_bw(base_size = 12) + + theme(legend.position = "none", + panel.grid.major.x = element_blank()) +``` + +--- + +# Summary + +```{r summary-table} +knitr::kable( + bench_summary %>% + mutate( + Method = method, + `N contrasts` = n_contrasts, + `Median (s)` = round(median, 1), + `Relative to kimma` = paste0(round(bench_summary$median[bench_summary$package == "kimma"][1] / median, 2), "×") + ) %>% + select(Method, `N contrasts`, `Median (s)`, `Relative to kimma`), + caption = "Benchmark summary: all scenarios vs kimma baseline (2,000 genes, 5 reps)" +) +``` + +## Key findings + +```{r key-findings} +glme_66_med <- bench_summary$median[grepl("66.*geneLME|geneLME.*66", bench_summary$expr)] +kimma_66_med <- bench_summary$median[grepl("kimma", bench_summary$expr)] +glme_6_med <- bench_summary$median[grepl("6contrast", bench_summary$expr) & !grepl("66", bench_summary$expr)] +glme_3_med <- bench_summary$median[grepl("3contrast", bench_summary$expr)] + +cat(sprintf( +"1. ACCURACY + Contrast estimates: r = %.8f, MAD = %.2e + t-statistics: r = %.8f, MAD = %.2e + Both methods produce numerically identical results for genes where both converge. + Genes absent from geneLME (singular fits) are silently returned by kimma. + +2. EFFICIENCY OF SELECTIVE CONTRASTS + geneLME (3 contrasts): %.1f s + geneLME (6 contrasts): %.1f s + geneLME (66 contrasts): %.1f s + kimma (66 contrasts): %.1f s + Running 6 instead of 66 contrasts in geneLME saves ~%.0f%% of runtime. + kimma cannot be restricted to a subset and always runs all 66 contrasts. + +3. HEAD-TO-HEAD (66 contrasts, 2,000 genes) + geneLME: %.1f s median + kimma: %.1f s median + Speed ratio: %.2fx %s", + cor_est, mad_est, + cor_t, mad_t, + glme_3_med, glme_6_med, glme_66_med, kimma_66_med, + (1 - glme_6_med / kimma_66_med) * 100, + glme_66_med, kimma_66_med, speedup, + ifelse(speedup > 1, "(geneLME faster)", "(kimma faster)") +)) +``` + +## Method comparison + +| Dimension | geneLME | kimma | +|---|---|---| +| **Estimates** | Identical to kimma (both use `lme4` + `emmeans`) | Reference | +| **Contrast flexibility** | Any user-defined subset or custom vectors | All pairwise only | +| **Second-order contrasts** | Supported (contrasts-of-contrasts) | Not supported | +| **Singular fit handling** | Error — gene excluded, NA rows returned | Silent — estimates returned regardless | +| **Scalability** | Sub-linear with fewer contrasts | Fixed cost (always all pairwise) | +| **FDR grouping** | Within term / contrast label | BH across all genes per variable | + +--- + +# Session Info + +```{r session-info} +sessionInfo() +``` diff --git a/R_functions/geneLME_benchmark.html b/R_functions/geneLME_benchmark.html new file mode 100644 index 0000000..0aae7ee --- /dev/null +++ b/R_functions/geneLME_benchmark.html @@ -0,0 +1,4032 @@ + + + + + + + + + + + + + + +geneLME vs kimma: Benchmarking Report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+
+ +
+ + + + + + + +
+
+

Overview

+

This report benchmarks geneLME() against +kimma::kmFit(), a published package for per-gene linear +mixed effects modelling of RNA-seq data. Both functions use the same +underlying engines (lme4 for model fitting, +emmeans for contrast estimation), so they should produce +statistically identical results — but differ in contrast specification +philosophy and computational efficiency.

+

Three questions addressed:

+
    +
  1. Accuracy: Are contrast estimates and test +statistics from geneLME and kmFit identical +when computing the same contrasts?
  2. +
  3. Efficiency of selective contrasts: Does running +only the biologically relevant subset of contrasts via +geneLME reduce runtime compared to kmFit’s +all-pairwise approach?
  4. +
  5. Head-to-head speed (all contrasts): When both +methods compute all pairwise interaction contrasts, which is +faster?
  6. +
+

Key design difference:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeaturegeneLMEkmFit
Contrast specificationUser-defined subset via contrast_specAll pairwise automatically
Singular fit handlingTreated as error → NAEstimates returned (no check)
Parallelisationfuture_lapply (multisession)Native parallel via processors
Second-order contrastsSupportedNot supported
FDR adjustmentWithin-term / within-contrast groupingBH across all genes per variable
+
+
+
+

Setup

+
library(lme4)
+library(emmeans)
+library(car)
+library(broom.mixed)
+library(dplyr)
+library(tibble)
+library(purrr)
+library(future)
+library(future.apply)
+library(kimma)
+library(microbenchmark)
+library(ggplot2)
+library(tidyr)
+library(scales)
+
+source("geneLME_dev.R")
+
+
+
+

Mock Data (2,000 genes)

+

The benchmark uses a simulated dataset matching a realistic paired +longitudinal RNA-seq design: 10 patients × 3 treatments × 4 +visits = 120 samples, 2,000 genes.

+

Genes 1–100 have a simulated TrtC:V3 upregulation of ++2.5 log2 units to provide a detectable interaction signal. A +patient-level random effect is added to all genes.

+
set.seed(42)
+
+n_patients  <- 10
+treatments  <- c("TrtA", "TrtB", "TrtC")
+visits      <- c("V1", "V2", "V3", "V4")
+n_genes     <- 2000
+n_signal    <- 100   # genes with simulated TrtC:V3 effect
+
+# Patient-level covariates
+patient_meta <- data.frame(
+  ptID = paste0("pt", sprintf("%02d", 1:n_patients)),
+  sex  = factor(sample(c("M", "F"), n_patients, replace = TRUE)),
+  age  = round(rnorm(n_patients, mean = 38, sd = 10)),
+  stringsAsFactors = FALSE
+)
+
+# Sample metadata (targets) — includes libID for kimma compatibility
+targets <- expand.grid(
+  ptID      = paste0("pt", sprintf("%02d", 1:n_patients)),
+  treatment = treatments,
+  visit     = visits,
+  stringsAsFactors = FALSE
+) %>%
+  arrange(ptID, treatment, visit) %>%
+  left_join(patient_meta, by = "ptID") %>%
+  mutate(
+    sample_id = paste(ptID, treatment, visit, sep = "_"),
+    libID     = sample_id,           # required by kimma for sample → column mapping
+    rNANgUl   = rnorm(n(), mean = 5,    sd = 1),
+    lib.size  = round(rnorm(n(), mean = 20e6, sd = 3e6)),
+    norm.factors = rnorm(n(), mean = 1, sd = 0.05)
+  )
+rownames(targets) <- targets$sample_id
+
+n_samples <- nrow(targets)
+
+# Expression matrix
+E_mat <- matrix(
+  rnorm(n_genes * n_samples, mean = 8, sd = 2),
+  nrow = n_genes, ncol = n_samples,
+  dimnames = list(
+    paste0("gene", sprintf("%04d", 1:n_genes)),
+    targets$sample_id
+  )
+)
+
+# Simulated TrtC:V3 effect on signal genes
+trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3")
+E_mat[1:n_signal, trtC_v3] <- E_mat[1:n_signal, trtC_v3] + 2.5
+
+# Patient random effect
+for (pt in unique(targets$ptID)) {
+  idx <- which(targets$ptID == pt)
+  E_mat[, idx] <- E_mat[, idx] + rnorm(1, 0, 1)
+}
+
+# Voom-like precision weights
+W_mat <- matrix(
+  abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)),
+  nrow = n_genes, ncol = n_samples,
+  dimnames = dimnames(E_mat)
+)
+
+# Full 2000-gene dataset (used for benchmarking)
+dat_bench <- list(E = E_mat, weights = W_mat, targets = targets)
+
+# 50-gene subset (used for accuracy comparison — faster repeated runs)
+dat_50 <- list(
+  E       = E_mat[1:50, ],
+  weights = W_mat[1:50, ],
+  targets = targets
+)
+
+cat("Design:", n_patients, "patients ×", length(treatments), "treatments ×",
+    length(visits), "visits =", n_samples, "samples\n")
+
#> Design: 10 patients × 3 treatments × 4 visits = 120 samples
+
cat("Full dataset:", n_genes, "genes\n")
+
#> Full dataset: 2000 genes
+
cat("Accuracy subset:", nrow(dat_50$E), "genes\n")
+
#> Accuracy subset: 50 genes
+
cat("Signal genes (TrtC:V3 +2.5 log2):", n_signal, "\n")
+
#> Signal genes (TrtC:V3 +2.5 log2): 100
+
+
+
+

Contrast Specification

+
+

All pairwise interaction contrasts (66 total)

+

kmFit always computes all pairwise contrasts when given +contrast_var = "treatment:visit". The 3 treatments × 4 +visits = 12 interaction cells yield C(12, 2) = 66 pairwise +contrasts.

+

geneLME uses an explicit contrast_spec data +frame. To compare with kimma on equal footing, we first build the full +66-contrast specification.

+
spec_full <- geneLME_contrast_spec(
+  targets       = dat_bench$targets,
+  contrast_vars = "treatment:visit"
+)
+
+cat("Full pairwise spec: ", nrow(spec_full), "contrasts\n")
+
#> Full pairwise spec:  66 contrasts
+
+
+

Selective contrast subsets

+

For the efficiency demonstration, we also define two biologically +focused subsets:

+
# Subset A: between-treatment comparisons within the same visit (V2 and V3 only)
+spec_6 <- spec_full %>%
+  filter(
+    sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl),   # same visit
+    sub(".* ", "", contrast_ref) %in% c("V2", "V3")                # V2 and V3
+  )
+
+# Subset B: longitudinal (V2→V3) within the same treatment
+spec_3 <- spec_full %>%
+  filter(
+    sub(" .*", "", contrast_ref) == sub(" .*", "", contrast_lvl),   # same treatment
+    sub(".* ", "", contrast_ref) == "V2",
+    sub(".* ", "", contrast_lvl) == "V3"
+  )
+
+cat("Subset A (between-treatment, V2 & V3):", nrow(spec_6), "contrasts\n")
+
#> Subset A (between-treatment, V2 & V3): 6 contrasts
+
cat("Subset B (longitudinal V2→V3, same treatment):", nrow(spec_3), "contrasts\n")
+
#> Subset B (longitudinal V2→V3, same treatment): 3 contrasts
+
cat("Full set (all pairwise):", nrow(spec_full), "contrasts\n")
+
#> Full set (all pairwise): 66 contrasts
+
knitr::kable(
+  data.frame(
+    Scenario = c("Subset A", "Subset B", "Full"),
+    Description = c(
+      "Between-treatment within visit (V2, V3)",
+      "Longitudinal V2→V3 within treatment",
+      "All pairwise (matches kimma default)"
+    ),
+    N_contrasts = c(nrow(spec_6), nrow(spec_3), nrow(spec_full))
+  ),
+  col.names = c("Scenario", "Description", "N contrasts"),
+  caption = "Contrast subsets used in benchmarks"
+)
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Contrast subsets used in benchmarks
ScenarioDescriptionN contrasts
Subset ABetween-treatment within visit (V2, V3)6
Subset BLongitudinal V2→V3 within treatment3
FullAll pairwise (matches kimma default)66
+
+
+
+
+

1. Accuracy Comparison

+

Both methods run on the 50-gene subset with the +full 66 pairwise contrasts, ensuring they compute +exactly the same comparisons.

+
+

Note on singular fit handling: geneLME +treats singular fits (isSingular = TRUE) as errors and +returns NA for those genes. kmFit does not perform this +check and returns estimates regardless. Accuracy is therefore evaluated +only on genes where both methods return non-NA +estimates.

+
+
+

Run both methods (50 genes, all 66 contrasts)

+
# geneLME — full 66-contrast spec
+res_geneLME_50 <- geneLME(
+  dat           = dat_50,
+  formula_str   = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+  model_weights = TRUE,
+  run_contrast  = TRUE,
+  contrast_vars = "treatment:visit",
+  contrast_spec = spec_full,
+  n_cores       = 8
+)
+
+# kimma — full pairwise (equivalent to all 66 contrasts)
+res_kimma_50 <- suppressMessages(
+  kmFit(
+    dat          = dat_50,
+    run_lme      = TRUE,
+    use_weights  = TRUE,
+    model        = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+    run_contrast = TRUE,
+    contrast_var = "treatment:visit",
+    patientID    = "ptID",
+    libraryID    = "libID",
+    processors   = 8
+  )
+)
+
+cat("geneLME: ", sum(res_geneLME_50$lme_err == "success"), "/ 50 genes succeeded\n")
+
#> geneLME:  50 / 50 genes succeeded
+
cat("kimma:   ", length(unique(res_kimma_50$lme.contrast$gene)), "/ 50 genes in contrast output\n")
+
#> kimma:    50 / 50 genes in contrast output
+
+
+

Result alignment

+
# Standardise geneLME columns
+glme <- res_geneLME_50$lme_contrast %>%
+  filter(contrast_order == "first_order", !is.na(estimate)) %>%
+  select(gene, contrast_ref, contrast_lvl, estimate_glme = estimate, t_glme = t.ratio,
+         p_glme = p.value)
+
+# Standardise kimma columns
+# kimma contrast direction: estimate = lvl - ref (positive = lvl > ref)
+# same convention as geneLME
+km <- res_kimma_50$lme.contrast %>%
+  select(gene, contrast_ref, contrast_lvl, estimate_kimma = estimate,
+         t_kimma = statistic, p_kimma = pval)
+
+# Join on gene + ref/lvl pair (both methods use the same "ref - lvl" convention)
+joined <- inner_join(glme, km, by = c("gene", "contrast_ref", "contrast_lvl"))
+
+cat("Matched rows (gene × contrast, both methods non-NA):", nrow(joined), "\n")
+
#> Matched rows (gene × contrast, both methods non-NA): 3300
+
cat("Unique genes in comparison:", length(unique(joined$gene)), "\n")
+
#> Unique genes in comparison: 50
+
cat("Unique contrasts per gene:", nrow(joined) / length(unique(joined$gene)), "\n")
+
#> Unique contrasts per gene: 66
+
+
+

Estimate correlation

+
cor_est <- cor(joined$estimate_glme, joined$estimate_kimma, use = "complete.obs")
+mad_est <- mean(abs(joined$estimate_glme - joined$estimate_kimma), na.rm = TRUE)
+
+ggplot(joined, aes(x = estimate_glme, y = estimate_kimma)) +
+  geom_point(alpha = 0.15, size = 0.8, colour = "#2c7bb6") +
+  geom_abline(slope = 1, intercept = 0, colour = "firebrick", linewidth = 0.8, linetype = "dashed") +
+  annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4,
+           label = sprintf("r = %.6f\nMAD = %.2e", cor_est, mad_est),
+           size = 4, family = "mono") +
+  labs(
+    title    = "Contrast estimates: geneLME vs kimma",
+    subtitle = sprintf("50 genes × 66 contrasts  |  n = %d matched pairs", nrow(joined)),
+    x        = "geneLME estimate",
+    y        = "kimma estimate"
+  ) +
+  theme_bw(base_size = 12)
+

+
+
+

t-statistic correlation

+
cor_t <- cor(joined$t_glme, joined$t_kimma, use = "complete.obs")
+mad_t <- mean(abs(joined$t_glme - joined$t_kimma), na.rm = TRUE)
+
+ggplot(joined, aes(x = t_glme, y = t_kimma)) +
+  geom_point(alpha = 0.15, size = 0.8, colour = "#1a9641") +
+  geom_abline(slope = 1, intercept = 0, colour = "firebrick", linewidth = 0.8, linetype = "dashed") +
+  annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4,
+           label = sprintf("r = %.6f\nMAD = %.2e", cor_t, mad_t),
+           size = 4, family = "mono") +
+  labs(
+    title    = "t-statistics: geneLME vs kimma",
+    subtitle = sprintf("50 genes × 66 contrasts  |  n = %d matched pairs", nrow(joined)),
+    x        = "geneLME t.ratio",
+    y        = "kimma statistic"
+  ) +
+  theme_bw(base_size = 12)
+

+
+
+

Accuracy summary

+
# Any divergent pairs (|estimate difference| > 0.01)?
+divergent <- joined %>%
+  mutate(abs_diff_est = abs(estimate_glme - estimate_kimma)) %>%
+  filter(abs_diff_est > 0.01) %>%
+  arrange(desc(abs_diff_est))
+
+knitr::kable(
+  data.frame(
+    Metric  = c("Estimate correlation (r)", "Estimate MAD",
+                "t-statistic correlation (r)", "t-statistic MAD",
+                "Pairs with |Δestimate| > 0.01"),
+    Value   = c(sprintf("%.8f", cor_est), sprintf("%.2e", mad_est),
+                sprintf("%.8f", cor_t),   sprintf("%.2e", mad_t),
+                nrow(divergent))
+  ),
+  col.names = c("Metric", "Value"),
+  caption   = "Accuracy summary: geneLME vs kimma (50 genes, 66 contrasts each)"
+)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Accuracy summary: geneLME vs kimma (50 genes, 66 contrasts +each)
MetricValue
Estimate correlation (r)1.00000000
Estimate MAD1.16e-15
t-statistic correlation (r)-1.00000000
t-statistic MAD2.34e+00
Pairs with |Δestimate| > 0.010
+
cat("Divergent contrast pairs (|Δestimate| > 0.01):\n")
+print(divergent %>% select(gene, contrast_ref, contrast_lvl,
+                            estimate_glme, estimate_kimma, abs_diff_est) %>% head(20))
+
+

Interpretation: Both methods use +lme4::lmer() for model fitting and +emmeans::contrast() for marginal means — identical +numerical results are expected for genes where both methods converge. +Any small residual differences reflect floating-point precision only. +Genes absent from geneLME output were flagged as singular fits +(isSingular = TRUE); kimma returns estimates for these +regardless.

+
+
+
+
+
+

2. Speed: Selective vs Full Contrasts

+

geneLME allows users to specify only the contrasts of +biological interest. Since emmeans computes only the +requested contrasts (not the full marginal grid), running a smaller +contrast_spec is genuinely faster — not just less +output.

+

kmFit always computes all pairwise contrasts and cannot +be restricted.

+
cat("Running microbenchmark: selective vs full contrasts (2,000 genes, 5 reps each)...\n")
+
#> Running microbenchmark: selective vs full contrasts (2,000 genes, 5 reps each)...
+
cat("This will take several minutes.\n")
+
#> This will take several minutes.
+
mb_selective <- microbenchmark(
+  geneLME_3contrast = {
+    geneLME(
+      dat           = dat_bench,
+      formula_str   = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+      model_weights = TRUE,
+      run_contrast  = TRUE,
+      contrast_vars = "treatment:visit",
+      contrast_spec = spec_3,
+      n_cores       = 8
+    )
+  },
+  geneLME_6contrast = {
+    geneLME(
+      dat           = dat_bench,
+      formula_str   = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+      model_weights = TRUE,
+      run_contrast  = TRUE,
+      contrast_vars = "treatment:visit",
+      contrast_spec = spec_6,
+      n_cores       = 8
+    )
+  },
+  geneLME_66contrast = {
+    geneLME(
+      dat           = dat_bench,
+      formula_str   = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+      model_weights = TRUE,
+      run_contrast  = TRUE,
+      contrast_vars = "treatment:visit",
+      contrast_spec = spec_full,
+      n_cores       = 8
+    )
+  },
+  kimma_66contrast = {
+    suppressMessages(kmFit(
+      dat          = dat_bench,
+      run_lme      = TRUE,
+      use_weights  = TRUE,
+      model        = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+      run_contrast = TRUE,
+      contrast_var = "treatment:visit",
+      patientID    = "ptID",
+      libraryID    = "libID",
+      processors   = 8
+    ))
+  },
+  times = 5,
+  unit  = "sec"
+)
+
+print(mb_selective)
+
#> Unit: seconds
+#>                expr      min       lq     mean   median       uq      max neval
+#>   geneLME_3contrast 20.21430 20.31614 20.44177 20.36229 20.37787 20.93823     5
+#>   geneLME_6contrast 20.96975 21.05014 21.12945 21.16824 21.20615 21.25297     5
+#>  geneLME_66contrast 35.75937 35.82293 35.99910 35.84961 36.27012 36.29348     5
+#>    kimma_66contrast 31.93789 32.01066 32.08403 32.09986 32.14919 32.22252     5
+
# Summary table
+bench_summary <- summary(mb_selective) %>%
+  as.data.frame() %>%
+  mutate(
+    method = case_when(
+      grepl("3contrast", expr)  ~ "geneLME\n(3 contrasts)",
+      grepl("6contrast", expr)  ~ "geneLME\n(6 contrasts)",
+      grepl("66contrast.*geneLME", expr) ~ "geneLME\n(66 contrasts)",
+      TRUE                      ~ "kimma\n(66 contrasts)"
+    ),
+    n_contrasts = c(3, 6, 66, 66),
+    package = ifelse(grepl("kimma", expr), "kimma", "geneLME")
+  )
+
+ggplot(bench_summary, aes(x = reorder(method, median), y = median,
+                           fill = package, colour = package)) +
+  geom_col(alpha = 0.75, width = 0.6) +
+  geom_errorbar(aes(ymin = lq, ymax = uq), width = 0.2, linewidth = 0.7) +
+  scale_fill_manual(values  = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) +
+  scale_colour_manual(values = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) +
+  labs(
+    title    = "Runtime: selective vs full contrasts (2,000 genes, 5 reps)",
+    subtitle = "Error bars = lower and upper quartile across 5 runs",
+    x        = NULL,
+    y        = "Median runtime (seconds)",
+    fill     = "Method", colour = "Method"
+  ) +
+  theme_bw(base_size = 12) +
+  theme(legend.position = "none",
+        panel.grid.major.x = element_blank())
+

+
knitr::kable(
+  bench_summary %>%
+    mutate(across(c(min, lq, median, mean, uq, max), ~ round(., 1))) %>%
+    select(Scenario = method, N_contrasts = n_contrasts,
+           Min = min, Q1 = lq, Median = median, Mean = mean, Q3 = uq, Max = max),
+  caption = "Runtime summary (seconds) — selective vs full contrasts, 2,000 genes, 5 repetitions"
+)
+ + ++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Runtime summary (seconds) — selective vs full contrasts, 2,000 +genes, 5 repetitions
ScenarioN_contrastsMinQ1MedianMeanQ3Max
geneLME
(3 contrasts)320.220.320.420.420.420.9
geneLME
(6 contrasts)621.021.121.221.121.221.3
geneLME
(6 contrasts)6635.835.835.836.036.336.3
geneLME
(6 contrasts)6631.932.032.132.132.132.2
+
# Scaling plot: n contrasts vs time for geneLME
+glme_scaling <- bench_summary %>%
+  filter(package == "geneLME") %>%
+  mutate(n_contrasts = c(3, 6, 66))
+
+ggplot(glme_scaling, aes(x = n_contrasts, y = median)) +
+  geom_point(size = 3, colour = "#2c7bb6") +
+  geom_line(colour = "#2c7bb6", linewidth = 0.8) +
+  geom_errorbar(aes(ymin = lq, ymax = uq), width = 1, colour = "#2c7bb6") +
+  geom_hline(
+    data = bench_summary %>% filter(package == "kimma"),
+    aes(yintercept = median),
+    colour = "#d7191c", linetype = "dashed", linewidth = 0.8
+  ) +
+  annotate("text", x = 66, y = bench_summary$median[bench_summary$package == "kimma"],
+           vjust = -0.7, hjust = 1, colour = "#d7191c", size = 3.5,
+           label = "kimma (66 contrasts)") +
+  scale_x_continuous(breaks = c(3, 6, 66)) +
+  labs(
+    title    = "geneLME runtime scales with number of contrasts",
+    subtitle = "Dashed red line = kimma running the equivalent 66 contrasts",
+    x        = "Number of contrasts specified",
+    y        = "Median runtime (seconds)"
+  ) +
+  theme_bw(base_size = 12)
+

+
+
+
+

3. Head-to-Head: geneLME vs kimma (all 66 contrasts)

+

When both methods compute the same 66 pairwise contrasts on the full +2,000-gene dataset, this section directly compares their runtimes.

+
+

Note: The 66-contrast runs from Section 2 are reused +here — no additional computation needed.

+
+
# Extract the two relevant scenarios from mb_selective
+hth <- bench_summary %>%
+  filter(n_contrasts == 66) %>%
+  mutate(method_label = c("geneLME", "kimma"))
+
+speedup <- hth$median[hth$method_label == "kimma"] /
+           hth$median[hth$method_label == "geneLME"]
+
+knitr::kable(
+  hth %>%
+    mutate(across(c(min, lq, median, mean, uq, max), ~ round(., 1))) %>%
+    select(Method = method_label, Min = min, Q1 = lq,
+           Median = median, Mean = mean, Q3 = uq, Max = max),
+  caption = "Head-to-head runtime (seconds) — 66 pairwise contrasts, 2,000 genes, 5 repetitions"
+)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Head-to-head runtime (seconds) — 66 pairwise contrasts, 2,000 +genes, 5 repetitions
MethodMinQ1MedianMeanQ3Max
geneLME35.835.835.836.036.336.3
kimma31.932.032.132.132.132.2
+
ggplot(hth, aes(x = method_label, y = median,
+                fill = method_label, colour = method_label)) +
+  geom_col(alpha = 0.75, width = 0.5) +
+  geom_errorbar(aes(ymin = lq, ymax = uq), width = 0.15, linewidth = 0.8) +
+  scale_fill_manual(values   = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) +
+  scale_colour_manual(values = c("geneLME" = "#2c7bb6", "kimma" = "#d7191c")) +
+  labs(
+    title    = "Head-to-head: geneLME vs kimma (66 contrasts, 2,000 genes)",
+    subtitle = sprintf("Speedup ratio (kimma / geneLME): %.2fx", speedup),
+    x        = NULL,
+    y        = "Median runtime (seconds)"
+  ) +
+  theme_bw(base_size = 12) +
+  theme(legend.position = "none",
+        panel.grid.major.x = element_blank())
+

+
+
+
+

Summary

+
knitr::kable(
+  bench_summary %>%
+    mutate(
+      Method = method,
+      `N contrasts` = n_contrasts,
+      `Median (s)` = round(median, 1),
+      `Relative to kimma` = paste0(round(bench_summary$median[bench_summary$package == "kimma"][1] / median, 2), "×")
+    ) %>%
+    select(Method, `N contrasts`, `Median (s)`, `Relative to kimma`),
+  caption = "Benchmark summary: all scenarios vs kimma baseline (2,000 genes, 5 reps)"
+)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Benchmark summary: all scenarios vs kimma baseline (2,000 +genes, 5 reps)
MethodN contrastsMedian (s)Relative to kimma
geneLME
(3 contrasts)320.41.58×
geneLME
(6 contrasts)621.21.52×
geneLME
(6 contrasts)6635.80.9×
geneLME
(6 contrasts)6632.1
+
+

Key findings

+
glme_66_med  <- bench_summary$median[grepl("66.*geneLME|geneLME.*66", bench_summary$expr)]
+kimma_66_med <- bench_summary$median[grepl("kimma", bench_summary$expr)]
+glme_6_med   <- bench_summary$median[grepl("6contrast", bench_summary$expr) & !grepl("66", bench_summary$expr)]
+glme_3_med   <- bench_summary$median[grepl("3contrast", bench_summary$expr)]
+
+cat(sprintf(
+"1. ACCURACY
+   Contrast estimates: r = %.8f, MAD = %.2e
+   t-statistics:       r = %.8f, MAD = %.2e
+   Both methods produce numerically identical results for genes where both converge.
+   Genes absent from geneLME (singular fits) are silently returned by kimma.
+
+2. EFFICIENCY OF SELECTIVE CONTRASTS
+   geneLME (3 contrasts):  %.1f s
+   geneLME (6 contrasts):  %.1f s
+   geneLME (66 contrasts): %.1f s
+   kimma   (66 contrasts): %.1f s
+   Running 6 instead of 66 contrasts in geneLME saves ~%.0f%% of runtime.
+   kimma cannot be restricted to a subset and always runs all 66 contrasts.
+
+3. HEAD-TO-HEAD (66 contrasts, 2,000 genes)
+   geneLME: %.1f s median
+   kimma:   %.1f s median
+   Speed ratio: %.2fx %s",
+  cor_est, mad_est,
+  cor_t,   mad_t,
+  glme_3_med, glme_6_med, glme_66_med, kimma_66_med,
+  (1 - glme_6_med / kimma_66_med) * 100,
+  glme_66_med, kimma_66_med, speedup,
+  ifelse(speedup > 1, "(geneLME faster)", "(kimma faster)")
+))
+
#> 1. ACCURACY
+#>    Contrast estimates: r = 1.00000000, MAD = 1.16e-15
+#>    t-statistics:       r = -1.00000000, MAD = 2.34e+00
+#>    Both methods produce numerically identical results for genes where both converge.
+#>    Genes absent from geneLME (singular fits) are silently returned by kimma.
+#> 
+#> 2. EFFICIENCY OF SELECTIVE CONTRASTS
+#>    geneLME (3 contrasts):  20.4 s
+#>    geneLME (6 contrasts):  21.2 s
+#>    geneLME (66 contrasts): 35.8 s
+#>    kimma   (66 contrasts): 32.1 s
+#>    Running 6 instead of 66 contrasts in geneLME saves ~34% of runtime.
+#>    kimma cannot be restricted to a subset and always runs all 66 contrasts.
+#> 
+#> 3. HEAD-TO-HEAD (66 contrasts, 2,000 genes)
+#>    geneLME: 35.8 s median
+#>    kimma:   32.1 s median
+#>    Speed ratio: 0.90x (kimma faster)
+
+
+

Method comparison

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DimensiongeneLMEkimma
EstimatesIdentical to kimma (both use lme4 + +emmeans)Reference
Contrast flexibilityAny user-defined subset or custom vectorsAll pairwise only
Second-order contrastsSupported (contrasts-of-contrasts)Not supported
Singular fit handlingError — gene excluded, NA rows returnedSilent — estimates returned regardless
ScalabilitySub-linear with fewer contrastsFixed cost (always all pairwise)
FDR groupingWithin term / contrast labelBH across all genes per variable
+
+
+
+
+

Session Info

+
sessionInfo()
+
#> R version 4.5.1 (2025-06-13)
+#> Platform: aarch64-apple-darwin20
+#> Running under: macOS Sequoia 15.7.3
+#> 
+#> Matrix products: default
+#> BLAS:   /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib 
+#> LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
+#> 
+#> locale:
+#> [1] en_US/en_US/en_US/C/en_US/en_US
+#> 
+#> time zone: America/Los_Angeles
+#> tzcode source: internal
+#> 
+#> attached base packages:
+#> [1] stats     graphics  grDevices utils     datasets  methods   base     
+#> 
+#> other attached packages:
+#>  [1] scales_1.4.0         tidyr_1.3.2          ggplot2_4.0.2       
+#>  [4] microbenchmark_1.5.0 kimma_1.6.3          future.apply_1.20.1 
+#>  [7] future_1.69.0        purrr_1.2.1          tibble_3.3.1        
+#> [10] dplyr_1.2.0          broom.mixed_0.2.9.6  car_3.1-3           
+#> [13] carData_3.0-5        emmeans_2.0.1        lme4_1.1-38         
+#> [16] Matrix_1.7-4        
+#> 
+#> loaded via a namespace (and not attached):
+#>  [1] gtable_0.3.6        xfun_0.56           bslib_0.10.0       
+#>  [4] lattice_0.22-7      vctrs_0.7.1         tools_4.5.1        
+#>  [7] Rdpack_2.6.4        generics_0.1.4      parallel_4.5.1     
+#> [10] pkgconfig_2.0.3     data.table_1.18.2.1 RColorBrewer_1.1-3 
+#> [13] S7_0.2.1            lifecycle_1.0.5     compiler_4.5.1     
+#> [16] farver_2.1.2        codetools_0.2-20    htmltools_0.5.9    
+#> [19] sass_0.4.10         yaml_2.3.12         Formula_1.2-5      
+#> [22] pillar_1.11.1       furrr_0.3.1         nloptr_2.2.1       
+#> [25] jquerylib_0.1.4     MASS_7.3-65         cachem_1.1.0       
+#> [28] reformulas_0.4.3.1  iterators_1.0.14    boot_1.3-32        
+#> [31] abind_1.4-8         foreach_1.5.2       nlme_3.1-168       
+#> [34] parallelly_1.46.1   tidyselect_1.2.1    digest_0.6.39      
+#> [37] mvtnorm_1.3-3       listenv_0.10.0      labeling_0.4.3     
+#> [40] forcats_1.0.1       splines_4.5.1       fastmap_1.2.0      
+#> [43] grid_4.5.1          cli_3.6.5           magrittr_2.0.4     
+#> [46] broom_1.0.11        withr_3.0.2         backports_1.5.0    
+#> [49] estimability_1.5.1  rmarkdown_2.30      globals_0.18.0     
+#> [52] otel_0.2.0          coda_0.19-4.1       evaluate_1.0.5     
+#> [55] knitr_1.51          rbibutils_2.4.1     doParallel_1.0.17  
+#> [58] rlang_1.1.7         Rcpp_1.1.1          xtable_1.8-4       
+#> [61] glue_1.8.0          minqa_1.2.8         jsonlite_2.0.0     
+#> [64] R6_2.6.1
+
+ + + +
+
+ +
+ + + + + + + + + + + + + + + + + diff --git a/R_functions/geneLME_benchmark2.Rmd b/R_functions/geneLME_benchmark2.Rmd new file mode 100644 index 0000000..5dd1145 --- /dev/null +++ b/R_functions/geneLME_benchmark2.Rmd @@ -0,0 +1,637 @@ +--- +title: "geneLME Benchmarking v2" +subtitle: "Sign consistency vs kimma | Speed comparison | Accuracy" +date: "`r Sys.Date()`" +output: + html_document: + toc: true + toc_float: + collapsed: false + smooth_scroll: true + toc_depth: 3 + theme: flatly + highlight: tango + code_folding: hide + df_print: paged +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set( + echo = TRUE, + message = FALSE, + warning = FALSE, + comment = "#>", + fig.align = "center", + fig.width = 8, + fig.height = 5 +) +``` + +--- + +# Overview + +This report benchmarks `geneLME.R` (current stable, incorporating all dev2 changes) +against `kimma::kmFit` across three analyses: + +1. **Sign consistency:** Direction-aware join between geneLME and kimma contrast estimates. + Identifies same-direction vs flipped-direction pairs; verifies numerical agreement + after sign correction. + +2. **Speed comparison:** `microbenchmark` (5 reps each) on 2,000 genes comparing + geneLME at 3, 6, and 66 contrasts against kimma's default 66-contrast run. + +3. **Summary:** Key metrics from both analyses in one place. + +**geneLME.R features (as of 2026-02-20 merge):** + +| Feature | Details | +|---|---| +| Singular fit handling | `model_status = "singular_fit"` flag; results returned for all genes | +| Branch A contrast build | Pre-computed once before parallel stage (`geneLME_build_contrast_args()`) | +| Warning suppression | Package startup messages + rescaling warnings silenced | +| Parallel plan | `future::plan(future::multisession)` / `future::plan(future::sequential)` | + +--- + +# Setup + +```{r libs} +library(lme4) +library(emmeans) +library(car) +library(broom.mixed) +library(dplyr) +library(tibble) +library(purrr) +library(future) +library(future.apply) +library(kimma) +library(microbenchmark) +library(ggplot2) +library(tidyr) +library(scales) +library(knitr) +library(gridExtra) +``` + +```{r source-functions} +source("geneLME.R") +cat("Sourced: geneLME.R\n") +``` + +--- + +# Mock Data + +Same design as v1 benchmark: 10 patients × 3 treatments × 4 visits = 120 samples. +Full dataset = 2,000 genes; accuracy subset = 50 genes. +Genes 1–100 have a simulated TrtC:V3 +2.5 log2 effect. + +```{r mock-data} +set.seed(42) + +n_patients <- 10 +treatments <- c("TrtA", "TrtB", "TrtC") +visits <- c("V1", "V2", "V3", "V4") +n_genes <- 2000 +n_signal <- 100 + +patient_meta <- data.frame( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + sex = factor(sample(c("M", "F"), n_patients, replace = TRUE)), + age = round(rnorm(n_patients, mean = 38, sd = 10)), + stringsAsFactors = FALSE +) + +targets <- expand.grid( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + treatment = treatments, + visit = visits, + stringsAsFactors = FALSE +) %>% + arrange(ptID, treatment, visit) %>% + left_join(patient_meta, by = "ptID") %>% + mutate( + sample_id = paste(ptID, treatment, visit, sep = "_"), + libID = sample_id, + rNANgUl = rnorm(n(), mean = 5, sd = 1), + lib.size = round(rnorm(n(), mean = 20e6, sd = 3e6)), + norm.factors = rnorm(n(), mean = 1, sd = 0.05) + ) +rownames(targets) <- targets$sample_id +n_samples <- nrow(targets) + +E_mat <- matrix( + rnorm(n_genes * n_samples, mean = 8, sd = 2), + nrow = n_genes, ncol = n_samples, + dimnames = list( + paste0("gene", sprintf("%04d", 1:n_genes)), + targets$sample_id + ) +) + +trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3") +E_mat[1:n_signal, trtC_v3] <- E_mat[1:n_signal, trtC_v3] + 2.5 + +for (pt in unique(targets$ptID)) { + idx <- which(targets$ptID == pt) + E_mat[, idx] <- E_mat[, idx] + rnorm(1, 0, 1) +} + +W_mat <- matrix( + abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)), + nrow = n_genes, ncol = n_samples, + dimnames = dimnames(E_mat) +) + +dat_bench <- list(E = E_mat, weights = W_mat, targets = targets) +dat_50 <- list(E = E_mat[1:50, ], weights = W_mat[1:50, ], targets = targets) + +cat("Design:", n_patients, "patients ×", length(treatments), "treatments ×", + length(visits), "visits =", n_samples, "samples\n") +cat("Full dataset:", n_genes, "genes | Accuracy subset: 50 genes\n") +cat("Signal genes (TrtC:V3 +2.5 log2):", n_signal, "\n") +``` + +--- + +# Contrast Specifications + +```{r contrast-specs} +spec_full <- geneLME_contrast_spec(targets, contrast_vars = "treatment:visit") + +spec_6 <- spec_full %>% + filter( + sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl), + sub(".* ", "", contrast_ref) %in% c("V2", "V3") + ) + +spec_3 <- spec_full %>% + filter( + sub(" .*", "", contrast_ref) == sub(" .*", "", contrast_lvl), + sub(".* ", "", contrast_ref) == "V2", + sub(".* ", "", contrast_lvl) == "V3" + ) + +cat("spec_3 (longitudinal V2→V3, same treatment): ", nrow(spec_3), "contrasts\n") +cat("spec_6 (between-treatment, V2 & V3): ", nrow(spec_6), "contrasts\n") +cat("spec_full (all pairwise): ", nrow(spec_full), "contrasts\n") +``` + +--- + +# 1. Sign Consistency: geneLME vs kimma + +## 1a. Run both methods (50 genes, 66 contrasts) + +```{r accuracy-run, cache=TRUE} +# --- geneLME --- +res_glme <- geneLME( + dat = dat_50, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = spec_full, + n_cores = 8 +) + +cat("geneLME model status summary:\n") +print(table(res_glme$lme_err)) + +# --- kimma --- +res_kimma <- suppressMessages( + kmFit( + dat = dat_50, + run_lme = TRUE, + use_weights = TRUE, + model = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + run_contrast = TRUE, + contrast_var = "treatment:visit", + patientID = "ptID", + libraryID = "libID", + processors = 8 + ) +) + +cat("kimma genes in contrast output:", + length(unique(res_kimma$lme.contrast$gene)), "/ 50\n") +``` + +## 1b. Inspect raw contrast direction columns + +Before joining, we examine the direction columns from each method. +Note: **kimma has no `contrast` string column** — direction is encoded entirely +in `contrast_ref` and `contrast_lvl`. Also note that kimma's `statistic` column +is the **negated** t-statistic (`–estimate/SE`), i.e. opposite sign to `estimate`. +To compare against geneLME's `t.ratio`, we use `-statistic`. + +```{r sign-inspect} +# geneLME: contrast string is "lvl - ref" (set by us via the named contrast vector) +glme_contrast_names <- res_glme$lme_contrast %>% + filter(contrast_order == "first_order") %>% + distinct(contrast, contrast_ref, contrast_lvl) %>% + arrange(contrast_ref, contrast_lvl) + +cat("geneLME — sample contrast name strings (first 10):\n") +print(head(glme_contrast_names, 10)) + +# kimma: no 'contrast' column — only contrast_ref and contrast_lvl +km_contrast_names <- res_kimma$lme.contrast %>% + distinct(contrast_ref, contrast_lvl) %>% + mutate(contrast_key_km = paste(contrast_lvl, contrast_ref, sep = " - ")) %>% + arrange(contrast_ref, contrast_lvl) + +cat("\nkimma — direction pairs (ref → lvl), first 10:\n") +print(head(km_contrast_names, 10)) + +# For each unique (ref, lvl) pair, check if kimma has it in the same or opposite +# orientation using a canonical sorted-pair key. +glme_pairs <- glme_contrast_names %>% + select(contrast_ref, contrast_lvl) %>% + mutate(canonical = paste(pmin(contrast_ref, contrast_lvl), + pmax(contrast_ref, contrast_lvl), sep = "|||"), + glme_dir = paste(contrast_ref, contrast_lvl, sep = "->")) + +km_pairs <- km_contrast_names %>% + select(contrast_ref, contrast_lvl) %>% + mutate(canonical = paste(pmin(contrast_ref, contrast_lvl), + pmax(contrast_ref, contrast_lvl), sep = "|||"), + km_dir = paste(contrast_ref, contrast_lvl, sep = "->")) + +pair_compare <- inner_join(glme_pairs, km_pairs, by = "canonical") %>% + mutate(direction_agree = glme_dir == km_dir) + +n_agree <- sum(pair_compare$direction_agree) +n_flip <- sum(!pair_compare$direction_agree) +n_total_pairs <- nrow(pair_compare) + +cat(sprintf("\nUnique contrast pairs found in both methods: %d\n", n_total_pairs)) +cat(sprintf("Direction agrees (same ref→lvl): %d / %d\n", n_agree, n_total_pairs)) +cat(sprintf("Direction flipped (kimma swapped): %d / %d\n", n_flip, n_total_pairs)) +``` + +## 1c. Direction-aware join + +We join on `(gene, contrast_ref, contrast_lvl)`, then also attempt a flipped join +`(gene, contrast_ref = kimma$contrast_lvl, contrast_lvl = kimma$contrast_ref)` to +catch any pairs where kimma assigned the opposite direction. Sign-correction is +applied to flipped pairs before combining. + +```{r sign-join} +glme_std <- res_glme$lme_contrast %>% + filter(contrast_order == "first_order", !is.na(estimate)) %>% + select(gene, + contrast_ref_glme = contrast_ref, + contrast_lvl_glme = contrast_lvl, + estimate_glme = estimate, + t_glme = t.ratio, + p_glme = p.value) + +# kimma's 'statistic' column is the NEGATED t-statistic: statistic = –(estimate / SE). +# To get a signed t comparable to geneLME's t.ratio, negate statistic. +km_std <- res_kimma$lme.contrast %>% + mutate(t_signed = -statistic) %>% + select(gene, + contrast_ref_km = contrast_ref, + contrast_lvl_km = contrast_lvl, + estimate_kimma = estimate, + t_kimma = t_signed, + p_kimma = pval) + +# Forward join: same direction +joined_fwd <- inner_join( + glme_std, km_std, + by = c("gene", + "contrast_ref_glme" = "contrast_ref_km", + "contrast_lvl_glme" = "contrast_lvl_km") +) %>% mutate(direction = "same") + +# Flipped join: kimma has ref/lvl swapped relative to geneLME +joined_flip <- inner_join( + glme_std, km_std, + by = c("gene", + "contrast_ref_glme" = "contrast_lvl_km", + "contrast_lvl_glme" = "contrast_ref_km") +) %>% + mutate( + direction = "flipped", + estimate_kimma = -estimate_kimma, + t_kimma = -t_kimma + ) + +joined_all <- bind_rows(joined_fwd, joined_flip) + +cat("Rows joined (same direction): ", nrow(joined_fwd), "\n") +cat("Rows joined (flipped direction):", nrow(joined_flip), "\n") +cat("Total matched rows: ", nrow(joined_all), "\n") +cat("Unique genes in comparison: ", length(unique(joined_all$gene)), "\n") + +cat("\nDirection summary across all gene × contrast pairs:\n") +print(table(joined_all$direction)) +``` + +## 1d. Estimate correlation plots + +```{r sign-scatter-full, fig.height=5, fig.width=10} +cor_all <- cor(joined_all$estimate_glme, joined_all$estimate_kimma, use = "complete.obs") +mad_all <- mean(abs(joined_all$estimate_glme - joined_all$estimate_kimma), na.rm = TRUE) + +cor_fwd <- cor(joined_fwd$estimate_glme, joined_fwd$estimate_kimma, use = "complete.obs") +cor_flip <- if (nrow(joined_flip) > 0) { + cor(joined_flip$estimate_glme, joined_flip$estimate_kimma, use = "complete.obs") +} else { + NA_real_ +} + +p1 <- ggplot(joined_all, aes(x = estimate_glme, y = estimate_kimma, colour = direction)) + + geom_point(alpha = 0.2, size = 0.8) + + geom_abline(slope = 1, intercept = 0, colour = "firebrick", + linewidth = 0.8, linetype = "dashed") + + scale_colour_manual(values = c("same" = "#2c7bb6", "flipped" = "#d7191c")) + + annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4, + label = sprintf("r = %.6f\nMAD = %.2e", cor_all, mad_all), + size = 3.5, family = "mono") + + labs( + title = "Contrast estimates after direction-aware join", + subtitle = sprintf("All matched pairs (n = %d) | blue = same direction, red = flipped", + nrow(joined_all)), + x = "geneLME estimate", y = "kimma estimate (sign-corrected)", + colour = "Direction" + ) + + theme_bw(base_size = 12) + + theme(legend.position = "bottom") + +p2 <- ggplot(joined_all, aes(x = t_glme, y = t_kimma, colour = direction)) + + geom_point(alpha = 0.2, size = 0.8) + + geom_abline(slope = 1, intercept = 0, colour = "firebrick", + linewidth = 0.8, linetype = "dashed") + + scale_colour_manual(values = c("same" = "#1a9641", "flipped" = "#d7191c")) + + labs( + title = "t-statistics after direction-aware join", + subtitle = sprintf("All matched pairs (n = %d)", nrow(joined_all)), + x = "geneLME t.ratio", y = "kimma statistic (sign-corrected)", + colour = "Direction" + ) + + theme_bw(base_size = 12) + + theme(legend.position = "bottom") + +gridExtra::grid.arrange(p1, p2, ncol = 2) +``` + +```{r sign-scatter-naive, fig.height=5, fig.width=10} +# For reference: naive forward-only join and same-direction subset +cor_naive <- cor(joined_fwd$estimate_glme, joined_fwd$estimate_kimma, use = "complete.obs") +mad_naive <- mean(abs(joined_fwd$estimate_glme - joined_fwd$estimate_kimma), na.rm = TRUE) + +p3 <- ggplot(joined_fwd, aes(x = estimate_glme, y = estimate_kimma)) + + geom_point(alpha = 0.2, size = 0.8, colour = "#2c7bb6") + + geom_abline(slope = 1, intercept = 0, colour = "firebrick", + linewidth = 0.8, linetype = "dashed") + + annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4, + label = sprintf("r = %.6f\nMAD = %.2e\nn = %d", + cor_naive, mad_naive, nrow(joined_fwd)), + size = 3.5, family = "mono") + + labs( + title = "Same-direction pairs only (ref/lvl agree)", + x = "geneLME estimate", y = "kimma estimate" + ) + + theme_bw(base_size = 12) + +p4 <- ggplot(joined_all, aes(x = estimate_glme, y = estimate_kimma)) + + geom_point(alpha = 0.2, size = 0.8, colour = "#2c7bb6") + + geom_abline(slope = 1, intercept = 0, colour = "firebrick", + linewidth = 0.8, linetype = "dashed") + + annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4, + label = sprintf("r = %.6f\nMAD = %.2e\nn = %d", + cor_all, mad_all, nrow(joined_all)), + size = 3.5, family = "mono") + + labs( + title = "All pairs after direction correction", + x = "geneLME estimate", y = "kimma estimate (sign-corrected)" + ) + + theme_bw(base_size = 12) + +gridExtra::grid.arrange(p3, p4, ncol = 2) +``` + +## 1e. Sign consistency summary + +```{r sign-summary} +kable( + data.frame( + Metric = c( + "Total gene × contrast pairs joined", + "Same direction (ref/lvl agree)", + "Flipped direction (kimma has ref/lvl swapped)", + "% pairs with direction agreement", + "Estimate r (direction-corrected)", + "Estimate MAD (direction-corrected)", + "t-statistic r (direction-corrected)" + ), + Value = c( + nrow(joined_all), + nrow(joined_fwd), + nrow(joined_flip), + sprintf("%.1f%%", 100 * nrow(joined_fwd) / nrow(joined_all)), + sprintf("%.8f", cor_all), + sprintf("%.2e", mad_all), + sprintf("%.8f", cor(joined_all$t_glme, joined_all$t_kimma, use = "complete.obs")) + ) + ), + col.names = c("Metric", "Value"), + caption = "Sign consistency summary: geneLME vs kimma (50 genes, 66 contrasts)" +) +``` + +> **Interpretation:** When kimma and geneLME assign the same direction to a contrast pair, +> estimates should be numerically identical (both use `lme4` + `emmeans`). Flipped pairs +> reflect a difference in which cell was designated as "reference" — after sign-correction +> the numerical values should agree equally well. The proportion of flipped pairs reveals +> how often kimma's internal direction assignment differs from `geneLME`'s `contrast_spec` +> ordering. + +--- + +# 2. Speed Comparison: geneLME vs kimma + +## 2a. Microbenchmark (2,000 genes, 5 reps) + +```{r bench-speed-glme, cache=TRUE} +cat("Running geneLME microbenchmark (5 reps each — this will take several minutes)...\n") + +mb_glme <- microbenchmark( + + glme_3 = geneLME( + dat = dat_bench, formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, run_contrast = TRUE, + contrast_vars = "treatment:visit", contrast_spec = spec_3, n_cores = 8 + ), + glme_6 = geneLME( + dat = dat_bench, formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, run_contrast = TRUE, + contrast_vars = "treatment:visit", contrast_spec = spec_6, n_cores = 8 + ), + glme_66 = geneLME( + dat = dat_bench, formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, run_contrast = TRUE, + contrast_vars = "treatment:visit", contrast_spec = spec_full, n_cores = 8 + ), + + times = 5, unit = "sec" +) + +print(summary(mb_glme)) +``` + +```{r bench-speed-kimma, cache=TRUE} +cat("Running kimma microbenchmark (5 reps, 66 contrasts)...\n") + +mb_kimma <- microbenchmark( + kimma_66 = suppressMessages(kmFit( + dat = dat_bench, run_lme = TRUE, use_weights = TRUE, + model = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + run_contrast = TRUE, contrast_var = "treatment:visit", + patientID = "ptID", libraryID = "libID", processors = 8 + )), + times = 5, unit = "sec" +) + +print(summary(mb_kimma)) +``` + +## 2b. Speed comparison plots + +```{r bench-plot-combined, fig.height=5, fig.width=10} +sum_glme <- summary(mb_glme) %>% as.data.frame() %>% + mutate( + version = "geneLME.R", + n_contrasts = c(3, 6, 66), + label = paste0("geneLME\n(", n_contrasts, " contrasts)") + ) + +sum_kimma <- summary(mb_kimma) %>% as.data.frame() %>% + mutate( + version = "kimma::kmFit", + n_contrasts = 66, + label = "kimma\n(66 contrasts)" + ) + +bench_all <- bind_rows(sum_glme, sum_kimma) %>% + mutate(label = factor(label, levels = c( + "geneLME\n(3 contrasts)", + "geneLME\n(6 contrasts)", + "geneLME\n(66 contrasts)", + "kimma\n(66 contrasts)" + ))) + +pal <- c("geneLME.R" = "#2c7bb6", + "kimma::kmFit" = "#d7191c") + +ggplot(bench_all, aes(x = label, y = median, fill = version, colour = version)) + + geom_col(alpha = 0.75, width = 0.6) + + geom_errorbar(aes(ymin = lq, ymax = uq), width = 0.25, linewidth = 0.7) + + scale_fill_manual(values = pal) + + scale_colour_manual(values = pal) + + labs( + title = "Runtime comparison: geneLME vs kimma (2,000 genes, 5 reps)", + subtitle = "Error bars = lower / upper quartile | geneLME shown at 3, 6, and 66 contrasts", + x = NULL, y = "Median runtime (seconds)", + fill = "Method", colour = "Method" + ) + + theme_bw(base_size = 12) + + theme(legend.position = "bottom", + panel.grid.major.x = element_blank()) +``` + +```{r bench-plot-scaling, fig.height=4, fig.width=8} +kimma_med <- sum_kimma$median + +ggplot(sum_glme, aes(x = n_contrasts, y = median)) + + geom_ribbon(aes(ymin = lq, ymax = uq), alpha = 0.15, fill = "#2c7bb6") + + geom_line(colour = "#2c7bb6", linewidth = 0.9) + + geom_point(colour = "#2c7bb6", size = 3) + + geom_hline(yintercept = kimma_med, colour = "#d7191c", + linetype = "dashed", linewidth = 0.8) + + annotate("text", x = 66, y = kimma_med, vjust = -0.7, hjust = 1, + colour = "#d7191c", size = 3.5, label = "kimma (66 contrasts)") + + scale_x_continuous(breaks = c(3, 6, 66)) + + labs( + title = "geneLME runtime scaling with number of contrasts", + subtitle = "Shaded band = lower/upper quartile | Dashed red = kimma at 66 contrasts", + x = "Number of contrasts", y = "Median runtime (seconds)" + ) + + theme_bw(base_size = 12) +``` + +## 2c. Speed summary table + +```{r bench-table} +kimma_med <- sum_kimma$median + +kable( + bench_all %>% + mutate( + speedup_vs_kimma = round(kimma_med / median, 2), + across(c(min, lq, median, mean, uq, max), ~ round(., 1)) + ) %>% + select( + Method = version, + `N contrasts` = n_contrasts, + Min = min, + Q1 = lq, + Median = median, + Q3 = uq, + `Speedup vs kimma (66 contrasts)` = speedup_vs_kimma + ), + caption = "Runtime summary (seconds) — 2,000 genes, 5 repetitions", + na_string = "—" +) +``` + +--- + +# 3. Summary + +```{r final-summary} +n_same <- nrow(joined_fwd) +n_flip <- nrow(joined_flip) +n_total <- nrow(joined_all) +pct_agree <- 100 * n_same / n_total + +speedup_3 <- kimma_med / sum_glme$median[sum_glme$n_contrasts == 3] +speedup_6 <- kimma_med / sum_glme$median[sum_glme$n_contrasts == 6] +speedup_66 <- kimma_med / sum_glme$median[sum_glme$n_contrasts == 66] + +cat(sprintf( +"=== SIGN CONSISTENCY (geneLME vs kimma) === + %d / %d (%.1f%%) gene×contrast pairs: same ref/lvl direction + %d / %d (%.1f%%) pairs: kimma has direction flipped relative to contrast_spec + After direction correction — estimate r = %.8f, MAD = %.2e + +=== SPEED (2,000 genes, 8 cores, 5 reps) === + geneLME 3 contrasts median: %.1f s (%.2fx %s than kimma at 66) + geneLME 6 contrasts median: %.1f s (%.2fx %s than kimma at 66) + geneLME 66 contrasts median: %.1f s (%.2fx %s than kimma at 66) + kimma 66 contrasts median: %.1f s", + n_same, n_total, pct_agree, + n_flip, n_total, 100 - pct_agree, + cor_all, mad_all, + sum_glme$median[sum_glme$n_contrasts == 3], + speedup_3, ifelse(speedup_3 > 1, "faster", "slower"), + sum_glme$median[sum_glme$n_contrasts == 6], + speedup_6, ifelse(speedup_6 > 1, "faster", "slower"), + sum_glme$median[sum_glme$n_contrasts == 66], + speedup_66, ifelse(speedup_66 > 1, "faster", "slower"), + kimma_med +)) +``` + +--- + +# Session Info + +```{r session-info} +sessionInfo() +``` diff --git a/R_functions/geneLME_benchmark2.html b/R_functions/geneLME_benchmark2.html new file mode 100644 index 0000000..0e95af8 --- /dev/null +++ b/R_functions/geneLME_benchmark2.html @@ -0,0 +1,3853 @@ + + + + + + + + + + + + + + +geneLME Benchmarking v2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+
+ +
+ + + + + + + +
+
+

Overview

+

This report benchmarks geneLME.R (current stable, +incorporating all dev2 changes) against kimma::kmFit across +three analyses:

+
    +
  1. Sign consistency: Direction-aware join between +geneLME and kimma contrast estimates. Identifies same-direction vs +flipped-direction pairs; verifies numerical agreement after sign +correction.

  2. +
  3. Speed comparison: microbenchmark (5 +reps each) on 2,000 genes comparing geneLME at 3, 6, and 66 contrasts +against kimma’s default 66-contrast run.

  4. +
  5. Summary: Key metrics from both analyses in one +place.

  6. +
+

geneLME.R features (as of 2026-02-20 merge):

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureDetails
Singular fit handlingmodel_status = "singular_fit" flag; results returned +for all genes
Branch A contrast buildPre-computed once before parallel stage +(geneLME_build_contrast_args())
Warning suppressionPackage startup messages + rescaling warnings silenced
Parallel planfuture::plan(future::multisession) / +future::plan(future::sequential)
+
+
+
+

Setup

+
library(lme4)
+library(emmeans)
+library(car)
+library(broom.mixed)
+library(dplyr)
+library(tibble)
+library(purrr)
+library(future)
+library(future.apply)
+library(kimma)
+library(microbenchmark)
+library(ggplot2)
+library(tidyr)
+library(scales)
+library(knitr)
+library(gridExtra)
+
source("geneLME.R")
+cat("Sourced: geneLME.R\n")
+
#> Sourced: geneLME.R
+
+
+
+

Mock Data

+

Same design as v1 benchmark: 10 patients × 3 treatments × 4 visits = +120 samples. Full dataset = 2,000 genes; accuracy subset = 50 genes. +Genes 1–100 have a simulated TrtC:V3 +2.5 log2 effect.

+
set.seed(42)
+
+n_patients <- 10
+treatments <- c("TrtA", "TrtB", "TrtC")
+visits     <- c("V1", "V2", "V3", "V4")
+n_genes    <- 2000
+n_signal   <- 100
+
+patient_meta <- data.frame(
+  ptID = paste0("pt", sprintf("%02d", 1:n_patients)),
+  sex  = factor(sample(c("M", "F"), n_patients, replace = TRUE)),
+  age  = round(rnorm(n_patients, mean = 38, sd = 10)),
+  stringsAsFactors = FALSE
+)
+
+targets <- expand.grid(
+  ptID      = paste0("pt", sprintf("%02d", 1:n_patients)),
+  treatment = treatments,
+  visit     = visits,
+  stringsAsFactors = FALSE
+) %>%
+  arrange(ptID, treatment, visit) %>%
+  left_join(patient_meta, by = "ptID") %>%
+  mutate(
+    sample_id    = paste(ptID, treatment, visit, sep = "_"),
+    libID        = sample_id,
+    rNANgUl      = rnorm(n(), mean = 5,    sd = 1),
+    lib.size     = round(rnorm(n(), mean = 20e6, sd = 3e6)),
+    norm.factors = rnorm(n(), mean = 1,    sd = 0.05)
+  )
+rownames(targets) <- targets$sample_id
+n_samples <- nrow(targets)
+
+E_mat <- matrix(
+  rnorm(n_genes * n_samples, mean = 8, sd = 2),
+  nrow = n_genes, ncol = n_samples,
+  dimnames = list(
+    paste0("gene", sprintf("%04d", 1:n_genes)),
+    targets$sample_id
+  )
+)
+
+trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3")
+E_mat[1:n_signal, trtC_v3] <- E_mat[1:n_signal, trtC_v3] + 2.5
+
+for (pt in unique(targets$ptID)) {
+  idx <- which(targets$ptID == pt)
+  E_mat[, idx] <- E_mat[, idx] + rnorm(1, 0, 1)
+}
+
+W_mat <- matrix(
+  abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)),
+  nrow = n_genes, ncol = n_samples,
+  dimnames = dimnames(E_mat)
+)
+
+dat_bench <- list(E = E_mat, weights = W_mat, targets = targets)
+dat_50    <- list(E = E_mat[1:50, ], weights = W_mat[1:50, ], targets = targets)
+
+cat("Design:", n_patients, "patients ×", length(treatments), "treatments ×",
+    length(visits), "visits =", n_samples, "samples\n")
+
#> Design: 10 patients × 3 treatments × 4 visits = 120 samples
+
cat("Full dataset:", n_genes, "genes | Accuracy subset: 50 genes\n")
+
#> Full dataset: 2000 genes | Accuracy subset: 50 genes
+
cat("Signal genes (TrtC:V3 +2.5 log2):", n_signal, "\n")
+
#> Signal genes (TrtC:V3 +2.5 log2): 100
+
+
+
+

Contrast Specifications

+
spec_full <- geneLME_contrast_spec(targets, contrast_vars = "treatment:visit")
+
+spec_6 <- spec_full %>%
+  filter(
+    sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl),
+    sub(".* ", "", contrast_ref) %in% c("V2", "V3")
+  )
+
+spec_3 <- spec_full %>%
+  filter(
+    sub(" .*", "", contrast_ref) == sub(" .*", "", contrast_lvl),
+    sub(".* ", "", contrast_ref) == "V2",
+    sub(".* ", "", contrast_lvl) == "V3"
+  )
+
+cat("spec_3  (longitudinal V2→V3, same treatment):         ", nrow(spec_3),  "contrasts\n")
+
#> spec_3  (longitudinal V2→V3, same treatment):          3 contrasts
+
cat("spec_6  (between-treatment, V2 & V3):                 ", nrow(spec_6),  "contrasts\n")
+
#> spec_6  (between-treatment, V2 & V3):                  6 contrasts
+
cat("spec_full (all pairwise):                             ", nrow(spec_full), "contrasts\n")
+
#> spec_full (all pairwise):                              66 contrasts
+
+
+
+

1. Sign Consistency: geneLME vs kimma

+
+

1a. Run both methods (50 genes, 66 contrasts)

+
# --- geneLME ---
+res_glme <- geneLME(
+  dat           = dat_50,
+  formula_str   = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+  model_weights = TRUE,
+  run_contrast  = TRUE,
+  contrast_vars = "treatment:visit",
+  contrast_spec = spec_full,
+  n_cores       = 8
+)
+
+cat("geneLME model status summary:\n")
+
#> geneLME model status summary:
+
print(table(res_glme$lme_err))
+
#> 
+#> success 
+#>      50
+
# --- kimma ---
+res_kimma <- suppressMessages(
+  kmFit(
+    dat          = dat_50,
+    run_lme      = TRUE,
+    use_weights  = TRUE,
+    model        = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+    run_contrast = TRUE,
+    contrast_var = "treatment:visit",
+    patientID    = "ptID",
+    libraryID    = "libID",
+    processors   = 8
+  )
+)
+
+cat("kimma genes in contrast output:",
+    length(unique(res_kimma$lme.contrast$gene)), "/ 50\n")
+
#> kimma genes in contrast output: 50 / 50
+
+
+

1b. Inspect raw contrast direction columns

+

Before joining, we examine the direction columns from each method. +Note: kimma has no contrast string column +— direction is encoded entirely in contrast_ref and +contrast_lvl. Also note that kimma’s statistic +column is the negated t-statistic +(–estimate/SE), i.e. opposite sign to +estimate. To compare against geneLME’s +t.ratio, we use -statistic.

+
# geneLME: contrast string is "lvl - ref" (set by us via the named contrast vector)
+glme_contrast_names <- res_glme$lme_contrast %>%
+  filter(contrast_order == "first_order") %>%
+  distinct(contrast, contrast_ref, contrast_lvl) %>%
+  arrange(contrast_ref, contrast_lvl)
+
+cat("geneLME — sample contrast name strings (first 10):\n")
+
#> geneLME — sample contrast name strings (first 10):
+
print(head(glme_contrast_names, 10))
+
#> # A tibble: 10 × 3
+#>    contrast          contrast_ref contrast_lvl
+#>    <chr>             <chr>        <chr>       
+#>  1 TrtA V2 - TrtA V1 TrtA V1      TrtA V2     
+#>  2 TrtA V3 - TrtA V1 TrtA V1      TrtA V3     
+#>  3 TrtA V4 - TrtA V1 TrtA V1      TrtA V4     
+#>  4 TrtB V1 - TrtA V1 TrtA V1      TrtB V1     
+#>  5 TrtB V2 - TrtA V1 TrtA V1      TrtB V2     
+#>  6 TrtB V3 - TrtA V1 TrtA V1      TrtB V3     
+#>  7 TrtB V4 - TrtA V1 TrtA V1      TrtB V4     
+#>  8 TrtC V1 - TrtA V1 TrtA V1      TrtC V1     
+#>  9 TrtC V2 - TrtA V1 TrtA V1      TrtC V2     
+#> 10 TrtC V3 - TrtA V1 TrtA V1      TrtC V3
+
# kimma: no 'contrast' column — only contrast_ref and contrast_lvl
+km_contrast_names <- res_kimma$lme.contrast %>%
+  distinct(contrast_ref, contrast_lvl) %>%
+  mutate(contrast_key_km = paste(contrast_lvl, contrast_ref, sep = " - ")) %>%
+  arrange(contrast_ref, contrast_lvl)
+
+cat("\nkimma — direction pairs (ref → lvl), first 10:\n")
+
#> 
+#> kimma — direction pairs (ref → lvl), first 10:
+
print(head(km_contrast_names, 10))
+
#> # A tibble: 10 × 3
+#>    contrast_ref contrast_lvl contrast_key_km  
+#>    <chr>        <chr>        <chr>            
+#>  1 TrtA V1      TrtA V2      TrtA V2 - TrtA V1
+#>  2 TrtA V1      TrtA V3      TrtA V3 - TrtA V1
+#>  3 TrtA V1      TrtA V4      TrtA V4 - TrtA V1
+#>  4 TrtA V1      TrtB V1      TrtB V1 - TrtA V1
+#>  5 TrtA V1      TrtB V2      TrtB V2 - TrtA V1
+#>  6 TrtA V1      TrtB V3      TrtB V3 - TrtA V1
+#>  7 TrtA V1      TrtB V4      TrtB V4 - TrtA V1
+#>  8 TrtA V1      TrtC V1      TrtC V1 - TrtA V1
+#>  9 TrtA V1      TrtC V2      TrtC V2 - TrtA V1
+#> 10 TrtA V1      TrtC V3      TrtC V3 - TrtA V1
+
# For each unique (ref, lvl) pair, check if kimma has it in the same or opposite
+# orientation using a canonical sorted-pair key.
+glme_pairs <- glme_contrast_names %>%
+  select(contrast_ref, contrast_lvl) %>%
+  mutate(canonical = paste(pmin(contrast_ref, contrast_lvl),
+                           pmax(contrast_ref, contrast_lvl), sep = "|||"),
+         glme_dir  = paste(contrast_ref, contrast_lvl, sep = "->"))
+
+km_pairs <- km_contrast_names %>%
+  select(contrast_ref, contrast_lvl) %>%
+  mutate(canonical = paste(pmin(contrast_ref, contrast_lvl),
+                           pmax(contrast_ref, contrast_lvl), sep = "|||"),
+         km_dir    = paste(contrast_ref, contrast_lvl, sep = "->"))
+
+pair_compare <- inner_join(glme_pairs, km_pairs, by = "canonical") %>%
+  mutate(direction_agree = glme_dir == km_dir)
+
+n_agree        <- sum(pair_compare$direction_agree)
+n_flip         <- sum(!pair_compare$direction_agree)
+n_total_pairs  <- nrow(pair_compare)
+
+cat(sprintf("\nUnique contrast pairs found in both methods: %d\n", n_total_pairs))
+
#> 
+#> Unique contrast pairs found in both methods: 66
+
cat(sprintf("Direction agrees (same ref→lvl):     %d / %d\n", n_agree, n_total_pairs))
+
#> Direction agrees (same ref→lvl):     66 / 66
+
cat(sprintf("Direction flipped (kimma swapped):   %d / %d\n", n_flip,  n_total_pairs))
+
#> Direction flipped (kimma swapped):   0 / 66
+
+
+

1c. Direction-aware join

+

We join on (gene, contrast_ref, contrast_lvl), then also +attempt a flipped join +(gene, contrast_ref = kimma$contrast_lvl, contrast_lvl = kimma$contrast_ref) +to catch any pairs where kimma assigned the opposite direction. +Sign-correction is applied to flipped pairs before combining.

+
glme_std <- res_glme$lme_contrast %>%
+  filter(contrast_order == "first_order", !is.na(estimate)) %>%
+  select(gene,
+         contrast_ref_glme = contrast_ref,
+         contrast_lvl_glme = contrast_lvl,
+         estimate_glme     = estimate,
+         t_glme            = t.ratio,
+         p_glme            = p.value)
+
+# kimma's 'statistic' column is the NEGATED t-statistic: statistic = –(estimate / SE).
+# To get a signed t comparable to geneLME's t.ratio, negate statistic.
+km_std <- res_kimma$lme.contrast %>%
+  mutate(t_signed = -statistic) %>%
+  select(gene,
+         contrast_ref_km = contrast_ref,
+         contrast_lvl_km = contrast_lvl,
+         estimate_kimma  = estimate,
+         t_kimma         = t_signed,
+         p_kimma         = pval)
+
+# Forward join: same direction
+joined_fwd <- inner_join(
+  glme_std, km_std,
+  by = c("gene",
+         "contrast_ref_glme" = "contrast_ref_km",
+         "contrast_lvl_glme" = "contrast_lvl_km")
+) %>% mutate(direction = "same")
+
+# Flipped join: kimma has ref/lvl swapped relative to geneLME
+joined_flip <- inner_join(
+  glme_std, km_std,
+  by = c("gene",
+         "contrast_ref_glme" = "contrast_lvl_km",
+         "contrast_lvl_glme" = "contrast_ref_km")
+) %>%
+  mutate(
+    direction      = "flipped",
+    estimate_kimma = -estimate_kimma,
+    t_kimma        = -t_kimma
+  )
+
+joined_all <- bind_rows(joined_fwd, joined_flip)
+
+cat("Rows joined (same direction):   ", nrow(joined_fwd),  "\n")
+
#> Rows joined (same direction):    3300
+
cat("Rows joined (flipped direction):", nrow(joined_flip), "\n")
+
#> Rows joined (flipped direction): 0
+
cat("Total matched rows:             ", nrow(joined_all),  "\n")
+
#> Total matched rows:              3300
+
cat("Unique genes in comparison:     ", length(unique(joined_all$gene)), "\n")
+
#> Unique genes in comparison:      50
+
cat("\nDirection summary across all gene × contrast pairs:\n")
+
#> 
+#> Direction summary across all gene × contrast pairs:
+
print(table(joined_all$direction))
+
#> 
+#> same 
+#> 3300
+
+
+

1d. Estimate correlation plots

+
cor_all  <- cor(joined_all$estimate_glme, joined_all$estimate_kimma, use = "complete.obs")
+mad_all  <- mean(abs(joined_all$estimate_glme - joined_all$estimate_kimma), na.rm = TRUE)
+
+cor_fwd  <- cor(joined_fwd$estimate_glme, joined_fwd$estimate_kimma, use = "complete.obs")
+cor_flip <- if (nrow(joined_flip) > 0) {
+  cor(joined_flip$estimate_glme, joined_flip$estimate_kimma, use = "complete.obs")
+} else {
+  NA_real_
+}
+
+p1 <- ggplot(joined_all, aes(x = estimate_glme, y = estimate_kimma, colour = direction)) +
+  geom_point(alpha = 0.2, size = 0.8) +
+  geom_abline(slope = 1, intercept = 0, colour = "firebrick",
+              linewidth = 0.8, linetype = "dashed") +
+  scale_colour_manual(values = c("same" = "#2c7bb6", "flipped" = "#d7191c")) +
+  annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4,
+           label = sprintf("r = %.6f\nMAD = %.2e", cor_all, mad_all),
+           size = 3.5, family = "mono") +
+  labs(
+    title    = "Contrast estimates after direction-aware join",
+    subtitle = sprintf("All matched pairs (n = %d) | blue = same direction, red = flipped",
+                       nrow(joined_all)),
+    x = "geneLME estimate", y = "kimma estimate (sign-corrected)",
+    colour = "Direction"
+  ) +
+  theme_bw(base_size = 12) +
+  theme(legend.position = "bottom")
+
+p2 <- ggplot(joined_all, aes(x = t_glme, y = t_kimma, colour = direction)) +
+  geom_point(alpha = 0.2, size = 0.8) +
+  geom_abline(slope = 1, intercept = 0, colour = "firebrick",
+              linewidth = 0.8, linetype = "dashed") +
+  scale_colour_manual(values = c("same" = "#1a9641", "flipped" = "#d7191c")) +
+  labs(
+    title    = "t-statistics after direction-aware join",
+    subtitle = sprintf("All matched pairs (n = %d)", nrow(joined_all)),
+    x = "geneLME t.ratio", y = "kimma statistic (sign-corrected)",
+    colour = "Direction"
+  ) +
+  theme_bw(base_size = 12) +
+  theme(legend.position = "bottom")
+
+gridExtra::grid.arrange(p1, p2, ncol = 2)
+

+
# For reference: naive forward-only join and same-direction subset
+cor_naive <- cor(joined_fwd$estimate_glme, joined_fwd$estimate_kimma, use = "complete.obs")
+mad_naive <- mean(abs(joined_fwd$estimate_glme - joined_fwd$estimate_kimma), na.rm = TRUE)
+
+p3 <- ggplot(joined_fwd, aes(x = estimate_glme, y = estimate_kimma)) +
+  geom_point(alpha = 0.2, size = 0.8, colour = "#2c7bb6") +
+  geom_abline(slope = 1, intercept = 0, colour = "firebrick",
+              linewidth = 0.8, linetype = "dashed") +
+  annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4,
+           label = sprintf("r = %.6f\nMAD = %.2e\nn = %d",
+                           cor_naive, mad_naive, nrow(joined_fwd)),
+           size = 3.5, family = "mono") +
+  labs(
+    title    = "Same-direction pairs only (ref/lvl agree)",
+    x = "geneLME estimate", y = "kimma estimate"
+  ) +
+  theme_bw(base_size = 12)
+
+p4 <- ggplot(joined_all, aes(x = estimate_glme, y = estimate_kimma)) +
+  geom_point(alpha = 0.2, size = 0.8, colour = "#2c7bb6") +
+  geom_abline(slope = 1, intercept = 0, colour = "firebrick",
+              linewidth = 0.8, linetype = "dashed") +
+  annotate("text", x = -Inf, y = Inf, hjust = -0.1, vjust = 1.4,
+           label = sprintf("r = %.6f\nMAD = %.2e\nn = %d",
+                           cor_all, mad_all, nrow(joined_all)),
+           size = 3.5, family = "mono") +
+  labs(
+    title    = "All pairs after direction correction",
+    x = "geneLME estimate", y = "kimma estimate (sign-corrected)"
+  ) +
+  theme_bw(base_size = 12)
+
+gridExtra::grid.arrange(p3, p4, ncol = 2)
+

+
+
+

1e. Sign consistency summary

+
kable(
+  data.frame(
+    Metric  = c(
+      "Total gene × contrast pairs joined",
+      "Same direction (ref/lvl agree)",
+      "Flipped direction (kimma has ref/lvl swapped)",
+      "% pairs with direction agreement",
+      "Estimate r (direction-corrected)",
+      "Estimate MAD (direction-corrected)",
+      "t-statistic r (direction-corrected)"
+    ),
+    Value = c(
+      nrow(joined_all),
+      nrow(joined_fwd),
+      nrow(joined_flip),
+      sprintf("%.1f%%", 100 * nrow(joined_fwd) / nrow(joined_all)),
+      sprintf("%.8f", cor_all),
+      sprintf("%.2e", mad_all),
+      sprintf("%.8f", cor(joined_all$t_glme, joined_all$t_kimma, use = "complete.obs"))
+    )
+  ),
+  col.names = c("Metric", "Value"),
+  caption = "Sign consistency summary: geneLME vs kimma (50 genes, 66 contrasts)"
+)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sign consistency summary: geneLME vs kimma (50 genes, 66 +contrasts)
MetricValue
Total gene × contrast pairs joined3300
Same direction (ref/lvl agree)3300
Flipped direction (kimma has ref/lvl swapped)0
% pairs with direction agreement100.0%
Estimate r (direction-corrected)1.00000000
Estimate MAD (direction-corrected)1.16e-15
t-statistic r (direction-corrected)1.00000000
+
+

Interpretation: When kimma and geneLME assign the +same direction to a contrast pair, estimates should be numerically +identical (both use lme4 + emmeans). Flipped +pairs reflect a difference in which cell was designated as “reference” — +after sign-correction the numerical values should agree equally well. +The proportion of flipped pairs reveals how often kimma’s internal +direction assignment differs from geneLME’s +contrast_spec ordering.

+
+
+
+
+
+

2. Speed Comparison: geneLME vs kimma

+
+

2a. Microbenchmark (2,000 genes, 5 reps)

+
cat("Running geneLME microbenchmark (5 reps each — this will take several minutes)...\n")
+
#> Running geneLME microbenchmark (5 reps each — this will take several minutes)...
+
mb_glme <- microbenchmark(
+
+  glme_3  = geneLME(
+    dat = dat_bench, formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+    model_weights = TRUE, run_contrast = TRUE,
+    contrast_vars = "treatment:visit", contrast_spec = spec_3, n_cores = 8
+  ),
+  glme_6  = geneLME(
+    dat = dat_bench, formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+    model_weights = TRUE, run_contrast = TRUE,
+    contrast_vars = "treatment:visit", contrast_spec = spec_6, n_cores = 8
+  ),
+  glme_66 = geneLME(
+    dat = dat_bench, formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+    model_weights = TRUE, run_contrast = TRUE,
+    contrast_vars = "treatment:visit", contrast_spec = spec_full, n_cores = 8
+  ),
+
+  times = 5, unit = "sec"
+)
+
+print(summary(mb_glme))
+
#>      expr     min       lq     mean   median       uq      max neval
+#> 1  glme_3 17.2888 17.34261 17.38137 17.39034 17.42627 17.45885     5
+#> 2  glme_6 18.0317 18.05609 18.09280 18.05814 18.07696 18.24111     5
+#> 3 glme_66 32.5646 32.58537 32.60624 32.60095 32.63049 32.64978     5
+
cat("Running kimma microbenchmark (5 reps, 66 contrasts)...\n")
+
#> Running kimma microbenchmark (5 reps, 66 contrasts)...
+
mb_kimma <- microbenchmark(
+  kimma_66 = suppressMessages(kmFit(
+    dat = dat_bench, run_lme = TRUE, use_weights = TRUE,
+    model = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+    run_contrast = TRUE, contrast_var = "treatment:visit",
+    patientID = "ptID", libraryID = "libID", processors = 8
+  )),
+  times = 5, unit = "sec"
+)
+
+print(summary(mb_kimma))
+
#>       expr      min       lq     mean   median       uq      max neval
+#> 1 kimma_66 32.00641 32.04734 32.11739 32.14782 32.14901 32.23636     5
+
+
+

2b. Speed comparison plots

+
sum_glme <- summary(mb_glme) %>% as.data.frame() %>%
+  mutate(
+    version     = "geneLME.R",
+    n_contrasts = c(3, 6, 66),
+    label       = paste0("geneLME\n(", n_contrasts, " contrasts)")
+  )
+
+sum_kimma <- summary(mb_kimma) %>% as.data.frame() %>%
+  mutate(
+    version     = "kimma::kmFit",
+    n_contrasts = 66,
+    label       = "kimma\n(66 contrasts)"
+  )
+
+bench_all <- bind_rows(sum_glme, sum_kimma) %>%
+  mutate(label = factor(label, levels = c(
+    "geneLME\n(3 contrasts)",
+    "geneLME\n(6 contrasts)",
+    "geneLME\n(66 contrasts)",
+    "kimma\n(66 contrasts)"
+  )))
+
+pal <- c("geneLME.R"    = "#2c7bb6",
+         "kimma::kmFit" = "#d7191c")
+
+ggplot(bench_all, aes(x = label, y = median, fill = version, colour = version)) +
+  geom_col(alpha = 0.75, width = 0.6) +
+  geom_errorbar(aes(ymin = lq, ymax = uq), width = 0.25, linewidth = 0.7) +
+  scale_fill_manual(values   = pal) +
+  scale_colour_manual(values = pal) +
+  labs(
+    title    = "Runtime comparison: geneLME vs kimma (2,000 genes, 5 reps)",
+    subtitle = "Error bars = lower / upper quartile | geneLME shown at 3, 6, and 66 contrasts",
+    x = NULL, y = "Median runtime (seconds)",
+    fill = "Method", colour = "Method"
+  ) +
+  theme_bw(base_size = 12) +
+  theme(legend.position = "bottom",
+        panel.grid.major.x = element_blank())
+

+
kimma_med <- sum_kimma$median
+
+ggplot(sum_glme, aes(x = n_contrasts, y = median)) +
+  geom_ribbon(aes(ymin = lq, ymax = uq), alpha = 0.15, fill = "#2c7bb6") +
+  geom_line(colour = "#2c7bb6", linewidth = 0.9) +
+  geom_point(colour = "#2c7bb6", size = 3) +
+  geom_hline(yintercept = kimma_med, colour = "#d7191c",
+             linetype = "dashed", linewidth = 0.8) +
+  annotate("text", x = 66, y = kimma_med, vjust = -0.7, hjust = 1,
+           colour = "#d7191c", size = 3.5, label = "kimma (66 contrasts)") +
+  scale_x_continuous(breaks = c(3, 6, 66)) +
+  labs(
+    title    = "geneLME runtime scaling with number of contrasts",
+    subtitle = "Shaded band = lower/upper quartile | Dashed red = kimma at 66 contrasts",
+    x = "Number of contrasts", y = "Median runtime (seconds)"
+  ) +
+  theme_bw(base_size = 12)
+

+
+
+

2c. Speed summary table

+
kimma_med <- sum_kimma$median
+
+kable(
+  bench_all %>%
+    mutate(
+      speedup_vs_kimma = round(kimma_med / median, 2),
+      across(c(min, lq, median, mean, uq, max), ~ round(., 1))
+    ) %>%
+    select(
+      Method        = version,
+      `N contrasts` = n_contrasts,
+      Min           = min,
+      Q1            = lq,
+      Median        = median,
+      Q3            = uq,
+      `Speedup vs kimma (66 contrasts)` = speedup_vs_kimma
+    ),
+  caption = "Runtime summary (seconds) — 2,000 genes, 5 repetitions",
+  na_string = "—"
+)
+ + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Runtime summary (seconds) — 2,000 genes, 5 +repetitions
MethodN contrastsMinQ1MedianQ3Speedup vs kimma (66 contrasts)
geneLME.R317.317.317.417.41.85
geneLME.R618.018.118.118.11.78
geneLME.R6632.632.632.632.60.99
kimma::kmFit6632.032.032.132.11.00
+
+
+
+
+

3. Summary

+
n_same    <- nrow(joined_fwd)
+n_flip    <- nrow(joined_flip)
+n_total   <- nrow(joined_all)
+pct_agree <- 100 * n_same / n_total
+
+speedup_3  <- kimma_med / sum_glme$median[sum_glme$n_contrasts == 3]
+speedup_6  <- kimma_med / sum_glme$median[sum_glme$n_contrasts == 6]
+speedup_66 <- kimma_med / sum_glme$median[sum_glme$n_contrasts == 66]
+
+cat(sprintf(
+"=== SIGN CONSISTENCY (geneLME vs kimma) ===
+  %d / %d (%.1f%%) gene×contrast pairs: same ref/lvl direction
+  %d / %d (%.1f%%) pairs: kimma has direction flipped relative to contrast_spec
+  After direction correction — estimate r = %.8f, MAD = %.2e
+
+=== SPEED (2,000 genes, 8 cores, 5 reps) ===
+  geneLME  3 contrasts median: %.1f s  (%.2fx %s than kimma at 66)
+  geneLME  6 contrasts median: %.1f s  (%.2fx %s than kimma at 66)
+  geneLME 66 contrasts median: %.1f s  (%.2fx %s than kimma at 66)
+  kimma   66 contrasts median: %.1f s",
+  n_same, n_total, pct_agree,
+  n_flip, n_total, 100 - pct_agree,
+  cor_all, mad_all,
+  sum_glme$median[sum_glme$n_contrasts == 3],
+  speedup_3,  ifelse(speedup_3  > 1, "faster", "slower"),
+  sum_glme$median[sum_glme$n_contrasts == 6],
+  speedup_6,  ifelse(speedup_6  > 1, "faster", "slower"),
+  sum_glme$median[sum_glme$n_contrasts == 66],
+  speedup_66, ifelse(speedup_66 > 1, "faster", "slower"),
+  kimma_med
+))
+
#> === SIGN CONSISTENCY (geneLME vs kimma) ===
+#>   3300 / 3300 (100.0%) gene×contrast pairs: same ref/lvl direction
+#>   0 / 3300 (0.0%) pairs: kimma has direction flipped relative to contrast_spec
+#>   After direction correction — estimate r = 1.00000000, MAD = 1.16e-15
+#> 
+#> === SPEED (2,000 genes, 8 cores, 5 reps) ===
+#>   geneLME  3 contrasts median: 17.4 s  (1.85x faster than kimma at 66)
+#>   geneLME  6 contrasts median: 18.1 s  (1.78x faster than kimma at 66)
+#>   geneLME 66 contrasts median: 32.6 s  (0.99x slower than kimma at 66)
+#>   kimma   66 contrasts median: 32.1 s
+
+
+
+

Session Info

+
sessionInfo()
+
#> R version 4.5.1 (2025-06-13)
+#> Platform: aarch64-apple-darwin20
+#> Running under: macOS Sequoia 15.7.4
+#> 
+#> Matrix products: default
+#> BLAS:   /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib 
+#> LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
+#> 
+#> locale:
+#> [1] en_US/en_US/en_US/C/en_US/en_US
+#> 
+#> time zone: America/Los_Angeles
+#> tzcode source: internal
+#> 
+#> attached base packages:
+#> [1] stats     graphics  grDevices utils     datasets  methods   base     
+#> 
+#> other attached packages:
+#>  [1] gridExtra_2.3        knitr_1.51           scales_1.4.0        
+#>  [4] tidyr_1.3.2          ggplot2_4.0.2        microbenchmark_1.5.0
+#>  [7] kimma_1.6.3          future.apply_1.20.1  future_1.69.0       
+#> [10] purrr_1.2.1          tibble_3.3.1         dplyr_1.2.0         
+#> [13] broom.mixed_0.2.9.6  car_3.1-3            carData_3.0-5       
+#> [16] emmeans_2.0.1        lme4_1.1-38          Matrix_1.7-4        
+#> 
+#> loaded via a namespace (and not attached):
+#>  [1] gtable_0.3.6        xfun_0.56           bslib_0.10.0       
+#>  [4] lattice_0.22-7      vctrs_0.7.1         tools_4.5.1        
+#>  [7] Rdpack_2.6.4        generics_0.1.4      parallel_4.5.1     
+#> [10] pkgconfig_2.0.3     data.table_1.18.2.1 RColorBrewer_1.1-3 
+#> [13] S7_0.2.1            lifecycle_1.0.5     compiler_4.5.1     
+#> [16] farver_2.1.2        codetools_0.2-20    htmltools_0.5.9    
+#> [19] sass_0.4.10         yaml_2.3.12         Formula_1.2-5      
+#> [22] pillar_1.11.1       furrr_0.3.1         nloptr_2.2.1       
+#> [25] jquerylib_0.1.4     MASS_7.3-65         cachem_1.1.0       
+#> [28] reformulas_0.4.3.1  iterators_1.0.14    boot_1.3-32        
+#> [31] abind_1.4-8         foreach_1.5.2       nlme_3.1-168       
+#> [34] parallelly_1.46.1   tidyselect_1.2.1    digest_0.6.39      
+#> [37] mvtnorm_1.3-3       listenv_0.10.0      labeling_0.4.3     
+#> [40] forcats_1.0.1       splines_4.5.1       fastmap_1.2.0      
+#> [43] grid_4.5.1          cli_3.6.5           magrittr_2.0.4     
+#> [46] utf8_1.2.6          broom_1.0.11        withr_3.0.2        
+#> [49] backports_1.5.0     estimability_1.5.1  rmarkdown_2.30     
+#> [52] globals_0.18.0      otel_0.2.0          coda_0.19-4.1      
+#> [55] evaluate_1.0.5      rbibutils_2.4.1     doParallel_1.0.17  
+#> [58] rlang_1.1.7         Rcpp_1.1.1          xtable_1.8-4       
+#> [61] glue_1.8.0          minqa_1.2.8         jsonlite_2.0.0     
+#> [64] R6_2.6.1
+
+ + + +
+
+ +
+ + + + + + + + + + + + + + + + + diff --git a/R_functions/geneLME_benchmark2_files/figure-html/bench-plot-combined-1.png b/R_functions/geneLME_benchmark2_files/figure-html/bench-plot-combined-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ae86bd8bdcf0b61238e02c23a0eccb345a5a2e00 GIT binary patch literal 104386 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

M`3X95>TC~2PAYY8KMM2&GqPvP~xUxjI`< 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

MT5|`f!X964nv_E%nR5}VXus7UkPxPf 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 literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark2_files/figure-html/bench-plot-scaling-1.png b/R_functions/geneLME_benchmark2_files/figure-html/bench-plot-scaling-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb00c9c2818d3828d943662e97173c1d336c9ab GIT binary patch literal 99692 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

-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 literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark2_files/figure-html/dev2-correctness-plot-1.png b/R_functions/geneLME_benchmark2_files/figure-html/dev2-correctness-plot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c10f741128e9a065b4616da39e42daec985a18e GIT binary patch literal 129893 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 MuJNVf3pc|53pmJafB*mh literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark2_files/figure-html/sign-scatter-full-1.png b/R_functions/geneLME_benchmark2_files/figure-html/sign-scatter-full-1.png new file mode 100644 index 0000000000000000000000000000000000000000..05be5967d411d971ab68523690bb5f6bedd12deb GIT binary patch literal 192634 zcmeFZby$?`_BIR%k`jWTfTVOPh;)dElyrA9q;!{nAc!DHr_$XWLnGZaAYIa3Lwwgf z``Pbr@As?c|L;4F!D9wz?z!*#TGv|VI?r?QS>e6p11wT3BqXEqa>KybzBt<(Y01heRG%V$@@MV^NxG-*paoY z+OhL=D6FK#Y-?l772WF{9sEwM-op>PhuK)Z#xTdwBa^MPL1DZ5R9*8^XEo<{=G(;z zlE@*ygQg34duf(Uk!~M#mh1YViot(jP8nTbb_iG}Q!PJiuR>CPoQii)K9un7MToux zD`Wnb+m6`~^bOiGEmU;JgW0cwFLR5SX!<02cnT8V(~dO-z=?ho4;ORaJ zxu{(yHbe2=V>5^FPYv^BnT3k6?uD%!5vb(|cc|y3#=XALXR9IVq7(Y0myF}|i_`h~ z^vXp&B>`hOijM@F^a~w_TGip}U%u*944L@))lR+<%X7cvW}|zN)1YajYYNen(Yrdr z9gpI}dqi6U-FF^w8W6sTq{4%EX&YqZV3BTG{MgL0_;E3@xUUrExSlt{WM5N2XOudll9gw&^O?b!%=CzgRicDV_ETe|l(o$f`GH%2tox+g3fS z;jLO)!=&RMr)TD*mTXSHVB;wcLw9ZZ8&jqF8?Ur*Zqa@2`EJju)x6y1?pMR|uD8?f zkUSQ8Zz7zt=Wgn7vom&Hj`F-u{)$<;aD65|HC`x+YmHAcSr9sCu zhcx>IzhAnG><;=4`u3ELX_A)X?)%(UdnFlVSnH5D#ksWCTGMQTj3z-sZS8F)GV+^` zJ_TYLa(KABDj*Ce(QUZjU211i;9clPlIOT%TUartQ8ZSK5Df)< zg*R_H=N}pEKQR9OIODA`hXw(f!1LVcJI2`DXD;D%1PwnsK7O25z{fyQ3uR>9@%72z z8r-vKXqfrk;OTpO*|@(uIQaf@uz#;#_*k$ao*^Zj7WpC7KYQeQqJ&L(V`?D%(+^M~ zOZcG}@Sy(F_gmnj5Fx#KCsF?RnJCIXdmwYpB4I}Uvj;Z@GL|1%CXFV}KRuyzq<9-Y z)OY{vK^lmJ*788<8|(dldO`|F{XGBlLQx*P_Cr~`pZAV9;GdolBa#`}KU`WW|NGRU z$R7e!o`s41!#fX_s^Y;vyz`Nw0r=@iwPMUso&WTNz*5cJ|A%+}UAh>C0@57SqaLGw zd_r6_7Nn?MU!StP{YuUxe6>mY+_abIv}RmM=JWd${?A{Z3WOHxHiRzR-JbunnXQ() zhan?{0>yVbolx%_lNTu(9A(5$BRlOPpnV$x8OzRFwkhwSH;U7BIeZjzGZsvH68PnH*>D9eX5-1I%yQjE zsxqJ5Savw?VF#fj6B=BBJw5>gGg9;^e(uDEVbOX4ZvJ?j#GtYl??d^hb*2zM8!igk z%Z}rvi7Og~4xJ$H+-4YtqYTPRnU)MI4HRq=_7mIYOEY;Nm2;DOve#C>>#JM``8M42 zeJ)MKUwnHlERSVCT5b)&no#LWQ`w^y{}kU$O(L2pHltt|b-}G-$i?0th)F0YDA}G` zBjkB@lJ$O1WM$eYj18w`B|>Dr8-qcv$@im}k~TH1!cQwylz{sWUJM0HsA;p+(3Ih= zeM-dqCTfNnH6N2er(@P3vBAZ3Lz5P4@6Pf<-&Dc`g|6OseOqxN0kir#&- z;c705j97Wwvx!CbuS*(cHeY@=%!z7&Qg0@4JYi}*S*ZC_K23OeGb4hy1bXX{|7(3P zg@wIt^?LXW5t-Xkc zGLQR|Kg9ib{d0uKtwtj_+vT%aI}&VSR)yB*V$;r3x-n0h_kK6bDvqx`M_t-)hTH0{ z|CY#3vb;>PtQ)I-awH|gtXm7cyV+lE#}nc9Z#_R5lUH9)gWg_Q8SACZJ)og@hHs!P zh1AjauM8@eD%#Y@5;kZ)@~8XdI5>Bm=IuXPFn6rpj;q|9L^hrhYnIL<^R2)0ZDcIS zVi2hbsoEitI~~Z6fn>h1)yIh?ae5wkEw`a!HNRbEKhs7CDkb~gUM^=wzki4)c;JV1 zG@-7a*D4a&ZdF+J_Mp0+|L(Axa+?`i%ry%Ft9mZJcFv)X4a+l(m`!J;WaeV@C~pR3 zT%&78g1(QfCb?F*MBD+VM;4-viDZCC^mx~+r9u6dS zs#ncf$$cT`Q`)JT(p&z_kgA|!)*nyJ-mvq+{^oS*)nhv1U{oJEB)0Rn!%lZqZv>e? zwj}d8%9d{z)#w$sVMl+sM^Wlaug?60j>{m6_!O=%-;qE8Hg(a%zc;no z_Vaj-LFJEc=29wbx+7$0m7nI^nsFNAmN~Nn|e!yGQDoVgQa_)ZW8X`&Q zJw8|0$KHSu50`p)yG4e-mv(oZqv1TES{3*Bxl!Q7au`QHAKt$*s5IvFK|5Yo1xRG; z@#z11WmOxGs3-aQmU-JdSjOpD*~9oV9c`w{em^V5`lF)nYzu=0;v0 zO5^B?pyaqchu(dDq^2QuvNJOlk16Zu`_jJP)=Q6EQG5H<<3+(?X?786gsL>TdB zsc8Doc)}N=ew6*KAG`Ut3kf~-$0gz?69nDMVI@!OOB(j-E%D69?b-N-jyo9Ayndc( z+fEgy7^%wLOo`W()og?0HSRNuf91S0tyoyMp7?Fzh4+=y;VpbW%&z(JZP4yqonxnW zhqFLfzf%WV+^MdUZi88Z>4H;_uDVU#5U;m>;zFI{M(AfkhJ5qKSKS~>a1iSYrd64* z#j;>m8w8#cr!J*=pCw!j*!g5!38#LOXn5;wZdF_iulo9GXo0m?!4@j&Ua>{Su4y)t zx^kqsdcn=E-}n~g*@Z-IV9r*t7Ha$o#1+X*zF05RtW=o&^LRjAGxk$a*1VIk>(yr9N zPSi!Lo(IG(Bb?_5lrZxBJ`O1B=ZvVMxHnOw_iRiGimH!ReY~5!KE@EKd77uXXEUHJ zF&Q5>HukZ}B`108k7mh83GceNx1y2cZs&?u2CNSx!F#`W%=^H1h3Z_ZIZ|IOc#TEF zgWN1?T#`i7#NfCE;`*r2WR=-Lol0yF8*;kAhfLiiTCwl8hkS1$%f&f7uOVS zi~j3^yT^-DddSe69V83X!&TSy0_q z*Z0G8r}BX%)jI6c_m9~`7~QAzJd0{t?~}zJ&3OC9sHzfogf1 zZ(pmzwQZpDV8hAj%aKa9igd7Lh#;hOz( zvk%W*F#EKJhb9Ek4(Y4pNK74CC(RV(?tazp*OSgpEKe7~gv0q+J&Koq;?%QE8Z8XF zhh4Fm7cb|tF$ft)PH9>1E8_f-M|q}zgIqYA0Rk955Jnld=F^-ICvDm3aUp7+L*~r- z652?j=SIyV?*KI|`>9dx zw~t!SlxH!#;bIgw^_|V$xV`kiSkwhGlP@Qp)P})9 z!@>=_s&Iqz_ImhJ0Ujplk`M>HCoej_BeMn!+Q#LixFj-EH3(I17&O5)@P|c?`?;8z zA#a5o6#bgfDH{XAuy(v^EzKt?v8PUTZFFb7dih*BA40Ni?ncRdtv$sAFoYwV5_B9& zR-fb?D-Q0bxXx?RTuj*L-c>`!y5JyH?$TlUMPD%-sY2>>%BwCBP}A}-n%!z{f2*Km z&--F2c>PTJ%7XOmyY$$Fnfsza=*3r6mB~g|%&995RW2r9^}G%x2#KA)9N-_lt-HJ4 z5TO?&&Ojr1TgM#m9y;pd4+p7<-%b&#;gtjLvn(hgek6O@U_B(|{fh!!ML;;5jff)( z2{V&Mp{L=6YKOn*#8*|8ft-SKF}gntLU{hUTI?YibB$R&B+EesX5?p%I3jnhith!Q zE4z!gM0N$&ID9W$y^_BC%iSgXqz zzf$)mb=DZy=`?-fq+M9m{Nwo1d6G-sDSds8ToQe%*O3%8`abiQaf(ME zi3T6V!CZPvU`I(Ew73Sn8d$a+-*_NM$HH|S8vPmQ zp|^O+?Qvppx|76Z{&m`>=67J_UL-wi+;B9Og{69P)(y8UGucH+MkPky@?OCi%}Wv0 zyYACG<(&MDSG9|p`Vh(qh{Vn0m4E>A0^~;b)T$9W#JhqM!P zkv5ray!=~l5+A-+M|lAV!D|CSV*z#3(v|UU2pp}=eBzapp3b$|Z%~spc0o zJ4vbn*Q}KKurkZ6OQ%!eTyF0q@q=kJl8yw4d3?L770wRijr?ShZnb$|^;7*p!K~4% zUk?2WgVS_uOCAY1>4KW2&LbksHY`%k-`A##H_MU=gdcp87*N%Tr7mRqKDJP?NoMGt zKhDutolGw;QFG4iZu0mcl|Kpw5rd~$FFR(-NvXB)79Rcm3MWoeWBL9v?t;~BZ2L8?}Fu-98Y zPqai_4)j`z{u`;KR9CRVEXu_hZ^M-o4OHWBgBRwTJUx{Ro{|cwX-OmJa(I1zdqSUN zZPX^!TFfBA9M^$48Gw$*vlMxI4^L3xAua`^kJ7_2kfC39ySzP{VaSBg zWw&Yy_d&2pD6{KmXnm;*rkr6Nervn*yIq5IuOXpxZc{YMN||eEG4;<(&ha+E>m}S>xY*D;}{VebchNOYJn z4!Yp}8hT~aaH-#Lv$rSVdq-?8)y`Kf?>k1Ls5baWCRtQ?Z?z*jf)puWew4hfVr{f@{^FiJc({uV<*_R3rTi>KE`o2o5 z%V+*TrXkLA079;|@J#n+D$F;RG3M|HYZI}3+Ls4@rcm!z?zTC5n=4K+%9F-DlF3Xt zYnN7>`_>J}<=Pzb;HIvfGjj7S3T*$K4U|1cI;8g=E)BM0iQg(eEU}2lI(72J&y6*f zrek`yyFg~8N4W~;=Vy2VxVwwtFVBjmPCp7Ix6e)K``VMi4U{GrSU=32V2v*hvMk1I&(D`WVmCp5?p8KXsEuBLn=X3y2+ zl7?94(HT8qCo8GJnjgT@)_VP^cYcZ6m!Hg^W)Ibz@P)Zc!>&YY{{`Ha-C$FQrM(49 zE0s`gu$}KaEjuQt9(6(0%-ZEr^}?m^r~HPHde2Xs+;gozWWQvz;<&*pwwyoWRipD` z4ko-HC0t{&vWvVMnczdtbBFXt{$x~Ic~S9DN{*gdf1LhSugL?GkBW1{5ZxioAZ=#D zbFWS^As83i3ZCLLD)qY9wxY?a8@>;PB6`AbN?F}nC(bdPu`I>+SmvO$VjEur{J~s& z&{r(Hu`vgzq~qoBkjSgb-fLL0W!}F{TCu6IE;mTT)fU1SwSz}8`lxg0H0o9TkAJ$iP5fU@ppYD5;NA zCgNQDd$cD7T=utQP(g=Co{nZ&697PRE?J)(jV=#ZM~3d#Q5L$bev|CKDaK7~6PR^| zeuBK*op;}OY7EnbFOg`=Z@RvmzpJMxdxRt_hW=Dm%90_d!xE0<{Z)So)Pl)wsT-7~ zasYwwCT`ae{h8JYs0DV29!fz7`KxOC6XG5^K}jEd^_5bZzJzYK7Wty13c)TMNEbUq zT0#Dp=sN>;b@7!X>HJz?kCnCh_%vIXaLTz3UD%7js&CvkLSfAWv2oJZN0xn%BQ+II z`RG@l0N7^yBwDNTGro~?0t<69BJ#@RhFU4D;kwi3K0dD%LzV5R;SNV&mxr$wYKO49 z6fS(8o=;npRqlWujbr-?S6~O9OfT^@!G%SH_lK;6&FRuB8q`1-n?|W9WuiW$clO-y zv8Rne%cHf@VEVI!pab>9^siX!{gfz>o!!FUKY}TkGpkdC!>@%_BgOk)juW1xmFX76 z%?=g_Emq&0K1UUS{TNs=_WgcO0P-HD)0H|R7AGNqolW4JD&b9{IVDm4#fW@84eh+t zDJs?8@chl?QbO^$wPZY?MunJj54%wZ^^gqNRowB_iwmcv!xatz9g&!v=CPGW=h>JT z1|>JJ?+26%UPZ~xzR!7sL1g|=(qGHhb$fR9njez)Ba>q1#<%RTP1EV5vZ2q#5_*;0 zhlBgtNR0rop>kkPnKDX=dUTv(2M*=i1+HZ&K?P?Wbtu9p(z@2drvUAd&(Kn4$=gm- z7r3#ht`E}iU#qvMZW%+l_R{PfX+tKPSW~~ULMrQY{SGB0A?HEd)O2xfnKrRE|9+h` zu_=ZXrPRMxFGBj}uhmokkJSS#S?34W#QZs9^-9Z$-j2&o68(7NDfH226&%ty!lS$v zp3a-Yt*G92H|GQPah|e?#$ImDfB2oZzCTWxTTz6ZN-Jl7GhFkDc%9fv zJd9dZ^*!LD=Nlyd^djBR9_bp}-yQRw`)sz2hi|FR`M%0BL}0tze$#_p1uxDLJKbN& zJ9U_~{xL$au}YD<{sQ)4^y8PTI6YXPq&B8w@vNo>si9A+hlApR#FVolYx~99OVd^% z)*^1O(co>@oX;zDBPfJ+#)gdr3G1EyJoG3c9jbLO?K}&AHIMIL#}>WIy(VdZfmbtY zD?ojo^y<7`(1Lm2I_`#a$l9XRii93%(r5I#V%jXprXyC{HZOo>*T9hmZ}kjcx~1Tz z4Yj3qy&Q+14gRWFpGrr~yM0i+s@uJKqqdP)NI1NYtmGRKri#3u@x+Hu5{{Td6GP4H z-G&lzT-%4DZPFP(OG1lS-zeGV*eLj=TO>w$C zT)kp#9mB&K$MWO&67>Y3xJt21c~+< z5KN~w+16d+6ypwc&ccRA4W@muSKNoLRTFA5IML6jaNi;w|73@0a?Y0?7j8AEZSl*; z8hT}1moMAqsP}LUHjB6k8h7EW1ffaUhZ)I=x+Ae^2=43DWrBrrS?^D1rkS3k@FH;# zE@SvvbvsDG`yoA^*WQSRnl)-`szl#}m*j>tmIAa$JTdnxy$_qag7J7Y)`nyGcow`I z{UzM+mlwQ_2e$b8#b@_GyYeFJ9uLfdc0mo_g%>_8@nq*B>I$vRY~t09mx^byy64wE z^O2RY+QvgtKw&cZOE0jI7sQqa$`^gWTpv8;EmZ6M;~|K@s`kg7!uS)naa`qPNgQCC zqtUddZfM!gxtER}&(@JPs9p(|@zrjPNers$#I&wQWh2&bM-Y64r1tx0N%dVJIV~J< zkcCB1kD|#Z@S^Mc^VpC+J<;3|F-X#JQDuZ@nOU7=f2Kq+*rg&5cLZ!u3E6U2KcisS3jI zo08nA_1c+^{W0Eh?wZ5)i)!27T9nyWomdX)gU$jn(Io~#b@}^0x9c%tA#U58n)XwN zD>cdH$=>?ohlQFI{aM`DlunBdZCjqpKGD4~k7gHxA9+I0Yp>0`i&E!j@V^`3{eFht zM`?&+5O-4#+EmLjJYs_%Hpbsx52XsJPF9|Aymx^?7}j!p?Tq}E35tyg1eN$drAj(|)D^osKZ|uqnLF-42Xo1TT+NBEf)ww~ zA+ zAsCU0)9OP9nELUW58AMqanwv&oen0o?Vftd&vl|xxQTk*UT#RYS2}JC(&w@*b}$z? zB-~$J9Qe0DO0Y6O}Aj*~NdA=ttU;#P=q8s@6dBVpp^#s|9 zWofI9LqZIDwJW%XCB8Q@6Ox>QTNob~bJBdY1W$&=jS$_&eS43u-mfafZ)V}oEbq9X ziZ(fFeMNoW$8DW?rx0C5rk9!Kg2V*Kd(j%RQx&VlV^Z)hV@uIKHrP0dHv+6*D-+uc z&p%z##elx^OaQxkjT3_3{O}K$$I~;01aADSRU#z6+!mu zy+Pse_3;pPVSo1_pui3Dxq7d;P-@u&q*N%Lfr>PcZ#R9Jd&XOGMjj{MP|_W=@)E$g zD?~wZdrI6%C-_PP4jVE9h~j5&!kQb^S3|z3qsLsCPZ}}@9RIFKW+Nh_i@-P42Y zzDhpjwW$(mgPz4v5>KorAy=Nnf9KN5HEws-`lg&7+IAp)uF3;3<2u1Sisme&X{WqT zc5YZ9?=2EyRl+a{>2ojAf4ua$cFP(lALQST=N7&>QFcsTZ^6~iTjZ4EcMqxqdX#sY zJ_b5ad9hcBPY$WpzIJAH@ys<>IrObw*3VU5A$|G2U0@#*-!3+{(OCLKPzm% zA^vSvy5R}>R6_!ziUA%jRV@GK^PL|s0^mPJuGix9nMEoISTV32HDjn*ix{B*;j4JW zTudo@7H4`j2BW@f5kh1veg^Ua%ZIlMjdd5w9727Tt3Nr~uJuBdB8|pDWW@Ka8xOl|3CoNMVjQ$Jdrvv{U5HtAQcqKy zbx8(Z{NmXYl;5+zWZWR_=YgE>)+{jpAmL_+O1{y1hqb-zp=P~{$#lf$yfvw&l5FrpFTSrF$MBEDrRl`0pQ8mG&{UWs-P(!}DA0SDDo3`Td(pb{mrTmn zAExFnyo#{bm|QE2IrK}jzR(o<@?<9&k+$3iKiW{-w6E(9+6#s6_Ijt8{LVR!FEG*l znwhh}q(P8=e0su-! zG`#j;?EWV;jx$Lg&~tQD3<(zm#9jkIuzWef_d4SR+{Q|_>3C3p&QRB5I)J?+srr_{ zW%bv$URHWk;p(#&#SZtJHS=?d+{34T$_7%|vkQ{NF&BE5YNst9t3w7FZl(vIxNJ(Qo2w z{GEo2KFqTRfo91r@jCZ^8wNk62Y~e_cM#R%cMhCGzpJd&39VZ{qOEIC*0PGg0&HIY z0hObmM9(>~RX@I181y+EfNU+{{!PVM^H-~5mD;UY#r2(9uHo0u=8D{HZs#bvKJGu; zoD%j^f6PzAyf=3zP7w@;k<#5ow@AmypE1JrI-E#}q_?-F_~`qRyT#2{mfudA{U4#( zynlQy=4a8sZPSTM>7o;{zfWinMWB{%upWp0M_>R*Rj7 zb*N(TBe%}#z#1=Wfx~_G`$H9lcLrMa8<4FGMB;k#cjB5fy(_KDhOoF?l&-v`m|Yvm zsYoqYRs2-yLa-huv4A0yqXd0x+ZXd<$s6p#DsfOZV0mHrj^%AwEEi{)DMFsrF!aYC zySZ`czsU10q3RDKV6Q=m`YwR^eD*-`*;YP%egZ`PSAc;SzHYj`+8&_W3Cpdr{9^tI zy;^esh^G8fn1wcR&pQ0_cB0?&_cTicVp`d>@^WwL0r$y*P%B{vycM1Du^mQ4z@YQx z2z_Nh^$|$n#q#35Q23sJX|<|};K5kK(ax7*GBFr=^Kb45l20oW3mKg< z3|%fB8`>g)l^~1}awquKptOyx3%dECaY9J&(e{hZ=A4rzFQ0H*L<$oPBi(L@+(8E0 zaZ5R+q0ucI7Bsvz+L&S5@QD=x?G2#;yU80^aWq4!+w08;s_8D2S!2``HlnvTmcc9**^`eQeXYad;ka^|CX5&4672nFPE;OJVxer>*knZ0g8yaby4_PC{*izMU}BODG^hy*x6(8xi-cNu~ zDG;5<1cl4`M`u4FU;81z>ocT(%lz$!e9w#Wq)Oy0KIqAl-4B%9!R_RMNC-I?wt_$P z{GvLj)$qLb3}F%ae6$oyd6r8t%<#|nq);5n*rn&W#jk0x^12!u5efCLUN1qV3BLFIhR?RtMPMBfGI=5 z*z12?EX_0l7Anz^95_mvlU~2y+D&IY2~ZHm8{P;4h+TM z3$!xq#od=}%{Z|Q>H#}7Z(2DRq@CNr^L?M+5?~g5=oYthFRi}3HUZ3F^w3``UGpUH zsd+2fpW0t!%l3cqg1?ND`^s-uMjzxbpcCwQj?(jcTZX;gnJn)_FjA^6t#-Tx4ckzi@enG7A}*z{4(5*i zE+~(Lz%r&%=y|%8b%Z-$>lM=wjJ%9NmQg{3*8ILu|K{{Ni2 zFT)~`YUUim{FsDy>x0&w}?odEllH2{n#TG4JC2Kp*H5m>?J1jIe7e{^af0{h~@ zxT@GD2i6_Ssa({){&3= zaV+Y)MRSzm`52xd)~2Kdm!i;w#^7;Vj2^wSqdg`j>=XYM)0>Z0WVTv zUH8{lZmj2KXB6(M1p7b+Jr0UXEc-DcGr*}|Yv9%D$YgSm$tlcTT)BqV#Mh;4x$mx& z`;9+M2^$to*=cNa(n!dH1{{BEG9whcU|JbPjO-1gE^JE%O^MUL|qvG0-m7z`im|n3vh9@VlgD-P>H_IGxB( zeT~$@>MNX6Yj5VGbkt7Mz88Bp&0XaNKM&At1`;yW5Ri~3L?WRMvsind9m9F6`!eLs zfmoD*W4}wYqebjZ%bFs6Lt4hB-uv+!FsS4A{X3}wio**zNi-jdzHDEmM{VO2`l6rL z#C$+a;ajaxKI-KKOaQNoQB>gk%f?KBgGvojE!T!cyckBU$nGDREZ`ZoFWs+!qoe~E z3o}uhIN_iDU*7L1(yGd**K*zmLK+)_EHLFKI=x?^q9m?`8Ex2GPadaw`3*hZGsxYl zE?)&R=kOc3uOdohrq`5AU3Bl#k%!uDVU){Kd9&`Mv(~(3nQW49+oOS|B}C?#H)QFMH)g7L_K^D}s!EjZ;ZHug z7p>|B3UaRKJTru)mSgbG736!JG~3A^-g!vzgyoZRAn6M-rxb8&Y2zA; zivX?%Mi1QdHdAqi0Bn*X${j|(FYs#-$7#*2f4 zd;lhwr-MPwAZz^RgO4B{pmQlqv(Z2Qa(DjEzv;vnABvT*t6BuXK~-J@P%oW(Nb$c- zJD8&iU#=1os@G}j#FM%I_p!nEe8v1wy!@Ck10gPli&o4j8NL3`Z$~_*!n_8iVm#kjeh@O$P*zg*++` z1WVprz~i9T5+|D@?If`b|NBKml7L%%L^I$7ZeKaQ=!3;VOfH}QIuI2yrN15YMy=9r zK~FYKSeLb;|Aq7>_P_$jc!MNg|IbHcKpZi1pb~M!XQlBv?)#<*NGqU|`_I#(^5;ZZ z@V#rYm~X7p@UkbR$67&z%zwVg-w3gcIIh{!z$E$=G}C(;FX;dKE&uuU|9;N+9Vre* z5}NiI&>;UATK~7t{RF@$M}u)s{Qtz!|MCIncpNb<%KUZd(Hu0Sn-Z#idXV0Ii%MSOf0M>x>S7z)(3N= zhTUpHKxjQ0NP1PmQ(xb32gLP<;20$ufZmFUbN~ZGB!D0cs|CDZXIl`qa$L8B;5)mE zgC!#%gs6SI0E~worV&T|Ce0x*m*))1ygZx(?56n?Cmg91Jsr`LV4?Fl<&*6x z4t8KKe84j;ddhLFwq;wpbbm||^i8+Y8Gy)9cPx-GJU6t5Kcbb&u6$&R((%%<6nb45i$`p?8E{<{jUx`mK`h>Px0_ zH(aZj>~FQ%#9p0G9ec(f>ksMeTQT6GT?|NHK0qfqFI6Gl=J2+i;gER=OqB-J;9 zEUt78$m6`#)LJV#f3gna`9^oWyW5+lh3oZK3E$uOWWG4%ww^AP9sNb4#Kg*VNg?R= zfmmvlbR&d-R@OaJRA8#IK+YO?OBCHHxh)i`6elKbxXk(wsuz4bmF>>BP1cQX2lX?I0EvdJh`I&osAF z92B|pvR?^*6$*NA6$t$uDD=y~0!sq)ZCwk!#XmF@bs7@M_FYew0sTTE`PBJ)WPA9p z6E}avRAM^S}`H8 z3HBJz`S`Ke=tUmILc^&JrM9-gP_ohSI$hMKR@`wEb z+J!ZS1)~WKopI&3`TxR=U|1u2lrcyxkK31mBDc%SuKo}Gb3mGv0d_Y;1_xz)7pB5#?ZR{21RD?e|oqcgq!}vkf z`G*f2>qRy5Fu|lBn7}sh3V!sFQ2mgqn8yZ&0lA_KUXGGsCwLbPWQFu<%pI_+wuCCd zSi^+N+ox;A;9h(U9kd|FFJ&WBt$;QL6mo`s#Qbop{Q-^hvYt*MV&8DkH)!#?#)%^Q z{jW>A-@>8s_J5@s|1SveNHF~~BdBhSqxs^ssWBL$RQyPN-G)$HmVu0>*nJJ)w!#9c zLHz}o##9W7^rZR>2#s-9|K49Wfb|NTV^IH1tuDfHJY`rT&WNMj|6#%VJSDPVZldgV zgP9_pI@&WU&w|?N0hX_`2f~59Ihqy5AB6PS*+M}5aFZ90Zx!E}7f@}7K<*LuJdXQ& z6n87N1t4MBC#%ipV7^K&0)(|($)M(Pwv-LzHIRnIf# z(tNJ+9tw&*t_BN)je!$QUP<>u(|y0`91HSLleMhlA&S-)Kpi)20+-6@ZeH>BnctBV zVUtl?Am(za=N zX2_tffHQ=_xxi{Pu*Ac)(eH6;4@RL6oXA41R4CJt6ZU#2Q zaRZ@sGU9r$a|se{5O+`>>+4M`iM!>cs?>&m z|1E&J`vpW`8|K5>5u=CdL)G5rztz+AnC++U2;dYML;6l565kXXZ_Z}7bVHEvdsjI6 z>)gJ6>MXc9+Tr4tBN@t;Uda0ua3fm}j29B1!gPZB`6E@vZSXZV#lBRdIbsl@DvI)4 zY&gJti)%Vw^Pa!!ot2HhAZ+8)tU56bb7gX{L*+ToDR#jwBL_0VLzq=b z-bN=Vqn#i{6m+3K=4x}0{64mVBdC6R5G;}_5#^R*_e|j=au~f%(?q zCM>_(a@I_VZ)EbsjgQItz+)QD_xNp^e8LL}&8n8mhW+M(risUez+<&Vej37uqB}<2 za%l(ARlh2J55KNfW<7suxL`%;c-wbb@|&XVE8pGP^(#w?qFEWXAzx>TOQ5g()f3kd zWil_aX7jJ@Wx{Md(=mC7BEf1MRM7ERi=t~D(-Ck(ZpYFoy-GQ^Xb z`6a|8dIH8A_ixr;K@~R+D(*@p*MYIN#5RudPyc*^%VYAsh)jyJ{xFB5_FM)upXS;C z`$ZkgHTR?TpB$tEtgMaKyt~+8(cKiD{U2}}(0!DK7kls$nmu=gA`yC{ybsdZD*D{8 zV1`dtZ2JD~B4+Pgh567h+_|~bF7bMpqH!X*&%cTRZTp*jI{D~$ZJn^&fq|nPA9}se zuZW9zY>q~J&7oiC-y|viNO4vF7-`qXG7+k@)9otNKZvH}5xo3S{)_^mG(9Kaw5hOg z3gqtuD#+}NYIyx$9GUvi?*sX*gPye~R{T+2#umiOm6E_pw$6H)U z(9MS`9C#=N%h{cD96HOFPNtx@s-6Y<>W9`5eHEqz$6Nu%&`xPaht}V?F z?1;E=%-nRT*0DU9&3r1-+2rbcx%Qe_o;{wKsYLe{U~@2=V0psUtS>Ye`PxyQUGQ+# zsPtDYr{0@*R$YSA&7U^(&%cGa)6~J7AGxrS!09CHih&(u`}3d0CwOrugPh-v(u)yw zP|JIwv0zLX>YN|bNc*8gh+^^Db>`Ow=?1hu>*gASY?|b>=4j)~om5U}rkl=ywr;0! zTx;j`)YpjazZnjN64YE|R;Va+vM3!HsffUWis(2Psc>x zm6;XOehiniQeK|MBY_hXH=V(j0aj5Wt!4}+nugV=I$r~uO}-b+0uTeDN7pq${)+j8 zTRGWENji|r($rm*LIvvu2)d+k_$#m_FEBl@8-LP!Pfqvyqw924G#kpmypA9HRPTA2 z3YF|%Yhx#>=dzTJYB4P`ipa8rzZsz1#Z6p#M+s{O;Ma9##_x=A3kCOl+q-#%h9ArZ zs{W>Cg`sk@8LU2_XDFqxo&89~q8xIltN~tKjU6yrn(r%0h-a3+_4sWB3&`uE zWpaEgIR*`-LxxTF_g!~~-*dWjI1=qU362?H-dj3&->%W-)3pUZz?Px^KiGQ_Fj9fx#pb92A9DF?0`dHSKQ>j{{!{azYpboCHtN3MZgiP^hNcY1L9 zy|`{Ms)9@H`@Pz8&#s4hHLjigQ?rA+MjJ+zc%8(}EN{$L!+sr)NO~W)SWTAMd4#lM zDnv)K<3|;PrNj`YL918{scWjFq6e=7+ijEZm8L3ndG%J+afMeAA;ndGw3)2IW(V(V zRD*fVMjr9RKNOgARhW3)#s^y6O`DwWDfW9EO}R^#xOtZXpQhq}z6w&sk@0+~urFv% z-TM{x^LHcoOTeM1@ZSY&QQpUQ*w0-7he%5C1kFTC+qCM3W*020^0NQb6q7XhMe!zc z)yg`^Y1J|Sxx~gq$NWZNP6a38o|m>+K$S6&Wj#?|*N8slkZw+0S*T zw;B~0#HpTgMy*DUV;5=}cvTi3HuQ!Fy-^V~f4X` zKT#xWkMh%Oz$<)x+!T0HVsyW{`VlHFsc|>r(+A3eORwP%lU`^JKI{9oZk*I_KX$y9 zZ%Ml!`ROCQ+pYeTTpk|L1%Kw&Poz8R6Tg5hGW0cTeW|^QO%Yg0T$bjZC3M9xmgVo}8IK;c$t9J`Eku zH;NU}nbA)_JWUU2gdPGPac%FFDS8??0|lslau?}OeL$?*6^-A!zQy=ZQLjSv+- zf=?YOGXWkD6!g+P;m?;SGRD2v#f_O~sPwv69oe5tFWziauf1ly)VA5l9R=5H(>>d% zL|oEr&&2xJeag1$qxo47$?~3$V6_g)7vHM|{uh&gc7LATDQEHwsI&vVqF)%q`(cyA zS?TXbTL+&lSNJROJ+L(vL*Dm!<NRxI9DGN&n|$ zzJBjg&TrzIAe3p6S=XPcX!s+g>bpydOSHW9gf@6(kj{?a~X$v%S1sAun= z1Wdtw`mh{mJzF^!Ook;T{b4hUy`&D&m5f__^^taJ~*d%mIxCIP1U z$tv+({%Qu3S^&;mQS@v8?SEv2#TTxU>A5vfs1!SXcvuF_Bb1A8JI6~8pF95!w^VKO zf$;Ms1_fNTmqomeWS?GFx|+GPgsy?2<>69F(6NEpGE(6vjx0hyuE|^aUEYWFO+owQ?VgiLG zpChW}>;5Dzy;d`bteHM~t;+jI;(!dt%`w^%W~#|XcV{ZLuVFe8-Dx=v%&3Rkdq8^xZtIoVc1>Gc^^v*Nt#O(w8%bkm6GaGa%rFNr` zD~=}-N1$s5Z6)~>q5`ypZJup*W+Glmc!cw{uGwKmOrxMa#^pVx$+0$U~f&_+utMSl%|Ka4beTY25x z`YF-M>`fU{ij&=gMt;T1t&h=>@TPQ}U#g!mG2mF zrh?**sXt)Z2FX1MaU0m!6lu70gfM#cBv*@Ot6A|DuM`z8pwfSs7Tv1C#gFs+SqKc~ zA|$YxwI;l-UAoD9ZXPAnZu=$Z?t8*g98AdPvl@hLRTSzFn?YXi zTAzKSm)c}?`~2l4I9-qR+5#y&AMJ72E_{g!WULT(^RVU`8z(}Z)DylTsVWyh zM~L0ST7J&w1%Qy}JFOPTuez4UD#HcMlh*AoowH+=aR!@wm9Z`ehdx{?<_nB4_%nk} zOX37btP%N#6gQ4&kV2@lxV|cWpSWtXid-2Ft)8w5HEx65$il&JdqLl)r_up$E0`OO z$ZX^Cw);A*1Aya}47omu{tf!q>yzgDGY659k`eCdokf_=4YH`MSG#vh*Q1a3v z=15zrF6Gnq98o}kwqCzdtyY9(+X3-vAR;d$+to-=lJNQKP}sfRmdj}?;UM%yncAGv z@T#S1h_kM^KPtKFh<=KtJ?N>w28|QcY|Q4+GRp)v%;v-<=~%EazOwBuXpzOe+jM?0 zK@{OF7KPR8 zw~>cX-x{t6o=Epylz6eqhf22dTH586P74bi$e+!oK#+gH*nD;HvK&}Rp`>&9`^R#+ zGyedLZHbJ%X?=5q3r3nG!T2IF{1(LRmxhO*z6om=m&Qw60>-{d);9b2lTl1u ztx0Ks$Y{RV?|?$fa-Sl%%r6K{1zASMlE%irol9SMN8AKfETsfAIU!oonjkJ>9p9na z2W)S%ii6=5p&hCxd&mUUg7*n^*x*)mHT72QbZDtgbusH>){yOg$bXu_wU$AlJZ-;c zH=t7a5^05bf1f7LGEjsFFT&D_J8a#8CsYey`lvni(?)(C51+h=^E6F~cB*GwRa3TX z0!Mgwg?g8NapA|(L2|+}C*?q0MHj6206wVxQJz|cq1HFn(p77HV)Yp7_Y2WSv8|Ns zxii4UJ6np4+T7Y9@6w4B(8e8h-}A7zt8j8&8`!MUZb` z8R_Y`%p;ZoACr9DWlz$IJ{)Cw)sgeUrSY3c%)@@>)8w%q6j9qkoZoP-yv@2y6F*m8 z({qgxZ`qzgRuc7|sq>idW|F6$XOZ>xzMfS9Kr4yVUI?E}<<}j%P4%wiPun}7+Jy7c z?+le!&&3XfI(jLs)MH~+2$nP)NW>Dv>qiW|9XEwEpS|?uZr5(aJ{j)7^;U+3_yj3L;qw5ZN4))zC-hprONm#{wR$pmx~sj-X#0bxhXi7s)pGK6E z*GPHKs6DGCe+Y_7U-{Q#9=5*n3I$QuvFz!b0~hN~TYIIQj4t*ncEUoAEZdU>e0N*v z1ose>XfeK(Y4(u0Zq`IvP&j68P9N8EKgrIRy~{0IJmV_DM-K|eYNVXa@tftV@lWsH zkg{1zHw{zVrz2N6R94wPv%fx6W9aj0KM?!H(CGF9bPQLyeyT8lgZE{@g$ZlSnKB|^ zVj~%u&8NAl_``5UK3L6x(qW#Y&EJvkfp%LuUlb;%6}?v}Ue|~(^wT9;@dR!!Mq(sx zp^ZwGEPm-ebbDJ z=!RuqoRX<$8+g9_!`OHI!==Ty&1B+UzlW{a$N3Ohn z^SbH+A-2j2SKtEW7(1J=v4e3ULvh0c(rl?X859**#_8g_<}ci(~t;co5ik(h4`V!}@iM!f)NuDdF zxa;y9(h00zffZE%h@sL;sK~A-AI(ywT^nEFMrJo98EfGm&)o5w&z};BuwVB5 zmKSS}#JCb(?+C6*lyIOfzl(R0Rw^JB7*^=@MS0T9#enPWJLjRB3c+>wAi~DJTHawe zc%#Ei-bhSPY$q&HEHiAPIBuocsmVp^XO--Vqslw*C0>~wf!uxTDYUtX$HhvX&KK8d z`l<#cB*JVE&WbgsuQ5XtKz*+a_S4?GgI?dq&A}xM?nW%z2{!)#T0Bzz(pk67q7BY1 zieh0-gl(2LxegDmMorfn$0@H`JQ-|vK+=i>WpAuODhoiHDizfXy_iz9Jb;=ulGppT zRIlBlBtM+0`$b9ysnlaXGExK=knqNFzg06#?qaB#xUZaxV842}()a3gUPsX*0S1qB zPM`i_0X%bhg-~V&jQh4lbPI%OeO$Z4481aX$2?}U%Ekjo#>zU{%3;u1=XCRbX!GsT zrNCoywk)-3$LRBVakbokznbc$ove4)uju0)S(W{(sHF3<$)LvOV${e**c3l3fh!w> zcXOGkv$_bDO%*bU9v%L(?8xS`5djn~&Z1ld1K)FNLXJvKeq?PT80MZNClCZSY<$i= zHM%FJvh4JV@u% zc_8!!I?f+xB_CZm?S}_3ieJzlUllH0ad_}i)2uc(GcvA1Te@Tx(v_^Y7%O3`KQmOo z!9(*tyq~PcT~%6^#HaKAfeE@f$LlXB+2XkaB=ZCbC=h6K_hRrA9hQ={^eCmYCMZ~S z&~*D7P#3+`ZeGg>8A&Ou*##RMf!Fz=tb@hurNI&wTH>hKAoHyS3%`Az(N# zQ4V6+58_~+yf3Z8tgj{&U}*7k^6ld!>}tL_W?D2f&mtc1_baM`eDg0AI3XNB67c?1 zSnU1;u4W~{{JCUkqd{4V5EG8~$2XI;?~ol)4i{}yO>6*};>Xuq{U^Pg8@ZV=PW-$V zr@J~hol3l|L5?Iodj$CC@0a(C12Dd76=_NOQdd#AO&T|iBaR2&o6Y@9}@-v(} z?vpYES0M4`d$6zHyvpL6$0c@ zUH}sC?o7nTZikapPBC7zpl)g<$CV*^X&z) zyIN64DjU~o!B_S-iN#HSC7iRWb8Rc%Ta^{f4`+36Tz(-~wb+pqFV{EXy{9&Tt0TWG zJN_{bNESXzPzzMJE3`kKj^Kn!yY0Pzdt^*AYo_tlkx=;$zN?SGuV9QA>NYH7I-Wd1<7H5SokaPR}D=r zHbbCqfh%Li?>b~r$N_}0IyC?Y9rb^&?lA+rV>Z)evLb&(`(o|}QHL{+17fp>EE-$i z_3f$Gt#L8ctgRIw9X-`sZgP1b1l7ISH-bju3;<%+#kYxMJ#&w;n0uosq>mDftGd6{?&KOn|S^3 z?=yzi8~hPB>Urgtj}NE?6x<%}&2iRU$~;Q}e@hbA)fDjTf+-MQW5>MZGR2?tgHihc->hyDtp9|(1}e~W zM5(8T1;0#5IQ$OlSZj$P;pytm-Ki2%j6(VwIs%p9V3Bca7Rt&@A}! z<-4-iy5&H&?+%PUT9tqS`A40LbsY{&JsrnFo`Z#7UFB?Y9TQ|Rr{u%xTaNw>6pncro$Rwc6!b-oDyBKsf9c+;jW6J)wMjm9?* zEm!pk_9!_&N6S3QuDgw;fFI?LIH3L<2}kvcyw;91gkpq04eG8Psh;-SEEX*90+^ZlZP^NC9=Hx{@%4;n2~Wup?x=~>0+;Y9}gZ~IS&O{fkBaOi8+=;9~&6eH?Km?&)3S5l3C+7@omkJ^7DmpO~G$YzQ z3VRGr6MCS3kZ6q-KM_TN?GP!)(zx;(4_N``L8M>B(Ob2jRJq@#oO}}KG9r)xO7fX`gfK)pBKvbS7Y)o)J{kvukyUas`=`{PvEuz70i!tnhAc!hx5o6#@`3`q0BvnO-aFAm{yZ0 z7+Shi>LS!q6AoFVyv@wpk=k5)TAQT{Bo*Rf1X@R#(GxKlC*-W>=)%AT@-2wTg_uuU`L z7G?mbkX?^%*U83v>;f_>_uKwF36z+dJ)-Qv{Z z727^Do3BYQj_z?bn|X4O-}7WPF_syi0A`)+rd_hO%fc6Sl4zAW_frlDH3As!goI>5 z%z-~m8X+*HP)Eo`92)KXc;ZQLtZHt_V)=szN>=2BW1Jl|O`RQWp#Da$^=3`oOWE#* zM90fkh3ocs`0rL7+o5v3!RVJoGtf{D{MAqfd<)=WGP$VG1*DE;=04bv5P_LxojY8eE6~ovj+GH~m-iU8u~(=RT?~EG0f+ zD-PN(5lxIFD17aL&)e;9Hdk9&1YlJTb-W6Be_{L=G?CiZCHy^Inoy~SU^}k2shtU> zbPBJUDGl2jAGMaxD0hGqH((dg>pI$IKjRqaLYo67x^Ns*Hhx3=Gr*Cbq$cJG@NxP} zDl!7i_{^)V%&3f$ZpWT8Fk}6lrdK`(^|N{&>dIe}N9br^>{pOUZM^F)LE2rwj6X9L z^j8g5DZqLn*rmPZ@b}+}#cff(KY@D)B@Y8@pAz2tGrx5|a!!uc+GrO@4bH*!{P&ojKr`VKnAh#Z&5jx_5ax1pOSSS(z?yz{%yu>HMvm zlEVYvrJ!v*lEeOHGII3W^Pj&do~9OidgugQ@!SL$<=uWjxvVhxp0QDrV21z|41kRI zE&u~mngL7M^;PHhrJftWBM*XFKx+b`^XvVN0-fDaAX~(n1sceSr5`wdJ;LAb3i>P( zV0TD-J>Olt8Xw5aORY`0Wp_+@BJkJS6x7F7?Ts#e`mRmk_h0xw{vbF^E7vF?H@wm{ z^#3Xy66}MHbur5KCHhmS^>;M;@BjDN0I;SenZV31ZO6|_@b_~5*B{uR-V_OWXh!}& zQSF};@&74J`s-ijQ-inbc;&+J*Gl|*(f;QejNAcbsQD+l_`82K&;I+V|Lfo6LRDF# z`-{{6=i~qU1vwUIkocIdEBb#v{?A`X;|3}#m97Zq|NmwDA8#c$T(Eq@YIRx!7kIn{ zs#ciDfB&I-@#mX~XusEE zn7G(|km9}rJm$w$>d@f>Wq)a*QR_Lu?F1bd2_bGt!mv?xbNV+mH}C` z3aJ=5hcDAX9dw{j2SLt)D|xS0);?6ALE(8OBr;m4#sU>H5qy6Zo`lj1Vgr;9T?o4V z^%6+CG}~vrBQzU}DgrD|jZ`gw|10aX|?ZEEV>QBVi_VHbc|1S%3S2 zO=;?vm%XGMR!J=sTEn#7wO`fEiyo9>6ED)#U7@@I9+VPiGCSu_#U!AFceSJ0&xVq0 z%{?5*(j08pWFb?Bmhf&e0gC&4@POYy-Lm`gysYZgf-_~JXj2!V#zJkhlT4KL4lxH? zcW?!7_~H4Un-kk@HjL`QHo(LHvtE>QUFQu*g(%%lcgRROo6dmq?>peW7X%pRkeS!h zj^lX1NE)BMq~Y^Gb3!x#uQihZr*rhh`}0OZ!QK=;jl!CRcX+5nECZCdC=a}0yTKrp z5w<&Z9{?qN(B`O68V=N*Gr)VM7Sc;;k0&t)xYH~*^hFg>I4_B?$VXUxpfh!#gF2Ly z)dE72&FVf~eQbA^k*#^UuHp2<@EX=dxg3G=<(GP^kA`t~Eg=0D zTKoa#T_}ba0U5X`Y-##f1s2o-(RN7uAy@J%4$F*niCd_*7%cP3k;D1jGoV}VLmmP{ zOngGz4~0wocY%Ron8{=n13|)a_w)@W;sb;Vcd+n#JPMwL+c8_af{{eJ`|w))2zwaF zvvy}>4=HB2@w$U4nS2-DXusOOtxLFNcU6*dIG~v?q3}2$;y2NKjyBIkP7W24O#mst z2*NRd7I4Anm!x=ZM>D$@cmAK}bQxls91ypFJW{bHZU3p=Qg`?0YE85I#GC`+*at^hHhmOr46!2_-!dG7a?D3IZ0%|i2wQfH?ye#)=HZAV-x^p8?xYk#~aH0Em|ugUdnRHse)}jM;9I z7`bcK5;xzUaX0NT_Ss4F*M)t4_aI{|9)%}Y^MRk_4C3DZ*EN%diW7f5|6;#nrhb+C z*75*uE`tB!B^w(9jCPGpI&?F10QCo*nJ*YRQCtU|Pl6M|L>{h!{`R3%yqr97L-3#f z$&HUKp*bn|CFE~v;;&o97D70>-aR$O%3WPx-u*LffeR5^Lia#8;$4^148!TUb@UAU z8SpZ@7yVFH8SlVP)7JCbf8Kp~MZB(x@JkKtD`kw@f&AOSJwd zr$joLn~e_T`kyI3f3JPoJjxU3{GC=jFWl6b8)uy#{0-YOWe1-UgTj$1<_=d;|HnN# zLJiyNHB0DH7H@Oi*R-|Dc568VkPNT%eRO9anaZ05aTaR45CRoYHvkM*0_F`ExDf*B@*os#~F zQ|qcuP_-&-SU?88?k5joZq4AHFoW9zMTb|DBNjN7hj(s(Taqap9ag0A z+I4b5_r}QU$ab*j+%*~>X7k!hs8XdwdtpL9Lh16b&EfDbTRG77gpKa!m~qJjSCAN; zwC=Uub9C2sGbtTOoUH|Il-$Zl?k9{Fe{N;LBHXi$V~!41!a?&~&O48~u*4t@|fm~&NR3kSKw&QC-Y zYI#+vDinLm*qN@#h}-UQ|BvHgAT-xid-z4ti%Uex^=N-^jc2R6dg5S%>h)K{ILyYB z0OJN$mXLd!Px?VD)L8!OJVOTuLZ_!$pzeJqz-;S(loQZCVa@p!l;MnzgD$!?H{sx} zsYuTYj~i&=te?X=G^Te$bvc{G{Tt+tZ@CRp3(DV>f9|;`*Bxn1_cY2FSYPDsc8VUj zpArk%*UAwe=_;{Q3f!%O6qJ|DUJCL$e@Xq46r6oY%s@*p>cqcjP`08M7=&-BUSMma zfV$O`a4!yO=l5seq-25(y@pN4d#zM}YVhu~OrmkWtk?yN0>>ik; zgiEBTqX8}%>h?XjKbL5P+DCTB{beZsxx@bO)vm)I4PiQ@17YsTe9 zu;A2{^ZINB?&P#vrmAbXcEG(nadhv?(_N++k5jGhIkFVCU`*Rv<(8$d(Xj&l&FVEI z#Crq-K-`?036OrRCz>_PiibO3$zSQ!Ic}cxXkGnTxA!JLL_YQ z%F>H73W}#IH{XGQP6g(z@6ulDpqs0Si0tEv5a7LtnQ?zeMb&tkci!(l9h{f-kmalW zm9){yjQuX(s#jMe&o1BY$E$weO?VZ@RzrWWG>wPs_(A_$L#>F2$Qdxj(JNEkV3SJ3b@(%q69&Hz%lHzdh4KkYnQRH-S7mI~$v zLOyfZuTWA`XSy{a1Q-vb6g5%^c=94)lBza_GyVFgpAYGh?=7oK8LFpuoUog@a>jS; z=ghp4iq)#o_rCx6@9*&IFYOup{d|wpkg>=^LE4B2s3~YrU5mwZ9Uh=(48gS?aC2~| zB%VU0P(lU<21Nsl32f%2cFPhkUc8uts?sWVfR?p2U#TE6A>kbW)9^vb?xS7O1+qjr z1qEN`b2;q8-th>Fd{k0~BehF6Wzxlr28u+`>4;U? z^dD>gNYFxfa{?(&KqyVzz2Tk@Oyj=I50f2mfVtwb8|<=rD*1msmLA;OG)gItTZXkz(Jwl0 zsQT4T*!-HwoiKlB{`rDU)LU?iz1)vbbjKejG3&uC$;-)k$Hd%=m!kdB)z#kB)uog@ zQ%)ai--vgsL3s!x04yC!e^_ujtVQCZgolNVir%tUVSK1h6?Ap2#cu(3`|e$G@^B~! z_lo2km~{(UNkraV2Wo}(P$Cv)r>zO2>hz*XU|v8h8TX{MKbfa;@!Q%-Kewl+Cx6q~ z0{ZsbJLg`|ZPf*Z?FD1COS!U(COK9K3x)rA`*IqT4ij>{XRbuO!Kjrgdu0E)zyI1B zX(XsMm&Z)-Eo}T2R8&-vV($2;ni#~axqQxFJsf>oz^aF<=y>2k=V=~K4T_74ClkYX z0o&)XIra>4F#44GdU8W@^}jqp7|EIeRdL*VTTF zrD@5whlj`hR{4M#KF*t+&_y0nOaQ%0qu-=}k&Wuu+P(v?K1sDgD$Q+yKQu-4uI2Pi z4bQ5?pF82#gZ&*O9?h-5k-~1RJPhjFB=!L;Yg1}3zY$)eM0U#|g}cs1k}0k$L=1CR z(4!9A!A39{sJ}Acqu&6M*dlQGX*bPD9y5uCm|udEuM5oUA+`oG7RfT>^If+9T(5{3 zhex{80(`#Td3(cbpW%#(04tm95X7!x%$sk%rKQZ8fCdlYRw3J#PNpb!EShfW-#Lr> zD}4U>B7d$IcpR4)82A=)$2#tuvS+9Hy;@stFX>)Ce(>M{B&h-w6?JX4S)enNC=+p+ zM)imG0|5aF=m`LuaI~-sTw7ra3kxUQ4H{dk;M9yjo`Ug}mR~IUM9v3Tcue`qd=+@B+!vfnvjAe&v$0*^nwL9cQmMvcFf!Ey}xHEgx0-w zbk)y&TWKlC-i>bZ&%>f%Jv*VqaEkr&h1C^!Pn&kNHW)0$EvM&xexY^CJ#t)fS0wKB zmjr$69SR6TT|bOXHD}oNBzRvEYL#Yqw6ZCoARbyaDG`}of+TwpP`yMA46^X=#C@+* z(Q;I(XKSe}$+J3c?6?@{4bKl4Dae6w&ZPa_kZiS)Y;mXxI0bbY3PY^~}9dRE9 zdn(CW!<4xM5Y@(~2y|Zk+CM%iG?8j@;YkY;40H6Y+Kv4r59rR^pOoC;wq`;&C(<2c z@llk$kSZ`gB;o+kKb8!B*?Q5$Ls0`=ceA11-LRv2@wXGK#+q-Z9fy{?06e+H>cU-&x7G3vBl za-_2%eyc$YV`X;vmbW(a_kub&!`7aDu9_eCOhF&3M{|XC_cLkGxgNMqd~io`)p--rGK!3S1zFrfzavtk^Qe%$ z03U@h|B=v(7Hjx@-jBZ3Htq*MHnXZu*N2h84OoJAwVfq=+TBhV)|@?Fu3m(3GFv&N zRATjD+)kyjZd0pA>v*HsnZbFqpneAWgB`bjeqaWEU_Y8y+kXtH>{lAE)J)Op(R75K zETwS z5ZO|;AeDvxX;JQkDu(}>@k&PkR-BY$!B-D0b*-9_?ECq zo4#8F5E|f7ALGA1{pAG!=Pde>$GMojq#!kwBH<7P1*OFo5uH2JG}$Q>40JQ^`Zh3N zy%+E5>I#8=>sZYmK3nK6%WE~f(Ro~4$9B1^KBhXG2x(erI!pNd=8h12hBEWcZjuD< zgVCz_^@-Qty&`XCcPXj;dgv_olDO-&Fea_75Z# zY?g-)b6ThC;_5d>iQH0&1(y^r;m%5i`^W@>!Cl;+WqGTeaFRy0RaIZB6 zdQrR##^IXTG(NOuI=mEp@gny-trFArab@#2G*1SmbFJQBil)w)9AWIhC##&IBs)cDkMJ033c{XZN5+hmm6g?i zVG`K5xPG9lEC2dd3kXJ-b2SeOR7ymr6+0h4ehm2U$h}4^j5Tw zL`|W@3%K@FR&4=8mb~iz%Cw@%`jd9!e_jq5BHbt}wScA_Vig}pN$XCBmgi%co7Z=d z!pQx<%oyDXecC>|Hms|~nDs}vfJLh*@ZP*QZ9y;Ln0T@1`bziBu{I4RQ5aQYROG!B z6fZv=KSw@WD)^QZm$3<>2y7cp(ny%ntS4~`ZnKJu?QLx~^8o~HR@IA8Tliwe%-6t* z5`X&|Pel_p`m17N@k$6t1b_`m-i)I$*)14j8sgLou46J_o>9Qx6pC^KjC?BIH+P}K zfShCl{s8fx@L&X2t5G#?9(%y$asJJXZ<(yDl8mPPf1GB z+}2gpiR?>YL&piSEL?NoW=OUb6%}>F8z-$CMJINJs<;X@YjHp}`SckJ3$)$wM59WI z1n{@uO@9+5IQrdFkS~ku;i(0qD7cZ!ccKnzzWW1XrQ00Z*qpZ`~-;D7w-GLd$Tc6)G zOi>qqYEh<||G+?IMyuXQsrdszYin!ejB^eLd!jT8r%UOH!5ogi16TJ|d0t+gw9_Sk zo_u@F8@z5k8Cd)EHZ(Q4uJZU?3@zk}%2&@;#X> z5llkbL{G0l?yCpTNJyE-n>Um`mZ+El;A{Z)uNc}sdgD%->o zzj0EyxOIP^ko42G|545=`mAW)%DnL)C-rRFQ$D;(coPaK&pD~ib7Fy+ijl+8@B%(_ z!sL9lXBQU>KnAe=+y>0Z79@Z6j)RUaU*s}Ix1{&H-hNdETK_I-!?aU*<+Pt&sz1I^zmcUEBs1L zU^(y}@kfQG7T3Wd);o<`r+*+2<#S_M7Qa&?FW(cSmN%}2}5y<$cTvZ06aGD)2p-uD_DTli}5=< z6?}-Us01srj2{y-IVWc=;i(-==2cHnwXopEu#bV!x>T(ryqg!jS+ofEd)0qO!iT6? zp4E2>teT?7n;m6{;aeO9|IFgOAEI(9wQxMBzvtQ!`-rjn`3ynBrM4eI^Sr*O-i9y7 z{OrTd=(_Hze-`7{#}MC}INiByxUm%MtoJe0eDOQ!{<&?*??)=h`4qO<8QhC$6)W*; zE+O|h6+qJ}fxL>O(Q;<%zgj^@^5R=+`26wD6&$Q+$>Pu{c24fu)bWO$`y{|q_#ZVT z^y{@SAkrM$>wOdupG_P zYzc6(Tw#UU1BGt~^$9sW5pZNkm(@G|3HHC1U$7bng@O$yr{UzjFEYl9?#R~ZeCwj^ z-rZU33MZ_o@ZTZfXL#fmY1y&KzuT}BfQhT(sf*grpREgbHeiMN@@sbJLOHB8N@!&KzIKR|F5_1*`K_X)4wF4&m;t=nWKW($Y3hiTkx&Ui4hVko>#0X^fnGz#m6(j37fxlF%gvzSu(Y`-1cl?cM) z$oFmk58xg!JYYa>fd-_t!u8@nGD55{#Jqbd66 zda-eni4@QTKjQKZH}U{zCAt2mJe5bub72_4?y=!`1)zN}!h7p@a^QQc>SV zVLl((kcs^6U6_GpDKpoti@VhN+-DIrCN{R!s+yt%?ds}kZt>M+xziNJP4z+ddumR% zqui=(FckYPA>l+)pK9R0R~-fsq6W6G6Vmd|zdjNct)kkye-fQLnP4kCU%kGHo0RUj zoM4!DTwy+O5mnQ^kFC46mscB)_n@0P9=OigZjNYvjEeGw;$<4uRz1te|B4Kp=k%{jXuUs0Y3%-H_;O0pF%Xh25p$$RXOlJMz-6Vr3A$jw}eBjCXcgi*R z%qQa-xojbSlWIVj?X~?@=ItPyK*#!HWZ=2BZ9bk0S1JHB{JUVg!wv_dGT6TQDvnXf< zHRy*xTz9iAG`%}m{0z|{@W5{MkIkFF6nV9b^Tq?BroN|A1!22&B)wkYu|&pM47+pE zJ~x4VXPqR2?-cWRcm-yRZVwqT0ehm^t67=)@#DPUgg%W%&uh1$*Q%<7pv-z@omo@E zNkdDUArYo|3oxLKqSb$29%-v+q_4*7!nAHrG-FRTx!_y2jlc5!5kO61y@##3-UgC) zeA~2o+gR8z#_w5sEE7Xs#21(!F6?Pev@d;#0Bow#lpGMf$uN=a?Cjd~U1_jU+d2t$2i>pmRrSjrXWPH7EFrU&Q9ku+VouH3{pYQoVU4{E|D_Pt$NGAODWHR}M{-vH1d z6N)1V6Md<^29Pg2&@QyxVSFDK_i2HRoz7f z=M0;}F{I1x%~>Qh^-56gDVNz&|La%1;VcQdH5-*d(m~Mb7{cE|@vxZ}%XT$Y!x?Y( zRayre&Q^I>jA7vw&ZG18 zm#8(*sDtW1e2{8u86tvXbmoeiDg@)zlGAT4pDvxgF*JNI?e%c|NCniWq(N}kf_DAYIQTCGz70rh46jhr?Fo1vJ zyQk5FbyI9wt7cyHQhN^;vtdud54fDwqW&sTp$n&859fNBf#Upm5$_z}TI}rIC)476TW#(S|??}X}(o*~xY5UFEQv_Ux+i7|PcrbS)H zv-5JwUK${w85?&gqdqsTgpsgq?mJ$hzr4^B*P;Nowp?zaC>!jyDTaoRPepu@i1|+Oso{+x*64UC-u1m!4)DRcmo5F|I~e;?-On^ zah>x)h8Q;YO$U>D0ry5r{u{vGC^H?V-7Yg8Am4s%2JVu`yQn*w>WfTyM`I;Av$_zp z^UT-XkyKE_eIDmT%U_UQS{NMB`EvJ@Ct~l>U0YJ(3YU|m>9jRi;td};WWeaF99IKL7(X#xtWz!?-j9!w} z;~(xl`1i77lMu9wV?ZWWqjOG2qE(podF$ofP&wQRQ6?%ihe*N+1D4XM);k zo3^&R^=eb&eddDzg_Sg zzBmSrQjbd~%S2#CIuE)o#l;VsUjUbs{Or5YFbSGRJz7iY>FJz{p)BE-0?uY;bjpRQ z@*ZW2kh}`9rg%dBH=Ij5Njut5cSYzto-@#!pmI)=5SNhHsDObs)cp|A@paqZV%S_~ zP9!Y$B=>+_$AHhIt?BV?$*Lbeoiqgw1u zIEl!wur0`e50LTunQ5e5pV9T)FY#iY+!VIXh$h?N&^8}(OWkco940RO5^!$~0am3& z7;|}b+yM;2g{dhmE&V=LJJ!+J$*vwq|F6W&XNPJ|@o72+7T>!@>)ZNP%z#u*a^ciO zjM>sb=&`&+WrmsZjGH!-eP*{0GNs&|=qcN3_fxB*-PvZhj|~%bj`To0twJyT0pXCQ zg5vqB8x} z{$%wQjg^%PfW=qnx*I#niLQdQLWQJ=Zl;Lqrpj{C=DP@i5Wfm&0Jnh@E#HGtQ-{z| zSx4PIsp_mp>p&rE7bANh`g=3qJnh@D8hetzuP#An>_?9()6%kVPEKbmSkHL2`Zb>ll6=1dh`+5n2B{&=w#B&-H%HcMh*ZfEzoO4GNw?_7hAkx{0AiG%N3ZqZxO z!k73|kHNh(;;FCZr^!yF`%`q#H>=5RmTf z?rs4|k(Ll8q(eZuLAo1B>F%y~-s{}HA~Bk z-FYzHIiLG6EocmsIPa)$|Ek0QG8_+>>l)CEOYFU%pR&n({fRACO$JJNch-8!2`g=!Q)*!G?Ri3V;L4?pl*0%w=T=j} z{o32HS}3W4WaY=a0^b$!^}?D#%YN;y&|!kKTw1i+tib1Vp_IdE>2;4&N6Bot_M#Bpmo4caAk9v|uWWjBbQu5fwlvCOJSaqHRa>Je%0RTK!FHyeLZd?o^HZSdz`2w9A zb9S)l!(~-~IvywR`jTEq)DBHlX#2MS{_OZ%B)On=ZMI|K(tl+VXa>Jf4M9KA^0F7E zJ6$1bYe<_F~7PqrE0ra5<{1D4pgL6>T*!S;h!QlD{WXE*fYI|sC2 z&$>P$t*3rE$P7JY;V=#07_tEKhBL8Q(&x{`eYF}6WCh~H8Ooia2cW;TJFL5NFg=00 zW!S*1^2vsRB96*I(9wo!9HLwUrhupZ}@pgc6WCJLk7s zq}bPN2w%cQJl}N6QDE$%XY_{;y19HpX+AzL_uYUOt#U3PB+(ZB!MXD*4Y$FxXU_qY zm$7vO7^3~54$0(xiENW-p_11-G0DmKeOL5qpQxy*Ehr1s%EW7LW0Jj#!D2`CEvD+_ zM+NE?D4-PdTp1dMDAdaZ~c!=PYbKm(i@okFYg`)S#}rk_DOp(JzHOIb5A2-*`y z2McXASO#bM27}y1{pvmHB66z%QFlyj)Ir6zYy|5RH;i#wEbbdS@`1M4j zd7oUV)w!~O>@IYCH*egT^+9Q7uJxGZBVtd{npw+{cjy&5vy3 ztY6g{e9h@7>Kr!|G=Y;vT^;G-k(73i_%Vb9jmClj<97{dfG)H;j#S5fMz+Q!%r83F$O_oTb(u+``>ZXQOPWJ$^r*{ji1uo_9jYkNL-9!{&-t3MPW zbvE@Ucz@X(Fc~IXi|m0*d=aW4;LAA|{vi_nb^6sH%E7o7EAQ0zIe(HM=*-$oG~#kN ziIk(DBzuO3poKIo5EmgVHxC;@&|q8$>rF_&gO-(&8iq7}Y&ipdiILTtxZ^(i%F4!1 zjjyHphLW5-&VYDs8m8H-Mp)r7rlj&$rGG=$=XH5N7HYw-U}lhGB+F?98+Q4YL2j|s0r(9tAbjY*=0JPZ%}g)xPn=&!ZeA0{`_g4 z;Y0lEX~O+xWZF{-KkcykM-A?uHy4VJUqTw)ZTRVS@OH3tb;Zm~g~NF_t@uPrQ3QgoQIRsTYZu@5k6)*htQ#(j8DXwLq_sGb z>GEtYWCU)F>Flf19g7{NO{=Fa`8@$yClJu%805GGEUW`?NHmBy_?@>^8RZ&*!^Fz4 zI@2|c-9ouOK+@dql?Ze{DJ--ZQ$N&lNHYRdTZ*e_uwyInIoR~!eznn!Ff=qYZE93~ zAS^BAWjI;8Ws+J%s_Th2_}UEK zCr=Q8;Sd<=hN0!RuFhj68*S~h_=X8nHsy(EoF-P2qD-Wip|-+QR8?mJGP0r_6-W@n zF7*NtEW?ps7wsI>o0|bew1=@bam4+y=pn3Ncu{ikyEnD`s;^FuuE)cSVg+g@J5Dn zHZx1Y##~49Z}W@q6_Vj{0(E`~$pzhxLkZErR$-A1cTH)T zdKBmI7fBQDySzwkjkRy%Wq&-#N277IRaue?Qjms61r@(`sz9n$e%F-@o(i>KR;TG8 zbc@HhWdHBq`c|`mHd4$1PN!m4>}lOEP4O53(EaR_g=IXN>ef_;mY?Hzx99v`&Zee0 z@hxh@hPB;)g-Bxv@^CkjU3GPn(qqz8`gMBP;Z>X@{3_#UhXdeYo6vNenSeSYtpQwb zY20i>YQx1qOhI27#uX&9o&Ejet3Ry^nEv_H76c%ymz6>h$8kfAEPAld*Xt{OA`p1V z8J7xwyM4k?Ii>V`GFL(0&7ygJUC!q`|K$JZWWT}eeAd%i`t>!A5?=FaN$x@sY;!in zF^dE>53Q8e(ewwUPXVnf&pyC5KB@n7O8Z#nIyDV#KT7>f6C9o7+p>PgVWE4?Bq2ZAD3l9zACZ`BCQVvU1ky@KE z*6IMU%c&V|-z+9+D?iZg12kqtYKh1KcAw(WM>>SCOt1^7ye{L@ath(Kp`LS(z0MCp zJrRu_+xAgi*}U4=K6=W*TBGeh3%a~|FjX{9!<_yn8PKBDee0)HOSG|7csp*3;FHBY zXHH;i!`@M>d49@zmFruqE&YJ;=;rd`@OwV$8$t}3d+k?nxEL{MD`F`NX-RY6ZJ4(e zV~L-9sP=g~#)`|@(iGy_7JT}4>w46)F>X3d#@x_WQ3&2YyyK3k5us0aj00sqIfMh^ zyw;}$t2Ke7vytCxWX_sY9@|4L9zIyJhk{wVIl%_NV7D0&c=6Q%G#{Q)Q)!)Oo$NN= zd0R255F+r|%<)b9HWut5`3{{CQ@(4%eq(v+ETdEhW{@bOb`=d{3*djzs1gwpPAzK1 zP<+GrHj>LfakF^Y+Zl5BNo+W*)<1*w>^R9JP0hinOuNT)4jKCiTYeF|53fgqNfL2w zdAXv64lsCr8k1H2`aiAZ^eqHW$GO3L-QrN#{ELW`=@1>WxEVInQeJ3}d*>HDjIm(0 z=k8@$JKn#)J|PE$$DPS)A0t{Xy3|W1ayThLgbg6NvEV?YtYyGQh7osT+|X2-9?4q?q4(b7n91!&Y3C*uAl?)BQJ$5Iq;v}?P;#ax~M z&Dim-#Yr!<>T|tX7b4YVm)atcY6T@4>e!Gw$=x{20$2*bz?XP`AnN zo|;)6&(`xOJWjC}y0C-e&QjuQ3Sd}FbI$^kgrTBMAGdQBDU>(!jZ}LzphyGMyun~@ zM_2$~1{!|MFJ{KBEfF3(SOQ+x;#v(*+JYIxm;O!mBJDufoz2#=MEd*Mu0S9G=OlcW zQNR{S`2E3PK8$TT&{1UsIy;MnOw*YiH*J<*#^I@d+eFB9`iTDN-TmG$G(CR?F%u)4 z{L}!aMt9;czMD#mbR?!}N`8)aN%4f1=m|T@q)x;+V;+Mtr=UiDZF`dq`@3KDy8Y^v zyfnKb=|PaDh>Cu8smY3n(O>0eG4azX;>xF>o-dVQ0hIJ`azQd+Q=GnTiBK*meF-rU zygjG>8A+PoM^4`?fNcAnjbXu-i;a9jQgh-e$f9yyf%}YgTD5;i@b(}|omcz2A@XCf zsu>{)zuz@0pi>p>S%k-=83IObNR+qs?sBR&i!>_HLHOWrX=#~Znxuc$2mS?vomF@h z53K=U)M#a_ocUTGM@(VfAF-YHU*AcMY*Vf^Yi}oWN7^W4TOsPRjyJxJOj;1*8^L0B zx+lHl_5LzQa>5JOk5Ipd(v3E*&8?Gee&c_P+53NJ^YDJ*9~layXTwRSJmkyIJw)fP zV5#t|8O3o0RHg%v#hQn4 z*vy4v%W}a2OLu!1bAxIb5p=zqNFb z;i!Z)U+vWbtAeDt{xfL(a{$IG7c!y*TEMK7hF9I_s3K!(arohDY3UKNBHip>W+>Rz zNlMC~Fgo>I)p9}z+bqj;Lz8;ZT#r|PbjI1^1Y0C(4|JxsVqD@GeZ?y$BHq2$23G#Ww0w9Lcobw zYLXHJTi^FQpC=2KBS!{^uGBM@fv@=g54+8bmQceHb2*NI%_*f5X-fD4XJf!T#;|k`c%4SyxEfsxY25D^%dTpoCQ^6$F)I zA=&%j9`Q>i*u(5@Ci~-gKSyBKjdY7^Kir~4TDb-YIY}R!^!&nJ#F~GaW2VK}Y zEpkdj?PH`^0`Edh&&uOGocXE>SaM52a|OCnN_p&yNU-^lg7oFy zyaMH=?#1EChh*C2MLPTb$E0WAa7}-WT`StTc>O;yOsE4HCsvuNIP;O(RaE+6Zm{lb zW#xFYcf)~mO66fA()NT(#OXi!9n;3SPn_x<=K4&nQed(>Gi(0}( zUg%n%U&TSDl7^YYy^gbjKp+%m_Qdo6eghBwaMs2W_+`WX(KH25FRuz;caP&UFoNvI z2dqt4xVU2lTHOaU`*dRBL=*MM>1w?4aiDVIo_N$5FVv8^9p7XNCPZRtKgfRvbX-)! zG#x@2ri?@beSJ)P{NVKT$eZA7##{RU|IF(6WNO2LD#ytN7}TWC>MSAXm3`Q=iNUf;SvBbRpgN zCFjFyuI3QXNNRTt+Qgk1>|&6+M`-cEPjQ(~XzWr@lzRgH2@Pl1C6lD8WxUb|-qP}V zN+VjHmp12~7g%*frg`2?6ydHXMxv3V!%gZ;f5-6u+DEF2eKWe>$NDQ;4opT+yFJ_2 zIDg@ZUu3y|Il)4KxZ#re?)DY+a}HH;l5o-IYq^@z|8RXQ+wREv6RcD=gb7r zY`wLmsE2t+SWU1$)q^y1_sdhl$z{c77XhjENE`m_VR3Ef-aoCFf6kLNvuyz_oS9gX zq%=QL;~HK|6?=6vM?xA0i5RD>h@~m{vCsWSEG+lr;g7-IS-Jgn&KV@KH<3xOse`OwME5iMK)2biA z`UyDG$*Gte_q`J9s(yQ%-}G0CURw%&3aPdhT41-37)_U zlNbvohMD=xrm!9C-yhfCa(Pv%5N_UR$UK@=(R|9VCdtjf+F;`?E@%l#I!P-j5^Q7W zycah3Nl95i{uPdT(PlqiBVrE>P0wq)4tD9kz4w&;z+ykiu8yAp)m)B`Q4JF6gS~52 zIICKRzbs*%>>CiURx!8qJxRPl+aL1aR82s=_dox2VeCHn01`JxV34HVBcS_y2O}_l zJFSb|)6v#yKk*ukoQvp2|6!9In6JOJ28*PYO=#{+)f7xTfnwUzc$upnd&D=QH^ zLt;JK^E>E@(&hc2&{(LgU83#AQ}E&`6%!ZUf%&q{{DQ#Amfd>^l;<$p(cdB>vi~`6 z&`11nYZlABO!KqeqqMB8&4CY4HX(PS}+Vs>F+JUjP zF1|g#E#JaQn#3^pEn@dGM>PPbtgMDW=nl4BCCT%V0Bk?kuCpz%^ZK>Ta zTt!r_4)K)&E?d@0w}yNckVFwhDdX~7q8JjE;K z_SZQxT+}sYN!gS&4d_RWOqaVp58hfhzPwRbUtb?7Iec?Q?QIG%4i9VXjlssmHMdVF zDk1&*K>t$?_=zKcHV^d1Ig#KrP#O1D%>6_u{vtd&TC#qLP0`Im$%dHAfv0886TUSl zEyT`CR!Cpf2hk_rsb&H-5@uI>EvEj@TURIwzf&nUt&*(212OKDoADdYEh5~t3{M~; zfqc#?q<>Ekp7^Pz?+|h0&&Z95ChuW0F0m{RGE(x$kv9vT68yJtqA>ru5y+@0%sxlq zWiLwJ$}h*_Hsx?qOcDg@OA{W?@#ukIlsAjG zcNzZ>2R5nk9J~L~qW2P2_AVbg({a}~%wE$~ zjN?v!>o+en53`)>YYTV@ZZCc|SsWr0aN9rn{qoY>;U*}tH)7{wPwjgUab}lAzZ3uY za@M;b?JFDw^PeM9B@RDms|MMJVRL+wy4qesV0LXS(oRrTUzC$HisLxH*tBa2)Jqh| zX8!HYvi~bakawH+U-#D=+!7wk5}pFOBPEy=x(f$wH32%SxJ|lAX_5C%I8|F=q4>68Li@wh?;sEjNoo>N>n^#qWP^8pFouSuvj>9umYr+(|$*rx7fZ0Vk zVV!R^OH&%jaFd(xQinZ@g{zQVa@=tF1FVpT7`DazCG3Cxyub1nKVy`0*Da+yllpG& zERm{b@M5rwoeW)K4Jg;E@hg;)Spj6EFVNsxu?erOvdvs_f5O6v`%%EUW{@;Hg&`MgmsS4iA`WJj8iCf82m|fTo){PsluKKQ6 zUzx6BOU`~*{8{QC#W&@^0`fh-@udo(z{)M-fqd?j(w;y#f&NnY}rMH2Gw5QdC>(01^HGmc~Pxp~YC zwZ0=_B%OL;>ARUvOSZ|o&!7*HuXr2x&*N7U2b}~wx%zHLQ7;ExMCh87lY|3qxVR11 z7ZJmf#+s{YoDGB(TBfp`+O!?Ig{`PkWUNGv?@^zwCI$=nCJF!jx2>l^WS!!!Mw-XY zH#&*7yJz6?Tfd6m1X0vKhg%tEMHBiewMP=FFa1nvR0Pt*fRjT%_zZR-FOLpbHXndq zZ)aDRFmTuuDANO{3??aQAwMXHK#rYWv$J$%j5N99tf;KakzqWcR61oj-MmuAOA=XR zffO}E1v}vu6R})ZeYI8~mbyh5=QhW8C91)I*SY74H-Kq-(;qt@H#awzHe~wa`}jP~ zb?Qa~c?e1}T)wlRu7?!maO4WrVh`scE*9!mHGY2ifHHg{+P=cwJVGwFH+>=cI(RmI zEPf$-xPh-ks21`a4)+K+x$9-Wl_^UvyJROUKehO}Ki~Sqx9Yz`RnRE4jt5~Kc1e}G zxL#URn)Gqx6!$5|&hqN*NkA#AP;;pmr zvl#f3W~-bmrw`yCmn=T}T()$Q@vSf>nQ6KCcM=5r@T9fEoSe=V#Qn-5x7i;bgn0l9 z^smxeIe{N!&x98JS_!VkEcSc)gy1=JRpxK^$+^*uaN|Od4&O~JzcW1{0Y>EpJ@Gb) z%huf8NG3T9yfYkH1_n#zR#$5MvP9MQ_xeoxy0A%WXC~~ME(X&anS0YgU3-=ya?ad& zKa4W?C?Bn~>Mtl|`8UPuFUR3iFqId7!k%1j<~JVURY;$OYl52J!0IwzV17xjtE-!` zO5m;W0lb`BKM8SbBLAMh$4_4K6Khj>q^K4*1>678|2e6 z*C1cdq1DT~$&QW(etxfM770yuE0v|d4r2`=A>XI$wH=l0f`X0HO_m%Y-&PNG577KV zLs2@ZxwsOkefgJS%?e|E)-?TSbaZsiudY1gwrYLeVr1g$N!wF8lhFrE)QoX$Bv*c^ zyur&ndx?w48YqV%mmtHP+%b2mivGq zYqf#Pt-bYkdzd_DVS*>tG+4CQ_VcH*U{As{ ztCXrZVvmS|D4?;_^E{jfUN1Y~NiYCzE?2OU2f8x;pl4KEAm9Z)M@Vl+fX zij{sVqhH?mIZ5UN*a9Yvl_|xV5I!3w@LW zug|z`KK{J;mbx*SloAYQh7fXl>2*9`RiF*`5H~C2{K6tu%Ntdn3c^yLL;ITwPLH+x zmyv9}fxYlA_)Ts4?!DgCOyBrBLA8JCtN%nhM@~Oh3+}nuee&y%-?0c0HVE#lh=Pjy zizZ~|S&1*1eg%`hct9!e7(IX*(UjWPX|7H=FSs4ylTdOaVKnMFzK$mr6qJ7=DNGpc zzM5pB4;_)Z+AgDXapL?2ZF=lXSEzzXUueq_?g6?kK)nGen|>b{gUvHSV?KWTR7OAk zXXXeH8gl8GGoe|@3MGraHS%m11hVIcN`aX>HYHDUv9qa{wtMXKEs0% z9o=#C2cREk>VRAf^be>V3f#UdV2eUzfm!RTwd_AL9a{-M5kfK5(i?&wB>f^Q<1%zB zN6Gt)%taH5wap>*FRVqULP`mS1aZEh?L^#~FEgY58DIW-X-(Mhk;~-mAM5YhKgB-W zpLT;!@cD$&$m&s_{R?ew(sc?`^$GgV#E{!WA{Q#zP~rzR%zN%m)xHpRglQa@1^^=~ z0di^zz<|15ZhT`g8_xW6Wqq{u>}|FXnZsH?beXjupfAC(3hoCYW0xEJxPY0tUjh%V zK$L5-dn&W^`Wi^KW%@*p^NLxV`|$UR6tGFhp3y9_Ou9^IA<2eI_^U+;qM7VhqGQe9 zPls^QL0vyd;%v$F1GkYxJM5v^FU*_yS%NFAPc^rN^9$G7;sy2A@Ry*=+i^nZ_rBC% z=og7rBUOT2I;qfB9VShhau){M2augHJj)<_979SG&~$%d5OaI zcrY7gANaqf2L*U7)n2}Y2mt>b`Y%D3`w6FGTGMXEg=&=)f{#+S$yKxnmqYun=lDhw z7QQ1I!CpR9Xf$t476PjU8ZeDWWg zTplR@7EBfpvmatPC+TZ<`%ESxnN~43L`qk7#5_W6w-75pfb{}t4NZU)`zqpH!e!Ju z2qTv1TcFiF(AWCcElagvtE_i(%fN7bLE)T@Lt#8Y^jiCd#dG_F*}LZ^pmZ@sLzjf* zCuhUhlqEOT`K5!1>j6A0wtm?6qo)(aH*gGR1(;yJI8amW_ zcY6);%5uR;yt%>-dKzev;ob3Y9ihIm`(67>SWZkX&-3R15F)^!T}J@TxWfDc0)Sum zKk+OXc)w`%2niW5USZV(4=xu8y4A0~WKJlP;pYcRk$o_#`y0@T12_fuDm3p;1f|jH zI!u1hh{xFb%8E9lrdW&$Mk|aIm<@GU$(B4Gwgq|{*qXPzdcKZ!vS|;CpiTw8j1tXE zz~m{X>9BB~?TUFSLiUd~@mE*EcMWx0vcKc5@XgOlel^i#_ELfgX678i4Gfc03ofIQmv0`V9s(yK(BvlB&d zf&I}e09BddMTLyV{x=KYbP5R>*-TkNT1pD)+Ju_JQ1O}Cz(&Rr;H=dI2y|C47+N9U z4o1)Wrt#_TSN*%xx}_R&xnw-dq-gHsJI1Tsx`GAu`bbaiEQsrF6Kz6#6YM0ZMq{zSmdO&EtXi7aLnN zDmZsa(4T>`YY*Y##S&@Y4!NeqZm6P#Tu#!aka3c|2<{Uy)D7fy3bs11h2HG^b$gZq z_k!M_9|TwV!R^tAcY$(-_uH~Cc{7J5HKnYyd_|Z^baG}J*DF_pk$tlg*DX8U$;Zcg z*g>W5qpMECn~~TK?X%$CV7Sb_gaWV;i8-y?x}JUx2bVDsu-TX|l11uxb;myY&@of( z0DMtz7Qp^*-(Czpy%zYL#E$t-7Jpt7LViU!lb;>nnG3zKCBh=V)P0AD2MD9CqraDI zNe_W1VdM+FaqCiLAByBNVRMc^7AxU~7s)`>8-K-_%b=EBWGN6e`w(IJIHLP_W8?q~ zXmE5N0=DaKpa2bzpY6?)SI#;UgFPpK0$!ICe0(H;{37}4RrBFW&jGN+wd$AZf?Y=E zz&VHsG?sPmKgPYGUy7}bA8Qz?h2nzC)*@f#N_@+_p>NdO7X`H`y;2@|WiyF%^;MJ6 z=2crNqh3d}2=*m^>?OO+kh%RahX$Q9fmZ%vCwm$CBVb9cCsm`OqI&Lg>pA1LmOAa( zq}}T?7d`R7}iW+WJ8m(={_;P5asaTO-FXQ zl_b;afR$_4aOIw${Dr-^3}*Q)(7-u*wSc~f3{E`>KK=tYHbq0S3=jj%@cQLjdI`3(*qByoivM|`qEwaohVS<=(0264 zLJDRR-WT|@p6AIoe1R3mQJK^&RcYQWZ#B++S>2v(eCtF-HyOBi^U`k2?3H8)N3Gr7 zWO*6`1t*t_@heHmLF>rfUV}r`KQp&5URE+VYH@ z*w74zmSKK!zyx8kx&E!Sh_e}bw-sI-9uLH?;g*q?z~XH>0)*6A;|6LoS1nYY0lwv` zt)kjZ1fQ)REF2toVff7Awzkh3E;s2NPurblPxt>dy=U*Y+^bL0&(Qp(mueX|zczJ@ z$&zl}qT-jHoZo_wAV1_f9OS^v1f#U`=i1F&W|BBXpE*LB=i?n5Q2!OFan>PztkQ(u z%11ZeHB0oCujbz=Sa82~*KtbSf=jKetXWlhOO|UAhH{FhIvOkKj9NFwCRrcwHJSjg zW5EVLr7X?46CD|boW~IfxMx3Q!TTg@fWE?mSM-c4z(8QNYy7WqNXJqky(CDMG{pj*<+MbkxX}?h$CQs5};e(TFX#*RzmXpirDVuOZXxIE0|jz1NcjEL?=58 zSJ!|4fOMe|NVU<0YWb3dXYHPZCC?8Tqe{BBD)n;I-i(_SE0v^*T|0xm72RKp-g#jf zB8@_t8Vi@-pg7hE?WFYXIMx9ave>Vf-Xr>>n;)5Igsh_Z4Itl-xBOXi|DEF_Tk<4E zJiM|W)ofg$Ehx`%RN+bVJQ>XQwfP_)C7=h(_33TsYj%8vI4LYrT{eo`H_w^)as_{4 zgeV?CT;yBbR8h)>bivXx)fz`L)E}naWB*r-^FUqBUD(5TprS8vs%@C-*zavVYU4`@ zgL{fHId)RSw^c9)PFciYTszVUs@O|Yl1s#nDwmGQ8tbQnl(4$NH5ocmpt%tm8mh~| z=|ffw@T8`{KD|ykRu5Rf`19FS4)w9LUV=6;e9CG0tY0wn#R>-O50K(C2WQY)$^e?(h+Af%7f7E`~{O7QQxlg z)hi`xzj`k$Yvqk}xCqJ6hd)cIMtf9fDVHJ@GI0gtzIf z@H~%U`0Rd*c6v4dx=SLv1s?Q{2jvz?B{pc$0n7`koTg^MSS=V2h}8H@|F4jPb*>a~ zelySwH<_vcBeDtGhM&DOxbRj^&$h{Qu+_MXx-1>y<@oWm+xG(n+@&~tUipBrXfC&3 zed1BIg)B+b^b^00k#9?YcV_8G4yCUPT&`1Fc>#8`9iZ@;O|-BwetaDjo0OERMa`_! zKmsiEKTflTz|i>t2$d9ocrkQif3H{rQ%AH&ypHWl;PCjc$5RjeVT+4YBsF+cawf5xCwY%FV+teF$<#oyvo2lIny9wF(0+qQw#9>f(Zuon5IGCO&K(>c*KyC`pM-dSRk}eSW}y z)mw7*=f`R*;+HCcx__}LGU>&JQOfJxJnHnhSwrg>?|~Ra@g9Zfdi`P{q)~g$SA;PN ziB-?F(e`)?*LP4zhjSY%S=4V8xvjljnCxMkQogbt;K@(t0Sx*gSh(w}i9f;c|A4hlTRWKep|^s`T_QgaUN>Tbr}WbJME?Nu}obOc^mQE3<5(WsP^&x}@J9_0q~W z&mMn7OH|5RlVU%t)RAO((iZu%yzLpC2;Mio&EIb)moRj$Ld!|H4dM3y#E}I=WUJzN z?<>aTA;svS);(Z1d^=W^_Gc1?vn~p?GsA6&of~_xqLcTvzY_Ec$@H?w)39Cb_E}mY zJo}=G51Ub}9RWX1$ub=-kE};9&WyujlSKIb9c1?H0 z=_kOL`2rUn3ak4$7>=^B=T-how)rOn^Ju4!Dg<$k*9Yso<)Gl+dM}tPMO^G z(!@;FH6Kff5>ZIz9o-$xiBwZliD(LoE#1r4tD7~R!hS`M&Kb{GL(EK4n+ z(a6a~Ev=@es^|^gNvZR*u$^jJ)KGt4MaofMMrD08%xTi|{;s{0`Nin_AKw#X&0gB(r@TxHVYBbKoX*k2Z?77CfFb6ALmu5bG)RJl zQw|pY*VdaE7Pf93c%OQZ*?i=nuVnWF81-jUh09KyPtGlB1i7s~zNTmFxxKlP$^XaZ z^Pg*G=A~cxS4W0lXRyxN)4~4IuUr>&%o0}{I%@lj-@BH*@S5{K*LqiqvKr)c?thSWt&m5602&fnPDw|+Zdo%0*D#g+4de+>8tuc7F%%Li^oHFr@ zAX!`hLhK`m7P=lNvG-m)q}XDso?Dv`;gfum?sHm+o`C@gJ3E${S>n&TJ0KVDZs_$N z3%5bS5c}sa16;=wlyx+B64|hh?7&p6glOMR#ssWdjovehMXsdOol-Yr3eT6VEalP+ z;=vJtwbZ{F@qmXC54Btp<{WRH`px}j3!89yomB9{tC-R&N22e;-&yqbz9Hd7=t{4= zTt>R~yt-N6-VGI?)OIyjV6Nf{b^D-7J17hfz{=S(xg;#ma+D9$ClNIcNj#UJQKGmB z=u#Z!^|L&8-WWzeM@KJg4xIQKH3L1c ze(3Zc(sUwczZL24O))5@@`tJYQfbMmD~S)D6Az$v;S1UPlEL!5?CIB9cfH>qib`-t zno8u-sgc3PMI3v9d0?Qt2KZ8mfi!+-_!*P71q+jnh%y1}Eo;soieK5r%lgl%7q~%m z(yQ{|Yhy4L)(T$G@_WHz3vk0t=xY^XZ&)c!ayMh(UwKf^P$Qjn%!GBxyEOL)rGB>1 zvlGk5GL42Q*+!^$JZ;SAGr1jvqb+#0CeSQ{$tl#on+oo+L zl3LfoBEQ@KC`@+1egd6j>Hy250{}kkk)EDjcU_acdS-b!Tb9f<@FDBBhvE*JSD*|- zp}nSq>5*_hd9(gVKAITuo)biLJ{xF_>JnUhEf1Ob@%d-T-D4rE9R7Km(r<|K11N!X zR4^`%y8(ptPxW+ldl?(x($XLgQB~PtQc_aFp+smVrlL7|(6R6%A+0m)dIa2wIH02q zw-NMMqm%2THR}2@$bKvRg2*O_cX@=g;VzF7yH!M;T9V>z!8B z2PfpUk^b~Gm8V#z4n^%5I`5B#W_qpnHaxuWXU+>c&_ z*&R%(ofoR3$hb=t#t@2`uThs`+w!eiJDxbTcbW>$j0l2qNnJs6NFE`cStoLGQuTVm z=LY}#_wSoVC1quAzZ=#Ae{M--WpO1F=lxb>AN2=KR|JbUUSX)*`0~-7xFQoN{wmH! zg#pCvz2Xvk+u`MQ(F8;|0k>4=9&ZMC+hZj-DmFn{rJnCQ25GWqD}Huf3s&9$C>$D~ zU8~l+I~Br|y!JT(dqn6QD2$Aae}j@Y*b>PFyt|5;gPK3(o55@Z!|t`&Z^H*iS(?ju z7V_%q?*;BW2|s}DFLP;UGW4M#fdYt`+ zX%c2)$Ulqu9(G($H|wN^@&6{<_6yb4daju1nf8bsUH*1ZTbm{Dh&*S#6`E8 zmr*qshA0JNs5xUN-`>SIkaa~jgIOcLX5A)$2`_Qn7#^qZp#K|#0KMRZh;eg9iS~<0 z*X+0`@uz5TZGV*cMMOOGZm{AAvbugMYGUH>3^`orI`iE=3R+W$F7wO_3d}FwyQ@2z zAXo8bq*%L3<#YRfcz%M{V9o@akyut(RaI4u-m%2?Qs_2K0l24f5IUkiI1yI|= zNo~iU2F7up-}ENL#XXykF7V(Wn|+)_T85{87Si<(zx|5V^X%ynG_7 z5ekRpq;FeW+iH~{+5PGFDp?BdS_1NGTe6P!&iR&M^U0~aFOT?Bc0_w9IQbBfMV?R| z4xV+BtyI1Nd$%w$8jE=^-?_AWNb?@FZJ6I;s|J1Q85GzH)H+a5YS?X}`^eVJ*O2?I zUWzRg)&~4=GY0>8Cgbe8U?SUdHB!IQS1f3tq%?NITs?yZd8gDaNmmzc&vJRDFV9+p zm(?n}L*d^*w=8ziY^H$5^s)|uxrpU2uN5q0P_k$u|Dq1ViS(s& z6{}NCUcRh^rjJ)}PI9$RKD_Un6s|9tF)3%9tgPQ(O*{o)cbNT^o`mFba{BxBkQ3At zslJX)D`c+Jlqi3N!u6coml5Z0zl;ehQGY@tBGx2f!A(OT9K;~-lZ|MwrD`%FR<=T>oTDt}y}N8}JMlc6J_e+we;FAazFX z+QVlu9Ik2I&Xkp>2q`PaAKtXJwq~rzcE1poeQ!p0colJ-);i1w@%Xq@!e~ZrFYS}Sg zXQK=B_xIa6I9S}qlpj#nR8_I{kb-Z|a+CCFBL#cxh46jZsv z)=MVTEUo3AuQnN_NHdG7#ldno(@hFJ)L>BxYnG!XYDJt39jZ6iAU0%B4HTZeY0J?e zKlk8i9eLMyUU%W*CjlY@*mv0u#PaA*pUfMK2!);__^vp<0@K7DE$>hdfRykuV<>UU z&hK9BQpF7$V0vdQGxOf2->N<98fR!zsabw0ov&N$a*c?16kl^IhC2xw2yeiI=Q@T~e+b{2%&s zncBk91j9}gDLY(Z(j#qZwH2s2g?4`SOc`b)+0TLj28JClVV>|P5Nz>}0SpPW7S4){ ziNSs%o1*%^az+N!PNBVxSkHnO!!PNXDCj@v4oa{{*_8&vVpYWDB~JZ0LXQVn zF}Dqig$F2@Uy~9AEk@tQWAs)4X<7_+>R<}zTB}4CcA0h_?E6>%bIZj_J|JO(YG*ty zy9Jh4pz4ov^S4l1{ujPW7}g*HYd&>8Xyr=f_pdU+h1aqWy1X7yUZ7hYXnx7ZVbm4M z4vIg5;hmZ`P~C^=-QdN3LH%?wa(@x+mLsPZ#Y(=3j@p-|4TR&I%!ZFKiOlNdlCLb- z0W`L=YuP9lt1*tp?l(MuL=>@w8%@){bpxaPSa^8G?p^o!km=Eo6(#oqL03YFNA|Y2 z=CD$9PTjORaq9=$%ck_=S447IFG8c=Bj&WP>%<{J9=P&mNTfeaOB+PhOXZ%Ir_NQ2 zfQ0&z+|aL`#H|3q@F#FO#K|Lehw|JKv6*5ncP;>>f;OqlaJ(Q(I$>NsIseamQV3QW z!n$%a{g$|t-wcCkB`fs8%OZB~HxJe}`{=q@vdX*bLkJDAa@-dbfTHo#YQKhnXP=ZH5Ho$lEy6{Bv z{>;NDvz)5(y8&mKMMZM~h40;RdF(xDJKO{BCE7r}*^FPFXpvLl4@_XePjud-c)ka?f$85#PS)n}Rb`1sK1)`4#UaZ7#r z^VYreFB;)H3Vo^dJPpaKUU7BVB&6Nx5H@8FOgJCP>1wH{HFK83N~zux`mzJps!0Pm zPQh#ImpEy4-#Eb#%SCYTnfF@=YgrtF{oFj5PJ2Qs9SIY^0z@a7>8Q9r-{)X7!s!$8 zCJj4sgVw3SD#gT5^9Xe-dj|gr*DpThKXa`BipwV zJ>qysr=rg0Sb$j_GTDZYiRlZ7FK7dTcYIKCU#}G~2nB)~G%zUWtH;@Hx543Zm#u?A z4R;Ljf9W8gFd8I)txs%qxvPHNrqkQr6~;aIrsRDA@PvK%7vwbE4W7v)LHA@FKIIL*!wnve!Q?J8 z<|lgyZ}tuBbV=IR()^%g$qUWL3L+wf{$&KXB)`}E=O_gdUt~Yvspe)Ic(+fBv)%*& zJ<0CbwY4>BuqHxSIN~mA7_5kl_3}8`9P>kP+xjzGH&vy`U?bjZD{N~nH~4y!9PGid zLP7NfO=kdA+#UZR8r6bE7Ix|j3sIpe@!lPJFj(aptm|HkOh782nHjPgEAf!NOx)v9 zi4=_Lw-G(iJPsWx(QBpfc**$#D9Pvm78PJA`X-g9qO`V@?9bT46WdhUQ|;=qWTx3m z=jWwN^yK!K*)?vN7P0k5K~oe)9Xv4x^JHjrlae~IE0+Z(;kMtafS1qthII%jXTCJK zmf@6q^hKMS4*7Bd=!MW_9-ufNa>@oP`Sd{(K}rkJmssql)E~c)vLl+XN z2Nm2?tigLz{b5NME^bi&ZNA=v6W~RQNA2wGTiV`ZZxs$i{P81k)VQw`D0tz2AC4X>wJeG}SWEjt>`Lz*4z~*1P>8sd+x~JfPJ> z8NPrOaxQK~Pft%t{=M^9?Y`@xi5Y@Gqke6%#!VvdIV^VjB^vi3BckTymGrx<1W}mo zAytIN{)Q0r)0R<6O0bOJ*9m(Sa5J&RG=ZQM0!RRc#>V=fhyEd{F#C0qe?bAm3K}~* zJJ)~0RwRh1w7+D&dH+A+mJkw-a{R)LNPg+sZ&*XTY=hBAJ~VE1>mhNP2AkS-b|mzW zCekmhEZpuSo~iYW<111qjyQhF=rA^uC9s5qgpG%EjEwA!+GWNMHMO+*inr83n?*`Q zwYZVPQjmwIrYP?pfW?1$T2DVDY6q?mzoA?-XK|dWPOPzEha4#|@LZF4Jy6*5glY9a zNY_ck5Epd{%D9p7IjMAIDgs?97|>Gk1RlC>$%XIVS%G9hj}a5m8;(m%Y~gO^O$OF) zLCH2p7XRu=2<84j+apu;s~UBUH8x)GyECL(H?I);BoZ)ddtL-1>KxgW*;$&1#s4b& z(&%b}3QxtE)-U;1g<_4{9sFxsq8@B0BY`d^wS{iAj1r?-2q`MT56o&4S z?oN?zC6!Vnq`PAPK}tfUB!&j*?s(7fc^<|0`__7Y+-u#x9Il!3I``hkK7wA*WV9RI zWpfcTu|Pw;1WdjJ;j^f-Ow(| zw@B_Xen;N<(u`Nrzn=G>E1{+J;#AXCxiR_h4rBfD6?h-2#Fu-R8s?qd6)rWTk$PG+ zdJ4D;#d@>3$WY+3L}M!H4s2k)x|LS60pi6gb3tmnn_gpqHH=v!6uWE5yW{R`6rMT6 zWDe$}TYUS-KS+?|J-7T$wrXUR7f8eO^@MhYHmC77*1wV1zZ+8se9V0N-%1nk@#DRv z_;>FjhlZ40wrBJ_6*7eG*x4!c%$UP0_4)o@TVj=1i;$%G%S-0Zx~&#*>Pg|k-C3Ox~XJlC1ma!K+;1=D<#<@2(IZ4&r;5AqOi4*<6vF3Rq=mr8wZm&+(vM>IXp8lTY zEH!5pG>}N_eQ{oN{u)Y7GTF;TI#4L8s$2NQ$Y4XUjcl(Z`Wfx0Yko2_Fw+{?Z`8j= zqSDIJLV^NM{}f*Pj0sLb!AVL4V7o(N>c#wjZ4VrgL=F1CT-)#kR=zlO=z01@@|I|@ zyOw@&It~-h(ZRcyuk^Erxx10o(1H#3W^a#Mr|cDwkU*57a!3N{xPZY4i4g%w@#7N{ zJZB1EeCYt8ckp10PilFOy+k!`!oXtQ_~Xf5D5W;%_8*hYJLn4uDq9`~xCge3Zr+jN zb|2Fd;o}@4L}Y7`>s>*;+zw5*U1;?m6JUfWXHj82l1DhH6)7nxi35slBke-i+78d( z-x>jx1&a)Tfv>70ipJe=!zVh!>O6>!DfMnei$knK31r=EC`Cxs?+SC!{=mXwkjjRX z{a#WaVroKwkOBb&UWGcn24u_!t^s~vVWq6C9RYmSq7V(&Tb>CC{QV#?X2Kzg!;|E0 zm&43T7=7`Rk3J%55j{GQ?}x_*PIcF;g1#Q3ez@08;VTrx(F$XU+H})lZlu@8Mb%CY zP)C9)Dk?7HL-*XkmF>9LjX&k4v*{lPA{4qn@o)eE5g*{8fAXP_8xd~cTo4RVMDr!4 z#Wv@0J91W{Bggneid(pA3wcM_qqI=%acnd-bMQ40`ia()whN4jZboz>JKjfSbm&7d z71Ro<)F${n|T~Vtv2L-h8|R4Pu1ih(BmcQG(|1m_TEUl^D9@hB@Oc87eQs`MQ;3JQ7h^5)>HN#Kp(&7IyUEH|16Ul(;)e6Nk81BNCJ$v6@t~ z@R%4oOH#X=zPMtIx9e0r)bE_0tF4KfCN4n@pWmg2s#N*+Sy%fX0j8j+_OFm^rDx%43=oy_)pmNh&MuY5y8RW# zS4YNwq0nO0EV=i;Gzw&6l4)#&hY(4>8HXH+Xg^ z<;h?HHf~)sGD2;$_JuwWPnBXlC=;S#D$+XG8a?0A%dL3*srco~mn_=d_-%M1C$#2+ z8PTm5OYA4-urN59t>B;%szj?3}6wMnPe;ayYcKI9faE z3RP+qQWZGz;Z6|&6{GF$0#$4~W3HOxu|wPJK!%5(7Y&NL6h??@CN^WCc@7bl{LAqYiis{sy z5XK<_IO>!s;ELJV+1Yzos#{+%FuQ%o%Sh1%Z_0u3j^lFwoo<&QYy<=L&t|{N&+nrh zctq>K$4O!DbIAQ#Y6p_X%?NJcR*PnFl$V|E#yXq`nk?-yQbE&tk9LmH#S9r3u(!5C zcY`Dh8OS?8Qwl96M90PL0t@bb(zx_=TU>-ekg{`ib+v5!@2ewA@`SY^qMD&a`eK9- z?pDNTqy9KwWlW6ToN;92Idgi}k`PqR(N(&xQMBujEGSq~T0^TkmwtbD=AnZc{NW6m zJXGo#@$m4#uCi*F)RNxI6Hb7XLpTBQg6Nr8;(yNYPgGOo=4 zEsct?QZtcB|Fme94ElX6n&hk2*vgaR z?bB^I(@m1Q%B|-Pkk9!r>KO2zfyFg^$D$_IM|X|LTb=UFtml#TKkdCG9?~7uCC#hN zr)f&;5>6U-3Jxm*3nilGwAn4H3uF$wlEi1p&E7?iFVD?K;Wu9Ze&TIKH;vPuGt`!z zctmweNdK)x#vq;cKecGmwz>qqN*}L!LAV9NiVlDTX4DPdSN^@+bV!FHPW|3smCU+~ z@>4z|oiMI818a|9#gAS|os3uA@y%SsRr)!EeKp1<2L4mjj|ukA2E_tWj*|gG4PfcQ ziw940KflfaMHdjMEPK;rzQoc%jy8df=w5&8pU;5<1xctSi%Ij*t_+ULav~AE)%i)1 zfo201r*TS7b)|bnLg5@`m?CU3bG*^_8iC?`d1Ifggr}0ZjX_?jOw4R>jbM&&bEqNqDahGmBdzTLSX1 zLg$n85i`a3q*d0)i}xfGr7i$&Qv5|`8$?^nmNMavNxi|1gG+v1<1yJ}j#(v#2sRxi zCMJLp$yGcJ%+CXXD`36~um9E*Kj_URKTU#iFSFTkbJ``cEJjK-UfgbVyEj{eewCC6 z>6q@JX2M4)`4KKMh!%gLRs2%B|C~7pI*-A$+wi6k`9Wm8UuNd0?8J=rcJvsaJY3Kz ztEdEmuFDv-;me6Y$*{A#%h{TQ)zj0nJSOPAB?adFa@)zr0RKuIbN&ajw|yqo_44YZ z!=PO7l(zSCm;rxzX>rP)+Q9MpT~)zJtBqN!6(ow?ypIi(UMjHR8ALtdmyQOdPgACk zXDE6ZCr8sfnu#o*2Ij6<+I=2DMMX6N4=VQ+6b>?AgA}BgSLm+9zp@QZ)?JDLH#fHw z4kL-?!+KEI{~oPkbuk8+Q|i{VP}VQs9JuNc%o4pgUyqTH>+npaZ93R0+XH-K$C?N^ zz*_2HOuYY+V)a*)*?#D3EVnV)g>A7tTWKT`2@2fW*?DKIuMZ1|A=9`pPioZxUG9Ys zpd`UP*(-jnjTCxZ?0)griT<~mnWGfAjA)*0W|s3f@?tVaWbv*_U5wFI7^r9WY6gGk zRV9-;vxwG438d1Swc3tCh#erK{DH?FeFZ3b?gBxrw#(DY!8P|03!@N{5K5bm$d5KA zkU@I_7sUkOi71oT%+1ZkJ^ZjF^z_%SUvW4yZ~-e=rSRspdILei1abrGCDE?-joYao zi9rhLzBKy%Nnfd$bPleWIvQtHEt(hp#z-U)1efmi#@1rM{2tTry4FDi39P$0eG`9X zf{J}wR7|KbHMSEK;ADqbAboEhUijD^2?&tu)Yt@W5ZQkEe^tKCcGnv}4UuIv(&>`) z3E!34hEk+#;*(<*ZrzFeM{;6gjH<#E(R3q~4cZ@rM%yOZo<^a$1^QbUygGelsC|G^ zCs=VgX$8~O*L+6`C;%QHML=$CMV7|*`N0+kqcdV(eGEC%!k5@DnO6sSAq9^Am>g)Q zLo-JyKOYhP$}cJjG4K<}rM@z-p+37^(bNF#Q5yNexy%nTo?98UN-J+;VCO+A{94^N0IM8*U`w4d>Tx`c2pC#wHACI4;vaa zcNawPbnzyQNd?NF>w+TqX=!dQ5ExiJHjcGcxA~lA=|1C`wI+-!Xp#6BK$7j>xntlc$kR&$AmJ%$5o|)Q zDCzA174VV4yl=!E@V)P)2BMTAK4f5h4lf}9Uyn~uFa8*Ui-jdACG~0#t^)w; zSB1vi)SIuqtpsgl7Nx(=IXCVD(`*@?;P5ZJAMAVa_p2KtyLLYZT}N)qh~iR2qaA^Z zw=oj!F1RV%F??^|S+y(agP-zE3=qauk>A<6nM>k+Y<+zN#6NEvnAdMsyQ!=rSgFvUgC+_&q6mvJ+DQri(3W`>a_0lY_F+ zC6SWpD}jzL1H{=9q4QtE{e$K1TcDZ)HL7KBE5wwQZv#8VND%uow-75T;L{Qob>?eKBJ*ITnle_Ju|&1lZLII-!U z95Aw(5lgD6M4T_QN_n__=q%(T5kQ$V&Xusu6Hh6nxH?nz_h{revBr;Neh7X&eeX>k zxVMCMF-ar|Yx^x4p8!Bd)WtySBN_%x;S(jLFC&GJUGN1kZNlEZwWfcd?|Y~&CA~{( zVtXMQko=bw`7<5b#=LvtPhlXXVs@9Z7boS)_b#1k0qcx~kAbWW)h40^uX}$?YM|^b zQFK`y@894Qk>wr4LbL$jt;h-djR9YK#G4oNf^peF$t+qgf#T8_q^&r(xD>h5{6ixY zlgG3X_CoDz6^&-*H`^g@&ddux^_ymnu+n>}Xd6j$rt~GX1lh>CQ0ABx&*x~vvW|a5 zn7nLM9Nyzusv&_Ob!Ami(X-WT4l?XsT`1hbKIoXk@51Bamy*9#88!2b+gLg4K5C1= zsqoCyxd^88POZEb@z!|_I(1H$c5)UWe(rWx!-A{=s>d<| z`0$8<16bB}*ZcS%H^Sxs_y2Il5MFR%{V$NYEe48essACofd?$W897;8)du}8@*a4` z>vFEC%1V@)YLiyRowBx{-oo(+~&f4MQAnJhTM!~KxE^XTnWavM>DeP>}eG2Xor9i*S zvpHa-`9w~x9e`%Q>mzJq!{$DZ3y3TOinoL>KyExc3r*PB+|LVe|4Rn`nJeb$iaHuL zyX}rK8JC^xH z{?^K@Vyv{jmH;LHD{|S=3>oP);(o1U)K*=+;z^Lms7J3?Zl90!h;C^=AL{4f{mpvE z&8bv98Gbf&n89;60NFaoUr!M9UN5dC$G&=t4h&^D03*R>yiEMpLtAYa!628VFCg^WVB!#j=?e{Len7lCizlBX%MLL2Jt zfu*jr_$Lx0={qDrtxIkLC+6Lfb@MPPYTTNX$1F&Z7N4sQ?(h5DxUT>6zkv_10FB+p z*$%5kxDoZKXR@-kUQAdNQ)C;=NtS2y*{+yV7&7G}+!Pvbnk%1k?q?zl?qGV*mI2_- zEFps;BZPhBGCC^C=39C#<0S289Hr=@s0h|>LCNOmPN=YCJd#Lxv4-mi`6b&+X z9lB350Ws9iwF%bZ0YFPmP`+R#%QrM2fjak;HMFAbadQn z9mCF($;2u~55hqh9mk-O3sEa}{shh@7OA!HiO$mZH>n7}ssawjdmWU9%RG)Ua|GT& z#T9G&@W7;6n4b>6EU0RWY0vf=!0Hw2PPZTMTyU6cM{PRzCLi5`>xqYh>QCXzaTB_? z#1HHUuh*>K=PFs&_@H1~`6&>y#){bHbEORm4H*ZjpC{xtBU0NJx)2k{1`*gC8XM;G zCJ71M_S;fqbxIe)08K*!>S&2xWM?EPJrB=_&wF4yw2V-e#`fa!>`)U(!}NW2rOku6 zm~XPlvT{%cmLJSU>ut~5xY5Z~-M<}PmZdTo;Z~-}k-z(WToJwd2iUst#2h$x#kzZi zy@;X2Umy(eSM($X6RP%_swXw3@+=x^5dlI>czx0l8{qi?v6dXuQkOmqzGW|H23D^d zY`nTkxjudXeNVUq@Ov~vhQ~YvasAo5#}D^!+XIXjxPhorNApjBKR(gQ31t@;Vdq@5 z4}J4<61?H;0WBu=SQ51;yY@kJL8DjBetjK2TWWbSIu6a}l2H8lo*;UTHG8>(eV^`i zBc51YGWP>q+_ovsX(Nm5mP6h)W^kJAK8ZOwaRDB05P$%^O6l+4M|E=9d3|5r;b2t- zzM_wbi80C?Kus5DxQ6v#}sgCI(H z(piq3JW7CBM^i(CHioh&u+)VsTOw2V96vY-gG8k+kjVIs5@BmbuOD?~?)?7THd5H+Vs8(07>TzHoq&JViF#5(;%@hgS~3G2`9(qS%x)Qm?oA^2@G zDGW%hm+ijVuxGmw@U(uF#HhDWz1@KUpGCNcBNN{H1pwD1N1^;kd&e*sHKn zto5i=xEOCQNSw`G=^xY8$h$Zj5X6GuLQTNwk|YKbOoFHLk}I5w2!}V)6q;J-R_4-0 z{aaL}W1ck?%#3c9WdjfwrAt7O+uh+rqd!c>yzrAtbD1!qV z4^8FO?i=(gjj+*Tm8b*aV%^jox%+QK`c&yn+K2k?mroDK1UvYEEcmjU15d=-0QEj#o&9H4O1Y8w=kOoCAg%YShtW4@=te@it^ft&15t= z)>wX?ZBd;_oE>eu=ZSr^$Ld{UUgLw(8Oz(7#*Py4sC^n$5gpAzj_$F7I|jAF9kce_ z&3HoCpe=_w{iwWCG7GlK&s7ZoyB*FIkkc*%qR5n$u0$FZrsq#pG?*Z044 zeH9#>s;|9ynh4QXSvG&&T(QoSTMx{Keb)tR(SjAl%A|+!?Lwrh&wh67E7UL4wqzMwI zks$}=qsO%eXP!=QECjv#=wsR#Bnh~HQ!qnHY|5s2Er)2$OdT>sd=vV$xU5G3MObI> z*{wN5$0vuQAdedWm1_I<%)PZ6oRk3 zLXDkDcT)(taolR$HoIQ(N(9E-Gpt4^!*=ugLovwVt@T^;9maR;q6teV>8_3ivIb1&H9Wo>X~Wz3n#h%2lj8wXa~ z;PSJ}>ooNtOg5?JuHjjK!nKllXzA#A#xED16Vox&i|vfa?uUg0hz1i2T4=tu(m{|% zugumVXaSuUvT{M1D6gnCH-Vb$R_ye5WMQPm1M0m-$mN8s)O`|WtP~NN(`x}{N#6ar zrE^!`_{`J->(;;qKiA?V*cPO)omDqJE-s*eY1fmk7X+$~tX|*hew@2;uNnAeq*Oea zZl9d}bYo2YnHpfZX*{@u>|uY+^pQv}Q2(P(l0masfyHUD?!8t5>5D7n5|x+GfS_V} zx+aO;&$FInu>Baf2kn#Z#l8^0WhY!QRDvX2U-tly8GwKWKhEWC01q$c%RV@_Q~3r6 zn&-B!Ta~q2eE56&`sS9Fg5jI%wFIt_duD!s^Dwv0Yjz+I1hfvbL($?!F~I zNfbvFulX}0U}LfCn*b_iZ$bG+qg2{6W*NsETpr`s2K?={GB2(oa?3s5AJl^r4&|b+ z(nfhHDab!RhkvzG^L_t1xOk^H5f;1@lw*qtfNkEjc4j82f+G!WQ*&mm#irKy`1ofH za{Ne|XaVoImXzNpLVIsCTU4rIX#Ps3X`M;0sKBZPGiWvJ#nujs)DJoW7D257(`?O; zt*--(c)jtY&ZG@@^DTxMvR=Tf1@Cd$zeOt6g<2sR-a)A@FBcaRLl8ON;1&XQ4tx%? z0bI55lp}Bd!^$v|DxxG7^xQM8tFNynFFA(!(=@tms+O#PLBu4xbn`4@61azb2050% z^$9(P^aSuu6HenmHxdbN)Bqtani^xu%FyHPpFcbc2lJj;QuwSrlIlK_GONsXuUM(g zPA_^H*I}t8W#9F49^=JkG8~q3sXiQ|s{u_eZp;}rT-%)z&mJ(3$)l$TO!g?YKKqIQ zWHkl4A1W)I<#m|`Z_rJL5K$tSA{~YHv5)T4be*O}%AG?@teHVbK?f~)ha4I;=R5?> z-)wSRM#!7b!%(4CHWaKPjgQ6Sx0XdSJax+h1H zowhnQg{S?`!95bfbR>H@4X6Tu&uX zd7H&&r+)wTEx~Q)@E8KygSS&(K|57YN?v=@QzuIWNmO?{ygB)ZzMcH>(?e9kY;M$Moke#I!j$|taZ}5H3j~?#N z^w!%CW{TpacGa;G-Kp{gu=&^hD>ltCg#DF4`)@fwR)w>t0*T*85Z!?y%h77akRAy{*&w0*i?Gn5Pa=!0G%Yvxcb`w-4k$Rj#$S%mwIoIYW{Pq2@Cx=$2&qVY zN=&dRtb$2c|7xCNe!%QQokVP4xOeM)qPIyGjHj|Qv(QwF-%RO330SHUD6a0F zE$;WbUunpyRe@5dQEc@i$8NfT7=-Vrtbv4OMy{J`(tOFRpIIH>nz!k<_U;lrC;l*a zrArjdm;D1K{_CWOK#i)0whS9>-RuBDq*Ki*z<)klj~{Ddp4l^|v1boT<}~^bD$k~H zorH%m&&dQ8@Tm==GPkrY}woowg z&YtWpj8~XNdiLI}-vr^fp`YHA`F#Bc-S5II3cn`brqsS$p`X~!T#9+@uNJ0=O4pdk zxD_lAHJK9ltTIRnK@-_R&|*B?f?XC58#khJL2|i$c(kQF&sZ27f@ln|i54>cj1HLH zbo~5x;QmXA%nIx_0 zE(7H+5lpZK6!7Mse?Qj-P=u&9m_bS%pcg(87gKcI2Y&(+ec)08!tU;FZ--0R%a=&N z)bp+W+f1-pHn3<( zLk)a%K(fzQzZMGNtc~DH;I6>jW*{mm>I2L}d4b!&*xi-OH`y6WQ_W6_b1)LH4+RS5 z#1W9Rb+KvQazhzkhZyL@3EO_TBH_C3Z&h53XTFMW+Lq_VBtVaW3K z*7i%$XB#n&zL)m1MN@G77a;tCC3j~q7U>RfN#o@!El)ewM2q6J{rSUi+F$_s4PgLWH;n$~@7YKc0@HK1dkLhVDHa529u_O{xIrGyp^Z4jZ;6nK@558(uQCCO( zzB&cV7#kfW0VyuaBS3T11!n0vfQkbAFlDTddJ5)$Exg!055$r3sq*6k1Bw%Dv8^@} zTxL>Ly2s-tv8l%kH=u85G{!16&xyyRR$7ZHdT0cJg6IkV%RMy~>J8=N$@0cQk2-+~ z6B`>+mL_hbBdg~BV28?CpO6p{5l?`yIiY3)IKssxBzzQda&}H+(VA{_5B2#Elhp2+ zu+Yubk&8oM`qT5>6;^*~z_`)v!%nF$M{oNzLZW_z=hW3ADEJ;C#@Hnj^|>srtxQGB zOd+dt-xN~z3w$}tl9!wI{@m<3+Ht?$ z^V*CX&baK%io?Tc07Yg!Pl~O044(#7k^HqmHn4LwImX^eG{gUWo zm-0<+a5@7iNWkN!RNzg1OOV3OD$8#`Tr^&9wq;tgnS3DXW%aR`)age9uu?50?vp~XBv4nXv-Y*ag+sA2^_Td z_6HZhf==Se6Lff|^D#G!3<+~BPepB7ZK)6r#asTC?Sq#Ac&#ewM>xB_z z2Ucjav#^aq{h>RA@3Oi|R|H>=CD4;Mt%nRqhBva)2{g`?I}WFC)mh8yvkd|axXJ{P zzgihEAn=KZUIB)x@!7#Ih4rZznEed-4IC4(c{rds8E>|OK9jDQ54i&`(YSv`HQ$=o zKYr6BvNYE#Yv>Dg;0M-=vGPbxE*E8a1Fk`U3sfP&pKwX2j;m80^cCs*ExzY=Cj@2@ z>u0^QZ9#Wwf`fzQZjTQS;{*SIp|JYpKe?4~%tv>2HrS?V_web*WnyIFr4$!aR=RJB zIzqFlS(-Kx>4@Wkv|K}k%$d}vH14whS)gP=qtUzFmVgUY;uoOx24l!cztK(OT`_L- zk3=8m_7~P2=oTKSa^$sk2fTD>Axr6KAPy6S zO>F9`?CFpWnJBC+YQTuU{7%Lo`m5@k=XA8Da z36N^F+}$BSgv~Wy>>Sb4Ta7IImH~df3(Wb#)R7jY9QY#@7#v zs3W78z*?|3~hD0K} zG=0B*T$)u?#G6hSN`1tH^WcawsFvX}Issmv07B29X1L4n-<)2!V@Fm!3KtgB&T`1Y zxF;7?;)o0i(MRL8cy?B5k*}>3ZZn)T8R?e}O6>j$)RZAx#xwu1PaY*8<1|K*kd%xE z_7NcRejZ5vH3yR+%!cy3DpPO zcHA7=BHb?#zk5xal(RvA#{!iSoPn7OUGorq(q!_dGc?2rY_{Oq9kf@XdzeQ=tj*b= zkR#LJ4xz-M2|-N8O;LJyE>5$-PtJh$tSf*zozqu}Oy(Gu!+zy=C9uZmHvCnh*9f=F z0ZX=Qfb(mDc)SqoJ1;>)+%`EmshwxH=h%9>Owj~Fy?Xrs|7LZplm<-lw39mwifK^6 z?WQ2$4LX~XtZ#Kt4lZU2Al*DOyy5T)qyYYk_Fb}}*TGfuHe^-@`S|`^0+Vx=qNLa- z_5CcsFXmQA!yJ^1#>Ht*yv~5^%5Tj0gx{TOZ0`5p2yTT*V@#GS#v9OE6$gB62SioaggOI8pid#d`d$_ABj$tEvvD>g2akwpo5x!URR zb`*k_{AaNkP$a;2xFExxxlQf#4A@z7!%7<)1$A|G`%76_;X`>Go;6A8-YLjuR8!>i zKC*#3&nOpmzH+>VJhuJ$3XI&wAP$g>$0}iu!?tky6u=|B=KL>D3QJpF%H>pO>e*S` zxKPSicFtP-jaL$p^B-x1xs_gsxUx=HUU)~Qz-pZ}cp6NfX9KqJ*EhZ@WE8I^FSB=) zTVIe7{h+ZL*7}{X2t9;vCTgpRG{=G*Zje7_M=_tTVtY7#z5DsT>H9ie2Bek`r_4y0 zJO$+W)>4w1LKK}-GV7uJZ6C9(%j>Uw8J+jVvyus~geqx_C3FTY8+Dj_DnZ-NdRJLX zD;&I~W1dX>><*I7$bBkRqijIVonKNClD2+a{)PHneFu`^4F(pVu*Sos5s3mb;bVS; zsb+6?4-XH`^T!@Oe~#u*35ru+#~rX}F{!M) zqTf-AS)C}Rw}@$IGT#Xp$VbH_eo8lse^_8^%X-ZuX1@O#akej+o%hTSaBmVDz^r6> zAadh8Ga^tndXcxnu1G(U=5^4@Ui5aCt{$-5+Ajc#2*1HcrL9G{e!9=n~TsE~<=$;(HTa!qni37v1zIm<_pmSIgCp)3saMOket02qW zh?YU1)1^FMz6x6$l-q%L-sd(BcOAg3S!I>EXlZmnnWEbG@0KP2$s7?R37FyPPT)82 zBt!H)Q2~K7M4w%7Op{GZORE>nQz@Di5R2s0)ey!FIet@S&QH#WzDEmFum1rY0%K^) zmdD3DcLt4JP|4I80dvdk+jn-ry?Gg zXy=cH7xd7K#m4e=bZ%$haz&=Zx63 z6tJ3s<&l}+Vi#qs>)%S}O`87=GPlGkU(WLaPp(j2O4eecT8s5(JsoCI(x!g7govrK zrb}27`wuIemqG#y@mF~Bb64D-1%CI9z-Z_`!jy)pAy0n?`HeYgl<3LVhhHKysU?if zG31!4dVN~uTd5!hWLCf_ZZN+!|N~0`=dax=Kxt^YY^2Bh6Uiw@T0hk?+l?3KY)w-ZU2J zJb(VfN-+7+vi?tPs?&PL$PG$*|G}PbTu3tfy}Q>D7uSfQ&I;tL`z-!jg#`txcG6o1 z^DIr2wb{*fT zL}8icKK=@s{D6>jQDiSO7J_T$lzhm<#FQ|Y9&+@{a?-4^h(7|pPSZ=cknQ+q9B)9W zp?ua!v93f{n~&rbWHa6Sc8t80>jyKW2Y1N0fqr;*g7IgYRUO~BiBtl+eunUEk&-0Y z@)1{&68M%F6wFGC!MAvVz}a};Nk`k``trCOs5F*d!}G!0zkV%NNw$A`4bh+mlW7JB zs+5wF3R7XS(rs|TfN!b}PJt5<5NCa#eKLD+a3FJyw0Z{B%w|hUd@CKW^|jqY@>cy- zat^Nx!j_99l1uB|8uQ8UO#ZJj6RXHQv>ekEUq?Phcz=(bz3gC)SINNhjZS$jnYsdb z&_K|pKfKeNbfx9une?5uhd%OgnGA}5&{WXw(dzvj2d4$^@Ar1QAi!T|q4;g%15sy| zNV()?Mo<%YzXb1+-8gldYGRK|uDquQPmYwCBA8u1j8*Px+v}vx$Q`+nSew?9U?w?V zN9YgMSe=HV#wI)e*Z<+Z1l ziJ_cWy)=uk;BSD$e0$4nfeV6BJYhRK4rb4HCGmt`0UilF+gXlwTsQD9VvvQ5&Iqej z^m+O0si2C!I$CzW+xKJ|w!v|?D(qK{i*lsEeEV5|%`0DDFzHfYaBR&aM z(<4IL+aRwQSU+DpNYB%$wTp{wh)BD25_pSR8L7>ws!YGM^q4dS9%R}~uVc!gMZ(`c z{{4Gp$#`|PCI`l`lp3!EY;4pra{Soa+@(&c0kCIS`1opk>%07pek&I#CSucYPhj6}4 z)80*|pfZ{E+`dlZ-f~679;b4jJobcbiVS+L31td?@jG_^z!*Ww9s^uVW_T_86B(AI z|J=d|s2Tat_mS>9ZQHl-8JEv_?tN~Ttn!O-V9tHrqMf>xxFD=Ug5x5PWs1*GRir^l zpHUe8!45a6Sr^`C88RaY?DomwW==J_+fxd8+~%~tV#||W2*4L}Pmq2x`2M#vCA#$OmXBQX_F0YO{i74_9awInq#?eId zqHs*_59rQ3yqv1!x+8Plw9m^h^DD!Bc~5Z7NLGVTs>WZ&>UyK13uU0BVt)Pl)GvUG+L<@)%RHaE`E7(Tyz>xOZ_U zzBAgZybjJ5are5Oz(!{V)j$XzvG74aERARkwXoML5GCRH)B)7)6UmnfVqlr^hQ>n( z54`CAJ6C1Ch}o;G2eqrG=Y40+b<`xGd2Acfq4e_ac_ZdBJHIUr(XrTGd{~{MLu=*A ziC8Qp+mWjZVOv^?s%;pRIrpO6n>d1*jm9Ab>xk7DUW3f=?Qq)A0pFo1=8Z1F&YR2kae!XT&?lG{p-?oW0 zy8Gu3WJE{8-^C}Zn{`dYZ3#&DL3BbBDV_IBWhgJW)x*#B9*GO{hY{wsFe5a>mKvzZCZnL_|wfTaEmkpeEbB%DS8pRbgH= z3|Uui^rKYDoQ&}GE0$Wfz&ZG^Vt@LfB;`^5-3w+el{mymkkJ_M46}QVfQGj`l~mZo zOlbN^C9mE~?0sFu~2Vnr=0&324EwIt!-dI5U z`;9z7`eK*XCNDoDW~oc&(j((CO@?~CaEfRB=>LrReidzZwGA%lT!XQjqDrS+2TCH=f1I$oEvpm_(wyjPM}k9g_9r%%Rb z1~`-(*!gO0Sg|HTD&Svf0Kk^+t)>gQ+kAX{T+#)=OUJbz4_%>vbE&>z zyOsX#l%-ie7EYCj7%S3(PtZ_c=g8iC@H(dn9AtPvl&8~&`9$46%vSiW@3}Ez; zV?%QY{2ZLQvShz=k&R7fO6pH+P4>M7W5(%osO2ML;A5He(;pxwNrxL6i#tQWT%mg7 zXQMlNjXkU+Bw8^OuvmPW_j;KNcz1tRTRQ^w){kNxQZT+)3E#ViQsG`{L(Aq(<@|TT zMtv$4Q?@tI@Kn>&N|@j^!K^zcqVT9xJEuyn7dM+DE;-BAd?0jB(ZStGGILFDXN%i@ z7C<$3@D@qHxeL?e z|IUdvsJ|~9GAcWu6um|eaob2CcrEO8d3i}ASNQbJ113ZkWLdU9R{;2JBxiR{1wFQpgX#zf zP<<61d2L-I6Tcj^&^h&Idfaw&Ha$1H7LX_JHQ#}Fs4UZe-UnZrh>7Eat(9^IYhTx} z#Xy=0&PTIS?FpoW*GbozJ-DA6VSfJbFJJjR z5;j_g@8E*s|DKXDjs{h6N`yYdCnK<9EJlp*PHbRdhsv(1YE7(DSq$N54gPLP%3gP? z=`)3G0Spl~kqPR)-!E_dL&HQA5Ul>OAe(aSm!G7l#W5`?R|T55^k3nB>wj-M=n?8D zbwku(GF8XdI87p)`j^z+{=wcpKVdm}z-lexbsTU>*gblJIlWsfjysWEVZ!1mCsQ& z%}0MWek%>|i;e7bgUMO3HS(s3(qqQkZ^$C=H2Sx{b)LLU;7q}D9U}$JMaRE3FSf}K z#ocf8q^qk#bfcS_%yV=1`Ej-R-%}qzj0#R+iGFiKPA{B5e9_xO7c>hTj0z;ds})Xm zxfiY@13(@cCInSDY6g9Cin|B z`6EVAk;m(QBgim=q2W3f99~Q3btJx2U9axB=#vKiWLT*5J>pK>C@*>=NU(9Zp7L*YGO@#6_%Z+Pd4<{@#L4oswf?oFd#rfHK zX*O^Z0}Wfxk;m_E>Ax?55PzWOHA}}2TNoV|Cqcu>bL?|^qE5*QMS~YV5Z=9OGP?3#gfOyUT?2+*YlEyoSXJ}0oBbB-#xKt6K#Ww1BeV@;DjR^Q0 z7(OC*1Pu6%sd_@d`;}PgO=K<3fq@kjE}~w(Kg;RP|6arK4`NOg80>!4#0D&af#a{9 zlf}Qh*Gz9mwEI@+Qv*qM7$d}ux7<^5hi=R=Bc4bPia&#Rc- zkl)`mrJ$R_wBpgm;qkG5z7Fq;Z&Fn3D`?AqyB@}!MbsMosbD+jTPDXj$YJt|0WwjW zMS)MUEu~Rx2$}<2$yrv{!aclkj?M**1`zD|5?BH)3adJfr$x>7j(b{zi$Ip60|aU% z9PqWB$Lfc2vwt$HPVTalfbZF(MF`MZz9oE$d%3Z)5{ih7mSx)Wdinc_+}~#e9VX3{ z=k3U2l)HENr9U@lPi#X_ng#GtD2!eU2l7;4qq{S`Or@HUNqa*PQUBA(uyKuSw1&J& z!`99cS*!@`Hk4OU>FDVb1K+$+i}AjGJ3KW#Jz}+t_HFsn=Z3Lbw_sqYn{TY>=d@NM zPW>@gmz^o)jbpM|Ho^DL*s zXP_w^=o*Hhr!_yR0}w@S>tSvEtxQB^4+HC@=w&X-aQriIWmF@coRfbCW7w-wo5Lb6 z1Z(M3&DO?nzFY1@jx`&0LQUg^IA@_m?%s^I~mvJpqu>1xN{?j7!AW-^& z%@5KE0K5S$z-#%fz$B-9suk^`5#9WDKmNi#SnC+eIUVGycz@UF?ionuv<`s@` zQkYBuUh`Ue(rvJS6fz0~?YfQ?2UzI!odszu4h@4duO7;YctOj$^;c*ziqGe`j_q}I zMex{Q>cQ*QaJm6voQ&-UJ|mIcNQHFxNO|{zI|GL3(AbuigYHZ};6AlZuMLKPU)D(+ zT7Y55A2kBVyTM>*1izdoG$1t|85~APz%eVN#&(j9kB@J1LGy+b%Fs73mgFLu*MFKm zq$z^*RPWAQ?qz*S4ck`faL2t!Qw5d}Mya<(BNpuw3AQvZTiGl(Anj*~i&XG$Z#+({ z+_)3CfMr=7044h@Ahi1#ZkFiQzswN!rUTQ3SM!Y16|&MI;{R@D@G93oC_Cym$JRM} zfYk9aF6}K7chd{!%U($QN#grbN-X*8Tu}n+4^wRe)X{yTUkb!q-;2NS_oO9-UjvUH zf?3o-SC>-2Z6gfsp#}zJbRc1V^5hB0D?sj)p8%b=N~ykZnt*GsY8UaJt3wQN9qZnM zw?muRt|^VXEUK?N%Lcek3$IGKnnBuEafVq10#?(PpMDGBM6R*@1I8YBb(X#{B$q@)EwDMgeXx?|{4LM0@J6zT4` z&w!}+-hbcv)^eD6-{(28&))mETb#IuAq7o#8VJzU>D*`Nti}V|79ywxn~+VW9jCc@ zMxyWuc)i0_E^HuW1%aXN41f<7HIV!Xe3ZxG4jfCDmTNKrWXgh>)6Lu_h`NY4C(c8B zO@(33xEc;rFzL^w-qkAz6B%YVGoiw!aN2Exd)93zO|Bt+&GPIyBd?cf2}qHs`(WKr z3#ju4o>N@cL<25F7x*CMYi;YMyA_{nl7E z;p|G`DM%RwST8C0AkJYK)ovxe?1`cWOViWO)TB?e1ighQMLcB->ac1F|I}QSQE)Y- z`I)N8t25r#guvsxl^x2z#7QF&P7!k~sOH1m)^LZDVsgdxN!G9XcsPe=9kZ}?1js(K z49Fh|`Y1|d=xze`9GJiYNqaWWzh5_*@o(}-`mL}fRup|g}}STJlOwam;Ys1Bq`eTlcF*@YCHlL=*aAB^;U zFKQjL>gJU_{y3Ky&aeJ&R*pV` z+`g{(dBT;tL^x#D!H$VKc{D)(HNgYb?xAQqs~Zp#(MDK^kHVEa4U)4(dCg%=ul~C$ zb-s9g6?z9_Fj5#Y;-&jzcF@<^eKwStP?7qB2^|3H})s^_@rai(YiCH zbybJSD}tKD;LymhFwf!pPbL1GjC43En*ED*v##lDi51+KPE-90_3k_)3H?jgU>gc3sMglu0ukJe|H$w*O?|axy)=L_M09gvs!B+&Z zE6R`b{)y$$UXZ082f18^8q;sBDSa%=pdG}Ns1c-Qd3L|g(nw2xfwRekQjlqpjMI$L zT08~C*O+YGXQ(&v_)A^IGbk7%r~1R2t*l+tJNYfUvND>QnjC+9&7@77qZ19|k^mIlkVPgD3U??f7@ricXrSz-2!?Lbca z%$5h^Kd-J1{iPXuZk0jLbje)1jCQR~@)5RT+ zk2;T*k4rgg4VO!3yCLUyRGB0sJX{Wl;*csAnaB_p8oA)WK#M6XZ0zD!k0)xWfHCd! zm(S0`-S2=o8z~cZ9X&(G*WU#HI5O~+{C5$u@Yg?IythuIT;cfkb=DMj`}+Hp63Q!g zS^Z2Lgh=m;*Aq~Px2q^QBSpzFrzC}4wD9`+dh4MAx+8D@ zcCr?NEjETVPw>Ewnf3ysA7{p=d-#U`EFtlThR3hldbqWUi@5xRyu5uIbC^7$EqJIEiQ40k_4Q6G-^XQKVfPnKX2kE`z0!Uo`wD@nZ5Zkhbe~VjDibNkr`ug!B99a@3^<7N~&-|Bx zca!JE0&S#gLrX}t6vs5TSu9$&dO9C~(+cB%KFRwaL1k!7MzO|K%nL^tW1wwUtgD*X^UWR+-|6GyUa?? zcbNZ$H3`_FEmYc~y!@Jv{SrX#AbqnMq4<`rzwaTQpVO#8)YEYZ!bQug!s1pcSRMo^ zxn*9JG@I7Qm~fzsEY^P^*4CnszJ{P!1UrcYfq7-{XoW-WyLX&gS^i+ylMMrmFklw@ zA47jp&Y#~0FGu4U!)^b0H*!kd6jRgOyx*YoS%LG6MR~l$)Kb)r+MZ&O*=m+a6{VtE zb`Y^baW?DU#TOgZl`y5cQ0e(;8>(rD*R{FG^2O`O-#l5czs%t zq%}iRlYK^S4xyHKTH^S-{ZDUDbOnPGAQrhawc%Ljf_}31Ss^Adn#)~zV4<++2?cGz7%rKQ zVPDB31zhho0*pGI?jo-9a2RkE=hgN5igcvp#}-PP^%FN`(4V@M!^|G$Fg3RvGpBow zR-C1a4wyX< zRx{-Mb;aGw3fHSz+Sq}gYbk&W*&wLPpl?c`(9+XK0s=p~Dj3uxGbH{?6mG_$74@TO zmfsZSKeaEl<$rg)Qu2e<4>er7&6#MuO|-gcpwYiK_@-=zjTC|3{nQI79u*qUQuP-Y ziRYO#&?DL5U{?npAhA*6zQAqIoQ!rk-CgKM1*|@>$xH5&YRcEO`F}bN8PjQb@3Ok9^lXWWk0r`xH{? z@3pz{x8zL4w3G70Gxr^f*k`_`LhW=nj))NEcd!?z)`CYGUY)u4pPAWm!6t6G)Bp-b zK7H#r-A4BkHv-xwptjig7Fja0<3hl4@+Qy@BOOYdX4(XnlLrK`)d+sa-1%&qgExG7#BM|W!9&U3Y@+~jqsj$tG{= zj`z?>xofH$dUq^Sg9}7J}0?1r?@;=z9mZ zS_6%DTGTVqp9K&g-xd5J+Tsul_QDtFUf4D7-ybl9&u2%iLOX%lb{ee3tDpRD?C;zM zJKx`qcW>V0toftBC{a8$Cvh#)D%nQfK7Pn`zqn<$#K{4Y8@+fMcp0zVc3UDAjXiRd zpSl)Ikl#4m3sU{WS?cTU2!4kn4)`6FlYUZvwrU?JBQ{qkw+~%Onlcm+oEgUbOTye& z^MZ8H;Kgi(4{ww9UwQ$kK!R(YnmffchB)#(BVC)$npp}Jt{J>l*QK!4|E>5u?rpw? zhu^5j6nza#o?n0mpzh^+18*BXw?$xAH-1##?(`Sk3}BBB(X9U^jPB>s52<{@1WK4PjQko@KYw_r)#ToVMD@oUc>>9yCf5*+DRDw z9a5*Bt7@Gb=d*)J2(VKfZt#;vt_=l5*cqVyuk<-8r>3r!4Z_aS%8os>`SuYHm=|pB zH5c#x4fA&(2B>?8FM?-smCBIZM*_3osYXgQVBgDaj*}CJg+l);f^`45#Wp>o$dcN` zhC+gPxMq|2W}_JS37b(@NZ&)(57Io|&AZc7;&qQf@JBSLtzi%=mTF+6a>mrV$ zCf4VKm`7l~#1rFA-MJAIib~UH+{>4?X0vfVg-gZMDlnu1)|{PjUK^}`zFs;bmdfZ3 ziLb=IxLK^3#oeE!qERp3lx9cC2PB>-lXW|=_A}{o?shhH8OLwj@4bPraO6;?^*$#y zMsdN>)~|irkiYC<*-ecChG#9jdG{D~RvOT@OndpOa#>H~!PYvRJ{zK2un=EM2Gb11 zPsH_gZ(p^a)%77(ed~WWz<=Hqz-XY1%u;Bmr`}{g<#jHjmLd5C%p516V9~38QY*wMC&E8$Xj5*z5U3D z#YBRQ6Zj&jr!(T9VPKd6k>(;1uzAd$zsl3m+imr?=8Ixl@BL!Fu=mq8L@kmc;*G)w zFX6r1XU0@3VY*P(fC1jVO$;+5tFKL?nd}qxlHhkp9I;o-i6UPGSbv_%=D#$M8*I`4 zHt3%?FS854a?Gao@W^RZEy&B_q!Qil$Mx=U_58zRzl=5BFvT|W6AsGWe5P2&pPDH7 zQBWdfW$ya#>JAGhFgVz}@fms!xpU7Xp#08Z4TV(vE#%5s*8OOtnv*laTdqJK%@}un zfGupjO~BMCS{rYK$yd>C>MaASY?<)l2)?={Hpg<8()_DtkC88GI0X5HAJ10l;r)I2 zE)Z6}4_hz;9>kF#8zFrhAq@yx@zDKsPGX5yCC3g{>OKzej!?e?5 znE9hzY*A5N3d-Xy;pUeG_u)i}0@2RMO@A^ND6IYhj*fq~{z*^;aQ;{1aZ*E9>BxzF z{W|{)CvlxSsv!|}w?v^X_&!VroWTvmN7`ImgC>jWWNX`5xseFrKfmu1tMTW?32ap| z+utk_aXs+RpLwXEmqaL3VMR{lq)(WqV_`4y7?+FfD%;D){1Ca+Rfq1V_UdzR1`8#Z z&EMS2tkAlj2`F{Qi;9Y-QNNJxbRXYRn*?4W9XI}#rRnK7ToX5leSGJ?+lEO^a%rGQ?J4os(KY&Y|z!lcxm764iLgEn?@e@c(-I z{`oky)r&@U5_Nc;*`4f8oLD|kdH6LBGW<|huBF-k`0JSvWM@MmNf9kt4K_wXAq6Jy zS?708$Rja&_H38d_?AF+9FFuKAcg~SQ#(-dKK^-IkL2=!u$#(3G&Zn2?5D-XNaduv z;pO%SUo=`H{5lQ%ecbO=$HMj=@y+ix@f40Z4Q_=$>|lFj zVpE~lWw@6U|Jj@U-x1{Rz$?U7h)84ca2VJ6z(`hYaZSwO<+BFm{fEY4_F*lVUoiqb zskGEg>w5gv#OtC`1;s3-UX7l=vS?J4TxNf8hk^KRahFca6%M}R)a>l5=Zouve;&Ac zA^ODWQ)wMKOj(;8qSYezKHEu$_0Za+xp$VZNh9r1#+ENMs=F9Bvo#Gr?;YI?s}{HT z%|&82t$}#@=nv5nU#}Nw2_}2sh0UrU2l4>FFjzgEf9t@1VB3$tzHD@Y zw827P6eB6UsBU+&0g3u}hZNb0=UWKI`NJ=@Ek8sb=rx~Wav78LJn?+#TR?vLt^Uq@ zb0w0P4~82&>R@ug%*HnA!L0}6-It-P27-l!wNTD5{-&u-id`KRy@pL(!X^bfRu@ipz#5D&jUc0F{v(lp)T-N1TnWclT-aG#=c{t#~B8hl!Z^m_MEv}eLFa~9mBqTJn@x4Mg<0pl% zh=?FNTJD+YtK5J-_u_c^?V;`(47Ihjgw)hwfYWBaj%Xw>5%}FSArJXx z6+GO;p=me7SXfoPF=Kz7 z8L<=KzYM0b4n~-krLM;|WM^l&KOit36A~Dmbx16s@O^Y5rW!H}yLD_im~E`LocJ}q zbMo2FwZ>1N6UDBCgZRVed%Ul7=ak%$TI$cabv$$8eUtbEq~StN@#(mc2F^;zVz4jywa^iC1^wX?D_MJ zPPVjk;E0BV@sPWqUU3_c1Ll|7{G+GPKNrZrE!Q8?0$fl)KTu{e4Ap)a@%n% zcb7CM76Z-HbLQvQa6Rej=_fE(mR|h~MPJ)0;Cb* zXw7;k$D7l-ZWm>F0c%UtBjIQuDEC+?8`4^_D2C#rKb}Yk0%H*~8}V@;TWLTl{Wr%m zHeen*OkvrHI$b49+v$!vGDw|Be7rftzH9HpamDLIUoK++-r3{dIy3q%7N+F;RBQ0U zt8x{)r~wD@ezpRB*et)01X`5+5mQ+t5vf6LAY-**JdajjI#_*P~A=SMS+GxHMdT> zKCHbtld_%oa`6crR*+zVGx4tGw+{84vkp>TXSzn0Z<$_|ao|;$y^C?vhQX(nN~jsF zRaN56;fe25+BcZft#xhmllJLnKD55)S*@J4y&9n!#hQ7tVRe?2aB|M_2LobYrh$?- zV6#yvrwbHBdTZHFEiXTvJ^C&rK=>N(@#r`pyvyPqaUGq6-H6lu_9i;7togm-4YQ7f zM}>FqH3`Csb-y|?zNeK$m^r|MPnO=<&TLj`kr=-?FRW4nWy0*xnaO`-WP)9jYVWaY z|MsmNBmq9R{LK5NHI!BEY1R48B{#g$!Yehi$Yp+xzg6uuJtz9EP)%qGEY>4;-I00u zRu%Wa4(|0>aVFE#XX`_1EwFL~>FJ8j?JE@A`lL{papsN7v_#6@2a$$}2i<_C%EyB4 z_c75*TEwFi|9kJ*3frt@Lk#%xa)xj$Wp6x?%je+@ec?Q@x|=9nj@K3MdZSOuTLk$W zf^MY)tYnez9%~#m_M2vDiWlxFmrw}1H)PHJ7|oB~7$affCe;NQ|w;c`^@ct5X{4R=!n)o(l($=v4ZX*;~lSte`76WOBt@Xh_^&F!b zntnqCHq>4z+#mYTTcI3k;eC&~A8g~RH{0gy$JUQT=O%7?k8n+@7Sa9~IVOLbz{>8p z6lYlh=g~z)9DRmkp2GlEt&5So9NFTc>oE?8#p5QFQhV5Zv>%xs|8 z4Lvwpthe7cSGmjF+J=~%EG*yg4$2oguHZSVpV^!gt(pyP2-<=a(^&vSlmU1`HL7QNl8f^(Q%bM4fy{3yZ4sM!>z=py0=8xjC>DHqJy~(=5+vWc<`|x zDD!H!<;LLQF;ROGV^4BbUB?rGS-Zx16!E z#7FRKI&d7cviM=G`*fSELFY%h+EhjL>?BbnY`(LjUA;O3?96TfqAQ=%w7kUDX90GD zaxPlBA2Td$YkYsGp#W1aM_+9Vv7CvCj%9B$?uQ@PdvnT}4v^n}_*7fYnhHG^PNC1o z7W=%B{+qZ@;1g|w(LvNAA>;|bPPz==z^RrY^s6Z^e0h-7d6S7fA6pi=uLxzl~BC9o*gM~$|)bz zcTQ#-ZbrdZMk~1E# zy?dhZ{paQ%C=Ctc_`Xs-YR6Q%0eKK`I9$wel0G=OxO96G-nG+|*=3GD8w8v+BO{~7 z#gTbhIw+#hF;E|Ii32ukLIyq1e3l=HYqd3itr>4TSr5GAFY?l+!@|`QFRA~Nl;GrO zZLlNEyHWXyv6KgQ%52C%*Zs@)Y&-!k4d~K{bqf|$)_2xhYkj5PmD*}l1z(^Q$a`-w zO-xK&XxjM9(2FZ+ELqA&3_z{%wnJRX6tN7vqlbj=<{yl2${FE&?QNTp3P13P8=CUk zt9+w2?_KYp)+Sl8+O>D1f|+4WtXOU#WUbtM@0Y>*jJ0tD6z>Z+Ks0f|0%i2?%S+ZZ#{sCf2h0{$BXB8Rw@j$ZyV_~E;S$nZH9EnY)`>y~+ z$rCW-XULVM^+6Qvd+=X|#VW@2z5Ht)wlhj0!mJ+!?Z~lA;$8;KsrQs52=_s?*@d_Fsz!TVlo3Fr0um`#@CG&kK|9zWhTN)=t@L=jT2L{H9uM%71PNkQ zKpo~ucI(zHq+$kHhHOk_V<8QI5YGvapgb_LLLfnTz~&hc1ahY+oqYXwz&k>ysomzX zFH%=WmonZK_8s?7WpM`xuhs_B3-<&9uIb6rF__9}ShQ~Gi$R$igZB}p4)Eg&{R~CX zwP$yle*&5VXggdXVEv1B(c@~Sg7XJ){y)80cvoRjyk`s8{c%tWAB89r(fk-pr*EET zU8!)U>G%|1?J946!Pr>EmxpApY3Br;S>W%FmbRJHlxUTzF zmiqUt`09cbG3q!76K74<(xF?dNbQSU+BV1W>?1?)~sUYEbFpv2D8|mL3_0MHrp=BsT?-8@oZgV(K z-=7I3dY|i;n<(VUAXM#~%e%t4SE7Z$NzMbTkGMhVSLI_KuE@FMP)SmJU&z zg_|;rhrY$epZDHk%V`pOt{&m7M8RI@-1I7-C?ycQK}Q->5aKzf4&6NCz_JUx1#1+q zTQuu8;AW`6mPq@*XdAn!TL8M!>vzBQjG|xB63D#=*j3M|w&f;5 zBeuD^RG4t`$Y=nu>hmuFx^HQ3Eq25OD&oC{zun59t<-ZAe`S#rl;s$_HooJM-3apd`HZ3pAEM1zGgEBspX zRSS{gnW;?7UG^Y@)l7MOUEJp^v5neypH2@6k2ZGyzz5!-RFOX~XjP>60UaI65-QC< zw>iL8X`qu?>>eGZxyXhMHk2u+A_Z2YykSJ5pikf@cka%CTsITLjicNMT-CAcadr}I zN_`sRXWQ1^{#N+F#uDW~;0DDn9woNfSYgOR_ou?5WQ=}4b=yxGMp?~QlJd>I=W2OO z-d1dwBU;Bl+uMt%wSA2jQ)#3UWzdS7fYH}FR=d$$Vv>cq#I1u00iPqIq3Qq)eQ`^Z71dHTtC`@_nsi1&d!sJ-4;NsRuk6tq56JSwebx zd^NRR+5z?5<2v7yYO!+V7$&M7B$vldT-?PP3kL)GyRannut51Sx|eiTAg?R`Y+s!u z%jpDD?5vLPN%o^#GKV;9!=kcpIixU&fvBXzrGk}=*V3_hJJ|6;S%Ce{AGe2sOE=n9 z%@}Z_RMMm*mF{1k8@adjBgle@ze0+%(<#1y7vcuQf_Uk{q?izP{)D0?1ThE5vB)_3=C%$*88hV#`U|ck(9~{;bj@-M` zpemD$i%zLXhzZmTIbxl{&S0^U2QUD2(Q0S8o1i0owB38{W@N5iDAzWYr^1rSS z0cYXfcW&IIa`IrPk%y*Q6B$KKt zmGKo@JbSwEk0-uYU+~aHS==|%Kd!k>9YN4)c~p9<{)z4|=o3_nf0bZ7r`c|95psA4 zR6GnOi1~Xl(G4{n4Gy!DqK2D_GOEHHN}kbpyrLs=6N%k59rQy^PLCS=EUeUog)3@n zo=R24g@@lQ`2L;4Jh9{5+b_3AfQhRaAo3FAEd%!J25|Yyp0QX5DgrA}rPG-PuynP| zsNVZ2pm*!;I{g)IN#wz68kSobV~+0;=XZ@yXYg4cx$mi*u5Q={O&Z`*becd#MtdTRnkI!u)!RiNg5;>?yY&50gIKM+N9&nV~tb1Oc11LM-2&bL}qs0#=7ZYT%A_Ew-W4F+#P~?-aMj zYSZ0H&gyuiour8AAeYSCgqvm`C$1stS&s|yUk&>s>uRtt5cvP6dP<0D-2pkJ4{WlE z$Ec2l^;-?UVP3DM{$JPO&$jB9%T=0qK zwS$Z=nf3M{Ki3EeW?X-ub0Y<>-4=8muP%AciFjvMci4kaXlRjn_t6yeE1sX<51Jj0 z*PoraaL#`R7<7M5m83E8*@<5iEd)ekyC22qM%Av!{$grjA&Z(13TCCCT5kso{34g1 zs@mYuh#_4*^7YGPk$e8k+woQ23fW#(e~2|5GOOx-cL9&mXC>gLW}fxoJPM~l`f-- zD9N-5LxHJSZ)#y3?>u1J2&iTKL)>ZNX8f7Q-(Jt)y?!flel=dw$FfP6hyO_e-lsXH z;8d@f2w^U#H2~3m@B3=Q)__Ek&Xa2ZE%q^qGrn({aN93LxS6aa$(z-vws4&0DPpV7 z&OxISo}X!#gG%D*gcYNwW86aJr((H0pq4VY4 z!!+7pODIY7 zR&eJWU_9!;L=S{a;aB3<6Lu6RGq@T z`tO)i2Jr<@PYxZU6Q4oY$)A$c?e-|d4EJ$aW!kvvn$+OnYuj*~s-lF|h=dt8^fooO zN?pEb6zoKF3pvXwQh+>xZhwCIYJGKe^?TP}Un`yGu<_|7kZu`zJsUeaWqIA%arE=m z2_#jQ7`)6ol7;PWGRc^d+^M61X6~AO4ti*{OqwMkA42RO*rqu(Hy*0?QI@fpF4ib&08cp*3whsN?EsivE=l71{|H@pOTWo zfsciC3v6hSkd!PD=enD;eBgC*=%#J_K{*EZ=sDP1JW7k+E!+5~lv@3d@C{*Dn?S0Z zW^tm9EVFyJiE4{K%T(drPEXknx#T$29ti#0;xWeq=@0b$xE6%(x{Y*s-n@GrX^?zQ zH_V0OuqMw-WG1=+eSSscd7DE4{L8vW%yGO6?IXurX0>K)l{de|@zUYn-cAEUy za@TsTuW~xSR*_bQ4C&FIAY`06T6+SaZHmAWp?jll&Kl}Ga;@q+2&T|5 z5|WG_u(La1zk+>bG8>pwkdbj{!GU?#_j-^FrBt*%xGvlLAbFWnAC0}YU^`B+@@ZGY zHTfB<0StY7e-;W2SA%Vc@xTP##xC{ok8xCkH#Ip8qIW6}5W`vdDyJWBZy>jV20%F1 zbtV1dVq*!ZsIncwjGs$+lY!BtDs%lms0HHl-)dx5o^jzJu9%u3n7k9MbY(%gs1G=V z2eP0{l;oEBF}PBzOHnwjx&KWx>b0~e-ptX&Zm9dAnbLgGr^y5;5m5@+Q6kkT06Y)% zd!dpD7P}nA4#i4(09c~4Q}1W`>(Cis`fOl-0Fs)lP*%d-D(5*y*twekvcpHg{y-t( zy>-*`Y=bzqHM-Zi-sCQB9<}tR)@FVHTW_pOmnA#azn7e*b$j0tNKQs=ZofwL>qfiV zdF8;K4vC7t^2E(e`&M@8b?uy2LCT-L>2+}j5mYgG;r?S8K|l)2l#>?)2vvt!LM%y5dv0+sDB<9a4|JPPck zi$deL86R4y^7xmLRc88yzvF9(A?Ztt+U#4oD z=k5$}?t^tki<2Lbgy$;Xw?dD@fQGEml-B|td(94MrVn%{S}xdD!<~O(6Ly_UO`7MF zp|z=gEoWSP_VnGrrs9~Od_ zi$4wyaoV5lZKK4MBs9T;YX!1qwILqbP0;Ptfi6tlxqyMID>mco&rHeiy4iJE1MgYu zgB`!a@kBj-@|emq@s*V`Lcti=TC*XE7piR%D~J zc&a4C$1;!8%#;c}{1&Wb0ctkN-rZUq7Sn1UgUPdEL@lnAM;LU$!b&g1>QIyWXEx`3 zt(SDarw*$4{PK;=uw!-Gy#T`y7G0k5l+YXvRohG;2{$9J^C5D}` z>D@lnn$3;$6kf|I zBZ7D3ZWjN>5$P38K~?|@bzh2Q0u&pxM^X9&V3(}Rk<{lheug7pzasOmi3hNrvEFfU z9}B6z9$TL?P!bkkS;+ZwKmOZER|qt6-`hRdhLn3~oNnCFv_&7RAtJfpBw|+~8A?Ft z!qMn;yzivoy)mtTvjga*1K!HN;u_{t`1OF!=J889@j=5D=tWQgqlzNay!AtTQ+y)CN{DK1;07>UkeL?ad{xqP(26o8< zo?yENuX!6TGc&X4Sf!JQ_kN-0O5ZzFo9|hTdm(?W8`t_#`BtLHSu`bI3)-hy57*H% zaap4n&M}B_?UKJ2_K{B!7Ym#RC@w3WXvqbBx|; zW&3?1?fd1Lu&Gp68ywu8k=nI&c`(@-ArAQm(p;l)-31z*T^Bm(CKb}&NPgYj`n^J1<{Tae#u`T}71+a*lMK=)+a!yF`L-x& zAe~vB0F1wAIj&i@+h4!@<3yP)1qqy-rQr7^#!iDLGPpnZGR3J(b}$w@1&r4K7b*lt zDRcCv<9IHvYQhG^Ets|GLlv^yCN99SVC!VD@QEhds~gk$`+fT@7l@}|!0E}6oUf&E zZCxF(U4K=Tc)`ay@A=vxU#y-q4y@DI$p4HLj_Y?<5RrKQGK=f9rBc7ipJadzh|v`= zxr!Tr7$%9mTv+5mdu}*l1{jQZZOB~YNm|I+lkP9AKjWJv-v$@PZc%2codQKTa>c-+ zy>^aPXJPNRZzRA+OzX%(&Gho^W0Oh+L=U5tdbpzx(pEyuu@Qa`q>aaR^Y5I#5fo$4 z$6f0fHM@TkP(Wv4wA6QNb#BZ=2u$u+ZVutL{yE^6uc%NjpyZvE#v^ArL#!Ge#d7|4 z6VgSLhgMnO!#Ky?z&(eB!Ct9x zdHkROP-@`{gA0{!c?4`w%JSYqEeK4jXhogn>o))F+YC}NU3u4Sy*ubUh8_A`NRX)a zr0z;e6weFe?ag})!vN@dy~Kht)%Rv^BV%OGxJgHVGC)GkecvOi#Zw7bGR@B>KA zArMIPn?r}!sgu4(c+WBLnt)#fSNk8_E#Mh9Aq`EqqBI&K$F1!JvJ$ETBW3wLK_W*L zQgbmYeKR^i-Q(n|JP9RGyiCr@*NyY9Ul(rZva;D<^z^&Pp9;;SuKV3k2%}vdO%l;;&Mi0FWG*~QiVhk{E0+$5V9JDpygE5fL zV_a)pH3w2kKkypF?KIg^P2vLYR0yo$w*4nnqH7`Gnb#Hs{3=7d6=tmX%#`1z@L3n# z5E|XzdlN;!RpZI@^&aj4*GQBbY=Fo_YEJ_te#-nD>+u&v`iB+hm9PSX3JlQ}q^l9H z&!KBeON#}j4M1fQr=ISvj)zkid!Wq!mwuIiKKX&P@Z}w6*M+2gmVWlbpcl@pFDcI2 z_U`C(Qe&zo$c|xi4LhQ!e%HmU=bGf$@=oH0jlj)p9sWPmJ<<-_fQw8sV11KH@gopp zA=8X@JWvxprxJLW^`ak85}Sd2!ha@n+seRopkv8q%lG2o0}f~moQ9Llv^9GtX9#vb zndp)+xaOMx?s+zxObtTiqifxU3f?0+EO&KjH+;IgvnS$ASM`t>UlO z;Hm~%b=$1Gt5Obul)+Aaz~keS#MA>8fU?K_Tqv+)au2K>hyo?&3Y_RO^s z3A^GRe?d1dgomEr#)E1~`szS&@-yKps-8v(=6b&?DGy?Zvo0{OI`P|GMdj_{7)9Op zW37w1f+CCaZjXoCKg9Jz#g+Hz!ze_93gkvLxvC)Ji9-ho z+)hn$?@jrf7>x$$47|PXcNBZjl>$4Sz9#CjD(Rk6?+R?0kV*Qc-EiL%PJlF&hAb1TOS9pS^}>nC!r-*1J7FIQ;0ojj2bCGHIOzxjqy7K`Ps1 zqMzcbjX};sPq7;Fle;+TgEe+-FUHO%xZowoz@pt}`ZJYbmw>Rrz*#xtRtW3lpLCcJ5byg1=NCyjdqdKH zSUP3gT2$Do9!Pc_{rR2KC-&;}_l@lzOMd>HV*KSWm8+~meJrV@eQUWJIY)uRS$mRz zl?55ND7}t(*8T61y9}7Gb6pGgQ@g8IqTw5ggw;z+gy=NWk{(JJU9yB zljL=C2Wi8-3U5P`B7i9jT}d9%mJ%q$;8EtF#t^7p_PLZnwjf;I%)bA$QeqAXZy$MuvuJQgPbdqrQ% z3b$hjnX8^QX2rHTytvuc*PctkLnwuJ(f?rw0IREopN`JXvVbJWFYyiBO}kM5au?+r zKrPS;xxgm9A=tTo4T;wR6Nto8C+hlPNz@#5R>N4lg(6nsov0S814pIY$_GxuCd}12 zZHq1&w{{Mvn|sbWin-l?m&(o@rbB3jWAcE1uw#u7AMXRO>6&X|`=1MrfXGQt1g5m} z3cC2%MLP4bQuknEN|`o`Mq^g{%=E>2KT zQYQYQbpKr)va1)OnZ=p)+u2aav$g%A5zbkF=18)6h(0jBVImZp0=aMP0NR?DAWQi)u*=8Ts5 zWaVo7@x5oa=8v@{)4ph)-6^iIab44HaMm?y_~aXi)5?KZdII~e)Pk(+v10gQX40|S zECbKlg~Z+tqMg&R#~d1!IaOALl%f=78urT6@%acUg~1uUOszY^?7u zPy2(TkxB%7c_*&E_N_c5G-{v-CJ~?))Tl^@iVB4o78TdQd<(ZM4S9VMrF(Q7HHwO< z>K5HBH!Bb)9Z%blft%Kt5qiyEDS{eZSXkJ5vy&~l%4ekt2%Tn5_9olEXWuUZn@)ky zxGnYdOx5K`rXvWR2rD-~sCVIr=gjcEx9F$1lT$7BHnXNgUpTA2&xU>dH0(?C>~v&? z$AAS?%Aye`F%xHO0sj$(i|@I8Q!E>1{FLugL$D~aAvl@KDB?m)k{P|@*LDK zBdf^ew4cv*;kyy(>dNCw8;h$^OrKbwryO-RFC_oRn*3NH%-tht;n=E;+w} zKF%MR4cYSRYdd2x%MjXvRs6V;u<(0|Dk~>EsaZ)+--JBd+OEBSejyyS0t{Ksm11l4 zNB96Vl>^Il*Zt1+{Gt)UH(rA#{sB;JCrUi!2Sa(JFx}tZzqS?)xufa)Ysk=JyPo{K zA>u12%jS#skZdDIW++|pxC!y0M&_=j2sgG4R1o2KfN@xv8!oWx_m#lDpo&91Hdw9c z{_nZYDvzmp!_NudqsPD=5tE<6u{Skgk$liy>Tn@rVYC9~MiM2tO9?nLW}~b98CQYr zo$2WOA87@;lIg;6%&_y5*Qtxj@wH#8Ogax1>A))WF#myERkYlUV4K?tgs8O`^*9{S@f}6wlmq9Y=vH4x1L$4I*~yxpqmxFn=T~li ze%&sKn(FG2-NQruF6pjFz;ybRIPxU=@5#pukS<7;%|9#G>6}dASmUHi)&MC! zTmpLul>pnQzswejhK~LpFE1geB!{q!uG2g=V*bH7my&5X2wc&MKtT_PNpfu7`H%0s z=7|7StG{gZ_Wr`@?L_+znz3pH{L)ru^Bx{*3xD(!$*p>6s+F1gtsJkKHsLmULk_gG z3;k_G4sU5#*yO?xX0!O9YjW^Z%I^cdDksw=a@UUQGQII@$7-DLs5Ep~n_MTNA|`&X zgg5Cc;bZWpRYG_`Ox98(2!wn;n(32m-PyN2NZ5VvyOyh~8}^_xcXfm7hv_eZeEue% zMb~Dw@d*u@%gne-*5L-xwTH=v5+`149>~5cc*CTgmNl+30ax`5Q*%>xWOH{MbIA`9no*GQRFWw9Q&UqM9UR&N=Pe}mc@`+!(QJ3>i z1RPR#CQNz+JH9@U>ee)rH*HLJbms-M9WHh)4?pK5r}?%0CnnPaJFk^+>Hj)%^H8Pf z94?|OcAQKqvwuD#7&kxjP7!gEeH{SY_jv#nH!pZ6ciR;o2j`m!75<0El{Ga>sb9a+ zcml;r(j9Bd9s1Qvq88&B`ZS6E69?|Lhy{7F{X4x6L;WqSVPoMe)Ps$McHMlpA-Rw~ zjCeGjsh<&aar`|o>}&rBYA)}H&So!-vY^pJ;k-!H>3v}|SfiGnw((4VFd^ZBmvm&=8 z9m84=BH-pS#FAzih!o&_2zCWqk8`xL-*+pxFZ7{+H70}i|DMpRq$1wC7#L^nl4d0L z2gb9bb*@$}zEy>EmoNU}%1mWp63P)etdt1BT3JFj8|fIt-`A@By^#^fXu*bLS!6Bi zU>bZ)^N#*J0nh!9FX?)E?*Fc0*rQ1TxIaBHA6C1j9l%L8+9grXp9hU?SZs|wj`v9@ zgc@_7q-91>joY}kQAkeqc3KW!r~#03xhJ=;7_9aE_(9d!*m&4ot!8XFF-baL5N4V3 zE%!GOh+Ul*?Q~;>hik-*oK-Lw#!{>u13Mh&X@qe-97omPaUHzotLX;DcaTsc~HuTM?G4ALyy3f!2 z@h3SKc-fKs{e<|Mu;0-TI-#3C{WCY$G-pwtyX$>9CwYxy@tp)4sy=Mf@xkyK>Uw;% zB+B0nDX^n%fZTOujL|*kU)R83?m{s^y3PV{AcHf2%&YN>TaIXdj~z!LWRQ;32=<}g zJT@OZZl+Yookkp2T5F-!uIzONTQn#@-9OsX5f@l3C;Qtf9p#E1NiG{D>?&m> zb~;aZIx9))F4DLuE;4s~tA+9=UKO?JdU$~;jL>G`moP|9MA&%&1*;R~3qP6-wt}A> zpVlK~hm-+Q1jHJUf`HpbM3^IpVFPRlmLE37C#wHaqCz~7jr5sPT0DHL1Qt?dj?gy0 zG!#-a_Rb6u|K>|f{-aGWmUC~|z^TZ<$F9=kRhadi!s84>kW$_aC0&TPS{!P(hRaZF z35RBxE)RKt5J$uEI>ol(*r!U8L${*lQ1;H;kc_oYOnxf_yJ1;QRNOXqCK{qHvQ>G% z9~g@5?qd1!wo{%cl8gQ%(6(NYIlLIY5)Bna0%1{$wE9cCUyE?EI&P$jUFFR~DmFBRU|4BpKaWsu6Qm?|V=KyNF{Rq0`L%F(Sx$LgLaDw-gJu} zmmFs@5M#U_$RU_p1+$oQ{Um5IdHm$blSZ3%+gre;dqUsnReA?8gqV#HK6>;B@XgOa zwOz4si`(Tp4^&%krj`2`pU3T>gvu*98AbHuyHJty54~z&S9^ETS^3I|v?%o@PV`sf z79G3c?hYb!or#bloQkUjdG{dj^oEcpz7CZdUym*|d8Me3p{XV^a2mv>*(7rJdp z9W3wWp|tmrTpsFO~AZ}`eO*CrWiY+MD$^1TO1 z0u+0)o`MeNE{19IYpBnex_Py`#D5-<1B? z-~$RWvr&OFb;XH^0&||l?9H&)-Jc^%zEwVgVgc5jWYe_Q-?3L7YV?h+(T^@yLl1U> zkWX*GJ-oPESqA2E!?b%NY(&~$iekuc<0p#pByI&o<>v;)%&e|^zuw#v`S!R)+N|nI zD6>_F#g*-ZG#~I!N)<#YXCrUY6!S+(+(a~^=hdDLA;u;bJIYZxb;E#XvzD7xX-?ez zU92M)g4P2ZsTsY!%6w|htG^@&gs~L9J?C@ey!@D6u0+EQe|Qq(YmsQbE5>ZxVhlEW zF(#Bu|ek20M}_!4Jh9owhDmvBIG_7uvW_}}8XUZP-e+2M-4BXsuvl+*h%+ zeGbxTv+aP4^ed1V{g{}TC@OPwxO%F9B^Thk|A6Mq`}c2rr5&|}_17ZMiINg&xTy1y z{+q4-O4aB0(AYWUB?K+jqQ^__J>A0jpD*w4KPDGqX(}ZoXn0KENzh8r!P#N&SsxmF z7;Kvor$}QucFhitdq=yffXpkJN4NIMRp9T#1DQBG*^r4SAd-9p07{@&eg$H`K;HSY z+TAYR@>QTUApxY7vyQcOv6GcK}=^(P{c2r^c6M654gxA z%W>}93dMBwA2`vX&f9b6n0snOsGoTB-?aKKG5+e7OQx*5U@?_;{JTJ$RgG7W^pW1y z9~#$3ly3dZnRJ!DE&h(KmD|NW-AZUVmF6JdsglUn9Uf zC)T}~sv1z<>a(I(i@p^Dj%0Br_KIzKMgyaPBM|;igk>G$vjijYR|M-76acuYkPGBs zw+T`sND_KH!-FIxVS4r(!+CfxBB>hv{aJyfasl;LsD_5)+qd-0cG6`^9lzX@(##^J z&!8W)ukJ!2e#rJxH!{=H0ep!9!m0-4J1?4lhG^u`Ru1H}Ul5g(Y(`zB z>$CsBfJ5eo1MK(f%ZV{0a)wG6=yu9b%6ULCG95-WWlubk+z!-! zKAlp^Ro0t^dBrg8fN2{M`uJ3SGzw7&AoT7LgDeszE+!}u{w1#L;nM44W_kj(LS zRcfMdbXVG=zwn7Y6+a+RR5X<{Og40TomNkGtRbb<=!r&fX1TQs2lv)6F4Aj(;PtBu z^SP($=88`D+T7pw6+r4V(o-X--0!fWsOIQq*m*_<_0o@?{&6I582AwgdpvJ-vY#Lg zSD(4cp-0t5;OZpv^t&hRec1{$uDhL_PnGkA9~8xMnB|C}@p5xNVrM4+1x%H1U9Q)c z+;kT*1+&2C6a@}7XYS1Q_d5F--dYcCtQK_B(VCW`G~k}KTiN7fQ0-L;+}ZAr)7o%F zBLAN}`oFSYBup+(*w)9lTYtLK6s1kRT7f~anq_${?^IYr0F9IQE8U*b>F*`o2|;ys zr?O_7;gfcGbVtm|zm2{?uDpq|Cf~gcJZB&eyvN~q>HSSS0l3T{KTOk_jD%IAPw zEamz!)QB^+9Xc%KjVlUbT;g@I~`wT$0(=^i4g86Zf23ArB=WP^UKCpl!2 z+k~3o#1I=UPsbB(N^YpoI8$Sp$|odH<1pwI+PW$;w?Q$>&Te8RzEN#2=4J3)ceM=50H5u7XHpvk*yE_!vueAz`vZYdtPZO7Rl`ag462h z)W^9se7U+RhE8_4s!{Hd+@ATG@@VRCS?bR>UHL3+M{hjw$mh6DI2`x!RQ%x#`aa$O zoj9O#X*wL>AT~7mnVxr07?9Tn11Oqd?7yfr2cpV*c1Xe$93lqt>E!b!gZ<>$?^R^& z(vh`j)KnJVY!?K1XS^*XzjGTU{1$B4>NFZy{@FDCZhk^Y1cg$_Tr4baY$~g(7aaE> z1I#=;>JVoqC$;~inqFkLT&otIR$tiUXQ-4IL!|gSESzc2^9aNCoCi&Iv?A)PB}pIT zRSOGhXCjxo#qawKoG|{!Oq3%7WAV~x8GSl(WK$_eNOX0 zz;z7&XPNMd$B>@fVNrj*o}sTPWn@G$L4T}Omz5oK+ZmIpj9NmE{Y1s#lT5(p)8A|U zTHX2LCcm!V{~7#3DU2mxb}`9EU`IbbVm;NVcMaN47b|73Tlw9#?J^v4xs8HL(w?IQ zdr%^F#jDyUVVEXLA&7VFmW~8+=6$7K^kZNbd&0v?tVmk2#x~OtrIGToG1)I6r28sq zqSC?(B!m-#GMN5NX5~C$(3FBnL=+{xND5Lh5J~?CfERJsZ4MyX{(;4;3yz4GQR{ze zQ4P!X-2T~JzXugf)qPMkM!MRvCRpf-l7vp%X}i9%RiW>XLDwxYEx}jf6L%wh&Jf*1 z2oACd*`5T6p-qD(=9Mrb9*xW|mMIW=U*xp=ZXyw5nyjSgD$Sw^nT6#`7N@>IP-0Dn z=n>s5kii=deYXr}upyIp#_&a#f8?7`wk{XrJ$rVZnVxWWX*ed<)z=7f!~FSq3fvi1 z9RLSG%1RwdP}_B_?2%R`wQ8L5WK6WmJ7 zY{=aZF!A#bp(k?c0uf#A2*MwcEiwTEnw5!ayN-I6;H&fdsiz$@Nu&|VD5|NS)4u&A z?a#hKWR}Vc9g|3vRIODivFfoBp6{YaL)mg-wikL$=5(&o0#*091b?RWaKM^;-vBnJSf;mjpq>bTn0G-f+$(T-Kve0N znJA}yOE=mBa-bsP0Xh(J18+d5NS4o#9DH4W4R2Y-!KUgbKV`Ud=kh_2$R&!F>K4%z zF?qd?8@i_rV$^ZBR~*D|n5u=nrisAhm}xYMO_P;^C)RxpzZQy|;&RzZ+QH-l092=5 z`u^Ljjrc$wfOKX7Yug0oew(xUTH~j?I6wfU9hFl6m=cf?X6u^)Z6qK$vP&dk3~5> zQedQ8*9!DQI^7Bs%k4kSEGB~t{J30Co}eMF9Xf-gx3RIs02G!VR}L0k%^%=cE;F;a zX1%-uksCa8yjQ<%I~xfdq3(^bW4T-5IM)nKQf$Aj8M-&4q^aUQc+;!@39t1FO!spO z!ElBjZ=fV1*Ls{v46Y)Qt*y#a97t$@!eZCY&i6DB_D#X$=}@nY3P7+#OZ z;-RIagtzc{WR!g<#=(JQ%QnRC*|CP|#q6}rUl1F16YtjT+rNh*Wx7&QQVwk?bZy#S`4j2X5n+2)4sAJ6ZZCgBAIu1@|~gtG;uv;AMSnU zqc~H!S#XWwhZrHtk4TDM#7Y~-e#91R0w=1C?FKk+bb)ri+N{ob-+C``oa1Dzq}y_L z;WZ*L9E9W*<*)5xG1n$%nul8d21bGgP?BoxN()|vRwAR9mm6_7atStLQ|XjZHb&qt zOBtkU$XB7pMhrCplki}?ctvEcX0<;$Y@;eB0VHluj7B1PuLt`uPc2+nTU*<3y<3g_ z?YnnB<>t}@nk^Z+@rm9BRq7!kK70c2*nE9=r;>kxzPOcpcPGZ_a?rGN_1eHwnOQ=m zb(%+kMw2cs?c5_y;(+G4CH!&BVEP>8N=C zrXSPcz14KlAM9Rxqo$W3!yjKxSFlxVRcvxT60tMk z$oipTcA@DL*~*!-|EnV-b$(l6H}l@Snj%Hsn=T@HcsHE#3+oid;nfLCF5@Le?({0k z-F>5KF(fuNXAv3H8U4^=skUGDhXM}O!7PgC&Rq(DJlX!NHafS-vmL zetoopv#6u|^5t3I+2W)9`^dS{VH&#^O_7vC8Qui7VfsBTLz;@U?sOe46DqXCCMym; zZA*EJr*0nNc()x(og>Yv{<#xQF>aG`+-8m11dHVM>d)b|0%gEPx`K*R;%B--_OEwb zp@9OC%|pP4Z=(^c1yU!*IF_-8XXBTi!GUYa%=j7N`m|xz38t`9d^l1)?>at-u@P|!9CK3N>6&w zoPzmvk444EDDV6b@9E-V!vF3Og2=4Z$_qXGPCHcBbvJacB>WbED`XkBL;hVAU=A!D z9J-U@Bx@v1P4l#OcXvAuszvvdM?;doKbhCGWO)EG@~vy<_`{h-sIXLE7Ra(!ux8%ZDhn=VF3Dd?1O9xOeWCy{(*KVf?S` zn2n|H6@u=@9Qbd-U#CG`h{UX~BKq3JX>Z zt5st!AxD^rRxH1}Il0M5l+Nvq4q~sdPT)HXD|v3%&)3biQM0^#Ejd~A2zw#>#>8%T zzkTuUj0%fmvy`}Sj!gCQV}7&*PSM7H>NN^MP5K4oG&*dpekgAJs(?sRz{Qgh@m<@G z1y1cwvNW?$?!%@Cqp!<}M&XBckKu7)F^mxSLI;A0Hv_7Z;YzEtbtZ5zLR<~%&VhMr zvZyKid1#_--{}ZQj*vg$e)?1#Iy5=8#-j6$zw3hqdg5hx26-OLgYf*5#UPmie@w#f zuj#32l4l&e`zDc`c6qjD3?}!zsfgH(#i;{y*3@r84$b5LgXh5>ql^&zuNs#_2C?r4 zioPv3>!T=aa@uKeCkpaF)#P zbAw_)G+GP0Olod!5-TgUixk_;!}-OcbgGW=2YqoG8&OgX_X^?TbLNKb=3*C{dAeB( zQ(Eolj%QW#Nr&g!v<5rMWHrPE`Z^`|JL6J$L`bYkP0gNj*F6y3)tN|oy|M)Ogu)VM z4XvGa3Abmw`^O8n3e@~Bpia;ur!#@oO-@>^Mpi4QK$F(~HfY%3$BTFB)R==N!bcjF zx?e^Q%`G-37(H|r=BA`qp+yIEH9y?!K@6g}6Yp|i!h}Bm!u))MR@m*+-II7MLWauO zTdmr4&daM(-qj#5fMnw%=>Y+#@9iO~RH(8zoor}yvZp;YJ(m_2U0O`(c*kDSng0`VNz4evnY6REIW3=X5e5Z(I+DME|G$@<^bCoTJ~z# zrxsoN6pk|Ya@%`nYUG?>Z^kvsRkb}S?k(KZ@P2*0g1d;Rt3Nzh;UXoQQiF}@NTubZ zdZK50n$>N$$Xr`>-1OE9rEGd1On)gtyH?q^KKm?i*9V)6Cg)q@+Z%xnwwy@Eadd8r znKfmLR;~A@yE|Fj?;g4kai4Sc<1D1caoc>)&$9u5S0PZxpAUyB<}2rqp5rbZwmlc$ zG3*uzEh`p(L0Qv$vKz9Z$*s0?5|7ZWwi()GB0Vv%eg$6AISZv_UCBc}%Ff;|eGVa3 z_V(XBf`0FO|5g_EaALQGjfeeyXQu5-Q~5yrVsBx6owggfUv~|)ipuk`tFv%>iklqo z7bW{qytv62LGP-`Z|S(k;TAZxM*r|);V1O)tYWgh%Ymn6m<`F5CZ(4DT^XUn6VKhj z0~sSJi%t)l;z&u0aJzu`^)e}B)#Cm^92j@aSM>h&*uc^!P9@b?t1KqLzImhRQ%1oy z-vtGSF7JQSSZjhVSdjBg&y#zMO3gKB1cy2L$}2b76DA^rRKK20Xq6GPPu%_}>zW?B zdH8_<=K}^;Pk%yrcZq z_9*70ff?yjaOg=B&0KD?AXqT~uIUfWcU5Vwr(0mpO;#RMJT~G-R(+wzzUQFwRyG_O z9{89gI~o!S?G=#0B}{XV;ZYSZRrYdspS&svn-<0xrbdb%^Q&^+r%T@xPT)B>_vEF? zup!?g69=g|tqB6R5sj!D387&|ZR_3CoSRYd7JV-A&i(0|4Y6@HJ9P&{A@T}?)(Sf| zZ?T0=;}+)$=3YuJGg9$KR&fQv(6Qi6eN)W29$1|@;Sq28pdY^INZiOheV*&K5>53f zisSB^IMMW+q!i(Gry3PETeF4eembt8EuR{^RcK5QocFi^gL@%jeiP3`LLDBr94(l} zJ3-(vG$GN-5-i~wQ6Fz3Gkeoy^9=o1QGS^Y?A22*z(v%o;_>0T35zkOV0wp~hjzi4 z?d4VbF>1#qqg&o9A2&4tQ7SmSKFpRNhR$GV4kFc5WwkXG;yg}4g6 zJ@@Ry)IBd$6mSijY+>~)2=7Bk`_>X~L{7E`3843>=(rhXwC|Jwz&3=a1tVvE z*eMN4QakT^>LhFrltB#SDYei#44!8X4`;zM7bfkC!fUN<*mV~@UdS~`9avi_B4r~# zHe{clYOkdm_>KmPLSSc}F3OC$FHe_@f4q5H}9 zG#H^xgDI_~Wq3ZfcOMHgBf?KyC+fvDoq+Lh%z<~@9>h96+@1$3r^w^Nop0wSCCSD% z;D)$7;I)%OfPcH)T092Mxsn>f!@t~tPy_CJj(rTxuT`mkbTB+Kb|R<`27EjRm^5%z zzoK#EI&!s%REv>L&;0phcy5&H>+r>UA6BbzdDwaSU<|V(@mbG_y8`T(#MzOzZ&#y3 ziF=1kJZP@j<*%XB>lE*Z@j39zseVx;7*_YzBv{XR1rat|y{CGR>!|{f(#=zkVVp>P z(=vsnaWSzAXZrQ;1}fzB94RIz8=$s`w76$L5#kCOg8vdJbP_Yb6E6$l1g)z5@h$W! z1x-NJ^e`#Vo)YS*AW1RiQuM?#f0xYA zj(?S<%PTzM?%^fwF@YkW<9;iNkvIL1_VRX~y3`HRJH7+o!^=ZiplA|jE3-L=C3}I& z7ej}=bVuF&og4NTOTYmuJO~)7|3ImtQzU?CfjHSe2@ah1}gRB#+Ku25zde*|9zIpr-S@r(pCO4aw zFYhHy3d5?cf(u61Sa@OD4y1`M#nD+6v>!?G<>gd}Yu-+y#$eDZ>TSa%Cso2d8W0nk zZgzfDE@_KO?t^{BE;+&w!=RKJ1R-4}e~tVD{I)a%mNNwvOeaH7kZ(ZE5u!f=OsUcQ zE*!wA)mv_+k*877b)fB10JNq62)Rq;Lbp4P;D5=r0j@AK{j-^rZcwSA;1#rZ>02Ex z#%d|VS*cA2!#m?i>7K7Le_FyoEwn$;#B=aY&T_@pKhIqd{X>@grlMlaDr;1r;^3|y z0j8bRrd5#plEjRmE3xGcz}2IzMr^ysjsP()cZrxQQ``=%Jl7_4iQm;O=q~?DLQfMT zCqPL*r|HoQbe<7Rt;|`dXPJ=P&I^SZYb^Q#9%Zz;x^jBa$m3OlzHoWA8rkd@N1`kG z+M7`~3Jgh4A|I+of)o}EAgV2)Ei)d#1Oxm4v(2Bd0y`oQdC(oH<6$w^M z4RT@2H*oTuUz|Es>5o(n9#pX;{)@Ko!wI?DvqK#auGj1#_|(N{ihbLA22H?8Aj=dxT-j0yMJP49y513B=7tx- zLupFvJe61B{Gd&+J}+i44E4i!-bC;;h@-R z3Bc2v$j&t7aRTmSivnuP@?S2_QMr2h)z_efCaWYpj1UZeH<*S{&s>shAPTMfpr=t%&6;95A zeE%xZJrD=DD@dDiLzO60&XSvf4BOqlH=^Ppn~Zk%Uaf(v|_h*;Bqr?S(8Br ze~f)*<2A%<$>pVo)vDXStfN$G^2wwagO&+*N}We|H5#xN1gEhXY^5hhLm{d9`ZQlc z?nL*^y6xo+G|wb{;k@cGekzT;BVn7!9C{Ry0W423U0V6Eh5|2X*&^K23(HahQ6lGi zQeF;f*}Ii>sq78E4PNe3VMXr)`rUm#Y1aG4;Pr%Vf;F%cZ!a?4_IDLN96}DRFTyvu zkZaS4n7dQ!jz+2C@mW$uQRFtk+DbZvZl6K8(5wk!8=~B%L*c-AcF^`P;jDB2^%lzI z#|GLnB}B>M68O!D+Ank7@ozWbIXTN*J>jRivR+S;>|rfz8vCCoL3k!H|126^f>fb_ zD|K^jD3k|Y=DriJj5gXoK7W$VmiZZf#miAt zu(onKG$l6+Z=&BF7DdtUc+85d8hIvpqoZuYsQz)67nSv;>U?@QgLu!~gF7_CJ5BO{ zL$C;A9j=L*MrStQvWb24ed7HqCqe}%wu0Vs@d_iU7pe;{=~TWy<$(4_e7^o<_z%5+ zEpbVvaZm%4%l=sEP1|1p>JLmE9i7z_1|4bvdj|)Fgm0>`(-a!&Q^qWPE?jJdpDD9 zso0Kpvq@tMg01ZdXWvPoc4wReA>%hPR2Ewn%HTl>OA}t=aQz^A_>p5TZkehP|H?6hS2{qB9Ylm^!uKajedOvYUeN7TedPCf@bd z;Zf^rx(DeL3%tt={D~PvHb7OQ?Xu2}Xw*jBH`YJg=P=E}gRypRf(ZH#^aN(CF}4~X zRI}x&HC(R$1hUu3>!cl4Gw;$j`ZQVTZl61Jz1WT>jWK6?_=mN9ip$T2Iya{YLekZR z#*i>fFd#+L_B-sTCE94ur7@zjX)F$dC%}?G-9;61NG=A_V5hYXh(NG{R zr^2(P#al;Hp#?o8QGI%}Pd&IvQoM|ZAuDHVrj`xN-M_@ja0ysB<_P~m&P3w$KfWCf z9Rt2$PvYWe7F%n0Ms;<=TgW ze(zQt$=4j_&gN!~Ugzf)3A-NCBVUt@V$Qx=GkdFs+tjDW2 z1jYWzGaxAG?GfRgk<4m~S5~>F49FF@<|!K<6bfxq9Xu%-hvLZE@edL~19$t_=S?(% z){!0aYO|`xhL*BZ1-J_&;rhmZN~9YsFus@3;zK z{p`=gc0O3k<_XV!B!6u=x%=dqOE=%y)JdDT65iQ;MfThR(zISv56wsirzbrGST(1Q z2NgOma^3UG3dT`vPF{Eak47*=5TTOlSeK3Cxbu~ivt=>KBQXV~wD)}z*wK4H_ftIR zzGw_{c66N1h19ZU){tJNyEj*m$lwo!JxY!ew zs$U}|MyoRYz#Ly(cCE{T;h;Eox}%*kllx+Rn88cPSvdGAluWnodir>K6Vh2*m{L|D zd3IkZ^9kkm183|Boys$Gn_&bWYu<^Hu1?fX`;)$^~)65ptTs7yin@; zZmLTPc8tTAp=YchPdTEV_Hyb`0&3|lI3xLb?+mTf}8yM#BA zgTxol@b@MQd)o^uSrt=wGBY0^S24|hibu?ELi+ltGFzZ8QCx6fxj)lP)?wxc>TNQv zdmu<<&?l6kKnE&-FuhM)=S;wE5@fMe-AN65YfG}|pYnyckO5bF`@8gE__Q(Xk9j?p zavtSm2v&fhySghbkqbVD8mAcq44thekh`W5%b+B?vR%;H8=B;;Y z5xq7>%O%TUN=H9K8k~bPLFM<`t3h_`13)(Yj=OXJIgCih)yvlx1)&6hUchVI*MDc@ z84nehxnW)Bm>)A0uK#l9tJ^|Nk5wvGX@=%IG^b9K6BD!fK|uxx;7X1`>&YD)<@1Ex zBQ(86ses+{L?_|PiRlJvG11Q`6w8CCMV!lj0|ctl8g|4K%-mTDbsKF(OGOR>IXVKN z^PS`jQ^fT5_eFC8;%r@8`XA)XtRn>*{Kr?~Kh;ELEp`B&{F4-LW%EUxfGf&_nem(! ziFO22Zifl$(cvHOVq(5fRKy2?L@g+Vudg<%kSXLel{z14bmgp$*qKO!7gGe^vaIM> zI>wIDB6%Ync0`I@bMkoj_j5*ZlJ<`s{)ch#LZ<=kggzyU5r3~GFk#eDY1JU9AxfoZ zCa>BwqIx}s4xbX5kW_`iBNgt*s476w-66Pni)i-p{2&i^Ehs0WuAg)EU;XJvRiSo% zAj41tLFN`xTkQuRT)}GL7m1n(aJI0K(W{p}1+P_R*bmnKk|%_3m7e5qGL7>!N4?_#`Tp>9}kZSMK~%KK}vc-hV{rCbd!@zMEuwWzQHMYz8 z8WjaUZ|SNXY)(ORu8XxpbdXyi6k>;JFGHg9Bn2`%HK%cmymbr~<}A{K-$c3AYmSP{ zyWh#0(ILq7yNK4QXkWd$d_1+JKx~0xVq$N>9Dzt`kbbi7*Tl~R#y#m9Q)wh|e=!W8 zsBx`>-+R(27#?}3G!Zkfq@(siN~w8)M{DaS2|6s}{@p-{!JOlsRl#J=p9rKn4aKH( zBX6_T>sKxr)<|gyuf5Nn5s8o}cXu;4`ee%9=-`7^FoUa)vx=l-`?}v1or+%=2lG$M zeP%r($avGv;Jyz3Is_?2*nGHW6#YTD=vaYUjyJvg%8VbEgH+&nktC^W|0cA2_Nr?J z#A>l1eEsf#*4_f0tUL<}y9HNb)MXUsbCWypT1N$HkIrh&5@4GPReqM4<2mg4V1VM~ z$d;U6EU*B6Z{B80N<`Ez^_6;?4Z z!Pd>^1BihJpx-JeC@4R7P^VS+MDcy9&F|9Z|L_nQL|{42l~I50PqSb^%BS)gDAZ24 zh@gTrq=&**P`?4`U&>JaR2Ps;1C94mCvX6(JM3P4Rk}n-**v{V0e3(9 z2fv|C%1}>hKZ;dE8|KkU5*De?xmk(=3#d6>q1wu(+jy4c-$UM&cyu1YzO|>gdvR6W z07^cEZXqT>5UwuO%_6b|isAm$9Zu5UBd(SBy9+uxqS#YlHHOFzW((JcPAYjp_FR>9 z`j*vXwUR?&?@A=ri^*hd4`4C!bjP{Ke+q)b8;zLD-5m>$(yvDV1A0V%^zS@1JP;Mq z4El<Jnr4@@~V@jyNj16Yk_?L_B!6vDIP8 zaC=9fwqtqU^YEuD3JT2&P6oAjdCXC+Bxg26#!i+4UWJM}E3< zpF+Q@{^LqGU01}BiuORjoXfyP1|uD9-uD-wQy*|~SHBzEZY@PNvMltf!HqXD74D214g)O|{C z3Jrfl@;c&S*1vAh(9q;vI5>nGwJrXDC*8Vk&9v-B29w|`kRG4t0e2e9(&qjWcsr7{ zdpYyP4hX(YfC3*F@Sg{nT?b=()#Bee-bP*HIn)@X1sIbJw7R=w&KqcTKh{1mB0$eo zant!yJ^3Bl=b)AZfQC$#&uaDlE;w*> z4yDfa04+Nnu7YBCuIQ;`l+p6w8dYzBvyy~%$$bolgeV67r1`>9mLEeCcTT^bv0GvZcQD&XD$7E|o5` z!zLQ!=0ex4(aHA^FVWiCS|GyM0Gb%6pGZf0g6&ETp7j((*A?aRlQ|;Wa3nQB7d8ec zT@9rn!ggkn+`) zAAW+k5rl-bwqK9@%Jw`bsoPawoae5-ku>NiZ4 zA)gcnWR%+O_c`8}+&nte)Jn3rvd)4n9q~va#o|~EF##Rv1^U;Mfg%Tyr~qWLi^Q^> zHGj`eFF#S;pB@~#L)p12PD<}M&3qvn$9e4n9kun&O_28hZbEMj#o+jng*^L#ncx55 z4tIpt*8iJ}*h;u`ac(ng^8vato)=mzV=N8vclt^<7-6i!L&^YWdUg})-6+K@Z|Ff+hMUjl8~3~0+rPJXCGeq!!$ zG;Y)V-)&(-4AfgrL;aaMcH6>R~maN&}MmT0SdtrrGY)vMD|~=UmpqV`aAv zg4MBzh=|18Urqi4{0^V$R>+ovs<~(SO}Ea#7FezkDkushK&E5${gOaa`9BFVBbcVV zt{9C17X%Bx6^RvP7h8k!#om9R<5EdYy+5D(ShK7<4_Oz(g^|4|eYRxfI4=}>hYnr0 z_sD)EF%JFO9Rl=W@4Dg<#XC!W5T#r~`?cYeA#kk90hU!WC6Gdpe5d&eJ+OozpE5rX znc|jxq@=Gt&~{v8#=@o1MUW!A;p_`xLN&{Gq=poy-$5~#t7nS5eVjDee3fnsg1eZI zYN$P5zIagxLgjyCG$TqB!Jptq zcdEfiCmBl-qWTkr@!}D)ez<9$RQo+ujScw+bLvIG<_sxCiiRU~OY&3!_Yu4(O83Pm zL~sIY6ou1>$n;E>IeceZ+=1hNN_(IvKrDO@A3xmzMEwlf3w;+X-l$lwZ6y#Cgu1w* zUtJCxnR?DT%q#D^DbaXzXiJFx?5>z5%3nB93UG)gxfv-sUE|fPXI*^zD8k8$`dnkY z5!*yZ)$>ncvz^Aj0-Iz@Ot3xGf>eK1muDUzoj0Txc0J=C;8v2vc^6nPi#Xb*#`Y7v zceN+td7z4Eq+t9>DiT}JPg#sp&t(0sGn~?=H&ETsUvGq0i>-9_-)V?nsig~|7(yUp zL_lN#N}dl6Ca(2&!y?ntO(eEw#`olZ(N)-Uw=0n0~w> zkbbWe$F5_r$v@L*Y`)%6{&M~TW;`jx`5i_hJDOMwFuQWQf9I&WZcBCA(feKsV|5+2 z_^_}Zy9@o_f)^T*QQU8;3GG!rWON8h`J}Ap%qBhhzb3QmDZmpsh-z!TT3{?qF$faMR@A+{kE$g<}~59||_sgsoWG@c(s(rxo$A$?O})oRLnG1*zh zqpz{ws)YT4GJas_%xb+S+4{?Wo>Z{V#sh?`ty#-0rV6HT$;jeoKLpR+0oR!(5QZ%W zB(K0-zpBmDamfU2g<$N(v!I~=2x`ca(c^Siu$&;v5a5~P(rG%Q4%0zh3c+f1axQ0wi=`uBPKbnv=GuvQ+s zg@-H8z#o&V#UGgHve>}SZPUG|s=|CWz9$jSs3tOHgu|?|c9Ex3KgGt32;v1NGWf#q zZvm+~xY6!6YF!at?md9;qU7PZ55)9*crb3|w|`Z_*ik~(lB}`rBRCcMY01`AS?-U? z-Q2%;i>3Zrj><$%$=}UlIt72&<@xR4Kn>5PIYr{%WKc6~xHl3nJj!tAP`-EP===G5 zU$m?_NU!JMz9h@>sT^FT(eLW8<-$ewjw_lP^AEo&<-WAO5Vp>^H+#^vdplH)Yb_&Gzm>BiL$5?%t@%ay(az z3@(AlW94N}J$PrtIj}ntDA5?3DrPy)FlPO4z`_6d1qSLptbpDB_G`mSG3XPp3FXC& z)B~@)J`mlBOB97~SX@$A>51>!C(Pmn7Sc`_|zl zcAmKk$`kg9Z^8s_@cJnl$5Khl|3xJHULs!LtgNTCCo8!*Z(~W!&CRRR2Y@0pPb339 z7Nv=aiOB(%}`m0Wed3vbJ+q61PZJ+$~wJctPq0(nS46cMq0QzrV^qp`ORJP#ATUq{;IAt$`M z+f-yiqbJ8=HbQ?H+(#TU0dfb@e~iy3oLMH9^CsV|sj1XE&C1wv*zFz;(YT&u_-v8w zkDqI{tAZ3NdMRlMOeyap^MEq^!HLmruD>S(zBz!u(t3C6211;IsgliH-=Txu6paRS zcN_xUBOwQ=|0>Wu@;&dV*W-3&|I_>9PE+Q;{F*70lm7&kPWGJuaGCu=llZe_cl*`f zzd_Ctl}YSV%0yuOXW1YH>Ljlx(ALzB@9((`?|N93WZ}85&HI5Je!HN}6SKKpZ&gYP zbE9#$>)&arfN%?a6{T#CppVKWWt2}BFPQA+ypmE79a%T)xfY+@`1OQfJ@(G6&$WR} z9t=v<`37W`E%T~C{WIuz16PZG0Eta|Mf0Y|>d@1-l;+oZTTs7=31E(!z`s?RAi~21 zn#a^FJb>U~3ycsCI*dhf^uY|@crA*2n)`12QfQ4G1B=TQfQ`QlP&&(ftWAI%byrGs z=uYpmcQcmhIi&6zD*>-K?S9|jQ-d-KES&{2s9O_VUy8AF5yk*&$#57jV2~>-2wbvW zb6!GI*hACPF{{QrNNI3+7RG{;h~~lA_1=XgoiuZ4y3q;MOe}jvi`>O%2j#I{8e7rx z^mcGAWAfZggn=YukF;_IF4s=lU#1QwK5Bm z6Gjg%BCQ)1bS?PmDO>C@BS=AG?Bwv^4>5MO#UtA=BriYphb-(kjL@|&q(wuF zZ8}P8?a6Q>j#wpMla@$b=5Q688!G&9zQnSWgtmtw?@>7o--%}E8y0PUG{i2Wph&!i zE7lN+3zMJ3{%(5@lTbM*`22_jro0phe%)6BfluuMt6x08MCiP)!$*jQd~U*)m(aN>oksd(|Qdyf-lgU+7kHA5V5+z6G^Me*;R8HkatQ*Tx5%^Or}BaRiLhz zmn(LbqqKYkoU!VA;=23yH{ZctM4&{z>oWFFm#vn073{2KOZx9(=7~IlF-M2QXR{z3 zNWvzXR0CpE0qf(Zjg5u%vdp+D&P5-H6GE7;0@#jFN9(GP7k@nNCs!1O=P2zP%Ejn} z7ae+6PvY8{cJ?a^RhE)P;MG zF?7@no=}x+pys>#i7PRbG47rd?lOH$pp1ldKBP{*-fY45#)}0$AOn(_LHhj7Q*aQB zMf_R`#$9zE>vGYQke04(btvTi`^@m4gRG)AOBXYe(F*+nWD&n0{uXvHdI{|W3}qIG zbA-IAbx*R?OVT&_c@*wWH73F?29y7KqCYC?&i(v$bg~Nh79X!Eo)i*%nSfG-!-Z!> zo&Y8BY*O5JdGSIgVw{~cJ=bRRaV{VkHVzpu^!79U%n;6dZ_kD>=P@2%#_l0L_6A)@ zE=nPIlf1pX_e9zw8BJ=U!(x+qtEb9$$yLtI6hGiyJ(l;V@ACNlgWXTG?Cc}GyK#rV zi_{cHM&61X?dBmLocfjX5l2)B?IeS|Y^!2pA2a_B#ii}w@2YwREPc`mJo||j>iUZy z-#-;ZIvk#9*IxpJm_Y!nHDR$n7F4p!#n<{R$-}=&teT^l?XTkeCLv+JRP2LYl8RyAA|ld}g_Ww#MtO zWcSWq9z&aUCodF+rgSK|=mo6ZDTNYdJQ7AmcG5vNnPfy6j>Kqw-!Y(h^tI{V+{b5$ zM7zreJZWQYw~3$K0JWf^+431ZP!Er$=4QP=OMN?_T(RSv&ngQX^85*g=9Ch* zb0v2Byx*4P!y(}in)25xB9{m!c-Bv+<&cS(G<&{iRb^ibp(b>IOrp?!UA?KLCDmbb z()j`)mv&++fQ8TlSi=#(tq}0vn9J3M{_*8Q0e12RodY4qHO6zHz9}^jez)6RJ*npu zAq?$fSLYER{av9>ojV(4v>-`;xpokD!0CFFzLWTgA(s-juwPE4fW;pc4&SPb1$CObGt$OBFGuBn$~MRkF;*t&6PhUJ-E?Y*hPtQnps2 z=*^L8(ugSy=Q-+*s<=F6@f}rBW#YN?T=u}NVr2xSH z1iI%S$^Rgehbn(LZo~Za@PUgG2MW(O1gCHqv?k8f8LXgt>Pt#IeTq5aV*Z~WK2G(9 z)zM+QYHuHJlw63+A!9xkL4AXgF1ac1+as|=_2^NZQ5fTKcYLMEix;;-?vU<07+L$^ z(iPv`LRA8dnfi%KN{Z#-alxu0fAFd6=TDd~2HrEvhhokVBthtiqqR`a%Y#9{*Um#T zLMvt_HVk=aO}fbm{X*$&Z`&d6v4+qu7cw`Ajx%v`HFJh-*@JA7*Q*VvX> zvGL#Y2s|f6VJ|R((mH@X%|O6l6XLudE=(zQ2a&JDUqyd%dvuC)oznNeNaC@>1PkW} zkP~*+93jpgPvi(y-IeMXRZ3(SYxHXD2j4iyCgmYQgG$`7o%yG_858u%&-EqtTq9fC zWrTIGPj2%!R{OIPUQSM6ac=1%D`VW4vWS=?6W@6xB`@E1p7;rJd3uuKE*)=JRNjxG zrL4L21?u}qO!@Oh`MJSRA0s_*VLn9qZcO%_HzvqB; zKi~HQU}n!gW36KyadnBqt9+;>68APs=(~5rmTuk!1)PQnvYCDqOcppd5^!Vad<+p_ zfQYyB-2Ix+A;a2dzGI{DxZDTYb#ny8g}EVy1_g+vT6%~&n$AWVCBN+1F+J}#8Lx7<=!pSDu6@zqV^SQsl}+g>bt$OjP!Js!}wJ?hVM%d=6}yGNqA*TL{Lmpf^{PuGgUL!Y8$J)8d1hm@sQ8$({A3 zl@QALVQ!eZ%aqwr%yqT0H2LZkdu>ZBe$;knCrFELL7-bHxMFo zHamZh!NuOe!T;I0g%#x8A=xiG((&8veWd-18!1t-`o2%TO3kme^=-j8`p6Dim_KZ; zgr^8XB1lqR7=E|@iokIuoWPV4D)t&)t6v`(;yNG|0th7$zy%u1)7vX_M6uMJkonyM z2*3f64Ea-9T0b!2uQ^^y0LAkg_ve5LV*6Hr(Ef9Us?v4RPNZ&^=uv(E4VScm&8>!M zqvfLh%Ofn41FuDQc7vGB?AC0=ugVPnGvFn%$LH##;MiU9F8 z;Fi1wQ_1#&#+J!RN+2j_stNAAI*fIikObK`8avI6pe8&)Pu%x*_It2O1fw+d!t&pk z6js%v7bWp_Oh6wcK*D-Yy4iPBtbUnEfn~JF^nx96W}IbVX$ehWSD9$^z2P;{Us`#l zzE0##%8`a--DCZgyiRDONZcL%W2r*&xbsxp0Ef1o)>?!xG)HD^Pv>HCwI5%#)>W+F z#lx>R_FM<}U^=fCwsAUbYM`J1&!T*y_?Pg6SzxO}$IU%Zq{+@NAfP+j=)b+U$5NDZ zy=iq4khab)L{u)8)kM?n9ea87U}Fm3gV>S}WIz#L>eLY4W7QEh@@2iiU<6{HH#zpe z`fcei8=n_5Q6N1PVPtf4lp6^ag+Gsd)s1^grnXg++ps;*G$`zl{`%%Ai9HOxV!=@L zFoD?KF}D%F5g3lp*nw7e2t zqfk)UD?z9I`B1#eHBhu%blus7mqN1o{U6#QhC+)hGx7N*h04S%*@aG0qF&Egq~pK zbU4>YW7jkr zZAHDhBMR7jIQSA9Cmf6=Kkv@!v^RRwiG1{2ue{CT!ktd|pqvb&Hc6<27AAQ4gMDR; zC#zY%@|PPKyfl$Q1P4AC;oei+8Y!eJQL~J<)(0FNey2@}4}8|)KFH{C#}1Hd7awLR zoxNj9XSd}`TIozbzo|EO$OrpoUn1kwVXJ;3SumuQbv2Jjp-J%xAPJ|D&2yiYwICbb0TATs9yvds2-s`tThm`ML ziYeHruXCGDy#z!lymRdGcT$os93yQxt5a9Uf~J%Tin4_}*uKzjt3Pe(?fx=SIB~tJ zuI}GrI0z1cdGaR2!Tjy){Jhg$5ZHl8OG%-DIV%*wCjN&r4cLc1A$ZPiy@4ZM8#Hg{ zM7|#{33e&R%7x{4yORUJ5lS|4#q`eV|)J8(Px4|JkX;hh-L z&uj=X)i}|;3^7=b(IYEaRSFQEJV8bD17RmRmlx-ebiV4PW}hi`ht#cS*Hs0o-d-=n+;%RG#7?!)K2cxRRz*;e8zk-(ChvS%ir zttKk>&zb*#E;2eA`8cv=LbxoxqmUNv;9=8S}RD@q}BM%4l%=vSLB(Hw}` z)ZT#DA+=2x;L;nn2uyv4isaCIKsrZMa&jJuKY;Hn1i~?|-rTkg3Ql5m@Vn(r$z(3= zyBJ#}HF8}}9-RzYPYf{k&^eYoU!-T4WZ z75`o*0+_j~#b~zKX^oQMGraErodw$6-Cg6_W*pCD4!#{HNpmFk%aOxcI>IYoq^uV{ zhSKlmwFQ@ga+Ogxv|`mzqfIb78Mb@E^KOLvNb5O(e3pGDUaB%VjV};hiX`;VlJWvu#BH%q7tJ@><)nLHU3-#y9fW!?>`V1+(A zn<69fb<2rYJTZvUZi4P2wd88wcUYY9>VJwD!)pc4&RkR%=a9_kB(!UlX%6r?mF@O zTclzB(A;p;^hZ;hbK6{Ox!*Ad0N{BB*zhwTE|95oz=Q`-=%k~_I<$J01~TQS_dYGE zh9kr+g0`gNe*JaX*MhlX|Iq$&Sn4jrs)U~s=~j+{IFAb^QUmQaOB-@0LGP%VQ`gpU z#^Yf6LEZRU8r_uRQ)|dyhnVa2n5q1f|K6!yaHof7rt?-H?`h(hK_-yFdsa>KwBcXf zM$p=u@1HT$l<6{*B~F{(yy&p+q1{kysG>kPQ?BOklnkrnI2Pp?tKJPl;1gM=IKl*x z-o*q*Zt^So(=OQ;?Q)#w#{)yobqFvPLQgLx{caA$dqmSK_;q9?j zFB)FPN6(z@)<||3)1Ss#AYBro#J!UbEm6tvHBjjrH*eN8gACi#WR$0%jQXevt59jA zZZ9|NF5`GDK`K^j6UAhY>5E+l&b7XG9F3He@O*B1a-1A%TpjIwyp{0%yF%6U&2Jdv z-J84LcaMx`>z#6KDrHqLaK5sqOqsIiXH<{_cy=RzWJX)+OK@VQo&Ti7 zRZ?(7!@!MCy9?3cWDQ@Tvh(GdZ@z0yU`Aco@#P!R?8IbDuinlc;j{QxvIR#rWL4A1 zafCRr(|fzc{Ba?8k<(j6eYJWu-O60moesz4&u3H4m-Mqw>|D;fjbjmPfTke!NLuO( z2oMX;Om>w~)h;!Q{Vc5kq`#q`rQvetp*+nT3U#=Y=7MVP0)EaZWI@wi+zQteuq4)% zZ*DUuB`s0|(Or+nT@ld1k}Ft5(|NU^jglN5*t7;5xiyTdW_TN2b0y#xtm0E}AY$7B z+eK+@Hj?yHmz+Yd+LH| zU}z|2G!!Z6S?}iN_U?$@xlSHsZf-7ymA>3~pLLObLJ)-QGuJf z4aCsJUPggH1gkH5KtW}#8ixt&@ZoA8Hl|c<=UIQ+-vPiwc#ppgecY-}h>VP4kvb1y z$WwzDSg~-W4zsN1Kk2lzGhA1}l zS?oFRZX;C&GkryVdx5VhGBGxL-zF~24J0}M#A8s0>A4o^8KI@#D4yDbu$Bk$xH;k4 zLhB^;MKY&5OTRC#EXdUz!h;G_iR{1*_@)5$wl^YjNDzpLM|~84RcHY^7jmFs)>j3c zwFq#E(^Xx*_V!ef)@l33UsI@qYb!aU+_T1VTjUXa24ETnH^=Xb+M%R-))=oHR7IY;bAGYUWQn9v}^AO7}vK7 z?fkfZS*AAWtoNtFdogwOtTN#wT;lOOo{evA#=Weyt)?Jl9fX*ds#Rta;Ns%$(E{Rk zAc$sH8LGUl(}wU=s_r9EpW9Qo3j9?5=0@*Z&)rtMzL=Zax%R~oz;v)jEgJSqmw|B2}cAgFBa+wC=U%uauj zE!A;B_*!NWPp|`!RZb&v&=#F3g zFUbe%bjbhKI*1r5D1dWz({5YYNP%hMi%WwqDiFBHhsP$R)B^)GP;t~845{;bo>lBl zK!ZjCJu$+AZSR-ag90r~Xo-(-%bu`?&X1X3Kad%1}(oq>w?R#@@-c+3D58v?rGJ zf+>k^zj}N?WFaJsq;p#aNX&!>d_Dl&8cHli2R;>o=!?$X@@Y@=QN}^>z<>Z+At6fO zmSl`D@~Qc%#lvOaKKS?W}6Ph=jlrQgRV!$9#shy)-K=cO4eC2S>3G@?f1C3cGmeO($+1kShVfkb0rXIoVLDn`8{jlo83fJ%;?ZTm zx%~JjP#n#F@v+V|zI%__r=LZ;#b-@gB2=lwRDYkOjvY0b)YdG`SAN-*s%opZxuB@k*v5aIL%0k!EJEnrjQNfIPhWQgt7#o0&pURr+&<&g{`lIS zpXUV9k3h7CkfR8+$2T0kMp7EI@83%KdlcP70zluZvJRe)K%aNdwi#e?l_^g!LRTs*2ESU>q!v*Vv zNTrdZT~~UTxp2Tg&&G|Z;()RZSXRL2iiAE%(eyE}@bsggWL-uQ21u<^z7{qkW9EQX z<8?rV4Y3b0Uhw~v}FEUhcN@&mLv=QEw8E?hNGE|Lv{ZGr3ClHX!!Y6 zM#-qDwGHy0Q3IGj%P=8vGYcH)l82qKfGu}#+(3%;dTCaO`1Br~qfb*DQ;oJloEaB& zo5vJjj09UM`toAw9*!+jhgLE}Iih^p?tJcd8r?50G30w0Dc z&O87Jd`J4YW2%=<>g~OZZQ%Pj4@%n`H*UN*WYezGh-a)A@%e>ge8wP=z{p|3Jks9@ z-=l?@i;r~MIh(do#1Ncy4^+(rwrRIE1jvc$XSUABmKI!0PGMcdF?anDZoWv(5`~wf z*bkHP9vd%%B2dgK`ZF+SXerY8_Er@h?6W#rNjge9)Ty*`t2uttvNd*-6XAi&uI*N zdNZNvd>>CM*;WV&pLQ85)JV7m&MZ5oMXk=E#!7{~)@3ld<=OM;0c z2o!RGvy(w9D`{lJ052O|CjYl=)Rjd%2M*B$qrKNdhD}X<+0K=WxA2z@KSTYlcKPbq9)J(Yzia<+RXbHk)o|*^vxXf2jM^$%$m+ zhs_ZG+-a2dC&gQWBJYA)!hXL=h&;TU3k(cod2BnSJ&J##6+(f?iVOwu1eNdJDX!`p z76=IljAmdjWLc>W3=DKk+<|6TXN4&AoYj3B@9yj@KHe&3-Yp}j?lu;g3|zZ8dTa2U z_TDO4z(pa&X4Sr4+o~iu0dqd`YZk|@5L)`a%Mlu?pQOY&WUec3DY4M^JBw!$Q84;K zfy9j*!V1z~+^3n_)HA*hfd5Z;%%?az?Gd~3AlpE3Z*S4M&iCl+_NfXz7jysfglRsz zSVO@K*7~&t_o_0D1qJEKN?P*HtAezsu1M&*Abolu1c9)2f{A<+5J$1DT~!jIJ_D!> z=O;vEQkz76p3iU8#fQ$)!q$>anGZifc7m5rw37LMj65-@mH$}g#yJ$Bj>h*@y-@!b z01UtEAt6^~a6mq5QIuQx_uld}BLjnb2_Q1aYP#h>@J73ctL6D44pnK@g~05kMZpOi zzVS%W*`sW3_mt6Fn*Iv(0#74|>mWf3SjfAI3?-HBw}fQ#0;S#})z#juRBGzo&=#$6 zb1+n%C!>P7>IoKF5QvCaiF{ZqqowgGd$;)LwfYxp#r(iyV}|MSj)No}&uN3NhB_TX zml@d_RYPCD3PiTozsz0Jm@?+8w_e(dJ1{nyy;SbbFD*5WZ>3XrT-NkV;B{pyK*Kj@t6H+?L3dNZWur%IPF zTiJ6Imo)ov%7U=k8F*_hhI_cX>lhoyYX68cxA}O6vfv(3M3<1CZ(WFc+PTFHdF6uH zK5e&ql*B44D|-*ZonMpRvKO20jg{Kc(js=jw!XQkRmZqIn#(|gTnQg~C2E)HcMObv zDYCzXbK{0L1-6D-ypWrtX?5i_$l_SrV8Q4frOAR-K97EI!?c|)j>>o& z@PDW^@+jLs^c7|romjb8!)>Ls{(EUchVzd7pCk=GO%xeo!gI$c zIsvTR?tBZpB2-kPJbqu^Q}za$0sfrbAA0-Nh>hVH9=G1xBHsyCj>XpFaD1@p=Xa3e zo%Gm+@aKjvy|u6p4Tq6Rmhbd~8pA)m-E|2WD?4+!kq~k0#VVQigkzxe><5g{sjxOj z&{yx^Mi}0>Bv-KJcvaP$sGxFx;o~r!2%TKA(pwEyWkNdQUm(}mAy_%0h%7gi&s4)2?$46D`e-oc zmO{0~5+FG|ckU8`vF*O)hOsbb|EIkWjUnYm==pQYAB&imJLw0^s)87&%mK_FSIEYw z&>1c|X7WF^`~jyF6t6D2_j}8|ZQ$6w^GdZ2bSEmcuDobiB&q49(WizTAl%mmcoiT4 zMuO5|=SI=l>GY-4##kw)672e2-Xe|lU0z-nmodtN9W#yBp<-(v=cYf8Ay;HJ5UkWU z%p{JQz3U4Nr=lhIBh#)ML7h}bd+~RAb5#X_r_$L&>NhPU*=a&)Hkk0`(sp!Ue}DYA z#51-kR6^yJVB}&(>(L`f)NJ-kDzaF#{4(-DFGshQrL8E!zewy5QGptQN{@Pl{i?j- z-GW5?Eda4}G`T+lI$#rEaOCo1ccR={8~BO06!l!SC5oCld$T#P{H=&PPcx+t4==;@|WZgxQPLtE? zsJax_Q1UgI>j(~$=u^-v_#Ewa~)3rXc}^KF*niq(97wUUTQN{#Kwncf|h$2l^# znYj#qF3EyC?=!n^W}iX*2#82faOrDvihqq^IX*pQL7c}Xe=u<{A}`yd3BTW{n0zGF zIdq0_y=VoMyI?GU?iFj3Um=aRu834ei(Qh4{zR2Xj+T}c4XLT~2cG)WYKSAYI~5b| z6xN^5`!&A>U^DgR*=_vcn&6QxXL{JF@+X%5K0+=Xu5bBW4EK;5^%O@LhS$H7(XWsT zJD~g3M=X`2ZiW0psC`Ze3dU~e*m;0(z(R{rZn$j$IxZDF#v)c)TpS6wCHMnY&0;^G z#)0_K1npMiE5J{UhM9@{)zX%vgaR4Xu@v4WVYkL!mNp(r9NUyT{Z_0Pe{daSE(JIz zNqC)>fGY}Wq?b;0kt{gWZ)cN9R3 zt{d~)w-9u97=$&I>yl2`A}eNZ-e_ z`9sY7^9fKil#90l{=>uFq8b^`j?a|6m3iD0Kb^BgYceH)=sA_mQx>XRBB9hIip1^J z`&%EaYZ)zP*j28_qwuHHaYG^`LMW?MHx7dz1|!K({h!0|iu?3b?(9vk<0blPWjt*K zOSN!lU!DmpWXMKLUB&SY(YQfbj(aH}@Rn-n0@rSw>eG#3Gcc}i3g|Z6}kfDmO?&Ysw%a+}_g_jgksJ$+w z=Ne}+22MkYu^c5=QI_b_j<262S>1#~mGVs}LLFk!!qs? zZxIs*0ta{=(}9I#?M`C&5te0v#3aDvY`O6)vBCvIpcV4@B>Su$sTOrs>+|LP??um9 zks77AhVxA>Px#$tsVB9Xik~Ncu_*64`O~NR1kyqgwjb#(U*T;8H&{n(5$%RkB$B6Y zyj!=2I2h5Dl~4pxxEYhK5n^kT!eWI|B=e2&V6okLr5!j2X2412X40*nTT(Lryk&B{ zpy1#JV7}rDgE=oOE(UvgeA3tcsK-NghZ@Zf@ynMlLE+)8z}#%7M{o;}zS@IB!J8o#r;Ysq7K11NY$)v@zdejE(c*3XV#t~Dx zax=xATMe@IZ~p0q2<}xQT)Hw>6Gp%uqLSt}W53btk$i_7 zKQj33If~Dsy|ms${>u5f*|P69%C_0XLk@+2aRbUf5RP~EO-=+0JL{V)!0`>zfs~oY zI9vaYy5aK(PnK;l=faAd$t}B#5jH2mBSBgu@;eQ5FV0E_pIBM2grhbW-o=JU%FEIY>ps%|rr$ zU!ufM#OnmP1j9=0f0#w!8~{7m&~EM}d=FBo%s`L%&w3-IU(+#RCf_V1Icam+{`QR3 zQ7i4SL+Mvlue;7@%%&-8C>8qMxmq?w!vunH*TcN)>w+pzR6!x;_DF20^J1(rC$RK; z>QCi$_WBGYjI?)jGy=zhm<{;Q2Keyx0g9Q$bRDJ01&j_1K1^M(uOA5miF)HhsNt;0 z9YH?yAGdco^(>jQKa+$`et7xJvgF{V)5Pvz<2TvRINlHX-)4GeO_o*u&m&bM7)P@H zT4pxdNUr+Ab(5Zm#q}Zq9x+8 zEst+|l7CJl=m`=)LE}P!{HUpjl^7VFrso18Oj`RP7;7@qc^PI8f*uHDzm>LoUMWbk za*jODCmiptRs6emUiHS zceruR9{?e4+q`-?YHr@ z+D%t}Z7@j8<=de?PzTHqDgFG9{Wf=A+kuG?QhI^t3FgZDLwBG)9@B!hlhK z|Ks8f*}9kO!n-YTeh1b1%4t&t#e>k^NxbR0enM>D+EB_)>_4v!+(z^?$n{0eE-r+? z$X4Zj(eunfv2cP1=x@5wJEEZ62<|8Qrh5!m;7e8vlJPw4_C-&x4Z|h{#VdPfPfKpI z=AWUHp%#~$=3Bl=niI1>XWrsJQ1&c`-iHHw z1wuZ`^<#la#`+TI#Q0{DArQJrSzPhj($I^v}w>%e0wUZjP_P8 zvm-0t@52467!mbD!;X>pCfj>_d>m<-)cqM)$8=Opc^X}GzlkAw& zp!vpp`Ypjf_=%~5y`P$rRIvlDoFuw;`{{tGBJ6VtI{T1AK-v&uZDTU@EqnAwCA)yC z4p?1r&+ngZq|EyV5)?p3Ej2ECo5!1mGP&Tu5zlD4YPDXBqI|l2pY!l?1JCX}gKjz| zLKaW3|9o93i{?~-n5`Uwv~3s2)xMJ({(?ighIgH7-vm!%pXN{g5Bzybyaf8$g_BWPD*brCl|UPQ;7#^HfAigf`-Q<+S0@IL#f-@em@cTEf;BZVi5|S z?Lj6YLu>Fnfv${8ql8crQZg;l^?4A#ocf(|u>gX-HWa1e=tl++aO1DG)xsD?lx!l~(udG42y)puQD>nhqOz_3_ zLo{QYqZ>A(nbVt;OnkuqM9M$3LiyUtED{o`@!Q4bs@@*L|3yMh)1di9LDqQY=pJW> z*l7#s$Dip+y4>lJ8;U^Rrr#06)WLlPfD{<|Xy~&WZNaeM_h3-7dHaxY@VD@1Bf|}Z z{ocfN(Z9U_e8y-M;zf3%YGLVR~3dh+!TvaDxkS6(jg|28y$zdIFaDD%re zxX7e5c8~H0pvyh(CI`NqxhXRuP3pjGFdgPN1Zm?4v}v=dcO^ot`(cdUew@ zByx~ zy)ft5K5}f`HJyAh*sCcJqWw=vN`;L$iW5iY0@Bpph7xlSRek|6RZMAK?>Myc(!Juo zq%2NA!PPDf5>Z2bX&uTK3Rbp{-n*G_aoY|8J_l;)jk9dYzTvw?urCsZie!Y`lk3~X zH;{%y2Ig&?s8O6zKG}62Iv01|rT-7Yz4yd{RA*m_3{QpW!Cc43hy->FaO+s2a zO}pL`?u0YDy85L?s>lCsr~qL}QR5YUO7%$;wkY9VcX3x%`*}bQ&7S%`)`bas4tsD-*omIUI%hc3VrQ9ls9svTb)b>hm z4y~FXfMSd15wipG-Ft3Bnc3$WaKYG%StMJ}Y0XT%0<%j)jUX9+S!;z8eio)Y0}7Sz zSvnKe4d`yRqc6<^19)q=@}x;V1S;ihKiu>Er>-I7hy)Z3(17RyDQ9H-*UeJc>FIq0 z_k0rwkk#K)Mobb5w8r6R%N``RVc8?XLgVU8T@Y)pO1hyA%QOFx{rT;MCSZnvSqXOhiE0lv1mtV*n0?RM z{&@Z3J|c;%*9B2KO3xXY;q2}jG$|k2D}~0~EGlG?KJS>VpIg(m)QvyvXlcNS__5cr z%;Df07_I14qLhWo@heaC3Yn;af-0{-rva%Go>|cZ^+AS5Zkm*;bsi270l@d^c((`q zZRavXM#jGBJ?d@SS&4q!BTHzh89!C2ldLUJpD&XeYU&l+)4TMbAZZMT7lO3Yw33fE z)7Yh~9=y&E2Zq8`pw_SeDz7fLI@4^jJ>Nu`ydx@GTB3ek~3Z3@)`B_8ej9S&foPG zI0hgVKH$t(T{=kuN>*Xmj9;K8y%s!}462EWg@!zoIQeFpwrpthAMcivqul(W`L z=Zw{ocU@y2dl}w-Mfc4@W$wv>yHdlC2JG53hnB$FDZC9`0i1tiJujd{sLXc}EJFEu z9>PER9&2PwMpM_K^y?XM)?M3!728cGh^MC@t>1^4b>C9 zNZP<#*zn~GEP>94onfYgcmA`f6eVbwnLBJVIcm0j4dbs%P(>OcKIHokJiP~Zh$CZ? z-rxx0_aEz^(Kd4LtQGu}(NRVVGCX97H9=So#Zu`}GyZOa+g$I~BbuY*=vnsTDDL35 zs>&P52oZE^x8dDdb}rO^MWG9}iK`LvG?3vwB^|C;#MmeF64nF#o>cv2c8cuj=c>a& z0$r4)WT3SA=nnafp1$~unoETs{6B|j!+&IJRzJaP+|RuLe)1P&Kz;TK-|ww4X#_v_lbayK zI@U*p*f!Tl`^yXulH+ZVzFqlwFf*GgnZPMxZ%*{K?yH$-v!CieyBr8o0NEAZdUSO? z17Rs?@CHG}uN?4)Mv9=>pa(dJTC9ko2>aPT>g=eA0U2nSkn)!)*JKL9?weD~qD$n( z*|s}q3X1dFmLGrF7j&ue&wpnQgg3UNq@?dbxgW=>O1p%KS1G?$czt3<7(o)jI;!?= zFlo$~f2mS?d7HMSeOd|+z3;v|8&AfkFm0Ds9%Jj35?LGD@2QWPev+Ijc<|iVWj<|j zzWew7gVM2p8F3)+#hU?nXt;2XJm7dF7LIm>80fGdxkgi6T2G7T3RV;D#P68Ah9K9L zXEx-$iCB{t;%RqOXc+9L&gG4<+_*JZ&IMwf{`fbgah2b9s#!N?A)AhU*8LQ zq5a7>TCS_~?dWixuFoz(PamGhF%r#iQ`)dx-&GP0fkd718f* zZ+m<`C)xixjqEsQO#YYOn<~0U0ECgS?_XZUReBnCgB)XFSgP&Mf+29k(b1(6TTb++ zT!t6($$#WqNYmP9g4kKmQyf(39lhU}@zov=Z$0qlbgnev%6+AIX2&UQL*O^}4=Ri( zDVjMrTRN=O6o22Cl~z?%mEY|!*RZz4A4omll_i|Qm%>D}H`DYRcDrf#BqTb`g#q`!*WC$MR&j6hW1PG(l`Jr`l%9A6M9=|`Y#Ty#~-WL-R8dm-w z)^ctr>bgQ2a39gI)1%V~pHcF?veV%v+i4!{ULm=&WW@53n@ji(taP4)1mcdT)Qx>f z@*QjP16qvDUA}+Leqi~l1KXa3yA2D#zbC}rr(^=lz4TI@qS}SxwdsyYDKCa4PI}D9 zMHog&n;dd&>XE&aWr|MM`U7lDvr?~>Bj`V+6$YdNPN0eqI(#pGKUM}9aHgW?(_hh5 zXM|C$nvG|EprXgju#ReGB}*12r^B&jg}fClDTnff}+%-PPwPT|Ow`G17E zpc5g8O!ER9jBFjC{1!E8a9xTwrpe@GUL$x6ssYmvd)VN>&VCQAeDm1dMF&r|CD~7y zi?sL56_Yogu-BDdHN3>Op^Qq)#?Dr{Ep_SrTk!^9xZe;UyV}^Il9=hiWt-*Fp3U(i zdp4CM5s3B84Qx#+xnwSf%odw#VVKV+@Mg5IdwEuTz9ca;%38)o+z8c7`4`D&mVz>S zO@5o|)Ng&;;B~P_4QvJQs~v+Ca`bpOuQpN0El!fX!sFhx5&Lzr9;x7&t?tKfCyuar z^r+IupZ;ggo4d(L^x;EkU%e^~T3NndflkCY?q3IZ_=PJ&P~p7u$Iq2&1nuWsxAtAPas9~x1d>PDAH(F>-kS1a$qj92{10ac zAfPJnZpsB0Zj^f)AAbkLV0={0*MjX2%Jl=(1EWqzD;&VfW=Nx;V}sR(Z_IL4(D>H7 zxYAiEVM^9W(;&&Gh1w+ITKFD(4Sck?{`O9{FK3-H9k_mp1Oiz8DH90pJx_fUh!Zyn zh-V<3t~~duFZ1R_&AU4Zb!tj1A6p~Gk1Pd#dc1Uou_TYoSx&$HUps>%)E{~ zt9~LsodVU;#1pFOV8dBMeVog7s$X0v{@gFAP;I2=A9%z-QdbO49{?sBfU3_FE+&Nj zL|Se!nZ`ZpAx!g1i%jbcm@@I6iVTIkUc_$l<=kD%vFYM!Ohp08b0Jdkz(8jfsP9;&<80ibUH3 zbUIVe@aUKP;22}bToyI(2}qK{4r|3x6U67%s4dK!v~xZgVa_G&v&;dv zVhbbVomp}A8nrP{*G?`jnPV;592p;f=Xe7iXlHnfv*FEGJhuYa3T{P=J*mswWvyAy zluhBQhI_uyhx$}=8rUOTC1@akzO~Bd2cC8t@`1qX~{hrj>jX=g_hJKAGga@-x?%eBaPCqGL0m zykV0!{+`9Dw)UctImj81K@z`*KfaC2Hr|Wvt$tGf)$A`OhsE(ETH(31f0Y#fwiZb)o{h< zmo^(<_xPepG+dZiB;e9lNE!EzJc^gyuI-FTrerb`v04~WUic>GPx+6%d~@P#=*`b8 z5zv*DOAfyTuWD*N@-uUgsYf{a=lempub7bia1(IFNRT`WcdUZ!b=|*#h4n@$hYdeD zDM>L~DZ_k^1~B$_Zx}3-+WfS={RzKlW+~l&NHMI7LWtY;puOW8zG=Z*o4&DzmpMM6 zwP=VwR3`XKfx#Xhpq-@_A`#3HXy$)4T=!n|BdxBkf=(P`S5l1(9Ua}kz(8jp{fP{( z!S-->_eLI__O$C7TYF$>Cp=aVc!+9L0v|1hzHCL7&tdHM9sC0W=Yh|pgoFeN7+NK9 zD@#soP5Raw3X|f3(e~!ONZ{~r(*AYiwTnnzXi0C8b#RiJ<50WufJi5{8XlG-zL*Xv z$)Ur6IR2$n)`li#+J^(;wK^vV-<3M~SGfmqMN$eb0s$;HxWi&t0WSZB0=o;ojZ$k+ zpV4;P$zi27kTzOqyX~IanY+{V(yukQYvK5RV*;*K7Gu-OP>1Ew-suTRtyy<-$;eP(=&-%NFg+&uqEg%koq!Xtn9XVV=3jKZoM^9L z;?^{5q$x9fW;T+uF+<}Ewe8VPx})6X856Zf|pUb1H<@HI;2CQ^HI?i}vz-3o7;sB20@?4m$;Ko<5`RyH6aLay*-Yk7U#8lcU8L*kRyZ`P}l<{nVMOeXs$d$yQv>pyU5y_h|`VXho z9Ur36@>q-O(%LEyfW-qMd^Zp9#wqaD=iel1&=s{bb*qNPIk@++=bm_IzT^0dAb>t2 zjR9z_5svSDXlqEh@kmhbN0ZZuWY2VS4=eh21%QhXVj$R7+ zv~gU~J(b?G)j8C=An8A{6D#Fe&p%}~xYracecbURPJnDaGBy^~+S(fAQWZR-0X$vl zvyNR5h|AmyeAWBRN;@iLlOBFX@n)1w3P%g39-_557`bSRm46M6B?d!)0ip(lq_Dj?-re23uuOC zRz9Zz3!{upS#jCQu(01q z8Ri=_atG1aR0*rU#UrBgRW$p4kR8VONO1m(T0|4PIXR-D*PHs=foItwDIH_JJiM(2 zQY(Vr7Xi^pvlGj@sXgDF%}i(-OTqH`^W2fwc(cm4XFcX2XlI2K?4Qc-|Ce`%otB_& z&FQ5t)U^HoQT9~hWph%~5ODP~BNOwzzNOw0V-3SOsOXo|2fP_d(cX!wS zusvsQ+~>Rbz4Aiewbm0e#vF4@|8L@`*q8n#^{@@o?Q1%}d$|7NdX-AOwvHHv$(ey_ z9CdW@v34i~aw`g?KI%L`hZ&%7SH4~bRi;m%iO8t9NoJox^0X&oJAu_8fc8|gxW zDAuY5F^?IQSxC%4xKE=3^B^q73FU*o0*v4G^sWqxe>aJy%xQlCrD#FjxZxyh3O-3`bV2m0z0J7=dYrZ80<2?}1YZRjop(06mUL(Wx z4z(iqCj98w=_ePp0P==E6^21Gwi445A^W}k{n}xp+G!LRz?kfDU0hx^@-J8UuDF5b ze74h0w^dhz8ULd=tK-J$-E1t~B*fG8-2{H*nXqK`n5}ntBaTl4%us_1>=C*v%CXz# zl{-azkCw3U2jy~MduFAQqGCr7b(@kp#?kYE5yj_HNp!o4Y$U9-f0-$$SfNDI@sY|!yT8V+%z6s^WUjWf5j=w6cnp1v9uB2#Ss*iN$P<6R9tBV zBE#D}EG(rJ(~i@Q*B1^cg6?(gi&9C7(g=sfeF>S_CUN9!Jrx6^QX(MKx6ILYX(R)r zNHH+wIQTe**!*XnZI`>hV|RXz6zXFF!MNUKDvIw$nXczfohH=!-}Yn2ANfFD26GKr zTas)@8WQl;N<7BRb7dmU-MGkd2#;HPtXnSxIQ8K?0V;OZ`p2w_?H=_9G)vN zGRot5OH@5oBLE-#s+A=97m|;4Mzw%1sAc~kUVnJ*A$d3}BE+}a6l+#H%nbc~)mr37 zO89r^)+R^Rfgkb5uN2qS8GAvl)Rh(2 z{!<$BT{7hnNMcgbB!rR65bGpR=<3l!V&YirQ#<@UfU@4y8U!4KwvCC9eTm)@oe)e5 zg`r}UHz??`=ezO#?!bp#nAgRnVJXMy$9_wa+fhYR(}XWV(8g&bAQQY^Z% z8|HsZBKZ2I7hceF%nufTr_>#XgVFz9cI=wG|C29=@@y(JczLSS?lN=`;TpDh!n|Uk zQd}jAz5uHu-&nI+pG~>{JFyK3{k^=DhUEiHpb4Z7Nb5@;{J0+b06o`&TZ_MY+H@*V zQCTTsyi<33a~b)No2>8LaAWhwkJsHl`+!$6Z;$UL`th}Ut|SHT`*ZJox;cV@+THk) zu1&;Q@wfI*zE*L~r*I`@9FxZ#p5NNIFq&N*epMPreJ!7&>Q(Zp2`<-Uz+lg@!Q-%W z_U|p7gM%Z45`=!%{d>s|-ord1B9h;@TvhwH)?Teb?CngIw2k{Uk9|)-3 zI$iB|0l6v<%~kFLU7mU;pf=LO+sZZl?&DXhx%sYc4o?6r8ReMmFLVU%E^xwk#tJ8w zqhne*q0}dxW|rsTm^2Ls@l0)FqklO(cG{NC4|?^gvtfz0#_mFerN!mw=Q_4r>pc>= zw=FZv7C8T3+3xr-Z{EC#LQNu1yIEJgu)EHjSNC009a|OzTY3i1yKUuGT92)PQI%QN zfTE*z`S=H)8KS0Ygzt>zS2PV1?I52Nu@oUbL=`4RpO->g)>^QWttj{7Cb0*AB~8|6 z%ua%V2;ww<&^n`4U~1mKEhJpLLiyT3pHug++o_w<#TeUIq07wBedp^W^LNguS>un zm(GvEZ!blzAg8xp2gP*l6;pe$@l#PFOT@w%{I^VB^$&k2Ej>1x-$FK7IA}%9P;ozT zG;2mx{qJ<+yF2Y|fP|)j+hJ9`ST$wU2IO(E9=z3#tnQBPMuQ?Rc^H{1e1vLIVA|H{ z{%Txf%71TXn|pUUS8tCS@!78|j=Ar{O%ZhsL^S;&T^y^p2FnfnLBV*xwf;aPd6zo` zJ%lD=Xx#Wxu-A?wH)kSrNd%;Xo_ZLE7n7?mv!4S;cKO}oFnRXKT5>XKJrfYVco&_A%Cs2Z}Cl+UJf=2aOS)wnm8BEA})w&pP39Vu3 zA4>0!ub7nTzi)>O{%f)Q+O@4Mzm%5) ze`M{8c!X6@rJAT~i6&`0Gbeja;ADiM)cg|UKP>SbR~ikevLcWYbVocCbcbanteH{J zaHH17-n_o}z^)Ku+?g6b(3#R2!%Elo&uj%~l(6^SAiu|D8$Sna&$=BUcuspQh@gTM zmbb2~sEFg@;u4S}prUCDe{guX4+hX>R#o8xeYGA3LtVh4U9UOp=ZjA6J*sT;8Tcqs z|k!)nX-`|2+T2hNvK3Y9jh(5h=?x_1#dPHxV>p-`!zjfj0xu(#rR7^H5I)4<$ z-!~oX1~-Pc9*DG_y_OR=R`O(TIxe!F2T-TDo!!?D7x|uDtekA@?2%>h_26U-J(i!f z>Y^&y?kL{C80T{>vm4ftA1r0oCy;uY65yGBf|pQa+}HoIl~gC$zX4ae-9YW-?>+y^ zTX>sd$rp?`-JGw+;`ZJpZFkkW@p08BEOf)7o(i=$7n_fS0t&j{^#kQP{`ukClWK^- zia7y;D%81N`9usw>5!?IhzN9r`ZlXhS1K-HD9ra0PX5|$wJrQ|&nflI(uEve+&48; z?;Qq?R4p2w5p)oBsK)S-7p!O^6g*;DC@cJ@y$&RG`$%ZgP)?vv``Y|^#$inB>{DRJ z;#-zTptm6rFYF!&8wpVhA$^ky>Zl@AKju4l>JZ*h=KYu(W`_jytefbmf5MhFF$_KS z2+dSL=Z?XBpGI~xThJF_cbq!Wt=TwTNk?oD-Q`351_Yx?=SF&8+a4!L5H_SUdj7=8 z?d;WgDN^Ee!uT@LPeTrZVPBs0)aWXhelPakat%FZVSt{iwO^%k55s1^{`&Rnr+kP7 zaJMWlFaj9lqdR$$Z?y<|HZ0fdTpr~fn02&S%gA7z)ZkvZ?sJtL_~t64tNFa5FP8lF zQA28vyy zCdf*3-=WmFF*SU>wZy)1Cw`O4vF8sv7@XLkx37byv?e<`UlginGa+r6m!#XAtRpLF zq5r`6^U`8hsCDPhqYpz9wpIU#-N{pYfe%=wwV!Elj@l&QA;H)Jt)`*)j3H)loS-T~ z$m@-H`b_`W)yTB6cK!r@9uppWFBDPd4I2MEmJBa?gZ{gBMx)Of8n&iP2U0_7{b_4# ztRfQ5lhG@=Bksw%c)?_e>w?^I&!xjlQsGW*gopSJEg>X_d6QasW-_5Mu38H}B7lwr zcRiS28O82{jXzNJr8EJ#P~=S+9hsDa8NlsMIsQNkP<$&OB@sgbZbKEHuPNWUd|M*1~-Y4!zl?zJPh>O=C{;!ufxGcrVB&G)UCo8vq+bk3tO6erdo-x?*cSAdiF({o zM}`*;vLMH%M64jDb2^ z-FD=FGP{F)`OUjoy((~a|1#)zc&94N-IOcfE!d!3Kqqz0`sd^b2kyJVO_plL@Y}X@ zp=;vzoVy~TDyR+6>4ay662cfR_=zPHX~9Oqs>Us--%Jd!;rcmq7sDEcZ7x4pw|%M( zTbL}IC+5&$phEyj6D{jkJZdu~_!ookG#XS&i zL7j!r7dLN~Km_@VR)CtCw;~N<+Efs|XXMtg;SO$S!EnZf3Ey~e% zBzz8hUwqW3xq2fL;z0!K>G!EUG%U(+JGHB171h;?-=3zo`@o~d2$z!lOo@;0auDq5 zd1WlrS>(mM*2X+rk4dg%>GOS>ar6X_-A$CPtU&?lh7dwHUg-1ETv&cNQ2mM^i=ARd zx5J{We>X>wS?RSb zz0=8#L#r^tD~8qvv;7A8(Uapq7#qY63*AbIZy`Bj4_Tk&5FVDBEQS!pH=E5R%?&w7 zPCWek!NBJRJn5+eb3eK%zAzN1lmw)plYBPrw&!bx79;hPCz_YKtOp2rL z&VThYpDiSr7mG+s_p(M_EHirs+XH?0guBw;rF2 z(_blJTUFsl^Tdb6-@FMSH7lEm);v6|_@H!kLVSpAzT_2XT9$ly_~l|Z>v3p$38}_$F67rASUxelH?tC&AI^WbQ}C0Pt^pWIpbUV zxG#(%7VOo#*mY7zwpG00RrZdrzj)Hu^ZN}Og--)3+Xns9+Ym&3o<#ym_&8M<1aI_ zMcNN175d6X%rgR93TR%+!7csiMs+AXJk5I8aQFkQ$P)A`tNkr1Vm&5z+|--9;@jU} z+?VK&8%xR}5B)I)fPbMcJCTnQ#X*7{#05gH|>R9H$1Wn*(w z?(Ep@5!h$}7>p8}+b>sG>6|+)-f^(q=c{CW+OwbdZ>yfXEi);`dl(JFONbFNS3-!% zXbjc0xo9Ihq;^)auJhb#;Tt+aFd1?czytn!<#j7i?}F#ainpM~BOxh?c&DKXr<{eo zkrgTEGq9>SdeJx^KrBdb6}#QI_9?W~cWYA${uyhPX#&Hp*M6e&4DD>-vw^niPe8pn)VF_o9M8j zs`ed(k98Tmo!57}4ci3jz3#VVzyAAmck9@kkAF7sZtRgo@YSQUI1MX>ey7{()2zZm z3#0+Tcex+(Q;iY@-FcrSb(ihYDt@NvQhM`-HXZR$(%HGzPSw_SUl(JQ6*oxATLma1 zML;aNLdiLFyDl~4ue#FRna=2mi!k7AX1YARm1S> z-mBC8-q#3R)3R#4<0^>0#x;hMRIlwm`H36&rAU=PFXqOf95fGrPQM5V?+T&q-7B!S zHrYFUA@6aokHV%0o>EdEFhlM1mp$g>)YLwxBIpB_V3hY9Q0E|bc6OG070eG8FHo%b z3z+h|L=zhcF5;rDsnShRQ8Ch`FPiUSRCos!3ei^t%*l8}OZ&E&VUbFww}jT_3p|Xz zz-*xQM7Za!m2l|ya3VyZ_OGcW!GY6rUY~0pye@O@2=A6Frxa@QDM@9;4wd?WNYeEO zUh+GdsX#sx^=NRI(>cpCBd+4wme}c3Pid^eqpL05#m;%E5Lg*+@`#lapD6B`Ci^MG zW}*T$f;&X#Ua%@p!3*p#)UTemkNrCSxVoIepFAtC%z-6t68%UQh@5- z#1LRy3tSmVPRE&J^^TDhI5lb?9UYNuMkzLxFn90Ra1+7_Ejuo*p|9c6rl-5zVhK*p z!k9$j(7$i+d&@CJ)s$hhz@Vh#!5;D&Co0*jrALh@D0D>p`c%KYKWs?qoQz>M@YD6R zUf2QV%jzXadSJ;bp~p{`Uk1F&*qt>$w~xAV4m5g))P4G`sr9r^FnH+L`Pmf%f1Oxh zb>+e8$F|Tb9wV0B!~?_n$bTcyZhD9yUw^so zHujj5PoSmB=BAi~6dVvdKPOwY0*XV-b=SqBwdW-KB#(LM zNB{nK1nJ21*`*{0_u!UaRT2E`l@t1FS0KaVCnleD6(&93I7grG(Fmj)#<;m%&v9_P zdL51?j$mcmL$I-05nBX1!4$BRJ0 zM^N7-B|I9me0-OtVFA@t-yswfN)QN z=KuspEnv_sWbV!F1fwEapyF%VHG8ROjngr=639R`sCpW%FN4>!Cu zW-msoBNAaQ0BWaDj7>k95xhbvxz&q(C;?;(WwO>JY8yPVDBPPg^KnmYB@Eve#;VCLU@<#GMTs*Y5c2bBD81vh8IIWenm>hC=9-J zp1nYsWxsqZ(Y4y-xhX?Eobe+uB0@X-TDd1(?!p-VK*0WJ+WI_=Ha;$T;=QUwpjQf` ztJC`rElnmKLl2%)4Y?+^(7wjcU0O0!Qc;N%!*N0f8P#LBB^O9ZTvPZdJ!eMYGSo_= zVkCUB_`?gNRf|5hx!GA7VJRzUP@16KykrEXMm=?RLQW>?Uo)byWT%Zz=Z;Cyxm9Pw z1Cpo+M;?j`G}HnyohV^b8^^ zTQmJO53O74*IafJ9u$FJj^_@bCD(K7)Rae^mC2V%pKi-#7AFay$k2rp#UX3mmGTG= zmR+fLr@9j{J7Sl-rrKbe4_0GZ3ZeU;Ek!d2?B#W@P|kb=3k6EaG&ZZU@;}4GUsXO# z9Ek{`;9Ko7xa`1@Pf!TTIS;iNTC$HOOvd`RJyVB|Aaf2I#mD@rRasd%Uhin#o`re4 z>@o{I4JKs(pBQ`8$L1d|bLloDPH?LT zXG2rY!}>4v8Tkwy;?^Y+g#{+fy>4ctGii=Ibkuz!#viZ=(v*XCwYmM@rX#*6^SKvb zHK25hG}_G#1Y_Jx03o?AU%pWGGm({i-r|A}cs(btf{sx|-dc~hIoRk}smT&^bM=ZF>63ha*a(AvhT(!3N5Z!`0Ue4N=$fjza{YMq;?=8b z%}TV^o4r6GF$06F51&-~VFbarFCoW1d5=dX^hbD!2Vwp&R8O!T%(_nXOqF`b;Z&)- z|1`YQ89#c4=!LZJD?G zrR^Y|o)W>c{z0YF@xe1cdqq}`B0`T!t2X_#jID78P;#po~Ai12*q}dPXgX?aqY^(nAlj- zMVcLe6UZuMd>`_M?79$5J#_q(Q;jZB1g%Yk)ua!@iQDl!|NZc zT;>Q(^?SUAojJ$5tM}3%u;p3JFX6qGc^w4=(sRONH*=5ic-ksUno4$@gnEYt+q4Y% zmV?ZRu3kw?x7`_E5YBw8D@@U1fSm^+`y;Emb!w7YUA)Hkx~Z__L8T^Q7x9Ea?)UF7!}a2a0oFx87vgA>r@>2dN{kbi0B%Q@{T_;RAkX zEzSem{-1EFVUsP|AzgoCa{x}#)kNVxU;4;Gh~{)Q9~e35d7g4vpmU9a$-f8X(~@DA zq6y2x%)FadG7pA?&z-@kcUa7>zHbP!Jgy%coI>JI(kG&d<$g(6g)1=X&V#smorV8M zq4MyGe@p8_z_)$1GrMo+H5p6%gdBB?^%RkJZK3~7l7(?mQk0;^^~)%Pgml)G!5`1l zrH6Iy$Jeo4wb+2dEJ$3^@?R~0loIZnHXx<@YU^(N-h4RM3{qs5Z_`ArWZJ8&A&UED zyzCaxTr#EO*#b{62mYN`iW-BW^S4Srhq?hWvZeE7Uk@#<)Ypz}=v+sT2x4494CqA5 ztDH#8`R|sMd7C!P%cztRaGo7H3VHhNCi{VWSnZiU6Y|Vw4|u>3uj3-#3 z8p>{+_vH)73g`c4Nc`PhFBhJ*FLR5#y599HL4&!O-u2+hkWTlw$Y2aRvmbg6s zmf179Gf`;PDGCHSYp608^a_0&Um?QIrdk3DzK*crr@8YVh7Y3Sbp3|cNs3qY8}8W- zTtXa}gL7FyVj$py3o67lr!%gx6s0Na^r3F}4XbIcHXxBd9=M2w4FjEF@4F3_3iUwc zU~UPH-vhI1bho`J&UbvW6gK=s*|fb-Csmet<@Pz6+et9=pjpB*guI^*D?FSL4jvq^ zGTS5Iuk?$`x~+WU@GAM^G{zu<)5zU(VW;{1t(h6``m+(q`Z+um&CEV84=|WcUPB{v zWyN?|{ya(uh^!b{E&_$_tj3gMT<*8f=|X;Tbn0b#);JrJE*+xQVMs@2kEk!7mjruH zZwE4C`AFgUDfGcau&>F-kOrQM=d1EOB|wNKyDv=!Qcl7YFSn*mRG3~F1-3bQ*n05g z#cZ37vrX>TPw&R2E+w^qP;>pR?tE7fn#mx)<*mS8-j3z|`6g7mM2iTDF@ElKa3bX4 zvM74)EPCW@D4IQ6+!ABE8oY_F`o+@!o)`Q(IK@QBu%I1t(k^9rKb}#eiiRqe>N}I* zO}V&-zszcb?P6y)AELtL)a=bkf+Qm#z#X(1m(z;qW(@`T_`sM}YDym`*!*(-0h6v& zVc=>+kHLAAQPGJ|B7{^fQqXrZlGnOm9#o-XhK+_1S{bDu6>Zwu*I<~!!H8Z?{h3lC zJK#R27F>r2IblJAVjT!sZyckjvonv!#c=w7F8)x`9c_A}GA+v1)K7JOypr10$eq=#y95%GYXQ6_UA<5?9=g$P` zZm>@Gd(u$E@|%OjO(7ZVsi~<^<{JUaFxg!S05;vJS;R*}yU42|IeD_MLgZO4}* znt)O{=MxTPHMNN$%mp$q3;UCo=5F=ZT14_#j;z8a0%T*xLh8^5YsbfM^ZW3bC;7Up zU*->jbW4MvRzItjx=C<0)tSQRcc9(f(%(?ZUr(G{f@fo6yD)*do1w}xzZ|a<0Y)LF zUVU>0djVyI-RHj83@I&h!7;NyUpVKaVADLG-{a96>S!fCX*Rrk0Um zYHn|Lb91;5e-ZrZ)8BJW?`%qELvty-SI#fMhsrN>J=$x-B*%N*e{nrh;^7aHwhSQ- z<*yf)6E${kA60DVy@cCKN3i=xu>*YSqRfAUaM}Q8^wHSu_01^+^W!(a z&Ek5il$WLTxP&g=+pkV9cSd5z_92-CkVdP2j$`<3I#}d|ja5tDZg%W^k$vXCGc>sVyd+_o7~lNzgtw7$ zxd!DM{zpPp=$Z!TwF)!C;A0Q_58{)niE65x0_Jls)qYQ2`>**H!&SW-L|ngJ6?7S) zync8dqh;ruO>9*I4F-C+wu|mI9Lhcsc-NkKM+Fd5UuBsjAqA+~{P5@Lyp3Z2m*z^w zr__Xt^O8^;sgi^Lbk=IT6tNIaPF#~3~ zfmG-wrM6Q3PF)t7u6<14GuB|jQ!!#j z9I_gUaV|)cGm^`Y9+vq<%eiqkcsvfm9zei8;#lW+5gFN$y~SOak{p;{iyXwh9^s+C zb03I?f=58=UL8+MOM^c4Es7GE%WBj%?!1!_qeO*!F0y4g5lQVzuU?;|r&EtT^OAS% zCogxSETIEJcG3eq$K%!=$Kd8t=<}D(3Go6rhxW#-XT*uImH%B-aFPr(byZ=Se=u-y zRSO|$0_Ymf%}5u(hy!nouX~=Ux*Gv~{U~#UfkgJ)k`U0w?454~C^3WID<4WHV zl8}##>Uc+4pVl!0I=7fk&zOR)3~EeO++yXmxx&aBUz>XL!_h4XD{*?4l9b>TcIsw= zqn4E|Z`mwgt|fo9Lg)qxM+{}$)bRE7C-NOO-?CV*(OdiP#hoN??h1?tA)roh*GmhA zDh3=J*j<6BsAB*$W8SDi*eKjUZEI0d=mL8Q?JrY54udE@SY1(t<6tR!Du3TO3G)T!_pV6{FEi!oBHi736a;}`L(8;&j_P|Sb__b-5FReFVf zc)HNgTFy%49^&*Ef4%H}13nFlEPQ~#MpA6-2sxaf&7833o+Dt<^{7Jtzx`qE(H18> z0`uHHe5r>HyC9RLxIrK(Px4H=ALflWVJ()8&i-Y_ZJR)M?V*ShPN9C04$gsMQ34Mu z(Mw9KKWNMUVRgOtmgn{Zarjz#XfmYvKis)s8d1sn^o9|SGcpc7{<9%CZ^&pUjW>j$l7jGu!P2JOY>9DNe53l@MNr}7`1pT7uhYY$3m zT}vyi5J#2WyhPCvORxORWcYO>$Gdf3G8r4nNxInKqlgbWzCM6cJ&OA`p>gq*t{6=7 z1CHMcWB-R?ZAdJK;1X7N$%UECyq<|@9MQ5NVd(lnK<=Gi;LyA&YQ|v^uZ6gn1IDhL zsm2&~Q3-{&%tFf-0%vj05rVUjhih{=J+4%Zewl>Ptn31%<8cACP~UzaAsLgwi{J`* zhU`C9(mGL_3wnX!+Bak*NjjMC-yD`Ecv(8A1^@v6dOu~^^44IZ+?$M_4vP*{iRlU|CL!#;2Rdy9OX8le@;HkP_M=@xgAi>b8CSXuvK?(S~ce> z?N1Ct?Qnri>?fk#V94wLfl7FNM1ktnwUUz?K<4YA*c;N`J$8{hYXH?NiE=L?!q$4e z4F&Zv|F|l$$4yrzxI1T#?Mx0Ua^fRn)*Zjp{1fzxeAF0rEgX zhWNgEOR^w~^zxx}rp7fs+o+0!g?^hD`%FDQ0Wwh{w}2}X{_^+0m*!zk4D^32<;>ku z{&sId3<3N5`)zjGX)!QE40G62DUM22296Gh4|~3_9*%VB6&4Te)x~W-rc319fLP){XC!^O|aN#T29;qC2ynmeIW>uUy zxjuvKh_6Cfvd!d33#8Ep&Ynf+vFOt;uEwMjD$hCEg(K{5+}2-y>&&FL?(!o7NV#cy z>xXAck2M56u^{)k62C8qSiZ2kBUO@%hE2vc#a^|i-ooZ3Hv8T_LI0Lh#qHXIXlEu= z>BYm+PfkP(7vnVBc*+0BB7$4B_CObkyKV4un*J!Z(5VBnVA zY-HXb$F9Xs_jO*G)Tju+5TRu5Kx>Tf^rzA<`-9qi=N>=FHqYCCnjQ&Wnc;lQUryFp zeJW{T(EG{l%&L}9(e5+lNJ<#sA%WPm6&y z0wa*7J^o9;bnWePcWZY2N@_w#16ro%wqFmynzgHHR>1b85sP*Mp~*^Ld*9K61c#L4 zDa>{NI{ySc9G}%EGTHP!Y^blr*%w3#TA)*i0c)Ut$o`_y#^lmX=OWEHC-7S z-fm;|ET_bYk(^DQVsjZFd_eL~W z+$Z7s7+-W02EQyNtW=m_{@*GqjZKYkWG*5gHWIt4pJcU7AZKyn?+0+NRjPAeli@y< z6PwIg&AQa3azp=~SGUe!Xeiel^YbM)qY0-kB+$U_Z(-rP_wAwuD(JR8`!*;kdBU#M zs2V*}Wd&bI9kyj3Cpf%_U~e_T_|&!TFN7tgn2SS%T$aaunrstNlDk4Z-&*TT(;eii z{sgAu5Bl_9o9<0R09Y?TVj40&R6{^ojDdZ{L5YRZvSUx7Z7rg2!Ea{a&@J69vO&uA z=@p6nXC7qnZ}5~XnsDLjq{{+^hxe^E)-((nl;r8P-ezZzutPFw@(GuLbrCwF78C0s zm!J0242iIWkphuA)!XW#E`RN6^7&HOd}XST;XYMPc4Be0QPxk*R`*WOUw>^@#gC#* z=Nj<{al|ObVfQ@E9G>up^TktkPeHn%&d}o zxnV|RC*k)4Br0mKh(QX6&leS%36S(Qy_GGP%*Dl}F&l0ue(F<}Xj75B>kzC?SSBtR zqoDc*SHvk{>?2|I72ZElxsO(+)9+cYlcB+1+B)}NQ#S_L54#gmz^O02{eCNk-E*2$ z3e#dn+ppceR5k~D0Ag!e8S1jXl}r>L5KOt3oF0W*@B-a(a7|JzazgX|X%s5~qTWNU z*5h9lnC4F4_ilx5F>8&QqHcht8tfNUJT z@k4a1VSrTe?@sf7ZsFZ~62ilv3w$3Rt|4DeeN&p$w->;V6b!oC-__S=s%%E-zw~;# zhJEQq^P&%LJq;Dx+HkZ$!Nzq$?4LLDR=8U^ntDBpoi!}(pB4lyvo0~C?=w4AV8mF) z@>JUL6hfa32!cReRo~l7$WM3>HB=<@Qy*L(!wa#91nB=G%p-gS<1meG>hQifo3qud zs&(7GZO0+RKeGKm(hOY_n!wDG?D4}zR*}N%Wa9LWxn0w`77O}+;+p0>V11pGrkOZ7 zC*hy#zu!f4eOQ`Ph<+)yH@0#VoY>?gl_SAI^Ft^ZEeNmNU5gBorzldO@Q8gVFWXhn z^7R+CL$1lo?vs15`+v3+g8<3Tr-$8|hQv?8uwLq!TC|1i1M{m3z0=yceP=A(UW(-> zhWhGetW0z~a@k(8LRYxI?gMUsr6~_A-=p@W{LX4GmA(}%NHzBD%(Pd}XR>`SVqEi! zkct5b#`f1QY-+D5=QabGNT_~@1nOeZX67zE(Hm_SOHufMkrm-d+I8xPvmtd(iGr}~yse1U1 zyKZoL6sEnSwUC|8dyd~cf)H)n|NC$_h9lC97bY@w*{|q?b62YtHC5$z)Jm*hx}O>| z{Q&(QuH3=&y3bIaop5G#%tY)sBoDcEq_TLv6J8IH zgmYB{h`_|eaP-@k{%@?`7+<8Nu@l6{6}IzyjAJ?DduYu)CG*dQu+YJC!#XL=aB}jh z!};h-SOeQzS@b?Z#~mYaw+V?S-f`6Rmb}VvrG-JzCo_r=n)E?_i9X9C0SuEk!@00; zZ(js+Nl0^zgA&A_H#Vc00Od?9YHa6y#&sE_`SO=W&;F}Z{*Z+aU2`voC|eS|J}n_9 zL~Hw4MUwJH!_-kc!rbqyVdm$;{L_;M$byrYS-zCmnd#NGC@H7G=W}{RI4Ur83IA*% z(`iLIQh)f3BUQ$amOK>$DOni&(3pW?iUz#iCVjChN3 z%^>f_Xl4Bsu=MF^E;>g5$e#j6$yMVq_yWf!n8XO9Nfu-8~UJ$Mi9lfo_ zf5bb)IC_O1RMD@++!%C$xFgCvM?Oez{hIeg^F}}wHKe_7_Ax_hT5xcpj57yR2;TpM zO0h7Uj+kck#DhPFL(&LlMCS72DI`QOO$(^`NXu@oN!wr1N~Fxde2nWQMHl`v*p^TQ zyMv9ex-60FHAdbV@#Q@>)cef(a>OJd0iV6VUCAvOry0s4k3+k6}K3s zBGB3*$h@d#Sw0k|9sSqQ<<|4oWeEaZ{5T#0I!^Dr-SVhh%Hf(T=40YB3Dq~YHYdD~ZViYYLZ3IzsBFFGOOc&CaYj2`6}+68(avk% zbyby+$QaPl{=R#9*yv$6ep&JWzjwyDQM>LmH0(;k(UA-BbvT791(tlVarwlWpwG_1 zbz_MWKiScAU=yzg!Y`}SC>9nd{>Neb-&FBzoUX=Iru?rRIJpHi11mT%sXDhG4r;y9 zr^M$!=hk2CC%9FGGWNwc?!O?NYyUU3O!QH+4lcU?!s@`#mT5=Cia=gDmk6YiJhYQye^4VT3~ zR+%7iQ*I@@ABk!Q4%`EGs8-#VVzUL<-;(6Bx#^rXt`54Ng;AxR@1j96{nMf^PA6mq&2WEd*XuV0*F3lULK<-$aAAR(>k-5 zp<_oHEDs_9BKRqyJ{Sj)Ikp+N($3#YfYP1FWk;cP#j*jrT5y`F`eFKBQ>`XK$Ok^rKwm3K!Ey0F{T7=kF(`$Lw68or; zkMfHd^a*_FnZz$JJ>kq{rP{Cm2d)7|qd=I3n_fZyoSW)d}0m`Xx~ zT&>jwwocg{v23+a*z7gQ2Y^ldAHntz<=#tB(y?Ij*MjrXa>by$p6ANkB&(TGeNiHE z=pY^KFfWChjYsh+( zn59IvXyW+qbJh?HuKzm|2~eYW{P||IVq)m$vfnU{uzaDXA0cZm7ok}43oy*ilIJyj zZ^pzK8C|><^jK}Yo|-M^3c+WJm)Y*h1??^W$Ewi~>>;>;x@5TAL&wajdT4JOD6>lC zLg-(i+>P*M1k9oiMu-R19BuZ;wenhJB*S6*-LLvY(gbnn&P)Fl28W@5+*7i{QlBbN zUHG#bll4Z6w+nHS_@0Ve@VfKM7ol9OJ11=`d%<3%n8&2=$NM2D-mU)4*$+Te-KsYH zLyvVMpzb9<`5*DpU*XL-T+()tsr|d>{V<%weS@Y-EbC}CXPWX|dC?R;jrGL|!JxHX zzoTP};t3}<@@J>VAs7AqvVP0H&+d`^?}9Hn(7;WGR~;NqBIRvWPcTr#Ea?E)87}w&CO zBXA&CJCYRV!B>T0tUYXDu)A-zTUKN?*`gDRGj{ay1*Br zr2{wKX41cKSUt7wFOn4?1H1hW5ep>i2Wiq?sg>m z+h}a-2hjQgpO>jyGgfsHX&Qje7NYWmE5Eh20n@vYe>kTY+kx`#H)b3r? zNo^Ic`xTA(wsTWeY!KEoLK}Ub9VH{!m^|v1tE2#9cFGTMqUoy+V@l-CzTPqIfBW^n z0}fp=_?d!VUYK-TAOmLlstq3#GXQ!Dz7`Tu=GepZcc(K?;z;-w6EQ|`s#Z|rK3-X@ z_{F1|Kz~~Hr-#l0W9jCG+)l?&L{N`v+{PX9Nbz1xQ#O{98)qqJ*M@j27vOIaLTl>? zhk2Z2iNggKOm5L&=VyE@k}#z12+`fkU~YrG4{82>&s-S_LX7#Mucv#HH&m;886bQOE-QiR|wk0jCfkjxWmp_VXCmGnRn5G3{= z`9j#9{Ob(gy&eU~5h>5=A;%P>Z#=?!iq+SY9%d&gwwn~GUeG)q1yR?qk*^SiG2G^N zq~O*03AJH8j`l~)f*NoE4ns5IRlmo&{&zfSlToPd>$i3K`db*#Foh#)+b$w)xQlOo7QMio@Y+GTX`^q+}DpYZsRIm+`xA?ihp=)YE` zj2q}P+B;>Dw7Or1y-P@%*Ra-($A>m;o3q35d{amE0X+0ZHwTW76F#s4&CrYYhh8usgr4ZFoYQQo%I^MXdw884N` zPRe@vugQ#aFM45PZz2E7^WNcG*tRd5(edei z$h5|fHPCx5nghwZEdM9F6|O)za&jrFHWI?9h@-kW-Y&gy5YTTw+?#)*G#r+~CB-`5 zDLs#Vp*xz$!frtKqmMR_yz|eW(M1D86!`9k~~*^R}wthOoQ(LCL= z9lV6|wseY-6qhq5t3OS~q6{$Nw(r}zo;%Vfx$aGl(rxAMJnx)|WL>;A$vnA4c=tUf zHn@DOP@;89Ej=d)AG3{)>4dL2_ z>-^sYn)wbdAG;W$db|4BZC-=V^}3%VVY*W2z542WBp>MBETSo08^<4`}MXCk#lkZxa8z3)#!=1zY1 z;DJW65dq81_kfPY*RxSCUt0oWe{+KLLERkTh?c>OgdP&$e|r5%=!|cU;*W6kH@+g_ z?Ny$My;)L=P0IHk-L%N<#=-L#&8b*3fKnRe0LPy7iRBNk#ebEs!i4UgJS#x%Ah2V5 zUbd`D4{8`gc;s*G@0puXb znU#@&tb@#_9VgAJvwm+C%Z_Suv6JKfAA4^Z6?NCX4O1ebASNmyf^;cJ4HAlgv~;I5 z4Bd?=s30BE-QB`aigY&&44}kNLo+nId#?MwpFev4*Lps@>;3j#*IF)I>Tl+^_de@5 z&wU&;P64SZwms<#^@WyqFZvVNSYZFzK}mpn3NtV@w%|8O`l`I=lC$HT@adzOkKboj z!as~R{x&zvpw|O^!04V%U#3Mh6XYK^3I9n$gdGULOg-pNVj^zy>Z_DmY>JQ*xu3He zKa0JIvV{)LQ=UE$vUr~CnLbBX_Qz@c$N}~tea*jw&!^{?sA7y1o=?4vJFe-vLmIOn z?xOY7wdV4Wy;~oKAFS~s$!ys99-0`^>uVIAz z-;qtey4C9PGg8|B_;UWN$7ao$alQkD<=aN}SBE{Gqt$PJ0!eRXO+hX8P{w~R`&HBO zl@!?wcdIpr7qnShE6>c|zmjBb6ngJp)Aiujqo)*1P=yQ(fd17Q@uw3r_ za(gYd&Hf6d)E{m?=q={3ZuNw;7FF-p4w&u#$Wf)CT`!MRF;}KepcK-8378(N$h;oC zrw`j)ZSRw8`Pt2zpdOB0=wI%YzU5UW^YX1B z-RB)?Z5ai4U#}70SW<32@p}lg#>K=8fL+i(J(y%~`Jb_vv6t zp21r(fSWk9{GB^OFrzI#G|^DZqaaw}?++LDm48G+fZxAjDqj5haOziCYH9Wr{2Rl{ z`NNXOL){&rZM>ecMvd|;?uK{DeIh`~`Kj-fbkIGU!x8i* zpfD($@p)}##J!})WtMu^S4Ul;5P!GUg8;ud$J&{}k?AQ8gs;~pgIB<>@iW2spV%@e z)(5Bn=J;kp*^k%+X~OAUFJLg4mEji5qZVo?d7IPAvHf$Ga5jvLF$?cD-5si4J(W@1 z(a#f2exTJNm4) z?+l{{G7e-Uw*j@RIoHi@w+z}Rs1b=@J1u`N+LJUKRy217KO}OZG1nl=I!?3~T}ZN= zWT7`2N0J}-K{oRar#CFrqDR>4B^w>xLWn7u>(f6{6}>e8SwBawn<=3g?h($V`%y4J z9nw>~Sl`t?H9!~Ng%sjf=_G$8B5wsYz4Xl7l#6LTQ{&YpPf)1ZRkd`5Pm!wf6RiJR zV^|407Co`J{z6Ra!LgmD;)w5i=zbYL7#=PsijDb78bA1Eu8?QI0 z2&q4hbAA4llQS?bdRvt0fn}&^f6gN+ZoHHHdspKaO2tIiv~RrmiE|fk*~aEI9~^;w zoNTh|xwF0wa|ZuU!C;MBez4={iP(+fbyV+h9cQ`mkW;Q=epv;lfOq^@@vjDXQO;d^ z(MQ{>?>6zU@koTR{?9K|P`sBnIe54?q6AU}jK3n!i53c)1*;1XT3$sJq8g)6^8mLZ z?aJt9`G{BMUu%3N2&jCpaQ^d)u=*tetQh6cQ>oi(wO;uijmG(wIt>bORtN@VxBbd` zcM)Uw46AX&OsDZUQf89SunYa81k2{r{c`O8^NfE#4f{4gWwojb)fkm)d8!4xtM9~- zCFhS;(T+6Ph;oj|XNy65Z2F)X@;zb-Pure_{`Ez|@d&W!uY_BsU2?j;7X9TAX87sK z+4{-BTfX00?kKS?xLl;bmw2hOBI*g)*zP9Lr!_?R*zR6twRHux)Wrn>OEV~;w_su2 z9?)D=B`WxPBs)_+(Z7saNR`luR5CL`GVS~9XXCu|S~{w!5;2i?jmr);jLa8a$BbGS zi&utN335jfxvpKR9}gPNR5e1@F(Zm}QV}spcFizW%2=v=F_|aD%NhUz5BNG|T6%rc0%czANtWzW`c{_HG#2ziY+YG`zw=nW{e~>>O^GPv zT8U27GV6Xu-<3eDIA$bWIjb`3mt<1TS+eT7_2-7G7CKzMx=|CBJ#b zgdHAxzywat6C%~0yv}9M36bztT;8W(6u?X9n?j=|QTy6%k#P!;ww|zlC+X)ij&2DO z1b8wjHgc&aCHlE1b#KcpySk!!yc3y3ckcS%u^;*&TJ}3yVsLf3F&=A^d%|K7w@9Nj zZ@5@KWY+rYZT5?MOBIWG_gr;ZSLG)n;>x)SXZ0pLQ0B-Hp^ebY8h*o_7+uNJ0J_hX zQzV&X*>-m(#;XE`^OZ%>7D^&V&KA^{ou4)9C{wlH_@LZ-72FnQJ(5#=(_3ywCy`%0 zMup$TT1XtrTEKIlRAXo4er>4u?u5Dl(mKnFzU@|byKLs{NNrBeYxGx2%{T`^vD2xr zK@nlxPi_&n+E@jGV-zKk-}s8>PUCaiV&4mg;(1M%N(kznRu+txX?$)tls6Abew4Zw zpY~a;)Q!u`YxjmizNE}CyE*RNix!E6!$?Afm4GwsnP>zQCo;TFkB*O^&C~48mbLw&#s^jX>FDeB_;Bl6WrT$W{9E)azmV^Q}>F{Dj9QEo?os$coo?# zqlJyTouh&F3!X`rKGLy%F0(>Ffc9qIFpxE3?UZ`teM1fAR4651ZKa*7^r_gK^zp15 zkT<3S%F1ZYY#!ZE@Rp6pgrpBgJc>fj8M`F?!f9S(%htaz!r$VljG3mz?i)*@N5>pV z@y5Hn5hMhkn`%$?$~=Z751($(PoURU2M<1lJgzv7iT_k*R4`FhNq#<0qtNKivtf`# zbHN*dcPE|Av+MlCc}_&=yb-k*@7%G%MP}6Jc`E}wS$wQgTQc@YVc$P~p^3OB)9Op! zV4gf{u6&eYKWX5H|G2b&yCdIQ{rbs{y)z3nT^VphpX8Tn_Mo*MTh6*mcVLbg4vRsZ-u;pv~Bgx_3}G(T5??C>(y&GQV_>nJXd z=Oj9q4ZmPgp0$&D6GFf6@_%-MiVV**%&=Kr){bI-4NlAHZC_@oTM1!8CIDmFS}Il8 z|B0EC2Nkm3)VD2=)1UnWREMPle{FxfbgFPYv*98*hA!N`?A97$LCKq3&* z^G=JR)Boa^RL2AiDPjkXeDwi5SC}rJ(jvk|O0CKfQWev1U4Tj%UKNv&K%T3eUZ#|< z_0*C~=TD0#pbBNfX{qvl*dWJLJtN07uM`SbwveclR36IIh`e?2lyYeKVA=RToK;em z!)+p4^knPO@t9~3jaQV5Zl<4Mjj|Y%9MKGC|6>b)g&k}8pf?2Rkwh0mQ%VqKYY4vf z!1fzA*d|Vz4VGQjCkEgCyfY#F0&($gg5~8<^FdqVKh(;*@aDq!gd|wKO@6h-c}g`Z zGJFe&v5c1soyRMzt`9GsI7~Q1*I=P$JY{>ys4p12@O?a{NPS%=QJ-0M`Fr7gg#9s348@h;`oBLB zJP`M93;ciiKy?q|HLb=+ffjNje=T^KC|K|+aiTs#Y}z=j3i?${ig94m+#!%t$Ik#Scd57LFMm*pVJ$HR_gA*I(4G8)>QG=R;*V2&S*C9y7Mp zug9b=ixKSG=g$SLQGG~cA@B8``FcaE&Fz2n#$$(2QW#4Cj22&@(c?Ly%>;W#7 zbP@4PQGsjRU#6UAJUMKC|8yx2a_5IP+A5a*v6qIiSlF}IAhVMyh0*($b=h2ZngbAa zdE+~A`5F7VMKKA4cM?RO|NTWi`P{-&@3 z8t~q0IWs10G{))0bX&REdGy_o(~G`}iW!tnCQbUIl#SMBXU`cATosj|D;qN+vaTCk zW?ZxHa~xUzEJ#S&DSd%%@MI?hdlm=|v;)#+L!dF1`BDw286Y-N{D{K|pNhrV;WUF6 zW*TvSwO+BX`hjDk>_&w*jlRp5i|3!f1@9gX+%K$3&T%^H4MW}mMc=XCF3dhbsX&F* zoZ{-mZwd}>nRp6Fp~2-XV`eQiH3lH|9uAZ?6&zf-hKz^xQvU?BSkO2=8?=v=BcIuWlIA#^C@1!Tff5O-UjtW zazD=G_y{S;dwyPy!Rx%i#G-l>x*<-0Cw zE8pzoU<+NUQmCQOQt`0bdWKEcb1#YrOV_sLjvb(=nAoE|mD?Xun)3MJ*d6&QE&+-P zym!7jk{<(Z%`>;cb?=TX56C=FEqX*Y?b^rIo~xx^i*WHP~t|E4Lr`|!$N zVPN%A!lCz_G{Ef1VLASUU#OTEQD@k3GnUsjZ7H-DkU#j4yUhC9?%_GHN%OwY5i&H< zmhjbX^gN9g0Cy0#6N)ygyt8F*4tPKQ!w9gjnK2Gj?)@VX|8F~7sHe`R$~j6BcHNCB zw5ZnN9m(aE59AbOfsuD{0QVV&DN9qO-ew3GM+F1VhZ9j@cb6q3>!^n%?Df54#?QsF|$RZ}uMqsU}uTbebsPk~2jkJB{+Y zQ@8zf#P7tbRVIB&S1PYpR5Rr|;6Q$sqt{0$l}WW7!j!lLOcIAvMK0F>rh$cbSJ^^= zoK5U=*D@kJ{?)evt@h6o9wEZF;wzjtrqRv{;P_@DypAtbosxAiC&uu%g`rOx1U|dj z``holisy#Daz{m=zxX8W9I@Z`hM{FXan5O1v|+^Tp+>t9CE#v3(hbZMuAYs?^!X0X zvFk_|F(=Vs`pH+TeBo+UbqjhhbVggt}8D?A9p@i!jGx#xc~$75Ge(=t;h zr3HlZJg-+jh%gc{6gU@$xwJmfr#1EX zk&o~S-g@mSTP&AFw5K27oJ-!Q9hQ&a#8D9rc!C-$PR_^ho!gd22|!627P)p{);Cup5& zRp096-}puqB&mN1P;rCErp925)m0d=3?Co|jy%Pn6=*BNZmAq+e>sCFFnDOS=k4Y$n|1b9pYNUm&X$ zBOv!a*>V!pZR~tzHu%%Jbc4g>;Dxq&x){+6wC-vm*5+bQe0^YZ694MGR?eUgq!(kY zkFX@b>#`$by8j41;FDh$`rrf3{dDn=XrMOV`H4P>K~>u^YGV-)B9wP=9jxLxd-9w( z>H`sARC%A^v9yEi`sX{$Vo*VoUUHapb`8~|Khvx=GGD^uMW_quU)G98!oZG=x>5&f zwZmDz>lrC2RC)Ix$PI9R+9alpzi-J08}}6wjreAp?y=QED(||Y^@CZZprq?Mh;=!8 ze@CL%UqI9z{uX`_fBWZ+eQz898Wa=vrNza?PHkrd?S~H^tR{d$1MNBBTeB>wl8j>F za9DcdoG2K}XP+e<_e_G)bv~?Q0j_vZF(g~wMJJoU02G!T$1L6)fJ~;k_&VP_$ubD_ zuweQ>))WgT_l_RH((q9@|DSt>g|oocU#Q7b17w|y067r{P-4U+X1nW%N&I(vt~xqN ziTlo=fCTDsLnYh2NdlVF-shfXQ{PIj-RF30iI^}+W(CYVsRdd!3T!p=H-V20QOZ-2 z06R<%(3QaweUTb)&GQHP*QGx{S=b!2&7(0>H(p!#CJDHAmgqNIQUJUqa?~+(lOQ9o z39yXlBm0N8M{^bFwLi=7-FU6(3!oy24}^`^J`aIprlRojC2=Zkygb$7^|OXyj^m#D z@obI~ZFXnBu6vUtRy%Lcca(V?+Eup|;al!ip97_)49C^cE6Ossb$~58Vr#B#Qn-Zp zDJtXa^tcPyUph`_@6jttAo8%D#J{&PB4wyrB}xUow9A>#V`3_~TOL~#l{Kr*nzGZv zKb8t{SPC7vt0d@-w~Jr@hQW|o3%InkTwbmo4eUg#EU=GNXAlJvMn@dJ#gHy`Z*7Hr z%K1MM>woqL`zD4FiU`NzO@rq#TA{{nfg`2}lRyBia!7^)c&6pX42Ov%{$D$Ky!n_~b?08RvDh zOn*F4s8v(8yEYNgr>y>BLg+2tF3c3fFtqNA7rqr%2)I|ZGFWUS$9Y(xlI2S$s7l-Dr|6jTu<3w6R&@p#jo``WIvzLyPq;<)rjMq4+H zVzlW@5^VjI3e=ujYD=&mSTRd{+?!wt&Fi~7<2d20V#{VU^EA7a`o!uNOS^-wl4o*u zT4LgI+q)wanXi(T#YlLvoaB#GG04nutaqC!O4ijxPE{{05OH797dX<69}*y0grFja!2)~%r@b?ucs#p2>fbP z$fpYIfqVMa*0UH{y7@`##;9M-0bL+9d+W~M8cQ4hDD)`~d)?+c45@6D;E^l;QVK{t zrvPm-is%-gRR9dBr~7t8GCZ_OCJmD}e;drP+6?dPho$t~l{ZoT6w>>F3}wV++D|ouig>zP zXx+;4ib@#gNZsaL;{(eFPxO2=Yk6io6wd&$Nf#hl@ zec4mMjur#hMqV@=E|ML`Ch^)D)Tx(I;M{+dA|fak%h58rP`A@t&ZFwmXszSAa3}VO z{<}J$tAV!9<`Ha(Kd=f^{fsJ;r@E7Ty;WFk@lG8{Le%x^!p6a zo;QEYM+Zy+TWG;?N3Vr}T(hsC3wZw@?;2|XKl70t!f|Y3?@0W)-8~r?b?bS8(9vab z8=v7q&9VLDTP2^vE(P9bC%`uOx&sLDg;);qqlO;2Cd>|DxPzTN9S;gX81A@HHl2HRzqbA4sJrj4Le{X%&L*|uaa$ir|!b%_t zs8FmUFk?~ZMihPM9bwPXLHiUN$>YJ%hk0?QYm)FdEE|cJ1>#iAc)I}y00FQp1Q|I> z69)LbzLECDuxYQrWafVWEzi%g-9-}TOA#a>#Y$Av^ec(06Y#F5?5$$~yfMMYHCsjd z?nNTv7K2I05IJW<^U110hqdtm;wz^Z$(*7^E}Z+UDI)w9D--3}N_q1_O)?B&o<8P*$Ab=|zaN*>ACd5MX(2TD0w z;20MwGw(EC7aE5wS8CkEd2#DC8spaHAL`>Yb@0%Nr>QfFS+vhn=JG?25^L5(tRl3U z!+P`%qQCqN^65y%PMljn)t=>Ve1B3_jd|^Edpr)ES-_nf4H90dqS}?bua4T)R*BlA z8~brq-OifQvMN-e;s1CrSA)#o)~vu_lcbgvEWD~Sy28>DGVi=@nVD6pESJ(0M~gHu zhvr!n9#QsgJf_DgsQ*$w2CZM1<-Y$q9bEe=5wZI8&2Fj z7vo@cmm(<}#C3;boqD%J=-n!5B;n9)X1NWB_5C&3lk2`LB>fvPYBNtk>2%X%$t0WJ z=J{if>X!7M+!IWppa1n*+`us-ZTrv~J22YGKA-L)ZxD#;p;Kzm--8w9oX4-u_WVxwM|zhOY%y-?ke*b) zC&F4Xm>{FlhgckAy_x}mY_$xFZ{otD9M%s29irSk&{(bdJ_B&Hz%#5teT2iwnG}2d z@O0+g8usEF?T>xIT-^8y2rBYmiSCq}_mVe&C>>Js#rZ>dV(;Ni=8;^*wj#T#FO?Ks zH`?j2DPAs3yKme%)p};yFN{z0;I{MLp;ch~XQJ{q7}tY54&10+gQW7tl&!ibPX4}h zfKaHrZZRZ6b!P^dYi^Pqz>q2J>^rDqF)~|>J{WoCb>eae*q_&A`XJkBvK#wA()ts= zPa>b<5aQEzcFezh&^bBCa6A<4USTpjwjMx2CA(Y1L7_1ZTw)-Mt@rD>G5|v`xEK(r zUjRZ$F&Kv{7Ig1XtrqgPv3pm^@4OyVDKTzGuWQm+ z64lsXGs?H)aSUzdz$=r{TN%zx+ksjPZtx=QZ-(H`K(`o5WvU1>e(!vD)^F*5E|8h)3rM+3@jj#Q>? zL^KI0nMv%w+>OzM#IA)SUrgD~H^o&OY_IC~?wd^YAc%NU$|dEA#q-wpB}y}Usux!} ztxu^Jefv!aTJ$Aj+F+K5-f^k_d$5Be;IDjbWmP1d^n3#UUEQE4R6OvB~<<8`3 z{v*@-ws$W86e#+0p9ltw-RD)O}z|?C}t;n3cDR3 z0a1y)2z2poV6mwLMlG}S=g8A&o`C-h@=G08RbUO@^wa9^n>MVD6_c6>Z9tGU<+1^| z)Q>`YaNxoXd!w2NS8qq+BPq6;$ND!x?m+i8faT`Da))k+?{8?l4V%#@uv<7r;K#{J zOz3j`uUa5JA)kMMxGDPM-80hHE&Hx{@Ch?nnJrwF&>)LK05jY?C1qZI-h?4MB*L?> z?gp%P^uw|ADh({+RFwaE>kx6lQYc8S7h6UN@HB)2JWr2Si#@w?ga}Ut3)IUEf4slq zB>M^EX%k4G^SwV=A>CCG^A?oIMu2cX%^ok5q+JOc+4i}2D2+!Mc#7ugyifQRi5`Jh zS@>OB$&}En_paV}ZI4aSVE`nyod{SG12qFYDS2)5B+Xl#H6_(Lo{8W|?i|j-*hGlW ziboh^CV$HL*muZ%FnV#P-z>zSvLn$|zTODw9H{DtjHM3!ykSq@XINd%*^=OfC#9#W zZ84$&fW&E)hMb)C;O=pNhwACSi7UAKdiP}B+H+fu^xsjYQzqqwAO2H!-b%{}jyx?m z&3>3TWocIk?{9({AgV&ElEQ0_RA903|DEb=z_>Y13&l%#$gH7PpE5^^HOj|Y@hgvU z`XN%bA=zQ6+b!U7q!U}3SVOGhXZd54gU-qd8c5Wt;{00LLc71zVvsP=wv(0=V z$!Ccmxps0ft%o%{GXtt!9Kf;hKP&95RKsK#mb+G_GF$j{9-R7*aIi@+YRsnWM>6r; z9YEG(9#GtcFqN{6W$aYn=1B-~7Dv4(mI$~pI9rOg43d^@z(CJhEfye@3L^!Mfar&5 zfTT4j=cjDjD4w!6wfcQ`)_g8$8BvIndxR-})J>G0LvQtFc0(42#a`hyZ9Vp?{t05z zGKfhVJ0O@2jeNDctVk6*rcvn+u$d|v%|rmj*^MZx9;(3a8_D}wOwYz{VA9x6IJvw+ zhnmShad$0LG6T_%8_DNEC;a%$?2w$0qhBM0KJDxy19Ve05CK3)_wU*Pu7JO8-@{@X zq{$PoXI!R^pcFW?YJQ2wAvznx*;}IQ3iM1o^XFNFcKb!3B;(HMA3xyYUn4;YG}_LI z9RgW3>e0_j9_)XhGgJ|mc8dmqkTZNE4V06eAdA$^nl0AYLPU3%Tytd37tX_^Mp1k1 z88c@IQp?WW47L-P*yAK(M^Gi42P(gTUgE09nNsw=hPoCbwX5wnG^;Gb08l9G&~VV6 zVSgqF;9#dMa6a$X#ElVTDE+%8avx`!Hc+rDf6RkNLI6?&y?%ZN2g(5q`T@d>wYT&V z3B>FCnVx2)xw2+vUET9oZfG281kA2Lk40XoE^7)JXFdl|FN9mbtb$;}5-Hi5%56>1J3xBHmjJng#f_51~x zJiwF-t^oCdDmxOG)>{m3@XN$3ldL(e4BM(3crG4T*?$6&B2rjg@L{Q!+)DgX`#p~_ zQCpMUcV!7ugtu0$d65cY$=qhTd>|`3eUyPiOAxtWZDZSbt8=iIEw#NsEJYf}sAe?J zntXLXD41;@C<(%6+Q_&qNl>q5gYdHxZ2*ltm0M3G1|74S;>`tBd+f^hUV_KeZ=!cN zNBN33`eu$^1;6Z=T>Q#^U4+)U^)8q`V8nUgQVZA*e-{Pg2VN#7H?7vKb;#8M03N!= zxrPn+oqUWm1ZHxGY;%yx1_;@S22c;Al$_-b=zM~UFeg1dN5yXn;SH+I0?zR0T*Yko z1JjM@bp&jZj26(Z^265B0@=b-MFPY|Hi3vlI8Z;+bs(4o)vcgqJ-(ac$4St5g-Nvty3c6{Kt6Qg9wguCHUkSw`HjIV_8ZSVf9#F*g`E)7G0McDe)3a=cx|Tx2AAFxv zOrzSWFz_|On!T@5A|_>+PR+P%v(3^08bMxn7?_yC!C9K1BtN3blus8MrwSdxaZ}Ag z`;Up0;D2y*Nh+f|O)%3_4>&a&$&2cN6}XlO;Sl`1I}2m2BC-GRYR1a(^E;?DX`#Er?Ddzpp>RXLCddad0KcPl8JD$bB$Fj@av{Ju z>QDFH@mVh_ge|KA@P48ZDH@~e{X z{^)@IZ=do1KlK0eH4S^{eIgIaW^h*sz?s93fe@v`j_o!Xr?K>pLxd|bQU5T(6FnjC zDjmx~Ye|MYz3Dmy5O<}9aQ9!Zc&BTB;NRAclh?xv>ubIFlMnQ?$C+@n{E> zXwCjLsG<9u#*wxD0GF(c52;$vs4#s5(p@=*#zcN+NthGr$962gvy~Dh=&2G-(uGx3 zSn-20GUxd%_0S?zt)-yU~3h8YiqxwSiX+fX)@Yp8XWflQ;wvG9S~31%(2~ z+KIvF^Dve67eYe9w9(8t9DzlkiWI-ZS83c6=TLxSba6z;_uB38GNZsrK?Iom&9(Rj z5_z77^bx=z>pW{Bw~hlnl~?$xfuBF8IgMFh8L?U@W!bX4MmlL%Reqo2O|Zn6K!y^q z97)%Xf3?1R%dTL+Xu&fuv%TF;GuOEkZ`}|Ex>2o_h2`>Kv;)&$=cPo~$j$|LSO!T)$*KTEOULQk->uf)oP6 zW{Iulva-SNU#5PO#7IYU01))nSXFFUShZ?}#$o31Mx(CN+Bjws2(6ju)a7+{Xrj5O zwkHE4l-Ij>HiW7CeTK5U04|Dp((g8BFTn^@33NR7lws=B&=mmP$*q9Cp#oY$J^9~f zV8JKi3h4B_!S_9Ai(qMvFZoZ~>oHwF*oNi)R6oQrXq!g31ZX-fO0CQ^dK*}`kILgT zo}#Q5x;gtI73BoD{(Gw89W$m?s>z#JCNVj@m2nR6&op~1Re&`B=&s+zNk9HEVL!ec zHJv(UO~ib#o@D=fA_@C;KkUmn5EU5@Uw+aLQI(Zg2JOKJU|IuKPC%V9x`J=@?_Oj3 zYwY^4YK=h}{YTiP1s!I6FjEd0=?RL8p7vD|m{? zGieFA4(5_V!5{aYX@XR3>51`?&d~X^IC?dlRw|>Uq`&HZ1rZMz@W70`oqj25{I$1#ni-?BBBdHV zvj&buDXX8c$0W2`Vy^Ye0ub*E2l&rWl}SZUYPy11{1Ij_0%&24S6`d{@WMiFHMAR^ zt~B}Pp~t50{NiG39e3(pe`*w16CzF8`qU!;y`fc#r;=l`v`O>(;Z}}C4}%^G=~P)x zP#^KyFG>%jmIEQ55CwQ0vh4Dib1jPBlaMWbK8-;kEZhg_5OozFj z`_2g{@r-}~dm7Y`HIQ-@mzcNdY^YBP;2L%DI~YIJu7k}fMD?%X7T<4|&bDJ3-%D>O zC2Dc6=zbu)^D=9Igkz_pcC|ZXE2mDT`Oz-O%LEJ;RUE4WyZfFAi?BBw7z{V`zB@%v z_N`kyNKXYa9gK!JdQW#az8J&4lv~fgRqsl7bm*J`Yu~;$=T#3Xa-N4nO;yLSV%6Hl z>w?5)d~azvUpchn@uRAErffvopEV%rq@Qq^^9abw#-0O4YtcfvJ)EI8SN8zy#OkMb zcO(6ZPk=PdR5b%gi3#?W2GYk*!Qc=nkcv9HQ`J~wn>y|(Ei#VK3CWBW-}xlnd&uLm zIol7m=9W1?U9B6Un3M@)`Lfs67Z=}$nteU8GI`hih;vM7esX*a=Dbmr%sdo|MvOh> zY>xcUE$SOuLvlMhBzk6oZhK&=g3o;=UCJT3soe?+4#xd|3EpGWY zV=RulJCISTI#*(;vX76>jyKqy&cQ6=1hl7T?vZ`DYx`8_+Pa0<{Ac*sE}PSs^>iJd zxn~*aV|Wqs`f0Xw?C)sARM127p{y^*@U3GY`><@Bij3D$wH7%=1ZIX2m>pc4SZY(VX(w4SOm#uD`RP@x@hF;|i%D6@_z;haP4wB^se z4r7dB(Kw?z!&#{`n9%`p&)tEBiDil@klj?Qz7sqtPhxhXuj(z#kl3Jm2s&P0ee%ER z<<$WLF<=WCPpSuT4oy79@0OU+rWCNF0S5ZCGum`RQqlg7XdWV^r(bONfXhKqbh{Oq zV_G2f%<4O1I^W`g0aP^MeSV7Cd9`tSlw;}Xz;vbCbh5*s#9+z`TzBLNNPUd@garH- z-+j790a2;~^KD>i_1)LmYE)@~^Z05_k+W>by{9i5z;5U8XE}PC^fL8mu4Xu^ui6;H zEi^U;RcP#gwV;(oVY`lG^k&yxE4jbhboBLAAIDy$ajG1eoS3L8Xlv~V5Wg5?2}t{A z*5T;>ne#Y!wYBvm7bGsEilTy|0Ckn(#p}t-r3z)<s!7`({*PaUD1nMKm*Cm4$jL=_iK@q4N-&U$LU!V^mIa9sZq7B2wgF) zHK)w=bo+-EFom98$SOEF-;P`J*;uFh0053%Ze=!L)k8`=4`0Xy{2m zj)i$k-*0#gpg$6d-sIB#incOrocS$BMs- zWpyay^Ca)27e_mLZG0KaIW-B3PM*HN9IvB#Z_N1ghQ70 zu5qEIYPH0b6t1GU3K+vEn-+~x@8Ltn=2VRaKPw9|oV1_Ey0~LmB=S2fkqlA}EoOO4 z`i)7K&l|tBdg9#Yt5%=W(?g`6ZV>yc9C4aRZv^#och6n@Xl5+=nBHQ4K>Eg=JjLu_ z)?!LIPE`26W{rfo314%o#6kXvy^q;up(j6&28wIqYNQdZzTA)Nu=R$H2Pm?}cTb3x zH&si+YwU-5!~e&8t!`09&73S&^V2L)) zdSS>(TIM(q$N&%B%PQj*tVhlO6>{=HDoaC-dUr56ZC#*0MCq~l!kK?)PJksIj0?b4 zcm4g83*n0)d*YF|AFauErHfEoxQk61O*@H|!H16gbFX1pyy-XFkWGYe6?pYtZBw=u z9&*1_GfI2W5fS+5g+9^y6hjL(R1xfJY_#PO<|HI`aPqwc8#fBk*k5ZGw0ZlhN% zgYmX3r_o|mFuaHbYD4i3&KN+MuIB6EsYp=^=flt9@f_zPQ)c+*($9Ui%`UZTi^bIc zP6^a-ARYz8ndu#PBlAE2Jg_nsGd1W$pw&p!t(~&|qy_R=Zho_T+EaQ%;;Dcrikd>U zeadr9n*yyBQ1Cg*A%~iNVPSz!4)r##^A?&;!X;G%%Yx$zIc8Wc&2Bg~XslS*Iws!V ze)x!r^$C$xH7_02hTy)t!D4x3pp1>;85nGV#k&NUd4ZXfsnnb)qV8K1loL}oSiq#d zlZzdvcagKBLh@?=QdW$WQWE4m|QeBb_woL#2HqJ%Fqo4_(R8L^5m|^9{+TIw;>k?^}rjn0FOF zsGcnDR}vzo^ufJ#{KZebo*DL3%UbN1`x}^fP#D~^XeYH*5@M1ULG5Rd%M`NX)!{ab zwW)i4q#BRl?0fzeIkmNjdZyyIu4q)G0T8ICx`lOZ3gY!6Um)HD_iXtfT zB@>u6LK-9LzHry`3FGE1(g_UI_9YAHKHDtZ*;o;TSclOe2Rdk!L*RO7DF|t0#52>v z9qnUU`^)7p-fi-cK-S(%qyUDehp@*?A z2B83%yOG{oyi##qN0za|<8F&G^E_9Bt~i*%3VR+#|F$)#l;=?!ETs3GJW^?DYiyO@&Clm7FscG&<`&uoI$%>W4(c2c_Z@qB zdV`u4z$r`{!*-xF;r#qnyYM)A5%NiQnneW6y$#BMLcf;cX=fnVmq2&aY!xipl#Nuyeb z>=V_owj&Rh{SmU>#0;o0=Kf@8A-GgizSpj34Ne6WHa5|7J_$c-+DtGxdTfSdha@x9X%ij`S z(eZ#+M3f#S6Oj-$21`j1t|NUR>6YI<=e-c63jfva*lug>*V`>`1YV_2j{;xA?heUtg`8hA5Ty;!;>|lR0Sx zcnx|(iu-`~Vk)jj$5FU-E-x2;AN+KS{_}KZ!H#0fN-ml8{gbM|>iwdbhAoz%q(N~C z$4D2lLN^mP06s1>;a-o#6sN@Qg&~*;pThjbRg@=r-|^$)@t-?MmVW;^g~0Vy5tznn z_=SMJboqG#pV{e3@pq+0%E%YTJ?pG;B=CK&=w1$r8Z!V>Y#+>p1c0nSK)td)C%1ye zoNptnD1^4sY|nT;-m12vFlla^P`D@+pC2f{Apnw1ij&3l#N$LpSFW#AD|6oq_PeTtlC*3FS9iVbr7lakOQ`{`kZx$H=|@9} zRNrQtyt)(|El;KcjV{`3yiZkbqP}IN45Co8`YT>bWp+J3ZN9)l4`c{pj*&1_N< zw`p2G#iaYIetto{WMX{5t*7m~&>62|D9=HDy|tr5AwW})@Rhp;DOo$@0i@@BT8Xd( z14C&4rQhfQXu|D22B+Stf3A|n(rtF(y^B?0UioLkLY1&jOHosI@~~gmuX3mirp$vD zq^GL8pLA)})_RTzCD7h#BX(bNzFgrvIfyxPl6iid;Fd`V20Oy&bD`H&p&v04aO`IL zcDltx#cq2m6LzL^g+NVkoC5_IA21~af6#DmB0mD^Sd&BsIdL=`wi!vp|r|gPc$1k1q5iY&fkR2o| zax6ls37FUOusw!TI!@D!rdKPzyG0OOS;%${+LKcwaLw3%hjZ*%OM&fSO!MZouy8;& z1esvJM(IYs07L|D*lz$cc)~)mfG7be+Y41m&c}bdVm+N`!l5RANKD0{@TQx<=vb%*PX>0kw(AIMR_@J_A9p-*0Pm_5S0|->f$d7|gwa-2aA73%Wx!WM=75G@{1%x^W`0%v9a4 zzahkEk!8&6Loe^#wPOYAoKbJtCr>HFhV52mSz%4Xn-UXWw0AX&KCvLOrPsYwXzb?**fF z?Nw24V=pc9xYt%@j||^emcot1+~_eHU5>6`TMm~rA2SoE;8_QNvGF;dB4JdP*EDx- zwQ3;`d*v`zEoV$wQQ-4x$5=%x&m>bat!(>2SAQ-upM7xqsG^VNJR7QA?=%}kl|3d2 zfabe3_lp7M?OSl;U_sJrR4L~3KlA>P-~!YX28l!=+K=99Z=4P5hwm2Yo_;TGR$6`{ zc_gBV+tN$X!^g*`Z|w@yvnQG|iRX@iT~8*}17SlLY9N>B9T=mUNOgB4R+Zs09}We1 z%!h@rZqg365aPZ90mV5P%ssj_@VB?DtjG!;Y-$3C7$Hu^nVszAHg$Xq&DkMf*Qpz~ zRxa&&_T(H$H0F*&sZ}X$ny@)M4s0fmRoQLGJvP7F0f2Vm(ACj23-p@XL0(VAGwqUY zIrVK|y{K6e;7Y%&RAO}8auadY_Z#Pe`Pb?i0ZMgKK%DDa9cYWWTP-K<#Z_E}HDvQ} z0WjW^&usAVaUEv-7&vIS$5hn9!7JpYq3I1UPhY-+wTeUmsJ+5oaT&3Sf$cG^k27?2 z<0r4AI!1PO_LVxjm4aj$0de464Ea4`&|>|OL2u_+ar-W|7JxmuDOSqLq(fWVDBZhd zoik9^DJV52zr%?&$_yn+QOhZ(#&S;X8kL|gK?(8$le5dJ-JC>(D?M{tS)fTa8k|(A z-;6&HZ^=bF=WkBL!q3y)rg;~!4rWcl=w#v^gIk2dMMK>ctOa8ao@qNx7;!-1&yJrD zoae>_3uc+^E)8&(xMKi4{GQ65-1?kK;^Mk(Nwv{hHV(dp(S=Mizf}SQ$jz@h-h*YP z?rO#2O9c9EP(3gSh>jZpgVlO7wV?lpxue`}u=xN3HnU;drzT;%9|+@9IKU8e+n-s! zT%6=sNxstXq5Jw;=zX^_Z4>|LFP#7~nIWzOS1k}?I~=~hb39~1nGF|fzQA=!zoz6O z8bQ;&VKwppY46Izp*vCMJ0$H zqPO`ehUF_He;O|Hi$CK~?_|0!@>71F=UKD%i@Rnl-8KChdQVVXuCb)&Oyf4R?Qnc^ z$k*_C?xN*=4actS24$Z+BQHnxEp2i$=eoWd{l>X{(I8bv&^i)gsfxQoF*_$@8jjVc zio4@()!*Pseg?3b!`42V5Bke7J7WRgQH+mTo7h<2U^FIKw6n+9-p<>3);VtPfOJXGPP`Yp?Y=GH zrDP8@+PXdYs;!pIeIXW7Sat3L;nIQ^!oEacUJzEEm|d-_)yJ@XX#`{#Y)|Vi#QHMn%UGacK4OWC>Z5g za&~Hx0sdOUcvn@Z#^#NbqMvGUwsdGdYnEH2Ci8C0+AmL4`IfV^tlUbw3`-HrG+6T* z3>)cf%Y@ZeEtT;NOXGn)Phlq|un{s`@lh&IBlx1r&pwmNp2xa=Wv!olF_VRAkkLZULWgN2$}c|^Y!|MH-YPrY8rLs} z&0c4B8Z6De-On(pyIcVu+JEYX9bFLYZ*nEYf$m-7y+!Evl68GL z$dTFGG~FTp7MnsDc)%%eqsf{Y+vQFyX=^i-K3kRRKnVJQbH^c+kf>~xU0Xse!xtDh zZAk)ra}7cqL{+s0=a&kcn9onSI}@!K+tcQLFy?Z?bdgDY^HD3g7q@zxYtsUYYI}f} zYgJyVDolE6;?9b~_x0fCAc7Di5Fm3rZ#nH0O0=ydtyFlY?N@N{+f2^1w&Xe`Noe4P z(F>PS8e2JEO&R*mWb8wX+HUcn#1_g8RKm*Y=+tf<#=psqwNYDB#I-SC*IK!WzP#}S z`cIH|KZ77ru)uOf*%dUIFlQ<(W_%u;Qj=2-V#B_u)Q;v&otYz@WVgLh6@q|R{M0+$ z0-Qc%_G3IAudN%X?=a-7Rdg5=2JK$h}k7~r^ zbY)L04V1%hjtz&Z3nvQ~+$@`Cw;eIfNe1l1gBcf~7XRVYJY4@Y3$Om1`gUfu%dI35 zD$ipUM$-#;du~ZVV65|$-|fzi*+SRn_z0~3TMsATVKtnLJF&e|At23Cowu%8eV7XFfegDiO`Z}tE`wU zfMi#|iUHBIl3~a{zG-WhA-Vl2)3J#Y*rg}(J|O6i8gu&C_}QFFwhbGWMitT#pKv%v z74a}cjf>m27Ej{jPp*0YPli0>D`PXrX*vS3uw}p5I`u@jdj0%0cqPT zd*HbY*BHHswdnBL9QQ{QL!}cD=;=|_dXLyM@0h|QOvMFI0b4K@vijCNd8ub(<@9iX zO1}{O5Bf4<{cJ9T^xh!ERziX4PADdR`SPJ)N|jx4FM^fsyZ=`&D?qGb;G8)(;`RF; z^vy0?I1RSCAQwlcJm?W+i6MA5pcNTv%8l%8k&paQ_z#&99O4NAmWlw5e`VRS2cO(u zU>iL=YzXM#r+`H;f&tlFwkG=zcZJSZ2c&1jnYc>+iq!n4r(;`Qa=bf!PUvspi0`!^ zb9Qy&etUtw0kko~L;Fv4eg8m(A4)P$Ft7n2ck%c$?T4X}hb-<#Q$cIxbgz=}(GRb$ z2WA-N*S#qOWsrPleTg4+M*(ySx`jgCqVV#kU6-Vjpd)f*ACgp~^KIBv)7a==avTwN z+ZXSt1Ce$?={~2B7>BBzaE0DL2@PoI?`l1&19-~tN%*$_%uz>(uBv`)p}_(uwXMn$ z5>1^KB}Bgg#{M#h?g)O&J2xP_m2BFB9go@fM=qzl3{0m|iF`K+#5BCi$fh*+F{j5; z%arxY5RvG|bacDu1%9|ahH6VUr%am3N^ICey+q9)3`vzv&_VR~ zssT;Dg3GMmjLbn{6}m!&X}8t9p+6Jk3%9?X0_mIy$ZXXjDR02VyNd|RL^WpJ~OBQH@lt8NK?-nyXXvV87O3xeu zfm!^0sc#K?ngRrgiFP6eaW^(@eW~-}(G-IEwIu3T65{#Ni7lO1MSf2X8n zP|0u=x4l#R3q*}f^4EN>WTZeqc~`VLG~K1N_)ZJF4yWiNrnlK2!*i7P?^Ra zQ$B(Z4dX=a>FApU#f>09q7-F=B$yb&WcLC#!S#AT1QN3l>fIM$Iu&GB2l7ck{*%)S z_=U;s85eam|G=xh0JJ+rY2gHsxAXFg>F*%s(|}wb!`6$JoCW5>wgRt=?a1_luezW_ zTS6m(F6~*yMu_a6$06E?md_Iq{V6ONz1bz#l-o%KRmA*NQs+oZqMw&{qg0nV5f@8F zv;GDw#dCk~i;YXTDe03sBz>mciF?`0J1Bb&r!@RO_^*vvc%CC1oALht!caQHxR-NP~a5dDJ zA3sN8>Vv}CVQX{3jQoDEFXq-3Q4Z}+-l0yGsD?SRy8%3W#) z?l^T}!sO*zk~H;cX=X{1*{n(1*R820FP=!+YpafSvem*m=e@HgJ9Iie3k50axuKn&)#d(wZ`hBgE59T@Z-x_5>9%R14Y`7-5d> z=TO~)xJK^L!keFtd)&R#&wMY$E}ZEMyp<$|idPaCtk6 zgpoAI_k$KxLwc|+e!(;Ld8g9CEK9^(@oQ`GE3dbV3Fr6{MnluiJeJdVVV6(q`zHO{&*#j6YGfU%STh08L$~N`N^i^f8vSRNCzJK4^08qR+&K(gg>mq<0w5w#xT;n1O4r#ZfN{nV~G#L*9Q@Zd{zNw($s@2MQ|&eo$iZJ=Jn6Ss+G7Nu21ZbNRmJhrS(4STo&Lz9|U`;rK^XH3RS=SqKGj>XGab)SF zzAD;TtkNTWL%=z$la25!#n#{eo#c}8=1&V_~o7K|h@rFo3nd9Tc*;Lucu7Pl(Z8zVQh zuoU`?s&Bjg_@T-=Gdq@?WT82}!^gUV)+OCPn>`g2cK}BmhS)L-9@S)XBq`t6-aW;y zp?P3;+Zx3rV$jahy?sqnlI-}Vjkb1OBSqGCa(5pQb+6eN!h4wBa?y~WHQP0KZU0oz zh!@{s#cI{%CrinhdAsKR#}nb#aHgM=k2vMFN&*!DadL z`7*E6iR5J?k)tk15J*Qn!IdNU+c~=bTtWt`SsSUDRVecE&C32J?t^0DbQu+5Z8lOj z2sC@DrUf}|l<9UhZVi*+2C=J_k$WsRAA5c*QR*<$rUz@a@0=qsYwQ&|%Be0q9Ddr| zUsv+n=Cc}>3oq8~y>GTBP=90F2320h+@>n+$NC&kpH-4>+jiS8Z>NxD7yH}#jVQL% zqGd5h^i01E`P0&jtT1V5b|KsSDu^`cX}Vp)1*2B<-L}{nOMR3IjI+%WOwppG5ny?T z5(mYm9m1k_V?uW8#(c#%O6*V*}4XU@@H^4Hq-&)SIo<@_u!r34PwxHrrs&{$17ne%x|r zc<2I7p_JWZF8%aus zA0;wSaXKjy8-%$C0?Fn!5#Lqk$iBz5;HXGzc5%IUR|Fc z7|3Q@P+gj1k=f4Kuq%*SoEO0?v*LI(BW`l9EBWSc`sS3r{lUo!fvprd8(!aNU}c0u zRyQt7a(F!Q@lPaBd)|nw;T%4E0 zX@B&~Jvmlq&!JJORy(o$=A(J<0eM%*fICxk!oo!_>gcEvX+|1{2nENH-u>3i@N9AEogga@@B^<#u@xQvKZ(Y8P>K|ziB3%##@YN1ZTu4NVldp&cA}H4w%xA; zV?iO{h1`%?<{94LixO-LQEi`-=eTQM0mo(Nrk|XPQ_h~-;V8avFLQ#4FZFKs``#Sq zk&XAe@BuTV1}ojx2CI-ZlKkwDtPer6ExELfv%hT7)XFiA`BqPRt(#KPDb(WO=t-Zc zL_RTg#xE^jM(*-0nJoZ0$b_QXz{xWxz&EenR$x+-h||@~y_C&%%fHFe(~x-jD32nQlz3mVy0V^`1JGD`Ly(`I%S2@NmW(ddFnkDaUv(> zD%+?_tn*(Jwi@IbsLhnJ6{<=~r0(@(_?y(_f{i3DEgM7~b+fk0^P&bwx_$m4={1oj z>D>C%SDyEU*a8-{uHOoJ^B^NV{m0$>R;$B9HQ`TrYs=;crnYo_<;4e_PcWy6!(B10 zGJRlqW1_;yoE+(A#*CP6qw5CU(Livy{Ms{V+o+jc3>65H3SX?6<(O=>QfxUV|1=-#XKbWoX~M? zF3sfJaUc#_j;?^|f3#lp;&5pJ&PyJJVjGkZXi4U+-BnRh!QethJHZV%SNppukWu5) z<#~s*;U1kB+1DsSylxuD{G}E1D_^s{r_-Mj*VttVtIezRjH?s-E`oa+KCy(g0tAH>7_zZ? z#`SF}e7(=Q)cdpUehJ;dWRk)V$jku9!c3QtYs)}X6s;fs2pRyD=Dy#T^2Z(9hsP{N zX)`MahiPnf=&FY)gTFOxZf)4LvH!J?eN;sF^|O(|nzG&|QSy_@J4@FR7HjM~Xo?d< zIQ83fzRy@#=-5x5;znlktuBV?2XAGXKLyam$>e&l#o!*x0hc7IBO=5JMB*D4o^6xU zRdc1hfrx`DS?=?6aDXhsJ&;wDKFbMaDNnaFTTI)k1xc$h@BtK!(HU{Mr%0wWIVAlx0v3zLq3zC!*79o2pd}J| zm6tfT@!e8Wu*kw1zBv`S!Kb=)Mwc+|)5q47tFnIOtvjH`gle7#iVkW41~kr`Vs`I) zzaYPD1N2DaX`1WJlvDF>0#BkfwI&0VWy#%dr2Tw!qol}%PZ-?4Dh90RFB1}d*e}t; z?%2b?P;SdfLUzf6pBcc?yWqYsl2Y#=P`Cx{7vS`;$R60C+HBmDi&edae!6nRI{zsQ z^MT+;(sw*CI`h0Y2qws=$=-W1S}-5Iba2b8C%9aKbKF!CSmI)f`2>qt zUaFp#PP%}i+a64}E%KItAbd$DG?3`Wu7>X!NA~B{jlL=z*_Nm&E7Xci^D@F5 zcl}A4t0;k|OYL@fu6VP@{*GMnf#uCmy8HpliS^w(8ZU%Pcz)V&RlMEZE6GH_OfP)L zWw)1`1P;b~PSkFh40pk$_Uxpicv^ep47^_nc99+$U9MpFK6oMIvOOt=Sjfi6H?|tW zi5|t-*dH~N`OI*LK!vU_Rht7T6xZ^30Y&}QyC$}gnr<+T6K2b1J31OkpmEa*#Ao~~ zUY@ZQ@%XuS`|5-{Aq>D!L7sf?D%7fHdh64@5un!Yub{Yaua3>PUl<@ozfAbl=KwEm z{_i^%uomN4g+efuO9lAp#zIyLC5n6nA)~^iQvZ+>>xpnY2iDE+F}5?_V@n1MDXD`# zoAc~r&bPT*NnM#JeYHwwu6{Vt{yoI_)GIQ#2{B0^mA?v}#=zaOoQMO3SrxzS6Vf=VIE z3oU`Ika<3T6jI3-sXw}W1+xT{Xmm|mWV@K7iAY1#?6j-b|!klS)#cw)=8%rPzP<{*rmb4 zDO3rc`Fcs9YD`t~t>hGa03mfHMB(b{@{#!Yvk34Fv4h$`tuNO6{8xlp?I}JGSFOsN zc=5CE9n+=H+pPdLJmQL7G~OAyl&a+=;x+!*RFqw#7dFkoDTlsTfhE*r)UN11_l5Ec zTbpTKMBFefphIhT*f@NJI@~RH7`mxHUuA{!-0szBG znArb$Xoo|iY@gHC*^l{MCg~F|2_h+_cB2Cq9E{02rWR}}1?k0|@u0yqbOB<$x(2bK zm7706#AX^p^~#P?_VKphCfrkCc9{m1?7})UiB0Av??aRKt}j<`?`(LbOb7kA>y`s~ zCf2Nfp%f@;H`8PlQC~3QngZNFO0SL&gatdJqq^pL+llq;yCm_XdoW|q&wsja4bnmy zC6>y-T^3Q^b#Abw##uM}n<8ellMJ{c1{YUBkQrBJf=iX%;@Yi0y}f5#kp?8q^CA1RC_UTgGh^P$ zy6nu$FvXV1fh*2D*5-{R%vDLR9g8PA^W0?3B{X@@yiO)pFqF6KzvIkVNLDaiR6No5 z`TgT`&`Xo5CST&9qqNJ&)wgg4@Q;GV>7_ems_P=E*03NH)oBz#f@3=?;Eqbj2BiFLlGGTn-Az$R|3!41lfB>-de1kUyG04#f zk5}zJ0Rax-2Te+gV^7MC>TJq3E;(uoHwAc+j0o049Xydorj_b|7!c){AmTNhZmI!M zQ(@Lg<*3G()I-Wt01LN)UP_yufpN#AN-&q4&Ot;WLc;21;$=#MBw4`LDQVEZNEvf<~Cb$IDLYcLS34^jdrG`va6Gpy?P!zKss5B$cCwSt54ywo$_mJrej zH$~wLEHJyAo%hliH@Z+~64FGhPv)t|pl`!w%(q~j>@Y1`MZB3<-p!n3i?4k27TDmV<> zT()3!BdGr+}(?!-&dKd3=B# z%fWjqY&Ko;#Nz)lPQRwvpPl_{ntflD$ddjw&HkJi{Qoz*nJM}*sftSP0@AA}y?5z?BE9!s1W{>9?*Zu@fzToJZjcgz00}K1 zC6v(nyW+F=InO@l{m$8Ad_TYM2aYvDSnFQ*ocAo(bxl8MsL9_Zq9MY;!MUxd@KOs0 z=VmYt&b4-e8^9+M;J1x9IQS$sFJ5Tay^w$5Wbfpv?QH(WQr^8 zB=0>Z?I@a$pT9EdV0mm?ijL&^R;%$1|2^yR&r|uFF-pRXM*f=S_y)Vyq1ls_jP1Zx zgxeN^_)7z)Q4)d)kCUc?3pKu2)3?&yE$ZG8@bh-SPcDv_MD|2xT-v2h2pqlrs24GL zSbub7wNarVkNa^he5y=%@X4Yj&Lu@pwMj7k^Rs@!NsD8`ZZZ3eM~h@#U>tp_tUEi^ zBdK5cKAOpLvX(?$cF%mgxyo>8h=0>5f!+7iav!FWJIlJze z_v*1VPXq2DuQePdv%4lOM391XmuKBSR&v|a^pIXzHrf#GGT@jrw}iVA?MimP(e-Pg z`|Vy_A~f30Q8HRjM}Z zABUp#tp)oqACDVW?!Ute*y6IX5uN-glK<}WbIz^ECCpvDLdkCZ;;dwu3p1|zd%a8& zA51fDx%WTyI6pY`)Xz*MSd0^)B&LaC;?V=|%Jc{6gIV%O&Fb8PVi#xoRcGP{aX}Ce z4N4=PJ|1l>*-eoWJs{l?=Ceuh^fmd*FOTln_#3^>EhM7(ZJqNw-#X_QHouANWIMUU zsn@Z+?BDo3`c$UiiecwxN$0k;EB5+a=%nHsSh zOq_Hy6%BCIk8GCH12zA0TXSc$qOs+2?}txhx{h3RnypS&nXL*L-nzUQcr9pSMz3CA zk_%8bkSoXq8QgC&&+TgFYUV=k29md(@Y#N5w^f<@ooK}-S#uU7V>rbn&iXc7 zqO+^>t+M)WiVtCg<~+WhLZ#%~zI+oS^T9DF_OS-}0U$C^z ze@)GCDU3l;iuy^oL$hxf`k=rwP+0=dOX}B@3cTKKA>!Q0>{Q8%@8P=|&4kz{%DqoGL#);Z7&T%L~dG zpL|O<&<){p7O^A4I*~i`W!HY5Sq}*YTP?M2{2BrRgs|l+#doTzIPAbR0S<12 z4GunVg$w-906#c5c-eUW{N!eE_O*XrUu(zyQs>SMC=QM^j^fMbI^MXOnb%t$^h`$} z8@`575pokUPDQ-D}>EgOqBT}99#lv96Zus9Q^;`GJA!vw(NvV1LxoP zE^xCQ!bdm-kN@}E0$(j6$0G>d$a}(e<9~Yoe=HEcz4qT(FAkoE3=XbyrVeAz|NLVA zxN$H}ir~Mu5o!dFa4O9i?bmu3 z4&Jt`UkJcOB*3WsS2V7ko1rko0c$q*XyLtjH4kjIrcNW@oBS;=>9xuh- z5p&zV8?5OebZxzm?_h73e`Lz8vUP<8QL4`)hUsVEi2wSrSn_RG@4mGivaOY?aXBuqZM$U;8kKr_zBi(J(K77P_rPj3 z!!0Jr4BEtQWf-_{tbZR*2uNDO_=5Qs#CD7pwxmU17Fq|g9;c+-^RVeDYnSx0(ML_h*4fAi1(50jayI9P9 zFFL|=Xju60{Ni#=J;+vXR++nz(Rq6`SDyb!u4)H=o=rVF4qWtf@N)q>T@h$dr;Cs! zgLMBvX+@K*CEs0M*g!l>;e9iI7b!^UX~)OWgda17pujW?z5_0D$IrJM{A(~Rc8CWe zPOubUPja4EQ!$vTry=b~#`4q&(K0c}QMp-PY2rD}w7ai>^=Roa{QKO-DTbcYmhX=W z5a80vHs6i`IiGFWU2W%10n%Vz-&!Sh_t|8pEgCKu{4jBwHbQCgH=4&x%*I_3d_ip8 zGP`O!Qj6-fyOThLNBR+j!=7FGO4v;07qd#r>y5ISm`tCQ)D^-|2HEegJMfwh;dbRg zSC@wfzinBf_bdcDVz}s%87okL{YH6x-PPq01eRrjxrs|~PfN^w2KqalyVtY zTQB5h`$UaS)x(CbY;k-IT$6`TOGQg)hDhB~j98k^Es^nROXaIKd%hdxtEI^a>sExH z1Rf_<9pywku$C`P{=Cu0dD)7*gFTJq%u`@C9e1Ba1u#=eQSkK7* zdpOu(MsRaj0$+(adv__x$kAp*@~rFv#S^qkscvZ(%fupwkBtjt%=5iBl;q?&f%9}H z@H22IGaXuXdkG8G_DPRZr5`Uzu2j^fvEo~^XtFL8>Jj|Rvdb^%XTg7@v4M?4zPCSM zf&h!a)1BI=r|j#d-+7L!3ZcY_HR->_N}gK#ovsyLIE%8pqQ86?biVuOp`&eb@C_Xy zgm-J3`CV{TXjWTxGo<9zxf`;t%Dih6c$M0#Gsx8tDPF1Jlle>!%hRs6EI7HF z_9Y$Rr^O!(i=g7xULzmxGMovmy=^}`$sRMYRjbxG9K`^0#z8+>)XD)qbpT{pws zuzCZ}h3xpCGROhg^+t)S^S#57pv!SJsSEcj?=QmRkGQd^L6MwF)ZMzuTFJ2LaO%w+ zT4CpG)l|NoJYMC<0w9)k=hbK)?efcwnDz9;oMHN+?!e8q1ababxZ=Tu;#44-*jTMZ z&6xe6YrxB;=pS#8{hn>CF$p+;ZH+=CPk-mCX8HUhed!Q~gcDQ3QORaoR)w;W_kqKD zrmy_Vb>+?0Y-5Pu<8_a@6G*_>;g4b%!^aF--~i8OzbC=GD9~af=HcYz6AgV1L>yMJ z5a8uR6toTb;k7nznz!5hUVC-j7D_o4zJ(vhtg+d^v*v$S>OU(N=_S(FH=Q#lz%$oT zpT{9VL0+_LB_{N62?4hi6=cvW6U{b){l}LxP7p9p+i_=JoVG1jvcWs*aqeZUs0ptC zz)=N(jB#cBGT_)02y-=ZY(emzGT0oZbneFkQTP6JspR*PME-j}gf6M815WpMy+-fT z>Q}g98dX7(b8V;V96`zHgSBwm(vy;5OgIND;PU+B5QwD5t1s+&Oe#%VF>B-a6f1Q&!oGoMZ3bes;jet< z_z986az6c2ejc=nMdj~4o#B~KZf?b+0yrVDWAuLiu@zk-VIsUSh;+chJS#dSdZ zjGWX~P4Qid7E0@0RmEr{@Fh{IC27Y;P=BQduKkaTKasNt?t(TJvi!Cbu~C!FN#8xb z!4PblhzXM^j#m?9LlHK*$=;1jXTec<;J?$s=G5aG@9*7tFcBlRl>!`_*mHOB4*B`5 z%%EvbG*IOT&TnuLS+4|+%2Hn6LdcsUFG7jA6?{Vb9+@VZ94rvNP7hC(B^z#0G+!?% ztx)o@?SJndHj{LOD}_R<*y>RtreV*05}YV|jb=%w{P57ssQy0IO`nd?>ugSw(t}3E zU$o9#cQ;D*Z``8#f`O{4{7B(tpevgWXqfY37Yy*))%7!Z`&BlryVP^8(hM>ovYHXE zb?TDhe44dxET!c1UDmcR)6-V#h&_1>>9d-tjR*}6jf*Lb{ir3?Q}+htvfX;5=F=I& zJgmDF^FXZNm#H6m!lp1&PlKL}Ld)1eaV>m{?w^e z>|5H4I}*-%8^Usw4g{Tm{DnOBO5K03~4xxa;8C82tv$M zgOW=gPJDRivwRoncRZJ~`?9InomOci){i^iq)C|1q^G?V2^C(7QZcQ1k4+zm_?MVu z2>ylsNS4I=?=>v_%3Q7cVq@PxLGrDx;y7N<6v<8CwG}-nH9NdlZsFC2kk7P(TugGW5!#%ddbb% z-_5Y4^t({A4cyo(h}1VQTF&Yw=?#KMwZR zwspCzT^-5lP_$A-Et&{F&GVO*ln=*yMC8;LP12pBOgEcrwBGDDP*L!05ywgy&!|8O zMoeHyiw|$!Gt$?b0iXArM8DW&f?eM8n)Ro!0tYT>AQm&yKb%!HtmF^A$tk#pShMLF zkawXx_2ZZb624Nbwd^q?`iHkU`z)1}+S&{)U|jBC3*A?EMZt%1QwOhGVp9a2=cUEY zHft^x6_~;&EPTn$_LyV8XHx$r4C3;yh+~NYBQFo@+nRKWOB2`cWXhg{uFm`P>C1*y zQl55P0u@bqeW@^uZSi;_yRDN@&9=I&RXxJjPU>NJ;%6)BMD$07n4OWJ^Dg?!`DPA! zgrkHRdhaH^|7!$^fLUVcc`UsYqQ%5N1kN)Z9=%9W3Zx?Ls-zMdR1f*#>6$Md-#Dl~ zZCIZe9q>rd$tzI=Z1KFE%qcHTKR(~;-B zEpy+P3XYYX)sGz!6*Fd>GG2f?mHLE+wKKE5D-m-!3Zr{&sMS+?y6bsuCQmWm9_U{K zF9zQqE%dgSluA;9rHVgzdMpy^UQ1j-kieyx8qXzGO<^dqjnRl`iHW z(+k0?UbV@uPaA)#jxt#$&XLjdzR%dnh_6rsJtFlbe1@MDZvymE1fyJ^uR{SzxUE~Y#VJCe1Fq- zs^}dVZx6I#E(0gq>GKOgLWn*Ezm-(0a~5?m+2;Xmfn8aLHz4#{_=rI#T5<0xANtlS zO23uJiAzxi*r6|y$tLbMzhmox-uQ8QtFnNcmdJ$FhR_xv7!A`mJBTgUfavvqrAV}X zVSecX9&*lDJMv|D;4z_jnIiv2*hwfs>b~Mp-=C;x`y_k!d#^pzJI!OZJP1}(xYiGu z%zzqgk_~63dzZyU2>1O~Y_TKmxOXsTFu?0;97RNZM8WT+>Ptrot{^JDQUcD2B=JA1 zk|{<;?Vr(n|MBl+X;jQ*pKDWi5@d zm^nC9d`=u&oOv2lR&^3lU*tzbo{BrpHZV7XYlrmLHOHboAy_End6o%+zc?6LZ^+$} z_OpipHm5boATVE#4D_=dkvLNE!TZQOtq_{3XX4lSCEFOD>aqBVrJ$t-l$KXMx21Km zjwvn0#5?8{OrL0q)TH`H<;lp|c9S-?u$&wa9 zW!k}qE8&?e{e+7;r-+w1sSp`XzKbpK5aX&ENxI~~p)6-c1+(?I{5Fnw#c#3w`ci}P zIcV=WkICDE4B$yPTdJcD4}m($-RZgn%V<(Uh{}P1t>0jMx@>^sE8Waj zD1JEGCcL@+H5=%tYzx>~1JYP+t|VB^s)jY-tW2XLXz--zbA$wLgEITZK{%x;!MXB< zK689&MXlc??q9VA%TME5R1Y2_rZZ0fKat;42FKc|{d{h45Mq^7q4l`_2^w+5*K6#a6KtL=X{u9gdu(3Q+)JxTZPD91S(ynXm zP|<%$q2z)M(Qu--Aw-fW@Tt+JK(cJYrx-&6>mCpzlw_CBfz-=fi0J{fLJuvASr27C za_Fc+Q(SREH-DyjFgye(Wk@M;b)@@btCbc<g3#Rq*_Byt?Cx#6>>)l{(N~@&{E@iMYOvKh|N+)GkU6U}m5gSa7xa zJUN3qvAj9&PcPDH(y1yLv$_XjGn?LYH`Ne^H0nT=il{CXDxF;jf_tQpCnJiyF&XvSz=Q6#sx;_VsF~WfL>tIcmNEy`x#*{D&tNX^&=po=i4I)jtv1DSc`V?riML zZ&rLoFDdW!`)AIYX_^G(n56N1-f5$ZBtAQjxkuu3VD8EK;7ku~)ri-YYeS``R8pY7 zOj|7-q-c`yGztm8Q_p>1^(fJ^SH!EG#KseXxdg#(2fP)VinTe6i|!|?5UdyD_LbMc z+2>NNuo+)hR@&{^!HJ{sx7|0)JftAYrYo=yVW729P0z2i>?OCD!Gd#P35H8Rt;gf72HAz;*?#L3oNJx3Dqc?-Tr&o; zvX=UKRDG9-(}|9L#a7Vi8jIilsJzL}R0U$|&EAdK=l&(++t;4&WUTcX8IQh1*RW(` zU@xpN8=EmAD^z><)?44F54<2}nQQgvD4n0(HsX&xYLI%ufd@=lyxURr4V`=!Swo}p z4dTm9E4F=uxq(hl;e%gWA{Xmi3A|vRV)*pPYBAZo zJXSd-N3(J09 zdbUv&7#-qVfBPW;l74;t6U^FdDGF#w$n#YccglO6=oU3A8f_X^^4a56j9Z3!dW)Z;p|EH<0RvGK|N6wszn-bGn-ATbhP$ zzjkN%2?dM5R|ddKr{lSmWyP&h#EbPC5TV>>-r z!QHBzoy3XB2T}B_h?uxx@5aY@^GL3`{xuG^ckwLhb;+i_Yzk)$OEG&R?YBAkW)-L^ z`DN!s8mA@q-xAPFE3JN1$evfxc^(qhYYT!F1-emZN~Mp4UGKK_a!ITDB4*TL8!sxa zEf=Yf<-PdnohjfL&y=6Nm#y&R49S6lJmgjb)^gPab8G4Vtk%`+c%!&=WQD6T0B{dJ zt%}3EOHu!VL#eBikuti@(4Kw%lj<9T^Yb>L1omK@JOK9YaGOXsM!#@jgpJ7l0PU?7 z4--ShCaITuXrghSaevW7ensDM$xNrZG>N$0*He(mV>}!10jdZRaeMcrtoPZ;FaVpI zIE$6Mq-FPNo{+h1Roib1;G$b!Ik5d=$&>l=sH4?tZtX1g-(_xQ+aGbpJC&?j-Z*k@ zg(q@v30Js8jV=XF-Z!f7--aqhkLqUGnkPg$i1gu}th4J&b~(Z@(Jy=k^$Qq}vB_wc zb#k`Wcuy;lO$~us%=KTjOUIB4o}2?2Ix#TAzYE27&}QtR3#~I|C+~a#fO`ro!8pR1 z3J)ZdaqP0m@)Ffqd@r^3NNQA+Y4w9et<^Y{SCCp}KP7Y1q6q@PyW99x0zlbfJ)?rUQd+*LC7jvn-_QQpEVaij10><{hM zc%hHy2kS77ox%s^sVZXuFAJWHqk%lcb!&G*^yc$@^G-2_IUxE`j&qZ4`=i>qpy{q) zCRC#_y4Yc+PStbDTGqKB(DWjm`5oUP$ceIbn|BCOMOxyv3RS&t_?B>NSXBS)%PNqF z-cb*{$;muCE#k_ZYv`dt&rizSu&O3p*9~$^wgNzki|?Vt@yh~GNrsj$3N*^!S{M=o zD@;052TeZ->TG#ZKV1FzoVol?>eOq1L6Od$#jmA$){?@5l&Ps|M%2KXh=rlNz8OG# z*bqWu3lewzEZf)1n7B1VsEc%4(_jKb#q*C34E?|Gft|giFYZQJ8!^Gm&&W#F)SEdD zzM6){V!?DXUJ3KguF zoN2ZSD02X~KEGi<6Wii^%&7}|D8G*iJ(UgR7v?O@C@;s?^IQ^HHBiwZ0H`f(mzaqT z)7ZKe=GALEugcEmMmTjX77-n`tF`(d;%;eMz}ZR^duy2s@3>lh72!7Botfk_N%0h& z%rMGF%R@t$As%{yxc%n-cZ@IN+l4`2rL4v%`GwCcDl~6YbDP2<$=kzc%G}f;y>s$; zeV{cFC9z*JloyW1e!sY#ib=g}yP2NFwcAHL@Z8Z~Zkmfv9gDQpkEzRRNoba^NiLdr zGgPE{i(YcJc8}SAdhae%+4)Nw`U;Z<;idIeV}H#`EMv5- z>%(n%)c9nS_fAEC7{%7Y^#>U83Kkn3f+G=Eo(MMZ$PSc~q`LT0=?#cg?!rSyyBO;U zsh4fUSBKxKJL$23!IiWD@bJ*LwK#@LbwO8W$Pkm$=-$yZCy{7TEO85To<7%qycl0n zSrjSe^(_V*WRM0mSM1HfD>tH(rSx<#A-2k-u@_f!gFU0({%GOEBEQXr)k$+O0Uv35 z(fgPgm6D$1XG+7e?Yi>`j?E!TV9R`Z7Bl@U;R;kyscSt-xPkO0b}dfTCw;wA%2**FdyuTy4bFn^bSZ~Bi@TxP~(~ZL78;o%xHb^_)NG>k z{xfTquLyy$x@=KGkWINHds#^v-8!htC$@BiAjq0?SwgE{{!j^=<61wofBpUf(zIc# zA>uFcOLXuzK-&;hXE&}nHly#0%Quelii_&40KCiR#a8>k#fQ0l2Nhg5q!YXf7t6b; zB#g6^_=r{+#smJcrS`*dbjbox5!}O81gan&N!J8mfl8`{ z(42d`y0n-v(17q>ozFjwgIu7UE{WEvOpZ-m);P_JQF8#&d{Og}pYTj$bu{m~#A>R1*%r z>PYD;H0E0j5zZ=UUTuy|#ISO`{W*Gzk8C31db>IJr&`f=Cv!k_&4@Ev%_m9YQ3)Z4 zHiJhcAFd%#JLGTg{KsmJcrPMIz$$5lL_hjGCQbA`@a6%)!lliQ*plN)6OqY{aE%=` zX-a&zjQNT-tZE@1_f6{Y=@X3cEo%H~bb#~)JtvzLLZ1I-(2vDw&O}tUt15i(lm+{)0@1BRVfoEu0 z)z^2#ciN?K$~X&3d6UxAi~C&VWXe^A<|YC!Hq2(OE|6CzL1Zyu*DV*GLx}acCU>T( z;i}@U%l$24uXC3JfbKgcPlnTf%N8UV5L%QNTeJd%`;Y4a_k$F9iA%G7$=pcfXn8M~ zG)#GS;4?=BRTz7o={?p>$W+hu=Zl1hC>jBF*G+TCg5buJBCw>)wG*zosm?3y=J9Ei zR&%Konv?{jTps8NkZDISIlJrDIR#lWarlwg7Ub&j^Ywf50Ok)+fEWHRfj$oaF4gne zcqxs_eLb1|-9u_3m(sAdLu8ylbRPI8m7n8cj% z2tb%EAPpYVuoLa3mx@EVJ_#ng%;1KkR;)oPRRRJFoTvWKm@FYxr&fd{fVO0>e?Yl3 znzmBeFFxj`0f2HdM5x2xc+Y0?lvg45FGaV!9NJpC7fhkNO&BBMs6h#mkGT)K97ZpG zed{*ba-tjj2R$}O`;ebfONfZ}&`cF6vbbzA3QQVnJJXrxeDHjtnjy>^H#o90-#q^^lHkj| znw>|w(_`{cta$TIZ703%fu%Zm9-C9&Ka!zH$R4Vcs4>otoycmcG&tt@f(=z4hsIVR zozr!vZChi1Mlf?Bej)*eXl481gwJooeGI_opTY_SodL4qY<-uwe8ksLS;FtIHq#S6 z5XACv2nhPWiGyLuicD?%02W-;%ymlR=v5NSsG@aY{Mg3>?=_d;)a&=Ri3rnR+qR|U z?*Ms17M3Mwqc3jOF`BfvIoS&?FS7$V3JbC_yjOVi;_MK;cb{dp9(6$1@q)~O z^^>q01(OL5-6a}D6hZqZIo|!bD1M}-ohDD`5|$ZsdGa-Wa*>5A*i)`K*r{RR#?h-? zyT{uFz^esib~o3}zK(mCJ4ux58hdTAXw})MY{iL=-R>`j6KlfBA+H!=pGiItBfJ`} zlHpHbW?Yc8!Onf-j|AlreaM){_XRu2!sr;qr)JW zhk+f+y0)+KvCwFy{;`N!6a0(tMF{b zx$AcNE1T=Sk_=gERH{?tTI(chL_s?54kJ|Ihu_qM5`7M`6e<<~wBG2( z)huGloPkzo@&$n3zXl363v%2sY<1UdHWA_Lq`biYhN&fCUbWNgNR9gGYiWd++`XiQ zOnk!z?T=|l*4-g>z@QWR2V!ok{Z3$*p5D68(Sm!|0ps)5DEtoS@82J^Mrb`?p@zU2ksk3Pz1 z1T7gFv|p=v-tpB-&)gJesu z8@2pXAG?nx3eCovggBJJeZ91(&P>=`PkyUEajI2g{O5pcv?26 zg!G?CnPM0(x_SR_U^=NBfWhv|ovc*+J2s0SnB2bDY~5~OMgJk)Yn)2 zjTfs4C{QfpPd0Y_^Z<}73EKVQv`XA#*DVx1>!r@z;L!aFbq6GlbElL3q4KKPiG@{c zdd_4q3|nVa8p_RhJWap9Whi2`SZ#wUtBUKv*gCqo?^`AOg2oig-LbN>&{fmRV(y!8 zXU2emwc|0{JD^r{{KA38Nn+nKmXpz|chfxwy2NB=L|3TMYUQU0f;*@40qezuHzdJt z_CK*?5oGbtS+8ybNH(poVxosPuk5^rtdQaP7dsZzq*;&yP^ue!S&}%M%Kh}(m;^i~ z9~Qm~w*fh=f=;V}WB7!%IjpZI1vr6eE#YTR2`M6O)2`%>HSU<#TO2n&CEE&T`D_l0 zg{sp{0<9*ikJ~y3B~-B&WYT0C(TuK3_p6Opmz-|9y7ap;=sak+4t*{|?Fg_o``p5S zrZRK_5pZOpeU|eLTBRpY`|w*=b-xVl%Iy(Ve@dLYc(D?PDd7SX z3f`}x6hVC^fC#4NW&EoYtv}36JiC2)Tq!Hzon9%9g(%DR#S7sOr+9 z$p$w0*$TPr>KgL_NG2%Y-IdvfM`G*S2B453{TK_BoyV{Ao-t?gvgbJc!5%Nwgj&y~ zF80T(;%$zWSwQ}arGW{9eG*5rqku~9JYjFxdF4unn;jO`AZH&pA8@1vTbe3*Y zpTm!(4i%q*9BZ|0u-Zj{(-WU7<^)jinSi6Y3lmrcDg0AX1^h?j?FXW@1M-*eNkof2 z(YT*%01B%;$5?TU0=dU>$cwOaay8)&eXpe!cF;8RX8gSAs)y1=c@%T2xp`G&F1$kY zNZu+q=m4hwqxx{Yv=YvoZcny^#q4bx3(ebxJ0Iqo#;>n_TOP_x=R7!E z@RCWW(mW57^4t)myis>AdzTQN$Uf zJx4|;KV~%Ecak|I7ofRq&F@)mVPObk4`U9bunyuc3@Wky;c9^krovJZAg{rx*kXwF zBI_K*4>s068T=rI&EUcWwJ{82i$x@O*KU&Rdtt)D>*3RGaGS!DpiEH@jIO&eGklni8V(*k6V2V^dw;iea;p%))+ z?Rrsd(AlHkO05^=h9U>BMUg1Iz6S%i-rQr{P(=g!z~lKsWW#9a7vN@-o^Tr$P<`!9 zh2zo(BU?vh$i`P;Bjz58Fd)0@7GPDta-dNw964JN;U!sL~1XG7gQ zY87A zl<%j{4D+&YL?s1^=?BpWx=d;dZ>bz99#WIpZwR5Go4=e4g5aoJSBz#y zn$<3`;Y^T4#UD~-SVz#thme2FiR6!j*N^}!XkEFl%%%=VHXNL9$@2P4_%8un+wD+W zN@wry2J;#@=~}(N72E8VdNlzw1N`(epBLAp@FQqbc_L7&xoP>A?$SmK8dbWDH+Tbu zS{_iSsT%uJ=qCiKUt&^$vx1pX0$)NelK}N}LSZ#O z$8B|4*TFMq8aC)d3E#YyJ$h{?!1&}>h^=YnT|Zm@YhEZ3(5~mw^-Bp{d&zCK?M-Mq zr2h0-X^@kU!yq}|jljL{d!E9DEf0PeEOGR7kUuGC`J@GH@eXZBVBu8rv2D8+l=ZaD zpgQZRn6rLnUOGQin8Eo-hoVqy)nD!NG~lKg82s($ZLYBJdJ8EO;X2>SxKRfP<4OE3 zO5R}_pl~xFK-!Q%6<__JGV^^n1GY=X+`r$D{i7nh&QErp>juHtA=Jp>zSZOVYioY% zNbRhj3?HRh#eENTh6}~PZ6a9C7ApX&eWR{w55*Ml??{pqv|Ps#8KQ^r0=k=L;~V@+ zk{B?H6NN*2UwVq{r?I0Yu3m!9PdNx`ghgooLaw)tnA^dUs-rf71e($D84%udHk>s+ z^>X?itIXWsTk`OIHK2gj4hg78w^(1_4!ZLD67$M8?Wrr%-3E$yJyPK=RkDB&%Dvji zEX;(75L=<0(AGNFBMkC!7ISbrh{fAW6Mqt5X$N&?(R{4GuN<+8pI~`pTflgx&j&0_ zqKOA+{!M?%7fV5aiconlwtk8S#r1_`aYESC^DiRq<&W2=DOl=6Ya8zWX5RvtnMjq( z(!+{u;F;zA1~s8z-g1%t?m+6MFRzkvSDD8p@hUs7dvm45-L zSd0`gHgwt5^LN2$`u|aRRX)p5{Kmzx)o?7gc7(b3Wn$nFT~kq#&lNG$CxH!L7KGV& z@N|J+>C-`17Z>~-t&~X+w`WMl`)J>IC4IE`=?|yCc#1xtZT{WI0q#rnRJTn`^~_U> zuJ#HFw;@52b}tKm=EXQGqZ>uuf7Ej0}IsL`QGqULC6*a<|Ds#rNOZLNz$Y*@c9 zGpkpLqx|h6>yc7gUWyGxcD-{u65Q5Jru>%k8_RGV5TM}z5Iy*|mS4YFzcqI9N5-65 zWoepT;$0W}-mnxaPGHS;~{Uuv#cu*ytD_mQ< zxjQ$cIt;qXfA$0dzn)u{oG|K$bZ+K3+A`CxU_85JBQa_);cKN#{<+rX z_gs$2ISq>sJuHChrf)=;z&Gm%=M3gQox%d2@=zpyQIIENgA5?Ql9t}S*tyF~+s~mVS@lU|4;U{ zysy#5xWz70oy@^NWpU9+0aEC`m+EUjbTSzACnK@q8!EWc^)Lhis`!aHUyj=IJt`Jp z9zrxypWLL_CDCxs0!lTJ>T`9m9Tf1qQs=-HCp+0oOJ>w{Jo(g;u)9Z9=25_-UuJ?G zW?CoXjq0M2N>-Fg*Y~lA>7YOXVf|OM9L_&#XSOMcWEdnz(;mqjRD@xTf`fGb(UK>q6Xf^Oc##H@8v7 zXKWJ_TJ*d=n76bdu6dOf#58OXAN8R65 zxUkX!EOXB)Lo1~6u<(0kuax1_{5wm3x&l&#Ea|Z~`$}zgkvaOGczp$)vb%55tO{qR z__9BXN{Au0pCkr3nhi^BY_Is40ng(^bXR+Pe zJtZ7m=bY}HKPtCg!sXKjoh4a@GYaPHnz1{gzaL3a8dBxSK2xO1B(IPaF>J}sEX!JN zi-TIJJ&El$2*eZhGo%sCV|x)f)7hNihUyi=>u}d=83xFUO`sb%+NRwF74}N}eEl7e zsihSfg75Nbyu-q66p!1fTAxfQ-UCtz5QzR7hVxK<^e`aFBQoNT8Xo&OX=1RBrPyAC z)Op8TZy=WK@UhxD*;V?g2rjaXYR!K6iWK*O&tve`*#4tvMu1xk!hD$I_Fy?rv?^w` zf9nR!Wt{XR@3efqz7RcogB9z405A&_$^ZG#gXh2w1WYjG|KlT_g!YRg_ z@~N>w@wx|llT$NVa6C1Dir}{}5p^-cRiD)5SMrbN4dM8hq9xqC(^kzN0K|p{9aUhq z>t-A;cOOO%hPq;TzyEyFUzZ_<01?>m%kInhKYq(DJ^z8$v1*|!Vg^tGzXeiPi=s&x zKTt_|b6PnxAM=@bAP%XmG8V)XDQcnDd!?mUPek|T-`|0oM?6>oZKF454*-X%b*P)} z1(e4ER+d2Y$qL$Xcs=@B$g$69rp^I9>o($0HKuL+U*7%CiZsmdg|9WVt;dgHH>O`X zc&`WZr1J$n9#&HyO(#;FI>MCns#EGrznLvwQ0uCt=f2UgSS+B8a5M|L0CNGopCXI$ zxvq-zDh{wsb%(&it~c7lN)ovM6@A_QnDWeUDt|!8&hhTjHLtl%ppNncL|4zg+vVNl zTKOVvyaEiU)dS*r@Ym1k29E&)>0HO{{jIBc`z_wzx6k86@Pl>_?ZkWde|@SUiAPqH zpAO9woB5gZf*g6VF$NRK2jGs^W?{Pyg)PASY%aa##k7ZOm@)Qzi&rNSeIL$4EW z0_SpVZx5`&D5gHtqw5^G0J;PdFhM^4C$Ofh&0g ze{=Z|U*=$<-@X+lgE#*AR3W83L&VL$L$h;WIoh;Sf*LK8^oaOch&x`*yB~a+PNgQ0 z6f*)9VA^9}%yGOR`aA1yO72-K%=_ORn;CHIB)iy_|C`(YZ4G~265O4?HBWlW5o_>& zJ(2(I&bR~- z#H9~q*%L8))4(*M-RL)2*lO~vOOlMp?L#>s7M|z@KaQubH|*Q zVFWbu#dnt(1^kpNK`n=5NLdu&;D|W%Ug}k^VvWBG1s^l3S%m@{5$>cF-&M3ssqcA% zuXaqzm7aR*%O8Y$$fCTGA+yKZO%1CMt`_=>5&pGx3mL~JWK>UI2Wy7kHD9>>FD_qX zgI6hW)Z$@gv75$yEtMw=XAikJeV6QCzr=-?4-J~eH8wiPdsl z4!CbljW&6rX*^fjJ`-Bs%|mzqz(X~+Nt2F?+JIq7a4lstfPYr4j~B*5&K^}ABY#XD zA)G4D*IqfTZjZoYOxLG+P1h&5bCLU1;*&zSE06;dNFwKhJ*3hYkA%YtB%i;E;@h!Fbw%t)b8Awjpp zAm$_GqMig&uGnJeUjtl`0iGhTp?b>##O0U_sh~jUjc*Sg_iP$p01`|z&{geqRRAK3 zU#WW~uCBdz|HT;A#&{spp!ik~c2QEKYBRGK}om(^S(j8<38=d51=xnf{Z7VQu zs48C3f*BOF{`m+Ph3!e3+WXrrv6tCj3H{xBV24{Gl+RxLY_qzvQNQhYcn)M@x2|u_ zc*8-&R&oUY<;7jdSo_ZF7j&gJ$|N(%$qGkP_4?@CqIk|>BEeW#6b+1D7aE2UlH!$Yz)V}~B>MoY<7)F@3+Sb{_5?odwFdf?E>;Jl6 zFY!=mSAypx^T3?&pp%)_u0Jp>Wf*y%i?2?oQC>jb)F&Tc<3@pLuGh&Xo(9>6C&0)= z6)<@=fTiwe0j0$4hvLGv3CGwuroU~1MlwD^a>@8?d3_^2v3y)h8D1AVYh{vT2Hh-v z2Yq$#dGLwT-Jb;5(f7Yu{}D4DDg(Qm*Fw0az@)1^a0bA@{L8!ZNZ-p!9VrM<-~?)a zX&3TesoVloDQ}TzV6LSKm|E|fc>58nO8na@q#f=mS6a}2q|D0rbKz-tafp-GFJpw8|~KBVarl z0ZC?Gv+r$;2FUXCPLXT=wpuEq}WI%j2!B3oDRc_rS$dBS8NNR3EKKjO-`fV!X3POUK>62 zi;4E$xx4ZG7fs#4g_nWYwslsO)Jac*8nBIPw{m;u;XD`GIu@{n5m>tGi#c8S%zJUf z`c@0RoQ&du9O~^bbCjD5$v0AGh`>4*QTh78()xE_Hw7piF7|nJU*Qc+zS@o)fXS_K ztHL1gT@E*Z%RHTwy>HMBuXC{Dw}RH*kvjiLi38C3U+a*8XD3@HmuwkPP;%(ICik^P zF%ii0`9L5rMgX3!v0BAg0Cik75WQFSwYg%*S=7ps%D%+n5dtN7;XAlNh-|6d_PUg9 zeo)cIXVz+Ga%L4)KE@7q#n*szGEpU~R{2pjZ{p=suxzkzY5A$r2-;iyObf!V4o+(I zn|6($dmS%uH1M=OmG_ODuSOOzBM{M~U-NofUD96bCX($qua}uuR!KT>`h>$lmvQ10 z&XL`}oO*Siu!1O*H?|~HiS-HbgwfrfC9DdKtB~7VIG(HY#g~&tP7-1OZhOAxlizd# z43E`yyuX>QBMS5z|A(=+4vXqr--iKFK@39SBZ#1cN~)BA2nHbC9fKepqtZEGp-2cw zO9;}PLyw|JhcrVBA>9l^4#T^)iGI)ZyWT&}IbLwsd#`%pe(vX9xDtT>-a(Vk-;lp{ z4xUm1h%n?%e9vm3&V&62O^nK-zq}YHx}E06p{f!7YzwZTNf8A##{aPh^e-fYr%+KR z(rqdGR9CWws(jBpdST%3RkFI#+}REecG>~}mcEw&GY~oDvl(~Qi`=ipKOCqw(A~m+ zZ+F>eD8N52J_FuZb()IypO3MnvY2N408s738Qz$$!XE(Emdi`lV>Ppdozk<0JG$|7 z7Md%C&b|U3*%UW9DB?K#raQ>q1+4s|I7IR2a|YeIKt|7-#T04*TIuYOH$2NB#SzfC zr52#Ws&tyH)Gbu4!fD}AhF}}znam?J{|VW>MZ}efI#<^8pWAvtst#|Rj_t_M;M}M$ zZX}@eMcEx;TvyL9aS|WKyLW(NuRm@Qr@eC7wytLrQM= z8Ss-P(VVWxy)Tjl_!Z!l#j)2^?-Ljf*EW6zd*kY$oI-I27BkoZimzISN42!?9YmeP zPPP;R^Eq&}i7T{FeOsG1sg*zGA&F6}(A&0eB65Atx<|iu6W;YtC}}w_t+o}rk*C=T zt5Ga8PlV02k*b@2Kf<%QC9_I6woer~f^!OGlR{d0j#EXm%J5qPYuF-PypjF?QD9t?5pR(|j5VXqil?Lr-k2 zQ|8+PgZu>SLkb%2e|0ZAd%H1w;87cbLHD3Ti7eSb1ylHZQ3Z4SLz0n8YAN?|vxDJ= zZZlb45BBfTAA9jlDA+TPI@r1Yv4ag%78bG!eL8i#cIZDMMwP{C95E-@8 zY>WH!sEK<@6tKYuN{l`}_BX`1j32{zb!%v~Ob4><-{#+UJhLM3@Z;}g^#3|0M5Gxp z61OS59f!NR($y9q7(v*6l0WlO?A8t-u5YfRK=)QmnR!7U;LyoWsX=}h)cmT<3?0Ik zLEbqv0C4>;Era?0cU+$pz^o45d3oZWvw)+9#s&AnGFStM0EB+6JXLF|F`~|P%4&t? zZ6y>ur61^eKqq?7adG_e2L+)|&yN*y=2mt97%!ZC9et@1Xi#iAJvn@$5r)7t*d~W*9vLkCp8fvi#91Z5x2WEKN%!x!P+1sw>TtjUH4R-&cgC6aEVN*r z#k)J0y^;+K0t4!{+%U?l9gu%-P7&fBemM`l2K*Om z==g$`3-o(cx0&RKb>}@ZiYE}3zi&l+bkAQV1R!lThYzDGEjw*LzU?ph8Wy1qVmzyK zvSSfi;DuTfCxK?pzJ2w=M-=cv^qp(9susvSWXnb!O#v|_Y&h@l~C;a z*6;s3NVR!y(_YXc_rQVCTnc<`wln&Dkod!(e`gjvP(UF;a|%V~ZC&0U?E24{o?u%Z zqS?zg-w^Mjb*USCs?bzoYl{`ND_YFVrZ1U1``37(p(}@yTDcNl9hr`{d32xt?_W!7 zk$dcnu&j3kBTBj+A5@@*Po#SdkG00wHe?IJjoS|VJ?CH?3AE&0+ju(S2izqht4IGH zV?r}&HN9JW)%MglckzRJp>On@XD#%ORSj+16sXX+pZ#n7zW-_Q-GsA~s5I}K+Hh$g z-1FDt-UNT3Lk`{pNnD><4MxyFWI*u5QOQlcFXhaa{+ScXyMYo_&0t+G^h&)r{m&3v zXg0s05q)zP-lDV4ER;JIE}X4yqt!zUnb~Rovv^>-tO6v&S`aG42G-d@_`i2C6 zhWTRPnyyebm1B0vN!RVtz+&)D7WPq-p#7)60MYM)< z8tN+kYh}Agd{)#DSF^nr2lKPJ3+Le38WB7S1w;L68$iI)4<_ZU2jFaa8;hdZ zx0h;X6N*j(khfmSdy5x~v9Uei{(H%kc}eN52r)HX{5~KZOKlZhs?6a11R`p+BllFsN9j1FG)%Zs5$`^yY6Nj13e41-6&evf_G?RX2x#!*u)I{4vK%egWZ}T3E-a;*^`$l$oWg!3K;KQLi5mxY22o#9dt`PEef ze>W2mrW9{jG)W){x~kd(525Q_qJm~0@E1aX-m-7_{6F&T(eeiMHDwLq0SECK~eu38|y`$RQ zA_fnV9SyQ79M=ag1EPZ`wGm+li;vlYdzQdu{~$;;r1X}MX@1aRf5K;v$^}T~G!JCk z7*rOv4ZBV;!cILD9@U2&@`o*;P*lVcc&$ds?SnV5pn2;VQ6LpEKlX~Z1Zsx04j(%r z?y_t&U=k#TchH1+I%1ueFT@c5<7_6g((qyJsRh7EErc>aCD^S6fgbHobcawtEUpA3 z24-Afqwq=j{fYR}>`6d+P!v@-71er+{)$&Qa=A^OX8gvGh)x^NLiTOZlt9N}(u;-% zK-~UgTnF~ZE{gm*=*J`zR3=gLM0ROrjIevs{{P(rrMnzUq^TJFLS@)8l3HqNw;BYU zAh;3Q0VLOURtf|G8?TTV;>eRT%N+WW5C8En(;(~1NAD3}O13S}0;K|Y*9v1EdF&PEQW|2ceVs6TwByCHmj z1^c-2Inm8?=U)4Okol;xae<#bL3b7(wFQ?CljZ*%Df^ww?|RdUE^5izBL!F$gyEHUh%gwBJen z*jP@Jk!4hj>ZjDY@5&56Y^Vh*33_6{d4;E>@#>IGSaL;wW0M1N_?6R|^8q31!;NTd zfFf&_R1XaXLPn>t8a$ntVL(p?%NryNpk&|6~9J>Gh4&j7SA z;kAM-#t-SQ&SQQxGrJ^Orey`dcvppYaBRN1M{}Ln&*jiEuPtFvI$P>aQ6Tt(s(Fy0 zpaT94eYMQ}>%aZ5&mp$Lj>?aH>ZYqY8E&No9u zxb0V+Hbq~hQczNYTkIbcFJ}$qM9FjewnaFHX-!0khoO{-A5IMlK#B>)@fbsn@pwnRo2Iukm? zgx#ljhlct^5i^Ue!&`FB&g-qP@(SozL$Os@IwxnRR;9j{AyJ{J-u}7S`M2?TF%`~s zt+|C$Kz(!H$4G!Y$aTOwCZfz$*KPKHJSt*waXuF1;B3BxPp%LJZ=GM<_q5*beqr%@ zLe5KrZ(-(b5Qq5J?j!)g-o5jxHLB!UpyAMzh5*vtWI|aEqo`BSMZ_zvf)_(T5HguI zKcj{>|1-6h7rR3An=3GYN3AV@_bIhj(|($2s!)G2hlib>64LiFkI0_is_`8k`#UJM zxDL|TCcUYx$p_7dsJ(EcWC;B)%SD;SL^4m56JMV7Dx?TF4c!tOOO-aFaEu$D9SI(Y z%b9US|Nop#wG{b$SL~!tjG%2zYf8f&s3+|TCfcWUg8kGvKK>_6?YinC!-O!VFl);< zoXat2s%2iHOw$A3h|uYqn|wJFwlF`W|NmIJAM>48Q3y&EDK&r6q>Iq$nH-!|a_gz| z@9U!Uff^Kmu%{iUvbv$3&T1sKSucSU!I z4;;D=9SIRkI;b2INW39$sL;Nux&ErZVr}I%V814F3`jqe zZH*l92_d_ijO&o&wT195NQcD`O#c`{d41cJI!Q{CX>d> zxf(1&HWf2b;1_Zj<;BPkfGHqPW0cMn{;+N9{Os2xU&s#&A_yK(oN{1E_0=w*fqX^W z01ALvpmEJdZ_f>#OL!q;rW3im>%|36+UX4wRR;+ivIl9~tvrgvX6 z{63hwN6O$t9Nxrq_jMOfx4Hp&wN>Q=<&GSsOfOR;m z2C_4ndbY*v$wMG)VOcP)Jmactk( zdLBO8>qQYv0iyE+lK5Q*yP_YEFf3(KdAoZ6r#umqZ2EwbDg$C;4aDxA0%&SKpoLaj z0`{^w6blzh`Tt2P(o{)I*xL#~B2r+PTX~!fSQwU$i*Ik&mC%Am27B$k`DM0zblJc}xwV`l3T(|d=P~AjlB5J4wyiw?f)_EZj@ux0@f=+N za&NH>dVCe2nL3(u2?$@s0*1XkA^y5d>7|Xj6J<(GZh=bC_&` zL<$x9t-|RR*yCnnZ}vbSG;{7(f2WmoP{~a*2CX1<>ws%A0BpB8ur0jT0#$3;*3=JM z_2!adAW^qHEsI04GKgqrvmuD$jEsW%A_07@uDqK3ocCfr$6A(C>d-8%(kSUje#G14 zydG}=nr&IN$pyY4YrJIyvYQl1HQ>cd!nuV_lepSV?%r8CQnhp+Xc|};R5%5k(@ea0 zm{`GNEvIucK`w%4;%)&)XC%t#T@^m4!sZ)B?AR3wI{pTeS56CA8wVrMx)pZtSKQHC zo3Gi48<&}FMXAe$lde1h$kL!m&m3qPvxQ)^Dv(*0)SrKKALo196T+_6ZI< zo7O8e*BB=^iR$lHFQmX?ta4%pT}=ovF-pbd0PF3EZiwfdM2Yhm6Jk)=Pd)PvT$6v| zPR4pCL3=c}fCV=&!%<4nV3t0L3zkGsv(lQ#%D|ZH5jz7I+R!Yfl&)pT3-S_w7MGm_ zGi)CpfFDRVvz&9&bEBXaiRbHcbCE_CSr25$mz_He{eLyr#?13MO$q-=yG){rjQ;$2 z6|lIpnnGmW6ywj}zkmE==})m-HXkO5xoV%&g3C$r9kz{+@5a9f4j(?=-#TSrXV9zv zsocS4e787T+e_weuTC4G_L^Rjm*Augnp!PIFywNo!0>nBz=WkFL};7*glX z|A2%z?tqBr`Un+K-KSvff1nIjDWg^YvXoQph46~u6pW{Pp#yq-(RM(5op%nM3;*93 z&MoM90?&x9oeli_Z>9JOiO7z{;Hf9JJx?|S<&sR}Yi+{@?4&mb{Ez-ykY!f31`GE^ z&4hdW<@0|(OoI6mNw!`|9xZlC;8k@?N0W9Nr(Ira6W37lv46{}AfV2sG9oZ21pqtd z%aXr8*aJc6U4QRZtN~$-FKehrl+?1w;9agGy+<}q+s<;XBj47j?bz?=>31xrNq%`R zAazoinDK;HUm;=G;nB}KJo-`-p=M$)(pZ(wwKUp?1uV{_Mo5=`F>-+%rH ztZbJE*h?#2%p@Z&*QhD}ey7hJa;_n3s=2=EV#li0t1)7p;l*?4e%ghuRyQYGI5)LI zRQ>CJc>4bi?w>jTes<_VV4u9g!vB9>{U6(Crk_8O$tyzmkPAa%JeEUa8SdmXl#ue+7rX&bI^vJm{4*N)zb|ufP8r zhUO>p5ysN?HTPp}2i=*_<9drm5D`d@TfdJvIW_XH*MRZ1Uj)mjDXoCa3AA|)P6p^8 z{$J3d$4z5Lt!=0SrC|o@b65v~*d_wHG{JFku%D-5{;D1zb{Mz72ZK+2+Jnl?py8); zvMnCNCCaT^ln1DrwUDUqKG0cNoYbt%z(`#F?L9uTw!(BK4-3q$X##iTm7(ggC1UID z>R4Nst=g1_#6K7yUgwmX@pBRF$(Sp9-1waXSWL$NKvv(M?Osqfo$_5oD@loJFk)hG|h+s6>O^yS@i0)$vJRL06siZbqq7jevBben#+-hTVU z*28HSh+48BFyi6Z=MOn(JK0eb(A@6>6xi6}yV<(M1)z4ue@C?S2=U<`r%Zy827=E$ zMeU*kVy`x_S8av2Tpzz9x699YaRsqdI-u)3Z!s5-a5Aa`rb*cgO845X>-i-&qY7$u zUH}Ag3?&W<$?ua#e^&F95zr=p#hxe1sTN81J7YO92^#w7zezqu1AMtF9Okw4K~d;8 zrp)Z{JnE?{^>U*{oz=Com{r7{qUZuYfN-%jnhJ{(1fVKk_|jne32AVzp?kJ1C_2t4 zI$}Lqg{S&JXg^O;38vHF0c92C@9{@OlMix3wz=Djh-$ zUkp!CXc=1J65hP^?F_htptr`?A!!H|koV$T)!_A?nFsx|4?&$?1ur|N`igpCg;C~l zHtGF^F(<2@A^*#oLR$;wj{_w7A_QAZn8$I~s!qcC$GASnZNXPCOu+qjbS(d@Sfz=R z*bzhldRn!$Bm?L~34SqhtQpK|_us98>m9Jry(Qv=m7wZ&yONFkSpZh$@wHtql$k8z z>mo-KvuprH%@NRKU)sPP)5nb*GzJO|0RfDnJ$B_Y?2vf7ZFA%mD2eL>eDr$@=wfT? zRQGG3t<<)GEusiqMo}Mxg*rfaH}Rm=$Ohadv0mOA4E~O;1ZWWq0QBA(sF0;o=xS-D z8}zhd010r@DwNHeJN4@kiv|1wpd`S8o~4KbgcQ~%YW$fDLV-Nrc>xN0lg`tS4!i7yr36J%JI-u4J^+W#>p9N#w9u`d1@|04#O_V2r)=twW@a{cFp$;b_tm;JuyiUd##5Yl4foDQ4{rHQAWcc)*i}2pX;mtV4T@I6|6*b*Gm=7i`O^-p;hZ2UBDq>>}_TwaZq$BXv4xsBT%1t*H}yU7$&cO%r|kp&p0jHFW`zk`ZI zfORv3shi^S50qXVv}V^>z=wUX!+35K1B%}O)Z`qB){UYwboq#Ba0ki30Jwq0Xf>v3 z5O4uf_>@j*_2w8TaJuiU1R)@fdOWALrVzOon|6lQMCCB7bPOer->wVUf=PmIT}Og)Q?&Fe3?P0zB6u|+n6GTc6h8j#~fxOCfMI6 zQfy7*1i?vZm%%~Gy>r9v#TFdj2isD(L_kgPIgKn zYq~rdA`DH8V$z)6;oA-?hbo4w)n5s=Z#&{Vbu(1{~cbXe&-w7!DYsaf$}O zah#|m83l=P4Ir3`#{i>?TO1ld^(wAH%ou=W+3Bh;gQR}otk>pf#*M>nK#ZB-+6Pk9 zFqF~FDdr`xUM2GdO+AjgYS(^lZx*UZF}P2_f8s+@N^dRso{QP=<&@T6myx9*7)P8t`OD-few`ap;S;DWxz>f(h(3*SQD!Qd^-f%MWO8wVy_U&V#!nmy!w-iVtX4)I$Q77)7fp@JwA8 z<*eTOUC8O>lIYi9z*-DqW*C5a>11;hC<6IzStS?0!h=Shjc1=NzpAh0gG)KQwn10A zb*P8M%4gT9U2*pf;tLv%8wh*_-vDO?MMcrGXUXIw9jvq`DKtqe{0*MapR$%8!+eu5 z=29}|rxysHHX;A|-$4PVg8?0+#4~rP!VMz|C~V+-SkzRsj&pyFP5f$^YXG19QrSiv z_C}~FFogE4Or|My)sxZIR%gbKk&pqAArdmuln)AJ@1g|MaTJm!_G`MdxR_&-#6cNEXgZ;N|cGZ%>?E;a!2--w=QM3Ot6{TY{OK za_^87JecUXzn2wKH=5|$jT^(&sHpOO`9eHsG|4C}?KAw;>u)H^qM`#g zwm`wQ9XO8@?(aA1gIN~t?{*~1Ed)=P`AtF1{yhpnRTkVVR3yC)*|lORikSP$pdx9S zV?tt!t$m8ZC$BT7wRz7ISQDqmfL=4aPWK-= zPj~PLF)4^#iAi;DCcGa^-p$1uNb-W@yZcj!h{ecW)%)sHf8{%+xARq=-Yb6H=i|*p zM!845Cpcwt_xoJ6otQcgO*S*-U6RizpRaoOiF22?(}%1qrL3caqs{mlh5>9U4Tvh` zRkYSfyCHsXKZz)nO<+V=SX8QROjL%DkWg=2wGbN2Sw++(@0RE?GkOcY=+bm+;+Q!g z_4BnlOXk0Vtsw6WhISxBQzX3tT@EeD3=+CBLx=k5>ImtG6mQW-h$hKywyzoDPo5DHRvXe&gdA zM!7Sz)Kz>W{{S&5UdnqjViPIMBsB&b!%TX3U8DQ4;SjXU1l-hcI?9gKdk#sy#lpTR zKY$MSeooQyPA3D$9pkL^kYL{bu#G){84v1+ON9YyYf7zUr)8bDeIJY4v;4`tG`YSfUoX75r)SsPrg_>eblwoiq+fDwr3PkPpZ{>UC|E_KJP$-N1X7ElGfj|7sunGpDgOLp<`E%XHtQ@LqxxE@Qb~{_sdoJR9W_Mh1E%LmJ3W3qZ zscpa$&iZ<~*-Bvp&x)Z_3)r^?dgjDpit{NbC>FMplasg9m5zYK`MV|Dq0q(zskgo} zUJzAJ+>9hkKGQ2V)3aU8U{|TQ_?V>Paj+O)7;cclZ=pkyaV)WmO;{>0?~A8!_O71n zF-kISVz|vMJj3-}MZBIfjC!wUp~mp%DNEy)!0QdLzFvP#bo~9W)p)tvfst8qJ-&?9 z5ILT76&jlBPkns{UK)nh^W|0zKrG4#@vR1>`ER*8naFKi^GDIe(oc#+D3Do!!ZSf# zAhFLq;CWoj^dK;sa%LQsh0mA49a!`nXFKYe-}IP8n}+%es9g~U!ba=ch1oB!df{Cv zlz>JCLzGHYcW<8n&INQvOEpE}5`u<7i(xXzx8x`7A7%lAlG)_3n1Lt}ahOg3{(on> zX}e|TG@n^Lt4|9Z2j~x&62c{(|KWs~+w&xJp2;QmB-Kn5NUeYAe`d0?p@l+KB^(pl zQ>TipuxMUGq?<_5Nj??*=J0ycR{Kp78Hl=8auI8{<+>klB9mG5CPhA@xX0@?z8h*v z3v1#rObIQ#f9Hz1ZIj!f?(W$m-gDLo8+skX_VQ(>P2v4&JJG>mRc^S9C3R3QmxqA= z)z#H`+_O1u?FDa{x1JzXpa(tHRbE*#>rq5O*>=PcxWlsJM^>WzpKw2cN*<2S=1BA5*ByrSdn0k=RUbaknt zBp&(V7^Q`mX&;0l>peig!RO+ z4$(^@9Wtvzm&*fn&l^#=nDo!WII@GDZz6A;-s@WmaDIsx$Ps^m7-)?a{jnuSP5^65 zXs4*l`LuCcAjlw``W)*rxR_=dC>Ry$ReEeaihWQ+PA}?|73Zo}uN%8~_cPNb?P+fC6tr z#qdK1ha#~fX!$l^U8(&+a@7GuuQL523Dvw8>$^vA=8u7V+g&3ha3~ROmNgw`U{aQEBh+1&;>dn?m1@5!{>=ifxVcMAg>wu4t z-I2U@l5tf1DQ-t2u9!AY2h(d)JJAzD>$$_3Z&GQTL{>~~BI}35*LRQ(SZ`$tk(^amu99%p|L~eSK7eZl< zGU?6Ji;_Cz#)71jWM_!SV0+VPINbk)Ji(nHJJWzaPDc|!F2wA^Jr$<0|VVvs; zo4U;TaKm77amTar2(u4JiKo%lx!n*29FOAth&C%&L3Uu`i z4JuQuv7Y4;Dk>`7C%>4zU-=3nS)MuHeI)8miOjc{OBD*n*TlrC&|ja!q8+_jEFSUs zl>uIGV{@~*v9a-|3tJymuq-|PE`kX4t7?WZI4^}U^nbwPY@^ro^aeAF2dHIxb8o0( z{0C3;@RpLA#M9E!qG9;U;sebQ`h6s~nZ?CnlNiy$sN&hskPwojv91mRN#YighleLe z199O&nV6&E#M>BHhNtf<4b{mIy|dPhQxB4L8!$W#4+|cBw!x7_^14N1URK6zRdwN2 zMzsf^SO(lkiZ(Q3zj1@0T`PR{JunhC(fQeZTw@r`&)MT0pHYqpd6_qXAwA@Z-)3IP zg*hu#g|QH_Bfc!1h(wsYMC?|_SZU-{jl-mfdS|JfHZ#3t9=|5D^jg}C#@iBNtzhqz z;%{6HO0i*Ifv3m|21%fsnfUp#?-#q~{W?oVWTn|7ZhNEDj0Gt!ISc0_N z?X|2D)U!&&O_V;h;3U?+q;}(rE>>u;Awrxa$v2&igup9-AGqpy2mDuHwc)ePUad=w zKh2#uWbQiYxD9BiKX7w5;(oY5{o`|ph{aEW81Iv!BKT3S?d zc8h_D@gDLjs#N}p%BWx9gF`nnElK|ROmB%a@S)E&gF=apXA@G2f5rme2eS8zYplWF5r0_q;;mZE!M4s#=__>+ArV%0y2+Mm9okNX_I;^nU?Ne?Ojx zgqTeN&!9ZieLl?e*a+>tZ|C>F0_0++G;eKusvQtO7zD0!>7^5RuP4+$aSvPVS~`_) zojGWSd>eTAl%CAk=JW$o2Y)rGRF_)aB=7$H%MQ&J*-5Y~BxcgXvoDa3gyX(}O2nTP z8JQy433@aAENYJ5q+f7?$Kahxu6Wk+*sY45Q8r0g#P*HaGlSW0Ht*u@Dk-Dv82J<2 z3qr<|@Rg?OfRFXpt9+KgQlOAz#agW1x3lXkdH0R?9G9|1_QDP!(N?!)#+ySkw?l{N zMtc2f2>toiF_JPtQ_d?qxBs1|KmVZ7rb>e|WPg-o#XxA7; z%EiUcodOrRRXi)4@_LDLR9*<}pI&I9H}gRx$mFcZpcz2=fWg?FbN{qixDyvne$|>= zw^T9=UT?$SxlP#3I%B65;8*%~blYQ4q2u*e5w^^vR;J*0oB!1$)8DPU`S%f62B9Pj zwHPOueFpK>Le0+Z`Tozhy_9!v&Ld2C7-!o7swd#d(rXurE`5h z;)S9}P9ZxXAvMG}$?6SgqW@UWpB|rgKX`f=z^9I^@j!Xw%DIR>-Q;4I7ND#F3j>{`I&5tqxR4g zBH6UtVbUUCwo_(E^b03fmgW_w{a*#WVFU>t?lmB=V0cBkqSyNf zv-cO>_xFEk0sQ_3um`wVAG|NsA6P$S5mP(~M>ktKvLociLiji8P^z;DH$|$Y3$BU; z<89A*@jTi8cVx`%Qs5o7q>Ks3d!!G%oz8TFqT{b=Bl3wR5%%@NO`xlwtTyb`WF}Hz zdt*BL+7%7Hx;^>ysH!fcUZR_hnt0()fA;&~KcJp2y#+NbFfrq;27gV=!Gk^X^_{Ep zPjn0Ulw7xxWoJe87e~$0=2rVPoG;y-ecyIr_f~`0RsN3Xb=SeXqmobgE~%cPf!I536sOROlOVY<%?jyT@1|`%ERu}hd?;3aW*bau}$|CiSbEaBTSHvJ(s%khI zyC-4}a@?Isl#Cck8jczgDALOC^3Y|H48hxS2v7YpoT4X0D{#?-!_(X{M29WvR2IT% z>RVd6K}ekrsEL*UFPH`Ol2-9O4~1y{nMk3BdI%%^D!1av)>!NKr4<+c`}LF%=~7ls zPIPiBMZ(Z94&tSI0>+Zxix=&HtCS5OJ#BJwa@$AMN;)zJZ$@8 z;k}pHJJM^YksSIw$rtLZHzu4fUKKNtG*{|K9}=~`gHfap?^YRQmurTO=+j8>%`Y6U zwMhP0QJ(~AV1_alZE#;+6WKW$+kw4{*!;xgu(!L>WV#DKkZ%CdRK9OVME)Suq2!1_6qrs=DUp2{flYT>N9 zU(iZFr~r;crgZ8ik>oZoJxC<2Vlz2Wep=N8(1WSvm}o+1GjC^MPac;AhqMj}@z$@PY z!2%iI6HGlCS_a90>D29BEh7>H+94GQ(NuL5v|R1;{e_MILxa>yqOUzPu9}KI&?1KV z_{yI0*J)WcA?EDOG$@nQMb*)7#i*q{E_kHjGKh9hQy%RpYBdNQKS_6*C#dEm&4hZy zNzRp+a3ePFaeS$U`Z4eb3o+nBdkQBSf0;%JYY?%Qq}V-x#r%k4a)^Dhvba1!SyKe) z5Qe>dtFN&Nig;?;+L6sz0CnJ|#P`Z(wQ+Q2-0z8&jc>7&F>thux!NM=1wcMO&S-Vv2_28V#f3L|O0W&4( zqvLdzJA_*cE!-+)obvf9!5myUUBQV*Z2R?$*gQ;5P96CiK-ny{N9|<2=!E6BH44`X1x_e3y9fo5B(@lkih1YdUAknstEgy%FPr4fm zKxOP+z_(l^;X8g4Vdgi1$1nASV$Wi4Yydi()M{^qI2&7S+zoUkroi--vvc+o9n9nF zuz5(m+2?#`IR%AouutJAT=>e_Ov1caPZu^5_Nw>y>@t%@TE;n_=do4NsgEHc)W?`^=!3F+fpqyW09x18KZ84go`@YRKz0LF z`*1N5K^B%z6`8ehEhp=M`t`<^8w4`X&11=1xJvD(6nBmQ^;8v*LnY--iedbDa;!76 zvbsR++lHwe^zB%my0SyqK%_KwvAMX4 z<2o!}O>Za{@SH~BcH&|jDQ{}V(R_I>PYk@YiA{%?b&^-Q_(+ch*AAHd zxBZIxylC(@z=fjgxMs3@d|`#TF#`)Fy~Kp=x!mq|PXxy9e|{m-hN*H#`pdYuly-D< zScO57te$fA@Xp23(r7hW!3_`C!1#iYT6JY*rKXr?)$s|m^aqpOca>RL{$AEh1lqE> zU>51WG&7duc|R#H_C$WE$sBW)`tt*gL+h1CPciWxyvl3}9Yn z(UHE#h*`j%FNi-dhFKD;LN!H+eMVs_NEq}e|3T9D0}gQsfUaafB}8S? zjeSNG$Rh&6N8{Oax5ct4!O7L)MmO>4Nv5dx?^!_=z~E{p=T3Q)NN@63A#B&vfdP#?%&jy0u^^Yfh#D z6&01Azkg9sl=TKEi1IA$D%rPf7*1)o4SVrTM6U{q_TYqvw@KFY<`|HZjLmKGFv7** zXvYzBHH8bpEINK}EoRAX!Jq^GcFk^5?$NN<+TwWG?!jiE_}<0(-q{6LbhKJR8d+*$ z4I@YKBx2aLRNFxGb6OWYj)7@H+3KyDL5PV!g1vtti{6HF-FgIhGyR#}y(=*A>^(%m zIU~~O)gA5?_(I$96}WBatav>5rc6)C^`c^;-JYH?Zg=r9OgPSFA=4FMw!K}UZ{6!V zx5Ex%(HJ%N@bd&)rQL88a>G1%qp_OMY?HnjL7Jy^!#m!@#3U>(Zg`qD@=jJiP*ci) zN+@4MilBaV&}zXZ`pz;WK%vYFcjOcuU6V&>TNd0pBnB$E<324A(0HbmQD3GWz)PMl zk90eJ=34ud6AEx(1yZce0-Y&0+^ohDP%7P(jycU8p_H>ZS(De zQG6sxwI5aF_(WfBZM51` zrgiL+!br4b>9A)p`Z3oSJ_j~-7arsUQXhGOv`_C_^ zoRlJ|ngWI@r=qd5B2WNgxYz5y77IkkvYQ}{q~YFFrFfBnA>f3E_BmlDvNyU(?&i6} zNo@Ux9b9li^egDweq4=6>+t+_PTbZeQwWQ^qV-l_;LES{9V{y5#}~75Eo7cOwJuq3r&A*P1=9uTqAo-1`m&w%E^UXjV6uY=gC-qF*)gV@79iB}_T7*wkj zW?9Cc;4;hzhF?#75t2x+F;`|4C^A2oAaC8ZBva?u6G_b2%_f{8b$a-FjL)y=y@`Bi z2ys?_d|xytaC!PSTQ?-VN%MGR-;j$C^DV3bK3zI!HPVI1G5S1O8VoJEpHSP~xlj+b zq_p%LkRQzzne@B@+Ns_Brp@DAr4AoIv%FXm-(oQlzdLWfJ|`2(-hEATw*~Md)OHpC zC(RtwBJm&?)5iGkFqjlXv*n>{#%EAbmaLMAgo7U&Bz# z{DFm@FfBtJff^jRs-p+(X18rqmdjnDPwM#!iGJAc`NsIah5 zza2rt(skK-Nc4ioe12UQxDry=wza9L6C!ogfjjTgZ$3HH zPd*C5`2JpgnQtHs5Zn3|THK0TgoFtRn7ti@8|ai308OX{phKC1m$$dbvh#lH9yWe2 z3-J0}UiG@!Ep8R_)F1!7cNj?@VdZeE<`}Dq9(~DNgN!SDaS??DiBbxK_l{@BI%L); zirog$pq2Vwpx>+GTH|!HX%BV4T1$`ta)(!M!)MgF<$I|we+HT(8xT~1k-VvKllsHW z?$~O9FCIJ2TdNc3d=p>K8jyVynYGYIfm^$qSD@5`m9NDt5Z;$}6EvLVV-9~poIihl zJ{Sc^8$q#oLr8dhhEnZdrWP;M`=Ei^Y#H#@d(3At=y7b|9Aaoj{7!G4}y!M z?!J8a^4Oy&)?As=Jx~ts2I{q@5dyv6Fa5dT%W%D4q;C)# zbrRr%QSF_b>#TYBdp>bcn$s4}*~<+KyFd5aY827I#gq4_^N-oGH&~x#V`Fo=HRPYz3ONOt)YMcV2de-R#8wl` z0r37TTi*(=i?!VSR$5w0Z%Xe5>?1?DVBPPiyodUl%X@7&qF9F$IdREyf+SXW>Xh*H zMS7&YFv}Y5^FY{x#&r7NZk4H{P0Ei*I&bt!i~%f;|00yloLGTBVWK(yCrjf1$2X%= zzw#_G;30g-6D=ZjTc5v#wP>WJp-ECx6t4B+pYX5`JbmdpxG6IwZg?IW<6)wB=lAhv z&J#r{tD*YR*cdiA9cT0dwpQacSCNx1hW%b#}SftuRDR zC#`~3p9=C~(2Jfay5XFzcPs)~O3{jpcUCtpo*(`_z90K`vkc^H@y^PxwSq_=ymr3a zvJd_TkZ;LiQ}3E z#M3nPLLy09Dn}G+K?cvXrqo+|0jH_Ye@>43;=dr_X0}Aj=7uLH!4suv5EO_&I6R_V zfpfDt@k@K7Quw8V?Dqq2BatL>LX3H#D9(~I%Dr1m(@)uoLs8GJ$ZT)c#HV*k08M0M zq1Pi#SZxSiEQR~vuf6qi%JI?wZ$oUK@3I~vb0k88%WeJ)CHum1_qL}Swy8zej?Kp& z+f-DBl?c=Bysm{gGN!inbu*r`ObH$!dTt!mfO#=1=>j?@{`@ugmp2SzzBq0?)t|Ua zk)9C~oqQ7GUi3s3SgMOZA;8Z#|v~pYc29oY5@1=A`s8 zG*uNHrNT zr~Gyf020?HMuv68RyZLw;lf$5I~3|O4=?rTF7?W9oS7)9ITj%;)-k4j&(x=-sBO30 zvHf-P$$;t3^fKfmxWw!4F`>b0kS%FtDimY@b0xmRv#)$0aq-9-t#SdA1}9G9w@E`i zWSGe12W8m;h!b?0X^4%xVHF%*mv}Ts6@3pm$Z56}ksd=*qby~vysMXt*?*>?(Wryb zNQm-0%~bfmqfv*LiI&&`0e9Tlg=@-20gK19)E}!QpR$wGCdbSVZOJOVR58xdBhROz zALNtt%yLA8jweOC$+hk?hTqpZq2-`Fe&+hbWf2HKdfQ{W0mzW5mEchhj@%-t-RJ3px(BWeQl-SjQfFBv(A*_F zpPqVVwr>?c;Ohf?5JQ@nbd?Md_Viy98-K7d>)T=>lV{RF%wp$arLk+4fcK}G>l~WT z9<2_}h8rtv*|2$v#a(8rl}v~A-apnNuc0shv~44S`EOeQ2)z&-IV|>JH-=@zqP5{C zo%g40ddD(S5>i!|bt%5rR{VXzf@t@6yP$QsdFtEI)J7(T{dk*pa{MLH^Im>lW z_TEq2d0p2ncTmkZeO}r_JMHOG>W86_I)b`lkjBS+iE+7<1?`*#pTQ?_j{jp1E+Kto z&A!7een-iVwDhU`+I1W)bO%i@g&DtjYdn3rKOQ@Bs^yudRN`pMhxEW>b-tM=W=xok zv@?C)@Un+CU+Ro*SNZHXt*Z5e<$oSQy;26A8NbZ9h;ic4paTLd6%hl&h%n<>J9(@6hb&nqf1xIUEQ0MG=!#@YT1O9Y^2`>YINV?*0PB zDhhmz;6U0?1UNMk4xSc0QQ*k2Ts{CiNuT9z2m<96Rw;g!K*5g4lh* zaA?GP1x3e4EA5B3KPb|$t0~Myjd-u|3BUEl#V77|LXlaV-yX`-`tv@?9 z;+f23Ual*!YQV8SiJ>7nena|-gQ5SOD4F=Dw-Q#AEeDsS1$VzXImKm&QbZlrB!UcT zO)!^BmMtZB-FXsoms{#}H~K@hv)|Xp7pF*Lqcl-<$8MkhRo-(jLg`nTKR1mB z#PMQJcHFJ36ICX*`ZOVRyJBHz1)5;Ha-0v@G#70?rgc`>V`q=i>WpepbF-~5*|WCT z`g~K;Qgfg{U*k%r#PjX;!q)Pvyhb1hj#OHf!f+UEWb6HQ9j6%voOp)wMDX|T-64TF zxo7;K0-d7>?XTot!Rm0>@?<}$|F7w!FYV%r7 zYnM#9D}Iz+&`C+OSR`~`QkK)*WErB~bv*w3Mh~P0Y|eh!v0KxN;$DQEz3{FV=~glQ zu~xBW`c>JcKk#&DosH7wkz~6Gy&?5C35L)((ifdIbM&7ZE%@bzd7v$asTg>+lySy+ zyDswI!oU#`1=D@PEI2gjX93k$JCBD002Qv zvCXv-w*UJSGE_ZdDl_Sj4(~ThqkmS452r`6ro!deQ#g_;y6dlgX1r%`+A=&*2953_J~SHU0t$$V#+5 zTlKfk0*(>Bsd*YYhzn!BeYO38*pm)XzHgy8oY%1_(ki9%fM4@w)-q-=Ss16Oe?)vnC1oY$J!KjjlPetaO zLpumxpfW8|kuMTspC;07?-NX>?C0O|`hZ@7SD){TS53208V<936%I9nwgg>_?f+(4 z=wDE*U>mtM)`Xlr{Y@pzj(hahjm`X!Bszla2-vq?c)xK!b8wh^bp828?YT}?azkCi z>@PECN-~@A_s_m&Z5P$jdBq;fkSV~(q(7*g2$FSbVyQoj-LuhcCupz9prb(_9@%RB3v0R` z2>7s?ciye(wo03v;SU@Xy;u4seAl)kzfTwC=j(aAd={(n(?nY8=*cST!GFeWS^s5d zAY^5pylH1J;3RY^D+nr!82-_ByeU);DjlB! z-7u4}Lhrv^ir95M5qIN_gxuF9L(B@_!FCux8hB1Y6uP7^WO@?ogpptJAn2B< znJbe5?aCJ0!#VpiN2vv9j$oBgHYYt^WEFa8{JecWQzfs);JByU9Y?D&1v?&!%h#)J z?~~KTdqCH;I|-(RS^&ca>UuhW!);Hx!Lr^A@-Qd4xu5()tF$|>T!q70FZ!D{?l>AH z=CBqXva>)GVZg`Z*vD}L zC|cTm?YwUEqg{*PQwj-cswc|A^ETymGEwc9bGv@Hfmg+;axuw0}>fT zx3f@OO{FNxlgzG5f!G2wx$O8No2F|f8!_>`TwZdcT)jKv4}{Jn3|GHX>*LZhOU z>0e0Oc_mZmXOsf7e*yT``V-b=7{f$h6eC(y=gyr=j|SxO9a)-)*YAgKCO-q=okByQ zQ1_|1p}Iv7yViw0ZbMMmNCDSQY%&=Bb;NF@pHDclii=_d8$P6Haq{a{?*(!17JG2z z-s%+>1PoqON~MnaO*l07vK-XY)Be=}0rB_mfy^FDs}ekb@;e+7*TDDo-*}bvv}r&E zD0L`Te6pY%gsvOP~U<3PVjFXgXPC_v>E3ss^XR1Hgr+`0Ui-oLzih(rj1}HkfM6b z!ks*oBH%;%L6os$&5dzUoY) z^yl`*slu!4Uo8U*msbKs&K$p%^4Fx|+;Uez5W0#7hbS_B9f0EKH4xrz&D6_xfY%V^ zTQ%t1ry{fIP_Z_i(Ov0YHudfoeVC(n{aO|G;XhEVEj!4I0D{%AtsNa;n0xi}4FBW7 zA+L)&bf7C7T#RQZrn+O#c)=9LFJ?aAL*GCa`*_8*q~nI1FDov&t?%pf%9by^Wo>e@ zTGo|e9-yZ62a(Z0$dr=$7#R~#qO=@tAD5{B)ks&kxRZ|Fr$O`m@#DwsCU1`Kx|tMV zaNz!NCxd6eAVF!JK4ZBi$MHue_REjiHnF!K4#zFm z^rwEPd?fM?v$s$B=0Bw;@`thePV{p%DUt_n*whIM2;2Z2c5I!2-RZ5JfMeXP1;rAh z)e@I~koYc-K1qD%b>1JJ2?o%2%z$1}mbjclZ_Q%~&#@j_jr!kMy{kd}GQYS>))|^h z9+i!k=C7yO?+w7epXZA`x$_I)Pv{v4h^Ra{TR#*b0Z~zZ@9wlGhC~xIdi;M1S6CYk5UK=af!^}RGsrStJ|NM3^`~LxP>9y!| z;f|8`IPQYabLmo68kXstZqUt;a;au5aSCbJ82+WNB>2j=HR3k*wQ#<_thr;0i1|LQ zRf8K4VHZSJA+`a;&kA}eGmORxT9pI0X#;E`Sptxcj!HCrg8nXz-Q+?5qH*Ia$+R#m5#dg)hxS7IA0-5y1<-7 zY(YqwX`w(LNG6}~%5a%Euyb3^L)>sBA;$9VI<;8$NKr5I_K#ruULE=(u9->7>`Ka7 zr`4Q#+p(rJ8Y|iu86WUvx^to4e=N4Mq1-6AFYEVotk7Ct(v|kJXNN~`%yR7hCCI(p z&QvZP0|(AEc0GKjYR1@wa+~vAXfGDmFBDX{8!RNwe$(#B<1tk$=L(magGLu7uujKT zOw77Rl*c4o(4|xO@vGIj!&p=2i-in-kj^ew6mt2HyVBp`v;dzh?=^kH> z+6fgdE133&AAzb%SrOs1>V3yvP(pEd{jUUWNv&pQKF$PlBdGc z=Q(5%fIqs(7x$JR_)l0E-+U@&9rWxL0q4{6lmiHzefK}J(=y~7wsoH9P&zLAvIz)f znTS#~z!KxNGj-z-CN(Jg;wMT^t?#@DBeeulf|^ig{hfjmIj$~~b)x+;;yV5{cW^p6 zJh6plS^Zh=a=t@OE|ZDbbrzzX%{^ zRch=0ay^86*YoqnTxZW{w3J(| zqJT{iG{he`BPMa{;-Xa%TGZX*7G9Y{rWCoH&h&_~)PIXYtxWF!8I;=elb0*IlQ#lr z#WNQ@5{`e!ta>4HqLB3e*|6$S3dWV3Dj4{2B0oCkI}!$fEc`NFZrl?@b3#G< zHgRL)VObME;B-B2zS@00P2qf!cihwz<%P&~FLF+{E({sD=K)?J=doF5ov|>6P77z_ zw^G&lN3@GNYbT%RJ-_LeA1#$9OIFsWAn)7qo#)Qzx46EIw8L$b%rAkAa2 ze%;bC4S;nSFlPnL`EUjY0|660K4r)#FE=#%G>ya$pwy8L9I~ae_AMtv4dX$P|LrS* ze7dbO3TC?s06F{0r4wr2^Hs4{z5kw5u%*`Ur!V7M%fI;9vaaC#x)(J3wJZf!Fe>xb zL!Rs%O(y=W(bV1Hd%AC{?2S6Y8TULv*s=4|dyf`WIv8A_Vjh2>l(&rN6uoG8bN0&c z{mlB893Bw)`D?xWwX-+W6h06spdFZk|JqM3OZN1-T&v>tGU19??&-}NE5(FnX&Eq# zp*>z7J09sv#2s zEI}G<^-bsVmoM88NrU=mDTA|T&wf6ova<}p1u%l%SOohYAg$nPW(y58Qd z)Aq{PRiAHChLc2~XoTTYXecS|5j(QW_{Q>~hJuB%x&tyE4@~L2ugNMM4aD8@YsBsk{#Peh8mzdBE;V*L(IQ4;WV6XJ;5DCT)OSc$CpcY zH6(Prz&WOAgvm3mH&yc_)J|f~oiW0fk5VK#o3eIIGrK(A{hNTQG7TR{?7z}>ItZ@H zQ@iO_r=2r!h*|foWsJvqw>rjmjq3AQCpdk)fbGw;?JMPzkdP2#RS?+u(97zOjGrir zlHL1{*Kx0L1+87F-i!gR1hYI=V_w;oT(PRqT_GRZKs3k#Nq}kRe)&+V&$+@556$vy zFOtNfx zaw3<2u8dwYEi4-TozXZ|Sh|pb?^Ga`eu!LKmhZIs?8PLKXr3;+Gt4=9oxS};2){9>?}v1ZtcomPf z!!XsF6N2V-udDmFk0}zt>J|>gPI=sqJCxa|)>vQX@b!bv!6~P9UhOgJ&V|67)?wSv z8P59UHTxP>4bKP8v>^Z*av@XM)o@4mdMChIk3%@7si2_nC`)4Y6BFU}d*u`jp-@oO zUr>KEBo0Px>&ww@2)`pmdRaF1|Lr9lJvBp&&sy_5eY#`K=xOjO;h2*CMtCHL^S;-1 z=864ci&QoQ*T@6E5*(KOpYWZ%5dQ~-haRMRxK1eM7ZfaH1K!KVHTtL6n@d%=JtFsi zUR^JT@m^HY6uWvQ)C#zo8oWHPo>#?V)o?t626tE=5aMgLUJ+ilz_;q@3+K@v#i1BC zTimOGm0<2uVcbtYYy2|4`$Nsu{hLyEbjN3fHQ90h&X+A!FQ3R!bi5;jUKN)qg?6@~ zWoLWlx?Au4&m!slKxBAZhy9+Hq&A}V_m1HPE`f!@#`<1Rs~BaS!d0E6eB(Lw=IX)S zX}Bb=F~p`bVLD6Q*5k3PO=OC_Hs0h#@`-b@*q0@GB~j#lTpGEBxSp}od z2^U6&hpnJWSNrA5%y(0mczM767FqVk?joo*&pNlaP z#qBcTAVH{+0^1-hY6sd|;lk#xjG`%W8?AT6Sr&H@mq0Z-uJBmiZB%ngc=d_f;Ojt-X7}3{(3|Ys)On?zlGs&c zeWp;B3@1x-74VzL9F;~FsCq2Iz_VIHk%#X2T*O~@8aYQ99lLNr``2fGZ0z}`JGPtA z0?gGw(fwf|>Vn5)8tCH3=azRipZYrPbmwHdK>h`b`Dj$I-uHof0<#ly*Ex!VDV)R> zno~K`PDm)<$WvBxQBS8@yx#Fh$4}EIa9WS*&QlFbig4Z;gu_7GSnV!z&Vl>MQ32wI zNUCIKXE!O}dXXc`utZ%zJG1HKVd2SN{RUE? zbCS_)cXQip;LwNOn4k0;znO*_v3o4$6t}5lo+oAQ3(d>-SVdpI(4co;N*?Tr_1UtE-tJWtluo#w9f34=^>>wv7VygoD)}!c%KH09b4R23)?#azbJBJcHc?N1|Hh{`R^hc$% z9$x7r^p@mDogu$J8I#z)I~3F>x+FB=L1@XN**ye(sTN)z63qC9w;3NboJQEd$bjpATJ zvBLN7-WwyGS+Ha62GQ~yE<@}p5*KO>={ z9Sxi%0u1A(%9d{eN`Xva%B)>Den#Y01k8MDcU4)8T7q$e#={0bceSMmrw5(f7HV18 z7OTez-Q~sChlYZEshuB+F6I|bVc&hUR9ZYGz-OKOh+d;J=s}eGFQq()%d;t-v%bEv-=YaHk8o(@xo_ARTS&@!ZzM1L%5s3DcRsb3|tI-SN4( z(;<8ANASgDW#;zW^`m*^V4*6T$L-G+dr9g|Uy_#OlNZN9s)D?;wC|!~49)p}HjwJ4@qp?5H0b5!Cay;g*H}(}W z&=Ri2(&Ip1=rb$GaY8AM)ONqXvg})E!0Gat56MxzU-F^zOC!6DTi*j=YXF_l1wx!V~NN#51rr zwcE#NsLvj)4rUpzV9Lo&_NLDdsOlKUb6_r8Omv3wV#5BRd+OLcD71e=ax^7|Wxj0Y zt%u1{Yx>hWh2{5g#k0f9H%y3G!uP}Q))15jnAL}CX+=T(2e>6N`2!JupX1|88`m{D zt>{)C`ba6#BH07L_?a2H5mU#BHhQ+xBath`ca03zt@;OszPUe3&^IU>%2Cc9;dG~ruVpfU?^%3@RSi`{zS%c5`6J8Z_a#Dz_oYtky zKIeffa8U^gZJQls#2j%67+b3pcJ7+{+QQoukAC1@ascxSvGoXj3Rv2%-(FV%fk0-M zv*6p)FA)yeW!l92&h&hIjoi?Ei7^cC`&pDMIc0<+;yZ{VGx>R& z>#>!rN5s^V<@$SK3(Mx2-R}8khcA~OP?#tD{5-82M{E90`r;3{j#Lv2tHs2+75#)| z%a`oZxwe;Ht40}>MSJHxh*@-#{fmnOr3rgRmaHB9Ii$|J%>7R1pX@2l;U`CQWYg?N zstkBwrP3u079QusOdqP?W5Jvy_ejB1cE5VRYcF)%l0}Fb!_MU&~GM#jp?OJnaYx4!-NpudJd{EF1h_VWCxJ{h<-F@6Vv`DZQ$vJ^@Sw4e=gXky}7&oU# zb6L{bTJ;Z!({1#UAT~!HWw8B=vrd`*99Zu^LA1GRCgkrmKz9c9PM-xD2xFi;ovFXP z3@wLFVBqRxeR^xMMCj2ORs$K$wbGxy0+TX~Z<;^AU!^ThK9q@dgCM%SsTh@w@V3^@ z2rCuJU~4)Qd(4ur*h@qa4YkI#m8ulo?j{GHF}Qlw=No5n7fP;5QQSN^MzobKkMfn* znCNs(qhiig(~F^q_Xr3KbPsPhe@37ANZ~he%|srvhZ#!iFWPUC=#9juNe4BI)idtL z&~L^SIkLxIpKuP&P@c{*QD!yF_)Bu*M%Bi*^LUfbpo*$fovKs;mQoyA?Ctk~Y+Li` zlV;Q}?CEbKjgpiFX%VZ%gCJJg0po^@Gtv>&azuRr8RgD;#uT0P%ckVfO7UXBbD+x< ziR375^n{mYdD?*bfvByYB>0CXRy~HGifI!WVaM`wAUTz?MjR21RcXh32YTpc*yr)W zzi^$y{)~7~za)%>DS5Xju3z-nSkbn0neMM3OlWIrS~NyWozr;MUJP^W@+z-rtt+`F z0BN>={TJP|0~hym3l3}CQPaxU!9LUv`{68s#sQi)i$kNuRmAffo=a1E&eR?wkygx| zTdz}BEN46LDHNK@pbyerQ~rcnLg7Dpr+Ch`&9}`@(tfzVOlE7yNw;-_uXpS4cPSIsD%R140+r;$W|1^p9sSapAXTTXHjUj0V6lXjo4eCb3$ z$9QYfO*AY0Wfd;0!U>O#$HqOsb>ff9^jfW-r3B&FBKuVAlCybF$`O#~XdQWrIm}Ta zX!uSQW)IjILrwXQ`iNGBHsQ;iOESqMHp5$M`1gzZw5Jw4ADuKfx7tDyJUn75{g{Y7 zcd1pk|2F`)3--NtVL1Xa|NyLO%qgA@?&d8C!j_mB=Jd}Is)$?462Vw zB`B}C_LKB%s9tJ|S<2dOSEuHfb<4T0F;t3};B9VbWMv6Bw)c7p2rZjdNg2=I4C7

USL`&!I+4d7=|VK%>h%oz%4;qF4Z~Ig6EC?NS7SbXty=Q+Yh^ICpxWJ=h`s+JV7sNHx`v`8kUXxFiWk^k9N<#@fKrp9TmaD$5THNzwAW)? zLReVCCBfd`dT$xk?I;OP#l0(FO~yM-JhcFnl8q<2dd@*pZyd(G$4v5MKxpMDfuZRU zIW=iE?+KuW0tkW4-K&6gxHf%zo4$#T9Yy6R8l}J02%SJ{7llU*PT!^L5AGS+_eHFS zJ%ORjC`D;eKh1LSs^4gzqEb2!W#SK{8_1hl^|Sg#6a#tB0+49K$2+pzJ{S=6gJIlX z$M3I!i*={*UzGRu0d141UnhuS0jflwE4Hc!=uw&`(!PodaaXB*0?=(#UWA`@fWeq8 zt{xyRiIRwKohBEWkcoSwmf`^qpvJB#EN%QC9|U;Q1VU&BS)kN3jTDI(qHSk(6kx7K zCwm-YC)*mGe!pdR+=U)dy@ty^ z$>4$T)OP*ovX&PSn_BeO&}FUyiuem;)+zQdR<1$5xF*40I()hU1XcswA?5!}g9_!- z00mzWb!%(u%H{hzb->trsIa~EB9{F*-NmHXZjux4irXFfvHQsW=xr;rxeyrG=AkO~h7AnUc)&I| z7O0qDm>R-)jxtW6)Y!;`(w=1KzKx%Jv4c*DU7^&r?oUXg6SaDu9##9bzWoWmpCgyF zyu6<0%ke%=6K!maW8jizdYZjKM+<3UK)IbCKo7IURN}`Nqfky?IVIORmGd_MFE6BvQ;&d zFj{R)ospMjmU-osA&OF?fGdRbJgdIm0=-lOg%lJO6@?9Psvi)@es_6nY|Qt?3ymD( ziaDjmYg>kp3^#fxmc-UaP$BFWI}8PkL)%`X>~?9UgW2Inaz>syY1!Q}Obdy4dfW?rhqmjaw^?I! z7O<=P049O}$V9BW&H$-e*U5ME)2FL804jjhY5^6SI3S^a9hn#Z+yCO+GyMXK{b6U? zcDk;yUtmLDC|;)mdr3w3Bzm354$*DR%O^oHEyTB`WyiT!XTwT3fPKb%ZDMII= z;!7He5i7YQS60vWq_0fB)cfY1vpVZAh@`$gQW>258{n%gC>Y}EknB-8Tf-KNA+ia`%gwLGQ%Ujzjyjos>e{p73bva zLu@o;wO<)FFjXit2Hd*c>+A1WXJh8!bk{A2aY8Mt_N!HAtoKyqMS643sYuyCF5<=B26e}UL9S~Dr%^}+y7`1V;dWF7E%}6Fh ze{F8(1*uD`2Ko(B#cve98O-UV@N}Om=^O5wTrD?i%TYONR)F(ls7DE5hf7zha7C_q}|oczSLE%kNydCQ;WFk9*(1Yto} zUq7JQKD_9^!FuicD4XyFkw_ySWW+G~?ug>uE2xUd*S4%>U<(S15(rC+uJ>u=eocc~ zw2=bu@8>XA}G0l^|b#=BNqVhR7uoVNyOj2{Yg> z#P-)xxTmd_@++N`WGx4$34O{hQ73l({l9;^vWU*HPhfah=eiamw$g%Zz&^|Q3 zA5^%G5;zwY^8~x|Pq$Kd+T?aVTns;xTSwukMAr2R6>@kJqs%MbpKzn>LX#uQ1^+WN z>98h0cymF7%ADUqlHCCuzb$^#DTNikxfEg5nO%Rd=|@*;&~`h8IsjgQ>wSPAO6^pY zw}o2oiYEJ3F_T&gH))t7TTzLQA-z*8Te{QzCWmRtvF9k>Ot_91o)+UiC&5zg`@&DH zSX)G7;h{G^t~)u14rj6d0idd8A^$ZfEbQyr6Z77+Xv?jSY zZB=H-DdIK2<~tNg7RqvUp(wl_2`Un|mVylR_`sJh4b5LXJ#+MKT(I&q3$d%`H7SGP z%->ytSwLHl-Q3*s3>kAS zcjMo3gj(sycWmlJC(C6^OX00c5WztTqpDZKM!BZA`AB3~g;UTp=og8YR(T~vOTjQ& zchDJ3*UL|~CxBXpLkF!i|52WuT|1`D6-z3!XW1NhW@E|!1U*IrwnEA+dIzmFQwBks z4k^4`H$T)m#L2c*B;Qz_l=C^=sg}z8y-AMIbmyrJOy{O!nR~hspPFd2XS&c>8{-w^ zYHCtWj+&HZ=ky7cjvlL6>c*sNrm0unm4M+Nh#Pdd$T0+MyWV&ASCdC}+#LEhHQe0D zqC{?LpFFs^stc)M%g9VF zdn6;dToE3$L*rm7SzipGn1i=a1v+?j#A+{L-%XeeOC~+v>PUS-)x7g_L0xG)zI$u;CY>6ki{~ zGKE*N=`OfGWt4BGWT}la-{~p^dBOEQfF9lt{d|^ZAT7RQGT}7RT6aaKmzhMQm=qIq zO4!-XTQp=Se3Q7RNmD5^bc9`zADis1+#)DtF#hwE<12-aG{~kDP{4?rNV(6|)yxkT zu*Q0=EiI9KiHV8j8s$6By&4P8rMA{g_d!3SV4H?7nxztyK;N(5CQs&=YaG#>8pNo8@ zm`EDpRBuXYkIvY*_%G%ddyBQU@&Gp@q0Q-+IQ{nc2>s5S)YqXg$*=q}hK+_1V@%D5 z^YNiD@>m^G4y*C!%t0z?#yO$`=MW`&q(vLZefF#xOaN{Wm15b!(0ot2~CG^wb&8c6zCWnuj*sg(iL%PPYaRRL1>{RYpIzH?rLbo`A=o+|yFU$ux+#Pv6Z^*Y&(H1C^Mh;VSB~W3 zjKO?iGlge_jedOPK;=pQ)1tAX;xKo)B9saOQ7s3Kt_0UgRTwUm7{;HCNTa zrq@lrZRA_Fp86)vk8kh7&y*X5mMW#;*#@a~c=!3#L2MC^_Ovtp62_`fGphFPVppO0 zXu*@GL2M6a(yRwd#93vfSd+7kd>qT-@)%*ODTf+^|Tjnha~f%@kptjZ(jzg z1f_)Ju`wcwZv5?Pzx0O|S_IA0jN22dt{y>})JKH|=U3aHu+*Mqpo0vd%zpQiHrbJW z_Cmsr8M=?8!^%o?m&tHH4?vi081Q@NTntiQ#CAx!I(H}#&bG=#ynDv964fz$z$Gug z-J`x(Iee4mtLt=TL;>E4T_odmCJS~dyE~YMI420);~zX{VEp1Hh+;KhKuf6<=GJ`7 zIS{l{${9=qw-9}hP4p-jVI;aHzr(Q|;a`1GYFN%pW6JRYwQ`rzH`cU zLKY zxg(k%&GxkwUAk-J`6Eq1h>7i(NbKKmpV2=kA({Gtw;ZT+C%W$n>5l1u0s37eC~}2M z9h{$>!VPtXtv8B2NEy94eXK&%Ictf~7}U67FP`AxJ{L|l6NjFOv*%!qsCC`9lQN}UqwI+mH8J|4 zxbrd4&Z2p6k)u9RTmwc=lrBy6WgvwS;8C@Mgk%czcp3Tmu5C9*8F|ye`NY%OK@Bq~ z2tchj6v6@T`QM4&&pXpF+3xDrVV9J6SFBa4>{}_GdsrZJ^=JOPOqpU=XJyzR_VUA* z`fWLhl~HWnLpVgZANTAJ-MuFI5@-}Y*yYx1cR z4lpsjaF7w*b{o_ba&X@68GZ$Ri}z`8Dl0V?w@vx8zj5Ct4UIMz6a|f9j>Rl5k3}iX zeEhax?OoNtl7G7)!ZbH(SiD3rQpnms&flm<-d6Pez_V4^*kefKl&YN-4(^S+?9iEA zhHEFzyqe%8$ts`}wPi!eDQHjUl1z)%q==70vU`#u4Ta~Hmqk3HfRl?2zOaE|*(k)_ zlsuMw%dT9=T1U>GVN7wRc&4`(tia7vKeN`4OKy{RR%xPWT2wa4VX!18e|^)~$_H?{%v}+$vv8!9%M(RO{72`#&fTv4!iGtfC`@pVQq6T= zelwHfBC7VIcIc<0c}&rGPtwh(|r30ODqS$6VDCn(9XM=~lyXOM~4s15lnqx%HQ!133 z(u|IR?~7(HTP14ZFgX&5>^}_*NjgvVWkS!$fcdUutDItP4UeI1CK0e^l|Mf={%CIq zIs{2A7ugX(K_#i}g}zK{JrI#CLz=&lH4vTtdqIkOWj!x_av<$c#G#C3@8u{*Auwo$ z?sgH)RkLSp7soYKoEI#OzVN(8#cTRqeJ6B$ooE zauLaGBx%7jVZq>u)p5o-NQg6zME_}^VHvE?-D`KE=7K}3wE{2QSCo2QNkk44id z`~R_ML78aWI-Uk>OVQm2tSIV(T95~;QI>3bvS(a4%8a7%8kR~mD2}C1^(D%9N@+je z+v=bG<7G$1f>C~ckg06tK8fPDQ)K~z(`wfv;Z;%@zkK=91f*1d1D!IVndco;$~Pp} zu3Y$B4-?V1Ph#~kG^tqk@2@Zp^0Fp8_t}NNs<(}rg8m=`LymQCN+jMyC4}=$h*(Tv z6uvb4#rq^`c6GjWZTxd`U(mr{Ed+PvRzDUIy6YdwVH+8hPyjRjW6pw^{@0uxR0ebQ zqx?ElA%F0IIos%dd0^YvRSV6m#`~3;_g=iqzK}lEU?MUTK?6A~?Soe;LP}%z9(&j} z>B-+eTRP(FRJs<)O>PN6GE`ZVV)YBHx=ZZM3$!A3Xj?Z0&?Hgoh*xkE(MORy74;%< z>&qcsdx&=^n_^qeYRRv#DzHgfb6@AI9yZ&n**;;1nH$?vkZCN5xXovE-ByF&{r0rn z+i?Z|{t3-XcVwK@kU(Oq^}7lVEmjwK2;K3p?bZFkH&d-LAu{gA>A)qaqa=E|J$Rr3 z@)29~T{|NV_qH*stn?o3p}J3_U)f4ip$)`Z8x5UxY`;(ELEi=aGG>*I!A>GD(_b3|K{_C+hkW zMJ5#;v1-Tv?P7wa6$*6j+oAl9MD80xzrl;%VWW%*FfKK4Pa@_H)%S(of zMdAzWo}xlp)xz1aoPkUfSNgcDs+47xiYMd*>)GF2(XFPdisA zPo#@#8NR&XN$A84V!asu)Q)1k_AN+*fT$}>s|yYbJN#faH{pU!x0oeJPdj$$Ic;56 zaDGQ&H~&um4KqsPga+vsQR>?x0U*=`R>$2Oj`e$S7m|*sMu-fIwcMug%)j+>aVqRe zVYaMr_2<%sS{w7R+I-#l;s*xay|AzW6d|Yd;*qE)?kPvD=n7^66q;|rJY@r9O81HV zsw`Vy&h;BY+b4#Bs!*HaJqq>yP{#BA+p*E*OQ!F~qg*i^v{~Ij{LW^j4f+yF*~evx zW}iZuCC&R&vw~T9#ieB%{~~1O8+6b<{;5HQZ0rfj$u9%I#Iu6Fsq*Tr+qV(Fln%H( ztFGKQU^NtYY`Tt!fP6ZjVBgCxL&HSOl8S-jNWfw|1c3jYK{4=}`$jqvCLuu4gp+ZN z`M1aRYb#P5%IuCCk=BcEH(2JA5|9(W(B!tHv^Jj^8tgFRrSW3Vth{U4x>C1ZS_prz zUpsz!JT7FB|FQf&K5n?ksuC!twrL2xqn`G>u7Ft@nXIDHOPMq(Qj0+dRSf8zpAYjP zIR6P~dFuec{6@;m#cd+)Gc@ktib`T|xOAdP$AN z^kBLqE7e2)Zapv(_yD2OXZ+v?Wi?ctQX@Y;*=H|{It|DOp!>7}c8|`1^ZAY?cy$_0 zT3)$e2nqzF2Y6qT&A3fhq^wVsHR?_C`WM>`)e^~Opv+2msIUfr*!DdP7rDxe59|u; znki-Ri;sxK_oC<%%>_E|j4a7ZH^xPso8`EBUC_OVxE`qNY0-l3&uKM0=00>uyc3kDxSXBI?80IRl2_(xF#RU z>5sDx{5CTG^{zLbyF(zSQ$Xhx&BmJH+&e?x=k^)OLwBNjii)O2`xH1BGJJlYuG4~d z7-Ya9c!Rwlz)Q)o8R3lR{YDu{`kmidfvT@agy|wV1sI4g2dTSFmaX>|d6J04K`eCg zg(_EWMR^ie<>bL4{9CdPW~bTJ)V?=|x)KwS#p&6XY%N@$U(UUP$v^krIL2tBQ(!3E z{<}CgqjiIppo#2AVNQa9>;4TXm;1=0ESSY$NJ>=t^!I!@Oh+c)!AI!aQP`?kzLw}dSBMO-YU7r~+*NWx-`B`|B^uH33Jz*&J7{>80`%E*@bnpPdN{bnJAXR{?64g z<1=l~Hk9?WGEpferX~HXFRl6)N&cA0qB;IC=?SQZG~hks*(Dtpfc+VHhr&xGvD$HK zyFrg)!PB4cK@U03yq-h(37&+~N~f~X_!kR65ld4~QdqT$xnFY_L1Bd1H6=i$1Xw>p z0}F=R_#3Dx&4jB}{4zh)X&|i4FWmFjyvTc#7})D?GUn8|&q>{?x%()}9@@62YHI5^ zVB>q%3N%l(O7Fd8hlrsaR7Ko=gSF0uRbVD)D~ix$Zs?wXq4jN%;`Rxmhv}>L{4dsTKhUe{K6p%yy-!-((*3tHUMs_VZ{yO{ zQ}b@D%>%!3?O0)rcnhkapOg8RjwKzcqjG(2cV>#Mzvr!emLbMLZ)#1Bp3{+OSEC07 zFG+RpPhj_3fH7!)6(FP?Il==1j!D*Qfx(&={Pcsx=IM7^=;umooL}EDRdUqU-vi@3 zR1{lZRXEj}OBQuzu1pC3@~B^{bh4NH=%$43QYN=S;c4!3I9li`ktzY;vp?tvQp~SD z)&!2yd;#dg>n4ImrJ8l2r=5)<64Uxs;}?|{6Cr|028enZ)c>pJ6whsk8S$53@6Q*U za|E06^B|nwE-I`PhreC@!@m&p4~*ZX)f`6n!1?BlPAvz>gcuKRxerLYCNiPBn< zOYE9q3-04G(=y@B$^I9#ZA@!6yX&cZ2>ew6JRNZ810CvJQY>b~>nE@MvF$i6nyx~x z^~DL6#NMyl%9qcik#2tHa2wSBe1#Z;_+mlz22q%iOk$JqC`ZOwxey$DR;}~R>RSL~ zI+A!@QBe~hk@NEPC%0?}mn&sUp56JuuVdUR5lM-ge5`Zr0_hdz2~-b-mH$7szC4`D zHEJJG`##UJp0)0E-}e&qa6HfMuQG#;p2#FjJiD85yMC@D!^0MC|8-uu zdYI-!P61v<3&0^^nSXXY{9H2(j`Dyk_Rm|a=++>6h!JdbT#z<4JwTG!gak5KDw3Wj z$jEJ^`KK9#_*2A+dvx3hmP~;u#G)fU7G9T2rEh;FA8Bod_?Hdv$nY(1$W7ZnXs}zx z^Z&a6P?VXyCAwuN;@;)=ET#RL{(@6l_YkG};r^F~HH<_2xX#&(FOpGd z9;tg#W?xSr2U6xEb*GyjG7anlB)NFnE3B(@rGw2MG?Lmrd%7T35ct$rzE%|Z*QRg9 z&>zo_+mD>3YHD)x{ZRL4a7R z6;=1|wNP;~Ks#Dfu%ERxEIcerX`lO8W1g`_aa|ip+{LbAHlOX2-L*24xXtNZuQ%$H zghG;jkeH<3rGB59I+0t;*Sav)x~VtaosU#^v#dR_AhB8t2Eprfx6vk9M5X-v2=B&7 z*Y2LBdo@a!GelBV1{F3dc7OYid`10ah|UdBb=}IA%V=gn7YW+5Ig$O;Oi>oS-90e$ zWhXb3VY@+rUmnW8rov-?my+Uf6s{!p7u;WOwC)XGt4KZnGU);b`xnVj3-f|P&mMk~5@xE7L1 zR?{TlIp4@M$&-wPq2c&>4ZIY-Wcr;F#$u}h7VB;VJ|0?-rnP7435>L-sC=55WL=Ck|9n|U@<}O#;dSxO;if|!hYgv=qvqANF#|Y1 zx@?fAg6ing8*5;%AtnQW@Grlm{m6cQ9}UxcWJU!tDK1aBWt+%Yp~r*__S<#Cd3p*? zqefe&76KA-(=CuV8IAp)j>H!Vp((M1gLg36*^L>{NVo0(byumX`k$(b?~fK&t$p)z ztc8DgON@KCvrD#N?f|2gc<0<_&w;9Fs;98AdIQGli95_J&!qMo%aw;r4m_qNU>wZr z*aIanz3<_c7A5APTt@-c#fxUf?$;F+ zss6mFLasUDi&7c}=t(vFhHv?znp!P!Es7p1% z!}fSd*gG>M_B`C*mZ9627P-l`0M=>ywQJ-3)~Xe8@b8y<6-;*n^9{Hd<+nN;l!5`L zf=Lk7WW+ZejHtb3&5AxLzo8TzI31&|dOapuUhfy-G z_f!-Y7ngv1D#!q>ktENutnbGt<~AORGtd6_**ItFbM3umVkx>y#0_~n_?pg8OTX$F zq5d!;tCra};hxl?YnypgAfmRuOy73qQ9ao<1Oy~Ww~3B+L=Fpinl;b{fvxfJZ~3~z zkDotJ6w>`4>R?cG_%7rIz|-!Yqf;WgdVs{(tzBEy(qnC5?1v5-3cBC}P9Lp9c3$n_ zg9_^SbIs5%Y{F;SwX5o(rKCUeV-Hd^20p`<_CB$38G4)^%8&uQx^w~6G|wyC2Z+fO zV0X<5tnDx>(%iCu=mZEQx-Ia!RnK>-9*lka_5(yUTlkD?Ad|iXiRh{y!M_oaKSD|w z>iXJ~cvm4esJab&+v_jm_Ca08K*bh15s^%eAf>nwoIAdx%yd;6P0T|1`!u zlO>`y89Mu6yaqb%<0E@%n2z%t8`<69PZ{p@OV2Mhd)S6fEmoVSc=u_g1q=(1WvgNu z7O}$Y1uyy}UEUVxrlnfsbC3SGZP=C|kH_3ub=+bOv3>Xt>(Jb?I@gwz(M%{4n&38r zRj*}vnE{(Z9vc2gJPkL0sQ!ao*!HKX8LpFb`n~h4dUet-6@uCNo(ix_(FMNZ2A0S@ z*?PbgIg`O6$4j1Hydsm?W9vs;qF-aAeD8Lf2iDhXtmos#WPC#UMCUoC(r+3F@AWxpTjypBTRhmVkPkfBl;mef?6AT$ z(PV4E3Lkf3Atl=@PN(_n#*pJ4px=I8y|WI5D8xob^Q_lYS2y>SdFNZVav)g(3Z^Mhk&K+2-DxcyWN(`P-MBCjt|d^L zM}_ZhE|+2+f+AO75DVyrMWg6cZmVf=uSGrXilhrY(wy6iH0S8F$p9)qa>5v~c;BV2 zhP4U}3K{e5G6~2EK{$e-q%mBvn`N>?&@o#flcgcSfin#<12;D>?}0IW+|EIud{|V` zwd|Xjb#}}morifepVXLhoG0FJ9!u^$Ww8e%<=s1^J>-1X%X07$cf`>)*L20Ps+3`aR26;M1!?57z6 z);{=RegNp_e_U_s3^@;cyz!Vc2)Vt-e%tDZJE!;x$@!>!$A)*3``Vu>?MjQUcWu(H zIb+kE6p?;wBe7y8@wv}`d}WEXFq~iidLE>Sa|7!lV!q02@ z9d@`o-^zjcYdEp2p0gZ`78M^(04b(kY`8^g@Ix;i3wwJ{w#&ae>5YuOd{Be8Q|=LTFL+Hia5UNaHQqf{;rF*3k4XtTKWF<gPlVA>t7Ic1cnl0J479AyFaBJTQS9! z%#Q(GPp9u`|K|yJ@|<2ul96XKJ3$A&jn9BX@7nYa)r3O3pHiEi4H@ZC1#&|IOXHZ> z?C{w2@AfF#i_=TXCkq>sjx6$wVrXw2=hJ>4Lwue`3{RhlwoNVFd;2@_mFwy49S-w* zASix)Dc6kbEq1!l+Z>*x{Xls31@9x$CU;jS07+t8q&H^dDg?dHgE!^KFX#mam;6Ks zmRpOjMbR;Jt#yk22v6mUCEkd*ceWU>YKV$+1-};Z_*QTKnFa)<(|BH1g!#bHwxnZU zaO(EzHHf_z!vmQo2UyJ3e=G@ty3(}j^|_rL9?-&=KrmRdm!X3H5=|boA_geKZ#Sd|qvz zi*NcXn+F*5hn9d)|5JsAga@jHKAw0%lM7g^4~0QMofpYr9raP zeag9IP=#XZ_zW=)BVUhFBVe%yCTpi!+AQPGX)E?Rr1+l57_4hcQW76&oB#B#KyUnO z=DfEq`oxpLDb7nJrs$^iOxcg09a=N$hM59aP*|W9;jiH#XIaA-( z4GDq8Jl)u6o!0AxF>YE+pv{3*e^^+7sQ)WZcq^x+DWE7vuLx#nB<&^br$2djhtRL2 z-9NaFu?)8<_7s7ei7tywHj+$?b{?i7-j!bzvTnKZL~U$Rh}}3vB{~Hp_CseDF^Ikj zgl`&Pg0M02Z~Avx#blgz!mU@p*m^nOLHbAU2YXSH!*9RftnK;Qg;Qfj7%-ljHD2@l zBTw|Txrj#6G6yN75VJ98#&90q;QfFO>{*q}?AYK<6huTk{Q7x(P9314fsoZ`a<)09TJFQi?4;OsRY^mn81l1$nH?TVi6 zn!Qu*nH=en$s-3a)bVyK?6c*c-D@+VH#b{`oQGIWEN{*b&?kg7&Ke?YtKW~AH`E*< z$8;!Pwdj&^1VlGrTsKvfg|Im}$WM2G5T8njMlnAgZ~sORmy_n!G8kJKdPnf~iFPW! zOb~W82*f*%7O335{&Mq$BhSw*L{s`{Ybnh*8TAh|_ z6S^UFSWQi>afCZU>3V;0qt5uZ>4MHqG}Gj*EK;1Z`mMjLtZzRK&DA8Ui7mB;JZ2fX zAe%m~k8OLP8&^YMy`Is$f92M?xON}w6!kso>dP|z?$iPDT$c|{vU*eJvfwMz@4x4- zzT{qp18S~#@MokA0`-?D>tnv^i&t9n;L_8yjW9ACBZSBKYQ!lM3c0+JQT&^@7RLv7 z!u;{mAGJ;m9N+vfW2ex~E78M?ZadRU;C&51&d@#DAb%EXLy#->n;9t=cOyW3?cU8h zrYi+J932UkFq5%?8KzLPqW2%>Cf|&dNLV3vpX@x@;{b|D{&MB&v!i67MOv0lQVQd) zi|WTxzKrFR+R$Tdz@3h7%;MYM*Dbv4EnFx^va z^}lrdVUYi(XvA_QM=671vGdU7RHx9>#-!_t`s;ZOc)l3;$5Ef}F+3=5DR6O70h2A# z6vs&I6j~mSF9B70?fDXlu#6%{Z8Cl7N+d8J*L4n?Ux)KCv#AR4GR|IsApEH(%V`rQ zw1AQ;6^(6yqT_+QnCihX=pt}@SBr2bL|nV|6!n1N{kB|GYe|`zBHNH4((QO&5+EsEz*KaxeSZ_45dJ&>4 z7Bft0&o?*=eR;z1?yDmOxAhxI-qVTqTN*wUymm71jd0i@Le@EQeM*k}&9~nOsC%DJ z9XVY;`4kM%a6-=wUAZ7~ZjIPX#O$7V>Pgplydp z{6fRJyyR<3K%>l!ckP{Itf_rA>K&Oj|B?yh=jqjY3^b0H_OlfG_W7Hdm)=>BjX0^V zJHZh4Y;pA2$ygvSQ{F{l=#>>crWh#Hjxj5u_Fs93Mh}W-^NV zM@R}>r06ilY zJCA}?gqi_QTYJDtE~%aw=ybF49*cf4jy#(<&DsROm(4bB92&ky?m>?#c7G5|e}?Nd zaI)rx`1V^py#~4Q!LCd#kWIe3$;QR*kIgbjg$e5Ijb1RJehh$b%`k3l21dpa>3Ezf zq&ah?b-P@5KqTbiW3$lVju%)h@`CS1q8z4Fv&YH3_n{U857DOZNb+eodSEnqxH|-~ zE^a+nU%J)nsXWl35_-Ym_Ozuz%!r!#akWb8jd#vLBnkJcN( z?)CFUn!rikQ|k@Rf{RO$a_!6O9t*cqzjSMV@v*88%XqRcF40Ae<~Yl78l5&ob^O#F zX{wLGOmCN?b~#v8idYXjHJuOYvL}K$jZ={B$s5}a>T5!eL=30s_BiVU0fk*-8vWY52+Nb&2~FlM#35PDkyXYC@x2yiIMx z9^e)1`7HFyRtOAudLE;u7@CGNR-K}!mp@hr)_*I-Q3UnS=}YfL=E?=%xY5h3Pt zBy&_NVP~2vohlh;D`B%APpw^cInpVe!yGA~-|1I0nBSZ!71pCja(edqOeMyWbx#)6=~r0jTY1MEWlf@GWm_@$ zXTdB0HX<=s+xkQOK3U}?A*u_l+D16DVsQWE_atP|OzDt*W%vXzaCI?$n@H1c?A>#| z7Vt87o>=tn4`D!8L?+===@4eQ?@ zRk%O)d!7HaNZ%@Rb1UwyWBNYhr>9w;f|tl(IGZ=@8U!ARB%Id-kUXPg1;uXzv1ZB9^o}a=eQ? zAhrT6X^pqM^Yw7ZfZ$Z~b*+!ex6TJ%iTm&8KmssBsmyOUv+{dd3A{@dY;y2C30IJ4 z3uaDj_JzGE#(t|mj1!T;I%6%#_<;>~z%Tx6@VV@g`$eotdse6L5y7D$alTfe=$C)H zt>fx{ab@3PCdW(uvF+G&6LKkgM}==#^JYEs<44?rOEJ+j0F?hAOiqneXteT11g z1IW+fXm0KF(K>-fEto1$|AJmNI&EzZZ^KvVj`AS_fo}LlNt9Ef4{tFmofTSRHN;L}syr3~p zk~2l32Bz%?3*s&O`UCbMV_|^3t{?cEr!(}~g$uH0nX-0@UyXA)zNnH0mQ|?8>jg=T zOCvQfQs^$>=>{$n@eS-=R6V6hULU%4QuiFA<9$p-y7IC67>$iAxpw$v0R#Ix&G&F? zeP9Dku9TqQ;s@7;lDXkben*{WNjJ#jIsu6Qm?9M!1`qHE?dPf;oSscx1|l=X!&ArL zyU``We$yR?Af>I-k*FaEwMKK*Yj$KfQTnZ7XQgY`xSF1mI6d^M)ZpFvqDqP;zDgwx zCsv>3I+q1DiY0WPWmZKd^XjhussoG z0VX+QfZz=;0h2b2HbKRVzq6}!0mamDG{M%Zgo7I1%k4A^@?H%{lMKl0-Hvmq(wo(o z#+|s%rp`oW>;8W1>pm$BRn_c60xg$TGA^vm$9znGliRo8tFo{2bIfbK;a+ojLU*(N zA`hqSID6R!>OKEU=Xs(CAYg{>Ep(N@M+qfryX*&-HNxbEuE>B7U5Rq!#fB#d(7H_r zHxG3nkR^hr>_E&qsF48K6N`0e5Je!gMd*l6K(VdqpBsS!#I!}&V5G~2iF_}wmn*Nh+QDv%$Ce)t5|B8&tvy)HH-dr=+ zR_jeK`t_j1>#sa$!VCIO#(TOJ@?mDp$2z+}EBT zihq+F;PNxg=ciHix%CO>byubO{ZXqoS+^MTa5Yt_^+N|&0~Gad24RX(4Zn3oKCn+j z*&k0aG%Khs+NC}#h_3gj3}PW&CgzjGIDh;)v1AcJIsjMDNE+ha{oTN^tX;!*u9`E} zE%;r;+oyoDAdfP8@ zRO*Yro;$Tao0CMq>imd!M7mB^I+LKyasDoikvDJNXhUT=vH^q#vTR7xu&B@GwMPh2 zyAV#rM}&BE{gDf@w64?$oTrG84hjsjWVnDjOZ- zh3`9Idc*!a@(`BQQqOsdkv=H3C?w3My7Tb^@86&P@AJKe_!`Xco2Z+sK;XuhsHk+r z!NT2YU|=BDI>YXK5sZnNyC=bIT>e?$>Ze$awR`;H&i~Fu<;twch{wMx{aL4(t(IQy zowqmII{u9StxCP;JtG1A#kQDm#>$f#g2Ri~n*^yCK2 z1v@f&A{wz&%$?ZRlXa&OVBJ2b7gxS^<>%Q#?kPQe>0g`^QCyQ8*kS}6pnoa~*pWN* zr5C_Lj#WUq=WGG#A9{Ns+T9(Ta2~NYO0?wQFL=J1u2bV>C^;e+R()V2_UrdYf>~3^ zQMf_n;z7*_P22JMgOdB_kG5}brWt&Sq_+|`T2N&LGyk%9gSO>Lz5@1KVkQ+J$O~Wj%k=R|5QN?fADzsP=;^Ot+ zL_#mH619ORDA6%bJbJ{l$WU6bVqLp$>gT z*aLxgOI=&9rdnOWx$kNW`pw886s0F$j~IuT>2kje{4L@pYaQIl(Xr#A;^H$SA!QbO zDmT{_^GX|*f>9gaSU2n;SF$VL4U+%!5$}=7>g`#%M>_yKn(cJ(7g=yQAt`QUhSRgY z3ddm(VO=3S5WF8h9CbEPdi>HgOq(sb^JoNqIyamg^}O_C6=E~+)HwiYq%i@J46e2# zY_B6DJ+)>Ep^@K^tB6|f!EIREzq$wDe8VhsE3zO;@SHtcjf&mvmmqAZJ;X<#I80eX z*?(Uu21LJGU?f=nWP5w1z&!B3X3aje{3RRfg+sGLd(9#TmPWrdU~Sy$HS0Yi95yvw zXiAIRc4#mlfb@_3xr$gOYU>&fW&U1=X;>mj_ovz#m!e`1bZ0O2WElt}bmxyBKavJZ z+?z>2rnvykSKN00zFWH#&UZ#oo3x>*Nr~cxjuKBft#=kjmD)rLv|D7n zl%B|?n68!dCV#HS4k*XhiZ}pTLyY z{_e{8-$P4ft|1DAvEf7~SOJ-;{S4ORIkE3-aOJ+LLqH$c3|olA{2Y#5jz2f3s-vTG za+(dvJc-D~g9<@HOtPb{ozQFJ;Dz<4xX3IoZaz+fRKn6rxmU-c6ADXd+rtAFmHls) zpb6F`zc-FFSIF&3ykI9GMZu{n@WmfqI^B-^MM*Z{8mWnRzV?H?G%=>YV(&5b0Sg46 zL+Vwrh@1W!WJPZEM{!z?_TUO?hg@nc@m;eR=Pv8`-nGy5$${1N9cL|g`wJVH(x--O zs;BN+FC?@I&SY{tvHT{r_4JR9V z{3`OpU-PTKCvh5_S4Zj-_)v6|6afO$v6=SXt;(OU58b9dHM*}^Ml^0TdUH|Q$&-sm zi_5Pc;sIzum!D=rX-1fVDfl9?YzI$O{B!eQ%PXy|$%fDdgixo|IwqYq)^JZ5ZhYY9djmuFF7yA8wCEzqMhNYDQOnV?7j#;2|*{o5N&a^`PUSyEQ6+R%&6AgC&1DU@Eyb(>G6rmzU|${MY9Pd0n@qYe8Xy`d3wxo#(+~=L~DDtTi`aBRQcjq68K4c^Ta?Qx_LDo zIUM9nN{xT~3DvLM#eoicUu|mSi^dL6RA`5|WX@SzrasU+@P9 zM0qd*)BQN4AisU>(5;c_iAu$~5m5P@ysc+58(%zimcKgmRyw?t_GOTB2U!F2K|9lm zyC;H&r92;Thw;v#FD24mp+X8^^2<6E4OZrRJ_E`5Zp{i*m8-QS0Iks+J4~GY+!L561r4X+OO~_8P;bi`vLuQ_@SgiPsl{feN7aZ#52UYtsT?)39L{5yt{1 zu#RT2t;F9IK6z3WIDTQVYsF9kR4V-x-QK}Z)dT9&BE^>bf`{_ilj^LDid&hI!cYkxR`1VWi2%Fami+E^qO0s?N0lFOr&tSHw$e(*#}<&W{8-AO&^iV=U#5)}-#!RsnP*crq4 zfmmTH2bfZkU^8^pV3x~lgbQF9coHWVObiE^h9LNF75j~%AnG7yBmCM6|!N;Rdlb$=h7a zU#mVZqZ;V{hFvG)IH^{&JnTDJ@7v)U=VGL$G*`bYI`aMd#@xOo&Bp4B+ZV-GN=f{ME$I+tX$WL$kEKql?wFbz1XA2!pqrNS~Y1$*9rGdPH3FHb;r{{Wg zq9Ro|-K;t!0RCnA&d!#l%OS(r^<_vk`f$W!lWtfmxUPS_TQXDCnC@eh>g6Y?GMztZ zD@Kry{O+i8sPlNrFk=L^lwFK;i&Q65MVSdMxoOuwMMjj%Jvkt|2!o;BP0FrE@CBF? z?oW~0)k2p#)&tzrh>#_?EYcC=hkcW^k!{LFT@*qhRrWCOlFr7uwb zqoh&gldX+~znq_!cuYIsJ8kh_ukXCt)5D#f{Y7iilGxKI-$1pG)wtPoCs)UWvX}0e z&X4co6MopMVvWVaOdoKYE8_P)yh*$aC=Uk!2T@!*4aBxJ;k?XRS(@|}?s2%*>j2l} zRsXDI*g1I0FnOcu^VS?aN;gtn`U(KBkx|2opdk{O1_#D}?scvP!6?vk;>IBu$o#HC zX43)=BAd~>_dF&2&73ub-t|AGo{~~wqJHXo7++|L&ii>OzT|Zf>e35Vp2PmLzJcM) zU5*jk6v*64Hq<-G+S9dN_=+tX;}WjNi`>0T&B*6kaG2ld7SgTXZ4*rDyST_%5uVjq-m`3KqF$`p0}fqz4Rim^8Y<9=;~OWb{+`XWS51ozhi1R)X} zI$~v3flcdC0Quc5Fl*@B3IAh*NA$N> zJ_7kc{BIGvl{C-JjnYT9`V7T$i12t>C3Oke!%wM-TK04vnAiZ{Dp8eu#a?9o0nn)e zQots$CtwIxjW?%Jiq|khhnGdv`MctNW5~4v2DbJj9L<@-Z;KZcXi)ag6gR!J#?(Xh zo{LHdv98P$v~n1TUNA4qJb7_KOSS12rY~md=+>8K0}}I6z=-tbm>O_g<0pM8pz@$i z?-Rt{N&-tniULEAUN`+56IqioKpJyt<#&8F*e)WUeL$*ZKl0gsQTUC88~F2n{3h9R zGQs}X1=A~RUu>~E(S;B3;-cw>vRxFJ>()>XU+Aaj2(Z1kmcOvVHr}D>4*E=#D5@;o znN4vIV|fVgs_n>XY-?s}xS?qXCS}C&!T8WM{NrW&t$yDGN3FXr`@J->X_XV z&!FeesqOfIBx_O(>xztzGl|_vtpK?GgPSQwwILmyr>9AEy-3gya4rM}1?d1c>HcS+ zaIoA&`KtIR5olC(xfUY6LWjU5Y%Jkdsi=2Q|u7pd6V+;V8C zxUrmJV_ny4e?RE<7Evj{=^)}*X6M+S7uKAl5N|KMGx(S79~f``Z6-y-99i$L6!18@ z89Md1d-5#R=x|`S_Q~n@WlMwEKR?{2^7ULcV!fIGREcQ^=r5)u68WEq55^v_ud*H+ zgZ7AI@^-EM>sGQ@TOBxSu{WQsl|E}(pQh=tjmqHcnrr)+uxt3eR3Cv~y?tPaVITa~ zVNkW-)=XLTOBA;v_Y}bx#~=$Or9iN`W_%SZWFIvtWYAsch(2^iiF~Q+5%9;v=GnW3 zKnLC_#g!kUu|ghJa$!FkVlbQ88R)a$ zQ1lkO$tA?cxT@F>7TxC-hPxBrdralhYH4h}mkb*Nd>*;kY;{iJoAUH4k%6M`C(@f@ z2QXnLETq6UIik)g;$&jd#di+GgD{6)&ViC+c)nc@X5|s#mry(v$n)?p(SjvDO-oAH4LfVc#$CvV!DP zW*_Yd*8;>X4oQX+B0(q+3skox5Q&KNfZ_yUV^J*SZC%GegXeczcQGFQHquKJVt*O==?tGYHk*|Bvtrr=Rn}<3UG@R>>lWb zh9MaUu-!{4GS)yDJmH91k4AEO@bz;6Zvfq7rLg@QVlg{2sTx%LSC)TmtXx9Y)_NDP&8jM&b+Y|UL&31-=T~_H|vK$_(RqgB?lA58;Xy3NomeVzb2syhCGOcyA( z-xXKZXrXhKiwrKXWZ)(2YVO!Bk(14$J!c|UgfIQ2$|tTym0m?Vc~04T8YBDvPZ+vF z;kDrw)Zrj)ViOTIlizr66~>j+x87>th_AH#YKr#bHt4kum}1?S?5%IlqN&Ewl_hHt zhaC6ol5^{1et?AB0FmRtKq+LXK*bCH-!!KmsBIR-o~SSIR|Wg(IcRV;phUoad9femjh=TQg#9@q3X!- z=5M~IaVvGrpjYf40m=AxcKjx-?DvMN8f?_dZdnOE-KGh>QVW26Vh!H7YY1?T3@C_4 z;fs&(-TDBTaFrCf{S%)8$%h~+oOtmHMsl119VPY{UkQ{0(Dc@lLf2JphuehnkbO|g zMcNW~DZ?lK461$z^bl@kbLW|2vpQD;>`m;R+&B7Y`Ur-6WW!w$GsQl+bH3(JJM})L z{RI3~^QhD4>dh!?zxw-Qs~KF;oB6(ed4Yy=Z>O3yV8G)|g%HfhnBQH*CV?d2>%phb zo@qcEGX|Tc`)M9;VP*kDo zA!#j9$ zjuf?F8|N)VD;&)~oH&xXg3W}osmd_r7%acc;Qpd;l7ceN2!7+gRlUB;y}4yRP%dPZ z`>tEG`hcAcGDX8u(3~42zH}Wh+bI-c7y~|ix+I7)D>-mF^{ou{XGy^XTJL-_ z8oT$a1(y~27@Ay-YI=VUI7WOOpRU4#&ak!#3| z%FJw~ZEjh>ZQ*8#;zE?Y(7?p=i_eF#lzGR8B*^SXR`bPuYc7>O{~sRsE3yt|+H*}Fk? z*KpFk4+j#xjqcyF>(O9Sp9xcO&sd4?6dCG8Wb47nA6_crIat-)9(xI;8ChD5WM0aN zoyJNJy6BYIsr5%49>`x|mDDbG{rENOobLZ(z15@0$FA^X za5_U86J>)}w^O=x>sGcmVT}e9rLjM5B){cva{RhoP(9+E83-6C8DE|ryQiP>=Z4zo z5(R(8a9_Pew=pxm+n6=ii_q;RPC)yH@vvlwqKcb0HiG#k$DJj&6UOc10EQoDoV+%~ zO}^axgY!|GJ4rl`>WAPVetojmOnnI?7hQm*;=0#?Lm*x$4BRNS_yLpcpTc!CKu}S^ z_1nNSkANn3oU_&*`pS%sKHl-tdm-s3IxRxVgvM-dR4nzbs(ej#P7bslduzZzKTv}{ zLeYA@;eX|z{uO7*M1NrN>%TPytYG(IR5xs;u55S*9^bOUN#yIVF}Aj!6A}~4SZ*9` zPI9qFoLB2%*rRA1xl?wR$X4PKKt_MFbn%tLYLCL)>N_p5GkSYe8gVsG+(k!%Yn3%I zSLt1w@l$&9o83kg7I@rT@^zcl`NBcZwqUZ1OPsq(yPf?KOjaC-qFosf*+_-J6ZDLpKhLA9%A-23U?Pq!fF6_x?6yMVbs$ zJR1t#=sxx%_#racbnN?uVY-KbAsLG>EMVVm#z^WxF`U(%xNdB8T3kor(O|sW`n%bb zeKW7^7*#R}%)WQ^EIsQ!oOo%Y-L{@2W-k7iW-CT*rBz6%d6*7a_=mn@<68}nCbH~* zNT<+dP>U{XF5_%r+9r?)@b#kQy6IZgibql4x{2|!3*t1{QSc4w^=Cbbb|YM;j=dev zFY(FX!I7Z)3#;o_lT@P|Lofxm^z+H8aT3?(w{Grt966AiAnDjM7XplPB#%OJljQgB z$#-80Za7Fhk6UIFw>%vaS@t5yk}w+B5JWEpm|?=X(hF*r$=bc&pwQ3(QhSUph|fY_ zz3L|%-NAhOb1OQ7btk$ASr@8}~_$nP#%|j^(CWo8e#B zsDJ!@yJ}V4{~2%&rVFMI{Q$P}f5vih0tVf=b|47qj*<6hk0*?v{H}3IXX?F=iSnA%bwR)IP0lg)VBC(y};E2n22bkXF#8VhY z{7EPCX5v_DYQ~jkhb%Y$5#Pz`2vD7_77n~2{_nqe`p4;-e%D?GvlFED1)R4McQYH) zc?R#ToLqbYyrZ9t)I$3lyVP(Uc4y;PRTAwV)I>>S`Zit2 z+}^Jh{A2~f)6i>(r9o_j?D%nDHJ<^p5zKK{=P?lLG(%~iRqSkTSqsCrVyr`QS*mu> z2oX-mI9>h>d?UUQSgVtX)H$+&f)Lr4Y=vZdDt)p&aesxLcxyXinHKdfDt?SSCd=Bm zaK+XuBS2qwz`1%rGj+IqQLGxr#;&s!@kF#Mmhk!WYuznrnw-es<`S?sSCu^79S+_EwjmxkdOJ47xVEML#E09y$ z!N_Z91~&Y(jQ8!R%Xw9LzVyFI!ru7M9qM^ip^V=Ej_?a7gu@O#AbuOf{NV4YR`m?Q z#hp~*7PTv(wo<>?9HTfcANe}ow_7(Qq&%HDrc>p4P^*FczKJJFG%<0Q!h)<+&V2>d zi-J4%%RBBI7!sR0Mobav8k;3Tp~MzZKr#f{_&@5~@mk~!$?SBbStpTysoq9z8mRxk zdYi2eXva^C-}{&12cq9+Z^r9N^^6INDa8wpSv*FmVh%-V_f%og? zOda{w8psHH;OU%h*^cqmHn?s zf~tCy5YjPhj#q1&^8)tDVv`GNi=BNKA=2Yh7rx0@){H!FnY54$vwrMrWSA7`9+CC; zA6m&=$2+~gzU(VI7h(jNO0W6yZ-$a1?(=od4Nn!psM+=I7-<9hgTN}2Z zwAwkTg9ZuU;DRu1Tj^IIOVcm+DW0E;p8)EC7l!5KfGlaK#?!g?Tc7vn01QO)(S z^a{ikW-uhh(pP||P}_@R0-r1!Pb4QNn=|i6g3eMH1Z}8Vt$}x`pKJCk?%p4&Llsw- z*F(aIrQ)DQLi2-ZF2VZKsMu9M0hK`PY0o5;uh`SRv8IQ*SK_O ziMCo#PSU$>10&SSY#xGvPn*Z{6As+wGv@XpFFo(`JEhD1YYG3!6h^)bg8^-IIbux@ z*eh|s62ewS*wYCa&P-d+6&M63pt%_PiOBQl|3!Z5I!VuOv=R6aNMQNI#Pk7e)Ply( z{Dz*?c73LC=$cBs)Kc0F?Mhgwu{TlGY-6lIPEKYW{c1ZywjSN_X|K1K7;03T8O#=(4fX1Ai z#0o<>DIJm`go;U2j-D4hW+LvE&^SgO6NaxJr?Pv4Su#Ixex5`j^28Sxg8Ossu)V^iiGy@qJufFTxhVoHH<*jcPu1Ug_vY69UqNXWjH;Jw zlvcXY9J97w zdn{@2=dMP_XYm-1W-u{^Yz%oLBSDY`_rV-?ldcF}s3>W}Y&5oqLtK`JYR1fg;xKWc zDCLm$5djK<16Qj<&VZ3;JzF@`;UW`&|Lrmgq^>Z_EeZ&`QUt#3 zrX|-LS!Xb%Ee)WTVyAW+b-5Fj zFhylYj|jz=9JiS%0jKzL?58id;ZdyI-y|foxfdVqJ;#Jrdg39@N8_HYu{_jzX}+dB zrFFV`6{W)8f8%cR+R~Z4mpe5y#VHe3Q@_!~Ck^+qp-CHe7uV(f$)TWt$^MrAoNNp$lH8iWY+QzpW_A9?VFB^|?KnYof zu`2|PzE(JKR|jz*4m+#)6T?&Ku`c5ZEfnn%SL?3Ccw6YC4BWNb$}|!_P|*>NY2rgi^$B6m6Lr;N9u+-WILPNa zK&)-L&R=HcA^K(R39BChHh+MF>NWYXQmepDZ$tpPMJ_?Jv=mdBMH@pvWNLeR;Z96R zoYz@#=~=|V08}e8ZS}?a?gKH!CFl1Mum39#D;RB;#?+>>?snh6S2Z#fjcWf$Jzm{W zaCH%l-KZ54@8Rdxy!<@=5#NGce+MmaT#NZ*cIIRKN4yuG)Y7s-&1b7|Vu3g3c_Ii+AOnSld z3%U#|TSn7Ffw<RuV(ZLp0p*D}CZN#0rD1 z8^II`>Q4X+1Os{!!9*1&D<`9H_39XWXbk|y^Pz3ZmI#2o)yB%~>bM)T>$_XoopCh~ zk0W9WSAgpN2GuzN6ORj-q3Tnc3G!;oES_IA#xVlYiCk$2{v1 z{M(wvk;a@{^Q6GK;vE(DYrj(l(NfkeD#nH_s&k6Ex11CEPWZ_c-09r8`X2EhqbdXf^5A)rEZ7<>_E&Kl?kExb0cc+#YGGml)s9@bGM<{7WlAV~Op zoh716q~y*gA=B!V+O+eYlUit!g9fUmx*N>AoLa!gUNjFJZj9#_U&xDPUI9aBUGS55 z5aee2{Aq7=lwbG1Fa=x&2?8P`7IWeK}c z8fTnF74HE2ulV$-o@~Eo^jZ?^XFk|-;4*@vms^D0^u?=j77?MGtIVgrZ>PZ{3jNzj z;JXD^frko|M~M6J*nQV6j%5V}=^tZ8bW%G z38;jEfJ%#mi6SZ87<5WW4_KI>0wOttw3L+OpdLgTq&ozLMi@F~-h0msp7Xrd`(58Z zK95Ib@BNEA*IKvh`s|U8K1qu}_B+HXmi!gEy{MU+${))5UB;JE#~KZk8VBaP-eHVI z+Hs!*)+MV4PUiNOx=EF7d^t!JvF$~$TBZvl)reNrLe%E#z`%9{z}cQr|Hw#)o%jJ0 z=XN9$;|p3!{|l8E_CmIK2ijiIG~yOBx>02=Q_#DrB7Z?tUpLQJTu`j6)p9N`&|2w8^hbaP4yWY-R z*X2`*QbR8DgW28+i#|g~;#IOgn|*u&W&kn_l?2Lt?}XnO4F7cr-;n2n;zl zLW{=vhZlArEF{F`$6b{^^(O3*^DZeO4_Z?@Bz>fKcq-Q}f1BvJY}MD`Y*q`-H;Q8@ zPE%si$()klldI4vRX5G~>EzG}Qw3p|f-+kEWL0qEcZk-yZM~|>LgDP}zG6sM5`6Rs zpe!H5#F}w1W2g1q&>!Z(I$N2UaSA2IHDyaXp8PB!3@Aw_pWyMPp1u%;zk^C%7*K$Q z?`4yU{z8qpyW<^SEIXR;zE0LT7?W;%X(a8l zK9PLhZTf@f^7Mo)=LL79mzf2SbEN$PAfiGT6O5^_=+!?tuG`k08{2qebE>@$TUx{< zx%7Zyc%b*$llHR!7IBqp&^$amAX5E!z>RbjAgH~`y z3B@rK#z0yU37CZzQyx@GEhI;Kdk-Dn+Y=U9xpSx>M9^UQRTyHom)C-1e*5!1SPc?L zarTAj=AQ}4vIaSFj&|?(j=b0xe{$%Qsh9ZU+7&(b-6a|}vysx7G_LJK8ts-73|{pi z81;p457bJPPV4-g#QkU|ZpY_~DF@1&+oHQ~6_v-=1vg3*q@-;~w~i8mDC3$81_x@I zO8AO0m|oVrk{4+j5RCnNQj*DpAebbPi|v6H+BXvV;L>D zLP*3u-)IyvDvlBp+PCf~tF!yOc7EH*ac5@27;bDKhl+jh!9yxO!4MXwf!$A}2H20` z>m`h?qu#7ad~|5k6R5(3Ta40mMgN02=4IogmGdnSWptB*4?5ib(;sgH-y@u@wn>HT z6FT6aWqrPFfzQJ^Ede!<#dCWL4bA}Xj3ZfpDJqovZv#QXZH(0$h4K`oVCv;@c__UX zt;_c1{4onvlu61Pmn>_u&o0nOxf_U^9MjfX3W%J%N>3$7x=~zI)YBms3y?|%Xl?AZ zR!5j1uF{&Hx9+}<#&wuXmtx#>$B~Ia2wnkNn%IHSnv%mgX@{{ciStpUG_w>bdg%BH zk&0edXdvm7!>|61ki38AdhUFqL|9B9`F>U2E=LkPSc~||}vu7JP^HroDw=uG1U(T%h@gofi z#m5Y5EOm?R!&ZI`jFD)LY}MX=F2NA1eOn*kq3=e`tdRLoagf~d)S4IFO>3| zJhrjnq+jOSCwSSOP=6W<)j!j^{>c&q)ty@HD$k|Q9KD|j?VT~-@QYo4e3Jub(mvV$ zS!>a$YN+9?_}WH*as6UR!@e0~McO@`CO_;LZCNObd>l_dj?}o9X6`i-9YHZ>VYJ%o ziJ~|HqDcWkX&YiPG86>_bZz~Sint?}!PpG==jJ4Cm0!r02{Uwho@-x-g4CmnxuRfK zw&0Vu6hep@DnZPUjn*lw22@+TC(%9m&ryx_jTx%wvv{!+rc8w5L}N)T5A;~D56gGY zJ6wFp*1rZwhQ?y9ESK`%COXU&%XH=&`>bjqu(%f-5~pjMZT)hKXI`liO#%0JF`S;R zd-jLaBcTeS2bb^My?8)I!N#roHaa2t7`mQ4ctfn(WW(GT$}~YUthVptry1YMz8>$p zwBqs+>(JTn!cV%1^Hg~1?4w1+`9rGDQW{H4DE=2kLL0?D$mzAvYKJY23JKXS2?ANYOuF>>G^lJ($jwEx z>oHkSfVH?V)_T-F3fGFuB~s=XW2kh3KBS7>5MQ(LU5v2JQZ?^4Nj_CDH&-oNp>B?D zoZ@~m!!VB8Tl#J!>+V17q`dc%PAuT0fm!%o<16$(G(i`VKFt<5@zJi3w0wQEYsbcP z%OEFeGbh&==)x6lg>1dgwE85I4Q8;V#OU=2pZunQd%GbCB;_wc*NG8kcejGE8O|!w zi&~I0?AhF;alM3kV~_r);5+AtCb)z#+w$qpwNBm9c97%LxiOKE%c1f(g@HEJT`HXo z<$83+=m|<&e6EbI-DJn<52e}4_=tb9Cn%5D^`kNA&pq=}k800+{7ifa7!*dNNvgC! z%X4%uZnI(s1NF(-Qk;r~2b2vbyYth{0kj6}NXWm90nmufZIs*ZGI&|&^cSY|;`=J> z5e=t^aqez)==m__6zwMkX%A>inb+w+-+wpma=m57S4aoFirjFeZTTuhXuF zLY6he84b&zkZ<0DZrKUZPK#?N5k|tuL6z~eEIpy>R&-#Qc%u!j41W+6U5+u%Z5#7b z9ea3JS$x&xQRL)8_vrTo|JH34bC?t^0VwF7Zza7~v+*k!0*xkk?o-n2*@8fPd2577 zj0Mvc^uS~!WbAs+Rh^e4tIX;jOiUEM@XK#b@eA{j`$DP+1my0WJ5*oiKzm^ajuM+{ z{=_jmIw%$R#0{YUB@2&@E4IDWDfi$$w0yKc)*$u}GCkw7ss{$fa$oFe9F4ljcZXP= z$0GHkZewHeO>JA=51QKpZih&@ zfV?^j(ywMY0hz8&GX2C6vukUs-~m2YhO{SxNk=HILZyE$brd!5X!GD*x0W4=J*{a3 zD~o6QMXc2L)3Q9fpDu%NWkjOdAgw*Iq4@_A%+`-LSPF&0=5YOPJ$8@_y`3(t1h943 z^q)3y|1$42CqR&;Lya2J9QOj8Fn~q(u$@+ektc|H+OC<#IjKh~-?ptlC)1gT3#);* zT5JoAgS*6>@e!Z0P8s9WH1qVtafFDt809Jx4W&bpH6NcPTv#_YIW=Z9 z)C*@>-hB@vz}UAE5Ewg95d{YIsU)Fv3$o$>fSeKqElDxE?$(3$T@6h40s`>)PQVxX zS>7uo{&fSm{F9u7)qr4H<1dc42j9WNn;$XAro0p?KA9~ju?JFpiH^|&jTXdQf`uRYp@7-VDH6=h+l9f+prLKF81PrWOtk@T|!I1qzi z)MWlt?9c~5V5~OW&K9U>@0hYM0J1x-%Z+`!9OmUrWTCdwL9aF+y6RoUaA*4_w!D(| ztOW$fw%|9Ta7x%aL<|D}jJWx{+MHHhaJYXKH}jvH^x!&{DGD4odJeDN%Xz87tNQ}L z$m}wGM(iO%vjer;$Oo>$2zlQ-T8Mkz#fOM~eba`bq^-kIR^pX8d7LVf$8TeCB0&$v zXtLggQ8kEcb*w8?Eok&Fst_-?8W&YSP-1%hpOw&0t}1O(U5K zqWzSQcb;e&?by5PsKprd=E7RP;z_F#nr+xWfZ$k2S;-T=Z=u8`auSf=j5IhENJ0(` zZX#Hz0vSuWwGozNEfBy$WRP8O^%CjO9C-2aWv!OY%!N`iL+0B>Q^Ne-e4l9hw3};Qevu!|D+!DO9*dKf=sPd3PE4IG(~PIC9&r3pMHIM#a&0f| zClib@7=RX1*xvtXg3D?CE940^<>Z#e<6?+pQU;Dqk}Hhw{RH&dfi}+%&B>x~K*lli z+Cl!lXIK3D0)Dw{{agvXU5sZ_mCmGuGJ|LE_Q(%9+_)c7~1~jx>*K)Bn zBtI~s1!S)a4sh$#g22U7zbAu|kpXvhoyj(wk(r{wn}SxJczXRaLT@(nXHLI=JIVdH zmUpgxa?OT!N1!lkvKC=Nc|qb`Ig=%kR3ZPC-5o#_V)uvt@#aCjyud+0eAew_P+ejx ze6C2WE^#q3IwtNy$d9aFD!^}szInr_YeB|&UT4((;#N58JG95*3U>8(fS6;mK$H_bQKaekxE%HZsi| z0P%qdVEpf$+o_HyO2Oq(f$onC&7-TN-+jAY5qd0Eh9l_d-h;zuE`XShK1jbGc&nyG z`tydd>UFL7XEmOj@KRb>k>htBRx5aV+Op{)TCBV}e5KGn^ql^t=yzF* z%Xi2yO{U|>JlSNP<+v;en66z*Y3G(U)z%HSt%V zS$g+{;8mkrbNbFvt;55+JvZj*y8>@-!$z+JRW0Gu&q^~yLER9@;Lnf(ccyMm{JVGWUYtBt zkGKKGXZ!tA(HR}mdnC>~ueEn?l&zokFuET;aj_m35i<8lU;{)k*m#$wT0+@PQVKaR z$HotAH_Es^)5IqvATw(KKCJ?sOf5*8p}cqsg5cVN9P1tWD5A3_o6;y@cpDr~qbsS6 z?5F_Ck}a(@`iZoz`(r9Fa)t@)7Cr(&I%&8T&%Wi+!$9w$*5Yb;MYrW!i`O^FFB+-W ze0iQ5^~jH0B#V7U`|;z)asOQ$O&~H!B`6C;pY}|n!@6=km!KfrSP>%+TdleG1E;irwSy`XLDjr#|!thc@&Pv)O!&WUhq zJKC+ET7IE?Z=bWz37P(mMXDrHyVFnpElYM8is(1{{vUobR6*(0RGdfV6#WONeD_onu@g2Li-iKDn$iT+|k*N?J{|>r_Vx16AG2 zElgLXI&jq^KGD?K$~&dY{Oc#H>OCiGZ)P_8uP&IQ70NO*uPzk6nPmtgmwq&9Ku&0X ziarRUQq`U&tr}w*!U*%UNMR>sKQw$my>bVn-XRHl!`SyoK<&9W9tYaGBc8OUr489g zXa)aojFuand$+t#RxWS2GGlnRY;fgC0a-=GK4C|zk9UVNtjc@SSXhoX`((EIExYbX z@H8YTVgR3CcQ7qIb9d|P;MYfhW}w~1hsYy6wx``k<7COl^#r`iDtNLzbxSr_IZu$* z>PwZeAPqwpJVKM{>z#B1pJWzY=|aeNZtJ;?HVZE2;N!6^2tTUMD>#kg@7}vlX626YW+aDH$$z8*WnY17lj6V-e zEbNuWl}G_D?N2j8L(Q%ua#xWdD~_Yt2fJMdQ$S^J51nSl4K>Le8uk0fuo3{G$lJqnKPs>ejEjn*3Uj>eq_EQkg?Jc`)!bC zIi%UW^Bahtx#m+wA#=tdZrh|aly!MZ&ms0*Hj<<4oG`?|6BASU-{rjO)tU-cvbGxE zpNwQ_xA~r_KJ_$o!C6Xnd&~pV=`%19q7McNfa1kVa3P~g&+jE)`;0MBBRNaS0ayX- z2EC&X**=>fzCG*9@a|9{BYl8lfo)4~1?KWMhl3>Yj{M+WstgVnY ztM1SfjS00`{WJ8}JkSV2(V;0m3Q#Ez z`%Sd@_hwxC?^@BL-pVV+Srapd&6q11ni>n(v-R@I-0Ebdr=5Fhuj8*RtkBqz?jIM1 z3c3kRKqYtH{IX^AjrSQUqtltZL?Q6Nd;tM@v{u2>X8YZ`%85sRDTVyN7Hqs+V+{SIyqNPis#(O?u&9|OVch>yJ zz)7^ZY_nFFmN1Jto9MPs*KQRqettz*ed%NtUT*HF7VO#?(jiSo3bJWm$yy3mH7fF{ z9bH`Vl2oG8pdVv3+goG}lM^6;NQC{C`hJ;kXa(4SCpO|qM!+$X%E~Idco=8~SFFdX zM*w`VdVzOp$~Nbqi8KR9yy)I;`7XXD;Inv--RRcak-4IE9C=LLalKgBJVn4fjPU*< za-=}|j|;!=U(~FlI`TH~7dYGpDKqqPdDXT6RAU8wIRB+wL6_OywSU12nbd*Y7HKng zTSAAIPMtrYY>ZY2&pFFmY2!(Vc%0R^cgyy3`IsRuoo&C2`Tp?~%ZXYG2d$!C7U(Qt z9o9iE(s?DFVkAc0eR1$76AOW!4=+eDK45r!k zKExY~{KB}CN@a6HmwtXuix>a;IDX$FgX^p$e}7Vq5-OAhD|38k?_te6D8nI$Y(zL7 z*jiWb-@jjE?YFh#0@=iF?zWZlzI60yqh?a|6kDxi93FD1nF=?oi%eKqDv*6eYkB7n zn|W?^^N1XA$@y|1!#gu8XC7UPUxb{>Uqw(WK zp(yS}IWU!~>o(JGRmSHpJTd<4-1%>w+d_i~fB}l{eB@zq+Z3Lg?iBqH`^fdpXp%tj4LG(YB}8P_+y9@hD|SGLTlcu4Yw5D`ww%WB9#g-=t$)?Hx<$p zetqm2e9*Fr*Ho@gs zEDxeFW+ut(hc^Huv9wrER=*gGpqS6H$%`T)94P#sF=cCTvboQ@UqC30&i%<~U;U|$ zEa5*kj+aQ6Zj&lqVov>m$h5Qmwc?tiT?x|crBR^#FrU~l(UK(dG3BIINp{}*cbiKr z3&aXKsX|D;Fu?b73{E*t`rcz)gNh8MJ()nDw*l}VGSUgG7EdHCn6X^z_D@z%dqwZs zlQX-M6#fLkt`xYNf?18}F9J|*W1E6@Pf@aEbq-DHFNLN~dX%MU#l0GnX!ClDwJHXx*d*hf{Q_ATIbiK2oJ^zALAPH(0h+_>bRK|A~1q0QhaZ=8E)v=46e5FO`l)?*d z5LOy?2e&MxE(}E<${yDWRg#XG`BU`T{#RJi3gGb!(~P7pqVb`i@4-!mHv7q!Q_~-j zjD<``8r@gsRS0OFkSW|=jtia7!$7ytn7N`zn}}R>X2`NJfQx7M;Z&GmoGRbZNuu?O-Qgh z-fZDynjjDP4EOnAexu^N>83`QI#V-orhw>!{udEQK}EwYPxZx*OKKnTvVLAv41p#e zrA+v$e~bKy*wwvNYQ(F&Y0B(TsYdZnxV;A{$u>k215eb~#v2 z8z)MNkUp1o{|$fevEv{$yf<$PW=7F-6HB}h3ehZ+Sy1xE&~Cu-|ClH3KOn>_qU;MZQHX^Ww}<@BH;vZH6KXJOsAz_zQ@_wjGyeLH?Vw#P)Sx%lIj`9IiC zBU#lr#b&oIZcpXU9lXBL5~?90qIr!+R@4e>7fp4Z`UJ*0>>vY{l9G!kzsZS;u4`|5=q1*Doy?*zSVvyZ zY$fSs7)GNXZO54Y57`jy;~znsSwt1Rxz3!sgUrxO)qu)NXn6R+PI0rE{m|FD9?Yjo zZ+n+m9gZDGK$m4+DlbWf=;U61XGIG3Ycxfq>S8nVm$96c{Ea_!E#Es9m&Gm{dnhrO z@XbwuIvJZ=W!^ez24Y9DP|3<{5_a9l3}+k}kQ_@(2l#R2Ber*LOAm)?JVU)~day&86jj8U(oCb9 z_LO!GWtJLCpRvH#fK+xW%wQHlagJ#acmK9P6QGK$R^ILpf6G#Trcv)=*38<}-c8#b zCTIzP0|n1-J1e<_D9qt=c2o~!m;KfxXRkjQ4@f!P<65&x&U$t(;lpYzh`rL2!K#xmTr?d zlxvS*6V=%(*ePfJQ!AM=u2)P9KRUb_h%)4?&tGQ=%eBt zHs?x#qhaB?oUeBqeQ=>`=l5m*@s#nCWjJ>}Bkgo=Zc+4KNBm)T=j~_{&k3I7W${#m zEj?AfF}o*kY^HF4{xs4!weBg%$i(11`RJm6*15R1;KprIm$8}Yr_bip-arV#UCPBQ zPm$i7h8Kd}&UX9Zf1Z1Sw!f26GotGN(=Ajs@$ zK>;@F=#_65=BIOnga70Qv2?}7+65g7n%J@_##{ejF>1|gpt;?l&A+X!`xf-|yb2gZ zdd`7|;LBVp{IfBK>42V3R2x8hMM2ZhY19Q!Vdpo>*TxPL6iDi6&m8?rD>1y1kjVU* zqm3Xnfc&J9Mwy)}^zk;*oey@&uYovn0wQe#H&Z$z4+Zm9a+9P5$4FJpV<$|#>O_53 zjaqOkUv5lC6#34a(Q&iIo&*-Zd`EfD)nKLq!dgh`_<i&&N?+!QLh0#wH)(CrGIaVKpy)Y|8NA1ofu znNU;~p)=l)e0OlT%L4%?G@9Vfyy+WzwKC29H1W>a=JjE8pR2m}^Pm2)q&hrgf$hlD zsRxrL`PN!63s^iwFqzj++I4b&USlSVlb7y+p)K3Gaq=U;pu5&k_L2OLAHVbyknw}A ze=5x$wiGBN1b&yp&ogX|3Zv*gd`wKV0@$oI#Hn0shgn#D*AX_Lfc18B-*uutgMml- zPjz%;mNVB9k`;0$QYUj)UE8{GkCe9}cA__%M@D=TM)EJqMp8T8Z%H?w5Gj1O`MS=5 zZrizZ?$!ids?-gTLV4Kj2oxPb!!J!;+Q5x7@|wxNxG__M=u+9i(E6VRK_poATcj;^ zaOJHw*>~6zn=%jgnc6WE)upPTRbj^R6$X>%Bbepn7*GB)9S%VHAj)H4_Pshq-0Zgk z+1PP9BYcy~QPq`GLNkxog=1npOFB~L-rYzmUr}gr%$iuVVfk9Xmwgo9bwsBw!K`sn zJN#DWUPGp$PNMK5lJpz0|EVg4hz>-DjR!p;i~Lsx?+-06FsRyqOBlU{H0b-+h`}tQ z9-NxDu5wnyumjN9+|YsVJl@F{hiyb7z#A!Ex6AyZY+CTLxkc;y+4i(Ze z94L2;R19-lQqUfWZ-GIs$h$K-YQ>Ueubf{)OA!S3^gN;WD+aXK3Rh61I-pyy2P7Ta z_DS?I9-vwWby(W&Mv{41MNk9;nU6H2n*+mKr%=j;IIb>kM-US_nhXGJ>=xh!+Cjkw zQA_~9^vb1>Dq!0yS+rj0aJ`X%pE zKDbT67q4BnsSps+*P%_&}sqG1z}v7E0+?&R|*dO}|os#i|b{%2d@YpNX8AnG(UUFHN*4 zz;@Oa$SFnKBqdo+jKHd-e4Dts@}Zm99T#RSz>?s00F-u z<=aoc&(4JOo_|<%F+Lc36kfzE;%sy+hjgsJc_;QWFP*pN+UMD}h@M4W>7}f+5aGBd zs5y`IW90GxnC4@`rV5zPW&XgD3gYl7=p%^((P|(L!{|8(rpgipQ{hm5yE+)fTp=Fr z1?61t!Zu$2#>KVP)>dzH7z5F-MWOubOX#QCld<73m|JV#li2^n&nsS+dY5tMc^Lj0 zPI$@|=tixvw;q~rq3Irzj0O2)5g+mRIaH56^qwTDyF=j2#4MRi?FchapvE$~Tc_)@ znURz*A2FtJG%>AAk||!Pypot?o-+IvR42a8^GAD%_B_E@cIrLfmni}8|4E%P`CNRj zRL|LMIU)E6byGNo;N*gFiYhAYfUy}Dy$f+3h>@keU>D{HtdDOXzEd*9b}>7@@sqqe z?c>KtcnstV;q7AUAp3_xrxK2X7|qoFy--op*kUhB1DVOKk{xqs@p8Rdp|T%(nBv=7 zWy|BP{yyZI6MX0p{~wrGBi(XvYxQ@KKW~VziR>E+4iWQL=5-(9kXfqW77#JVBUL12 zO?RZ7(y|tuBtizDkPR6f+=q4 zKF(lKIlBGaQB+&Go@?1cMcaSV+{cmsqwFvV{i5KRqqbP8{|ZJeiIC(_Xk{Q82MBg6 zi6KZy?aTCR-Rvz7={_w8pBc(s@@&3=U)OYQWGI%IZ#(i1!{O63EDn+>HG4OXB+}QX zz1ggnlR|H+t1vSC{P|N2E$c&7Z6a-S3qoz898~&kNY8fk$gYo{Nak}i-LZ%G;r|zC zL+vBYbqe;09#teO0S@bj0@If1k*r*X^H9fsl^QSx9XQp<4Fg3okS$TbO_!G5*r{=4q{GywO1;n&-EGJU^ zGhB75*7d3uSdjt);?!uJ{r4RfKM4#9t4c(2J0+#}Nf-PVO;E0hZnW$Da<+~&1sNQ` zxJG615*5}~?@8OuN$^EkZ}vQ2l~}+?TONZy{X^&~VW~J-vqAWc?yL9NF|?a;R>NM6 z{%WQ6#Vc3S;#1r;QN|e`W& z8mO8jgnzwadW`#6)%2{FOK?}Xg?S8i>C==it`B<<{BVr?2VB~f*TfH?x;UtS(vQ>8 znLbNrf>TgIH*Th#P4JUB_uFq~w2w(-I^<7#NK0Och8(U+4b2fFqRy^5evr04A&_+Q zV3{9LgD1ZmmOHy4?fz$Q=TQvy*>Cm@&1+nS(%i9T;O4|pGb9E1zdX1+0w9}eq zef$1x5jz)?9{C09&{WQANmRpt?yQh0j{{(m>i-NrVi5muw>kc*ez8lc5y(hA>N<&t zL*_x5+aX=u`55`6T2jJO1^sFeV6eaG{x72vHy826KD=LTn9F2E`f`2dOoBYjUsH*{ zT)RzJ4*!^~_tG(7Vss95ndPb5zH9W|q{c1$-^h9dpk(A%Pp0J5Bl0%LjSBs^vFuAPQK;?VZ6? z?)GiP@mGh%wH>uOC&KS#htdb0p&RU&LnmF7VSdQ|v#@L&mIC)E6d;hp8d z+x3(WPm+(F8iqnczGLn?GPIBDBTdrQv|aFKy~qi#46D5vZ_Bk8I;e}sZeK0Q|LvQ> z*DmO%y!TU~uiLTefj7QwO+@t)fGTJV!i=>J$Ut4;*t;tP^H`%3cZvx{#I?vVz zdz%xvIr2EVBdmn(oH@E-6KP&vyq&B^!}d`SJXS$F_+D)^3i*4Cv{Cb0sFQ^$zwikk zL;oyw-7poH+R#espns-(xo@oGin*d?P&FRE<^QrZS>OcfQS1guCmW8G=tV9bo~tN4 z4vh>9ummJ?H_YSPl7#LQLc6Biv9mJ>$z$p0yv?nt&ITaanBeiIl+})ZesGBFV4HV% z=|V$_gWzI_JugzP;f0dY0A5(QT98pootM=&=Y|UMjj^ z{xbYPH}~V;caAU35+XAj?yGxmo9}(l&iY_=O4YQoqq;dfTl`^~O z?(w9a``oZpj4o7dZDQwF@DiGa#yqN8iM)3Dr*%NCd($&xac<~wR!8ySY%$jNUFPDv zl~>2V2Uxt>+*ho#W8dGCOnm4=9RSO?Z@k|=L4N34#$h{ySO>E8bj6)q~&T-qr~4CP&-wFoZpM5)pU(BQW-WC49?;9tLtTUamrcn zp)z91!#wXMTsdxLF))wQV3_bKz`c(;bn+_uZBV zUX|$dj9exs)5VDCFPyVNX0e#=xySlG+zL&|_*8o5YG~MG1OxlYCAD?+^T{(t>FQPj z$Z*H5R}{16?=Uy<=!0vA&GzjvCsQe5pNZaBzG98aZFA$qunBf$zu0z2rNIh&q`^9Z z9DFW6n&pxAR_l)((m#E=)I3^Qy!;*8T4ahbc`5F~87I8{3W<{6vBc;7(~ArHo4b&H zI)%SH(gF&JiH{+FUegiygviTposlo1Jee(*r4%N!${8A_B~Xy}lN-gJa#y{;$zS72S<)CF;_GF;D?btkscgA;=p% zR2fuzThusrf}nL#FO*r)*|qQUnzf13&#Y+la(L|36T-ngN*for^B>`tf=~IH{iQ8$ zZ-$=+4Sf~n<#Tw##lKI`zXGQ2B?-@1QAE|{!Bae1Jz8@bx|+j}irv<775VFN>3?eQ z7E@)n!%o)qjy>q^G+tj4WZA4CrJgxMcDWQ3@)S3&T+~GD7kRZPlXrU`CA?=OoX-#5 z#$eIrJ)@u-WV=235#Gs9ghsZj)a1cw-MIJ#{`^Mi*r~d_#`)1FzM)%=O%i#Fd3#3P zZn8%=Uk*Y=j%0B%Z)lhR&a7YI!0?&O81PTJ==X!HBIP=NFm$IGc@< z6GF`vTYS}K_UqEFSJGm>_`EYYNUFdQf8-Gpq@@OGB@r;wQcF+oRMy&X-`ktY%CA2u zxVq*q;Bfg5=8Q9Rb1p%VEC^b%bd`v{gyU|oLdkwrapcct6ot=zlq6tH&(7!?mF(qs(&xbV#KYKTuXMdsNJyvGk)yNR=x?lTQ}F0Rv^M`;%RFnmg;TY-VP zzDKv^!hmz5jO$JvV;D0J=psbq2PUhkSy`oWc>lQwLA_E@QIUR`XTGub{MFFVP%CIV z>m$NiIi%K%D5#AWTG<~VwX!Ivz6zL{(dZJt^r6z=lS+fd*7%vvv*)o3ZP&;8%DFNh z8DE&vW>xsnlab-(wHP$-oR_$9{Yg>ZdS(7ykht%f+HP6-$=B`y75~oXMpKG~eQuF3 zB!IQg{r77`J*MIO)aeo`&@n3p4%*_31IhrnKurit>&q8OD2#Y{Lbt)7{GB0EC8E6p z`^YtG7(r462LHtduJYb_qUc!EsXrZ~JxiT(9o2Q~wx2OVQvsipvJGTMdEHuXS`4H; z9Oo`OH-F9U=0R(|fVoolFG)dDGj%)F1-5T|#aAlGmebSwdW)Pvm?;!=##(&wpkBb4 zzZK=&kfVSvuCvGo)T6=L+M2=)mJSY&pZs^IksThpa*F&@Af;xmi0i=S0Y2lQu4yy& zpyxEFji#~2iLjn~em=&*%VIA>cNA!Q3msJ&|CpS#r6w)C?_JODUqM+M8FPlB+|RTu z$!geeG@Ynm{$jQ&2cYSo>dWC82bIU3MhW}gltZ|+>7SLwb6H}7i$G+YR{yRrOBz@+ zI0Dy;Pa>Wgc|Gu7k2B%2H_dqILsRV{@1HO;1F@ASTKuQ7#Jh||Mmo5?GEnqCf#63E1@{Z$OAycK<0mdtk3P<~wYBjJ2spdgz^^mw zTAG?a(}ZuD(rRjHwQ02;${Aej&@(c->^QodEcdI%PKr0j=Jl#rwK3?rGndPXWW;*7 zxvyr0?r`&{V+bF~y2)THcFTfcRta-{b?MGlPUr8lK0lZlsq*K-+r1KddUYas&QJ$# z8Zy(OQ>iZJyIN0(5YV}7>lv=4kyHG}Q#Y*@PPcm{iS1jcet&{sAfwmS-Y*Bjm>ci9 zy1K@GhplnDUGaienuAYHheVbppQ?(a>!34<>My15?vhZoy1gZocC`D@ zB+ZU73~4{?F!S}Q-~Y(%a|ichOwBHX70UPFZ0GBG_pJ`u1XvjoxYt{UWE#AZzDti& zw+Wm+ec>yIxU^Bl`Xiqi&Y5UqoynDaza_m+&ur=>`HTKb2ggQUE-Bnj76P{N6m9`T zF}0-AI?}Sl&Pzgk3k8bx>D)$_HZ7f_ZLdHYZPuria7RKFbINi}bFHC1@QBHqI3knY> z5txK}Ri4}JDF$({2heNO)IA_v(!T64x%A0l9BvG4Z zhl)F>cSp!HXkF$4Ri|0~oNZ9H)P;R{uEM4^D5Wn3sP$RyeKXO$m&AtilKCCs8O0jh zJUnNqzNma(6KLN^Tq?IxrmUeg#jfbs?X%ga_q6v(f?8chU!_C99^C=If_LU1cIfu5 zeyAy7$iU{%-ZORRJ~M@1Usxi)mP&kKitX`jHdmAw#y@di=O z3%8`puDH8@`LqkJQ>zO0PFuU8x#X5B+kv!tomv|Xqfc#CyD;Z(&-D2!^LE-OKc6^z z0+n$uyYbbE*oG3pRq<6b8uK7<{Uf)S36G@4%iX$jVcu3rSD!~NjpUzD$XHQ?#9y%| zo=@6I^B5t^Mt#y;&SPf3?xI0%OTjo@P&8GoXX6E@nh_SG-ig91tBB|Yv@kWHSCW(L zQ9c%7vj|dcJ@rK}%@7f0vx2&9gse}o@9KBXn)P>Ku1YE@fksJg{NpV7=ou5}n)up% z)yDyBN<7QL8U1>-u;^;^16c@c>$Fb1W@rC7uKpa;uJl=OF#&XWTdKlub|WYmP0rUS-zD=^|$*P%o_ zP|B<;{3v~~xk&}a*{1&IT_;Bh$qm3;kA_WHR+tG3)_-%2KsLxH5@g&FA1bL`5piz# zMZiEylFwMV$5?qlK-EgbjhOo4s))5Bx0kikxbS_vXOA2nY95#^k-z^|scg10F!9cI z9JQYc6d{(c_s{vRlt9Y6p>8+XS5hdmz5=YHR-i)70DH%4$AIs~44@N#s+)NbLp9Uk zo*(~U0+KPu@uN?+!SA$3jzOwGyO&sOP2R2hb&dz4`!OTj!>P?Z^j%o$*3nxt7qXU= zEu=YZ`R7EcO#}!wf@8~ro6sU3GY-C+_ktpE<9AT+WPJ zOhU+`sZ*e;m`x?F*mq4t zvA*BxT)DOfPTStXCxcI0T=zxL?hcf%q@GOA)phh6!R_5ao{qR&Nj1OK4*%#&BpNBC zZCp^<-gU1~-3nqDR{vi${6<^jckJrwbac%UGx6?m>qk4&&N$>}>dz~yhiVBQ9=66}vub@xpw_%svyg zd(Y&H&;N$hO}nWgB^=rT8;cAeg@GXv!V_IB`B95CAm13aWQv@tOIncgYkI}F5etUk z>u-WQv;8T(286&9^-$hTJ>1^Qx=7q?V8pNhvU)}zm6;3!5bd1^2R>Y~MwdFHpbqNU!ffJYM?F({JBo&OdP1k#XLT z`roIYr-Fbty`*Cfk<6?$!GCrYs?&lm^rwIciTef{61GcsjEqR;6d#!a6(j1B3UTMG z0UHjKDotXjBL6v<&p6|JN3Yx@S7)!J4(DEUQs+-c<-+>xnsO?#F_+WJgvNXwOK)C`wE8Q?Pb^fbKpCNF@yzaopL!q#nfXuMzd+ChmRC858 z+`i+}_Y@)Wou&TdCv9q@Qi+@zE=JuV!J8tS`nK;dtdk)aRps8 z<>(V}J_(ZD<6aTSbw}>}*JEd3jymX?cD2X@$c9()&{Y9s0ofQW6*s+B>RO(m3}S^P z$#P?~)EEfL2j}kUL#>;hRX0cKW}$46p&4u2WJF;H6hTaKLU|P0+AU%P4@q4XsBdi? z8WJ)R%Ry&KTQvPo#@pmZb^G>hgjsCl54a)BtZ#*#&WTI}TqLO)n>s%i<-Aim>+IhS zA0sUVTo1~o8=6dzps1Q+{V(|t)>Ji(hqMZ#M7_GP<7uB04owE%bONt#QLM9}O0+!uX zWgdr6tWeOW&L-v1at%`ZFHJ}lKNzwe9fM}tLaN2G%2jQhBU)mh3|fBwhZfvT{hT2V z8Oe>k^&dJnQqEoY>%ABqpZZn(ZicYpBWOQafhZ)Rs}Fc?nB*nwE0k&894beUcV0KS`T!`#FjmPxv~Z8FGU{wX>kr z{_gAAjE*X!g!)t8_a7Z=e;~x6xFB)T6Mb#_hh^^$2@9J7{Aw%UZYCpiZ{3OqdU(4` zmV?=3YwFUBIZ}XTd;{4SWtW}iHp}oKQm=aB!d(xGgxzC%y|GQ$7_U^qz?NG4qqnbP zy+i9R|7^3@ci~&Q%8A!z^b=99A`_zfR5V=NKj7zjl5Hl(jT;<}h>R{NL>FjCz}FQo2y&cJ#Eimh$Uf^N_5@ znX_!NdMz>~hQH#6!X|LCEG{QgUmpK%w2qll?b!bgb8O8su9>{`jFMFC=AgoR^=dMh`D`QAj@I;K)%W9PoW- zXk>fB69%@NqYGvQ)wDvzhC2jn1oV-Gjb9C_!wzXr7TI#kU*Iflze-@6g$nSNx-LD`YYgbuAz(yl+8lhc&ohJ ze`a-zc$STE7WN2+=@t5ZsVo0^CTyphLvr$*q(O9WJXLX@=63srk(S3FW@NUCNeBz8 z0y3Z6S-Er-akHKgZsdi4m5pKw#pl}eM=qd zRS|e8q4SrL8Kyt2J%~w|HD9-2+dh&M{uRvGvIBkhtB$%Q!i*?&yZ%zC>_hT)i22n3 z*o+L#1^VrErPf#TW2z8*R-4Ks55oXw^;dK7`JQ2EO5ZvZx4PGi3&W|p74iBvOs592 z`aPt1uG(~W&aUSdVI7=~x5x(cr$1ra4otFXFRTteDu!_!kWVH7pvwxsxu&S9T4>=- z_g?%LJ-pwbE+t{L!+R)vbw!sqhWrmHsO*kc$oTaRXWrsy0Y;0#f!m=)ofNdVo?M+r4=kEPoHju z@uOyZUMEhRfC9)pzDF7FbrT*Tf&?5K#tz?SfjFYafUFjm8uj$*%FDaIO<4XwoTJEo zOO?Eav`&AnYRCxbVa@>FPwh}blu_mY1}8xk5i@r2!2a<<543>O>9CEIl;n%Fa<-4D&Y z!iZG~we?q?+vjc^nZ8jbn_LNwxsEEmz^rFwQ}E>J(Bw45wwPz%HRK|%WUVda_L`r` z))8yZK#hv`c)Gl3$$b!=Zut&V-^&v9mjq|&Ls{690gAThUr$(=nN=p->5w^;D2t1}KHAeSux)k9hv->$qbTy&4t>kVgem*$$#ocZ!qwi>w%l7*5`Uf7B=7$~l5OKu-xd(EPwaIPI zEC6#A2-U^u@!2@2*bZv?9}3_XV6 z+E=u18wCn`68!tRCq|0~)J|8MB)bVLZO3ZlCrg6l_R0aqn7{UnlFRfQ3n{pN&6IL3 z!5g(Wthja8EaKb>c09hav6Tmvf!kZt8+#CqSI)nS`u?r&&@VyttS!qIkl4Qc`v033 zP*Mk;fL`bC*la`@O!BR~N50Mjxs@E*t}m)>i9E%gYtEDJORBQm@3|(%%iK~j{P<(v z^?U zqx-(@Yn<0Pj^jAtxj%tGTBwqwm?8`6w8u!VUka~ni4c?w=h4_KVVZk@Ns@DT=S_)}1VDUN`r+;hnma@^iF%NXc*@cHi{r{$L+;ZKB-mfbfq`HSf-T=dfZiF!xC1 z$PE{q9~u6`NBlq~EiWI9q;`QUQ&>1?OYW(WZ#{Ao>-{@@KOykqfE#3TRaJ5evyH$L z4)rQV4c>$sJ|1fTU%_F#DSO$t?1ufcmGxZ4(x~*CzLqzPj@}I`eR>HlaqJq`i=i~f zOMY#8;2&trfhvf|)O~1UM=-wRQ~=hM?UK0r+ftA{L!w5Dp?VfrG8?zU%o8&o7jj1X z=vQJMt=LS|>-ou}#_WDHVQT7EqVB~z7ARM9m_^i()_?h<9Q06%jGJ2nI&`ENwF0^! z9y$(P0=4=RCr;ROjH!WWa)Q}LFI+c8s1BOo-`fb3H%6J|fqdlc!3*$_&#+?d^-qn_ z*^WG#Tagd)d27_;DEdoxzq5qO)t~D0=bYbheij;SFW<*2q&zk>2Kbjo=yG=qh5_vIRG#!85|K<&+TIE%01xhW9LwM))xv zDGd~`%L0$K=$<;eH0Hk5)d>j*_d~DEySa4(mI;7fzR|6U;P5|Ogk?157IoaXS`mZ) z366$66*8qlI1hYmrLESpR8{P$4AHz2%)AdIWfTU4{9Zj6Y;%laY=|Wviq~>icACmK z!D+_sGR}4Q`L@r^_YCJH36~P98`S*p9f@hr8MlDcih9b7_v=gKl3D5BknFS42kA5@# zB5{3s_eHo;(csf5#9V5oPzS&O+eN1;J+Bgv7X& zoL;;GN=FWZ6cb$Xk%r+)Omd4woWBI|1*jWYzm8ds6eKoHyx~cO)1#B^MFTSVeeyxm0R=3}t#HgtZ_?J1cgGObr%P~exW};cQ z$2AouJrWqM(y@XDchstlN0t=`C^+aZc-=F16AAui5$v{7ZHi%e9%SrN1-C0J$qVBc#1$! zpY$~20YW!de#oMev|ruqiMw&iZ|se%BKSPe2=}+Ro5sbZm0JITta~lw_<{0mplDf} zM9AFPB03)|o-TsrD1p^VEp`93gY~m-zPXb1C6mub z_aD*mJg|Y^cyj@Y_Q~|MlUeFFhh{RcgpkE zp=2tT#iWCpK|%9FFLtCQi@q#U54Jw^V~4B>-;`=;)DUJ z|T0r?0MI{VZOSsrA3?EJ3S>CDS+s&I23Inuc_E3~ZrNmHSPxHvbhe5HM1 zWlnLWUm^QPg)Wij++Hv-`aWv4MYn{5<9_%kD9l0T ztD?LdK!Gndh)-Fu$eR8g{XkZoAl;G-*(!X}AZr>^o2ApBsQ@KG^=AI*Aoq@!v#dsd z26ao3L0f#gO<2b&q9i^ZwW8;FVTq_Q?J(gM2nvVA+qH6_9+X{ghmQjcuL(lhkfG0S z5crJ#Lx}NC)v;qEM;h5vI5#1rywRG#0*+KM!D5+5sKd+)YXzm{ z_L%EHB9dNm?slW)_wpKc-FpNCuH5+8;*q=^OyM+ABk;#jfQ~DHw*%V3aiEC`O{p|^ zR*tyOk(BcwW@HKSR3Wt}=Iy`c#=!TKqR#QvGKFi&q5T2Lm5pLzcJc4C+Fvea3$Bn# zt~RGGC*Ml1HOeVyx=Jo8R~Bnn5l?#fcwfO)>RY-8w=GJE4Azq;Px3*`cwEO!M<*KU zjpI7$3SXCh+y;dH$4{TUIR{&*p#q)k>5 z1c}!CfPemmNntnX#3&;`NqjuO2uq&xbAlg z)0=UE(uIE-pC6)$&G);>ol57Cf~H;=KS|W9SLUK+R=`kw91E+jKhKr2RW86LyZ|{# za#6np9gZIqLg5tF{}strxH z+#Aj1wWY%gSEkvtIfFd5UH@YzhoSR1P|k?uDH6fWehcP=h?ZMotMlR>x6&i#QI(}3 z7EsS;myT!`pIDubE0{ZDRolZlwlJFPvZhGmc%0hBD2Yf$BY`=GF|eca1^vbPs6+gm zW1-=aO2((no@5KIZhyk&B%0@dBb~Y8-oCxBB=NMd(@#0LaY7SZnnQ^D6-d>Qb*FOg zM0d7U&;6N0HZ^S%b~T}0?uO-UR*h*+Zy18>gzUu6-I+W%uJjUj%NT702#9e2#k&@t zuA4DitG2fctdy;Kpfow0tK^b0qJ^=_P>u@Gp131Dt10aR<8xdBsy$a#e^rOD6zgR$ zkoJfTd0)?7$y(BI{paaf>990M_U+gXGGR!>9~2R)KMLiDi1*2&YRpIcLh`iax)(iv zSTbQQ*&ZcM%a${%A8tIBZ>=sB$`PIPM^2hdI=p12mNyNefDQ(zR^b6~>7!i4hSc42sIi%1WI>GfgIG9j#ye z;ZzEe-mn0}BLK%wdfcXcI|c#34z_tiCp+lpwJS%Ij>%=`Ets{1af?3acef;AT;dwP zp2DRUP&3>iqa-;R<*ae4<9+isL>Nge><9iOk~b|_hRk@9(bKZNgbvNzcRq9w6?k5M z_yayh6uIEjK${`v%mI__gv{s(;2<17Rsf1w_E-u{niG}uGH&OV)Pi%wxXjQ3sgK&6 z@w*&K1=_FQe)`nLEUs;6mTGB?ddGE!ZH-eE#;w-e*GdJ!2(W-TZJBE~l0R^{aqHfc zMDCZ3OYm_r`0B4F90Nyuug{bJP+I_mg+fDoT3^&N(jmX)LCkN65tpTTW()G)8hbmg0$l{09e ziHeDFO%DHvedB!>X89+$CHv6ZG7n%#o55~&u5J^*-4@pBA0yZ?a*XM~790ta&)1%Z} zhdIM8^G~?#h4xmDD&&Arbdw*ll`P9aircm>g}m3)^MyH5sfwV%>R>uDo1|1+7sqvM zR2uY^3N=+0ZY=-IN@!>K5i(Cx#E{FBh6y_vs}cG7>(5yAr!be>cLlqy8`A9=zFn$l z=$#;DZCHr6{`2!wV<>cU{C9v#H9Hc61tnXAxqpQAHb6)!8yl)F80)CNk%UPq#M`(8 zt)UvxLYgbGW6YKcvYJ$ZK`m|ggDAC&hsNg&M&iW=n8w^4j>?w3^KFESbfWJ9(F5nh z+g}3`v~b-74-4(aex+JtCE;Dz3{duXFzHx=ca+Y!Sbi`YZ1V(DKI4h ziA+2P2uOc}#5TW5-(aucp4_Y}Ly&9`JThKM(=0a_h7PeCO2|qUyiE$2tNJ1Z9)*?U zmBb}^UBP{fB;0aeKGjICGdw43u`Y43r*)rdf-Fog{<02sN#0wlb#+y$rB8& z!Utb+OL3gZ*8X2|CWLu!10jf)oD0NqT7(ON>nJd|>R9;ZuPz3M~QocZXU__#@| z%iu(^Ox@|7%SZp38)#Z_9lCBmtuxX3j{i8%Vnk$Qq&1XxJ7B(yTczz%Kz*(vU+*Vy zlgD!2A$KATY~f(cmT(R@1kHHb@70YiS;1D)e^oNnaeUOLr3I=u z9&Mra=6F;lzR!f7^`4cr_+!CYleCbU^U=2N#4*O7e(oU3BdW3U?WR&eI2plF*pehW zV!VjhB(niyKyEC7ive&aYSkoD^T$UVb|JXbIGk=sY|S)qQMA9RUzw*hxk$N zY7e?d<(#{Rg3JJGl(W;lx-@9o5PwyqmzH_C#W*97(sz}li&2F)h_$qHfsJ;LnwbBV z6M}F_A|R1qdvdXGrUsFHmY0*e%Vq^ab@N5eM!uguwAvy(7Th!X(yNa587@Pd*XfVi zxp=jXT)|p2I?@d1%M-hMg^7P=JyT)i;0t+8mAmeFFqFbUAy0ptd1B|JjFTS~Kib{u zk-WI%2;GOTjWRN9yY&c+7G$Q|!F}a_+K8Y3!-H;A@IZ@+4xIm+vJvFJ(rhRwjn?RX z^t^iTyl$gkDPmByh%XpZxlNR` z49UJOi%Oli3;1OZ(&DwFHj;Px&E%>%wo*axFx~x}c9Y2V2YFZ~3T z$rvDPOy#Q)xZ*U=Om(T6X`TSW*Y$Q>1*oVlH~6SPvH?qzYi6*~o*KEjdT;H`xFk7_ zKMK4yoapnH>JJ(*XB$YR7GC^DGPf(z&qkbGG*0qju_B2K7Hp z^L0nHQRuyOxkzDnb9dt?BJwxD+)NS(hTcn!7lshrd)+)3FO!~wjoa23Tob^&wvJ_; zbGvq0Ih$22+?YFpF?UL-fXa;4Yd_5~~E#{2eiq3tldTUoXZZn^4jnlCT?_oY* z-R#6HM0??l589;FM18ABiiczG25q>1=U8x|tY;E`dSL6!LA6T_KGN!iB}7QH>J^y?oPZV>m(HDVSF`4hQX{n0#dHvV&y1gKQ`M5#Wx+hog)hhSf zOI$n8+xXL)OW+-R)_g0uHSK)Eh<6ZL92oxchL6Qq2APa;ohjj)7v5H)-~x4Q4?p@-T2>%8*uGB1jmCvy}^J9D}}0;d0|?k z*dkofv_`SUjX!_<(SFf#$(e!&_eP}$!kpepPW6Zk;ZDTfcH;axFiltbk26I~Q@6O7 z8};0!;M6*223x`wX_gFc5ni+D@p$34I>sx9oAAc-uN>Deb#Y1a;wZq31_yAeYpGin z)DXRnJlD4puQbH|M-F%M3rfndw93$JxG!B+POfw2@o)A;M9vmoFY<=MeF;2}9*Iw$ zAAJ$(p5-v+Y@&`9^VM=uC$VJ4B<9Bq>C`@s zcHVBp-QM;mU^|o7e`7i2)_n3(LVW!UT*XFq1GHvlu@^CY7E}XzOB&91(H0Ia9~B5+ zqoU89au|8(7P`eJ**+KW8HoHRXZE&+FS7iHv^Dp^DKf@#KU_K27s!M7UNqEVN`>o= zRQLmnp)P&BnRDMC)3HR{eREH0G|kLw`1>Elip@R54w$Q!1aAJKon3qx#$9-9!w`E^ z(9XGvtU149Rtp=ytWnf|j>>OvDb(@PPcy?YdnE&T_p?xu$Ymh*9sS>)Z3x-S7SW#| zO%{CF{0dr}*TEu&rzaq4_zfnw$hi1N#X+P6({E@IH zbbihe$|7weU=gqcl>C=MdoePBhC}g3tVO&jLs_Hg{w&q}o^chJ@$w@6uALe8!Z$x( z;5G#RpN}7#DdUB8&rFhEPMYw5LKE$amkPS~`(@mht1|6M)l=u47?&wZY z4_I?2OK|-oA+^(rwf_sg>S9lI`|Gf{=?cO;byMHbx$-fq1Tr2KBvB1X{9&!Ww59-_ zxFoZoTU~YompspR;@|jvXKWcCNFjnFsh#h!lj?wlfD$?yDv5^pONr4r^f;AJEKOW2O7&p{rvfJ*(3cpAT)`;(l_xcP1c{`vI1rzjdz(zjPt-; zaQNW&>3r);Z!?`;zI*o{_LiPvc)r{wv|iVzi|%@5t2 zb63|>u(3llk#3`dASvUtGEdSZr1)?iKt#=;Mk5hfY1LTl%Z)&mp+>G?_U<6*eLhgD zb1u?teeNoUT|t{Tw={`mQuS3%#NP8Ga0#QG2WC`Rt=pPr^B-I!9|yn~H`kXDz09&# zt2UwsWq-F_-dK#6dwwx8?n6j&tB#fwqQ8d(7LHwwtp8NW`sxtx8~}{lCu0CxYdAan z4G=bUkSEN(S53(M>+`90h}xZ3`_8kyr+(q#AsM`C^0WNXGuM6Cg*@RodiXTl1)ozT z;yzy@VLA2Hk=9UtlzBv}<-1IYKdYv|Ho2t|=RbWcv~1Lx6%xN*&3ZpR$cqB+I9F0CGdrIg(6dJ6CBkpK=- z(hGOW!RQMIPPV@L#Bk4(%z40HN!)V$=kV9N-r4h+WWCmIohaG~&^@IOqN@0s^r~z? z##-lfWJOi{edg7cA*-aUk69ll1G+-&fCJN`wDgFr{YQt zb^l;S@Su1lOzp}Gk`utAZeLg~8VFGHf~0H_i_@|-Jv1GHDsw$h9Ed{qkY3St1u-__ zrtk6xATcpsP1A(JZ37f#Y+=3OOnR)dEe-8;@#pV+Ed50k2D{NdtPI&w&l+2uL#@lQ z$VcnL7};1#gEDp<=BzA8Pl+9|TKlIi2SvcckFBvS?$vtr~ zF(f03Q_Ik~Y8ZITl;3|A-~7@Z#Z6`$O0geu_4W^TA1=%Rbbg_IPL?BL(fK^SA^#+0F6zI>T=zDy3P5}9$%IrAzM zZbTVC8=~Rn?qV>MU_`1!MnFx<$N|$*9!!9UFx45vg*LxxfF6h8Io>I0={BJdZ7zFc zE%78_nxTkx!CT~F2D?&kRCU|(%#W0ItN2#=dOg9i0({a*MO_8Y!wR=ig|e0p{7_ZT zdT(g-H3BsMskM~6fPI2Jd#=V?W#;f&J+uou219;&CHAdJPB*i6A)6Dwca(Yuj`BKh zPQZ^JcbKgn264JkkzoUkBQbf-{>eg>>+rP#RP*{!G8G=rkq-O;cY5g#vuxsK7b{%* z+UwKkruMr_UH9Sim4>hm;6UO%KD+v=^RG0ZhL||~XiNi8>F84vrvpEFawgqMHPG{! z(7dp(vpwJ11g$cM)Q7tDJLio0pqF83Ubf9hyK_>CkWm?$JbX{;6W;mUrmJYogxSPn zU8E`N-O`tLUl1?k`L9BvShe!gabDwfuNN=mZryt9lnTZBwnM#YW<^Nj^_+#4g+9n_ zDA?O$R9MHV+n2*l$S&*Z4#vK_?1g{d%p^xs^PNz^asRJIYedhiLv)H-R&O`GT+0^R z8>pn1l-wEBI?sSB<=GIl?i{MbYfrWteN%$xalnvWiIn_k1KC$V{08W<1|rhPml z^s+YQ`$MWL`;%+svt6=|R}nnEmok!DGP&@ySdVn6EV0D&9kY?tY6lbMCj3aPwrTDw zMGqDTd`4GObuJH)ubDW_3>IDh4vk?>cOK!gO6r{9XMaLkKH?^68a@B0o;OYBJyRt3 zdzeG$)@;~v9=?_BCbVCH#=))Cm=DLDBOX6~e1NrRehsbo9W?(m01V#PVTMi-ctJ2C z<+AL{J>4=kX9x(g_V*TdAJvGEW2^G_&MAO^L*mhiN*YDWdD4W^7(=)Y))Pxt<^c!>7}yPFWRxBFU^?CWxI&*>6N>9LsDY zp4+IPGZ64-Sx2b&SiiqvyGLN7-IPO-!(eW9!5Cj&r>1?OslrmS&xEPXGw~ri>-j`_+tlChQzL=3Z0QyxMDERN)5Ku%xS=Da_91 z30Dr6Oa8Jfu3O#y@#I;o=4S#%)+88$vls=nO4zqf-E|996n%+sBAiCSe8rjGFJy+2 zv(y)k4w$5dGu0}mfOghsTx10`_%ItQt>*|+NNwl=aO?UyPbwvNMgjWzX6`_Z3Y;+| z{fR|3{Zl2tGfkf=Qaj?Jr_fRv!BK^Jj<3>^aG?eW7!_ zXN@?G*X}no7yX)>1F1xl9;Ns%M8|0Fy0|f@PYcb}D4U&m|KQ7v!$5LKcCHn#BX)Y( zglwFxPw@5Y0)cNhq)jKymRO_tTatM_)Se%WL-VrxrBx@|=voEyInVFe^ zrqAk*s`rdOzhRx20bLbu?kttCg^`9b9`8A!AK-G)u(D>W)KrS#>A!TH8_cxEI6D>h zMdZZj8cY||#Wv6N5q!AKT$13PJl4N&@e(biY#S1ui zb4v?=yP~Sfj}^OvaQ}6nb4OLM44oS5Ak2Qz5NDd2LXCbT)%!`};OvKdCsC=|dKI(l zZy8o{mROnS^5PDk7Cn{p-D21D2N<5BnKn|Bo}h%xb~1Jo3wo-|x~XaX5A#8bh*n6#%YcO_rWMmXpye z+zBpmiR7B?WTy&x9Wy0Gvt+cS9QESJ;ltxAIBE;0d2HWJF0Hg1rL~2CbhGuiX&6Oa zBv!N0S`@CzvU#6#3VA_s9`B5Vsne zF9Hm3JG2*v5|~Yc1Y46yIIz*XAIwOo^dvh&hq(#IL%=p|T}heY1&N^cOg-;pliW^A zu`Y{bvbuUKR?TppE@!^;rtN7YAq)ETN!~Q%dTBkncDQHbSciI|8ys!x{CqT6lGXhF ztTIB)3Dn;XD7wgW$brYh&C2VwlO4x-;Py&lk7JQ0y>fa)>Oq%ZFSHs{&YOJ+CS3+S z+q8~s%K=e(wVbN3Ys+7;e?pfYo0W;&v4ps=dW10#ZKDyTxy0n;tQIRvOC1S}vFG(1 zL6S_eIzp@_RvvoIOr>z+>iSfP0_)OB?@K(4l~eU2pDxl&ph8$}_|9lBy^Z6%RiL1( zJgnsPN5vH||DVxr4N8r(jWG36U9XsTVioLSzONTu7bZINq?$TUYOotMUxt*S7;@J@ zJv{|9=sN=637&vX@#07qE<-~@G4)`p3%%6RvWhW71ZK^89hnMQj%hXP3udRa{Q8tk z$I{E&IR{idB~0R&rN)vQ`|tbv`7Qe2-Ds}QSUBOn3od7^An zq(@L+;iU~prj1+&UMCiL$R5)aQ$3pGyzgGpMyfY=_DN!(zpH>}6#JzBuDATYl7~E&3@M+KrB4Aa3C2M)mz~ z87n?D1kfbrlTqR{1}=DlZL^ zmZ&_cRk$UP@YH1~RilPFFhKlu3?_@^7F9)linUOWtC}MhouB1xkSA(^Ae?ut$_DjfY>^GF%ODdDlAX7iBgtbg z=V*L#284&%HOb$e-mWPmWZUGvL;0#rn(a>bS)+hQ{~P;vIUq(AqHk$BwwE*6_- z4mOfF797Ew9s7`s=jL`2MowX)TI05UA74ZYk~a3g-XahYgzZt8=;tGsJXc_u&6_LF z6D~#Nui$}Wmn2tk*1p=W7V7k0UVke|=qoc6_O{K}mOpNz3q+8)J#pJe!QU4sF5E}W z(u0Is>$V5$0~sF{`&kE{YmbxpZWuu3&qCVqI00Rs^gCL^!bBFi8|SMSnHT0f6(3kX zPBb*E((lE=9d4FnzBtQrsCV9jsa$)9`tf^5VnFI%s@W;7-1V%TNTcP;m4*O zpw{m-a?3$b%|v#oTYWqsd;A{B9_LQQ+v6N*eC<>0Se;etc#I$+x=>Z4T_7YOJZ2Te zDs4$-c9hZpMt!R(Y@lFDMl8NZc!kGir>C%`bF@m(W{`rwm!?G$i((HO(_f_-w2xv zib{`<8%rJR`YI-~smZ>}0$e*4@9AO(XGrC|`R(m}2!LCFL%qfbrtr&?(I*KLEfCjF z?)y@4UH(q2{X8uLt@;;T|IrRAk>^)^=8Ig4Sb1 z-G3c)Apa&NpEA)d@cx{zmsv>=%^!h2Jk`|-@=M^kH|`WI$gV&l?%+MN%oyIOR;Wao zrHZpfxmXR%Ec+S9+Fr|D&7K+=o6b{!OT*T}2e?Fm%W;$mE-km1FRQ$bbiTz!G}j?0jDw97FelFz@5cKG*C9byLwudUO#aU^@CA!qAud$ehX;(^1y*RG`L z^ID8;B#Zjk4J|jSp|aF}alQvqd{Zj>#?86D7w+a1z~0e6Zk{tIZG6!Lo-NSIDns zddFi1r6w*E^YX?Pv2`YW{b`Qxr+DcaXO;L;rwGLgB^?L(=+_1$)xNX3$cjY4#ZJ=2 zEx%KOCF9$Fb}w-R2_#e1w40iZ>ATXU=vwqHjRdX7)o1}FMKQNy`iZROa>}v6Gf9OR zs$K105_9u<%#>zAb{xe`Q|ZQsv>uD@j!fNotJ?(t7VwSGjGjA*1$?}7OCfRiA(>fs zrM#Z5O|*D)<&>sP_)zWlm~M(!%hiz}?o_zDV&gaV^JSg0?xtYt#u9A)aBV<#R5L~6 zwp0xt*=qz528gc!*E6kwYLVFn9POEGLXWiW3%?r)!L(b)FGvq`E!~wEZr6;9$!SrE zvzhxZ(9mTl3-))vHQhCG2C#+*1oPk%*Omu!_MgJkoiaGo)N-a|dh}dk9#@e#n{c(d z_#HMa(CT|?%e;V*XmmAw{=XGNb`ASlv-P(zDf0o?qVf=tq017+6pl3vMhHZ z51SPVoq8HQ{P8Mx&~%&Bvp*a*m=s9>QrT>>5w~oiHYf`cix-KgVaaMQEsLl07{oet z2fh8~Vz2zJ%@NaXVct&}<1}{7bD~{xUqLp-pOCFhI}`_pinGW)enVYxV-xYEBR5?@ zSTxCA8jz5a4`G_NCNs$`Et*ZgaBOnMNT~Vsj34vZG2HRfN$)VIrd*?kf4RiSWB#N1 zfpZN^=!fR0ENU|BM598{T84}`r}{9TCl{uVFE=^0yq*~-SmWY!8DL)ROh<49!$M2d4|4kOX19 zfQW_9|M=`yDdGP16 zN0ze>aLqrAd{{qLpYyJ0YPH5{sk^+YW_oa>r5{`4M#EsR_p8cm7}lD z$vv%XCFd^c*whf&^&S9&z|rsK-$8-!k)42}PkocIq4f3PVYcv|m0028D^V^jf$}1P zs);($7sVt@&6d7D>=6@lmik3WRbHc|Ny}ezT}<-2`Rh0A_OFkQ_?~KTu(I5_IX3^4 z5AfU$eERuaHk!;5OMEX0hnlD$UqvEOzlQHBrr&)cBRg5qGNYc7o>k!bAi6(5hi2@X zT5*U?(d^}}%S%G%=_n5NS3X~|*-hpf{_Sb7veAEq}hYz3jZ~p2MV2qMdns^mS(sVD&%!4KFesp3JMbQjXbl!)T z*w>!-iZY+PFTZ|0h&>~am@^ff$7U{SO;^$OmoJVt{FKk}ms$36d&hy3>$Z;q_;)1^ zh6A9QYWmCK3MjpBHqA6lrTOR*iN6F|Zd>xO zRxAHJ$v3swNd@8QmT(`XKfViiP-liOt(jcYa=o}_bN`?$_s)X7ClK};YyQTL9eF7| zs!)-@DO)AL?2<1NDBacwGe6fnHQO8#offplA%UvGIDsY=x5_-RGMQZIY#_zLxl4H} zBQnWUaXW6srb&o!1e4G;)3*(}g6s7H0?-paBIkS)$1m7%tvD}BI3SrOz@z;@Im^Oo zb+xE(Y{0#Q1T!Cx{EJrWT0Z@y_s;P~$BnaPgcCDcq(=vR`z1ZHe z_w~)OFf=7lR;9@QnmZYA2|Q1-?2bMnLa>hVj$b5mr_OQhuCx;~@Pxe~nqkj|JMK^6 zG{cnaQxxMrC#!ez12_znkT=rgKin_0a?J1UMcj9>?vlnFs(-~yy%)hjW1Aze**USo z)^M#ncivyOW_qZR|AigL*WXSiP)lbk5uIm)NEO-=A@q&k;0Qj$M#)7+ZD;L219A9GD@JOpfTpg#^McycdkLlhCvqpt zOv+E<>u*AR?oqjA*2__Lb@thH_I6u-?%vn`xZF|r9%p8%o$s4ZJCnY#z3+gM9??GQ z-QjeJ>ETzN?Go(A_#?7o1Oha#D%lpNOZN{1M*pmF)SV4m0n4CDlQJtjwJP2grIjj9 z+Eu$c%S!QZsd&HA?`A4n-{HCfr?aa?uW{Gudq0O#oe3$C%mtKAsUa%R-%Ks!AUFBHh^ttaEykn52b0|4Q4^!^SlQXKzoS&})vk;dXdUyYeLwr(l^w_q;o|*PC2fL7rSIjm{@UO_a*z13hYX z0=4HgkKFM9r}NIj^_G^D)D#L1Ix+jlKONp)#Z7nTU(7gMaMlRMuBEV*Ywvy!(L~** zfY1zQ%(aoZ5(!k6p^EFx59IC@?`l^SWHU3ca^CF}≀4*ud=OzYW}#n%ILC3ZU%C z&S%^wm9_OGqKsQ*=!u$5{CO5InzGHQICa9|K#T2J*8_weQ}STajN30}3tK2%UNr9)z8_0U&TUqxkdXmu#IFB* zcp2j76~Bll+qK^{5V=iVren|S+)85!>_;+jGc2w0jMWNMO0PR7>G&BR(zl)Pi;A98 zvWiiBNUn3efhT!M}@{hy|C%cnhcWwR_p$JZCQ z#Ha1l_{503uHP7SzN#jOKUhxcWJ$@(#jSl_@z28uUIoyUwBqKE?k3$wtbo^4U?zOX zf-*g`xpT(OG21Uqh1xf~P@}%W7CS3-T8LVt`wQCtM3LjyZhlA6+qL7aPReduBmVsk zS6{@@=;YdgiUAaP5=bqRVdsU)p1V5Fv)c9?lu8rqbryiF)n2xGQ;I9}Z#Zi5R=hu3ul!PA2k z-JcwMS8?&~{PhZ$nS6rvFhK~EYNB@qN;uX?j3?>ZO5B6hQDKzw*-Y2O_b6L=S9CO` zNS?JjtI=Xn%EM$KI;qra0++gJ;}PRN~?Y6RBr zZYbRjWUx*KT%sQ;5rwfgc+}qUE8;7B^{U_;X`&F5l|$)hPZ6K%q!#M0$jf+}t)kN^ ze9o%=XeKxR{JCba!;bgLn2-GKEdKj^V&gqyh71_{m~`;A{tJK*a1hs zn_&)i*~!duyh^Wcr3dX-oo14Y$tb=Nta`nfMQNXduGpsmrSjfx6((nWv+@dIA01}S z*MA4advg&(5EB=_EnNqT{vDyVX-bJ&z2}n=@xQ(}ZK$jNC{JBwx@`IBlb2R$guaLW_PrErH8=LmM2;AcmMFJYTt`wX!KFj+rqFAus z&`GPRFs|P>^Ss=l&M?sAi3;>*2pXY@>~rw-_0@G02u*I6rJ>7_S8lkmP+sZx5i9nA zt*N){wy@CVe7R|ZY5yRvyc?JE142T{H^q{}0nOJ~Du%umL%+8m?5%!uY%Oc@#{};h;IvGZz@*rI@!GhaHw-fo_S0%@o^X*=IzGbpcbH#}K#@!a)vJFjuBLhqxD zRaVjy2|Ma1zYqCaq$khdXU$#K>T~8E3fI0oJA)9GAZ#-Og(Bm2O{yjviF#^AwT!Cx zZWiVNE4fUe;3_9qu|%ROzd8w&nIM+;*;my3D}xtyO~=M7T$2zdxJg5PtLX>a?QYKw zU%_IJEIdsr=Emf^NKc#c?j(9lEHS1y;fwgvxKC9T%T+5Lu~3n<=H^`CBKz^sKq^Pv z37WD=w$H%?oB?x#ox8@nF=5u=x#iNSj_;uPUHMkwa`9T{k^D+9s^24VaYRjCl`es% zyt&AU9*4PMCgLG+LZaCfibq6MjkSX|;TjD*;V!dhjZT~2eE4m*r-^tYN`Pq1&*+F} z*=1x-AbVCu^RTx+-}7^rq(j}wFHesc2`fp+o=fq-)4dnmaqU;}7zYO~c8i zFsnKjdAaxM3}@Q*W{Uq}VNCZj>RH~hY+-PliQx88kYqaVo@mz}3Vpv5BOAu+8K7%atu zYO+eh^H$L^igiv+HhSf}q{0-TbgaDR7Fv0$$@uRD?gi~@tuuC{3LE`nH=j)Q5gGVV z@n7Fg=^GgPEz}eVH*+sU_J|~PyC?vP z^GQK^ooOHQZs(W zu*u7{EP371=J|uXMCInRw#yBgtC{^KDn#ja==1B!UJriU77-cJMDJz)$3H8C$MzLG z+f5wOXX~fpXJ0cOd^t(oc22#0ukb%p3oy&Hr~>zmb{|^@g>Y|%PU=YF=j3?j z6?;eBP`@;F`bU!mk|^7N1ANJ04jIPb&QHfX*o3?~T;j!Bqm)W`{(deWa1Q|KGD$MJ zlX`P?Er6s_K@$38Vovp7F}ex2y1udVf=E!%1p|Y<6IzaqwNwMtdS73DbJF?o%$X_O zPV#?!@Cr7nOG(#|cnS+wfw%ksp{$ z#c3s?Rth?a(xX*@^@$F?v(N`&kP(=Et=c zW)*HWvT#vIWH8C<>PbAxEh0Rv6fE*Oe$7=)FdU#tQ)nTnC?(`s~iopWBK+>L+lPFv*e zTp*j!jr6+x|=xb-!=Kiy?!kp=(k4man6S&EchX1T-!S?}h%3~5u#6ABp*te)hRnMF0B zh<#hTKD`_#;d);}>9p?Xq9uWIrvFM;W@SOh=$~Y(L(pU;Bwa&lcT(jU5*@#`yYWLF z>RN_N4=~r-z#|eFM8C{BU0yEgpFvB4+ey3PIc_Al!t}-Jhx&=EZRx0u!9A0L_+W8d z>33`1P5({}`)f{KOq{xAZIc?^z+6m6{|nYH_34H&S*mhe)FPs?8OC&JzBc!C(k1_b zKEtxPhCpoD)#=!{(M|ieW4#DTU*hwa;bBGnhYK&joI5*azqB7nv+V6-6a7#TBP-W) z!3NAwUE^i0B%+u|+m@_4FVmy`yDa#|lOjl9xVGBLJIEB6ZyCgCQ<(hBrD7$P1PKS4 z4pBPY@D@_v?>&Xo<@EGSg;^1_4%1oGnnFdh@(N36MD-8q2!|IQ zowEIx5c6MN|5a?+Q&B;`xxSQu^=pl>LvMp9>brqO%z8zO1p!iWg0}7%_u6q%&!ZztYg|4O(qzW`wUQw>Fo# zBGEF<)zDKqlD1L1_%JrK64t;SNwSXGbF7;&RaH$%i5k>|y%J_}LgzBNR!;{ih*TD; zQ7wfq?i}1@t>FDUj%(;j{X{1$EN2@$!k|g(!j*SVpD0fmttP?b!C$KyGm~dZXb8~*CTO;Q< z*rD6hF(qX1&l}R}=^l$M`$HRV;6HcaDzW%^@rTwyJ4tEigZXf zhh99c((;0sxHvIq=VFRPWsM$6E+WF1tYppl$zl~%^b&1^Chpw@|Ijn)6b;M$m5baC z75y?!Rk>^XZ0|nVhs|<7V;wInIG7f?7afboSHMw-$jFe*>Vf`3{M?T*#AMJW@q3DZ zsVM`6ND*O;OC*|cZs8(kaJ6_kW3IiJcfq`f0akM8uj#S=tF>s7b7QWL58U4-T*n$eQ6{aUFnjUBO zSY&e;{Lb#%Wu^*E+SqSJDING_HktYUk>X?_4iY#+;>a$A_*nNEMKm4zRKrD5dgDmm%yp>dy{#SS9$jQf&5p(){^MQ zs;97erDNV?hnww5K7{Ku_3k}C-?~hk3wtA@1}M~XEsGl^G)(EEM?UI>e(4QfZ`*qX zGZ@T}N!xyH4{XJ^;(JrB9zTKw`WBTocrGw=e*?zh7r!Nix-xV+|Pfz$p?z+7A$nL;>Kp_~yzQ5%)w)wyyy{uJ} zu|anhdBpc>A!6zp7q4~fqgBk?Eb)NuIqIn#=S&w0Obv&UB~wGR%Z-43y*M!w`a{}`c)R*tZ7ha5 z$lr|RGemvdc_t1eBGdACV)-ZQgCDF)qE;HAmmPc8efO>1&pgV#5(pWe%aB?^z41F; zd`jlzuF-5fJl2*HD$s$ZvBt-sXSkL>?!Ywzhd>fiTT!Uaytt_N$LB2?A*J@Vtonpo%l(w z{q2ixIHZ64_#MAQ#{NB)jREcc!RHQpma88y+5fL!?IlJ0^btD49kALT@7(qG|GyY$ z(zBMVn78CVhI+Ag4Q=DwKf{WE7JA9jt`*@ULm{U(VJtF(w_yGNv>MP76>}$}|)(H`aAKejFbN&18HPP+FQE z_UPlz?{EI;SvEW>+0k`ow_nJY1+kovSi9Shfr)|7afYRoc84~;T)fX|@ zd2Iz=+sd0;r{_IVx~MJ^>e@Zth$Q%`0$Kv{2;}GtPXTN8(5?3vpu}N6&pd)LQy?4FbCpw1UQB z{{U$L^7U*kx98xPf4ckmSN&O8|MReXP6~U;fAAYS>XuLPWx7;^7dLp7 zWN9Y6;t+KsV zatyNyAfE1ZLcKwq{GY$C9{E0c;;8AQYsOh9w7*gFfky4L7d3%23*A&8(6zVY@5B%U z5!i`rrWe+1K9~d^LWfeUbeWrUG!^bPy2yDe z@y9w}llO43#h+U!X7^49N9pArFF)g#mE4WuQ*W4c(zWO>YH|hkr-kD%{&ns;fz&)U zze|u7IYW4+$X+6_5w_=ebg=v#BM(K}zGXF5&fdYE%HnmaJbptV*1w*EhvNR=gdIRc@mKrh-#lVUyj0X$?;C1e3!gJ z8&)b)!{-CnxC8>Ls>I8ytFzgD4V&-vE~5bMJ<8voireA;3cC_`sPp%aC~C{KQsgKi zo1=1*qjID|r6q(=NzUAiaik)OL=-v7oiq0}bSR;6)nJAhiO3k^8pDj^|9orz`?K5r ze!IPPUu9*!$LI5W-p~7ap7(ps-OnX2Ri*=n`z&_mYvOngjk5hnx; z5t~S}mn(W#svf1rEGS!ye^%$5c3Y6nFz1b`_l4bZxz)Q0dvl5tg%e*0GraA34 z>?~&PQSgN*?)lkoSD$ukbiwo9XZAN_Zx`&(S{s@}D&-@bTJ$vc$xr zzhvKbq8$SZiMG1?$I9JPXTV3yTbJc*+(-JWh+Oyipy9Tz*by)ZsxVS;AJkR_wSTeT z(;v8$n3r$H%GOg}>IvMx2GV7Fe29jiDh`Q7hKIFL7n)g093VwWDN>lxAI{*KN-dZg4 z=hwLOU?}OwCPqZ`iV9Y@+qF zI_r?mAPkh>#bQnK6)^$S$T-u^U!aES4#Q$?xu-G;Hf|Bo?62X=y2RdeOBgu>H_D?q22`HI~4eXNb_ix~5BV|r`Ez^@M5-kL|tk)hsf4-Q%gg95=cqXua>E!>%hXmDaL3p1o+J0-=bN=~9vRD5OLmHN- z=zz7G_MgAk1yD#8^XJ`vkE}mk!=P#CnJUvq@FTVTSYeP*N>JG~9_)mUfkWWMw|94* zK6|#>@`kdqGMEb+hBr${N*;H0bq!~faEJQw7fedy0`b_or!;pwdT&U_E+XlaR!Pk%7q>uu(ed;!;>;0IbIW7@vEn>Y43pWtQsPTXJZ!f#JFcQufPR@J_{;VTgA3 zgO=%wg`;dNx5THweCX{FP7QI(O6O@OA0MB}bM7zLJYYN=48tOcl^?99`mhhV@Vw@t zrzxD8B%Z~mPsr>#h%(E8qWH*=Vt|gt>)W{_phD#~d`ER1O9PAR?O+2Y#=K}d_falp zL%sJP(g_-*;-E?l)07h6|Aq(}_^&S0M%v^W<7Ypp8w-Pdi&ME>uC!WfEF9849Ao^_ z3XAz|@lqxihTq0wj}EqLGEQujJ}b({$LG4%*XY|jZ@S< z(OH`HMbP5J;8n~ykCxpY6b#KGL+FU~y#cNW!BBo{ze9*Vg*myCh6h7I2lN|c5|aM1 z2_Ci_gzUSd;>L#KE?>(EkDr@(be<*FFL=s4@jO5GdtFh)ar%_@*IzlnV=Q?pk%{RP zLIWI7$vN_zy?X!3ZsvDcQQ9mU$3$KzF6NtPk~~v{yR8*=dV^+(MPr9+!{Q}>WF*uu zMHAP^>K*^-_ICMelOoZ1Zed&B9b?@go=#y?U(9dGhS!a?R9~*_b*UPVFxH^PQ%5!l z)d-HyjB2g+9a{mv5$rLqzV5u$akIvI`9-zI8W@x6Bn=HWLjB383tFs0hqZG8Q?-H{ zJ|!UT!*q`ul+pL_oTYsU{yFv2Zv?RnqsE0_$6q>F=ANENjQHawBg}YQ^h8VHCS$2t zUQmswSU+8COUu+<-=G74)~=sk_|$5+N%K{2xx zbUzBo`DVpi9_V%BIzFs=1zUlQwn$5RJ15;L)Wxyyo&;w=Bl(h?=VU&O!H3kbBe? z5ELxzq`>>MeU7d)J~*wTI+h+*U^;e!-^zT!nH0H|A(5nA{e2(e_;gTfR%cV=xpnM1 zX0Uu~36C~2TRy*oILOw~{B%SQvCeTiQK?i@Czvt*wfqxET1>A@2Z9>NA(~^I2iV)4 zwz6_5gb{BIyz5s*77np=+DEK-foy|VFq&C`qo56h9mr_nf-C3zxtwUMuKpwmU5l4} zb#rsvsSG`Hlf#X3UB_LNX9b`Up(8KF`{6#@Ynj>W(*`f~S6{_yJ`O7S_93v+{K67v zX!?)W!XKY>9|ozBVLI2rt9w{>LbuP&kS1C7>ySk%zf1o$99oK8@4$8o@2Hu$rhSkD z310;NQK3%OSi%v7-X}B`R~MHGB`T>$u2+_sG$F-x^Oxb)oH zkoDjjLAQ8iVxWm^-9)JmzSae=%=(EAz_c)$Whu;3I669Zef%h1y9%MwIC%$59vQuCs+<-dw9kM44IVX0tHu4`8(W8K}YN zvxFapZL#OrL|pD4+alMDm;C3pm}}ZPbw>jq_4}=0UWUM9YAkd<+_}9sYgb2Vh~*a> zP+#rID9{%@#O5Us8@x=iF(qB2M42%$?b%?UbLb32unC`>F6TD;;7wmMVl?kTr22Sl z1uVhL6ne2zJaei0KoqKBY|L&eEA*jNR${MMLkI@Rri_7X9BryFFVE3egt&P=h>eY{ zA%8h_bY#T5n2cUlnqdiL{O71?=ws&DH7K6Qz7ZE=Fg{3w5# zH;3P$&I_z|h@7vOpOK(4?DnhO_Z7sAV84IK6mz`!g|%M*$_GCESvohkB2q%4Yagil z7LApc2Z#(pG?5=}EjU-xg;R!5UerLp;t#=XcyTl>5!6gtCi=>Bdq~TPAbrp8@o*v{ zM38L)W$Sd!tdXgcU?=HB8Xw2uU%O$fiqMaUZ&p#ZZe^5NA!iZn&byac5G9StszNfh zU4?<>iCmZF@_5fP<0l(+hL&GASUs^eEEf#zg~k8oO-k9D#E|7a!zDqRDBn?P@K_i$&Ug@KSv{l&Je2&TUX zny7$;K2{(;(0;F^H>`V5NeUR-Gt$Rr^s#6JOi(`U8gq*Dcxxc<4Udo#$BX zkTI4cfkr}RERO?yoWkk^@^7AYHEX-Q*H0h}kkb%RNwi)^^xYr3dGT<%3NWwf#Pbax zG7x5Zh~lr}@ZnK9zF}c#Q_W;8NhfD=yNY}ILknYGa7Rjgo{`>DjN*Sf4T{uFgLT3Zp=VGW3UFJPemVh)dk@~DW zr_&!lK7<@q6m&3Ecy2Tm<(eo1@$|s<4dQo^RRp-EgH6YTn;kj?+_rH^v4pw;p7G(m z`)bXXjD9Sl$xQpc+dwCH;d&r{P`Z3yUS2+|D41N)GYpsm@XppgfFlK?8mReSYTbNI z$M-bbzPj1cV-qYx>M5oeo!Suv6NM8@XNe~CtjLLpiF7LYN-0*hDx;~?>Qb)3NIIYW zZWdYoj)&4kHD3kHE1e&XVXD1xqrAok_wOnkDwEk&@T-6%OWo|sV419uTG}O1uHEpQ z_Z;#RU{&KP(W--5l(ro&3pYX>i^}SXb+9q#yn&ibUB|77NEitU01<*o_MAgu>)FoO z=nrdxhy#`mSm_KR>EbANYKQxjYe7lQsIAu!MCS-6R=C)`1*=?~2~1dqxMN5`TgT%g zh0PyU91`;{R#x@mA@p_;WFbTpvCWyXnw`6P<5xaD15?uk#f@j(47plvv{xP-KV6Au ztEIy=e;{iZEpz|p5Prcr(e63`aq>ijH@gm~{3v@=#@~hs92Eq9)T?W>>}OXwqrL8Y z%GU$&y1b1^OxO_zEyhDdjq)Iqi@piqOLcCt`pXulD;Ag@JCK6yuv2pGJzvPF_?fSq z%XAlTUMflNfszMn86yA-L81$qia=id*wj(m*>zD`;igWUdvkT zcX=0!Ej;wiNS;=b3{j|#quG|-3v{Eal0$YxYxA@A?^vC*uFTn_G6Ce@2i}F@IOF;j z8;s=8#Y8KKy5yx#*gHE^yXawcMlYxk_SU;h0d#Xk3!aHHHOW4~QOmg(fyO4r8lSGT zf(OVor55Ypjzb&F4F=QIE6n{To;62Cr^?C5+(+>Cd(&93WoZRfyh17@ZAYK`n2K_> zv(RPQ1YN6N(4~KqmX6;b5?Er{Vp9RjDz$hU4r>*96a$AF$+g}6AP6`>Gt1`emujpp zp{yaOdHmR6(O+Syos93@5IV(Ct-4~k7-s%b|BwNIC$G?(H`mwD$Mbb5VrsT8SydtD z&IC)CV;{!7G+creY?EVSZ58t~Gj)Xhhq;~3*t@zG&5?TAEsDFHi!3Tyk7**xa}vg> z(hc2AGUlaCwN)jlC={*)GL?e2Yn3-0~^y)FW1!6xpNFnTm5L#Y`}cC9L&6uoYudZm>z8KQO5Hyn&d*b0E05N>%<#X|h?VM{otdeZCSyhyoM(BaSwn%0 zuGhjbXql-x4sT!sh9mR zQ*;Zf!n7Bp3E}-bhFjD8hHhb3oO+7xdwx)D4w$U7HUqzdRycj+@RcrQJl099hz4JQ zO{2AfR6*kvuQN}gJ2v_lpUFSD60W_2;~=2OQZV|=*QFai1J_1#oA?FL_9*a1R0hw1 zWeBrO!wQ`=f}s(3Q(n%)&!ypuZds=c`E+L+VlNLO`4~t|>gMd~)OrB&FP6eV3$~ry zcct0IBek8J@*f4xv|tk-9(MG^(@ga#s+#!2+!xby_<9Fu`ueM>XO2VeM2&nh@SogC z+Y**Y<*s@?(E|wVzM6H0RgD)p#WX_HN#>PeTn;Rd$e?vBGBfh#8eY<8Uv82+n{l1Y z>v;N@{>qgZ6)C9}>-S`2lVED+;$c%QUeYx$dTU4IZ- z?%SR~%;@~k>!=a95n952@9{GvYXWqCi61oJ3WYT2`lBWCZyaeZR($rWIy^tNs!na> z<-IJi0NL);?{|O#BBTXdxFVvFwBV8ICKeYqfC~p$s$Gm{Kz6xSrUTFxIDJ>@x&I=l z^v+Ff%$47WnZ5d?c23>L&MCUSi{ZwcoE+aeKDuUiQz-$3g1p?cZ$LJl1r&L#m^JaZ zEO7GU$wQ9KbLU{MtPef9yv6GXK2MD01z?o0ypk=Sl=g%xjXfDu5(Z4B6{=E(6XX0lURFqVZK>W}A#TuSM2UrjH zGc~Gz>U;l%XIb-&qA)?p^Bg89FZ|mbX^TDuW-O!ieap}H@VCbi`W7iIJd)Y{@0`nz zwjNibHI0k^<>ufNVs#&OmfHTe5BvF#5l^AEo9p3u;NNe_1F2d#9B*0sME>znX`g}W zuKxYxxbI|NQ^s?U8P5Wz1Z?|oOPp`rtz;#anFRYp-}j0=UN!ZIDNFGq(BRWZzYQiy z46=P%@!l9{kYOIFb+QQ3L@~Bmo^4V#B~w6H`;HYfoWC#V5;XtG574c2*IC>cl0( zS5gWaSE$87BjCq|f9)^gbmhv@{Iu)XOWwlbSr7u|MKYVkb1+HExqr%c~>VTc7!7jMivTY6GQ*+zdkKj z;!QGLoO;DMQu1ocro3lhAekad8 zdavTj9ZN5?@O%S#wu1`cN^3b)?ME>CpqG6FSn4mw^5D$@eClT;TIRH!*81_rYj@s_ zixX3`Gf4#74T)jaDR>huLUHl&;=(b_0ffHQ4+m#Y)Bp-s$IBE|GNL0*^Ut@1acb_V zsHnIHV9~jZgoVZ&b8pvTOpy~8-`a{(Xf={dIxF+6>R}VR5Ry1&<8{rnOcP7(KeVlZ z<$h-0-1;_FtS|xbJK-7kYFh>BqQE}eC`BOrw@#NX@DY~GN%2WS0(qy#euuwqeV(Im zOwFf2+QHCFUk^8^U5&IBASvy4PMSR|B)V&9u|3%JerEUiZ_5E{mIzcg#{^VV;I}(G z>g=0zUeojVJ&uTeg}A?;!t&eq)y)--41tHI9E*dW7#KcR(dKTip+sPK3eLID|7^K_C#+*(H$^p#e#ZF%8H6Dz*$M81+Ub2Z$|h= z#L$wu3NC0e@|WI?<<DxGO?jOzm+9x}U$b}53avd(${ zave(&mCx+lPAEy_P?rFH#C3I@Zu#&b0XfJB%hX%w9b`O$eYXX{PMWPF8 z1eEXaACC1vXmliX(=a9FiPaK;23dp(OCg;Md*9>LX63UKF-r8I)G@{+7!}_Y30inT z2j8H=vE^jyIl4R?q7M)HdpwWDNu;z|;GZ0a!r2n6k;+sjOK%iDs}9{=dC+=I_#8Ba z1AJ_5$29cjQSQU!TK)@9SnTJO+1@QP|KUrz6`YED^k|~yOSJmI zuR)~*7YTE|la&Vj{;qXorI?zkr@oDqBUCcJr_BBH%Mg1qA5f*0(aW#pfwz$c<)kPYnrw zl36sCNXQ{)EWW%+Y@k1>L-U>#U0Z>5&jZA99_%sKCwWz7*X@T!x=YeC*6Fcw>C1PV6ej*x4_3ccvei?dw66d(T3pa4>Hg9j%-oYsdVnM zyL0X1sZtDzR+)VQTY6&Voq+Ar(T>;`FB06bl4lnO%yWp>u%|u(B#nC=#oq=9Q@FgE zQ)}s@k_+yFizj`qJpk6*jq&mE0(#PgsvW3_XLdYAcK7mTfT3@TbtUZKCwon0!zpNrTDZv!dSz{K04uJ7y+hqyKr_ z1H6M;;RU#8hyXo6-8Q~jz6B?#R%=?!_|~0s9N~tbkTCOJnRvD*ZT|7%>FWsg1z;=I zyuD12cYd6R##9?;`Nk8s-KWzK~zGai-6*lc<6?Vj7~z-xTVE} zxC<%#LW@O=-l*uiW=?UxBtCum8%ZUux>5Pd!>`S>x=4tlqL10$Ui-1XxFVm!ni=WjZuoknTY!7JbNLXMQcdnRkZSC_De-v3 zY)NZ%(U{^RPc3Xd@tRa+Wiu9G5cjTZUcN;==ApInc@Y$AHda6Q-I*3E&Dtv#Vp!Udv5dbjB7dg@Jua&; zK6Zu}TQ~dl{ibbw&iC#M3z<97k{83mh^k)Vg&1Apy<>owl);aq{WVIKyWx!Z}sDX;L3}QT#ll5D_Szvg8 z@|xdf4qw!hpfP04Q0k4iEVPV-b5vVz@ai%cz1j4V;q}E}S}FT?pud=ju5Fe0zB?Gx zD${Ob{N5^d(nB`EZtyRsHFEk3aU9hb?E8V_LS)WQHjf+b(*X8semq3qQ_h4Elr%SE z$dud}LvW0I|JEjE`;G1H^_U@Wd7eth=ss9w70CPi(wqbSJ)sAr7pV!Jq{6Cz9#Wk9 zC&_!vCD`uUMisaYf^z zU)z%BikOaS2}`bQUOu)(|F-Uu;250amtP7%uoiuwUAh=1{zvDA(8jU3XA(P|$oBWH zc)VcaFRxn#2VqA;6G7+j)n(!;)yQP2&1U5^&Pa=dy1iXP>QZKIMeFS@KKUnIzGXyD z&vwhko(4Iu02`E)l+?2{i3O8rZedPee%@6c_;r(E zrR)E__}{-yXazb3mpaj^kQhRZ{il*at#%*@QQb-0-MtFZwJCbAo3EGW7za!KV_hSdhk zIpNpyUGoA$%C3*bjP={V$*hpEoe}inP~3AXgMjdSH?^mdYdd(5`6x<}^+rW_JZU_u zksziQ{5$AIyS+jb3eyWA(?QaD1mm%D?V}A+i{!iC2BcNdGBN1Dux;{+WlNL3jZVev zPUwplvwZ7>1*Mq_42oX9JWL64Nz2U1L76>tyozb38i>#tX!%d>J6yV@xH-^(Y_Zs%!pnikJb(ggCRylurKx4 z9+-ck$1L=$y74tN0>j~#c1nVUUHm3IpQbSf3#3oL>$olCbFF9c{n%XNWRvUUte{O6ywBCLo*AukiD6l34_*-i z$}%BT<9E|uBZ05i0x{mWOGK>#FQ2EC%fZvH`JRs4N1W*-o``vovmDw}4*(h22b$0q)6nzJvN71^bz4-P zU&)^wRj2oA7G*TM(+u@T?bZ%pBKmNfCsK|!eF=3~qzDWVpW|J*Ay}-?gkB;O{-O%N zV?0)U#t+>acRN_r*y3RRy}Ts|H<=NA_Ls`BWk({YB|F7QFvX}(R-doabxG+S?>_a4 znp$%uyTvGF#vjhnCmEM*0;hFJB?BodH5r~aQI>cHZ#(40(m5yjmpkS7#@Gju`V#^O z{DFTiV6Zkq%>=8K!h>^(3Yr}-S{cXOT!sFo2m(p97an$U3M*%&O^J8xc=GvCyS4fd z$PL{=Q(!|AHvlW`3p`t7TOn5ONMdrT#{v8*Jt@0J5 zYA&?gOUI+*PLRo8Q0YegOYj0Mx`lnIso4!9<+OfBs$+5Ld;luaLC6*Zj`03a3CXOj zwE*ljlB2bphe@^<@up8*yT+0q1Zh~If}*1L*&ZCu!vD)1i;Ct@R&eieF z+dDH)HbBlo=uWRsXJ?W!!OtH5iO{n_$m{N9uAC?WelBuv(cSrbr_8Lp?<>xj(LS+` zf=Kk7<5~WkPdR08zG(#I7^PexXLoBi0^N@FR97YTO&j$Fji&fUrbK*ny4Y8G@lbw+ z-Rq4t`wJqZ73#;zm%5aB5p za&mU{_Ku;+3>|%rDok1_VYQlUS7qMl$L)+#p=Xm-{nv0;P>_XQLXj9>A1lyonGAwS}>B9)V;7L@w(+U6o%AE-ez}rIZl%#YEs4gga7ZYCno;We#Tmu`k za5Q$orka$|El+y;@nmASaKO>^oWeWCC$V#H1g4-MX5I`5#`ogW-5Acw41&Jjr>DQa zQ1Y%e;+;htN7Vas$Zyc|efqLB!#tow7=2b_Fl60uf~6}rMvDS%bWlw>3?|@gNS!pZ zy!@luxpf3c-INU@GtzC!d5jJk7EKjZ|$af8$cF$p0eae=e%l9k)-vk6pJ zc@xU|_+@DD^1r!7Xna7w?ZB;}5D&w9ZT6F%g6{Q2`wUD-3z}#;>ws(V5>iqdU8EKV zyA;o(CS1|)#!gUFuhn>!8^u)c%VR35cEoL~Fk@&W#dZsOYF(lP<)j8YCHgRK7;Fik z?Z0J#s-R6nGvkyiB{xXOMZWt0s*Tjj8&^$Tg3hFkD!~B(0ngP6>$VpPoUDI1)6#y3 z1Uu>d0@fdxtW+>cUBAPPC!4t^UAPLWGL!}&GRj&H&}8O|%F?cTEIVSzwGY1CCm&fS z+z31x0Hfklo@w?ZjBR2@jKpK|{#%xm{q!IOv9B6%WL5d5Jk(SlJUBbrPIIkllQ#)x zkolt>8Z0*>t&QpoC z4`Oyxa&3iPBjq>C?sW`8bA^lQ=Kyj!-Rol!a3m46_%`4JZMD4LXGG6o8H}Xi>=O_6 zy-?p>PWiQ2Og}olSr~QV9Y2$}n3!0)i)4z|J>+0NVE^V93Od%((h}2?N>H}Qd4pw) zjaL=nWr4gXz1+FWiM2F3yCU&uzY|Ut8zgQ8t;N;%e`hr@nHI9X(AgQKsedP*&IY~S9Bpl=Y2=&K7~eXdLR|HTTae+o`7;|^(TZ^XDHv=e$u42geNu7W%7~t zj{*pe_o$28I?|7}{A!8s;k3i=cwE-)srb~`9)|84lI1^D}P03e-o)nVm>R*{` zs8{@5NRP|`-N2{=1>XtkDc%motkJ^*ujQumY33t~atW{g2Q6zSKhfU?6jcoQ8q=zg?&3 zXQ*39F70Oe^Ku~i{o{wjHsKib`(}XqyIRFh-w!>pEGnPnn3?|d!>ys6yZN|r*Ou?t z@_+p2s2`*b9Kjq+|LyAje6rKK;KQv0?)m)rm4Cb&sMx#&4J)IC<4jEd<8!}1=m>uJ z@ae9&^8Xlo|6KU}ey=>%Pyl^t!@~5hA70PCq=g-Pv8((#-hm1JG0-*ADLQ=q+W!Hy Cu#{#1 literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark_files/figure-html/accuracy-scatter-estimate-1.png b/R_functions/geneLME_benchmark_files/figure-html/accuracy-scatter-estimate-1.png new file mode 100644 index 0000000000000000000000000000000000000000..51525e5b2a130e0f8c06265b57ed45c0900016e3 GIT binary patch literal 129157 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 z znbToz7BIM@ffkcM*am3hno3mt9P0jRh^p`1O2paSEMWa)-P9?=ddFpfdnD}m%k~G9 zSuT(&xks+tKU%V)KP<$Ej8k2o)28UvL=VzPo?(NB91h z{4gm=v0(PrX(M>&|1u;|ZtOPb7TeY!E%Bso0NLNuT0}wM`v7DQmX0RVIx+zLS?&K} z;&fa9tV5PhI{Bwu6h{gLKK5t&Q2q80ycQL4Bb@~7xt$m=(}uQVl7A73{~JN_+ob_$ zywfyj{Ga9>9Y6H(md(aVFL@$BPg0!t_W2vr*bMx&2(AIDQjs_0|I+{^;0_A>|F|{D zS8d#&Fxcu=Lho| zz&^GT=OFm+gHe9Fubv0_&8*>{C8Unkh& zlJvhH*}s-3_45$1N=Z!r>kz4dscBhvCI2sDjAH|qsw~((iTmGA%)iFimk7+zP0X6t zzsBUHwDg z*x3G^6JFeS*kGbZgZIA{(sNBR1raAsRR<`GhD>;%88u4dV&A`(DUYP|x;_5}#5jbw zw!?54*MV$KywAg)-swTz@&M3@Y341fBKONX(SHNUq#a;gZ+i*KK+hsRXRWGBFodr~ zY2K&O0VYgZF+gmdb9nqKf!M}?sN07ZRR6dVLO$@1)))I;N
Y|mEg^KtUWNKWWG`F@4PlF&zArB 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

Di3LUZ6Y~ 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�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�YRk~{FSk0sxohZEw)Kf6N-Le-?qwf(14yLdZJ*i=K)X#$PbtQ*7C-i#8 zuVWe!D2F(pd1%S+e)Kv*ru6)|_=ME_=_6JoX9C3lF2@%;Ti#B>x`Gru@(%!TYu~22 z<{vE6eW5~Cp6IXrM&8^{L9Jj3p4G#YupsN>jtXL=Aso=r&#LVm@8|0gv4Iz1a+|xI z6PSC#(AN83{2B)ybFkC-DsxMl{Clh8x849X)6ja3ZZn)!f_9(rTl!vo!meR2r=yAP z(q9^O(hA+yHH!V>SG36q2-COIMHYx&1%V`xl$7pm-HrYs%@~%i;sAx+IoEM-3QzzO zY)P2c`ODUp?4a#JiQBz?l;=8i9Huypzwu9+??i!yXOxfiF;cMnp0ryhmRvu~wZ;J< zaJG9AHggBCtSY@$BN~7}NP3GmCFuiFFOf2^(>pGJRG@eEVs{_;=fmOQl!_FiU8nt(xbY|1SUbai<3Sb;p&8p8I5ABJcv6QR97E zhE%rNqj_D;#Y!RFXCY|bp;i6w@iI96fDkJ!2)qp{VoJJ2RNbVc3l%*CmJFvuj|ovB zwARPtsjtBR0Y{V0xki_dy$<)LfbXC|MMOm8_9tP3pfa+FW|Ec#!1gW)cL|>##*>(( zM;t^skxE7kVC`=l^M~aSgeWT0HDWKnFX*Z)*eC*ayCG3gPcusN7#K_h3GFF1rJVwl zK|8svcbOa@DI^qg#55o9`$bJiu|P%D=d4b!Z`#dKkcP9*1~NgS-BfR%>{WG?K3p1S zey2pby4!Q#9$?EtGw*blU^3#js&dNvK>}^J!69k47vM^BEk11U0!jKML-DD%%N0sff{z@LGycKXUP zG`GEY8ee75Tp1>$tUo4fpCIi0s#4Jp7{8Li3l+WckK)o&)Js6RR2_~nxAHf&L_AMe zrgz|IrTu0lKmwpC6!m)~l=sj|%6{Z%+9RuPVzw8eSOqb{X0_7QPJ4?C*r!dfC{O&t z-b7ymGp|?89_-)_g~{O@=mevqX=eWWP!i+A#GV@o!m-uTvWc5@QaR)fo@-R)H*B5w6Q62(%e*jpu?W|| zye6}4Bg+{-3h7qvPr6C5o-2SdN%UQrx`IyLIOAF&qxB+-k2k90=G0^wM>Gp*cN)x# z+nq*(F&Fk#KUe7Kc8RkOemGqV*5i=gf#0q%dH^{XfOk##<%16F+EYCA5NQMQSV>=9 zkXJTrqk_aR;YuZ!HvsMfiv4W^nC0XPaC3oqE$fTFtXjw)0x_%$5p6v*$=t#!h!g-KRvt|1(Zn*npao0%2 zq(3?Y(pKfK1AQ0tTfzeNJdnjWunHwh1!?Pv&4HVJo0PE3$$ji(ALiqyM+}sR?q}7W zlr2u+rU7@5@B?bl|6IKD=*+6;Vyzvjfau=F1GMWGnDw*SR8`fX8Ia@mXAFKxexyGX zgbsaQ75P_^9M^89AU?^ z(EmKdymo{q0kh7$Qm=mnzK9qu5Xe`v06DD3D%*B-8ctDn%sP{2a)t6_;?`~O%y<>z;{anIPCy%hex`o~od z=yS!0r$^2z|Hs?c`*fALP5~fQpfX)*4Ws_|KV-#qoBscwS?Az?b>{zB&#dgPgoh>< Smnus_z(-pHrA|0!ara-JlaV3- literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark_files/figure-html/accuracy-scatter-t-1.png b/R_functions/geneLME_benchmark_files/figure-html/accuracy-scatter-t-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8acca548409b78deb89a9f6d3215940369150858 GIT binary patch literal 146667 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

P)VQyPBy@~?ddly_62QQxB2 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℞w~Uj^q|C6A$qAx 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 literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark_files/figure-html/bench-headtohead-plot-1.png b/R_functions/geneLME_benchmark_files/figure-html/bench-headtohead-plot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0227bd124aef89b5fa341afd28bd5f88dadcc8 GIT binary patch literal 63091 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

B7fJFcig+boh}buvp2;xv-FT3H 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 literal 0 HcmV?d00001 diff --git a/R_functions/geneLME_benchmark_files/figure-html/bench-selective-plot-1.png b/R_functions/geneLME_benchmark_files/figure-html/bench-selective-plot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e69df57000169fc90b7710e147016893b933af GIT binary patch literal 78968 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 z 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 0) { + stop(paste0("Variable(s) not found in targets: ", paste(missing_vars, collapse = ", "))) + } + + result <- lapply(seq_along(contrast_vars), function(i) { + v <- contrast_vars[i] + lvls <- sort(unique(as.character(targets[[v]]))) + spec <- data.frame(level = lvls, stringsAsFactors = FALSE) + + if (i == 1) { + message( + "'", v, "' — primary contrast variable (contrast_vars[1] in geneLME).\n", + length(lvls), " levels (alphabetical order = position order for contrasts_primary vectors):\n", + paste(seq_along(lvls), lvls, sep = ". ", collapse = "\n"), "\n", + "→ contrast vectors passed to contrasts_primary must have length ", length(lvls), ",\n", + " with each element weighted by position (e.g. '", lvls[length(lvls)], " vs ", lvls[1], + "' = c(", paste(c(-1, rep(0, length(lvls) - 2), 1), collapse = ", "), "))." + ) + } else { + message( + "'", v, "' — secondary 'by' grouping variable (contrast_vars[", i, "] in geneLME).\n", + length(lvls), " levels available:\n", + paste(seq_along(lvls), lvls, sep = ". ", collapse = "\n"), "\n", + "→ pass a subset of these levels to contrast_var_2_levels in geneLME() to restrict\n", + " which groups the primary contrasts are computed within." + ) + } + + spec + }) + + names(result) <- contrast_vars + return(result) + } +} + + +######################################################## +# geneLME_fit +# Core per-gene fitting function. Called inside future_lapply. +# Receives only the minimal pre-extracted data needed for one gene, +# not the full EList object. +######################################################## + +geneLME_fit <- + function(gene_name, + expression_vec, # named numeric vector: expression values for this gene + weight_vec, # named numeric vector or NULL: per-sample weights + targets, # data.frame: sample metadata (dat$targets) + formula_str, # character: formula RHS e.g. "~ treatment*visit + (1|ptID)" + run_contrast, + contrast_vars, + contrast_var_2_levels, + contrast_spec, # data.frame (contrast_ref / contrast_lvl) or NULL + contrasts_primary, + contrasts_secondary) { + + result <- tryCatch({ + + # --- BUILD MODEL DATA --- + model_data <- targets + model_data$expression <- expression_vec + + # --- RECONSTRUCT FORMULA LOCALLY --- + # Built from the raw string so its enclosing environment is this call frame. + # lmer resolves 'weight_vec' and other names in local scope — no + # environment stripping needed, no locked-environment errors. + formula_obj <- as.formula(paste("expression", formula_str)) + + # --- FIT MODEL --- + if (is.null(weight_vec)) { + lme_i <- lmer( + formula_obj, + data = model_data, + control = lmerControl(calc.derivs = FALSE) + ) + } else { + lme_i <- lmer( + formula_obj, + weights = weight_vec, + data = model_data, + control = lmerControl(calc.derivs = FALSE) + ) + } + + if (isSingular(lme_i)) stop("Boundary (singular) fit") + + # --- EXTRACT: AIC --- + aic_res <- data.frame(gene = gene_name, AIC = AIC(lme_i)) + + # --- EXTRACT: ANOVA & coefficient summary --- + lme_i_anova <- car::Anova(lme_i) %>% broom.mixed::tidy() + lme_i_summary <- summary(lme_i)$coefficients %>% + as.data.frame() %>% + rownames_to_column("variable") + + # --- BUILD ANOVA TABLE --- + lme_i_anova_tab <- lme_i_anova %>% + rowwise() %>% + mutate( + gene = gene_name, + model_status = "success", + predictor_class = case_when( + grepl(":", term) ~ "interaction", + is.numeric(model_data[[term]]) ~ "continuous", + !is.numeric(model_data[[term]]) & length(unique(model_data[[term]])) == 2 ~ "two-level-categorical", + !is.numeric(model_data[[term]]) & length(unique(model_data[[term]])) > 2 ~ "multi-level-categorical" + ), + Estimate_source = case_when( + predictor_class %in% c("continuous", "two-level-categorical") ~ "lme_summary", + predictor_class == "multi-level-categorical" ~ "seeContrasts", + predictor_class == "interaction" & length(grep(":", lme_i_summary$variable)) == 1 ~ "lme_summary", + predictor_class == "interaction" & length(grep(":", lme_i_summary$variable)) > 1 ~ "seeContrasts" + ), + Estimate = case_when( + predictor_class == "continuous" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], + predictor_class == "two-level-categorical" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], + # Guard: grep(":", ...) returns integer(0) when the model has no interaction + # coefficient (e.g. a main-effects-only formula). [[1]] on integer(0) errors, + # so fall through to .default = NA_real_ via the length check. + predictor_class == "interaction" & Estimate_source == "lme_summary" & + length(grep(":", lme_i_summary$variable)) >= 1 ~ + lme_i_summary$Estimate[grep(":", lme_i_summary$variable)[1L]], + .default = NA_real_ + ), + Estimate_SE = case_when( + predictor_class == "continuous" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], + predictor_class == "two-level-categorical" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], + predictor_class == "interaction" & Estimate_source == "lme_summary" & + length(grep(":", lme_i_summary$variable)) >= 1 ~ + lme_i_summary$`Std. Error`[grep(":", lme_i_summary$variable)[1L]], + .default = NA_real_ + ) + ) + + # --- CONTRASTS --- + if (isTRUE(run_contrast)) { + + is_interaction <- any(grepl(":", contrast_vars)) + + if (is_interaction) { + + # ---- BRANCH A: Interaction contrast via explicit contrast_spec ---- + # contrast_vars is a single "var_a:var_b" string; contrast_spec is always + # provided (enforced by geneLME() validation). + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + # Compute EMM object first so we can extract level ordering directly from + # emmeans — this guarantees contrast vector indices align with what emmeans + # uses internally. + emm_obj <- emmeans( + lme_i, + spec = as.formula(paste("~", var_a, "*", var_b)), + data = model_data + ) + + # Extract interaction level labels in the exact order emmeans uses them. + emm_summ <- as.data.frame(summary(emm_obj)) + contrast_lvls <- paste(emm_summ[[var_a]], emm_summ[[var_b]]) + + default_vec <- rep(0, length(contrast_lvls)) + names(default_vec) <- contrast_lvls + + # Validate that all spec values exist as interaction levels + bad_ref <- setdiff(contrast_spec$contrast_ref, contrast_lvls) + bad_lvl <- setdiff(contrast_spec$contrast_lvl, contrast_lvls) + if (length(bad_ref) > 0 || length(bad_lvl) > 0) { + stop(paste0( + "contrast_spec values not found in interaction levels of '", contrast_vars, "': ", + paste(c(bad_ref, bad_lvl), collapse = ", ") + )) + } + + # Build named contrast vector list — one entry per row of contrast_spec. + # Use an empty list and assign by name so the list contains exactly + # nrow(contrast_spec) named non-NULL entries. (Pre-allocating with + # vector("list", n) and assigning by name appends rather than fills, + # leaving the integer-indexed slots as NULL.) + # + # Swap-tolerance: contrast_ref receives -1 and contrast_lvl receives +1. + # If the user has manually swapped ref/lvl in a given row (placing the + # "higher" level-index cell as contrast_ref), the contrast vector and its + # estimate are simply sign-flipped relative to the canonical direction — + # no error occurs and the result is statistically valid. + contrasts_list <- list() + for (k in seq_len(nrow(contrast_spec))) { + cv <- default_vec + cv[which(names(cv) == contrast_spec$contrast_ref[k])] <- -1 + cv[which(names(cv) == contrast_spec$contrast_lvl[k])] <- 1 + contrast_name <- paste(contrast_spec$contrast_lvl[k], + contrast_spec$contrast_ref[k], sep = " - ") + contrasts_list[[contrast_name]] <- cv + } + + emm_1st_A <- contrast(emm_obj, method = contrasts_list, adjust = "none") + + # Build a lookup from contrast name → ref/lvl for joining onto first-order results. + # The contrast name is constructed as "lvl - ref" (same pattern used above when + # building contrasts_list), so it matches the 'contrast' column emmeans returns. + spec_lookup <- data.frame( + contrast = paste(contrast_spec$contrast_lvl, + contrast_spec$contrast_ref, sep = " - "), + contrast_ref = contrast_spec$contrast_ref, + contrast_lvl = contrast_spec$contrast_lvl, + stringsAsFactors = FALSE + ) + + if (!is.null(contrasts_secondary)) { + # suppressWarnings: emmeans internally calls lmer on the first-order contrast + # estimates when computing second-order contrasts; this can emit a benign + # lme4 scale warning when the estimate/SE values differ in magnitude from + # the original predictors. The output is unaffected — the warning is cosmetic. + emm_2nd_A <- suppressWarnings( + contrast(emm_1st_A, method = contrasts_secondary, adjust = "none") + ) + contrast_res <- bind_rows( + # First-order: join ref/lvl from spec_lookup by contrast name + as.data.frame(emm_1st_A) %>% + mutate(contrast_order = "first_order") %>% + left_join(spec_lookup, by = "contrast"), + # Second-order: contrasts-of-contrasts have no single ref/lvl pair + as.data.frame(emm_2nd_A) %>% + mutate(contrast_order = "second_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_) + ) %>% mutate(gene = gene_name) + } else { + contrast_res <- as.data.frame(emm_1st_A) %>% + mutate(contrast_order = "first_order") %>% + left_join(spec_lookup, by = "contrast") %>% + mutate(gene = gene_name) + } + + } else { + + # ---- BRANCH B: Non-interaction ---- + spec_formula <- as.formula(paste("~", paste(contrast_vars, collapse = "|"))) + + by_list <- if (length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { + setNames(list(contrast_var_2_levels), contrast_vars[2]) + } else { + NULL + } + + emm_1st <- emmeans(lme_i, spec = spec_formula, at = by_list, data = model_data) %>% + contrast(method = contrasts_primary, adjust = "none") + + if (!is.null(contrasts_secondary)) { + # suppressWarnings: same benign lme4 scale warning as Branch A second-order step. + emm_2nd <- suppressWarnings( + contrast(emm_1st, method = contrasts_secondary, adjust = "none") + ) + contrast_res <- bind_rows( + # Branch B uses named contrast vectors, not a ref/lvl spec — set NA for both orders + as.data.frame(emm_1st) %>% + mutate(contrast_order = "first_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_), + as.data.frame(emm_2nd) %>% + mutate(contrast_order = "second_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_) + ) %>% mutate(gene = gene_name) + } else { + contrast_res <- as.data.frame(emm_1st) %>% + mutate(contrast_order = "first_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_, + gene = gene_name) + } + } + + } else { + contrast_res <- NULL + } + + list( + aic = aic_res, + anova = lme_i_anova_tab, + contrasts = contrast_res, + model_status = setNames("success", gene_name) + ) + + }, error = function(e) { + err_msg <- conditionMessage(e) + list( + aic = data.frame(gene = gene_name, AIC = NA_real_), + anova = data.frame( + term = NA_character_, + statistic = NA_real_, + df = NA_real_, + p.value = NA_real_, + gene = gene_name, + model_status = err_msg, + predictor_class = NA_character_, + Estimate_source = NA_character_, + Estimate = NA_real_, + Estimate_SE = NA_real_ + ), + contrasts = data.frame( + contrast = NA_character_, + estimate = NA_real_, + SE = NA_real_, + df = NA_real_, + t.ratio = NA_real_, + p.value = NA_real_, + contrast_order = NA_character_, + contrast_ref = NA_character_, + contrast_lvl = NA_character_, + gene = gene_name + ), + model_status = setNames(err_msg, gene_name) + ) + }) + + return(result) + } + + +######################################################## +# geneLME_compiler +# Aggregates list of per-gene results into named result tables, +# then appends FDR-adjusted p-values within each grouping unit. +# +# FDR grouping strategy: +# lme_anova: adjust within each model term (across all genes). +# Each term's p-values form one adjustment set. +# lme_contrast: adjust within each contrast x contrast_order combination +# (across all genes). Branch B contrast labels already encode +# the 'by' variable level (e.g. "TrtC vs TrtA, visit = V2"), +# so grouping by contrast alone is sufficient. +# NA p-values (failed gene models) are preserved as NA in p.value_adj. +######################################################## + +geneLME_compiler <- function(fit, fdr_method = "BH", contrast_spec = NULL) { + + lme_anova <- map_dfr(fit, "anova") %>% + group_by(term) %>% + mutate(p.value_adj = p.adjust(p.value, method = fdr_method)) %>% + ungroup() + + lme_contrast_raw <- map_dfr(fit, "contrasts") + lme_contrast <- if (ncol(lme_contrast_raw) > 0 && + all(c("contrast", "contrast_order") %in% colnames(lme_contrast_raw))) { + lme_contrast_raw %>% + group_by(contrast, contrast_order) %>% + mutate(p.value_adj = p.adjust(p.value, method = fdr_method)) %>% + ungroup() + } else { + lme_contrast_raw # no contrasts run; return as-is (empty or NULL-row stub) + } + + list( + lme_anova = lme_anova, + lme_contrast = lme_contrast, + lme_fit = map_dfr(fit, "aic"), + lme_err = map_chr(fit, "model_status"), + contrast_spec = contrast_spec # indexed spec; NULL when no contrasts run + ) +} + + +######################################################## +# geneLME_dispatch +# Runs future_lapply with explicit global declaration to prevent +# future's automatic environment scan from capturing large objects. +# +# Key design decisions: +# 1. Iterate over an integer index — a plain integer sequence carries +# no environment baggage for future to scan. +# 2. All shared objects passed via future.globals, bypassing automatic +# scanning entirely. +######################################################## + +geneLME_dispatch <- function(gene_data_list, + targets_df, + formula_str, + run_contrast, + contrast_vars, + contrast_var_2_levels, + contrast_spec, + contrasts_primary, + contrasts_secondary) { + n_genes <- length(gene_data_list) + + future_lapply( + seq_len(n_genes), + FUN = function(i) { + gene_data <- gene_data_list[[i]] + geneLME_fit( + gene_name = gene_data$gene_name, + expression_vec = gene_data$expression_vec, + weight_vec = gene_data$weight_vec, + targets = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrast_spec = contrast_spec, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary + ) + }, + future.globals = list( + gene_data_list = gene_data_list, + targets_df = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrast_spec = contrast_spec, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary, + geneLME_fit = geneLME_fit + ), + future.packages = c("lme4", "emmeans", "car", "broom.mixed", "dplyr", "tibble"), + future.seed = TRUE + ) +} + + +######################################################## +# geneLME +# User-facing wrapper: validates inputs, sets up parallel plan, +# pre-extracts per-gene data, dispatches geneLME_fit in parallel. +######################################################## + +geneLME <- + function(dat, + formula_str, + model_weights = NULL, + run_contrast = NULL, + contrast_vars = NULL, + contrast_var_2_levels = NULL, + contrast_spec = NULL, # data.frame(contrast_ref, contrast_lvl) or NULL + # required when contrast_vars contains ":" + contrasts_primary = NULL, + contrasts_secondary = NULL, + fdr_method = "BH", # any method accepted by p.adjust() + n_cores = NULL) { + + # --- PRE-FLIGHT VALIDATION --- + + # Build a local formula object solely for variable checking — never + # passed to workers. Workers reconstruct the formula from formula_str. + formula_obj_local <- as.formula(paste("expression", formula_str)) + + # Initialise indexed_contrast_spec to NULL; populated inside the contrast + # validation block below (Branch A or Branch B) and passed to the compiler. + indexed_contrast_spec <- NULL + + # 1. Formula variables present in targets + required_vars <- all.vars(formula_obj_local) + required_vars <- required_vars[required_vars != "expression"] + + missing_vars <- setdiff(required_vars, colnames(dat$targets)) + if (length(missing_vars) > 0) { + stop(paste( + "The following variables in the formula are missing from dat$targets:", + paste(missing_vars, collapse = ", ") + )) + } + + # 2. Weights alignment + if (isTRUE(model_weights)) { + if (is.null(dat$weights)) { + stop("model_weights = TRUE but dat$weights is NULL.") + } + if (!identical(dim(dat$weights), dim(dat$E))) { + stop("Dimensions of dat$weights do not match dat$E.") + } + } + + # 3. Contrast variables and spec + if (isTRUE(run_contrast)) { + + if (is.null(contrast_vars)) { + stop("run_contrast = TRUE but contrast_vars is NULL.") + } + + is_interaction <- any(grepl(":", contrast_vars)) + + # 3a. Formula-vs-contrast_vars consistency check. + # Uses terms() so that both "a*b" and "a:b" formula syntax are handled correctly — + # "a*b" expands to include "a:b" in term labels, so both forms are detected. + formula_terms <- attr(terms(formula_obj_local), "term.labels") + + if (is_interaction) { + # For interaction contrasts, verify the interaction term is actually in the model. + # emmeans will silently run contrasts on additive margins if the interaction is absent, + # which is statistically misleading. + ixn_term <- contrast_vars[grep(":", contrast_vars)][1] # e.g. "treatment:visit" + if (!ixn_term %in% formula_terms) { + stop(paste0( + "contrast_vars specifies an interaction contrast for '", ixn_term, "', ", + "but this interaction term is not present in formula_str.\n", + "Either add the interaction to the formula (e.g. '~ treatment * visit + ...') ", + "or change contrast_vars to a non-interaction term." + )) + } + } else { + # For non-interaction contrasts, verify each contrast variable is in the formula + # as a main effect. Warn (not error) in case it is part of an interaction only. + for (cv in contrast_vars) { + if (!cv %in% formula_terms) { + warning(paste0( + "contrast_vars includes '", cv, "' but this term does not appear as a ", + "main effect in formula_str. Contrasts may be computed from interaction ", + "margins only — verify this is the intended model structure." + )) + } + } + } + + # 3b. contrast_spec validation (required for interaction contrasts) + if (is_interaction && is.null(contrast_spec)) { + stop(paste0( + "contrast_vars specifies an interaction contrast ('", contrast_vars, "') ", + "but contrast_spec is NULL.\n", + "Use geneLME_contrast_spec(dat$targets, contrast_vars = '", contrast_vars, + "') to generate a template, filter it to your contrasts of interest, ", + "then pass it as contrast_spec." + )) + } + + if (!is.null(contrast_spec)) { + if (!is.data.frame(contrast_spec)) { + stop("contrast_spec must be a data.frame.") + } + if (!all(c("contrast_ref", "contrast_lvl") %in% colnames(contrast_spec))) { + stop("contrast_spec must have columns 'contrast_ref' and 'contrast_lvl'.") + } + if (!is_interaction) { + warning("contrast_spec is provided but contrast_vars contains no interaction term (':'). ", + "contrast_spec is designed for interaction contrasts — did you mean to use contrasts_primary?") + } + + # Build the indexed contrast_spec that will be attached to the return value. + # contrast_index here is simply 1:nrow(contrast_spec) — the actual row position + # within the filtered spec passed by the user. This is what contrasts_secondary + # vectors must index into (not any index from the full unfiltered template). + indexed_contrast_spec <- contrast_spec %>% + mutate(contrast_index = seq_len(n())) %>% + select(contrast_index, everything()) + + # Print the indexed spec as a reminder whenever contrasts_secondary is provided. + if (is_interaction && !is.null(contrasts_secondary)) { + n_first <- nrow(contrast_spec) + message( + "contrasts_secondary will be applied to the first-order interaction contrasts ", + "in the order they appear in contrast_spec (", n_first, " contrasts):\n", + paste(seq_len(n_first), + paste(contrast_spec$contrast_lvl, contrast_spec$contrast_ref, sep = " - "), + sep = ". ", collapse = "\n"), + "\nEnsure contrasts_secondary vectors have length ", n_first, + ", with each element corresponding to the contrast at that position.", + "\nThe indexed contrast_spec is returned as $contrast_spec in the output." + ) + + # Soft-fail: wrong-length vectors produce silent NAs deep inside geneLME_fit(). + # Catch this here and return early with only $contrast_spec populated so the + # user has the indexed reference they need to fix their vectors. + bad_lens <- sapply(contrasts_secondary, length) + bad_names <- names(bad_lens)[bad_lens != n_first] + if (length(bad_names) > 0) { + message( + "\ncontrasts_secondary vector(s) have wrong length — returning early without running models.\n", + "Expected length ", n_first, " (= nrow(contrast_spec) after filtering).\n", + "Offending vector(s):\n", + paste0(" '", bad_names, "': length ", bad_lens[bad_names], collapse = "\n"), "\n\n", + "Common cause: vectors were built against nrow() of the full unfiltered\n", + "spec_template rather than nrow() of the filtered contrast_spec passed here.\n", + "Use $contrast_spec in the returned object to re-specify your secondary contrast vectors:\n", + " each vector must have length ", n_first, ", one element per row of $contrast_spec." + ) + return(invisible(list( + lme_anova = NULL, + lme_contrast = NULL, + lme_fit = NULL, + lme_err = NULL, + contrast_spec = indexed_contrast_spec + ))) + } + } + } + + # 3c. contrast_vars present in targets (split on ":" for interaction) + vars_to_check <- unique(unlist(strsplit(contrast_vars, ":"))) + missing_contrast_vars <- setdiff(vars_to_check, colnames(dat$targets)) + if (length(missing_contrast_vars) > 0) { + stop(paste( + "contrast_vars not found in dat$targets:", + paste(missing_contrast_vars, collapse = ", ") + )) + } + + # 3d. contrast_var_2_levels validation (Branch B only) + if (!is_interaction && length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { + actual_levels <- unique(as.character(dat$targets[[contrast_vars[2]]])) + invalid_levels <- setdiff(contrast_var_2_levels, actual_levels) + if (length(invalid_levels) > 0) { + stop(paste0( + "Levels specified for '", contrast_vars[2], + "' not found in data: ", paste(invalid_levels, collapse = ", ") + )) + } + } + + # 3e. Branch B: build indexed contrast_spec from contrasts_primary names, + # and soft-fail on wrong-length contrasts_secondary vectors. + if (!is_interaction && !is.null(contrasts_primary)) { + indexed_contrast_spec <- data.frame( + contrast_index = seq_along(contrasts_primary), + contrast_name = names(contrasts_primary), + stringsAsFactors = FALSE + ) + + if (!is.null(contrasts_secondary)) { + n_primary <- length(contrasts_primary) + bad_lens <- sapply(contrasts_secondary, length) + bad_names <- names(bad_lens)[bad_lens != n_primary] + if (length(bad_names) > 0) { + message( + "\ncontrasts_secondary vector(s) have wrong length — returning early without running models.\n", + "Expected length ", n_primary, " (= number of contrasts_primary vectors).\n", + "Offending vector(s):\n", + paste0(" '", bad_names, "': length ", bad_lens[bad_names], collapse = "\n"), "\n\n", + "Use $contrast_spec in the returned object to confirm the primary contrast ordering:\n", + " each contrasts_secondary vector must have length ", n_primary, + ", one element per row of $contrast_spec." + ) + return(invisible(list( + lme_anova = NULL, + lme_contrast = NULL, + lme_fit = NULL, + lme_err = NULL, + contrast_spec = indexed_contrast_spec + ))) + } + } + } + } + + # 4. fdr_method must be a recognised p.adjust method + valid_fdr_methods <- p.adjust.methods # exported character vector from stats + if (!fdr_method %in% valid_fdr_methods) { + stop(paste0( + "'", fdr_method, "' is not a valid p.adjust method.\n", + "Choose one of: ", paste(valid_fdr_methods, collapse = ", ") + )) + } + + # 5. Warn on likely ID columns used as predictors + for (v in required_vars) { + if (is.character(dat$targets[[v]]) && + length(unique(dat$targets[[v]])) > nrow(dat$targets) / 2) { + warning(paste0( + "Variable '", v, "' has many unique string values — is it an ID column rather than a predictor?" + )) + } + } + + message("Input validation passed. Launching parallel LME fits...") + + # --- PRE-SLICE INTO PER-GENE LIST --- + W_mat <- if (isTRUE(model_weights)) dat$weights else NULL + + gene_data_list <- lapply(rownames(dat$E), function(g) { + list( + gene_name = g, + expression_vec = dat$E[g, ], + weight_vec = if (!is.null(W_mat)) W_mat[g, ] else NULL + ) + }) + + targets_df <- dat$targets + + # --- PARALLEL PLAN --- + workers <- if (is.null(n_cores)) max(1L, parallel::detectCores() - 4L) else n_cores + plan(multisession, workers = workers) + on.exit(plan(sequential), add = TRUE) + + # --- DISPATCH via clean-scope helper --- + fit_results <- geneLME_dispatch( + gene_data_list = gene_data_list, + targets_df = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrast_spec = contrast_spec, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary + ) + + return(geneLME_compiler(fit_results, fdr_method = fdr_method, + contrast_spec = indexed_contrast_spec)) + } + + +######################################################## +# Testing (see geneLME_test.R for full test suite) +######################################################## + +# --- Branch A: interaction contrast via contrast_spec --- +# # Step 1: generate level reference template +# spec_template <- geneLME_contrast_spec( +# targets = dat$targets, +# contrast_vars = "treatment:visit" # interaction string +# ) +# # Step 2: filter to contrasts of interest +# my_spec <- spec_template %>% +# dplyr::filter(...) # e.g. same-visit cross-treatment, or within-treatment longitudinal +# +# test_mods_A <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = "treatment:visit", # must match an interaction term in formula_str +# contrast_spec = my_spec, # required for interaction contrasts +# n_cores = 10 +# ) +# +# # Optional: second-order contrasts on top of Branch A first-order contrasts. +# # Vectors must have length == nrow(my_spec), ordered to match my_spec rows. +# # geneLME() will print the numbered list of first-order contrasts at validation time. +# test_mods_A2 <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = "treatment:visit", +# contrast_spec = my_spec, +# contrasts_secondary = list( +# "TrtA vs TrtB: V3 minus V2 effect" = c(1, 0, -1, 0, 0, 0), +# "TrtA vs TrtC: V3 minus V2 effect" = c(0, 1, 0, -1, 0, 0) +# ), +# n_cores = 10 +# ) + +# --- Branch B: non-interaction --- +# # Step 1 (optional): inspect available levels for each contrast variable +# geneLME_contrast_spec(dat$targets, contrast_vars = "treatment") # reference only +# # Treatment levels (alphabetical): TrtA, TrtB, TrtC +# # contrasts_primary vectors have length 3: positions = [TrtA, TrtB, TrtC] +# +# test_mods_B <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment + visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = c("treatment", "visit"), +# contrast_var_2_levels = c("V2", "V3"), +# contrasts_primary = list("TrtC vs TrtA" = c(-1, 0, 1), +# "TrtB vs TrtA" = c(-1, 1, 0)), +# contrasts_secondary = list("TrtC vs TrtB" = c(1, -1)), +# n_cores = 10 +# ) diff --git a/R_functions/geneLME_dev2.R b/R_functions/geneLME_dev2.R new file mode 100644 index 0000000..f947290 --- /dev/null +++ b/R_functions/geneLME_dev2.R @@ -0,0 +1,908 @@ + +######################################################## +# Scalable custom gene LMEs with contrast specification +######################################################## +# Dev2 changes from geneLME.R (2026-02-20): +# 1. Singular fit → warning flag instead of error. +# isSingular() no longer stops the model; instead model_status is +# set to "singular_fit" and results are returned with a flag column. +# Users can filter on model_status downstream. +# 2. Branch A contrast structures pre-computed outside the per-gene loop. +# geneLME_build_contrast_args() runs once in geneLME() before the +# parallel stage and returns contrasts_list (named vector list) and +# spec_lookup (ref/lvl join table). Workers receive these ready-made +# objects instead of rebuilding them from contrast_spec on every gene. +######################################################## + + +######################################################## +# geneLME_contrast_spec +# Helper: returns a reference template of available contrast levels, +# formatted for use with the contrast_spec argument of geneLME(). +# +# Two modes depending on whether contrast_vars contains ":": +# +# Interaction mode (e.g. contrast_vars = "treatment:visit"): +# contrast_vars must be a single "var_a:var_b" string. +# Returns a data.frame with columns contrast_ref and contrast_lvl, +# one row per pairwise combination of interaction-level strings. +# Filter this to the contrasts of interest, then pass as +# contrast_spec to geneLME(). +# +# Single-variable mode (e.g. contrast_vars = c("treatment", "visit")): +# contrast_vars is a character vector of one or more plain variable +# names (no ":"). Returns a named list, one element per variable, +# each a data.frame with a single column 'level' listing the sorted +# unique values. The message printed for each variable explains how +# it maps to geneLME() arguments: +# - The first variable in contrast_vars → contrast_vars[1] in +# geneLME(); its levels define the length and position order of +# contrasts_primary vectors. +# - Additional variables → contrast_vars[2], used as the 'by' +# grouping variable; filter its levels via contrast_var_2_levels. +# This list is a reference only — it is not passed to geneLME(). +######################################################## + +geneLME_contrast_spec <- function(targets, contrast_vars) { + + has_interaction <- any(grepl(":", contrast_vars)) + has_plain <- any(!grepl(":", contrast_vars)) + + # Disallow mixing interaction and plain variable names in one call + if (has_interaction && has_plain) { + stop( + "contrast_vars mixes interaction terms (containing ':') and plain variable names.\n", + "Call geneLME_contrast_spec() separately for interaction and non-interaction variables." + ) + } + + if (has_interaction) { + + # ---- Interaction mode: must be a single "var_a:var_b" string ---- + if (length(contrast_vars) != 1) { + stop("Interaction mode requires a single 'var_a:var_b' string in contrast_vars.") + } + + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + if (!var_a %in% colnames(targets)) stop(paste0("Variable '", var_a, "' not found in targets.")) + if (!var_b %in% colnames(targets)) stop(paste0("Variable '", var_b, "' not found in targets.")) + + # Coerce each variable to a factor, preserving any existing factor level order. + # If the column is already a factor, levels() preserves the user-defined ordering. + # If it is a plain character vector, we impose alphabetical order explicitly. + # This ensures the interaction level string ordering — and therefore which member + # of each pair lands in contrast_ref vs contrast_lvl — is fully deterministic and + # consistent between geneLME_contrast_spec() and emmeans' internal ordering. + fac_a <- if (is.factor(targets[[var_a]])) targets[[var_a]] else factor(targets[[var_a]], levels = sort(unique(targets[[var_a]]))) + fac_b <- if (is.factor(targets[[var_b]])) targets[[var_b]] else factor(targets[[var_b]], levels = sort(unique(targets[[var_b]]))) + + # Build all interaction level strings in the same order emmeans will use. + # interaction() with two ordered factors produces a factor whose levels are + # var_a[1]:var_b[1], var_a[1]:var_b[2], ..., var_a[n]:var_b[m] — matching + # emmeans' default grid ordering (vary the rightmost variable fastest). + ixn_lvls <- levels(interaction(fac_a, fac_b, sep = " ")) + + # combn() traverses ixn_lvls in order, so for every pair the first element + # (contrast_ref) is always at a lower level-index than the second (contrast_lvl). + # This guarantees: level(var_a in ref) <= level(var_a in lvl) AND + # level(var_b in ref) <= level(var_b in lvl). + # Users may freely swap ref/lvl in any row after filtering — geneLME() and + # geneLME_fit() handle either direction correctly (the sign of the contrast + # estimate will flip, but no error will occur). + # Row-position indices for contrasts_secondary construction are added by geneLME() + # to its $contrast_spec output element after the user's filtered spec is received. + pairs <- combn(ixn_lvls, 2, simplify = FALSE) + spec <- data.frame( + contrast_ref = sapply(pairs, `[[`, 1), + contrast_lvl = sapply(pairs, `[[`, 2), + stringsAsFactors = FALSE + ) + + message( + nrow(spec), " pairwise combinations generated for '", contrast_vars, "'.\n", + "Filter this data.frame to your contrasts of interest, then pass as contrast_spec to geneLME().\n", + "geneLME() will attach an indexed copy of contrast_spec to its output ($contrast_spec)\n", + "showing the row-position index used for contrasts_secondary vector construction." + ) + + return(spec) + + } else { + + # ---- Single/multi-variable mode ---- + # Validate all variables exist + missing_vars <- setdiff(contrast_vars, colnames(targets)) + if (length(missing_vars) > 0) { + stop(paste0("Variable(s) not found in targets: ", paste(missing_vars, collapse = ", "))) + } + + result <- lapply(seq_along(contrast_vars), function(i) { + v <- contrast_vars[i] + lvls <- sort(unique(as.character(targets[[v]]))) + spec <- data.frame(level = lvls, stringsAsFactors = FALSE) + + if (i == 1) { + message( + "'", v, "' — primary contrast variable (contrast_vars[1] in geneLME).\n", + length(lvls), " levels (alphabetical order = position order for contrasts_primary vectors):\n", + paste(seq_along(lvls), lvls, sep = ". ", collapse = "\n"), "\n", + "→ contrast vectors passed to contrasts_primary must have length ", length(lvls), ",\n", + " with each element weighted by position (e.g. '", lvls[length(lvls)], " vs ", lvls[1], + "' = c(", paste(c(-1, rep(0, length(lvls) - 2), 1), collapse = ", "), "))." + ) + } else { + message( + "'", v, "' — secondary 'by' grouping variable (contrast_vars[", i, "] in geneLME).\n", + length(lvls), " levels available:\n", + paste(seq_along(lvls), lvls, sep = ". ", collapse = "\n"), "\n", + "→ pass a subset of these levels to contrast_var_2_levels in geneLME() to restrict\n", + " which groups the primary contrasts are computed within." + ) + } + + spec + }) + + names(result) <- contrast_vars + return(result) + } +} + + +######################################################## +# geneLME_build_contrast_args +# Pre-computes Branch A contrast structures once, before parallel dispatch. +# +# Called by geneLME() when contrast_vars contains ":". +# Returns a list with two elements that are passed directly to workers: +# +# $contrasts_list — named list of contrast vectors, one per row of +# contrast_spec. Each vector has length == number of interaction cells, +# named by emmeans level string ("TrtA V1", "TrtB V2", ...). +# contrast_ref cell receives -1; contrast_lvl cell receives +1. +# Name of each vector is "contrast_lvl - contrast_ref" — the string +# emmeans will use as the 'contrast' column in its output. +# +# $spec_lookup — data.frame(contrast, contrast_ref, contrast_lvl) for +# joining ref/lvl back onto the emmeans first-order result by contrast +# name. Avoids reconstructing this inside every geneLME_fit() call. +# +# The emmeans level ordering is derived from factor levels in targets (the +# same source emmeans uses internally), guaranteeing index alignment without +# requiring a fitted model object. +######################################################## + +geneLME_build_contrast_args <- function(targets, contrast_vars, contrast_spec) { + + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + # Reproduce the exact factor-level ordering that emmeans will use. + # emmeans builds its reference grid from the factor levels of the model + # data (targets); using the same coercion logic as geneLME_contrast_spec() + # guarantees the level strings here match those emmeans returns. + fac_a <- if (is.factor(targets[[var_a]])) targets[[var_a]] else factor(targets[[var_a]], levels = sort(unique(targets[[var_a]]))) + fac_b <- if (is.factor(targets[[var_b]])) targets[[var_b]] else factor(targets[[var_b]], levels = sort(unique(targets[[var_b]]))) + + # Build interaction level strings: "var_a_level var_b_level" in emmeans order. + # emmeans varies the rightmost variable fastest, matching interaction() default. + lvls_a <- levels(fac_a) + lvls_b <- levels(fac_b) + emm_lvls <- as.vector(outer(lvls_a, lvls_b, paste)) # row = var_a, col = var_b + + # Template zero vector, one element per interaction cell + default_vec <- rep(0, length(emm_lvls)) + names(default_vec) <- emm_lvls + + # Build contrasts_list once — identical for all genes + contrasts_list <- list() + for (k in seq_len(nrow(contrast_spec))) { + cv <- default_vec + cv[contrast_spec$contrast_ref[k]] <- -1 + cv[contrast_spec$contrast_lvl[k]] <- 1 + contrast_name <- paste(contrast_spec$contrast_lvl[k], + contrast_spec$contrast_ref[k], sep = " - ") + contrasts_list[[contrast_name]] <- cv + } + + # Build spec_lookup once — identical for all genes + spec_lookup <- data.frame( + contrast = paste(contrast_spec$contrast_lvl, + contrast_spec$contrast_ref, sep = " - "), + contrast_ref = contrast_spec$contrast_ref, + contrast_lvl = contrast_spec$contrast_lvl, + stringsAsFactors = FALSE + ) + + list(contrasts_list = contrasts_list, spec_lookup = spec_lookup) +} + + +######################################################## +# geneLME_fit +# Core per-gene fitting function. Called inside future_lapply. +# Receives only the minimal pre-extracted data needed for one gene, +# not the full EList object. +# +# Dev2 changes: +# - Singular fit is no longer an error; model_status = "singular_fit" +# is recorded and results are returned for user-side filtering. +# - Branch A receives pre-computed contrasts_list + spec_lookup instead +# of contrast_spec. The per-gene contrast vector loop is eliminated. +######################################################## + +geneLME_fit <- + function(gene_name, + expression_vec, # named numeric vector: expression values for this gene + weight_vec, # named numeric vector or NULL: per-sample weights + targets, # data.frame: sample metadata (dat$targets) + formula_str, # character: formula RHS e.g. "~ treatment*visit + (1|ptID)" + run_contrast, + contrast_vars, + contrast_var_2_levels, + contrasts_list, # Branch A: pre-computed named contrast vector list, or NULL + spec_lookup, # Branch A: pre-computed ref/lvl join table, or NULL + contrasts_primary, # Branch B: named list of contrast vectors, or NULL + contrasts_secondary) { # both branches: second-order contrast vectors, or NULL + + result <- tryCatch({ + + # --- BUILD MODEL DATA --- + model_data <- targets + model_data$expression <- expression_vec + + # --- RECONSTRUCT FORMULA LOCALLY --- + # Built from the raw string so its enclosing environment is this call frame. + # lmer resolves 'weight_vec' and other names in local scope — no + # environment stripping needed, no locked-environment errors. + formula_obj <- as.formula(paste("expression", formula_str)) + + # --- FIT MODEL --- + if (is.null(weight_vec)) { + lme_i <- lmer( + formula_obj, + data = model_data, + control = lmerControl(calc.derivs = FALSE) + ) + } else { + lme_i <- lmer( + formula_obj, + weights = weight_vec, + data = model_data, + control = lmerControl(calc.derivs = FALSE) + ) + } + + # --- SINGULAR FIT: flag, do not stop --- + # isSingular() indicates the random effect variance hit its boundary (zero). + # Fixed effect estimates and contrasts are still numerically valid; the user + # should decide whether to retain or filter these genes downstream. + # model_status records the flag; "success" indicates a clean fit. + model_status <- if (isSingular(lme_i)) "singular_fit" else "success" + + # --- EXTRACT: AIC --- + aic_res <- data.frame(gene = gene_name, AIC = AIC(lme_i)) + + # --- EXTRACT: ANOVA & coefficient summary --- + lme_i_anova <- car::Anova(lme_i) %>% broom.mixed::tidy() + lme_i_summary <- summary(lme_i)$coefficients %>% + as.data.frame() %>% + rownames_to_column("variable") + + # --- BUILD ANOVA TABLE --- + lme_i_anova_tab <- lme_i_anova %>% + rowwise() %>% + mutate( + gene = gene_name, + model_status = model_status, # "success" or "singular_fit" + predictor_class = case_when( + grepl(":", term) ~ "interaction", + is.numeric(model_data[[term]]) ~ "continuous", + !is.numeric(model_data[[term]]) & length(unique(model_data[[term]])) == 2 ~ "two-level-categorical", + !is.numeric(model_data[[term]]) & length(unique(model_data[[term]])) > 2 ~ "multi-level-categorical" + ), + Estimate_source = case_when( + predictor_class %in% c("continuous", "two-level-categorical") ~ "lme_summary", + predictor_class == "multi-level-categorical" ~ "seeContrasts", + predictor_class == "interaction" & length(grep(":", lme_i_summary$variable)) == 1 ~ "lme_summary", + predictor_class == "interaction" & length(grep(":", lme_i_summary$variable)) > 1 ~ "seeContrasts" + ), + Estimate = case_when( + predictor_class == "continuous" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], + predictor_class == "two-level-categorical" ~ lme_i_summary$Estimate[match(term, lme_i_summary$variable)][[1]], + # Guard: grep(":", ...) returns integer(0) when the model has no interaction + # coefficient (e.g. a main-effects-only formula). [[1]] on integer(0) errors, + # so fall through to .default = NA_real_ via the length check. + predictor_class == "interaction" & Estimate_source == "lme_summary" & + length(grep(":", lme_i_summary$variable)) >= 1 ~ + lme_i_summary$Estimate[grep(":", lme_i_summary$variable)[1L]], + .default = NA_real_ + ), + Estimate_SE = case_when( + predictor_class == "continuous" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], + predictor_class == "two-level-categorical" ~ lme_i_summary$`Std. Error`[match(term, lme_i_summary$variable)][[1]], + predictor_class == "interaction" & Estimate_source == "lme_summary" & + length(grep(":", lme_i_summary$variable)) >= 1 ~ + lme_i_summary$`Std. Error`[grep(":", lme_i_summary$variable)[1L]], + .default = NA_real_ + ) + ) + + # --- CONTRASTS --- + if (isTRUE(run_contrast)) { + + is_interaction <- any(grepl(":", contrast_vars)) + + if (is_interaction) { + + # ---- BRANCH A: Interaction contrast via pre-computed contrasts_list ---- + # contrasts_list and spec_lookup were built once in geneLME() before + # parallel dispatch — no per-gene reconstruction needed here. + vars <- strsplit(contrast_vars, ":")[[1]] + var_a <- vars[1] + var_b <- vars[2] + + emm_obj <- emmeans( + lme_i, + spec = as.formula(paste("~", var_a, "*", var_b)), + data = model_data + ) + + emm_1st_A <- contrast(emm_obj, method = contrasts_list, adjust = "none") + + if (!is.null(contrasts_secondary)) { + # suppressWarnings: emmeans internally calls lmer on the first-order contrast + # estimates when computing second-order contrasts; this can emit a benign + # lme4 scale warning when the estimate/SE values differ in magnitude from + # the original predictors. The output is unaffected — the warning is cosmetic. + emm_2nd_A <- suppressWarnings( + contrast(emm_1st_A, method = contrasts_secondary, adjust = "none") + ) + contrast_res <- bind_rows( + # First-order: join ref/lvl from pre-computed spec_lookup by contrast name + as.data.frame(emm_1st_A) %>% + mutate(contrast_order = "first_order") %>% + left_join(spec_lookup, by = "contrast"), + # Second-order: contrasts-of-contrasts have no single ref/lvl pair + as.data.frame(emm_2nd_A) %>% + mutate(contrast_order = "second_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_) + ) %>% mutate(gene = gene_name, model_status = model_status) + } else { + contrast_res <- as.data.frame(emm_1st_A) %>% + mutate(contrast_order = "first_order") %>% + left_join(spec_lookup, by = "contrast") %>% + mutate(gene = gene_name, model_status = model_status) + } + + } else { + + # ---- BRANCH B: Non-interaction ---- + spec_formula <- as.formula(paste("~", paste(contrast_vars, collapse = "|"))) + + by_list <- if (length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { + setNames(list(contrast_var_2_levels), contrast_vars[2]) + } else { + NULL + } + + emm_1st <- emmeans(lme_i, spec = spec_formula, at = by_list, data = model_data) %>% + contrast(method = contrasts_primary, adjust = "none") + + if (!is.null(contrasts_secondary)) { + # suppressWarnings: same benign lme4 scale warning as Branch A second-order step. + emm_2nd <- suppressWarnings( + contrast(emm_1st, method = contrasts_secondary, adjust = "none") + ) + contrast_res <- bind_rows( + # Branch B uses named contrast vectors, not a ref/lvl spec — set NA for both orders + as.data.frame(emm_1st) %>% + mutate(contrast_order = "first_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_), + as.data.frame(emm_2nd) %>% + mutate(contrast_order = "second_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_) + ) %>% mutate(gene = gene_name, model_status = model_status) + } else { + contrast_res <- as.data.frame(emm_1st) %>% + mutate(contrast_order = "first_order", + contrast_ref = NA_character_, + contrast_lvl = NA_character_, + gene = gene_name, + model_status = model_status) + } + } + + } else { + contrast_res <- NULL + } + + list( + aic = aic_res, + anova = lme_i_anova_tab, + contrasts = contrast_res, + model_status = setNames(model_status, gene_name) + ) + + }, error = function(e) { + err_msg <- conditionMessage(e) + list( + aic = data.frame(gene = gene_name, AIC = NA_real_), + anova = data.frame( + term = NA_character_, + statistic = NA_real_, + df = NA_real_, + p.value = NA_real_, + gene = gene_name, + model_status = err_msg, + predictor_class = NA_character_, + Estimate_source = NA_character_, + Estimate = NA_real_, + Estimate_SE = NA_real_ + ), + contrasts = data.frame( + contrast = NA_character_, + estimate = NA_real_, + SE = NA_real_, + df = NA_real_, + t.ratio = NA_real_, + p.value = NA_real_, + contrast_order = NA_character_, + contrast_ref = NA_character_, + contrast_lvl = NA_character_, + gene = gene_name, + model_status = err_msg + ), + model_status = setNames(err_msg, gene_name) + ) + }) + + return(result) + } + + +######################################################## +# geneLME_compiler +# Aggregates list of per-gene results into named result tables, +# then appends FDR-adjusted p-values within each grouping unit. +# +# FDR grouping strategy: +# lme_anova: adjust within each model term (across all genes). +# Each term's p-values form one adjustment set. +# lme_contrast: adjust within each contrast x contrast_order combination +# (across all genes). Branch B contrast labels already encode +# the 'by' variable level (e.g. "TrtC vs TrtA, visit = V2"), +# so grouping by contrast alone is sufficient. +# NA p-values (failed gene models) are preserved as NA in p.value_adj. +# singular_fit genes are included in the adjustment set (their p-values +# are valid; users filter on model_status if they wish to exclude them). +######################################################## + +geneLME_compiler <- function(fit, fdr_method = "BH", contrast_spec = NULL) { + + lme_anova <- map_dfr(fit, "anova") %>% + group_by(term) %>% + mutate(p.value_adj = p.adjust(p.value, method = fdr_method)) %>% + relocate(p.value_adj, .after = p.value)%>% + ungroup() + + lme_contrast_raw <- map_dfr(fit, "contrasts") + lme_contrast <- if (ncol(lme_contrast_raw) > 0 && + all(c("contrast", "contrast_order") %in% colnames(lme_contrast_raw))) { + lme_contrast_raw %>% + group_by(contrast, contrast_order) %>% + mutate(p.value_adj = p.adjust(p.value, method = fdr_method)) %>% + relocate(p.value_adj, .after = p.value)%>% + ungroup() + } else { + lme_contrast_raw # no contrasts run; return as-is (empty or NULL-row stub) + } + + list( + lme_anova = lme_anova, + lme_contrast = lme_contrast, + lme_fit = map_dfr(fit, "aic"), + lme_err = map_chr(fit, "model_status"), + contrast_spec = contrast_spec # indexed spec; NULL when no contrasts run + ) +} + + +######################################################## +# geneLME_dispatch +# Runs future_lapply with explicit global declaration to prevent +# future's automatic environment scan from capturing large objects. +# +# Key design decisions: +# 1. Iterate over an integer index — a plain integer sequence carries +# no environment baggage for future to scan. +# 2. All shared objects passed via future.globals, bypassing automatic +# scanning entirely. +# +# Dev2: contrast_spec replaced by contrasts_list + spec_lookup (Branch A) +# in both the function signature and future.globals. +######################################################## + +geneLME_dispatch <- function(gene_data_list, + targets_df, + formula_str, + run_contrast, + contrast_vars, + contrast_var_2_levels, + contrasts_list, + spec_lookup, + contrasts_primary, + contrasts_secondary) { + n_genes <- length(gene_data_list) + + future.apply::future_lapply( + seq_len(n_genes), + FUN = function(i) { + gene_data <- gene_data_list[[i]] + geneLME_fit( + gene_name = gene_data$gene_name, + expression_vec = gene_data$expression_vec, + weight_vec = gene_data$weight_vec, + targets = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrasts_list = contrasts_list, + spec_lookup = spec_lookup, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary + ) + }, + future.globals = list( + gene_data_list = gene_data_list, + targets_df = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrasts_list = contrasts_list, + spec_lookup = spec_lookup, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary, + geneLME_fit = geneLME_fit + ), + future.packages = c("lme4", "emmeans", "car", "broom.mixed", "dplyr", "tibble"), + future.seed = TRUE + ) +} + + +######################################################## +# geneLME +# User-facing wrapper: validates inputs, sets up parallel plan, +# pre-extracts per-gene data, dispatches geneLME_fit in parallel. +# +# Dev2: calls geneLME_build_contrast_args() for Branch A to pre-compute +# contrasts_list and spec_lookup before the parallel stage. +######################################################## + +geneLME <- + function(dat, + formula_str, + model_weights = NULL, + run_contrast = NULL, + contrast_vars = NULL, + contrast_var_2_levels = NULL, + contrast_spec = NULL, # data.frame(contrast_ref, contrast_lvl) or NULL + # required when contrast_vars contains ":" + contrasts_primary = NULL, + contrasts_secondary = NULL, + fdr_method = "BH", # any method accepted by p.adjust() + n_cores = NULL) { + + # --- PRE-FLIGHT VALIDATION --- + + # Build a local formula object solely for variable checking — never + # passed to workers. Workers reconstruct the formula from formula_str. + formula_obj_local <- as.formula(paste("expression", formula_str)) + + # Initialise objects populated during the contrast validation block below. + indexed_contrast_spec <- NULL + contrasts_list <- NULL # Branch A: pre-computed named contrast vectors + spec_lookup <- NULL # Branch A: pre-computed ref/lvl join table + + # 1. Formula variables present in targets + required_vars <- all.vars(formula_obj_local) + required_vars <- required_vars[required_vars != "expression"] + + missing_vars <- setdiff(required_vars, colnames(dat$targets)) + if (length(missing_vars) > 0) { + stop(paste( + "The following variables in the formula are missing from dat$targets:", + paste(missing_vars, collapse = ", ") + )) + } + + # 2. Weights alignment + if (isTRUE(model_weights)) { + if (is.null(dat$weights)) { + stop("model_weights = TRUE but dat$weights is NULL.") + } + if (!identical(dim(dat$weights), dim(dat$E))) { + stop("Dimensions of dat$weights do not match dat$E.") + } + } + + # 3. Contrast variables and spec + if (isTRUE(run_contrast)) { + + if (is.null(contrast_vars)) { + stop("run_contrast = TRUE but contrast_vars is NULL.") + } + + is_interaction <- any(grepl(":", contrast_vars)) + + # 3a. Formula-vs-contrast_vars consistency check. + # Uses terms() so that both "a*b" and "a:b" formula syntax are handled correctly — + # "a*b" expands to include "a:b" in term labels, so both forms are detected. + formula_terms <- attr(terms(formula_obj_local), "term.labels") + + if (is_interaction) { + # For interaction contrasts, verify the interaction term is actually in the model. + # emmeans will silently run contrasts on additive margins if the interaction is absent, + # which is statistically misleading. + ixn_term <- contrast_vars[grep(":", contrast_vars)][1] # e.g. "treatment:visit" + if (!ixn_term %in% formula_terms) { + stop(paste0( + "contrast_vars specifies an interaction contrast for '", ixn_term, "', ", + "but this interaction term is not present in formula_str.\n", + "Either add the interaction to the formula (e.g. '~ treatment * visit + ...') ", + "or change contrast_vars to a non-interaction term." + )) + } + } else { + # For non-interaction contrasts, verify each contrast variable is in the formula + # as a main effect. Warn (not error) in case it is part of an interaction only. + for (cv in contrast_vars) { + if (!cv %in% formula_terms) { + warning(paste0( + "contrast_vars includes '", cv, "' but this term does not appear as a ", + "main effect in formula_str. Contrasts may be computed from interaction ", + "margins only — verify this is the intended model structure." + )) + } + } + } + + # 3b. contrast_spec validation (required for interaction contrasts) + if (is_interaction && is.null(contrast_spec)) { + stop(paste0( + "contrast_vars specifies an interaction contrast ('", contrast_vars, "') ", + "but contrast_spec is NULL.\n", + "Use geneLME_contrast_spec(dat$targets, contrast_vars = '", contrast_vars, + "') to generate a template, filter it to your contrasts of interest, ", + "then pass it as contrast_spec." + )) + } + + if (!is.null(contrast_spec)) { + if (!is.data.frame(contrast_spec)) { + stop("contrast_spec must be a data.frame.") + } + if (!all(c("contrast_ref", "contrast_lvl") %in% colnames(contrast_spec))) { + stop("contrast_spec must have columns 'contrast_ref' and 'contrast_lvl'.") + } + if (!is_interaction) { + warning("contrast_spec is provided but contrast_vars contains no interaction term (':'). ", + "contrast_spec is designed for interaction contrasts — did you mean to use contrasts_primary?") + } + + # Build the indexed contrast_spec that will be attached to the return value. + indexed_contrast_spec <- contrast_spec %>% + mutate(contrast_index = seq_len(n())) %>% + select(contrast_index, everything()) + + # Print the indexed spec as a reminder whenever contrasts_secondary is provided. + if (is_interaction && !is.null(contrasts_secondary)) { + n_first <- nrow(contrast_spec) + message( + "contrasts_secondary will be applied to the first-order interaction contrasts ", + "in the order they appear in contrast_spec (", n_first, " contrasts):\n", + paste(seq_len(n_first), + paste(contrast_spec$contrast_lvl, contrast_spec$contrast_ref, sep = " - "), + sep = ". ", collapse = "\n"), + "\nEnsure contrasts_secondary vectors have length ", n_first, + ", with each element corresponding to the contrast at that position.", + "\nThe indexed contrast_spec is returned as $contrast_spec in the output." + ) + + # Soft-fail: wrong-length vectors produce silent NAs deep inside geneLME_fit(). + bad_lens <- sapply(contrasts_secondary, length) + bad_names <- names(bad_lens)[bad_lens != n_first] + if (length(bad_names) > 0) { + message( + "\ncontrasts_secondary vector(s) have wrong length — returning early without running models.\n", + "Expected length ", n_first, " (= nrow(contrast_spec) after filtering).\n", + "Offending vector(s):\n", + paste0(" '", bad_names, "': length ", bad_lens[bad_names], collapse = "\n"), "\n\n", + "Common cause: vectors were built against nrow() of the full unfiltered\n", + "spec_template rather than nrow() of the filtered contrast_spec passed here.\n", + "Use $contrast_spec in the returned object to re-specify your secondary contrast vectors:\n", + " each vector must have length ", n_first, ", one element per row of $contrast_spec." + ) + return(invisible(list( + lme_anova = NULL, + lme_contrast = NULL, + lme_fit = NULL, + lme_err = NULL, + contrast_spec = indexed_contrast_spec + ))) + } + } + + # --- PRE-COMPUTE BRANCH A CONTRAST STRUCTURES --- + # Build contrasts_list and spec_lookup once here, before parallel dispatch. + # Workers receive these ready-made objects instead of rebuilding from + # contrast_spec on every gene — eliminates nrow(contrast_spec) × n_genes + # iterations of R-level vector construction. + if (is_interaction) { + contrast_args <- geneLME_build_contrast_args(dat$targets, contrast_vars, contrast_spec) + contrasts_list <- contrast_args$contrasts_list + spec_lookup <- contrast_args$spec_lookup + } + } + + # 3c. contrast_vars present in targets (split on ":" for interaction) + vars_to_check <- unique(unlist(strsplit(contrast_vars, ":"))) + missing_contrast_vars <- setdiff(vars_to_check, colnames(dat$targets)) + if (length(missing_contrast_vars) > 0) { + stop(paste( + "contrast_vars not found in dat$targets:", + paste(missing_contrast_vars, collapse = ", ") + )) + } + + # 3d. contrast_var_2_levels validation (Branch B only) + if (!is_interaction && length(contrast_vars) == 2 && !is.null(contrast_var_2_levels)) { + actual_levels <- unique(as.character(dat$targets[[contrast_vars[2]]])) + invalid_levels <- setdiff(contrast_var_2_levels, actual_levels) + if (length(invalid_levels) > 0) { + stop(paste0( + "Levels specified for '", contrast_vars[2], + "' not found in data: ", paste(invalid_levels, collapse = ", ") + )) + } + } + + # 3e. Branch B: build indexed contrast_spec from contrasts_primary names, + # and soft-fail on wrong-length contrasts_secondary vectors. + if (!is_interaction && !is.null(contrasts_primary)) { + indexed_contrast_spec <- data.frame( + contrast_index = seq_along(contrasts_primary), + contrast_name = names(contrasts_primary), + stringsAsFactors = FALSE + ) + + if (!is.null(contrasts_secondary)) { + n_primary <- length(contrasts_primary) + bad_lens <- sapply(contrasts_secondary, length) + bad_names <- names(bad_lens)[bad_lens != n_primary] + if (length(bad_names) > 0) { + message( + "\ncontrasts_secondary vector(s) have wrong length — returning early without running models.\n", + "Expected length ", n_primary, " (= number of contrasts_primary vectors).\n", + "Offending vector(s):\n", + paste0(" '", bad_names, "': length ", bad_lens[bad_names], collapse = "\n"), "\n\n", + "Use $contrast_spec in the returned object to confirm the primary contrast ordering:\n", + " each contrasts_secondary vector must have length ", n_primary, + ", one element per row of $contrast_spec." + ) + return(invisible(list( + lme_anova = NULL, + lme_contrast = NULL, + lme_fit = NULL, + lme_err = NULL, + contrast_spec = indexed_contrast_spec + ))) + } + } + } + } + + # 4. fdr_method must be a recognised p.adjust method + valid_fdr_methods <- p.adjust.methods # exported character vector from stats + if (!fdr_method %in% valid_fdr_methods) { + stop(paste0( + "'", fdr_method, "' is not a valid p.adjust method.\n", + "Choose one of: ", paste(valid_fdr_methods, collapse = ", ") + )) + } + + # 5. Warn on likely ID columns used as predictors + for (v in required_vars) { + if (is.character(dat$targets[[v]]) && + length(unique(dat$targets[[v]])) > nrow(dat$targets) / 2) { + warning(paste0( + "Variable '", v, "' has many unique string values — is it an ID column rather than a predictor?" + )) + } + } + + message("Input validation passed. Launching parallel LME fits...") + + # --- PRE-SLICE INTO PER-GENE LIST --- + W_mat <- if (isTRUE(model_weights)) dat$weights else NULL + + gene_data_list <- lapply(rownames(dat$E), function(g) { + list( + gene_name = g, + expression_vec = dat$E[g, ], + weight_vec = if (!is.null(W_mat)) W_mat[g, ] else NULL + ) + }) + + targets_df <- dat$targets + + # --- PARALLEL PLAN --- + workers <- if (is.null(n_cores)) max(1L, parallel::detectCores() - 4L) else n_cores + future::plan(future::multisession, workers = workers) + on.exit(future::plan(future::sequential), add = TRUE) + + # --- DISPATCH via clean-scope helper --- + fit_results <- geneLME_dispatch( + gene_data_list = gene_data_list, + targets_df = targets_df, + formula_str = formula_str, + run_contrast = run_contrast, + contrast_vars = contrast_vars, + contrast_var_2_levels = contrast_var_2_levels, + contrasts_list = contrasts_list, + spec_lookup = spec_lookup, + contrasts_primary = contrasts_primary, + contrasts_secondary = contrasts_secondary + ) + + return(geneLME_compiler(fit_results, fdr_method = fdr_method, + contrast_spec = indexed_contrast_spec)) + } + + +######################################################## +# Testing (see geneLME_test.R for full test suite) +######################################################## + +# --- Branch A: interaction contrast via contrast_spec --- +# spec_template <- geneLME_contrast_spec( +# targets = dat$targets, +# contrast_vars = "treatment:visit" +# ) +# my_spec <- spec_template %>% dplyr::filter(...) +# +# test_mods_A <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = "treatment:visit", +# contrast_spec = my_spec, +# n_cores = 10 +# ) + +# --- Branch B: non-interaction --- +# test_mods_B <- +# geneLME( +# dat = dat_sub, +# formula_str = "~ treatment + visit + age + sex + rNANgUl + (1|ptID)", +# model_weights = TRUE, +# run_contrast = TRUE, +# contrast_vars = c("treatment", "visit"), +# contrast_var_2_levels = c("V2", "V3"), +# contrasts_primary = list("TrtC vs TrtA" = c(-1, 0, 1), +# "TrtB vs TrtA" = c(-1, 1, 0)), +# contrasts_secondary = list("TrtC vs TrtB" = c(1, -1)), +# n_cores = 10 +# ) diff --git a/R_functions/geneLME_function_overview.html b/R_functions/geneLME_function_overview.html new file mode 100644 index 0000000..d76f606 --- /dev/null +++ b/R_functions/geneLME_function_overview.html @@ -0,0 +1,611 @@ + + + + + + + geneLME — Function Overview + + + + +
+

geneLME — Function Overview

+
+
+

geneLME — Function Overview

+
+

Companion to: geneLME.R Last +updated: 2026-02-20 For session continuity notes see +CLAUDE_NOTES_geneLME.md. For a worked tutorial with output +see geneLME_tutorial.html (knitted from +geneLME_tutorial.Rmd).

+
+
+

Function Map

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionRoleCalled by
geneLME_contrast_spec()Pre-run helper: inspect available contrast levels and understand how +to specify argumentsUser
geneLME_build_contrast_args()Branch A helper: pre-computes contrasts_list + +spec_lookup once before parallel dispatchgeneLME()
geneLME()User-facing entry point: validates inputs, slices data, sets +parallel planUser
geneLME_dispatch()Launches future_lapply with explicit globals; clean +parallel scopegeneLME()
geneLME_fit()Per-gene worker: fits lmer, extracts ANOVA + +contrastsgeneLME_dispatch()
geneLME_compiler()Binds per-gene list results into four output data framesgeneLME()
+
+

geneLME_contrast_spec(targets, contrast_vars)

+

A pre-run helper to enumerate available levels and understand how to +construct contrast arguments before calling geneLME(). Two +modes:

+

Interaction mode

+

contrast_vars is a single "var_a:var_b" +string. Returns a data.frame(contrast_ref, contrast_lvl) +with all pairwise combinations of interaction cells. The user filters +this to their contrasts of interest and passes it directly as +contrast_spec to geneLME().

+
spec_template <- geneLME_contrast_spec(dat$targets, contrast_vars = "treatment:visit")
+# → data.frame with 66 rows (all pairs of 12 interaction cells)
+#    contrast_ref contrast_lvl
+# 1      TrtA V1      TrtB V1
+# 2      TrtA V1      TrtC V1
+# ...
+
+my_spec <- spec_template %>%
+  filter(sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl),  # same visit
+         sub(".* ", "", contrast_ref) %in% c("V2", "V3"))               # only V2, V3
+# → 6 rows: the 3 cross-treatment pairs at V2, and 3 at V3
+

Single / multi-variable mode

+

contrast_vars is a character vector of one or more plain +variable names (no :). Returns a named +list, one data.frame(level) per variable. A +message for each variable explains its role in subsequent +geneLME() arguments. This list is a reference only — not +passed to geneLME().

+
ref <- geneLME_contrast_spec(dat$targets, contrast_vars = c("treatment", "visit"))
+
+# Message for treatment (position 1 — primary):
+# 'treatment' — primary contrast variable (contrast_vars[1] in geneLME).
+# 3 levels (alphabetical order = position order for contrasts_primary vectors):
+# 1. TrtA   2. TrtB   3. TrtC
+# → contrast vectors passed to contrasts_primary must have length 3
+#   e.g. 'TrtC vs TrtA' = c(-1, 0, 1)
+
+# Message for visit (position 2 — secondary 'by' variable):
+# 'visit' — secondary 'by' grouping variable (contrast_vars[2] in geneLME).
+# 4 levels: V1, V2, V3, V4
+# → pass a subset to contrast_var_2_levels in geneLME() to restrict
+#   which groups the primary contrasts are computed within.
+
+ref$treatment   # data.frame: TrtA, TrtB, TrtC
+ref$visit       # data.frame: V1, V2, V3, V4
+

Note: mixing interaction and plain variable names in +one call raises an error — call separately.

+
+

geneLME() — Main +Function

+

Signature

+
geneLME(dat, formula_str,
+        model_weights         = NULL,
+        run_contrast          = NULL,
+        contrast_vars         = NULL,
+        contrast_var_2_levels = NULL,
+        contrast_spec         = NULL,
+        contrasts_primary     = NULL,
+        contrasts_secondary   = NULL,
+        fdr_method            = "BH",   # any method accepted by p.adjust()
+        n_cores               = NULL)
+

Input

+

dat — EList-like list with three elements:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
ElementTypeDescription
dat$Ematrix (genes × samples)log2 expression values
dat$weightsmatrix (genes × samples), optionalvoom precision weights
dat$targetsdata.frame (samples × covariates)sample metadata; all formula and contrast variables must be columns +here
+

Output

+

Named list of five elements:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ElementContents
lme_anovaOne row per model term per gene: term, +statistic, df, p.value, +p.value_adj (FDR within term), gene, +model_status, predictor_class, +Estimate, Estimate_SE
lme_contrastOne row per contrast per gene: contrast, +contrast_ref, contrast_lvl (Branch A +first-order only; NA otherwise), estimate, SE, +df, t.ratio, p.value, +p.value_adj (FDR within contrast × order), +contrast_order ("first_order" / +"second_order"), gene. Branch B also has a +visit column.
lme_fitOne row per gene: gene, AIC
lme_errNamed character vector: gene → "success", +"singular_fit", or unexpected error message. A +model_status column carrying the same value also appears in +lme_anova and lme_contrast.
contrast_specIndexed copy of the filtered contrast_spec (Branch A) +or data.frame(contrast_index, contrast_name) from +contrasts_primary names (Branch B); NULL when +no contrasts run. On soft-fail (wrong-length +contrasts_secondary), all other elements are NULL and only +this is returned.
+

Validation Checks +(pre-flight)

+
    +
  1. All formula variables present in dat$targets
  2. +
  3. dat$weights present and dimension-matched if +model_weights = TRUE
  4. +
  5. contrast_vars not NULL when +run_contrast = TRUE
  6. +
  7. Interaction term present in formula if +contrast_vars contains : (hard error — +emmeans would otherwise silently use additive margins, +which is statistically misleading)
  8. +
  9. contrast_spec required (not NULL) when +contrast_vars contains :
  10. +
  11. contrast_spec has correct columns +(contrast_ref, contrast_lvl)
  12. +
  13. All contrast_vars component variables present in +dat$targets
  14. +
  15. contrast_var_2_levels values valid against actual data +levels
  16. +
  17. fdr_method validated against +p.adjust.methods
  18. +
  19. contrasts_secondary vector lengths +(soft-fail, not hard stop): each vector must have length == +nrow(contrast_spec) (Branch A) or +length(contrasts_primary) (Branch B). On mismatch returns +early with only $contrast_spec populated.
  20. +
  21. Warn on likely ID columns used as predictors
  22. +
+
+

Branch A — Interaction +Contrasts

+

When to use: model formula contains an interaction +term (treatment * visit or treatment:visit) +and you want specific pairwise contrasts across particular interaction +cells.

+

Step 1 — +Generate and filter the contrast template

+
spec_template <- geneLME_contrast_spec(dat$targets, "treatment:visit")
+# Returns data.frame of all 66 pairwise interaction cell combinations
+
+my_spec <- spec_template %>%
+  filter(sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl),  # same visit only
+         sub(".* ", "", contrast_ref) %in% c("V2", "V3"))               # visits V2 and V3 only
+# 6 rows
+

Step 2 — Run

+
result_A <- geneLME(
+  dat           = dat,
+  formula_str   = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+  model_weights = TRUE,
+  run_contrast  = TRUE,
+  contrast_vars = "treatment:visit",   # single ":" string → triggers Branch A
+  contrast_spec = my_spec,             # required; each row defines one contrast
+  n_cores       = 10
+)
+

Sample +lme_contrast output (6 contrasts × n genes rows)

+

contrast_ref = the −1 cell; contrast_lvl = +the +1 cell. Together they make the sign of estimate +unambiguous without parsing the contrast label string.

+
            contrast   contrast_ref  contrast_lvl  estimate    SE      df   t.ratio  p.value  contrast_order  gene
+TrtB V2 - TrtA V2    TrtA V2        TrtB V2        -0.040    0.960  93.04  -0.042    0.967    first_order     gene01
+TrtC V2 - TrtA V2    TrtA V2        TrtC V2         0.092    0.942  97.37   0.098    0.922    first_order     gene01
+TrtC V2 - TrtB V2    TrtB V2        TrtC V2         0.132    0.993  89.10   0.133    0.894    first_order     gene01
+TrtB V3 - TrtA V3    TrtA V3        TrtB V3         0.191    0.934  98.51   0.205    0.838    first_order     gene01
+TrtC V3 - TrtA V3    TrtA V3        TrtC V3         1.625    0.945  90.82   1.721    0.089    first_order     gene01
+TrtC V3 - TrtB V3    TrtB V3        TrtC V3         1.434    0.958  90.33   1.497    0.138    first_order     gene01
+
+

Branch A with Second-Order +Contrasts

+

At validation time, geneLME() prints the numbered +first-order list (in contrast_spec row order) to guide +vector construction. Secondary vectors must have length +nrow(contrast_spec).

+
result_A2 <- geneLME(
+  dat                 = dat,
+  formula_str         = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)",
+  model_weights       = TRUE,
+  run_contrast        = TRUE,
+  contrast_vars       = "treatment:visit",
+  contrast_spec       = my_spec,          # 6 rows, order defines vector positions
+  contrasts_secondary = list(
+    # my_spec rows: 1=TrtB V2-TrtA V2, 2=TrtC V2-TrtA V2, 3=TrtC V2-TrtB V2,
+    #               4=TrtB V3-TrtA V3, 5=TrtC V3-TrtA V3, 6=TrtC V3-TrtB V3
+    "TrtA vs TrtB: V3 vs V2" = c(1, 0, -1, 0, 0, 0),   # row1 − row3: V2 vs V3 delta
+    "TrtA vs TrtC: V3 vs V2" = c(0, 1,  0,-1, 0, 0)    # row2 − row4
+  ),
+  n_cores             = 10
+)
+# lme_contrast: first_order (6 × n_genes) + second_order (2 × n_genes) rows
+

Validation message printed:

+
contrasts_secondary will be applied to the first-order interaction contrasts
+in the order they appear in contrast_spec (6 contrasts):
+1. TrtB V2 - TrtA V2
+2. TrtC V2 - TrtA V2
+3. TrtC V2 - TrtB V2
+4. TrtB V3 - TrtA V3
+5. TrtC V3 - TrtA V3
+6. TrtC V3 - TrtB V3
+Ensure contrasts_secondary vectors have length 6, with each element
+corresponding to the contrast at that position.
+
+

Branch B — Non-Interaction +Contrasts

+

When to use: model is additive (no interaction), and +you want named contrasts on the marginal means of one variable, +optionally evaluated within specific levels of a second variable.

+

Step 1 — Inspect levels

+
ref <- geneLME_contrast_spec(dat$targets, contrast_vars = c("treatment", "visit"))
+# treatment levels (alphabetical): TrtA[1], TrtB[2], TrtC[3]
+# → contrasts_primary vectors must have length 3, positions = [TrtA, TrtB, TrtC]
+# visit levels: V1, V2, V3, V4 → pass subset to contrast_var_2_levels
+

Step 2 — Run

+
result_B <- geneLME(
+  dat                   = dat,
+  formula_str           = "~ treatment + visit + age + sex + rNANgUl + (1|ptID)",
+  model_weights         = TRUE,
+  run_contrast          = TRUE,
+  contrast_vars         = c("treatment", "visit"), # [1] = primary; [2] = by-variable
+  contrast_var_2_levels = c("V2", "V3"),           # restrict output to these visit levels
+  contrasts_primary     = list(
+    "TrtC vs TrtA" = c(-1, 0, 1),  # positions: [TrtA=−1, TrtB=0, TrtC=+1]
+    "TrtB vs TrtA" = c(-1, 1, 0)
+  ),
+  contrasts_secondary   = list(
+    "TrtC vs TrtB" = c(1, -1)      # length = number of primary contrasts (2)
+  ),
+  n_cores               = 10
+)
+

Sample +lme_contrast output (per gene: 2 primary × 2 visits + 1 +secondary × 2 visits = 6 rows)

+
       contrast  visit   estimate    SE       df   t.ratio  p.value  contrast_order  gene
+TrtC vs TrtA     V2      0.814    0.457  101.6   1.782     0.078    first_order     gene01
+TrtB vs TrtA     V2      0.009    0.457  102.3   0.019     0.984    first_order     gene01
+TrtC vs TrtA     V3      0.814    0.457  101.6   1.782     0.078    first_order     gene01
+TrtB vs TrtA     V3      0.009    0.457  102.3   0.019     0.984    first_order     gene01
+TrtC vs TrtB     V2      0.805    0.462   99.1   1.742     0.085    second_order    gene01
+TrtC vs TrtB     V3      0.805    0.462   99.1   1.742     0.085    second_order    gene01
+
+

Note: In an additive model, estimates are identical +across V2 and V3 — contrast_var_2_levels restricts +which visit cells emmeans evaluates at, but since +there is no interaction the treatment effect is constant across visits. +This filter is most useful to control the number of output rows and +limit multiple testing burden.

+
+
+

lme_anova Output +Structure

+

One row per model term per gene. Key columns:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnDescription
termPredictor name (e.g. "treatment", +"treatment:visit", "age")
statisticChi-square statistic from car::Anova()
dfDegrees of freedom
p.valuep-value
geneGene identifier
model_status"success" or error message
predictor_class"continuous", "two-level-categorical", +"multi-level-categorical", or +"interaction"
Estimate_source"lme_summary" (value in +Estimate/Estimate_SE) or +"seeContrasts" (NA — use contrast output for estimate)
EstimateCoefficient estimate where available; NA for multi-level or complex +interactions
Estimate_SEStandard error of estimate where available
+
+

Error Handling and Singular +Fits

+

Per-gene outcomes are tracked via a model_status column +in both lme_anova and lme_contrast, and +summarised in lme_err (named character vector, gene → +status). Possible values:

+
    +
  • "success" — model converged cleanly; +all results are reliable.
  • +
  • "singular_fit" — +isSingular() was TRUE; random effect variance +hit its boundary (zero). Fixed effect estimates and contrasts are still +returned and are numerically valid. Common with small N or highly +collinear random/fixed effects. Filter downstream if desired.
  • +
  • Unexpected error stringtryCatch +caught an unexpected error; rows for that gene contain NAs.
  • +
+

Note: singular fits were previously treated as a hard +stop() that excluded the gene entirely. They are now +flagged and returned, giving users the choice to retain or filter.

+
table(result$lme_err)
+non_success <- names(result$lme_err)[result$lme_err != "success"]
+
+# Filter to clean fits only downstream:
+result$lme_contrast %>% filter(model_status == "success")
+ + diff --git a/R_functions/geneLME_function_overview.md b/R_functions/geneLME_function_overview.md new file mode 100644 index 0000000..3307b04 --- /dev/null +++ b/R_functions/geneLME_function_overview.md @@ -0,0 +1,299 @@ +# geneLME — Function Overview + +> **Companion to:** `geneLME.R` +> **Last updated:** 2026-02-20 +> For session continuity notes see `CLAUDE_NOTES_geneLME.md`. +> For a worked tutorial with output see `geneLME_tutorial.html` (knitted from `geneLME_tutorial.Rmd`). + +--- + +## Function Map + +| Function | Role | Called by | +|---|---|---| +| `geneLME_contrast_spec()` | Pre-run helper: inspect available contrast levels and understand how to specify arguments | User | +| `geneLME_build_contrast_args()` | Branch A helper: pre-computes `contrasts_list` + `spec_lookup` once before parallel dispatch | `geneLME()` | +| `geneLME()` | User-facing entry point: validates inputs, slices data, sets parallel plan | User | +| `geneLME_dispatch()` | Launches `future_lapply` with explicit globals; clean parallel scope | `geneLME()` | +| `geneLME_fit()` | Per-gene worker: fits `lmer`, extracts ANOVA + contrasts | `geneLME_dispatch()` | +| `geneLME_compiler()` | Binds per-gene list results into four output data frames | `geneLME()` | + +--- + +## `geneLME_contrast_spec(targets, contrast_vars)` + +A pre-run helper to enumerate available levels and understand how to construct contrast arguments before calling `geneLME()`. Two modes: + +### Interaction mode + +`contrast_vars` is a single `"var_a:var_b"` string. Returns a `data.frame(contrast_ref, contrast_lvl)` with all pairwise combinations of interaction cells. The user filters this to their contrasts of interest and passes it directly as `contrast_spec` to `geneLME()`. + +```r +spec_template <- geneLME_contrast_spec(dat$targets, contrast_vars = "treatment:visit") +# → data.frame with 66 rows (all pairs of 12 interaction cells) +# contrast_ref contrast_lvl +# 1 TrtA V1 TrtB V1 +# 2 TrtA V1 TrtC V1 +# ... + +my_spec <- spec_template %>% + filter(sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl), # same visit + sub(".* ", "", contrast_ref) %in% c("V2", "V3")) # only V2, V3 +# → 6 rows: the 3 cross-treatment pairs at V2, and 3 at V3 +``` + +### Single / multi-variable mode + +`contrast_vars` is a character vector of one or more plain variable names (no `:`). Returns a **named list**, one `data.frame(level)` per variable. A message for each variable explains its role in subsequent `geneLME()` arguments. This list is a reference only — not passed to `geneLME()`. + +```r +ref <- geneLME_contrast_spec(dat$targets, contrast_vars = c("treatment", "visit")) + +# Message for treatment (position 1 — primary): +# 'treatment' — primary contrast variable (contrast_vars[1] in geneLME). +# 3 levels (alphabetical order = position order for contrasts_primary vectors): +# 1. TrtA 2. TrtB 3. TrtC +# → contrast vectors passed to contrasts_primary must have length 3 +# e.g. 'TrtC vs TrtA' = c(-1, 0, 1) + +# Message for visit (position 2 — secondary 'by' variable): +# 'visit' — secondary 'by' grouping variable (contrast_vars[2] in geneLME). +# 4 levels: V1, V2, V3, V4 +# → pass a subset to contrast_var_2_levels in geneLME() to restrict +# which groups the primary contrasts are computed within. + +ref$treatment # data.frame: TrtA, TrtB, TrtC +ref$visit # data.frame: V1, V2, V3, V4 +``` + +**Note:** mixing interaction and plain variable names in one call raises an error — call separately. + +--- + +## `geneLME()` — Main Function + +### Signature + +```r +geneLME(dat, formula_str, + model_weights = NULL, + run_contrast = NULL, + contrast_vars = NULL, + contrast_var_2_levels = NULL, + contrast_spec = NULL, + contrasts_primary = NULL, + contrasts_secondary = NULL, + fdr_method = "BH", # any method accepted by p.adjust() + n_cores = NULL) +``` + +### Input + +`dat` — EList-like list with three elements: + +| Element | Type | Description | +|---|---|---| +| `dat$E` | matrix (genes × samples) | log2 expression values | +| `dat$weights` | matrix (genes × samples), optional | voom precision weights | +| `dat$targets` | data.frame (samples × covariates) | sample metadata; all formula and contrast variables must be columns here | + +### Output + +Named list of five elements: + +| Element | Contents | +|---|---| +| `lme_anova` | One row per model term per gene: `term`, `statistic`, `df`, `p.value`, `p.value_adj` (FDR within term), `gene`, `model_status`, `predictor_class`, `Estimate`, `Estimate_SE` | +| `lme_contrast` | One row per contrast per gene: `contrast`, `contrast_ref`, `contrast_lvl` (Branch A first-order only; NA otherwise), `estimate`, `SE`, `df`, `t.ratio`, `p.value`, `p.value_adj` (FDR within contrast × order), `contrast_order` (`"first_order"` / `"second_order"`), `gene`. Branch B also has a `visit` column. | +| `lme_fit` | One row per gene: `gene`, `AIC` | +| `lme_err` | Named character vector: gene → `"success"`, `"singular_fit"`, or unexpected error message. A `model_status` column carrying the same value also appears in `lme_anova` and `lme_contrast`. | +| `contrast_spec` | Indexed copy of the filtered `contrast_spec` (Branch A) or `data.frame(contrast_index, contrast_name)` from `contrasts_primary` names (Branch B); `NULL` when no contrasts run. On soft-fail (wrong-length `contrasts_secondary`), all other elements are NULL and only this is returned. | + +### Validation Checks (pre-flight) + +1. All formula variables present in `dat$targets` +2. `dat$weights` present and dimension-matched if `model_weights = TRUE` +3. `contrast_vars` not NULL when `run_contrast = TRUE` +4. **Interaction term present in formula** if `contrast_vars` contains `:` (hard error — `emmeans` would otherwise silently use additive margins, which is statistically misleading) +5. `contrast_spec` required (not NULL) when `contrast_vars` contains `:` +6. `contrast_spec` has correct columns (`contrast_ref`, `contrast_lvl`) +7. All `contrast_vars` component variables present in `dat$targets` +8. `contrast_var_2_levels` values valid against actual data levels +9. `fdr_method` validated against `p.adjust.methods` +10. **`contrasts_secondary` vector lengths** (soft-fail, not hard stop): each vector must have length == `nrow(contrast_spec)` (Branch A) or `length(contrasts_primary)` (Branch B). On mismatch returns early with only `$contrast_spec` populated. +11. Warn on likely ID columns used as predictors + +--- + +## Branch A — Interaction Contrasts + +**When to use:** model formula contains an interaction term (`treatment * visit` or `treatment:visit`) and you want specific pairwise contrasts across particular interaction cells. + +### Step 1 — Generate and filter the contrast template + +```r +spec_template <- geneLME_contrast_spec(dat$targets, "treatment:visit") +# Returns data.frame of all 66 pairwise interaction cell combinations + +my_spec <- spec_template %>% + filter(sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl), # same visit only + sub(".* ", "", contrast_ref) %in% c("V2", "V3")) # visits V2 and V3 only +# 6 rows +``` + +### Step 2 — Run + +```r +result_A <- geneLME( + dat = dat, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", # single ":" string → triggers Branch A + contrast_spec = my_spec, # required; each row defines one contrast + n_cores = 10 +) +``` + +### Sample `lme_contrast` output (6 contrasts × n genes rows) + +`contrast_ref` = the −1 cell; `contrast_lvl` = the +1 cell. Together they make the sign of +`estimate` unambiguous without parsing the contrast label string. + +``` + contrast contrast_ref contrast_lvl estimate SE df t.ratio p.value contrast_order gene +TrtB V2 - TrtA V2 TrtA V2 TrtB V2 -0.040 0.960 93.04 -0.042 0.967 first_order gene01 +TrtC V2 - TrtA V2 TrtA V2 TrtC V2 0.092 0.942 97.37 0.098 0.922 first_order gene01 +TrtC V2 - TrtB V2 TrtB V2 TrtC V2 0.132 0.993 89.10 0.133 0.894 first_order gene01 +TrtB V3 - TrtA V3 TrtA V3 TrtB V3 0.191 0.934 98.51 0.205 0.838 first_order gene01 +TrtC V3 - TrtA V3 TrtA V3 TrtC V3 1.625 0.945 90.82 1.721 0.089 first_order gene01 +TrtC V3 - TrtB V3 TrtB V3 TrtC V3 1.434 0.958 90.33 1.497 0.138 first_order gene01 +``` + +--- + +## Branch A with Second-Order Contrasts + +At validation time, `geneLME()` prints the numbered first-order list (in `contrast_spec` row order) to guide vector construction. Secondary vectors must have length `nrow(contrast_spec)`. + +```r +result_A2 <- geneLME( + dat = dat, + formula_str = "~ treatment * visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, # 6 rows, order defines vector positions + contrasts_secondary = list( + # my_spec rows: 1=TrtB V2-TrtA V2, 2=TrtC V2-TrtA V2, 3=TrtC V2-TrtB V2, + # 4=TrtB V3-TrtA V3, 5=TrtC V3-TrtA V3, 6=TrtC V3-TrtB V3 + "TrtA vs TrtB: V3 vs V2" = c(1, 0, -1, 0, 0, 0), # row1 − row3: V2 vs V3 delta + "TrtA vs TrtC: V3 vs V2" = c(0, 1, 0,-1, 0, 0) # row2 − row4 + ), + n_cores = 10 +) +# lme_contrast: first_order (6 × n_genes) + second_order (2 × n_genes) rows +``` + +**Validation message printed:** +``` +contrasts_secondary will be applied to the first-order interaction contrasts +in the order they appear in contrast_spec (6 contrasts): +1. TrtB V2 - TrtA V2 +2. TrtC V2 - TrtA V2 +3. TrtC V2 - TrtB V2 +4. TrtB V3 - TrtA V3 +5. TrtC V3 - TrtA V3 +6. TrtC V3 - TrtB V3 +Ensure contrasts_secondary vectors have length 6, with each element +corresponding to the contrast at that position. +``` + +--- + +## Branch B — Non-Interaction Contrasts + +**When to use:** model is additive (no interaction), and you want named contrasts on the marginal means of one variable, optionally evaluated within specific levels of a second variable. + +### Step 1 — Inspect levels + +```r +ref <- geneLME_contrast_spec(dat$targets, contrast_vars = c("treatment", "visit")) +# treatment levels (alphabetical): TrtA[1], TrtB[2], TrtC[3] +# → contrasts_primary vectors must have length 3, positions = [TrtA, TrtB, TrtC] +# visit levels: V1, V2, V3, V4 → pass subset to contrast_var_2_levels +``` + +### Step 2 — Run + +```r +result_B <- geneLME( + dat = dat, + formula_str = "~ treatment + visit + age + sex + rNANgUl + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), # [1] = primary; [2] = by-variable + contrast_var_2_levels = c("V2", "V3"), # restrict output to these visit levels + contrasts_primary = list( + "TrtC vs TrtA" = c(-1, 0, 1), # positions: [TrtA=−1, TrtB=0, TrtC=+1] + "TrtB vs TrtA" = c(-1, 1, 0) + ), + contrasts_secondary = list( + "TrtC vs TrtB" = c(1, -1) # length = number of primary contrasts (2) + ), + n_cores = 10 +) +``` + +### Sample `lme_contrast` output (per gene: 2 primary × 2 visits + 1 secondary × 2 visits = 6 rows) + +``` + contrast visit estimate SE df t.ratio p.value contrast_order gene +TrtC vs TrtA V2 0.814 0.457 101.6 1.782 0.078 first_order gene01 +TrtB vs TrtA V2 0.009 0.457 102.3 0.019 0.984 first_order gene01 +TrtC vs TrtA V3 0.814 0.457 101.6 1.782 0.078 first_order gene01 +TrtB vs TrtA V3 0.009 0.457 102.3 0.019 0.984 first_order gene01 +TrtC vs TrtB V2 0.805 0.462 99.1 1.742 0.085 second_order gene01 +TrtC vs TrtB V3 0.805 0.462 99.1 1.742 0.085 second_order gene01 +``` + +> **Note:** In an additive model, estimates are identical across V2 and V3 — `contrast_var_2_levels` restricts *which* visit cells `emmeans` evaluates at, but since there is no interaction the treatment effect is constant across visits. This filter is most useful to control the number of output rows and limit multiple testing burden. + +--- + +## `lme_anova` Output Structure + +One row per model term per gene. Key columns: + +| Column | Description | +|---|---| +| `term` | Predictor name (e.g. `"treatment"`, `"treatment:visit"`, `"age"`) | +| `statistic` | Chi-square statistic from `car::Anova()` | +| `df` | Degrees of freedom | +| `p.value` | p-value | +| `gene` | Gene identifier | +| `model_status` | `"success"` or error message | +| `predictor_class` | `"continuous"`, `"two-level-categorical"`, `"multi-level-categorical"`, or `"interaction"` | +| `Estimate_source` | `"lme_summary"` (value in `Estimate`/`Estimate_SE`) or `"seeContrasts"` (NA — use contrast output for estimate) | +| `Estimate` | Coefficient estimate where available; NA for multi-level or complex interactions | +| `Estimate_SE` | Standard error of estimate where available | + +--- + +## Error Handling and Singular Fits + +Per-gene outcomes are tracked via a `model_status` column in both `lme_anova` and `lme_contrast`, and summarised in `lme_err` (named character vector, gene → status). Possible values: + +- **`"success"`** — model converged cleanly; all results are reliable. +- **`"singular_fit"`** — `isSingular()` was `TRUE`; random effect variance hit its boundary (zero). Fixed effect estimates and contrasts are still returned and are numerically valid. Common with small N or highly collinear random/fixed effects. Filter downstream if desired. +- **Unexpected error string** — `tryCatch` caught an unexpected error; rows for that gene contain NAs. + +Note: singular fits were previously treated as a hard `stop()` that excluded the gene entirely. They are now flagged and returned, giving users the choice to retain or filter. + +```r +table(result$lme_err) +non_success <- names(result$lme_err)[result$lme_err != "success"] + +# Filter to clean fits only downstream: +result$lme_contrast %>% filter(model_status == "success") +``` diff --git a/R_functions/geneLME_test.R b/R_functions/geneLME_test.R new file mode 100644 index 0000000..7786d78 --- /dev/null +++ b/R_functions/geneLME_test.R @@ -0,0 +1,419 @@ +######################################################## +# geneLME_test.R +# Mock data and test cases for geneLME functions. +# Set SOURCE_FILE below to switch between implementations. +# +# Design: paired treatment x visit study +# - 10 patients (ptID), each observed at 4 visits x 3 treatments +# - 3 treatments: "TrtA", "TrtB", "TrtC" +# - 4 visits: "V1", "V2", "V3", "V4" +# - 120 total samples (10 * 4 * 3) +# - 50 genes +# - Simulated voom weights matrix (same dims as E) +# +# Covariates included in targets: +# Patient-level (same value repeated across all samples for a given patient): +# sex — factor: "M" / "F" +# age — continuous: age at enrollment (years) +# Sample-level technical (vary per sample): +# rNANgUl — RNA concentration (continuous) +# percent_duplication — library duplication rate (continuous, 0–1) +# median_cv_coverage — coverage uniformity metric (continuous) +# lib.size — total mapped reads (continuous, large integer scale) +# norm.factors — TMM normalization factors (continuous, near 1) +######################################################## + +library(lme4) +library(emmeans) +library(car) +library(broom.mixed) +library(dplyr) +library(tibble) +library(purrr) +library(future) +library(future.apply) + +# Source implementation to test — change this line to switch versions: +# "geneLME_dev.R" — previous dev (singular fit = error, per-gene contrast build) +# "geneLME_dev2.R" — current dev (singular fit = flag, pre-computed contrasts) +# "geneLME.R" — stable merged version +SOURCE_FILE <- "geneLME.R" +source(SOURCE_FILE) +cat("Sourced:", SOURCE_FILE, "\n") + + +######################################################## +# 1. SIMULATE MOCK EList +######################################################## + +set.seed(42) + +n_patients <- 10 +treatments <- c("TrtA", "TrtB", "TrtC") +visits <- c("V1", "V2", "V3", "V4") +n_genes <- 50 + +# --- Patient-level attributes (one row per patient, then joined in) --- +# These are fixed characteristics that do not vary across visits or treatments +patient_meta <- data.frame( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + sex = factor(sample(c("M", "F"), n_patients, replace = TRUE)), + age = round(rnorm(n_patients, mean = 38, sd = 10)), + stringsAsFactors = FALSE +) + +# Build targets (sample metadata) +# expand.grid gives one row per ptID x treatment x visit combination +targets <- expand.grid( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + treatment = treatments, + visit = visits, + stringsAsFactors = FALSE +) %>% + arrange(ptID, treatment, visit) %>% + # Join patient-level covariates — sex and age are identical across all + # samples from the same patient, as in real data + left_join(patient_meta, by = "ptID") %>% + mutate( + sample_id = paste(ptID, treatment, visit, sep = "_"), + # --- Sample-level technical covariates --- + # These vary independently per sample (sequencing run characteristics) + rNANgUl = rnorm(n(), mean = 5, sd = 1), + percent_duplication = runif(n(), min = 0.05, max = 0.55), + median_cv_coverage = rnorm(n(), mean = 0.85, sd = 0.08), + lib.size = round(rnorm(n(), mean = 20e6, sd = 3e6)), + norm.factors = rnorm(n(), mean = 1, sd = 0.05) + ) + +rownames(targets) <- targets$sample_id +n_samples <- nrow(targets) # 120 + +# Simulate log2 expression matrix (genes x samples) +# Add a modest treatment*visit interaction effect to a subset of genes +E_mat <- matrix( + rnorm(n_genes * n_samples, mean = 8, sd = 2), + nrow = n_genes, + ncol = n_samples, + dimnames = list( + paste0("gene", sprintf("%02d", 1:n_genes)), + targets$sample_id + ) +) + +# Add a simulated effect: genes 1-10 have a TrtC:V3 upregulation +trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3") +E_mat[1:10, trtC_v3] <- E_mat[1:10, trtC_v3] + 2.5 + +# Add a patient random effect +for (pt in unique(targets$ptID)) { + pt_idx <- which(targets$ptID == pt) + E_mat[, pt_idx] <- E_mat[, pt_idx] + rnorm(1, 0, 1) +} + +# Simulated voom precision weights (all near 1, small variance) +W_mat <- matrix( + abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)), + nrow = n_genes, + ncol = n_samples, + dimnames = dimnames(E_mat) +) + +# Assemble EList-like list (mimics limma EList structure) +dat <- list( + E = E_mat, + weights = W_mat, + targets = targets +) + + +######################################################## +# 2. SMALL SUBSET FOR FAST TESTING +######################################################## + +dat_sub <- list( + E = dat$E[1:10, ], + weights = dat$weights[1:10, ], + targets = dat$targets +) + + +######################################################## +# 3. TEST: geneLME_contrast_spec() — both modes +######################################################## + +cat("\n--- Test: geneLME_contrast_spec() interaction mode ---\n") + +spec_template <- geneLME_contrast_spec( + targets = dat$targets, + contrast_vars = "treatment:visit" +) + +# spec_template has two columns: contrast_ref and contrast_lvl only. +# contrast_index is NOT in spec_template — it is added by geneLME() to its +# $contrast_spec return element after it receives the user's filtered spec. +print(head(spec_template, 10)) +cat("Total pairwise combinations:", nrow(spec_template), "\n") +cat("Columns:", paste(colnames(spec_template), collapse = ", "), "\n") + +# Filter to same-visit cross-treatment comparisons at V2 and V3. +my_spec <- spec_template %>% + filter( + # Both elements of the pair are at the same visit + sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl), + # Only visits V2 and V3 + sub(".* ", "", contrast_ref) %in% c("V2", "V3") + ) + +cat("Filtered spec rows:", nrow(my_spec), "\n") +print(my_spec) + +cat("\n--- Test: geneLME_contrast_spec() single-variable mode (one variable) ---\n") + +treatment_levels <- geneLME_contrast_spec( + targets = dat$targets, + contrast_vars = "treatment" +) +cat("Treatment levels (reference for building contrasts_primary):\n") +print(treatment_levels) + +cat("\n--- Test: geneLME_contrast_spec() multi-variable mode ---\n") + +# Pass both contrast variables together; the function explains how each maps +# to geneLME() arguments (contrasts_primary vs contrast_var_2_levels) +trt_visit_levels <- geneLME_contrast_spec( + targets = dat$targets, + contrast_vars = c("treatment", "visit") +) +cat("Returned list structure:\n") +str(trt_visit_levels) +cat("\ntreatment levels:\n") +print(trt_visit_levels$treatment) +cat("visit levels:\n") +print(trt_visit_levels$visit) + + +######################################################## +# 4. TEST: Branch A — explicit contrast_spec (interaction) +######################################################## + +cat("\n--- Test: Branch A (contrast_spec, interaction) ---\n") + +test_A <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + n_cores = 2 +) + +cat("ANOVA rows:", nrow(test_A$lme_anova), "\n") +cat("Contrast rows:", nrow(test_A$lme_contrast), "\n") +cat("Fit rows:", nrow(test_A$lme_fit), "\n") +cat("Model status summary (lme_err):\n") +print(table(test_A$lme_err)) +cat("Model status in ANOVA table:\n") +print(table(test_A$lme_anova$model_status)) + +# Verify singular fit genes still have non-NA contrast estimates +singular_genes <- names(test_A$lme_err)[test_A$lme_err == "singular_fit"] +if (length(singular_genes) > 0) { + singular_contrasts <- test_A$lme_contrast %>% filter(gene %in% singular_genes) + cat("Singular-fit genes with non-NA estimates:", + sum(!is.na(singular_contrasts$estimate)), "/", nrow(singular_contrasts), "\n") + cat("4 PASS (singular_fit) — singular genes return estimates with flag\n") +} else { + cat("No singular fits in this run (unexpected with 10-patient mock data)\n") +} + +cat("\nSample contrast output:\n") +print(head(test_A$lme_contrast %>% select(gene, model_status, contrast, contrast_ref, contrast_lvl, estimate, p.value), 10)) + + +######################################################## +# 4b. TEST: Branch A — with second-order contrasts +######################################################## + +# my_spec (after filtering) has 6 first-order contrasts. geneLME() attaches an +# indexed copy of my_spec to result_A$contrast_spec — contrast_index = 1:nrow(my_spec) +# (simple row positions in the filtered spec). Use these indices when building +# contrasts_secondary vectors. The row order within my_spec determines position in +# contrasts_secondary vectors, since geneLME() iterates over seq_len(nrow(contrast_spec)). +# +# Expected my_spec row order (alphabetical interaction level ordering): +# row 1 (contrast_index=1): TrtB V2 - TrtA V2 +# row 2 (contrast_index=2): TrtC V2 - TrtA V2 +# row 3 (contrast_index=3): TrtC V2 - TrtB V2 +# row 4 (contrast_index=4): TrtB V3 - TrtA V3 +# row 5 (contrast_index=5): TrtC V3 - TrtA V3 +# row 6 (contrast_index=6): TrtC V3 - TrtB V3 +# +# Second-order contrasts: difference-of-differences across visits +# "TrtA vs TrtB: V3 minus V2 effect": row 4 - row 1 → c(-1, 0, 0, 1, 0, 0) +# "TrtA vs TrtC: V3 minus V2 effect": row 5 - row 2 → c(0, -1, 0, 0, 1, 0) +# +# Verify row order with: test_A$contrast_spec +# Vectors must have length 6, one element per row of my_spec (in row order). + +cat("\n--- Test: Branch A with second-order contrasts ---\n") +cat("Indexed contrast_spec from test_A (verify row ordering before specifying secondary contrasts):\n") +print(test_A$contrast_spec) + +test_A2 <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + contrasts_secondary = list( + "TrtA vs TrtB: V3 minus V2 effect" = c(-1, 0, 0, 1, 0, 0), # row 4 - row 1 + "TrtA vs TrtC: V3 minus V2 effect" = c(0, -1, 0, 0, 1, 0) # row 5 - row 2 + ), + n_cores = 2 +) + +cat("Contrast rows (should include second_order):", nrow(test_A2$lme_contrast), "\n") +cat("Contrast orders present:\n") +print(table(test_A2$lme_contrast$contrast_order)) +cat("\nSample second-order contrast output:\n") +print(test_A2$lme_contrast[test_A2$lme_contrast$contrast_order == "second_order", ]) + + +######################################################## +# 5. TEST: Branch B — non-interaction (regression test) +######################################################## + +cat("\n--- Test: Branch B (non-interaction, regression test) ---\n") + +# Treatment levels in alphabetical order (as emmeans sees them): TrtA, TrtB, TrtC +# contrasts_primary vectors have length 3; positions correspond to: [TrtA, TrtB, TrtC] + +test_B <- geneLME( + dat = dat_sub, + formula_str = "~ treatment + visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), + contrast_var_2_levels = c("V2", "V3"), + contrasts_primary = list( + "TrtC vs TrtA" = c(-1, 0, 1), + "TrtB vs TrtA" = c(-1, 1, 0) + ), + contrasts_secondary = list("TrtC vs TrtB" = c(1, -1)), + n_cores = 2 +) + +cat("ANOVA rows:", nrow(test_B$lme_anova), "\n") +cat("Contrast rows:", nrow(test_B$lme_contrast), "\n") +cat("Model status summary (lme_err):\n") +print(table(test_B$lme_err)) +cat("Model status in ANOVA table:\n") +print(table(test_B$lme_anova$model_status)) + +cat("\nSample contrast output:\n") +print(head(test_B$lme_contrast %>% select(gene, model_status, contrast, contrast_ref, contrast_lvl, estimate, p.value), 10)) + + +######################################################## +# 6. TEST: Validation errors (should each produce an informative error/warning) +######################################################## + +cat("\n--- Test: Input validation errors ---\n") + +# 6a. Missing formula variable +tryCatch( + geneLME(dat_sub, formula_str = "~ NONEXISTENT_VAR + (1|ptID)", n_cores = 2), + error = function(e) cat("6a PASS — missing formula var:", conditionMessage(e), "\n") +) + +# 6b. model_weights = TRUE but no dat$weights +dat_no_w <- dat_sub; dat_no_w$weights <- NULL +tryCatch( + geneLME(dat_no_w, formula_str = "~ treatment + (1|ptID)", model_weights = TRUE, n_cores = 2), + error = function(e) cat("6b PASS — missing weights:", conditionMessage(e), "\n") +) + +# 6c. Interaction contrast requested but interaction NOT in formula +tryCatch( + geneLME(dat_sub, + formula_str = "~ treatment + visit + age + (1|ptID)", # additive — no interaction + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + n_cores = 2), + error = function(e) cat("6c PASS — interaction not in formula:", conditionMessage(e), "\n") +) + +# 6d. Interaction contrast requested but contrast_spec not provided +tryCatch( + geneLME(dat_sub, + formula_str = "~ treatment * visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = "treatment:visit", + # contrast_spec intentionally omitted + n_cores = 2), + error = function(e) cat("6d PASS — interaction contrast_spec missing:", conditionMessage(e), "\n") +) + +# 6e. contrast_spec has wrong columns +tryCatch( + geneLME(dat_sub, + formula_str = "~ treatment * visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = data.frame(a = "x", b = "y"), + n_cores = 2), + error = function(e) cat("6e PASS — bad contrast_spec columns:", conditionMessage(e), "\n") +) + +# 6f. contrast_var_2_levels has invalid levels +tryCatch( + geneLME(dat_sub, + formula_str = "~ treatment + visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), + contrast_var_2_levels = c("V2", "NOTAVISIT"), + contrasts_primary = list("TrtC vs TrtA" = c(-1, 0, 1)), + n_cores = 2), + error = function(e) cat("6f PASS — invalid contrast_var_2_levels:", conditionMessage(e), "\n") +) + +# 6g. contrasts_secondary with wrong length → soft-fail (returns early with $contrast_spec, +# all other elements NULL). This is NOT a stop() — it returns an invisible list. +cat("\n--- Test: soft-fail on wrong-length contrasts_secondary ---\n") + +soft_fail_A <- geneLME( + dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + contrasts_secondary = list("wrong length" = rep(0, 99)), # should be length 6 + n_cores = 2 +) + +cat("6g PASS — soft-fail Branch A:\n") +cat(" NULL elements:", paste(names(which(sapply(soft_fail_A, is.null))), collapse = ", "), "\n") +cat(" $contrast_spec populated:\n") +print(soft_fail_A$contrast_spec) + +soft_fail_B <- geneLME( + dat_sub, + formula_str = "~ treatment + visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), + contrasts_primary = list("TrtC vs TrtA" = c(-1, 0, 1), + "TrtB vs TrtA" = c(-1, 1, 0)), + contrasts_secondary = list("wrong length" = rep(0, 99)), # should be length 2 + n_cores = 2 +) + +cat("\n6g PASS — soft-fail Branch B:\n") +cat(" NULL elements:", paste(names(which(sapply(soft_fail_B, is.null))), collapse = ", "), "\n") +cat(" $contrast_spec populated:\n") +print(soft_fail_B$contrast_spec) + +cat("\nAll validation tests complete.\n") diff --git a/R_functions/geneLME_tutorial.Rmd b/R_functions/geneLME_tutorial.Rmd new file mode 100644 index 0000000..e9d09ba --- /dev/null +++ b/R_functions/geneLME_tutorial.Rmd @@ -0,0 +1,759 @@ +--- +title: "geneLME: Scalable Per-Gene Linear Mixed Effects Models" +subtitle: "Function Tutorial with Worked Examples" +date: "`r Sys.Date()`" +output: + html_document: + toc: true + toc_float: + collapsed: false + smooth_scroll: true + toc_depth: 3 + theme: flatly + highlight: tango + code_folding: show + df_print: paged +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set( + echo = TRUE, + message = FALSE, + warning = FALSE, + comment = "#>", + fig.align = "center" +) +``` + +--- + +# Overview + +`geneLME` fits one linear mixed effects model per gene across a full RNA-seq expression matrix, +extracting ANOVA tables and user-defined `emmeans`-based contrasts in parallel via the `future` +framework. It is designed around the `limma` EList data structure. + +## Key capabilities + +- Fits `lmer` models per gene in parallel (`future_lapply`) +- Supports voom precision weights (`dat$weights`) +- Extracts `car::Anova()` type II ANOVA tables with per-predictor coefficient estimates +- Flexible contrast specification: + - **Branch A:** explicit pairwise contrasts across interaction cells via a filterable `contrast_spec` data frame + - **Branch B:** named contrast vectors on main-effect marginal means, optionally within levels of a grouping variable +- Optional second-order contrasts (contrasts-of-contrasts) in both branches +- Pre-flight input validation with informative error messages +- Soft-fail on wrong-length `contrasts_secondary`: returns `$contrast_spec` (indexed) for debugging without running models +- Per-gene outcome tracking: `model_status` column flags singular fits (`"singular_fit"`) vs clean fits (`"success"`); results are returned for all genes, not dropped + +## Package dependencies + +```{r libs} +library(lme4) +library(emmeans) +library(car) +library(broom.mixed) +library(dplyr) +library(tibble) +library(purrr) +library(future) +library(future.apply) + +source("geneLME.R") +``` + +--- + +# Mock Data + +All examples use a simulated EList-like object with a **3-treatment × 4-visit paired design** +(10 patients, 120 samples, 50 genes). Genes 1–10 have a simulated `TrtC:V3` upregulation of +2.5 +log2 units to provide a detectable signal in Branch A examples. + +```{r mock-data} +set.seed(42) + +n_patients <- 10 +treatments <- c("TrtA", "TrtB", "TrtC") +visits <- c("V1", "V2", "V3", "V4") +n_genes <- 50 + +# Patient-level covariates +patient_meta <- data.frame( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + sex = factor(sample(c("M", "F"), n_patients, replace = TRUE)), + age = round(rnorm(n_patients, mean = 38, sd = 10)), + stringsAsFactors = FALSE +) + +# Sample metadata (targets) +targets <- expand.grid( + ptID = paste0("pt", sprintf("%02d", 1:n_patients)), + treatment = treatments, + visit = visits, + stringsAsFactors = FALSE +) %>% + arrange(ptID, treatment, visit) %>% + left_join(patient_meta, by = "ptID") %>% + mutate( + sample_id = paste(ptID, treatment, visit, sep = "_"), + rNANgUl = rnorm(n(), mean = 5, sd = 1), + percent_duplication = runif(n(), min = 0.05, max = 0.55), + median_cv_coverage = rnorm(n(), mean = 0.85, sd = 0.08), + lib.size = round(rnorm(n(), mean = 20e6, sd = 3e6)), + norm.factors = rnorm(n(), mean = 1, sd = 0.05) + ) +rownames(targets) <- targets$sample_id + +# Expression matrix +n_samples <- nrow(targets) +E_mat <- matrix(rnorm(n_genes * n_samples, mean = 8, sd = 2), + nrow = n_genes, ncol = n_samples, + dimnames = list(paste0("gene", sprintf("%02d", 1:n_genes)), + targets$sample_id)) + +# Simulated TrtC:V3 effect on genes 1-10 +trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3") +E_mat[1:10, trtC_v3] <- E_mat[1:10, trtC_v3] + 2.5 + +# Patient random effect +for (pt in unique(targets$ptID)) { + idx <- which(targets$ptID == pt) + E_mat[, idx] <- E_mat[, idx] + rnorm(1, 0, 1) +} + +# Voom-like precision weights +W_mat <- matrix(abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)), + nrow = n_genes, ncol = n_samples, + dimnames = dimnames(E_mat)) + +# EList-like object +dat <- list(E = E_mat, weights = W_mat, targets = targets) + +# Small subset for faster examples +dat_sub <- list(E = dat$E[1:10, ], weights = dat$weights[1:10, ], targets = dat$targets) + +cat("Design:", n_patients, "patients ×", length(treatments), "treatments ×", + length(visits), "visits =", n_samples, "samples\n") +cat("Genes:", n_genes, "(full) /", nrow(dat_sub$E), "(subset used in examples)\n") +``` + +--- + +# Step 0: `geneLME_contrast_spec()` — Inspect Levels Before Running + +Before calling `geneLME()`, use `geneLME_contrast_spec()` to enumerate available contrast +levels and understand exactly how to construct your contrast arguments. This function has two +modes depending on whether `contrast_vars` contains `":"`. + +## Interaction mode + +Pass a single `"var_a:var_b"` string to get all pairwise combinations of interaction cells. +This returns a `data.frame` that you filter down to the specific contrasts of interest and +pass directly as `contrast_spec` to `geneLME()`. + +```{r contrast-spec-interaction} +spec_template <- geneLME_contrast_spec( + targets = dat$targets, + contrast_vars = "treatment:visit" +) + +# spec_template has two columns: contrast_ref and contrast_lvl. +# contrast_index is NOT included here — it is added by geneLME() to its $contrast_spec +# output element once it receives your filtered spec. +cat("Total pairwise combinations:", nrow(spec_template), "\n\n") +head(spec_template, 12) +``` + +Filter to the contrasts of interest — here, same-visit cross-treatment comparisons at V2 and V3: + +```{r contrast-spec-filter} +my_spec <- spec_template %>% + filter( + sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl), # same visit + sub(".* ", "", contrast_ref) %in% c("V2", "V3") # V2 and V3 only + ) + +cat("Filtered to", nrow(my_spec), "contrasts:\n") +print(my_spec) +``` + +## Single/multi-variable mode + +Pass a character vector of plain variable names (no `:`). Returns a **named list** — one +`data.frame(level)` per variable — and prints a message for each variable explaining its role +in `geneLME()` arguments. + +```{r contrast-spec-multivariable} +ref <- geneLME_contrast_spec( + targets = dat$targets, + contrast_vars = c("treatment", "visit") +) +``` + +The printed messages explain: + +- **`treatment`** (position 1, primary): its levels define the **length and position order** of + `contrasts_primary` vectors in `geneLME()` +- **`visit`** (position 2, secondary): its levels can be subset via `contrast_var_2_levels` + to restrict which groups the primary contrasts are computed within + +```{r contrast-spec-multivariable-show} +cat("treatment levels (contrasts_primary vector positions):\n") +print(ref$treatment) + +cat("\nvisit levels (available for contrast_var_2_levels filtering):\n") +print(ref$visit) +``` + +--- + +# Branch A: Interaction Contrasts via `contrast_spec` + +**Use when:** the model formula contains an interaction term (`treatment * visit` or +`treatment:visit`) and you want specific, explicitly-defined pairwise contrasts across +interaction cells. + +Under the hood, `geneLME_fit()` computes the full `emmeans` object for the interaction, then +builds one named contrast vector per row of `contrast_spec` — setting the reference cell to +−1, the comparison cell to +1, and all others to 0. This guarantees that only the contrasts +you define are run. + +## Basic Branch A call + +```{r branch-a} +result_A <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", # single ":" string → Branch A + contrast_spec = my_spec, # the filtered data.frame from geneLME_contrast_spec() + n_cores = 2 +) +``` + +## Output structure + +```{r branch-a-output-structure} +cat("Output elements:", paste(names(result_A), collapse = ", "), "\n\n") + +cat("lme_fit (AIC per gene):\n") +print(result_A$lme_fit) + +cat("\nModel status summary:\n") +print(table(result_A$lme_err)) + +# $contrast_spec is the indexed copy of my_spec attached by geneLME(). +# contrast_index here is 1:nrow(my_spec) — the row position within the filtered +# spec. This is the stable index you should use when building contrasts_secondary vectors. +cat("\n$contrast_spec (indexed by geneLME):\n") +print(result_A$contrast_spec) +``` + +## `lme_anova` — ANOVA table + +One row per model term per gene. `predictor_class` classifies each term, and `Estimate_source` +indicates whether a coefficient estimate is available directly (`"lme_summary"`) or should be +read from the contrast output (`"seeContrasts"`). `p.value_adj` is the FDR-adjusted p-value +computed across all genes **within each model term** (Benjamini-Hochberg by default). + +```{r branch-a-anova} +cat("ANOVA rows:", nrow(result_A$lme_anova), "\n") +cat(" (", length(unique(result_A$lme_anova$term)), "terms ×", + length(unique(result_A$lme_anova$gene)), "genes)\n\n") + +# Show one gene in full +result_A$lme_anova %>% + filter(gene == "gene01") %>% + select(term, statistic, df, p.value, p.value_adj, predictor_class, Estimate_source, Estimate, Estimate_SE) +``` + +## `lme_contrast` — contrast results + +One row per defined contrast per gene. `contrast_order` is always `"first_order"` in a basic +Branch A call (no second-order contrasts specified). `p.value_adj` is FDR-adjusted across all +genes **within each contrast × contrast_order combination**. + +`contrast_ref` and `contrast_lvl` are populated for **Branch A first-order contrasts** — +they record exactly which interaction cell is the reference (−1) and which is the comparison +(+1), eliminating any ambiguity in how the estimate is signed. For second-order contrasts and +all Branch B contrasts these columns are `NA` (no single ref/lvl pair applies). + +```{r branch-a-contrast} +cat("Contrast rows:", nrow(result_A$lme_contrast), "\n") +cat(" (", length(unique(result_A$lme_contrast$contrast)), "contrasts ×", + length(unique(result_A$lme_contrast$gene)), "genes)\n\n") + +result_A$lme_contrast %>% + filter(gene == "gene01") %>% + select(contrast, contrast_ref, contrast_lvl, estimate, SE, df, t.ratio, p.value, p.value_adj, contrast_order) +``` + +Notice that gene01 shows large, significant effects at V3 (TrtC vs others) but not at V2, +consistent with the simulated `TrtC:V3` upregulation. + +--- + +# Branch A: Adding Second-Order Contrasts + +Second-order contrasts are contrasts-of-contrasts: each operates on the vector of first-order +contrast estimates, allowing you to ask whether a treatment difference *changes* across visits. + +At validation time, `geneLME()` prints the numbered first-order list in `contrast_spec` row +order, so you can verify the position indices before constructing your secondary vectors. +**Secondary vectors must have length equal to `nrow(contrast_spec)`**. + +```{r branch-a-second-order} +# At validation time, geneLME() prints the first-order contrast list in my_spec row +# order. You can also inspect result_A$contrast_spec for the indexed row ordering. +# With my_spec as defined above (same-visit, V2 and V3), alphabetical ordering gives: +# row 1: TrtB V2 - TrtA V2 +# row 2: TrtC V2 - TrtA V2 +# row 3: TrtC V2 - TrtB V2 +# row 4: TrtB V3 - TrtA V3 +# row 5: TrtC V3 - TrtA V3 +# row 6: TrtC V3 - TrtB V3 +# +# Second-order questions: +# "Did the TrtA vs TrtB difference change from V2 to V3?" → row4 − row1 +# "Did the TrtA vs TrtC difference change from V2 to V3?" → row5 − row2 +# +# Verify with: result_A$contrast_spec + +result_A2 <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + contrasts_secondary = list( + "TrtA vs TrtB: V3 minus V2 effect" = c(-1, 0, 0, 1, 0, 0), # row4 − row1 + "TrtA vs TrtC: V3 minus V2 effect" = c(0, -1, 0, 0, 1, 0) # row5 − row2 + ), + n_cores = 2 +) +``` + +```{r branch-a-second-order-output} +cat("Contrast order breakdown:\n") +print(table(result_A2$lme_contrast$contrast_order)) + +cat("\nSecond-order results for gene01 and gene09 (strongest TrtC:V3 effect):\n") +# contrast_ref/contrast_lvl are NA for second-order rows (no single ref/lvl pair) +result_A2$lme_contrast %>% + filter(contrast_order == "second_order", gene %in% c("gene01", "gene09")) %>% + select(gene, contrast, contrast_ref, contrast_lvl, estimate, SE, df, t.ratio, p.value) +``` + +## Programmatic second-order contrast construction via `$contrast_spec` + +When there are many first-order contrasts, hand-coding the position of each `−1`/`+1` in +every secondary vector is error-prone. After a successful `geneLME()` call (or a soft-fail +call — see [Input Validation]), the `$contrast_spec` element of the returned list contains +an indexed copy of `contrast_spec` with a `contrast_index` column added by `geneLME()`. +`contrast_index` is simply `1:nrow(contrast_spec)` — the row positions in the filtered spec +you passed in. Use these as stable handles when building `contrasts_secondary` vectors +programmatically. + +**Workflow:** run `geneLME()` once (or use a dry-run via a wrong-length `contrasts_secondary` +soft-fail), inspect `result$contrast_spec` to confirm the row ordering and indices, then build +and pass the correct `contrasts_secondary` list. + +**Example scenario:** within each treatment pair, ask whether the between-treatment difference +changed from V2 to V3 — i.e., `(TrtX−TrtY at V3) − (TrtX−TrtY at V2)`. + +```{r secondary-contrasts-programmatic} +# result_A$contrast_spec is the indexed version of my_spec as seen by geneLME(). +# contrast_index = 1:nrow(my_spec) (simple row positions after filtering). +cat("Indexed contrast_spec from result_A:\n") +print(result_A$contrast_spec) + +# Annotate with the visit for each contrast (extracted from the interaction label) +indexed_spec <- result_A$contrast_spec %>% + mutate(visit = sub(".* ", "", contrast_ref)) # extract visit from the interaction label + +print(indexed_spec) +``` + +```{r secondary-contrasts-build} +# Build a two-column lookup: one contrast_index per sign, one row per second-order contrast. +# group_by the treatment pair (shared across visits); within each group there are exactly +# two rows — one for V2 and one for V3 — giving the index_neg (V2, subtracted) and +# index_pos (V3, added). +secondary_lookup <- indexed_spec %>% + # Create a treatment-pair label that is the same regardless of visit + mutate(trt_pair = paste(sub(" .*", "", contrast_ref), # var_a from ref + sub(" .*", "", contrast_lvl), # var_a from lvl + sep = " vs ")) %>% + arrange(trt_pair, visit) %>% # V2 before V3 (alphabetical) + group_by(trt_pair) %>% + summarise( + secondary_contrast_name = paste0("(", last(contrast_lvl), " - ", last(contrast_ref), ")", + " - ", + "(", first(contrast_lvl), " - ", first(contrast_ref), ")"), + index_neg = first(contrast_index), # V2 row → subtracted (−1) + index_pos = last(contrast_index), # V3 row → added (+1) + .groups = "drop" + ) + +print(secondary_lookup) +``` + +```{r secondary-contrasts-format} +# Format as a named list of zero vectors with −1/+1 placed by contrast_index. +# The vector length must equal nrow(my_spec) — the number of first-order contrasts. +n_first_order <- nrow(my_spec) + +contrasts_secondary_prog <- setNames( + lapply(seq_len(nrow(secondary_lookup)), function(i) { + v <- rep(0, n_first_order) + # contrast_index IS the row position (1:nrow), so it can be used directly. + # Using which() for robustness in case the data.frame is reordered. + v[which(indexed_spec$contrast_index == secondary_lookup$index_neg[i])] <- -1 + v[which(indexed_spec$contrast_index == secondary_lookup$index_pos[i])] <- 1 + v + }), + secondary_lookup$secondary_contrast_name +) + +# Inspect: each vector should have exactly one −1 and one +1 +print(contrasts_secondary_prog) +``` + +```{r secondary-contrasts-run} +result_A_prog <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + contrasts_secondary = contrasts_secondary_prog, + n_cores = 2 +) + +cat("Second-order results for gene01:\n") +result_A_prog$lme_contrast %>% + filter(contrast_order == "second_order", gene == "gene01") %>% + select(gene, contrast, contrast_ref, contrast_lvl, estimate, SE, df, t.ratio, p.value) +``` + +> **Key design note:** `geneLME()` appends `contrast_index` (= `1:nrow(contrast_spec)`) to its +> `$contrast_spec` output element — not to the `contrast_spec` data frame you pass in. This +> means `contrast_index` always reflects the row positions in *your filtered spec*, never in +> the full unfiltered template. The `which(indexed_spec$contrast_index == ...)` lookup maps +> those indices back to row positions for vector construction, and is robust to any reordering +> of the spec data frame. + +--- + +# Branch B: Non-Interaction Contrasts + +**Use when:** the model is additive (no interaction term), and you want named contrasts on the +marginal means of one variable. Optionally, compute those contrasts within specific levels of a +second grouping variable (`contrast_var_2_levels`), and optionally follow up with second-order +contrasts across the primary contrast estimates. + +Under the hood, `geneLME_fit()` calls `emmeans()` with a `spec` formula derived from +`contrast_vars`, using `contrast_var_2_levels` as the `at =` filter. `contrasts_primary` +vectors are passed directly to `emmeans::contrast()`. + +## Inspecting levels before building contrast vectors + +Before specifying `contrasts_primary`, confirm the level ordering emmeans will use — it is +alphabetical by default: + +```{r branch-b-spec} +ref_B <- geneLME_contrast_spec(dat$targets, contrast_vars = c("treatment", "visit")) +``` + +`treatment` levels are `TrtA[1]`, `TrtB[2]`, `TrtC[3]` — so `contrasts_primary` vectors +must have length 3 with positions corresponding to those labels: + +``` +"TrtC vs TrtA" = c(-1, 0, 1) # TrtA=−1, TrtB=0, TrtC=+1 +"TrtB vs TrtA" = c(-1, 1, 0) # TrtA=−1, TrtB=+1, TrtC=0 +``` + +## Basic Branch B call + +```{r branch-b} +result_B <- geneLME( + dat = dat_sub, + formula_str = "~ treatment + visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), # [1] primary; [2] 'by' grouping variable + contrast_var_2_levels = c("V2", "V3"), # restrict to these visit levels + contrasts_primary = list( + "TrtC vs TrtA" = c(-1, 0, 1), + "TrtB vs TrtA" = c(-1, 1, 0) + ), + n_cores = 2 +) +``` + +```{r branch-b-output} +cat("Contrast rows:", nrow(result_B$lme_contrast), "\n") +cat(" (", length(unique(result_B$lme_contrast$contrast)), "contrasts ×", + length(contrast_var_2_levels <- c("V2","V3")), "visits ×", + length(unique(result_B$lme_contrast$gene)), "genes)\n\n") + +# contrast_ref and contrast_lvl are NA for Branch B (named contrast vectors, +# not a ref/lvl spec frame) +result_B$lme_contrast %>% + filter(gene == "gene01") %>% + select(contrast, contrast_ref, contrast_lvl, visit, estimate, SE, df, t.ratio, p.value, contrast_order) +``` + +> **Note:** In an additive model, treatment estimates are identical across V2 and V3 — there is +> no interaction, so the treatment effect does not depend on visit. `contrast_var_2_levels` +> controls *which* visit cells are included in the output, which is useful for limiting the +> number of tests and focusing results on visits of biological interest. + +## Branch B with second-order contrasts + +A second-order contrast operates on the vector of first-order contrast estimates. Here, +`contrasts_secondary` must have length equal to the number of primary contrasts (2 in this +example). The result asks: "Is the `TrtC vs TrtA` difference significantly larger than the +`TrtB vs TrtA` difference?" — i.e., is there a differential treatment response between TrtB +and TrtC relative to TrtA? + +```{r branch-b-second-order} +result_B2 <- geneLME( + dat = dat_sub, + formula_str = "~ treatment + visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), + contrast_var_2_levels = c("V2", "V3"), + contrasts_primary = list( + "TrtC vs TrtA" = c(-1, 0, 1), + "TrtB vs TrtA" = c(-1, 1, 0) + ), + contrasts_secondary = list( + "TrtC vs TrtB (2nd order)" = c(1, -1) # length = n primary contrasts (2) + ), + n_cores = 2 +) +``` + +```{r branch-b-second-order-output} +cat("Contrast order breakdown:\n") +print(table(result_B2$lme_contrast$contrast_order)) + +result_B2$lme_contrast %>% + filter(gene == "gene01") %>% + select(contrast, contrast_ref, contrast_lvl, visit, estimate, SE, df, t.ratio, p.value, contrast_order) +``` + +--- + +# FDR Adjustment + +`geneLME()` automatically appends a `p.value_adj` column to both `lme_anova` and +`lme_contrast` using `p.adjust()`. Adjustment is performed **across all genes within each +grouping unit** — not globally across all rows — so that each test family is treated +independently: + +| Output table | Grouping unit for adjustment | +|---------------|-------------------------------------------| +| `lme_anova` | Each model term (e.g. `treatment`, `treatment:visit`) | +| `lme_contrast`| Each contrast label × `contrast_order` | + +The default method is Benjamini-Hochberg (`"BH"`). Any method accepted by `p.adjust()` can +be specified via the `fdr_method` argument: + +```{r fdr-methods} +# Available methods +p.adjust.methods +``` + +```{r fdr-custom} +# Example: Bonferroni correction instead of BH +result_bonf <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + fdr_method = "bonferroni", + n_cores = 2 +) + +# Compare BH vs Bonferroni for one contrast across genes +comparison <- result_A$lme_contrast %>% + filter(contrast == first(contrast), contrast_order == "first_order") %>% + select(gene, p.value, p.value_adj_BH = p.value_adj) %>% + left_join( + result_bonf$lme_contrast %>% + filter(contrast == first(contrast), contrast_order == "first_order") %>% + select(gene, p.value_adj_bonf = p.value_adj), + by = "gene" + ) + +print(comparison) +``` + +> **Note on NA values:** genes whose models failed receive `NA` for `p.value`, which +> propagates to `p.value_adj`. These genes are excluded from the adjustment set, so the +> effective number of tests equals the number of successfully fitted genes. + +--- + +# Input Validation + +`geneLME()` validates all inputs before launching any parallel work. Informative errors are +raised for the most common misspecifications: + +```{r validation-errors} +run_validation_test <- function(label, expr) { + tryCatch( + { expr; cat(label, "— (no error raised)\n") }, + error = function(e) cat(label, "ERROR:\n ", conditionMessage(e), "\n\n"), + warning = function(w) cat(label, "WARNING:\n ", conditionMessage(w), "\n\n") + ) +} + +# 1. Formula variable missing from targets +run_validation_test("Test 1 — missing formula variable:", + geneLME(dat_sub, formula_str = "~ NONEXISTENT_VAR + (1|ptID)", n_cores = 2) +) + +# 2. Weights requested but not present +dat_no_w <- dat_sub; dat_no_w$weights <- NULL +run_validation_test("Test 2 — model_weights=TRUE but no dat$weights:", + geneLME(dat_no_w, formula_str = "~ treatment + (1|ptID)", model_weights = TRUE, n_cores = 2) +) + +# 3. Interaction contrast requested but interaction not in formula +run_validation_test("Test 3 — interaction contrast but additive formula:", + geneLME(dat_sub, + formula_str = "~ treatment + visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + n_cores = 2) +) + +# 4. Interaction contrast but contrast_spec not provided +run_validation_test("Test 4 — interaction contrast, contrast_spec = NULL:", + geneLME(dat_sub, + formula_str = "~ treatment * visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = "treatment:visit", + n_cores = 2) +) + +# 5. contrast_spec has wrong column names +run_validation_test("Test 5 — contrast_spec with wrong columns:", + geneLME(dat_sub, + formula_str = "~ treatment * visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = data.frame(a = "x", b = "y"), + n_cores = 2) +) + +# 6. contrast_var_2_levels contains an invalid level +run_validation_test("Test 6 — invalid contrast_var_2_levels:", + geneLME(dat_sub, + formula_str = "~ treatment + visit + age + (1|ptID)", + run_contrast = TRUE, + contrast_vars = c("treatment", "visit"), + contrast_var_2_levels = c("V2", "NOTAVISIT"), + contrasts_primary = list("TrtC vs TrtA" = c(-1, 0, 1)), + n_cores = 2) +) +``` + +When `contrasts_secondary` vectors have the wrong length, `geneLME()` **soft-fails**: it returns +early without running any models, but still populates `$contrast_spec` with the indexed row +ordering. This lets you inspect the indexing and fix your vectors without a hard error. + +```{r validation-soft-fail} +# 7. contrasts_secondary with wrong length → soft-fail with $contrast_spec populated +bad_result <- geneLME( + dat = dat_sub, + formula_str = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)", + model_weights = TRUE, + run_contrast = TRUE, + contrast_vars = "treatment:visit", + contrast_spec = my_spec, + contrasts_secondary = list( + "wrong length vector" = rep(0, 99) # should be length 6 = nrow(my_spec) + ), + n_cores = 2 +) + +cat("Elements of soft-fail result:\n") +print(sapply(bad_result, is.null)) # lme_anova/contrast/fit/err are NULL; contrast_spec is not + +cat("\n$contrast_spec (use these indices to fix contrasts_secondary):\n") +print(bad_result$contrast_spec) +``` + +--- + +# Error Handling and Singular Fits + +Per-gene errors are captured by `tryCatch` inside `geneLME_fit()` and do not abort the run. +Each gene's outcome is recorded in the `model_status` column present in both `lme_anova` +and `lme_contrast`, and also summarised in `lme_err` (a named character vector keyed by gene): + +- **`"success"`** — model converged cleanly; fixed effects and contrasts are fully reliable. +- **`"singular_fit"`** — `isSingular()` was `TRUE`, meaning the random effect variance hit its + boundary (zero). Fixed effect estimates are still returned and are numerically valid, but + the random effect structure may be over-specified for the data. Common with small sample sizes. + Filter these genes downstream if warranted. +- Any other value — an unexpected error was caught; rows for that gene will contain NAs. + +```{r error-handling} +# Check model status summary across all genes — Branch A +cat("Model status — Branch A:\n") +print(table(result_A$lme_err)) + +# With small mock data (10 patients), singular fits are expected due to +# patient-level covariates (sex, age) being collinear with the patient random effect. +# With real data at typical sample sizes this is less common. + +# Identify singular-fit or failed genes +non_success <- names(result_A$lme_err)[result_A$lme_err != "success"] +if (length(non_success) > 0) { + cat("\nNon-success genes and their status:\n") + print(result_A$lme_err[non_success]) + # For singular fits, results are still returned — filter if desired: + # result_A$lme_contrast %>% filter(model_status == "success") +} else { + cat("\nAll genes fitted successfully.\n") +} +``` + +--- + +# Quick-Reference: Argument Guide + +| Argument | Type | Required | Description | +|---|---|---|---| +| `dat` | list | Yes | EList-like: `$E`, `$weights` (optional), `$targets` | +| `formula_str` | character | Yes | RHS formula string, e.g. `"~ treatment * visit + (1\|ptID)"` | +| `model_weights` | logical | No | `TRUE` to use `dat$weights` as precision weights | +| `run_contrast` | logical | No | `TRUE` to run emmeans contrasts | +| `contrast_vars` | character | If `run_contrast=TRUE` | `"var_a:var_b"` (Branch A) or `c("var1", "var2")` (Branch B) | +| `contrast_var_2_levels` | character vector | No | Branch B: restrict 'by' variable to these levels | +| `contrast_spec` | data.frame | Required for Branch A | Columns `contrast_ref` and `contrast_lvl`; from `geneLME_contrast_spec()`. `geneLME()` attaches an indexed copy (with `contrast_index`) to `$contrast_spec` in its return value. | +| `contrasts_primary` | named list | Branch B | Named contrast vectors; length = levels of `contrast_vars[1]` | +| `contrasts_secondary` | named list | No | Second-order contrasts; length = `nrow(contrast_spec)` (Branch A) or `length(contrasts_primary)` (Branch B). Wrong lengths trigger a soft-fail with `$contrast_spec` populated for debugging. | +| `fdr_method` | character | No | P-value adjustment method passed to `p.adjust()`; default `"BH"` (Benjamini-Hochberg) | +| `n_cores` | integer | No | Number of parallel workers; defaults to `detectCores() − 4` | + +--- + +# Session Info + +```{r session-info} +sessionInfo() +``` diff --git a/R_functions/geneLME_tutorial.html b/R_functions/geneLME_tutorial.html new file mode 100644 index 0000000..ddf1d95 --- /dev/null +++ b/R_functions/geneLME_tutorial.html @@ -0,0 +1,4034 @@ + + + + + + + + + + + + + + +geneLME: Scalable Per-Gene Linear Mixed Effects Models + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+
+ +
+ + + + + + + +
+
+

Overview

+

geneLME fits one linear mixed effects model per gene +across a full RNA-seq expression matrix, extracting ANOVA tables and +user-defined emmeans-based contrasts in parallel via the +future framework. It is designed around the +limma EList data structure.

+
+

Key capabilities

+
    +
  • Fits lmer models per gene in parallel +(future_lapply)
  • +
  • Supports voom precision weights (dat$weights)
  • +
  • Extracts car::Anova() type II ANOVA tables with +per-predictor coefficient estimates
  • +
  • Flexible contrast specification: +
      +
    • Branch A: explicit pairwise contrasts across +interaction cells via a filterable contrast_spec data +frame
    • +
    • Branch B: named contrast vectors on main-effect +marginal means, optionally within levels of a grouping variable
    • +
  • +
  • Optional second-order contrasts (contrasts-of-contrasts) in both +branches
  • +
  • Pre-flight input validation with informative error messages
  • +
  • Soft-fail on wrong-length contrasts_secondary: returns +$contrast_spec (indexed) for debugging without running +models
  • +
  • Per-gene error capture: failed genes do not abort the run
  • +
+
+
+

Package dependencies

+
library(lme4)
+library(emmeans)
+library(car)
+library(broom.mixed)
+library(dplyr)
+library(tibble)
+library(purrr)
+library(future)
+library(future.apply)
+
+source("geneLME_dev.R")
+
+
+
+
+

Mock Data

+

All examples use a simulated EList-like object with a +3-treatment × 4-visit paired design (10 patients, 120 +samples, 50 genes). Genes 1–10 have a simulated TrtC:V3 +upregulation of +2.5 log2 units to provide a detectable signal in Branch +A examples.

+
set.seed(42)
+
+n_patients <- 10
+treatments <- c("TrtA", "TrtB", "TrtC")
+visits     <- c("V1", "V2", "V3", "V4")
+n_genes    <- 50
+
+# Patient-level covariates
+patient_meta <- data.frame(
+  ptID = paste0("pt", sprintf("%02d", 1:n_patients)),
+  sex  = factor(sample(c("M", "F"), n_patients, replace = TRUE)),
+  age  = round(rnorm(n_patients, mean = 38, sd = 10)),
+  stringsAsFactors = FALSE
+)
+
+# Sample metadata (targets)
+targets <- expand.grid(
+  ptID      = paste0("pt", sprintf("%02d", 1:n_patients)),
+  treatment = treatments,
+  visit     = visits,
+  stringsAsFactors = FALSE
+) %>%
+  arrange(ptID, treatment, visit) %>%
+  left_join(patient_meta, by = "ptID") %>%
+  mutate(
+    sample_id           = paste(ptID, treatment, visit, sep = "_"),
+    rNANgUl             = rnorm(n(), mean = 5,    sd = 1),
+    percent_duplication = runif(n(), min = 0.05,  max = 0.55),
+    median_cv_coverage  = rnorm(n(), mean = 0.85, sd = 0.08),
+    lib.size            = round(rnorm(n(), mean = 20e6, sd = 3e6)),
+    norm.factors        = rnorm(n(), mean = 1,    sd = 0.05)
+  )
+rownames(targets) <- targets$sample_id
+
+# Expression matrix
+n_samples <- nrow(targets)
+E_mat <- matrix(rnorm(n_genes * n_samples, mean = 8, sd = 2),
+                nrow = n_genes, ncol = n_samples,
+                dimnames = list(paste0("gene", sprintf("%02d", 1:n_genes)),
+                                targets$sample_id))
+
+# Simulated TrtC:V3 effect on genes 1-10
+trtC_v3 <- which(targets$treatment == "TrtC" & targets$visit == "V3")
+E_mat[1:10, trtC_v3] <- E_mat[1:10, trtC_v3] + 2.5
+
+# Patient random effect
+for (pt in unique(targets$ptID)) {
+  idx <- which(targets$ptID == pt)
+  E_mat[, idx] <- E_mat[, idx] + rnorm(1, 0, 1)
+}
+
+# Voom-like precision weights
+W_mat <- matrix(abs(rnorm(n_genes * n_samples, mean = 1, sd = 0.1)),
+                nrow = n_genes, ncol = n_samples,
+                dimnames = dimnames(E_mat))
+
+# EList-like object
+dat <- list(E = E_mat, weights = W_mat, targets = targets)
+
+# Small subset for faster examples
+dat_sub <- list(E = dat$E[1:10, ], weights = dat$weights[1:10, ], targets = dat$targets)
+
+cat("Design:", n_patients, "patients ×", length(treatments), "treatments ×",
+    length(visits), "visits =", n_samples, "samples\n")
+
#> Design: 10 patients × 3 treatments × 4 visits = 120 samples
+
cat("Genes:", n_genes, "(full) /", nrow(dat_sub$E), "(subset used in examples)\n")
+
#> Genes: 50 (full) / 10 (subset used in examples)
+
+
+
+

Step 0: geneLME_contrast_spec() — Inspect Levels Before +Running

+

Before calling geneLME(), use +geneLME_contrast_spec() to enumerate available contrast +levels and understand exactly how to construct your contrast arguments. +This function has two modes depending on whether +contrast_vars contains ":".

+
+

Interaction mode

+

Pass a single "var_a:var_b" string to get all pairwise +combinations of interaction cells. This returns a +data.frame that you filter down to the specific contrasts +of interest and pass directly as contrast_spec to +geneLME().

+
spec_template <- geneLME_contrast_spec(
+  targets       = dat$targets,
+  contrast_vars = "treatment:visit"
+)
+
+# spec_template has two columns: contrast_ref and contrast_lvl.
+# contrast_index is NOT included here — it is added by geneLME() to its $contrast_spec
+# output element once it receives your filtered spec.
+cat("Total pairwise combinations:", nrow(spec_template), "\n\n")
+
#> Total pairwise combinations: 66
+
head(spec_template, 12)
+
+ +
+

Filter to the contrasts of interest — here, same-visit +cross-treatment comparisons at V2 and V3:

+
my_spec <- spec_template %>%
+  filter(
+    sub(".* ", "", contrast_ref) == sub(".* ", "", contrast_lvl),  # same visit
+    sub(".* ", "", contrast_ref) %in% c("V2", "V3")               # V2 and V3 only
+  )
+
+cat("Filtered to", nrow(my_spec), "contrasts:\n")
+
#> Filtered to 6 contrasts:
+
print(my_spec)
+
#>   contrast_ref contrast_lvl
+#> 1      TrtA V2      TrtB V2
+#> 2      TrtA V2      TrtC V2
+#> 3      TrtB V2      TrtC V2
+#> 4      TrtA V3      TrtB V3
+#> 5      TrtA V3      TrtC V3
+#> 6      TrtB V3      TrtC V3
+
+
+

Single/multi-variable mode

+

Pass a character vector of plain variable names (no :). +Returns a named list — one +data.frame(level) per variable — and prints a message for +each variable explaining its role in geneLME() +arguments.

+
ref <- geneLME_contrast_spec(
+  targets       = dat$targets,
+  contrast_vars = c("treatment", "visit")
+)
+

The printed messages explain:

+
    +
  • treatment (position 1, primary): its +levels define the length and position order of +contrasts_primary vectors in geneLME()
  • +
  • visit (position 2, secondary): its +levels can be subset via contrast_var_2_levels to restrict +which groups the primary contrasts are computed within
  • +
+
cat("treatment levels (contrasts_primary vector positions):\n")
+
#> treatment levels (contrasts_primary vector positions):
+
print(ref$treatment)
+
#>   level
+#> 1  TrtA
+#> 2  TrtB
+#> 3  TrtC
+
cat("\nvisit levels (available for contrast_var_2_levels filtering):\n")
+
#> 
+#> visit levels (available for contrast_var_2_levels filtering):
+
print(ref$visit)
+
#>   level
+#> 1    V1
+#> 2    V2
+#> 3    V3
+#> 4    V4
+
+
+
+
+

Branch A: Interaction Contrasts via contrast_spec

+

Use when: the model formula contains an interaction +term (treatment * visit or treatment:visit) +and you want specific, explicitly-defined pairwise contrasts across +interaction cells.

+

Under the hood, geneLME_fit() computes the full +emmeans object for the interaction, then builds one named +contrast vector per row of contrast_spec — setting the +reference cell to −1, the comparison cell to +1, and all others to 0. +This guarantees that only the contrasts you define are run.

+
+

Basic Branch A call

+
result_A <- geneLME(
+  dat           = dat_sub,
+  formula_str   = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights = TRUE,
+  run_contrast  = TRUE,
+  contrast_vars = "treatment:visit",   # single ":" string → Branch A
+  contrast_spec = my_spec,             # the filtered data.frame from geneLME_contrast_spec()
+  n_cores       = 2
+)
+
+
+

Output structure

+
cat("Output elements:", paste(names(result_A), collapse = ", "), "\n\n")
+
#> Output elements: lme_anova, lme_contrast, lme_fit, lme_err, contrast_spec
+
cat("lme_fit (AIC per gene):\n")
+
#> lme_fit (AIC per gene):
+
print(result_A$lme_fit)
+
#>      gene      AIC
+#> 1  gene01 532.8037
+#> 2  gene02 532.7433
+#> 3  gene03 545.1509
+#> 4  gene04 511.5349
+#> 5  gene05 531.4956
+#> 6  gene06 524.0391
+#> 7  gene07 523.6012
+#> 8  gene08 504.2733
+#> 9  gene09 495.8422
+#> 10 gene10 534.7778
+
cat("\nModel status summary:\n")
+
#> 
+#> Model status summary:
+
print(table(result_A$lme_err))
+
#> 
+#> success 
+#>      10
+
# $contrast_spec is the indexed copy of my_spec attached by geneLME().
+# contrast_index here is 1:nrow(my_spec) — the row position within the filtered
+# spec. This is the stable index you should use when building contrasts_secondary vectors.
+cat("\n$contrast_spec (indexed by geneLME):\n")
+
#> 
+#> $contrast_spec (indexed by geneLME):
+
print(result_A$contrast_spec)
+
#>   contrast_index contrast_ref contrast_lvl
+#> 1              1      TrtA V2      TrtB V2
+#> 2              2      TrtA V2      TrtC V2
+#> 3              3      TrtB V2      TrtC V2
+#> 4              4      TrtA V3      TrtB V3
+#> 5              5      TrtA V3      TrtC V3
+#> 6              6      TrtB V3      TrtC V3
+
+
+

lme_anova — ANOVA table

+

One row per model term per gene. predictor_class +classifies each term, and Estimate_source indicates whether +a coefficient estimate is available directly +("lme_summary") or should be read from the contrast output +("seeContrasts"). p.value_adj is the +FDR-adjusted p-value computed across all genes within each model +term (Benjamini-Hochberg by default).

+
cat("ANOVA rows:", nrow(result_A$lme_anova), "\n")
+
#> ANOVA rows: 80
+
cat("  (", length(unique(result_A$lme_anova$term)), "terms ×",
+    length(unique(result_A$lme_anova$gene)), "genes)\n\n")
+
#>   ( 8 terms × 10 genes)
+
# Show one gene in full
+result_A$lme_anova %>%
+  filter(gene == "gene01") %>%
+  select(term, statistic, df, p.value, p.value_adj, predictor_class, Estimate_source, Estimate, Estimate_SE)
+
+ +
+
+
+

lme_contrast — contrast results

+

One row per defined contrast per gene. contrast_order is +always "first_order" in a basic Branch A call (no +second-order contrasts specified). p.value_adj is +FDR-adjusted across all genes within each contrast × +contrast_order combination.

+

contrast_ref and contrast_lvl are populated +for Branch A first-order contrasts — they record +exactly which interaction cell is the reference (−1) and which is the +comparison (+1), eliminating any ambiguity in how the estimate is +signed. For second-order contrasts and all Branch B contrasts these +columns are NA (no single ref/lvl pair applies).

+
cat("Contrast rows:", nrow(result_A$lme_contrast), "\n")
+
#> Contrast rows: 60
+
cat("  (", length(unique(result_A$lme_contrast$contrast)), "contrasts ×",
+    length(unique(result_A$lme_contrast$gene)), "genes)\n\n")
+
#>   ( 6 contrasts × 10 genes)
+
result_A$lme_contrast %>%
+  filter(gene == "gene01") %>%
+  select(contrast, contrast_ref, contrast_lvl, estimate, SE, df, t.ratio, p.value, p.value_adj, contrast_order)
+
+ +
+

Notice that gene01 shows large, significant effects at V3 (TrtC vs +others) but not at V2, consistent with the simulated +TrtC:V3 upregulation.

+
+
+
+
+

Branch A: Adding Second-Order Contrasts

+

Second-order contrasts are contrasts-of-contrasts: each operates on +the vector of first-order contrast estimates, allowing you to ask +whether a treatment difference changes across visits.

+

At validation time, geneLME() prints the numbered +first-order list in contrast_spec row order, so you can +verify the position indices before constructing your secondary vectors. +Secondary vectors must have length equal to +nrow(contrast_spec).

+
# At validation time, geneLME() prints the first-order contrast list in my_spec row
+# order. You can also inspect result_A$contrast_spec for the indexed row ordering.
+# With my_spec as defined above (same-visit, V2 and V3), alphabetical ordering gives:
+#  row 1: TrtB V2 - TrtA V2
+#  row 2: TrtC V2 - TrtA V2
+#  row 3: TrtC V2 - TrtB V2
+#  row 4: TrtB V3 - TrtA V3
+#  row 5: TrtC V3 - TrtA V3
+#  row 6: TrtC V3 - TrtB V3
+#
+# Second-order questions:
+#   "Did the TrtA vs TrtB difference change from V2 to V3?"  → row4 − row1
+#   "Did the TrtA vs TrtC difference change from V2 to V3?"  → row5 − row2
+#
+# Verify with: result_A$contrast_spec
+
+result_A2 <- geneLME(
+  dat                 = dat_sub,
+  formula_str         = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights       = TRUE,
+  run_contrast        = TRUE,
+  contrast_vars       = "treatment:visit",
+  contrast_spec       = my_spec,
+  contrasts_secondary = list(
+    "TrtA vs TrtB: V3 minus V2 effect" = c(-1, 0, 0, 1, 0, 0),  # row4 − row1
+    "TrtA vs TrtC: V3 minus V2 effect" = c(0, -1, 0, 0, 1, 0)   # row5 − row2
+  ),
+  n_cores             = 2
+)
+
cat("Contrast order breakdown:\n")
+
#> Contrast order breakdown:
+
print(table(result_A2$lme_contrast$contrast_order))
+
#> 
+#>  first_order second_order 
+#>           60           20
+
cat("\nSecond-order results for gene01 and gene09 (strongest TrtC:V3 effect):\n")
+
#> 
+#> Second-order results for gene01 and gene09 (strongest TrtC:V3 effect):
+
# contrast_ref/contrast_lvl are NA for second-order rows (no single ref/lvl pair)
+result_A2$lme_contrast %>%
+  filter(contrast_order == "second_order", gene %in% c("gene01", "gene09")) %>%
+  select(gene, contrast, contrast_ref, contrast_lvl, estimate, SE, df, t.ratio, p.value)
+
+ +
+
+

Programmatic second-order contrast construction via +$contrast_spec

+

When there are many first-order contrasts, hand-coding the position +of each −1/+1 in every secondary vector is +error-prone. After a successful geneLME() call (or a +soft-fail call — see Input Validation), +the $contrast_spec element of the returned list contains an +indexed copy of contrast_spec with a +contrast_index column added by geneLME(). +contrast_index is simply 1:nrow(contrast_spec) +— the row positions in the filtered spec you passed in. Use these as +stable handles when building contrasts_secondary vectors +programmatically.

+

Workflow: run geneLME() once (or use a +dry-run via a wrong-length contrasts_secondary soft-fail), +inspect result$contrast_spec to confirm the row ordering +and indices, then build and pass the correct +contrasts_secondary list.

+

Example scenario: within each treatment pair, ask +whether the between-treatment difference changed from V2 to V3 — i.e., +(TrtX−TrtY at V3) − (TrtX−TrtY at V2).

+
# result_A$contrast_spec is the indexed version of my_spec as seen by geneLME().
+# contrast_index = 1:nrow(my_spec) (simple row positions after filtering).
+cat("Indexed contrast_spec from result_A:\n")
+
#> Indexed contrast_spec from result_A:
+
print(result_A$contrast_spec)
+
#>   contrast_index contrast_ref contrast_lvl
+#> 1              1      TrtA V2      TrtB V2
+#> 2              2      TrtA V2      TrtC V2
+#> 3              3      TrtB V2      TrtC V2
+#> 4              4      TrtA V3      TrtB V3
+#> 5              5      TrtA V3      TrtC V3
+#> 6              6      TrtB V3      TrtC V3
+
# Annotate with the visit for each contrast (extracted from the interaction label)
+indexed_spec <- result_A$contrast_spec %>%
+  mutate(visit = sub(".* ", "", contrast_ref))   # extract visit from the interaction label
+
+print(indexed_spec)
+
#>   contrast_index contrast_ref contrast_lvl visit
+#> 1              1      TrtA V2      TrtB V2    V2
+#> 2              2      TrtA V2      TrtC V2    V2
+#> 3              3      TrtB V2      TrtC V2    V2
+#> 4              4      TrtA V3      TrtB V3    V3
+#> 5              5      TrtA V3      TrtC V3    V3
+#> 6              6      TrtB V3      TrtC V3    V3
+
# Build a two-column lookup: one contrast_index per sign, one row per second-order contrast.
+# group_by the treatment pair (shared across visits); within each group there are exactly
+# two rows — one for V2 and one for V3 — giving the index_neg (V2, subtracted) and
+# index_pos (V3, added).
+secondary_lookup <- indexed_spec %>%
+  # Create a treatment-pair label that is the same regardless of visit
+  mutate(trt_pair = paste(sub(" .*", "", contrast_ref),  # var_a from ref
+                          sub(" .*", "", contrast_lvl),  # var_a from lvl
+                          sep = " vs ")) %>%
+  arrange(trt_pair, visit) %>%          # V2 before V3 (alphabetical)
+  group_by(trt_pair) %>%
+  summarise(
+    secondary_contrast_name = paste0("(", last(contrast_lvl), " - ", last(contrast_ref), ")",
+                                     " - ",
+                                     "(", first(contrast_lvl), " - ", first(contrast_ref), ")"),
+    index_neg = first(contrast_index),  # V2 row → subtracted (−1)
+    index_pos = last(contrast_index),   # V3 row → added    (+1)
+    .groups = "drop"
+  )
+
+print(secondary_lookup)
+
#> # A tibble: 3 × 4
+#>   trt_pair     secondary_contrast_name                   index_neg index_pos
+#>   <chr>        <chr>                                         <int>     <int>
+#> 1 TrtA vs TrtB (TrtB V3 - TrtA V3) - (TrtB V2 - TrtA V2)         1         4
+#> 2 TrtA vs TrtC (TrtC V3 - TrtA V3) - (TrtC V2 - TrtA V2)         2         5
+#> 3 TrtB vs TrtC (TrtC V3 - TrtB V3) - (TrtC V2 - TrtB V2)         3         6
+
# Format as a named list of zero vectors with −1/+1 placed by contrast_index.
+# The vector length must equal nrow(my_spec) — the number of first-order contrasts.
+n_first_order <- nrow(my_spec)
+
+contrasts_secondary_prog <- setNames(
+  lapply(seq_len(nrow(secondary_lookup)), function(i) {
+    v <- rep(0, n_first_order)
+    # contrast_index IS the row position (1:nrow), so it can be used directly.
+    # Using which() for robustness in case the data.frame is reordered.
+    v[which(indexed_spec$contrast_index == secondary_lookup$index_neg[i])] <- -1
+    v[which(indexed_spec$contrast_index == secondary_lookup$index_pos[i])] <-  1
+    v
+  }),
+  secondary_lookup$secondary_contrast_name
+)
+
+# Inspect: each vector should have exactly one −1 and one +1
+print(contrasts_secondary_prog)
+
#> $`(TrtB V3 - TrtA V3) - (TrtB V2 - TrtA V2)`
+#> [1] -1  0  0  1  0  0
+#> 
+#> $`(TrtC V3 - TrtA V3) - (TrtC V2 - TrtA V2)`
+#> [1]  0 -1  0  0  1  0
+#> 
+#> $`(TrtC V3 - TrtB V3) - (TrtC V2 - TrtB V2)`
+#> [1]  0  0 -1  0  0  1
+
result_A_prog <- geneLME(
+  dat                 = dat_sub,
+  formula_str         = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights       = TRUE,
+  run_contrast        = TRUE,
+  contrast_vars       = "treatment:visit",
+  contrast_spec       = my_spec,
+  contrasts_secondary = contrasts_secondary_prog,
+  n_cores             = 2
+)
+
+cat("Second-order results for gene01:\n")
+
#> Second-order results for gene01:
+
result_A_prog$lme_contrast %>%
+  filter(contrast_order == "second_order", gene == "gene01") %>%
+  select(gene, contrast, contrast_ref, contrast_lvl, estimate, SE, df, t.ratio, p.value)
+
+ +
+
+

Key design note: geneLME() appends +contrast_index (= 1:nrow(contrast_spec)) to +its $contrast_spec output element — not to the +contrast_spec data frame you pass in. This means +contrast_index always reflects the row positions in +your filtered spec, never in the full unfiltered template. The +which(indexed_spec$contrast_index == ...) lookup maps those +indices back to row positions for vector construction, and is robust to +any reordering of the spec data frame.

+
+
+
+
+
+

Branch B: Non-Interaction Contrasts

+

Use when: the model is additive (no interaction +term), and you want named contrasts on the marginal means of one +variable. Optionally, compute those contrasts within specific levels of +a second grouping variable (contrast_var_2_levels), and +optionally follow up with second-order contrasts across the primary +contrast estimates.

+

Under the hood, geneLME_fit() calls +emmeans() with a spec formula derived from +contrast_vars, using contrast_var_2_levels as +the at = filter. contrasts_primary vectors are +passed directly to emmeans::contrast().

+
+

Inspecting levels before building contrast vectors

+

Before specifying contrasts_primary, confirm the level +ordering emmeans will use — it is alphabetical by default:

+
ref_B <- geneLME_contrast_spec(dat$targets, contrast_vars = c("treatment", "visit"))
+

treatment levels are TrtA[1], +TrtB[2], TrtC[3] — so +contrasts_primary vectors must have length 3 with positions +corresponding to those labels:

+
"TrtC vs TrtA" = c(-1, 0, 1)   # TrtA=−1, TrtB=0, TrtC=+1
+"TrtB vs TrtA" = c(-1, 1, 0)   # TrtA=−1, TrtB=+1, TrtC=0
+
+
+

Basic Branch B call

+
result_B <- geneLME(
+  dat                   = dat_sub,
+  formula_str           = "~ treatment + visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights         = TRUE,
+  run_contrast          = TRUE,
+  contrast_vars         = c("treatment", "visit"),  # [1] primary; [2] 'by' grouping variable
+  contrast_var_2_levels = c("V2", "V3"),            # restrict to these visit levels
+  contrasts_primary     = list(
+    "TrtC vs TrtA" = c(-1, 0, 1),
+    "TrtB vs TrtA" = c(-1, 1, 0)
+  ),
+  n_cores               = 2
+)
+
cat("Contrast rows:", nrow(result_B$lme_contrast), "\n")
+
#> Contrast rows: 40
+
cat("  (", length(unique(result_B$lme_contrast$contrast)), "contrasts ×",
+    length(contrast_var_2_levels <- c("V2","V3")), "visits ×",
+    length(unique(result_B$lme_contrast$gene)), "genes)\n\n")
+
#>   ( 2 contrasts × 2 visits × 10 genes)
+
# contrast_ref and contrast_lvl are NA for Branch B (named contrast vectors,
+# not a ref/lvl spec frame)
+result_B$lme_contrast %>%
+  filter(gene == "gene01") %>%
+  select(contrast, contrast_ref, contrast_lvl, visit, estimate, SE, df, t.ratio, p.value, contrast_order)
+
+ +
+
+

Note: In an additive model, treatment estimates are +identical across V2 and V3 — there is no interaction, so the treatment +effect does not depend on visit. contrast_var_2_levels +controls which visit cells are included in the output, which is +useful for limiting the number of tests and focusing results on visits +of biological interest.

+
+
+
+

Branch B with second-order contrasts

+

A second-order contrast operates on the vector of first-order +contrast estimates. Here, contrasts_secondary must have +length equal to the number of primary contrasts (2 in this example). The +result asks: “Is the TrtC vs TrtA difference significantly +larger than the TrtB vs TrtA difference?” — i.e., is there +a differential treatment response between TrtB and TrtC relative to +TrtA?

+
result_B2 <- geneLME(
+  dat                   = dat_sub,
+  formula_str           = "~ treatment + visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights         = TRUE,
+  run_contrast          = TRUE,
+  contrast_vars         = c("treatment", "visit"),
+  contrast_var_2_levels = c("V2", "V3"),
+  contrasts_primary     = list(
+    "TrtC vs TrtA" = c(-1, 0, 1),
+    "TrtB vs TrtA" = c(-1, 1, 0)
+  ),
+  contrasts_secondary   = list(
+    "TrtC vs TrtB (2nd order)" = c(1, -1)  # length = n primary contrasts (2)
+  ),
+  n_cores               = 2
+)
+
cat("Contrast order breakdown:\n")
+
#> Contrast order breakdown:
+
print(table(result_B2$lme_contrast$contrast_order))
+
#> 
+#>  first_order second_order 
+#>           40           20
+
result_B2$lme_contrast %>%
+  filter(gene == "gene01") %>%
+  select(contrast, contrast_ref, contrast_lvl, visit, estimate, SE, df, t.ratio, p.value, contrast_order)
+
+ +
+
+
+
+
+

FDR Adjustment

+

geneLME() automatically appends a +p.value_adj column to both lme_anova and +lme_contrast using p.adjust(). Adjustment is +performed across all genes within each grouping unit — +not globally across all rows — so that each test family is treated +independently:

+ ++++ + + + + + + + + + + + + + + + + +
Output tableGrouping unit for adjustment
lme_anovaEach model term (e.g. treatment, +treatment:visit)
lme_contrastEach contrast label × contrast_order
+

The default method is Benjamini-Hochberg ("BH"). Any +method accepted by p.adjust() can be specified via the +fdr_method argument:

+
# Available methods
+p.adjust.methods
+
#> [1] "holm"       "hochberg"   "hommel"     "bonferroni" "BH"        
+#> [6] "BY"         "fdr"        "none"
+
# Example: Bonferroni correction instead of BH
+result_bonf <- geneLME(
+  dat           = dat_sub,
+  formula_str   = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights = TRUE,
+  run_contrast  = TRUE,
+  contrast_vars = "treatment:visit",
+  contrast_spec = my_spec,
+  fdr_method    = "bonferroni",
+  n_cores       = 2
+)
+
+# Compare BH vs Bonferroni for one contrast across genes
+comparison <- result_A$lme_contrast %>%
+  filter(contrast == first(contrast), contrast_order == "first_order") %>%
+  select(gene, p.value, p.value_adj_BH = p.value_adj) %>%
+  left_join(
+    result_bonf$lme_contrast %>%
+      filter(contrast == first(contrast), contrast_order == "first_order") %>%
+      select(gene, p.value_adj_bonf = p.value_adj),
+    by = "gene"
+  )
+
+print(comparison)
+
#> # A tibble: 10 × 4
+#>    gene   p.value p.value_adj_BH p.value_adj_bonf
+#>    <chr>    <dbl>          <dbl>            <dbl>
+#>  1 gene01   0.967          0.998                1
+#>  2 gene02   0.972          0.998                1
+#>  3 gene03   0.998          0.998                1
+#>  4 gene04   0.831          0.998                1
+#>  5 gene05   0.101          0.719                1
+#>  6 gene06   0.555          0.998                1
+#>  7 gene07   0.194          0.719                1
+#>  8 gene08   0.836          0.998                1
+#>  9 gene09   0.216          0.719                1
+#> 10 gene10   0.715          0.998                1
+
+

Note on NA values: genes whose models failed receive +NA for p.value, which propagates to +p.value_adj. These genes are excluded from the adjustment +set, so the effective number of tests equals the number of successfully +fitted genes.

+
+
+
+
+

Input Validation

+

geneLME() validates all inputs before launching any +parallel work. Informative errors are raised for the most common +misspecifications:

+
run_validation_test <- function(label, expr) {
+  tryCatch(
+    { expr; cat(label, "— (no error raised)\n") },
+    error   = function(e) cat(label, "ERROR:\n ", conditionMessage(e), "\n\n"),
+    warning = function(w) cat(label, "WARNING:\n ", conditionMessage(w), "\n\n")
+  )
+}
+
+# 1. Formula variable missing from targets
+run_validation_test("Test 1 — missing formula variable:",
+  geneLME(dat_sub, formula_str = "~ NONEXISTENT_VAR + (1|ptID)", n_cores = 2)
+)
+
#> Test 1 — missing formula variable: ERROR:
+#>   The following variables in the formula are missing from dat$targets: NONEXISTENT_VAR
+
# 2. Weights requested but not present
+dat_no_w <- dat_sub; dat_no_w$weights <- NULL
+run_validation_test("Test 2 — model_weights=TRUE but no dat$weights:",
+  geneLME(dat_no_w, formula_str = "~ treatment + (1|ptID)", model_weights = TRUE, n_cores = 2)
+)
+
#> Test 2 — model_weights=TRUE but no dat$weights: ERROR:
+#>   model_weights = TRUE but dat$weights is NULL.
+
# 3. Interaction contrast requested but interaction not in formula
+run_validation_test("Test 3 — interaction contrast but additive formula:",
+  geneLME(dat_sub,
+          formula_str   = "~ treatment + visit + age + (1|ptID)",
+          run_contrast  = TRUE,
+          contrast_vars = "treatment:visit",
+          contrast_spec = my_spec,
+          n_cores       = 2)
+)
+
#> Test 3 — interaction contrast but additive formula: ERROR:
+#>   contrast_vars specifies an interaction contrast for 'treatment:visit', but this interaction term is not present in formula_str.
+#> Either add the interaction to the formula (e.g. '~ treatment * visit + ...') or change contrast_vars to a non-interaction term.
+
# 4. Interaction contrast but contrast_spec not provided
+run_validation_test("Test 4 — interaction contrast, contrast_spec = NULL:",
+  geneLME(dat_sub,
+          formula_str   = "~ treatment * visit + age + (1|ptID)",
+          run_contrast  = TRUE,
+          contrast_vars = "treatment:visit",
+          n_cores       = 2)
+)
+
#> Test 4 — interaction contrast, contrast_spec = NULL: ERROR:
+#>   contrast_vars specifies an interaction contrast ('treatment:visit') but contrast_spec is NULL.
+#> Use geneLME_contrast_spec(dat$targets, contrast_vars = 'treatment:visit') to generate a template, filter it to your contrasts of interest, then pass it as contrast_spec.
+
# 5. contrast_spec has wrong column names
+run_validation_test("Test 5 — contrast_spec with wrong columns:",
+  geneLME(dat_sub,
+          formula_str   = "~ treatment * visit + age + (1|ptID)",
+          run_contrast  = TRUE,
+          contrast_vars = "treatment:visit",
+          contrast_spec = data.frame(a = "x", b = "y"),
+          n_cores       = 2)
+)
+
#> Test 5 — contrast_spec with wrong columns: ERROR:
+#>   contrast_spec must have columns 'contrast_ref' and 'contrast_lvl'.
+
# 6. contrast_var_2_levels contains an invalid level
+run_validation_test("Test 6 — invalid contrast_var_2_levels:",
+  geneLME(dat_sub,
+          formula_str           = "~ treatment + visit + age + (1|ptID)",
+          run_contrast          = TRUE,
+          contrast_vars         = c("treatment", "visit"),
+          contrast_var_2_levels = c("V2", "NOTAVISIT"),
+          contrasts_primary     = list("TrtC vs TrtA" = c(-1, 0, 1)),
+          n_cores               = 2)
+)
+
#> Test 6 — invalid contrast_var_2_levels: ERROR:
+#>   Levels specified for 'visit' not found in data: NOTAVISIT
+

When contrasts_secondary vectors have the wrong length, +geneLME() soft-fails: it returns early +without running any models, but still populates +$contrast_spec with the indexed row ordering. This lets you +inspect the indexing and fix your vectors without a hard error.

+
# 7. contrasts_secondary with wrong length → soft-fail with $contrast_spec populated
+bad_result <- geneLME(
+  dat                 = dat_sub,
+  formula_str         = "~ treatment * visit + age + sex + rNANgUl + percent_duplication + median_cv_coverage + (1|ptID)",
+  model_weights       = TRUE,
+  run_contrast        = TRUE,
+  contrast_vars       = "treatment:visit",
+  contrast_spec       = my_spec,
+  contrasts_secondary = list(
+    "wrong length vector" = rep(0, 99)  # should be length 6 = nrow(my_spec)
+  ),
+  n_cores = 2
+)
+
+cat("Elements of soft-fail result:\n")
+
#> Elements of soft-fail result:
+
print(sapply(bad_result, is.null))   # lme_anova/contrast/fit/err are NULL; contrast_spec is not
+
#>     lme_anova  lme_contrast       lme_fit       lme_err contrast_spec 
+#>          TRUE          TRUE          TRUE          TRUE         FALSE
+
cat("\n$contrast_spec (use these indices to fix contrasts_secondary):\n")
+
#> 
+#> $contrast_spec (use these indices to fix contrasts_secondary):
+
print(bad_result$contrast_spec)
+
#>   contrast_index contrast_ref contrast_lvl
+#> 1              1      TrtA V2      TrtB V2
+#> 2              2      TrtA V2      TrtC V2
+#> 3              3      TrtB V2      TrtC V2
+#> 4              4      TrtA V3      TrtB V3
+#> 5              5      TrtA V3      TrtC V3
+#> 6              6      TrtB V3      TrtC V3
+
+
+
+

Error Handling and Failed Genes

+

Per-gene errors are captured by tryCatch inside +geneLME_fit() and do not abort the run. Failed genes +produce NA-filled rows in lme_anova and +lme_contrast, and the error message is stored in +lme_err.

+
# Check model status summary
+cat("Model status — Branch A:\n")
+
#> Model status — Branch A:
+
print(table(result_A$lme_err))
+
#> 
+#> success 
+#>      10
+
# With small mock data (10 patients), singular fits are expected due to
+# patient-level covariates (sex, age) being collinear with the patient random effect.
+# With real data at typical sample sizes this is less common.
+
+# Identify any failed genes
+failed <- names(result_A$lme_err)[result_A$lme_err != "success"]
+if (length(failed) > 0) {
+  cat("\nFailed genes:\n")
+  print(result_A$lme_err[failed])
+} else {
+  cat("\nAll genes fitted successfully.\n")
+}
+
#> 
+#> All genes fitted successfully.
+
+
+
+

Quick-Reference: Argument Guide

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentTypeRequiredDescription
datlistYesEList-like: $E, $weights (optional), +$targets
formula_strcharacterYesRHS formula string, +e.g. "~ treatment * visit + (1\|ptID)"
model_weightslogicalNoTRUE to use dat$weights as precision +weights
run_contrastlogicalNoTRUE to run emmeans contrasts
contrast_varscharacterIf run_contrast=TRUE"var_a:var_b" (Branch A) or +c("var1", "var2") (Branch B)
contrast_var_2_levelscharacter vectorNoBranch B: restrict ‘by’ variable to these levels
contrast_specdata.frameRequired for Branch AColumns contrast_ref and contrast_lvl; +from geneLME_contrast_spec(). geneLME() +attaches an indexed copy (with contrast_index) to +$contrast_spec in its return value.
contrasts_primarynamed listBranch BNamed contrast vectors; length = levels of +contrast_vars[1]
contrasts_secondarynamed listNoSecond-order contrasts; length = nrow(contrast_spec) +(Branch A) or length(contrasts_primary) (Branch B). Wrong +lengths trigger a soft-fail with $contrast_spec populated +for debugging.
fdr_methodcharacterNoP-value adjustment method passed to p.adjust(); default +"BH" (Benjamini-Hochberg)
n_coresintegerNoNumber of parallel workers; defaults to +detectCores() − 4
+
+
+
+

Session Info

+
sessionInfo()
+
#> R version 4.5.1 (2025-06-13)
+#> Platform: aarch64-apple-darwin20
+#> Running under: macOS Sequoia 15.7.3
+#> 
+#> Matrix products: default
+#> BLAS:   /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib 
+#> LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
+#> 
+#> locale:
+#> [1] en_US/en_US/en_US/C/en_US/en_US
+#> 
+#> time zone: America/Los_Angeles
+#> tzcode source: internal
+#> 
+#> attached base packages:
+#> [1] stats     graphics  grDevices utils     datasets  methods   base     
+#> 
+#> other attached packages:
+#>  [1] future.apply_1.20.1 future_1.69.0       purrr_1.2.1        
+#>  [4] tibble_3.3.1        dplyr_1.2.0         broom.mixed_0.2.9.6
+#>  [7] car_3.1-3           carData_3.0-5       emmeans_2.0.1      
+#> [10] lme4_1.1-38         Matrix_1.7-4       
+#> 
+#> loaded via a namespace (and not attached):
+#>  [1] utf8_1.2.6         tidyr_1.3.2        sass_0.4.10        generics_0.1.4    
+#>  [5] lattice_0.22-7     listenv_0.10.0     digest_0.6.39      magrittr_2.0.4    
+#>  [9] evaluate_1.0.5     grid_4.5.1         estimability_1.5.1 mvtnorm_1.3-3     
+#> [13] fastmap_1.2.0      jsonlite_2.0.0     backports_1.5.0    Formula_1.2-5     
+#> [17] codetools_0.2-20   jquerylib_0.1.4    abind_1.4-8        reformulas_0.4.3.1
+#> [21] Rdpack_2.6.4       cli_3.6.5          rlang_1.1.7        rbibutils_2.4.1   
+#> [25] parallelly_1.46.1  splines_4.5.1      withr_3.0.2        cachem_1.1.0      
+#> [29] yaml_2.3.12        otel_0.2.0         parallel_4.5.1     tools_4.5.1       
+#> [33] nloptr_2.2.1       coda_0.19-4.1      minqa_1.2.8        forcats_1.0.1     
+#> [37] globals_0.18.0     boot_1.3-32        broom_1.0.11       vctrs_0.7.1       
+#> [41] R6_2.6.1           lifecycle_1.0.5    MASS_7.3-65        furrr_0.3.1       
+#> [45] pkgconfig_2.0.3    bslib_0.10.0       pillar_1.11.1      glue_1.8.0        
+#> [49] Rcpp_1.1.1         xfun_0.56          tidyselect_1.2.1   knitr_1.51        
+#> [53] xtable_1.8-4       htmltools_0.5.9    nlme_3.1-168       rmarkdown_2.30    
+#> [57] compiler_4.5.1
+
+ + + +
+
+ +
+ + + + + + + + + + + + + + + + +