From 45956fbfeaf17cc66613894dd61717c259ae664d Mon Sep 17 00:00:00 2001 From: dqzg12300 Date: Sat, 25 Mar 2023 19:08:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC7=E7=AB=A0=20=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chapter-07/README.md | 453 ++++++++++++++++++++++++++++--- chapter-07/images/codeitem.png | Bin 0 -> 20065 bytes chapter-07/images/codeitem1.png | Bin 0 -> 20065 bytes chapter-07/images/def_class.png | Bin 0 -> 26549 bytes chapter-07/images/dex_header.png | Bin 0 -> 64789 bytes chapter-07/images/dex模板.png | Bin 0 -> 13434 bytes 6 files changed, 411 insertions(+), 42 deletions(-) create mode 100644 chapter-07/images/codeitem.png create mode 100644 chapter-07/images/codeitem1.png create mode 100644 chapter-07/images/def_class.png create mode 100644 chapter-07/images/dex_header.png create mode 100644 chapter-07/images/dex模板.png diff --git a/chapter-07/README.md b/chapter-07/README.md index c828740..3152a0a 100644 --- a/chapter-07/README.md +++ b/chapter-07/README.md @@ -330,7 +330,7 @@ static class Element { } ``` -​ 可以看到这里实际就是管理一个对应的`DexFile`对象,该对象关联着一个对应的`dex`文件,到这里通过调用`DexFile`对象的`loadClassBinaryName`去加载这个类,继续跟踪它的实现。 +​ 可以看到这里实际就是管理一个对应的`DexFile`对象,该对象关联着一个对应的`dex`文件,这里通过调用`DexFile`对象的`loadClassBinaryName`去加载这个类,继续跟踪它的实现。 ```java public final class DexFile { @@ -363,7 +363,7 @@ public final class DexFile { } ``` -​ 这里看到经过几层调用后,进入了`native`实现了,根据AOSP中`native`注册的原理,直接搜索`DexFile_defineClassNative`找到对应的实现代码如下。 +​ 这里看到经过几层调用后,进入了`native`实现了,根据`AOSP`中`native`注册的原理,直接搜索`DexFile_defineClassNative`找到对应的实现代码如下。 ```java static jclass DexFile_defineClassNative(JNIEnv* env, @@ -718,7 +718,7 @@ void ClassLinker::LoadMethod(const DexFile& dex_file, ​ `Nterp`快速路径的作用是提高`Java`方法的执行速度和效率,特别是在热点代码部分,可以获得更高的吞吐量和更低的延迟。另外,由于采用了一些特殊的优化技术,如参数传递方式改变、返回值处理流程优化等,`Nterp`快速路径还可以减少`JNI`开销,从而提升整个应用程序的性能表现。 -​ 在前文介绍native的动态注册时,曾经简单的讲解`LinkCode`,这里再次对这个重点函数进行详细的了解。 +​ 在前文介绍`native`的动态注册时,曾经简单的讲解`LinkCode`,这里再次对这个重点函数进行详细的了解。 ```c++ @@ -747,7 +747,7 @@ static void LinkCode(ClassLinker* class_linker, bool enter_interpreter = class_linker->ShouldUseInterpreterEntrypoint(method, quick_code); if (quick_code == nullptr) { - // 设置一个方法的入口点位置,可以是快速代码,解释器入口,或者native函数的入口地址 + // 设置一个方法的入口点位置,可以是编译成机器码的快速执行入口、解释器入口,或者native函数的入口地址 method->SetEntryPointFromQuickCompiledCode( method->IsNative() ? GetQuickGenericJniStub() : GetQuickToInterpreterBridge()); } else if (enter_interpreter) { @@ -757,6 +757,7 @@ static void LinkCode(ClassLinker* class_linker, DCHECK(!method->GetDeclaringClass()->IsVisiblyInitialized()); method->SetEntryPointFromQuickCompiledCode(GetQuickResolutionStub()); } else { + // 已经编译好的机器码所在的快速执行入口 method->SetEntryPointFromQuickCompiledCode(quick_code); } @@ -808,9 +809,160 @@ END art_quick_to_interpreter_bridge ​ 尽管解释器的执行速度比本地机器代码要慢一些,但它具有许多优点。例如,解释器可以实现更快的程序启动时间、更小的内存占用和更好的灵活性;同时,它还可以避免因硬件平台差异、编译器优化等问题导致的代码执行异常和安全隐患。 -​ 需要注意的是,`Android Runtime`中的解释器并非独立于虚拟机的组件,而是与`JIT`编译器和`AOT`编译器一起构成了完整的代码执行系统。具体来说,当一个方法第一次被调用时,解释器会对其进行初步解释和执行,并生成相应的`Profile`数据;后续调用则会根据`Profile`数据决定是否使用`JIT`编译器或`AOT`编译器进行优化。这种混合的执行方式可以有效地平衡运行效率和内存开销之间的关系,提高`Java`程序的整体性能和响应速度。 +​ 当一个方法第一次被调用时,解释器会对其进行初步解释和执行,并生成相应的`Profile`数据;后续调用则会根据`Profile`数据决定是否使用`JIT`编译器或`AOT`编译器进行优化。这种混合的执行方式可以有效地平衡运行效率和内存开销之间的关系,提高`Java`程序的整体性能和响应速度。 -​ 在下一节函数调用过程中,将进一步了解解释器的详细执行过程。 +​ 当类加载完成后,对应的类数据将会存储在对应的`DexFile`中。在后续的使用中,就可以通过`DexFile`来对类中的成员以及函数进行访问。下面对`DexFile`的结构进行简单的了解。 + +```c++ +class DexFile { + public: + // dex文件魔数的字节数。 + static constexpr size_t kDexMagicSize = 4; + // dex文件版本号的字节数。 + static constexpr size_t kDexVersionLen = 4; + + static constexpr uint32_t kClassDefinitionOrderEnforcedVersion = 37; + // SHA-1消息摘要的长度 + static constexpr size_t kSha1DigestSize = 20; + // dex文件的大小端标志 + static constexpr uint32_t kDexEndianConstant = 0x12345678; + + // 无效索引的值 + static constexpr uint16_t kDexNoIndex16 = 0xFFFF; + static constexpr uint32_t kDexNoIndex32 = 0xFFFFFFFF; + + // 表示dex文件头结构 + struct Header { + uint8_t magic_[8] = {}; // 魔数 + uint32_t checksum_ = 0; // 校验和 + uint8_t signature_[kSha1DigestSize] = {}; // SHA-1签名 + uint32_t file_size_ = 0; // 文件总大小 + uint32_t header_size_ = 0; // 偏移量到下一部分的起始位置 + uint32_t endian_tag_ = 0; // 大小端标志 + uint32_t link_size_ = 0; + uint32_t link_off_ = 0; + uint32_t map_off_ = 0; + uint32_t string_ids_size_ = 0; // 字符串ID的数量 + uint32_t string_ids_off_ = 0; // 字符串ID数组的文件偏移量 + uint32_t type_ids_size_ = 0; // 类型ID数,不支持超过65535个 + uint32_t type_ids_off_ = 0; // 类型ID数组的文件偏移量 + uint32_t proto_ids_size_ = 0; // ProtoId的数量,不支持超过65535个 + uint32_t proto_ids_off_ = 0; // ProtoId数组的文件偏移量 + uint32_t field_ids_size_ = 0; // FieldIds的数量 + uint32_t field_ids_off_ = 0; // FieldIds数组的文件偏移量 + uint32_t method_ids_size_ = 0; // MethodIds的数量 + uint32_t method_ids_off_ = 0; // MethodIds数组的文件偏移量 + uint32_t class_defs_size_ = 0; // ClassDefs的数量 + uint32_t class_defs_off_ = 0; // ClassDef数组的文件偏移量 + uint32_t data_size_ = 0; // 数据部分的大小 + uint32_t data_off_ = 0; // 数据部分的文件偏移量 + + // 解码dex文件版本号。 + uint32_t GetVersion() const; + }; + ... + + protected: + // 支持默认方法的第一个Dex格式版本。 + static constexpr uint32_t kDefaultMethodsVersion = 37; + + ... + // dex文件数据起始位置 + const uint8_t* const begin_; + + // 内存分配的字节数。 + const size_t size_; + + // 数据节的基地址(对于标准dex,与Begin()相同)。 + const uint8_t* const data_begin_; + + // 数据节的大小。 + const size_t data_size_; + + const std::string location_; + + const uint32_t location_checksum_; + + // Dex文件头的指针 + const Header* const header_; + + // 字符串标识符列表的指针 + const dex::StringId* const string_ids_; + + // 类型标识符列表的指针 + const dex::TypeId* const type_ids_; + + // 字段标识符列表的指针 + const dex::FieldId* const field_ids_; + + // 方法标识符列表的指针 + const dex::MethodId* const method_ids_; + + // 原型标识符列表的指针 + const dex::ProtoId* const proto_ids_; + + // 类定义列表的指针 + const dex::ClassDef* const class_defs_; + + // 方法句柄列表的指针 + const dex::MethodHandleItem* method_handles_; + + // 方法句柄列表中元素的数量 + size_t num_method_handles_; + ... +}; +``` + +​ 接着了解以下`DexFile`的构造函数实现。 + +```c++ +DexFile::DexFile(const uint8_t* base, + size_t size, + const uint8_t* data_begin, + size_t data_size, + const std::string& location, + uint32_t location_checksum, + const OatDexFile* oat_dex_file, + std::unique_ptr container, + bool is_compact_dex) + : begin_(base), + size_(size), + data_begin_(data_begin), + data_size_(data_size), + location_(location), + location_checksum_(location_checksum), + header_(reinterpret_cast(base)), + string_ids_(reinterpret_cast(base + header_->string_ids_off_)), + type_ids_(reinterpret_cast(base + header_->type_ids_off_)), + field_ids_(reinterpret_cast(base + header_->field_ids_off_)), + method_ids_(reinterpret_cast(base + header_->method_ids_off_)), + proto_ids_(reinterpret_cast(base + header_->proto_ids_off_)), + class_defs_(reinterpret_cast(base + header_->class_defs_off_)), + method_handles_(nullptr), + num_method_handles_(0), + call_site_ids_(nullptr), + num_call_site_ids_(0), + hiddenapi_class_data_(nullptr), + oat_dex_file_(oat_dex_file), + container_(std::move(container)), + is_compact_dex_(is_compact_dex), + hiddenapi_domain_(hiddenapi::Domain::kApplication) { + CHECK(begin_ != nullptr) << GetLocation(); + CHECK_GT(size_, 0U) << GetLocation(); + // Check base (=header) alignment. + // Must be 4-byte aligned to avoid undefined behavior when accessing + // any of the sections via a pointer. + CHECK_ALIGNED(begin_, alignof(Header)); + + InitializeSectionsFromMapList(); +} +``` + +​ 可以看出`header_`这个`dex`文件头的结构体中存储着最重要的信息,初始化时先是填充了`header_`中的数据,然后再根据`header_`文件头,将其他重要信息初始化。当需要对这个`Dex`进行访问时,只需要通过文件头信息,就可以为我们索引找到任何一段信息了。它提供了整个文件的框架和结构。 + +​ 使用`010 Editor`工具,通过模板库在线安装`DEX.bt`模板,然后打开之前的样例文件,查看在例子中`header_`的真实数据。 + +![image-20230325190621427](.\images\dex_header.png) ### 7.3.3 函数调用流程 @@ -818,6 +970,84 @@ END art_quick_to_interpreter_bridge ​ 对于`native`函数,它们是由操作系统内核直接执行的。应用程序需要通过`JNI(Java Native Interface)`来调用`native`函数,即先将`Java`数据结构转换为`C/C++`类型,然后将参数传递给`native`函数,最后将结果转换为`Java`数据结构并返回给应用程序。在这个过程中,`JNI`提供了一系列的函数和接口来实现`Java`与本地代码之间的交互和转换。 +​ 下面使用`jadx`工具打开前文中的样例程序,样例程序的代码如下。 + +```java +public class MyCommon { + public static String getMyJarVer() { + return "v1.0"; + } + public static int add(int a, int b) { + return a + b; + } + public static void injectJar(Application app) { + Toast.makeText(app, "Hello, inject jar!", 0); + } +} +``` + +​ 切换为展示smali指令,并右键选择显示Dalvik字节码,看到如下代码。 + +```java +.method public static add(II)I + .registers 3 + + .param p0, "a":I + .param p1, "b":I + + .line 11 + 002bf89c: 9000 0102 0000: add-int v0, p0, p1 + .end local v1 # "a":I + .end local v2 # "b":I + 002bf8a0: 0f00 0002: return v0 + +.end method +``` + +​ `.registers 3`表示该函数中使用到了3个寄存器,分别为两个参数和返回值。 + +​ `002bf89c` 表示的是当前指令的偏移地址。 + +​ `9000 0102` 就是该函数中的`java`字节码,其中前两个字节`9000`表示的是操作码,由于字节码是大端序存储的,所以这里实际操作码解读为`0x0090`,下面在`AOSP`中对`Opcodes`的定义中也能看到`0x90`操作码对应的操作是`add-int`。 + +```java +public interface Opcodes { + ... + int OP_ADD_INT = 0x0090; + ... +} +``` + +​ 使用`010 Editor`工具,将样例程序解压后获得的`classes.dex`拖入`010 Editor`打开。看到结果如下。 + +![image-20230325133550347](.\images\dex模板.png) + +​ 接下来在`dex_class_defs`中寻找刚刚分析的目标类`MyCommon`。 + +``` +struct class_def_item class_def[2205] public cn.mik.myjar.MyCommon 1243C4h 20h Fg: Bg:0xE0E0E0 Class ID +``` + +​ 将其展开后,能看到该`class`的详细信息,在上一节的类加载中,当DEX被解析后,加载的类在内存中就是以这样的结构结果存储着数据。 + +![image-20230325134213390](.\images\def_class.png) + +​ 在其中的函数结构体下面的`code_item`类型的数据,就存储着该函数要执行的`java`字节码,继续展开该结构。 + +![image-20230325134632085](.\images\codeitem1.png) + +​ 这里就能看到对该函数结构的描述了,`insns`中则存储着函数要执行的指令。每个指令的单位是`ushort`,即两个字节存储,将这里的三个指令转换为16进制表示则是。 + +``` +144 = 00 90 -> 大端序 -> 9000 + +513 = 02 01 -> 大端序 -> 0102 + +15 = 00 0F -> 大端序 -> 0f00 +``` + +​ 结果和上面`smali`展示中的一致。这就是`java`字节码,在调用过程中,系统会经过层层的转换和解析,最终通过对函数中的指令进行执行来完成函数的调用。 + ​ 接下来根据之前的例子,开始对函数调用流程的代码进行跟踪分析。 ```java @@ -1301,7 +1531,7 @@ static inline JValue Execute( ​ `Android Studio `在调试模式下会自动为每个线程启动一个监听器,并在方法进入和退出时触发相应的事件。这些事件包括 `Method Entry`(方法入口)、`Method Exit`(方法出口)等。 -​ `ExecuteSwitch`是基于 switch 语句实现的一种解释器,用于执行当前方法的指令集。在 `Android` 应用程序中,每个方法都会对应一组指令集,用于描述该方法的具体实现。当该方法被调用时,系统需要按照指令集来执行相应的操作,从而实现该方法的功能并计算出结果。 +​ `ExecuteSwitch`是基于 `switch `语句实现的一种解释器,用于执行当前方法的指令集。在 `Android` 应用程序中,每个方法都会对应一组指令集,用于描述该方法的具体实现。当该方法被调用时,系统需要按照指令集来执行相应的操作,从而实现该方法的功能并计算出结果。 ​ `ExecuteMterpImpl`是基于` Mterp(Method Interpreter)`技术实现。`Mterp `技术使用指令集解释器来执行应用程序的代码,相比于` JIT `编译模式可以更快地启动和执行短小精悍的方法,同时也可以避免 `JIT `编译带来的额外开销。 @@ -1392,57 +1622,196 @@ ENTRY ExecuteMterpImpl ```java public interface Opcodes { ... - int OP_INVOKE_STATIC = 0x0071; - int OP_INVOKE_INTERFACE = 0x0072; - int OP_INVOKE_VIRTUAL_RANGE = 0x0074; - int OP_INVOKE_SUPER_RANGE = 0x0075; - int OP_INVOKE_DIRECT_RANGE = 0x0076; - int OP_INVOKE_STATIC_RANGE = 0x0077; - int OP_INVOKE_INTERFACE_RANGE = 0x0078; + int OP_IPUT_CHAR = 0x005e; + int OP_IPUT_SHORT = 0x005f; + int OP_SGET = 0x0060; + int OP_SGET_WIDE = 0x0061; ... } ``` -​ 而在`invoke.S`汇编文件中,会有其对应操作码的具体实现。 +​ 而在在汇编文件中,会有其对应操作码的具体实现。 ```assembly -%def op_invoke_static(): -% invoke(helper="MterpInvokeStatic") +%def field(helper=""): + .extern $helper + mov x0, xPC // arg0: 指令的地址 + mov x1, xINST // arg1: 指令对应的16位数值 + add x2, xFP, #OFF_FP_SHADOWFRAME // arg2: ShadowFrame* sf + mov x3, xSELF // arg3: Thread* self + PREFETCH_INST 2 // 预备取下一条指令 + bl $helper // 调用 $helper 函数 + cbz x0, MterpPossibleException + ADVANCE 2 + GET_INST_OPCODE ip // 从指令中获取操作码 + GOTO_OPCODE ip // 跳转到操作码处理逻辑 +%def op_iput(helper="MterpIPutU32"): +% field(helper=helper) -%def op_invoke_static_range(): -% invoke(helper="MterpInvokeStaticRange") +%def op_sget(helper="MterpSGetU32"): +% field(helper=helper) -%def op_invoke_super(): -% invoke(helper="MterpInvokeSuper") - /* - * Handle a "super" method call. - * - * for: invoke-super, invoke-super/range - */ - /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ - /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ +%def op_iput_char(): +% op_iput(helper="MterpIPutU16") -%def op_invoke_super_range(): -% invoke(helper="MterpInvokeSuperRange") +%def op_iput_short(): +% op_iput(helper="MterpIPutI16") -%def op_invoke_virtual(): -% invoke(helper="MterpInvokeVirtual") - /* - * Handle a virtual method call. - * - * for: invoke-virtual, invoke-virtual/range - */ - /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ - /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ +%def op_sget_wide(): +% op_sget(helper="MterpSGetU64") -%def op_invoke_virtual_range(): -% invoke(helper="MterpInvokeVirtualRange") ``` -​ 到这里,就找到对应的执行`C++`函数将`Dex`的指令逐一进行执行处理。`Mterp`的执行流程到这里就非常清晰了。下一步开始分析`switch`解释器的执行流程。 +​ 到这里,就找到对应的执行`C++`函数将`Dex`的指令逐一进行执行处理,其对应的`C++`执行部分则在文件`mterp.cc`文件中找到。`Mterp`的执行流程到这里就非常清晰了。下一步开始分析`switch`解释器的执行流程。开始分析函数`ExecuteSwitch`的实现。 +```c++ +static JValue ExecuteSwitch(Thread* self, + const CodeItemDataAccessor& accessor, + ShadowFrame& shadow_frame, + JValue result_register, + bool interpret_one_instruction) REQUIRES_SHARED(Locks::mutator_lock_) { + // 是否处于事务中 + if (Runtime::Current()->IsActiveTransaction()) { + // 是否跳过访问检查 + if (shadow_frame.GetMethod()->SkipAccessChecks()) { + return ExecuteSwitchImpl( + self, accessor, shadow_frame, result_register, interpret_one_instruction); + } else { + return ExecuteSwitchImpl( + self, accessor, shadow_frame, result_register, interpret_one_instruction); + } + } else { + if (shadow_frame.GetMethod()->SkipAccessChecks()) { + return ExecuteSwitchImpl( + self, accessor, shadow_frame, result_register, interpret_one_instruction); + } else { + return ExecuteSwitchImpl( + self, accessor, shadow_frame, result_register, interpret_one_instruction); + } + } +} +``` +​ 在这个函数中,根据条件调整参数,最终都是调用`ExecuteSwitchImpl`,下面继续看解释器的实现。 + +```c++ +template +void ExecuteSwitchImplCpp(SwitchImplContext* ctx) { + ... + // 获取到当前正在执行的Dex指令在CodeItem中的索引位置 + uint32_t dex_pc = shadow_frame.GetDexPC(); + const auto* const instrumentation = Runtime::Current()->GetInstrumentation(); + // 获取指令流 + const uint16_t* const insns = accessor.Insns(); + // 将当前指令转换为专门用来操作指令的Instruction类 + const Instruction* next = Instruction::At(insns + dex_pc); + + DCHECK(!shadow_frame.GetForceRetryInstruction()) + << "Entered interpreter from invoke without retry instruction being handled!"; + + bool const interpret_one_instruction = ctx->interpret_one_instruction; + while (true) { + // 获取下一条待执行的指令 + const Instruction* const inst = next; + dex_pc = inst->GetDexPc(insns); + // 更新pc位置 + shadow_frame.SetDexPC(dex_pc); + TraceExecution(shadow_frame, inst, dex_pc); + // 从指令中获取到操作码 + uint16_t inst_data = inst->Fetch16(0); + bool exit = false; + bool success; // Moved outside to keep frames small under asan. + // 执行指令前的预处理 + if (InstructionHandler( + ctx, instrumentation, self, shadow_frame, dex_pc, inst, inst_data, next, exit). + Preamble()) { + DCHECK_EQ(self->IsExceptionPending(), inst->Opcode(inst_data) == Instruction::MOVE_EXCEPTION); + // 这是一个超大的switch,根据操作码来选择如何执行 + switch (inst->Opcode(inst_data)) { +#define OPCODE_CASE(OPCODE, OPCODE_NAME, NAME, FORMAT, i, a, e, v) \ + case OPCODE: { \ + next = inst->RelativeAt(Instruction::SizeInCodeUnits(Instruction::FORMAT)); \ + success = OP_##OPCODE_NAME( \ + ctx, instrumentation, self, shadow_frame, dex_pc, inst, inst_data, next, exit); \ + if (success && LIKELY(!interpret_one_instruction)) { \ + continue; \ + } \ + break; \ + } + DEX_INSTRUCTION_LIST(OPCODE_CASE) +#undef OPCODE_CASE + } + } + ... + } +} +``` + +​ `switch`解释器,就是指的这个函数中,使用`switch`来对不同的所有操作码进行对应的处理,但是这里并没有看到非常大的`case`条件,这是因为代码都在`OPCODE_CASE`定义中,找到这个定义的实现如下。 + +```c++ +#define OPCODE_CASE(OPCODE, OPCODE_NAME, NAME, FORMAT, i, a, e, v) \ +template \ +ASAN_NO_INLINE static bool OP_##OPCODE_NAME( \ + SwitchImplContext* ctx, \ + const instrumentation::Instrumentation* instrumentation, \ + Thread* self, \ + ShadowFrame& shadow_frame, \ + uint16_t dex_pc, \ + const Instruction* inst, \ + uint16_t inst_data, \ + const Instruction*& next, \ + bool& exit) REQUIRES_SHARED(Locks::mutator_lock_) { \ + InstructionHandler handler( \ + ctx, instrumentation, self, shadow_frame, dex_pc, inst, inst_data, next, exit); \ + return LIKELY(handler.OPCODE_NAME()); \ +} +DEX_INSTRUCTION_LIST(OPCODE_CASE) +#undef OPCODE_CASE +``` + +​ 可以看到内部是调用了初始化了一个`InstructionHandler`对象,然后`handler.OPCODE_NAME()`调用了对应的操作码函数。最后看看其实现。 + +```c++ +class InstructionHandler { + ... + ALWAYS_INLINE InstructionHandler(SwitchImplContext* ctx, + const instrumentation::Instrumentation* instrumentation, + Thread* self, + ShadowFrame& shadow_frame, + uint16_t dex_pc, + const Instruction* inst, + uint16_t inst_data, + const Instruction*& next, + bool& exit_interpreter_loop) + : ctx_(ctx), + instrumentation_(instrumentation), + self_(self), + shadow_frame_(shadow_frame), + dex_pc_(dex_pc), + inst_(inst), + inst_data_(inst_data), + next_(next), + exit_interpreter_loop_(exit_interpreter_loop) { + } + + ... + + HANDLER_ATTRIBUTES bool INVOKE_STATIC() { + return HandleInvoke(); + } + + HANDLER_ATTRIBUTES bool INVOKE_STATIC_RANGE() { + return HandleInvoke(); + } + ... +} +``` + +​ 能够看到,所有操作码对应的实现都是在`InstructionHandler`中进行实现,`switch`解释器的做法非常简单粗暴,尽量性能较差,但是可读性高,当需求是对调用流程进行打桩,或者定制修改时,可以选择强制其走`switch`解释器来执行该函数。 + +​ 需要注意的是,在执行的优化中,当强制走解释器流程调用后,它会交给` JIT `编译器进行编译,生成本地机器码。在生成机器码的同时,`JIT` 编译器会将该函数的入口地址设置为生成的机器码的地址。在下一次调用该函数时,虚拟机就会跳过解释器阶段,直接执行机器码,从而提高程序的执行效率。 ### 7.3.4 动态加载壳的实现 diff --git a/chapter-07/images/codeitem.png b/chapter-07/images/codeitem.png new file mode 100644 index 0000000000000000000000000000000000000000..4515829851a70e94045b0b264077ec4e91988440 GIT binary patch literal 20065 zcmcG0XIN8fx9!4)2*^fJIw%$p5KyVoK|ngvkrEK;z1I*F5J8GalirlxtF%z0NDEDR zQy>%}bO=cxxhuNAeZKFWbD!t@x$9S0WF@Q2cg!)z95Z1WY6_H>7%l+-K&klji6#J? z`vL$Yh8NF(dklCp!vWw1p!h^u+dCCCr&`9W;QIs9bi3%2Y*^E6ohzkEytTtyueD{U z|09Rmb!B(TMlPK(&$ADX25vprCjMbR#u|U9BUwj5>xoY1U_BV1f~7 z9dW3e8L-rPd7QviXRTU*<1ZKS~M>e^%rhYi0>_up>_Y#4fWj`&I}IB`m4c?8L&I%?G9 zETM(9zC}KA(xkeiqH8O_&gJ#+>ZXF}?I=y4mEX4Lq3t_`FzU{*U>5pVW<}x~PZmS= zJJll=NtOlM0y;E3>ReryIL-%JG`eGy&>3!7JMnj+OJ!9N$XFeEg!ksL)$!`)YO9(EH-694ExQiWk0RltVcPq?B$$({eDJcVXgX;+lq@BmK3o|Oox5b z%FEyRX|%=hc9@EO=~_e={Or|twh`q3ua*V5#+ ztp`I-;q@S^mnex>o1BX=X6mvRa019P;KX_VG@4B#;Q=s&+JzPM1?2!IGG*(1r`K9(%5k#Wq*u zf$L@0`d(D*%jVY<5{=gWqOOEqBsNO+CJV$-+GV_+HRQ1KgRq^ERV6-y=`#>`BTH{H zSkF7FMugIWQlEXSc$i&{$u2o}gKNGXH)HZ*!ioPtbQF=U4;ytSZ$x_P4d6#PvQIbr zAwQV*9LZf*$}pSCLt?Y8u9s^_DRt^x7zl~`w6*FV4lh~E-rG5Eo)@10`mAozw<8+BT16-I=^;%sGP^FHOc&(8|^UP2zsG7IRXR)Iq5ALA7$l;?3BrjkV})A< zgB*leThV|7-&BeO!=57r*8cBCLum%-Z5?leI=DwdFPrqU13a#ad?@LRTlghn(|a1 zvhdimEYbPGdVd>zSQ8w3x=212rBLO+a~vbG?59EK#BErZ8K+1Cll|U{5+{mgK zjy4ICY8dTLR=h_(mKf-eP5>fHZ=O3gwR5K4{L-jGnu}&D<8ULUwO;* zrF7rBeGul{FIL#MuRCvTCUt6uTI)2*7E!7clyFaDvk3;6qWbRwS4r>DS{+c#z+d1q zbq9RDFoafYbE#sxT1F$0vBnRS;zc7PZiUx5!F>0-{3QL?70Td8U67N-)#0V^`fb1^ zR8cSyrF9!oI#h3e$MoT&$G3EK`o3QcE4EJ+QL6L1mrP2(`Cu%0D%7{VaUQY%)}_60 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 V!U4t%hkZ_^;~u{5&931&{{S}`#9{yd literal 0 HcmV?d00001 diff --git a/chapter-07/images/codeitem1.png b/chapter-07/images/codeitem1.png new file mode 100644 index 0000000000000000000000000000000000000000..4515829851a70e94045b0b264077ec4e91988440 GIT binary patch literal 20065 zcmcG0XIN8fx9!4)2*^fJIw%$p5KyVoK|ngvkrEK;z1I*F5J8GalirlxtF%z0NDEDR zQy>%}bO=cxxhuNAeZKFWbD!t@x$9S0WF@Q2cg!)z95Z1WY6_H>7%l+-K&klji6#J? z`vL$Yh8NF(dklCp!vWw1p!h^u+dCCCr&`9W;QIs9bi3%2Y*^E6ohzkEytTtyueD{U z|09Rmb!B(TMlPK(&$ADX25vprCjMbR#u|U9BUwj5>xoY1U_BV1f~7 z9dW3e8L-rPd7QviXRTU*<1ZKS~M>e^%rhYi0>_up>_Y#4fWj`&I}IB`m4c?8L&I%?G9 zETM(9zC}KA(xkeiqH8O_&gJ#+>ZXF}?I=y4mEX4Lq3t_`FzU{*U>5pVW<}x~PZmS= zJJll=NtOlM0y;E3>ReryIL-%JG`eGy&>3!7JMnj+OJ!9N$XFeEg!ksL)$!`)YO9(EH-694ExQiWk0RltVcPq?B$$({eDJcVXgX;+lq@BmK3o|Oox5b z%FEyRX|%=hc9@EO=~_e={Or|twh`q3ua*V5#+ ztp`I-;q@S^mnex>o1BX=X6mvRa019P;KX_VG@4B#;Q=s&+JzPM1?2!IGG*(1r`K9(%5k#Wq*u zf$L@0`d(D*%jVY<5{=gWqOOEqBsNO+CJV$-+GV_+HRQ1KgRq^ERV6-y=`#>`BTH{H zSkF7FMugIWQlEXSc$i&{$u2o}gKNGXH)HZ*!ioPtbQF=U4;ytSZ$x_P4d6#PvQIbr zAwQV*9LZf*$}pSCLt?Y8u9s^_DRt^x7zl~`w6*FV4lh~E-rG5Eo)@10`mAozw<8+BT16-I=^;%sGP^FHOc&(8|^UP2zsG7IRXR)Iq5ALA7$l;?3BrjkV})A< zgB*leThV|7-&BeO!=57r*8cBCLum%-Z5?leI=DwdFPrqU13a#ad?@LRTlghn(|a1 zvhdimEYbPGdVd>zSQ8w3x=212rBLO+a~vbG?59EK#BErZ8K+1Cll|U{5+{mgK zjy4ICY8dTLR=h_(mKf-eP5>fHZ=O3gwR5K4{L-jGnu}&D<8ULUwO;* zrF7rBeGul{FIL#MuRCvTCUt6uTI)2*7E!7clyFaDvk3;6qWbRwS4r>DS{+c#z+d1q zbq9RDFoafYbE#sxT1F$0vBnRS;zc7PZiUx5!F>0-{3QL?70Td8U67N-)#0V^`fb1^ zR8cSyrF9!oI#h3e$MoT&$G3EK`o3QcE4EJ+QL6L1mrP2(`Cu%0D%7{VaUQY%)}_60 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 V!U4t%hkZ_^;~u{5&931&{{S}`#9{yd literal 0 HcmV?d00001 diff --git a/chapter-07/images/def_class.png b/chapter-07/images/def_class.png new file mode 100644 index 0000000000000000000000000000000000000000..65c6b5b1a86b309dce1ff6efbbe63d37e6fd6f80 GIT binary patch literal 26549 zcmb5WcU)83+BLc?fCz|+^rj-9bm>S5VnL-#?@fsGCY=xzuu+u`0TiT2hfoA0GzroI zQbO-dO6Y_VNbbVD_j%9x&i&r|yXy}^l9|bzi}{Q>#(18Ycbe+TH0N2)0{}qt_|g5R z0C08@08WLUI}N_VL8UbW09S#>_wVZXAaLUyFzYhd@vkk@Dth5BvK6;ii(%h@G zusCZ{=xl7E*C=uz`qzkGyhQ(APyeZtCcqTE5B9vpjVk9! zJNUPNC9CPnDhwynr2bJLk+ZdZ(VV&+*m;*(#y)C=_n6+VojL5&|76x=bF=(1(!T4g z7lNCs*hcu2qUi#*1|!IE3W-IG+*82CPHkm{wFA!Ms6H~2mbMYYjX=Eo1$vH{!`GD$ z%ab)<)|^Y2W;1%Xy3>V`+jZgo?V`Y01VxOFV4;KFH-EzirWBOkC~+OEPuFIAI@@; zcIFc_6i724N{^?e^1JKzw^oYlnTwxW&>RY?Kd5R46f@Cx>4TVS0+wccA|5{w)WyxB zFQr#-$R7sx)yhVtvjq@aGD$BMLcL}i8}-5GY_gTG<^IQuIS7sN+KA&fBdCgp=wKJi z<1YxfX8&j$>IWsi()>{;{87H@gEf_WnM7`!JFr5M}-Pre)lA(lPtZh z$K^x13=wmc~52b`%y*eqawtuNc#7a5p*;Ei@W@G7d)mJGI^C3}AP9ZyFLJiaR-V+g;F)3p; z%l^}7iO1@1Thr#rJ0iN?yuM;UdmLMF;8o|=)OUd^CPdo0Md4F&_2tQHWAbh^>V^c~ zyY#gh!uxDPOgnQUv~92h#lCps-9Qd$8?q8dtq$F-_)+SV>!%y2Wm2@QOCMX)T#3WE zillD}xQrS6CIujo9#;N@-ygUpX|oZe*`>3|{(>mky)%2wIt15`?u;erNL9mx7dSv< zuBN8;0J=I;`r-M^XSXxa2}s>ddG82Qr+j!|%J_BTj$iucyv4Qk=Gn(`S?jh&HSG@g zw<#A8Y(c2ECc_tQ-Kid{z(M_AzW*-orN*uqIz=!3P@7?Nxt`3a&a> z$m*bbz{;su-2`Ei?DlMRP@PWt<-1^HQ|D(fw{*i7ke@m$Z zjP|%8)iwUb&Ag(oO|P6JQ*byOeld{H<0CXg99XPvx2hU_@cg<|FID~d!LLZ&7w9E6 zUnZIYQIgP0Vq^ArjeYXW^ycqcM{{DbJ1&5w+mcL^EEBp!Y8&JdFN(jr|F-yz=$5#G z=u;}L{y}E@2*HW(wuKFTu`Z04ZI={J;R`%Re6Y>F>jGYaW4W7vVsc=28M#BQFcNDo zJt+8Wb*dFp&#+4Isidelbz5*EbhFSaX?a4gUx^nuXVffE~iqJ$gTDdJ93 z=Rw+O5cj-x+kGO)1)tughd4-}uOFMIs)W~^#hcd(YR$49EAd=&>o=+hd4vcS^p{~6 zWDR1Ox9{4jeEBd%U`JuA75C%6Vas*BVYqZ;bAM*%!EaVu>J#8PC)t8FRhj?DwrHw9 zeQNcQV4Kc-WX=q<5RFhTWFt|*H$D}+ZQ`}fwI5nW}+n`s3C% zOK$B596t*G(L8(UP?(G2e=tIX|2VB>@FvZwK)|dMm&Pm?SH%r44WsO_k9p}8r-8hM zlnP1h$#OHCpvU6zE6Pb@L)=RsTJ^UfgB{JT4c3Tev4-r9J5XVK&)k@5@>S*#y`pvN z8KA6USHL0H#R6M1?AVSza}w(f9xvA~PE1S)(NO>vsgfx)FdE=$=AU-!?x=fACv8gP zI*m>NVxBAb)Zqnk0C;bSJ?}GK1IvMQI>BwGsAAo~cRCV;Y&$nVmSj>71W~Fh=z2PyqO>B)BB^3wP8OLu ziffFKSL>ado$Y{F_Fy$!QCa_V;*n`QlWRpk?zsGHK4P2vAFub73e6Y4n7)yYS%T-yT zD2NYhhWRCW?FRiLPV1NV-bjzTsrk>_S0`E_Q=|0!6`< z%${K$ns_llNe&1Ie^^_i@a4eM_1jiHPP=m_N?w+>^HFcPw~w? z@C&P>6UAXJ{*J`z`z^C6dCUnB>+bLGWOH-EsFPk{-7`)jC2-o<>5ux8I#N?WknelH zQxf>$*B&<&2A&}D{3Dj3g)wq@_Eb0``#SZ8DN`w9_|p#{craQeDaY5e0P@xr8iED$!;SHBKy53(C%g$ zW1V{|yhdU>_L-N4y@m(+X4Mz)o;NrifZOz8020fyr`s%X4&cAGBM?^p`cTxNFwHfA z{go&oqBT#kXNF*8WCz@I+>{Tq{Qp4)9>Cs+oCLpxWg>_;w#$bRDcWzQM7nbUz@Vhz z{Ip+1=6eVIVpaA>l;aok0${-eUtNmRiVp`}#t_gxH{5dE+|YTccXap*l4|2iqJY4t zPT|;Tqd|~M=x523E&3Ab*(cQ4$%5LYb3#i~i=rQQ4Eo?9^N4+#q;K)!mg^SlQZ;7) zx~KSaTR8zs5$HlfOkJI;%1}#v5Q9%C5*yNZpZ;ESwPn<)o0$$75>6GxE|smE<4jEx z&R@EFl?%RfsZO{U;%Vz-f>5~}clSSK=lq60N!*OrB8U$(_=60`*X;s(2FGxP$FK4X z*6y*ko8G7P3YD$c6uhnk*>UfkV?m8R8&l{gI@zd)GD!Izcl8q*hz_LeN13&QE5_Eg ztz5DEbD0N^bP!GBTwU#NaywbO$JuM`O}c^CZ=H0rojhXIYR0JM{B#Erkl9r%27V>h zPw`I-{XBqt`hczpl%d^`1fQ{5Si%Q(c#?ao_GW?ZHykb?CP!_`r1Fcor)@yVCbe+# z`i0K{^M}~H3dml}!F#NUOJn-HA7y}x>Ve*UrjCugS|gydD_W1+3y0mHc-_uZXMQX5 zRkfY~)jYX>{!7}6Aq8{CTmh2RQWQaYt`)8%4Yf$Z>uQz(3nF(1yKV~-D?UscCE6U~ zj&n;y1`p0%rLMGcxkB?pTMzKfs^If-5gc19hhw;xA6hCMh6JFU5y&~tQP$HziVzzo z(Q$Uxih(CS7feD2x{Qz;f}fs5!>H#vA^Rpq6BhuL%Mv3@wYRSr+0EX~k5Qcg6sEwEzvNNby?rUX{$ZyP-Mrs-g@ZbVN%j>P^Y=i!Q~$4^1)jr=fQRij z2Az}g#?J2C2hg*QW8%U*KNh}{_FWGb(Vm7F?{m=a>?!j&9xk;eWkDLmPka^?KT~F;AoYj*lw|Eh}Y60TZPc0PcY_$YO-!V zYxV>lj>#=PS$^mS>iVi`fW)$X7h}DqaE?WF#LBml3(Sg>F~Py(sqFr>CDPc58HZ^C zD-MV0zQa}8q2`Q2%-&cWt!}E3faVJcyCcP1e#8$yN2k7|OtmfPpi{_QO$<3xl}PUf z^zQh_=W=`|3=i+0ebduu`$UZMvBln(hq+vF#!q*VSUy)c84v)1f^AU*R7r=@q0_cS z%7LAW#Ii>lRDH=W{(;dwSW-n~5juq#hS|Lwhb3#EF8o{^VcI5oFH_I*6oI0lpx`rf z$@m`Z3=-RAt1ZcK0s}xARlu7KJl-ow8UR+xhaG=A0047gA=L05EMc3y>7+@}JV*>q zen~6_quga2M6sCtmIu-M$B!G}WL*Lwe)8)nce} z1Z4N(3(9GMAQMD0hIk({yfhSSz*Tpfeuw^-Q$5(QZP=O-KJDIGGGyq`ZO?IC9>K+vg_)JZZDr5y$p@+vY=>3A!9FrIEN1<`#UV6y^AuY7-)mvUK zFNSY3$v{qgs4HBw_eW)NL@YR@Bk5nS84hhG-13&A?>54TwMn(E@VYAeh=O^g^TQ{f z1TTzwXQ#%v%5Yj%-0Kg^Zf8}(bRW(<8#uWa3q0S9zL9clH)1uIYM|2{9;@!k6*crt z)|_eK2dpuQYEOKRVLFbx=f66$o@)lHVa=MwuZXe)(?L; z7vi4Ukpg;PK@ZLcR+Vf|=WTMUdeHreD&F{cwkO{lU+q~e1l&5A!5Nu1wT=2XTcLGA z)pjX@zKJ;@C$g?rcmMR-cNx|wv*39&`4k~d9C&mu|1@y3*^CJxrQuipy%N8-hbv^n zr1Nt=VIi=3<8;eV>*C9#k#02-dsFi^BkJDJp4+s>ajFHJZ{M_$()=o0L98$-_c|aj zWQ!c0m{@Z$>~!Y=8g3lQhq;@K+@OgI4mO@7Y2Hf|zOk|U#dP7XWvmBIcNN6|Y6mP9 zS@0S4eegXnxhEMHbru|b!+El_3TMfbvQ6*_0Bo2{8Lq5h)c-8Zow=!?|8WJqW&T#Q z1|0uVwEfqlZzvB0x~9eDT_Vr{SZi=A0hMfTjOS|I^cVz(79a>F(o&oYS_OB!!6LJy zJLlhk``it2b0<$*6t+?AEw(We~`HQw+P(c)h zz)pagO-X1KBj3nUMCDCsDIq%|?0#%Z(M57Vr(NcSNSep8#|F)l@PL|k(ZbE>n!Oy( zi!Z8b;+9~yMIJlY45tHn8L7q${0^2LEeE;#hWWQ&|0XS)*bi`*kVc$-2}9`guAF;$ z&~))M-l_k`Qhq|GwHt>-?zF zTBG5Ye+w*VIP0z&C)ugE1XSH`bso#+10w}g+V~1LsxgJj$K00VXJA})TehkYy2BZ`dl7S`25w@q{VbW?1I;4 z^Q2q%% z^}BsHDG$O&3RQL2hWN~`$z7Y)S|0LAX9db?CkPO@JHb&0?>Cz*r3gA3lh53*2b9g)8XEh!G;HypJQLx&4@em5fq;8dJImb=m0&J zjP#)^(+;Xu`V%bKPM=nb8mp7Ne=>1f+PIG>ltQ>C^FBEM(W&Dp&${WDop9^xqsGD~ z7Q5@t&ktpr_g9MhcMG|eQID1OE7FboX9FiQPA{_XLVes7Fy~;Lmu4J~G%mjy^@tmN z+v?EdISBB8;b!3tZJiJjV5q42Nt2C;Lc+W%2YmI1cY?hY4C4k1$^1G0lC?F07+aH~ zY}cQ$ySnjYKw)5a2HT$G`_IL7T1-24AQ?$fH%k0_Md#ynjtl4kO^L~Zilh~_6)UYS z&U5-fNRl$eTJWwStG*dqL9heMDP9hE2r)RS;)G9FnnyG;~s36v6AgHavqr=MPmq)~x6GnQuj95IrWCiJ4 zPgg}ladN>~vS&nyH)2=#b>1rHCcC8X+s}=@1Wop_R|gI=&kV1E^Ee+(fxwySOaeap z!P>sD3W$Gb=YT>CqVECM%k4(ks=c^559TP;od99gU_xx}i*9CluThv+DyFXL66X*7O*THuXxV$*}VeCApPA+P1%T(PWUkamh+ z1)HGV&~WsiE@(vl!&BQelXSV|7g}%Yi|q0~gR|)?8|)MMW@70p2KKD^b;_Gcma~Y( zyy;4(VT?ki#gT*+HrXmqd6`b3z1UmkB-LXc)JCXn(=0u`x zLT5QE?m%V;TZ6=6B|l4rj}3z{UP)0p&W{JWLF+^pNiYI{*9OMjWv>sn%=ji9% zw58i9BFh}~VyWu>_F^4SnG;qKrv41IJZj$}Zai}yl$stexkk5m+dc3sAU@|meTX%d zk(j^B4+zAKeHoQ+Y2aua^o{68?)%lq1W;)tzXzR~q-Sj8{SX4Hld+9^feU_|AeIQD4ye* z<@cv@f?=@OBom8rhPj1zGhCJu6@Z4iqM^Z!1>wpc4l^QR8;docOdS;uS@8MvV1b?YQLIniiaV9-pU_4RDCbM2OuAGBTJD!;8K!Z0>e>6<2dbsjF8in zOgH~bxo`A5R80XlUjB+1`5gIwi5Le7#0tatv8zdWCMPTZ`K$km889OM#LS4J^Qh!`6pDiL>$OYe(7YKM2lyEAYTqKLA`JrVR}!d`AvHG{2nC8z*qRGY*p@& zL?KqyC@v}F_Qzee*2qiUV@<5i77@0ndpwjb7cvW&lSjXbR{5OmG|K5uyFRWfuS?xW zE^-YI5z(Oc%+NZ?5KG9~RrHk`%~tTK$P1O)Lm~@@rWhxUX$r0mraFOLs6(h{7gW-> zHMEvs?`m;2Lfp`!V+egDZy0me|1~Sj=;ZD#8gsPBqXL^JwC9hcmkvP;-c4(tmd(Gm z)cS4h&=>1&+RBj-zMJf{qCe~ANW=MsAy+u_8;`kv;>Iu^KI)@Z0k12*gar04?NzLiupbZ2Z7|TT7dgxz)dt0 zTfh4mpG|2YMPCzdi7oc8GHi__-MP&24)T6G6gl4B91xlPqcCOCQYRG-9UNQ?K9}}# zB=moc!DzH;Y!GN03EgYB^iX|?kT=BPNoz_Ty!_yaVz^s`E4sP*br!Hudw@a7D-0F}@oUYjZDYBk&Rcc!o8w-+3(aje@opkU$(uFZ9Fa2OP+5BGeq16qr!kmS=6s5IjvW#2!eHKI+ts{tkg~z?l#rNU?^S!)T9jM>bkvX9M2Bc6Xfy=OzQHeBI;c^IdeZSn?&xtEdjV>%I7e4oMGn zeJco@25Grw4eFfV+XD*YqvNz4i5RTLPxIltb24-DwQWP|uL#pNGLcF|RJ!%v_UTCL zt)49N^7VbmBCU8a&Vz6FBg#UwUKX2NBjtM7>J6IKub~6q%A29I%3aD4HsT*8Yr@*U zlk&Hr))dQqd$*!|O0SJE&CY%8bij`6@D!!P@CWI{LDJ>y0`g;`gpl=1SPNemQ({zh z>9&pNoLrdGGhSwDZVS>Ghfi!%m5@31!)|1-ROgLHFsg#bv$Zt#xtl%*)Rd@Bi}ItJ z{Fze+bh4k5?`1tZoTcxy{Qm3hy4<_>!)bN=>rcu0%)JU{`p=3<9#`KX(N!c(7gQ{% znFMQNJBXo*6}9w!7glReNxDL$JGv4T1k<*LNQ(5Ai%>>I$pX^@y(;QHY^@433tnu5 z%@+jMN3SX8;Vb`qr}ePhOi=XrX2u8deZhlWa9~=o6Qf<*lrW;*i-o zwrD?qVAQYnx9Cp_5U$~oWcY&{t+B_nIyaV=^MB{H(L)96=5$(1XY8%coIL<_Cw0kB_BI=wzKbV z)&2Ne5p2o2n8lp1E}-6?e8jFPWQse|&+d59LU4g0(;>dLm#w0ZjVIXQ=MM@gGm5Qf0&p6Ui9c04sz)C~Zz zOKpv({w-S-Q2$r93IL@(cm*98HC5eqa^WQW>L?D_+EngNlTW=9?`B%>hCH4g8Q^dK zksK@0ZY=u;^IL7cG?%Vsg6Z#)8`=?L3?f!0O$EC@+EO8;r4`v6^<#WG$!?f#5U;bc z@Tl>Jdpl?uj4V2nxbOm)2^26M=(={1rpt|z;{uR6gz-F;dK<8i!?+d5i+B)k@zn{t zRn-jz^)O+DEUwms7_Km;Lyk6%2@u%vq6=ylAN|f@>x&J~!O8)~h)Zemg|o#2E6AEE z1f3>cgj+p``W!EPs&0t&akGouDS$zhsr8P3#I>c`^iji%I*?F9a}=n2i+B4p6b`{o zh0})pw+pMPDjA-B-88B73oT_2ViqN*Xe^SFlm~#>&E5Ol{<&F^+X)*56}wBkoDynu z0W*A%&2?e1705~zTvB1hM3sMWovstifSJoFFl)FS2Qs|c$x3keQtYBcEalG%Z5?Sl zI6E6|x_P=Yz31E+AeyJc$I;?fXe|=-F`Q+P*lar@I3TmY`3lDF)l_NUtvw2Y*Xh~E zu&VLunu5_G^FXYDlnMx-VP{v5U~@;QA#v1gVRRw9Ov%Ha0wGj)4|}QBKRg_ek|Yhq z^?Lb1qm?eW`&mMss{`@c8Q0NI`PEH zcW<@DKx2&a?Z+ra|R0P+b&0F?XbhZnFRAFKccc)RDHWvGo^WJ=(O40b` zigf-v4AnE?^0XeQRTZmHu(?)C>A0U%rf1@(!(iAv8S=riR(rScuZ4P{UWiMXd%}Jxe8AGQkkOP*KMZ(tb5UcL? zRUCgmPHOQ&e-B&h)btq!fl3ckMJP4E6y?F@KwFN0zkkB1YT_6KrPgK?DLH|Y>E`aW z$y&m;RNyA27WzijB!>5zSetpbHUUf(sqba+j|qO-xoz8oekcjMKke}aChkwUHSZ2Gr$jUxh7mt3K`Ny0yg##9m&1}$pE|+(JvtaM!3f1&pg)KMyBLsQm!&;ePB4)nhOLGKSBEOp%1-toy> zQ)Co%aLOt0_ZJ?o_pUPKTfHH`S!jx`s-AdI_K;Hc0zX3zByJK7HgM-G~kt(m|W;s|5Mr7y$ zJmVLOZhnGS+?gz3m^d;Ys(S<|3X02Ln$7(mbq5;xWzBDB)9+Lee*a2njBTt~I!?%5 z6{d5ywW+t~7Qpn^$If?}pKCLeF!!7HnoJk(R>G-Cf%a$_=Z@7_yoYM6oNiD{;8KE#!qpt6C7SXKLu<o;!N zgDkdQx)B}SU^zS(-u*~hGNl=#6KRGGx0MsGXM+zOy>q_tlzt5Htfu zIl&6H4Ap|iGJIU&N%!M^HLygK-;1wG2RVnm)WA8XQ(Vm;f@>hg4z|-#D39fS7t%rc z->|U8asms1v)L!G&`Zj9A#8})OO?C|n}jI7D#r{AXP*M5*jh)Bb^-1_<=LER@)m2nPKZ#fb znNFuY&>4MO+Q5F03NW|dbaMsI!HY8c2pZ6Rko zu8KExRe6|Ze*=PU8lp|lgbB&5CFhMz$BQ{QB`=smj_2m}&HTa9y^G<6!%JLvMbf6c zM^p2E)kGZ6+ediPwd@a6J!-&ADq|)e8@!w%$UO3y`JALg)#tPL;@3ns==oKpA67-k1P5gz=F( zJK#+wZR~G?_k0~u#5wWMvFG#-VE6^EQW-t+02_;fOP0>5MmD-A23O1=i zHvvWVRkwmM*zZ1BeVaqkUsvSQ^87phixpIpdoqiv^We0mqK5}JEZVP#zj3$j?k?Xp z^l-SC`?ho>%g|)|0>E_Li!DWDEo<_Y1-RtrV=F59Th*$UMXSckD*d%e7okPlzIqhw zJ+syPz*RNJ;tyjTJyJHMA;qJ|Ad|hBQ_xQFM5{Y>&f8>r0WzUnLwjekitYOPy(#>g z+jwO5*w7Kd?a=6s+5@XIF_6oDP#`hdb)dZ7Y}Pmd0L19n)-Ask9>ZGsKY^LNf9##7 zYzhJUbC|EZQJiGj8s@1 zQcWe9?&Nf15G~p2&2(zi6H0hS#RJQKXaQoqSdyr_iD&?V6f&W|sFPkhx)h{!NU739 zvi9w)@JCf`$Nw+HK-J(^MApdciK9<`{=eh^Sdsfj4%i`wdjSY!I6=4ldvL&4GrD!3`(jlZ_bkQ(8ez zhO0VX7!z=Zp;9&wngeUUH{=m(QV;Os=AVhsk$;ZY$k7!r; zBg_}IG2JmUy=er)2%&nDlW~&xxTrvkNUX=mNwiA&2>gQwX@BE^=4<5bQ^3_nOs$7# zPpu`oXUt`KI?fCohN>V-`d|4#tC@>PfE$T=U;V1CoD1CY zxBgEi@c0p=c|NcM8A9Jw{QWT5y**DZCPQ8NfPL`$LDb%dwP4I1A6@w7rvc`uKx?nI z*1AxQ7{x>2JtDowTRhnA;J)OY$0y{WFLZf;aEfWR= z-JSahjfT0~`p~R^-S^`Ms2!U~*^3UyVMiC2y{dg7-^pcfSl@ZT;LHgWMD$jUa!D;J z2lR!Q6bs@1cPzO2(xcAdffT|%>ZE=`^S`m+|6&bX{-=;t=cJGoytZ4aZWoS&TYpM+ zHCO@uXeow9;L-M`WQ5qT&VYcP^KG(7E|H7STfnFAYENd5FlEqos0fo+3roeGq3R7d z0yotd^Q;&Ok;>DpmsAGE^;uZK#sZ^YkF_KOYbeC7SBj|6F=STI;fl6yHP>R)+eBia z-D&Jc#Ff+--pa~O21TT+Awn65x(O?nj|i+ zUkD@(+;=;fu0fcW(sPJj>fD8|$T709qQZT{l~Pr)!`)Lb|*Mz4pxg%Ha%V_sb{aUn~eCXIB+g{8_ap)>PO8^wotI zuO{S=K@6Aax%W}|n}aV~^@Rq#InHnHyNA8^NNd%~6^{Qgd@LKY3!fJt1Ma_bDiy2T zXnKyMwxN~g1nXu}vVEs_zMlB3E3>>LQfx)a50=9!W<*~T(QR4MYZT|3d7Q6xpMVsD zzx1$CGL9C5cY()=y1d`GVdyVu@t+@&j(~$lj*erp%u2&Y8Bi9hJ8iA{H^D*N+5WJn ztAh}ei$onqh5j;sg2)1buKNF8JF1@4zMrLW^~KGYL}NL1`r?bub*_i~Nf6oNfx*du zLkLkV?Svs@sxTkD^_WOW5YsTPKE@?eFp6C%Sl8L*gUfd>%Z0}sOJhDiWoiydyUwBI4MP8J%< zJLTRam3HBd43~W`3wZMoIEUwr0tQ^c9`2VGmPez|-uLoWzT}x-8lO;#ebGZo(MBf+zt{&M$;B>q4wdixvIgE_vMA-95D-iEQ0&aj;v zY*+~!r(|0PIDB%#Z~CYj|0Yv8GByHgg3`~AI6KbhvO{|Ir3!iuZ_2P(1>1jr;kErU zhlCmaLBm|(z)7LY%PaZTd&f61S5sxAxjwAqLxfP8I3MxR;Kis;<{YHSyzkAUTR1ty zv>WvrTxa>Oq!B!9%i!d8Ai~qQrBP}VYXP=bsi$AbtAlzW^s}|=VKjf*?E(jo+9$I5 zgFhQC{+0X>1uKQN5LDB)KGxas(m72;aQ!!Q{&&65|5qU!=tz8W{vXdEi{~}~Fm?Z( z`6tSH3Mi6cr5)tGR)_M7L75v&o2CG}<0-If2UR#^kd%a#y(H6R&k?N>GK3$V?^pSj z98xROBII?Sk|QCBOL-KF;cy|IqsCB zmuau~*D%(~ku#Kkmj+2j^Xioj9+L|R!lnf^F0Y*`DPB~*yj79qnKupgmXFI;ZzNvVHZZe`ZMVfR5Z@*iK~PJKf*Xc2Nvz$4mEXvj8C7NWj05=kgn zKNj+>6?Q8zk*Pxjn-sZ|o_*D?b347eRbfO~m}?RuoTb1iQzvWzJ!HmnGlRdZ(G;^1dXRqu2uRP)>6GU^c9e(X!w3M!%BuS42*h zd$-i*mE4ZPqQ}IMeROGcuR|GMz-zGV$8{z3BqTRmY0dm`ydcX;m8(Y9lYXf8xHusC zlx8bJ7Dl<(QE9!zftxd1RmBUV2UG}t=8;#31BXC7_jA;!s;s`|ey^;jlOM@k25xyW zgMoj|K=b}=_1lcCOTDA|r9CX&B?)fmb%DX0Nu`lYFX%XI_^)}u!FiY&!eo@piC%^% zI>lT^I{5cjZX=dd>07BJB^d5lV2;i+_3*N^cUW}2i`4nS4Uoi3<V-2YO;`p z-Yeb%CRjjdoTZ1^2uis+1ALv9b0TU5o7&d$CaZ{)Y+h#`c;2w$)D8vvmNDhOMo`4 zX4?LW(|=)X)%SMhFJctX8}6{()~tBx`GdlBjTc#oQGX5_j1$M|Q7jMgXB>R2{~TG= zugqxDg>;)ed_EcAc4x_$_wzXzKkn%5QN9VRw!#~|B=_kUvb4Q^`8TH{%it?lt+@zg z_|t=}!B~gIzTBux_PBs2{KeX8aVb4_%V$4pV~Qq`;_o-@x9}EJSHD!j)vyDDjNOms zRE+GfD*hRp0fA!QqHhaazUw7~O?GDdoJWZGZU; zAVLA2R4`FYuLw5+=&Z2srE#6glUwL)4at&Ed9ykTSnd@K^Ot^<`Z2CjIYTW9nnltM zUyGyI;cYAfs6E@CRVtx4ZFU$}_{(|l6lCZ-{^aED>9*Sr4-l2Z?7}A-fS|CtpRz!j zt4ujBMCv)iR|60Ek3_+^@)ptL9pt=h00u|3@-y+9`p@dIPK9{{y!VTXoVUU1j}{{l z>trMUj^P4(?BVJ#GI$bR=dtwz8-I{fj3O@lri~0B5#0Q(SF_(_tLb$RZ*f9#g_lM0 zL{<1Qp15Uq(?gXMkoKlI5zj!tF3kk%MWbF1TIX$7<5!-~ukzO)|OlSK9tHn7OHJHRPhp zgKncJCr z-o(EU-sRNC@8b#521N)n%v~YI8g%dhS+TvWZu%U} zT%`A-->}uEuj-=KXHlA=|8cj)ZprFjd-AD!HYwku z8}{zjQuLAvCol=iQ~+kv53dK+op|GRguyWhK@@TuGX?^>Seu4RFaEWL{+j!AyRrA_Lo;W zu?gU*xr?f<=5`OM4p*+v9tix@6*6^YMw9AyY8)zWMRi;E$qMt!#_$l^do}T2hC2l9 z9`J{N#hnVC3*GAAnIfrlViY{)kM)gvN)E9?2w5ZUBs28+9-5_e-Fb7f@euRH49va6 zGLBx3yv-5Ot{pQZbNNYh=^>Jv|dO4X69Av5}hdmRtWG(e&5D_8}klT^1z;yFsM` zqC;Mzw`njjuGY2=!p(^q+EL;G>jCjevmN!zVqV}tWWj+9h)3AA`#FJijUTiB4cen0 zD6Lz_nKdgWFGh34jk>ZO4?z;I5m4cQ13{uNk~wtd@koBC;cP*LT{5G3`r$Nf)bZ5M z4^!G$BaTerU7=aTp07E02J9zyo_C@z?bA#X!gg|ns=nrwwEavHZYfr(5_eRC$>aX z=0FuA(f_!o*t!i98_60f=vmsljEcDRWMd$bNTcQ3SR*f1zTQ6c;Qlxu`ChWDLS-{< zMWCOt-i48JcXy!Fcx|4#Hz`=`ay9C3_NfX2f9{?FeJbZEo@W7XLR>ZrxA`_waiycU z>vM^jeiYVWt`Siz&`jr0#HPa&$_3%Uac9%uP1%m##YyfS$WVDyrfZ2PI+K%c|6l0s zLK><*IJ`f(_OUpud|M`uvr|_n)#Y)ri*@<9`&;=NhBk zBtM5ZtCST){ zXKTPOdLT5&5lJ+F&!3N=E~ONTH4oSnGWj$C3AVimapZ z7sQ;mP3hb1dLPjzJtL`l-WQ)g?CqQrXtIAWuK2Z%mK+FIV}joCPa4`$#|e}+>|-nY z(?0AO>2mxZPTr8+DUkO+TR3y|+F>*5pPRzcNaz zwMZ-SE+ijJsT!`b+PArs57QcDqSSaY!L)v)p+iU%ByeNI0Wv)5zckmDdVI|5^@_-B zmyX3BZh2Y5WlXH)%|rqv-v5sOIeI|&c_2&4&lUiopw!TrQ>~$AJciFphaS@vgdyrp zlqdb0Pyyk~&$A1faMY7j^!UIjPrXj_)qzuhq6!oA5FMelMAj4>QogyZs2!I=hSV#( z_vXThsX5E54(2=uWo#tw3kK*1{`f1ek6HO4HOQj70V5|=gp|%s%UquN0rvICHcBiw z>TyOdRgyT8xmkbwrKp3h-M{DVo)zp0(wkELKaHJxJk$OE|8=;^p%Nt`q;d*TEa$Cs z<&aa(XUlOp=QO9y6rGquB&j)+q;e)_n-Ft~%9&Wq*=Ekn*naO-pX=&#eXq~$_PgEu zxy?@R*YohWKOQ?Sp418Au5x`SACkq~5&0ih?bHM2@cz`wMU#Z9j(z-q^j1EHB%NzF zODPU&Ph3|9Zl%esD#7zrm2mh^dxW6(z^~4+tLMGXs+%pPa_SSRHaFa1<8d3%Hsf&K zf*s(#&)u?cd-5~t4kwnn<5t_qIEdR5ht;}Ros4*YhAPTSP1QsRn6T59SZNUVw2&TO z^vI#d#e<&Z6%{laQcQbL;H~xDES{QO;{w8m2;T7@`TK8lq>j=-R&}_}bl+Egx=g|B zX`(uC&E0tL!w4=*Dcc>X#4F`m>kBxpfEWF56ZOA4a8iCT%N@Lcy7xg3fN%WEt9G$O zI0C!)A~M+t5=u=r1k+~*OMfimy|shLb387N`q%hqXWb!tasz>;t+u}fz?(~^*;pb* zO^MTgpode-?xiVJtxQ9Z$myQ91o{f(=SAFx=OS+!YJWc=_)Ci09YA|Q69FD*{*1!O zHnE0~FbS`5e$P+*{a%ta0m}EA-A`z0Z{N0%}lonMcX#g;x&cz3erO$L|} z&T?IFTB*DLjo2%n9vSCb+n5+G!(u;tV;+bU(0D3T-JuVn=!CvDTkMA=jCktt&^wcfHFlC(nYE4`7X#$1JsXGkg@ANiGI8EMByhu&fk*N!aF_Q`Q3Nw;~)Ds zv9Iq{;BcBpQgv*zwHUQH!hi62c(1J-O57p)&*ckhW38e0Y;7m@si2{gGdnKVvd#iKN>)iA7wBEa~J!MKI%7q{6noc2XSvvGdO7bGeD=`XS z*L;UINe_>~p!)mmB{uA}pLh@ks?AGllai0idR7ifDb69JFTy^ZdJq*8WUk;FS1rs9 z@8P3p_4w7YICF)yO5vTVq9bn?HXdYBZcJ?uC;u)c`7biyW-VvJlX%(v1p31fA1gTN zaA#;BBRPKmQ(MMaIPQ^mVeMjemw+AwMOa^+Xcn=+tPnU$fRXw7Y3rvX009>)yvYpG z`PC1nW-(ELZ^~;EOIbJCz7K8C1yt8NKBgw`v^^=3FlA^0i&>E~uwKM$@-Pzh6;DBA ze5ycUh9lS5#SZP0oTf-Oyh-s#ryu5&GyEwHlE|GEZ2U`!OFL#QCf{pUcs!%m=GP}5 zYdjQ$`JCF;={9Y9gf13#B6I=c3z>#&#=jV~tk>=CK zE*l25O^#_(68O%1Xb7Pa)Gk=Ju=5I!$7dTl8J!RZ&ANq1)H`A9|mx!Dzaj9Ld=Z85>P2-?R8|&X(NQ zh-;oC;}EOEYk(`M&A)s?Bj@mQobN#fMiMXZKqb(K2e29e4UQ0an*?Zp5EPLYSnR-= zN0UxFLhLFoS3^1Nx#88Xn|BJUjW3-yQVhl9YYi*TSJ0Lp4y9Y$v3#hE@_k*J@=%}R zysDIRz?-*EamhZn?H`oUVO5z-K|uq+yuZa48MzetO~fPHy{>d0OG_@9Hwx^rD_%t$ z57g_wL`8cefWTXWo+@L)g|%;G|Aq@g@F6(AG!VBCqxqir39f0}+TFdEy85-xLK}o> zbHurQ5&TVYd*pFnj;(oJaHFc`v^k}y0&Y&Of1`_%Spd2ynn@S60(24je0bowiw{D* zjF~ur<|Yhyy6sJOB~AJcg5kj58Sm;+D!z zwId;%FU-rKxGaXnlYBL2_F>IxN*yw#cXUCjfhs;4$`Ua&C{y*V=$Axr(Lu#J5ZYX7 zo(ylRuGshr>`aHV8w{GQ3C3TN6MXNvLUq?Yiv~uWrr4w-zTLcO%>$KEaG2lA(sHU? z)DY-Sf)0&D6&sXVef$_@z03Q)C1)$BfxS}qI|Yb ztr62mOt5W#I(?6)!Qnq5qDhv)&EG`CicUxB`V~}75&Al-A#@?pde;qbR4&P!!mxMp zBr&X&v{eBk(t*{ZOu+D`htLB2cu)ngx%k$kCSC}6T<`ey*EqU-D9ua?W}c!>I7^b& zsN44;^|!8Nmf#)uI%r`pfv$JXf=^;UQ2KB`H&ul3nl@5}940@y@a-eQ_r*2 z7CA-DuEcK*`zus4(pV$ip|Tf?q?XoRbq-v3V#CesE*}54W0)OrpTdYX0&@db9*h3s ze-9n$WneIEqi$;uvOQV1eUPy%`{R$o$4C#S_y}k0&@Lc_0PX)LqI?^c&mh;4c7U7e z4<@j%cr4{+>@-3N)PNbf)G|AgN3N{gJ?nxj>v7x2D#4hl zrqiso{cU!Ouifm`mhT4{s;l@IuuuqayW6FAYB}lT2Ngo46 z)G*;|-FP?^$_QI};NBGe+%}ALfa+h`LTp$QY9Do4pD`F+XxFO4?wAzco@71=rLKd- z=r=br1)i3bLz9if9uIC!JSS4rL&iu8S#>Haw^}~-2CYwAfYYs5xy-pB5w+oKrKrvM zjdX_l`#qx1??&C3>UI|;RiyrD|Md+%w;fSyJmrs@1XU2ZdAiPMIS>CliLqn>6Dl#~WAS^DQonl@kK$3Uv{Z}Z z*vG$|8Q$RLpt@0BAz<<6VCIGIKojG`X`sjim*;FnK6{Zec1D`Rb%%C55q%-Knw^lA zPOX-Y{e4>bMvrs@jtSa+c~Ljl*3Ww>VJQzZx9d(J4~Xs#8}9n(oq)_%l8<*UdpVBg zrd@_1YpPkpt|TSna61a{Lh*`qfO6t}r)=NUGJ^I0kV%-*1OsKBYQg$>5)Xc8~R#5|H7EYK)+yEI$-dpn-5k!PU+ zUs}Gko5y$kLLGV=$BvXz`MB6IsZ_cbf_Trh<{QFlKUKNOF0)?0*J%TMBIW!9(2ooy zjfuxEAF?ntcS5_O25pw-XjYBhBEu(0>XH*Anu)2LN!ox$HoI101T6n7`SBX_UBrsZ zzSq5*MpDg+QC!#a@s@9`YTDD&Nd@F1-8Dz{obPFVlh-B7&Enlfm)H4|zMTvLTP(F& z5~TB&?u2>8wZAWU58>Z4tRvF3FpX9=)EzZ?rtU`YDaqiB_xQIZh&nwPz%*)`_yWa^!=+BjprGI#GEP^wMXlezWg?W?QH%TVEP2)i zor|LxGV0$u*T-`Rqsfw6GM3an9jlkF4Dr3fv`69X6y1dF4qJISnLgSrTL6ufO}|~z z@8Ma7cFnpb3+O|=7(g3trm>3tbtd=I7YX!sp(FhiFZHmc{V2rd{l%KRX3(teXBqJs zMys|@SKihJ7IBqNGWm;2jCu2syb}2%$Za@%$INiO^UGuVJRHlNpBKAo2J^feIksc= z+VkpjN_mDR$7#hDqx@>hX$_19-RR1Ru#<^J^Jq=u84pt4mVUM^lu+17dl*|+#=Bm6 z7$tWE`i9@gu1FU9nWn{44{SY!Xk3$PQrm9m(1XHAHhgx$m%Ogo4SM;!6-MS&;o#%v zU_vLG_lBA6;MaX@YdnYAf|t-Dz>!Kq(ICw1GRu^3sOm+B0I;HeoXl|=DqZPZl8rl7 z%(MiS8VTyLSQBj6Zm%<9(1FAD?h@t1%W)`uk}ycOK^JrTl{bD=#$Vj~<6hm??%0Uh zf4Xo58~zl&GAFQ>F@4>01}KV8+kVrCpWX#^TF3vRKh#AI zrN-m_0OktM8<)-SZ#(jJ`!aC5*SHJB#=H%RW00A(zQ+p6=-xw~y?*JNK)6Vr5jl)A zX98?YErwa9CSn)XbasSyQfr z4f#j9o;|XF%DT?~!JydN`^=7wh+7O=VRjzWOV^Q7d{u8I17bjr6Av6COPkVjUtdSc`T2mH|8N50iVygqm5|d_eij^} z`}{v29czbF7M5UqLUF;Kem(+ug|ZsZJ;~qFH?J8Ah`M)@zvlq1#7Tj)<|%n0g3?80 zEFIoD&>Jtv=py_ET}e^^>6Jl+FerFK%w`><5K5*%ih=r|Mw1RmPtlB@L8wsL&9%jn zEX4M<`_X?>8hnKw-9X+aErv8p-Y2W-=6bvnqrLduFXlzbVZcGE!GEu_G%?YkDb+XZc+!p0``P9bxpp1!D^TAVcw7|s#2m>2 z_p;%OFJ-CMddzHGfA(!+MI6o;7Hw`$%B|p8PJOrXsRVUFNLF96X}#CQ16yDlV7hg& zm>$4i(}&y66*^WBaQBv~%LuT?1O_Ftu|rP#iX}Gle6OA-$!}V&vFE7+M$hW@(wWsm z%}xoe%ETr0>&w|)W(9_RvLwVk`SfZ{j!vRY<~LV^X+|FFbl3Z=8ryyvP_;Ogslv~3 zK8f=lqJOK=8H)w>z0~Oo6-u!1>fIcNdsREgiRf5yi)~<<=?zaGUgB{^y!Ohwc=YH1 zgK|;SYML6o5N>oBKw$yJyKuU#ccFcbaj$5q4&_#k+7VzPe&~Z zTn|1>s9G^R?o%qtq1%cl&aSWG ztsh9G%=hH4f!ME|Q+yYo4#oI|BGvZH=dxw$8NR5ybr0{<|AiSKqISl?rNrk`{?v9W z=vq(rbRHri^|VBkOrTLCe_iY>U@6KmAcI3!UF5RQ19`hM=BL&e6E;K#!UFdbo~t8# z@;@YwM=4nn#0~PP7dV{C=oWl1QC=H%s8f3az;ShDd{umO_;)?7g0a0ikGs-PVc8kN zv&la?K!$Vqbr@kIi?3ETm*U+J*N(@RKD_mM1N2;D8}LEq-o#^U3yiA8w26jnzHJi= zCkNEou*P!XFsrR?Q15|spJz$V!D?F~PXKp96&xJ9rKGZ9wmfr+98BHE4SbC!WYGpl z>OfWYL2Cs<^JAA9xtVA$9fh^!^K$~y5*AgW`M$tbLFaGrL-zt=LNWjS;Ej;7kEtpC z@8rj*<`i#Pe|n2Q@%Tcu_g31m=jt&w<)EGvD=GG3%2iND8q4a|5Wmk(=eOMpX1&ID zt;ahwR`O~l3>KSA9vKCtEs{cCaZlekSXzk#^(e~yx7{&_mGbWfhyKl91_$fBB}PBH zbSof7{W3DV)d75rt3b+w4uKsFi!JT@=c3g(13s1Ilj77ZE?{}R*Y~XdeBxS8;U#QT zu1@816OyCw&38(Xlbz1{ha4Us@Dx*hamp<$@8u50qfKS~#_N}M)uyFh!_z*%BOehD zqHpIEQZOoO!zjAASV1vhrQill|157DF-iD$mV3thZW@Mpe@4Hs^f>MT@JeewWv^sj zetD%OMG0@;d>lyX4hE;_jA?au`aZ%+F$*)^c!Q$Y)-YOhugWIywdq>*EV;ES9;ES^(XVQ*_177dq!o^+{7t# z3?eshb#_?FA_+IaGt^Y{DhZKIXkG>UkVs&w3z!zM)V^UG8>tb%kCthy%a1mX-Sa4O z#LXYqmDpq&fA~)K^0oXWE01}=cIp0uoVFMFjM`kV8Fo_3+`vWy?nzhtAhNIGv-UqZ zNi!eJr-1x3atVdK*KS^&JcW>4qbe*}VCDUxThhM!EHIkn)~Kayic)hkCC0YpvPqOI z3O1mzo6!88r>?%5b-%`f{++e8t1~q$`|X3=vW|}Jq||1;y^a5p5|22)wjLi;QOvlGEAHF=Iho+W z-E|Arsh^KcbU;^1WiO*Flv+OJjIglmw`BfCKs%s+*wNrFSAXM~_*>t3Bo?{i%%xuN z@I>EK<25n`1DA0^l`Qg!5>2KT#NfXOQv*^~KHTwb!zLcC8<}IL@ zJRg^vPEWfE6K?zAc;EnzFzdV0lg-TOtbMPy|3dnu*W-f?&lQ46yH1 zLrxCuIIagbAIqcY&6%C-^!S6Yx&K167hCCj%oS@VeaA58Br%J^^YC1Wk5)Gl6c7@9 z1aYA35Oalj03IuTm~5qA+648-rj66dR10#DpUe0}W?F9)6*+fqCd{Qe3*6{bJ6 zo}4U&d~S(SYW8NsgN>6cXG{CwZCm51SiqD*IL8B@%RtCOI!yEpn$J}{(dqXj1{{iD zIq>+iYCxCawTry{YCkC`13!etn~pb5o4$EF2tE+~B490S2r5w^U-8@mtL}t8BNPKi z7t>$n9)bp&d76w!J$r7|q`czKV|nk*=JI%=Zh3;y?2Ph$`3m2}A*W zn4ICWpn?+Kcb>6MPDM$r!g}7=Na5p^;|gb6qLhFX@zjkX0EKc>TN7{o8Q~s#=r~L~ zPw(8Ij>G1Vz z(*<_ul>UV8f#%r`tq^5Ch2&^#_+5^{)aHIL$1r(&a=xdZE)L`g#WFgM<3_;tZT^~*_<6~ZhxLPhtn}NUCqm4G?6>oL3ayF(7`%h+g{;%Tm z@4vPY6#FYz?+u{JGS_P#5Pz7n_Rj;ukbXBaS7q)Jw>~$@<|frI5)qcQ&h*tstUYxn zRY#m(afIb-e`X5qfnq;?PNT1G05QC)$9q>AusSoxG&a#Q`4m`eMmBPySExBdjO@3B)Vlsy9y=;gCayVy4QLRt^xw^qrHQ z{k%OA>zwVZ08Ef@QYqo$>u1Z6gO*OH=jh*3w9t(=PUKv?z48`GDh)fG6wU=S$#>aj z?{4TKtp>NGj-h)ww)FUYAs+S$W}}vV;TJ1W?`lSYw@^;8zPDiq0!mM@=#Ca}x-|b+ z9wd;>D%Ln4iHY|O73~+bP&0C2v%CyEi3pvUoV-sJ^RZ-@lTqWcQBI7;cA&n=LBJD` zmf-&>zr#Mm_R_|K-i>hTVlYP7Z~y}Qn@bM$lw)wPZD3r%^l3g+?9(!_XdrX7qFcpD ztv*cIKUWpF(Ps&|mQb-zuS>k#<vr!iEbCLC)v07Qr*4+CJqpNB-?p}+5jDV? zp18GYI34%#nNrOvE}2tPO{1!F=UXuRY6CB;B0WuPTG(uF#Bm_f2bjfoWMZs3_p&_w zvkqnyCoaH{Fr{;wizGEeT6m{Uvmw;oQm6oI_$xfFrto+1+PrH6sXcl6(N7O)gcaNW z@sRxw-^kwq=(YXqdPE=)lFSK2LQ2{?wrVgxfZNwPtSc(wcV;Fnz|_qwz~6C9!dqi< zS_H@Uc-PDkEf>}DCen1nQc%;+_Nx8*P0{6YSGc#;a>f-Y7~k91t=TEQfW$3ww{uZx l_tU;S&7M!&<6PS)HZp5yhFC+K^odiLng^W6P54vW>Ct z+c4I#48!-R*ZcK(e?E`jpTBvG#|+M#bLM&O`?{~|y6+S9P)D8i9NRen0BAMttLg#3 z=_LR-B|~)z{7aGdjW__{0W?(aJPu4*84C$yUw}>?1OOMVP`%{|Wb{V~jYQ2z6|m;(_ebZ~QS>PtA`vI@-n0&2fZ$;K0tzJHSf1Giy)LXAb6N;7F z_=(_J$d_K4$u<{2`>zbWcN^1qb(-qJmHS~p7x!h_7T-o1(fZNaboE#+FVR4eyX(*e z={5Pa`_djGH^LcIID%J-z>@@kdbo`R%b#~)XR1CLt_5|6+`dT(@N9Rb%A-8S^AY*=?0LUHnDkF!|tZr&rbex3M~nrZSt_VHTJ zzH;giQ%~<9XPZzAmiy}z_DsSk0PI{!Q}m&|NF_{Sx&}`>mz0W?dNka1dKo-C)7;v_ zPluP1$9g==&x04eaYXl};nObHJ;xz0u5g0Pi|*XDDwND~N%`hg=+0Ewr8OzTR}Z-eX1 zVai*FrSU^dfiEJX$xTxpu<8&ukKKs?z-=?iM0L88WS_JstPHPSexIC*9+pj>gBfP{ zrj$!YUM>yK1;Usq7C*93UCPPv)%^7e0$wqbFPB`)jJnSPzyWIj#WR(frgx~T&Pn`c zyQ`&lYz*r)y+(MzDOooS#%Wmv zo>gXCXgqij@GvSXCusw$%i9>9yoODjN1tR3a2PYhbn-eGkcXqOEM73CZwCXg<}-XR z6u)phxhQFgJsK9+Pe1^;wugec@=2NXxG6xO4{aqkAd{)C+B2f5eCwBFu?|PJ%x?)2+cq zVMScmfE~`7c|i*nGJxR%gm_WsqWzQ%-S1cCDA>jUndYEx0VaBeKFoC%08p$u*OPdJ zngm|?Xb&83uia2OLz4M5AQokw7q{FBXDIuAluF#^9$@j+wwvF+T&p?3Xj-=iMT!_- z!%_2`1Fr~Bp*E3IeHcOiE2rnYtZBSpUMyQf0LSb(ww8i2tp0!@m*sxT@z=AKd7iZo zgZ7JumlEV3DFe!jqWE)wS9G@SJ94Rg|4$84;>&>s=DQ5sFN7Nr#Zy8Xu1aQ50yYkQ zsB5mYYs$yWqVjkm^fPf8S-g=RW9c6~l|!SR758S7ItX3z2r3bWN$Pfi2|{{3@2AHY z?{`9&=bxt&{W_L$rQr=Fwaoj&t-nP%k*ma+!eauqwE@+_t(^QTR${&CA`m7j6WnQt zKcqy*n)6{ zr0(xEY{_wK^>j1?RDoWY(+(8g!tVYu4lckAP8L$N_L znG^Fe#C&Vz@!-Ly2Vac5B&J>9(w$u#a2}377oqv6LT~|AlEF=xH)Qaw0TcPumCC`^ zr29^plJRJsSWSk=OQ!7^`g*!khCrCZ%mc!`TYjcpjrn zuT1^nEjp?y&|nv`fYTt7$sGYJR-@p#GOO>R`A)kjOc=0@_KSMCw|x3Us3}C`c#7j9 zuS@U73l0Z!xD9GSJ>7AMN%pJV;Nh@ZbJOJwMPt0cB{3|144pESzh&X}Rk z;EX()+ERyD=qz5LxR02S$Mt{{OFAOSgLs(~<-majUIF|V1hvCtF`Z6I29TnoSmNv$F zbOQ)89L7|&wc^K+rge{6P3p{%N&t_tgb=(!caorBVuTYkY?~YMciB8-FFf8`4yaoo z?vC|n?o}Pv|0qwBE0u@p?ji1hhYkDoC@I)KxzPD|b%h+DI@kC_A-^NI^x=D3pIw37 zTL0-Ga0h{YZinFK83tRy@06||Fr_1+@`CV15(qaH6jD0%W6s+UYbp?PmX|H2maS`8 zPwM-NgMqDz?Lx`)vNXT}Ob6szjsHHO+4WNiHeV_l>(Q{tU~Fe+Zdn&csa#Q3=wHT= zs?`qwW#3ZaktMb6QRWd0o^}2d+Zhr$xo?Cqi7p9i+y-fU1hdZ!W((^vfB5^* zNrtRr>Ej&oT{nZU85Nl9>X=pTRmhmzwJ7q}#__a&IqjpEFlUsNz z=ExXMtvZ~yr>OgUmRZ(Q{YVRm|BPuW2(DDLK2N7iDy|Z~lP^q01oxG50Hd_nZ?BfR(J3r2xgYR2aUg(rI)Mv zKbeJ@^N;*P)x7@YZilRBuHcpR&n96(P{=?=hf@sVqBqxnR^Pqb=%K}bN= zraVND6L|UZZY<}x|C$cz-dx#XLAJAj;ulXJLhh39BSrfPqyxP1rqe1}efqY-eN_{; ztc7!~&^gV0F^HsmVv$wg4mq$cgiJHwcDzyiMK0~}ZV!a%5s+MF?r^MVzsclBWYEUvjt)*YUU)*AaMxXeEI?Gb2+sWSZbd0)Zbg zz+nk}_?>=yb|i*Y;Pu%Tn1)XN*OzL`KZW#oO(!-}B4VH4qShhRbq;}s*6zif%NGWT#0{9CcmaoBr%3mTzu?m1!~j(%iV_%ZT9?bt zOzj-D?i|n~%yQVgWTq|w8J|6Fo2CSQ z@u(Ttbuzjs;#N^dg;8?_s03L;-ewdnR;ok|m5HGWntbU_1FM!~`*9p;7{#&maHV1*8D&~;IC-Y~?0if_i0xTPh6J>hbqRf$T zDKr>9NKzSzo3LaWT2!gJttFjHACvl>EX*@bGt2JQ^}6y3##T222&s#9t+~jkv~gV@ z!o1(J&@RLaOfva*^W6-2>s30GL_B96*Jxr{$!GDi00_JPd$$6_WIh)KttK2U`X59$ zGBVH0eS9Oxhz?M`*n+w#f@n)0!0UeGcS@Rm(rPJOgs-HaPZ3635&yRhrrjf7p zO(eGYD6&#|_dv2EE6y?z``IIqBk6#|wlnN8fDwfr%*}?A9pxNHi@LcrHp$WHjnfjn z-%_vntjI|Q9lgQ8LkZ{!U($g`5uGLNf!hA3@3EeZPkNgt?ogV{cC`!FChZ_!b*Da`E>UjBo#Yb}p~zkF>keBLyO{wF%Pg zhK$!`NhA~1v6yKwq>r2&T_*{)+K;h;9}q4`)uNc^$U?tO`Tu2QS15V&Jw-dG;jvR`TK+@34UoEo^u;u}S!9l)CHDHW!Slri>XE&Wt8@G7$Abtmt1 zWdDJwDwXzjaAZvmzcvA_vnxI7Au#FPe=sDQHrUeH<>8R-ZZr`&;(i1ZYRl014oyfK z*$z1Er+m5)p(;w}(r%*dnJU8{UL;QZzBucRN_%4qr8W9Syb`T5Y?GP2+naFbL%yP< zIx^tPPQ)1oRU#uDQVRP8A@$%%5JFd-+p09g!%lDsWn@V&E0^rXD&-1!Vli^oxU+5M z#mwM(@EgKCs9eKW3mx0QGv?==5ZgSwR)b&85M@eTQ>Rc9a>cO5?BB&3M^B$tHsr%7 z{ZD@j%0t+OB^fI$Z?ZbLi&6gq5iC(HGU2}Dgg~d*BS&jTsdt%Gno6J$Gq3J_i z6L?-sMJ8XP{K=^F+fzk4u!vv14gq7~epcT}Rcx#`aFE&g1{=eV_cvSIsrwz*z;1EP zU5BAA6=>+pKPXj-%pNaDzieB9OsyZ_M@FZ`wAsGXVT|xDt()TDE|f^YyB-J1*}Tie za$L)4K}1ayP7yrR^Oc++3S;>xhy==Yv#+%^Ql1%9e7m-WvR<5=>~Qefw|{tnz`8Na z{d~M%7dJTiTe-526mf&ivoBZK*U;%Y&08d4{D}sl za%w_~WWf>FvL&uWnutKd`E`!*a)$xuGMKDam&{_!S1Aj$CEy;k&T?$m0!+H-Byc)? zIXPqu6wHjVoe*F9<&T|IIo3p4kx8kV=Y8WyTVy(oI1|6Wckpd@{9v(guY;J$P2EPn z6d1j1gmQ-34)tiQt3{e`Q0kOFPI`#jn-JcY7PyvWYB~q^u(#Xu=tDIbt!30Tt5y3N z$=FRe15X{KoSWzEn7bEht5o!{Qf0l`yQj2U)P(RNY$Vv2f`>y(&XhOu7skusi6BN> zZe4-w*|WNr*Zvakf#mz8X=b;%xPQ^i`-;=qC{|E{^(IR<2oPZSCER@=*%x8&0- zbMGeIyq7gGwBB{8@nXk#$q+Vwups3bpnP{$p;gBl2H53U<>VYv}h~jw{9Ca0S%_FP|SC0%;0*6&Ca{XmLCrL zrb~0l_j8ukK4a;^P#@FOvX2!_(@~T$Rked}z8gog<Y4_WgzffNEF!_pW!_r_gF*KwH|5WOo; z13Y3Jj91DhyayS=Y8c2Y;^CQX)Z%R(oHs53s*zRBlCEw9Lsr5_M1dGeM}4ts$9xz6 zHI*`qp$LCnHP956#Z6;ebI~UY zNWSXvE=Da02vd%BYv*pWGPsM!R!)FgOnt{up;ds-K>@|jNifzj644##>UYp(thA==32sixK8t=FFRg`Q9)&ZnEh z`5JC>uRe1!zYzj>jNGJV?s)EZwsC9+C!Xz1nd;&2lV>_RhoS`}W<$(Y-Q4z`M9W7r z5N?6?n$C-|Q*B?8o)#ofC>0D`yckok$gUGu{viV9IKN0vMMfF}zhL3F-GpS-x#Oap zK>$eR8({f1^UO<$Q~ln`@a>!l8dRiSBk9d)ATe{pU_XLDVgbT>q90GP{a`-}6>}VF zeyUpd^9uX?i0Y3Hk9Y23#sC!q%0!mX!9w@~eYChl#>3Z^#*ZaPr)kV)nbG?uJ|p{7Yv7LIjkx!%UpF&TBXIeq=8any8t0g4 zF+S3!n+hLY#ZM_;%MD?cPrct`3e(oT;g@QwjI+O&TWEG(#MTf{{<;_f`g@4P>bQEB6H#Yv==Upt9HfYpREpwrszB7>mw13v0c z{l~xr0|>9=FpZo=vIcHgTamEcMA`yr3gc)(4B$??0dJY=gnuds+Bn5-V^56sL`_B?f z?_5U60HNM(HlogzeDe3!h=k#B1vDsTSrOi#pP>6G)#96FJ7*ka1jy8mW;!eKLWRF5 z>OX=>aI8In^wj0K{r>8l14LFDxuJsQ?xn}bQ5=vHBj<`OSxM?EcIN=jc_%N)ZQm~d zppC?{&EoIDyEwMfuI3YN&1$cFm#rnf)bZV(WiD@5ppx&Ie z`vvEi^P(@f1ea_u2DFr;rW!eMo27vsEO<{)_y9cOx83P*w0__Q6qX&AAl_Czh_5$2 z0w5oq`{tadpF5y_Rq1g7i!_A%4==Zy0Ko7QLj8Hqzu@dA<4IaZ6N4%vqv=fx)!f9@ zqq#fvq|CUCkDoMV#jT{gk~G^k+G57hkgwN;etz3&*Kc~0Igw#rEB}Shsw$w&*sl=X zykFFldV#XkQEWvc4)X&%*Q{C}wd&WP-~H~(nm5_M`s~2G#*Xxj{UoZw-26w&K#psA z@#Hsv1`&hi|NjSyz-mkb#+ZC6-9wZ!-l5r^4t&amJFXX`7i?Nc8E>VO^vIZMP5G zJTLF5xG)&1_)zV2ep{Eu@))Q2V3vu zlW=5C$nv)Ky!lwkv7QfV?Q^x!OBadC??VZHZEljniBalQ1E=2^j|_PA7$|AA*~Aq4 zvwPH$N+-UP1H*{QY?(!&N^AOS&n*9i(B*CGPoX2la%_*Y{ip?U*dl$;-0a1yc|OwV zJW2{$i1bVp%S$lki@87h@dodtwAy$J90&o#PY;0;~kmtzr0ma-8fU;TGdp z*~V4H#e%P%zKL%kU+DpBn<2~%Lv};}W4yKpBj}gXEcB$D1C)OmZSxS{q~7>=aPwKO zGN%0*H^#*U1yP3*FEw!9pZFba2YL*+=q8_N$3UU(BhqE5tpUr*oHrDJQuJdjybV1o z)uY$uBSd!hUGC?pQJ{hB6iI6$$oQNLIDbC(r_!@L8lp{CQS{6Qoew^x@B@ekpCr=s z8GQsXs0mQ%c8eoJm3r#Y0QIJ;_&bxbOF!LBYuZc|S_a(G5L45QgRbXCx-kyKo%Y=8 zQP|Cf82;TPgm}J=rRrp*0icrc_{P-_8vA9&f-c2IVX6MlQ}LdTSb?0HGeCyz&0uD0 z?B&y?R}C?S4!#s->6rG{dVgh`*Le^SkNf^hxv@7Nn3Ed4`0x6PwU*1eX zmR{=!2r}Tq%E^CJGPyPI4A<$MJlBiz+3+m+!bn<9EqR>?YFo54g9}f zEJ=6r4b1{ll+kVEx{AD$-*vUxv7+ z^?62`-p!plx_8o1=`8k5;!K*9dM170PsEW&rE-5Lt-S5PNFk0^D{rJ z1|rQRMQU~50-ab!r;}RVRv63}MYn)RyX(3)c7gu{N6)&6>uaBj*)&*l@Z~QeQC?*S zjr!<11%T|m$iuvM_W1#Tyjo+YWV0Q6O=_fSH zftD)xFyi^AADId!soa0)X1R!W?#!|pb~z{#u-QS!W6 z!A=NnB$IO@5&q5s;IiHd&b17cMNJBM@unL)KR2KToRX%l-mYvZ^K~w?Mtc7C^{r$8 zRC29#&x008ILg9h^U^c!1&}LbTw*I5*M}z>$Aou6p6o=a!07>HnG@`iz5M9-Tgtt~ zg{WNJTN3F5InM728&))5*IGqpl~~@1_K~}x1Y{sm%6HfW+jGz%!^V6-m^m$_IjxAX zoclhB|9=?btEbUT*nWSqX`7b&4JM%eyglKxeYDy- z^J0c@KB0u+>rmO4#NB)#Y{xq|tJ@8}A3;3UAv!qhJ*72$Pgu50k%f$y)izd=109Qv zhI3P5*1@kHfVA~zERH7R**7L2v>BG{Cgz<@Zn36uG&~=m6uN`ZwUi0D>wKj2+Wn@M z-a<4PAS$08Q2GEG1~PxNOPo*Ar435 z+FNWvWCa?oSYERezci;#8rB*Vq%&IabnH|j#5!oznr`2MjFyV-PR`~gz2)K>S+|kv z+am|U1|?REJH~zT=GH{Dp=w6U|4~U8Wvi8oz$nO28y!0}gN_p!8_U`z=xDe(EZPsP z0jIoc+c#anfsS3Y$s>G7d4*dhPZI_30CH8ac;DPIMP~oA3O+}R`WUu4-zqFjOAbsv z8}P>H<<7c40syKvx*z9vZ_W$)FCob@Cv>-i%{joS7f(qLg)TY@ad@~_bse)rPtS7>3 zRqu7Pq9P2tmHSjsP|Gqo5J#L-E7Up-C_e-Z1BLCODbO<5sk->444p#T=c!Nj%;%7- z{(9js>P6&FC8g3@ltqZ$a)&2Vw!9?>Y4?n}0~<|5F5ze>hyF6?vpnbM6d-|^8hKh2 zHE+M?QnGxb)Wf5fSO|S`CyV|Pqe6nht)O{E(84mXAdaqA*>uDv#FFv!^uMV#7MKo- z?V;0zvy}v2pZ(M0xE)*U0NLpq^fPPy-MCGP7YVyxyl5PkZPdq)>sFcNGC@MYLv@y; zO(}A8AXo7gAz1FN6tuPTMr#yfIwyAh29BOQETqE(#=S#@KX<~scUR1|DS$xb7*WE= zK+eVG=oVUC`R%)9gCh!$z{OFhnkw$N4@VFeKIACMrSJY(yGZGof+X>?VBq9jZvNGyMwoUT=7vQXCq2>RFpO#~&~whPAi=b> zm~(yL>1X)T5=luUr3Sv!K-*3Y7i|JV$Lo&o^StpLD#QoZ?@EUB!T+g9YIfho?~s@t z>n<_V)ul4uNtim6@E_Dp=<~{?K$@0s`*P*u?6ar5MFrpcn>R>Pl7}5*E5GDm@!#%v zyf6$V;!Q%DFYD*PYfIPTT0hXo9Ia|#@*!pjJr=`2}gs!w*DnyZy6kpE?i>IzB z;NIr3&u7pH~>9lyy(y;@n4lVOb%id zmMFIt-~vkf$o6QsgoH)>mBMxk;AxIUsczkS6{o5TgrJJT!2qWZznTjgGI^WmX6H&R zJUCx?9Y+9EuO=-*j&!~stMY9)>N|Q^q`(b>mIBl<=_{In=GOqKG*OByi0b-Jg+Cg1 zvcOtTYRdOo53s#kuTg0-8Hm2*F$HeZkbU@? zc7bW`Vco*Sc&*Hue-zmJdMBv?qh_I3{D^?mL0LaTXBBgT*{__Xe`ylEQrigGeP z!4N3Q#v6y%=#OS>Q$0l>STX-dr4b6`GW zz0dyaQv5`>>|wyl6zd7Y;A&cHO-NHn0mXO8+b5|O*ce-k`*#?D%{4%lJ$qvC)TgUl zA1CO-M56-R^~gIg+1@AT(BPZ(^~ zzL22ml&b+0-5oPtL^BagSLNUBg!}k#{RfuZ`L6j0e)RdMgMKcpbozyZ{rX)ja5@!h z9ATQ!TK+NNXu6~L)!W**OGiH^?^7|$5iMLMYu^|u`r%hM;x;ck#z2Fd4x?7SfhP^r z70E7MsO=FBmF)ds>!Z{K+GycvQ%e!^{?RP4u>!%|Ms;(lx@$35>WRREvToh9VLc0% ztPYr06?y^OXYI!}Dqh97x@RX^9 zvsA~J&VK+)G%3$2=PhxpqieQf{=P&2|$5x?zoXEc2&XkFAnSg;MTew7R)P5si1u^Ki zk)En{++eTFCIY;mN$}SxV}AEJn6i<2OJ^a@`NAW|&${Z^Z)rX~X0o04m^xUq3y<^V zzDndLP&Ae#a_V~cQcTL`(B|@SuMMLhNQUVNo%G|m%F*ZgIY*rl1$A99wW4o@eon96 z@JLpWl<}#S-j9gVw-t<2QV5wAiNq)-T-vO92uv!dlM89@-c+=HGM|BIfADsm1`X>; zt|%MmQonudGsF=JaRo;*{O;ipxb)b3QV$ab=4|J#z>iOsJ#HE)ga;Exlj2GQn{n0L zglw4ajDhFQ6||cB+BTL_Kvx{j3UDAAXZM3b1Xp5(Ufi2xDe!7@Q}OKCB7C<1v0qpC zjFP12W`F&!?zs5?-Sj%dTQuVB0m$jtvA@9`%9*_%oSQbUt2ufFm-js?Z|LZ3ZWw6K zny^Ig`vt^e=1u{ztqVUtD+vzf`(10`qEZ!xFs)U;K-$)g(akcofnvLd|M=6&amyPL zNJHzy{dXdprw>>bbp3ZjFUu3hwylcNa`ofC9?O*AUx0z0dK+1*r|3rDwpo?nXw5fD0sJU1qJfvqs^cDUyhgXaGysj{aAr<7>Tj6_4Bf(>6ZUk^ioIK8&ij>Dm1RFTPJmY zr9V-%2JinFs1HfnZ%o-ell1R2NMjJraATlb8)d=U>h;DlIWcL~t)i>Q7_!suyiop#zUsbeZ00!h;YOjm zBKuY4e-!nbi#Z@=3XiRAA>`0^&%uP0WJ^o4Z_$im7pwr_g;gUIXeZWG7MUOSJZDgrVW^0@+BbN7<_7DNO^sCl!|Rkczw zI}OTG*H8_$@Z!CL4>|A4k{Ad%XVhzNOK^RB590WbWn&YT4PwF16MyJr26IwB!N5?_ zu!Ho#UgLtzqxWe`+Dh+Mlvt?iHDBOd1mRCU)s{SA_TNxK2P;a8a=f%52do_aH<9dQ z{r-gemoCgJm$eWR!JvL{CT82w5^OP>7o533AUbY-KnY(Af6Hvs%Mv+QlR`7@8wS*? zc!k8zgT1Q_?PRGyBQ`+UFF!xuFCZYq{FTE;o8q+{0=x!(jlXGNZZ1zy3ng+`vZj!Fx+Id|qTk#Ye4FgFPK$$_fA-ix zz23$|hmL2#O=@0)D@&%iPd#@Wbs_tHQ;mLz9d3s%3)JHaU(#X&pw?iCP@t(lMOB?0 z5+9bvE1mCo(mm0)6h;&8JJs3&Rv$*2zr*_v#Ye|QQ@bQ`Cf2kk#9>$kSCM0D-4e9L zNU`X_-ad*eO%YvI+VgZY^~O(|kbBaKSfy*>znj=nD^ess!uC zl}c|mOCdgTcW56i__jcpvR`~Rpr_8>)w3jyOD5|ETn%S1)oL!(uJ(5iYQ?FLDYNI! z7<3;{mp1$#w`M@RE&Pqxy+)E`>+(XH@khaX@wBSx*<=h7+@L*^aQbnU@Fo>;*zDPLNV0hc47GrN0M z0435zYmgVKldAaXQc#H!?j-CebVQuaK+6%v(En;J($QwBH=ecCQ9q{L#dO@$KX!^Q zoXVGy-*+j;_5JolZJ`{?>x^rsQ-6HNKB#`ElLt)tdibNbbi`qDsZhDpnxM~nx%Ep>CP;?|7BZeFx4hBmswQxXNd|uf8bL^uf8HnH`%O(C)oC z`4;Kpq8weSrQyxq+C<-p+X2&=Tl;>9d3UUx?v5ij>xc~d+69#==i)%G&3=P8`$B38 zK-*=ybZ{%}3llSe*01K~o;M;p!wF{=gp6wQSQQaJ{OL;%j#c)EjC~c5Hf}psTtR>< zS_yY+3@j@Nfe`0=50hNxjl`74%#~j*99MGb6;cEq~gj}R+)eyA}0=|*vw@18^K6aXFn0KSB`BuNZJi1J)yLTAMN5xa} zY~=33^o9~Q2ML2K7)>`9XNf+`>tS+J@s>Yvy=eqQzzc*bLkdBy-gF1d3cH2jyDPk3 zOG z*Aa8KFPg@5wjFd>I>$*P@)9@9u{(Loh3+*71k1$X*r{eY5C~(wI zbnL~N-NqZdEBJo%n46`mAoof5+gD;sQ!5p^%n7G}yUS^64$voVJEC+GI~Un#aqK<8 ziI0{A4V&7B23~a77#6mX1JpdkZZKFgY$v-2zjg-%$>#SjE) zEox=aE@1lmT-IYm(l<<@u}O8ND6&{D4X^Vcz~708SGjrAP~WqtY2Uv2o}pJ#D|*fH zW^D@FwdT-`lvBW8PxWtcb5ZcX#q3^5XX6N}kuLMdx?Kg*3BRDArNPS41D0q54Y~1m zm#Pgkh%gr(?lqWYE^ESaCWs{qn}q@ga<@;>0Fi&kLcrEx^>O_j-X^foT_gOmooz4= z!6dD9J71kWj6O)Q?|P5Wc>HGXSY>W9^SQQov+9GTj&1%()(G$ZvQ@@oJq!G4+}gUBMrl^giAa&-+$~e&F)!O8$cZW+2(_$ zUN_P8S;)?VeSC2C5sL~j5Vkz!E6`i!g5IJCx(QRmljbY92TNCld&7#!J}Z;gf=T%( z7&5)1(nWX;)YIiW&0GHw1QP^DOQ>OHdDpKEvvDVBKRy%I^APogc)(^tW7g@=S78Hs z1R`A=rssQ)F-m)w=a)f?e^j&5AAC8ob8Ad^(W0dHY2VA5-#G8=qdJG6jigrn^dybj zahG7$JUD#E_{lo#@^h!iC_F}7SuU&TbDThzuK!w;o2MsVyp2q2{?c-`v}mxMrWkkQ zs+pezsRA+g&NAFNgB!48Mw#!ym-c3&#t)>-_C2$^J=5Edr_JyKT`nyHX{!$CdAuk~t^-9wYF?~;O?|(|FVBD>C%$M7s20oem z3u>ACT8rqTOdr&)X+C0(GTr9ytn`QNq>auFX{x;>?&>9a+Nnb;?0$oATPG*)Z|;1D ziuVfdvI>_16154wYKL#u@8-9zh(F_VXe+Xr6{+u}XjoB&@+PCL; z+w@k@OC5~Z--BAo1qMpu{thDzDIB%Twi_>6q(Vg`dwhP7O>*+}BCqjTObiU2jMzNB z0(ONLF`CUG@#ky@zBBaFU#QXD{c5qev{m(Rt;ezunlAxg&=WJw`;I#H{jysaLaZCv zEL{j;q23iPP)uIHwH}c}u_bjsKa&AZi`hUG(evcQ3f&$v&sg2TxAo@u>SI18T;ZLc z-l)@YtV?a1omLEnJ@{f#=WdM$iM-^%D+V7sV-}SMO=ysy9Io~&3-+a<;+c2my0Tm) z_vuCq8C#*3T?MAcgyT4s`~TXXGs#l!>qQbk*rJiK@e)49tmhWzTCi}cY;QUzqQK1D z;;3@2Iks~_*fO`{=M1BHtqhxiMzF%~1F(}~6tEUpb_;U-nKs6i+vvuTrkK*>ytHK< ziQVc!^NTzK-X|L$?*)Y?;1sU`-!|0++V)HXB7g5~R7wn3CO&_Q~T?s50C=rP>GAO z7KoLb9fu9mp#e28XH#>k4Hv$BH@U6Q?}>3Lkc-s2-8xs7CHGrEMz=$Y*c#Xd2YdVc zx~GrR8Xo?KANX5e4=o)5n?7w5DgYIue>?wfNm9Aa7-2d2PGk9_qnF3Yo!nR7*Ht=f zohZ`7+48Ii&gO=g>6O^vgESplP!;V~`KeHeonM1FIUQO#YWhtCJogz@yI8?00X{gLD zz$s1pRt6sKst;aWCV*WtxVvJ&nBG!VR`W#K8>LjXQ2taxW0;*Vm(s^e`zFUd?$iyj30LJl`yfYw1>>9rFY6lAx&{kdathWzeoK4qBG z@6(=7@z+jxwIh)-FWSH4td35Nw|ZU$IKfm05DX94a+htlq%uD!3VC3b(mYu{+q`x*;Q z7QYHOljk75t0J{XR&OdKb)A`Irh`pPDfwjp+{4bi>IvFaF<{|vjdZQvr)b_!U*?R@>(D$|y>QoHPx`*r88bhkBO50XAFQmNKXy zdt)jw3&d?uLq2qvZ9Q^35G3PCp)n1CE?QT>!-CI67$<^;gZQ{*Q&~6SIXFPgFTqq5 zSY}v>C0$n5RYI4 zJ))r+hrZvnWc!U#!K)y1y8TZ={X@n>3q)2LKpJCS0^HwqXk(0%M;NAD{(Q@8{f9M$)Y}3 ziyiBGdIJQO&QXoeI5w3*ebzw?db*Ue*mYfolg;1tn&c?_EFdTHz>$6xQX;sqR7`t! zU|GReoZIA@UETob27zB)c365nbfUh!^&_fT@TbiS@yoIFG@h0zBgUUD6+Zchnzahq zb=!S+w1U#VghWHqSGwC`yEQN_D)*BO<3U;z?B}(T=qFD9o`OO95&DOa3xP>7QG8`O zEUnX2c~#&W7pl~Pr|I`m%%aFQiCyCZZs$NPA=@Ir#13Lu*R1%fc_!Ab1?JsoaBK+a zw5!&lat?9EPc4bZro%(jizoMQkCa?dNN*dh#J{3^fvHQn|9yh3@CiOWRnF&VZ*5j! z;2mOEPyrecYY8Isbyf5Ge2)rAI?9-q_dkZe9$CYX9sU#L&BOOsRDI>7uAye&y26a4}(x(9UN3s z!~M*QoA{Kx-y9)pA6hacl$|Q^rz*Kwrs(#&s_1<&QrtI7 z4h`X-HuR1yP`%4Q?S(%xYj2*cEDuCb;?#fdDM0}*@aE1@9nF5+@kqm{=S5*V7lZvM zNsw!zNX2O%7;L_o)F3}iJnFDa8meY%o}V`F&c4;X*cN19zyF!qu_ceme!;Q#c`RKF zHYo6B*y3OL{y*kB5D=PCy=|IRnO?i+l~lzr9g)`WtB|`U5L_eliGlAC%ke?)p?TK6 ze_5QC{<8?PUnN(dIXP=09}-bBd3pDDFs|_1N?T8TG|pNcI~sN`oQdpiHgdiId~uS5 ztZI7+fD>(RHX~G|8cT{(i;7DQah193(Ge94KK;_zxIi1PZ8Ry-rsKeR2xQ6upm}{= z#C*6&j^-fKZh5KW*RCFUTUYuoZP;z4tQCXT&D>lg8RKNiAOD9Ty|wh;x6(Ne@HEB8 zCw!h^M*6LzkNZzR&U>`cwK7?X@7kOqU&k!9#r`0iyGraMi2UND)&K%dETs| z^3w3VGkqRVFYv$F60Wl3;z5GlGU%`*s&@Zu+qCk(D!gpk*3K>5Q4KFPiu*dFU@E8Fg*DOAJ~|x>348K)O2?-L>dW=?3YBJ<;d+-gobBAIJK^4`9u8-{T&0jPtt2T*kE7 zFL;Yj&)ll{ZPbmlL3MC&Brl2l9|{xC!-OO7{{3Ht91OrZf^h_)001;x)PFoT`m$K{ z3cb8N<4hH}6H*3kgB<(pVb%|2dKEoZRM+6@@;oDoZYn{yjPvc2gnzYlb^qFE<#wi7 z{)<3>r1*H>S%c0YK9_|<)74c5aJ7(*^TPR?jD;w%%xAwF9t49kgnw9Wcr14OIh+=l zwLGdGvIDNSsHW*&WZ;h+dVWRm!Ktu9B;otZ{l!0T)o5W`0N>~;RTG=zn9TsG+-)V% zFOQa(x_>t=dA~3?ZM#?fG8cLz&zJ>&U&Mdy%{QpO1ne(>Yn|m!mjZ$QJC?p*9yZCg zM2NGE)!F*;t_iOjxP5nG7TcgZJbLUoQn}q`AnVG;eWoOAQcuGP@hIC=_Ca?!-!)%E ztfGv%@+;6ls+9xg`9y@6dZbddo=LQpG-bS-kL-}8tSuc>#>^gGt2Rl~Jt#_bX8j4S zLD=}th=(NF4eWQfNs3IR*(ZjD)3r1r8{fm;GV~FkZo)d02PbVni!Q4x z23Xjometvd+FWpTgDn8K>i`Yvq!j%_i?lVkQ1S6)L2oejB!5b(^T9}K;~~tmu?*5I zg6a|z7Ms)1s`Q5UQtBHN7zYG(mLhxLb^*c5<|VN$3GR*P{OR${>5dwEiNBXt39QaNS{#VDTnH zR{}wAzXV+fMS+$$AyItXm_>a)wo|{uF4LDW)%iF?c1@$EU-B+;$Wfy*PaMKo1rtlX9LDl8;k+zN${Ct6`Y-Om zhvg4XywWQDkuw=`R_AE53o4cekn(5h82~B6s}%|srDA`Q{?%222`sx4g4G|yUd$kF zln=}$XX?Y&Ys|X<1wT`E$m~@R;U-w4{eE_>ujCw=dP4R9GBjt7Md{4dUX$*{fHDM0w4$7|te2u{2 z2MfzxmJ>f+UWV*e`PO=8e>bCMbowX(Niin4U7!y^AcUdd zTIB|gs#%qDdUnuy@RgknicQ>&jkGo;^WA&;)|w&P95L+%-{K7t^Nd#Dj>dx*{aPkK zj27{Oec?;sUBItIst0DjZ39_~7jLS+1A1p{2z&960azTc^cfh|$q+v&?FSShix((U z^EyP(P)6k(UvmypQ6gg8V>R;hgl7MY772$MblaS+^pv9r{aSY zzNUtE*ST};+14-krLvlMnND=jL($)w(PEbneil-)6* zW9v)8Oze?i)V8C%MwXWk(;T=WyJTxr+~o?iu#t+|rZ)xakY*+PBKo<~iDEkO z?;%Ckf7TABtL=|f16RRQ34|y9(+QK*Ug;vfeR9Lqv;inb)3t2pMC#st_yJw?qz#wj z6%1HwoAmfnb0!HW$DVV=7Q9W7v_};} zHlu_aZJrblCD%8# z`F|YV`II#ia1ae}dH{yitlHhza`~0$AoNo?I(M+G=Jx;D+J9BtH(vj5e{152J;+xW z_gn_W#3KI7J3-Bvd@oc5C2$B-E4>ZS7PAT#ez_kuj5UvXzwvZ0zyPPDJe*`^Q31pz z2A-EPCw8SMdosijHH^wvN?(QboX$_$uW^Fa)4`_-O<66E*G5ZCnW+QBxKHg)35n$^ zC??2A)axgK5_LG&40tz5u{o>sWL`C{wF6A!gL;S-TU*IPw1IFEAa;e6{e8a!<6RY+ zXdW6&2n6G(r{nTFJq&f+SZEA4bLyBkw@Ex}AprgY=?Fenl2|pxL(@r|h&+aTi<{R? z_Vnyt_IuVA#rE=~q^~UffL-AN{B;!y--i|WPs8SQ{j8H~nf zxGl_WCKipKX})u-tj8&}zfnMVU~-0<_mj{3WUOiF&;|ZSg5se=g}mlcR8*{k0#(OX zb9Gt$o;(`xtHO32CB+!AeA)*#Wo%`CD?yHXP=}7TAiRrIdLh|!vY7QOmTapmTB1zj zg%AQsr~)lVbWoFAfA-F4`TRUl$_F)orIKDn0S!=@rAaEHOJ^nB9aOvk#+W+`~tu)5$){H*VX^X$xqFA z1HD+8iS9icxdAB*o7z4dn%!GiB7pvX>a>S(Jzw;PX_6&1!Zq3h(}pJ46N3GTtj8nq zD=3hlFqkcp`8E6J!n+w)b1|!`jgg93;Bgo{N3Bmn*{-X3Xl0THEi|K2bIZ9597w@w zAkKf{PqZjEK73cAMN@z00zQ7S9y4&UH755GZVk$`zp)KNc=BnKS5m+w$nO-@u%X{@ zo1mUryyzVmf4StytGAT6tU2YI;GP=ni?)R{^Pj*Hl%X^2XTRAK0X=H|z3JI9tf>-r zUwIi%OS1;F+*#ZWij{c)u>La6g@U=+3Z)kf#m|d*-@UWmaJ{SY6{@qhnzE@^nO3Oz z(^CuL<#sR&9vE@#e=-3TeBOkeKQ3{q@!dIaavQHq0b9!O<&D_J@jt^3w>%Go{_PI+ z7%=yF&C0)&^Gf(1?$x3jOky~CSx0Jo3HMFPLqgjFnrsWV$DMn3@aqcDn|a@@dp#?6 zX*)e7ZD*yW*5O9ajGnvLdY5m;HWbVApaCN44OysSayXyscdR6}kR96ria6-QY)yHy z%gFW!G_KoH8m|qqF;8bYaw-|}gn|e{+sr|0-T00Y_u%rgPm1KDCsE3>!&lAGslHhU z<*&O|A3=kkfoY(GZ}M&=bC%Fi+g5GTg$4`5J;vgu?ZL8)jg@&I6X9+UCvaY;4iYUY z#3_Lt$4?>L{ctk3_B)E*Ohnu!FD^8dBT{4xQe_MP zvc0{U>z~NY^@cpdph5UZ7?E*U?)4iu+4r!go$hHM0ua z`id!>`D@q9+-hwm8R=;VI22><#Vi&-7wq6JFy~$@M=b+j!ZUa|``4G`l=b|#uyj)K zvxe*+Q2tv^S1{eyoj9dn<9aHXyS~}SoiivoCST_pY4R|bKhKdlU9K&9b!!#_yiN(; zTFEs)4msc1Mk~{HYCSQ4yhcx|62b}nA^?Ef?R@y@mdf6nj%nz+&Ev|MiILU`IjaNH z$!fXy`v`mlMOHhIn1_Zg-gtinehUYjW8raZ5+A~Lb3p%Mf?kx*4^|yBEUNL`HE(u; zfB>fXrYO7H2FYL$!iz-nj%{*>50S12Wqs$$93wqu0{#nlF;b3-$$7V^iy|Xr=A2^L z7u`QA{i_7NV}+lmmq80iz7@WthewB#uK1vB)*e(kr3CMHcX~z3&r)`m>U`~k4$7l{ z1Z;c4S18@Q(Y@#%m~6V>{rKw5`-Fv80A|9q;Kvq15Z4&o>b`sd0;Y(bu`(9|q8kLT zQb-3wM~+Ut%4Nn@dF0_f_oO*z6dtSt>SM1*N#Zl5Lc_=7whq85{C?bHZE&bg>#{BH z5Rk~aDidxxm28$#DP^EFP5sW>L=bR&eU{co5ILOI_Z%y&0ZDAqp!#K8Y0@V-xh{d$ zFLUdr`G=yCFSVB^wKpdv*M>PlYRm-GlE5GVvQO1l-fZyjcVY5+xGv4DM+XB6HD&@Z zd_#8qiKRX40Sz-??Wgo4_pK_zCRy5Nw~V<(Ut9D ze!n{tx7hed#$R+EU*dGu3W82O93rz97vR9p_3mo(_vTs0rELFNQ4U?E$pc3O_@6^$-rs-YZXpo2`J zu`S8ZRA+Ub00U{$2R#o#QH}z0vF_tLp2M@29(j;%)aeMmDdudDh>~?8)Be}Z6Z^m2 zJiEo9fNL>@uG5QM=kKgl@aS*Vl>OJ}@Ah{-=d*{>Wv#%C6uM+V_LEP

;2sAX;P72&)cu%XeJ$>>! zKTt#I2p{-E6Zl-rYJV*_mgR5QWbBMNV4x}Fa|d0bF=8>$N6`5Ub(VB|**&;^*2vDZ zx=&{CpR$ax)P(X2e^BQ=m_eXTpIEu-`dH~aE3^b`X{LqFMyd@&Z(@jk6paHv7r$B( zQE{(uZ+;&IB8iOssjFFY@@W$ApZ+s;#aibglYpnbZQ2U<*bZ1bK&jv`2vehpsQO$6 zCK<#=rkmB@LR=aCm#rxBI~Yo0s?l>geA9<~(DW|Jk@=NN8s({)?DjQ7=okBb`o3Ud zTG;(bN2SN2wnk9HP~=r#drYzzLIT^`x1pMiP=okwgRrrv2?N zJ|HZdw&^26TiRctF)@BHKF$9%A-Tvu5F+}Vmu*QR>j;=ab3WH{W<>GcwJ4|8~mA^0FmC1 zspMj&Ii{WOQ=dBFpXhwDo#`K0+N&)7QcCD4NGd<-(w8Z78I0O>i<4Q__hPcEQ_~lvKf&~T(orQzi>v*Lv9{A<-(#EfdxJ14V z896A+&Hh3-7yqO-X|YuFMT9xh5&G3vg(ly-dp*3Ty5bFW0F3OmQ0+ zSI>gKEko|)&$3FztsmhxJusqy^3BdlZ~vv=PCTsa+v7iB{xtRPlU|J5L!2w06b&kS z+o<{O320_^R3k3gS&5WRBkM82c~XgI!{~?>7W7Z>_>OKfAm6&0N{a^^sCOFwtS)b; z(v_?lvF)Lkx9%L%zD5rSOJ7QnG1R4nix#(t@o5TM(1;kZ7Dg4Uo;}vZPA47@_0@o0 z=9*9>?XRe5MI9*)rH2MxtoEZK`PC=TUgQP8n;KPWzmDzw1^@mo&9Iw;xWDJ8&gk=- z8iyW)w#tu6Z_rV*m*X=<416N?%!cjb!zUM>pMK&53;Tl$bEk^kUF#U6cK14UQOHaZ z>c7%Hy!8gxQ?WZy2f3@Ro+QWeBaM^zzCtB|%q(PDpIG0mt-zvz#zSMdy89DV(M0}; zvqFT~*{2zoh*Q~js?F?<)6yFI6yDTkN~{&iL2}2#(aeyO1>Kuj7LGH23NfPtD~q26 zw+$QO>+=iTO)Q*^62S((8woyFyX{c_Iu}N$cw4@1;_WXE%MpT?KQ7c=b2t!*0#EBl zy{PvNhhV(nxfp)jJy)tGE6i}iD7Hr-Lq&VNa0KHaGnH_q6(0~)4&CyFSOSF0xmbng z(GlK5W@}3ndn_gnc2?S}ip+Pmm2!+Aa$W2LXZF2D^A6Z$kP?Iz2v+F(ci=IpP zc?!^_3?yO9RI1lDbNJ|w6(Kx<^E7m^X3LA#drP~(5I}=j${lv;1y(>`_UGG64P5!3 zH7b!GC;M}T3_1HRia6XpWEa571(*knMGU_z;995X+`d6EApcYBr|s|6aKBA)?oW9* z{RQ?Ca`on>UktNUxJ9FOlVa(Z%qB$_JaqmSvo>%qSGSEX&T%;FM8aA-yf6~-f9`>W z4C}LsLh-o**BWA9?!TwMVR!je0Lp1QCOVRHg`QqyMde~eoC9dw6(nPTdK%4ao%XxH z>x9VV(#LdHV_10D+K9ewxzTY?5xO~pc*RN^dfI=W-z8y@zs39U)i2qyPPXjsQv!X_ zM1p654q=cVd!JC)`ja8cI?A_|lyCLsXE^(>ilDsklwEFHt4T*=lldd1XhlT3TeQlp zc5`l2Q!f3)bJ(b;0X#(pNDTpxAeNJ7fo87%d7W&zl6g3{&`HQ`H}}wg*%Oc5s!TCQ_}LxjpijD$#gvsk>sRhBvS zWDR<{gg4fw#@xJ6geU3a)U~4vy+8Eqg~CnfpL^$5T%4QN?~I*#kmO7nYMMNqDa63{ zYjKn@!7K$q{`&Bv&QcxU>%+&GXyl7egG!g3W(7#?yS}@&5MO#d#^lFBh3RQ0pU?Ov zxXSA0>H6da%pb0faG&{8`lpjX1gd;)mwLW;MYpN<6&AR4vtNThTv40+)_oAPkTRQq zypEJ~8?qC>`)Xd^^f#vVk3@LSO{LqZL-|81(0tlV?%xVg^Rd(8!7YpU^Ti3HmPyiYd{Cs#IRU)aV;0T}yKZ?86A?3Ye0 z|AcXn<%d1J zbUE)Mvn_Bc+H3S^ZFbC<%K5es#O$5>eU;~R&0Wje9zjyKnWW~QeV>#hQ^qSPrz#6Y z4Up(K5N^bPm+9wr`1WpRh2A{AO(*WXW`DfY4#)@8)w0C;U5f9Q-oiqT0;{;|V~?ia z3wEql(az`Xl2l1&f9F4a2Emas zav_!Hce>y9+zKQ_o%jV(q`@sOTA`W^S&1n_bzX`|pl_m#w#@{YjxV{?JM~2scd;KeV*vf!LPn9;`eK%7It%)F|Hq+76LGVbnn7 z^&A43JcU`?eherO&vCME4VdR_wQNJ-$VN#_ApH7PS5OrK5z(PT6A`{{i{!-J{&Ul` zr~GMJcv&(V>>Yw6Nnc-Rd~}S-XIPHn(Bf66ha28rh0&d+Vr)x=$75AkL;Jg{aM^!_ z|0`06M3zEkx9Mb!Jz#^bDmc8(_zgWr&gpQ&DT9Z1$OUJSG;);~b0=S*;)n9X>~UxErUd9tW9u4MofJmz2l6VoXlUw!Jp-oknY zFq<8`1aPS}lPaule}iunUdJ^BlLj!suKC`BpM z0CAnQqj7~40#U_Y5_i`h*m1;}*5__N4WZ`>9op8_seaj$8$vyqRP=(?Ax0oR2*XTd zqo3}_bBkiPj-WNv0@R1A#O42)X3dt1Kt0&`M`wwo`4J`S`LmXi_>&{sqc#;C8>t!U zV_G?JR4tBV7{j3P`+ogv0}iXCGq>NirOtJfPt`4%AxvtM{OKM3tDAl`37yUGGD>yI z{XV%N#hu za^ELHmz9a}@OOhB=^$Ema^<)x>KlIyMiO<7aIrnRbvu)b;tEII9-;3E{`(}1Wl&Od zupi0T&KO%U5KrpdbK+lpA$`WtF1i=?3GEcWN27&%CbXO}(@kXgKtY5ik{D6E&C~$# zignHGh@sW))?MT#sQnzqjk)nyy0=(v_Z3M!3B_ZGb!df><)CMCSwI7lV04bux*&C# z*+hXl%2Wd*bK`oo^&9k#t%~@}w%OT`nbTTg9yG|*^=TKrI)*%svT$&0EKi{*(fG|R zco0;g>R>f6o-kDL;bN+rBVEik+n?TeP@AZq?t)I-%0j>E7K($Q9R)Y4za@G0EpJ2C z7hW6I*6#Tb==92vb5Tl@T)N0ETD^eNUnGn?lKEj)<=vQx%d4wk47YY-&OE11L&#h( zf*7G%zw;Jun2IJvIl(E5N~q_o$`B+26N~IF{(_JOO%D`49MszS?X}mSL{07?fF5N{ z%~{wqmATi)`*%fFoRjTkzK!?K{PQ?yC|ZV>N`yG-!peV#EyBtBSN1N^D$28Ard^bt z6q4ym71u<A_7^u}92qRq=6(&EB#h48`?l8AFKab1taw={)tJ9+{aKl} z!iIp1Qj^kR$D41OE46O9*@=dCe{8CC$OitUUXWY74oB{hIdz#LEl$YsevPw(T5=GV zrp`@qgdr_mdL=dCWqG8C2@DJS&m3BcMW4N%XQ;90o=OXs;MrszMkT}I57ENd3K$m% zXhW6X{R!6++83PXgVx_UILl!6QR>!F>LZCGjjvE|_0+Z`$EWF{G@_UX|S zuqj6-mXY=wmv{Jj8NkY`dWJd6N#=+Wrt=U~v9){md8C~*$*0$MQ>mfHMhq8(P+cft zvI!hk(U&ke^&cl}*RTwoi^0k%!Nn0{HnWhQoe10eK6Ucz9J$uvEYQ&&%8T5F*8Y4l z7q4|L%STU#*$qUVzTl1<-X{OS)ZEqC4m#4y}2V#N+=DK-V+#Xa7atIM_g`|m{y zv^CtQCF4C0S9weIfX~K7C!e(6?8)A1Qv2)R5Q~iw?i3Wdrp+|S&<1K8WJiYb9I0A% z(fM4<(OOu_$WmSUhZ*~nkM~`slI7-JjF}L_)Eq~7*Fji5f0Db0nZ`_F$6;9TyWg5; zmV^ESKME9Cm0m>m@K7C6n%{0|IhNJgfjk*q5208vVmi=i_zj@X_A>hc1Wa~<0tkowC6BwqB+agiA>ZU#5_^<(nyxtjk+id zDzUt#jd^3Z@%?%vH)C{VuvAh**HxjQr{*#L>cefDraqq4YrIH6*qx=V*yFRvRNJ<+a=^ANqT(v>nkCjeQ-fFgC`dUmp`)%+!?ABv^=j&#VqOvdQf$E6K zfW%VAAfvnP;hxZI^ki}Kc3;vAvD#~O!In5R$6srrl$u<(3e-p6NQdI3%;)BrImY9) z?X-BZ&B}h1yVwYR$PRwBjna}tzUlXQ5DD34R;WyxX{hw;6T5(&ToE4{nn(~}_7e5c zz&iz9dD77!<&?;yh?D+RxxarTh($zWmz0GbqEe`?zk1tP$cn75H^ZKojffJvZQi7?uVJk z{uyJLqs!a(VZ3}ijiNT#oV}m!&n4)bA3Xr?nS-XN{{x5ooVOlUw(`=eVuz>jPBPX6 zzc7Zna{L;i%;m@yJo&5jNvFu40})aiWP#CU z>~YWZg{7wRf^PHTj>(^WYb2qt24FC(Y% zwEPj|Y9vss<4AV9x+-tk?~6IZ=;fwZS)miG z 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 literal 0 HcmV?d00001 diff --git a/chapter-07/images/dex模板.png b/chapter-07/images/dex模板.png new file mode 100644 index 0000000000000000000000000000000000000000..797d5ba4be8a603e048a8b66dd880386f62ea1fa GIT binary patch literal 13434 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%0D;A?&5)r>s75ea6ujSaJZiKhB_ zkWyksq7gouUp8qc6nI}3Ny1kBSgH!Xe{$Y>xO3FKTwb%m1}g)<>eU`Ttm;NnF&4uW z6g{avhmW4~Nl;L!I4Uvi zK*O;x7GILsmqrcQ-?JUJcn%uZYdeqY z*w#b(Nf1&XH-#nW;m-1#-P(XF+i`ckn&5Js6VY5to*xIq4CfEYD@-1K|M&6X7tF!S z4|W`5o!H>{`*H@7&irFw7WUV&GK)a@#*=K^kTx5(Xp!)m0X2P4dX#Y7Zy;U){`4N2IurvL!I z3;#x$GU?Ra$B*OeL?>AAoFO@(eB*bK<3LQ98b6VljGz)5#+zT zSMndlnVy{;E!=_N8!mqft|0_I4_!D*8XnkjiLT-ltN;sQv)J^CO=4g6Qs*rSo_b!HXnjR;x*Br+*`SRLwET#@pl~d1_0`EuS$Dbu6(%%i{ zCDXv6Zda6J00y>JtD1fc=k`~z?veB9d*`uQWazWDvq{{%x_>o(5vR%Xc(b7}^16h; zV&OtaUA-6PO^0y{Hf9oF?L&vI;0$GGM$$!@Pe36&8Z@0r~Pmi3Y@+_Gr1_B1iZg8-P~N)h)(gp z4m^B>W%iyX?0(QsI$)Y=r>_>!!nnfBp4pEd#)wN|`ney)<=GHgafa^8qbUr{l`HsG zku>i<7+Fq|W7`jm4xX2>?>!;EMFf6D;W6hqkrvbiiwWaiRY)N%+0}pLkkltJhoj~j zzIfCtG+HimrM*VN$MGMK)(<=cfrs*WL`gXbiQp&k?!KJ^FmaDUtWA;9Qzj|(OJSwu zd>g@MH3)j=y*9bG955YVjbq?#+lk?PJPpAZ*3?J}H9>!hd~d=Zzqj+4P}m9bU8|7* zxg{uV@w18}yRu!F=!A1kOIbOoe?VKv$v3li8wyHv;#`6~v-(uC>D-eo+@)viVv!(%HF+8$>j6_zTX85q9BJ zvs|GuvA!Qu_#ysvn}x@VC_0*o+>$OH7DWcW^0ED^Sr)U0fSQEm<0AI@l~We&H@)im z{!%Z}OE$vqll{1!@#qnP{qc_{wk-vp6E9IUQ>4jtZQKFJsabkt8oWYX^IX_}*Fo6) z5pCTk_>>%5f=1aGb%Zxi5NMa_zkX_8y?{}Lo79;ZY@WZs zi|`uoo0VE4g7iv{FT)o1uRg3D5>0A&03<$I$|lZy&-MBIgHOs+%UE7A1qN((Z9Z6d zi$)7s;u=)+24keSJbI+`$j&u(xy}ohprivQM7mBi{b&a{V>8A*n}HR|Ia?=Df^XlS zlue@NreU3vsM%t#eLe`{ozxC!S=0H~fr}NcYT}B$3`f6FWAF8$?ByBe2fqFRPUzO8 z`NRDF5K^(3ms8~S@f+?Enl7hRSByew`y%u8{N@Q5DSzN(5$F9!P{&#p1sGw~6GTPK zt&EH)adpk9j(fOO!A6QYQgv{w1(80xl6e%9slqUqfQl>`dzP*J7%)}9Bto1ge)~yq zN--Sj`hDbqzE&*y^syfK@mW9$GA_-?xFWYxxLS3Oze9_wCPe9;rIpf$>td4&3)9p0 z;&5p8{i)d*v~I-kq{pfdj-S}Njv)YeMlN9I??mKEva8XmG=o8 z+kY9@CI2l!|NDP62>)&E!1<3aEBQaWb^m{5z{CHy#tcjP`wQG<^v!G3#q_>>p&|p7 HG7bD+H6zWM literal 0 HcmV?d00001