From 85e0bd3d6f793f8310b5ae800e8213ccc7647761 Mon Sep 17 00:00:00 2001 From: Tristan Britt <53545754+trbritt@users.noreply.github.com> Date: Wed, 21 Aug 2024 15:24:28 -0700 Subject: [PATCH] tristan/initial benchmarking (#24) --- Cargo.toml | 10 +- benches/field.rs | 234 ++++++++++++++++++++++++++++++++++++++ benches/group.rs | 112 ++++++++++++++++++ benches/mod.rs | 84 ++++++++++++++ benches/pairing.rs | 11 ++ benches/sig.rs | 21 ++++ examples/basic_pairing.rs | 16 +++ src/fields/extensions.rs | 2 +- src/fields/fp12.rs | 3 +- src/fields/fp2.rs | 1 + src/fields/fp6.rs | 4 +- src/fields/mod.rs | 1 - src/groups/g1.rs | 16 ++- src/groups/g2.rs | 2 +- src/groups/mod.rs | 8 +- src/hasher.rs | 26 +++-- src/lib.rs | 10 +- src/{fields => }/utils.rs | 0 sylow.png | Bin 991920 -> 1764654 bytes 19 files changed, 532 insertions(+), 29 deletions(-) create mode 100644 benches/field.rs create mode 100644 benches/group.rs create mode 100644 benches/mod.rs create mode 100644 benches/pairing.rs create mode 100644 benches/sig.rs create mode 100644 examples/basic_pairing.rs rename src/{fields => }/utils.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index b656fdf..0f4f518 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,4 +25,12 @@ lazy_static = "1.5.0" hex-literal = "0.4.1" serde = { version = "1.0.204", features = ["derive"] } serde_json = "1.0.120" -sha2 = "0.11.0-pre.4" \ No newline at end of file +sha2 = "0.11.0-pre.4" +criterion = { version = "0.5", features = ["html_reports"] } + +[[bench]] +name = "mod" +harness = false + +[profile.bench] +debug = true diff --git a/benches/field.rs b/benches/field.rs new file mode 100644 index 0000000..d603508 --- /dev/null +++ b/benches/field.rs @@ -0,0 +1,234 @@ +#![allow(dead_code)] +use criterion::{black_box, Criterion}; +use crypto_bigint::rand_core::OsRng; +use crypto_bigint::U256; +use sylow::{FieldExtensionTrait, Fp, Fp12, Fp2, Fp6}; +pub mod fp { + use super::*; + const A: Fp = Fp::THREE; + const B: Fp = Fp::FOUR; + + pub fn test_fp_multiplication(c: &mut Criterion) { + c.bench_function("test_fp_multiplication", |b| { + b.iter(|| black_box(A) * black_box(B)) + }); + } + pub fn test_fp_addition(c: &mut Criterion) { + c.bench_function("test_fp_addition", |b| { + b.iter(|| black_box(A) + black_box(B)) + }); + } + pub fn test_fp_subtraction(c: &mut Criterion) { + c.bench_function("test_fp_subtraction", |b| { + b.iter(|| black_box(A) - black_box(B)) + }); + } + pub fn test_fp_division(c: &mut Criterion) { + c.bench_function("test_fp_division", |b| { + b.iter(|| black_box(A) / black_box(B)) + }); + } + pub fn test_fp_random(c: &mut Criterion) { + let mut rng = OsRng; + c.bench_function("test_fp_random", |b| { + b.iter(|| >::rand(&mut rng)) + }); + } + pub fn test_fp_new(c: &mut Criterion) { + c.bench_function("test_fp_new", |b| { + b.iter(|| Fp::new(U256::from_words([1, 2, 3, 4]))) + }); + } +} + +pub mod fp2 { + use super::*; + const A: Fp2 = Fp2::new(&[Fp::FOUR, Fp::NINE]); + const B: Fp2 = Fp2::new(&[Fp::NINE, Fp::FOUR]); + + pub fn test_fp2_multiplication(c: &mut Criterion) { + c.bench_function("test_fp2_multiplication", |b| { + b.iter(|| black_box(A) * black_box(B)) + }); + } + pub fn test_fp2_addition(c: &mut Criterion) { + c.bench_function("test_fp2_addition", |b| { + b.iter(|| black_box(A) + black_box(B)) + }); + } + pub fn test_fp2_subtraction(c: &mut Criterion) { + c.bench_function("test_fp2_subtraction", |b| { + b.iter(|| black_box(A) - black_box(B)) + }); + } + pub fn test_fp2_division(c: &mut Criterion) { + c.bench_function("test_fp2_division", |b| { + b.iter(|| black_box(A) / black_box(B)) + }); + } + pub fn test_fp2_random(c: &mut Criterion) { + let mut rng = OsRng; + c.bench_function("test_fp2_random", |b| { + b.iter(|| >::rand(&mut rng)) + }); + } + pub fn test_fp2_new(c: &mut Criterion) { + c.bench_function("test_fp2_new", |b| { + b.iter(|| { + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]) + }) + }); + } +} +pub mod fp6 { + use super::*; + const A: Fp6 = Fp6::new(&[ + Fp2::new(&[Fp::FOUR, Fp::NINE]), + Fp2::new(&[Fp::FOUR, Fp::NINE]), + Fp2::new(&[Fp::FOUR, Fp::NINE]), + ]); + + const B: Fp6 = Fp6::new(&[ + Fp2::new(&[Fp::NINE, Fp::FOUR]), + Fp2::new(&[Fp::NINE, Fp::FOUR]), + Fp2::new(&[Fp::NINE, Fp::FOUR]), + ]); + + pub fn test_fp6_multiplication(c: &mut Criterion) { + c.bench_function("test_fp6_multiplication", |b| { + b.iter(|| black_box(A) * black_box(B)) + }); + } + pub fn test_fp6_addition(c: &mut Criterion) { + c.bench_function("test_fp6_addition", |b| { + b.iter(|| black_box(A) + black_box(B)) + }); + } + pub fn test_fp6_subtraction(c: &mut Criterion) { + c.bench_function("test_fp6_subtraction", |b| { + b.iter(|| black_box(A) - black_box(B)) + }); + } + pub fn test_fp6_division(c: &mut Criterion) { + c.bench_function("test_fp6_division", |b| { + b.iter(|| black_box(A) / black_box(B)) + }); + } + pub fn test_fp6_random(c: &mut Criterion) { + let mut rng = OsRng; + c.bench_function("test_fp6_random", |b| { + b.iter(|| >::rand(&mut rng)) + }); + } + pub fn test_fp6_new(c: &mut Criterion) { + c.bench_function("test_fp6_new", |b| { + b.iter(|| { + Fp6::new(&[ + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + ]) + }) + }); + } +} +pub mod fp12 { + use super::*; + const A: Fp12 = Fp12::new(&[ + Fp6::new(&[ + Fp2::new(&[Fp::FOUR, Fp::NINE]), + Fp2::new(&[Fp::FOUR, Fp::NINE]), + Fp2::new(&[Fp::FOUR, Fp::NINE]), + ]), + Fp6::new(&[ + Fp2::new(&[Fp::FOUR, Fp::NINE]), + Fp2::new(&[Fp::FOUR, Fp::NINE]), + Fp2::new(&[Fp::FOUR, Fp::NINE]), + ]), + ]); + + const B: Fp12 = Fp12::new(&[ + Fp6::new(&[ + Fp2::new(&[Fp::NINE, Fp::FOUR]), + Fp2::new(&[Fp::NINE, Fp::FOUR]), + Fp2::new(&[Fp::NINE, Fp::FOUR]), + ]), + Fp6::new(&[ + Fp2::new(&[Fp::NINE, Fp::FOUR]), + Fp2::new(&[Fp::NINE, Fp::FOUR]), + Fp2::new(&[Fp::NINE, Fp::FOUR]), + ]), + ]); + pub fn test_fp12_multiplication(c: &mut Criterion) { + c.bench_function("test_fp12_multiplication", |b| { + b.iter(|| black_box(A) * black_box(B)) + }); + } + pub fn test_fp12_addition(c: &mut Criterion) { + c.bench_function("test_fp12_addition", |b| { + b.iter(|| black_box(A) + black_box(B)) + }); + } + pub fn test_fp12_subtraction(c: &mut Criterion) { + c.bench_function("test_fp12_subtraction", |b| { + b.iter(|| black_box(A) - black_box(B)) + }); + } + pub fn test_fp12_division(c: &mut Criterion) { + c.bench_function("test_fp12_division", |b| { + b.iter(|| black_box(A) / black_box(B)) + }); + } + pub fn test_fp12_random(c: &mut Criterion) { + let mut rng = OsRng; + c.bench_function("test_fp12_random", |b| b.iter(|| Fp12::rand(&mut rng))); + } + pub fn test_fp12_new(c: &mut Criterion) { + c.bench_function("test_fp12_new", |b| { + b.iter(|| { + Fp12::new(&[ + Fp6::new(&[ + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + ]), + Fp6::new(&[ + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + Fp2::new(&[ + Fp::new(U256::from_words([1, 2, 3, 4])), + Fp::new(U256::from_words([1, 2, 3, 4])), + ]), + ]), + ]) + }) + }); + } +} diff --git a/benches/group.rs b/benches/group.rs new file mode 100644 index 0000000..7714fa5 --- /dev/null +++ b/benches/group.rs @@ -0,0 +1,112 @@ +#![allow(dead_code)] +use criterion::{black_box, Criterion}; +use sylow::{Fp, G1Affine, G1Projective, G2Affine, G2Projective, GroupTrait}; + +pub mod g1 { + use super::*; + use sylow::Fp; + + const KNOWN_VALUES: [Fp; 3] = [Fp::ONE, Fp::TWO, Fp::ONE]; + + pub fn test_g1affine_conversion_to_g1projective(c: &mut Criterion) { + let generator = G1Affine::generator(); + c.bench_function("g1affine_conversion_to_g1projective", |b| { + b.iter(|| G1Projective::from(black_box(generator))) + }); + } + pub fn test_g1projective_generation(c: &mut Criterion) { + c.bench_function("test_g1projective_generation", |b| { + b.iter(|| { + G1Projective::new(black_box(KNOWN_VALUES)).expect("Failed to create G1Projective") + }) + }); + } + pub fn test_g1projective_addition(c: &mut Criterion) { + let a = G1Projective::generator(); + c.bench_function("test_g1projective_addition", |b| { + b.iter(|| black_box(a) + black_box(a)) + }); + } + pub fn test_g1projective_multiplication(c: &mut Criterion) { + let g1_projective = G1Projective::generator(); + const SCALAR: Fp = Fp::THREE; + c.bench_function("test_g1projective_multiplication", |b| { + b.iter(|| black_box(g1_projective) * black_box(SCALAR)) + }); + } + pub fn test_g1projective_conversion_to_g1affine(c: &mut Criterion) { + let generator = G1Projective::generator(); + c.bench_function("g1projective_conversion_to_g1affine", |b| { + b.iter(|| G1Affine::from(black_box(generator))) + }); + } +} + +pub mod g2 { + use super::*; + use crypto_bigint::U256; + use sylow::Fp2; + + const KNOWN_X: Fp2 = Fp2::new(&[ + Fp::new(U256::from_words([ + 15176525146662381588, + 16999198464856720888, + 10551491725746096164, + 2109507925758354620, + ])), + Fp::new(U256::from_words([ + 5829542572658843162, + 6956048341656855305, + 457351042342223481, + 213802418293478404, + ])), + ]); + const KNOWN_Y: Fp2 = Fp2::new(&[ + Fp::new(U256::from_words([ + 16717123787957323851, + 9581483432139821434, + 7173403850490595536, + 650007998934857427, + ])), + Fp::new(U256::from_words([ + 5081543861758110462, + 8687473586797606316, + 15555792616844701404, + 3266271495335422485, + ])), + ]); + const KNOWN_Z: Fp2 = Fp2::new(&[Fp::ONE, Fp::ZERO]); + pub fn test_g2affine_conversion_to_g2projective(c: &mut Criterion) { + let generator = G2Affine::generator(); + c.bench_function("g2affine_conversion_to_g2projective", |b| { + b.iter(|| G2Projective::from(black_box(generator))) + }); + } + pub fn test_g2projective_valid_generation(c: &mut Criterion) { + c.bench_function("test_g2projective_generation", |b| { + b.iter(|| { + G2Projective::new(black_box([KNOWN_X, KNOWN_Y, KNOWN_Z])) + .expect("Failed to create G2Projective") + }) + }); + } + pub fn test_g2projective_addition(c: &mut Criterion) { + let a = G2Projective::generator(); + c.bench_function("test_g2projective_addition", |b| { + b.iter(|| black_box(a) + black_box(a)) + }); + } + pub fn test_g2projective_multiplication(c: &mut Criterion) { + let g2_projective = G2Projective::generator(); + const SCALAR: Fp = Fp::THREE; + c.bench_function("test_g2projective_multiplication", |b| { + b.iter(|| black_box(g2_projective) * black_box(SCALAR)) + }); + } + pub fn test_g2projective_conversion_to_g2affine(c: &mut Criterion) { + let generator = G2Projective::generator(); + c.bench_function("g2projective_conversion_to_g2affine", |b| { + b.iter(|| G2Affine::from(black_box(generator))) + }); + } +} diff --git a/benches/mod.rs b/benches/mod.rs new file mode 100644 index 0000000..8ef3b91 --- /dev/null +++ b/benches/mod.rs @@ -0,0 +1,84 @@ +use criterion::{criterion_group, criterion_main}; + +mod group; +use group::g1::*; +use group::g2::*; + +mod field; +use field::fp::*; +use field::fp12::*; +use field::fp2::*; +use field::fp6::*; + +mod pairing; +use pairing::*; + +mod sig; +use sig::*; + +criterion_group!(pairing_benches, test_pairing); +criterion_group!(signature_benches, test_signing); + +criterion_group!( + g1_benches, + test_g1affine_conversion_to_g1projective, + test_g1projective_generation, + test_g1projective_addition, + test_g1projective_multiplication, + test_g1projective_conversion_to_g1affine +); +criterion_group!( + g2_benches, + test_g2affine_conversion_to_g2projective, + test_g2projective_valid_generation, + test_g2projective_addition, + test_g2projective_multiplication +); + +criterion_group!( + fp_benches, + test_fp_multiplication, + test_fp_addition, + test_fp_subtraction, + test_fp_division, + test_fp_random, + test_fp_new +); +criterion_group!( + fp2_benches, + test_fp2_multiplication, + test_fp2_addition, + test_fp2_subtraction, + test_fp2_division, + test_fp2_random, + test_fp2_new +); +criterion_group!( + fp6_benches, + test_fp6_multiplication, + test_fp6_addition, + test_fp6_subtraction, + test_fp6_division, + test_fp6_random, + test_fp6_new +); +criterion_group!( + fp12_benches, + test_fp12_multiplication, + test_fp12_addition, + test_fp12_subtraction, + test_fp12_division, + test_fp12_random, + test_fp12_new +); + +criterion_main!( + g1_benches, + g2_benches, + fp_benches, + fp2_benches, + fp6_benches, + fp12_benches, + pairing_benches, + signature_benches +); diff --git a/benches/pairing.rs b/benches/pairing.rs new file mode 100644 index 0000000..167288b --- /dev/null +++ b/benches/pairing.rs @@ -0,0 +1,11 @@ +#![allow(dead_code)] +use criterion::{black_box, Criterion}; +use sylow::{pairing, G1Projective, G2Projective, GroupTrait}; + +pub fn test_pairing(c: &mut Criterion) { + let ga = G1Projective::generator(); + let gb = G2Projective::generator(); + c.bench_function("test_pairing", |b| { + b.iter(|| pairing(&black_box(ga), &black_box(gb))) + }); +} diff --git a/benches/sig.rs b/benches/sig.rs new file mode 100644 index 0000000..97ba53d --- /dev/null +++ b/benches/sig.rs @@ -0,0 +1,21 @@ +use criterion::{black_box, Criterion}; +use crypto_bigint::rand_core::OsRng; +use sha3::Keccak256; +use sylow::{FieldExtensionTrait, Fp, Fr, G1Projective, GroupTrait, XMDExpander}; + +const DST: &[u8; 30] = b"WARLOCK-CHAOS-V01-CS01-SHA-256"; +const MSG: &[u8; 4] = &20_i32.to_be_bytes(); +const K: u64 = 128; + +pub fn test_signing(c: &mut Criterion) { + let expander = XMDExpander::::new(DST, K); + let private_key = Fp::new(Fr::rand(&mut OsRng).value()); + + c.bench_function("test_signing", |b| { + b.iter(|| { + if let Ok(hashed_message) = G1Projective::hash_to_curve(&expander, MSG) { + let _signature = black_box(hashed_message) * black_box(private_key); + } + }) + }); +} diff --git a/examples/basic_pairing.rs b/examples/basic_pairing.rs new file mode 100644 index 0000000..8f80e3e --- /dev/null +++ b/examples/basic_pairing.rs @@ -0,0 +1,16 @@ +use sylow::{pairing, G1Projective, G2Projective, GroupTrait}; + +const RANGE: usize = 100; + +fn main() { + let a = G1Projective::generator(); + let b = G2Projective::generator(); + // let c = Fp::from(Fr::new_from_str("1901").unwrap().inv()); + // let d = Fp::from(Fr::new_from_str("2344").unwrap().inv()); + + for _ in 0..RANGE { + let _ = pairing(&a, &b); + // a = a * c; + // b = b * d; + } +} diff --git a/src/fields/extensions.rs b/src/fields/extensions.rs index 90881dc..22d2649 100644 --- a/src/fields/extensions.rs +++ b/src/fields/extensions.rs @@ -36,7 +36,7 @@ impl> FieldExtensio /// an extension need. /// # Arguments /// * `c` - a slice of field elements - pub(crate) const fn new(c: &[F; N]) -> Self { + pub const fn new(c: &[F; N]) -> Self { Self(*c) } /// There is eventually a need to be able to perform multiplication across different field diff --git a/src/fields/fp12.rs b/src/fields/fp12.rs index c3d42a8..19506bd 100644 --- a/src/fields/fp12.rs +++ b/src/fields/fp12.rs @@ -175,7 +175,8 @@ const FP12_QUADRATIC_NON_RESIDUE: Fp12 = Fp12::new(&[ ]), ]); -pub(crate) type Fp12 = FieldExtension<12, 2, Fp6>; +/// type alias for dodectic extension in the representation a + bw for a,b\in Fp6 +pub type Fp12 = FieldExtension<12, 2, Fp6>; impl FieldExtensionTrait<12, 2> for Fp12 { fn quadratic_non_residue() -> Self { diff --git a/src/fields/fp2.rs b/src/fields/fp2.rs index d7c1acb..1c5c2f5 100644 --- a/src/fields/fp2.rs +++ b/src/fields/fp2.rs @@ -45,6 +45,7 @@ const FP2_TWIST_CURVE_CONSTANT: Fp2 = Fp2::new(&[ 42524369107353300, ])), ]); +/// type alias for the quadratic extension of the base field pub type Fp2 = FieldExtension<2, 2, Fp>; // there are some specific things that must be defined as diff --git a/src/fields/fp6.rs b/src/fields/fp6.rs index 7da0f74..40d5997 100644 --- a/src/fields/fp6.rs +++ b/src/fields/fp6.rs @@ -170,8 +170,8 @@ const FP6_QUADRATIC_NON_RESIDUE: Fp6 = Fp6::new(&[ Fp2::new(&[Fp::ONE, Fp::ZERO]), Fp2::new(&[Fp::ZERO, Fp::ZERO]), ]); - -pub(crate) type Fp6 = FieldExtension<6, 3, Fp2>; +/// type alias for the sextic extension of the base field +pub type Fp6 = FieldExtension<6, 3, Fp2>; impl Fp6 { pub(crate) fn residue_mul(&self) -> Self { diff --git a/src/fields/mod.rs b/src/fields/mod.rs index 894228a..db1a279 100644 --- a/src/fields/mod.rs +++ b/src/fields/mod.rs @@ -3,4 +3,3 @@ pub(crate) mod fp; pub(crate) mod fp12; pub(crate) mod fp2; pub(crate) mod fp6; -pub(crate) mod utils; diff --git a/src/groups/g1.rs b/src/groups/g1.rs index 77a43ec..6fd9b79 100644 --- a/src/groups/g1.rs +++ b/src/groups/g1.rs @@ -13,9 +13,10 @@ use crate::fields::fp::{FieldExtensionTrait, Fp}; use crate::groups::group::{GroupAffine, GroupError, GroupProjective, GroupTrait}; use crate::hasher::Expander; -use crate::svdw::{SvdW, SvdWTrait}; +use crate::svdw::{MapError, SvdW, SvdWTrait}; use crypto_bigint::rand_core::CryptoRngCore; use num_traits::Zero; +use std::sync::OnceLock; use subtle::{Choice, ConstantTimeEq}; /// type alias for affine representation on base field @@ -23,6 +24,15 @@ pub type G1Affine = GroupAffine<1, 1, Fp>; /// type alias for projective representation on base field pub type G1Projective = GroupProjective<1, 1, Fp>; +/// this just creates a static instance of the SvdW map for G1 +static BN254_SVDW: OnceLock> = OnceLock::new(); + +/// This function returns the SvdW map for G1 on BN254 +pub fn get_bn254_svdw() -> Result<&'static SvdW, &'static MapError> { + BN254_SVDW + .get_or_init(|| SvdW::precompute_constants(Fp::ZERO, Fp::THREE)) + .as_ref() +} impl GroupTrait<1, 1, Fp> for G1Affine { fn generator() -> Self { Self { @@ -123,7 +133,7 @@ impl GroupTrait<1, 1, Fp> for G1Projective { let scalars = exp .hash_to_field(msg, COUNT, L) .expect("Hashing to base field failed"); - match SvdW::precompute_constants(Fp::from(0), Fp::from(3)) { + match get_bn254_svdw() { Ok(bn254_g1_svdw) => { let a = G1Projective::from( bn254_g1_svdw @@ -164,7 +174,7 @@ impl G1Projective { /// # Arguments /// * `v` - a tuple of field elements that represent the x, y, and z coordinates of the point #[allow(dead_code)] - pub(crate) fn new(v: [Fp; 3]) -> Result { + pub fn new(v: [Fp; 3]) -> Result { let _g1projective_is_on_curve = |x: &Fp, y: &Fp, z: &Fp| -> Choice { let y2 = y.square(); let x2 = x.square(); diff --git a/src/groups/g2.rs b/src/groups/g2.rs index a833e28..a3145a9 100644 --- a/src/groups/g2.rs +++ b/src/groups/g2.rs @@ -243,7 +243,7 @@ impl G2Projective { /// /// # Arguments /// * `v` - a tuple of field elements that represent the x, y, and z coordinates of the point - pub(crate) fn new(v: [Fp2; 3]) -> Result { + pub fn new(v: [Fp2; 3]) -> Result { let _g2projective_is_on_curve = |x: &Fp2, y: &Fp2, z: &Fp2| -> Choice { let y2 = y.square(); let x2 = x.square(); diff --git a/src/groups/mod.rs b/src/groups/mod.rs index 1ec0bba..93dabb9 100644 --- a/src/groups/mod.rs +++ b/src/groups/mod.rs @@ -412,9 +412,10 @@ mod tests { } mod hash_tests { use super::*; + use crate::groups::g1::get_bn254_svdw; use crate::groups::group::GroupTrait; use crate::hasher::XMDExpander; - use crate::svdw::{SvdW, SvdWTrait}; + use crate::svdw::SvdWTrait; use sha2::Sha256; const DST: &[u8; 30] = b"WARLOCK-CHAOS-V01-CS01-SHA-256"; @@ -451,10 +452,7 @@ mod tests { fn test_svdw() { let g1_points = &*G1_REFERENCE_DATA; - if let Ok(d) = SvdW::precompute_constants( - Fp::ZERO, - >::curve_constant(), - ) { + if let Ok(d) = get_bn254_svdw() { for s in g1_points.svdw.iter() { let r = s.i; let p = s.p; diff --git a/src/hasher.rs b/src/hasher.rs index f892d67..52f767d 100644 --- a/src/hasher.rs +++ b/src/hasher.rs @@ -3,7 +3,7 @@ // //! and convert it into an element in the base field. use crate::fields::fp::Fp; -use crate::fields::utils::u256_to_u512; +use crate::utils::u256_to_u512; use crypto_bigint::{Encoding, NonZero, U256, U512}; use sha3::digest::crypto_common::BlockSizeUser; use sha3::digest::{ExtendableOutput, FixedOutput}; @@ -90,11 +90,12 @@ pub trait Expander { } } -pub(crate) struct XMDExpander { - /// This implements the XMD function, which produces a uniformly random - /// byte string using a hash function that outputs b bits. - /// Usage of this function is recommended only with Sha2 and Sha3 hashes. - /// +/// This implements the XMD function, which produces a uniformly random +/// byte string using a hash function that outputs b bits. +/// Usage of this function is recommended only with Sha2 and Sha3 hashes. +/// +#[derive(Debug)] +pub struct XMDExpander { dst_prime: Vec, hash_fn: std::marker::PhantomData, security_param: u64, @@ -107,7 +108,7 @@ impl XMDExpander { /// # Arguments /// * `dst` - the domain separation tag /// * `security_param` - the desired bit level of security - pub(crate) fn new(dst: &[u8], security_param: u64) -> Self { + pub fn new(dst: &[u8], security_param: u64) -> Self { let dst_prime = if dst.len() > 255 { let mut hasher = D::default(); hasher.update(Self::OVERSIZE_DST_PREFIX); @@ -175,11 +176,12 @@ impl Expander for XMDExpander { } } -struct XOFExpander { - /// This implements the XOF function, which produces a uniformly random - /// byte string using an extendable output function (XOF) H. In this instance, - /// the Shake XOF family are the only recommended choices. - /// +/// This implements the XOF function, which produces a uniformly random +/// byte string using an extendable output function (XOF) H. In this instance, +/// the Shake XOF family are the only recommended choices. +/// +#[derive(Debug)] +pub struct XOFExpander { dst_prime: Vec, hash_fn: std::marker::PhantomData, } diff --git a/src/lib.rs b/src/lib.rs index e83b105..6dd2f64 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,13 +19,19 @@ mod groups; mod hasher; mod pairing; mod svdw; +pub(crate) mod utils; pub use crate::fields::fp::{FieldExtensionTrait, Fp, Fr}; pub use crate::groups::g1::{G1Affine, G1Projective}; -pub use crate::groups::g2::G2Projective; +pub use crate::groups::g2::{G2Affine, G2Projective}; pub use crate::groups::group::{GroupError, GroupTrait}; pub use crate::groups::gt::Gt; -use crate::hasher::XMDExpander; + +pub use crate::fields::fp12::Fp12; +pub use crate::fields::fp2::Fp2; +pub use crate::fields::fp6::Fp6; + +pub use crate::hasher::{XMDExpander, XOFExpander}; pub use crate::pairing::{glued_miller_loop, pairing, G2PreComputed}; use crypto_bigint::rand_core::OsRng; use sha3::Keccak256; diff --git a/src/fields/utils.rs b/src/utils.rs similarity index 100% rename from src/fields/utils.rs rename to src/utils.rs diff --git a/sylow.png b/sylow.png index 5b589b604ebbe3dedcdb535c1c3f93041bcc2950..f0ce9c3d14b47abeb96da99ec0029ab80e0a95d8 100644 GIT binary patch literal 1764654 zcmeF42Yggj_Q%gm3JItb6%>#Z5EblT*A)~CwzWlFcg3}V4M;*7E~uajq>zN-Dz>%j zg8bKlt0=ClWi80AWkp3up@@o7R0yQZ{B!Twv(LPlH)-$9yqWp^KA+5;Ti(6re&1xu zJ+~BJc)?kFcJ14hi1r+P_Na@A5>6xXr1VH`PRX2m-#*Pj;-u3?Uz*aaDJj>_YL2I7 zpZ%LjM5o-X{yd*O``5hY#QpQmxFYY8iDUB$ugSfE3JVJlziGlPldiia`-a0O=8k({ z%gKF-(rNUlk(U;EC~Nw{sUE*p^Q907fB*=zLZGB1C#Sl4#R@Jqe0VFx9mw`J>$KAf z3TDqvOMBxD2O2QNkIGyCNka$%AOHd&00JNY0w4eaAOHd&00JNY0w4eaAP~m{;2etMn~$!8 z00@8p2!H?xfB*=@3W2}<=AgYW7a&&dCi(#aAOHd&00JNY0w4eaAOHeR6M%EbX~L)< z1V8`;KmY_l00ck)1V8`;KmY_l00itHaQcTw{tj~i>>!CcKmY_l00clF?g_v-6!$Ly z0003H009sH0T2KI5C8!X009sH0T2KI5C8!X009ti3xVGZz4nio3*eT!5yN(5Oj)4FO zfB*=900_8|z@ayM@EYa< z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00Qw&;Iuijug6?~cz+e3{~!>x1hS?toC*(7 z)ZRWA4gw$m0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHewBLIg`+c^EQ)UrQ+ zJqdFGen|w+K>!3m00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1fqrjoI_D_t6(Sy zfB*=9KzIopwfeW$U@ky-nWHrj009sH0T2KI5C8!X009sH0T2KI5CDO25P)+i9F)-p z2!H?xfB*=900@8p2!Mb)3H*A~8GB$ZfIIIEtO5ZL009sH0T2KI5C8!XaEt()Lyn00JNY0tnm!CZirOb`PB5C8!X009sH0T2KI5C8!X009sH0T2KI5C8!y0&oslkwH2L zfB*=900@8p2!Mc_2+TNj$j_Jy;HEnQTR;E=KmY_l00ck)1V8`;KmY`ymH?bXQG4rP zI0%3M2!H?xfB*=900@8p2!H?x#2SIiw;uc<<^sgpT}6LD00ck)1V8`;Tu2~m`ogL3 z5V`Qiz$6d=0T2KI5C8!X009sH0T2KI5C8!X009sH0T75q0uLIE2~>48=P` zVDsh;TQL`)GX!xh2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*<|mH?bXoh69t zK>!3m00ck)1X>cvxY+Y|%mrx41Thc*0T2KI5C8!X009sH0T2KI5C8!Xa1jAGhg@_s zUpK|vG*KmY_l00ck)1V8`;KmY_l00ck)1V8`;Kwx57)v1^ZfY$*CfB*=@Dgii$ zV)f3VUmySiAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JQJUjjiLLbGZzS79yy zULzm?0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&5PJlII)`Gfo9Gb;fB*=9 zKoA1A95u26a{+>YK@tdn00@8p2!H?xfB*=900@8p2!H?xfB*=@G66V;V)^c(Zy*2y zAOHd&00JNY0w6$n2PDkFTmZZfKmY_l00ck)1V8`;KmY_l00e$PAZz-7grsM~M% zG>d5Ya%ERj)0Qn>Z(_54_#r>Pq$EB4n{Ogx7g_}Y5C8!X009sH0T2KI5CDP55a^L~ z>%TDX0}o70Y;5%V z4?E27S8km_gOp2!C@oF-ggu_LH0AP9ajr_7J*lZds*aK*zn^H=F78)tt%?!V*0M86 zg(_ZCL*(;$JZsl_y*{7U`{}1Y|Gf9!RaL83-_fiQBN`i3DF_5W00ck)1V8`;KmY_l z00ck)1V8`;KmY_>M4&Qf?aP=8;G!E6?WVvv6zz8q_QwT*Y177y+q9``*OZjh)LpxV z5BGSy&HF+ga}1Gke;jt0f}os0>e1sFGK8HYDJgLQ$F@$^*K<{?Rhop6HxkeS^!%Ul4x z0_Mmgx!$Ctw$zU@P7&ahMSlM$pC~7s$MesBsypZRzxSScBzo(u!oteR%*=J`oU#D* zf&d7B00@8p2!H?xfB*=900@8p2!H?xfB*=9Kzj+mIn-WaC=UW1AW%_}o4a8{YHCvx zQGNYMC#mysh(?W4P9U#$)F|ah@cWNGnycmw&pOZyE^!rsswy^T*)n$WEnAk7;`22% zEnPZ({M@;N2L1S>tIUNlAOHfcAh3G>!!uOOrE5|mHi;)|89$K(0+ui2bm{ffhAKFlXV zU}LJ;-Me{zy0_j^y8;ru@Pgmp*qE5OcyU3&ym<#4@b%X*)m?N31V8`;KmY_l00cnb z7X)%2sy+^L0e%4lPeA|#KmY_l00ck)1R_KL&Y=i_N3+pQVD{|1yw$7s*{88tNlE9N z!-xN5WvP9|h|WHndzY9P-MxhM;U&O}%81^5mk*74@kO7{+pI;4ii*n12MmzqNa3{# zt$_dtfB*=900@8p2!H?xfB*=900^{`K=(zrpMbdl?SzKnAOHg4CIIJ9xQU~^s3I_} zSv55&DXFR3w)uRQT*7<7U3;x^0r~wSMsR0%{YO-F48}$g0dX3=^9~a)-0<&~E9>9b=;6m&z>I7 zlTY5!tn~C{{Hvu37RyCJ9EGRQQ0XN4FYW^%lr4=xUo%_qYwyy00@8p2*fFY_s9R?HOvKw)0>ZOg8&GC z00@8p2!H?xfIu7&fO9AgZgM=`?!O$V=lM1^|En2!H?x#1{cLhvMsg$82wli?g$Y=GM!(p?LMuLDV2^h{IURm^qKVW5%D{mBx0s#;J0T2KI5C8!X009sH0T2KI z5C8!X0D*Q9fJ3NVxKKD!1S%_Ya%yUN^r){_Cj?EI!j7Nu%$k*&>hm==R#uK5KX>k+LA!U`Q$K0}0T2Lz_7WJmX~8R2 za{;<_-BeWhGQ9#4LL zVPScBdiwLv$57|c6%YV{h!W`EpPN782o4WAh{M5yTZWR}w=bvL^(YP^aSVO?E!Vt$ zJ%@5An>qaSQ_kPA#V$)w4+ww&2!KE{f#Vkb{^5YR0DJDqZ1&oV!;Krk3Isp^1V8`; zKmY_lplt-;9BLaUlyZnbNy+%}>(}?~>-Q%mH8#$j>uG*P5?ykML(QSupaf*aM{TX5 zPgGN*hWd$WYk7r;`hlfZZmIplR8CHgD&_ZQW~wlp^7)iqbLS=`sAp`C&!=8L%Chuy ze*L7SaX-@2c^@C4Rrp=l9=oOJQMUWoG8Ob>V9tEr9?CL>Gbm_h)-Y zj%*o@7{T#DgE)-V$F*zO@((^}8UFL19ACMT!=@$<@dyGS00Qw&pleqqaO9C34j&#o zlt}^nyF~pyh<9@6KL~&T2*eVB^KT#1{5v3>MvoeKX)N^%eE|VC5`c5ajdvx6ZBpCC z5qZ6-soS^L)Qla=PKQ~uxXazU$8guf*tH!yxUtVZCD*m%ex2?^@eH*~04=|XhaVTuEXDn4{5*C(?NTdN)Up$Yu_vvMVRJX5Bm zr*GJho<4tmR@TCWL>L4O%?-IA5Q_x*^xvgoQw9>BNauRR*}^{egFNjV;3wKHmsqc{dI@FBHElo zp?edUJ8M>M?z(lEnI4bN*VJ_K$;!1sbka%cHSG7RxOyhr9I8C1?F2shNWEJ9{u^#6 zC@3$_%>3}fwqJ{qAOHf#~H>tLVJ+f7aJz3y}fZYaY0E| z7%9iP(zDNUsJ;h4AOHd&;06NnzAuxk%+4N(i&IF-+hx0~K>g+$yJ|!|AOHd&00JNY z0w56c1hS?toC*(7%-`lnbx@6%dpyO(+1XW9IXN7gF@vpdIsmG&6(v~jG&o3!SPmkQMo>=z^wf4#=E6dMcyS8_4pRcje<2mCDOD@q%MH>ZI#!G57%igXwTOmm5hZA~ z*IrqE`M1CEmG|Ap;VZ9jD4wPE){F8W00JOjCZHDGE6L0#@$|^DPl?MOaQ5xxyjzRt zJ1wFEwAdQsQSC9Uw9h^q;t>Qu00ck)1V8`;K%lJz;2dfzDU@pyfs&F56V|LzCr2kH zCL}!a2=7sL`sr=DIF1VOp*UZB!ON)@EmB9b`28=wxO;cco|%~|SKiSq-s{X=P~zP= zWPLZ(Frdd%TAH0*TYJ<|yiekJ=kZdbtSr9n&_k`SkLR4X-}ZVN8@=8!WAgIm%}YzG zu8wCK=sO6wo4_7>uzk1O!l4}U(7IDxmi|1YMf8Lg(MMYD?zNrP_0%F7sYP_A7STCc zRs)}{Ss?G5fBF-by!T!XWq;Y$u17uy*iPW$F6qtV^_UA_J6L-wRNr5f1`p;?oIK`G zeYaKW){Vo?KQ?F){YQ)FL#@E@Q!S$LT12z8%n{G1aAPxc`5KaR7rTwSbeT=yP;be}sKmY_lz+M7y4%y2y zZfdKj$j#lbAvLw3L2a;g&pm3@gx`P7HE{#L)KMAS=AU2BJmd8$chJKR=jByarl-IE zzNvWBM&TT?_tuq`=H%4Y9(}Z0H|FzQcO7pdc;%JcN{=4)wiaErc|1=)T~}9MzjNo< zv3J~Y&pkti{QPrt^#Im_Kr|CL_+Ykv{(KItR{+Z(-=DRJO0==VP-?1L5mZ{*r%&w8 z%!PBv+1I$?boKk|>-i*ik7w*yZuM8ca<+AM*6#6q_8D)}cgZCM1!_gnmtVTmQdk87 z(M&+jlbAAvdvV)s94055dnM;T%-13+(<1st%Ul|9rwF8L5lz%08mmRrRm-Z?r=H@R z-~QIB1kynO1Y(tdnuMhE;Da0*kI!lmy{~0Bf&QhX)^;ly<-_%CotD*ho9CRvcD(#@ zxa>hYAOHd&00JNY0w54G1hS?toZ4;=QOxun9cdSV;$pS5Vf1LVB*y1^;t9UESFd(e z619cZY0j$WfBT#A0{Q)O=H%s-muF@!TNbrl>Y(B93Uv@%Coh{dYtkfjh>_Q;CU4$& zBk#L5W(>bB?K|z)Fmv>ipMUD+xd1=?#0Pd=cU^wI@)RvvWY~^pAOHd#Bha@mUnk2+ zMvSnk=T$A^@Q2k}R;7_1ZUVivh-4X;EH`Rt2RuYAc_0P?@kF3^Z|?2aUvnrk1Bg!6 zB6>$F@=TJni0ZV6WEo{k%Z3i+_^MSc(-8v!5C8!X009sH0T5`7K=V*H1OmYbC})Vr zQ(BsxT~l-W?d%kiO{!zvDI`mN%FERc5TeY?f`an$jEwWok5{KquvZAu!bhN}X!h*1 zw15A*prE26BV*jSq$IC5DQVCk^*`$O7Z@qb>5D9D0CJ00~fzhMc{*ON5FwhaSLCZMo<}58DID*`H=fBe;TA|er8%HGd zs(15TfOd2RML_@r+DhQN@3`c<@0zbTSIe9lxp;pqE2ogyRa-015P|>*fB*=900@8p z2(*s?oI~y774xO%&6_Y`&6+M`xlcJc<>meRZ``PymYJDFMNLf&4avzF8LCgl|LgYc z(cDLC+m(Yzy)zXSR#*4yS6%(mOZ>iN--*iBZ6gN+qMg9x$=rjNUgB`yea$_ReT5Fy zB9ged9O57V0w4ea(MUih`x&;6)H33cewLd96u~KNe7MI2& z2!H?xfIzGe_{TrYJsGA&)J@Br8~%8@mQ}l$v}Z*I=^y|CAOHd&&`ew%L+izp9zvxjs6HqJO1`q!Jds$gT)YzDqICwBKx&M9+o0?*Uk$Tti`-crn zOjKv0efXiA(G)BFLq9;E{RFyn;cK3GhQqu(a~)M$M8|6p&CxQKLL3A@00clFwg{|T z$^9`V4avDa@_7*H{`S?fvSR&us~n_*00@8p2!H?xfB*=zkwDh;g;Sfy(4crEP+FRk zvv%!CC;9zqals2OFoRe+L`W?Kdhb28HMPf+lT%PIdvR`MYKbUs9uZcM=heCwTNo8h&E{{@3T_$ae>7k00JP;l0ZWP$K}wWQKKaPL@lD% zwIntC;l5f{?aHA^R{2N=0T2KI5C8!X009tajR2fOtr3c`{IW82g8QgZ%5~!PKKC4V zuUog+=;r3l+>c3<)Btcs#uHDdB~bhq8$CoXK)?+v^Mo&Gpv@|=rrsnd? z`M;&Ik`Le7Z$CTQibNf}Q$kVJPONxtgbE~T_yR5LVygVc0#b$>p1Oib<;E|*D zKeml?0TL3pcTYaaVW3k;2Kz47GMpi9rNYi@qQkU^WYAKkw;!!VG*F8uRm=X~i1TQJ z7SR`4MDJ?_hTF94w*xhT00@A9y#zk^fa^1yLq}@a+e$}j3+)_|-+mpb8P|XS2!H?x zfB*=900<}oa1O=E>!7q$&6+>w9CgHw$Fq1b5B{d4M1S|yFz}*9O-+rBO-;AlGI{dc zxq}9&9|{!}(cd@p00hEAAU|L2ulSe0R95EX)YL3pT3_$+`2EwSv19etTiFV46z)H& z-XBs@RBwp>`qz?@oSf?FYpzj;GG$~u{&;xkq7@Kuk^s9xi54v2RxY{3+}dI-qARtG z)iLIBk&3IM!qi@nBeaMv(IUD~i%3=hMan)|T_mfJBs@pUu!{G!RBM)%h=lw9X%SUx z8RhW|1V8`;f)lv<^ZMo;LDOmUsF9ZjFJXV`#~+*PJVMKy8vZz(L*ZwR7C`_6KmY_l z00iQT0GvZHe!tab3EWh9D^>}0!aZ*xrce|>J2d!_skq3ESdo8;A1M5M+9R#wo zD=N~{w{2rw_eu3md4iS^mT3{K&?355i|A=BqFq{TYXhY~00cn5 zJ_3ObA#r}o7M!xhrhRR;ttL2x+Qtc`KmY`yoWRHht1b%nT!1J?2J=Ax1e_rdg)_mO z0TFAp@}TbTey3InsUZmNUo<;~R6ibisIIQQzOL?wBMJ&CD>E|S6pFRiE&Agw0)>U@ z|Ln~-laf51q@<&c;uVMU=d+b+HBK~2If>Le<3kS>7w6fgC^L2o8^J-kVQp#0VYG@ZlUDdMJldzI%6$%UO&^9?9{Gnt#J9-E|j-@;zkx zc8*&=9-~F{uoh9Rma0jKsE?NQ^~eDM5C8#t34HYx*C)<$-i%lM;u@-DZ)@$T4bGwV z&_Y=d009sH0T2KI5a-baLQ#Nss5AdrC{yo^#hy(A(8SXtp54bD<9sC>~E{8gaCrLb2B_*7{cCD2Sy|sv@Xc?UD)FRqL%j#;Rg8&GCKxYZ~ zd|ZQgij4Z?5H}+wywBhv3NLT81_B@e0w4eaAP|29;2esPdoG6w`FwuA&-ctT+%2_z ze{_i#A-wvk8WQq)4?kS(7nhzc12ECm7g!4du}VOe>?Jg-p+N>{Uw9!p`^!fW5#4tm zA4YWPrJd@>su#W<5dOIUoiZ60M;n2zUD@JipXE@N#}NIbWh@ukq80xB9im0_Pc5QS zEux-UR`&2D5TcngxkN?=hi9M7;R6qFDCIcjzDF5k6(?0;A=@};5Qnl%Nha;=+GXy8 zID_ucBKk^;=teCf_1+t;Q+>>RMH~b`z)b`Ko!F6b4#}Q&U9_wi**yussvV?*00@8p z2!H?xfI#dLfO9Cy@2#5UzIN?NC-GrI3m0;Cl9QvWTgoM*255_mckSxYBO_z<=-Y0q zs7OoOv?;p!0c$}Zz6ea3R8}^4@b}-dv*^ML)%qKcCp()dG&DpP4H;^E>M7o5?%Z>u z%YIlJ+XQCM=KdXan7N&L#!L`?NIH1{wtRx(^Y~i@^xSy7BIMF*=k>BUZun^CFbMdjwuitR*3jppQ z;3NU}IEO;77?M4W;T&@E)quJ|00ck)1V8`;;)4L3Ls5F4%gVB|Yif==PJK1@dS8B- zyV0#%^mIpUWxaK)vfuAN|9n0XzNkn|k|mN^x6#uZSPBC1O@RNC^YhEg)6?h7QUAk! z|LD=oB-(zstD}{ayL!>0($d`AnwnEjjqiJl-ba?eNhfjpvZb0~%{(olg<3|s)6Znp zN~IRj0xhBxEvwd_c!G0e^~~LObKE%O!s^P{OqcgX;UHW}OS!*+tBH=&B3h|sY(bZ# z6`PdMD-ZyIa1aP|2xV%8qwSV$gmwtYp>Fl{Ew4fh1RN*u@>>&|Hx|HL0LMY20T2KI z5CDP55P)+iGTb}d>a1D0x$D+tX8L?;rOk^kaz%UY+2IN!a^WYRDECi7!tmjRg%uT< znJ>K*5i`&z2!Mbi1PTh~%*o7r{q@8|uh-`rHcUBNh*qp{q%p@TO-=P{J@?$~*%KzL zTQ_8gV@;uA5C|ZUl*CE*-N&K#f8WB0T2KI5CDOAB(UFs_dgw{a{;oZFP!?n5r=rZ_tDhn;^LyB zs;chYyjz4lsaYE!dLIi;wmynMibs;cO+AJ&2Z2(*VlZtm>a z0|%~OpOV7=_iC}A-!BKFwWp>?mhI7_sVO0$sp+McX3WUWuCDIWCz95n?RX)Om&ZLl z^ib(Bdn}E^XX>>i*SS!Zr~E~W=+|0S?S1?)=g8qYfBmafNu-A&ux=gaUVb@;7hS|* z;GVljYZ=RmMrwts8+jlA0wC~90^fY|%b0pDds~{*osPppB#PF+k*U^Z#q!gAexTv2*8^E$5y)e*E0Ig9iQh zV|3UJD`S|zZGSo|BTnZ6ME0)od%*79ysYTTE0r~V|Fmh5wW__Xr>7?-s)bNXmXwv{ z=YRWcH0|Zt-oB!IGYP|K}Ddy?q3pdydNw9m?S&kC?BQ6Wo8LWzIz$1V8`;tOx`;hf=kOx@%coXMZ}JL-sR8 zjUWI5AOHd&00JNoi~yWN!Kk<*jgPz7y0vT9UcDZCPz|3FoqoD2Ol#E$bKv0YU~tnl#R zYVFg`osT{`ty${0w}_d7hGURGem-}qYgg&q_gX{+T9WE~n6E{2rIuBDue`!JvYO@R zpRGzpF8%KHSAG(Ua{*)zx@)dsw!ixwhdXvejx|~a0T768052LTWO0T2KI5C8!XXdeL#YPFA7*h-g_Oq^I^P*W3M{`=pn zLxeIi%E~%b9WDj|5Qu34eAw8%_o}1Q{QfJh;Lf`Lgkfbb(IuCprf%C-U47@BF@2NJ zxiArsEegktGdEbGMYKiBoNIslbS_reRge|2@y(a$MUN=kBaYHGyp=&%}Ax{W~KilNO~ME7brZ?6o>J)}jH zpk;1Xwurm*QqI}6%UlBSNDx@Hidz*Y(bLUms4B_#vzK1t_+yW8h({0r0T3_~kkyDr zdg#?VMmf8lb_~Fvh2@}?=891=jj-mhv{EtBQ?)>z|8~>N|-zT%RhP0&yKdYq=smB?econj!Ng9ryN1)>2fM^+iPia$r~$9z6x^z+KdYYK_J!$6c$!i zW@NniWQuBl4Y#H zx#0aQI2WXX00@8p2!H?xfI#~Rz&X@@X0~3Dn!0^^YN{G&QS;+ZJki$5ZLh4MLCuTz z`?Iq0^2*CIGnXy1y$MtZ0w4ea|0R%@r&bTW`>r|<+2gt30#0`GK6C0F@~ETg>y^8I z{(RiX_7QmZidV+R_gsK$t}zpPN-KOThVIa^+DmTjTDEWcbhDj^g8&GC00_hqfk5XF zRu09|{Y76u00ck)1V8`;K)@gX=a9i7tj~&zv$Jbz&N@rET8PFs4~V&0O-+8kr&(jh z@Sz|}mblqk*aiY15L*O_iqs0l<;&H(5Rn|}!&_Opv8U`rzxLYV;@sSt8d(kEMoVE+ zREt zF9_VmcTcVG*%5l>5Vn;I-{h;h8hlITZWu%Y%oHJi^VZ zm>Z>BLTbkT_16~`mY1ieKl6+mt%OY=00QwrAV0snJR{@PSJkGLL{~NMIH}as#G(5h zm7RY7J@@d|a{cbE?k>c*Y_v)qgnrmoy!3mAOwNJ zLggfSpm~EDwM%DZWr(5?&Ef^3qegY@x_x_9)x?PrH3p4Gm_VOCY{21%n+Vfj!jzxvQO5C8!X009sHf$$Qr%Q+NY ztD~s3*|YQVs;kq|l%s{HqQc##zxG za1J@ly{W0O(c@8D$0_Zx2Z!!?(*#D1GPkfy zORacQGUwVKAEjkguQ-IP@{t}_1YVhY@fi2c1&FI#fzEW_pi`Wpiu6j7-l+x1d?CR?4 zu8SBjG#mi}M;~o&^bIX@s{L^pa2uj!RsZtkRyjxq0T2KI5Qt?0fexY24jTJdgkB{i z?O-c8A>l-L;<+jJV=jObWKkywfB*=900=|@fvo8Zr@}*I^NlJlE-I?3>fT*>Ui|*q zvu&>4rs{ankl%mJH3bC~6=`Xoe{NI7s0IW;00bgVAUAjR?12N!v2;~ zBM5*12!Me52?TnG61AMSd=IVG+JT3tHA2V-0T2KI5C8#d0tb(-o`<;r)_meS2hJgz z@4v^hd$-3^R>sx3aj;Lhtx8Jr^D8SeGZ!zmx%;RN1V8`;TtlFsV9uP(%-3IMgQiV$ zjbSYe>E4|vA)%qct&<5_7>h`U31nvSrCqv66>18Jau9y0C8^GZgS4#bude2tUAwGG zARPoi00clFmI(wphh*8Q)4dM8e8}hH_VM}T^nF16AOHd&00JNY0`Wrt4k4TFbxFyj zNi{XcAJ5gfZ+{>@&SLrUy1MS&*R7i}#inkf8W$7jedofTFc-kZHwdOhgg{+gj~*Er zfBd6r-0y$+<%k#&vQc$X(iK;fmF4DERRtbQ6Y^4IMhStTL(PWPY7zacWzMxf-c!q} z-tWG%%0W5^fB*=9Ks*o#bPk1U009sH0T2KI5QuF8a1M3) z{wlYN`cqpL$toeYoh-g>o3hUDzxrx*V*7{@jg6h|HYxxC5CDNFA)wy()O&POvwXg* zuV%Bq{nl;f^JZRi=1gnW^5uz%ZnF>ebcR4$n)&Llw9Kg;if{dD)4uJR3lMtSo}Zd0 z7C;~X0w4ea@k^k--rVq+4fZ82tfb@KmY_l00ck)1UgFq&Y?~cR40j7 zRmnLPC!N&E>TJJUxvBjAn{O^GR9nZbTW5O%s1O7|00g3hz~squ=MEaQd9#{t>h)f8 z4V&$r*{5owPmgEFkd&0IThr3Sz9@kUGg~3B*IwoVTeZxo&c#Cy>;(=4I%f%L1_2NN z0TAdIfzjJ`7q@FJK*yRPS)pTG9(qNOQLeMkLa$K51jo+u#q}Tn0w4eaAOHd&5I`Vn z`ogL35CvdqTY{S2T~m{iqQ(|Io*6URc2)RF@krxSPvz%VRAgp8{dD+RMoS<70wCaS z0)>SY6=`X*uiOIlaLfg8U(aC? z2!KGO2*5eiLGmdn+qe6C+1Y$~dU^+|ap~&ITYx;>R3N<6$pR;2!KFz5(r#Q zttP94W5;ytCl{Ts7+4JgAOHd&00JNoy#(M8YUjPHsL0LTu%TBkwM(1FGkJ15FAq|D z`)~KV%$d0W%0iFl)?2f)D=N~{w`~j3IFdjB1V8`;nhE6Pm6rDDvttJz9Czc53?*=I zBvP<=NG2y|#*Cbt+S>j1kCYu~*A4=E>|w6uXDxH8bMcK@R`t7Wl8cp{NCyEB009t) zH3C>U6l-@B{Q&_G009sH0T6II0XT=+d50Pr{Qic9++3bH6*&91oz>Y^TseY>7B4O= zEH6(_fBt#fDn>;h00JNo;{*x{=FG{=eEoHH1wH<_W8J-C*lTM$H5VW?H6ekhsR=8H z9J@zhsW@<3oX|6+?Kf(zmQ}sIdvgv}5LppIItYLO2!Mby1VVovHZ?iZDryA*5C8!X z009sHf%qi==TIB({mhxS-nwz)-h1=l;rQ`wyv*@pY|oEBCMOdmB~6^@c!OvF1V8`; zVw8Z-*U*rhEL+QM-t3lc^0{&2#_`J4e*N5H7wl*cf!({!rBk%bsm{eWXc6tyvTA48 zFsmG-g8&G$oxo?;Z2w)S<^r_6DU<|(m?D6cLoszb(HRf`0T2KI5CDN_AdoeE;Z%5t z+IXiD5|WY{8YWG0+p;0G-;m!wd2&upd3pc-8#lJGJ17PMAOHd&U?MPi^8ESz`u*?& zk$Pv%&o^a9FseRzQc@Zkh#DFS3L| z2!H?xfB*%JMC#a%M=LsD3;EJ~~7r=SWXaNL300cn5X##K#wL(~y4XI*&|E;&S zQao(gYA-pzf7PnGy6)ZAt-JsJur-W^KmY_lAjSz46sW`69(#8{U5GRuxu4PVjKK_=LRXb;&ZIy#`5C8!X009tif&liDbAoET*4ei&_k7eS z4kt|D@V@&vT)LFQ4?pDav(GrJs^W0VmX@JRzFo71)8)Fi-s1SnFLStH0f#b)>yk@2 ze$-JMy5~#+wg-iyo|tceqSzJdae$J?y8o96~9@%mAI9_~k8 zK~!Jw^EEb3n#8TkUU=cQ1?{zuz@|;+@_n_;sm{k=(jvND%iP|HCvwVw0UWMdXD)#_ z2p9ws|NA>aUN1&YY(M+{d+y(lKgM=H-QK&@RJL&c{oQV;2W2dI7 zH915#-e^%Q0?BGXaLE!in>{1rwbvqG0Gb4WSSOHwV(rH3vfA77={XO9X4rAvLD~Dp|UfS1_0}kN2uDzDSU;moJBah@zzOQgBdLA<~ z*;Wb1jA?1R9DFKcK2JZ*`LDjpVSRne@`wc|An%i}zaBh4R#WBopxsW*Smo8(em(p! z*C6jtovqL6`c)-$GMD1><6V4%vyP($JG&Wv!6=%y24vWHJ zOKxmbuBxV{qN1=hiH1M`1VA9p33$DYjb3k2kg8z;lw!S43z0 zrf&u}pU{|2qeqRrG&*|#t0PU|Y+uH zs-;f5F={Db3IA;KKu z{ZY0(#L6>gUkS1@?Tj;=ZAWS!GK8NUcp!&geI+>vog^TWa%AOpmo84W7LmHMrZ1cd z50M3W9zk)>;X-WYBaajomX{A2B%9(|7>{HS009sH0ow@V<;|OymR4O|Qj(inU9Apx zQ{S{@^K#poX?I2HbIRkHIB{CDmM@<-PmS|qf6;bh4ATXH-`?f0q5fJ#8??e?PIEJV z(jqFoX>|k5#>Nu2N$~!nmBxoh8qd%oI#G-06fL5Yw1^JTYRyjB!%DuRN%-ZLe5K6pdHivX z$NMrP*#lNQCDFRvthLvLIe*0pa|+^45D?E$*RD>~Ze6D=Uzh)P>ypT^gMj?j`QQVt z?UYmOsMS4nY~Jj3k1_7Bq_{XcyQW4quRZKAcUaZXz|+@f%y5T2umS`?00iQXfX9=V z=<&>)$vxk>(;WoT(o$2mZA(j&FNp523Raj2$Pd$RzA@(c?cI4N z=g2^WRXL=`CxLC-xZi>M4)P=`qSLh0qDv+Bhkwwrx|_08NCud!${{_x1mr|`qt!39 z-2Zx$r3jyB8TPk)Ci??Leo{(HyX=dFUNY3wWM50DDf|SIletY!XjF`@BnwXt0+1KPSxJpVn%bdnIvMG9>Z1 z3-^BKistiw!n!Yj+FGQg{!gp(udQOOmUSC3{Ps6kg!7pk5NEXctXAjmxA}kFuK1N& zhP}a`<>kRSWFo`!2;B7LTUqqTBQkT{WGF zhB8O|g5ZlB}u-P7KbW;9T6A z%A+YnzyCd3xOz2*^XGHew=ajrW1|+)U$uzN(J~H0yi1EHv=h~+FWR1M)*^aFi|9fv zqW!egF49UwuW1qaw5)n5d}TF3O%0cngS5SIHvT70vhThVVzMvby;_p${!qSGiE}i# z#Z^_o(~)Wq0r~$q?>uvTFKC%l+aG^U%j&x0kLMiO;lZjL((NT6`xYCu4$?B>Zh0m< zlay;&StW-jJ^px{eIQr?Au1`EFk#J_{{5AY&+nJjLe}NOlcQD%sXv*W9-daCrj?i>OC3(FvSnie;L?@qIQj(KXTYJbMVS#`~I!IvUO7n%M zYME2R7ndzrW@uTpd;RsCUg zt@4o`83M+jpS0gai>RxXq`D^@p+$77mX%%i-pe@)7h07-ItaLjz@R~F%NuWS_~$=! zn3iU?QC7sv(;|{Xc`nu>dRePACy2S$*o$w|BKory(V1FAL$!?bdM&H|%OoFpKas;T ztZGShab2nvSp#suhX>*XPlAa&S!gTnYV#9+q$v&I8Deo0)fsMSt0n6R_9y( zK#ORTmbpH0P6e)3GM7Z$P6C0Gb7T^dovqkWm+XKblM7nbDF+G5WC6b)&Y}Mj@_4-7 zganz@(*9EpTY|PDre@ka_83+P*})QZfB*=9fPDmvRYU51TDESmul|nKq^xOblFzY@ z*5c0Va{smI!q}S&AcH0bbJ=e`(km-uhS5h_hJ7uc$!k9|vt>GBAfO1ypwnZInR%!) z(eAi|NCr2|`EH5tp=D)_Y@=tDkMzh8kh8A>TbGmK19KvivZof&!&+7=n`DOSq)Cyn z60L$jTL{S5iLA_!ZM;rB)qJ(A40=$@*v@N$7LiO+F<*yxZ~|Xw87qngY7xozxZo?n zrLJR+;b-r^&!ISt_S#EI#Af)^Q{1oDUpM!!M2jfW-^0yznd70qpGawZPZ1K%gn>?( zceIGU*Xn$$vNACAN+fJ4*Ll+IsUdJ%cv+$2miLVeEp;lkl2zYIN;u~iEAF$VFPsVw zQS)*kUNWRsXu4-)&FfXuE$7a)x}Qh~0T2KI5Qr=RpU?02cq%H`ipcMGqK?1tc&@(s z{`<#`Te&hRDYA6XdT;`=L9r~cAd*qSMy!uwk-qB<>e%lquZDKEarVUHf> z5{QEU(QUUe1!IT8o?1lW9daur`F{*?fz1Ex@la>y0$6*9+_rp3_L7rd z@-5jlHga5ko5~5uElVK=0+A&k2i^ShpKOQhVV0U|wrh!&alnooxU){nTpIC?64;S1-}o{pZfaX`AD^g zK%j>xv?r(It%lxX?)1~S=6F3=tm9lecBLF3Y+NmSJ-TJ)n|!~N<@1K6>e<&{b6h+` zMsD0Yhi1*n&R)BAd17KoNp^O1 z^%-Z_TRUn40T2Lz@DV5~s;Ed$=S{plp68zrU(2Cd>eFZ2w$#*Ky+)4?RSJ2LA|Qjy zGLT}}k)>tCBlT>RR%<_uhYVr+o_mhNZrvhfFWPk@flZs(s=&RG$7wY?0JPj^d*~^- z^8f2TyW`s;aijzegt=wO(D7PC^7;>czhq!trt$|bg;WrT3;~&<{=o;_{;|iJ?T|xr zv|6TxGj@y?(WP2eEl-`wIf0X@;@&x==1F+H>TExEh`o-L zmF}>{ek)Q_w{IUX;HsAn@=A`4J!b zMDFle{D>Bj%svXyc<$9Qmy-SCrcE>FAPxeNBOt3u?!KFC_`m<-FmT_or?iYiaGutRoaI(6 z%m1Uy?#|RQ_Bjpy|7lfQ^rXM4MRb@J(JU=BF zNR3G!y|jq3wcOXw(5r>u5OVg81+Eg3$#hORzhy@UIeaa6|HNq@JQt~U5s-Jvz)48* zyT-1T+FOtOo|4r|Ew8tBfJ?b>ID{Um{>_sSp9>%z4i;8aNCnUhmfgKfWB;}x0wMT@vynek2}Cq|y36&b67wR)Qt(UV%i zN~p9EBRJ>PS2^5!Zw~Po-vneUtUvzI%wdd{ap;6OKT`1>T2`%Ng`5?c$fhSJbNdn+ z)`UKE!zky}v+-I)M{1c{k->(WZ|0ocyUisK2Z8Vt=+%qceCZ_)<@-E;%T;OeeP>{7+MqDNbY}F$ASc~W(Eo0^15n5`h ztCI8mw5tUfY@Vz|BrChNXj!!)lg(rjP^^3o$_nSeV;sae)I-aPOZd~_911^kqs74S zVy9LK8Ex{j&|Au#a}JlncJgL!&cxm096DNy=sYc}-pZsSb!1I&g~K@%yyXa|Ha7Zv z_4V=(w8tJ1HmCUuh0o{pE?A%jR{1Z|7TMeW_U+xe?Y*}wNw!)=keJA=jvbqjkeHZ| z@a31KrMbB^H4`Vw7IgMnh1x&>1lmGC{r|06m7Fa9k3@-yjg2z9b?jKKL(MAe`O|U5 zE$0HLA4-1z)mQWOk+L6oTUw3oGCcoIy{EfD$;rESD~keWI=R6**syssGZ1HrK}3F( z8Yz)|CMTj^twj`iM({}|v9<5K!(m27WUWW*?jRsDkE^T29+|=Iwlj!i&{OPe8OF+> zSj%2Tf6V$fUFiGiT+e%J5#6a})y|X6Gbxqcc!NVcf>eOg2twTRx*A}Z4&`kfZhp;|=k-Ck0h0*7mb1;P$Rtpiq-V}Y+-U;x`Q&sv=K7~-Sxr)q z<7s63ck|W1h-Xb-I5loPMEs6=>7~Em5y7YR^~xhsU;oro5j4V)re$QAKgA|bZhIr@ z4)yHG*Hu=grf%DomiC|jl$K7MSXCvSy|&kek{|#A?I)o2d91EJ|9rI%WNPXcU&#L> z*VNi+hicy)^$k^~8n(avXuG1WuA!l>?k|5~yMOvA()N43ioaVv=ORtRt?kd5W47!} zEo0vgbAF`aGL`l!Euu%YtgI1l@O$rZ3H(~IA{CA4%f?>1vgKTW_Vhxg+fAQtzUm4s zV_%= z!<{d^R9vj~oqO%I*|R51Shr42#O_?}xEciFoxrSFlP1;H9(5G&6ZemQsD0sxUU-3* zGp|e=bj-$)TY(y6Xw}xBi%p#3UKC`#l=NMRaLPvwJ*|C z?QZ|I*SN+{Kb4wg;6P5nm2|g+;v~98i|B4GE9-jq<{ar~cD7YXq{jn+C!XM5e)*;J zRtEm2Ye{P4!k@IP+LwKntn!f_83KV0p++sDU0UI@>JTlW8?>z2oiT%RzWvs!1kypk zc>;q5aT{;G$)UuJmYWY7yz$D z1s`e|&LXbIeUGyDoa_}S2T%sLbl5OXm*MJY|IHx>B^t|!x@#HE$lx5pml}FGES5Jr zb0-3wE=#nCWP1f?+6}BV^d56!rm4QJ)ECPHX3o6z){PtY-dp~Eyk7OyMs^bT)vxU7yZYet`zulht z++T}&SNHkk1lLI0+og*d9`kt4KR?ozp#5M3*o8+_Qew`%M2ko^(KqKuI?gKziR6o^ z42A~Z?;!ENd&kNTZaHkp4f8J}O){R^m&3L0ywlukne`_7+L-gh6_@>ig12|zfx**} z8d(A|uxnVcP0NUf>shIm+JRTe+^X!S7&t54ToQ2*aE^dX))J@CfC1*VWS<&Y1tXvL z=5n2l_tGMISj$)qbg))ywaaRi>#ygM`|Zb}{C<(iD33hC>F>YK;o7wv{_q2byLNFX z`~0q6&2d@z{NRHem%X%)Jd)$G$|^sfhk=iBD1nbf@FeZt(Zx{{6ZA;ln#_$B7f4y+Gyybi9_>ztYFUS%P{&z|92izkl4gl`E5ycF*5 z6Oe6X|NU=iN!>Sf=gPIzCz+Dux-WcCi)e%v(brm5cFJ~#AAQ6nPCnVHB+_G%fD9r9 zu9#Dki{#wYNc8+mEvuGg7P(bE(j!A4aAk9?R`{%uEtt;LvT9eh*WSI`ssz$Oz&Qf_ z`f=TISj_(WOItG7n5#wfM=i;S&1y)ds?XX-n#GMLdvWD!q(6Svl5L_l-w#*F`izA1S8dl-K6^}qV|7CJJW+vqtuY=^5rtK%$ZhDYexylcY@qpa}6?xlBZ?Pbzl5lEu!ICL~m+Y z*(o!YmoMiMGiP!rGxn^mLwa-*kk@p+-e=p%23P1DCw>WU1xsGZrbEm z;%v#v;*!=YbgXI$Z~D9Ma(kmkb9mfw9Ll6I!XutLM?$M|ZcX2~ku7`X8MB4b|KLtcb7}kIvX!H3`4_weaRLX=MQU3K1Ugw> z(;}+VYHL0AmwR5zs@@APw8}wxX9yThLa9Y|%8*df?GE?RBFfUTs$I4#mMvAS$^}W! zn!a#q+<1t}$|g>%u9o$#eftLC5#}VdbV;VZgt=)4n`>zB`5GE-y_K7A183zKJnAU^ zHnV&=@0<1Fi?e3s=B`_pndu-3R1E?VBQSGjUS3Vj!3V2DeyXbe_BWqTd8FmA57|c| z{O0lDMHgQ@YgTr4Rn;-agx`Yjw&?dKBzV1Ud7tmmqg%Ia+cGj@pL=-kvfZtTcjPaB zG1siTdTJ>}+egb^JG**~JLUpx(jq!di%89mQS)QuK#-Pwm4#8V7p-jOk69iqImKG+ z`RBPufy;>UwZh-u)mm2V%HBmdfXIqaWYP~m+}!TxTIN*y<7a9S{YuNKewi7gW{p4~ z5H12TBS^km$ew6M`!eFaK+8zC``KhIq9?S7Qnbvi$ljw9h)&lE zzum$=^zzui<+S0qG@4sfGg_6-JC8%-F|=pKDChLE(1#8U9m?%vFJyb~L*O39;<2^2 zoxs{;kIybz=KSxz;}rRvH|Mt=j~nL@Pfk4Rtk#h@TS9%L`28C*T8|YiLJA3 zhNJefvi$sSzg4bO<&4S83rCwBYeU_E^Um{nm2>X%&*hMndGjVrShL0rhfj5^SGX#^ z3GlMLUcKb?td8LF`+0y(9j@jsIv$VLt0r5?4?cHUXQwqqMYCt8rOEzaYnq4YBP;be z*whsH&%wx2h?dr6s^z9lVzGP?d`62%PQ{gcw}!H5{d6s3zquMME34&)jGSt`U;&p5 z*Aho7yO3@#0U2lsJZ$T7t!C$@mc6Zps%^a%(GOZyC1qgGDj(_LB@nnz?MGV9Ss_!# z@6xhrM-Fp&^;N49wxw6T_59xMmsHP==Nu0I_(u*K8mz8}&U9Hed(S;=zYOBO^NzVcviy357SZ8a=2DT1%U((sXc5U| zpq3VibMnuB=5*`5nOa`wmY6JGTei$>(T!T>)bPbaFOP+DsB?GX*kk#6nGB?UM=KG% zq}93F?YLSdzl2`yj%7r4ur}%l{J#qQo7T9pqt9dyxv^SSwa7u&#$K3KC9Trq#yLc! zJin126yqNgix=~pS@~jMb$g;GU9A_YtCQI;y?aN8<;lr%$Vy$EI>h1g&x?z*v#YDe zjA192a&$o;;64Is{eapRjQ30&JGP<0?{8@M@=JL=v&Hg7+$W?jm_l+1!` zSzbPe6MO3C` zRj*8%lHUQc!+}-#SW92Oo_loKX&l~vzqyBfw1{5UB05sbTq<($4O&E(Xc+_NEiICr zT8fKXrbkQc-sb)ITS^>ZeYINVg(EiaSx@sWJ?S)h)W}Oi4@w7qHipB#*l8p1w}$MQ zy;;jWJq^8rD6k*yu{;_r3H-kb?WFB|A7$r_fm-JJ#HSGW8DcKkT0G{RL(`^>8@Fjw z*RFiH&q*h>2E^%nK5pa17oBb=-1Yl>_4Qt_dO@mz967n{ERpEr}7MKu;7=hyAoSfR)(WAR|-MTd`?bAIS9dpdASvTLjZe7owjyHz}Y#{Krzi}mjKdNPL zvRuoCrovo>oTxiNi|Ax6qE%W}#>jTH&ppQ_G=$lZNF4bf;QJy=@~9c#!N`Euzo^W^JoIRH@svtV+lr_gimSl|VWO*iS&Vjg~F2 zj21rBBDzw`Y7pNj-_d8IwA4s|5+C_2Q#_11Yijtpob)bEBBMlnJ(F49;>^4GX70Z+ zjv}9b^0{=BmU}44fO%+V;7vEN#o`QekNu%7k#RdYgor3fi|Bf-&{sQ=8+ssGoN-RH z91nF~aDlm(ZrMVveRiF20+;X8$9x^)9U&0@)k0&mtZbF)|@MI0i3bOiCT+_{`98-1Ga80C@3$_ z$e1`$wc+(1b{Nlf4#Rc|Hg}2#-G>e1LESgs|DztW>%BYVMceB-&exNZ#jy&mxZ;4Yf0lI!`kA zBp>w~P)R=L_uP}?Zhw^XuO58RZ0QYJM6%M^obOaT^cG@)+pIceM{LzQXb|^j$PjbC zWW}X9J<{>_wXC*sl=G4Ton4W(J38ABbPk1f(ssO;duS0|tYuZtV~<(ov^za(`ogI( z?;%p7`#zr=M!(cJ?(*g1$IqQRXwdH6?Y>)4c7Yo0O-uXy^TI+k>U-8%Jc=#vN-|X_ zS~{h^#VG$)Ru(V$`s_0`N?%nqYu2=Bx7@O7RkUrG8!g=9&(6w9<#p`QLtbAA2|l04 zqc%9^*I#rJ`SMF;z1MrrIqWq)|NNq&^6~)#s;Z*1Kkc_VD@!eFPzOM%_Yyfg#i*wt z@z&-|;CWvFBQ-qFltmtoOe+dcn`ou81Z3U#?|#QM$tLJVy;HP^gfP zNf^AHi!KVDj#Os}BqVVCGSY0cCL^atioMT5zrX(TpWNC%{$X#cs0{={5s=TlqmD9{ zl0ynMYMFC8AD3kmi?oRL)iT$swhK^_!!P3Jw*dFMqmSb8lka`vsUVW&L@#Q&=O9Y? z{`Pw^Uu-MD>W5M*)e z+pdr0Qfg2?@}C3l`dp0V`|U*ENT^BPXZ4ynp|?x`Kkr%Jg(~ctTUNWOL-`+gFNTW&QfeAw?x6+1b_A@4Z)6 zrVfR{Y<#<4Ke19@Ny(&1wY4KhrlxM&R$cw?f6MEK`xh-=jOA{~Du%}&_j(f(eZGSZ zlK*ct+keOq*+g5)$9L%WN8UN4J{SG|V~qz{XA=~C1it;2ZI(k%0%zaKVHgi; zxo4oDqpa1p1+}ZnJT0QZT1GthtW;@DR*=8{KBve!{C@qU1VT3v`2Ksg=HZ9UR%L5h z?N?+j-TC-qT2}QOeKh9`9conq=}r)keI$*#-_s)cQOiiT>sgMLm9zchkGY+|fkM05 zM?D~55Rm=j?z@lEWZxj7ue6BdebTtb-e-ffh^A^;)h)m4WtD|hxmZoV<(2o=JGC!> ze21Ae%S=z4)^}@}b0Zg*iA!6x%y!7$a+4>UbKD(& zRjYi)TIIJtJ!YLlGiR!8zhpD;efMoY8auD}?z_p8%gWNz184Z!*-A9lRZyU|+1s#z z4;>jZMh!E2JR?VPUjnzviH<%Vd#vh*&-czdB_%mI)zyzZHe-fz7VW=(bl49o?Itj5 zR&MUvwSxx9p+V}^;q(3d@7&Jehuhs=cwg-Fc(WT3eKW1bcc35QXK(?Ghrsyp zT#t-%@Kj6nF8MnxA{nr#x}w`?oEQS?7=%v?Lln+_;UAdB(#KGE+4&HbhgaMMV`A>FLXttL><2YljWv zFQMbcaUV8sj;6jSHy7J`)m7@}tk3t=SISvbRdwf`YQ}y|jd<^)t5>kLbpmB&`T5^| z+pU}2Z?D(q^Lju1RIS%gXIHgegBweH{k1y7jp*vD)yklZjN^~b%Tp@=@&4BSyQN6J z`)>QMv-b**N1cNd_@&3*R#01b2#C}1lvB99_uezNdyW>-2U7hg2DE9VZG)18Vxu4PsGZ-2`< zc)eH=vL{_uO76Fx)F)fWJ))o`8Q`EVF5C}L;Kz0_GI@R3L!&=7Y zyE)&kxH#oc*RrZroI+c+Sd~C}X9&oS4KgX=tFNRsuNKjxT10zkNp9rAxmrYDYnknk z?bC0+-JIjjxa^1_+ZG#E%K1u0inGr?)Us+rR=>!2lvTNSPY>KeZiyC8<(2=o&QJ>e z{h>282ESG&0S3<%CsPQ}NX~@_xUZMryhPh*}a*`%sM-(b$-uUtXS`e*gVR`jDc74`xrx+_`+AF@@B! zB3EVb=#$5D#~o@PF~5KHYB^-aRc68%3j*t=_HRC>BArH$8hNQj5uL2weLNnyw?1D( z!_J*+)~GCX@A)+xZ5~1O4OsO{{qH3w*Vi9>uv-3-k)if8P@W?72X%x1d%h$88R7A$ zxfF*U+L1os8n+UV>5MXxx@3vjQrVMDro~;TWiA!{@mI8nWLeR8Eh1TV6ugJBnY8R_ z_OE|&IpG=nDx^A1VE%k_3o=3(E>GuETBhlO|1(NXem>)j|0Usx0|aD5)Tnx?R%?eY z80FjgOs0d2hbZ`UvbUFv7zQteR1mO-z}9!YecQE&rf5m3{h=%yx>L)l{$I$THhJYO0JZ22n(%2}qrEC2^dtU-)MRBcv?wuKAz$l1{$Tl;eEJ_qmaTgW0 zC|Sj5UPPY@B%-p&3?wf;#Q%$IGAxP-xQ8Sr5EEZ;7k6=2R1^_mW;B=>(n`iXdVO9@Q$?%BKLTA*l7`V*q@f_>F&GL zmPav&`Y_a5@5|3Hbe0V0G5obr?`Q4>N36>rk*mei>o{^q%4Ut=&)I_vqMZzNj1C{z+{4wtZJo{7sm(&g;lUA$n6jXkqwiMVr5J~?B?HP=*EA9h%J zJ5!3P24sA=qmG(6bL`ma>gS)w^^}GbYfEcX<+sZv?#KJ@7e?)Zf`0w*_f}CcV@97o zUwvh7Zz!2)Kt$n-g3FLJ>V^M1nTZZfpXN01%{Q{ekA5VN)27LzWyr-=(tk3DZf5A> z!!$QubnB6X2=jwMYz{;7;dEk~F1vjCl)V7>ZGP-AIa|aO>EA!Pv(H7z5Q}y7YRnFc zm17v7`gh#QAc8T%d8ErPccvR^b{arZ3VUo6cek$0M@1|-1bTHzlJ1 zKQu6KpyYb#r7HLT#~}Kcq1Jj={t<&{5JSiJcfZrs7`mStfV;Ro3DHFiqT?BU%Fr_2 zw==BRUFp5xMs&#~>GY_UUVT+cW{>H79>agRKV>u*`}WjR{g)(;BS0^E?g{B(#9Yn* zHS^>C45I&H5bepxoL_T2v030rhOV{!JxbRyzv-Pj%lX@5UV805Vg#Ty-@bNdC%TxHqqXnKQ4xdfmEi-Ee*6;<|Vd7x&-MM>o$QiY?xI zPuzdWbk!I{eOm z`&&8E&wnnDFdm7gmo#f*VI8}m4rTZ)U-0}tXAn(b5FNrGx|h+MJU{q>Y=OUDcng@{ z>E<+-T|JDN3l^w+Mlynnn{yjOl>%kFhno8V8u8}%v!6*m?b?AK7Cx3SK=tm3BxcSW z|MoXY|L7yGj!u%(}amNtE-KW&|6P?NDB}>ueVl=k zdOYP6m14?519*3{wDA~&2u32SCbKid;%vttI+KwZuh#T(k1>Z0gkl}bK(7J2#}GDQ z)G+itTU+D)y!gjIBtLxHx0ZYJ?Q_mJG-Jl($yHTwvF_fzc@_BCV*PrNnZ0voYZ1oJ z(ej!1q)Eb~XxXy5y4u>dZ4Ws_=pvPxI#uctUlw^jpFr;Z-Ib!)qJNE#&b!66w1LYl?^MdZ%PcdlnfBUepBru%KYqi8E?qL^ zVEV;L151}mX<^KM`)yTv7=^GKs)9jO$WU9yzr2n?bS}f%Rr?Y{H$Ra=Pyopg5$qpE zIP*I#_2c#bix*3dUw#SB-(!e0cmkmMcSI2S4;kt>2;v@uBjOs)Y<)mK~%?3 zYcnq&#~>Qa(D6ZdYhAse8x44&fj)gCm*K-zZj%`r&sVi^7UiQEL<1Q*Mo8ADt2gvu zG$6k#h{ldp$2)>Sgv}IcebD7w8M+W?Wo1$xdx)=~>P9Wdy1;Cn{{Tb_ZIJqA(EFHrG)1vru2IG)ObBt|P)<_70 zJb180GiP=U*u#k<9J{@3W|RXN);Fj#7yGluxn1VeoHGt3lRI`;9z)?S+9neAMVHJk zmFd|M4NRG`aAB7&wY9>dsH{x9tTyh#!3WE}SX5{Urzo`%aY2PA-1O;nbp^YyYSpY+ z!lP)!h$u;!8?uOJMj`?I78kc`_wBbbbdAgxBxYG$9Iv@zcfsPt$z)++Q&XQl6%}*m zmXyqxA#!{5?{DJchj~2{iB+q@9AAtra=JA&84secuS2loDZFj&FTBv}F*@ zU=Y2)AR533R@xv(TfrbYhCy@zgNQeW)#xNasH@-qUbevBwaGi9(^zJ7gg3qGF10^A z->^Gct@o;2&mg*sq2r2>PvL%t=%kAe9pR&g3{hoX#89c(m&Y=6e4cww)*%0wuAQM9 z4S1n}@#7^IEMOA7#~{LjpBJOJ@fgj}wOFx2)|dz>It_(Gf9feY?mz#jj(-D#2;K{7 zeNbh*Paz+q^SJg+0nY8hrec$y<)sCQ+`RzMD*Gey4Z#~Log>~)?Z2bx?ee8`&|_8A5l09&t?KG$pM`!UKYNhTOveeTpInoA<&|Vo%;eZ(asLZ<#$LTX{x~Q( z%s9c9haJq*1y8n9b5k@;EuB5w`X*0e=D z9NZ`Aeeq3VGXAFPrL`qIm#ltR@xall$?mK>gXkv=9j|%wbTx)0cv>1KQeUVpMAEh>DW=% zB3g9&)_x?d^IOhu7}icM=ke?--p=iEoobIGhaGT;7nZFChB54x*nJp8Cor-drTPBu zI|=Z;*F2y6YSFv5oG-rPtl2-ru*%tsS0A9q|lXTN2O^c246qVn>&b4yEy44F7l zxCUWf@tjpIOPxq0lTmOP63;=R@P9WmxYjE+-nJ{u(06eGGT>mkxM<+t|CW{g`^)1! z_o$8AFo=+R;2nkt+by8B&YkiO2GJ~rFsBL-VQ~Z751nU>giqLJieUQ2y~J5x%~9Wb zPqu*Z&1(N^hE?|K3^57aGyYz7nP21QHs5{smGe9Qe081+7%DaU@)Zo-w%&~!Ebf2ijM^%Uwe;~wW;bLLE#uxV3qF_JckSKx+*HEZOY zurO!EYlz2OMI1QXuWj1w+}XG9q)Eak^rt^bBf0;(3*w=t=t?OUkY&8WaHSOYN@;1h zGMLe$r2%Y~_{A@zTrl-)-mJ=5#<1es-~%596SaM=ls{z0IAn2zQPk^1Th<8a zXYL+!fBma$ZF!`m_cogwUcMQ+aedJ(cqCT)_kBKU3;CD+L$?#%n| zZ)!>;3JUu5!~I%OF=IxbK1jl#>ucyy(?D6-mMvvvSZqfI+2ExVcU4S1hk{pD-j29z znVdR4q;9@hmhGD;&SDU~%^;e?AnL@(T?Hbv)lm$hs~JRJGIaAsc2g`Mz>`_m-q6!E z@Zf{8yk!gMg$$yL8KC-i{1-#F+Zo1<3orCff?VQUP#|aX>tCz0Lg>D48ES3jGate9G#Y5B2F^K0wzMKY;C{b_(NaE{x7(XRG?by^^RIvDY79M!8mO+8 zQrW#(${FFyY)kSo@}dqOVJ|?McxRp|i*ecT`oI61CjPEMP{x2&45Ez;RSNm#N0dKn zLg^a7hBu3fL~ig5v1&3qJDNe%nW5)V!XP?~p>O9^jR`N;5>3KWcj!>Hwb#a>pEA@@ zP!2Af97fDJb(>>cG*DhXXHH4U8*j+`EGL~L?<@R} z#MS86r%x&+!dN}FE=$5&TB_So#%S6{txBSHqn&<$OLot+0qy^eE8(am6bhuAVh#(AEqYS8W=G`e5he@9T^9Mms$Fl zg}tdF_<5TVGts~oU&vlpT_ul$2g~EL&#K%Ia&8=hXgz~yGJ^=a^woZGFJt%XO$?$# z8AR?Gm$6ylkAIZ&$KspuIB~xpu>1MWJJoiVGQ^e;0kzh;)55o`<@^?MM$bMG)GKh|6 z==kCLPgm~)eZ=)kt_{&DbYl5iyEdHqkt0CF&LR@dLt?F~TQ?tc*9w*!HngI#X&M6! zOqwLzik2;_tE;VT+g5I$PNl>>C+@fS`P0kQl3~Ld8w&~=8{c?i=1k#cGjHCE8Ivbh zRqefZ3@!T47 zDUWcAvn0W`{)ZkaYw#tmYnSizF=JE>U|abHhFY6>8A09$GIV?v zEYQ^$y3v4l8o&y;J&w)Y4DUv2j+1*Fqz4|5{b8AJj+?2EmIm;?_QDIQTzC&t=|Pq8 zKJ+X@H)>px<-GQqoWZ6|m6navwf#dQf_-$Kd|YnNROFZ9e&A^X85nrRs``f>WW>NMSGRImu*bUT6TWV8WHCtn9k$h?<%j z8%6$UfyImEF>e2hzZYTHy87xwV#kg|V*Pp~DO$Spyz__<-y;h1YHSo~ydYmeK~d4p zo$J>_ekoy;jmY)5Xp=*uj1=a|4?YyVwjB%*2u%KYa4(zt^ zUQw;%XzdPYT|d)0ZW^elm_NUF?@gOz+&K{kKb#>RS)zzz3 z&6qK6TusdxXM{f!5f|pJyC9#GCqCXy(4X|y5?)OrzTa`j;r{vUZ|BY}EyZpDv^K}w z*MNu^82;~uFm)%B*j1JLS~oNFQv-;n`}^O^QF`~5N9?}0C)XOpAbOHPgd{Hb(DGB- zFnDib5DjAxUCSV9V5kz|g9Y(muo(r(Y}EGQm4DRhsjs847vQ$rR4pK*dQge4Ze^%a zp#1Zn%d@@q0>vDK2Cle5>cNTvh$H~mx#^Xj4qy-=6RHVI z`M1H_(FM1j3=w-pK*t|OQ(e8G$3p{u|GSjaihP3KM|aOL|7Z6iLpRRAfwIP04 zF7ejm-rt#PCRBH02RzF5+%ps2@$Cbn^Zxr|4*1<&#sD?*eEmCzHo+rG&N9BF?)8;o=-k0LV#`9Fldl`&?B>STE zFf4B=grIYt5kmGo{j{v_(#5%5zESZ(CH8?z?7<+qkO8WH$E6G+gvLo9386ZF@r!hN zzLubmi!W9+a0^5Dg$t;)nU~=`=DaI@>sHD6-g`42!Spm5XsHGe%E`X@&VAvorTkmo z?l^|7JwoK$HZeW-UqjYKV=sVCbVF}O1KYOA26p3xdxrF8*m_XCk|9#E3aAX*wUd;% zBuvJ;+Sj`_&q%ao5S_vR)xV>Ac)46R4q+pe{aO3J4Da;r?h&T`oxwxI8sELY)h^q! zCm2LuGE{ER*O_OkHMw2>$xqbzA<@uh47IlP<+B(>`1?=i@a31X{KOOK^x#T4V;mBn z4vmfBFKP)nl1XH04DLdjk)ovm5e{tV(1wQc^2*ARl0}P(iV}&UqCR~@HW8xv^QE-* zSDk3h!Y+;YKu@JQbgIUl_U$`qk}wJh7k;Tpdmlr|M-9lkA^hJB z@#~dHg#SC5kM}_S&H4TJ<(z-|Q+XUZR2~tZU6#cEMGT^`45IfLMB^FZhd!|+_2vwr z$c|(*7nKH_iF|wcUehi{x7&?B<8-z|`5OrYa_+(E0?i}q4qZA{M3N>-AE>*@Vg=QI2a32e%^&)&l+1RVez==A}Nt=yYhGLLzN67 zxEBQ#k0B^ceZ(L-l|ghnLpM4sLs-c>^iW;P{Gi+8%JpXuxvzwJr=8mvI(~x(%bG!h zbS?6OK4y$M&&3R#`<2?d^ z$K8ZE&}k;#^hY0+@>@GrvEn_L5#H=xW$4B~@N;ePBZv63UOiuN9Saz$en0$BQeN6+SJ@p{_p^3}Vh2l5mP2>dUa`R6}n&6X{?7KUy#;JpTh4pn&~-j7Q6 zyX>Ap9mz8MmcsB4Rs&eO5{YoraV8_37G&uahHgY`uGQ5?jSl0G_{Ngx&LA4V0M);v zyBiUV0sf62EN8hwOf-DBIxfBwRC=am_f2W{-!J*%y9T2)G{`gD7oZab6;}@T!%l`Z zzC6P^z)2^mHMv!`$C1Nx2Z>>`oiE}>?#)oSA=%qQ52-almvhEAB$i`|_Shq61=`0G zfAn8`VW%64(STk9lO_o-qGikK>S}A-wv~Z%Q>m#_W!y15F!cRRO^_PczFl0GL}Kz} zkyNU#Zoq)@@_F;h%IrVvK}u!DimwJzDUoG9{NIhHCJ{X%3csWAy_WHjeA&op-Q%_w zpte@(_xkJQ@!*5y@s2y>QT^x=kpTpVRx^mMVuTkfMat>j|I-*mzh;QdNdhYWefE)* zhaZ;5a1#cq(gjzxdk~Fa5IKLWc`uo}2N4nwS+S+OmmrE9?H)rD9?dxA9!_l)UQJHO7} zVCcBxJy2I4HTvewQldBCR3&rwC{SBxUVez7>klI}k~!(x#f1*fGAmIv-jnZVWIvB$ z1`%R0I&)NG%BijFNrzyRg~y57!>ck9W8%HbnXf(0nsd9jQtieeY%cU_M))3e=J)vH zk{*6!p`0-e3A=DA75<`DVWGIRAqEI^zT*rvCK{MBW#PguU21EEM^RbXb=MUZ78Eo! z;l*e1;+RY$$Hc_$p2dqB8pL_uz7-X7=a!Vrm?4r%_3w}5201ouGo8RRAiT|z$?)$Z z;VqO(Av1Dd(>DVd4YWc7*v)_GrLq$i)LwW&WwIATr1ujbdY(aa7(;Cxzw#d$L>Dr2 z*_sbHK+X&yW2_J4_{}&IiI*;wy~L&tiS`VlUob%R?|2V`2uXC(M?#XF^Uh1B=V}S} zpZ!C80mJ)wyL$;?fzIw#=Dj2#a{S?8&y~k*FF=Uu3U+9C#D4F47#E9|uQNdP|JaYA z8wVSh@EfdaXXx?PfIS2HAO?|hxGeu?yMdt_XRp0vP59A+bP_t#A9z5e2Ng!_X$BDz zJEhCfwyi89QBQhp{7Q(*V@duJg9zc8t(wfv5bhc8mg!s&;lQ47D!m&$vu1;^axKZKO_i)C)QXGIYb@ZE8~zzb|bccxO;+yA5ISQ&l%&8oKX1j5bNs; z3loX(7x{33%`x5@m@r}X>|VV-_&|oA8#z+$cg7F)s#WoxU38_FKYhZrKAB7;jy)Fo z|Lt$*&Mhtd=%eULZX}DN2Ex2^QgHJUJgbLYnH)=lY8tjIWpcwEjiN9zW!R4?Z#Pm zqe42DY)b!T=)NJk?}{}cVE^rs^tk?S->8I06YnvypV!e0q5~KzKje68&a+JI=VN)q z^-HeJAq!C=5ru8fQP~FW<9%aThp2&yirKS!_I&b55z}nLhCzcw2Kz(;U)-O58lq@9 zF!Yu!a$W7Bi^|J|C1}VHq3@CslYun{E^ef!P+Xiy6cmJSArh9+WHMh?jw5|b7~xv2 z0jzBN;SaKFzkc%gk6qdH(ox7Ds$dYUVh{~wq_>SzX%VBjWJHLwF?Vj9=9ayz_PBD` z5{+Z_W4Lp0k1KcVv9h;)3!^*NxYWWTbou3~#0wcj4Ggt5^YX7lv-E&=TS51Tu7AG=SCV_uf<44`!%T|I2Wp!wv%H z5#weddg&!O4=cGW-bc@1IM32cs(W0yxLbwF%A~IBNep5A$X1td1sTrJack{rzdf!T zk{HQ#KHWIk)A9F(BsYPkAG!zv0>@sx69#8+xZ7)F3caa${R1JujWSwe>gz3iwP~|+XWzb)CJCdE$bc?3U)wies~k+(Xut~%eEH>$ z9bbOw^KVEC1QqGDqOi%L1)`cJMgz@gVCz=dV8jS{L`K?;8`X|w45G&wL~tweJJ`1> zhgaq445B+2I{YOwPAU7t9+O zkZ)yxn*9-rDR8HA=6Kg#l8$6%&aDj9Xuuy0AfBAXeGS7Z2X)q&p&QMFOVDX1H|ejv zrp_xY;}GQ7$UsRw#?3f{bs5AFv*r_2T)77s*0||sJ$uS>TsNuMU4`Cf5WUMtpKT_k zqZrM(g4}<9>v%6)Cfj3^8&OvV(GiT+am%E&yKy8}k`8t4Ds^+zQL2u-iX#WU?n#EC z6Gsm6=8SPjEbPiG+L&56$3&vIxUtdtgAPXuGittRVEp*X%5L30|Gc82va+;v>{#)) zkW6A%aE=F2Z`H*X2DAI`Pb3<5p;>SERH=f3bZJb?b<(Jhf z5>#9{cjM5Zhf2A6_g3YLR~bewnL$Fxj_1p3jO=HF=Vfn(jvr!t>*|B2`}oKSb~18z zSopiGo0@j+Y-$SMgDF_;o6(}Cfyt9a$hnm(Ws;l|PZVANMEIf1ozMU+^XFN+R+x@c zsk6_P#-QQD%gg7_@7;U-`lwwuBTs&6K=|l1G=v|*O@4%gAJQ&A?*cRHU^IY`DHA5h z@sOlw-8yyrfefOT8ARtY)K<|gf6K7sc1~ik_ug^_H{TrHnRqGLJ@-g%xDSZ-W)Pjn z@Nz6?UW*w-xIVkJdiT8tcSV#dp|ggaeC{rCr%tlY9`<6lJ~28y>@X=T{^l&v7ci`{ zS7$JaI`ezv5lOfI?K`(ORHFeuG+_65SkLfdEO(y9bI4sk`BiIwF7{-Er-e-n-T3eX z(A7tkj^80`bJBhcB6z0wExEe~QQV9}`|Kn2b;1d%-nUOsPLS($xzPNw6UentacYM{1Oyo!Wx91?#uiG(o@d3kLOuc&JPdE^ET zl#2@!nl?VFvv(as|oZy{&BctO4DpJQLyZ7+ZqEIs9654+oq;lD?VZW_)TT+q6Gdz{7Vh@3-s z7qz5!|1GoHWqams96Ihe$sZeuvK`Iu{xD`07Gk7N8AQ)BK+XIJPmul$9Ur@KN7vGs zZts66gQyq7xtEtz7)zXa#`RkP#={d&ROc0JIJxL~41K4M5!WxdHis-kBD$PN9uh8! ziW(Yrngl;EI) z{FlU!5%AviAOE3p_sdo2*9_h2CEUdydPtSWl#K?0(||p0XA^_yBSvtNV5DLOO6u{O zZ&ZpY=duRuRv{!^bdNjepH6BSI{xk2>1yIZx9?mH$}02%g9tlT()ERPq0>%Fr$@Df z@Hm!yct01J1T4oatG=~oKV;~7tyv>$)~?mHXc_(8cXfP%avgHF3LU%4zg=Me{pB$( z|DSV?loa7mkl6Oz)D-@<=ccA; zEb`$3n`3@!VCvM-qqlBt*KX#_@#CwiuDgz?U>ES?b>W3FHk&jN<&LJXsCD6mg@s~n z>(*iZH{Epg)$7)U@1~JEx;8WMLIXQ@ioeA0?@ReS2>*A~3!NGsMg!StVChoX9~nzm zuU7dXsR=$Vu(eig7nL#=A+KZ*p`0$CbT1}4|NL}%u9dJ=chxF&Wu8;)|u6*5cjg45E7&-pvAw+m|qOeE;wVS%YLlx^{+cG~lNO_T5+Ij=zg~ zhFa@?xh+FCj(H!{X(l)6+qTJhS({=o&#>ak)iEH2dMqwhDe)@XjYESNL|qvE&8C4t z^e96&4qS0`^Bd1DlcO44KIP?-jmjn{)Yj$ItI)iAH5gx&kY8ivb zE90Si967}4w100{5`}w~GX|lkBuNk{O`4kQe&XR?W;1&JXh19?Boeb`jT={8Jz_+0 zal3Zkek&KU5{W5Oq#ok_0@d29DgPeD{Ojt3L2T73=%=-u^z9Gc^RQhxyuZs4pl@hu zj0RjaApe5H{~HyaLy3g(9CE!_rZUeofE|HDhRBKA;{hDTuwrE)##K}m^(KSpUWQJ} z|Nd`TgO5R7ySUTs9z+*1gt=b8zxg4!`RxqdI54tUJ05i{qd~|0a>W&@Ja;mP+;@Vj zy_zpyz#!U(p|-EBm6SW~P-{%tXdrkEAhw(}@)r!N9Q2v{bIurtg1#Qn7;p2go$l#y zPfC^E*2|Ln?}fGbz{@d%;>e|IBxj66GP#I-cSHJggD53;0oh}N7|)DhG(a?S=7b4VRYx2#bEYr~J^QR! z))lD{q;7ilG&7hv8zbtXL+L{Bk@5S(0X7nSl7vOVxScK(cL&?Jr{$Q%#0YG2Jr4&CGgDIRAKeZy!SH>cKTGi2PIf&#V0 z#~(`yJkizqOv^94AbWzpHU2q_O!>CFpL=+@VZ$V+s5?gBebm}~i{IPjjF#&|*K&VG zbH>ByhLFR&a>h6$tn0}nvbkY;!5_tvd{Yy$Tm?VA88JUJFmvWrSAFoofd`5ZY1P#W z7fR#kOE1aUBWqxO=pwsWikGodPnBL0ufGm`PMan|&h58fcDzk*qk)!bK!r-D2RsyzQ^uK_@g#TFORiJlacRvnEaMP7K`cpj zKeHBncc;eh+#X);GzO9T-)HtS#k3?09yg_naTlYP^S`#Y6xetNolI5&}XRKV+S zwfN=$e>sZy-(4Q7UAAXWFo>LgpW3#S{9$~_b~L~G+r!B{#31^Xk^Q*C8J6)bo#Tfe z%CgtS!}L)+DUG;($+bCSA!=+Co6^F!5Q%NziG*<<^5hOROuo~=oH-LFY}!;@EZl=? zY9>u0DlBYhK%ARVqhv$G@%XNrIcb#!3JYcPQKJe93JVJg-g^)F7CWm~uWr+(RqRY- zqk$G{KzyHvZy^#X`=anW+G4ethDHOSYhdFsgbT-p&2|!kwgacmLGrd_#GqD;sSiv6$#l+XM9Ii zPV6z@lm=NA?J?_MIYh$6ECrG<=hhv;rfN~ zYp>4Sy__?~A);imu`zt(P%>$ZL+-bnscnr0M9j15>fyud>%|NFJMW03LaEgB>5_*% zEo~i{+;bRSqn^*fagAE#qB&`e`Zu z+O?PmuG6IqQ2je1zC|@d9S4ibmt3OOM5FxcUrRY4ClTC*;6CJ)oCh$7&SmJh8n+>x zW(+-A8W3-P)|P_cWy|e&UBT-!H%7D@huSlOpB;XOgC9A_5fQ)dnP=2dgNiHXZX7!D zNGVtNn;4}W_Be7cGl)K9s9J1&`4k4xo(#1={yrXiOs(;@4E`982!Dse7~YQN#LYdf z+}UT#J}|&IaR`HkBvc(bV00L`-0yR=ZvKePe(u*H`f=ni)0{B~H8!SFMMa1Uf$0T* zY-$qwtr3tj`0>q%?izSwX)_A|g)_ zm6nDoT;31fr;kX?l1M!8z>FCprr%?a&7OVr)f+eV@1OUoF$%~^1LChcl?p$Wq3~dD zY6|~1H7jMB&PD^FYGBSBIlMg?5rTw|XM`$b+TciX&780&)$A}nsRm(E@luF zG1OY`%GmjO2Sdjf#vyyydtDEI>4@h8xvbG{Vd#<=SnXPSb~!^AXJ_kH$?u>4Y%O2Y z-e|yo4Mb^MfSj!{4*7r8<2Qmmj-cPae>xqx8;9__t?L~(x;?HOlHK?{lh+tTA2HO? z@V*h1_rM?iP?ZpyoK$+IW%syk@bt2bHkpp&-mk7s)<62F+Rj}*wRPrYd>7z5A)S-h zL@jXQiSihg{}J)Pk_SnszGPVROwZ0@5IHC7`{E19_sJ(SDiYGB&5E3e$Vxl^Z^Glf^sym{izZEAY?WjULuJz(RhV?U&p zpLD~9H8vI$G&a8R2CmCdiY_r)ieeXJc`u%u*&Wp9tbLKd4_}~r@!OgeYfN<{Iw&q}ky1(xsL|E(jXV$|$9+KQ78JTfy zNv|&$L{BkvJ)#m)4&Nts&$3`c$l>qU{(G;}VA%AWF%C`Hh5r4a_>VshOR>@{WsE~% z=|Ae@E?P8t^lPsb70sG8VM0yK*s%o#MMXPzu3s;`fv&z<%8y+cQJ;;GPijE8(2BqO ztFKNZcI-$b*00C)UApwV^F&TMqbZ|-<}?ugrh*+icJAD7zph=kZEH?eQ*Sh2G|-#| zkUjRIi)2e=A+@|5Ze~O$wA^D1op;Cn`^$Os>C@cI<6ZyJM^b)!%=pU~{?BeRqq&&w zmtXF`BrO?X%ow#5LMCowsI{4wf6O52%24^NeSh0h>;-@^55^(2ttlG~L_q`go#yQr z;mP(5LpT1Od+KToJ(o3LHxAV?f}gW2%aL=$h)6m zlTcV|9CnYPbqu1_jNN6;?EFXu(SZz=2aJ(e{8#J!D&K#<-v&LZC2oZXXiz(uh+E~Y-WG=Mmv z)~v#E8QP0s$#Ku86W_#M0E;TlzWOS?oGT@}1;Twr+Pir_%Fwwl!%Y|~@!pNwGER02 zkyk7K82^V1l+@#kFG>n_6{+=pm5~s5#R_$VpkmBH&vLCxm7;rhNwL2hsxAF3+hfYD zU=V%G$bNJrq*9+zlJmFU%A-AOMD`>5%OOXNLp3%2s;xQhg@t?W`PElFdv@*GTuW1* zn;MulZQ{h5n!bHS(x9rU2OqSO1_?)#UcKTvYv~^M<(F}lKODLH^%MTdsno*{%NTUa zmQ9~NVZz3ZWo6;WV@8dN2BuHH;);zM5v(_CBXMFz0uFWM3oqoKdKg1w{J5f4kY(BgA;&ggYCA-@YKD^!UpVrGa zfI)N;L)ZW2n{_pYZZr@b4cLuCVY>{~FmxJEPn>OvU4-(LbbTp~ds#QX^MB=Qoq99}DGOS%Ij6$i@Ip;`E z(Y0$c=apSgX`BjrmqvCnr}q{!IOm*XGL>pz?%RXBhcB@o65#sW zafiws#v#9hyd&9=d(xguFO~8k$hs=6*X7QgCC3pXRLCZeP<+c`?+cJnw zW%xfU_qcLF8;3BSh~+Qw8G{I$Qb5o2h-6NOGIU(*#u;5pf9Uq{4`vYIJHnrFEw1iy z<-#%!;k(4Xp5iXAHLvE*@V@WvO?KaX&GCt9eMF5znX5~F3CP@NUxv_e))!*oVAkjZ9KBYLo~?Nfguqj~{bu z1;x{yzG@e6YUk5XOK4{?GcjYV*JlvY|Xogh|>ufDU zH#$N_=<0Kg4&#s&@p7HGrT|y{$AfIxI-*QO)NO&aPWh4-m>Rtw@*&jPF zhXVu zw~jk@$oVW^uFfl{kaF(Ep~DW7as?G3$sR)P0R|D0$*6j2ZP|U%ADg1rtZ6M@Z`+GR zd9nPRm)Z2Ps>!QsVSKZf1%Hx+2t?S8*iL2p{i=wFqtoC$*IjqjRrBZf?u{3d@Mo7wB@&H|J9a?6!oq@rrY3mh zEnXbHgxN^Yr3>z-cJ03SqNe8MmqmV}s;c9U&xWh%8)XfMI~p%g;mIkz0FAd$cvrxT zoPQd)EdKwJ` ztpU4n2$`)BwlZjmsu{Xbu@gJ2%=0?A4Ba0MAbgiStepEhfz6`_Ye@Vi?IKJcas85ObI?L0;xxVUPS|>v$wk6n z`3qYQaUXx$v}>-Zsyg^!B#CKi5-Ykgm}Dw-$RY8b->a_*2bE;3nFilOTo+_`4eM?1Lu9vhF4IV6>BZ8=53n}r{=ds{ziWjr~!GWa=?;cYZvG$1wb#1r!P*=Nv58wSyt3{ZnV zy089V)u>&&;3W%l#M^FDM<320I)I_pdS8b1#hEkWc-l2n7jIXMiK3zDcBoZQNkhr2zNCS|~{I+hDAKjxz*VT3C zP+B@<$i#_r=Jf3O!VB4OjZ)vqljqFo)$55T#QZjF7&s8~l``r-%Azy}XIbR^CyaTi z)I0Cs{+v2>%$U`y_uSLDkD*3g19H<<*lwov^?U5m)YRB0Vq+Q@4Hyjsqk;N*InE=G zsN)^SP^rO{5g*KbM8Av>?xTiRi}-(Aw?c*@2GKyW!aXxK0* z7v4WqDYGrxPV5e6*JIw7U(x&k)h~1X{wwz0F|^A|$3tZw;fZF%G5cB@!iZad3gW zxD~RQRJ(RnRo%K(RrT+m4HwhbKMf$ki-_S>T|IK-&Yj}!kqLwniAj^>$bS9k`8O}g zSu8$@<>&eHWdfnTeap)$D@#fiEt;|m!pFvM3Buwp<~MX`Lj&epR3s7>i5PTJA5ty^ z2MtTgOve>FwuJ}Vq)BbtwrSJ0?V2^Xf93qd91WtZfg5fZKYqi8E?uOI$m|`C#EHb( zwO2(fhGaOJFryj`grNcZN9Pbm7_!JQu^Y3Ap_9WNZ${TLH|PxwavpcxrOxM4hWPar zP;0#_BVOCx3?1LgE|WE0Ndgb~p+nUX7cf+6_T?)XIzBL_u3M*TVdzE!(bs@ImTyl+ zc#^-u(2al8QMwvK&m|4ud2h|h-DqgF^ZKkGL&p^fhc|4{wa6`ccyZ+(XAtdRs9OEr z_axnq^){C&ty=;@rhTJmZn_c(GZSITkX{~XFWZz1aj5W$$jHVDaF^2sDDrIvK&EL;tU zkX-B6pK?lZ@%HW2)hk!Z&-lCVmQwj`(e`id@+U%OD@-O2JFKFjva+;v>{z+r`{kEe zj9f<7?b?JI*Bk-6O?>?L%F1rtKK~rL5oy7aN$iAs?z!EX#_CkOJ|z-eyW(D+HA@&d zUwY}r8-?+~JcFWoF-6*jrl#YLi-vq}y%h~Pj1)!#`KW={Usq?{hoMq~FT+UWJaXH% z&h%WT-hR8BAwJG650{|~|L1=jLu?TdP{-@rS5mx6Sa`)1k{=dptX-H-Gt}`jFPAci zu#?xB(}D%gbVD^7h?55Fi%BJn@aABQL*eN@IwRZDA$YaxzO{2af}!h$^bt{8wAaa- zE!}P$I+j7yk&!KbegAJ5MDD-$UWb$$G)PKhg|Wr^&ixF%ye+LklD9J$x?c8>ZMv4> z(CzY_${^a4;h$94JO+<;=aKvhDR;mDay zbIznmB45yHr-{5fJ$stGAv(QIo;-VY&z>t+R#b?*N++I}NC*vzu#W;8H_BuD{+EkG zM;Q&afAleu$Mb7dy~JMGP}Ik6WYW*5Z1 zgB;;h5dS=^3Dq%lqvxCF5cIHqy*xwCDA0*6V_0Rs&X5848HR3@%P-f}w2Y3p{uf@T zw)e|p=+_MKo-Uw{3cVxmf?99NMgwuufc?22ws8nM!JV~u_~DWs-;I>c^D@+Q4MfK{ zbR;8PI;-^Z%hq{5oW1y>oTU{WA7RiChShH^xQCbX+BjtQ7=rQIJtt<%wQw?n=z9#c zUtOJ~$Qz7<>d+&ChbsVXQL^5gLiW&4w#3s8$!dQrc*87b&mY09@QTz5YXO16V zRdwBU$)s=+LDHZRBZ8L4+wo-P-BfDoR2e63zyM(xDl3EEtGA=&HaBToD=!z8qNPjg z>S}A-wv`!Ig?@$IjR=10anpo&`Uv?)j1VqGiNxyF_6l-eob<1}&u45u`?6F}> zA}yoFLKOCOFyrU520r{y&K~i~EM0_^ncR}V?M&`RaBGpk%)8=nDqXpBe7GTT@%iAVOR|=e~dVgQVwf9AxKt`%7K$ z$P+`&UI2e}+&p)?g(&RUaw{1`TN&yMuo8Fn*=mg`=Yj@`isUTpxe&r~A3B<$(`~+4 zh~OrL*s7LZ+}&-hcG;e}TZrJcTvnFtII{nbex&kow?wF|n=iY^l*4Xvx%SpPx3F65 z*da%L_+eE7_xY))TBX8P4)G)wK5oaA|Vp% zh=p=InBt}bEW#{aEK=qq61{s1_n@+}>#j3NLcG0}Q>H9j*riKtE%cj6G&MCgiY-*) z{#m-z+tGsN*1o+MQT#oKn2M>?+O<}aqM&8T&+(>C9X)#MR*@`9VBkP`4D0_?s-Z!6 zgunDsSQ40VjRuScu-I+?@NCZrPeX8Ba+ct$ubk=mLPfUOPd~+su~qXz2B`iW?`05u z&QQmJOV@w=hg#!a7VkO&h$AOU;(sJL@+t!~IA6ff8P#fQWxG4>KznmE8i>CJ>;|EO z8R5+g3u*50n*2^45#Idsd*s1`<^1uxL4@RXs~Ev)rz?ZVJ+AKa&j%+_lt!}0l{<@} zbG1#AeZQ0b>myJ00=&;4!ZB@>?+V$v5%ugTSsixRcP#(!#65i{fylq=`^@@<8FG}H6S)ffBP+B%3*h&yP};1w1M&N-$>_w}_z|(~4iAYmwV@?9yDkSe<83apjN< z%H5NvwQ=R}euLe=VvC&s(Jc&hw%M1*Fm!zW`d3-AZJVxzp&JdvPXlkfp~_ssAnMFe zYlADh8;4FiO-i!I9>GauM)F?+C!VN|@hXF;mZ8@AS4NyK=Mg^mK+@N)b*|5KD!fAA zJw&u0gUCJpo_Bh2_ZrI9AcQz!mb~j3R+2-jCbP4_3?djI)45=?*8TUV)1zL3(XhTA zk|G}U2@FvEJHlJXc?5WwX1neIK5g1y9BhtqPlkoo%^&gmi)3ETJ+L{OcLdsYwJz zdf^3W3_AK~4~GhY)z+osnil4z zHinKr5^ElHl&(cOeax8jGSPAd(R&QFHuEw*z6UXMd=@Ow)fl?bKzub&T`gt*XxCQ$ zbPQpn(}FDF@7+1s9Fj&D527HiiT`7rbdoxTSBtGG-{#8jgmG?XPx9y7E?22YHe`?Z z5RH&>C!Z`ej|ds9y$<#ea$b1}K@#^6YY0&ow@ujFx6AoG{WRu@qx*c(D*GdhhVVE{ z=ZNseb|Z9pyXH#v5OUbeP|s+tfAjS}WavEcwrr6c?0I>QD&zJdv`t~g^udFO7S+q!ayAfg6 zLQ6Dd+61WqaeamkZD^3!Yu>!Z#`^j;ZF=>>^^~$$yLp0?E&H($L;S)E3k${lxo#c) z{%*QS7-Y>Z!R&N=)>+y0w|ejB`_Ow{>;*`rR;;kNnlqyTqk(WVfOi=yw+rNOj@yk| z|BmkADE)SiM>v?a$MoJctnX$32sLa~?!JddPX$7kw8nyuaVvJ%*r9yN8AM zk{FIg17T^vzQ`1|aR{Cw?u)XQT^5$c%(z}^06Y1QKVIef3`3>*SBA&3dx$TSTUlNK zc#2rp1EIq#ia%#C8h*o2$G|2h7>U$+UAaRCSz|XIxIc$<{Pc7z{yVp@hh%eZ7gefV z{-BIQ+ZjYpF?9OLG^8BDUD`L-1{*>S`pv<$+7Z_;xi;r5M5$C^p>!z`cPPGQb$6@Z z^e$ay%osnus!Aj;F>uy^SRqLyX3Y|=3L{1o7q@Ho?YHu)TP6(>z3_B!<`8A7yaSgn zFDPhiEGRhqa2cm;>{yvJDBt6=MET0O%l4b!+nZNyWD;9+A zzq&eMpkj4y7k&2|qcAh%uK;w)R1Z%ayywnKLI$ zsH!^Rh?z5mQRvxcQz`MVSh7UU7}@CJI{)|I7mwyt>YQ^XO%h3iPCM#tW-%$-|Wdg6(~d64M5^JM#t8+HBSK|kmq{C$eQ+v@7&%V*3G zf4>6;#6$jYq)aC9!W+)`)~FwSR8cW+UTG=ZFs&MMW;9?l5VQskI!GN6AKV`?)LQ?` z{TRA&-rMD}Xkga>-d7RVgQz`2m|_I%J-nv;ok8SmRK$n$&wrjiF5H1Hy)>Op^aln} zBSWptygZ6Q)P|w**}7Fy{`pU}#*~c)a!&(xgAkI2h^<(bc{cc&W5IVFLmeMs1}?co ztuf^+HSox$zdqTzy#QGbi07h`2wbH{-Y8Mtv4~ z`NaHAJykr_5{cJe$KUg`X(9&Qe*5YB6s`q8Yce#h5<3DOtdJQ(M z?7u(gNOE;M1Jvw~g$yDXhnzVsS|sT^cRJS_s?k6$X#mMBtoStWmKewgZ>}i@(H#t( z9HV#nGzzqDFOTN`cxa%oP|Atj`x!CT0AJZ!#juFXHH_=Xb*FRt7J z3@L^Ee?-bSLX-uSW^bDZ7CYh9|Vl_UNu3tlxV7UV7iS^52EB7r;efd1M?CT6p9U7hMEc zb;J?Vr%#x$absCofP;oQ)SNjJCT!YNTr50;YHB7;A}TCwXjrpG3WbkV>_iGx)C>m4 zkM!cji9}IRBGJ2dMTIa1U3Z-f7q??a224$t9Mr&+DGL{N=~7#Z`$KpVHa3bdlfqMO z>C$*l89(BqMimqk78Vq|_a6SI9gSTyk z2``Zl#vucv0i%IvXkg$#RgQNVDmA#WF%D&;YkPRPBN#+ME%v&HfI9L>IlIFSlgBY* z)Y-xV=~ISUn|b*s45F?Km5)foDFEY;ESdj}269^iNZJM?ku_WVy;ziR&R`s>W2iE~ zsEkmQYP~5(Qv;`-D&?{^@gbAD*U4R)n?I7jv}35P5ysYhx2T$tWxH|cGzL)-!?~9i z)DIX$NOtJVv$;q~C!Hkw?Y%ep!*l)-2B?`IJ2Hq)VCeYRjVZd8@u1u1gZIzw4F6~0 z9#YQk9p)?%l22hBg$U0ncjKfpHzz8*gWQeN|N56x-&~^QjX|icu4BhU;@M~A#S7p4 zRO}sZY_z+><)&}tEPSU@)2GXM>SCP7MGLRKDoj|(bNhf(|~Bm5a7yy+r_PM-2|S<|ka zu7#mTNdxfsvSeD$u=2ZDHU6Gm&Crd3MeaC9*wD?*3;N@aOD@(XWaLY6H->mIw&d|3 zL&vYVaO!psk|!8MUWGEmqQA4T?6c3L~UR=3Zv&N6#uwl?38CUA*r-eO;Ncd@rV`*tvn)YVgty}q_nixI0uC7Ce z($XPACQcMdWnOr}8~%n%zH2}vfhj9{{P7MQYHL6Le9$0yzl|Fw_436R@zzhDKB-hP znMgeFz>FE=$5&TB_L#6BuUprgzj>TzE#AQpuP4lTi0AJsul(jWH{aZ~E8c>`l*f#1 zG?055c;)! z4q=2p_n8bL#GXu-sB>poHf}`edWl-8YgZ}J@ZqXt3mGcazcMTsLm0Yo7A(-!7`o5^ z+z;(*oUn}ettWR25#BTQ+ACcS@trJSzYo23UxRy^98dipF~b@g)tcNW+hgXr>%+TQ zuVxS-R<<)|of{GE4|~14<;i&zH|mcWx)#_`D|3eETIB*gZ;V5@STck9{r96B)=}Q- zM;$e7+BMfyRULeASaM`L?(EqUC$3$)@4hl4{k(Z%39_jPe(~@F%yyKp`U|Hgai!+Z zmq~;A_AM{3tSl*6v`82m#Z1GJ%#54c8W=Td;lja#>+9wHHg8^IV|{&_HezdqydUN4 zlc7^>Rh6u%uGY0M^xZXp zq(jz+Op^wwK)_6YCbk1h;XqXCaKaL1uP-1X_6$zFhF z1zEpdHo>-Ut3y;`%pswKyV3b~yOJmfz*r>@ntoG7iDreLF+F9tfLp`swL4haWD>NKhoUlM8s4aHtJ~$o(A` z?rG`LTb-jyN^kU5CgeeH%QpTAadu2*3BOa7)0*IGPt!j&oAyR z^3FJvOp0VM_ueZnT-b}Ni9}&xV`DP;pZ^(`8)?y^(W75`t*B_$tO*lpYQ~OjXlQIK zDiSZU;xT^p)p8yM1#y{=DyNtQ(emX51&xgb1&1Fl<9v-BE0YEx=&jnzl#K@b)c`y` za6gLW#ANcQqvWV@_k$KMjPm)BNbJ~=NUUFv=gZQi!s{k}&lCBnHFBi9KGuhqzjukA zyVw-b)MVd{s_$WH{L=v9H;ot}$G~ysOj({W!@sc&=jdnv3p18PSj@L5!JfH)I2+?~ z>#hdg7h(LhdIuF(?h6Ld5{5OtdiDvU`F3i*=E^XJ{gR<;ZFYm}G-K%br~&(X+PRGA z=wdoU7w<{Lkru%Fj4YY|!`49i_EG|SaycZYYhd^<=fMo&CnBI5@5UQ-HHPk_0lPs6 zae>PiPJO(g;l6SAa#!QZ*$n}RgS(lLy=*XiAiiEYN5m(5^wD&>uC%;jdkb;|=z2$k z4v(_WKZiVsv3C{&RR50d35bq8R*sAWc96p!Q|=`O(N+f9Wqv%CL9{Wew|Gw~GNTr4kpEOA%5IXI&Yp$6;zef)fR6nX$EZ^lSFBjnqUw^%#V(#41(i2XQ z;TsXYY~#jw>!(vEJYTA-yLPRvUbSk*jB(>?YR)(#KJyY!#;6$m-+OP;q{_;&vQ?|% zqrZHXw4y@Je$E_uv^-1lSu43ScO)0;+ZS_^&pV>q8K4Gt#0TQ34BfboJff>HbTGwu=uCrh5ODqM3k;q^Yn`uMC}=B`|aB$g=@)~jvDF@>azGr^;Lsd?%L&&)&)p_CxIsVsQt8(O48HNqJ z@z7mA-f7`Q2GNHMl`l5`s%B!lLFiu$wSVSicQ0IcE9Ora{=72?S+|bZKmCt?Smm(J z#KZA`1Ga5z-+rHc&O9?LDb#VNO`ABerlxOSkuRvK>cI!Cd_ls1)m*kPm0Q%xGPFl3 zHFc^C5jS8!dHLMAclY^hS3V>e7oe=nyo^Ncsu_8j(||NDi+j1Wbm`K%y4u>dZTs~T zy~MpPJ#w%^ra4|wt?$=Q1Vu}w9)4JcpIf$U`t%7CHf}5{i<-p3h*e#Uk70Qo!j>_W z`rF^amcfjli3SjU4*56mQI!cV(jz$L29~q!#e-yvh;%>i!q2qVwowCLXyQgbu z=s{`#i#67mxKAvKKWFs}9q;fxuyvAoOGh3z`{vcL3~xuvhTBaHqPG|-C;Z+mTqtYc zxuUi+Wq&mQy-%E|j)UjE^P;WVI{Py6X8k8a$FH(d)|jyUIt{tg?M8s0j6)AIM8X9D zRmv`1Bn5e65K7K!=k8TvwQKGS?;q}-Y4#9n&GC(Qy?ws$7DC89zvhSgVHra=3OvdB z_m?gD^if-SZ5(pXFO)waI#F=tL$*>%^+ zIB`36$a?d?(LlU4FlEZZg87i%Ubij^u8ZPJ_|i+GqGuULE*Gx5mm00Be0o=U3tw^scpxU;pq*J=afPHW zS|pFjynTmr)=ylhKmDnc6fr?9xu-I$a?od^7`jnm8Orr-mb&?SMYp>Vjbsq*!SHGv zJs&km2)@`iF!cReTXQ;t2r-1x`{Uc|mRr*4rW6eg?6HR`#}0-{^}g&rPTRKLj~Hc+ z^X942{ft4>ouSqSUq(zRSc2gOn=T35WbN}wZ)ZyWXyBS_BwxGR&`gFuqdIY|WDvn! zIlWCyjV%A^Pw8}1YMln`7NV0GMC}-@IT9m9yZhx?=D8qTbxdy*i8RruvERqnViyxKu`ID@E^p^k?8!){Si zTjp9hZxts@oQKRbXQ>prT z;m0c^LDHc3Zqbrk23~tDl@d#B#~&{i%S%f~j!cgy=(m;)f1`nLH86Q{Wo55k>(z5sB8}jhHF%x{oup{??1>ZCuHAQE`HG9= zF|D1C*X`eaTf~v;-8=5r*=xN-kKfGi8AR?|7roQPVg?Zw-WM>u;}1?(GEh>F zh)cL`om%5d`TdQ5{(W@!0{Ajz@0i+uV{q?yH-#fZ^Z5c$TFx-24QHyt6XI>>GDm~bka<9B1$KSF=l_R&yxF4|D%bKnG zw}90y+cSho_==%&!{(0(6Vw{7-Gz4#K-Z)`GRn@RzGHKAtm2!6v{JrU=|X8vXrqXBmfR8-8HS624;;~hHG)_(Tcz=87b1#zps_`;+jiou$KWs)rtu^&L7mw=>jeXaKvU4?Ga^V1c!Q0c!BaOBuS|yZB)K_rHUeEEh*a z&~hyFT5}94t{k2-H!z6sfo@5X-5GXYy2r0supqlpOmBZRU^l$%WcWL(;Ev~_^GH}Q za<0uiDw0GXo~$*)%Nay_GAw%7XOkGsc?)2@!5%LtZ25C*e7tv9-y`tm_M{R3 zLee#0pFi{^*M`ztds)J7Jz@|#^R~Z>1Zy0+?>=X_a-W*_#-ZBUojbq%cF7WXslWOv z{7Wu8cP_aEVcxQpXWF!DuBoaz_+TXI5Pk!R#AA;MzNyq9hh)n?-2V0T!vBG2{(PB0 zsBho$^2*ARl0}PTeoTa{2vt<+M!YC91Ds-{LRTBK6H{h6Z3PMn-N+1}x6J!?5T< zoguh578#w#z3nzh$0DV3D?@Fq2B24~AB@6f42$m98SX#l&`+6<`fG;R;3hY^rE^-p zUY23hPOmkksA#}=3q|EhNICGlsI7%u`!I-Li~&9DBaDdWGl-mbg(LhkLSA+59JbuK zHU7_kF6VR3IqJNy83pf|YQ5Lxs~AN67%F$H&tP*RLO7}IOgS?R;P1=oeKx}?`*rpz zgXm+1ew1wtBKPkceSfv4CxZx~!qj?M&iBnu%a%z!;O~#9D}(3=hO^eZq`HTcvqnOQ z!8aHdJ=3#Z459%H9hW>zGW36{h@nBKaP7}d_Gd4^lqm}q^zZ-m*Wza>k?>~cg6@`U zIlW!G`ue7(`g*utx4h@{=~rB_abw4hVllL;YWnnof~KZKLgWq-Gqk@fw48G^TFTdl z<;z7*q=JIO50~Mx#*V$}s`>MK_x|$BXh>mTrqrJi)n!!+O zgDWExQ4fYXE{s7YoSdo|Z^}WvGX|j<~al{eEzvSvwIL-!ys~gj-!9@N92RR<^$*F4MLqE z-$(oQ!AqJ;BVuz9JhQC1VeuVdMXeft&iXTm{)eF(1L2Vox=Gj0&@HtNEn8LtuNUXmRaKJy_S??&`9j^gRnGL~m(>{u6;ck@ zy`G^;VU>gR5)x@u1Xiz>$2|Oh#Pv(AjiH6epDQI+3mY5nxWgarnQ#^Bd*jDT*CERv zSmh+Ptc&$q5jUy2dgRDta*sV48`rE6YoCb(0=C-U@>M?3F2DbNA|c)@hYz1LNhA$A z?X+vInLocrk39bCjrIjI(#2c@<>hnc^z8Zi>lGDq=a!b9aDw>zBNEAq1cC{?+Uxz9 z2l%rWK+Zz`FP^RPS=qL2n>KCRu33X;sdS%`c9z|HsOLy*B)@#^!Ex30L6wC(MA&W` z)Tm}0zchg43)qf3ouL~I7D@z@*00s-I2d|18W=iM_Qv)zD{%nyn^A)7djW%}6GI&tZVyq3;jPMN%IO-g z$8&MF+@$x;rsO`3U9N1#ieKN~@5-Mg@bSm;NCeAl*gFm&k9zz&gXq5)YAwn~93juJ zLpNV7fzU^5k3~hY$6x;{k9+S84qr2fu=7BEub|fZBixez%&_jy^pQUORF;49n{>J< zd8+}uzrFRA$~P!CqUJ0_CXSqXWr8f*$MOwf9lv9d}w{NemUb#|iIV8dsjQ#gl z+sCW?%{M~cRBGx}87FSQfb#OWbIZ!GwJ2V*G13|h#8(4i@hX)Pe}AQ=OP3~-g@x_f z_3tm{BmO?c|3vZ47Al^aiA2|~cz({BC5-GZy>#P^sD2D;DOcE7hE9g zqY^ZI%a*#jjvY5_z*aGx^oAZc4d6rmHw+?d#dY3t)vleK-|e@{Ba%)bj!WETA9Z<8 zKV3@rzytDVZGDD857|yPF~XY<7UmF-C|wd{r=2n-ogPSOe#x_^`o9+-kf~%c2;SXA zjAV%e8AL%X-eBBpk8nqG=7U8`xIs9#GSsMOz`n6CDEA>eJDoKFqe1hVcbxmjor>@n z*Iuj6cwsxf?FA4u&F(~F6&~Ru8zpqRqW<~6tT)a4uC@M-MdiSoVm@}uW?7Hh@ zoH%6Di`le{xJCmxrh$nQXU*!|`I~R>_u15xOg1$Q7$CiDu-h-bla^1SBaajjZG4n;huXh~DI)>C)w z7!Y{$QF-jpK_1Qj=^B_kS(fb^i4jBYPmJ_lew45%U(V2t08d%{mDlw&^lUU>-#Cch za2Qpx;qKNK-ze%LKRiYdL)(ohLw5sIfib!2=0#$BZQ_gyK;3JOQ-L< zuPp!l@A6n#DUVjjIPv~iS4V^oDzA1!rpwXtk{a5@dC?F_$!5=PIcL+-I}Ko=%;Jaz zj&2N#9rL5T4ZQfGJTlZe`m(p-?V~mK@Y3DByn^zjz zrS+8^Q>Th`63#a^mL_tmIxF74mtT?*(f=4ZkBx@rxYQ_=eH!8@)OqAPlYlzG{nkax zIi$0Obze5W1>b*l*kRv4O5E2PIpn_k0vTi&5vh|o@O-R~H5~3QjEEjI3T2gqu_n^l z+&}wSsFLxWKV^#aPxou{Kd03g5nX6R6zP?I`x_BGZA8@HD3HDm#$R)doYAngf#q-< zSpxbC;JN1l+lf|4xxX6mZ&jB6eG_O;M~`*#Q|q5|Eu9}7Z706Vt3$-!%h5(e2O0VE zBlSu{%I!2FdfBM!t@Sn{8fO%$K7^3_FPVw+md=J(=)X9czu<9`l$6R!$@K>SZ(b_= zNB-~m@Yfyv8krmSsH!S8)#qz${NWFCbIZ%U-uv$3xJSIaAo@0;#qbjNc=59@wlNnV zybYo@ml2pe`QCd+j;ybj|NE7djg9s7-MS4KqMr@Y9er|jS?9iIZtOq1Js!(iu;6

_;Av^MCuBq+`bhFCXu@+V3~ske=$sO)WQce9egH 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 z z+uAuv*;4ruoV`Eo+dut;9x@y1R$F0v_;5dZ&ZT6Te~uAd9EJ45O8>232sIy47?~J% z*3mh0z>Z6hF&paCss1yyX(6-j+8(`>Q_kjD%q1Hy3;Z$XXll}bf0z&S)?3l%sZ-(n zIq<+-476_<0bCE9g2u?;Wyj5a;(037QS$0Eah)=n!Su@`^O}}kw*Bg))42!N4|9Z_ zbdud(UVlCA7fBt=u}devbmr6Mdqn=4c8+xHi0i~wR{3JB=3r28Rg|=)@YuaoxFt#8J4m^3qEvci6#q%j30=15I?y*|O&3 zlWj>(rd$pLt+bL^`v(rh_dKc7(nHgz_3Z6;1dIg;Eju9%F1ZATn!c9U{hxovC)-Q5 zQeS#Xd>8rK$~?r(H|MIKoPol38CQDq>j9TfKSd4O&dT&U5zgcb*D6+i-t}d9^7q_#?L?3L*;1ohSd3>2dNH0I5yckWj|Nb^< z_$!;MBl4wg(j?f*m;Jacf94rjz$wy<#^eKL-1hmZ-*#>oSNB<8`NnS-9*BSY4dtbm z!XiF6aPT31JEK{^!JR2n@ZfsaT__o?6-{~?TI2k4kkEG20#{n&3q%?ShU){aKRQnM zToX=4{@P6N>?(13eoJ)34gp+09OPuqK|8w2${v0g_XjR)WlK+b<$@mh+4-GkSF9OKx#e)XH}PhaV0L*I2`@ zrHsa)v)8V+(v!}m&t3Q2AE#Vq&u!0N-De-%e{0ps)SJ{T{%)EY)Z%IZe1BrTA6tCV z=ZM4g#hGM$o{Y+mORI7QUQ~I@+I#MZGd*o!S;sR!ar7y3uePERc=~Bb;FM8j@sB%U z7^5*5RmM>=zSu_XchvT@j}9%`*P%mH$!6O7no!V8@BEWO2OL*hv1OsFfe%~um!4d_ z@N;yZs~>TIfzhf-<-!MbPS2e*2@hD?Y?IU;6=(Oo_o7|&WxQ(Ef66H}ACKwi>(}nH zfu&f0Wj#9M416}7Oy`zcmg&%^^b+{TKiu@~$tT_DDOD|;+4IpyZV5DOh~GBfRspa* zb(O#IzD?OJ_UtqGq}cY^?HF{y{kFgV&70#oY|?}p(@`=wXw5av^k?KqJbRm)s!F>& zcgoq$_RQsWX3r)Nl{N@)X-#JF=hB+PhuhE=UM5G$M~*~WIujc=4lk>i7JL!l%QU0+ z7|j=V^d6l-%=N@*0y+ze>9g8|Ct!Q*47y&#Wa8(HA_2h#Ur_TNMTQF(9 z*5VSaTovNP6MePRlwCNlbgtTtTIkdX59G`#W2zVa$U*=3V9urFP1(m;0L)`+O0MMi zLIBqfecf{4J z7rskjT72^jYXA4YVOptfR04D6Kms3x`9s9zQKQO_+MeO#%*{rJSX80*SYE%}n`iU6HCD0wgA zD17$lt1GKa>8Vo(l7`fcaK&VoU0i7jr^ohl zLUNsQ;7F%D2YJHLtzP@N=kR^!%$Tw=Y;$Ir!KFQ`E3ev<{Hd#W4&*{rrksqt|8ho3 zPI!@adhV37{bER`TqK5S9GL*8Kyrnb9z7uPtFI!9jwFCN=lI|iNmvbyS6{t`gANZd zM?te@P|9dVj?y|bMXGWTuzkO>eZS4oCGB!T01tE@eu$C}C>#vof;Ub~v7n?|HwYaw z1`lEzZ)`z{2O?cfr#k7R%m-Qzx*pL4^oLRCoSqs{=+fqVQ5rI2=`MXpF#+c4wB1ET z#n~oI`S@MrERZ+f!Q5)}BKHTqS@>gE$XML(gWf2)>c;wHM@a30K?mBhB`rbfnq7 zU)8P+mcDq3OXtkG?kOHDI3mI~1I`1TJJ+>6X7ug08{|xwfCoy>+chISPANEFoL^;o zl?SfwvfqAj_Sw8{hBR>G$&`i>BXE9f-=9s{D>-2a;C{l;i`{n*+rGH^Q>GNxPOYL5 z;Oc47qy%r>qzSGs(;>UTEy!Jy^Cy|jK6kC?dy^9?hx5b{9=>#K;L- z@4>vknNEmTbFa)FH9cSTi6_k4m?_b7N1W|ti#TCB6NhCu`8reAp_w)voFUcViQ zT%BaxI6OFWwTr*B-F?|Vsv>}w<^`~0fjg;8dSpBI#>pqU>yryjXPsq7i&k;4!__yb zbmp$Rt{cnJvUIi^TIRI4cFNHi!epuDdQz+;JR9)$g~`l{l~$--a-4GL2?sIj*Dutw zV8<&f!8?ES6^?)XHRRb2qct7%7mR|rTBe+Gbbi{Nzg<@5xl@i=6V08XOi7$?khxb| zz7k+^H!e9!FFvy=`)YSwc4bE!ZoM@u;S#RA(Zpq+^oAqgYW^_S3J+(UYA2rn9{3h7 zM)`mLhaPReJ<73Tlhs2`w-`Md&N<%ylGTglt;Koy@=NTq{eXDTLEuJ?%UhC+&#-^9 z&0wvmXa@HEwbyVy-gtw1RHm6g>(*|1$LF?>KX#)}S~3Z|{yMf@zaKVglxc@ATgA^= z4c3D;ZE&CVEjlot^?dKlcRcL=u+vY&)(>k>yLLDq$r+r7y$ssfa?7wi&Ru`}_{`_6 z+_g;X_1qC>`-PAme-kJ@m2phH)6Yp!EI@wBToRR|mKR-wx{DU&Z&M0KUVa(9g6d0tjkFFw?Y!8N{@!X`dPk1Q#@I&;DQ~pjm3EPak^}X+08u5h}@bG48R6Fi| z+n&10WU5To7k7V))qmP)XlXhNzoO!bJtN6%=W43ztXa74mcYA;XBPsv(<#a&M_n1Y zdDYTxKK>gy5>_!~f@vH1JG1Y;rX|~vXDWJ(Joz3Q)LPq4Ii{>JwS;WYenqWkDk_e4 z*q^FOO>)YSgvtaH;3!tVe&_^~f^xZ}1a~cv>C8rZ!U?F}t{uwv-V4-Rl@db0)q}b1 z!H|UDmYGWl;01+$hYrO7=4NBAPd->KZRXhrzUVym7#wm*cQ|wUknQO3Q%(Ud=FIWz zwB|4;^Ze3roTFkAy{#%hjMy3r;r$s>RV!f(Gt$>>{-PWm1-*QynW_wS!P@~{}(|M&x2 zbduWYP2`x)UX8jA|AF~*!l|=gl(bvHVD{u zJZ0O=g>w#g{6ufB4l-;@@vtix%!y?aBl ztDIt{`XM>R5pWgF<0=ZTI12u?y0r1_ozoQy5QQ-wV)&5Ad#>%o!%-|=()Nrq@KCqU zK2asb+n$SZ*dAm&<&=2)8CLt5XNGN2bA3LW4jNQ*JsnL80o)&I)k1$vJ9qO@l2a}p z8Mpgq&UCA9lTF;}3#-j`KDmuIhDCgS2y371`laTSTW1{*^?fkzkVDL#d3RB9OYN@g zTVCP0XU_Hzq~>QWy&6j5149ZJO2*h|U$f^jB?yJ;c{}yML$=iEddXm|N9?G-oN;;y>OvlbhtDZv;X^L zU2tpexFdMoVrnwm^Kr)&)7o7d)1h&+eBeNSQdvp_Hr>>1Z#DhFE$@8VIN0H8FsXL! ze3rz$AHU<|V0-X~&k1q&n)+#vsp)l5=c|^L;e0T8Z*+O=Y3}migW;TXH7JqWiskph zo{cubzCHF>{#fy!XUqWCci$~uMsY2}I^~MfQgkcZFNABXQM74lm;eGR{(XHjk=%?K zF#7V#QS!wi0bTjaL?%As956=t@rIO?e#p+^2)KGsvpoP(T<_H?xdiZlGinriu;-pA z8AazyzbY#5fX4wFU+fBM2j>#aog1`8arI6`t7aoLEbG+1ZI@sz?A7ADReKsTCEI=n%G9Q<>ICrJ=QEM3$VFGrde!?I zZV!KR!nF!syH%^qdwcMfc4~5lk}2uT@8PSwY`eHLJtNSwkH@vm^TK!jsCL9KU-fU3 zJ$K649!2+e>P6H`s*~3;BfcdDAVG+;wS~96zFVZ)L+t^jir6H2JbyzI)k?e zSCgY{Kl~7`oob6fFamhN;j&gOoqK$Ob~VS(e`xMkqoX(aCX;ScC=7x^X7O_ zGBqkqxlv0x3r+w2DJm}NnMrngS5fJtr06)3@S|M3*o_^vYT>@h=X*C=!)tlr1+?Ms zO?U}4x8Q1y9Xixp&)!j-2Y&B6b~K}j4&8C%%*dmZmtV%G@4x3BJEd<^S4}Uc`q*Q3 zxD}S_xg+kIZwhxIN)6jDwozUvrA) zw;wz|{S-A`dMSTR6Gx6XBJ;u6gv?@O@VaT(u$b2Q+uU^*c)E&?$#02{#7V$)j%g0E z#@T1-UPi#x_n)&9=vY~1fuEmjPgm{GA#^2z1DM0_|xCtKI9u;zmgP%<*i z^b{2z`fSpM@^VOf^G%eDDC86^le#3!9s#ZiZ%c!ma<<4yZp{SnAoTwGsCB{#DEX37 zb6a~yO-)s?XJO5fZ7=Y^!Lhif_?lk8f!EzFx75s6M@xf%sYLEUY4Lj%w7%-4gTR0P zi{C-se|+ziZKoUuq20}Rf}@G=o1HtGIRnfEX*+t23vJkT>c$-ycSYHSG!-(?qcmdl_%^boc;-@Jq%80;!z;TcNE#7zt}bUi1- zVAo1Q)D~OV?dF07cI8XD2-HjfZzEhT?DpGhu5J71zWdtNU{^ke%)k1|t{(SuR`J%f z_15TDxbt-S+=Hv;x)jO_Kw>YvfNPRr_}s6uGzqv)?k3NiU)PzdRXymz@vHZ_tik<} zOH$fismb;H)tz=ipShYrE&^fpRaSx*^TLE_8>}wmbDF`JF~M3DTg!A9VPQM)+t2S| zr%r`i1gSw@oK6;`jh#B4JLOy@lxfhw4qizOM}RjzhH!C0w{O{_!}ZGF+6)b4s3Ct? z8H(ty<)vjALqKh>N-}F!X>nC={U&hHMX=A+;9NEh-s%omtw(t@`>;|$bgNJH?JHP^iP=9-V|XlW7n`DeHNwH*rYwl~SwMhAfHp15}S zn(B}3P&wC*IMX3u92_&nyO12)`gYq5zxS^1Q~T|Qo|~H2|Ln7w&q;;2+B@#KBhJ-} zVWUR&5KD4?0v!3Ps6d_R(@`>d%k%?weoJy6Va)F%kK{gXYA;`yOvzhb&g~x@JTQ1H zz_ON1p2Ud67hlA&?W(d2=wEyUIB38~M_ZP-y7$_$UvkqzAagXiU%z+cnGE?(a`Fs1!Gqx?xl+T$4)Sr1Y`WD|qOmPZoQ3~g){@rys z<^BTEym`<|LG?@!;1`$)gZlP`R6byv&=ExjvtjSB1Ekz^Qxs{1+kW^V>M$B)(W1g_ zT-0dS4qBLaZqOiXufM(v?b1O4&6@F(-ICeh?P`&95eP?s%Y|}ULAch@YjbL3bV;ry zz@f?CmvQ6l>ObnJOh=h5ZO0x9$xHxjO3!V#fmeJPolW&ba!e9%wY(;6mLrZN;wo_; z}3#hB9lF2?h_N-@AG@Wzy zG(mFmp1<(>OsBQ&99*`it{!xd*)z=dT(eSxOS3(7b)S83pIURx;5HRgbML*;imQAS zBV+kCqeo{xS1x}np3j~;;t1uv_xQ<9$>=zG-tA~99jTmC&SdM>^S~-lx^FheCHiM>|1wT*ukjAsZ+7d^{4%?GCfw98llTaEfx>|<>ipO z?Y3s+-+w4gexJH;~TSKqR&pNj$7i&{jV(mPd^=PV&kIllDMY||yDJ~VD@T5@T~jnkDP7Ew zFnTmp)7kCJkd!K-)7Vz`KKTTaIm&5EkK~F#6ao__L}^`oTSk2qFCp%ha5OOr?7sW# z+QWp;rte#(qvA;6mRtBqr3h3fFmE3A+06G_U29oct5&)8YM(0tTW#e^6Z9~5rCY7$ zwApsVF$$|q8&fvJvBw|-Q*vj`!tbqZzeRounfh%zc+F2&#d%?nlqm=4|NaMJPd}ZX zTuetQ`<7QE#2aTjM2=@b%XpGRzOwJiFIBB@kSi8|N#Q>D0Bvu$0i`c*GMqrqJ1*y? z+FqkOAIYfuIlq-l=W%{3lil&o6ID;t_MG?o)?1Lou*rJ$qDn5U_Td2`0==|_&a5rhvX-X z0Im-{ce#FU++~-f@k*Dyu1A*Ncq6I&@I9etk?(`HdSiP2DyR7{KTlM<;|lA~XSeN8 zx&8OI6S~NeiA^`n*Ryc@$Bn~v`t{f0+S#w25T~507scIow~su@8W=l2W(<148;&na z)iTjwuU@c^U*z%QlT1Co?VNMO&_sqL_>!S=l~rInLnS#clJ=VV;mc1b*+*KphW#8W zveg?`gC4f*m)z1K;QED_b25@o84sd-o?<=;Tm3rrSUjLdO@!5>2P`!Gd!f)cTW3C< za$PS!-mV?KKXFeniT!N8|KE+OR@lxJ3*gK&K3m&XIBy>A(VVtmTc2(DwwGQt?UXZ} zM9#JoEbRHSZ4aj#GOt8f`|{N{Jzq7hWW@RUw`_kxoN^q!{PovmrrY?WNV!a^%%XVX zjo3eVGD>Dy%&hHx>$l&alhI+EcT9VkB+I>J@o40HVNU4h4~*@&<)FQ-TNgDMMfvW# z*rvTf<&;W2I^}Hlcghso8YEu?%n@+CybK8!R<9wjQ4-b3pGe_H_N7-fSpFbbl zk3O2YUt1zj69L!HQCw9(QF1k%6?@0H8l622ko@Yawl%nwZ+rggHrwF$q4;1BwC7-3 z$Bt(BFi3){7n+e8T?(%+2CYPwm|KGB=yg+$IOeUg?U2k(CCJ`{IO6Dl(T}GZM2bDpo0e^8pU;TFtfdoG}i=dzl-GS4^zYBJFfkv z2*6px6d|rwbx7Mx9y)=3_`%e9$t{OdO>-YDyq7EIF-cwF7B$y+?m7IfFj%DK+Afa5 z9;Py~9kqDSLHPa@KeGqz`R-~end2L8fP?E97QxSOLY#8!knNX8UO@ZqOO2&bGS?TE z@?`W9!%yR;Fk=QRVD2~C`~LfJTb2y{%;w#%D(-*DKRUyP563n~53m*A-vbYXZswj~ zl%p@#p(`@X8E1QRcG@)bNXrVkIF>Br&s$$AQyqxU(dDI{=TkVqrTwUw=qo`_S(yBZ@3DY zTdg*c)^B_Wiq4As^RRRWfG%(VhX2dQtY+19UaCTuS^wHY)?!@#ZkY%(^F}o z501En$6owP5wQTSmRjr3fw0n9(ka6TCH^QhZR$sV7cYh#efpr>c3YHOD%B4wlWWBn zU%>X`k4MS;iMI0!1trFaO-5)kVv`Y(zC>&W?N8Wxy#LtFACtCG*|3~dKbZtvFBrtB zD9NN%*y=m)ELHu!v6y@s7V zj1qC}EV9!Z|E0PL%6RWR+>bao>OYxq7V`ZvT&v)<+qT8;MeW)_+hjVoO*!QlW$jD; z?tC;xjlvPzvkRgwjcVE{_rw$Vi1@PK2d7*J7Fg zBI@XZDI*!3MMoPQg1vh~1E(yT(kD5Y1UTwThujG#;5b(@%&hHxi#ZG#waFZYX?-wt z^}T%M75C>-8bu%~fi1R(Dj{5ZE<_WqRT66BMUVq9Z@+EV=5F2aBE+0M`LvyNR=y+A z_75Bwt-V^Ohro#0vyUkv7N80MzB8Qq71wH*g`L{zIah9bf_oHK(>A?eK)${__+Y*x z>DWJVB>KU3J=4A7`Qp^mpz?R#88sQ%6|`NxdN03>`-8s`^{|hF2`|2wuP0{qhtDU6 z?_a})(9c1+sMdV+5&E3~r*~!F@`{9c=9rbx_OBu5jrp>ALD;L3Ax7CtTr%Xy7mp*) zhn$!C`R8GKtokMhFuB-0_dpuw8F9WVhk{J#iXww|>#<`Yg-PgKzp+Q@L$0=b zW99taTy;$B<9W9It8Btn$q<3EGCZwqumM=mQ*WCLzbEPS%w-ZBG9+``^cJ71st=*# z{Bi{GsH4nko;npz<-TRxHrq={b47s99j^3IPnRzEo@~4^_oy^UfKwApB@`=U+d~f( zs*%*=xZiU19KPq->P^^0a;8G#*dM-saNGCN_WaeRO>v*%`(scZ^x`q3K4`mq^&WdH z-x1&TC(IE?e2lr|wylzxgl)+;EtiSaxEw7LrSJjRw7#(N=t%9=3oSX(+|?Z9u=bXE zeJ*3j)gW5501@9}vgx?u^0EvCb@f1H>N;U)uF-^fjdob|)EZ&|7;flGIHW0-l9O%% z4Ci&#%h|Ithn8LGjZ4qH_d+w1kJ_>$U#QQCCqiSbT4puha*J7cl2+OT;(FO*NYI5B zmNtJ|y+8VBTaq*7PMU<@m5)Bk+@IDh+p7tL4QVvxlw;_h?@8pcuPZtcIp~;u+|)Lm zY(eFf-h5S(kyDN&a+Zf3hTXnIlVuyp#1i~sF%cY>C&{kwdYf64Z@LMZxr8R2Cbn+` zuKSyIeT)*}yh{F{&7A2+&sSX)b}$N*PC7=3+D^z8l>(zfqsl4N-qoN+Av<(j1i}#5 zZ@)0Lqt~4>CAy4cNWhCB2Vs~$!j|pr+F|s(Q6rSRFQ0z8S&i(^efOD_D`}-l0N)eN z?~d!ar$-NbZ%i*cTzY3UlVe!NL9x89zrNU($!upkkz9iYIFI??dvTnzXBb=%mFAmo z;(jn^PE<**+QZ%j3!rb}M02<5akoEuo3o_!lm;ty%J25}-4f z$^RGu`Qwi+t;ny7Yt}Pjls9HhkzG-xE*Zcc0OV+5Pr!JE4v^uIk|GhmbdF*C&t-M_HZ===I&_FpoY#lICSKZP_o7v zc9qSZ4f&j=YFAqtq~k&2uDej08dXgL8JB(FKvSUyI#V|BepRYbq_4gTl6>AU#Wh<_ zw{F+&J5m!G>Jr%!EyX+E|1xeKl zZgg&*eYTr^+;9V&1za7(jn+7|pufB~bCm~M7P)rH*>-B#;zYT&?WZq;PB-e!E=>=% z`oFYlHi3jX<=73|Q!A*4&L&qO;`{6a&CCaP_ubfLv>xq>tK?{NpFXf)yX{au^GsY8 zNv}@?7$!_-@@~7qIxguNx2;SV+O;bzq4Stgr?#DA+5OL#ODVfv)a?-?Ac0PYsPams z{r20Vr!T*Z2lyR#ER~-7(NEX8lDGgsa;Bn~I!~FS%C@8A7`@CvJX5_GH46QhF~gL^ z(v)K=S|J}jEOen#d%q4 zE%dxyJ2M2n{T6cKT5zZMUL@QR$0!%u;jf$~V=GE-%PnyVIl}hROW5`$8iOzHjCP{E zy?evXUw=iZzokLo>mzzr#b-7w>(st&m#{tNRM9>5K+6+OKxz9s9MsO*wNaB1sQi(l zQ;|-*pz?y&qqB#LoCIxGY(3s+h!zmQmoek4rb02SN%34t-2K3@~dmKv*(5z?8pr&b?2Q?^Rml=wkXwl_+4R& z5LbgemtG1d$f8B1${qcF;RTeoq66vV&mQFADy)2`k9ro8K2!~LJWo6&;iiCUSIDhs2``z$9^GxW8I$x9_IP`42_a5XjWXDZ! z3Txq7)l9fW?*!MfE-XPcL|_>K#;o%#k85K0>xVkNy!F+u4|^Dz%FsU3UV(GZUB<@d zC(bM9_t~bdQjopQI_Tx-(Rj)*HS}5v>}u{~=Gzii1FE@=xuZY*1X=vvo0FV0NqDOL z>MPitl(`?Dd;)uI&xuOf*(}!HsL#2D^qP7LE2PKv@kbwphR;8@t*K`D|N0m1pL_3J zbG=eO%J(kYp>dqzq|qJxo^X|&@#Di@f%iYv{Ey;d0qF6eMvm}tJ8Eg$lNHszu6Oo+=O=}j{M{zzYR5qin+P~Tpvn4pCZ6AU%meDmVY4xN5S9aUWWu&ss;4ckKX zgAm|Q`wK7NWysa}3}Rc7>u@PL*GV2njL3X>NHRl{w%>7wNon?E-F6$!9|wQzX(|oL zwx3H^Up?s@alJ9*=eq0S?GNXz-gh5DkkbP3NAg`%x~^w&$;Q z>V)&n`-`bn8Tr1#X?nT(mc)GwIfFoKQ z$(lLSjQprl_nh4e6Uu)URFEqtbl%Q6o7J@*{$vDx#*;Gfk0TsB&8`=A`?=?EUis`0w!MG#Go8jyKW*1SI^p=PXX?B# zc`Tm;?DoQj^prT|h{n}}*bX~DBUgK%{>?VSCr-)Z18mEdtl>xb;)}3@c5$h*AAaz| zK3O3GO9=3XflIgc>IE)8{^$pvI(1+Nqg+4w2-}Q;r4x_VG6C7?r*n_pk`Fw#N4@O! zB017|zOTFzF92MkmCLv#rzfr~1t&VW<4VNDs47nFcGY|T^<+M%yPAa%mdpM3!_M!% z3)@olYa(FVQ5JL%t0o)$IF|W>e!&HPSj7ajk3O2|kn+PicUD|`Ep(BGEzO)V&-W=? zdXg&_-;?*>M-M*x%x+IEzSyk%v?Y$qrek}$Dp%X!_c2?4vD?X=p2{Al%n^6redrj& zN!d+XF>Umh^#}dz)(v~kI&0Yx8=rVTJnlH0|59JQAt+-G z8V9W(wjNh&3)?QcKHoo{e?I$2y0*Epr0wgsabq*w7^V2kGiKz)CnaT0IbJ|_-suJ@ zM_U*jGBHpFSv=Ga>mGtef*HEq)W2I~Vpb3XRKLPMqkM-R0%5hf~(iJI{@M zbhfAc!NCp9=vubj7BVJJ#tXtJr$m>TED7lMN-Lq{=qRJeT|3~&u2(O-IDP#!_o&QG z0GxQ=wfzE>+lK0UUwsvJz4K1>W7-p)z{VR#mr;|1wC6VCecqR-&35f@Hkj+QZrz&B zP7;sd_k}?R9Ei*r95M6r8>-gRG9C-iyEpDhuf3K;e(~9CJD;4Xo{brU^Sf}NDT%(x zLH~aF1$K=Z<(qxE?HM~3cKdR#&243ny(x3bvCB8#j87c3;Qq9hj1FS7(3V@Gr;OnH z_1CoaT>TP(va-pOL7{bPl#EJRu)q>+qdp^Pzu#^qcnuKPbowj@AwyjF*QoV^DH% zCw+v_zvj)+GcJh2DAAlROAa7B`Y0aY7{%&9WvW!T8uTm#O;K@$2t_+?+iAAmdbmIM zGMF8W*7B`!f0;cS`%XT2`D5{a-eV8g@b=r_&jqXEx2#wT&<_rRa@E^aRw-6quy$P7 z>zZqV)mN=d0-QbKd(JQ0Q#muK#J`o4{yz3t{HzRFP}#S1e5Vx~-i zN%TT6WJn34ygOAg$N>SaLc-7+&S~w}56T&H?!c5-RB(A@&fky42q_IrVDG(A^^G_1 zHZgD@O0%IUzdyL3>UZ9FEI`3tqA%;OkCMsZ-h2}c8P-}*jHL=pUc)dJOKMUtmP=vJ znG;V}dCyDHlX*NK3uv{y5*a=7X77CkI_2~*JaoKH8NTJzgc_7F&&JrXxL^0^fs*H? zhNhkzg1v_x3UfF;z*M&Qe4XS7)A7gS{AvU=AE|u%!R_ataeT~}eD&hp&-2Q8=Y|IF zh4Z(Q5+fg$4HN7sBsMI$cgTEWjLAL z+V(Py`R&6I&Slttf4l&2yHGnF&n5tVzyFT?!-i!ace6cc5bR(A88=!>K?}ae3@zd+ zM7Dd*@GHy#U^>fvs+i%DImtMkkz^OKwwd34^UCe)Q)m5;C!56ky zAz@PPLl4FMN6%Sit_5G8$KQGj=lS!`&GgfMDd_LF-@?*yrCL7NFt4n7zUaZIx4hjq!ff=jQudJf_95TAdNPteaE&`HL8 z3%0G?Vhh_E;+Bv551lxN90GgZemicva_eu~7W?0Q7x(!A15j?TLGJqY_d-AOAJD0J z>7~$YJDP9$bm%EB$9eqfEBiezB@K+m@~zM5iM}e1tgrJ|lfSfT_W4)=HV!$1lqKLlviFcA+5R$I*ePktbR;;>=U5lm** ze#3^DC4WB|HG`x6{$)a%u3hnbv|VxaMvTDuJgREgRsU=d z!1?3=m8%!A>#oCjWnxJiJ+mxxk8{UdnJX3`fLbu$Xd_f*M2dfrX_;N&ZwZr04jzni zXnwE*e3;CT*9ZrFT>U1!`!4#w@4o1#FUg5B&q^A$aK1UX=gX4xJM4h-?yK|M-kHbw z;4>kgDedVCCwc3wabEb$8?LpFwO97hD04RPMo#CJ?NO9sEoUh7xm9cbEcxf_XaTI# zUlB+b0p^$El+TABM*sTuMS1M8D1EzsFt@|3S+GxkOOpVv%gr}O|5=tA4LTn?cgBO- zgbAfaAfEo-aR>C;cFNsyOFaE6HLb1(A6)B;|9s;9G=Dx`c=y~B7CrL}%AI$P-@;rL zFbbQg2+lbN_A{5-6HlPk3ooF2_g(apgGSY5qCFjJTnhHcBTUOR z>Z#~3Us%}vxXML~pt(;Ul+0#MK2?N_O4 zbL}LH`(-b_^Nj17-<$GsSdz5JUM?>8pZ~yqzQlj|C7f^2AAdXhT|45q5;Jqw z+3A(fQt>_FG|+<&hOJzXjti*x+=E=U@wtP!=$I0O(@q%;xAxk(THD{p`_|cKga1h< zq15}BefGIDFv^k(vE{1cVxKRLCl`GUqQe&+TaB8xF=GMJ>y#_2>|0)uP|w_sJK}m8 zI~FB}XnoHP+oTEXWip>2-wM?c0TJ+n0Ow!aa}VtCHDrVHKo}xI}9A?s$Vb<`|Se{1B|YYMCa0P!}d6+<$+w@_D}Lfi){#(v}gxd8}I(dzd(A z*>N|Y_+0Nsn~z#>Kl|VRP+oEgY}{ubl(T31Xmj#xVq&=6cL!&!h86cY#Cf2nl+!+3 zTSbo`{R*!2`>Kztcg1!8pw3tU-@ z^LrUS%4D+Mn(v8WboN|v1q|AGXK;Pv4NnY|85soPn!h@7WTta4!>E$n01pNuF!;$e ziYK1Pw8OQ2`}#a}$}zfw(Hu+=!_^tMM4Wv#|+wn?bTBy?O_ ziV?|iC3*3U86yfAy>aiou(0GJcnqHyCP{kmK?r72xK5q$^28*LhSf@(Ap%T#we{A9 z1pY0CQ3@Q4H7i}x@)3yJDc7O}oV}bGlh01=$Nh2obd-FD+I@GB;r*0RVWq;0QG~5q zgUi7Oqg0a7q+9_wUmOITGR2MEbkfop=tgVuv~Vgfr}o%WE%VmE=$K3)tyH<=6)YSC0kYGv305cC;p6D!yZM z@^glb?S4J|H1u-t*0#R*olq9uO8UM)}Y~D7*Zf^ohT7yl$?! z1~zg5khCu7!(2uj&HUHD(C?jg0-xs1QC@p3$}hf%5|bF z-Md5b)mNkREexGW3OW5~$Pn1c95!4z%ru{T@+vEFgbqrE(dMhK{dNhoX#@ETgEy`1 zop&ISxyek+m%MNU_<(x(<>A_ys?C*KJ9L0VI_gcyHzkKTYZyH@bEYZDX_W&<27ecK z*a7|I_r7^^Y%_-+Uz|4C1pDKPPGk<3Pd|knT;Yn*Y%Ir*$MeLGKcb%g`a@t+*FS!# z9t#k~K3vOmy6(AW6j{~V{_~%>maf0P`Z4XXK>+8oc5TRBZ8aM@!pr>aH(Updhzc)3 zEy5AV{TsE*E|9X-Rwy}BfF*yUm|lo8fAZ<(Z^}2{pay?i-g^(*)2E~4;(Ze);5uMb zPCmKXpEd%x9yvH}J4ofnA90;=P%&*Z&GiT8h0mn?-kX!3DQV$CoEP3VGLNQetFmu- zg(c4%6B04Bf^QtY@ngsb=V?uxm}wzbU5M-H@QEj2PuH#}b+^boKd!dqnR7)tUOi`? z3H<{H#$yNL^ba@y`s>s|dH(q*FS-b&FK8gMAD;LI7v1j&d9&uYTi}-D~K`*o4y0t>uL?B%R zjyw|mp`*yP1CG&2TooXn1CG?0mHEH}v1i|XQF3W&){DE`cw<;FXb?)yJuyAEE$)6w zzX+t8032|<-Sp5?L5in06 zpi_=hW==g7CVcoIN-mkksWIjaEKVYm9C0aECOhKPoUl^4_U^$4qh(y#PsyK=b389$ z`=k0IP|5`8WasyY2@zZ~;ZlXgCMkUJMOeK3_9!{U-nXfuJM9Gfn0V^xr?K6zAxixf z0TJ+t0Gx3g{JY``JGQ<2GNR(Rx|ba-k}3isAOa#F0wN#+J`yP4h-=plMl*{uqaD^? z->=RvYJ|~wojb!m(^2OdD_naTwU7PtGZ$_cDk z0RPU6EsHpnpDU4=*2AgyrsYbW2#A0Ph=2%)fC%_cAj>J&qzO!Z=pmGhzTg_!zI2EQ zf0^K%_C5EU8w>fed-Kh1^ySmi!PAl$rP2`O? zpz-9B?P_N3wjMp8XV+a(GWU~R?ZKtjs)f3YvgXv=WM%Y z0vm0F+K)VfvUTe)to2r~NHOB&^ zpMrWQ0wN#+rA6THd8-VU66^|X#DgrJD?6C*5a9(KK&bVKGfjxAJ`{s<}IpIrj@7~zM`Tv{;&w8%Qkt3l| z&N$cPrLU9;Tz4IMZ`v70rZ?UwXB=6m6af(s0TB=Z5h!&6e@Dj=1D7S`Tu1J=RsQ$C zkbL{?C^;vo*kw>{*%?+YmkngJ+-94Fm0+j-efL4`X{Vv21JRB)NfiM*1ejRt?6V>N zKmS1)_k4S3v&aq?d=$2Fw5P>BG z5Fyv86KL2<#>=Ij8#aVf?z^gtAo?c)A|L`HAOa#F0;NqLYgGqE$=Qa&m(`|Cp@~yc zlkSWoHzsc5Qnk#o&f{^FoRU0sDlCXQiYP7)(wj^IT;lo3Ct*LGMR7ahe*Ycza5Vzn z-;zmrnblm?r)5j*W3o}cSTCz-<`YvC$N^`Dr=*BLZUS(?amxBFx8$y6YVW{-a=@8l zDLEn_0wN#+A|L{h2wYY1d9Qr20FeYoYnuuHL}sfuQYz*8Axv z)Z~35Xgk#t0TB=Z5fA|p5P|d)$a2K7!`EKRPsNqre~)%d5Z(s{K(%!M=O$DXsIw zXx|<^(C=M$MLA(YaU3{M^VCztwO1<<5P={B5EZw}E~sler|iu)BP#C8FN4^oI#vl> zczFA&$4{*hU=^~2i+~7-fCz{{u>`X6$WaXQG;wOFq6+-Mi&knmam5Pi+~6ePXNw1F4Qo2G9)!`UcAJbS~53W zgm5&n>{&0CiCQy0=l50_6KIuzT{yl_t*P_N3X zV=ETm+iziG$BroFkpqY9zx)kh_~4dXqDG%SD1ZGmv&9!*V4EX4nMbuH0wQ3N07pD* zdE{to-@fw5k%dYT5CIVo0TB=Z5y(v-Ply~Vud)h0F%cT)IbL!J_75M9k}qIvr!pLY zHP=M_2OmVq<<7!Maaa58x1sC83sH_9?M}BeC6@plGn^-V@Hzo(x@slTO7VDrt<|4T1L$@z(N?)yrI5x@r>1Pgsxjm1}9#oERD9p}jx zD@W}_Km?X20B0QMi!=WSm#SXArpeFUy1^ND_uVF?N|p$SfCz|y2#A0Pq>(^CM_d}a zo`gOz>vI48uy)l|lVEjO8JFp$-E_<`(O@!qAuGcY*ls(tIPW}^T=gI+*DYTlPd^>@ zGhtj<4yrE#A|L|p3BUnI2lw;O!-DqhjayQCt@B&wj0Jf0Rp{DlFF55ibHX@#2^0Yl z5CIVo0TDw5r9*U`F}Y$VoN)tT6fwB4mjWP;o9oA zbAIFz2puv6B}dl18&Q9% z!CUv|j0G?VB_X0X^|X6;7|f}s+@FwcEH!iXYXNIl{Rl&z~~CoTEM>keDV`^)Ik9z9_D_unV453*PU zL_h>U01mj8EwMFzJj&X&?egKmHjIkX!VPwLOS%Y%K_CRRd zlqp$eX;TD5KmN=CI>wP5F!SE6KMFW;B5ES4@4fK8kT2@Db7 ziwWl-e)CPS8j{uS|J%Et&?wF@j^mp`)HMFVjUgZk8>nu;=*5Esm)iUjSFsjS?-dn` zl^)tcD@KKYP=X$$;zdzVy!4Q0t9Y?3Dhjz&FluTbB+(F|F`^I^@m~{ueGa>i?ge`_5B2U;-+}#p7yUxuUpinH>){wzjGmci=#<{cv>z5I_I{ z1Q0;Le*ubeUf*Mz1$FG0hG}iD2c2VZR+PDQO9w69zO8nDe`b8}KyBAAwVO9jc~n;` zCK8Itq@pctYO$t9`wRW~WsPF$+lLQzuD!^}W{FPy3Y>`m0tiG^Km|Da(#>Xv+m|ds zXMOgpdT41;A&w=}gBIud2q1s}0tg`BzW{|e7x#GZ+e6ADj06xs0D-&-r~qeQ z;Mgih8#m^ygGn#c*Qdkv^(w&Kzdz~e97F(t$P1+Z{^N+Vxd4&ZAwdKXK)}5KMLGBP zAOacG)+&kicEzy1eUHGy?YhykJAXJOlk-qfWR~bRE)D()SaEW%-Xfn zyxejpCEi@27009ILKmdW@1pfN@vmcov7o4w0S6;nZgW0o3aosw_k`j*w$xuQU z=;=|H2M;QqKCSrjW$3BUAp!^>;7CB#IQvFo`}T0sxNt%Jw6&=U_xg1>{n85p2q1s} z0tg`Bhrq8tm4Ba)xd0U9{P=kYc@#^QsKZ^m6t`_twC8O?PKWLaMBv&rC3^UG} ze+(AL4J1tj5I_I{1Q0*~0R#|00D%t_pb+00Iag;G0127nO_hF&Dr$7si7C0tg_0!1M$t%1zIWPfaRd zkFusxI?al8EiG!#o;~TuIanY9Z{8@;t5+3Io>a7#zdd_aAOj&y1Q0*~0R#|0009IL zKmY**LJ^=47YZ|-NMP11#pY(k&6^cBZBn#1S*yi1Y65reD5F!S6zyGa!^2U_H1GM8 z{re|#0rIZO1rb010R#|0009ILKmdWF7N96s)VDt>gD)#nCJhaWwqS%UFUO;=;oPam zkJZnmONtjSD%x^?MNoVT2bx|GKmY**5I_I{1Q0*~foy?~JAWU4`%@y8ZmRz>`xtFc z1t`jSdSm?>R&}+;)7YqJtG?FNshv#vHQt~`^XQSTeEqtjEwEsZoOX3-|EpI)Wx#b2 zKmY**5I_I{1Q0*~0R#{zW`UA;a`YdnamD;2;LX?NS!IXCX~>O{bbaf=tL`$QslT)0sC<8j4`ip=($IcjIW{I0xQ`)ABhwBnaN z530Sf*z@Q5*Vvfi=xFXZGNS$W?kV>7XU2g6wVys!WQza-2q1s}0tg_000IagfB*tf a7Wi&MU(+vrpZ+$HW4ihCrjCZM+WrG#7QoQ}