├── CosExampleDriver
├── CosExampleDriver.sln
└── CosExampleDriver
│ ├── CosExampleDriver.filters
│ ├── CosExampleDriver.user
│ ├── CosExampleDriver.vcxproj
│ ├── Include.hpp
│ └── Main.cpp
├── CosKernelmode
├── CosKernelmode.sln
└── CosKernelmode
│ ├── CosKernelmode.vcxproj
│ ├── CosKernelmode.vcxproj.filters
│ ├── CosKernelmode.vcxproj.user
│ ├── Include.hpp
│ ├── Main.cpp
│ ├── Mapper.cpp
│ ├── Mapper.hpp
│ ├── Memory.cpp
│ ├── Memory.hpp
│ ├── Native.cpp
│ ├── Native.hpp
│ ├── Signature Scan.cpp
│ └── Signature Scan.hpp
├── CosUsermode
├── CosUsermode.sln
└── CosUsermode
│ ├── CosUsermode.vcxproj
│ ├── CosUsermode.vcxproj.filters
│ ├── CosUsermode.vcxproj.user
│ ├── loadup.hpp
│ ├── main.cpp
│ ├── mapper_resource.hpp
│ ├── stdafx.hpp
│ └── util.hpp
├── README.md
└── example.PNG
/CosExampleDriver/CosExampleDriver.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30804.86
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CosExampleDriver", "CosExampleDriver\CosExampleDriver.vcxproj", "{89A95BE7-6815-4B4B-BCD6-6C83FB47A920}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Release|x64 = Release|x64
11 | EndGlobalSection
12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
13 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}.Release|x64.ActiveCfg = Release|x64
14 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}.Release|x64.Build.0 = Release|x64
15 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}.Release|x64.Deploy.0 = Release|x64
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | GlobalSection(ExtensibilityGlobals) = postSolution
21 | SolutionGuid = {FF68B84B-D997-4FA3-8258-A9B5E5967AFF}
22 | EndGlobalSection
23 | EndGlobal
24 |
--------------------------------------------------------------------------------
/CosExampleDriver/CosExampleDriver/CosExampleDriver.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 | {8E41214B-6785-4CFE-B992-037D68949A14}
18 | inf;inv;inx;mof;mc;
19 |
20 |
21 |
22 |
23 | Source Files
24 |
25 |
26 |
27 |
28 | Header Files
29 |
30 |
31 |
--------------------------------------------------------------------------------
/CosExampleDriver/CosExampleDriver/CosExampleDriver.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Off
5 |
6 |
--------------------------------------------------------------------------------
/CosExampleDriver/CosExampleDriver/CosExampleDriver.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 | Debug
22 | ARM
23 |
24 |
25 | Release
26 | ARM
27 |
28 |
29 | Debug
30 | ARM64
31 |
32 |
33 | Release
34 | ARM64
35 |
36 |
37 |
38 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}
39 | {1bc93793-694f-48fe-9372-81e2b05556fd}
40 | v4.5
41 | 12.0
42 | Debug
43 | Win32
44 | SpooferDriver
45 | $(LatestTargetPlatformVersion)
46 | CosExampleDriver
47 |
48 |
49 |
50 | Windows10
51 | true
52 | WindowsKernelModeDriver10.0
53 | Driver
54 | KMDF
55 | Universal
56 |
57 |
58 | Windows10
59 | false
60 | WindowsKernelModeDriver10.0
61 | Driver
62 | KMDF
63 | Universal
64 |
65 |
66 | Windows10
67 | true
68 | WindowsKernelModeDriver10.0
69 | Driver
70 | KMDF
71 | Universal
72 |
73 |
74 | Windows10
75 | false
76 | WindowsKernelModeDriver10.0
77 | Driver
78 | KMDF
79 | Universal
80 | false
81 |
82 |
83 | Windows10
84 | true
85 | WindowsKernelModeDriver10.0
86 | Driver
87 | KMDF
88 | Universal
89 |
90 |
91 | Windows10
92 | false
93 | WindowsKernelModeDriver10.0
94 | Driver
95 | KMDF
96 | Universal
97 |
98 |
99 | Windows10
100 | true
101 | WindowsKernelModeDriver10.0
102 | Driver
103 | KMDF
104 | Universal
105 |
106 |
107 | Windows10
108 | false
109 | WindowsKernelModeDriver10.0
110 | Driver
111 | KMDF
112 | Universal
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | DbgengKernelDebugger
125 |
126 |
127 | DbgengKernelDebugger
128 |
129 |
130 | DbgengKernelDebugger
131 | $(VC_IncludePath);$(IncludePath)
132 |
133 |
134 | DbgengKernelDebugger
135 | $(VC_IncludePath);$(IncludePath)
136 | $(SolutionDir)Output\
137 | $(SolutionDir)CosExampleDriver\Bin\
138 |
139 |
140 | DbgengKernelDebugger
141 |
142 |
143 | DbgengKernelDebugger
144 |
145 |
146 | DbgengKernelDebugger
147 |
148 |
149 | DbgengKernelDebugger
150 |
151 |
152 |
153 | stdcpp17
154 | TurnOffAllWarnings
155 | false
156 | true
157 |
158 |
159 | DriverEntry
160 |
161 |
162 |
163 |
164 | stdcpp17
165 | TurnOffAllWarnings
166 | false
167 | true
168 |
169 |
170 | DriverEntry
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
--------------------------------------------------------------------------------
/CosExampleDriver/CosExampleDriver/Include.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 |
6 | #include
7 | #include
8 |
9 | #define DebugPrint(fmt, ...) DbgPrintEx(0, 0, "[ExampleMappedDriver] " fmt, ##__VA_ARGS__)
--------------------------------------------------------------------------------
/CosExampleDriver/CosExampleDriver/Main.cpp:
--------------------------------------------------------------------------------
1 | #include "Include.hpp"
2 |
3 | struct EntryInitialize
4 | {
5 | std::uintptr_t mappedImageBase{};
6 | std::size_t mappedImageSize{};
7 | };
8 |
9 | NTSTATUS DriverEntry(EntryInitialize* entryParam)
10 | {
11 | DebugPrint("Example Driver Mapped [%p] w/ Size [0x%x]", entryParam->mappedImageBase, entryParam->mappedImageSize);
12 |
13 | ExFreePool(reinterpret_cast(entryParam));
14 |
15 | return STATUS_SUCCESS;
16 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30804.86
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SignedManualMapper", "CosKernelmode\CosKernelmode.vcxproj", "{1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|ARM = Debug|ARM
11 | Debug|ARM64 = Debug|ARM64
12 | Debug|x64 = Debug|x64
13 | Debug|x86 = Debug|x86
14 | Release|ARM = Release|ARM
15 | Release|ARM64 = Release|ARM64
16 | Release|x64 = Release|x64
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM.ActiveCfg = Debug|ARM
21 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM.Build.0 = Debug|ARM
22 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM.Deploy.0 = Debug|ARM
23 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM64.ActiveCfg = Debug|ARM64
24 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM64.Build.0 = Debug|ARM64
25 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM64.Deploy.0 = Debug|ARM64
26 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x64.ActiveCfg = Debug|x64
27 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x64.Build.0 = Debug|x64
28 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x64.Deploy.0 = Debug|x64
29 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x86.ActiveCfg = Debug|Win32
30 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x86.Build.0 = Debug|Win32
31 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x86.Deploy.0 = Debug|Win32
32 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM.ActiveCfg = Release|ARM
33 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM.Build.0 = Release|ARM
34 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM.Deploy.0 = Release|ARM
35 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM64.ActiveCfg = Release|ARM64
36 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM64.Build.0 = Release|ARM64
37 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM64.Deploy.0 = Release|ARM64
38 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x64.ActiveCfg = Release|x64
39 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x64.Build.0 = Release|x64
40 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x64.Deploy.0 = Release|x64
41 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x86.ActiveCfg = Release|Win32
42 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x86.Build.0 = Release|Win32
43 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x86.Deploy.0 = Release|Win32
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | GlobalSection(ExtensibilityGlobals) = postSolution
49 | SolutionGuid = {FF68B84B-D997-4FA3-8258-A9B5E5967AFF}
50 | EndGlobalSection
51 | EndGlobal
52 |
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/CosKernelmode.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 | Debug
22 | ARM
23 |
24 |
25 | Release
26 | ARM
27 |
28 |
29 | Debug
30 | ARM64
31 |
32 |
33 | Release
34 | ARM64
35 |
36 |
37 |
38 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}
39 | {1bc93793-694f-48fe-9372-81e2b05556fd}
40 | v4.5
41 | 12.0
42 | Debug
43 | Win32
44 | CosExampleDriver
45 | $(LatestTargetPlatformVersion)
46 | CosExampleDriver
47 |
48 |
49 |
50 | Windows10
51 | true
52 | WindowsKernelModeDriver10.0
53 | Driver
54 | KMDF
55 | Universal
56 |
57 |
58 | Windows10
59 | false
60 | WindowsKernelModeDriver10.0
61 | Driver
62 | KMDF
63 | Universal
64 |
65 |
66 | Windows10
67 | true
68 | WindowsKernelModeDriver10.0
69 | Driver
70 | KMDF
71 | Universal
72 |
73 |
74 | Windows10
75 | false
76 | WindowsKernelModeDriver10.0
77 | Driver
78 | KMDF
79 | Universal
80 | false
81 |
82 |
83 | Windows10
84 | true
85 | WindowsKernelModeDriver10.0
86 | Driver
87 | KMDF
88 | Universal
89 |
90 |
91 | Windows10
92 | false
93 | WindowsKernelModeDriver10.0
94 | Driver
95 | KMDF
96 | Universal
97 |
98 |
99 | Windows10
100 | true
101 | WindowsKernelModeDriver10.0
102 | Driver
103 | KMDF
104 | Universal
105 |
106 |
107 | Windows10
108 | false
109 | WindowsKernelModeDriver10.0
110 | Driver
111 | KMDF
112 | Universal
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 | DbgengKernelDebugger
124 |
125 |
126 | DbgengKernelDebugger
127 |
128 |
129 | DbgengKernelDebugger
130 | $(VC_IncludePath);$(IncludePath)
131 |
132 |
133 | DbgengKernelDebugger
134 | $(VC_IncludePath);$(IncludePath)
135 | $(SolutionDir)Output\
136 | $(SolutionDir)CosExampleDriver\Bin\
137 |
138 |
139 | DbgengKernelDebugger
140 |
141 |
142 | DbgengKernelDebugger
143 |
144 |
145 | DbgengKernelDebugger
146 |
147 |
148 | DbgengKernelDebugger
149 |
150 |
151 |
152 | stdcpp17
153 | TurnOffAllWarnings
154 | false
155 | true
156 |
157 |
158 | DriverEntry
159 |
160 |
161 |
162 |
163 | stdcpp17
164 | TurnOffAllWarnings
165 | false
166 | true
167 |
168 |
169 | DriverEntry
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/CosKernelmode.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 | {8E41214B-6785-4CFE-B992-037D68949A14}
18 | inf;inv;inx;mof;mc;
19 |
20 |
21 |
22 |
23 | Source Files
24 |
25 |
26 | Source Files
27 |
28 |
29 | Source Files
30 |
31 |
32 | Source Files
33 |
34 |
35 | Source Files
36 |
37 |
38 |
39 |
40 | Header Files
41 |
42 |
43 | Header Files
44 |
45 |
46 | Header Files
47 |
48 |
49 | Header Files
50 |
51 |
52 | Header Files
53 |
54 |
55 |
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/CosKernelmode.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Off
5 |
6 |
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Include.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 |
6 | #include
7 | #include
8 | #include
9 |
10 | #include "Native.hpp"
11 | #include "Mapper.hpp"
12 | #include "Memory.hpp"
13 |
14 | #include "Signature Scan.hpp"
15 |
16 | #define RelativeAddress(addr, size) ((PVOID*)((PBYTE)(addr) + *(PINT)((PBYTE)(addr) + ((size) - (INT)sizeof(INT))) + (size)))
17 | #define DebugPrint(fmt, ...) DbgPrintEx(0, 0, "[SignedManualMapper] " fmt, ##__VA_ARGS__)
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Main.cpp:
--------------------------------------------------------------------------------
1 | #include "Include.hpp"
2 |
3 | std::uintptr_t(NTAPI* EnumerateDebuggingDevicesOriginal)(std::uintptr_t, std::uintptr_t*);
4 | std::uintptr_t hookAddress{};
5 |
6 | struct EntryInitialize
7 | {
8 | std::uintptr_t mappedImageBase{};
9 | std::size_t mappedImageSize{};
10 | };
11 |
12 | struct HookStruct
13 | {
14 | std::size_t rawDataSize{};
15 | std::uintptr_t rawDataAddress{};
16 | };
17 |
18 | using EntryFuncCall = NTSTATUS(__stdcall*) (EntryInitialize*);
19 |
20 | std::uintptr_t NTAPI EnumerateDebuggingDevicesHook(std::uintptr_t data, std::uintptr_t* status)
21 | {
22 | if (ExGetPreviousMode() != UserMode || !data)
23 | {
24 | return EnumerateDebuggingDevicesOriginal(data, status);
25 | }
26 |
27 | HookStruct requestStruct = { 0 };
28 | if (!Native::safeCopyMemory(&requestStruct, reinterpret_cast(data), sizeof(requestStruct)) || !requestStruct.rawDataSize || !requestStruct.rawDataAddress)
29 | {
30 | return EnumerateDebuggingDevicesOriginal(data, status);
31 | }
32 |
33 | std::uintptr_t driverBase = reinterpret_cast(ExAllocatePool(NonPagedPool, requestStruct.rawDataSize));
34 | if (!driverBase) return STATUS_UNSUCCESSFUL;
35 |
36 | memcpy(reinterpret_cast(driverBase), reinterpret_cast(requestStruct.rawDataAddress), requestStruct.rawDataSize);
37 |
38 | Mapper::resolveImports(driverBase);
39 |
40 | const auto dosHeaders = reinterpret_cast(driverBase);
41 | const auto ntHeaders = reinterpret_cast(driverBase + dosHeaders->e_lfanew);
42 |
43 | const PIMAGE_SECTION_HEADER currentImageSection = IMAGE_FIRST_SECTION(ntHeaders);
44 |
45 | // Allocate Memory for Mapped Driver w/o HEADERS Size - PAGE_SIZE (Mapping Without PE Header (First Page))
46 | const auto driverAllocationBase = reinterpret_cast(ExAllocatePool(NonPagedPool, ntHeaders->OptionalHeader.SizeOfImage)) - PAGE_SIZE;
47 | if (!driverAllocationBase)
48 | {
49 | *status = STATUS_UNSUCCESSFUL;
50 | return 0;
51 | }
52 |
53 | Memory::cleanBigPoolAllocation(driverAllocationBase + PAGE_SIZE);
54 |
55 | for (auto i = 0; i < ntHeaders->FileHeader.NumberOfSections; ++i)
56 | {
57 | auto sectionAddress = reinterpret_cast(driverAllocationBase + currentImageSection[i].VirtualAddress);
58 |
59 | memcpy(sectionAddress, reinterpret_cast(driverBase + currentImageSection[i].PointerToRawData), currentImageSection[i].SizeOfRawData);
60 | }
61 |
62 | Mapper::resolveRelocations(driverBase, driverAllocationBase, driverAllocationBase - ntHeaders->OptionalHeader.ImageBase);
63 |
64 | ExFreePool(reinterpret_cast(driverBase));
65 |
66 | const auto entryParams = reinterpret_cast(ExAllocatePool(NonPagedPool, sizeof(EntryInitialize)));
67 | if (!entryParams)
68 | {
69 | *status = STATUS_UNSUCCESSFUL;
70 | return 0;
71 | }
72 |
73 | entryParams->mappedImageBase = driverAllocationBase;
74 | entryParams->mappedImageSize = ntHeaders->OptionalHeader.SizeOfImage;
75 |
76 | EntryFuncCall mappedEntryPoint = reinterpret_cast(driverAllocationBase + ntHeaders->OptionalHeader.AddressOfEntryPoint);
77 |
78 | *status = mappedEntryPoint(entryParams);
79 |
80 | return 0;
81 | }
82 |
83 | void DriverUnload(PDRIVER_OBJECT driverObject)
84 | {
85 | reinterpret_cast(InterlockedExchangePointer(RelativeAddress(hookAddress, 7), (PVOID)EnumerateDebuggingDevicesOriginal));
86 |
87 | reinterpret_cast(driverObject->DriverSection)->BaseDllName.Length = 0;
88 |
89 | Memory::cleanPiddbCache(driverObject);
90 | }
91 |
92 | NTSTATUS DriverEntry(const PDRIVER_OBJECT driverObject, const PUNICODE_STRING registryPath)
93 | {
94 | driverObject->DriverUnload = DriverUnload;
95 |
96 | std::uintptr_t ntoskrnlBase;
97 | std::uintptr_t ntoskrnlSize;
98 |
99 | Native::getKernelModuleByName("ntoskrnl.exe", &ntoskrnlBase, &ntoskrnlSize);
100 | if (!ntoskrnlBase)
101 | {
102 | return STATUS_FAILED_DRIVER_ENTRY;
103 | }
104 |
105 | hookAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\x48\x8B\x05\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x8B\xC8\x85\xC0\x78\x40", "xxx????x????xxxxxx");
106 | if (!hookAddress)
107 | {
108 | return STATUS_FAILED_DRIVER_ENTRY;
109 | }
110 |
111 | *reinterpret_cast(&EnumerateDebuggingDevicesOriginal) = reinterpret_cast(InterlockedExchangePointer(RelativeAddress(hookAddress, 7), (PVOID)EnumerateDebuggingDevicesHook));
112 |
113 | return STATUS_SUCCESS;
114 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Mapper.cpp:
--------------------------------------------------------------------------------
1 | #include "Include.hpp"
2 |
3 | namespace Mapper
4 | {
5 | PIMAGE_SECTION_HEADER TranslateRawSection(PIMAGE_NT_HEADERS nt, DWORD rva)
6 | {
7 | auto section = IMAGE_FIRST_SECTION(nt);
8 | for (auto i = 0; i < nt->FileHeader.NumberOfSections; ++i, ++section)
9 | {
10 | if (rva >= section->VirtualAddress && rva < section->VirtualAddress + section->Misc.VirtualSize)
11 | {
12 | return section;
13 | }
14 | }
15 |
16 | return NULL;
17 | }
18 |
19 | PVOID TranslateRaw(PBYTE base, PIMAGE_NT_HEADERS nt, DWORD rva)
20 | {
21 | auto section = TranslateRawSection(nt, rva);
22 | if (!section)
23 | {
24 | return NULL;
25 | }
26 |
27 | return base + section->PointerToRawData + (rva - section->VirtualAddress);
28 | }
29 |
30 | void resolveRelocations(std::uintptr_t imageBase, std::uintptr_t newBase, std::uintptr_t delta)
31 | {
32 | const auto dosHeaders = reinterpret_cast(imageBase);
33 | const auto ntHeaders = reinterpret_cast(imageBase + dosHeaders->e_lfanew);
34 |
35 | DWORD reloc_va = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress;
36 |
37 | if (!reloc_va)
38 | return;
39 |
40 | auto current_base_relocation = reinterpret_cast(newBase + reloc_va);
41 | const auto reloc_end = reinterpret_cast(current_base_relocation) + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size;
42 |
43 | while (current_base_relocation->VirtualAddress && current_base_relocation->VirtualAddress < reloc_end && current_base_relocation->SizeOfBlock)
44 | {
45 | uint64_t current_reloc_address = newBase + current_base_relocation->VirtualAddress;
46 | uint16_t* current_reloc_item = reinterpret_cast(reinterpret_cast(current_base_relocation) + sizeof(IMAGE_BASE_RELOCATION));
47 | uint32_t current_reloc_count = (current_base_relocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(uint16_t);
48 |
49 | for (auto i = 0u; i < current_reloc_count; ++i)
50 | {
51 | const uint16_t type = current_reloc_item[i] >> 12;
52 | const uint16_t offset = current_reloc_item[i] & 0xFFF;
53 |
54 | if (type == IMAGE_REL_BASED_DIR64)
55 | *reinterpret_cast(current_reloc_address + offset) += delta;
56 | }
57 |
58 | current_base_relocation = reinterpret_cast(reinterpret_cast(current_base_relocation) + current_base_relocation->SizeOfBlock);
59 | }
60 | }
61 |
62 | BOOLEAN resolveImports(std::uintptr_t imageBase)
63 | {
64 | const auto dosHeaders = reinterpret_cast(imageBase);
65 | const auto ntHeaders = reinterpret_cast(imageBase + dosHeaders->e_lfanew);
66 |
67 | auto rva = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
68 | if (!rva)
69 | {
70 | return TRUE;
71 | }
72 |
73 | auto importDescriptor = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, rva));
74 | if (!importDescriptor)
75 | {
76 | return TRUE;
77 | }
78 |
79 | for (; importDescriptor->FirstThunk; ++importDescriptor)
80 | {
81 | auto moduleName = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, importDescriptor->Name));
82 | if (!moduleName)
83 | {
84 | break;
85 | }
86 |
87 | std::uintptr_t processModuleBase = NULL;
88 | std::size_t processModuleSize = 0;
89 |
90 | Native::getKernelModuleByName(moduleName, &processModuleBase, &processModuleSize);
91 |
92 | if (!processModuleBase)
93 | {
94 | return FALSE;
95 | }
96 |
97 | for (auto thunk = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, importDescriptor->FirstThunk)); thunk->u1.AddressOfData; ++thunk)
98 | {
99 | auto importByName = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, static_cast(thunk->u1.AddressOfData)));
100 |
101 | std::uintptr_t funcPtr = reinterpret_cast(RtlFindExportedRoutineByName(reinterpret_cast(processModuleBase), importByName->Name));
102 |
103 | if (!funcPtr)
104 | {
105 | return FALSE;
106 | }
107 |
108 | thunk->u1.Function = funcPtr;
109 | }
110 | }
111 |
112 | return TRUE;
113 | }
114 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Mapper.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | namespace Mapper
4 | {
5 | BOOLEAN resolveImports(std::uintptr_t imageBase);
6 | void resolveRelocations(std::uintptr_t imageBase, std::uintptr_t newBase, std::uintptr_t delta);
7 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Memory.cpp:
--------------------------------------------------------------------------------
1 | #include "Include.hpp"
2 |
3 | typedef struct PiDDBCacheEntry
4 | {
5 | LIST_ENTRY list;
6 | UNICODE_STRING driverName;
7 | ULONG driverStamp;
8 | NTSTATUS loadStatus;
9 | };
10 |
11 | typedef struct _POOL_TRACKER_BIG_PAGES
12 | {
13 | PVOID Va;
14 | ULONG Key;
15 | ULONG PoolType;
16 | ULONG NumberOfBytes;
17 | } POOL_TRACKER_BIG_PAGES, * PPOOL_TRACKER_BIG_PAGES;
18 |
19 | namespace Memory
20 | {
21 | NTSTATUS cleanBigPoolAllocation(std::uintptr_t allocationAddress)
22 | {
23 | std::uintptr_t ntoskrnlBase{};
24 | std::size_t ntoskrnlSize{};
25 |
26 | Native::getKernelModuleByName("ntoskrnl.exe", &ntoskrnlBase, &ntoskrnlSize);
27 |
28 | std::uintptr_t exProtectPoolExCallInstructionsAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\xE8\x00\x00\x00\x00\x83\x67\x0C\x00", "x????xxxx");
29 |
30 | if (!exProtectPoolExCallInstructionsAddress)
31 | return STATUS_NOT_FOUND;
32 |
33 | void* ExProtectPoolExAddress = reinterpret_cast(exProtectPoolExCallInstructionsAddress + *reinterpret_cast(exProtectPoolExCallInstructionsAddress + 1) + 5);
34 |
35 | if (!ExProtectPoolExAddress)
36 | return STATUS_NOT_FOUND;
37 |
38 | uintptr_t PoolBigPageTableInstructionAddress = ((ULONG64)ExProtectPoolExAddress + 0x95);
39 | uint64_t pPoolBigPageTable = (uint64_t)(PoolBigPageTableInstructionAddress + *reinterpret_cast(PoolBigPageTableInstructionAddress + 3) + 7);
40 |
41 | uintptr_t PoolBigPageTableSizeInstructionAddress = ((ULONG64)ExProtectPoolExAddress + 0x8E);
42 | uint64_t pPoolBigPageTableSize = (uint64_t)(PoolBigPageTableSizeInstructionAddress + *reinterpret_cast(PoolBigPageTableSizeInstructionAddress + 3) + 7);
43 |
44 | if (!pPoolBigPageTableSize || !pPoolBigPageTable)
45 | return STATUS_NOT_FOUND;
46 |
47 | PPOOL_TRACKER_BIG_PAGES PoolBigPageTable = 0;
48 | RtlCopyMemory(&PoolBigPageTable, (PVOID)pPoolBigPageTable, 8);
49 |
50 | SIZE_T PoolBigPageTableSize = 0;
51 | RtlCopyMemory(&PoolBigPageTableSize, (PVOID)pPoolBigPageTableSize, 8);
52 |
53 | if (!PoolBigPageTableSize || !PoolBigPageTable)
54 | return STATUS_NOT_FOUND;
55 |
56 | for (int i = 0; i < PoolBigPageTableSize; i++)
57 | {
58 | if (PoolBigPageTable[i].Va == reinterpret_cast(allocationAddress) || PoolBigPageTable[i].Va == reinterpret_cast(allocationAddress + 0x1))
59 | {
60 | PoolBigPageTable[i].Va = reinterpret_cast(0x1);
61 | PoolBigPageTable[i].NumberOfBytes = 0x0;
62 |
63 | return STATUS_SUCCESS;
64 | }
65 | }
66 |
67 | return STATUS_NOT_FOUND;
68 | }
69 |
70 | NTSTATUS cleanPiddbCache(PDRIVER_OBJECT driverObject)
71 | {
72 | std::uintptr_t ntoskrnlBase{};
73 | std::size_t ntoskrnlSize{};
74 |
75 | Native::getKernelModuleByName("ntoskrnl.exe", &ntoskrnlBase, &ntoskrnlSize);
76 |
77 | std::uintptr_t piddbLockAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x4C\x8B\x8C\x24", "xxx????x????xxxx");
78 |
79 | if(!piddbLockAddress)
80 | return STATUS_UNSUCCESSFUL;
81 |
82 | piddbLockAddress += 3;
83 | piddbLockAddress += *reinterpret_cast(piddbLockAddress) + sizeof(std::int32_t);
84 |
85 | std::uintptr_t piddbTableAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x48\x8D\x1D\x00\x00\x00\x00\x48\x85\xC0\x0F", "xxx????x????xxx????xxxx");
86 |
87 | if (!piddbTableAddress)
88 | return STATUS_UNSUCCESSFUL;
89 |
90 | piddbTableAddress += 3;
91 | piddbTableAddress += *reinterpret_cast(piddbTableAddress) + sizeof(std::int32_t);
92 |
93 | PiDDBCacheEntry cacheEntry;
94 | RtlInitUnicodeString(&cacheEntry.driverName, reinterpret_cast(driverObject->DriverSection)->BaseDllName.Buffer);
95 |
96 | if (!ExAcquireResourceExclusiveLite(reinterpret_cast(piddbLockAddress), true))
97 | return STATUS_UNSUCCESSFUL;
98 |
99 | PiDDBCacheEntry* entryPointer =
100 | reinterpret_cast(RtlLookupElementGenericTableAvl(
101 | reinterpret_cast(piddbTableAddress),
102 | reinterpret_cast(&cacheEntry)
103 | ));
104 |
105 | if (entryPointer)
106 | {
107 | PLIST_ENTRY NextEntry = entryPointer->list.Flink;
108 | PLIST_ENTRY PrevEntry = entryPointer->list.Blink;
109 |
110 | PrevEntry->Flink = entryPointer->list.Flink;
111 | NextEntry->Blink = entryPointer->list.Blink;
112 |
113 | entryPointer->list.Blink = PrevEntry;
114 | entryPointer->list.Flink = NextEntry;
115 |
116 | RtlDeleteElementGenericTableAvl(reinterpret_cast(piddbTableAddress), entryPointer);
117 | }
118 | else
119 | return STATUS_UNSUCCESSFUL;
120 |
121 | ExReleaseResourceLite(reinterpret_cast(piddbLockAddress));
122 |
123 | return STATUS_SUCCESS;
124 | }
125 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Memory.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | namespace Memory
4 | {
5 | NTSTATUS cleanPiddbCache(PDRIVER_OBJECT driverObject);
6 | NTSTATUS cleanBigPoolAllocation(std::uintptr_t allocationAddress);
7 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Native.cpp:
--------------------------------------------------------------------------------
1 | #include "Include.hpp"
2 |
3 | namespace Native
4 | {
5 | bool safeCopyMemory(PVOID dest, PVOID src, SIZE_T size)
6 | {
7 | SIZE_T returnSize = 0;
8 | if (NT_SUCCESS(MmCopyVirtualMemory(PsGetCurrentProcess(), src, PsGetCurrentProcess(), dest, size, KernelMode, &returnSize)) && returnSize == size) {
9 | return TRUE;
10 | }
11 |
12 | return FALSE;
13 | }
14 |
15 | NTSTATUS getKernelModuleByName(const char* moduleName, std::uintptr_t* moduleStart, std::size_t* moduleSize)
16 | {
17 | if (!moduleStart || !moduleSize)
18 | return STATUS_INVALID_PARAMETER;
19 |
20 | std::size_t size{};
21 | ZwQuerySystemInformation(0xB, nullptr, size, reinterpret_cast(&size));
22 |
23 | const auto listHeader = ExAllocatePool(NonPagedPool, size);
24 | if (!listHeader)
25 | return STATUS_MEMORY_NOT_ALLOCATED;
26 |
27 | if (const auto status = ZwQuerySystemInformation(0xB, listHeader, size, reinterpret_cast(&size)))
28 | return status;
29 |
30 | auto currentModule = reinterpret_cast(listHeader)->Module;
31 | for (std::size_t i{}; i < reinterpret_cast(listHeader)->Count; ++i, ++currentModule)
32 | {
33 | const auto currentModuleName = reinterpret_cast(currentModule->FullPathName + currentModule->OffsetToFileName);
34 | if (!strcmp(moduleName, currentModuleName))
35 | {
36 | *moduleStart = reinterpret_cast(currentModule->ImageBase);
37 | *moduleSize = currentModule->ImageSize;
38 | return STATUS_SUCCESS;
39 | }
40 | }
41 |
42 | return STATUS_NOT_FOUND;
43 | }
44 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Native.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | extern "C"
4 | {
5 | NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass, PVOID SystemInformation,
6 | ULONG SystemInformationLength, PULONG ReturnLength);
7 |
8 | extern "C" NTKERNELAPI
9 | PVOID
10 | NTAPI
11 | RtlFindExportedRoutineByName(
12 | _In_ PVOID ImageBase,
13 | _In_ PCCH RoutineNam
14 | );
15 |
16 | NTKERNELAPI NTSTATUS NTAPI MmCopyVirtualMemory(PEPROCESS SourceProcess, PVOID SourceAddress, PEPROCESS TargetProcess, PVOID TargetAddress, SIZE_T BufferSize, KPROCESSOR_MODE PreviousMode, PSIZE_T ReturnSize);
17 | }
18 |
19 | namespace Native
20 | {
21 | bool safeCopyMemory(PVOID dest, PVOID src, SIZE_T size);
22 | NTSTATUS getKernelModuleByName(const char *moduleName, std::uintptr_t *moduleStart, std::size_t *moduleSize);
23 | }
24 |
25 | typedef struct _KLDR_DATA_TABLE_ENTRY {
26 | LIST_ENTRY InLoadOrderLinks;
27 | PVOID ExceptionTable;
28 | ULONG ExceptionTableSize;
29 | PVOID GpValue;
30 | PVOID NonPagedDebugInfo;
31 | PVOID DllBase;
32 | PVOID EntryPoint;
33 | ULONG SizeOfImage;
34 | UNICODE_STRING FullDllName;
35 | UNICODE_STRING BaseDllName;
36 | ULONG Flags;
37 | USHORT LoadCount;
38 | USHORT __Unused;
39 | PVOID SectionPointer;
40 | ULONG CheckSum;
41 | PVOID LoadedImports;
42 | PVOID PatchInformation;
43 | } KLDR_DATA_TABLE_ENTRY, * PKLDR_DATA_TABLE_ENTRY;
44 |
45 | typedef struct _SYSTEM_MODULE_ENTRY {
46 | HANDLE Section;
47 | PVOID MappedBase;
48 | PVOID ImageBase;
49 | ULONG ImageSize;
50 | ULONG Flags;
51 | USHORT LoadOrderIndex;
52 | USHORT InitOrderIndex;
53 | USHORT LoadCount;
54 | USHORT OffsetToFileName;
55 | UCHAR FullPathName[256];
56 | } SYSTEM_MODULE_ENTRY, * PSYSTEM_MODULE_ENTRY;
57 |
58 | typedef struct _SYSTEM_MODULE_INFORMATION {
59 | ULONG Count;
60 | SYSTEM_MODULE_ENTRY Module[1];
61 | } SYSTEM_MODULE_INFORMATION, * PSYSTEM_MODULE_INFORMATION;
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Signature Scan.cpp:
--------------------------------------------------------------------------------
1 | #include "Include.hpp"
2 |
3 | //
4 | // Scan for a memory pattern
5 | //
6 | std::uintptr_t Scanner::scanPattern(std::uint8_t *base, const std::size_t size, char *pattern, char *mask)
7 | {
8 | const auto patternSize = strlen(mask);
9 |
10 | for (std::size_t i = {}; i < size - patternSize; i++)
11 | {
12 | for (std::size_t j = {}; j < patternSize; j++)
13 | {
14 | if (mask[j] != '?' && *reinterpret_cast(base + i + j) != static_cast(pattern[j]))
15 | break;
16 |
17 | if (j == patternSize - 1)
18 | return reinterpret_cast(base) + i;
19 | }
20 | }
21 |
22 | return {};
23 | }
24 |
25 | NTSTATUS Scanner::getImageSectionByName(std::uintptr_t imageBase, const char* sectionName, std::uintptr_t* startOut, std::size_t* sizeOut)
26 | {
27 | if (reinterpret_cast(imageBase)->e_magic != 0x5A4D)
28 | return STATUS_NOT_FOUND;
29 |
30 | const auto ntHeader = reinterpret_cast(
31 | imageBase + reinterpret_cast(imageBase)->e_lfanew);
32 | const auto sectionCount = ntHeader->FileHeader.NumberOfSections;
33 |
34 | auto sectionHeader = IMAGE_FIRST_SECTION(ntHeader);
35 | for (std::size_t i{}; i < sectionCount; ++i, ++sectionHeader) {
36 | if (strstr(reinterpret_cast(sectionHeader->Name), sectionName)) {
37 | if (sizeOut)
38 | *sizeOut = sectionHeader->Misc.VirtualSize;
39 | if (startOut)
40 | *startOut = imageBase + sectionHeader->VirtualAddress;
41 | }
42 | }
43 |
44 | return STATUS_SUCCESS;
45 | }
--------------------------------------------------------------------------------
/CosKernelmode/CosKernelmode/Signature Scan.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | namespace Scanner
4 | {
5 | std::uintptr_t scanPattern(std::uint8_t *base, const std::size_t size, char *pattern, char *mask);
6 | NTSTATUS getImageSectionByName(std::uintptr_t imageBase, const char* sectionName, std::uintptr_t* startOut, std::size_t* sizeOut);
7 | std::uintptr_t getImageSectionByName(std::uintptr_t imageBase, const char* sectionName, std::size_t* sizeOut);
8 | }
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31229.75
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CosUsermode", "CosUsermode\CosUsermode.vcxproj", "{D9692A2A-9474-431E-AC35-81F4BD60F537}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x64 = Debug|x64
11 | Debug|x86 = Debug|x86
12 | Release|x64 = Release|x64
13 | Release|x86 = Release|x86
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x64.ActiveCfg = Debug|x64
17 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x64.Build.0 = Debug|x64
18 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x86.ActiveCfg = Debug|Win32
19 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x86.Build.0 = Debug|Win32
20 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x64.ActiveCfg = Release|x64
21 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x64.Build.0 = Release|x64
22 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x86.ActiveCfg = Release|Win32
23 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x86.Build.0 = Release|Win32
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {CD16C6E4-74A2-4122-81D5-BFDD3F580E3B}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/CosUsermode.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 |
22 | 16.0
23 | Win32Proj
24 | {d9692a2a-9474-431e-ac35-81f4bd60f537}
25 | CosUsermode
26 | 10.0
27 |
28 |
29 |
30 | Application
31 | true
32 | v142
33 | Unicode
34 |
35 |
36 | Application
37 | false
38 | v142
39 | true
40 | Unicode
41 |
42 |
43 | Application
44 | true
45 | v142
46 | Unicode
47 |
48 |
49 | Application
50 | false
51 | v142
52 | true
53 | Unicode
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | true
75 |
76 |
77 | false
78 |
79 |
80 | true
81 |
82 |
83 | false
84 |
85 |
86 |
87 | Level3
88 | true
89 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
90 | true
91 |
92 |
93 | Console
94 | true
95 |
96 |
97 |
98 |
99 | Level3
100 | true
101 | true
102 | true
103 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
104 | true
105 |
106 |
107 | Console
108 | true
109 | true
110 | true
111 |
112 |
113 |
114 |
115 | Level3
116 | true
117 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
118 | true
119 |
120 |
121 | Console
122 | true
123 |
124 |
125 |
126 |
127 | Level3
128 | true
129 | true
130 | true
131 | NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
132 | true
133 | stdcpp17
134 |
135 |
136 | Console
137 | true
138 | true
139 | true
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/CosUsermode.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Header Files
25 |
26 |
27 | Header Files
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/CosUsermode.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/loadup.hpp:
--------------------------------------------------------------------------------
1 | /*
2 | MIT License
3 |
4 | Copyright (c) 2020 xerox
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 | */
24 |
25 |
26 | #pragma once
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 |
33 | #pragma comment(lib, "ntdll.lib")
34 | using nt_load_driver_t = NTSTATUS(__fastcall*)(PUNICODE_STRING);
35 | using nt_unload_driver_t = NTSTATUS(__fastcall*)(PUNICODE_STRING);
36 |
37 | namespace driver
38 | {
39 | namespace util
40 | {
41 | inline bool delete_service_entry(const std::string& service_name)
42 | {
43 | HKEY reg_handle;
44 | static const std::string reg_key("System\\CurrentControlSet\\Services\\");
45 |
46 | auto result = RegOpenKeyA(
47 | HKEY_LOCAL_MACHINE,
48 | reg_key.c_str(),
49 | ®_handle
50 | );
51 |
52 | return ERROR_SUCCESS == RegDeleteKeyA(reg_handle, service_name.data()) && ERROR_SUCCESS == RegCloseKey(reg_handle);;
53 | }
54 |
55 | inline bool create_service_entry(const std::string& drv_path, const std::string& service_name)
56 | {
57 | HKEY reg_handle;
58 | std::string reg_key("System\\CurrentControlSet\\Services\\");
59 | reg_key += service_name;
60 |
61 | auto result = RegCreateKeyA(
62 | HKEY_LOCAL_MACHINE,
63 | reg_key.c_str(),
64 | ®_handle
65 | );
66 |
67 | if (result != ERROR_SUCCESS)
68 | return false;
69 |
70 | //
71 | // set type to 1 (kernel)
72 | //
73 | constexpr std::uint8_t type_value = 1;
74 | result = RegSetValueExA(
75 | reg_handle,
76 | "Type",
77 | NULL,
78 | REG_DWORD,
79 | &type_value,
80 | 4u
81 | );
82 |
83 | if (result != ERROR_SUCCESS)
84 | return false;
85 |
86 | //
87 | // set error control to 3
88 | //
89 | constexpr std::uint8_t error_control_value = 3;
90 | result = RegSetValueExA(
91 | reg_handle,
92 | "ErrorControl",
93 | NULL,
94 | REG_DWORD,
95 | &error_control_value,
96 | 4u
97 | );
98 |
99 | if (result != ERROR_SUCCESS)
100 | return false;
101 |
102 | //
103 | // set start to 3
104 | //
105 | constexpr std::uint8_t start_value = 3;
106 | result = RegSetValueExA(
107 | reg_handle,
108 | "Start",
109 | NULL,
110 | REG_DWORD,
111 | &start_value,
112 | 4u
113 | );
114 |
115 | if (result != ERROR_SUCCESS)
116 | return false;
117 |
118 | //
119 | // set image path to the driver on disk
120 | //
121 | result = RegSetValueExA(
122 | reg_handle,
123 | "ImagePath",
124 | NULL,
125 | REG_SZ,
126 | (std::uint8_t*)drv_path.c_str(),
127 | drv_path.size()
128 | );
129 |
130 | if (result != ERROR_SUCCESS)
131 | return false;
132 |
133 | return ERROR_SUCCESS == RegCloseKey(reg_handle);
134 | }
135 |
136 | // this function was coded by paracord: https://githacks.org/snippets/4#L94
137 | inline bool enable_privilege(const std::wstring& privilege_name)
138 | {
139 | HANDLE token_handle = nullptr;
140 | if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token_handle))
141 | return false;
142 |
143 | LUID luid{};
144 | if (!LookupPrivilegeValueW(nullptr, privilege_name.data(), &luid))
145 | return false;
146 |
147 | TOKEN_PRIVILEGES token_state{};
148 | token_state.PrivilegeCount = 1;
149 | token_state.Privileges[0].Luid = luid;
150 | token_state.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
151 |
152 | if (!AdjustTokenPrivileges(token_handle, FALSE, &token_state, sizeof(TOKEN_PRIVILEGES), nullptr, nullptr))
153 | return false;
154 |
155 | CloseHandle(token_handle);
156 | return true;
157 | }
158 |
159 | inline std::string get_service_image_path(const std::string& service_name)
160 | {
161 | HKEY reg_handle;
162 | DWORD bytes_read;
163 | char image_path[0xFF];
164 | static const std::string reg_key("System\\CurrentControlSet\\Services\\");
165 |
166 | auto result = RegOpenKeyA(
167 | HKEY_LOCAL_MACHINE,
168 | reg_key.c_str(),
169 | ®_handle
170 | );
171 |
172 | result = RegGetValueA(
173 | reg_handle,
174 | service_name.c_str(),
175 | "ImagePath",
176 | REG_SZ,
177 | NULL,
178 | image_path,
179 | &bytes_read
180 | );
181 |
182 | RegCloseKey(reg_handle);
183 | return std::string(image_path);
184 | }
185 | }
186 |
187 | inline bool load(const std::string& drv_path, const std::string& service_name)
188 | {
189 | if (!util::enable_privilege(L"SeLoadDriverPrivilege"))
190 | return false;
191 |
192 | if (!util::create_service_entry("\\??\\" + std::filesystem::absolute(std::filesystem::path(drv_path)).string(), service_name))
193 | return false;
194 |
195 | std::string reg_path("\\Registry\\Machine\\System\\CurrentControlSet\\Services\\");
196 | reg_path += service_name;
197 |
198 | static const auto lp_nt_load_drv =
199 | ::GetProcAddress(
200 | GetModuleHandleA("ntdll.dll"),
201 | "NtLoadDriver"
202 | );
203 |
204 | if (lp_nt_load_drv)
205 | {
206 | ANSI_STRING driver_rep_path_cstr;
207 | UNICODE_STRING driver_reg_path_unicode;
208 |
209 | RtlInitAnsiString(&driver_rep_path_cstr, reg_path.c_str());
210 | RtlAnsiStringToUnicodeString(&driver_reg_path_unicode, &driver_rep_path_cstr, true);
211 | return ERROR_SUCCESS == reinterpret_cast(lp_nt_load_drv)(&driver_reg_path_unicode);
212 | }
213 | return false;
214 | }
215 |
216 | inline std::tuple load(const std::vector& drv_buffer)
217 | {
218 | static const auto random_file_name = [](std::size_t length) -> std::string
219 | {
220 | static const auto randchar = []() -> char
221 | {
222 | const char charset[] =
223 | "0123456789"
224 | "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
225 | "abcdefghijklmnopqrstuvwxyz";
226 | const std::size_t max_index = (sizeof(charset) - 1);
227 | return charset[rand() % max_index];
228 | };
229 | std::string str(length, 0);
230 | std::generate_n(str.begin(), length, randchar);
231 | return str;
232 | };
233 |
234 | const auto service_name = random_file_name(16);
235 | const auto file_path = std::filesystem::temp_directory_path().string() + service_name;
236 | std::ofstream output_file(file_path.c_str(), std::ios::binary);
237 |
238 | output_file.write((char*)drv_buffer.data(), drv_buffer.size());
239 | output_file.close();
240 |
241 | return { load(file_path, service_name), service_name };
242 | }
243 |
244 | inline std::tuple load(const std::uint8_t* buffer, const std::size_t size)
245 | {
246 | std::vector image(buffer, buffer + size);
247 | return load(image);
248 | }
249 |
250 | inline bool unload(const std::string& service_name)
251 | {
252 | std::string reg_path("\\Registry\\Machine\\System\\CurrentControlSet\\Services\\");
253 | reg_path += service_name;
254 |
255 | static const auto lp_nt_unload_drv =
256 | ::GetProcAddress(
257 | GetModuleHandleA("ntdll.dll"),
258 | "NtUnloadDriver"
259 | );
260 |
261 | if (lp_nt_unload_drv)
262 | {
263 | ANSI_STRING driver_rep_path_cstr;
264 | UNICODE_STRING driver_reg_path_unicode;
265 |
266 | RtlInitAnsiString(&driver_rep_path_cstr, reg_path.c_str());
267 | RtlAnsiStringToUnicodeString(&driver_reg_path_unicode, &driver_rep_path_cstr, true);
268 |
269 | const bool unload_drv = !reinterpret_cast(lp_nt_unload_drv)(&driver_reg_path_unicode);
270 | const auto image_path = std::filesystem::temp_directory_path().string() + service_name;
271 | const bool delete_reg = util::delete_service_entry(service_name);
272 | const bool delete_drv = std::filesystem::remove(image_path);
273 | return unload_drv && delete_reg && delete_drv;
274 | }
275 | return false;
276 | }
277 | }
278 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/main.cpp:
--------------------------------------------------------------------------------
1 | #include "stdafx.hpp"
2 |
3 | std::uint32_t mapDriver(std::vectorrawDriverImage)
4 | {
5 | HookStruct request{};
6 | request.rawDataAddress = reinterpret_cast(rawDriverImage.data());
7 | request.rawDataSize = rawDriverImage.size();
8 |
9 | std::uint8_t mzSignature = *reinterpret_cast(request.rawDataAddress);
10 | if (mzSignature != 0x4d)
11 | {
12 | printf("invalid driver mz signature\n");
13 | return STATUS_INVALID_PARAMETER;
14 | }
15 |
16 | printf("[+] mz byte [0x%x]\n", mzSignature);
17 | printf("[+] size of driver [0x%x]\n", request.rawDataSize);
18 | printf("[+] driver read [%p]\n", request.rawDataAddress);
19 |
20 | void* requestPointer = &request;
21 |
22 | std::uint32_t status{};
23 | NtConvert(0, &requestPointer, &status, 0);
24 |
25 | RtlZeroMemory(reinterpret_cast(request.rawDataAddress), request.rawDataSize);
26 |
27 | return status;
28 | }
29 |
30 | int main(int argumentCount, char** argumentArray)
31 | {
32 | if (argumentCount < 2 || std::filesystem::path(argumentArray[1]).extension().string().compare(".sys"))
33 | {
34 | printf("[-] usage: cosusermode.exe driver.sys\n");
35 | return -1;
36 | }
37 |
38 | if (!std::filesystem::exists(argumentArray[1]))
39 | {
40 | printf("[-] driver [%s] does not exist\n", argumentArray[1]);
41 | return -1;
42 | }
43 |
44 | const auto& [status, service_name] = driver::load(signedMapperRaw, sizeof(signedMapperRaw));
45 | if (!status)
46 | {
47 | printf("[-] failed to load signed mapper\n");
48 | return -1;
49 | }
50 |
51 | printf("[+] loaded signed mapper [%s]\n", service_name.c_str());
52 |
53 | if (!Util::initializeDriverComm())
54 | {
55 | printf("[-] failed to initialize driver comm\n");
56 | return -1;
57 | }
58 |
59 | std::vector rawDriverImage = { 0 };
60 | if (!Util::readFileToMemory(argumentArray[1], &rawDriverImage))
61 | {
62 | printf("[-] failed to read driver [%s]\n", argumentArray[1]);
63 | return -1;
64 | }
65 |
66 | printf("[+] mapped driver status [0x%x]\n", mapDriver(rawDriverImage));
67 |
68 | printf("[+] unloading signed mapper [0x%x]\n", !driver::unload(service_name));
69 |
70 | return 0;
71 | }
72 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/mapper_resource.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | inline std::uint8_t signedMapperRaw[13384] = {
4 | 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
5 | 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6 | 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
9 | 0xD8, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD,
10 | 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70,
11 | 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,
12 | 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20,
13 | 0x44, 0x4F, 0x53, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A,
14 | 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x77, 0x51, 0x8C,
15 | 0xC7, 0x16, 0x3F, 0xDF, 0xC7, 0x16, 0x3F, 0xDF, 0xC7, 0x16, 0x3F, 0xDF,
16 | 0xD3, 0x7D, 0x3E, 0xDE, 0xC4, 0x16, 0x3F, 0xDF, 0xC7, 0x16, 0x3E, 0xDF,
17 | 0xCA, 0x16, 0x3F, 0xDF, 0xD3, 0x7D, 0x3C, 0xDE, 0xC5, 0x16, 0x3F, 0xDF,
18 | 0xD3, 0x7D, 0x3B, 0xDE, 0xC4, 0x16, 0x3F, 0xDF, 0x1C, 0x62, 0x3A, 0xDE,
19 | 0xC2, 0x16, 0x3F, 0xDF, 0x1C, 0x62, 0x3D, 0xDE, 0xC6, 0x16, 0x3F, 0xDF,
20 | 0x52, 0x69, 0x63, 0x68, 0xC7, 0x16, 0x3F, 0xDF, 0x00, 0x00, 0x00, 0x00,
21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22 | 0x50, 0x45, 0x00, 0x00, 0x64, 0x86, 0x06, 0x00, 0x87, 0xD5, 0x0F, 0x61,
23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x22, 0x00,
24 | 0x0B, 0x02, 0x0E, 0x1C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00,
25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
26 | 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
27 | 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
28 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
29 | 0x00, 0x04, 0x00, 0x00, 0xF1, 0x23, 0x01, 0x00, 0x01, 0x00, 0x60, 0x41,
30 | 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
31 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
32 | 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34 | 0x00, 0x50, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
36 | 0x00, 0x20, 0x00, 0x00, 0x48, 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
37 | 0x14, 0x00, 0x00, 0x00, 0x90, 0x20, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
38 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40 | 0xD0, 0x20, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
42 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44 | 0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x58, 0x0C, 0x00, 0x00,
45 | 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
46 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 | 0x20, 0x00, 0x00, 0x68, 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00,
48 | 0x74, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
49 | 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50 | 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x2E, 0x64, 0x61, 0x74,
51 | 0x61, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
52 | 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC8,
54 | 0x2E, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
55 | 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00,
56 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57 | 0x40, 0x00, 0x00, 0x48, 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00,
58 | 0xD6, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
59 | 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60 | 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x62, 0x2E, 0x72, 0x65, 0x6C,
61 | 0x6F, 0x63, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
62 | 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42,
64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
79 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89 | 0x00, 0x00, 0x00, 0x00, 0x48, 0x83, 0xEC, 0x28, 0x48, 0x8D, 0x05, 0x75,
90 | 0x00, 0x00, 0x00, 0x48, 0x89, 0x41, 0x68, 0x4C, 0x8D, 0x44, 0x24, 0x40,
91 | 0x48, 0x8D, 0x0D, 0x55, 0x0B, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x30,
92 | 0xE8, 0x37, 0x06, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0x48, 0x85,
93 | 0xC9, 0x74, 0x3F, 0x48, 0x8B, 0x54, 0x24, 0x40, 0x4C, 0x8D, 0x0D, 0x45,
94 | 0x0B, 0x00, 0x00, 0x4C, 0x8D, 0x05, 0x5E, 0x0B, 0x00, 0x00, 0xE8, 0x91,
95 | 0x07, 0x00, 0x00, 0x48, 0x89, 0x05, 0xC2, 0x1F, 0x00, 0x00, 0x48, 0x85,
96 | 0xC0, 0x74, 0x1B, 0x48, 0x63, 0x50, 0x03, 0x48, 0x8D, 0x0D, 0x52, 0x00,
97 | 0x00, 0x00, 0x48, 0x87, 0x4C, 0x02, 0x07, 0x48, 0x89, 0x0D, 0x9E, 0x1F,
98 | 0x00, 0x00, 0x33, 0xC0, 0xEB, 0x05, 0xB8, 0x65, 0x03, 0x00, 0xC0, 0x48,
99 | 0x83, 0xC4, 0x28, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
100 | 0x4C, 0x8B, 0x05, 0x89, 0x1F, 0x00, 0x00, 0x48, 0x8B, 0x05, 0x7A, 0x1F,
101 | 0x00, 0x00, 0x49, 0x63, 0x50, 0x03, 0x4A, 0x87, 0x44, 0x02, 0x07, 0x48,
102 | 0x8B, 0x51, 0x28, 0x33, 0xC0, 0x66, 0x89, 0x42, 0x58, 0xE9, 0xA6, 0x04,
103 | 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
104 | 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48,
105 | 0x89, 0x70, 0x18, 0x48, 0x89, 0x78, 0x20, 0x41, 0x54, 0x41, 0x56, 0x41,
106 | 0x57, 0x48, 0x83, 0xEC, 0x30, 0x48, 0x8B, 0xF2, 0x48, 0x8B, 0xD9, 0xFF,
107 | 0x15, 0x37, 0x0F, 0x00, 0x00, 0x3C, 0x01, 0x0F, 0x85, 0x47, 0x01, 0x00,
108 | 0x00, 0x45, 0x33, 0xE4, 0x48, 0x85, 0xDB, 0x0F, 0x84, 0x3B, 0x01, 0x00,
109 | 0x00, 0x45, 0x8D, 0x44, 0x24, 0x10, 0x4C, 0x89, 0x64, 0x24, 0x20, 0x48,
110 | 0x8B, 0xD3, 0x4C, 0x89, 0x64, 0x24, 0x28, 0x48, 0x8D, 0x4C, 0x24, 0x20,
111 | 0xE8, 0x4F, 0x06, 0x00, 0x00, 0x84, 0xC0, 0x0F, 0x84, 0x17, 0x01, 0x00,
112 | 0x00, 0x48, 0x8B, 0x54, 0x24, 0x20, 0x48, 0x85, 0xD2, 0x0F, 0x84, 0x09,
113 | 0x01, 0x00, 0x00, 0x4C, 0x39, 0x64, 0x24, 0x28, 0x0F, 0x84, 0xFE, 0x00,
114 | 0x00, 0x00, 0x33, 0xC9, 0xFF, 0x15, 0xCE, 0x0E, 0x00, 0x00, 0x48, 0x8B,
115 | 0xF8, 0x48, 0x85, 0xC0, 0x75, 0x0C, 0x48, 0xC7, 0xC0, 0x01, 0x00, 0x00,
116 | 0xC0, 0xE9, 0xF5, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x44, 0x24, 0x20, 0x48,
117 | 0x8B, 0xCF, 0x48, 0x8B, 0x54, 0x24, 0x28, 0xE8, 0x68, 0x07, 0x00, 0x00,
118 | 0x48, 0x8B, 0xCF, 0xE8, 0x74, 0x01, 0x00, 0x00, 0x48, 0x63, 0x5F, 0x3C,
119 | 0x33, 0xC9, 0x48, 0x03, 0xDF, 0x44, 0x0F, 0xB7, 0x73, 0x14, 0x8B, 0x53,
120 | 0x50, 0x49, 0x83, 0xC6, 0x2C, 0xFF, 0x15, 0x85, 0x0E, 0x00, 0x00, 0x48,
121 | 0x8B, 0xE8, 0x48, 0x81, 0xED, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x84, 0x92,
122 | 0x00, 0x00, 0x00, 0x48, 0x8D, 0x8D, 0x00, 0x10, 0x00, 0x00, 0xE8, 0xD9,
123 | 0x02, 0x00, 0x00, 0x45, 0x8B, 0xFC, 0x66, 0x44, 0x3B, 0x63, 0x06, 0x73,
124 | 0x29, 0x4C, 0x03, 0xF3, 0x41, 0x8B, 0x16, 0x41, 0x8B, 0x4E, 0xF8, 0x48,
125 | 0x03, 0xD7, 0x45, 0x8B, 0x46, 0xFC, 0x48, 0x03, 0xCD, 0xE8, 0x06, 0x07,
126 | 0x00, 0x00, 0x0F, 0xB7, 0x43, 0x06, 0x4D, 0x8D, 0x76, 0x28, 0x41, 0xFF,
127 | 0xC7, 0x44, 0x3B, 0xF8, 0x7C, 0xDA, 0x4C, 0x8B, 0xC5, 0x48, 0x8B, 0xD5,
128 | 0x4C, 0x2B, 0x43, 0x30, 0x48, 0x8B, 0xCF, 0xE8, 0xF0, 0x01, 0x00, 0x00,
129 | 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x21, 0x0E, 0x00, 0x00, 0xBA,
130 | 0x10, 0x00, 0x00, 0x00, 0x33, 0xC9, 0xFF, 0x15, 0x0C, 0x0E, 0x00, 0x00,
131 | 0x48, 0x8B, 0xD0, 0x48, 0x85, 0xC0, 0x74, 0x21, 0x48, 0x89, 0x28, 0x8B,
132 | 0x4B, 0x50, 0x48, 0x89, 0x48, 0x08, 0x48, 0x8B, 0xCA, 0x8B, 0x43, 0x28,
133 | 0x48, 0x03, 0xC5, 0xFF, 0x15, 0x5B, 0x0E, 0x00, 0x00, 0x48, 0x63, 0xC8,
134 | 0x48, 0x89, 0x0E, 0xEB, 0x07, 0x48, 0xC7, 0x06, 0x01, 0x00, 0x00, 0xC0,
135 | 0x33, 0xC0, 0xEB, 0x13, 0x48, 0x8B, 0x05, 0xD9, 0x1D, 0x00, 0x00, 0x48,
136 | 0x8B, 0xD6, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x35, 0x0E, 0x00, 0x00, 0x48,
137 | 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x8B, 0x6C, 0x24, 0x58, 0x48, 0x8B, 0x74,
138 | 0x24, 0x60, 0x48, 0x8B, 0x7C, 0x24, 0x68, 0x48, 0x83, 0xC4, 0x30, 0x41,
139 | 0x5F, 0x41, 0x5E, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24,
140 | 0x08, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x8B, 0xC2, 0x48, 0x8B, 0xF9,
141 | 0x48, 0x8B, 0xC8, 0x41, 0x8B, 0xD0, 0x41, 0x8B, 0xD8, 0xE8, 0x1E, 0x00,
142 | 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x0E, 0x2B, 0x58, 0x0C, 0x8B, 0x40,
143 | 0x14, 0x8B, 0xCB, 0x48, 0x03, 0xCF, 0x48, 0x03, 0xC1, 0x48, 0x8B, 0x5C,
144 | 0x24, 0x30, 0x48, 0x83, 0xC4, 0x20, 0x5F, 0xC3, 0x0F, 0xB7, 0x41, 0x14,
145 | 0x4C, 0x8D, 0x41, 0x18, 0x44, 0x0F, 0xB7, 0x51, 0x06, 0x4C, 0x03, 0xC0,
146 | 0x45, 0x33, 0xC9, 0x45, 0x85, 0xD2, 0x74, 0x1C, 0x41, 0x8B, 0x48, 0x0C,
147 | 0x3B, 0xD1, 0x72, 0x08, 0x41, 0x03, 0x48, 0x08, 0x3B, 0xD1, 0x72, 0x0F,
148 | 0x41, 0xFF, 0xC1, 0x49, 0x83, 0xC0, 0x28, 0x45, 0x3B, 0xCA, 0x7C, 0xE4,
149 | 0x33, 0xC0, 0xC3, 0x49, 0x8B, 0xC0, 0xC3, 0xCC, 0x48, 0x89, 0x5C, 0x24,
150 | 0x18, 0x48, 0x89, 0x6C, 0x24, 0x20, 0x56, 0x57, 0x41, 0x56, 0x48, 0x83,
151 | 0xEC, 0x20, 0x48, 0x63, 0x79, 0x3C, 0x48, 0x8B, 0xE9, 0x48, 0x03, 0xF9,
152 | 0x44, 0x8B, 0x87, 0x90, 0x00, 0x00, 0x00, 0x45, 0x85, 0xC0, 0x0F, 0x84,
153 | 0xB2, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xD7, 0xE8, 0x54, 0xFF, 0xFF, 0xFF,
154 | 0x48, 0x85, 0xC0, 0x0F, 0x84, 0xA1, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x58,
155 | 0x10, 0xE9, 0x8F, 0x00, 0x00, 0x00, 0x44, 0x8B, 0x43, 0xFC, 0x48, 0x8B,
156 | 0xD7, 0x48, 0x8B, 0xCD, 0xE8, 0x33, 0xFF, 0xFF, 0xFF, 0x48, 0x85, 0xC0,
157 | 0x0F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x40, 0x00,
158 | 0x4C, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x83, 0x64, 0x24, 0x48, 0x00, 0x48,
159 | 0x8D, 0x54, 0x24, 0x40, 0x48, 0x8B, 0xC8, 0xE8, 0x0C, 0x03, 0x00, 0x00,
160 | 0x4C, 0x8B, 0x74, 0x24, 0x40, 0x4D, 0x85, 0xF6, 0x74, 0x6D, 0x44, 0x8B,
161 | 0x03, 0x48, 0x8B, 0xD7, 0x48, 0x8B, 0xCD, 0xE8, 0xF4, 0xFE, 0xFF, 0xFF,
162 | 0x48, 0x8B, 0xF0, 0x48, 0x83, 0x38, 0x00, 0x74, 0x34, 0x44, 0x8B, 0x06,
163 | 0x48, 0x8B, 0xD7, 0x48, 0x8B, 0xCD, 0xE8, 0xDD, 0xFE, 0xFF, 0xFF, 0x49,
164 | 0x8B, 0xCE, 0x48, 0x8D, 0x50, 0x02, 0xFF, 0x15, 0x8C, 0x0C, 0x00, 0x00,
165 | 0x48, 0x85, 0xC0, 0x74, 0x36, 0x48, 0x89, 0x06, 0x48, 0x83, 0xC6, 0x08,
166 | 0x48, 0x83, 0x3E, 0x00, 0x74, 0x07, 0x4C, 0x8B, 0x74, 0x24, 0x40, 0xEB,
167 | 0xCC, 0x48, 0x83, 0xC3, 0x14, 0x83, 0x3B, 0x00, 0x0F, 0x85, 0x68, 0xFF,
168 | 0xFF, 0xFF, 0xB0, 0x01, 0x48, 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x8B, 0x6C,
169 | 0x24, 0x58, 0x48, 0x83, 0xC4, 0x20, 0x41, 0x5E, 0x5F, 0x5E, 0xC3, 0x32,
170 | 0xC0, 0xEB, 0xE9, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74,
171 | 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x48, 0x63, 0x41, 0x3C, 0x49,
172 | 0x8B, 0xF8, 0x48, 0x03, 0xC1, 0x48, 0x8B, 0xDA, 0x8B, 0x88, 0xB0, 0x00,
173 | 0x00, 0x00, 0x85, 0xC9, 0x74, 0x6C, 0x44, 0x8B, 0x88, 0xB4, 0x00, 0x00,
174 | 0x00, 0x48, 0x03, 0xCA, 0x4C, 0x03, 0xC9, 0xEB, 0x57, 0x8B, 0xD0, 0x49,
175 | 0x3B, 0xD1, 0x73, 0x56, 0x8B, 0x41, 0x04, 0x85, 0xC0, 0x74, 0x4F, 0x4C,
176 | 0x8D, 0x1C, 0x1A, 0x48, 0x8D, 0x50, 0xF8, 0x48, 0xD1, 0xEA, 0x4C, 0x8D,
177 | 0x41, 0x08, 0x85, 0xD2, 0x74, 0x33, 0x44, 0x8B, 0xD2, 0x41, 0x0F, 0xB7,
178 | 0x10, 0xBE, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xB7, 0xC2, 0x66, 0x23, 0xC6,
179 | 0xBE, 0x00, 0xA0, 0x00, 0x00, 0x66, 0x3B, 0xC6, 0x75, 0x0A, 0x81, 0xE2,
180 | 0xFF, 0x0F, 0x00, 0x00, 0x4A, 0x01, 0x3C, 0x1A, 0x49, 0x83, 0xC0, 0x02,
181 | 0x49, 0x83, 0xEA, 0x01, 0x75, 0xD3, 0x8B, 0x41, 0x04, 0x48, 0x03, 0xC8,
182 | 0x8B, 0x01, 0x85, 0xC0, 0x75, 0xA3, 0x48, 0x8B, 0x5C, 0x24, 0x08, 0x48,
183 | 0x8B, 0x74, 0x24, 0x10, 0x48, 0x8B, 0x7C, 0x24, 0x18, 0xC3, 0xCC, 0xCC,
184 | 0x48, 0x8B, 0xC4, 0x53, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x83, 0x60, 0x18,
185 | 0x00, 0x4C, 0x8D, 0x40, 0x10, 0x48, 0x83, 0x60, 0x10, 0x00, 0x48, 0x8D,
186 | 0x50, 0x18, 0x48, 0x8B, 0xD9, 0x48, 0x8D, 0x0D, 0xDC, 0x06, 0x00, 0x00,
187 | 0xE8, 0xC3, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x38, 0x4C, 0x8D,
188 | 0x0D, 0x1B, 0x07, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0x4C, 0x8D,
189 | 0x05, 0x1F, 0x07, 0x00, 0x00, 0xE8, 0x22, 0x03, 0x00, 0x00, 0x48, 0x85,
190 | 0xC0, 0x74, 0x6C, 0x48, 0x63, 0x48, 0x01, 0x48, 0x8D, 0x50, 0x05, 0x48,
191 | 0x03, 0xD1, 0x74, 0x5F, 0x48, 0x63, 0x82, 0x91, 0x00, 0x00, 0x00, 0x4C,
192 | 0x8D, 0x82, 0x95, 0x00, 0x00, 0x00, 0x4C, 0x03, 0xC0, 0x74, 0x4C, 0x48,
193 | 0x63, 0x82, 0x98, 0x00, 0x00, 0x00, 0x48, 0x81, 0xC2, 0x9C, 0x00, 0x00,
194 | 0x00, 0x48, 0x03, 0xD0, 0x74, 0x39, 0x4D, 0x8B, 0x00, 0x4D, 0x85, 0xC0,
195 | 0x74, 0x31, 0x48, 0x8B, 0x12, 0x48, 0x85, 0xD2, 0x74, 0x29, 0x33, 0xC9,
196 | 0x4D, 0x85, 0xC0, 0x74, 0x22, 0x4C, 0x8B, 0xCA, 0x4D, 0x8B, 0x11, 0x4C,
197 | 0x3B, 0xD3, 0x74, 0x22, 0x48, 0x8D, 0x43, 0x01, 0x4C, 0x3B, 0xD0, 0x74,
198 | 0x19, 0xFF, 0xC1, 0x49, 0x83, 0xC1, 0x18, 0x48, 0x63, 0xC1, 0x49, 0x3B,
199 | 0xC0, 0x72, 0xE1, 0xB8, 0x25, 0x02, 0x00, 0xC0, 0x48, 0x83, 0xC4, 0x20,
200 | 0x5B, 0xC3, 0x48, 0x63, 0xC1, 0x48, 0x8D, 0x0C, 0x40, 0x83, 0x64, 0xCA,
201 | 0x10, 0x00, 0x33, 0xC0, 0x48, 0xC7, 0x04, 0xCA, 0x01, 0x00, 0x00, 0x00,
202 | 0xEB, 0xE2, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48,
203 | 0x89, 0x70, 0x20, 0x57, 0x48, 0x83, 0xEC, 0x50, 0x48, 0x83, 0x60, 0x18,
204 | 0x00, 0x4C, 0x8D, 0x40, 0x10, 0x48, 0x83, 0x60, 0x10, 0x00, 0x48, 0x8D,
205 | 0x50, 0x18, 0x48, 0x8B, 0xF1, 0x48, 0x8D, 0x0D, 0xF8, 0x05, 0x00, 0x00,
206 | 0xE8, 0xDF, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x68, 0x4C, 0x8D,
207 | 0x0D, 0x57, 0x06, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0x4C, 0x8D,
208 | 0x05, 0x6B, 0x06, 0x00, 0x00, 0xE8, 0x3E, 0x02, 0x00, 0x00, 0x48, 0x85,
209 | 0xC0, 0x0F, 0x84, 0xA1, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x68,
210 | 0x4C, 0x8D, 0x0D, 0x71, 0x06, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x70,
211 | 0x4C, 0x8D, 0x05, 0x85, 0x06, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x03, 0x48,
212 | 0x63, 0x38, 0x48, 0x03, 0xF8, 0xE8, 0x0E, 0x02, 0x00, 0x00, 0x48, 0x85,
213 | 0xC0, 0x74, 0x75, 0x48, 0x8B, 0x56, 0x28, 0x48, 0x8D, 0x4C, 0x24, 0x30,
214 | 0x48, 0x83, 0xC0, 0x03, 0x48, 0x8B, 0x52, 0x60, 0x48, 0x63, 0x18, 0x48,
215 | 0x03, 0xD8, 0xFF, 0x15, 0x34, 0x0A, 0x00, 0x00, 0xB2, 0x01, 0x48, 0x8D,
216 | 0x4F, 0x04, 0xFF, 0x15, 0x30, 0x0A, 0x00, 0x00, 0x84, 0xC0, 0x74, 0x48,
217 | 0x48, 0x8D, 0x54, 0x24, 0x20, 0x48, 0x8D, 0x4B, 0x04, 0xFF, 0x15, 0x35,
218 | 0x0A, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x34, 0x4C, 0x8B, 0x40, 0x08,
219 | 0x48, 0x8D, 0x4B, 0x04, 0x4C, 0x8B, 0x08, 0x4D, 0x89, 0x08, 0x48, 0x8B,
220 | 0x50, 0x08, 0x49, 0x89, 0x51, 0x08, 0x48, 0x8B, 0xD0, 0x4C, 0x89, 0x40,
221 | 0x08, 0x4C, 0x89, 0x08, 0xFF, 0x15, 0x02, 0x0A, 0x00, 0x00, 0x48, 0x8D,
222 | 0x4F, 0x04, 0xFF, 0x15, 0xF0, 0x09, 0x00, 0x00, 0x33, 0xC0, 0xEB, 0x05,
223 | 0xB8, 0x01, 0x00, 0x00, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0x48, 0x8B,
224 | 0x74, 0x24, 0x78, 0x48, 0x83, 0xC4, 0x50, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC,
225 | 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x18, 0x48,
226 | 0x89, 0x70, 0x20, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x49, 0x8B, 0xF8, 0x48,
227 | 0x8B, 0xF2, 0x48, 0x8B, 0xE9, 0x48, 0x85, 0xD2, 0x0F, 0x84, 0xBB, 0x00,
228 | 0x00, 0x00, 0x4D, 0x85, 0xC0, 0x0F, 0x84, 0xB2, 0x00, 0x00, 0x00, 0x48,
229 | 0x83, 0x60, 0x10, 0x00, 0x4C, 0x8D, 0x48, 0x10, 0x33, 0xD2, 0x45, 0x33,
230 | 0xC0, 0x8D, 0x4A, 0x0B, 0xE8, 0xEF, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x54,
231 | 0x24, 0x38, 0x33, 0xC9, 0xFF, 0x15, 0x52, 0x09, 0x00, 0x00, 0x48, 0x8B,
232 | 0xD8, 0x48, 0x85, 0xC0, 0x75, 0x0A, 0xB8, 0xA0, 0x00, 0x00, 0xC0, 0xE9,
233 | 0x82, 0x00, 0x00, 0x00, 0x44, 0x8B, 0x44, 0x24, 0x38, 0x4C, 0x8D, 0x4C,
234 | 0x24, 0x38, 0x48, 0x8B, 0xD3, 0xB9, 0x0B, 0x00, 0x00, 0x00, 0xE8, 0xB9,
235 | 0x01, 0x00, 0x00, 0x85, 0xC0, 0x75, 0x67, 0x44, 0x8B, 0x13, 0x48, 0x8D,
236 | 0x4B, 0x08, 0x33, 0xD2, 0x4D, 0x85, 0xD2, 0x74, 0x3C, 0x44, 0x0F, 0xB7,
237 | 0x59, 0x26, 0x48, 0x8B, 0xC5, 0x49, 0x83, 0xC3, 0x28, 0x4C, 0x03, 0xD9,
238 | 0x4C, 0x2B, 0xDD, 0x44, 0x0F, 0xB6, 0x00, 0x46, 0x0F, 0xB6, 0x0C, 0x18,
239 | 0x45, 0x2B, 0xC1, 0x75, 0x08, 0x48, 0xFF, 0xC0, 0x45, 0x85, 0xC9, 0x75,
240 | 0xEA, 0x45, 0x85, 0xC0, 0x74, 0x16, 0x48, 0xFF, 0xC2, 0x48, 0x81, 0xC1,
241 | 0x28, 0x01, 0x00, 0x00, 0x49, 0x3B, 0xD2, 0x72, 0xC4, 0xB8, 0x25, 0x02,
242 | 0x00, 0xC0, 0xEB, 0x16, 0x48, 0x8B, 0x41, 0x10, 0x48, 0x89, 0x06, 0x8B,
243 | 0x41, 0x18, 0x48, 0x89, 0x07, 0x33, 0xC0, 0xEB, 0x05, 0xB8, 0x0D, 0x00,
244 | 0x00, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x48, 0x8B, 0x6C, 0x24, 0x40,
245 | 0x48, 0x8B, 0x74, 0x24, 0x48, 0x48, 0x83, 0xC4, 0x20, 0x5F, 0xC3, 0xCC,
246 | 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48,
247 | 0x89, 0x70, 0x18, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x48, 0x83, 0x60, 0x20,
248 | 0x00, 0x49, 0x8B, 0xE8, 0x48, 0x8B, 0xF2, 0x48, 0x8B, 0xF9, 0xFF, 0x15,
249 | 0xC8, 0x08, 0x00, 0x00, 0x48, 0x8B, 0xD8, 0xFF, 0x15, 0xBF, 0x08, 0x00,
250 | 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x68, 0x4C, 0x8B, 0xCF, 0x48, 0x89, 0x4C,
251 | 0x24, 0x30, 0x4C, 0x8B, 0xC3, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B,
252 | 0xC8, 0x48, 0x8B, 0xD6, 0x48, 0x89, 0x6C, 0x24, 0x20, 0xFF, 0x15, 0xA9,
253 | 0x08, 0x00, 0x00, 0x85, 0xC0, 0x78, 0x0B, 0x48, 0x39, 0x6C, 0x24, 0x68,
254 | 0x75, 0x04, 0xB0, 0x01, 0xEB, 0x02, 0x32, 0xC0, 0x48, 0x8B, 0x5C, 0x24,
255 | 0x50, 0x48, 0x8B, 0x6C, 0x24, 0x58, 0x48, 0x8B, 0x74, 0x24, 0x60, 0x48,
256 | 0x83, 0xC4, 0x40, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48,
257 | 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 0x89, 0x70, 0x18, 0x48,
258 | 0x89, 0x78, 0x20, 0x41, 0x56, 0x41, 0x57, 0x4D, 0x8B, 0xF8, 0x48, 0x8B,
259 | 0xFA, 0x48, 0x8B, 0xF1, 0x49, 0x83, 0xCA, 0xFF, 0x49, 0xFF, 0xC2, 0x43,
260 | 0x80, 0x3C, 0x11, 0x00, 0x75, 0xF6, 0x33, 0xD2, 0x49, 0x2B, 0xFA, 0x74,
261 | 0x4F, 0x4C, 0x8B, 0xDE, 0x4D, 0x2B, 0xD9, 0x4D, 0x85, 0xD2, 0x74, 0x3C,
262 | 0x4D, 0x8B, 0xF7, 0x49, 0x8D, 0x2C, 0x13, 0x4D, 0x2B, 0xF1, 0x49, 0x8B,
263 | 0xD9, 0x48, 0xF7, 0xDB, 0x4D, 0x8B, 0xC1, 0x41, 0x80, 0x38, 0x3F, 0x74,
264 | 0x0A, 0x43, 0x8A, 0x04, 0x06, 0x41, 0x38, 0x04, 0x28, 0x75, 0x19, 0x4A,
265 | 0x8D, 0x0C, 0x03, 0x49, 0x8D, 0x42, 0xFF, 0x48, 0x3B, 0xC8, 0x74, 0x2F,
266 | 0x49, 0xFF, 0xC0, 0x4A, 0x8D, 0x04, 0x03, 0x49, 0x3B, 0xC2, 0x72, 0xD7,
267 | 0x48, 0xFF, 0xC2, 0x48, 0x3B, 0xD7, 0x72, 0xB7, 0x33, 0xC0, 0x48, 0x8B,
268 | 0x5C, 0x24, 0x18, 0x48, 0x8B, 0x6C, 0x24, 0x20, 0x48, 0x8B, 0x74, 0x24,
269 | 0x28, 0x48, 0x8B, 0x7C, 0x24, 0x30, 0x41, 0x5F, 0x41, 0x5E, 0xC3, 0x48,
270 | 0x8D, 0x04, 0x32, 0xEB, 0xE1, 0xCC, 0xCC, 0xCC, 0xC2, 0x00, 0x00, 0xCC,
271 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
272 | 0xFF, 0x25, 0xBA, 0x07, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
273 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x66, 0x66,
274 | 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0xCC, 0xCC,
275 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
276 | 0x48, 0x8B, 0xC1, 0x49, 0x83, 0xF8, 0x08, 0x72, 0x37, 0x49, 0x83, 0xF8,
277 | 0x10, 0x77, 0x11, 0x4C, 0x8B, 0x1A, 0x4A, 0x8B, 0x54, 0x02, 0xF8, 0x4C,
278 | 0x89, 0x19, 0x4A, 0x89, 0x54, 0x01, 0xF8, 0xC3, 0x49, 0x83, 0xF8, 0x20,
279 | 0x77, 0x5A, 0x0F, 0x10, 0x02, 0x42, 0x0F, 0x10, 0x4C, 0x02, 0xF0, 0x0F,
280 | 0x11, 0x01, 0x42, 0x0F, 0x11, 0x4C, 0x01, 0xF0, 0xC3, 0x0F, 0x1F, 0x80,
281 | 0x00, 0x00, 0x00, 0x00, 0x4D, 0x85, 0xC0, 0x74, 0x15, 0x48, 0x2B, 0xD1,
282 | 0x72, 0x16, 0x44, 0x8A, 0x1C, 0x11, 0x48, 0xFF, 0xC1, 0x49, 0xFF, 0xC8,
283 | 0x44, 0x88, 0x59, 0xFF, 0x75, 0xF0, 0xC3, 0x0F, 0x1F, 0x44, 0x00, 0x00,
284 | 0x49, 0x03, 0xC8, 0x44, 0x8A, 0x5C, 0x11, 0xFF, 0x48, 0xFF, 0xC9, 0x49,
285 | 0xFF, 0xC8, 0x44, 0x88, 0x19, 0x75, 0xF0, 0xC3, 0x66, 0x66, 0x66, 0x66,
286 | 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x8D, 0x1C, 0x02,
287 | 0x48, 0x2B, 0xD1, 0x73, 0x09, 0x4C, 0x3B, 0xD9, 0x0F, 0x87, 0x6E, 0x01,
288 | 0x00, 0x00, 0x0F, 0x10, 0x04, 0x11, 0x48, 0x83, 0xC1, 0x10, 0xF6, 0xC1,
289 | 0x0F, 0x74, 0x12, 0x48, 0x83, 0xE1, 0xF0, 0x0F, 0x10, 0x0C, 0x11, 0x0F,
290 | 0x11, 0x00, 0x0F, 0x28, 0xC1, 0x48, 0x83, 0xC1, 0x10, 0x4C, 0x03, 0xC0,
291 | 0x4C, 0x2B, 0xC1, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x06, 0x74, 0x6F,
292 | 0x49, 0x81, 0xF9, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x87, 0xB3, 0x00, 0x00,
293 | 0x00, 0x49, 0x83, 0xE0, 0x3F, 0xEB, 0x2D, 0x66, 0x66, 0x66, 0x66, 0x66,
294 | 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66,
295 | 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00,
296 | 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00,
297 | 0x00, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x0C, 0x11, 0x0F, 0x10, 0x54, 0x11,
298 | 0x10, 0x0F, 0x10, 0x5C, 0x11, 0x20, 0x0F, 0x10, 0x64, 0x11, 0x30, 0x0F,
299 | 0x29, 0x41, 0xF0, 0x48, 0x83, 0xC1, 0x40, 0x49, 0xFF, 0xC9, 0x0F, 0x29,
300 | 0x49, 0xC0, 0x0F, 0x29, 0x51, 0xD0, 0x0F, 0x29, 0x59, 0xE0, 0x0F, 0x28,
301 | 0xC4, 0x75, 0xD1, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x04, 0x74, 0x19,
302 | 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x29, 0x41, 0xF0,
303 | 0x0F, 0x10, 0x04, 0x11, 0x48, 0x83, 0xC1, 0x10, 0x49, 0xFF, 0xC9, 0x75,
304 | 0xEF, 0x49, 0x83, 0xE0, 0x0F, 0x74, 0x0E, 0x4E, 0x8D, 0x5C, 0x01, 0xF0,
305 | 0x41, 0x0F, 0x10, 0x0C, 0x13, 0x41, 0x0F, 0x11, 0x0B, 0x0F, 0x29, 0x41,
306 | 0xF0, 0xC3, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84,
307 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00,
308 | 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x06, 0x49, 0x83, 0xE0, 0x3F, 0x0F,
309 | 0x18, 0x44, 0x11, 0x40, 0xEB, 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
310 | 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66,
311 | 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
312 | 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00,
313 | 0x00, 0x00, 0x00, 0x90, 0x0F, 0x10, 0x0C, 0x11, 0x0F, 0x10, 0x54, 0x11,
314 | 0x10, 0x0F, 0x10, 0x5C, 0x11, 0x20, 0x0F, 0x10, 0x64, 0x11, 0x30, 0x0F,
315 | 0x2B, 0x41, 0xF0, 0x48, 0x83, 0xC1, 0x40, 0x0F, 0x18, 0x44, 0x11, 0x40,
316 | 0x49, 0xFF, 0xC9, 0x0F, 0x2B, 0x49, 0xC0, 0x0F, 0x2B, 0x51, 0xD0, 0x0F,
317 | 0x2B, 0x59, 0xE0, 0x0F, 0x28, 0xC4, 0x75, 0xCC, 0x0F, 0xAE, 0xF8, 0xE9,
318 | 0x33, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0x40, 0x00, 0x49, 0x03, 0xC8, 0x0F,
319 | 0x10, 0x44, 0x11, 0xF0, 0x48, 0x83, 0xE9, 0x10, 0x49, 0x83, 0xE8, 0x10,
320 | 0xF6, 0xC1, 0x0F, 0x74, 0x18, 0x4C, 0x8B, 0xD9, 0x48, 0x83, 0xE1, 0xF0,
321 | 0x0F, 0x10, 0x0C, 0x11, 0x41, 0x0F, 0x11, 0x03, 0x0F, 0x28, 0xC1, 0x4C,
322 | 0x8B, 0xC1, 0x4C, 0x2B, 0xC0, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x06,
323 | 0x74, 0x39, 0x49, 0x83, 0xE0, 0x3F, 0xEB, 0x04, 0x0F, 0x1F, 0x40, 0x00,
324 | 0x0F, 0x10, 0x4C, 0x11, 0xF0, 0x0F, 0x10, 0x54, 0x11, 0xE0, 0x0F, 0x10,
325 | 0x5C, 0x11, 0xD0, 0x0F, 0x10, 0x64, 0x11, 0xC0, 0x0F, 0x29, 0x01, 0x48,
326 | 0x83, 0xE9, 0x40, 0x49, 0xFF, 0xC9, 0x0F, 0x29, 0x49, 0x30, 0x0F, 0x29,
327 | 0x51, 0x20, 0x0F, 0x29, 0x59, 0x10, 0x0F, 0x28, 0xC4, 0x75, 0xD1, 0x4D,
328 | 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x04, 0x74, 0x19, 0x0F, 0x1F, 0x84, 0x00,
329 | 0x00, 0x00, 0x00, 0x00, 0x0F, 0x29, 0x01, 0x0F, 0x10, 0x44, 0x11, 0xF0,
330 | 0x48, 0x83, 0xE9, 0x10, 0x49, 0xFF, 0xC9, 0x75, 0xEF, 0x49, 0x83, 0xE0,
331 | 0x0F, 0x74, 0x0F, 0x4C, 0x8B, 0xD9, 0x4D, 0x2B, 0xD8, 0x41, 0x0F, 0x10,
332 | 0x0C, 0x13, 0x41, 0x0F, 0x11, 0x0B, 0x0F, 0x29, 0x01, 0xC3, 0xCC, 0xCC,
333 | 0xCC, 0xCC, 0xCC, 0xCC, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C,
334 | 0x2E, 0x65, 0x78, 0x65, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x78, 0x78, 0x3F,
335 | 0x3F, 0x3F, 0x3F, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78,
336 | 0x78, 0x78, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
337 | 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0x05, 0x00, 0x00, 0x00, 0x00, 0xE8,
338 | 0x00, 0x00, 0x00, 0x00, 0x8B, 0xC8, 0x85, 0xC0, 0x78, 0x40, 0x00, 0xCC,
339 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
340 | 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78, 0x00, 0xCC, 0xCC,
341 | 0xCC, 0xCC, 0xCC, 0xCC, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x67, 0x0C,
342 | 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x78, 0x78, 0x3F,
343 | 0x3F, 0x3F, 0x3F, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78,
344 | 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
345 | 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xE8,
346 | 0x00, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x8C, 0x24, 0x00, 0xCC, 0xCC, 0xCC,
347 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
348 | 0x78, 0x78, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x3F, 0x3F, 0x3F, 0x3F,
349 | 0x78, 0x78, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78, 0x00,
350 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8D, 0x0D, 0x00,
351 | 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x1D, 0x00,
352 | 0x00, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
353 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
354 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
355 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
357 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
358 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
359 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
360 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
361 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
362 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
363 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
364 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
365 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
366 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
368 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
369 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
372 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
373 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
375 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
376 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
377 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
378 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
379 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
380 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
381 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
383 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
384 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
385 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
386 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
387 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
388 | 0x90, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x50, 0x00, 0x00,
389 | 0x00, 0x00, 0x00, 0x00, 0xB6, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390 | 0xCA, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x50, 0x00, 0x00,
391 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
392 | 0x24, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x51, 0x00, 0x00,
393 | 0x00, 0x00, 0x00, 0x00, 0x5E, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
394 | 0x80, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x51, 0x00, 0x00,
395 | 0x00, 0x00, 0x00, 0x00, 0xB2, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
396 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x00, 0x40,
397 | 0x01, 0x00, 0x00, 0x00, 0xB0, 0x18, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
398 | 0x00, 0x10, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0xB0, 0x10, 0x00, 0x00,
399 | 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
400 | 0x00, 0x00, 0x00, 0x00, 0x87, 0xD5, 0x0F, 0x61, 0x00, 0x00, 0x00, 0x00,
401 | 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0xE8, 0x21, 0x00, 0x00,
402 | 0xE8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xD5, 0x0F, 0x61,
403 | 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00,
404 | 0x50, 0x22, 0x00, 0x00, 0x50, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
405 | 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
406 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
407 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
408 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
409 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
410 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
411 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
412 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40,
413 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
414 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x20, 0x00, 0x40,
415 | 0x01, 0x00, 0x00, 0x00, 0x70, 0x20, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
416 | 0x78, 0x20, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
417 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
418 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
419 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
420 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
421 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
422 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
423 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
424 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
425 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
426 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
427 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
428 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x53, 0x44, 0x53,
429 | 0x82, 0x3E, 0xA8, 0xE8, 0x64, 0x06, 0xDE, 0x49, 0xA2, 0x50, 0x72, 0x26,
430 | 0x04, 0xBA, 0x9E, 0x82, 0x18, 0x00, 0x00, 0x00, 0x43, 0x3A, 0x5C, 0x55,
431 | 0x73, 0x65, 0x72, 0x73, 0x5C, 0x72, 0x65, 0x76, 0x65, 0x72, 0x5C, 0x44,
432 | 0x65, 0x73, 0x6B, 0x74, 0x6F, 0x70, 0x5C, 0x43, 0x6F, 0x73, 0x4D, 0x61,
433 | 0x70, 0x70, 0x65, 0x72, 0x5C, 0x43, 0x6F, 0x73, 0x4B, 0x65, 0x72, 0x6E,
434 | 0x65, 0x6C, 0x6D, 0x6F, 0x64, 0x65, 0x5C, 0x4F, 0x75, 0x74, 0x70, 0x75,
435 | 0x74, 0x5C, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x4D, 0x61, 0x6E, 0x75,
436 | 0x61, 0x6C, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2E, 0x70, 0x64, 0x62,
437 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
438 | 0xA0, 0x08, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x24, 0x6D, 0x6E,
439 | 0x00, 0x00, 0x00, 0x00, 0xA0, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
440 | 0x2E, 0x74, 0x65, 0x78, 0x74, 0x24, 0x6D, 0x6E, 0x24, 0x30, 0x30, 0x00,
441 | 0xC0, 0x18, 0x00, 0x00, 0xB0, 0x02, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78,
442 | 0x74, 0x24, 0x6D, 0x6E, 0x24, 0x32, 0x31, 0x00, 0x70, 0x1B, 0x00, 0x00,
443 | 0xE8, 0x00, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x24, 0x73, 0x00,
444 | 0x00, 0x20, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61,
445 | 0x74, 0x61, 0x24, 0x35, 0x00, 0x00, 0x00, 0x00, 0x68, 0x20, 0x00, 0x00,
446 | 0x10, 0x00, 0x00, 0x00, 0x2E, 0x30, 0x30, 0x63, 0x66, 0x67, 0x00, 0x00,
447 | 0x78, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x2E, 0x67, 0x66, 0x69,
448 | 0x64, 0x73, 0x00, 0x00, 0x90, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00,
449 | 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0xE8, 0x21, 0x00, 0x00,
450 | 0xA8, 0x01, 0x00, 0x00, 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x24, 0x7A,
451 | 0x7A, 0x7A, 0x64, 0x62, 0x67, 0x00, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00,
452 | 0xE4, 0x00, 0x00, 0x00, 0x2E, 0x78, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00,
453 | 0x00, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2E, 0x64, 0x61, 0x74,
454 | 0x61, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
455 | 0x2E, 0x62, 0x73, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
456 | 0x90, 0x00, 0x00, 0x00, 0x2E, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00,
457 | 0x00, 0x50, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61,
458 | 0x74, 0x61, 0x24, 0x32, 0x00, 0x00, 0x00, 0x00, 0x14, 0x50, 0x00, 0x00,
459 | 0x14, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61, 0x74, 0x61, 0x24, 0x33,
460 | 0x00, 0x00, 0x00, 0x00, 0x28, 0x50, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
461 | 0x2E, 0x69, 0x64, 0x61, 0x74, 0x61, 0x24, 0x34, 0x00, 0x00, 0x00, 0x00,
462 | 0x90, 0x50, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61,
463 | 0x74, 0x61, 0x24, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
464 | 0x02, 0x1D, 0x0E, 0x00, 0x07, 0x16, 0x00, 0x06, 0x1D, 0x74, 0x0D, 0x00,
465 | 0x1D, 0x64, 0x0C, 0x00, 0x1D, 0x54, 0x0B, 0x00, 0x1D, 0x34, 0x0A, 0x00,
466 | 0x1D, 0x52, 0x19, 0xF0, 0x17, 0xE0, 0x15, 0xC0, 0x02, 0x04, 0x03, 0x00,
467 | 0x01, 0x16, 0x00, 0x06, 0x04, 0x42, 0x00, 0x00, 0x02, 0x12, 0x0A, 0x00,
468 | 0x05, 0x06, 0x09, 0x06, 0x12, 0x54, 0x0B, 0x00, 0x12, 0x34, 0x0A, 0x00,
469 | 0x12, 0x32, 0x0E, 0xE0, 0x0C, 0x70, 0x0B, 0x60, 0x02, 0x0F, 0x08, 0x00,
470 | 0x01, 0x16, 0x00, 0x06, 0x0F, 0x74, 0x03, 0x00, 0x0A, 0x64, 0x02, 0x00,
471 | 0x05, 0x34, 0x01, 0x00, 0x02, 0x0A, 0x06, 0x00, 0x02, 0x16, 0x00, 0x06,
472 | 0x0A, 0x34, 0x06, 0x00, 0x0A, 0x32, 0x06, 0x70, 0x02, 0x10, 0x08, 0x00,
473 | 0x02, 0x16, 0x00, 0x06, 0x10, 0x64, 0x0F, 0x00, 0x10, 0x34, 0x0C, 0x00,
474 | 0x10, 0x92, 0x0C, 0x70, 0x02, 0x08, 0x04, 0x00, 0x02, 0x06, 0x1A, 0x06,
475 | 0x08, 0x32, 0x04, 0x30, 0x02, 0x14, 0x0A, 0x00, 0x02, 0x16, 0x00, 0x06,
476 | 0x14, 0x64, 0x0C, 0x00, 0x14, 0x54, 0x0B, 0x00, 0x14, 0x34, 0x0A, 0x00,
477 | 0x14, 0x72, 0x10, 0x70, 0x02, 0x14, 0x0A, 0x00, 0x02, 0x16, 0x00, 0x06,
478 | 0x14, 0x64, 0x09, 0x00, 0x14, 0x54, 0x08, 0x00, 0x14, 0x34, 0x06, 0x00,
479 | 0x14, 0x32, 0x10, 0x70, 0x02, 0x17, 0x0C, 0x00, 0x05, 0x06, 0x0B, 0x06,
480 | 0x17, 0x74, 0x06, 0x00, 0x17, 0x64, 0x05, 0x00, 0x17, 0x54, 0x04, 0x00,
481 | 0x17, 0x34, 0x03, 0x00, 0x17, 0xF0, 0x15, 0xE0, 0x00, 0x00, 0x00, 0x00,
482 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
483 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
484 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
485 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
486 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
487 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
488 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
489 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
490 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
491 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
492 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
493 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
494 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
495 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
496 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
497 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
498 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
499 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
501 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
502 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
503 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
504 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
505 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
506 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
507 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
508 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
509 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
510 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
511 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
512 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
513 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
514 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
515 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
516 | 0x32, 0xA2, 0xDF, 0x2D, 0x99, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
517 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
518 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
519 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
520 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
521 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
522 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
523 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
524 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
525 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
526 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
527 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
528 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
529 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
530 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
531 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
532 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
533 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
534 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
535 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
536 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
537 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
538 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
539 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
540 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
541 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
542 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
543 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
544 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
545 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
546 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
547 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
548 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
549 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
550 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
551 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
552 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
553 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
554 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
555 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
556 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
557 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
558 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
559 | 0x78, 0x10, 0x00, 0x00, 0xB0, 0x23, 0x00, 0x00, 0xB0, 0x10, 0x00, 0x00,
560 | 0x5A, 0x12, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00, 0x5C, 0x12, 0x00, 0x00,
561 | 0x98, 0x12, 0x00, 0x00, 0xE8, 0x23, 0x00, 0x00, 0xD4, 0x12, 0x00, 0x00,
562 | 0xCB, 0x13, 0x00, 0x00, 0xBC, 0x23, 0x00, 0x00, 0xCC, 0x13, 0x00, 0x00,
563 | 0x6E, 0x14, 0x00, 0x00, 0xD4, 0x23, 0x00, 0x00, 0x70, 0x14, 0x00, 0x00,
564 | 0x4A, 0x15, 0x00, 0x00, 0x0C, 0x24, 0x00, 0x00, 0x4C, 0x15, 0x00, 0x00,
565 | 0x59, 0x16, 0x00, 0x00, 0xF8, 0x23, 0x00, 0x00, 0x5C, 0x16, 0x00, 0x00,
566 | 0x57, 0x17, 0x00, 0x00, 0x30, 0x24, 0x00, 0x00, 0x58, 0x17, 0x00, 0x00,
567 | 0xD5, 0x17, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00, 0xD8, 0x17, 0x00, 0x00,
568 | 0x7D, 0x18, 0x00, 0x00, 0x48, 0x24, 0x00, 0x00, 0xB0, 0x18, 0x00, 0x00,
569 | 0xB5, 0x18, 0x00, 0x00, 0x68, 0x24, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00,
570 | 0x6A, 0x1B, 0x00, 0x00, 0x70, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
571 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
572 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
573 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
574 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
575 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
576 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
577 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
578 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
579 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
580 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
581 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
582 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
583 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
584 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
585 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
586 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
587 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
588 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
589 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
590 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
591 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
592 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
593 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
594 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
595 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
596 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
597 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
598 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
599 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
600 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
601 | 0x00, 0x00, 0x00, 0x00, 0x28, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
602 | 0x00, 0x00, 0x00, 0x00, 0xC8, 0x51, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
603 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
604 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x50, 0x00, 0x00,
605 | 0x00, 0x00, 0x00, 0x00, 0xA2, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
606 | 0xB6, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x50, 0x00, 0x00,
607 | 0x00, 0x00, 0x00, 0x00, 0xEA, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
608 | 0x02, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x51, 0x00, 0x00,
609 | 0x00, 0x00, 0x00, 0x00, 0x3C, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
610 | 0x5E, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x51, 0x00, 0x00,
611 | 0x00, 0x00, 0x00, 0x00, 0x96, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
612 | 0xB2, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
613 | 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x45, 0x78, 0x41, 0x6C, 0x6C, 0x6F,
614 | 0x63, 0x61, 0x74, 0x65, 0x50, 0x6F, 0x6F, 0x6C, 0x00, 0x00, 0xCA, 0x00,
615 | 0x45, 0x78, 0x46, 0x72, 0x65, 0x65, 0x50, 0x6F, 0x6F, 0x6C, 0x57, 0x69,
616 | 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0xD1, 0x00, 0x45, 0x78, 0x47, 0x65,
617 | 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x4D, 0x6F, 0x64,
618 | 0x65, 0x00, 0x27, 0x08, 0x52, 0x74, 0x6C, 0x46, 0x69, 0x6E, 0x64, 0x45,
619 | 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6F, 0x75, 0x74, 0x69,
620 | 0x6E, 0x65, 0x42, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x00, 0x00, 0x7F, 0x08,
621 | 0x52, 0x74, 0x6C, 0x49, 0x6E, 0x69, 0x74, 0x55, 0x6E, 0x69, 0x63, 0x6F,
622 | 0x64, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x8E, 0x00,
623 | 0x45, 0x78, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x52, 0x65, 0x73,
624 | 0x6F, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69,
625 | 0x76, 0x65, 0x4C, 0x69, 0x74, 0x65, 0x00, 0x00, 0x1B, 0x01, 0x45, 0x78,
626 | 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x6F, 0x75,
627 | 0x72, 0x63, 0x65, 0x4C, 0x69, 0x74, 0x65, 0x00, 0xF7, 0x07, 0x52, 0x74,
628 | 0x6C, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x45, 0x6C, 0x65, 0x6D, 0x65,
629 | 0x6E, 0x74, 0x47, 0x65, 0x6E, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62,
630 | 0x6C, 0x65, 0x41, 0x76, 0x6C, 0x00, 0xCF, 0x08, 0x52, 0x74, 0x6C, 0x4C,
631 | 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x45, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74,
632 | 0x47, 0x65, 0x6E, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6C, 0x65,
633 | 0x41, 0x76, 0x6C, 0x00, 0x2C, 0x03, 0x49, 0x6F, 0x47, 0x65, 0x74, 0x43,
634 | 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73,
635 | 0x73, 0x00, 0x14, 0x0B, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53,
636 | 0x79, 0x73, 0x74, 0x65, 0x6D, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61,
637 | 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x6C, 0x05, 0x4D, 0x6D, 0x43, 0x6F,
638 | 0x70, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x4D, 0x65, 0x6D,
639 | 0x6F, 0x72, 0x79, 0x00, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C,
640 | 0x2E, 0x65, 0x78, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
641 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
642 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
643 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
644 | 0x00, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0xA0, 0x70, 0xA0,
645 | 0x28, 0xA1, 0x40, 0xA1, 0x48, 0xA1, 0x50, 0xA1, 0x00, 0x00, 0x00, 0x00,
646 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
647 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
648 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
649 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
650 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
651 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
652 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
653 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
654 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
655 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
656 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
657 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
658 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
659 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
660 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
661 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
662 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
663 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
664 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
666 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
667 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
668 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
669 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
671 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
673 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
674 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
675 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
676 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
677 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
678 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
679 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
680 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
681 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
682 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
683 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
684 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
685 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
686 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x14, 0x00, 0x00,
687 | 0x00, 0x02, 0x02, 0x00, 0x30, 0x82, 0x14, 0x3C, 0x06, 0x09, 0x2A, 0x86,
688 | 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02, 0xA0, 0x82, 0x14, 0x2D, 0x30,
689 | 0x82, 0x14, 0x29, 0x02, 0x01, 0x01, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x05,
690 | 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, 0x4C, 0x06, 0x0A, 0x2B,
691 | 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x3E, 0x30,
692 | 0x3C, 0x30, 0x17, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
693 | 0x02, 0x01, 0x0F, 0x30, 0x09, 0x03, 0x01, 0x00, 0xA0, 0x04, 0xA2, 0x02,
694 | 0x80, 0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02,
695 | 0x1A, 0x05, 0x00, 0x04, 0x14, 0x6E, 0x40, 0x26, 0xF5, 0x9B, 0x0E, 0x2D,
696 | 0x05, 0xA2, 0x29, 0xF6, 0x49, 0x51, 0x3A, 0x29, 0x96, 0xE4, 0x67, 0xFA,
697 | 0xC9, 0xA0, 0x82, 0x11, 0x98, 0x30, 0x82, 0x05, 0x31, 0x30, 0x82, 0x04,
698 | 0x19, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00, 0xA7, 0x5A, 0xF1,
699 | 0x6C, 0xB1, 0x56, 0x98, 0x23, 0x09, 0x5A, 0x4C, 0x76, 0xE1, 0x67, 0x82,
700 | 0x84, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01,
701 | 0x01, 0x0B, 0x05, 0x00, 0x30, 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03,
702 | 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06,
703 | 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65,
704 | 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72,
705 | 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53,
706 | 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03,
707 | 0x55, 0x04, 0x0A, 0x13, 0x0F, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F,
708 | 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22,
709 | 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x53, 0x65, 0x63, 0x74, 0x69,
710 | 0x67, 0x6F, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20,
711 | 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x30, 0x1E,
712 | 0x17, 0x0D, 0x32, 0x30, 0x30, 0x34, 0x32, 0x39, 0x30, 0x30, 0x30, 0x30,
713 | 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x34, 0x32, 0x38, 0x32,
714 | 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 0xA1, 0x31, 0x0B, 0x30,
715 | 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x41, 0x31, 0x10,
716 | 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x11, 0x0C, 0x07, 0x56, 0x36, 0x57,
717 | 0x20, 0x30, 0x42, 0x38, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04,
718 | 0x08, 0x0C, 0x10, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x43,
719 | 0x6F, 0x6C, 0x75, 0x6D, 0x62, 0x69, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06,
720 | 0x03, 0x55, 0x04, 0x07, 0x0C, 0x08, 0x52, 0x69, 0x63, 0x68, 0x6D, 0x6F,
721 | 0x6E, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x09, 0x0C,
722 | 0x11, 0x39, 0x31, 0x31, 0x2D, 0x31, 0x30, 0x38, 0x37, 0x30, 0x20, 0x4E,
723 | 0x6F, 0x2E, 0x35, 0x20, 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03,
724 | 0x55, 0x04, 0x0A, 0x0C, 0x11, 0x4A, 0x65, 0x72, 0x6F, 0x6D, 0x69, 0x6E,
725 | 0x20, 0x43, 0x6F, 0x64, 0x79, 0x20, 0x45, 0x72, 0x69, 0x63, 0x31, 0x1A,
726 | 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x11, 0x4A, 0x65, 0x72,
727 | 0x6F, 0x6D, 0x69, 0x6E, 0x20, 0x43, 0x6F, 0x64, 0x79, 0x20, 0x45, 0x72,
728 | 0x69, 0x63, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86,
729 | 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
730 | 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xD1,
731 | 0x8D, 0xBC, 0xDB, 0x92, 0x18, 0xC8, 0x53, 0xA8, 0x71, 0x6B, 0x88, 0xF3,
732 | 0x08, 0xC7, 0xBA, 0x68, 0x42, 0x32, 0x3D, 0xB4, 0x97, 0x73, 0x96, 0xAD,
733 | 0xB3, 0x84, 0xA8, 0xEB, 0xC2, 0x82, 0x09, 0xF8, 0x8C, 0xF2, 0x84, 0xCB,
734 | 0x60, 0x72, 0x60, 0xAE, 0x1B, 0x41, 0x64, 0x85, 0x48, 0x7F, 0x6F, 0xB3,
735 | 0x2D, 0x79, 0xD6, 0x27, 0x68, 0x3B, 0xDD, 0x09, 0x03, 0x46, 0x9B, 0x32,
736 | 0x7D, 0xDA, 0xEC, 0x5B, 0xC7, 0xC0, 0xA4, 0x9B, 0x98, 0x6D, 0x6A, 0xA7,
737 | 0x41, 0x3A, 0x84, 0x54, 0x15, 0xAD, 0x3F, 0x6C, 0xB9, 0x14, 0xAB, 0xE3,
738 | 0xDB, 0x19, 0x01, 0x37, 0xF0, 0xA8, 0xE2, 0x47, 0xC7, 0x54, 0x56, 0xA4,
739 | 0x46, 0x6C, 0x41, 0x8D, 0x14, 0xEB, 0xB2, 0xFA, 0x81, 0x46, 0xDF, 0x24,
740 | 0x39, 0x39, 0x1E, 0xE0, 0x52, 0x85, 0xB3, 0x0F, 0x87, 0xDB, 0x6D, 0x18,
741 | 0x34, 0xD4, 0x35, 0x7C, 0xF5, 0xDB, 0xE5, 0xB5, 0x39, 0x41, 0x62, 0x86,
742 | 0x41, 0xCC, 0x8A, 0xFC, 0xF4, 0xEA, 0xB4, 0x4B, 0x74, 0x40, 0x8C, 0x3B,
743 | 0xBA, 0x26, 0x5F, 0x3C, 0xC9, 0x97, 0x12, 0xE8, 0x84, 0x57, 0x69, 0x50,
744 | 0xE8, 0x60, 0x52, 0x12, 0x53, 0xBF, 0x91, 0xF4, 0x63, 0x40, 0x85, 0xD6,
745 | 0x81, 0x48, 0x9B, 0x7D, 0x6D, 0xBB, 0xFD, 0x4E, 0x75, 0x31, 0xC4, 0x8B,
746 | 0x00, 0xF4, 0x39, 0x94, 0x45, 0x44, 0xF6, 0xBD, 0x13, 0x4E, 0xC4, 0x61,
747 | 0x4B, 0xE4, 0x7E, 0xA0, 0x53, 0x39, 0x75, 0x67, 0xD5, 0x35, 0x86, 0xFA,
748 | 0xD5, 0x71, 0x2C, 0x4D, 0xD7, 0xB2, 0xBB, 0xE4, 0xC6, 0x99, 0x85, 0x6B,
749 | 0x1E, 0xC2, 0x7D, 0xC6, 0xE2, 0x74, 0xE1, 0x08, 0xDC, 0xFF, 0x99, 0xEB,
750 | 0xAB, 0x87, 0x4F, 0xCC, 0x62, 0x53, 0x95, 0xA9, 0x92, 0x3C, 0x7B, 0x26,
751 | 0x0A, 0x52, 0x41, 0x9D, 0x2B, 0xF7, 0x51, 0x80, 0x10, 0xEE, 0x65, 0xDC,
752 | 0x07, 0xEC, 0xDD, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x86,
753 | 0x30, 0x82, 0x01, 0x82, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04,
754 | 0x18, 0x30, 0x16, 0x80, 0x14, 0x0E, 0xE1, 0x3A, 0xA8, 0x53, 0x3A, 0x31,
755 | 0xD5, 0x8A, 0xBE, 0xC1, 0xBB, 0xAD, 0x67, 0x1A, 0x03, 0x85, 0xAD, 0x34,
756 | 0x0E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14,
757 | 0x65, 0x94, 0x5A, 0x31, 0x0D, 0xEA, 0x7A, 0x25, 0x88, 0xE2, 0xDC, 0x08,
758 | 0x30, 0x37, 0xEF, 0x92, 0x34, 0x12, 0x90, 0xE6, 0x30, 0x0E, 0x06, 0x03,
759 | 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80,
760 | 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02,
761 | 0x30, 0x00, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30,
762 | 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30,
763 | 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x42, 0x01, 0x01,
764 | 0x04, 0x04, 0x03, 0x02, 0x04, 0x10, 0x30, 0x40, 0x06, 0x03, 0x55, 0x1D,
765 | 0x20, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0x06, 0x0C, 0x2B, 0x06, 0x01,
766 | 0x04, 0x01, 0xB2, 0x31, 0x01, 0x02, 0x01, 0x03, 0x02, 0x30, 0x25, 0x30,
767 | 0x23, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16,
768 | 0x17, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x73, 0x65, 0x63,
769 | 0x74, 0x69, 0x67, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x50, 0x53,
770 | 0x30, 0x43, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x3C, 0x30, 0x3A, 0x30,
771 | 0x38, 0xA0, 0x36, 0xA0, 0x34, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3A,
772 | 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x73, 0x65, 0x63, 0x74, 0x69, 0x67,
773 | 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67,
774 | 0x6F, 0x52, 0x53, 0x41, 0x43, 0x6F, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6E,
775 | 0x69, 0x6E, 0x67, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x73, 0x06,
776 | 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x67, 0x30,
777 | 0x65, 0x30, 0x3E, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
778 | 0x02, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72,
779 | 0x74, 0x2E, 0x73, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x2E, 0x63, 0x6F,
780 | 0x6D, 0x2F, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x52, 0x53, 0x41,
781 | 0x43, 0x6F, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x43,
782 | 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x23, 0x06, 0x08, 0x2B, 0x06, 0x01,
783 | 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3A,
784 | 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x73, 0x65, 0x63, 0x74, 0x69,
785 | 0x67, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86,
786 | 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01,
787 | 0x01, 0x00, 0x08, 0xC6, 0x9A, 0xDC, 0x72, 0x4B, 0xAB, 0xB8, 0x57, 0x89,
788 | 0x16, 0x84, 0x2B, 0x82, 0x81, 0xF3, 0x54, 0xFD, 0x7C, 0xD4, 0xCC, 0x32,
789 | 0x5B, 0xA6, 0x2E, 0xDC, 0x0D, 0x54, 0x80, 0xD7, 0x3E, 0x50, 0xE3, 0x8D,
790 | 0x3E, 0x76, 0x26, 0xCD, 0xE2, 0xF8, 0x3E, 0x79, 0x4E, 0xA0, 0x13, 0x67,
791 | 0xD6, 0x6F, 0x8D, 0x80, 0x0E, 0xBF, 0x14, 0xA6, 0x31, 0xA4, 0xF7, 0xB1,
792 | 0xE6, 0x48, 0x5E, 0x36, 0x60, 0x7D, 0x20, 0x29, 0xA0, 0xCD, 0xAE, 0x4D,
793 | 0xCC, 0x67, 0xEB, 0xAE, 0x34, 0xA8, 0xF3, 0xF7, 0x4E, 0xFF, 0x72, 0xE1,
794 | 0xCA, 0xA5, 0x79, 0x31, 0xDE, 0xAE, 0xE2, 0xE6, 0x7D, 0x4A, 0xBC, 0x94,
795 | 0x80, 0xFF, 0x10, 0x8B, 0x4A, 0xDF, 0x17, 0xF7, 0x77, 0x0E, 0x43, 0xB7,
796 | 0xE2, 0xC0, 0xBA, 0x66, 0x1B, 0x79, 0x69, 0xD3, 0xE9, 0xB9, 0xCE, 0x67,
797 | 0x61, 0xA7, 0xDC, 0xB4, 0x2E, 0x3A, 0xAC, 0xF5, 0x57, 0xD3, 0x5D, 0x17,
798 | 0xEA, 0x78, 0x70, 0xC6, 0x87, 0xB3, 0x43, 0x4C, 0x55, 0x76, 0x94, 0x6E,
799 | 0x94, 0x02, 0x3B, 0x3D, 0xEE, 0xCF, 0x5B, 0x08, 0xBB, 0x07, 0xD1, 0xBE,
800 | 0x46, 0xB8, 0x9F, 0xA2, 0xA0, 0x1E, 0x6C, 0x49, 0x9E, 0x92, 0x49, 0x98,
801 | 0xDF, 0x17, 0x74, 0x74, 0xAA, 0x24, 0x97, 0x8A, 0xAD, 0xD0, 0x59, 0x37,
802 | 0xBD, 0xC7, 0x8D, 0x66, 0xD8, 0x47, 0xC4, 0x04, 0xEF, 0x53, 0x49, 0x89,
803 | 0xA9, 0xEF, 0xAF, 0x17, 0xB2, 0x5B, 0x8C, 0x3D, 0x0D, 0x3F, 0xFE, 0x80,
804 | 0x28, 0x58, 0x06, 0x7C, 0xF9, 0x5C, 0x4B, 0x7C, 0x66, 0x7C, 0x7C, 0x0C,
805 | 0x85, 0xD1, 0x14, 0x2D, 0x2F, 0xB7, 0x11, 0x8F, 0xA2, 0x43, 0x02, 0xB2,
806 | 0xF5, 0x86, 0xBD, 0xCD, 0x34, 0x8E, 0xA5, 0xD4, 0x12, 0xE7, 0xCD, 0x28,
807 | 0xA2, 0x9E, 0x5C, 0xF1, 0x38, 0x70, 0x5E, 0x58, 0xEF, 0x53, 0x54, 0xDE,
808 | 0x11, 0x93, 0x1D, 0xD9, 0x2A, 0xBD, 0x30, 0x82, 0x05, 0xF5, 0x30, 0x82,
809 | 0x03, 0xDD, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x1D, 0xA2, 0x48,
810 | 0x30, 0x6F, 0x9B, 0x26, 0x18, 0xD0, 0x82, 0xE0, 0x96, 0x7D, 0x33, 0xD3,
811 | 0x6A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01,
812 | 0x01, 0x0C, 0x05, 0x00, 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 0x06,
813 | 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11,
814 | 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 0x4A,
815 | 0x65, 0x72, 0x73, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55,
816 | 0x04, 0x07, 0x13, 0x0B, 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43,
817 | 0x69, 0x74, 0x79, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A,
818 | 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52,
819 | 0x55, 0x53, 0x54, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31,
820 | 0x2E, 0x30, 0x2C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53,
821 | 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20,
822 | 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F,
823 | 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30,
824 | 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x31, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30,
825 | 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x33, 0x30, 0x31, 0x32, 0x33, 0x31,
826 | 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x7C, 0x31, 0x0B, 0x30,
827 | 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B,
828 | 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65,
829 | 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73,
830 | 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07,
831 | 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, 0x18, 0x30,
832 | 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0F, 0x53, 0x65, 0x63, 0x74,
833 | 0x69, 0x67, 0x6F, 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31,
834 | 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x53, 0x65,
835 | 0x63, 0x74, 0x69, 0x67, 0x6F, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x6F,
836 | 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43,
837 | 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48,
838 | 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F,
839 | 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0x86, 0x22,
840 | 0x8D, 0x32, 0x85, 0x7A, 0x18, 0x9F, 0x49, 0xF0, 0x96, 0x2F, 0x63, 0x08,
841 | 0x1E, 0x2D, 0xDC, 0x7C, 0x9F, 0x14, 0xCF, 0xE3, 0x26, 0xB6, 0x25, 0x66,
842 | 0x29, 0x40, 0x86, 0x54, 0x46, 0x74, 0x31, 0x62, 0xC5, 0x10, 0xED, 0xB2,
843 | 0x87, 0x27, 0xA6, 0x99, 0xCB, 0x95, 0x30, 0xC0, 0x56, 0xF5, 0xA4, 0x75,
844 | 0xC6, 0xA9, 0x0E, 0x50, 0x62, 0xA5, 0x51, 0x91, 0x10, 0x6A, 0xE0, 0x4B,
845 | 0x62, 0xAE, 0xFD, 0xF0, 0xF8, 0x18, 0xAC, 0xA7, 0xFF, 0xEE, 0x2E, 0x33,
846 | 0x20, 0xFA, 0x0C, 0x19, 0x89, 0xA8, 0x6C, 0x7B, 0xAD, 0x00, 0xC3, 0x61,
847 | 0xA1, 0xDC, 0x69, 0x65, 0x6D, 0x1F, 0x6E, 0x27, 0x96, 0xD7, 0x97, 0x51,
848 | 0x86, 0xA6, 0xF4, 0x27, 0xE5, 0x7C, 0x6A, 0x8B, 0x95, 0x1E, 0x5B, 0x60,
849 | 0xD5, 0x7E, 0xD7, 0x16, 0x92, 0x9C, 0x00, 0x2F, 0x68, 0xF7, 0x97, 0xED,
850 | 0x6A, 0x72, 0xBE, 0x38, 0x3B, 0x63, 0xDE, 0x8F, 0xBF, 0x6E, 0x4C, 0x41,
851 | 0x5D, 0x12, 0x20, 0x08, 0x59, 0xE8, 0x39, 0xCD, 0x8F, 0xD2, 0xD6, 0xCF,
852 | 0x06, 0xB4, 0x57, 0x05, 0xB6, 0x4E, 0xA1, 0x3E, 0x57, 0x6B, 0x1F, 0x98,
853 | 0xBC, 0xC4, 0x62, 0xD6, 0x1B, 0x0B, 0x8D, 0xC7, 0x66, 0x1B, 0x4A, 0x9F,
854 | 0x9D, 0x81, 0xC4, 0x72, 0x40, 0xB5, 0xE2, 0x5F, 0xEF, 0x0B, 0x45, 0xFF,
855 | 0xA3, 0xCE, 0x17, 0xA6, 0x2D, 0x55, 0xB0, 0xB7, 0xB0, 0xBC, 0x54, 0x6A,
856 | 0x9D, 0xBC, 0x8D, 0x56, 0x53, 0xC6, 0xF0, 0xBA, 0x79, 0x50, 0x49, 0x2C,
857 | 0xF7, 0x03, 0xB9, 0xFE, 0x2F, 0x65, 0x35, 0xF2, 0x22, 0xEA, 0x2C, 0x07,
858 | 0xAF, 0x46, 0xD9, 0xF9, 0x46, 0x1C, 0xDC, 0x8C, 0x7C, 0x71, 0x28, 0xF3,
859 | 0xFE, 0xA7, 0xC6, 0x14, 0xDD, 0x55, 0x91, 0x6E, 0x8A, 0x11, 0x0D, 0xDF,
860 | 0x06, 0x24, 0x95, 0x7D, 0x0F, 0xA7, 0xA1, 0x7C, 0x3A, 0xDA, 0x86, 0x35,
861 | 0x61, 0xD3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x64, 0x30,
862 | 0x82, 0x01, 0x60, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18,
863 | 0x30, 0x16, 0x80, 0x14, 0x53, 0x79, 0xBF, 0x5A, 0xAA, 0x2B, 0x4A, 0xCF,
864 | 0x54, 0x80, 0xE1, 0xD8, 0x9B, 0xC0, 0x9D, 0xF2, 0xB2, 0x03, 0x66, 0xCB,
865 | 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x0E,
866 | 0xE1, 0x3A, 0xA8, 0x53, 0x3A, 0x31, 0xD5, 0x8A, 0xBE, 0xC1, 0xBB, 0xAD,
867 | 0x67, 0x1A, 0x03, 0x85, 0xAD, 0x34, 0x0E, 0x30, 0x0E, 0x06, 0x03, 0x55,
868 | 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30,
869 | 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30,
870 | 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55,
871 | 0x1D, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05,
872 | 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07,
873 | 0x03, 0x08, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30,
874 | 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x50, 0x06,
875 | 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, 0xA0, 0x43,
876 | 0xA0, 0x41, 0x86, 0x3F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63,
877 | 0x72, 0x6C, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74,
878 | 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75,
879 | 0x73, 0x74, 0x52, 0x53, 0x41, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
880 | 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72,
881 | 0x69, 0x74, 0x79, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x76, 0x06, 0x08, 0x2B,
882 | 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6A, 0x30, 0x68, 0x30,
883 | 0x3F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86,
884 | 0x33, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x74, 0x2E,
885 | 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x63, 0x6F,
886 | 0x6D, 0x2F, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x52,
887 | 0x53, 0x41, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x41,
888 | 0x2E, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05,
889 | 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F,
890 | 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72,
891 | 0x75, 0x73, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A,
892 | 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, 0x03, 0x82,
893 | 0x02, 0x01, 0x00, 0x4D, 0x63, 0x50, 0xED, 0x47, 0x34, 0x4A, 0x61, 0xA4,
894 | 0xDB, 0xDE, 0x6A, 0x2A, 0x8C, 0x9B, 0xF1, 0x00, 0x00, 0x1E, 0x1D, 0x62,
895 | 0x7B, 0x3A, 0xD7, 0x32, 0xC2, 0xF6, 0xB3, 0xE0, 0x63, 0xB3, 0xFB, 0x61,
896 | 0x00, 0x88, 0x9A, 0x1B, 0x6D, 0x10, 0x07, 0x04, 0x4F, 0xBE, 0xB8, 0xEA,
897 | 0x89, 0x78, 0x22, 0xEB, 0x0F, 0x46, 0xEC, 0xF3, 0x46, 0x5E, 0x40, 0x46,
898 | 0x89, 0x12, 0xF4, 0x0B, 0x77, 0x5A, 0x9C, 0x2A, 0x41, 0x3A, 0xFC, 0xD6,
899 | 0xF4, 0xEB, 0xE7, 0xF7, 0x15, 0x95, 0x33, 0xC3, 0xA1, 0x83, 0x28, 0xB7,
900 | 0xDE, 0x2F, 0xE4, 0x94, 0xF7, 0x85, 0x33, 0x83, 0x2D, 0x4A, 0x40, 0x48,
901 | 0xBF, 0x9A, 0xC2, 0x4F, 0x4A, 0xB1, 0x8F, 0x24, 0xF4, 0xB3, 0x81, 0x37,
902 | 0xD3, 0xB7, 0x64, 0xB0, 0xA6, 0x23, 0x6A, 0x59, 0x68, 0x52, 0x42, 0x5F,
903 | 0xFF, 0x04, 0xEB, 0xE1, 0x74, 0x65, 0x79, 0x08, 0xF5, 0xA9, 0x93, 0xDE,
904 | 0x6B, 0x71, 0x40, 0x99, 0x96, 0xBA, 0x78, 0xF1, 0xB9, 0xC8, 0xE2, 0xC3,
905 | 0x08, 0x16, 0xB1, 0xAB, 0x63, 0x5A, 0xC8, 0x15, 0x80, 0x6D, 0x74, 0x5E,
906 | 0x4A, 0x75, 0x7E, 0xA5, 0xB8, 0xC3, 0x6C, 0xB5, 0xCF, 0xDF, 0x4A, 0x79,
907 | 0x87, 0x5C, 0xC7, 0x40, 0x4D, 0x63, 0x35, 0xF6, 0x30, 0xD3, 0xCF, 0xB5,
908 | 0x0A, 0x0E, 0x0B, 0x04, 0x7F, 0xA0, 0x4B, 0xAE, 0xBB, 0xA3, 0xA5, 0xD0,
909 | 0x84, 0x00, 0x93, 0x3E, 0x53, 0x5D, 0x34, 0xA5, 0x00, 0x35, 0x69, 0x6C,
910 | 0xBE, 0x9F, 0x20, 0x25, 0x10, 0x0D, 0x19, 0xFB, 0x50, 0x90, 0x61, 0xBE,
911 | 0x39, 0x8F, 0x7A, 0x8E, 0x4D, 0xF6, 0x9F, 0x0E, 0x1E, 0xFE, 0x07, 0x51,
912 | 0x12, 0x66, 0x83, 0x26, 0x19, 0x48, 0x95, 0xCE, 0x4A, 0xC9, 0xC1, 0x7F,
913 | 0xF3, 0x3A, 0x05, 0x9B, 0xF9, 0x6F, 0xDF, 0x88, 0x7F, 0xC0, 0x23, 0x9E,
914 | 0xD2, 0x1E, 0x43, 0x7A, 0x45, 0x31, 0xC1, 0x9C, 0x4D, 0xA9, 0xF0, 0x59,
915 | 0xB2, 0x59, 0x19, 0xE8, 0x6A, 0x8D, 0x29, 0x04, 0x02, 0x77, 0x7C, 0x4B,
916 | 0x4B, 0xCD, 0x70, 0xBE, 0x3A, 0xB2, 0x55, 0x5A, 0x78, 0x3E, 0xBC, 0xBB,
917 | 0x6F, 0x03, 0x10, 0x25, 0x77, 0x15, 0x34, 0x8A, 0xF9, 0x36, 0xCC, 0x43,
918 | 0x92, 0xE4, 0xBA, 0x4F, 0xF1, 0x62, 0x93, 0x28, 0x25, 0x57, 0x29, 0xFB,
919 | 0x51, 0x19, 0xC7, 0xA1, 0x25, 0x40, 0x6A, 0x84, 0x57, 0xC6, 0xB2, 0x9D,
920 | 0xB1, 0xBC, 0x1C, 0x0A, 0xDA, 0x7C, 0x67, 0x7E, 0x7D, 0x2E, 0xE9, 0x28,
921 | 0x4C, 0x18, 0x7E, 0xC4, 0x7B, 0x31, 0x41, 0x71, 0x9A, 0x4B, 0x29, 0xEC,
922 | 0x0B, 0x3D, 0x57, 0x50, 0xD2, 0xCA, 0xDD, 0xFD, 0x9E, 0x05, 0x51, 0xE5,
923 | 0x44, 0x78, 0xDD, 0x01, 0xDE, 0xB1, 0x75, 0x98, 0x0D, 0x54, 0x24, 0xFD,
924 | 0xF0, 0x4E, 0xE3, 0xE2, 0xF8, 0x83, 0xBD, 0x72, 0xBA, 0xCB, 0x3D, 0x3A,
925 | 0xEE, 0xF0, 0x5E, 0x17, 0x92, 0x68, 0x6D, 0xC8, 0x61, 0xF9, 0xA6, 0xF1,
926 | 0x2A, 0x0A, 0x0B, 0xA5, 0xB9, 0xF4, 0x9E, 0xEE, 0x98, 0x32, 0x05, 0x85,
927 | 0x9E, 0xEB, 0xF9, 0x83, 0x29, 0xD3, 0xC6, 0x2C, 0x7D, 0xBD, 0x3A, 0x77,
928 | 0x2E, 0x8B, 0x37, 0x42, 0xA0, 0x6A, 0x82, 0xED, 0x3B, 0x4A, 0xAA, 0x94,
929 | 0x10, 0xA4, 0xE1, 0x0D, 0xF8, 0x17, 0xC5, 0xB6, 0x5A, 0x79, 0x33, 0x18,
930 | 0x92, 0xE3, 0xB5, 0x75, 0xF8, 0xA1, 0xE9, 0x8E, 0x0A, 0x25, 0x1E, 0xE4,
931 | 0x1E, 0xF1, 0x9F, 0x5A, 0x87, 0x23, 0xFF, 0x9F, 0xA4, 0x51, 0x9E, 0xFB,
932 | 0x39, 0x80, 0x11, 0xCD, 0xDB, 0xB5, 0xC4, 0xA7, 0xA8, 0x80, 0x6F, 0xE5,
933 | 0x53, 0xD4, 0xE0, 0xE3, 0xA2, 0xC2, 0xD2, 0x5B, 0x1A, 0xFA, 0x32, 0x26,
934 | 0x2D, 0x6A, 0x57, 0x70, 0x1C, 0x3C, 0xA4, 0x58, 0x2E, 0xA3, 0xF3, 0x5B,
935 | 0x4B, 0x07, 0xDC, 0x32, 0x59, 0xF3, 0x87, 0xA7, 0x1A, 0x6D, 0x58, 0x30,
936 | 0x82, 0x06, 0x66, 0x30, 0x82, 0x04, 0x4E, 0xA0, 0x03, 0x02, 0x01, 0x02,
937 | 0x02, 0x13, 0x33, 0x00, 0x00, 0x00, 0x44, 0xB7, 0x3F, 0xFC, 0xEF, 0x5A,
938 | 0xCF, 0xA2, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x30, 0x0D, 0x06,
939 | 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00,
940 | 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
941 | 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
942 | 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E,
943 | 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52,
944 | 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03,
945 | 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F,
946 | 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69,
947 | 0x6F, 0x6E, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
948 | 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43,
949 | 0x6F, 0x64, 0x65, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
950 | 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17,
951 | 0x0D, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x32, 0x31, 0x30, 0x33, 0x34,
952 | 0x39, 0x5A, 0x17, 0x0D, 0x32, 0x35, 0x30, 0x37, 0x32, 0x32, 0x32, 0x31,
953 | 0x30, 0x33, 0x34, 0x39, 0x5A, 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09,
954 | 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30,
955 | 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20,
956 | 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03,
957 | 0x55, 0x04, 0x07, 0x13, 0x0B, 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20,
958 | 0x43, 0x69, 0x74, 0x79, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04,
959 | 0x0A, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54,
960 | 0x52, 0x55, 0x53, 0x54, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B,
961 | 0x31, 0x2E, 0x30, 0x2C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55,
962 | 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41,
963 | 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
964 | 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79,
965 | 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
966 | 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00,
967 | 0x30, 0x82, 0x02, 0x0A, 0x02, 0x82, 0x02, 0x01, 0x00, 0x80, 0x12, 0x65,
968 | 0x17, 0x36, 0x0E, 0xC3, 0xDB, 0x08, 0xB3, 0xD0, 0xAC, 0x57, 0x0D, 0x76,
969 | 0xED, 0xCD, 0x27, 0xD3, 0x4C, 0xAD, 0x50, 0x83, 0x61, 0xE2, 0xAA, 0x20,
970 | 0x4D, 0x09, 0x2D, 0x64, 0x09, 0xDC, 0xCE, 0x89, 0x9F, 0xCC, 0x3D, 0xA9,
971 | 0xEC, 0xF6, 0xCF, 0xC1, 0xDC, 0xF1, 0xD3, 0xB1, 0xD6, 0x7B, 0x37, 0x28,
972 | 0x11, 0x2B, 0x47, 0xDA, 0x39, 0xC6, 0xBC, 0x3A, 0x19, 0xB4, 0x5F, 0xA6,
973 | 0xBD, 0x7D, 0x9D, 0xA3, 0x63, 0x42, 0xB6, 0x76, 0xF2, 0xA9, 0x3B, 0x2B,
974 | 0x91, 0xF8, 0xE2, 0x6F, 0xD0, 0xEC, 0x16, 0x20, 0x90, 0x09, 0x3E, 0xE2,
975 | 0xE8, 0x74, 0xC9, 0x18, 0xB4, 0x91, 0xD4, 0x62, 0x64, 0xDB, 0x7F, 0xA3,
976 | 0x06, 0xF1, 0x88, 0x18, 0x6A, 0x90, 0x22, 0x3C, 0xBC, 0xFE, 0x13, 0xF0,
977 | 0x87, 0x14, 0x7B, 0xF6, 0xE4, 0x1F, 0x8E, 0xD4, 0xE4, 0x51, 0xC6, 0x11,
978 | 0x67, 0x46, 0x08, 0x51, 0xCB, 0x86, 0x14, 0x54, 0x3F, 0xBC, 0x33, 0xFE,
979 | 0x7E, 0x6C, 0x9C, 0xFF, 0x16, 0x9D, 0x18, 0xBD, 0x51, 0x8E, 0x35, 0xA6,
980 | 0xA7, 0x66, 0xC8, 0x72, 0x67, 0xDB, 0x21, 0x66, 0xB1, 0xD4, 0x9B, 0x78,
981 | 0x03, 0xC0, 0x50, 0x3A, 0xE8, 0xCC, 0xF0, 0xDC, 0xBC, 0x9E, 0x4C, 0xFE,
982 | 0xAF, 0x05, 0x96, 0x35, 0x1F, 0x57, 0x5A, 0xB7, 0xFF, 0xCE, 0xF9, 0x3D,
983 | 0xB7, 0x2C, 0xB6, 0xF6, 0x54, 0xDD, 0xC8, 0xE7, 0x12, 0x3A, 0x4D, 0xAE,
984 | 0x4C, 0x8A, 0xB7, 0x5C, 0x9A, 0xB4, 0xB7, 0x20, 0x3D, 0xCA, 0x7F, 0x22,
985 | 0x34, 0xAE, 0x7E, 0x3B, 0x68, 0x66, 0x01, 0x44, 0xE7, 0x01, 0x4E, 0x46,
986 | 0x53, 0x9B, 0x33, 0x60, 0xF7, 0x94, 0xBE, 0x53, 0x37, 0x90, 0x73, 0x43,
987 | 0xF3, 0x32, 0xC3, 0x53, 0xEF, 0xDB, 0xAA, 0xFE, 0x74, 0x4E, 0x69, 0xC7,
988 | 0x6B, 0x8C, 0x60, 0x93, 0xDE, 0xC4, 0xC7, 0x0C, 0xDF, 0xE1, 0x32, 0xAE,
989 | 0xCC, 0x93, 0x3B, 0x51, 0x78, 0x95, 0x67, 0x8B, 0xEE, 0x3D, 0x56, 0xFE,
990 | 0x0C, 0xD0, 0x69, 0x0F, 0x1B, 0x0F, 0xF3, 0x25, 0x26, 0x6B, 0x33, 0x6D,
991 | 0xF7, 0x6E, 0x47, 0xFA, 0x73, 0x43, 0xE5, 0x7E, 0x0E, 0xA5, 0x66, 0xB1,
992 | 0x29, 0x7C, 0x32, 0x84, 0x63, 0x55, 0x89, 0xC4, 0x0D, 0xC1, 0x93, 0x54,
993 | 0x30, 0x19, 0x13, 0xAC, 0xD3, 0x7D, 0x37, 0xA7, 0xEB, 0x5D, 0x3A, 0x6C,
994 | 0x35, 0x5C, 0xDB, 0x41, 0xD7, 0x12, 0xDA, 0xA9, 0x49, 0x0B, 0xDF, 0xD8,
995 | 0x80, 0x8A, 0x09, 0x93, 0x62, 0x8E, 0xB5, 0x66, 0xCF, 0x25, 0x88, 0xCD,
996 | 0x84, 0xB8, 0xB1, 0x3F, 0xA4, 0x39, 0x0F, 0xD9, 0x02, 0x9E, 0xEB, 0x12,
997 | 0x4C, 0x95, 0x7C, 0xF3, 0x6B, 0x05, 0xA9, 0x5E, 0x16, 0x83, 0xCC, 0xB8,
998 | 0x67, 0xE2, 0xE8, 0x13, 0x9D, 0xCC, 0x5B, 0x82, 0xD3, 0x4C, 0xB3, 0xED,
999 | 0x5B, 0xFF, 0xDE, 0xE5, 0x73, 0xAC, 0x23, 0x3B, 0x2D, 0x00, 0xBF, 0x35,
1000 | 0x55, 0x74, 0x09, 0x49, 0xD8, 0x49, 0x58, 0x1A, 0x7F, 0x92, 0x36, 0xE6,
1001 | 0x51, 0x92, 0x0E, 0xF3, 0x26, 0x7D, 0x1C, 0x4D, 0x17, 0xBC, 0xC9, 0xEC,
1002 | 0x43, 0x26, 0xD0, 0xBF, 0x41, 0x5F, 0x40, 0xA9, 0x44, 0x44, 0xF4, 0x99,
1003 | 0xE7, 0x57, 0x87, 0x9E, 0x50, 0x1F, 0x57, 0x54, 0xA8, 0x3E, 0xFD, 0x74,
1004 | 0x63, 0x2F, 0xB1, 0x50, 0x65, 0x09, 0xE6, 0x58, 0x42, 0x2E, 0x43, 0x1A,
1005 | 0x4C, 0xB4, 0xF0, 0x25, 0x47, 0x59, 0xFA, 0x04, 0x1E, 0x93, 0xD4, 0x26,
1006 | 0x46, 0x4A, 0x50, 0x81, 0xB2, 0xDE, 0xBE, 0x78, 0xB7, 0xFC, 0x67, 0x15,
1007 | 0xE1, 0xC9, 0x57, 0x84, 0x1E, 0x0F, 0x63, 0xD6, 0xE9, 0x62, 0xBA, 0xD6,
1008 | 0x5F, 0x55, 0x2E, 0xEA, 0x5C, 0xC6, 0x28, 0x08, 0x04, 0x25, 0x39, 0xB8,
1009 | 0x0E, 0x2B, 0xA9, 0xF2, 0x4C, 0x97, 0x1C, 0x07, 0x3F, 0x0D, 0x52, 0xF5,
1010 | 0xED, 0xEF, 0x2F, 0x82, 0x0F, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81,
1011 | 0xD0, 0x30, 0x81, 0xCD, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04,
1012 | 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
1013 | 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04,
1014 | 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x02, 0x30, 0x1D, 0x06,
1015 | 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x53, 0x79, 0xBF, 0x5A,
1016 | 0xAA, 0x2B, 0x4A, 0xCF, 0x54, 0x80, 0xE1, 0xD8, 0x9B, 0xC0, 0x9D, 0xF2,
1017 | 0xB2, 0x03, 0x66, 0xCB, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04,
1018 | 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23,
1019 | 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x62, 0xFB, 0x0A, 0x21, 0x5B, 0x7F,
1020 | 0x43, 0x6E, 0x11, 0xDA, 0x09, 0x54, 0x50, 0x6B, 0xF5, 0xD2, 0x96, 0x71,
1021 | 0xF1, 0x9E, 0x30, 0x55, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x4E, 0x30,
1022 | 0x4C, 0x30, 0x4A, 0xA0, 0x48, 0xA0, 0x46, 0x86, 0x44, 0x68, 0x74, 0x74,
1023 | 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72,
1024 | 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B,
1025 | 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63,
1026 | 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74,
1027 | 0x43, 0x6F, 0x64, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x52, 0x6F, 0x6F,
1028 | 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48,
1029 | 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01,
1030 | 0x00, 0x6B, 0x22, 0x93, 0x3C, 0x3D, 0x39, 0x54, 0x71, 0x64, 0x6B, 0x0E,
1031 | 0xF2, 0xE4, 0x3C, 0x30, 0x11, 0xC5, 0x20, 0x4A, 0x4B, 0x86, 0x0F, 0x92,
1032 | 0xF1, 0xFF, 0x33, 0x79, 0x3A, 0xD9, 0xE4, 0x98, 0xA7, 0x0E, 0x40, 0xA0,
1033 | 0x22, 0x80, 0x7E, 0x61, 0xB2, 0xE0, 0xA7, 0x19, 0xCF, 0x26, 0x95, 0x31,
1034 | 0x2A, 0x65, 0xD4, 0x6A, 0x4F, 0x31, 0x86, 0xEA, 0xC0, 0xC6, 0x2E, 0xC5,
1035 | 0x64, 0x8C, 0x3D, 0x48, 0x59, 0xCD, 0x0B, 0x2F, 0x74, 0x3D, 0x94, 0x26,
1036 | 0x13, 0x10, 0x42, 0xD4, 0x97, 0x98, 0x27, 0x5E, 0x3C, 0x76, 0xD2, 0x78,
1037 | 0x69, 0x1D, 0x1A, 0x64, 0xE7, 0x05, 0x72, 0x75, 0xE0, 0xEB, 0x66, 0x40,
1038 | 0x43, 0x9F, 0x8F, 0x0C, 0x46, 0xFF, 0x97, 0x60, 0xA6, 0xC8, 0x67, 0xAD,
1039 | 0x10, 0x08, 0x9B, 0x62, 0xA6, 0xE9, 0xBE, 0x3A, 0x8A, 0xD3, 0x07, 0x4D,
1040 | 0x9F, 0x72, 0x93, 0x25, 0xBC, 0x06, 0x11, 0xE0, 0x2C, 0x90, 0x38, 0x3E,
1041 | 0x67, 0x1C, 0xFD, 0x19, 0xD7, 0x9E, 0x90, 0xCE, 0x3D, 0xC2, 0xE0, 0xE7,
1042 | 0x61, 0xAC, 0xC0, 0xE5, 0x04, 0xF5, 0x1E, 0x99, 0x54, 0x0C, 0x91, 0x0D,
1043 | 0x01, 0x56, 0x71, 0x37, 0xAE, 0x27, 0xD4, 0x9E, 0x43, 0x22, 0xA5, 0xC9,
1044 | 0x27, 0xCD, 0x4D, 0xE5, 0x71, 0x12, 0x39, 0x24, 0xA5, 0x41, 0x56, 0x87,
1045 | 0xFF, 0xBC, 0x55, 0x14, 0x0F, 0x25, 0xCA, 0x89, 0xEE, 0xC7, 0x97, 0xE5,
1046 | 0xD2, 0x13, 0xFF, 0x3D, 0x7E, 0x1A, 0xA0, 0x8F, 0x3F, 0xC8, 0x2C, 0xD7,
1047 | 0xA3, 0x70, 0xD0, 0xC7, 0x60, 0xC0, 0xFC, 0xD8, 0x3E, 0x51, 0xE7, 0x97,
1048 | 0xC6, 0x3E, 0x3B, 0xED, 0xCF, 0x78, 0xBE, 0x8A, 0xCA, 0xE3, 0xC4, 0xF2,
1049 | 0xA7, 0xA7, 0xED, 0x9E, 0xAE, 0x08, 0x02, 0x8F, 0xA0, 0x52, 0xDB, 0x72,
1050 | 0x1E, 0xD5, 0x3B, 0xC3, 0x4D, 0x9F, 0x8E, 0xFA, 0x9B, 0x70, 0xC7, 0xF8,
1051 | 0xE3, 0xBF, 0x6C, 0x3F, 0x92, 0x9B, 0xE4, 0x37, 0x3E, 0xEC, 0x6A, 0x8C,
1052 | 0x29, 0xF9, 0xC1, 0xA2, 0xBF, 0x8B, 0x3E, 0x1A, 0x69, 0x66, 0xFB, 0x1C,
1053 | 0x63, 0x4F, 0x26, 0x01, 0xC9, 0x02, 0xC4, 0x3E, 0xD2, 0xFF, 0xC3, 0x43,
1054 | 0xA8, 0x1B, 0xFD, 0x99, 0xFA, 0xD4, 0xBC, 0xA5, 0xB9, 0xE2, 0x93, 0x2F,
1055 | 0x3B, 0x01, 0xC5, 0xD1, 0xF4, 0x3A, 0x2F, 0x68, 0xC3, 0xE0, 0x64, 0xB7,
1056 | 0x5A, 0x95, 0x5E, 0x46, 0xCC, 0x07, 0x83, 0x69, 0xBB, 0x3C, 0x05, 0x92,
1057 | 0x56, 0x73, 0x35, 0x73, 0x45, 0x98, 0x4E, 0x7C, 0xD8, 0x12, 0xA5, 0xB7,
1058 | 0x42, 0xE9, 0xA2, 0x63, 0xF6, 0x42, 0x60, 0x18, 0x70, 0xD1, 0x3B, 0x6F,
1059 | 0x31, 0xC0, 0x87, 0xC7, 0xE6, 0x71, 0xE1, 0xF3, 0x46, 0x16, 0xE9, 0xF5,
1060 | 0xB8, 0x72, 0xB3, 0xE9, 0x6D, 0x1F, 0x62, 0x26, 0x49, 0xA3, 0x49, 0x8B,
1061 | 0xDD, 0x68, 0xC7, 0x8B, 0x68, 0x56, 0xF7, 0xDE, 0xFC, 0xFA, 0x87, 0x24,
1062 | 0xB8, 0x03, 0x81, 0x17, 0x8F, 0xE5, 0xF1, 0x67, 0x6A, 0x1D, 0xAE, 0xD3,
1063 | 0x74, 0xF7, 0x8C, 0xA5, 0x5D, 0xB3, 0x0B, 0x8E, 0x42, 0x29, 0x96, 0xCE,
1064 | 0x49, 0xC4, 0x77, 0x7E, 0x66, 0x7C, 0x01, 0x17, 0x1A, 0x6C, 0x14, 0x24,
1065 | 0xC3, 0xB0, 0x17, 0x77, 0x05, 0xD8, 0x1A, 0x40, 0xB7, 0x86, 0x6B, 0xD8,
1066 | 0xE4, 0x7B, 0x40, 0xAC, 0x7E, 0xDF, 0x4E, 0x6F, 0x24, 0xF9, 0x20, 0x80,
1067 | 0x82, 0x8C, 0x33, 0xE7, 0xE5, 0xFA, 0x29, 0xD8, 0x9D, 0xDA, 0x8B, 0x70,
1068 | 0x5D, 0x2B, 0xC9, 0x1D, 0x82, 0x4C, 0x0B, 0x67, 0xCB, 0x84, 0x41, 0x9E,
1069 | 0xE7, 0x06, 0x7E, 0x11, 0x83, 0x44, 0x2D, 0x8A, 0x19, 0xEE, 0xF4, 0x7F,
1070 | 0x9A, 0xDD, 0x79, 0x1C, 0x37, 0x19, 0x1E, 0x9F, 0x3F, 0x8C, 0x29, 0xBA,
1071 | 0x0D, 0x5C, 0x10, 0x86, 0x37, 0x6C, 0x48, 0xCD, 0x45, 0x5D, 0xCD, 0x70,
1072 | 0xBC, 0xBC, 0xD1, 0x4D, 0x5D, 0xD8, 0xC5, 0xB8, 0x76, 0x31, 0x82, 0x02,
1073 | 0x2B, 0x30, 0x82, 0x02, 0x27, 0x02, 0x01, 0x01, 0x30, 0x81, 0x91, 0x30,
1074 | 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
1075 | 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
1076 | 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E,
1077 | 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06,
1078 | 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72,
1079 | 0x64, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0F,
1080 | 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x20, 0x4C, 0x69, 0x6D, 0x69,
1081 | 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,
1082 | 0x13, 0x1B, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x20, 0x52, 0x53,
1083 | 0x41, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69,
1084 | 0x6E, 0x67, 0x20, 0x43, 0x41, 0x02, 0x11, 0x00, 0xA7, 0x5A, 0xF1, 0x6C,
1085 | 0xB1, 0x56, 0x98, 0x23, 0x09, 0x5A, 0x4C, 0x76, 0xE1, 0x67, 0x82, 0x84,
1086 | 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0,
1087 | 0x70, 0x30, 0x10, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
1088 | 0x02, 0x01, 0x0C, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, 0x2A,
1089 | 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0C, 0x06, 0x0A,
1090 | 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C,
1091 | 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0B,
1092 | 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82,
1093 | 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
1094 | 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0x7A, 0x88, 0xAC,
1095 | 0xCD, 0x68, 0x3C, 0xB2, 0x21, 0xF6, 0x53, 0x4A, 0xF1, 0x8C, 0xDF, 0x1B,
1096 | 0x46, 0x43, 0x4D, 0x09, 0xAA, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48,
1097 | 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00,
1098 | 0xCB, 0xF6, 0x6B, 0x66, 0xA9, 0xB4, 0xC4, 0x5A, 0x3B, 0x61, 0x7D, 0xA4,
1099 | 0x8F, 0x9D, 0x55, 0xC9, 0xEE, 0x97, 0x2B, 0x3A, 0xCC, 0xEE, 0xA4, 0x61,
1100 | 0x10, 0x94, 0x1E, 0x45, 0x71, 0xF8, 0x08, 0xDD, 0x3A, 0x37, 0x43, 0xF9,
1101 | 0x5D, 0x94, 0x55, 0x7B, 0xE3, 0x59, 0x70, 0x6D, 0x3D, 0xB9, 0xBB, 0x88,
1102 | 0xAF, 0xFD, 0x44, 0xF9, 0x0B, 0xD2, 0x00, 0x59, 0x37, 0xC4, 0xE3, 0xBD,
1103 | 0x75, 0xD3, 0x80, 0xDC, 0x09, 0xE6, 0x48, 0x82, 0x69, 0xFD, 0x6C, 0x30,
1104 | 0x28, 0xFD, 0x98, 0xC9, 0xB5, 0xBD, 0x3F, 0xD9, 0x62, 0xEE, 0xBB, 0xA9,
1105 | 0xD4, 0xF3, 0x5F, 0x5F, 0x20, 0x45, 0xA4, 0x8C, 0x9A, 0x01, 0x85, 0x3C,
1106 | 0x6B, 0xD1, 0xC2, 0xFE, 0x79, 0xAC, 0x9D, 0x97, 0xDB, 0xD3, 0xCF, 0xF9,
1107 | 0xD7, 0xB1, 0x32, 0x45, 0x01, 0x6A, 0xAC, 0x19, 0xB8, 0xBD, 0x4D, 0xCC,
1108 | 0x31, 0x86, 0xB9, 0x31, 0x61, 0xE8, 0x12, 0x34, 0xFD, 0x73, 0x2B, 0xA2,
1109 | 0x59, 0xFD, 0x2E, 0xEC, 0x80, 0x39, 0x34, 0x5C, 0x03, 0x5A, 0x61, 0x4E,
1110 | 0x06, 0xCE, 0x68, 0x94, 0xBA, 0x4B, 0x4D, 0x3E, 0xC4, 0x5D, 0x54, 0xC4,
1111 | 0x78, 0x43, 0x78, 0x9B, 0x39, 0xC3, 0xCF, 0xC1, 0xD8, 0xFB, 0xDF, 0x03,
1112 | 0xF1, 0x9A, 0x13, 0xEA, 0xE0, 0x91, 0xB8, 0xE5, 0xC2, 0x23, 0xA9, 0x95,
1113 | 0x7A, 0x0F, 0xDB, 0x41, 0xF1, 0x67, 0x1D, 0xB4, 0x7E, 0xAB, 0xD8, 0x72,
1114 | 0xDF, 0x32, 0xF0, 0x6F, 0x3B, 0x51, 0xA4, 0x8D, 0xC7, 0xAD, 0xF8, 0xB9,
1115 | 0xAD, 0x01, 0x62, 0xB2, 0xFE, 0x07, 0xAB, 0x48, 0xDE, 0xB7, 0x76, 0x7B,
1116 | 0x1A, 0x4F, 0x3F, 0x96, 0xD8, 0x15, 0x1B, 0xC7, 0x0B, 0xA2, 0xDC, 0xC7,
1117 | 0xD2, 0x87, 0xC2, 0xC0, 0xB3, 0x67, 0x94, 0x17, 0xAD, 0x12, 0x09, 0xBB,
1118 | 0x27, 0xFC, 0x1F, 0x6C, 0x1E, 0xF2, 0xEB, 0x4C, 0x27, 0xE6, 0xAE, 0x62,
1119 | 0xDD, 0xBA, 0xCC, 0xDE
1120 | };
1121 |
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/stdafx.hpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 |
8 | #include "util.hpp"
9 | #include "loadup.hpp"
10 | #include "mapper_resource.hpp"
11 |
12 | struct HookStruct
13 | {
14 | std::size_t rawDataSize{};
15 | std::uintptr_t rawDataAddress{};
16 | };
--------------------------------------------------------------------------------
/CosUsermode/CosUsermode/util.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | inline PVOID(NTAPI* NtConvert)(PVOID, PVOID, PVOID, PVOID);
4 |
5 | namespace Util
6 | {
7 | inline bool readFileToMemory(const std::string& file_path, std::vector* out_buffer)
8 | {
9 | std::ifstream file_ifstream(file_path, std::ios::binary);
10 |
11 | if (!file_ifstream)
12 | return false;
13 |
14 | out_buffer->assign((std::istreambuf_iterator(file_ifstream)), std::istreambuf_iterator());
15 | file_ifstream.close();
16 |
17 | return true;
18 | }
19 |
20 | inline bool initializeDriverComm()
21 | {
22 | *reinterpret_cast(&NtConvert) = GetProcAddress(LoadLibrary(L"ntdll.dll"), "NtConvertBetweenAuxiliaryCounterAndPerformanceCounter");
23 | if (!NtConvert)
24 | {
25 | return false;
26 | }
27 |
28 | return true;
29 | }
30 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CosMapper
2 | Loads a signed kernel driver (signed with leaked cert) which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.
3 |
4 | ## Procedure
5 | 1. The usermode program loads the signed driver (signed with leaked cert)
6 | 2. The signed driver then does a [.data] hook on a ntoskrnl function to transfer the mapped driver buffer to kernel
7 | 3. Usermode process sends mapped driver bytes to driver to map and returns status to usermode.
8 | 4. MmUnloadedList PiddbCache and BigPoolAllocation are cleaned and the driver header is not mapped and no empty bytes for the header allocated.
9 | 5. The usermode program unloads the signed driver (signed with leaked cert) and deletes the service to remove final traces.
10 |
11 | ## Requirements
12 | Your driver needs an entry like the example driver:
13 |
14 | ```
15 | struct EntryInitialize
16 | {
17 | std::uintptr_t mappedImageBase{};
18 | std::size_t mappedImageSize{};
19 | };
20 |
21 | NTSTATUS DriverEntry(EntryInitialize* entryParam)
22 | {
23 | DebugPrint("Example Driver Mapped [%p] w/ Size [0x%x]", entryParam->mappedImageBase, entryParam->mappedImageSize);
24 |
25 | ExFreePool(reinterpret_cast(entryParam));
26 |
27 | return STATUS_SUCCESS;
28 | }
29 | ```
30 | The current example passes a structure with the image base and size of the mapped driver but it can be modified to your own liking.
31 |
32 | 
33 |
34 | Note: this project was coded in 2 days so it might have some bugs (open ticket)
35 | The project has been tested on ``Windows 10 20H2``
36 |
37 | ## Usage
38 |
39 | ```cosusermode.exe driver.sys```
40 |
--------------------------------------------------------------------------------
/example.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/armvirus/CosMapper/06bd9b806dc92cc2ac94eb3d9efd51b5d32bd46a/example.PNG
--------------------------------------------------------------------------------