From 4a4967aa409d2e82e584a3387b0299b7e8853415 Mon Sep 17 00:00:00 2001 From: NIMA <1070842+NIKJOO@users.noreply.github.com> Date: Thu, 3 Sep 2020 01:43:50 +0430 Subject: [PATCH] Add files via upload --- VM Project.sln | 21 + VM Project/BEAInclude/basic_types.h | 250 ++++++ VM Project/BEAInclude/export.h | 173 ++++ VM Project/BeaEngine.exp | Bin 0 -> 422 bytes VM Project/BeaEngine.h | 314 +++++++ VM Project/BeaEngine.lib | Bin 0 -> 393336 bytes VM Project/InstructionLogger.cpp | 85 ++ VM Project/InstructionLogger.h | 30 + VM Project/PEInjector.cpp | 121 +++ VM Project/PEInjector.h | 34 + VM Project/VM Project.aps | Bin 0 -> 91440 bytes VM Project/VM Project.cpp | 100 +++ VM Project/VM Project.h | 32 + VM Project/VM Project.rc | Bin 0 -> 11010 bytes VM Project/VM Project.vcxproj | 150 ++++ VM Project/VM Project.vcxproj.filters | 85 ++ VM Project/VM Project.vcxproj.user | 6 + VM Project/VM ProjectDlg.cpp | 278 ++++++ VM Project/VM ProjectDlg.h | 42 + VM Project/VMCompiler.cpp | 1181 +++++++++++++++++++++++++ VM Project/VMCompiler.h | 70 ++ VM Project/VMHandlerProcessor.cpp | 634 +++++++++++++ VM Project/VMHandlerProcessor.h | 42 + VM Project/res/VM Project.ico | Bin 0 -> 67777 bytes VM Project/res/VMProject.rc2 | Bin 0 -> 802 bytes VM Project/resource.h | Bin 0 -> 1826 bytes VM Project/stdafx.cpp | 8 + VM Project/stdafx.h | 53 ++ VM Project/targetver.h | 8 + 29 files changed, 3717 insertions(+) create mode 100644 VM Project.sln create mode 100644 VM Project/BEAInclude/basic_types.h create mode 100644 VM Project/BEAInclude/export.h create mode 100644 VM Project/BeaEngine.exp create mode 100644 VM Project/BeaEngine.h create mode 100644 VM Project/BeaEngine.lib create mode 100644 VM Project/InstructionLogger.cpp create mode 100644 VM Project/InstructionLogger.h create mode 100644 VM Project/PEInjector.cpp create mode 100644 VM Project/PEInjector.h create mode 100644 VM Project/VM Project.aps create mode 100644 VM Project/VM Project.cpp create mode 100644 VM Project/VM Project.h create mode 100644 VM Project/VM Project.rc create mode 100644 VM Project/VM Project.vcxproj create mode 100644 VM Project/VM Project.vcxproj.filters create mode 100644 VM Project/VM Project.vcxproj.user create mode 100644 VM Project/VM ProjectDlg.cpp create mode 100644 VM Project/VM ProjectDlg.h create mode 100644 VM Project/VMCompiler.cpp create mode 100644 VM Project/VMCompiler.h create mode 100644 VM Project/VMHandlerProcessor.cpp create mode 100644 VM Project/VMHandlerProcessor.h create mode 100644 VM Project/res/VM Project.ico create mode 100644 VM Project/res/VMProject.rc2 create mode 100644 VM Project/resource.h create mode 100644 VM Project/stdafx.cpp create mode 100644 VM Project/stdafx.h create mode 100644 VM Project/targetver.h diff --git a/VM Project.sln b/VM Project.sln new file mode 100644 index 0000000..556d074 --- /dev/null +++ b/VM Project.sln @@ -0,0 +1,21 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VM Project", "VM Project\VM Project.vcxproj", "{50DC5327-0CAD-4787-B236-F3B0127AA8A9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {50DC5327-0CAD-4787-B236-F3B0127AA8A9}.Debug|Win32.ActiveCfg = Debug|Win32 + {50DC5327-0CAD-4787-B236-F3B0127AA8A9}.Debug|Win32.Build.0 = Debug|Win32 + {50DC5327-0CAD-4787-B236-F3B0127AA8A9}.Debug|Win32.Deploy.0 = Debug|Win32 + {50DC5327-0CAD-4787-B236-F3B0127AA8A9}.Release|Win32.ActiveCfg = Release|Win32 + {50DC5327-0CAD-4787-B236-F3B0127AA8A9}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/VM Project/BEAInclude/basic_types.h b/VM Project/BEAInclude/basic_types.h new file mode 100644 index 0000000..4c50f11 --- /dev/null +++ b/VM Project/BEAInclude/basic_types.h @@ -0,0 +1,250 @@ +/** + * @file basic_types.h + * @author + * @date Thu Dec 24 19:31:22 2009 + * + * @brief Definitions of fixed-size integer types for various platforms + * + * This file is part of BeaEngine. + * + * BeaEngine is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * BeaEngine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with BeaEngine. If not, see . */ + +#ifndef __BEA_BASIC_TYPES_HPP__ +#define __BEA_BASIC_TYPES_HPP__ + +#include + +#if defined(__GNUC__) || defined (__INTEL_COMPILER) || defined(__LCC__) +#include +#endif + +#if defined(_MSC_VER) + /* + * Windows/Visual C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed __int64 Int64; + typedef unsigned __int64 UInt64; + #if defined(_WIN64) + #define BEA_PTR_IS_64_BIT 1 + typedef signed __int64 IntPtr; + typedef unsigned __int64 UIntPtr; + #else + typedef signed long IntPtr; + typedef size_t UIntPtr; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__GNUC__) || defined(__LCC__) + /* + * Unix/GCC + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef intptr_t IntPtr; + typedef uintptr_t UIntPtr; + #if defined(__LP64__) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + #if defined (__INTEL_COMPILER) || defined (__ICC) || defined (_ICC) + typedef __int64 Int64; + typedef unsigned __int64 UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__DECCXX) + /* + * Compaq C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed __int64 Int64; + typedef unsigned __int64 UInt64; + #if defined(__VMS) + #if defined(__32BITS) + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #else + typedef Int64 IntPtr; + typedef UInt64 UIntPtr; + #define BEA_PTR_IS_64_BIT 1 + #endif + #else + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__HP_aCC) + /* + * HP Ansi C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__LP64__) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__SUNPRO_CC) || defined(__SUNPRO_C) + /* + * SUN Forte C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__sparcv9) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__IBMCPP__) + /* + * IBM XL C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if defined(__64BIT__) + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#elif defined(__BORLANDC__) + /* + * Borland C/C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef unsigned __int64 Int64; + typedef signed __int64 UInt64; + typedef unsigned long UIntPtr; + #define BEA_HAVE_INT64 1 +#elif defined(__WATCOMC__) + /* + * Watcom C/C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef unsigned __int64 Int64; + typedef signed __int64 UInt64; + #define BEA_HAVE_INT64 1 + typedef size_t UIntPtr; +#elif defined(__sgi) + /* + * MIPSpro C++ + */ + typedef signed char Int8; + typedef unsigned char UInt8; + typedef signed short Int16; + typedef unsigned short UInt16; + typedef signed int Int32; + typedef unsigned int UInt32; + typedef signed long IntPtr; + typedef unsigned long UIntPtr; + #if _MIPS_SZLONG == 64 + #define BEA_PTR_IS_64_BIT 1 + #define BEA_LONG_IS_64_BIT 1 + typedef signed long Int64; + typedef unsigned long UInt64; + #else + typedef signed long long Int64; + typedef unsigned long long UInt64; + #endif + #define BEA_HAVE_INT64 1 +#endif + +#if defined(_MSC_VER) || defined(__BORLANDC__) + #define W64LIT(x) x##ui64 +#else + #define W64LIT(x) x##ULL +#endif + + +#ifndef C_STATIC_ASSERT +#define C_STATIC_ASSERT(tag_name, x) \ + typedef int cache_static_assert_ ## tag_name[(x) * 2-1] +#endif + +C_STATIC_ASSERT(sizeof_Int8 , (sizeof(Int8) == 1)); +C_STATIC_ASSERT(sizeof_UInt8, (sizeof(UInt8) == 1)); + +C_STATIC_ASSERT(sizeof_Int16 , (sizeof(Int16) == 2)); +C_STATIC_ASSERT(sizeof_UInt16, (sizeof(UInt16) == 2)); + +C_STATIC_ASSERT(sizeof_Int32 , (sizeof(Int32) == 4)); +C_STATIC_ASSERT(sizeof_UInt32, (sizeof(UInt32) == 4)); + +C_STATIC_ASSERT(sizeof_Int64 , (sizeof(Int64) == 8)); +C_STATIC_ASSERT(sizeof_UInt64, (sizeof(UInt64) == 8)); + +#endif diff --git a/VM Project/BEAInclude/export.h b/VM Project/BEAInclude/export.h new file mode 100644 index 0000000..6e550db --- /dev/null +++ b/VM Project/BEAInclude/export.h @@ -0,0 +1,173 @@ +/** + * @file export.h + * @author igor.gutnik@gmail.com + * @date Mon Sep 22 09:28:54 2008 + * + * @brief This file sets things up for C dynamic library function definitions and + * static inlined functions + * + * This file is part of BeaEngine. + * + * BeaEngine is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * BeaEngine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with BeaEngine. If not, see . */ + +#ifndef __BEA_EXPORT_H__ +#define __BEA_EXPORT_H__ + + +/* Set up for C function definitions, even when using C++ */ + +#ifdef __cplusplus +#define CPP_VISIBLE_BEGIN extern "C" { +#define CPP_VISIBLE_END } +#else +#define CPP_VISIBLE_BEGIN +#define CPP_VISIBLE_END +#endif + +#if defined(_MSC_VER) +#pragma warning( disable: 4251 ) +#endif + +/* Some compilers use a special export keyword */ +#ifndef bea__api_export__ +# if defined(__BEOS__) +# if defined(__GNUC__) +# define bea__api_export__ __declspec(dllexport) +# else +# define bea__api_export__ __declspec(export) +# endif +# elif defined(_WIN32) || defined(_WIN64) +# ifdef __BORLANDC__ +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ __declspec(dllimport) +# elif defined(__WATCOMC__) +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ +# else +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ __declspec(dllimport) +# endif +# elif defined(__OS2__) +# ifdef __WATCOMC__ +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ +# else +# define bea__api_export__ +# define bea__api_import__ +# endif +# else +# if defined(_WIN32) && defined(__GNUC__) && __GNUC__ >= 4 +# define bea__api_export__ __attribubea__ ((visibility("default"))) +# define bea__api_import__ __attribubea__ ((visibility("default"))) +# else +# define bea__api_export__ +# define bea__api_import__ +# endif +# endif +#endif + +/* Use C calling convention by default*/ + +#ifndef __bea_callspec__ +#if defined(BEA_USE_STDCALL) + #if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(_WIN64) + #if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(_MSC_VER) || defined(__MINGW32__) || defined(__POCC__) + #define __bea_callspec__ __stdcall + #else + #define __bea_callspec__ + #endif + #else + #ifdef __OS2__ + #define __bea_callspec__ _System + #else + #define __bea_callspec__ + #endif + #endif +#else + #define __bea_callspec__ +#endif +#endif + +#ifdef __SYMBIAN32__ +# ifndef EKA2 +# undef bea__api_export__ +# undef bea__api_import__ +# define bea__api_export__ +# define bea__api_import__ +# elif !defined(__WINS__) +# undef bea__api_export__ +# undef bea__api_import__ +# define bea__api_export__ __declspec(dllexport) +# define bea__api_import__ __declspec(dllexport) +# endif /* !EKA2 */ +#endif /* __SYMBIAN32__ */ + + +#if defined(__GNUC__) && (__GNUC__ > 2) +#define BEA_EXPECT_CONDITIONAL(c) (__builtin_expect((c), 1)) +#define BEA_UNEXPECT_CONDITIONAL(c) (__builtin_expect((c), 0)) +#else +#define BEA_EXPECT_CONDITIONAL(c) (c) +#define BEA_UNEXPECT_CONDITIONAL(c) (c) +#endif + + +/* Set up compiler-specific options for inlining functions */ +#ifndef BEA_HAS_INLINE +#if defined(__GNUC__) || defined(__POCC__) || defined(__WATCOMC__) || defined(__SUNPRO_C) +#define BEA_HAS_INLINE +#else +/* Add any special compiler-specific cases here */ +#if defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__EABI__) +#ifndef __inline__ +#define __inline__ __inline +#endif +#define BEA_HAS_INLINE +#else +#if !defined(__MRC__) && !defined(_SGI_SOURCE) +#ifndef __inline__ +#define __inline__ inline +#endif +#define BEA_HAS_INLINE +#endif /* Not a funky compiler */ +#endif /* Visual C++ */ +#endif /* GNU C */ +#endif /* CACHE_HAS_INLINE */ + +/* If inlining isn't supported, remove "__inline__", turning static + inlined functions into static functions (resulting in code bloat + in all files which include the offending header files) +*/ +#ifndef BEA_HAS_INLINE +#define __inline__ +#endif + +/* fix a bug with gcc under windows */ + +#if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(_WIN64) + #if defined(__MINGW32__) + #define const__ + #else + #define const__ const + #endif +#else + #define const__ const +#endif + + + +#endif diff --git a/VM Project/BeaEngine.exp b/VM Project/BeaEngine.exp new file mode 100644 index 0000000000000000000000000000000000000000..0eb712ca2ca8b1aac1801066ffe6b8b4d4a26b34 GIT binary patch literal 422 zcmbVIF$%&!5S)v`f%pNz!a~qOLyCYF7D3cX5JW7MgB)@YBN(x>_7ncbkGZ=^j?@mB zx!EDN?A}%>oIYwdQa~F5724E1Oj)qLi3{SF3qpsO$OpO0*@j3h(5g75GbSd)CJt0M z;!8q>084Au`NicnOtTDUU+(SG74DWNQ6oIsd!4OZVTx-Kqg(aY=zBNtZs;A4!_eU2 wcvy`&2Lz1?X&{bQWoSgCypTroN$NHIgYnOD7wCyEg}VXMvJee0qw|jye;&p*T>t<8 literal 0 HcmV?d00001 diff --git a/VM Project/BeaEngine.h b/VM Project/BeaEngine.h new file mode 100644 index 0000000..eb0e5e5 --- /dev/null +++ b/VM Project/BeaEngine.h @@ -0,0 +1,314 @@ +#pragma once +/* Header for BeaEngine 4.x */ +#ifndef _BEA_ENGINE_ +#define _BEA_ENGINE_ + +#include "BEAInclude/export.h" +#include "BEAInclude/basic_types.h" + +#if !defined(BEA_ENGINE_STATIC) + #if defined(BUILD_BEA_ENGINE_DLL) + #define BEA_API bea__api_export__ + #else + #define BEA_API bea__api_import__ + #endif +#else + #define BEA_API +#endif + + +#define INSTRUCT_LENGTH 64 + +#pragma pack(1) +typedef struct { + UInt8 W_; + UInt8 R_; + UInt8 X_; + UInt8 B_; + UInt8 state; +} REX_Struct ; +#pragma pack() + +#pragma pack(1) +typedef struct { + int Number; + int NbUndefined; + UInt8 LockPrefix; + UInt8 OperandSize; + UInt8 AddressSize; + UInt8 RepnePrefix; + UInt8 RepPrefix; + UInt8 FSPrefix; + UInt8 SSPrefix; + UInt8 GSPrefix; + UInt8 ESPrefix; + UInt8 CSPrefix; + UInt8 DSPrefix; + UInt8 BranchTaken; + UInt8 BranchNotTaken; + REX_Struct REX; +} PREFIXINFO ; +#pragma pack() + +#pragma pack(1) +typedef struct { + UInt8 OF_; + UInt8 SF_; + UInt8 ZF_; + UInt8 AF_; + UInt8 PF_; + UInt8 CF_; + UInt8 TF_; + UInt8 IF_; + UInt8 DF_; + UInt8 NT_; + UInt8 RF_; + UInt8 alignment; +} EFLStruct ; +#pragma pack() + +#pragma pack(4) +typedef struct { + Int32 BaseRegister; + Int32 IndexRegister; + Int32 Scale; + Int64 Displacement; +} MEMORYTYPE ; +#pragma pack() + + +#pragma pack(1) +typedef struct { + Int32 Category; + Int32 Opcode; + char Mnemonic[16]; + Int32 BranchType; + EFLStruct Flags; + UInt64 AddrValue; + Int64 Immediat; + UInt32 ImplicitModifiedRegs; +} INSTRTYPE; +#pragma pack() + +#pragma pack(1) +typedef struct { + char ArgMnemonic[32]; + Int32 ArgType; + Int32 ArgSize; + Int32 ArgPosition; + UInt32 AccessMode; + MEMORYTYPE Memory; + UInt32 SegmentReg; +} ARGTYPE; +#pragma pack() + + + +#pragma pack(1) +typedef struct _Disasm { + UIntPtr EIP; + UInt64 VirtualAddr; + UInt32 SecurityBlock; + char CompleteInstr[INSTRUCT_LENGTH]; + UInt32 Archi; + UInt64 Options; + INSTRTYPE Instruction; + ARGTYPE Argument1; + ARGTYPE Argument2; + ARGTYPE Argument3; + PREFIXINFO Prefix; + UInt32 Reserved_[40]; +} DISASM, *PDISASM, *LPDISASM; +#pragma pack() + +#define ESReg 1 +#define DSReg 2 +#define FSReg 3 +#define GSReg 4 +#define CSReg 5 +#define SSReg 6 + +#define InvalidPrefix 4 +#define SuperfluousPrefix 2 +#define NotUsedPrefix 0 +#define MandatoryPrefix 8 +#define InUsePrefix 1 + +#define LowPosition 0 +#define HighPosition 1 + +enum INSTRUCTION_TYPE +{ + GENERAL_PURPOSE_INSTRUCTION = 0x10000, + FPU_INSTRUCTION = 0x20000, + MMX_INSTRUCTION = 0x40000, + SSE_INSTRUCTION = 0x80000, + SSE2_INSTRUCTION = 0x100000, + SSE3_INSTRUCTION = 0x200000, + SSSE3_INSTRUCTION = 0x400000, + SSE41_INSTRUCTION = 0x800000, + SSE42_INSTRUCTION = 0x1000000, + SYSTEM_INSTRUCTION = 0x2000000, + VM_INSTRUCTION = 0x4000000, + UNDOCUMENTED_INSTRUCTION = 0x8000000, + AMD_INSTRUCTION = 0x10000000, + ILLEGAL_INSTRUCTION = 0x20000000, + AES_INSTRUCTION = 0x40000000, + CLMUL_INSTRUCTION = (int)0x80000000, + + + DATA_TRANSFER = 0x1, + ARITHMETIC_INSTRUCTION, + LOGICAL_INSTRUCTION, + SHIFT_ROTATE, + BIT_UInt8, + CONTROL_TRANSFER, + STRING_INSTRUCTION, + InOutINSTRUCTION, + ENTER_LEAVE_INSTRUCTION, + FLAG_CONTROL_INSTRUCTION, + SEGMENT_REGISTER, + MISCELLANEOUS_INSTRUCTION, + COMPARISON_INSTRUCTION, + LOGARITHMIC_INSTRUCTION, + TRIGONOMETRIC_INSTRUCTION, + UNSUPPORTED_INSTRUCTION, + LOAD_CONSTANTS, + FPUCONTROL, + STATE_MANAGEMENT, + CONVERSION_INSTRUCTION, + SHUFFLE_UNPACK, + PACKED_SINGLE_PRECISION, + SIMD128bits, + SIMD64bits, + CACHEABILITY_CONTROL, + FP_INTEGER_CONVERSION, + SPECIALIZED_128bits, + SIMD_FP_PACKED, + SIMD_FP_HORIZONTAL , + AGENT_SYNCHRONISATION, + PACKED_ALIGN_RIGHT , + PACKED_SIGN, + PACKED_BLENDING_INSTRUCTION, + PACKED_TEST, + PACKED_MINMAX, + HORIZONTAL_SEARCH, + PACKED_EQUALITY, + STREAMING_LOAD, + INSERTION_EXTRACTION, + DOT_PRODUCT, + SAD_INSTRUCTION, + ACCELERATOR_INSTRUCTION, /* crc32, popcnt (sse4.2) */ + ROUND_INSTRUCTION + +}; + +enum EFLAGS_STATES +{ + TE_ = 1, + MO_ = 2, + RE_ = 4, + SE_ = 8, + UN_ = 0x10, + PR_ = 0x20 +}; + +enum BRANCH_TYPE +{ + JO = 1, + JC, + JE, + JA, + JS, + JP, + JL, + JG, + JB, + JECXZ, + JmpType, + CallType, + RetType, + JNO = -1, + JNC = -2, + JNE = -3, + JNA = -4, + JNS = -5, + JNP = -6, + JNL = -7, + JNG = -8, + JNB = -9 +}; + +enum ARGUMENTS_TYPE +{ + NO_ARGUMENT = 0x10000000, + REGISTER_TYPE = 0x20000000, + MEMORY_TYPE = 0x40000000, + CONSTANT_TYPE = (int)0x80000000, + + MMX_REG = 0x10000, + GENERAL_REG = 0x20000, + FPU_REG = 0x40000, + SSE_REG = 0x80000, + CR_REG = 0x100000, + DR_REG = 0x200000, + SPECIAL_REG = 0x400000, + MEMORY_MANAGEMENT_REG = 0x800000, + SEGMENT_REG = 0x1000000, + + RELATIVE_ = 0x4000000, + ABSOLUTE_ = 0x8000000, + + READ = 0x1, + WRITE = 0x2, + + REG0 = 0x1, + REG1 = 0x2, + REG2 = 0x4, + REG3 = 0x8, + REG4 = 0x10, + REG5 = 0x20, + REG6 = 0x40, + REG7 = 0x80, + REG8 = 0x100, + REG9 = 0x200, + REG10 = 0x400, + REG11 = 0x800, + REG12 = 0x1000, + REG13 = 0x2000, + REG14 = 0x4000, + REG15 = 0x8000 +}; + +enum SPECIAL_INFO +{ + UNKNOWN_OPCODE = -1, + OUT_OF_BLOCK = 0, + + /* === mask = 0xff */ + NoTabulation = 0x00000000, + Tabulation = 0x00000001, + + /* === mask = 0xff00 */ + MasmSyntax = 0x00000000, + GoAsmSyntax = 0x00000100, + NasmSyntax = 0x00000200, + ATSyntax = 0x00000400, + + /* === mask = 0xff0000 */ + PrefixedNumeral = 0x00010000, + SuffixedNumeral = 0x00000000, + + /* === mask = 0xff000000 */ + ShowSegmentRegs = 0x01000000 +}; + + +#ifdef __cplusplus +extern "C" +#endif + +int __bea_callspec__ Disasm (LPDISASM pDisAsm); +BEA_API const__ char* __bea_callspec__ BeaEngineVersion (void); +BEA_API const__ char* __bea_callspec__ BeaEngineRevision (void); +#endif diff --git a/VM Project/BeaEngine.lib b/VM Project/BeaEngine.lib new file mode 100644 index 0000000000000000000000000000000000000000..701314d94a08c4166ba62b76c4ef4582367e62ae GIT binary patch literal 393336 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 iZmruJJFXj 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 hj?7h-G}YBN +#define TableMemorySize 0x10000 +class CInstructionLogger +{ +private: + CVMHandlerProcessor &iVMHandler; +public: + + DWORD LogCount; + DWORD CareCount; + + LPDWORD pOriginalVATable; + LPDWORD pVMVATable; + LPDWORD pMemTable; + + LPDWORD pCareVMMem; + LPDWORD pCareTargetAddr; + + void Clear(); + void AddToLog(DWORD OriginalVirtualAddr,DWORD VMAddr,LPBYTE MemByte); + void AddToCare(LPBYTE MemVM,DWORD TargetVAddr); + LPBYTE GetMemFromVA(DWORD VirtualAddr); + + CInstructionLogger(CVMHandlerProcessor &HandlerProcessor); + ~CInstructionLogger(void); + void FixCare(); +}; + diff --git a/VM Project/PEInjector.cpp b/VM Project/PEInjector.cpp new file mode 100644 index 0000000..b328529 --- /dev/null +++ b/VM Project/PEInjector.cpp @@ -0,0 +1,121 @@ +#include "stdafx.h" +#include "PEInjector.h" + +// This Class Used to Read PE data and add some data to it +// this data can stored as new section or any thing else + +CPEInjector::CPEInjector(void) +{ + pPEBytes=0; + pOverlay=0; + OverlaySize=0; + PEFileSize=0; + +} + + +CPEInjector::~CPEInjector(void) +{ +} + +void CPEInjector::LoadFile(LPWSTR iFile) +{ + if (pPEBytes) + delete[] pPEBytes; + if (pOverlay) + delete[] pOverlay; + HANDLE hFile; + DWORD tmp; + + hFile=CreateFileW(iFile,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0); + PEFileSize=GetFileSize(hFile,0); + pPEBytes=(LPBYTE)malloc(PEFileSize); + ReadFile(hFile,pPEBytes,PEFileSize,&tmp,0); + CloseHandle(hFile); + + DOSHeader=(PIMAGE_DOS_HEADER)pPEBytes; + NTHeader=(PIMAGE_NT_HEADERS)(pPEBytes + DOSHeader->e_lfanew); + SectionHeader=(PIMAGE_SECTION_HEADER)((LPBYTE)&(NTHeader->OptionalHeader) + NTHeader->FileHeader.SizeOfOptionalHeader); + + +} +DWORD CPEInjector::GetNewSectionVA() +{ + DWORD NewVA; + NewVA=SectionHeader[NTHeader->FileHeader.NumberOfSections-1].VirtualAddress + SectionHeader[NTHeader->FileHeader.NumberOfSections-1].Misc.VirtualSize; + NewVA=AlignSize(NewVA,NTHeader->OptionalHeader.SectionAlignment); + NewVA+=NTHeader->OptionalHeader.ImageBase; + return NewVA; + +} +DWORD CPEInjector::GetNewSectionOffset() +{ + DWORD NewOffset; + NewOffset=SectionHeader[NTHeader->FileHeader.NumberOfSections-1].PointerToRawData + SectionHeader[NTHeader->FileHeader.NumberOfSections-1].SizeOfRawData; + NewOffset=AlignSize(NewOffset,NTHeader->OptionalHeader.FileAlignment); + + return NewOffset; + +} +void CPEInjector:: AddNewSection(LPBYTE SectionMem,size_t MemSize) +{ + char SectionName[8]=".XVM"; + DWORD NewRVA=GetNewSectionVA()-NTHeader->OptionalHeader.ImageBase; + DWORD NewOffset=GetNewSectionOffset(); + DWORD NewSize=AlignSize(MemSize,NTHeader->OptionalHeader.SectionAlignment); + DWORD i=NTHeader->FileHeader.NumberOfSections; + + SectionHeader[i].Characteristics=0xE00000A0; + SectionHeader[i].Misc.VirtualSize=NewSize; + SectionHeader[i].SizeOfRawData=NewSize; + SectionHeader[i].VirtualAddress=NewRVA; + SectionHeader[i].PointerToRawData=NewOffset; + CopyMemory(SectionHeader[i].Name,SectionName,8); + + NTHeader->FileHeader.NumberOfSections++; + NTHeader->OptionalHeader.SizeOfImage+=NewSize; + + NewSectionMem=SectionMem; + NewSectionSize=MemSize; + +} +void CPEInjector:: SaveFile(LPSTR destAddr) +{ + HANDLE hFile; + DWORD tmp; + hFile=CreateFileA(destAddr,GENERIC_WRITE,FILE_SHARE_READ,0,CREATE_ALWAYS,0,0); + WriteFile(hFile,pPEBytes,PEFileSize,&tmp,0); + WriteFile(hFile,NewSectionMem,NewSectionSize,&tmp,0); + CloseHandle(hFile); +} +DWORD CPEInjector:: AlignSize(DWORD dwSize, DWORD dwAlign) +{ + return (dwSize + (dwAlign - ((dwSize % dwAlign) ? (dwSize % dwAlign) : dwAlign))); +} +DWORD CPEInjector::FindSectionNum(DWORD VA) +{ + VA-=NTHeader->OptionalHeader.ImageBase; + + for (int i=0;iFileHeader.NumberOfSections;i++) + { + if (VA>=SectionHeader[i].VirtualAddress && VA<(SectionHeader[i].VirtualAddress + SectionHeader[i].Misc.VirtualSize)) + return i; + } + + return -1; + +} +DWORD CPEInjector::V2O(DWORD VA) +{ + + int i=FindSectionNum(VA); + if (i!=-1) + { + VA-=NTHeader->OptionalHeader.ImageBase; + VA-=SectionHeader[i].VirtualAddress; + VA+=SectionHeader[i].PointerToRawData; + return VA; + } + + return -1; +} \ No newline at end of file diff --git a/VM Project/PEInjector.h b/VM Project/PEInjector.h new file mode 100644 index 0000000..f387cd8 --- /dev/null +++ b/VM Project/PEInjector.h @@ -0,0 +1,34 @@ +#pragma once +#include +#include + +using namespace std; + +class CPEInjector +{ +public: + LPWSTR strFileName; + CPEInjector(void); + ~CPEInjector(void); + void LoadFile(LPWSTR); + DWORD GetNewSectionVA(); + DWORD GetNewSectionOffset(); + void AddNewSection(LPBYTE,size_t Size); + DWORD AlignSize(DWORD,DWORD); + void SaveFile(LPSTR); + DWORD FindSectionNum(DWORD VA); + DWORD V2O(DWORD VA); + LPBYTE pPEBytes; + size_t PEFileSize; + LPBYTE pOverlay; + size_t OverlaySize; + LPBYTE NewSectionMem; + size_t NewSectionSize; + + PIMAGE_DOS_HEADER DOSHeader; + PIMAGE_NT_HEADERS NTHeader; + PIMAGE_SECTION_HEADER SectionHeader; + + +}; + diff --git a/VM Project/VM Project.aps b/VM Project/VM Project.aps new file mode 100644 index 0000000000000000000000000000000000000000..9c7bbf810fd7d6a42b2d3b949a31a412cb773caa GIT binary patch literal 91440 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

kp2b!7X(LU3qQNN`}_ ze;C8h7Zzf!MMZ^&Mv#!E|7k2gZ@*k!nUr)g@gvRf8xbc$ z{QhkJ!{E^1tD2kF6653JZ$zFT{8|5HxU&lZs_ z&-R_bZMhTO!7G4-*pVe$g~v$^L~N7+@A~(h`&KUl*yw8r8v~7DQ^*03^he)agAc=2 z8#f4cJOWk+LLf|q5yDi_eY?g=AZf8cG`f3_)>#E7^;SWw-dcz^HOdhwyO9k{?o!h@g9TQOK~}xMbgC*l&hhdr`=B6^D4+9dO!pC*-?{z}cgs zP~g4=ijIpzp{F!lKzHy(p1YyYM*%Job}!pE!J2SBPJT0k$O;H%4WabJ0c87_!OggRa1+@xHxta@Rm)UJFQRyntPMJ3wBq2jrX{f`UmeD4O+w zy3u1$H+~9xEuMpx^CM99eFXcCKZb)oPe9%F73^_%3r2SBpcm8*M+n{E?ArsXmi?e^ z_W|KQ!d|z*C7Z{@<0Dvl48T60AutK~1ol23;8(W^8DoFy*3n>s(mIhumXW&S40UW(s01l7J;MkMP;P>b< zxIL=?-xoK)fQamx@D@0j(hfF>k03PhHM+xp4F|$T;BfR9IG-3scIycEoah6O$YF3u z8;8K`e(*{igW&WraLq#Z`uS5pKzHoviFuHBApvgIMnY#T30~CYLBz`%h`4W^kaq3^q!fIHIAqi0Uh9RFs;>}- z-POOn4`+Isq3A8TryqO*=LViY{$M-Y{PY@9>dA1UaR93B4Z_(bGF)v#c1_0|-0Yf% z+sLlD)wc*uUC*Ge=8ecMnW6bt&^7fnO%;L>IiQ$Ik<^ahL_`Kg(f{Sz)>B^7i6+2 zw=8}Gc6)tZo`s2)N|{R4dF%7p!$NqGz5Ez~B8vju3PxHLMk-6a`Nup`TelgA;E~;+ zR5r!J!osM|L~Eu0eRA^_AqkUhm_1NjHdnTig-L^j(c1n9GQhUz9@;9-4^VM&ae_^r zwNReP=Be#oBWcM44!YY!0Ipr2l&CSu7wu$eecAD>{n0VkV~)C#0Bx5j3p1>{&+U?b z_#kA}elt5;!=p|X=rFxpR-m=(EPGI3fVX=vjo1!!&!}&X&hd9`@873HoCqa&B^(d) zcEgEEYC9seK7af8;d*4!iPt@GQ(h!Qv-(FTe0X=`O8i{v*SV8(-Z25*K0o^gK3*-a zTD-ORWoXeqHZDB$l&b)BqujS)oqo3a1y`7cOQ2+aF&FElD)9u`h^ysvPU-1AV z&2_gkGoqrhJAW?+XgqzV>zA_szrWu*(f)eQEuUk5`s-{+9z1&f^4D>{2#BSBVV6TGCIu+n_RtFv*1K_Yyx z5}bBcMdy?{TqdYPSs?m`jlR_ipR|I&_=BJpX%A{~$hVGlfdkRUz#z#P4xT&?rs=+L zI42aYMeIW7kUsLE4WK4z4^%`L!*!AwN?QUk%N}Y^TO)tj9%9Qp;BJ-sDwZgTq9-R|h8|y$^z7mYwlfdQJ z8Q80T0oIB%BmcJn1f-ilO0fxqcJ;wF^!;{+YCY^wZv}bv7TB%x4CD`@v*J)67+Bl` z%|qQ_c;p2b9J>z(>^i{6{vB92zXBVN9?&#@4=OeTpyl)t419;-06GWuCWV3a`3SH$ z8v*7wQo*7&6Re9!VDUH?+?tBPv#lHgUfzVDuB&h)eG+U=jzM7LM+k@;0YdyI@H;sT zZs;4VN9uP7Bj&)pvte-eY$V)29}W*LARo0N0-oH6hiAx_KG9GLC)zGR1oA`Q+{=L8 zrVQvoK6B55GKft22$6Z?5O;PQ@`?r^y?h#?DkyO2#uQ|{z6X_^51{sK8x(zLgNjeD z;ObZx#NJ(i+PmXW(oBY1&u8Hl+L!P2FT&892k>C98@}{6L;H&vc>Qh;o(}iIeY79H zB7cUN&mUm$%V+pFHV;#?-(X>W7G~$rZ@3r#N8d+(ncV+3`9JA_KmGN#5>6w@F18oK5rCmtcNM=dh;Q-X(e5U48Q?XN)cNHGYccPdP*}v@+2CnLk-{;E1W0 zk^awo`f<5pZU{S8J>1F-lVvn1(|;Kwr18#KG*---~Y6x{<;q@|FGxReK^KY zUyFr_3;Xj=79DMMqvcH(?a0^_tA%H&14gc+u43Y!Gg|9%eWR9-Fj?b+{NNqS8Kc^B zn`yL(Dw|iV&u-G@%D!p8VpTkc4B=sqZ`ZXqH$O~Hy{a{Rl7Hq!|M6{4bgvb2TeC$EZ2`vhP-J1_5HSXrm ztx3*GPEO964Ef%*OF%m8I9JJ!|8D{wD0H%{FS%5dT3I_|y5?lpzEg4P*W<5R6cgNM zd)?8e&L=)yO~aAdO*9h<1|@{yV_GfinonNo3}^75F$yi)f-A63bIW?TICb{j+$~A| z_>NN@nQ*3g_<8y5g`SF&T`VhFIbbv=sg)mxO?v^o{t}m*5<-*DLl6te@NJ~HG{I4 zJD4}(#aA*Yj8UiPQ?@C2@NlIzTaWF-g@8Qu!THcVI{f@}v65755!@{}U8*BINlCQq zxnRwyvdLo6vMHj%_!&~K-+S&roqNNhv7K(QA0G?l`|dbpnM`%v=ZT3j$W@!rijJ(D zSY*8;F2EK^Cr{6&&vv2M5F0cD!eq8D6YEiCn$tLl@y}Tj8Ml`)! zeWEaBU!q>kA-Q1lQAMn%To?#m33QH z?)Zn5@D<0u8D**%Zh~`y#ecF{zq?$fn%=nWD%v zAjLhKnwZG=KHxN(89w@sp<^E-ZH9Y~iJq>c7EXBlrRt6^jzmmJyPwdQq_xd23>|w8R3Y*&1g7Bl1vHxJj}l1Prud6xJlYk$sPVQ7{~VnKR8@_Xf4f! z!$w=g78P6l2NdmaN=5;bUslH%l*QGbOS%B~&*f7bd#PfX)Amd-sc3Q$2MR+MW4_<~ zLWu9^-7ZW#rq4kb9CVkuG~8e8w8bcE&wMOXDI3v_;Y!CQzZnxQHYZFsO znTYlVOxNcNRuVjQ8M@M%XewBo#}?}RFJv9L&11Lj#>Pab(;iWBm6H$z7LPNshUtre zH}PUoLsTs-#H*ilw=nXf$=wx@$1X@6*k6=HTx?#gN=9qr8Mb$59142(c_NB6x6L>eb*E*7neLX|DY~VR+z(0wgMNA8y#R+)zXc_ z)l5wq8(Fol%w$N@p=ht*>eb~sdhp^cV;a!z2JIdy{53KuA{qBxAd22an|So$%e4=* z^Y1b;^2hUq@g_CVcqBXb8xUr9O4oj`+H^>(gH-!<*o$&!T6t6d#F2EcIn(;_PDmPs zX?o9EB7^uox)mO8E%$y~zh%wd%ZDS9^jfIEvp!DMaD*+Ra+9cknGpJQ_TzO4i^IA7 zcaEfTJ@KJFBI?{9qIBD8rG?inuGGrO2wvM2EvtH0#N%4l1D(XAq~S)%+oiIGZ*f4z z>yymrm|880o@<=tp;^x+dQi)#Y1`>4FVnX58dSGg&Ih0JPWEpPF5I*C*3;Z9K7UKU zK(5vG>z;kIT*%IT^x^LDHJ3Ep54N_KaZaqMXHBAwXYRdey({v}w#NDa>WK(8?H7#o zW<(1i4mDm5Rj4_Wv;yDqWhlN1f37u(!oOa$FTbiBPU?X0Dpu;9U0XF~WRi(g-%PdZ zb@d9nLpXOPC@)OexP435V@tI@E%Vp<8_kbD^gYghwwK)A@%qFDnu-l{$Kbpq zzJkfn^woOz7n_I~@#FU_+5|+IQf5HoJ|2oAbj@V4tMr2@8gmu01bgm^@`kzp4e@{H#0Go^??9^+=?1r(4V6x38Ubf!b)WkkWO@;p^2d z+%1N|Br^|}6Z@xyrB0+;#j~8^PUbdiyOus!vqd3`C=erB5!A}}_$C|un&W2VkenFe z&2>%H74hJYZUJwx(XH7c-FI9qV11;~e&H1L%`-0cL8`i0b%|yR*934yRF6iv9~OlS zecfwV&b+xN6Ex3B;_S+9&ATUB9i6PoGP})tc{;b5tA0~&>XYx4Gn>WSPnuctZ6FHJ z&rlc457r!{C5G{Qy4plPOf}SZRe7f|Pdw{A@fs1vj0eG%r2?}9VP`@A5|WTf;1F8?X`j;T1>a9w`K(LVA{?nQ|tuJrk>!FP2VjK8}@ zUr~G}KDGNq=Njwk>6c2hH&1=gByxrXuMQ7-(XYWow6xHfbBGDYZetTcEeqlmQ z5~aCqYeC(0`dT-Rb3zofhn;Gof&9=Xb+=eM=--BaoR;LgW9(^pB2ZI@!q(f-b^U|E zS8F4Nmv6s++aph-EIh(kAZoV(I1d^s$6r0-d`y@Lf0=_QR+K+tdiBUKvnUti%i1WK zSFX}eKTHzi)^lnqlCdu~Z+vnDj z-sx{{s^3LV{4#-;s=wfQrw2#gqLS(TNn6>5=E)fvx+dx^R(@k@?nhY{j_^IVeP9`- zV^Z{OL1(q{u_}+8ig3pK`R=+pR_W-(?562`1yTtkULv}7wF0>04$`_F&n=KFH@zt1 zebi~cmB1_46@9aKn=D#Z+~llUuLK=)y6d21FmsHa&}FJ!gBSO(C9I72iVnU#yGi?3 zoXFJ8r#hjFw=TN+>RuH60NGp!w`(_bWfezun|k#&t8D`+=Ofsfn5>-M9H;61JfB6& z?cZ@+_j7Gl-m5RC^uuyQ>1G~2KYb6kidi)MUiQK98nOz_R&&Ch$_+HkZq}q8Hvb#- z_ri%rv|9%G6$V25Xaw4E>Nj>@nN#*=2lSUeX*UK#LKxq1|6lxc-@$BqI)9O_-6cphpI2exdRphH zyi0Nh-PUWZsLx$DPZGne4)*co=v7%6yLgLn-649atpyuw3YggsQ-dlOk%rdGl6PNi z3m5NhFzI276Bnn&PaV15P@13LxLzWMW{VZaDZ{qWyAG8rnN0bp8+dU_q!r3&Cra)3x9RB+!KEF7gLd>C|?k}3e$4?!G)(91nBz@z<0-r&zqB;6# z&66vxpRRv}$L5u~P*WD?9baeR zvaWaswX{678S}KPO74#Q&Y5%d9TE56B_0jqqiwTgd>Wb0mKwj3c4LI{&LI-HrQ++^ zfKZ-c4nJk{8E~+DZn&YS_f);e#?PSz16jJ$Er36llmu*tY1eTXchp~|9{S37x#zNe zFDKpH#8lcm%U*qLD}@zuo5z%?47WWtvCD5TpqbI+Vc@Kn&#$Dayt&GP4o+@*_28hD zCu?zqavh8JOXVKc_7UJ#li;>cPy2F8WX&d>ZPzHTrmkI8ra92wy-IsK$(ABBdY;JV z$Ufz1D5~tbdc}#lv%=z60w+4vn%RXsGR=ZnFJ)HMe-aYJnXk{>P2axFq5a(`@u3uM zx07(7c$B|$%BIQRlQeWRy@7_=rY$6>bmT)`sS{+^I5tiIX z_1jCViXFnr0x}PxP9uKhYVV?%;rf`DvTjVsLwM9*H)s_z9wwQI?oQy;L&Nu3LiRABe4i0n?1RuA=#Bb>c2;Wco%Hp>gHx3m#)Hl*Q?s^zZ7n)$4Ap zZ{sxdqkd&UJ@W>9`tK>NdTyNZj$Fxz6X$%=xos6YvkRdMbDGMy~s+sA?eo5+uG`s;m!?PSc z=Xr;UaIW`BAAR!nq*IqRGJ;8bILq1eGh7yY!lN#gv!Z zhic5xyOhV|Pf6}SHg?TN{~@gaZ^@hM)QrGbYOGwc?)EBflUS=NvHZ@nR}WvHtGq&Y zv0Ssc`ss<>GhZSkEMY;WG=%s0YZ{-fn9y<&Hl6E7qNrbZ(WTMy-Ls#dQwo|Cef7x; zH|E*cx?bdaqvw2d5Bsi4=IuA=YiDF~2&Q#Za}#Uwu1+&NoxgM_h?9j)mVYx5jfeg& z^notFK(WvAIJ?orpjEjSyY>r?wYc+ck!1hP~+EHZwb^DT7+BG4J-}6|u_m8pdc0nA1KyIdQ_llgnXJVlJC? zAaci0wBP2JM`*uH0WaMwxyFJnSb%8~moi74ebQJDoz4>%1r{w7;{*+yw>#%XT$ob~GUpVaGbR&^?;%9Sa-HO%L7liz~F1ZVe^H)Z(t`=WbE z40rb7b_;sY-NI4larU0oburw+tNuDugQB|O^1BQ0ZrHkJr;-vS#WQz+OSl8b&3>jeU%ZVCXlq>3X(px;0jcG<>`DKcr%rVZ;!5Y z3(=dM3k<&FrXPAI1cs!kw1wx`wB~nAG&5O=In%F#HBOs0pTMzGo^Q6*ZmeS(iZz$0 zpKI>NA3R`QVmx-7)v3JD!cxsLipRX7Lt50~>%B)Z#H%b_2i2;pSwFc_HSq^19B3i- zGZ}s%_j~YhBs;Ed$+Q+ai+Ttbigjc&eE%{;1_j2yx7{$qQnuRr- zWEXTe-+PuINZix-&brsTcTZzoTQuML$pa&XmX3R545736!e`@s>r(vCVf}E%XWD=^ z?yXb9qqh9a>J`4lj8!u2=Cn7uJhG1wEvAP9$c9vrN9-9`gjUC|c=U+M$w4Vl>{!)f z=7}%`E|%ckY0a&i&O%a0zLR~{DQ+tdd(zr(lI_clJ7>zPyj5;TDSqVoKzV|I9U)Xz z%9>AOJ0W|owmn&thGu)r>C)qpc87<112^QK^qJ13X16j=l`!rQb@+Dov)kRYWBHY6 zFo+|8s=b}07;Y#KQ>H=7(Chot@tcNcs^Q_0`zLoQSzg?&W0F^AE5|VH?2))%S$Hg0 ztxQLt_12H=iB5g~!o4tgiTidU5Z|jtOG=-`t+k3CJEUQv$*!7BD|cvjzUmrzexc8r zI-;GOVK;W5{&-g_kCT=Tw{cq;dw-pBw#0&uVbDGLb!F<@obYI#x5|d2X0THwd(frf zFw1BAbr!VWKV7Ole?gy7qJiyfnsPpMs6cLcWZ`i(4-+&I4P(d`7?lpaOyvG-ye^cD zylrz|9{avpu~q$Sr`b~GEZ(vz3g^F|<-0a|3`RzVay`$m9ZHqx=y2NdS@p_x#(o*= zhb&cXbdMU3paW-WR6eU|S4)XO!LqG zUv{ftCE6g-zLU4>8Q(^(=e!hroflW!vaey(M)GP1Rau zm-YfWr`xQma#zAt(^>59U3*QFbej8oFW*Oj6<6mU)L8N0RuNx>Gkpr?F+BC~=z-=@ zu`a3BZHffNX_3KmpNvhFQp#7C@x}1d*0$}^=}5U68RiMR1X8o@#}9MJIXwhL1z+*+Y)Lx*F>W1s93BLJt!TUO7c|d77MT zWul9xa2c$+-KxSDz3{1EF2CyV1tRx+TDX$@fg6d6B0k#$6B9RC8D2$KJ9nPO+^t(X zA);6}u24IpcTwT%8lk?t@XeJi@~@;HD6+NO_yG3zZ#>M8Sab9efsiBQ%SLTq_Co7s z&Ok2nm+uQMHT%wI5+5=T?d92GawWXxm9ppO>g@cInNK6!U3;G`PID^@3Esx~qnN6c zSj$9UvmSUV5|;6fl*(c1@m1Q7`iVkp?E${~^Y2^Rb8FIrq`3n&38)UJ9s>ye#tagXdovV7yYtuF)Q7ds$4%kacz4#nwJlJobb3^lY! zm6bjI{{6PTN7N!7bAq9`TVJ>P){!MXejC^DvJptVsJ&B)uab9Yzy0wC?4fkG1gKP5 zx12jyN);*DdqDFBzTwuRf?M5n1}~toPw>k0uy0-4Ms=PZ4kjxO`}{40Jv7#J?#gw6 zXEA5-&BMLX8`ey|J24g;&wt_L?j% zfpO_xEl%J+fi0#aFnss)`piIGhCit+IEf z#dl0x@7KhwveFr(PqU682A>+9_(u8WRBo}Jd$RLf#S2oX%|f!~yw9wPaxp`~r<+bM z`U5w1UUMQyvB*)^1@|}-2QoI@-7)5|Igi@1O+_0gc!`q9Kv#nLX@Bd=7dkig7m@i_ z^zd)%ll|6r!Q<1}Z3ixW(a@TASrm?~f005XS$5d9k&kV7Owu%cE?k6m-^PkTDGKlG z)uY*kpLRU0Pduh(Gih&TDBklmi7Xq0ZT=f3pX@v=(3z(p^|D~*ysX1a|0;n+_UQ$; zO5wi5bDuw0tas&DJ!$Z<*DL7Z`bj>zV4UBMiHt@jsjJ@S_@yl!Hf8+H0dnWbs<`F>X7{Mwh}bsW-p1SIZPB{1stUl)5Xn8PnQ;Fk( zq}<`|GxWH^`}8St^)Rt|UvGD*!>V56)6rCSwzZBbAMbiK=e}u78*Lc+D<3;+z>7ig z9S50r2G0zU>W&&~a7N^Xyq3W86-Dp5^gV;xnBpnms729(`rs7&kT+1eHsnvZ`% zzm5Ia#8q7EAR)agk4=}xav>+sb7N`e7t3kMb(cF=j`d9q+ujPSaT|Er&2)AjooR#| zP5FZ@1hbC{?=HkrB^?!g6Ybkwmc_?v%vG7}BlE_UCoE!4irk51wwzZu zGk?<0_PDbj6M?1e>dMZsyE8Q^Z^e{Vchd-|XSMa0pJ$=OfXXMB`Ce*1pQP1bCVwLmp*PqEO~@}&vvp;3D5K{O7EcN zsn?-jRu+zWixC#`Np(p?!JL3kjNAc(TLlv(KWQ!S&WSnhyL^dmZ+U(BC2`9Q6H@ql z{(G|2^H(xY-*?HZp(R;zh%7i>sP7zOB}TVtjXW8Y(tmNip8?L_dww1`i1oEz%(h`0 zEQ9RqvWi^pusl(iRM)Wo;1(@X#6a+jSnOMMXz#7O#|OVRuKa=r`cm3D^2<*$^f%^;5{>hhYww)|>2 znsX=V(B1l`_a^lQn-zO2{bal3CJL3LudlS30H#?B7?AiOh zhFic;tiI$Z;oOWt8c~2cMKBR_wwUtUrkIDW>8P0Nt(NXE3z&GDJn*%f+~)o4330f7 z)k^%`NUxGB-@E=F0MkG$zi+tY^VzK$kN^N607*naRIMZhezBrDFW{#%uiGb&G~#9z+=D6V-8Ortrp-u}kM$YT@5Pl4A-{)+sE&WFDV_&G0I zQ<6~Rfeg4VURgyv$TCQ_>HP`Wc@U(%iNz1?Oe-BHopvMv)JFVs>#wY0?1J?_J2{0` zZyjZOeQ3F2W)_=Mv*9?XkWoScL}<6yaqyl0Y{c;$Y_l=4jR5%%eB^-D`C3w7uvfvK zDu{Rv5pyinA;5Lu^X68OTHb>7=l%H*x%G!GPrCRx)ubIs0Cf?6?GCWzFi0)vpkJ}H z4@(CQV&!w67+H4rjXx;EeR?P@p8y0RoZq~F*_XU>XnozYXMke3LWl~$B$g9kFo!%M zcqv7@i=>$-9uk>>5HWt6<=8^TS z{=;WSw~v2D0Y`&619%z-KnCnQ9uR>WfiC~(Z0)dL4&HhoYyUrzh}4jgNY(!zQ^26~ zf*b|-e?Iz_1#23&7q)d9Ifvi;=uMA0a?7RbEdx05^WXhf_YK@xS$Xa(Vj{V7XD4C-U)C@M81!k2JVenJG54W}oYPWG=^8#MI~uC4;TZcrlxI&uV! zg+0TM?Mj^e#NTYagIfdYSAG1d)u+J#X7HniNNV@<%a=OrH`w}zW9qt)S%1Xy8K?U6 zf+2wac;{Oe3e$Q|VJB`eFmP~wjt*NjA{b*}QNUQcXo+qH=w?R_|KV@HZ-t1KZ&xXfyLKdKeYV(u{YrKpZp%0Jp!$-DObS%?YRTK{U> z#wkxP2m<)6yWf6OvoU?#qFCgYL>e+61DMb;jLdX5GJB7RV2y>bW|4?)UMadbl1cA0 z9+3WY5O8QRM(VMTe+jPNhbabM+QzQ^Sl?X5LPr5b{oOPj9D3~yBaeIL|NCuBz3N-H ztN?rvFjoK?d>L@H#nt68%=!Zf;xrJ2bP~Rh`f>%3$auu-BP~dPPf|XTkk$s{RF|ID zLBQX-`{pD6@5g`eqf@PgKWo_LqA>=>dZ-&lxiK)tMBMACyGAV-fK5dj@z;b9itr?z zkZ8nz#z5SMnT6fh`11WD_gQ-9KaX;mO>J0izUc;_(HOdaxxRwl=O2VA%*bPjWwl1g zLIYM?eFlsMzsPFdmsCCj{-s*~xOc28-hiA$NRgga1M2u0iHuWydfpPi@lU?<*6E3* z6BDhu>y5D<%*OaXHsk{p$S&CXf`IWa_66q z+-Lr^H=u`psGj6+&-AhHtv^0;{|le_C|dnO)W?>7!3P)}@mGM0j8OsWAm9s>HHjp^ zuhu1(Is-1Lb|~I~sxCc#O@5pPr{|pu@H-!W$F;5I?D1wXc}&=wr?3GC!aVx_gy5$e z-N*fq7c309WcW+uE5 z)UMmYBr;}!f$4dr0Dk||Kl<*O$-O5g8nefYvB8=L>unIEez5LVOgjvsM~ zwjBKGr{e$-^hWP8@CRd1uAD>fsjs3ua|)BrqW$RSNA9=uuAfO>K0-v8|Nb8wxnKX8 zC((GO4S-;*-MRp<7OB-oq5uG@N_IKP2>dNsf3Am%OQ65;ki6hI`7ye(q| zFg!h{1n|3m|IUSpV(#`t7`uthkTza~^THFOYy=2ngT^AOU3jM?E?GM?pn! z8aVt{lQ$-Iv|-6u6P}J0vx)v^?gsrtAF##1{Th1@qdQq*V%=MD`_e06=az5m3K0RkH zz#rWE<2TK;c0W4Z+I5>X%^196*>6mg_5ie?=U^aUe5Y1Hz`9@{Cj+WP{F6s=a}^L$ zd>E$w$7Nz*5t!^Z(fR5ZhVJJGnEw8E003Nru<*7YA9<|ym+pmKCjkg6fUW$DQUKb= z&m;b6UIR{{PFs9UK+0mLz)$zDRRA@>kGqVr{;{Fj`X@~ur%L*U6TpAD_gzQ+_`aY0 z)A`8*e>TyWUrc>_mhgIr5B1S~O&B&%fZ9LC1LD3SSGl9P*r}>209*d)_yX5uN`tkJ zePHCiv#| zU-s5@DH%_s_9b=O)ICc`NNxf2=z+9%oNCiIlmPzdzMsBze(KPPnbw}0ttm1qZ=!XF z0S5t-Af8eKV)sor4XgL}DGmiH4MC_p2F!moLAY)g?!ws!fME*2Al*MGf&QoN0+s!t z`!+9o5z1+xc-fVp#>DXBv{%tN@j$fT;iR^z0A#`v7)S#m{tEn>Kn4LHHNd?z>mLsn z3f3-HiHFoVgc3sNifG2ElD;7^fd6*lM~}?3_8o5(v)B9KItReOkP&cFF88^^a!^ks zEYJBfGW_m`{tU<}q~On=!4I9uwKw2a&%>==0GWO)Gb|Ye1_mbqjgCR@ z$uFXD=oJHZElmOJnZ^9~{Mg9jY<}Srzy*%}g==E%==O0ltx;BANBnE#Kh(K^Am0>3 zyjF?DXBoR|TY<13;1z-h`NBkAIl05s?@%;4ZYBk_jQrwm)2_clE zP7Qp-b3@uTRjIP@sywS4WXpWKF$)Y#UpE5yqX&NCy19vi@0lp(kNKP7K*qpO=(WLW z8xx23AXK0x_$ZYCvfge5a$w)vgWZGGSP#PZtU#y&h`?6hr(PHRGf#oq8wq&5vRCqX zNHXeK0O`o#Z~xPGfo}dqzziM@m_GJq(8TOeb7j{~gPyoh0jLQt`rJygQ3Pd{o*_#q z_*Gu)|3z84 zYZ`FGPwVrnJr3A~D7_B;QH=0|EMQz*C)Pf?1Qgb>m6xy~69zF?c-7!t0l$(uZS=l& z5-7_A{JL|A^>NaTMgz3qA8F%9EW4R@JVH2?FwqOX>le z0yG>1I$ogcvmk3bzV4$fIA6SYN-3cb(z^8d08H2^ag0e|aC+7R@S%r){?_@{6}L|m zvx@`=M=tf}gVhJrc)4sRwcUs>Z;gRVrU2`h0TAUm`PqU*GS2U(55qgW&Vq~!ghQas zjTHP0T5a`R?CX3eHOBrcE?Hd-k%7j?!NhAgW`52Kz#uP9(T`~dO@$kjL{N|Q*MC#Qp+zEhyTi3gVhT(h9nQHydDMCHHY${kHLJ~yDs`V7u3hbJ)ezW z$$a&T8U{30fj#kmne{ zmL>vmydbNilGo=Q^3gQ=b=w*E3l~d7m{gsU2<2^KOCL!@$U?VkoCc=W1x#U>8`goA-oJCR>vJ8^rt;w zUgK1ownPAb_t-BiOcuLupKo4%TfFAKi~6Ag+KAg#}EB2!198?;5bb zo^A(3$D2qJ>0^F8BuEnM5=S9CttY*%CgQJ2LDqE~`oDcEimQ*Ic-eQLTsVTVIaeRzvDWQn#}H@o)*kW4o#fK(~d@K>m*LKQN6XfR8=#?(1e7`;SjG_8w*6C*VX> z0CDOri*xm(IKEG00XPA_pCANZP6Z7)7$}4gVg~Y{kEj7sBLJZ;RtNAMz}RR(BH%;5 z;tm9I*mQ6YokjV@kD&KwABJ6M0J8;(t6zb}%f1z~|5Yfbc7t3mcFGD^qZ;Uc;%`CM zykpBZ$Nl4-=%4E*om|%!7{JG0wvbGi36xv?I>4q1APxgEK~{mU>P6i#P_h20?C0Z3 zLAiH{#aASvt$#{r@%Y-U7^i9)NC3-U`yUsk8 z2b}4l|H!@Qe&}A92@AWs1v8}saaFK#zVq-I%(S0IcXIFO8)FSt|MdNtg{w+j!;^cq zl0-d43z~qm0$7&dke8$;!+tsNYsp1j-x?C(o1lGm;pWWx3kj%w6ZZtF9Mby6sXo;b zz^6|Bo0}F|FFrm|EG-f_I4V8F6!7DWzI0jp?^*>|GANlWh#-Etni$0EDzgKVslOcM zr$|5m^5TU*k~gF~7DWI4-IwndJ?S*-xnwPtv0 zuxrxF_T_7>L|vNS($(3SDItK5o&4n^bB)W7FSK5KJy1aA?`xTlFqB7>MCGHz&y+zH zBZwAW#pn}vLO&NkieLy#Ch^#ia`Kne0hFr{)&od^o?CeZ^dwMNGh!eS|6mg9{PQFq z%xnLXe}~qK|2uT-%+MR-?tVX9$0bA}_DusTJo~Vfe$F1|Nm)zd6bBj)VeQk}kKTi>`6xR!I zbwE&!5?JE{f>I{{z|a1ZQ3Uqe5lMnnTtJQ!EIiLFBreUoK+!dj*Mf0pNFx5#b($ce zixA5uf0gwanh(`pxa%>r9{y>x4o;!@vR9%wb{)#OE6{1~Lf`pwY*~lZyFOh7Yo;hD zD1a@y0Q@wNssll_FtF?MVG>dW_?k$n`2_fiSbVl>{Y7y=fm?4^B%*_Wkm~_ef2?E- z|G}wo&*^`4?PBv~$7dRcj~U~wek#ccVF1~KlC5|0;7%IwOGg3_%SfHk!fUs|mk$9# zM3RUBMpDOMmjFRs1k#}39`M+F2nzC^VnO6DCF=y(iHney9To9s@Jk0&`xAi8C)ct0 z#2V=DKMMNYkD#@C0(3BgFA2>dGQBk+Yp)OD>6`{}w;(8uzseTr1ZshS!Gr*AmXG;<*8Ln8c{ z{|+$7_@Nao8#1O0ib%-V4|pWQUUv5unGXc)%$uoXEw2Ux($5(Ea;Ah2GmDMeNwG8{$;9L zNczam0zNlpS;{e!JPUqDrt+9wu|DkY!shio}NCstl#{0~lz zo?C-K2bMe$Skr<*fdc-sQzbfZ)PsPXC+;wSg(z4(AOIeb9I`nBmcry9SbwVwPY`lS zJ&+IvOy&mUBLm@B!C~-cCXWJBTnE3LJo1~o7!+bX^xu>)(#|LyE(2~Pf;=x9EBWeh z-(VsEyk1-V=qIr_F$MdQ*P%0W6djsEudKh>F$h>ww*q^DQ{lfF;L|AJXM_U2KEtg) z=Vh~M52-dKM8MZj4yP5sm;wf+M(KJ0y57*k0H%OJ0gDDabSw;-Fos|aP`WOh=|#Y) zAR&2yFY5%5wf;YEH3C+S9f+SFRE5kPAhljSEeJjiDE_iSwZ4$3Xx2E)!+_vlS5=aC85|La${-#6djbgl zEkQ24Er|2gZ6w<{@4%l7b0DYkL}7pO>-Ar9z8%4VzxI?X{R-d#PgY%l)v{g+3MJQ&bv9ML6_gyIbe0>*)@Sy|WiHDC|2U}R!qJXg$wy-ePz!vs| zEsAAR*kx;r<%fUo)*VL(jltkY=m}2UY==H|K(q-e2|yqOQ^2AbhVmv*pao+}kSPJ` z!l5TpUym?wOd+}fRzi8XMVI&f$*e=plPCmvF^7rjfZY@p0&#X<3IG8-pZHMl`&Q}e zq&vP?zsz!7GWhvcsQRjPUkv!wHQ?6PfuFaA^|5R`f8G!+ZcUph-B;J05C}|$cyzHO7_k=0TvbA>E z7`y!7Z~lvKdO~POpA9MY;gkq!iGm#Z)K{P}Fs6aRG+<2=Ad3Q%urvXO9>|n1=modI z178Ay9MnS`>f>QNjvWv|1tDYJD}E1pKiSAH`}zp-PyiD}-8%s4BK~;?+!9zb;A-*! zR6c?g>N*RQBp=D6@(~a2^$aL=ulRr(n01n0TjvV+8C0Mc8-Y3&(qqZ_hkCf33iWDP z6M^n{HNe;HQ`apeDF5GSJApe6eJ372{OvH-q9`n^Eno@@Q&?DQ{IVwi|A16sJu#R- z2o|>)YjMrb|IUe`**HN&%huTC&;DOO_E-&uUeKu_7E3xWb9JQD2!5yzo0TC?2%tXt z(&+;spb2Z5Fs23LEE;AK4qX`Z;7lJ5T>*0H z>aQq*?6ch|SaX05$_s*OR7C8=0|{3u9Q@gCzC#hi-)E%Y@!f(iWPOW%q!dtVM)c&l%0p@45-m=H9; zdD(vFb2lhqsHJCW6Uka8hrcz{D+SkW0qmevN3k~6Su$p1xE-C0W)7x zZS_gr-~i~v$|R)0Ozxx}F6#t1C3>z8LL2O>TX;ffm=>C7p`?Czt8f=3bz#vDq`=P% z5aNSI6ebYqNkEjk4hU_RAuxnau0T->em)0(p=#y7BE4woRUR2YN8|-|3arCF+dZhh zc#Z-f$>-qIz^oyKq-|BQNrA813RRy1vI2f${rMWpwv>45tbd1q5AJ;(9z1eAFfolr zp}}qf0Tc@K;aB+A&RJs;ix0yDU;+ssyhX_fDR{dS`kygJjWM^t;1&S*C;#i8J!%Y= zjWNrBS-$&UzwLQX2o334l@2aFKazoT95Af8NK^spCVT6}9mvT#Q5DXiBt;1Dgiu(o z5SnHZ4m~(mqNFZL>cAQYXM7BShx_=w032A1F9bo{&JCA{e`s#@@J~Vzh}Q$jwc$Ji zgn?VlhmvB_B0%f&x{lEie^oc>d}@u8Jn4J})CBw)80F4Gor_*hfu9nK27a}EeZA{Q zLD$8%<#WXxKK#;~u)6C?FY|4b`X&bX1oYN=D<9WI>&~DDFB=Vb6Gp0)8bG>EmSK*1 zGBCHm0N?p*AM}JkScb7D?)+D8xew2?6z2gjNR|Fd0Gk8CXH`c}t^Tlj2IWB|`skro zZiqrCjE^4_riH>zp>$msB9ycV3WQLi>utS^5&)hY_&Wn?K9B->B5f}s;vcV>Ku`#9 zFjzD4P<2pJp8}E23%1kx5-??XvGgiG5d3xERA3asL|%V-3~4h|o4L2eE+PBq{V8i> z+&^BsGer2SL*I#iJbD9cVbNfj&sJY60B!Yy)Hg*0x0d+g1_-dN+76koqCaI1Bx(TS zf*R>>M*|t$0szaz zvKlAs#*j zd}8VA!CC<>lL}ukr2ujjA^D`fNFH1LY&S8a27pOheW|Yw{8D{dpU;PR7};?LkxK-6 zUT-87sN>{h7fC|b1$=z=3Vis=??Jh6Fhutw@J(3uWDtgwZ3Mh!i>@rbv3}TD6oAzL zkAHn0aTY7P0ij(&05Xw{*F(ztoLK~LbNJ!9fA^Ow04)Pp2C#hRuYBVbLPKt)?yL-0 z4fa9cuLCnt27Z|Iq5uFO07*naRQ??Jy0c{4$YmWj-R96kw;w=b;0eLB(6Ccz**WxG z2hNq~Q5(*6VN4$|{)3`ElCHpC_YsewVCBoC@(Nt3a>()w8V#U$A>#GG;NiX$tW?P- z#3a|S4wz8+!SzXAKRH?9)R>X5x`FLG3 zu&Vsvi2oMyd3{0{IeFBr*XI?_p8yn-lUUrl2eh_YbBvs%(qlQ*E@>mhVNIeqt50tu zB5XRshi9(9JuiPd+{`ZT#lr!4{*-IzY;!?`#RXCTmZK4@B{%9L7w~h3CLwX zUK8h}NGU}EngG&OG-&(Roe<0y&ipP#@I!UVJmSxvrcyU6%$U&t7SLuSP|Zi+R!PF8 z;IF9z1~@KHoD24@lk1X9@nA`uKn`&sP+q!5?ao%b4c@==;uf@NU)PRj)xj4)>K0utD>{+$OZ!VeDcDZq0XASeMKl@Zwzh`cOcY0Q-q3(79Hd&|Gx@xTz zIZ#qd3dEW`a?obP!1c=Ug>X_rk#0@O`h)z}fb!#$L#NyTbps(7pkXIa*a^_?MYQ+q z!^*4M_;T5SJ-dpTubjiu<83TGzJbZ}eQ;Ny*h<|u-Zvux0G}-8apx=FfwetXrgC4CfR_FS z$q=6bD}pSL7bo&W3tkECMF|hX);{&|dA%>|{~3487WX1{VCOJCc-uE*ObR(fb!|D3&mm9JbxTqJ_zdZpyS zQxPJl#B?fvXTYrikOpq*LO|uy`uGH5o~rfnD+l?Uxc6uhlXl5QzC{C$6Wjf@lJKD` zuE$r8z5z5bjYd(ZC-&-w^pFni*&O7lpYPGERR9Fg;@gK-8)M}Cvqp{Qg%wc+$g)4@ z_&U1`m;&Z!M*xdUf_(`8j>s z-^Azdc?7d(3Hwj4;qWtE9NHkv@RxeIz0pJpSYuv;pRY|0+|+s|M4(9})ThDD^#Qz3 zeSP%`FV@EuXz3n_ijS3%fL@l>im*byLxhh{T!y<|{SNe(4#|WbqyHK$`GYTCWRZL! z04q{m&)Q4<`YgB?thai7Z4C)%$YiS9P=ypKz#e4Lw?G1gF_>>yEHny~{Stj5IOn#J z04g^*f+m&NNVkX1QWx=u?nnSY*(^Y@)`-W_WWyF)I`uH%^ROX2z`;O5cFeT>Q3WV6 z$bOCp{r);OX-(oA&0-48Vj5;{0w-x5Uz=~>-j_Df=sWB=+sEZAB@Ul0abVS9(hPY8 z7Y04xlYy1bs6qr;eL@(T2#~Dj`k?BAl#7HB2{^qTIpIW-$&L%Y-a>ck*gpRywD5sL z-+{9)`)*ik(JZ{Qx60qogM0#dJ&P|HzqbPVWWtV~sFMf%z{7X`t0{@!A5!`jYqee# zirw8nUPB$%1QMuWf+50Ss<7DGY5+v&^-BT1qis|G{$_1`j=u(vQ{^;ih#V$D-Ed!} zo&@-@V@Dux8&e`8-9DGAi3n;J_UGdY9Z6XYz^ub3KcL-R12uugnMIsGe;!36bhbu; zXAU)R_Aqdt0UABRo-kN5sB4x2AL(&x+It}k?S1Z5KLDEB?d87A+vkUM3N^$RBKk!b(yIl&3i^S4 zb>lxd0RWbt6jg)(D4*U$l(Im8r-Q`cQx^Oq=#mP@14tmt4N3)oJyT6g!=Ud5jvo<((oJ>+-Ra38X6^g|cXr95W90MM6mkBtK?ePh<_X%~i`f zO)&mgA&w|*6c>UBrZ58jXkem0Ns|Vr4^QIs;Yobn07chf>FEv*p6+4)=^pm1lxP_f z+lL6;Bu_d&0IXR)R+AG!3eH@K4XzvE6YG%>xXsYVi7i*akH`8PHSyuA--7d3yv{$h zXDw_a0^b&1!drecS5MnjLwsW4WnR8f(|9eQfXnxXRG^Ltg7F)DeSd+pLqHnHfiSAj z^MFq=UoE+npx{iyV((-FR62CaG6B5gx7P(wjF0q&rPex-1Bky9Da*CMQ~7}K8o=@e z*+RrW(uuO_VV#cnXW-9|=}1tWZHEwB;xdTxQ0pDyymMpN^^}_|eL`JmH(~J1<&!vb z`6TWKq0x2Nb*hW~Py65Qb0r#l7Z}7sgf(F0inRr<%h%PBS!JrJFReQ~PeJk6mE%cW zfLa3(aJnSiv3NDU^6Ga2lQU=*{8A1-ZPzAp-&Ev2jCTzrq7MsW2ng$}miY{H6};nV zyCl(mL=s38zlpg3Rv`gI$#3|24YHOHY(yjEVx(!zWTY^d^%Z$>$3(Z z3X@oVzOC^)hLqlC1L+X`34>FYPvF$$Eu09~boWV52A7@cV*jb0w?hMgn-W(&5eQSK zdG3^|4yf~u_g!|5_c4@})zU6yLc%dRMEHcA!`;W;iT=Kq_?L79z{h#}*|Yf}k0i*4 zWGp`h^$_!b%;IC~4M05`rag9c6;d!nH=Wc9z#1#pA6!?31ZwVgD4UZ&zR%)B6N}-a zE!}>ZfV^}ufF1MB3$krUG76x!7I`Ai?0St=xYv3o~7f_~P z7d25A@#p%7kboRR1Kz3i;pZi*skith?FI7Ya$?t!LSBIkz?uC`oW87q`(HT)a=_lF zJGks*5BpDbaoN+J5b7*F__`wZk=6pDRlN>7}9R^4^_7i=F4<3F4 zPQLt~!c5NiXZ2-Vp8;QE`SWSJHv01t15m?vB*T1B$}_e^<|C2-5i5cC^~nUUL?K>4 zvJbdi?hXtffePm96u$u`tij%iCR)~@*YDT+`W4^bZL5iWtliwsf0`z))O?hKPfkL$3z$9>zMFGEwfYcy@Aw0dWg_C=lxbKxy za75TA3ZaJsr+V>T@iobbRRk`0Lg_Jn-t9(BJ>k z@RANImY;!dlX?3wu;;Bm;v>4++A|rb;k+2lM+Cj70EE}d`6WUK5fA`a*^Tsxz{m?_ zW!s=zyJZr{eFI?kL<38$0{wo8PPg1L=(l|oK!e$X3D6OLw&a%@@vnd|CmYp?V_8KA z$$nwE67i4qx~%lz(w5uTIW61SHyk~OknCJcYJXm#^ znlhSjPIMfWU;JG-_sZ`@Q50wt#y`1N6fhRqlY2&FzWDbBo&YRF1;B()%L~}Ge2>;Y zBAx?v;l@zVO$kq!nQ(CwAzmmb_i zae|L?t`hNgj>HY%KDZsJ5iMtp)nxGJRzm+x@~Jh}3gO}-{=mRF{yF$FAg5M89M`F` z7ZdSEYW?|U`RB?Zy~@9eEWNmbb)skiOtj7lis7%Ga+i@Fmsb}2$$brc?Fat{Oj?Vj zi2_p(J%HB352AedAFy%H-RPZq68&~Nv_&0Jkz6$&J3ik}1M;yJT?VnKr%S>|W{=>Z z>wXxR+l`if5ohw~t{T(NAInwKcl{^Kf(n3@x%p|34|4JI>+anw3yojZ-0&JXKA%7b zQePxX6SO)LNG%EEdS8=(8X2(0VE04=i%pAO-(j;~1$pV55B${(`K1bA8%F_v*zr?l z=g!YXYhLM9140nti6>6u;KAKB)?3x1iGmbRRsD6~hjUrIH7b}_=U#OD*>enxlOz+f}O7c-xqPid`|`u(C#~I^d0E% z)v%Xejfw9zSiH4?=_ejR^NSClyzkRkzvpAl3Mw)&9mz6Bu`K%^u;#eMivs++^- zss&hx9?JQ}x&0(0KqTlNNCHtEWyt`u4U7GgO%Mp1Js#KR$UZ6)eCqNX_}lgvKqAKz zKqKjZ3Gi#cFLeM|dEx+e+pF*okKTi)E<8*aq>FBF(~{41Dy_(9P9pGNzhyU}^-DU|K?NGJ?! zeIBx28wcQtKH)>VUWSw3{v$9`GiX{Hqx|~)d~)~8TfdDHfnuji!41lTezDWlfnNjfpS=1_c-<@Ch_~Vg008GMoW)n4dIa}8@KJp6 z@lRrY7h(TpyRd)%BD8xDJ6Q()aMG6=@z-_M62XXwzjKh|`|`>#1;5_k^JulT9H3A} zpl%|Vq>Lt^gwT-vOj4fvDRDiJ%P1Coy+>HHgiH48@A0tNmb;oDGB57xu-=2uSD3qWA#3}}<$iY1? z^Vv3$n79v(8kalyOB>gXfUondUvR_{U==V#sdnIV;5bU=dMC0{0 zV*Xzin0ew6%zfzr;KZlV{?wi5o;r!%#+ne*Lmh_?AAKWMuYC*5)QtH0$?%?u!+bK4 zN57y$1^0~20k493P~UW5OAZD;&)GNX%7s5Buz`)&%~u;g8>g=ggBFM&PgFnvctQdy zRFJ1e;pP5x0d#ua>X)Iv4JLpL_!{(jIoWr6CIZN7!NvL_1;2Dg1%3fn0{qyKN2O+? zh0FIJ#pU~t;>I_=9e`H}kDq)5pZUUFc;Jy`OwERbH9I z+% zK3|^RLjXMl_y#tN?MGi)?q~kKuub@5PCS?!u|{FW~UuCG6QVhi0=#)Jm=VhhE1; z8PsYSNY0}!;xBop&o=-)Tq?i9FGP#$*Rg`}MOfQtvW3Jqc$xSO#+vvtM91sSZP4J4 z>LZ?Gby?kN-yR3_DJX>20?fC(5sg=VCw5H~cxO>yb7K={o>{|Fr_bYSPn|{AQS!XL zRd3^(MTcIBw_X230DzU%v-rYS?!!NR^*(&^!9U01t|qR!YF}u3 zj3cD&g(5aeBL19r;wmU&$idG9$)v(v(8O_mg~SkyLU`e*ZWjOnI?2aL<$XI+JX-pM z2$c1YWg&G7c_Sw{AQA+{ma1zc_f*yAh|nj(X20~Y4*<=@SzNVe0k6L1DB2qxoIAgP z(<>V|y|Rj4Ny#g@lDG1(|E>rj0^Nq|mXd((Mj`YHLU?#LSZ}!)WIYKmQh7f@WC{gz zo-x435a)nNzywz=>&i?5)&RRF3M@?&DEkiUopOM$?`r+{TK~Rg9jR?X4%7{J!fpz7~rAUA+q{X>ic*C_f;0@Q_fLq>r8~*t3eh+8yS4o?ONBmP@G0+)A{vuQr z1G8?w?4e)wKxEOdlaS#(5TJuW0%S#yvN`~rkE^dYD-##@Nr4?|=eDWZHTaY5vSYp; zRW(4;`h;u%l30r)pdTde8S=h(b7l%hmuB(u=0WtkU97HkaOOfAE9;x+^aE=s0`N#H z_;ZcmDY`n~$JW=V%V_}rCF#&mW5Q$A;Mscs!YAb9o(e&SV-v-B032kL11QE(@<6P< zy2o=(i@g&KG_1G!{ow069?P!*`mms$7$}#6o+k<+>=)(_2}o#0|P$IS-e%LGSO#q2B{Gx+Mr5SQs>m z2KMh=z>5y=g6lb~b$VFY=wM}|i~qm9FORb9D(n57TeqsZyQ;gZx;p93Kn9W!AefFA zG$@!xoWS?uywv4W`?;3$6cBhKEbT0wpyCkLdQasc(?WfyU=lz;7h(b=gcp${BoN48 zI^7w1uCDQp=X-ygv-kde-`?jARn?iiyVvcy=j?sH{Y}5$-e;e4&uMk?68PmJo|)>~ zg*~rhxluzggK##gyZr^l;$L1vhP*s|4@g$)dIWYpkN5W$!08CpF3W)3o9ozGA48{; zW2M>dyTadV%CATN975Oni#jBU!9B`;y`>J3XvN1qW|gl!Q7 z*)(dWz^_Jk63qShcJ_GJJOO@7UZGE*D>*t{V5QZ8ESEEcu?#cQn{oEsG^CSbx!uJ= zvx9|33(ZbRpvb(Q;SAh6*S{HB8C{@M%^CnH7ZPj8BsZhHpY)d(8r+tX?-a<)<-uaT zXY2SF&YY;DRuil?+vRorYS2e3|B4850<{A@%AB*a0F=a_2d#}L_0)>L12kuW20kUY z`SA~rI;Xp2$mo$?2>tgUg2LIsks^X_-a)I~M7!HcfS$q6318ZmIiDf;%Z{W@r}D-h zKZ57w>b@ZlJwl5IDqwY>5RnQ%Od#+?5c;p`!?(>v%OJUYdJvAWWDMlU(QN~(tqzVY z6?mGc)v$GZ3}XiSWN=;u?)K=#xXr!L#xxl%4#>6aZN5 zbg?yjA3rPxaWJh*+!=v^}EUQcz3&QVl6=8_9?KdX}8yLX<4`dEEn<%{dXPG1M8 zkci=OU!iBG+eWM1K)c&Qx7$r7u0CJ33C=(a`?9P&jq=mw^5bvyEfb9OftKM1Q{Q*s z6u{`{t6MJeRh{3bZ}D{lQq|pj5$Mf=U;%!8Lz}-{eFKVmEO^y-q+a5o z0<5pUXYO3BU&(-NyOyxJ`BvQY@1MjIhfe~XX;OvzSSQ9ZOxA1IJy}P6 z^Eg(zIhMP{?aj?j7buqefElO!?lwhIUJ(P(Qm)r2lEpD} zvKfqYY>yTH2>h;1iZq}>AAz6q$mI^=_POL(=?a#cg5yi8$WX&XJ;Ubu7|xm)$N1(+ zEO!N~-5iUp9F2CT$RYO&L6LGHu(&c%SebbrxO0XKz@}OaXHM2JSx3)eqtB&wl_%k1nE)?RehVFU7-;K7hINi{pxgyat+`Rdl)?eeRza zX@uA{MGUFq7*#&)RRWVg9H?oAz@SqgHejh7eSLeDAAGIq!3_fu0HMDylPSLsx#ACR zhqfj3hYJ0j-(2n_NKFw*h((SZD^0<2qYcO^1cFWVIyTkEuxql8iLDb@=?GTx97~-X zjaE0DB+$(Td=pR&8RjNxn5ox`QGd0GPB*N^Cs+D=f!<8xQ|I++nxC5X6WIN>Z_9+g zzT$5M_EGEkNUylAh@gI?7v*H{QeK$#AW*>;ohT4&-8zZs>2Zh%mgRO#o!LaI-9e+X zigu?}0p2QL2g2)nT%M{6r0Id57dG*)6XE*^J_#U20Fd*UAUZ|?o^=;3-wRbhBM=%} zRsXq>p>)vTX7EO%xFrwv83_Em&Y078Ns0jRCtR$1w(Awbd#|{TS?(*YRzeUQ>VCpPc%aF;JKL z%Jl_L1nh$iD0QDiQg)<9_K;8{=^PkwEAN=^iDAn0Utaj~&8p(IHtVb)(Z z_A!vX9U$N)`tjR&XzSAtVfIOng$y$|&cj@=(rja?A&|ue0AR9S!=`!-vy*k~-ZF_s zSI`77E`rTjacASHW~+EmM+InmUh;Eo2VL2BVD>o=KggtSP%G*^d2A>FIA<%cgbWM7 z3%AI^wI^b5TDo(SffN*kOL2rL0bgbxN?EQw6OXYo42KBeFAT8aEG$?}74U&RL zw{$m1gM`xEjUY&)bc1wC*S#0`z3=zE`}|{%anAYAKKmI?S3J0!*L}@-&3Ui2SnHFJ zIze05B*A3o0l%_i;{D`NW*-^LyW=Vss`GCx$0`;d8#Ti(6xMOmZQM1NAqTTeH1}u4 zr(dAw^qo#mUc}o?Mrf%w^j>XNwXKm`Z4Eu-*DrakB0ai}B#`Ie&`fO8N9-9eyNXcV zud<4j?4N>noq@mDj*rB3G-<_+b4dS@HfKM0?xYLnTj{iVOS^xwcQM%||BlCHdBiy$ zEv;8+omA{Io3u4v>@mgr96@S52j65{BnN{__7>Qx`QT3;iAc|`4@eZ zVmlyI4+ivcSPY7mDrcy~lHpII^vp*b zG###GZ70r{k@j9y)XS3!9TD#EIif(0JMcH{8I5)!9R-dm+CO1&hD(O4Rw#==B=l{K zzQ#Zp^*l`o7=84`eyroJXRgs>wmkKHY-*jK^e*bDQ@GK1$xIzKk#iQ!sFq5)4yPb9+X%G*Ps; z(KypbpYBPZ7)6XZsHUXJ7`EdHi#ebU{#zLIfnV1hektDjx_=qg%zD->c(B^ zg40~D0{w`?+|>uq=I6^7Pstdrt!UG`TRdO6JtEhv?}({0Ur;=)2M^rIjNviYIttPw z9=PhZrqyK=Oln@VqVCQsLEo}Pd4rMlbTPcZW_XHD;NiV%`GV5;%{vN@-f6$fhs2p&`0A4d>LJOd8hx+lTr!HwyprgL zn!7BmU7ygXfBHuy!~{*9pfs0z%;S4hjr^(@T;cK(YJLfwAbU@7S@H5xu4V4@;b`jd zx**g?V7eceWq)Z;LTCyMw!lOXKY=qf(qwz9btKDQH^UkCkuFHp)79W!!DEdlB(M(F zgw`-s)WzmC+57xSXW}L*Hdi)mDru|{a^!)+B_YPETO)hqVQeb#;JJ+-`3x7WU8ccaMa7Cs*)(Wj&dSsUmr?!9@QA_g>>(kOz`jVETl1+p{-hh5hD^w^+Q zdqN2Fm5jyRNg~I+7IxhXe$??VB~K{_s!JKJduGe9Ttj4(5N8SpTBevHL*2|jzP#-H zPzX)2D|f3Gcl#3?8=i;QNnqjH!h&FjYgRiW@8|l~m{p$6jPb5Ak>l7qpszj_64gW) zd?)CuZjBkXvEVw3f!}Eadg54tAGmQ6-NeJ}M;lA#?Bhe$l()(@U9A!wdX6 zbQdWq3hPG^K4$AoZMV$zy;e6T?J|GUN*xx_9=z+LjjU;v+R}H@gc6^8q_UOTNcfs7 z#S7C%K#`@Ft$ZU*`j_|t-IM`0G?oH6g$H+%bqg`N`r#1|_jSG;zGaITq^z9V6nz`3 zOWLTks+Rc~Jo{K0vvY`e@d%cKgft0V#4r*GN5zxsrYVfg{ zFBu}n;E1}azRfsZ^AvaRl*j9@{={I>o=WB~*slTG;pUXwfGM6ix3 zb*Xa(VhmgwH_UHYcTFEUjkEFiV^;P^2+N{2?KK@mAbp=BBgeM#wfq$3Yx8)9e-F?3 z(eRz?_k8|mUf2vdE#Wu=<2s``hyz0pbNA*E!k1PEw%cOkx4!Pw(tlU5ZtG8ck{AAC z?*~E`40ghAe@{x`>3(TFS!>vX*QJ{UL~^Gm{9m0>(n)k<1=njAcNI}AT%XeK?II4( zzrP*`Oz`cdP+V3JC4ahz@gYKgwW`PQEm^J2I=_ZT{>8cs560TEC1W93yZIDsjwcFl z(0lF;-x{Vc>?HX;iDsn2egd;bXQTf$(Fy6L$!Hg?avG2py6{*N8vK* zO(db2LtXr`F&qg*()@AkLiTsU=Yw6Lj0Fdt;fKTfvN)J@TBF5p9-eLpgwMOAR+AK8 zv=S^e%uF$~H@H|4!}fv*bYL(?49`zL?(aCQp$Z;#`tJ{U@OiTLPk1FxsuNPmSex9IvgZysmA;|$HPOcJ}lJma%=jZGc_;fT+ zbwl$E8$a#vc7F=){P7T?lM11tUC(EU2t!1fp1d&*d#}U$K&CL+M%#U{s7bBfE2lu; z?C3eKlgsvRVRaG>bq$^e2yqxD2q;Y!22-}LS2nd8#4YZ>+f2bfv@GUPbl@vbFAydf&Cx__Fsun!CR;?a*A_lWWI9%B6AzdlU#`E$hBH7CBbe;O*4Wsxxdo@Zuo%hKAHVfN}pQ- z)pOaa)8Y2D<(qfPif3~m%uOsM4z8;{=KAgi({M${VTM0~s~O3jvqgA<8YMuB^Y~FM zLV24yH65~%8CT~Jo)%8`w#v7R=*Ki-(H}xBiNthUj@-lKBCb_$mk_tS^Pt@->T!ucXv_iXXx!l7-@?L1w zb>tk*avyidgukdFjw2)#Vt|s%FREX0JurDA$9{%8A({ zYo>G2d>?snMKTxGJU}ECAUM|9#UrpiAl9Eix<_Ix40rV|5)Z#J!hILoyN!shLfI(QNg|8K?(?@m^Be;pUW3QexXyAmxmCOQi_GIyYJ2c zi_zuioaKNrk|c>U;VKksS91RXpF`HzKCF1lJ8O;XE&iHe0Vo0>st5<3&hT zblO&7r^MN#jR!q}F@*Et?BC!W)NF8?>kD7n?gmy1%fMHx9=Zt_dZ9{R8UAXEPwzQp zQTK5Xw=W|S zq-hhRT`K_q|__`@L$+6NaeRT$m5zB2Rs^uzW=^qHUV{V^{(&6O#V(?&lXi zB=Rg`Z%vh=$aIM)F)S9HHE6%#pWZ!Jy%rHKDI9A1G>}Nb^o6sAqn;=1$!IxD3H^p`v>)Q5FX7f#E~}sMAt7f!71zZ-|7lyGep@o-l7+t@I0w}NrNYf^0-x_ zcu@J%jJDn}{?Sr3(uv2mvg_VhlU<4W@uTnuuSNZtFw&lKh3=QO>QK&o%3aL1C}~37 zZWGSgBpkK(QQY`euNL<^!Uw%ma*fYbKvb}UV__e`*Ii6NUm)cBQC!_dhy4b=gG{Gi zbS$NY58N5-1Wx*^A2zCbu8h&e0sC4|^GivDUT^sat2&z5GOgZ|xu2g=MO>D>+36qG z|H$C&qtGUe)%Ek8g~iJj7{W7~>ruoU&QR>hT{5`H{>C%I(o}IHex>7463+70ip#`fa*Kl zna`6@?!FTuEeaFtU?x`{MQ=VgZMy8@g zg62&Lv0RPZk4vj_`-IjnqhGR(bx$*|gQVgM#e{uUTuYRt zpu@`Ll2nxuG+E=fY-jv$=U2tCo;k0IMaa&cJj8MC+A|#5is(djYPR%YL`wR`-jgEaZ|dAqz-b+a`2$R2B(^Q{Kszo*$P`~`$CdgWca zJ_?5PSD8T&RNIjE-q-QmfBBlbp(My4_>MiBZdVbJ>-8R9k<$g;9=kQ*#v;>DdOI_f z^RQmCN)6T@%~ZKm1&{JJevChlGU~4DeZe+MOd1@0SB|HVh#n|Tw2IuhnwNe#D;p{p zXe#LU8@FTiP|kRBQxt}o`LD4^H?9%tK4MXPR7ajCE6o<_%(yfyR=G}Zo>%Q2QBb`| zE_dnKm%$ zE`ztudAZ_J6hZRRF1}6eXdeTW{~f`A zk2{X29w&Y;&tyB38PF3Dc`2O)WJFg8I?1x5kv@f^9mSUgURj7(UjDT9Ykl|Z>wLz# z#)iVkXx^^6G#vRP_pa$mw(jV+GpA&3o^S*d>;;F~J0EGe^rn8AZ6!^GKBz3eT55Nu zb*x}U8gK2+bnX-qK^54z#Qa*ZpRVjKhWe_TjS4=i9Q!Fb9$f?q^x8k07GnWS(|J#- zCiyQvT7NSM*v*snO6=`?Z1!8#EV;XFW&3jWZMo`ccNF%z-tQ01V`Z2r-_TsUc4yU7 z;Spi4_xv?W-qAAAT4Rv2t?3KIU}mC(i3bFiF$&IZGN7F;MpLg5WRh)io7y|a^ZM{n zo2`xVAu!2!BS0^IL(#CdDJ&?`cQV2chuDjnn;~%&RDYpc(RH*oHJ%Hce?PvDSomG@ zhfn7R(jRZN7NfOU+o<_T6bp(N2R6Qz<=bKKB8Muf1id-q;b{(8-AXwPK&Y!yms$J0jn z39meX{tPi*be3F>7p;{3!3(>x(CC>j!~rf3b*4fY+YK89A6@S!x{!B8U38|fCtN+_ ziA4;uM)|=cj|cZ`%SD1>+CMb1Z*zVK=k*Lim{&?EMn^o02dH4b@;JcJ_MzY>(ZO;DmAd~7W~ zn&f8;|B*$R%0B3Z)$pT2Bok3 z`&{1Ls5BG4AVXo;^CouAi14Q}(j~p#L6b)xjcoYsg|hFeukJMi<0F}GC2pP@GOq$K z0trogA6nnJFhh9e z$c{tfT^<+xRZ&%m*EvCg|1j_2LmzTZKgOu+jx-Uq%jk|QoiuIUPT03DIU0j9p+VbY z1K~V3nx>10Y~pdHmbbR@7jH6#+7``8=;D*q)h+eR-~53CFiyA~oV5NI!2E*XB9T-FTAx0oZ)^=7*;DH13QwQ)&v- zcAY=VRi84PyX6{mHs==Dr_dnoZis6MX}B-nIm?UwdDovT*1j~bAbOHEB;l%PB%uHm zlU{3mqz?%r^!~4xuRBxTe+s)6Awjs;lrm+Oae?j3Zf47eajy!^FdnJkAk-|kl~$5= z)pbxxqU*%KzPRj3CK}yL77fma{b*V?)`M^N)vOSLnz1RKQL7=+dmf<_C^&x{4@4wi zysulR%3QW4!S>_o@F7N82dxH=E^c+Uy^=oChK+;Hghn10XUhipNxS&q&M)rT;ST+* zP^+Cq9a64ZGtv_Qcl6cmaW*A9EtYDet|YBAF_tTzE7fz>pX`JMIkow`BmH3aVq{xb zaF0#K0begqU6sr~0rd)dLpG$Jy8Rbnh4!p%_zt^+z=nWl-P464#Bko2X zB9{;ww%YFN@E+S2oSs->&sBS*Wd^5|B=HheTIRSt9*UXCGQ|L1%Ju}7NsxyOi;pTk za2D3^iIn){jsUcUrK_(E7laL@zRWiV3A*X8i_2^h3Noz=3mOthKai5C8s3^8%*Q9? zt_}GhIYpNcFFS=Z{~OrK(HIsF#1iypOs!Be8LSKo!bR1jgcUz?g>%uu)$Yb1A>SD| zDqhO!7X3ETb?PjJ)_O%rm`pyK@>r5SWvxBxL-uPA7UZAG8?Ckdtdyqv_R`W5<7PkR zH(r_?^Mpoq9YwvkGk(3zim0)y4F8xwnWa5`o{xEqrmP1Jox7BOD*d#bR?s>ax^Jg- ze+60X)lLew5s5hoBC-wXE7Q!8ST8cf^UU(mI<#{fOMr zULEW|(bGrV8LN%dZ`)r43yV?kdWLE1?4*U~sLz$nm+e&#WXMi-V|6_8c{X{>9MO?5 zQS}iKoZ(&5ky^FinUxLB^Y$4=K5QVv%+Yy%L{4Y+BhM54%JsbcB~o-%4)o= zjr)X8+SI8fd^~~>A|W|>`&CyQvU8D`A1QOaVZ5R#vOlpN{R(BB4z1*!=W$DiVcYV3 zY>YSvEt&6T~mc+id8x_;W2X7q31ilKe8bI*qxM>hf65`!9b43 zg%l9#5!l7z8vzSMC-mw=>ZG1ZIxpp{f#r8dPiSOlyK=i>z~kfIyP7qXs#}44Q)F72 z|7KKBRmb}+nIokfF#;A=`sxmO^J<{4^>CWbgi9&-^a|7{$Hr z1_k4}S8xh}Bfo3l$kvTE^$~{!jl`Y_wRAB1#zYOm_t6UO8fbks#u21M!hYC$JbMwD zCA1c1`R*+gbly@5Oa`B3=%>~Vl^?RgN&JYsf^NNUU(4g#Q1hsg4_jD?-@)Q^9yCoG zZ`eoN@YLOu;{(klZm+<+bD7S!Y)2K(jw%{q+ILbLjszAj$-RHgym_0;OJHh4NtM;{ z>Li%h9B0da{#Uv#zKzN<%jsGoa^gfh`XI#>w+Xh3CV7gb{)hCH753#3IN5V)8Vv7# zUUJmu%XEU;Hg3q8wgd7~R&YU^r~U*aj(ew6YOgKFxIKOF2GM@&E@!Kty{yO|W1GHg zDfOB?pmquyYg)`){FKT8>&U8(NVE6At1PeLo3dy!6-JMg5y#UGqy0qvD5d$*_;hYE z&r{LitwKFvi8ujDklz4-j&*>Sv0CLpv|gxTI@Wn3N%OWj?gT^aRv*&KfNnWF#vy$T zBu~8J!l21J!(X@Uu-_Dz3*~7yS%x>ctUcvvBC_MF*89XW*X;J8|Iy}w;oQ$~c-(0; z-MJYq(%N8yW1YDxp7l6IUA2czvYCh_PE*ynOSSH!?0)imXr5S~ZlIZzLDtd$8=G@$ zkK9y&+ZvXAM)W-o-h(4a%?D%O^$84iS6@b4s?jH$PC*rME@VJ4QDw zPN(+O7UsQEyiImYLl(<6CU?J6=R|U69J-AA3|an~d+@Pn=Jhlt#0aoi7Je6VDE)jZ z)2%^1d)@?<1|<(pz!+mh0&>ctZy3ZEvo@VbL7d8aGpTCM4eRNm?m(atZ&Xhvh5!MS`d_-4%0 zd#5v76k__uB}EdxTn)QD0xI7zkAFGgQ%VCf_e0(s!E{oaA?97KKE1 z+lm{Ow=xcv9ND|xSf8>fkZK9fhMLIT=gyz-La|4jPoU=TGUeIeM(t1j_;u@;p5OiL zM7P|b;z9J4q_a%kKt|Q}TxRImj%##1dCH1Cv9eW`-?3#gS1{ok4HtzJjDM`w8SeZ$ z>^xRz`o!AYZ!hV6Be$RtA)=;sIh^DorP}3@62mh5q<@gR^A^LbOM=hLdS_19i`n?) zCKX&*4Qp?i8@PV2m`u!w-q^b9nOqPZfgzZW8@BH*9yZ{5WZSUit)VH%6)4ghW;@>~ zRE3h}XhXK!bhc^ASP*e3IDg_^x?OQSD>qD}e`o@$ci_o;aM4?7*Ayz{A)TzFN83oBk9#d~%*E|coRI!N+OsWrGX&$mwzI@Uuix>}qQbRS`Xp3uW* zjVmzx5S9p+4vVr zS@4KU(65huq?=ERkxXllIwL?2#>V>2WM@2RV&X|4k>_ujA8V<3FA?IAS(pzdnyr@o zYv$qxQ5BDzkt5>6tp)~buPo~`LsMJUEJHZd`vzB|jd;;~+S-LedL(u>+gzh@?nC~Gig-Mu zkrrjP3Qef~4d3;l3v+8u(sR?%<_hI@55_9nxuF;QoXy^^o7}T05Kwct#P06BScZFGfRAIWDkBH>B-f_ zt=Lw=!#47sZDRO&EiD4!FPEnW*?68$cAc&Sf^gh7PP84HYDSPE8*Ax&;e=g@zfr;S zMAQ(s*5XCcQiqQ_TAHG;6WFx z$mm7T5%?Z$htX-t!_%h(`aVO3wHXPI$%IzT7&RlodS5iTy~6c;LO$)0M&(O>y}fF= zN(Ar8!0prur`A2CUS?AquAs!@Ef}f&8wPRyGW@8qg3AK;rw?A)_^3>Ai{iPTD*k>p za+QV!-+Xsg*Z$XV&b?@64<>D=U%nn=OOga&P}$lTGh%JDMP$S@nF!siu)JePi9Zu5^%X8m4tLQhy@q_WIAAAF0Bu9t+j{ zIwG(pXw{~-dN#?>iSJJx5Img5_?ZB)QjTJlK$7kn6|n}lrLx*%eu#|gu%Iwo>fO*g ztS$2x^r~`?;jHA6Cr0&|?nldbvsa}qHod*aO4Wh^WhrnhMkk- z%_uruAOzuPzuUH}CNNZzK*jfbF)yEjJ`UZQwvzt&R9q>L72EJa5L}CiX-$$ejVlYR zEj67}JLH?S6iX?|C&O3K(*`z-bdK#fAvU}1aW^e|SY2$^;tghhV_s;c)maFqzUMON zwHOD>OKPlju=j9ZS<`tz-iIbUwcsdlJ|&2AK2PN9c;|&{atTX0E=AK_8@Lt&^-XKI z)b*9SV?x=e3w$1D-uiwmzQTd}aH+qWn%?71D$lXxlz^&}2gK*Yvq}=7=1Si% z91@<%*eax#y}t~=!T7+o1r`}QrG&gryU%|$A`rsG25X=(33hs0f;uLnnc=+nf) zi2d{4h&Jz_*7e{{9`c5VKp}ya;&K$}l}tQrk|J@fr^DCCSG=ra)sX6vxFit%RBUy! zJP2lSHku|-fV!}e#y5c5hL2~At}NVIfbmEY1%*VLv6<6nMxP83J1$m&^hECgdA4`)h(ZH@+ zpdwU5?YA3?D+dclO$s>&eOY+Jo9AxMdf26|KijSE+Qg>1@`tz%ox4crlDH(|*qU6w zgZV3addM?g6wtz6TRDwAltUeZYpK5e&hs+3j-WN{bYHHOE^`1sJm89`Y*Xk0`lZwN zqc1yQ6Bc|dE_+g0VMxz9IX+I-Qjc!8b)Dsotj~9}8q^#`W}Qy=c^5*Btn(_Tru|P& z%_X}wch!Sy^tS;lK_yL8@!N(}uGg-wlv()KX5NMJCB z7b7Xp2UUN?g+T%D*Uy|@8|NsI7mJCra4L5#kJ2)dGh3BfRr9LzHVH4kIXt*BpW4pr z(|sRscR>dsC~C;=Q1M5!oTz=sb~dK+F`|#Rb`m$N;-ygXyEqT+pJ?v7;xJ|U-JajR zC96^n_`brqn4R*%Jh1NwWq{qo$)=ro`_8LHJ2!vzXP@<@yh+{aS$xr05irX9BNObwqa4 zF>08NF{u!lv!e5_{v06t2n&5ObvQ&wbk!2 zi1yYy%@ths8Ij$ggqZGRJTp}!ja$S4WM~YMBJk`d@%#kux9_p;o#+`8Ia813lE;1b z7TO|4vPC`w7Hc1q-Z|vQNpJjYV@7WLLwLfnX_t|q z*WzK*=(>!(WxrGl!;v{NzyB6K85wnqdETUy@fu zDI$k4FiY2vSP4ODDzqJA_40uN3t4?c3*xKBrd0kzIblz}Na$J|->my91!gJ462B-T z4V2D11d2|2B_HT%@3CmLNsO30+vzc@LX4n=>q`Hy!{GVN^XGb@q(IbC3p^E?7$$B_ zehL!jNe1m6hx4YHz{FO^^U!NQ7Q*rCk9(YFPi07(+{s#wX26O6CTNrnXQT2oab8&F z&|R+pPvxF$_!#^=pHsFqGysMzx!cYPnzdyj09x-Q=4lHc>q zRCV+Al^9(cac=-D_09*WdVMLFVyzZW->=9o1WF3lKh%vWy$Vdju}<)#RpLbGN?Q@{$6Kp|5rt?a8U z>ti&e5JPm&MP-}9*I?D`x>33g^E7=`*=h2A&l6U(_+(>t*u!*+Atoel_(Hg#L(^5g zj_g<}v@8$jqbBFLNNTiPnkmB2pRF16PR?<-0kk-1cO}dZO)_B=HDoRLeXr*ZVm!$S z`(Ua2AEb;1W6I5A7?X1EzV>+x$Bq2?jR`8Ez+`@8%_<{;h{=YI&z+`7vPc<|2!S{` zifb!{r>~;ZT6oW%40oQPo;xZZY+;JQx>I09mafNjbSo!RjXltio~@w6T;L`cA{ueN zW4bZzY6|0;8C1iSZsVl+Vdgz(B5tm9arvHX zU!<6VjiN zleoa~YjG=N!?~X3>wZ;_)km?oaQwZ!)s4`50c6iKC7{z1k5DOzOBp;>elR5&J;#$4 zVv~s!|FM-Jx+)?KU+3;%MOc&0o}w0~?qQn0?%Z&$`vv{$8S;t{RNd##&%Sb9 zZl8r=QoQ|8v--G5FG))VPq|*igh-%8XqnNVE6mIyEu}60lMQ-AvL)e_H<=o#7@Is6_!Sp&OBEUiayBi!9^dkS=GlvyAS0n7oG& z8Dl6ssdhfpKypv0K0>EBD1lwv2kX_T2eK~hF}QFcJxVJdny=v$QI!<6ci^s{7M`9Y z`C&`qSyd?FirJ#$pz1~pr2%5T6K2-~4}MFg?K`TH(7UKNAID!0UsU@~cx@pG1zqL8 z+Rs(>e#}#DHprv=&IdQ~e&epS;{iERwTO{8EUPSIB{R)s;FyIE zmEHF#bi29(LWDRuo9)QeEW4-U*9=LZ`3r6<4V-SK#X-{sdPt^YM_w_V?(R-9oqx@4 zbYLyU^EB>*Df6W+p73_si=U8xvzN^od9TC%EI3%Qb7kZK(F$VpMdRxH15} zcSTvn0z}5&bPB->F(w%3C(!RAsB5C-!py(6WC<<1;nW^?NO}AwvV{@`(qKq1V%gnK zAH0+$Lxq!;8@kKxX~P>))23^TRL+-E;^sgc%+QA}iYvUwf_M?;vHWx(?=Lq;nzm|w zDHi!P5s3ISL$`r$Z#OBhz?F*s z_YvLln=hZZP&oUs@bQIi^X2@CSDP9myV@%jG7DcIi&Z9y&8;zfxjk3@J4wi?Pw}d? ztKaeSJEEH}{_)2NuNR=S&&#HA%Rgv^K_3|j1@R(LU2j+(&CM_3z+eC%K!$$v9SjGD z9`SYs`s)#7ERg9!26y|DFqkLwZ~jmG1WIC%`-!6J_y{1TWm<40M5*Fq|DWjRUp^&j zJs^+MAl8X`em^Z-5pOQ!85RhTKnEX$kwK~vBZyMLpM&-*{`K?!e=qawnaMxdFzRH! zd6brFOg;Bej{+oUl7iTmL?BWHAA~93f?%0DAV3@)q?w2y=y>pmnJiZ*ie3=iFyUHjrz_1hTCdK!zC|G{z4>k}f%je@zNv)CeIA_du9D z4hWXM1Jcb|K&(0ufMN)Q%Hx7S={vi=V(8GFz5n|@wPB*5Do7ZVe-HpAo;;w?^(pxL zo)zT2Wdd22k3qT_El4q>0!cbI7)T%t1Rz5B9tf4g0hyL;f8)B@7c7ed{3I}erx0qh zD<3lXe+LReHCAR4Z60fK6OsRt+xkdxP#X$i2!t^B@`GYeZcyOz6y!Uwf*ji?e=wLr z7!0UDqBa?bdqr{^GZ9eCWZQ83*{4Aap!|Sh3lHJ|3;2kl16O|JJu5bZfd9J~9=?@j zrnHc>CNmN)Ce`8HCDPykq`JI-)lPZufj+QjOQtp~SppJ&hg zcWlLJkU$&|Kpfl!0Ww&?8{)u)9~qdkBJe_fM03Q2kgGZj~fYw;!`~5um>+4D=Se0!Wko9`n!d`9PX6 z4YUnm(tH47AdQMp#s|T2xZr~%Cb;3?=KuKXBT(iKcniG&SFRg)n&}AGlivc?I7`4B zVG0<7^ugl~THuk#OF-+S0v_7Q14=8YTi>C00vv7{fZ`3riIET>g*YKn=KusM%me*J z=Abi86*R|5frcmvFhAN1wl+6z?Z#h7lfXYT$^0)(q5xl<`ENBU#Sqe{oBW1yBMQ>f zFvWjyAcp=A|3xZ;0e`7K;3BPKFHM4U71E?^tG_hqAt-bc1X&jJAkBmZBtvlp)jBAyh(UzP{eN+A=O6xy*MtM% z${+}X9}ueu0WA}QV02;(H2&-ZEHQ5YQ)$hSjnH?B}j(zz1_pN=+vHM$-O8!%m-u_#YiakWYCu>HK zVg3lJ6Hr{~Qrzlk^b10WgL_aOVE@B^sro1&Rucwk6p0Lo`T@BIqUxxN524vJ7tr~n>+0|-2suPgLCjU!gVv zYT941f3uWrjsv$CszZTPRVY|pS-G_~hzE{Td%%`p4Va^DFc<;`e;oj65`Z-6HlBEc zjQ^DvP)tGjKxQm*%fWP;51453fG{|NG06Y(^YdHlFAD>m8Tz0tSqn79se$TX8BpRQ z4Zb*WfV_7s0O~P7g}*dZC)l9%Cjja<{?6@qsNaZ&YIT^>y?^+x-kAoTHN^tSx=0{d z5&CzYbxaKbo@^IjRv8BpyDNcdan!9QG5kxD=)GS9{xGvYG3B82Z+(TdY4)o>n1V2j zH@btaoVVce^77V>_P4>;PcEQ3L>{!ISV7!;1`C6&P>qm*>Vp7OqdB1O6hWa2H-v`` zWJ7V34)q&<<#H^fr#Bq@=lDAfmjkoje4x^r1oSDZLkInF)yH;P`Hhqwq!%7caniHh=2lT9;okQgY*c(0M&#fD3@I7oy6OU+LYm5!WD8+{G%4Kpwmt|a+W*le zD6emF;zD9UpEn+-Oqo7e~+({|3@jJJ6D-3%arlL3^qWXi0bl z8ls;=wHk`6WPMN{^#Z~m2VoF{Fz`Vb*g>WRBcw+(P_IG$5C8qAT7dU>J#ZbZ0!DR7 z;QZ|D)_P|~foAhZpi&zHBufGTFI3++(%${iBuH0TV=RDZiX&jU(WaZ6@K6UdPEdV- zwDs3W9E2ef!Vn7Px&y&^`_Ujsna+00n%1#NL$x_CW2qXv0!N+5-jwF zfZ479Fx}=0;RphgZGm8{;R96TJiutR6BsBq20gj2ATC}&HCqX^eUt~^KIwsPdA3k4 zXhQj{0%@%@gh2?xzzOld^bh|d7rH_4Y&-CqYyxJ`_+MRJ{g?J_Y8WV#g#sA}gV-kz zAej6fNT)(^6$Nntaq#3uTRkCdh3dk_L^6aS0jvzifS(;PAUQG?qy|`khIl?1=a5iD^L^m0+fA_h58N= zkPG#9{~7)ycrPEdv;JW&!QiRG{9F092}@fLuv15KXWL z(h;_R)5i=jSvmqbwJ1O?kPnFHp_fn4)BrrH3V=;k3NVOoFysS1nNDzzx*8CWy8}aM zL6Bz6338!ctq9V}@&GYV9SY5P!X==2!(S#2>cYfs=Rr3;cw?+8R5Q#$MS#jb{7+pU z28qA=LCjJQ2%Gx~0;gMn&&0nq$+oW$n19OyhMk!}yCns@tV#ju$wffwZ4RK9_ylOV znjrfIsMx;(a+Wqg%Gd-5AJsz`ssSEl1;Bbxa*IJgwhP>+tp#_fDghR024JMo0N!eh zAo&do$a)9$qprN5*qa}e`wM|eXx;|Rp>O97H@@GjR|i4cp^{MD*8GS6nOi?V%K8vU z_|*rZ7r%kfxlRx;{clZj8L0$L!xg}Nv>Lp4KM9^`E&xuMDZnl<2AD-h0i)m`py%xa zG`AQ!0U2`}Ai2d*cRSv=6y*?xVjv{<4G_}*!G%j%24N@!xJ2GSnUf1dXwrg2Q>bUN zh33dkoS?v+2kI*zEPjFz7NOg@G&G;yh32Ehko{x6m%BR-GB-y-%Gw}^U-=Fam%oFA zrC#uH={tyla@!xm;yPXnOa}{r(CbCOuR0HSQ5Lq!gG!cl_w}=*yWKRn1c)9t+{V4Q%D|u4 zVrYUe-Ne=(4(^aZ91vszB)p`5#P$Em=l}f9Zlw)7e|s$a6EyB0p*+6PQoorN;5JbQ z>_;nr#b6OI{GJE2y0d_!WI{SCeJuTV?Env+wEPRxjYgFN?0<29jGy}d$p62vgf4Y4M=f>_1kbet@5x5s__GRF z50wDZzRy7S+b5v$H66V2+5{3d%YXOSg1U1cFk|uW?VCBSzRM(tE||aF*E;y?Uz*em zq|}DNLykWh_3!+y1h`Nh+#$(_ILP>a<^NweyrvpG+{S8m?MKSNn}Gsg*qaM9yE1`V zdkT1$xC^vD{QA4czVW~B=f>^!U(5WuWe}M=f4i@>e-+ZzPCyQ6l8pN3-}(K33Ci!s zjZj?GKze$^K>?((pZ;6?zrkTLSU_$$P}FSlJs;?HX9JB6sP;nh1E;iopdaw-?;cy; zX8P~-m$s9)>#G}kAQ_6Eo4&iPZ|!fNWncZc&5ef~U4Vk6{Wh*{^_02_;8H*wkmmol z`TrLeP|RCvcBb#XXiEl)&G7^7pALXw&@wnVfqHDnoTDahmsM@6KvHuN4F24{-JV|D zyC}>|Nidg`?j8Sz`#EM=pYQrx|4wMrcT`AfjD4o|C7tN zHSG@ve~sJ!S4+RLBVZh|^goKb4*005?0s$Px~t;4_D1Zuu9_)nfWVYD$-rc0n3*I5 zfdL^%1PO*Bpc0g7p(-dKAPNdL5EWMigQ64*DA*~XH-#W7Vm<%w-22|VH!p)_cisQ^ z8(-#r-|hF^d+s^sUQ#l)v9Ikld>eHcyc>1cnufi;Y7f?jb@Y$stEseN137$avDU4o z%ktk+@`k=v^BQs5#n1gA?Qd<1yZ`kq-7t1rntZ+Xqk8Ij_ZQUtj=j`*;BH#9WEbtP zKTL0|`keaR@gaF*pHR~_A5gLv*1X_{sKfiH!@H1~c&)~Kdi7Gg%dgNGmoECl%Rlzj z!_;Hk)-)M=%tM=~&xHMSgd+#`>5Z8^;9)( zAKeItnQlY&P^bR8sJzz>ig(>gp^kMFC|yrC^xICM4jajz_=K8;){)D<26cD~{jePK z(Q9<>m5cxI@=sp*JxzH1I~w!Kw>0|sLp1E^uW86*2WilZ1JrMFJ@p>Dk19ugPF-)` zLmm6=qINyEQ^hSismq|9)OXZg)L|P%k{eK;kLlX*I?4&GrmI`LMVIHji8?I(!^=N) z^^Y`Z1?uqHci7*2OQTQ+o|A6JygG3D0jfbghR!@dw>?x({n01A@83@)LqDg;EqkfB z?;g4i??!`TH$K;Ex#XIpXIXo->@bb_3^k;g0!%sB-lOO5n4}YMC-~OJ)EICYfEIdR5 z=Y36mus+`~`2ckuv!BX`e?jrv_ENb29%|itHwAj^BwyF<wchVt1ynx2cs4pqT4Zs`aSv;^_p^kx{cpY9Y^h> z(wfgHddnUP_1R5@H$rahwu8Koy<2tICif86mTn;p`=Rdrw^6s7*Hi2AwSRc|c`cZ} z=7-3vcfYTD;0^T-+_~To4SMV=>Vt99oI9{o1{Ps-1An6~2kMiXB>JdWp}Ay1&~A3jLE9zfe;{^>a4 z3o6C9iT2-3ZF=vbLLN8QW88GYxM{zYT9j>}Yb|AO8mXhE#dYLOY_8?B|CgUz9{;-K zpxIxo=`#&&k2S0_*06HSH*t)c@Xfm@c;imec-&yjx58MFWiQd&z3t}OW|7S`O~Z99 z|CeRXlvl4w2Wq-v+;klFIhA7EL@{pKV4f-LzJq*n%x|r4S-y2X#(Yil_?G|o@@A?- zyPD6hDIc=8Ha-AtU$v_~Sh;h))^$gfH@W?Yx`RyV{N6Cu$q&PugU8{c)N`n);opaa zKugIdq-Q#e->`Vo(1GkwBo2$SWL87PpG`}+VG;lTdZN7iIR^FMkD+Pj=TiOm0sV>E zNc?C0Nm=SQZT>GkkrC(1%_yJ9sD^*j(Bnxym)7ue?kQG3uD_x*4gI*X5Y`Iclph!3 z{4YM^!lyQZUr=PE=lF4R2Lu+w&!+JoneStLu4)9EVFWhMaqv%C!~Pg!*@q|aSJ>j3 zu}@F^n9$#<{+nfhezYb0bjCe1ByY_V@Nbz@btOHRypSfgJCDY;JyZD+!7t~rzAfO3 za2CO@i$)iov}Ty+FTeY}gx^Qw#y5EJHklvzN7TLuU!jG=njw#DdT~OG-hOU4z5T+y zG^;9y?v0)y{hQ|9;*oZ2_Nifi6!xdNwdrv+W=akJy6o0?WB3as;de6gyw1()&h41b zz5;ddnTZ%|_{!AIzayVsxYth~zw;bzu7iJx{{7d4_B6iaT_eC4tP5O_VdtKiA zv&&qKUYioE{nx!MsqTYUY47gcwBg<7=;iybqi08j=#eUi^z~vNqi1Rgr5%=SnCwr% z{vdb4m!fIYriIAA(X|Ul*TIiP`hZ+BxflHt{wqyjQ)2%W_Bpr+cD<~g8U^m^A^j!T z*8u)1_4B4)SHE;x7dmjDp0<3jlpey}KRL$F(}d0`yQVjKF%Yo)&u`NkLU8+OQfy8^~9T{4+;AsVNB4xIXBU|SEfMk z@jZR`>LavpR3YpLu)W?9q&WkcNxwDrr&x4PTU8d=!`YV1K40VDmt*7~d2I^(5GGLG z6GN!>)77+l*G|fNs4rbPrYl`DBB^{>&=+kU=r7B`J`?Qo@igp@OQ&~B=>$GnI+r%A zS|oozf6sMzFFYuNi(a14PCnTOaAx;QXi5@oV6kNnfc>}A@<*t}f)VuE`uC{5em^bW zuvR|HA00+l-P2X}Mfjn?sz2a=!sB7Vf`PQ|`QEe`wqWD)?N{}*`uVA_4Hdx$t1a5T z5O&?}@a1a(-v+kj{zLk{O}_5DRQ-p-{>e7z&acm)H(@J0^vyT4;bdR{qK2!LVDx_B{qR%o!bES1W;?xeNTL%IT%C5n2h~ z7xr72KeQEm6WkaR|ByaXM*Fj!qvoTRr~+-U0{L@)hMpKn{@J&YXKFvX{H`Q9V84$) zHXLnny?iftOuq2)owRNBc-qW%V)#t3oqO%`{prJ(N5BW?PW(ND);v1^{zSLJ{yi8r zq_(u+4j;;phcaB5s{dHn??$eFm3qP#g6qw8)DJd)DxcGqJxk3V>QBvQ+(PZC`jecb_cdy-3&X=3i$5SA3Q)y*R7%v3#L(U>Og6GE}S!zu6t}0D)TRgFl zR?VxX6?1N(S0AiQ<^K@uPizCc1vZ1~B{QjF#iP{mwdqv7{Baui_A}JyjmM~P+TG-+ z97tD|OreXLFNCdciL_;~t@5Pv=1Y5Dv*0p1^Mc#yI!|+YxDWhBhcu^!BiWwkg)I{H zNcfhrU*pT;Tcd29Qu(tTZ`$rPG<(-tnz8jAn!IT_-M?X(wB2=hcqz5SUYl(#*|6EM zPLpkpY>znYqG##v7d}fTo;6$AOsHg)CpOTzt{0_ks#SOuoe4W9+XzoQXC9q=#+~H9%0*+_UtBlirfX)-8=RM1 zaA&i|M!v>#)uG*WuO8eA8`N5wfV}U7{i#1}XO*xa#HK8#+}I{6#a=hB^~cm>_T@BD1>8n&OX?WZGbC*9{Sr>e1A zVH4R;{q!gQy?xggH2%>#8GgQVG4%8+s0el*)@`%>^K|G`PvJH=>(Sqwzfq1GS3gzL z1$L))%Vy9G3*V$$CT*v0FelE3ewUwv#%+|(^;_!Y^StcEQn%iw{Rh&{bOCHMXEk{l z_L+rvH|GBC{J9(*md|P&du>W&;DRkP2S2c#zJqVg=lj2*O-FQpB8*Jw~wWs)%HL>2^9q2M}NG9GQ9C0>z1dk`LTxeuB^Ww z_1qyEI`=E7Z@qWkK^istOByo0o(4eQS^~YzpmASN|2wxsANDad54}g(tyW>KdhI`| z|HB{sR5NYOk2D?n#wS;QPqSA-Z(92;^__K)x=yH?h%YpFvg4PO8Sd6@cy9=*xfi`M^6rw4A!)yEXT`^ex>EommxhPF>L;NiYo6FltlKLr-$MQG*!mymZ*t!a-CWl!Qa2O2xg@@gjrjkKXVsJgjl12muNL|qilW_%SV!1-`x@xj#z99F zfsX2T=LbDaOXwCF(~shKdPp2|_(YudQiVMRkKg*`y(zafEyWiq3|3zdR2Lb)AQFf~ zn;X$+>;SVkqCAg=%<-|GM>`8)+4vfIjLve`$jtxFXJY(}Ywl@%a@F01C(g${x#~Yn z73Ytx!5*yYp7N~Pv8Cr7yu0{x8m2X(JG>{+oa$@&+*IwTz)8Qkudu&3+9(t6`}u6j z16?o0Uh|*We@E%X@#QqVq6v)(o=Uvm=d)SRHSj*W#)xNq!e6x|_AoWr&(Fu%g?jAi z>d))aOxC-0QX$fBL620sXv6!j(ALeH<#*B8cF-xDNl)DtkbeDRich6GJST9U%MW~f zYp_?UWnXtbGr@ZlK3~A+Z33fjkY^>%X`fU3(zMu`hkIX6pRRm@_U_zFwbQ!Ng!Wl9 z8M+fb7c_rpP@bz{eZ?r8%QDh;PVGY%!bh^j*j{vArC*+DkpA<~4-}2PiTEr4@6CB% z{M=oBI!} z*^f)%AI|3_+T7ny?tL%l-in@_TLr&Lr2qL2+Pdy_nhw9vX*V^8FIp4$iC!c3yL^U# zeU4e*V5HCflRX~02mUdiQ};(klVe~hU5>LE>^odMZLmBm!+zZJ=MR8iZFgESrEhB8 zWgqUTJqx67^J3^Y9;?1a`Ze=8HY5ETUw?$EpPUGp=xbVzeO&%+9i@*o`^H8e9V*Wt za9#@+4UxXROQ*o6a(FR4H7p80K%714k4i0(tn-1dzohlMx6nUsE2Eb16~AuIC~}X* z-fwtEn)&2dnlx@EUDtjh-F8DKdT|`i+e}H&vgy3n!=7tW5xw(NKkR!4(2~g&sq`mo zdXxITJcF*EdpAX%9z}s!w^81h9;Dqjimtl8H(e2*L|Fw3r0mGPhku6b-mK_V%D%D_ z-P<*Xp2U9Y`O)kPseC(M9#@F{UB^`V(|4_*u^X4s=#O5ZIh)?185>tn@vZMsLGecT zQhW?~WCdLSKf1r2Kaa}$uc4FAo=q)_SIRxp-_IREt=&!Ofr@`XcjBh`cQj*P%v$&? z))@V}7`}4L4{oOyzW9u0?^r{<*Dj#^9&b_W?${p{en6ui*-X=)!@5`bj?}}Qdj1pS zjlLuIiR^Ru=QF0!KeJ-B6O)&v<0{0Q;Zr@Ih)d;2qk#XE${k zvVrQh?v{VIz4=}FJRSSLK*<{Ev&lYn?8{|MFVo-Sw=8c|^U2HO;NwJ{u)ipu_#PcR z_$A#s`BVA)tZpB@@Wu}L_u25VYTa&~^jTtmrN3p(|JC%3JS*OMyk*(4>GO+jUG~l4 z!-wh9O<&T#mhGaNai78*aaexOzj7&64%jH=<@3=myk{}u|JG;mz&G|9zBKpG-cG@e zAEx|hu7t15&9`sCp7|Z=Z*n$#O@3>-1}`yUNFe+D8K>?xXP!@28sv z!+sZD3x9{-FH6F1Ub|@hkMzv@-_xw+hiT%!4pH~}>!}Q~8_SI>v-TOW2XgaP^2gu* z-R<-4-k&3L*ZojG5%%mMuw}Cyn{C)_VTUZNgzXphN0!UF!Y}3Knr**3eQw98Z+_os z_`*Xo`@>e-Z7h5fAnUVzmTj}J4I1+18rU<({nmER#OpPwz9sCCb!}mTg#B@ir{lJ9 zu$!_>$FkM0e(2}Mf;Jy7eqMTv*xc&3ifxUNZVlwU8nGGQ!x_FmB8*_*>wy~rvcOhy z+DWoJb~%mBOUyCkv{tEG1tk4<{SRl%Pae~{(RE`&jYi;H{BLT5f zgHt-413BpLI2WCdv#h7nNdJjLtp&iD$O|v*sr5SNy1bWhj&t!T9rFLVdP-p6qg734 zPY*h`0=5a9ee;c|pua=*=+Yza z^Ucd2fIj|S*Z?krp7Rpu+mbl**;1aT9p?MXTdqe3zH`oPQQGy@emb>t0iAn&OX~Pg z4V?{{X7Ih`^wqW%wDR$4dIaa-=Jd^huCPL$eRvSM`+JH{UDd62=Bmrabe1aT7e8J_ zuKo$?GG{cMkMo2>r&Q1;=!1Xy@jLov|8{z`UvpXwz4oHJBREfYDcx6g)~egqJh!Uo ziQ#ncyKkw(tl?C2cTXyvG=MH1)}HR3*N47*uZGq>S&nlhooUI`F7(;52WTzq15XWV z26^DpRbw~4zN*8L2Wi!=4fOt=&9r3GYKn}nq&DO4pjg#-Y7>5v?il(Iz4^p2S~jH( z&ZQL58#BwG3my(xuj-?jd)B^Py?Q?NUj7)}3IFcMO>a`91N26h)>46gC7p22B0Bx@ z74(-g$5Nu82|dyOA2>_ijL#w*Tsp1O=;eoYJ@qEm!3BFipFR=S2; z<#c_YjnYr@Ea>7+Jpbt$BTlC0$OS|@_x(r(<(ny1QAgJX*V174DqjPC@C&Yf9qZBy zzZn1S*MFi;ldvbg_Y0ad|7#jCv!3pmRgW^jN8bN7^ifNHG5(TmKY#ZM=IF;)9H#3r zzeNV@AjjTpa^0`b+uGnLyKcGnAsCiZ^t0F^->z{IYOR`mFjoQ<;7uie;19WBl}OaFyZ9D}{4`qc!#jzv7?|5?mES%~9AR+jz?t_pub zJoRfO(mWpV)UO`L3HD^bhiARF?_-muN+nC)welA|75qYszv`)E3EuafsHc)8XV;U& znT0}Jf|QCxnegICw2~9X-uHxKjSb+1GUP&0UD3Cye|1;l|bX|4GZ zNq^82iWCY*wiA^A7E2a;g5f~SQ>+PxGaq$9pf4G(=vC3RU!byA1*j-9T9<=ERX6Z& zCs&Jq`>RSTtNZou(yMZ?B)ZsW%Rs3o-mgn_KPI~cZj!NtIXN%~)zt$l!hRKk4ZfmP zgjE1m5)SZ|BodLZgTrzK8lS_oft51xT!Gm?>50aZVXa*v8PnpCl9*3J{-F}CP=Pqz ziu)qP#hx(QL&7d+UY%A z)P>@f%HHbN(c-Amc(PQB#e

5=|Wu4sohDifa*1coIRMXmXX~3UQS{EcDk=$>M-7 z83=~7F#3ceii;eM?2E)X;wYath8zAu!NPDdqy-Wpdm!2*J0zN?L5WBdh*KihrXjIl zVG+l2ORPm2=8d40ivi|Kuw@$P36}#2NTijHcq1{t7BdQxjgo{gGF2IMOqC=XMF|OC zI%E_j8)XRze>#{dOEwA<5?VT{3X_e}ghW7x5|KzK5sb!B%4`%Rg!e?1BoHe1a@jFx z5gJT|MsUM;aS7r`%nht{dM+-%MDl^O(UGE{UqcT@LmrFc55~sYJ7#AraQ0KnO(%h6`03M@U3;pfDDUM$!A67Izp|x2=vvVz{&^ zkt~YD+KVQZQGo`(&GJ*V;}s&F9t~qEkrs^ylQo{~oGU~kJsP*W%FL3zilzr}!dHkA zJ(?#J(hDEJCxnShbxAlPhp?)!Ua<~3CWp1PMrP6UF{PKSqaJ~Wn3bPu0iA9%K_{KB z#+@~W3{lmv4CyOGQjehzMr#xmlokj1ULiX3YmE`&5BfZbNGypd3ANPnFoAZrK|ah` z3Ui1XY*@I2-$O)m3e4bXDaL&r94;wxy6k(D5mk41e7Cs+MqU`ut#CJ zqL;+tTGSKc@?&x7EspX8+9eagV!Y}oNgx=D%R2c`rw44HKN!cmQJ(Y^m0^z6N-;z^ zWu`u8qk2jbk)(W|;vw}`S@{kzV!nh<7=bl3*??J9?r-r^91#_FA%dbGGuL3(LCZ2JH-=6Gi~t{I(|b3OQWj$zP-T^#ZuXQ#PtBfNULGw>Wad(?{l7 zI>(VKp2ua~>b9ltUjO?fehMTBL=d#Swox!zosnj8xi5t=Oyi{rW4PjfsDi z$wEV;Vak&%EAk*`arww#L%`$wds;A>=#>2tT}iPQDlA9rZHVP5ELVKq5X)Cs zp7^36R-mwav9BS9T63deUfG`k)LX_Q>N9|P(|E;!44~dNKJjG+P;VT+IG6#{TSpUL zWdQZ&35c)LL1RvFU{3i)LK-9#EQFdz%5e^7HngrR{+Z#}{Hf98bcpXP7{;J%6Q@&r zZwW3@!`U;|BISyo?O;5r`Jh%%cphy1 zsY1uJsOHfNkuStiRzTlHX}n24%0%LjiJ+%QRn#MnHo=mxKcceniet>+m}Ug~#IZ8C z43)&XZcJe=XfUkdo>ZRxH8uqTF@y2z0r`UmBot zb0tx?_^TC#Y^-E5hbu>%C=s4|Jzhu*vQF-7aat-^Yp0Xl4sp5+rv7I8l(gJ5yKPOL&#q%)ux!!A1!)btG8;vXpj z684%?u@e)|mFZYYa&qEjz2+#nSHcUcuO&*T<$PVJld}PgeIBoNir^5gh6H^B=|aWa z4N%TS#dV3C3@DaL1-nIV1Gs%8QXG_R;=&S}ml4+orVC<0zN|MdkV#gxK+xl)^HHs4 zCc^5hk~mAg3Ur9(CK%IF;cjuQ8P4LD<#o(QX=QMz;or>iYUD80VY6^6T>#ZOcSk28U zN4Mx|g}K;PI7f7|!YLs$fFW67MWFbF!a`L8UEbY_C9s(d>Ej`QUcbQvi=nA03Wnr* z7{EGQX+nN2-iCMR@pvRA7uSH_BYK)R%fT!rqaLgm6}?S}yWJ5?9WHM8_ zc^k@s7}gQTb9!aud4&#m!f2^I@G!7Xkx3BfSb`*A$ND?eL?dCS!Q|u|$i^CchlwQ0A|~P#cbbSykujygLqwMtW`*Szg9#X2tdRr5 zErweeD3ZSBs#hC~95Es@LnV+aM%rM@2y^F&Q8pBs$5aow^TlWzoQR}GiMv4DWun+i zvS7xV2v&f|%=5Fw7?UB_YF;xH<`82|%)^=(Y@^tqq2o?5&cuCcq1NThKz6=Mj5kqU zBvhhqF~JOmEvH1vo#5w)i6#(;McT`4Du7&Zp9$dolWzep0l@Oa{U#>2b6h=z<%`KC zruKlc@(L{w516Qo>4{rlk9g1q>-$6t$BTdRF*T}L-m_pnG1bIm<`CmjiYJuZFQ%D< zVk~RiYml#4%u*%P#B`J44?>W!fB`YX1iisTu_tQ93$n#b6PMzbva4CrC~$~}O^#Gj zq$S}LvrJg-E;t>{pD2&2*`~lP9yJ*y;WlAt;7l|}%r?8CTIf;t7Ms^0}IOxHojUA;1ch zr%g%#lPRW3=)ZXhNkZ?;>99KGnM@=(wo)Xgm~WC;NsDBdp^|Wk1tx0dZ%nIyT_QcZl^S2jU%G zC=AB9oT?r9PO-s6_4iGR5Do|l8x2T_qL|~XnY+a%1IPN7n#h#3O_eW4)McWmIZRP< z#b%SDPr50kFp8fiwwSn?iZ)cwvD4&0t)7YF7rRW3UV97%pC_h9aK0vXn*_7^YSmHs1jL>O6o?!_ zIl)Q_B#tjkit$=X4kltnafp2;MbAhw;?T4!ic{>jPDBVL) zlpOJmjbt>4A)7lqx#EzGqfA~&HJ3^u(Ba7w-`ZF(gP2p4Ctn=4;asPuR|PVgL(dpghOh&@jAuPHXNfX5=gbY*Cmdz5#-Ej zrr;LG+6ZV=LvtH&cyq*Y4RIfoJaSj!@aBp?HN@kvXcx1m1`@~<#~XxrGU9`7$L9%Y zCE;Kqo{YlFNNTtO4j-HYO`fiu(^aqmCuaGRO;mTF!g!ZjL%>=dV% zFzdlAm`nW4z@o``+mJEa%PE+v;KY=FW;#VF!FUdWBwxmZ%xF+2R)Dk8$y#v~-W9$` zsH7OKa7wp>L|x+SbY38+g)p3D(bUYZwpu?z1B)L9v@D=2VtI|n& ztN3AbL*uA5RZ;WB)#+5-w~+@mRHB*cQ6R2KkD^|`v}M#;fH^Fk<%PRUu_xBXrc6}D z@CwH-v9Za9UQ%x&pKu!7cv4kKNBknkK%y8f5S+t>Q21kKhVFy1u)X2u6mVksXqL|P z!vW5V>01^E%SZEcSl5ejEp^`rB;pj;rnAsnm}2pUC}pD)tB5z9fi;42ksiW4MS9)B zm(Ec0T}e1iAM3<&;x~BlWKkkv`lJM$euoI!K%N_P-J;X)6s>JAum3#oHEBRW3NF#c zMu9+Dl>Tz~-6CWo;kEU`^;~J;ocr!dM zGd6ZI>>bi3$!-Z?x<&h6W3rC|m^tFQUt_uyGgox@HKtoJ^F+sAW3np)a?cl?evQd~ z4PX|CBo2hw3XM===M|B4K^Na3gu+jh{6b`XwsF&A9Y>@cCLJu=oDxp}TC6#P! z7Vc>WC51Ij(C4vbxK{%L-bEdCiJKarx*FdJ_oUuOv*QA+^&xm#Mc69}7Fmb5Sq7H{ z+k4@XsRCW1+6dHbb6~nfUn3B9`e2+T5CrFlerBc#kC&H3K763iY|-C9{cIX%#i&12 zC|ucj$a=Ji$$A=yQ`}`mq`iT)d(vXdQC;G0lb{Um`i7ZNw-{rhszaoKm9ZQ#)`IC) zcLs9BI1`YHUc(`T(L6EUMA7p%5AaV zGs7t+nG96}btHsSg~P^V6O}@wejbKFx0qspKG_$TC8dvqE4v^sPfRz#VozZh?z%{_ zATM9cFac@*g*6*vR)Pg$rU@2F4-mG3BOdf351UYF8sreOOeh>-=Tu)TuA(``BPJ$& zfx~z|WQs2Fs2$ScWfF3W*>*@45LS~pHlR!;mMb2!0q!!7tTEIbkDCzNh*JoZ>Q)4n zI(7v~hGik3a(^l#$|Z!d{ppM#N`rYKTRf8qMY;eTVtyvDs8pg(u^brmi5D{ASS}JW^?b3&jz?h5OvNt{FJ;1w_|P=J zoC#NL0#)-XcC;9a6z2>j^I`+@V#|ba&S%4vX^K0_Eox0XZE-Egkv*9!UN;DEEmmHY zN$Kk@VW@`9SNe6gRk2B&B z@1-O0M0rR-PVv4Cg3E%8y?45o9OfOcBdjg=!q!*{+^@x7?G$e!958wiZ{Ud;aHxmjmn%zwSMa0^j8u*B0-l@!FTxxm zUuBg@j%Z{jL5VDt0%l6N;uJf{mQ0@b+YuRNI{D&MlLd=R32f%77zN_*CgP1qk218Q zN1SE`2ceKt#s&?B%F|7N`Bu;;&M-l>nwVwqi!)7-jdD0~$Ey@fyoT;pb7(2!twy(mhKXxxyZdxxS9xgyJi)oc-s@}XN``QpM1SkmGsrNKx2B9p@n zolHgdh>IIS>9M`y5|g60pqYSAT$&M0Ps1-RYrsJ6D+V&AV@|6 z>TNX_JC9p5%|OChXW`_CW>yZgbi83^;UN-(x1m?rkTsYEn_GF36iK9%;~Ff2*IEgB zLWa>pgGI1~73TyzA#UFCR4>9R*wV`JL(SmRf{~P_PJ>~vm6c&h1&(gb-1 zP_?ybVKwN53#}}?7qB<+a4-$K8q~r?RuWeR8cf-`vM|sJ2dxA)F3Yx)j>u;FLO0yn z&O<_GH$y4h#!Arb$4HNzuha-sIp&H`1|qiZkw94YWYJ)7EY3jUl1b}~G&XDAd=bvT z(kF>>b>{}pLf!%q`2`}M1}IONOCfEEsFe+i6snr?Irgxf#P9&pyk61v7s#s0J`uBW z!kXqc3Te;VFXC3J%3Jm=8dA+zUQHyd9JpHiLiqxsjO3`(v=794-acw2=tj4k^N+DgMQF+L5(I()eCW49u&!+>=a3hQI|S`-`|yHE_MsIKl?-PLl# zN|!#B-MidW*=rEOj%JF${V4`rq%L&}o>^$~nikouf(tWVZVmEZ<&x}bJhxI(2;^pY{NL=!PkU;PoY7kxMGig0f}dww6ld%q5Hs{(nj^04-6C z|N7$F^*`*b-`@&-F*>@)`gcpUMipPbN1(_3Pr{F>zF&zWFSFWz%q3`ID32V%eqYr8urYGcX++T1;EpM2iDt)Jjn$lS*?o-ibPnf& zPzn5G92rBM8ADyEP;Bk_uCesn$Nq=4oFi+=brF3UtPScmHS0L#5$(sdF+FUI%|tFYv#nASA-UwUhWo7xh<+u{Gr^dUxxjLCT$`CgIAmrFYI7vmW1 zVa8d4WX{74a7WGu6~!l8m~r^Fy&rKooVp`amBV^RDBr&~9Jk;pT;-XDBg(yhH*l4{ z73Vwp?#EqkD!!_o73W*~HsGo^h2!cwe9~~#XZEEAj>6h-zS*zW)dr3Rv*CQ#Un0lA zk(dqV+y6E+HE=Y94WEm=SFSd2+?Z#_(Kh41Ht>f3rXSxK*zUNa^!hctE1&OZ6^#tM z;T^4fcjD;3Gp=TO&Oh67cOu_E*yFULEbqWdrlj>T%UQFpvvLeM%Nz&1E}WILa*TDs GtEe2$4l1P?NVvI|Lu?6I%ReyWi=b2%= zcgNjvI95w^I_}t=ot^iY-MxSQe(IjOz#Y4hyKqx?<7T*rZjQDd+Gg&fd+)~hS9U+* z3fz^ubQ9cDw9oMzplymL$9=@x1>OVvBes#d1WtbkG?MpTEiokEkvec7Fu+TGje;G6PVW&-8#QPVnAa&#^aGb!$`WV&1_{TD96Rj<@ zp5a+XPXJunqHuNmZy=VucH8Ld0`4dkqK{sUI^TxojLHBq97(*tfgY`uPu>mmRv@(= zB5MZ{Y`b3|r!pcCW#53bnrN#-I^lneQGwePsp)UY9k@ODU&PxB!OeL74&y2J3S`F! zUPW6C7+ZK!r`B_fwu;PF0~Lp$hNFD{9(qX$qgS}S1{&W2miXV{4)@W5I8PNAwf&7y z(G#6FMAtTp_LMPm2P2q)TEYW44fCOJZ0!qd$Grh`3-h<}Mu|po1ju<`AdhFDpp00r z*|F_Dz!N@7My2oEAOdP`^s;#&(kws{=Z8_D}N=6T_s1F9%mKM*>K zZeM0MoYYD~X40Hy?e?@8n&AIRaP8xF4>-4x?@EIC86>w2ZfHHnpt~vBq1U$1s#?|F zL*c3oU+#i#S~4R?7$P2(!!|)myU-~8-?F38nMZC>eO`)ojK2!_W8F1{1hw)Sxj!LM zl_K>_DbjnA#d4%_gdljLF_IxOEEX&*n_$`SB51_&A zh4&iwb&=&6{DPGi{XTlpYNFihoUA|wxU_1Sf!|ps6`Z*UDrnI~TqQjBW3=S8s2=9l zyhNFA!-iDK9xLbIj9Io5_MLTRzLa?2XD!L>o#NMyf!4j$Ebq;%Fs;fA zKe=*aEj|PH^k}2rIO$1*?7^N-@TU2zFHw>ig`>kgjGk=g=m2jGiF#3(0MgtRO{qsJ ztkwt>#9Gz}c}5ua8s=aX)mE-J-kJ3g)ZH*nDpoD>>P9FNLEc{6;bPF-i4<_1cqBmMc`spa8nL zlD$RNnYce-U+?ix^B{X!ZLmgq1=ycrumMIW^v@~uB+qEoNJVms-V?#D|KOQL%R@LzDRLw^(SSCH>m zq<#zC(5kLbPihp6Yv&Op#PwE|mUht3$glON$2UW(=6mwR_5A>{S%=#8f;!qgX*M03 zg_ztQN;+y61Jq@-i)^cn!rs?vqgd{5RX&@U-7dF8BT5evo!&|GKCvX~@u$E>Z=XR= zT*ZX_j*(p>4Oc0wyBI|^E-SsBTK~p=-rrJQW|m^ct;2f4dDXHv`H5z>JUesTv*7xn ziU_M~9cHAoxso#g$LCqwQ$yj^eOOD$n9bt2R;nSkGoy3&g_IK8^N6Mm`UL%Ttk0I= zOR$xL#4*epot*f&KGAjU@zMxZy1F(tYP{9?xA6X^!BLNlb@Baa@*3SuRZVl3S8IwW zhKJcl+icIE1bA;Ym8#JWvXj=+jA7i@93qN6fsLMQ#6D(Cd}{SRCTmcw`MI-6?~Cta zGHMW;?w**A){jY>uT`_Xv~v{eHyIQmE!$h6KZj3T2$LNBlFzoz@2Y7ZPl$sjH}{!C z^^$W>N49hr)@{*qzyfB9p9p2ml7xYk zq z?=pNca(|4cz;y^q=PBUB(yDs{8jrZ{U5Dx{i~8@*jMAvEQzL(l^im>iF+;COcC2fo zbBxmSmhhT%2ljn|Xi>n$%0aW#M0R_gpq|Nlmd`bpKb?!88PC?FIO@Bk(CCX+H@XkW zXvMg~eZh;xegJo?7&+!xC#1<&V_nk8p!u4e17=}Jk31vnP=63fs+2tsD&=GNa~U*q zC2NoYI3YjE3F)V{#`yn1c(j$S|3V^*zdW&XHB4G$`}(@oGUI0Ec%#mqJm;W&E$@S> zKCL%!pT!q=ZaoJ4XISD4n&kKjem_Bz{APtw{Z>}7{L+Ow=a(t04hhTixj<}~U(V2@ zXdAaOf?ny@z5zx>=~64x*=YyI)g@To-zl-iisu})Uz270%P))Yeb{Q=YKqjZ!joP(xFR zqbHtGt$xX>UKnGjYwnLSLO*2fl15ijl@gA1N>3N@R&#n*jbd{oSDj|9R*x8TTvA4n ouP3bXP`Z?&hpIc23SU1Y{bw6z-OMXav1w1`L`z~O&btfuFU*E&XaE2J literal 0 HcmV?d00001 diff --git a/VM Project/VM Project.vcxproj b/VM Project/VM Project.vcxproj new file mode 100644 index 0000000..5f4a315 --- /dev/null +++ b/VM Project/VM Project.vcxproj @@ -0,0 +1,150 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {50DC5327-0CAD-4787-B236-F3B0127AA8A9} + VMProject + MFCProj + + + + Application + true + v110 + Unicode + Static + + + Application + false + v110 + true + Unicode + Static + + + + + + + + + + + + + true + + + false + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + true + StdCall + + + Windows + true + false + true + BEAENGINE.lib + CRT.lib + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + true + StdCall + + + Windows + true + true + true + BEAENGINE.lib + CRT.lib + false + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + Create + Create + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VM Project/VM Project.vcxproj.filters b/VM Project/VM Project.vcxproj.filters new file mode 100644 index 0000000..c006fe3 --- /dev/null +++ b/VM Project/VM Project.vcxproj.filters @@ -0,0 +1,85 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/VM Project/VM Project.vcxproj.user b/VM Project/VM Project.vcxproj.user new file mode 100644 index 0000000..2f5c3e8 --- /dev/null +++ b/VM Project/VM Project.vcxproj.user @@ -0,0 +1,6 @@ + + + + NativeOnly + + \ No newline at end of file diff --git a/VM Project/VM ProjectDlg.cpp b/VM Project/VM ProjectDlg.cpp new file mode 100644 index 0000000..8edf5fe --- /dev/null +++ b/VM Project/VM ProjectDlg.cpp @@ -0,0 +1,278 @@ + +// VM ProjectDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "VM Project.h" +#include "VM ProjectDlg.h" +#include "afxdialogex.h" +#include "PEInjector.h" +#include "VMHandlerProcessor.h" +#include "BeaEngine.h" +#include "VMCompiler.h" + +CPEInjector InjectionEngine; +CVMHandlerProcessor VMHProcessor; +CVMCompiler iVMCompiler(VMHProcessor); +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CVMProjectDlg dialog + + + +CVMProjectDlg::CVMProjectDlg(CWnd* pParent /*=NULL*/) + : CDialogEx(CVMProjectDlg::IDD, pParent) + , txtLog(_T("")) + , strVAStart(_T("")) + , strVAEnd(_T("")) +{ + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CVMProjectDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Text(pDX, IDC_Log, txtLog); + DDX_Text(pDX, IDC_VAStart, strVAStart); + DDX_Text(pDX, IDC_VAeND, strVAEnd); +} + +BEGIN_MESSAGE_MAP(CVMProjectDlg, CDialogEx) + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_SelectFile, &CVMProjectDlg::OnBnClickedSelectfile) + ON_BN_CLICKED(IDC_DoVirtualize, &CVMProjectDlg::OnBnClickedDovirtualize) + ON_BN_CLICKED(IDC_Exit, &CVMProjectDlg::OnBnClickedExit) +END_MESSAGE_MAP() + + +// CVMProjectDlg message handlers + +BOOL CVMProjectDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + // TODO: Add extra initialization here + + strVAStart="0x"; + strVAEnd="0x"; + UpdateData(false); + + return TRUE; // return TRUE unless you set the focus to a control +} + +// If you add a minimize button to your dialog, you will need the code below +// to draw the icon. For MFC applications using the document/view model, +// this is automatically done for you by the framework. + +void CVMProjectDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // device context for painting + + SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialogEx::OnPaint(); + } +} + +// The system calls this function to obtain the cursor to display while the user drags +// the minimized window. +HCURSOR CVMProjectDlg::OnQueryDragIcon() +{ + return static_cast(m_hIcon); +} + + + +void CVMProjectDlg::OnBnClickedSelectfile() +{ + // Select Standard PE File and read some information from it .... + // Read OEP , NumberOfSections and Section Names + UpdateData(true); + OPENFILENAMEW op; + CFileDialog* ofd = new CFileDialog(TRUE, NULL, NULL, OFN_FILEMUSTEXIST| OFN_HIDEREADONLY , _T("Executable Files (*.exe)|*.exe|Dynamic-Link Libraries (*.dll)|*.dll|All Files (*.*)|*.*||"), NULL, 0); + + if(ofd->DoModal() == IDOK) + { + op = ofd->GetOFN(); + InjectionEngine.strFileName=op.lpstrFile; + InjectionEngine.LoadFile(op.lpstrFile); + txtLog=""; + AddLog("OEP: ",false); + AddLog(InjectionEngine.NTHeader->OptionalHeader.ImageBase + InjectionEngine.NTHeader->OptionalHeader.AddressOfEntryPoint,true); + AddLog("Number Of Section: ",false); + AddLog(InjectionEngine.NTHeader->FileHeader.NumberOfSections,true); + for (int i=0;iFileHeader.NumberOfSections;i++) + { + AddLog("------->",false); + AddLog((LPSTR)InjectionEngine.SectionHeader[i].Name,true); + } + + + } +} + + +void CVMProjectDlg::AddLog(LPWSTR iLine,bool GoNextLine) +{ + // Add text log to memo object + txtLog+=(iLine); + if (GoNextLine) + txtLog+=(L"\r\n"); + UpdateData(0); +} +void CVMProjectDlg::AddLog(LPSTR iLine,bool GoNextLine) +{ + // Add text log to memo object + txtLog+=(iLine); + if (GoNextLine) + txtLog+=("\r\n"); + UpdateData(0); +} +void CVMProjectDlg::AddLog(DWORD iNUM,bool GoNextLine) +{ + // Add text log to memo object + char iLine[12]; + wsprintfA(iLine,"%08X",iNUM); + //CharUpperA(iLine); + txtLog+=(iLine); + if (GoNextLine) + txtLog+=("\r\n"); + UpdateData(0); +} + +void CVMProjectDlg::OnBnClickedDovirtualize() +{ + // Start of Virtualization Routine + if (InjectionEngine.strFileName == LPWSTR (NULL) ) + { + MessageBoxA(0,"Can't Open Target File.","Error", MB_OK && MB_ICONERROR); + return; + } + + // New Section information (.VM Section) + const DWORD SectionSize=0x10000; + BYTE tmpBytes[16]; + LPBYTE NewSection=(LPBYTE)VirtualAlloc(0,SectionSize,0x3000,0x40); + ZeroMemory(NewSection,SectionSize); + DWORD NewSectionVA=InjectionEngine.GetNewSectionVA(); + DWORD iCaveVA=NewSectionVA; + LPBYTE iCaveMem=NewSection; + + // Add new empty section to file + InjectionEngine.AddNewSection(NewSection,SectionSize); + + + UpdateData(true); + DWORD VAStart=wcstol(strVAStart.GetBuffer(), NULL, 16); + DWORD VAEnd=wcstol(strVAEnd.GetBuffer(), NULL, 16);; + DWORD iVA=VAStart; + LPBYTE iCode=InjectionEngine.pPEBytes + InjectionEngine.V2O(iVA); + DISASM iDiASM; + int iSize; + ZeroMemory(&iDiASM,sizeof(DISASM)); + iDiASM.VirtualAddr=iVA; + iDiASM.EIP=(uintptr_t)iCode; + + // Get Virtual Addresses + iVMCompiler.VAStart=VAStart; + iVMCompiler.VAEnd=VAEnd; + iVMCompiler.VMOpcodeBase=NewSectionVA; + + while (iVAAddToLog(Addr,VMOpcodeBase+UsedSize,&OpcodeTable[UsedSize]); + + + //------0:CALL Imm + //------1: x86 + bool bHandled=false; + AddressTable[AddressTableCount][0]=Addr; + AddressTable[AddressTableCount][1]=UsedSize; + + LPBYTE iOpcode=&OpcodeTable[UsedSize]; + DWORD iVMOpcode=VMOpcodeBase+UsedSize; + DWORD tmp; + DWORD T1=0; + DWORD T2=0; + switch (Opcode[0]) + { + case 0xE8: + iOpcode[0]=iVMHandler.GetHandlerIndex(VM_CALL); + tmp=*(LPDWORD(&Opcode[1])) + Addr + 5; + *(LPDWORD(&iOpcode[1]))=tmp; + UsedSize+=5; + break; + + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + case 0xEB: + T1=iDiASM.Instruction.AddrValue; + Process_JCC(Opcode,T1); + break; + + + + case 0x68: + tmp=*(LPDWORD(&Opcode[1])); + Compile_PUSH_Imm32(tmp); + break; + case 0x6A: + tmp=*(LPDWORD(&Opcode[1])); + tmp&=0xFF; + __asm + { + push eax + mov eax,tmp + movsx eax,al + mov tmp,eax + pop eax + } + Compile_PUSH_Imm32(tmp); + + break; + + + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + ProcessPUSHR32(Opcode[0]); + break; + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + ProcessPOPR32(Opcode[0]); + break; + //------------------------------ + default: + if ((Opcode[0]==0xF && (Opcode[1]==0x82 || Opcode[1]==0x83 || Opcode[1]==0x84 || Opcode[1]==0x85 || Opcode[1]==0x86 || Opcode[1]==0x87|| Opcode[1]==0x8C || Opcode[1]==0x8D ||Opcode[1]==0x8E || Opcode[1]==0x8F)) || Opcode[0]==0xE9) + { + + T1=iDiASM.Instruction.AddrValue; + Process_JCC(Opcode,T1); + + } + else if ((Opcode[0]==0x89 || Opcode[0]==0x8B) && Opcode[1]>=0xC0 && Opcode[1]<=0xFF ) + { + ProcessMOVR32R32(Opcode); + } + else if ((Opcode[0]==0x81 || Opcode[0]==0x83) && Opcode[1]>=0xC0 && Opcode[1]<0xC8 ) + { + ProcessADDR32_Imm(Opcode); + } + else if (Opcode[0]>=0x40 && Opcode[0]<0x50) + { + ProcessINC_DECR32(Opcode); + } + else if ((Opcode[0]==0x81 || Opcode[0]==0x83) && Opcode[1]>=0xE8 && Opcode[1]<0xF0 ) + { + ProcessSUBR32_Imm(Opcode); + } + else if (Opcode[0]==0x89 &&Opcode[1]>=0x40 && Opcode[1]<0x80 ) + { + ProcessMOV_MemR32Imm8_R32(Opcode); + } + else if (Opcode[0]==0x89 &&Opcode[1]>=0x40 && Opcode[1]<0xC0 ) + { + ProcessMOV_MemR32Imm32_R32(Opcode); + } + else if (Opcode[0]==0xC7 &&Opcode[1]>=0x80 && Opcode[1]<0x88 ) + { + ProcessMOV_MemR32Imm32_Imm32(Opcode); + } + else if (Opcode[0]==0x8B &&Opcode[1]>=0x80 && Opcode[1]<0xC0 ) + { + ProcessMOV_R32_MemR32Imm32(Opcode); + } + else if (Opcode[0]==0x8B &&Opcode[1]>=0x40 && Opcode[1]<0x80 ) + { + ProcessMOV_R32_MemR32Imm8(Opcode); + } + else if (Opcode[0]==0x8D && Opcode[1]>=0x80 && Opcode[1]<0xC0 ) + { + ProcessLEA_R32_MemR32Imm32(Opcode); + } + else if ((Opcode[0]==0x33 || Opcode[0]==0x31) && Opcode[1]>=0xC0 && Opcode[1]<=0xFF ) + { + ProcessXORR32_R32(Opcode); + } + else if (Opcode[0]>=0xB8 && Opcode[0]<=0xBF) + { + ProcessMOVR32_Imm(Opcode); + } + else if (Opcode[0]==0xA1 || ((Opcode[0]==0x8B) && (Opcode[1]==0xD || Opcode[1]==0x15 || Opcode[1]==0x1D || Opcode[1]==0x25 || Opcode[1]==0x2D || Opcode[1]==0x35 || Opcode[1]==0x3D ))) + { + ProcessMOVR32_MemImm(Opcode); + } + else if (Opcode[0]==0xA3 || ((Opcode[0]==0x89) && (Opcode[1]==0xD || Opcode[1]==0x15 || Opcode[1]==0x1D || Opcode[1]==0x25 || Opcode[1]==0x2D || Opcode[1]==0x35 || Opcode[1]==0x3D ))) + { + ProcessMOVMemImm_R32(Opcode); + } + else if (Opcode[0]==0x25 || ((Opcode[0]==0x81) && Opcode[1]>=0xE0 && Opcode[1]<0xE8 )) + { + ProcessANDR32_Imm(Opcode); + } + else if (Opcode[0]==0xD || ((Opcode[0]==0x83 || Opcode[0]==0x81) && Opcode[1]>=0xC8 && Opcode[1]<0xD0 )) + { + ProcessORR32_Imm(Opcode); + } + else if (Opcode[0]==0x3D || ((Opcode[0]==0x83 || Opcode[0]==0x81) && Opcode[1]>=0xF8 && Opcode[1]<=0xFF )) + { + ProcessCMPR32_Imm(Opcode); + } + else if (Opcode[0]==0xC1 && Opcode[1]>=0xE0 && Opcode[1]<0xE8 ) + { + ProcessSHLR32_Imm(Opcode); + } + else if (Opcode[0]==0xC1 && Opcode[1]>=0xE8 && Opcode[1]<0xF0 ) + { + ProcessSHRR32_Imm(Opcode); + } + else if (Opcode[0]==0xF7 && Opcode[1]>=0xD0 && Opcode[1]<0xD8) + { + ProcessNOTR32(Opcode); + } + else + { + iOpcode[0]=iVMHandler.GetHandlerIndex(VM_X86); + iOpcode[1]=iSize; + CopyMemory(&iOpcode[2],Opcode,iSize); + UsedSize+=iSize+2; + } + break; + } + + + +} + + +void CVMCompiler::Finalize() +{ + InstructionLog->FixCare(); +} + + +void CVMCompiler::Compile_PUSH_Imm32(DWORD Imm) +{ + // Generate VM Opcode of "Push" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_PUSHImmDW); + *(LPDWORD(&OpcodeTable[UsedSize+1]))=Imm; + UsedSize+=5; + +} +void CVMCompiler::Compile_PUSH_R32(unsigned int RegisterOffset) +{ + // Generate VM Opcode of "Push Register" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_PUSHR32); + OpcodeTable[UsedSize+1]=RegisterOffset; + UsedSize+=2; + +} +void CVMCompiler::Compile_POP_R32(unsigned int RegisterOffset) +{ + // Generate VM Opcode of "POP" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_POPR32); + OpcodeTable[UsedSize+1]=RegisterOffset; + UsedSize+=2; +} +void CVMCompiler::Compile_AND_32() +{ + // Generate VM Opcode of "AND" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_AND32); + UsedSize++; +} +void CVMCompiler::Compile_NOT_32() +{ + // Generate VM Opcode of "NOT" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_NOT32); + UsedSize++; +} +void CVMCompiler::Compile_SHL_32() +{ + // Generate VM Opcode of "SHL" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_SHL32); + UsedSize++; +} +void CVMCompiler::Compile_SHR_32() +{ + // Generate VM Opcode of "SHR" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_SHR32); + UsedSize++; +} +void CVMCompiler::Compile_JCCIn() +{ + // Generate VM Opcode of "JCC" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_JCCIn); + UsedSize++; +} +void CVMCompiler::Compile_ADD_32() +{ + // Generate VM Opcode of "ADD" + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_ADD32); + UsedSize++; +} +void CVMCompiler::Compile_OR_32() +{ + // Generate VM Opcode of "OR" + Compile_NOT_32(); + Compile_POP_R32(0x24); + Compile_NOT_32(); + Compile_AND_32(); + Compile_POP_R32(0x28); + Compile_NOT_32(); + Compile_POP_R32(0x24); + Compile_PUSH_R32(0x24); + Compile_PUSH_R32(0x24); + Compile_AND_32(); + + +} +void CVMCompiler::Compile_CMP_32() +{ + // Generate VM Opcode of "CMP" + Compile_SUB_32(); + Compile_POP_R32(0x24); + Compile_POP_R32(0x28); + Compile_PUSH_R32(0x24); +} +void CVMCompiler::Compile_SUB_32() +{ + // Generate VM Opcode of "SUB" + Compile_NOT_32(); + Compile_PUSH_Imm32(1); + Compile_ADD_32(); + Compile_POP_R32(0x24); + Compile_ADD_32(); +} +void CVMCompiler::Compile_NOTBit() +{ + // Generate VM Opcode of "NOT" Bit + Compile_PUSH_Imm32(1); + Compile_ADD_32(); + Compile_POP_R32(0x28); + Compile_PUSH_Imm32(1); + Compile_AND_32(); + Compile_POP_R32(0x28); + +} +void CVMCompiler::Compile_GetDWORDDS() +{ + // Generate VM Opcode of "GetDWORDS" (all type of opcodes that get DWORD data) + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_GetDWORDDS); + UsedSize++; +} +void CVMCompiler::Compile_SetDWORDDS() +{ + // Generate VM Opcode of "GetDWORDS" (all type of opcodes that set DWORD data) + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_SetDWORDDS); + UsedSize++; +} + +void CVMCompiler::Process_JCC(LPBYTE Opcode,DWORD Dest) +{ + // Generate VM Opcode of "JCC" + DWORD *dwNext; + if (Dest>=VAStart && DestAddToCare((LPBYTE)(OpcodeTable+UsedSize),Dest); + Compile_PUSH_Imm32(Dest); + dwNext=(LPDWORD)&OpcodeTable[UsedSize+1]; + Compile_PUSH_Imm32(0); + + if (Opcode[0]==0xEB || Opcode[0]==0xE9) + { + Compile_PUSH_Imm32(1); + Compile_JCCIn(); + } + else if (Opcode[0]==0x77 || Opcode[0]==0x76 || (Opcode[0]==0xF && (Opcode[1]==0x87 || Opcode[1]==0x86))) + { + + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(1); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_NOTBit(); + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x40); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_R32(6); + Compile_SHR_32(); + Compile_POP_R32(0x24); + Compile_NOTBit(); + + Compile_AND_32(); + Compile_POP_R32(0x24); + + if (Opcode[0]==0x76 || (Opcode[0]==0xF && Opcode[1]==0x86)) + Compile_NOTBit(); + + Compile_JCCIn(); + + *dwNext=VMOpcodeBase+UsedSize; + + } + else if (Opcode[0]==0x75 || Opcode[0]==0x74 || (Opcode[0]==0xF && (Opcode[1]==0x84 ||Opcode[1]==0x85 )) ) + { + + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x40); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(6); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + if (Opcode[0]==0x75 || (Opcode[0]==0xF && Opcode[1]==0x85)) //NOT + Compile_NOTBit(); + + Compile_JCCIn(); + + + *dwNext=VMOpcodeBase+UsedSize; + + } + else if (Opcode[0]==0x72 || Opcode[0]==0x73 || (Opcode[0]==0xF && (Opcode[1]==0x82 ||Opcode[1]==0x83 )) ) + { + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(1); + Compile_AND_32(); + Compile_POP_R32(0x24); + + if (Opcode[0]==0x73 || (Opcode[0]==0xF && Opcode[1]==0x83)) + Compile_NOTBit(); + + Compile_JCCIn(); + + + *dwNext=VMOpcodeBase+UsedSize; + + } + else if (Opcode[0]==0x7E || Opcode[0]==0x7F || (Opcode[0]==0xF && (Opcode[1]==0x8E ||Opcode[1]==0x8F )) ) + { + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x40); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(6); + Compile_SHR_32(); + Compile_POP_R32(0x24); + Compile_NOTBit(); + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x800); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(11); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x80); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(7); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + Compile_CMP_32(); + Compile_PUSH_Imm32(0x40); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(6); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + + Compile_AND_32(); + Compile_POP_R32(0x24); + + + + + if (Opcode[0]==0x7E || (Opcode[0]==0xF && Opcode[1]==0x8E)) + Compile_NOTBit(); + + Compile_JCCIn(); + + + *dwNext=VMOpcodeBase+UsedSize; + + } + else if (Opcode[0]==0x7C || Opcode[0]==0x7D || (Opcode[0]==0xF && (Opcode[1]==0x8C ||Opcode[1]==0x8D )) ) + { + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x800); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(11); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + Compile_PUSH_R32(0x20); + Compile_PUSH_Imm32(0x80); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(7); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + Compile_CMP_32(); + Compile_PUSH_Imm32(0x40); + Compile_AND_32(); + Compile_POP_R32(0x24); + Compile_PUSH_Imm32(6); + Compile_SHR_32(); + Compile_POP_R32(0x24); + + + + if (Opcode[0]==0x7C || (Opcode[0]==0xF && Opcode[1]==0x8C)) + Compile_NOTBit(); + + Compile_JCCIn(); + + + *dwNext=VMOpcodeBase+UsedSize; + + + } + + } + else + { + + + } + + +} +void CVMCompiler::ProcessPUSHR32(BYTE iOpcode) +{ + // Generate VM Opcode of "Push Register" + if (iOpcode!=0x54) + Compile_PUSH_R32(0x1C - (iOpcode-0x50)*4); + else + { + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_PUSHESP); + UsedSize++; + Compile_PUSH_Imm32(4); + Compile_ADD_32(); + Compile_POP_R32(0x30); + + + } + +} +void CVMCompiler::ProcessPOPR32(BYTE iOpcode) +{ + // Generate VM Opcode of "POP Register" + if (iOpcode!=0x5C) + Compile_POP_R32(0x1C - (iOpcode-0x58)*4); + else + { + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_POPESP); + UsedSize++; + + } + +} +void CVMCompiler::ProcessMOVR32R32(LPBYTE iOpcode) +{ + // Generate VM Opcode of "Mov Register/Register" + int rDEST; + int rSRC; + if (iOpcode[0]==0x89) + { + rDEST=(iOpcode[1]-0xC0)%8; + rSRC=(iOpcode[1]-0xC0)/8; + } + else + { + rSRC=(iOpcode[1]-0xC0)%8; + rDEST=(iOpcode[1]-0xC0)/8; + + } + + + + ProcessPUSHR32(0x50+rSRC); + ProcessPOPR32(0x58+rDEST); +} +void CVMCompiler::ProcessADDR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "Add Register/Register" + if (iOpcode[0]!=0x81 && iOpcode[0]!=0x83) + return ; + DWORD dwImm=*(LPDWORD)(&iOpcode[2]); + + if (iOpcode[0]==0x83) + { + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + + } + + int rDEST=iOpcode[1]-0xC0; + + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x20); + ProcessPOPR32(0x58+rDEST); + + + +} +void CVMCompiler::ProcessSUBR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "SUB" + if (iOpcode[0]!=0x81 && iOpcode[0]!=0x83) + return ; + long dwImm=*(LPLONG)(&iOpcode[2]); + + if (iOpcode[0]==0x83) + { + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + + } + dwImm=dwImm*-1; + int rDEST=iOpcode[1]-0xE8; + + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x20); + ProcessPOPR32(0x58+rDEST); + + + + +} +void CVMCompiler::ProcessMOV_MemR32Imm8_R32(LPBYTE iOpcode) +{ + + // Generate VM Opcode of "Mov Register/Memory" + DWORD dwImm; + int rSRC; + int rDEST; + if ((iOpcode[1]-0x44)%8==4) + { + dwImm=*(LPDWORD)(&iOpcode[2]); + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + rSRC=(iOpcode[1]-0x40)/8; + rDEST=(iOpcode[1]-0x40)%8; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[3]); + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + rSRC=(iOpcode[1]-0x44)/8;; + + if (iOpcode[2]>=0x20 && iOpcode[2]<0x28) + rDEST=0x20; + else if (iOpcode[2]>=0x60 && iOpcode[2]<0x68) + rDEST=0x60; + else if (iOpcode[2]>=0xE0 && iOpcode[2]<0xE8) + rDEST=0xE0; + + rDEST=(iOpcode[2]-rDEST)%8; + } + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + ProcessPUSHR32(0x50 + rSRC); + if (rSRC==4)//SRC ESP + { + Compile_PUSH_Imm32(4); + Compile_ADD_32(); + Compile_POP_R32(0x30); + } + + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_SetDWORDDS); + UsedSize++; + +} +void CVMCompiler::ProcessMOV_MemR32Imm32_R32(LPBYTE iOpcode) +{ + + // Generate VM Opcode of "Mov Memory/Register" + DWORD dwImm; + int rSRC; + int rDEST; + if ((iOpcode[1]-0x80)%8!=4) + { + dwImm=*(LPDWORD)(&iOpcode[2]); + + rSRC=(iOpcode[1]-0x80)/8; + rDEST=(iOpcode[1]-0x80)%8; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[3]); + rSRC=(iOpcode[1]-0x84)/8; + + if (iOpcode[2]>=0x20 && iOpcode[2]<0x28) + rDEST=0x20; + else if (iOpcode[2]>=0x60 && iOpcode[2]<0x68) + rDEST=0x60; + else if (iOpcode[2]>=0xE0 && iOpcode[2]<0xE8) + rDEST=0xE0; + + rDEST=(iOpcode[2]-rDEST)%8; + } + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + ProcessPUSHR32(0x50 + rSRC); + if (rSRC==4)//SRC ESP + { + Compile_PUSH_Imm32(4); + Compile_ADD_32(); + Compile_POP_R32(0x30); + } + + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_SetDWORDDS); + UsedSize++; + +} +void CVMCompiler::ProcessMOV_MemR32Imm32_Imm32(LPBYTE iOpcode) +{ + + // Generate VM Opcode of "Mov Memory/Memory" + DWORD dwSRCImm; + DWORD dwDestImm; + + int rDEST; + if ((iOpcode[1]-0x80)%8!=4) + { + dwDestImm=*(LPDWORD)(&iOpcode[2]); + dwSRCImm=*(LPDWORD)(&iOpcode[6]); + + rDEST=(iOpcode[1]-0x80)%8; + } + else + { + dwDestImm=*(LPDWORD)(&iOpcode[3]); + dwSRCImm=*(LPDWORD)(&iOpcode[7]); + + + if (iOpcode[2]>=0x20 && iOpcode[2]<0x28) + rDEST=0x20; + else if (iOpcode[2]>=0x60 && iOpcode[2]<0x68) + rDEST=0x60; + else if (iOpcode[2]>=0xE0 && iOpcode[2]<0xE8) + rDEST=0xE0; + + rDEST=(iOpcode[2]-rDEST)%8; + } + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwDestImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + Compile_PUSH_Imm32(dwSRCImm); + + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_SetDWORDDS); + UsedSize++; + +} +void CVMCompiler::ProcessMOV_R32_MemR32Imm32(LPBYTE iOpcode) +{ + + // Generate VM Opcode of "Mov Mem32/Register32" + DWORD dwImm; + int rSRC; + int rDEST; + if ((iOpcode[1]-0x80)%8!=4) + { + dwImm=*(LPDWORD)(&iOpcode[2]); + + rDEST=(iOpcode[1]-0x80)/8; + rSRC=(iOpcode[1]-0x80)%8; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[3]); + rDEST=(iOpcode[1]-0x84)/8; + + if (iOpcode[2]>=0x20 && iOpcode[2]<0x28) + rSRC=0x20; + else if (iOpcode[2]>=0x60 && iOpcode[2]<0x68) + rSRC=0x60; + else if (iOpcode[2]>=0xE0 && iOpcode[2]<0xE8) + rSRC=0xE0; + + rSRC=(iOpcode[2]-rSRC)%8; + } + ProcessPUSHR32(0x50 + rSRC); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_GetDWORDDS); + UsedSize++; + ProcessPOPR32(0x58+rDEST); + +} +void CVMCompiler::ProcessMOV_R32_MemR32Imm8(LPBYTE iOpcode) +{ + + // Generate VM Opcode of "Memory / DWORD Memory" + DWORD dwImm; + int rSRC; + int rDEST; + if ((iOpcode[1]-0x40)%8!=4) + { + dwImm=*(LPDWORD)(&iOpcode[2]); + + rDEST=(iOpcode[1]-0x40)/8; + rSRC=(iOpcode[1]-0x40)%8; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[3]); + rDEST=(iOpcode[1]-0x44)/8; + + if (iOpcode[2]>=0x20 && iOpcode[2]<0x28) + rSRC=0x20; + else if (iOpcode[2]>=0x60 && iOpcode[2]<0x68) + rSRC=0x60; + else if (iOpcode[2]>=0xE0 && iOpcode[2]<0xE8) + rSRC=0xE0; + + rSRC=(iOpcode[2]-rSRC)%8; + } + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + ProcessPUSHR32(0x50 + rSRC); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + OpcodeTable[UsedSize]=iVMHandler.GetHandlerIndex(VM_GetDWORDDS); + UsedSize++; + ProcessPOPR32(0x58+rDEST); + +} +void CVMCompiler::ProcessLEA_R32_MemR32Imm32(LPBYTE iOpcode) +{ + + // Generate VM Opcode of "Mov Mem/16 bit Register" + DWORD dwImm; + int rSRC; + int rDEST; + if ((iOpcode[1]-0x80)%8!=4) + { + dwImm=*(LPDWORD)(&iOpcode[2]); + + rDEST=(iOpcode[1]-0x80)/8; + rSRC=(iOpcode[1]-0x80)%8; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[3]); + rDEST=(iOpcode[1]-0x84)/8; + + if (iOpcode[2]>=0x20 && iOpcode[2]<0x28) + rSRC=0x20; + else if (iOpcode[2]>=0x60 && iOpcode[2]<0x68) + rSRC=0x60; + else if (iOpcode[2]>=0xE0 && iOpcode[2]<0xE8) + rSRC=0xE0; + + rSRC=(iOpcode[2]-rSRC)%8; + } + ProcessPUSHR32(0x50 + rSRC); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + ProcessPOPR32(0x58 + rDEST); + +} +void CVMCompiler::ProcessXORR32_R32(LPBYTE iOpcode) +{ + // Generate VM Opcode of "XOR" + if (iOpcode[0]!=0x33 && iOpcode[0]!=0x31 ) + return; + + int rSRC=(iOpcode[1]-0xC0)/8; + int rDEST=(iOpcode[1]-0xC0)%8; + + ProcessPUSHR32(0x50+rSRC); + ProcessPUSHR32(0x50+rDEST); + Compile_NOT_32(); + Compile_AND_32(); + Compile_POP_R32(0x30); + + ProcessPUSHR32(0x50+rDEST); + ProcessPUSHR32(0x50+rSRC); + Compile_NOT_32(); + Compile_AND_32(); + Compile_POP_R32(0x30); + + Compile_ADD_32(); + Compile_POP_R32(0x30); + + ProcessPOPR32(0x58 + rDEST); + +} +void CVMCompiler::ProcessMOVR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "Mov Register16/Register16" (16 means 16 bit) + if (iOpcode[0]<0xB8 || iOpcode[0]>0xBF) + return; + + DWORD dwImm=*(LPDWORD)(&iOpcode[1]); + + Compile_PUSH_Imm32(dwImm); + ProcessPOPR32(0x58 + iOpcode[0] - 0xB8); +} +void CVMCompiler::ProcessMOVR32_MemImm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "Mov Register16/memory16" (16 means 16 bit) + DWORD dwImm; + int rDEST; + if (iOpcode[0]==0xA1) + { + dwImm=*(LPDWORD)(&iOpcode[1]); + rDEST=0; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[2]); + rDEST=(iOpcode[1]-0xD)/8 + 1; + } + + Compile_PUSH_Imm32(dwImm); + Compile_GetDWORDDS(); + ProcessPOPR32(0x58 + rDEST); + + + +} +void CVMCompiler::ProcessMOVMemImm_R32(LPBYTE iOpcode) +{ + DWORD dwImm; + int rSRC; + if (iOpcode[0]==0xA3) + { + dwImm=*(LPDWORD)(&iOpcode[1]); + rSRC=0; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[2]); + rSRC=(iOpcode[1]-0xD)/8 + 1; + } + + Compile_PUSH_Imm32(dwImm); + ProcessPUSHR32(0x50+rSRC); + Compile_SetDWORDDS(); + +} +void CVMCompiler::ProcessANDR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "AND Register" + DWORD dwImm; + int rDEST; + if (iOpcode[0]==0x25) + { + dwImm=*(LPDWORD)(&iOpcode[1]); + rDEST=0; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[2]); + rDEST=(iOpcode[1]-0xE0); + } + + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_AND_32(); + Compile_POP_R32(0x30); + ProcessPOPR32(0x58 + rDEST); + +} +void CVMCompiler::ProcessORR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "OR Register/memory" + DWORD dwImm; + int rDEST; + if (iOpcode[0]==0xD) + { + dwImm=*(LPDWORD)(&iOpcode[1]); + rDEST=0; + } + else + { + dwImm=*(LPDWORD)(&iOpcode[2]); + if (iOpcode[0]==0x83) + { + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + + } + rDEST=(iOpcode[1]-0xC8); + } + + ProcessPUSHR32(0x50 + rDEST); + Compile_NOT_32(); + Compile_PUSH_Imm32(dwImm^0xFFFFFFFF); + Compile_AND_32(); + Compile_POP_R32(0x30); + Compile_NOT_32(); + Compile_PUSH_Imm32(0xFFFFFFFF); + Compile_AND_32(); + Compile_POP_R32(0x20); + ProcessPOPR32(0x58 + rDEST); + +} +void CVMCompiler::ProcessSHLR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "SHL Register - memory" + int rDEST=iOpcode[1]-0xE0; + DWORD dwImm; + __asm + { + push eax + mov eax,iOpcode + movzx eax,byte ptr ds:[eax+2] + mov dwImm,eax + pop eax + } + + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_SHL_32(); + Compile_POP_R32(0x30); + ProcessPOPR32(0x58 + rDEST); + +} +void CVMCompiler::ProcessSHRR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "SHR Register - memory" + int rDEST=iOpcode[1]-0xE8; + DWORD dwImm; + __asm + { + push eax + mov eax,iOpcode + movzx eax,byte ptr ds:[eax+2] + mov dwImm,eax + pop eax + } + + ProcessPUSHR32(0x50 + rDEST); + Compile_PUSH_Imm32(dwImm); + Compile_SHR_32(); + Compile_POP_R32(0x30); + ProcessPOPR32(0x58 + rDEST); + +} +void CVMCompiler::ProcessNOTR32(LPBYTE iOpcode) +{ + // Generate VM Opcode of "NOT Register" + int rDEST=iOpcode[1]-0xD0; + ProcessPUSHR32(0x50+rDEST); + Compile_NOT_32(); + ProcessPOPR32(0x58+rDEST); + +} +void CVMCompiler::ProcessINC_DECR32(LPBYTE iOpcode) +{ + // Generate VM Opcode of "DEC Register" + int rDEST; + int dwAdd; + + if (iOpcode[0]<0x48) + { + dwAdd=1; + rDEST=iOpcode[0]-0x40; + } + else + { + dwAdd=0xFFFFFFFF; + rDEST=iOpcode[0]-0x48; + } + + ProcessPUSHR32(0x50+rDEST); + Compile_PUSH_Imm32(dwAdd); + Compile_ADD_32(); + Compile_POP_R32(0x20); + ProcessPOPR32(0x58+rDEST); + +} +void CVMCompiler::ProcessCMPR32_Imm(LPBYTE iOpcode) +{ + // Generate VM Opcode of "CMP Register - Memory" + if (iOpcode[0]!=0x81 && iOpcode[0]!=0x83 && iOpcode[0]!=0x3D) + return ; + DWORD dwImm; + int rDEST=0; + if (iOpcode[0]!=0x3D) + { + + rDEST=iOpcode[1]-0xF8; + dwImm=*(LPDWORD)(&iOpcode[2]); + + if (iOpcode[0]==0x83) + { + __asm + { + push eax + mov eax,dwImm + movsx eax,al + mov dwImm,eax + pop eax + + } + } + + } + else + dwImm=*(LPDWORD)(&iOpcode[1]); + + + // Finalize ... + ProcessPUSHR32(0x50 + rDEST); + Compile_NOT_32(); + Compile_PUSH_Imm32(dwImm); + Compile_ADD_32(); + Compile_POP_R32(0x30); + Compile_PUSH_R32(0x30); + Compile_PUSH_Imm32(0x815); + Compile_AND_32(); + Compile_POP_R32(0x34); + Compile_POP_R32(0x38); + Compile_NOT_32(); + Compile_POP_R32(0x34); + Compile_PUSH_R32(0x34); + Compile_PUSH_R32(0x34); + Compile_AND_32(); + Compile_PUSH_Imm32(0x815); + Compile_NOT_32(); + Compile_AND_32(); + Compile_POP_R32(0x30); + Compile_PUSH_R32(0x38); + + Compile_ADD_32(); + Compile_POP_R32(0x20); + Compile_POP_R32(0x20); + Compile_POP_R32(0x30); + + + + + + +} \ No newline at end of file diff --git a/VM Project/VMCompiler.h b/VM Project/VMCompiler.h new file mode 100644 index 0000000..6e8b25d --- /dev/null +++ b/VM Project/VMCompiler.h @@ -0,0 +1,70 @@ +#pragma once +#include "VMHandlerProcessor.h" +#include "BeaEngine.h" +class CVMCompiler +{ +private: + CVMHandlerProcessor &iVMHandler; +public: + DWORD VAStart; + DWORD VAEnd; + DWORD VMOpcodeBase; + LPBYTE OpcodeTable; + DWORD UsedSize; + DWORD AddressTable[1000][2]; + DWORD AddressTableCount; + void Finalize(); + void CompileNow(DWORD,LPBYTE,DWORD,DISASM&); + + + //------------------------------ + + void Compile_PUSH_R32(unsigned int RegisterOffset); + void Compile_POP_R32(unsigned int RegisterOffset); + void Compile_PUSH_Imm32(DWORD Imm); + void Compile_AND_32(); + void Compile_NOT_32(); + void Compile_JCCIn(); + void Compile_SHR_32(); + void Compile_SHL_32(); + void Compile_ADD_32(); + void Compile_OR_32(); + void Compile_CMP_32(); + void Compile_SUB_32(); + void Compile_GetDWORDDS(); + void Compile_SetDWORDDS(); + void Compile_NOTBit(); + + + void Process_JCC(LPBYTE Opcode,DWORD Dest); + void ProcessPUSHR32(BYTE iOpcode); + void ProcessPOPR32(BYTE iOpcode); + void ProcessMOVR32R32(LPBYTE iOpcode); + void ProcessADDR32_Imm(LPBYTE iOpcode); + void ProcessSUBR32_Imm(LPBYTE iOpcode); + void ProcessMOV_MemR32Imm8_R32(LPBYTE iOpcode); + void ProcessMOV_MemR32Imm32_R32(LPBYTE iOpcode); + void ProcessMOVR32_Imm(LPBYTE iOpcode); + void ProcessMOVR32_MemImm(LPBYTE iOpcode); + void ProcessMOVMemImm_R32(LPBYTE iOpcode); + void ProcessMOV_MemR32Imm32_Imm32(LPBYTE iOpcode); + void ProcessMOV_R32_MemR32Imm32(LPBYTE iOpcode); + void ProcessMOV_R32_MemR32Imm8(LPBYTE iOpcode); + void ProcessLEA_R32_MemR32Imm32(LPBYTE iOpcode); + void ProcessXORR32_R32(LPBYTE iOpcode); + void ProcessANDR32_Imm(LPBYTE iOpcode); + void ProcessORR32_Imm(LPBYTE iOpcode); + void ProcessSHLR32_Imm(LPBYTE iOpcode); + void ProcessSHRR32_Imm(LPBYTE iOpcode); + void ProcessCMPR32_Imm(LPBYTE iOpcode); + void ProcessNOTR32(LPBYTE iOpcode); + void ProcessINC_DECR32(LPBYTE iOpcode); + + + + //------------------------------- + + CVMCompiler(CVMHandlerProcessor &HandlerProcessor); + ~CVMCompiler(void); +}; + diff --git a/VM Project/VMHandlerProcessor.cpp b/VM Project/VMHandlerProcessor.cpp new file mode 100644 index 0000000..774d682 --- /dev/null +++ b/VM Project/VMHandlerProcessor.cpp @@ -0,0 +1,634 @@ +#include "stdafx.h" +#include "VMHandlerProcessor.h" + + +CVMHandlerProcessor::CVMHandlerProcessor(void) +{ + HandlerCount=0; + +} + + +CVMHandlerProcessor::~CVMHandlerProcessor(void) +{ +} +unsigned CVMHandlerProcessor::GetHandlerIndex(VMHandlerCodes iType) +{ + // Main VM Handler + unsigned int Result=0xFFFFFFFF; + + for (unsigned int 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 NK9A-8OQnhX{{?OVn?wKr literal 0 HcmV?d00001 diff --git a/VM Project/res/VMProject.rc2 b/VM Project/res/VMProject.rc2 new file mode 100644 index 0000000000000000000000000000000000000000..09208e7f923bd2f491874b667af183edb12f5230 GIT binary patch literal 802 zcmdUty>0?Q41~WLDetfnWfV^04G^I~D7h#hw1}TYTtp7(I0{}qFtg#OND4}jwLY)y zvB&G%|72u5(2&jujCkRViZx$EX4JHJr%PM0C!I>(jiOswvt$P$3faauvJl2~3f;C$ zSn1Z~Q4*LdZhWAW<-90gkt}~*-91Xct*-<*s5z7yTeDX}6oU!z)y5T2;MZkH%j11Z%rYeQeKtte1aBMmgxwI)27ZqW76 zO*GZ1E|EfgV+Fd^A2-bYXexGd*C_!)HKb=JPMV z44`cy4c^aKbYC6Oc;+)8_K4MYr(0@s!((m}s^f0jP)#wqpIGLvs=jN>dB`KTp)_GM z$kq|`8dAN0w8*c*Jt!oHkW+48S+ScQ%`&t|$&)Q+TSfUWc1#v8N=7>G!?TMsV(bXE z)xwy#eKm~q=>Cm)(&xQrZ!e9zM~+jtr;h%aQKa$goi*57rL*JNyDQm4*Hc9i=IhsC z=M##xW!Q)6(kmT$BvG|=MgnZD0{52Yq^^6a#3sjjYo7fvkrFEG-qCEPWK_tM?lJnU zn@Cf%6Qqpl9P_sMaL4;vXYcc5;^Ora&UeoUd(R7~ycV_BAtMnTZ?n?+zQ^ttT_4Tv zYA3FioM~fQ!`d<$>%{f>33KBRO$C{fz9H01>OJC`=!|_`LqeVDr(D*vEQP$FVs1; Kn9V%>FTVn)km2nB literal 0 HcmV?d00001 diff --git a/VM Project/stdafx.cpp b/VM Project/stdafx.cpp new file mode 100644 index 0000000..f12d5cd --- /dev/null +++ b/VM Project/stdafx.cpp @@ -0,0 +1,8 @@ + +// stdafx.cpp : source file that includes just the standard includes +// VM Project.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + diff --git a/VM Project/stdafx.h b/VM Project/stdafx.h new file mode 100644 index 0000000..42011c8 --- /dev/null +++ b/VM Project/stdafx.h @@ -0,0 +1,53 @@ + +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, +// but are changed infrequently + +#pragma once + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit + +// turns off MFC's hiding of some common and often safely ignored warning messages +#define _AFX_ALL_WARNINGS + +#include // MFC core and standard components +#include // MFC extensions + + + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC support for Internet Explorer 4 Common Controls +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC support for ribbons and control bars + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/VM Project/targetver.h b/VM Project/targetver.h new file mode 100644 index 0000000..90e767b --- /dev/null +++ b/VM Project/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include