From 970084eda7e25d80265fccd8aeed0123ffa639de Mon Sep 17 00:00:00 2001 From: sawickiap Date: Fri, 9 Jan 2026 21:35:20 +0100 Subject: [PATCH 1/3] Updated year to 2026 --- LICENSE.txt | 2 +- include/D3D12MemAlloc.h | 2 +- src/Common.cpp | 2 +- src/Common.h | 2 +- src/D3D12MemAlloc.cpp | 2 +- src/D3D12Sample.cpp | 2 +- src/Shaders/FxBatchCompilerScript.fxbc | 2 +- src/Shaders/PS.hlsl | 2 +- src/Shaders/VS.hlsl | 2 +- src/Tests.cpp | 2 +- src/Tests.h | 2 +- tools/GpuMemDumpVis/GpuMemDumpVis.py | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index eb08d9e..3d5a69a 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/include/D3D12MemAlloc.h b/include/D3D12MemAlloc.h index ae358e3..8396abb 100644 --- a/include/D3D12MemAlloc.h +++ b/include/D3D12MemAlloc.h @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/Common.cpp b/src/Common.cpp index 87ea650..73943ce 100644 --- a/src/Common.cpp +++ b/src/Common.cpp @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/Common.h b/src/Common.h index 384c1a6..5ba3aea 100644 --- a/src/Common.h +++ b/src/Common.h @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/D3D12MemAlloc.cpp b/src/D3D12MemAlloc.cpp index 96243ef..5dd498d 100644 --- a/src/D3D12MemAlloc.cpp +++ b/src/D3D12MemAlloc.cpp @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/D3D12Sample.cpp b/src/D3D12Sample.cpp index 32c5147..a2b5f8d 100644 --- a/src/D3D12Sample.cpp +++ b/src/D3D12Sample.cpp @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/Shaders/FxBatchCompilerScript.fxbc b/src/Shaders/FxBatchCompilerScript.fxbc index 40a0402..d21c2ac 100644 --- a/src/Shaders/FxBatchCompilerScript.fxbc +++ b/src/Shaders/FxBatchCompilerScript.fxbc @@ -1,6 +1,6 @@ // LICENSE // ======= -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // ------- // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, diff --git a/src/Shaders/PS.hlsl b/src/Shaders/PS.hlsl index 260509b..828c8b2 100644 --- a/src/Shaders/PS.hlsl +++ b/src/Shaders/PS.hlsl @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/Shaders/VS.hlsl b/src/Shaders/VS.hlsl index 1145bb7..796810d 100644 --- a/src/Shaders/VS.hlsl +++ b/src/Shaders/VS.hlsl @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/Tests.cpp b/src/Tests.cpp index 09576d0..9e00157 100644 --- a/src/Tests.cpp +++ b/src/Tests.cpp @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/src/Tests.h b/src/Tests.h index 000e150..6121f70 100644 --- a/src/Tests.h +++ b/src/Tests.h @@ -1,5 +1,5 @@ // -// Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. +// Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/tools/GpuMemDumpVis/GpuMemDumpVis.py b/tools/GpuMemDumpVis/GpuMemDumpVis.py index 75d98d2..6d6155b 100644 --- a/tools/GpuMemDumpVis/GpuMemDumpVis.py +++ b/tools/GpuMemDumpVis/GpuMemDumpVis.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2018-2025 Advanced Micro Devices, Inc. All rights reserved. +# Copyright (c) 2018-2026 Advanced Micro Devices, Inc. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal From 90e1bdcc01176bbe3c991b952c7d8b41e00ac4e6 Mon Sep 17 00:00:00 2001 From: sawickiap Date: Fri, 9 Jan 2026 21:42:54 +0100 Subject: [PATCH 2/3] Fix in AllocatorPimpl::GetResourceAllocationInfo for cases when D3D12_TEXTURE_LAYOUT_64KB_*_SWIZZLE is used Fixes https://github.com/GPUOpen-LibrariesAndSDKs/D3D12MemoryAllocator/issues/86 --- src/D3D12MemAlloc.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/D3D12MemAlloc.cpp b/src/D3D12MemAlloc.cpp index 5dd498d..fea7981 100644 --- a/src/D3D12MemAlloc.cpp +++ b/src/D3D12MemAlloc.cpp @@ -7815,12 +7815,17 @@ HRESULT AllocatorPimpl::GetResourceAllocationInfo( #ifdef __ID3D12Device1_INTERFACE_DEFINED__ #if D3D12MA_TIGHT_ALIGNMENT_SUPPORTED - if (IsTightAlignmentEnabled() && + if (IsTightAlignmentEnabled()) + { // Don't allow USE_TIGHT_ALIGNMENT together with ALLOW_CROSS_ADAPTER as there is a D3D Debug Layer error: // D3D12 ERROR: ID3D12Device::GetResourceAllocationInfo: D3D12_RESOURCE_DESC::Flag D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT will be ignored since D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER is set. [ STATE_CREATION ERROR #599: CREATERESOURCE_INVALIDMISCFLAGS] - (inOutResourceDesc.Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER) == 0) - { - inOutResourceDesc.Flags |= D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT; + // Also don't allow it together with D3D12_TEXTURE_LAYOUT_64KB_*_SWIZZLE, as there is this error (see issue #86): + // D3D12 ERROR: ID3D12Device::GetResourceAllocationInfo: D3D12_RESOURCE_DESC::Flag D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT is not valid when the layout is either D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE or D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE (...). [ STATE_CREATION ERROR #599: CREATERESOURCE_INVALIDMISCFLAGS] + if((inOutResourceDesc.Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER) == 0 + && (inOutResourceDesc.Layout != D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE && inOutResourceDesc.Layout != D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE)) + { + inOutResourceDesc.Flags |= D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT; + } } #endif // #if D3D12MA_TIGHT_ALIGNMENT_SUPPORTED From 4f174aefdfb04b8eb8d75a84bccdd1683cd4e19e Mon Sep 17 00:00:00 2001 From: sawickiap Date: Mon, 23 Feb 2026 20:54:56 +0100 Subject: [PATCH 3/3] Version 3.1.0 Updated CHANGELOG.md, rebuilt the docs and the test executable. --- CHANGELOG.md | 11 ++ CMakeLists.txt | 2 +- bin/D3D12Sample.exe | Bin 626688 -> 319488 bytes docs/html/_d3_d12_mem_alloc_8h.html | 112 ++++++------- docs/html/annotated.html | 54 +++--- ...ass_d3_d12_m_a_1_1_allocation-members.html | 6 +- .../html/class_d3_d12_m_a_1_1_allocation.html | 32 ++-- ...lass_d3_d12_m_a_1_1_allocator-members.html | 6 +- docs/html/class_d3_d12_m_a_1_1_allocator.html | 54 +++--- ...a_1_1_defragmentation_context-members.html | 6 +- ...3_d12_m_a_1_1_defragmentation_context.html | 12 +- .../class_d3_d12_m_a_1_1_pool-members.html | 6 +- docs/html/class_d3_d12_m_a_1_1_pool.html | 20 +-- ..._d3_d12_m_a_1_1_virtual_block-members.html | 6 +- .../class_d3_d12_m_a_1_1_virtual_block.html | 26 +-- docs/html/classes.html | 6 +- docs/html/configuration.html | 10 +- docs/html/custom_pools.html | 6 +- docs/html/defragmentation.html | 6 +- .../dir_d44c64559bbebec7f509842c48db8b23.html | 8 +- docs/html/doxygen.css | 157 +++++++++++++----- docs/html/doxygen_crawl.html | 2 +- docs/html/faq.html | 10 +- docs/html/files.html | 6 +- docs/html/functions.html | 6 +- docs/html/functions_func.html | 6 +- docs/html/functions_rela.html | 6 +- docs/html/functions_vars.html | 6 +- docs/html/general_considerations.html | 8 +- docs/html/globals.html | 6 +- docs/html/globals_defs.html | 6 +- docs/html/hierarchy.html | 6 +- docs/html/index.html | 68 ++++---- docs/html/linear_algorithm.html | 8 +- docs/html/namespace_d3_d12_m_a.html | 124 +++++++------- docs/html/namespacemembers.html | 6 +- docs/html/namespacemembers_enum.html | 6 +- docs/html/namespacemembers_eval.html | 6 +- docs/html/namespacemembers_func.html | 6 +- docs/html/namespacemembers_type.html | 6 +- docs/html/namespaces.html | 6 +- docs/html/optimal_allocation.html | 18 +- docs/html/quick_start.html | 8 +- docs/html/resource_aliasing.html | 6 +- docs/html/search/search.css | 1 - docs/html/statistics.html | 6 +- ...a_t_i_o_n___c_a_l_l_b_a_c_k_s-members.html | 6 +- ...l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html | 12 +- ...a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html | 6 +- ...m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html | 18 +- ...1_a_l_l_o_c_a_t_o_r___d_e_s_c-members.html | 6 +- ...2_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html | 16 +- .../struct_d3_d12_m_a_1_1_budget-members.html | 6 +- docs/html/struct_d3_d12_m_a_1_1_budget.html | 14 +- ...a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html | 6 +- ...a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html | 24 +-- ...2_m_a_1_1_c_p_o_o_l___d_e_s_c-members.html | 6 +- ...ct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c.html | 32 ++-- ...a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html | 6 +- ...u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html | 20 +-- ...t_u_a_l___b_l_o_c_k___d_e_s_c-members.html | 6 +- ...c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html | 18 +- ...g_m_e_n_t_a_t_i_o_n___d_e_s_c-members.html | 6 +- ...e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c.html | 12 +- ...g_m_e_n_t_a_t_i_o_n___m_o_v_e-members.html | 6 +- ...e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e.html | 18 +- ...__p_a_s_s___m_o_v_e___i_n_f_o-members.html | 6 +- ...t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o.html | 22 +-- ...m_e_n_t_a_t_i_o_n___s_t_a_t_s-members.html | 6 +- ...f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s.html | 14 +- ...2_m_a_1_1_detailed_statistics-members.html | 6 +- ...ct_d3_d12_m_a_1_1_detailed_statistics.html | 18 +- ...d12_m_a_1_1_p_o_o_l___d_e_s_c-members.html | 6 +- ...ruct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html | 24 +-- ...uct_d3_d12_m_a_1_1_statistics-members.html | 6 +- .../struct_d3_d12_m_a_1_1_statistics.html | 18 +- ..._d12_m_a_1_1_total_statistics-members.html | 6 +- ...truct_d3_d12_m_a_1_1_total_statistics.html | 12 +- ...a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html | 6 +- ...u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html | 14 +- ...a_l_l_o_c_a_t_i_o_n___i_n_f_o-members.html | 6 +- ...u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html | 12 +- ...t_u_a_l___b_l_o_c_k___d_e_s_c-members.html | 6 +- ...1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html | 12 +- ...12_m_a_1_1_virtual_allocation-members.html | 6 +- ...uct_d3_d12_m_a_1_1_virtual_allocation.html | 8 +- docs/html/virtual_allocator.html | 8 +- include/D3D12MemAlloc.h | 4 +- 88 files changed, 724 insertions(+), 635 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8ae061..f26d5f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# 3.1.0 (2026-02-23) + +- Added supported for resource tight alignment (feature added in Agility SDK 1.618.1). It is used automatically when available. + - Added function `Allocator::IsTightAlignmentSupported`. + - Added `ALLOCATOR_FLAG_DONT_USE_TIGHT_ALIGNMENT`. +- Fixes and improvements in the internal function `AllocatorPimpl::GetResourceAllocationInfo` (which decides when to use small alignment or tight alignment), including: + - Added support for 1D and 3D textures when `D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 2` (#78, #79). + - Fix for cases when `D3D12_TEXTURE_LAYOUT_64KB_*_SWIZZLE` is used (#86). +- Fixes for build errors in MinGW (#77). +- Fixes and improvements in documentation and tests. + # 3.0.1 (2025-05-08) - Fixed macros `D3D12MA_RECOMMENDED_ALLOCATOR_FLAGS`, `D3D12MA_RECOMMENDED_POOL_FLAGS` (#73). diff --git a/CMakeLists.txt b/CMakeLists.txt index 831d43f..6d61b21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.25) -project(D3D12MemoryAllocator VERSION 3.0.2) +project(D3D12MemoryAllocator VERSION 3.1.0) set_property(GLOBAL PROPERTY USE_FOLDERS ON) diff --git a/bin/D3D12Sample.exe b/bin/D3D12Sample.exe index 628c38d5fe27a505875b6c76686a618fb47d8f85..8b4bb3d5f4d514c6d6b792495c3a4bbd3c942fda 100644 GIT binary patch literal 319488 zcmd?Sd3+Vs`9FTcP0W?WxmZ%-O01~_;}VSv@uJ=fxiSNDH411%z*v?-1x+CrVl_5! z6Ugm!Y}#szt!>j!wW763>q2lNVY@-LATB`^qIDSzNN|Aw%Kg3H=gdqN!0M-;zP^9_ z@=7w>GiT0u_UAdzoQaID^>{rVPb&VBNsp%i}6!v(gEIh$uJ@wEG2d3Tg zJx`xrCtd96=;iTP7%YCu_F>;Ic7x&!_i^e3ajJ9c$xD++#d)u%WWIBgeJ{?+Mw|_A zx6g3bbNb3u&pmvAKh4w1ZF{Qc?SZ^v|74|k?#KDk1*x9XopZ<7=FLy_$d1|<{a%lc z#6Hf?1!Ysq%W!ScetVo8dk^?5kEi5<*;8&SyUpWyzX6>*y^FXo)j(E_piY{&i%X2?Rozo-hZaN|8D30JLLUl zzc~9-;`GNpF6umfkk^CGvFz`-F3-E`sOMeB=RNtB=&$>{Bkyp;7=d_RyEqcZqW#v+ z3^Yp zA5Sd--|OR;Gt!gsm6^ML9;slkZANw)lfUs+(tEKVXz&8=AEF%Rt|3K zy&THQvvG)OG+DpKGc+^xDm{Lg8o$Pe-7|HA1B_qe@5GOmo6LU|{a~*y;`7YZK?LuF zu&B&8SV8{p@e>>aT4brlHq}@OdR?00^(Z$rsOA`-8t!BI_7t8@goO1IlsD7%qZu`xq8g3jAzk|1qrcV1 zd|o=A*R_|O4eYuFjM8}sew6*kv$l~+BUI!1Z%L&+ul4feHxM!L5y09AlE%gk$0c^ZQaH|mD`&Xru^?RP?P&GDNm3WwH zOvuhtL2x|h)*cAz(jH_hQJAgbM%=MQGg?$r&sKFatr?F=W}N#K85n0G)$7Vm*Ns)r z12cR^GUIAoQh6zvF-+|8dGcZCsmgY;tl>wJN!84F`telo22cE<6=QSod3`1k8at%S zy%Z9zCRct7wtr|V9-kN?86q(vQ$fGhf+4z~wG)5TBxb)oM|ydz!i_zU3n=v0y`Fun z>&EpyU_OHT)#_JOCA_jbLUC=^hE$JxQjP1`AoAF3zYdd_spBvUDh-bTMGmTFS$6Sq z;xU==>R}?W#d;oUDxAMgg=WeUQo2<&e94UUyc}DdM-AtW2L1iU?a#K`AAjuj1IKPZ zIA$Ca@Qq|R$SIgYH$FwjmHsKN2qr>gHjfr)j-Cd-#$h@RrwMT+4MLM{oiy>5Ra)*2 z^(F8Ce}1ZNIjjcWQ5Nk4q#8S%J}*~|-|Sbt+rd{(3swzmc7DUOcxu3AUb`hBs!i!? zV9nf%)I=lOROcTQN^-nvhM;*Hm4yadhE5!@g_LTDUTo{h<-NrP3qWeU=nT7~4Bw@i zkrWt!dE->?y696-=igP$(!nY;K9pleo6kDfOais5@mu|x@do;;#xG}g<9C90H(77N zqJnHjVp_a!ewT4u@voA}4c2F0;y>v%A=|IUXJ%*Gb}dUaW@KtK3@~lm^uU^VXREQV zl(}iDQP2k6d037A*e@g*?XOL}+_UQt2e88JdfbWY z8;lz*n>8;VivCSdrYhE$*$FcITYx`=iN z7OhE*?Sk<+c(g@pWaBTh@pwLnPFogKjhQfLKs%J0D$oq0zskxcdae5o3nX`wj|o6^ z=tki~WT`JZ3@AAHkZ$bL18bE}yJy<)_<8xe{zhmL{vP(A zDLsFW8d!T2E8gO=;sXM{$*SKZSuwvmE4KG!#eJ%ItzgAl1uLq?SLDTV@Zv|{#gXL2 zS!~Ma(BhK>y1m=A_*LLVEj|~#xY@cEy`2_64|2mU0%Jhi1fY%5cxz}9@b&p2;%gHB zcl%KTuaw;+i~<#qUs@W$n)&;cK|wrpv`>Wr=nYE49ZN|TfjRr|%!w+ABu>Ou`QaNy zp}2(MDa#(pCkxZ_f7E`~@!FUAYHVnnP4Z$PR|i#Nh;D@7Vy)2{JJPh}w)CV&pem|z zgfB>UaiiLJ5Q4V_LZcat(j!zBorLQVvm^!b(_b?_*8;0mWkkCc*rzP|Optby+W0QS zXb;d3O$!ue@?dV^$wbjNQqi$U0bfv_V;*!y|eXo(mH^xQ8fWxDq> z&AcOv%!YpxvU5n6Ji)Ay_#K&%_yySbw8S-jj)@vzsA}8<(kQyISq~hFVmxhar;<60 zH?3KxkkKb(57ms#1S5>G#<~%wbz@V+SgjhM+GcCq%_*K*%~%V%6_aB^6GIb(7Pq!{ zka51x|NIeVDm2y+Fx|K)Vzlap=F=SInjXo8dwWO|nB5nFZmIf#jd0Cq&~i7iKS2la z5JJ^fSr~BSQ!Ee|y`N>incoWJ6T* zIw-Qu%EH4yymjSzfpw*-j%4VHawxFP)|tF)w1gCYYBn&#PQ~7BRr;r%qMMhT0!JBF z^lX1f>3^-Ct~#9dNT4H{2A93)wiBf!8$i+N?-!g4o{3_`wj~{1uKjAA7I0 zi~jp}9)060Xd!;4YW5vOSuP?;8b3%=y=|1OpbFAcyj3-RE#wf+gd^gi39GEU@hR}) zf3m-;j0eZSnmYj%6!Kf}Uwy7T3{rF7jKIV-9`fqOK`pRFsWM$!K^``f+{K_3E;s7& zDcL337E8-*&_OncBxp4S;JW#vlu>4CO2qg;3#`$V5v`HHyUHRBmqwX=KL7<_k=KD< z`;R3k-xCjPvVOKskSy9MDBY~_?YwNXYsN{G1z3bOHFvMt_!YeBzMoJZogkEvFJg=Y zir&zSbS=;l&C>!6WoN;?(&N3=Kr@t<0q?B09)|&1iN6LP0HW`y<}jKBPurw0Jet6& zvNQE~uWstg>$Yf)eW@+ zB&VY0V&EMhXR1R^9Wfn4W2!fSH?Vr+!Bo-`sp@;NEHtGXpXs^#wZ+w_7z?(#5x*G4L#|H@l0N3Ke7G6jZ z7a)&Rf3ItXq5;QY4HoV4qkwdCxKB4VUnHIh8&GzlW~69wPb7W{nngg?=*Ml*bz0+x zsk>^)ub^Ro_V3#_gj=KQBF1$-HU{MYFL$FB*j6@78B_?o;)z}P<22R09vvIOVZozj z$Djaup_}X!7zZ8OhK?Bud0ZpoLH}4`=wq_Dagzu}WAC+p3nepQtw!7;%@aXn(20L|C~wE`1hX#q=FbcVPUmYXKH!8XAy zZ6l60!O~baS$S&&A9m3!-Ar(QUN&0L7`T!hf+>J-!xa29OPD*`4A0EY(_y26dK{|d z2q|@f8c&bJPteR8p$*8Hko{N4nZ1PU_tK1O;QNpChm317<0CU^(_yRuY@7t^s|VhL zMKKQB#`-m@p+6W;8tV-N6BasQJ%-b|u~8@v80$^elIvltWr)J1|H*xyf3vswcI&*@4NtOdeaW=WYaNd0}}F2<51O z1Tn9uanRwyh%nkvh9}SpTudu)wk?0>cGK%Qj$RjbV3av*BfHu*fkxmgWf0``IPkU| zxY6g_)5Q+JdJO3%<+(kqz-Hljp?jOG+lx{_T}Yi{1&V}B>ahM&>?YlcVA>kHmz4eE zC!LfP?wHJ%GF%6Jk7?c!YIdbB6?k`hKmq)E`o1oRn3_TwgSeCuWkiz}Sf?yvPDnM+ z6G#*E-GlfN@eBO2uN=QD0>5mdvhWuGwH|2{#8s*;!I6#_M?;JQeFKxA8XK*JxU3r; zg1A&0UgSad?eQ%U`iKOc! zlI8fo)ZH-dB&xgtk(p2PZl-Z}_~+{=s~Kk^J6twXGwy}K-&uAV#8d`LdOX(+mUt=p zA-hlgfDCVAhgUTRtRd%hQRCkrR{m83@df4?ZKi%C_$Cs+3JGhbf-e;68wY+!2!h2< zexe#r-9vu5cK6Zz#MBQm6V}C;O|;%xL3(XRf-#4kLk4*e9tpMU-<;DG ze~RKiS@DneBPFc(HEc%VufNhCi5_FPPb&!e=3K4#d%?GcXYDVhd+kyDqqtQ8d9u=f zJRt4%GT7cx4Iu~@`INHkOp#Ng_F{r+8x`*y5hdmCq1{#nRS}(FP9)$|_*|enJVZEU zpaYaddZ)|iNA?~nd5vn0MYIJbq9>_Bf?>mpk8O=g}LG8@B3Nr%$Qhl>?=UuGBX~8DZ z{;GOf1H9cdf*R;sD-`QZ<+60%6E>29QH( zFd)t)^s4fdL6wwO4RJ?T`Hcw2CsO^YQuPa5Mvmfykn-HMzRJd=w)I^^a}n>l8T~J< zdb-d2mA6km<+2$oxu3>ecw>!Ly73D1xnIq1R0AvLUd;P((>K0j-e&PMy-$;PU~9zN zp!ZoB39M8W%m!2Dze=C=z!&+iB6CTX>A)9A?#=G+oYw-cD%AxxAg|&?8REUdY$$|x zbaU7nu%~4(W~XOI;^$>kS>;$;?k@$t0(KlO*r)GCiR}6Fz4!I#O#AP*n z#n<(~M@sdJ$ zD9kQLzDG6g&#nQKo{Mb$9dOAfW$I=&9hZ~oh`FER3c*>~CQj+uC8Nv%XGe^+RufKOze2QP&*Gkq1S)dgnCfan z8sPAtd3~VB23yaP*Vz#3{`ja0wnl6I>!7kb56WBIl5_ zdCV3`ayynDl%}CS{5}o+RQ~4=@(0M3(sts$ySh_5V(ij#VafIhg3q=IUIc;7E+Df!9duvDu~9nWu=?RBzX8M(EHEtu|KRHhn2D#h zo!^Ck={#{d3D}4TrL*OyafC@Nwg~ExWI!URRopYY4oxJzM*oZSdiFh+UYw6}@~yaW zB^1&&IE_r(#adfc1GNkXF`JX>@hJB(mqzV5ZJJ}>sTYvrtKP5N_d{IN8V{YIn-g0# zsC_+mr`C8ltx$PxJ@5pSU7^Je=iEC+ORmCsZ^YQDHU29NkO*)u!PLSV5i|7)s}ItP zz!)%nwwAkIGhVX}B0q&`o>ok#wQ9LrwcJ;9Gu&#uhtoQW28>N@sXRf@P2$|fnhDui z6g;RqFz%byn`l!gt%$LMjuf)h2^A^T#>2g|Ek~$SayLc1pNa7zIA@P33W3H7 zHe0VlX{pAMwv)sp*d}WYjx}R1y*h9-@gy+2qNB| z_?rtecBbN=>(>MGd`j$PU{R+WzNs_myV+`CNE08V$8oj)JpZm{iRQG3@s_sbaHM*> zav$qaBIfKQ2BRf`GxUBvJpql$_f&*!Wd%OPKeoUh3GAr2MRdTWpP72HW~%TXnt6wC z7Yw}sKDT}a{0C&LaMHXU{zEfe4jjR%7r_5XEr3BUpeKa?I;>#ejeGtX32cg<8`{4z zC5p7Sfad-19|~ICTiWF<5x5MIz_yA@HB+PSKnH}rN2^v^a(a|6;7-CnkRJ73mT?)JysK3lMF_*I-5_a+w*7eHFYX2sZ<)w@N2( zV1Kk9XwH9C>0g+g$Eh3;Tk)rpfiSRaK==15{_FVk(SGYr!JC-)KyFx4J=PJdcnD^% zL`-VPDGk-U24aKsOQ~{sOmKxDxPB%^&Sd{UEzmCKW>BWGmUA{&0W z;v#BcRZOlh(`nDA+&XF3sw-1G){b|mjC1(k{t1p_ftu9E=FIGE>ipdeVl-(tJc>e> z{ME>B4@9s>_3XrZG65dWPwM9PCwwneXlO^incgvp1p)}yk^ecORR0EQ2YN+F$7mrPihl$&$TeA?LdE2L3VF$+ zc{U;g)%*?CO-sRe^H-Cwj^4Os;wls~O+rlu%-k~T5st&mxNjkgn{eFt0!oW;VwNat z#0h2}c|D9!RPQBDNS%3E|iZYL`pSv85 zqY%lz9h*36NP5=aVQkyhf=NIR7V(ve%1&1BAr4_{ag=H3)Tq6z-Or1r*04C$X)3Qv z1rouHMyO0%A2Db(P9$MYQWG2*hK6#k62Et8$QQ2?1^kfLi= zzugSWp(l>>IJf@oKOE14$9uqW$1|trc)rcF^ts1-+=gA-ujoN9_^UD<4cl}IbBA}S z#*clhnc2}LA1d;2cJT-_!H(#MOv@P~|FeAPg1?b%FGPtJnEOtcz|}cjausB-F8I+z zW)EyT!e{esXK@S8vX-69jFYuAqes=V{wMdx?((7SZDp{+;Dqb5psO>j=C{dm;5P$2 zN?*$kLC%4;?p6tW5@Sfwr(Ly=_wu+=2%H!6bJsmM=k%DQ;KRz&lNt4|Qb_?Pwrmm~ zy79IazeQA-mQcjlog$x_i^R|&Fh5d90lyO4Cs1*HR^g0ZOs|CIH!#5xn$aW@FO4GG z(i`2*)D0iASXO!no)mH}#%P3@DUsYpWJC_M!mmaMhom)Z%xyP-A1; z3?&vgE!CsNF}+}pXu-Atr|UzaWK!oX#+aePu01@8cCCCGL;Rqc2r?@GjKYN2hUF}k zhJ_blS^7yZ%<02&2BmH3qw}h@9g%S@i&=wIVtpilZC)mblu600RQ<6ns4#_=RISHQ zM1>Q-s-*7ciPg_`)|EQ`fviV@hhV`&pjB0kw7fq#9s+FayT&QdrJpH3MJJF5V;-ew z`QR+%+~+R=`CyEzW}&XKYw;aJBNcN-j2--2f++GhCsXsbtO=lu8KiiJQ5t-p~m(i3z8h9Eczwh^ATLk$bGZ5?ol{w@JfUH zr)uUx4=_RdR1`A4V#wtQJ&##Ucu;3N4-@NPu7nlLr8u7q8L8Qgt^Pg<+*3YdeJ5Ye z*e3Q@kw-N!i@y*ox(Xbc->8A=zCt4NXb+ho#k*2F8}ApO)%D%Q=k@sM8EPkV<@0D%5LSLvytq4E%t zrSQ{EpVk@w8;$VS=EGlWMD91xFnjNe?Vb1_9(pZFDT7$aXLWjTW8oABK*+Kp&a8>i zIC6w>!9|;i&Y7dYW~jX4;4ld%qzuCZ8;Z0edZxyQ`wExAmT;E=Dmo_ zj+Ffn*;+V&^_0OAAcI0CP@#kxFsC93(@UrYA=tPEXLgBLGp>b=x~ALgl914AgoIuL ze61A{ipNABq-3d(MT_nB*5h|tjx1i+>YQqIq!9s4mXMiU?|>nttb{AUr?p)qB?M6k zFaD1tWjQ5MJ-ZPCQTrcC3%W;Pf&Sm#LKBW?A5lTg*NaSDp%j^?n97kN6RC70#%5&^ z)yyJ*l$LO<5SDR^ZCUC6jRXXqiD>y4@}Ua(K>zIk1_Oa~%&K&S1EYX!Ft)*PAR4o3 zuv;qxBfPj%E);}1xQSx11bzTaQl!SFEbov)flf&JqkVBIluU%?Co93q$^vhvDBRlw zBqHq(mZ4!o`WcBn_+m=cqX1Q3{@dg7XIibATyLZ9u$WIW`eLk7=XAxOc%upd(t&?5 zp>L+%fM8ryavw~IW=i8~^hG3wJJbGw*C^~b@LMvi>@B)kJ(Zk=pyK3g52?+iHitg^9|O$|AYPct7(rrt6UM<*&dYR zNSPT^Z=|)4)LAd0&YbRAaTBVX-}^B`RWf_)z5{KU=y) z8B)F&zSR2<*uGSCkijB%0GZ7Q7$U|GGoIr_ByrQ`D*^nagIrE4 zjh=f@YfO5zEqg;R6A?<)GW7JmGbtu$~ngNbJa>+8xo2LQ_(u8buv=N2@FY;XnsF#X3CW6%o{- z$AHlADy0r%r6t#*s}a0Ovp~nVKv~D3EauDutj}~z3us0%Z0yxu{_N+q_osjP`9Ed- z1rSy2)a+a-a1#T0VP2+SZY=lR<=0Jz3;*&%&@*)5cfif4axMk}FzOsN zjyFr)l3_Le9j90fSEKKVI|Mjm=^4Bu+bJp{th5X$FvgYVIqK-U5*lvTbTxO?v5JdM zL%aoL=}t;2i!QU>@ixSK>#YE~&m1EvL%&1`R_aGYNr`4I%E90SdURuI1JKrq9P5w2 zrh0U6w3YEq*~{)oiH>4H`+;3L->hitz&k@IfUvICy$#xo z1_Drn&sgVq<##AsAfR~dw()Q#b6NmYy)6X9<+d}`2h{_pv;h1{p0E#F)ESN9(A$D{ zDi|MCR3giXzpm0Vcb$};dJY>VrG&oj^s;khGE&%bh!33-DLojy4^N~M052B%Cp*@< z*!tZY6d%_zS5!)pkjLg9k-{?%OlDR5jydUe>rQOZZCrE^)HtQ>ZX5~(jn$Sr{3hxN zz8R`eS^!j~_6M60;(Fd8BGFJr>PHW2QZD+i7FmSGy{xG;%zq~b+KJ3WjDnR zBK<6<)P?^ZZh|A$1eN7m9;8eq8ZemT^ZZ9er6$*@TP#c%&-(%}C~=Lz!4Jda5UG?E zyeF4TwoT{sUWv%CL+r|K)({ACrzrnbypmvs@pi{rmOPxP#W8P;BxMBe7s?_CEslKp zNm@6T`WPh;YuR4(QR}-8NI(k}6jz$PSrrn`4tg9AF_Q}KcDE7J6VV|2iCGuNK+Hu$i9MYEa^&HgsP{B(b zq2!uS?5o~$WIzZ#v1<);CdNc);b<*Y7*blIF0!Ai;e~@M)fnE#0H_+DSgYK$?lV<6 zchhIeq<+t@@gkOamB(-5IOA~~Vu{!?ZAL8GEhpS)Q&&mUsa*GYS2rWYzYZ9O*Os{OhWZoqUvS#}QoqpIaP zL*EFfelOy(HE1=BU`2g6|NTgHQqGyda=?RtS(%y%Tc5>ukqc|4A_WtvPi9O)u_SDE zy=t0#t00*%js=_Y0MDF*+JNUPNp{n05ZAviZV(67vwtDQ8&vZFUPFUE>&Z3AB*u6W z#u&x$&bSN>aCm22iXEsq7{!V#MOQ{fd}0tmF$hej7k(v!szUG*3=XDGbt5h7=R`op zSr{58vM<7WaWJCe5Ow0UY`l>IG5%KXWvBjzzA-HuP1R2rvqG`%EQ8*<2?&!nLqrHZ z>+%mFJ!VGMOwtQ%Fa{w_El&Kx0r;*2NZxJ(TxoXkW1l*qE9xJ<9p=ab~q4$N>y zKE&=&)CFlneGx|fnhSD*4YJY&X_6rSa6$g{M>+CAsm_BQks$ZEAPqLiOc!K<1i9S> z`2#^jeq2Rfyb&>769$pLA8PXe-3d-V#G}X?H$p>2cOo`>6WfpA9jw51uUc>siby_E zm62Ey(4RBmS}LohKMk79l|d;nVo&9Pn>$B}fvEW`DLYCv0tm!a+u$*OTH z)PgxkHH{vs<6SGvezQr01FQ}LY^L%&&x1!$^!|4qZfg=0RWRoromXE1{5e1;q|P-GhI;*MiHgRfO{5JpVY zl6YgH7{nW+DD;j{W!0g2J;Bu%{Rfrq9A|X%+RY1-~#08E9huhput`;MWT5pvr^C&RjZ=ih9B6p}&ve&$4!|l2@Pq@f6Y&JpHVt8?y@c$i zjgO&;eANA5vWnS^5G#N1KFa2@S;%J~iNWkm7TiRU%48v1kmcfPj&Kcvn8ch4Ama@t zsNt0bGw~iGre!#h(|=m6n7u)*O>!lxZSYd1SEOa#`&F3+*%|!}qpc!(7!R6^5GEj> zV?2{xiNV88$T`egm(v~9vvaHu5R}pWO_qit$MVSGbs1kFR+`BYFAqXn%wh$1GaWftCF6(@>88f{`jxGb-`OSJCQt)f&>6mvQ}s1#+W4N9lf7a>FN_??FVfzCj5iZM7+__bFsNJgrj$SA1b~LG*4`oXV z-jbskb3lZD;Z=Z%T}lCLf6(D?N%|+UOR>fZs9%d2N7YE1$ysl5do^}&VjE(kCSOC zydpDRaXLJLcoYPT<|M*-xLQv4bULL6R(Krv53PUjeW71#79nc3TMsWqqm0FxLFv|b z#Zt6TAFpUaeGOUc93C8`bPv_d zORr=JA-a>tv*0?+=!#c_3k^h+m5IKx#g7{p3CHmwIA!yK@TKRi0uJC)VbtyCZLnuK9YF?klyJxE;!sVLa!X zWsU$-3ACISV!rv?t|wJQyq2iBTYHpX{=2NuyjZ6hg%iMJ0x{<5!|BdQO<~C3H{Dhx ztt2g-W^}ib@Rf#(=~z9x)LQZyNs{r)@zQxJwO0K?=3|mYGCnS~swK!BE=ZjXqF?WT z{6KbNf~2`1m)jsuk8xT#$a!-!2exwl6&VLT) zFqAxw^q%Y-=2x@eVYc8!1msjh$@{YzdLtC9VL_?je(1wJ6u1{BxqB2oEhzHjqw6A1s@;;5JOe2dnlgRn;Jd z_3KQoThYoO(im4s-?>~vopj?Ny-uVfbZekD~n#^NmT#tdL28)0ci4PyVVOw^db%w>s=7N61yhAUF;O5gTm!N zvOtB6Ca|lGiZ8{3k#I5ebchM5A@FJA3>Bz0;7y|ISi9&LIC}vx2Oc1>B$|fMNeqhn z)#O@YECP(}Y6oLEr8h>C^%7p7bu>tcDDXsofC<(sASk{9{8rN)SF^uC4D>^^3O#@~ z!8cg*?&bbNB7#MNfV!+R_b&1Tmzq?Kky`7;O+tA-GM35{$1QQG>QfB?&|v*u0#r$W z25XrO@av!3E&N0ROmGJFqQ!JPiH;5*)Q*L z#9`YXqZU|i{Tf2Y?cHD_Zs&li+>Wl4+t`hAYn&suzs{H2z?Js#2)TV>6t-r+&mY5Z zM0NR3@BruOZa(Cm?96e@>OKb3Kt5NEwBfTI(|~t27$$~%=-x2g4dRLl90jsE2!E*8 z4`0n(4{}S2Fc|~kMi0WO|0l=8gRzT1oNi7yAAf;Fc&{Izi7+h(HV3%QjO3Rv%?;`| z_$suSwr@AOOx-Ne5*jG?1e`5TQ{99y;1qPG1A4=>y)asXx%!4?h~by zDOcI4N_aXI$OZC^EXL(#S`J?q5)YyYK(ZoBzJ?W1=$0Adprr7Si+%DTOWBfvtTJS` z&~``Ap5r))r_(*dKx|(uGLlTY@^0y#5WR3uP&;vV7J_)eu9uxCnC(rg-v+_1`>z-5 z`ldBxk!07`(`|s=>jl8;4uB5;v0M2YX@L0 z06O`>&F|NP6GV2}S{O#+wgG+@@EBc;{kqC@(ss#E z*kO@HNQ9pt6C}b*`85k*=b3o)MF2L5o8uK7xUm_>EwtQ;a4R?QiuV&?%ZA?_kA5!A zFFk`=F43HYsGSrt$9a;qO>CCVsqh?{x?lG@*D=Eyh-4z$i+}M*4(N#dCX@>t*1``k#Q!dg;7| zhSjc~$CXc`2$1}o$4fc3+fgeRZY-@jIIba0a$H|FP=E%MD&)^ZTSaUOZZR3SXCqDB z8oAqUq#y5u2MxD=UD;Uv6COV-Bpn9WGdlwz&cZ&rXO9tgA>jsw-iJ9)XkRjklb(Iq zo`Wj33fBofJ^wl~GRsJAg?COq9Bt3x6&4igN}#I`MnVD@M5_hQHpWkBwF1916_ohsH1h$VZ?IaM_wlz4Gp7P*|H$FGu% z(dOlA_vWk?-P@*7hQLm&JUpXCUf0d3@Sw32HdnVb(-M!%k>;^fIfpI*hlh&Hb&w_y zLP!&Ggs7?aTR;1*9@q&KGE6w5Sp=iE;nZj&b(k6`&QYqz;D|Mb#`3J5I!P;>*vpn9pGUmxr00{g_DaAK4(_H)QxA8Q>N=Bo;+ zb9^j)`54{}3Jfrw;7}y>l`1$!SU4PnQZcNMvTT5gf2r^kqo-nLtctahmKAEfaNHYn zp}kPed~&n}3*c09L};nQZ7JxqbPieq2?{~;Z_?iPWP3ZrFv9S3Riu~Kl_{9qzh=I` zUiC_OZK!=ssd^13lx6+FBg>kwP+;|+aU2pxoA@sgsJ|1_T@Z^RswU`z5^EFE7Q%dr z`f)Sk6Zgt9&Xw=*L1xA?PdfMf&bfm505s#YJ?4CHFpzdPB&{cRPmc2Dh?xEOJ*Fd| zRVZSeKAoKWDS~iOnFOs5R|~zcd6d)(K`R9hrO==Mm;xpnNGqQ1=&`}lzTf#Q zwAc-QVw4%LcuKsA5|2Ke2rmoc2HPaAfF^;B2g4-ro;$Y462PTOgm)q&z-=EPipHuf zVN^GbdrFwIMo1atr$%}e@I)Fe1%fD#G7gEnNhYS}ge5^}ejG20r)&oc?Qgc-jU>HD z0gPu#cjF_v8;Nk6^fdMg&jEfWSjiKQ9>!4QD9-9K3OUaeNk_v2Wyc4>HB6V5)lBR6 zS9B42IS(gM!|eE=QggwHw1@Uaf2p%%K}F%k) zG^v05F>af`nsjkYY8z+)6YyK>(?&u5?IXz{I6esh5slcPr)_{O65x3UV9!00;b%N! z11yyQ4>|xF0KgXN9e`g*fN}@mZ)~CaPY-+eM0PzZ1K}!iB4@}m*?D5ZBrR>4%~I9; zHW!y9GW*T=7r5%nheW+LtCMxufgmj$wuK~W=p|CB5H><}LX38V7asiiVa>7%Tek=mf;P=7MoRv$5 z+&Qty`UfTx@g8Blhick1v(Oo<5l*{mKEQo(&)?smhLqR#;WZza&(MoO_L>|(r{H6Vh1W*ztXn@i>S25fY*x(*xAQa)nb5Yn>CxlPu4E#1k9hg+ZCCCMo|0v6Z- zt4MP4+V{4Dk;xbFVZA&?i($SG`Xw6+%=f{gO0^H2G|X1}T&p;@1^-pUY{yA;ej`~@ zEin0UJEi*9_#ZK_M3Uqk`x#YuJ{8^#?$r`f&ooQegK75F{_fQ}d9{vLRr_i)4(yis zT(k^u>sAvomn0;&dsuc6&Gy*UrVc1KY7yVyra? zeDF>z*~UTRvg&QZV658_OAs+!cU%x5mC=(qF$b!ysJcN_3h`}dG=j?U5z0H`8hDiL9n5DKZs#aTH=!Lx8^g&j*`F{5NJWx>0g ziZ@K55~1yv-Y!c?h0a7E1=ZQp<=MD{fc#8?%yB^;u|XO?c0hh8L5f_E1vbc$T@Fa01UcUY zxzz^QZaE-lNs!(y$S@nE{v!wE$n#>*9|fI3pJIbN@}UE=U4pE3LH5I$5G2C0Sik$w3PA4I_rH@hGyHpojm9gtNLLf_q1$n^+8SH{oNRVkR$YL90tXN5hj5%I{jBr7sHb~>!PG2sUAXzTR4FnNC zcE0I}>~fex_z^WiYSY$CwEc%LB$Ua=0h{1FthgVwMByx`4aZ)JW# z6B-+DMi+!zmFj;0r$+ea1>yIV>PN7TShrR!2wO_^Z{^Wq9JMReaUK=Gud5dG?ge3= zQoWx~tmsgx{X~30MP_t_2tkF0m8k1XNfq;~Sn8wL^`A@WKTn#*!L23}IsWtEEjT4K z=s%tlLi4*}j$Cbkw@r!Y*zADZCqd@9AddlrO7?^G4#@2iWULFa&<449g9D;Ukc(W9 z$@YU*xFFw`ASbyXK^x>t7o?X2X$v^rJ;MgkHaZX5`K%aGlM8YP_Ln1C=z_c`K^}2I z-n2osx*!iqkOeNtGd74HGAB_tSAyK?g8b43ndpLyks!ldkUMOU-Y$0YB*-Z)$Y>kn zhb~Az39|nRXV5t|$Z8kl<7dR6x4Ix{1aW@c{B;YINe-FXNGs>GxHHL3Wpa4}%49ZH zQ$W%h?AEDFiXh`9R3>A=?M=2aS&gi81E7R5L1CJe2=BI)Njqe|LqsD|nP4i8Gre3X zg2J0TA|qb$i5%p@raQ_+JxZC>;DL+rw*=B!j|w+5Tni1dI13M^Zb^h6ww1{fP$o#- zaitbpnKW(fqD*kMdz4z!sZ1`kmD{sul+qQnzRCuP>3FSiPDy354To0NIpU&}#GosQ z!7jdzQ?%yJJgfE;-D^Ll9nD-MOfi{DCvzpjtI2vcZ;2|~Xe%N`hr9H6 z)a9&17{MO`9I#N392S%u27mYuUrG-94LZZiB`jcoB@eg#gMsQ4k(>T%DYADyfV#P9zjZ0nvb7=O zh;Cka6&6_%)7fr589uxpF9G94U*`obyXKZX8%ifRk0^#Sj=~FfYOk_0CwVspPH$Yi zFoW!@aW?3WNyrpWbdo9@>(tr5!*`i__DW%|1d|J6!S-#&1&fOLi;GI+gd7Qp2|2uF zHz&xdT7Eul0xD~vNB;;~lKoVx3cVg3JU6jYp0P za)AUH=z?f$rR&d8`IX|sc<}t)OAy6CmHnM_$W&$3weW&iuVeP>|2Ht)!$#L=H&SY) zqh+v3sm8Er|C$tJ+mpyV_-$tB;W%YFxtCc3u;4)h2nWP%^+P=ysg;55O245Q4Cnd|=uort8!p+J;wdbc)vQ$a188AE z#cN9SIoQ(+D&R?6Ek+y8gO|{vRF4%$8P|`&*oD)v3=z8AJL4?wHK|5MKCW8ok7O7b zW}E08k^{nXSJ%_w5@)xJ9YH7ype&v)9ZMC-cNfyrarzwW?k-h|@@rAoKz7Z}A_C zWf-dtw4AmM(XKfPIDo1v5$5c;h?pq#U;I`!4c;iRg`KXp@E0X^9u&+#&BT^U zx}f>rKjP3~pc9ip7n83Cqt_@}0wy>ta{!jdMju6^s)2-VFFxNdAKm7|9q|MKkJ&R! zF{LRBZf98Hip3dl$U!?$>~|n7XosZ68`zVy3xcL?JTf2}X5TO>ERJw$ip0YniMLl= zHf#7)bfupje@X1y33b7myntlsOJWS&E{M3Oh_XLjr1tF=Isx(SGY^n9E$QS&Ymse) z_-r9Jeu3xdoTQ#k0!p4Hn!1)(EEW^h0+oWPnm?57{21*Jwlr*D)h$d8imR{U14Nuo zl1HiEvDLfCw)7=9%$}IEhDe_Cw_}Rr;qmrOGJxPsZUAA{5@m=XP6ZG=7b@JI*_ge5 zrxeg{n)gtod*rHLC*fG)54Fs5AYZy5CrgmS=R1Qw-+qwha@}5(+@RSO7o@ih@>dsR zg9Lfj1^Eb$I9Y1)lTLRZlOVrxK~@8V-EDS37D|viU64Q9Af}6#$r40&LGI;)de%!k zk)1>RHh*`E^p^LG#^{9q(g0&9>Ww3H!ZV?i#{T!j6x(rcJH0m}+Zk?v3{Zo>Oi^5r^JXrP)xd~xZyrmBXrGq{3Ff2`mVO|OSG z^0X;NxV5ccJxAQ;4H>KB;Z{^o=Etm*vhVZXz*t8wtQ~4*%&5dd65qql>GQF33U=Cf z#*dvt+`%ktMt@uaihC2q(fOE$yLeAw&CKjzxB64f*f}G?1)$`jiXCDts00_^#G*%7 zQ&G)tQtL-tbj5=74o{YP;9a%xV+AYtyqiP_n%jhWhg-2aYy;+w#MnwWz@hM$zQ3kR zhv2a!v%#gC+6H)#FSB>>ixmX*w!>ixk zdb#>S#*-u8{mFnQM`CFs?ZEqb?t9vn-MaTZt#LQXWRv*1DpGQw+l)5_3gvQIhdR+I zR=VfPlwKpj)l654B~0=8;w_pv2~}!4%0eWJSWl~|$9h^vucyP|WAPO(#EkW{?7^w{ z2xSLX)H+Q~T*LW5;L}}E%Y})3A~B~W6Oq7|%7W1p*v`@A?o%6&ctiC!|MFtIZ~cb# z0tyu{K2}Go;i^4RAJ*8~wMDdzL@d57EHGrASBbBZ;$gte2YT+u+Lk@K_hYSb&k0!7 zDN?;hsrn;s!TYtxLl5zd*02=PL2oE`lZ&GR`|vF_?^-T5GzOnFX&7w|Xa~+n*=`p49jIEeIr&OM?5OejE$}`4s2U2;)6z)JO&$t^q zQZ-~kgTUp-nsX@gt(u776pP2;3nOME)B2!NE-9I#8sl(%B{;DX86Z#eIyKgjJ{vD3 z{unh2(Hw-^Sa|eMI^Islj@fr~sQx6<2KAqJKN0j zV(amhs%>-oa&{om$Y$H{$;iXKmy7->!;$72ouXnUMg07fpE+Cf8Ty3pQ3hGgbNPFBmfp%suOB)YZcvJOw(I4&@Ntt#*vsL*koCEky&vd06)fzK`qz>tEV4I zpL-dClyS5lh`~CX1OI%530XX*B9c$EqJ+1 zg$^jYTD)Js3LgP2`+ms4HhIq!m^zim;n7p7ekAJ&7bXgyOsCW4>cL`=W2M=LCCAs04%ueSO2B^cl}9ic&0^Oj8ud6{xfJ%oHm@Jj^-w9P z!htBI1rgzAsU3a_4c$}pGLJ8MFHkt`PA(YL%M(K)#EXT|;F*PvtPvhssPZdR58SpN zuU3A~SD8ej zw);z(r?H!DgSs!a+x>{9>m{%m)Ps0yPfzCzIK*ZL>WW_yNiJPF$@|3HzR~@ z0k`FuOQUCI)J%i(Xhu4$y}zTVX0%`iSRD7cQ3fuFsRE$J+9Uy%Nq`#bW2nAbD<>-3 zY51Yt&Z82n)@f%Iz&2PZ0NY?0{Evrx<^cah0#9~;e?wpZeCqV-W(hFd0f-X7`8g_| zI~3B3c&G`ZWxd=|vZ#^v`c+O`R0pi+#x5jljgKHWK^K#p?I{NS65%T9^F+9&0UK6b z)*_w|wckF}xn<%n2li>Go#2P6sqiBf$z)uDB0B8iB?3rYJbWJhE}`#q=|U8N+5AFb zl@m)a05Fht1_w=c%|-g47AsNt?YFjD(kRUJaUhg0;jW)=f4*Tl-SzKKX3#49!OdI= zp~%;Emat{^!2sGBWQ&++?-L_Svzi_ZBj$Lg+X5(@@>=3;!HqHu?CvwV=f{%ycn|F*7&zkc)=i(`qS{Pk<$s;>j8TvuIs zsT@eBiw^G;i{Aba!>12U{^+dX4hnkw?H;L7gH~uvr$!AT@Vg!iYrXhmi8%@UGNw_w z;1M4_8vtZG4z5_o7N0NM9X1YtNrpfoK2!Xc?wbQKTH&m63jP!?gNbN35iVxj8seHT z{Zjb6zH_j2>hLfPOpA4i*mhmh^I+GtWmWh*-)L=F35b^@v65#plSg80*^Ym+wrq#H zwk$k0pw5{}D;9|RXL*YBYJ|%pUP)l4@0Onks~;U<%ZJQIZnXZg5{TphnKfuVETY!3 zLBek^g!AZL%al!&t%B1~bH2DH-~SI<6Z;6Wh86_7i*8AFxB3-Iq$Nji+ZAb8koW)j zLa5=OF|G(io-hSO9t@_!`pmF=V{z)2JT-uPmb;VM3k!a(!h)Y`mGMo}ROQ}R0P-Y3 z_Lbr;^MT)iVZz2*$A61`+^c>gv}fo*YvadWW!cJUjjg@RzW!<6b<+xS8>fY04SCbT z@m__-%Ia66&3q@T1eKp`MZ>rI%!p-mpy68drvr8es6(XDfJmdavf!@-GJ}W&am|cc zcr`;f-WDp&?P0>C~Tnv4eFU(UwaknrH}CB%rg0hf02l6k`b_~t)>mzr-~ zEAGTsO3X`F;TmE_Oj6|tuMb+7RY3@)o)^a)V0w*s2@^S}C9tUV_-hc~K@2ZZ#7DFv zI8_d%AIxNgf`D%*Fi{WkG|13V1bK)I?n01PQID8$i4!v}kujruQpRBP#i~ch!`rvW@ezZ3rT>$eUA0*|CLe1t%GRSIA4tz3)VO+PA07EzO9O1XU)~Vf z=OXWkaI1|u^p0rj>CY`WeuJr98vG}wywD(P!5W+fm!LsBu}5rX9lycniCw#gx1qsM zY=eR~))Xfcqyrf@Gc>#ZYQcIE=P;)@^%x>oiU22v=P>{5flWucya_&EtuU1z?T|hnXNtS{d`QtE*~LU_ z_Y^HY8YsM&wZ3ndqD>bG4dKGsQ@TjeqK~#CC|VQV;Dbcdf)1pALMv{^z7C&IJq}6= z4SbN;!bgD`pq25FV`diV%9Zv7kQ^gU)rkt4Yo4xAo%qihiH*^BNL7!3KumB=T)5yb~VFm!R7mWvM- zA^W;~{GR+2u_OsTSijL4xD>YoAxAlXPvWEBQdQyw#4f7R>{kT|u~xuwB)z2b*Z2j2 z;f>48r<1uI7CgR_95FucbdtsUivL0W_C}e%?Th^F+psP5n7<~@@zLJ11Qnomfg+qi z{`MTzz-M+-n9RoFo^BHRxG7vX$v*&&9p^L?(j~Y#==gki{T{)~%Xip5U$~M1jYQpy zQt9zs#r(UBb2eJfAnVcz@*K)#k@C$J-rj4}4({E#^6s*=boN-5g-bR~N>h3`d!V3X z6l4Ig%!()zj8%Z87Y@XYv5EoMdyq}UDty?z54*=C`!YOJ_B}GPJK5iv2(mXJo83wF zSMWX@DGrMPVZqmSIR_y*jJ)+iV;7@QHrq8A-?#l=w~p&rOMxSSa{PS4nLYCfJr_D$ zZ!IXGX^`bvzv8PN^7Zng?7;-8d*(vl`I#^XYyC6`JkbGlIMXu`floeJOzx7DNy)UY+y62gR{UHT?qZ4$MehNEEN4o=_|w1lNa&f~7Dx zV!;L2pAOm}+y2cG2OKE@ZN za+?hO=Rw+&c%+qVI-UQ9>M$f-(g-})-K5kBNxUEFA4<$*hDTtc>C}pq(2C?zd)dPC zZTr$ar+_7S#OjJ&a|*@2w$7YFk+p0#1;EKEh`!kh8U=*&lO8bvkv4w`a+(YJbWt1K zY&UQz>^8QYh8v~8paQ0ZoNotysjYBKwbYNt{z9FB@5hVDRL)e1S=4`HpHayPWFk)4 z{wVm(!D%V?j$x)HPJ?esoPHwmz@i$oG_MOj9eZ8s+H16j52grvUF=M$7RxEsQd*@h zC&iR%DTS`cx=ADzco|3*8Bt-caf@RGi)E>%t}JL1#u{%N3yoED9R4bFzu?z7Pb$7Q zBqvDkMNa=n*_Ft*NP7)S;e5Yu@Nw)l5-#`@8*jt-Re+O;Y6Fx;$5F}`&I zlRXA}q1uz7%RiiQ3C%G+uuhd(gUSt(Cn#oa;Ab!|AZ_d!w>z5oX~q`ztW6NU<76l( z>jEr~+o_rJJ`vVPxQ)lNSbe9vS&DK#rd;a%XJ@2%0tuyh379c#Y$!xdxIBz6D2x{h zS;q=ruD{Qrb7{)7LZ4tBfpyMGDWI7HY+ye|Q$w-Q@YIVqg>EUi|>BJ4Tu*Nq?uc9FAyC z+C`L#(ge~jGCGiU@elGO?c%Sv3z9lH6xXZ@qI9E&i4I7Noz2j!3q3v~J^nbUD?REU z+q9Hm>#^{X97{>!bKJi~U{=fU3QMYNFPlkADOO1w)EQG9%SM9n=pr9G=l%_B_G{zzyWyH2Kc4?0$z<( zE&*t)t%oxJd#89e_DDz@VFH8}W$CB)}jC;07DuUZ;f&32?+`ck&_v@TZ5p ze4N3eXcp0ELVLHe))(6r z7Rc7yM$~ePqIa_b-!`Hh07JLwiao-R8g{eLIe;4BdkW)^RACpf8&(}2 z{6DZPa(=SwCzlInG_oEfB)`U72vr^oAwnt4ZxnVF88Bg33v(NW8+w%r(>gsKfgzY$ zBa8t{+F@DwS<0h~Kr!UV(v0i;Rshw&G^{hlhvop>#jcj)t8K_$ycAqI?Ur)y2dfwkSuCD8v>CY|^Bf_~S0a12_Ji0WlXvG>xoDk_Z%~O2l5F z!KK&JjYge8-dgQIYuCV6&u!4=H!$$kVy*B{!f;Tg)^?bo8ReX~TRSd9_yw(0Td zc~lJ&jaNuC))I}U0*z=(+EP}wG2f5eR(V@4kOrmE?c6}1wN|3F-;an^UL_cCtFVub z9p!n%y|Kfvqo2`^zUU5{`kG4c$q5DmqKEZ`>q`jbKlI*wH0MbFcH;(Zqok`^2@U2a&)> z@KL*);cY_L)6Leg_sONxnQ6gUnoO}|dM36!&ce18+Z+M} zu|plvf-PKeR4AGv6Xh(hAshyXV?FSc5C^H)BchyF*&d)vAqeoxTY*y(QF9H72Z2;b zas$*1B#rZS`L{{aUi|^W5!Jjh{}0r8Kr)RTFr15*PnmMTa%;^>j4Snhttd-Y#g{v{ z6l=H@m0%)QgX}%NK)+IrwYFnK6yU`|fXP@K=i*KQ4jUUGSDlLR;tf)IAHfJAp14m+ zFS1prNGP+#cd;YBXi17M`;SU5He4dacd;Ckdye9}nBrS(T|13TC`KGv?1(Smr5lX% zVdFJpVgo1Z?*j&ixpLi@*u-x~lkX&kR?ipYoqhE(fzV zmz@(fR$hl9m+M&MV%rydzf{(`0DzucbM*8OzsJ`%7>=K}UOZ5AkWWQVLdlhdfvw7d zyXoD6mRR@!-*R^bkxLFkc0dh;L9@61&uCWHjb?Snr`f%)NSd8YrZ>X4uN%#5%T-5Y z&~l+A$8y=!hmXuDzq?Lx&CAoEOLD9pa zhef3gO;%)(^q|noP41lT#FUj&&BV;~u*XbJPpvFa6U-O(#Hp0Z>JV1+QYwT0_q*0U zn+s~w^#A|_W7RuTzl=c*Is*VZKFr0vUvHm{>W8pn#WS|dYOtE6QD&x%|4Nz za)FUw55`%|lwXg=Ya_pk88W(3EgLp|XALjXGp_prA1!7uWYxzQUt}@g;^{AViY$IW zAFk3@^YrN=KJk0z6Ta2ZBQ>LP+k-PMM6NWcQ;zJ(884U&&bR_omu}9u@_iL*%NbN+ zg<5i8HvWrnVTAEUIb5I$LN}r&lY~jhLDHZ7eSH5H+-~;BZqpHE*USoLl<$;Yt|JYy zG5n|HYYar8%3scKyAI*VV2x7-Wa4oL#wieg5A;_h3d`AfhU9dLv^(D`g;b95d`Qq= zbU0c889v|)1Gq}ufMZo+F9me{Xks|R0M?vh0=}g&RD8$=A27%O{^pAT3I0EPG${5;&QfE#?kzYJg>A8@q-&h-It0=ARS8zGlq$z+_6Z|aZx z`to@uL^)kGnRPUX@|)9X!mtTqaxF;AbRmpt;Iif1BRd^_fH?9rMAb zqvSXYRSw|e*maAjfi42C9p}{*YWk-jeL>2oE=HYL_VC_^`5JjlfxZ^CK!%RzbXGyg z0dRGeJAPVLAlitX3wh(GWd@=z>0L%3`ZVtFb}Wvu!rjaF8jezAIZBao6iHho@`Q~E zQ%4krj@Xh*XYU+`eEAYP72bl#b>uj-Vb*DMm;EkZLpfZ9nvr^}RPG*6&AJoRiw5Pu zT-nX!?JnN}9dRI0+_g+=;w3CR;}FkM@D_ZbXDq>w+(InybE?Ht>4TiiT!8YBe?d;g zSm=-4l^h2sdLuC%ySaoE@t2(_dLz;vVH~?FIW9Qf?K1c0TVt(8(HnSQg;k)UcY0v< zFbvOM*PT6aADL?>A}wBxYm0zrB76 zIb_OqNeN0!QxH#ukip#chI>C$PZ`X8gBTeR zOzp`f_miXfm}xRgEj>V#M*rYc)xP=<(m`d%QnoUC0PGT+q z>GOPQGaGl}slnU3>Am_V>HQ(Yc@9sY_v)XZ_a{+`?de@+?4)-jwi9|sq}$PZwbJ|F z&m$!$y~{M7^bY)v>0NnVFRBki<#-F%V7u+T6Uo0@KkNPfOaB^n^ zA`~Q}M>W-=E7VF?K-cg(PS>6=5v|mlALM@o6X2{vQmezku4Ad%vI6 zDwUwDHQ1Mj;W63{BEYeS7$wCyAwo-xYeHCv$1Cv`7UJSIaVM+u|J&{|Nd)bH?x(9F zul%vQ>-A9Ls3&*HA8HNr8;mye5=CZ`3^kQM+SL3+?>k%8q|Wq58#C(=MGt2kzM@AB zTcN>)=0@+SFM|-q(PeBQ=}vVz)R!SW>1fivQvA6NUdz_m|N=p`&|$*+Dw0Cw1>HgM9+53T5~IE?uBin&x>Grzj~8MLQ|0$pD#WsB~C+s^KK}qAiSmz@>f&NA$Q; zGV|jDRze>EgO1YU!tT=i?DeIip?(nQAkR%%C-jszK4|yj)MG!+t_`A-<@eAXK(&A| zUwW%v5##(K4;ecLXHIy zndB(5=OS$u6^n8@my2YZQ`y<~n%#74Ydw&gDWtP*MXu06RfWUeYE?LKPGe}b_6jFZ+}JXA_zQ>H-Oa90!Z_= zT_#a{1iudWAk7$ckG5kvbcl&@>0pKk8*(?)7Tmjem zfJY1A4{5ZJ?+?=Q9AY6aD&#>6dD}pq8YxB2@a|DWL=YgsX94IoT9NrZ z{e>s^Q_CD+CiT!gi*v@|Ti}7{ph@%>PDN}X41Lnj-8j>Q{&h(Ew{WPR9<94>5N3{} zh~08Ljt#07o96 zwNFlpf z$V3y%b?7ddm##}BFJ7ykmwiku%Pr(xg}h=RTMy8@T!Vh5u`E)^-!0?~Ld-wo-!Ad| zCl2rq&VS-syjY{b#R0Zc54;+6m!)yi! zNBlzPmU%Z8poE8lv4= z+-R0!43IB59${Vu%f@*~08LiiRRbOd3H7=WNa$-Obb+6c!G>!P&}hVl5U35~GE#+J9U~~xWz%Z9 z1=*VJ=O*1EZ+FDc*!4I#WW^t2xVG+hON{nxeT+OTX?LiMTo`&-2@)#4`LVX-+G8EF^Lb3s&IJ$KiW64kQI;Th^pL{4? zI?3C|08aSCPv%`kydnrjx^$g{G7Lv{yo1J@kpY!K!OhJ1yLusa8;uSfp@#Rd)y@rQ#fLM`~U zi+~pk)q%Y=qD7l{8bJ&e3+O#Uva!%6km6=Ifr^FhYY5f)(%yV>VNhYW05cBK-g&U= zV;c!k3XOs&!L5}j>p&ckF~F+#g!^n}Dh-(;Q5Jh&t~L@L$_@!{UOK-kLj08&2r6|T z@FPYrhJqbN{JeDIKs7};MqK30GZ9y%GU93TM5+t&<8t<#@}5!S#m=I>&_vy0q7Hf! z{ixd+gcwU0V@X1c2+PDT1Is9NMt}=S1zdcWRzSV!9av>Gf>}ud(U;p$@GdLF1#Kwe zGNHP~pQ2f%4eRb;VrSzccOWcwcRIGIjZ;KO3J)MEevLsArC6#j}}sAAloctwn8qqkiP)J4*X}+Z5;1Hg*X;+ zy@};x3z?vhgDvE26HCPOPsiI^A$=`mtcj(`LbhPT5K`XA6IVEhd4o(WR~Sa%c&{tu zMGN^HQtl4yC(FM_RPeJ8-6y*86fQ|q$cvVUl9T>q$A5|5eCCmW(WC2mm@T;eQm8Hx z4w9o;@XdUX4rwZWXSEO!;H#GQ>ES#S z2~t_D@6Q0kT7D*em`a5l>uGHm_9-L`Zqw}G21N~A)K1H#hOv-;#$j-KtUMVSdoxI3 zOhez|E5i@WAcc(YIUn8OowD?aeS%4qf#@dGPiqDKkVot*>U0i?c&hqTs?Nzo9|%;v zCl4S^eYXdY{-8_=!MbC{sEsdlPFxHol+;yF!l?V=1DH0a2BJ&^D)btZ7n^27wHVUd zFAdz(7-{T-t%7vZtVPnY=!~s*QCg&aorkq&Z!AtLK!Lwv^fDzsLQt@EWnpFv%vV!I*Rt0 zW$$9wNo=P*q_JHf#U@{6Yqdf`a3bX__XggIWFx1)$mlMozZ63#d;v~t6HkB1Ml9Ht z?raTZZbPxI%~bvPr1;=q4$RpQO>t~+bxs%3hQE#a*1kDz9d@wI*wFKw815lNk1a+w zNsOHqvJ%Ivg*B+4(f9?TyGtPOsfTxG#sMv$A4IbVNoRM62jw<24xt6O#R^Nl!{wDC zJis=BukkM}FaGNT;3$JuQ z<|jOM%cv@OQ>hCb>D33c8S^;{PjEl&}QDaWLe54ckq{WGy*nt5F&-Zg_nSQ^-TQcuqKy_OH z-^8Y*X)+)*p$7=WsplNtlftG+W|BFlWJJ`o-~uBV9%^fdr3k54U#P(DPzR&osc_)+ zokN@2NZ0Vd9E^ua&r7C{MWzi4iY`F4f=cRe0lS7|W!N>trO)h-rLaU_&!}^6_3p~9 zaW9xfmw{8bLRN5CfZKR2KTm!YzMLCz7nuDWGKlOKqY_aqN)BMOC9aGY<24(zUl9JU zW^&`jm?tp%RfM_GTk&0_ZkO@Vrx{(eS%C3*j7?IhWAH5ylYz|w8yX*lIu_}EE5PVD z1mXB9n4};q1$l9!V-X}Vj%8qU52?X;kU)ts$lzNJKrl>8IIja+T0ju{s`tAhssp1X z8eU?9Mx#DODL8}Z!bhiv;q$P62ZfQs5B7{}jFj~z*F2fRr zo%x{wWUz)N>q_h>g&4%ayvHhpe;Padfquru#LU@y64pA9A?|%!Wr(1+dVoqr*R>Lo zpXAjj;yOX#`EdX!@T7g}$8n`1&bD#H4CGEfjyy#i>BmuQ0AnQ%L^?_VgMGk>25^T> zq`xA*g5PV+`3M6^YV-5)aeD=Vv5)~KFXP(%gw`nJISXk8Utozskm7EM$s-EV7W{3Q4n&V+`aFBl!lsZKp_~KYGKjm!Sr7hY{3+ z-g<>Bv5;^2Yl&JcZz1apk;-vEaxWKRnT0m3%wV_UkPLfUz*i}c-tOe_ajs@sH>b9}SfLb@=KWh^JR`3co4 z-WdC>Gi}f%=1Tj9onkbFTT?2-RG076DM#ekns(OLQX3#&wSxQ_fpz^*xpz;=Rvh`*l02Ocn)7^t781qfkF1NBW!X zLJLDdad*ty3U@;Ka=?< zgHE)kLMEAx!8_>%*1mqTDi;<*g>7N~6*lPcg$Oz|jeU}~Hi!0Ik%RLna&aI9;zp`S zvTbkT*|co|-brhwGOFpps;;vBmEZRb%y}6}At!rPexF=A2+p-bN6-kZAs3QRQQJN_ z&-CdL&|ljhkuR!a?x4F1xnIGfa_NDvv3)!8X`j+S9Np=*p$rNSpI0y z(?d$mkn$JIRmr`aViJI&(uK%EM;wzIOAnW(-9weVy5mAHnEAZwL_&3Ga9ai02o|@z z-^;|Ezt9^dx&*vI1Qce5NoG~VK~U(3O>O%!sGN6$#2gis!(y|eyoTynl_N^RP}Qc= zK{?o+JcyNA4B|NAowf{8fw><{`asx##P1n3T~!CFuulR8UvTm_88@hqZDu_=i0;yF6N8+TUD?v#RN$~+xlW1Woom)6nhSLO2Q5IGr>{93_F)P8;;Y``2e^fEL39^{Q z%5sd-;Y@#C(qxQVF-dM5DZ?|xtx@#lvV}ExH_fm0~Bl)utXnY4j;|sM0J3bP| z9Dg#^ye*veFeA9%Y*s10K~|Z`ZM^!`x{)q7e@?ZYVDbgKkEFKYX59y_q}8Yx^?oE) z3^}zTAn@!;HuOaPIhcGSNaA;B2L1ciTl;|LzkMjUB}m)x{)xTlZ5ar9+6LXjpn>+2 zIqSa#7K`SVH-cN&;~j53T6yY2@mF4kwv3Urg2v^JO*BVN6SF*;!`mM^$zx=$84 zHs7Mp1n76ok+?(=+PSpyhZOAh+;h;^VxVpYr?Po)D!q`YUxw7dgNOKs^azA6|{sUjJcJk$<%BPVN&fGvA-DB{1a_Cqq$L2U}g_Cko zUGX8UD?s&p-Vfe7DdLqMYycZ4382vj{LtA)MEU0+!^jseDd1rr@E-%%;wSMJ1>E8T z78$^ihnN^{RKPSJFwX$y`gu4{0l7Y4CIQ|5w%Z>htKB%75ljgB=l8f4E&69s8p5j@ z#wd`>gO7q-nhxmdTEzYn6ANOa)PNe6%%7Wt&WCP;Qd=xug})7=mafAclwh^EP_Gt? z&&M?ue;j|I0ujZBzumPCVfcsjmry!Xlj+a_RN`4|gmdG{Aa2?N;=>!w{VfvLv6yJdiQ((w_Lm!T}xHNnP!?r{oo z-1d;$l85u=SgX$uO36v*|9rP2-)#@O9X-agx}CU8u`Xrk;}I@p-~fHp5@(&q?XvY= zf9J9~$ZqD4j^S|q1}>amV02!!SmCNAXB|gYn}w(OX3&CC3RM$?jG!K~HbY%W#yM#a z;^HQZAD#js!-TXyoM#4ZnIXaLdC53u*M)b=(%S|hAIK+F8P6R;{!_>F$s1vz36#G+RLh{<(FnC@ zOXN|Ojj%-~(lu3^3-x>yJBY1kI0lu~+dG@&1MWwf%AOkM7BXj4yhVbewYY>wEe9J9 zL=S|NDz13<*^?SOl#tFx!TGS`hFeQg+$aSIm<$J^Z-9itIDepuJ0*6~c)8Z!O}@KC zH|MA5=KN&t2gaEoPC8QX79S4Hlq46wzFkZ%P*|ACoS25VO<~pHoEu<0?BO&(-`e9% zIPz(_h(wZIW-JN|z^-uDvM^>0Wb<`ePpy|@Siuw{$L%ts1@`akB>&ySx6r5F|CI(8 zpzRk34Lb4EJ7I)qMtV4g17V`qa1qyq1H=Ssyx@;Yji)FzF7&Q|0ZtzF^;?2W39#^% z0}2s zE$Bgdf!RwyV>yclqcKA6w^lyou2u~B(B^7PH+T3kor+QjZQqQB79x&JM?awVgfg6! z(20`=#{GnUE_+zdFKv%HR7RcO9;pX*w@0IC59-+y+XI#!Yi`x{xL0aDztMZ|iC*n- z_rM7SUIYev2SszG_Tp5oD4r^3Xwki!?$mG4;l^B(r8* z=Lgj#Hp*bgN9_301mod(wsb;GLQ~A#zA0wjeGc7`Spx2?=3zs8UxYpkie zGMoKZNSLph6Dkv#WM!UnpkJBI36ca(?ore77@DH3efk{VN5-@#-3U!n1ZT6GvzD-aM3i4z*p%-hr(b z%S(@u{RlqK1B3T@-k`42)9GOyy=7nzb_cI3>2&(FlFD-jWkJipLS#J5A8r3L?bD8? zXxH`umJQR<-7x;Jp^OKE);KKYrhD(lw0(Bntw$?>#o#y|#AXN@(SnbZwJVF^D-=fu zKcvA|9i|NeU@^!D+u%(|$~92`|KE(Ss@|M)IPbiHv-J&#d zwl<3AZF~fV9#vhXyW_a7KqM0~3i@>007{Cp0|IIfXKx8aTJR=;s30byxj7iO_{4)O zfp{ufl&<*7^IsujeB~LsqL_$6kgjU>6Zr+*$TP$MlusWmeo%`EQV}sQ`w!?k-TeC( zjL)CR`1~VSOfD26Xtzj9pZb<$%mV)Jnk@-6B4Y|BPpO66n`FipjG-bt!3JPQO}2kj zn=D%v>l4MK!z4!2tq~pS_zI|uDW&sOnqU1$fUnXLx-~Mx>L0YPc5CSt=!wAim5&*N zbWX&mK~nh`k5~W1czl)RfmSrS%IASQ8jr*7kB;`FeD_CYfk5W(CbDnyM0MwCM=(8m_8>9xkBO_6{5vfL+x9eg3&u$xc+1%(HXwBz+oy3o(!*Od@#cEqo*+A+WW zjpkCn*eSnu+`rT!j}4(=oPzl>pv|utZ!6JdDt)%P5XO6c|E&J${#h|gX@FBl@Ud#| zR#>t)*-HZvs6r9aoWM3Q7PDto`aKirv1eA=HipfZ>CZ@&uc{L|Epo{AJ%6Zn+G@Xt zR{L!w77Kx@Q8E@IR_VB{V6hOO#m0=IEu!@Mc%>hMfwCThbm!ybVR!LKX1xohs3PNF z*u32IZv#A81RaK(PTm~>G=h+-G^Vn}`5?p#NTP`Sb#5N^Ac#`Wif3pYoKX;eKWO*Q zSAd=lo0PG+I^uz6bqt@`+Y5E0w{3&3B@_kCbi{#e<9>0{{SwBhvf_RsZzI|S`-z~^ z>aELr@6TvzRBWL)hT2@%V?0Y`9s^E+?-mF^L(ZM&L(&!U-7`L9lz}wd?L$8Mjl}Yn zg`^osicRQMg*;^;AAPC`)x!adCjGENYAj@lfpp&IL#h;Vg@xR2AlZNQAr~p+Bn!FG zK&ma|ScQzVkaG-V^8J1+`zj>GLXI+!*|k2T14<86)ca5S^|Ggd-28VR@}@#wvXJ&x zRfX>N4?RDZAi(SF_oY1FPzSqyKYMc}&PEu%7q!_m@1RnXTKBYbK@ zsJspk@dx{0rGOu-#-%|_(2x@3&Ie^G8heoDXTBbp=Bra-iV7wJll{p>;t%n_naZ1A zg6!lc=pm&J{2&!k>3fBTMeTMB3LV_kfM*U6DXJX40;dLEfx{xEEyUt?9r+c;-B2R} znsm?*<};PrVYp*IG7^AU-*6^`)eD*;BQJ$AqHuPb#m6EumQ1B$hRzQ?f*juv9%$(qUx?Tb=pb*(bWG-@tWIZ4^0v zeMbtodf&h;VU!e=g|^7RFAG1>-0NaDg{dduIw4Y#(Kir14$v3EC!|WvB+L;9gPb6H zMMz(!=mq4xs>x3-kxooZzo~d*>SQQ_}>7gN(A* z@c<0?A;o!lr+}zV5MkPPF%emwP8|p0E_+zS6cL`nG8;V`$k$5gj1|(2ac#oBq^Q8{^1m^4qkyHG^82W^bI~Hkr(kG-& znTzazKJP47`pgoU7Gj}y$vvb`hy;mZtWaRFrBB2!^jVxhpS^|LsT6W$0YT^!`67Lm z?N0i9hxGXa>2o7%&X->KiKWlt9`sqrSift{LV)l!o1-f~D&^!&IB@z~jj{#x)WJe31?02;BBD2aGcRLSOM0f2>an^kvcDI$D1ZIT( zksuFVg2q>6j(lO|!Ap!hsI?mL(pgguc^PJr*_|_9G<7;3C7z#1fx5ha3D*t?aPYNC zfX~UgWbZni?^hh+W5vzyuG0nns|EUMfvHoj7a#|$(=<52?(Q?koMie;lx9RC5If_~ zhw@qdqZxS^Ro`8HEjoj2(INag5gbWJDOf&-{@Kl6;5X3%zv^^_4D&SPS!%O}DF#9N zfhrdxoa#5Q@;yfN6{vq%D|*i1nk^Ba0BSf7o8g zUg_Npvk7e|f1G0%^yi2eZ2iRJ9O)@$&w4||Y)S&X#q2F2x8jKE)mWN=(DCe}l$!9| z3elVb+=C+SAmDKY-01@v4PdYja1~JM10FVjGeo9B48K>v89v|^0K|UQ2ZR-Hgb$cz z0Pp*NOa%<`0l5Z{0e7&H>wXGof5epHR|asZhH}U;z`uOJ z`q^0l*lx`863)z;qvQKV#Uzelm}?WuCba@9x9pNwR32E5MVsd{(71X!B1&H8wZ4XIh+j|$39xvXifCnP0mLUu zE+xJtVI?dHYw!a*3oQ@}u~?`Qq+Sgvt0t)u>;7PC4WawYHqr+Gdt9WcUmv*(rKwzO z71-$1f0&BHAnTmuuQ?Qh?e&-QrpS8o;yCjq`D?grWH@@!)cqR`U4l)6S5F@SW4ls& z1dDnb3sut4NQJ}~uU5XY4CNr>2{H}ciXMasD(#!BSIY`uINrgC3gf@_$Jl_`UG)xj z8BI*eNJ=Ve4{mAbgVk+`1S_@t7Hlulh0`sm|3|g%16itfwf04|I<9z4V^2C7-WIug z5|!J#Ck;Sjk!v~LY-meB5SKqpB4of{-c=gX6s1V0Ot|z3&Kd~d5{U{2~~wm-#VfaSMSay(3HDD>vK^igEp+;N?IfK_LPo_4TI=?W=#)kqtWV9vc;qZDW?aLYD$oP!52PvoC0&!x@YhzY)4Vkc&HQmIQ zV6rgN{1EA3bv$`RuZ<*+G@Pww9$p{jrTeFuU-1)-pEYg%`k5xNFGhEvQtne(`QZ)HSFGXA$J+ zB<~77E@Fdu7vpx7>_zd;=B?!)#=pcm5JoeAAdEMb8o~$-SN{@|K%L&2?>nuJgHIsB zZ^f@4dht-}ap4otPps?<^zyC7*FhKVlXZ$!h8|nCr}#K{V<nMDjphYveu{=X}l7E5`y#b3p>E8M)w2ME= zlEljH$2feqbn(#r>_14jt6&^Fdf8Xx1O=O|wQTkvsZ-j)7ap2UZM1 z>$cbAYIYa?x-yumolmXW6Yn-m#R6R-CW4VfnrX zC?od4Ri>VX-iVQ*89xsM(*d&q&_WYv1J#6s(BYET9=@5s8M(r#XPtTRgZE2PI`P*F z?D&9_#U29jI8E7-N!gC4a_b< ze#2d_wDSC{2--NQtUt`S167v*hZYkx4O*)Ej8t<(oz#|TFb)VIu@Zg>WQF@p?B5L` zPo064ZAR06W17Db?OKDhx1vyfK-VO~DA zkXsc}W+4wVmhOMnA4-BhykUzClMAJ*Ka_^a;BI?-192u)$F?_g4mkpxt%#PZXM*Az zg_vVy%fOSWfTHufiWaP7gJMV+cxuP5qalQsv{Jos1iTkf@{pq{;KStpi6}QGJ=3<;#*bu75{F@rcc_LzkYQgJ3tyocFXPR%eSU=7j$10v? zghBop2ev%zXcQ4~W|2@4Dq|rG@^Tg#%B(iF^~lwVOEp*Xm>8%q=-pinLV@%#NgjnL zHFkfL16>FSGSo55lS?ijGIzNUStg3;4{RN%UN&ffw_z_Ki-!A@EDF5uAlb4(AB4oH zkQWs4fQ7teAYWO?JcZ1%kf#7KO}^duRt|%CjBnMl#G1N4HZ`k0n!AK`zH`n2X#K%o zVQeGAht~skaNFnJ~nlDK{#190@FehFRH0o|}(4sg^qFKUH&;EKLmh1!)GV zzD4^Q{~4d+)>{h83DHlIz_-BiMa|j6W!^ zpq4C7YZJ9(ki-iARGpY5qX7a{ZvlZ0D<$KHW8N_xJ;VYrZ;W2VL|0?TdB9 zC0eXb7DV#GVzqY{>mwFxG)h8|Bl@%t^VV0HpqnJf7V#h_wvR2Im=&OSuqk8?w=de5 zA3M8VV3nX$y!ctroh?CxAc#`a7+8enNy*yjwzW6Y$=kkUg@z3d5cQ(pV4X%+qXhWJNRc-89vV*1P!c@<+oh_VnPE$BI_vUM9x3e&H#W!6`dlznd z0)&6T?TfWTI-GS8GR)q%2iha{dlc?vl0$0*e-KjLPcqFsP(=KWg;!@5a4L(s>~1G9 zNc^dyB$A-}0~9)N{;?cP2m4~Ug%yho*nv750y4wSZA*Qb4Tye<-f0(Ba9<>%1aj;I za%Gl0Im^pCvQN_ZDL8_JBCN=vgPrkMiis}9^Y{v!Tyh->g(#)(CV!Zl{DsrC9K}wC zTM2A4!k&y0Af;nwjf5+r_*gvVB(EADAB*w_qLuj2jb};V>hW*(j)VhY8sEl$hQry@5(m^y7`C83^>1pJPn7GiSkltZ?WKN`Co{ zpxYq=pdMvKuZTo|(c5rM5!;Ls6uH=rjYAIOkR$UyR379o4oSV`u!?N-B1|8iibEA&(izOqmA~a)m<9vXE*6dBetXl0wE<$TS1_lT0@m z%SeT!TgdSS@{)z5DCD!bes+f&$jLNrlkC3FHJtd6S1n{4#8V1dF;zk%io0AZz#a^D$6828zI`TXhd9IJ;{MC2cXhjwwyRDqjWd?O)pE$dA3hm zGR_&o-dgm_Zb3N+wqHPzBNu$7*}DFE19QGQ;KV?*q8(={K|0<>VHp;n5S=R08n}O) z%k_|i$)HOxtT##WGtSoWuM)k6ugmduC57b@WVjmN*7%YK_N<3Q`oN1uEY8ov%UZ}6 z^OG_tUreJI@-$@+sG48IZy8Js_)P{JG2y%XEIdTDSy0f5Mt%Qny>aAo-9v4m^ga%?{`$Sln>BH4;Ka0Z z@IvH%mUSqcGbQJIfBN}nc=ja82fYhnbOgTY{89OJ(7S%Aa@xDT_8}7#aXLgG@q;Z9=arN!sqi8fZ@&&0*%Y#N6Tj8QNM;E**9^W|y& ze3^>kA`V$aIy;A2_~ioaW^aNw_#;O#apeg<+ZG@T-rgt_5EyiN3gqx=hS#EF{%T)V z?BpzxeUbO{p)e(PxA{X}ExufUUmb?LCX9B-*L;jw3#cgK9>|8!i!#}cRbY6pSOs?^ zsEC4tlf{Gu%PLr0t3pDOO+-_PUrh*;g}s%X!VIq=RJ9uaFhSy_Ejdv1Q3dj{{y?wgkJ~D_O;Z#D^X(wRpk=X#sFj7lD1GiA$K_B5xh0 zOXRe8e4CRMVVd>dC%f@dR!Z`#ZnPB53#XNV=v^pC9uD)VZ$Zt(D;Z&OBmDbOSPIOh zqSB4izlVJFG(YE85IvDXybdoEUWYe<*>4h_KQ^4a)(w>k@MDDF@jgWhwiKVc?HX6ATj_Z2o2gnm^6X224aY^W2b9%;x}h3s!3rvk!p z;BpHYq>%6D__2&OkPe&B=Y1rhw=JZ<;QZdLQb}j3IiDr{-}jMP9d2Va;||aw~+l5l4>DG6Vm-}JN{h0 z6;%NJt85=j{mX+se=fnoo9bUz!g>s=Z6_bv( zWK2JN4j2T>DggH@!tx<}sWy^C2dM{um^i_OLr4aK@dQO1@xkvQc_)Ug^{(2dNB=DV z4S6?1gNr`Od-?40z4#oLcTZrACEr~}$}1EGP=^E>LhOF*^IRK)+9q)-R1F*ADk$&? z1dp!8a5BFk^tc&L79a>}e!eUZWP%GH8ckx4%!HN9q49LN4b>tvLqiuJl$sOFQ$lr^ zr--H`(wS1WH#}$%la!Q^oE!TmcQ)WM8W*z0LX?N`N_qA@Nyn&0sedYp&7xitDzil^ zGl-s!%EV~KOOakma6zGG9F7`o3cHP7&NWg~1hZEbdg;HCs$zgQ7gfu>!hZCLED#yz zC*|%8j0n;-KQE zGlzrNKyc-O!GU+>ZF}WHKBjlE;%+Mfyu?|8If2k>3|d8;jb&gJZ8fx>#xE!cKpGwq zdwu_fJ_+m3OKYGKi!Uxfm=m7>a{}2b3i~5ir{-&0>`foL7;92y)cUP~iVvluMKZKS+L0MF1!{rSmW~TZnSp2wZP(;tA@A<6 zwO$SO1|5|YWyMnYr(P;;)*ZIidl#1UiEV~%>ur8kGFISs z;pRb-FFt$wNxed0;ZDYez*hrvet_(Wm7!rycBn8gd-QI28Xv7B`OMk2D;~1f1)@#7 ziO)((s_YBpZh9bk9|PPFwbwKDLQqK{x{?Fx_)uElmQ{$cZCAOUT>zjP${in?4xcKx zkJP1%$C)b8ufX1UH0M5UC^$Y;9Ed)F&*ddlzW-tbqZ#)||MgpZ4aPOFt8P5j!4%S; zx3|p0tDJ?yl(vIly)_uiz3-oqt`fZz3E8(OM7#!l$9vbjJvi}gG2bF-?PkOy)ZH@Y9*XUhrZf#^ttWJkY|xBJRl zwq~{rJ%Q-Q$XvD_wi^8p?){wK*@zF2y(SiIxXIpKi2&`#@g|n86Ur;fsi!9blxX5j zEZ}?U+}`?gNsdfq(qc4Fe&N`0H@U2ooQLyn!u zVlW$4*h+nxuTS^rQxTrJ0@2I#saBup^Lc#ejX-pO1Xr}+>kVk>@uAUy=##i{A{FBh zR%Hm|h)6{f{P+z;@gfzOxcd~;jstViY8lCaDDBnol%-F1AdR*m_yQ4RXk5*>{R$sD zvlh27cS*Gfcu5018}J8-elrMoioB{oGgo4V$!LayJokxIct~3W=vftL6Q=DjwPAPz zVr|iU;0->TO;u53aXLOmVi%yGk;Mi2a5zgH-~U)xQ02KRcQC@FqYi6!$Y8pbM>=7) z|MeDOpcI=Z=Z?Uc0bD~M!NZ0uQQxs*yvlPy@2ahs48?~OR;Yv;^!@s{97sX+ZNK_K&GAILslx}X$$!nLlf)e zwR|5kUm<_8kfjE4oP|Uca;1gT8pyk+`LSHAkdrN>!a(-64RD-7GA-m>1G(jNKbHLz zl4>DG8_3rfj+7X_gCPy_|H1Wsy$m*x0tT@$Y$8pponi;NIwHP z!$MXlnd$G;VF zkAkwb9-Ly)zUt!9uPyki#q_OCft($jOBC{MSq0F?~cMlpW(BAvkX8 z0xliP`f5g=%afYs+yPC;qbob%Gzk7w>#v|#S2`eP%L&6Wu(bM&EUkVv=AGCS%*CfP zV`jlKc3W_thF?0Ax{x!{lZ+Ylwpf0LSmX9s{*1x5QVce+Sp9?`1iNXw_z9co7x7z$ z=`Ky0@*t~VLNb-+i4!0CqSKs5pMS}O5m;z_!~I(KU%;*e&VR*7$Y@zP`A6UJAzP<-7 zN9IB&p0PE*J+7BbyH=Ap!Fr2_A8g$%WjFd!VVj=bH6?52=!X7~vmLWup>tA9K` zqM1fQ@F$B|2D(W6Po|4R(;*?NKJZZJt-Pv6=70YmL72X7CI<`FJvK_|rv`NC9YD-~-O2_9UZv@P(CbxGpG5D(H3+YTX)dLG8XlP7 z1<*jSkLL5&gkK9fMmxMELh;v#KH8L2$v)bQ+jn)nCVvz9=w_%vVJi?^i=~ncy5DUv zCwfjYdP#4UQ~a4`yz1W70MBI)?9U*h8%HnH<$BsHCFr6;b=``n<;Q5}*@KM`f2I(1 z)+<5=nFyi(;=>N|!XCfVw7C8Q{Pl{ODm-yN0YU4m50g9*I6U*By{;V(0w z!F?-)9x65#YjUk5)oxf+Ba&jz!k)W-a`^^&JiGoy-CR)Y+_0(8RB{I^xqHvwX|P+h zd;ZR0wy`u7gacUY`K#%@-*3xO+3v^h?RGzC_I90dm$xp9pEhIjG#7a4KS<4U;RzO& z*(3td5$3tK4q-csuiUvqq?+B8IbElhE9=^|>=o*Uf~@{H)*D}cfXqt{6$4#iVRA$g zvd3d&F-wG5FV)N-%q(C^_zhHII7e17j$(oaQvghjVhS5VQx#LJ7@VRc@st3wKr!VF z(JGL-z(nOG$S4Yuq~Hf@a0`5s;KkE(L-YZJ=_m7f$4o|RabrGNfLnahuAh)iH$<1= zuYS_VJNcvzH|CQj+~SjTQb|lyI(qhd;i(}yfTnrlCCcqgf_Et!g(I~Pjl z%HPVa8Wsz5BKzxwR5+q-M=AyQ){sgK)4`VomQt4E(fj;J=&LqzADzG6+qDv`rvv;Z zDXCJauABNL5^fJlp#D&YCH-t9C+wj*2&iKKVf#?s&ao3Wr`dQy4Wngsm z^mv93*L@lvaC-K7_%$|>rY2+MTXw->M|<>2lpGSmP?*2$fFp0iDrXH|cfca8=WCYS zd(XUHzujy0A@3!;hQ^uW3P;Va@03xK<4*5Uv)oK*9PikVWz-xwT?aGAJLhjY-c2*J z7026GAt@Gelz|*!rf81W@sY&x{^fowdm6}XW{L)XsS0_?LfUIJq0MIg<#%|Zr2`U#xE75xo^n%)f&U>tEp`78S5#GHBwOxm7nM!HQ&MRe5-996impi zMziuc&GLiYS;mk9D-3M+s)H6@M7s>{n>B zgvI$e_YkmM#hLmlNytH1a}c|gA7G1K36zch;Jr<}0c(6XKX@LCoA_nGmA)0_K((XjQ?{_VXK;bz$J{TLJ5ZZkL#eef`cMxNj zQcDGG4C`Z1>#GIBh}KsS4N`z#5q`eeiQ{hI_z|B3!6qfh2~NQxRz7y0_J_eg&W*>K zEr>RlA5UopwbUk%*vGIPVZX#Gzu-#;bA}VDb++$?j_wl42m07P4F+PguzN_h^Y$TgX2Ya;t^B zWFUvd{DdkMa+!tPYanwhWQsygu#j>CdBZ}EQOK_>WU_%A_y<3sp$bW|kRuG_B@6jx zgB1F`seZi#3}j!|k7b=gp0|+Af7U`5Tgbl@a<_%7FpyU)#8pVCg*;>+eKDMA0~9Od zGz*Cs$ZZx9Qpn*JQe+_STF5~P+08;G8pxq>KcTMoq|n|aexdg>KSPPk8e)>psQ+F2(dkZiN%8za; z-IaTe%2GHDmd#OQCK=$>wccUB)wyLdma4$5WbX{7p)iNfcbD^8-Zr#*K86f*C%O~o zZSKnY)_!9e7p_Kmx4vKhX-Yih_WG8-qZ;F6A;L1&y)q77UBb*Hmr*exsd7-}ABSdBl zWg1S7@&dCb0^zH^kYIjOo=Yo#0LJBIx0W8vJq9^o&pZ^m5jXkid9d}%3P&2Ccf!QH z6#@hN0er+bGV?~YgzLAZ=4XF`Q?OBQ&ZtJG{<~BM&d1k%8pfH=I4K6ln#_3-@ABg} zj=-T;DZ7TNqjCorkqS*Wen)elYr0(0(S3~)2R-Cz@)S)J5Q%sAAEpEAlC$pWtw;A?L+QMusCFw}fLSbhN?Xa*a0yud!h=T)!!m1(_5WlrokD!A;&+ zl!T@(VDXtaX)!a1(84Ml`!~qMmTv**nQIrh=9(W$8Sme)LFYRK@K zn>nWixdp-4gx9e1WYJi9T;(k@X0*}09rzl^%zFgPUiWP75||B( zMjl~c^Pa>e|(`|cx+h3o<%5LSas6>{F9tgd7P{F)oQNOyv2Q9U?a;(hne}>MbWYQ zlpd<`F3!@de;;fixBsw{l5_i~oiskTe`a7dmc<|oF9~Ni&3M-o?5q|g!1Y+EaNH9x zI1Q+TpDAZNH0^=ta0t{n3*prc?|kIii$VV~Ted;>@ng(`3y2IvmlF>?H2FOU3@X+w ztR>-lnR(fDrMcmF!LV>cJpuXdTM&WstMkV1>I9B|HP40NB0Pb^?_OT^9vTAEN$6>D z3Rsxi#Ue{G5J%Zcon*9N^lFz8jHZcph`b&XTox?L8HF0+Fy)3ei52-S$XukN1+%^N zG8uw@#qnsoD5ZMLCMw0GEJ|A?JXPZf1v-IG zn&gXTI+Hl5FoVhQ#Pl9ahV~jvW}ebLkUT%T+s<5N6N%Q?`oZUbPEc^>7PMzIa_$zQ zgL8*>V3lJIZ}-n|H>)&}2peh{HGjSJP0lSU#}#>NUKfG!xpP!tEb?0asMC};jW{0k z9#hC%0||P|0pSwN5+hRvy=sMAZ6W_Kkl_|GO(CaPNTq??Xyn_Vcf3MIS;!OvX*IHT z&>OChGz&S#K+dv|ZLdj*J}T4_1-+pL@|2kx;QVieEU^&!B4UX$45Y|=Rw4Hr2=+!8 z$Q7nuio81%a-)U(%Rmk@Q>G%XL?P!`h-)AZo9SDTm#>hcETq^#QY_>!h3sh|Ap^PE zHe)}9w4d!a<3R?pChE8Jrgc&;t1YDKRutNs_;_d6D(@30Dp&!(vG8XU{#OfcA{>xg ztNa*mSI7+(@=t+qAuRET@c8r*>!J5s0LC0R^yv|`WYD7SiHgi;rDZoprJiiww^%v%ZnZ^fs9xPMTp3VKgtMI1Q~G?WW?MN9q1KLgyS!cs00lA zjb7#|1@FV|D(`S)3t`WN+~v?m{Fm{iPghbGMf%+?Tatze2SoauK9gc8Rq*}iPQKqs zUI!`te#mp-SsfYhe=`FMY<18_l=u6}2^_YhZ3xd&T<1kT=;Q3Rgh8;9FU0Sh)OR26 zn>1zx4Ce>_2X~hSep5eV=vRUB>v?z0K!=MB{8tIF65oxkbCT;Zw%mV2U3KWHuLJ2v zK8~;Q+$(+;c($>su5={Np52Fk21alI?EyK9lhDuG_R3itL?msy=PXX=br;>s0AUvs ztq(xmUjAd9U5wMjvn#*uAIrbH4Kt^*yG@lhpvvD~H1d5^`9~F|$|D@`AeK82%i&hK z1In?6y!cB=0AaT?Rt+}1%nCUI70)or?9cpxyoBx#B46|=gWJ6+YZ38GaBlqa@Am!# zbA2j#jzZMlsZ7Xi_HyJ3BZeO;@0yoXwu^K5cT?ML!ei1=SN178GrZ{QTWjX_+xE?q zVVqaFwKXrEG6+H|+>g~kW$U@&KRa8ot_l1S2AIbV=dyZvqz5!QgRDZ0f|t4}_o1q`qH!?bUC|FEf;Wtm4Vby1 zV35-DXL^}`SE1r2qobPjgV4${@Ao%qAMrN zp?E|&e?U3m!;R%^Hs!=!+o&BEwb>T6xjS8F)JE_58<^h??{T>zzg^lWd6$1VwXGD7 z(kLf|F=6?cO`*WCXtPeV8Rt1@v-TcM0f{KFDPY6UZt@4D5Lx1SlGC*olax-W_kyv= zF1+Ejd3{XAzrLOY=+3xvdHvM38~lu)>AdXMGRfj+6+wXzF;UAMsAbHHTT#pP;maC@ zn)YQC_b!5=M8ZZbXD1_P_&RU_?pN@BCGOY2og;P=3`LK`*{Ja$lVD&Af6ehB$MXh9 zvkl3?P2k+-z`5%#4F_&o&p%D**9T#|@yZ^iLK?&eW@@Ac^fXz-uE~>GWb#Sz!9S9M z6DGH(bU35FbRwUlhjtDR%%Mj>UnW`O9fGb^^EZ0QFl$03ZHB=!xXVUwI2;pkz;b=S z2d@fXr4Q(g0MKYEhS5!_rnNr@Y7OTo~6E8jhS7>c%)KU+f?NgTCsDk4pylAJ*3Rm_Vqba71%f5ySk>O~Lo40R-lj_RN~v~C{T z5${4V=Qwbfj#np;t;1N%&4DRcsM5{JiiK{~NrIFuybLvs2|xiS#D%3jcN06_;ZHIuz5{C*%+pR143d})-c>M|-hx+4S$7~j`AP&`i^&QDv zxVq&kOsbGhzI-?MKlyGDgnv2}Z(TLj=Br|URit0x!~}c=n?}U9l2cVTchKNi?jZ2a zTrRxz0`3Z60}w(4Sl^+G{tbcIlQDhVLFtgH_lF^jnr`i(&qSSX3{>4M#jM0%vp&^K z!BR`9>yn{nYgTZUP`dxxR6?E`Oout%Joeli_stx)f&F)H?7wS7501fd0AIo0piX-+ z)|dPUe5)JVFxMmNnl;I!_=~~@=7Y_8m0BHQCX6*Y?&tCufb3sJnYev&)Gs|j{^HW^ zd8I>zWFaFgqQVo&aY<}cQ!l?5|7}SyfGE+WGRc~TmnqXOVHM6=MxK$#tif(3K0p=) zE&SA1g#F~7EbO_~tE|+C=K22+K(jYV0izYr>|IEJcLn;|D(`pvi`XvoW7|u?U04N_ z*pC31s}ERzI0MWKoIDe?8Fts>Fm%WLl&cLW@-dEkTKfN9;{C5d7NOvEl7Dn!hl@E} z@_SC~rZgvZ0h()BrntD)%Le=tpE0UbE(xM!s0xl6sbA7Hlz#hmdAvh&9o z%nr2a$=^D$Q8r_6ofErZyX`A~K$>WDBCU`nzT5r;hkD3L-fOgh zh#h@$Jf+i#otOrF`RBMY*BL@M@ROrMgPWhjg>St;?4U;(YOS%;0YnU_)qb$XRjPCMD*N6}N z3`@Y?h~N9Yrn|iyCqqyJkw0o=|zPa9{9&O?qz9?YA?|_%2LL>(>8$yA;>>>_2yu4sQy|IXQNki6(}C= zVEg$k885^<^urdkUPoJ+m&4aQ*>Grh)aQBbiHLP2)m4aBhD8*Y zgkg(2oI!IMrMS@NOG)Dc-o&$L6vwHMUX~hi-)al`W&VvRbKsU3KSa5UF~}sAJ1<@U zmB$BAc^uDjhw(bkZOWrZq*0%v8+P4K|Z+-h$<0}p`}_S7cTYoxra5fjDPWuauc?h=Z+Z0^^lA+gxR8m z-#hVA3@q+??>|6tHq1K9!?cR^p4K&_jjL^uWmzz%NbKOkueA|`(2Bb$KSSrUv51)z8|XaYK+ZGsba{(90d~2rMa;QSQUeHeGfk3ya1Vq|8CC9 z{yH$HABHCg48S{)6EITKC)CMU}4J|#!V_GY3DQVtVozY+TAX4{}QJMokI$cm>l zYVwM*0Xgngv|R%Xfk04(Y%^^W3iYE2ADk{t2%qW+x)ZcroZ%Q4Vi#go^ae_G6pn%R zOH~4iUyH=DLk7U?Z}1fmj4Zbu4PgeXuKQ5R!JJ8X*GQ~5lpw1W#{a%zn51-0_nSBH z#(Q%f8}&H;?fLJ&x9|7(h>e>GA~GjuKrYQd?oc9a>o2fM7p+^wst-8GWJ0U^{8fe? zcrB382FI{-9)a&E0m+U93X5c1t@mFpbmOzIJojB%5dsXY*n#+6mWDs)qbahhF31#nl7wv>H!0G~?;I{X&65CpCT@3Zw^ld-6iwIsK5)vBce}p$kg2|*` zHq4||uivF#l#T>XPXnZ>$Hx=&PYkO}mNUGd?&dabdGbcL_t@XKaY! z+`;Da@(BzMqRfTgpqv*mr|a-l;Um1 z`7V?4Gs#le+CbZFU!;ux*F~~bW(p(aU|~3ztH&l3EH{t|l4a>afy_&)e_j#s5vUzlX}c`c3F(y8E^YT3qC$5u4fwvF zlS~AoLrDWJC;BtQgTBMtcDzHs!`)Kcp@T{54LTR}ZtFauWzm>Y8CyZF?6^V#GbZ4P zoqEveiZLgNs+2wBZ=Wi>$Ooyy% z;Fm}|&#l@}`*8{$=WbX42id~W%BkhPn5qadSWKP)L3H2?KvQW@fLU3A=C-S#kjV3Z z9FIU6tq+_FShsqpAkR(xo*%jcBe-B8!f}UucM;N!rG6mcV4x+8WIQ4nv%-s?C|Ua) z5Y9jbIT$T+Y`ah@WB-Ik;E5s z6JuF>p(I(E5X*}U@@sEoBKR;(a?b?t(8QRJNl5bW#20%f#`3f#nVJyG-x8A?%?Fe5 zjKmjrBu2Tr#&UB)l0RIKknu|sVmUW4mehn7-z9#LlJKG<@x`7AFZv}$^(0Xyrw=85 z@$ZBe4<^2-OL*~g;)@FtUYwEm;(~-1rzgJn7XCi`#9MjqH(6f77s13Y+=Lf5C%mAa zRLJc`U~ECr3SSRz>&nR5pAyctemvqA&bAw7O4Or#Vj-&)@~nk;m{brl;?I68k1FI2 z3webQ{~!6ItoKsEFl%!yWNdI+SL0at(uad4=Ov$K9#Y#wnRJy4Ov-ikJLPvgM z4OE%A&jDye8$Oi&lYUe^RYvnal&(~DY_+*eSXa2o0(HMi3U|kYj-saP!hLmtWD4W0 zlR6iU5<=ZXWk;uf1T1@!AZ0p>NU}Fwsl!ZXv&Y$C)(HIUSqtI5wF#UP6U!$Knb zsUqV$nGfz)E($M+C zI-OEOWet|4EY4tL?`2EW%Cu%dDXTLFCg_!p?^w~-7HBcAz@}9Q2oP@Bfi# z?j#b9vKPR5NwGHU-JxyG?0tsMPq5$B2xspS*huy={q`kqE4DX3y`3+g>o0H0gEPvY zds}wAXu5~KE@6!oe{QFCuk*pppGA>;^i{aLgK@Z z%u=bc+l2UVNDg&6F7BV4#EbbzIqAZWR1z)^KUu4xTU1eVpq|pY@%^T8e_$(9w6yEM`UW|3JsW z8Fl}!5b`PR*!j|!j^|$KP@^h<-&|!KKNzA2Zsth;p0R_eu8Y-a5HV70Yn`vCuPZ9<;?NsI${XGzF3DD3|5x zv!_t;LqTUM79L84L@5l@78~Z!b5(|e_DEx5=KACfqN&$IhiX)^ek9hS+_U9fHY^kV zAFxW8jfLV6Lo8s;vSQt4_o|y=2ibkEa;4E=q3D%`NDWPzFLD+&4livY2nkPV+)vBH z#{IaHP;fH|yPtQFzo3mQ(CNUXrX>+@QG>)ML1+m%;)0XkRuwJ=PiyD}-q{CrNn>aQ zq4Mx6wWuGYV94cb9lv5BW=%QNNZ1H3&5I2IiimNF0=_9z*}=}iRev=hq z^g_1jnIUlt7!LIyY~W&-7n;dD-c}M!3oj@j7>*S33yNYMBrH{rSKRu|;NfKBCrmbi zoNUCmXLy0Q{+!~vE&C(L73Ete8yH$cTV#cWKeF9Hur*}a5q#T85Zm)yRO?%U;RXBo zB|Z-w(A~t7(zFsI<663QL8{ih!?v4FjU}v3_#^fea1bfd0KRKPB9e{etI$35Uyc)* z+(Om8g#$&i7yHDGj9F1=n6(9V56;Ttb9Er`nQuj@{d?s3ft+f!Z@tHOoqey26h&`o zC8UX9bl{1;FG8;d0lfvSQ0{q`qO5UgGv_^p7_>>+VM=4bH)w+y(kqE{;ea%@esj<* zlJ@#mTBQeWmZ9i#Ibtk{48&VNr;9VxYX3&sk(Cdrc0@9eO$NFh$)s**wYt}9?!((n zIoSz*YQ`3vnF!Wa?+$4y>}@F)l(|*yS1hk4D1Yd`A@!bKSjD7^YE0BIlXxhvD6OH% zDyZ~kDnY;5X8`+%0@oiL6&d(rsgxmepIrou*+2-lq`?>!8A35%E8)Dc7|o^8XqTf- zs?nf5E|$S)p};%WyecZ`>bA(XsHg1_&Q8UC#&*(16#qfB5rj@A#Ja3CVt`ubw+ALd zh#;Sc_7=i68asYPCSX7Dri0N@<~{oracSh)NqfD0rgO_e8led%V-k z2kNO5fO4#mH#7U>F>sNwJsCsVA|B1ua7h2LP8FAGB_EdXsMa5zkbTtQ&|+d%NMjHV zy-8NBp?CR}v0!WHTSCQzxOD-Q+|OJ1kslO{_yU&#heP8Ck;_CLu&a^>460IZPfpd5 zK^-|uzvY07W-R|ZT#Dk{YeAlV&wWq7M+$jg2`H^q3Bk3Yf&98$%L9F;gd>9_yv%!M zW9ULcAS~q}jpA~hI^^aZTB#ZGplz3ili#%=CVFWuvS8Af))>MJqp(-%XGC}sUQoyH z+E4?(0vY1j7?K0vAd-tnAve^-lbjdn#}hol3l{UcHuMy~lI&@ojiG1xmEtYY&qy=R z@PbYJt_{7*uRy-XvoZ7mzaZGcLlErX34%TP@huOUZGP8=e&AP<{m8R16y;YC$oPV1 zB#&o!K_S0uLq+@wWFMZ5p)>gfK`{?OP{I=gZv80d5nf>MyEf$KSCR#IHipLX3*06i z!eQ^$Vz0gydbLu*?feNba-^7Uk z<1;kSo)J7xed0pn3flO5f2TIScP269J?IYdcJ*CaNsfYQ=kxL!61T9t=I>Ik3+n8z z2NiIrNx$|!MZG?<$o}fqUzh0D+~?G5q}l%ZbDi@h`|E1`b%*`6=sAUVkNveqy++bF zN(vcg&roTf&g0e9cR`_!%`eo%m8jT9+&VV1gyhX#5@JjVwNE=6o`Y?~y&?0GE5u5Jh)X64>BDK;*g_kbYk2)SSK8-wf z=(Oq-YinpeG19-0;$ebh`h1xEP>-}+;;IN8O}I5Qm5@utRTIif>q%UY&@qHtL$!pCCGMqO zii}yj_Daj=Lmi>x2;(M<(D4$N?WMFuz@b$WVE`I1i3bD-H{x}uidWcVDSc6@CEKXb zustID*3f==sBB)LR1%ZL!yYI0P(hV>FZpQZ9?N!NdmcHcn}lsER`&N^UQ|7^E0|B% z-Kl~J6)2q0OJ1*$#QNV3UBMn#mc`uXB^#x3Td6%-<=S*T+7CLbUtd*^wva=3=|}vw zhIa6qP+&_kZw(dNq*Kxgf;@_)1k6t4p$lB9V}|gs3tX;(s=$7NQlF|(v?i%f)rrOP zHpR;pt51TH;t6pSZ$~-wzVwwYUORG=`c$n8SFY=mDF0sh63IVb*Q+MWSFGxl=w(8^ zI{mK+_3Cg{1qAuGf*At#2?6ViRpFOVVhX>Ghv+!9#V0@v`FKn83)jrMU1651Z0KM^ zk~&sr$oWbAMUBa`s}NbZ_pSW4W>@kn@&KlNxRRuX8K=Hp&hKEsmu(QzLRh*V@bJclP;8S;tj0A=3CUgZn57W*PE6z$g&I836ZHRUxHhrzhL&dsp9&O!l1~OJI+yaq%it?Cz1R_1QGK%?VR>I`t zQprTGvAgaZhEVLeUo#qse=OD@I0ztR2{c>vw~2ey@y%ZBAumPYieAt6nd?2~` zL$g$*O4>k>Hm(3&K+Y%epmK{2$J@AK(GxTG0}o22ZCrykNZ4tcUX>TsHbr`0Bxk8u zx{)!!#iF9ICdxS@q3A}gf{|QLAhGrBKeSw{Mda)=(77YqqhcLnx~jmrUx^xsJ40uD z%G|e777E?cn3T#-iTv2(4zrD3QJO?b8Eq2F31ux+EE>YEl#@P+P(pDHUSZ}$Tft#( zBSGP^qRtDtP!&PgrRb%LQJ~NSXH`&rY#=D4-~>$0F6hQvamKqOku9rfif9A`ACwAl zupq-tIY0ipW{Vn=(YjUX*6p|$Q+nuDZHYDgbm54%8Pa5^03k9$5T(MIrbNiqYvE9d z1P|A|fgykQB_iA00->PebXD>u@*>a0JnAH9X0I2Z@FAWu7xC3@-nOW0qT7B@AQLGxt(3S`9_Qbi8BhDrW|oVxfgPM1<%E)l*&VO-^D@ zA{MU`L=H7fE-GfXyY0=5)#;=S_^!L>!+6;is`h^la}I)do24<-J*$&o1@YXDw!zL) zC)jmv8#UPS1h6jy8tL=|us>ecz-?`uTBjh8$~yJ(d9Wjs|-<0c_`JP1|B@B90C|rNI^? zfV~cwY?1l&{y11jgWZ|{_NWau>bG&QYc$x%1hAPl(#sx*gI%b>3KPI8?A-2|9|z0R zU``S~*I=tO*k2RCw&6rlg!RFKIMUx~u!aP% z7XTB6)Fsds)L>U9fJN-wUc5);CT+hJ&|nv6Fcme$&h0cUdKGtu26H8VU1Eb>m7s6Y zdsRuTUU7yL*hq^KlzfW@Ye@k6#zzt4&oJ4fF_D8o)dk}x*yj==i)+PrJ#S|vqYGEx z>UH#%;|733ZRk*g3-kMO^MG>ReuD)k=1h|!=FY9+l+8sL++ULMNO{@6UH9HZC~-V# zT>mfNe^2qdbZ`r=tXV69L%dz^y814FWUk)Y8KcBwK*eFiSx3@o_ zGtQ6YabY~;9mlC)<9hmbe;Y?a>aI^`W5LSv*t5I6!zb~a-~N^2L|Zif ztI5KNpn{L&e-w+~tm12iug$)ll<6ILYqM`tfo^NFZ;(KAwTDBX_xv82m6!Ipj3~Uj zMRLz)CDVGk>R@z*2&0|*0z^b_{*Ks(h$WmS5T-zoG}>MPgz{KweR7eE#rCs#AeikB z7j|Td5B2cuC9;w^T((|?v-@9|$$r~t{tHkSpC{4xs#Rl_T_d?S!V>E*_$ZJ`?CF9& zJhV5->V`gB!keq%5732kc-DOkao-gg)T)@MHnere#fjzQ#(p-hC1)*S+u4Ev#s%`7 z!80SOioI%0F@pu%x!my=aCuot^QMs`k}JAqJ^4#YEGZZQ;PgJ8b-;?Q?l7HC30Pl} zk#+lt{EDmiDh7O*vzg;_+M56_oWeIOB;Z}ddRAoxuskQz^#guG)5^5DvK={^|8%8r z%i9=>cv(l(QKi}kQKcAD*BX)R_hhRGVMf}$kL1WP$HN!NPOQpk{wh+4;p`XeFTil- zwe-3&GrRS9%R`;Fge2KMxWmykRW6nEJuDkQ>?A9p!3jZ)bu0lmeL zTgS6dp3H8@ktybLw~9)>Bjg{UsLdWpHde-mC`ta1YnAwi5>q$SItMuhds`1}jmi-y zCMqlQ$cmwCKHsDHUjoby{Xu_VbEUmsQLu?VYH)_Yk-&;*{#pQ0w!-?^&BtiH(DAPd zHU;q%p^jD2{Fkp0eOqVr%UwAT_TiwhU;YY0$fvfO_?GD8l*V>FF|k>n`{QSQ1{9+oldEd*FdgkrHTjzbh^w_ktndQO3=Bl$ZkYBK<-a0yX?9h#5UQ>fYR90uC zwLiie;h==?*I~DWLpnT_aL259-w(f(40_J{{;oO_my%$Be7K&#&n0jrf#)b-$EAV{ z3W6T-?KVJu`pD1mxHZM%63JeUFSd?;1l9}qX->Km2sBBIXzEM}umvZ33IWR43JPl_ zE3an0p-a6>Viv0yn-50`A0AXO{WVNqiD@8)Nmp+b6=<`>hRanp1!`xk?h*3S65z)v z`0-z=Bdn!NT-!RIVdWf4(wQ~a-JiiK?EyrlD9Z+kCg(p-TZnkutk1-l(+T5)>SJy< zq3|=z;>>|G#(}9Y9^VP$%wQawp|J%VY{3-RN;I~1;aM;d8)xSaEg#2^lgc;q2!$?OJ z)!T|_AP-&gvRNblXw?L^Mf0TV>P3YG*{>zHs{tRtet!Y!gHGJzOK!ekT6FDy&%KxJIxF1E z0+VdQ!8cGgBPOJ+?gMj$y{DjncS<8nC-9=I&7emv)fYx9s@SCLgM@#I{`7_f)PDT& zT0_qevW~RlPSkPdOWb$YXt+~!+~pGYDRE*BX;p)mxYFtoSKv&sMa&jv%v&S<0^8w} zj1Rx1+9@8raVKnu0ka#|3U*znX)IG38?B{#!}F4 z`m2KK4RYqXaBejvw~jpqGg$5o1gRZ=9KjM^v|*#{hGW0!MzzyZhK6oYe=jC7^0}RS zs2^s2iRK(@e(xu&`MH5IvwNuwy=>#l^#QN9(}y1}$`i`MFBBE<#D%rluvYD94O8=Q z<_2?iiybap)6wevQk(NQ7yhyud+3EdGOX<<92ozQ8fMZIKLrBUv-yv!^5w3SubFv9 zc>HpJUeiFNTBTFHCMMfL}-TSu^WT0x6VJTxY)ccL53_Onl zM**<)vKlPbUc=0DH^TeqL$x}KD@jN8m&n*}?{8&S;u}=moQfVwd3?C$ z%vNtdMy68UXp@+30Uxfx&lT{o_uJqyE2Yekir?bcb|e%LG{b;8nEwtgqu=_F2_t%JOSLIsJodXJL2 z(dzAHSBzMN__A0RT`bhPu80q=0>vI(<)r#*<;q?OFzDJqC+Tc-@-CWT=3fa7eA~dc zfZ6cAJ|)Tt)%owoPPe!kWmE~!qX5b50ZhC)?Zo5iEihIZwkOV(dHDE=IyLgh0FfoROpqam8m6%ZDrfK_+tod zt|_E{K^@P%fq_O(>ig|^w#tTYFKFLQYS#qY59j6%mJ?QqZ;`j#>vu4H5to{0y^Sl* z&A8jlzhBv(nDI?J5zn0YKU1&y+a|NaN?ht$2VRXvJLU-FwS3Y*KPqEX{@NJOy8?8D z0G$;B+M$7-ivc|=Km!HnJ3i^0-qAo0$AEq#K*q8qxvDWQGsIo$$t0#VH?x4}V zqriGxHh;^0UCz+aW?1Q0N%zf^N*2jciTnG>5aZ#ZMZ(E>YwCD#AkeXA)#lNQIfkq{ z+8qp8maA{=7Q7m`*YRVl;HP3SKNA=7Qz@ z6Vu4-LW*R$piW*ols#_f3zslX?L7r(j&EnbFOg=$C$ejl1KjfO&XS*;R(B6+(dY-V z{|u1z?geB6qO-+cuh%u<3y{4hdt@h59MWC0NnWPPiv(&VAWh%5NWoRSo;=4D1p&*w zgY@K@{{T-{UvHg^MbF_NeNT)CB*^^(M7#P1nr0r!mw&k~UDc7}DqdxcvGET*g>>NN zDEc*fILN+{|Lv4-(3z5Nx$BDFKbL^lbw!&vbl_zB8X(>$#lJb>-Xak{$k#Q%P7?nD zlMYCz835(jV3n)5jWEakuV@os0-S^wO7J^y&Zko|6<;%UwOWrVu>uk(!bh6Z}}vZI+)cL|(DmRs0ov8Y+6}DqameYhA@S zq`cy5VE-;)pTjg3IVFf=zezh3j|=(wx@0=F$Sq%56f5{F2lOWw71_o7QofNXV9Iv@ z{v#%><26_$U4QmwS_)8c#QzFQh#@fPLy=mG`Y>rHp#GwA@}9I+zC-C1$oPtXlI^6A z0d6OD67!5t0OWL`Yr<}YYh1ZRsnSoh-gpUfB|@^MGW~KD?@{3^38M!2Z-NNvk_yJU zCbSXoHi|+`7x4=ADt>F~V5!nTo=W*#ees^w>TOW$_TD28w5*8^pin9(KXM#x45%p% z6`5ak6IjD1vU!0w>^}TLGr#bQUty6eZ&uMbeuEU6T7XGP9vt12$2geAgA>26pgP+PgeyV!$Q(eGM?MXoQbQj96Q6#?=f~n_3 z$+Kr=iTqX#l;3JW-LrOx)S1U<`5|uTwWq1QpxL*n_laEHdt3go!pNS1B?32+r6Tya zNIXaM9M2puu*urZNF3%9Wo;)YU?n6Mg@zGuf1tr(G1#bH3?mZQp{fI_QtFy8XrRgx z{YC&K!fi6hj?&qQhzg}CP}M-PeM7~1_YkLQfj~Z~soNpn`+^qggdwmQ;?k@?;;V)k z4bof0@UGH&(0LbUd0gjdg^19yWp9G`vkR(-hl`{oh3}>OSK}ZiuL@r=d6l%!TF|rw zpYZ>_*R}SO@dVx?@V*43UFf+&x^2`^n%166vh>Sdd0CvJUv|mMq8|F?3wc>6BYn~+ z^=|5=UnKvx#uNLNfHW59*fqqi880z)C#jgV(Z5jW6@~g`ue>ZN(l5K@WpS~7`9fY6 z_17<-pus&C%4p65?efw@-I15KA@pE$>KhIawmGFG2k|*}Rt5-XtghS5PN>3z~J`gbzdrQ`VWw;Qk zLnjO~BxO@RN|y?s^C0s;DBvD*Ryl;xPio%c?rRP`7;0M<%*?| z;vcM5fTqO#hngF>MG2s{%y;;mkYi+SG%`Q1o<0ZD0P8RxP1{~hDmP;kj-idO^P5*U zay&$#FE9IMT9f!IttjVnx#k&LhKYmoY@NcriDHK0KzUi4>&}A*rJmL-^qaF6amUW$ za-6vNVJU2~Imv~5MtV(&#~jgvGfV;Vcs>bVa8UX#((;*Y@>Zzsv^ACF+MlK9Oi;E8 z&&5!nO6d6eCWm2>tbTGLIWk^aBz3BiMGw@47Itpn&2XRxQj;0i%jRmq*0Lj8-o9nh zZIPWUfb1CN%F8NYCccD#zl3!P?-JXGt|AVR6ha!Ul4>kDpjSu2=xUZA($ZMWy0b>K zUenu=0S=St5X!`;?{}wa3kS-Qw9CS-K;mDGWz6x)0pz@$&63K@eo$7HrP?$UEmkoN zMN+{7rd4jwDg1bJgHcs}^Hbl=+xv^Nw@PVcCj!n&#@QoeEV^2lzAl>Y;>|EwOu{Pz z+o7ozSR=)|C>Dkl>b=cp9<*Ima$;(qs!|vi#VbH0zm`SO*kBGeL@O{Li}z#lm{@K$ zC@Tf~^wg#>?J-s+{IcH=HHNKInIwqyK_S(f!gK~Qb;?s!hP$B3&3jZ%K33x>np9?e zG>)9yk`viYmF&?3F6|Fv?`FO@ z(n$7bDf68iaV6-+Q~O(hrE#X}?twCrzo$%{qg2y9!<=8HW{730rsFq4f5Q3CcRxdL z0s*gUdoxq~f{2wU2TM_pvmPSe`zpjYf^r4&+Bh+BpuJjJZ|1p=ns!#BkU-4#E!yy{+eRSbTy^IYi_d4ZeCZV zq=lp^)w%!FqWY0hQi7-;$z!%S;-d3C&_iTZDPlTNmzRu@k-2JExYuA2&euvffhboi zR1Is*DovD3p(7bTlJS^n;bA{eRNowC*7GV=$vyQ(WhO7G(7rIV$nYlYR*iNw0o-FE zaJS+^AY4@#2ph%xm+;@I{C0gpS@WdQ6kIOr!ph|_lC!kS;{n@Buc$Cw-mO}v@qWxI z_XcYZBSb36W%KUvL;hUZE;4qab{mVw2WyLXE0OIV+k!a)-U_&Q8%2RJ3{F)IF3NT7 zHLF{P`w`yU7g=>lv*rW#rgB+pg(ax|@L%Z*Gd>RAECf1!nXAQavyMbkiC!pbCWQL> z>0>q#446A)Tw#7c#Ty>}hR^)Q+c=y(H0^=#@I^9natFdk_`<_i@ZQ|Wj0LDSW$sui zGe-jxlDtfG^&Cx27+&aU>}LKvtN#1!nqvmfqtQ;Q>AoV}omSVr7F{#Uv8dWpMTT>c$f4Md z9xLSFC2i||z8jgeWtnmdWp7XY;PjeqE2MUH6nOS}N-{krtEA2K%^4jz=GYvoXghR4 zzc@^I%bGGr4aK>sIe4Z--t+oG^7Dl`XYJvNvK=$B5kW@}woAxMmS=6Z^u68EYmTU! zeS2CklW%*wWdt+*Fr!I;wjmUl-TI`lZ+ob0Z4Y*@n|()GQ04Edzc{UiPO~gcF)}Cx@S9q4{s`ADFb%^` z;?3^(b_!|xw7*@c7$rviuX7lxwaZWjR7{cf=!Q;vw>OWe|31Cu!ul7Prm%>`aJZTTXa&vT{$9%(jlL~+wWMsKjMPJ6m zg3TaQa9fdCzDl9D>$ElD12%IP zK*Y_u4mWPAIO_o>c=fu>+l>oe83?R=`{1bo#T=m)2z>OuW zwFAtbq+_&PM^MtK&0R8F(ClpgZVMjpLWVz!$k zgX1JW`f~++p-+xV0ou)wCdx+}!0r@g4dgtUL}1gP`;#+PgCylQF6N_Kt>z1}Db*=PeFxV%d>ljpya3`6k)@;n4b3ip+25zJ$UjwP_mhiiA)saeqy&F$6N+{T zv@gsu=@CM!otmrM6!B|w+PBbj`6A=@`^~RNS<_D=dxxG_2;*Q$jJS^`rUSN zvTJ`_l8JYc3`Rr|xWOc5Ecqlz-R6*q>e@#9C0*X53n z*w~37u__4_3BS5{nfxrkO$3n&5YZuiC2Cvgd;3RU*;}*6OldMA{kf5&{A(!-JOD@^2s>xfNUW0(k*Y4MVANtEa zpFLiUmqqm=H%AQ!FuClaOMKJMkncMA#|UWFS~Q#2uVakRcVp<-?VVyB?#O(R_0;l4 zv5Ct}HMy!*FsJaimT_@G3u8*7euv0Uc1RAT`%ZJ+TgGp|{LbHRA6Kfo?!Av!E^5p2 zMQYGTmi(4&F#0j7VZLWYzZXg46O?$B8yi>6O}>5`0XV|?l&^sZ>few3E38N^+u-ZR>iPTDIzGs- zIGzl?!=Lx9XC#UFR^y~1W@>B2)KSWa%^GRnXu$Xf6A$J`gIR3Lfefhkz5RnKcjl)G zf%#T|1=4<8qx9*1?wgpM2btoZYpK%7gB{1o-HBW@@Fefl9D||pLMasa!3h{>v+h1F zq>1{f#ME69L~cdjKQ`X}wW*TMT_3nQ-7vG-MuoFr#{uq8nDwey zYfJoP|E@X4vv)1^KyuqJ00HwyE|8z?levwEPS=OXZBiM?WOpJm>6PNhrXz-|-5SY{ zQW@CkL#Z6qQJJHl_npFQ&9&@dWy6%QuM$oD!3@_ut#N!c`~CfP`|AHrQ}kortn-us z{vHJ?Jdq?QlWcW_+o-SD_^=TlAv$HM-v3dVwWiv1Q%ntb&enuv`su*{%5{Omk zu7&!smr{ zvqL{D{n#Uq$i4e{MDvTzr4mQ(O=H>^%|BkhK+-Eq6ezT&S<3}fbD{vs;6$;0 zlxHXfyM- ztZBb9%zNv|!H^b|`gE^S5B1VyP?s^G#_o}l<}k;;x(D~uJ>{AZMhUK-o*WN%youh^ zpI0d5C%}RqHGn{+R0G$t@}jCnPbu%Ut*st)%$gdT7tMc>gHm_zo=q_Z^ibz*B_pN zeR2kau^GkXjWe)M&R{o2vup?+0aIx)dXAuscS-sD;bl@l41)DLx`js!6gzf#>xfdt z-N*>HKTHcT!tgdeC&f2dqBV_b!*p{nNMFFEEUw%~80nQmFD@G`viD&@53UgF@{6M8 z^(!k-;0#v)N^v1D1A*KriY)oE#OYc#iQOJ@eN%^!h2jh#Q06U(w}`f>NAAKx)oGxqVi{M6R7PG zdU=t#AXZ7k3@?TST>c3qEE7>j^NjE#634RTB6%czP%&miwf#vSRE!x>eM8a*6=Oye zACo?)7&D@}iKGuI#*CYaq?UtY>+e3+A^c)aenFW416c8{ z@tN1uidY88{jkvuJ`+th2X0Y@MxRX7kB~vd#wZMbXbU+?_@PY_KsXx#uM&3q%rVtk z8VdwSd|fUOAdcVHgpEi<8bq4@Z43z#+w%!o(xNEGeSCdIz7~+m?idE^uhL;j_1EJE z(YW?M0ErB>ycs?yeej9Oh@bPAz@7V=SRc$@ax<%kj5bVPsfZBUu#zp88rH95<03}F ztO0Ly6q>^eFsAp!P#9hJX9iGFwTj)5J>U&70xoEwPcJt1ZP{a_m#;6_6ZQWlXHRsP z81vhS!v(kTNY5x@v&fM!5oB&=bI1t$EQMDS3c(R>PA28XRn&C*(eCTmSak`iJEwu73|~A-(9| z1DhnkW!Z=5pHE{%|2!Hi?Srk6ZB9gzD#h9cX%c?2{h&XlOY#>bT{?_4+Ur{ODfc?_a;vayl_3 zCT|kBjj4MArukiB>YkJoOf5F1=NeLRZyV?I<4S8|Iw}FvSzTgUl#~=q580STro{BC zByby3j|5E3=XJ%s3zCw8=@uK)$Mvbo)GY~IFrnpH3A%TAmzduCHjy1*Dzh<7Pl@S~ zByby(I|0+qlCH}1i=?DrO1Ci`nG(~0ByfePVb|?(C9m%i(Sd(;D$*9|j%bz^-Iyy9*(Y(JOvm+V}9*>zo1`Zpn}|pI#kpPa;Yz_ry9H4l3|;IN?}aYm&(iSq0)I{nzM)I_@BgXt@23hqJm;0u z=xC;d`_~FpkIsv6K-zGcaw*+4<2F2Jov`Y-n zOQJ}=9}FE2D<;Mg)$UA%xtjWhE;2zl}?pO9m3Y(#k z{24axDJgL`B>-#Om}}dtE51xX^-=$>iuv<|)D-hX8`ZyA>OZuYeG-5L)qu@1aya)a zH9U7U<{;9TwC6lla3+;8;>k+oZQHI%zKjgk=bc#rq2F-*5 ztv?FOJz#-&#-HqL9?RffCXcmZ1FqJJ7a!VsC}>P)*R-c%>&CAo7I7b{tztD+qhMJC zk1qtZ9|Zw2(6s+z^OL=+(u3VsR>4kds_Kqb+cOFWQa{yvS~h#;DWi~FT`f}^@0C>K zFs;$;c`}+lLDm3H{YFY>&)C}ZjIGIyjXRjDrdZN+rQ4{~3>qe=X^dm55sdNqyX+xj z2JbQKsaA!a?2Rne?_*2keeY_?U6mUO{-F9GmI4yy=P`Sh7;=U5UtDdI9+oYw?l5C$qk04mbR4ER@+$j>rBUT~&5j>9j8l(^Msc#AE93 z7?@Gh186c+gi1;kW{KLiO0XxN3Nt<@ndxoTJ*vlK`DIOUvhn0lep^EjqGqaFY9UM= zqf$$e*}`>*NleWrRr%Gz80E(jswce^`Hdj6c_zK34b3%}Hn8*YW}n2J$@jfMCLPz( z=5{&bf`C8oQKDeNk-M_OChA4i1*RxcC;hQ{#LB}+K$T~XN_yDx=#6l))F%oPo{*&L zef{RlLYYqHvsNL^k1|wDz#g$NIzfy>6A(k21l1%duKU>vv8rZqE0%1%!`#Cq@wU+w zdk~tm-unEYkjtdBIe4BFszgoVt|srdu;XP~t7(f^spgs*Su1>>mTaQ+OO-|yZK^E) z$Vy%(iFK;aSjh5R%m1nJMtd(yw{BMX(rAVUPSl#7R81v)fvl41JsFj3j=%j&_#>O+ zu?wqhgIoWWZp}YK$SWh`wZmn;f!R>E%~p3C0e#3XFK1`tYck+LacR?rR9jEgI_VPA zysuhAh!PkwWXLn7vZXzv{?l%*h7U;3h{x6NxDF(ae||>QRU^C&Rz{Z;)k^M>{J~Ju zzLY$q!{1xdeuW|7N`HzDC3UzDxK54gY80J0@!2nl6DmEJe&z0q&=PW#?FG zUcRb<&jnaIx)>Ly%yd#DaN z`yWnO#}yebUI;-dmE5;dUSu@6UCUlK>c7e;axv;@UQxn#Pu>3RQ(VJajFw$lQ#_df zW>A2WJ;(CrH&4oWQE5f}oT*Is9s@44iyi4j=31}$9!pQsyzd0lw z>uK<|v1YIHadx!pHA(I&KdAQ`lx?1V8ekVX_EB@aBsA)0rRSy9%rT;?d}W)bwFk=D zrk~-7%64_P3VT1cce_ivLe0=9 z$Cqy80h$F|VH~ay5{rezVn{6Z1Lw~?ibA>SD`bowUDf_CmW)HYa9rq5A}@2hpQ8W5 zXI@^d2>!-b_RjRPVAuuD{pJb$a)n+Js)c9oO#8beR6L`)`~=VZ+#`iN(GUbJCkous znbV`A6g8EBvNxw+rEV2iM7Q_}^Kbqfd=<8U4Fv4KA>axTFhAjn zVjCX}aMhm-zV=lhlj+8rQVZEF!-5X=&oJjzQN8^v-O70UO0^%w$O#N~7Y0v_4r7im z%+WO?OmHw~N?arP;c!XE>Cs_XM*1iQXu}*u1E>(7VgV`!2s%{GHGlSLOf1y0;`m1J zl%L2v-h#x&+w2`>>6!7gKjNw6oW{gjpDfNWJgbm-2W({Sd{?fV(~25{=hV(PL)C9q zZ>y<7`(>9ai4F6;s9L2lqOC^RoZ4xh#OI^Wkr-7-o-=eBKeB2W@#K{<|C4Pp$;(4W zN_vxHMxo8YKzx7bsDfy>=t$0j-o{A8aNUYK%&Gjpi<^VFV-dl~IQIw+9xL4AC(OV3 zbIP{4=A}4|xeA9G@urweB454UWgiA(V9hpks|shC(qU}0z9xk6LPn{|D$d%lUNNyI zeUlt>{aH!J5>ClySNr8wVCA)SVT6T64UJlP5>BuAU?SgtGwaZQ(q zJGRFVmw?#8IscYaIA67alW?-Unq&3SNU5hq84R3Mg2{eNYmm-XD1;2^Hhh*ME1V(vF1zXqUKqBHBu?6_!HHV?bRjL z-`E);*)tQc4oHdh>Qq=MYJv6q2||w)b#MkK+C`Ra2j&FUV<-!>}F z>gR7xRqBsFN?qzgYk%wg>o2>&T5P?-ELvS{_>Q%T zmXcx@Bo$li?Wrr&v2g;569{Y|wb+JpVA#nmc5TJ{FW|vqWu`{CBANu0V z9+47jbr)Dmt+mI;ioGEw;#0A=>#`=2-YbSZiqiT z*a&lkIQ*-;R!;$Hofh_-)c%kl>3d_L$SSt+ss8q=v=xHsC5>r|%b8c*3&IiobU+rY?Bf878v0wjCIxQ+^Yr~$BPst zVRxaGWn+ouf=361kIg4J>eRJ=@Qj?AUmIo1rSPs0HX)?6!5XbF+%1uGZDHA;sb0ul zHjfJi{T{A{3OiWAP}B*+o>AB_OOS1EmUdta1T}Mtzz8$?G>@Y|dA`i| zjWGF-0odSwgltaaIE*5;rY{>UV+1DPizDIYWI=K~yAGKWZbA%x4kZVKGhb0zq^>b* zol8PhS9nJ6_*&X*_J{zZRu{d3Owy5&gkA~?k%-hjDB9k*BS*QL(fq(1fr+-Q93SQ-qGH8F7g|qulS68^pTI3x zzOwDpo;$x8!rW^8M4unQze*tvj8p}d+B;;klm<d;P#^C<3s+0LAQ zz%DiHzce=N|1h>{Mrtfu+k!ojb~OJ!Hih9CL#+!j3*bn|637ysF6JplfYDf$o=_Zi zP93nB>!7fVU8$4hln6&hR%6<>jy;M3SsdtNb+px2Ms7OaX&i8PxTuc&;-m80z#H0i z`(RlbIxV^XV!ss=yn~YCy!$0hv}Wg+NY;;}*Uo*cXRx4gT!c&)N~R98>~l@d{HNB( zp(RHnXdhe+*j{8$nXBOo0)F$#oIq%sHV!jyU|Dcj)CjF|h1T-5oby^F!Qp}I*e)+B z(e5$)F7GN@Qwm=po>5BZGdKaxd2ta1HnVq_p{OfijY3ZSds^Bv`^ZsaPu-{KqD+3X zCvI{Kj@Xu?Az&m6EDHsG>90&Cr?L`KAt#|wz~h8BNC`OS6S3VuU%#eStS6%u9CPf=Rw2hIK|Lb1`?ej@9BEep+-tSsOVq!JFG76)7nxY$Um zyZzT`FUoObQM#&{W6WVEtz>^!TAya1hBUjp>t&y|yomdmDmhoQi5FRNU{_kTs_Ei> zRybgtla1`QAcV&G!1&DL%u$u~pJoPsCOZ<2k}Ve$_vaHi`E3p}SjZ~HISfuU&b(e3L+u8l5%KV$@I`dk%+EBCu1Tsk_x@P zmP-hcj-d{PGgr4i#v~y?JvA>!ETF{xQEYZ^`82~bz<}D5$Nvu-qJh8vsZ_g;>AlEYz4B&%7OFVi}?6Xk+#l_%xF+ zUU+nq=Eh}HArUlfBMRk9315&rHJ2}WJaO9e+e&)tcD78Wv6Zx@3Y@A=h2DU&4Dn%L z^8F{UyTLxi#(sEY#exjw0U4Iae!PLO$u8vB{{T(&C|$_IqghOGI+)SVDWn^HnHR9s z2^Qg?#&QS?ODV+TEidUjPT6w3EsX3y*)*!UJ%J%z&x}EDcA8G^;&nCgseH=)R z+@p_EfxJqc%-}}EsO`oX1x!@cK58_p71h?#V-mC!)%-znR{hp}a+Jm|?cfIi)0bn7 zds%w!qy6SOpZRuuWhM8ia5}ivZIA+IQ0@wO2273_D7D9^=`nNAX|2-yqR<>k=%mp; zG}=>%!c$gV$sNV^P4;o1Lt>@2%LxPaZ#?@9vVG0jy4=jxOBtvkfo#>9Io-Y7b5Tc5`ksrM zvGaW{^Cl(;y8WNGQ)J*T^SOQIR`F9MMADuct`S!dwSPdfw9X=FS_W2BN1?>39jA8C z=2NO2B%nQ1&AT+<^l}oefZtMeR7+1|=d|c7V>c98l7?2D{($O+jaDK>Yve#2QN^-0 zEB&|ikFh|`TO&lOwp=&d2@$alU%@AyI>mE(JI(eIMPGLB_4d5X+YSG1bG-w0>9g;Q z0s`UwMbh5DoC1noZVt<#_lS)Dgn?=l&uE|UzuVgRfRr<^kC_JJkLV1$MG_6?Xe=X` z9G`h_lOPLwpQQouhi_@chc}yIa)@c8VG4UcC=cJVjSmlz<8o=RP8UVSt+$`1hfVYq zDNI}$AcRT9`Z-BPZwa|q@`}!LA4Mxa$(VpCPY*mR=L?7?U6OanC+&q$)*ZGRPN-|`NAMs&R91lmz{=J$xJ zcSok)k`L?lc%tR^=IrsMmv1Z}JOVN3xI7hy+f?E@vTglF1l?rr-TNI8$HPTA(rnFJ zBT`P-tb=~z@8+`0V;wiMPjv?IpK63NR}#sfW(ENc0l6A(kpMPiA5J!Wp%zzY5)nQQ z0LeJ0g79K|h8R2tGzY@h7qYaJCx?vQ@H7s`rOxOjtRX3_#~aQ%-Z$Y5r`i{hZ^IYz zT*9-7=VFer2Tc68j9yG@800`K9~!MnJa9>0PnnSaQ$>q->OqN2u*5xwl+V1lWp{?V z?#px*9D{@E^w={^)-33*s7*+O@dM+~HtL{MqeAkxzW71%zWru3SCcl)ElSW&jip$4 zF^^@8AlG7$wnPRs#S}6P@(Zn%->Q`73A+9cIy}T27F`YK4BH!w_;(S){pJ(eW!=0r zb-a46x#p_Xx_Ai@o&0T1E&7JayBKi8%&uJPR9?;+vr>1%Tzq5U-SAm&n*N?LqR>Ih2_=}84}Bg`E07wBF2To5|tWYJ2`z{`P+M>oE#+x4g>uk51bA zEF^O3{S&(thUqoE;4N+8J2F09@=LfaqN$r(npQIe^>;VbAIx;suUC0?$PD$2=vv7j zyK~y0la?9UhK?L(2+p*)T1&6yHH0NxRx+BsT*(dDB2&XWsl}1$T)4o=MAwM9ZdhfG zb_YyH)mo)bbtEVfbwr3XwG{h^)Jn7%sna4xbG7oOCdGT(P;>2U-5Hv=K%+tIu@TP9 zTO&0l-Vk!{h|@tj^Sx5nvaj^&%|&qdP_yd`uS=|~*Tl@OR}payO$@X4Bi6{*5zNVY zTxGOoHHzfijZ+%|@73s9US8C9N_g0ja(uO4<1q287&{Q_zD&)d)G0qtp0Yvw6N{p9 z_4i@{+4#*m83H(WW?bdm;I;on>SdbkiH*_c^Ci+r(u>zC@CVlMRW0FjmVTXB@qhoi zjP^&;_FfDDII6pr_C}3&)OIum7r)Z@;lox6Q?b`=FwCAuK6^*xWYyeZm>0y!l6?Xg z+wM}x9u#B!=bqlm4ZeY^S)`P~th--uNS@_r%;bs`7WEh_+0maBBaa%x)?Z$;d#z9t zHLaZHy$YAlO~NiU;g9@}(kA>MlhEP8>JVoXAh9{J6^-Cl?vm3zUae zIgcsRclI$gyXLR*yw+XhNVuU=+I%@1&({)vq<^CaA3@&1H+)-j=Hm3==_@Z1Kt>dW z*6#N?{aF}$-N9@7$)uKCeoyqu{;_Xsl0ld98pGc3m4G=I>t;3nz{HfrA+X5dJ$p%6 zD~@$ki^Quf+(Xz0j#FNBl<{%Eedf1KiAgf-BwLy#$>xWDvGci!$sBxDF?_EwiBG_%ne2&r_pikg!OF~` z#p`dQeD$<6ImR-umX)`rK{DhQhHo5`nkjo?Gi$-%Ap3^j!qZE_)?l;dp|8Kj&M5F1*WYT)-Bvodx`^#HHZCSx#BlWtkx0 zCjp1?i76a@?|)Tt68VlfD~aDqzPBm)-k6xsk?(6NVQ2YX{8RF6jN#kfHwm8-+F`{T za4>4gt{vb=_FI2yZk&{mKuI>n)cGtAQqQjY&!y>pCrL!-@fxeHe@K>QelqA0yv7j! zSJibAZLF%UwBOz7?4A1hM=j2j^|e@~5qZwRB$iNreoCIZWid?Jh9qRcp$Ig-e>88UK|$Pf3aFC*^5jL)GoU#mV@7TAoj8Z%z!~HOcsXTE1_suuG@q zd+Rxle1juX%lF}g1WLXE^N;(b$?YW78~*cV_{F!9r1}?L+fTEl$|`tbr+RNP=v-c7 zh}F#pojcVJyO8R8%Tr7BFTfAjo8&+9(DremN-XmI`m{skdz0#4C#ULPuT6Vuk5Y_Aa#GU0;a!{mCEY|Y@^8KLS6o!Petj}`1uk6 z5j)H$)4uGun6c<)tHjs2P~R(Xzx`PL%z(`312Io=M06 zhRV$yN>Imr7>%-3PW1%ebDU0d+TpP!sn{3D;8TN~IXr>K>-nm9>@y$Dfyd6!{BPu= z3|FEoOSi@m{EvemRh8=Tf?bjI3D*39F{FPRCST&U*BRt~_D>$^R0ae{C%PIf?n78q2@_)k^YDQ+NLgS7x%V z;fVj=Uw5Xu9nWQme^e~j;>27x@KtlA{#98OiRXH1Lat99lIsIH*B{`d=JjTG0xxP} zxtfnwCGg^E@-bcwrcFz$NxMN-|3lm2I$>@I9?J>tEUWc7tr7;kU`H`g+13kARHR2O z`*E^==$(OE!=CA`<=F=aPQh`b!+`_4Y!1Y8j{C@&YUjflBk>22KRHJKG0>kX#YKrJ z9Q_gZiH`n+!Piwueq3@$NxpKT?2?=xFUh%`N^autB9nOIc_*qB>-uzWG%XdoH$1C3_Nw$$ zGR#$TGFcd0kjW;1C5b+UrCc%yOB z;V|Eqm=DUmuaARyP#2i5PE4Ux!qMvIzmn$v(B`_IlL9V@1$Po$!UQj-EXAff7$PF) zt3>iF74&K}S}6!lCx+#uiADE1$C`URmUySijsTfpPib;`5yr>3L#YPGN_FiJ`En?Y zcPFMuD%HpBsY^B9PT_g&4pBQX?HpRPMKp;2b<)dvO*AZu{;jp9| zaGm0%bTnx}AE}OsWjQe+%UL?hp|LE>>@0=vihvJgK&e7ID&zX_F6p{d%aKgG64`(4 z$4+LuO6AL;H7-9fMH2gO76MbG_+0qw*vSvAYXcVx%Kx$%iT?dCg_;&esOnmGnWiYd z6m(H2cVY@vC{bu7V3E)~8CKhq1N?wE(>mR^rJQf>mO@FHoo-F~w2P!e^O@fT&y$_B ziL8p*|5P&R&yMbu)So2+JHu(y!I8Qb`v~=Ls^F$C4#TeDPCj-ocJnq7h?Kki0x89z zI?yvQMUoEu5=5y|eDWuoA6@h%=PF(PFO}f?&ks|oTO5pbsj^RTl;GGdN>!Ga!cl^} zSnZl6!(c}V=5|to+fo(!D=CyH0fmlRoP)z1HDGAt<~H9`8c?)kMmzejSmhx4aIoi3 z>cbrg=u(Vo-h3ji56zz)hI0d)d~D85-wJU`AGQumCezWx^u!cN`Y-`RsaVs75zk>w zs5c^*@3SWJCm{MKsV6;p19phGAs?07*)h{uHDiuAS)BdX-kPeuhZ#>6#>~3$O ztgJgaGP{$G+>(kBYo(y*i05TB3Krs=rHSA$M^SKb>Q1VNj(#+%)N1_eO45&xBXowT zP+n%E>|*r$#P5Y7Z7B}U>{NzdrphqG$uNofArAEeYR5rA3r&n{#0mw zr+{^JN}=C7A5WnBKdPUjoD7rbE_diI>vY~B1^qcO`mZ@UiT|nS-=-MbCH?)O-_b5t z=vS)U$)CxzMr&!{(fH`%SKCpuNd9TDk0pH6qeE%7|M@$4%Re^uxu^Q9M`)@dFIlBB zNRL76ek7jzu{!s1?D87*=7f)XKUOK1pWx87l#fXRn{g^{q2tPlod!08V_D8k$np<5 z%gM1Ue_>}CYkJdTS#~2!infC#TTR;q2^n3fGdeMr(FrOe>ZdC7OL9I-g<2*!$(P4M zPfN&Fdso9O)%V*w4|G32HI+=eDWyZENh;)VREX%O{+`_9C-vud3Rs$o z*-)pA0iCC=Un1%HSw&T8u7;YUq>${RlwBBX)yN-E;K(eUv8yvu?St_ewUaq0w}*TI z&jXP^ipOm(G4V&v{>RHda>>2ei$|L;{8%?8D>kN>MM7y6Q_kdeKPCm!x_%m)IrfS_ zbX;4BT0C%$d^>bh@lsNnq;4cnS=bLv(wLAWRX4IlDS$n!;4<*=z(#jturbHAe4I>A z$2GE3Y+TXxjpG`R8jI^|xy&?>xrWVLqs{pTmDhYIuChFTM01=b@s3!N=q?R5{!qil z)z^!}L%v{#cm2-v;Q88KoRG|E4_ByUYW&wdt`FZ%d&ibZDpU;#s8TeG z?;&d+=e+8pS*}ni&NA9BMAYZYb(s~c5NhA*XGd55$d=1yUnC+Tri3lrm{sSG6uEsZ zUu5|+KjSc&+o*4zF3MEP237HQCvK{hM1O@*x=U5~LS)c|Dm3;Ny_)}{!IhP=o3p!} zAJM6b`aeloC27dln5|PKnUatsm4+-+ZKX5tWJ4iUD^1)-V!}8?N5oQ8>&yHA1qqmI z*lVsdy2?8Bi3I()J*FSJ-MBFoS#3zgVTue5ad{z*=t{YPzW!@&`4oTp>`*AQeXVKz zXtNfoWMgSBzV0Ua@hkhZ<2%X?Whz8d5)h@(j^+RBXa^p80(Gv?8EA;?o~$^iG-L=@ zU@0AO-T86iHm(1UxOah%s=5~cXEF(l5vQpWpxU=R@Ya_G9h6*Is+=wbov%Z2{dhprM2EH}6XS=1l~YCXR$Jn33>R zAD=&XOy!pOaCAs+K8U@P$oB?o@7%ol25E2CLpdh+X(aT=#oCLVa+D(1(ZQc`YKDMr zzhH0#Jw$h^*0SyEhn`nb*I?jwWilLRUo;AM>E?e-#umQh?GT1_QzB4q&JDH<;9pXg z9uee@IMDz+#1Z>buytXJ%yCh-;WHDwwqrCnr^R}^t0#VV{ zr;cEx{^XGQycOX)n9?~NnnPWCkFd@9le9!!*5ShST+TeOB4BN7&-caU^6l6>zwVc( zUxyyW9&E5IbMvy?pbAB3Y5UEGRFzvBf1)~ck&tta8`uWK$D8lL*3UdBAo(0GtCPqn zH`_W*MZYr(X#6;k{Q1FLgN5>lx-cJ-u>&EI!5IL_vT4h*lG9@9Id1PR%2Wm)(!^T7 zv?znB=bb-z-^TKDsIJXW^G7h4J8ng%CHnS^LVUrtc;<;-<#500)^BukuDVW-`~j4RTXOv$qq{m0~Oi|D}oWhS$p%4#YS zw=WC7GA(PuYqxicrK@bRzWf_T2O0amgVNqy;*6BzOs9^|azg6}VoRbNNE!I$aJIdFc%4(se+T{>GBwFw<(T36?Z2q_NE`tYx5T1@ zS8kcXzQ<_Bbf`Wxg_ns(wKXu1E{W-LXl9oyeN^{gx}f8IZJlmTU19wfVl*}E$czPQzV6M|{4G4B@^|^(-bZ%+mDt1{jpDVF>b3A(5745^>>Qh(Y!z(S$O6^Y)Vq zC_uU5%}n3BQ~@%5w;d65$gqdlDIHT;EUz-5NK>)@5nuUq#s}7lB7md?1cAV!ZXR0yVVf3Pdc@gj5THqMw>zeaKf3S4-0#276{Gx?y3*`|iy zK0KQnXXlJi-#D)yJBh@1&8rH7D&AW1eRuqP`8h*=h9^HMNSqm54UQ1xKDb(tuyTnn<|W~ zk)7_ndBo5T2; zZrsh0+q+AQyG!-1aXu-X$8zo~o%?E@Ii_+qM=S5HGw!bEQ-kxVk^3g+p0gHfTBSO} zc8qSUVO(6s8d)dwt|cqD*eTaMX1_sApLw%N-WY2->`S+O5tW9qW|us4E!oG#$!^(i z4&>e(k~hX0iH^%f9db3+h%nq(BW{hz?&IQQmm{0Jsm#3*|2*Ui*caWt)NwJ^)XPKH z5-~n?vNzgqnsRSie(;#M3|Tp2O&P1)k*uOw)+lt#J&KFP#$IrnNXxtBBn{&fE8NLSCd1}9x3 z_i8lx*5V+jb{|v^s`cJP^T{_v$PoO4;9Mm6nJ1==<6OZIj=nYM=HAv8#hdTubPk8L zGi>?%r)6#?;oIk46zP0-NX*mc$P>ml={bLpa+L3Q{viLIA|mPa)L6*m{?&8T?$Var z0n9ybE6_gBjRlX}%8jNKk~vEh|Yd+wnqIkLF2=@Jg)x2!7(^pFRO46%m^GXhxFKyvdF1E{F0sWps(BWNydWr%Cth1J})soPLBm8)2tliZhwnE;Uq3Vn)&`AdOycdEssU})oK8awW{2Ki5S_qgV&p2n5Q4VNv|0+~xTW+Qfk$Tx6)y!>~ zd%l|AcCfwT0~!Cbsi`|N1cx(ib6c8U&$0TI@SdPMbU8F2ycb^&mt(OOeot;n%D1#}Hv4xUo7HX+;>G31HE&5@eu<>G)? zehv8{8Tc6bB^B^CkAfH$h z{aX1%K;qYsA2al|9OM%Xc>;1tR;`j%OEMUCPVX}k^8jg_yRZOo#<@cUs^=zhqk2wm zr03*IDFqkgdX9p5qUR{MK-JH$A-5#!S3gg7{ROIieo02p{Z>eb3bb>X+6glYAcZmu z*g7%`_B{!{q}S`ojRBo$#6rfd@#)XRrV(dyLZg^y=F6O8-5ECjD6YSaTlaGIiVO4L z)(;|G9X9HR`(ng|H*RG{;Fra?RSV((M(jHzhHdJ?VR|a*Wzo|;oe}eo;p#_4T%JMQ zbJQ+&KSs?_+KQu+KClfWU9dM~PTvzUr|u-6WQpXaFUK#(cTH(9y*6Y_-Kl#B$h=^0 zFug8hOy8q>IFFlnFY51%;&mNB`XXkh__9_ny74cO#ct&<*{=6bpHr`jIUU5|Ku{a^ zs^C`GJz~^&_q4ASM%?p9vBbqkIY>WBhVE-D7s^+HV1#e7AkAcjG?V`cq@m-&>{cp- z@6HQr6$$mMM?xOmAFLk z&FJaot#kbTc}mO{fKQ@au?EE%6qDKRiD1H1P6PGy3L$KE2_kJ*R@3;oBtRDNiR#i3 z|*0Q$D;W47x!?5*%bpgc9T-Z|b&Is^_c+f+FVZ{Xeum!C#mNyxvroF0o$igTTZ!J=!ow5v>li|TBrv?se5`= z@TmCZ?6DD@<3(iHV&R6=!wc5YR#eg`Xy?F>&SBsCd!Aj!oLTg{ZaYylYgDHAVaz=F}jG=*JIO+d>;uh^X{tD*&`kuEb{D z{Gk9JHGWxUU+0VSf(7FHR%?^-kERkOGnW%a4@XlDL==5dw&fpiw>sVP3I6ak>Xj@re1 z!Md-1u}}35jizqJFUjAM_uyo>THvIESJiXFE`YHyi%a$7VV`!dFzIwYn$QmMy3B8? zIKq_GmLL&!MJr~NHHFMq<=PUzGjIQhe=jf(XvWpVy`_n>`^&Q;>5lx*@egAD?eVgR zxXD{9y`(Z~C50!9!&9qwoK_M&p@iG07njZ*k@VV_|CQ#S(mbV<*k=89p)>$*ZZ<|m zO;9INa~Xb|=gf-MOejgrbZ~E*wS=USj?eMBeytKFr0T*;Z$~YU1wF z#OUK8P;puF&g7g%w}ZoC&4q_K2Ny)qtCfSUS-j4W6XuicXIYL?zQw zfwmQ5q$`N6mw2k`FluLkgv=HY(H?doQTUn3{L7TLyJ{1yX_Q%RKp|w78Px|Q)tAzyF}>3x1#1x z>v+zNH-t=_6DyO7burT$^Y3ULf$L2#v?l^nQW){l@hD1&zAmD6|+av-gTZ0V)klAu}n&Pw0s$bd1_O*5wFmQ8(0% zrOPm1*e8xjrE7Y=z=urlh(DP;y4=uU)3c0I89dVBuT2l&YgGk8!?{&8&aDbJPM8Mj zj{>oxNXXH&eXj{##%leJD54%NYZd%AX*ar6ys83!40vyFW1_mx}Y&ugK3RygDXM5el|=y`%`vn9)-)l7LEHUzuy3UIkwJP3#tEscPBMDjqKB5HGOOTAA9?dhvbRp{|)uayl*B z!MUlakTA3i&8fi3T#FJEUffeHMhq>tz&+;&X@0C0Ll4$6}MvAd4ZW z^PyT4@$M{+-)!dx$pv0?h$3XH+Jvc2#E9Yg?F}y85Uzh}CbrDIQQ4PFXqsrs{{1dc zk)>=X&iSLBLz#PD#1yUGwy0;H`c{svGny)7mmK!Sj4*p57DjVHeZ&akYi(Xj^Y7UH z)B#8@l8VmIvZ;+xvolh``X1@)8rYFcz%$XI}`=Z*)XCZ6KW2A>)JqY=K3J^4N< zw;te@%Pgjr@Cso?;81RDjnpJ6wYKrHQzTfIxPJGaGcu;T^Gnw0jTI(A<22F=^8K`Ad)ZH#XODKxl8Rf~ICRcGJmLqwhRr2bJ{nkqgZ#ZYCsO0A004Mrt3qMIVC zVodcbeWYf!f4o;qzJ>V_-K8a8<3>OdSbA~K@62mFM@cWm7~N~cBP?{eC1_4&j0&w2^k*pFG6+WuzZ0S({cwCzPSZJGg;Y`VmDwKrfbfdQ9 zZuJV>s{zC2d?D&TG>6bgm^()Om2)+@3q<`*UTx`=Oy1PgZs7~@FE03Gge`n#(d|B0 zKnh2RY}<^z3X*m6w@ZBP9Z=r(v^JbFI{-|jvlO)cbz1Uc)!Bm8lk7(1uR)A11Djca zj@~RQ5Xk_86^Ji%Np|UpbqAB*Za5N5UfJM|7+0dLn4w3EdGyJsTA4ftWDZi3{;*P!1Y5 zM7ju2!oR5JcS2Vc6&2t3vbBID^(4s7UTg7sA-=ioWu7BLhlNn2dmz;oowU6g+}$Eh z+Qmmc%-n)`y8kX_@N7kc+Nf7`R8!O(dnjrwz%le9)TYE@6RDhzcRwV=L^0f?|2Syx*|2x zp;5ms5HQ&F2#p#xxAPgd>?jhm^XLuwf7W1}zl-xXo7fa%M2jQLYalkbO}+J3Q8V##p*7gDNW`)Q^O}Fg zXes>>^)3pUF>yGrwV{_+L1Ej!$IW2V`cQ8IMLHB|l1-7Wb6X883h=fhgw@pjNlNZvEitSaD0W&ljn1(zs);3wl&Iz?_(Lb+!k7qL?#K$FS!~ z`|FArFwdBAYP#K1r!9SmmufD{l)C7buPxwu9=&!=HG2RhLFy^Xxefh0y0Ed%^eKHz*7qtu>L0PfflzWezl zT$L$7O7GbQaK{#L@#hzzWs1OV^~)|5eBjtJ-k+^T`*;o6;(V5KNZ)exOc)f7|M>he zmgbc))79e{w2W_kei^lSW!&lNc}~r=frIje&o3iwBepu~*X-)KXV5ZUa}u$Q7wedT z1N(Gd8F5$7<*JO!QnmX;5MXY-VlRj_?+n)55;0A(?o-LfbHsFPeNPdIb#ozKpnlEH zms~w~d4+B$TOqe~wfa0khQ<7}^Mhg{AvTG~2x={{no?8UR;5!yGJWElAv2R*mA!@h z2C1r%TqKr^UUDSggBNl#eR_w$Fy8yQnIQQ6GHv`jnZBNUiyCsk|5&A;;8pW5`KbbL zodRzi;Eisw9dBtX7ZpU3T?I0M+vg~zg1ITCp5-DpXb@lI^&-?1&$pFA8D^{t%qeiy z#S2{BT-*37=6+stf$KB=R`d4&&n|a?*Hh>n;0PhZQ7@!Xj5Y+gf-~VUv8q^#ioaDiQQZ zu5Wa_p39vbFOJgVQr~Q;Z ze%=53_S16OKS;d++qO$+K9L%PaXTcb%%VBCv9T??ke)7BBwK9r)_E~=hw>TyNu&!o z3CoFAf>quLTq1U8A?|`c3~A)hJK)E z7hof~`kTVSwbYnb3Tq}}p#zj{?ug$e272M-C%9{=+5ATp*a=!5taCyaodluec< znw)*#rKcCKmkw9UvP9@YvoWK-7v&~KEoObSeZ3B3&u!qg_ZC*|L0W??)MLs*RWYtt zmd^XvSgPpcVg%z9X$tSO#H9S`&+nuPw)@b(sFa-bM;)cP*?DoN_nxmj$hp@ zMpdvWK3Wo*>oNQxKD-L}UBVv7yH5&vT(5X3lEOx{?7v2_0yZK;@}>8V;b#vBHMhzK#`daeh!DlAgQmMMrF`0{}2 z+knm!S}M|DiZ{DL=20NS<9R-?oxEC~0T#ix*NS@Pd-oA?F_Ma${pRUwaW&pfBBgXr5?H}uS4TrOZUWq(VW<%r?*BtA4mFjM#l8nkYL;V zI>3z5{oMp5^uIRu4DRNX^U?0$H|!4fk9N<)pVfE;oe*3Foy2EggI6Y^5U;E~v`M-4 z7UW?85}l$#EE@rZ$L#0NJNf5IJ46iPTO|}I*Zl{yrQa)(oydf8EEE%!LUn}_$ZRba zjAxPC8Zwub3$~d*X;hbO)^a>0^juBG)yU6Wt9<;lE`k($NvenX4r?pB)vaF92{g|V9?mtdP)}X>6?TZS>1&do z7NA-#MXlL)vWC75fT3wkx*gT=_oD?i?1i6HpwkmgY<1&fWZvYp0dMu&S^2G(-xRs5 z)_$=n=2z0PeksFdVOd^NA9a#TQ-n}lnz0AzmnkI9@KvaWgp+=oq&IIs=eZ~GvVhy7 zcD38ALco`ctzN4y?0vA$e< zNX?+jBigea_6&NegGtodGc-O1seNivboJu{Nh zX$U0A^5~sCL*x?{M%^K8CHAzlax;SHzcL**>{b1LsS?lv&62ouM1I0!r~eOBo_OK! zC1wm{cPjLDEB)bJu06G`$FC+-DJQK20#5zu4MG2fWpl1FH{{FDe{N5r(d&dx zTzDLOo9dMJc>nV71VV|;Ys4(W*84%t)lMRqjc+Nj>gz=chzL+(JS~~H{xk=u| z8DkaqiCZ7H-;%eYl%%PnIBR`CU(I=lv?63E*O!h{-w|pFnN_EyvL*(p^CoLT7H1JD zBz4hM>OPLFngt;s#f{NQSb>_nFq#24PZUoxb#37`6*R3guw7Cgou#=I#(1nOo1&y^i*78{*R^Dm=ue~ z?v-HrRVUD6+twQXX2>a%g5?EB2tLtVw5#gPC3m|HEquz?@i4H3?) zUx1jf`D3-4F%O8DMye>ajTn~%SqrBoy2Hlz)i(o6{-QQM=*G2P_6KMq{TcE8)k_D< zWC)sW37LtO$XFr3Qe%U#FjBn}&{3D?R{0310ro9wD~qvrP-0|)nL#E1%nmOwR*87I zm++Y4dQ?VuorK4{hVm7;&W6WSp9a)aonO;&3ziMEQ?NS`&J;lf85oZ(#%akw5G`qx zfM{=tfa$59qsh+(R^qx1ctW@o20 zr0>Pfo`U3??!N7PJCgg{$v51d?VcTM?X>p4(G@Xsv7nin6cQvk?fJv2upGflzA9NkS0^cf22LebXH>*M*i{ z!%5=gTka4W0-%Qu;s)+e@G4(z_TZb?{$ONEqVxy3yblYr77wH-T zAgP!v7{PP*i&Z?9{($Vu-g@7H#<2CrF(!jFFgF z*SUta<~`f9R^(NjG?X3pbS7rJK5E{lm_(7MO_I}u3|K(gU{4E2R`-~c%@>%^jNlFx zy^vc7KeQ|>v%63+3H@bu`Sc>M{)E(zGVwk~WVk7Q^Pu%pqaZNVuq4{GOP%%dpxT^) zOGZ}kZ2(+Q4wr=yp^&kDvP6L^51#+m{XtK-EVf~T)|=@QN1iuTt>H-YmP13E6w6ff z@7H7`dJNK|yC?{KscyD!=MF11|aUMxMCHk(l8E>mmeRFSulf{PORRXRdHh?5ff3Exe< zK9Tj+S)(Fyh9TYa43IrtAmTojvumR@t7Y7@wsRQ)rxLURd6n#wN-hXg5HS-dE_iCnQBZH`~!? z|4~sePWWKb(6ubKYZ<%=n-|q(^y;elL#;<@)9KzK>tQYs-enx*XSf!)o>sHg3_p<# zTG|nx+&aIk&J~{^_8SeflDcmp8W|Bwr9cd2x&WxvHg~iE+6ozGRc3&!+m}eYsKWS} zLMtGLudG)Gu->AjVsy|5#TPjtx}BYz?XgQ@N{iHju6<#d6!hjIr=Vqu7{ES~qMigU z(+;ve8u4jjlpR_9Do9910*V+ydBNaVB>{9>Sv(+DbxL4tcOdL$JJd$O%jUJ(T6)l~ zs^vn^S!)yfToIgN8pM9yv7oV|tS?mWVgHD-P6S<>o3Nj3`ii>y30kMMiO@~;qt?zD za?1OM`%;oN>Sn;{&@&d>z};2X8%5D9Uzwla6BhJN%xme7(Nz;0jEM~cV_usRZ!yNH zh}U+c>#t0_g&@5$=;DaLo~y{4>qXw&bOUfMUN7Vzrv@HyVju|RfQD5=03<@5Y}k5a zoMpqdPYt-NBN;ugQUU9!uf8f@KwwtpTb#W*ofJomO+gJ_-E1t;{YT?xv0t(opHjLk zy|Z_;ZXQK%{426o?a%u%GO;)tYf_AwQbjKlozzZHPF7fJ%9D*xl!Tdmm?1SW+NEe$)MR~cyndIM6kO`6;17w?aK9(Glhbt1i06^ zGGnKJV^bRVYvhmlKBYxBe$Yx`y>sk>6}7bsew_CXaG8RiR0U5dr`%;z#u`76DM101 z>he%Em#)PDeoF*A<00MtTxVazsDi`|_N7r>rc?rhPd6~8y}ooK%ma_K85?I}TANpw z;%q>6CY7Q+&FK7K^}uchF=i}a!XhtaDXR|N7@VHv%IzoCv-EjAi}DPHd48kcGq?ak z%qlBYhMTtSfDdOBN?aQW$Pyz+^b=_h5G6Z7;l0)MEpSDc1PLO+kzgyiB|Y+q1#%AB zMB9bZMGk{LArV(VOr zEd{qsa|iCo@!&o*U%@@kXXhMYL9<$P*21|&^F<;9yu@qkEe(qng%y%m&)Jsz7rT5Y zZ-?%m=bJMc|17EEx!J~G7ENO|%D3is37?|1e+i~L*Q%XV%z3Pke_pk=WE`J*N)=PS zt-XVjV_h8UD)RlxvY$B3`*gHp=6?QKL=S0EcS6q}_WOYc%HhZDk!~r~V5w_Np8! zlz`r;OEJ((1fr>h7}y_-p9t;ukrJO4ShtuM_P~wMpJ6>}Ub@{pNl@qkieyQ!!-X@G zwe|%pa-wTzZ79_*h&82CtrQVUEo@*vUzHA2x3omGFdddTF**Jo*}KhTCnhw)yw>Y1 zHN#}7L3}b!$2hVB+8p4IS!8qfx%_vMAImQ)lm+6LNpRm#Rz2%-jeGh^g@nQT9h7J2*iMrbhmp5`eDcAA&BIZM(`gnW^nSH%JAg zs)DbRGGfjJCTe?#hhA)|Kp)0Yhv%dIH;8#sgUM*yDuxRA9t%TfVn1#+W2uB&m>EfB*w=a-5 zPPVMnnIrA3ymp6~eBl<|9d6*-#I@d3iad9C7L1|_N6Vt4(khl~D~kX}dLy0h;Is43 zG5dQE13{L2*}@+fqv=Oh-T8sF?^X}L^^Mh)dFVZpd5VOnjX1mo;{5t=BUq^A}wro zGdcbbIkKoa_|&s!Mwv?J%nYfg7j&81(q&TuT1&6kV;}XuJNKke#k(Q*qoOL(-3wY| zwgh_KW8fpHaV*5)Iy!{z8$mY~po-ZpD~VAMWwFk7{;AZ#3GR}J|6{FvGWOm$b^{xq z52mm4E|+uIY%=q>wY;NEYRe}}C}3o^F!;pkYM&emud>3Ik8>38MBva=SZzI_7?xVyST@$<6}(rT3E``FhU^U$Q5B$tEg|rh+BG)@oOL zh~D|W2P@dl_lKC9$+2z?%UIfc?WMPZW2P+$Br15fCEfYbo53+xRVRj2bx0_2?U}Wz zKC086>SPVw6f{Y!J+ls4irMovj1S_ckh7Dsb{;^gb|pN?&bN(|BBpZEqnm}@Dkgbm z?<`k!o|6+OFf!(Cjlt*Y)QDf-)V`mE^yx~$-_W|?Gxglq_5o3IbJQ$knH3uaP8q&c z6!YxT%}Y6D`EF6fbATBhHD8TksnGdJk=QX+DTQf9zc?v1qCnq)e3K(y`-&#l6l1MB z&K=QeJEB_ci*j^~dG;Dqs|ZS1s{1#_hed0=%|o<%4+DZZWtK4J?{nL}Kca>9qLBYv zSo8ya`TpN=L@>ffwj z5c`jAssGKQSZeecQUBifcVacenhWOMtot#b7{8C1*_E|k5%Z9}Qo+TU_8qVM@svNF zp2?LTNflyO&=ns_`{orjd!n%N{=HHKYxugnD&$q(WB%x=^K8B-IznKW7B#Og{YTH= z4IxM3MKlE2<9Dkv2mJ;;g_jXp%ls>q`R7yfFJuNAqp6AMFd|QLw>k?Pd|Gxa=3&s| zQ%(c(C8ULRD?3EUQ&23=p%Us)F5T}=e7P!Za5$Hx$X&wHxh6R9X87sUa^z68RsP=O^pwG<|z#Oq|{ zTi;W}VvBVNW%WFw==s$UAm~IkE3`b9HDYdwm{+T;S2|hy){<3iN2nBrAIuM#n3jvY zHgzd{)tn}I7Xuv6foR36nW<1d6DKbD_)iB^9uNP)58U-^jGrm^f7-kexT4Z=NkzB7 zX$8DJJJlr6+V*e-e3~$aChS8;*AeMFR0JTEVucjt{G@OK7cvC^pZZI3^DnRdwamY@ zQFA*^A#D7QdR~qBUyUz{)tm_WUqfShujB`Wm*OsR_*=>=9jv_Z>!R>4;IvcTTSc^| zO4^gd_w7>t*+CqpMev)Z+vfNYl1s=45*4B;fFwDd zd|tI476mXxB%muV^)AZT5coe#TrMY6SlI+~+=!qV0^P9nxD*0|ZWkg36v_4FazgWl zp2|FFFb~n(+yhIMRHGLJfUWeul)A6b6zq6%zUGGTA7V*4{rjIn@ zZ{m<{oS0*##Ex3_Lua87W*;ev;cZ!^u-q%9u*mr8L?AW;zB`(lCJLw<0ul3eJz~C< zSy>zcFNzIzIN-5~Z4&HTx}l%KasdCOn|L%tZYJdQHS27J)065&j0hjDgo<6Y!aKNx zJe%K_LuZ2CqfpU~GV4ZQWmCio)O!jt;!g^CdCei{O}(e!oGsnGTJrsxgIQ_qN1aTL zQoU~%2cJV*IfWMee#wFK_-gf7Dvw@yl;xr_$JI%b1Q}@3NNJKR`sVUo0!@0wb}l4v zzN;py@5n*Z4PK`=o`0V8Ex1}*fQVsLHP@iIgOzQ&_(+4HIx&J_xL&cil`nclu!X;- zY+hNZsn?hP!a1Lx-W)M^S&NX<>L%>$FnXKIBrlZRCPi?iiuGmGBL=;P#gV}d-5giW zwIo+!|Dg)tpCtE9)h|{i@w0VvvAteVJpHffH346oTGeCX!(1+LD3M^3Tn`f`0!z$NN{9 z_peC(8_K^SLx$K7_Kmz!|Lm92wd!BsTH%ALMURBZ5BPintE1L-wjjEa_Thy_wq<8S zj<6KgX;sULG`DX6*9-rCl7r=Oa6`bwlz-!g^3jp(rIifW2wf{s20M`2f3$+9h!VRejH8R z4aq(jO?``XrZ&K5~M9eJOB zQX>w~I&3xmEw)X_P!e-Se5ew(vT=|5q%q{K%j9m7+y{P^g`v?(j0@6L&$toM?AAv4vcrHVH?tdWyQ-e!vTSe2{!)dhVaGU4>wu-iH~&9rulB^zP@v$`|f%uno0_Vj;zl1 zQ_5}%-Sy>6cLkHx^ttL8xFrwDsBHgq_U|920sWZiBgv<={gsZa+TU|PT}1N4Vxf?= zK_P22HM=yLn&(rJPNyK;aQuRZ|0;90)_y*nDa@O_ zB({}G-?FrwZ3Y?h0yD^%3uOuV9Lf@uF^94wS1X!fA51WVid@WDgegR-S+E#F00jsJ z5H)I{gZv#0RDX8>4LEv>&1bNV9CsEUh!~gWcL_y1#*g#}%b745c88SSief)`wwkg~ zlrG^3x8x=1=@V{OvfIXwAaLFs({M_ZDwad?uAbovzkcsbH~XE)3CJw{q9|_Ap}4^e z#SJ48xBsbrdH3dAzZ^>&ZNljEi`LeQu#5hy@7c?ZmHdKg|LKYw-8rBG z4#M?F8^W2%^N-RfJxAg)qzV+v^*%aMSi2%(LJ9N3Ki&3;m?cAeXMN8x5$2Qzaj#G+ zM}1Bdc?x`8uwIJMS^leKL008te&DCXiJ>DV`>Ke^)`;K?L75ib-unJf?5>}B5$k9+ z+m3;B5Cdt?+Fq zWxF%*08Yeg6@0)KxbsqT-b6gDLf0jMx+;)Wf0(Vy08upr{zY*}r)Bgv$77V724~U_ zQydkW#DKS7pU{6eM6tV&-aAz~E@IXN97!>}CYs8;E{vLgyc!dhR^VY1_xe||o46Ly zZa<-3cOp}X)BVO{@(9m7Hf+?cilu6I#f;h~xOQ-TjO(hHF{vY{e5J#U^Ku2)7BQ}V zFp|2u8z(z-Q}0E(x$Hs85nCi^Fk3(;gD9i~IoSr*2`|6gM{=!%?PS#^WgDfP?9r3{ zv=)XD7B4((Fpl~GXz}`1%5wy_ir*!F(W$wn(D;YTB#pGAbd?)}7bzhiB|IY~B-hv7 z0E!us=2&PTu|U(!H-V;dP-s+HP1&+C*qM=c+G^W!Wu<)^{sUNnz7{p^Mx}Q*+LWwU zTr{_$umbm#>b4=b#oa%HEpEh2$7&X~%)Kx#-kZH`EQTA5&`hKQ_~TvZYICynWuyUQb1AEb)0_;W)?!a!e^$qvI7Y}a7hOx|Du(_bSmBW8B z3E3(SQEoq(40tH|QAdWPu)e7Scc28jMm!)+^szDcw`Mm8c(1HeGPotW`TbVzc_kB* z1Xuh5`-J{qRIjE+?m6k0FM`hGdFWK<3!2-5p2GN-vZZ3UB>ZtxaJ84DYkZQP!s{C0 zAqzK-U%;?s>R%z>QX^xmwgc){lP@*$_Oo(d)bvdK*vga_U@NffET&DaJfXZ*F9uhS z&7`4DZ5bX6b7_=W6-ORy=)|(NmBec<;zvOZ9C8FedPb@2gjWjKz@LbiCT`q|;aje_ zd#CZFY`TN1OURRH>0Lvk#_xn|I$;2#sXuh{8Bvh(-WvQvF;78rKNuA%E0aS)l_4#5 zz)2l8H;4)wxLpe_Rib0_g}!%oyq_w(s-m0F4V(lWj?S6@46E8m(|byARY&ivv)Yw9?IYE>T_sc z>pd6{hEPIv6oi)5j;(spFv|fmxXO~o10dDAu`n&0&Dt`uvGYVsi-k#@%t%FI%w>uO zL7~qP!z{n~{c%t7d0% zYx1Z&K|j=bRS&Ng?CW=wMY=ULa@tRYe9^L^ZW8F6LBt3L0q|`B?scv-_qKZem_)ZV z^4G*)i*Ee7mE^tmI_S^w*NL&RoN7o{uX$_j8)`0e#UFxk744~?(mee8M zAzeabW#`IoJ@iLuQdkSwZFgu72yyBs&&%)wvYCGX#x>cwCVBX*dFR*yzTb_v1$=Sh z^dR7y#YGADa3XvOk~S9R1ZktGc_0KSUqfYE8LSj2px%0rfyR7>QKs zo)UGAYGXNN%B)L`{QXbdE<1u8d2kTJve39PlQBQfzc_hB$Zscuwa`#3g7xa(jdv0j|KNRd6cS0B@AwyP!2NP=(YBJ zOLCyfc*%NalHKNQ))w`0(E0EPIatl73|_PKolLE-ShKUWPCb6Do9ROb z_h;nS+B|5j4?C#`wAcFEO{%S;&^fbo22Q(N8l#hsy-so5;+4$$|XQ4(B)22p3 ziXkJk+A|{q<1uvh##{wA{7YU1Lk6v&@;DVN zJAMU6=q(4CU%WrBf=B;515Y099a@JtP>OQB4;}EOt z{=VlWpCVQ8oe6g0@IWk`1-idz%fGr^>XZqdO^PhLS1!hU{&bpX3jj8cVzXd798b!P7Tz4#G(S=L{)|656^ zU3bv-_N<#$)NDbB+UUbx7B`g=Qv>Tr)ZaUG|7m%ybbrGKoLq1~!es^;lKb!$`5^aL z0%`4x0hz)&Ck_LSh|P8at6=#qUpco;&8XTVxKdm)gEztyMD24)_Bl<*^%&2FrMF zRr_35Kynh=Wvk*C9lnnz(Ajm#gfcMB24oT@`2A-={cE zNY(ix+oSl!CkcHanQRG^zeYj~(l3rLai9z)ZxxTOG4bdc3q*|Rdc;V;`Tg%ay3QZm zqw6S84|NY}f#Mqw2wmFEo~aw**evnpx=;)}yVLi!(xjX-U**wtrbxKOkMDH3f#dEb zjTnoVFH4`-H91Jpeh`yU+lN92Da18?lOr}%i>>2JK^E8n_68VRVMH0ICd|V}vZw2( zsceV>cJdxV2cLvveXSlfn+__dO-G< z!se;NzX!C=>%GZdWjKFw`YIm>jv&hYb`QtEYo7{%UC%R!V7ca>?M*AbP$VU1ASuz> z|IAyAO-k_NZ2jnUEX?+(7g(*~9Lw>?88vlXnMjNYai9wMDQaRb$eiv=HnM7p!`PTB@jj6jYR@Ntv6?>aVC(9 zNybH=XRT3tthGkA=FhX%xUyP01`o?O%%Vk zcQ-~n-Mas8z%pGz5LfJPSX2&2uy%?ueL%Ey*a{5fPUQ1Uh*N^V;a* zfcEgJg7!s!^4HS+gnCK9HxAfxpe zVrkAy*dc-S)aWoXmD51VlLPZ2>&yY}1G@|sk_pvTD|rT>a25e`ru{@H0CHdvuMKP` zH^t9nh7O<;DjFr9WxFXVv8~dcN^7QqN>g!){}G^6F_v}Vv2dyWapnVEgTf+$k=~B@ zSppEIn@kBX4d+s}S_fg}7Igx#-=xUv@&Ww~bz?oNh6K{k!ywhJoPOvBVF70{tr{=d z9BMOyb(|VN7tZTCUhA3Hx_a%?yT64%Vr^lR&FV^pJ- zE`SZ=4ZtdUs@g_b;g|EKsj6dXEjXN6-+x9yvXQo-?k!qX;3yrHEO5fvQq9A*%LZhE zdGs)|zqcI>*upV6C~RKu#nCrB-n^!;d2OR@8yGex&kDD{NTjV0+S8^r^|Vn7t*zP= z@eq=z%~si%)!3Y94|G;_ggNE+KnG3+FCvpVd7%zmh;ukjL+fKcf=e{FBZ>kx8CuUv+Ur7yI~|CH(uG$5 zyV)iEs5*T_WyW3r39jnwl2UR^5g3y5OHhWihvh!q8S!t!zTPCx)u(e3s>|M^%ihY^ zGxzVW(U<<6?m7S?o$0Q(y>r5L{|ltxu)15A`0dyI8Y>E8kQ ziae0N!oApa|4gdHcWOIsy#V`pb1pWa`*saXvGnlYNJ^7=K z)j`yAySK+;G-MktJGKn|Jkl@MkDOej7Ob&*5oBrtZ*=;ly#Rn>elvM_wbF3R#lH$7hC;XiH@TLZ*s73~h+dh?+kUo`Q)t z$t=c>c~d;ZdhU~;Yi%dXXbJ!8m7AJidAwW>T8ZL|^PQyGuC?u_H(9K-_P6CG*&=en z?!+Il9SHk7n}3rz%#gfGaJ7RpVqJs8Kx-R9p^+M$Y4mILdWsiqn#pP1k5E`pP4+xh z%q+!ch<8$|@N_xYx-hc%u+ku2hF`?a0e%tBm1st0XGVc&;T#diqMpslFXGw4Y@HEF zML@i)=}*QjqPCLR=6Js>?2d^|&IL3+t}W+yNgUhx0P9>w;v+>GGtsc{S_IGEdnQv| z(w?fx`4>sQJDVQ2C(7DqNVFzUn&^yqfNu*2XjI3Z!}#`|6vfYPuI-FL;$Nfw>%55v z6f+{x9`J}tbTa>JU!qkPPmxM#k_Cc=pk%;#b3J6q9b_gNv)X0DbQ8eAod zzjBFN!!S|<3zE!OF(OeJR1sLEflNq z0)`VuJx`N}Gl~T<|1R~8gar`%E)HX5x^8l6v`gUUb!X2owE)=V*kCJAGVP)<_%7Dk zD@g`!(o4{c2xB6EO-_{&;F#{`vXBzh8_q3VQtR| zc_2`kkYO3&L?}kPzJahWompR!htu(jh*?->pXbs!QJ6PAf1@)cFb=5_Z%bYoAUVOi zg3@BC;;)JH`a$U*$P=g3;r@J9^?TwQs6#D!!Q=uWA`(W%)i&?d{My3z=xJAZ@fe>Cn(~7z4@Ie;W?SAPW{NeD!Ku|`dW`HzZ+ET zVjT@uY?w1E`HVswms)eg7bL8kz|C@dD1u9Abnt>$)W3I51yeDze!_p}*WZ+>f3IEt z$x#|D$5U0+&snN!X>&p1+tTSPq-&`Eo3cNt&Q@wdM6gi(G#!VzqU&?=%mMXXtLjrp z6K_jFCr2tQDx_Lz>trg-6e>rTw^|PmrA^1Er2eB=-m-q>R8rG*F^i{{(N;Gn7_p$*(KsW?j$z0p*@Vc{E?zew9J14BO36d*(tb6d zwA-aL#D_A%U{B8|p7Wv2EA_K?Z9oSpb;^KJg?;O}l%LF6EZ2ejeZ6u7B&)Jd_goL1 zd`maKix?r!wkdVtp8&|E>?z_%svY9&MY#w*qq?ak3i4L zU?JIp@7H??M~U^v&F-lGEsnpX#@?Xs_&`sly?A-}BU^AMlu{!io6W%GizxcG?F zDV3#9Q_ecrN37sY3^x=0KXS-&9Se5+)XAK3lZ1|Az_YL}hIL~6wx+Lz^_^d)i=RNr zsDM*G9~`(ixN&g?L=$@<*o@P&>pOTKF^XSj+bbUu2b_d(zcsp7`w5H6>~h_M&Itq& zxmioO96MuoLCS67E0(PyhZFHnuDnp7k7QH;e9jd%{fe1|_*2$F2Ygg)Q!D$4IK8pT z-eK`Qne|yMY(9Clc%R@dwB(P?n?winf;FR18Z0xz)~iFrn2%QD3HIy}P409TPUyYP z)Zx4JG!t&QBEGg847fkpl@!(j(V>mHO1?*m@!)`v*1};`ytIRN%oPuX1Z4CwYYAG!c~?4%57Jmym~T z*6?sTjeeJVj+@>II!q;`9F5#+CB2e^Krmf}jpt$-wb?eX$MD z;{bGQ>I?Ex-$VZ*8ctm+)iOZVd}Nv+<=hC9pF)fg%a&cU%&V=urtE^5#x=`M(4M-c ztb$h@$5#Qv5H6>eub`=Rdwz>}=-3)pDk5mNWdSuJ@=kAdDjX&i%BcTITOx+@(n~FN zVGXLVZ)8H;sE*lYeMc2GK{}>sU}1kKlEKePMDD*-pm|vBctC-Ej+`ALA*0It$@rVl zo6R>km#+ zOmB-$oFkT4h-c8a6gJVvP1?$$BN)aiam`GFBgVGKCZBvc^h-?Oe8`ZHOaPlcE~7)- z%H47FzO@-BQzIJ|x?Rtn%NRi|2n*C=z4t&S8z`KaT-M1>4qJOkI;HfLXn@vCRnJLc zd2oA0rt&GruY4opV6Sf@KV9I?);oL9dLMEUA5(9s^_QRks_OkKuA*#(b40adpp}Qj zL69m%aoW$sLxzx!mBT4mcs%UsFCmqo_o)Ns^lz|KdrJCPwg+twQ%y8g7!V2TxYqft zpTV9knnvf{q~>lqiDcH z=&^v{vUJ!$JEbo;@CH?YC3NnWwg_ay&{PWzdhTB`8S@+2Ll>$>N^&t#%5^XChv*#y zrii{Bp{mR$Ru|h26m^XFH!F8%Ga#wKua+N-*?3>~AHrDF<)sN|ZyS+qsp3 zMS+N%logz{g-*2{#jN}P4*t3Dt&aI?9{i$-(#B6xtFnS0l#AF_u`gJc|Nj90txo?> z&-OoOtLeh6fM58z-A^|vgH~}#Wz8S?Pj|h--(&h8wX_7pwu{k42*64FdbL7p(so@xN<{O~#LD&p$gKK5snm1@bx5 zA#Xg2tUsUnziY)Y@c*;pG1D238?)nqCBKZvWlDSVxh=rd?P_n#(;>r9@y|CPecr|| z5ZuPra{l2Vzx1tG3pSPV~v*>r9aW(~~M-|8@Q0=|B&vx$km``iFA7lw?&visS zJ2o7?bJvD9ZrZcqaMK>w`nPT^-Q!mBrVZ~TPS|i{XD8Ar2wtZz;@_O;4dUK3{zcqw z-uN(!Uq$DJqq9razj?=f?hQv0TQ+>W=S6a?CC7OY&!!EBh$6c=o;i;;GgRZoWoVKTPT_pL&f%w+P3gh^ddafgu8gar*?auC*+D)5gYE7G5%Q-~k zo~b1`E3~tN8ir9)iNN$;??aR!CG=x2o)7ekb?Zb+OU;5VCg0hI%4qDTFep{)anZIy z&73!NgMcd)Z^X^FxA#Ro@2!7x!Cf)$hL024h6Ou63@(0mD*xhflJoZHY%%Vcs^V?_HLN{zG-&pT z9|uogv|?ixG?VgGDr=AmhEf4v!VUe)+3@iP9aK1Kt=9Icj3_>g z0oV1?zEIVH#J}muE=KJ$t-VpnXc9EwXtV;!?-6auLXs)-ofy^Zlq!B%;&Nqyj|Day z+4-RZ{M1;*k(tZ?8q%IQh?_I4kLG;?x3{nmcp$D=ucuP26o#dYlyW1b0Astn+HmB9 zm{-6X7OxGOTOH7V>`6|lkzpelbThSrq++gok1W}FLDrNl4RMTBs*Sy`aE+MjdtX@J zxloX9!Cjm2(#R0dLq`|=NGhcJbMg%}1i3~;9Qa??J$u=R&8yk4|AS!y+@^#Nzx4Y! z+Tn|&uJcJFR%&9P5&semQRVgner2XxmtID<%6K&N{t%s1&sTWNLqX!R33J;Bs_i)B zpc-Pon7LhnF%q-eS@sIi7CP3I`_=c_UG}aL*MozImR;aZFq`2f^qPbtD?v9pd zOMfWcZXOj2G9MfHXW2WsDn5uZz~+nAPfilggtOrwW2x~66g^=6dCV@gPR-Q5cGH33 z%|rC$x{_W^8PJce^}nEfU*dvC{JZA9B=Ni})@f}&rBDny?Mg5L+3^=^tX(v+7_-ZK z)h=qzTvbS6ZEw?GgWBv$-TX9?YAg{Km!89pd`{|D9=gr#{p!DrUH=&l47z{syb4LE zUAJ+jRz0dCF(L~5!t@bs+1fi?jq7c|4H4Qq_rJhFak*P3{8GJePYq(x#f-pSO;FNO zy@gvp&NzuXq>5Mdh~@6`-=MQQopO!Z!fszn@i13 z@~JZuczcVQui?`=`NpB(K^I{;ID_Gh-K-b(?b2`F9`kIDj@jJnA*>i3PaHo8Vr_|% zh17ZvhTI-4ev0-K*VP@1nt*O^Wy+^C;7mGl%KmC5#d zs_3U!ybJ4ZxDT%7X!)8_T4Vh}ZSXU8b#~imQZ~itcowTxmi)Wu%#DF=VE!bcJ${H8WuLfPr=o@-xe=5(UFI6Zg^~e+J{HSkLz)Yh7w4#Yt z1Vn-*rVG%^a_bSqAV72u{9)mFm2@svKpcm{yhLn z;4~z4=*FV&^3`qK!g6AL3RNTeTj3=gy(6r@*bgUEZL;3tw)g!f@N%sX-kwvfS5%YJ zW$sRV8*)7FJJ#toB;}Yfl+0kkEFnihUCjTvId>@3e^) z{pR61H=MdDl8a~a;+ncJT9z5Bh9OFtSraTxTobKWtF4?e0t!_Mh0<0AiRM(?8ch{% zM%Yyr!StupoLC%1e|jP&TAof6zRgHx)|U6~MIMGFq3WgN-DR!?a(5#AI)p1xA?c;k zb#@6j zI7i2lS8OIRyZGISq1G>DSmYQ8z567utrRb$E?o;@cemEA#laIXZN*6R%#OZY>27-< z?fO?!xy$+vS*^E#)$Fz&ko%uBB_*Yj6$NZNjKy-K^W5_Ip51l=(@yX_wx3oN3A&1o9CW)tJB~O9o^q?Y7~Vg!oLSESGoJl*4%x-ge05tF z^Ok-%1rbd!Rab!Y-SnhK)=ODG%}a}bpxY|2)4~)Dvp$jjevThbMO$yEYpL}TSLG<_ zCDUuo`r}a<&L1GNp@OMMq7p^cZKSAr@xO^FPFXCzr;}o~ox)EH2%n2I50OSfE{Ku? z0;Dq@l{1|2s3PrhduYnJl{J;r%ehXHs~VTRd=PZ&X;vB;XCH}QeI;=d;SlHksy1oA zSp4Cg@mpst{^+(lZ;cGwVOp!C#~1%~!mW2EhP{NR5bYP{;lz#S9r#9C)4PgXAMm-A zqUqniFeCVPMF-Xl@$xGgh7`Es=UmYwmoti`K|eyG$~~6=^YZrk(?Nk72O1!dUD@U@QFKVU02apxf9%g z(2e6(Tl3!kW$#_!<0`KE@zK?4y_RJm8{60f$lBP>8f-@|%a4H3+Y(q0BpD2t%4=zD z3-s7%SH@79nnzNIAs>e({Xt4vLrDX9v`$J>pm`Vq0aB8<`6v01M_bcEes*4U5|WTM z3IFezGjs3UyLVT**RtuaCYB-6?Rb6L>>>QtBjR_TEx8hpL@ko+#^Vn$Z&cEchclk| z{#lu_wlkhM0SPGSz?+6Mo_OiZOs4~{3GHbu1<-=FWB8)pKizgTiqC+Eh-jO=0(-dc zoc-&cgO|TL(sn-bJwJxHIFMowI=TP;1^8e45d)o{!H^Y*1hS)NW@f@!^F0KC64(dO z9di5+GEGB%6=+b=QUAqVfctC%x@AN;hT`uo*|3-%VMxd>Gvu{R+ULi<3Xy|C*#8xz zpkBeTccUO*IQ~=mec=VU{q-v=z9^*_Z8i3`mh1&`+S|JSc?2NN@wJC!ABgHn&GWC% zKk^n}fv5R1M-13fr%*fG+b8h>?g^`H``+MVe-+J`FhQCh-hR(-c z==%F`t^@H2r`C`L?*HPk?~zp9xez-EV#mJ4&&R$2mtim5(zgFc$VerMx#EXl$v;*< z_;0K3yAWyK@x_T7=z#dPXIms+U!Q-&*?7Ib1(sgRiPz`96Fv-TRMGPYKi}Q4ko_t0 zw_t-x#|bRAi?`L_xu)erTg{Vgk5iqe?`OhdZhO4O!G_lFNr={ae*h|wgKmkDmD{-oC! zr)vDTWHPf@wpBXqZJhRIPuk6S(!Rdz9{{FlCeO3OxN5)(zf6tb`OXcqZ`P(hyERnwi zA63kAIsF%7D}@oq2w(Q^E(mRRzc-HhbUcDD*ir)cAw=T%(@k!FbBpcYPT?QGPI(o7 zANg;0{0~dNll~6rchc`A|DY4TRr;OqedKR;!fAov@yIzgzI7Dd*KGUay@_Bz6SOvDD9~l06-lUv2__CB8lf{~?0!-;vXRYQpbOg{PP_Dz2uK5zbpUslz%cy)I7`Ghwyyt89F_| zC?7I2On8qGyr-S=ASNGw2(Zlh(&ykmNbzeO`U%PLrH=nF`R6(QBjh*a^#u7}b?_Y^ z|I3d5DEYtP_$9pteQ63emt3KM&wt!($jr zQb$nTefMEJADh7UpKX4c@hgz$hR5O*zXCsM$oN=`8DH0r>?O=!Grb}21O(|R>&Hqw z>9-@yEI*mw+nw@~`F&OSP54JPdh16wY>i_d`AMGq9F*}5dFt4GY_Ay^0%F474jFOt z>qrFfTg)V8{K}m8-9UD1e!lo3C;kDL!^d9vu|YrhOT0V&GM2F``F)Z6uR8t&`IjPZ zDtsOJBaXkD{12(}0X!*xA5iIS`uDda@F89p2D5KVC4SeozoYV48gXpFAmF%oSGLlj zhy_)OElKG79f1|Is~w&Hk1hP|>j&B%15$Z;004hI%<<#%9QrBh@rdI;O#W}oxASv| z{7e7%cQSttz3)DT_e}Dcw|#^>7!|*}o;d!icl}Ni4tx}J{Gp2!JX#;E+W=`Czdrw7 zIhFSujOfp|Ap}nTx8m|2c;L$|k^n?1kTXO2C2YDnFfnhCunJ0jgYuV62aYMLv7{#Y_!dQBguF^^XQDdcM( z5*&Z@`-=X%-^=yQ@e{z~4>|sO$zO{NAw(C_$I1VVS8V@Q@(()kW%`H{pW!?4*GYIz z{5JA0b^J2@JjXB78-AI75DYNsdDVfxo!}YtNqDu0Z? z_Wd*Q6^iewWQOcZ{_LN9-%IFCVftz=#(eI?GhG0Qqg8Q`C1i2^y5GJo4VDIZA|>?V zpCH!pa;(M1`Tuv%UX&C5#}xh(tXC#^m^}wQ+~ds?syz13e$v4ADKEaZ{ji#)tGro%}qHXIFjzf3X37ju$?{e{G~c?oAK;D{}CE6tRx~4xL%# zcmM3mjr0vZ>5tcW>Hh+y|GZ95H0$zs+$a4bIq9#Y^zYK?pZqr`{ipEk&HrTK1?flr z{@H*}u)Oe(8{yyfhV$6?4=<)(J1rZ#v*ZFQ4%*6vr8e`Qp}9khG^5>~)3(0?N3J|U z2wtE62^oO(z<)Q3Vx0S`WYTvh{(2q7btg$a#t(2Ub$B&cc*gqD)%ns9#rlV%I#KoHAlYlWyb%6a{o-Z?^W*2 z${kd0r*glq+*0MPRIY}5>{*7Z{a=1w@k6-}Dfb@bzNp+`3l!KdW4g=TeWq{wwbMu2%l@lpFmT zhu@_9Y31%#u7-Ppmhu``n+ktTxm%Unt=#R()k)GS{Zi%r%?k{#S@{Q*`!3~{Dfi!1 zy!R;oF$MQq%6&n(pI7dK%DrF3|Cn;0Qto5QeUFN#>8n+E7ASrsv|qX1%6&+=w<`C2 z3f^AjA62e~8&i1ZD))CP{8dl97nJ`+ir?*k1PKX6|Y;pKd9rY z_lK2Rq2hNdH?868aP6w}`;`B%^4F_$2b5pat=)Nw{uh+1-%sk^7Gb{4SNT1Q-7TZn zkB;3i8c*#VNTstwW1|Yt*4zE#@67{eM{+Qp93M~K7#~gD5FbvB?#k{aP?_xb(CDss zc5Ey@JT|&Z+#q&H49i4D(1^;O)IfG@+zFR~#!ugZVoCQ_1u59RO7L5%}m&pgb>uKn0?&@G9&7wuLiUxtjkfIN-wuo*#b>U63 zjL?H{dTzvTleml%;kOAfdy%3`FrZCHw?*{lq~Di^j|6Dh0Qz8?iXRRVtgQ# zSg~qjM>3tLTp3?Jo*dnkf}75cuZUwlkFKEjs;g@ad;{6Nt0hh%Z`H=8@l-OKvQaOW zLCvYm03lCh_(|rhzo(_QYfDd4OMh=)Ltjh(rk2i@p7tiZZfIT^ADtK;29ZcLkscmP z4oVKJjJLNp_jhjDyxERm=YsPREf&X1)1#UYT|4^`T7$bvREyQ(I@H}U*cL*3zHxA9 z^+&I&|Ll#|Y`Zsd#wVS6J%AV^_!~kk&q^C4j_t8j>&IYSj7z&DgZfW4%3zKj=<&oX zg{3lvzuC|eWZS^hk(W1KTr3f96U)U#Vxzc3oG5oM>~PbYn|C%d*sDqe<;Cl3=nA%6|h2@x;i?#I#+6_xDds3=NL$Oted5Mhgg<%<e!0gM(y5)c7C>3V&@SwZ}4leq|$b)Ruz5E6o-vNX3S{vAcHe%%rj$zcPoy!1Psd z`+dVeW?&?pkeaD8IYJE(eu@8*uv|o{$b;i!erxE&XPIla*@jx`t-0Hv2e^)JL+vIX z*YhQg@Zl*iJ<{Gw#F2k=ArseS#zuQ(S8`>1^O9{#bXD25ZM1c4Y}>YRJTxZ9w=G$+ zBEHy<@?5&(pf!lj*(S9PrJ*Z$e%M}~BtP+O+qNxv+wzMxUUGi@;^nI@?!WMwYya?% z-mzij>TTQJjxdD!=WvOlOA;4~KCbV1=*x%Jum>|}GpO%6j5c8hT8f?cOF<&IpC6cC zwUgTW(`p~CT{HFez-2!SC&zbDS9J=_fzus@9=&oXyIa~Nt`>p1rrq6F^f&Zu>P?V} zccQ@~bXZ--@Hhb{`F`emhiy&ucQ3u zu@61%y{mk|_S0OnGJ}Ehx3(ZZPk;HY<@Rf_ONJeRGaFdH0uG%2b!Pv%us!$xWckYR z9ci!l)tA#>zUyfGE)gHfG>wgn3}v$^X_}?>rZJ$~JA#64oY=WDHEsmEiaBukN_+Hw zas6G-{LE8bPJj8@_P5alO`-al{m2P9QbfJUxY!L_ASu##+6fCGDRwElfVFvWdum-( zf$^LM9_jY&?}NcISatc~H5y>2-xO3n*Hzp4*MKLrT;Yy^VnASga(r)U^K7U1;nf^Qq#VHw%)d2LpHB>&zn+%P=9ZrRKJ?03FjHh#(9yxv zcpvruXn?LjM#od`m^rx>;=i~4WMKE)HEr+t&WYGpcbxdvPZ!<0@H6LLdD-Xt7A~&& z^LPKs(Q{)Mm8I5n9BpZnoPUmEtaen6)sD+KVA6qZZ5Kjb0@%|z{0!7#l17DBG}6gk zspO8~6nA#R)F)}5>h@8ClkG`!YR?cRwB2fSP` zWp2U<3C*Lib(EH4r!Pf&2-9j|{{_+>1}yh8Xj(k@^jyhQLPyNQLk< z-k8N;Ix;yu_>{rv&7b5aqgquU^ENTQ>6tYb$n;d1S4*hW7EWLJ$O$t!z)J(%M24)L zG{{Yh209x$T4by0$E`5(UVE|=tW#KUqFM&2(rApn&=e2F4d36Ws#FvF1(d$@ z!1m(vsZZ5DLK3__tzm;OKR#Q8tK%2M8@IH!qKWQpzq-W-dl-3H!xJK2{9)>srwUD8 zFLTVv!0l00WgYWx*YMbmBx~HJiShB(ePh|=u+qIgWoJZhOzkQd`@#b1g%yaAjo{^9 z$NV=4%Aw!gb{H|eq#F@)sWt))f}N%(WcyRc?Tnq`<8ifcQ1Ll1ysAnbFqkg-sw%ky=3C!wQ^8NQ zg_DmeX@3>67i^@pF3vN(U0ue}mR*@DHv z`CDi~t77t01|*X-cA2@R67&0J4GB(94b@-W0rDNNY8W0$X0SRNomV-8#H$PlH}_vw z#^q|?f)ikVLs#ye6*{|4w@TG^vtOh8KIWPto<|mtKQK z8}pEAL~*DzUV2y?f}h-<^QF&6$R^<@3!_7+!Otnl<7DHiaqR1&QS}D7qRnlI(7Peb zV2{d?S{ixxj<$!9H@TsvpuN@&Vb8ZAB6xYMKiLKAp~l0=Hsn#VlN|r5mK!?MRy7)H zbK3~Z;vMas{SBMjH+6QjboS*8yG~yIx$EG~QVz`T8fkBwzVfZ9J|*Lwo~7+cG9k=8 zFuGKO^GA&bONg>89ea#`o~*r4Q_bTs4t&FE_MO6ZH6S7K!}hy_&$fsB?AOWVk@`e8 zp!ahl=8fX$8F_bUn9>i|P zD8rYA(G;^H%P9mt9^W+Z<;hA|_^h7>Q`zLuaB8sEnUkf)Qljh(Eda6yoRpgd6{s(TPlIu!lC(+okI};Ta;oTp#k{ zlMLq!`(O-#kL3yWKoVgn3j-M_i3sexu=src0lhbir0+EclJCV^8g9DZ;e zb7Y=51IlwF84AXisNnol3sgqOMmHNI6(}MX147{A^&SQAom`Q1c6Amgwh;7kd+4Dz zZ;|=N%U^1N>8X|T2?qq2o8Uc#(-QZkVh#7$EVh-1jLuGU!?aF=w457dM4jcGOhic zHFAM-!T!J9A^o4w-&s@1`rEU?XFT=J2^_8DZ2Ix5d|~Rt8a01lEP$B8sH+is^08NU z55Uw`A@t)KdEi7MZcyN**BCv8Sz$!Z`p;&FY6mmd4(X&kf_|UJUMvYT%MGC^7zEb=hrKY(~@Z~(8(k`czMhDgG7A9 zzy0nEGAI@=mpv2UVzgQ*S3@3}xCX--$*V-#=P@ z=?q05x2Fzbhdy@=b7DB888Q5+3L!6CUmR=>Jzil&4RE44M0ukXlIh^|$@vl8U&A6s z=ls)_j_$sz`f-Zvrk0h?d0ZpObUHQIt(@oZVmS_s-_g zTXRRV?&oS54W6I1lgjp0>#9@ zKq@15Te%6y(_IbTp4U}#eM-{I7IHJmly&g@)EMJoR5d2qxFLsZsBRRBcOkDHmCMO8 zt4T{@m!dCALeR_gS<;c8UhZk;TZEKbqa}OY^j;9(A&(a6EwCLeM0wV-{ch85o3>aE z?XRC9%r@62k3DtXQymY^e|cb*8c!tt7osS)6ef@DOMl+72thyF_h~G0B6idH9DXf= z-GZ7C{n`YM$eU!OT=5HEX%EG39$zuZ@T1pewHeWmUXGYUZ(a^_OW?FKv_51AElozQ zTib>9gZ2@RV4cV~){LBV`%$-^%15_{o~brfZ+-VS>>L_R@^aPOQ&x3r7KZ=ofJ&(# zbW`G97Edw_{pP#4C$N03tt^m#K0qO7KLu-BpUo6iE91Va=iIBSa`sVFIU6ZL(9iM; zOQy=7B~D?4(LZaerjb9@;rLU1GW=2dlfa+qDe$LIy&FQUBin5Vb{?Ig8;8|LXZe$# z_OsCQN!Q1m65)s7fXV=bxItGe8y+TSs0yaBh18{^C*+_u`jMb*2+1+$#*JCGlHl$fu1^ z?}W~E9#)bZoc@zL06sXrwUd^AnEK*58pb)|Q_7CH@=yiA-lhT%K|hZlO1PfRhR=Q_ zr@ZM@)-?WTHTy1G?*zy1+P~{*|4;S+A-|gAKHyqrTlNFIN5w#4PvHQp!1-P0YVUoK ze zM{%uJqkJ3C-AwT#?&R?Ec!!a@{Cr2x+lZIH91ViF8rr`h_>;5#&}M;mcz}y)szl0R zOFp?oo@3JA)U^dWR@}4)r&q48&nZtPRSxGCrqYPwri57-f*x+ajB@kv&%n6Rzj%!p zUYbJCGg)~W*f3sY(Cx^Z5yeALaC+4KJp+%Q{M*AHMm&d}278%(!NHDD`l*iBiy3%5 z<>y5{x%}%P8f*pd6?(h2hOn2`%LBg)$$w#1%A(EB#o*x?L@HT+bC zZp5cF{WnH0Kf{U*&g zl1A{EGSws5D}A+@YbGEBJzQSC^w^qWszlidWP9bJjFmzN`q;kkrH>?is-)Sq!bMeZ zdenj6?seogaAVHcZl~Q*{j@$u#UUZ?r~#n58J|OiU)2s-zvcepL|#gz%9%9lMyvw4 zHex}2xq0Ksuo2aj*AV5)^5(|oR}ywRf-O}FKS6AEL(XiDsRzQj)M1HwH zoP*ydzo!Jh_dH{FzU`L6y=>psk-_t;_M6!9>&9nW9@B@*KyE;)V(QGQ%MZG4o!Q;Lu4r;X3fpUui{e06*??IiANY3^^t z!)4QV9&vSLHP=rYzn$OHgkSAfwDH^dpGJ*hqaQxo${@nPvsPpf64uLP9d`bRtelgCT%YUcd zaU|b9Y6yCm{~78JkuJ4YK>BTELbuYbZ9?GV_9_=&tzKX17POPa7jC|GOL}-L2}9nV zeV_W&tvyH1FuWhTcCUo-iL77Al`+Bj8{j-UfZ|c$KJRAA%NhJq&BnPfPIRHZM&u0kjIu)3oFu0BNf+$ZLx>J0vjX>@a432N|^Y?mu>hIL*ZNBwYr<0$q z@9+5XQ!N3qg%*N(66GhqACglauK{MYn-))U;h0^Xe)yerTO(K}IgHhkw4!&nTrruH zYkJL9bvC)d$6u;**4OiA!&Yr<+MOD>zBQGk59;+!q|;;L*@Rj?-rCa8x2310zq_Za zuce8)ojonRU0ZsZT5!HqZ*Mz}Nb23v-QCrLuhuQka9X`1KCb-CWhbAsZg~{zL20)d zuL&K-I!|7?OnV7<)mmWrt~tHm8>_C7{V84kh1V;(&Re0)MFotWD_VN`TDJB#bT(tj zLT7JZ1I`dbcLX0F!l?el@Nhai4qlI@ZotZ|owVb@7`*c?T{L4+^whY$DmXZQ)&AQd zKHCCcyByoOGn2~3H^$TBsXe}jt~=ryTwZI`_n@Rbt2Rg(mi(%M2Uo$ICObdpyGTh| zztTG~lDoAlI6u_)qg)`-zo2%|2SEtR2tvSDhQ~`!m3*vG z^DSPfJ7w}w$MQHueoehUM*F;V&onM}ppQzuwd-BGi$d6!YvlUGg7Vxwjr)tL`Mi*V z`0VkI{|)^$eO`&TgRn8~`;E!K`lwEwM`zEcn0++6d*X|WRA6v?YJXJ$eAqygcL_jn ze6s)fCXyHRJ%v*yFLl)3zlr!M&qK=n-kEz6ZW`;yIvOu{6Y*E}pC{vQUVYGk@yAiL zYqTeQ80VMpZgtu_8;5`L5z4^&WNp=?FkZ@M|6&5<0m`;!PGeX8_W|561*iRn$ zb?ZX|mG@R%{opIF{@J&N@BG;d_50p`^>FFT`!9C-^X;Np)ZnfX)%Z<`J)mv?Zmp}w z?!@UAt)d0z_4J7?q6bg?q8n}({4JtM{x;(sh4kVr#c7hUdgYs5(T=yBh|!C%Zv1s2 zMjyCCXa4ZnKQ!Arh&Q9)RUAB;kmtn^-^kk9DLF{z{fy%&i?{>wmr@Xn4BpZSLX-ze zO>gK7I{Ie&YCBJtBTfpjZUjB_#Z-FUiIU<}8b^NK#KDCIq}_~MH5+hArs&F_a)a0a zju54M_EtBZ-TCN|G&{NIm42NEf6T3bHUvwQIhO@QIxES+;y&ZmIW0+ZBxwDtsg(N_ z^5_T8`8%%h5xvZzfKA~(c5XQ=5GncI>1w>k5DZUIhoGO=_iEsDRG)s9#~In9J91!| zaq-z(o}p%0-XZYwd~L#oR2>nBk!)K0Au%Vi_`Zo;A|huReOF5bA0MfyEOcI5A^o}= zrx?m`rQ=6ZBhqWGjtNB%k4I{7=8;my(EdMuf8jmNzkXNON4I_I)6f1x(a$H>W9wv{ z4_-dC-th;${^jzC)cB3&g4KU;a*3INbBrH6H+qxCpdn2{>GH*S9RhfD_ByU z8C>bDVW_K>Ve6MVpTmZ27O0YMzlx-I7Mx#GpAVZhe&N_mcj<#)>P*ZK^z(Xu&95qx zU%p3%8qyV}zRBpGU$-B+@S`8U^YHen$@O2AsI;vfM`TXU z{vnuTi8(gMVh@hM{H~Jo15=X6n#uKDV?$3*drMFM=7y^<@!r3sv$>_Uy|blxrEFJM z#-ZuV1Kx06dI8->TnmvOUcaK{v(k`HYRC!wbn3q68S5j8^iI>TyF^ZHuYnngINg~uHf>%X43U(4bEw^QXy7PU0+VQKIhY&)zAFm z>i2Ixvia{D=08-jzWe!5g=MyLc1Q~qD_vcr0p6Tn4egnkMZP0T(8&b?CNXp=+4_j zhk#G(ho-UqsPD1J_R;;F0dP_3*L>en301z;HM}2P;*++FgGPEcb#J+1XgrH=_BIR- zqAq9nQwMpfba4K;<|p$~K?5k=<6~G5m>o)G63c0{g8Ue^mCvoi$z2)uPzA9gczv%{ z=hNB4S*8U03581wJd75PYa$sy^ zWGI_W4a%Cw9g*cIqbYYumb)QvKaMSE9;kA+24VQA&WCj)BEfdQ@rYhNmWJRb>r)?W zBvTOPf<}9Ae0B7FpMvE#o%8!O)vo<#lgJA#nhGr{cH%-(5`tf9{j4U9M8ifksZ<2V z=Q^Jsb;aJ6x7@YOGO=fDXz+pyR;cZkw9S>&OK^PaOnETzaW%_>M=OvJ__%+{yBmq@ zYpNtnO_jpe8|$6eff~z3mov5mqPmCnriL@Cu>n4rSh12ABDWG=V1EVr z%C4SfS3sU9UXvv_{c3$V?DNf-L>}gEf|}>)bFU~*U>*}4g}kH>Ul@%KBuBCNVrV!% zv@>oPJUf%a!^G18lS+ogvaCE?OQKd;?tNr zc0bK!y61Lj@AEFqu+ywCe{F0R=5pyPV>F{{e$66;JyIk0gXr@1Z7-*_eXfz;4=aez zzy3q;re6P19Ag88H6_=`;PR!;54JIo0}EagJaQQzm1ka878aCmaOLf1D5b=AfO9z#jFCm5s@V}8K=Vp4E?YJWNdlUuM= z`Cb&4*mL)obIF7)A9MV-QsR>sAU2W&Dwx&zafZkrkDnO%L&tk)k2?B=#MQy;3h@p- z$qWa_FZ)w^JW=M?g$4N8gkF)D7#hvuScLxUioDC|L)70ob9`rVdBS|j$;p#k|ETg? zbsFSJ?(g@*cVWC1qjw!Gn;IIg>T8K(SB)V9O2%>gL+;B9_7R=W!P;0( zKge>Ii#P32dtap#oImTiKjy*LNR6_MD(`leF!|&084o@ue>~KWYUJD6g~%Vvmj|EB zUtv_T1~0)HOy`^T&9LsWxR+pUW*jSFL+BUYZ%yC39$$@53=bwYFWI)FX(E#y8==9K zZA&)9tCq-*|7Nm-8#dg4ctfMRHf$J8k7a!1s}OzF;po%llb62g0Q3beuQk;qk5ku2 z+(}tJCT(DkG76P{*?&*yQ;3!s*2rWwH3`hr>}u{M_^t5{&M(*cKRKt+(Xe4dU_+aT z#}yoZ!1lv+benECok`;0_}9~TsA?}A^A&>>QsYlzz6Q^4T~#pqZMySYr_O(uxjP;C zb)82xxj8iL`Bn4fPJWfCxGY{(m)p4wEI)N>e$Ig}J3FUNe%2WFj%?7O!QvOj@%a)- zg36u7uVc7FFJ$5N1WIrIu3EVIT_@**5^fBM)-JI3~;C>yKO&6#Z92=C32>Pil}^Wp^@vO3iS+)&YM)$&1% z5#oSm%rERrP7G%WRQwXPzQsA%wGZDH!P%qTSM@iy^!CL!_(yOb`KvhY-48IB$s&i& zYIoI`zzM8>*16=70Xy@9Kb`6a}n8uU4XbM9LX#!G4FR0a#B1fL4>|RfoFL3#+SMw>n zp0BsRwPAB_i;rSeA{GKZwQst7?DeotKXDKlf>MUo|B|e2A-9oovA~3Piq)c zp1DdQDL6f@^>L?uzH+^^cXj^Xfbv!2{VY8Y7$siaNvu3vp2n|i$b0*{F7qq(;QUqg zGUM|$<{8q$gWPSwyr&sSw)3=!yFhUM)TDDWMrwcS1pC!HkY~a9tQy*b zp2i=~T#n(%k;99Tav8?L+$~se{sj2G2M;u>8ee$+I#08~5X@C9MjIZk{>bxYwLHuA z-ZN?KXm_lcGCq@l%@rPH6{7yuR#tNV(G(rWWOd}Lmgd#XNK(FR0ivlGzi%)FEzjCY z*ZLY?ePSCU{{zbt^qcnR8&IBd|ACgL)2<(DE9L&>gc6kk`q95(3@$Hfew#&8;%gZl z%+bdF*n+orwUuhT#jFZ%Xnk30+5-XV3%b6^VN@knhrD>)V_b(-f}{x56}&uM_UGxZ zKUMO3vu|Ae;r*z3KghJ(kF{0myjpFadd!rm+mW;`$#2F%mpr?H%fHGs|KKanh1S23 zJwhw5+?2%yTN}A6kOI?(4@w*Mw=aFCvwiBvZo4tjfqM_EEP*v@&NG!jzdR9$&y`8x zyqN1?qtS^p`U;+Z*ZQl|-@a6@;qfgkzxfoq%3$#PDf?c-_tcMmNY_qj<&OJsGemn* z{XffoZG}ZnYZPhR&rfQmt{-+PNO5t#VdrbHB1*hb^`!bYdHF8URV-4S1Q#4yq?nK9hLyay=zAt))z|Y^8W(-ERITtf`r}JTEE=-l5jo@dppeAB?QW8~@C)c5Y`BkUZCu#jQ-TJf6^?j(EX^P zcPDB0Xw%q8dT1CARh6qNS7RT0Rn=+?V6Cea?Y)~iHzO_46vMp^x4ytadCiz1&@XZ> zdQW*Q#zS{kZ+joUTPyI9)ut|N))gQBco$%HBisv9rcq$dfZME|$+2OA@x52{`+@y< zZ(GaOg#gkG?5#+1T}%{Rh2m~~UtH2d+(B=*c)X&5K+5N8JQLnsi1)KNzb8M&po**E zr{~=umE1Z=#<<`(t#jF>ceko{MfHdz_FXauteUG}wU(>+iUx{7;Y;#_6CMh0%o9#L zqwrhvgcF~LCQW;*%HKv52|jMy_W^`cIT9Yah$p7h==U;k3O|HzIxeced(W+W?XE>v zJXM?ce#fug`OQ~}mNXFP`g<>4oWQ*lO!x+Fs=wRdr+AOzCR(`uqR!lcx{83w>hJw3 z9URw1FzNnF+{AODf%v5BA%)Gx{UC0?OQ+9NifpBDYk^AC0ZK=4Uck)~!cbmiN4_Jx z5sHLMWRmLl!-z!mT!7oG-;|bMT}@?um;Sut4On|Yn50f&mbGd+6uZ>$rhR1RXBlf6JiP0NQ%EoziMM|D%-LLtF^jDsg)g0(dP#eD(V%Z2ZP5&tc&s{YD_KdW^$DqwglP!uGrpGDzQ1ptH3a zAPcmHCku%nNu;rP+N(w>o54?fC^1I~BQSBJE} z8?+bUU5HDT9A6Ent<89(GcM^{3++fv7u6c#(XjN9e+0G>)tCYKhB(@RCpyoQ<~_I{ zIU>U<@$1Y%^ug{o{hK`g4v+sb<>&bk>NU{y(5|Zn?>V!g>7)1V>;3A+KmBd9*ed%H z)MIVN-3{7WKvTcuLND@Ig>rRDGmbK*zh>kh18V8pA-Su!obuQ4uRwg#AEdY1;quID zCA7&hP(V^fQnSLwq|*@|{RNQRbh&i(f{!~Ou{Q$RRN~VqrUaixvT6R)O;;{_qGu3s z2T)p6u7fD=A^fJ0+O4m7X89)2!>4$-b7z6!}nA8wKnCsvn~9sZh1uS;eKqC+3;Yb8k_Dv3rqGvy}y(Yn(*^eahjsT65_ zAb(?pXY<_a0yRAPa>*DxSALc1P`dm+% zCuGe>beVj}{nCtiVobZLT~)TEGrx6yP8B|Vb})}~nP-*i98J!1qLlK@XB?3|;y%Y_ zDi9ofb2&~-B~5b`2Q)t0WU*Vw;8s%t(&(uLghXcnQpT6p|Ny0!E8R<6x z4t@29&gXboXxE0|=SEG-4QWr4NBX^X8zK3FC^`D3kzV!Uv<&(6uTD?9)5m4q zq4sPGu+chl`l1on%R;b-KN^m98=!UhwEiUYHP!uASx;I1sb*2QcU5qHEE=wM-Smcq zN|f_u)^P9lrW}1pt$7pd?smu?e|?I-N#(Smn!YWN(FT+lTTZ#{OcQcXU+YQ%-k5a9 z@yxvUOR3?uOKmkQc}IG)1Akk5@chFa&9$w&FWdC^ohRPbd~3_mzfM0_{;q46Y`*I^ z*L>{go&`TXchi5rZ#dcBb>LTX|L`9M{_FCW|J6!f^|v!Gd;GpfJ2EH!eCZjp7hLm} zPrSQf|HFUxH;o^8Xv^0wo+y3s>Gxmu$zOi{>h0gYde6@5FMa0U#*cOGf8~+Z2O960 z_w&lD_bmP8*ye{5pE%yOV`)ps`l2_{vR&u5kY1HnSor298dV?VvTIrmS(RA6t6y21 z|YT#=x=4;|RkRMXtw+S1UsrKhETbITPin{)Oo$)w&r zOCkBO&fGL3>2o&ytJSSzj_mx;a z@J?Q_>OOIQ!04fwJPF5-wXQ|zpa*@aEt%vlbpAG_vPS1Au|gBsdqXnav^zO8nm|v~ zq*#~f@{Eqb^e@MeglRh!L|h(a9FksnNVe`jdHF~9Xf9xETyDx+KAzn}4}NS!kUO@? zOR91q>2qz`+0}1nTk?~~_!C233C9ee7kya#u1QEQe^hDNGM$hW09y+?IvP5g`!~1u z_VJ0@&FwucO?_T6mFU^YT{MT}*IH9Q<)L@;P$o;p!erFi;%HNtxu)`3EtY)Bue&nY zDF}rtJ7M`RH$_iXJ_j>-<&#*E&hGBbV!&u<*hf^u@!S28Q$xM!+HEiKq0Old0g|I! zk6iC{bPnPI@~o|IZt3o8>%X$6y{|=XKLpUOG`_BhJ?eu^!>Q!B9OFWeJIksJG5FyX zLw7u`Q&1|bR$vFGWdD7)csqJU)a#_xUi9V0IBXer-^cl?LD>4fuFBj5<42hs-|NJ1 zAI>Y1Mf!GCrg6=?IO(V*nts*Xhm^l{u8%wsJ=E;#!j+?sPEBfU>1=B0Z{6ImslT(U z6Q$#>96M>O(ykOCd6tNf`KdDdV_tc1s}=s119RR@*RK8!wD<1V*bwic zFeH8Q&{0QU+L~L7tga-9IKGfz&XjLSV`|IwxdnH)PH0O~Rdv5dGv(X$L#;v{RB}f( zvhFQ8|0GngHJ_;0Gm5?pj}}p%m3pwwDY)hcMqy2LQt}}C8xFtyGODO{c4NAZB6Zi#P2#X@Q5m2_sz zPo~pmtgao`VW52)$i`5KoMQx1uX^F zE43yf+GI-wNaNacsxgf&dS!I_+s~>>SAiBbNcJ$Ra%;Ys4-TCI+w#?Z7Z$1u`7M#0 zsD=a;;$zUdPE{sceW|K)of6@)cUNr$mr_|w?|J(LnQJhu=S)$W7PM`qgr#S#yFn^c zKXAySU-d9vPobFoYKNRnGwPjh<=EA4L~{z(nKcelJHnUWdh^tp!u4Y)U;QvRcGA_u zg`{xx$cgH3k>?RB`lKIe}BCEBRC+G=vwGyX5(lC$G`yn~0*Ca-hwE(EM`OkGwbwm@`h^JhqIc z?IiSXO_h6rMIn6$V}N=yrYWFa6)<9b*SGKL?=xWKQEw`WDvVv22XfCTnz;{MziM1x zeJ!lNRAzH!*%fdSa_oYWzgc%h)3VAIk)Cfgbrka{r2N*(Rpm~7pQI_)ZMNME+l3Ss zziZc*Z3@tMn8szlv}N}c+6QZ@O?_;mW_p^2$1>%Z zCs!1sSVGh19#Ap{kh{lWu8n3B-RQ=)bYf8Cs?MhV_RhYRo+}zKX;Nt*hg5{c?`eOO zJSzTNnH(Z}QLSRbk$9LSpkWL*OH@zL7ESpOnjW`282kY4)(L$5XaGk)jjGPxPJD*a z{WU6@k*68+9yMpU8+~w^$Jv6J@5^v^VHH>>dOA)#{>n^9dh0v`z>0s;iBXH4!a=k*xG<5ieXrxl%=77n2|45b&;(>(crq(_H3UmO|* zHMB!Fju3kMa10^5(}Tmb(Wz|d&mSAX(pD(#KA}~hnqF!RIcJo<2ctE# znu^*1dP|(sWkFW#5Z;;dgN{7WoH$WL^Z&#xS}Uek#c2riKDRXW_m0Nq-nM~jQ~F|d zE3kZ+u0tEYd&ct{zw*Kh^Fxb|TgX$5Yv&wblz2p3@6>6BlPi%Z5sIP=x;Q=pEEa67#b z*Urxu4tDZ-_N@zw>xsv^mAhBD2b6nIx%uMh@VJN*esRa2Fx;buEeW@NCcE*c**)}X zk$m5+{73I79AEsB;~)7Fr{DXY!toFMisM&2%kjk|^c+?6>{IY}-&q*`5e2_n!QUyh zSO!{-vDgDAt2wQ-GzLP?0n|eSCwQamcN<$zl{&+MG_}hF_iAOd9U;cP=Ax;)g zL+nGIsfDH!bxi)4>CF&7zGOg}8QUcOU|hfKe^mm!POT0>8nE3 zzwTdfy*coxs;@67_aRk}KFRKO<*)b%`zs!2H?8B{#Qr0y-dBE@{rd*hdlm19$E{TG z4n4>5x^?>BF>g2cA64-x{)XSzE4N$0JEG`5py)na#PP(7?Cw)^r{Bx^<*?Fg55JrJLg|%# zU;V@l?;A*U-toaFe^&FJ_iSuMxzb8ZUE5c6iVp2U^G8g%y(RNZl)W<3~5;lX63J(z$9xald>=dq@Zt ztu^Lr>glhRG<4yYO2sc7L#9>GW~-2&PA7hkq_A0*jJrkP)RW=UE1f5Y<6eDDyJET^ zGyR_aBKArmpU$doC*Ed3yIcx|SIO`u$jTPL?M69l0xT^%^!-($lDOn;OJzd!GnMqZ zWE(K6*MO2G*>A*e3t&toy(yElkBD~U(E9Z-=^KH&2|aFoQD2l!$)edtdKv_5-SX;I zh~heLStHQ;o){_m+@*oT!y zB$<3|LQ3k%(YfTbM~ZeJwZm-&&6H2-?UEHkUqPeqjB&r0!oB(O--p9k{Nm@^9m6T6 zvX6#hdgplcZVJ6WMC13yYm_}$DjBk1oY?e4y?nB6+^erLMl9ZkLGc>FH*F2^4lCj% z-F)#nbCTb}>&Z2p%wKc7R_7>pcL${*dZ)f0gyL(vhcTLarl{9XBP(=iyH4*cZa z+n4{r-9IGuVmF5JfV0 z20QReZ*+!qkPhi7Int8@zjCD`!})y?IpkL^Idl_#ID{V#rDs<?OveqW^h%7r7dAoI`oBMQHCk$=XAj7#|1uUv8zeh#-(eC3kE;rzZx`;`mF z#?SN@Gd_!5ayUKvi?m<4aCCZ^uEf1Q6$ul>q}qtkP^rQ$0W zjtb}ZMcS|25;OmdKf?4EOBeaq_@y8DXTNgcX#5;*sc_}OQQ`c)Nc)u=G4K;!$UnnZ zE*zDf-xq1Wa*LhxGF_3S;w#s(!})!Y_A8eVYW|bUURnR(Rnj5LhoW)$N6AlKxa8np z)qhIQ?`8eRd-8HPzo+^y{mO-7jx zJ?cOEm0J=u@=y7LSK*f~c@=)?CpEzM*@ai*=WtYb#?LOiDxCeO|Lj+8#K14}hYHW> z*@ai7XFuvc`;}Ylq?hSX|2bT_mL1OTi?m<4QNQwM{zpov`~XeopZrw+RsN+5FXN+v zr*Jqb|I&q5h4XuqKl_y%DRKDE>5El*c2WK+J^NAq>{o8FlU}BS{^xMzT6Q?UFVcSH zmiXjf@jpT?sMGkRANg1K*)5LP^mDkS!j)^;;rzZx`;{BX#jofumabK-;j_O;`;}Xq zlU~KQ*tNXj9zW~-=#1D5D8FbFDjZT+QWDWFJ(olx#a_RDPhpYbVr#N+Z+xAO(iU4* z(aENt489ki#!I-ZB3Mg`FR_`Wv&v?dpTXSIzVb7KG+Z1%$%gh(d`j=Uq4bWA!`*(z z$M_h(hRFD}kJCp=OuyrE(wpH{vG(b3w_p3TtMkvXb^h6>@keJke#$@l_?PqVgj4?A z;cmb7x$&FnBPH(iZol@K>CO07G5efwx1W7ZDd_yiW>Ri-{@Lf`-|=(#QwT%i{5#=X z{$@Dga{Suo&_@zyrq@0V-|g2vGrb9)%Ac?~;ch?sa`R7V=w|tM=w5e)f6sJMf7bcY3##jiH~mzm8a_*d6QB5Rre~i!y%|pB@6Ny5Pd>l=oA{$M-1tpD zrFFxn96RyZXVT}6Prh9IX8K5p8@}65K5u$6zE$iEcl))5Gt19}r=@{P-(CON@5I&e z!6mNaJ3bw*dBJ||bK_?p;p6hBxH>)8c}o35exW>3YK@=In;ztId;O?XNFU#<0oG(eltC_@J@WfZ~DpSO>c%%`|l2S`^#pV zHQX$JE^jB)UH+xB*so#h@?`lZpH9!TJK=6W`^@}ti96}JhCAuqe)hT3Q(PUN>%SRJ zA&#GXIu9)0oMRI|)lm(P%ir-+S`(hG|2jUEzdPLRCtogp2R>2bPVe@U&zs(iPxap& z?)I0?a!T0Dze7K#)_%@^Y^L^esKZZP{yLoNzZp)?j-Q^~^l|w+>8XUB_=Ml|lh2#p z45#vUhr9i;nN!KX8$XRtYx)Sb8$RXO2`8UB-0fE*i#9yge`b0fFVgrZ|0X;=Zsdf! z^P|U2@`ZcxRg{;Pm6w&3(p^?s8q+R4m&RgIuV25Xuvj!2nJnBJU#FwA(MZHP+4Pga z_u|ud33tT8f<@2xhskSQKQu4Nub;K6(^DATl-`U-;ig~5@ut^)jbHmIJw0nbxjGKP z()e{ag%t|-#;+(Vijo;aWc2 zZhYawiiH&wF}jI1UKN%9*Pz_@(VOyKwT?RdLrd-_*^wNKC;4znoRNk-L3%-!FSPJ4 z_Z?O1wLKtW^LQW4LgjjbVc+JwIi)Yk_WRRWq3DY%H=*20<*rjM5qIow?;j#}Htslm zl;dvL={Mqj11^(&v6mtuaU1BMJI_V&>y7Ykw%@?l1prQ%m{yxo^Ou`FMgedVCwB_CLM&wytX5rrp1hx0BpaDVAh*qd1%lu2?pUH zcw5bM3b+~X4#ayHarXJdQ_*Ff4jbVw;@OV}1WUs<^F{FeE{ePG-A-7-c&7M=08d{g zJmHC_;}D;A8)5tK?1f2jkL01V+el0CbYAFL{Ch+kK{)n!NUz@y;Xh`EzX$kn=UjlL zVVn6P_~uoKc=|Hqb^F0YM1r~72=n6BI0@!x2-%HBB5&j~c^YN4b5KLeB zH(*dala4!(Ch;erf$lsP(NS-NZ^v^XItZp89TJa$!=&R7(i{R@?0Ga|xF3m*=Zx@U zlh8ph{pcV(=4H}x6lvDo5fRwSWkzv56U=TSd^esC7=9g@U}@N<{1ANeTKFH1-;DQ| zC!S72Fpn5vUfdcd#cu=b*qsr9y`egJj!S%vBaXi6@m#2U38o)k36FW1bnHW#0|>{S zP&10_ndo@f2!9UGh3FudesmBX^D^l;gft7^8xh#^W=3&66U<7)(N`Ouy*#Ecf~8@b z3fUBGThf4D-vnk6S!MuTH?I&m1Gw+U{Sn+x;=b^sh==>*4+9tO$8bN1`)jzriTiuFU%~wv z?iU}i#Db4m;)}SS$9)9%w{f4q{q~Pr;=8zC!hH<)PjSaSVTnz+pZ$y_Ucmiz+>s|O z@yn+y@!zZZaS!7j$9)6tFZ~l}!u=iGFa5|8zry_| zKf&|QfFF0y&n@vF?qA_P{5wnRdmZ%Qu7nk|5BFi*tBZ?8HSYDeFUH-DyBqh_xRbc) zvvI%q|11%I8T=^`;(WRA@63#xr<9B=Uozr6RtPShNK}senibV`!wt8qVnN2QTL$6@h z%WrtDuB;r`iBGB3!%sb})lEHpOSd*PP@Fc;J9^peen+1q5nJ)@AY7FeU)Tew?s)hd zAFlZ(j&_M7=6OdiD?IO-@NS{|orD*6z3Z0n67F|0UZv|@pNzN8{Z7WK$GgKLMPl_h z@d-$8i-l#H&U2yFFvW*%8TP^daIXb`|%gn{FE1L0_ngAArt>yLvo3 zu(Z8_X>`52nrSrO^>Ms)u6G=-9`6od>*4CXOyiNm5wV%*k^ZG}+xIz7LATR8E^pd? zCT{;?M9d>P_+1UXyBF^axu~Ug2cM0I=9zXpd_ol0QN$y7iY?T~co?sxA8aApbUVqM z6t8i)#i`=uh_s)Vpt$Uqq2oJxLbR$Z^ ztLQBe@s^&m(hIiFuf&>k5v{f=i%KJ+v^FYAtE1_n2)>4SE9@+C8{w9gh|v_`4Vw-F{@w6Q^iFL@el;o1U}1g7NlPm5UVqpZyZL4sf== zgdb~zSae=goH1A-&Zs>@obl;d>5F~8yx+3sfTW^|sHn)!6cvLpQBhrXbTQ?-Z-yvA z-s3kFiS4*ALUPKF+Ye=cc)}B}Xl99+*;tZ}Y%lI6-YoL?iLOThZ~No;v9^h#Gbmp( zk*}CIqk2|)G4bSO;O_%ne^?~CaDP_ecl&`K@q{PdqBA6%6Ely_IIO84oQZpYa}|E9 zn?=#gh?rSja-ukGZC|`0CN?}>D&F2VQ^Y|-$;-3Efwe+>6L%$|FBVj8-gl^tcqfof zAe}%uGtHu9GsRg&3&kvlib@M*au{XyC}4gXyi9x!4^I<4rEz>`c3aUyhuJ-ECP9$G&B)vSJq(N8VX%{YJD~(MGUn(c4PJ zqM}v4xIPQ;J%sBSJp2=Gt9;+D(L^t@#2U-`aZKz%d(3sAyAYhn2O{EXf-@TrXXB1Y zejcqp1Zh81krltQMy$x)v#iT4ab4sts})RG^wy}DQ*^G7@}cs+8A-oR<+2420}@Wf zCHO?}2Ks%{Du315C{|dJ4~d&2jn?fEv1k?XvBo!V_agbNMAHL!cocWE{OE5iaRGrU zvLwXA^Zr#-S=Qar$VaT`O_3|CPH}Uz)vB^&8J!;!^NZdhW}cXF)THqQKz*5L{52lR zK1k&*ON2{Y{vN1kFOIaLs1sHKRihEbj{Hhm|K69@W`MZ|wnd@?4=LO+3G+~0{J%gk zfj@jT{T^BVG4XY)B@+2cBsw1Hiyn=Z?ICFSNnEx zUQt5KJyCJA{BT)%mZ~2M{|qXR_`etrt8lYS?5jHg2`jtNvQUt}fpWSD^1!mN%q0t3 zkz_8VPvT+JPOoZKIm)fUii}$;#ns3+1ZvTesF;U3WtP?bNG9vjNAU1z8^$4-t;6LP zOBg>bmOw}-Hp9YA) zYs$pZ-2;%-=Y7kf`Ts-&$Vd6(;cDE>t0PQj1vJv&tJU#9U?*jnw zX)4IO^NS;QMzAXiB1AlBh4^rJtgz`Py>tvLc_6MJg(u5^Yvn z&Y6*osQR}?$u21?>gDo6i%;csFOuF$`Fa2kpTr$0KS=ton`(C%I-Sd{TOy*- zS{gaeV%>heFFi+*)S`NL91p+69W5oTzOR}T>ERu$P8Zy6eLE649<`n{1Tn*cz781*;4m4L^d1+rTeOnpw+v@8ZG^mCGMf;C#^4& zgKd8nxedkdmhO|-{wMv`yQO;zb_dFMk#|e?=r7o7?fe(Zf{t8cMLt;^dpI()xb!!X zTZ+q`w<04}IeuS`Jr(&-#nX|;=C)XoKbTt=c`9~qWL5FJq!syK@dEtLj4bRZM#aJF z@16aV$m5pveX*IUjfK0kwXC(gwW4)y>%7*5Uq8EbLF>G)m*ZV2HF=5;>wWpq_UEXx z#OKTLuorikzmBHYAx14_Hecv8+#7(V14{nHe#d8bwwq@^)@<+2@KQ zofhOT9fQ?jHAX&YmE8_gY0>JL;@rW<#JRQqAkHoNw18z}>+BbR_Eypx-^9Z)+^jc_ zNE!~xqS!b0fcUI+ixu5+CK}8wme?yZ4!CvYV%gqhV)5?ffZHX`I5GR^tRpiI&qznN zmsCciZL{)zk~qL$gNHxB&3SylW!s#%t`fOq9bIHycLJTA#gTJ0RZ%dhuSMm3r|3JbcThf%C~E+`{xQ2}xyHO5_dfS!^voU_DMm>;(~f%iAh$El-ps z3?i-wYwwP%zV&_C%{J*sgRh@=LDT>tY6R%hn>TpSM^t#x) zOG=MhW$(1gKU?vNs{pWo=Mk&sb=_T4Plfs`XuEH1^04u&Zkq!(LgC)Ayl%+zEh5{2D*A4^nv&ThrBX)LO1TMUk@4h_94bk44*OM^;~5j`*uCf{ArRguWQltA@FerdfZ_Sk(Y z*`{vtEt7`;?gG*~pTxtDaL<+UqD20%R5%Bu;6vfWk(&ps2gzA%eTSS|tYsFt4c14b zd${$-v`IMfuhwAn>oHW)Es@e%tE}_~(b-nn?BeK?k@Dw@qgPoK&sfotnR6eBM0Z7m%eWsk(l50zbP#a2dO2cBzz zI%*}#VvS`~R?=R53(DWWt$GzCJV^BX77xoFBt7mBa%2ag-gght@j$U8=K)JPi;K^` zr8x4ab?40JV$0f65?dcBO<83Rmad3cJH_Sbuc9!yZmsa;!!S@)6W$3t+<`l4;62QE z=e|FJf>|>&T4Grrv;=ZTHZA%XvLEaZ_h}9HD|q-mZtiolG;@BA-Xn80@7hS@tJaUL zC|cc%OJes$tP|oYNx0MtQU?9YF!5Ka46E?49e25;{iqbX#VmFW)`L#l$HkiDkXx+f zMJ18LIKv=1B3bv5Na+JsS;{IMiImT=O7FH}C(!v9Nl6Q&tFgSXRLm(u(bSfUvQNj- zRBs;!S~=$NDLh1B2>peqr*^Yw&P*|9hs(N^<3>fZqGDFH>i^S*M~8p3xxP2?gI*r>0dMtx_EGg zm{$w8xm;Ud=MH_?)OXCkr{p_+JUe|0>SI z`CPaM5uIes?MEwwxO%M66-N1f+2AYkaR31R3AY|ccKeZU#JBnCiC-w+D?h68y#^1_ zyQzPO;WpI4StVjtH=iMHpyn79vc&-n)G+|y+!>sjLPTZMQXcRi9){@i}# z4{-(J3QydkxiK*pu;!vJ%&jgz0gIny_vM(VUnInbao?|Cy8WQc69;O@?q?Q7iiIA3 zFPaT=U>qa9+oP3>&n*?_LhcrRqePtfH0n&2b-~fMW33kQ2GfVfQCxnMjg(b%K#)ct zje!0z)7U&ZqQ?9e#>7ID!C3qGev39eAv7*#hJAii!+OAMcIkc zqvrVV!bg-1w-^tra7W4yp!a?OH6!)qFId^gRhG3HV|N%Ll;uzJ8ap5da?Ybvl#XN0 zgT`LRF&`n@mE3Vontz~q7D)%jx+M)qqKEakKZQRGb}x=$KqGsWIP!dv==gGxxEbV- z{Fwel=b-#*=ZV=ri^_S8G{P6fq05WT6c}hs7ppPa6G(e2!V#McrddMAgIRiqy^nOL%Sxj1k4 z+r-(~UU7D9k2t%iTahmzRMjaY6F{#9xSuSbRxTT#|)dJ9xf`)h-bgj~9tY zaleeL5uZ)JJ;qqeV~mTa+#lq*qPCA?oy->eY{fl-I})n^$<}r}T4&9r>AHHF$KGoV zTScW7&5Ly}npq@fqCiNe-hp`QK8T+W;r=G>Sgc}U9K~ck0#76o{Q@}*Xgf`UzhceV zM-$x(b4F07@aAaRZP06J6Z`I)Xf&lcB7v^*e4c)H;aoli!)Em zIeNz7*=gbt+4A!~5fPVy@Wi=zScf}SUJrN|Y=2h~#&51;N0#LS#pRf9MOWtL=>4%5 zqA$h7gQ)s0{g33^llZafh2+%^&TE!H6R&Q;!-pvx*}N03%1J#x<#{n^TK@67#il@Us|qw4BDQR@*<( zA4THP1=gI|GsNshdsacV>r{5lNRsHlPakfp^Z-=QVGC;xq&|R6LUW+fwg9aMp2s={ z+*=Wq=ra9wo37^m*d9TxJP&Ov?mJYP|G&L+kB_Q4_x_s6g&|x_AcRB_CkhAJ3J#bm z)u00i1r0a`M7*3cGh}v>(PU$8MGH!8YN^r|+mX`B z>p@K|T3$sRZQ4WovHE_Wz1NVP5c{6~^ZxUm`Q+KZXRZCL`(>}a_VcU^bIY2AcsY|^ zxuI-%?QYvQy>zzzB;TJBpIPR-9zI$=lH=^motr<+IfHCj-)dh3Co;r8VI3LB^_1tL z@3DKT@}bA_J!l%i%1>n5FIl2oYl=-j`2aOr{E0(k>~4EFM=_t?n4c!3$MMX`S0^Wn z)RfR9;+d-2Zb6UcR;NlzJZz{=8l0#m96CX{b{Crd7jv)8OoNVtzsL^x@d9HD?--M# z#;lhwm5lWO{gLkj@?F5Y)v2z84oW*t2~}DaxV=XHq)VF%kz!< ziu=RweUZQ9EpLRZ8sR1^`H^oB!}3Gj+1+Lty7Y6ifTl{G!1HpV^07($J*cynGR$i(arDJZ)bZOdlO~yEwkvjcSDKeCW6lXHkTCSD)7F?XY=`)KR8rptqj5Y zTN*5?j5)3oVHE_G5;zJc@JqT5z=pj!p?5uN!xp0>-|ooD); zkN+<5mq`bIksI=(;%#BeM!Z8wUOi7z-mh`F0LmSjCvrFDmJp*}=khMZw|(<_ydIz4 zqYh<2RRoiD&4s~YZw7JdscCj_z z9^$^)Mjya9`DUQ?Fr+-{DSdA&jMMEj+im?&yP0!XHM$xD&R99$zQ4RbS52obi|zGI zgHID83Mreixyu+^g{(~qpBh?aWpyvi`Hgb){m!ZW3T4Y-ck6H11Lc$R)#Rj$cR0o; zb86oye6NBY)@j<^j&Zqa96Ay5{##zi7B1mTeT+BJD}&M!M%slo5_davP{%XU?Y4y} zld(toGM`J`RX(ljZYfOuMm3l3UD+~a2At{~Tbb-`$0*Mc^F4m?@$XxXRTI>zLk_iK zHy`#XhljF%g*tPcnwvJ?HDpd6q|P@wmGc|a2U#)Oz~(m7yK(q)%W zA6g)OWOcZkK1lwD`=L8xk4MS8E zNV&)x_Y`ubUJbJL`y=~K3t`MLc>_%DS-eUxM-~^be^IE4tA}f?NMGBA*z6~{?1b`N zh0|qH%=fC9Mfs%!we~l7cVvHKz}3%sV>;usf_^_(p!mNN>MPK0f?9Pl)^u0nw_p5Z zF62F2WQP3I2sbjsH!QAVp5eUf<%L*pg`DangU!eetBvjMzxPhv_AKSPjmv#dZh?B2 zx&J&Vo9jlk-#I5Q*G<`Ez9RW@*~3YqiyO*eJky@6cYXtP5>)z?-R&^vU56T3?-^vx zdjAWI^9rZAFT`_0*IS@`YCij5yu-1lBl{8^uQ=4?UpmyMW*XAI>@N)S~fgdkQLUOzgzVka zq)kesZpTx%<5bD~p}LiDF$veorA@+_ZPMx5?cBfz3+L?;R_3x7kDtpV>=P3987@DD ztg#X^$4dS?xlW@fS0;jNy?J>4Y=pA)W_LS0Ba+EA&wf;D<|MTr{6`aL(}j5*k!pXDf5CuPb8rlzO#PmWCr6nP4L4%tgW zmu6ULJo&z&39Pf%56#n3w)W>J+g)5XL-`Zk)aP8UT-vy}?i=G=o4YV4|5Wuw?=pJ` zX0FR#g>fxYH}hU<&K+aXRlGYdEvx79`2}kJpi9kRtvh>n5$lOUo>?cT*pncg-jF4okbp zK2F7Sm1%aWd98did)`WGxSQTHLdMc%Jca!j)=;D9GVUgxyNQ4HD=-64zWM$cI7dcc zY`$DOTw}*M7v<#MJTbqO-9pBN=&Y{c9iiIV0UZAR!+s_E%^lmE>R-Rd_d+wD_V=Ih zBksw&gS;1w^rtNN508hr(iX2dKCSU6HR&nyj8msnT#p`Za@4Z+?V_wXlyxV}Yfypt zt`KydBQFbHv#@=S%ERNAaw$C7$yVKckLE8e%5BPb&2ZjQ;8u<)=mye%r_g_=d}3-) z1kAP>ELI(bJW?k))e)kWeqeW7?J)XxRcYf+n(h{H+wL#NZGPLSwtd@~TA-$`DdGG56g73< zu^k<&T>Fbv;8lmp*~g}YPTTG_-^(hBR9W?u47$&0b1x_`&U}7Mdx0@2^YcuY{PpVc z)0|M}Hueenrua@?%bV{v{5xfh@r*tQ6odlHMSZ(Cz! zeRk?lyl;Jg4HC9I|Awp}hjJ^KC&$`#)%mU``Cyh%K z@@y9C&rmS5?QEqTjj zU8VLG;2(g*#$&Xf*jUTYo{o1!I)&U9`{$8zrZI@=J9H77<&ko2=MLS^a@l;R$=k@E z)M-2Zqvbgpjy^sznAsL1%NlrjNbUvrJ(F`(o6YY{_`~>Z+C3yUDEEu-`^k`B?$6+{ zf!b!1JA_{$aviq#)X%Y5AwI87ZVew&bU+58^EFNWVHTe^GkQ-p1|`5nP8LtX}K zeiPHVYB_Rgo8Mgg7T`D9@0Z+@-*%0UYHZgS(RgH!CAUwb(&*AyqVZIXb2WN3uGLtp zu|?w@8ap*Ur_ra=&F1-a+DCrRX}n+K?HaGs7}B^(tHfX#;~T_3ZvZjC;TDUCO3yi>>5qTLaV*?3(#okzP@5vuqGLex60S_mb$QcTlpNTlX3o5T!ya2@~X=g`Bs=W_T;T@ zFpQXbL@jBECXD65NT|V3*X1lXg0V$%?u}|Q`DJl~A{=sl-AMZ4(HbL>5DBGb=3f>J zCznOztHY7H2IJ!OR~t1+^}lp(mToX2Nm5*xL%22JnroIsn8TSyi;=8ueaowb5V%6NdI!+EUZdln8Gy)cYgutga8njgZvqqMB=) z!tvunI7ZybhPY^H^{S;+XId4h_T{XJ2P26FDsv^p4AxQZAFB((iC8dMQ?I?q?GC5U zFs>PL?{fO0iR6&`adm-Fds#RViZ)A)5#ooY#3fDPtd#oDS#8vX6G9{ENww* zqpmwEsCexprbIFxZMD2;>qVifn-WROSxtp6N&kJm0^r!HCo)>-|PN9*uhw$&lB3`J#2crHe1{VkP_U zA`xv$`lGdes;JI5PNE~ve@T-OZ}rEFc&)!i8rz7gyN3DJ#*J&6j7UwZdM3}mram6> zUmXqep0HiJ!nEP4JpYnN$RCRO*T*STO)!!42b2C}J$*dnH(J8%1U8Wyf=8SEOJcDR zIbKe7Z_e|tOt$#x!q=$VEWRmXx>l}UyTmuI!efn$a^?3^Qev$!Vo45pBHyuArA|H0 zKV-E6Yfb->mKHN@x}z0H`ki0Am&JpPx=Y9D=as6_XsnU=77EuGrRSa}T*9CXr|C4P zrN%I0+EB|>b4`NAR_a_cWFuqDB{BOGF{3728?N!!n`0D-lkl%;ipLpaL%CPeM)Rdi zG(}5NtzA-m>8dp=RxUkOe!GueDOmS9ah=?_QO`)ivbHL6DWn`@&nBjQh}G2Erb z!ck(SL=pdn+U8h197!^{O+M~kLf<1G|4Fg7My461ZdbL<@h}DEbN_L%>Bvq}^fG$G z^(vckof@jC8A{qV*pLi28fR5V?8_7tS1WG5At=9fgN3$#J%cP_bsmF}@-300rz`cS z)OL;3akp@$--VR4CJ{D$sRw4=x`+|-(`^lD`K-IqJQYm-PjYiI8di6ynrK4G??{9r z;8aKA+Bg+b=12y`U8>9oRGHENrB%s&L&RvVR~5=1J~s9FqY>%h{$y}HQ!zcrAJ>ya z_KviO^i(ySIA|q0jtq$sT-Mm|Du2SL_t%CSs4x14p%#k|k_?q(Ys^q%rPhsPQ-Yos zOx82t*=rztG*TO`PJryX1|bP>zXkudVP?Iz^rw%jFzY=X-LgUy0nGgOqzC35MD!(0&X zj94t|0Ulm5ndt?_ijZ1n^JTte^2bx1D65Iptvogx*HDRz62xu@ryjJgAgXwFStOXS7VjN^jX&ZY|!jpN7g+O`9k{-{pNSQHRpk^{6j&83BU5s z?tQiUKmWXGleG^c`#`b>A|qY@OsC{qe)fGLxu12H-Z1=J!@1`#T6=6oV6Ah^=th%U z&zd9{j|W@L3B+1LWrKX7ysWLWLc~0poSr1?Yn##JE?seH9#8iEipE%j z*LMkzNBln z{}Q_}H*1Ja>P_%WXuH%QIBgDL$(tKI5gWF{!h>1cH@jV%*thM$wk4Oag1>=gzzhBs zs(`oKwTMkj|2)dRjk1F;K^}O)y^t5)ZpR|_EwM9cFZ=~JK=;B6UI(S%+rX^7oZwks zML&*o1%G{(QVsBerDqccUT_v9{`PZ}euLlN7SONm=J*FN=W9w`1ur-jioq9xE6=6R zz{_{0U646;z%iAy1!JcTd=nD?0dOT|y~2xmZ;$5XV2P8@v;4&n@+IiuyC^$2{(R~J zc{y;RO7mhg_JX+a?+1Sind21v(jw}FG3WswSV5j1pr3$s7g}RH1|GbW`T1e;17^>6 z5xfc7e}Art--SO6FSzzH&clNbfWCElt^g_Oy4w0V>_&Yym2MRA(huPCZ zxnz+1G}6yH$q!h=e0dIJc^8&l* z1K_S5j0O09FtD3^P@jTl?a(0@2yzzvqaPJKQ~JYeOU)FXB41wa2C^#-rr z=9Aus)EzQz@bnC6NE?A0j^d__ZQ$mK4mIsT@(ivjb*LHCn-5H!=ui(+KW*T*r(wrL zn|6R#PIss@brJxVo#s$UsUPs1ndkx_?*%WO>rnSnb{{zPs}40lT5j;!b5L=i4*S8b ziyZ18@_pdTs~qYG`AmaL)}o6_T0XGyU(i9t^xX@3uO<(|gCE5lY7cw{{ODS2f27^P z=Qofy#zjB)wPuI9gZ}IV_h>#1-qhkyXSpTe1;;_+Z$Hyb&U$lP=TLj`7c7Df!3$1>2H^!y z*8XnLfObee!B74brM)M}+x4^yB>rOX^AJ>pe<%3ZjSjV&IjRqIebZq+a|^-Q?a<@& z2XOE<2pM%d=|WOQFZe37hV{b$SpF^ALgc|upP&vOL;m{?)%TQx^G1mubnSGg{m9#G zu*5d&>>m;adBOEBI8-U}F);ljbX<@ZY=6n2wjt92{_JNCb(Q#oSsOaRGk-y!#9weN z)CV5`KY*6QXTZz%T6qqDC!y!rLRxOnfXsRWZ-GM8k6jN`bVl2t@jsx?gFl64!wbF* zRl?i#TSWK8ohE*CRRo`dI^g@kE79Naz}xk9M4#uUzou`Y(SOfMX93Ke|nY;HKAUBjU8{#E7oUS^r5r;xG6tbV%|5KK7PFrQp-x-nSWd=*p$R z2Y*lf(7v7E?=+tQo8Ms`*h!s$pF^|JB^Tx1QmBfud%zFS+IoU`M0;y2%0ihZ$s71@ zPzaemu;M+&`}gTT;5ukOG68T42Y`M`8T-IjAsK4};IcoFRv+UX{0}IEesd@I8FcVj z^6+Qu`=AW%)ejCrl7IDI4s|PZFX?uGyCHL(2`)TJzDd_^vmv$|_d{3VFSr$o!S{h5 zK--Bw1J3*mnWrc(nAMB7>$;0x{F$F~Z#(@EY=j!%1>bNzc1X(J0q)g& z8XPkYn>yOjt^;n@85iC0=b?}A%f~il6a7|j z3iJfL8+-tguy%VDv17U0jqVrzf)7CbA_LxYF}ksg*-r4fOUMuPP*}~G&VFn?(9KMP zvjbLp#lRUs>Rsv<%-SXh9|-wHP`F+6VZn`18omt_JGXY~ z#BT3qw~-S&x_|j5HWa-ae+51O9fBA91Egpd!9PN!@OGVY(JjB=X7udnKY~|57(+}YVzYOh#_ki7y)L|cZ?zb%73qGy+e(;a~ zPX8b+yN#RO{!Q%Q-h>X4e?fIOHb7Dqa3bVle(-?r-$Q+o{|wmmfK%N8-v^F+(3)r5 z;2$A*=TZ+j)l&~+Ys$Q2w<8k!qOJcyocIeq4^4yb2Y=LQjj4XHpqqH)c>%rw$vhTI zIn^VO^jpss&Q6ESHOAH%avI@5WNkrrcCP|jC(!wY($N_fFbpf&J9bo1O;upS$ zvh)%^b5{U-7ixpgfPd*@95J8R_0&aw{hQkv=ZrhSJD~Bjbtky%8Eby%2lI9?k5He5 zV9ri!t|$a&LQ;om@bu?+rjV8goWBd6I`@LlzhLqG;2ZtS(TpAUkLjB~A>Z_YPVl7N zx(|R$AZa5X*!q&?-v+*{dAp6a*lOp$On)XV!7%YZkl++C|v~tDrQz54;O9 zpK)N;CP=V-5ADj_CAbCJ4c`a;0+PI`pCJQDSi3E@*l17rIr9wh3%a2ec)=hf&&L?} zIV552`rV@E{a?^k)S=+iz0?)F8>~-b?@GPJz`#ChE)^VnjX9tGuMQypI`_z@8!S6W zJj@$z@F_^r>IaM8w8Gl$6YaK(V$+z02AN|8Ux!?zEBG!{3ZDU^Z&~r!?P|o{X4(M% zTYz*0#dc&HyxoRGY)cM8dueyU3^X8f0+_XX6#NcUMOuQ7LjicZeW%!c2H&P`$){iw zbcZ|_z^u)l;H=;COs9SX&xMY_+wEV)4)!qA#~da2DYP5j{f<-J_Xp}9J#D*=w&-qO z`M+sb`~_o>7hZ5X`*KLeh}cM-|31%mWPD%*>XWeGLy+{Vhr#hj zhzozgW@rGu1>6U5_OIFxPC!>$;w%I&)O;2A8YJ-?0AnALH{=EHg~VU*hnnvP|El>< z!O0(4aTbF=heUoacu@Nb{z>yk!6drY^~5iDi}1*|gQpEL-tk`!)W%<$kc-=NMr;DG+%hssU|`FA`hMg?SXImi&K3cI&cqt2|W3) z7B9ysugvls3%C*z89DIv5lDDBB=r@|%Yo4o{$}~hajuP;m!te1)Vv(d`ikb|jMl$t zUXE&=14*26@XNEBm-9Q0LNVR}$Zoj^w>6l_56W#Oz=BQfjz^ClEjq7P>@u5V~{6G0@ga8^@1a!#VA z-e?Ra<}`+D;?YF3HaQ0sjdOyD#Ypp#sqH?<{lX3LrR`97y$9C%f zCAKq9HNz1yVW47#GKY5KW9qM=d=T=*!yC{%s527BZrX1zZ6T<9_^UED7!B?Qxh|X) zOst4(h+bpFXStigi)uuZa^bAnU_-)~VD-Fmh*l`B=4Dowdlvr`LF%TvD8x>O)lpNgegQf;aBR7Yx4sx!4M)tB0l>QC)S zrBeq|1F6HQOv<&TaEo`#@-4nCu`MlI+P1WB>DaPq%h4@rt7~iF*3zx+tvj~%Z{4$1 z6*3o+PFrt#ukx}MgZK5U>k0JK_r!WydfIy0dpdeH^=#|u>)FxM-?OJD-E*L4pyzN; zrsrsn>UH%N_Lla#duR80dKdJ1dzbh6de`*^dh2^*y)C^GYe%p0$vZOp9qm%xuI|F_(r$P6>~2r@f^Kj3 z@@`-Ey6!-CeRr(8rMs=Wy}P4(Q+H?gw(h>}9o_xid%Dxz2f7Ekmv8fJTenRL#B&BH z++4c3eRJpLZJRw^%e#DCRvx%9kc)N~zfMyCbkpK64-%Fa7g1C$`|Ie@ez{`90o_CjX z&pG#;bI-lcdtHGk-efW*;D0!5GA+X||D57_=8GlHWNOmxttO_|8oYo0vN+HC=MT;q zKh-{Y%B?p|xnZJx%ng$!-RiUdOOb)Tnl8t$^%OW~r|~-6JxN6xNwcXe`Cmx;zIA<5S*Jb#*)4kk0RH>+;M-w-J$sa`Gj|k+90=C7d(E^1b3DMT%KkflL!(V2#{x*;qfyo zG8%To-GwsJmJpWh_7z4#B1GaKPR7BQj1bM@I5kJbqt_$2;fa z?!wM^H{o``4SWQT+x~{THRXU?dI2&XBXXW?jJr=SLdH9TSl)HGTr&-qciDRFUfexB z9hdq<;9f*$WIR-H?abbQ|>|TpTEFe z>Hwt0KZMKP2Dto4+<(CGMo-1%*m<~I_yjH$*~opn0GI1J0c1QcvsNPG+^bO3CB)Fk zmbh5h-}YI!bSgsb^5IBp@hI*(cgJ0KcINd;)SK%B$cEl{eCQ$M7V(W2p2OWuB%kj% zs*m4@y9Ey;V=4=60)8m#2GLrUG7cH{Fr(i?xcKkJqm{^Uu*%D?!MjCIAtTR*yXNfC z6C{;A7M90O-`@gvC$|H5`CYgqG{NKM^KiMDt-5d@Kz`_mHxli*)V~!OO+QE4!T@rM z2jlU(dvF=~XXKW&K>;H;6wO-V@;dLv&PDD$SL5!YINZf8!DVSXT+&#S7~dQC+TtZB zPhu(CSnvCbk+!S_F0T@JZ%yY-I3yuKamS6gJk%eLYnq{y z9z^F32$r&Xr02QkBQ3c#?s`9h%gM>Oyhz&3CN?CNd_f1?`PuLX+To(Ug^Iqs3~)_J z=+_gciT}psJEnR6f=enXr}<8#J#hu@#*?!12t1mk@-?}3-JeiY_Aop?_9-r3?g7a8 z#7hriBauWnZy_?Syc&1QQjwAIH9+ou6KO{|@GUY?$~_s#JtpWm85sra!rMb}IpGY9K2qIEKktOE~KqGj>}b)FUmW}$RyUJ*KyaKL-D!`83p965%H+)Ph`YT z6LB{oA0Qnl51OsVr6mU?xhF2|DY*tHc;k_C0ar=<^}Gg;|74Y~&%|ZPL4dUW9+%6> zp>ZWBU<(IjK8bZdi#kCXPic>|?QGDUZ?KNHamk~&=}gpJ^a3sqI&djqb2pGB_cy{D z_i~U6n&R#X64xc{R??TaXlzyBC*0MeylRQ5v&=_M>A4Yi7qMHm{kY3+1-Qh9cs%Dp z+{KY=H&Uwn<8fT>CX;+aiqNLuaa95?EBLsMb+mXHm(FCx009~!|q>2GFwNQ+(=#>%>nIqJ#w!k+ixMCtDoW0XEZYA zF2v;>;_nFC*PZYFnM^DbC7*G~o_GL-K2LOJl2dxJj((rxa$`$etfac#%&qUoWiHbW z@RFE?$7W=lBtFg{WjFVrjukK9Zr#Ut?U_peGH^K_*Pp<}d?zl}Pmys4nf+PfuV^tq z7QTYJVxo9|Djwfun_qhjmkcN;Rcf;GJa7VVu0~X36>N#|NJv;~rjGO~B*dgSbp4Tg_*y zE-yz$92?Z;C@%jXU0qU)%N`amgRDE1cUQ4hWyI;&KjAW(<*g@$eVT$&(n(FN$x+iN zns1|2P9+EQy&reYu0+O*H{q`92E3cm7k5u^jApWc5AML-dvO5nuHx}!lE4yT;}%Yu z&-#!%mn860Z#=%o+In4ryO}J0QAcD1IF>6oTh06ll|R5bI#Xn{C2%(~-BJqQw@GW$ z3UE2Zp>0f|FrPA~E#>ZcymTdUrjnyZ5fQ;m)=TOP??A~7nc?Rpi=wpueYo63qPdM^ zv6!tt_cJ{9qT;ZJLos7FUK>Q(y;DYRgL80~M*-jYUfg|6VflAzRRu)x+oaBi$ld1; zK-xxDIiIXMkLpM04P-o5fXl1PaJiEhe}u@MKoZzMY;@<0lTRrym~Ads@b0s_@OVDo zSWFo<9g2Nfvu3z^nJ5|F6>l_Wp;ryYr6uQDdkbWQDLemJhRYfff5msWJ4o8C&yl&8 zQnW`4Tpp%Q^9tvbiR{8VB)t*5Osd4=wewJ00(*4NKmd1VZ6jMD*F>S3MtT|A1(&DT z^8+gY*WqqFUP9zN!e%5>+I~hIZUt$mjQ#zbGgCVXl-r5>Lk$4p0laZ*Tr#b zybzZw*p~0u!57Iw$rRkLTJgAI67IU0aaqkm!=%pjA0y*OPFV%iO2Z_dH%P#@<)iZJ z$=!1}@l7FK9w+`%$;1b#1K&+TDhr{2XNc@}>__(r0CsWOaZ=VDC;$G5?|w>b?6e^5 z2&cuB3-FjkJTGD+pC)y#ASKSc7P$`)_nYs;-OVI{4_Qb0c;vpvD%Y|LPjSo(iK}xd zWbX6h@x}Sb*h%TLiu^XJX{wMBSrOuZa&ITG#~av0+t#-)HbXvF#BA&&X^B;bXI z@Hqdk$nDh`1$YPH@|=RlsmyK5R?WNyX$i#ILB7_V{PsGBY%*t|-52BXEG6~5#MMun z+WPiG?ssfeh?iyL+6+qhCrHI*_u-PllBFkbS)T#m@oZ@}2Veww;qcQ)yN#^2m{mT^ zzO8JEQeI@e7RtJK%KJ@6aCx4?ok`&vrt);mfyW;yMz+wDdHW?~9Hx{n%0ZgvZans7 z3wkjlM2tVz2$w-)kh_W6+;R@+;A?R=nsxlO2kwTjk)`CQO6qlL!rO^aa?}nkQH(OZkdFPX(Wa&?3+g5#67sX zk1RBj!e|D&HKs8hn{b-_JC(7)RQJau0r*Q!N|!A~MiximF?Rm~ilwJGWCwPl8CUS` z0u~>-6R)))$g9NKOBWz*Hf7!C6!3Fs$X>+ha}80PO?9gg-#w=RE=BCoPYaMXjBV+) z3YR@wkv4-UX+*B*M1t$M7?%M&4;fjSJ-VW18Jbr`6_Kph6^Fi?kq|GOBFLrEQT;5Tr6 z5e^dza^OH$Ib`mCFdTl%VltULp``oE!(lm?nPPV>i$@CH=y2R((%P0HIh52IZ_9zz zUCY9s>m^jjrBUABzNsp2$Y(XnJ9rG`ZQ3WwJARW<-oI-vFO<}P?Y-B?MGM69+^T2M zpW7nOdVlWtwyOSBU)QW(Vt)qc^+)^D`E>P*@|#A=4<#vVPh8dWcs?IOCu8vWIdB-k z=P2N!IzAIc|M!aikBH#&-$n^F@EJ-H<=bZ>1_f|c}jmPs` zYnN_P=|p!4Afzu4g+-M&4;fjSJ- zVW18Jbr|@+fB~#WrOF{!2iZ|HEmc-av~Fv#nxU4+`Gvlwa-gt-94IZ7gK{O-v{F}v zZSP#!z_d~8x23kV4B|^p+p4IA9(BD(T`8+u%Ep&ehm?cYr&xxeR=ccztf-Z;x>Z&; zXk!rCE{75vvU+_=I;ygdUR68xorCzUDEwnjT2aO}trK5WSMjA0r@nM5{7FR2pB|p= zvkw_+w6H8=n;i0_$YGoBvIeFCSv7CmV=-~DDoa++d+zcESn6|_{Fmxr&all3Fp+c) zU~`clMqTFV1RP_LgN;}kz&a63&5%{EMGp1&5vzzM*>PL)R7qA{R#|P6DCh6?-&9^N zV|VV%6qB#H)&{ZfvSV`c)FfGTMj_lpR~BJ`xDQ!&R@l}|G@&x=>!s(SLr$XjhxHuT zc-)4wEJoIOCq6-U^d3HXDciJ)Im5*Wj2gL0+rBv*E~tGZeqAc@Yn6i&Qj+DMFU2kg zJs=0yP!|zC*`=1b)C!OKoviM1XM{6@vr?Ry-QG!A3jFx&ScdI41&g7s-Q8#Hl5%4do6<{AJZzn)eL|n9pFiQ8ZE?%;Dkv&AdCq#k@4Q3-Yg>9t{fT>Ie zcG5j6GCd$UuqPpcgMl_SXgS*&eA8%9`{*S)371JIWY`4mc;IH|r# z8dfNW2I<@>TcoD-v^TLw2~@BEnQ{;ub2{OICe$eJyjsh*S!w2k$T2 zLEi7}lY{-iIUB^xBZn`1zB8uA-})E9$6U%LlIfT%iY~W6O%s(zn!)W%a05fZ`9Yit{DCwTP`#H*0ULMTJ7` zQj1y9nWc19d2(nud&6QkYu~*SDb|Wvf+=IpuGrY}%=-|@f<{8ppi~U6b}2Sl>a9&S zTHE;Sij9tWwesiGEdPVAYL@?kP=Bd}o((pj?^fxvA#=N$<@-)4-}76_e~+?SsuG|zIBdMdF4%V+m~{JW=nKO%2F z4jhg1wbzzXa;e)fGfxFBwf9zp!^?%*K_OChpO9-w!--~*@Feo1LtX1ljq)-Z{iI*fj*|@!SJBg0sy3 zEXM4Uu^Q4usJ&jbRM!%ZX*a$Z4ts)QQ&PR^W@^DujO`dbQ^q!rszHFsfpzu5wtseM zV9GDVfQG}8TqKXtsH*a)GdZ|8r2xMfyXD|(DcMY!d%`3#-bopbUk{SA_#5)aDN^sf z8R3k>Fg|=&%IK^3nveM(nV?~be*y;Svnd+^Ne$?8IZSvg~)HW>|+=dLE| zp}~%HT|W{w@G?l{jaoX0B}xW=*i9@wfHk3wJi4Ze9*`144?|uLhrQ}XkbO z4%NyWb9R4efUr@je>yvk(V86w)bIaL!T69Nd{)%bmO~OA%z@Ntvvz$AA^kGKHm! z=dew=kjl+uiyRMjPL%Sl#(N&MuSJ2dO4DS=k5e1V@u0iDmaG_OY`p%t=KAW{hIbh+Dh3`GTjEUY$!YSPK8fqZ$v1y0EueLFtX*% z=s(fi8HdZEbZ*ePy#gVsRw$vyohUQXK9u9PYWsl?A%cckWL47MB6?JbI^v&Ybr>47 zHL4y{HKvLjs~(?6^_Xnn30|Ru5-w+-@Y@!@*79~?+f5gNnAo_qJxcse$Tq@HVkN=R z7MQ1G&dii-sbgkJ`gf8Qx8F%kG06~{=>|5xZ%?NIq~y6q!pBG`N5A`8djh96GW;L#s)Rd|a)n>;VnFHIGZd0DtIneRx;~Pz8)c>h%Hn*CNpz`+-$A4k>3wi>NOf)5O&GjAsOn_59b;bY2QW3B?dk!zo5D#B79iXOCE=8`iT}8Z=Bft7ttqog>CCN9ENYgZull3L1Nq!APL&uB?RPswUYEULD!bqYrFP7 zC$x}l#7h__k#J>gXH`_e2RJQ-Y;Q;5lWK*p-k&ePx7Au9bp24$k0YQBZ^nTGiR+Qi>DpOk)qo|r^y%Qz-8T2b34IB&m6Eh0S#&f2C#=8XdhHXhGnyyZW zbMSXNK2b;68Mb|Y9_}5hrZyKje@2dTLAtuO?0mi-5bj`bPZK`z)z=6f8W?dpJ-k44 zYqLkarvP_Yw}9W4AnL#zOdtLWWcA@(WH_Z2aQsfkj0p6E!%(Q)o7AGRclb7#M0PIl zLEMA!uo-EXk4ZE5lukBu@ezLE%#>7NdhjtzFlpHKV;jMm7m+nDBx~kKD?BJkuQhBl z*Ql`^y7KiYph%XOwv&u`58FqI93GK@VcSWt1yp^w)d1*(e>+a@hDt@-Ma#?0!X%)Y zwS=#OVP{YX*k9)8zn1bG6X&kZ#m`v?&6zOFn``!nVV$(La#GATg$; zd@{)46W%*^PVE*r8O8z`hkPB9q&MWSW0SwVNYIdwQ3wDjvw}0S@Fw^$bYhAya4+X? zlkx)SKMT534$R3h`6Z|H2FRcSObXHK$6Cy0IW!uo(l}A;D&J6~I2UAKoykbBiwb-4 z39!NWBscICpM&!S#f1jmhH;}!&9+{NoZ6a%CK>}4ZRhWUWa2kwy+HC#3S7KW;6$9ip^l7rIlL*tV7_b7dhL1Gk65?x%K3-=WI-zW zux;1{q;@|%mIl#6Jqp`e>Z#EFHft}_1O+id{r4NRKo@}<>#H2Qqe z&$hDK2Mxry_w{KzIK7^(XA~a4Pp6!NhH?tZIP9ei-vui6H}d8ex|SsXVZQiG5?5pf zmGW>57|3y_&<~{i2L(>Crbpqf3ST|^>~YQoQ*R5~K1&A8!k!yIk(N!4oJ?t!!#n66 zgQ2_PE?ZFXdnk~q8J;lR5(q0}ll9dyib1hP2EBwu21Pwkfa(=uCV)ob6s~))L~v>j zI8q)pVig8ozxnOsYv>2jk=(^8Mc1lyh01qcbfIAj^n#3aaKAiK6mn6IfrcQOQmdw* zx2=kPgz2Swhq!#I9;ll1=D%)CdhSXOS**jk#BHH3O`#0v$R~BDxKH9eX1Au|=?Xka zZ{TD(>}yqwxy|2D2!^sGrt$S{=QJ=Wkr_@=#SG_-PHzHa2SIcmRD@t_6Sk?CIU&@9 zxhCb|fR|AyEPC9mcHB-V(GxW6SOl}e=SojmGayGR+bS4f4QERDXryI6Sq39O@G%2i=++a_>|ECnZ_x>)x5UASHcmW_ld@J$q-_H+Y@P ze`#y6co8Sf8;x>3p-FLyxEL!OaPSoV!NUU>%S2nYa(_~p4 zNxM%Qg7ePM*sIoNUKIx{55-cqzULuOTv~7 z4cVz#V+)akv(YT?PB}2Ug2>qH0b)E--(rvI)jaX*6roSJw;0NWyGZC2z+R!yC~#9E zbO{9-OW5{!3!zV#p-=cn3m|o*CU?W@DAj*sq!QGidP_WMC5mI0N9wg9wgKLqO4=?@ zsCQhyP>TlI&0DZE7#yh?LX_CVmq!o=Dfi81_o3QN}C_v1tPuTKLr8h>WZ{2CA z%>vZ_o;Cd2<=xMfAoMFS)rrae@n*Ut>LTR$lYGMbMLj#fdq^V8=@2r0JV6pwssBKC zB6G63synG0!B-PwD5ZPwlQB;ueM;#aQ1-uAd_vfg) zRz%?!uk7b+ng)(IVraBzF_k4usa^Hn8VE@HzI@Nwp#E3EI0qqGhyx+;45y74jiWw^ z(3Qb*6nUQ?RpUqe;~%>X&sJwAt-V zOO?%DoBwx^2v-AHVadanGF&W}g>Bd9)4VqD@o*SnQN#s$P%JC~OW1ZlvjeNsM??QP zLzB+FzWtc=!O7ab#kJPg{A}y1=3kD4hS?Dg20bA<-cr*zPjDvIEN3PwjxGMCh?hyG z!)#n;u$!=&m9)L`yPQk#H%H!jTz2e{=C1*S95|jh9iG=~t#bTsT1Lj3+Q;k6e7%RG z90~>4xFk__teMs}W^F6f7&faur)Oxhp22+EWqCsu3Bqy|#Q;jZ$}r=_(fK@3j$h|r zr>IBDE!y74IO|lvsSAJUN2p#7UcnXwZ%szrmv*hufDH1Nlk3l*Cy=iX);uXmL{Mp) zpT&}c_UFI-hZY{>KsS^0U}2ObYCdBST+86>Fku8TptrfK_;1Jm^i0GDF6~_riJqC&7ajcQ%e*gq~ge)fWrPRWFBiEWu zSb_onUFs;qY0(%D@CD6Q@F6nJ$cl%SoE0nfH(2p7SaHyz7*^bI3M+0}BV@s)U`4dS zqt9~;wH16g8iBDgboq_ivrqiqY^cXiW93SOI3qT?q^vI*6D8r;_-du-sF^X=slZnR zptk%s|6bL~SbZ!e{`#}kP{YqA{`xfUKYiBkJJ$P#i9$HMy3)4E)A@*%8q^h?S>-qOI%iRUH!iY{_VdS|6C8KT0b5pqFeOv z?<^1L;3y*OpwoHNpqaWXN?M^@RB4v6mMH!(C$E+AT44h6gtD;?q*%GmD)>NO^j!BGElajr`PWZ7X#eJ-7Fr^-} zW3g=PaUAobp7Qcm9w?XUDgxg8Jy2-1q)*ZLn$C&R6 z6m=~_tFvHbrend?urx(zHLc9itF%`rkF>6jR`Gj8F8rr{4f}{u0E3M%eml5SXyxNA z2u8tDz6WDjbi%9%M-q^ds1LN_(4@R>V&O!w%HcI!)(0w_98T;Z;m#0XPv%;_Sje9S zEpIIcl*-Zx^s&4L$5d8-#O#1Eh5x5Qn!lf8TJ$9ly@`I}gpA#>sOl<=t4nHHA4#4REA9qZtA@?joMScj7+)G@@rL@q4BV{UCZ0tU0L)oE3Lvn* zG~z=@t}Rg3sldXJp^?kMc5zZHiR!F`HT*E=E1I(-85%te? zJ))1gH>3}u1cbR!>-0igRPz6)M!0&p9`%z!Lxvh7okbQEetfKid@rYc$AKz3880K$ zLHxA?^TvDO@=_0BjHJBhBcq+RUJ2e|!AQqrn7zSUl0BiEI1#l0GGNq(;ND6UqBVb{ zihDm)#7KjCKa}PVWnrPlA7a3vE__{!-)$#md5reB0uEfIf{2aKrDC&MIDL~Xiz&o_FV!~(i0kL z@x<>K7q#aRm(t1;Y#=)}u)27J%6hP?D6qrvS?zA8aZN>b~D&yqqY;6uRi*J{F9+7M4T`pe6rf4 z0TJU-w{a;#NFB-=^)`!4k#jO3N{Ddk{wU=wCdGtdoI~D-X(NF`hOt7VI)+Sw@R};c z#T6htviQRffq;7JQsyK2XvE9`+Vh|!NHL}8s{|przxL*bIeAo;w~v^JiQ2V%+pK*R zqCs5fQ6CUAM@kHQSpi>;H#Eu0{)x#XRS=$sZVPX)zSr@C4^B)-C)@||gGCX941pMe z^<>9ZjycMg>+hSn^{-bT0+7^8lB&9Ai>K}w@W&@~1 zyOnvW(5|55!gV&tqK!CAGJ$(-kO*rE?5~IlwAw3 z_6XRy)ut?nzp1f~(b14+H=D6VNvp(+w^6(EAAhtwt4Y!SU3%*PJ>%EYTiN}B-lnVn zO?rE*&FSfF4)bcz+buu*a(YVyWBqD+J64bMw%|cAfByadHod)xIpNpS+f2S~))IsN zO?vxRtJBllJANpOy1dHf&bc;%Py*U9=XFJsdi*h4I=FsNiZoHh}Xg{c!B+4Y<{>j|}~p2F}6gy6c=KFPtpB9;#pq{nHiZ4$QH z2igOmb50MiyRdA8sh9>@u{ImY(6=z33R`WH)(N7e0PfqLvDNB>dp2qd7vlN{{^|O= zzJ^jweLpUz9TVz%xQ6;JR=jle{SoR`JE6bpT6+jl&eY+( z!Ok9%fUMS6f{7lO*hST}_tfgz`v_|9Z9T!$07dn74@rZ1 z`$cjZh!b{V{PuALy1w4An!cV^rLSX64;mj-_SK?!o3zf<(xL3xwT=1g@-r#9XrcmY zg6gh^5Wb+Ran#pGjTY+q+joef`%eGJ9V)6cK+=BF)be zvMS|$AQG6|=*|D!4>CIxD`Z~cyJoG&JPMh0i2sjJ8VM__U+Cg1JVCEXaUAr)hm?r; z5|cM5c?4Bq(Xc)V>O%CwcjwQTf};##I*q+3h)IYb-Tng|^#vWRt!DpWliumQ;+oTo&uFc6dy`3>v-V5X|tOU;~P4G}jlywtSq3zENvVVW(XSN&ep^ z)6>=;UGLGZxe$9G4&QC&+Ap@t(#g&^8x`918G^I~)pzSQkkyl{ z3V!NW6fMJsej!7~t)IgCUJOU4l4~B;pRS zBK`<-q&ROR6&5q$Pz4x%AjB_RoiUJsVvqs7^?Ut)C#g8;;gZGLroOD1{tLr@op3&h za1yV&g@PcxIW)9X4h<+( z(zeTK8$6*trJ96fu}-s@Kyd_uyAIt$J>`v+Kw&A<%T5pqO;tku?26;-sWwIJr74bH zmMM*#@kJ``Tb@a1LNt=E- zn*tYt&#n_?GZ5u9h^ssSVGFiK!0){~8<7uw4jQoI9|sKP&tP4qfe`cm+2b;d!0!8xc2RfBgVtE*HF zl+~=KdRxl=iD3f=>I?`xHZ`FrVo(O^3h{DNwrjYxY%T!3!E-SeD?w1YSPH}$Ij0pR z|C1Spe*;TzB>!Y3G#RwH)uZl()~z5+f=e*#703430}OvQruOTW z*;JNWV^wCqSq{ndl=u?H%@viJd%>A*?Ikr$XofqFmA9T|kY8IB$A($UaPfD*R(|Yw z5FEFk@R`j^qc1eCh`azt+p*cbq;|O=C(PG80Ht48-in2xA_evI@0Mw`Oue8tt79uf z33!UFQg$4jwFbio^MuPyU_LYi-HpN{Pcd5f`wk%Fs+9LHC>&6O7^mcx~`T+ZI8;k-T!+CD2dl z)3%)L8`HOl$~=uqM17^+_(D&km0aVWHx+D}u?^~(a^yQ4hozP%7_KAVAuwi2(?~kq z_W9inKt1B3HA60t8+eR>TOcI!HZKk7o{o)%yMk@)rZ;zwO&yh!zG#! zz#ZEfmHA-N$#pC!&%4Z0W2P2$Y0wBEDCy@qk^-+wKH19gliO@#rr&hufT>d0jp#}*N!yiBhGbue6+8Z!6SGCHC;j^8T( zQ%odNOvqEB7MvrLW9?WZ^9Eg6KXLL5!j}2u3-JB4k|*O8S-2e?mQhq*&@{0 z0xi9~eb|~_^kZ7NC?r3J5`9geZar~_LUV~r$Nz`-7VU+XK9u+KvYwP=U^*V^SwFv#VsNM#R6whQ*TePfWy z4^N#^%cn>}1wF+E?+w~ELKuVt)11_kPU?a55Q0Oe9tsZ7jtk{))SkTkzd}2dG-W-j z)2%VTNA~AO;wM4>DlA(QHU)1TSyW zZh+WP)WbM&j@-XVyIMR$yM@CLJ26mz-k5u4AVaLzwFS+{p;1s>_egn7@i4AHvO-1Y zV%G-AIs!@>c6dom88qM+YLNo3a4rq?wi}+fe}7EX4m+v1sPDw;K9}{&-X_7TC*-t~ za7Msd*sN?likM#M?j-T{XzcXg3ROs$67e5FQ@Ey739s{pt||3mN>kS%A7mHmN7PiPAIb6S4gCoEN;(wD1U4p}DkZK|X`mgw<;CLfMb5*; zasCwAMtGO+qv`3T(N`*rS3-TmUPsC7{^O)uVG~Tq!e2fg0q%8kh`Nzm}|S6DWe4 zw49RFYxSh9&DbUmBTyKpqi&L{P$*6;z^W#Cn39E^J$PpTM#^i|=KP2R5WrtS zHxD~!zf|skJqbb?q)k1K;|mQuE@Hw!jgV<;(AN1PVmk*`34+K!M7s*{FxiNQf&Op{ zRE4SO#;%KBXjT5QIs1=<&Qvk9PE&OKANEYWW$&W}t|O&IU&l*tt{hiXS}!xy*gDP~ zziym6t!SJpP?(NDN}Nf#61(#@ffUZ5;0S*Q^iuPnInj;M5Ei=__nk`qzfOyXbmMq~ ztF~}U-gR_?Oqj`;087T)g@;`*eK|7(R!=@-FgcoyZG*5k=zSOpqt4<@+v?8PJucS2 z)vwYUYzeahlqr_E6|Ql&>>o<7dV|Rx_}IX279|LGelkk1!lD9dRki@@b~)J3;!>%GT7jC7xlZDj|Z)jXxOtg}SHN4RWg`;OJ zYaNfWC`=TXb{TFcHVGb%4NXhqn`UkKEo3YRduyVCFg9!wq}09~&jW?jz8t!?2=;)L z?8Bbs9a?Y_-xws~(mXgY2XQOYkR;Zm5I+e2G-5&6V$9mIaKdr^HiF7Vk0@&cU~R@U zDl&(`)e+48XMU-lB;$N#5kWThK%u~j`J>wn;gcuM`cAZ*1#sv{oRrTK%{Zh^xG(uD)a7(>UIEvLQkiCV zEnkHV929C$XBniaShX3DWZ09t;4dgZY)uvWiy0ZF*F#Y#PVCLe*cQ%m60`;DQu|un z;EiaM51_P8mvPWBRib3J5vCholCk?dnZaTzlo`ZIa>+_{0^pj|aKQqBl7V)yGtF_e z)px!pc!}O_@E>d-Hie--B0An>v6MFw$3AHDCyRAQ)&>u3Bct>BwuWISTt^hR6}PIK z9_)uE3{2OS<28LnV2_mlqHu;KQdI)IQC*U(eKC{w;ZBT!+=wv%$}nhbp%^H!|M6Cm z-{KVP_27{X98s}V1+Fn1PjY?h`p}V}2xzT1LxgPi-;ALa2_qjuTsu;fRuPaRU;!jd zj)HV2$p6$I_p9)vM7vyE2n{LhTIOVjm-C)IR zAjsf!!ZcDIhIrRn@Ce*zEL29JIOs;Kt=hp7GS-qXf*^}}+CshPiLphepFs)W>uM2H zJY!D4gRv6_u>$Nlx*jKov#oXcg6@ASe#&wuR1@h2vKxx^tg;p0{pyo*3_Xd1c(1Ao z1pFy#ao4s$*qRH3lTaQg7Bm*b5)qHjzOXU2wW$AF$f8>7H~-rD zy_{JQ0HXDNA1qjVT;yrdG5U1PnTBKc&k7x}{4K^K+MbMG(Voqi>1##LmpDBBH@2t! zuV_!t)3s;luWnBay`BZVteAKjgnan%St6t+y++4pI*P7FFK5x5&ZlcmpR;YwDfAM9 zk25du3;uZt!lG6JS+nab@ln(Ng!vMh%pqBA$z}ALWp$>7yL0yW?8bVg9-jcOA=a6V z&0P##@PB!l;Dp+OkYV|kXx~wB4tA2U`v(7^C5xT*!s{BRa}Q(D{)98mm)KGS-xg-avToz?nlVp~{OD)M)4=!dS^si;Cm>S)o)7={ z`n$!{Kk~QKpTL5u@NYg#{4c*LrvD%OO#e?O4>%yc(GYJSg=>>3;My^;21F9syn3p9 z!y;_aeyHOEEYX(MCf(Xny0t(f3r-``Qh%<|F^mf{U}giF0dYKFzij)08U_~Rb*ktK zPP-}D4rG8bV!v^q*6SAMZ>RQ3=;liBpUXHVxtq)4hgsUoiaV=6erepQORCNfh^boK z5`TI;65|i-Rp(cQCZu4e$pI^^NY%WCCSV2*Ij6U|EK}_QyWx9j4oqKn#^=KSvfN~6 zeAZt$t8>q8;W-r3Y~%@EyW;1;@Yzp5Xb_f->97DpgjO zMeS`3;v-BVY6hNWp0(sC_P-fZ1tzj-tmiT@zTkD3+t~GmfY?|O+Q1V;nZ}d`kF~L1 z*~zoYvSb7i1@@QH6svx~(+C`}0`sg8Yc!SZc;rz3Z5#x6T$|m9t_q_c7g-M7MFh~Y z%yO$gx!$UPiCCUc0Q5vqmCfUAp^(E!Ro$kdQmd;`F~DcI#&2Rsz}zAR2#nt)?pN_% zQQg)|)uOIKlt2bnI=q%lxGeaQE!U9>SD;98#cx&GZ{r@U$vEGlMC-YND>{BS-`y}u zXCN>P-e66^LJ!-8qbkj|7Nj*;zjR>a@D7fbu~m*2cZqONZPx0I)x9qB%sgV8v@u-w zEyF*8QgPI*`DIIe9A$5~T)F`+6RwaM;^;Sm4%Z6XBW?Wm?2v2jTK34Lt}W8)Js0PL zOs1nc)&nybNOWK*5P%Tu&gNw^3K)dUJM6MT6S5I`0-ETiHy)8qA{X6&B|eL%&H=x2 zu$PtX2=+>r1DPqZy&S8cECQ`|Y7dMtd@?!0Cu6*(`()T4I%@Qq1f{sb#jZfuu8*cP zuQR+c%Ui%E4%_l@>VKyCRe^98aUD+fI*O&dW?&ch_`|hyS;{+%7hU7mGEa{MDT#>% z$pq7gU=WP+W@8UE!ZwZ^g3}EFIy{CtgyWnYM|`v7(4Cg(`UAAXkarov(tHgO_bM0H zMy@5aQTVO5z7qe#n z{U8KraWY=i_!7HZSpU*U61Yg`vI)R`*|WfiYy3xos#gjM|5)4$3fEb~or^Q( z3aT;2>Y#g(PW~qRSX7HEtwiU8l^NTP9C8H;LHt{mk;&xtTjb!70>J=R;Uux@4B*Yx zlu4hSe2-Demj&em9Uy#!2jhlxKRY){_GmMx zo>^!-h<^40+!hFucQ2}y zns*`A@(fCUbTw5gwvql{dNUCMf?!VA4^mzUpt;o;o^fTxzy7KJRr3djv1&c7lsp9i z(ij`FPsLtOkO=o&ANh=17D5TvK)lk+&r`UQb^of`I9W> zCP3X^9R^Ot0QN5_!4cvMqS<1(4?gNFZ1;vLeGIC!3%&!Z6!=!K=GFGh@%1PYU2_YC zHV`xaLD0cu^WbY^m<3%h#WLWB?vH4nI4>0*%vNa=&Qww$i z4hIC>u?6Z)pV^5fCD^+}3H9EI-$EoWbBXiUJbXnR)Kx4gT{wc0ea1LlwiG*Y5UD}avYaOu-4}2mx@@&eyK`OhIhzm#~unh5_;K{pcDG4 zjGbEjx)P!*AP~#sOb0|dAuzVi^y*IWQ^_!z0vT@Or>hX8Y@T(}Yy$Spxv{@dNc|>i zKZ^KGd+h$pbZ%V0=8RBMcneO`f69w+^Zdh@zeBb^ZLJS!zDctHTbPG(5GriMN54xq zjZ0nQ&i@7t!71;Jaip!^%JX$iPJ~!J%n4%_>nB`3<*7F zVbyaF@Q^yGGiOe#YtR0Ho{5Td;ujh}jPj5sJ z_l-Hl?#W1)f!ifeke0}yAy6u?!n_c3G?$Gpws491Mmq{hHi@J1ZY<0U-dF-1YY8l0 z>~FboXGCMgeL>!CDSs^LaH*d}^>JELFph+U1S2doq!4zSRkID$tC$bX8%iS7xFH3; zG?=|KWrkDAG@~%WR|BvM7B;?nfu+2i&?NPH?1f=&2|lefCKjev4z;1>rFd^7>amh>$g(gE5HFZ;u!Qc-jg!8N=qGI#Cu_#z%(3e zSR|0Z2qud+q;QX|I0GMIa6O&IBPUmzLLn83Yw=Z7Fuik^3)u-DFyzXZ%Xj`bQlyegH~N5+`pOGkbQ0&4?bsl*pz ztLY=kk&`tM$fWopI(*_QT`#&s@kr1vi}V6#8W`TE z$yzh?gG7*^_vf@k5M}flZ1D@Z$N(2aaN!wY1e)24^<4&C7roR=k~Li}vjI`DSb;qRsEDj-kr zb5!*{r*%2P@^_*t&lsE%f8{!1j+ws(M&W%c$B*;|b}>5h4tpebAwq$CDXF-^i#t$l zyqO`_p`;H1r8VeJY3E-C?M45t6oe^e&`Qj6nDM~r#cnGOoHng>SAy%kmD+qxgt)=U z?pDbo_4QVY(w(AoC}#=6pO_B6XDan4yGJ#rh{oAoM}1U`4rU3(cnJKq_+;^A`ibt4 z^FM1rAHes4HfnD`j=-iRdnGF378BnIS(NErBIXS=dI{PLgzFZ+I96N4KlQ_Gk@{N7 z63om}DmLlk7jaP3Kcec+s1YI^MMb6fNO5kZR))dfNv<+Lbh=c zfG!3=XthzoMjgN%0k8t#S1VC6vi5unP8gMABot!;<8U48P5m$QIIYK`6K?EINcQ91JQcbe3d6U+WPn(5<&;xU&A*U7;tXq zb86Uj8J=nJq`sAl4ntj{_dTDf=?%#g4gUX|M;+2lVWtCQdbdM8DE zeA}^SdPjZ&Byd8S21n*qH2Q+0tgHlrcC+RhZ#Jz>XlE)bLk04CEC_%2>g_&hK70ot zz7707w^%<9tiySin{i(5a=`L0S9>4BQa(t=sU6r~W}K+2RfG5!A-Z5W=P$&ICpg^`o+_a!nV{`sl&Cx zEb>QCNcB1l`4BjeB{nS-(kIPjcVZo%h@q`InZA}1t@JA0{4GKbK08N8P&#@dbYmeK`aZ?g7IuW*=NydI1%5JZOM|IcjXY*L(nc^xAF>D-!d17p&2^>=;6@Hfxqw_IRA zVD}}9y&tG85Vurlg|#f28PRCDH$JdBOK|It-{_JzT^r*TtoTWHomdPx+- zse>$!f&>hZcHc%yIZp?9C<>BIkpI9Rde)hC^aZ@YGh0u1X1~;Q&urT={r6kr`K0lC z4%2IG4ac`iAIgR&@gmuf3FPQdkFD4;&q0TEJxs)d;7BwNV&jL2v3H8CkvtDU>`@WH z3o`~{--q~69^kO&BUwv?6BmY@SfLf(YuXrCIa~#|*FOIX9J4H%8vC!rSire7gP+jM z1s!3$bceqm9TB2PdliHM(RpzC@K!F%J#IOx69kjGlM9gpmxkSBs*jb6R6X@#{$Onh zUns%U|AP|&;Ib1J)9eT_qj5dwXl;Ffd{4X(B9ZMEub*~1g7xETr ztrn4wCoaegP6VF`Kb(6J5|%`0I*a9J>(PB^(iXG{l~DCTz=U?3G64?wuAb0^#oxep zhXsgqGB9{tM3YTmG#MKXKWQNv2xr#@?Nvxhw(m&{p=_Mz{T^ume^@S<{T$6n*pzfD zI}Z7JRr0iP9-NRS&bUwVs9#aHOGh8eolw0Rdetv*a-m1+UFya0HS=G_ z`%2O03C5{~aJBDt<51F=(@}ryCN!}?7am-Q?^#u1(`W+D;={4_EsY)-VQWq>3eTuS zkBZPEk&7M~x#*F|g>i_;8F8jLEpNDh6{?td)H-RW@Wt4(=Ua2%Fg9j$e^|8u%T}lc z-ndn;H23+}m2oMNYdEf7Q@~#TI?*hOQ?`i_o&zkNw8P%e0IN5Cvll14dgFJneO@Aw z&AGaIyk{$ZZPF8LRqgQfmZFV_5M_iXcJ>Ni0|SR3-*2aA?*WR{<2#c)h&qsk?+-SgxCZJJIYamU<4t zL1(G6;-#BFo#dryi7ff|WSbjL!#0J8D%3YupHERPp0oSn{)3G*=5i)=rBXVnUj6iPexfsSY37a#d0Bg!v`hrY$&mnvqd3V|0=Vf&fb#Q5NCH8x>9wBzrFT2!xVlv6$j zr+j6sOuL^`;)?~dkW0WA_kE=^h8^SaGmLT1rN4+V27r&q7`cMw219OOK{MOu%j(|{&hprd%fs z-j2GNFj*UcHE4o790mDN=<&8mQIM_xp>On=zeP&fri1j4g4hg@m!FP+{96Y}je>kP zSTAM8GZB!5I*2(6ve^LH@b?JFcpYSaYNWX@7$7^JjezvgLEejk1PN02SBHT*4E#C_ z&>tYq$B70sR@)c%Vus-aa6`HJ*rR^RbGrBeU12`Y;I@(33&edkrS4?+C5JN?VEePm zonM2yb(ik?0rNr3d0Y7W0#uDl-^UDR5+{ms8(g4Ax=G6C!L$&F=@u&WBIzXdhh5p-IZ^Q}YpsmaBe@U@>DGe%p ziwpdQk)EkD(*YqG7<9iTFaUX;t<4ehWwiVBJGq|=&VH@fz04%m;eaXt&d`PeFe6-E zA7QrKimt-ph)E9HnPwO0Qw+~%qVr&IxRB$dHgXh6^KLi^n?4UAG%5x{YlAXite`gt z0Af61+7^WM;Y2E6IH>z5F)CX#)gu81R@rHNaK6S4I1Vum zv0L%Iv{an!YzL-hq-y71L=2!%rE09V24+~|{4H<6#7jf^AM$~=WRCfdWgKhK*)XrAplj}7tm!wE z=6#7*bo*SvMob)DR)}S)%68IS#9r98Vv)sEfT4RO8h;C4jzDjZSoC%UdP8`@Kn{@G z)#_0v!_gXxB`lK}n5bZ_7#R#lSB%1KsRlZuD2o907flx^>sk|Kt-LtK)Igai8YqiJ zV7S=fkme!$AY4`f%Fg)m$6+dOwQ7bdIXp+q=T1)|y^8u@=ws4i#2abPqA0MYaNA1|ukG-^GbWdwZ<$Pm%|OqR zwmO#%{)1K^r`Y{HBq@H5nDD5xv^$J%rU(6Sgz(_vkoj>rQJ*%kC?>okn5!^xM)#m% zlgW^S0$Vfxq?^^}f?tIPzgW8+NqP9x>1Sdjyv5py_P{9S*u1SwDR#FrnQ|MWIs}2v zE{1E)2uQ$IX7vup-_L~LIoBMTCW?ZnO~@@`UA7tU85~mh}LQ)@#WXhr<~C z0w`LffM7$jw zi7goZEqLBZJ+Rna%AerK&x_rf@xlST@PjxkgJ(Tr-!nGV+B4M+x(CA)E+}EaJWNC6 zmsHQUM)EN^IlRdTZowt!#Y~HRvktG732;<+?NlfyLkahRNN0e@BMg#L`sA2l0)tFh50Vrt1D^wsgvD%nJe;zz&XuJ#Cjhwx zk=OgSah;1_Eg-iqkPEd1Td#aMYjy@G+a4Yf)F~d?h(S$I{32{ z)Hd=b2@L#cEI{AU)i}Ia@M!z1$fHmjwNGgbglyL(lS!G7lBsj4-4OvI*`GD^vdf?T45 z{3{CLXDRzj379nRoN)LpJ2=+046*|QhQ;R~N-O{;=b&1~q|m12 z@8qhf5^VmKDObQR&?e3dhcngh-RhUFz{z@3&v&V-c^bPMnq4Tz!}tl;yUpcy{yE{NW+TpMnVodVezOuv+J5GM;LPIAP~y`yb) z*8UVN6>Ye@pE~PG1Vn_Tyyn7UsxLccq)Peq#X}Ix(3K z=D@UAkAi)jJ!(BqT44;l^d>&5^JZgH+E%{>)>A#4b9^9wo0NYLcrR}#2fD*F+KI}! ztu$fEQ!Z|kz))e`MD+ehGg5%E0@6kYc`ynx+5kEJegxzwq#{b05(VjDfb1mYh>AYaK?X)aS{fj> zD9Eci$i-2R!&m8TX@*HfFQq^SX%Ge3Zh#z&f=tvwzHAoh(NY6sA@MKT(oY9j6$J?y zAV;Hk>7auwiGtirkh;GZ4AhjD5&NK&Y@wRpr8z2eufDo{;Di55yGx=!DL8xc3UW`- zzrEPK!;L#b_umIKsslF^OW@r)!a8+LFp-*IvAdD3 z1WH1uD|R>6+us^p(R*=zOfQT$q7Enoi&boRPs6t8pnU;ZAF(Z7UI&uIbde6*238V+ zf^>kvum5KR)c#VE`u zln$jRr#9Q7|6VeP_f730PE8@((-K(-&yyUwzHw}~0nk7Pm=^)?0)W~^@Dl?-LzD4* zLj>SrqXaDiP^<$uBLIz9!vFSPO?t1|xc@@RmSgDe+ym(h;84vg+Zd#uZ--&Qc(+i} z<>$ciSkRc3hd2dJ&cr%5!$O^$@$s8U3WSwx1F80bDc`jLA#jYT<<#37PeYJ;&_9x{Mg-C;UM_wil~Ev zaZco7X4wT7=a;gnSXdCq-hsKAEw}(J(3OOVhFbGLp|g9jln?!oqENU`5Pm$v!}ebjL;-gz%cA9dz^uz@Fm z!5mx*`Jh&+q0cd#;i7J#&oQ1-zJw;Jp;9BQRHW_1RaQe4NR;Om37YK|st{R^;>r(- z>m)|XVjV+KKRTX&Z8SF<1c=;h=5{r5lcTvy^xP%PZDr){z=KgT>qW@`M=+IM@Rkh zBwt&ul@hwXPkF=-n*WA&bjBFd#)Gl!7mZR zfR)B;2aZg!7u;iY@!vyvR44dI5b??mFy4WYgyYG_c@pTGgVkebdGW#$^>}&g#0-?q zm*I(o@olU(Zm|9Sbk++o=}g^x*`CM{^^CNMRT7dWX8&qkqZGS+c5lK#c3Ac>OB-Aa z;E*V7PFtIJbZz&wi#kQL6fc-DV+e?RQBOuw+8RqsB)t3G;ef7Gxs0PUK>}1rs*T;xZ%CV5k1+pQ_K%Ul+>HC^g3Iwvu zLjDK{CD*n47|5XldB8$SHRO?81L-4>u!V#)WZ6&y`A}v9#TIg~hRoR8K$ZyPSPSW` zA-fGRkh=vk*h1bPEyZosXH$6HYXq{fx2g0(4XM;;Q+VC81@fwe+@&EG4Kf*x70447 zGE+mY7-%3l0{NYV6lq8q4^U8g_2>ObyE)S=1m9}sWOTRq^E_f)R2A4ITq|Lm;PF$Phwy{M*q2+iL->Z{qCVLQbvfpkJ0MPM&!l zXQgUt1zwBgrG9sRi>cL!o?KU{hitJb#C=%wZ}#7Zub`eaCGex%EE3VmmS+D-YGat{ zwBm0K&DPMyl)oFDIANipw*)3ww?RRq&hiNJhC!$Ve-I#qK-Iw)l~wc7_%4o(M($K5 z$?&t83x;9S!>knPKKdt439g^UuoLDk>M5J-|L*Zy97sD0u9S3;ipGFdRhAM98KogFS;$I(_$|bvAtSys8T~~d`&!6`L!>NoEaWaGS@=F8uGY>3=zmJ7E-JsJ8v?nd_zi&=Ui?f$7)E_ zLS7R{frSj#kX~ITl_v#qsD*4Cu|rCvFv!jLVH@~iF2`Fe^VEKZAHorb{P5RbfFJJp z{U-23IuTobcyrW$U$g&ad;`C$Sq4eXI~OvMl38N@AHT(=`X zjG~*!sCqGP%-fZH9s^qOL?_7;bMZY`MVtHTxu6aJyoM*PI4FfD;%RrYPg{~FHuRRP zxU5X>;dPJ8L|WvDFPTTe6W_zF`~A0@lvzk|8n4pQCEp~ck*zg+>R8**KysS#5FS*> z*`k|sn#ErVi59s15up%-e#7^u0QgFQd-_4bX-0l-AfKSjfLvf9M`*~M7P3Mh`4+MZ zAmlV>q1z-~)*KJ^v5@xR0(r(lA_Cd;oheHTA^$=DlJ+8OJwDy6PPfubBxHMgA49go zWp#S+Cm`F&-;ivTNyS(KYNGy|VO}96YnzJNid+t}N_o<(Qf^Et4wkCZ(t5(ip_YBs zYE)sBTJc?pMkDdkTFTeOT%m;kCI)m^%4Zd7g#o17>JB=GRI&eED3UU1URzjaW#2~wB^aJV8adSD|;yJf{BShx7=N}++cgo1yRbqy8_O{Zzm}-<=8kfQ0e? zM%-rc>GLH0XeEpemD%_ksCNJMs3$GK(NMJ2HkEq2rk&kUQqkt>p~W@g4^~t^h>Th- z)x&+zv*F5mD1N&Dnm?}cK2PL8Tm{EfHhLmhhC@aDROT8ykwSHs^GD9#)W`EsPq}*V zD^OD`vjVTMnz*ecL|CxW@=@3dtvCB?Q482dt6s!E$dIe~3)^o2S}Npq?>U>p?$85~ z3-_6Dh4?NMw;Qd;tI+iBWMq$#x6z5;$$N~|Nl#?*$mM*N-;BRJ;q}T9nd5k*9)IX% z>qh0}_^VKDcm#B7j=#rY7NZeoaTe@2(;Jg*_d&X8yIIIITzOwlPlR?qsMTOR^=Y2S zR*BAF9!8ai!3*g~^Gdkk+f+Z(QvTDkXaZ{jW4nA5 zTmLu|pDwzy*|Au)UPRhaMMi#b!0t%~mn~VhXW@(JS^~FPvgUACrl)!u=X-Vl_|ATK?`<-@h%5GDFZDV;hd(F^wi(Y?*Lsyr z5hz~_zzbD}ZZDesBNe?j`^T#FKAl1m7>uhFVA&p-B+X9HI~(Uw7PMIfF;?vi5vKAm zJB3T!Yp4uCq)Gp>FH(K?yh*pAk)4ucC6XkpG`X-}swi>qFF4rYGo|j{{FfFm%HRo( zq)t=eq^&L#dvPm6^eyv&%<}j_k4^=v!{rNt-&g%TO;cI}~m=P02jc-1k)hkRYUV+TDkT4)r#Xhx=Ap*I@LW(scxYDHZ4K!_h zbGd~at08kO))Iv7yEoE6}A-@+$9}9UE5X#yDTj@&#^5N&E zU7paXJZd2)31o?d{7yp#+vWe^0=e5lrfJBn7LqBDYb?akkjd6_;yoxMDBRf=vcHBL z@v^D(^8y)bAw4zZ6AQURAUPKD&JbyrZ(lX3Tq%&xKQonn4iL6WmW7-lkX06Pn}!@| zNouq}9XLAtNG$kbb%>w^_)8 z0?DhjIM6WRh6zc-J?kEhUWQ)2Pg^#G~}f%s{J!16c* zeM%Jm$xv9Jp;SP6k5p5n49v(V2m4|V8jzR>PHCWi0D}dhZew*_tJaY!WaQ~D%j^9k z^|*u94keAA2Jo_hjK#Hk#IKW{25XQ6VztY*Jcrs*QEmP(Utq!UNBp9?cV}9z=jj$W zwhv*Hvi=D9UEX^xgjia8|5#{EyGKQCY|m6{<)WCHkLt>= zrH4W6E#HMN*eLoJw(wGpcFT|9;5-pPCH&u5xK>^?5d8z$55*y0*7h;k#EQI8c2%p0CWNKc@mi<23$t3vd4y@f zuJ*EH^^pT54x$|(R*FhV9XSB^hyon+mBndNLHl7;xuAb^dpL;Qg(Z5&c*;I_! zsF}P(hzy^Sw!(RjU(U(y- zc0qw@k@&DGL>IzIIB1LagCpJxtlkhze=o3bLoZ+Kt5D>9PYuKN{6KTSf~6Z|#7ikn z5?k)1zr=ImP7B13Sr&+Ad=`kUMZ2^xZzNNEka0Pxc5#kH*eJCz?%# zS4XC&%PqWZlMkdV5ZXWQOKg#3BcO@}!MtT<136y^!1*5s>~MDpPg211@(mbM?)#6c zEj5_Ff^N!l@i)Bt_8~8}52-PRh{Y#ifWiJznTr|Ga0U_^0mD&OIq0>s_w>P z{bZzrqU4psdn495BCacEs18O_^JB#OvjXuMJ3q@3Di?~pFJ?@3 z&~@Pzy`8+*85sC=r%4h<%JH4k+7TA!+dgwuSv})nIXC*?S^ zzJ{|%+VtM;v7c^Y2%Z)Hi|B(Z{IQpUF`RLT(N;EI+4~j; z^463M_r;b4VgpvxIpYelZ~$L8F))yqDF3Y8(+r7&9^^Mn!`HRYhu+OwGW`W6jpY0Y zoj01>VGB4OLP%@~5Zt8-zPutU0DtbhY#f9dPT-7yMEU1P!H>Xt7>O+RD)*{|7*nags}WmV5I1 zn)oU^zz-DhIo*h_xxXU5Y)yQz%-wMn1>t#~$@JiIDy|1iJs~&7q*B4vIkCdwTMU!z9~>rgK$Y$#APH=8hhE~_)U5OqUsYGn6s@N^xDkB# zX{bV*5>$weN%vHL_7w>Zm2zVrYO{dafvo(XDvTJ6D=iVT{I|*8;&%+A8oA9`epk+J zXJe~&SI*AzlgS@>od8FYuqej=I~U%+Bk|{jzEPm(ZlPSa;&^&&zvaY_oza(zZmIs+ zoMd?Uzp>Q4M@n2bFwgFDA=wX#4P2*WyJOdjN^pU4W4AM*L-kAuAx2xvphT&~LOFa5 ztXQ9Mh1i_xMxAlx6{gszq!g@`zO`~Ne;X)-gStxkvTL>sCG@eHlOCB)1K$QB1@yLII}QG}J8IdFU3 zr~;p2asQZB$w!~pHWvDfOonQ^O@^S+_fFC1)htj+C!E)&3wpAe2O-GV)J`J+Sb^{- zm>%Flra+~rw6Qbi%tZ7n2K#vS`ED(Nv(<800bBm$`~blWF=1O?z5(9)f%)dluVDPh zDsX>;2aPE|a;T?%7#rxGoyJ*9ztPCg{r=5OU2fu|3`pNK?qAjKW+!B&p2qgVPdiMk z8~n$gixm$cOl*R>2%BTV-3axuw<=kun{7(iWez@DHo5&$XI7UvFRojbKYY?vH~4aA z;d-1Gw>*&E!sE`Ija{1`cg9EQEzXD)?gQ;0tKl6ueJ?9kI1sIQB*L4ykH5i*i$6P7 zxECH>#YcDG5k@bLsCsFt(vW? zYx};OunlKoYP}wt8qh@&UYZ^P`+dM#CNMdzqa6x=4W4Ywcl>oYE(8vAAv`M1#=I6L z8ANZ&kLF@>T95iRP%RsQ#eB>okH)-|^T>M4OY6+M6v_Y`lQwi21!3L8c zOX#WuN2N>>TT>Fu*-ChzE3RInWc=MUb;XNcbknF{QrW%hEh_Y( zBCcHRv{rOl?V_mNDP}r8&+yAJjMtgKITLZ(#V-n!Vmn%X4&e`!#hdTcs_5TP5ZoW~ zx>jj7X6#TN{|D+#rb^qkw_iLg#ksHi1EV|P=oRj_e-8BG9`|=Ox|NcI#ay+euE6*F z;G1C_j!tRApUbVIor(ir8_F^&Q=9Am1@_59E2;oryBebtqOmH0A5qEtwN$4Tyr>Ha zkvgO&6{~z26IUfI)G5cm=EpkoV+m!fUKoVC)^R7X-ZE8@J?sAg%9)mZoj?^iwq;`yv+7Tml5zVzJ50#O+h(p@zWBebzCo? zPAb5TXkKSP^9ts@RyGv*^`yO(BoGKAxN+WVLDg{}^Mn*P*fcD=}6Zb+QG5dJVQ=BaC|js#*&h z;E7x5OOinFJ|40S8QO@;S-1>WF2NOL79KX?l1D0A#dn@=zeP{d+)wqM#1tH{h-WDK zRLe8<@H#Ddyza1nD9NK-R&RPuBu_4SaGTZ?$dh5WQ@$`F!>Mm80kh&|3K%|^y(vS9 zpeJrKki!MiU?I~r-wAG-Va?c`YY&1#-@{-C39K=Q)%y+^k+J^au^ z4{dyR^+)lHQ%AJKg7GFS9IuInAQQ|~J!qCKG11>b9<*S*fo(w?{0_=3jrVa>NG9aq zWK|qy7(qHB_jaf4MXA$v+$5*%1@70ca*%Cv+MWjM0BWE4EvA~)@F(svvbDusKZ;w4 z-wIgynL2;{k@C|n_HJ8#u3>vQN`7KOboDnFyr$Wdd3ZB1nryZ+*GRLCR#KDfL6&)oJ(0&i=A7gsFFlE>9^-*tWVOrq6_L35&Dz4f1RuQJm zcYDJ0!COR9R=AlI#qpeLR){dIa2>4As`=b(19=ZhIv{6T$o?AQn`0o)3uLT?^aO-U z3Xk1tAa@8P$3ouuN+5l;)UI%^6v*exOoR0gF3kjh}!L+^lA!CHSjk?G{e>j_3$M(Gd!$BR~si)!xZ1 zbZBqlyb^+cjc-13z}0Wx;)YqRG`N5lL84&hc|R?87@1H#$|PP;1>*(bxQeUuqxaX~ zQmGC{wjlOuH-{&gPikMCd`L4d9a8c~FH|~%Z)2NM8uCXZ#>avY2&GU-G*n6nSggdL zokkXKMQy+ouW*er@Sh3BO0{8D78yzYuwqVts!%G}j%uB}!n(2%+SXr83An3ZL;{BW zwOQ>$DbI=>b-f!M3W_nYsB)WEl9TX_G4vN}NvGzF)EF+`3Hf=~r|Jtu?%acwzL1=6 zr|JtALIX)oxbwGcp`SA4E@3mN|Bbb6RkGc-8Uc>Twi*Ki8`}XNmq1t0?KCdcJ8Y18 zZ#0FETspdSZ?3`e7mwX2uBSw+uk+R)l0upxgvReOLt?OPj6^g4<6mj%b&G_cWdk22c|&rGvo%y8X82XFxpqyy&N& zeR)QnKICZ#r7NsE7_4O|a{M}0gA|A1s5DPM)CGS6sz4TgVYZ=4fE`Lv26SQ%DnBiM z3w}|@%8_`v2G?V?5)owFRRsGOHXY;)p^pO@6Bpyn0XI^F;$r`~C z8lg!zZeP$K^^^#s-(VT>@K3pbRE2NBH>p3x5_aLu$@3>X;qUS4$B|yB1#26vI44_t=~$++$UgW+K8L*|Tf;Y$ui>Z;wGHA}7H zj>M?AOC{hi#EF%5)-2uZp;FvSskl4t_mB|kH3y~gFj0zosSHZ>#vgk%HnB1Crl+P# zwNeP9Vq(+OI`D?70L~nPy19rxOE^Pf1=P)+R5usFVQF>w=ltIZEWbm&6d^jXDx~z% zSF-T^7MkgvIwgPfkQKog^FbY$8S?jaEy~Y(W%>>5Nsgau?hqSP!DijH?%&s472Uh5 zV%y#I>2m3=t4UNSG`{TCU1n-pVONxq*ybzB6{#!A71BMEmXZtTIRD+eYz#r4xr|wt z9jJ(Uh$3oD>bV#PN+sX#dr`^nfGjtosSeGA(NxbLIgC^dkHMh3@O(an`rV(Yh36BB zyL8-z=ietcf2ZORo=;CAylPfzNJ!25sHcOMaM~vfuMp}nJM2X)Z(@AZl5DJ&PAr*9>3Em z%n-n*3v?FqG~lba1{4b5B?Guk1D^W528pz%pWh?%k`SLOhy3yPZP78%tWskZP^Q}4X;~xE$ z@44H7i#}CF=6I%ZN{Q6qIvTkd|8G{;0N{%JGl4&Zb*#rv8bYB&pQ0ku9C-x)hdv3F z>ZwLt;)h<9&5;EDkAILKh+IJ38j?b9Hiw<`EyxS%4e#{jC*=)MoU2Lk5sbo$5-m^Y z;`kkSEEM4nQvyF?YGXzSzU8=s_NK-p5jb=4Y9uzEqlQQdhcYoUYACtfu`qwWWOOSs zLZV2j7O%kEx!3%Gh3aMGc6q5RUs*_QARt)+dE$jlUE|6TIA{P%I<6eSg!;%8VhE+- zYFznVp2$XcLnyqOXQ@(%XptFqHwY>?8?ykVz@~yScr|kZ7;}cB5Lgkahsri~ z^vn8WpjE1@$(2ec3cm#6jcFB`VgJTUlx-=Cl4?5*67BX-X=ue%0T9h@0n5+VXj?Vm z%$Ay1)2dpj41b&LsYYZ>%$rn?VJkK8UY?9ZAF{j-Pnb)YDfatc#m68}t1L%iMKg`d zTio-p0>@opZo#ObZ2j#_kzTar@;b3IJ8{GW9NPDAqE}$~4pm(a9UujvH^n#s?6F7b zk_D@tPC7T+Vs43!;kFp}&}*pRu{~8i;2pLvXUoa;2XunjKVtpE&?_C(8ZjtHr!Ts_ zujWc!8uohAK?r-jJJMkA@I)T9y(O)reYBam`^r+*djc9yH9IF=%-N_SPIR;oq1hIs z{Io%WoaMyUf&|}q4+|xV-Y~vW=?%Brp|`&zgx)%El(?n0l5Npjm9lAUL2o6N-jLb0 z=naW(NpB@WZ|%>f&|8Tz<+Bp_#F+B`o%GiFA46~RXZ{R&Yxb-4bWG%jD<&E(uL4u3 zBK47ME8N-OKI9?aDyz!cRC`Z1wh8k{>2rE&`WUfbrlj9nZ$haQV+CRwn6A?ErxBry zB^lGr)<=H_I4r;GfF@t%7J!(9@P`m=3E!g%VuzL4oS+E*jm1EABYe9#Vf#cMs!}F; zNSG=^CTrmkM=_&f7kjcpkT&r)FcdsRWZwveA;TMoDzH5$PJ^WH!X?%lpqr&I_HOFd zNT{l192cw z!l=YWMKk{HQ}b;wek8i(KvYw6uX~;nT$=IA)LiPc`9PfPsjj1bBAY0^#vfx^$1&UX z$574~JXbKuPg8qfbAOCB<;t?Xy_Cn*DfzMHr;lglL_#AQzvajN0ir4UC3dB8r`jRD7@{bn zm4mUJS1W(0;5et-{7VA=_+FGmc2&t@|)$4VZTid%QQQ9jbLdeM5`^ z?UNOt!@WTO=>q6*U($d+=WD=)0(cLS11WU4k7~e`2EYxb$YP-Z+z0^Y`ke-FpaAL( zV46UD+17D~3f?xOy zM)+u+=ZJ|kPgN;78WxRF4>F?QS6tVHs5${6bRak8LqZj~^BTCGlK_X>A5ds*UAsjR zSN6xJzvZVJAK28jz7m3oEB>6|Ll2k=KR_&`m9N3GHaP;w9gB4*b&^4|e}k;+cW_-F z1^E&&IKSiJ+5Sfub~9W22%A_KtZ|jsL;lpepFIX9$@ws%W6nQUPDu1p^;Q#LvA-}9 zCl>mY=>?J32DAiD?OCufYxzP zR9K@{b{baFl>JOnrfP#)gzC&Q+~{X03m;;SIahGa)6g7)L{nR&vP3Clv3&|BZ1INx z86=U)hMbbfDq!jF$59e8 zaKoh_6cD?6KSd!Q{B^Ym%TLA_NKhazSjbI)Q2AMLq=6hHkb5lTVx7wHqYR{%K(4ir zfKDZo<4k3}jwA}dKMOfPr*fW!Bm^?fLeh0AzZ`2)xlm!THc0@w0KdWX4PQ-uHp?`3MfEf z8Wpp?0PIT_rj3R9L%nVcauZL@6kQn2QPy(^O*0IwO zAZRV5VA%wSPvCn}w8Avo1C6N`O(2ya+Sql-7~!|}zgKdWgNG=yf5UQ9*xZWmSs29| z6~`<};h0x|?5f-1b8jY@|}^ZC;ansrwOzx@JhI0TK3u@I+Eq`yC_$%PukBv=^2d{YcO1 zTNNDV>M6=^pDJ;qo+4ZQRE+UZt&A}qR1pMAGv5~{kz3IVHAhitCiOMZ7UA1N5@S9P zYsxj|8}NFHH4^Byw6%K=60YF53o-ow8ClA zO{GJ16FDEzFwZ+aHssf{3rRHH(P%HdWztF5!3I_llyts$o;NZ6lOYoLOQ)) z%I}{pl;7%WG~Oq_i_~H<%5#X^e}2Ave-#bGEH6((#qYr#oW^FZQ})W7_tj5u*x0U| zX#Xq}{B%U70qVX0(dzkad>&qsd-mdg134tybJW{Xp1}|4@*%bwb5`-<@LP=tXSi26 zuRrT91ijkYzhrv%TqpHjUZ;NLyGIdlvfF1{$gh<1ZgMm<7OMNjQU9>$LPW4SP@xhAhy)#H~pjDZ{J_v;c_rB6?~XYvatKLql<9(I&fgTo8C#Qx%>~jry@gw^H@WSgdqUN1 z0qcZXkhD!Lkg&T&>VN*Rsb8&AUyUT&uk^-Nh2QN_b}Gl|#q-pbCPwQCY=m}#K48Q6 ze{9NBr&;bfOnGRK({QvL)?ha1{x4t|kT}#*c9=uIYP1(dfx~s={(_747`+UH zpU7&*1{S0%*J_^)j0c6#iLuFY|2Z-cXb&j!Fs6~C(o)LXro~m?X2<{#>h@Hh0v~bj zre<#y56&2c8{eiSzN+sqk^I+pym`S_^?iCivMbJq94ms2VuJ8pPxXBWqN5lZqe+h6 zw1^zG>Ki0;JH#T>ti@v_-1G8XI7Ac&USExO{unmo_`ObqNj8yU_mUt$XLoXIOE}Sq08B$? z^zO>J3unx(q)?o4J6kGLN+Zo7kV4dEDXO-&bbG`JC^IKR9sC&aAAe6(6!&B1i?Zs) z=`ZTRDgihKup0nWRZlrl10EB=fd=sTa{`!TvWN?ymjSHSfKWiEaIpYBsMBR=)PNgJ z8BP+w5(Bu2fF1w-x3$2w^|MEY!C8#{&0erPCzkm+Ctox(MCjedSiVtAD&zfj-2hGP z$r~Bx|J5}+!5O(8JcT?;8x;W`?568~>j*L>F;q2qD_fADhVPg>d`J(?pe_?6cy z^%ajMoZpHY{H(!GbEFOb$3OTwR}KUV9tcn8dfcmH2|vG0nDCK%@Po=?{FP{f1=U0- zk8$d8*oqYo6}w*SCExdm*YyOVQaf~T%aApfC=i_{T}`b%|zo1EC$ zut_y=0341+2WpRNGw?Ptb`eB4Utq8euyIq#Kw0~p?4Er`675sQ4uk9mO8vmljF-oi45OvpzgUbxNv)VoQMlukwM=yMjn zmk~@~6o@<7f!Jy{h=Vb;0AASP-i58bl7Dz1`W6LIr9gh=w*uzmBB6xOO$MOYrU zq%P0RLS1JFb+x+HwMYdXZkE8l+>JeEDe4!&=r2G|Erw`XKs4CY*+P1fS8)6ldP2s0 z)vD=f7tm9S(9@ngd?)q=2%%L`k3t!OYB7&mx)GG8`WcYWv!DtTM=3|>o1O=ur@|M5 zT%B-xkMe&8VqNfe|B*Q7T308cd*NAVT))NvSk;;HY%oeuZ<1I>%Do6Xt^qWnF~0!pc;tG=j0cNufD zt6R-=AO2mk)voX*TdiYztu`6-O-49H5hQ%!UW;tjYB%-YTC2IHXZ2>bO6NAT(-Ny zQ%rR3&ylb=8wz##r*vO*$gsb~Q2B38OZUJNv-N z?$**)%w(Acg>0cL$zofJm_f;eLXinyVZ>T7gDDurOh%^`Guf(L707UfEb|DpNQ#-A zJk>+d)Yy2ULbhT%&&ZD92@4pwSrq&(xa)+*egF6D64oM9TBx*g;->3*rt~PXw4#hK8i?Dpz9hy$6Gz|H&{U|Jv2TnDDuw-Vj zR+Td{Ex*NyZ4AbqO0eW9>%o|?cKND4>;a=p^H*zdvgNy3(a`X1m#Ul0{P|qG6Y5Zv z6GPzhc&O9egK8CN0t(u?W0GScO-N(g3ff8#6UpNt>4`M=m$R^Hhh1g6z%AMnKEEH; zmyY(GsjgL@r$8NyMHn8fuB~J}7K(#N&`v`)ouC`AB}{FNaD~1jqX@;~D;Sy8DC!TA z>J*Y%@Ff=w(I;5P(M%l_qL+3$%_CGkIgG%uDll{mJ%F~sdlj0f2kiZLIS;H{=EhZ{cz~Jl>FFQ{2fm(71%^hl!tN_Co zlQ*b+d9V!%8yJV?EX(_m+(0poFv7RfJnrz*@)rW&`O!**v{QT^3(Z(ws4M`l@A87@ zlT-Xyp8xOR6WAuE83mnUa%+;DV#86EQ*g}!ExA2i=+*0lT};62pPZt?Jz?giE-dGi z4N{Chj{SIG{IE#mw(rrE)BDTbaJHcgSgJPa@kNo61AkQasr=>y)w|#~+|mYyqwL6~ zimgn*6T@;?Nb?rO1=GQDhvqtwALKf_BikRzbq0jD!F5*l`XR3KdbQ#@7hJVfuA}PL zV(SOyqUxs^kE)-3i~6az6a=pkR6nIZ!aYb!r_BGU&fm{`0G!$bYW|z?}&F_#d^v`W;A3s9B{Us(P!U>H+x zJ&|%$38#A}P$=vw&SIVQR9R2Z<`@NLjvKu;$(9O7S+?Y_7p{c)-BuKs@fd5=M7hxq zY`@-pY6eotYxaa^C?17UTW#|fYBQ^Uj?pLQs3{73?xAYRt9tVad1Ceg&u>vRIeVES zs^)1Q$?OH|Im!lTyu*?C96a*WU^W0fjGp}L-1P%g3y3p0W+t1#Iax7K)#B2d&?JsG z;s>YJn6_6h@my)7d~Q2{zPcia7K6z`5C!vAl+O>Lh!eP;jF+!)OX&;*qGy8?kiZa5 zVKvs5kcK_ALa#4%JBg6%OUHfE8|R8;LCH@sGApd?P~9@LYQ1hT|Jey1T<>C>`{+~ESb z+d`&k$R7Hf>moN(AlF!kqaioHZZdkWN|oho3)x>o_IcAlo)^ei3+bsLkG*9ecL*fM zLf*MsYSi~_1G!QlpO>3TKc^uB*BZzf0$F7tw`s`icMN2-KpwG>85%O`Jp;)WNYp}3 z17xN9FKEXr-P^%9xR#f`&cNU0c*Odyg%2YfPl|1d3j}hsh4j#whHNUg3uJ(WtgS}_ zxK%3C19Ya7+DxVw3;csJ(-@Bvj!Yl6H4O-4k%im{2+NgaAqNQL&lYl_h8$^IJzXGI zTgVAIqeYei+E7L$`x^_{PeVSn1Up|KM_EXkhU{fY?N0*P%|hP(v()G}mZq-|NXO-- z((?dejh?nNeY!wiw2)f~+3{~j3+!lt9WAh<1$MN+e|HOP&!3}veDHl|LQ0ONKL@=o zg7CU!IJkJfv!Ir_?_UIej^_h#HfZ*H>5&0_RqYVVkNQt<_H(%jZ;BH5kr3j=@U$&y z_A?v@EV)xk@mJ9tslt2wtH50?RR3ByCU^sM^$fsf%<0Bjm@jqG5iVIF2vEKJG~x$k zOW;TEN{JKT##YgLZ%PaDYlRUWwp1L%gTt<@Ld|uV0$=RAVEoWC_s1fRTEKy?u&f|* z*Ko;n=p(f7((*M@EG0D9@Jl;2QpG`eTR3waRxZWeMVWVL` zwbV=zWM77-W)Ics%t68liYWsP@r5>wbvoAtFij^h72Cx!K(L8+24C)No<*at% z=VS+9%stPEUk*D6BXoDrDr_TkZ*~HyKwxEki4fSb4nX7}Ohr#rrd2#rmdkLn*o(tU znRxkwdKQ?nUV+f#=VPKvboVJDo@07vpKrcO)qw>nPozIPAy$qtq}ymQs0MA+!*l&v z@CwJ7<)G6nH@78~(IM z`2xc@D-7eTaOM9C^`2iHy6_yKP5dmCqG8aj>YKyl> zUN7h(AH2hQnUdt|8Ss7ktF|w}$0-z_y3JKvaK}LN3zQS?s~2h}*(Vg+5Xf7CRa-Zd z=X$QMqn{L3@DMjG6!~~-tG2iC(@gikb2np>$C0B+<+fNMF-($`lZ9JU4lEKLnVT=% z%Hl}}M%B;dkPndw{M#07FWf4J$5Yfz0WKfc4w=v3~m@ zsgmorhm+cQ?4MOY#)H0<0us3pBq>YWD8o;d@ zu=o`X7$ty*4PXWUG#u}%Y^bPre*xTJ0EJA!U3>-X-tK1?zy=QR{>ml`@cSjIO(q)f zaGlyPQ=Y{FIK}{a6X5=Z>A06N%^m-Cw7`xQ_-}0iZI8Nm*g!fK=bq^^`@ikE34ba9 ztD+sMW*E1Y(hwEzmvdcantM(WIrO1DCsE#AJS;aD?>FhJOH}*W!*ucG{UIYmEL+?y%Ow#8D%mN4}T1tT-N4@U7`*wAG zwHTYS^=AkbLbM9_y)-xcZ68my5Bg##_TtvsX9C*IiQTALn8L4Uq6oiaINE72%w6v2 zcxt|hz6s~>xYD;HlnU_Bb@x19G4h*>C|LMlQjN%_Kh+pWCu&IfXCZln{Ac|mJ;E|n zHcV+T19d!|M}`$}ufnVijE3dJGJ8$cG#ROfc7TWkhyVtv+~Y}5<+8#}U7)OyY0$s% zJBA^17D=M?*bU-C1e+<_+mj8g$kQKz)G-D2^mnom zMja@`QTOJyr{gqXSb~(}h2vlsk`6c%V+64kIKFlC%cGZd<(&H>Dvh+EnPG4GDx@Et zi33+7f5R20e8WM82nz{-r+;7W)LNV!?#lI4{|aQcAeSJh+FdUpuZ3+HPQ0?-N$(6_ zo0V2}b?lrhck1~WX?bfrHGd#5ySL{cq{Dr9r0smXizLb~RTInJk*~_@~91#H#6;MY6?8<3biAlZMsPBGx9<&Pfk~0_6XxO)T zKbO7bzK+Y4b1?%pxr=XvV=H)xA#xt#L;s zsBEMA>n6?v!SXiBCT+0R#}3K_?M`{K+5b)o$$sdIHHSCBr9OX2)c+bhE}y~QgW7`e zpu6yNbOh+cn9u#s@J@K21XSCI8OUp#s%!w8q3vQRN{KWc$5yuoofx9ng&uePn3hTy zDlbX_bk~_xXMVmH=iM zKu`l5w7vS`LsTCr6dS+@0RBId*S6_t^YdeSo~ubpt-+}MzBI4J`~77fkk(=_%>3BQ zfxgwBa{C44Za#KDoN6yp9=|5o6EjWdlR8qg@Z4Iq4m&Yz8l} zCE)rO$Pv4ifIsJAgK5U}8Z47F1iD_J+kW_a*zk%_`YQBST6tgmcwrR16rX_kj!vN5 zT<^)k-$48ghZynWNRIygvCaN0v_cx>V6;3N&W8h){PXAXM?yw6`-e$X;Ngs6f-!pt zpku^NhjltclS95;%5x7&niD%G8zfQdzM)BGEY8SzU?+x-Llj$B*Xk5kQCg#KE_1;G zqV2Cg{zm%iJ5bP%E4V3k6d{yQFRSzgfsI4XMjDkOcxc+CqA0$f30JtE_Jq$N&pjd!>|R zo=v4fAfJUyai0a`|1-b+Z_j>nd9hh6^0&`ITXXW}&!&Wk_uEho;qbt(pd$Md98GF) zf`34hcvYQ27A;@W>|axZR}Ae?*%qyIoBbO&zHrxpzs_bqUNXJ|Y=~SFcfh0*un}gv zyP<Eh9^qB>oL@Hk?-MT7KrV%s zkElUk`6Ltc@_%C?#}2)s7jmHPjRN2)w{zeXyaV*euGNu$P^#Wg!da^OnVy=f-HE{n z!BJkIZaIK4s+qbO)fh{B3ioqmCshW{m_)i>KrW9_nu|I@O&JKi7P{?B=(g)rlq3ChKoQT!r6;e zbWYG_9scV5v40}SF}ihj9r{rn_4ntK&=vT?tEOf{29<**B3xxghC`7r=TOo`!w%YVJCs0`$`TJv+8$2Bp;ckCZh}%z zBL0_ZOf{JN^}g6wP{&k6*aCOgN1*X3F@!0bqF&WDx*AA#Ec+^D!0OEWct8o(Pu#rGnE=){o|>N4A># zstxeEifStts)!vGEaaBe^9NBqHcPX=jz6Y#CDxZ0Pw07B>aI2LY zsw=l2xT;CnQ9;<(bniwJa}QhO5YqCP~A5L0}|hCUOPqA-c&-2XI^~S7WLW|J)TI#nd58#x-MFUN^~t&qH6stG#I;c zPgQRA0`6-1@h)6JO6}RbLi+~gc+YLuCY2a(g_I00#%YYr^kkUoFj`zccwhA>o5crb zwP!A1Ct~1(lUNTdT%)R3aYKn6Pd*2ByfE866N75p!~vd2FO*-|Fb6o};IkEZ1!<_0 zRBr;^BS}(!e)_uD#M<<=+=Hw_?xcIF_arj~^8;Ls(t9xEV)4^)>q}obE`B;{>WTaw zU&rDFc$mIoT)cqKs+$OjErHQzfRi36#+@@RQmo+A01Tx_m}1>ab!r-g6+lnT)ru$~ z%efSoix+0$Z_D#El}`s1Z3Jz@@ufI5{snxD9PHlLZLOUyMLc%3b{YqDcIW>rpW=<1 zg;AC@%@j@zO`3v*ri8(eD3sBZJliuR3_Z+fuWut?$m%nW7eVZ}xtEHXyw@lLnJ19Z z7V`Zi0=aF3f!r#PYzuiqL#EnP$^`Q9c$3jH8uCYFl%Nv-Yk@4ckefB6)j|#v$b%Mg znTEWGQ7!s-UxCzE$jKUVu!Xo_N2v6<7BWIZF0eIvK_JIjNS21&XPfRGf$V7^AN*F@ z<%p4{EY}L8(`PEZNJB0;+(0G>pXASulDuUE#oIw6+Ay;cigKgd21#**x{6<5j z*y4Tx9)(I@Y#~Q!$oNA|My&z~SjcV~a+7VkM+I_#g>)du?0=3{wxcBftu2t$r&G^I zsfQX}4Biekx-VzXYDR}`_gsp54?2tc>M@+rwSu498QrT<|NG7US1C`L{cZw3FfPOD z(*f%V6i>R<@fK=wWmYqzFVhVi^EJxzQpl`UX~g&h=y$HhB6Mj)Z-xi6W85#m6da+~Xi%EDP6j8gme-nJx_w!A29k~>K+-2>WTut%#>FSNa68BG-OuQcGL>jbe{gtgw@RP*eq5EFL`$(s zo|GyDcr8^r4wvp&HV;7Rpb6?z&`zOGUC%PmRge1AXy{Ycw`wNnL@W(P#X@Kf^#GP) zZZvpBQbAMbup(_gLbaOqgjTIaq0HUK991i`13?*Tw4I}fI@CXo6CH|dC#gfJwL7dm zD^o{3I1eem$i0h{6VKV>7b4(`+;^vl4shuA1~OA1Uyd`71%TAyqqDv>kRpMswvgL3 zq}f7_6v$&1QlT>{vl;CwkeG!OYRJ15@+k=e=Ra7;C=I#B)@Y?b{1)QTkai3Ci$M0Z zkPVZi(r!=DB#PYY1kyFuRC<|)L_pZmbmt4?Eem--L;jj>AYOsYwUDreT$*MeLj-b* zg%lIAcfrUr%O+@vL@z z-52%aG%y%WDeIdO_>o;-39RF_H2YVIte?^f570Hr8bw(@IcdJFS5wN?;V%t;YW|D)DPOC^dXD87n(-a|ToKaxP zTZ(;TRY2mW4nMF7*5k*7fG>4VxJ@lBLIUKU+Y7VTw`_cV$+ZeO*5O?1LE5|i2;v;^g>7hw zcoh>&Z*j)Os{rs+^Awp_{7H0``szu3&aYm?bG-5G6S+I1bUFtH0%^Xr>vIutSpui=?M=7NzMwrQpzaDt@}bBIhA3Ro{Z*ji!^O zNHtbe3u*f+hM1A*agJgN*2<$ruyU9u1?$XI*DfVpt4|i@Uf_C9VJqvzzt6l zL9;4kAVUOli-i;eLg~7fg?xjO;=$z>a;%07I>n^&nm`IHWUz+Juw{8tActDW#)*>A zy*8EK3#5;Qyb1`H9E-udDD(>4O9b-a5vE2@XvmOX8^}olSz;l-(~yrWWVk@?wvcHW za_gxkl}v$LV<8S9JO2GYYk}>_yW)+qKBRU6LE{r^x}mEVV} zi8ymO@gaXbY*Ux`bAVU&32#a-%k+=>sy*HJbPpq9goCMY?aMs<p?HF{N#G|K zkJRG_OuirxJ0;tF2&B^O*(OMUUqOTMq*d2N{)z#U&R-X+%g2O7V-W~qwCOCMm zBpWDJ{!Md{0VaYJ4@Oq!4=aoMYx3bQTLxj3zzYavxV}x9gLC|}oUX^C1|HOmIk{&z zzV{pyX#-dD3=dU#4vKfEODu~W6roVY(|SD3#wFcB8Zpa`{~uNBV>QOKWE*Ds9f;14=F4Ty{Z-&2{CMTA06(bh z^uy4UZH&I;ASI+sFqvVodzN~jzINY4n{xARF;=eX(US3zD2!W(0MJZhPbI>5ev-p* z>;=3nqSItSdk&v^*>L%2Qb&A}meGw80xQ%Cft5gze1FYXK9B!}D1+}~4G5kWJ3&^? zL!IEzi9TbFrMPofjZi+F-#PI+dB262V9s2CSzOc$6r;R6CusL1r5;3BZqzuT8t-0+ zN2*Sv;k}|-KDw zyJ&rPV#FGx`-dVSMqI1U;usgKAm81ChBoM?SH5EgKGs4T59dudem{HC~nSLS35|6)7*&wRxfXKqn>r z!O5s8KeRNzBjqoa5|_$PmHgD<$CQ7p6n8PiEQpYBdGL4jAkGKw86UCysHT6dUbN$Y|$y@D-w85v{ ziO)()tLiBWOONnD%wNQI83cS4@sTx5Y8;%$u6rF?etREvT|E)lnE&)~{;NHa!*Cr= zWQ_A;v8oHK86&D}aLivY&R^k);1C*lnT?Yfn7|=S{y_739bbd(^y^BD!<0ZEJMr?m z`|--xg!3NQS_L4|M(988xd6>9$&0L1*9_+u zQ~jJ5saH?FK;iP#fb~Q^#I-5;Y`#YEI#{(VUA%i!0WBK9+I@&MJJub0#gZv>XaFm? zR0H+|0L|>Fz5-RWdF8Ucahx#lXAO&C)Z4f9^0w2RrQiN4^(_Yhz8&kHuix&3w@!Gz zgXd_lH7GysYUS=hx%1+#%M*cn3*S}Aoga7O{O@}rgVf{74t(8?o*w5v#uIrS7f!g+ z!L#4vl7ulTT-nyc6B&l;g)7J6Y9qPmtV%Zx0?HFvDtBJFt4AK~Irstz94cwKxa`8m z&aC+fmM*Ox4_3&77W?2Nj@cfbZ7@18&MZ@z;vi{2`bW+k2Z$=|b*G*x+V=Rf3?xk;S6ayN z8uC2UD=}TaJ(3(K=L`$U)sUUfF_3uz8Eqlo|5`GddzpdUDv)doc|$`^&`wcaw@e@( z?{A9xjE0%$rs3c3%OoH z&bO_*k3jxpA(J&EVOw_-rVt>YD=fsPAunERiu9+O7X}!$3hO$kW33%ERbU?q?d+_nrc$17swzBSr?LaxpazwR0`y) zeN3ej8giqh-LnMpiiO;%A+KAiJ6a%(7IKw_oG{sBG(aG63prCmPCMT~J_C;hFG1nJOg=2ASYT#e+@bGTmyMnAj2%=lb}@k4a+fW1=7PpR%pnrmcL99$l6@fE)5!z zKcs?y~a@=Fc5-HM6V1#+r|?4=}2dQ?MXdwp@vg6;57TD1OJ6hnUx4`!7oozgE ze%6Lu&b4Bh;|~J+Q~vPTm_^9?-U0-4bh8GLB@KCaZ~SN*R_{ISRz1wlp=-ojF#&P= z0$FD;>jrO*DZq@z{cvCk=J_o!b(q_@i;00%OPxdxAOhsX=dV#$ zo3OEt7MYzwQEa290Voigh(82_$z@}}-v<`CeO`g}gcdnE4yB&rp*Ib->Mi{%+Mg?}U{4t#Zp#GV__tv_I44In^_#Q97q*kdv=#DS}?* z`ofzKWZ-tJ?_t3dd9rouls%Q%CIcBPTbhv!WPthqW`PXecz2TuWUz~Tl^VyOnQ;uJ zKjL-_LDO*0x4h)QQkr`yO+=7p=|fr<@QcxkLZ64`VQ;<4c1w6q$yY_av49)9Sdhc>QT{ZV}9Q}bRg+tm!B%;;hnKUiZf zpM?d6p5VgWVtT|`Xg9h$m?~bc19R>En$>eJ(yy0n@mjI=lkggLA&Lgtg&gFecAY_X zY|k$Ay`KF!ZeMbgcuvg#QL-KPWUr{|59z6$_-WYX#D|n<>j84Y@|oXB~HfK>ltae)!hvh=1G`JT7$U(mhjEV-?Tqqiznzgu7VMoY>3evzrcu_8@0OC6_8Vxaiwr+}7f( zPu%*rRRBQb(Z>Yje?zY$sl=nh8!i*K4Vk{S7x9g7Xd197~f>7vnsPy14KIH4gw7w7|Em-i9M4gtXPSp zQI4jSOx9pOr;EQ1HdRTWIYH?+wJy+=m^wau%=onOe}N3wxCPl%$K&OQl3Ll(+wq); zs~CbnhdVtuS{VKB#P>Skc@J{TkF7%ZpC=!KF(U@g-a6a> zXI-9}S9rf=l5iWVo~>T(b%G>z;Nv#2rIasB?DEYLJD>M4`0a(i={;i{_HY#nQHD^? zA3Q&4Qw`jr+!hv;tsrgmiV|g(s1Jd_lP2?`UzD2$eoM7SU?8>@RY4r1p*3g&6a_kd zK@)qx34gm&z>|+iNf@9YmHHrJjU8bM1dqM5H>s@6QDr&PLiW*+w=LvZfsC<`O-D(k&w?0| zZk!{K{uc74hBRA9xj;VYV=CRGA^BKkl~hg@$O;RYts!??$l(HMu#o8*GO59&va>)U z7IKP)tgw*(!`{09Mp<0_{|U)LRN`(d(O5y#Hq|Joc?C5zqFG7cS=>OpP(V@RtEHi0 zrI1Jvt-%n@`nZZ#TeMoStu1Y}Qm=@&1ds%|qatVpv|gSVFL;BX;{HG1d7j;DLO`^a z-}}CQ(d;vqGq*Em&YYP!bEdVAY4m?5Kn8dq`G1P%veX4RB>}RJ2Xboy%BctPj7AnOw#a|QCvzi%+m1p{5=#U%atNqK9K7v1%# z?~QC|P4Z$Xym<#Nr_4c{Fz{yt#y|Ve$JrKq@~VdiF~zO!lqPKc^$I?1 zrW?DLOd+wQ6*vN(9x0vAD;7Mz%u9w`0k2MHZ(*)6exx}lm$`kevkzHI#QX>8nc<91 zFlI@xyr8LyZ%y02NySWj=J;6;?&rJs!h=sJndrzJocWA=L3?FWYp;PV3s%zj?XNby zogPiUxoJy}{w;M)K6`DXdJER{9csRn$D$)vS|hb<4@HZ&QL}xfW!g(ID<$i2&5=?d zdGG@B6#T6rRf{VfA{UR|;!bDZ%Wy0G6Bg61m}`$-;6^>34ufFM|6qHwb%2=*w=0W$tN&K3 z=?kCU$eq=Ut^>ESJY(y=_!HSnt^SL!ac-W--a^0ViR>Tu#$x&qTD@=Bev8*HF}BVV z*>C!v(4_0=ERpd~Jt@(!Mw?ntr(1`eaVK1|c$x)Ke3x zYwzPyr~m2)ce2knaiz#+W|OF9VpD>g)I_J3HLxkvpRLxI4@qb{c>mOtWB0*Mssx$e zsd#lpIITGpwHPS0-}&q(ZfHTM&dF7&1rt~8xe$YbaQ`OkeN$3s`&O?c%kDGSEopGK zCEfIIC~0+OcWpZ2-%!$zx-IERY;OyvUy8jFJN`cHm!t1fsCUv$k3ci=Yr zi@3ZTOyVjNTRJ+f#BSX^Pca;&tSd+9%sR?;WgQN~N&M~=v%N0HkYF9PDVDEhN{XdwEtM(_p@=*w-}pT#L`N@K5m5}6r07(KCr0V}ZnMeS`a z-Kv#d5*Pi_Hhs}ws61RaNn@_mxg%%HKC?Y zeWALyQ>zAq(wZ$h!_}V;+YJ0PD-bSP=D)g3>(AICi;KJG>xNw5)14PXgsw&5H!U4C+6ugamq}Y;cz4KefrS1I%bxgyK3^QK~}1 zHVbs@HKh$EC3AAn2^BR}uW(nJTUcdo<&(ue{W@3 z;oLzbSj}aB(UUHc{`lr2-Sz1?-U_PNneKvoxYGqGcAfx4_ks$M%ao|t`JoH4IstN< z2U6{=H;SEsF37zJkjp%f2fT$%u@i7XA_5Uf+}|273!ne6A~Z=9?19v$g?iU z&;&@P2XdRYnk#nx=z`=XK;F)GTlA*a=n7|+3$pX`I9{4PkZ&bGE^t9!N`U;{1DWeB zge#nrU64l;ATvFXo!*L@7sXtVTM{7Wc_2SXfVB5Cjs95zq{svLRiYbTa6v{UKyo~g z=jXb8RN*|}g7i;-d~yVhc7BEMyTaMo$9-M-`w8$m7yR?j;s{tOaB%nd_akOJ z`uI<7IWG0F+R3amjy0l*ZUH@QMdvGs33s&-5?Y*GMlRmwf!j*#r4tt?RuL0781Zqj z78mw%S9(m1rNp!%-EZQe3|6`QTcW|#QzPlu@|0oPXi6P@KWmlH%=TQ2cTRbbS&5z3 znqD7T{-YMPWn1iANt2P z$u%|8(uukLAtAJoZa|}z)s>A#l5YmsZcB?)|M9VuSHbeKojZ|Jwo*0B$SqJ1_Hno_&ILl; zRNi^*yE0XCca--8S`ziW`0)t%Q-34J*|s( zT-0_c-jox5np%CDjM8mywbIsd>pDkxZE{Yr($<70E=qa!_9BZ9U{?PYYvM8!&>5VC z;QN4o8cJ(#JH)!p+Wwg}u|1wp=}k~t`@m)P#*n?OvwlbE({}otNZI=|b32%Wbjo^Z zS3$e+qu)n@xYSv_-EGmS@f~+|+h=|zn$U&Flqn0HcY3(Z++@DV&D?kqRyDn5j<%kP zcdkYDU#Y>Jz+bYO+Gy}gp|lNchkFff*`>kJz8Ogc_TTIbGqr1X3gfkmxt$Td_*K&x zv3O^6D(uTUBMCfgzZPnG=ag{TYh`I$+|G!FCvNFdw^%rB%hSSN$lk8rn9y-P61}Y5 zvJW(9UnlumkMF(hT%RiZwmUyJU-0YI+`4$#MQzjZnwpR97(D+RK|O0VwSwPgxvJmx zec?A|P3(%_n3dMjQC_J33MU2f@Q-= zsGl{A#$m`Z&c5wCB`lX+$`%RIGDdnCOh&|=UB-3blgj#k5o(I1@xbOzQJXdMQz@lQ zF}4S>Y1JO?|3N4^OlN0@`LDeR2<&LdKzkO$H~7Uf!P=cYH2(cp2e6Svq1h_*R!G|a zNa>Hi5YIU&-GB8jWURx6pYpuNAQrx>t^RAQy4OCB7nj2-4ka&(w-uXMP?_SU@st|N zmKNs^pNn1JktaP9Yvz)mqynnKrVGbocH4(4+!L6^3R+Pbdi^m z&IML#sbiUYRKLiwm(Gq7PC32w5PfB378U}#zsEws=Bm=>%VN~^8f%wi0O|S zv$Jo>IW~mkL$fQL&<8@zdU-78G>KzaZ;hOL3p*Thq!Nd>7Q?vO%W&p{M$9FbMf0|W z>@UiSKK9T0K*j0&S*n^L^%b+})>wHtY69pUEFxOv73-%ECD;MqrXkv$O*Vkeh4+L` z>Q>S(Fs562!7sH<_Y3W}DElCX5~U4xupm-;3sALg1F}rt%C;EWa$|Y*G4kz%@#b%N zn|Bz)U9SDP@{G3ch$xCZPlp*B%c=NCh)^8N8PZjy4R>x!vtp|_4#)@PIpxUt$I!b{;Jm6p9vo!o9Dp|?Z)w;TcfoGKm&lC5=#dKvNwx5!!<9^ zi)BjF=OuD4vx`CH85n0L`vx!3WYrFfHBBVq0e2F~M2%fCxKE^HFv64+P`X0Y0MQJD z=}DtQz}p>2HAS2JSC8wyB|0G(-X>g(r-~dWfY{AdGdK#VNP6!S5@Sz_`7h0DrbcfC z+kP7oZ;fFn0c^zMJv5l{TOLqFE1X{Rtkf1ab%Km*?#72PeJ$F&=6y4Lde2#~L$Cd) zU5+h0OTC@;nl9@V%kF!jG(6t?MC~fe7f-lvtK4_wO$J5GW!f@Ip39i6#@;2~zyaAb z4U1^@);4HY{>Kk;_lSo7#sF+^e&_WEo}Kdc{M5zAHFlkA z)NaOXHcOkT40ufM+tO2bWX=~z{&qo*#&?E=QI3vDDwp@zLd;0^J|UTee_MRuzbyNQ zfjE_U0$EPj4k8vUIwHh6B`Rn8Vbe|sAs$^T77{r|$5mF^POIr3d|t64vPC%w?iV=^ zx*regV=TdemgJs~#8g)SVSe?0-PfO0&kj@ntzP|MVP|H9?Zr-t;cmR|bLQSRXTgVR zPJbOcT4|q{Rz;>}sAZ-(rWKJHUYoq;JaqooYR-x-?J-8?urc?;pu~sVklk8lw=?6> zMV5WAtYnS1?CF~2s}AE@!-Uzp*g=VNk2m$sVxkkh zy?qjDYL-HK7(&DW;x z(h@KJXvIIh`}j=7-?jVrcW)v7s@=!0RQ&n7kH1gxr|dpHs`$fpAAgDBW7q7qeeXWb zn(2+*$FEfUGrNh$R2&aSFJc?XEZpeH5xk7mctr9_3U&M@$zFB~os-`>nn^8|ebx9c zB^}}aYvljQd&>W?y~rPaXhd~r5El5Uh|eAhukfUeHJ4pxEszk%zh1nHF>Q*NXMrUA zLd%9L^k-nQoPO0O{RmiRb^5?}lT{fmLZm>I;ltN7>pCu5dWKQ!y!M8K%GKJ3v0u=7 z`u7BAjFGQOfMa^h(zz5Oj}Mry_!WQIZTk?x*7&datp-lKjfW}d+S|=oq80<+?bOm} zZ$0smLQ~V!R9}hxLULPc-ZpLRNn67<>L#aUglv{F`{{5n&pp4iB1d8VrV1pZ@6E#- zM>3(H+S!DVxvcs%7au0ka%T`U(mg&#z4K4t`$#If*v&B z9Q!JphXZ-g13l3&`*2d`&4^`BJqHb?x+MkYpLb4o^KiUdAoEVq|7m}mpK3bSM4o9i zYk`#FiuAHSY!+Hf*Gx4+e_oYZqxtRmo16&e4pj*ruuk!9F# zGp4gU6R9!FV-~K=;;sE#>8{Q++kx#ByU_0s;*#E;B!@#JIjnPx6Yz|WcU_&H||KNmKX_>Y{Fm&-5jD)W0%9;w!v zG79(&Sa~0n`U91ePF}bwauizJNAB_r{nq5`*Xpa^;@medja`#KsnYfK=f9}NgGJ#^pqu4?C7vWtc@a=tAc%Nc z${Y*2v(BJjUW`Kw5*#fUyHSpIFNZdHXz4G6uBnn~ML?Op;wI{7MFJfvWY;FS>0R)z z)uaTU{O$^G@B64H z>UEjJ_}JMMANO>x1M~21pSA3XvWMN9o$v-?VX_u`6xmg8yV@kV&H=B(;G^00Mr|@7 zk~yP&d)OC}JlnB#QOui{(c|-*cgF0^o_vWQ{j_FyJM(na$)2@o{(ya$L~q&D*k4~v z2GnSGRj0S+cF|{PQ=SF-5LFJGvrnGUS&@x!j%%{A5xte@l+IBRQ8Bbw&{x(vXzP5(UMvcWg57ac+@^Bmp0mob#zk zMV^ox@tx#c#=AvkCgl=JF7lz|l#jZ=bCYuZeKK&fJYF9>o*eOq*WMa=B0Lc=L0UbNRJmB13v7<PwZ5%tLtbCV)&Nsc%r zDPmx9#K}n!$0bLUB}D|2Bi?zhqtRRBjyJk3DPnVS#MMa=mnBDROo~{U9Fdb$c<-db zIX2Qdv;y8$Y!1(kcso`Q4KdEdR$I2_j`E@qZnyLtVvs%q!Y^5Hc$hCL+539w`dDjUVizqc9<;01y zr;c)SrOLgEoQCvBxxB$Y>qe8Dv_P4OhKVs09mD3w=E`3dL~lc3v<>J-)2 zi^__f5oqJo(L;rfwJK(760UYi&Kjg2m+P^49NTET#E67df%yhYLYpd&Kd&^hlxjBmtb48n=@Y_oSvL*%zN< z=z&m|J0AX$p@+LxyY!IjO#JLi=)tlX)ni$oPlnKIa+2;3&MW)`Du)GNQQLpy4tbCTc4njZ~fFXk|P!qZF($+oL!%0=XiQE2*V7uax=c2--E3% z$9hrU94@6SOledV^eER2CQE5#l$cGIZY91_iOt^j?s zngY&tGo}3tI8?BBcL2CpIf^d+hV9=LGOnBh*e|?#pc)`6Ux+d@2?41&^ah_iKF#&A zx5IRbs}HVX&efaib8(@1Cm{8lt0!6#xySTobNyI=v?WTktRg)nw?ANV;(>+&f>3OY zDia=Nh$>6FJ|ADC-oo8nuP1zSNfWtq5-zCjNYymrJ?(R+DJ61em^jL;bU_X`ZO))6 z7(xhOabCq(_KP0H9pN@RK(lXo(?x$rv#(Z&-OG|nL@wMR;!AN6p-Wnkhi~E6ylWhJ zcs5QDJ|Be7clLQcj_}qulmR9C&R=K{F1T3vWFh?dgAKyxQ}Ry)M#p!QJk})4{F9sB zUeC%Y;=9&VC-WpX5bcK9u(6X;nbVLxmziT+DRox+h5NqDeZbl5J#I$dLkdd;3of7rfv6p@O~ z4(8RGGk9f$(tkfIJ!Q&uN%i~tbMgA!_Igj*TQfvLwu|sucA`E}U+6KkoY#4EntIUg z>y#*O%HP8F@t2!?h7|EJ$}p2F7#dN0&JV>WT^%4_I++_jEzZC>!)mjrM6EHlUMRQ_ z6i}xhn!KQYUe~yo zwYbBPhYJ|Syk5flRVfg+hF75*Qq0F4qZTfAjD~Tg@?Ud(IWCpRlN4v+q@eM9EPKeJ z*F-*<%lSAx*SMIICe^yDQ9kjoc#PU@X1l1Vy4VHu7O|Uyg6&J`a>D^q~?$)*XbFeZ!5#E?oXHP*yji1O zwi9#NVR`)#pS%Cy(d94(aD1#peTP1xN$UDuW~)O?++&_mUpg`2$U`P39J#lbHbpw< zHo}3IAwbRY<4#~&kN7U9{KwRjkthVD{$buzw=Qw%VT~L3yzBeB`P{R`^=;)a9$IPV zW7p@=4UziKaa+-PWd*a8UKY%Vh+B0pArcMnOA#9L+}j5thXAtBV-Cb`R@C>t1Z|OgnY~InqbwhSvFBCNo80TNY)lD2=bNGP4jyVnj;|o3)ZQ7tKygnY zC~U4D#IL$r*v1Jbn-5&*!e$2H(g&$Yw0DygjpRT$E?=AM-1n^LSE7thHHqHpcAv+? zW*rEl;#s`9SlX1^D6h=^WCGSlFImGY$113~bc0xkr?j~R3_FwyzC>g>5DlNLgb>lr zM^O+&iUu{768VUM;OuRjhFbb4(mwv$O+8b}E_@3NWtxgNSX6pMwD+sdlSn7DXWIk% z+*EwDg8RHC9E!C}`+1zTux`vZoH_WIYo*lGjoEIEEIa*ZmCH$Hs6V5}&m*^xef`*4Fv^?7N%*;Q8dQnYOrh8 z3l%b7TS!+*!&=r-m%d4L2}f@jOR=M9I2q7Oqi)xX=E+*Wf<)*ZsYR-bTx#%N zeGc|WLB;dbn_A7K6ly$=5177}4;ZGNdH_(zqjb>%#YKG&x(OQbk)TC^&E`QCG2`a? z=lS&#Y{02YHgnAAiOz!-oayhUCFY|N4I92c%FQ=uk7!dNa|~;3)PlA$VLV~%{u8e zgNFt;VlJP_Zp1(CFcC5o+iafM5wpNfDEUeF#QZ0&d{fAs4$kKKVt$1JxIzg|=k9?j zA=*w3&hf_?`fVhfpvj8qs$C%w;%mxL3OKY>q(IPvPfv3o6C3~p{68{ z_kM+hz!i_5zrhDm9xl&tndHou<*l!9z1cS#@2!))*u@)7Y_035e^cC@wI=l8*>0$> z+G~&N&HRJ$M(4ZU>=WJ68%>%!*LZ2}_S#`W@7roV_oT4!RK59VB6`Jz$;Hd4m<`3l z!fxTyTrcwP;D7aV@iISEGQJp8bKK8l@iU|?K3m+hwQk5PK4O2QxE`l6RYbHb-^qkr z3_}Y?hx}o>?yq5%1WI1_l1QAL0mIjfU73271_x2Spqz4!V4Mg%N;AlZ`z!3+e8M;A zXr>cIEma6A&e7~A8W{$%_ev4j_Zv@UB_%m$FEPAszNz-Z5AkWPU%+otlN<5UfVotH zCa-Zn^Hing`uTjkCNFS9p5Ws(c?nLMyn>G!Gnu(`o@Mu&y@6V>y)oHY|4bYQZsRcp zkZ5^=qpMsRuNrC>V|I(%@Lbbyy|itF!x^q{Nb7!PghEVHUbR@WM}0XI3(pYyRaYN? zBqW(52fv*?-e4&6R#nMPMYckA%g2*A5%V`}%2fF#y=qsW_wu;qz;eJ`&ogT6+2c(H znPq&O!PJnZ7PIUhD@?+-hA5i1)|yMtG9q?qx#2K&W?z#Ire9i&AmZxkH`fu0mXCChR0!>F`Qe6|SDRu@#J~mkG0QWu)vwSQyv7xDnoQ?PtQy!qqz^ld!S4 z_Q%~^KOUFggjL`Qq+}6x5v~JpH`iC<`j!csgsV?VHer)-9f-TRz6#et3iJJ(mgG@W z#!oq|rr*!vLpef0LVl>Pzzf{~Oj`^=WgwP8S6kH0$QJsTZ0_0WhJ0*5jR^6%ahlB2 zCCu6VO4f^(GE4b54eD=+2=SqGDj6pqo&fCyQp(JOXqepGBIjYKJ8RZ)y}gSX=>;Bde;sC zw9*|l*{%Sjm`RF>W~WI$u(?DKY&4@sq?j~%9$M2ediFRdC?Na(=Y`G8LTc{hQ2}sK zOUpsR96lmzhQ@UQiWsBd&GoksW(J6PhR+)#?Is(>NPR7_iD5#{Z@Mu?GV}e3Vw!z_ z;TMSs*PXabXV{sCC&S%j;C{jHU;|f=%k7Z+wt_AC^kr?c>Vf&<23zxFHS^kEBc$+9CU}$HX%Fy{5kcluh%?q6kU*k zFjyv|_RF1z)d?bLVrNeEq+XGC7pYgZqPJCl3BHpU3F=dE51mdJ4jFkgF6>@~izfk` z^PVDiqNB%0|EQ90$TcOe0v;)J*^Nn3=whZ#iJ+mnFLL}>pF+>L>jA81L7xqesn?ub z)z;p?Rd{*5Yw+hiN!B`+kSYIgUX3$|0OQhJr7NBdy1;6Twm3-KNG?985 zwg&$K372d@;)FiR`9K(gSAOidBwQEa5^2C*aY+ybaFPi$Nvm+eX9Cb1^wftBYYq*V z4nC7BdbIluHD@-NzvtsztNwJU<@hsyCTgiNBE?}MuLK{AUu84ZglJTVXzfIJn~3H* z(UP5chB7vUW4TNM=5VrM4wPMo^C|@i zEwR}Jpn|69vp_A1)DJSqDdab)dBu3aiRBF(&{>01ST)rvrM&vFI6+T^LYT7nc*AXy zahk{~oT^I&xH<^gMJ%+!Iaf4jFy*31hWFz0M1qB?Y^trA3O@%y-NMgJnn9psa@4NW zW!1u^RDI)t>9m3d|AMtTEKP@JD zNd3=vJZgl=FLQ>Qt?;7m)X^B5B0aUO!69mmE<&X(r@n{8i#Hk4jvfTW zX3usr+qud#>V&<_Y?T4m46wzd&wiMIL}v5d%sy~|zO-gDyJl9Ilv$?j#+rutel8EM zU@#%hF-)x12lme0h#_9mIWAaM64=H~Zf?i_wgc>EF4)@-bQJo42lksJun{iU;v_KJ13S?e zhH~rnJs0ebB(RG-u=z<~pNk7dv#XQ9hIn9u*_w|x;RP3LWD?kc9@vLTV1ISNjz|J~ z{}s2TpC#e#S{E!O39Q8fdp@ZbDqOIQf9pWV-5%JL^E&D_*adqa3G8wYY@0C;<|5<( z7tBrqI}@utU7uwm;GV_Mi(kAPMZ_m)$1Jf2;%SdKb)>1h&!x zdu(9`*pFPWP4{;oc|UAtT0dd5{Y>I|*#8m)kA(88FQS z&Q@{5X!b-G%mn?Hm)m`A*PF0qF4(C_VEcMtOO3@k7rnoA!463(^dB#|2=OOT?+h30 z}dk4Pr&Mb(atN6 z<=#xlKG1tJsnd%|nXj{$at3k;ZEx4MUh55R!RIEjdi+qe!Q@|_2>gQytp1Lh|F=W- z{;}-W4(^4n+x6sUZ&!ij);5${osdX1xg)Ei6M^TrSq)w48$r_4w!l(fv2pZT>N`OW zv|ilYtfE)^*WbZ$ckPgVM5I(5;jH3FW`R1Q^=4D=%qtOUog;p?Gv+*~D1c*amp_(4 zq?1diHYI7yKHgQ`wjQp*DVD{{9lvx8BK`V5-7}?j$dfFoQmW9ZUhaI(mgv*kpla*o z{Q6!H)h@Fh-}A1*a_d)neH`tl23c9h@4`BHe+81u=;O7+K8YP5E+xArIL<$B@h(*N zKPQ0uvZ2U18Pe4cfLL=WmffXKwD58j_P5g7fw6@tS3#j{Ku;dHEEJhh%inB`k8)!9 zUc^p8N+|MpjW(gO&(H3K;w%ZIj65r^fw)-qe-kKQEk2&(?SC~32-`R7Ny+cpRAV2m z#)|qLKV0RMfW`|TKl6}-hIcnjGGUog{`!exSj zfy-!NK51(C=IR^EzE{sPMtmzd^>o_TsnO4J@={zlq*^Pqi0=s^s`@!Q*P>5gXZ``7 zS7SDEY0{5K&UMV=vsnom1C;Ui27po_qH(i%dVSt}oG684k01%OJfQB0JgIaX;Ggvu zK33F)h-H6QHA?vM@U=Y<%N|6nFzUh1k<~x*2&$pyK>BBYA6HE;S;}+m$jXT9S_eC_ z3TotLzRIluYm|NauVumw`F;FFRwc z-v>kVOQUK`2Z*MO{kwZKM(;4~_2)m7$3Cv^D~J-$|DQZ+c0Yb)55=n6aR_#R>UNBP zqtxv@KVud}hA? z)}fD!>DPZt$1vH<&E)!=k{wO5 zfoxSDpM9KZHOlB+1aE5;UlI~DRv)q#C58AX{N)KJyq@LQWk~ZFETK{$0G*~5l z+bszyprmLwC5b-XP)V15{gT#0C(e8bH`ZJi>*2o|lj}Mik-mKCv60eKAhnwxg8Lw) zJtnOHPQ#8}2=n0Js*<};A*!%WRd{EPA@mZDi3`EQHNkCxh3h0m?39y~oKA06#Vn;dND_LT$w0qp?T!kC4ZoET!DGA3He~) zyY?&IolqFmq|04F&$3T82X9IDJf&qGMdp)nqt)^Is8wg{d@mOQHnM__9%q^7lh-=) zU|yL^hNY*J`Ab)sn~8>X9YqOF-(PC*Dj_tR&v#XMQ_4_zSLYr$eKyM%%G*gRiK>xH+vCc~if;ANuw%%e)vQ(D7b za3Z(PQi_omZQt;FJmi;-V&H!u37m6Ja~sQUiDXV@G2@JoaFO{Vob<*oXQ2@uo3%=} zEKucMH7{;@qF6Hw1(QMMbn-z4x3deh7_u>zam#uEdMdreK-s=NCc{$hj%0>_cdv)C za*+sYMIOq_;X4qk#Iu%eRT+`e&FHSY2(x&f9(ll^p(gvZ+y$u$S}6=XI#!1|-DTuWAf^XP!+uvOh&Dv-S7s z*2^*`%|~ItrMjHtefvl$;ec*2pubcGQDLaxazN=y7s@UYP zPfkJ|rT|Dg4^lgip`E5awDO=x^%2db{aFpFy)ko_2=JjU_^|@Ni_U z0hEvRx*ZHO#(q`c=JGoL=_>R~Naz-#?v?Ow5>?v1VmHg_d(1LgE0iX(4ac*cy4!43 ze-ODHBpr&=tz4vfI|IU>G(cj_rTYmp&85A(fsq&xZ{6!QUCJl!Sdray4KXbuHRLpW zUE=aB1eoGhQ=HOy#mO(qu(Qvm4#X`duFRgb-nBww2Dxr$d6MCsZqNJ%AXtHiPtqGc zakq&q8>NYUJB&9>WpoLN6|8V$?%H4R8!@x8yPV|`+N0SeH>(rz`=4^pTifCQW+4&H z{$3p5y(e9O%gwt^q=>jV^oRqj^Z+)-0V-X9S8wu)xYq-ynd{YIxC_u22e1Y3&A)#q z2G|cMgcbA~^hcB`8*ydti_40n`m@GmXs1V{?$0_sXK6`Zo*%tJrfIYaL;1uP5MC?~ zkGhW=i>Fea8h_SpwI z&|LGmNvuMl#eCUKDEucTeX+rsKcKTNGaV_-!E}AB=3s_6ExMTjB=}$-H%^rRq_6wQ z&A{i+3g+#x^ns1dsoIdWBEjB~U>`oY5$y3(kO^%LnoK*gko<#(uPlR@^g*4oy( zExg90SCx)h%WF*QcyTGa$tWSQk2vKJ9%srv%6PK}lCOD&#c978tE@j4N z39xrHuSU1y=v=4^n-h-z$eInYJup!&$ zkIagg6C`lKSOxN&*5BcuPW@wPY=n;U-DQ~Rkh3mFoa}cX&}^3au2Y~rYqPHNvHPjN z;&lCFG#9f1t~~|0%6G1^8KG<_=;$BgEA@|gox)zw9^ge_jdbU&k!O-Ta@5G7F{F31 z{Q1w4=UI7GfMp&_dUDMk#n*piX|1+6j#)%Jd+8*|90~>ak1U%#Z69Jj@}It_4Lg{N zoF%9#tNbC)F>6rvC*-vi<9e(3+eG`0-%L0FpY!e1@sMCfVfs zT(L`l9WU#T<9Eo_2!Js{xCjH4xUpD>-9~_MU?x#D!93(Ki@Mb67`ImEIansGz7$P!;BEY(2Cgxny9D@{+V~xxSI#f^;&&1#@&~TSJB!~c8VwbedzY6o1cmRKb3v>nViEUINVt%B zsgRjfHeaxdHSV%X=lb)T{aK?M30~t|@UZCsf}C=k0{fgS%<7&>mE;YwqPNZkmBwRP z(XuUONI))y{xQdIHCaOAbV7kJuCiYy19elb*nt@e%C_EwmTo1?j08bundD_#6kke> zshyAls;OLxb6!+jn#ATxYPZQ%DVwwJ z%2k2+-Tc?(8XLf6sJpxmuJsDDa&RfPC8Kee+=}}K{YztiR%bIzsdVwg@NMHn3(55kI}|pUG&~O zP5MX>^B`%&!*{jVl6YwDrG zT9GoIjB3%#Slo~)ozF^_i>~95nmA^zWEC2+)AJa6V?*`|e05jm@)ncLXyamql~ym& zm1nRE{8vvStnSLOsU`M3TIE(}*KthE^VsJT9<2MERHJcW_JLy!c(kwQ*}B3dYc=jl z^+aMz>tFZJI$o8G4(r21leMz4UlXcp4wTs|lI~9xr`z8O+n3BPORIcG&s#-G=lJhm zWG)J@qf|nh=1N+|rjSit zCuDy@{&NS$O6(8WKYy{zeg=>+?OY_W(w=jA+@FTw*XB^#$Dz9SQmZ$GZ88m`Q^7q2 za<)|ml^5du?X*^_&PnYk*3`1v)+1Oo(#4pp=TIuKL{uw_Lp;5b9^x%_gMAvFWBMY* z36?=cI8s*Yum4OEq+LBPY*)|s&`oXW#-3~dcsRAx7uCmy>{9xERf#>UcZi){E_5g# zz4#Wk%PGI7P?3uv7|S+&+4=yu8o17W$#jKz!@<6?!5sf5@I}pwVZM#b3&uEN+G4XN z;l;E_DIHv@y&HCu%Ki?G^`RtxU}PXNx-aExk7p+ z#^%x%C_q!g8YYD;Y|!E3{jKO_x#&_rOhte9UoD~7t1=ohjg}pqO_U`4tZSGnw?OT6?#};PgY0=G0Xr6X2vz-!e4@eqh^ggurYUtuk z1N4{$x3{qT1~~d3_3yDcWiQtLWJ@gj$N2R4h{n@<#Piacge=&^Lq^wwr_Xpc)_d=0 zMD(O>hIN=zgK}1JTQS9vSS;viw(>%a5TdZGCv_OHt5QZ6)KM%Ag9`S*bVsmIBcVX2 z1o>vS*c9sC)N?b?R#`y9u987og5rj93SlXUrdcp8MWH=YMYiNbcF56+89V z7c_mdoOnF!xdHCu zVKcl!F7&=by>EZ-`z?LHK2pRI(FUt~2QJiiB`u}SLwBsi!^8_q}pP(Rhn;w>fDVMXQ6ote@W`bpO8sx*0b(bZsrHS6w%Fk$@SjyQlj>p`PX21i40Z)GOyWH<%l=so(ufgKc7%(T zP8(n$rPO_4?AIQ7TC^`$Vt*Dex3X6{cl|Mq*(5fhByv*!)>qZjk4t}&e^-TzKJs6? zlORM0K&-lDysfl+8r{BL8$WB`))SFMTc;gsMbnSdepykAp;+3MSxS5?wp#NG; zc~;u8>Td<@_jxLMfm=WffZptr@6g5HDZQM{Gue~!IhRZqojF$I{2X2jr@AMEBh%v5 zeftlrs8m*k)z^N2n*FKSo1diXgb|y7Rim49y3epVP`}}^kyf3bsOo5b6w~}HTT-l zWjwidtIdmd<8saGehela9s58n{I1>uR{KVp_C0n*a{Es8+PBJ?Y-YV2dp{Z%wpW(f zOEqJ%Z(1=;2@KVlc9}LMsE@W@yrI%c`!)$j^lp1*@0y_c!wM$lx%vp^O+sFabj+KC zI|ja7IIi6Cmu?hTvD(1P=4{~3N<((9KEoaw9-`r1g_(&_W5f0;=4kA7I!8isyml`5 z48cDDycss;mE@+Bh=-TEUG)oR`VDcmEdVkRZ4~d;P6jUP;*{ z*+Llr^Wq!3i*M*iKexO1$&yvw{A;_5muTz7S9BMjRKMcx;*-+nb{AjXk$*~e@k#k_ z`Fl6*pWBhXvAg)B^mDt5&+kZI+f6(?^aUW|C^)w(NSF8_yTo6-uF^x_ce=)j0!V*` z8*eqemfpJa8YW$ z4wIPPFdR9!Z&oO3rCR=BEoJ% z0UDuTuUKUorhI z^Jjc3t?nH*U!KTof%FHyEX{~Ux!4)`ecl>e2msm;XWgjx*KH2IxpNVU99o7jfizUk zQd;K%)&$}&K#28c^=cTOccDKE*@B?44QvJRy-4Xe8Xuk;Y)H?u&q%NP)K`7L;F&V- zUA^yu)Z&!d)*5C2%Vy4IY@LpMAtvwB%k5xBlhdQb|H!G~d8yTDp$HRWklGB-^#_6o z7Q-{_VBg5_9Gmmx;eB~dd8{>fTz(a(WJ9Kx9RzYf>mxM8e%5J68+BGA#f?enRol7` z#rYp8z1*y08r(Y%&L<9#R=^)XU>Tkf8I@xX%OGESWV-XIqShctpJ7BBpTohmmG%s! zl*wv`o;^PT&EU2Sdt`?5?lQLGrS^^-zS0RZPa|7ZVu~F7tuT zwoI;d7*B9%dR{8+bt|;3XKJ;t@Z9NDwEWO*J$ulw$YFNRCI_H~;rS|gV6g70ywuAw zN@q11s9<5=yy`lsh!Weeaw&b6PRnQe{MH^M$HOh-Y)&`h^bu}67g_X1hs=mi>ZdD*yx1+fFT%(L%Vy|mE+PH!Xb19%L*L)Owpm7Bk7Atrk z_Zzg=QQ%J~0T*RcHD^4&694@zfcvNLcPv*ByWsC6CcjSj z`!%wsL8gnp>+$}3@pqIKR0;g`#rN;TADUEEYzcdtin*5EgO{J!F)*6BvGN>qFLSk1 z{h;P(E&a`^fA<}t{Ekk}Z->e6S*NZ_YgVbyJNbLaOzDqJPT#3MTGuOwH`%t@tLm)S zZGCE|Ch9Y154r6nen#&hi%!VeZG9fNG*O?7J!H0b_*we5uY#Yw>HodWaJTKdc4DG^ z`FqH0FY*1x{Jm`8ZtHW%C5igX*+XWe_t#GYz+1Z+|Bt))$8_-z@8Ul($6l@Qc*o)GdP)Ogt)vIGN z!R;b1c@`9SH7$ePV~)tVGG3|!a^8E}Q9ae}QP-YYeXwPp7GQEoO>yit7EF;|R%A@Z zz{a+Tb?s@@BWImjP#x07)5$wxnv93k&B#kN;7@78*lc?HhkwZCn#OBnYDTH{*j76$ z!8v>TJ*~mhGOGS&H4n{T_TUVFm)Y1R2MBP%-DCPjClT(kaup|HY^9nf(za4jo1vt0&( zt1@b*&q(3cCR2Ck4*1IOgHx+}E?^0kvRJat0uccD)-`(c-?jhhz9M|m)Dby7--?c_ z;H5%HHDtFt^DaOqbWDK=w|at{oW5WZGd`=ezFoQNaRNIyof`aA{kAvGeX8THruHFoCEC;UP*Brb>EY-g18GjpLuv2P z1D5>)+jza4TJ5dat8t$k>W{+hBM`@n&QAypMXTH85B1*`ik5+p^<_Ls6zad)2@|WB zu$UL82rHc*m|Q01Rkrz2W&zfO<`Ei>Ud5i%`%}kHn2^{%wCv&S;pjBLPE78ik?PSn z-ZxA+iaUsUDKn`PyFg@w>@Pw^?@hVCtZ3)dF&+7v-rrN!oDP%qo*?!?6(@sir#x6@ zZx7pVl@)z5^(S$A7++d3s0&)$Q~rmR6@5`9l7$W-LXj*5%3cj6P5Di@=nelhQgD@y zQDq4G2ko8kSDLct?0-NNQ5XWMW59GlUY=F=K0ULOTf%7Y7^N!4LK%j&-{GwIUFz}9 zlwWEtLS1AM&m|PSQ9Y2lRn72fPX6d&QFHD|^;G4(EYu9O20K2@qN2Jb?If!{TE&Hn z-coVkzIR?IlAdQN@$mMLY7)<_^(LjV8N%tnkTZ6^BfaxlFE=D6y-=7}jTOPNa}5>s zPD#%Vj@Lt?agOtU>uXrUnc@hpMj(t)>Sc5ctdV!fkz(Fvk1`Z32XX9X@-`9rG@-Sh zhl*BQIdZ~mD>`7GkX`Z~ilkNVf$7dP!7y~WV!L%nqZPG!SZOOk{wg{MbMPC<*NMF|0yENyoIUkVqsT{+sEw`yobFOFGjcajgxW_RUHJzVi_@>jw| z?_Pnx1VND`(XDjqIoOR-=%y~A|GGXF|II0B;Hca1-_ESJn2mCm^)`hN8SA#RgKZrz z4?$8)@!v3;QEJt1^WPvl5r%)FD^h@JlKAL%KZOG_M=<}c(pX}rw~_js1gm@o=a z4tXgfw>~#Y`8QOw(?6?(?PhUbxR`&Ilr0ndH)J1MX1`@PNEyvTGbW$CXk5&vvLK}y z(qH#$npYMb4wHRR6$$-_wL|3C)-4J~TeAQ5P}3J_W%iq@N-b@N-pWwtyg_Iwi~bZ+ ze8pP(nKTJU*d=eZhhpfVphI3}e~yw?xac2Oo)PD#Oi%j&vpq1vp0vFaeX4p}DYJKmqL+#q%ZlE*a;VoG z>F;;YWymzXqnxP+lK=Z|{yVMMN;l~h&&Es9XecmQ)7~2o1>ycj?#P>?^6h)wZmIjC zhyVITgan_Gysxl(q7^I%^_xO?L(|akl}D4*NJ@w0o1*h z5sIdtVEVbPJ#gidZ4jL1_AY`;QY(&+<5vtCZcAS&5gM%Em`kOHntqqG(~)S( zbD_w9Ja6*z*RRv-uiT^z>*{)@)-C)I<97?+A;rNTM#tb}vh*o3qC z9QD0XDuQ=QrRXb7W~RPUwe$3yqP|7c)~ks~*T@Ct@b^<^)GL~T(CvYXw>V!IDpkpm zVURZRyOuIvQU#RVOWjbYps))8f+Lg-R{-oq#5Vs za;9%vV>~m04d-3KS_1j-np*lG6!}eq`w_dsCyvZ#E+4>h0h{NB%y&ZqY=x(!qZNua zQcEaugBIqY=r0@jpq`Eb7$?9Z16(>D5ePhfI>qInm>OSGgHvBU^r!C}zLZz# zekLol`I>orm?2^~D{%6^a=DjpX~Q-1`Glf3NEsuzAcbvjr~Y*GE(vl7ie-Ph3FXY_ z4O@*T)Ah6)Pm1f|6)wO&YBXRO#`C7@3E+W_?a`XHOUyg4Q_t8L^K_dyp}<&Bxhd-@ zbGjS#{q%<&pa+ftv_N%TK&?REYUgS})AE6)?Ruz1ZO-++1$;qpvAmIMEHAX2uiM8r z=pdK`H_Y+A^Sm#&EKPWe_uask&5DNmbWG96%>sn4AJ(V>o6lu7g26Ty)P0sd<>iol zL#?SA@(V)B4eDDjTq`;~3z&p-vlNKjLP* z7Q~o5J*OMi(Um`#!wqMXC?V>5bTZd)xHmnDamgBvt;%V+&dbvF8oMu9~~RXQV?IO2_KzE-LAZ|Sw#6iEFthP_J*I|p>M zcVKL3Dw580M2U@DogRhWW0`rGX1nW-X|j=rNZ zd6v@ZHF{km?Fq5UG!uz)>WiAJ*jQ@z9_;$G0}b&#w-7Uz1~@g@%Mq>mFjmk{3Mlk12=)=aQz#@C!K<^2 zt;l~_kx^Dj!&B;AX>2Wn6}O$Xpf}#f)G2jOilg@Mmr(;YKCUX}r6w^{%Hhu2X6@(> zXYlrJkv>uHl7`2WkyA%5vBgE_7f#t^4+Vb7A(7Lme5yt-LpR_KUAPEWe>7tG7D#A=bw)yYFw;UB9zWvhREfm+C?L(`GJ9=_ z%}pstlzBA2OncZ2c?sp3SDni=ZAN`3ss_zNi&DpuMI>ig2bqucg@-_a;J%vn(-CzJg%qwYp<`Bn=H{H*4U_ zLMGS6%>9i|4MX$?P#Mb#aUnTSoJ$CIngdn=A%!0*s2Fi6XjzeQwRJa7W$2AB;_Aso-H5U7C zUFwQ$PS74UfT3Bs!C8vM<5K(3P;_KLDbrf>th~7-(-;eKHzazC@dj%#Dr~n0>;94I z{OBJ@Wi0*6qQlZl?UDJq4#!qNp_l|@zq+L1ti19PDoAtC3Y4X>Ld}<0!(~rIS0nOC z22Ys;72G>Q7uD4;V9U`iW2*)Z9f z!YieUd+lT5nui#@daNJANZ2^t&D*^mA~do;^%)!ydJ^ZQ~r~? ziSLRpkKUr=7&XhCLqp<+rv;qfX(`h!zZU+YzD#Zf8oqXVz!L!s+@NCt0NCRSvus_WWH^ zm=N2Zw@ZWxvF+MjA{6qpW_2t2pu_ylmTZYUm$h5=fmYORB+9uEa<6NSRbzN2^CheE zIxK1{nUgh4IJULM1L%*#JFn|LDis!^ww9I7jYQ&ZkvmIEICuDJGg{JevCc8wBh3F8 zf7%WG(3f>hmb0ANLqGY3a$29n*L4IZ_!~sja*-jT5__gu8ra587zesJPE5iXEti<( z96rim!IJwS6VZ(v5ih4Je`J%{9#^BANB!OY;=UD}Nn&~_7}e30J1KL0%=s-7fv#P> zq<9b4@fA~RV{q5j#7ph?cEyk3H&NfY=X&Es+Txs|hXT%Z6xMb0Cdp40>f_-kYZJXU zv9wk~VQSmasLc!xTy}WJc`0C4*zUbX7dR!)H+@i# z>fWVdwUqs^mS2o>x1V}Is2wfXvuoG(HD$CeVd#6w4E{Y)2>b57CCpBSQG{s8vZ}+q zL2jRqFg^xcEO%yrSLyejmJzmx=R3}+2|A~n_au6m65;dYi{*-uX+|D&{Z+lV9s4JY zbM7*2C&ka~E4)r*%#@ zV;~vB$>r6Y6US8mjae=-GK22pv<_8vXM(GJr#1@9yoSZv4J3@tyn$d~aKnTD9-ON-^yPRCRZvM+ZH-J2B%x;kL!8Rhecp zPFq`-o78)|A>5_>T$NwASLL(Hr3&J*KPslaYyvssak!N+e`;W6DTkD^1J+>%I}#|;`Ph%@;mCE%I_8UO=o<+q&a!7+grwTbE;`{ zhtOuoBYC$4G{)9jX*;dDw$y4gyA1Isgpxgyow7#8)BR#tMJ^{0vMA8JSSv*H{#9)8 zgu0W?PQg4RbM`UXget%+jb%?q(Cl-VbG%`$r5WL9`XSn9iuSH?a(}F=LjbBKNJf*) zvORaNWFoJriSrl@GU*CLPwPS6H#(md?Tl@Wv30RH9sg$MF8Y6~m0G~~D{x-%B3%T; zC51R^OX8v(&RxngCxp@L=YQx+aa!T)_Na=c)*f}Q_Np>ZVH_pP9ewp<9>o}lWr?gY zJc{vM99v1#b})|Ba)6)gN94fPOZKfeG`aqY9Pw`Rybbc&V{#O={0Ang&5OE3Wsj*K zrs-|p%-86S6z8tN0-si(O|N6Ta+EX(tWmgkE*&BWv>lc^-v=3P;9>9(k}=_LtNJ#{ z7I;PMYf3l3G16@xevuxnsLBQ89uMR#!tF5^ksno%z}MGQ!4TM9;kN_RU(eO0e+&~b z^w9e@=RNA;(t>DXv-1nulc0sQUgTGx1=UdHu?-Q<%jm4Sk{j#sRKDQ|LFA$jt<+O9 z7Fzi2U}cH@cG$ikqrTB75|#K%-otK{wm3f=h{D8`0n}3JrcYu4{?kD9*{p>pW6a4J z2^X+8hwWVSJgR=cQ)p8UbLC+P8LOOQ#U$!#0x8v}@LC$tQ{D^}eLi)6%w}M+!|MN{ z^NXI^?ETy*5XqQN1!b@)Fm7`7C}mJ;`Zm9<)JQF>oK1*?VY>yX+A8{V>VD)vKF&y! z$>|*Vta7eqcPV5K*5hnx(=#Z|fAx=`y0$w*_B-gdO+DGvFI2R7>i5V~ZMcp+O(p&H zX1*h3(dH?y2^h_^7rctT&G{HwH`?f{sH>UOqk4p8pBKQ+f*N$PRrgt}>ZoM-*=>J3 z>*~v7kpZCUHw*&8{of*A(BRx`@@1DuLUXb*g;%?GkkfW;vF;Ov*pE<)XS3uB*=*RW z$%Co3|LT6Uxb<{?Jhc6>+e{8h%H%YY320lMKwG{txqzRqNAmyHRFVf{C<3DvBSPLN zLJr#z9r%>764A2d81elMeV1p2uCl?Q+^SyAq0k6+T*j~f_Modbh3q=_xQP8CG%L_! zdzK!_Z~YL&$gxNEYsQ;5|LDC9spDx1LK#n&S&MlwE?6;;k-{xiPL|ob_3T{i3rmV+ zPr#5TLha9MQZ75jTmN%5A01igw6luQ6>Zd!$qEIq*le>~5o@-JeqJ+WgJ!dROdbc2 zhbAgZ6IHn(rmyf0Mi>6X`-9P7ppg3y%p)I|8Yc>R?61|@kGw=_bJt2+9pnyP*wdvR#{7VAr@rwbnO z`b{{-tzWt7H))WmU*%V+pRY^(jO7Klepn_+(uYSwqy>waJ!)U|J6j{nkLU+Q_}q)ZvUi)b>(2Mb@`JM;EEX8Fq2X-VJuT<9Jq}A+{C1Ki^=rs zuP5vtsj2p<>8VT;HocchFWRRD_y)QsfJFZno2$x9QI{kCwV2~)lad8)zRn{HFy`rM z73g|=op6sS+Nx392}-U0LEVhXl*hClSfE9Kzof-VTV6L~Qc88N=An~B)#81*PNrDN zk?4HTKN2m9F#>kv^klCxGO)?HHL;vYbJl2_cTSvuHpQAGZrRT7JYb4PIHR8u1-iWF z>;CGLC|B2~yzK#u7rn~PSJ<9{Rl6%>xc5`5=x-7LWlC(lvt9L&kQVNLf`3+vs>0?1 zwE5G3HTaU;s;QXKHFDxlwD*$=bU3w|l&ckveS!C3Cq)~o28NGRC~Eqvo!=*bjCale z(j0jiyOwvUf5NFJi14kp3E@;$#$F)tiHI^UP!nK4lc70oU4!9c7J8Ko-pQz&PNp<2 zyqTIrigTUgyiyXmu!=Y3mD$svdbND;Wf|3%TSZ1$%3t4Vu)f^+tGYaLtuVssJEB8W z;~{$~+p7fEADIld@|?OSA9q3>-8l0Tp~I;4Ww~u=YqIcHVc3n~0Vr;qSrLoe52QhX zP}+JcLjF2ZxA+@I6G53<+3F*cE0|PXMqtH;Kod?ohyxd^)&Cx=oGyRXZBe|I?>%|g<$$T-es2yEx==525zdYn|+3?<=>t0I09IJg5_k~Dn`n!Ci5ho2|)DNi8*k; z$To+IYH~E!tJ6bde~O@$->#5-NT+68g%gBtjkV8M;%g!4T;hYcS)T zqMFy#3d}mffI$vJ)Rszk`C%pYm-{(6+$ZiOSnV?m)Di%pb>r%Qu@`H(C*-DULVt{{ zHLUw&NTb5}aQi3*k3lg)J8wDz+O>&;-bZn|tIJ>~WLFKnL7W(L-Xy%7NK_aNHGv{35O2f$?D0~SvwBviMLpTA=c2HSY@LFzvi9l)8ih(-NizoB`%9<*9kCW--1N8hz+012>%w zLG(y2H{Vp~E$ja2pjK25w_$i1*S8=D6dY>&^WIazor<#k)!Wl0OjjX1aXbhrF5Wsi zhBUMwohS2gpb>^lxakCqaXCS1T88zxMBQbLz*-Ah(bve( zQ*V;%-j?)3+$h8I1O2i0k_-lZ8^CHh!XdW}4nE*;w1q<#RW3&Zq2+0{e?;A= zRupeE_%c-Hhnryg20zA(R_C$>tnBeEs=+BL<6tA@(7x8I0^vCxT=hU*26a`V?i55t z&7iCFd_pyFIn5evRg;o>#x8Q>dw>a?5v>4PmSP0+?o((TjdNIDoQ)DW4CQAJjDI4B z8OvLK0f6jrc$%}Ti;ZQl?7(j2Hs3xO7q5~9n{fit?BzKK3piJ3FgaKi=jT#=xO;FN zV9>}K87Eb*=WFB`99A}uKM^oM9rE$V0%4gR9q&e@;mzjVClR80-)J6zug3D$ey?PJ z9q_{vD`44$0{s!0av<8vMK$^V`k-CgiKd(HI*1u5b;lK9-4nk(56f-%m0t`+X)_Kp zd(64;-d52fa1X-WLR=nGf~e%2gY!q2Vq`kuyb?4T`5V*3MwwX3gokmpXO!cE!yN2a zhkmj~I%b>m=-n@C2Fy5;2h$E%r$%%Mda|<^&;LTb@|Z5jO7uBpmfU6xSn7(OZ*Vr@ z{NdsJp`6^yVe5JROsG1_7FA}8$Dw=Vk{A%IB@h`#xq3{okw(#aJ2*BjT2IC(#}QI3 zn}b4KyMZRu!nD>BwYwkaRk^|xzgB;-&bmM6ADRe|JJh!Y44Zt-#K$EIwUVJ=8 zdz3cRHReh9U5sE3(PA~0>%JX--)Q;=u`{iaOj}$TZC%wsfePOeHiP4M3d2(W4+bYt z{tm^)`XIL+--NL+V5}-O>dgVamLQ6KM3Vt(@cn_+C>t*A0Z28zxA-Ar+YZB^@%H6T zJpU@jOWlrRS@TEd1R~=e!zcz(+W_h0o2{oJUwxgs@=l(GTJ8 zWB7{`ZlgW;?19nZMjQu6(tPtFNJfhOb)*}-z8B)JU}}83zBPlp_~q5_!<2R#IVx89 z-RhTQG^f$23JXjQKQ8Zcd7d5t&dHC^&Q_bFAm1@1U@~S&$N=dW@Z^wUvTZGeKjMsI zjl$x2ytO13+?WQuJ?2NyGEn#&)_A5}W9X#LYg~`<<17|XYdL6JC7SwG-Et^s+X099 z?u>tXku>ikQ3s5yXLBtvP&2q1Ei8ua4*uVVpHwbEFdfp9dSr?2z1XAO^#SOBDKgO1 z1SKhE{sx7HLNZj2M6Z+Jr9_co z*s2#?T{UxxyvFbVb zX`!LuuA$+WtKwFDLuFy44(N|lbZi6C15hb z*zNT6j^m%6;Qu2g8oKGeWxHGI3#o=c4X5q4=I0Q1w5VX=i8-ngYzqOLaw#e8 zNw5c@W#Hi}vZWTDT*Gcc$sV7c9{L^@y9gnT&@7k{kJBxO^40&z70&oKs}}`U=%CAU#5H zGk>5WMmMO9`mpKWau+~ZsE|JP)gRDi-h4LQoGbPBA@IB=h-4Byduph*F^Ub%R5`^=?Ii;B)-yT;w7rw%1c}s>{ z4bL-w2?fMS_BhFRA~}Y$Vstr^-Vb}>72sq%)5$nFb@?$!roYrW^CrlsBuMSMsoN>q zOBL1IV;aq804Rm=aG950AtYc5=q14mba;(k# zJnwcXlqqmF1X!saeWniRP@$YE{(6{4%s)VYtK;anIPM|*dkn_$B~a*bhaApe7SmR~ z4OfTO;p(}ENTERxpTTJDE((0yM#m&-a}>(Zkl_W0nZe8hK^K6c@{&VNi4Gj;rS8eE zQGl>Ne#IV%4$OBxmg6H5hB*mSRKgf1;UYs$5bbWDT3?4G!RnNa;nO4lapgPau^TtM5)SfpubcSax(l@GI*Q} zTU3S`Cqs>7802JlL1nnt$#4xagkQZB84&3Zw|W!PAxBCzzj892FPTb{GWAfIB2K1b zB-2$%nYOFy?shVLjxij5m7y8p)x9K{Sn(7pBk*T*vNv+bNAKsFL!mZ7bwt?7@f+l@ zd%8ck1jX-gKHiz|@pD-$47}O-_#=T0mILdBUzNt`S|QA6#3ZCZO>lC1ksF7H{YI1j z6(6uKxQiwHTH$iwmq+|uR?(+H2Vjxw6irLO;wE5GSRl1&H4gy}a-Mpo&9-kq7}|{~ zRQPTfZhw59l9J;=5WG-oA*yHO2uRYjG5~O=IpFR}0QUv;1klC-cfEkSUz8|;xKHRo zh?^CW|9gmC_4x^ao=|`a96%>3yz&%Y&pJ?krl6ENQ1*en?bc0GP(CZLtJosEe_6SL za-#!tyHSaSDHM6DjyTh1gNf=L0fY6r)Iv{}8GT%y4qNg&a0@bOrs0 zGi>U-obYjo`nV+D{_iew+Yk3xv*v z#!KhV2P9((ZtEC0@@%_(MacIo%pq+2m%yIR_WhA#h?C=F}kY4TBDVV;-H zwb3{V*`Ymq)aT38=QYmfFEr+-F$t6UAvLsLb-r%GSG#-f2J;ldrThrV&KP@i_Ak4-;1PV-N?b87<$NdaTBJIR@Yr{RI*}}jPKZ(&QQsUQHDCnlaOpP z%5_d^k)$d{xywmC8>tqfyx=4ri^R5!66|GnSwnCB8hEe6SFIqbZd`6L%9-l(qt55m z{Hz#dt@*kVI}bQtpG@eHYrt{IjB<)FSrF_|EMWO7i_8;lLf}?1$x&dEINLPl=wUeL zVwh*$fGV`w52^ABAFL%iM+ZJS)TZ8f2{r#0&?-82ryf1xwv)0LS!4nH+u({$hlS{! zrto0qzJRf{8ZN}TP(IQ-atrtiLu1cOP z`KvPkU+BqBd0@WiC9LoFNU-bs9*7x?&cRhiSLX(`qOXF+%o4vbhvT5HGqW6pdhKzr z0vzGn)1(H%erL}36zCvXiOk+k$+uLp8VW<5bFZ@l(%&VN_CseW;3Q;HdewD0- z!YfYl9F?qw!d@r&hbmbOg3nXtx967H2FBV=qSs_B_jGmMQoYaK_?7poz~p&S#&L|W6X4ys z)_igSEj#o}?a3(uv4tIU;oazE^Cxa|PD4`qm2Oc>>+!R8uKE_S(N za1jL>tZnPL8lJa|i{k$~*0ye&75<&^-xT;a1wa9@SJIl5qYR5YJcOCppN*?=kFjTT z@l#VLhR&N#k85KtyqIyX-n0dn2_biG5ec=4Ki^2B{8($wbo1|A_$$W}{gpqs3EF_z z7!T91YxS08f41z~FqR3v2E(>c@SX@!y?|yksNV?3fHa?JLO@$~G@rR%B<5JCCgO%g z16NGPaV#H4;2!nRasKD2;w<7{`lkmz1uhJz|D1D;l(Gx%F@T1UJSws~;G7pkxKPhs8zbPXN85;1Hjpbi9 zmVb#tmzXNV?eq7Dp@NlC9ty%2YfGhg2>A5q&6pP%gT|QcvG(^EUj;ss8%=6KWEX5n zxN+LS2M&VOom+h1vOM!Q4}v#n)YrXD6RIoF0kh+F>NL_z}EwY^}}p za5bBs_QBt9oi8wNUp0y&-b*xEhi~R)e4x(NpLY|jVlD(KG?(IsKm3Z~?h>8nWhJny z`Tn5;=%~q{JWkpEgojkk^^){5!D6Qcsf_$;z96Z8W?VKH-I2PGsgEMH_2z)_x#0gQ z*V20UkPA1}9@6Xo)`MXJqM0)T(LvbZgv2vwR57OusJ=4=`rT`#(n(B{EK*yLuQ9}m zJd`=(_kv$kAruu1ULX@w{q%o%AO`oZaD5hTG)8rBCVAZqVbl8svO9B}&_2gTa{_Y! z70GdMe>)hP%yXE79YYvf+UIz~)Q|%W=Q(Uo(AXJ>zLE`y91*#;KX<@d_PKCB!rT7* ztE*DX5!pYIIpP9N5!00n9*7$)Mb^?Pl75gK1i{Ng&<`)CnmZB4Ue}sFG_25AAEUq z@MlQ5|EpW!ZDx*d=2iChjz4g~*?*Pux+@r<@7Fy+Tb{UE0kNCgVt~2Y*NOe>TpY2) z5nmR$2}J_9hZqO-02o{&$LjRhLNZzV!blN)#8REOzt6Q6gi#-J5g-H5x)n~Jv~4P99xGlB8~is11_>jWAuf860%#bkwIAR0SdgJGvTR-HbJ97I77@t zDL432wlbcGSVZNzxBtu|4*Bz{XXj-fCs&6Jt+S_J--OGo!%q2zzYH7TwRO+yz|Ls# zOZ*3HCw;8DT5Icc!-Y@}IH$fU==w~;P*r*{@nD?|p>S#jx1#XEp>&MAd=QLWQ;vUC z!N_l_0kAM~&5dY8K0Q-$FAFGCZf(j|RB@1(A#6ktZjR+a5u`_wCUe1J`o{I zy=yAYv*npYFI!`tkd95es+_dYai3|^N0%e(+G*Nfn&Ef}umFuRGyb9*w^mW6okkR& zfu1WRV3in)L5Vx`Mpv0vxi|?+wh+$7y+}-113v1`kwD;}$cT za0Z|j7EH|veLLa&A!aDF#dyQ)YkjT!D2V%^&}J#KCw2gsW8OoaeWr;wExV`IA3^HJ zBNVHSxD?9+u_oSD^$T>Mby3VjfZ~}ioanLo5Uw4dD|-n-dunmPwCqr(^eB%(ct@9q zraQcFEDNI?GgX%2kYIY~65SBOk>o7JPczR&kW=VGO8kxoV$!rhsrqv?`g2V7jE&)n zGTieh?4;##mWcCHoa6s*{Stjq)^qlW!z(bAf68fb1cyZ)18v}36gAo$VI7>$;_E)M zm%QSnRKG&RLNy=$3XBCM63Q=%Ap$D%ad^@}L^NB75dYOJ8K0+;s~u78aPTWi#_xN{ z_^th-d-$DlSoqoN1D=CLP-VXddD83KQNUSxc}&J&Ig^7td-Xk%I!g;$l&U@%dPFa!y~N)u9? z-JGwE?>q8BH?G98R|43ZX`fOwY-A^z>@jp3N);M1%djVZ$_XP-zs+SnKgh)kqsESa zFO&}{8TiZ@qGcgIbkvvKNykbF%%#@av8hwr72*7A4ugChj>9^FNc`auPVCh0~VV9hdpf!q#oPF84J@DBZs43ROE1Y%TLp_IZK&Tr5D_ir`6nvvbu3e z4i_w^ppUS8)oN}=B2PBeye?m7;q(A}!o=4Xe8nNP&h!B>%)GVFN*3_Q>%c39Q=ssN zt->Xk<_)a}FdOdDy*yvgm$`_mOR~ce5S)+v0L4uDKOADZO(ocL!86IV2DdoNm#$(d#jM236pU24fIiOVfPTi6hMCtF->=Itc!y zjthlHol8;27jH&Mq3V4?z*tFMz`ML+5|1z797@gLY82u6B!|dHRVFclz=vH{TC$Wh ze*t!bpYX{LE)Y&|zcwG0;Q^;@Qf$)>MKMC-y=LrlTnfjtAp)2QBp z;D;nGx$9l-v;YR#k^`?q_m1_1&VskR_|b<>4m1_HDN=&QQ)Fmx@$wq=t)(1gpH6Sh zfRa9M8JRv|WDe^X?~gF%{tP0}vO?GHldz%{ z`_j!mv557Mfrda(VBTuvQ}!}m9)~e8mHNeqok?RY&mL<&XRMWQtW}<4kF%G-2pDIT z9*nWdN$R`}SMQLvYHWP~6#$2UfItsUY{uGH30Q(SgzhBX-svUUUE|QZ=hpE=6J5n| zqRE5vvAH-On+Gc_yL3tedU@+N(>0bpBlmd#)A&WX^FDeSwFiwKfTlZm;h^zm(EEMR zbc2kQQDur=+_g5E%|?t65oPK`p>9;6jnL(Lg2txZy?m-jVil!zR z?dvFu%PE(tkxk?h1(cFYKR_{|4`d0162xT1c>6S_4(orJ2q6(Q>>#Z0agFF2u7eO$ z1k*T#(FvGI%R4c_VBJ-Q=6$z`qX)A~Lr$VVv4fe3xAg^#~CQd17HP zc8_=C6wWlV-)`~%h*|RDNoXde`&4!FYxI;K{sl7{xF*;CatPmq&i+@g!p{ZT;(gJv z`@;J!)$Zy;01rWRsL5P-mJ6nfyK8R4-+*g%Y&(O8L@&#oRv5WG*F1nZ+D?c}&NV;6 zdy6hCn2_s@gj`ark=agco9!v2E;*YRTUA7ga?M{b>z;%}0Z_xNKR{|LL`y>J*uh4=NY=rIj3x>_^w^b5qt35CIJ z*GuQ2rZE|~%{YS{TYCj~m_rm|7F}os#6<5>*JaQhTvmn?gW3sc1D{;!9V*d)mzTf8a02(+3bCHmZCd3Dwtm zXS_44;I3j6!-+vdo$4+|%7uoyj*AveYQH=UM~P>tx9SQRIa6j$jF-Zqjf@`dV?j4g zGaq@My^K&|_L<6V1Qo+L7kny-&vfFm1fYn|4?4pK-xeYtsxKj)qGaL)>RgRT!H)3c z28H?gdxwwbKbU@y8foTLUjr}SWfSc4sJIz@JC2d;11KCL+4xD8I!02Y1&!P1a{4!} zn}rLUBJB^fy86lm&+%y6;KMqGqm_!E#ti4VX0xX%cO262|;E^e5P4;ZjWL@(O} zC7u=uXzsjOs%Vp1$Q1ug&HY7taiNW#2Y>%fify9YkR+4fj+^41<`>|QmTFXqRbc2? zJ^UgWEKRHV3!bb&L2o@dyx*nOzK=v?S%^Q#@(iBLg7aFqYG{-P^#h*=iOK0j4+ybb|@_8fuYYi81L<0B^Q!L2s8Evv+BC?ZXtIhv(*|h4MHim!RcXlUcSOQJs{H z3A}-DZO~lJ>%sjk4JcMUH#=>KhooAPhH)XgURqHzwiX36*W-vMeh7Bx3sq5hn`OOj$+6&wIYvJRW87oPC zw{G{Iwv`?DggP2+Y%WA!@~e&=jFV}}!4$Q&$Y>I*VeUm^%qO=iJ#`RUt*mFk=5<%%VHGekW)2vu9bZ!#1So{-%GH6x2piUz&f+oD)Ayq7?ZG_vL*Bv;>`w$X&gv^ zan)i(t2rL|3eg6B77LxT-{8P+v>G7rcWzS+n3M>=WfR0Y$ds*xsjIZ9?gFXKArr}S zexdQGRGF$h(Cg97vTRys-fq>`iW;2ubc1q5R=MX;u1&W+1y*(XO4ejr&9~S9MD0w4 zkKKW){pfQt{iH;ES~j5r(f)qWY1n>7dBA7~Lr=^#$BV?UEThxWx23R*ZmG=G3nqCg zkI@S%+%pDnNvI0EZa&P(F@hz~B<2fkrgdQnJI^~kx1u<~e)_r;F>hdgF2PV_g4=u$ z5(Ia^Dv@KXO{C>Hf;+}ptdYQGykw0svYl;dx$v{h&{FO&ZJg@QA5jE zwDw&1Y|@+LNh@t=`{6P6?GA^>cd-BA@K+LjqhJ=&_bay8=HG7g_hnYOhW7mT>K2>b zE6=rAJ+b~I{yswBgy!0HZ}!KUio7ERS4_Zhvt)bVf2!5$pa#{QsoV21m<_A6vlHO~ z5<$**iJPn{WCOIJk_00T*Zm*-4-5EzvFbQKdE)W$Xo+ll69D#wU(mr%g~s=9M9_cZ zNA8z%@oIdDyH~ZsgPh7-`>`-7+<_~3T`j@r+-(2eWw6b~LRTSbK!H{XL&G{VPX;J< z&RuRAL$0}+tC(HztjOSfMr+J$`R;CYVdYOtU|GPmT=&+`8W4z%Nyq*@x3y^$PomM~4Ol zykE>bRqgOsf%80xoLBKT;=F_)y?L{6Ay<*$0C8vGu;L%XDC`e6H;S-#blcz@we=x8 z^KS(am%g^{1=1d7eZPc6EjB*&8~e1vFQp5xS-)O)ZQ$(-*unO`HS5~o5X5G=B|EKh z0No}2h*>dcWHZs5Gixm7L54S8aTRD3h7tigQRNA2b}jOWEZuD0B0t${eRS{ISp#%* zMxbd-Hju#enmv>)MfRzz9V^C3AuYdVuo7uM{WE+L{rF9IQD`;ylj;l!$lJyA@N75q z+j;7zCyjC0uxEwobbubN+oeAb_e)$Jf{b9Et9i2{MYPAvC`OX}DizklHp8WyUz^RJ zZbWk#*#}dbo^5`NR|z$DlylzdhS!lpDgSiOSL%!!x_ zd9(@6#bc`wM;I)?exItSf)aEQ2ru(}-R@8D&%xCKFl!fFkvsFWME^saQWSYwsxn653d_Aqh7Ci!n>UN9JAEkaHov{}&b|VWxLON1m@yURIWuk7{ zH=@fnqP3}oKJj6>D;Ab~zu{-3MeH9SC_jE6z@i_Ksse8I9JYNy>Cy%US)7O}sPdx< zE6AdJQkBt2!?hR(6`|zwrP_Mw3U+!35;r2b1#=VSTA#5+Md{a&6sbv=qW?W|Av&Df z;6(zN`8(8%n3`J6ukgbdbtVL5FYhS$QvL+*xD`5&^zCJy{9^`Lt-NhdMkWqRg>Uhs zh04PS9y;rK#!`+6PNWMYN}K(z zj4WCjH13uq7wu=`5^Z;~W<@t+FvbmJ7}vHT4-CMA3d%g=*zi6?i@-D8w&5k<6Cys? ztGHXtal{8)9=9br_y7a)C{Tm^R@jgoA#9bMKscN)Pa_vqxi)xWiJE4PJWM=o8YbZT zP1BG1ocUYMtcO8A+V3X%txzyG4qgZY-c$gB0q@ASvn&H1`uOE$0Eaqi)Yjn#W0ip} zQxVrO5IINoNcPh?*@f7Ju-##6!@VQ}_C5SoZU$BO#T&|t=QBVI4SM6`zUk;?n0%B$ zZ=Eve!LG(4#nxtN5$-To20agA$W-f5=&`I??0F^TDeEz}-cDm4R=kVZt6I&6K%c-Z zTi!`x%Ui`Z6)avTIU1}S#fA=39`F)V-Zp4xFy(C%1WqsBWtsBQtopYl*AGh`0x7>q z{cqLtZh(bEn14M02aUeR46O@$GsOR(s1CaM{G#=MjSzMv#J`02(?t20Vl*U`QenX( zgrrb&B!n$ds@7~L_LD)fr*G?N4q1z~W|@c3WY%>Eb^48OD+y>6KZdY;jK~MBFRs3A za7kL_7%Kf!VWWJEYi}PT@eyLa>`=qagBw;d_%J3B<9dupc8^&F{RHqMlx{E|J{E+w zUrKxU=pf*gqXIf|Of9Aj0ALZRPaOg=-VlILfYH!gHnd6_U_P*h0B2uJU_?(B^g{lx zhu)izaE@RrE~Rnv5eQKjH_5hY#W97}O?$xoANwn+E48Q+>=RmEJ8-K0lQIEp&7>M%CT}_-to)}z>&xoSOUh>(&q^Yh) zv(5`6>M+bc3-~MEJWqa zisOw*s7z_Lz^f9>6kb*`1yTC%vOnF;XuboZaSr zK`Qq~z=x{`KzOa@Idm3?57*79e&e0|Ql3+RKPNc?RzfT{5Sd`=_vD<)EG#hRRHe`4 zxhKn%d;D_r!f_C)aD0L1=V_Q!f^amWT7rQ0jdX$jB3LlpGxK<+!K=yiqTi^f1S3C! zArOX!S)Lj1vns5)P}PUu?U4pgH*!c>BpnP}vr`a+MKj`eFTv1FYuS!Rk?}=g!Swu@ z8*P2xZ+wiUk**tkO=;Jo@pc6|YS(;JwxH--_{PmbjbrtoF~SUl=dy|Lq_M2*!_f*f z@p#_OfF>4l3*W%Rv58H5c$uv8wy_x%P8%mu(4dWaVjB@nQmY-n)rZsAedpmcdu(~3 zcUHc32Sb{-q~ig~xD_Lj?~{xp-yFLiHl+6cj^U50xJ))$;9Xc4d311{P+X0b67wRg zau>*s#(JhlC%E;99q=3LR&Jq}7Pz!Ki=ph(u8H$RKHQXpeUN6|xZPJAodwfEtTJ=x zmezgBZ$SiAD_n zlwfq$R2>|L`J}_jtu06Gj@)}K00B|^AD#jW7v9?rxSIT9nin7fO zt86^5kBN;SMO8rFcy5n09nzHvt%zTavGm(ic_EPD!!$7$5%Fw3}H2IuEd|cPd3DFYskaUI3B%D7sqs?eKIVr|X zGGQs0uBmK#UD_S5!sy8@ojSZXQSDCCn}8w2gdCKKLIt}AlFF#9Mp}AN8Ca=GPcNE^ zzvcK_YShwbkY02nbTJG);G;vCDu+smU)T|ra=6u2tC`h*mF_*Hg^vUXT;Ga#G|S5p z_J4T%67g;zN`eLXTFt9KP%h;1W);I(IG0*1le&);- zHftra_^rs{bezqg7$^cnad;WBkPC!w#^I$kldrhfqK;%EW>zN!y?>k84_BuarvH`{ zMRZf)uc*WLM*$(_u@vf9(S5JO`r`ylK9HDNlUzVdY#h z8U3h&utv#g(Q$6hN|Rdtg11gcmI&|8M0mG5@J1%VtLYpbSLiLHUv=uV&!50h{aR&~ z*#}=7luvT1cnd6#D6+6!cXgiJvgah*|HT+ggO2$S6k=`BKIpz!AJLp>UXDg-iS;a$$7C#E&%htn1x#?QbOZXAYW3CM(8y-B_Eq#(co-go zVFts%ma8BvyMF}r?KU18QubttAAtR_jb`t9vKm+c8y&l5Xw(jF*ns`5^}2WWjGh34 zbBX7{@tU64@Vm~zQ(w|}(MQYpzdl6M_qOQuUuNlu^j&XWfO5vzzL6f0iG692MxUcn zWuOMne$CAsj7zr9j<3x2eaSgtmeN9CabFORhtL!4!5S}U;QFimGX}s?4f`_Ac5}|& zfJ?k*3}lO^z0!&BdmCYHjsDv&vMh8bicbP=^=#P$xVYtmat*CZSsF1);w}4^w4FDhv zV3@B%thIbjrpG>RPb2Eq&3nemz^>Hd&5Dh!YApk*ytc6@p_<7Of8V214ms6q zwxQb)?Hc^yL+Owo=KwzB$KzvEHJ*fO?y4ptHU+VO``HpQKZuq{%Kr`B!Q%JC{V|N% z8IT@3^cYXrzlj?}Wl40hUNF~Fc|3NG-D#EIg7###$_U1+#KS-4i;KYc1v5P%h?v(~ z&()24%c!)X$Gy8ly|J)0e~uijCvuQHBP9`G9t-wW<~){EKOY7&SwrM&1eZ@ST14Jb zw0ayfa`>aEI{ZHyE%Pxfo;U%5$#&?@qH|-|G&0TOdG$%HgAzTa*1L3`Ma%W}-jF08?!&);Pq--6& ze9Tqpt>@unAI@6fI}Wg4RAz4cGnouKS2i#JVoCY<>ldM-jNw7bwPrnp&;p{UmI|8( zL+`HLS$QO#*XPyO3Gcpce*Q8Mh3-qEW)rYx1f{7sPl0CKfaX|dDW-h=$smc zxUp-OIS6!=GmOPc@#yH6t?%NjFGK-|d0wEY4l`cNieDRu)lC}} z9x*B{^aWLAyxMzxz5WDtX&OzXtP?%hhJO!5v{l7WrwU(M68v5X;2(dE;KMA&|EL^v zM@6&f4SieYcZp915qF6WF^3bqOS8>M034J{g2uUx_2vj6E)9!qr|u);tAdWG2Ym=6 z!>Ga{A_#i7m+%&~TF!$hfl%W4aotFY{Kmyo!|%B&dxyVFr=a!w5Va~1DyDqDsKm8( zeo=`1#s<0x6^UY;**k#4ANr7a)g;*ve--|fCl+tl5LDqw%wY9bY$f*A%wcE}j~qt& zV07UR)@X(g`s?WI4!Z-kwm<|OJqpS_^?^~j_?vK-b@EX4wZkX5wV)S$Iq1bSPt7){ z9?Jumdwd?=+99u@PurG?gN0!riORq)vAKZ%5iS8CP4;7Kp6~@BhIp zUB3p?#K2E}#noF)M&E;uNPg`&b z$_>H4bMS8%{*A=H0RD}}zw!9T|I+baM$&(-j{eI`_%BQT>xut*^yr~p)DI@fe=0Ff zu*3Y-mS6QY{0e>#WpUR=4U*qr@FkK{`3G_S23uJ{5HX?cQ{xtAo?soT)VMJ~0|7J( zHxw%xaF6th(OxBQGCy66n{+=*mrBIi9Tdx4MZ zFR!uMN%*JX_9-`)RoI{$lVkRkS)dtCKUiJ5^u62l`W?7=7J;Nu?->Y0=$2Svh!+7Z zYL)qp2#|K!5uhBCg|Ce}Py@nFMDeK>7LTzx!RSRET`SxWjAHkb0~m|fTy4>WDqtl$ zU_q^L1^$88#<|T1n%?^OVfIf~*=4-vu>)W#_2*;v2Hl|7yhe>b*LX*1-7qP`F|nB4 zB9Tncm$2mieh}0MXyql`dIw$R00J(2eiHP+PR0VzFA(jU9~?4fYS7iBdoP+A(8l6^ zxSn#>jZSA!h{lw_(R3@M!=I8*DWBy2pisfW9bGSa_ax8;4>E1DAx;A!4AOb@( zwsBZ0m&@7`b=novCjpk~h)01>I`timeHvbtHwoKVJB|ao{GG&qUD2nj?=s(5Qw=OS z`~8?wVt+trk`=Xe&?SRfQG+Zj4frBjGmNYkfAMtc*;(XcRyM563QfMl6Tl5GfE=xV z27W?Wy%0%yzSe&f+z_&TIu^x9%Y#9Al&@{$bTykh$$$rW7oSqB@tea~mNMx;1@V`{ z0|?u;hA+R(XkNV1nY~d*>@P8X(}e%W1qX)Crg%np=9Izm1DwyKZjDe7sG! zs`+#%ZWqNxMD$(*`FRZ^Y~#(b1=W;G5rh;oV9$xb!_0>zF7K#rfPXZ;b*=W0KXjv- zYLfJE+nEsam&};ovhO44V&d$md>@%{p^^C9Njw4mLHIVREICwJ&;&o03MG(xI{u~W zv8gzJ2j5JF!1M}h2{ z1RnuhTm<)G^LH|~;jtr*FIs<>9`?q-`NT%b{KP5K2^YmbIryC14SddZU_1DjPf*r$ zg3lpj0CmuYc%_~E5_~`qadlMWm!3ekNH^fd)n@V~=$}%Sw$ZT4E$anyeB^bNoVvmqNDF)2s|a{K5ovc{RR!659t6WhugN;rHhyeiEp5 zxM3WtXfRe9OY2*D)|)-{Y^dLnfjf=&tl#t6;PmSE(leSfR#szk`@Y1nNdQZ@@mBL% zsQ`269c@%UlHPnxYzufD0SM&^e)3tl+8bCP*+-l!t=+V6D z=Xp{AT;HPANK6*YYQ7g`hthjRl@@-4AE`KrJ|w!6Xin1*3;R}y*B31=GY4aiqn8s_ zR0e{$FsZ*JfkiHaOoBZKlLJg|nE&?0F3CkC<5|iZesa}}MXjf@EDOE;jEVt>-@K)K z4PHSW?jfu_pZ-H}y$BeIwngssalroFereFMPGcNtxmcn<{3Fn>YCS`vc7y8UC6Lqj zP5LB|Qi$rC0P8iJJQw1d7#}g>F7#k6HFSO^HhjX=;7JLP#Hhw^Byny-hTV;sZNG3V z;meX!+I@LQefiZ8>kE8I_Vmnz^~{E<_LzeawYl#X7s?krEX8gpgU?y!^3k_JleDo| zs32CJ6R+zrNxF9%|FD#gj&O7viI<`xH}p0C^CRp$fUM0gNy<~gSuOH}cpX?Pi$94g zg8zBy0F19B&4J%Jj%%~cg5d0)2%SjX2A42LpJNo{@QXTL>G%mVc{TFA+!qh&9zVh< z7n>@i3%p|D{s4vWqr@@VI%MPoSI!m9N{C0C&SY9){x!E%_R(JWq%W#gnGF6huN}gz z$8opNTwh*@v)@w-dAj#nxRDwg=hKL27?33h6M8L11ziHk4TbZsg`Jho)-*9OdoH~< zJz!sR=5N5&ksgR&8D8%8excp*eP*!_A0tdDoDdZq6m{rF$f?MjB4Pm^m<#cSO^a^M zbn!9%Kluw$_1uYLg75g}$oMw%Cx-}g%&X5Ap4n~o<9r?oa}vN>61KkxPRJSZt}}F@ z^^4Pv{WB;26O^`7bK^gey2?D__p%j@Q=L6k^!h<+OIl3$b^k59(g<_1Eh}8N-PK%u zYj)ZT9Qf8rbrV0e!lk}yM2D{*`dTEMOMIi_e7^a&jxgU^m62xLD@n$<9P>0Bmnk$P z3qlGY{vpLzB&;^6llRXSqU1N(KlA$+M*Nwpwag;Zy{G$VTYC z!Isw!;_E{lMKlD&%k}3XX25#tsCk&1u?;Vq2YA)ZSNB12z%MZW7K|z(`GK{PSfTI3pp{UY(`USFZ{Ew_hp1ID7f4I3pv8e z%D=fQ>D%xx;ziJx59UdPSupmS5B(CNWf$k*&bFbicuERTD?0ryvu9h-v%rOHe7EZ87(T``7OlI?-~F0Yb`XaxRG@c2S_@vH zeGk;cq)(%~+k6OJ%MJ(kYKwM3;4C*U1OD1#6J9KDz#xD!N+Lk z8veozLx~YEj)DZ82tHD;kr9A4HkW4N9(tt8(|WWKe9i~ogXgqAv_vlS8RPP`KYSV) zm#@c0qY(T$(?{o7Jd(7rlPIRUErO`e8`Zp`RuvcfGL?fIAOv+Aypm*3w)J`38r@zQ zN3Dtc1MzV&obkX#%Afiznz&$igDvj(UNmmatpZV2`Lz3*VgtW&_ecW`n^eoBcVJ6r z2Jo9gq&q7og}<}Ch8@eHD-g)w{(7u&+B8LI6s~_Ey#M%FCn^K^+Pjp2{L(5hkO%Qc z4CGL;5pHD+UIX~o=0BRce+|(l3zxO#hYuZyF+dHH zagHH6@S{IvrkV5PJN7EqnvM8Q7Aqldo{9{u$iNSi<1l`WJgwL*=K7LUyuScxSB^Ogn#+0>aC~v zB|319m2shZjagssk#aQMny)`V5O)9Bb8O2#Fr|%Br+*=nveQD@dZa&MO=okCp}q^_ z9^KSO>FRGui5`OpYNI*}+)m5iA-b1Ru2X{4 z$k4r6D_+k`3!M%Fs~a!N_%aByyW2b(B-s^1JG>aq(%)7glwXnoNP#AiYzkJq>Xg59 zxFAPLL5ni9zdR=~zG)qx1SIV8e(m(~W=Q^G!weelA!aZZhzyW{8K-6vXqs@|UVH}N z52+ikn}g8jusPxUVIE9S*^FAcR_hO^B}yHHKBJOYFbDBVCHjJKIo1)lZt*@Ve(4TW zFY!xN$j7zjfS-{Sc1f+Apy@YjM^l~_(B|wx>|*T>9t^^5U0TJvZiqeIa_9oi;-<;f zAR;H@NahNx5+znLi|!I<7(`3PVpB^Uk`$-Qv5Z(nsbYsD9mn%!WjHA)%DP(KV!tXE z;jjb7>S@{=IH6$90jEMAJ;9ERTx!l2?!FWT6Eye5dnC{eegit4L?q&^khb<|IE|}7 zw{>U~9A&U`c|$$|kHS|dw*ojPL?1<9jc@Q&SxQz(nb<}iKzqR5a=2M8dNX?SOKeTa zVUe@guz~B-phU=yj5&|ufYcOmWe;oYqCFyc+Ku;%6GTu-JnTdZpCtM0k2UMjc_!vy zDmOdwaW|N;|H5cy9nl*XJ zugw1*nT`U`Q4?K$a=}Dt#<;2B?XJpGX=57z^BUJjh?5K3UIk~(W9_%C5HhXUeNx}T z7?hxmxlp=I($M~?peTjRq?Sf-aWWnqy+Plj&_#_KHC{1v4HHfn5k zn5Qm4rQv0Ir(~4-T>=0H51CKzZI1;>fM%pC!&hu-P8(=8F0h%ZHDb%Rl31-hzQk3X z`sN{RBAP|&bbx5k;3P8&d)Qbmz*VKB6zC^oXBl z=@OGVAZXCACZRhx0f{3-AX3fWRz;Got6cVHPFpw&V^yL6L{vuB-a%E8On${ofq2-~ zru6J88C3LL7)cW~T+nfET|&Gynf@bGUJ7#I!x(GO5evj@h3u9u4N)AHlCR&$R1fUDqenb@gG^#a1eR?90K19zA*`1}l^;kPdGDGPFk__4-`& zqzBz?w2G}8UoalPX4ndjj&ir$hu-F57&3$w(Gs3xFXi^ZRCD(IB>v_6gthTDSW%Xl z-v#?!pvl>wGQyF%FVJ%Ue6whU2LPVX$4yns8WNoGIhuZCd!Yu{bG! z%k@H^Gn9%RElsy18-@IjzXh9jH1jw(BIV0e+-&}A5%PDJ{o7$E?Qf0?-gfx9Ilh7K zgzn&rIM_+(zB158_fC@D!g$-Czdpv?h5ue5*1zzFz#(&GeuxNgj2mzi=i2X=lC;|VH6ta z{2boqDm*7~U(&{ajwt=L>|yVU`|P{zy@Uf zh2^8_g?y9=y8Pu!O7Vl|ykObaX=V$5>6tkoFl7C>D3*!QzLy{*+YIhB!?4l@j{Pbf zIPXiI=9~$4o0aCOidgK-p3+|k)z_}uim?BH$eg2Mh57#MN?gHdx*G84(ExGR9InsM zH}04g-tEyAx82yaDug_!LSVgeh)YC1g!KlasgX1o7d7l^TfB^K?bZ+H z$=9#Het;;$O4HtE8h$UTSB_6*IwKQc#S6hi2eFAOz~%d(BVqqT{86cHtHUYOWOY7D zu>j>B@{`~pXb~)~V~1IJ!%}$3S89;#t15>CU*$*0&53xb( z-7WXPG`%DP)|h0;W!;}C=j(7f5GQp52>6E^WMG6TG~O>XzA_pLvCb>FvTA0C{R)EJ zMs@AR!BZJ;f&o0}qfsdX024|4wjLaR-7Kau+}z^{80X`6(6voB@S2M|8zHE0P!-Th_`We zNtO;X*yjsXL@qkVL$RV#dxcvWmwYK$$D!-mF0gpVyWK9xgfyU!!9~H9A1Mubvz*8P14Xu>0Vx59J_I0r-z$cyN{w^YNC-adaWfSJOg5 z@K)X~IuXpW*4&Jd$V)#fxA5&m@R7W&Vc~wX$@a68Uck;y6@nL(2V6aIJ`9dc%=;apG_r<6XgySTo!1HFNyd7u z7OE4{;p|yZl%v)5#9PpH4a4OkjI~kW4)7vSMLV3JF81!#?zo0|(4?UEDKpV0WAQPHOHaM!jPUreZ07lVStDc6wZ~$D{0f2Lp01UPO zw0tZ?!37uF6e!=8tp@na2y$yjY%&q68IP|fg#KEg0UWqo0jc(?Qrn^ zfB2!zd{1HP;RVM^K#OpKPlhd=w7b3}hZwJjd(6&4<0tevDKrii@-E3A;_{5oi=g*k z8#Er^S{dg{aH~SVz&aVJW1u^FpwU_`eq>)2)eP%&@XKl135A4Rf;{WBntNCg2fteQ zG{ZBR*+TF7V|7JPi~n0Mn4S~5NjIj5$g6pU`3r8%2~9$bwD@{ZZ9w6k%FO<7_X}ZC z*dKJkgumAOZ7p0S05%@GfsyqKF;ftmf%bUyHgF4A)x8^{6Dvhu!l4tHHk_%UA?T`b zw;sbt`GC=%=W9@Yg;O5#2-tGtyr48E^o(_zLhVFwC+!y(V4)a#IOv_`4&9G=3s_=K z2zqyg?$W(Cc|!AoIGai)orV1WOT38vp!~GTld$pN zJ7_L~-`!qbB$z;Xn6@C` zeTMOgeaKQbqES!-!Rtw6Z~3tmEjH6yR(GYEZYUHB#GQp|GqqD6t| zWC;E*wJ?vUaXf~7&g>D>TyD~yQq|VBUe7v|DXkAX1RMuhL|CYMH&W_i| zI9zt8Z6}1I5XcG@qFGohu)>#SvqIHayhD>u3OUu%zlz_54>pDA;kQo(RjD}6E(PRu z<8J8|KsIjxK!i~P-m0sL;W`Jv#SB59sv%E$%s&Efz?jQH6L4Js+_XDNz@{y~5?&R; zO+$s))U_(?Z+CYDI?NlEtf%gF}yAK+(Jwey(T-Xw^ z$isS=n{X#UxGo47TLZ?ORL(FM-DxwAf;JO~J|GE_Ys~HBNR`8=f-VxPJY6m@N{W|+ zV-N(X-wG~>KswE3#?S{=L7ZVND0BO?2O9&fn_ydjo&v`#qY6LQ^5obq{sl{6LPgjR zjDFk!izM^NnW)>lwPJkoeK=NSTObv1tQ9ev!RX9i%#(Dzi;Xn%KnQ!W{oxA+D+-1c zlO`ZZgxb~_FI(WpRWb;NAYKB_rU9fx89?mIac_n1fN~kQ>hD;=A08vJKcOqc@6UBK z>)o>KPsb_{7L%xd>d>9WJ6Q3EF$smBUfCf}7H-Q*TR?l&TJzI6q|&S^p60~`!gI^u zG(q`$x=gM4D${>}IL1WGu4~O#Zc~m?Yt7*xkNW&az<{$av{+ak-iR$&2w}^-k5b&k z8Ux;sXZ)V;_u+j3u~2rc-oS#|uTJf^gd(TZwu$^5#wFo**-F(G(SH}dyJwdZKMfZ3 z@i2qez{)o8d$fo1vX=OMQN{F>7R@+3<+=-aFN5a+W5>gQ0aBeu)-fh{_UM=t>N%&*asG|n-Qp?@}_#|Nlp79^>3cUFyU`PiEYqj5p0i1PDt*bl_hN&U525aSStQI zUf$`S3lspEfgK3dGg3ov{5#A?k%M^i06Gx868#mg#`#76RjfPRSOBiabvOIk4t(c3 z;-<-UIIiT4kFLMNmm_+V&#GeqV0@lfM?(25eA}jX48Ozg^wy89YPMIK+5%By_Xonwp&pmh@#uCJSilx4sd}az{I>jG zY4IyAua5Kov`FUc)aVO5na}9sjzJWNRv{ebrV89Yg-BaNmSS6XJhHRc?^?L8)Bq*?XbQRSeLPq0X%irI5$p#Wd*{f2UUB_-`=0P%Aa;! zrFadf2&H*JBY>$A6Wp5t?}nKp$3-&(JbPH;=A^d4)T5U|Pk=&JMzyWX{Jsk-bVWWc&6F(_^~x!u1h^$>UX7}$44R{{_5`zMlLzk*K$!#}Q2HCOtNMl7b#@A4*M++ZM#>vH8h=N_zAs z>TT$8@L>1pu^szl?d0id0!YChH~utEkLExAQ_>@ysJEfV&I1Yb=wg2PbY}{ByhH#A z@|5xeTO4c5Nk54bWbqUKFoOIY_-pWdgoib9M7s&J1^1O8e)4y25=U#d4m*-dVJSfkYJk!@Qk4v6e^6V+k zUh?cC&m-ii$+N#a2gvi!Qp>CId`6!4%5$g5MO;UmjN9( z1Sx#$CE5cZ!mW;C_~6^q zlwOIAi&glM8FI%4o&<2My?O}W@~oAoCeQxz93anu@;q9e$H?_OBi2%Ww)-<}F1FaywaK_bG4(l>gz`K@tjcOjm!>C`pVC=* z`0{DlouUBL1PeAwek1T6f^ZRCp4bMuZdTU|==MTF4#KBtQ|m};Yc*Z?kxqs ztM6?8h)&?+`@1PW$J_sL7vJ;GPnjX!{*hgLzo3)v_%t1D%pXP~q-cLv-@)zE>rpg6 zjXc0XLV}R}?Qvprgu>U#|5ifwcT?r&c@^@9m48P<{*SwnKYw^af&BARl}Li0Uyzu8 zWY_tTCWmk}zAoq%wU82^GHIBs@4ff9BVwWAIN$ z&n=zi2M%mW@02*ugX3Q^KRd~x4<%(6^!a!G&iUux^!Yb^Aki#&Mg>X@FhAy@YnS48 zk_N@O1$v4zE!)#c>hjm6D8D0R@zmv~r6`|YkP<)&{4Ly-oJXrf1w^9gSe;AvBzh>F z|H5!QvO$tE%-Q;VgF%K}t!tpd^oj+)yc5gqQ5{zzGW8y0iwS1L;T>Lq{M>O1Iz zgzDKJDeG^;qE7vm3ez3|DbN;y4mvRbfzx?38SjfI;$4 z;L~^@JEQTyWOw6%{_e(ovy#QA^LC|8b|^0ss7z8RG39*~Rw@ zQhrD0U?j4S(8eDRt0xUswxL0Mw5(ozxcL?ABLO?#P0CVW;bnxpq?Qk?qH*V2PWHx~ z?{<{i=0D`$k&yr6F7pG0;Z6a(oZnH2IQ|8R`A2r0-7s8Mo~)NC$$9~D+OmdF&`s`uRd8vF-eZ4Yef_VPpM53t>D4{@{5yZ={PS=6{F^?I zYK}Y+erPb@U7`73OR`vo)UhWBtx`XxiDkijB_Bjo<^k-RL@4S}ke|vL5H`W8H{B^0zH}33M z;ZLf6TI%wszYBd{=m8QAgNH^!0}hiGBnt3>J?!vU$~K0PG z^hTt0$$_2K-vJA@ul~9e)i-|lao4qX-u{kQwmkyVQXqi#kL((Q)a~yMi=*eoB53!5 zT}D}<*bQQZTK4{R%2w2sBv3;{@n_O_gKSxaN-|)i!R$jD9f5Pqp^0i0-La5K3GccN z;6cb>n(JirN`C>DHuz2J03PsDtK{zC_o3Pw0Q}y|>ThRT6U=PgW9KCK_o3P=NDZ(1 z{OPp!L$!C18eaFe4Coi3(LjynLzfk6-3o#KjAraO|VtA4Zv zvhaTje6H&NADczmqa#d}3LQ|oyVzLrAO$|tI=}~QRV>yXA>qnY2(hcWi;)^XC&_%1 zFyC{qzir!ulV?_RkVxWXd0h%$CI3-C;0w5A?@bCdl^amCd&P z1xSLFKi-O_S(^l6C0_Rao6AL2ObS>|lRMzEA1wd+)|Cup4yH+F$yjgS@1?s!wg^9JKbA z4yN2++NmIRJT*v1Cc@ikZ=Kjel3P8Zd+x;k60l1F3+1U_9klkBx`mQ60Fax+Z?qcF zc7F+<8xLZCDHUClxiJ2w+M|Sj9GOn{mp<&E>k{ZA@RT_E&?ZvK{iP2(={g%8_m>V@ z`%8z1Vlv@4M|HBlq^P&*u&B2h_kS+c(-Q*a>eqDsZX|zRt*0l)fNlF8@UE{s4>1wo zpp56GyskaNKYZ!!eFBmGNH`J!JeL*@-#i!b8!twB2`iB=HR8;N)BZJ8IB6W--{l-#a-cx9A5b;bRzNHhyiElf2 z6-n@B9WK1@ex_w3cmkdX?TTlHc6Rg3-arw*IW=i#FP$O%hxa3GBsX<}WCD)}eQ|CX z@bLtEJTYBb72rk9eRd5%r&IevhB=_>a z{@CTK5^}d>=P+;yFWW&7gA#4gBT^j?@08*uVFpo~sx7(=(L22>W*(25w-|S3l(s0d zw{Lh;W#;gPP-MQ8Sn(xl<_1s;(Qk1c1T2{T(bc3rk8K{I%HoJ^5fbu zy?%#l_$mg=Mj*cG?LA-H7Kqi2a%Y|!h^+{E8$;`!h7@9Of1EM~7Qib3W5n@p-JZZ~ z|A3!zW}}?GJ6KRuu(8G(j8wdbgg^!onb8SiE232jT1joICJQr>RzWne)sAWDuHCi!vt748 zyS3Zhw)6tF^)fTbKoUTbfDnRU051vQCW;ai`G22t-rFRT01Ar#U;W7By`J}+=l(qB zInNPrKLxIks4M(zFk4LZs!N8M_@N%WlocL2hQ%XnW_e33SOQ5#bu({}DKvWhlNl+- z^o_;~wZ;H=U zxh?GZ>3TEHTfCX)S<4%6cE>MnOk?4K6wQKs)ZnhV*c#kr5ozs>K#gA&`@7Rv@|*%q zX?mm7j|(@I${ol68h`++0ukp5Yc;Ahr8YSy}ha%obu1|%l=d=hZ+-ZMf&6llj z90$br(PSdO{xGi>zmB)~^$KID<~3D{##jo&%8{F6e}6{b9DAYjy2-Lu3kf_s=qeF$DF!@rWeW5*R^MCtvaJ}i$7QT55ZKzp11L@B9fw66lM$AEV{yC(d96eQT-sD zkrpWIbQ;yzWwkEcN*@whsnadwdDfWhy8A0>DP8OlB#a4u^(Nh=HNHbrY6kgXLpbt7 zSW(ud!Iz37;YT1NELmohtcEAcypQ@t)y|=$lgaawauq+`^hxe$ZPpvH>g$V=(&{uz z>;dG_Ua@^=p-x40-Q*8%FQvA|7vKb453!g2DlKRf{nfGl`UGAOvkFURc1&zUTDXLyt5Dkh!KcqO{BUP>3ZfzYcM@_ktG z@_x4Y{^ue7A=uKMAU0S8S6k zHvYBy{Xlp~!2CLPntq?n3j2Lu*IVij|M(6H|A;{g|5+~lyXD~=rReibjq?^yxtCco6-eM_2*N2g1@%7;K~oW1Y#u2aB4uy^P0N*Lgd;XX zUdjN!c_pzBnAy0~|ME14X8l0LK~KaHY^KkdvOupLn2nx3p@%D(-rjsk3yT>il#9_ss!DYo#m@~y`8Y* zz<76gv~ElHf`)ka+}2DvicrOyIOLi2sXpVn`ot^hA@^nT_?~FI`>qIY4UeRXG?~$> zYst`uiB~>QHqI2|kM7a|IYUa+`-~~|9N)v$yZYQ7XC;x8f$@FIq63H&H3O{F#wqcA zGaYyuo`EWuxhx7;X4+t|`$8J-!1z1MqKnC7ZjSF*#_R9QY>V%o&QNBbRG-RO0+5M9 z7&-OEviilw%zE)fmqn+z+jY~=W{Z9{TlBM8)6cJe;wJvTau(mWS<^lT{gS?mo;F+L zE(a#Hm(mt%M;!vYRbOxbVvk%OIQ@kY$J;bE-lnnfy36k@vb!7_-w(~Z`ji9U&`_)H4 z?+N(Ivtg8H!zfSVtN6z@zL2&zsL4u(6; zD@ifz^gn)ZyTu>dE&kZ9JO2Y(P|6{`Z+kzqCf#)PZ@Wcq+nv4?s=jPb+7&fQo8HFS zupDc{a%}(fHrA%Mu^*k@0?Fykx$HC4@o}KH(j%ZZmwcUJ%hwqWJQL*W3>yqK1-azw z3`@SwNRY2H5`gTIuQP1<>T1_bKW!HMv|04irs-$$V{YQVnX~x5HcP&?^-KCLdTO)C zT@FlY-$~)rGNa8Qun+VF2O##y^?}o03VwW>pT`F-@rruPE7F9mjA3KCGE2Eg}FoZ6l!u<5D)bVkk z_en=U??uxnUd9F~djF;ecRY(nE7nqxSW9^E&wa`C;!CjMpU%$06Q5EuE>*%{vQEzmJLBEEBV1}KHLl))_gA;|pTxlZR!S4u7sDG;r_@}2A$4}^w%t9v zg|wp0%(#_G`pGoNO!iA*zwtosGJn(g5!$6em?^@{RNoko`?{}9tHmS^V$K~ z>?~*_0$k>GaCSHG84!IFASzt*2)J2LK41l;yZ)C!*|rn z(m1gioG;$rw{h54_%IKYq{MdyH%eAQNtR?>lw=8!6?&xtR;dcDzH+8iV}DZZo}e~v z=jT55+Rd5NL_PLnj3{e=HC<-CLgLZ0j8SYB0v2QgmGFSG&a>leV+7o-fEzAjnp$rh z!bX8*#YXvnUp|}xyLOj`x4@P_WDgwrro7P33$Ud4ihHi9x#)}B+s_8Sa=u^qLGz<$ z&Z)@8Yxls9o~~@+NBDuN`mmy6$j!vIm`dsRd{G)JjLQSrSgBX`Ms#k4 z)XqqWlo{(IWs3FEx}GX6cr$n_tap{U--r5M9J1*By(`S`y{x{s$^72`o#6f+A6soq zUnbwHpYtceJ7@R{J``?yPq=NFaN7c25N?yc!)~7&PQ6`1=d+9)1=SpZDzgH5Z@go+ zZ}E|GBKq?tL9$@B=v)W00CRLvwVIX?9vfDbfv9XY*-Xt!ECh{$vu)rHMX6>bfZ_yy zdOf^kTvs#5L%g5qTVGYDhc@DHPa4nSiRPueWZVG1iqh8;3o;ckka?!iYQglEd5f)4 zCA>Mt4sWVCj2<%)Ssg>i3!|8@{p0BxwgS+bj?6zk9GniPuLfmVvS^k>iA6_=zOrM=F;?t(i)<&MAwyo*L5OLc8pV63l*kB&c4vJtoXj&A{j+v{WG{! z8tWh^j~`qgQBOr9nHJwXA}XtrtJAWssTtvtk5ohR=PvU#@AoMd;t5lQj+QcK#Z(lQ zerru8jH~)29lAw#NU2f!a&UJk9}d|ntR!X5)BUKhQM~P_u)hsGVN{r@zy1I~E&b)I zx$_azy4gI^q86pOUVOmhs-;?aF(=WkFfsqT?Eq@FrM$jtD=*KS>i}`#x`#4Ss0Qv8 zMiadPvrW|YjOMp2;We%KP+MY?)=!PcMP~tFOJ~{q20DU1UW9n0G0|LbpPTW_7SLL^ z@?}LF@tvVwTI&b-j@J6p=Y<#loc)wQB1ca-U}gwlj-|>vyuSMO2uG?3ANJH&C@7_` z{s=PAS12o`oJ@Vi3+;57IhuDd)87T^7u{|vtlJK8?GW2y74ff{$8392@n@!6g;WH4AFPoZd6Q4Cd_)4DpgG?AXYV3cKs2kC^U0^ z{ZNcoBR%Ht%-J{P(0a`IyXFw{cWfN5-WILKrXiolFQ+HV%mtW=5Z!LzJ zaPxf()dqa>!UJMw4iI&&vKWl&e}isI#mR_b1GAZVn!jpGd$7DTUFvv-PSe>YZ=a{< zuB+-KwzWUiy8fNh6RxLO*UvlCbzNpxc`4)G!5!~2fsMdHL+90YeEkc~NhxJR)hz6W zJm;c0T~x28yS(AFMFpucSruivsUh^XAA3Ad&=T5A-j8a~CWDWBpyBh&;coZ{XS?B( zuHbWPB7Dxf)YWSjeEy!BaNUN_+|jP|C*daeuyZQGoF!in9tZhWW#3B6oZy zKyW}BLVE!S8w$3B+Kw4Olzas!cfwRzXE;n19xbE}_8ZYowa02r zMsDXjB9I@&)((W<^H;sGr|L~3kp6D5?9{ieqwO;5!(LUNRX%_FBEElWAdEq8%5y2j zm-4KKhQb)R`L{(==AP^=Xec%U4gRW#r?g;M=oR)@INjCfx12}3Ro(1XS;O1Ds#=eX z;y-$f;s)IdJuKuo-#9yit z6v-BZvlmV@UnVxuZw!F$1>Bo(N5NPeo!CNn>@I`oe0 zj#scrrh;p`mV9K6I<_wsN%%-oK7=5DJk(8)J2|rnG9Wd76+tdh1j%k&f!uD0P}19G zm4@Fl3G)p|cXxnYjxEA8ejuBR3UM~?6#D$rB^H_Z3pNKwDEf^5O}6MzB$qnp3XR&$ zA+*JtnnJzdLnT7pYkbYSJLc#Hgihn(_4=i`qoGr_RGK7d0(gQ7U9usVg|3c)8eQI* zvb)ALH5mn6Yq24Pf_>?`pkS1G$8fuAnu7V7^zmksh7~?F{YrOD`b|xsUrFDw=+_$4 zTh1dwzo80ifWNi}SQ37Z0s5PF2_ybwjDip(ToPWU=vP|uhSw>6QH|LI>?_!(zBe?y z+f3T;nh$ZB-;7niMY9< zqE{VEnF_^j8e&r{p4pSiIxYJ zh<^Y{X**KU_|LJ}Wqa~D`&@^!LcS;=@60KDRH08ko!OQ{a9*KNsL z6^~i2!gLakHJ#gBv7QP!w}$_!YxwJB_=CQzh7S?q)}GExg&l z_H>Ps@m>!vl@J_vxeFg+y@U0Rb4I(ZcVl{K3Qj`sBnd-B=MDqS5@SJ$t*~Z zHwOkP4E2KnPN+lyU`8KB*bgJV6@I7PC=wZ}9B}Y+&e+MhvC(VmQyaet@wOZpZ@$P5 zXSnNq;aAP!UVM>zxWtS~Ntaclt)KI|9s~Pbh9LLW?0I0e2yJ(ii0#3zqn+_2=T{%1 zI5GZVvg{a%f84HERy$!Inw%?RXv*f!*5+b<}#y=$(EZ3)K+-=+!Qe!n;0 z{we+A^KDOly=btF(4u7gD%J3F(Ung8$7I=yW&B=YSv~w$&Ec<482+>id$4WDVO!!q z32eJI?HI6a5`Og$vWM7{Uw={FlV9EV*8aB1vMS#7RmHMuz{0jxtlDDRZ;o=)vB|a} zlWo~i$YI+@*z-8O>z^G6D5h;mJvL11;^`jzTX?Dii=_PP#&<%z;UdBJcwu4J@YgH- zWU=v`Iqu;Tb8xXS^HmnI)llC|`B-dhk5GK3(XM!1f)!$kjh%X(}0+^{Q{AV#+b1y);UyX1#Rp)&9Gu@+*_J zN8gh!J+CKo;zJ*f8*Ye6L=+gU-d@6PhSr6{&3bIr5YF4R-PnF zQFB_YEYpr8AC&K%$*Q7M)*QKCP-&%a_I^R0&vA`U)?3=($Cs}61N?yQ;I`hcD|jb+ zUky;dKk0Dq_oh!KT3qzm{ITiNY|o@m+WT1a=`GN_BlN`a$EHu!o=Km&y^lkmPVX`} zJbLnrc1Glp|)a80Zo_Dt&p7;TeXXvLhlDGc_SNp#3L`A8AfwxhpTxdUq;Yj zfzwcwS1R%6M^ZsS@gpiv|26l+;&1UB0k-XOGk6ACBbAArvPVf77G=V2LkQ}2*E{mq z2YyTYSuslC3Ap1VCgON0!8PKh7b+t}?)q@qOi(Oabd`ds( zI)BP}pyxU3^B&x>P#m{#b+$|<`D#W!a~t#2%wbosPET?bW(9ILsB{JPuV2Ff4s)Pp z=)*jWySKHSD@5QiWH`V%_2SFUBORc+o{!JZ>(5U_kFS+M;ph>bu zhSYgSS8kFx>;ld*>uL|CG*4k@v9tLhA>TW{GKLRYc|cAV#^oq)s_`a@|_|C44@z=ZR;s?7{alVf8S6QTib3eN)Li=4C z;egOXyt=;j;fV3DL6i$5WJ#wVp3c6w-l}aQjB2)wA`(*@pEv4`Y&L6c|G<~qN{`R0 zyM5$i_8^REfsLL&tn+?y)>Y%b~Y%rlFaB80$}GSKlZukA%r8 zBx_<;u|d`Z87VnnmS3>RFR0`fJU&>rkm1}?`?m31gw4&;qg^rE96aF;m@l>{TIP$P z=C-d3HP35>n4!y}dQHr}XEiNPea0l=o1TDRd0^Hf7AGhwwh3M4R`Camo};5HSJp*`RmS4;yEcFdqgsGiw&(;QZ^;9+$=hd>_bU1bd7FeSd{noX z9_QBGJ`D0^Ol!GT*%%LXwW%>lBwj@k?RdlqK<{yr(#f1T8cK&n`l9#ePB=2RJ0$*Q z=5%EEQ=lS15Uz>8zM8_u&Nkj!ztej$T&VG7*vB@(^HHAbI2{S47QH*3OrP*DtsL?)1V`Ym@ApW`8 zXYmhwF)o`Qu*@$Q=NIhr3nlOiVeku~NMg!D#vzF+i})+yS}`iPD`fa!-BX;*bZL@b z+JyWWIp~Yuf;aWYZ<%!yLyw&czh%xHf({w*#tcad+Ze5zIRDDmjur1It{VrT)=fH? zvO{s*L9C$p6>&wLs}?IhR9Dt2Zme5ew#eqkyA_F69uT_<mMF&*wRp!*)U9T!C7OcDNyHA;ay(ZIXqwaB&ixYqXfYzR^%slod*L;1t01+E> zt;+_rd0Sq7Ws1Y${n@5UFlgJ<=6z+Aj&uNO!P2ry>%6nOS`{oG0G9ud2cHqaaD?4t zUT2>8RDpe158$vPAmTjheNwi&oKfoQ~5OmioS}>tlEkX6|3`}yL%%%m8Bf16H6b~nfBxr z*prL`=Sei7JKtQXz%l$XTg<_mv!(e;!egs{5vp+ZD_&QtX-_(kL3=SusCjNTmK;RL@lPokHh)@^xIYtC8pz4x1 z4uRZOnWg(Y`OlA0Yp`+!i!)fwvp&Wvr})zwwey((7biS%*nwO9&p4|7D_<=*CVsGD zEp8fF54OJ&-^6%!R?^Wfmi(x3U1N=Fn;O^U&bWAA#Q1{pvzbeLjCI_VYZ+jJHsv;M z74;L^m{R>xOWMigwU7z*)`5(ZhR zfm9!Q3EUgi578GITP`iGo{~Tam(^`8eQXr4+C+P=%R`GfSj9)y+cvNY%xru~BOpjU zH8au>*HH?O*q?AyPA%y-eckd|q^0as`wbT?kH;aN*E5Vg5Pn>FUSR3lQxujE*_ghPISRQu~GdPeG)UU zR+)iK>bG4PeI3dST%oSKt**Sk*cCrj`2Tt3{`mh^?uq}jvLjvtE&Qdj39AQAe!j9j z{%{Y1=n+(lYXUJI{taEQh~zhlNd8MYg;}-6ZB{ulV}8X(dL@$M_R)_G6g#vVY9ZX` zonIN1)3+q>*D3Z_t%~_=QHRQ>!iAh&xj~|RYZ8gdiT3G8A9bX$X@$>&XV_%cb(%w0 zT_@RugedRj_5g7u=lgYglnyAu-4W6_3gLD<2((9=0ZQZLMzI=9u^<9rxLWghaD5Z( z_Haum$HLm%q-&1|jxz5OJamDKM@59kR6wwnHA-CQvq+7r52_wqk*>N|Gjja3qJ;=D z2dO`pyFr4@SvoE^D4WPz9Po*S&@Qv&qLdN?aP^{;LW%NR?4b|KFR6=_j_MYBNHQjJ zME0!`qKitEmr-wU6qhP5qc+RwOLbePjap}sjRb{FlbnRPXy`?#Ww}Izf2H~om56ZY zXJX0(@6(asVs|7sy>4saW6tL%incha?@JKZ`aS~)y-*h|*%%>&%V+3{gmBME2yBg! z5U!XVgG59Yx#P5(T!24Lhl%*S$KM;D2tv9JRxN~bLAt823Q8rUWX}_P<6ufe!bidR za6PNIm49mDlV!+Pj9P{=Qiz?bbI2w zLbCqc;{UCM!q?|3dT9{CQ4C(Ub@ZssO#Qqs_$m>69W(lQlTMk2qw#R16(Rf&>1wTX zRY@N^hyWQGnv6sqX;BoNUlCFAiH;XK0tsR8fpmAW8sD*{uPfXkz7Z1QyFrmwAUjK> zN|BgSQziSaf?I;is=8V3@ZAaE&#?YR)JGO-#MB@j?MY{3izAH-jSCu_Q|BGKJA(gW z(FbCAzd-fa>4)E$1i|_Yx^U|2EP$g zevC|TSrtx2a%706$V+g+1k*k5_rvzb?3U%vT|Oz%AGK9~Qh)Sj<&T~TK5@iGSq|xV zlm9~7mE)G-I-qhSHJnwm&*n`J*R^?R6+S zi9;%u=VZC7e9;{uAm5v^2zkslHq%D63Lwz0C8JRLrK2Ed{PP|@=zW%<+Nj)%AMkx? zZ?!3F9nWGxxpqPYJeveO$_-Vrc9neMWxM6ioFn>a+w;&vp76jdS=u;I#7gIxU5BX4 z%!e^2?scUKOYuC4PjVH3yO2$(-Lkl2q~`uxJ`=Qio* z!>XST)2i7|5kV>_COeGv6%;e7Cu0)zg036=r|q=R|IDr7>dO-r2Ug#oI5_p{` zm@6iRlWdZwT2gF095#vIrGmbQK#?X1dKUiO`gD?o`0axDFDt}9MoYa2w3kw~DKx>x zkWN9FPney$BzdQlb`;Xg7ScpW-z^GpMuI~8jn%U)(zC}^&-UiqJrj~tT2Yf^Us}5?Ziwhny{jpEq!_lE3SW93Hdu=<8h+k?F4*EcuV&IzB;3n+j@XlwZPU z=C$I971i_OdzPP}*;ultiI3AFdY6p7`IRqmKw;9-O8i&?c*K4`B#z9i@_d!iSNVoI zlHt5m7cI3?Kjv4oO(D)fgR3ex8aaG0F=ubRku#5}g}b|`V3ku;FY!Fm?sI(4GKP;_ zokqCIg0-NKL1KT*A7vqc^E5eE2v8P7A_jWFUn~%Ty%}p#7~s7bqc%u0E9K~DkkGS# zG;&j_tHYe%-0wNvNiB9>@W~{>Ai9?dwLFlDGLsHFPssSyGsq{w(-ne6w}eNU^jT(|YM zlvWDm4&Rs>-yn0SDbKc3GJ!o#=;vC$F|js~9$^B@k%v?z!>Wm9#dq$jUW&$Ll`5F*T6hQu^@5&~Lp}Td*s<;btZ|Z@E&$lA7e?87klEr!Hs{JXa@0b z#5dgb8r7g)!#S8S{548RMdQu8cbfC(&$b^jO#Hu`6#tvVsulcqYy6{+Qpqs94aXsr z_OdWf8@|fyv^boYwkqDepwXm)UnwfMLQ}!C%ac(-Xr(nbs;R)&+~E+ycNHPbH3{K6 zLIrf4;wUYOCfFfC9LHz(96I^P=ph6>bX)Y0m%4(M_?MSv{g@qZ2>p-H#5pE>%EmhM zK+3yG5S^bMLG&P~Ui5L*TFVhHxvZg-jb_wRa4jArz10>E5l-r&-@T_jkv4pP$1ORO zF0=!cED98CWby&dby0`F-LjX^sV03Ku;~L@fGp}E3!#v$cc*QFEZPF;Yzwn7^gHFk zOOnS2NYBDcaiMctX#X_J)VFA&5t?WSH~6A#3Xnny1Lo}Z=ckuNgwxTdm!D*Hj?j9=BHqhKYV~P?HdUihKCJk$w(;< zukcm9i3a%v;0o*Qh>Yr=C=wCfvE?p`bBWqO^BM8Z-7OaWmA$M5#QV*7oS|K!9GX(& z-D^=3-KWP=bvgRu@=tF_HFZF}#ME*@Smb1?6Q%nLR``s` zwX)vyc5%h$+*(z*qbVaL?f$QdrEg4^cCGR1_G>ec9HStk_nWxjWhF#3%eulBTSKj7 z##)LIS|#$0wNlD<0h$tmS|JL@YA-N0)nCKzL`F$7jbx(Pc_3uT7YIm({7Df@lJ8jc z(5(8p;=CB-N-yLu>+@%1{NR4L_^(6w zq(A&Y?yA2FPlw;8cFCGI0u=9IY4j|zcn-bfPe0i4)g7rcAI#1PQ~Rp?25Pg^T)n3_ z{E{jGk9@vziN z$ag|dXkbg|N_{Qx=v~>f!c78cL2@W%kRmb%?7=%!C5eu4_ok*)M}jx1m|xd)bYs_7 zgtmRTF9&j4$`%#pr4hKOnV4$hW67Yjyv)$&*;2>Hvfo@*-mMb;j!7-$mxF^@i|0QS z>slTN@9i3(2-h!lUS$_Os=JPfy|1bsE~KO6QwaAtMU_8diH#&&{@J;77# z@r24D{)>E)vkV`t`$SSX0;+&dSu(=pmFDwaHXfF8etbLhxaOH5Jf=EsesNmLU`s%~ zd1&={>y7H&z`_<#-qPI7^2Jm2_eDNoLzL2HN-rt(S6;MwU`wf0^r8Am?jWUjv&4L} zQ{XRxOQ5unV0b>h`arEK_CGBz{B4(aRtEJ? zfhzX6N9|aki+G_t2Mk|k3#~EX0hOHjW%pLnh^l~!hIkP+ zr8VO|Cy36%%JSTMS1A)S;q@KYZA%rOST0lYY?PZ`p}|Reqy~C;nOzjIzGx1~^{US^h3t1mLDrtm$ff!G1j@zpRvO)^7w0_8UI`vw!9nW9y&D{A57N~db>gIc9)prvJ80iO{_TCI z_LEgmy_U!Pxpjb{tNGfRL8(53ZLV$4%hGyyp`bf>n(TY{#p3*w;OV0KNo9MRN7>45 zc|?HH^)s;n9`BP-KBXI`zsP=gJ&1H}t(!=jIaB0`tC;3XXS?3FOi~q7oggWsI!BZ0 zwKW$F6jFs`PqE2W%=&xhit!G)KGp6f*9(O#YuQT$ zQmPcBUMV+tUDQw5F;MUl^tBUub!s{`JCAs)_8$se=b~5ot|(T9W>Kv3xTe?- zRf|Kzaq|IJd(`Ocn#>satH;nXYQNaS=of>BE-!(Y&%tbRO&;CDGeED(;6 z0JGff`KG?X_x1#r5ea)Yni_n8z<-2YF&KqEw}GIS+5v$dvG1U!iO6>;C@mW^t9;p$ zWejh0eV~kF_NDdi{A9zGVHK%}>AOL_)~S zErBKI(Lt0I-y+{50bgHt@P*(Ke##$_3}5bLQ^Apm_^OH=bR!IWSP{bB9HgIh;Uv$* z$r#+FdytJp>A-|yq#pcJY2o9G3LnC^#vplvM$+Iqu zU1ehIVu|%?jNR1$!g|WPyipdy&XqpDE(rS^_{t3Qg)iqrpBTQBs%i-jTl6;^`dlVx zOg;6lf+s8P{wOD+r~EZTPfenzWKPypPwWmGRVy-BgNTY6t!LZb9FDEl&zvh-e}tZH zmE7RL#d)bg>O)2)a~EY4)m&s|*br|=_pCSL?W;xi(5->8E0d*pdiWQqF4c1?{ln;P z487U)I5|74!#lek_IFq*oJ4KVqq5(3!c=SO#;tv4m@quaNOZp93HlBDWFst z1}1d|zemEYGNFPMj<`2vy^yH0CRU|P3BD8Par)`W;O7?cvS<|RP3HKLP~T-bZwMB^bIYoa1UI)%KB)*f3j1YYqaJ>kW|C=*`) zR2NN{J`)Obr^^mYf4log#8en%dSnzU-N)upj2*8X*%ttBG z%{)%<8ao70!%XSeAtA!}y`_PV2V_DylY;JPEaM@O z7FC7Y|I7@a@tD-$(Ut;>Dawpl7;ZL;mNzSS;tfQzm}kjjFP!os<^m(?tSJD+@k(Bv zdm@mhh|Hj<=C;ZlqH~s(a0X4wJuh>HbTarwTOJroJl^~!q;S1a+Du%55`HnB2)!wS z`54PqF)<{+I@}l@*8V4vulTrbc%SAEH+O!!88;hv8xQ?Eu+lJRT8U%8!J_Q;J-(Xj zJpm?@3YvmLxR%CdQn)8=jI1fN8$OP*cBu`pR74l+1Az}4zmGv|BwUzaUC?l8Hmcv? zGYRnmW63Gre4+q&NK&1YQhewutbsSF&SzntXhpNaeiZDtDC{q!9l`#b@AZvr%idtL zF)-ZbMt2+7ZV7GWsvFrdC>z(#38;2Xz%(a%K+)itF8oe%@EbjD_%+SQKL03w6Z|hu z&Tq|~2U>dbTXW~*FN2sDhrn)WB&ZRW4CF?r_33Z!U{PtQF*znNigKZwIp0F_H42?1 zu$B`q6nH}~+uiWq-c$>^ zwB1;GY+PZBU;glizWC*PNFvQI4?=XNjQVa8UO8RGn{0l`%U2Au%VZc%O^#7VCd(W= zP3`V2_e65QA+PZfSN==cSfDXcSPU~eqL-qgrcY{_{sN}Gt5*iapFZ^ zDeW~D2^LfOYHR|2#@ZMWeI;i?SmbupF`}|X;UNW0R6D1U43>PbXVk7*YPi;1pTP+H zWN$IwT@_82BreDeamyB94Z(6>Rd?o`Z&ejO{J+xOS-QJhT-|l|m&qolzZ2=NNZ&l^ zZ}f=!+Z-HDlh9}Q6v{)C0-RU|X%cY2uH&FIZE89EfkjUX|Hq~$;~`m#ZQ3+O_3t?$ z(0C>jaHJziDHFjMSJ-i>K6tLue$ITbJSq3drYn#KLc3HE1J(jI5o>wr6t`iSNrK*E z><&6RP)`^$RM0{h1IgTrNuGBBHEX2wEZ3d=##fNYCzTEq0bE8nebLxdW1sZ1zQx@T*7r?Y4pCNdPgO*(Pt zt;hcF7Wt+Aw~PFCxyi3fliv^_znbf_OcI35+I-k^vi5@g^J383?5jxln;mFN;d-b; zQ626K8*LA`DO0F!3w5p}Vy>tzjSbWTO;FwJt0ZU`X!H2fo8sN&wURBkA>KW=HB;ve z7Erin{+X?*J|mE@5q&EehCJlHY#zHeqE~GwdPNiZgkF7P(|AruE>r10)=p&2P-JU7 z^nHeE$?NZN4DyHcuwP|Axl?!cNC)3cW5Feogv1J(DxGJ*)R2Z8*M% z2k(l=MKMQ>>c7*z&`0wAP>>w?30vX2hyvh?q$+MFRj~mXszm^|8qNjNA9_%N#4@tOfq-U_MuWwRjbJl>SEh?{Blv<0+U)bWmg}`Larh zOLoeqtH&)uSMs&US96yv>wUdlg(qX-VgLEG$X8Mtx(P5yMOa(COPQ$nK@aLZ>Xxqu zJ&+v!GPllRpp?X!!BQ0bW#YWUrPdr-R09sB^%Sh55v;SXt@p(D%|M$s$9FD^QQ&w+ z3u--;6>0ls#Nr2sl*opuU^(~&<~!f_C}9|Xe+HN3p2)IJ_`7IEEgvsIa?7FQm&_?Q z75g_04}x(Ej=k3-x%s$NWWO$CBq@f67b397jF^!_fF&B*Y2+YXmNnw&&cFkU1hYi$ zS@tMftH=wPdyN^C6~qFFgmxG?m^kuLZVu!dNa{%NEN#E_`@DsOx`b(Go zi~t84zklT<{(;~(L4ST=;r9a*zpvT&rREg)6~+05)SmdgNbq|N__KttFbUsdPY$xJ$1o6i2@qwd@ zH;zm2ug77X>UiTgN13CY#wA#%&YAev&Kb-pXG!CY#rd&MKHgaIA2vfd@m;0B&w9o3 zua7R?xEU&R;*FaDi;6eOff+oBz;0!R>%wa5Lcj6G;(T@mI{xv-&2DsW2HPs$xY>TzGj!c%R`7j-pQCIqi zHx>Ymj~;KlWZL-dgKH_jyF!QLS077H_=! zs#+B}>>Y3Hcw4A0dA#xNt5&GD4j*s4E_uAsx$HC4@nPbP1;;GjNCYwOsu(|qi8oH^ zH{O`EKSvX9Z2p%cjW@akzQlL5#8>esmk5=3RAJ9}W9+jOZ;bylwA^RB@qOGCf_R6G zH>L~G_7`uISfjGKOd9An-Z-V{W5yf1escJDqY_t6ym5jPZ*&PP!S95AA2Z%K zUUl}c@kW<;6?&BZn(@ZI`m5uODE`k{yz!DnB40mNym4mlc;k^}bqm2za-l(pqc;ieAyWa6e^Nk~pH#*OM;_*g` zvQ#{lJpQq!^M~7e$3NC|X75(3zwJlk`a4le}^5;@L^b zu5oMm$rHVW*&=hI^1O8>=_JmXxZlp13P;M5*gX0@oebGxT{^PdNoFQ$gSjfDPIfGB zC=QbkSQ;(PZ{e&F=#UCxCfT*{Xy|1w$I7DZneuSisXcQ~k0YDgO{;jb;Qxnx;-4A$ zp82h7I_r)E|Eq2M$Bzi*dcMxYH(83tW;eFmK=x*Z>oyKRb(k8>zuVpT-Q~uwa{`*wiG@-UFF`57!}eHv=4I+obS(H~ zC0``JkM*>qW%6EWQ(19A1DlS=3G_J0O^=g46?(K4#Ya4_Rx~~dF_@7mZAb#c$gp=rL%OM-yB9A1o1AIuX zDPdwaJ&YB4C~TMIeL@d~LJwmT=%LW205K8NnN0yS*pmYEC57`ZDftujcng}sjfk82 z;)2HFFjIS&2qdf&OJ%lL=vB(<_@eDuGC_Yl<&K43Oa9Dys4w~R?Y)-#c^VK~@<-Oc z0Xg@yJ&b}i80jT{fVU)UsLaK@3FK@CuZ8S0u2imG%>kx2^(M)H_QD3LZC0aRH^ zBRL=`;Y@a@nb=%hKxtwYU;sFQS|>SJ0yXGHB#X|{lvOw}Uv5m%QG^^}DxMUyKu1wk zZ~PfXfF6X7e!)>y;mr>!I+B`%reJB`PbXAWv=uNp6v^-=xD|Skp<6WOx~jMfsBV* zL55zPYgDh~7+9Ysi9yu*WXup%IU27ycv-^yN|O9Z9t6sHSBcj0Y>3W2LaGI}XVx}eS1VmL)Gv&>ZcCyY%(%y`RsyV7E{L=!7o82d=Z)DJ^)Hktbv7pK& zh`$vGiF_j;QxY(5-@7TZu$^n#gSvh1>zQL)RYa63lFgwObzibMH4U1vQbrtA?+fKR zcg9*#wpj2YTb}yDtTSkmQV~crGDIX{PD?ahYcdwv6zDPVzDVU$xvuF`lBa||zcydA zRt)+?GPvmT4580+-Snv}=rhfg<3r^37vFP{?~x%_N;7KYKBADj?tYMKJa!)^M}*)4 zh2RN^2rf_vp5P#OLL!27uv8&fi6#fZcG_kPr`B8#vgk}s)pRULl@8>IeujUnlhjHtv)o+(wtRIsE< z4abJ(ES+sQk?gZZBWIh0cg};viANY7MipU$RKPR?88CCDk<)7AY~hj6HX~;ZnTKmq zxwXc~d4=OwIG*{6Xu)j#KKX>wKqd|BHD<0L4UstF29>%P32og=|2|LW?i9_?dFmLd}W>H z{{^OA0PLljj9&Pv@;POprpoU#hxP^Kr`Yfn$jn>;WPp#@2(KGCF@y9&o#|;TYa-E) zd$q>0+Qr7qT0z6I)+xqJwyKJWauoR}8bURg0leR)Inn@4cuTJGR%7TICHH|ed)?A2 zu{Y_CG=bX$zK`PlV+&}rHOqc(n%9^8y!|v08a>w^KYqH@ZEGl@cIX)IA07}_Y?^}a zk|BCMujr%(iZF17->aAPlFvt4aP1$cpw?*G7u-lK&W{*NngYf|d7hJEW0GX(kuD$1&O_ z;r>VM$B$w#JgUaSdet#9k|g<>tXCar4`zFs)D)047M&UAvNuw71oarq`5T3Iz)(Z* z8rHX^7R11eIPe(-WS+z@jmU`akc4vvBE{_*Se|X`TUieWX7uw-q|xgPdiDI#jYL0f zjb~P6U*q}rFD4t$+Vk!46#8U9@}C;i*M#is{xb6mbD1M#(Z9^RQhY@Xa+?g&tPUo_ zByk%9P?m$3BjkBjhOksX4^lmUl!H{`6Z#7eo*zm|d}m!?kIzMX#iLSE5WRz+UY8CL zHelHVN6NsshKRqozValvjf8UX1!Si5%_HOsSATW}llSMsWc_*iA|;y!4|4i5Li&Te zN=@vJszd=j92uLc{t$nfC7nq^&(u2@WB13V=a$YpE_chDg>HGH^F1wj!&y&xbE!xY zm%Q=1qs13Ec9AX&oLqKY@Rd zH*l{hZ(_$z-t76OzQ*(IqGaQFdXhaJY=ScceJ*|lM1nEKmAd>NCqyeV!;DsQ64K;F!+NZud5+`B(_T%+a9ADZp{xa5ty zJ4YvPl)p8`^0&5^3l-pRwPGG9SlJ-~<#O$sO5c?2KIRqz0~kFCF4q@sbl;{fb5Tik zgY0AElYAMr3&_G|Roeyx14T<07A-+RQQ-bzNXN1lv1^7D<*zF;mMjZ5;=-1~=SBGk zIA3lod8^cz67?U7a>2N+$ymZR)GI=(y2ck>dZ=g#nt4sIF!B9KygxDF{j06_C)@7_ zs4|}uklq;{>dng*3_ckon+g=+u3(!o*rQZ)NBnpq{J(vV3IAmN?myk^hHfw5PyD*; zwh8y5UU0wRMX}txe;0X57{sXlA;5Rdr)hb)8iNe6x?H3z(*_%irTZ1=#lYi~u-J7g zn3>riM%${cA||L_6eCY!E?__`Jl(=1TA1jx0Pvj_COa)C3@G}rF;D~sjtB4);eFt) ze&BumZ7zWJCiXwhcHQn1-s1qwp$CAsl8!CGx!&-=g4N-u30!~~wm_S~i2`g`!F63% zp@yqMR4`xruh#1tvgYdwuKIPLYQFx-05uVw|NWhQ;OV{71+d=m{L0;~+kL|GI-dYk z{(HbLK$ZVcJ1xNl8b1E;K=$eJ5wtfU94Oe}vq7B6nIGCETp^^}(ls6s`<5@4_N0-q zi(Kz(5L@pn80+^Z+wXreFm?-*M0n?aTfsYtq^>J>L9;ioLvvlX#jd_}MY`D1!;1N< zI8ljdSu{F|%S@MD+*FyVSu}@``Nh#W>MTc@+_JX5DYV{X-jBt%iR1g)xB41iFytCQ z@9~v<*L544eDJ)+bg|8c-OAs@@m;{>w1naH934{{O`#3PVsuhpi{1O8;zQ?o7e9cf z5}cV}--*9pq86C3%o?-sP?R&0SYndBA`buNTJK_LwJ~^sijO2bFBP!#^OIc9yUC~5 zu_y@LpR2sjifWK9-QxJS#?m3o&*Swe6E#hak^T~}SgMwazgo*{O7u4bv+)=0=aq?S zJwM6ye6KDfTyXkxsWf~@f#^o3Kj9%xZ!$PkebMgdYpN^SL#Hd+o;07=2D5sezF5yE zd^!1v)1S-y%Kx|e^i?fy^!j-dJi-P<+u06D!Dd^nU)O#YGv16}TFE|ao&nNGL z`>OEjQ_G=YBpjGJlXKJm<%-+??ZaXbUbxA5pPhA0f7O0n+mC&`uJ%WL^d@+}f(M-F=7>^r_*Oe9hEB^Bj4*AF& zJIi@s(;bv4DGj_w#gZ9$Te~*+*)J`ZD0fuqocP|0wnGM?aZ=OlDk|;x!>jeGmquDR zlOiXNsqau+=k7rBnE0kUVr&)4It1O|-FdIESybKa^S?HDJeZJ!VbkP*Qao(qyLEov zTB{UKp1m|CZ$(`!lp?!p=QY>G?oNrx5mn6>Gj=F6F0&h%>A6&mm zw-!IxrW=dzYtwCUWsNkz<85tqvDqo~t&L*Y!Iiw#d|q?0@m!3_?vij55o3zcMmee4 zk{;cX&KIwINj7|3vz=@@fvPWkbs)W2!$!~$JOeDCZDlL(w*?Wt^bMWg|M1Wu;?YIb z?*=cI{Ja?n^3KWM!V7Mqz@az4nfWTl!(>KnsJ-jU-i1*Ve69GwcxvwFCtA->a-L_3 zIZ*Rtw$P(Ld`p%;JU7Q5zHf}z$eFu`pZnTNjGRd%O6FV};peM=;OCa7`1!^ne!jDi z{dE;>=0KbN@HQ!gKcg>JaI@uS=Ge#n#)^OMgnuiBQ~!3yEZOY%`4o?E@H`y9HdwO= zTE}iT$_Ly6i@{!8^F3=!KP1-%|C(#Y^w+pH^%-OOPPsO0uHsSV_Z8n#HfRsGM`X*r zkxS)X&9I6He+uHv__K%Gh)i}5QG2Fc9%Dk3DZ6g=Z(T?H&Vz#apu@+$dDLw$AIO|1 z`9Aw!Dl_iDC&|krw=B=|de=HhNFY5yrdspznCI8YP;$iFu$OEo-cmQrQ}r@;7qoiw zqx0ucw3vY|A$lZJ$?N5na%PY6Jmd)IhMB*W3`CU;r}dfkQkgu$JhMHl;(R!y@PtuKAwTY@*c2 zLd8<1%GhtJjG;Z*Gl8h@u>?l@#sWxkPX(o&bH^2 z{y5kvnYU8C&D0;==#SY5>+PocSZ_&r)Q2QKEA1f%rnW$O%NdDB-h$}-O2`E%FNx7; z3jIvEWZ@=g3zc80v*+?1eIa^4PD7@OKtqtu(%fMztuC3z7+9Pxk7!lFcbfdstr_g8 z9Y~j*i(R^6nW-z51=zea4Fj~O`cM#hUy(@fsnTPmEF{*(vCum%H7jMIUyw{}v8a|R4fCpOm4K>XlJKtVJ0&Pup=>143}Y~th?w#l$oB9%G@D@Q z)Ducq*z}sHAK>_Y{S{x$osUR8FZ_mKzj;ongpudIC>lU!-uHkN+>(l=BKh0f{ZPDU z1qpyI6W^p}*vrof#Y^$NWnMMCT<5)HcZ16>5$h+~uKW@YVm}qXtk)PK31*M_ZGzFf4w-|6yH~gJ~&_N1GN>nda=NMF`=O7zDlmIZ_%a_ zX`*ChJM9)5rJ|=KQ^SoXWO({(gnb_k-alvlj|dU4Dd+ zKJl5M)ToB>+erw&e?}aw-*nv`#gYjkw_%NxZ$|*mvSapTMwz88wHE?GrN%}t0a&}-tkuKGdV^$7 zqvi=9jNlx#iVh8U0N&$)z&cL=vD{tG8{|mK!!7P_H1XAm318J$?588-1;yvDXAVU@ zmhff1g}PWD@tzkko+E~Gqs`RLa)DT;7zrHllVrLdU?+Zc{{<`2sF z&`jcSm;_5&c1^t;bMyUm!XC^imTyw*L9n4(!Cfq7C4*Je<$a{CS?_jRnXz^gXP#zZ z5Xr}1U@x7>R7v>($+It&r1X0b!gp;fMF@YBFARS6kLf9-aP#sg3}^|rDl zu7$S=$q19O6%M8%{M6pgL?{L3sr$NBBq$gRUdE%V9se0w>G8xj#bW2kDsT~OZ>7Zd ztz8}8IpZ}R553Cc-TvIBs;$F=S1^}UGvI6gBSO-u#xtA{^Js+9-Pbk|2#+#AAXeQ}5Jec6XRelWI@Z04K}5pPfZ$r5iO+eD%fnJ@($ zB1=^cSCTBDl8?TU@F4Pw*|mxCSVA=)OSYXCGoGv0qK(C09qCL$SdtAJpfr62k`3yX z^(ADAdvM_{?x;M8GHhpcP?2s)e!*ZMo;Z=NUa!B&WnKK%B>;Edk z@ED$R6-`J=rV=4A=oLTUrnuvf25!4Cy+sJ)LhkHZ#BehiqDLj*$Ldl^wO=Xx{4zQC zNQhlR6B~`39pv8ckeeJ_ys1)&fyKWgYMg@%iR}Pl<%B--JdM4@fGqn#4B$(Ws0Y)> zdBj}$V~T?q)t<;_t{m zBE@|#icrqtpSH)@!I6|iPyyUUwokQ>+u~>Ku?bmCO?27)34XqD2Q*Ss6)6d zxzAV|NN+Vq1DJv%)OZ1vKisN(M*$Ww_|8q*cPwRH$(g7`Pl|EzexVjtlI#a!8QhQz z;#!wML8N@H7!_GUME$yepBir`qiB^+F%?o9eLFPfQzrX>(FKa>i`?!WG%8te z1+~h@dycn6R~VC7AZ|N(Z~V7h-C+52?+VG8`8Tq*)N6dWN9b+1NDCx|5sRf#3|tr< z9&GMvb1x;)%SL9j8W(p}PB(J8j944u!3nb+k{s=6o07NcFs#Kcb%}XTyFz@%uf`oc@qM0-Y-mCFGAdy&+>x z;zLe8h}{*({s|9pdZVAGFCR63g#O5Xs!vY-2-Icek8qffKjL)Avd?jc)bl!jL_L4h z`6Cs-LJ}nAkB~rYCxGB&v3{Ztv`hZTMb7(X{)qeaPcMHYMYJgSBlASkx##Yd|EF9? zl0WjfUvfj`kC0+;Eb~Wp-my{{xspFJ?&IcyBzHvg$80phE>nHD^G9}B+CvVU{1G`Lf26pe{xg<8 zLXYkI5sro4`_CVta+XpSdU01HFZ?5a#K|A|*1zk3-WDNAcmBwjpNiy9nm_W>e^p@@ zoj)QjqaEUl>%8`lnLo0#%<)eOKW6^O&N7#NsM~sXVM6{$q3w(m+RjL!${#5%XgU$| zN9dN7Kf)ojf4KY+S*@(|N38YO|HvP42NbdAljo1j68i6%KN5!WvGwox7yelJBf&X3ZrbP)Zsz(yCIG8()ho-T%P$^Tndz!-`69F!g!Dqie_hMt}Jt zi*g+SYUYbfs{!j~zQ`p)9Um=UWM{0dSH8&1KJrB_{GkZNr1>H{V=EK#MQFm#7ny12 zi?HWN_r>uf`63kve=W{VynK;(fB7O8W}R^PBICk}Fp}qsOy{OVZ2Qd@sUz_tnkp3= zkqLd}i_DaKkuIGt^5A2iY`#eCXCPl>@uNVx=8AW}k4tIhi<|=0e$;%C9TqQ}`68N^b-u_? z$7L22G?sKz6lw$YxTL1wbuyQ=v=lbx*Qr~)j}Tp3_ZL1uuS8=j18v8l31OEZR$u@KD8!J_hfj1^~gezgJ( zNkJxPSnk#hfCMzx|6P^LVwtGa76CZlSHRK!1=X%H%L-QLdRgqe6i{167)x6L4Mo-M z34rU=j6o^GQT4JK{;rFrtO<^Dw=jto)J7c*s)eiFElhS=kYZ(&;79<-a%0HJ9}^a0 zeI})s{R$|)FvOxDay7lTidsQ2QYC1Q>`FLs#IXXwg4N#0tu=0>MCy)C|Dg@ z*X1p_tidZSX+l{a94qxYjKr0PqNkH*>x4I))v%7T%rK9#_zMM|qR_?OqZfOM5V z%(4k-fjtTphyqMc*&w0?S#`)21)`SY4I=W1hf7VG5fAG6Q5pOd%2X61gdy3+X&7}) zl_x8TbytrfH;{s@x_VTrX6~plBo#6q-beb;O8K7TAU(5C*K>M|zX{*_5_eTOC+l-| zH7E0Hs+v>Vk$p|-3!C*ato5Tec&(Z@?IH$7Rn(K`E7`q8lHKc*>EWr5@bknxkjCFT zvMcz#ORavQ@B+tFRIt}TVYpr4uO>s{dCBsn#?uxl#rWtnslv#gOqm`CguDG@J=6@I zHD78!QWK{Q49DR`1ooep88~zIYi8o_Adi>+vP?=(7cf=82QJDac|MIq{{1g=u$O;Z z1L3{)dg)kJyygQ0TXS%f^BnbW;;Zh6)qSHdu-sEOsU*&IHABFmj9>9KJ}7DvhI(oN7rZRz-5^i}IHnH9r7h3~|6sRX7$)_N#h1weth* zQZL6`x7v5ToJOl&POYn6PQ!WRMm$G}9G0=Rl9FuK%2DfCWAm?M?bm|(H66MF$N+yj zYqwhikIqoTSSGc8#;vnz{kU?qRMmt=swRw66?$YCx(cF(u(t!i#-9b4ECrn0&U*>R%1ym z`afVyX<>si&Wnxf*h+=9O$F;hE4rpEtX){NaQQ;cg4ZOh=j+klB-)$kZtrTly~$2{ zf&m$e;VFTkmQ(EiWXbeyr=u+PWqr@wJTkqDj;d%7oK0dd3Bsyqkavdn))OiZ{Mbj9 zK3a>mJk|MQ)DX+^-r&8_D*^wffIkAY)%%=TjHuoh?nGb~J&W+WY+kyoJ@!3=1my43 zClG^@1u*O^WDT;AYd1ZDK$L4E-?&dCWduUy@*R|TAvl3>MUK{S;VvmzAj{?cv{0TN zJx`uCCfCWy6{pf%i7}nBwU}4a-&J~yb5>Oh@-PSG)deVcGMfzz%FjZQGTptOy(Y@L zgfLNOs(#Ty5vXH%;xz6^$%xhR7)y^;5?UVX;PO20aamTujN7g*Q(VYXFMWu1{Z*DT zPvJIE)4aTP&gvGMN9A=il$Rol=;VfZDl=Phx}Y6NH~&7Q8#Re|ncK#Cd83?qNqHW- zXcE4alr8F6+lW@>GGSX+r6X0_$dq)5Id18K6?^#H9<#QQCD};WGb-ZJb6G2xG_6j0 zo+Qg|L8~d;=s52R%ydyEDMyj#VL_l>m1(opb2%{k%Hysxz#(T&&!3OlRhf!`p6r9S zAmZ*jvQ2DiOStV3;ilmBR#^$(5b~fNLFYggj+9V#qew|M*{r0806Ic}R@zgbS@RV= znmbZ?HX>W~U#uFDWWq_la2$~Ym7Dbo5Nr449jQn&hKOYR4z<&?IJ>nkd+ei0fzQrc zw!AuS_TT7%-&Fy;!sz#u9f%=#7&~zP+#Yt|i{haEUHns30RstZFJNSU&%I#?t+&U{&pa z1Vay#s_%kTVtUyHt5|K=+s2b(RXuIIrBdasmyH)cxJ#RO?$k)jF5AV_1-qFQv_3Eo zho1^rn04nTn054Xyq!Ta-p-&IZ<~nYt-@NeD)Ra0p?XSQD0{B4YKyy02t!BMH*?#{Yw%R8uENyw0#6DYO+Gl~9^IzU|Kx%!}ds(2W zi+w$-Z8hIB*kxE(VxP5$F*EFIaK92zT)pWLC8dyWZ@J7fRZZsnIsYV5qJ59QV7ao< zR5_W^_w%-xW02%>+t0@?6O#;cOsq05;)g<#sOcx`%%Wgt`IK4Ky%GCBnPs;BVcKU0 zKM?!usvh=PHw7Ri$#c8gJllnJ#zmKP_IGR%%R1X`8E10f7-Mp_pxqKc6#v?$>@fXA z`O7_RvE-G*#Hh0?hhc!}MbFJ0L=3Bo-KE2nCB_Q5R)2IGRcbZ_(l-YlO)$lhrKr-p znW9?IYW#SiAa^O*Pa&)?_v*`@)>qzm%luMDj;*LpRh2X8t0{^obe7m%m-(ec5oIxP zinaNrX+nrV%&+CZyxcawq#RV|xyt-{H#nBal2LuH>hci^Bi`sCj3hdB)e#FL^}awg z!O#+xz|a!cucDWom8?V**UVD0|8JUDwtVSrPelZsea6!$LWfwmLq*W;N{pbLe{#99 zphiD{2=PBpGiu4aV?|}^Xqrc&7Irl4((m-LqKMzBjT+PnjQ*^s5tbEoV2#U)GW|d5 zNq?9SPvar#wZ&JJCD>2I)5c0Xt?&rqX(xRvsRea_n$p^W(k0xSPdFA7p|r6QPb*Y5 zlodVeyQ&*D(`{j5W7Kr39oExiI^62~1VbsoK1wi+G9`+q!e51U_^W4jFgDTbFp;iG zOrp^}O`-|5Ni@MWi6#)*Qnlr%5>Slz@m56+s=%C>Lsnmu6=e5C3?Pr~^Em-67U9|k zP-Ev1T`WKXT6xOtyI%;^%r6U{V(#W4hLCLLVVXf1*hJT@pgaRM(8jJ3wG_FyCL_JL zX3)uE1r?a_*D(7BH>l|j7HCaulYNxgP18`O5YrvZgG|Pvquj%~&{|9(ropC>gHe*{ z3R^|!&PNGbS-#!>Q=uwb{+R0*&Cru&+W1w$4OJik>qdu~2tTPXlMjEX&j?KIRC zVmctDle!j}_RELwi}vanUphcZQkCR9)@{J#6=K0~SrmDLm}Cu!@ujhr36m#B3)+zY zxBh?Zy$N7c)%8CavYB@2NWNc0U(5L;ZTVxkr*DobGoZ52cV zE%6z@)UUQKt+lP+)_%YJw%Yc`)>db-KoUTcfMrt*xXmPjfE!_(|L2_h)>*Q!XuthW zlsE6byPtFJx%ZxX?l}tNNAoRf7KpB_@}qdB^T-SXBo5kA1p}{4xplEaU6xeDEK6A3 zS{UvViq{zRcaUL*`Ibcp+0%yMDU%4OaGbsfp*ObM*9?$71T%!Z_`u-DMhF&SQkAmB z4vhG87E#3$^YA)jFNt~JRgUa~1j0*rozbk0_XQ_lypK7i@!p5k21|4jt~8<+8OL!@ z{-y3h5?7{=-#Izg-{`&pQsWN7P7kgp^s_eD8+<-h(|DXrvJD)LWnO~;4UGtlx_w?g zbF+D{O2C!^dwFk~ss@08UwtQunfGJ-IX(JmFA5l%0SU>Wb`;l1O92+ZG~(cmmk%^Z zCz9ovt=fD+)p7^*#g#ZqsdF~GTkbuCgSKhj04x|z+q9L82X;DWdjA|&Wn2Ag zQ5D<{!6IQDTO|CJ5UuR4GA|6+A|V$K>##E|770<&x`z64Z#S%Wz0=Szq0}41Aru)X zB-@3bJ8;;hnJEmLwa3}07Mm%w7}XMAED2%5BF3N=shPv7wp9CbAPJ%jVWx1)_ehAd zz`Ge{3b$Cy6t<~m3j1NoOPDE)saZ4S#byf0me&FYW>Gd%2%A<@8o`rx!AxOmMcO|x zrP|PnHB|RLOPA2d;d@D;-qLsR#gedb;X~yGYC4NWv0(Q?^4T$J4a_M9NVd~NRRyUk zEJX|@eeQ4*s=C@zmH1*ws3x)0f(l^6P1t1oM^kmMTkoo@lrz#nNraS|-%gD(< z5$pMoa)PW3(i93R>amQ0wJ%aAz(R&dQz#T%O9}nSPS(7KX@9}Z{(Z$jEa2Q7Zqh|h)~h9YpHHG4lX$mL{74l4&L2IDH) zA|=j`?rn$q)qgAFxv`{IdLMM?O%~@!|y;!-;#-Uu{C~<3|91Uun?j;+W5Q3n6 zYHl))Crejh$+J0Vv;`m;g*2O4RLwh|ZtQ%B+rhdvSU`iZ0BZ8qcylvci+B6V<&w?P z;{U|>GVAA=#;;%oa>-V~3}AV#4i{)(aPC@YA7Nv&8O&gkyb1---y(u|s}~jn( zvLXs2&PP&OCZS5Y6#^@w&jE6CLH{WJykRBne8Q4VZK-<@#1Djh<$m&5|sPHNy z?h*o~PfaTbG}~A})XQnDL?c*0RDc97V*Ow;wuws}uzxzhi|)VxDgq62DFA)D4p0KD zp*H!U-A4z?Ft?VK3X9D=#h2|irubf`_J5ao9byr#MpeM`AnY; z+1zW-Q>?6Dij^_N!sfLnZ6ozn+|iWsHqf+Cg|=*emUVMyN_kj!)NPbFc3<)%>elAwMn1*qmK^q`&o|+ELd@(>CZXg=@mz>7*^`t7l@59^#(yUsF zMZhI3kOIrP>l*LBBsjma@l!IP3!R2tlN;~Pqs?C*9j`z* z&L(tCGI6p3$Uav*X*!Evzh({W_*VW?wc}g4O>00UY+qmU#@sv5fIVnHw)fr1n5DWc z4d_ie&*SKbQfF!dYqyGhs@evu_882hXnHQ=1<0*Xwvv+Rn}l8*8q)jQ;R}U)o<`g# zzK@eqCS4Mkk0Dk;Loy&;vX& z#QMIDCk#ii(fikRIB6Oi^jappnj+V_Q*ciQ!VzzND@{HnbrsUpZ52z}rNz%^Cy!m-XW^zk4cLH?ilMR2Se-D|xU--oir24Y0al5do#rLg}1G3#D2@SRzqMH+*oA*TV~R{IY*tSUp+} z-F$ct#kz7iyk*tH{PprWpmBNNI9DY-!^`&o!D_BQF=z~UY%_yn8$$!@&2462sJhI6 z3}9gd016`jNFbmA;w)4DC!C!Azee|6yh8(Bb1KIvR-n_(vC}`X&x+% zV1Ec)BuIL+vpv-ZGUm>xE-eocII7?>5{#n*XS6!Q(B$s`K??Xq26|IO@Nk1)F!v|| zJerta6j|U=q(gw2oWqOBa8TW;^A<8%T6Z z7(5KgFW5fqtW|vy6@Te>?EfsogupxY@6Hey+`%zM7daR}fppT=;u|LXW#M)y^$AN{ zMp|e8kY<|W`q{r1-|t8NObDd@2@G=oOem!OmBi^EyCR$Sz8u=GV|hd2 z{nAvd8^Iu3{2yWI7)%5}EOjYA8NKKH2vh#_Px_dj?z7@dcsNlHtsjC|nz2kaEr?>A zh}sAdiSG=JJ}50k&^1Yl@$cc|;5^}=ZpV16l&g2C2F5a=#tsK{INxo;wMu_syGQu- ztfPyEg%Ie@X~CPnP*?JM!h2Y*;@X*mhb?FoD@`8u%%)6ym10Gm9CiWGx=27`A(LW9voEWRT z-qHD2AzZ|@otX7b3;8lq#~b@sr}a*NMhr|D@OlUS5Ae(PkSVIC3(2Ojaxz{m^Z{5W zppW5Ne>D1N+`Wy-<6|a|uM6^c&6S8eaJki>4qR{*#6eeHK_&IC;EN!Q+A=d~{1PF) z7E6?Y7o9N3p~v|wA2z{ve4T(V_*Aq1!xIEt(91wDIgA~coTPmtY!G35z{5+EFB{`o z&=ZL}K~FqhFlh!SjmCK!K7f2F_zGy4!ysfaTNK*tzn*~oEU20z^sj%wSMh~b3QX~I z!hrP(DE=o*@h@~R#gl!AUMRlIrnc{7)4O?npXDx2K<_7Fec#&{(DBt0i?5*;d~IWN zeaz?*3wHBuMO@;u+raINr93`J+6S?mZ}y$JEFt|JV`nYnF)_c6Gafr*$KxfXiN|B7 zc|3M%H8fdK&9T_;3>Y3yuBK{vz1F{e`p;hCy0i-jOeHqC_juu>kGDAd(K_BbP2&wDLSGK#f-Yw1*v1It)smzZIv=;tMr|%v=_V~X0IzCT$cf`nKnoi z0%vLM^A5M!H;nonwZCod@BY?G9kC$+{}$dHHhZAvLi!fgwS6M^muT?cIl_naeH#=d zj$Y9N{7V4;X1ZCy>-!QN{v|s9DdA%lW;RW}(|CPWlp?qdtl~8J_xG2&)~{E`1D#g) zw*D#-;ej50U9PA{~OA&+)BmfP*A_CIYt+Z38bG7fw)dw@?-cwzA^=6`o zJBT8%$uXoKX8I-S09D1K4meBe2X(}ke;hY`sPKvfRxJO3rWft+)CEw~F@xY1(lQ-? z#2xy8Keh+!)ODgko>{#0jLRM%$!_w|_B0DD4O`A>SHeg6H19T?#x(guytBAi>@22T z7LPDzdRwvaoCZB-$^{)`a)n+`DmUBAI<4&Zd<&Fct*+3wq;MkhXZ1bCl(jK`%0*NT zv0zxq67#3?L>|k-5`qkJ%+G}YT?Mn%7YN-(rQKM_#n)!4z%-y$fYSeZ7zk8JbfN5*;EtCAGnU|9%6wR@WJi!-?XW>Yd+|WerKf%~( ze@F5mtOr=j^h%oc$%T58|9z6#fytS)JIMn&N$yBIh!yj_n%E12P@A7E^xf3|^?=@9 z+UTCO@KR8jXg7SqZ#3Fnb z(d{Nex|Ic`H&mD2(nf?-LHR6#QnVj~`-Ia^|0li#^uYYVWZ&(G1EReaGO0~+GJXDs zGUY~cs(mWyPv&64ayGs{mE3HTJa1=?4+5KJ%=cfrgt&mF7@5&f=OAO~q%5qj@ldeT8dkJ*1sb zyyw>h{pszq@FN^c``Az|BHkgyp&opY z+ZPT0!wKMjScm_ED*WFw;6Flx|Kk@$!=LbUGeWco zH9{ax3JEz<)cLqDfBP?gKEA^YjvWk*T`-Gf2F4CEEQ|m^VFUmP1T;X<`MB2qfARD2 zJ?8%JLI3%De2=;Rd(8be0_Z;i)aCf+K9$Y5%>wNsO7TOZ^?R7QKE8NOKl*1vAoWjRko#vsA@y%u zoc@{iM-aCk^ZGXN`FQ1Vo{#q}zeRqZ_`D^a{Chtk2CV3;DkB^BuA0I=CVPdwx(ZwUV`uVuFZpPQg@YPs5$2}ik z6l99;_xboqq<72txQ34ydOyY^k6|oHgg!$YdAjwyZU>`FJ0GV7I}6XXl{;|J zaUS8q^x#vpmjGGkHq_7IqdmfEp)GykgGB4SM*p&&NyS(Esor=)crL|D`(pM_azL z9<{J8xJg2;pN|)i9giW3AnZ$YK0Z!^zi~dkOw`WDOTN7G z@lr7!;-8O~n$O1(h<85z^_4^scl7mqJeoSR^YOk>hjBiBLg_w>1k$w#-5MssOa^4+<+dL`yw@jzWUEThV${of9-?(M?2q) zk^kuD|B>_YAm$=r_NnLd@ku?NkDKZHxX;ILBP#3T`8b`8vsRy} z4?UfaPij4$^YM~D_kKQp0_o?N<%iMpef0TkKhDQ1W6#I;NW=x=pO06X&c`eD^KqEh zNpwD5`IVlJlXuhT^YO}_&d2*EKkW_v{Wu>t;IE&L&-z+4{EhQ*0e^8mUa6grM>+WI z@qC={@s*vAtI#!_kMkEkAFss1qlK9Tg>8{4lInIEIY=77|~p)2^3~(KVLnI;9b!<3S^YJ-P^i zr;B5EaoL=#-0>&MY}{0*%tnYZi{!94S?|l|E7@(hhXuc%Fo;wEceCvXwE#TEA$&WM z`rjnyuo;M}n;z_--{$Fq6W-j59vR0L?lb;2>iBE!6Uq$zD-~aKWqpSkTibxF9gHhj zN8ABaZ8KwPhZ#{u0H8JkfHVg*EQyQoW+YLi0%OQ%1dvgrWeitIzM|yv5XVqcVmg)6`Qew^cwdgmSu#9WpPMD zjA}f-lXz;Y+p-3ddRCTSD+1r^9y~!MDT$ z-*FcBa!7|Sn+37LSA2>G-w8T=!S%m9_%eU-Dud+O@fqc#x5Lt?OzeFt_S6F^$O>m? znx`ZHBHoCrCDP(wG7%q4mmYbFiTJ%2v8|FGBlCN(XFCfm-$gbWXi6j##B}<(i_|#v z@vE+W9x!lk35>|VHC9DCAPfT((4-Fd-}crFhGjEv&9`A40n4Ei zwsqqL(s9Cf@o$a;z9kIbaaQ=2Fnq@u@EvD`FLYxx_%fv%@P$>09^pGdhwp?h55Ca1 zITf@D(~#RB?eU$B@E{Qm?w2ap!7K&#iCeK%Bw5g|{ZbZgA0Q^{I|=X%jbggIlaBIe z({i?EuL4@XpP)RLsZh%!`RFcb=tkD)PfRm7-_3(yo-PeF9v~mO5Mp4Ch_PC+4T<)X z^!{{8P2zm0$B+#P_zx#7@GxI?xky}g`MS+4%+u6zW~yc@w&U!Oyn(Yhii-xP)8XKP zn@65UFSzYi&(XSS*M5cjp2MP>d_3m zFko1&Q?D#ai|r}e-s})_k>_7vR=o!SSOCB+N7|ar0%xtl#^u#ItRBHo=Cp&05LcN6 zK5aDsw$rj-qx%lLUqb;F$)dT=vo+NWakyiIX#HY@ zQnV1-rta6s@c2UFcl?R>Yx>kcnG5w0Wk!gmUI2ymYcMfD`!%>SqWxMx?ANforu~{~ zWCN^fo&QbtPaCyg!*ztb#PoM;yR;LRD?a_VC#HXx!N7E(^KWf5G`n8S;Z+fmP6V zbz|Oyjro^?XpENOY#(HsF2|kyuIZlB=}3S9CJcm#(ZuWtG7$iIx)vrIoSM|%BhDkIuumZ+FMKSEio8HJZHwq{bNljlo z`WNKe#loL-oxvPr22=WTW-z;toxzyoLI1}5C5pBD3$hiRJ~jIcAPh5o3hfPJycy&w z#6Lu=T}-SH$$);@nHIgMl=#+RqD0e&F8zZ_nMk`sBTRZx>GC(6&h+8W+6PeOP7G== zdT_Qrj{m5kf8r3K>YIs6%-d*Qj<%mgD-pLO#KH@^)+DF~#*Qlp&(Qgs;eu#pLY6v;r`(rW=BkD3LWKCgj2#jGq0`z|}F|AKzl zek3Mvi;9tuPkBn(Sw4lOM5lQrVO)>FTEGZkDZl|ugU(^87ifAle z*Xi;pnBy%8z$^^7B+IAZyiv%fFhK;#{v>9Qb^gteNg1LkOdUBVj)snBbzq^tIG4YV z&erMgOf&sqHC&AO`1-L-ftJ> z@jCWRDAl!SD`uyuMb!9lhfbf%I8ab-`OFm|Gzq3zq+xi z(~G804P=?=#k~G223iZpGKqwVA|@e7-Q@FS{yk7Ux@7-GO7f@Zz@Gh z6)6!1s=>ms**BuEBk0&*M)MmRqKJD}hIr8~nhT*uDdgkYd^P0Uq z@S`H)N2Tx4oT%-^i*z<*w){iU4YXA+-DJ#ylvlS-Q>yPVU=l#R!yHH>7oJ#c!0>yW zOy{7lU>wOX5hOkGJG@nwUiuSW3O|bgU_1*}Phl6A4n%P?$jLj0s zpMygF+;Y<8&;6b2bb3lSwaUjA25QM8*sf1-D9t`y5707whh$fK|{E5Z}X90cD2TWnePZS3yaoCgMrHu#8 z|Dxw&(EJ8()ul&jdC-uLDJ1G~(5MT>uVBE8r1g^WFE(Cue46HyMEFz>U<`Z$J@ic& zx#BmPV@S$|a~chScoQt6**ARpvJ*|OvG$8jtx#~00m^7FQnuBD(=WDA2E&YXq=Bu@ z7_GihSOQ`_f=?u$RxJ?int3G~FxrNV&{Xd(m@#VgzYPN>BYZ`|fJsFsjdepo3kHc( z$u+HJ7YYS52<2BUz~)JVGd5u&YOC2u5&K7F6HylbsN#zyA*>n2ID>^3)&NlpksXnNv zfp3d?Pt7$M*u8vd#)=r<1?2wAV)QE&c)a{&AO|+3cJxR9?;>Rv@JimS1pZSgkDvk4 z&xL(2_#T?-eHY$};ZGR4&#nHgOarBY20S4%4X~;%74bUZeJcoQDzv6i2%ENg7ledD zU@DC0pg~0%MAGyIkTM+*!WhX>UkuD5ZzB@(2R$t*Mnm$yV0b8nN`udZVB@}fo1>9W zu8psSp)yOQ{+wn(B|%&epn_2Ly#W-K6G&;mx1iw%)0@`pg<&38#}0Vt2pxVdg9GGX z80U`d;L0#*hr{!qF+=XgxnnIe=+n_r=*$y$G|vx1Yy4|2)hD=O;TPbsJq}qT3qYzilu+)0lQNnGQtpm z-ywL{BNJX?i$ENZ7@BVs($E>41K(-=uiC#7P%XTYlGpznDxTBV*u%p)sk)!rJE&^P-dL;`p!teQQC;3q+)5{shODI?5{77(EE@1 zXZFZhA7H2o|4Xn3wh7j`Fej*8$N6Ea?;N7$ex|576iURP+a!^?6%#@DfJ3Hw3@3DfZWQDxYR zJmR4B0{Mr{Z;4tg9C2VP=fHX&$JV;M2w!-;09UQs8+TW}N8<$YR+u=$c^8>D%im?5 z9q8=$B3dB`6K9aOR$?#E*7*LKdNOmi5vzX9yDO`4zrCh`yr*u`z62>Vz^g$pNq1 z0djz9qJ?GdBj2>9k-QeZ zX?QJE6I5~nA`7yL=Q8Q5l0CKzv@e|rgl)3zCjw!+ZHGZ1bSrLKxUwKu<|G z9n=yP5e>cL4_oZ(krIdD-hi*d3il&KFQmy)xel5k&<~+4$NS{%4%X>}?Tv5l!cP4WBrAF#504!#mre`)|;L=zkxt zUqm931IHv;X*7c?^?-Gu71X4E6Z&3vB!UEpjnNcR^%L7i2bAm)4?wL<*$T~GcQ9;s ze;!Pc7B^wdg#`@!Uv&7c^eRvgZK=rLW}I(fw>z*Q==Tj7+<0Vj+ZXLi+Wj|UzlB{* z5Nm~?{~gqe{5*kuhmEpl&e%#&CykvJ

nG%Vx1A<^R?QS&+D%_Pymcg<&okxPp*i0CjpL=|LryImH`^ z=XEK*cF~``zUB%AC*a#H{PUCX((EC_v1-Rc!G~q{=C+6TMLQY?pr#>k6iO06bBVX(tSTj146d2^W<&=PagnJ*VYa}6synqie=>; z;L4M~jk{;e55QOBXMPj9Dh+f6{2hQW<7$S$)ju{T!c}485x;?}%PhER3o&$L1?FB;?@Linq$gLtSO_Noc}qC6Fg>nhT4l;5$} z_ZoZMctgAYL--pg@aIo}zX0%8W0WY6h-REjJZjh$_*AxHyk-93KDy-HUZyk~c%)kPHyyw%d^c+i2e;Vkn;O zp)sBVBB>s)3^~=H51dEn16%|0N&GeA?<0RK{{AfRN4IYh_L}<$0L@MmNYcWw`|& zrQ56Q$4o(YA(lk^U_Qa{^-wF6t0O7?uR%B07Mi^3Xe8{WZ#DPk-sDkUm-E-jHE?iF z;$xRw@`m(C7Gf29JqiX*zl8ZTkBjJrKGNBuFo*Qx8qmtCSd0CLQs4C)>hnZ! zTW_0xLzi;$NvTgYxW3Kgb{ELa{e6Sn=s-!?4_bo-KtXGB360g=OlvD_q03f+)@~z` z0j*ULt%1;P0>NEVd)Yu*A817Py7Y(>$rSq}6t5Cp3FU(;GwG3U^4n1m-Qz@W%27cT zZ6E(51L6FSK_?!iJ#;Z*4bmgbg61d%6F}zNQ)FBb?2-ukwIe2!Y>*y50|gV+ZLCn% zc=PL}#m^zNN7<`Uo!qu3v;~xiQq6>yId47}l0Knpj!Jol1mzu-)4GK}h_sbdvr2qg z-Nm53v(@_Ll6UUAgc^y$UzctKQz|^YnMm*|odh31)gVDEf$LL|eEv&JgMb)O&F|D1Qxv9;rB}Kqq~4^YskyGPG}cS<#vPk*m>rjNWTfmtpw= z)>xF{&my{IO|LduzSMUuqq;rSomkLp@i&DZh(scNqL`DLNUos^F~-X0*uvf#cZRpd z<1ot6S}n>;#wX$PZ%Q9ZS#F+Of* zzUHvv&N#o$H$+wjO8*GRDJd_f)L&{!zFx#jYJ6Hu5-`_6xLm~xeQ1p;Q*!f2=H6tR zH_)S`mSikQtxvt(=Y5}`R)Yiao=7vOnvq@eExMAHB)jOz6viH z*0cX&6{eVcw-epG&QYOc;5WmfuOa=T1sV@&K}6W38%f>#^q}uFxwb6VA^jx-;B!DD zWgAf7sj&eUmbS$UX!TDL^_Tade!^9{$5T7hldu6>xdDzoG{CD21lkF!LO+!WfluFH z?uIBKXqz|4ql|Y5Qh;keM@7lR4BYou#^>OK<4nph9_IMsB<{WU>(|GxpAKNOB2)TP zza{ap*H5R9TKz7qej?T0`fo{m?Dd=b@9t0imc)IjU)A@yH#dh4_?$ErZp864_N4ok zwEM231)7p4{o|mlyuBpiqrLeghq4w&zj(v(t9teY7a>>W(b=o4+~D+7ha90F&gBEJ zuhYmVl>SnPkx__|@&7Ij&`Em%oq)OMEKJ7ftFsbEucyd0IWMPl?Tj}_did6J`)`bD zKg_G4{WwEh00i6Qw6}Zd#b3W4w-E zt3MNO3L=M|n)mb2&!IKwyMC{cO@|l_PckYp5S+?^F+SUL_C|?NT95gm^^15~1HS9O zCQkX#vPL|u@!s`Mj1v!UDOetAz2o|DA#1_M4pck{yMohOFuj@9%+yr3bR#idTJ)bD zw9I}YKeYDrg(lLG=A0fzu_@3L)59X(2#ff{=|%i}JwJs>@kRR(o&VVCH_8|Jjc{~* zBEHb5|A+(qtJ5J3|LxNyBe)*;NNGH5d_cT8n(&SMM*qL`_D8`prhnW%10M0<(|F{& z8aik_0st6c(Z6X?@kUt0PmhW>!Ycf))Do!e)591K4F9uLl9n7G)4CLWrq|$aiZ@5A z?Tv=NL7&n6RqHqKAGKAEUhgP+O9Trz(P1!DV=$wN=y2l!ha~}2vMu50c&I2_;+4AU zU1?Aw3GRY+#jF5^-W3C3KcETr?U>yQw`qgs5Wf6Ey9t)o1op{rdjae-hxEL#8QG$kfT0EX~GJj1S?m zKf!Pl%#5;8Q~M1ZGW!rF)%OG_)JT(mfqQ5!3R^Yge?b_5U{4HWR=}3I9dw45F>RQe znTqXU^-En8DRX%QKhb{JD-+F!VKU9j?H=J(^T#Mb^QsA@pq?6PY9HCLpVI;x6?=@f zlyY14#BB<LG)Ql#5N}#SzJK8~?lY45c=v3++|?X) z=X=5MrWnfrO?|Qq0Fd%dy`Ex4xut)Ch{TN9*PkZr~- zNIgC7hw)v)H9>%-QU`-x4y~^mKV1`~dvkPMsAUpv+~L04jRCq`hwgq_X#q0L_jyfl zgYt@0*+jR_)&y~f%qZ7PKRYz~u^1MGgU_q~U?%?WAf%ZZZNf{Bq;I099U8gQ3z_By zweS8PqV^pIfgKhf5)zovUX0hVI*nOvqM^x8q8xR+!Z=!Dnm4tN{R1$;7mhU=bPYGC zaBPAW>GVEMZ;Q#KjRh5qLo>aP)9HPjj*x!S`_&dp7&^ThpUH+nlm&znMDJG_*WY#e z)d^L7`FHEjiN?2uo(pvvD%7oP6$%#K@RCl?pzeQi$S>?Ve z4;zOTBk~p$jiFg+jDQ*Hm$)OqXg@4xYW%}uR1?h|pf$env(6sIA~n<0J~9Bv!?Dw7 z%Rhcct?P{26z-*tpCTQWCaY#WkH;c?JQf}Mc(fWi(Z{3lIgY`b6Eq&#Y=tmKk#Ibk z=AWth{4>>nr)B<`s)IqNAk+LaRhxgNTIQdr79gAEpQ-x%V=C87Kif3=fvN2yFpNvq zvBBkUwy*s!Gx2Xli0oy<2#pQ%&$b>(-$YN_G;*gGb^e)&vS4o4Ag~9;2Lm8_&&7+; zUbL)Or!lJmPc(U`(PV#d4>WITpRip>3$DUqqe1IlwggF%66id(N+k+6_y3CGMVR6Xe?##{_4q=L7h#Hj8s#+} z*`&vBd4ckaFxMXyzcMO*3&$Jfi~M@|T&^}uiN4Lu59M3JCp;eVA9HhF|88xhr$;{g)cOPA&=Uui%`XQ->e@2o^*Kh-XE>0IzKYQr!Vb8|Hq`NnMD5z z^)ThfPFRapz>+wBdqp+td>CSzaCcO z$3?~KVKu%mDqatZ`a88~wSFV4<}cC`sP*e%#PL-)gCdzVU%a2 zkDrY3m8df0mq%q8l~em(#kyx!pb=ni*!2S&*+Ya0LL&*{Rk`;4%%c&OZiFR4Az?Ok z1ZB}*uko*m`nqoqG0#zi zl96A8jr<~P zAjZkB*oTd#d*k+8!6X&?DI88!!;Re^TdD+aw@?dft?(6hSDBLCaw%C9+V6(BDrFxE zeJRB^#`AEu4cDdTj+T}$&Rqmmilw+_A}ue=y&o^Qc2Sl)hb%BSL+-&x*=iBAQtrZz z)#bje-i_lYH`(yX(=&@QwEXvz4vU&P{KD6cM(7j{<=u+=@ymbC)v>V#Sqamn`6_Ao zgSq#^qWS!@JW7}p%gCO-gbmlZon&DD^-%7$He31VfV^b4ugF_F zDdJ7rundlR2D*yhK=O5dH+j#5!_4A!_}U~r8CbM)KzoNL5*VM6ekm*wcuN}nZ@dfz z9#qV>4@mW9vZ=*T73{adjfVI>{#x<#jc>-_XRL;w%cT_pw$sTThO`0*qBk>!u5~2F z&^L_iDvGocEI9hZX%-x$6XXU7&d?g2Dnp)fGB|#sEP_ zD{6<#fRmMh(@Wl<^y~Z+R1D!g9*U~Nsf45TUm=c&kn?CDgm-;Ifvw}!V5w}c^|D^%?57n5b2HXiZ9 zcymQQ%<>1TJIolrticr zkSYDX%+TO(8s9^+E;9mT%Z2$$xWf2Iwj9s%z@U3c(1(kAsmn@Ie6YV7WG@GwcwpEM zK4bkm$fH1vX|+C%IBPNipFdw@h7VbiG{Yy2;d84MKBKQTwb}%qbuPrgGF;aX>VICn-QQYO7h&dO8DN5c+uJN!I* z*gZL1Ucj?6`E!=54?3ks6uecJ4nhT~(qjt|AeR?Su-MlT?RT|py6T@i=)|IrU9Gxc zBQLI9BgT4^^{5r!Pl87M8W_gE=7dMGY1;!J5RS?CoOlB6~i42xkhb+ zg*f=ngo(d8|A+WwU5Qx7-LZzk%A*!~VEDHv*?ULDhksl68+XUTzb)KwFHAMQmId&q z!dE=3^m+3GSQ&W8_+799&PU+4(l^^fc$rE>xtjNKck>8@=4JQqf!XL&z>MN&@(16tkMksM2JXn7YC%}tzKz7rAMGl znm`mvsr)d)n1B<+hbZ@_86%rUdFG>EN3X;X59&j_IecHI-X&pq4@0~;+_w8@1a`xy zOBb%PEs8`c(5VWne^REGG)$s8hhjn*AXd2}egL5xc?B`Gt~IQU}b4^mWn%_>$7oCu(y~-?jei z9hs;SoJ*7E+Ke(R!GHR~Y@TlSL=rwRBS0pO%#@S??jz z*U9K38cChx^gVSZP8|1-=ugSaq%IQi4OLX)%fjx5C~flrwTq{zh64wy5l0UmjX=XR zbL@}c2T;L=r^Pp%G)|{WmjvgZg7F4jD4yIvdmr{`WSH8sAU9!q4kc*MZAXtrpwXK7 z-%IrNK>HIaS(fIclP`BrP+taWSh4aWZXf33j`QQwLwk7QxY+riJ?tCb&-wU=sGxuI zaUnT6(IyCZ9M|UKLh}?+SZJA#jS$VpMu_HPgyPP}?qc{-{qp8x>w1sj5B^ehUVQks zg?~697XEGFp;w*g`MA>zZaB&m^Kqvc*qvrr8v%ft0_OP`xlY!69JM~aCTcybM6HLr z=3D05@ZWx54d*{-32Wn_)fpcj?cvVVvHY<;{N$_V`S>C8d@Sfon~xESo{wLSSm)z1 z^L&iJiJOlPo};p$ER7{%$=w|OT|n=WX+BPAFwMu2hp@*p=3`8-+I)-&);b@rBzx18 z77i|8+ndA}n7+077=&^n=HmkDNu2#dTliq3-Wk(;oZhU@UwNys8v=&3`55!7Iv-=D zWS)=FkqA)JjODv|KBkqDHh-V6`MB!rME!ZTC0>6vZP5FJ`Is7tKkihV`B>|rm|v~) zvAO}IZaRT4o{zO2iuwCQ&BqJQQi(5SK0f^owTsd7@z^#oA3wiPpZ~P^xaqj(Nod!FAU=HpY0_Neo*xjFrtkE8g}_W!W(qwu<)Si{f#r!`z+ozKIEerAn-?iowi z^=(LSoG{cH+Vvbd$tL%mw-{R`BmR!(gzj;2dYsDhhaxj#Q(&8n+m*(#f zE2S(~@jqSC@-<2e9Gz8Q9&i;OM0l;Vd|!n$DF~4^K1kQLO3M#cKxVz6Ypm|YL0t?)dU-2*&- za;gbnvGDx$>89v}@Vr(gfYRSX9s(-;K}^u@TPWb;Q3k@WJmkWV3o!Y5OSZ~7h#{Qc z>H+OydLajv6i1%;e0<+tGnu+T9PKzQ&o*6_M#t>FiL zZV6*Om7&=0IF&tdc=K`OnCgXBAEg7N6keQ<^iMnSx3IG$+n zx5&zfTu;e5-|5SQIM{cJdua+La>#@6+20A-5~f*;;T}_;dwLc9dn7Af|K_28j=3}4 z(reVYy=v#A8@Ho>i=mt;`geOf&JfzM09i!51R^2oAI=ZxNXC!;-3hOWn;{m3?hzu> z5kfDa$n%isB}}iVy=>5Wc?OA;-B{dZOn1X}D4%)-Vb*?~|AS-is0swOAA-dhkf>xU z4q70$DRpjT3&h_7tKUJdopZkpg{JLLT-%P*kX;?#TKl|@yCb-QnX^3w2yT3TKCCWG zZiOMZZ$8#qFe?Lh5&c(WLAB_iENFNvPA!<90oi8IsdnuRsK|7EUp+6I!C<`;(A$V| z&qTQdT?QhGW@)XlpS8ksew{Q~1tm1076+U&Gk^sRo?NpNjZtf@Cz2TkkLC5g0RoWe zB-Un%A=MBF!uukU?1_A0;woymz|_-_!P(;0x{1QBaf8 z0KDkF7y#Suw*dHc0`PZL0N=_0zJXNz2*Rs&YY@J-9RRjMv~Uzi)B@82R2Bu(IryZ) zl*Sv}1d$XSQ1vi*Vq+2n(_ZHfop`7!_75^yUkdzYE{vgt#JOq?F5VZODxkQcRhH_8!t`RW9L;lff?PKo+-_EatQWv`c2gv8I zgPvSFRCpghm(;rG$UdtK?k3X8YG_>Z*7@UptmYN_1$z5^)P6Y9ruG|6|IQXT>?Y;G z1>b>_>?V?OxPSoFe>+hEI`Em%f!)=+a(pAz4lKCG)PdcPk!ss0wFkRRJ@8TwyxarG zOj`VX?*TbiCFi=$yo(;M*l!%7q2qFZ?W|kB56K6d*Fl+r{WX%V;lz$fa&@N@V7F}~ zmcag2p#kFG1(3qgmWO|k^Q)8x6Q?uGr7va;WEdI)>rj6WmC{@0=zwuEu4U@T-hJjMCFZ_rSaR ziC=4fN)`Lh25S8&(EDK?Z%n^u#&qaIYlkj_{~s=hI`nnDLoRE7CdKw=sH}`XfYLKy zFAw+v+idrL)DL`-00btcst>y6-l^DIGPKUz0OX8(gUG3^Q(oCY8xm}B4ZihWaD6444M-+cv?rN)|Cm8nHRVBsQVTq|e9IIpK3Av1YtfA3hnEwO#UO9;oi42a zz*g9%*AP@`{4>ltjuU1kc-^Gf?>JGNc8QX!4z= zu%7^e4S2^1BPZBz)W_dM#Xixl!KX97!^I?eWI!}d%(7n$Kk$SltgeTl(745$zZDw~ z2F82pPAwA_^|VjVv;Q1FQbTi@-~;a#L4tJBbZ5LvqX=4gQy= zLFxi5i1vcl5kO#87ETmR?1qY9D%n{VyJ)}@TLXDgsSmJa!~-44<1wi zQxtH254dSV(P8BJIyibP$Tor2RQMVAB7Lj11qIW{ZqG zlb=iOp!fUuIfI|K@Uw!Sc-e!j>&PR9;TPKV?Q#X% zr)}=)cMo8{?f%@Bj`g+gG`Hf)sJL@-`WIVBesX7%_xv``op9Yb6edO|I21VpKN+8w zrKCx|!O&q(NrV0(wq)MXsH*vv@Y2uYv`cHJtib2yO%Soc<7CYo7(Tt<$u~%x9_2e| z?EVV45mdrxvaGyLemQF=q=$aLzdNFor{_-pd<*xX{LFy+i!EhofwCnN(tTN8C+QFb@WZ7Ntr`9JHTM5^#Yi{aTdeat9$qwJSvhs#USt~2qGoA+x z!f*9ab{k1fIdMHEuWQ>H91elG+)9^I#3h;ncO@Kg_6VSgI|Jdx5Dlp9^47>sZ;cCW zo9y`Z4Z^i5&O7&ky#kSITutcbL67vO1Muz$JcDZL#PlyUXUS#qA%Da!Z~^nTHd~cY6gkjo;90jC0&%z>p2EM@uz8 zc<*$N!E&oCV<;}YK;RL`!RX@;r@&_WVD@(6rhOmS2?}2S!;!m(e{Dsz8 z^_RO*iJ3Qw$~+rhnLWo;yT`Lm!Jm~6fYx7j8~voa##@ao|PE$E#y z_hUX6?t`)A%ongtVgmXNGKF$K;#%#Y-yswOBNaZC=nQ8WK+}w=T)3+pu*P1F5>rCM zz~n=%T?`_E*U-?}pK)LyARI(BU7c2dsO1PgxTw^IQf$gr|M%eb_P)DA4S+l-ByY)f ze=b_xiOovreXvG=hLw_CK4f2o1aghN4nGv6Uj*0T zXN~pdEr(7sWv-|u$lKzU$juBW8Um!nJ^0@=~rLCSax zP;W^9Cr{ONd0p>-7GSQMp<4aJT-ySA8-y`&3Vu_0i1fw!rRbM{_oG`wcR=zwx*aec zym-5Rfc)d^`Pl0Sn3y4;;inR@wnw-6(igY;hlC0+79L#}3U{hxZq|ZXudQFIOD{zx z%wtuo@K!u9TK)$L z8c6WhB}i~B60Ehqk4+P%5?fb>Yk3OS1v0Bf_d==EUaTal3vF=z3@pAauyrcb&)v0? zQ|VkdEt0+TDbUvUOlcw1Y6`s~(qhRmI5Z3ug|-hRf;td7!oNA8kMRrF>!431Bed{+ zCXIAJ5J>H-saz&&>Q&G;3MWBo_VIc7frBCG~w@ZfnxlH#uLD{gkHwCnjABS;Wk}^v7)v~ zczR#xs(S7x3$?nLpBfYYvs4%g2jDbgFWc${}YT7j59R? zO(tXaWV9P;z8NnK^%rF~epf5I#8URD$mdQGWuFqse)S3F$6`q9*rzg(Zn%-|r!naO zklU$_{3f)2Gxa3D73`s;Mf$0JO-}xC=9@NDpq(;OX92z1?BCr<>2U@Wfa*zL{u%f* zlnSf0*K$emfULGoFXK*Y8BUbZN}p=&9!nYVkbtr@Jm}?}W-ad<0OBJ0L^Fc@bF>cF z0gkYyWd!~8Cp{oYYb(Q1?ekymu=M$2l<(Bb|EZ;XLekH%=_3LFl7>@NF+`x%0g9}( z-@t`85q}N>q)mnkDp|=~wG8=dvxn_u1`Z58rD6yxa?^g}dfH7X9|8G}(Sgy;(yz;u zV42eHet7?kS<^i3hxg9%O}n>DfqvB9(apRkmVRA6xV5HyulwPBS5KSeubKL3`QWyi ziUUe_&Gm=mA%PXxqCDrCTw{#BuoMC^t z`)~x8f$qzdF}&$NFbC;3!FfZ=6#FlarrO-qO(|tH_9yY$H2~ifyg&`dt?Vnuoit^u zyZY#W2dBAf-2{qDedgHcE-3b__}amD$;;VX%4*2)K|v+c-( z93uJ3Ttt+W?0xVw0g3JANT8>DZ>sHYG^;^scXX}27(r_BTKi>qLpNz9crIS0)gKO> zhtrgfkJs9>ji^)bT65MAk>E_JIv<%)Q3}jE>~hM3TjiSToya;us{WkHQp%m@)fd-G zOF{@K_DvtB+Wy>8-ITG`9>gmaO|}~QYj|^i9(4MqRyR4<+FwGDmYp^B-{NhR&6d`R zW)e>Af?>zVh%Mb#y>mc~z5OtXdbl~y zW=oO3Xp_&+ge5nWo%uO_fROpP;=J=Ugg-!-3e28|skPjRdOA*R4G!$tr<$3pIyU~*f8^@h;Y_dA-hssnNnF7mYpzq3c(k|&rx1YP{ug=-dNNaA z@qLE=U1T!KsI^z9aggGMe>X^-jxoe#p#}alCTp;UFLt1kS}zt|HCh^iosn)I)_6$w z(A!$N+s*01%3v;8%*9xXk8X}+4<-)+%DPDQK`)lq+36f?T0Jn`1}25&s2mx205Q=x zVyOozE?k90GxEKMG+=`R;3tcwQmo{P52e~d&w%L3luIF~?_44(ayvwNZ@N?a2+U;;{Yd?Yj2+)X3-5dvYccdRzFUUqZpVZHg1lAKn9$N4q99|ECczNL z3lIgbVGw1YlLbl>!)O?q9@>qrQP1#V?{$0_HjOmf}18IKdKxf>cc1FYZrxW$gxYW*g zP+!QYc7_mMpms(>cmN5|nc<={j~<}T%)wK1=5D-EXR0BQwas_P_?>L?XRIwlQ2qS1 z`GWu_Insni5yWuszs5ch`OMuOk1)CoIvSdS%udSOMfsdajVI+R!tcEE=o>lbhy;~p zjGBSS=*2h4;?e_hO?pcgrtHkWO-8TAVop8|BC&#$=W-{ltz8&{k?dc2XaxT40NN?n zP9eF@8`#H0vS9|0mll`G)!)r6M4UJGCKCQk_F|0;bQI7c93QJF0O1ua*`1N>|E6qU zymx`9T|EkIU69P`tvHig@fT{v=m_ekrc^=D9?8B=ZAX#Oj=QKGRYp73P&?*W+i@PU zMb=hFQXhPUThg1fcKv!@tbk{Z4iwq{9>V0ME`X{>z6l;d5<~DhlH*=4*Zv{bbqGqX z4}TQE?5S*3xzKH>6I>`=S+`--Dw=OY>p}34nbcP7b+2qq$A|ABJq07#qZm-X2r=BB z+JZ>%L56(g)dKQkv>w-Xa4aV>dR;Hq)`lp8;7?`Ji<6k@1yq2tq=_N{naOeuFA1n2 z{L#JgX{wd^;F6`(PHLN$15{cC%AJhOsSCeTXjDY9A4QqU7N8mI0Rze9(MvRka+u~x!g2VsH+d_`>t66zg6M_FP3!EURYLBZ z;lD(_Q-<8RNtLfT4f$Gj^{T}v^=tEoRIeg>CPGq$V+M1kicEhP>7696i;O&2uFZDZ zx?4Lp7!H~K!zFZX;2%-_Ku)@UnDT9B?IRrr@BN_qKszedKY{R z2P0G#@|WxRA!pFviN~?*1q$5j?m~-dOV>lCr3)L*G#UihZ2sX9&_i`Sv?Sk|8#bgc zQ6ov^ms(lByqn8<;T~&QRedar+N}LWMt%!?CNi>&pI7j+iJ#~3a|}PnitiY^k&!L@ zT+h$f`Ps_Pc7AT+=Rf(mg`caj!ibFg6pNxSd?&UO3@bgK2 z{*<3j^YdALzR1r%^7CbW?&s%aG)s-Vf}bJN_xJey25x@=*2IyKkMNff+^Rovy({_o z-~3#U=@aGf`%PTh-Td@%30HA!AwSRK=TLr*8=Pw8N*}~-<=J$W{b16T6$j^KEIhLOV{CtGV8Nu&g<7XZ}zroKTT-to@ z#WGI0-$k{L;pbR>2KZUW&jx<3;b$v9+xeN!&(FtE-Vi^x@pC;tU&T|5EgE0ue>66e ze@O@=A&`VX5&}sGBq5N5KoSB;2qYnpgg_DkNeCn%kc2=I0!auYA&`VX5&}sGBq5N5 zKoSB;2qYnpgg_DkNeCn%kc2=I0!auYA@Ki42pIM`A|3JiZ;Bsz^DUarU%ZsbZ%GIw zA&`VX5&}sGBq5N5KoSB;2qYnpgg_DkNeCn%@b3o!x%N@Ic8-n^8RM>%12Fb8!m zL^3N(jd(}+vR_48TB5szkKRP>X;b46o458x-X7pRI$i$r;#7jFMWM*m+%rtn!tnBnp1@AURoQM}V= z-%S+W6cukX;<>$lHR4^AzT;`VJPtpp#+&=|ccfAKlYuJPW4EKYg% z#+0`RcjQB@Af2AdtD^Q6813b-(+D$se)wCxKMctMtBZ|-!R4($7dSxT>cAD<8hHueke;8pGg(n;3F+2;5 z@+MP!ff3K?9Y(z9uMu8J=_RB6izvL;7_U_nZvCm=K88=g2y=M>BfU)UdhJC$J;QsM zk$w)9x5x-{{AEV{+@FVx{4PpgWt3k(M)+xp-(-Y2{S*VgE{cEA zX#ZVN<=sSKQ+eDTQ+fAOe1lrPnI8{i{z+CnEc44UpgJM{H0S>iJi)!vN%>Hg(r0SaiNfK$e6EW3J3mE#GC8)aQ)`_(FN3mT0sg4+mHH} zQhAvMKf8;(6gB`XrlP+MWfuoG_vqnGB=2t+06V&I>8FP|f3H^J*n3<-h0xt=kiQ z|8bR8e(j?Lu)7%kqd{LyC@1`!(O;(Dn~n7__kW@h=J6mI@UEi#-!S4i{{w3ICU{io z@TfWp8#B((jYt#Sd<`B1D|I|Lsr(;lBXnkzRS5f=|qkaz0G{Tc9ez=j}N#P13p38gN2)ihLyWj^pco!{zHSb|w zrDBd3oK{w@hY7xl$)TyhCm95cqKMdR_aoaJWV;L5szMhe$YwB_8c;(`1*~nA;~%VK zR-n%EyoU?fTgi~M<@6~l)Xzgj8KG754F<-(y&}TxOFUp;+_5y!VB#=7j4$yo7IQ*_p5xs_onJ-`2HBJ z3eWgKJbX}lOzqF=t^Fu}$s^I_KSbpZOjQ04Oy$q$L-~JN99{kw%TWIB?@!SF>kzBK z(~bAu;7@6^^xy15`k*QOD}6{$WoqT0+lTZ;ru3r{r5C=0x=P71y>bl%miF_Aj7Vna zf>Qu{t~kPgK3tZpIAkStHI7zsdh*fv6alwGCFG??IqM@v#&-V-5~}umRAL>t$xspk zNeCn%kc2=I0!auYA&`VX5&}sGBq5N5KoSB;2qYn(LV%?&$wv|bUlIhK9(4*`B1rzJ z5ZHUEEeQ`3H7xq3fJZ@r_zh_AQNO>eh9|4P%hYsx)!$`mI+q&%g8JK`{i^X*>hBya zy;hDIcBsFtT0S-2)YRl_5&}sG^b-Ov;qhx_A$n^Ux()qIkvMBm`%aB65M+&?t9*>v9{ z)BWsp?|8do$&?BZzD3{}m-!1#6XBLglN}}O$4NZD`jtXX593(jzEk?Yd5o|pBz>x- z|FFz|K)R=7IvNE+Sbtwn zSkh~FDA}i#5@TEA-Kn8OIvqvm^xuZ6hRSG5ZMZX@OeNvn)Y^V_ZF_?WSXW!WS~;}W zu5D;-5ndZVF7i?9QQibKryF}V`v&8&1Y@0RI-1C>j>T9%-a*#Q;;e_9_|pWpBr}VV zHL(%E^($}I0O(%8kgEk{db5UQ8`|1i&uFag?AXBb6mE$R3?;UQYy10$x?`ZphW5s` z)(y!-_XeKVh26u$k;)}i^Ol91YMa+IHblZP0$s3tWjxg$PY#VFy5o^~3zoOUh9ec_ z;kk*};O02Y;Z$N?c%GHA`q9wxOZ^$lPK4N>N9j*+r92e3t6+$Pa%fQ>dmo8*`=^ zt8`^P`M0J*=imPy@-x=<@enJY%Eg*|ag9qejqq0= zYNA=|rzvi1_?i01zNU8vTg4h#8(YWPp%Yrq8IVn@;nOail(gysR2AMz7G(?B1(0P! z&^@i^@w%SAg`YcT#n-lCHJ}!VgP@Akb)_$vxZrMOT{5*qY19ZCLte5 zr|roqC)*t%i=pWb;cqhJD(S{hm0cfaxGma%f=`xLgpHCD^fCx6)VX9xc}^i|2Imcq(4>zqDrjKL|gDvk~uSBt4YB^f=TTYGzx@sxnC$SVhS z2Jn}k#T7!|zqmWuJun>Ml6`G#fD{V+QhD=?^Z?o-$k~Y8in)JeeNaTX#&|n82NGcDnnZ04Qk^>ty3^ol7ZP<{& zM_nwjVfO5K;aR!nOdyz^zcBKYj||?xr7(qYd;I2~^oK|o{E{jE;SC!$%sy%Esmo74 zVa2Su3r_1g`MmSr`@VNAD_^)_!zu8CZ~hcv$cdE~zxWIJ=7GNtw5)bJi8ha)D6&GytniA&iSjiSoN!Od$- zjVqYUFTP7v`{s$1Y~QjRc@G$N!~6Y{dT;5U~ZDn*DYQm^j#0}wIAz;&-%P1qrTxo+*W)D4A)gpiSS;G5=9{kAlK#YF7jaQ<;xVId#gjG`*b5RBT;!E?p ze0)GlkCQ#mj=si~nr z_qqgj8;R9dODJyltA8(9ydTTYJ}YmPqTAS%OL1CYV<}ffA)n>D*wlY5bS!;EFX%kS zTYTcPRE!6KBF#>QGb{YbG=Q4sEvC`Kr}E*|Gdu%datVd@_UDnOdD|jSOWMRNKb2b* zovZ1OeoHH8{xcFzVziO^l}#Ab?a65r)Mt88eZ56y{ojXtG*=bK%9V<5ON}IGoI@*L zXVubxP||({rcZk0F@BRbJ=z=BHZ-<(bz)Se5i2cBfiu_>Pju4w56zBbAWR}|ha3ZS z82iWiH@mk?TeRw`AB~1y+%)*R+c$i0iWfuSYIEOCx7PELFGcz$%@0V&GFc#{bLlVdtMcF-*mV9sVDg|^Oz=DT)kPje^I}rJ{8=qJ7~c4p z@*o-^;^%H(kaFd^i2rKJtM4=Q8YIX4>l4TRnMe&9+!4 zHiUUynxF2&-1Q(v28Llv$Z-NOy5!aS_h0@s`hd&6m&cV$^aX1BA^xReLsG}O`ufJk z2JE7wCJalJW3+j}{NQ~!lOb|#US6a9HkE>0zLG9bSp1)udfS|QpC zD}8IZwA?3}TeIai{Yo+6aLATVrL%l2`t-zmVw~3_y3aF(F|SFpnzek@rCl>6w?4KRzBGeHGoQ}cPLqu0hhKWy z4n%OB0Bu9%%YTEmUwoGAmj%Oa{SC3+Sd7P8XJZ`T@%O0QU>75GnsBk}h;za%&1<`A z*EFwO+tRqUGmmMg?EII$?==&b`7F;Wu77$gC=?r34k&+B?Vkf!)CLE+=7N`|nCurW z`E!+DdRL11HI4!2B}<ko}7 z(AxLya`n4&oqML*tO1V}r-RuTOHm&En?+T%W3)_4xqTr$x^C z?6W@kt}*CR^HoAO)$4h2Kc}msaV2$Jx>mNgu50UB(^_9ktDA`Zvd(~;UE49q3%$A?VJ8$d}DBEaE*p?{w&}-eW7n;NPlcBu(oxrFE;R-A3i@82|M!R z$pWr$ez?FVzSVrb7#lRKb}g+5K>_IAez5c1|EQMzI~@V5CJEuaJQo?|mp-z8C(^f4 zR_(4y8;2JpczzYwH-5T)sI_aV9m$C}ka)h+*Y!hZ`cOx|ys)YX70sihw zruw>*jTeo?`XkAa0UTb*nVv80%e#^Ai;rCYy3g?O8aGh;cfCdh{NkT|1Ni|R52)rF z^fHe3nH|{wi{k;+OGW$Gm#iNe80br-;`}VMMEs%=9I$PQ z{&KebRcFc{c^A-=#Y0l^5d*5 z=@o1rM7l3)pv7DC<(qy&{tUS5Yc5$HN^OZJ;GSMF(>1z0gYWM)Ri~I=dhrWDB4LtF zVvv=pBaH?mwQ)DI_hEsNg6j_EulD%HU+6y;Vix{djRx~u5EkkhM7~)2##hvD3mXex zml|t?BmI&Q0I>5%Mcbe&l4W$D-uAKo<5+Z#`G_&T1$H@{Sg{-&8fv*&{CeH~uSqFHL$q4!1EQ33icKgat1 zOccP{Ee|J$CO{84-R7yHx(akCv|IaO$|o}bZc`3px9*3`B*sQS^LINeqy{; zN7F4oX3^<@Zut>_Y55s*iCOJ8trP7-3r?pg4`Nk+n6K&|z#h~D){c6$%YONL36-}; zdo1OS>jAF4eS z<<@t5vpA})zcvd{?SI#`=>sF57FUtH^pNi!@`=k<7xCm#d)&&xE~9W+tvUh1PgUZD z;+OyA`VkEUvs5zbAXa^9!5s*-_zR=v#Mw6d(k*}DmIHl9hu8fD;xtn01_bw-<~M(Q zy?@5?Z99RlUwjuiO=pv9*Vb`FMuDe@Lny7(&SFyabEi z=$5Ks{0Z&Pom>3NC);^XuH!Fe`Q&||u$v^X-=@fmi}%BwN86&ovrY_G7T?lh4D`|U z4TT47v@}o4_ZYF8o7+g8RnB6ZF6D7AgHL&|WPe?t>=&OUG@g@DK6&$74hJUd8@|T0 zHP>hUmR5=J0c|O`cdrp^DK$9nZfM4a$x=~lU%v4d>nk<9=wh+Dk>2FObx9mIZFY<` z2+E=6nG?Fc@e}jKTIxhMEp#owfSu9+|caM7AqPW;lJ_m^; z^cV8QzAw^5Mq49g>RonFw^mkwVi461nn$emf=t6Azox??lJ@1hyxsQCS~=5HBN|b% z?eeuqr9ow&k_MF)mxDkW=suv$SolevCu`5SMIRTH%?@f2$qAZ)Qclopzau@k|f7cW>-JF!Dqq|%@=P)UQzMj#DzAJAq@{3P^$SNTc=aFMT-awQ9{x_7UC zenhPA@)h#c6@Rl5=aC6BO#V%rCjI=k*Golz*EK)Hws~a5Vw=XJJ_|MoIkA@`4a;A1NB2M!-0&rE#m z<#rJ0Bjl9_J_mt5LOz-J5dUb}7ZkPJ20;AQFS&o%OrOf9^qGu~HuFxDey7Omz&U*EEH4C5`8 zw*6$_9}^pkU2F#h@SC5s z{ir?ht$p3`1$>*(Mw}>qvk9a4Lba8;oC!mFc~-<5-(aaH_{T6oJPRW0K^ezWOac zEN`JTe3EyL6bk5HlirdSLcY@%wY;k3`j~@OUVJ`syu5NQuPQMZ`N-$n8~<%7k)i{yEE&RTP@ z_;=AFQJ=*t~+S?600==g~^Z**K<-^hz z{nhI4Vt(GvIDh5LUtE6}r&sRuqWg~k4b7K~(<@hcEjh&6>m_`@kVpB+sZH1O z+4%%{9!InL)Nht#lK1-(zs7;#)OM(1Yll+dxcnx~ER3hNfAdfRrxp&JHYXXze^VkJ zZ%y>X6RU^;`Ni6(0hcp9>xX*c<(+*4@p2Q}a-OGh!Ztia=)#N6IZE{n4Te(y4M&pm z${XUmDDAE~MjUN+-7y!oGhYx;C|#jTa+-u)}#%GjSj`h)&!-gi{dxVwn97ZhFNVJk+WdBSQBf+dB~k?9c#x|7i)vr3VS1~=f4eb zBcBeq5==dZ>fkONtQoFr0nq`!HvF{$q7zi4GnK{J%CxGg2QGu4X&AH|;pgGfnkv%X zdpV`)JmmzwQh@E|zZ8PvNWzs)Xr??+XmX*u6owGrLR+2`Epjo>M4WNNx*hlr^7InG zBqmc)IC;}D464;4>>5y^AqPCXV_L?RfufXCadvwfzU_2q=XtiM&|#xNewZ{Nl|J;C zM2V!365S?crEb4l$~xsb8>Ripn<}v%*+U+R^UU4#@q}EZnqduEeQQfg>soV@0fuyV zeRM7_gFBMQcS)J={EGP!g$!MFp}zTP@@8)N{vm;zIJ-Ub_^6ZTed8zALq%*zS!ZC= zVpEP;B!xvcd`T)_376;Ua=+uLRTY`;AIQ``ZNV)f++Vh#1MvZF&2^oqUwX>>15|SQ zjRBmFy|Mme+*x?AKlbYxH#hw4($>#yc;LZrJzVf71(IFPFL9NLe(~q$;p+8Mt=~O! zB%avbJeZ0ndSl)3i2a5D04>Q}qx|Bth~}$xd}5-F9m3USc6kwv*cPnjFEDt_xHGN7 zDKQXLMdsY8(y~n7`4#oi#6@QyjGR$@%tTrqLvEk*b5#{-`x7`O zv6LlGocBFdnpa6i9ha)`y&5?yBxy9S%2%e4beZwN_n+B&@86nto&34aU$c8-rII+= z+lfk6;o4G&7{;a_Q{1H4Te{|~3~5n{KKZAT&+q2c9#my-59(^$+nXEPyVlg6gN1Tk z>((|jHZ`wpY*0ERS^~M-M)B)DX&c6rf3ben#7Cm`~3cX;s1Toc8rDo)!P0M=xTcVk=w;klsF#0@`s<7pOOEa?MF2C_9JI` zH1@W{YA0_T&upKE15xt`=no$Z9H2j@MrZUQX{c`zO5-TcN2!tE)~h@`<~x0HK9iO{PZ3QQcj9~1a>YT^Wbx}8AF*Cc!)LfH(YIA@t*0i{!pr89u{W<{ zHb(q3eYt{{mkkTx7uh=0*E4@!WTbB}g>9Bysd+gphe<=wFa7v^qDmfS=Wn#%`<1_| zD=IKvAn$XlJn;NoT_Mh|<4j{q|KxCWcz(F0ab<1YIh~DRtOC?{PS!zeFHLtmIlROz zpe^z|nGvP$v%IS-M1NV9c=iH^!k`K~uQ5a4_-XYeDmEFfiVgPk$EhkuYDw}6`@CFF zMjBK7t**>Z{)1d%6e}uNBDcnG4CPs==~FVzaGp&8Cy?Lrs?^52RQmh6s;GGLuO*`F z>DO=my5A!|CA*mD!lv8^L@f&9n_*rjX|NVr(|%{KA-_wI09xB-fWGQ;CJR z!o4T5X7+~J^&`pD&;T6;v|;wLaOG@%d3rL{vuxSLfa@FFylmOv@K7?7dTSz<3IC`G z<)7ZN|C|B;=$PYyDlldo(9p zS(A?-@ykE*KDC2ZK1(!xmn$5Q;Ng?QxFd$6Bs*fNJ}C&h@5!RFIXt=5&(H;z%6{p& zROoYB@82S=bEJU#;J~wsMzEG6-otU7AFj-=BgC=wE$%c{%zM4*bNOBu@O`dcg1#`lO>gEi6T$lKivN z5T|qHg`?X#+e|YJxoVnXy|C1LPn*-zZF)nJk6 zh2*4u68-2gS25F?>+r;wDe$lYn=i74qt`lXqPS0bFXs0%D0+mvn0Q-@svP7KgZF-U^U%MB9%Gv^(nq^WXrzzM*QK2bv~!^k?!$cT zefoY6zxeU}@CrZI^@0a-KXTO)Tm3x*`A42ND7Y64E7`j(mP|(G4&#?AUL9Snt8?Kh zlb!v_yCwX-g$QnxqzcsGm<&i#E7v2s;n*mk1982Kwi;#d_6|*LT2c$0ueNFBTYZJW z;cejh1m|-a?-n(nA3JR5grFGT^CNbh4B^|V7pK904#vpS>x7D%OrP~*Deuo^tRJRw z;an~*WEE^Y%*@}_v=JtazfA_Fsq*~qyi&9z(=YzE@l99xYLfQ<3;wCr$14v3{;};p zIP}_+rHj@5a#8{EYEN=jR3y{-*B`mQOt0G3;DXh@9isIg z%ZGIRFOT|<3G`S$M8m;qMEvm&@=N23s=Yku^}o8JipI|rK8IZWuda~ig&m;&2+|Yd zi7LIE)zsYkDRjb8_8DHk{I$Q%ZzTP*HVyMI6WV3^%4MJUS4MrFzmYgdqM!?V^M_aq z-mTEct*6W3*2QRqR_uF^V?X-^(BrA!svf`e;^&bby7jkGo=>LgQ_c;eUwX*?r%Eqt z{p|u*_wwFU!lhJH>G*A*tE2zd`bSOZDbme6nYmS8&ysCirdP%oW+!CmhpHMxr&8GO z1`^{tN!g1nhq(!TUh4k}H^SDtciY6zUJ(6a>+Ib8W9#IjOL4xgYz{aj3a+6sCugtP zS+f;AEiUV_mtQ zGK~sS?d}4Ry&i}fxCMLy=jkGaZFRaRvBEU!hG&I1xl2>jIl+^#R= z!z24hVHkUR(vAL_nqS=J+NSISdRP0s-|S$^Tc7+@ZCiiyf2chjYx`p7CVy?rKH#@S z^1OE?|Mz!$vuLr{FRIep-|fvJz8_r4^R$uibglOQ>*I^$e1hl^Xw$~&nC%~Z+^fBD z@@Kwn&c%{B(K?Lu)9sPTt=xr9z3f1*w*wk_9llrMjK{T_G}ZkZ;nSe`Q3QR1TVuG2 zJ-jvEjWdLB8}X)OccO1NC6klJJEz<2d+W&_xo~i;-QC;Pu)ePT#mU!vB{BGcO*5|f zkI~=%<;)Kh0DN~LV?{8l@veu%eRu-~V<*DB9mm-m13SU><0bP{ysYSd|IIFA>7QerRC0uOAjCR#sG0RxYfpsajIanmbmmU4yWMQwZ-8 zyy^i7`7>bxL%-d6$er?7h>y0`j^<9>P|a}taeZrRdjtFY=UWkH8~mMd@-Q-*sW2Pl zHyLJ}AbiJJU2f5SzGGG6`Wc9%4XHOF%mpD4q@Jhp21a4>8S#Yyic@Dj}l2cnazhvYXI@7;La9u+=W!BQ2>E(I!32PhoD zJdam!h=}FS!r*R{Zh(OBsC1RtJ=8yh6MA|5M|7VrK<*1{B`LzG-@oI-Z~bpWSi(iG z|Adw*d(XNG0I#}AGN2rBP&^cG7_WNtcoDv{wtZz|Co)O(`yK!hKJ)SF^_#*{T;~#6 z8wEwz&j3M&#rL{(jBP4KotE{1>bI)zTV(xiWb8vvF}9dTt|_{gXK$(I~<#0G}@bwIv^pIX3Ua`W3D=G}ZZU)kJ*JyJu7?UjzhkO#Un&uqIq!qB+soc$(n(b?d6 zI(J`Rb6yMHqqVdta3IwHS~*K+Nz4H!)9ak?+b8*5sxKxlQG?*sN*$a#|{)`WNV!UD2qp}%#OLYmv@h5_qY4Vs*bS9O%?L8}JPs13Eb zmO=ZKPYdtI)ha9eTX7P{8q;12>C#}@a1RAfxdCa3FjUKl#zI;!xDP;QrkdT&Ls7}J zXyNI+RGJqS{n7!`r$T;NbF!W2S6YwdzS6_J#lwBI!(GfXQ?HetPj5b_=jOvo>pyqv zj*b_X|Hr>niVbW%@6*zVP6OUHEcxE0F5faPw89~29MES11OM0E)$T8>8rTY z`A>yA3*ks^lH6{FDOToGK#I-*M#S~Rz4OviR^cgKb(2MUcyD|=P%fKLqqZaVe8SP4 z3zVL^X~K@LcY1_p55jeW8;E~;z*l|vjU(sw_DrlydJpiUGV`W@C^?-D_V`8KD6N4p zq@d#OK)Xrzpb+N!CT4-Z)vl-CH$r^aiI;d#-CWXz`bxYhZWrlrKi$+Z1g=N|UtJQn!}Vg&KZcc4 z6e~%JZQua9xgA^A`1JwyvYc2HT+bh#*nodoN zp8G5PXqNQ#969f&$%S7kQPys9OyyFQr_lA*fuf|9#!#k;!uj!tC0EbHDj1^iIiNSS zX4E>h;+tBe7JLaG8dYq9%?n2>K6^O2b!R1y3qwqZbtU4XTY0E-*WjxjC2h5GDz`MY zq~w0?@vTLCbhA&UcvT8x(GP2)`XV2xEmSR7&aap_tFI?M)DjNm3yix9c9|{v#(N7+(Z0n zNq+D8PFhzzYG^ZfU))Y5?yPdxS#-LsL!GGw2RQedS^1;8pSFOG^`Ik}3B020+(Qc7 zRrqEurTaO}sXb}I-#VA{RE{6Mx}myh%j%V1y=L^JhRYlGD)-M0KRe~p^JlNQ?w{w~ zyLammzgOTl`cIA6IbWQ(`m48nxg|OJ@e`H%)X7Jj zcl3Q%)_&-oFMXlzGoQw2ka)g(+DP%M&)l^7{|GJ3q7>hq8)(K~5Vj$Ce%~DpQN1 zWU72y9PQ4ijLhBKRVz>-dp3!(5Atv8Kl0wb>_o=5_TeraMHtonZ8@h4KwV9ZwVmtQ z8@tvtp4GS}?F<1PG+Xadl^*KbvJGwRt!FgWcXn*x7=(q4#X%6Xbp`#{4egC>tsAff zUHEI`5jD0=zC5&bNShg+wutl1;h?UHGc#>NkV6lbg*O>BGrEe;9mIvWSGo(WanqH2~O{BKchg-40 z%MP7e*-)m&g#RL4er)bC$;it`%ydTjoHY_FUUEloZ20j_h)TXW=_|Rztb-9=VR3Xx zOH1wAhORZu9i3gB=d?9;H8i(F95}NftAZIk$2^UR-iz(@cCEi_`jRP92D9bHtR7|# zlIK;Nud0dIrERbLW(Z0m$Lyxnn=$3zwy4!vp7t65DVy}HFBEh*wWTA40pq@Yd%!$1 zHkSM>;fID<{Areil4j--Jvw~HLYTt|Ibd^F;KEBVfa74EhQ_weRb6MdH+MGj<4F){ z>oD$M#hG9|_5JZ!f{%&A%T6MR83r$%)xZuX>O6#KzG5_;PoQPeINBC=3PuTN6o*!e z(+!7um zdVi7dCACR06Q3QiBtui<+WN+>rZu%IyVka@1vl6$doRtUc z)(vApMvpG1?fxpD$;p+`T#r(rR#;z3rX|HspaN-}oZudW1XJ#GbmtDnM+FAa#}}i^ zG)6=tM!onGqpfz zaug%x0yRlMbNQRJk12mk=@1!r`LZ$*8{X2_oowqHj`#Ns#_0$p$kE~Ckl;DHtQgjz zS~p#QiOK^|zbY$g>;fW_0<<-rNX54a1w*e`x_b`QN?m?!9yy32KFb+3uSm{Xq$fm& z0_Dg6j*3I`eRPW$&4M`VNW?j04ywmfST5r1*Cx-yG7)P@ zjNZe`frZD0FW)tw1XO1J!X+JU)mwAUfvwzXH(za`$qm=ay}3&R8w(>@tDyYV?y=FE zpBkPcy}jzQM)5IM=RQ4=%+)y!bS$M{)oJhY*cY{Vto3=RJ^+|T0ljz0*)uH285ZT@ ztB*M*{)*aeeaT#(yEnDP6GD|pZ!^+7bEw;1O$H>MGbuZ#iBq5L3Xex1uGr-u6)pbC z_BBR&>$jd~z&V5ZYSAWd-Iek-Cj6`Tt!cT*BPe&&Th~=P>6D?9z2)94E4$ukGC3T1M^KzsS&GnLAq?V*RV0s zw|bG@Valp1DV-{lKo}c7HTtP?CO(I(KDUUUa$wbGoBmnfKa|8URF;w7G0|&LwZ6dE zq?gBnX;-z^zGT`4k_~mvh-1WGUodQ&Fl$RdeIHCk+Av_>xE6z&=d7*oYF^vf*nUgk`WJGQJ+2tQBrFX(+DV%8$jCmBmy2wtsM+WV+?q!E z`!R(Yj}OYhkKSZ?m?pL|(UMlE(aN!QxkhCR#_slHyC5agi1waz^3XF?vd;;?oEbxf116Sx`!Zwa$-<&-RsR z@iVOnqa4zDIifzTO;@Y<6-Msd;Z_rdrhQ2;Ceo6KfjBUhA&y6eS7vZ?cSVb+_UwA&nO~&>}lU(T;=9>Z# z*Av3de`Ok)i|unq7XLBFLGkPO*iv65ZOXKH!m_tOxG2-Et5a_ zDHt&wo7~C+?zfC)4eb@w=B1k>9{erYs7#I7}Ef zPugFsUZ=l`m&}mUQ@1066@-ZULwQiI1A@~{`H|^($lnIz@KW9R*GReI?oTi)3(3#hAASvxTX@r+9dOZK2Y?wT~Je!?tlx~#fG#QWYO8Bh1C#|!h^qlCGAx-i3s3DXRyK0c8-{PRbMaBm#z z9{%c`nZu7tJT^=GRICMdT93zeb?c)9vZZI>H$gT%Cur#I6Xo?>q-l+ z;8V~oN1z+2r zy2Ynx)dHGXCu|EuGsDNA8QULsJiJrL2JcMaSy^xXCF^w{Eb2%3@*tN(hpK6(lDDlB zJV0wY=tOBZzR~IB2H{p-Ni8`&yu~LLgxH@-=?nh0dW;qfMc2yLnh?JUzHj1^#@vp< zc1roaL(0F;N_o~P<@)qeQEp45`${Qi>!cZz^7Bhl{v9pbk=Zi*aZ*0dK3c@{6B*Aj z#|ZnQ(*C5hpDEj;f692jDBFiqWc%_BuXakKo&NcbzbE{0}JCaXt zmvDO}{(qI}Zj*FaCBxk>>Ggp0e^}a|lHp#L_O~US&Xwt2D($OexU*$^gOW~1dbERj zp7igl?-uRTG)X_@_o{67i)FmZeaDOUU3^1#eC^e@Jo#4DRacq)$|mp;?KD%|W9|KH zLOWH9cBc#N&?VG2QUd;}J9@t$_B< z)Ba^@*_#ntheE|>y2VHIA*xe;=$;13Sr>PsGY=?k+T&?|a*yX+j$12!tx~q)a*Ic# zNc&cGEy13j%;DO34jOog+cgDyEbjbbrLT6L<{qEQnSFOFo%+xU9wt4@T_5s-U&GYN z4I*Z5xJs2YH|xQp>yTa>%5^0#SHZJwyfixbu3#@*^oVkaM{!Io_8HfLW2k=D;n!*v ztQd2NPp=zvt_GbvLHm^VMSM0trnxN9;B%>J*CAcSTZeNA>q=`TgcWT zi`e!o74mjenx)HxU8P0iz4nzYB0ammeP&dL5aFHvH164nmHt#i?9WQ%oyMQ({!mM+ zr*j6|PzKi10G*NOM5DZZN6RwWy&OQ8>&Sep&At-3-r_de>p`F`zQ6ycUE%-XnUupH?#1bkKdhL(c zPi(o>BV4Ba!wORL`}BEVmE-jD22>a_Ej?AZ>Su}2=rzqas7IGw`o4DZ@8H@ljkk+O zkEacB41sFOZw+`$J;V>x2c=$T3Os3tr1jC%8=`Z$23&j@_>}6C^%!&Bb>W$VUuwMZ z&0DXS`|j)iqWFY<5? zdbs1rQ2y)|h8d3<+jP256mZPxj9DQ!#!9aJa!Ai z%@nvF*o;}N7TLK=DxeX{l{+Z zZQG9B>*ij1>r1b@xeu2;@rIlGuGJN9yScNKk^gmd|Jpx3{>MKYg?fbiYW2Oq!#%jy zoo=tj|M}vpy)Ttre;s4*1a_UR=r&{NH$Qdf)i0HO;J?}K)~CMtigHhVY+mu&<#qo& z_RhqMKQDUDgnzp2tq0zD_){%+T)$+lF?!;O3jWFCe{$i}%l4E#{w>t^Uranjx&NT; zt=@udJ!d?y^v!#U8z-6YyZ`a{r7Ze#*_WSUJHOrcK2whM{C7>uoL|0J_QaEj=jVkp zR6H||Iq#LfKl@VICvb7VJ4Jsn2M6MB4eg%zh0#@)l^-#3+9i*EK*4t&*PZzEwmoHE z`zz@7@R#N*_rKota>pf$r?*_S`nSuj-1;BpftCHE-`V@27gjbscJ17E)sOy74Duq- zSKqVzxu?JU>oYDt^X$9+R&@;>J*&O)TQwb35Goc^9RJLm($|ZFC+sgenYu@?A-)}gk_TIjaHLm&ecT9fh^S~$Z zli$3xrKe`?Lx1eK`p@M@i^(oTw!;Jdk1fsr{{1uewSN5c#aF%k-^X35(tX;4J{Nez zv-8MvQ{PMNDSPODf&bLAf286$ZQZmVJP>@Y`I;rayz8AQ515^`Z+gTZz32}W>t8K7 z@m!~Lb(|M0=#55L*`;NhP?{<+s4=f~+&-cla$BOdNgo_y1`8@>}+{i%6> zn*H1RA2;jiRuA}#J=`ySbA40W=u2e}eI4@fQ;E+hI&brUf9bNhCw}kEmuo-yhv{4X zc|~PV!Eg6~e~*Xz-yVDUxY4pJRy=t8{U5mJ*RQ>%;(7Xg)7omLzPt9b&#(E?<2Ox; zEBD8@U-nA)cfj)zJDv~pf3%~irMLEp6TUHf#i_5{qTrh!c)p|lS68fgXz$lvfBWG# zOg!J~fzKyzxo+-^CUt7`k85K|U_eRdV=;`39FFktEzdF7>=X&LS{rT^` zt?rqHt&jfcjvF=~ch@ZCUeW%OwrgGZlOdc;Np&5BDp!?HHK#zVDXp zIL6+-T%fv>DNx%Jsa%Kg^+zwzdd9bI)d z&;QXAr~UHn+m-vDAMN|nmUWk}z30;ZT>ij?&wWt2pZV{BM~?f{eXGCp-8a7bn+>0M zO1UQv|M365=bO7%J$B!u4FkQ;{X@C;ee$ITTEDTq{<0rG{+m~?PnkJ*=C|Kl_0F1q zuX?2KjxG1s{q_?I{+;RfUUdJ^?56uKzWK2`FYQ~Y+*85Rm!JCV`o_oR-WvY-Z$I-5 z|ofdzxZm9;y+^%Gykr;w?Ft=;VoyIa(?$!=l=E8(q(HNtor@N*I)SieJY-9Hxys+*~gw~{oKUk zs$Q7*1GC-v>=%Fc&P%ig?Ql>5$iZ(Y3poNu@8T7AmT{_wG1-KE^`z5VF(e^KzorYk;i z(#fYs*O>b4-#***tLvr(T0Z~z?vm64jpka`3Eh9`c;cZwWgmG9?b>nw_>hVxYlr52;xly*PFnnnna>%! zRDOT=?HiB${>neKeC3O`|LoMamYY+D->BXG$dCX1t@?)^2tO1ZeLxN0vCB`pfADv6 zzSi{czn&cZ*@xTE3X3OlZRz`~ZhhD4hj)};*!7v+o0R*kOBzmk`fC$fcAodCrRRP5 z&EF{ZJ2!ry?x~i?>mU1a>)}6pu{@^SulnBIcm5^u%e9xS``ymXH@wS~s}=W6tS_7V zdf81kg;==c_Fe_Q_ocm8U9)3P*&VNk*z$_wlgizzeNq0q#fQl!j7{M#PIo!X#+>e~ zz$gq91t&;j0u$B=!U#@a1>AdrFkt7_-~?_U9Kus@geL=bX>x=63-h9@gunEcCK8@cfJP12TPXBL5;iWSqyZ z?9wDdrZ4;r2`^1DguievPyOq9RMzX-4F(uASH3x7kxOB06l7w!ehF3lo6|04Z>z`u~2$iGUT+mU}^mnICA zzVJ7szcgV;f8k!B?9vQq=~KGke-XblVaV{py+GNeS!jjl;R*~1FHOVr7w!ehE=@{M z(Vt9V<@FC%$sN3W2uzfJknCiINe2F9{ipE4o!5W3lU4W&cdGx~E=?F_`aFKB@D!gk z$>8u*@!?Jew@VX-3NQRo;kmywVMu@Bj`}a`(ku#U`KSEBD%0mCS!Md%PGUf$FHBff z`obR-UZgKfSf#(Pqy7uKGy_`tJb$S0BD^qRmEnaQ^2-9%-JM2R42PcFkK==iN5aHm$ zqN0E@>ANTpD0JGDJNX3)3yp04PIwiL!WJ4v!C1p*i{F`^N|(|$3ZNB9x`ZYcPb!%_ zWvZZ_vQ3%FxZ+~ji8qvu;3>T2Lg6i&@VDD7n@CTjuVNJGE1L)(DAMhg%?hvk8->cI z{OxvSQ>MzlfL8ezHkE#Gf@P=t3!C^A`M3Nj|8{@7UD@pE>)``M_V9MQvgzS%U{_ne>=ReIn&p}2a4?R+wH<; z53j=;g=EwH?RK*1b=WHZ;z@e>lZ{}l`Y-G%th4+TyeNONsqz!JD7&&*^bzH6g{KnM z!`to3ria(zMg7;yNBAmuVbkd&N?cE$>Zrn3i4|Q}tiLQ~vG#cDt}S)3@R$ zZ0zCfc44!J*Ws!D+sof>Cz~omQNAMop@};GlTDSMfL3;8v*+J}7v-vjrjkDqdE!3&#?pBFMj? z14Z`u?RK&`!|U)yq0`@PR}xMyKRrIh4OIH}`Y-Gjtl|$*;tJlfDSt%^VOKVL`oc!( ziSj2{6<*YMWmh&my!aOIs{Ob8#h0=RQ(+UOrJuC^eF%K@OHbf*~9DbqW#zX$=9-z%_>7H|I{v8`6nAeTJm4nMOZz5qQsTI zvg!G!*p!_x(eV-OkCmP%e+ypJf6Gqg?+mZUFWP@AzpTIxPd2ywTlkZ&m7b9QmRt2N`&0XG_qW?iChIj^FMmymYr-W4}!l%j`j4Z zj;i=X`CE1htH-D6zk;XoxBJ`eWJ^!qil4Bthqv3w<_xdHQ~kI5+wH}ZtPlXri(UUyGiq{FT3`|GGbYTXy=g<0s1B3Qr|$!BhIWoovqVx<8e_-QR8xP0S_# z_Vj6dTH!}=+vBGkTmEFT``hhuWYLUI$Ui;27%x)kQU3M#)VPu5Z_ke!H}Ud!rdK*; zO39Rxl45#Gii<ABvV_SKrE1^dvueDZCCx{<>YkIKwNuN?+M2Jbf!WnF@yDQt2yy^2_A!gfA^A z36+FG0eVA$fJqNIEHpkJhU!K2n;W1l%?Fa58)PRdOfrb>ps(;JgY42IL--5#@%gav z`7q88C;PEHX>IYc-T|Iw%@#h*e+RSwr2$9>Ie?_} zCoeEZZ1%Xxmj6Rx^fy}!I;`7ww(xHL6c0T+_;2In66zu5if0`>i-e z<@b(%3%5~eS`Y>Dv0Ut5Y8}2Z?Y@i^;xX`0G)_OVlcWARVG7`@|2h44uoW!KN^y2` zfEhd{JH*r}lS?KQPYg{676l58bQEZmmquerOE(JBBT)HQrag90b49o`6fg>u>GY>K zDQ-%G(sKG2utI}YDNYPcDxO?2Rcv<9fTolbhl1E6uF6;Q;-AW0nNEMFT~WZxbizCB z6W~CbKj>VV0A4!20i*8egoB&gL+NIE-NLxJsW>QYdI=ACl!P0&&5gpUFq8+%3+0LO zmhI7b(d|21_#JEo)A`kD&lcXv&rW-`@J@bGe52g6hIiDLZ1u+(pQ=Y*rW4+2SM|)x zbizCBD!*Q)f`3GwlX;swms7cKiuHtJ{ryAT{2naj%Gj=j6IT#lwVfhN<-;A7WgnV5 z!uE8`sCNtZury6~^+8A;0#B*LuR@wDq}e9Tjndo~sLuG%j4c!o)%neMulsa}UH4Hj zuA}^DFuMO`;El%a9n>3cRO@rBq?>%@cvd~9QPtT`Udb@$2 z8$You=}?|#XfR&5jUs+}h=MkJw6Gk&@k2Om(_pUFz6n&tOW(P~tLKx#P&uri4@bP@ zM30JJmAr!A=mD>2NMXaXC$d$yh1d+d*&YhFQG*-Sz9}rlr5-(>6u;Y};U57!`#9=Z26z>o^FLtKQ-Ny%BI5Jz(|l zgwH)1+-`ik;X`q%G<19@olFmf3Eg4A%+S6mTzIZKpN@LOt8k#Os}Ob@;=|p4WXq;%XK1xtQA5H@sYh`s6otA{6i!hluJ5`1sb?8=?uRB7n= zP&#hUBY;}Pc4;t9ToeujKZ-O)0gF2eRd7#}r2V@Eg|PZpC*l_)!{e_))rUkB%Re5tRq-Ky(A;ZaVxnq!qb4#Bf)g zC%p0?oK^r)xHVl5yYh)9dC+%{Mo-0Xzys~*m3+_Z=|+;tnThtCloxi_3#TwPj6VZp{>33 zjK=!Tjtvb}4VBSwOMGA`u{~TXCQgSE8`>M&S~qO!8{CjgbZ=;n_n+OD+R_l;)I8Wb zB!YCr28R3N3x|6)i99TXK`%Y#A?Lz6{yR>AaSDu6V4MQ`fC2?a2iVc=M-Csc@o;|k zM4CNluwc}vC@2oF;_4tPjs}M*S)9k1pL?Ky1ujQ8GV8SPUhz2K%Z{DIj!i9M$M#gS zV>_$ZvDHy_Y(WJ(VlUQtEDy3%KF{0#$P$>R<28!UpT^kUP=bYxZxpegl3wJQ2Ze() zXU+<;sRavIXf(Jdu-j}@Pn5%Mn6KguO<^NJwr~agY{bv}^N-{M*(JBKVJrh}JXNZ+XOZHNbS(A~6)C5+9^j9GD z5958t#1~o>{FsYhK{Ujoh-(4jniwtGTR3b~P<#c`Lu@+Sr^9`E^#nFOS}O9y^BF=u zkyn+^359IJ<%JtXNZ?Xru%c9mwe?}F2XE&WEV?<}RQWjT(oB?0@Ij-3$^+GbKO$aS zSrKDw5#D>uctMqvn>&IzV7=0FrfN{BI9K+ZVSjK9wy4WEXOxfk&lY%1x?1=Vh!(|&wMOo}5f-jhtd;J*ZG=&D=JDZA;B!lM0SufsKW2RAxluJrbVt{Ohw>#Ve2lc-bzi z?9$yp_Z(sM`gaY*x$y@48vNY;na5GxDFshWWm6xV#Oq+2#HZ}|iR}2E2s^&|BzAnk zYO&{$1L~4lCmcL7lh++P9N~NU14PS>AB16Cf-k{y8a^cf zRwD5k1upX!8tghAM#>zA+sxxi*m0>z?6{s{c3kH~c3gFc9Tz=nbjIEzc2jzP5@9#K zLkZr2^c;8=Obk$+A60dJ)^eP+|4cDEh3ft5lR%dc+xscTj{Y=bB@Ze-fC)baI0iW8 z3IlmVFfM*GF`sl;b(kGiFoTth7Vj0c29B4u@qP-XLe3J)CiF zjPe8#IIt&pzY%B*8uzlTfw~|H$1Jl6CJ%9%UJjh1li7)>rR>C>CG5oN#q31r5|(rq z`MVlPB~;os!SV&Xq2kv{8N19_MqK-IW7+8OsE`*B4mUD(R4fo^2?U=D%rZjP8^%4M z9~ifXPAd$2)iBnx(O{h@6EA*y3(Mw^_ox=4r zSnBZ_Q*OLC$U;jE_NejwAiEJ|A?sG#%yQzxYVcqcJFcLdO&cxUJ7sst@Fdh#D%&d% z{9F~^^{{*#Z=jfRyEi)d7?PAzPBVpOF@wAkQ zGv`la$3VUv(-Q_C91lJ?hLOA=9434v#9pRA5Z0ymJ|1tNc;XRg&6m;dlLnh|xM3`3 z^Nhf~?4yA?;|gBpGnY(eC#CAyNj-J!r0QCBQo*t`di5Z#r&Rt1V7Ux$aLTSrp`uXS zvkacZ9ya}->{;WQVBo)v;I)CXjJ52e!6u{9(DK?Q%I5@>&uo;>ER@etY3aR!=${jL zVUeG}@<&RKSC*a8D~<&{qy5kuZe*o@F#;Qcb%BTxVOwF=1udE?n(_QSf&4v={Cyqy zdnhfvhKEAzZkqhZ6KR2EGu{v{zg;!Ewjr0qvb)dyC<=5BV{@NpUo*a682D8nmiA#Z~K%=}W@0L}WO?x}|Oz0bBMrY`u;8}tH0VR5=W(b~L2%cR4o}HV0B2)F?Lx|!i!6%WA z;QMYfN+o!v%ruN21QJF$>j$Bz63parMG;pe;#z3N^f*zZ>y`p9>yIi@)TnXk!%b91hDoyg|;#H*%&CsqA1!3>e1k&>(`9 zg#o1YHW-&gQWKb#=Vjp}7EYbQ!aWOF82l41h_LCS)AlM^lR~snB@f;Q%S}8T-nK-k zlI-NaH?kw<6td@yj|QF!-i`WE&MtvCxGr!VkwC~Y$grN{Aj^)0EIZ1SW#2<|PZ1&@ z(`)$tAG`t4R?3K{JZTu01a^VhhovMF@y$bg5yW>A;ycld?}SG~Y?|bya(pktE68s0 zWu;-9V+57}$CRM?%*x5o%~rGHJI{cA)(riu&Z0NUo@DMNh=F?F@XsP&6lwbiji>&x2RK173N?!dWr# zZp=>0Q_0sre#MuE!*Vj-U@>ojqtsCC-bB9zh<4f?#+`w{zlw~$VDS7R15{Ga;G#m~v_Noy5xBB2 z)E1amSo}}4y(Pal0&h>j&s(8wfxAne3w(K6%m}=DT3z5d09{r%9kv$=k62d{I5RNg z^&|db%=k+vkeX2w_-5$Zz>ki4GjOM2{DSq8I56-QHoY0t+wNRn-QH-2S496A~2l{zK=Gq>&cAr`Z3{|YSM#w+CW zo@fPFWoNV$xbI-o?qjVXL{PTzZTx1zt7ZzDvu!4uwdE*` z0WM}!MD!gVIc@nqmQA2+VA+hfwD^*vQKA~HF4Iwr35#gSYmH^ptj`jXXYTXH_YGiqEwH?H%Bs@ar$kC3 z8kU!oy5YEJ51I{7FTt`GZ=iT}DTX_ux1kRe zD`X{mj77zPuM`^V3fbjSCl&3&Ld3ZMah4;_xoI-`#HXNlskj%w@-Dn8?pha%OnsUXqrsukDE;o{ z>{N@QntrAc7!IBv2>h@J-Oj+<#%|u%uj4vi86RIOVZ}EG`B-!vq5=A=VYK5lidO^u zy}@?lSOY46l5eZg7M_8&uo-QkrVq(7ybb}21&^@EEwDU~x0K84(I~~YYZJ+j9YWXL zMD=0M&E#HSJV%zjf9F8FCM=m;XuKTwfzcVfE40oCJ{c^=tytd7qLRH+eiFmO#u#Ai+3lp45oIjuBl5qC@hEZ7*{Au8(i6P)z7y4|; z(h%@D%?OnTnhoGuLk&)-u7u|jxYbN$ku67{UZ76&piWdT0uL`t!|x5CV~#QW5tbvq z0b&`i_VL5_S7}FXH179{SDhWPW80s^MmxXXW)k5|VxIok$)EmsPoLCLr z3Ub4g$g)f~A{p7IW05{sF2)<+>56jP#Y!Fs1b%9?6th9jR+(}mwSv-q0OCG6nMsXp8-BJ z`U2G8-EWj!W)zo7%4Rb2|~=O_fi3x0p?iP8@}<0B#^!VD95}tjEF)yw~7e!^24T zo)C9?4DK71JHim0-3^R~I2hp5;sLzV%?;N#1+ITmxVphidzR^jw2>zYDX)J)~%@+QI=Qv)Ga+pt+=Y0!tupj(u(V{SI3FP9Jh zCDYss^EW)rQw}4Xf5%=mW|DlMI(qZOyIb|X@C8$XY|72WqoKX%FQ_!G46-YqDPvP#nZ^RCQr7l<#%{yg`5mq7 z;m2J4pl&(f3ut~f!Sf;V@L(}}@RcHV=QBZe80ys&K5vAfj@ub~0q-MbI;!4b{ugy4 z-5>SN5vHKHh(R?N4Ge2@y4Q!;_2BLB>qzSr)T3u6v0>b5{|Md_pI3Q;34aEE27jvO z=`g@YgGu*?M(Bt)8xQ|!YN4p5&1*a7mNU#DQoai=K7w8R4r7To z3RwTEP|lt$WU)sAY{NZ8?Ce{Eto7>u*WS6nM^#<>f6bE+0t5_@0K$MEQ63Htl`6>a zG$`5;BBI64gk(Y@AsHtF1VxRCN)_8&iZ-^i9SCaF0MVjy6>YS%O)b?F(WX}0sihVz zYKl~8wfg_AGiQ=vk|1jBz5mb6eDce0oqhIm?Z???pMBQpCetfY@p*#R7=xB@tYguM zaJ){Kw6j+!wl<^Tj5x(;3ytCCpR z;?F;uoDKA|*5~lGsz83mbNGS*QuSX}#xJX^eZg#poJ)3#w;y943;R{#`&fcTOyo7G z&W&~80|R(Y)}Jx8ANlRux(+*D=K^c$_1sl?QXaL+J>9I2rb(nzLSHeK`*1i>nA+Nko`>NRX=CQ z9cD9bqoc+hTGNDOtXsrx{u?x;dy`CIQG1g0siDqaoSgF8wABAfO}jI-*K6Hb19*Z} ziXp531g&p(b6#ytc`J2O+Qq#tPTk~u%c_CnZJ=%cM7(a}>>nilqeJAvgF|IzvrEox z942S&8ZP5&PmwXzBV^RNkutpER2fnXU65|ZU|NZ$h^Sxa|` z&Iq;M=|0A9*fgh13$x~4a0>g1hKuW3tLy>(U$@n5vRmu(8rF^D&ug-@?QV(ffp|&7 zPW}`B-vA%!kv%1y@><_Pwhrj4FCcpA=^GVdEur3G?KsvCW-vB(w@CLTvABlq)40yy z|0EF9qm-2NOcx`%brwfy%KdtEcHEr!47H>EUE9t~t~R zrML93>AcbFbjNhjnvc%hwTw5l)mhf5%*BgzkH`r2(hZjs8n^1UB^I6Z>7Oe7b9+nw zNj-J%O#JDyU&qN0HPbXZ`->?u062S9lE>3Opw&f}82=^Z*EYG!X7xB1;?e9+-o)$1 zRKkgW2LG)dyogZ;rrs{sbCZ|y|0=LfkIXsN7`AWWSsE%fI;2v+!$^P}2c|v^8W$d{hdtYv|$?4!D%{jkeAlWTG z#tDzrd9m5hiUI&`*+}6E{ zevQj$^I^uVm#y++a7fcqcaZFs#r{soS$LH}CP>66$01Z?rtu^WRF( zC%+xkpGDU_Sk-1vpoCf9@P=C-^gyB(XiggxKM zV@L9FJZ~N8E6H!-nDD0N#s3cfKcBv3hfM+?<+p8RN_I2L6pW3b+*`3ZEfeIlhOu&A z-;q0&m*m$Nvl#D>9hbXF1FPZhfsL(kvUHu~)?r(U>&@6F%r=FU*HD{G z0f!RePIilprAEH|)4V;5(dgJ~?%Y?kE-&W) z=c~)~dYh~OMH&x3W4@8(*6up4<=|e+;g7B180(NrSchzg-8&ia3}sJWkyZNd??pT9 zDUO0Pi43yI;K4R&jHjjT|A^CYn{={GUX8mGf%-evjXq3#$#GatNoDUwZ#iYc(3X>< zgPO7$jQ3q)I_%f+oTXiP;`P%RchH6s+wren({}ta|6c{Mc5J^uXvv*iUq0r-`1A5^!)ASdoF z*?8SLuj`->Sb8|6#{~MluB(`%-!S!egy*#TdG^4*^mG*cbQC^e$Biw)P`R%t`XLOR64&qHNZ&s2Y z)$>(GI{q?Eqe9D>T!y4$;~kfq2DM~G2Q>9-I4RiI-^Z(O{%Bl}8*xc?1N?K1F!dkY zL-_4?TCLkvKUpJn-J>7t9vRaA5o6t>Nmp5QAH)avpRb-Mv@mbz24dko&d1oo@jfSv zycP5^_Bg0VV~&^0wR2LMM9;U$=p37*6V5otzxHmd4&h%q@ZYB|isl(W-$~u2?}XUu zua@a{Bfji!L*F&Br1el~-KW>C&cZw$3-fd6`F3H9=Y&0YF2}P%(uzMP)U-Y@!cqP| zQ+^Pu^h*0C>w#m|5l-fu_=l^H&vlPhPhaf!AaiPsho6pj$!;CDgZ5*1O9p+rpH0>$ z#Fgw8pCiWRW zvHPABX(_RZbGc1C@i01H=036a0iGd+Q;D~`aeg3va^ikSRKp~@CC8O@S`Qh(zUKkD zKArR~kKU74YUcS_2BpZLf(#jydy)*A)K>-_&IlUr15;V2WloE32C|kmkZb?I3H_tS zIb)pf$=XsHYfC+(U#L&aJ*ht%esvBp-|8MVz$pVLm%e+c??yG{+vH_1=`W_fM%rbh zmYMRa`@3LD{G85xIM<;&@wJPKgp=K3?>(KwI!s?<9Y%Ffq#5Mb;aJ*HSx(Tc&!ANF znT9@l$e;-WTKYv#YT(T~V?Fi4gGPC?bKxt1wO2h)JMBNUTKi}hKIVDb3ia#1Mtwb} z=lXPV|Dk=gM*T8Y)xkf~5XM;7kn)_hO4vxU!3f`vXG*X4Y3Uv9+0>(ujHb4i;%HPq6-efs*WT=%j>+wQ82xz&E=R$=B= z?8S(F({D@9fC-5_@7=3Fc%+l|Fq zOPWK{*bqq#1Y6&y9+x8Hj`WpN4xGezHBeG=v&2(slgr9%5{boUw7+CGV;;Rl=Lp>y zL&r#u7WNM`#h*yV)-V@Yv{vvlg6(papE)1Kug6o3B{qzC>40!Ao{_Ov^L?w7gQ|q|lHEF;%Xc)^>Gg^0LE^J? zO|{ilK~ft#-Ze<)Sc~6oeO@Zr0S-!lIkR;B!YU^_t?wA|8|k)Rn@XM&WVsn9CS61S z47R)GX?lB!o@u%9%YKQ2zXGSR`W`h_-#rs_Hl=%8(|DJ0q5aI!&Z%kk3hO$`n67Jq z{Uv>0TD0x0SjH}%MWr0ckl@=^seOlcpovm{I;JJNWewFh2520uZ|@#+9qLTKow=LW zR^#1uo}X)6Onr@?;kF^>mXqjq0{)WqYU$0Kgt4L3W`QwhOk>W-ym1oa=KQviG`7#H zlXJ!x&2w|++=FSKgZCwk(VuocseN@e-`)PM)X|J_j)jHm|6R&5l zsek|L>NQsartU|cR@J{)#22OG-#YY6kNfvxY5#BxXef{dfPL@ued$W-2JJZ+s#hE>=lvxw(r ztQlr7x65E|m+^@CtaaWX(zKDLoirV!=_Ji=q?tmR*uE%Y9v&V{nuADlAZhk*pJskv z$**P5ueQk8bymW0eJ;{{r=-KZc?S39tm_61{Y~pnI#$xLk&c~o9Qb#VPB+qFPKh0y zL5yqMLz!>0Ql@#mWFB#!P259?JA=4;7w`;_czbV%?XAxG3bt*CYcO#QAg;dQe%$w; zBz+I}FxHkvkhsf)k&kiAq>3!Z+JHJYLne~9apdhZ@-~9_h7#W(;u{dokOAy{9YDVv za9H26C101M$|dA$GWi-uzD^}yPOcYvE^8F~8YJMv74N?D@D$#?Jnc1Q)SG$9x|#TO-?D|{)@d|L)rT^ zl)Ya=u}jf9b1+)7(FDbE=TN!xpha$Lw#v#z*0Fcl<$_v=%&2zCS?jvd&QoLrdo5kz zLA=X0P+Z%)tK3j$uRf*k(U0IB49M5q2n)@2s z-{)mxp7a-Sbog?cw&7NXGt-6zl6Nc zCGS(o`W8KpPrM8_K2)okANLLK_-L8|q&$ocn4Q_iBTM zHISh0J=A{1R=Z=yS0n9(8M3g}Di>GVWX3u>`gX`D#>1@eN$f8}$L#ybVoy)jzJAe8 z^QvtO4@iXZTv#o_zc?knY8g!Xyd(U3%zOAy4TML6Th}6-5B^pRniT%*@H#8KfC|LG374y1o*&eKLZ zWhB?7L0p%d)pq0DJ)F;spV#?SQ8!Vy-+)PRcQW1HjrDTk65`S{j)_Ow&b7+}aV5K* z@H{SQ4%9kVQumNGHvc*ij_bcO{&%I*$0mIeugmfIYiI89{KWkwAIIm-agOIR?mzAx z=L|dZ2BX~@BY`FEPvd2-VCY?0<9P)AsrwSsJ(1(*g{9gM= zR;EL`Kil?nH1U3VSh`)(nIk!l^bjxaJ=_AK|1#US=Iub5;im7seiU~nPW6}U)-JrT zC`Q~u+(JC<&+|@8Qkq#=JR^9v?LCuY@|x*1=CJ9kK|2ogkZ2EV;;~0={l{(hPVL>y zJm6ml*Zw@uuae^FwC>D0&2ptkANG3iu9@!WZ_xLMj>)I$Ew`6=udvI&ui3@@Nn8Hf zyIINCiTRB^*VFyXy`+DrZ4EUs?JUNu?vKQ5HYU0c>&ISM>LQ&rO$X~64Rwrb+Z?ht zA#d&7Ox+PiItY_Bfc?Q> zcSBFwUI-U^C$N3EtkKv%;2N7@IqBHva-#lP`*BjAX?2hHPpx~ZD*m2Y zCHr5tgAtat@+7+%?InT2_>#}J8z(Y(AC>2JnYl3Qiac{Rnxmx?_pCGUyN-97n0xkS?%9LqKX$GzT1T^} z4-aqw{bgm^q&s~>-|3 z6z0AIDN7&9(w(x{Uyqg1az(ma(JV5bx!7FhVrMh28^`=_B=f(Mnag!Q9J}WmrgMTu zi$qW6`ZJXMGLCrr<64sBX7TnFFLBPq|GC7gYb>V|uda&>B;MY{+vBjgfAL#c@~xvH zw;!~~+GeX>sV68>7kUrqQT!Y@8v_-PKAR%DR@6}+r6!;Eu7f7w8s@%zskN&8yj3=wA$ar%gJ z0dWo`t#0vm{RVfF!Rs(RP{AI2=1e*d(x2sYZ0A+;es6`9`xfTSp#*)dvxt{_QrDSw zDRQ>yGuh2DIaMYTM>hVG|yFMDig+kckW7mRqBE2M?m);n7J z-~T|GmQ%1bRx2{3+9Fx&tke&fD6D>7J?MG4JG~|I7`sXF2h38K*eqTribz%KEc(<2pGbzJrisV|^jv z-2|NjXj#p&bk}3_6p!=6Q+dC8lv930oXSR=swc+uRz1b_mlRh#&Q70O#{GX$j;Eho zwzzvz{N44QgKJvvN$d}r-@~XYD+T+Wv})@0rUXv0NQ%}`AB*%^V!G?G`A%c3PJ0^r#*OePjNhSH zpEr)N#KE^3*h~(tUz?FQ|D)_Md#L zf%s`(==ybOpi2W?8tBr%zgGkCZ|}yx>y}CM&LQp7NM~P-{@lEimHgAKHeTE-z`^wP z=heS{Lsx%^>DY~3#D=r+FP;DTJzM=H`a6QngXG_fZ1vDzLkIb>;@;dzUX1VGay~Ks zIow|+|MVNO`b+e;lh=2Xf3wXpCrhyt;xGg-eYn+-HJD3{^G}Rj<=ckaWeD9>v4Y*w)|o2J)@87<+vw*b){=x;r>rP zN%pjY`$WxK{HJ9!+Nh+&y~YmBqxifl&T&uw*Ex7wiqSsedKfot`ocg(ejpewE-Uqv zhYLKO_$h-s^1mdnz?T;a<*oLW23Gk>0;NmCMae-s4X2-YO!iDlo%zqtD-UZ(-cuTt2<(F+SXS z(e%VHo#p@Hve5Fpk{NXTWt|1i0e;UV#lF{437~JCT)rpb}G7YRj z_QEuqyle)I|EAy>h#gT=^+-%ZqSEp7z6x2G8VBJzG@<%8f5vUdq}3Pkk@H-JWT z)daVIqpG)jk@27j*#ln!-1zsySA)sOm2eZNCeFlfZ0h$nZw*k!Z7BwCMV^K1Dik?q zDe6Y9gfA|lt_fQOpHhq-G;eVHJCw>Jd559^cja+l4RR3P1*(vn;5$ok*Eq{WJ_04k zo?zQ|HTC_Of4)Fen zx>!k_f{oAMA6^P(HIO&>JD>$Q0{mGeOZa{6lY4A%Y%eZtp(7UU}UZLnYcTqCj^WFuF> zZ-b-iel6}`Fy*a+|FMR)y_dXQ*Jck{?IJf_kFKy=to#~SkF5MBP>Y;s6IX5No_Ql% zNPd}O@VUtAkd>!{t;h}Vk8Y;j64t$z_He7nl;_YP{OxtrEAHvv;91n|j5)Zc-_d3V zSnUBHSdVUrNBJ!<0$I5Qc#wk$c52lQ?k(S<4O1@V^Or|cB?*h5V%1bt)ALR7ADEr-nM-IYq z+t`UVukXXXZ#DU$j+94$4D_Qs5@aJM+UHi=-ow93TKHGa1{KK4<3KfXqFrINN&NLq zj0xyXxd5~vD_;fD(L)RTj~`M;q~+R7{{pWvCM4R49$v%s3#_HSly3!_kn7R33FNZSRp3gU2F!kd-Hb0^}-0&)}TjhtS zU$FC8(uLFN=y%Bad7AG5J7M*!Mx(cpx2K2`eiD>CO`Px)EH@mfr~Sjf1oiaO7I@wc z;wPRU+^?RzJHiFEnD!Zj z9|3#S&$H<4C%CKL;J5eEevsWSFtz~wrkwJAkb$iH0T_dNN|7DTy|Aw@FLY&Qf2lBV*1a}YY z{vG;9cD+hJ0y(>Bw{ZAP+7kM#KO}PAVcLM!^?US@Bjl61aKojbg|b(|cfXGg|C@L| zU>y1<@gN63WSseg_CWnc#3F}zJ{(1^vcWwpvW9X=FN-+&@Y>GDDLeai&g^HABIE`* zI=~`n$iYmDoHfiM8I1G6Q!Mg}aTdwkL!9FY`xU|>N6)dy_GuPz|CF}G3QocK7Fma! zKGz~YUtp1skSiBjWLm%?i_t?%kws2kZjqyUy(lG~kVP7(FDbXkJ1Z@ci+jr|i~Ngy z9nI9WXSGGH1yLQB;2(h|tLS@m=Bj1HyIB0Ya?kqBk? zzG#u}|CY4Sq5F3hc{FN~SJ9#Cb&I@w7(c|H{((il{xQ#miQgkuxiZBno4B3^v3q+( zf2$lp_G1|S-l4pQN1ghIS>?jv*x}W20IoXKDp6#~w#qlb6#8HTeC26Y*`;*{Uv|1x z_TpXz9|k*V1L>o!G7RMEH~>!vY3S1n=Yg&0Aqd|H!nCU@cr(Z)o_hEh&_w)A@E^fP zxVONTG058Y;bCAg?rwNGuoXbV_u}ZaP~y@rf59yoU^Usex7no=3QjPKJ*W-n`)JM{4|`0Eo=|&_|dnV zvw@p9J#Yz_tntIUK|Nuc;65{`U&6ZKji7+A_3-q3t9Z$0aG6zJT5gqQ{0B>|(&K8% zuIa)#A>NHvclfjl%Bba9P2F8Xdc>1xuUTz5pMQf@){vHRs1ki5H{EEJyKl0JhrIc3 zw#qNoTIE$__bt@>9ab5PpWvNVd8~?eWN=Tk@2$4K-vhO{EBF7lRT_{hH)0q3F7l`G z!1sVf$PIAn-B#YuCU5YD?;w-U7Wm9+D>ruN7A^!i=syCVcMoCzNFLzS?^52s5hwf{ zsCpM&{m?4E2UV{T4?HA-O*~{b{B^JnISBs%R3q2JZ*QTzgsrTx%2W4JE@bb0R=MbY z@<9Am@SU|*Iog7LU_MzR7051l0cb?_!*_v$ng{q#;OIN#0Y3FX(#4MlE(g`fmGGnB zDE^yZ=R@dCeH1YsNC4cpNJa%2bN0jNaw*OTtU zl%4$h;Rkn8M&!hIc=i3>{*TeeaaX<@tVfQ*{huIy0in7GuRw`miGKR;(;Fpwdg+zf9EGw@nHX{ z3GTCpzVJHr1#bd%#MuD%{u%w}AnC#zK=W_VEj;Jv)EEB!@Q*-r%$d4PY09y&0Xzy5UA-@d-eJcM8WU6j| zL!6-bFZhS|Hxmza;r=aU1%iGe@Y}ybrd}#vWxN8DY0v4eaoqut1JoTn_xFS+Z$bDu zu$TNq;og6sF3_6`z5?u5y}=u!v@_C*!u|iqn5p@P>%bWD)&$Rcopz2KgkJ%<$nqz~ zD6p3@y5Xxp3%ad@cY|#5)&v(HpuLf|DtN@78CS_$B^-K#H1MBjV=~c}rP{Ro+FxiJ zzfUnZjJyU}`3bNQS-A<+AuGRrkob{~P!; zhw`$&QGbkk$~S;9$W@1FgYTiMH^?V^{@>99?)7jB@Kf)Jc2d-a%8U=F_d|Tw9ljVe zAlJiv|4BYI9@zdN$PbK^zXrb-7K0-erik}GlHprxo5^Wl*9pq)e%lM|e z0~8@EKME>!-1``2|7qlH`Yi8t?FR?Zzx1`qZZHWwB-$=hyJovV6Jv<-9&iXb(Jq?W zOq&Qc;jTO#>_iU2CuiBjO3`)q<;Wwozd0fcc$`EHPjoM_8a?R;js$TMwH`7E##*$>|jnsrQo z}2=-_n8E%uq;1G4{KgA~3oQgeB+M8z-@84#lN8~E_iPMP( zIniFX+VT#LMGw@e^520UxnZ15&Nzc}vXk*G3 z0xz=id{BU_d^uQyEE6f$WOPBfB45FN(>XSog+ATqQZC?Ed5TTm0Xs>{HPt5n1SyP5 z?(=N28ieUbRq&b9C@*^U!`(dC(c?PehBK$56TKF|=g+W7CGk|k?*T7z`b?XA4=h4% zfG5u4{S{;{eA@XoIYQV(`-f^9u@Sf!LzG_xQ;?P40A6JGT$^kFVd_OLu*pjolCEC+ z=Gm}cV3P)9_k8S)gB0{!2|o&2=wDGdV*z1tcf&6M7wuDWX?tK7<87kNZMDb!6qrKU zl^ek#+kw#6n&81-r)@KCxZ&$T3ObCy?}9`4kNVhy?zhQS;%|cg45G;1 zB{sP+pEjoPz;Qc!iT3l6>+)?=@+0* z+s0DtQG*igBSkj(KB!|XZGcA?Q%A^N_(@QW9EH=bA|7NHd>3#Le-qqo8D-IH89W<| zpxzVh8YbF3RQrdI0YCjz`AM)AS@{`IjhtxHOYME#6Qup4L*;uxv$p4}X(J(<9H5UR z+GkbUt-HYp##QB4z!YRx*d{*#>ycaFAuFgO^6Z8SfS3BJgd0H^ISLP1Nj|k6;X@!r z=R&I}BdDalg76DqE$yKNPUl?%J7xE*CT_4_^$7>BVI0PP1YUG4eNtt3^cwmaaumMg zI`Yl6I|xs?fjm$z_3)rd{1d+i{uS^OXA6A#jl_?C5Bvm}ta*krZlWIPzg6&4poIJ+ z+Ot$!m;VGA=vg^+En_&c8@>%3qD~|5dmw{;nrK5^jCV>P2}nID+hlH-SvztcU*w4(UAS zcAG2!Tgij}4(bA|BhD81YwIZ&daHzc-bo)pZ*KSsZ29e`jEVO9)VAMEz)f1p_W>_* z6khvn;-p-`jf{tPbM4SE`8zh*vWb4qSR_B-I`BiAc=UP%KOR9pjDaoi*v;gdam)k% z5FFI@0LQ;?pnT32^3Rx~JR9sr4#FEj9bqHzb6^c}6i%z54I{hYsURIWxYZ{0pqlpC z0L#66n}Rt&I-CbGX-k#xPrwN7JEHI@_fam!Ne_H8n2Zi1@ZZ1@;!M9E8wDVjG6vy# zu$J+;0q#{xeu&=<-w0~)lW2!oZ8R?fyUCC8D$tCaXd71T#$F5N5s&h1pa?n9o}}8E zyaP-j|H|J1i;xrTY^e>d?}8l4rFNDWKu`UzX6kw6K(sejsI6b1v*iF18hW2{C0_c*W@pt7JVwe2lgNj z{t@#8u!s9)Km0g2fV>y}JJ^eyvXk)y>_=V?{{rkrPJFji-$DI7Sj2mt%CCb8Ol~XhcqY2UOn`-S8%Dp0LVygG^g@X@OV$m1`FMqwtnP^cOqw+l29yHw*YPP@DT4&d(UW|xma<|pJQ z1=};c_n(cN`2K&QO#!tnVCDVf%#X1^2lobUWaW`y7P9i`U=gzN<)8vN@qK=^5AZao z#a;O&(1@(Om-lsEMOOX-(U?0JS9E7Lvec350!+rbmy+dRV zoOTlFstmV)jmR$SMf?raBfI-Ir05aeRp&paP$7Ca(|aya**p`=PAUG9D)6( z+GQPb`Y5{uPbdG#-qCjX>R4E~f@Xc}cxKOVbW4<=Km5%{_pcJZh@ z+b(|wX(`k@-+_Ms98x`;ZIFFh&%K!TgWLe$;zd`; za*17jm`mQU8BlepT^3w!m;K0zHWbvp!V%!5Eh(S0nDe$jW}O5xE6E$w#`# z5%`aOyM#&0lV_LjEWtl=3+yT2-C5)a+!DaX1ai|#yPUk5^gd*4Ut^bT*I|$BBgVJu z?ehH_C_A#}4!hiWCv}G$slxvT!Xj6~JvWjTax`L>_qL#4b+56@i(AnT@w@M}%l!KY ztLef|-cNf&ZmFjqJc9fIeILH-N7!*VN<8peJMGep?0(cP7e7WB|3O&zqQ`09|0I5R zH1Fn4Ms_`k{kNyVdxV9vo{5m7`l(%J{~SFdH^FnBv-4n*JiyQFwaX-A z&#%zi3-mkWswTTk*hl+Bj=;tH?Q#$~3cvLdI{7?c@GRmpKgmoz5({q9wP7uU^njRR)<{Vbck2e>W1AjzKZBTMr^fv40XB>=3us zX%5*>T8Z|55^V=1+89#%L!(DKB$s?D&jcmN$}fOQWM%IdhipPtUJrI5yTN=8)G)C?m4J4E+Zw7jhJS;A)4gMGl4>@?yC|b|SmO=wJo)sD9wI zRg?wU57%KM;1F`dwfJAdIr^jPI)_ZWo;<63gF|k+kvhVU>n7^+X4(L9{cR3;=o{z< z*?l|h;SO|y9Np-UtL~=kgl&Rz?s3QnyZ0_AGv;?Lw*U?Feiz^V_u{VkUj8XuogK8KLms^ssVl#9K=1H z@6e3~QS}dh6WEdEC5N01W+6x63tvWW>gPAKH;{qc0*`K{Eg?6-=l+&DMUKEdUZH;? zH^9AqhYp!fR>F^iDY*MzCC^~J`gskT62GUNAP3=xz&vE{9~|-|*o5qgI^+(}f}ChW zMQyEIj7^gi=99|vK{j%t9TT;8av0R&uKYe|L{2~Kkas{jb>x1}A)f%3UhnKq>E>|C z5!yyNJPKsc9^CMJC!b^0b^9_=c%y)LyGX8ke zcqbma@Ou~sJn&KAMozSUqqcEUd3SsaZAp0?n1!5Z??!Fmv;e=hJ$L}$KdM0X!g+n1 zvL3k}e!Q5hIvID{0lGzxd|Taa>^v+S@2K5EM&p1z!2a^ zo&qlg1;}Ce04PCD8}5`z?j>*~*pK_95!fC81;}gQdQgYl z0KWvbBEJgTN1`j_ba*7#i#!HiuRz`k?*}`Pqwo>18~G#nENlvdk!Qg#fVId+;Ps=h zvxmGBZU!aD2jHIBPFaJT3C{;^zk1to;t4|f|&{*g1_(IAZMhL?i% z$YJtp{}n{{&k+ z2XH?Mr=3auku%_j!CvHM_~2R80rHr$opKL2guD|TIoT;6As4~*U%}oJaoW#u%6T9I zc@g{o7>wKuPdt};L7oRc4i+KrhbyNzB?noiV!Iaj)epQ56d_l``#}YAq`)a#z&hjx z_-CLBSynh@JUCcK-(2OCr+{}S<4=WC?gakFx$eNPf$GQT``2N&=6d8O=c& zfnNig9%Zb%!72X&f_r);_Ao#ZvKPJ%1d*%Yr$7a=eo_5yaP)cNfe!-NN8i86DffX9 zFA^s_@@DdkyMFTdW)MNvZ$tkTR3PgIqQ3&xA?sI=zX#S6RzHROCfJ0mUslKixvXdE z2NpJi#mH(OR@vh3$C#s>vfv&iQ`K-y)MkCSPOn zI+Hh=95MM3lN(KLHu)`+KQ_7V4`T6;F?p8BUpINOnU7qPLnhy9^7{|R!hhF1e$3?m zEp_g{KbF4-AB^!gO}@$GB_^L|@&uDdn7rnPv2fKUKVtHJlixS_^hnI#LX#gf`D2qW z*lfmQ@_v)kx5V5Rn;bFub(2Tb#LlOg`FYShZZUb%*4X(9lXsge_r~03n0%|r&zYQh zU+nx9CT}tMEt6fQ-ipk0?lzCDwXtwhOup6R*G-=MK1n7q;C2Tg7?dAP~%o9+EollPcB#yo$P$)7c!U(|ovmz?fR+hThBqWSDB z{D|#eZu}W${)d0bMjmdQCL_cyu3$uf#1vOqX!5~LU+#FH{w2?kmYDOLczgJF^RDl;>BmV~g6sJPP=d}*#Vv|k z%D3D6O~I|<=I)a7tv0unI^U{fEjz*ALh|lf+g;Wr#23QNb7yyHtZECpiMdVXjjY#i zY;!xvJmVl?Gw*71`zLNqx8TM%^5VZ+>E})BSi8Tc&8-%<%-g%muvQFK!;(A_-}Pa9ea6YxN0fY{0FGG^)PS z7T-?Xa>%ng!EHZo2MOERuj@X#GtK;G+`I0hV{NnRKKk>ux32r>6VqGQee{Xx>C=35 z-A8|#hGOTt?xSPlde?n)Ob=c6(J?)A-AA9;_!0Njbsrtq#OLGx-|wS)iD7zmK_FC| zS5kaUV18LyctP>f(!B7BP(TVM7L1=TuAroZy{$7bLL3gvT6F&0IeGcvve4@BSdFS! zT5Oz_uUZy_L;TIXOk_dMyvwG0=Nc#8vz{LaF9;Xp5Ngx;N zsnf&ZQ1Ox#;ehOPEGP*Cg0fL&mXwtT%m5{}oIqaCuoNpnL!J`~5YK*%*BdI!50say z4=kfOFT=|6oU+h@;?kuhfv+yPDv%$R=goZ2UWwUO@;25+xZL9WWi!jLa(&h$EWv3^ z7nK#PC^6H-*B!RGrN!ZxMi$J!Y#tVOrP)3|P!hm=u<0X5LcD{gliqE)V8~ z^NUO;a{Hjw8wf0GJKk>fmX(Lwj_(&N*Irg!T2Qu1HAaXXhL1~D6vutZAFT5OON-0H zfzZs7yz=td75G|d>Mj;kogO77j60XDjycgPrWahbqC6ZsoR7k1SBPA0omZAuFmpwy zyexE?e9btTn_pIXnOwSH_WXG1{4%qwP0Lu*tA)G$?WOVF~fWX zuPJhFeEV~Yu8?n9r}-AejHoACF28*GBJb=Ovo!3t)JNHhu&=DphhmqShM*ICykwc? zqctooDO-}K2G;XR0v?kLlkPL8duLBysL2;E4|>K=@R08Jt<&;KR^_cO_m!4W$d#V_ zvVuVV%5Z|I=}TtMnC`n6zyGvND=zh56+Gs}Gi%nRzKfQWV^25`_IP4urqy%K^x4xB z&u9t8HME3 zFJ{FaG~y^O{UUL^Zp4wdGOxJgv*(17>H-?rbXvz3tCtHHZM~&mtR&|faeT3o{2guR zb>_3Hf)<7*j(m~u#&|{>gLB;O@!Ha6I;K^WGnVLe;4_UR7t!Q>7ic^2T|h*0G@js! z&mYf>SUlGyj*6f9sfGA>_*0|T8CR~>a(rrFy^Jr)@m);r(-Oz=PYoC!!3Q1_DmDTi z|I-l0%mJM(JaJ`@_ZT_6`53*NNLq2-+-aZ2T)Ci4FDDXMGs;zcA(M*MDwZFpmIKS$ z1~+DC`Yn)8FS8jH#V!o;`HaNLgeP_-wK=AR10^M&BW^Bd9Y;%V*+y@fQ(P7dm>loL8!>rBsd04Cf`v1^<0rXecV2hstk(FHP}?Vg zn9`!2VdC?l4ARSweV2$51+hUsyq$YNY*vr$UEj=#3L{tC-oygweT+|?=Y;Z>o3}_I z?wh8_^1$+Zjc=+-%geYEI!`68#@Nv|(?EaAi@BQ&$Q)UfUrzHCIoAleoO`yj#24f~ zlX-TDoMX5aaXv-U^OXk!`Nf5NPN&GYb;NxT?)fW1A@1bb$|Qq3a;2ok$2nwVJRk9I zVED|k`by|an0%T!|I&+d=Uz0sRiBA2zVR^~e?|Cy#!7CG3w*&mRRhIhy072VfI_sex$s?Rt&QR`@`kobeJcxB1w+N9VIKLP)b3ol zd5(ZW>Rc}ftX%-0)cHEmy5$Sr9RR;{Iw5c#s&U${Vk%3jh0`lZOTI5FxK$#k^cSNw8s9g< z^11k8?a@58wJSrRS-hU@&Xk*HdUtk)V%s@KEhgwIzg1s@g!?!8+4U0F?ow%MY2?i4 z)A|vsvnHtq=LpIx)ME^>i7$3SGQ_upo8Hn`w+wLSdI9y7&nKL;ZBm<5_|noqfe)1h zv~R?Z`3esS$ocpVmlb1{KEJG7Ytd3pix3%LDZe^IwPsnud3v0wIw$2UF#~D~*EY{* zzlvm<_{sxCszhy6y4I4(*|O5Y;-z#AUnyS*V~ofP=~oUWYCDWCOvFzGN>>(#%1ZUS zG_0>2&qh zjvx70*T`RHj%2ip{MeZ0Ii@T`C^OWB@Cf`v(9+r4IIR&~St8~ZnQN*I&@y?USl>v0pxh}MQC7w>s zL#z&t@$q;2{BX(4yr3?A&NQze|5CSkWo64&1m~E&Wp-&e#C6Z^;EefEr%OwzBu1n+ z9G8~HE?5PvSI{{|*XEl7y7t-W=?S_H$)cHF-pqwf+2hEKUq9ncQfr%AZXT3{=CCG9 zUcI3}xpw~u=VtNkxur`3p}5=MG~NZ_Jia{@oXZ94G6~v^NsgB}j($;E(!l>0 z8YoB?z7Ep%OFm9J>DcqP^gaG@TTC%2<-Cr+8=UN~>-c|z2KbH)*#MQt=ElNZf!OlFZY3KD!ox;<~!15&}t6fA;T0V6Yx8moN=NAQ*=ar9L zUYs8)D=#Yyk7Y`IPG0%)aVy7*%MGg=Er@F{1+^~OP0E9}xh zmj;g2Ks|PTa7o|n+TyO6T;r+9sqxks$I9eYJ2tehV6~po3=-{AKc!ueew>^j+`AuJAykZc2w?Ix1(xD^^VAn+8y;f zcI{}`(YT{&NAr&84r#!466vKx(j!fg=14Tcfs60{K`jp*eMst3>eA~n>s)o&b?&;! zb^f}dx?o*JU1i<6x=3AZU47lIx`w*Ox@g_Ox|X`5b+RpGn`>M4Hutv4+dSKHw)wXe zZ3}Lz*jBl1-L}ZK+HLjQc5Q3e*0@dF*dQVeP4Qr)C2}+(n^QKYZ_eE8+MK=Fy?OFx z&*q%X-pz|P`!^SD4sNd4T)BDO=E^PWwp4AY-V)hTyQO~1t}P8)8n-lUY2Fgua&Sw_ zmZMvwCZ#65CbPy>lU?IJuFjfjnrosp2Wwhtj@DpgY-{>f&(@r+i?;f=)<3Z8frba9 z68mf9uju~Z{nhtJ?oX+8)n?Z=);85P*G6j()`|-|V4RnTYA!R99dT{(lDl2x#I-fJ zwP~yC-r&6r_qN>Yx-aLx%KLWR*K(ihe((M3?r*$bYCW|TwYzGi0ozwb9O)5P#2xWO c{1H9u`gLibO9NdR=+Z!!2D&uxe@g@Z4??{l`Tzg` diff --git a/docs/html/_d3_d12_mem_alloc_8h.html b/docs/html/_d3_d12_mem_alloc_8h.html index 36f1863..2a34c7a 100644 --- a/docs/html/_d3_d12_mem_alloc_8h.html +++ b/docs/html/_d3_d12_mem_alloc_8h.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: C:/Code/D3D12MemoryAllocator/REPO/include/D3D12MemAlloc.h File Reference @@ -31,7 +31,7 @@ - + @@ -90,88 +90,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Classes

struct  D3D12MA::ALLOCATION_CALLBACKS
struct  D3D12MA::ALLOCATION_CALLBACKS
 Custom callbacks to CPU memory allocation functions. More...
struct  D3D12MA::ALLOCATION_DESC
struct  D3D12MA::ALLOCATION_DESC
 Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource. More...
struct  D3D12MA::Statistics
struct  D3D12MA::Statistics
 Calculated statistics of memory usage e.g. in a specific memory heap type, memory segment group, custom pool, or total. More...
struct  D3D12MA::DetailedStatistics
struct  D3D12MA::DetailedStatistics
 More detailed statistics than D3D12MA::Statistics. More...
struct  D3D12MA::TotalStatistics
struct  D3D12MA::TotalStatistics
 General statistics from current state of the allocator - total memory usage across all memory heaps and segments. More...
struct  D3D12MA::Budget
struct  D3D12MA::Budget
 Statistics of current memory usage and available budget for a specific memory segment group. More...
struct  D3D12MA::VirtualAllocation
struct  D3D12MA::VirtualAllocation
 Represents single memory allocation done inside VirtualBlock. More...
class  D3D12MA::Allocation
class  D3D12MA::Allocation
 Represents single memory allocation. More...
struct  D3D12MA::DEFRAGMENTATION_DESC
struct  D3D12MA::DEFRAGMENTATION_DESC
 Parameters for defragmentation. More...
struct  D3D12MA::DEFRAGMENTATION_MOVE
struct  D3D12MA::DEFRAGMENTATION_MOVE
 Single move of an allocation to be done for defragmentation. More...
struct  D3D12MA::DEFRAGMENTATION_PASS_MOVE_INFO
struct  D3D12MA::DEFRAGMENTATION_PASS_MOVE_INFO
 Parameters for incremental defragmentation steps. More...
struct  D3D12MA::DEFRAGMENTATION_STATS
struct  D3D12MA::DEFRAGMENTATION_STATS
 Statistics returned for defragmentation process by function DefragmentationContext::GetStats(). More...
class  D3D12MA::DefragmentationContext
class  D3D12MA::DefragmentationContext
 Represents defragmentation process in progress. More...
struct  D3D12MA::POOL_DESC
struct  D3D12MA::POOL_DESC
 Parameters of created D3D12MA::Pool object. To be used with D3D12MA::Allocator::CreatePool. More...
class  D3D12MA::Pool
class  D3D12MA::Pool
 Custom memory pool. More...
struct  D3D12MA::ALLOCATOR_DESC
struct  D3D12MA::ALLOCATOR_DESC
 Parameters of created Allocator object. To be used with CreateAllocator(). More...
class  D3D12MA::Allocator
class  D3D12MA::Allocator
 Represents main object of this library initialized for particular ID3D12Device. More...
struct  D3D12MA::VIRTUAL_BLOCK_DESC
struct  D3D12MA::VIRTUAL_BLOCK_DESC
 Parameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock(). More...
struct  D3D12MA::VIRTUAL_ALLOCATION_DESC
struct  D3D12MA::VIRTUAL_ALLOCATION_DESC
 Parameters of created virtual allocation to be passed to VirtualBlock::Allocate(). More...
struct  D3D12MA::VIRTUAL_ALLOCATION_INFO
struct  D3D12MA::VIRTUAL_ALLOCATION_INFO
 Parameters of an existing virtual allocation, returned by VirtualBlock::GetAllocationInfo(). More...
class  D3D12MA::VirtualBlock
class  D3D12MA::VirtualBlock
 Represents pure allocation algorithm and a data structure with allocations in some memory block, without actually allocating any GPU memory. More...
struct  D3D12MA::CALLOCATION_DESC
struct  D3D12MA::CALLOCATION_DESC
 Helper structure that helps with complete and conscise initialization of the D3D12MA::ALLOCATION_DESC structure. More...
struct  D3D12MA::CPOOL_DESC
struct  D3D12MA::CPOOL_DESC
 Helper structure that helps with complete and conscise initialization of the D3D12MA::POOL_DESC structure. More...
struct  D3D12MA::CVIRTUAL_BLOCK_DESC
struct  D3D12MA::CVIRTUAL_BLOCK_DESC
 Helper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_BLOCK_DESC structure. More...
struct  D3D12MA::CVIRTUAL_ALLOCATION_DESC
struct  D3D12MA::CVIRTUAL_ALLOCATION_DESC
 Helper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_ALLOCATION_DESC structure. More...
- +

Namespaces

namespace  D3D12MA
namespace  D3D12MA
- + - + - + - + - + - +

Macros

#define D3D12MA_DXGI_1_4   1
#define D3D12MA_DXGI_1_4   1
 Define this macro to 0 to disable usage of DXGI 1.4 (which is used for IDXGIAdapter3 and query for memory budget).
#define D3D12MA_CREATE_NOT_ZEROED_AVAILABLE   1
#define D3D12MA_CREATE_NOT_ZEROED_AVAILABLE   1
 This macro is defined to 0 or 1 automatically. Define it to 0 to disable support for D3D12_HEAP_FLAG_CREATE_NOT_ZEROED.
#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT   1
#define D3D12MA_USE_SMALL_RESOURCE_PLACEMENT_ALIGNMENT   1
 When defined to value other than 0, the library will try to use D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT or D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT for created textures when possible, which can save memory because some small textures may get their alignment 4 KB and their size a multiply of 4 KB instead of 64 KB.
#define D3D12MA_RECOMMENDED_ALLOCATOR_FLAGS   (D3D12MA::ALLOCATOR_FLAG_DEFAULT_POOLS_NOT_ZEROED | D3D12MA::ALLOCATOR_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED)
#define D3D12MA_RECOMMENDED_ALLOCATOR_FLAGS   (D3D12MA::ALLOCATOR_FLAG_DEFAULT_POOLS_NOT_ZEROED | D3D12MA::ALLOCATOR_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED)
 Set of flags recommended for use in D3D12MA::ALLOCATOR_DESC::Flags for optimal performance.
#define D3D12MA_RECOMMENDED_HEAP_FLAGS   (D3D12_HEAP_FLAG_NONE)
#define D3D12MA_RECOMMENDED_HEAP_FLAGS   (D3D12_HEAP_FLAG_NONE)
 Set of flags recommended for use in D3D12MA::POOL_DESC::HeapFlags for optimal performance.
#define D3D12MA_RECOMMENDED_POOL_FLAGS   (D3D12MA::POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED)
#define D3D12MA_RECOMMENDED_POOL_FLAGS   (D3D12MA::POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED)
 Set of flags recommended for use in D3D12MA::POOL_DESC::Flags for optimal performance.
- + - + - +

Typedefs

typedef UINT64 D3D12MA::AllocHandle
typedef UINT64 D3D12MA::AllocHandle
 Unique identifier of single allocation done inside the memory heap.
using D3D12MA::ALLOCATE_FUNC_PTR = void* (*)(size_t Size, size_t Alignment, void* pPrivateData)
using D3D12MA::ALLOCATE_FUNC_PTR = void* (*)(size_t Size, size_t Alignment, void* pPrivateData)
 Pointer to custom callback function that allocates CPU memory.
using D3D12MA::FREE_FUNC_PTR = void (*)(void* pMemory, void* pPrivateData)
using D3D12MA::FREE_FUNC_PTR = void (*)(void* pMemory, void* pPrivateData)
 Pointer to custom callback function that deallocates CPU memory.
- - - + - - + - - - + - - + - - + - +

Enumerations

enum  D3D12MA::ALLOCATION_FLAGS {
+
enum  D3D12MA::ALLOCATION_FLAGS {
  D3D12MA::ALLOCATION_FLAG_NONE = 0 , D3D12MA::ALLOCATION_FLAG_COMMITTED = 0x1 , D3D12MA::ALLOCATION_FLAG_NEVER_ALLOCATE = 0x2 @@ -188,19 +188,19 @@ , D3D12MA::ALLOCATION_FLAG_STRATEGY_MASK
}
 Bit flags to be used with ALLOCATION_DESC::Flags. More...
enum  D3D12MA::DEFRAGMENTATION_FLAGS { D3D12MA::DEFRAGMENTATION_FLAG_ALGORITHM_FAST = 0x1 +
 Bit flags to be used with ALLOCATION_DESC::Flags. More...
enum  D3D12MA::DEFRAGMENTATION_FLAGS { D3D12MA::DEFRAGMENTATION_FLAG_ALGORITHM_FAST = 0x1 , D3D12MA::DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED = 0x2 , D3D12MA::DEFRAGMENTATION_FLAG_ALGORITHM_FULL = 0x4 , D3D12MA::DEFRAGMENTATION_FLAG_ALGORITHM_MASK }
 Flags to be passed as DEFRAGMENTATION_DESC::Flags. More...
enum  D3D12MA::DEFRAGMENTATION_MOVE_OPERATION { D3D12MA::DEFRAGMENTATION_MOVE_OPERATION_COPY = 0 +
 Flags to be passed as DEFRAGMENTATION_DESC::Flags. More...
enum  D3D12MA::DEFRAGMENTATION_MOVE_OPERATION { D3D12MA::DEFRAGMENTATION_MOVE_OPERATION_COPY = 0 , D3D12MA::DEFRAGMENTATION_MOVE_OPERATION_IGNORE = 1 , D3D12MA::DEFRAGMENTATION_MOVE_OPERATION_DESTROY = 2 }
 Operation performed on single defragmentation move. More...
enum  D3D12MA::POOL_FLAGS {
+
enum  D3D12MA::POOL_FLAGS {
  D3D12MA::POOL_FLAG_NONE = 0 , D3D12MA::POOL_FLAG_ALGORITHM_LINEAR = 0x1 , D3D12MA::POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED = 0x2 @@ -209,8 +209,8 @@   D3D12MA::POOL_FLAG_ALGORITHM_MASK = POOL_FLAG_ALGORITHM_LINEAR
}
 Bit flags to be used with POOL_DESC::Flags. More...
enum  D3D12MA::ALLOCATOR_FLAGS {
+
 Bit flags to be used with POOL_DESC::Flags. More...
enum  D3D12MA::ALLOCATOR_FLAGS {
  D3D12MA::ALLOCATOR_FLAG_NONE = 0 , D3D12MA::ALLOCATOR_FLAG_SINGLETHREADED = 0x1 , D3D12MA::ALLOCATOR_FLAG_ALWAYS_COMMITTED = 0x2 @@ -221,13 +221,13 @@ , D3D12MA::ALLOCATOR_FLAG_DONT_USE_TIGHT_ALIGNMENT = 0x20
}
 Bit flags to be used with ALLOCATOR_DESC::Flags. More...
enum  D3D12MA::VIRTUAL_BLOCK_FLAGS { D3D12MA::VIRTUAL_BLOCK_FLAG_NONE = 0 +
 Bit flags to be used with ALLOCATOR_DESC::Flags. More...
enum  D3D12MA::VIRTUAL_BLOCK_FLAGS { D3D12MA::VIRTUAL_BLOCK_FLAG_NONE = 0 , D3D12MA::VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR = POOL_FLAG_ALGORITHM_LINEAR , D3D12MA::VIRTUAL_BLOCK_FLAG_ALGORITHM_MASK = POOL_FLAG_ALGORITHM_MASK }
 Bit flags to be used with VIRTUAL_BLOCK_DESC::Flags. More...
enum  D3D12MA::VIRTUAL_ALLOCATION_FLAGS {
+
 Bit flags to be used with VIRTUAL_BLOCK_DESC::Flags. More...
enum  D3D12MA::VIRTUAL_ALLOCATION_FLAGS {
  D3D12MA::VIRTUAL_ALLOCATION_FLAG_NONE = 0 , D3D12MA::VIRTUAL_ALLOCATION_FLAG_UPPER_ADDRESS = ALLOCATION_FLAG_UPPER_ADDRESS , D3D12MA::VIRTUAL_ALLOCATION_FLAG_STRATEGY_MIN_MEMORY = ALLOCATION_FLAG_STRATEGY_MIN_MEMORY @@ -237,13 +237,13 @@ , D3D12MA::VIRTUAL_ALLOCATION_FLAG_STRATEGY_MASK = ALLOCATION_FLAG_STRATEGY_MASK
}
 Bit flags to be used with VIRTUAL_ALLOCATION_DESC::Flags. More...
 Bit flags to be used with VIRTUAL_ALLOCATION_DESC::Flags. More...
- + - +

Functions

D3D12MA_API HRESULT D3D12MA::CreateAllocator (const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)
D3D12MA_API HRESULT D3D12MA::CreateAllocator (const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)
 Creates new main D3D12MA::Allocator object and returns it through ppAllocator.
D3D12MA_API HRESULT D3D12MA::CreateVirtualBlock (const VIRTUAL_BLOCK_DESC *pDesc, VirtualBlock **ppVirtualBlock)
D3D12MA_API HRESULT D3D12MA::CreateVirtualBlock (const VIRTUAL_BLOCK_DESC *pDesc, VirtualBlock **ppVirtualBlock)
 Creates new D3D12MA::VirtualBlock object and returns it through ppVirtualBlock.

Macro Definition Documentation

@@ -341,9 +341,9 @@

D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT or D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT for created textures when possible, which can save memory because some small textures may get their alignment 4 KB and their size a multiply of 4 KB instead of 64 KB.

@@ -351,7 +351,7 @@

diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 1566741..7b7e1fd 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class List @@ -31,7 +31,7 @@ - + @@ -77,37 +77,37 @@
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
- - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
 ND3D12MA
 CAllocationRepresents single memory allocation
 CALLOCATION_CALLBACKSCustom callbacks to CPU memory allocation functions
 CALLOCATION_DESCParameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource
 CAllocatorRepresents main object of this library initialized for particular ID3D12Device
 CALLOCATOR_DESCParameters of created Allocator object. To be used with CreateAllocator()
 CALLOCATION_CALLBACKSCustom callbacks to CPU memory allocation functions
 CALLOCATION_DESCParameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource
 CStatisticsCalculated statistics of memory usage e.g. in a specific memory heap type, memory segment group, custom pool, or total
 CDetailedStatisticsMore detailed statistics than D3D12MA::Statistics
 CTotalStatisticsGeneral statistics from current state of the allocator - total memory usage across all memory heaps and segments
 CBudgetStatistics of current memory usage and available budget for a specific memory segment group
 CCALLOCATION_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::ALLOCATION_DESC structure
 CCPOOL_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::POOL_DESC structure
 CCVIRTUAL_ALLOCATION_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_ALLOCATION_DESC structure
 CCVIRTUAL_BLOCK_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_BLOCK_DESC structure
 CDEFRAGMENTATION_DESCParameters for defragmentation
 CDEFRAGMENTATION_MOVESingle move of an allocation to be done for defragmentation
 CDEFRAGMENTATION_PASS_MOVE_INFOParameters for incremental defragmentation steps
 CDEFRAGMENTATION_STATSStatistics returned for defragmentation process by function DefragmentationContext::GetStats()
 CDefragmentationContextRepresents defragmentation process in progress
 CDetailedStatisticsMore detailed statistics than D3D12MA::Statistics
 CPoolCustom memory pool
 CPOOL_DESCParameters of created D3D12MA::Pool object. To be used with D3D12MA::Allocator::CreatePool
 CStatisticsCalculated statistics of memory usage e.g. in a specific memory heap type, memory segment group, custom pool, or total
 CTotalStatisticsGeneral statistics from current state of the allocator - total memory usage across all memory heaps and segments
 CVIRTUAL_ALLOCATION_DESCParameters of created virtual allocation to be passed to VirtualBlock::Allocate()
 CVIRTUAL_ALLOCATION_INFOParameters of an existing virtual allocation, returned by VirtualBlock::GetAllocationInfo()
 CVIRTUAL_BLOCK_DESCParameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock()
 CVirtualAllocationRepresents single memory allocation done inside VirtualBlock
 CVirtualBlockRepresents pure allocation algorithm and a data structure with allocations in some memory block, without actually allocating any GPU memory
 CVirtualAllocationRepresents single memory allocation done inside VirtualBlock
 CAllocationRepresents single memory allocation
 CDEFRAGMENTATION_DESCParameters for defragmentation
 CDEFRAGMENTATION_MOVESingle move of an allocation to be done for defragmentation
 CDEFRAGMENTATION_PASS_MOVE_INFOParameters for incremental defragmentation steps
 CDEFRAGMENTATION_STATSStatistics returned for defragmentation process by function DefragmentationContext::GetStats()
 CDefragmentationContextRepresents defragmentation process in progress
 CPOOL_DESCParameters of created D3D12MA::Pool object. To be used with D3D12MA::Allocator::CreatePool
 CPoolCustom memory pool
 CALLOCATOR_DESCParameters of created Allocator object. To be used with CreateAllocator()
 CAllocatorRepresents main object of this library initialized for particular ID3D12Device
 CVIRTUAL_BLOCK_DESCParameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock()
 CVIRTUAL_ALLOCATION_DESCParameters of created virtual allocation to be passed to VirtualBlock::Allocate()
 CVIRTUAL_ALLOCATION_INFOParameters of an existing virtual allocation, returned by VirtualBlock::GetAllocationInfo()
 CVirtualBlockRepresents pure allocation algorithm and a data structure with allocations in some memory block, without actually allocating any GPU memory
 CCALLOCATION_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::ALLOCATION_DESC structure
 CCPOOL_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::POOL_DESC structure
 CCVIRTUAL_BLOCK_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_BLOCK_DESC structure
 CCVIRTUAL_ALLOCATION_DESCHelper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_ALLOCATION_DESC structure
diff --git a/docs/html/class_d3_d12_m_a_1_1_allocation-members.html b/docs/html/class_d3_d12_m_a_1_1_allocation-members.html index 288ed6d..d4f8f83 100644 --- a/docs/html/class_d3_d12_m_a_1_1_allocation-members.html +++ b/docs/html/class_d3_d12_m_a_1_1_allocation-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -104,7 +104,7 @@ diff --git a/docs/html/class_d3_d12_m_a_1_1_allocation.html b/docs/html/class_d3_d12_m_a_1_1_allocation.html index 45634b9..fe7e28e 100644 --- a/docs/html/class_d3_d12_m_a_1_1_allocation.html +++ b/docs/html/class_d3_d12_m_a_1_1_allocation.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::Allocation Class Reference @@ -31,7 +31,7 @@ - + @@ -95,25 +95,25 @@ - + - + - + - + - + - + - + - + - + - +

Public Member Functions

UINT64 GetOffset () const
UINT64 GetOffset () const
 Returns offset in bytes from the start of memory heap.
UINT64 GetAlignment () const
UINT64 GetAlignment () const
 Returns alignment that resource was created with.
UINT64 GetSize () const
UINT64 GetSize () const
 Returns size in bytes of the allocation.
ID3D12Resource * GetResource () const
ID3D12Resource * GetResource () const
 Returns D3D12 resource associated with this object.
void SetResource (ID3D12Resource *pResource)
void SetResource (ID3D12Resource *pResource)
 Releases the resource currently pointed by the allocation (if not null), sets it to new one, incrementing its reference counter (if not null).
ID3D12Heap * GetHeap () const
ID3D12Heap * GetHeap () const
 Returns memory heap that the resource is created in.
void SetPrivateData (void *pPrivateData)
void SetPrivateData (void *pPrivateData)
 Changes custom pointer for an allocation to a new value.
void * GetPrivateData () const
void * GetPrivateData () const
 Get custom pointer associated with the allocation.
void SetName (LPCWSTR Name)
void SetName (LPCWSTR Name)
 Associates a name with the allocation object. This name is for use in debug diagnostics and tools.
LPCWSTR GetName () const
LPCWSTR GetName () const
 Returns the name associated with the allocation object.

Detailed Description

@@ -371,7 +371,7 @@

Releases the resource currently pointed by the allocation (if not null), sets it to new one, incrementing its reference counter (if not null).

-
Warning
This is an advanced feature that should be used only in special cases, e.g. during Defragmentation. Typically, an allocation object should reference the resource that was created together with it. If you swap it to another resource of different size, Statistics and budgets can be calculated incorrectly.
+
Warning
This is an advanced feature that should be used only in special cases, e.g. during Defragmentation. Typically, an allocation object should reference the resource that was created together with it. If you swap it to another resource of different size, Statistics and budgets can be calculated incorrectly.
@@ -481,7 +481,7 @@

- +
Allocation* D3D12MA::Allocation::nextAllocation* D3D12MA::Allocation::next
@@ -508,7 +508,7 @@

diff --git a/docs/html/class_d3_d12_m_a_1_1_allocator-members.html b/docs/html/class_d3_d12_m_a_1_1_allocator-members.html index 4e80d94..032e349 100644 --- a/docs/html/class_d3_d12_m_a_1_1_allocator-members.html +++ b/docs/html/class_d3_d12_m_a_1_1_allocator-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -106,7 +106,7 @@ diff --git a/docs/html/class_d3_d12_m_a_1_1_allocator.html b/docs/html/class_d3_d12_m_a_1_1_allocator.html index 997e7d0..6263297 100644 --- a/docs/html/class_d3_d12_m_a_1_1_allocator.html +++ b/docs/html/class_d3_d12_m_a_1_1_allocator.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::Allocator Class Reference @@ -31,7 +31,7 @@ - + @@ -95,45 +95,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

const D3D12_FEATURE_DATA_D3D12_OPTIONS & GetD3D12Options () const
const D3D12_FEATURE_DATA_D3D12_OPTIONS & GetD3D12Options () const
 Returns cached options retrieved from D3D12 device.
BOOL IsUMA () const
BOOL IsUMA () const
 Returns true if D3D12_FEATURE_DATA_ARCHITECTURE1::UMA was found to be true.
BOOL IsCacheCoherentUMA () const
BOOL IsCacheCoherentUMA () const
 Returns true if D3D12_FEATURE_DATA_ARCHITECTURE1::CacheCoherentUMA was found to be true.
BOOL IsGPUUploadHeapSupported () const
BOOL IsGPUUploadHeapSupported () const
 Returns true if GPU Upload Heaps are supported on the current system.
BOOL IsTightAlignmentSupported () const
BOOL IsTightAlignmentSupported () const
 Returns true if resource tight alignment is supported on the current system. When supported, it is automatically used by the library, unless ALLOCATOR_FLAG_DONT_USE_TIGHT_ALIGNMENT flag was specified on allocator creation. This flag is fetched from D3D12_FEATURE_DATA_TIGHT_ALIGNMENT::SupportTier.
UINT64 GetMemoryCapacity (UINT memorySegmentGroup) const
UINT64 GetMemoryCapacity (UINT memorySegmentGroup) const
 Returns total amount of memory of specific segment group, in bytes.
HRESULT CreateResource (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)
HRESULT CreateResource (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)
 Allocates memory and creates a D3D12 resource (buffer or texture). This is the main allocation function.
HRESULT CreateResource2 (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)
HRESULT CreateResource2 (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)
 Similar to Allocator::CreateResource, but supports new structure D3D12_RESOURCE_DESC1.
HRESULT CreateResource3 (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_BARRIER_LAYOUT InitialLayout, const D3D12_CLEAR_VALUE *pOptimizedClearValue, UINT32 NumCastableFormats, const DXGI_FORMAT *pCastableFormats, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)
HRESULT CreateResource3 (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_BARRIER_LAYOUT InitialLayout, const D3D12_CLEAR_VALUE *pOptimizedClearValue, UINT32 NumCastableFormats, const DXGI_FORMAT *pCastableFormats, Allocation **ppAllocation, REFIID riidResource, void **ppvResource)
 Similar to Allocator::CreateResource2, but there are initial layout instead of state and castable formats list.
HRESULT AllocateMemory (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_ALLOCATION_INFO *pAllocInfo, Allocation **ppAllocation)
HRESULT AllocateMemory (const ALLOCATION_DESC *pAllocDesc, const D3D12_RESOURCE_ALLOCATION_INFO *pAllocInfo, Allocation **ppAllocation)
 Allocates memory without creating any resource placed in it.
HRESULT CreateAliasingResource (Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource)
HRESULT CreateAliasingResource (Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource)
 Creates a new resource in place of an existing allocation. This is useful for memory aliasing.
HRESULT CreateAliasingResource1 (Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource)
HRESULT CreateAliasingResource1 (Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource)
 Similar to Allocator::CreateAliasingResource, but supports new structure D3D12_RESOURCE_DESC1.
HRESULT CreateAliasingResource2 (Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_BARRIER_LAYOUT InitialLayout, const D3D12_CLEAR_VALUE *pOptimizedClearValue, UINT32 NumCastableFormats, const DXGI_FORMAT *pCastableFormats, REFIID riidResource, void **ppvResource)
HRESULT CreateAliasingResource2 (Allocation *pAllocation, UINT64 AllocationLocalOffset, const D3D12_RESOURCE_DESC1 *pResourceDesc, D3D12_BARRIER_LAYOUT InitialLayout, const D3D12_CLEAR_VALUE *pOptimizedClearValue, UINT32 NumCastableFormats, const DXGI_FORMAT *pCastableFormats, REFIID riidResource, void **ppvResource)
 Similar to Allocator::CreateAliasingResource1, but there are initial layout instead of state and castable formats list.
HRESULT CreatePool (const POOL_DESC *pPoolDesc, Pool **ppPool)
HRESULT CreatePool (const POOL_DESC *pPoolDesc, Pool **ppPool)
 Creates custom pool.
void SetCurrentFrameIndex (UINT frameIndex)
void SetCurrentFrameIndex (UINT frameIndex)
 Sets the index of the current frame.
void GetBudget (Budget *pLocalBudget, Budget *pNonLocalBudget)
void GetBudget (Budget *pLocalBudget, Budget *pNonLocalBudget)
 Retrieves information about current memory usage and budget.
void CalculateStatistics (TotalStatistics *pStats)
void CalculateStatistics (TotalStatistics *pStats)
 Retrieves statistics from current state of the allocator.
void BuildStatsString (WCHAR **ppStatsString, BOOL DetailedMap) const
void BuildStatsString (WCHAR **ppStatsString, BOOL DetailedMap) const
 Builds and returns statistics as a string in JSON format.
void FreeStatsString (WCHAR *pStatsString) const
void FreeStatsString (WCHAR *pStatsString) const
 Frees memory of a string returned from Allocator::BuildStatsString.
void BeginDefragmentation (const DEFRAGMENTATION_DESC *pDesc, DefragmentationContext **ppContext)
void BeginDefragmentation (const DEFRAGMENTATION_DESC *pDesc, DefragmentationContext **ppContext)
 Begins defragmentation process of the default pools.

Detailed Description

@@ -187,7 +187,7 @@

- DefragmentationContext ** ppContext ) + DefragmentationContext ** ppContext )
@@ -200,7 +200,7 @@

Defragmentation.

+

For more information about defragmentation, see documentation chapter: Defragmentation.

@@ -440,7 +440,7 @@

- Pool ** ppPool ) + Pool ** ppPool )
@@ -509,7 +509,7 @@

Note
This function creates a new resource. Sub-allocation of parts of one large buffer, although recommended as a good practice, is out of scope of this library and could be implemented by the user as a higher-level logic on top of it, e.g. using the Virtual allocator feature.
+
Note
This function creates a new resource. Sub-allocation of parts of one large buffer, although recommended as a good practice, is out of scope of this library and could be implemented by the user as a higher-level logic on top of it, e.g. using the Virtual allocator feature.

@@ -859,7 +859,7 @@

diff --git a/docs/html/class_d3_d12_m_a_1_1_defragmentation_context-members.html b/docs/html/class_d3_d12_m_a_1_1_defragmentation_context-members.html index 6cfb1dd..38e4511 100644 --- a/docs/html/class_d3_d12_m_a_1_1_defragmentation_context-members.html +++ b/docs/html/class_d3_d12_m_a_1_1_defragmentation_context-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -88,7 +88,7 @@ diff --git a/docs/html/class_d3_d12_m_a_1_1_defragmentation_context.html b/docs/html/class_d3_d12_m_a_1_1_defragmentation_context.html index 7ab0038..067d8ba 100644 --- a/docs/html/class_d3_d12_m_a_1_1_defragmentation_context.html +++ b/docs/html/class_d3_d12_m_a_1_1_defragmentation_context.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::DefragmentationContext Class Reference @@ -31,7 +31,7 @@ - + @@ -95,11 +95,11 @@ - + - + - +

Public Member Functions

HRESULT BeginPass (DEFRAGMENTATION_PASS_MOVE_INFO *pPassInfo)
HRESULT BeginPass (DEFRAGMENTATION_PASS_MOVE_INFO *pPassInfo)
 Starts single defragmentation pass.
HRESULT EndPass (DEFRAGMENTATION_PASS_MOVE_INFO *pPassInfo)
HRESULT EndPass (DEFRAGMENTATION_PASS_MOVE_INFO *pPassInfo)
 Ends single defragmentation pass.
void GetStats (DEFRAGMENTATION_STATS *pStats)
void GetStats (DEFRAGMENTATION_STATS *pStats)
 Returns statistics of the defragmentation performed so far.

Detailed Description

@@ -193,7 +193,7 @@

diff --git a/docs/html/class_d3_d12_m_a_1_1_pool-members.html b/docs/html/class_d3_d12_m_a_1_1_pool-members.html index 9acf601..7a7ad20 100644 --- a/docs/html/class_d3_d12_m_a_1_1_pool-members.html +++ b/docs/html/class_d3_d12_m_a_1_1_pool-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -91,7 +91,7 @@ diff --git a/docs/html/class_d3_d12_m_a_1_1_pool.html b/docs/html/class_d3_d12_m_a_1_1_pool.html index 07742d9..2caed56 100644 --- a/docs/html/class_d3_d12_m_a_1_1_pool.html +++ b/docs/html/class_d3_d12_m_a_1_1_pool.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::Pool Class Reference @@ -31,7 +31,7 @@ - + @@ -95,17 +95,17 @@ - + - + - + - + - + - +

Public Member Functions

POOL_DESC GetDesc () const
POOL_DESC GetDesc () const
 Returns copy of parameters of the pool.
void GetStatistics (Statistics *pStats)
void GetStatistics (Statistics *pStats)
 Retrieves basic statistics of the custom pool that are fast to calculate.
void CalculateStatistics (DetailedStatistics *pStats)
void CalculateStatistics (DetailedStatistics *pStats)
 Retrieves detailed statistics of the custom pool that are slower to calculate.
void SetName (LPCWSTR Name)
void SetName (LPCWSTR Name)
 Associates a name with the pool. This name is for use in debug diagnostics and tools.
LPCWSTR GetName () const
LPCWSTR GetName () const
 Returns the name associated with the pool object.
HRESULT BeginDefragmentation (const DEFRAGMENTATION_DESC *pDesc, DefragmentationContext **ppContext)
HRESULT BeginDefragmentation (const DEFRAGMENTATION_DESC *pDesc, DefragmentationContext **ppContext)
 Begins defragmentation process of the current pool.

Detailed Description

@@ -145,7 +145,7 @@

E_NOINTERFACE if defragmentation is not supported. -

For more information about defragmentation, see documentation chapter: Defragmentation.

+

For more information about defragmentation, see documentation chapter: Defragmentation.

@@ -267,7 +267,7 @@

diff --git a/docs/html/class_d3_d12_m_a_1_1_virtual_block-members.html b/docs/html/class_d3_d12_m_a_1_1_virtual_block-members.html index 1e40ead..968aeb2 100644 --- a/docs/html/class_d3_d12_m_a_1_1_virtual_block-members.html +++ b/docs/html/class_d3_d12_m_a_1_1_virtual_block-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -96,7 +96,7 @@ diff --git a/docs/html/class_d3_d12_m_a_1_1_virtual_block.html b/docs/html/class_d3_d12_m_a_1_1_virtual_block.html index 0cb9114..de58557 100644 --- a/docs/html/class_d3_d12_m_a_1_1_virtual_block.html +++ b/docs/html/class_d3_d12_m_a_1_1_virtual_block.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::VirtualBlock Class Reference @@ -31,7 +31,7 @@ - + @@ -95,25 +95,25 @@ - + - + - + - + - + - + - + - + - + - +

Public Member Functions

BOOL IsEmpty () const
BOOL IsEmpty () const
 Returns true if the block is empty - contains 0 allocations.
void GetAllocationInfo (VirtualAllocation allocation, VIRTUAL_ALLOCATION_INFO *pInfo) const
void GetAllocationInfo (VirtualAllocation allocation, VIRTUAL_ALLOCATION_INFO *pInfo) const
 Returns information about an allocation - its offset, size and custom pointer.
HRESULT Allocate (const VIRTUAL_ALLOCATION_DESC *pDesc, VirtualAllocation *pAllocation, UINT64 *pOffset)
HRESULT Allocate (const VIRTUAL_ALLOCATION_DESC *pDesc, VirtualAllocation *pAllocation, UINT64 *pOffset)
 Creates new allocation.
void FreeAllocation (VirtualAllocation allocation)
void FreeAllocation (VirtualAllocation allocation)
 Frees the allocation.
void Clear ()
void Clear ()
 Frees all the allocations.
void SetAllocationPrivateData (VirtualAllocation allocation, void *pPrivateData)
void SetAllocationPrivateData (VirtualAllocation allocation, void *pPrivateData)
 Changes custom pointer for an allocation to a new value.
void GetStatistics (Statistics *pStats) const
void GetStatistics (Statistics *pStats) const
 Retrieves basic statistics of the virtual block that are fast to calculate.
void CalculateStatistics (DetailedStatistics *pStats) const
void CalculateStatistics (DetailedStatistics *pStats) const
 Retrieves detailed statistics of the virtual block that are slower to calculate.
void BuildStatsString (WCHAR **ppStatsString) const
void BuildStatsString (WCHAR **ppStatsString) const
 Builds and returns statistics as a string in JSON format, including the list of allocations with their parameters.
void FreeStatsString (WCHAR *pStatsString) const
void FreeStatsString (WCHAR *pStatsString) const
 Frees memory of a string returned from VirtualBlock::BuildStatsString.

Detailed Description

@@ -364,7 +364,7 @@

diff --git a/docs/html/classes.html b/docs/html/classes.html index e85eb86..7988851 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class Index @@ -31,7 +31,7 @@ - + @@ -104,7 +104,7 @@ diff --git a/docs/html/configuration.html b/docs/html/configuration.html index 3ab9ada..b5c3d39 100644 --- a/docs/html/configuration.html +++ b/docs/html/configuration.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Configuration @@ -31,7 +31,7 @@ - + @@ -129,14 +129,14 @@

If your bug goes away after enabling margins, it means it may be caused by memory being overwritten outside of allocation boundaries. It is not 100% certain though. Change in application behavior may also be caused by different order and distribution of allocations across memory blocks after margins are applied.

Margins work with all memory heap types.

Margin is applied only to placed allocations made out of memory heaps and not to committed allocations, which have their own, implicit memory heap of specific size. It is thus not applied to allocations made using D3D12MA::ALLOCATION_FLAG_COMMITTED flag or those automatically decided to put into committed allocations, e.g. due to its large size.

-

Margins appear in JSON dump as part of free space.

+

Margins appear in JSON dump as part of free space.

Note that enabling margins increases memory usage and fragmentation.

-

Margins do not apply to Virtual allocator.

+

Margins do not apply to Virtual allocator.

diff --git a/docs/html/custom_pools.html b/docs/html/custom_pools.html index 0bfd570..d02565b 100644 --- a/docs/html/custom_pools.html +++ b/docs/html/custom_pools.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Custom memory pools @@ -31,7 +31,7 @@ - + @@ -128,7 +128,7 @@

diff --git a/docs/html/defragmentation.html b/docs/html/defragmentation.html index b82dbde..25cabdd 100644 --- a/docs/html/defragmentation.html +++ b/docs/html/defragmentation.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Defragmentation @@ -31,7 +31,7 @@ - + @@ -199,7 +199,7 @@ diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index 6e6d46e..b66498a 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: C:/Code/D3D12MemoryAllocator/REPO/include Directory Reference @@ -31,7 +31,7 @@ - + @@ -81,12 +81,12 @@ - +

Files

 
D3D12MemAlloc.h
 
D3D12MemAlloc.h
diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css index 5d2eecd..788923a 100644 --- a/docs/html/doxygen.css +++ b/docs/html/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.14.0*/ +/* The standard CSS for doxygen 1.16.1*/ html { /* page base colors */ @@ -19,7 +19,6 @@ html { --header-separator-color: #C4CFE5; --group-header-separator-color: #D9E0EE; --group-header-color: #354C7B; ---inherit-header-color: gray; --footer-foreground-color: #2A3D61; --footer-logo-width: 75px; @@ -28,8 +27,6 @@ html { --title-background-color: white; --title-separator-color: #C4CFE5; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; --blockquote-background-color: #F7F8FB; --blockquote-border-color: #9CAFD4; @@ -39,10 +36,6 @@ html { --icon-background-color: #728DC1; --icon-foreground-color: white; -/* ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg');*/ --icon-folder-open-fill-color: #C4CFE5; --icon-folder-fill-color: #D8DFEE; --icon-folder-border-color: #4665A2; @@ -51,7 +44,6 @@ html { /* brief member declaration list */ --memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; --memdecl-foreground-color: #555; --memdecl-template-color: #4665A2; --memdecl-border-color: #D5DDEC; @@ -61,7 +53,6 @@ html { --memdef-title-background-color: #E2E8F2; --memdef-proto-background-color: #EEF1F7; --memdef-proto-text-color: #253555; ---memdef-doc-background-color: white; --memdef-param-name-color: #602020; --memdef-template-color: #4665A2; @@ -83,21 +74,17 @@ html { --nav-breadcrumb-separator-color: #C4CFE5; --nav-breadcrumb-active-bg: #EEF1F7; --nav-breadcrumb-color: #354C7B; ---nav-breadcrumb-border-color: #E1E7F2; --nav-splitbar-bg-color: #DCE2EF; --nav-splitbar-handle-color: #9CAFD4; --nav-font-size-level1: 13px; --nav-font-size-level2: 10px; --nav-font-size-level3: 9px; --nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; --nav-menu-button-color: #364D7C; --nav-menu-background-color: white; --nav-menu-foreground-color: #555555; --nav-menu-active-bg: #DCE2EF; --nav-menu-active-color: #9CAFD4; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); --nav-arrow-color: #B6C4DF; --nav-arrow-selected-color: #90A5CE; @@ -145,8 +132,6 @@ html { --code-vhdl-char-color: #000000; --code-vhdl-keyword-color: #700070; --code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; --fragment-foreground-color: black; --fragment-background-color: #FBFCFD; --fragment-border-color: #C4CFE5; @@ -158,6 +143,7 @@ html { --fragment-lineno-link-hover-fg-color: #4665A2; --fragment-lineno-link-hover-bg-color: #C8C8C8; --fragment-copy-ok-color: #2EC82E; +--fragment-highlight-filter: -3; --tooltip-foreground-color: black; --tooltip-background-color: rgba(255,255,255,0.8); --tooltip-arrow-background-color: white; @@ -201,6 +187,11 @@ html { --invariant-color-bg: #d8f1e3; --invariant-color-hl: #44b86f; --invariant-color-text: #265532; +--satisfies-color-hl: #b61825; +--satisfies-color-bg: #f8d1cc; +--verifies-color-hl: #b61825; +--verifies-color-bg: #f8d1cc; + } @media (prefers-color-scheme: dark) { @@ -225,7 +216,6 @@ html { --header-separator-color: #141C2E; --group-header-separator-color: #1D2A43; --group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; --footer-foreground-color: #5B7AB7; --footer-logo-width: 60px; @@ -234,8 +224,6 @@ html { --title-background-color: #090D16; --title-separator-color: #212F4B; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; --blockquote-background-color: #101826; --blockquote-border-color: #283A5D; @@ -253,7 +241,6 @@ html { /* brief member declaration list */ --memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; --memdecl-foreground-color: #BBB; --memdecl-template-color: #7C95C6; --memdecl-border-color: #233250; @@ -263,7 +250,6 @@ html { --memdef-title-background-color: #1B2840; --memdef-proto-background-color: #19243A; --memdef-proto-text-color: #9DB0D4; ---memdef-doc-background-color: black; --memdef-param-name-color: #D28757; --memdef-template-color: #7C95C6; @@ -285,21 +271,17 @@ html { --nav-breadcrumb-separator-color: #212F4B; --nav-breadcrumb-active-bg: #1D2A43; --nav-breadcrumb-color: #90A5CE; ---nav-breadcrumb-border-color: #2A3D61; --nav-splitbar-bg-color: #283A5D; --nav-splitbar-handle-color: #4665A2; --nav-font-size-level1: 13px; --nav-font-size-level2: 10px; --nav-font-size-level3: 9px; --nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; --nav-menu-button-color: #B6C4DF; --nav-menu-background-color: #05070C; --nav-menu-foreground-color: #BBBBBB; --nav-menu-active-bg: #1D2A43; --nav-menu-active-color: #C9D3E7; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); --nav-arrow-color: #4665A2; --nav-arrow-selected-color: #6884BD; @@ -347,8 +329,6 @@ html { --code-vhdl-char-color: #C0C0C0; --code-vhdl-keyword-color: #CF53C9; --code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; --fragment-foreground-color: #C9D1D9; --fragment-background-color: #090D16; --fragment-border-color: #30363D; @@ -360,6 +340,7 @@ html { --fragment-lineno-link-hover-fg-color: #8E96A1; --fragment-lineno-link-hover-bg-color: #505050; --fragment-copy-ok-color: #0EA80E; +--fragment-highlight-filter: 5; --tooltip-foreground-color: #C9D1D9; --tooltip-background-color: #202020; --tooltip-arrow-background-color: #202020; @@ -403,6 +384,11 @@ html { --invariant-color-bg: #303a35; --invariant-color-hl: #76ce96; --invariant-color-text: #cceed5; +--satisfies-color-hl: #ad2617; +--satisfies-color-bg: #2e1917; +--verifies-color-hl: #ad2617; +--verifies-color-bg: #2e1917; + }} body { background-color: var(--page-background-color); @@ -483,6 +469,7 @@ dt { p.startli, p.startdd { margin-top: 2px; + margin-bottom: 0px; } th p.starttd, th p.intertd, th p.endtd { @@ -674,6 +661,11 @@ a.code.hl_event { /* style for links to event names in code snippets */ } a.code.hl_sequence { /* style for links to sequence names in code snippets */ } a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } +div.embeddoc { + font-family: var(--font-family-monospace); + padding-left: 10px; +} + /* @end */ dl.el { @@ -681,15 +673,35 @@ dl.el { } ul.check { - list-style:none; - text-indent: -16px; - padding-left: 38px; + list-style: none; + padding-left: 40px; + margin: 0; +} + +ul.check li { + position: relative; +} + +li.unchecked::before, li.checked::before { + position: absolute; + left: -18px; + top: 0; } -li.unchecked:before { - content: "\2610\A0"; + +li.unchecked::before { + content: "☐"; +} + +li.checked::before { + content: "☑"; +} + +ul.check li > p { + display: inline; } -li.checked:before { - content: "\2611\A0"; + +ul.check li > p:not(:first-child) { + display: block; } ol { @@ -744,6 +756,7 @@ pre.fragment { span.tt { white-space: pre; font-family: var(--font-family-monospace); + background-color: var(--fragment-background-color); } .clipboard { @@ -1159,6 +1172,8 @@ tr:not(:first-child) > td.ititle { border-bottom: 1px solid var(--memdecl-border-color); padding-left: 10px; transition: none; + vertical-align: top; + text-align: right; } .memItemRight { @@ -1167,6 +1182,7 @@ tr:not(:first-child) > td.ititle { border-bottom: 1px solid var(--memdecl-border-color); padding-right: 10px; transition: none; + vertical-align: bottom; } tr.heading + tr[class^='memitem'] td.memItemLeft, @@ -1720,7 +1736,6 @@ table.fieldtable { text-align: right; } - .fieldtable td.fielddoc { border-bottom: 1px solid var(--memdef-border-color); } @@ -1750,6 +1765,41 @@ table.fieldtable { border-bottom: 1px solid var(--memdef-border-color); } +/* style requirements page */ + +div.req_title { + text-decoration-line: underline; + text-decoration-style: solid; + text-decoration-color: var(--table-cell-border-color); + text-decoration-thickness: 1px; + font-weight: bold; +} + +table.reqlist tr > td:first-child { + text-align: right; + font-weight: bold; +} + +div.missing_satisfies { + border-left: 8px solid var(--satisfies-color-hl); + border-radius: 4px; + background: var(--satisfies-color-bg); + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; +} + +div.missing_verifies { + border-left: 8px solid var(--verifies-color-hl); + border-radius: 4px; + background: var(--verifies-color-bg); + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; +} + /* ----------- navigation breadcrumb styling ----------- */ #nav-path ul { @@ -1914,6 +1964,10 @@ dl.warning dt, dl.attention dt, dl.important dt { color: var(--warning-color-hl); } +dl.warning .tt, dl.attention .tt, dl.important .tt { + background-color: hsl(from var(--warning-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + dl.note, dl.remark { background: var(--note-color-bg); border-left: 8px solid var(--note-color-hl); @@ -1924,6 +1978,10 @@ dl.note dt, dl.remark dt { color: var(--note-color-hl); } +dl.note .tt, dl.remark .tt { + background-color: hsl(from var(--note-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + dl.todo { background: var(--todo-color-bg); border-left: 8px solid var(--todo-color-hl); @@ -1934,6 +1992,10 @@ dl.todo dt { color: var(--todo-color-hl); } +dl.todo .tt { + background-color: hsl(from var(--todo-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + dl.test { background: var(--test-color-bg); border-left: 8px solid var(--test-color-hl); @@ -1944,6 +2006,10 @@ dl.test dt { color: var(--test-color-hl); } +dl.test .tt { + background-color: hsl(from var(--test-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + dl.bug dt a { color: var(--bug-color-hl) !important; } @@ -1958,6 +2024,10 @@ dl.bug dt a { color: var(--bug-color-hl) !important; } +dl.bug .tt { + background-color: hsl(from var(--bug-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + dl.deprecated { background: var(--deprecated-color-bg); border-left: 8px solid var(--deprecated-color-hl); @@ -1968,12 +2038,11 @@ dl.deprecated dt a { color: var(--deprecated-color-hl) !important; } -dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, -dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, -dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { - margin-inline-start: 0px; +dl.deprecated .tt { + background-color: hsl(from var(--deprecated-color-bg) h s calc(l + var(--fragment-highlight-filter))); } + dl.invariant, dl.pre, dl.post { background: var(--invariant-color-bg); border-left: 8px solid var(--invariant-color-hl); @@ -1984,6 +2053,16 @@ dl.invariant dt, dl.pre dt, dl.post dt { color: var(--invariant-color-hl); } +dl.invariant .tt, dl.pre .tt, dl.post .tt { + background-color: hsl(from var(--invariant-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + #projectrow { diff --git a/docs/html/doxygen_crawl.html b/docs/html/doxygen_crawl.html index c4ffff1..6f07608 100644 --- a/docs/html/doxygen_crawl.html +++ b/docs/html/doxygen_crawl.html @@ -4,7 +4,7 @@ Validator / crawler helper - + diff --git a/docs/html/faq.html b/docs/html/faq.html index 4948020..ec4be52 100644 --- a/docs/html/faq.html +++ b/docs/html/faq.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Frequently asked questions @@ -31,7 +31,7 @@ - + @@ -86,7 +86,7 @@

D3D12MA helps with handling one aspect of DX12 usage, which is GPU memory management - allocation of ID3D12Heap objects and creation of ID3D12Resource objects - buffers and textures.

Do I need to use D3D12MA?

You don't need to, but it may be beneficial in many cases. DX12 is a complex and low-level API, so libraries like this that abstract certain aspects of the API and bring them to a higher level are useful. When developing any non-trivial graphics application, you may benefit from using a memory allocator. Using D3D12MA can save time compared to implementing your own.

-

In DX12 you can create each resource separately with its own implicit memory heap by calling CreateCommittedResource, but this may not be the optimal solution. For more information, see Committed versus placed resources.

+

In DX12 you can create each resource separately with its own implicit memory heap by calling CreateCommittedResource, but this may not be the optimal solution. For more information, see Committed versus placed resources.

When should I not use D3D12MA?

While D3D12MA is useful for many applications that use the DX12 API, there are cases when it may be a better choice not to use it. For example, if the application is very simple, e.g. serving as a sample or a learning exercise to help you understand or teach others the basics of DX12, and it creates only a small number of buffers and textures, then including D3D12MA may be an overkill. Developing your own memory allocator may also be a good learning exercise.

What are the benefits of using D3D12MA?

@@ -145,13 +145,13 @@
  • Try making your allocation using pure DX12 functions like CreateCommittedResource() rather than D3D12MA and see if the bug persists.
  • I found some compilation warnings. How can we fix them?

    -

    Seeing compiler warnings may be annoying to some developers, but it is a design decision to not fix all of them. Due to the nature of the C++ language, certain preprocessor macros can make some variables unused, function parameters unreferenced, or conditional expressions constant in some configurations. The code of this library should not be bigger or more complicated just to silence these warnings. It is recommended to disable such warnings instead. For more information, see Features not supported.

    +

    Seeing compiler warnings may be annoying to some developers, but it is a design decision to not fix all of them. Due to the nature of the C++ language, certain preprocessor macros can make some variables unused, function parameters unreferenced, or conditional expressions constant in some configurations. The code of this library should not be bigger or more complicated just to silence these warnings. It is recommended to disable such warnings instead. For more information, see Features not supported.

    However, if you observe a warning that is really dangerous, e.g., about an implicit conversion from a larger to a smaller integer type, please report it and it will be fixed ASAP.

    diff --git a/docs/html/files.html b/docs/html/files.html index 5ce45bf..0dd807c 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: File List @@ -31,7 +31,7 @@ - + @@ -83,7 +83,7 @@ diff --git a/docs/html/functions.html b/docs/html/functions.html index de18e05..f3f3f9d 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class Members @@ -31,7 +31,7 @@ - + @@ -251,7 +251,7 @@

    - u -

      diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html index 9bc7749..5ec93e3 100644 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class Members - Functions @@ -31,7 +31,7 @@ - + @@ -151,7 +151,7 @@

      - s -

        diff --git a/docs/html/functions_rela.html b/docs/html/functions_rela.html index f21eddd..4920bfa 100644 --- a/docs/html/functions_rela.html +++ b/docs/html/functions_rela.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class Members - Related Symbols @@ -31,7 +31,7 @@ - + @@ -79,7 +79,7 @@ diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index fe4ed5f..0c1a6ea 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class Members - Variables @@ -31,7 +31,7 @@ - + @@ -191,7 +191,7 @@

        - u -

          diff --git a/docs/html/general_considerations.html b/docs/html/general_considerations.html index 05a30ff..39a4dd9 100644 --- a/docs/html/general_considerations.html +++ b/docs/html/general_considerations.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: General considerations @@ -31,7 +31,7 @@ - + @@ -100,7 +100,7 @@

          Virtual allocator to manage descriptors and their ranges inside a descriptor heap. +
        • Descriptor allocation. Although also called "heaps", objects that represent descriptors are separate part of the D3D12 API from buffers and textures. You can still use Virtual allocator to manage descriptors and their ranges inside a descriptor heap.
        • Support for reserved (tiled) resources. We don't recommend using them. For more information, see [1].
        • Support for ID3D12Device::Evict and MakeResident. We don't recommend using them. You can call them on the D3D12 objects manually. Plese keep in mind, however, that eviction happens on the level of entire ID3D12Heap memory blocks and not individual buffers or textures which may be placed inside them.
        • Handling CPU memory allocation failures. When dynamically creating small C++ objects in CPU memory (not the GPU memory), allocation failures are not handled gracefully, because that would complicate code significantly and is usually not needed in desktop PC applications anyway. Success of an allocation is just checked with an assert.
        • @@ -112,7 +112,7 @@

          diff --git a/docs/html/globals.html b/docs/html/globals.html index 27989c1..40eb6d9 100644 --- a/docs/html/globals.html +++ b/docs/html/globals.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: File Members @@ -31,7 +31,7 @@ - + @@ -82,7 +82,7 @@ diff --git a/docs/html/globals_defs.html b/docs/html/globals_defs.html index 00db10d..4d32b9b 100644 --- a/docs/html/globals_defs.html +++ b/docs/html/globals_defs.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: File Members @@ -31,7 +31,7 @@ - + @@ -82,7 +82,7 @@ diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html index 5785855..88b596e 100644 --- a/docs/html/hierarchy.html +++ b/docs/html/hierarchy.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Class Hierarchy @@ -31,7 +31,7 @@ - + @@ -107,7 +107,7 @@ diff --git a/docs/html/index.html b/docs/html/index.html index d99307f..c11d82c 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12 Memory Allocator @@ -31,7 +31,7 @@ - + @@ -74,47 +74,47 @@
          D3D12 Memory Allocator
          -

          Version 3.1.0-development (2025-XX-XX)

          -

          Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved.
          +

          diff --git a/docs/html/linear_algorithm.html b/docs/html/linear_algorithm.html index 0bc59b0..93f913c 100644 --- a/docs/html/linear_algorithm.html +++ b/docs/html/linear_algorithm.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Linear allocation algorithm @@ -31,7 +31,7 @@
          - + @@ -111,12 +111,12 @@

          Ring buffer is available only in pools with one memory block - D3D12MA::POOL_DESC::MaxBlockCount must be 1. Otherwise behavior is undefined.

          Additional considerations

          -

          Linear algorithm can also be used with Virtual allocator. See flag D3D12MA::VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR.

          +

          Linear algorithm can also be used with Virtual allocator. See flag D3D12MA::VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR.

          diff --git a/docs/html/namespace_d3_d12_m_a.html b/docs/html/namespace_d3_d12_m_a.html index d801b62..3d028a6 100644 --- a/docs/html/namespace_d3_d12_m_a.html +++ b/docs/html/namespace_d3_d12_m_a.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA Namespace Reference @@ -31,7 +31,7 @@ - + @@ -82,69 +82,69 @@ - - - + - + - - - - - + + + + + + + - - - - - - - - - + + + + + - + - + - + - + - - - - - + - - - - - + + + + + + + + + - + - - - - - + + + + + + + + +

          Classes

          class  Allocation
           Represents single memory allocation. More...
          struct  ALLOCATION_CALLBACKS
          struct  ALLOCATION_CALLBACKS
           Custom callbacks to CPU memory allocation functions. More...
          struct  ALLOCATION_DESC
          struct  ALLOCATION_DESC
           Parameters of created D3D12MA::Allocation object. To be used with Allocator::CreateResource. More...
          class  Allocator
           Represents main object of this library initialized for particular ID3D12Device. More...
          struct  ALLOCATOR_DESC
           Parameters of created Allocator object. To be used with CreateAllocator(). More...
          struct  Budget
          struct  Statistics
           Calculated statistics of memory usage e.g. in a specific memory heap type, memory segment group, custom pool, or total. More...
          struct  DetailedStatistics
           More detailed statistics than D3D12MA::Statistics. More...
          struct  TotalStatistics
           General statistics from current state of the allocator - total memory usage across all memory heaps and segments. More...
          struct  Budget
           Statistics of current memory usage and available budget for a specific memory segment group. More...
          struct  CALLOCATION_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::ALLOCATION_DESC structure. More...
          struct  CPOOL_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::POOL_DESC structure. More...
          struct  CVIRTUAL_ALLOCATION_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_ALLOCATION_DESC structure. More...
          struct  CVIRTUAL_BLOCK_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_BLOCK_DESC structure. More...
          struct  DEFRAGMENTATION_DESC
          struct  VirtualAllocation
           Represents single memory allocation done inside VirtualBlock. More...
          class  Allocation
           Represents single memory allocation. More...
          struct  DEFRAGMENTATION_DESC
           Parameters for defragmentation. More...
          struct  DEFRAGMENTATION_MOVE
          struct  DEFRAGMENTATION_MOVE
           Single move of an allocation to be done for defragmentation. More...
          struct  DEFRAGMENTATION_PASS_MOVE_INFO
          struct  DEFRAGMENTATION_PASS_MOVE_INFO
           Parameters for incremental defragmentation steps. More...
          struct  DEFRAGMENTATION_STATS
          struct  DEFRAGMENTATION_STATS
           Statistics returned for defragmentation process by function DefragmentationContext::GetStats(). More...
          class  DefragmentationContext
          class  DefragmentationContext
           Represents defragmentation process in progress. More...
          struct  DetailedStatistics
           More detailed statistics than D3D12MA::Statistics. More...
          class  Pool
           Custom memory pool. More...
          struct  POOL_DESC
          struct  POOL_DESC
           Parameters of created D3D12MA::Pool object. To be used with D3D12MA::Allocator::CreatePool. More...
          struct  Statistics
           Calculated statistics of memory usage e.g. in a specific memory heap type, memory segment group, custom pool, or total. More...
          struct  TotalStatistics
           General statistics from current state of the allocator - total memory usage across all memory heaps and segments. More...
          struct  VIRTUAL_ALLOCATION_DESC
          class  Pool
           Custom memory pool. More...
          struct  ALLOCATOR_DESC
           Parameters of created Allocator object. To be used with CreateAllocator(). More...
          class  Allocator
           Represents main object of this library initialized for particular ID3D12Device. More...
          struct  VIRTUAL_BLOCK_DESC
           Parameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock(). More...
          struct  VIRTUAL_ALLOCATION_DESC
           Parameters of created virtual allocation to be passed to VirtualBlock::Allocate(). More...
          struct  VIRTUAL_ALLOCATION_INFO
          struct  VIRTUAL_ALLOCATION_INFO
           Parameters of an existing virtual allocation, returned by VirtualBlock::GetAllocationInfo(). More...
          struct  VIRTUAL_BLOCK_DESC
           Parameters of created D3D12MA::VirtualBlock object to be passed to CreateVirtualBlock(). More...
          struct  VirtualAllocation
           Represents single memory allocation done inside VirtualBlock. More...
          class  VirtualBlock
          class  VirtualBlock
           Represents pure allocation algorithm and a data structure with allocations in some memory block, without actually allocating any GPU memory. More...
          struct  CALLOCATION_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::ALLOCATION_DESC structure. More...
          struct  CPOOL_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::POOL_DESC structure. More...
          struct  CVIRTUAL_BLOCK_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_BLOCK_DESC structure. More...
          struct  CVIRTUAL_ALLOCATION_DESC
           Helper structure that helps with complete and conscise initialization of the D3D12MA::VIRTUAL_ALLOCATION_DESC structure. More...
          - + - + - +

          Typedefs

          typedef UINT64 AllocHandle
          typedef UINT64 AllocHandle
           Unique identifier of single allocation done inside the memory heap.
          using ALLOCATE_FUNC_PTR = void* (*)(size_t Size, size_t Alignment, void* pPrivateData)
          using ALLOCATE_FUNC_PTR = void* (*)(size_t Size, size_t Alignment, void* pPrivateData)
           Pointer to custom callback function that allocates CPU memory.
          using FREE_FUNC_PTR = void (*)(void* pMemory, void* pPrivateData)
          using FREE_FUNC_PTR = void (*)(void* pMemory, void* pPrivateData)
           Pointer to custom callback function that deallocates CPU memory.
          - - - + - - + - - - + - - + - - + - +

          Enumerations

          enum  ALLOCATION_FLAGS {
          +
          enum  ALLOCATION_FLAGS {
            ALLOCATION_FLAG_NONE = 0 , ALLOCATION_FLAG_COMMITTED = 0x1 , ALLOCATION_FLAG_NEVER_ALLOCATE = 0x2 @@ -161,19 +161,19 @@ , ALLOCATION_FLAG_STRATEGY_MASK
          }
           Bit flags to be used with ALLOCATION_DESC::Flags. More...
          enum  DEFRAGMENTATION_FLAGS { DEFRAGMENTATION_FLAG_ALGORITHM_FAST = 0x1 +
           Bit flags to be used with ALLOCATION_DESC::Flags. More...
          enum  DEFRAGMENTATION_FLAGS { DEFRAGMENTATION_FLAG_ALGORITHM_FAST = 0x1 , DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED = 0x2 , DEFRAGMENTATION_FLAG_ALGORITHM_FULL = 0x4 , DEFRAGMENTATION_FLAG_ALGORITHM_MASK }
           Flags to be passed as DEFRAGMENTATION_DESC::Flags. More...
          enum  DEFRAGMENTATION_MOVE_OPERATION { DEFRAGMENTATION_MOVE_OPERATION_COPY = 0 +
           Flags to be passed as DEFRAGMENTATION_DESC::Flags. More...
          enum  DEFRAGMENTATION_MOVE_OPERATION { DEFRAGMENTATION_MOVE_OPERATION_COPY = 0 , DEFRAGMENTATION_MOVE_OPERATION_IGNORE = 1 , DEFRAGMENTATION_MOVE_OPERATION_DESTROY = 2 }
           Operation performed on single defragmentation move. More...
          enum  POOL_FLAGS {
          +
          enum  POOL_FLAGS {
            POOL_FLAG_NONE = 0 , POOL_FLAG_ALGORITHM_LINEAR = 0x1 , POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED = 0x2 @@ -182,8 +182,8 @@   POOL_FLAG_ALGORITHM_MASK = POOL_FLAG_ALGORITHM_LINEAR
          }
           Bit flags to be used with POOL_DESC::Flags. More...
          enum  ALLOCATOR_FLAGS {
          +
           Bit flags to be used with POOL_DESC::Flags. More...
          enum  ALLOCATOR_FLAGS {
            ALLOCATOR_FLAG_NONE = 0 , ALLOCATOR_FLAG_SINGLETHREADED = 0x1 , ALLOCATOR_FLAG_ALWAYS_COMMITTED = 0x2 @@ -194,13 +194,13 @@ , ALLOCATOR_FLAG_DONT_USE_TIGHT_ALIGNMENT = 0x20
          }
           Bit flags to be used with ALLOCATOR_DESC::Flags. More...
          enum  VIRTUAL_BLOCK_FLAGS { VIRTUAL_BLOCK_FLAG_NONE = 0 +
           Bit flags to be used with ALLOCATOR_DESC::Flags. More...
          enum  VIRTUAL_BLOCK_FLAGS { VIRTUAL_BLOCK_FLAG_NONE = 0 , VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR = POOL_FLAG_ALGORITHM_LINEAR , VIRTUAL_BLOCK_FLAG_ALGORITHM_MASK = POOL_FLAG_ALGORITHM_MASK }
           Bit flags to be used with VIRTUAL_BLOCK_DESC::Flags. More...
          enum  VIRTUAL_ALLOCATION_FLAGS {
          +
           Bit flags to be used with VIRTUAL_BLOCK_DESC::Flags. More...
          enum  VIRTUAL_ALLOCATION_FLAGS {
            VIRTUAL_ALLOCATION_FLAG_NONE = 0 , VIRTUAL_ALLOCATION_FLAG_UPPER_ADDRESS = ALLOCATION_FLAG_UPPER_ADDRESS , VIRTUAL_ALLOCATION_FLAG_STRATEGY_MIN_MEMORY = ALLOCATION_FLAG_STRATEGY_MIN_MEMORY @@ -210,13 +210,13 @@ , VIRTUAL_ALLOCATION_FLAG_STRATEGY_MASK = ALLOCATION_FLAG_STRATEGY_MASK
          }
           Bit flags to be used with VIRTUAL_ALLOCATION_DESC::Flags. More...
           Bit flags to be used with VIRTUAL_ALLOCATION_DESC::Flags. More...
          - + - +

          Functions

          D3D12MA_API HRESULT CreateAllocator (const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)
          D3D12MA_API HRESULT CreateAllocator (const ALLOCATOR_DESC *pDesc, Allocator **ppAllocator)
           Creates new main D3D12MA::Allocator object and returns it through ppAllocator.
          D3D12MA_API HRESULT CreateVirtualBlock (const VIRTUAL_BLOCK_DESC *pDesc, VirtualBlock **ppVirtualBlock)
          D3D12MA_API HRESULT CreateVirtualBlock (const VIRTUAL_BLOCK_DESC *pDesc, VirtualBlock **ppVirtualBlock)
           Creates new D3D12MA::VirtualBlock object and returns it through ppVirtualBlock.

          Typedef Documentation

          @@ -344,7 +344,7 @@

          D3D12MA::POOL_FLAG_ALWAYS_COMMITTED.

          ALLOCATOR_FLAG_DEFAULT_POOLS_NOT_ZEROED 

          Heaps created for the default pools will be created with flag D3D12_HEAP_FLAG_CREATE_NOT_ZEROED, allowing for their memory to be not zeroed by the system if possible, which can speed up allocation.

          -

          Only affects default pools. To use the flag with Custom memory pools, you need to add it manually:

          +

          Only affects default pools. To use the flag with Custom memory pools, you need to add it manually:

          poolDesc.heapFlags |= D3D12_HEAP_FLAG_CREATE_NOT_ZEROED;

          Only avaiable if ID3D12Device8 is present. Otherwise, the flag is ignored.

          @@ -431,7 +431,7 @@

          POOL_FLAG_ALGORITHM_LINEAR 

          Enables alternative, linear allocation algorithm in this pool.

          Specify this flag to enable linear allocation algorithm, which always creates new allocations after last one and doesn't reuse space from allocations freed in between. It trades memory consumption for simplified algorithm and data structure, which has better performance and uses less memory for metadata.

          -

          By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter Linear allocation algorithm.

          +

          By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter Linear allocation algorithm.

          POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED 

          Optimization, allocate MSAA textures as committed resources always.

          Specify this flag to create MSAA textures with implicit heaps, as if they were created with flag D3D12MA::ALLOCATION_FLAG_COMMITTED. Usage of this flags enables pool to create its heaps on smaller alignment not suitable for MSAA textures.

          @@ -495,7 +495,7 @@

          VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR 

          Enables alternative, linear allocation algorithm in this virtual block.

          Specify this flag to enable linear allocation algorithm, which always creates new allocations after last one and doesn't reuse space from allocations freed in between. It trades memory consumption for simplified algorithm and data structure, which has better performance and uses less memory for metadata.

          -

          By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter Linear allocation algorithm.

          +

          By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter Linear allocation algorithm.

          VIRTUAL_BLOCK_FLAG_ALGORITHM_MASK  @@ -554,7 +554,7 @@

          diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html index d6237ba..d78273a 100644 --- a/docs/html/namespacemembers.html +++ b/docs/html/namespacemembers.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Namespace Members @@ -31,7 +31,7 @@ - + @@ -150,7 +150,7 @@

          - v -

            diff --git a/docs/html/namespacemembers_enum.html b/docs/html/namespacemembers_enum.html index 90ffd55..c25155b 100644 --- a/docs/html/namespacemembers_enum.html +++ b/docs/html/namespacemembers_enum.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Namespace Members @@ -31,7 +31,7 @@ - + @@ -83,7 +83,7 @@ diff --git a/docs/html/namespacemembers_eval.html b/docs/html/namespacemembers_eval.html index 2efa466..367f733 100644 --- a/docs/html/namespacemembers_eval.html +++ b/docs/html/namespacemembers_eval.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Namespace Members @@ -31,7 +31,7 @@ - + @@ -130,7 +130,7 @@

            - v -

              diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html index c8a70c7..0630659 100644 --- a/docs/html/namespacemembers_func.html +++ b/docs/html/namespacemembers_func.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Namespace Members @@ -31,7 +31,7 @@ - + @@ -78,7 +78,7 @@ diff --git a/docs/html/namespacemembers_type.html b/docs/html/namespacemembers_type.html index e9561e2..0a74048 100644 --- a/docs/html/namespacemembers_type.html +++ b/docs/html/namespacemembers_type.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Namespace Members @@ -31,7 +31,7 @@ - + @@ -79,7 +79,7 @@ diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html index acd9768..e9fd824 100644 --- a/docs/html/namespaces.html +++ b/docs/html/namespaces.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Namespace List @@ -31,7 +31,7 @@ - + @@ -82,7 +82,7 @@ diff --git a/docs/html/optimal_allocation.html b/docs/html/optimal_allocation.html index 8d72300..1c3a4ea 100644 --- a/docs/html/optimal_allocation.html +++ b/docs/html/optimal_allocation.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Optimal resource allocation @@ -31,7 +31,7 @@ - + @@ -90,7 +90,7 @@

              D3D12MA::Allocator::GetMemoryCapacity. However, it is not recommended, because the amount of memory available to the application is typically smaller than the full capacity, as some portion of it is reserved by the operating system or used by other processes.

              -

              Because of this, the recommended way of fetching the memory budget available to the application is using function D3D12MA::Allocator::GetBudget. Preventing value D3D12MA::Budget::UsageBytes from exceeding the D3D12MA::Budget::BudgetBytes is probably the best we can do in trying to avoid the consequences of over-commitment. For more information, see also: Statistics.

              +

              Because of this, the recommended way of fetching the memory budget available to the application is using function D3D12MA::Allocator::GetBudget. Preventing value D3D12MA::Budget::UsageBytes from exceeding the D3D12MA::Budget::BudgetBytes is probably the best we can do in trying to avoid the consequences of over-commitment. For more information, see also: Statistics.

              Example:

              D3D12MA::Budget videoMemBudget = {};
              allocator->GetBudget(&videoMemBudget, NULL);
              @@ -122,7 +122,7 @@

              Sub-allocating buffers

              When a large number of small buffers needs to be created, the overhead of creating separate ID3D12Resource objects can be significant. It can also cause a significant waste of memory, as placed buffers need to be aligned to D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 64 KB by default. These problems can be avoided by creating one or few larger buffers and manually sub-allocating parts of them for specific needs.

              -

              It requires implementing a custom allocator for the data inside the buffer and using offsets to individual regions. When all the regions can be allocated linearly and freed all at once, implementing such allocator is trivial. When every region has the same size, implementing an allocator is also quite simple when using a "free list" algorithm. However, when regions can have different sizes and can be allocated and freed in random order, it requires a full allocation algorithm. D3D12MA can help with it by exposing its core allocation algorithm for custom usages. For more details and example code, see chapter: Virtual allocator. It can be used for all the cases mentioned above without too much performance overhead, because the D3D12MA::VirtualAllocation object is just a lightweight handle.

              +

              It requires implementing a custom allocator for the data inside the buffer and using offsets to individual regions. When all the regions can be allocated linearly and freed all at once, implementing such allocator is trivial. When every region has the same size, implementing an allocator is also quite simple when using a "free list" algorithm. However, when regions can have different sizes and can be allocated and freed in random order, it requires a full allocation algorithm. D3D12MA can help with it by exposing its core allocation algorithm for custom usages. For more details and example code, see chapter: Virtual allocator. It can be used for all the cases mentioned above without too much performance overhead, because the D3D12MA::VirtualAllocation object is just a lightweight handle.

              When sub-allocating a buffer, you need to remember to explicitly request proper alignment required for each region. For example, data used as a constant buffer must be aligned to D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256 B.

              Residency priority

              @@ -243,13 +243,13 @@

            • The advantage of committed resources is that their implicit heaps have exactly the right size, while creating resources as placed inside larger heaps can lead to some memory wasted because:
            • The advantage of committed resources is that they are always created with a new heap, which is initialized with zeros. When a resource is created as placed, the memory may contain random data left by the resource previously allocated in that place. When the memory is not filled with zeros, while you don't properly clear it or otherwise initialize its content before use (which is required by D3D12), you may observe incorrect behavior. On the other hand, using committed resources and having every new resource filled with zeros can leave this kind of bugs undetected.
            • Manual eviction with ID3D12Device::Evict and MakeResident functions work at the level of the entire heap, and so does ID3D12Device1::SetResidencyPriority, so creating resources as committed allows more fine-grained control over the eviction and residency priority of individual resources.
            • -
            • The advantage of placed resources is that they can be created in a region of a heap overlapping with some other resources. This approach is commonly called "aliasing". It can save memory, but it needs careful control over the resources that overlap in memory to make sure they are not used at the same time, there is an aliasing barrier issued between their usage, and the resource used after aliasing is correctly cleared every time. Committed resources don't offer this possibility, because every committed resource has its own exclusive memory heap. For more information, see chapter Resource aliasing (overlap).
            • +
            • The advantage of placed resources is that they can be created in a region of a heap overlapping with some other resources. This approach is commonly called "aliasing". It can save memory, but it needs careful control over the resources that overlap in memory to make sure they are not used at the same time, there is an aliasing barrier issued between their usage, and the resource used after aliasing is correctly cleared every time. Committed resources don't offer this possibility, because every committed resource has its own exclusive memory heap. For more information, see chapter Resource aliasing (overlap).

            When creating resources with the help of D3D12MA using function D3D12MA::Allocator::CreateResource, you typically don't need to care about all this. The library automatically makes the choice of creating the new resource as committed or placed. However, in cases when you need the information or the control over this choice between committed and placed, the library offers facilities to do that, described below.

            Implementation detail
            D3D12MA creates large heaps (default size is 64 MB) and creates resources as placed in them. However, it may decide that it is required or preferred to create the specific resource as committed for many reasons, including:
              @@ -261,7 +261,7 @@

            You can check whether an allocation was created as a committed resource by checking if its heap is null. Committed resources have an implicit heap that is not directly accessible.

            bool isCommitted = allocation->GetHeap() == NULL;
            -

            You can request a new resource to be created as committed by using D3D12MA::ALLOCATION_FLAG_COMMITTED. Note that committed resources can also be created out of Custom memory pools.

            +

            You can request a new resource to be created as committed by using D3D12MA::ALLOCATION_FLAG_COMMITTED. Note that committed resources can also be created out of Custom memory pools.

            You can also request all resources to be created as committed globally for the entire allocator by using D3D12MA::ALLOCATOR_FLAG_ALWAYS_COMMITTED. However, this contradicts the main purpose of using this library. It can also prevent certain other features of the library to be used. This flag should be used only for debugging purposes.

            You can create a custom pool with an explicit block size by specifying non-zero D3D12MA::POOL_DESC::BlockSize. When doing this, all resources created in such pool are placed in those blocks (heaps) and never created as committed. Example:

            @@ -299,12 +299,12 @@

            D3D12_HEAP_DESC::Alignment. This library automatically sets the alignment as small as possible. Unfortunately, any heap that has a chance of hosting an MSAA texture needs to have the alignment set to 4 MB. This problem can be overcome by passing D3D12MA::ALLOCATOR_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED on the creation of the main allocator object and D3D12MA::POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED on the creation of any custom heap that supports textures, not only buffers. With those flags, the alignment of the heaps created by D3D12MA can be lower, but any MSAA textures are created as committed. You should always use these flags in your code unless you really need to create some MSAA textures as placed.

            With DirectX 12 Agility SDK 1.618.1, Microsoft added a new feature called "tight alignment". Note this is a separate feature than the "small alignment" described earlier. When using this new SDK and a compatible graphics driver, the API exposes support for this new feature. Then, a new flag D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT can be added when creating a resource. D3D12 can then return the alignment required for the resource smaller than the default ones described above. This library automatically makes use of the tight alignment feature when available and adds that new resource flag. When the tight alignment is enabled, the heuristics that creates small buffers as committed described above is deactivated, as it is no longer needed.

            You can check if the tight alignment it is available in the current system by calling D3D12MA::Allocator::IsTightAlignmentSupported(). You can tell the library to not use it by specifying D3D12MA::ALLOCATOR_FLAG_DONT_USE_TIGHT_ALIGNMENT. Typically, you don't need to do any of those.

            -

            The library automatically aligns all buffers to at least 256 B, even when the system supports smaller alignment. This is the alignment required for constant buffers, expressed by D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT constant. You can override this logic for Custom memory pools with a specific D3D12MA::POOL_DESC::MinAllocationAlignment.

            +

            The library automatically aligns all buffers to at least 256 B, even when the system supports smaller alignment. This is the alignment required for constant buffers, expressed by D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT constant. You can override this logic for Custom memory pools with a specific D3D12MA::POOL_DESC::MinAllocationAlignment.

            diff --git a/docs/html/quick_start.html b/docs/html/quick_start.html index de33ff7..9a3baef 100644 --- a/docs/html/quick_start.html +++ b/docs/html/quick_start.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Quick start @@ -31,7 +31,7 @@ - + @@ -170,7 +170,7 @@

            resource->Release();
            allocation->Release();

            More advanced use cases are possible when we consider that an D3D12MA::Allocation object can just hold a reference to any resource. It can be changed by calling D3D12MA::Allocation::SetResource. This function releases the old resource and calls AddRef on the new one.

            -

            Special care must be taken when performing defragmentation. The new resource created at the destination place should be set as pass.pMoves[i].pDstTmpAllocation->SetResource(newRes), but it is moved to the source allocation at end of the defragmentation pass, while the old resource accessible through pass.pMoves[i].pSrcAllocation->GetResource() is then released. For more information, see documentation chapter Defragmentation.

            +

            Special care must be taken when performing defragmentation. The new resource created at the destination place should be set as pass.pMoves[i].pDstTmpAllocation->SetResource(newRes), but it is moved to the source allocation at end of the defragmentation pass, while the old resource accessible through pass.pMoves[i].pSrcAllocation->GetResource() is then released. For more information, see documentation chapter Defragmentation.

            Mapping memory

            The process of getting regular CPU-side pointer to the memory of a resource in Direct3D is called "mapping". There are rules and restrictions to this process, as described in D3D12 documentation of ID3D12Resource::Map method.

            @@ -278,7 +278,7 @@

            diff --git a/docs/html/resource_aliasing.html b/docs/html/resource_aliasing.html index 1275544..6ab41d4 100644 --- a/docs/html/resource_aliasing.html +++ b/docs/html/resource_aliasing.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Resource aliasing (overlap) @@ -31,7 +31,7 @@ - + @@ -169,7 +169,7 @@ diff --git a/docs/html/search/search.css b/docs/html/search/search.css index 956f31f..043d32d 100644 --- a/docs/html/search/search.css +++ b/docs/html/search/search.css @@ -291,7 +291,6 @@ iframe#MSearchResults { div.SRPage { margin: 5px 2px; - /*background-color: var(--search-results-background-color);*/ } .SRChildren { diff --git a/docs/html/statistics.html b/docs/html/statistics.html index b9b1e29..da8e8db 100644 --- a/docs/html/statistics.html +++ b/docs/html/statistics.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Statistics @@ -31,7 +31,7 @@ - + @@ -109,7 +109,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s-members.html b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s-members.html index f967c0c..e514f50 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html index 495fe3f..548019b 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html +++ b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___c_a_l_l_b_a_c_k_s.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::ALLOCATION_CALLBACKS Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,11 +89,11 @@ - + - + - +

            Public Attributes

            ALLOCATE_FUNC_PTR pAllocate
            ALLOCATE_FUNC_PTR pAllocate
             Allocation function.
            FREE_FUNC_PTR pFree
            FREE_FUNC_PTR pFree
             Dellocation function.
            void * pPrivateData
            void * pPrivateData
             Custom data that will be passed to allocation and deallocation functions as pUserData parameter.

            Detailed Description

            @@ -153,7 +153,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html index f398da5..56c750c 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -89,7 +89,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html index d914ec6..f22a527 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::ALLOCATION_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,15 +98,15 @@ - + - + - + - + - +

            Public Attributes

            ALLOCATION_FLAGS Flags
            ALLOCATION_FLAGS Flags
             Flags for the allocation.
            D3D12_HEAP_TYPE HeapType
            D3D12_HEAP_TYPE HeapType
             The type of memory heap where the new allocation should be placed.
            D3D12_HEAP_FLAGS ExtraHeapFlags
            D3D12_HEAP_FLAGS ExtraHeapFlags
             Additional heap flags to be used when allocating memory.
            PoolCustomPool
            PoolCustomPool
             Custom pool to place the new resource in. Optional.
            void * pPrivateData
            void * pPrivateData
             Custom general-purpose pointer that will be stored in D3D12MA::Allocation.

            Detailed Description

            @@ -125,7 +125,7 @@

            Custom pool to place the new resource in. Optional.

            -

            When not null, the resource will be created inside specified custom pool. Members HeapType, ExtraHeapFlags are then ignored.

            +

            When not null, the resource will be created inside specified custom pool. Members HeapType, ExtraHeapFlags are then ignored.

            @@ -208,7 +208,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c-members.html index cfc611c..2a6e5e4 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -89,7 +89,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html index 33029a6..7efa4f9 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_a_l_l_o_c_a_t_o_r___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::ALLOCATOR_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,14 +89,14 @@ - + - - + + - + - +

            Public Attributes

            ALLOCATOR_FLAGS Flags
            ALLOCATOR_FLAGS Flags
             Flags for the entire allocator.
            ID3D12Device * pDevice
            UINT64 PreferredBlockSize
            ID3D12Device * pDevice
            UINT64 PreferredBlockSize
             Preferred size of a single ID3D12Heap block to be allocated.
            const ALLOCATION_CALLBACKSpAllocationCallbacks
            const ALLOCATION_CALLBACKSpAllocationCallbacks
             Custom CPU memory allocation callbacks. Optional.
            IDXGIAdapter * pAdapter
            IDXGIAdapter * pAdapter

            Detailed Description

            Parameters of created Allocator object. To be used with CreateAllocator().

            @@ -190,7 +190,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_budget-members.html b/docs/html/struct_d3_d12_m_a_1_1_budget-members.html index 26e4bee..778b089 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_budget-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_budget-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_budget.html b/docs/html/struct_d3_d12_m_a_1_1_budget.html index 8e8f354..2c66324 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_budget.html +++ b/docs/html/struct_d3_d12_m_a_1_1_budget.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::Budget Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,11 +89,11 @@ - + - + - +

            Public Attributes

            Statistics Stats
            Statistics Stats
             Statistics fetched from the library.
            UINT64 UsageBytes
            UINT64 UsageBytes
             Estimated current memory usage of the program.
            UINT64 BudgetBytes
            UINT64 BudgetBytes
             Estimated amount of memory available to the program.

            Detailed Description

            @@ -114,7 +114,7 @@

            IDXGIAdapter3::QueryVideoMemoryInfo if possible.

            -

            It might be different (most probably smaller) than memory capacity returned by D3D12MA::Allocator::GetMemoryCapacity() due to factors external to the program, decided by the operating system. Difference BudgetBytes - UsageBytes is the amount of additional memory that can probably be allocated without problems. Exceeding the budget may result in various problems.

            +

            It might be different (most probably smaller) than memory capacity returned by D3D12MA::Allocator::GetMemoryCapacity() due to factors external to the program, decided by the operating system. Difference BudgetBytes - UsageBytes is the amount of additional memory that can probably be allocated without problems. Exceeding the budget may result in various problems.

            @@ -158,7 +158,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html index 9423c7f..589c0fa 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -93,7 +93,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html index cae7b08..4a00c93 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_a_l_l_o_c_a_t_i_o_n___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::CALLOCATION_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,27 +98,27 @@ - + - + - + - +

            Public Member Functions

             CALLOCATION_DESC ()=default
             CALLOCATION_DESC ()=default
             Default constructor. Leaves the structure uninitialized.
             CALLOCATION_DESC (const ALLOCATION_DESC &o) noexcept
             CALLOCATION_DESC (const ALLOCATION_DESC &o) noexcept
             Constructor initializing from the base D3D12MA::ALLOCATION_DESC structure.
             CALLOCATION_DESC (Pool *customPool, ALLOCATION_FLAGS flags=ALLOCATION_FLAG_NONE, void *privateData=NULL) noexcept
             CALLOCATION_DESC (Pool *customPool, ALLOCATION_FLAGS flags=ALLOCATION_FLAG_NONE, void *privateData=NULL) noexcept
             Constructor initializing description of an allocation to be created in a specific custom pool.
             CALLOCATION_DESC (D3D12_HEAP_TYPE heapType, ALLOCATION_FLAGS flags=ALLOCATION_FLAG_NONE, void *privateData=NULL, D3D12_HEAP_FLAGS extraHeapFlags=D3D12MA_RECOMMENDED_HEAP_FLAGS) noexcept
             CALLOCATION_DESC (D3D12_HEAP_TYPE heapType, ALLOCATION_FLAGS flags=ALLOCATION_FLAG_NONE, void *privateData=NULL, D3D12_HEAP_FLAGS extraHeapFlags=D3D12MA_RECOMMENDED_HEAP_FLAGS) noexcept
             Constructor initializing description of an allocation to be created in a default pool of a specific D3D12_HEAP_TYPE.
            - + - + - + - + - +

            Additional Inherited Members

            Public Attributes inherited from D3D12MA::ALLOCATION_DESC
            ALLOCATION_FLAGS Flags
            ALLOCATION_FLAGS Flags
             Flags for the allocation.
            D3D12_HEAP_TYPE HeapType
            D3D12_HEAP_TYPE HeapType
             The type of memory heap where the new allocation should be placed.
            D3D12_HEAP_FLAGS ExtraHeapFlags
            D3D12_HEAP_FLAGS ExtraHeapFlags
             Additional heap flags to be used when allocating memory.
            PoolCustomPool
            PoolCustomPool
             Custom pool to place the new resource in. Optional.
            void * pPrivateData
            void * pPrivateData
             Custom general-purpose pointer that will be stored in D3D12MA::Allocation.

            Detailed Description

            @@ -261,7 +261,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c-members.html index 66262d0..9422750 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -97,7 +97,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c.html index 37f7330..2a4c181 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_p_o_o_l___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::CPOOL_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,35 +98,35 @@ - + - + - + - +

            Public Member Functions

             CPOOL_DESC ()=default
             CPOOL_DESC ()=default
             Default constructor. Leaves the structure uninitialized.
             CPOOL_DESC (const POOL_DESC &o) noexcept
             CPOOL_DESC (const POOL_DESC &o) noexcept
             Constructor initializing from the base D3D12MA::POOL_DESC structure.
             CPOOL_DESC (D3D12_HEAP_TYPE heapType, D3D12_HEAP_FLAGS heapFlags, POOL_FLAGS flags=D3D12MA_RECOMMENDED_POOL_FLAGS, UINT64 blockSize=0, UINT minBlockCount=0, UINT maxBlockCount=UINT_MAX, D3D12_RESIDENCY_PRIORITY residencyPriority=D3D12_RESIDENCY_PRIORITY_NORMAL) noexcept
             CPOOL_DESC (D3D12_HEAP_TYPE heapType, D3D12_HEAP_FLAGS heapFlags, POOL_FLAGS flags=D3D12MA_RECOMMENDED_POOL_FLAGS, UINT64 blockSize=0, UINT minBlockCount=0, UINT maxBlockCount=UINT_MAX, D3D12_RESIDENCY_PRIORITY residencyPriority=D3D12_RESIDENCY_PRIORITY_NORMAL) noexcept
             Constructor initializing description of a custom pool created in one of the standard D3D12_HEAP_TYPE.
             CPOOL_DESC (const D3D12_HEAP_PROPERTIES heapProperties, D3D12_HEAP_FLAGS heapFlags, POOL_FLAGS flags=D3D12MA_RECOMMENDED_POOL_FLAGS, UINT64 blockSize=0, UINT minBlockCount=0, UINT maxBlockCount=UINT_MAX, D3D12_RESIDENCY_PRIORITY residencyPriority=D3D12_RESIDENCY_PRIORITY_NORMAL) noexcept
             CPOOL_DESC (const D3D12_HEAP_PROPERTIES heapProperties, D3D12_HEAP_FLAGS heapFlags, POOL_FLAGS flags=D3D12MA_RECOMMENDED_POOL_FLAGS, UINT64 blockSize=0, UINT minBlockCount=0, UINT maxBlockCount=UINT_MAX, D3D12_RESIDENCY_PRIORITY residencyPriority=D3D12_RESIDENCY_PRIORITY_NORMAL) noexcept
             Constructor initializing description of a custom pool created with custom D3D12_HEAP_PROPERTIES.
            - + - + - + - + - + - + - + - + - +

            Additional Inherited Members

            Public Attributes inherited from D3D12MA::POOL_DESC
            POOL_FLAGS Flags
            POOL_FLAGS Flags
             Flags for the heap.
            D3D12_HEAP_PROPERTIES HeapProperties
            D3D12_HEAP_PROPERTIES HeapProperties
             The parameters of memory heap where allocations of this pool should be placed.
            D3D12_HEAP_FLAGS HeapFlags
            D3D12_HEAP_FLAGS HeapFlags
             Heap flags to be used when allocating heaps of this pool.
            UINT64 BlockSize
            UINT64 BlockSize
             Size of a single heap (memory block) to be allocated as part of this pool, in bytes. Optional.
            UINT MinBlockCount
            UINT MinBlockCount
             Minimum number of heaps (memory blocks) to be always allocated in this pool, even if they stay empty. Optional.
            UINT MaxBlockCount
            UINT MaxBlockCount
             Maximum number of heaps (memory blocks) that can be allocated in this pool. Optional.
            UINT64 MinAllocationAlignment
            UINT64 MinAllocationAlignment
             Additional minimum alignment to be used for all allocations created from this pool. Can be 0.
            ID3D12ProtectedResourceSession * pProtectedSession
            ID3D12ProtectedResourceSession * pProtectedSession
             Additional parameter allowing pool to create resources with passed protected session.
            D3D12_RESIDENCY_PRIORITY ResidencyPriority
            D3D12_RESIDENCY_PRIORITY ResidencyPriority
             Residency priority to be set for all allocations made in this pool. Optional.

            Detailed Description

            @@ -304,7 +304,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html index da976da..afdd347 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -91,7 +91,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html index 714062b..a680c64 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::CVIRTUAL_ALLOCATION_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,23 +98,23 @@ - + - + - +

            Public Member Functions

             CVIRTUAL_ALLOCATION_DESC ()=default
             CVIRTUAL_ALLOCATION_DESC ()=default
             Default constructor. Leaves the structure uninitialized.
             CVIRTUAL_ALLOCATION_DESC (const VIRTUAL_ALLOCATION_DESC &o) noexcept
             CVIRTUAL_ALLOCATION_DESC (const VIRTUAL_ALLOCATION_DESC &o) noexcept
             Constructor initializing from the base D3D12MA::VIRTUAL_ALLOCATION_DESC structure.
             CVIRTUAL_ALLOCATION_DESC (UINT64 size, UINT64 alignment, VIRTUAL_ALLOCATION_FLAGS flags=VIRTUAL_ALLOCATION_FLAG_NONE, void *privateData=NULL) noexcept
             CVIRTUAL_ALLOCATION_DESC (UINT64 size, UINT64 alignment, VIRTUAL_ALLOCATION_FLAGS flags=VIRTUAL_ALLOCATION_FLAG_NONE, void *privateData=NULL) noexcept
             Constructor initializing description of a virtual allocation with given parameters.
            - + - + - + - +

            Additional Inherited Members

            Public Attributes inherited from D3D12MA::VIRTUAL_ALLOCATION_DESC
            VIRTUAL_ALLOCATION_FLAGS Flags
            VIRTUAL_ALLOCATION_FLAGS Flags
             Flags for the virtual allocation.
            UINT64 Size
            UINT64 Size
             Size of the allocation.
            UINT64 Alignment
            UINT64 Alignment
             Required alignment of the allocation.
            void * pPrivateData
            void * pPrivateData
             Custom pointer to be associated with the allocation.

            Detailed Description

            @@ -221,7 +221,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html index 27af579..4214b1e 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -90,7 +90,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html index e24e9a8..38ce216 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_c_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::CVIRTUAL_BLOCK_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,21 +98,21 @@ - + - + - +

            Public Member Functions

             CVIRTUAL_BLOCK_DESC ()=default
             CVIRTUAL_BLOCK_DESC ()=default
             Default constructor. Leaves the structure uninitialized.
             CVIRTUAL_BLOCK_DESC (const VIRTUAL_BLOCK_DESC &o) noexcept
             CVIRTUAL_BLOCK_DESC (const VIRTUAL_BLOCK_DESC &o) noexcept
             Constructor initializing from the base D3D12MA::VIRTUAL_BLOCK_DESC structure.
             CVIRTUAL_BLOCK_DESC (UINT64 size, VIRTUAL_BLOCK_FLAGS flags=VIRTUAL_BLOCK_FLAG_NONE, const ALLOCATION_CALLBACKS *allocationCallbacks=NULL) noexcept
             CVIRTUAL_BLOCK_DESC (UINT64 size, VIRTUAL_BLOCK_FLAGS flags=VIRTUAL_BLOCK_FLAG_NONE, const ALLOCATION_CALLBACKS *allocationCallbacks=NULL) noexcept
             Constructor initializing description of a virtual block with given parameters.
            - + - + - +

            Additional Inherited Members

            Public Attributes inherited from D3D12MA::VIRTUAL_BLOCK_DESC
            VIRTUAL_BLOCK_FLAGS Flags
            VIRTUAL_BLOCK_FLAGS Flags
             Flags.
            UINT64 Size
            UINT64 Size
             Total size of the block.
            const ALLOCATION_CALLBACKSpAllocationCallbacks
            const ALLOCATION_CALLBACKSpAllocationCallbacks
             Custom CPU memory allocation callbacks. Optional.

            Detailed Description

            @@ -214,7 +214,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c-members.html index 69adefa..7e63c6f 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c.html index 242a2ed..e63500f 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::DEFRAGMENTATION_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,11 +89,11 @@ - + - + - +

            Public Attributes

            DEFRAGMENTATION_FLAGS Flags
            DEFRAGMENTATION_FLAGS Flags
             Flags.
            UINT64 MaxBytesPerPass
            UINT64 MaxBytesPerPass
             Maximum numbers of bytes that can be copied during single pass, while moving allocations to different places.
            UINT32 MaxAllocationsPerPass
            UINT32 MaxAllocationsPerPass
             Maximum number of allocations that can be moved during single pass to a different place.

            Detailed Description

            @@ -156,7 +156,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e-members.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e-members.html index f20848d..d0270bd 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e.html index 87c182e..c6f5b3c 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___m_o_v_e.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::DEFRAGMENTATION_MOVE Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,12 +89,12 @@ - + - + - - + +

            Public Attributes

            DEFRAGMENTATION_MOVE_OPERATION Operation
            DEFRAGMENTATION_MOVE_OPERATION Operation
             Operation to be performed on the allocation by DefragmentationContext::EndPass(). Default value is DEFRAGMENTATION_MOVE_OPERATION_COPY. You can modify it.
            AllocationpSrcAllocation
            AllocationpSrcAllocation
             Allocation that should be moved.
            AllocationpDstTmpAllocation
             Temporary allocation pointing to destination memory that will replace pSrcAllocation.
            AllocationpDstTmpAllocation
             Temporary allocation pointing to destination memory that will replace pSrcAllocation.

            Detailed Description

            Single move of an allocation to be done for defragmentation.

            @@ -127,9 +127,9 @@

            -

            Temporary allocation pointing to destination memory that will replace pSrcAllocation.

            +

            Temporary allocation pointing to destination memory that will replace pSrcAllocation.

            Use it to retrieve new ID3D12Heap and offset to create new ID3D12Resource and then store it here via Allocation::SetResource().

            -
            Warning
            Do not store this allocation in your data structures! It exists only temporarily, for the duration of the defragmentation pass, to be used for storing newly created resource. DefragmentationContext::EndPass() will destroy it and make pSrcAllocation point to this memory.
            +
            Warning
            Do not store this allocation in your data structures! It exists only temporarily, for the duration of the defragmentation pass, to be used for storing newly created resource. DefragmentationContext::EndPass() will destroy it and make pSrcAllocation point to this memory.

            @@ -155,7 +155,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o-members.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o-members.html index 3e0a1e4..5242a0a 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -86,7 +86,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o.html index 6e37ac2..dfe3d11 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___p_a_s_s___m_o_v_e___i_n_f_o.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::DEFRAGMENTATION_PASS_MOVE_INFO Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,9 +89,9 @@ - - - + + +

            Public Attributes

            UINT32 MoveCount
             Number of elements in the pMoves array.
            DEFRAGMENTATION_MOVEpMoves
            UINT32 MoveCount
             Number of elements in the pMoves array.
            DEFRAGMENTATION_MOVEpMoves
             Array of moves to be performed by the user in the current defragmentation pass.

            Detailed Description

            @@ -110,7 +110,7 @@

            -

            Number of elements in the pMoves array.

            +

            Number of elements in the pMoves array.

            @@ -127,12 +127,12 @@

            Array of moves to be performed by the user in the current defragmentation pass.

            -

            Pointer to an array of MoveCount elements, owned by D3D12MA, created in DefragmentationContext::BeginPass(), destroyed in DefragmentationContext::EndPass().

            +

            Pointer to an array of MoveCount elements, owned by D3D12MA, created in DefragmentationContext::BeginPass(), destroyed in DefragmentationContext::EndPass().

            For each element, you should:

              -
            1. Create a new resource in the place pointed by pMoves[i].pDstTmpAllocation->GetHeap() + pMoves[i].pDstTmpAllocation->GetOffset().
            2. -
            3. Store new resource in pMoves[i].pDstTmpAllocation by using Allocation::SetResource(). It will later replace old resource from pMoves[i].pSrcAllocation.
            4. -
            5. Copy data from the pMoves[i].pSrcAllocation e.g. using D3D12GraphicsCommandList::CopyResource.
            6. +
            7. Create a new resource in the place pointed by pMoves[i].pDstTmpAllocation->GetHeap() + pMoves[i].pDstTmpAllocation->GetOffset().
            8. +
            9. Store new resource in pMoves[i].pDstTmpAllocation by using Allocation::SetResource(). It will later replace old resource from pMoves[i].pSrcAllocation.
            10. +
            11. Copy data from the pMoves[i].pSrcAllocation e.g. using D3D12GraphicsCommandList::CopyResource.
            12. Make sure these commands finished executing on the GPU.

            Only then you can finish defragmentation pass by calling DefragmentationContext::EndPass(). After this call, the allocation will point to the new place in memory.

            @@ -147,7 +147,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s-members.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s-members.html index be2d910..7f6aae4 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -88,7 +88,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s.html b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s.html index 220d0bd..69cfce6 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s.html +++ b/docs/html/struct_d3_d12_m_a_1_1_d_e_f_r_a_g_m_e_n_t_a_t_i_o_n___s_t_a_t_s.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::DEFRAGMENTATION_STATS Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,13 +89,13 @@ - + - + - + - +

            Public Attributes

            UINT64 BytesMoved
            UINT64 BytesMoved
             Total number of bytes that have been copied while moving allocations to different places.
            UINT64 BytesFreed
            UINT64 BytesFreed
             Total number of bytes that have been released to the system by freeing empty heaps.
            UINT32 AllocationsMoved
            UINT32 AllocationsMoved
             Number of allocations that have been moved to different places.
            UINT32 HeapsFreed
            UINT32 HeapsFreed
             Number of empty ID3D12Heap objects that have been released to the system.

            Detailed Description

            @@ -171,7 +171,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics-members.html b/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics-members.html index 13c5446..bf5694d 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -90,7 +90,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics.html b/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics.html index 88fa33d..79754ca 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics.html +++ b/docs/html/struct_d3_d12_m_a_1_1_detailed_statistics.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::DetailedStatistics Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,17 +89,17 @@ - + - + - + - + - + - +

            Public Attributes

            Statistics Stats
            Statistics Stats
             Basic statistics.
            UINT UnusedRangeCount
            UINT UnusedRangeCount
             Number of free ranges of memory between allocations.
            UINT64 AllocationSizeMin
            UINT64 AllocationSizeMin
             Smallest allocation size. UINT64_MAX if there are 0 allocations.
            UINT64 AllocationSizeMax
            UINT64 AllocationSizeMax
             Largest allocation size. 0 if there are 0 allocations.
            UINT64 UnusedRangeSizeMin
            UINT64 UnusedRangeSizeMin
             Smallest empty range size. UINT64_MAX if there are 0 empty ranges.
            UINT64 UnusedRangeSizeMax
            UINT64 UnusedRangeSizeMax
             Largest empty range size. 0 if there are 0 empty ranges.

            Detailed Description

            @@ -212,7 +212,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c-members.html index 654ade6..c2ce4c2 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -93,7 +93,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html index d812aff..e4bf711 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_p_o_o_l___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::POOL_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,23 +98,23 @@ - + - + - + - + - + - + - + - + - +

            Public Attributes

            POOL_FLAGS Flags
            POOL_FLAGS Flags
             Flags for the heap.
            D3D12_HEAP_PROPERTIES HeapProperties
            D3D12_HEAP_PROPERTIES HeapProperties
             The parameters of memory heap where allocations of this pool should be placed.
            D3D12_HEAP_FLAGS HeapFlags
            D3D12_HEAP_FLAGS HeapFlags
             Heap flags to be used when allocating heaps of this pool.
            UINT64 BlockSize
            UINT64 BlockSize
             Size of a single heap (memory block) to be allocated as part of this pool, in bytes. Optional.
            UINT MinBlockCount
            UINT MinBlockCount
             Minimum number of heaps (memory blocks) to be always allocated in this pool, even if they stay empty. Optional.
            UINT MaxBlockCount
            UINT MaxBlockCount
             Maximum number of heaps (memory blocks) that can be allocated in this pool. Optional.
            UINT64 MinAllocationAlignment
            UINT64 MinAllocationAlignment
             Additional minimum alignment to be used for all allocations created from this pool. Can be 0.
            ID3D12ProtectedResourceSession * pProtectedSession
            ID3D12ProtectedResourceSession * pProtectedSession
             Additional parameter allowing pool to create resources with passed protected session.
            D3D12_RESIDENCY_PRIORITY ResidencyPriority
            D3D12_RESIDENCY_PRIORITY ResidencyPriority
             Residency priority to be set for all allocations made in this pool. Optional.

            Detailed Description

            @@ -284,7 +284,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_statistics-members.html b/docs/html/struct_d3_d12_m_a_1_1_statistics-members.html index 67b61fe..be8fbd0 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_statistics-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_statistics-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -88,7 +88,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_statistics.html b/docs/html/struct_d3_d12_m_a_1_1_statistics.html index 853c2ff..8786bc2 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_statistics.html +++ b/docs/html/struct_d3_d12_m_a_1_1_statistics.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::Statistics Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,13 +89,13 @@ - + - + - + - +

            Public Attributes

            UINT BlockCount
            UINT BlockCount
             Number of D3D12 memory blocks allocated - ID3D12Heap objects and committed resources.
            UINT AllocationCount
            UINT AllocationCount
             Number of D3D12MA::Allocation objects allocated.
            UINT64 BlockBytes
            UINT64 BlockBytes
             Number of bytes allocated in memory blocks.
            UINT64 AllocationBytes
            UINT64 AllocationBytes
             Total number of bytes occupied by all D3D12MA::Allocation objects.

            Detailed Description

            @@ -115,7 +115,7 @@

            Total number of bytes occupied by all D3D12MA::Allocation objects.

            -

            Always less or equal than BlockBytes. Difference (BlockBytes - AllocationBytes) is the amount of memory allocated from D3D12 but unused by any D3D12MA::Allocation.

            +

            Always less or equal than BlockBytes. Difference (BlockBytes - AllocationBytes) is the amount of memory allocated from D3D12 but unused by any D3D12MA::Allocation.

            @@ -132,7 +132,7 @@

            Number of D3D12MA::Allocation objects allocated.

            -

            Committed allocations have their own blocks, so each one adds 1 to AllocationCount as well as BlockCount.

            +

            Committed allocations have their own blocks, so each one adds 1 to AllocationCount as well as BlockCount.

            @@ -174,7 +174,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_total_statistics-members.html b/docs/html/struct_d3_d12_m_a_1_1_total_statistics-members.html index b49ebb7..867ee40 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_total_statistics-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_total_statistics-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_total_statistics.html b/docs/html/struct_d3_d12_m_a_1_1_total_statistics.html index 494e68e..f442e42 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_total_statistics.html +++ b/docs/html/struct_d3_d12_m_a_1_1_total_statistics.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::TotalStatistics Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,11 +89,11 @@ - + - + - +

            Public Attributes

            DetailedStatistics HeapType [5]
            DetailedStatistics HeapType [5]
             One element for each type of heap located at the following indices:
            DetailedStatistics MemorySegmentGroup [2]
            DetailedStatistics MemorySegmentGroup [2]
             One element for each memory segment group located at the following indices:
            DetailedStatistics Total
            DetailedStatistics Total
             Total statistics from all memory allocated from D3D12.

            Detailed Description

            @@ -178,7 +178,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html index 518ddc4..01d0638 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -88,7 +88,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html index 9b284fd..92e38d7 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::VIRTUAL_ALLOCATION_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,13 +98,13 @@ - + - + - + - +

            Public Attributes

            VIRTUAL_ALLOCATION_FLAGS Flags
            VIRTUAL_ALLOCATION_FLAGS Flags
             Flags for the virtual allocation.
            UINT64 Size
            UINT64 Size
             Size of the allocation.
            UINT64 Alignment
            UINT64 Alignment
             Required alignment of the allocation.
            void * pPrivateData
            void * pPrivateData
             Custom pointer to be associated with the allocation.

            Detailed Description

            @@ -183,7 +183,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o-members.html b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o-members.html index 26f3491..437d0fe 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html index 61a862b..449d1ae 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html +++ b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___a_l_l_o_c_a_t_i_o_n___i_n_f_o.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::VIRTUAL_ALLOCATION_INFO Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,11 +89,11 @@ - + - + - +

            Public Attributes

            UINT64 Offset
            UINT64 Offset
             Offset of the allocation.
            UINT64 Size
            UINT64 Size
             Size of the allocation.
            void * pPrivateData
            void * pPrivateData
             Custom pointer associated with the allocation.

            Detailed Description

            @@ -155,7 +155,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html index fdfa9ee..096699e 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -87,7 +87,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html index 0d23d65..01416df 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html +++ b/docs/html/struct_d3_d12_m_a_1_1_v_i_r_t_u_a_l___b_l_o_c_k___d_e_s_c.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::VIRTUAL_BLOCK_DESC Struct Reference @@ -31,7 +31,7 @@ - + @@ -98,11 +98,11 @@ - + - + - +

            Public Attributes

            VIRTUAL_BLOCK_FLAGS Flags
            VIRTUAL_BLOCK_FLAGS Flags
             Flags.
            UINT64 Size
            UINT64 Size
             Total size of the block.
            const ALLOCATION_CALLBACKSpAllocationCallbacks
            const ALLOCATION_CALLBACKSpAllocationCallbacks
             Custom CPU memory allocation callbacks. Optional.

            Detailed Description

            @@ -164,7 +164,7 @@

            diff --git a/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation-members.html b/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation-members.html index a219f48..fa52fc4 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation-members.html +++ b/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation-members.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Member List @@ -31,7 +31,7 @@ - + @@ -85,7 +85,7 @@ diff --git a/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation.html b/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation.html index 893aa1a..1b1618d 100644 --- a/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation.html +++ b/docs/html/struct_d3_d12_m_a_1_1_virtual_allocation.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: D3D12MA::VirtualAllocation Struct Reference @@ -31,7 +31,7 @@ - + @@ -89,7 +89,7 @@ - +

            Public Attributes

            AllocHandle AllocHandle
            AllocHandle AllocHandle
             Unique idenitfier of current allocation. 0 means null/invalid.

            Detailed Description

            @@ -117,7 +117,7 @@

            diff --git a/docs/html/virtual_allocator.html b/docs/html/virtual_allocator.html index 5cd93d6..555c6e8 100644 --- a/docs/html/virtual_allocator.html +++ b/docs/html/virtual_allocator.html @@ -3,7 +3,7 @@ - + D3D12 Memory Allocator: Virtual allocator @@ -31,7 +31,7 @@ - + @@ -180,13 +180,13 @@

            You can also request a full list of allocations and free regions as a string in JSON format by calling D3D12MA::VirtualBlock::BuildStatsString. Returned string must be later freed using D3D12MA::VirtualBlock::FreeStatsString. The format of this string may differ from the one returned by the main D3D12 allocator, but it is similar.

            Additional considerations

            -

            Alternative, linear algorithm can be used with virtual allocator - see flag D3D12MA::VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR and documentation: Linear allocation algorithm.

            +

            Alternative, linear algorithm can be used with virtual allocator - see flag D3D12MA::VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR and documentation: Linear allocation algorithm.

            Note that the "virtual allocator" functionality is implemented on a level of individual memory blocks. Keeping track of a whole collection of blocks, allocating new ones when out of free space, deleting empty ones, and deciding which one to try first for a new allocation must be implemented by the user.

            diff --git a/include/D3D12MemAlloc.h b/include/D3D12MemAlloc.h index 8396abb..c34d1d7 100644 --- a/include/D3D12MemAlloc.h +++ b/include/D3D12MemAlloc.h @@ -24,9 +24,9 @@ /** \mainpage D3D12 Memory Allocator -Version 3.1.0-development (2025-XX-XX) +Version 3.1.0 (2026-02-23) -Copyright (c) 2019-2025 Advanced Micro Devices, Inc. All rights reserved. \n +Copyright (c) 2019-2026 Advanced Micro Devices, Inc. All rights reserved. \n License: MIT Documentation of all members: D3D12MemAlloc.h