From e4c92649e1f7684bed5ae05b0f480de136515ca6 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 17 Dec 2020 21:27:58 -0600 Subject: [PATCH] updated structure of allocators in core libraries --- core/alloc.onyx | 190 ++++-------------------------------------- core/alloc/arena.onyx | 3 + core/alloc/fixed.onyx | 40 +++++++++ core/alloc/heap.onyx | 143 +++++++++++++++++++++++++++++++ core/alloc/ring.onyx | 55 ++++++++++++ core/builtin.onyx | 46 +++++----- core/file.onyx | 2 +- core/sys/js.onyx | 6 +- core/sys/wasi.onyx | 6 +- onyx | Bin 516732 -> 516812 bytes src/onyxsymres.c | 6 +- tests/general1 | 14 ++-- 12 files changed, 303 insertions(+), 208 deletions(-) create mode 100644 core/alloc/arena.onyx create mode 100644 core/alloc/fixed.onyx create mode 100644 core/alloc/heap.onyx create mode 100644 core/alloc/ring.onyx diff --git a/core/alloc.onyx b/core/alloc.onyx index 53321a34..99d3f86c 100644 --- a/core/alloc.onyx +++ b/core/alloc.onyx @@ -1,181 +1,19 @@ -package core.allocator +package core.alloc -#include_file "core/memory" -#include_file "core/intrinsics/wasm" +#include_file "core/alloc/arena" +#include_file "core/alloc/fixed" +#include_file "core/alloc/heap" +#include_file "core/alloc/ring" -use package core.intrinsics.wasm { memory_size, memory_grow } -use package core.memory as memory +TEMPORARY_ALLOCATOR_SIZE :: 1 << 12; // 16Kb +// The global heap allocator, set up upon program intialization. heap_allocator : Allocator; -#private -heap_state : struct { - free_list : ^heap_block; - next_alloc : rawptr; - remaining_space : u32; -} - -#private -heap_block :: struct { - size : u32; - next : ^heap_block; -} - -heap_init :: proc () { - heap_state.free_list = null; - heap_state.next_alloc = __heap_start; - heap_state.remaining_space = (memory_size() << 16) - cast(u32) __heap_start; - - heap_allocator.data = ^heap_state; - heap_allocator.func = heap_alloc_proc; -} - -#private -heap_alloc :: proc (size_: u32, align: u32) -> rawptr { - if size_ == 0 do return null; - - size := size_ + sizeof heap_block; - if size % align != 0 { - size += align - (size % align); - } - - prev := ^heap_state.free_list; - hb := heap_state.free_list; - while hb != null { - if hb.size >= size { - *prev = hb.next; - hb.next = null; - - return cast(rawptr) (cast(u32) hb + sizeof heap_block); - } - - prev = ^hb.next; - hb = hb.next; - } - - if size < heap_state.remaining_space { - ret := cast(^heap_block) heap_state.next_alloc; - ret.size = size; - ret.next = null; - - heap_state.next_alloc = cast(rawptr) (cast(u32) heap_state.next_alloc + size); - heap_state.remaining_space -= size; - - return cast(rawptr) (cast(u32) ret + sizeof heap_block); - } - - new_pages :: ((size - heap_state.remaining_space) >> 16) + 1; - if memory_grow(new_pages) == -1 { - // out of memory - return null; - } - heap_state.remaining_space += new_pages << 16; - - ret := cast(^heap_block) heap_state.next_alloc; - ret.size = size; - ret.next = null; - - heap_state.next_alloc = cast(rawptr) (cast(u32) heap_state.next_alloc + size); - heap_state.remaining_space -= size; - - return cast(rawptr) (cast(u32) ret + sizeof heap_block); -} - -#private -heap_free :: proc (ptr: rawptr) { - hb_ptr := cast(^heap_block) (cast(u32) ptr - sizeof heap_block); - - // DEBUGGING: Fills freed memory with 0's - // for i: 0, hb_ptr.size do (cast(^u8) ptr)[i] = cast(u8) 0; - - hb_ptr.next = heap_state.free_list; - heap_state.free_list = hb_ptr; -} - -#private -heap_resize :: proc (ptr: rawptr, new_size: u32, align: u32) -> rawptr { - hb_ptr := cast(^heap_block) (cast(u32) ptr - sizeof heap_block); - old_size := hb_ptr.size - sizeof heap_block; - - // If there is already enough space in the current allocated block, - // just return the block that already exists and has the memory in it. - if old_size >= new_size do return ptr; - - // If we are at the end of the allocation space, just extend it - if hb_ptr.size + cast(u32) ptr >= cast(u32) heap_state.next_alloc { - if new_size - old_size >= heap_state.remaining_space { - new_pages :: ((new_size - old_size - heap_state.remaining_space) >> 16) + 1; - if memory_grow(new_pages) == -1 { - // out of memory - return null; - } - heap_state.remaining_space += new_pages << 16; - } - - hb_ptr.size = new_size + sizeof heap_block; - heap_state.next_alloc = cast(rawptr) (cast(u32) ptr + hb_ptr.size); - heap_state.remaining_space -= new_size - old_size; - return ptr; - } - - new_ptr := heap_alloc(new_size, align); - memory.copy(new_ptr, ptr, old_size); - heap_free(ptr); - return new_ptr; -} - -#private -heap_alloc_proc :: proc (data: rawptr, aa: AllocAction, size: u32, align: u32, oldptr: rawptr) -> rawptr { - if aa == AllocAction.Alloc do return heap_alloc(size, align); - if aa == AllocAction.Resize do return heap_resize(oldptr, size, align); - if aa == AllocAction.Free { - heap_free(oldptr); - return null; - } - - return null; -} - - -ScratchState :: struct { - base_ptr : rawptr; - size : u32; - curr_ptr : rawptr; -} - -#private -scratch_alloc_proc :: proc (data: rawptr, aa: AllocAction, size: u32, align: u32, oldptr: rawptr) -> rawptr { - ss := cast(^ScratchState) data; - - if aa == AllocAction.Alloc { - retval := null; - rem := ss.size - cast(u32) ss.curr_ptr + cast(u32) ss.base_ptr; - - if size <= rem { - retval = ss.curr_ptr; - ss.curr_ptr = cast(rawptr) (cast(u32) ss.curr_ptr + size); - } else { - ss.curr_ptr = ss.base_ptr; - retval = ss.base_ptr; - } - - return retval; - } - - return null; -} - -scratch_state_init :: proc (use ss: ^ScratchState, buffer: rawptr, length: u32) { - base_ptr = buffer; - curr_ptr = buffer; - size = length; -} - -scratch_alloc_init :: proc (a: ^Allocator, ss: ^ScratchState) { - a.func = scratch_alloc_proc; - a.data = ss; -} - +// The global temp allocator, set up upon program intialization. +#private_file +temp_state : ring.RingState; +temp_allocator : Allocator; alloc_slice :: proc (sl: ^[] $T, count: i32) { @@ -183,4 +21,10 @@ alloc_slice :: proc (sl: ^[] $T, count: i32) { sl.count = count; } +init :: proc () { + heap.init(); + temp_buffer := raw_alloc(heap_allocator, TEMPORARY_ALLOCATOR_SIZE); + temp_state = ring.make(temp_buffer, TEMPORARY_ALLOCATOR_SIZE); + temp_allocator = ring.make_allocator(^temp_state); +} diff --git a/core/alloc/arena.onyx b/core/alloc/arena.onyx new file mode 100644 index 00000000..94180199 --- /dev/null +++ b/core/alloc/arena.onyx @@ -0,0 +1,3 @@ +package core.alloc.arena + +// TODO: Implement the arena allocator \ No newline at end of file diff --git a/core/alloc/fixed.onyx b/core/alloc/fixed.onyx new file mode 100644 index 00000000..9a46ea11 --- /dev/null +++ b/core/alloc/fixed.onyx @@ -0,0 +1,40 @@ +package core.alloc.fixed + +// This allocator is very simple and always returns the same pointer, +// unless too much memory is asked for, in which case it returns null. +// +// This kind of allocator is useful for temporary string building or +// similar circumstances, where you know that the needed memory size +// will not be exceeded, but you don't what to deal with potential +// slowness of a general heap allocator. By using this allocator, you +// can continue to use the same code that does allocations like normal, +// but can get the speed increase of a simple allocation strategy. + +FixedAllocatorData :: struct { + ptr : rawptr; + size : u32; +} + +#private_file +fixed_allocator_proc :: proc (data: rawptr, aa: AllocationAction, size: u32, align: u32, oldptr: rawptr) -> rawptr { + fa_data := cast(^FixedAllocatorData) data; + + if aa != AllocationAction.Alloc do return null; + if size > fa_data.size do return null; + + return fa_data.ptr; +} + +make :: proc (ptr: rawptr, size: u32) -> FixedAllocatorData { + return FixedAllocatorData.{ + ptr = ptr, + size = size, + }; +} + +make_allocator :: proc (fa_data: ^FixedAllocatorData) -> Allocator { + return Allocator.{ + func = fixed_allocator_proc, + data = fa_data, + }; +} diff --git a/core/alloc/heap.onyx b/core/alloc/heap.onyx new file mode 100644 index 00000000..24add474 --- /dev/null +++ b/core/alloc/heap.onyx @@ -0,0 +1,143 @@ +package core.alloc.heap + +// This is the implementation for the general purpose heap allocator. +// It is a simple bump allocator, with a free list. It is not very good +// but it suffices for the kinds of things being done in the early days +// of the language. You will not make your own instance of the heap +// allocator, since it controls WASM intrinsics such as memory_grow. + +#include_file "core/memory" +#include_file "core/intrinsics/wasm" + +use package core.intrinsics.wasm { memory_size, memory_grow } +use package core.memory as memory + +// The global heap state +#private_file +heap_state : struct { + free_list : ^heap_block; + next_alloc : rawptr; + remaining_space : u32; +} + +#private_file +heap_block :: struct { + size : u32; + next : ^heap_block; +} + +#private_file +heap_alloc :: proc (size_: u32, align: u32) -> rawptr { + if size_ == 0 do return null; + + size := size_ + sizeof heap_block; + if size % align != 0 { + size += align - (size % align); + } + + prev := ^heap_state.free_list; + hb := heap_state.free_list; + while hb != null { + if hb.size >= size { + *prev = hb.next; + hb.next = null; + + return cast(rawptr) (cast(u32) hb + sizeof heap_block); + } + + prev = ^hb.next; + hb = hb.next; + } + + if size < heap_state.remaining_space { + ret := cast(^heap_block) heap_state.next_alloc; + ret.size = size; + ret.next = null; + + heap_state.next_alloc = cast(rawptr) (cast(u32) heap_state.next_alloc + size); + heap_state.remaining_space -= size; + + return cast(rawptr) (cast(u32) ret + sizeof heap_block); + } + + new_pages :: ((size - heap_state.remaining_space) >> 16) + 1; + if memory_grow(new_pages) == -1 { + // out of memory + return null; + } + heap_state.remaining_space += new_pages << 16; + + ret := cast(^heap_block) heap_state.next_alloc; + ret.size = size; + ret.next = null; + + heap_state.next_alloc = cast(rawptr) (cast(u32) heap_state.next_alloc + size); + heap_state.remaining_space -= size; + + return cast(rawptr) (cast(u32) ret + sizeof heap_block); +} + +#private_file +heap_free :: proc (ptr: rawptr) { + hb_ptr := cast(^heap_block) (cast(u32) ptr - sizeof heap_block); + + // DEBUGGING: Fills freed memory with 0's + // for i: 0, hb_ptr.size do (cast(^u8) ptr)[i] = cast(u8) 0; + + hb_ptr.next = heap_state.free_list; + heap_state.free_list = hb_ptr; +} + +#private_file +heap_resize :: proc (ptr: rawptr, new_size: u32, align: u32) -> rawptr { + hb_ptr := cast(^heap_block) (cast(u32) ptr - sizeof heap_block); + old_size := hb_ptr.size - sizeof heap_block; + + // If there is already enough space in the current allocated block, + // just return the block that already exists and has the memory in it. + if old_size >= new_size do return ptr; + + // If we are at the end of the allocation space, just extend it + if hb_ptr.size + cast(u32) ptr >= cast(u32) heap_state.next_alloc { + if new_size - old_size >= heap_state.remaining_space { + new_pages :: ((new_size - old_size - heap_state.remaining_space) >> 16) + 1; + if memory_grow(new_pages) == -1 { + // out of memory + return null; + } + heap_state.remaining_space += new_pages << 16; + } + + hb_ptr.size = new_size + sizeof heap_block; + heap_state.next_alloc = cast(rawptr) (cast(u32) ptr + hb_ptr.size); + heap_state.remaining_space -= new_size - old_size; + return ptr; + } + + new_ptr := heap_alloc(new_size, align); + memory.copy(new_ptr, ptr, old_size); + heap_free(ptr); + return new_ptr; +} + +#private_file +heap_alloc_proc :: proc (data: rawptr, aa: AllocationAction, size: u32, align: u32, oldptr: rawptr) -> rawptr { + if aa == AllocationAction.Alloc do return heap_alloc(size, align); + if aa == AllocationAction.Resize do return heap_resize(oldptr, size, align); + if aa == AllocationAction.Free { + heap_free(oldptr); + return null; + } + + return null; +} + +init :: proc () { + heap_state.free_list = null; + heap_state.next_alloc = __heap_start; + heap_state.remaining_space = (memory_size() << 16) - cast(u32) __heap_start; + + use package core.alloc { heap_allocator } + heap_allocator.data = ^heap_state; + heap_allocator.func = heap_alloc_proc; +} \ No newline at end of file diff --git a/core/alloc/ring.onyx b/core/alloc/ring.onyx new file mode 100644 index 00000000..d93fd9be --- /dev/null +++ b/core/alloc/ring.onyx @@ -0,0 +1,55 @@ +package core.alloc.ring + +// This allocator is great for temporary memory, such as returning +// a pointer from a function, or storing a formatted string. The +// memory allocated using this allocator does not need to be freed. +// The idea is that as you keep allocating you will "wrap around" +// and start writing over memory that was allocated before. For this +// reason, it is not safe to use this for any kind of permanent +// allocation. Also, be wary that you provide this allocator with +// a buffer big enough to store as much data as you are going to need +// at any given time. + +RingState :: struct { + base_ptr : rawptr; + size : u32; + curr_ptr : rawptr; +} + +#private_file +ring_alloc_proc :: proc (data: rawptr, aa: AllocationAction, size: u32, align: u32, oldptr: rawptr) -> rawptr { + ss := cast(^RingState) data; + + if aa == AllocationAction.Alloc { + retval := null; + rem := ss.size - cast(u32) ss.curr_ptr + cast(u32) ss.base_ptr; + + if size <= rem { + retval = ss.curr_ptr; + ss.curr_ptr = cast(rawptr) (cast(u32) ss.curr_ptr + size); + } else { + ss.curr_ptr = ss.base_ptr; + retval = ss.base_ptr; + } + + return retval; + } + + return null; +} + +make :: proc (buffer: rawptr, length: u32) -> RingState { + return RingState.{ + base_ptr = buffer, + curr_ptr = buffer, + size = length, + }; +} + +make_allocator :: proc (rs: ^RingState) -> Allocator { + return Allocator.{ + func = ring_alloc_proc, + data = rs, + }; +} + diff --git a/core/builtin.onyx b/core/builtin.onyx index de79b973..0a7df2d1 100644 --- a/core/builtin.onyx +++ b/core/builtin.onyx @@ -26,45 +26,53 @@ vararg_get :: proc (va: vararg, ret: ^$T) -> bool { null :: cast(rawptr) 0; -// --------------------------------- -// Allocation -// --------------------------------- -DEFAULT_ALLOCATION_ALIGNMENT :: 16 +OnyxContext :: struct { + allocator : Allocator; + temp_allocator : Allocator; +} + +context : OnyxContext; + -AllocAction :: enum { +// +// Basic allocation structures. +// The implementations of all of the allocators can be found in core/alloc/. +// These need to be here so the context structure has the types and enum values. +// +__DEFAULT_ALLOCATION_ALIGNMENT :: 16 + +AllocationAction :: enum { Alloc; Free; Resize; } -allocator_proc :: #type proc (rawptr, AllocAction, u32, u32, rawptr) -> rawptr; +allocator_proc :: #type proc (rawptr, AllocationAction, u32, u32, rawptr) -> rawptr; Allocator :: struct { data: rawptr; func: allocator_proc; } -alloc :: proc (use a: Allocator, size: u32) -> rawptr { - return func(data, AllocAction.Alloc, size, DEFAULT_ALLOCATION_ALIGNMENT, null); +raw_alloc :: proc (use a: Allocator, size: u32) -> rawptr { + return func(data, AllocationAction.Alloc, size, __DEFAULT_ALLOCATION_ALIGNMENT, null); } -resize :: proc (use a: Allocator, ptr: rawptr, size: u32) -> rawptr { - return func(data, AllocAction.Resize, size, DEFAULT_ALLOCATION_ALIGNMENT, ptr); +raw_resize :: proc (use a: Allocator, ptr: rawptr, size: u32) -> rawptr { + return func(data, AllocationAction.Resize, size, __DEFAULT_ALLOCATION_ALIGNMENT, ptr); } -free :: proc (use a: Allocator, ptr: rawptr) { - func(data, AllocAction.Free, 0, 0, ptr); +raw_free :: proc (use a: Allocator, ptr: rawptr) { + func(data, AllocationAction.Free, 0, 0, ptr); } -calloc :: proc (size: u32) -> rawptr do return alloc(context.allocator, size); -cresize :: proc (ptr: rawptr, size: u32) -> rawptr do return resize(context.allocator, ptr, size); -cfree :: proc (ptr: rawptr) do free(context.allocator, ptr); +// Allocators using the context structure. +calloc :: proc (size: u32) -> rawptr do return raw_alloc(context.allocator, size); +cresize :: proc (ptr: rawptr, size: u32) -> rawptr do return raw_resize(context.allocator, ptr, size); +cfree :: proc (ptr: rawptr) do raw_free(context.allocator, ptr); + // @CLEANUP: These need to move to somewhere else eventually cmp_asc :: proc (a: $T, b: T) -> i32 do return cast(i32) (a - b); cmp_dec :: proc (a: $T, b: T) -> i32 do return cast(i32) (b - a); -context : struct { - allocator : Allocator; - temp_allocator : Allocator; -} diff --git a/core/file.onyx b/core/file.onyx index da9381ff..1499fa5f 100644 --- a/core/file.onyx +++ b/core/file.onyx @@ -122,7 +122,7 @@ get_size :: proc (file: File) -> u64 { get_contents_from_file :: proc (file: File) -> str { size := cast(u32) get_size(file); - data := cast(^u8) alloc(context.allocator, size); + data := cast(^u8) raw_alloc(context.allocator, size); prev_loc: i64; fd_tell(file.fd, ^prev_loc); diff --git a/core/sys/js.onyx b/core/sys/js.onyx index e1635677..4f502f91 100644 --- a/core/sys/js.onyx +++ b/core/sys/js.onyx @@ -8,10 +8,10 @@ output_str :: proc (s: str) -> u32 #foreign "host" "print_str" --- // The builtin _start proc. // Sets up everything needed for execution. proc () #export "_start" { - allocator.heap_init(); + alloc.init(); - context.allocator = allocator.heap_allocator; - context.temp_allocator = allocator.heap_allocator; + context.allocator = alloc.heap_allocator; + context.temp_allocator = alloc.temp_allocator; args : [] cstr; args.data = null; diff --git a/core/sys/wasi.onyx b/core/sys/wasi.onyx index 0dbd2c7c..95c2893d 100644 --- a/core/sys/wasi.onyx +++ b/core/sys/wasi.onyx @@ -19,10 +19,10 @@ output_str :: proc (s: str) -> u32 { // The builtin _start proc. // Sets up everything needed for execution. proc () #export "_start" { - allocator.heap_init(); + alloc.init(); - context.allocator = allocator.heap_allocator; - context.temp_allocator = allocator.heap_allocator; + context.allocator = alloc.heap_allocator; + context.temp_allocator = alloc.heap_allocator; argc : Size; argv_buf_size : Size; diff --git a/onyx b/onyx index 7e4f8e784411ae235b607d6681ccdd2a0420641a..94eaf2bc5177bb50869e37e48c495bf12f844b5b 100755 GIT binary patch delta 72379 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Μ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 DopyjL delta 72906 zcmZr(2V7LU(kEGVMJZC3q7)SrK><591Qo@Cg6-M`dsnPj5fudyMWYUO?ATFMuw%LQ zUQw}o73^FaUfVZG&f<~p@q5pm^PiGrGD#-M*}WJ3cKv?RHQAF)UQl^cHOu}bjQF47 z)5yq8JQMs^r@}4!4-mK|Bczg5>UF7=dR?Na8Fh)b#_>^`=0Zp-{xvfChM(4GW+a

