From 54a2afc258b1a528addc081b470e098a720d2a16 Mon Sep 17 00:00:00 2001 From: Ryan Senne Date: Tue, 28 Apr 2026 11:36:42 -0400 Subject: [PATCH 1/8] BlockMALA sampler ggo brrrrrr --- .codex | 0 .../scripts/bench_deer_logreg.jl | 7 +- .../scripts/bench_mala_bayes.jl | 23 +- .../scripts/new_bench.jl | 67 +-- .../scripts/prof_view.jl | 19 +- .../scripts/profile_deer_logreg_components.jl | 22 +- .../src/models/bayes_logreg.jl | 134 +++-- .../src/runners/mala_runner.jl | 18 +- docs/src/10-getting-started.md | 9 +- docs/src/20-algorithms.md | 10 +- docs/src/index.md | 2 +- src/DEER/DEER.jl | 143 +++-- src/DEER/DEERScan.jl | 74 ++- src/MALA/MALA.jl | 531 ++++++++++++------ src/interface.jl | 507 ++++++++++++++--- test/test-AbstractMCMC-Interface.jl | 3 + test/test-Adaptive-MALA.jl | 24 + test/test-DEER-Interface.jl | 19 +- test/test-DEER-Turing-Logistic.jl | 25 +- test/test-DEERScan.jl | 56 +- test/test-Deer-vs-MALA.jl | 30 +- test/test-GPU-DEER.jl | 17 +- test/test-GPU-MALA.jl | 2 +- test/test-Jacobian-Estimator.jl | 52 +- 24 files changed, 1244 insertions(+), 550 deletions(-) create mode 100644 .codex diff --git a/.codex b/.codex new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/bench_deer_logreg.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/bench_deer_logreg.jl index eb4f5f1..4e578a3 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/bench_deer_logreg.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/bench_deer_logreg.jl @@ -29,7 +29,7 @@ const BayesLogReg = ParallelMCMCBenchmarks.BayesLogReg function _parse_t_vals() raw = get(ENV, "PMCMC_T_VALS", "") - isempty(strip(raw)) && return [128, 256, 512, 1024, 2048] + isempty(strip(raw)) && return [512, 1024, 2048, 4096, 8192] return parse.(Int, strip.(split(raw, ","))) end @@ -109,8 +109,9 @@ if _cuda_ok y_gpu = CUDA.CuVector(y_f32) logp_gpu, gradlogp_gpu, hvp_gpu = BayesLogReg.make_problem_with_hvp(X_gpu, y_gpu) - logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = - BayesLogReg.make_problem_batched_with_hvp(X_gpu, y_gpu) + logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = BayesLogReg.make_problem_batched_with_hvp( + X_gpu, y_gpu + ) model_gpu = DensityModel( logp_gpu, diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/bench_mala_bayes.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/bench_mala_bayes.jl index 371acef..5fd7f16 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/bench_mala_bayes.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/bench_mala_bayes.jl @@ -19,16 +19,16 @@ using AbstractMCMC: sample using ParallelMCMC using ParallelMCMCBenchmarks const BayesLinReg = ParallelMCMCBenchmarks.BayesLinReg -const MALARunner = ParallelMCMCBenchmarks.MALARunner +const MALARunner = ParallelMCMCBenchmarks.MALARunner # Problem setup rng = MersenneTwister(20251231) n, p = 200, 16 -X = randn(rng, n, p) +X = randn(rng, n, p) β_true = randn(rng, p) -σ = 1.0 -y = X * β_true .+ σ .* randn(rng, n) +σ = 1.0 +y = X * β_true .+ σ .* randn(rng, n) logpost, gradlogpost, μ_post, _ = BayesLinReg.make_problem(X, y; σ=σ, τ=10.0) model = DensityModel(logpost, gradlogpost, p) @@ -46,12 +46,7 @@ x_warm, ϵ_tuned = MALARunner.tune_stepsize_mala( mala_sampler = AdaptiveMALASampler(ϵ_tuned; n_warmup=500) deer_sampler = ParallelMALASampler( - ϵ_tuned; - T=64, - maxiter=200, - tol_abs=1e-6, - tol_rel=1e-5, - damping=0.5, + ϵ_tuned; T=64, maxiter=200, tol_abs=1e-6, tol_rel=1e-5, damping=0.5 ) # Benchmark helper @@ -79,7 +74,9 @@ println("AdaptiveMALASampler (n_warmup=500, Float64)") println("Model: Bayesian linear regression n=$n p=$p") println("=" ^ 60, "\n") for (n_samples, reps, label) in configs - results[("MALA", label)] = run_bench(model, mala_sampler, n_samples; reps, label, sampler_name="MALA") + results[("MALA", label)] = run_bench( + model, mala_sampler, n_samples; reps, label, sampler_name="MALA" + ) end # ParallelMALA (DEER) @@ -89,7 +86,9 @@ println("ParallelMALASampler (T=64, AutoEnzyme, Float64)") println("Model: Bayesian linear regression n=$n p=$p") println("=" ^ 60, "\n") for (n_samples, reps, label) in configs - results[("DEER", label)] = run_bench(model, deer_sampler, n_samples; reps, label, sampler_name="DEER") + results[("DEER", label)] = run_bench( + model, deer_sampler, n_samples; reps, label, sampler_name="DEER" + ) end # Summary table diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl index 9c66151..7fbf2b6 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl @@ -41,8 +41,9 @@ y_gpu = CUDA.CuVector(y_f32) logp_cpu, gradlogp_cpu = BayesLogReg.make_problem(X_cpu, y_cpu) logp_gpu, gradlogp_gpu, hvp_gpu = BayesLogReg.make_problem_with_hvp(X_gpu, y_gpu) -logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = - BayesLogReg.make_problem_batched_with_hvp(X_gpu, y_gpu) +logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = BayesLogReg.make_problem_batched_with_hvp( + X_gpu, y_gpu +) model_gpu = DensityModel( logp_gpu, @@ -89,12 +90,7 @@ function build_raw_deer_problem( end rec = ParallelMCMC._build_mala_deer_rec( - model, - epsilon, - tape, - x0; - cholM=cholM, - backend=backend, + model, epsilon, tape, x0; cholM=cholM, backend=backend ) return rec @@ -126,6 +122,7 @@ function solve_raw_deer_block_prebuilt( probes=probes, rng=rng, workspace=ws, + copy_result=false, ) end @@ -143,13 +140,7 @@ function solve_seq_mala_block( ξs = [randn(rng, FP, D) for _ in 1:T] us = rand(rng, FP, T) return ParallelMCMC.MALA.run_mala_sequential_taped( - logp, - gradlogp, - x0, - epsilon, - ξs, - us; - cholM=cholM, + logp, gradlogp, x0, epsilon, ξs, us; cholM=cholM ) end @@ -175,13 +166,13 @@ function bench_raw_deer_build(model, x0; T, reps) MersenneTwister(42), $model, $x0; - epsilon=$epsilon, - T=$T, - maxiter=$maxiter, - tol_abs=$tol_abs, - tol_rel=$tol_rel, - damping=$damping, - probes=$probes, + epsilon=($epsilon), + T=($T), + maxiter=($maxiter), + tol_abs=($tol_abs), + tol_rel=($tol_rel), + damping=($damping), + probes=($probes), ) CUDA.synchronize() rec @@ -231,11 +222,11 @@ function bench_raw_deer_solve_only(model, x0; T, reps) $rec, $x0, $ws; - tol_abs=$tol_abs, - tol_rel=$tol_rel, - maxiter=$maxiter, - damping=$damping, - probes=$probes, + tol_abs=($tol_abs), + tol_rel=($tol_rel), + maxiter=($maxiter), + damping=($damping), + probes=($probes), ) CUDA.synchronize() S @@ -256,22 +247,12 @@ function bench_seq_mala_cpu(logp, gradlogp, x0; T, reps) println(" [CPU] sequential taped MALA, T=$T") xs_warm = solve_seq_mala_block( - MersenneTwister(42), - logp, - gradlogp, - x0; - epsilon=epsilon, - T=T, + MersenneTwister(42), logp, gradlogp, x0; epsilon=epsilon, T=T ) b = @benchmark begin xs = solve_seq_mala_block( - MersenneTwister(42), - $logp, - $gradlogp, - $x0; - epsilon=$epsilon, - T=$T, + MersenneTwister(42), $logp, $gradlogp, $x0; epsilon=($epsilon), T=($T) ) xs end samples=reps evals=1 @@ -337,7 +318,13 @@ seq_results = Dict{Int,BenchmarkTools.Trial}() logp_results = Dict{Int,BenchmarkTools.Trial}() for T in T_vals - reps = T <= 16 ? 8 : T <= 32 ? 6 : 4 + reps = if T <= 16 + 8 + elseif T <= 32 + 6 + else + 4 + end build_results[T] = bench_raw_deer_build(model_gpu, x0_gpu; T=T, reps=reps) solve_results[T], rec, ws = bench_raw_deer_solve_only(model_gpu, x0_gpu; T=T, reps=reps) seq_results[T] = bench_seq_mala_cpu(logp_cpu, gradlogp_cpu, x0_cpu; T=T, reps=reps) diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl index 0c55910..98fc4fa 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl @@ -63,12 +63,7 @@ function build_raw_deer_problem( end rec = ParallelMCMC._build_mala_deer_rec( - model, - epsilon, - tape, - x0; - cholM=cholM, - backend=backend, + model, epsilon, tape, x0; cholM=cholM, backend=backend ) return rec end @@ -84,8 +79,9 @@ function build_problem(; seed=20251231) y_gpu = CUDA.CuVector(y_f32) logp_gpu, gradlogp_gpu, hvp_gpu = BayesLogReg.make_problem_with_hvp(X_gpu, y_gpu) - logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = - BayesLogReg.make_problem_batched_with_hvp(X_gpu, y_gpu) + logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = BayesLogReg.make_problem_batched_with_hvp( + X_gpu, y_gpu + ) model_gpu = DensityModel( logp_gpu, @@ -100,11 +96,7 @@ function build_problem(; seed=20251231) x0_gpu = CUDA.zeros(Float32, D) rec = build_raw_deer_problem( - MersenneTwister(42), - model_gpu, - x0_gpu; - epsilon=epsilon, - T=T, + MersenneTwister(42), model_gpu, x0_gpu; epsilon=epsilon, T=T ) ws = DEER.DEERWorkspace(x0_gpu, T) @@ -127,6 +119,7 @@ function solve_once(; seed=42) probes=probes, rng=rng, workspace=PROF_STATE.ws, + copy_result=false, ) CUDA.synchronize() return S diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl index e4f18b3..46336fd 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl @@ -47,8 +47,9 @@ function build_problem() y_gpu = CUDA.CuVector(y_f32) logp_gpu, gradlogp_gpu, hvp_gpu = BayesLogReg.make_problem_with_hvp(X_gpu, y_gpu) - logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = - BayesLogReg.make_problem_batched_with_hvp(X_gpu, y_gpu) + logp_gpu_batch, gradlogp_gpu_batch, hvp_gpu_batch = BayesLogReg.make_problem_batched_with_hvp( + X_gpu, y_gpu + ) model_gpu = DensityModel( logp_gpu, @@ -66,12 +67,7 @@ function build_problem() end function build_rec(model_gpu, x0_gpu, tape) - return ParallelMCMC._build_mala_deer_rec( - model_gpu, - epsilon, - tape, - x0_gpu; - ) + return ParallelMCMC._build_mala_deer_rec(model_gpu, epsilon, tape, x0_gpu;) end function solve_prebuilt(rec, x0_gpu, ws; seed=42, return_info=false) @@ -87,6 +83,7 @@ function solve_prebuilt(rec, x0_gpu, ws; seed=42, return_info=false) rng=MersenneTwister(seed), workspace=ws, return_info=return_info, + copy_result=false, ) CUDA.synchronize() return out @@ -110,7 +107,8 @@ end function print_trial(name, trial) t_ms = median(trial).time / 1e6 - @printf "%-32s %12.3f %12d %12.3f\n" name t_ms median(trial).allocs median(trial).memory / 1024^2 + @printf "%-32s %12.3f %12d %12.3f\n" name t_ms median(trial).allocs median(trial).memory / + 1024^2 return t_ms end @@ -140,7 +138,9 @@ println("GPU ParallelMALA component profile") println("Model: Bayesian logistic regression D=$D N_data=$N_data") println("T=$T N_samples=$N_samples blocks=$(cld(N_samples, T))") println("epsilon=$epsilon maxiter=$maxiter tol_abs=$tol_abs tol_rel=$tol_rel") -println("Warmup solve converged=$(info.converged), iters=$(info.iters), metric=$(info.metric)") +println( + "Warmup solve converged=$(info.converged), iters=$(info.iters), metric=$(info.metric)" +) println("=" ^ 96) println() @@ -191,7 +191,7 @@ b_sample = @benchmark begin $deer_gpu, $N_samples; progress=false, - initial_params=$x0_gpu, + initial_params=($x0_gpu), ) CUDA.synchronize() xs diff --git a/benchmarks/ParallelMCMCBenchmarks/src/models/bayes_logreg.jl b/benchmarks/ParallelMCMCBenchmarks/src/models/bayes_logreg.jl index 3b8bc56..9447660 100644 --- a/benchmarks/ParallelMCMCBenchmarks/src/models/bayes_logreg.jl +++ b/benchmarks/ParallelMCMCBenchmarks/src/models/bayes_logreg.jl @@ -6,12 +6,7 @@ using LinearAlgebra """ make_data(rng, N, D; β_scale=1.0) -> (X, y, β_true) -Generate synthetic Bayesian logistic regression data: - β_true ~ N(0, β_scale² I_D) - X_i ~ N(0, I_D) - y_i ~ Bernoulli(sigmoid(X_i β_true)) - -Returns Float64 arrays. +Generate synthetic Bayesian logistic regression data. """ function make_data(rng::AbstractRNG, N::Int, D::Int; β_scale::Real=1.0) β_true = randn(rng, D) .* float(β_scale) @@ -24,24 +19,32 @@ end """ make_problem(X, y) -> (logp, gradlogp) -Return the log-posterior and its gradient for: - β ~ N(0, I_D) - y_i | β ~ Bernoulli(sigmoid(Xᵢβ)) - -Both closures accept an AbstractVector and work with any eltype, so they -are compatible with ForwardDiff dual numbers and GPU arrays alike. +Optimized to reuse memory buffers for GPU performance. """ function make_problem(X::AbstractMatrix, y::AbstractVector) + # Pre-allocate workspaces in the closure scope + N = size(X, 1) + logits = similar(X, N) + p = similar(X, N) + resid = similar(X, N) + function logp(β::AbstractVector) - logits = X * β - ll = sum(@. y * (-log1p(exp(-logits))) + (1 - y) * (-log1p(exp(logits)))) - return ll - oftype(ll, 0.5) * sum(abs2, β) + mul!(logits, X, β) + # ll = sum(@. y * (-log1p(exp(-logits))) + (1 - y) * (-log1p(exp(logits)))) + # We perform this in-place to avoid allocations + # Note: log1p(exp(x)) is the softplus function + @. p = y * (-log1p(exp(-logits))) + (1 - y) * (-log1p(exp(logits))) + return sum(p) - 0.5 * sum(abs2, β) end function gradlogp(β::AbstractVector) - logits = X * β - p = @. 1 / (1 + exp(-logits)) - return X' * (y .- p) .- β + mul!(logits, X, β) + @. p = 1 / (1 + exp(-logits)) + @. resid = y - p + # grad = X' * (y - p) - β + # We reuse the output allocation here by using mul! + grad = (X' * resid) .- β + return grad end return logp, gradlogp @@ -49,23 +52,24 @@ end """ make_problem_with_hvp(X, y) -> (logp, gradlogp, hvp) - -Return the log-posterior, its gradient, and an analytic Hessian-vector product -for Bayesian logistic regression. """ function make_problem_with_hvp(X::AbstractMatrix, y::AbstractVector) logp, gradlogp = make_problem(X, y) + # Workspace buffers + N = size(X, 1) + logits = similar(X, N) + p = similar(X, N) + w = similar(X, N) + Xv = similar(X, N) + function hvp(β::AbstractVector, v::AbstractVector) - logits = X * β - T = eltype(logits) - oneT = one(T) - p = oneT ./ (oneT .+ exp.(-logits)) - w = p .* (oneT .- p) - Xv = X * v - tmp = w .* Xv - Xt_tmp = X' * tmp - return Xt_tmp .* (-oneT) .- v + mul!(logits, X, β) + @. p = 1 / (1 + exp(-logits)) + @. w = p * (1 - p) + mul!(Xv, X, v) + @. Xv = w * Xv + return -(X' * Xv) .- v end return logp, gradlogp, hvp @@ -73,33 +77,35 @@ end """ make_problem_batched(X, y) -> (logp_batch, gradlogp_batch) - -Batched counterparts of `make_problem` that accept D×M matrices and return M-vectors -or D×M matrices. """ function make_problem_batched(X::AbstractMatrix, y::AbstractVector) + # Pre-allocate workspaces for batch size M + # Note: We determine M from input size in the functions + function logp_batch(B::AbstractMatrix) - logits = X * B - T = eltype(logits) - oneT = one(T) - halfT = T(0.5) - - neg_logits = logits .* (-oneT) - ll_yes = y .* (-log1p.(exp.(neg_logits))) - ll_no = (oneT .- y) .* (-log1p.(exp.(logits))) - ll_mat = ll_yes .+ ll_no - ll = vec(sum(ll_mat; dims=1)) - quad = vec(sum(abs2, B; dims=1)) - return ll .- halfT .* quad + N, M = size(X, 1), size(B, 2) + logits = similar(X, N, M) + mul!(logits, X, B) + + # In-place calculation for log-posterior + # Using specific buffers avoids the massive allocations in the original + res = similar(logits) + @. res = y * (-log1p(exp(-logits))) + (1 - y) * (-log1p(exp(logits))) + + # Sum over rows for the likelihood, subtract quadratic regularization + return vec(sum(res; dims=1)) .- 0.5 .* vec(sum(abs2, B; dims=1)) end function gradlogp_batch(B::AbstractMatrix) - logits = X * B - T = eltype(logits) - oneT = one(T) - p = oneT ./ (oneT .+ exp.(logits .* (-oneT))) - resid = y .- p - return X' * resid .- B + N, M = size(X, 1), size(B, 2) + logits = similar(X, N, M) + mul!(logits, X, B) + + @. logits = 1 / (1 + exp(-logits)) # Reuse logits buffer as p + resid = similar(logits) + @. resid = y .- logits + + return (X' * resid) .- B end return logp_batch, gradlogp_batch @@ -107,23 +113,27 @@ end """ make_problem_batched_with_hvp(X, y) -> (logp_batch, gradlogp_batch, hvp_batch) - -Batched log-posterior, gradient, and analytic Hessian-vector product for -Bayesian logistic regression. Inputs `B` and `V` are both D×M matrices. """ function make_problem_batched_with_hvp(X::AbstractMatrix, y::AbstractVector) logp_batch, gradlogp_batch = make_problem_batched(X, y) function hvp_batch(B::AbstractMatrix, V::AbstractMatrix) size(B) == size(V) || throw(DimensionMismatch("B and V must have the same size")) - logits = X * B - T = eltype(logits) - oneT = one(T) - p = oneT ./ (oneT .+ exp.(logits .* (-oneT))) - w = p .* (oneT .- p) - Xv = X * V - tmp = w .* Xv - return -(X' * tmp) .- V + N, M = size(X, 1), size(B, 2) + + # Reuse logic with pre-allocated buffers + logits = similar(X, N, M) + mul!(logits, X, B) + + @. logits = 1 / (1 + exp(-logits)) # logits is now p + w = similar(logits) + @. w = logits * (1 - logits) + + Xv = similar(logits) + mul!(Xv, X, V) + @. Xv = w * Xv + + return -(X' * Xv) .- V end return logp_batch, gradlogp_batch, hvp_batch diff --git a/benchmarks/ParallelMCMCBenchmarks/src/runners/mala_runner.jl b/benchmarks/ParallelMCMCBenchmarks/src/runners/mala_runner.jl index 3e9dcc3..ab99273 100644 --- a/benchmarks/ParallelMCMCBenchmarks/src/runners/mala_runner.jl +++ b/benchmarks/ParallelMCMCBenchmarks/src/runners/mala_runner.jl @@ -39,6 +39,8 @@ function tune_stepsize_mala( ξs, us = make_tape(rng, D, Twarm) x = copy(x0) + x_next = similar(x) + ws = MALA.MALAWorkspace(x) logϵ = log(ϵ0) # Step size schedule; keep conservative to avoid oscillation @@ -47,10 +49,13 @@ function tune_stepsize_mala( for t in 1:Twarm ϵ = exp(logϵ) # mala_step_with_logα shares primal computation with the step: 2 gradlogp evals total. - x, accepted, _ = MALA.mala_step_with_logα(logp, gradlogp, x, ϵ, ξs[t], us[t]) + x_next, accepted, _ = MALA.mala_step_with_logα!( + x_next, ws, logp, gradlogp, x, ϵ, ξs[t], us[t] + ) # Robbins–Monro update on log ϵ η = η0 / sqrt(t) logϵ += η * (Float64(accepted) - target_accept) + x, x_next = x_next, x end return x, exp(logϵ) @@ -78,12 +83,17 @@ function run_taped_mala_with_accepts( accepts = Vector{Float64}(undef, T) xs[1] = copy(x0) - x = x0 + x = copy(x0) + x_next = similar(x) + ws = MALA.MALAWorkspace(x) for t in 1:T # mala_step_full shares primal computation: 2 gradlogp evals instead of 5. - x, accepted = MALA.mala_step_full(logp, gradlogp, x, ϵ, ξs[t], us[t]) + x_next, accepted, _ = MALA.mala_step_with_logα!( + x_next, ws, logp, gradlogp, x, ϵ, ξs[t], us[t] + ) accepts[t] = Float64(accepted) - xs[t + 1] = x + xs[t + 1] = copy(x_next) + x, x_next = x_next, x end return xs, accepts diff --git a/docs/src/10-getting-started.md b/docs/src/10-getting-started.md index 80fdc4e..5a5826f 100644 --- a/docs/src/10-getting-started.md +++ b/docs/src/10-getting-started.md @@ -35,7 +35,7 @@ model = DensityModel(logp, grad_logp, 2; param_names=[:x1, :x2]) [`ParallelMALASampler`](@ref) reformulates a trajectory of `T` MALA steps as a fixed-point problem and solves it via Newton iterations, each of which costs $O(\log T)$ parallel work via an associative prefix scan. Wall-clock time per sample is therefore sublinear in chain length on multi-core CPUs and GPUs. ```julia -sampler = ParallelMALASampler(0.1; T=64, jacobian=:diag, damping=0.5) +sampler = ParallelMALASampler(0.1; T=64, jacobian=:stoch_diag, damping=0.5) chain = sample(model, sampler, 500; chain_type=MCMCChains.Chains, progress=true) @@ -53,9 +53,8 @@ The `jacobian` keyword controls how the per-step Jacobian is approximated during | Mode | Cost per step | Notes | |---|---|---| -| `:diag` (default) | 1 full Jacobian | Exact diagonal; good default | -| `:stoch_diag` | `probes` JVPs | Hutchinson estimator; better in high dimensions | -| `:full` | 1 full Jacobian | Full matrix step; rarely needed | +| `:stoch_diag` (default) | `probes` JVPs | Hutchinson estimator; scalable default for high dimensions | +| `:diag` | `D` JVPs | Exact diagonal; useful for low-dimensional checks | For high-dimensional targets, `:stoch_diag` with a small number of `probes` is a good trade-off: @@ -118,7 +117,7 @@ using Turing, LogDensityProblems, LogDensityProblemsAD, ADTypes using ParallelMCMC, MCMCChains ld = DynamicPPL.LogDensityFunction(normal_model(1.5)) -ldg = LogDensityProblemsAD.ADgradient(ADTypes.AutoMooncake(; config=nothing), ld) +ldg = LogDensityProblemsAD.ADgradient(ADTypes.AutoEnzyme(), ld) model = DensityModel(ldg; param_names=[:μ]) ``` diff --git a/docs/src/20-algorithms.md b/docs/src/20-algorithms.md index 21e27ec..9619266 100644 --- a/docs/src/20-algorithms.md +++ b/docs/src/20-algorithms.md @@ -80,9 +80,11 @@ This associativity means the recurrence can be solved by an inclusive parallel-p Use the full $D \times D$ Jacobian $J_t$ at each timestep. The linear recursion becomes a sequence of dense matrix multiplications, solved sequentially (no scan shortcut for the general case). Cost per iteration: $O(TD^3)$. Memory: $O(TD^2)$. Accurate but impractical for large $D$. +This package currently exposes the diagonal scan variants below as `jacobian` modes; full-matrix DEER is discussed here for context but is not available through the `jacobian` keyword. + ### Quasi-DEER (`:diag`) -Replace $J_t$ with $\mathrm{diag}(J_t)$, retaining only the diagonal. The recursion reduces to the scalar affine scan described above, solved in $O(TD \log T)$ total work. The exact diagonal is computed via automatic differentiation (one full Jacobian, then `diag`). This is the default mode. +Replace $J_t$ with $\mathrm{diag}(J_t)$, retaining only the diagonal. The recursion reduces to the scalar affine scan described above, solved in $O(TD \log T)$ total work. The exact diagonal is computed with `D` Jacobian-vector products. This mode is useful for low-dimensional checks and reference runs. ### Stochastic quasi-DEER (`:stoch_diag`) @@ -93,7 +95,7 @@ Computing the exact diagonal of $J_t$ requires a full Jacobian (or $D$ JVPs), wh \quad z^{(k)}_i \overset{\text{iid}}{\sim} \mathrm{Rademacher}(\pm 1). ``` -Each probe $z^{(k)}$ costs a single Jacobian-vector product (one forward-mode or reverse-mode pass), so the total cost is $O(KTD)$ — linear in $D$ and $T$. In the limit $K \to \infty$ the estimate converges to the true diagonal. See Zoltowski et al. (2025) [^1] for convergence analysis. +Each probe $z^{(k)}$ costs a single Jacobian-vector product (one forward-mode or reverse-mode pass), so the total cost is $O(KTD)$ — linear in $D$ and $T$. In the limit $K \to \infty$ the estimate converges to the true diagonal. This is the default mode. See Zoltowski et al. (2025) [^1] for convergence analysis. In practice $K=1$ or $K=2$ probes works well; controlled by the `probes` argument of [`ParallelMALASampler`](@ref). @@ -126,7 +128,7 @@ x_t^\text{surrogate} = \hat{g}_t \, \tilde{x}_t + (1 - \hat{g}_t)\, x_{t-1}, where $\sigma$ is the logistic function. The stop-gradient term makes $\hat{g}_t$ equal to the exact indicator in the forward pass while routing gradients through $\sigma$ during the backward pass. This gives a well-defined, smooth Jacobian whose value at the operating point equals that of the relaxed step. -In the implementation, the accept indicator $g_t$ is pre-computed from the previous-iterate state and passed as a **frozen constant** to the surrogate ([`MALA.mala_step_surrogate`](@ref MALA.mala_step_surrogate)), so differentiation never touches the discontinuity. +In the implementation, the accept indicator $g_t$ is pre-computed from the previous-iterate state and passed as a **frozen constant** to the surrogate ([`MALA.mala_step_surrogate_sigmoid`](@ref MALA.mala_step_surrogate_sigmoid)), so differentiation never touches the discontinuity. ### Summary of the DEER–MALA loop @@ -136,6 +138,8 @@ In the implementation, the accept indicator $g_t$ is pre-computed from the previ 4. **Convergence check.** If the change is below tolerance, return $S^{(i+1)}$; otherwise go to step 2. 5. **Sample delivery.** Return the $T$ columns of the converged trajectory as individual MCMC samples. +For low-level callers using `DEER.solve(...; workspace=ws)`, the returned trajectory is copied by default so it remains valid after later solves reuse `ws`. Set `copy_result=false` only when you are intentionally accepting workspace-owned output that may be overwritten by a later call. + --- ## References diff --git a/docs/src/index.md b/docs/src/index.md index b593bf9..d09437f 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -54,7 +54,7 @@ model = DensityModel(logp, grad_logp, 2; ### DEER — parallel-across-sequence (primary algorithm) ```julia -sampler = ParallelMALASampler(0.1; T=64, jacobian=:diag) +sampler = ParallelMALASampler(0.1; T=64, jacobian=:stoch_diag) chain = sample(model, sampler, 500; chain_type=MCMCChains.Chains) diff --git a/src/DEER/DEER.jl b/src/DEER/DEER.jl index 3e0c00e..cb19759 100644 --- a/src/DEER/DEER.jl +++ b/src/DEER/DEER.jl @@ -5,23 +5,29 @@ using DifferentiationInterface using ADTypes: ADTypes, AbstractADType import Enzyme: Enzyme using Random +using CUDA: CUDA include("DEERScan.jl") using .DEERScan const DI = DifferentiationInterface -const DEFAULT_BACKEND = ADTypes.AutoEnzyme(; mode=Enzyme.Forward, function_annotation=Enzyme.Duplicated) +const DEFAULT_BACKEND = ADTypes.AutoEnzyme(; + mode=Enzyme.Forward, function_annotation=Enzyme.Duplicated +) const DEFAULT_HVP_BACKEND = DI.SecondOrder( - DEFAULT_BACKEND, - ADTypes.AutoEnzyme(; mode=Enzyme.set_runtime_activity(Enzyme.Reverse)), + DEFAULT_BACKEND, ADTypes.AutoEnzyme(; mode=Enzyme.set_runtime_activity(Enzyme.Reverse)) ) export TapedRecursion, - DEERWorkspace, - deer_update!, deer_update, - solve, - _prepare_hvp, _hvp_prepared, _hvp_nopre, - DEFAULT_BACKEND, DEFAULT_HVP_BACKEND + DEERWorkspace, + deer_update!, + deer_update, + solve, + _prepare_hvp, + _hvp_prepared, + _hvp_nopre, + DEFAULT_BACKEND, + DEFAULT_HVP_BACKEND """ Deterministic recursion driven by a pre-generated tape. @@ -40,7 +46,9 @@ struct TapedRecursion{Ff,Fj,Ffj,Ffb,Tt} tape::Vector{Tt} end -function TapedRecursion(step_fwd, jvp, tape::Vector; fwd_and_jvp=nothing, fwd_and_jvp_batch=nothing) +function TapedRecursion( + step_fwd, jvp, tape::Vector; fwd_and_jvp=nothing, fwd_and_jvp_batch=nothing +) return TapedRecursion(step_fwd, jvp, fwd_and_jvp, fwd_and_jvp_batch, tape) end @@ -56,6 +64,7 @@ struct DEERWorkspace{M,V,SW} B::M Xbar::M Z::M + S_work::M S_tmp::M diff_buf::M zbuf::V @@ -69,13 +78,16 @@ function DEERWorkspace(S_template::AbstractMatrix, s0_template::AbstractVector) B = similar(S_template) Xbar = similar(S_template) Z = similar(S_template) + S_work = similar(S_template) S_tmp = similar(S_template) diff_buf = similar(S_template) zbuf = similar(s0_template) jt_buf = similar(s0_template) xbar_buf = similar(s0_template) scan = DEERScan.AffineScanWorkspace(S_template) - return DEERWorkspace(A, B, Xbar, Z, S_tmp, diff_buf, zbuf, jt_buf, xbar_buf, scan) + return DEERWorkspace( + A, B, Xbar, Z, S_work, S_tmp, diff_buf, zbuf, jt_buf, xbar_buf, scan + ) end function DEERWorkspace(s0_template::AbstractVector, T::Integer) @@ -104,7 +116,9 @@ function _tangent_like(x::AbstractArray, v::AbstractArray) return v_copy end -function _hvp_prepared(f, prep, backend::AbstractADType, x::AbstractVector, v::AbstractVector) +function _hvp_prepared( + f, prep, backend::AbstractADType, x::AbstractVector, v::AbstractVector +) x_exec = _materialize_ad_vector(x) v_exec = _tangent_like(x_exec, v) res = DI.pushforward(f, prep, backend, x_exec, (v_exec,)) @@ -135,11 +149,7 @@ function _prepare_logdensity_hvp(f, backend::AbstractADType, x_template::Abstrac end function _logdensity_hvp_prepared( - f, - prep, - backend::AbstractADType, - x::AbstractVector, - v::AbstractVector, + f, prep, backend::AbstractADType, x::AbstractVector, v::AbstractVector ) x_exec = _materialize_ad_vector(x) v_exec = _tangent_like(x_exec, v) @@ -148,10 +158,7 @@ function _logdensity_hvp_prepared( end function _logdensity_hvp_nopre( - f, - backend::AbstractADType, - x::AbstractVector, - v::AbstractVector, + f, backend::AbstractADType, x::AbstractVector, v::AbstractVector ) x_exec = _materialize_ad_vector(x) v_exec = _tangent_like(x_exec, v) @@ -161,9 +168,7 @@ function _logdensity_hvp_nopre( end function _prepare_batch_hvp_from_grad( - grad_batch, - backend::AbstractADType, - X_template::AbstractMatrix, + grad_batch, backend::AbstractADType, X_template::AbstractMatrix ) V_template = similar(X_template) fill!(V_template, zero(eltype(X_template))) @@ -173,11 +178,7 @@ function _prepare_batch_hvp_from_grad( end function _batch_hvp_from_grad_prepared( - grad_batch, - prep, - backend::AbstractADType, - X::AbstractMatrix, - V::AbstractMatrix, + grad_batch, prep, backend::AbstractADType, X::AbstractMatrix, V::AbstractMatrix ) X_exec = _materialize_ad_matrix(X) V_exec = _tangent_like(X_exec, V) @@ -185,26 +186,21 @@ function _batch_hvp_from_grad_prepared( return res isa Tuple ? first(res) : res end -@inline function _rademacher!(z::AbstractVector{T}, rng::AbstractRNG) where {T} - D = length(z) - bits = rand(rng, Bool, D) - vals = Vector{T}(undef, D) - @inbounds for i in 1:D - vals[i] = bits[i] ? one(T) : -one(T) +@inline function _rademacher!(z::AbstractArray{T}, rng::AbstractRNG) where {T} + @inbounds for i in eachindex(z) + z[i] = rand(rng, Bool) ? one(T) : -one(T) end - copyto!(z, vals) return z end -@inline function _rademacher_matrix!(Z::AbstractMatrix{T}, rng::AbstractRNG) where {T} - D, n = size(Z) - bits = rand(rng, Bool, D, n) - vals = Matrix{T}(undef, D, n) - @. vals = ifelse(bits, one(T), -one(T)) - copyto!(Z, vals) - return Z +@inline function _rademacher!(z::CUDA.CuArray{T}, rng::AbstractRNG) where {T} + CUDA.rand!(z) + @. z = ifelse(z < T(0.5), -one(T), one(T)) + return z end +@inline _rademacher_matrix!(Z::AbstractMatrix, rng::AbstractRNG) = _rademacher!(Z, rng) + function jac_diag_via_jvps(rec::TapedRecursion, x::AbstractVector, t::Int) D = length(x) FT = eltype(x) @@ -234,7 +230,7 @@ function jac_diag_stoch( FT = float(eltype(x)) probes ≥ 1 || throw(ArgumentError("probes must be ≥ 1")) - z = zbuf === nothing ? Vector{FT}(undef, D) : zbuf + z = zbuf === nothing ? similar(x, FT, D) : zbuf length(z) == D || throw(ArgumentError("zbuf must have length D")) d = fill!(similar(z, D), zero(FT)) @@ -280,9 +276,9 @@ function deer_update!( Xbar = ws.Xbar Z = ws.Z - copyto!(view(Xbar, :, 1), s0) + copyto!(Xbar, 1, s0, 1, D) if T > 1 - @views Xbar[:, 2:end] .= S_in[:, 1:(T - 1)] + copyto!(Xbar, D + 1, S_in, 1, D * (T - 1)) end _rademacher_matrix!(Z, rng) @@ -307,7 +303,7 @@ function deer_update!( xbar = if t == 1 s0 else - copyto!(xbar_buf, view(S_in, :, t - 1)) + copyto!(xbar_buf, 1, S_in, (t - 2) * D + 1, D) xbar_buf end @@ -329,14 +325,18 @@ function deer_update!( jt_buf .*= one(eltype(jt_buf)) / probes end - view(A, :, t) .= jt_buf - @views @. B[:, t] = ft - jt_buf * xbar + colstart = (t - 1) * D + 1 + copyto!(A, colstart, jt_buf, 1, D) + @. xbar_buf = ft - jt_buf * xbar + copyto!(B, colstart, xbar_buf, 1, D) elseif jacobian === :diag ft = rec.step_fwd(xbar, rec.tape[t]) jt = jac_diag_via_jvps(rec, xbar, t) - view(A, :, t) .= jt - @views @. B[:, t] = ft - jt * xbar + colstart = (t - 1) * D + 1 + copyto!(A, colstart, jt, 1, D) + @. xbar_buf = ft - jt * xbar + copyto!(B, colstart, xbar_buf, 1, D) else throw(ArgumentError("jacobian must be :diag or :stoch_diag")) @@ -362,7 +362,9 @@ function deer_update( ) ws = DEERWorkspace(S, vec(s0_in)) S_out = similar(S) - deer_update!(ws, S_out, rec, s0_in, S; jacobian=jacobian, damping=damping, probes=probes, rng=rng) + deer_update!( + ws, S_out, rec, s0_in, S; jacobian=jacobian, damping=damping, probes=probes, rng=rng + ) return S_out end @@ -371,6 +373,12 @@ Run DEER iterations until convergence. When no workspace is supplied, one is created automatically. Supplying a pre-allocated `DEERWorkspace` is the intended path for repeated GPU solves. + +If `workspace` is supplied, `copy_result` defaults to `true` so the returned +trajectory is owned by the caller and will not be overwritten by a later solve +using the same workspace. Set `copy_result=false` for allocation-sensitive +internal loops; in that mode the returned trajectory may alias workspace-owned +buffers such as `workspace.S_tmp`. """ function solve( rec::TapedRecursion, @@ -385,6 +393,7 @@ function solve( rng::AbstractRNG=Random.default_rng(), return_info::Bool=false, workspace::Union{Nothing,DEERWorkspace}=nothing, + copy_result::Union{Nothing,Bool}=nothing, ) s0 = vec(s0_in) D = length(s0) @@ -395,16 +404,22 @@ function solve( tol_rel ≥ 0 || throw(ArgumentError("tol_rel must be ≥ 0")) damping > 0 && damping ≤ 1 || throw(ArgumentError("damping must be in (0,1]")) + copy_result === nothing && (copy_result = workspace !== nothing) + ws = workspace === nothing ? DEERWorkspace(s0, T) : workspace - size(ws.S_tmp) == (D, T) || throw(ArgumentError("workspace state buffer has wrong size")) + size(ws.S_work) == (D, T) || + throw(ArgumentError("workspace state buffer has wrong size")) + size(ws.S_tmp) == (D, T) || + throw(ArgumentError("workspace state buffer has wrong size")) S = if init === nothing - S0 = similar(s0, D, T) - S0 .= reshape(s0, D, 1) + S0 = ws.S_work + S0 .= s0 S0 else size(init) == (D, T) || throw(ArgumentError("init must be size (D,T)")) - copy(init) + copyto!(ws.S_work, init) + ws.S_work end S_new = ws.S_tmp @@ -414,7 +429,17 @@ function solve( for iter in 1:maxiter iters = iter - deer_update!(ws, S_new, rec, s0, S; jacobian=jacobian, damping=damping, probes=probes, rng=rng) + deer_update!( + ws, + S_new, + rec, + s0, + S; + jacobian=jacobian, + damping=damping, + probes=probes, + rng=rng, + ) @. ws.diff_buf = abs(S_new - S) Δ_max = maximum(ws.diff_buf) @@ -432,8 +457,10 @@ function solve( S, S_new = S_new, S end - return_info || return S - return S, + S_result = copy_result ? copy(S) : S + + return_info || return S_result + return S_result, ( converged=converged, iters=iters, diff --git a/src/DEER/DEERScan.jl b/src/DEER/DEERScan.jl index a13a67c..f363a16 100644 --- a/src/DEER/DEERScan.jl +++ b/src/DEER/DEERScan.jl @@ -1,9 +1,12 @@ module DEERScan export AffineScanWorkspace, - solve_affine_seq!, solve_affine_seq, - solve_affine_scan_diag!, solve_affine_scan_diag, - check_affine_scan, affine_scan_residual + solve_affine_seq!, + solve_affine_seq, + solve_affine_scan_diag!, + solve_affine_scan_diag, + check_affine_scan, + affine_scan_residual """ Reusable workspace for the diagonal affine scan. @@ -45,7 +48,9 @@ Inputs: This is the ground-truth implementation to compare against the parallel scan path. It is intentionally simple and should be used in tests. """ -function solve_affine_seq!(S::AbstractMatrix, A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVector) +function solve_affine_seq!( + S::AbstractMatrix, A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVector +) D, T = size(A) size(B) == (D, T) || throw(DimensionMismatch("B must have the same size as A")) size(S) == (D, T) || throw(DimensionMismatch("S must have size (D, T)")) @@ -108,10 +113,14 @@ function solve_affine_scan_diag!( size(B) == (D, T) || throw(DimensionMismatch("B must have the same size as A")) size(S) == (D, T) || throw(DimensionMismatch("S must have size (D, T)")) length(s0) == D || throw(DimensionMismatch("length(s0) must equal size(A,1)")) - size(ws.alpha) == (D, T) || throw(DimensionMismatch("workspace has wrong matrix size")) - size(ws.beta) == (D, T) || throw(DimensionMismatch("workspace has wrong matrix size")) - size(ws.alpha_new) == (D, T) || throw(DimensionMismatch("workspace has wrong matrix size")) - size(ws.beta_new) == (D, T) || throw(DimensionMismatch("workspace has wrong matrix size")) + size(ws.alpha) == (D, T) || + throw(DimensionMismatch("workspace has wrong matrix size")) + size(ws.beta) == (D, T) || + throw(DimensionMismatch("workspace has wrong matrix size")) + size(ws.alpha_new) == (D, T) || + throw(DimensionMismatch("workspace has wrong matrix size")) + size(ws.beta_new) == (D, T) || + throw(DimensionMismatch("workspace has wrong matrix size")) Base.mightalias(S, A) && throw(ArgumentError("S must not alias A")) Base.mightalias(S, B) && throw(ArgumentError("S must not alias B")) end @@ -128,14 +137,27 @@ function solve_affine_scan_diag!( offset = 1 while offset < T + last_level = (offset << 1) >= T @views begin - alpha_new[:, 1:offset] .= alpha[:, 1:offset] - beta_new[:, 1:offset] .= beta[:, 1:offset] + if !last_level + # The destination already has the older prefix up to offset ÷ 2; + # only the newly exposed unchanged segment needs refreshing. + copy_start = offset == 1 ? 1 : (offset >> 1) + 1 + alpha_new[:, copy_start:offset] .= alpha[:, copy_start:offset] + beta_new[:, copy_start:offset] .= beta[:, copy_start:offset] + end - if offset < T - alpha_new[:, (offset + 1):T] .= alpha[:, (offset + 1):T] .* alpha[:, 1:(T - offset)] - beta_new[:, (offset + 1):T] .= - alpha[:, (offset + 1):T] .* beta[:, 1:(T - offset)] .+ beta[:, (offset + 1):T] + alpha_new[:, (offset + 1):T] .= + alpha[:, (offset + 1):T] .* alpha[:, 1:(T - offset)] + beta_new[:, (offset + 1):T] .= + alpha[:, (offset + 1):T] .* beta[:, 1:(T - offset)] .+ + beta[:, (offset + 1):T] + + if last_level + S[:, 1:offset] .= alpha[:, 1:offset] .* s0 .+ beta[:, 1:offset] + S[:, (offset + 1):T] .= + alpha_new[:, (offset + 1):T] .* s0 .+ beta_new[:, (offset + 1):T] + return S end end @@ -144,7 +166,7 @@ function solve_affine_scan_diag!( offset <<= 1 end - S .= alpha .* reshape(s0, D, 1) .+ beta + S .= alpha .* s0 .+ beta return S end @@ -176,7 +198,9 @@ Return the maximum absolute residual of the recurrence Useful for debugging scan correctness independent of DEER. """ -function affine_scan_residual(S::AbstractMatrix, A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVector) +function affine_scan_residual( + S::AbstractMatrix, A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVector +) D, T = size(A) size(B) == (D, T) || throw(DimensionMismatch("B must have the same size as A")) size(S) == (D, T) || throw(DimensionMismatch("S must have size (D, T)")) @@ -207,7 +231,9 @@ Returns a named tuple with: This is intended as a lightweight validation helper when plugging the scan into DEER. """ -function check_affine_scan(A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVector; atol=1e-6, rtol=1e-6) +function check_affine_scan( + A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVector; atol=1e-6, rtol=1e-6 +) S_seq = solve_affine_seq(A, B, s0) S_scan = solve_affine_scan_diag(A, B, s0) @@ -219,13 +245,13 @@ function check_affine_scan(A::AbstractMatrix, B::AbstractMatrix, s0::AbstractVec residual_scan = affine_scan_residual(S_scan, A, B, s0) return ( - ok = all(diff .<= scale), - max_abs_err = max_abs_err, - max_rel_err = max_rel_err, - residual_seq = residual_seq, - residual_scan = residual_scan, - S_seq = S_seq, - S_scan = S_scan, + ok=all(diff .<= scale), + max_abs_err=max_abs_err, + max_rel_err=max_rel_err, + residual_seq=residual_seq, + residual_scan=residual_scan, + S_seq=S_seq, + S_scan=S_scan, ) end diff --git a/src/MALA/MALA.jl b/src/MALA/MALA.jl index 9c183bd..abf1016 100644 --- a/src/MALA/MALA.jl +++ b/src/MALA/MALA.jl @@ -3,31 +3,44 @@ module MALA using Random, LinearAlgebra export MALAWorkspace, - logq_mala, logq_mala!, - mala_step_taped, mala_step_taped!, - run_mala_sequential_taped, - mala_proposal, mala_proposal!, - mala_logα, mala_logα!, - mala_accept_indicator, - mala_step_full, - mala_step_with_logα, - mala_step_surrogate_sigmoid, - mala_step_surrogate_sigmoid_jvp, - mala_step_taped_and_jvp, - mala_step_taped_and_jvp!, - mala_step_batched_fwd_and_jvp + MALABatchedWorkspace, + logq_mala, + logq_mala!, + mala_step_taped, + mala_step_taped!, + run_mala_sequential_taped, + mala_proposal, + mala_proposal!, + mala_logα, + mala_logα!, + mala_accept_indicator, + mala_step_full, + mala_step_with_logα, + mala_step_with_logα!, + mala_step_surrogate_sigmoid, + mala_step_surrogate_sigmoid_jvp, + mala_step_taped_and_jvp, + mala_step_taped_and_jvp!, + mala_step_batched, + mala_step_batched!, + mala_step_batched_fwd_and_jvp, + mala_step_batched_fwd_and_jvp! # Preconditioner dispatch helpers. cholM is either nothing (identity) or a Cholesky factor. -_apply_M(g, ::Nothing) = g -_apply_M(g, cholM::Cholesky) = cholM.L * (cholM.L' * g) +_apply_M!(out, g, ::Nothing, tmp=out) = copyto!(out, g) +function _apply_M!(out, g, cholM::Cholesky, tmp) + mul!(tmp, adjoint(cholM.L), g) + mul!(out, cholM.L, tmp) + return out +end -_apply_L(ξ, ::Nothing) = ξ -_apply_L(ξ, cholM::Cholesky) = cholM.L * ξ +_apply_L!(out, ξ, ::Nothing) = (out .= ξ) +_apply_L!(out, ξ, cholM::Cholesky) = mul!(out, cholM.L, ξ) -_quad_Minv(r, ::Nothing) = dot(r, r) -function _quad_Minv(r, cholM::Cholesky) - w = cholM.L \ r - return dot(w, w) +_quad_Minv!(tmp, r, ::Nothing) = dot(r, r) +function _quad_Minv!(tmp, r, cholM::Cholesky) + ldiv!(tmp, cholM.L, r) + return dot(tmp, tmp) end _logdet_M(::Nothing) = false # Bool promotes to any numeric type without widening @@ -50,20 +63,105 @@ struct MALAWorkspace{V} w::V dr::V jvp_out::V + solve_buf::V end -function MALAWorkspace(x_template::AbstractVector) - g_x = similar(x_template) - g_y = similar(x_template) - y = similar(x_template) - μ = similar(x_template) - r = similar(x_template) - Hv_x = similar(x_template) - Hv_y = similar(x_template) - w = similar(x_template) - dr = similar(x_template) - jvp_out = similar(x_template) - return MALAWorkspace(g_x, g_y, y, μ, r, Hv_x, Hv_y, w, dr, jvp_out) +function MALAWorkspace(x::AbstractVector) + return MALAWorkspace( + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + similar(x), + ) +end + +""" +Reusable scratch buffers for batched MALA primitives. + +Matrix buffers have the same size, eltype, and device placement as `X_template`. +Vector buffers have length `size(X_template, 2)`. +""" +struct MALABatchedWorkspace{M,V,RM,BV,BM} + G_X::M + G_Y::M + Y::M + MG_X::M + MG_Y::M + LΞ::M + R::M + dR::M + Hv_X::M + Hv_Y::M + W::M + M_Hv_X::M + M_Hv_Y::M + Minv_R::M + solve_tmp::M + prod::M + lp_X::V + lp_Y::V + lq_YX::V + lq_XY::V + logα::V + logu::V + g::V + dlogα::V + dg::V + dot1::V + dot2::V + dot3::V + row::RM + accepted::BV + accepted_row::BM +end + +function MALABatchedWorkspace(X::AbstractMatrix) + N = size(X, 2) + mat() = similar(X) + vec() = similar(X, eltype(X), N) + row() = similar(X, eltype(X), 1, N) + accepted = similar(X, Bool, N) + accepted_row = similar(X, Bool, 1, N) + return MALABatchedWorkspace( + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + mat(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + vec(), + row(), + accepted, + accepted_row, + ) end """ @@ -85,21 +183,17 @@ function logq_mala!( if cholM === nothing @. ws.μ = x + ϵ * gradlogp_x else - tmp = _apply_M(gradlogp_x, cholM) - @. ws.μ = x + ϵ * tmp + _apply_M!(ws.w, gradlogp_x, cholM, ws.solve_buf) + @. ws.μ = x + ϵ * ws.w end @. ws.r = y - ws.μ - return -T(0.5) * _quad_Minv(ws.r, cholM) / (2ϵ) - (T(d) / 2) * log(T(4π) * ϵ) - - T(0.5) * _logdet_M(cholM) + return -T(0.5) * _quad_Minv!(ws.solve_buf, ws.r, cholM) / (2ϵ) - + (T(d) / 2) * log(T(4π) * ϵ) - T(0.5) * _logdet_M(cholM) end function logq_mala( - y::AbstractVector, - x::AbstractVector, - gradlogp_x::AbstractVector, - ϵ::Real; - cholM=nothing, + y::AbstractVector, x::AbstractVector, gradlogp_x::AbstractVector, ϵ::Real; cholM=nothing ) ws = MALAWorkspace(x) return logq_mala!(ws, y, x, gradlogp_x, ϵ; cholM=cholM) @@ -127,20 +221,15 @@ function mala_proposal!( if cholM === nothing @. y = x + ϵ * ws.g_x + sqrt2ϵ * ξ else - Mgx = _apply_M(ws.g_x, cholM) - Lξ = _apply_L(ξ, cholM) - @. y = x + ϵ * Mgx + sqrt2ϵ * Lξ + _apply_M!(ws.μ, ws.g_x, cholM, ws.solve_buf) + _apply_L!(ws.r, ξ, cholM) + @. y = x + ϵ * ws.μ + sqrt2ϵ * ws.r end return y end function mala_proposal( - logp, - gradlogp, - x::AbstractVector, - ϵ::Real, - ξ::AbstractVector; - cholM=nothing, + logp, gradlogp, x::AbstractVector, ϵ::Real, ξ::AbstractVector; cholM=nothing ) ws = MALAWorkspace(x) y = similar(x) @@ -172,12 +261,7 @@ function mala_logα!( end function mala_logα( - logp, - gradlogp, - x::AbstractVector, - y::AbstractVector, - ϵ::Real; - cholM=nothing, + logp, gradlogp, x::AbstractVector, y::AbstractVector, ϵ::Real; cholM=nothing ) ws = MALAWorkspace(x) return mala_logα!(ws, logp, gradlogp, x, y, ϵ; cholM=cholM) @@ -221,13 +305,7 @@ function mala_step_taped!( end function mala_step_taped( - logp, - gradlogp, - x::AbstractVector, - ϵ::Real, - ξ::AbstractVector, - u::Real; - cholM=nothing, + logp, gradlogp, x::AbstractVector, ϵ::Real, ξ::AbstractVector, u::Real; cholM=nothing ) ws = MALAWorkspace(x) x_next = similar(x) @@ -272,13 +350,7 @@ Primal accept indicator for a taped MALA step. Returns a float in {0, 1} matching the precision of `u`. """ function mala_accept_indicator( - logp, - gradlogp, - x::AbstractVector, - ϵ::Real, - ξ::AbstractVector, - u::Real; - cholM=nothing, + logp, gradlogp, x::AbstractVector, ϵ::Real, ξ::AbstractVector, u::Real; cholM=nothing ) ws = MALAWorkspace(x) mala_proposal!(ws.y, ws, logp, gradlogp, x, ϵ, ξ; cholM=cholM) @@ -288,19 +360,23 @@ function mala_accept_indicator( end function mala_step_full( - logp, - gradlogp, - x::AbstractVector, - ϵ::Real, - ξ::AbstractVector, - u::Real; - cholM=nothing, + logp, gradlogp, x::AbstractVector, ϵ::Real, ξ::AbstractVector, u::Real; cholM=nothing ) x_next, accepted, _ = mala_step_with_logα(logp, gradlogp, x, ϵ, ξ, u; cholM=cholM) return x_next, accepted end function mala_step_with_logα( + logp, gradlogp, x::AbstractVector, ϵ::Real, ξ::AbstractVector, u::Real; cholM=nothing +) + ws = MALAWorkspace(x) + x_next = similar(x) + return mala_step_with_logα!(x_next, ws, logp, gradlogp, x, ϵ, ξ, u; cholM=cholM) +end + +function mala_step_with_logα!( + x_next::AbstractVector, + ws::MALAWorkspace, logp, gradlogp, x::AbstractVector, @@ -310,9 +386,12 @@ function mala_step_with_logα( cholM=nothing, ) length(x) == length(ξ) || throw(DimensionMismatch("x and ξ must have the same length")) + length(x_next) == length(x) || + throw(DimensionMismatch("x_next must have the same length as x")) + length(ws.y) == length(x) || + throw(DimensionMismatch("workspace must match length of x")) 0.0 < u < 1.0 || throw(ArgumentError("u must be in (0, 1)")) - ws = MALAWorkspace(x) mala_proposal!(ws.y, ws, logp, gradlogp, x, ϵ, ξ; cholM=cholM) logp_x = logp(x) logp_y = logp(ws.y) @@ -323,7 +402,11 @@ function mala_step_with_logα( logα = (logp_y + logq_xy) - (logp_x + logq_yx) accepted = log(u) < logα - x_next = accepted ? copy(ws.y) : copy(x) + if accepted + copyto!(x_next, ws.y) + else + copyto!(x_next, x) + end return x_next, accepted, logα end @@ -331,13 +414,7 @@ end Stop-gradient surrogate step used for Jacobians. """ function mala_step_surrogate_sigmoid( - logp, - gradlogp, - x::AbstractVector, - ϵ::Real, - ξ::AbstractVector, - u::Real; - cholM=nothing, + logp, gradlogp, x::AbstractVector, ϵ::Real, ξ::AbstractVector, u::Real; cholM=nothing ) ws = MALAWorkspace(x) mala_proposal!(ws.y, ws, logp, gradlogp, x, ϵ, ξ; cholM=cholM) @@ -350,38 +427,67 @@ function mala_step_surrogate_sigmoid( end # Apply mass matrix to a D×N matrix of gradient columns. -_apply_M_batched(G::AbstractMatrix, ::Nothing) = G -_apply_M_batched(G::AbstractMatrix, cholM::Cholesky) = cholM.L * (cholM.L' * G) - -_apply_L_batched(Ξ::AbstractMatrix, ::Nothing) = Ξ -_apply_L_batched(Ξ::AbstractMatrix, cholM::Cholesky) = cholM.L * Ξ - -function _quad_Minv_batched(R::AbstractMatrix, ::Nothing) - return vec(sum(abs2, R; dims=1)) +_apply_M_batched!(out, G, ::Nothing, tmp=out) = copyto!(out, G) +function _apply_M_batched!(out, G, cholM::Cholesky, tmp) + mul!(tmp, adjoint(cholM.L), G) + mul!(out, cholM.L, tmp) + return out end -function _quad_Minv_batched(R::AbstractMatrix, cholM::Cholesky) - W = cholM.L \ R - return vec(sum(abs2, W; dims=1)) +_apply_L_batched!(out, Ξ, ::Nothing) = copyto!(out, Ξ) +_apply_L_batched!(out, Ξ, cholM::Cholesky) = mul!(out, cholM.L, Ξ) + +function _sum_columns!(out::AbstractVector, row::AbstractMatrix, A::AbstractMatrix) + sum!(row, A) + copyto!(out, row) + return out end -function logq_mala_batched( +function logq_mala_batched!( + out::AbstractVector, + ws::MALABatchedWorkspace, Y::AbstractMatrix, X::AbstractMatrix, gradlogp_X::AbstractMatrix, ε::Real; cholM=nothing, ) - T = typeof(ε) - D = size(X, 1) - μ = X .+ ε .* _apply_M_batched(gradlogp_X, cholM) - R = Y .- μ - q = _quad_Minv_batched(R, cholM) - ldet = _logdet_M(cholM) - return @. -T(0.5) * q / (2ε) - (T(D) / 2) * log(T(4π) * ε) - T(0.5) * ldet + D, N = size(X) + size(Y) == (D, N) || throw(DimensionMismatch("X and Y must have the same size")) + size(gradlogp_X) == (D, N) || + throw(DimensionMismatch("gradlogp_X must have the same size as X")) + length(out) == N || throw(DimensionMismatch("out must have length size(X,2)")) + + εT = convert(eltype(X), ε) + if cholM === nothing + @. ws.R = Y - X - εT * gradlogp_X + @. ws.R = abs2(ws.R) + _sum_columns!(out, ws.row, ws.R) + else + _apply_M_batched!(ws.MG_X, gradlogp_X, cholM, ws.solve_tmp) + @. ws.R = Y - X - εT * ws.MG_X + ldiv!(ws.Minv_R, cholM.L, ws.R) + @. ws.Minv_R = abs2(ws.Minv_R) + _sum_columns!(out, ws.row, ws.Minv_R) + end + + FT = typeof(εT) + ldet = cholM === nothing ? zero(FT) : FT(_logdet_M(cholM)) + c = (FT(D) / 2) * log(FT(4π) * εT) + FT(0.5) * ldet + @. out = -FT(0.5) * out / (2εT) - c + return out end -function mala_step_batched( +function logq_mala_batched(Y, X, gradlogp_X, ε; cholM=nothing) + ws = MALABatchedWorkspace(X) + out = similar(X, eltype(X), size(X, 2)) + return logq_mala_batched!(out, ws, Y, X, gradlogp_X, ε; cholM=cholM) +end + +function mala_step_batched!( + X_next::AbstractMatrix, + accepted::AbstractVector, + ws::MALABatchedWorkspace, logp_batch, gradlogp_batch, X::AbstractMatrix, @@ -392,26 +498,53 @@ function mala_step_batched( ) D, N = size(X) size(Ξ) == (D, N) || throw(DimensionMismatch("X and Ξ must have the same size")) + size(X_next) == (D, N) || + throw(DimensionMismatch("X_next must have the same size as X")) length(u) == N || throw(DimensionMismatch("u must have length N = size(X,2)")) + length(accepted) == N || + throw(DimensionMismatch("accepted must have length N = size(X,2)")) - ε_T = eltype(X)(ε) + εT = convert(eltype(X), ε) + sqrt2εT = sqrt(2 * εT) - G_X = gradlogp_batch(X) - Y = X .+ ε_T .* _apply_M_batched(G_X, cholM) .+ sqrt(2 * ε_T) .* _apply_L_batched(Ξ, cholM) + copyto!(ws.G_X, gradlogp_batch(X)) + _apply_M_batched!(ws.MG_X, ws.G_X, cholM, ws.solve_tmp) + _apply_L_batched!(ws.LΞ, Ξ, cholM) + @. ws.Y = X + εT * ws.MG_X + sqrt2εT * ws.LΞ - lp_X = logp_batch(X) - lp_Y = logp_batch(Y) - G_Y = gradlogp_batch(Y) + copyto!(ws.lp_X, logp_batch(X)) + copyto!(ws.lp_Y, logp_batch(ws.Y)) + copyto!(ws.G_Y, gradlogp_batch(ws.Y)) - lq_YX = logq_mala_batched(Y, X, G_X, ε_T; cholM=cholM) - lq_XY = logq_mala_batched(X, Y, G_Y, ε_T; cholM=cholM) + logq_mala_batched!(ws.lq_YX, ws, ws.Y, X, ws.G_X, εT; cholM=cholM) + logq_mala_batched!(ws.lq_XY, ws, X, ws.Y, ws.G_Y, εT; cholM=cholM) - logα = @. (lp_Y + lq_XY) - (lp_X + lq_YX) - accepted = @. log(u) < logα + @. ws.logα = (ws.lp_Y + ws.lq_XY) - (ws.lp_X + ws.lq_YX) + @. ws.logu = log(u) + @. accepted = ws.logu < ws.logα + copyto!(ws.accepted_row, accepted) + @. X_next = ifelse(ws.accepted_row, ws.Y, X) + return X_next, accepted +end - mask = reshape(accepted, 1, N) - X_next = @. ifelse(mask, Y, X) - return X_next, vec(accepted) +function mala_step_batched( + logp_batch, + gradlogp_batch, + X::AbstractMatrix, + ε::Real, + Ξ::AbstractMatrix, + u::AbstractVector; + cholM=nothing, +) + D, N = size(X) + size(Ξ) == (D, N) || throw(DimensionMismatch("X and Ξ must have the same size")) + length(u) == N || throw(DimensionMismatch("u must have length N = size(X,2)")) + ws = MALABatchedWorkspace(X) + X_next = similar(X) + accepted = similar(X, Bool, N) + return mala_step_batched!( + X_next, accepted, ws, logp_batch, gradlogp_batch, X, ε, Ξ, u; cholM=cholM + ) end """ @@ -420,7 +553,10 @@ Batched fused surrogate forward step and JVP over columns. `X`, `Ξ`, and `Z` are all D×T, and `u` has length T. Returns `(FT, Jt)` where both outputs are D×T. """ -function mala_step_batched_fwd_and_jvp( +function mala_step_batched_fwd_and_jvp!( + FT::AbstractMatrix, + Jt::AbstractMatrix, + ws::MALABatchedWorkspace, logp_batch, gradlogp_batch, hvp_batch, @@ -434,53 +570,99 @@ function mala_step_batched_fwd_and_jvp( D, T = size(X) size(Ξ) == (D, T) || throw(DimensionMismatch("X and Ξ must have the same size")) size(Z) == (D, T) || throw(DimensionMismatch("X and Z must have the same size")) - length(u) == T || throw(DimensionMismatch("u must have length T")) + size(FT) == (D, T) || throw(DimensionMismatch("FT must have the same size as X")) + size(Jt) == (D, T) || throw(DimensionMismatch("Jt must have the same size as X")) + length(u) == T || throw(DimensionMismatch("u must have length size(X,2)")) εT = convert(eltype(X), ε) oneT = one(eltype(X)) - sqrt2εT = sqrt(2 * εT) - G_X = gradlogp_batch(X) - Y = X .+ εT .* _apply_M_batched(G_X, cholM) .+ sqrt2εT .* _apply_L_batched(Ξ, cholM) + copyto!(ws.G_X, gradlogp_batch(X)) + _apply_M_batched!(ws.MG_X, ws.G_X, cholM, ws.solve_tmp) + _apply_L_batched!(ws.LΞ, Ξ, cholM) + @. ws.Y = X + εT * ws.MG_X + sqrt(2 * εT) * ws.LΞ - lp_X = logp_batch(X) - lp_Y = logp_batch(Y) - G_Y = gradlogp_batch(Y) + copyto!(ws.lp_X, logp_batch(X)) + copyto!(ws.lp_Y, logp_batch(ws.Y)) + copyto!(ws.G_Y, gradlogp_batch(ws.Y)) - lq_YX = logq_mala_batched(Y, X, G_X, εT; cholM=cholM) - lq_XY = logq_mala_batched(X, Y, G_Y, εT; cholM=cholM) - logα = @. (lp_Y + lq_XY) - (lp_X + lq_YX) + logq_mala_batched!(ws.lq_YX, ws, ws.Y, X, ws.G_X, εT; cholM=cholM) + logq_mala_batched!(ws.lq_XY, ws, X, ws.Y, ws.G_Y, εT; cholM=cholM) - u_like = similar(logα, eltype(logα), T) - copyto!(u_like, u) - logu = log.(u_like) + @. ws.logα = (ws.lp_Y + ws.lq_XY) - (ws.lp_X + ws.lq_YX) + @. ws.logu = log(u) + @. ws.g = oneT / (oneT + exp(-(ws.logα - ws.logu))) + @. ws.accepted = ws.logu < ws.logα + copyto!(ws.accepted_row, ws.accepted) + @. FT = ifelse(ws.accepted_row, ws.Y, X) - g̃ = logα .- logu - g = @. oneT / (oneT + exp(-g̃)) - g_row = reshape(g, 1, T) + copyto!(ws.Hv_X, hvp_batch(X, Z)) + _apply_M_batched!(ws.M_Hv_X, ws.Hv_X, cholM, ws.solve_tmp) + @. ws.W = Z + εT * ws.M_Hv_X - accepted = @. logu < logα - accepted_row = reshape(accepted, 1, T) - FT = @. ifelse(accepted_row, Y, X) + copyto!(ws.Hv_Y, hvp_batch(ws.Y, ws.W)) + _apply_M_batched!(ws.MG_Y, ws.G_Y, cholM, ws.solve_tmp) + _apply_M_batched!(ws.M_Hv_Y, ws.Hv_Y, cholM, ws.solve_tmp) + @. ws.R = X - ws.Y - εT * ws.MG_Y + @. ws.dR = Z - ws.W - εT * ws.M_Hv_Y - Hv_X = hvp_batch(X, Z) - W = Z .+ εT .* _apply_M_batched(Hv_X, cholM) + if cholM === nothing + @. ws.prod = ws.R * ws.dR + else + ldiv!(ws.Minv_R, cholM, ws.R) + @. ws.prod = ws.Minv_R * ws.dR + end + _sum_columns!(ws.dot3, ws.row, ws.prod) + @. ws.prod = ws.G_Y * ws.W + _sum_columns!(ws.dot1, ws.row, ws.prod) + @. ws.prod = ws.G_X * Z + _sum_columns!(ws.dot2, ws.row, ws.prod) - Hv_Y = hvp_batch(Y, W) - R = X .- Y .- εT .* _apply_M_batched(G_Y, cholM) - dR = Z .- W .- εT .* _apply_M_batched(Hv_Y, cholM) + @. ws.dlogα = ws.dot1 - ws.dot2 - inv(2 * εT) * ws.dot3 + @. ws.dg = ws.g * (oneT - ws.g) * ws.dlogα - Minv_R = cholM === nothing ? R : (cholM \ R) + copyto!(ws.row, ws.dg) + @. Jt = ifelse(ws.accepted_row, ws.W, Z) + (ws.Y - X) * ws.row - dlogα = vec(sum(G_Y .* W; dims=1)) .- - vec(sum(G_X .* Z; dims=1)) .- - inv(2 * εT) .* vec(sum(Minv_R .* dR; dims=1)) + return FT, Jt +end - dg = g .* (oneT .- g) .* dlogα - dg_row = reshape(dg, 1, T) +function mala_step_batched_fwd_and_jvp!( + FT::AbstractMatrix, + Jt::AbstractMatrix, + logp_batch, + gradlogp_batch, + hvp_batch, + X::AbstractMatrix, + ε::Real, + Ξ::AbstractMatrix, + u::AbstractVector, + Z::AbstractMatrix; + cholM=nothing, +) + ws = MALABatchedWorkspace(X) + return mala_step_batched_fwd_and_jvp!( + FT, Jt, ws, logp_batch, gradlogp_batch, hvp_batch, X, ε, Ξ, u, Z; cholM=cholM + ) +end - Jt = @. ifelse(accepted_row, W, Z) + (Y - X) * dg_row - return FT, Jt +function mala_step_batched_fwd_and_jvp( + logp_batch, + gradlogp_batch, + hvp_batch, + X::AbstractMatrix, + ε::Real, + Ξ::AbstractMatrix, + u::AbstractVector, + Z::AbstractMatrix; + cholM=nothing, +) + FT = similar(X) + Jt = similar(X) + ws = MALABatchedWorkspace(X) + return mala_step_batched_fwd_and_jvp!( + FT, Jt, ws, logp_batch, gradlogp_batch, hvp_batch, X, ε, Ξ, u, Z; cholM=cholM + ) end """ @@ -515,8 +697,8 @@ function mala_step_surrogate_sigmoid_jvp( if cholM === nothing @. ws.w = v + ε * ws.Hv_x else - MHv_x = _apply_M(ws.Hv_x, cholM) - @. ws.w = v + ε * MHv_x + _apply_M!(ws.μ, ws.Hv_x, cholM, ws.solve_buf) + @. ws.w = v + ε * ws.μ end copyto!(ws.Hv_y, hvp_fn(ws.y, ws.w)) @@ -525,11 +707,12 @@ function mala_step_surrogate_sigmoid_jvp( @. ws.dr = v - ws.w - ε * ws.Hv_y Minv_r = ws.r else - Mg_y = _apply_M(ws.g_y, cholM) - MHv_y = _apply_M(ws.Hv_y, cholM) - @. ws.r = x - ws.y - ε * Mg_y - @. ws.dr = v - ws.w - ε * MHv_y - Minv_r = cholM \ ws.r + _apply_M!(ws.μ, ws.g_y, cholM, ws.solve_buf) + _apply_M!(ws.jvp_out, ws.Hv_y, cholM, ws.solve_buf) + @. ws.r = x - ws.y - ε * ws.μ + @. ws.dr = v - ws.w - ε * ws.jvp_out + ldiv!(ws.solve_buf, cholM, ws.r) + Minv_r = ws.solve_buf end dlogα = dot(ws.g_y, ws.w) - dot(ws.g_x, v) - inv(2 * ε) * dot(Minv_r, ws.dr) @@ -584,8 +767,8 @@ function mala_step_taped_and_jvp!( if cholM === nothing @. ws.w = v + ε * ws.Hv_x else - MHv_x = _apply_M(ws.Hv_x, cholM) - @. ws.w = v + ε * MHv_x + _apply_M!(ws.μ, ws.Hv_x, cholM, ws.solve_buf) + @. ws.w = v + ε * ws.μ end copyto!(ws.Hv_y, hvp_fn(ws.y, ws.w)) @@ -594,11 +777,12 @@ function mala_step_taped_and_jvp!( @. ws.dr = v - ws.w - ε * ws.Hv_y Minv_r = ws.r else - Mg_y = _apply_M(ws.g_y, cholM) - MHv_y = _apply_M(ws.Hv_y, cholM) - @. ws.r = x - ws.y - ε * Mg_y - @. ws.dr = v - ws.w - ε * MHv_y - Minv_r = cholM \ ws.r + _apply_M!(ws.μ, ws.g_y, cholM, ws.solve_buf) + _apply_M!(ws.jvp_out, ws.Hv_y, cholM, ws.solve_buf) + @. ws.r = x - ws.y - ε * ws.μ + @. ws.dr = v - ws.w - ε * ws.jvp_out + ldiv!(ws.solve_buf, cholM, ws.r) + Minv_r = ws.solve_buf end dlogα = dot(ws.g_y, ws.w) - dot(ws.g_x, v) - inv(2 * ε) * dot(Minv_r, ws.dr) @@ -623,18 +807,7 @@ function mala_step_taped_and_jvp( x_next = similar(x) jvp_out = similar(x) mala_step_taped_and_jvp!( - x_next, - jvp_out, - ws, - logp, - gradlogp, - x, - ε, - ξ, - u, - v, - hvp_fn; - cholM=cholM, + x_next, jvp_out, ws, logp, gradlogp, x, ε, ξ, u, v, hvp_fn; cholM=cholM ) return x_next, jvp_out end diff --git a/src/interface.jl b/src/interface.jl index a61ae1a..e67c09d 100644 --- a/src/interface.jl +++ b/src/interface.jl @@ -56,9 +56,14 @@ function DensityModel( hvp_batch=nothing, ) return DensityModel( - logdensity, grad_logdensity, hvp, - logdensity_batch, grad_logdensity_batch, hvp_batch, - dim, param_names, + logdensity, + grad_logdensity, + hvp, + logdensity_batch, + grad_logdensity_batch, + hvp_batch, + dim, + param_names, ) end @@ -82,9 +87,10 @@ function MALASampler(epsilon::Real; cholM=nothing) return MALASampler{typeof(eps_f),typeof(cholM)}(eps_f, cholM) end -struct MALAState{V<:AbstractVector,L<:Real} +struct MALAState{V<:AbstractVector,L<:Real,W} x::V logp::L + workspace::W end struct MALATransition{V<:AbstractVector,L<:Real} @@ -93,6 +99,18 @@ struct MALATransition{V<:AbstractVector,L<:Real} accepted::Bool end +function _randn_like( + rng::Random.AbstractRNG, x::AbstractVector, ::Type{FP}, D::Int +) where {FP} + ξ = similar(x, FP, D) + if ξ isa CUDA.CuArray + copyto!(ξ, randn(rng, FP, D)) + else + randn!(rng, ξ) + end + return ξ +end + function AbstractMCMC.step( rng::Random.AbstractRNG, model::DensityModel, @@ -106,8 +124,9 @@ function AbstractMCMC.step( randn(rng, FP, model.dim) end logp_val = model.logdensity(x) + ws = MALA.MALAWorkspace(x) t = MALATransition(x, logp_val, true) - s = MALAState(x, logp_val) + s = MALAState(x, logp_val, ws) return t, s end @@ -122,16 +141,25 @@ function AbstractMCMC.step( ϵ = sampler.epsilon D = model.dim - ξ = randn(rng, eltype(x), D) + ξ = _randn_like(rng, x, eltype(x), D) u = rand(rng) - x_next, accepted = MALA.mala_step_full( - model.logdensity, model.grad_logdensity, x, ϵ, ξ, u; cholM=sampler.cholM + x_next = similar(x) + x_next, accepted, _ = MALA.mala_step_with_logα!( + x_next, + state.workspace, + model.logdensity, + model.grad_logdensity, + x, + ϵ, + ξ, + u; + cholM=sampler.cholM, ) logp_val = accepted ? model.logdensity(x_next) : state.logp t = MALATransition(x_next, logp_val, accepted) - s = MALAState(x_next, logp_val) + s = MALAState(x_next, logp_val, state.workspace) return t, s end @@ -190,6 +218,9 @@ end ParallelMALASampler(epsilon; T, maxiter, tol_abs, tol_rel, jacobian, damping, probes, cholM, backend) DEER-parallelized MALA sampler. + +Supported Jacobian modes are `:stoch_diag` (the default Hutchinson diagonal +estimator) and `:diag` (exact diagonal via `D` JVPs). """ struct ParallelMALASampler{FP<:AbstractFloat,CM,AD} <: AbstractMCMC.AbstractSampler epsilon::FP @@ -217,6 +248,8 @@ function ParallelMALASampler( backend=DEER.DEFAULT_BACKEND, ) epsilon > 0 || throw(ArgumentError("epsilon must be > 0, got $epsilon")) + (jacobian === :stoch_diag || jacobian === :diag) || + throw(ArgumentError("jacobian must be :stoch_diag or :diag")) eps_f = float(epsilon) FP = typeof(eps_f) return ParallelMALASampler{FP,typeof(cholM),typeof(backend)}( @@ -254,6 +287,53 @@ struct ParallelMALATransition{V<:AbstractVector,L<:Real} logp::L end +struct ParallelMALABlockSamples{B<:AbstractVector,L<:AbstractVector} <: + AbstractVector{ParallelMALATransition} + blocks::B + logps::L + n::Int + T::Int +end + +Base.size(samples::ParallelMALABlockSamples) = (samples.n,) +Base.length(samples::ParallelMALABlockSamples) = samples.n +Base.IndexStyle(::Type{<:ParallelMALABlockSamples}) = IndexLinear() + +function Base.getindex(samples::ParallelMALABlockSamples, i::Int) + 1 <= i <= samples.n || throw(BoundsError(samples, i)) + block_idx = fld(i - 1, samples.T) + 1 + t = mod(i - 1, samples.T) + 1 + return ParallelMALATransition( + samples.blocks[block_idx][:, t], samples.logps[block_idx][t] + ) +end + +function _make_mala_tape_block( + rng::Random.AbstractRNG, x0::AbstractVector, ::Type{FP}, D::Int, T::Int +) where {FP} + Xi = similar(x0, FP, D, T) + U_host = Vector{FP}(undef, T) + + if Xi isa CUDA.CuArray + Xi_host = Matrix{FP}(undef, D, T) + for t in 1:T + randn!(rng, view(Xi_host, :, t)) + U_host[t] = FP(rand(rng)) + end + copyto!(Xi, Xi_host) + else + for t in 1:T + randn!(rng, view(Xi, :, t)) + U_host[t] = FP(rand(rng)) + end + end + + U = similar(x0, FP, T) + copyto!(U, U_host) + tape = [MALATapeElement(view(Xi, :, t), U_host[t]) for t in 1:T] + return tape, Xi, U +end + function _build_mala_deer_rec( model::DensityModel, ε::Real, @@ -261,6 +341,8 @@ function _build_mala_deer_rec( x0_like::AbstractVector; cholM=nothing, backend=DEER.DEFAULT_BACKEND, + tape_noise=nothing, + tape_uniforms=nothing, ) logp = model.logdensity gradlogp = model.grad_logdensity @@ -272,9 +354,7 @@ function _build_mala_deer_rec( else hvp_backend = DEER._hvp_second_order_backend(backend) prep_hvp = DEER._prepare_logdensity_hvp(logp, hvp_backend, x0_like) - (pt, dir) -> DEER._logdensity_hvp_prepared( - logp, prep_hvp, hvp_backend, pt, dir - ) + (pt, dir) -> DEER._logdensity_hvp_prepared(logp, prep_hvp, hvp_backend, pt, dir) end # Exact forward step. @@ -282,63 +362,85 @@ function _build_mala_deer_rec( (x, te) -> MALA.mala_step_taped(logp, gradlogp, x, ε, te.ξ, te.u; cholM=cholM) # Explicit analytical JVP of the surrogate step. - jvp = (x, te, v) -> MALA.mala_step_surrogate_sigmoid_jvp( - logp, gradlogp, x, ε, te.ξ, te.u, v, hvp_fn; cholM=cholM - ) + jvp = + (x, te, v) -> MALA.mala_step_surrogate_sigmoid_jvp( + logp, gradlogp, x, ε, te.ξ, te.u, v, hvp_fn; cholM=cholM + ) # Fused forward step + JVP. - fwd_and_jvp = (x, te, v) -> MALA.mala_step_taped_and_jvp( - logp, gradlogp, x, ε, te.ξ, te.u, v, hvp_fn; cholM=cholM - ) - - fwd_and_jvp_batch = if model.logdensity_batch !== nothing && - model.grad_logdensity_batch !== nothing - D = length(x0_like) - T = length(tape) - - Ξ = similar(x0_like, D, T) - U_host = Vector{typeof(tape[1].u)}(undef, T) - U = similar(x0_like, typeof(tape[1].u), T) + fwd_and_jvp = + (x, te, v) -> MALA.mala_step_taped_and_jvp( + logp, gradlogp, x, ε, te.ξ, te.u, v, hvp_fn; cholM=cholM + ) - for t in 1:T - copyto!(view(Ξ, :, t), tape[t].ξ) - U_host[t] = tape[t].u - end - copyto!(U, U_host) + fwd_and_jvp_batch = + if model.logdensity_batch !== nothing && model.grad_logdensity_batch !== nothing + D = length(x0_like) + T = length(tape) - X_template = similar(x0_like, D, T) - fill!(X_template, zero(eltype(X_template))) - hvp_batch = if model.hvp_batch !== nothing - model.hvp_batch - else - hvp_batch_backend = DEER._hvp_backend(backend) - prep_hvp_batch = DEER._prepare_batch_hvp_from_grad( - model.grad_logdensity_batch, hvp_batch_backend, X_template + (tape_noise === nothing) == (tape_uniforms === nothing) || throw( + ArgumentError("tape_noise and tape_uniforms must be provided together") ) - (X, V) -> DEER._batch_hvp_from_grad_prepared( - model.grad_logdensity_batch, prep_hvp_batch, hvp_batch_backend, X, V + Xi, U = if tape_noise === nothing + Xi_local = similar(x0_like, D, T) + U_host = Vector{typeof(tape[1].u)}(undef, T) + U_local = similar(x0_like, typeof(tape[1].u), T) + + for t in 1:T + copyto!(Xi_local, (t - 1) * D + 1, tape[t].ξ, 1, D) + U_host[t] = tape[t].u + end + copyto!(U_local, U_host) + Xi_local, U_local + else + size(tape_noise) == (D, T) || + throw(DimensionMismatch("tape_noise must have size (D, T)")) + length(tape_uniforms) == T || + throw(DimensionMismatch("tape_uniforms must have length T")) + tape_noise, tape_uniforms + end + + X_template = similar(x0_like, D, T) + fill!(X_template, zero(eltype(X_template))) + batch_ws = MALA.MALABatchedWorkspace(X_template) + FT = similar(X_template) + Jt = similar(X_template) + hvp_batch = if model.hvp_batch !== nothing + model.hvp_batch + else + hvp_batch_backend = DEER._hvp_backend(backend) + prep_hvp_batch = DEER._prepare_batch_hvp_from_grad( + model.grad_logdensity_batch, hvp_batch_backend, X_template + ) + (X, V) -> DEER._batch_hvp_from_grad_prepared( + model.grad_logdensity_batch, + prep_hvp_batch, + hvp_batch_backend, + X, + V, + ) + end + + (Xbar, Z) -> MALA.mala_step_batched_fwd_and_jvp!( + FT, + Jt, + batch_ws, + model.logdensity_batch, + model.grad_logdensity_batch, + hvp_batch, + Xbar, + ε, + Xi, + U, + Z; + cholM=cholM, ) + else + nothing end - (Xbar, Z) -> MALA.mala_step_batched_fwd_and_jvp( - model.logdensity_batch, - model.grad_logdensity_batch, - hvp_batch, - Xbar, - ε, - Ξ, - U, - Z; - cholM=cholM, - ) - else - nothing - end - return DEER.TapedRecursion( - step_fwd, jvp, tape; - fwd_and_jvp=fwd_and_jvp, - fwd_and_jvp_batch=fwd_and_jvp_batch, + step_fwd, jvp, tape; fwd_and_jvp=fwd_and_jvp, fwd_and_jvp_batch=fwd_and_jvp_batch ) end @@ -353,13 +455,17 @@ function _deer_solve_new_tape( T = sampler.T FP = typeof(sampler.epsilon) - tape = map(1:T) do _ - ξ = copyto!(similar(x0, D), randn(rng, FP, D)) - MALATapeElement(ξ, FP(rand(rng))) - end + tape, Xi, U = _make_mala_tape_block(rng, x0, FP, D, T) rec = _build_mala_deer_rec( - model, sampler.epsilon, tape, x0; cholM=sampler.cholM, backend=sampler.backend + model, + sampler.epsilon, + tape, + x0; + cholM=sampler.cholM, + backend=sampler.backend, + tape_noise=Xi, + tape_uniforms=U, ) ws = workspace === nothing ? DEER.DEERWorkspace(x0, T) : workspace @@ -375,6 +481,7 @@ function _deer_solve_new_tape( probes=sampler.probes, rng=rng, workspace=ws, + copy_result=false, ) return S, tape, ws end @@ -388,6 +495,251 @@ function _trajectory_logps(model::DensityModel, S::AbstractMatrix) return [model.logdensity(S[:, t]) for t in 1:T] end +function _parallel_mala_param_names(model::DensityModel, D::Int, param_names) + if param_names !== nothing + return param_names + elseif model.param_names !== nothing + return model.param_names + else + return [Symbol("x[$i]") for i in 1:D] + end +end + +function _parallel_mala_initial_x( + rng::Random.AbstractRNG, model::DensityModel, ::ParallelMALASampler{FP}, initial_params +) where {FP} + return initial_params !== nothing ? copy(initial_params) : randn(rng, FP, model.dim) +end + +function _parallel_mala_progress(progress, progressname) + progress === true && return AbstractMCMC.CreateNewProgressBar(progressname) + progress === false && return AbstractMCMC.NoLogging() + return progress +end + +function _parallel_mala_update_progress!( + progress, nsteps::Int, Ntotal::Int, next_update::Real, threshold::Real +) + if nsteps >= next_update && next_update <= Ntotal + AbstractMCMC.update_progress!(progress, min(nsteps / Ntotal, 1)) + next_update += threshold + end + return next_update +end + +function _copy_trajectory_rows!( + vals::AbstractMatrix{Float64}, first_row::Int, S::AbstractMatrix, ncols::Int +) + rows = first_row:(first_row + ncols - 1) + S_host = Array(view(S, :, 1:ncols)) + vals[rows, :] .= transpose(S_host) + return vals +end + +function _sample_parallel_mala_chain( + rng::Random.AbstractRNG, + model::DensityModel, + sampler::ParallelMALASampler, + N::Int; + initial_params=nothing, + param_names=nothing, + progress=AbstractMCMC.PROGRESS[], + progressname="Sampling", +) + D = model.dim + names = _parallel_mala_param_names(model, D, param_names) + internal_names = [:logp] + + vals = Matrix{Float64}(undef, N, D) + internals = Matrix{Float64}(undef, N, 1) + + progress = _parallel_mala_progress(progress, progressname) + x0 = _parallel_mala_initial_x(rng, model, sampler, initial_params) + ws = nothing + nsteps = 0 + next_update = N / AbstractMCMC.get_n_updates(progress) + threshold = next_update + + AbstractMCMC.@maybewithricherlogger begin + AbstractMCMC.init_progress!(progress) + try + while nsteps < N + S, tape, ws = _deer_solve_new_tape(rng, model, sampler, x0; workspace=ws) + logps = _trajectory_logps(model, S) + nkeep = min(sampler.T, N - nsteps) + first_row = nsteps + 1 + rows = first_row:(first_row + nkeep - 1) + + _copy_trajectory_rows!(vals, first_row, S, nkeep) + internals[rows, 1] .= view(logps, 1:nkeep) + + x0 = copy(view(S, :, nkeep)) + nsteps += nkeep + next_update = _parallel_mala_update_progress!( + progress, nsteps, N, next_update, threshold + ) + end + finally + AbstractMCMC.finish_progress!(progress) + end + end + + return MCMCChains.Chains( + hcat(vals, internals), + vcat(names, internal_names), + Dict(:parameters => names, :internals => internal_names), + ) +end + +function _sample_parallel_mala_blocks( + rng::Random.AbstractRNG, + model::DensityModel, + sampler::ParallelMALASampler, + N::Int; + initial_params=nothing, + progress=AbstractMCMC.PROGRESS[], + progressname="Sampling", +) + blocks = Vector{AbstractMatrix}(undef, 0) + logp_blocks = Vector{AbstractVector}(undef, 0) + sizehint!(blocks, cld(N, sampler.T)) + sizehint!(logp_blocks, cld(N, sampler.T)) + + progress = _parallel_mala_progress(progress, progressname) + x0 = _parallel_mala_initial_x(rng, model, sampler, initial_params) + ws = nothing + nsteps = 0 + next_update = N / AbstractMCMC.get_n_updates(progress) + threshold = next_update + final_state = nothing + + AbstractMCMC.@maybewithricherlogger begin + AbstractMCMC.init_progress!(progress) + try + while nsteps < N + S, tape, ws = _deer_solve_new_tape(rng, model, sampler, x0; workspace=ws) + logps = _trajectory_logps(model, S) + nkeep = min(sampler.T, N - nsteps) + S_keep = copy(view(S, :, 1:nkeep)) + logps_keep = collect(view(logps, 1:nkeep)) + x0 = copy(view(S_keep, :, nkeep)) + + push!(blocks, S_keep) + push!(logp_blocks, logps_keep) + final_state = ParallelMALAState( + x0, logps_keep[nkeep], S_keep, logps_keep, ws, tape, nkeep + ) + + nsteps += nkeep + next_update = _parallel_mala_update_progress!( + progress, nsteps, N, next_update, threshold + ) + end + finally + AbstractMCMC.finish_progress!(progress) + end + end + + return ParallelMALABlockSamples(blocks, logp_blocks, N, sampler.T), final_state +end + +function _default_parallel_mala_mcmcsample( + rng::Random.AbstractRNG, + model::DensityModel, + sampler::ParallelMALASampler, + N::Integer; + kwargs..., +) + return invoke( + AbstractMCMC.mcmcsample, + Tuple{ + Random.AbstractRNG, + AbstractMCMC.AbstractModel, + AbstractMCMC.AbstractSampler, + Integer, + }, + rng, + model, + sampler, + N; + kwargs..., + ) +end + +function AbstractMCMC.mcmcsample( + rng::Random.AbstractRNG, + model::DensityModel, + sampler::ParallelMALASampler, + N::Integer; + progress=AbstractMCMC.PROGRESS[], + progressname="Sampling", + callback=nothing, + num_warmup::Int=0, + discard_initial::Int=num_warmup, + thinning=1, + chain_type::Type=Any, + initial_state=nothing, + initial_params=nothing, + param_names=nothing, + kwargs..., +) + if callback !== nothing || + num_warmup != 0 || + discard_initial != 0 || + thinning != 1 || + initial_state !== nothing + return _default_parallel_mala_mcmcsample( + rng, + model, + sampler, + N; + progress=progress, + progressname=progressname, + callback=callback, + num_warmup=num_warmup, + discard_initial=discard_initial, + thinning=thinning, + chain_type=chain_type, + initial_state=initial_state, + initial_params=initial_params, + param_names=param_names, + kwargs..., + ) + end + + N > 0 || error("the number of samples must be ≥ 1") + N_int = Int(N) + + if chain_type === MCMCChains.Chains + return _sample_parallel_mala_chain( + rng, + model, + sampler, + N_int; + initial_params=initial_params, + param_names=param_names, + progress=progress, + progressname=progressname, + ) + end + + samples, state = _sample_parallel_mala_blocks( + rng, + model, + sampler, + N_int; + initial_params=initial_params, + progress=progress, + progressname=progressname, + ) + chain_type === Any && return samples + + sample_vec = [samples[i] for i in 1:length(samples)] + return AbstractMCMC.bundle_samples( + sample_vec, model, sampler, state, chain_type; param_names=param_names, kwargs... + ) +end + function AbstractMCMC.step( rng::Random.AbstractRNG, model::DensityModel, @@ -521,13 +873,14 @@ function AdaptiveMALASampler( ) end -struct AdaptiveMALAState{V<:AbstractVector,FP<:AbstractFloat} +struct AdaptiveMALAState{V<:AbstractVector,FP<:AbstractFloat,W} x::V logp::FP epsilon::FP epsilon_bar::FP H_bar::FP step::Int + workspace::W end struct AdaptiveMALATransition{V<:AbstractVector,FP<:AbstractFloat} @@ -575,9 +928,10 @@ function AbstractMCMC.step( randn(rng, FP, model.dim) end logp_val = FP(model.logdensity(x)) + ws = MALA.MALAWorkspace(x) trans = AdaptiveMALATransition(x, logp_val, true, sampler.epsilon_init, true) state = AdaptiveMALAState( - x, logp_val, sampler.epsilon_init, sampler.epsilon_init, zero(FP), 0 + x, logp_val, sampler.epsilon_init, sampler.epsilon_init, zero(FP), 0, ws ) return trans, state end @@ -593,11 +947,20 @@ function AbstractMCMC.step( in_warmup = state.step < sampler.n_warmup ε = in_warmup ? state.epsilon : state.epsilon_bar - ξ = randn(rng, eltype(state.x), D) + ξ = _randn_like(rng, state.x, eltype(state.x), D) u = rand(rng) - x_next, accepted, logα = MALA.mala_step_with_logα( - model.logdensity, model.grad_logdensity, state.x, ε, ξ, u; cholM=sampler.cholM + x_next = similar(state.x) + x_next, accepted, logα = MALA.mala_step_with_logα!( + x_next, + state.workspace, + model.logdensity, + model.grad_logdensity, + state.x, + ε, + ξ, + u; + cholM=sampler.cholM, ) logp_next = accepted ? FP(model.logdensity(x_next)) : state.logp @@ -617,7 +980,9 @@ function AbstractMCMC.step( end trans = AdaptiveMALATransition(x_next, logp_next, accepted, ε, in_warmup) - new_state = AdaptiveMALAState(x_next, logp_next, ε_new, ε_bar_new, H_bar_new, m_new) + new_state = AdaptiveMALAState( + x_next, logp_next, ε_new, ε_bar_new, H_bar_new, m_new, state.workspace + ) return trans, new_state end diff --git a/test/test-AbstractMCMC-Interface.jl b/test/test-AbstractMCMC-Interface.jl index f7ab675..b01f19f 100644 --- a/test/test-AbstractMCMC-Interface.jl +++ b/test/test-AbstractMCMC-Interface.jl @@ -5,6 +5,7 @@ using Statistics using MCMCChains using ParallelMCMC +const MALA_iface = ParallelMCMC.MALA logp_iface(x) = -0.5 * dot(x, x) gradlogp_iface(x) = -x @@ -38,6 +39,7 @@ gradlogp_iface(x) = -x @test transition.logp == logp_iface(transition.x) @test state.logp == transition.logp @test transition.accepted == true + @test state.workspace isa MALA_iface.MALAWorkspace end @testset "initial step respects initial_params" begin @@ -81,6 +83,7 @@ gradlogp_iface(x) = -x @test isfinite(t2.logp) @test s2.x == t2.x @test s2.logp == t2.logp + @test s2.workspace === s1.workspace end @testset "step determinism with fixed rng" begin diff --git a/test/test-Adaptive-MALA.jl b/test/test-Adaptive-MALA.jl index a0e1e8d..fa6a987 100644 --- a/test/test-Adaptive-MALA.jl +++ b/test/test-Adaptive-MALA.jl @@ -29,6 +29,29 @@ gradlogp_adapt(x) = -x end end +@testset "mala_step_with_logα! matches allocating wrapper" begin + rng = MersenneTwister(2) + D = 4 + x = randn(rng, D) + ξ = randn(rng, D) + u = rand(rng) + + x_ref, accepted_ref, logα_ref = MALA.mala_step_with_logα( + logp_adapt, gradlogp_adapt, x, 0.1, ξ, u + ) + + ws = MALA.MALAWorkspace(x) + x_next = similar(x) + x_out, accepted, logα = MALA.mala_step_with_logα!( + x_next, ws, logp_adapt, gradlogp_adapt, x, 0.1, ξ, u + ) + + @test x_out === x_next + @test x_next == x_ref + @test accepted == accepted_ref + @test logα ≈ logα_ref +end + @testset "AdaptiveMALASampler construction" begin s = AdaptiveMALASampler(0.1) @test s isa ParallelMCMC.AbstractMCMC.AbstractSampler @@ -61,6 +84,7 @@ end @test state.step == 0 @test state.epsilon == sampler.epsilon_init @test state.epsilon_bar == sampler.epsilon_init + @test state.workspace isa MALA.MALAWorkspace end @testset "AdaptiveMALASampler initial step respects initial_params" begin diff --git a/test/test-DEER-Interface.jl b/test/test-DEER-Interface.jl index 2675740..06987b4 100644 --- a/test/test-DEER-Interface.jl +++ b/test/test-DEER-Interface.jl @@ -24,6 +24,7 @@ gradlogp_batch_deer(X) = -X @test s2.T == 32 @test s2.jacobian === :stoch_diag @test s2.damping == 0.8 + @test_throws ArgumentError ParallelMALASampler(0.1; jacobian=:full) end @testset "ParallelMALASampler initial step" begin @@ -66,10 +67,7 @@ end D, T = 3, 6 ε = 0.05 - tape = [ - ParallelMCMC.MALATapeElement(randn(rng, D), rand(rng)) - for _ in 1:T - ] + tape = [ParallelMCMC.MALATapeElement(randn(rng, D), rand(rng)) for _ in 1:T] model = DensityModel( logp_deer, gradlogp_deer, @@ -89,14 +87,7 @@ end U = [te.u for te in tape] hvp_batch_ref = (X, V) -> -V FT_ref, Jt_ref = ParallelMCMC.MALA.mala_step_batched_fwd_and_jvp( - logp_batch_deer, - gradlogp_batch_deer, - hvp_batch_ref, - X, - ε, - Ξ, - U, - Z, + logp_batch_deer, gradlogp_batch_deer, hvp_batch_ref, X, ε, Ξ, U, Z ) @test FT_ad ≈ FT_ref atol=1e-10 rtol=1e-10 @@ -143,9 +134,7 @@ end ) sampler = ParallelMALASampler(0.05; T=8) - _, state = ParallelMCMC.AbstractMCMC.step( - rng, model, sampler; initial_params=zeros(2) - ) + _, state = ParallelMCMC.AbstractMCMC.step(rng, model, sampler; initial_params=zeros(2)) @test batch_calls[] ≥ 1 scalar_after_solve = scalar_calls[] diff --git a/test/test-DEER-Turing-Logistic.jl b/test/test-DEER-Turing-Logistic.jl index 20ea153..a81a8f5 100644 --- a/test/test-DEER-Turing-Logistic.jl +++ b/test/test-DEER-Turing-Logistic.jl @@ -76,7 +76,9 @@ end @testset "ParallelMALASampler Turing logistic: chains output well-formed" begin model = DensityModel(_deer_logistic_regression(_LR_X, _LR_y)) - sampler = ParallelMALASampler(0.1; T=16, maxiter=50, tol_abs=1e-4, tol_rel=1e-3, damping=0.5) + sampler = ParallelMALASampler( + 0.1; T=16, maxiter=50, tol_abs=1e-4, tol_rel=1e-3, damping=0.5 + ) chain = sample( MersenneTwister(42), @@ -96,7 +98,9 @@ end @testset "ParallelMALASampler Turing logistic: posterior sign correct" begin model = DensityModel(_deer_logistic_regression(_LR_X, _LR_y)) - sampler = ParallelMALASampler(0.1; T=16, maxiter=50, tol_abs=1e-4, tol_rel=1e-3, damping=0.5) + sampler = ParallelMALASampler( + 0.1; T=16, maxiter=50, tol_abs=1e-4, tol_rel=1e-3, damping=0.5 + ) chain = sample( MersenneTwister(99), @@ -198,17 +202,16 @@ else step_fwd = (x, te) -> ParallelMCMC.MALA.mala_step_taped(logp_gpu, gradlogp_gpu, x, ε, te.ξ, te.u) - hvp_fn_gpu = (pt, dir) -> ParallelMCMC.DEER._hvp_nopre(gradlogp_gpu, _backend, pt, dir) + hvp_fn_gpu = + (pt, dir) -> ParallelMCMC.DEER._hvp_nopre(gradlogp_gpu, _backend, pt, dir) jvp = - (x, te, v) -> - ParallelMCMC.MALA.mala_step_surrogate_sigmoid_jvp( - logp_gpu, gradlogp_gpu, x, ε, te.ξ, te.u, v, hvp_fn_gpu - ) + (x, te, v) -> ParallelMCMC.MALA.mala_step_surrogate_sigmoid_jvp( + logp_gpu, gradlogp_gpu, x, ε, te.ξ, te.u, v, hvp_fn_gpu + ) fwd_and_jvp = - (x, te, v) -> - ParallelMCMC.MALA.mala_step_taped_and_jvp( - logp_gpu, gradlogp_gpu, x, ε, te.ξ, te.u, v, hvp_fn_gpu - ) + (x, te, v) -> ParallelMCMC.MALA.mala_step_taped_and_jvp( + logp_gpu, gradlogp_gpu, x, ε, te.ξ, te.u, v, hvp_fn_gpu + ) rec = ParallelMCMC.DEER.TapedRecursion(step_fwd, jvp, tape; fwd_and_jvp=fwd_and_jvp) diff --git a/test/test-DEERScan.jl b/test/test-DEERScan.jl index 9dc1030..2487edf 100644 --- a/test/test-DEERScan.jl +++ b/test/test-DEERScan.jl @@ -34,6 +34,26 @@ function make_affine_problem(rng::AbstractRNG, D::Int, T::Int; FT=Float32, stabl return A, B, s0 end +@testset "DEERScan CPU scan matches sequential reference" begin + rng = MersenneTwister(11) + + for (D, T) in ((1, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 17), (8, 31), (8, 64)) + A, B, s0 = make_affine_problem(rng, D, T; FT=Float64, stable=true) + S_ref = DEERScan.solve_affine_seq(A, B, s0) + + ws = DEERScan.AffineScanWorkspace(A) + S = similar(A) + out = DEERScan.solve_affine_scan_diag!(S, A, B, s0, ws) + + @test out === S + @test S ≈ S_ref atol=1e-12 rtol=1e-12 + + fill!(S, NaN) + DEERScan.solve_affine_scan_diag!(S, A, B, s0, ws) + @test S ≈ S_ref atol=1e-12 rtol=1e-12 + end +end + @testset "DEERScan primitive (GPU-first)" begin if !CUDA_AVAILABLE @info "No CUDA GPU detected — skipping DEERScan GPU tests." @@ -42,7 +62,9 @@ end rng = MersenneTwister(1) for (D, T) in ((1, 1), (1, 17), (4, 16), (8, 31), (16, 64)) - A_cpu, B_cpu, s0_cpu = make_affine_problem(rng, D, T; FT=Float32, stable=true) + A_cpu, B_cpu, s0_cpu = make_affine_problem( + rng, D, T; FT=Float32, stable=true + ) # CPU oracle: strictly sequential reference S_ref = DEERScan.solve_affine_seq(A_cpu, B_cpu, s0_cpu) @@ -56,7 +78,7 @@ end @test S_gpu isa CUDA.CuMatrix @test size(S_gpu) == (D, T) - @test Array(S_gpu) ≈ S_ref atol=1f-5 rtol=1f-5 + @test Array(S_gpu) ≈ S_ref atol=1.0f-5 rtol=1.0f-5 end end @@ -76,7 +98,7 @@ end @test out === S_gpu @test S_gpu isa CUDA.CuMatrix - @test Array(S_gpu) ≈ S_ref atol=1f-5 rtol=1f-5 + @test Array(S_gpu) ≈ S_ref atol=1.0f-5 rtol=1.0f-5 end @testset "GPU scan satisfies the recurrence residual" begin @@ -93,7 +115,7 @@ end # Residual can be checked on CPU after materializing. resid = DEERScan.affine_scan_residual(Array(S_gpu), A_cpu, B_cpu, s0_cpu) - @test resid ≤ 1f-5 + @test resid ≤ 1.0f-5 end @testset "GPU scan agrees with CPU on edge cases" begin @@ -111,7 +133,7 @@ end CUDA.CuArray(A_cpu), CUDA.CuArray(B_cpu), CUDA.CuArray(s0_cpu) ) - @test Array(S_gpu) ≈ S_ref atol=1f-6 rtol=1f-6 + @test Array(S_gpu) ≈ S_ref atol=1.0f-6 rtol=1.0f-6 end # zero multiplicative term => S[:,t] = B[:,t] @@ -126,8 +148,8 @@ end CUDA.CuArray(A_cpu), CUDA.CuArray(B_cpu), CUDA.CuArray(s0_cpu) ) - @test Array(S_gpu) ≈ S_ref atol=1f-6 rtol=1f-6 - @test Array(S_gpu) ≈ B_cpu atol=1f-6 rtol=1f-6 + @test Array(S_gpu) ≈ S_ref atol=1.0f-6 rtol=1.0f-6 + @test Array(S_gpu) ≈ B_cpu atol=1.0f-6 rtol=1.0f-6 end # T = 1 @@ -143,7 +165,7 @@ end ) @test size(S_gpu) == (D, 1) - @test Array(S_gpu) ≈ S_ref atol=1f-6 rtol=1f-6 + @test Array(S_gpu) ≈ S_ref atol=1.0f-6 rtol=1.0f-6 end end @@ -189,12 +211,16 @@ end B_bad_gpu = CUDA.CuArray(randn(Float32, 4, 9)) s0_gpu = CUDA.CuArray(s0_cpu) - @test_throws DimensionMismatch DEERScan.solve_affine_scan_diag(A_gpu, B_bad_gpu, s0_gpu) + @test_throws DimensionMismatch DEERScan.solve_affine_scan_diag( + A_gpu, B_bad_gpu, s0_gpu + ) B_gpu = CUDA.CuArray(B_cpu) s0_bad_gpu = CUDA.CuArray(randn(Float32, 5)) - @test_throws DimensionMismatch DEERScan.solve_affine_scan_diag(A_gpu, B_gpu, s0_bad_gpu) + @test_throws DimensionMismatch DEERScan.solve_affine_scan_diag( + A_gpu, B_gpu, s0_bad_gpu + ) end @testset "GPU scan helper check_affine_scan still agrees with CPU" begin @@ -203,12 +229,12 @@ end D, T = 4, 24 A_cpu, B_cpu, s0_cpu = make_affine_problem(rng, D, T; FT=Float32, stable=true) - chk = DEERScan.check_affine_scan(A_cpu, B_cpu, s0_cpu; atol=1f-6, rtol=1f-6) + chk = DEERScan.check_affine_scan(A_cpu, B_cpu, s0_cpu; atol=1.0f-6, rtol=1.0f-6) @test chk.ok - @test chk.max_abs_err ≤ 1f-6 - @test chk.residual_seq ≤ 1f-6 - @test chk.residual_scan ≤ 1f-6 + @test chk.max_abs_err ≤ 1.0f-6 + @test chk.residual_seq ≤ 1.0f-6 + @test chk.residual_scan ≤ 1.0f-6 end end -end \ No newline at end of file +end diff --git a/test/test-Deer-vs-MALA.jl b/test/test-Deer-vs-MALA.jl index ffcc2e4..75460d0 100644 --- a/test/test-Deer-vs-MALA.jl +++ b/test/test-Deer-vs-MALA.jl @@ -30,9 +30,9 @@ end function _make_rec(tape, ε) step_fwd = - (x, tt) -> MALA.mala_step_taped(logp_stdnormal, gradlogp_stdnormal, x, ε, tt.ξ, tt.u) - hvp_fn = - (pt, dir) -> DEER._hvp_nopre(gradlogp_stdnormal, DEER.DEFAULT_BACKEND, pt, dir) + (x, tt) -> + MALA.mala_step_taped(logp_stdnormal, gradlogp_stdnormal, x, ε, tt.ξ, tt.u) + hvp_fn = (pt, dir) -> DEER._hvp_nopre(gradlogp_stdnormal, DEER.DEFAULT_BACKEND, pt, dir) jvp = (x, tt, v) -> MALA.mala_step_surrogate_sigmoid_jvp( logp_stdnormal, gradlogp_stdnormal, x, ε, tt.ξ, tt.u, v, hvp_fn @@ -133,6 +133,28 @@ end @test isapprox(S_scan, S_ref; rtol=1e-12, atol=1e-12) end +@testset "DEER.solve copies workspace result by default" begin + D, T = 2, 4 + tape = collect(1:T) + step_fwd = (x, t) -> x + jvp = (x, t, v) -> v + rec = DEER.TapedRecursion(step_fwd, jvp, tape) + + s0 = [1.0, -1.0] + ws = DEER.DEERWorkspace(s0, T) + + S = DEER.solve(rec, s0; jacobian=:diag, workspace=ws) + S_saved = copy(S) + + @test S !== ws.S_tmp + + DEER.solve(rec, [2.0, 3.0]; jacobian=:diag, workspace=ws) + @test S == S_saved + + S_alias = DEER.solve(rec, s0; jacobian=:diag, workspace=ws, copy_result=false) + @test S_alias === ws.S_tmp +end + @testset "DEER stochastic diagonal (Hutchinson) recovers MALA trajectory" begin rng = MersenneTwister(777) @@ -182,7 +204,7 @@ end xbar = xs_seq[tcheck] diag_exact = DEER.jac_diag_via_jvps(rec, xbar, tcheck) - diag_est = DEER.jac_diag_stoch( + diag_est = DEER.jac_diag_stoch( rec, xbar, tcheck; probes=200, rng=MersenneTwister(123), zbuf=zeros(D) ) diff --git a/test/test-GPU-DEER.jl b/test/test-GPU-DEER.jl index b7bdf3a..19a12eb 100644 --- a/test/test-GPU-DEER.jl +++ b/test/test-GPU-DEER.jl @@ -72,16 +72,19 @@ else function _make_gpu_rec(tape, ε, backend) step_fwd = (x, te) -> MALA.mala_step_taped(_logp, _gradlogp, x, ε, te.ξ, te.u) hvp_fn = (pt, dir) -> DEER._hvp_nopre(_gradlogp, backend, pt, dir) - jvp = (x, te, v) -> MALA.mala_step_surrogate_sigmoid_jvp( - _logp, _gradlogp, x, ε, te.ξ, te.u, v, hvp_fn - ) - fwd_and_jvp = (x, te, v) -> MALA.mala_step_taped_and_jvp( - _logp, _gradlogp, x, ε, te.ξ, te.u, v, hvp_fn - ) + jvp = + (x, te, v) -> MALA.mala_step_surrogate_sigmoid_jvp( + _logp, _gradlogp, x, ε, te.ξ, te.u, v, hvp_fn + ) + fwd_and_jvp = + (x, te, v) -> + MALA.mala_step_taped_and_jvp(_logp, _gradlogp, x, ε, te.ξ, te.u, v, hvp_fn) return DEER.TapedRecursion(step_fwd, jvp, tape; fwd_and_jvp=fwd_and_jvp) end - @testset "DEER.solve GPU backend=$bname (stoch_diag)" for (bname, backend) in _gpu_backends + @testset "DEER.solve GPU backend=$bname (stoch_diag)" for (bname, backend) in + _gpu_backends + rng = MersenneTwister(7) D, T = 4, 32 ε = 0.05f0 diff --git a/test/test-GPU-MALA.jl b/test/test-GPU-MALA.jl index b255ced..f6d7179 100644 --- a/test/test-GPU-MALA.jl +++ b/test/test-GPU-MALA.jl @@ -32,7 +32,7 @@ else scales = CUDA.CuArray(Float32.(1:D)) # D-vector on GPU return vec(-0.5f0 .* sum(X .^ 2 ./ scales; dims=1)) end - + function gradlogp_scaled(X) D = size(X, 1) scales = CUDA.CuArray(Float32.(1:D)) diff --git a/test/test-Jacobian-Estimator.jl b/test/test-Jacobian-Estimator.jl index b0c2517..b637531 100644 --- a/test/test-Jacobian-Estimator.jl +++ b/test/test-Jacobian-Estimator.jl @@ -10,6 +10,27 @@ const MALA = ParallelMCMC.MALA logp_stdnormal_B(x) = -0.5 * dot(x, x) gradlogp_stdnormal_B(x) = -x +struct TaggedVector{T} <: AbstractVector{T} + data::Vector{T} +end + +Base.IndexStyle(::Type{<:TaggedVector}) = IndexLinear() +Base.size(x::TaggedVector) = size(x.data) +Base.axes(x::TaggedVector) = axes(x.data) +Base.getindex(x::TaggedVector, i::Int) = x.data[i] +Base.setindex!(x::TaggedVector, v, i::Int) = setindex!(x.data, v, i) +function Base.similar(x::TaggedVector, ::Type{T}, dims::Dims{1}) where {T} + TaggedVector(Vector{T}(undef, dims[1])) +end +function Base.similar(x::TaggedVector, ::Type{T}, n::Int) where {T} + TaggedVector(Vector{T}(undef, n)) +end +function Base.similar(x::TaggedVector, dims::Dims{1}) + TaggedVector(Vector{eltype(x)}(undef, dims[1])) +end +Base.similar(x::TaggedVector, n::Int) = TaggedVector(Vector{eltype(x)}(undef, n)) +Base.copy(x::TaggedVector) = TaggedVector(copy(x.data)) + # Reference log q(y|x) for MALA: # y ~ Normal( x + ϵ∇logp(x), 2ϵ I ) function logq_mala_ref_B( @@ -71,14 +92,30 @@ make_affine_tape(rng::AbstractRNG, D::Int, T::Int) = [randn(rng, D) for _ in 1:T return mean(mses) end - mse1 = mse_for_probes(1; nrep=25) - mse8 = mse_for_probes(8; nrep=25) + mse1 = mse_for_probes(1; nrep=25) + mse8 = mse_for_probes(8; nrep=25) mse64 = mse_for_probes(64; nrep=25) - @test mse8 < mse1 + @test mse8 < mse1 @test mse64 < mse8 end + @testset "jac_diag_stoch default probe uses x-like storage" begin + x = TaggedVector([1.0, 2.0, 3.0]) + tape = [1] + step_fwd = (x, t) -> x + jvp = function (x, t, v) + v isa TaggedVector || throw(ArgumentError("expected TaggedVector tangent")) + return copy(v) + end + rec = DEER.TapedRecursion(step_fwd, jvp, tape) + + d = DEER.jac_diag_stoch(rec, x, 1; rng=MersenneTwister(1)) + + @test d isa TaggedVector + @test collect(d) == ones(3) + end + @testset "batched stoch_diag uses z .* Jz in DEER update" begin rng = MersenneTwister(20251231) D, T = 7, 13 @@ -98,14 +135,7 @@ make_affine_tape(rng::AbstractRNG, D::Int, T::Int) = [randn(rng, D) for _ in 1:T ws = DEER.DEERWorkspace(S_in, s0) S_out = similar(S_in) DEER.deer_update!( - ws, - S_out, - rec, - s0, - S_in; - jacobian=:stoch_diag, - probes=1, - rng=MersenneTwister(1), + ws, S_out, rec, s0, S_in; jacobian=:stoch_diag, probes=1, rng=MersenneTwister(1) ) S_ref = DEER.solve_affine_seq(Atrue, Btrue, s0) From fcd87fea7060865a0d1175470ae09ac79a3a87d1 Mon Sep 17 00:00:00 2001 From: Ryan Senne Date: Tue, 28 Apr 2026 12:08:18 -0400 Subject: [PATCH 2/8] Update README.md --- .codex | 0 README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) delete mode 100644 .codex diff --git a/.codex b/.codex deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index 3d0f11c..c6b447e 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,51 @@ [![All Contributors](https://img.shields.io/github/all-contributors/rsenne/ParallelMCMC.jl?labelColor=5e1ec7&color=c0ffee&style=flat-square)](#contributors) [![BestieTemplate](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/JuliaBesties/BestieTemplate.jl/main/docs/src/assets/badge.json)](https://github.com/JuliaBesties/BestieTemplate.jl) +## What this package does + +**ParallelMCMC.jl** implements *parallel-across-the-sequence* MCMC in Julia: instead of generating samples one at a time, an entire trajectory of $T$ correlated steps is solved *simultaneously*. This makes wall-clock time per sample sublinear in chain length on multi-core CPUs and GPUs, where conventional sequential MCMC scales linearly. + +The flagship algorithm is **DEER** (Lim et al. 2024; Gonzalez et al. 2024), which reformulates a chain of $T$ MALA steps as a fixed-point problem and solves it with Newton iterations. Each iteration linearizes the per-step transition around the current trajectory guess and resolves the resulting linear recursion in $O(\log T)$ parallel work via an associative prefix scan. With shared input randomness, DEER converges to the exact sequential MALA trace up to a numerical tolerance — typically in tens of iterations even for chains of tens of thousands of samples. + +The approach and its scaling tricks (stochastic Hutchinson Jacobian estimators, damping, sliding windows) are described in: + +> Zoltowski, D., Wu, S., Gonzalez, X., Kozachkov, L., & Linderman, S. W. (2025). +> **Parallelizing MCMC Across the Sequence Length.** *NeurIPS 2025.* +> [arXiv:2508.18413](https://arxiv.org/abs/2508.18413) + +### Samplers + +| Sampler | Role | +|---|---| +| [`ParallelMALASampler`](src/interface.jl) | **Primary** — parallel-across-sequence MALA via DEER; $O(\log T)$ per solve | +| [`MALASampler`](src/interface.jl) | Baseline — sequential MALA with a fixed step size | +| [`AdaptiveMALASampler`](src/interface.jl) | Baseline — sequential MALA with dual-averaging step-size adaptation | + +All samplers implement the [AbstractMCMC](https://github.com/TuringLang/AbstractMCMC.jl) interface and return [`MCMCChains.Chains`](https://github.com/TuringLang/MCMCChains.jl) objects, so they slot into existing Turing.jl / AbstractMCMC workflows. + +### Key features + +- **Stochastic quasi-DEER Jacobian** — single-probe Hutchinson diagonal estimator avoids the $D$ JVPs needed for an exact diagonal, making the algorithm scalable to high-dimensional targets. +- **GPU-ready** — the Newton update and prefix scan are pure array broadcasts and run on `CuArray`s without code changes. +- **Turing.jl / `LogDensityProblems` integration** — load `DynamicPPL` and `DensityModel(@model(...))` extracts parameter names automatically; arbitrary `LogDensityProblems`-compatible objects are also accepted. +- **Tape replay** — DEER consumes a fixed noise tape, so a parallel run reproduces its sequential counterpart bit-for-bit at convergence. + +### Quick start + +```julia +using ParallelMCMC, MCMCChains + +logp(x) = -0.5 * sum(abs2, x) # 2-D standard normal +grad_logp(x) = -x + +model = DensityModel(logp, grad_logp, 2; param_names=[:x1, :x2]) +sampler = ParallelMALASampler(0.1; T=64, jacobian=:stoch_diag) + +chain = sample(model, sampler, 500; chain_type=MCMCChains.Chains) +``` + +See the [Getting Started guide](docs/src/10-getting-started.md) for worked examples, GPU usage, Turing.jl integration, and step-size tuning. + ## How to Cite If you use ParallelMCMC.jl in your work, please cite using the reference given in [CITATION.cff](https://github.com/rsenne/ParallelMCMC.jl/blob/main/CITATION.cff). From 37cf294e7ba68c41c6a5d6cc3883dc7303986b16 Mon Sep 17 00:00:00 2001 From: Ryan Senne Date: Tue, 28 Apr 2026 21:50:36 -0400 Subject: [PATCH 3/8] add benchmarking --- .github/workflows/Benchmarks.yml | 107 +++++ .gitignore | 3 + README.md | 8 + .../ParallelMCMCBenchmarks/Project.toml | 1 + benchmarks/ParallelMCMCBenchmarks/README.md | 41 ++ .../scripts/compare_pr_benchmarks.jl | 188 +++++++++ .../scripts/pr_benchmarks.jl | 62 +++ .../src/ParallelMCMCBenchmarks.jl | 3 + .../ParallelMCMCBenchmarks/src/pr_suite.jl | 292 +++++++++++++ docs/src/assets/julia_deer_posterior.gif | Bin 0 -> 11841930 bytes docs/src/assets/make_julia_deer_gif.jl | 384 ++++++++++++++++++ docs/src/index.md | 10 + 12 files changed, 1099 insertions(+) create mode 100644 .github/workflows/Benchmarks.yml create mode 100644 benchmarks/ParallelMCMCBenchmarks/README.md create mode 100644 benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl create mode 100644 benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl create mode 100644 benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl create mode 100644 docs/src/assets/julia_deer_posterior.gif create mode 100644 docs/src/assets/make_julia_deer_gif.jl diff --git a/.github/workflows/Benchmarks.yml b/.github/workflows/Benchmarks.yml new file mode 100644 index 0000000..995011d --- /dev/null +++ b/.github/workflows/Benchmarks.yml @@ -0,0 +1,107 @@ +name: Benchmarks + +on: + pull_request: + branches: + - main + paths: + - ".github/workflows/Benchmarks.yml" + - "Project.toml" + - "src/**" + - "ext/**" + - "benchmarks/**" + types: [opened, synchronize, reopened, ready_for_review] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +permissions: + contents: read + +jobs: + benchmark: + name: PR benchmark comparison + runs-on: ubuntu-latest + timeout-minutes: 60 + + env: + PMCMC_BENCH_SECONDS: "0.5" + PMCMC_BENCH_SAMPLES: "8" + PMCMC_BENCH_WARN_RATIO: "1.25" + PMCMC_BENCH_FAIL_RATIO: "1.75" + JULIA_NUM_PRECOMPILE_TASKS: "1" + + steps: + - name: Checkout base + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.base.repo.full_name }} + ref: ${{ github.event.pull_request.base.sha }} + path: base + + - name: Checkout PR head + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.sha }} + path: head + + - uses: julia-actions/setup-julia@v2 + with: + version: "1" + arch: x64 + + - name: Use Julia cache + uses: julia-actions/cache@v3 + + - name: Instantiate base benchmark environment + working-directory: base/benchmarks/ParallelMCMCBenchmarks + run: julia --project=. -e 'using Pkg; Pkg.instantiate()' + + - name: Instantiate PR benchmark environment + working-directory: head/benchmarks/ParallelMCMCBenchmarks + run: julia --project=. -e 'using Pkg; Pkg.instantiate()' + + - name: Run base benchmarks + run: | + julia --project="$GITHUB_WORKSPACE/base/benchmarks/ParallelMCMCBenchmarks" \ + "$GITHUB_WORKSPACE/head/benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl" \ + --seconds "$PMCMC_BENCH_SECONDS" \ + --samples "$PMCMC_BENCH_SAMPLES" \ + --output "$GITHUB_WORKSPACE/base-benchmarks.toml" \ + --markdown "$GITHUB_WORKSPACE/base-benchmarks.md" + + - name: Run PR benchmarks + run: | + julia --project="$GITHUB_WORKSPACE/head/benchmarks/ParallelMCMCBenchmarks" \ + "$GITHUB_WORKSPACE/head/benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl" \ + --seconds "$PMCMC_BENCH_SECONDS" \ + --samples "$PMCMC_BENCH_SAMPLES" \ + --output "$GITHUB_WORKSPACE/head-benchmarks.toml" \ + --markdown "$GITHUB_WORKSPACE/head-benchmarks.md" + + - name: Compare benchmarks + run: | + set +e + julia "$GITHUB_WORKSPACE/head/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl" \ + --base "$GITHUB_WORKSPACE/base-benchmarks.toml" \ + --head "$GITHUB_WORKSPACE/head-benchmarks.toml" \ + --warn-ratio "$PMCMC_BENCH_WARN_RATIO" \ + --fail-ratio "$PMCMC_BENCH_FAIL_RATIO" \ + --markdown "$GITHUB_WORKSPACE/benchmark-comparison.md" + status=$? + cat "$GITHUB_WORKSPACE/benchmark-comparison.md" >> "$GITHUB_STEP_SUMMARY" + exit "$status" + + - name: Upload benchmark results + uses: actions/upload-artifact@v4 + if: always() + with: + name: pr-benchmark-results + path: | + base-benchmarks.toml + base-benchmarks.md + head-benchmarks.toml + head-benchmarks.md + benchmark-comparison.md diff --git a/.gitignore b/.gitignore index 2b0c91d..56c0c84 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ .benchmarkci Manifest.toml benchmark/*.json +benchmarks/ParallelMCMCBenchmarks/*-benchmarks.toml +benchmarks/ParallelMCMCBenchmarks/*-benchmarks.md +benchmarks/ParallelMCMCBenchmarks/benchmark-comparison.md coverage docs/build/ env diff --git a/README.md b/README.md index c6b447e..01d4ab1 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,14 @@ [![All Contributors](https://img.shields.io/github/all-contributors/rsenne/ParallelMCMC.jl?labelColor=5e1ec7&color=c0ffee&style=flat-square)](#contributors) [![BestieTemplate](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/JuliaBesties/BestieTemplate.jl/main/docs/src/assets/badge.json)](https://github.com/JuliaBesties/BestieTemplate.jl) +

+ DEER trajectory estimates improving on a Julia-logo-shaped posterior +

+ +

+ DEER iterates on a synthetic Julia-logo-shaped posterior: orange trajectory estimates move toward the taped MALA path over repeated trajectory solves. +

+ ## What this package does **ParallelMCMC.jl** implements *parallel-across-the-sequence* MCMC in Julia: instead of generating samples one at a time, an entire trajectory of $T$ correlated steps is solved *simultaneously*. This makes wall-clock time per sample sublinear in chain length on multi-core CPUs and GPUs, where conventional sequential MCMC scales linearly. diff --git a/benchmarks/ParallelMCMCBenchmarks/Project.toml b/benchmarks/ParallelMCMCBenchmarks/Project.toml index 75f662d..0111b50 100644 --- a/benchmarks/ParallelMCMCBenchmarks/Project.toml +++ b/benchmarks/ParallelMCMCBenchmarks/Project.toml @@ -12,6 +12,7 @@ ParallelMCMC = "1a970f40-4406-51c9-a967-cb3143c111e8" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76" [extras] CUDA_Runtime_jll = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" diff --git a/benchmarks/ParallelMCMCBenchmarks/README.md b/benchmarks/ParallelMCMCBenchmarks/README.md new file mode 100644 index 0000000..5f2be8c --- /dev/null +++ b/benchmarks/ParallelMCMCBenchmarks/README.md @@ -0,0 +1,41 @@ +# ParallelMCMC Benchmarks + +This package holds reproducible benchmark workloads for `ParallelMCMC.jl`. + +## PR Regression Suite + +The pull request workflow runs a small CPU-only suite against both the PR head +and the PR base commit, then compares median runtimes. It covers: + +- one allocation-light MALA transition, +- the diagonal affine scan used by quasi-DEER, +- a full DEER block solve on a taped Gaussian MALA trajectory, +- the public `ParallelMALASampler` path on a small Bayesian logistic regression. + +Run the same suite locally from the repository root with: + +```bash +julia --project=benchmarks/ParallelMCMCBenchmarks \ + benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl \ + --output pr-benchmarks.toml \ + --markdown pr-benchmarks.md +``` + +To compare two result files: + +```bash +julia benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl \ + --base base-benchmarks.toml \ + --head head-benchmarks.toml \ + --markdown benchmark-comparison.md +``` + +CI marks a benchmark as `watch` above a 1.25x median-time ratio and fails above +1.75x. The thresholds can be adjusted with `PMCMC_BENCH_WARN_RATIO` and +`PMCMC_BENCH_FAIL_RATIO`. + +## Manual GPU Sweeps + +The existing scripts in `scripts/` are still intended for deeper manual +throughput and GPU investigations. They are not part of the PR gate because +standard GitHub-hosted runners do not provide CUDA hardware. diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl new file mode 100644 index 0000000..d811efa --- /dev/null +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl @@ -0,0 +1,188 @@ +#!/usr/bin/env julia + +using Printf +using TOML + +function _option(args, name, default=nothing) + index = findfirst(==(name), args) + index === nothing && return default + index < length(args) || error("missing value for $name") + return args[index + 1] +end + +function _has_flag(args, name) + return any(==(name), args) +end + +function _usage() + return """ + Usage: + julia compare_pr_benchmarks.jl --base base.toml --head head.toml [options] + + Options: + --base PATH Base-branch benchmark TOML. + --head PATH PR-head benchmark TOML. + --markdown PATH Write a Markdown comparison table. + --fail-ratio N Fail when head/base median time exceeds N. Default: 1.75 + --warn-ratio N Mark warning when head/base median time exceeds N. Default: 1.25 + --help Show this help message. + """ +end + +function _format_time(ns::Real) + ns < 1e3 && return @sprintf("%.0f ns", ns) + ns < 1e6 && return @sprintf("%.2f us", ns / 1e3) + ns < 1e9 && return @sprintf("%.2f ms", ns / 1e6) + return @sprintf("%.2f s", ns / 1e9) +end + +function _format_ratio(ratio::Real) + return @sprintf("%.2fx", ratio) +end + +function _format_delta(bytes::Real) + sign = bytes >= 0 ? "+" : "-" + return sign * string(abs(round(Int, bytes))) * " B" +end + +function _status(ratio::Real, warn_ratio::Real, fail_ratio::Real) + ratio >= fail_ratio && return "regression" + ratio >= warn_ratio && return "watch" + ratio <= inv(warn_ratio) && return "faster" + return "ok" +end + +function compare_results(base_path, head_path; warn_ratio=1.25, fail_ratio=1.75) + base = TOML.parsefile(base_path) + head = TOML.parsefile(head_path) + base_benchmarks = base["benchmarks"] + head_benchmarks = head["benchmarks"] + + names = sort(collect(intersect(keys(base_benchmarks), keys(head_benchmarks)))) + isempty(names) && error("no common benchmark names found") + + rows = Vector{Dict{String,Any}}() + failed = false + + for name in names + base_result = base_benchmarks[name] + head_result = head_benchmarks[name] + base_ns = Float64(base_result["median_ns"]) + head_ns = Float64(head_result["median_ns"]) + ratio = head_ns / base_ns + status = _status(ratio, warn_ratio, fail_ratio) + failed |= status == "regression" + + push!( + rows, + Dict{String,Any}( + "name" => name, + "base_ns" => base_ns, + "head_ns" => head_ns, + "ratio" => ratio, + "base_allocs" => Int(base_result["median_allocs"]), + "head_allocs" => Int(head_result["median_allocs"]), + "memory_delta" => + Float64(head_result["median_memory_bytes"]) - + Float64(base_result["median_memory_bytes"]), + "status" => status, + ), + ) + end + + return rows, failed +end + +function write_markdown(path, rows; warn_ratio, fail_ratio) + mkpath(dirname(path)) + open(path, "w") do io + println(io, "# ParallelMCMC Benchmark Comparison") + println(io) + println( + io, + "Median runtime is compared against the pull request base commit. ", + "A benchmark fails the job when `head / base > ", + fail_ratio, + "` and is marked `watch` above `", + warn_ratio, + "`.", + ) + println(io) + println(io, "| Benchmark | Base median | PR median | Ratio | Allocs | Memory delta | Status |") + println(io, "|---|---:|---:|---:|---:|---:|---|") + for row in rows + println( + io, + "| `", + row["name"], + "` | ", + _format_time(row["base_ns"]), + " | ", + _format_time(row["head_ns"]), + " | ", + _format_ratio(row["ratio"]), + " | ", + row["base_allocs"], + " -> ", + row["head_allocs"], + " | ", + _format_delta(row["memory_delta"]), + " | ", + row["status"], + " |", + ) + end + println(io) + end + return path +end + +function print_summary(rows) + println("ParallelMCMC benchmark comparison") + for row in rows + println( + " ", + row["name"], + ": ", + _format_time(row["base_ns"]), + " -> ", + _format_time(row["head_ns"]), + " (", + _format_ratio(row["ratio"]), + ", ", + row["status"], + ")", + ) + end +end + +function main(args=ARGS) + if _has_flag(args, "--help") + print(_usage()) + return 0 + end + + base = _option(args, "--base") + head = _option(args, "--head") + base === nothing && error("--base is required") + head === nothing && error("--head is required") + + warn_ratio = parse(Float64, _option(args, "--warn-ratio", get(ENV, "PMCMC_BENCH_WARN_RATIO", "1.25"))) + fail_ratio = parse(Float64, _option(args, "--fail-ratio", get(ENV, "PMCMC_BENCH_FAIL_RATIO", "1.75"))) + markdown = _option(args, "--markdown", "") + + warn_ratio > 1 || error("--warn-ratio must be greater than 1") + fail_ratio > warn_ratio || error("--fail-ratio must be greater than --warn-ratio") + + rows, failed = compare_results(base, head; warn_ratio=warn_ratio, fail_ratio=fail_ratio) + print_summary(rows) + + if !isempty(markdown) + write_markdown(markdown, rows; warn_ratio=warn_ratio, fail_ratio=fail_ratio) + println("Wrote Markdown comparison to ", markdown) + end + + return failed ? 1 : 0 +end + +exit(main()) diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl new file mode 100644 index 0000000..51c764b --- /dev/null +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl @@ -0,0 +1,62 @@ +#!/usr/bin/env julia + +using ParallelMCMCBenchmarks + +include(joinpath(@__DIR__, "..", "src", "pr_suite.jl")) +const PRSuite = ParallelMCMCPrBenchmarks + +function _option(args, name, default=nothing) + index = findfirst(==(name), args) + index === nothing && return default + index < length(args) || error("missing value for $name") + return args[index + 1] +end + +function _has_flag(args, name) + return any(==(name), args) +end + +function _usage() + return """ + Usage: + julia --project benchmarks/ParallelMCMCBenchmarks/scripts/pr_benchmarks.jl [options] + + Options: + --output PATH Write machine-readable TOML benchmark results. + --markdown PATH Write a Markdown summary table. + --seconds N Target seconds per benchmark case. Default: 0.5 + --samples N Minimum samples per benchmark case. Default: 8 + --help Show this help message. + """ +end + +function main(args=ARGS) + if _has_flag(args, "--help") + print(_usage()) + return 0 + end + + seconds = parse(Float64, _option(args, "--seconds", get(ENV, "PMCMC_BENCH_SECONDS", "0.5"))) + samples = parse(Int, _option(args, "--samples", get(ENV, "PMCMC_BENCH_SAMPLES", "8"))) + output = _option(args, "--output", "") + markdown = _option(args, "--markdown", "") + + seconds > 0 || error("--seconds must be positive") + samples > 0 || error("--samples must be positive") + + results = PRSuite.run_pr_benchmarks(; seconds=seconds, samples=samples) + + if !isempty(output) + PRSuite.write_results(output, results) + println("Wrote TOML results to ", output) + end + + if !isempty(markdown) + PRSuite.write_markdown(markdown, results) + println("Wrote Markdown summary to ", markdown) + end + + return 0 +end + +exit(main()) diff --git a/benchmarks/ParallelMCMCBenchmarks/src/ParallelMCMCBenchmarks.jl b/benchmarks/ParallelMCMCBenchmarks/src/ParallelMCMCBenchmarks.jl index a77b179..b43d01e 100644 --- a/benchmarks/ParallelMCMCBenchmarks/src/ParallelMCMCBenchmarks.jl +++ b/benchmarks/ParallelMCMCBenchmarks/src/ParallelMCMCBenchmarks.jl @@ -1,7 +1,10 @@ module ParallelMCMCBenchmarks +export ParallelMCMCPrBenchmarks + include("models/bayes_linreg.jl") include("models/bayes_logreg.jl") include("runners/mala_runner.jl") +include("pr_suite.jl") end # module diff --git a/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl b/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl new file mode 100644 index 0000000..262c043 --- /dev/null +++ b/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl @@ -0,0 +1,292 @@ +module ParallelMCMCPrBenchmarks + +using AbstractMCMC: sample +using BenchmarkTools +using LinearAlgebra +using Printf +using Random +using Statistics +using TOML + +using ParallelMCMC + +const MALA = ParallelMCMC.MALA +const DEER = ParallelMCMC.DEER +const DEERScan = ParallelMCMC.DEERScan +if isdefined(parentmodule(@__MODULE__), :BayesLogReg) + const BayesLogReg = getfield(parentmodule(@__MODULE__), :BayesLogReg) +else + using ParallelMCMCBenchmarks: BayesLogReg +end + +struct BenchmarkCase + name::String + description::String + benchmark::Any +end + +function _stdnormal_logp(x) + return -0.5 * dot(x, x) +end + +function _stdnormal_grad(x) + return -x +end + +function _stdnormal_hvp(x, v) + return -v +end + +function _make_stdnormal_rec(rng::AbstractRNG, dim::Int, steps::Int, epsilon::Float64) + tape = [(noise=randn(rng, dim), u=rand(rng)) for _ in 1:steps] + + step_fwd = + (x, te) -> + MALA.mala_step_taped(_stdnormal_logp, _stdnormal_grad, x, epsilon, te.noise, te.u) + jvp = + (x, te, v) -> MALA.mala_step_surrogate_sigmoid_jvp( + _stdnormal_logp, + _stdnormal_grad, + x, + epsilon, + te.noise, + te.u, + v, + _stdnormal_hvp, + ) + fwd_and_jvp = + (x, te, v) -> MALA.mala_step_taped_and_jvp( + _stdnormal_logp, + _stdnormal_grad, + x, + epsilon, + te.noise, + te.u, + v, + _stdnormal_hvp, + ) + + return DEER.TapedRecursion(step_fwd, jvp, tape; fwd_and_jvp=fwd_and_jvp) +end + +function _mala_step_case() + rng = MersenneTwister(9001) + dim = 16 + x = randn(rng, dim) + x_next = similar(x) + noise = randn(rng, dim) + u = rand(rng) + workspace = MALA.MALAWorkspace(x) + epsilon = 0.04 + + bench = @benchmarkable MALA.mala_step_with_logα!( + $x_next, + $workspace, + $_stdnormal_logp, + $_stdnormal_grad, + $x, + $epsilon, + $noise, + $u, + ) evals = 1 + + return BenchmarkCase( + "mala.step_stdnormal_16d", + "One allocation-light MALA step with log-acceptance on a 16-D Gaussian target.", + bench, + ) +end + +function _affine_scan_case() + rng = MersenneTwister(9002) + dim = 32 + steps = 256 + A = 0.92 .+ 0.02 .* randn(rng, dim, steps) + B = 0.10 .* randn(rng, dim, steps) + s0 = randn(rng, dim) + output = similar(A) + workspace = DEERScan.AffineScanWorkspace(A) + + bench = @benchmarkable DEERScan.solve_affine_scan_diag!( + $output, $A, $B, $s0, $workspace + ) evals = 1 + + return BenchmarkCase( + "deer.affine_scan_32x256", + "Diagonal affine prefix scan used by quasi-DEER, D=32 and T=256.", + bench, + ) +end + +function _deer_solve_case() + rng = MersenneTwister(9003) + dim = 8 + steps = 64 + epsilon = 0.06 + s0 = randn(rng, dim) + rec = _make_stdnormal_rec(rng, dim, steps, epsilon) + workspace = DEER.DEERWorkspace(s0, steps) + + bench = @benchmarkable DEER.solve( + $rec, + $s0; + tol_abs=1e-8, + tol_rel=1e-6, + maxiter=80, + jacobian=:diag, + damping=0.5, + rng=rng, + workspace=$workspace, + copy_result=false, + ) setup = (rng = MersenneTwister(42)) evals = 1 + + return BenchmarkCase( + "deer.solve_stdnormal_8x64", + "A full DEER block solve against a taped 8-D Gaussian MALA trajectory, T=64.", + bench, + ) +end + +function _parallel_mala_sample_case() + rng = MersenneTwister(9004) + dim = 4 + n_obs = 64 + X, y, _ = BayesLogReg.make_data(rng, n_obs, dim) + logp, gradlogp, hvp = BayesLogReg.make_problem_with_hvp(X, y) + model = ParallelMCMC.DensityModel(logp, gradlogp, dim; hvp=hvp) + sampler = ParallelMCMC.ParallelMALASampler( + 0.045; + T=16, + maxiter=60, + tol_abs=1e-6, + tol_rel=1e-5, + jacobian=:diag, + damping=0.5, + ) + initial_params = zeros(dim) + + bench = @benchmarkable sample( + rng, + $model, + $sampler, + 64; + initial_params=$initial_params, + progress=false, + ) setup = (rng = MersenneTwister(42)) evals = 1 + + return BenchmarkCase( + "sampler.parallel_mala_logreg_4d_64samples", + "Public ParallelMALASampler path on a small Bayesian logistic regression problem.", + bench, + ) +end + +function make_pr_benchmarks() + return [ + _mala_step_case(), + _affine_scan_case(), + _deer_solve_case(), + _parallel_mala_sample_case(), + ] +end + +function _trial_summary(trial::BenchmarkTools.Trial) + med = median(trial) + min_est = minimum(trial) + return Dict{String,Any}( + "median_ns" => med.time, + "minimum_ns" => min_est.time, + "median_memory_bytes" => med.memory, + "median_allocs" => med.allocs, + "samples" => length(trial.times), + ) +end + +function _format_time(ns::Real) + ns < 1e3 && return @sprintf("%.0f ns", ns) + ns < 1e6 && return @sprintf("%.2f us", ns / 1e3) + ns < 1e9 && return @sprintf("%.2f ms", ns / 1e6) + return @sprintf("%.2f s", ns / 1e9) +end + +function run_pr_benchmarks(; seconds::Real=0.5, samples::Int=8) + cases = make_pr_benchmarks() + results = Dict{String,Any}() + + println("Running ParallelMCMC PR benchmarks") + println(" Julia: ", VERSION) + println(" seconds per case: ", seconds) + println(" minimum samples per case: ", samples) + println() + + for case in cases + println("==> ", case.name) + println(" ", case.description) + trial = run(case.benchmark; seconds=seconds, samples=samples) + summary = _trial_summary(trial) + summary["description"] = case.description + results[case.name] = summary + + println( + " median: ", + _format_time(summary["median_ns"]), + " min: ", + _format_time(summary["minimum_ns"]), + " allocs: ", + summary["median_allocs"], + " memory: ", + summary["median_memory_bytes"], + " bytes", + ) + println() + end + + return Dict{String,Any}( + "metadata" => Dict{String,Any}( + "julia_version" => string(VERSION), + "seconds" => Float64(seconds), + "samples" => samples, + ), + "benchmarks" => results, + ) +end + +function write_results(path::AbstractString, results::Dict{String,Any}) + mkpath(dirname(path)) + open(path, "w") do io + TOML.print(io, results; sorted=true) + end + return path +end + +function write_markdown(path::AbstractString, results::Dict{String,Any}) + benchmarks = results["benchmarks"] + mkpath(dirname(path)) + open(path, "w") do io + println(io, "# ParallelMCMC PR Benchmarks") + println(io) + println(io, "| Benchmark | Median | Minimum | Allocs | Memory |") + println(io, "|---|---:|---:|---:|---:|") + for name in sort(collect(keys(benchmarks))) + result = benchmarks[name] + println( + io, + "| `", + name, + "` | ", + _format_time(result["median_ns"]), + " | ", + _format_time(result["minimum_ns"]), + " | ", + result["median_allocs"], + " | ", + result["median_memory_bytes"], + " B |", + ) + end + println(io) + end + return path +end + +end # module diff --git a/docs/src/assets/julia_deer_posterior.gif b/docs/src/assets/julia_deer_posterior.gif new file mode 100644 index 0000000000000000000000000000000000000000..b57b5b9263e848fd1339e6f065f27fe993d7aeaa GIT binary patch literal 11841930 zcmV(>K-j-WNk%w1VK4%u0rvm^9wsv%C^R1^I36f1AtyB=DmE%AHY6)LD=j-BCpa=L zIyEjiCNerJG(9XjJtZ?XGcr9pGCeprGbk`FML0P~J}@yyJw0JRSxGNZL@!)RGFC`6 zQ%Ev(SuSEuG-Xsca8@#MWjZA;LMtypEHgqbIzcNnODHo&GBraxHbF8wL_0b~G&V^! zI!ih{OgT18I6YJ?I8!n|VMaSeRXs#PJyu~qMKnW1Iz&r6OG`ILM?6$VJ49AFOH4XO zW<5)EK4L>hLrhmhOF~#oMn_jyOI1i$R##M9TvSG8MN4K(Q)g6LcU4+)Q%X!_RZ?kN zR(D!RYD{-(OG!&)R7+=AR%l68cUf3;NmFWPTV-WgcXeE3SZHQkc4Sv*bz^yIX=Qn7 zcy)7WaE4#evsdHqHTtS>Kv4b(ghbi5cDBqYV z-IpiGjWFt-C*qqcweWZtXjMRjg zh>(kuv5k+2r-zlPmzlVijkJrHho_H^uc?-|tdg^pu&u7IuA;h~+=_+RmzT?tkl~Vz zM=j)>)=o$|el%bKXst+3{*rRlP*>bbVzuCdglo0Z3loXM1p!-S&Dny1j7smQ0S z)1)iC=-rL9G-qhmd*y!TV^6m5R z>*wF$-~a#sA^!_bMO0HmK~P09E-(WD0000X`2++90000X{|iZNVP|DcVP|P$YYt~& zZEayaFfKGTG&M9e04x9i001xoqyYd3{{Z<397wRB!Gj1BDqP60p~Hs|5AK^tv7$wa z`7&b6$g!ixk014kd?jn#t8(dDl@qD&p39doW6GR)kK8Fw-O`O~)#+8bpXpw;B1g0+ zxo$kQbRuUGRym_kiI(fssg>1N-He{P1S_gnaxuZW6e@NmxmT~s(u~Qnty_^D^?{sA z*J8elcr6N?7_qP4zkmY^9!$8f;lq0g?i-l5@xG1|=}Mm4Ru-&#vR>^hcdzBz&!5Yk z>Xh?U)p6v~5pC7g>&_}*Ucq`L?kiNGf|mKVc|N&t zCrhuW(J@|riy3D}%)Pt!@8H9W|1WsmI$n>DrB8PCuqjw6b5FI+e5N z&a_{>0tOhDcmiN>M0HbDZAb0aNfn)-hG1|=i33wQGmSGFhV{K9QfJMzrJj1}ab(^_ zdu6xXcr3Q);)^gAmKSy>ZZzVJ&%JdIR{F#zUx)P(CEGYVUD6X&NImscE0p3rZKfC5 znslX^**)pp#NnAVjfvJ%fkGIikn-8q34!96bd`j_K~>HrS3pTrZbs_%WS3tSWt?hi z(WF~9go2o+TpY2=CwhA3|LNwNb=GR@t++?PAmO^RjN#+ioY?wS~$c~Nw?PPmv|avVPRASTQAi0zo662&QYn$S?Pi>~)LsjfOQfoGsJx!78r{Knm8kE)L<4N}(MSiT z7j^^}d>7C;CY+8eoVB&1EcYlVU&N^rH{4lT8fj#@6?%o#lQyGFu9KRLBMxgCf-F=g zPI?J5k=>AtZdB8H|K*ZV7Y-?}OFrLwu+Y4wNNduJH|{t>vo?KV(2tb}bY+-;aY`$) zbc0fSQycdR*MtJjlu*uAVPx88fgCbwDywWI%tnpliIJVaQf4cWA|yzWmHsL59b4a^ zU!U$2Ih|0U`B1gPO}nI;kt|eg#JihSU_m#w5$SEPAX2r!z^>sDZ&Us`*ON%5q~*aR zIq(A#^l}6=>d6XEiqW13N0=*p`N~GGVoCVik`4*J!V{jzTr12+5}IXjCO|1lInYuY z{b->;r+~`a|4z0k)Q!tHymKItNS2%WT_RFTNXW)Ef@ei(G?C@_B%Lb(ngXywx z3WZ5I82GnWU}Bt_0o30Hd7If}b*2P5XBBuCJKiBBq{D+nNzbZ8afm~jXmzdL2vpKY z|9$dpO=>4ryy-CC;SHO`+be>?^jC=aY_Qck5qZ{_*ygrzR=BKDau4>i5E1UGlzoYh zcr&JXf+<`^!KmnXQUnHe;&ufBS6X)>A8nAvfwpauYfaM)*N&`740M}qcX!@Sk##}O z0vX9Zsn@&NrcB}h3UUAXQ#0aAPsz1j(VR=+5iYiSjis*7=#vg3iHW0i)l}_J7p0wG zvMAyJ!#Ke}H!8s9W3zcD%slGe`r7x#80&;<-K!1zR_hX@^>Hgc;Rym^MYj_i2atc~ zQBXe6D@=+O$y8Gl1`8IbY1~(Zw=6<9#xZCbUe)_x=vS8{$t61+;K`bjH&V{+|3Gdt z5-eiV4J{}|X6Kc$I6k4f8sFHy;p{|hUrQU;TICa}bI^IIa)~xKDR=DB22FGG2^j~_ zfqI3CC$vzhz72=L`BWiv4o98DEk;FLPIcp=Yr^k^*}6d*4Nq~lp+V*bnSLZ$?#S`B z&2iINRf!F`Flk%&YR0u0owM%#Y)%5&x1IB?bSJW)y0uoN6>sfCpndZRC%qO7J-+68 zolL2*i3&i19OHEx{3_~1Si;OzwY>fH&!x`sSK><(eRg8enD~yF&1@1T7UVmrs2tuXR7VHYMk65|0}SBSSqap zjR~J2}`2Id)_#=l~Seqw5B2y*2`hCfTpGsJm9KrO(~NtgKHphxBjsziD~bjv~loArsdpP^=&UZe!r`>x^kgdTwduyG!j{_JJJx92 z(1XtUjisJD-E5j}CBKBVvt?)kT^qT0 zVux3t1x+YqYlUok7*p*Oc6R0o`PUO9rFq&We%{1lbTfoR|L{bzRcQjkh(rbke|SLa zBov`#K&|5?`Ee~)#!BFmWnfr}VW=Ig)^l`}Fd8^7Yavczq*-J^4x=JOzQHcV111xc zL@~t^VTTj%R|SRkXQpup7zc4TRzFlAHWJ4qT2KXAKm=P7c1_|N&$w`{Km;{#1fGC# zN60(m!W#X>K*I<{_61XTMj9+dJlDr4+R`Xh<~;TBAy?KxT_`Z7n2&-XhP>ixtH>T^ zC=;}JBsw*8v#3L-Fd#1zK~GX&aMO8@!eT&11>weQ;bJ1@ za%O0c#ue|!f173?6*+*gH;CN^cJ}iLYo#UpR|Lygk-O7QP?Ao0Gd2=p71^Xb?Fe%l znM#5*XU}s_JTHDZV{kMbdCpOS%9DG(So}g|%~J zsuZTx6HG#64)bhwrbVt-m#uJvg(`Ms{}*l;qZAl7l1J)Id5LW^`F^(pjk-fXC;4=F zd4hhqV^pC#M+iw%7om(I9PSd7pHYv8^KRyWiZ_R*`iPGq>T_atCe)M`h;$O1x)f1C zR>ziP2Xt|*(0|5ZZ2G5vb2E}$;fz0oUQ|#6%a}Vo=1pO#CADQ|pKzOih?i7RQtwwS zKXjJZMlRB5jkFO?Fyu~u#w1BpbuiTlzJ`?t8K!mjd#>7UjhR%lN~=hjWrv3&0Qr;` z1R5B!c4sG0yQwBIM%H_#(mmG zgG<CZI zIqrsU(5FxlgB$cQH;>{1M8Gb%SUU&QM{VO)hDL}avsORmUfhPHO+qqS5ClX}s2)oN zQ;KonMyVKQg6+g&l=_-@d5k>amUhU0VOMSWxmIyoCUgUs%SJch#$Eyx8%jhnLaTs8 z+kn%7M#cB9N&AHznqmH!LeR%No^T4Ev8pz41)nQ>RkCaT@j5Iebrh>{S22@bCl2Vv zJ4xzsVYiZ06n0dwjPVDzrlDFel$VW)F_*9n1f+v`xwdN+ji@P3L)dnRyJy`PajSD^ zH1&g%q##cefJZbTRdy!8|Hp3p+OL-zu=vP)=YfF%`4ThaKFM-ArvMu(GayFBy-TEG z4Rkg(rg0>-4MldWe72U1R;W$Fe?6AB58`py2Dd!nemM9o;zWpfi*d)Q1uig+c2;eV zqLRAv3H?XBQb_mxdZ16&#yIC=oNJ(?g2o8?cNatKO5HZR)1l#T9Fj zGkF72S_B|3gm!@mGZ;lvGPS=j$UA`9aqQV~ZHF{ zLrO9Q!oYgz0(!V$HMMorDFZXh1VqE*mCj6va*E7SV z$ZDFaVQs1^VNrH?|MxdS;#pCcKncRIkQSJ6=p-`5Y_GMc=QWZwP?8Q)6#%-nsz-y} z=#dnh#nwg@f`-Kev{rbjI`an$o4}f3H_N+wJG%>ig^PMaMr6-oj21bP3{;xNwmUL) zMdJd=w!z4(N)vqC#}4?%u^PyNY>L-OIh+e?k#!Fk^H4Zscj5BGNOT}6mIb6WKz%f- znCxDX^o&|i11?Z$HrtXerdn->f4zH*OGu1$QM@4$meCb)RZH#VerC5pV2}f)hv$e zDV6dHHS0Dc|5YGdQXuPmtV0@-ySu5X=bO1K8-iA@ItaI%gqKLjaaXX6L$(P@L5=U{ zBsX{oFYp3uOBI`hmjhZ-eXDv&if!22!08oDmuya;G%Xq3%=A%4qgZoVCemO?nUyoJ z>QS)KXCF7gfy|R1P4SsYR871lPTpo>zEQn}<|%8nX_XdJBN?Qd)+BbejCDA(`3$!? z+M}cDP4Dctn?RB_xK^|5mDK8zJvx8CD9?geQeWL;Lq<~Ic(%kVb$oW#UGZdoqe?H# zfYE6^Ar03!N75OFLWsA%JAw(vVJaY%70QHtwJ}6cSTc~NYg*L6=Ok#xK|qc=l26@n zRWZ{mw`5(GER0X$JHCZ=l)nAjyYk>nOV}@f)V^3Ta*P2oA)pkJp74fLnY_WhHO{RoprVXBR7U(n*E*;wGOE=-Z z6~5v3F+X3bx=Ex-W%lj=MIe#0w z3F8##7)RvF*tVQ)B-{soNbSnt{eGQI1ikwSLl})zV9W3aQi9!f-8OdGV7w`=I*(Rp zqOL?{qdV@xGi+Uy(>$51KGM=<(!*_rqG2U_y&-ltO>2H@o`Mz;iC+Y=Y!|0mVcVl6 z$!Ao;f7n)}ONwZE2n&zB36+g;sukWI*KHr`w^5C8o{+`!CurQ)?M1x}k^P7n|Ev`J zsol8jlISIfKh*HM;h<_Y>IN1wHR>=$vB;ot@A#hYsJ8F&cFi0yHL?H{Qa|+&12Hhc z5>dWt!&-ty& zPA$PPzqTpAXx^0am9|zK-^nA{yW;ec&q&bg?#hpz%UUFeC%I_|{m({tj=XNfve8Gd za9L4e>ZcyVK_#6`-}I+e$Q&UHnR5x}vmdSC3a|kCt|0p$Rr|INQuuMAJdYL?bw1rG zP8OB>xj!0I<*`|Sc11d*M(AEF)@C4;J18!Vp!^B1!SQ$as$8Vq|CpqzT;GQe z-nop%HOO$q>3)^Ak$X?x9zUv`E!i03?3>KHf(G*L_c0y}jXX%-Pr_nCS``3ssuiqP z-NupY)~XvhhUD%&gcwmGM12+Yjgys5U%ra@JbnZjQsh38B~6}0Ns`}6mMvYrgc(!j zOqw-q-o%+x=T4qIcdFdSGUZT@`|=shmrmBJSFKu|f-2C}D_OF-UBy~eYgML9TY&*{ zs_Q9Cm;^fYbP1DFwrx9Qp#m1{6)j-2RJl^6iWX0u{C3hpMN6kkS}s))tmUrZyF^?l z_QZHEm`k6iJifGPlVvKJH(jdyNwg;_HMCs0QdrBUO*N=o`8*hw|2A!(K)327ShJQ* zw6%SP)k*XvPeh1RA>#T{C)|}^X>Y z(z$0oeIiQdsaGCKrz?jZDo3D(4jQMMrl6wix$AIiDljmr=;XPsUWu$S#S{aLFi&jL zB00fq>x@Ufs6c@Vz!W3m1>QW_q%%(%Qhu)YX0Y`NK5Sx%emKEdwA+vr?QxK6-mr63$zLGd7l{}Nhgz4jKphn!b1xug|x z=3}r@kP=J@CjJWKv{O$%1+`O^_|Xs3lq>})opc~%3Kmx;q^g^8(!mEJSp*vAo^hD! z21JN>B`3wE*eb}WV8v;c6Ru9o%dhWVv_Vx}2Xmhn@$ zz75lfP!{f-s_+%4WVuI0k0HVkLr480)}ZuYITqPh|NdmoE-;w0Qyl1kTn@DD!u)ZY zF#7~dFu$~ch2JEhG#3`WwAtnoB0kehxKH}prjyMgBf_vLhZLK&!Zsmo%}rkDn~LqS zCC)E|E29lJ#x`jsvN$XLk-LJKrt{0TV96L+rw$V56hIY1Z^RKr4l%e>h(4LpoEf~i zKig}@ozs4H&%Jj5gSwfdqmY{2zWLG_2b`tor0kR_6&eS_hlKsE;`34`N4?O+0fPw4 zLDQm$BdE|T;7{xttQCPfna%CKM$>{z@7Xl%?)DY)E3nNvc@x_-3D=uo-t`I8*o{Y8 zszGQxInuLHCw8=D6+6F8>p+CYvkTt@g zO(*CwFui@rGII-34R%8=Ezo8gL8`(f-o>vq$#F2>%A?oPk|nzkCrEvoPC+`@Bj!*? zgmelNj!u!N6s}GpJcC$tq!+^(cBFH`C|J@-WA%{+>B7!g_BNS<6%7l4C{vUrlhXA%`r=rL0CWu#=p{ZhBZf8 zjbG$g7%%M=G&Z_h#WH%GIO0Y)|Bh|yC5Bb3Kslv4U?3%Wr1ubqEVCRy|lGJWGzf)_F2| znb<<4`Qp*eaG0hgVk{Gc)7z0ah$Gge%q$%}q?QjQu2 zDn&Ii8g7!qm)i{3Tvf%^0M#cPSdg;{1-pc6{F0@+g%trrxEq(+SVt;U*#KU>GL>Jz zZ1aT*Lvm++~$z-)QS-;HaP$G9VNX(KXA7R|frb?0ksL(kZe&a$wh4Z>WFFf~e1 zQzeC-s{RQqYGI#H{~>nj_BdLYmy+cyH@#YZ@UGz_UP-1G?x|7@akjMO$P9f(5RpwU zA!bgM?L?z45JWeHL;H1G$PRCAYD;OEm+Q!0IxlP~or(l{?E&_511zS$iX{ay- zeAd9LZ8T1mytHNNx@Ov9{kfK+WTk$=B5!_VAi~&3?~H*{ODCzd6hY|a~KTH{V+ z|Af(CL8qx;*`O<2%`;bboU{kuaP3Gn@m*s2hanCz-+$MV8y;nNc%R{CnPSTJNRMZo zFiW7W2Vvak_A6SDw>ZeoI5Voon-mHTxKZ#<7u28%YU^8l%iHE|>!vhOXMs4CgTQG| z*{kP$fmpE{|9b@_AOQ%d!4-x*m@3_O>vJ50{Bb&7T0RV!q{_(k0v?>8j8hXvoeze_yu>+i{?3NPD>=PY(1;#J24B7iO zcJe?g6RYhafB_%?0(d9mK)T`!Ea!8Z%~%fi>XV5Aljh5stx3BByN=0<7V7i28dw2z zDi6wg1y=JvSimj)dkFJesf6n^_+vkbYYB&=!ry6`)55!9LZYQ$3Px)W?1{0fV2hF> z7v@8j|88h1(HMws2ou6cB)jkn3k;3?2@ES!0N|UOR;aH&F}Lq3!JkWxXH&WtxPnhu zB-fyeA5jdcQf4xICwzYr5QETO?bx6Ff% z|9X>)x}XliD36i5trGz)hsZ^dF}N;FxL;JiV%tkrKc;X( z6*9DvYKy|47>FVp{^_0|NF+Rwqs)^dzmOZo&=zkKFNBdR+gLV0+Y$xHLJL+EJ-AugcJ1Hi?SQE@}Z2%`l;nG zosMh>V`4%lEVz*@o+2tqp?JwqQOU&|Mk{p5#Dqzi3^k3Tilfm#oD{h~sTc~OlULje zeRGlPu&XTjHFvwUibNlb(hRquf^6|N#UU5d$c*YzoXBuW?JB);^0p~6jli;;{|i(O zqFWb1nzMo-vnkk-pVJIMgeQ8Ljrd^~Y`GR}TMgWpleD;-!qC9aBo3f5kKFJCFrWfL z2^NL`t%C?j{e!~UF-#6iKgjeH#(Y1OjJU^yPlfZePusA`Y(`jEiY8Vz6Nw#?`f@FIXKdx1UF5)ahM zI9apZ^e4i(8++u8y8?`Y%(f`eG7Sw4xd{!g8;B_>7;KrU?^*$_`l25h2*0R~K{+4zLLNDFo<6Ww4Zy5N^8*{&(m zuEgn#!s;4!`b0K!lFC@5&4|&y;G3J9)NQ+#B~g>mpd0X^48lqdbYh@9;X10}KFQjc zL!pq&QX#?25G%#7Wjrk|jZZKQQ<|dBh7+-u)S=X38Bjw!i&zS9fQo^Lm2!xl6(Wbr z0u)0DmZrd%(Mc9&*&y}7&g*~$@!S!OoRS)3FFzuzm=iYAz&Wl0NT#cj&-jEFAOL|x zpw6HmExD>KYqL-kjmH_7(Ku0WW2Y)B7yco$xZ*0qNGr>!uktZc|L>5uS7<7KyVwvy zlxz(YB`hUe)zvFKKMqSRU-gN`^wN|a#)u=vl|9B}%&AzK$@fUYdw>uy{6AE0}`eWJHI3jkF?;sk6QFLIA7$suSgn#7NkR`g# zI^2*UHNjj@EX}+8c!|dSFw5Numj%=Mlw7}~-1_9w%uQA_t%#-2h>DQLae$DoxEj%A zMTID?afn0guq@!(F@>oZz>uqf(B6THr?i;0fr%3PGL0~SI;0~bN8H!9wMv$AN`h>< zwUxw7)Hdwx#BjT-AmNQf%CEanI!?kGhdD}vd8{St3!^PA8ykq?dN8DMU&4$+EtTKB zt2D>GrI@JP{e4WA99I8bxROOo;0fSmrP*?r55bgD|7j`*Rv8wJJPU#dG-fF~agZA& zQJ)=zPRPg?e1)b1V*fXgrjBj*9c@v#Tv8F;pTq+$*CuYxHHOZEuVwu3- zmc?Q$WJzI^Df?9|539JComqY8+zr_fGgg(616q%SqPDokKM54Hu|UI!Dsea@#ONFC zys9CQwW~r7#c0v^xjiLOBi{=;DtO*0h(| zXEo!JNQtA(;k5vhDmd{|Y{8CQ>CQq~-_+qO|6IL0l~Ng_U@83E!dvEvU6x##u|iAp z;`~gIkjT>6p^pL12m=OLkUZVPT|){9A%=-CiA1*@3&j8<7s^1S8hDItqUO80oANp~ zu$8hfYc}8WCn2e_oKw!i7(ww0*a$5fGRs>sT1X5OuQo!U(es{eaa)>0ql$`_<^$3) z8H_xc8p#qNSH>QYZ8VV`Sxh;x^~+_Q0OpnC=#JLkEB-KBMof{`Px{;3&mvh#NB==z{JqzBcnIK;MCe60v2GS8n8s43px+AvU@cS z+>^3?6{J?&k}24X3JhVH%PZ1oUT))!|0`H(@R~NHYi&;m4koF+ZSFeSn75-`tm&xW zy|ppsc;L`kVz&-i4Ozzc9SV%5UoPeAU%ukJ-rv3EV*Pb3GDX%C`!tI#X(Kvjm3C|2 zs#b!y9tSJjjKVi&+04D=j&t!E)wnBdW|u%ZJslBl(MX#n*)r{_5)*{B?MeXZ)vn^L zHt$*}f$1kF*_+&8=b%%JZO9v=6QpfI5<)~onQM~U!>+`ELBDZ1i+ZT6A-jteUFf)? zwSMSZb!%D98H=VrxqeUBimAG;;$nTcy)MSc1#kHjZ(#LqArF-)MDM=_rjt0hbP$LF zc5k;vkI%}c@@#BY#29)@JL>SM{~()=$T-xdGVy>E3`6dtD6z7i+r-feFDKE0+yg$| zrbMfJ&DYGwN!`s5Y?GrVXI!#2n(uj@BNUu><#16s@Fql)Mg+p^$ z>++oL9N*O_?8PlDSt!4>lPz+Y@?S4S@+1$|j}|c}f0>L%5cDPrnZ-LsWY+=qyv zXk3(1Dno}}Fial@IbtfYn~vr3Q6RyWIWi7%(y|sr@GBq!1!q{^)aufRz2seRZQC}` zSfCI@087NgcR~$z+NWl#J;dp&(nyWxJEWvrNHQAE<5*P=-wSWalf0oCt??1>@FeN> z^iOxf_nqa_3hCGS#T}CM|Be1`R|oG_cXD7ZF~6Q`z*Z1k->IbNiV7jPUuTrWCPRoZ z2#2=VJj=5lG-#%(5qj&Qti(ClEDgeH-UQEDZJRRW%)OuE4W?{5DjOK7jovMpM?&;= z>cYe-nXWRs68Kr(^fEp&(q^N(s#GoL>d;696?jmx@q$O(CWh-*Qh0`^v|9h`ES#ye zm-x1yTw?uYRmUA#xAl=eyv_B(Mp;vWm=!0Ko@s;_jENeq>kb60!G5>EABoKkG?IDM z2081C)!#?6MmSUXB`KB(^HxlY$K_kfG`4s9 z>F;0iesaP~dyPMp>ptl+MhJ)@xi)Q-MiF*x4V|e;hy{)u&dfZ=cJ}W&jKPSxK+>B( zFD!l$M7hCpg1LlsL6{c+h!F^CXwgEYMvWH;7gD*jX%m%*FB*2*l<)-#f?8f6c=1pR z3j{!3Q~~qyRnMN?E`ezU zOWe4qQOQjuXZ0#pa`(1!?dnw@*n42d=F6wAEZVec)9z!t?=9T8arwce`<5Txyn6T2 zFiirrRw1oAk#t0|`h*5hr z$k&M{FLmF{DjmvuY4j-E0=iEN++!#XWUa4YGc!LRWt;~gcf}VpL_|z0tXN9C9_d7`RrdiCK=e0 zf(bcUVn=Gbt!39bcI{$5Rtqg(oH?tPv(4sHC9-Q78Mr8)l}pB z^ptVp*s5G`ANm((a-T#LoJ=!Cgn|JmG_;L>3x0A%K^R5!UPLH~w_Obh7;q4yC!tgW z{{jg}s@@e;Op(&U^hIQGCkA0u9~D;^2$4bQG~SlZ=& zrgzz(Ei2d8ro9`Myz|=T8f>wNvoF6_x8@XVuNd`H=5>DFh-O>sZTbaD}36BULy_kWgS~GZa)|IThN8C#V1hT*b;KH3I{1 zVq+XKnuu|QcHgfrofBE~7-Ry=p!xUzKhCF0t4wyhEA&^QA zd?X#!CqX!NWgLjJAO@+T$*3#^jcuA52#@ooUIAq#uTYNXSi-@fIE+*?|NPh{uAsAp zNY9n;85HVHMkw%v$~z2sp`s>*paqetB+%*D&W`E3p^c{^I$6+8*yIT!WW-jrqRxc0 z7b~E=hAEd|2}`WzMoPx9YmpR9Tkcpcxx{ZSd%@%XmV`I_?dV9{gc8TYF#8yCafq|;n31p7s zAP3nG&rGtiK~3ZZvGW*C5`wdbO=MHd0b2A-8j)C{B#bC|3D8Dz1?}JpnmgHsPhYhh zEmWZjH(8KVPMMU;DdiR2Lu0`*iIsHZ%b;6<*NfIi$2*3mFYjEZ|C1Qmqr|A~ZjljW z-5T>4ebQBK0c_i1ZsbpP(rAIAiKHY4N69jk!!}q+Xs)0_BBm4slu6l!D1E}FHW{@Q z(aDt!Yo%E%cH#=psY%V|GrHQ17G^*zPz^>>0|FRe3ar~=1;_*=13^ghq!^PP z;+bDkwU^&~`Rg5T~jVSFj0gh?WDso^X;)S~x-#F7XP+b=9kc3+rjd zO4hPs#+_1vX92VIwt3byNbP+uxA2LrKH_M+juaaN!hQ`@LnuI6+T8yZg=KugJ-h zBxF?lGj!M{JV73ZTuMHd$d!MB0?t)khl6Ci&?}6? z6qb6Gkg;W82bWFEf37E zV7E4oQ`o8%^bfrASEAh6afG*kcdnnJKMPRt<@yt7bGA(GWFdsZG=x)F#dt3dAErP%qQNBKyt=j2BK^8~1esArPvARxzN} ztaF}Il~aN&luo?jK14Xvvdxs>q;x|Y&SsOeIb16@4GY`nlOSN-SLU(7o84;dqg&al z?yYkjk>))wxcAmhX8kQ}fTcGaUm=uMltbT*8_p-}R1?TW7KDvXni+wzQ*3^bL0BXY z&5(VN^gv|B;2}a26H*YEecWRxy^nkLBdXaU{{%eBs|m}$>Dz>KM72o_u6B-BtBM@C zX3eXRmc_Gd;y@)SB;pspfrAO}9YKsd|F1zM7+we}>(0H0U)8^!F1G#=u5;}=@{=z& za8C)X-EN@S2Z|bFd379V^2BZ!Hx4wxrdC!i<=T5fQOf<~o7S9=cy_|HnqU#S5J6N- z7Q%vv%@l~G0-8)MGO32kxR(go1T5%ZeK16V>==1mfkL2w0vwZSrQc4>iOZmh5t*N{ zc@cF)$IxNfler#=^vm|O!kToGh6F(nXu&Jw9@LT9Uy;?=0o43}+glxm^35O(9*Mi5 z%k!p%$iOC6+*z0Or^w7V265KhsN#Harwv3yaaPZ$2TQS zXlaM79N9!^Q&cF{AY$3~rAZcm!6_t8CxC$#jFFc-T?$5>*{M?t(#Rko(3+83Cf1-Q zeqti^1NY>KC_K%xAfdWZ^q*u;KF2SQMps+7vfNQyEsAVMUF zL8MYM(Hv5($|dZCO#q_l*b2~b|KEoc-O)i?RPos||m}Xr9QXz_(7!jf*$Vvnm6&OIPeG1HoM;MVzYO%-41XX<43{U2&oVa7QP=% zTFgmd#0{O8#3%?(sEPhp#1?}n52?u18X^;G zUYJ3s$>sPIO2ib0y?~^=l8}8E3p7|EEOSnO(jGVVF$}F64PWsgcyfd#z`cgw0-aIf2(X zvFCXC`A6_xtU0IX_ztIpk%@Ui zr_2)XP*_2D|E6-T1i}!9Rb^nW0*h8*MRayUw#kuLu}>w^8LEC;lyqXN9;~Z!%RWGc zk}_kjF<{*c4nVPH2qLM8|e` z6OzH0_RNWKI2H$XsvBilC-f*ey^H!#;=_{7k|M0xChXiS>|iwPk}B!Ln&R0_Utw0H z8}(OgK-&dT6r#a~y;@c$B!!t65lujZQ{hAx*#xwfWVcq>3893}G>W<^41Ux=t#wF+ zp2Ub5{|~ly%&0&I{vlC=G(-}~grz`_=WdjPc+N^lSVSC`Z!8BWsY(^bN~b<2ilhTZ zb^^bCt-o&D9o1#C=;hfCueQ{K@fz=tu&rNKhTFbvdtxbJ&TV|&1B!6%19Vw6ZYIpIF>dr1t>M5rXok}+HO|lOYZJ29D(gzdS^QQ-q^sIJrJ*X z9~KC<10U`uPFxCXiJ(R;K@Ej#!unG<&1C<@KY@I!PFbMCZlm_zglCTKBs$;-~ zAx8!a*ID#o>BLejbOr|oang*c@v?Ylh9CcNLl$x(i?d^(@CmDJ*$(X3>hYa9|8hZv z8TBG22btyetKJo~S;RF`2TpC+ zCJf4L)qoK-+!8BUIVy}tz~92GgpdU@rCtgtZv%?jn3+7VEv_i4lqq$&@iARNtZM5$3qvo_3%w#>sF z1c%@R;v%+YE=);W2d)h0hUntzfm4^nhSt8`zR(Mpr2}TiQm;5@WG3zQ_*54-U98c8;D27oOF#fM zK+3-s&uL)~RpA37aRIX9%yI+^3{|(vjE5?Wd}M2>MYo3b@)EhuPC=^~D*ptU!ebR> zrj7RwPK{pN73d{j&pL8RnQHB1$8>GrcTMZJwnbgp31&VVGLay7k$`z=3-y?Txq&Bm zdo6fT3o`O1wVNYvgpW;`QFv;ES(jQxM#3Tx3dfjslbUF?H${!TN|u6H*5Wy!iys84 zxcIq3p2XnL&;C@+EOAQM3>czB1G4DiB{_!?ldY^FUo%f;Y9&rB_eu-}L8$by35Bk} zhGTA@bG8wcuLzI|DOXG)Hk<0Qw5=kS`8WT%m>;-l55}4MI)WEFnjg}F8}$e?xHylq z@y5Bj;8#1lbDdMHIGh43Am(ylU!Nz=DJ2eb6oD93jaC;qS3^yG%TlbQB2bn`a#LF0?=V0Zl@yBekySM^Pu5{(F5`i`?8^Odbg6QY3 z(0BR3(J5T{kY+i5FYHr$JOlM{TpaQ~kan?;Hko@fv7bD$6Z?Rte6kNoB2PxMJNvWS zJZwvQK+$$oU;Ayh-Bk?SC2*uAU2T6BhhsCv#V#31;vwRt7L^TlCxcN#fF4WEhseNG z&4fgAD8%BeVWp9WH!g(HK!+4#F_G~{P1uBegkFRtr*yHS5$_x`H@T|#2loQXI=-G{ zUwpkq;>K^bmeox1Up{O{yUtf>9)Ar! zjK$|yII(osd|HKX=pzwU4v8p*u|9>FTn>i(Nhu-7wAR>>8CQr<3{ZrTrG&JCYQe;* z2OfHu$?S*x3i18HAx}bT4mtOKctlXRL=>uci9^?#AofeJNt7{9Gb0Cau%7t&7vF1= z8|4dE)v=gy{NR_}uY(4GH@+XAb~hh8%%eQZ|FmfbyW}JF2@^62J2*hp>o>4pJ%a}k zCRAu}-@bzlAx4xqkzz%Q`|@SfxRE11eERf#1Ud3vNs}j0rYo6_Wjb;%VUiQ~s#Q&G z<8bC2H?!s|ST?)C`qb)`IHN~95kXO-lc!IfsA%!jiT|o6tDUG2xpL{#Hf>b5X{lkL z#+56dI&C8I;zbQDRBFVfa%tPPr&*(Zx&)WX6)l@OU5Pt|N+-LWF2$wVNt-rLS}twv z)D>;hPeMO6*1QdIW}`wowc2*nsJ6@Ew6%hDbR4WpjC0164fEd1l_+tS1bJ^{Z+-cG za}++Dc*chIklQ=19Aa{N1P3~QPEh*v=+>cEM@~KY_37QAhZjGde0lTd(WfVP@O;97 z3*pDF=kVc0`}ZYkgjk$7NRhow!Y8)@RbmOIaf0fpo0oLLNt~KiE3GHgS{X{4(m1Pv zh`FeUDyqpoxy&nV_Ht^nubS!*g%|#k%9AOGApgRxOSE|Fg}FAVQAe)!>X3>}Hi4@K z4>t*MlPj{4Dl^jnQxe1+Pee;I%|6j$$)hl9<-*Sx`>d62#L3CEPF}%jw%Ka4ZNQTR z^vzBF;2bVL{UTz{x$C@>F1zix124}zxx=#`>;}b-Q1uW^R8jO0YEQmL<)e=w{3x}L zPK@H@C?q%aDM>(&)-@-M313Q~&^wGrwPr$VfiF>N^0 za>}PJ+p;v!w0y7?(o_r6!B#>m>P*?vB>yMW0RQ7OxJ)xmE+0$}mdH-!zSFL{JpUwA zyFv#Il;T496m-#zIqvwq@YsV6(vcC8Xwpe5O&QaOGQ}sOP2Kd=Qvq{RX(g7rS+$(m zbaJ)cqq@ZYce#Mw8d zf7cWkB!V+lSi6QIcGzK!FQyLSJ}veAlHb`WWSvQ#>lp(55<%x_-m~xK- z?zGc;Xr`G!mBulZC{)kPDYbkTum6my#Vxz=cv^|jLL4c-QnxXxO`9r2EjAo?lPT6l z!Aiuwt`cmxpOSSgzff3;t+S%+WbGQP^3@Y0Jy}=U5Yze^u=&)P%Z(6 zFVSmWI-!ZF7UVeG*er6qksRgXw4dfUXCKVzV0AvIxjO->a~RW8pBlC&(yj1xEnJj9 z3ZlC8z%Yh1tRd@07Q6Z=WFqsKT|> zBg!iPXB5AkhBI0~S{1&9uj?)8cy()qRiuJ7#0Y6fzp4>n9+NG?^u<>-Vv8p(!2%ZW zqdu=EEfURTM1y3^-oEk) z(ioDGU%}$5SjEYn5rrHNB;IU9d5@5W>WIBDCBZm&FxzcVgsl|epGMa(S#GD6(b-cj zahkgF@G^D4jFd2s3IDs3$h`Eh;RfMOQeNUYybx7+r!0EI5m4xRMrq zvI{O&BG+3K`V`YBiHr_Ki{H+r#Sn#4DBnyFQ4|M@*mU$u2vTI@VB(V6P>`g$xu8Y{ zcGBY5LzxrtU`tzSQxiT1mM$e7=t!8;obq&ajq0gS<1@^J=gYOkG87JC&E4Xp-Q1$8-% zjG)mAR@(ZOxc}%Ak8exXWWa*1v=|1FKdQkCu2460Rpu#2%25rb(3Hl=Gc!+V1!M%* z*w_5ZGX(6g0U1XctuC$`o25zPW&(={lEY>!hMW>DD7oOIR<#^47;E!kCsx9i$C`8H zY`b&9m{QD7y3M5w3-a4v0+-3feO*Hml3aQilOf5i$CM#LkLMzHPR`AUmp5WW>RPv{ zO7uuMP5}l_T(KMCW$~!U+YLEq6SH#8S!5uy=Bx6JDi%7*D+Y=dKqqps^##!&d8EBT zlI=2&`O#w-12sSPDnuJX(ubbrw8mU5Dl(eFk}w0JUTvao>(mTYa-`5lez;W@HQ+c> z(~8$@_WwbiJg-k|ElL;v>mwey;G0y7oE&SU$Hg}G#AaE`+>$Vbpfj@RXt?AiPg}TA z9#)>pBAkDj{IK?MUk-#b( zp$IWL0vM52qf2BFH4gQJ)M&KfO{fcBQ*m2nXjI`hGLl5s5~yhmb3I?lFOY$?O1n10 zEbg%g_C?j)~${9F#J>8*;stF>riSW9MW<*g1BX zJCJ^CrPmaeK&ENNp02_}JzG({O|mb2Iqi}`IhZ|M?m?7$5pFA$KOPw~y3<`VQBu%A z9sk9|yiZ|gxzC*@h$&hYYE*@=?pfw%9Hd0i@|b011~ISc3Sem^aYjN3T7RV)XO`4O zxJ2)3`KwZqz=f`Dh3G@tlUkMLvMbXZJ~ch6Lex&<)eyI;K_xa5Olb1aawu|VB5lcw zV=QAD2OGy5Df-fZAKT2)R`@Xe9Mw^$OB-gLJz96Ze5`y-<&K@XSpN3d$1U!Bfcflb zKeyUN8vdJ+qlt=~P^!4qQas^ zovvUh9?dci4Wbt7YozAyKm&Sezi`VeB< zl&fUI4!N>TB9aTr!Y%vAt^2%>%+&37){eYXBZ7hlLTrvf(oe*OrtoCt67+760%^?<(X(Fhf_Kr>ug+M1I6+wgHdqYmlsh4rRqkDoy|& z?ys(g;ufq{jAkgn1vI4M!cK1kDJjI(OT8N8yv~Fsb_Nr5ZX8G}6D=tBPHQ7(Y$IIJ z6)o~2U-2TfBL-U$7K;tHa4@&XW9o1b>(;{ubCLOa5&DR5A)?P9VzLNlau_4x35}85 zmQmcEu_vEOR9Yglx}ha_X2go312gb|B581H1&joad}<`)pr&s0Vk@GeNWP+LGFaFxaSg*(ll5_693I)5)b66VnQWK z1s2NTHpI`gIB{|`Wh9706hjdd7gI5vgA^aL6gd(kLo&#k&QEUfmQE66SWrcf<&qdcMi_ZM4E`gARQzr>4hs~4UYiKM22M_ zttMQ=qC@y6TPcicWBlB}IO>r_?(G~lXGAmQrM(8_ma5IrC zB|Vb|ZwNG_%m_&n32AcrP;)|6^FpO;`&@GwVbh3M;;C*==l_QC-CV+Pc)}XFiZ_j7 zkbXic1P3uZ4;H{GjuvCCh+q@!LRw_hH2`B=p5j{0Nk>@ZF(_?n2#lPj1STv z4$6z#uzHem^~|#a)04Bxfke~6CuAX%Y|kVLb8=)1=?qf^&GaJkGsnzyKQ*#VAyXCK z6ctlZKnoPvXi=7I3QtdR$$*fz926!i)Iv=&`Y^Om3w7MIY(t%^L-Ao$oQf!M%^|h4 zME7MUgh!KhGbvvIk18arN(1yx?=onjGB|9m*bvf!r73;|z&7qLdPFR21u!yC($uNX zG@}*rLIBHBYR0k8qS7id&@Lk}{jRj5JV{GuuS`TGO#jCeB-}wCF49>+Q6t&ZO|A7> z0aQ+3kxrdXW57eEOel14Y58WTGiB&ceeorWFf}REP~Fu~S<^M~!5JC#-5PaNf%52rsDnRZxi$`TxumM9>cAqLRNlMR!y!&YCuK`N<;w2 zNJT_180nA-30Sm5jAlYr!84oyZCJUgSjq3IMnzPTH88=HStUmW4RbNe6kB<=XQg8! z=af!2$JlJK$WA9gv#z(!60?AfJgUE4Tbo+bry}RffJNz0hLf?w}Rmq+jbIz7gb)L z(SBdS6@HiPxE6%d6EAsUC|JdkilQ4r12M$Y5ffKJ{^u&9Qby&eMhE3~&E4re0Iiq$(bdYFc9~ULHRoX-Ftnvxni=cZ`^rHUT%k*?Ij8;gyz&w$yWtXwU@p8FEo$Qb zYN9RaZ%1ln3eM1+vW1ZbNh?AbuyTZ0<^r+qt5$(UaI}Po2k=6mCMpE-cn6v^QloG_ z0}^%fAmR7j#vz-ixg~rf9sha(7VsCMBl?Q<`ik8lqDfJUH9D|4(j)n^fMaTfXz^mq zxaw5b>L9o!lR2eVda|VqrY{tx=fSyPS{=p>-PA!AUSXO&BB!l+r-=uUUxk~!C~87u zMbX-<1xzZ+sR}-XTe5-$ZuD9_BuF>pji4oAjYd{5<7voO0bOM*3%WF-W-3)yU{zVH zSlNkNqEv+Y-2kK{s5meMCa<}>yDu8B1v|V6TO-Gqj14rH>ohaP!a!?y_a2+d!HK zLRx{EPl6;Y2y1Ji93*-qyjzR)VaT_bqQzUhkIthFJEU{)22;1aO&W&SSb|Y{zV+L_ zT{^iiyT0+erSChY{UNinZyx*`nmyvPV?nfWrzNh|!28l)Pdoh#xvVKf3(gQ}uxM<% z;%_*kZcyVDprxIC6kWieL*h9!xB|}sgMV}ctd31&RkKzx^8@{+rolVZhU2+1orF-rT_3?wWae&eP8t2a<-1rq2`?iMxV; zw4}Acnt#e-8*0VlxaUTP z{S`=^=fbZ9uXy%;Jfd6u)s4Kb^V$``o7TNpfamnqWzdxtoA~f_rgZ6Jlolo5`}v4* z7=?Y?jJ@TFofzdI=H&siV}8G#(ainZzhyxdVxifkz0C{U+S#*sK1vd)^v@VW&>3l) zmuFO8PHj!r)Doi#9HU2kldr;xd_tp23TfW46J(bdGe$(+mwTSQ$l(x~hQ;})%dnf| zj021HME|!C6JZ%X@8KOprLO1q?j^qO0o%yiA@JJ)=>i|)by-`vwYJLmwuHGo*1L6& zStjLs<+Qx1JMjNLq6NRN3BUaf-*Y?qmtVz1*?-!p+C22d-ds(&sW-7efo5z z29--eVYRxXrHYnIF+EN7)Je;gR@**#>e*@AwpVP|CcRXpN?Nr$UtRj7wkKJhozAWm z%2b=+!P+i?iTMg>tHp~?34Pob3>Yn1z+Ccl>J($3uwKc!H}d1Xd+*Y{D+jb(I@0f2 zyM7Hjw(NGaYumm}+udzuo%_^5x8%JGa+wdB5q@l~a#y{d&Fa z-0M;AKE1p6@#M>MUr28|`t|JFyMGUV9zBWl>(ft&KRl~RylMHv-SQ~}mwH|jVUWSwATnJ1PRDb$UU5v7@CjYWCnWR+QVNtR%U zAsLrjis6ZBBaPNtI{lAecNJ@8$MX{PpVYM*|d>UR-D^G$RLM4=LB;DHIQ3etiM zI@lnD-AIU`IGv106HGypRTE!eP*FsdTeT9@B{AAX)QYeq71kwd!D8$cS^w?@*iLF4 z306>BS-TCiWVPa#TH2@;R40p>t4%kA^#ox|-MkC$yNRKt*(>GTi*LU7c0*Aw2$G2! zEWMQGX2Axx7H7f=(|KpZ4(oXwpMFmK+;xRQmmQ*wE~>G2lYR^`rJ0V5seGeyit<38 zu3S)n2b~(AEULgvA4jLA;}NS0o}>~vur^3yE8@&VEKQ5iB#u?-LTK(Q-Q=Vp5j7B@ z#V0!*8RLyhp{q?&n|v}Dw3|#7*fzHgW*1jDk$BnKI+6GZ(sI+(?qW~Nz1TP;j<`}u z;?x~eIj*Lpb7;M!c5vc}FU+`Y4?pg3o)S~sC!rY+YI$-RH@f-8A^(4F>3N}tPIBq) zrHs1DEaQjH$}p<}Aj~jlqz>)1=UjNJA-Vc}hh8tK8+911RWpPEno%Pk2BV zvh*y(Ql={*dQx{E0i`e=ER4s>&;i5NAw-4<36&~jA-f#P&VRex9q)Sgk_ZJ)Xe8>y z-(u3foWNx&Kf%OZ_F_FM5TOb%YQ;C6@{MnF4J%gEV)~4-EdO(rg)Gx*pZO}J6X7LM zZqu{Otj1v#;E_W~XQ`Js^fx#jrXyej8z8|57#ns7(tz&}B;yj;z}@Jk9T9A#o{&Sq z3i>H?m(y6GI_SX%V0fC@l%kZT#H5&6k``8cqL;#4LL1e* zW)_*s6S!0XY}KqL()iK|Fkpg+=A0W$WzOlwx~EGtS@We%YD%QYb}*gD?24%hT^ zu7gZuJL(FjUYr6IyD(wIiP z<1H9m<620%s&~DHtj%0)vyQ!@LKeMPhXVl{Sjgq6uobhMe+{KU4LT}3+IehwI;oz? zmh5Dyv#e$x4B^g(R>GbgZAoKj+E9H&9iicHY7;a#Ucy8uMgxN@a)lPB{p}{WrO7sQ zbcrGmK`2h_i56b*4YQeR6I)437JE|FuHi+e==vs2j7+yqRN*k}t8T8^1qM%a!?Fmz7T|6UeBPdqGNjHximY9&*oT1*# zDMBq1mRNazt6ddpTH&wpwv|oiMelhBxsH9p70ukH>wIYg3|_pszKo+Yo)U^@!|qvg zkK))v9c$nN4_Z?wTU|mHjqlEC_R=?;bf#gpDh?|Mo&=@o+6fR#2z-l0T$GNuO4slq$k1i zCNzWVV{cZ9J>L+9huPurS+hTy!mws<&sCR$x&w$=~ z*9mQCmTi=k`GyAz&wh4voE_5I*FM_2&vsZs!xYW9G^R1F4j9T^hjjmlEIN^<)hb)W zF^MWBE~J!mg#|@BQEuheqW^f*WEWF#1;2G9I7WHvQyAhza+F7Tl9zHwCJsDtTY8}v zuE0Jn(G5zGY*n^wIs;zO=0^jR4y@O6J~w+QsDdl_bKK@;`vhOSH($V@Fu_+G#}RcH zBpn%4Ub<`+Y=U};boTI+XOcE@2?@d_a! zQ}W{qpZA4EMuE{J7HC0RF>w^F;6&8)4V^$Wu8?qB)qsyTPFlbr4v2>yXEiG4OAs<~ z822*=*b<~?5?Mwp=8zyPsECWmh_km|yk~m=bysTEX7kloOJ{>OI61^ue0zo+9^->Q zC}=`>LecjrWam*zsQ-$gwS-g%OO@t|k!FQA0}@)+3a0=LT$m2?=O78E8ME>V$EG(E zh=Dw@Ravwa`qy_8_gl*K3R6UK+TaQ+LKYeKVovl4d5DKlGft>BWti|=G4X{KqBpU^ z6%9gq36fS@R){EwASl>~@hFe6$4|Uh4Qa*>l}KLz1snwxe3Ao@IcObu##r$7gP+88 z^M*S1R(;l|ichG7tQd=)1&b3|h3Pko9}ztE5)&f!fnqa0-~vF5c8l9ES;t z=ORZ!1Sm3x(KUHldVti2n+}z+SbXkK{%tjO175hJyhqkcOpL26>P{NQ#`okY(qP57~;?Ck<~Y z4Q6)@aQT+7M3-<0OVeNqvtW^zmVOxaZ(7z3>Hr}u!G*AL3YQ>^EYS_8K#nG7lEPC} z-SCss2pGill9Zu54ME8mL|K&l zV-l#xWvv$yP|2H(7z~XF419H!wgC)o24@MAiFQUsKEONml4N7AZM;VskM3SKtV6X`%c4SmGQ!vqi z%0`GZ$44btg6jYhy=kH>$P1@XUyE1`a2ARDgc}T04M(SynCO)evz%dRF@f@KS=UMI zk&p@|5MMV+p3;!lnS|omo!UvBP1>ZhKz=aPo#=Uy{{|ts*bu}5663IoE&&d~hzYI$ zE3JT`-vEb}7n&LOg(PP-W0Yf|sTK+M32+#P6n6#CLq)7nr?WP;LKuUjA_kz|e?q=BeC9iM{uG zx#5q=X=iw*ssjm~loF(aMx92QS=JX1v?>kR8J@gKvLy?bl}4U<39J+Om!_4hp;8XC zBogui3#agf`uQ_wikfefMV&yW8dr@!rk_4*Hep&->ADke$gVl2v<{fAE3&RQS^rJx z8WTpQH^Jz$FaZnp`hn@t3&he3VCM&t%IStd03aa3w z(;y9%yRztMOW;6DFjJTz@ug%sWrx~3!HAl%xe{6AnBgi$Q|n_s8;9qLjMciddHA$K z!J1O*fbD`~e{-m2nmj=15;E7Qs8COn%9JNzwsCu2YsxzDhdoJ+Zy%m2B5?iu`%WLj_eZpDb~U#Dc=y<*0-vP@q6}9ueE+@cP{V7B%4ciC zsjRlw>$be-dpm5sDQJ(2IGk8X#J#`{5A=^Xn8fME#OeE^lVvi;40cicV6pEYphA%ui$SMs0g^z;6Yuhc z#@k)brmrPI%Ijbbq)f`tyUI80%F^q$ByG|rT@7xFy>I5Ww0y%c{8qfTskoeG#JS6H z)|Cb|L8rPZ%pBzW0V%%ly8#8o%=^4bZ&Q((DY^?ElnHjm=Z73Z^jCVLT0B ztiNYmxt^;IZmdJHFt6Ysa9uhMbZoQTpvNnr$MNj6VT#Cf>SL~8t_sYi1|7*o3x_MY z34OhinxF}o0N8&G*u1OAq#4P1sI<_U$?s#)Wfg)QU4k0z!u{IO{3_BTjlCz$*`3YV zl`3w%(9)=o*>kJIE82*;%(pZ;syBLP{FOm~281G{u~5vuMh&t|dc|5C)mQD?zum=` z3*1^=xn^A4{p-2qoI~eOz?guGGkex-ozAQY4q0^8cxV@{@WK8J!I*%I2&z1r5ZIv! z*yX*FSAYcsO5Sryr`eDVY9Y|u4Z;$v-SNy4^(mXrs{cRF_NXP=(W3m{0UpE9%gS-< z*$0l`(yPP1SE(#r+N|uN@~GON+IvcOqZ0(%gCbD~nXwdAXq|G~jfdZ|V)l%)- zC$8dI%nYWW3e!B?zMa)wZININGX<>9Zrpxs&83X#3O4Hs;85M)AmkZ03Y(C--T*XdTPUN&S{0OP(uU&0y^4 zkuJ^3u$M3n<1voST-~{mb`Ga7g`oltvEb=st^W>icn;@~T0*XoYkk&=?0*^T-3bWS zYH2OiqeOXoD4*|faMsjavDqxe&HZN+SNgR9xcGyyDa> z>G|#q%;3~eiVXYC446LL#eL0_=ElT|4h0;#7m=)}4ie`84iGQoEFt8j+qBg*-45sq zqmamftqBTT>$D5lb86)R&Fi{8>?tqbihb<+`K*j-H_jfjryw}f{@-ja%GI0g+s^YR zt;1F6?Y!{W;2y9p-NW&?w{SAVGZ?Y?75|p$+u@}%)FGaVQ{2pwd*WBE?<&sk%)sx` z?5ne&3|>$6UN7)dP2*u4TFn4E7$!6SLFyL)y0LKT=kV~S-VzmG@qv8L=^DtCm&lRq z3YPHKg-`gbIqbY%@+v><{=D+wde7*ZsIY<>82C;pK`a_A?bL4b176xa5Bi+_X2GD~ zNEhd4YxGB-+DV^RyWI2WpDh( zp9*@Q2YYb2vw#f7-^Brc_E(J#=MY2wQGV4gGdGk&q8{;fpAK~|@ocU46`#n}YV3|L z(4$cD5bOn5fC-jx1)~6m9-R1^u>bgs&-i{E`FN=8KLZfmI-Tl9&Y;0wtz?-aXD(ej za}gy*TvyGaIg1%JRs+`2<42GoMUEutQ5Y&=AcLVS`B5V(RKPZBTvyZPO`JB_?c~|B z-A|xEd&xp2s~0UgImx?_a=voed^T_*r4Zh?y}Xyx8$$$dMhJ(z9n(DpQ$F zrCNn-S>$J-MUN(3`W!lR%}&KacTSe7Q?kyfqfL7@ZE&&AoqITL+-`8eg%95r{M#!` zm`1t6)6e{=OJ zzHj{Fy1i=E>eWF2VQHnDh#q=qB6BLb2qTO(YU#m}ev$B(kS6qKrI=J=3Bryn;w7e; zX3A+qoq94csGyPphA5+ua_YqwrHaZb8n4RAD;%{ltDdmV^6{*-f`n^Gy6D2oF20iN zD=@#5aYmZN3Og*y#3Zxw%Ey-3Bac-UTLziSG}~;IS(JgSG&IpX2exLKQRPipP_s>) z-D*?Ey>xiX^S5(`^V1tlz(_7R_cZYWjQ7TK@4G8nAVL#MlA|sN6Xu$?G;t;|KDFmihV1xD57F2?f z@S|Qf+!dH)gOMpjnn)bc#1m0Oah(s1S_ejMmx5}>8pFLYM{;%i@!Yb4Tx-a-;)$!s zc#gbF$t9VTW|hs5fl^Ats9ek$ECcp(na>_WCJ#N3kqk^#Fw;zx&Kyf~;%A^SC6?Dz zk?l0pTD#3oSxy0Gw?0QE*-znK83mK;lp95pE2_{UQumnC1QSavxdM~#aK;3^Y&0=1 zy>K+`^l0hc3w1vCz+vxH{`@N^KUT{r#~=X-L@>dOZq=0|j+XuC*p7rX`|Oi=>9y>W zQW87aUY>>4BL8WnrIsgafl_Lnp|tHbMyO;AcW`^kEf-zH!BUqkcHuQr-o5IzSDA)Y zF+~+*273k>%&BZl;K&FTeRR^7S>+2-Mz>NKhQ;Iz8D%Ig&2rdOX@=yEJ+8C1bKE1j z&)-oVj=52acO@G_alRtwow2~8xto)VbklIE&*tT9s@Gn7qmj-u(WT|9&(v*PX~mUp z^25*7tI2sa)~z*?C?l~+I{W_nVKVz9U+Q1U?YW7lZY8?gPV(lCcI<5^sOZJE{`Qm^ zxr1;uGF(>@cR_kAE-mbOm*e6EIVIWaFU)vTXgJ3iCz;|4sfZHj3Z^<{lum}COGOt} zLAopzZ2w?ja#&_kp^8~RLw2&zgD5n1j%nzQW4~i!EJOwzD3(lkp8`jvinobLc_V0E zSl)Fs@kL8m0SnimSvJg=y`pL2c-!Nid9(+e>UjfGoch#w!dJdhIjwx>OP~7GXElb9 zLqNSi&_*T_w)%Mle~UaDv4ml^4;gE15Bdcvcma|CW@LZ_EMVUBmK1g@P!`m9ptq(X z!3kQWf?vTP;xsr94tlUIN774@MEI9ytU?t|8VoaLkqThyVTFouA?b`ULu3*x4_`<| zGLg9$WXz&rVge#Enn9Xb=phWY+f8Vg_|4$0#xQqksnV?`*Oa7D+Q?(oCjQr7G=YOB1M+c8C%frBsTHYMM%%f@P;XO_xs__c(dc%cw^k z4CiLyjHOOV89!8oFj=9)9A@=kd1xlVzM2g5rnkIbT?Q+-kP7uKgS}wIp~0k?8DWOu z3!;F=HQOYbw|+BZvdB%%?8=Si{K*^K2+xASlQV8qM`wZ!2PUxK&!C}^jiazaKG7I7 zD{$vh0v%{(=h!LsY-2f~z0WwlAzI&DEus;DNg>VAksFH*w!aXDFC_U|N9GR|iyTQw zM`97V2~f8y_3dw$LJb!6!pVR8mQAIy%CWGLxno(JJYf0Uxj-&*l4BBKDF3$#>>{SA zsW6i<5XKqs(l;5Y_yQ}`duKeScMmp1FER4$)%j*MGRUwhRJod&v$pAW0cIjYLl&H- zp$x%!^#(X7)!^tf$2(-q9?XQ6J;Vw$8t65p7q)-{9AE+yTL?oKKNi+WhAiZcg2c!V3gD7^+ft`MSr$f_ zvQth8t_fC&BN?lJsxk7M3}U3h z&v$ln9{kO3`1TpkfTpil@nwo2Zbq7xdl<$R&FFJD(TO7iN2G_tjsH=o6Fm&xRED+3 zjVnyS64iqlt3fR^HfloU*VAVy4y#WMi@JE(^WJv^RVw+=`o*>`twdlFj2uq{*eU_` zuYV=%O2UCyFo{Fe<8W+L*dp1!m=H|34(-=^;R|2XV(L`4x+72l2Qi?c7U-Ytvv+)wUbm#$y5%jku+6Qt^P9J`vMVE(ajUy> z>oPD?H@w(8dr6F60=&XFoiBhm$S?*|z^cR>6UIv~KTCx@unf>+g(u*HJ3EF)$b(1F zvpoR8FEBySOD{kRG|rJYf>lJvb_! z>ft?Z$c8E4fldoP;(IyD0 zV=_EKQiKdUB&MG!IS4gfJ35dK^Af z^C#;e!+}zi>mWyOAjhTQtf3n%H!M1H=sx%nKRUF-VEHwU`om$1gZcAAjLb-kgb76) zME0{fn0Ny?P`0n@C|_U+vWrAX9H5nAhe~{);Q!h-S;)kusIudtAj8SBEz2MUBocKK zDkNdI2b7X!_#wvl930Gp7PPY%A{byA9rOwl!V9>8Bf%Bg13UY-V=#t2-~-M>ug>EG zDEP`bYr!s9Azw_!sQe+t^9<3!K~)$XX;d@;yT(%pgD^M+;1C5c0LS5og{B$EL?I9G zIL8d*z3s6CEU<#0$tUdz8p;YoNU4M{l1wzR%%Ew$=TkK~8imC)sGxz4@G(e)OvtT? z!=(cTI|MdhA-`bJ$gexeIDk#s48*LXO=0jzRM>(y07+yc$@^IeJ|r8JTuHm3L~9|g zcMv6-EG|=$yX3OFp7crRiY_t>jKsJMUjLdZW|%Wp0H(`Wyj6IFW5P39%mXg?g3n6@ zD6qUe@V65@2KnU55G02A+=DML0zHt=V_=0m_|NdnO10F3C#b+?oI%Pl1-BHPxonfS ziiIIGnN#qBSdb#&0L*j}NW$E`>UkMa%b5=QtL>S`>L~?FsDuu)f=tkaFRUjP%}g&G zK2^K9&s3DbTtnj!Ez{hZWGR-VTTRxKNVBQUjJ!G`g-x$JQa`*p^;^F~Jho)(u^(&1 zlq89hVoBsg5#mY;Z5ySUL@pdrF0qi#>3oY(6thw^MeMqa%=w(6WHY!-239ZyR`3k2 zOv@8w1wAl=C(y;Se1tDpLH-<6{{Q4k5ahi63_%;>&s2DVE?@=u{7y(s##G>fAxIeY z@+!Ctv}I^e2X(95sL+h_g18bM3{|7_C`@#Oxqqt1E1*nE$b_6D(QE+GN?6Q*`X^MA z%)iPxU4@h@7)>IkNNl1l^2n^{3AYIL0V9j1pQjDyHJ)~AYv;~XAR$aJO zKLo_wTtBMAy7zO0lC%&A0UP5yPP99qZtE6xh%!^UNmUBd9@$B>KsQlD(=^4-DB&D5 z>m@IlH-b4m(*e&|L`FR0$}Y%*E*OF?*t5$cREk|n%izjK(8WUC10&!AW8hC#AjXf) zGp_uCJm3R74ZZDB&>4gVm;de527OR*iUlw5g1nNnQK;G68xIe?IbQ`sFtP$GsK*v9 zQK5O6QV^pUz=EGOT7L2{=R-A|38?Wf$AelL7mG1vUDjXgJ|BJ7AdOaF!&Z#cR$U-l zYefaJ)k9nO*7Fk9KkI>3o6`mQy09e&IasPz(5SqXs=XQ27z6S%ebLg{M>}Q3_akIJi|QsOhJdu zg91HERw!K_j$K_$yb#37i!}yde{2rU;gc1jqFynMZW>AO>MOWUC87k zwbqLy(zgv3TW|zs3kGEqR|e(<2hQ7#IJ;{3zb$o#f zlHM>1Q9V8^;agEZwgMk8f$T-2N{E3$#kPa_EjyywDmB^>$4hh5C>(A zh+cT)VE;&#`;}x$hRsdxWSXvNn@(Gs?qnj>)=;KaVA0ld4HnfzA%@RQS^RtiU!>S>{?8EP3_yhf zX~s%y=HYGTN+?iWB+ghq=z~6Z&ulh^fa}U27F~BnMjT89WKc#cu4k9MXD)7{Q@{ix zzyvYg+2ToGN#Q-1!yXbl=vuXcN}xNoHeHb2b12~iCAgi#t@i}XRItdLPHtT|?pjc8n=bB7=INN85IuY( z{Qvotu_5ZBHfl?9U@XO(CVST{h3W>%WvV9AGIbZM9x4$Y;eM$u&LCz&vopq{vlYU; z^s?((Bvc^Y1GgSxI#bFZ7P!*gYi)*ty(T=>4Z-i+gShVDfct_M#L7W6RQ#4x5kv+J zpJ!xH?0Wtt7v!2+=ps00%j zS{5w@%Ea*(wVq5^%vfzv5#4NI9qIYl?cPr5-(KloE^LGux>_biI(n#?KWyD2L_z*zqE5|rhqb7C<>{*GM!Scdu6Uy`m(ED?=hP$fB%&d z?Rt~Q*e>`Q0B%5$za6j2ycA?`^*UWvSa88s=T%^Z_T+2QO@)&U;z2mjd8ZNZI&uft9TFhS4_zv5ZA7<_JQCISa9aNgu7@lhDU zAuJx6`J$Im4%%*UQJZKNA6gU*j~n;n(Kbr@~01=n=Ec4DkF*>3KGjOFy!y=K4ubW)%60e^4{k5m!N@6c6Q z)~RCPRV)7DVthWC;DGGqDDhYjX!j_dn!TCj!5J~iCqDL7(suTD#NG~@cI=&YO@IN2 z#$!MJY&foVKaNqd7n;85&y z2K;zn_ME|^H^*2rtU~$p!q|(Ya7KO4t%UR+PQ01lVPa^0RljBs48gtrg1Y}6bz+e4 z1lPsp9|o^<{^-AER_Fr-*TrFYbtFDrvP7>+HEh^ve?U_`Q;>RDxZ>ae2T`a3*t4P| z6zGAD!kc*+fUv{^3l=My4r&@Ts#K{_mP%#Irm0e14!|2Q6X2DA8cHa5g2nvgvIn&z|4Df&1C*TeoiIjv__cYbn!U!InBj1&Wtb zUskVT&5BhQ*REb2#lfWum)Nmn&*HKb#}-?;=FX)#i!Ob-vstNDG0UEP*{bWy zz9$PWp4FaIdyFL`PwW_b@~e!&C-x{$9#-)8K>6~B82|o#_V72%BYW`CM;=e)0mUP% zBv{{n!}PaDAH|viV7Q$!VD(oS13^IFk@x?00u*jk^${?ePDW=Ra ziz%u=lVgtO@W^8eT;}pWgf=6j4Scr4&<# zKIK#}yi691U5{Qxmsw`Tfr?pgy%k3swP4!mSzc)>X2xO$wr%O$>!EiwNttj$CMQ<>V8Q_~WMWAs zm00a2nQ&@Ui4|R1kx9@A*>sRieg3&qpo13GjW~stV~*U1Hl^rf!jPI(T%C@k7F(X4 zh00ohdkShCqI#9LsaB<$DyyuzdRVNC&04u)kKL;4DR96chUakXYT2!_tV8Uuuek=B zJ`7?lR#nV~lspm}{+`jLmBm zdFa9=^8hkdkirxzGMSE0h9hXOY-R+EMHv5#fQbasOd*(frjlGZimE9@f*H9}M~GID zuwCsWPQ%&{Ja__%d<`KcWJuSnW;HHhq-<8oQw(LeHntT7ZgbnAq8wE!P}pLKx(MQ> z#Nw$ZGEq~vXd>Yd3dJZ66f0_p=&7vu7c6E`i`59s7r|&5%=AJt?HDOZM@p<-Or~^e zbj`6;m#jF-agMOFqi}>nyFA_wcenNWT*>~iWJW+R}n8(Jd!*fx}|-T%Afz_ zVF(4PULXErFoO}SK%snu_ZSpC3+!MBwM@k$K1m?$Wr%$1<5!CG#UDxD%NTs%0x^(5 zj8u>!7103M{!peeWC9Rnqj;Gpu;Bj%XeP-OJ$q7@eV017~VU$NFgPB&1v2rEdu1P!7j#~j^r7Kn4>X;Q% zna-4^v#Z^5n8U|yO-Fdx(GKy{g^Y3ym8{3O%yUKF#?_VQyMfoW(M#bCw6 zOnFuC;l~L>c)$+mlc0hPBVidv-&)sazAh-NLVQStF-Y-*>yW~heBED;Na4S81Qupq zNZBa7z*uNHWPvy95=U&3l7;^qWFsC4TS}^iHLIDB6JDx>2}BSBAN(Lp3<<4f+w`R( zCuC=q7)1-Ouv*rJLxydOtqsdz+os%hhf=Xc;(SpHBobZQ8ZZL#F-Rfc{7{Quc;SKLiKV(@nfJW7p<^BGIJN$onXl;yJlDLu_QtL3j-~>JpqZoZa7{DMjj12p$ z7|6qeSf}R%CpcgTsDwfn^6<&B4!94;K6Z!wlb;Up$2_TEg&vH$iYMHQ6vJF`Uqx|D znGJBpmO$W-QifO;J`n$CJHx`4HIk4bV}v1BYtxjz#I$jS#ZYj94rV?JL}3U!aDs(9 z>4bvyVefa}_FBz1pbm*UUI5~c6O51wV(is^A={rS{0EI#xWWsVaD~0OVZa+#Qxi9{ zrX_r!GdQ_qBSin^(nADpi71Cwv>Wk(!(kAEi+ITg2Eo#jr}S{1X*PoRMu^63k|Z&A zylsX8Io+(H3%^M*&MXg$r)cqpB)s7k;upWC77Dmq%$bROu2kOk;tOHa0_Z_U1uurK z=)!1}i?T}kX1KeK$fy+5iPvjXU9-#sJ*1cHPz!r;T_1T}cM#HckliYn-MbtWdq@b| zQ4+@NM=1dtDM3LL?8mVcgTNFBE8LwZ2}pu;feAvv4unr9RaM?a72p*NC@qNM-Cckr z$g#N+A83!h+!89SLNpj*=Go8wL_^G=j3|VGEBIBCz)S<>jFK=A3h}_}X@r=lMAl@D zM;Hx~9i0D|R05R!z|s5wkCkEViHY(3fRSZQmSDk_(H;bG+1Wf_+C-o9eH``CjaNv; zn>AMv(VQ*Ffh1sx_&I_cFaZ<5K^)M+_(>vKjGw32Li#n)SRfAjX$Abr-(+Y?rBFuw z`9d(L3KnV9(IFlGZPz-GMgR)nc-cb%8ejru-2yV;9_f_VF@tr?7c+dvU8#cEg$H}A zUAwSde`L=OMob_0nzrFxff&q%L}R}+$R03TSmlAR6-+UB<0C);;dPR=U6sLr5-TWP zDpcEsSz8B=n0chwiD4cRw#X5-8v!w4>5(24E(x9}NjQ{(74X28!QPgo1ZnXY8wTVX zGEM(Qa6)KxNt8tyl!aj_7)=Rr!j$}gCWMwaal(~M!4y<5#du>08cg5iffMY&4n#q+CCDQvTlLh(fEY|4 zAdgj*qrr@0-gO9h^g$|^)#aTVupJ>imZlMYo+!*1=!pV1M4@X6i722RzWrl1c+LOU zEQCf7+0YoAk#)q=FeFEi5X7C~nuJi4Z3Nad4a8-QII&YiSj0(8Nyc%>6-*OCjDjn; zLN;teck;wanpsO8N?jb0AkHLND3m19LLA6}rnIN{t>=3N<$PA+LS5ob(%hQ?9ay{p z6EG!Spn@&b0!8VCphZ`!yh>H_U*%B4D|Q!GcI7O>RMj0Iv|t@BlBIj?qBEf7sg2w3 z0AqcnLhVE!aX( z-X{~?f>H_&Q!*tSyn%oYD9;(_fkuvkE+{Zu#yXS~gtF1pmDg7ype<&dO&JGHm8Ds7 z3v~q2AW0xl4N~zC1G>EnyWrCMbXZ=F&nIo$CtVdadSl)}=7Kqa1t>@{I6)L7NE8rW ziAvZIKxSg%LE_Cv;uR)kDrpLWtM~jzl4??gmB+Xph*4eXX~se-h=Ttq#KM-+Tj?!H zYcffWVL~<}Nej`0N@(nq2wc@HHI0%*+0{VV*KowdEe%P$Q=e|EB?u}7 zZD(saP&Op0D|A9980yY;!YQ;uE5O3gf)w2pEy+bHR|sNx0?wu4f_lywe6lAbYN|~J zB`wH7*3!bLvS-%HfvmoPB#5faEfjnzC0J+*=RBgOID%5D-1Tirn+4jfPGzn#8vg|Y zYWV7Q0qYtOYq46Wdf}0>zLy_uOHYkmtD%P?siV6nk1a9Jt9KRIC+F1fB?4Y5Bm)z7xo50!3P6^-@G=-RVX| z83vgl#D$4Ud?eF!dU{osVU!&bhFZ3UG_3g1t-GpjdSbEw`k>!S(ntVy%1il(Ez}q`TTuwbgxiP_1LfKsfy~FmY~wc;1A%xWHd+rK2p<0w;6WY)>5xj8ID)a^byB^S zYwPN(k?JK79$ST+)qh+EFd4xU?13KWu^x*;Ua5kMrHqy~EGBpX@+OdMDo~AC!t>U| zMi6A|?OxcRX(=dK8H&IOfP@cJuadpZyMPE1Uu-@UJIu4k-9@EoYE25)d2%)uej zLN4UO_|ZZ%Q!pG{Fi(bJ2}dHH!7ZC54uLw?bJeZguHpQF9_BVyv9PJJ_0S;a;sIkOh~VV` zC4gfTz#tzmroaSVf)JjyRn;0Rn}LKN5C-Nj{406z!R3|*e^eJe549EZpQSxv` z9Qj&-K|sVtXl$0vY?j4uEX%TNp~lfd#-Z^tC^Ylh`ma(V6cV|dHJ@r7Ol>1J;u|nC z=ez+ML~|WT!l@eeG)H1hW-T2g^BgoHGPfrj%)zP7XMU~)Z?Q1lq9Qs^jykV1-?lS^ zdL=E&^BwuH?bwcnj+)_42iT>8*oEjmzgqu$Slci_(!AusVwx2nyiyeJfey;9H1dJF zdZSjEPvV)NNsDoiM%4p2Kp#*-AK-yT7YvZnhem%A=SH+hTV`<&0pV2@=W+-%eo}^T z<|=RxEFEDg=y6^FGCp#F7X(SnB+w|d=8{Y&CKR;;T?x=|Awwih2&HN8b#ErfKn$E= za4y-Jfbt2LfJE|)CNH=K!IMl_&`Aav1y$^xY^TM(^89w(E3h?Y1TX-bc>Kv9D1@Tg z_UGD$BHDUwTr0B>G@>*ccGgmJjvuxp=yiKqFcS!NW6K<6-$K^X=TJ700b_P%oAV2E zHmsl&4J#cx->|U8v#}!UX{YwGI-vilK_Gp#SX&k&-r?avI7ZJ9Ouz#`w{%BAnrkK)qj|wt4<(dz-uVH22+ZM4%%its z95W0Qcn`r~(hzh3hvW|_@U|YL+A0ul!*(7Qn7UydPyz{7lE4IM-E2Z+g1!lyz}cxv zRK${{p=OnnL`q}~JlPM(z!}PblcgaEVb&OWM4mb)(ah|f)Wn`-!%omI{mRy&8m)=< zf{7bi{Rx9E#3YKVMSt#Oe>!4&wx^~PHmWLf%+>gf+vKV8cw^52GbghgL^EPztsLa| zE#!icA36Ckl%Aom+|F&2KhFP?H%63S<l%>aflw|fvJDN9`i9i8c-N;K@af2YC<6bA@Y(? z$(A{gHN`qg1Q`k~_0T}|87^7yA$Wp&$$YO7XCsRCubf3QtDc92_eG)wlpN3++`K_ndZsWP^W zYb`ZTv%mj4`I+BAao_(#og9-(OnLxBZYK%J|U5UVD4-^7|JsFJZ!J6*gShRvg7~Zr!TY81gMzjU~ykEQihIIZTu^ z5t3xiWjc{)l{S6)bfn9)xQKK+a(npgxKbR$f#@FFEqU=qa(MJ@5d2OQMG#EMERv0@ak!qOxYD}Jzq z6Q?Xe%BWDALW&chlsc-aPl1vlDy3Xq%Bfnr(v(vxEMY4fO)6Q7Emt&g1+KY_wd<}| z_}VM5W(hmYu*Fbu>@nM5qa_YF*kEIhIoN1o4mdPpgNbe}Lk-<@W3y}y(oD1L+SzKm z&9>ckb0m)4g4?&aetl66;O7LMPCDy=$u5}czFT-a@zi@bJ@(?8xV?Gkp|3vt^2={O z{`~)gCqM#4KJb|Y4P?e5WgwJrl@l|3nL}ebWaWz-ba*04oT=}Ei^jR9ls9nB{@x8dDZ`) zmtM&1#YOpA^xaoDe}@AYe}SDN*kDvpN!U6I^G?IU12F@dhhh}N7=1Lxv5v*#WB(D5 z$O_~PlO3pK##q@hTDFRpX^2C|K!~39@B|&eZAp0`1}kP{reeUTPCknQ&K`lZ5;5s# zWP$=7sIr2Ts`8BPc;PGttdQe29V*`cRA) zbrDB>zyp-tw5C1$Oix2_0z_7UB4Q9OP=y;5DMTSC#&IJSqu7W{xbc!v^aOKbvB_D$ zGOD0hArm&)Ng|(8E7hGYbw(*lDO%?`u2{tqNh35 z*oIy30*m4q4|#@3jACq2%f-L}m$=NH9L{H&(4girauDD5%q55Mr7IGfF{Uq#Nt^Yt zuYLAP%q{Fizu(x8IQUBrFqWe~=1iwL!SEjdt-~DwvV(vJJYWJRw!nEb(19I`V8|$_ zAbT1k6{~^oWEGSo{)td^j0H(V!40S8@lu$W$tVt`lT5K?bCuwU=_vUFPJRC+RHI|cs*+-f zs&w@SRbgZz$)c3l$;48h!^x<|f)-$jg;%b?1hG(Amu+aHE_!(-EDw{dH@qR2xwMR8 zBw>rvh-NmXk;ELt_pUkAK{axyLuphqhbAnOG?5T(Xldat&T>l*?h4JdO7qP2xlcE? zfCKY(g9>Zv0-N{KCUU&loPvoH6~HKG0MAK4hp96??1Yay->I<&dhBBWqTql?rXXab zLKXX520mHwPk<(47zNQ&(2OC_xVdRdIdd99*i<7NUGZln+M!O51XH&;!4E;i!%Xv_ zB(HHvj6d_QksM%wB^LNdN7|tnOS)2!Vsu72^bw43#0noFjiLWNg+dqLl!GqtfkY>I z<5B0R)Wqp=6i$7rOmsz6naqS&VBwS{eBcA8*hF<-v5BeD>I1Ae(h@QF0a}Z~l~AQ> zR9y)x?V2LHw8)iHY}spGG4YDNc0(J0{Yzg4i@d~aVF}lhmSZO~8OhMX7OO#5Yfdv+ z&{}4*qs`1{>0D>g`Z6@aOy*|M<=WR$6Bn|jZEoVg1lw9Ox4YeDZ>7@^qg90UJKFeF)6!jrRZUP({d&UQ}4Fg9n zs$oO5w6iWzElBzOS$(ynq$T2k5=YE0NxfF!0vp()Q$zm~OzkFZB;|LDY9o@<#&|U> z<}{2FCE5_W@S!ezI3g24Tv7*xiN?i3#oX9qN_bEyE0jWWnxdprP{*mCcuL1$35pD4 z@Pj3Dh2Wv`v0GCmyIQgJCY<1uR(*^rv8W|j!^#FKHPH!FW?37pbmd_Gf(lT;VGCP8 ztSz8bt;k@@GQC{$G9Q~-I$vhAt+DgYO&glZu#3;Ac_uXLm780@!4bQG0~6$j3;HEm z(Z^wQbQ}$7Ne{QUmA>?OGF>s|a(X|WmhN<`i@{VNW1q>mNHYA1p_b|C5v*wS+!GSC zRFr53GUC!e@_?rs{iueNKx3Bp;0Gvf(MMv0TH*iEUMS-yt2Njl=!9Y$?lnhQT3NbDvE)GX*gW+4@3VS^|H z8QM;u#Op+2X6{mC4^U(n_Ml64;0t7A7+(M6OKj+9a?NcnicE%}z@UKicIau2NJ^T` zO2Ve3cnE9?>;k67z+fucL`q7a#-_HUO320u#;EY5q;B#cX?_OW?rsMjUkQ-WJi;x;#1lxDX_wj9Eq)N zOy9yHkvL)dc%a@iA#=_GuTV*^_zL|*ZsY*NpajM zy6$4W&bh)afB<}$nUh%9d7#@vaGEf8037yhO8@DmjLQn+b3A+3vWX92+5=0rW zYoC~*pHPh$_@E0&goI|3gkU5_aK<)6M2#!}A{W95wn#|uK#KYcM(jq4gsP=lDhe~w zYYc4jJc>7)6HV-fH!qJjm&iJ;^8p@UhoA^csE9^j$`6d>@glDX^MHr?AoVKjjEW`) zHVoYyf{hTTBRC=q8m0Gaau53mQ~IbUE5{RcLR2bcu9TuDs?sWP3@b>5;ACKQR_72c z3Hy}H5;q4}KId~P=TfdfCQ>3LGy#=fp%ct6QfUNAponXr zCJ$;T*Ul(UU=wccZfI^VBP1dgbdMAWrBOJdQ1(z1upq@SVG43*ls>7(AWkM+2ay&r z``T(MyCNteaVm|%bxbF$J_+J(!r#oo;qVPDM#4j-YOh3bM2F`r)iOmr;S?S%JK*op zUQ{w_p){n2%{Wip*3JA?rPrIbpmv|&0E1Q)1*o(qDybR4ORWD=xh&<;ZINfjgn)&7YFTWu9O z^^De3p-SjyoFF4%=ttDVQhy}ckR(Wg?W003Y*Z>cE#LyAglwurA{_t=qog{0NFk@@ zZl~CNIBK$NFs^}f8^YLCcH=}Pe?%ySs@nah(1>}j|#;L@RO=`vM0jtC5V!f zp5jv6Dz1K2RcxiJScOz%rFQmh$K(nuZp>MKg;&HvEIbrMQE3}mp%Y-?EL&k)LBU(I zLlsfM7X1I>MP;cj;{aVv14#dG4nU(@%%u+KfDQ;VG`IzHOV@Pm%oh0%UnAjrH0v(? z)ixXf4$5^E-=`U!(S8p07yL(IF>qlE#u^=VJRnxNym17d%hSj%W1T?-(UBQUO&Qwm zgGRR1e1>Tr!HwLA6@+9-oYsKCCE@)j~7d1z^Si1IMcqjo?C{suSUWFcUL6|VO7Ky^*%2yDC7#Bef?#ugJG z#S0b(3n(Z2#)2l;%5r#OR6YfDD#4R(f>w@8b%ab*xXKb$SdkLxEJpvO zlR?;6n2UoniuDYP^-|A@R9;?g73H8Vlg@T;myO$4o8VY~F4G#Xv5xH+x$roTj~5*I z_+r8IKv3pmSH=ZFHe_Mukmt^4IyHNHhVRHGZu)N8DvFAT1WM-SX*kMAq-G$~H@^%O zO?E(NVX8~4BuI{gN+j}#t`JRvXr;8qrlzfGv?fc8B-rX^ib@Zc-=q&pC~ydZjVMAC zoWKb3Aea*;f(0es^r$3Wg7|bLc4DGZjPI+QqQ+3?Kp&26@zz&I$C65zDJuU_$0}5= zqBVEUSy+5nue9I_uHX_rL2>6<{Xii_8}~2rd7t~)pXn@hdz5v_go8}7{%|P{&Unyl_qIG5V1O$aDv*ChT6i7C(oUM4j8~;cQyg15 z)HXJdS+hcD+K_MB)rjE>zJMNkhNt;JN@~b#wj@p9gp!4gObE}2(!}sM52lpO4<3?d zJu0fThG*+HAzA8B>$ixkt)r?sYs6^2S$U%(>_>J6N+JrV@*v#`!X-%|559m4xPT+p z&BH}uBtZO_a{?wVrN*X8u4rdfwu&nzPLsIe#t!aPCaIF{Hd!Z>hBg03RB*VIgryVM zIVDEaojsuwF2NJj4@F5EFkW$%;^16UTQF@gwLteiJ$lv*=00xy9rF!ptq$Cq}<9omkGFKp+9$vTLa7;`re6@7-6@1 zVgt}N`nZw%I4bjhx+$dRxXz#ZxTHIQsC#3$lr;MoOcUf806CCb)4OdNyo~`xw)X~c zFwr03PM)BPo+fIH#AvE0zd$NU!aCTFh`u>WORBT-st|tv27p6dP(Pic{NNxdPr<3g zYbsAX$%fU#I=;+gh!m++U8{Hi1{y#B zOdyf8N~{jiku+&3j5R7?91%0A$bh0K8cr=@XD7hD5I_I%oHs7r=K@<>K?{oD2;O~h z{ReVu30fTR4Nx0hcg~ApTi*@7bQPLgyhV$NJ46iVk*9ksMKRh3n4E`boNRv07<}*JPV9$dKRpq9)25gQiBK} zEbQph#}AYpPWTv%;^)z$K6s!I^pl6r9#+Lz@!`X2k3~{?x)?E{hm@*VqPXZ0#ZpwP zmoK?-6U74u4<1&qc)?=DizO>oEcw7hty0{rT&l+ zgXz;4m5TnTB;$t_8BMiDwe%Bcr5Go$WGa;{lcsEV^XlEkw{PE9tvY!cEC!U}!Eh2Q zh7%_as8FbEHD*k!vgON{BWd2OSX(V{)q@tkDNX*#OutY(vh&F9;o zJ(CVSnloqEa^yt9OeZdv@^Svuj7cetmcN^Xu17ufPBQ{mmnwfbtY*U_1yS2+x8H!gI|v(nKhs zG|p70N-E1#h)gP~EaTya$%H6kh{u#zqA~v{8bb^*8s)Laio?V>Ofh@x(T5XxTGf+^;iMnX|!m_p*gQl!l7GP zE^@p9ha_;&;@mCLRg8;u)oG{kFW%WA-pA&J42*i~x!0b2^4VwKek|t);L8IJXkdW} zCfMMD4?;L$gcYum3NjTclL{-#F!P~@BZ_F^i7Bc`OpP_dC}SUdJQT$qIp#shBY6bL z2a|OgsZbw#=2?)H3_%&i+EMKAB@{qpDI}K{IC6k55YCF$|R7ovm_hD(yNG|DKVcyWUYJaCFhr=yetswS`- z6{;0H%vFl0u=*;htgm8aNh$xtT6Mb*C&&Qn?7PpU$*ar1+LR`)&xMy=%rfijHh^`~ ziL}#B>j@~?hR=&Fw$xG!`L=}8n788!p@bah8mt)|0LMF;98K6C8*Hx4`>Lvj4=4Kr^FR&2E;nol!_bshCBDmT@6vFvDmdN*akw)HD>ah!3fV8Zl&~kvfgx;Lo8B&PCc5DP2wy@Rm-uFZ zBFXKIgmc@N)@G$0WamJfWMm^AaU3fs$A>N$iWMy>2}{1f1uw9~5?-j} zPH@lzOKi##pc)-pV0SD~=A;y;{E70y0=%mP%Mw5Em8-^byI7ka6rWeK^DRhrl*AOIbjM_ zxI&k;FhDPip*(694;t2RXF*HFDk{VbpCRLiKt!4lld-fSsz{2%@QBo&xCcW*!2$_M z2qk8U2S4s<2yg%EA{ciH5ikX*k6^Mu+|r09y6s?X6L0_;l`2OnU4Tvz@sS$4bfz63 z&LCF$QWurvriWByBaavqE2u_Aj0{5~Dq+PcAlU_%#6nVDFhUM=;)S|m!3UWV#VB?n zN=$}ol%V>_?`l~IRF$(&ZUPQgs^LGyg%o8~Qu!-h8mCo|h5P5!(|ns%i|o&58r0YQ_mf2lKH z^E%CHaHBvv$j>tgyG(E-@fkT((1QBB7{;{o&p1S8pad0}K}%M`6QXdT4du^6UkJk( z&ago_)0zK-II0R&FvCJW1L@J0G18J2kr=C}8ZoH0#28WS5r)hILfYnsnNq?JLy$-x z4nn7fLfdxt(Tx=PJV* z*0N!#1Ps6;m0i}7u$YY%tuz6Ypa3(Nm>6a@`r?XCl=c7EIg({Sxp*^Gm zq#@<65SMn0{}SU7d>F=nvmGOBJ2Al$dFc=u@?ftSgie36Ba)!Rq%ReOjV|t+R*jT5 z5yn#{ggAo8sY*NTA|Jxkhezz`YZ*D@6Y@X`R$Pu0c~}$| zoWO;)k^&|u(d%A^aw#cG853T>!IWEWrA;ff{rbrF>_n~DKNM6+byGSa~l6m z)34IP?VkY^Sk7}cfd;;1v;*B4n$5_wGQlwpz$9_%>|zjOws3@Zb)lVDk7w57wRNsj zhTdMgyih1t)|l!VA~%M3zJl4l@bgVOo>BPt3+ShV6_G7{CO8kT)~A2?`fDs*sLaBt8)Y z`c^e~+O7`;hd6|4ip)sX8rcOtP)RCS0`ixL0_8d>U0tW(102{N2VT&`DDd*B z(b3N4GUqx|@dKL03Cp7uu7VX!aTZl!Dq*oapyUHGPzju{SehU^Z;?8Bk#zrZMp~HA z3Vk7Usl{hi#|r?}Ojf zVt7zte8PKZBPL?RHeP~nA;w0`Hvw;RB~vm1me?d)(j{#Zi9XVZHFi~O!$o$qBn;<$ zH#Sx~R(nIx1$$6&XeA2D#(wR`1vlYjmb6zbKmrZW0$4CQoq{S>_5=U6^Gli4D`t^^ zyyPlUp$VM87DH!%SurY2;R7a6SYF0Fl`sV`00UN#3H+yY#N>gl@CqR)f~v&}C5SDC zA!z4AXyij2o?#iCksICwFlfhH`7&wBrGxb1gFDzi_hMY_L>v5agh=RIGRSGU!A>rS z9O8l;Qk-6T(BQ@CCLP@s2eyzg{iKDz z;E^C{Yq+LRDnpWwH-;!FLlm`=JM#?nl_8$zdCYJj$Ph$HV~0(%A{xO8I@yyD#|qxp ziMW>sP9P*hfKwLm09CRjTXYZ)xC51*MZZJ0WG9;ssXlNrXw5 zLD5;GQ!JeFOUvU~6^M+Vc|2bhX0l@mOkq3OusqSTrNNRHPiLA*rwOTfJ*dT+?Wiqq z01D=VKCm^L=#pHt@M+KmUE<_T#T9owh+G1>g9>yn0$CaqP=sQ~Xh_&Vb5NbtIS0~t z9N1|w+i45hMR*$tp5obsA*pL4DTcqco@J;Y?kOS4U<#%HH1o+(%n*m9m!JA+M8p7A zZuta3QW05`2V0^8M~Rj{6=DzI0Ab>8XXI0Z!$tpTVn;v~1t)5vW#Rz6I!8&xl~iH@ z1E74*>Qu|hCHF>sXajI)gJBTiHWKP4k+X{9=LD}9DI9SqB@qj%&=R81u3R7~J)i?p zrYS_h4Jao{bp;eldOKBy6`g4p7kG@R)Mb<<6}rTv1)CF1K^I!4Wx)hWU8`{nT$oS&GSohQ54P7JB#%z zLm`=;vMiudv3M~`t}tg8i#-{uu^T%+jZr>=7P7Q3vL!o%wsAn@1YG@?1a3gHH3*O_ zs~T?5KQue2H(P^-%3B7b8bh*97K4YwmWg`f#K zM+*8jg`;AfsBdIheETM1e%qiY8i{ApZ)~I`K5|CU3UAwL5N5QxntEe zJD>w)H7I*9acU*H?z$2qQ94+F13G{SFF`u{HwuI46QB|lmf%aNqK#aNN~t2ei$$=M zB@~qDnXU9YMIkJ|^Jcf>bg**;mVg(}i?Mswnj1?#Yr1vV3mV(IPMGFfY+wWKi%y=A zKQybp{-eGwOPm5J8%baTp4=ME^}fBq8JOmREhq`siN99Jo%_U3NNaePI-X5yo(0@% z>M1jmN3}R}QKFhdTwB4(0DAu;MN(s{lg6wOwHG-xg0^pKMqq?fop_XPLnnG8BpQlv zLgEJwFaQ=1CyRS;(AOnha$@8BQggJ!SQ4xe;WtxKB}{TuI}nM*idBcRa3_3567eT+ zsRKK}5n_cX7E#4MlLtN;3tvzIIZ#(9XGtPQIw*G&R?yJ4D`jqGJGWb<(353r{AG60 zSO7>_rNBxWEp*I+30L69V+zQDe5Pnx$gvd)0R>IiTN#RMcQY6ozR4Q4!FIRNFFvTr zsxb%S>p$#5v-pw(wShonC&~%W zloh;QhDx#$j?Ha5K@mN^`+&%61y>Mf9O%5)lV=&5Ez*lEZhAh|E1NS-3!d>CCR=vr zG|4r%o9zUsKA64$=^FG6gXK%J$_W}s?T|U!)R7Xc$4&O*fy*Xm-|3W-U@5EVK`aP%da7_By(CRQRw!FnWC!ft+Gu0w(( zKN2L0RJO7R5|P3Zsh|f&a04Zv0yn?~mQYEP0>-frm}<@q*#Ntq@)OT^Sg^BY&JBRk z!%87-=UEmM*`Q@l3Oy8?EMz+8O830pJ#}d+KI3i3aX<^^jlJnTKLJEAJSZFO^rr~4 zTzx9v#KouoW7Gm<0}3PuHjo7DO+e0RcdkL;*n8miq~NXWoel2bA=A|eCE*jkLI`}; zQ%h{Syw?BH@C>u?GxPc3{3Xm9Y}a>f%rxRSfFwocXP}7PeKU17Y*Ht^C!u8dQgzFG z1cx_j6y#U3%}iw_CW>!^gOv^deV7=QHayz$b|ro^VQdo-M`hYSQY5q*5ox0%Q&cD& zkq14-2V9^iA@Kw`Py#o=mtGKZ?x!gLb3ly0!VSBtGdleD6Z_Y4XFQs05p#ad7GCzG zk9k-j|HcCgT2FfMEjQ=;=Yesy4Km>@c_ww??b3q=({b?V3KQU!Ch3;$XySCq_c8}X zh%fnF-~OV$fcoi1-2|e(gSGL!)s^ZpxazFFFvdX(4%FxqLxl`pc$TWP5Ps`m9oDuS zwK0>+Hj~!>ygVV#zziJHwfglTbDiu=b9#9F2xV0aI`Wev+=@q85oZGhFkY6=S8pQP zm2bp1VY1EQY>As_&4v46TcUhx)cD0$p>TBVUNY}X-Zn?c5W$+34aWxu+9m?OBZ!nE z9+5RpU<4ia1&N{qH}E-@gk))6IxZm-v9LO>AdG=onzwUTJmIjnlUWb@q)zI)o!RH2 zLYZC~DxrmR6`ORM5N9&M4KRP`Gq31b2Tj$>f;q1mJTKsE@LTSp$^Qe%|0A3-JF|6Q z2QdpUF1z#;Ae@##<2sHVJF){Al3hEJCEK|}nNlT6dM#bjn-^2&Jb5*1#>0sd-p-xZd|s0lG^jJ8 z&XA=-MwHporOTWyOSa0?s$|KIUA<~dt5#yfSf%Q-2g;BLJa{fxn2>nF01FNtBz7R!frH13qg;3} z;qZmej~zh4Q~L8~Aaft1PR$q!UJFC+GWLVE51%}ZcSnK3hYu9uQJi!UzK0YaJ$$-! z(Zj`w5hJ2Rg%Rb&x~NgHxX0qgjk|a&m`07lluiA5D=mCj$uz1|DNB{+YpP^P)BO4W znKWf9#lKAETTc@!G#L=UN-BwOJqOj(L=#M?n8KB9F2wLcZC>H<6<9umg%=S=B+(XI zYC$nYTjGd=78hTHF_K8?n4=CE>A;c38tIT@$2#ih@y8$KNTPx{dTgRbA$6?74mRxg z(GDk*WWxp<rw&xEBmt2}jCYx@`DIT7B`bnsvih4$sRG4vwDQ2E}Dw$ML zImRliw(=^KJ%r<94_EnM#VoYeQmYTQ@_@pLM;_^82*K)F%n#rGO6`JTeVt(cvt$R0 zg0a;E6D--uL_5qd3lvKYh{}>B?K8n(tE|~#8%wMYJOZQ6;6~qjJUyxFZ3Ygx-g8uLX=n@_HLB$tQ$oXOGe3Nl>ZzYB@-+x zIWQATEXl+_1R3P7zyAX4cw-1d-q?x*AEY@OSEhgglMFG`X2T9a43R{kPfW3BTi|FB z#uwM5L(NFW#4*S@=E#vrEt6p5$S>W{at{X^L{@nWI+elqpcFO2!ydSTWU@VOV+ORag6Er7L30l64PSi?P+#)cT;r z+}n28VP4>7YZkB6@bCk&2euvU0w_8&?63j0-+r`ZuN_P=@STOW+ryMk?XF*&Z?>}? zP{XUZyBbqhuHA;~f|We-fR&X!y2!&GQbCF?=s*Wtuud#g;RPPxfCt*)&Uwa@od}-i zJlt511x02B{frD`2RhGw))SzW4G2LF!cT-&CNqrHY&{op#T7cSvkP_TXCM+ z7qjF#?}MX7$FQ{@B${Rg9$Ix6AKNq zASNyro{U{ELLk%6C@gW$1VzX}{sE9B`csMmne0CXvI5Qj!l9mta^phYaD~ox)-xLh zEoeCuk%@{{G#AA|4z>W|nj&!|B93VeO*o?4#>hlDRFMK!q~aBy^hGJwp$Q8}LKDs8 zr6zo_Zg4x3+{%O{r?oL}FZvtcrQgV}{oFQ4Vs6=uOQaSl z;K~oUW5sNq&<9dHfh_;hLmm*gid6{AItfEy!oCy#i&1z13tr$LCZy|yDO?Oan!p%0 z{+XZroM&VvOOSdH8X$%?2te`C1j({dpNp+09PbTBc;su*ZD7Je80tnhHsrI9f;6N? zBk7CWs5F(bw53hUnwaP&q?$IN2~-T54ZuW3p?=YAQWWDEg*3G+&Fx4vMO#vpIyENL zh;MXIT2!S?_oJ77g_-$1j+mCSJ4tub}7EVk;*tlllsfDd=I%4X# zf5amb8&Sk#dYVs@P+}Xg2}UZG<1MIa)vG!r##-GfjRVP%8;4b_J8o2uBh^Spu2m?` z7+qVHl8UJ?e95d>g)uO>2Ua}!$*A%xV280PQ@W)O_|i)s>^B?Yzy+GN@zrLU85mn8 z54M-x3@|mL7-5zVHN+fE`x=87%4RSBvz3uKEmcF?x1?qWvAHd;@IY8Uv zFUUf8Yg~uN8-Di&hB|QyUw5OU!4}#`cZgD@y{Qf{N;cKxrlScz5loKfFo)N{4`9>+ z7@Q9q){EU3bS_Lwa0TtGJc;jixgWy~wQ{ zc!B_O4k*B@a3Y0hNCiC*1wN>>b*i+4!Gtit1n}U7Sg5D5^Pp@nL77P}3ra65_?VIr znFtZ6jlnJm!I&D%7%SibOMno*doRG_25$(wUBiT4%dh-;1zzX{9P%$-7&a9FB3gJ8 zcT*`gl02w+DGB>9CrTSLnHpT+2RgWeF{A^2z=bb)u&L3aEZLIOo2fAQB61UxGT9NR zLA|^=qo;zZ+6$c9!#zB~qpae+-V2m{77XNGFI%7>J>u1ezExkQnhm#|z4sPD2lkNyqmZ1r9PhjX@AAU=V=9u949gzRL!* z!vs|ug}xI)AA$S5k7?rIQG(nprK6nJPh_X-utW*3r z;lQ%uF+jVRi>0Hjx{!;xm_^h=4L<{p&d|l_ftJqlMPo7+$4Crs35|4tf;a=FT=W*r zTBcvL9{YP2qT`Fd7=qiH7jH7aApp4m@)tfBf+6?<<{$;)N}z`sN99tk@8AYku!IO2 z8E&YUSlbx$z^?F!uW(2qxr49u+K*Al4^X=T{qR9csF3%HkoW>TgTxTzbcIfEg(KXM zUU0~V6p<$+HW+E6HBzb7n>?{mFa%SQp_&?ds0ET7!&|V2w`n5NTf;ffLUG$LHjpCs z43Z-1Hog)6la<0rm3osSkp!N!y%qyXtP;w_p|KjXF+(}ZMI@_$;~YplKI97uWS9jB zorOlTDPJUAO&*dj6@ssD z5GcNLh5wMRg4~%Q%&%7HgjZllC6vw)p-zd6LKk_HyTM2UgBl(2k*SH#wwW4{B+okl z26uS>DJ4lyC>qrzB0UaUsxi7k)T_g%nZhbuBd6-mT%d(M{7E}{u^8h$qI{gM!ZG1n zP^DZXrff}a69t$Xd z2Vf?ItW(z=%a8>V4eAIj>U#PExqvjEt5MRB>NzktP9 z{0lEbjm2_{xKO1okU(4kpl5|RVhGcR(St4!1yz8UhnX~2NK@%LQ%lf}`C>u&dapZ$ z$6LEofvnSk+*2QHHCH&!A-pJW$S;L_g-&RN4vEf1rA`#Ng-4Cm{KOj~3X&j6qK(x5 z)H%?FFeJ$`Ji{i4Nhv}@FA5vd>!~3DNv%z)6C1HA+(}ujRTcwKTn$P++SNidP(tz5 z-~-l|;IXANK1y-QgTs_$T?(l%24wJ`yW)c9i@2-EBvv5BzuF(PV1-)AgI&oLd~u6a z+JWg=mpZGa!qkk+@|DW)#kxQy(aMa|nk-$cKf$mw{?lB@k|Yql8gTQz6Kq*Vx`1m#oJFAl~9q2JOI%urMOAjgNXC1-MF8$u$5iG z6>FjdwOowMT@2UsB(PqL+>Ty3_+)*O+zn^oK3-CEwA`Qg2i(~3D z*(DYzWl`jbi^kmn9k8qVwei*V;!%sE8_S980Ldv@T*jS72rvZ z#Vv;3Fb?8*3typ)APeFc4tzllS7{Dc38!?Mk+7LCyD1_zU;;_?>hywmuV+Yg?2?{nLKRwd&;t_;Q7KLP3{qwdoDQAjD~Ju&?&E*`HqjNDjH=OqR|@_2d{awlNW9 zm%2i?0UMR%LIMtxDOy7*Qb_@hqAIchudXT5J0p}-ut>cd5SxQFNozTgLKbQ33^rS2 z9?+qjYr2jcyDkZL!0Qo)=D0npX)ZWQv}R<*=B6+PxGHQ@$%;w(0+0*mJz(rrDa&rs zUE+YARe}q=AS}P|?cavi$Y{%Qoeav5?bYZr@*^$Ly`^v!jT|*%*)Enc!;QB<4cMR` z;|2^Z!&Y2@4K)v^+&$;zNRDyhOay{7grV+{rXW{nEL!~nbmXnmhVb_1@lEbqHbUKJ?a^m$vX7^F#7ed1m39)Yk~wXy|2+CHN@(j zD&VY%$x?>!QhuuIM7nO~6Mtq#iDsK1 zR!V{KyDbX2`U;8rL?=TPW@T1~tx^!}m&o2$Cm<|y2@be`XUBTX*+3RxvYz^ZjF_X0 z#lr2x_+nx4XI?}M$Z~DYLQ>b&KVwnSw(M+SVQ8bvjJuc%v|v%acwFN^jw($H$#z&q zyTFV60#YD_i><&r=U8}hnDF@H=K>EsSLsoZSy6C>j0*3V#kDsTsB}CJ<79M5&nTV_ z-%74zS?GnFJ%#(O1tO^pDxx3%r26)`iZSaAN?YRsK zAXmD0V#C1VB|dG^5DmRRy2y;(&i-w9PS_Vs^5B>k{;|?7Fs0-Gm~0$03>=jWRR!v{ zwu2ya2x1esM$ObCzXpIP{>FIT8}n_o!i*(=gwUFyZk}SE79m+N;>M3HkG2ryv*pUD@%X`O*N^1MYx_us^4RWN*nJqY zhEmt=Sw454>gD4~S4 zSa>0ZwG6Z&ha5)o;fHn1AqO2J(sAM(bDX$hiYeA1;v6s5!G;`jxFMs6NwC4j9CqL+ zqaAGc_@j&|-WVj0GS)cai#5Kuqlt9XAqN{Y2$4h+B!0Ld9daxwM;x}$a?mXanOO@% z4&fq^MQv{M=0_e?(@{v(m~>}KDz)TNOnuVy=S?>0G-yxp00op#MiHgdGfFk})Kkf% zl1f!pVU^WZ#PqSpFkpfI^++C@@`1+?YRToqTSKVYm}!lMk=vH0}V8)h@wg?qF|C9CgY`dUM!;= z4Bvba&o@do^3g|NdahW4iF^Ti?9Df>V6shuB_mi)IlVO43oM?Xva-q)3X>tt1KrYL zhmp_%VwW*SDI$q0ikM`Payi%;5s<&Z=sO(c*lveAT*DH`2mj3+L+Bad@%ox~g< z>YVeGaKHhkBx9QYxi&6ohB;B26}^d3oN>-sr$~36l&798_4)UofZ{Z0PK6#C)KH2t z>ZntYF0%?Lt5kX^rdkox)gzu>&PN}^6vGx2dF88QP&~mLDSJG3Tr|;;^2K+ebisc5(ZnJ!!3BpA3wa6Szc4r=o0ne1I_3@i_~&B& zSr~rW^RfSYqk-GNgey#DvXqqrW~cxK%qYZ*nb8bGH@g|mawfJVsiOG4I;L1ghOf(w~Ne;BXy$_-tvYgzM*7K?f9FY0v9Mj5l$Y4JDgAwR}`f%u5pl( zR4R^9l}l~Ka`Wg@=vYU`Eh8DmFa;|n zca=UG!&93o1~CY^2RslHRe6|8alY3`2PBeLez*(tOhX&o{N-0WV2vhENt#Vkk~eeR z%v=;>7{~zO0S{mvWfWt{&!lp9yIS4xA|pv@Ju-Ey;R9@h)0pbzffb+2!!VJfOj6|k zVF+C4g1*?73WCKi7SV|XG^!~IE@TrN{nKB=TmgCLy-}Y$U+cxXr%=q(?YP=keJ${77~ewO>wGIU+~n6 zJ`JOtf+|!q7F8x{T;o!kS|~#y4ytpMDpH!l498K06{ax89=Dn)PqD%{q8b+zc$tSi zn1&LRfF4;8DLcAwa$9quO>0gwMj^FDDlO`z<}a>--Dp6g8EH)hGP1${-Ix1vEW(`f zlE#Zw6xgb)!7!$istIgn9zeS4o#i!eHI5(nkcTLAmQ;C``ElH(%+hv252=XXDpZjQ zKzE_%-!Vn~49#3b8*D(nHCV>HvGnJTLYv-Pr+%30jRDzb>YO%EJtc@T>yBDwy~ys% zD3odo33S!tCGUw~IHIg6bca%c8kKtV>xJSPqc{>$Mt|KSIpB9k6Q$aXq=f7eSuO6k zM(LCUvcza3xQb}H>4LXS5nWtS+rp@@w}A?7adWuC?lAYcMf^rYx%(*aRxwqn5*5i^ zg&3<4i@S{Du19pmD}-cMF^VyBC+r{(#eg0kqTmES5V=+-cU{Q;TY1Udx#}@rcI(4= z!|}>o05pqX%qSOAJnmC+hZkT0HQClVfJ4DR&^diac~srh^-p|^!Ye%2!%W>axxzM7Ag8rL zD}Y0SjGd^F-Kg;bC}5B-Y!IrgUE8f%tGU{Y3{gU%h~3eUe(i|Sq)3q1z^+*oL_v+< z%^e$X6bpGxNWIA7$w5ic!H3ich(sQ=Q68C8(b{C2gjIwspn?~E-rR&9-hkWQ*#>9EP)eAG0)K^Qc*xO^d9koa~rO zUMP~bd`4eXkG9B#1;}FP6cf2PfvVKsR}391039iqg1-z}cc?-FYDfFHLU%Ns|A-6) za-e>YM{PNy)J@&i4M+t(*C})Z33h`Co?zMO(*>bIFX%#dc^5#nlnl-wfN>PEiO2~l z-U{)^j`)a+%mGL7T1DZ=e$nGY1sl>d+Y&b6K|x_8jELA!p-Qn-;qjvnciUb%f_Nbbal z9S*y--n*e>QY-^9u%sQ*A-uSYF;EUyX^y7wK}@pCSR4~sG|yQ`h7(9e^+?&Q;Du3I zz_3(?WlalQeP3TeTqAy;Xk^B1w8kplPF5-g^A!tbM5R_bk8aqCBjLd#HqWR)kNiQ; zEdHlY(gx?aABYDxnl+*z&7?`w8n{z&Ao7mJ%If55P zr*-<&Ph}W)^354~ZiNUgW_qt!N(P*dA<(A?e}mtwKxIOIbA2r2H9T5@w*C z1HR@fzDim+jmKrO$C83WI8`H*c7rRl!jozmESv(Cex{Z#$OUbXFw_*y;DQH**FdqO zpTbCs>?v&C-EjULM7aUgI8>egdd;mh0et!0-<=eZ#N9%r2$uL4Li%Z-(t?)|DswjH z+B_%RxQQ@yAr@6c0r+F#`GU&mLn!>3f!!oQ`q*RJn z5Cb2zs^-)fAPPsxNg}E^0nDimU0jQj$&T#g1!YxVU>KroOem7U4rvTV!<|x+<&N># zh4dWjD5X;El$^J|)t8yZUC;&f$P(x525lhjPI8WL^rugH#URmVG+fSi_?arK0x}Gm z{48TE=qu{ttGy~Cl%7+-VgeXIX_9^#IE_2x)8y z)rdg$m(bj!4dtD%#fU@yxj~J<7uV<})acL<;s^@W2n|p`mMD~pNMTA1gqP64&R$^^ z`K&H%kw*A}FjQw8n2i@2t(*YEc2?@r5>*UC;VCB-wi>!`vDGH@-6QH84J zk&KCLAhAo0sjXc8;knLS%W;b)p=B(=M#4#%v|#HcT1HuBEA=stvVf%rZzvFa+4q4` zC@~rK2nKCPhPhNvE^XGs!G&P>#`K))Tj=L4_F-4Z3+Dpe(6vv$1SY@~%;~1CzHSpY z2q`!0Ym#oDz+!^zF5Ni1LMucN%4{YqeB;9gL)l%>?`DX_T8NpTW@@&YpCXihk&r-M z&C@V%KYC3Q3>%dH)M-YMtgdPA;>}1B&;YY7FY=D>hIol29I8Xo6q~Fs`@YHhqJks9 z!5hEAi&021fsh?(UN>s30mpm>MU+ISC<6hPs^nBkGOWUm)$)Aaa*e%(1N@)y zfeO3a#gNI4vqZ*e;1Uh99P9Me3}1`G*%J1(QkZGkU@UI%q)V{k74dj*VMrNc3;`uY z5AO7voAHL_+J$lWaOi**U6xAt6i3nN0d!0XE5!3WcQ(MRr@-WBXzw#WV`J)C6UR7U z!Wc9{w{|xy>?@SR!ZNg|MYJ#U!scC&EdXyV2=B#ibn$jH-AM^?5;uSO%&s|!jN~z{ zaZL>WH35CqS4dUVJMtHa%mEWHRC!@{9S~Ru<$@yfZ2Gdv7I9k`dPFe1Zx)CFDtw!U zS!zdOYEzSP8@W-`#!*QMa7r43i|qkcp{k@D69a$sEfa%qjLQzBYiGUL%((?>Olz)8 zM)izvfZm10O-5OQDCG{e?J$dJ80cTjPLk!-#F?dB(Z*+_pPI?7tEibZ$HpVL8D6v* z=$xy!aL--X=eZik7rccLl*JPS`4_ALJa_i!3MMqnf&qqs7ZA*klJ>ruHtLE(6`Zcf zL{~PB19P?ZIFv(|dm1dr!YPDtZEGnR2SY_fgfMg|@cQ=fwp1=;EISr=tRZin4iQBE z*@(y*(bOct4)O5~A@35(2u#z6lV}YO@+nGf$r23&6phJ2H1e7}Sb0+zPkqt*9yL;% z#D>K;Qwz@1#)EzH1bL$JiP4dYaqYa=;eW5f7nDUR5CehV@*advW6(yZkczpqPFty* zCQ(-2)h?#agfil1;8G zQG!pB1y7Rex`-=t?5f%tlKAK%y5^yg&oh$GJHE6J!N>xXH=vZ~>nVVNZk>WCVELA7 z`M@LeH!5^1c*2#MgE{m9!;e}pM10w~Z_tKGZ)af|vmI(Sk(?J)ahp&Lf^?Jr$`5{aD;I!K#W52hD!&vdPMcNOBSKt#Gj`fPbu7X_4!=kcwNpB`r2agvXAnM2}s?3WlrMQi^br zxv*%Q#wsb+w(rU+ao_aKb@WjZUIYg1XoezDoUX>WY}`5}e6#uN=PuG*F%3Z;u(LAd zA9e60F~s|k&-)TnQ!GrAC)yLEBb3XgR@ixo7r5!h3?lH~hmxJQd{Fz9bf#J*y9;D2}v5N>z4VfvEJjv7mB#f9T;Ne}51Z2|x6nf0NrkVQC zvvG)l#rdNnM4~EcBwxCuy0_9QH7Lt>rqVakC%x3>H;Sct0`qq&2*(%f*dFkn1AmHr z?rP}Fs^D&mwwQ|!py>3#6+raC6J-dLD0uMrN!Ul=K|fI}Sn#7TAs!1+`aFbq!NPB2QIMS!Q&8*E4P?2<5QkwnUid;SFd1|EeF$lxtA~h&%Si&vK0qaEnKHh zn?{Z6R_oTZXyuX(n>Or7w{gpv6Nygm-gV~40Y0aW?>fMR&za*!xpFqngV$jr95|cj zc8+J)ogKOI;=kosFTUM(Z{Bp|Bxz#(c5T?QUEiV=Cl0M!t5=8CANq6uU;hCN@E2eR zEYQGe5KOR|br@{0L3SXFu$>7hY{#7oG0gBndN}Nm!+AgqaUOX{Br%>7PlQKB6|ZUW z8fjpRQ5t7xtkD@}aKv$$9hXVQ$7EJnWvVW|;Odc8jJZn5tcKa+iJqV+$e^A07^tSA zVw$KAJ`C#eAciK=k|8Te3MnCqE^>(`AWm|?%81}}U;vN*K5_u2iY5XnBrxHe03(ft zh^U~NhS*_;A&5GtraTzMBacU-iZrTJy2zudt60%0$y7+mij-8qQpT*ZOfh9Iwd6Vl zE?4HV3op9%a)s4X&Jm0-!_r9%vBr2UC$h;X(+soCF1xHh{ZNUcmSyoX zEthBKi^G;?Puq{b{yq~>VFMWkMnMD}j5xxHE38n%i#^O(#1Ts@5k(YNgvUi0VXW~P z8*j{!#~pnnhL1em7DqCqC?=6Ect9l!?1VF-2?m(6Bs_pFJgyC%VSUvu za9r8ul~Z7)3$a|)NlYDedgWEJVT;`?GlW44trpUBL2X%PnPts2+M;!@T5IRPw!Gf9 zBkwnN+0{yKv2ozK-qQWnMfw=&iR}Z*DG@@hBCmY%w>QmqqpNlucIv%}0K zH5m*}>W+7x#D!@9=C6LyVtmj4`Ofl?6TacF3zpmwS1!}FOXV;}UBg)=dcFrfZu!QP zk2o>qd=Iei2n17TB66qPoY1~G0?VyH}_paU*8(I9;A zsZX~ADZyFAjC-icQH_x)#W6J%sX)f4?ueGlWwnps_+uC_!75S6Lab!P)mhQH7!*^o zt>s{=TM3kzxIVL!1GB6D@bVfP;~lS<(aF~HlJm;yBoBPuT9g7KVlphQ!zMJAoYTL_yR$>q?CLXEe~AEsot=QQ>pRcp_F)p9}J~78fN4n zRa4VN@W7FvJ8KzLhhB=&7S-?eABpz#F)B(xYL9!f?l-*=v zY#G|cRjzaO#qLo5(YsG-nUs6w>+yyooaHr-l}lD-VWl&!;~X}7jg{;is0UfU`o?*b zJsur`Izwa<8|K-_qfsey2WU|+>r#9fiNlK8M|9F z0=qH2?M*HJ9xLaS@M2|f*7Mi$aL0P<(oHUd;~nG3VLb@90Wg6)Wm5vD4%3oEF(rXM zi{ocBrP=tHNo(5E+7HbnFS*IxfpRz#(0~V|bIWCPXFU`t6?t|ikNhmpA{j$d5I!mx z2^T04Hrj+S>)9jx3u+WP;SrP|T1}o#Oms>h(xxVWNNUUkBErTa2H?7|#-u8OC_q9X z$^<2bz|}CY)h+-Jf+!?bXrXXT?iwN{?Cxcv;DmmnW_sp}d?IIvA)knA4~XHYl7SUS zVHK9D!Vd57rj6Q~VHNbq@i;8=&OsfD@Q^AGbuusW41@DJk3rB4^n#&4*sa|-P8W6u zv?aI?|PbpvBU-VB#ZYbfC5^tH@e5+Olg?*3i-5* zV4ANMM2q7*&a^^KSnz7jPYrx*&0cw&Y^Z2`?DD58j`Mvx}h zZUKh~CCbiDuqf3m08x~&ikfIpqQEB-Y7fL{1zCX=@~LMSCD4>)6|{mIQ^6SIi4=&T z!jNGHMP(U$@N#Cs6p-N=9uFOsa0y?f#3(Nw!%f^MNgWy_3aM}k`*HMWtn_Sb-a={r zHfCd5D(g1Fu=N6~36fwA|Lr)|WA*|r%5Kk=!b4w@Ks|J?;jkqkFUx$SB@Tq6vzn#( zz)U}&kIV!SwFuD=T?_l%?9EcH5e?|J&MBSLi5XNu6_jBXEYaGK;hi?|M_8dq0;&(( z?-Mfx3LGpCO2`z4fVzSPxoE0{3c?Sn1PauSD+TarE&y*r?H~-IB${Yz$cF5ihHH9g zBRIm@XQis2`y(StasXtZMQwnAsLBDl7~@XQe% z)3K^dAr?3c9nJwAEYlue=Pu^L@|IBC;&B}$V;?1>AO8^`=Smln<;$9d3yTN;Arq1} zwkJAPsScWe24pWHCsJFQBg%jy32Z<;9P&AytU0D5m@2E7YC~GiXFlYhKDO+}Y{3!Y z?R^l2C8h70s&AXPshea{`(}&#x(|UMG5lx*&sO0)7w;0I&F1`!{rc_`A&j2rDP~xK zgRn7Z>?Vk&vWp&tOLlF#a*7g~=)AUsA`&8q5@HBu!WI>RrijR;kP&R~hHA11zh=TD z%uZ~|G8uX5CkU)4?50qPMkb~U4}8iR2eaooks67iNm$_+o{bgMZx75-8FnNxFUQ&{ z6EiVWGdD99Ucoc(u?aB`t$+mzOLKmzP&2MDG*Hs6T+<6_BR1`245LH;Hyo14&JePI zFR%tHdk||QU+*_??>nqC5+ZIn&!;txuRd<9V5T$PIIiQSN&2QQLAEo0T8n?aQxUgM z<-Gs?Jfu z$R`-Zr=mhdy{Ia-;){$+6ptZsa!?P%aR)PTM{pz^7tbC0$VV|#Er1jpQ~{9cQ8Q6Y z9e`ytMUx+;unMm*cUJTC3bHwO%u1ifIciA^|E)IC?fllH?FLctcqY$XK*PqlMTDWMcF_@FAd#KEp&7@i;*O9&ybaw>~Px^NA-Xf06~;wLhKSg}a$2x1t$ z#?)k$>u7=`dXX=ugw}%SCLUl;96%YdBq&T&h{%!!k*ny2O;Q4r8k3C}|x;pVCZ8Y zo2g<^!4?29`amvEsZV0Kvrj{ICTWsnZE{dq4*W_6WmvX>SY{PW;So$>(0t?=v?5cG z4d#X+!s2#=l7c9df+wB;51hbIl2K5EhN7@*2%P389`I9JXePRbPRtI~_G={|qPr9j z)b^Jo3dJD?B8ZL%C$5GkXv!BKQ0TbC4}>kDipId80*!i(D*y_@R)G(?AXE214;+kf z$`41OAxCrM87}7;))5-i;u(BYEd=+42RHM^ip1;@G+)OY?uS6kp_-c13IkF#wU8jw zCv#ylA&rBUgdq2FbKs~)IBiMxChj}JMVGwvOh0n}HiZK>u51pDsp3M3K2V{33}!lc z_d2oD%+AbXCB!=s(Rc&3fNCp62$gwJ<{6fu{Pb26mqEC)0#uS=D|8O#=qSQ8_)@My zp%^7-Na#tBD`+g>0la357&J^EqG;;NAQA#=x@&+b6ec|Ihj48oj@D_j@`tFlzQCj< zb|5WT)gcIMA@HD3PSsI-A~1&nFef-tl*EH-X8n%p7zT%C^S}tY00)&pdfStP_m*#= z!4zgeEu^7^FB68rRWkzvUE>jlBW8z}G;%lN7c_}-^}}-M^;yn`N;MY@ElWAn!{3e! z;r2yeAQG_1@LPy;;IN1FuGn>JLpffpJ(Bkr^hC1Hht`r_?Z^gbd&&k`EWsEnJFd5*%p%J4d9>_ z{KI!!Qcp#0cpv&tXR;=f*PJZc&UWknJTc3BG`X z25O-`bpIG_X~?p>Mld1_B|@+3YPNQ!ye^7%q9jPI>LB8PTOyW0?IphUB6eaTWaxY` zf=f|J5c`#A0gIn(vubw_ zS3_b4Mt3lqKInrw%h*oOxM9+`p&i;!Lsn!<+qC0&<#0>2o%b7|w6%K*)rkQb1|>i;BVj$$Q5C45Co%WTA>CFNw%*xDp`(1(NZme@z0XUlqA8 zA}`%nBU%D%ChBST7tBrcrFe=DoWQ4fsu=oas)b6uXVCrHyS>ebMr#mMR)H0uYAD@_ zZ~K<Ilw6$tw&jv*0F4kA2Uiixr3fC)5 z07Jq=3uTM)QYNljz1Z&m>p0M)*pBMpUDArer2JQ=CGZ)m1S2v+8c)cUbL!6l-TjPV z&>5$KBGtl{K^cs}otVMVd21b;fxjg^hATZZ1$-aZ0Z$18!4n*aS+g}!kJOC^J@T0e z+{M<{IiKY~=Ub0o_f6ki2{(`vgM)m;#&klGrzd9z67|uzCJACT?L%smGQqvn0X9rBh(`1M9P% z*@KtsMf>`0JfbBUM8>K6$R1^V9A%WD{McT4zY$2Z!h%wv+=0#r`g249LI)I9kMcl) z@@UwwV#V_8aA09bl!H+G^ts4qNW>@>EKI}$Wurwu7Wss<;9!DkHADB=k zR_wzk$`B|Q{Y0^dXNSj^QC#kr7{$qu9XtErDay1@o<7A2KABpO&z^+Dx_b3$ENs|g zWRE3Vm5PehXRH*Ygjv(QPChAyz+!GhJHQ-?UQ;>C*BIerWo zaeaVeyMCQ37cEJ0YR|b{yH2FtyXDN; zJx31jI>CL*VbcURo!h+WIIokN4(~|5bx(&boHwmVw7PrmUWW~n+O^@tvGsbj`qiXK zhkoy?vwY5(FINLLIe+BH?E3p>*G_-}w&PBL1|Eo@f%GiMV1o|M10jU+Oh{oo7G4NX zh8kXT&0ii$<4lMmiWt`_bqG{FN9xpY%dGU36;Oi}E>lT#nT z^wT4KTyPW=PZ7nGOL!>d5+8XuArurbGK9xYd<;quk;8oTl~`kyMNBGet+Gdp%FJa< zDkj>+3|`LUl~*dN_(fQ#hanaiW2P>)PGXKBwjX5mWi}sY@P*c1Epect%X+N6*4k|3 z%>f5_l6?1FB*6if-EP>;!3G<0(Ba!{zg-udbJtBbTy4`4OKh;@eJh6~x9GZFd!x+? zTCAPDYFU2nPS)x=|NS?hfC=7p|PIw`P8fM60haZAC;)t_Y$_%BB8sp-N zPiVEr{~lkUS+T`XJn;o93-#fnpM&a|M;;?%WKfz=Xrxm|emnvt6gxasksma3)KShB z93_#>a^7@NA4SphlA10dSril|N%Ry`2hG%yoKCEK6jjCa;Y5)Jd7KK7tRPB^qKlIC za9eA=g(6y)-W4LJ&q$-nr+|q%SYoA~ig&84>K(6R>|UnsX7Qoho@uC&n_91u#32V9 z-o`O(Y}|fFoOH$}+gr2ES_d6+$zo?YwxUxj+~nTnA_*Mg&c-+#x0y!^;;EVI9=d^V z_V>H`^*t|u^%6)RzWDA-e82PjTVcQh!*dPu27j1v!e}AG3|g!pGuK%JeKABHmKwtf z|BrjjXi!tEu#!g?gDNx(L2lwia>*xkB#}W6pg9#KPy6%|n-4iqr=8S9BRfNiMcxMz znlH+A%_U4PTe?S3($!z391({&IIcEv z=#Fb*BOBAvqBh-Gj&*o*oZB$ri_~F4aOwcM(Wy~8*wJEa>Hr5?yoMIodBYpbV++L5 z4qfp%Vi9!*uXy#&cfSjs@DfBkeHqVR$O~9JmRB$i9V~hxVg@T5WvOJ$XhjuE|Ameo zQ5HRPL4AcXNFQMI1*MhAE9_$*LyTmQheYH~GP|EnqL7D)T;wHBIa34&=n1a3O=GLxzs^Xc=RJZB}6KQBE~RInToEMuq?+|g(+AOF%|7$ zQgm5H+>kLMx4jJ+rhvxWaCo;J^00@A`5_R6*f+;ariezo9pOl0i}Nti772}_d7@|w zIr6GCl9L>_F4x65knvYda8~G+6C7sEA#`gLop;*EEi5u_qOD1&9PIdp^OVb6eC%W3 z{s_o`4ziGjJY>ES$*)Bo4|(!X-oPSxu)k0;M6=L?_c*zSv=HMgQQZSE|Bk_mFGSU3 ze0YS?z^A7t9OMzKY~?~&VUnrkL9BUz$xCLoG@&5HX&@1bl$0s6qCCYTe5g|a$wa0; zJdGlL$O)QkVzZ9Ogd$q%10@&&%psTr3VQ$&ABs^~5rVKQT_da5$XO}2L~Ir5Qw54n z9L%UK-kedS&nhXlxCJdae22NYs0~ZUg$pOf0j6-sBbG*4uCx-ZP?*|Q_TVQs9fS`Sc~T#S0KkI`El^W}rcRUzlaADTq`$BEQ8liAluJ?4hc>m0>7~oGXG@GLWH`sHWny zc0qj~vA!7iMq5D)L^%PKe?i|K)+h;jGwXN5;WnSmg;a zVF*s7LKTDTsZ4s}h%RTsVr2?NB07l^j(yxeIn6{!XCk*_k;LwcxLp#)5d6hC=0 zL@9&PwpIn(u_|BW%BwgfE5?S^N3;lhMoNV-T!^WgkBhc_&3 zGCB(%E(uBrFW3lQ=rC9-CfEt%q{KankwU6crmMZ3|6~%mNlk*hVmDo|Cbuk#kbE{| z1y-bHOX*0Oequ9l--%6m0Le53pTWx(qr_bm>=T@jhhgZbtE>1X2*W~*M@*QUu|Ig% zCTt9Lk{MIZn1w24;kFN%Gq$3NGh#TdnA_SGLO%(32k7rN&lDP(mDPXFF9_ zA6JKUSywMx*L6Sjb+y(nMCC}iwmb%QU=^1z%%BRXfITSUC@ykUe2@xQRWYa61><83 zvbPoJqa8c6yXG-_ewPa1y!+PdmwEq^90vsf@$F2+QdB{{W` zMcz>xl0aRP=6>9zQIqq2)fIo^B^%K4X|BOI5`|v+hiao?eetDg0{AKf*eW}9fC)Hj z3n)|$C}2jVA<`g8lO#jYqYM{_A`+%TD`YYjQ!+X@LKs$zO>z(u#$kg(B!TB9ll3$) zf`dVU5IDFpL+~;_aS=PFc#O9)Hc=*z|3DJ`bA%LO6E}8kQjrs6@-&}U6-gp*Q_)rJ zqZCi$O(y6*2NxCu(QIGPRR`xH!nTGZQa!4m49_qP2eTK*fJ3-8TZyqx%7-`6n66Yy%p%%%IA}+EDte^)A zrW8ZKU<_6=R&{r8_Z5J55M0HKH7FII*H@~ z4SYd24(V|mmxmKck#zQaC6|$}GJS#*8n%K8z5ri{!%zS^D8avsOKIxIB2p>o^Uj(I!`@xE>h?E6l4-3eEVfQZ& z2!R`Ni_o)F&QKSX(n5}cA`w%9slW$a;Ezo51xCPDc*i6aQw(2$K4QgI34vK9vz82z z2a;tFcmOlGBr|kL34GuY5n2&$QdneS5J{sHBLOqQBta}T5j6-Bf3lYF(}D^iSS2$} zh5{pd;wKKbkEf&+U?@UB|I#rLvkaN3hMSpY&#;TD@HQWU4j3mYqzRGozzQ_47N0Ic5L-!QQMC$Ra1};U zFK3OAg zQxlF;Q4GsiCIlfreSl>qh+?Qjg8Qg3Oww77a+y|{hCC`mnqp?KC8QV!5Ai@47ZP9| zS7+I}q^k*ityv$h{|Oqk@N%G0oj%!Viz7we;v3?^rQ#K)hIUfMVH-ndlizZa&lxTy zIY;e9ogNvK*=cn|>1u*xl!dgX_Ryz(3aI5di(}_J&*LHS6g_pJ3VN^y!qyfgXfY!M zf{&mFUj=)fR9V>MBU5us=OcTAQWFQt3M*4>S0g_)p;mpBBOg{lHsd5N)_LWIKZj=| zBr~EVqbGhMKY!9b@G~f0wQR9hSsth~X!UktA#FQ?dLGsyXyI@=I*u+>63|r3#=0dOfVkys))U5 zXpQ)r;-Qk7|CpvP#RO~+EH{^ktszBlN-lCbr?-PsL|K&i#Z!Cg4hZX~7d@k&^;15qf0 zOc8}RD2*l|jXLWmez_DofE6j~WY4%Kcu+AL!(<+FHDjeC6E+M@QV?5FWnqC9Ba~H^ znyjHk3!4e18bw@jCMTZuCX-W&tB?nM9lknP`YRW8cP+gIWh*2bp{#sKug}L>mxdmu| zNBNzg{~NmWFb_67x}@u{1qPK-2`Q#vS}tS^TgeA#@d#~!ReWHvBJ>Eimp%!RvYX{i zmxK}h)+0kOF`d^{#7n%?h;KLpWKfbn;>Z&W@mPDXSWe(G5-~L*13$!D5Ja1)ysI@P zW2x%PV6rDd4hNZISWZl07A^v2ma=zFA=A)?%`i95&}P)izj5Zjc8InDOlRyc zzyxf-2Q0VJw`X^IP~{52j<9n(NgJ&rEOL~lU@9BHBCi`PevCsNRn)HM!BVS%!g0Ds zEBu<7>n@wixd+H~U5BvtP!IJ`!wVaz=SeU;T&PR+FocXEFro)+L2O9O#Ga%y90Vy2 z|EGEZ2R2>NKF>HcK{5nnLL^3lpp^AWGUEWcM3_$Uy?MaJRWW)>10{tuZ*80;?ub_S zmQA9%%?43f6J`>}hCUSI$7XR!Q5I56+4)8FfeK8o4T$;xh zA#{eM0z623=&ev1I3ZaJfT*_+j0>h5MRVkwQ}l=u#hkHm3!nI#7VIliM9aM5X>x#n zP2{Gs+uE%m~IJX*Ua$vIlw~BP@iK^{Evm zsAU@4C`lX6;>%c4-IjlWel60iz6a|(f|#=mm$8lzi>uW9fw=<|G<1QZpr-- zApU`0uMOLIb|0QRA0a6WvchMyJEt$_E={GJlrI7%7|k}&Yk3mNDH$3oQ&fv+ZWU>|7F3q9E!I9MMsWa zxyWDt_mLxf`6Ej;Am|hT{r?h6Z=o1FB1B&QgQSyy~ zyQeoLPJo5wloo9f>#gqUcA+-R(5xbI;)3CO%>df^%j>?G+#96{MxaCL=#eVFXN(j!guZCfu#f9%Na$>ZDC zFW-6c0?T{%ZeC%;i4(VD+>V`Nc9GXjrd)YlHO!ea1LNG;^Dof9P@xK4+81bFsa3B| zt;_Xm*sgKSrd`|iZQ8eP;i45sj+{7gY~{N3`xY%p!QsFOZj09LTegD7akLvZZRt$l z*oxhq_4m}J#f$e`-m_-RmeogQ&%W_{#_r_Lr(fT`J$v-))uTs`e}4c26cE693N&!A zzv5AFK?UJ)@WE@Yace?nW=Tbvw8R378Dzfd|7t5^^4KFQ5|3f1sZ{n@MWKcEU}dSL zfa1d`haxg+#*AS4f{#3+fP$xv_J9eBlTzZN4~+IO38tHB;^WCa9@%La8z0)pDJqAV zF~yBcQs@|BTwKMb6!ZAP2q*M-5vvcq+E6Swm086sw49mHEw~&+XU}I;F(t3P{t|Ss z0u?h#SH*;Etcap2ohpWy zB%f$$k0G2mlBbDaI?|~pd3w^RB29W^rYD~qX(yhT5;7@u`Dp6JroLQ7MHBO&XymB$ z*vOPMyLz)+a_?GYtvlb!^TBwU(Ibpzxg+;W+9I#k96`!-bKsD)KjbbW1V)uJBH>CTuYwz8y=ZLC?o z>%;HaX#cBraBHtE5a?~Yb?{qoCq%{+WW>s_+;hdc%zCfrfQ^{`dBfcjYubb zmPT<07c?adRelEAaH5Sq8fjzizKm(Q zdAU?>si&^m)2q!UYh*Lkr&<+<01ohg%4tq5YNLzb$cAmYf?Ig_R~ou;#%}h@o8IEn zHxT~qZ_*+h;pR~|Y-KBPii69y?z9S3Fynia+fbX5u@IpsNe{%x%E6{_Bo}zxEPV=U#w>aUw7wX~Fb9&~Vvtoo zMlB70lM2RYfN{alR8Tellg)M3Myj#}P*%bbWp2g>hc~_bzoDAv@`?=?s+5IZi4}S%2sm4`yo9jA zCR!wlMYh<7b?Pe*{FD+giUEZkxDH@@aDrg*sj;Sz$wkCi#X@2C1l8?8lsksHAl@Q)6&CKMFI1vQ1u&r{Ij29S~Wl? zyw)sKZ?=G5vw%?+240#0$T@G-qpl69 zVtCwR51N#=MD9!_b8DWXy0n6`geg&j6H2SmrnpePO>e8#8lBb@x~Oo({%)B|4WdWL zzWk+A%iP^zqWN!X2CtgioXqkH%EokF9OEohzC25F&(3(SthKTXL1SeVeAv-Hw>h$L zu0p|&9trAfq$QbbaTsLmqL3DBvKm3*3rNi2BjC!SFAO0S-~^M3vNA70kBobKOvNnb zBwCo&DNc7Oi>{l&mTO#8706KSYTp-_kk-T4{z10hk|tzfb;gpD!ez9lZEfIk$Jvx(E6KH=l$J!v)QUxRiV$$%R=?4 zB3xpf;f54?m98XwARn94KXVAg*&&2Q5Px)x5@uJ{!DJ(Lg5A&5 z{jA#yRP-W)(UvxAuwFK>d+L7=+%o1{}bT| z(D@iH(WfVfu!CrbF3La=YY6+wFVD#e*Tag2P=k&=lRNi&KlmG=HLJJ!BM`nbFF8{j7@7tNai)OtKY{~5cCnl`3AEPxKvnY` zVo(=<;)&52o#u%^W9UH1i@+4=qJtPG(c34gFqwZ+9fM+p2BX8Vka{y9+z%lf!XINd=R*%m>4m15zG!R0|5(C4C8I)N zd>d-BLi0lnOBsz;`6;zSKkHIIW6`cLj5jizsxw5xG_*fuV#79c5cQe`bO1UzWG^~& z2C^U@u*gF_)GSkwwaUVZW6+4ExUgZMJVTtvM0~UYYzhG@qCD7vknksrIU|-62xIWL zgo8a4^hB4boUs6{S(qVHl!gd-kZFL1yD$Yk&;wCm#T)yJYf-}!DvULo#UEn~Us|@y z0EW@n3|>q!C(JstGsaCCMzGr?nv5H{@kLY;gP%e->k2b4j7BjW!!wgNYdk~x%SQ5A z!@k%zej|%!NG}SJ2Eu#D7<#WfR5;1&oDvb97fCB6DTod8FVt}n|DlM$pb!d2RESU` zh#^?4FDb|%dY5^8$Con&5K$2pbVxWs28MtfII&7otjLW*heGNCE@+=&dqr(5ns<;z z#Q4EOiI0;^NvNv^m2ydRi<+|=jdCkH)X2%2tU{Y4#_uD|S~{v=uoP7ihU(fNVqv#- zE6R5xCc8_@`TMSHd`zd*7Qb5|yzs_x>_0fkkY%VnJgOWI*-F>@LpUN4;o+fhiVDqH z5rgC=6-moSYn_d_#DsXu5qpBwqsxM{EERD%cY(QOAT)+#P8ot3KGFldv=j58NW<(F zZefsKdxnopB*%PAkpi#8kj!_O55zdh#(26&vL9z-w$2of|708u(Hsxb1dr4dDwu+) z|GCg!p*~!?B-o^zrcpPcoXzz+$!U}-7A-@nn!l>*%{OZ;ecP%&nFR=;N(v!GXSlil zOUFDE9)&Xn`O1o8D2vL1xW?0*7ZC`CxEB^dw3KKFrBDcX*@&cwN0Bg3fjB@C>71Pq zG=|U$Q}}{ZXehtbv*e^tnyDFQspc zbCVknJyb*m4-gHFFDp^Ed%H0Fu@%jasB%&KxJLPl(caufZiI)sc!oM_9OLX!+jB4G zY?FhOui7ipYbuLX6P?jXKqlRYBh5!lq@EyJw8tw;|6_ox^K=)3Tm>~TxY!#Rtxy+q zOjCi=5OvW5Ke`jf*(hP-LBlboI<3>lj7$T~Q~4mN%Y3@Kfxce2pQsDe2~9f?O;mNI z$wfsfpp?y_j5{)$M%=X27u`*IW6IyG(FPeG^wQCQqrsX(i)n(-=H!a92(*R5%XeX! zWZ*<2JwVyn2&7=OTqTIrF~|yRQgE7z(qSwQD+>^mtUPF!F=dmjkhx_j3;3L&X|l?V z6ub$ERydtjkjyHqQnLcVR036uZcR{SNtSOlLSkvj+5*(hfIcl$yLKJTb$!~^Xj*r5 z#`JqTxFbs2oYdTeKc2N#y+fw^L!<@iHE7r<|Hd&NXW*lm0U!6OL$c}$l|?vLB|w%@ zPhdU3G4Yt2aEO-kCXKzYRcNdaJUu5cf)ETrk?o?um9Mzvii6}HmQmKL6brWCqi405 z{46>K@w;rnmYmgDyu;K(afijIk6Hv*^$^#}DA#7wpDe@_Bx_fwRoB&&T1KVXFN9Qi zg^v}bMx?aVt_@uo4O@PVhr0l_W-89y8=njrxF0>($5{ogAd9P5PZ24>gtJR4@g_ZZ z0`JX(c`=hNXt=|5I9OBMRjAVJWfK!jv93S{6+s4*dl@}z-oY%)%;l)f^_k9{(*gky z`5Vxly;gVl!Jp+;(@nNMrHs)~52on_|JO~smu%YEHAa`RT?}G7FU(zN95YF!S4#a| z7v--PH=tk44}VA$-b%4HLXcWx|h6s*64aVU9so)Q_T@5Y|c#T&NCbRZ4%DUUyG9+P5{aUacJ_PX# z9Q4m_>^G{si_5jja&+5sxgG&bSvd+cV%W&&Ot?DYO2#r1@fDHH*X%Nxo0U5hTr35NZw3{{gwi$uv*`HDd&w4?acRYCr{9xEo+l+R?}@Ny%fD zqT|st4cdj~41U+3>|m^&*WMLmd%aXbHsNGC;Y98W7z)k>`BxVbpNw*g`gPv-Vp+Il zs8u#OB3)mIg*b+z&lg$JhFFpHO@$}uWII8f4UmSHw2=mQ4zNM-^{UBY$=$kyn=%7twMPbQtrHpD& z=I9HCpmgR-Qfa}KTEK2;mwxH?P*9m>(V6C2LdM3McFMrG3*hVNjp~zCxKF~I+_CzK z=&hmsyNdmiUW4O`9zuvc%&hgLuj_nAVjxe1>uPmm*`lV;u;OgWZD?tQ%7{Lp!6D&_ zrjN*Mmbs?ux>jICkp)zs48HD#HnxnvCh2D$Z0cUSOLAtzw%SPjV3{T+ny%?@24_Tm zN?r2{8$+MEP=#j@)lpq&f}`yXA&V|D1Z9P^sW!CmUV?c&3*aO*a8@@SpW4FSU=Bv?W8rQPrn~R<=Eqh_6CQ7Q=(R(7%Jbs4y8t-l6>8julk4e_b2-Q^ zI8&~OuXJJZWq@Dl9q{`0v+UUeQ>Y1b#KX>NLBTX~Gd<4l(QN$umM!Mu1>s+{uGZfs zWDCb|48Lf&hHK-Nk6LUDR5*n!ls>C9Y`~_J6<2AN`g2`!@e|eE-QAl%2IMoVaWf3> zO!W^**H^x~i;slLco3hm4Wu~K>^x%da#>jzJQspc@a7Ca(`Fgd=F0)!$~i%k?WuAP zF<8$wg@^=m|Mf0K&93DKM{|f~EkrIMH!ooDDziEl=92`5Q#geYzgnv$SL-756c6-8 zmG(k^#%I4;n0}ANmNy!&@f*+765dp-QsG&^zpcVSqU)A27e^v5^4gPSupkR0PsfEi zI4L*nooID}1~JfLnOQh$T3@k0DVJH$gIm`lGUxRzw%OkPUttgTw=Q6cA43K0g~w2~ z%#3bA4^e9OGHW;Vs?~1Vl<{p2WJiB=iC@a$HJo0XhH*A$2Dwq6X76_w^Ky9{V^}d- zXNJ)B3V5maWl(i~|3tPzxP`DIcCljmEtj%@ncG%)2RCyFPitVGQ)H^}IQN?sRZt+) z_>D(e|7-tvUkU6GC3Hu<=5^EdZQq;4ZuFFoKZ)1WNvCuJnT1)P(Wf+LX|M~_YT+So zZ=81q6e~RVlo#@0<#dePE~j+@XNE`U0--mC+QXcsZ?EfF22hv!hIVLQPjin#WZ%yE z$G(rPcR#OR;J5ShkO%Z>$73#R{kqBSXQ$1`F!@QP)VSBpxd&k0+|6n1(W zcKN{YXzAU{{Cc8Y{i7B8)<1hdzn~P4UD=;~wa@mF$9;fsCvYIaf(Gp&bZ1W>!iEkX z|3a)MaU#Wv6X{{hC@~|)jvhJAqc;zlDs=Ns%1fzIWxRN^R5fcE4<5~$HsM{%c}*J6 zo<4gz3o10IGE=jjAswpJ8MC0wRHfRZiWya^sZv$Vs&(tuReEMoT}pISDpRIZtwQDu zDYI0ohW?D(Q|GmtHf7>%xpJ?(lYamD{phhCMvI0k+N)=9G2?;l9z%}&m>uQHme*m< zta)?hYMwuXt_Ey0>C&c8qfY&+^sm;gS-(y#d-iD0z(n5;t(!CN%$9#smMpn3@x~1Y zLQJmwFmsFa2n&w>ah@t!fcdH<2`%qTyEf^{{VCR&Dpg3IjbFOV)R(teuX2qq|DT!K z^h1}uH0u`Gv+{7`?lc!&-qFMzUfA^o*h$iT)ZAeVO|(#P6S^auaKK>W`8?2pVl4 zf*7KRA==jAZW{82VPzH$N1=-ZDHmfy{q*CYbIviCBSy`bryzFCtTKx{1`=2kT>*v% z)KJKnQlEWFsq#fCL$x&}m0KxQ)ssslg`P9ZAOn>tW$n>ak^&Csoq-1;sNjM+YGflt z4n+v#iw3b6nTi>rs2OPMm}uLGgA!V(X@Q0YXrG+z8C;$f-g&2tGSXP1oDRat;7e}K zvzIip%n}bv+!aaFk!Qx`j9W@|Ii6Rk%rewfVuiJ(t!pJER8sV zq^NCjnrUH|Mu_LCU1 z7cC2&vL2zM3N)OeBo8{EqO%u~rQ!r0sy&g_lvw9^8Pru|IjM>%w?aHruH*Ui46sQG zJFH!69*bZ~Zi@6KobO6R=W*(u>sUJ#=GiDa;_`;5Zr##6qRffH?Atmnm-|@Ci>({< zLnPz)+`Jv}hz>|@f;x@A9Jl0M#z>y246L@YWy&f~rLqiCt2~@=#1ca+O;7`)IjqJv zL9G|E3Lec7(K0ghvp_3L>vGPU-TYZ?H3KeN-=FR6+n(jJY&VP&{~{-}j6@f$(b1rG zuCoFHIvcXX+{CC8|c z;wrb?XyMonUZUTD59(oV#TV|fqmTZ+c)AQZ{!qIJSqeEtl5do0z0E8Q7?1bn>u*X> zOI??+NzRgrGD#}Mq%uK;87t~RC43&PV!JNX>#*yDK(nje$C4E{!n|vD^-vD=qIb98 zId6EFDV~S6wLB3C>TicC4F#`tt-U$#c@}cuL8_-58exw{+QU)zlqCyQ$ipKcImy0e z@fQMetVneUn81GW47Us{C}c_4OOP=OQy6S)Vlms<{`V7M{{^g6#qt=w{(?IM>P~^q zdIdjoGS=1(l~t6SXmfh>N2_rq{(ep74%_iC2!MQIhD)Ll%H^69J7yBtxceebQjk z#m@A@Rs7^BW{Kodn8-x`naz?I%a{~rqRCC(PGkrCWMbU4#Zh|ki+IZ$D%PR!V|XOJQx%F?yZepc#wDg@|7 zS|}ZPz$7}&m<9N%m^mEg5R*KtOZ%RIsv|N(F1>2zMV-h^r51941mq-0xwpbeHI9}n zgP`zUI?s2qw52Edpjq7*Q<=umA-9}kKU1jFo!+r9%1WAG_63cMgd}7>8f4qBx5H`U{gC1JkWs-H5I6BwKHm9512b8+vqtUYMxZ0oW;u?wV+CUfDf3dc&ht;{ZS5H8$yUO}(yiqkPGlSty>!|% zpSPV6e;Yy(-R6~-9jVterXx(H4VP0mG%l%1bzPbuBNffKuCS&7D`_zHiByZM=cJKb zr6Tj2+QnB_4`VbNnKQiNEv;$W>Du-34ZZ7?@r&IkU&}xS$1SQaZBJIx{n|CB*ZVJk zSLjK2Wki^r<;YMGJY2yFvY3R78o;EXidm$u8BN0QWT*Sw40~9al)cG=1(?aqP7ynt z{U}IHd}QXFbF{v*QwdYHvhkAD#Wju@|9h=P;}^g2lq`DSokKOPqvG|JH^)2facZ2~-P9O4$*F;k zl9yc7C|^0tsnLs)tApjenEA`q|DleTkDTT@-#O2F?(?4mJ?KIoI?;=6^rIs^={cvl z^b%cHA^WpkIsGqB<0X-CWBuJPgo($y?rvy&UE^Zscg6i}7Koo+;%Z+z+ar!|eUn}6 zU|09OGd_2(<2~LapT@}1jg*#~+_EW;wasBpjl!3_7l_As&Rst9k=y+7j!!z}D{uMB zV?OhjC%MiOe|UAw8Q4IsBSfYyk!>59x8cURxUms(9&tVIvQKx#?JoDS=iB0{Fu27T zE{asNJ@~>$c)fFP{M*wz>|js+?3<77z4sj{d}q1JM;>d-A|CSDN4(8%{`iC)=4p6jh!b)3fqdfnY6pAwE; z1lpTf9Gu1J-d8wa75W>+N#MTKUft221tOvBZJ@e&Am5!J%7viym7%KH+{uw#_od+C z;oQvKT;%oK3cB11(qJCy;U3nZ3oe}->Kq-;T>N2A3Y}2>aT_9@UbjJx{wYE;OoJ?( z!vCGyGi2Zwb{rGl{~ZB#;n?+xy%b;COT{!wJS332GlYbRP;1BMRPO8y4f^#bF=1ARjv8Gp1kSwV&jHpW+qc z$Ppq6Et*3pT8)_AA~GV$2x03zgCxctQZ$1t&Z5U{q5w8wzL~|n#iJA=pA)(w@{Jun za$zTK;yTizC5oH}Rw6opAPAxZFJ9ltDP#z)VMDs%H69+zJ>>XFDqK~Rzi&mgSmt%OoL3+OQ_h| zPXc9LNZD2;|BE=yH|ga{xD9Xi<(lQ1Tly3)b(dkR? zrHmf1Roii_n7Nosu|W`3PG)shW@YLa97$)PQJX$_5h0e|(@7mSqNGWtZdr;Vf@AiaCvyzdbF^nO7-(w- zCPoZsY}QUsro@%aWygqEfF{(8ibRYKhG`}uY5EtomELkbC1Y&pl3r+rUdWOTT9Tqm zXELZ*8ltw5<%tp*UY+Hope9WIRYk}Ri~{M5(x~msW=YfwGVo}dx~c8>D3ISIciHeqyD(aQak@OI1X>DhqYACL5 zB|&&7p`wiFd1lnfYNGPfqMGNH`e2Gu1T^rGYBq<_lqxWV&x~FfN%V_s9u=sTkC`qR zfm$lB3Dl*m>OP$4Not!mDkrg;P}9{auR^7+!s|V?E6`AB4kqSUW*Z$Tr+Jp;BHEv~ z{ogsb=PqrJU`DG9aqCHtM0sQ@s0L`l-p;}1h%W8JHzEdEnx~cS6R>V3p+YF3#cRl} z)1c04b5bdgEm~cXUcT-tzbfK!rYO07&%hEal0mD)z9p1#O1&6`rU|G`LTosN{|wHW z>dmIAxK=C>TFSYKW}bp4oy}{9iY&bHYOj_oyJn-X!fK3UEXMxeH%?u@HV3)B(EnkI zn-wk5ic=M-0vFg&(86t;5^e5`X~7~bMX)NlCTsm+tkW`Wl{RR{wrh00>(mwm$zCn3 zekI@@qLI3+*E(u~@~e$dM|B)+af<1Qk*V5#6kw=A7^p(riZ0y9XmAp3K(Qu#+6b#U zh@z3^HbSn-KCS2_ZX8*yyVfqWG$qF}Zg}EU%ew5>T5O|Uik4Z&ZW%19&h51R#Wc*q zG>mTC>TIqVa}ZxJUJU9O!5FTWPz*6t}|mT!{YZUY|#?>ZfM zQcBDA?E#mk0t;j2752yN-zZ5 zFrUg*?`mx9I;}}2u++)$bhz*fTSO3(qz%nq)u#03rDV1qT5C03rViNo`?gWldpcX=7^+XJKt^VLdP| zG&M9eG&KM$CjhDd+yUzV00{p8{|OvOu%N+%2oow?$grWqhY%x5oJg^v#fum-YTU^2 zUoT$0I*J@gvZTqAC{wCj$+BfcRE{P&Lglii&6_xL>fFh*XTe^M5*)y@#XciPl{slvULRjzP$dji;HJhd|;=z&FH9I#d2rGbzU(Y^y5ENSmo_Eo{zJ1qlP|Pqc@Kl2!_XQ{* zWx>4n20?KAH{gN{_GMZS-U;+Z14T4w;e}@jGaDQQi9sQTAclz5Zxt4_MFYW!sN#w} zF}DJ10%g%ab}ZItqf19XkYYhcG!Wm7Kn6+D7AT|uqd-M8Aciog@F(PxP)?Kr0stNq zL<392G*gsZcB#-3=p8B03I|AW$eD~d>E)VS3X=i^KORIT8iELNh#MTTsV9^tuApW? zgn?zJ8)EKhsED@jj5yNDS+=+# z)SaXj6h{gvmW9eBhY&&t8lDzZ1O!VkgbD!|3}PoE z)sE}0My)V%h#-WVQ3WhzMLUSQ9-zQPzj1IEu0U`IKt`QZP5kf14ZYIHz=L>z01HHT zV$@b~cyLA=Gem&i7O+NEFGEFii^#tHa;&pNr!;bg2SE^l0tqCzkcGxIiK;Dv2t+_C z9FajVgAh{ZjF2u62!Ox`D9DzWEtz_W>3B(a0Ms7RB;RYjZ zEG^IyRF3~D;S9qP0IWiA7ytm^4S4N1j{<_XV{Nb+m>_@v2w(|+E1Fy)2&RDqn1FaONC5h#!n~BgLURe> zg&6aKnQRcr$TJ8$cN;UAh%G0;Rp}`C9v=fZ|FcE(x3)6q`;qy zeOFi$Yt-({WRgrm0z)-GfB>O`geFDQgk~seK%|Kps-S>TQPFKlAcTN`p%*~|0@Bo= zh}c6F6g46$Sc4VR?M6j6mMw>ybDnee|F?7b%~#fX*IWKIMHWBj0w5jW5!lQS`@A|M zxe|`ho@UzC-E)ts)3W&t6Qg;KIadS+Teikv6zAYM-Tt&ou_su3;tFFLlYqH6pwSdR z;yS59HsBbUC}_gka?6A2$U7Mz;a3Ge@G2W`Mq>HQtoZsi^SLbn8Ix6g%zhn&A=ei& zvUIgrE(nu_QZB7YHip#qIw6{$9^#hFH!;B->%53jU4w2TOiU(Y>b7bf4x15(K^a3D zT3kPKRDRq_@*xfzn%f4=;8liUHJKj9CO@4XO6w`47N6~svk)5;vcA)16{iELUXW$m z6^}1-W`NB>oJ>>*WO`qDNG_HRKw7AM>nVOIS*g&!$rpREzn(W50(#&&aQbmExh>Pg^;GYqPYhl%|bUt-;8u2P4@gE#zUs6Uzvcbnb@RaAlYi86_SU_NN&Iss_ugK>D3pG}!i~A| zdYihggXBtD#wi+8Cbavw4#bPRsUicsIdFO%Aba6MW;{5=s3WiF+v<=l7meOw(KN4a zGBBBWN=j#9aEeaQONmpn3`P1x{QIy*&cW5+t}H$Zj)a`52~q^Zt6e}p>mH29F)oq& z_fXA>`>1rWadoOCv|$qH)}6XN;WW;Jv}g(hVQFla^il6@y>4bI?Q{apQ?+R`7*{e=I&a6Yhu!-H z|3)5JI`9}pT;N!efY$$Of*YQuLL=;wEW{Q`lgJ}X4OF@2fDX9B73~Dp-4X_bXu)v2 z#pE8e3o!rmChW!y%5u)i4`cf+Vz3bk$btzi=cj9dD%%yyR?*CxmAGsPPQ+m7DN_Y5 zmJdt_UQ)nFic6Kk#pY;=0^Z8^Pga0ic>ak>&V-QlAd*jhVnS9(1ISg6`_Q&ox zn*j8GF>i+guUTXfK$mS^iG87h&B264m5HYxYMkI=ZJCfc1AE_9y_v>9a zF@g)FAvqcXqFJ*&MG}XXg;}9+AO|+$SO{jo^>XC*eK5Nm3XsDzCT*DA1`6h7nR%7T8QOkXD3T}@uNcJr!Ip}oCGVYZ8)4{AJg^HTsB=JO1gOFH z-y+AgBrWwEWVn=bD9Yl{`grGEYcT5g@GtD8_@bm9LM+2u%N&?L0p2`Ob({GnIC5_~FvBr|Yp-7zW3%2A($ zI3})g;@|=^uca3UGZwZ_Num_2&BZ-3N7E$<%gS*9=CE6&g^?7{`FB^xd6Xs74Lez$ zSVZ`>)*?=_8e-sn#xl1iY95tC2ov(;5!8+K2{@wvmuN@=)yd%C2WvWDKr~+xH@4e6 zn~M|4eRa7&bYfv5aOCerNW2{PX)`WPifhqDboqcrn8hsw@TcLQnh5_sSvr@DBm-Mg zQ2w%GR>^qR5f?IU0;9E%NJWiC z520F4(3~VX|5Q88z@~OHYXNoNneF4ErFfdlLff^!$z`P_e~}Y1H5Vn67a|IHm11FU zBIRKghH_l(SWa0+g5Z1E{BXqN1Xw&*nFt_a1)L&*7x!&e2cR`{{4OQ#PqtK`#HCB& zct*l>l^5Aze{0A3Hg8LlJZ+7OSTh{P02S)Fsb8P}>ektWmIL^F0ME`LgepXqOzhoJ z^iHRrm)u~z40{6y;29V^ch9^Ow#os&j{ARtpch?7lKIHA6Yk%+#!XdV`}@V4^pdU- z0bR84{_BGV0JI8#lBAV539!8a!pY%IDZE*-Tr9z*Fro;2kc=yhV;pXT%;heKd}Vpo zd(9Zr%rXg9#T(I+71=*7-`op_aR@aik61@o&tZqiPC)kvYZ=bAJO*hYS*;7YJmA+Q z!>(MHw14-C)>dyC0L4kcy(@7vj+cO&Y@6Y9^=Dh0BJN{l?&2S9xdE%v190jJ@X~h> zl^-*S7v>JM{#gi%YypqYC*ic20MR|X?>jD#8MStYLxeLSF5y%kBwkpm-DgV3eR%d$z3~eCUS@&$At0;6*T9#M(oiNv}iVTU!2O_0jpJ2 z5qnn_=+d&QAA+A8g<^&xYADx`$5&i`pNdOB;%J~*;Hq1efX1&}gPB~xOye3CeA^AA z(*sFjULEPqp3O3J0t$H29G+RT?6UUsdt4xmY2d3~a0zQNh$-iaBDmNH6^uE$wWrNH zUUu1hZ*g|jj*i!%ei-~QWn?o4wv{Z(KfBRJ7L;xgcsl5HqR9=&*Xz{I!OQl@{(bl z8+~Rp>(xfIyZQ-fI?M|nP(~}EeBp);Iv>GBC-^sFc49ph5M90*&s<~Zbgv3y6pRkGHC{BJJ!b= zu8?BaqRu`{c(Lq?h%kUurHH@xuZ2K^$D!w`hs275anwLP4sPJ*@urmHvbV zXs>#a*;d9(GnR#I-?0@ZAReRP)&aGygPYw4hXh^MK30wfKRB!ZFgtYqyRWa?8u)7? zjeFc{U3+Z{ZouOr^b9oQfEzr{0<`N1l9PW317%6LMIVkkWLT8609H(uZN7VT-7%g^ zMzohLx=Kl3v_0}KPwWXf8p@>ZZbFYSFt^fyNUqAb`>`s^LECS6?p^J~#=FNY6$xnJ zCokNe+2MuXs>{jkNHmM|2M@AAA(HdtfQ~h@PVRzo)*e$b>)C(lY~v74ttHd9x>0t{Oy9LW*+D z(_(Pb$@m>K4&?v%{2ZIdRVieSv~AE?!C84qq+YGqW}uxz2*%n0nBQCeibdJ24^H@2 zFU{+CI;l!=%li|A9$d&!^oyM@4%Gz*n>}0@ZX8M)H`>*Kd!0u zPv~sFwrjLuxM|0R3?v3$hH_uw@4KiQ?YxW!N+XbCi$PGGSW| zd=!IEkF6o_aKAAVaaw1KwK`(k!4coQYXR}z-=bU!szY%{e&{1r{dYY#fO})J1z;9cKDj*ne9REwE{#X@AhilMQ)LcJ=7}!%)MwOe2>VIL!o?z zk8Cg3YantT?&+Nu3>sJSeKmGntMO~pYs1WC1hwPy3kF2+ofC^f|+XG zrh6C9bdbhsOcHshXO;r441j@q(=X(QWLr=gN2u%-oG%3cCJhTgC?N^;vE<+&CoKx< zn8U=oWJ9U_(qJ;aIC+FS#2DmAoy8ZC#A(?LI7G9#mlAXB6Lr~pm7{uS!U&B> zbXHIR%5E>a_#~1h0yx%ume4=}qVmpXhKGYSMf3E5qOq_~(U*4p{e0kP_&*!39r*7L zmKrgmyj~V0M!`ONbJrZ0V6syQfFR5XRezO>5H&2LuN3KT_VWdZsSf_Ag8+}x20I4< zz-t}`69+3nADo=xC8S}17@8Is@8K%tf@Bk zKL`1clt&9&_`CCQOH%wWY)Skb>XIa^f!CPd9WVDZ^NYDz3=mJ3F)?aB3>NmoXg|K6 zE6cPGdd>?%$*MGg3An_k*-?w;1_(^MGB9O_QmmlN4wwn3W^w`n2-AGds(=}r)eJcW zU2@2J4i5vss}V;0NmT}5e9{XA>#|6(H~Ai{F@`sqlHa@9%7tXyZ}w@67raso%*aV- z>rZvqteB!AcrYYq0*;1DeG2}=#rBeYRQ>zO>vdpf4hwJA$?=*$z?c+jnmkp}bfYBK zJDDuL_!`k*$EkyPCZk#)ve;`4#?h0vUFt^TGYQy1wBKCXoN1Y*dXsHh;N-wm8&=(Y zAfUTu47nLJGf3KI?WNUmQnlf|Y_mpflJzL6uP!L_^xCcQz;!6LH~1#Yd5C|<<3nBlNp0EtE^-bj2W$;{k{xZVk})e0OKK&{PHSyll#E#CgupwiY;bJtqMp?TA%t~ z`!5bGIz+v=7iFeDo~C=>p_aTonzHJ?I}OYr7P01s*i6j%V#<^))Zp1)(EV~oO}_Vr z`Q?;zce_k*z9(ne%5FzVO^`)mHwb(A+)O{&*_k)TcWN4&c5s9#J4f>BcWSHzou`!M z$+u~JZyk0&J3FMBQlb-4-l*?nW@kAT9t8L_T5y}+H;1`SPsyyen#g2dnP+>TQW+K=;JMkseH>&?Xu%78tAAN-BE zVdCdxfB!y0|Bt9QCFWQ{?6QeynnDW9FVsSSI@(Jjanvza>QonC5`EE))?W>Q`|O1= zq=X^Vrbf9j|M6jq&Ucvt@@ul~+>^LLB?Hcoll9~e@Lj+Xmv&?Fk;xZvNTsv%BW$s} zs5UjFw?WnCj{jo+EI9ThNDeLZ*BHuu6}_W)QVC<6b+fehz+&fF5t^vr!&r5F5?4y% zCvBhsAcW=fz!t#}K3fi(i6zcfx<1DPT)YFqMvFh66%yzeOyJa;O?EUd)YBA~DXk}j z?B5^>nGw0>bJiMCeA-fc*BA)z{!{G9}OAVRhz&DeNpWTr$K`O^K*A zCI*Y>yACIOyU)ZrqDVpYcJ~Ctz$ECbsY|HTvl|mRm0pS?g);MWC2~qidK={D6Y!Ui zJ(e*lG~fSP61TTO%SFQ1Vz4$?)zFtUdaP^xKA_=A0|`yayi5EZ?BbzbuYN#AW$TNb-q#8zH4>$>Q~)yta9y> zqJ@rJD&s!{3{Pz5maHTkM-Q1p%BA1o}&$rh! zj|{oJi3cKHeNJ0L3chV(+?%*@SRBtw{}lf5D=ebV(xw-C4&4e1uR*j&VQ4D6c6 z^7wWvSX0JrBi-{-i2_6yrOw$K;WT}@$1iV$rgQpvzp~8{as9nJ*IHznEtb>WM|ZnGOy_;tprQW z0g%SSe1SX@tS{`=v}LkV@n;KcI_203*)5$ge&*T19;whrE^@r$<7OFSq8(#w%nplq z<>R|YEZM0?tizE@C(W~yR_T>rtf>fHJ($gr?uZGqF?!;+dlz-#5O|76Q_WRf>TA=J zyw0WssJmv#WT%7kr3w%`p=!T~XSQ zs08*lINq}K|7?*(f%Vu2w(NWKWbbLYkG9T^>~;~GyHC(}a^6D>8FyPgGL+QgOPPlc z4T0dg?VAes&>bSaP2{l%C78p`NVoOMlbX$MDPz_(lFvRCPQl(O`+OTK*pKt{jn}kg zjC@HeVx82j%iEl~&&UNB_#m=klh-3f8D>i+;(Aj^TQZWyro@|@C8bdhmS5gZ{nxQ}*2ki>@W*+H=jc-X z*fYxp%9`$7(`?x5yPm?7lZ1@bY7IT)8PdMjW=59ba%1&ZC6KxGadE^xsncS{rD#r3 zwl=R)$&>CH;GE%WIpgjgUzfDVa;H3KbY5V_+G@V@(!;{E;_Kg>8;@>j zejB%PBwQ?k!`ApGvYkvyBlfl&Wz3J`BbMTc6aWh1X5F<|aq!EcA?^HT1?sO55id?^ z9A$y(Q46#GO7Ws&!10q2GWeV-UCWCp(3(MvfupYob?SO09b)%cLh*5=>Zmf8m_&Bu z)lAFW&wB|Me{nkQcDX`n^yEZ2Y3KyqU#d#G@ROxB1f969>1jbDlQY5U(k5_#P2%vpUa-bquQpxxx0Yf?o>9>!H)#Y~JDTU+5? z3BGz?^Nnl7LYEdgm9#c%qn0P@k_=FG$9$8lfW;}K6V%>FbN>;S7jv>m+^UKWch7XP zBY(+?&dZaiCL+!9;2l9K!FFS@J92dIub!2{{%neeA3w`RDZt3i9LqyYfGir*?HfyA zI<;Z}LvrP0=5hE-+zkEnEPP&i9d6Ehn34O$?ebATfaR-pJ7UzD+ku-M#nWBKD5{ID z)Ng_EE~*Hxjv|*17yNM0tdf=w$BmWsg_Mu}q!u%hkwF~IsrK9XvU!7u_>`2$wNYMbcNofZR+_Wk6YT0wo3qq9qM582z^4H;uLSj-4PC|77dmgVe_Pxgf*cTt zY+N&clUb?p121!E7E_7TDvuYz0CtAIby#j1bG)!k`|C@iC8OGpxCLovt1NnsFCSTq zCh5NSvO1@)HbD?NN||qX1abslnz0a^*Bb;2%xBJ+qbGGMF$VCBC$HDAUuWCSwc0AP zuWDsQJK60D0gSng=15+q^XY>hrK$kEQ{~o!j@)7fW{O9sBv{SPIy^LXJ=32{-(K^H zPjso|P=1d*LR&B%gE^3ZFivi1*171&e`!)fqG3?r&01G{`{9;44R@c-K5wh zZkQKt=JG6^uR98kc9=N2RoyafuLt2trO{JRbwu}?WlzBdTh%8@?U^a_+SV#5O?Q1u zE~4Rjbdq*N*go5V8cVYdDekVohJEqIns5c$&9}2<*ygR2!&lW|*) z$Gs1kkpmBbHByR(Ql_3f;b48BYHQ4yTlXx(I&yPWZrx!unkSE|wB<$o96a=3;<%=h zj$5W>yGoPPrYlcRi)f@x7;6aYN-`74i>{!&z3HgCLRBN zmNRK7{NAeV0D*%&;aw20TT6I06hN6-OOWdb1(Wfi`rxyPEC1O?1q#kSR`H-MIThW- zFfOl1E~a;s9hYg7LabuPtXxKGy_(mX2Cpq<3WG zLT6}ZAN2GXfkaNfJ9ouz$@;5}&q6TSG*lkfc-Ui#I1i!=?;lm)|M8=#b62Zxx_=v4 zyyZ#`Buv|p*Bkrz?X%ptv+Cs&W$&VbpW77Et#a$s{aom}DVZAo5aH+3HqJcELl3%y zCjK+0*46%O?mv5cpg`L);tJn>E~)z~NK_d`j_P;NtwxB_+(|%}+fo0BU$ud5h225z zxm>eBqtKb6mx}dntjay6ByjKLK5y0;&|U{{_~zVGhj?n32w+E1mb-lYk6ke>t=VR5 zfmTFjlR4|Z4@GqI%Bk!4UP|NC|uy^c`l6&&tA*u1^v*bbuRvs?!;l{>9Ep48m= zp-Ht;@GA&fx&%sU zp^o31?S;mnC#~Y0E(r>J@<)4rp5juDrstg<5>La7UAob z&QKTgUy;hbFL}}6kq7r;tpzso7RT~hrOr+UXGnmtUL{D30Q68OPo}6bdskFwv7UEM zn}5Zv66WmGJ?am-E~N|kd{v6@=-i3J-oW=_H&U(EtWD0`RQ&zDZszTZM7K9ZCmuQkxqd#O#=%sr zeH2zj)v(i;)YpBQOT>B*wzNEbVyV~jEBC#p`NNjnt#wv+g4{({by(FVU#9BY<+-QJ zv(D?#o&UTaK33qcV1Bv&k9SduLl z|M~plIoe*`VOw-LPqLSk+;(${&wQd(x-X4AHwdU&-j)J%w}Q&XmgYm0?PAWzlo?$T zF}ZQqXT}lZ^%U|v$a8f4%)cs7n{Ul>XG34c-{(HAC+%88&5f7@gf}c#nT0P$Qpj%~ zsNVp$HO)93TGY?;^bd_MbrC5>XR}Nmw z`+W9#@pkgjOKUnMaDniTTh_Sba+Nq1$Rm&?z?Ug=M{bR|gWgwu71zJmtWd-5c3#8B zvI?tvj&-IER;CSv1hXdyMhZahN>_J$U+o^Kn*)F~0veiW5&@ah)ZN6GP+4}AZ1TD| z%avvpydq6jC0xQ5OjvfiMF?&p^;Wtw^dyp{2^YCSZdr8`@za}m8hkUV(1bA5;z`Ku zC(jpq)i3a`8dA%|dnX2W=B2efbgEl81qE4Ot|^lt3=_~frnZEeX|AX&&IeM%`CG4l zCzpH%q6KO85YK3j8xy;lf^o~pvg0GWxHrbJgwamNWcMz1W;4&%e)F?y0WY#N$g!3gc{y}l{a4Bg+mN#L;bcfSRo<0141 zqHY_#b92KueF0Rz0{^;m`aYj`nBhD1(`G4F1u`CaF7(7j#nhIXocft!Y54{SaiTEO z0l^dv2T))Fv9zw2;v*t8PD=zqC8~nahR=+5FIMQG3*(Iv7N&X$4wZq^U(7}-9XF4X z-Ud=?Oe|5Vf;Po5S=pPUVYg-0af<9u#Y`a_Geuh%`+8@OQ5z_hF(QYA(Rn23#9+`yp9BxeAagJX>!eAp z(mfnQ5)lQ4MyoX|VzNmF8hYF>YgA#ioFyhdr;U3^t$_yyBF{q5C+)y~x9ZnO*+*q> zj;4LuZ?_#SU5{V82rVZmqRgQYt|JB%BI-00oH4e+pPEQ^XdVYj_MMupAm zWZ`fGONjx9I2X}@-FFz}emqB=q3X@LeCrH7E=RPpG=ZVxBQnr=u@?xH4Ekk!^Oxuv zvL^&SBKeQ!5%skznGmiaVL}&sK>k!Ov0<`?ruW}8&LDI;Wc>-N#p*fs6__F6#`N8{zNBBgfhIq-~=@9F5)C2}Y67VSj z$$p!*kjfPa^pZ)z{Ppq$nIR50!ev%RoKGBIQ({S6XE)`g;9vT9=a-X$rIPwe-!HTD zL^>rS2Q;Rtm*Y&J&%Q%@5u{@#l0qxj#=W%?PDDb5E`#g2vA#t$Iyrkdx|NU1ceR2CfvGw?WB=Qwd!yt|J@&cY1&kKrKlrXJAFLdch`0%VGpE(nPS^Au&rPSQ-b(BioDTPc`2zzQ_mo2l|hELSE_;+Vf+}C)CCebHTZI0KU8>abQ7F8!t1_{mz4B zFGp)EBOSL^s#ClvaU#b~flo>$3r>8ZZZ ze>>%%?y89^ZyNIUIz^mh;{484lVV_d%&*~mc1e@>v|H#QW-Ky~EQgCd#B|7s*%z;v zSyridNp_Nxcc&8rkAFFT=3Kt_?liE(wX-KY=`u$|@p59(oXA2XXaWMSND^1I17fVr z*}QwPoLB32?Y&PC>kG;S`HWNv}r4M4V^c6}FlLB}ji?m{=L<#qrNXvL= z`=%_LXqPk=$l~Wxy~BXM&Szl=GjgMIO~*>yOV7sL16DT8yOrl{bUyLDQh1OABC5af>bi_mG^ALP zd#&)2zJHcJ*CWf3{f_i~lYs0YDNo0zW+0(1d7 z5A^Hzuf0XQdB=-?;hvdo%naT!LO}Y939VirJ_o(}`n=gcxxqbuLKGE(|Lo9^0P{O= zG>OpE{-Q#J)3fHq-L0_f!EBymMrd%#|9eyZJT}I=@XlZNISy8cx6a8V zZ{45uM&h7E=i3@C{^v_uWe7jn>>Cpn%0=!}B8;H79=*)E>8*KrykcJ;I~K~(ZlG=I zTs_Wa&#IZl%VX{)o5u~x`12Qn|F%V?{55p1_C;rG$qAKumAhTq3uG;+R904mha6Sc zw_kH(0mJ1z66lU_V{nz*gg@wFpYE7@gUj7|+p}pwk2U$7kNi9;hxJk-FKvzs zyy!X#ju&7dXLd25KwrAJEjl%F$wj<#1a_u{9Y{o(@DoMxA^IXq>}HRbn)6!g7wSnl zNU+XSq{!3eI0kG0xwV z;j%>uya@Eb?RDy}`$T`gMLO7Z$+Vul)9gL{sU&^C>G}^Rfp=bXtcr01pS~IREa3hI z!%cn|5r_0;pj0q0dp1;si-89n@n#JxwyDbxUqCANMg?Ca?BvTKp$t$PDz_okJ;p~r zM_YQRv`v{5k)U(XxVh(ka$b+S5$va2p(TK{K=xQ~T9MBfB^aN=4A?IWl(C|cCL%*Q z*J`rSF;F%U7=_4>j7;41_ZLQzKsrl zAAPrKy}0jB)AE`m&fZ_4%=EksP^U&8rl@LO>Cyayp*HwFlMG011Ny)db}0=@;D3%7 zT3^E|%FhOUbHXLdIARm6AQYYw&LKhKG*}bObC%)D}kTc&d1-$M)u>vjEb7mnkY|}s9 zmgan_jP+!%d}!cqd07x#qrHJ5U-+Ug?a`A7sLr5C!o1whtS8bE7`#{pW~^+9r?zLP z=xV{cQ_xjch185XN5lB9S6P_QO}Y-$#i;>Jp2|QT9^$-=XlIR*>eEyB*|M<44wgoz zuy9P0%wSC^aYgyTyYq{}hqXle`Qye7LFRGlGeJ4j@U^dBk=VVh0Q1wumA`+#PAV;> zB>~7aSkoDwz^I`j?3NK`xi3Fi$POe2o|`4;b&mw4HNuY1EyMKI_V+|s3iR`9=CHZ1 zfngd6+Oi(-97JUd~Z>LKG#pP z+xNm`q5hSiZ34h_Ki^9pU@)D4oSu)nF0Q4H4V)g&4ZS0zrr-K>(R5Tl%Ab7Co?D0=f>e3})&Um}u0Y9uflRG7!B5147wCWdP(k_rwJS8>-TSJ|@EG z1oetw*;(`5divH=8s3cFS9ZQs29z2re!=B~BM+$gG_&`C2ORpB-iFC?5lWGp^!g7n zPX@7}Z;ebAbGiUp(?j2$gE#(8j6kKytkd{Aj zqz4a&&`3vvNgIeW4+F8yxrP+$PJw=R&mPC@lQZl^QSaLOanzKYUdy1AApt1Hi3i`< zpB3owkHwQ$hcMp#e;ICvWOAiOh z1Xo8``t;tv8v74v_-fQ>n{m&K@tBnS(nOQa(ytNV zo7Y9OviuD;EE%*qVe)j>+)K*UF(SLV{2?gGSE+nhT7Dibwq*Y6kWKwB*O1%dYa zXMEUJBOsj$x|c&HK}im8Y$br&tG3Ig)!O zb`O4**-5=p9%q{7e+*Rire9Krf>Iw8roMFf(9E-&XtKNi`Mw5P_4ryUY(BnAuKx7l zsh7TY@Z*y4$969a$2DrohQ6Ot>OIkzsXTD;qtg6z-BnOo-1>6)X~6>(d1udauhVbt zj1md+3+kX(Z+53`@~wZ{)%>n7ZTU0=CwNAMdGSA&rI2Y*<{rm0vy1OMu>NOuqy6{9 zGvCwf|J{A&--GsZqBC=a_CLzc{5WR+v+2yw)Aql*&iuM&|9kMv?>qMYJv{T@bNfGU z&;0phKmYyA{2zM&zwjV1z(q39hyhv1AbSSJRfbvXyG-G|?Dv9@9a`o&^Cdv$VhQ1Q zGL~><{{%3WS@y0-XW(5i$cx3x6j?3{wD=01X`}4#hu+KfGe~_5`ViyeC{N{u4F6%~ z!zgc=#85`C>9qy6qxZ8IS`PWN&+kY3Y^5^O;VjKFY0Uq%pcDXV0R}V&{11Xsa@QrH z)rlKNXx{(7pj0EF%`N{in(Tk>{|QP@-U;8XVc;>=Q1X8Tr7ibsPf^Gk^r?}ulM&(H zA6K7mdvu0-F6}SVq*gr4V5F+t>Z-S0SwbD&5_sYCv&*!Y3??QAA;NTV^p@-kj0J_N z(0s?(E!nFZk`G&qd+P5$P7P%zC9-@1UthXvPS#6L3VC(6d2QR-y(~eC0;3d%ev)Yt9Bsm<|K$W}18%l4PfUFMj(lu6=C>>t(A~&_VFg z{GCGCqBHlc|LOoFO06IN&K%ctS6rR6GO6|t>L43wN3U#dPY=MrQk1(NF{ezJ(Z$MI z?^8-VMa`fnr;>A}Zcm6hnaU{1q=}LqX$e-P6VQ*vgdAe)_i` zX6l?_%<70j_>%_jdhMtY5GWEP8)j=(ii8 zZ_;bs8bR;H6}u^uC%m-N%x8(F4q?7VMB8o@R$s?A9<*xaRks}4e#%;-3s_9|E5v{$ z14PSq9$faIVST}|YV+MgG(&L*q#|z)Tc>^dW9zoCk|ItW`=r)Ah+vn$N3ni*pR%{= zX7WSk!6=P)5aMkxD(W)Y;1;@#pe^Xt$JUw*9=D0#UVZ7q>9qykSJ*CkddH;vzAc$a zOeV&!viQR_Pg88xL5uTV4duSD-VXhw40)#Q+fvg&8zHI&2(s@q*megh*AAqTf1tPlQ z{@0ftF}+?YTkB?TYLhhY5!{XYUWRL{RNYsxJ=Pig8Na?*!Nk15ZSU{AlE18oQCPWZ z2+!(Vg<6lq+M?FJ(FQP8-uw%trf*@0@Xhh}8?SJ~5OF2YlIcO4hg#}ES9-_=5v8lT zKA$^uuYt-PFV2(8>DDs-PTDlqS}DPrNVXoFU0X{j?!I~+;;}8bBE_M|SQqPdz(y6gpQSHtT(&PcBf*Z;EQv8?jU*D*C zx-u|lBt|8g*;fL`6)mj+;gqQA*DhQFZtu(EHM{r=F^t9urao&00`DVO^+TB9dX;|0 z5;xMPg(#gDe^vKnN52F}O-VNTN2KQp&%V~ZEy=d-r4iRwnvm8ZDcbp5VcC}*S#(Pl zE^fkR+VUiWe(w1V$lw92U2hZUxj<7}b(#-Q znBEsq6O!vZl8I&|Wifb2#gY-_mIbR19SVZaLtx(YW0;}H}ibPCqm zo_Eg1r?QR|KN73m%E-2yMMd^JfyzqD6xH1qd+b^|V9NgS=>W-bjqyEMvjd=7hC;Z< zz>Bz%-((rhQii9z(ypAzWL=?UFJbq<=1D!;-8~vURZPtQfv@(EZzf6S-_Am}EPURt zla7DlRP>}bji2(?Woh+bOjIF{xCwUF@M%?FYO7h|K z==JOKaty!FNIeLrq}C!f=EWe4|$2~@a9AA3z*Uc?YI zUnSH_ba4HE+6GM$!O)Jm0PI$q1|+nU8AG%Hd^1qJCbbf z(9UAaB=%w#XK|?1%Q>nRw$I!SPpk8hP>;;Np1rD2vzXF)(0I&B>m>1FxfE;go3{U0 zKFR86tlGZ0%)O^lgw*EGIBO=j|N6%S9D~_}=gRj7OEdMAG`tV(jJ!h9-xF0#5`6A#u&Y#X|58`iTl6;jb*0$s(@ zGP9e;fn%H}Q?96sEOZKnwb>mG)z_*8t*phGaqsf|-%73j2vj4*FOjSBwxDXOG|$!V z?Qn47KXBjZy~{J$-cQEbEfLuclDhnNK?1CSsK=6>N!U{&v*B@8lRHBlk7W6@ z98NsV%BTRKr%AYSPjA}uLc~v+dEZz0?+Wz!Z;WhPx8VAQ`F}V}VBs%EyU}}ya(b|K zbh&c~itT=tm*o<&Mvc0G?UYzFpXd2X_c?ZBMR1pn7edOPi}VF@X_eicD#bp2oTNjb(`x@!{)YsrI;Dc9L>u!9xq%XfQdcJB8q z1;{ci3LNNF;L`AW(zvFUC>~?H(5C^g4BIRBzrGW7h!eVcF`-%4n0jK;41M#=#_x}e zn|1@1TzKD1>N$XXU*^=RLlz!`q1M-gr@K-#-sl-y7ur-49qx zFs<+4X!*XqQhbAisGCF@=KS^83_XEj@bePDmb=R^hG33jjK{TQ9E=So8t3C|pQOGW z0AT?1N&{JDyHfx0(X;Y}KV+xe9#7auNgN9+7=N4d?i)79g4iM@ zE=nTZ;*t(0seAGuIu~M~NsHkqAxmyt|}N~wJAyXq#2QK z=62g+8J+{(oX2g7a?%T@B!1T}yj+UGMif4M8{R4-4)IANGo*jUH5SxZb~Fgj!(QH# zhDR}z3Z2%b{lngiUt;invuf4#47n(32A!2m^0a zmc8E6W3kMTiPKY7w1zHjNw=2riE7SF`PahxG@_p(-%XBA9}_1Cy!uea?9uLYq{wEoh%( z0o+ISn%Nd{BF^gT9rwCs&^ z)A;@cKaA=Cj3Xaf#U&bOUk++ao`ATY9YP?JwgXVY32ju~AinMg&&? zOhBXa*B(!xuN1y4muW!&{ z(4nM|V+6sjf5awMwgvDRoStTdx%0{+t;hwG_`hYyAv=ka9CxK1i;dJxINK4*!1zuA zIWpZ)G?<};t(ZQ$GlFvf!dsm#!7`TeA{6-5egC<%a~Z+)Uk{!-SJ$D6UA=zgFz?jH zL|n6TOH4Xa$A=u|8Ryb7a%@*1C;QGc#{GHyMJrA~%x36}1tE}~KOT{Oc0qDffQ}r} zJIRIU4LkoAT_$N=OqG8AuDj`-ZdULapDKR4)9ILQ>~(JEWh!Hx9~S$);qcz0|9e?* zM}0OzaO$`Y=43GPspn!r!?A^^#|4?aca`Y3^?yd?##~V2{VL&X)#wq7_&E`3)`-e5&mim zoLH8<`?29FdZQzPabzO3ymNL$(@%Sm;B5#b+HHnN6EyfFIyP*vj(49mTVAQd=s2$e zVqA~6&NH?nTwN9ltc6Z)nF3?K8C+9cyT-lzvNV{bJ}K|U{@b0lU4EQ$8HpJ6bDt~b zcM~_Oq^;GM&2r+^D~5F_&W5>`Ku4PCy$p?M#$_mTIbzY*gh|xR(mt`RSL&eJV4C@X z+vi~J!k?GAF017a{6Z2mWmp7+>>8?%{I);^G|gQ5@b0|wb+GaO%D(1{GFC*qJ%?Sl z*0X5qx_dlgge=8urojD(f}_;RAxuZ&IS+pCs!06}?~!8wK^lTAz6?cs{?^p9kHI!d zX8I&X$I$tBIzaeen{J~R3Z-LVdV%Ym^ra^*&1*^@R6}eA6J1XaU@+Mo{U7K5z2PLm z?REz6eL_b!Qsoi<-*&pd3TQo`;A2k(N~$e#6;b;P8QdyIK42poT&W!F)C%Ny-pnA;h7R*NOsT1|o zruek>ebm!xVx^6K=aXAHpsx3jd1CJhFZ%9XbvH2D2)kV3SPUl1zz|uqGeF4UVztTb zX!36ZApl->DMtb|wd!`XN4Hnqks6laH4;SgAXFn~&ohz9-n&*iU1H8d3F`CBv2-07 zSZ*GHsN!kPV8ytu6FUg zY&k@fWAV&09ve^FABCEokfk45bGUcgY~)ckq$GZyD*z-jVWBFT9ND}wI{qWcVORy% zBoTN0j@(j@o_ql;lMpPV2xIS)~!TWl~QoCX0CC^Yk&yQRgekg;|oN zC$jjr*LBlT;Jb0jSUJR4iCKHLXVJWisQ!WpoeTb<*YV(-XkK!H@edfn)6HIHC{}|_ zX+Yp!!0{4few2@koXFA(9o!NTb=x}n;fZJuSX)eeFn*x}RWaN+BWh9e#t@w$Y|N!0uvi|!eVqLI9c@B3lqktUjPWQ6-L#7r-j=J z8W*Ii!5C6P`qEA-SyHy-#8w8}6N7i<>RxgJ9RA3!47dO3j<95%gM%wvRr`Jh`wX1` zLDz1|rzOTqV+-bs4ZqM078dJQe4M?DygAFz{&Z_k5v3JxrX8|hoZpkEd2{?1ZX+`aANwW-#kEEedN$E^tuM)FI=kwf;kLc^Vu6wIp%#;@`-MfO(R(ecrtZHwlF!9! z_kU~XF9@HQ25!hfHO5AEYPI%TKazM*eUTRVqNIGwG4 z&*Z@ZEDtDH_lVA(-)(oI8Q7Y)L8uq_d&0l^ol{ zYl67fyinbIH!RN{aqZMy-m7#*e@o->8{(cv%$ck-^nVyaK6M_teojARBy?dwD&u(O z==?v`tJZ(n82d%9HE?gwm%I36EB^BPKJVCz-ktvw=&>r-I?VO?7=2X{ArGVVimhN^ z{bZQs%x`{j%wKU{I3|FTf90whJU?O*y?e19?Qh>=mTy8PWI9?R!sst@mkK}pebMt@ z2L8X6S^ApMWxlU}8I+pa7D@002%I5tOJQ`Bx*BGvz+@C`GMtMBApv7DTY) zc|m9E3SaUUkH0^=%R_H1s3|=eMQME-h`tTtr#5e@aMXVr`d98#2ja8&p*K%!-*m`{ z^k;irkd=x4Uky6~^);EgY1)2N@XXBzJz1f7a=TX*WO!A-5)H2N2?Ko`qe*vGQvq?&mx zCg1$YduP)gT!hto3joY|K@L-*1lX^v5&E4chBE>H1n5w6mL7PPcBeV~xK&Tafl3Q|nuXNG5S>TcEOAd($zJHXCfBZSp7vrG z)L7`5^`@%Sg;b~3qpORoHeTLoO7I_040EgP7r@DJ8MHGsEg^L+$%fVn9H(+cKAnzW z_2VJ0eLBDIw1cq*p156{7w!7PDn)Z?W==A~f|bnHrEVbt7g9>p3zFX`*H#Z{p#Z4< zDD01T(q%*lPK{&r9Y;WGjOQJ0vO7~P);%Rqqr8G8nv!-nntPM1-|kD-O0n3_TS|?% zaZ_U3$Q3VPLo@ZenlGmYJVV`aHib2d$`ncvPm*`}O{7v$f%y)a&4E>M9_0p3yZP## z8H*mUM15iAT*PY27ycrQ{PvnF#q&I$DbWJ&n@yDPq1#P1?!|~2_-C(aFg;q#R|4=^ zzNpgR@~tF1jL3Er7?kYmFZc3gHbmWGlqAQHT++^n1sTDtB{eSM5eZwxyuEIoAuB=G zMl1$UkCY#TKo$~t0`XIcF^9}vQf9Ae;Z8h~!36}qVVc1LFunRY{!)R6^-^rVZoF^f zYwpb?obd+4_TlPz+;~J%)c4Q$7c?i?2`^Ckc8%{&hRuPX!cXM}j@if;0BDx+*18zDF_M6k-avpWey&4 zi~n)MxVwkVbQH{IvH~0vF0|7X-b?81>FuHrUWfjeXNn$`%JTt9LuuR#ZBa}$05}-V z9QR<`*_C^0{jnz3w;9fsV{5{dC??k^trWk{UtQMhu#9q$`xNneW>NX)!e{m`6M|Ci zuil@1Ao??Hx{y+_cKicI-${Yam??G=EVIYUr9(f^KJ|;;&!>tHun3!GqShd4><#Xc z(^VmzKGp(Om#j6S0s#77Rjz4M7Py>E;}u9#%uYNoZLjDz-q`2K*QJ1*2B)PCIkx&f z2&(8iKcuxGt-T+nK$R>`zuD)YMlE|T>s-3={Iw+)J${~mJgr3psl@&Ie|igZoY;`d zOWXOi?uqnJrh@Y7e}ZNowqt9WA6-9D?3J0Q>y@V1bXL>!P}T_lun`{ItJK|(yI-_= z=D}<|w;qxPJAppHd;LNN^dy+zhbEc)gOZm8OyOZy07H{uCcu%>_#eu*VX1XdVFScf zVx>+j0TVj+27nk6CgV}*T7En6SQ-H8tB&K+W%gRIUhg!wbg4HT{<9Q=6$yQ?TJBpu zAONiqH$SQNTJ%x(rMze}Rk(w$avT=h$G~6s5N2Tmgm}|M#HhQ*Mgu(JXDLefFByl> z4>3h5z+?!)q@?xd52&!615QX5FD!*Cfxa_uP+4(GqEJ;B>@&|c-aOD^K&UM;H;i0z zP`5hxRBUwbsAr{7b~wiADp;Irdn^DNhUR%rReJ`5Ol!`;PgO%#WR!Zacnw{?}aS9789Caqb|tNn(dvw z;G5~w>;g_dt%P5~`ya*luw=@tFhm)C%48QaTeTOBE6N$ zzgT(qT*?l7Lo3ID&U{R2c~$7|L%}+Pu*fO8g81c0u3-qrhOEIWa#Qep&d51f05fZ> z_2LsL4@B052`!4?+P1)8?Y{iKP8pcORarYIb%%_7QnoLqVOkzs-g)ig>9-=b;q2Gt z4r7minQj!9E5qoD+fK#Qy^mZdCpE;s6#?FA zybmfM+Rbtx2P#%8OTY(-^Y++Guw+U76lU@dOd_*=VfW?46Mp3wq9IV^Z~VWOzDFti zwLc8%yjxd6+*5Rws?uIPy?}l2CjAxwS}Q;!x(Kj%rYV${ty}AGHbAtTa^zCoS7d7% z#&$q1vj0Ys{CjkrG3YIC9{5#AlL_03z6d_`g> zC>+ek@wSdbzOp4au0WrdurBv4KrFRfeB9HzP^Jgztd1F{)q8EB<>_7Qq{i~*GFFD z^0l@f?Wmn^`#$qD4;79$Bt?-a$&K{k-VuaRkrc=M;wGLlJPQ=gwC}mgGr1bEhtEFh z{R&<30X){RNi)P-igol6yghkg7xjD(FFN%TK5MUNuRXrCTXG>s_0)pS*?elQ zW*r{OJC)qHRdiIIZ|yJW*Uw{aJV^n5JWoBAHTm#cM0K&f^pCXX*&hF1(PObzkQst| zC4vPS!Dp#QnN)0QZm=NDqd=-3mnOtnV-L!pXdfI`gN@(|F#O_5D&WWxV4PfG2sBjK z!7^VYiLUip1un<>t58#Mez3;C3lKagZ8zZbY=0~HbrUE|xcbN(Q%%GoQqWoo8nTYa zK?Gqr7m&|+RXWt^ntRC4EfC}f0z7j?Zl?uVA*CjoST535iAaC=#As0HNVJ42anKHlya{?Me z@R(!B+H(TvzW!*L!1#*3DJsBiIOd*~Z$Eod;DmEyfcev4u%N{Au|ldiT@=V2h5R za~Snx*n@KfIqQ^{X>*OIGmB}w#*75>giB}`TCg@d+PvsrhshJfNlC{9Puiv-8cGE= z<3cwl$QT92>1g9J3^Of%efmK0&qMRR5=(<^sHIr=+*C}+L%)5I18GMuL!Elb1N&z& zzVgei%U4b~0losp(guzIaazEvq4KT>($0899ScFhOScE08CNj(*rO3(ejM1Ee=M*~ z^pP&0wu&;*idY79!<~RlD25VuU_UHub%6|L#dOJWdnYyy6zJ!9Vi_pb?DP^&z85Fo zQf=`_WH6)T(3){5uOo!p7?aPD4zMSn~V1wAkYn?IkbW9)WMIyE|}Kgdu($PwXA zV`P0;M&@wzVPj+K=Bk9@R*H}}(;6?2h?Xo^^v$t120y zOAN)N;MQ!uBkIcb?u>m$+kF-e=xr3GpX!gd%uND}cvM^dgLnUe(`3MuW5BLlGyk$o zu=NUQ%{Vl#0zhv+Z;t^i!->ie7^^|I9w=0SUB@r@Vki#f3r<_RM~E?jVoU^2fY*rj zj|=sS4JO!tk1P^fspAhL8KX@eG%Rje{^>VC5FInFi}h-~c%c#*yc02!Q0lGHX2EF? z7m7!qxi~4F2eos+g;c1)>G(N@4T%?nUqL(dhsl#qbxE@69=)99s!<_BIT)~)je^gL~r*_*v4YXOnte`o^*#^Xc^LS&>B_yC9f=6a0e z)@RVJ{mjy(vXSvBp%);*r6YQu4@Nw_&!A#^ziOQ`=APW4t%9q+?=uea#7J#`WxV{u z(+jXNJ^M7wQf?s76GJ(Aqy=U-%t^H4{aWioK4R3c754_g?@32JP)_lkG5KIsR=D&~ z_sIu&q8jYYhh?irM>)PI%a(PyXQ31oXsh*i(s41o&akuFTbaFTOZiwz&Ye_FMSbuE4;kh@Z^=c=@?J;8l>#py4!hq*^*oCFqp;qNao z4=;h1$jSVXI~19H2b=j@~K^-%T4dVoxI|nC(XnQbdID2@j5ynJ3 z9sKawqGy!VVqs68-vG3EepJp`=t(R0cuqKC=`mvSm$SgK2ehTZvE%uR@*pdffZ}6$ zHxr;R1QZ46rh)u^S(Kd?k9s9>P5oLHycsBS-EU$%bn>=s}cpmrHA zZY@q+bG5(}vlzghop{cbCygMy5_g4kIsW6o@lV=1*MORBq? z?tqCMY_s{=3sE40r$oKsiO$bU@gGnU=bY{C+H?;Q6UH)W`TAV$zV0`N!kv3Jgc;lW zT#O9OFczi;19Bu%%ccAuifRLYNV{1A<6V^zexs(~{6DxdCNAwT$Q_0oc8a#eyuPxq z+;aE?;Pl+w=f!Lu)+z30OtNMC?Yqrh(5kqCAu%p84|3B8jK^I^GtO}DthLezooVVQ zT0tbEyl@!HDqa(sxrEBS@K7%DKQnuqR^Y5yOY4EcpNWk5g12X26NG5vE6&=Bm+{=Fgp^iUaN8WApVB$wg6tuCGG86; zIe0Ss)L{;$aTQyh`0;sc˺D%egf2G%6Bq@DfS2yHMpDmd&a{IyDG>m+m-k2~M@ z4*IR)Qz*^1rr%BZVj=1}!=&y1Ie;Gq7t#xEBe+lnOef#*Z25ASx`1+%|bXxC#lb2G+0*fJmCtIufC7a&>@61ipKTgyr; zlF^EuiaI-G9u56yyO>_bC9y=qcMf+bf=IJKv(vdtZN;7p%sip1$&>kUrt2e#oNB+@ zd_FP0kY(hRxbfMT3~Jn7RQmVIrQ|uEMCQ=4yZ!*Mq675O_^mF7w>>VuDYqV{#H#Zh zhe0Ft;xP~ElQdLpy+HtDBFDd$i3=h%Lj4>58K-J)4PA|RDirsSw5R1!tkp|5106%~ zQa|aB}5LY=M8I?K@vgcfwjLW-Gp19F?}jR1)y=(tvm0 zT8kUvY3z96_^yX4(Wd8xSyCbQm@rm_&&n%U2ViPxeM>a%tNZ?*3~e;Z%eP76ypPhd z844tn622*h&}_VTu4s6}5u!ZtFc8I*d`x3;(RC9fZWzveXZ>5Cm9r_r*=!jX2=@en zhyUkab;H>0(o!ze9pUB8JG_6~_`(qUqa^8yv6we(Vki-2O#du%{G(h}U7=|F8z+tC zYsTi5c(u*>#fcbs6$jHHoT+Hu=X}KhOv>#SQpg0R;s0!DpJ{;uK+RB2Cg}6_`*4A+j-9BbL4a?5ZN{tqeTt5wv z=w7^!AJ@icnHSRsDW}wX|LqmT0HD}|0ssmI9-|aNFgr~MC`l03-l3l5XhIc-!FJLH z`e4_7FPNyH&o&X@?ff@MZSP)&Zoc+wfaXZCL-^{`FxfF| z9!BW4Yn>0*xp@3DHC|PWaZF)+v+fJJ8+CZ;)(18239s)>1g<}uG+5QVUmBZy`2mD) zS$Bjdp^wNe=rX$W0R$CtrW)9=p@Y0>tkwvIo%sE&cZo3mSGZgLu*7YZF5(%R3= zUpOjSDuNO5R~EI|?EDO5xt zkY_+sGrG1sp{EB+4fFkv8iY8L1`RD(T1U1^a$Ap0sr%(Qo3gc29{#a7hFYP&XJCBP zB#PuYY#qgKXmrrRZAT3%z9adYY%I7^KyZ{UHSqkY2zEX=`mKLnXKhq%w7qak)kJD@ zns9vUZw=qqSJv{TUmfx7ExftpagVTAcYuttUFCUIOuS_t+6S6xU8u&lzqKex2?~J_ zFtgYpHcM;$qz$X2@sC=k*F*;5ak#3&JpxqGW=eM(*o1!nFJIYVlq(UK{R2jU>0&U!!Nj1 zK3o&3lmC#IMCx7k`snZXrjg~|{J+bWzjxj4(kPx@cF4nSDA=CiZ{f#Vap5FyzgkCv3vT0C2LII<`R=P_;PRTPs zy})Rmo^Ki!Ll)8i&`efr52^*%t@}vH8~|>|1F(fB=&Edp7&-`9*M~Z99}XsGf`jQ% z=MJx!_Pa{sqL6l_cJkb-7#<&``8QL7s{~s@c65>Cf7_X%Ec-Rpw5D#IlvOu}48wpU z`!j`G2u#o@11hwMKFy8u!@>X^zqCh*0RTJb0%MppWDRb#_4^$_1mshW*+Q6yXP9+X z)7jjNS$bgek_)1QcHqnyl@&kHbK! zVgWV=JnLs$zLxNw+ljD{dSGRTlM zXMjbJqGIDH8{J?|OCYEITUi6-{)gSz*?vK_FS^(_^Spj`Ax8VrugdWT$=Fre{uS?sj!bfh!R_{^A2Ljc--sQUTm-i& z^AYhNr#vbxXiYmk)q@k~==8m1un(C9qCX4lSK&R~ z`|YRhJ14~ZXnnCX$?5G;4~aX{*}7HJ`BdI}m(pdRiOyMpSDI`oLk@l52UR`!9)NYz zfW~PU%;GUTK2)kpj-x{q;45WSTOT;x(RzqYKWF$UYu`q*Bq7uD&%enorlU;eQJcn< z%CNMc{{>Q_YVVp{(gdued-RjaZuze7VE$$N#`TvZMYNHHf;9yKeMhyibz89ev|LDb zPpiz&lwbz7f4wKm|@O^{jo?Z0u=V#1eyYxl-r*x064wX46>DWo< z4`95kpnq?lqiIbC8{Pq6@?yJf!$7lNIaMB_9tZ51x^^n1HLb1)X%puB$+TKvAO(>u zCT_93LF}#hC+5v}v(CwLOe2aNNS48Pml_E+jW+-XqZI9;*&a^BBY9(INov870MiL+ zM}0U=AP!#ExN&`qfEbTrY-j@AM5Mqub%d0gcja$J2^&@+kmKA8nX7H}HI-o;bFB@2 zpY=15DT;h^=cjZwwC>Z-mE~K_&AF{AUc&8m&pl`fwPw|(D)XVgwhx&UskCX|i?esT` z#HYwiD*e$T3-(bRj;eD5=RBdqke-_dnDwwMMhEoEIpMNCQ!NO}_egEbTHRKFSaS?6 zp+A{o>eE<8xdJPx&}G*0`FBgw@t=i?U&~oS^{itjNFS z1IRXs?~PE(5+;V;KponYGk%E23DlJ;bh?3RDT+5N*Tx==hMrY_EnKy1$Uqbs9Ve_t z>S0D9DYw`lMQCJaF_Z>H%^Y$-o`^0Tiysf7e|=&?L6a>(S{`H(tvz6Lku{5~DcHIz zfIJ|uD^dNBv7lzKz0%)RC&pCDI{I=0VM|fTrSZ&>=l=$yX5F9b91BvAKSJ6zv0#gm|}L3}%il`$sC#p6TUUz20?mbo`*AT74n z07tTDeIUM1fmV4J7}%lk028VQl83F0lLGCL!jJSaqZCYdw2;Q=Bf!Ht8r1S~pM!+? zWlNBoUf%|H{~SK{^hgMu1i}2<&Gw2MEh1hUoK4%jXpn-(hT#4E<+G!^Q>Jg1my|RU zPi>@>eW&4b(NQdxCBLQc$lODw$MHjVV^S*}*5seu@R zaG7vs27CUykS0Tqp$a=6HX++|$-Q~@+uRpq^n_3CF=|!vn}!!UR)VK*ST3EAC*9At z)=2&7F@eM~^Z^Y?tez>*iV1Fi1QLpbdBermYq>xe~e*G(|QNdKN$vH-fj+u$qbpc2V*F*cU%qfajJI&Tpar z#Mnq!gfao)XQHDE@<Ku3Xnd*w(udqb9c;DqD9<^YNs`x zhaYTn2=Mjpchi!gXXil^3jukC=~M9{ZHdCCR-v;>K;;WEP6<7Iajq$E4qOX0^cNGv z3DL}B`iM2AhFKvoA+Ild2S-%KDXYZ5X66&&_@Uqj`hA@#5#B=sO?VPVht#d8kth;$ zAhYqr&HowchOrzs^ckfo9lF7zWI!jkZ}nU;%|f8NuQnJ#)_)Gr+L+;PB}PwDNI6Q+ zMNN4G8}8lRGvxof_+MHiHjdpQ`x6wkW*UP(TH|)-2DwFsuOpV5iEhzUVWYj9ooybl zdN%K6@X`m9=)Er5v+dra{5Ow@WGamfSy;&vAt|7Ci|M4cv}caZ_z7LkPLJ~Kmt?;% z$(uh>)y}LAw8ltmiH0-C=u?wf&{+<7SoE)M>bvgNXVvtjr9M-82=0)$?yhZbkQ||>(6`#4XR@}=Ga;2 zI(jpa%$la7H0_E*11&Xm@%65KwJ}>^yfsFq~ zCM!Ng5q^f#?}X@11z~oSY`a^wY4_ctjd$B2Tl{+hj{@ZJZdm6riKCDU>0Yoz>9-+% zyB)LH(w1m(;`!lZ;>-ZCM?u1Z(-c;vk& zrJ(XFjQmf=IBmUVzaf!sojU~l9SwchFtoZGtx>Nd`GyvV6^3Dgeuct8m3b?(-?eNJ zjgD@P7To{LZe$n(neL1#0b-%WVp!fR2Tvyzb0kk z3z9Ky$=SpvblE+P_V0MU+#0La^uFa+*D}9JlQAm!vi5mE*Dz;I52~wXPE$bY(uIrN zF`k`lm-osmW=dp6p;v=qya7y&@_fBg&sShY!hAd{*3R{Rw+|yErCwQT-45l4Tcr-X zk-j!KwC@c#yoQ$<_W=&v+?t}j3qVG>P0h=yQ|+n-SLi zF*JGc_<60FYpr3^*kR25*fWjoC6z%(gB4wYrH&P#0N?jB7$DS_(CeN48!2*o6`c;! zPhQ?oyeni|Wytn#fsm)=VvTfehYp$b*w(#Zg-S943r* zV3==^eW2-~oER-;?>g+vS4#0G$+N6pakZjNY_?8(SH(k~iP>>bC zTY1x(3LX_LvJ3LO|4IjxD^AFm#$1tHhXZk((`oHpk?*SVh*oc7o zTa&x&&3;Cb^DLhS67EY%*I1BObmnh5jbY?vFUmaSCUSk1lzn5@gcT{%YM&BmRm6JN zYL`7GvNo3Apy|m^rMdG;qz0AlswRt+74-*0PjN`OiBG&)@$LlB%k{?GdCP%?r8qUZ4n|se-18=@Xv`e1bbO$J^HK>_Ftb5n5F>Vb3{;zeYh0F z?`v(}aU=M9)Yv2eNQ}niMYIpaMA&x3n7?v+Rn*yQP^L{*6qKwp@h?CZoc?zB@k0I> zf)Ze&$Cg^qTk&&f7ZIz(uGt-XhV3%&X*JSsCC`!CKhyIi3l@_ArXe-*8f&y+qkDVU#Xt)rRs9_ zuihQ^b5F!9lYOJq$_Lc1QEaXO{Ptcb5f#H5W@5s0C^cILJp-J7uEW=ZW*k*BUn5GX>3Q%yriv5W+-3DJ3jv?ILRg{8YQ6 zbaI#CL2zc4b(!)G?}nXos9B2QF@i*vD*avPre%KoL45iUf%ex<&qCf^PM>uA4Pr;D5do1V^It#j5dS5+Z~{zRwQf~98@Su z;shb_0-85O;S?J2p=d?~ZxnBDg6FyfIC2eiW=Tf5?E7OPngwusWZ(g>Mw}T=R0z&j z+_J8D+p}#tG^@R>zNY2|#dVdj~x0F=M!8*7r^ zKOHJvi!J}RJC=3Ymp!S6nt~KNDQ@G7< zrz`aI7F!0@tAdMf;7@+vL{#na?;v%#l)Jzi}1?Myr}5p42b=+ju0A(7tCE)Cv9)5pOoH0y|N#41B_uJ@3M}hy}u~|5oSy z6$^`{Q=A^t_omMkuVuDPUk1S%AjEIb!ar@AKSh5jt5h_szh%b#5lId z({f&J_AAoc9Pl+48!%`TR%wxo!1to_;fUQ^OkpU$Rs}fu48UycI zgeSMKgMs<5CHqXh`e}y>p*B-$>ucJ@dGE3j&B!YnL=3TFGEqfRwFqy&gL-4k@Ae^& ztz*4)UtVrH+1|s8JhLU7!QfDWxTUP7-_`(JQ%iwn!yvTWKlt}A}et!XGA zfAIepV;j~Y)+8)erEp;VGVKtOhM8@)Jpc{UbjVY|)bnD}+DVHU-ue0GY~Hs*M_@3~ z-G6vi=1(GhzajB{c1tGoh}|&1t>xn0A8oDd<(&T0RUFUsvNpEOZ3q7$evZO4+(xqi zN&0->11sfNL)HjCG~bJvmQ;1K@!i>TySQXq@d%d(7P+kX6m@rTc^<-3d2z3*o2%GGCKabElJ`#D+GWYg#eOxIKV<>#}FKDlFvtRzoX} zkCG7nYXo~muweqPZRDUg8Wm0cKB#Rv5%g0x`8wNNw>mTjU=ib=jsh?I*LQXoVg9=_ z^@=_ebM4M7-O+D!7(g#Gxw|{OnZwL-?SR1@!$47NDgxm!p2!Sx(?!?&@+ODI`;9gOl0nN- zmj3tSPHueW1&EfX1|M^b_uRK60;5|V;3L!%&8w|FY_Oc0B0c5B7j3sd04*vN68|cR6{YnUVPp#k;7$PTI6{x||;6a8jmk z=qwydlF>JLx*mqg-^|~|tvDtfTs);TSiwUxA?``(U~p-34im8A z2HxA(?sLOKV5FS^o~A+iHWX1n9tAe9j0kDcO;+R zaCUMxbqm;Phwz%Nb^c?l`^%rbC;j%zUk!zxO#=S1lMrXKL7y6TukSIg|cWUr0 zU5mU9`>-Gt-`FdUfcMoX4O>uL@xn5AIuWF)PvCwaQ&jm}kmD*Q9#Ij%pMDBs>?GOH zhYEam)zNxE1)g~dz|opnaWBfoD-T$xZ-c!!#GOBwE*KOE;LweBz@m&jfM18NHO}$| zhz6fMl=E*;<&cExpJt!k_%9)O+@a6(GpA^{L_txj{fovSqm0GRmN#(%$~)2Ivw5#K z{?(mtUH>T?lqyyv#;)w$lxi3|Zln{Y&JS_BFtLA59b)DK8b|*;pvq1*clSY! z(>CBJc``kIkI0w<$cD!6kTa=S!@C6aU=LGH@n!_f{hz@l@fZII}7>tiwq&=k-HMSp2#Rz zzvPseih=pXQtOS)L~R{^8@mX!4fE%LXe6KP^L1Kz^cD516&JXO1DqU;L@cOn$sU&KZu4A55bn&%O;8ezzi_w6C&Cii&XaqbA*sHvhiZzSn#$P`Fu~FKj)1N7fT88d|(~Fm)z)-fgI}lZ9Sz0#>JV>%fNJ-vGR-2F#g2R@Oum`2KkHUd9k1Q zoj?!uPn)o-+t7dt`5URh>J+cjdxBN42$#^g6o)Qbn#YCQQigOH$dX-U6{fB}K^Z6H z16w}LUVGtlBhrp(W~_aTe1x0qto4m_;*lUo!PGrO?<36Zfj!dzl3Wq_s7L|M~XD4GbA3 zuklN2n#23P*66nOK)I{Ky@U9yY^yifbSC936ZVx=rr3Z811CatF7R|T3vr10o4#`Q z4$R96HQ*|QFDPD$PZPJM0z`CFvVF<18%Y)@U~%W6T#bzfs6H5Ko@~W~B0?wchm{R} zhU4YkpqHpl#j>&E8Y0KuJTQ^Cg9E4|d^xTRZyA8GQ$1iJ-m)WHIwMuc+w1SaBZ8rQ zFDL^UQiX91Dn3@yQOnlDPOYoz__8VG@~I97W?%d(z3dE*5CVg0UfRNm?C$rXfo9Sz zIx>@5J=%H5?FDvwdeABYU>KNd!_?8oLz94>FVHz((F{@nkgf)>cAozCyoI3Ag*X56 zbf3#p5|xpA9ndu#_w}*+Z|#oTz0(%Ub)1fenVL8`y=JUSCIs z23{QJpai$XNL3I(Q4^c=sIBGg?~8)XoV2Bon7JaLmI>T|>8@t_?80Mo4P4l;rF zU5=?uY+nVYLU)6MW5U9dPP2|1Nkwj-w**=xO=AtJe&9dnV#y5uMLpBb!@M0o{icQ? z%$$AhFfa`zlIYC8#jS_T{6a

91N4lfbOez|bd(86S+%Gqi+`nm0>`{h!>rg0_t3 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

GV=dGF{tKkOC51^q{D4XJwUW}KdWOPv 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

q2}3o)e;`sR>^Dxz5KiEKl9? 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

l2US_)4 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 tX=>m~Z zZG{!its2|}{4VO^ktm42ANb!+#c$URBz9Ja4eROj3$pV#crabRvkB)Bn@BJ`BM7?0 z4)h#g5ot|K4oy4oWIpu0Z2K(I(30(I=7l1~$yEkPJpxL?B;s2M3o1540$%0wK{tJtC7`1ieQh&}x53 zGW2#aH-8|MfY!;d zjT{#u%})bR^X9>Ka6;Bk(ZKG zi&HPYoOxW&bjaTCi|2&$o0O!X(!ksy>+msC;oR*LMj%NpsVu-EOvV9>bFt4BD@9{% zqdrJ0zyHn12JGO}@0@=czKa41|kj4MbCpu|EV)P*BY zV_r+j8BBLmZyq+*(aCa~O+yivrQg}(YcYC-@K?u>RW2BI$Kfaxr!^*yDoL>+wE#m` zUf4@%7U{Q@@m)MwWgqjcsk)pl_;-$2bCHST7lfSkh{)P!Xh+npz503dY}vpXvY}Hs zY}<~|dltX{T9ud>Ph&Mvq@6BVo<~<8a!B^)qlGwL)v>w#g5u@N-VV~2;|^9dN=4CY z=ZIjSuDbt{mE)d%zpDF&R!}}5DW5fX*)Ndmw3zVvXfZ1ADFYo>^ogH+QEDi2vlfdG zGx5i^oZPQZ$amx+Cn0pBVhpp+rN_Dig0L$lu$AXlNE!|<$7!FKe_+}a7WEuFhv+|afct6JuB`*Z zCkTcp%E=8QW()-QkqK_495LJ_>+&fH&A^mX)mSwE&W<%c#^>aH_gao}=Z@>)5dP3# z%KDPV2sC%q?_UFVtjtqkk||q(EKfqLG;5^qS9JOl+A3!B@(e@iAgz6qRqP1m?>hZY zuB@S!FJWU}M#-!qIm(n{^_BdRTyGo(ql;Sp$3S`{*BPI!GllC++wUR!ft|3DIqE={ zuS4%f7&2^dj7KGpd8ap_7osF2*Cjv?{QYkt2~tqFrQAU@7$L&fz-q^J|APFuvNa?& z%F6C^rmT_lm5q4C)T_rKY*<>b>a%)g&BCMyaol%r|0;n*08p~*)opUy; z_T4|fF^f5H{sQKKVj$x9hX^l+i0Fp*(afE5zu-KQ&XU~!&@w50NjL!y>Tp=#c<&Qb zPoJ^Z=M?Bi)a{vDqVJJpI4vh0hxKC-60#M-P%YFMF{haHWXf@O^K