From 35352e441a536823e5b7e0befb02e376e89bb97a Mon Sep 17 00:00:00 2001 From: Ivar Flakstad <69173633+ivarflakstad@users.noreply.github.com> Date: Fri, 8 Dec 2023 21:51:49 +0100 Subject: [PATCH] Begin adding mfa support --- candle-core/src/metal_backend.rs | 1 - candle-metal-kernels/Cargo.toml | 1 + candle-metal-kernels/src/lib.rs | 235 ++++++++++++++++++++++---- candle-metal-kernels/src/mfa.metallib | Bin 0 -> 109828 bytes 4 files changed, 205 insertions(+), 32 deletions(-) create mode 100644 candle-metal-kernels/src/mfa.metallib diff --git a/candle-core/src/metal_backend.rs b/candle-core/src/metal_backend.rs index 12f56d50..7451c90d 100644 --- a/candle-core/src/metal_backend.rs +++ b/candle-core/src/metal_backend.rs @@ -795,7 +795,6 @@ impl BackendStorage for MetalStorage { rhs_l: &Layout, ) -> Result { // Create descriptors - let (type_id, size) = match self.dtype { DType::F32 => ( metal::mps::MPS_FLOATBIT_ENCODING | 32, diff --git a/candle-metal-kernels/Cargo.toml b/candle-metal-kernels/Cargo.toml index 186f3209..af17a6d5 100644 --- a/candle-metal-kernels/Cargo.toml +++ b/candle-metal-kernels/Cargo.toml @@ -11,6 +11,7 @@ license = "MIT OR Apache-2.0" [dependencies] metal = { version = "0.27.1", features = ["mps"], package="candle-metal" } +metal-flash-attention = { path = "../../../metal-flash-attention" } once_cell = "1.18.0" thiserror = "1" tracing = "0.1.37" diff --git a/candle-metal-kernels/src/lib.rs b/candle-metal-kernels/src/lib.rs index a0b852a4..9324c1a3 100644 --- a/candle-metal-kernels/src/lib.rs +++ b/candle-metal-kernels/src/lib.rs @@ -1,9 +1,7 @@ -use metal::{ - Buffer, CommandBufferRef, CompileOptions, ComputeCommandEncoderRef, ComputePipelineState, - Device, Function, Library, MTLSize, -}; +use metal::{Buffer, CommandBufferRef, CompileOptions, ComputeCommandEncoderRef, ComputePipelineState, Device, Function, FunctionConstantValues, Library, MTLDataType, MTLSize, NSUInteger}; use std::collections::HashMap; use std::ffi::c_void; +use std::hash::Hash; use std::sync::RwLock; const AFFINE: &str = include_str!("affine.metal"); @@ -13,6 +11,7 @@ const BINARY: &str = include_str!("binary.metal"); const TERNARY: &str = include_str!("ternary.metal"); const CAST: &str = include_str!("cast.metal"); const REDUCE: &str = include_str!("reduce.metal"); +const MFA_LIB: &[u8] = include_bytes!("mfa.metallib"); fn linear_split(pipeline: &ComputePipelineState, length: usize) -> (MTLSize, MTLSize) { let size = length as u64; @@ -105,6 +104,7 @@ pub enum Source { Ternary, Cast, Reduce, + MetalFlashAttention, } macro_rules! ops{ @@ -179,7 +179,7 @@ impl From> for MetalKernelError { } } -type KernelMap = HashMap<&'static str, T>; +type KernelMap = HashMap; type Libraries = HashMap; type Pipelines = KernelMap; @@ -189,6 +189,22 @@ pub struct Kernels { pipelines: RwLock, } +enum LibraryDefinition { + Source(&'static str), + Data(&'static [u8]), +} + +impl From<&'static str> for LibraryDefinition { + fn from(s: &'static str) -> Self { + Self::Source(s) + } +} +impl From<&'static [u8]> for LibraryDefinition { + fn from(s: &'static [u8]) -> Self { + Self::Data(s) + } +} + impl Kernels { pub fn new() -> Self { let libraries = RwLock::new(Libraries::new()); @@ -199,15 +215,16 @@ impl Kernels { } } - fn get_library_source(&self, source: Source) -> &'static str { + fn get_library_source(&self, source: Source) -> LibraryDefinition { match source { - Source::Affine => AFFINE, - Source::Unary => UNARY, - Source::Binary => BINARY, - Source::Ternary => TERNARY, - Source::Indexing => INDEXING, - Source::Cast => CAST, - Source::Reduce => REDUCE, + Source::Affine => AFFINE.into(), + Source::Unary => UNARY.into(), + Source::Binary => BINARY.into(), + Source::Ternary => TERNARY.into(), + Source::Indexing => INDEXING.into(), + Source::Cast => CAST.into(), + Source::Reduce => REDUCE.into(), + Source::MetalFlashAttention => MFA_LIB.into(), } } @@ -220,10 +237,15 @@ impl Kernels { if let Some(lib) = libraries.get(&source) { Ok(lib.clone()) } else { - let source_content = self.get_library_source(source); - let lib = device - .new_library_with_source(source_content, &CompileOptions::new()) - .map_err(|e| MetalKernelError::LoadLibraryError(e.to_string()))?; + let lib = match self.get_library_source(source) { + LibraryDefinition::Source(source_content) => device + .new_library_with_source(source_content, &CompileOptions::new()) + .map_err(|e| MetalKernelError::LoadLibraryError(e.to_string()))?, + LibraryDefinition::Data(data) => device + .new_library_with_data(data) + .map_err(|e| MetalKernelError::LoadLibraryError(e.to_string()))?, + }; + libraries.insert(source, lib.clone()); Ok(lib) } @@ -233,43 +255,154 @@ impl Kernels { &self, device: &Device, source: Source, - name: &'static str, + key: KernelKey, ) -> Result { let func = self .load_library(device, source)? - .get_function(name, None) + .get_function(key.name, key.constants.map(|c| c.create_function_constant_values())) .map_err(|e| MetalKernelError::LoadFunctionError(e.to_string()))?; Ok(func) - // let mut funcs = self.funcs.write()?; - // if let Some(func) = funcs.get(name) { - // Ok(func.clone()) - // } else { - // funcs.insert(name, func.clone()); - // Ok(func) - // } } - pub fn load_pipeline( + pub fn load_pipeline>( &self, device: &Device, source: Source, - name: &'static str, + key: T, ) -> Result { + let key: KernelKey = key.into(); let mut pipelines = self.pipelines.write()?; - if let Some(pipeline) = pipelines.get(name) { + if let Some(pipeline) = pipelines.get(&key) { Ok(pipeline.clone()) } else { - let func = self.load_function(device, source, name)?; + let func = self.load_function(device, source, key.clone())?; let pipeline = device .new_compute_pipeline_state_with_function(&func) .map_err(|e| MetalKernelError::FailedToCreatePipeline(e.to_string()))?; - pipelines.insert(name, pipeline.clone()); + pipelines.insert(key, pipeline.clone()); Ok(pipeline) } } } +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +struct KernelKey { + name: &'static str, + constants: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +enum ConstantValueId { + Index(NSUInteger), + Name(&'static str), +} + +trait MetalDType { + const MTL_DATA_TYPE: MTLDataType; +} +macro_rules! metal_dtype { + ($ty:ty, $mtl_data_type:ident) => { + impl MetalDType for $ty { + const MTL_DATA_TYPE: MTLDataType = MTLDataType::$mtl_data_type; + } + } +} +metal_dtype!(f32, Float); +metal_dtype!(u32, UInt); +metal_dtype!(u16, UShort); +metal_dtype!(bool, Bool); + +#[derive(Debug, Clone, PartialEq)] +enum ConstantValue { + Float(f32), + Uint(u32), + UShort(u16), + Bool(bool), +} + +impl Hash for ConstantValue { + fn hash(&self, state: &mut H) { + use ConstantValue::*; + match self { + Float(_) => {}, // do nothing + Uint(v) => v.hash(state), + UShort(v) => v.hash(state), + Bool(v) => v.hash(state), + } + } +} + +impl Eq for ConstantValue {} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +struct ConstantValues(Vec<(ConstantValueId, ConstantValue)>); + +macro_rules! add_indexed_constant { + ($fcv:expr, $value:expr, $ty:ty, $idx:expr) => { + $fcv.set_constant_value_at_index( + $value as *const $ty as *const c_void, + <$ty>::MTL_DATA_TYPE, + $idx, + ) + }; +} +macro_rules! add_named_constant { + ($fcv:expr, $value:expr, $ty:ty, $name:expr) => { + $fcv.set_constant_value_with_name( + $value as *const $ty as *const c_void, + <$ty>::MTL_DATA_TYPE, + $name, + ) + }; +} +impl ConstantValues { + fn create_function_constant_values(&self) -> FunctionConstantValues { + use ConstantValueId::*; + use ConstantValue::*; + let mut function_values = FunctionConstantValues::new(); + + for (id, value) in &self.0 { + match (id, value) { + (Index(index), Float(value)) => { + add_indexed_constant!(function_values, value, f32, *index); + } + (Index(index), Uint(value)) => { + add_indexed_constant!(function_values, value, u32, *index); + } + (Index(index), UShort(value)) => { + add_indexed_constant!(function_values, value, u16, *index); + } + (Index(index), Bool(value)) => { + add_indexed_constant!(function_values, value, bool, *index); + } + (Name(name), Float(value)) => { + add_named_constant!(function_values, value, f32, name); + } + (Name(name), Uint(value)) => { + add_named_constant!(function_values, value, u32, name); + } + (Name(name), UShort(value)) => { + add_named_constant!(function_values, value, u16, name); + } + (Name(name), Bool(value)) => { + add_named_constant!(function_values, value, bool, name); + } + } + } + function_values + } +} + +impl From<&'static str> for KernelKey { + fn from(name: &'static str) -> Self { + Self { + name, + constants: None, + } + } +} + #[allow(clippy::too_many_arguments)] pub fn call_unary_contiguous( device: &Device, @@ -706,5 +839,45 @@ pub fn call_index_select( Ok(()) } +#[allow(clippy::too_many_arguments)] +pub fn call_mfa_gemm( + device: &Device, + command_buffer: &CommandBufferRef, + kernels: &Kernels, + name: &'static str, + shape: &[usize], + input: &Buffer, + strides: &[usize], + offset: usize, + output: &Buffer, + output_offset: usize, +) -> Result<(), MetalKernelError> { + let pipeline = kernels.load_pipeline(device, Source::MetalFlashAttention, name)?; + + let num_dims: usize = shape.len(); + let encoder = command_buffer.new_compute_command_encoder(); + encoder.set_compute_pipeline_state(&pipeline); + + let length: usize = shape.iter().product(); + set_params!( + encoder, + ( + length, + num_dims, + shape, + strides, + (input, offset), + (output, output_offset) + ) + ); + + let width: usize = shape.iter().product(); + let (thread_group_count, thread_group_size) = linear_split(&pipeline, width); + + encoder.dispatch_thread_groups(thread_group_count, thread_group_size); + encoder.end_encoding(); + Ok(()) +} + #[cfg(test)] mod tests; diff --git a/candle-metal-kernels/src/mfa.metallib b/candle-metal-kernels/src/mfa.metallib new file mode 100644 index 0000000000000000000000000000000000000000..dafd1856dfd95f10cceaf0856cd87730b21a06b5 GIT binary patch literal 109828 zcmeFa3tUrI_Ah=;5|RKRgr@-lo&YKe;t3!R@o_?sqM{8-TeP+$yaWXd4-u`?=D|zF zHd<9opJ9)E7EBO$aJlYNNFsYHfePqNR>)X|;}>I_+KiBnN@oncuzlcmKb8 z=ihvitbNvAXYaM&`|P#%_bkoHO2f4*jE7-5FAT#tZ{YBcVY&1_hP}gbI+n1V^f@;t z9pXD_l#^frcc;Vjg!6tR_7wb<$(Jq^U4%=WFu5zkj8=?q%}v*F<+Nta$M2o!@gmxIZH!N9>B?m*l~P%UAF*7UqT_ z?UtsmSjETeflj&Q8Cf}ejN`g#;j;9ct>8xLaIum#Mdjt=71?__=;x>ze~k$7^fpJd zS)ab#OMQBUdoJvIY;gX?EAwVJ73p&Y=Suu&WcN};n>|*MbXWe3SETxvirh4Cg@u&a=~70BRjjWnSC^G;R{v5Vuf>1;AhCMash?O`hd9U0VUta`L=PgK~!}H757p%*x)~Kthi?G?n7+zCVs;*eGp-f$c&0d4yYpT|7 z(76bu*@tjXF zEPXuZGYl(NSFc0LDQzz0@=MhaUbYQG>Bxcvqjb#2#n@5|G6Y|SNpTEcf=O8zF3+o} zQdfYq2ZpCHZchwPXWY<>sLM1ZYK-j<$toa6&UUg}CAvV1a6m&UHgO)Dm z84L#jO<8G8H8%Y`E#kWP;J3W|MdkW`AulUk^|AmD#+K9dQbE_tOuAmCV^TJTXEU`B zYUdKh4Yl(@#x20``x&g4_5 z*9{}n&+ti8SU#H#3^c^$3&=>V$gL0gOJNwD3&V^jO9~SZ4D*8@PZzOM-p5(Q6~(3O z!s`W7-1tFZobCBq|AnlyU7l$jqB#F#zIcg8-16p3qd%d@Xx@tj#iel;35`3$dzJER zUCW^1$~MmQ4DMFKsYhIRraMvCz|##^%a8 z-X>#Hm6*3#)wHFAy{WEgvxZj{#j7e|S7q`Z%LI2*Vp~(4k+->oU9D|OENRl1cr{qR zR5G9rJA)H_($K3?Nv|&SOuN^xRB~PydQm0m(S?F9R?X+twl!5@{Ay#9rlbkNtgCCP z(eO4$@it*d1}6sEC0Es97qPIRcF9Qys$Fu?B5|~b_UI&cZ{Jwgl$goeNH%R6r^B#3 z>{`17>k0j=-RnYo*hM_-qBg8YEt?%TXb{x!>W9!wphlP-H}N)gqEsL?z|H5?X(1I& z)f0odstfB;OFnA%a>&Cz(}kT;ONIwShuXb*+r#>;k~8u!6p?)L8Qj9wb|QT=B+8R9 zx#~*MOJOJW zzazY_kiwf5;SYB1cO$~@9l{}{aLCRbG74`Qk-MDq{+95*Y3E+WyvyyvLCSj=Yf~hf zZF5`MluC+6-;!M@E)`auh_XGBf>8o z!kbFrcNmgkQ)WdKEu~wLVpN0-D^mJwsr`zOHV91)YRogSDev!;C>2NzaEpW^m^Y;2 zi-|$?v**>@lJ_Y>EQYzq*z;O#$#z?6pCY7LF|W;#(rTECA~MWxWovm@wm0ZAs6u%% zCRbf4N}q@F!8-StA;pd~fdnSo@1_Xa?OH6~sy1udCZW9NP;;%(NVFXVHb ziHE*4v)06`RPi>8c(rgz@~TX{YJ#^J9B?^4gsbCyua5V<1tE+H>K1`w9}Vi(_eR$L>)+ty{XFB6mWlXhhc8F zbuKgqyJAj@ZB~aNwSzq`Y95iE$q$NKp5AQds|OZpo&GYAs^*zC#Hs)SaqL1@l%z5weZ9#YM#sBIS zp3}z06_HPWE5O7o3Zp;##>_$+S0F;VYH5xlasW5*_*#gMLJY0c_f8=f6W|280v#0{ z{;Oa}L_;jdU|3`#-~VeVhV`*V_o?@tnr^5#$}~!)^vYI+fc5aeiH41cC;7bjOS}5y@Qfse|%oEBDvnylBVTts^e9+ zRSKYaI(v+GL0VXkHS}z|q?mN0#S9_PnSIF}XGMm?6~;?VSzneJ=Eh{UiRhD&Auy zyd*RT@{+Vo8W<2&yxJ&U?QJ&*cB8f_58Ac3sj97MQ=2XZ`lYWO!tX86*|PKdU`T40 z^wa;B)RHsK(N@j<$Ot`~BBhP~@3tkkIy-IKEQs`uKJ^0h#x}vJ(k4xAQ z8gWyNsVV5}3h%Em=mUi?B79DH4-&%bkP0Fy^pX_@(6IAT$t7LbB?lS`ui;_E;%w-F z=j<`0_A4V@2~jm|tmDIIV&)gwJYBOBgT26RCN}D!;ow3)4t;g_ zpVFUu3`!poyBYM%Y}%-S+-nkEfgyv|_8U@o!-$5z_$ZR!RAb~NkuZa5sx&p#)bTdn zZh)E3#!kp6SYpGlO$5xnpoPRe&-Z6Fv`ov$=<|syypX)_cNn%kUmbElUac&X1c`XP zQC@`!OADgjXJaeUmkhX9>+%YVYD){?!D2&kF^Di+ zSa7SZQCHMVn03piZ z8NZCEbt*{2%Scido0ynHMA06_MKecPv2oLvB4MOu!TNGdX<1QhVG&yHsm?1btybrk z(aB=Giq+LMdFASwlDwjdU-(t2%Zr?e&MPj0#TJ)L{`&Q0uC<1V>n>xLT<)&6j9X}# z_-M7Ex@3J-&A3IDaqBDNmR6jrD$ZEZg39{xic-ybw5~>=Qd?1qGL29~M-w?|ayirm z&g-Z~U>K>VawGWXB`t*LFMO762O;{H&uRzq37=&J@+qG+2;@KbESwv`=OyS#B7&bT zZXuG(NIe-9!LJ9m;3S_V18;>)PZ_QJ9tuJ$0&f9$2Z3lgsTc7h_`TrfSRob=#UbJj z5Y>R_S`du{@8A|9tAf-MSrL5JY@6NfGl6ZI)+$hl1^J{+#H|nA&`G5tM)hT!D)gUwdK!jNQR2+$KD z$vzTvElJ*m=m|-(Unsf`O>TuwNZ=Nh^I#azhOnH!AnGdd%!`^|E|ks z@Wq3>bs^4gZiR`ryGUMxd6>q3cZYQ2p?#SueQbWg{&m%*k43y*5M3=R@JxLn#7)|; zoNQP@HRLE89!PH3@!p&7P1&)pe@8{DHlV_N$LCs)%3eVYxtaUH|N-n{J6d@T>qyJ(0 zdB_gWRnCr9ZNg8_wM~VDyYbG07_~4g~v-$NN&7l>!7YRXQ z2sepu@MRsRdYk1^xQX1TY!UmX@%1oAv%6TEv@X`mJPx;)&f|OPij;$ons83s{5Ux1 z41E*u;)J5`dVzy?o7k!q9pwWD!-`;%_a0DRc54YLH#Ffw#t09fS@1*Y%7q{LAnF6Z z5n!Ui3IjQ)ikLf4w9t|W6n&ylAg&LRN1sNxCu|HwPq!Qb!#aQ;1AK-eK0gw}?7#=_ zQOfX9+(E!+DB`1V7#$dj_!xwPJ`qkrQ(E4|Lwx4P@H1RIhBEw8;G^f}x0yLD@4OrtA>)W|%<#6@MYf``$zT{}22}Apf3&v_soDjM`V;Dp~xv8AR;T zoUFVIMc$%ii*oYf;^OjZkjS_h#{?0XQ)Ju>Wr7GvizH5*+KiWy#pmUtxW>(f#)-&W zBIMnv(|CW<8AROJY1RaZI21{ubDlKLYc>fV~3fTjJ|(qtrCT73_p!lL5R3NYr4kLkXJOP4w$8Dk!g zk0ayaW8>mt6Ckw2gqdnI#hzKNE?8e(CyS3IV@VVX%)Cg3h=CA2|;Z3{if&Yc|3&HgxM z>XXQo^^3GoFJlJ&gJd(tG4MZvb#MCCX zj_0@c7jP^@+9W}QAVV#B_FcE92kV5Bby}*3DhZ4X&JeYzIr1phtLd+N(lPy|`qMv8 zfhlxf`|tnI*zsRt6XFi_ffVgB2LVHHPZA~LXXAHRe&yh6dEx$sMs_m|+db8m>ezoW)2 z#A{Q~nis6&b5c5NbDhigXdPcM$E*lxQ6!temp!_guNK1k`&VF-z`VZ!lK_R5Y$zlH zYoD#Qxv+2#i|?@V4ncuI0xjah0JGFV}NeX1x2cbHfA8J##l23G5|P) zgN}b zT03sB%|Uh%8(JKM6-HR6JD^LxU~n$sg+N4LtHA0o5g2T4h=f-mPwrvfxIpIvtf{rJ z=Yb|>8!~B(T2{)4ZCGZas1b_{X)eHad2!OP)7#2(}K(3=x!Kfm&gr_yatKI%qZh1YS>IA7REs;zLHv zS6NQ(!*aE24V69?R!#{2I`ZMEyb?tp(=yrvIy=W9NEE+-#aM#Mh-9{ijRq-X??7|M zQF{j~&Htn>@=TnXXe;h<%(d4`cfI0{&z5)Yb7#3N6^DQMJgLfxm-iiTXB}KBib4;N zzu8Adtt9`w_7N}F^6UXvQ-Ib9EklvKudYWLI%M@iR#9Epd9~zmY3LV=R4Qxd90-l5h@Jfm4LJxZ4hYwgl=8pG0$KpjDB+(=qK2{+= z>?D<|QIDEe>{%^3v!jOq0rX8J{v>9rtqpQ`hDG06>WG?aN%K@d_~?6G`%{5H+Yory z!m`y}jCsx!$T1AQV7~DU0Q1c%u^wzU7&6eL$A+5iJ);I1lW}m|?cZl*#DvQPjDe=F zVygT|1B66?wh;TP5$#wmww(W2U~!)8MqUAl;gLTOSrf zI^YI~IziE9y3_+9q0Hf=nr8QKt^{&%ObeHgZ#&M1M;#_1B)9=`rtg`+aZw-X<$J{5 zje5o(mpSu|4}pVODsw}R-V@AHlrvi%-{vzm>H`n9jEnkD`QxJwj2IjB@Iik$XqsF&^pt& z8M~`Cn#D0%sEwl~UMm|ISDijCFppEuU z`|2&yUE8>ivM>d+9AFi>FJ&h-Yn>GmY8@sHKera+`is!&kQOm8MdW6$w>elNz5WB& zdg=0axo(g{6kMQ8#>n(t9}_Va3~z**NFa`0dS1fYEyi#ax0AOt8}3{y29xN1Ggqi9VaBn%Vm%$nEt6I{DF zlM05@^KbErL>?5qO5>8roNws`8OSaA1IE?&d7Tu<5OD31>01!RUV*VxkZd|GD&Ih< zZ9GgHBbp9UU|%K1+E@Fr7R(=a&%lbYK9Wtclt2B~?^L81|c8 z_BXri|IK#U9B672?6RwI|L>sN9A}%2+U2+Kp>$F%%Bfdy&gsNw_pUsVQKnJ~@>QZw zeK^)i$wE2Ra$el1Ba|N`G=4W%0d4j-8}5JJhKrW8oTgpmf{pU@ws~0XDlDo)oV%83 zbfqpV1gmv5+Dl(Rn~&91Yv^sfqh|6^2CR>*srV(k0!+yz>at=wG`JaE%hMF-@)rw! z$i7VPza8DqU%S4vFnyd|9c}G*tz$CkZYWz{u_gg**;S==uHE|8`G8nygLup0L-NOf?Y(@(d-B|54>#IxYCC<`{yfsy&h3NM9 zHKm0}4(+#h?j4}Z0!k!r%&ksid39+aT}Vz3XQ3g%(R<6(6-9Zag-e$$aUCUaog#1@ zASi~z4X{N34iKQT1I`uSyXuc!T)w*yJ#N+7xs}~{BEWeVfH?;MJbD-P#HH|YtLNiZ z+sCcW|IgX?A=~K91JHLw9)=D8KBQiCy@#JRV_z>{Z}p7eXUu9L#D50vogOgV34xIe zjLX1ivGMggL4upoLe$Hnz+`XXr-{Jx3V61GXC+AMz-_Ye(@5Zd3GPlCzo(rS!GC%| z3n8f^^_l@IKaB#04t5rBG$64LByM^~@E6AGRc5%e3pN2{q=IKZUq1*T;$Zz3e*+r@ zU{3*eF7QwD^*$hv$LUpla4!k+CxI_eLtu7bjO-x9-^0#I=Eg@uj%-+LiDLvx_Z;32D0!0k}ZPG@1vS;>_ z{VX}K_bcr^0$YsuAYwPs>?+TA&S`-y+L0F9PemOydLAJa=6(?w&v{Q^5h!Dm?~m!Y*pV?j&}k=h>&x)luSj&rOefp2Wdy1}`B7I~^g$MrWoKbWP= zSM7jp5y@qRB%3W<^>C{-Lf9qZwg%;{0mX$O!TrR0`dfi#6^MH-I`eJvH0v4e?%;ma zKu@r;Om)yI$VlnNzvl)@`c=2nB+B)w(^kQfm2D?hb~sJ@3s?7@Slv%vXRWlK5HzH8 zSS3R}Dg8>5BG@jE*<%wdoYNr>J%(7Fwqo9&HNtrRznVYQC4-k+YFV8fw#+KN6~emk z2=e;Y$a@To`=mnV9U`{d;I0d{le}BV>u=`o@%bpg`DKrrkVu#JCzD5z$W2>_R=)te zPAoVkkJ9!6tG+j+S)Ykmna8YAM#O6E4KeB$A=aX@y;@(0cBk)pmB)-h2s`>)?jJ3P zb)gIbL@J$IEQy<0rHFNej2EzgNIodZAaKh(3lm z{U;Ge5k_BJ$S8*kgVX2I$@2d6S2+Z?gy6znkGo$jS27JHL4ia!waw$Aj&7DEjJJI8%qi6BGZG`0Syix91#+n-qV@y#GkH@p<#s z7c5)%*tfpu*t%k1;QGbY=ljlF8qRRve0ewQADQ&0xFbhk<488^56LrN(@4Y2{;&4M zUf*~9-8Zu;V!wK?ywx$S0&O1&dTgCxNkR0Fn+<3a3G5xgwwp!USD?KqADtPxbY>vK zefaV|6yp9lhh=Cl%3EDYhf|J{Nk@-ln~$2e|H-obn0@@;e3%3Y2MWboOZ|xPBe*9-dKI;ky#O-PEaC?6Au}7jnvHyxs@vM; zMn)Mv|FUrvzh2FLDN>JhY6k`zuLSm}y498jGD>Rq#6Z)1a6q%ymj$lwbOO6cyL!PD z>4$iBa3zUf`m?DqME?k8__9&Xj}=+Wc)OntyQFRoHh>39GsXiC)M0`olP-laZC}Ob9BiNEC z5GLuctR#MJ2>5RVc2Q&J9RAvFX&aAhs}R>aSU7n64sLXN2@7b}3qwRExY(+TQf;+H zsb=RBHZG@Bz*6;KY{>9Z4h!;f53FHEa2p^KMW6Nt!~KVRI2PxYp!8%l59G=@IGL~H zOZnXFWk?Hkh#Yfn6_R)Ot%V>4GDMgdtdSj>qM6z z5HI~F191oB8VEUwUs3Qb#j}=|1>GdNA(qKVm}o%4dy%l!9|`YC1L4LTBy9FT!mFf6 zI2s9e(!$+z$di!pZCW^wU%{-)s0rs@H9wBE*=p-0#9H~xn8kWYhFp-Qg}g%kZ@?~J zKTfHSC-e^iz>ADB=%aMuQFngUrV&fs{pE81Oq`Y0itjw>%TjSvLg^%pT8K}oQpe!p zlfENhFnPj)tR}j}@mNPNPV|UzzMlAL2WBkisyNz;cntd%o=8(6?C|^gjM>88XmDbW zJcz@7lAIOGX4BgiWV1)-+j&K`umyEtULNgncOLHK=he^~BFfgU*Tin9s9IlE2G2ZY zWmq)lGxJjcY3m10d03OK7c`87-0DihynoD<);IlbpQzV1|3Uue>dDcZ?~vFgBsLes zG+`h{A+Zi5b^(d~6^Y$KVvixQc_=g_ruF`DfE+%#uD`cYnsm8fYNFsfpULrE>dr@z z`=%V+(t#abwskPRWAQ$(sYY1S`_s)Zb?zYjzV+bFGWBHD&k!G@JPx29SX9pz_s2m$ z+DLE*+@2o@85FQQ60csu_80Jb!pgJ+XVU6hm(f+D*mX6Gt`-M5uWENw;?C}REKIB0 zw%vUghl_pKWbK~!#f)V9W1Y_;s>Rsrp5i#3=zAnK+JlC_!z4nY&6AKRJ-NT`oYF3!jo(( zBHL8E@supJU{JDokhS#s4vP?X3yE(O-R$A=zZLcS66}CBIGj*vExOM+e1-4$*mMyE zMa1@)8mTowzEe7vc;)w6M6k2cK_mun+XDSHhlRI@#X@*wnrv!(loP?tVCz)`cYme#sTe#yUqwJqR^#+y4ZXgu` zQkmJBKbp3d`+O8m$b6ay8y$0@w4^Vyg8g*j3jTSvAZi)Znx)sj!2DkFvA6Nl-O6>7 z#QD2T!JQ&Y)3!IAdab4&@ema39(-FIJktrRtX2`=E0CN$kfg{jn!7ry0~9L%x{tEDWbT+ubh~JUJ-JH{9lkU;qxo*}(y} zwhDe(dZ%UT5UM@)K>QgG0`jeZ#XT^iQTC}lLZ`%+^`Z9I9?M!a32F9#o9vQkwTgV# zUWr?`LwjisXNhGb+T5Ew{PfIj3fs^5lxiR}Tg>mtZf9u1s|D{!xlvW!T?0PsmvK2M zV$aKdO7)~V*Ki9Ok;mVNEk4b1E(s=naUpT0VBRYsz0~bjLIk)VHvPfJ8mDFmJaCTH z;jERb%ll4Sg@)ZOcqJs#Dp-~{HvF2R?l{Z!S9PNiZoVRxX@xLb zRCWgV$$VZ;_Q@A5i?l!Wz{gqo`DZu_bBmx{IVkZG5L#e)=7Gu#K?|2-r35EWq#s?$ zT5ozuaHsu)$>l&-zx4U!9am3~B}J(C1W5v&*mxSXA!D=(+E98t3$k^1vG{^$IL3A# z7awe)pdgO3xH*ZeO5N03)r3!~`*1PmB|T~N6v&ofTy_9!?eBI#kK8O56M;r|y3z2R zjV96>V->gRrb6Y+gvyC=3q^t)es=)(U2(2uD%8)ZhgOh!&sS2R^`}5~YThcXCy4=}^>hv`dI5SiQ~+L&AMB!0iXDyWeE zU3w0GqqEIwrhVyayasLdfPRwrvRKjYYqC*pLE7w~-oK;>a*Vj}8Tn%`+Ng%X;vzEd z3+i};=w=cc%I*lnmsHIw8)qxoR(*m|hgx~hq<&ws&ZmN4PePrUj9=_NpfZIkE>OAb z#glc!M>zD*RJp~$RrJSo%R~5q7M%e4opK*L^v`wdh-(xVdWJ*%GU(%vS*eAM2Xqc@ z1eeQ#?v(e0EpeUVR)omrrMslH#;_&*a#Fdoa=kMARiM)KWCT!Y=O-bTGG`cngh8+| zY8G}rlo^DY4b}X{kQP0RRYTeU*3rqjwkgU6oyW`R%XOc925SEJRE`7Dbx-A(3`xXo zq^zn2`V^h;8e#fYCb&2mHD8;Tf`I++r-xzxd(TJ9kKS$=MGzMw0`*+$0God$U!7;^^jq@!AZAB&lseN4dw_S<&6>rpS9ACh!N|YNSx9vv7;CBpYQOGf zK{xgXwz!J&4q>u{Ulq4FD&BnVYcuY{=aWlB9+OI;LS*w}O|fo`mCH9Yc{Nj%cBNh! zwXO#G^lmoH5=IR3`P>=xulnC^_onHPix!f@hC!~p0g9sCKSN5&H=z93qiX&~zqxLvi*qrbD>@n`?ZpRI1nzINcw$>xV{9>BPIJ?*UqQTbeZ?&tipL`}`y|8`~npovNo=7cVAa$zF|3WVFWEBo=5B(*BHD-OUo{ulAqwB*S^^fSxTk zS#5pLpl*d7r>0gxbNN1FmT9X*kR{;40T!Us9rnib9}T%tCmsoqru zd_)Dtn56=G{&MsE5V!kaav%*<;YZW_J_*mk-2!E&G--I~N}1Jy21>c7vkE)f?^fYH zJyV4(zo^26?XM-k)DiQ7Dm)mlN-D0%G}IymAGM$ocf4l_xabIs(L^8(KAEnSL&xlS za3oaC_nb?2_Tk6mlx|_aOq*?AT-5i$DvBG2`uByM1}$rQTLH;RJz9L!#!V*(ON@2q z>JI3y;0cayNQ*`rQbl`AHqycyw9o|>OU0d{R~{j^uB54{$w{^6RDnM)%donH{V4INZ!(-bNYpk*i)f&-5D(br_=*fWf_E8uOWS^Rs$-8FiQ#l77 zM&rd$fY|=HJ9Nrs?Hd))e6x}`H*(6hYrN%G*bDGaN8{*ZMRQv7Pz9Q?6eet{r>Q?) z6%VA3Oq(;y)~RjwVJk2>sWp5Or}yNLr;M}k-1lVHw^Pg0^BUzNZhV^;UZ#V=A^A?4 zk{v-0LwO!2MK=rg(gTYE`XXTg|96*{@8wjXGA94%h=HDz;OyrNlFG`IcL*)}nKret z8Knt(6b5lpcv;jUZCm_EfDb*7lm1@MX1i_~Qf?K~OzZFUvigUsMGOiLPDry}i$^Vb;W2p*VSx#%7EMr_Ps=qrtk}ID8ja|TJhV^! zq_s@{QLyV#WMtOi%g?585BOZ(b}I{}V-Cl@i))QKD*EvA6-Ktz3#NO6UT@mbX)6e> z+q&KTA#U68Iin0+OHc&Yj>DRZ$BaV{JysOwmgi%zJY;=XHvsD^aX4;&)xDQ6g!KhH z>J^t<{merjcx@p%tTpV&PHVvEjL|L|v|#&ryivxmjG02VpUisqz@x7u&x9#nwEgvf zkVN9qsf5;tZG#!>Z9~Y4uC^doT15NLKmXiHeYJR)U_VdtZsoh((i?QbIE#C=cGiR1 zS;?jxKbV1M|KN*#_?+5R_d0YzQ1=>xcqQgeTZ~~&hwV(RF<-3G_4T1%W7%LKJkM<~ zvrejDJgEzU@r2^l!gwN>BRoI2lIN)sI3GGPG}fBwX0=&W-1`LGGn*q$p<6WQmR#Nj z{z*|!<2&%jJ;n_>nNe1;&eaP#&i0k{cYee#NDep6Jhh-W=%RG8ekB*qTqlIrB7Noi zip2qhEMLWkM{$i~jRMN^s(4FuvTRopDsTUFjoCUsc&5P61IOM(`k7*ofBALsBD!wA z9Ag-R^bBf5cE6D)UOEi;d54$SuoN*S4l|(a(X5JR437qeR!|FfrJg>O|$u_^J z2;$$WrRxJcgTOP9=g$tqF3&gHV%-u2&Vm}8yhU4OZN|g3MDFdTuuh4LYo(iP?rmO} zc{Qv>`s1t|_FCxS`cW5o$uJL||D6-oxWBFcDRGI>J7**60QX4XNyAt_pHs7$Rry6x zv!6h%b4`?UJ-K#g!8U+W{!4{&u?SZGm!iiCD9ja1FYw)(ImpuaI0E*XwESl6EvM|s1l%uG(Z zvU>II?n_Ly|7LI4wfEv$IIH#r9#;`CXz4$DpPZ4qozaZ{j+E9+I;k`CL#Mzn2sDoh zP%eS{sOl3J8t6xuOEbHVp=Xyg4PJczXnVEZk^Zsv_2WyR-J{;u!u{J9)$<<`ElA>9 z-}j13dVD{pL>?)Ir3l9#A&Y;2hNf85mQGDatj~cZ|2wb@OMq1&=Jy_Xerz)xiA{d^ z1G<@Nz)z!4JpuK`;yca9F5#kwVaH^#D2fYt4-db$j|_Nb3fa0&?KdMV^pw|2H8_5@ zF3Oo9d)MSUU6(tukzRBmoQp0-&Kj8eE^$uubI2uT-@SXnAol~Hikmn~&@8~qW4i2( zdbih`aHyH7Zd1BV@MJ;mX@@SX)xo-kR*_`bGkxf;Ft}@9{o>JvQ7G<9?4hhD zoWtww4 z@KrA1p!$4ARe*`#BIR6r2%kX*tGfxKd%l~&Il3$7a#`{lD8~(^CL9{|F-{i8|0x~S z?|T8};TGVD7P+!r{7$fd_4X->n1NZbS!8dFJPW4fQ>Rq;Ww4AC;N;9DFoXN-qrY}`am{(J>AjU;TL#Gt-V(j z(qDH~q1$RmKRyEbjuF;^D|oZOq~GXzPUX~9PPjbca`>Lh0i>SX-a zys~5#w9e!3gQT~3%*)oDh_T(TJ)xG*Kp8h)(|)I>J+YvvI(u;p(sYCcS$DfW7qX7^ z=$&5wz<>+++I!UXQAJ1cK~ed1P*jntT?jMBz!EFZ=JkcjqmUX7qF3eLAM`hD5$KmU zR5~-!c!FxMgcM{ycOpgsJ1DYsDZj|Xj0idtS@S`)HQC!zk!k}-HKW@qRH|EAPt*hk z^cDP5)rJaC9ZE)zh%4I`GP42f1>IckYho28mQZMA|&khzLP7AOZ7S)i^W za}_%bS)d#SWGOSz7ASu(u`NH4MjLj6u1bwh&9p5*GId+E^A8E;NWVI{8;@cAI1ty; z&3&xhbSLfFj+us1&aJMZOs~^PhXil>fc*}dC~ei(=|E+QeEICqGYm~no6 zSTbZ@*{(oj;FgIJMjQJJ#O^;_UZRlOJyU(fvB4eF2?ONZ7z%bh)djq#fxT zAGzby?)F9$>97)IRG0@O(3pXQ2cnR0h#Q2geHjT?MeaPcJO4?i$+GJ{r}9yIkymHr zGpBaryCIzAy~~{?STP+k(-7-+xNGn5UZ-uea|P08qX#HY+>fFdnU12EkD?fvHhu0P z!HfVqg!2kgzCTAb`C;xJ4^ZB;0ts(f>q^oUVQkIc0u|Zrd@_ zt=Vaom7k;wB^N~@^Mw4d7wfi^1zn1Pa1_6H`wnt`KMLoiKnTbBVaE-~`Bg~yhdn_b z<2v8Xp!`fQ1RJ`M^2A{k2!9y}%Bw#`RrL151Z2xj6tcMr)x)7!$QJgeC|kNyr_Vbi z*gWmkQ@f=%QRO#2ibB4CLN;$czqxGs>RHY@)-?$Nl>QB=+W&{%u!kG(AQ}4;C^sn5 zc(GuKRPWq15wx6cjAp%@gc27E=v!3C-W|>}I7{j_eQ6cYrsondvVfP^Xe)CF*9zuo z3f5ww25v(kaC7JoEcvJv%R|{)LE#ZGs*t8r1SG^ZkGuRaFjC7dJ zN@M6)HU(vV4LSKPeM<=!sht&X{H)+z?eny~`=%iBZv%1NYeWO5cFX4*P*wjvDD#`H zBF#Cf3bJbleTyc6k8!u^;D*T^RB4hJqgfM&rD1(ORu^g(n5{0Q(50qO@7 zj(T7_AOaLeG+d)kC%W17LGtM10Rjm3gQ3V2&LIFJ1o$z)XDH$$+>adKgZC(9_%*;s zxE~Bfd=w6&149uX;ePA_`F4i0e&X%8Oq2Hxx!&6!v|3e z;hCThqKL0`xzRQAWBAD~9zz*^j*HJwhOYsB1pF9^_#C)?+Qnxm!$0KWGnCyl?EBd>GGGnA3v1AG{gForVn?Z8Lvi=mAC zL6k;*4 zm_Yv(e-6l_aG4Jy{~O<#BfsUtKhK9Os6VKGK_7&>6%73)%w3N}!8NlL5&?3S7L?ZH z0e%v~ampiO<9^jo790Poet_2WtA6pZvwy?+Vld7AQ#fC<>C<21kh|i@yyCo7S+ayQ z*BdmPFT6o4fJdtaELhiZHky<63y$*~Se^#X3PLf%U9(-B4Hb8JDNNviLR(l`u?8S% z%aLq~+!g6~e$p~H9|te#0gXi(l zviP*T@r5djmrvj%xy~g5Hl52gE>I^bURILp5F<#rT;ru^c)F}4*NI1va=FG!(J*&e zvL%o;OUC)c<*h~PE(4Ec<2+3j(!&# zstbAOU1)izPhON>vanY9KnkECI?=6j@>ay5?^qrP$Pz$e%mLIDBuL0)z+~Y0mZaAv zO26uzG@LjFO(&W9`L1)(Jq{L|JwB0_`J0>u1)f#fHYlNUKCqYQ5dTs zoq&G`yRWFKCU!$?ZCq)5oRi8D#~+tI?-7ElHAOILF<^w6^>Em{m1Bl<{O-MSVnohs-)B%&BfM*C<$Ykl=n_UN{lk1Z6 z$~TnNlxoU0L6=jo0WJ{aVr^mqQv6ykpEBOFIIwT{}g|*|9=&K(ZEl4qA&J3(HGMbn@#T1eieOj{=5vp zcGOtO9+f{=-IW{Lw)6{!4}W+CH@#TiuI5<98KU~|mdu=^%bpKk+;%4~t zZ6&Wf@m=XV0Khn$&_Wa<0LI{)snw?om%o-Z^_e*PYy9cH2N3|{@B;{du`4cS4)=Kg zU`&^;J-BK|S^W%lkM`x&rOM}8W<0&}jhGf;b&V{p<%sRU5B&*PIHSBIgu z1W6_E7K%%RP-$O6aU!Su5#uj9D6gL*?tDndxtcHD$>D^icN(A!f5Tnm{X4$H={MX( z^bRT)SR(!Yr{8cFf5Tn;?Y&h0{Jm8FJGhIxT)2xxfsM{tixYRTA3@cjj}v!stS`b{ z+)u)qANsg(7t1E#E)Gnlc>8;`p<_I8B3NQ}o_ ze02;0A>b|oNFb~PfsukTvk~s%+PesZ2zPP$1l+|{Xq^~taN#aq=pmf&Yfjw7y%TU3 z501xO92+&@E^ZqWHNst_^X)F~V*Ui&#W7JM+{Lj`1McFur~!9zOw5%S!*u8*)T z54vxkIUaWrqINE`12iJwE{=^F;VzCvn*`iNxF9St0C7th3u$6YL*fV)VS z7sAV$9?caFzh+&1QRgu6(M$6aJiz+E&>z+LRV3wuc8E@~#=E<)_1MTT$}>DZBp z0dfZ6E<$aD$^f+)kTwzS;@Ikha2Lm_N8>Jzsf{%5;^Dgr(71~g6L1$V^^lALH16V& z3Al?@6L1%=1U5=BEz~n7?qZY^cd_HY5O?te*jk|lKokfIaZxebd|RYK3!_lcF+v=E zx>D5uIEP?Sc77C*Il@D67>j~Sx@S-|C!CcB?E@JINef&A@YpIml!&n?a5FL=$!~Be z+M0s`1}sF!9L;68hN^(X01I(f9&bI#qp(Q0a>-mw?VKRf%-a!);RJ|4sUZ-^&EFF5 zvI*J@0?9xikR@TQR(NNx1}y zZS`U`d;+@<-lnks4opQ;|GhC4aZkR8w=axZYf_c~rXtIY=U$rp8>ZrK@4EYc;9Ymi zp;=GBR9uDoUn5a-8}q(98dEXnpJ6Jx;j+aAVy>QA`hob&4FR%^{)Vaee>bM06Uq-( zD-i(WZ=j0ky)pkypo;%qc#0gfc?mwGUNzLi?}_RFT)}ogOFS71c!S4)dlT>!2N44S zEINQuk029)(Fg#G+Oc?wpM$3nJhNSRih!+1<0*ate85(u@f7`j6;H7PBrX7;A;MGa zbm1wUoa4k(v@&>#Upes<8xhVT;30gjX^eV#Eg!`#!)^>|^EAc#4MTODu$^ctq>jJr++<6r1cFYhn3Y_5PkK zVrV=?tNwMeZn`;!Orm(Q{>M!%EY_Rr?k`e9UciZv)^d4)^5tpAalW zc!~}^pcn1|JViXF4L}nSo?djq!L4xI{RV~(>xx#2mfAT>O}b2beTbtW#039t(Pmb(of8WGX8rWGv0vcO-!|vJ ze!8Z{!L8A9Ybag?#j7DAbnZu+(OWt9ezjxYlW+8&XqkDvtir#3>e`;E6|8AhY13*i z`_pKP32(tVR;Rx1nHv4$+sx}cN4CCzAQMl1cF}Qu z;LM*ta}2}FJg;U1J+h9684GU+ zt?+M&z19=^HEY&)X|rzWXZ^ir)=#X2G(|#&Az`sCVHtb&a>eWiVV~Q-GnS%1U@1o6 z{G5AWDV6}1;;KIMzIvD7%W8^UXjL9tYfegJ4dk;w=h_W!;=^+Max($ z#X2t*!crUw<{&IZ$80{rQnaoU0Wuw>{|ljl5^!R?*@6CNuoUZQ1jXSr5<5VsT1;11eD!D*Rn0?wICHz6!VJDk<=C_z|?2LMYE z)l!6|_!eL((r&;~d`oVDb2y%lA}mD|f}N-X9fCQB5SF3^LR%*qfIz%ha8%}iTm>N~ z@yp;e3r`1UZ*CH18cPv`i3TLR7YSSak?@{05C$wo5H@=t;Z;&39F0Qmq=mcbkS8JG z+q7^Vzl?4~u6BeLm`1S_x9m4ZxmStZWPBVR88I~hdt704>DRCnOxzL&YvJM zgX|?SQY-`BfK_1)yecXi3_R(p1wci#8I^}#Z#B6&0bUp5gN3*FXbJx1|KMXE7K1!| z5SAi3EAW35OR@gbwx-$f6v?pCHXmEtw=t{f2`)CO{KPhxDg%DvPLIaej-D*ebn#Kjqje&F;zw@J4Fn_n#DuGt z9B&se_=&l_=#{_(uJS+>L`BVZ6|)>%VY2p9TV^q+sEK1zIHGC#GDEEi39%vKe2XD zpH)WVCk6w4;>cb6#AgwHqK?5&^xZLFqM;b?g`fDDW7Y)xM2A<}J@6ADCjA)vL<7m- zClY|4_}cNyZ#(f5F$OM!sUr&DGVDHW2nz;6d|CuBtLox}&9yXb<84)oo3NGjb5OI%4En2Gy zi=su0NU365vjI_2<65k?4K6KhZEvi$MQgnYprw}DXw^$C?G1{S_R^MG>!sG(-{(w- z;{D$H{XYLZ&+~eIujU1r%$d)e^Eun+Y%}iz{6xi2exlIBPwbt=yJnc#*Mk8+QT1>5 ziL73WT#JM&iXZS3+o6m7Kl2kIM-Bl$F%|I>U;KCcM6)sYzwi_NSbk!_P=4YmZamY-;OaR@)LpFh#fPi#c|#C(>YxW>az?B^H$3qSF;ho2}M!cRn{2l$CwJp9C6 zL-~nNAAz4Z{lD-NPdvg;G^Ta_D?jlz%TGN02tSeFW=wm8pSYgoCrY>727Y3D)+7AH z{Pj75I76#=eo6C>?@Zg?|H@DN!oyEY1%9G3uBrm@6Px~5_=%{}{7?KuW!%_2;3vL__=)LI zTmE}~Vzir|*zV>hCbRs+Z8KSZ;*@v4%=PdSo2tSF`H8bA;3x8cpE!#Gej?AqPn05l zVhHdPHzff-u>tsr?<0O9^MIe2`zSxLX$U`Y4OvxT`Gn5W4!35$8%+fl7Y-LpP`;p> zJ(Z4c2m~C<`+zmWBKYxV?RDqq)8{qTLb9xhy!wxDfRl_JY5aA(;9`WHK8>(~_GNAc z;t_o)5o85$9T6d{p8m>IK+0vW!=2wt&uWbbESD9&KTFZ24gh!q zEjU6^zY}c<`gk&58oNVy>kg>dx#1A!pKvT#e~1%t3V)Zy86H3^#7dO_*KgBM_Ysj% zS}x@z0iZ2=I2lh>?XgPu@o|&)arF|p37PHO2mn_$b0-kFH9SM708v)|h8x3x;$RV& zG7;0{lmvhqxA9@TY~UoKQfUi5?%n=8rfHVhA{2BOkk1hF0ho7&FTZev_UpaUj5wQD z8}$2J1aK#TGQ>QN+KSOuo#Li+c3e}~$T%sR<`yM`YdVqwl%I87>_SW-KgbfFvX9-# zY~?$=&L6hsB(7kwhTf1rg2!GLL#C7<9>qGX0MaSmoEZXWi&J%im6R~3SIS~F`6f+Xf5NMf@b z3PgRTR=;LM)ApTgoyi2QqbYO20WRQ~A|Qi|k+%`~Z{}gU&vWdN9z0@3Wh4x)Mj*`J zVTDld{W?mIYrL$!7~iz((M`?-{Rrm>Zy=M50KGXQau2}mUHAx{h8FHVC4ty+fi+>y zj7O}A5dOh_eiPFi<1YRmYF@DuUjiU9S$W#+RQK17ujtg%=y+EI)QF&&Y-FLLZwcVk z99dkuB|JQ?Ufx>*aITtp12xfXRNmeRz}qI<_N)t&i?fxZTg|wEg)K!kZ&w1Qzm1Av zp6uo3&xY)$c~Ah=!b6m0B+F-;s%CzKfB{vL1kAbQq_3=#lt;Y{89dVrgj{m@N~uXK zb56ab9IDF9G~TUwWrltqeT^yH!FW|4ipfLlncA>ggs{Gep*o=%TkV+A1K_}hEsJ%& z;{d>S^I)(&8%nC}pS@nm+kuUFB&`~s)uV3Kr^iBhEvQjU~P~4;A6#eo%xv3?q3lz)3_!*czE4G{20Bur*dezvwQ)j0nOm1^f;>eS`!7Y97CqMJ3z=Msitt~YLWedh)aH-s7>8y3mGj?r^50i0!&nV+aT1Vc zPc+s1NMsebK1NFMy2TtJQMA=j$C)1={qhw~GJtGQk0pW^K%EUY`d+#)=2Ju)l>u$E zy!!yyE33d=k!C-rNLo=zjUQ;S7HM%@Ap**c;(Noi4uA|QzUO4PkA}_sW3Y>bH2}2h z%S`0OS^ZG$@+Xh(Hu>2A1PB{=Cih$rS>n-1lHgwmrE zeTYcD#i2c!Vf~!1_AubZOX0UlU*bfs@a87A^L`n0x<|assUD?oQojJWn*s$J*<1%P zHjfB+r#fV8g;r`iV0}RoEhv1YZIfYftuL2{D{cKglhtn)60jeHELZnVhj-~Iuxm;J zK_P=H5frkxDCjmzcU&Z1s`shVFA||r)6C&kk7hBS^_Rt<(YO4kg_~wkT{60h1MLO& z7rU;11{h_N*Hce(!JM6xSzZGZww{QOyyI;??FmB}SRkW+Lj`E=azCJE?c93g1tM~5Gp-^ znxTO_MXhys{L`pmkpf{)E6wWNxhFo>!shWfuVp2L{ybSjECG18Pk!~n!*gMp_CAV} z;qQoYxtgj|laBn}H_QxMJo^K}rC@x~Ep*-VHn-z10rj#|)0aGnTESW{xzJ)JObs`! zwvJ^vfTa|`t(<%WRF>SJEc;Q7mR}Pe;NWf)luOLalpqw;47CI*jY{$zBUwY1_}i|S z^%nqhXHsrBdiium(*7;jiXmZZSCP%e5}1}38$ zDz6;YS+L2`F&G!ewk>-)I{fyxG9O8urg665k+$G)va%kZ-N1eJDCb!RzV}5yshQ8c zfaRVii`->TChnl6O^Wt(#yBNnX~-p6ME+S$Kr1H7&OufKX6yYs{Eip{NAsaQ(SHK% z2^V%jSEw}Yt1Xhx#uxM#N>SH>?Xk^Jjxu_sMBisEvo0e2!7Z)ho3a$O*x293z}H{L zw9{iX^Pccn!OF2q3v=Gdk+%Bk%f{VL`ot;ul>!EI>xBKjhxZ}$+w?K5O$gtH@Sbap z8DT8i%l?FZ2!`E15C>RmS+Y$~?oOl}1#o2s{5N5HhuytKuG_u!Iuu$&yN;B60w zZb*FrwaiH38{h3rP)-DsRUKh(4ebQ>Wk$Pkjb4^ucZa9)I>!42ss_9Yu)udIOSURt zuN=bQ%0IyrHdoO;^D+vwa8Vgojv9&S?ykg^@b?P8N-Ra)8PZ#|aUU3enh!Qo^Taw{##d*RHqKsogNmYq}eEX8j$I*!r&}$W(0S0-$+^vrd;ehb})g zG&P+o9B)0&reg z-$o{2X(V(G!$!y*UY{Pe?&+>aEf_C29gV38PE$`8+|>_vbw}Qld3xJT6ON6X@J)mAk+pcSKz^e1kysW90Q6nGEq}X9i50%)~nnuzh$j z`ojga+nLRu9|#~3nOb!h+Ky7RQvwE?;_*L7V>Q$NopbD9Fe_mB4Ft*`2wZaubQ9{g zr6<^S!f?`SSuk`JU>l?6zG)A}&!v-lI%dE7jHfzYq3>7D{zh2%4PVxIqVdM_tM*`{ z+W#OAa=!i?u%7oIZjCWBqpZFpdC>58aIzvNN9@cfIu+E&|CAaI>|v$57gQO%{|MVM z(PKz7u&_)vscZohWRaq z&!NC2AKh;7TjWHw!vS)yExn6uKAgYiHy^ zpdx@{>-3s@EE4h$fi+htY8@2Yd|woGZ7WZr5PG%>@gna$$buD8_jVWQoUV~MlY7u0 zk$%SU>r_;c45GyKc@He&cM9hG@A>N=2L~&c=TM7pDX7UmjWquhW>Vj)y*i;4z~-Yo z#rBRubwW6ucb4M({3aI2dW%&%q?xM?4%8FW5Ty}Zy|oIZxYE{&Xvd2=ah!#KKV0g) zq7XK~0=M?a!DPR;nB?P*A{y}2k&9s`0Yd}SxqEYU8&||F4OyBQM~UwHuqap)8Xj*6 z*x@3x0@8V`wQn*k;Jhfm!Q(ae1-krCOks5ql7P3=%7o5 zII;S;rKqOgbH(&_=b;wK;7$rbXerMzD(8XdAct~gL-jcsH6@TDOY99Wb+uK*CC$MAR|!&Bp@ zhd9lm?!vYQ&W(9rBZbt_U?TT*ZiJDCVh%n$?j;-aX8x_|$sII3**+-#Due{Dj2aH` z@%aRz-MYMw6H7zd4h+xJG%Euy>d2_|V)W5Nj9z}VmK>B`Dx!A9-vh=XGT#Z1h+j)Lp99^_wIpm6 zwjrA1BZ)XB)U8@SsFuDt?-EkY9)xl=!HHDsIhgS3u_k-Of2-P|VMw($q}utGgaMx?=?WN!$Rj^Dwu5$__}9q%||BcesL0Y4CqTH^LloeUn1m>uU%fieDYNwbVy zGMkC~IST&F(2r%8p-T$(p+qQSWy+CE=Pb~9(+A#*jj%yl>(@x1{(TTcK%@UDJ`QpJ zn>Q>DDkk8dbJ_3)0K@%=;@U~F@1rp1tUsaK8z8}TlZv1~x8F)*ia z+o+m9+|g;|u?xh*rD&bH)WNO=i}+}%dWC{ui=0t{PD9$*I?L25X^40#iF`hyLCf5F zA9uB7eW1^<)p;aawL6k5S0H`1Dv^?FNu+Q`5q%V3ox|8b2iRMBftd(dFqsXdIvG`D z)eHJdp!0|9E%!>O4gesgazBQ+9|}R`pZ<(l0T|6{K8j9P3IS20UeWge05MQ}=uT&{ zy%gP|&oQDZkQRzCi`vi8E!>ybTl!PcEww&W1jq$<6gSV2 zb%$3xioiV<+&xE+yLnLFbM&|$1b4*n@fhqu zdfYjX*2sU)(c|s|?ueb|IeOgX;Ewe796j!{z#ZkG=g7K4I+TEWF1UM+9{INh{qY<< z?jXuC*E~n$t{ZeiEH=--$31<}&2#j)dl-kFqsLtf^3m|`IU;v>7w1pbA*2I(Y01Ml z^c+$8Aa@Vr&~x;-KVTd}1!tLugYq86q37t49|<-Bl@rg=TzXZ85l`y5%`~+&zp#&(Y)VVH|pn$Q{)q z5982tWZfZL5982t^!W27go|ER^Bg_y9>$^P=<(+_kpGi)h+!Vaq37sHHxJ{`bM&N} zhjHjRdgMKfL(kD8?_nHzj;uWSka75*Scjgr8y$zT4*w^2E);^HtV56dpYBjO;PYoX z{P*b)2<2xe>kz%+4y?mMIo$RixrBeR4)d2Jx#?|5ipq-Rn(}1;m8y6IqL!pcSyBjW zvgE?DRYgxNS)6uBxFq>c*5RM5!#`PvQ)bOdM2NVu zH7w%rQP$zoKT(J9hVcJp)ZrsM!)N~QLkoeTh@gf4dicK#EgZ@#JpPyenO8`_WXS&# zuaKU?$=o5zLSj5j6MV;zjuX5o;REMB792-Uu+A)45v@MQvw1OvoEat+U_sAtqhVlNyhBe730 zZ_K~L{`HHx8J{1Wl5Z6fIW5iZH7I$}(j2Mz7F__JMWxz;g0;`WlC`Q`Zl_zMJR?!0 z*yXJ^nM{XF#RCVl_+ zA|CcS8BG){pRZ6PC=>;W@LxbQl}MG;Ci|^SMF|a`y&9f|to7v`BvQu|&*SqroR$&U zvu4c_e+#$H^Nm~Ev`ng`H`#yAVt~u25^`i5gLi1WNw3%Afq@RYZtFR+5;1G|%HN;UT}q!H2vX;nbR6|8HjTWuAjmDW{Q>$GY?hSRt%x2}q=TVttvrb)1N zpr(otR9osQ?R85U1l4N=>xjBFazUDfn`Y$(WX~-~qIksO+_usq#N^TW^UY15$M}&F zj<>h>G;hJinvVo#9d=k8CC%DPO@hyr^hpU5C-E?XAQ&Fc{1&BxPtVw$p&i@|c;398 zo6)SCu#1~v;!fz*4+Es!aqhVN#)+r0GVHCRk7uO=aPAOy(!G|6&ejR-S?T+;#x*O$ zo0Sn(Y?Et~o@V-Q`A)4kqa1)w!Sw-K{{ZGo(I+eDU6umKaLbdvaSGxugw+4g>pEDYqh5us#=l*NttcTWb+imvYzW>c*DVX{~}vtV0&wsTp<-r`u%_H)Y{% z`iOIl;$B(!MSa9obvWQH;VQNUBGFJ+0rk;Rr-ke<<*r>@SE&_L%LVX03CQ4dXJhzH z&9JK&&@sc$f>({ZqU+#Mb<8o$iX`VC#c zOS#NdT^ag08CwY}77=B1Ge#N3*&ksLTz@D8M=in44nBt@(Qi#ZlI7a?VMNlPVHrym z(bzJZgXZD|x|B|4mlEF(mIwC70viN>n7=`tNzbHA8ctTgS$)j8melhp8roXgLeIKn zYJBHyZ+xt>z1G_}R^@M6*+8o=@no(zGW(lZQnL>kM{4@@4wH-=zp91et5TJeF$rXf z6-w7Rb&FM84F21+xq@{z?)XxpRwr1i2J2(2BI;JJty^cWOK;$&>EO>Oet#}1#MNp+ zrBzVHfE5%}LeZoI)jIUI(jr-F6`()XvC1k~trk>MV4C^gDg+f)!5SI}z=8@mebk4W zk6yj`=+!&m!w|3T&?xi=Ufp^0-a8CZ;DK&;{>3W`>lKY;R>QZG51vnB#gd6j21i%aT)RrVo$?eR>8w>);BGy-fB!x!60wZsgwT$8wB_UYX5KJQO4O* zeLpp&e<~rI*py+lsQAEyeJ8#=)Y{$(^XTXU48ie_UOi#p%Wn-qQbwdQ+v{X*X<+Ak0CJY+sz^q#5uZV3Hwk=l^wV{`-HfB=}!_1^_g8?iJxU_QnS+iAVjN_+Ty*1J-! zrm;>5^KIy_ib+rAw`BSlK{xc*r@K>3nrepeA#}J0H2-yzms>aR5pbF2#T{6|H4S1u z!XK~~&nG+*`ng))fFYp=q`hQww$eOokiGb~xxB-}_&BBm&%pEUtx@vZ4~dhx&yIEL zM!R+U{U9M667lhkvkH0&@}E$ux;5{8 z>EfW~?%S!^qaL~a>?ZD>wGT0!w;%VhwxKLTxdvJGHx5_5u}(&?TLMD5{ZNB%nn;3y zfIk3n!aNZ+^mfxy;Ul+?`^O`?eR!2KRJYu}r9a~N9lr0T3=-B#20b6Apo7*+p*R@; zIj9yCS8Z%Gol$snv%ddHeQbgUx!8#}zML)p=R>4p?muHPPt<83!67D~dEao~b3;78 zHF=}zhlj*TisXxiYHp1H;^feXR{?QyXtHMladK#~|5RwhrVmM(@gJ!lN!XYjjz{9& z6l)Z_OVnV#EaZDNcD6o@-Fu|G@Ms+nIR{HcV@QCh(5Ll5zRygtn$HY-82xXTs;Hr< zclT3W)X>yReMPC1-+7om#ANQKg1(2yOKLN}5KDlP1BnlR4oUkgZpx6%)m;+$j%upG z_KeIuWeeie<^D5ttv5#EpfURJvJSl{?xZ;!22N1n!PMq}ldw%P!=fCa)?mPqY)NbP z!=xNFI)hxP&Al5Iqk&%#AdOt?)N&K|eFc{%g{LTV$OU9pM--G|JRQieA3OE!abt2R zmu4R&U|nl-`y$G;AOiw4{DVK=wi$CII(IQfF4CwAYi(Zu_!2bHAqOn$P?}HpL^ua8 z1{J>ajq;#?VVCv>70%C4--UA!VbDDQzI;m%D#vgdPN23TsHNebOqdtVt^*A!6Casy z7~|>SDh>aj%OOEyqQV zM4Xvtuf~TGKmE#upO40H8g3el_`*4O&{-U>g@-hdD`t>gd|CL!I1H!ZWKiav$MC@O zkNC6WGvTD|5<-y*!7#nR{l4uxEoZ_bM&ZA?_f;pqq3uzax^a5g4w66E=P5qe`od@y3`S0vidA$-^4x5MP)i z@s68%mY2n8z@@mHg{c@5t*f$~Rt< zZ_6CSmGfFh5}S+;4Hwg}E2==7omO(1NPiQRo~V zhGPn$3vcTVUmAdCn6uJNt@W8Y7zGQ~G^{3})9)U%q>!1zS{xCuOTtox7b|8AdoalF zSX&Q6&Gm!;CL6Rc=G1bl*4An1x{wZENuNd1t?(&V_+0Oo^s6K(R9nQ?Frbx1v}lGc zRcxGa$~eIZ;~(zCQ^tvCT+|;>r53C&W#=&9TUQ4-2d!EF@Z^C7PdEr!{D}q{qE9)pL36vHT)}>md2ryvhYrkUxKNO#jbwOc9Q>YSr>$H0AEWlg^znf6kEYq};o{ zA%O=wEx}euuvJlcW#Ot-WrKT;q3ac}VVuXK%5~Zj*b=F_+edJ&_uGLSMRIGa%Hgig4e+}+wx5mA=jJ}7iLoabVKV4L+sc^d^hleZK zDEu{*6;BscE@5?AUcPh{@_WgWHSA*4`0-0Lm8(`RFG6eEYgkq*tZ!E?hh-{s>(GSI zu3EFa^8Wz7G%qVRd+w6T3QhT%8ScY;_hF9vz+z12EXSo(wK+aT$NP8O;bFNYW$1)lEKZ#R;|(|K3!h1s;mskV_8|LrfezLj%=2e1szBO z;{rlx?vXPD2QfiSzyYOx1K0jmf^z{m0L7I00~~a11V;l7*}3(=!59HlQaizs`9%|L z;6TMB87LlHoCfYd5Y>RY18&+6H|gOwo@8JEx5{aR-(HdR^vsMTgR0j-Wa&ae%lZ@p(*>7%;5Qe3yWqDCVloay`w1bgfrzO{h5>o5a)3>Gfass|Jq|Uue)+eTKOB_7ALXwD{ zI(YUsvLikHGmm5^*#VO1Y>P2)*=9V&t9VB;R*$PFLO!5IODRc5uR6knvwLiBR6PfLaN0g;&Kj{D7 z(8IqJ)bK7XFSd z-M0fg!v~yjzp!9GILiFOM%44*ZcE#IVXP8F;*P%VmBrDtDIHu6 ze>y+(Z5O^F3qE2O9?=C?!Z-Y>g|EUN{J_{B?5W#*@T&a+9^ur7IdOpRMm+e_{zrUk zaYFlngpO>re)s6ZO_}0?R{~q7kb#0XEQGDy?{}JCRW&y3nF$-JA zEar|a%o@AYICe$r*m7=KMOIpsF|E2a?RoCR78qduzt3>(g*XglpT?*pflB;6F8Ll; z^d483uU@Y!T(9K-gOpd)scWxOW4V#USsU)~abT*+RK13KEz*F~7FycMH|6rU0DYwp z=7HeoW^!nte9C=!*kK+c9ZS!TBCtYlouZ6s&PG5~Q@lPz$_4Ou>!dXNC5W&p2BPh%-;e2zN*H0ha;VQgB+Np05fU0 zh6Dp3X2ybnf*C57AQ?F zV-CTOL!p?a%__~LNcp~kEf9P}i3ek;T+Y1F{GMe%Zf5QK%wi z1b^3@c86J+WTK_2$uhy`;FqcC}Jg~Q2kUI z`&`WP1CVL7&dri~A?^yTm8R&PM`}ZvLd${}e z9Qa*30=zW_g10gecx(3pZ+khvbSAIWSC@sHM&7DXpiv~S^_=j^Cf~8HY{XgG?L#rO z|D!zz1}|CJOIHRjm9dw^?z>#L>su>0aT}2p$ybm$D zHmrUwW=!^bxm;euH0e6KYi|U!sGBvw36jg4BCN2@N`$ zEQTHTN603v7mx+y2Ho>e!_s&*3;;$(s$Q0G)=PRc#Wcc7x7N#e%WOD81xSHwqf{An zmsr^oNY=}@UZ(mC$?_82vKRSOvwDwJ+H2!w`tUO_{`iDVR{mrxcQgWCDkOlxu}E=; zmqU7!HppYPZeY%nSMF@u7LlZ~N_kw1S|Cer!N}7K482Zk@sIQuzFeRK5J)8hkci8q)Lu1$lZ&Xf>`HEns70qu#If+s6z2loye!qH9z-s)PwE@>NniUNV5^G0dOOaSA5(`CQTaZ{z4;M@EAKt62Gj&XE9%t5el&UsGSptm=auek3<=AFWWX zTr5uGmE-)+#cCRGER0u=HCAWbBemdQgrMjAf<0|+k(N&FyZ+30!K50-ISKf z8a6KEjx__H35>FZ`%8n-#lahjXhVfH*_T>Fo}_x(!m}7F_ay>RZ}Pb$kwcuV%wj?_ zy`G_i)osIkOW}FAfi^&wjk)b=nr0F5PGHe@%xYeC9IF1!Vz8r%O#lmv{h={iMjh}q z%;gLZBr5QnK3|#lQtx`bFqsl=YJRey)0bPsQ7RbjAH8+D{3#5XT=|Q_$4KtWaJE*q z4ln&&{F3df1&jJZq)G0^UW-MyjtE*Gnd5Hj@$ioJq(UqLx&iMqQ6rD~Xj?Ys z_s!8@LFItxHuR9(2q+=YdV*%RO$0E6JIL_4-gOXUhhI35#?-DeU`CG%z>Fs3GPWpa zo(%uQjDF`hqiFz|6k9Xt$e3VSsFG&>Vg_J(7aJi5+VsP(MMJ6>j!ShfrT3ej zMO{ow5LZ=3hrt~k2on`E16WhK9q(iZb@KV3OxSES6q1jjCuumItBbGT0`6ua;y@8X zV0%1Xy~6Qgi7oD&;cI}70F=~VQ}58TdOxYo2S}5;Eit_3KsKP6o@(ySILif$)YXG& z9qMLB##JNvD)4C9VtwDk|+P<%&*A98O$Y!HIr5G3ZXYfqr|q;@Yi3 z&7ADSs?n15%IN1Rs*l==h?JyZt>V$Lc(vAg)Yd9afnPR}!0Ggj_+m?2X{>eJjDD$dliCg~d@C;nxGc$Jz*d?NF-m^ITCTJiRRNn2_lhpu z+BlIj?)B)$uNdZ8a8Vz|PqdpeqS`YVhq<9B-Qa&>Sp@=uGP(tv@8h5VKua2|O7!Ag zZ#skHN^D5GzMpy87SbU?MQr2FK~|Z zF1y-|jp9yJg>Crug$4W{$=SxUQyD0eC0?13*lvGZ{xosc zi=+5R!CRGSLpm55;NjB;3SpBUEj*x|6oVge-b0{urrfT( zU8kOz#w&}?ckx-^@2vO{+cX({_z`&--mN0L#l0U&7_{84wW}{V7Za4cHGl7Pu;|}<~O(xvw$D-Yk zCRfnesZU;-5^H`s#H4<*c1hAp8g5|>heMC|qu8Wd97kvPQAV;YPr{wW_=EV|9$uUomq2U}F)_vb_1{8#q7pb9psC4$UA)ls%2(c-2Mw?> z=BJk9o4+4yqAfk-j~$Y z10ofAnk)S?|qrVB-1al52*A(-p{4k)8+ZOfXcV7o|X@AhOuIE=MJne7RIAd_- zRNi&MAT6gj3R~3kYCy(GTdW4nC(V%&<;3hPas{!cjSV|00K#77~`hHQQUF=&?h`K(#elyL@L zzg~NVlgm$F1}~`rQw$cXo0$I1%gDg9)~DBn%u;6HBIZN@Rex|#6#(*hyoOk-v87r7 z`IL&xQaX$+^QS{9U&6!m`mb;)aAl=OMRm=xMs;(eE*d&gI%7J=_?_`*hln_ElYXwB zV*sWVcY=Z+ZxZ@+CN)89CpL3iId=d&Otf&az(NsWWC)njs%~9cazLN0TQ*=e$jM{8 zbt>WSc5Rk=I{=a+`cZOPinW5v!wPhh+2mB<-c>Su{Dc^bpVwUJ(vaI~pXRVQgx7)? zF7>{nt`nPlUP9LZZ3xWAmdWS4Uyw#YLs*O9({ULXqXLAEx`p|8dI-knsw0D6e}a-h z$;o}2*QRYn{A_O65hd8WN!PVGrpMXtBwcIzZaOlQL5H@I`3%5X{ce9|RwABI0bslc<#k5-Wf5fH7%riQG#?>;!1>0QWL^SKUUxuBOPd z`d2vXp?fnk!6_p^#ok&_@xI*$z*}<(uM>@*`%$gpDt}PRDBqO{i9#N5l{YF1E%^$9 zf1S#6Oxkr`6Bl@oa<1?;!vqiH8-K362D%FY(;YK&$Q?qyLmi&GV%0tT>0PONW944c zM;es2SUQn5hZ;i53D*c{taA=fFlK+LB;9KsVSbMXfa!!qGOWbD^WsYIwU&OxZrzjC z0(rdWnHFgF_t1gD?a@ux*2-p?8S%ve3jvo)-%ClaNm6@>W_$6Wsj4MccvtPw2jw9B;Nm5@wisII&@ouvF2J#7jQ}vpHGt zT80IIhC`sga)dLI7xZob38$mIpw=~6gbu=lo*VYz#N)t04M8b1vJIsW^_Gj@1f4SB zUtA09(^1*!@UsJ6n10PMGTWwhjD%v$(~iT=o~>GCu9 z8i7e@>)*E6{Fe145M$Y%d7Af4xvTsH*rTYX#O1Mkn(TaS_N*+sa1uMWx^gBZf? z-9en|eLz&E%~Ac{qoK>gcUMt*`ozEvzdjU0OG`rjNl4xHGKFY&VnP2Lccp9;)rOg` zaE$(OFK|LhH+Ql-@`QCUWJh8TC#g^i9K@jeKZ$yGgG~bu<_aHT0jUjSg94l(zhr0aASJJbaV{6!Tae z+PYu(F5YTa*Gt1WgrR1`p%!zX-dj2FgksLM$t;I4=>BTq@E~$3RpW|0Mt+D%@WU^n z$U9Nw?T%o>69gE@mp1)1w3u*x{K^}|$Wze$m%F?FSrd29SIp=~i0=XZ>Hd2LuVpnj zG~Ezy=5(S3XpzYUcJm)LJc;M65FyB@eOY&YjuZ;&rRIz_s2N?PGQ+o7Fqi1FTTP13m8%xJy<`Y&O8Bo2Beeu zm+-B8S3m!{qLv!CA~iVY$MIZ~3$-*#;0vPSpnJQ$@qum9Z~~>mZNpx#10|W*{Ryje zuix6l6_RJococ%QPaSb-0W?}jVXk5Z0~qF~U9T$Bi?2iOT31t&FVYLF3kOZE&|N3p z9j=-UJ)D=kqWNa%jC4m<(<|^7wy>1ynhkxK=mLU{c1KpJSHN_whDSiF%4Ys{(b}K_ zyKY0$aWCl6qMF*8Zq8Euu6}}v8jiZDI>?4%eGr&s1lF`0=ZjJl`$`mbPpgI}kHc5v z%KWc+nb&g^#8>XVD76qb2hJU2tF}Adig2JFD#LqcOqZ^A4~+1vt>bvRn?mxfPb|d! z-Fnf2(>I|6_M*<>H?F;{=ngyYuSyxqcFb}U8p@r=K56;~ z?3Uo^(_RioeOeWw1Ou1ZaBFd{xrfN{ekGr7XS*&j4Y4YKYbR3|m6>&(UQkuhXuks= z`a>Tta^1$i(cJlquaEhP;6XYo2)uk7(C#CO~DDD=Vdh zd10Qn*z`dYiY?j&|%(nX*~ zsyJKIS(ANY%ggrX1K_9DnAsfZr9xnBwv8_C_JUOr_vQlA&r86_piVV^r+g!fX&PXd z?PN&qz8NFu8GnIoDsIm44(1|LN2Zae_GGiX}mR00;v)^Cp4RaI+B&yA^ zi^jOVJ7S0S-{4F^OPhDv)hCt2`KR`1)@)Qaci$;MnYfsf%DMXygF4T#r@ns7S*=q3 zV?<3cO~aNqhEAifaL&eHu0iwhKlErJ!`30?3>+S|yNH3=h(m_$MxpR^?045NLwYTp zK&h>;F@fE@l5ShVB!>`Y=v$fY>=YJD;`g0+OZJVGGb>)IZpQz(r@$bg8vxJSjDIr# zC*AzRK1Q_Yw4k=3VWZ2>&=70cs23U{YZ?l;du@yk7u|)z1-;QQB2VQtjK3C5qjle2 zt03eG=^FCw-~qMGzwXj+4juF}I+94oZ%_6g3)KC6tBhAH4Uaw!o27AJhEe#Vl-Dwn z|CZFMv58H!_s>%1yAzb9Q^_4(Jcm87CyC%KAk|3)t#h@+@bzqRS>Y2`4{68yMN9)*+jtoJHnSYezWSYW$&3vP77g)ZLcA zo!x2DWXia4ood~~QvI7&F*$>TX*opW2lK(5sQs7@H)_c@1VFE@0xSO!2ANdZGTJbG ztpYl$0E2Eu`ZR6ahak;g29!mS6)>Z2i(^Yt81cAzN(djBsj}uqZ&y;Yt762!$0~<6 ze?l#Fq)=;iZk5J}2!noPXE8qJ0bwAP7EVwQ&)YB#n8rUYxa{IS)_42 zS)3&A6(g>1H7ahvU^Z;_s_%?2M)L8=d{4S&gz)Z4Zx`9N=|}O8@t&VsCGFC{Tp*r{ zHkz>et9=)ZQn&3^+iV{cNzX9E$FL?h92$j|;ko&)jW87?<|Z|i42WJKW)dG`e2<|# zpDb;)!uT*>L4B--O$35OJcll@BN-gzA6sLLJII{m{xfL&|1m~-Zt6>xx4OWyjW0vp zCa%XA@rGCoW<1zt(b!DpCet6g?yu5J9kj-mK%TbVCSi1$W!r&E_m865#Jr>#fME{Q zH3*C53X10{NASnP#B4EIWGs;d!IV??K~4dw(I{u|6|jv;mxhKb&m{%HR8@gxO0r6M z9A990T>)O$Lo8nVg+&?zha1#htVI@jEOlNcKN!nB1@o2HX`^x?-{G4%p-_i_@(1Y` zmG+(b+5BIm9Z7Z#A6jwkqPRpvOTaLNw9Lub0VIb~c~jG>!9#`*~=nFE|roOdoT zsQIo6(cw2rY1GB=>jJaId*MI|Wf83E!B}<&C`vl{HnfN{Zl7`u- zWR&8NETSw~nnj&U>fC6Q^V35D0;Ki6M%cXq22A;i&uHmPqUG;!1Sz3Ty& zQizUkS<_mz#RboMWMi9goSYhdQYwcXF>FCAeEZsz0oW;D_sjJYszeLeaxeC==_2MG712QSR zJgMLl=!2}?{8D;Xp?!}sNAIxFet*D>A;DMgp&_=slYv*StrLmV$uJSGC~Or^we53w z?U#fN3+C&9w?k91BM(R+reQU8_mq{*{Mkml0 zFqoF${YJJy_jB|QQP83CgBi=YYd_abyWq;^{zTrC0u#6;#dE>@xo*J)dJ6XzTrkmz zMqx{`(>=?J)r=Rzh#O7#_8KRMVS?vW`(~HVohWHEZ zy@5SI!&iNZK|kD{N_pCFZh<%_rMYf_;WX-PpLP`~6Fi2kaLm9b>fumul8^?D(f6Uh zKd@OZY1!rVSNbkzSIx^{q}x*oW8pUSvXH{)R2Y-rBCn)ETU*;nZ1GIg(({eU;`UT} zmzbCBbuFYloLkC=Obu)(#@deQb=GPzS~jC!!(o_KUt7v6BCa_`?h71e1ax)} zcKN%=tEn)Roqy08B!))BjM~+7@#m;r{UAtnUA(Z>AQiJcajns}e}z`xlc(D0;N;$$ zN|NraS=1$9G4*5S8zpBc&O~vdj1WxFa^E*SI-n$&0cXNcHS+f;~a+nigYif8($%@vJp|D%H$HZINl_9x7A#Shaq5)=o89a1#5_dF|6L-f@ z@ulvilQ;OVBwEf_ht5nhmpQ`&y*=wb^}6ab48~q~2Wq>qu)n}VHTzd!ui;0_q0{Go z$S@;b%6gIM2h()s#Uct{pF4I~InoTRcm{SH$;I<)3*v;<~4elf@lS@!d_8 z`YY=kVI$!T?tOJbDO=@<$J96-T*cp7I56 zWuwt!Wqnhu@G#e3ExkZp56ye7ETli{9SGNqu=}d*h&evW?>Id9m16)8ow-gB4&VMm z(Ttm~G9oO367h~_yz_92>0`QGP^ z3|x8>E*-Y+W^d1{hiBs8k*knvvFNF~)95iVVlM`vNBM)Qjm0QBZ8K4H_MsqLDLBy5 z+u|UIGo9{daFpdp=F%*9?rhU3cM!&26neo+=y9|6qq`x>&wxx`@8DxTSJ0jT#(OBH zO|PI-z3UG#)o(yC)me4{=AIIw=w$79zAU6&UJA();`Kf3#BdM^m&JS!1s1-#`9prVnDMux7%3^zdmM<7JAb}rmZEGpL6vKq=-D%-`f zmdbXyWmMEsYb{&ULTg4X-BDMl)eT+@ZPf7# zO0<0wwZ*`lt8-r+{1H`n_k0s_xX0@gB>D?V^gD_tyqk*C(3BeSqnb&+r|@BkY)bT& zXfUTV5p&v8RGgBjV79z|WYX{BPHiUa-m<&Wb6<6BBj&H7Q5@$3fFeFz`Lw&eMg(}& zEer6d>sc?fSHmxVF|A^mbyD_(zBGGm}!mZ%pX$bhqqEC+~IP@v;3|^0HDEjYOpZluqCMsb0LNr0jpVvk`nWtSjchxiM|C&Z8<9|zM z@egECZG7wd4*JHAi8)o@kdgZ;cFU+Nfoep!vBfOFxO8+Icf`Wq*K;Ub!(ON|og6LO z+GR+-V}TQA7Er164V#cO;AH3t*RkXKd$P5trJ<=T$g?a6z*zZ@iAB^6OwKi|Th2 zME0y=V|`K3>x)%r`qrPbAQdb~_YVH$o0Kqh1+8LAZB$>O%brs=!wgD3!ry z?5UCX{)8XZ*x?c?i}XgP`;|YjlM?OtvFuUAFf){5unzI`-3vb@eaxUdiN(-m&qWL~ zG!#SKE-G4cy^{un?E-r4gWH4%N7z$KBLJraMPr!D4vdA96r6Y_cfONA=US1ml zJ~ZfN85YKKsqqYV_nF@P&4Wwe)+B+G8frW>*{ywzX({N!+LQ3piSl1@io6dUTN--W zS7EhfQYV^T&_aXvPEb9zgEfg6AwiAW;b_^A!no(xE=+|MzM`@ifYB5TvKPp>91^saC##AsH4;lxIvrI>Qkof2y4egx~r-qfHtrfwi(Li zx`LjP*M*0;)oJIQOr2&`8ly9u{x?xTy<|bZUZKZIdL&>dQ0lX~8@q~CozW7k?v#ha z0a@BjD|tU{S!(IwA>c%<2d5BZEj6K0VHY}G&elzM-uGO$nW8#?;H zER$m1upw=EZoiFpNLu4Ey>*b>Mr~M5-AZ4zEO2Cc72F1Odqq=@scoKd z7lEalx&$gl%YYy0$)m;Q|NV5iS4)9LGSO@5*4$ya^ zh;@LLxbwbf|IZz0|L8>38QoWon4+B9!c7N%tt)ADY9-EC`CB~)H`l~Q$w>F!ynRYH zlks#1ZHZ@e(*CG}zzV(Vj3k&^rFJX6A=p>HS*q6`(U{$;*kXBLecckp+p6A&?wR^~ zUpbbv-fwo*h|0$kZslV`dqTcQ?Bwc-8G4K6$_41EGQdFf6Nk>u9osMhqEn0nc zt@noz2t)s}!MEbcv%PY3qv8hfCMo>@9?yPcQis8%&$uuG7;+rD`Qd6aJt9r)V9k(fc$6W|_5iViH`I=gn7eHGnY{hGXk&;vqtD*1$Zv%@K^_2g zf<45XgtLG+?vbU2^9SQ4oFtaxmf&8r!@$JU=@yf!gWUq*kj8--2RIMNW*g}nIVNA4 z*Gj`_T3ncR7UmkYB>8;8KFJftzQ2_UDWc{sHX~1hFg&-!Eieb>2e<*?&(fm?_Gzx< zNRl3lnAmWT;(0dw_mB;iQ=+YFDABK2q7jtn#+j7pfwaFI%WJ!Xn6oEAbm>fYn_O7u z&~%wT3lYBfggf(=>nNTJ>-xlx`dE1PcX%etS9#hW%rr??0ZGnbjaIuR(x_L(xKaC( zDJoNkK2Lj%WWL$Y*f=Th1$hVmyjF`=@$=8%4PIU9#MCvqt(|@{K zb*naK08IRATHPjVPvyL9ml*pBXz51yf_YI`W{yHvVC1phXGnYJy>+srN?BroEFn|2 zI8C-lCwpm2W4zuO#~10c+wczRjLHaq_N1TPdCZ5gf6Um)aB=T zr`@lu5n9sdxr&Zqk)g-y5poIl$5E?>iy5gAA-&;k)mC{heOwM(@`Lj2sL8^REqy1!O+4fZ-3{A%7&_%!Pjm`R3mWmrpe;;_-I@ zIDh0H!{Z+Y9{*AOWHF?G$Dd<7odP_*@Nfbi|5O<3VeNsZSKIjlPdxsk0v_K+c>KER zpMDRIUs|2f?vrlxoti0`U+G17{2PGBH+em=rLOvM-i^l}6@dsVAMjeMPg~vC9JUs!AU)(Dydneh1gvY%^S zG>*rA#%`9&86Lk$#N!)hz26KxzGEDZ4|O`jaN=aU6#ZIcjKCR1|(hvq6P%AGv zb}Q}rzAaO)Q~5Fl-JL)z?{3&?i{^dRfFU%}7L<(%2s1S2ZNX3xXQ+SF6WX;-p0q)- zfIE1==2}k8F8MKQNHVT9Jv9&b9P35;BXuVPPv@rClnJ0qf!N62nKIt{RD#V6iTH_)aI7il(p z6Tug3BE6Xq1DZiogH)wbr9Nt^i)wz-yM_jCBpByi)Y2+3nDexd*$5d{H0{o_Zyb{y)sC(5@} zMwqP-jQ(p0$x+Og+c#9xlH+S@!vQTC{^vtAU!M2F8mK*6Z+kAY|9Njm+x_izuO6sg@m*X03rQnh^`~F{ z_{GlK!h5?*)QKmm9h}(G6^y7J9Vmz%Ie4H4JMLFC?btJRF7i}#$ENMt2uM>^gcC^1 z04U=8sX*mDUb7qwYc;u-Z_4Y@o01%SH0Kr6I_SqlGeze-Iregv)O@BIIC9&T&A#ga z)o*3nHqY33Ux}9@2f)|Wr^6WVHJo7g_tGZsUhURadW@E~QP# znE8al`{L2{iwm$zocxo=uJPOAxS*g_#Gj>P#`Afk{}l6g$CFma~2Ca==P$sv$FDoPQ)kq zeKnmR0F6^rpZRsP7(}hB^OX#I)#xuMNL4;{*KTkbq#H_3CaAP_}Q5Kujwb79nh(5mgV=0^QmF9!=^z*l

+-X-&&viHLXoX))Qze$+UIRC28lQ< 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 literal 0 HcmV?d00001