aX#A^*pIkYR-ACmmXC$|-WEzDl+{dSx zg;wwM^t@#IDC{VOUHF3qX!XQ_b=3MgIw);0QH0V_$jYd+ksDj7^(7tHMXfKh)mbt# zoe2qKb~<0jtZ}k^Zi+@ttUA{i$a?7P9XpTzliO9{#>d9b-dJcn zK$QR0)JRVzuk{yI@^qCvz@k@6=$d ztVO8QHL8v=!+ZPLIM$|=-YF;d&jxluHjkA@xom1Fz2p00>}d+ygl#WnPb}HrrFajhv|5lm&;a}>Ycibk)lr((cU^)ncG9zC1mdkk?fUdf&a}= z*r(32pQd_Rn9KBLK8`&Vudk3oMh_LKovephbH~!>g9ILDF4+}I$Ra%1VKZNv6UN?} z=^eAJrAKQ~Dbz&~YR;U^?VScWN^U=;fT;?%P|wm5faLm*0FFI3o#*%Who#}j2_ z8%A45_I`!ijcrHM9;TAJ3sL@ePvPFOW)IBu^tJ>0Y~GBm$Fb4c!r!sBmm;lHb25e@ z@4G2%rG>rY)*6z#QwfU{h1-=~MDEMllDh}J!~YH|+*Rxca!)sx+_92r^g!V@U{y=o zJC$rKxkr?KASGqFFRHMfrS*;;ev&;4!<7GdDQqK_R2m1x3)umSm1+el-1+PsHbqZZ48Un)MEtZ;jM54ObP{K zZ}7k4iqIuT_S4FTezIjg)_VGW0&8a7jPz$o*7lA)p35p%ml{S*O=XoEvct&z_>bfc zQn=%h%SX2-dt+_yls#d9!2J~NN<}y83Ujg1JI3CU%7$@vP+>1+p*Hr8^MCwl`mw^D z#HJv(x5BNem?mbjT8?Zxa-DBWU8=asMd7-#`!@DYu6HE&k-`m9xP?!cg{==UV-0QX z9fR_vP$flZh9cCC4MT3^ImwMwieIa6ZP-fWT3wLb2MYJR!fn7VA~(uO_TwidM7}EA z-RuW)^Ik|@8>L)VoMw24>|s^y?46?TORkB+ZKZI(JZ3%Z^p5);NcLQ%;DHLeF-t<_ zCXXezo5D>}xGx{EBdFZ*sbu$7*jp5KFneQX@0h7@XDKD$RJd!Iv)VV>(A@D+s^lgr&C^-R0vfSUM|&rewz7&Nlqz~4myf>e`)sPC z-m%AZsk~BQH&vA5*>+SeR5A}Yh1*ZzzPrF4pt9v9sa!>2FH+benYk0r!HVg53U{Bv zZO9rr;T#zz>vd1z<|y2Q;cU2*o;1vea~k33*!ji)!Pnuxu8Ji8h+yV5?HvcIxaCyb zk*pzdqgCAUD(*Bk47u?NSDEFEmJO06C9{>tO;NZdP|ri9o60WMv^P&vaVs%W(}o$> zvNX?9p_Elav?iiwRA^-uS<{{ktYzkuqoBN9-YWZ#Zm@Z^^yYagrK;>0DxIliW?ra5 zeOUn(@DU3zx%t~g)mXV&_RO=knYn|4@&*{Q@LD#kLv2fQPnB#<7K^g+DC@66YqMP_ zy9Z@MR2H=CF`~~9?W~gZXI8asm~9_uP)#}(Ye}6OcGb+@SMIt&7(Hs@pge^cc z1<^be8qAKN-IHjyP=z*U1t?pHvL?5rf4L`HuyX$B-@52u6>7%95$%kqrwVP&V*PE{ z%(|B5{wlN$+l8`OC>x?e!`Nd)^APQvW@`{lLo`K&c4b!)&8cVRl%}ADL13gT#_6}%&w6_EER|9ZR;?a7x;{EuL3!-< zVv+T1Sl{}V<~b@fk}W`V5u$l2v=2Lm7S7Z+b1YQZHRQKq5U@A(?afVY|91EQR<1re zya75~g$`oj^)a9uU_h(TAuJYU<5AXMg$`r85Y0j~M1_uEj}gs7w6lWp)T%N8J-f@q!!oxzSFdIr%#6&lA15G_R1B^x7|@L{pjBuhi$ydZQGXSh#C9Q?g=mNhozEU4nulm-6}o^~HNpua z5GM>3%2-e%^lu>gSA{NSQHVw(8m~futwA&m(G(TBlwCzM2hlVYx}1?f^luRQSB0)* z)e!YZ^o$B!%_0#Uh-i)qUBeb2nu2Ja3SGyJ1>%GegcF7e-M|V^wh(1a?)>)eCRQ#8 z){D=Z4pXhh>x=ry(`*ru{!x_$pbwj@Q7FyJ2*9J7sPm~ANB z5?C*5Mw($vH^-P(p|-3VqW*}UQK5PkiReH?b5!UJwxAi#&CM;H@>J+8v~Bo%f0rF; zt~W1Kv2$1fnkqz7Cii|j|1K-n9GxG6&R3ziEF96!h{O)K;;rf9bjGXKTzxRBTN9TH`DeYUy-Fg}N9t@bgM8>lx~= zKQgP5QAncsQSs3*8$W*89iPRvg$C(2mZ@aaBH?&QqIQbla=Fp7*qV!WCSr@4cc~*TN*@XS(mK&OH!fpKn@+k?V2kDxPUn53tW?Jrc#`{X$10_g zZ6tV$WO#NmCiIaJ^Z6@~tYRbniXv4q9{;tHl7=k1YZ*+zf1ZC69i{_US=DHxcMUty~dC-xP ze1v3eNtTQ7qF+i1*#SuIljL?J$4K%6k~Jk+H`0TCHW9KDk=$>>)_ z2h~b)abGWToRNNI*uB0UWF}I9q?vf`(a(!$1huZ82mRYv*n5WLY)N|b_n<8#*&j($ zNp3>&qDIK(Avs@?l?Qmxa7hjx;6ZFMk_S{HCA+=T8O|jHZ9=@BQNMo zGPVx)HKx1&VY#CmG%5e+;9DK)%JidcE0+I9ho*whh|v?A6OwQ$BuN|hr6L~+trM=v z(G!{xHhKynz1XEOo9O8$Z2Z{qWH@^_HpJNOiOvYtETxXD!#EF8gH0UQ!@;8`Z?s9i zH4a@g{U~HcwgZkwJ$pCqFFa*zK7KZR@Q7U*KM*}pH#&&4W0RuCkgDu`w4S(#e@io$ z3C<*zHJH$rlw)%zv@k1OP|>J=>04+|+kriv;6e{SU}R!L`m-wwoY)X+Hg#fiQi+|K zSdIRDpM9OU7%k18)Xr>l7wM@)^Fdv3I?$84%y@ETvr0vMSg2}2wrfkoEeQweOxO2e2rzrrIFSwa@Iz&ftk$S zP5-^Z4$VG6s%A`!w$W=H9@6Kv?>2>rC z^o9s!Yqe;2M(dQ*ge=XlU55Uh$to{jL0=qVr6Kk1kK ztobSzdU`(_uqu?qXY5@y!kEM}k9BQ{KO4KQ3H`Vy;S1TH-cDf?3ng%xO*tC6mc4S8g-ME>x+Ej(r z+}Vki-^?y=s>TlQJYsgo-Jo*WT}0<Dm}B7joUk% z3}pZ84Izy(eD;+kq&I7od6=wcCA0R@x2supRuq}Us_!3fui1sg);&{tCcn7Jx8m`X zqlAalDkFF*3Ag~YFS83i7cIwzwV#iXBKgB6`@`+hwJJX!( zM%u7mCmo0fi#{1fpD}jsWB^&jO8(uG1havEdy!I%{oRuuT$u6U??_5IvyNw~nq4z9 z)aZwyw95+X2#E$N= zH_>Cm^E%GaLA8@Q8}{a6V`9$yE-j!#64?D+DfDqXx_UUhqh%K_Um>M4R$ZA)?5fWa z9k*hss^f+;-)m8Lm$Bwr0-?=7}3UAGz$EL9oX&8+6CTs@p5nq(#GbH6Xn9cS+UB(vD*2d-A` zNq^R2Bm43og*ayzTWsqMWqp(3t}C$d^% zlFS#pB<(mv^^7q>z+NEls5-wP+fjI%mBOOAErx&qeC2+-^&VSzl{t~XuO1!CNR<;PX7BGD> zn00^C9CN1iZ^q)P==64qe(xY1A6hS_@RpvIb8EpMw*75udUXo>_I4u5je9qj-kqFb z{NA46*eF}zYLzxgh!^#AIBQ+7gYNFnz8CZ}H|>um6N6LoF?fw2{3y}0ng3R&pZl?_ zf1A;t6Bd4mA#rTlhXU_=eS~CMqD;?&(|O#9iFsP|p9K)M;^Q3b;7Xr5nB94ZJQ1Lm z9||YnwDqYh8O#oT+C%S0vZ&7v<<^Y*Q(uF3{~(f9=Q)_Upf7x<867_~u0x zXB_%wM)iwF@UY>#i|Mxw6^p)&6*KHEK6GK*rv4vrEREpP06yrC2Z0&BZ}WI z48kU;a=Y9Pa9l%nk-9L(m<*)*2f_nmq9@Vt$(a02C>+$1hE_A%3!~}Zc!f{r?QI7o zb!0q!-43Sfuyt3$;en0}CQYG52~vkRL2LDy+mt-7qeIdBj&gnRif@}i49io3hfBsPd_TdN3Yyu_p=;Kx}N>4J(e2-vl#Srm0BIcD( zfzZO9M4Pe021deRF?PDZGkcOthQcuia-8lDfH+4onI3Ee8Yl9SG=jHIXHf zwtp44x{)E=x*G|jkNx4k8<|5o!oYGQj2OfIa%8!gQHG&TpLdHoovH=VfJS9t~(h+S_APQElCu#_CU{;gBAEhZ`FW25A2LtP^TiIwP7}X z(C5`5ry`+gl;U--anFYLHU(AXO*K7MnNq0Ne+D%d??aK8%n16rsmE%;zRw1m+<lVMFD@i3odufvHfIE7CiUEz8l zw$1}QgGgO^&jEV1Bzl+-g#EP?_5=}MG64UP-pt8>9Y7uOc2sYY-K=N2*mDu$8e^n6J;5r+M30l&hqx9UOraIy&3sl0Fu*{;yO z9XUnXgHwAFOQJGYv?ryA>5gew4Kekshg}_rz2>7<2UEHe7s&5Gs+ra+V*3d;G0JS% zkpvU0&x}sQkDk@Q-cFpD^e?iw)Ik(V zjC+kTu&R>Ihg5)iok?#p4OZd@y-$F2!8OAf{JM~eq(A(HAM~A3W=t3Io{&%&*$tZ* z3){NktbP0&M0F!JFuyxlfm1-09>kACWcKKRaZRd0Zcnm~n8UPQXr~iw>V*r_PI!P% zH19vqMPO%!LxTupE`vT1qyxSA74}CEPw(f}vbPT6QK*c;lZeO$%@mZOw}QYdk}TD4 z`mE(EyRYQQwCw3;I2cJ*oBcP+;Nkb9#GuXo1XFvHi}dkF2<=1GkT&qH4=();AiOW> z?X>g*no5idQ#QScah(NqIxi3|_9c#{vn1aLQHZKY^tC@}jq<wT-J-T{cn zdRqv}P;bl3hW$t=!IdnrKgI@Re(p~O5cE#Zfg}+-yo@`Jni!2 zIg5xmmqF+cyAsk}6JX2`Qp3+fYMwz&JjTk#j~t%)a1&Qd3?|YB8ceK$V?#+<-Pc#> zgb7g4h}eSpP~xr|gtGbdi-6M5btthT0WfkX@$#(xR@5#Hji*V|)yW;33m%;~Qxvj!X( zMn>z`>yXRGQe3=@1b#?U51I_erNs=64M(rfg@WOvX44Gq|B!6_5?xb=r=(fGl#_iK z(((UG+7l(%fU3Kux6NXOzbRqW+YOegP9kjicSyGWG07@|j$YV=^FFy|ho*4QAM*!WM4O7NU(gh~xffl)>HI*z!*Ut`E^ zoKbzp;zGFzW{xF6bagLT$#8f$mPFD|KcVqB5=frFgK@+GhtZ00B#6wGPc1XQj3X_z zWNT*Q$t01Iws2`G+16yvR}ZB#u5>hX#wkG+JJFkPM{9%!$^Ui2&Wk<4Py1RVXmBJJ zbb`Y%WH=#EWf}=-QJ5own~%Bd5PtM6PjhO^rq;3LU4J604f;w3kToK5ZqW(KFt;Sb z;c2+~lm)9;Qcu6o#?YO4*qzFb+zcXPiQav95pNow5wN#2WL0ZoGh`jTV0kR&L(%XL z8tYc|77s}63H3ZXh+}-O*b(2t!@4Kq7Q!SXLF~Iw_PCJ6PL+Tx<|Z~3J<_v-p_mRG zU_~redC7EA1y_R;(@DLWZEuRg^y3fKwc4QaT1DWwCt5iOL)rM|u%lcrVN%12O-oHJj9<_pf9|&BlC=_<~CUX-9J} z!KegM7dL#{5=a-bwyg|B1h?Wv;Mn(^Lp9pv} zWMfftIm`BedJAx;o^=+MEFi78XZS4v^xxQq!cV-7a{1^h0mX5h z#8ZL;_fgS3#Mh&+VJYc{yKK{CUefiTXjyh$n74ws(N%SMv368D3wo_Y zslE`q5_2a9xVVzI(69dRW+id*^*De^3Bjo$2_4fyl7dt7`HRCL37GAeANLn^2;{(w zV<91lcIp05dleR+0Nq!SeomA2ivr6ExoJ`^8|BPP!M#;vk=@ujMLw1xp67i)3$Y>8 z5mv4y=9pe@U5$%VCr^mIsB?yIt1+4M7mWzT<&MCyotQ_jP9>J6r6l@@qXjjn0~D?% zWlhiXx+fNs#XW9%DsE7{m#iVv>D~P>a}9|hUBGxP33I+>gKbF+E(}RD!6x~IBw)8C z2J>Yg@1PAtttB1xv-YCVByHpe4|IbPo5%M;?pjjc@?s6qASFhQ)_|V#@qlRr1gs-( zi5pa1kG-911!3z+1Kj8)ttU>@E(qH0#6i<8LzwMcpfWoTN^ihi$pRW}Ab*#8?wWDwTBw$WIqCgP#NB*3uT)~vKpbW0*yLk6JE)LG`qG;_At4Qq3-BOg zGwFmot96@6e|jPvOt)Z0K%n&&;%wFEwJ5dd2)6=E+(NuCzBX*Z@BF>qu7&Kaqzt^> zLYB}o+hEpK;$rRh>Q9}#ZJGPF5*u1!#ui?axMcNFqJ6#)mJ`hGEt#*k6CKg{ICodi3vFE#N)|Aygyn`9I-Fj>?G}6wxyxDB<+|NDhqiW;|t{wII10&7dKC@+_Y+hx|DV__{Er#?t8_BNbe@Mn8b|pqVsFw^v>-GcuBKx> z=EJgGgqi-p(e&yuPB%N;<)EDF{(CN<0~9b=fQHFn$Oi19lR8^!ZVDb5q?}`Z1zyzu zp9`)+uMC_7(jY#Ac+<%hWC>j>@Dl2P#U2t|vgUehbE5WUdCAKtFQx>Ic6oV-SczHn z1jyV&+EB0ZaA_rRb~Y`~OHz$w93}Y<`TTYIygCrHmsGGhUrtm;H7V?e@q2NlpIZ)k ztimPc`d$)TX2e=iuB8xG*)#v?2Dz&+t7*HB46+>WCW_;8Fdu=B;LJXfI`_FNy<={JTT89P8bEAStKlcwF|c| z6m8e>3WX+%^Kk7f$&eHO0`Xv2F=vRUViUg}n}h4*PB@!IYT_#YGmE&Jy>TwGJ{WxV zlTqXwtl5tfZA|8g{bVU=SRcO^h|a&j&l?iOYAOpnC;?>_*)E=n6&SV(NH%e&UN<1( zFwWLv9>TQ4c!>4sAX#8M`#Ns4$ypp}Z}M?$ZaYN68!lTe%JOz9R+f_ll(NjkQ?ask zt`KG6q~7Z=aV6Iw<}leo9)Zsh64}sXnXtRmp_tux2`F|ail<_BotI0yU!dR!?#CfkFdS3Q0&FAt&Q zDa>1JZ$hI}cpiH`)A%$QNgGs{&&_N1m=~Fn@v}|>ii;MDr(*T?hxD_=!^HX&Pt&#S z;r>}-?@(XriJW3ao`Xz1hR@SN)Cy|rYHlG733dYCZ+*r6RvA7v6Se=ELD+7*V!85- zXyNh`jS0M8K}u3>2243es+c@T5;cv1UFY!Vsx#!A!+h6SB&5&TkYkVe z4(}ZVohLSAKXg1##x=Y!S19%{E!M==5>T2LAfAdf@o^FlFIy;kfgHml$p;rOCTfE5 zMY6~4;T*J@q`h|5tXix2RRoVp|(_U&9T@ z3$VIQy!-aysW?t_;_a{?*=3hC0+S(gO*|OpxRc_kSe5^pE#^1}G$r=AasDEnd7k8k z{bmHI*U3&20%13Zt5xQSKdUnkrrjW|ZTj$ojX$E^5gy*a6S^9i9yjr_!}1W%;)`6j z!$>AjJz?1`(wCHkU$@ApY87LJ7X}u2q4V#gAW@t83rqf^h;gv?Hs&4m;o@!FS`5ao zd}H6cW{V2S++ia$&cUNa6G+Y>wj>cYAXmpNCsJz&_ne* z7+ZGm;STY#wEiJVbW>KT`cU;Q@hH7_Dp$eOQTV(!JWj@I!+)nBn54};j2edA(FYFP z#U-g5+`LNyt(?9KV@hC~efNM~^YIw)5Hz@l{@e6TaFqp-Pi8$}`8{$4PhyAWk}h`F zCJFm54yx>1z};L@%f{`$;;Ofx{CyH`c?i#BemgAh6U?|zI@x#n6Ftf+jt&sX3zU37 zDtrAX)*8YR>XvDa4`bCBLt zUhpcB`S<}TP4F(S;31yFUF9D(Q1213!j`vwghw}pkot&Bw3{*>?I&qBWn$e74&D#G zk4aOjL!S`)9a^6h&thynCih5r825xMZ!l{t>L+ULKMGmyXE{D}5>UFOkmvr1#m2{S z2z^Rg*|gopr&P>3_>oQ`-#y2{)~8tM)A0By_SEyt-OsST#wJ^Ekv=vVr<(H5aZWUX zX3z2dX%ECcCm!~*-iz|XgcJDbp4frJ!{O(|$1+IGJe}tR-%tgopmHxrt%?CryaC1D zr(C)V&8f~12EpVPn1cc=c|mGe_TjsO#A&jy(|HZx4jL*uYosugE_c_y(t_x@yo2DC zhfSyhQ}c*DT|FAAyd*W~f1@GtCF!gmIRX`vv?J0*nNnlh2)O)`G@t>a!Tc2-C4L(P zVXyGa{y{ztw6&ukCJ(nsrNH|oW>5Vf;w6Uiy=kK@_oZ!L z;cjCCB)=lfY*xKOL7vMMxvM+mzaqoz0)`4haobgfCc=={c#ZY|;5FG=`ei;>H3VQT zgulUAASSc_8&a0gg+t-)3sSRe?jSUih%b9*-sl{Kr(8*lN(o&FdM-KtPGsQaGS zmTf*z$m4}0zXrUqStUOi2EE6337QO*PT2Pzop5f5bV7B|6rdA&fPVoQXZO568cEVF zNmFT;hZ6;)zt`xeh>77hNKne~JJllL9PfYG-TY00h0y+Al1a{i=?9E64OIU?nBC>R z!f?h$m0?r3`vKRo&+zL5_Qu0Z{YN~T!aUF86Y1`1(+3q2Wey`+93F_JwqJo1BXZqQavDRcyZa1QCVUsiRpqw$zAs4=4C%18>y;!-5pOaOf`0p`i%_MOvI;MRO1W}PwGse)_3xXjDd1LFvWcj!9VbL zJsO;U;#z6F@=s$anV~;P3bAT_o7dV9mUV9{6IT9WGdhBP{cG_QnxYx;*Y7e)K_f!@ z;LZ6uLaUVyyD8f&y|xyf66#ml>JM-e+#)b-38#QYe)HJ25^v7EZR(7&V>t}1oGo^d!msarJ znL1eMB(o@$a)vWz^r*LaD^yJkPBpwrmZr=$N!l9og|#Au8nD}(rr}+7Hw)@$6+7=w zE>_Zlj;7yR!G9Li-O7TelSRF3bVljr^vvMWbQC2?kYz>N;~Oz%*0dEl44tj151khR zKNexOy~CP1wYU(>>m^P?Wl|{eGSQLs=KNW70T;!QA+MzD`RXE9DmPrkSAdlb&7$Y= zB_K!iLjQzfy71A4t~LJI1V_&N!#cgyvG_j)+~Jrl^(D`sz?O#EbwWApo(@t-_CC%; zb|}$~OH_t!cGTVOWMd)rX|}K>#f;z|JKC9_n(1jpOep*DkNq%LPtVx}1PS?dvsCgp zncHLhtcH#Dv=+X)k!w$@6CIRxpmsRYJRE3HOP@egON?{Cj8*!`jpweyN11WLR8i-( z=b}YEnkaqr9#?bjqo0Q$-GSC|4?coQMV(ehJQYg^T7sz~hWa@;?}$MVHS^C>-oqzH z^yZI-25(-N@uxrqIPQeLx(@$3Q7@Vn1ldh!cy$kyN3Z%yVd<_&julmS%%2rDgEeJn zEsst-AuOtIhwN(nUFha2*Xm-W{^wxvE~Zde7v8#1A3hnnVuSM_)Rl%9$J9s1 z^?PBN0WieRQ5<_7^Il96wrnX?^Oi?Lg{!<>6Z$d?16g6zRE-S5@I2l=7kt+@Ehltf;{`;;C3XzJkGCv@wZ??OwDhzS4Qm zi}uAg(E`0`W4h26jpBnP2u6@Z*7)SrvKZb7Zw2$;>)QJ7uJy06F%afTlVa*miLl81q)7<4){F$Pdi?4um>#9a@wA z^58LN1Lx}CxGD=@>tM|FcSBW?mUDmm4DsOUqiol5Xz5QY=`}p1lwRij%qhHCh1ve} zv0W8c)K1a{3|6TPgei4t^(Iqz@>n#IMu?|kp*o6dCx&9Yd_4S31?B%&w;9be?En44RH!^1G@m) z72m%d89)c(e*aDYj<8u!x)F7={oYrosmIY;XwrzT@lJO@yBKwbbPZpC5_M0~_AAnn z9dHXu2V%al5(WlRf48|y(4vU1>4GX2UmGAh5WCt5UIo%H%t{&rVb!Jr1koToq`4DB zovqgPHq=Sle*h&K(`XzG(;B1Z9N5~JI(nurlEoz8cOH|1v*n0<8p$>JK+nOR;hrrC zuNzYrTF;TM|5c%G6YAcij-8fALw6yp1kq@Y6@}&;d_Ul~)dBy{YDY+ILS4{@N1M=g zb~9{+y~h!}aK+wHsMr)2rY8##E9$`;3zZ(62~kaHRr8-bQ5LTHnC!s{UfYqAa10q} z_+3-FpX9>kU|PwxXD@D8-70H6RBA?D-2M19YeK2tRdxM;qL-m!Gg_Ja4PniwKfZjM z(2NFZwp!t0^A(eor_C@EAuzK!Jz6iH=h>n*4+T}M<3?F)u@>_EJ|6as`Lp3}_<_zI zEU)Txuq=eS_>C#DH28m6`eF5_rTdTDPEolICvyl6hi(N&D7%np2 zn!)Opbg*5bxv0-z$(5|r;L?hgi`lE#Y$h+!MA^F(thx%@u3#=jmu;u>HY->umD~me z`z&wVguOKi_C$3Hw^Cwoq!sOEH_1%YZ$%fCzcRt6HTA@EnZH`o8eOB1#b=b`=ngqR zLWMA&Lj9zg9Qb*U&{jVGBA;kx{yF|~oZ*!?>@DuUeJX50=Cjtc1;vAXpSIM|;qOj= zIxwju)(i&|l$(m@mNVN@eW#ZeSOEWRK128Ab3m^G@;IPX0WUc45$j}7dCq~SD&QY@ z-ei$u}^Kj2F$_UQNVYCCj+TJ`I*VWrFFPxS)f2QLu<2l6Xyev2z zPWz!&g?6;ACc2as$T?~YrOuMlQ1cEpEx#QdX;)v%HMBR{i5AKr7!SkS(>AoQgiNB= z8ly;25;asUc^fP`&TzB5X%nJ)GWvFDqZ^Kx1%v3+qU0)1Sr= z-;wrn-9#0usE1=eNxL{qRfRiX)(I1Y+u+lQ29kX+q7!v*6oo4J@jP!#l5aBxng|<( zA_dV-MpfK(u|h8y#)uDOpU-!uNQ()A1D=@FvOi z-mhrlC}TrQRT-E|^}t204?O8XtMDClPuvAQf?7Q> zsq^|zm`IiBVY=+&do6@^(M;44l6%sw1Dw$B`Oj2=@5q7cD&P!ODF3($7=V?}=RcHa z7(D$skg5XuabUg*SOnp{sDt%AZmJ*0ljKBu04DXKNtlS0jKHPo64b$uGU?c5zc1b< z94^^@0Rp?PH&X-3r;KFHF>~k z{xgUetv5M6-3YdC(k+GTXkwf>t`FTn@JgXy zFt-~ANBdFd2H7JF!utfJ2+LDtZN1Tk{^bYD-M{h>(0WJ^Z=xLfQ|H#dMxjh>HqQnz z)QUnOJUmP6^wv_d z=ptOa-_j8L2U0goYPt-hE}Fw5Js^BHE)U78s1`0&EMZ~#yH(L}cp$BAviO~FPyl=x zh$mR~;4+BTHExI?l$)q?fYF0!d)wy$DwoRnxfR?UM0;6GmmG;bfaZg#hgGK{X$hyn zl)<#DTLr!`5MAsjsA65b0`?E4ez^U8IT-WY-q2(S?Om%}Ls77_GwQ9e(b*FnLlXW8 ziG3Z&U6iODK8zckrd;>q8*$q1!@zeK)#KMJ3x=RQ8z?`NHpLM&U?{DPM@FlL(mqws z*8hL)v3!Fg(j8q~R00;jODF+8!>GOH-4Nl*N-$!W7;(#n(H{8rYvC|jjSK;=;kYQK zKYAw)s__@{0~Q-CIVjJ-i)7gEiG&7(;S6bu$n62dkwl z-PX`&G#!S?^3~B;S|xZp8Yh)}C_9F>;D<$HsH^S#7buP?NJ8*4Lyd>R(lImyFIAq5 zq4ml}KjpE-o5&Z}1NBs$xgGq+(t75*d5Pk+Q~b&RR0}I%2VqZjW{^6Tx|>G)X3Ae_ zNiCq_2VQKUU@RW;b%v_rux~5CsByH4_lmkQ5##fhOvEN4B8v_Y6d&k(PPhPP$I+I0 zt7k=J8>;`{vGL++CF~(^JZ_j?!t(LhgXn?rbP&D_Tt6Cf{8Z={P0P`rPar;;c5So! zp=e!=(vyoLTwtm&Eu zFgF%0giXan$>M<&+cA~?q&c}#>|_kJrf+klm}VM^b<34vk<;ie{8~n2EIO(lB*xO- zbkkkQvYU<`wS$quM(Z3Yw_zsA z?Y=GLD#vlTzivsn;8`d)?3R?9ISb{k-;{DDv#A-OBX3B#D)H1Bm&-=+bP#=gT}r%* z=Mo9mq=d~Jw6yw~wA5}6?(DUh$#ZB+LbqIz68|QmMD`UaQEe`kRq=|nw0ADA)A>t6 z&bE+$od~b0#0Pd2rZShHU>-KuavrTk+g{>I6=B#s+L<1`C~e=LhxNM&@8{7-+T>!9 zfGecTr*&z@1u2z3A8T;-f;8rtjK=C*P|2=OM%hj0rR=9hlC#4Q9M5zU5r7=^6Vw=uNv6c)+g&j;|bShqp{bG1* z5XwJXGhq?V82Bw+?GoC?Yz^*+Fi!EM$KWd>PRA_4INbwRmtYuPflo{5UwCg43KYm9 z_y_Rdv<9?Hp_NLtKdGcW{?K|UEdxtZa1PrI*HcjM5`0O)^Wb*SWGP+jovW8ao~K4~ z$R9vN4#Z?Z8HW5q&@7|AB^UmUvwS-od9ZpAzFRO2IxeG8-enXsvy04pwKJHxFDQeV z^-!=3C*&B=FQ*+z5DZ<8cbWI$%5wZQvZ;KI5!36Kx^jAL3PCGy($v9-6*LwbS+D}f zKnrNSk`5<#;owRfC3uar62V#!xQZ^JJNCl@PfbPmxe9kxctN=uPZRQC?rOS}_R1<^ zSwOc`+-`ka{W*EbQyIPqwzT{RZFjbTSOl%KYdP9rmcY@!p1W9H;dxFq75cs&g(;jmLGFWQV3tFysk z3mt_oy~S>!?aj}48Ju{;OYY(<(lHgW$j0w~Jl$lyl@hz@co>0`=woBvMaoIg5va5c z%V`g5x8Z(r`c@%fSxjO(9d7q)i(vh&Q7PAlE!*j6%ne+2&;VC|E|D0=-zJxV$lyksRcJe@ZJ zbm_EXEh`^U5nPz^dTvI6tY3Iy!T)49MUTe{B#$#SY zF$;H$3>Jp`7R&X+BbxdU3k!@g8}$d!-7{MAugM5aTApfqx`?cL5eoP z1Fad}!imcgGTJe)pPT6bcXrV#?vXy-B=*YnE74HT6- zowtuimN2Ki4qf-4xH+WkLGkl&cMt7s*?XN3_gBPEK;ymin0MFj?tCYaH3?6dWWV|& zBBQI|8>bBO3!e4tqqV&2D+-f~6da2b3ja_j0rU3JK=Vs3ykGEt<|kd`+=D67KJ4Or zFw3MzHFr{tp>3lQzWCAyRxnAs=RZ-Z^dcTSWMNDf2pfi&e(IvcG=tt*nEq6T3t4mp z{hkVg_tQ$2n$_G++(_lOPHx~k<21tS1V@Vn;ITqp6y|?%DN>ln`ZDl7fFX=8RUDwc zUd{f8TC@M9<_u{EFxkb_`T!={_-4pK>R-cg{%lau#o%V*ssL^CLNoZ6bK#$#fh;PZDfZ6NG8 zHTPcgUJi$IMbRCDh#U?>1Z5Zw<`93JdY4}SNG(2Z@%87- zm&b9X@*J_q7_S7gL<@M9tXRJDmY2aT%c#c}m`>7@#B;_%F0S1B{l0&x{N_*bZBX|V z{aL=p0^S_;Tk=WT#;=8_G&?u5%W2#ombXe4f}O>tU8zFlS1Q54%nfJo{TuHS`O+Kp zaE6sVyao~JjX8occ*7Z@&ru)m)rvy>B84eM3jP03z@5uE+@~JtdvU>9UfZ z$7xGR&*!wUq!)0y5PuF2bp`!e(!%B=Nhffb8jSXLEe6q~ka}O(j1@B{NXc@m!|6q=o%3NsEG;8t51l@;5vnT}4H^sc2hC3lEt{ zdJ!++JI;65`lXzHFX>gBekSR)oaXc&?;{?iESj+cmINe&(qQQYNs)w2?+EYcBRne9z+E_&wT8P#Qqpwx; zBS~N41>cY~cYFRBNuP`14~OJ~=$mv&pW^s>NuT6&ilmQodak6iIXz9%qVLB@TExdd zNsAcjF6k^TA13KcPB*nMis6yDk3aaUgsP~7+$1ezY$Yv%)I^1U$N!`f+7U+IOIj56 zOw#+g{Tvm3LDFb528V%s5JvY%dJk7fQ{gL$6mS%%=$R@yS|vYJ(!x%JN~VKKCWO;5 zn1u1d8c0S4r~M=?aCeo0gQSHg%p@&ZY^1_Jnh8$`-8@MPo4JzS&Fx=N;V~yw3Rx<8 zn~F|VDJ+t-Fchz%C#z&eN?KH+ucSpqJFDo{l8zCr36u|_3u;PQD0@m;w4kh{MZuPm z-o;yEENP)zi2oflj02(jTGB%Ik&3>dk~w24=YOGmNHRp=q^s!lk`^sUk+i7vTuBSv zX_6KNkCC(}c%Y<3rMpX7=!Qx9z;izT^Z#rd)>;fFe@TnsS4Gldyt+yH8gH?!q{R$q zBIySl|BiVP+Ihz5_mY0e>1UFD&*>aVf9CWBr1|{+oj+tt27Q6_9!Z;UI!)3RoL(Vm zYfdLi+JVzECGEoLXi2+sdZ?tmI2|ErA5M3WbX}yw^F!oAQ_g50>9(BqlXO>3yGuHP z(+-jzz-co{5973vq{n1B+@kwRdpqaIe5z{EVb1s4hJ0#|pbYuc3i$dDO*6F_W6bZ~ zc{T};mrxr#_sf1xvk5E@z;yt z^Gmv3^Kz&$WM^sc&Er>ijx`>BzQV&GElhijM}7E{m7x_hzI5Rbm|8(oiFC4ft&zJ?S1=Ld$IzSXr3t|dz zFFG>wSOI_iy#ti{Kx65XzWlVM61=;q(ZZDvc>TN?zJI{Cz9xeAN4zt@6QGZ@ZP_n< zjCl~vKg%1X9IMpmix_TqA>2i0n|bjgEk)^%zHsL={fe*0U;ly|LTv;Dt)h$R)Lya_ z->>*?eFGTumDZqzJz>>Xyqm>0ZN6eFzV|2+(Lv^a*op)2ihqm)*Kc^J*A<3*!{f4C zSo#g6+jSSxi(RnEk>63u5*Fi!@r7=99u!#vzis&LJ37)BqJE(C#IC=k>;6P(e;CF; zKEj%xcwuoDUj3va@y@aPFBG2N*&tk(gf8x^sX3Gy(W>_93F_jK8>P zM>R|7t&XZ%-=`?N2&^=k+IZ#}qS1WBw7Q|O<}bW)UTlogo!U#&ZH#r$LyN+;ut2M+ zgN-_?)p(M1ng41v^)yw(_R3)DT(kx9MMNh3R)R7FQ$Uz8Jid$H))-z=Q;9Ze2ZtOq zwctWYO~Xp-&ZA0f_B4@f zm|?Z>X2?wA!4D(NGz~OUS{btkyIjD*Tr+`wXendvfVrkFzP9_(TvLzlBrLEM4WYAz z#!vIQg)#pTVHenJf%3guNcmQ!QQi&WN~8Qu$S#fYcw<-3I#v#Qsfp{}K7BE8yN zisxFQ_dSFiD-rj21uZH+6;(W7{5kQA?CkK&D>zded$jM=03 zc{pdU39?ukh+{_SiXV-^(LodFR$pLo$>Mj$_*Gc>jl8#&Q8p|P{*SG*0Lvo%9=7ky zJA(lVb`qjkpjg;}uHCVAVRx{Ob5FF@OLbqKGN%mn<;}e=BxM8j0{Z+yR{l&U?|k*OdQ`#KYW44I`dTe< zLGkwDC52_@B@HVOTV(xEMP1}aY30fNtS1jY>8JZU^x=U_d2*7a^EqX5 zDzlJ2gbSZ%x}RR23%lTT%7rsh7L+$WdTz;^TQ976TMy6{2dEU2 z=g|wgwh3SrL0JaGtcsS9g+_WA5vjXr1p;KYtDa5!>Mx-|x+e=UcjZBI0e>Yr*k3P} zBqmR+C{w-U&|ChxJIgm;_+$A9NfV&g(URx+`Jh%|&dZvQa=E3mA9f|nZNDAuQZALk z40)KB6cXoBDXh$gJC4b{e7J)W7l_gZQYMf}N|QeV^}~9t9I-BKmS1nc(FEJ`^J5A> z^<(&g0(vrsel}a|3_$s8N-NEZDLo761$76v!fuhvPRXr8yte7Swi$XI-vm*cJuhvH~WpGBEHs|3!tD(6d({9-Xn zVsHD*%58p9t0d%tOp5d<1=&QZmC}QB-%L)q`^fNPZg_nueF|I4ikAl6nn9soOM~{1 zpfV_>0V;#iAL*6S1G2M>K9`A}+GX_+*LUf7&*YFq6UOwE;4*q9xn7o6y;q{kA~PzT zk|{3*g3-P!t?k0EYuo`+6y}P?})-cUea#Yp_vR7+qWj%!Vr&j@OAw{a_dGwSi60{}b zlPiUr1ciC3LRI7pS#qS7Tq(5ja#cK8)Ga~EgR24lC!6`lWt*!rQM9H@ovFH~-p$o1 z&v%$@rF(U~p!P6X0+|c^!WnGN8hSxz^JL`3X^rTJw5XwbTlH=YlIWUL;VD{SOQo9N zxn;2R&lA~PQ*WYoN#c~DWt^UpyB4m9Ol;8sQogLSpt(4){g#H5b>`PQCU(k}vQ9re z9~ZVyUb{Hudszfm)y669#Ji3jV*0w+BHw}$d0{#we>p_9b7718!Nu@$h-9rxTG4F# zw9-0N7i(6__qybuo>I6T8Lo(-D%gik=j`7&r+IxnD%e10Z1EXfpE9*vF4d<@#b~iV z?)jY`*=*H-AGgp8vwOH-8qm|oBUKyXh^2`VI6^B!nk}WG)z_kVZ>0aJwf`ZJYxFtV z?eF4fPexs{mV5IgSrdHT;JaK5(LJ@a-zEP#n91KPCWrVmr4LZ`n*^+w(?BD!BUw;B#MO?FL}^BKJ4YaFKnQ>tWiK&r&Oe(@V~7#4&!KC3FuK zgtfqeM{=lz9;9vjBqQ9NIjp^~E%iJ!L^WFSOp87$Thp|HY$jFsM@#?FPTp}{7PbPZ z`9UG=LO@()ZU|mJDi=bi*TzUp2*j87%060VQzBY}QNyAMMjSS=d%Tp`~~y$r|t&W80A>#>{R{F)1&t+hhONH_9n{-^k>K z5I5TMpatF}NV#4kXF)9{M#eXC7S?yg=yI?T{V7_Rj`|bUFn#Sv+OJXl01+e;bP8L$8GQaQ0~7h1slFZHR2lvt<9T6=+3)QPKQ+&U+$qlQbr zZhEy0zs28P+bQAgOmfq@{kV3VbcJ7ThliK$uD5c~OBBUQhFQqQHxf zrPLf;Rq1hp*Uk^t;_tR?JmpXmPwD-kr5dx#`B}gG~An!Q%o+V{BVeS(Aopl;+XKBKc%KU*m z!^OL@b-7+Z8+uooFUC1^*}NtHAbo;%>Wq>3?R{7Cdh%ifXnPqzJ|Cz5$<^z6=o*46Ys8Mt|GWZYeBlwN>dZP!tHeU`u+ z8if*0#j+n@!f529WS{j9>q|!K9jPLljDeVbNxk{3W4TpJ8d(3Z0evhZwlv{e#_FXU zte$u^4)WW1RfKkq2Vn{2cuXHHJ`*s#+IeMqGU+@4GW48EwZKG31~B}ieK{-hC(R@Sr) zo~8TJZCpG{pRLt8tRABowAt)9o?kpTpl-1w4PVHxlg>GQP`L6Q;CP{lU{w1xVBeGY*}QOa(g~1XNmg)YKInkRqc>{uQKAX zOk02vP4_6?eyxob!e@}l3+bOd*d1Frtlg~yI*IEd1n%upj<~W2cA+F*%!4)Fr4T|c zi$SJFD4o<$#9XA&5;AC7nYx5mawl94tzqbPeF^$b0QWeA7tRLS^A{bh*Dj`(Cu$-EqMewW(I$t<2b$SkifQgR;47VG!v@@Tn! zSi8Gj)huUMP~FtoE+Z;X8HfEDTDoEfukUblfAQ z9tW}RcRkOTWTPTa%7*ojWi}|%?%#Y{Z})GkVciBjr!#DQf?B7D)@_S)8>RDEkBz#w zc4A$EK2Pa&%A&OH^a8%Fm35n_pCaVWCTgF2QgJgwm6dXTGaZUHQf>Tsm33CyPoaBo<7ZVcZiTYL z|1VrpVTDYeLZd-7Xw^sB_T|!RDjv?YTs`sV9r)&{?B4;qe3`9IYqLyVPJ_9zR55m@ zy}1*MMUsb;$y+TI?-`_@W2y4uQ<)Nu7n?6pdA30WXeOD+Kiaj$|62!9Y3>3JtD{Nyp8a|zhhvdkJD`VZ{&U1} z0h?;4G7TAfP|u^i6PX%GF!`{^!ARXlpDMb1-A~}z|B&7wO-ix4QpVVCzCR;RHAN2T zE0TqzQr)FVZVjd4VcpX?VjkJ3myaGOa}Lv^&nr(4>(#V!v#cIbW~u!*b@-k?Rq}8D zR{8Y^t}gedT>OBmll*Bn{xr4+k5Fo~nX1&RJ*s~ps=D%+9-uFquFK=R1nkmJS9)e0 zM-SuiYr|FVDkWNVZX|^IgB|r2H)DLPcrz%y|PwGwB&b|61wR5KM;-~ao)@LdH zJ&opilXZ#7$O6O?XXuZeoTSu0I)nOg;&~SJwI}IPHiKzxb{KY6Z?8?8X!TLN#5l)u znH;T`*qK*0oufb;k;rp;32poYnYM)Isx?6ly=GXFVuIXQg234GcDMTi@uTwNNi~aE zNOK)8uFGIAkF!~Q<~Us{-e<*Rl5xtC6&JDOxZJ&n!$yp?AxBv$e2F};bBsbhTmtDM z`7dK^sWH0zctBf3*yXZ*oX}n4D|CV;$bu{SG_CR|aa3~7(e{s2k_2OlvE?AwRS=rV ztK_ppBUKs)Wye+02ntnX|7(!!D7Z#Gqb<5dJ{v6_*Yz%h7KdKf`>{Og-|O%nhADpM z4S0G_H{j`<--NFqwQmvwX)pI~5&$nPMQ-UUoNI@Wbz<%?D%Ni6vz*@s^XK9|jOCNv z(o=|6F4I5!-`o0PjYR*vrx(d{^S&?3UjB}7vN2Ni@^|rz3LVb1ui_%%i{-z2`hM+T zf4P2uH(Rs6Wtg9|Aj|V6r$iDjd?E)T>AG+4C--j>pZgT4Ptf1?)vco;hifDHO8#%U zzcf8+h;ESh#!^JNO zkT84{U8=lePfA40s@LnR% z$cTN!<2k{=0^P)80VCcoUG2u5(8uNHv~AV8ipO`%J=7)EiWiKIhj$UTA9Ri||SB-xK5V80>u9{HBtp>^%{GVi@XLTuK${`0j=9>z+@ej%4IP;7_D0j;0#Ii z2C%V|e52QJJeP@Y07Kd<5LcN}_bqBELvOL;pLQybqVTPyuwAUecS_+qipmT&3>pl` z(fF_a*nQ?Bl}YT=3iuqg#0dWiV=I0K}^2hwA7@|ux`i@yEk|-;s8t;ObW-}SSky>r ze5J5@HB$ojn(DGS9D&__=0N%|f#38HmsCxy&fabN+dlf;Cc2!@Vftw+n<$goiTig< zy46^jbnZVod)L47Aalj_2M%oASX#WKV#?K6@vJNV0pF6juK9dg5%Z=WnP>*R;g&4hHcIs~gzK*t2u4nzNuaUg96kr-9NQ z$yNa8T&*FKXK0sZItV>|-C2kclbj2;Zg>@vcD zd?9NM=SUXL`657phZbG2kZDBhS=ONlVnPJ;5&H4}I*DhWZk2{o-oTn>%Y^E>NuZIABg5D!U8 zX7rF1Nu9;$Y1~bUuv-mf*{Wn%#)9BvSTMEHm(#REZW;Io`yxs76oobeS z2jxdF&ds!*9ztfB;D*q{s!E8^n;SwIswS{)UUJg7Cg+kngB(l5NCDoVio$b9%@p7Z zE2}iD9v(YHtGZ*2pA2_*=5%>kNlz60!cBUub$T-CdDb1=vyw924s9`8=>blV&;!NY zE82>+ycK0pD{7k#DV+o9qD7{}xveYMS!TkR$}&AQah?vT$Trl1sd#V9i=}dUS;O5_ zB#@gO2v&76AvN|e+)eE)q-`%R+1l_H29;MS6fZB`+K@uiG|qwAmU0Q6*NT26>0U0j zLnR?o@Ky7)q*X+^r*-B``#sox$!fo5k^@u@p$BU_Br=zoR$6T~oN_F!)0>UzPt%ey zoD!PO8RBxdtZlnY-GMTf^eCe+rpNI55}Y2xQ%gvC44+s=8J;TxhLh7W;F(l1BLg7w zrWu@>ll-&i|EBjjgVS4YQd*bfjh&)hD5bo6r7TgBf}1$~H1ATj z5A^#bb(z`(nFb|Qy3I3_F4M@FN%x){%gh^DRYJY$_L3qC7TzwNz*E<FkMK!f+?5nt@c9^8|a<)rblqIGU#*DU>8S~L>wc0qU zpv>@czSCb9(IxP+AryRXA2Nb(k=TsTNOg5x7C&b#VzEp7m_^zw$NZ4XF0FDn zL);z)A~$BiN4_I4rj-)?(T;4fUOwkQw72-?bWUQZwK*q`Q8J&htyeB*G3|3+*^tXw z+ObZa=W^zBhUTTBXyWb6!{-gl=LTLApx%G7JUl~tDU*k1&M$rP@XR0m)gy3JLLSJx z{>nRJ{2^b+E`P{ydF2l|ERQ1TX$4?3JE;PkA+Ei1$B!~viBAt6_mqq2u9wKI%N-Zm z2Q9afVhSWL`in9dXw}Gr^P!)9N`g z))-zc`?!iO(Lo|BIy1=T`?{eI@YSua1vHgARn4U0UPO11g-6V++J~%4<<7!Xv-Ca- zJA?FLS#{Y^jqW?IGRR3XS@oHYF7yC{oFlY;K1!fS5d;cJuObM1^VY?~7Xj8o7jb6O zhI>n%r}`W#w-j}TXxqIcM-&~VAzsoVO3&d^-V5svaTan#r>FkilQC3H(^I4vl^$KJ z;?5Ag06%`L#boi9EV|^YZTh(!&Vo$Y5KG2Oa3GtPI*+!dc99Yvwqo zj2W+Dri-dk-?I>>B-L^-ccTxqR0)60M3*70DO&GLNM_#8@`2JvU<_ChonI9+zUMem4p2kZ3 z$22mm9O}ELQGA*5@cuHeJUnxM<>B|HhA-Yosb`T?dDOp5rSOBlfl~;71E;2_0A3;$ z_^t*DXX>p2c-NE)53UH#tXoC!ce1S_S$ntKs_4w-=sUX-+;exu9j*jN1yqR&rMJ6u zyUP4fF=n_A>jYxE{7WbSm3U)uRY3b;b)PwuJLo8>{Ohm!BKan=7dVU&w^| zNVcYWv0@z6en-+whO%BJaN=zC}Zv9*R|J*^r;K0pgJkC4Qy>PGOS2 zAx`Nir5b`0yh;?k@i&D(lSvK1TP0F>jYi;}GOiIg(WXY=n|^34(J!xXqMnVx?|ql8 z9i2JkTw`#eo=w21+M9p}d){MJXM|58f~Vvx`ZoMRVSk!1)uw<60tlIg7gn|x4U zy%50k5*7l;v_J^p8hIH4$UJasz#H!sc%?NU;kPz`t)xO5z#P)O4d4Tr*#@u?fd|WV zzqbWs4Bi%yu1#A&PV8(;r5^H5lSMxWn_PRV(5vl0iCed)LT~X_n{}W1JiGL44}1TO zCZ*ZFs5N+_*oGZo=`nSHy%VF!2o0F2l@3_YQqp!LEB_-~I+B%VzSiO+{-VNT{pXsjiR*oV8(i}R@@Sqa${@w(5Ic++l(yFZT? zudT%QbVK}xoau)6l4po}=C#H3rq9STN%70YXr^dUfhgc=&zE$Df4@feC;SD-MlAWB>>Qqm&M4VC&?{(3Z6NS!W&EGUf}1SDEw|O za5~hz!5c`e-n?5jF!gp;WK49RxATVo*GC#dMnAL-K<{qtl`U-T#9P%rd^MjalHO9 zRe#l=T@LnhhO+;>Tz~Yhy`MmT(gEo2Af*SO-&^_)K>u9XI{^JZ?%Mjt$LpWNm9qbK zrC;^4_IIFjfVEm^5c;>?NuXaFjDD634Mu-X={6YsOXaV@&KuUUo*~YR9wjUMs>@$? z4RH=)?|Gr2=nB7?K-bry=wi}&7`pOGhhgYiEt`g6tJ@9R);0ge`67ZVW$V0hzv?d_ z+lS+8rX@z8f6ui9`ah09KXVhI=r15`Lealo)`gel)6sq~&N-Zw_BI+S$$FA9~5w9q}&C_7hww+xM6JRre|>GZx?M zk=a&bJ**HerM2tPTegpW@^ zm`RF>3>xZ7orz>)7O+f2N42xIj=V(^=olw0CZXe@%$S6Z#%Gj{`jZ(Vq&p+-E1g+o z>tv_D75|+~`I&N>^5dF9Moe_37N0QZj=cSTVM8q3H0$@yJ;B7;Bh+YZXZ+XE>6eD zdB>EId1qi`RcSf{r5?vnIyH%t5t;ruI2@KIaorN9JAhf2qpD7_&IW}>v#5v8=n zpD1-ZqLl9W6Q#tO|HOyHnrGp|zYg1)hUZP7iBqR%IX5~k$@1A~s(eUkY9~CcDT{@t zJuBA*9n3(?LC28;wvLl|66oMqg*jN$Oft+x$EE#B$E~?oGi|@JrszDZVFlehG*Q&% zp{d9|TT{PW2{ip7z2{>M@u3B1I=x3}dawX%Sc|a`Yii5y3(>)3!a{UZ+HLDN=$Amp zC~3V2YwpSHMYJG9^A|mAAGVHi4mzJSpo_tw`j#GcxI>LPt=rHBpa_nd=saBxl`gWz`pB3mJ zPPLL8&bqmkymGhgyz)u^iN_N1<+7FJqf*;!b#1*8s2eCauJ>-TZe--HbJ;tFhTuw<&W1b$pI-E!Hs!y%u#%Hz{>>*YVCWY*N13 zybfOxVP1#QX&X_RoE1&W$(G*hoqwf0xWQK1G-Cp#UpL6J^^_f2?+vQ;-slWT&N&i^ zQtTY_BH{XsG8A@=w7l8-JY*hfQ;wcWIf;7*yr1%o^La?2~pe4;9hIN z7rsz9t>$L%+G`ZvdzrfEfSNQ$Ez$Zz@9pF@EJHRt7 z2cP>y;Vf*}0bYHX!b5g~6EfckPVU+XK5r>_`o{{VP=te@UZU^^;ouaC2=Ka6FM`ZS zoHT+?7smrc09IYBz&5)8nL6DCcu}tG0-Ph?b^+Ftth)hEE>z&7-GI#6?E$2i?E$2i z?E$2A*aKL3fdbp@1*CS^3wU0x?ggAJKlTFFk!nkHtv-<7A}Dhsa3P zrST!$m5RI3({Czwu`Kxzf}9F-7(tGEiR*esD8ZA55hQMW7{M8{5OlvG9_Q&q=KLGO z{$^6u>N7w4n_gh(pYg&YlyKD}2vcJpLD+-4(NnLfRL{uTBZ!xqsl>Y+MLf~WcyXe{ zmeHq=B2LLViukk{h$rWOB`ZA4fWbEyA3K{lL2JyrBM_=ywX6LV^l#nVYT55H%; z;@_S}J^iB#sAuiQ1@cT1nS6mfLvwfmu=qFy{&5k-AIHk3izp`gb`g^3+a*ZWd|!gx zHAa#DUP2|yy)UDZ#_BR4jn!p9;(3<=i;h-c-z$K`^R56MkSA9F$4ZKS0O=|I0~kJ1 zf&cvjNGI_sU}@=a70{4rR{^aVVnAky?RVGz8lW{p3~0>|16ni0fMq1;IvII~T)0lu z^pD~3nW-mhB}2(gjc+(pSQ{^H;4q!r(V>Tx!}d$~4I~ROi;v{nq4APMqa^Y>L;9OH zkz@heO(aKhJ37%JJ{d(BD0&OiwhvLJeZJ)^=GKeTQDWE7CyJ6cUV27pa+_RST)Nyw z+QIGU;RjT@?6tU!e1XAAe()U%LCm0d`4bX+53_IGL7c_7cMu=J-RSSEpt9aG9rwG4 zZyl(_zuv_&^x5y>8A77>z<&$?AG%lJyJgQk@W25IA9^30Q22dtLb>iq4G~v<5&|i8(58SEfopRtYw101DfScvN z7l7<5d|gmEhAnTa3`_bi**BzZyzmGm-1%RGiF^Kw z@S8RW_gJk`-5@9bMLcU8B|hmr;`dv}i&s|S&)*|XIP^W@J-HkGYNZlqLH~b*VwYaPL+M5BmsySB`%KCouXEyn9RV7t0i$OR9eY zU))0B$v=ZPm&%{P35)&yiZqzOoL(*$HKqzSl0{xJd5)={9i0A7)cE`Y=}69cxD{D}d*q(Ne1 zE@8Ns#72l)y;|{EsAr_A_y;C2Qdq&wBt}k`hc$6k$PDEw7Of>gGPU$disYpl@sdR& zRmJ}~DU$OgX)+{Rb36L}Gzm^;cuAvVm^QPzGA*O4QOvDQ^?2z-k*eY!mAx~GN zBda0JLNUAMULZGIkxyAo$8ZUoBLQ)u+1o*@vL0{mWO@aB^hK2L6?0C%sf@P+Q+Eb4a$CmiYl-l7ut?THF! zZLA0Q)QSrCv@#HDV^e|?6io?!rviA>2@0PhcT$2Uub}Y7sld<3ja1+SMpJ_~`wjf& zIEAN^7OBC*$}8ME4R|$ak_MdEXd3Wa<-i+{RrqYVmj>LmoWhr;1!p5)TJV{YG97r6 zVDRgFR>5i#(@3jy;FHQKJZpOJD$*=HcuJX>o;-7dt;*z?KP56fVA3)QT%G~&gxtvh zI9*a_1Z*UwG6J#?G9%!GQVPtL36N!4nE;7$WCCO%WF|niHD&@#TvCB6GXt{zH8UXN z&MbgzYs>=3LZ&Q$Jo z65tJ(Lik3?T(;Wy7$L6Zi^S)n80nRRd^FyNe8h0f2X9>t!drC)DQ~gxzy~=N9%M!E zaN&5t2ql=r7eNMQz6jRkZuEr#QYRm|zoRd9jVh$<%AJke8(b(}c!Uz3mF3ZE#?bATrbRQSf6;GCkD6PzJjF7TT9z|ZtnINO_Yfe+8C z@VvRf+1`{JoPk_!@UsEn)p{v>yu8c}{@q{UoAZFPT`~_i!#RKO>i*!TdMMmQy8D9< z&7<(Z0PqshIRKnNT>$v$+~8HZE1VMw0>HoKQux-q;2chn7krdt%?DmJ7x;;;3TJCV zKJdXg6<#0^oaL5*;F>HCB)^=LGlArn(efq`@Ux!+x910pkeB%ZLnT`QKu$m{0H{mv z0)PXvE3i;OK$f-?1mr-%f`G^6TtUE*@~$A@M_&c*CTg*tIef5-e#f%&-e|zGx;MU4z!{kFT zO2EG|y*Q%Vvc!uPy{Q_2j3sCQ7@L*A+2yz$eXx~;R5HA1P6n1R*kG1fnOD3dO+fz4 z@$!joswQAwNrN3`nPfvrl0K9P1!Y>Qq=(3-l04trj7q_tQWS$N8RHe4kkB%e-Att^ z1`OUxlYUw5M(=NKi)&vp$l%f#&?|$IFIfivunwgRp8S|zHkBd01L+Yc)l8)~NWPRI zy_j^0-&YoXlYA(PKN-mdqrY@I@V!lx{!eLTXfXPFq*Z+Ba_}snDhJPit{nWnH1H)F zEA<29TRGIfO0Dn%<-s?|r}E$o>wW_-nHqd|Lxq1}OAUCpR0=O!0X&ZkssPU5t^)X; zl;Fi0D7>Hir~v-LL*a)ig0GV=6~X_I0+qmvdw@sOSNMAwQ3BssQ$qLRA5aO7p6K?_^|Ez)o%o{H+>b4jEPr zFh+J%0}PkD)c|{oUL7zhnF5bi2V5mTto|2cvl@U*B-8+WBcp2oc1WtgiZuaQT38d1 zQCUsE9df@WAff+SfKL)D@OUjiLjSb^8IRQlEF>Yd0bk45+GJ*H6E4-cuSif4Bi?b9?0G3O%;?lt9Kh99^z2q)f?g#7Vb90EsWqAf^SX)9`KvOJ4>=g z;P-z>{!T^?Iok+)k+?JlXB^iUJns)jqUa6f6wW%-#^5d4>TBUOn}BDL@lC)P%{2kv z_zgTyu);fvTT}46Ulo47Dfj|O(hQt2T{Ce1ui)#-D4g9M&A^*~QF!g<;OzEj4$jD~ zIr#d|;JHdGoH>ye;I}_1{9+4m*3z{EXDwYz@Z6uk*OXK^vFeuKO+PBUZYyy1O0@!i zAb+pATt;jHK#Uljp=6?#j90JG@9<2d6q@*<$d@9X;T|O z*3Gs7WZi5VK!W&f0k6MP;6H5v3F5Z{WNg+B&`)}_17sy`JHUo-71*FXAS-d(12QUW z54cid+5>XlO$WfMgfXobajgR&N8NM;WIWapFq`!12*^A}M=~+<7@erfQ@wV?g<*PL zR;|FUPE_R#$~xh%<*)FUPXXnx7Lu+rl2>GFXC!C5jF&8WSv3O1yCBH`tqYP_xgEVE zP(u6D51P{j)9SrYrZwqG6X5Y8UOLfb)dcMBN)Bec))ncc&yn`Zr_yB}s2lQ^o+)|0 z+Fi_b+Ov516SA}i1)xNC#5sASJL2Bljb0R>#Ba&G?ugfkR^rWi;F%OMy9b_ODAxmg zaTItKe}y-ZOg+IbJXQFep5Rj?T`zD3biKempMo#Qt#GEydV$w^qVN{I!8uj9H#oz( z-rx%#gJ;U6@J5p55Abu36n^gyaJCfn0cUX62R!p5@Oe2DeoYqj0k82;;jQ|DCzE-7 z!5QN91)u)_JcFOYIs2s__?bwBNA?4sD4F_$*OR*a!81mJ&mk*VqX3TT=nr1)zQS7% z0OzQV0pOS9@&NJ-=X4Ap&u|viK)_RX75H!<;CRV02(XUS9|V|Qh7JO}EXxJ~R=K0V zwu1p(WYJ(iPUjg6DDr(UU|sPY0(jz<0v`_nWOu|+Kt^ao0XbM^D4?}p7?AzKcD`;u z43G`i!vGnZ4FjAtdpKNe$vzzJ*mcD{9S+AH+7WOJ%0|GYme3J^EH58HE@pXoD3!Q= zEj}N`$kuV>qZ6UzBL-%ncx&cWyycNmd8?-67>VE!R+A$*@}GFY2qjo$6oL%V2p+hk zvNT zJ_hj-m*T}4ty*SR8;dwYxUq=4b2oZQ8YO;O){R9x_@WZ;I?gDj{kR~j#~FpKk=!`= zsTbhg7~NZ$qN?N>4}b8y;$M!(k*vO*fFl{tO#n}R9(;02g|n@30(hBo3hzD<_216Q z+KH%VST_+q>@0jT55-rO01lef_McJw>q)3*%hP1kGq{@!?s^7%VhV*HmrawwOPyAD z&oI<~VVWWg^^Ebt;3x4Zw&*0u6<<;EO@ZHgQt@x5pq>SqQ&G>^3R8`oMfiFdp8!** z4`wcs)!x3;nDdC$_N6aDS!35!U$L*^)>K~!KQz^N=Bl0C!vQ|5O1IB+YPd)0tf#WI z&vYUvv(PB)jM`0?-#XLD>Xs~|1KfA^B4eEPZI?pX#aqmZkT1d@vgcy*Wwr3Ci;e1< zc6X<=xam|%RBR*AJY!yx-2EEG2s_WYv>O7>$c}x!}yTI^})2od1OfNiIWt7(HZk@f= z7@^(YqO9cj6GJYoW~UV~ztu)=m#&-|9NpR>AyrLJEe8v;tC~}_Rh#2!Q{2|F9fsv? zYmHJ?(OqlQYG7`2B=`VU5Qh!0HX>yf@dE4kMF}jjui^x*%f8LVR;~Sdxv}NF0|nKc$V6J8xgb z$q`uGV$>#F{$mSopCH9nqmg!+zVvD%m)o>ewnw5^j}>)AJhmBa-SVxse;Q%^R8K~3 zGq&jERwnRE#ESp*3yXsP!Y?cu`pa0QcUkU`SFhP{6}e1-_DMkYxrRhAcQUSOv`iuw z8X06nZQY<{XugvYIc2GWy}~H~%&)S0N=v*n0mtNEI9%x^it7#p2w6wZ^_P5HEVyl@@=Patj<1noLiV;K;BG^Hl|NXD^PSpS8~@!c$e*XLKRlwPT<0 zr=Dk?ISx7ZNf+(D{N!wp()B)Ml+tR8 zy-H7W7iqDRI>O$GHg>i|t~C6`|1d{3Fd=#vmnPyj*3fDPXUV2;Kx+q@7Bov4Yws!> z`ZpFccKn+cweL?km&43q%?utf=IJMAI@D&%hBGbAZ2UTE>k}$$QOBX> zS!KBCuV*-9`a|}m@10>Ks5Synk$*aBglb7=BuH=VG18->@z)~fcj#iJ$gFQb6jbTkHXfXg?&H;`6ZUcn!eNBv}T{DWTB zC|LiPGW8#$avpi>W0$M7@#U%?zo^Qsvwam;5NC>Z)hNd(sKQm_yw)m|0J%9wyUOwh zMk}`2cdntAl60MxkxjbSjgwlN;d1f}v6UOclv8iqz^R1dZyH6kmc!)hStEz$$2}`+ zu!{O71~(gOYZN=HH@t;P<`r&{H69Le$eluD4L14QGIF`N^RN@fWV1he!=!VG+X!zN ztb~^&V`-{>$0(Sz`(X0^m~6Zkc~h9zU+XokFU`aqvd*_bGWU+rLtik+A$Mcg1S2n;;Jl<=Wq|!s9m43F5L+Y>z zO)K9=N%eSS6moO)v7RF{Cs4oH;yIiS{6fm>bx9+bx~0O_~A1Pl(Z|I(=Juolm~ zf~?8LW^07Y$qA;kdyPGW>|bLKE2v)cS{8Iv8G=z`4EUuE3b!};M#g|olQeIr`>J$M z9FgodaKqaxF7I2~CnDKz(fFS%erpub7qz3oo5tJ!@YWb;O@h5MLaYJOJEOEdv#mpX zW^mX+leX%uW#orx;lP9cH3n+a+9<7A-lLTjOYhN2K;S)(byvdQ8}$j-33zF=T7nfS%nY^|R73b>WMLslkqeB%WX zq5DQv#EkwoKxXv6(PplebKd~7G*RHJ?|^hvzXKBD`2pBQ3j8oSS*uKc0M=r=5E^H- zF$+1|X3a4xIF8S{YvyFI?c(4k)>Sx6)>Sl627Y&#_PPoUj)0;D$X63Jvr(E^zf*aJ z83T?cs4_1~YMoX#fJ1)Kv7BAXmhCB==p|y~G)wd84A!4B%ge$-vxnZeoi$YbcM{1>ka0vtW`%HR9T+_)P&;ur8UIQ_ow&q5A#9l9?CMR;+Hjs?GicW{s>a zwUV1z)K0!v)o4Huu;^z9dz@oSnL3|DFVC%Mk$PS|B^QSxIWzH|>~u3nrD0t&rqbgFFdQ_qRzgeDmm_5># z;RoD%G$Mh@!A!NFl8N~#DRFD_3h~P9AY&@i4l<_VZLXJRsmx4iTjD+YgTCXfp$uD8 ztsZn$$&}h`Q8v?Wb^?2MCP<*6^&97JM<3=*$MJ`&{i@`IrDS6@$(-5@kSD3lz}&;i z+p20ORJGgs%~F*;fvW6MHjSB@{^sv#%=2k`mb1nF*x~cD=RlO!dPFUKIre_hMd_E; z9HC7Kj(<>7vZupqbjQ>2w8RzD@wB&PS30wf-nlHfKK>+@`)s3*uXQh{M~I$j2876G z84$`F-XQ}{Br4^|Y?e#ad$Vmt{1%XlrN}dWoFmdFvl*Bsri5*(hl14leKtm9HjB^` zeUlkIpNm_``N_5{W(jN6RTi?zh~f@$Tc-QzmAJ6a_RV>O9`0yQYJ_BR%G0dR%(0i3 z8EOUSz05}1`l7NgAK9dRQLEUhE~@5NR2++pw30K>?5S-kqDt@%>vUxX%s%vm>r04_ znO{p;MDpi1b7(h$RJ}fziF8NYKGhUK${W<0rr7;?7MW(n8^myZ@kVng>T7ny8B2Y6 zn5u93W*fkgj(?tdEHo^l|@dqxCwiZwA?UK8?8hnMi*{`>AJ7l;orG2@)<(@S+lh-V$=i+DkrB+Jk zl3JGJF_UKgSb5aJoDAhJaICG%`d=*QDEso7zH}EO^O~Vr)?DgICgn2&tsRB=u!9X_ zRuG2JeV{o`dyzxE0_$M+P3y%1KhS0Q%^57ciSU?u4JP{z|fuEKJ}i!YRRJUD7e(nz)eZ!xT{NLfow;RSTJo z2th0_WHuvAS=dbNIxRO@-}>}Y=t07UzIr;zJ{S)C=t&!S6N)t zykJcl7sD$|n-?=%QoJ0+5i`WQI7N7?)Guzf!`$7)&3xMWEb^iXd!>_he zb4{K*VM^e?c!9nAq6B8yS8)PC;Vny>;~g}^QDw}z4n2HiSu=@)7d$zbQq?l83KZC1 zRj6N%$6?;79L`|gsT^-}V;WkOiVU=Vlru9kF_5{uIg9x8w(@3(9-2Dgy@2q_znQ-~ z98bd+RWQ>#oclB2#^FP#FIx`K47pa(oMVkVE14^pV@y-o>`Cz&TN%qJ?Nv;F3@TZL zXYI}Xk*O{<#OSi3l)syU7M zRgY?BNRk3>aSi#VV}_?Z3pCxeFRrq_nwi7puq#fFa;ig)hq}hsMlO=RI<4!wWXc`8 zt5ce{CX*XkDb0hDiMubd!O4*A5PLxK*Q5^de@YK^ZVlvmCslGKYMN|N=T^=ry^#JX zi9=dO>3-(HBuGAy+EY0&Xs~>)iR0fSRuX$_(IaE6W-WX^Kmux;Ig6A@4Bbv;jIV>$ zd#=Q%PE^LY#V_hT@3gPt-ZL4aw%I`sb#Yib@6(A}9dn5G#gs{P%vRPETpgVId$@O9 z-jSZdpub(;Ot*S!JyX*jYtpNdxm>HQN!rSE<6g6F!sDQsO7=7`b9(O@7U%TM_SOG< z7Oif$-q0+qIm(BZYi!nb5cZqd#4Kus4w~@(h^;m;_fj=%X=>J@@HV543jUgi@S%@1 zY-TQYPWi$}e(NF%+x0=Zt9Umzt7v(?NUuF+YNv@Yag_xX5@H~Hnf#tg8#6l8_d)cr_Xvz=F$ceeRIKepGfLxLw*D3#k$!z_{x z?aaKcEgdB?m;eU*wxIarHcJy9DgvsybQqHP82D^T|&B<8QqL^9pj8!(ot0{R8rk| zhXggcnQcg7aW^w>vh&tUvTLBD;@;g%M{h5to0%q=#Qz><|DNs63zQSAwx1wuOe;Qt zXcgZ{MzeUbt|FINB%gANC9QAnD$*yOOlOlBJ6Pn1c(25?kF({8gm*W68o1)YcukXx z9r5?q+gGvvK2~MIsmftv65HSQjjKE^zWhaWP`qf*_A0{>J?mk5y9UJH@NI9q$@5(l zl6=91Fwl4cJh7V*CR;JMFe9mK?qOzN3*yNhycmue>tUABnng+IV>7ir$ygwDdYU^@ zzQXr>Xf!8Ef+y(s=#HfCWoGd|!0(erSU>Nw{4@8%C;RDg(UWmoZrz(;-E$n`gSLN4 zNH6n0wrDi!ZBBLshCl9YhB-2q!(nmV1W4+F_z%S7kSTr4j2T=X#S)_qR^~RJu;+h< z5~Jl%A2VH%u4Iu|1#^^w6a0C?BHl#D-#Vdg9pu(Q>(*6C(U_Khx85(X&Lvfn)4fOb5p94qCO7^__u{&!kCzGq z3K9Es2bk%#?om>D3M1FtgQ$cz4=_^@bviJBX6)-zzBwIaW|Fi6X{G&S@jx`Cl>-CK zK+lzT?Wd2i9yiHTuC4C@hbhk_c^a=Ump1*092{U4)jB+pz=~$DTo`1g)$TqPkKs&# zoqH@@7nnn&VHl0gmjz}r=^JKd(p=PSI%#(YL!IC#@G$<3cqDJa%zU1eZvRYsz4iVQ zq`m%;N_+eebFdcq&`z6?PwAo7gFduVP2b`nIku<$&IlGLo15^PEGa^DQG5|*Y#eGf z(e^!1>27==`RC(?--el~JxkvFnfQ_izb3xqft7fWY#2s|Bj*G4;NK&q%up(d9pXM5 z|E-k3;bsY~F=vtUOiVRT9*#S&U;nAKWaO_}OGc_k`Y_zgMOErEg8srhX*zy0MxWahgn z*|p45NbL!xo4ZxWRqnH2`w9sjg(-t%@F+}qb6c4b8UF7mddP%s>W?vVX_aoNpNq(% zF$4*+$)Pcrar>q+f^Vu9nojPHHGQ?e*&0YT zVpC4mab{UoowgZgW_NSFh=#BVBdn~+2dT!H_1)KBuo4(kTUB{c%&&|yt2&m-Z{yAE zTGQ)FOEsA|9@|oJD!TP%bh$Jh+a{m?XD?==}a=w^mCn4jyhWvc8+|RNK@KN`b@+#c}1*$lF9CgG&=9)zV+8((I;WyhJRE# zl+Y9+L(FQjbdu?#Wo6+uMJvt6EC2VkGf6qwOqJ%Kbu0MS9I-*&nq%FfQ)$1_*itZB zLMHPrlOb&t&o7td)?{-B3;w2uk#)1lR?9K(<%0FsV~Ghf1GDrw_0vDst@oJV-CdVb zQ_LuB@kOiVODmm#O6c@(F%RQ;;_n!M6w#=B|9QbE;WhJAL7&Y??j1#)x6R za^aG98eF}ETzQKd`YTsPR$1Jw^9l5w=G{gN`IS2^p3~vlB;eB4v$(;(a<$Ie?__4; z!Kvi=M1w`MmZ*`+mOmIY;APyB*iy?A-ZgaV>z&!B)+$A5Bp64?3a> zTW9IAz&xQ%|JyEXTIk<$aG;qli~F9RYWw^huhuR|eProEvy%4puu^;JusE8LtEjJo zwJL{|+G4U`k$HsidB|cjl~>P0wzegc5?7v3V;XhBUR8Zfv#N%fhis8FzCiz54!q>p zV$)l@dr)aTCoW6Ou2xB1LM4=g)9S5qkWTh5F@v%!3IA!b^Wd*0JH=zES!{USLUA3n z%J$VS9WlH8iH%f;9>5kS8BLA!O69RCi?}w*>L8T;74ZH)fER#j)8ao(eOOK|H6LlK z_e*3Oj+Q^X%&g>OBX82xX13u=v-_|~(#qLk#vJRK9;9_W)w-s2v#!Tl*H_i`Q0tl! zZ~flKy56s@yI9xT)OBm?dX>6vY+cV&*R`$dDeAhCbv-gs_{P=dI7iwgNZJwMY}Vb_ zFKTBBue#PWtq(ZXSx2adMd0hqqQe7<#n+$PHUdZd-~-^+e+l|iVTQ|3YQv`grNWF8 zKCyl^?iP(#H_8I(m_;9BvCOY}!;JZ{63N4i4L?QdNT2oQ39lpGaq7+$iC6cBWt|o1 zo5YdkMrtdpvB50p+UqBgRyJ=ivkWh~;r}M*8?Q0;9t6c(HZD%jsDp{IuG&Uo@=Ltp9%02#u!;=XXr>Pt9)GXj z&wH7alIz44y(?3`Mjb+zgMRt59B3+bBE{&wyp&&!2{VG?Rpt4q>VmxANWJ-egQVX? zjOSkAcuPl1@Fp{T+C!dk#%=w1uYvT~WbPu$o@=vN%ypYpu2i$yP`Yn6eRKb@_Wve7 zJWHISc0c)~vIm~o=zE*ZY{fl(-q`v7(O|@Dh$lKO{t+<_%ZW;WMyKQ%v4M@@ zP5txUt~KJhPD>}*wwl2iHy5zNNQ^(NXh@AHd{ueEIjcr_BEz?uA+CFU^MzoKB z$#%21{(MCuzUN5XY~6NqVB(M!wpT8Qqm#zB1b3S5Qs*xMt*K<>UuG~}v?G6+Io;PR zx3rCku@`n6kK*9Pzs!NmQuW(m_O_nu+u|*j#VmM-e2&1n-ivMPddBuHIlN$(Iog_--o+;=7cEL8oLk4N_byCk)_XUV z*)ci48|#9k%pRVV6WsQg`;({hAep!b7QxWHX65AP-4pyaQ)cWnwng!>y+!batPI#lgY&t-&vZACoXr?Rn zkDHaU)%;ocHLBLq*j6HgdZ>N&?bwLlrMak_Y}#q@<(5Ncs>E60Nq~=`Sbw>wzxW1; z_1B9f_Ps6YuZzF@wNw4IOWm8V{^F}OmfQ&S7aP6!i!~>KhsYnnsj<_}A4O8D{NWNl z?2uW-L3iuKVJ22e%;Ez$W-jUTx4D~#%XfrOHJzg)=3+;h@K#5e+z4orIN`G<^z32F zS&!^+it@vuc~(Q7+9S-!ZVSbFATx{2+GrWWvmG~+XlaT}Rn8idDUlU!AkJ_+DwUKw zX%_e3)QKrFqOX=IeC|mzsl(|Z41kxiM_Ue^GXK5tSj$gfh7Q?ji8$uH5C0Vt*@IU3KY?N5(SS> zM%qy{pjwKZi3wq4 zner}Cg4PKBC!#C4(Z49g1DB=s4U8=Fi#}7qxfT4Yk%qdLT+Wjg699*95=Z%Q!*oe} zHIZ$wQ@n4Osk7`>f6>26U`6Z`E|M}g&2)vvD#Qw$T2DxP!pc&yPuPi@Kh2L7te;3S z-Y_#}DXJv@zmJ&NGAR?&QFp9=9?2*E$#>$1x8-l@j08$u)T3-r_hQY!Cm&oTtGd%b@gcDfI!5Ox`wenGg`_c7Cz>dmTB4Ng2 zd3Bp`&=fK6P&F(ZZ5L))c*o45bsjCDXK~$yJLUlbMbqw@yS2|FrTRVdGkdiw-6z`e zNJ8(My&NOM-`!_c(wa+nz;c-x((0jEMC&}z6G2QdvtawH`1WIv#Zi z!?7s}%k2mGe|4RCKvhNi$IrcZ?*k%miQPbN2nGlOrhw)GZmcSrTe+8erQm|7yrCwE z3vQTWnTln;m>XKJmo@`?OS45SD=T_MQ@gm}Qg1G0zR%2jQGV9%{K1#cGtbO9XU@!= znK^ULy(Ss|^Cx$I;sxZateA{-JcCR>Bu*tJ%k|6^kH8J^_l zyVx17UPHz0GyDLWznXfMjr<|0vs~kQiHfsa?AwZO&vI{I{WMOdL_hWB#m(pVUOaM| zJhDKMea_mU$)-GRd{+69pV)YgXELXVgXefM_n_GSGf&%f<>iER*4E7O#%aA^o{}d%_*qTD$JJRA%=>2xFDGB%Jz`;<^%`f{tn)mVvQBI`Z%ykx?6zIj zYu&Uu$KXh7qmesZ?bkeUx;(US@z_Oc zi-aTYs$InnzLpVmR&yQa9h7+Nk`AV7br&vXgJlC7#PWLUmtyuMeu(+A*m#L2Y1fEj zm#kS{t(rGZE>c9-TkYYlPpedURG~X!+_4XmZVhV+Wpt?{18gJL<#p3nr1`O#vd0tvvU*{denaemQ#EAN*8#k?4Dy z3!=AJbDNiixI85*LtyEZT&uWxo6FIs<3zvP{2<%@C*OBp6jgs(d&@;~cdS2}Y8_|q z@azcp8of>Qrt9coa%a76i0b1!!BFzHgq3+H z$;Njsl)(?J!_jZ1QB(0{d`d4 zUGc27hZyET^7Y~Oh(6&S=nJm2LVmB;jb7&2#XWBHIcH&EQ_A6axGPO*zZ@95(|kVk z_-6E>dqo!R`>hNyuPFtK2R&%EIeW0U+LWS1l?QE=-@Edp7kF~L-jnWdrqz4#2}Fy> zZM0qfiiS5OnTMpR%IO&5O~07T8NEcwaV|(z$E}{C{!i@r2NuKw|(0CVRacVh-PcKcB)6HjS=@a^Ua|G7zgWmH||_FGnEe)?khUUakb1%5zGw^OY7bfV}VPC>5z z?BLv+Xz)8Ue&TyOO*SVdiZ-DX$%|HU9->f}(+S+SdXdK_6%WyDZd;>5DTUDNeEHg`C=Db5h?t!R~h z+0KTrWHn?|VXuk3t!QvS;@z;Mdtr$QVow;^MYk{_f0w%+arZoKiuy3}7t_Kh!hi3M zhU8VRUGMsJQ6aNhh)P@E$KOK$JnO{|`%2&}9URKUU>>r}04NbE3 zQ{hE7q><0ELJW$gUh)Gc(UjtPsEv$lIVR3TQ?e~bQBf6KkBRm%?8=`vh+)^dDCK%h zd>F&7s}vQjgzGio)0R%l)hBJa;PVH+W2w|u$q!Z2_+bfrg2csGis$zQTEtO6a3SZm zY#Mpt)jC}*Y8h+gA+8bq<7l91z1SK@ncez1?Tv1B7f$e*jVWW3x>c!e)0jsvo|FB- zx-K#`H9f+!43^Hkl#KizzV)+=fqS;j#WozPF6sX`lXCWb|F6#V{2mZh%C@N;Mfe>$ z#~r@KRlFDO_49vnN9V=KcI4lA!`Z*==nF1yb$#@XcvQh}!vAs_IUw1)2EO$L;7yY+zlh^kV$}-=I6R$i%VIIfB zq_=z-@1TyfBU>!fMDn4CbPkHuE@O`>r@W3*K@N7A=7JMm*9UW-xP zk?&IL9^h4X3p&z6wyP~vbk*pv;{fqyN8VL|wyGwDt=zVEVk>E@D-LU-*ud5nt3y-@ zH;^;G$SmVs)$tGX8I@MOzl=vI#ulO-op5|kEP9j^Ee}@FPr&LX{*cy3wDl0IeEaIm z*8M!x=6tDywWT;Gt?AlY4(l6YSQoY)Z?1gT!P>!bv?}7|$T%|gM)hAq@A?@L*`0>j14}trHNu|izxyURtHqY?G}2|7pPUfnj#={_ zRATOziP+v$61I40qf|24 z??MfG&T4G!AZmMaj)kvHrPf~IjYCd_i2kX3L(NR3DK1Zk@ItHpX1n|Wl~iiMZ)yCI z%2(V)bWfuUFIStKvpJqtUCWDMJPwQXX%z3faIxCC9$x6n&pS)wo=~W8NvBb^c3yno z_v&S-n3m2rs~WK_ow_9#6gN8bSWcfk)#LD`CA!M0RY6NFHFvM0v!g1xdWhRaL}XB; zXS>F!d@M#~(BSx*MGeQL4{DS;3`_PBHmi<;Hm~CnKi+GK$BjkeTn3*pFR#m_h)$Q~ zSxGlpi1Kt&YOw75(Ni9z<(mcv6nTH7^M;s^$r;T*%EHOS&TR0K$%HjdW|&N-#L^Qs zE*ge2mA{?Chrr(u%B0B2dAi{1jCE$K+GZJ}jn4iO<=W}RgHB*J`~cT6W_gPrrt{-& z*=fbiIh#8pa+ppl1{f|@W>HA&<@+Li>n?l z|L{-hQ2#*R}igWqm2oQPr1*x^k%v8p0!hN=G`2SD`U+g3MRL2O0_O z4DAWcgl0nrLWe+yL!W|9hUP-^ptGURX)QDs!cYud4i(Ui(5=uN(B05|(08E+p@*TL zLytj^L%&s8Xc*ta@FTPq`V;gVv<`X^dKr2R`d{b`=IV&kJ_wD0rb3^D&V|l{zTiloNU>IzxM>qgPet=9EmJ7ar30W!LMOl#3B3XKsSN3W zYzbL_c@nY#6%qylY9$N>*m4+#1Ck|-2INQ>3n-H?4RBOKo`$u#{Qn#T#7USB7%gED zV5Ni-K$V12z!eEE0qoNlHUY9Fysp79ZyLq9xaG{$m%}FBo=Gj;)&Y~nDMnE-lU#X3 z?UqL^y`2a;Iz`8rDZKM2U~L|I7~*mEa7)V5A^fc$Mv*OpMvHASs2D*j#W5LF#zE$) zsp3{1weUWHuq#s=5;o1^>5(h!lACTqe)5m@jRS0?)Qs>pDkDW zPl`{-Px>3bq3}xmKEIYTn*#YFt&+BU*bcGHr9#8nITYxVJzJj{GRTPI9Fz4Xc@DYy6#q>i zXJ>qNfsT}o!qE_U5bXK)*`E;e=TJb<2m~LxFL<=rBZJ2xI1nYHAys~%R|Y?W;EDGI z=Lqk)96STTmG=ebixdtnEI_a;Nv80k9|72kZ~_ z1-Ae&@-z&vTAwz1&$;Mw2~;ALQW6Or3yaH2+IA2>z@5OC!HOYi4c-n;1v@ks z8fh?8!66-d7@PtA8k`BP1!sXTfct=d1NQ}+mg^kr2X3aA^FJGg066pqhk^%y+khVf zcL2+7tK5>ogEShM;KAU*U^#S=+Zf66`VUoT7|+1raqukg6W|5lVc-(*aPV622yhvA zBzQY`6nG!A+`lmzhH5yB0e=R568tUrDe!6VSnwtAIPeYdc(7@Oz6AQOVYsiDp!RP} zgo7^}CV@l1lfkXQPlIE@&w!J_&w{&yr+_oTQ^5mQ6zXHifnfw3a>3)l)4)@~)4}=R z8Q_KBnc!vMJn)O)S>P>&FyzCq3p^WK37!K!2%Zc623!C>1O5m2Cipq9=SqFTI^Vhc z1;Q{74q@Q=;5hICa3}Ed;0*9W@Dt!7@L2E*;2GdWnt99%Lopmyf)|5d0WSfUgO`He z0xttsgG<1lf|rB82Cq=e`EUk?m2mh4yb5eurL$}`*dJU9ZUbHe?g4%gJRH0hJOeBw z%j-}A!#X$!@Jry=z%PS$gV%%K2EPLS1iS(K9e5-7C-5d_RStfEp$rZ#tMwUg277>C z1qXp&1BZjRfaAfhgS&vYf-}JX#Qu$eFqFe#BzPP6S@0X+0`PY567UZ2tKgmBcfq^B zUx9b)^EZr(FjT?xm4%KUa%+lO>iLiEpRCKU*Kr)K5!D)q4J-NJz=PXLpJzr z@Nn=u;PK#h!8zdfzy;vAPkq_a0q-I{0Z2!Mqh%%V0ZARU_bC@U_1D8a1{6paC^mkCpiK`S2!F6 zr-6@w2Y|l>4+nn*o&i1%UIzXe{HkN~5*pQ_u<{LkBKx5qL%)Fj06h==4f+SvYrBpg z0JTHgLwi9pp+le}v=$m;VR#yv3(bcvhAxM`1ls9RPit)gp_-IEQIF9Wl47M8JONXV5R9r=j)G>pO*c7Y!~f+ocb% z9O{7n8+sIa5_$=G4SE}D+pW{_g@!}BKp%rX1$`ync!j-O9ewSSHR&Og^qLS%jaa#HJ@|G@hst<4;ppw-Ys_B5xM+r%-^a I`k(*&4values) symres_expression(expr); - bh_arr_push(bh_arr_last(semstate.block_stack)->allocate_exprs, (AstTyped *) al); - bh_arr_push(semstate.curr_function->allocate_exprs, (AstTyped *) al); + if (bh_arr_length(semstate.block_stack) > 0) { + bh_arr_push(bh_arr_last(semstate.block_stack)->allocate_exprs, (AstTyped *) al); + bh_arr_push(semstate.curr_function->allocate_exprs, (AstTyped *) al); + } } static void symres_expression(AstTyped** expr) { diff --git a/tests/general1 b/tests/general1 index c96ebb44..f3a8fd36 100644 --- a/tests/general1 +++ b/tests/general1 @@ -21,7 +21,7 @@ Evens from 6 to 34: Array details: Size: 0 Capacity: 4 - Data ptr: 0x10A48 + Data ptr: 0x11A68 Size of elements: 4 Alignment of elements: 4 @@ -29,7 +29,7 @@ Array details: Array details: Size: 0 Capacity: 4 - Data ptr: 0x10A68 + Data ptr: 0x11A88 Size of elements: 8 Alignment of elements: 8 @@ -37,8 +37,8 @@ Array details: 0 5 10 15 20 4 9 14 19 3 8 13 18 2 7 12 17 1 6 11 16 0 5 10 15 20 4 9 14 19 3 8 13 18 2 7 12 17 1 6 11 16 0 5 10 15 20 4 9 14 19 3 8 13 18 2 7 12 17 1 6 11 16 0 5 10 15 20 4 9 14 19 3 8 13 18 2 7 12 17 1 6 11 16 0 5 10 15 20 4 9 14 19 3 8 13 18 2 7 12 A has 22? false Vec3(0, 0, 0) Vec3(1, 1, 1) Vec3(2, 4, 8) Vec3(3, 9, 27) Vec3(4, 16, 64) Vec3(5, 25, 125) Vec3(6, 36, 216) Vec3(7, 49, 343) Vec3(8, 64, 512) Vec3(9, 81, 729) Vec3(10, 100, 1000) Vec3(11, 121, 1331) Vec3(12, 144, 1728) Vec3(13, 169, 2197) Vec3(14, 196, 2744) Vec3(15, 225, 3375) Vec3(16, 256, 4096) Vec3(17, 289, 4913) Vec3(18, 324, 5832) Vec3(19, 361, 6859) Vec3(20, 400, 8000) Vec3(21, 441, 9261) Vec3(22, 484, 10648) Vec3(23, 529, 12167) Vec3(24, 576, 13824) Vec3(25, 625, 15625) Vec3(26, 676, 17576) Vec3(27, 729, 19683) Vec3(28, 784, 21952) Vec3(29, 841, 24389) Vec3(30, 900, 27000) Vec3(31, 961, 29791) Vec3(32, 1024, 32768) Vec3(33, 1089, 35937) Vec3(34, 1156, 39304) Vec3(35, 1225, 42875) Vec3(36, 1296, 46656) Vec3(37, 1369, 50653) Vec3(38, 1444, 54872) Vec3(39, 1521, 59319) Vec3(40, 1600, 64000) Vec3(41, 1681, 68921) Vec3(42, 1764, 74088) Vec3(43, 1849, 79507) Vec3(44, 1936, 85184) Vec3(45, 2025, 91125) Vec3(46, 2116, 97336) Vec3(47, 2209, 103823) Vec3(48, 2304, 110592) Vec3(49, 2401, 117649) Vec3(50, 2500, 125000) Vec3(51, 2601, 132651) Vec3(52, 2704, 140608) Vec3(53, 2809, 148877) Vec3(54, 2916, 157464) Vec3(55, 3025, 166375) Vec3(56, 3136, 175616) Vec3(57, 3249, 185193) Vec3(58, 3364, 195112) Vec3(59, 3481, 205379) Vec3(60, 3600, 216000) Vec3(61, 3721, 226981) Vec3(62, 3844, 238328) Vec3(63, 3969, 250047) Vec3(64, 4096, 262144) Vec3(65, 4225, 274625) Vec3(66, 4356, 287496) Vec3(67, 4489, 300763) Vec3(68, 4624, 314432) Vec3(69, 4761, 328509) Vec3(70, 4900, 343000) Vec3(71, 5041, 357911) Vec3(72, 5184, 373248) Vec3(73, 5329, 389017) Vec3(74, 5476, 405224) Vec3(75, 5625, 421875) Vec3(76, 5776, 438976) Vec3(77, 5929, 456533) Vec3(78, 6084, 474552) Vec3(79, 6241, 493039) Vec3(80, 6400, 512000) Vec3(81, 6561, 531441) Vec3(82, 6724, 551368) Vec3(83, 6889, 571787) Vec3(84, 7056, 592704) Vec3(85, 7225, 614125) Vec3(86, 7396, 636056) Vec3(87, 7569, 658503) Vec3(88, 7744, 681472) Vec3(89, 7921, 704969) Vec3(90, 8100, 729000) Vec3(91, 8281, 753571) Vec3(92, 8464, 778688) Vec3(93, 8649, 804357) Vec3(94, 8836, 830584) Vec3(95, 9025, 857375) Vec3(96, 9216, 884736) Vec3(97, 9409, 912673) Vec3(98, 9604, 941192) Vec3(99, 9801, 970299) -0x11CF8 0x11D04 0x11D10 0x11D1C 0x11D28 0x11D34 0x11D40 0x11D4C 0x11D58 0x11D64 0x11D70 0x11D7C 0x11D88 0x11D94 0x11DA0 0x11DAC 0x11DB8 0x11DC4 0x11DD0 0x11DDC 0x11DE8 0x11DF4 0x11E00 0x11E0C 0x11E18 0x11E24 0x11E30 0x11E3C 0x11E48 0x11E54 0x11E60 0x11E6C 0x11E78 0x11E84 0x11E90 0x11E9C 0x11EA8 0x11EB4 0x11EC0 0x11ECC 0x11ED8 0x11EE4 0x11EF0 0x11EFC 0x11F08 0x11F14 0x11F20 0x11F2C 0x11F38 0x11F44 0x11F50 0x11F5C 0x11F68 0x11F74 0x11F80 0x11F8C 0x11F98 0x11FA4 0x11FB0 0x11FBC 0x11FC8 0x11FD4 0x11FE0 0x11FEC 0x11FF8 0x12004 0x12010 0x1201C 0x12028 0x12034 0x12040 0x1204C 0x12058 0x12064 0x12070 0x1207C 0x12088 0x12094 0x120A0 0x120AC 0x120B8 0x120C4 0x120D0 0x120DC 0x120E8 0x120F4 0x12100 0x1210C 0x12118 0x12124 0x12130 0x1213C 0x12148 0x12154 0x12160 0x1216C 0x12178 0x12184 0x12190 0x1219C -1870 1874 1878 1882 1886 1890 1894 1898 1902 1906 1910 1914 +0x12D18 0x12D24 0x12D30 0x12D3C 0x12D48 0x12D54 0x12D60 0x12D6C 0x12D78 0x12D84 0x12D90 0x12D9C 0x12DA8 0x12DB4 0x12DC0 0x12DCC 0x12DD8 0x12DE4 0x12DF0 0x12DFC 0x12E08 0x12E14 0x12E20 0x12E2C 0x12E38 0x12E44 0x12E50 0x12E5C 0x12E68 0x12E74 0x12E80 0x12E8C 0x12E98 0x12EA4 0x12EB0 0x12EBC 0x12EC8 0x12ED4 0x12EE0 0x12EEC 0x12EF8 0x12F04 0x12F10 0x12F1C 0x12F28 0x12F34 0x12F40 0x12F4C 0x12F58 0x12F64 0x12F70 0x12F7C 0x12F88 0x12F94 0x12FA0 0x12FAC 0x12FB8 0x12FC4 0x12FD0 0x12FDC 0x12FE8 0x12FF4 0x13000 0x1300C 0x13018 0x13024 0x13030 0x1303C 0x13048 0x13054 0x13060 0x1306C 0x13078 0x13084 0x13090 0x1309C 0x130A8 0x130B4 0x130C0 0x130CC 0x130D8 0x130E4 0x130F0 0x130FC 0x13108 0x13114 0x13120 0x1312C 0x13138 0x13144 0x13150 0x1315C 0x13168 0x13174 0x13180 0x1318C 0x13198 0x131A4 0x131B0 0x131BC +1886 1890 1894 1898 1902 1906 1910 1914 1918 1922 1926 1930 20 20 20 20 20 19 19 19 19 19 18 18 18 18 18 17 17 17 17 16 16 16 16 15 15 15 15 15 14 14 14 14 14 13 13 13 13 13 12 12 12 12 12 11 11 11 11 10 10 10 10 10 9 9 9 9 9 8 8 8 8 8 7 7 7 7 7 6 6 6 6 5 5 5 5 5 4 4 4 4 4 3 3 3 3 3 2 2 2 2 2 1 1 1 1 0 0 0 0 0 297 294 291 288 285 282 279 276 273 270 267 264 261 258 255 252 249 246 243 240 237 234 231 228 225 222 219 216 213 210 207 204 201 198 195 192 189 186 183 180 177 174 171 168 165 162 159 156 153 150 147 144 141 138 135 132 129 126 123 120 117 114 111 108 105 102 99 96 93 90 87 84 81 78 75 72 69 66 63 60 57 54 51 48 45 42 39 36 33 30 27 24 21 18 15 12 9 6 3 0 After adding... @@ -46,7 +46,7 @@ After adding... Array details: Size: 100 Capacity: 128 - Data ptr: 0x116D8 + Data ptr: 0x126F8 Size of elements: 4 Alignment of elements: 4 @@ -54,7 +54,7 @@ Array details: Array details: Size: 100 Capacity: 128 - Data ptr: 0x118E8 + Data ptr: 0x12908 Size of elements: 8 Alignment of elements: 8 @@ -62,7 +62,7 @@ Array A sum: 999 Has ^a[20]? true Has null? false -Value at ^a[50]: 0x11A78 == 0x11A78 +Value at ^a[50]: 0x12A98 == 0x12A98 Deleteing ^a[20] Has ^a[20]? false Clearing SOA... -- 2.25.1