From 11d75205398de7e6169f5b16005b6e650ac70101 Mon Sep 17 00:00:00 2001 From: BlueHeisenberg <2033896+BlueHeisenberg@users.noreply.github.com> Date: Sun, 8 Nov 2026 23:56:33 +0100 Subject: [PATCH 01/13] NVIDIA DLSS in place of the game's upscale (optional, RTX GPUs; NVIDIA's DLLs not included) - gpu/vk/vk_dlss.cpp, the DLSS part of vk_draw.cpp, vk/shaders/dlss_*.comp: the gameplay upscale network's place in the frame taken by DLSS, which draws the 3D at the DLSS mode's size and scales it to the output with the game's depth and its camera's motion. Ported from zortos293/Lichii (its Streamline loader, camera motion and their shaders; Lichii credits Duck912's Eglantine work). - NVIDIA Streamline v2.14.16's headers in third_party/streamline (MIT, gpu/PROVENANCE.md). sl.interposer.dll, sl.common.dll, sl.dlss.dll and nvngx_dlss.dll are loaded from a streamline folder beside the game exe, or the NVIDIA app's DLSS; the interposer and the model must carry a valid NVIDIA Corporation signature (WinVerifyTrust). Windows only: elsewhere DLSS is unavailable. - Menu rows DLSS (after a restart), DLSS mode (Ultra Performance .. DLAA, each with its size for the chosen output; it sets the 3D's scale in place of Resolution) and DLSS preset (J..M, at once); RX_DLSS, RX_DLSS_PRESET, RX_DLSS_DIR over them, RX_DLSS_DEBUG for its inputs. The scale sent to the game is for the output it runs at (the window crop). - readme: the rows, where NVIDIA's files come from; the Lichii credit. --- gpu/PROVENANCE.md | 6 + gpu/vk/shaders/dlss_color.comp | 19 + gpu/vk/shaders/dlss_color_comp_spv.h | 60 ++ gpu/vk/shaders/dlss_debug.comp | 33 + gpu/vk/shaders/dlss_debug_comp_spv.h | 119 +++ gpu/vk/shaders/dlss_motion.comp | 33 + gpu/vk/shaders/dlss_motion_comp_spv.h | 106 +++ gpu/vk/shaders/dlss_output.comp | 20 + gpu/vk/shaders/dlss_output_comp_spv.h | 69 ++ gpu/vk/vk_dlss.cpp | 589 +++++++++++++ gpu/vk/vk_dlss.h | 42 + gpu/vk/vk_draw.cpp | 383 ++++++++- gpu/vk/vk_main.cpp | 21 +- gpu/vk/vk_menu.cpp | 68 +- gpu/vk/vk_menu.h | 8 +- gpu/vk/vk_replay.cpp | 1 + host/nn_vi.c | 2 +- nx2/build.py | 7 +- nx2/oot_patches.py | 2 +- readme.md | 21 +- third_party/streamline/include/sl.h | 46 ++ .../streamline/include/sl_appidentity.h | 20 + third_party/streamline/include/sl_consts.h | 260 ++++++ third_party/streamline/include/sl_core_api.h | 328 ++++++++ .../streamline/include/sl_core_types.h | 781 ++++++++++++++++++ third_party/streamline/include/sl_deepdvc.h | 103 +++ .../streamline/include/sl_device_wrappers.h | 20 + third_party/streamline/include/sl_directsr.h | 173 ++++ third_party/streamline/include/sl_dlss.h | 193 +++++ third_party/streamline/include/sl_dlss_d.h | 188 +++++ third_party/streamline/include/sl_dlss_g.h | 222 +++++ third_party/streamline/include/sl_helpers.h | 485 +++++++++++ .../streamline/include/sl_helpers_vk.h | 256 ++++++ third_party/streamline/include/sl_hooks.h | 115 +++ .../streamline/include/sl_matrix_helpers.h | 221 +++++ third_party/streamline/include/sl_nis.h | 102 +++ third_party/streamline/include/sl_nvperf.h | 70 ++ third_party/streamline/include/sl_pcl.h | 163 ++++ third_party/streamline/include/sl_reflex.h | 233 ++++++ third_party/streamline/include/sl_result.h | 77 ++ third_party/streamline/include/sl_security.h | 463 +++++++++++ third_party/streamline/include/sl_struct.h | 142 ++++ third_party/streamline/include/sl_template.h | 57 ++ third_party/streamline/include/sl_version.h | 99 +++ third_party/streamline/license.txt | 33 + 45 files changed, 6435 insertions(+), 24 deletions(-) create mode 100644 gpu/vk/shaders/dlss_color.comp create mode 100644 gpu/vk/shaders/dlss_color_comp_spv.h create mode 100644 gpu/vk/shaders/dlss_debug.comp create mode 100644 gpu/vk/shaders/dlss_debug_comp_spv.h create mode 100644 gpu/vk/shaders/dlss_motion.comp create mode 100644 gpu/vk/shaders/dlss_motion_comp_spv.h create mode 100644 gpu/vk/shaders/dlss_output.comp create mode 100644 gpu/vk/shaders/dlss_output_comp_spv.h create mode 100644 gpu/vk/vk_dlss.cpp create mode 100644 gpu/vk/vk_dlss.h create mode 100644 third_party/streamline/include/sl.h create mode 100644 third_party/streamline/include/sl_appidentity.h create mode 100644 third_party/streamline/include/sl_consts.h create mode 100644 third_party/streamline/include/sl_core_api.h create mode 100644 third_party/streamline/include/sl_core_types.h create mode 100644 third_party/streamline/include/sl_deepdvc.h create mode 100644 third_party/streamline/include/sl_device_wrappers.h create mode 100644 third_party/streamline/include/sl_directsr.h create mode 100644 third_party/streamline/include/sl_dlss.h create mode 100644 third_party/streamline/include/sl_dlss_d.h create mode 100644 third_party/streamline/include/sl_dlss_g.h create mode 100644 third_party/streamline/include/sl_helpers.h create mode 100644 third_party/streamline/include/sl_helpers_vk.h create mode 100644 third_party/streamline/include/sl_hooks.h create mode 100644 third_party/streamline/include/sl_matrix_helpers.h create mode 100644 third_party/streamline/include/sl_nis.h create mode 100644 third_party/streamline/include/sl_nvperf.h create mode 100644 third_party/streamline/include/sl_pcl.h create mode 100644 third_party/streamline/include/sl_reflex.h create mode 100644 third_party/streamline/include/sl_result.h create mode 100644 third_party/streamline/include/sl_security.h create mode 100644 third_party/streamline/include/sl_struct.h create mode 100644 third_party/streamline/include/sl_template.h create mode 100644 third_party/streamline/include/sl_version.h create mode 100644 third_party/streamline/license.txt diff --git a/gpu/PROVENANCE.md b/gpu/PROVENANCE.md index 3d90532e5..412ceebba 100644 --- a/gpu/PROVENANCE.md +++ b/gpu/PROVENANCE.md @@ -28,3 +28,9 @@ mkw-recomp's changes, for the Switch 2: `mkw_gpu.cpp` / `mkw_gpu.h` / `build-gpu.bat` are the earlier Vulkan stand-in (a window and a swapchain; no longer loaded). `shadertool.cpp` runs dumped NVN2 programs through Eglantine's recompiler offline (SPIR-V; it prints what each program reads from the constant banks). + +Hookshot's NVIDIA DLSS (`vk/vk_dlss.cpp`, the DLSS part of `vk/vk_draw.cpp`, `vk/shaders/dlss_*.comp`) is ported from Lichii +(zortos293/Lichii: `vulkan_common/streamline.cpp`, `renderer_vulkan/vk_streamline_dlss.cpp`, `vk_ocarina_camera_motion.cpp`, +`host_shaders/ocarina_*.comp`; Eden Emulator Project, GPL-3.0-or-later; Lichii credits Duck912's Eglantine work). +`third_party/streamline/` is NVIDIA Streamline v2.14.16's headers (MIT, `license.txt`); its DLLs and NVIDIA's DLSS are +loaded from the user's PC at run time and are not vendored. diff --git a/gpu/vk/shaders/dlss_color.comp b/gpu/vk/shaders/dlss_color.comp new file mode 100644 index 000000000..44e5cf83a --- /dev/null +++ b/gpu/vk/shaders/dlss_color.comp @@ -0,0 +1,19 @@ +#version 450 +// (hookshot) ported from Lichii (Eden lineage; Duck912's Eglantine work), GPL-3.0-or-later: vk_dlss.cpp + +layout(local_size_x = 8, local_size_y = 8) in; +layout(binding = 0) uniform sampler2D guest_color; +layout(binding = 1, rgba16f) uniform writeonly image2D dlss_color; +layout(push_constant) uniform P { int encode; } pc; + +void main() { + ivec2 pixel = ivec2(gl_GlobalInvocationID.xy); + if (any(greaterThanEqual(pixel, imageSize(dlss_color)))) { + return; + } + // The guest has already tonemapped this square-root-encoded color for LDR (the network's input, RGB9E5). (hookshot) encode = 1: + // the tonemapped scene, the network's first passes left out (vk_draw.cpp), square-root encoded here the same way. + // dlss_output.comp squares it back + const vec3 c = max(texelFetch(guest_color, pixel, 0).rgb, vec3(0.0)); + imageStore(dlss_color, pixel, vec4(pc.encode != 0 ? sqrt(c) : c, 1.0)); +} diff --git a/gpu/vk/shaders/dlss_color_comp_spv.h b/gpu/vk/shaders/dlss_color_comp_spv.h new file mode 100644 index 000000000..6ea3734c4 --- /dev/null +++ b/gpu/vk/shaders/dlss_color_comp_spv.h @@ -0,0 +1,60 @@ + // 1116.6.0 + #pragma once +const uint32_t DLSS_COLOR_COMP_SPV[] = { + 0x07230203,0x00010600,0x0008000b,0x0000004a,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, + 0x00000000,0x00000001,0x0009000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d, + 0x00000016,0x00000026,0x00000035,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008, + 0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000, + 0x00040005,0x00000009,0x65786970,0x0000006c,0x00080005,0x0000000d,0x475f6c67,0x61626f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x00000016,0x73736c64,0x6c6f635f, + 0x0000726f,0x00030005,0x00000022,0x00000063,0x00050005,0x00000026,0x73657567,0x6f635f74, + 0x00726f6c,0x00030005,0x00000033,0x00000050,0x00050006,0x00000033,0x00000000,0x6f636e65, + 0x00006564,0x00030005,0x00000035,0x00006370,0x00040047,0x0000000d,0x0000000b,0x0000001c, + 0x00030047,0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047, + 0x00000016,0x00000022,0x00000000,0x00040047,0x00000026,0x00000021,0x00000000,0x00040047, + 0x00000026,0x00000022,0x00000000,0x00030047,0x00000033,0x00000002,0x00050048,0x00000033, + 0x00000000,0x00000023,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002, + 0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002, + 0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000, + 0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b, + 0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002, + 0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000002,0x00040020,0x00000015,0x00000000,0x00000014, + 0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x00000019,0x00040017,0x0000001a, + 0x00000019,0x00000002,0x00040017,0x00000020,0x00000013,0x00000003,0x00040020,0x00000021, + 0x00000007,0x00000020,0x00090019,0x00000023,0x00000013,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000001,0x00000000,0x0003001b,0x00000024,0x00000023,0x00040020,0x00000025, + 0x00000000,0x00000024,0x0004003b,0x00000025,0x00000026,0x00000000,0x0004002b,0x00000006, + 0x00000029,0x00000000,0x00040017,0x0000002b,0x00000013,0x00000004,0x0004002b,0x00000013, + 0x0000002e,0x00000000,0x0006002c,0x00000020,0x0000002f,0x0000002e,0x0000002e,0x0000002e, + 0x0003001e,0x00000033,0x00000006,0x00040020,0x00000034,0x00000009,0x00000033,0x0004003b, + 0x00000034,0x00000035,0x00000009,0x00040020,0x00000036,0x00000009,0x00000006,0x0004002b, + 0x00000013,0x00000042,0x3f800000,0x0004002b,0x0000000a,0x00000047,0x00000008,0x0004002b, + 0x0000000a,0x00000048,0x00000001,0x0006002c,0x0000000b,0x00000049,0x00000047,0x00000047, + 0x00000048,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, + 0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000021,0x00000022,0x00000007, + 0x0004003b,0x00000021,0x0000003a,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d, + 0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c, + 0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000007, + 0x00000012,0x00000009,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068,0x00000007, + 0x00000018,0x00000017,0x000500af,0x0000001a,0x0000001b,0x00000012,0x00000018,0x0004009a, + 0x00000019,0x0000001c,0x0000001b,0x000300f7,0x0000001e,0x00000000,0x000400fa,0x0000001c, + 0x0000001d,0x0000001e,0x000200f8,0x0000001d,0x000100fd,0x000200f8,0x0000001e,0x0004003d, + 0x00000024,0x00000027,0x00000026,0x0004003d,0x00000007,0x00000028,0x00000009,0x00040064, + 0x00000023,0x0000002a,0x00000027,0x0007005f,0x0000002b,0x0000002c,0x0000002a,0x00000028, + 0x00000002,0x00000029,0x0008004f,0x00000020,0x0000002d,0x0000002c,0x0000002c,0x00000000, + 0x00000001,0x00000002,0x0007000c,0x00000020,0x00000030,0x00000001,0x00000028,0x0000002d, + 0x0000002f,0x0003003e,0x00000022,0x00000030,0x0004003d,0x00000014,0x00000031,0x00000016, + 0x0004003d,0x00000007,0x00000032,0x00000009,0x00050041,0x00000036,0x00000037,0x00000035, + 0x00000029,0x0004003d,0x00000006,0x00000038,0x00000037,0x000500ab,0x00000019,0x00000039, + 0x00000038,0x00000029,0x000300f7,0x0000003c,0x00000000,0x000400fa,0x00000039,0x0000003b, + 0x0000003f,0x000200f8,0x0000003b,0x0004003d,0x00000020,0x0000003d,0x00000022,0x0006000c, + 0x00000020,0x0000003e,0x00000001,0x0000001f,0x0000003d,0x0003003e,0x0000003a,0x0000003e, + 0x000200f9,0x0000003c,0x000200f8,0x0000003f,0x0004003d,0x00000020,0x00000040,0x00000022, + 0x0003003e,0x0000003a,0x00000040,0x000200f9,0x0000003c,0x000200f8,0x0000003c,0x0004003d, + 0x00000020,0x00000041,0x0000003a,0x00050051,0x00000013,0x00000043,0x00000041,0x00000000, + 0x00050051,0x00000013,0x00000044,0x00000041,0x00000001,0x00050051,0x00000013,0x00000045, + 0x00000041,0x00000002,0x00070050,0x0000002b,0x00000046,0x00000043,0x00000044,0x00000045, + 0x00000042,0x00040063,0x00000031,0x00000032,0x00000046,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/dlss_debug.comp b/gpu/vk/shaders/dlss_debug.comp new file mode 100644 index 000000000..220551e8d --- /dev/null +++ b/gpu/vk/shaders/dlss_debug.comp @@ -0,0 +1,33 @@ +#version 450 +// (hookshot) RX_DLSS_DEBUG=1..4: DLSS's inputs drawn into the network's target in place of DLSS's output (vk_draw.cpp). +// 1: motion, 0.5 grey = still, R/G = 0.5 + x/y render pixels / 64 (toward the previous frame); 2: depth^64; +// 3: |last frame's colour fetched along the motion - this frame's colour| x4; 4: the same without the motion (the baseline) + +layout(local_size_x = 8, local_size_y = 8) in; +layout(binding = 0) uniform sampler2D cur_color; +layout(binding = 1) uniform sampler2D motion; +layout(binding = 2) uniform sampler2D scene_depth; +layout(binding = 3) uniform sampler2D prev_color; +layout(binding = 4, r11f_g11f_b10f) uniform writeonly image2D target; +layout(push_constant) uniform P { int mode; } pc; + +void main() { + ivec2 pixel = ivec2(gl_GlobalInvocationID.xy); + ivec2 extent = imageSize(target); + if (any(greaterThanEqual(pixel, extent))) { + return; + } + vec2 uv = (vec2(pixel) + 0.5) / vec2(extent); + vec2 mv = textureLod(motion, uv, 0).xy; + vec3 c; + if (pc.mode == 1) { + c = vec3(clamp(0.5 + mv / 64.0, 0.0, 1.0), 0.5); + } else if (pc.mode == 2) { + c = vec3(pow(textureLod(scene_depth, uv, 0).r, 64.0)); + } else { + vec2 from = uv + (pc.mode == 3 ? mv / vec2(textureSize(cur_color, 0)) : vec2(0)); + vec3 d = abs(textureLod(prev_color, from, 0).rgb - textureLod(cur_color, uv, 0).rgb); + c = vec3(min((d.r + d.g + d.b) * (4.0 / 3.0), 1.0)); + } + imageStore(target, pixel, vec4(c, 1.0)); +} \ No newline at end of file diff --git a/gpu/vk/shaders/dlss_debug_comp_spv.h b/gpu/vk/shaders/dlss_debug_comp_spv.h new file mode 100644 index 000000000..df0335133 --- /dev/null +++ b/gpu/vk/shaders/dlss_debug_comp_spv.h @@ -0,0 +1,119 @@ + // 1116.5.0 + #pragma once +const uint32_t DLSS_DEBUG_COMP_SPV[] = { + 0x07230203,0x00010600,0x0008000b,0x0000009b,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x000c000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x0000000d,0x00000016,0x00000031,0x0000003a,0x0000005a,0x0000006d,0x00000078, + 0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001,0x00030003,0x00000002, + 0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00040005,0x00000009,0x65786970, + 0x0000006c,0x00080005,0x0000000d,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x00000044,0x00040005,0x00000012,0x65747865,0x0000746e,0x00040005,0x00000016,0x67726174, + 0x00007465,0x00030005,0x00000024,0x00007675,0x00030005,0x0000002d,0x0000766d,0x00040005, + 0x00000031,0x69746f6d,0x00006e6f,0x00030005,0x00000038,0x00000050,0x00050006,0x00000038, + 0x00000000,0x65646f6d,0x00000000,0x00030005,0x0000003a,0x00006370,0x00030005,0x00000045, + 0x00000063,0x00050005,0x0000005a,0x6e656373,0x65645f65,0x00687470,0x00040005,0x00000063, + 0x6d6f7266,0x00000000,0x00050005,0x0000006d,0x5f727563,0x6f6c6f63,0x00000072,0x00030005, + 0x00000077,0x00000064,0x00050005,0x00000078,0x76657270,0x6c6f635f,0x0000726f,0x00040047, + 0x0000000d,0x0000000b,0x0000001c,0x00030047,0x00000016,0x00000019,0x00040047,0x00000016, + 0x00000021,0x00000004,0x00040047,0x00000016,0x00000022,0x00000000,0x00040047,0x00000031, + 0x00000021,0x00000001,0x00040047,0x00000031,0x00000022,0x00000000,0x00030047,0x00000038, + 0x00000002,0x00050048,0x00000038,0x00000000,0x00000023,0x00000000,0x00040047,0x0000005a, + 0x00000021,0x00000002,0x00040047,0x0000005a,0x00000022,0x00000000,0x00040047,0x0000006d, + 0x00000021,0x00000000,0x00040047,0x0000006d,0x00000022,0x00000000,0x00040047,0x00000078, + 0x00000021,0x00000003,0x00040047,0x00000078,0x00000022,0x00000000,0x00020013,0x00000002, + 0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017, + 0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015, + 0x0000000a,0x00000020,0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020, + 0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017, + 0x0000000e,0x0000000a,0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014, + 0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000008,0x00040020, + 0x00000015,0x00000000,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014, + 0x0000001b,0x00040017,0x0000001c,0x0000001b,0x00000002,0x00040017,0x00000022,0x00000013, + 0x00000002,0x00040020,0x00000023,0x00000007,0x00000022,0x0004002b,0x00000013,0x00000027, + 0x3f000000,0x00090019,0x0000002e,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000001,0x00000000,0x0003001b,0x0000002f,0x0000002e,0x00040020,0x00000030,0x00000000, + 0x0000002f,0x0004003b,0x00000030,0x00000031,0x00000000,0x0004002b,0x00000013,0x00000034, + 0x00000000,0x00040017,0x00000035,0x00000013,0x00000004,0x0003001e,0x00000038,0x00000006, + 0x00040020,0x00000039,0x00000009,0x00000038,0x0004003b,0x00000039,0x0000003a,0x00000009, + 0x0004002b,0x00000006,0x0000003b,0x00000000,0x00040020,0x0000003c,0x00000009,0x00000006, + 0x0004002b,0x00000006,0x0000003f,0x00000001,0x00040017,0x00000043,0x00000013,0x00000003, + 0x00040020,0x00000044,0x00000007,0x00000043,0x0004002b,0x00000013,0x00000047,0x42800000, + 0x0004002b,0x00000013,0x0000004c,0x3f800000,0x0004002b,0x00000006,0x00000056,0x00000002, + 0x0004003b,0x00000030,0x0000005a,0x00000000,0x0004002b,0x0000000a,0x0000005e,0x00000000, + 0x0004002b,0x00000006,0x00000067,0x00000003,0x0004003b,0x00000030,0x0000006d,0x00000000, + 0x0005002c,0x00000022,0x00000074,0x00000034,0x00000034,0x0004003b,0x00000030,0x00000078, + 0x00000000,0x00040020,0x00000083,0x00000007,0x00000013,0x0004002b,0x0000000a,0x00000086, + 0x00000001,0x0004002b,0x0000000a,0x0000008a,0x00000002,0x0004002b,0x00000013,0x0000008e, + 0x3faaaaab,0x0004002b,0x0000000a,0x00000099,0x00000008,0x0006002c,0x0000000b,0x0000009a, + 0x00000099,0x00000099,0x00000086,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003, + 0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008, + 0x00000012,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,0x0004003b,0x00000023, + 0x0000002d,0x00000007,0x0004003b,0x00000044,0x00000045,0x00000007,0x0004003b,0x00000023, + 0x00000063,0x00000007,0x0004003b,0x00000023,0x00000069,0x00000007,0x0004003b,0x00000044, + 0x00000077,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e, + 0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011, + 0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000014,0x00000017,0x00000016, + 0x00040068,0x00000007,0x00000018,0x00000017,0x0003003e,0x00000012,0x00000018,0x0004003d, + 0x00000007,0x00000019,0x00000009,0x0004003d,0x00000007,0x0000001a,0x00000012,0x000500af, + 0x0000001c,0x0000001d,0x00000019,0x0000001a,0x0004009a,0x0000001b,0x0000001e,0x0000001d, + 0x000300f7,0x00000020,0x00000000,0x000400fa,0x0000001e,0x0000001f,0x00000020,0x000200f8, + 0x0000001f,0x000100fd,0x000200f8,0x00000020,0x0004003d,0x00000007,0x00000025,0x00000009, + 0x0004006f,0x00000022,0x00000026,0x00000025,0x00050050,0x00000022,0x00000028,0x00000027, + 0x00000027,0x00050081,0x00000022,0x00000029,0x00000026,0x00000028,0x0004003d,0x00000007, + 0x0000002a,0x00000012,0x0004006f,0x00000022,0x0000002b,0x0000002a,0x00050088,0x00000022, + 0x0000002c,0x00000029,0x0000002b,0x0003003e,0x00000024,0x0000002c,0x0004003d,0x0000002f, + 0x00000032,0x00000031,0x0004003d,0x00000022,0x00000033,0x00000024,0x00070058,0x00000035, + 0x00000036,0x00000032,0x00000033,0x00000002,0x00000034,0x0007004f,0x00000022,0x00000037, + 0x00000036,0x00000036,0x00000000,0x00000001,0x0003003e,0x0000002d,0x00000037,0x00050041, + 0x0000003c,0x0000003d,0x0000003a,0x0000003b,0x0004003d,0x00000006,0x0000003e,0x0000003d, + 0x000500aa,0x0000001b,0x00000040,0x0000003e,0x0000003f,0x000300f7,0x00000042,0x00000000, + 0x000400fa,0x00000040,0x00000041,0x00000053,0x000200f8,0x00000041,0x0004003d,0x00000022, + 0x00000046,0x0000002d,0x00050050,0x00000022,0x00000048,0x00000047,0x00000047,0x00050088, + 0x00000022,0x00000049,0x00000046,0x00000048,0x00050050,0x00000022,0x0000004a,0x00000027, + 0x00000027,0x00050081,0x00000022,0x0000004b,0x0000004a,0x00000049,0x00050050,0x00000022, + 0x0000004d,0x00000034,0x00000034,0x00050050,0x00000022,0x0000004e,0x0000004c,0x0000004c, + 0x0008000c,0x00000022,0x0000004f,0x00000001,0x0000002b,0x0000004b,0x0000004d,0x0000004e, + 0x00050051,0x00000013,0x00000050,0x0000004f,0x00000000,0x00050051,0x00000013,0x00000051, + 0x0000004f,0x00000001,0x00060050,0x00000043,0x00000052,0x00000050,0x00000051,0x00000027, + 0x0003003e,0x00000045,0x00000052,0x000200f9,0x00000042,0x000200f8,0x00000053,0x00050041, + 0x0000003c,0x00000054,0x0000003a,0x0000003b,0x0004003d,0x00000006,0x00000055,0x00000054, + 0x000500aa,0x0000001b,0x00000057,0x00000055,0x00000056,0x000300f7,0x00000059,0x00000000, + 0x000400fa,0x00000057,0x00000058,0x00000062,0x000200f8,0x00000058,0x0004003d,0x0000002f, + 0x0000005b,0x0000005a,0x0004003d,0x00000022,0x0000005c,0x00000024,0x00070058,0x00000035, + 0x0000005d,0x0000005b,0x0000005c,0x00000002,0x00000034,0x00050051,0x00000013,0x0000005f, + 0x0000005d,0x00000000,0x0007000c,0x00000013,0x00000060,0x00000001,0x0000001a,0x0000005f, + 0x00000047,0x00060050,0x00000043,0x00000061,0x00000060,0x00000060,0x00000060,0x0003003e, + 0x00000045,0x00000061,0x000200f9,0x00000059,0x000200f8,0x00000062,0x0004003d,0x00000022, + 0x00000064,0x00000024,0x00050041,0x0000003c,0x00000065,0x0000003a,0x0000003b,0x0004003d, + 0x00000006,0x00000066,0x00000065,0x000500aa,0x0000001b,0x00000068,0x00000066,0x00000067, + 0x000300f7,0x0000006b,0x00000000,0x000400fa,0x00000068,0x0000006a,0x00000073,0x000200f8, + 0x0000006a,0x0004003d,0x00000022,0x0000006c,0x0000002d,0x0004003d,0x0000002f,0x0000006e, + 0x0000006d,0x00040064,0x0000002e,0x0000006f,0x0000006e,0x00050067,0x00000007,0x00000070, + 0x0000006f,0x0000003b,0x0004006f,0x00000022,0x00000071,0x00000070,0x00050088,0x00000022, + 0x00000072,0x0000006c,0x00000071,0x0003003e,0x00000069,0x00000072,0x000200f9,0x0000006b, + 0x000200f8,0x00000073,0x0003003e,0x00000069,0x00000074,0x000200f9,0x0000006b,0x000200f8, + 0x0000006b,0x0004003d,0x00000022,0x00000075,0x00000069,0x00050081,0x00000022,0x00000076, + 0x00000064,0x00000075,0x0003003e,0x00000063,0x00000076,0x0004003d,0x0000002f,0x00000079, + 0x00000078,0x0004003d,0x00000022,0x0000007a,0x00000063,0x00070058,0x00000035,0x0000007b, + 0x00000079,0x0000007a,0x00000002,0x00000034,0x0008004f,0x00000043,0x0000007c,0x0000007b, + 0x0000007b,0x00000000,0x00000001,0x00000002,0x0004003d,0x0000002f,0x0000007d,0x0000006d, + 0x0004003d,0x00000022,0x0000007e,0x00000024,0x00070058,0x00000035,0x0000007f,0x0000007d, + 0x0000007e,0x00000002,0x00000034,0x0008004f,0x00000043,0x00000080,0x0000007f,0x0000007f, + 0x00000000,0x00000001,0x00000002,0x00050083,0x00000043,0x00000081,0x0000007c,0x00000080, + 0x0006000c,0x00000043,0x00000082,0x00000001,0x00000004,0x00000081,0x0003003e,0x00000077, + 0x00000082,0x00050041,0x00000083,0x00000084,0x00000077,0x0000005e,0x0004003d,0x00000013, + 0x00000085,0x00000084,0x00050041,0x00000083,0x00000087,0x00000077,0x00000086,0x0004003d, + 0x00000013,0x00000088,0x00000087,0x00050081,0x00000013,0x00000089,0x00000085,0x00000088, + 0x00050041,0x00000083,0x0000008b,0x00000077,0x0000008a,0x0004003d,0x00000013,0x0000008c, + 0x0000008b,0x00050081,0x00000013,0x0000008d,0x00000089,0x0000008c,0x00050085,0x00000013, + 0x0000008f,0x0000008d,0x0000008e,0x0007000c,0x00000013,0x00000090,0x00000001,0x00000025, + 0x0000008f,0x0000004c,0x00060050,0x00000043,0x00000091,0x00000090,0x00000090,0x00000090, + 0x0003003e,0x00000045,0x00000091,0x000200f9,0x00000059,0x000200f8,0x00000059,0x000200f9, + 0x00000042,0x000200f8,0x00000042,0x0004003d,0x00000014,0x00000092,0x00000016,0x0004003d, + 0x00000007,0x00000093,0x00000009,0x0004003d,0x00000043,0x00000094,0x00000045,0x00050051, + 0x00000013,0x00000095,0x00000094,0x00000000,0x00050051,0x00000013,0x00000096,0x00000094, + 0x00000001,0x00050051,0x00000013,0x00000097,0x00000094,0x00000002,0x00070050,0x00000035, + 0x00000098,0x00000095,0x00000096,0x00000097,0x0000004c,0x00040063,0x00000092,0x00000093, + 0x00000098,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/dlss_motion.comp b/gpu/vk/shaders/dlss_motion.comp new file mode 100644 index 000000000..eb8588918 --- /dev/null +++ b/gpu/vk/shaders/dlss_motion.comp @@ -0,0 +1,33 @@ +#version 450 +// (hookshot) ported from Lichii (Eden lineage; Duck912's Eglantine work), GPL-3.0-or-later: vk_dlss.cpp + +layout(local_size_x = 8, local_size_y = 8) in; +layout(binding = 0) uniform sampler2D scene_depth; +layout(binding = 1, rg16f) uniform writeonly image2D motion; + +layout(push_constant, row_major) uniform Parameters { + mat4 clip_to_previous_clip; +} params; + +void main() { + ivec2 pixel = ivec2(gl_GlobalInvocationID.xy); + ivec2 extent = imageSize(motion); + if (any(greaterThanEqual(pixel, extent))) { + return; + } + + vec2 size = vec2(extent); + float depth = texelFetch(scene_depth, pixel, 0).r; + vec2 screen = (vec2(pixel) + 0.5) / size; + // The captured Zelda path is unjittered, with [-1, 1] clip depth and negative viewport height. + vec4 clip = vec4(screen * vec2(2, -2) + vec2(-1, 1), depth * 2 - 1, 1); + vec4 previous = params.clip_to_previous_clip * clip; + vec2 pixels = vec2(0); + if (depth >= 0 && depth <= 1 && previous.w > 1e-6) { + vec2 displacement = (previous.xy / previous.w - clip.xy) * vec2(0.5, -0.5) * size; + if (all(lessThanEqual(abs(displacement), vec2(65504)))) { + pixels = displacement; + } + } + imageStore(motion, pixel, vec4(pixels, 0, 0)); +} diff --git a/gpu/vk/shaders/dlss_motion_comp_spv.h b/gpu/vk/shaders/dlss_motion_comp_spv.h new file mode 100644 index 000000000..129471ff3 --- /dev/null +++ b/gpu/vk/shaders/dlss_motion_comp_spv.h @@ -0,0 +1,106 @@ + // 1116.6.0 + #pragma once +const uint32_t DLSS_MOTION_COMP_SPV[] = { + 0x07230203,0x00010600,0x0008000b,0x0000008b,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x0009000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x0000000d,0x00000016,0x0000002c,0x00000052,0x00060010,0x00000004,0x00000011, + 0x00000008,0x00000008,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004, + 0x6e69616d,0x00000000,0x00040005,0x00000009,0x65786970,0x0000006c,0x00080005,0x0000000d, + 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000012, + 0x65747865,0x0000746e,0x00040005,0x00000016,0x69746f6d,0x00006e6f,0x00040005,0x00000024, + 0x657a6973,0x00000000,0x00040005,0x00000028,0x74706564,0x00000068,0x00050005,0x0000002c, + 0x6e656373,0x65645f65,0x00687470,0x00040005,0x00000035,0x65726373,0x00006e65,0x00040005, + 0x0000003e,0x70696c63,0x00000000,0x00050005,0x0000004e,0x76657270,0x73756f69,0x00000000, + 0x00050005,0x00000050,0x61726150,0x6574656d,0x00007372,0x00090006,0x00000050,0x00000000, + 0x70696c63,0x5f6f745f,0x76657270,0x73756f69,0x696c635f,0x00000070,0x00040005,0x00000052, + 0x61726170,0x0000736d,0x00040005,0x00000058,0x65786970,0x0000736c,0x00060005,0x0000006a, + 0x70736964,0x6563616c,0x746e656d,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000001c, + 0x00030047,0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047, + 0x00000016,0x00000022,0x00000000,0x00040047,0x0000002c,0x00000021,0x00000000,0x00040047, + 0x0000002c,0x00000022,0x00000000,0x00030047,0x00000050,0x00000002,0x00040048,0x00000050, + 0x00000000,0x00000004,0x00050048,0x00000050,0x00000000,0x00000007,0x00000010,0x00050048, + 0x00000050,0x00000000,0x00000023,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003, + 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006, + 0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020, + 0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001, + 0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a, + 0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000002,0x00000007,0x00040020,0x00000015,0x00000000, + 0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017, + 0x0000001c,0x0000001b,0x00000002,0x00040017,0x00000022,0x00000013,0x00000002,0x00040020, + 0x00000023,0x00000007,0x00000022,0x00040020,0x00000027,0x00000007,0x00000013,0x00090019, + 0x00000029,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000, + 0x0003001b,0x0000002a,0x00000029,0x00040020,0x0000002b,0x00000000,0x0000002a,0x0004003b, + 0x0000002b,0x0000002c,0x00000000,0x0004002b,0x00000006,0x0000002f,0x00000000,0x00040017, + 0x00000031,0x00000013,0x00000004,0x0004002b,0x0000000a,0x00000033,0x00000000,0x0004002b, + 0x00000013,0x00000038,0x3f000000,0x00040020,0x0000003d,0x00000007,0x00000031,0x0004002b, + 0x00000013,0x00000040,0x40000000,0x0004002b,0x00000013,0x00000041,0xc0000000,0x0005002c, + 0x00000022,0x00000042,0x00000040,0x00000041,0x0004002b,0x00000013,0x00000044,0xbf800000, + 0x0004002b,0x00000013,0x00000045,0x3f800000,0x0005002c,0x00000022,0x00000046,0x00000044, + 0x00000045,0x00040018,0x0000004f,0x00000031,0x00000004,0x0003001e,0x00000050,0x0000004f, + 0x00040020,0x00000051,0x00000009,0x00000050,0x0004003b,0x00000051,0x00000052,0x00000009, + 0x00040020,0x00000053,0x00000009,0x0000004f,0x0004002b,0x00000013,0x00000059,0x00000000, + 0x0005002c,0x00000022,0x0000005a,0x00000059,0x00000059,0x0004002b,0x0000000a,0x00000062, + 0x00000003,0x0004002b,0x00000013,0x00000065,0x358637bd,0x0004002b,0x00000013,0x00000074, + 0xbf000000,0x0005002c,0x00000022,0x00000075,0x00000038,0x00000074,0x0004002b,0x00000013, + 0x0000007b,0x477fe000,0x0005002c,0x00000022,0x0000007c,0x0000007b,0x0000007b,0x0004002b, + 0x0000000a,0x00000088,0x00000008,0x0004002b,0x0000000a,0x00000089,0x00000001,0x0006002c, + 0x0000000b,0x0000008a,0x00000088,0x00000088,0x00000089,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007, + 0x0004003b,0x00000008,0x00000012,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007, + 0x0004003b,0x00000027,0x00000028,0x00000007,0x0004003b,0x00000023,0x00000035,0x00000007, + 0x0004003b,0x0000003d,0x0000003e,0x00000007,0x0004003b,0x0000003d,0x0000004e,0x00000007, + 0x0004003b,0x00000023,0x00000058,0x00000007,0x0004003b,0x00000023,0x0000006a,0x00000007, + 0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f, + 0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011,0x00000010,0x0003003e, + 0x00000009,0x00000011,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068,0x00000007, + 0x00000018,0x00000017,0x0003003e,0x00000012,0x00000018,0x0004003d,0x00000007,0x00000019, + 0x00000009,0x0004003d,0x00000007,0x0000001a,0x00000012,0x000500af,0x0000001c,0x0000001d, + 0x00000019,0x0000001a,0x0004009a,0x0000001b,0x0000001e,0x0000001d,0x000300f7,0x00000020, + 0x00000000,0x000400fa,0x0000001e,0x0000001f,0x00000020,0x000200f8,0x0000001f,0x000100fd, + 0x000200f8,0x00000020,0x0004003d,0x00000007,0x00000025,0x00000012,0x0004006f,0x00000022, + 0x00000026,0x00000025,0x0003003e,0x00000024,0x00000026,0x0004003d,0x0000002a,0x0000002d, + 0x0000002c,0x0004003d,0x00000007,0x0000002e,0x00000009,0x00040064,0x00000029,0x00000030, + 0x0000002d,0x0007005f,0x00000031,0x00000032,0x00000030,0x0000002e,0x00000002,0x0000002f, + 0x00050051,0x00000013,0x00000034,0x00000032,0x00000000,0x0003003e,0x00000028,0x00000034, + 0x0004003d,0x00000007,0x00000036,0x00000009,0x0004006f,0x00000022,0x00000037,0x00000036, + 0x00050050,0x00000022,0x00000039,0x00000038,0x00000038,0x00050081,0x00000022,0x0000003a, + 0x00000037,0x00000039,0x0004003d,0x00000022,0x0000003b,0x00000024,0x00050088,0x00000022, + 0x0000003c,0x0000003a,0x0000003b,0x0003003e,0x00000035,0x0000003c,0x0004003d,0x00000022, + 0x0000003f,0x00000035,0x00050085,0x00000022,0x00000043,0x0000003f,0x00000042,0x00050081, + 0x00000022,0x00000047,0x00000043,0x00000046,0x0004003d,0x00000013,0x00000048,0x00000028, + 0x00050085,0x00000013,0x00000049,0x00000048,0x00000040,0x00050083,0x00000013,0x0000004a, + 0x00000049,0x00000045,0x00050051,0x00000013,0x0000004b,0x00000047,0x00000000,0x00050051, + 0x00000013,0x0000004c,0x00000047,0x00000001,0x00070050,0x00000031,0x0000004d,0x0000004b, + 0x0000004c,0x0000004a,0x00000045,0x0003003e,0x0000003e,0x0000004d,0x00050041,0x00000053, + 0x00000054,0x00000052,0x0000002f,0x0004003d,0x0000004f,0x00000055,0x00000054,0x0004003d, + 0x00000031,0x00000056,0x0000003e,0x00050091,0x00000031,0x00000057,0x00000055,0x00000056, + 0x0003003e,0x0000004e,0x00000057,0x0003003e,0x00000058,0x0000005a,0x0004003d,0x00000013, + 0x0000005b,0x00000028,0x000500be,0x0000001b,0x0000005c,0x0000005b,0x00000059,0x0004003d, + 0x00000013,0x0000005d,0x00000028,0x000500bc,0x0000001b,0x0000005e,0x0000005d,0x00000045, + 0x000500a7,0x0000001b,0x0000005f,0x0000005c,0x0000005e,0x000300f7,0x00000061,0x00000000, + 0x000400fa,0x0000005f,0x00000060,0x00000061,0x000200f8,0x00000060,0x00050041,0x00000027, + 0x00000063,0x0000004e,0x00000062,0x0004003d,0x00000013,0x00000064,0x00000063,0x000500ba, + 0x0000001b,0x00000066,0x00000064,0x00000065,0x000200f9,0x00000061,0x000200f8,0x00000061, + 0x000700f5,0x0000001b,0x00000067,0x0000005f,0x00000020,0x00000066,0x00000060,0x000300f7, + 0x00000069,0x00000000,0x000400fa,0x00000067,0x00000068,0x00000069,0x000200f8,0x00000068, + 0x0004003d,0x00000031,0x0000006b,0x0000004e,0x0007004f,0x00000022,0x0000006c,0x0000006b, + 0x0000006b,0x00000000,0x00000001,0x00050041,0x00000027,0x0000006d,0x0000004e,0x00000062, + 0x0004003d,0x00000013,0x0000006e,0x0000006d,0x00050050,0x00000022,0x0000006f,0x0000006e, + 0x0000006e,0x00050088,0x00000022,0x00000070,0x0000006c,0x0000006f,0x0004003d,0x00000031, + 0x00000071,0x0000003e,0x0007004f,0x00000022,0x00000072,0x00000071,0x00000071,0x00000000, + 0x00000001,0x00050083,0x00000022,0x00000073,0x00000070,0x00000072,0x00050085,0x00000022, + 0x00000076,0x00000073,0x00000075,0x0004003d,0x00000022,0x00000077,0x00000024,0x00050085, + 0x00000022,0x00000078,0x00000076,0x00000077,0x0003003e,0x0000006a,0x00000078,0x0004003d, + 0x00000022,0x00000079,0x0000006a,0x0006000c,0x00000022,0x0000007a,0x00000001,0x00000004, + 0x00000079,0x000500bc,0x0000001c,0x0000007d,0x0000007a,0x0000007c,0x0004009b,0x0000001b, + 0x0000007e,0x0000007d,0x000300f7,0x00000080,0x00000000,0x000400fa,0x0000007e,0x0000007f, + 0x00000080,0x000200f8,0x0000007f,0x0004003d,0x00000022,0x00000081,0x0000006a,0x0003003e, + 0x00000058,0x00000081,0x000200f9,0x00000080,0x000200f8,0x00000080,0x000200f9,0x00000069, + 0x000200f8,0x00000069,0x0004003d,0x00000014,0x00000082,0x00000016,0x0004003d,0x00000007, + 0x00000083,0x00000009,0x0004003d,0x00000022,0x00000084,0x00000058,0x00050051,0x00000013, + 0x00000085,0x00000084,0x00000000,0x00050051,0x00000013,0x00000086,0x00000084,0x00000001, + 0x00070050,0x00000031,0x00000087,0x00000085,0x00000086,0x00000059,0x00000059,0x00040063, + 0x00000082,0x00000083,0x00000087,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/dlss_output.comp b/gpu/vk/shaders/dlss_output.comp new file mode 100644 index 000000000..7df27f33e --- /dev/null +++ b/gpu/vk/shaders/dlss_output.comp @@ -0,0 +1,20 @@ +#version 450 +// (hookshot) ported from Lichii (Eden lineage; Duck912's Eglantine work), GPL-3.0-or-later: vk_dlss.cpp + +layout(local_size_x = 8, local_size_y = 8) in; +layout(binding = 0) uniform sampler2D dlss_color; +layout(binding = 1, r11f_g11f_b10f) uniform writeonly image2D guest_color; + +void main() { + ivec2 pixel = ivec2(gl_GlobalInvocationID.xy); + ivec2 extent = imageSize(guest_color); + if (any(greaterThanEqual(pixel, extent))) { + return; + } + // The guest upscaler squares its encoded RGB before writing the linear target. + vec3 sampled = all(equal(textureSize(dlss_color, 0), extent)) + ? texelFetch(dlss_color, pixel, 0).rgb + : textureLod(dlss_color, (vec2(pixel) + 0.5) / vec2(extent), 0).rgb; + vec3 color = max(sampled, vec3(0.0)); + imageStore(guest_color, pixel, vec4(color * color, 1.0)); +} diff --git a/gpu/vk/shaders/dlss_output_comp_spv.h b/gpu/vk/shaders/dlss_output_comp_spv.h new file mode 100644 index 000000000..090f881d1 --- /dev/null +++ b/gpu/vk/shaders/dlss_output_comp_spv.h @@ -0,0 +1,69 @@ + // 1116.6.0 + #pragma once +const uint32_t DLSS_OUTPUT_COMP_SPV[] = { + 0x07230203,0x00010600,0x0008000b,0x00000059,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x0000000d,0x00000016,0x00000028,0x00060010,0x00000004,0x00000011,0x00000008, + 0x00000008,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d, + 0x00000000,0x00040005,0x00000009,0x65786970,0x0000006c,0x00080005,0x0000000d,0x475f6c67, + 0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000012,0x65747865, + 0x0000746e,0x00050005,0x00000016,0x73657567,0x6f635f74,0x00726f6c,0x00040005,0x00000024, + 0x706d6173,0x0064656c,0x00050005,0x00000028,0x73736c64,0x6c6f635f,0x0000726f,0x00040005, + 0x00000048,0x6f6c6f63,0x00000072,0x00040047,0x0000000d,0x0000000b,0x0000001c,0x00030047, + 0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047,0x00000016, + 0x00000022,0x00000000,0x00040047,0x00000028,0x00000021,0x00000000,0x00040047,0x00000028, + 0x00000022,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015, + 0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020, + 0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000,0x00040017, + 0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b, + 0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00030016, + 0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000008,0x00040020,0x00000015,0x00000000,0x00000014,0x0004003b, + 0x00000015,0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017,0x0000001c,0x0000001b, + 0x00000002,0x00040017,0x00000022,0x00000013,0x00000003,0x00040020,0x00000023,0x00000007, + 0x00000022,0x00090019,0x00000025,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000001,0x00000000,0x0003001b,0x00000026,0x00000025,0x00040020,0x00000027,0x00000000, + 0x00000026,0x0004003b,0x00000027,0x00000028,0x00000000,0x0004002b,0x00000006,0x0000002a, + 0x00000000,0x00040017,0x00000036,0x00000013,0x00000004,0x00040017,0x0000003c,0x00000013, + 0x00000002,0x0004002b,0x00000013,0x0000003e,0x3f000000,0x0004002b,0x00000013,0x00000044, + 0x00000000,0x0006002c,0x00000022,0x0000004a,0x00000044,0x00000044,0x00000044,0x0004002b, + 0x00000013,0x00000051,0x3f800000,0x0004002b,0x0000000a,0x00000056,0x00000008,0x0004002b, + 0x0000000a,0x00000057,0x00000001,0x0006002c,0x0000000b,0x00000058,0x00000056,0x00000056, + 0x00000057,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, + 0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x00000012,0x00000007, + 0x0004003b,0x00000023,0x00000024,0x00000007,0x0004003b,0x00000023,0x00000030,0x00000007, + 0x0004003b,0x00000023,0x00000048,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d, + 0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c, + 0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000014, + 0x00000017,0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x0003003e,0x00000012, + 0x00000018,0x0004003d,0x00000007,0x00000019,0x00000009,0x0004003d,0x00000007,0x0000001a, + 0x00000012,0x000500af,0x0000001c,0x0000001d,0x00000019,0x0000001a,0x0004009a,0x0000001b, + 0x0000001e,0x0000001d,0x000300f7,0x00000020,0x00000000,0x000400fa,0x0000001e,0x0000001f, + 0x00000020,0x000200f8,0x0000001f,0x000100fd,0x000200f8,0x00000020,0x0004003d,0x00000026, + 0x00000029,0x00000028,0x00040064,0x00000025,0x0000002b,0x00000029,0x00050067,0x00000007, + 0x0000002c,0x0000002b,0x0000002a,0x0004003d,0x00000007,0x0000002d,0x00000012,0x000500aa, + 0x0000001c,0x0000002e,0x0000002c,0x0000002d,0x0004009b,0x0000001b,0x0000002f,0x0000002e, + 0x000300f7,0x00000032,0x00000000,0x000400fa,0x0000002f,0x00000031,0x00000039,0x000200f8, + 0x00000031,0x0004003d,0x00000026,0x00000033,0x00000028,0x0004003d,0x00000007,0x00000034, + 0x00000009,0x00040064,0x00000025,0x00000035,0x00000033,0x0007005f,0x00000036,0x00000037, + 0x00000035,0x00000034,0x00000002,0x0000002a,0x0008004f,0x00000022,0x00000038,0x00000037, + 0x00000037,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000030,0x00000038,0x000200f9, + 0x00000032,0x000200f8,0x00000039,0x0004003d,0x00000026,0x0000003a,0x00000028,0x0004003d, + 0x00000007,0x0000003b,0x00000009,0x0004006f,0x0000003c,0x0000003d,0x0000003b,0x00050050, + 0x0000003c,0x0000003f,0x0000003e,0x0000003e,0x00050081,0x0000003c,0x00000040,0x0000003d, + 0x0000003f,0x0004003d,0x00000007,0x00000041,0x00000012,0x0004006f,0x0000003c,0x00000042, + 0x00000041,0x00050088,0x0000003c,0x00000043,0x00000040,0x00000042,0x00070058,0x00000036, + 0x00000045,0x0000003a,0x00000043,0x00000002,0x00000044,0x0008004f,0x00000022,0x00000046, + 0x00000045,0x00000045,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000030,0x00000046, + 0x000200f9,0x00000032,0x000200f8,0x00000032,0x0004003d,0x00000022,0x00000047,0x00000030, + 0x0003003e,0x00000024,0x00000047,0x0004003d,0x00000022,0x00000049,0x00000024,0x0007000c, + 0x00000022,0x0000004b,0x00000001,0x00000028,0x00000049,0x0000004a,0x0003003e,0x00000048, + 0x0000004b,0x0004003d,0x00000014,0x0000004c,0x00000016,0x0004003d,0x00000007,0x0000004d, + 0x00000009,0x0004003d,0x00000022,0x0000004e,0x00000048,0x0004003d,0x00000022,0x0000004f, + 0x00000048,0x00050085,0x00000022,0x00000050,0x0000004e,0x0000004f,0x00050051,0x00000013, + 0x00000052,0x00000050,0x00000000,0x00050051,0x00000013,0x00000053,0x00000050,0x00000001, + 0x00050051,0x00000013,0x00000054,0x00000050,0x00000002,0x00070050,0x00000036,0x00000055, + 0x00000052,0x00000053,0x00000054,0x00000051,0x00040063,0x0000004c,0x0000004d,0x00000055, + 0x000100fd,0x00010038 +}; diff --git a/gpu/vk/vk_dlss.cpp b/gpu/vk/vk_dlss.cpp new file mode 100644 index 000000000..00ed27fdc --- /dev/null +++ b/gpu/vk/vk_dlss.cpp @@ -0,0 +1,589 @@ +// NVIDIA DLSS super resolution through NVIDIA Streamline, manual hooking (vk_dlss.h). Ported from Lichii (Eden lineage; +// Duck912's Eglantine work), GPL-3.0-or-later: video_core/vulkan_common/streamline.cpp (the loader) and +// renderer_vulkan/vk_streamline_dlss.cpp (the evaluation). Streamline's headers are MIT (third_party/streamline/license.txt). +#include "vk_dlss.h" +#include "vk_internal.h" + +#ifdef _WIN32 + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "vk_menu.h" + +namespace mkwvk { +namespace { + +namespace fs = std::filesystem; + +// (Lichii's: a custom engine names itself with its own project id; kept fixed, the driver may key behaviour off it) +constexpr const char* PROJECT_ID = "8d3e2f9a-6b41-4c7e-9a52-1f0c3b7d5e64"; +constexpr unsigned MIN_DLSS_MAJOR = 310; // (the first DLSS with preset K) +using Version = std::array; + +// the functions Streamline's manual hooking wants routed through its proxies +#define DLSS_HOOKED(X) \ + X(vkCreateSwapchainKHR) X(vkDestroySwapchainKHR) X(vkGetSwapchainImagesKHR) X(vkAcquireNextImageKHR) X(vkQueuePresentKHR) \ + X(vkDeviceWaitIdle) + +struct State { + HMODULE module = nullptr; + PFun_slInit* init = nullptr; + PFun_slShutdown* shutdown = nullptr; + PFun_slIsFeatureSupported* is_feature_supported = nullptr; + PFun_slGetFeatureRequirements* get_feature_requirements = nullptr; + PFun_slGetFeatureVersion* get_feature_version = nullptr; + PFun_slGetFeatureFunction* get_feature_function = nullptr; + PFun_slGetNewFrameToken* get_new_frame_token = nullptr; + PFun_slSetConstants* set_constants = nullptr; + PFun_slEvaluateFeature* evaluate_feature = nullptr; + PFun_slFreeResources* free_resources = nullptr; + PFun_slSetVulkanInfo* set_vulkan_info = nullptr; + PFun_slDLSSSetOptions* set_options = nullptr; + PFun_slDLSSGetOptimalSettings* get_optimal = nullptr; + std::wstring plugin_dir, model_dir; + std::vector inst_names, dev_names; + std::vector inst, devx; + bool tried = false, started = false, attached = false, failed = false, hooked = false; + const char* reason = "not started"; + struct { +#define DLSS_ORIG(f) PFN_##f f = nullptr; + DLSS_HOOKED(DLSS_ORIG) +#undef DLSS_ORIG + } orig; // (put back at stop) + bool options_set = false; + uint32_t rw = 0, rh = 0, ow = 0, oh = 0; // (the sizes the options were last set for) + sl::DLSSPreset preset{}; // (and the preset asked for) +}; +State st; + +int env_int(const char* name, int fallback) { + const char* v = getenv(name); + return v ? atoi(v) : fallback; +} + +std::string u8(const fs::path& p) { + const std::u8string s = p.u8string(); + return std::string(s.begin(), s.end()); +} + +// RX_DLSS_LOG=1: Streamline's info lines too, 2: verbose +void sl_log(sl::LogType type, const char* msg) { + std::string s = msg ? msg : ""; + while (!s.empty() && (s.back() == '\n' || s.back() == '\r')) s.pop_back(); + if (type == sl::LogType::eError || type == sl::LogType::eWarn || env_int("RX_DLSS_LOG", 0) > 0) + logf("vk: dlss: sl: %s", s.c_str()); +} + +bool off(const char* why) { + st.reason = why; + logf("vk: dlss: off: %s", why); + return false; +} + +template +bool resolve(const char* name, T*& f) { + f = reinterpret_cast(GetProcAddress(st.module, name)); + if (!f) logf("vk: dlss: sl.interposer.dll has no %s", name); + return f != nullptr; +} + +fs::path exe_dir() { + wchar_t b[4096]; + const DWORD n = GetModuleFileNameW(nullptr, b, (DWORD)std::size(b)); + return fs::path(std::wstring(b, n)).parent_path(); +} + +std::optional read_version(const fs::path& path) { + DWORD handle = 0; + const DWORD size = GetFileVersionInfoSizeW(path.c_str(), &handle); + if (!size) return std::nullopt; + std::vector data(size); + VS_FIXEDFILEINFO* info = nullptr; + UINT length = 0; + if (!GetFileVersionInfoW(path.c_str(), 0, size, data.data()) || + !VerQueryValueW(data.data(), L"\\", reinterpret_cast(&info), &length) || !info) + return std::nullopt; + return Version{HIWORD(info->dwFileVersionMS), LOWORD(info->dwFileVersionMS), HIWORD(info->dwFileVersionLS), + LOWORD(info->dwFileVersionLS)}; +} + +/// A valid Authenticode signature from NVIDIA Corporation (sl.interposer.dll and the DLSS models). The plain WinVerifyTrust +/// API: Streamline's sl_security.h needs WINTRUST_SIGNATURE_SETTINGS, which older mingw headers do not have +bool signed_by_nvidia(const fs::path& path) { + std::error_code ec; + const std::wstring file_path = fs::absolute(path, ec).wstring(); + WINTRUST_FILE_INFO file{}; + file.cbStruct = sizeof(file); + file.pcwszFilePath = file_path.c_str(); + WINTRUST_DATA data{}; + data.cbStruct = sizeof(data); + data.dwUIChoice = WTD_UI_NONE; + data.fdwRevocationChecks = WTD_REVOKE_NONE; + data.dwUnionChoice = WTD_CHOICE_FILE; + data.pFile = &file; + data.dwStateAction = WTD_STATEACTION_VERIFY; + data.dwProvFlags = WTD_CACHE_ONLY_URL_RETRIEVAL; + GUID action = WINTRUST_ACTION_GENERIC_VERIFY_V2; + bool valid = WinVerifyTrust(nullptr, &action, &data) == ERROR_SUCCESS; + if (valid) { + CRYPT_PROVIDER_DATA* provider = WTHelperProvDataFromStateData(data.hWVTStateData); + CRYPT_PROVIDER_SGNR* signer = provider ? WTHelperGetProvSignerFromChain(provider, 0, FALSE, 0) : nullptr; + CRYPT_PROVIDER_CERT* cert = signer ? WTHelperGetProvCertFromChain(signer, 0) : nullptr; + wchar_t name[128]{}; + valid = cert && + CertGetNameStringW(cert->pCert, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nullptr, name, (DWORD)std::size(name)) > 1 && + std::wstring(name) == L"NVIDIA Corporation"; + } + data.dwStateAction = WTD_STATEACTION_CLOSE; + WinVerifyTrust(nullptr, &action, &data); + return valid; +} + +/// The NVIDIA app keeps every DLSS it downloads under ProgramData: the newest of major >= 310 +fs::path find_app_model() { + const wchar_t* program_data = _wgetenv(L"ProgramData"); + if (!program_data) return {}; + const fs::path root = fs::path(program_data) / L"NVIDIA" / L"NGX" / L"models" / L"dlss" / L"versions"; + fs::path best_path; + Version best{}; + std::error_code ec; + for (const auto& version_dir : fs::directory_iterator(root, ec)) { + std::error_code files_ec; + for (const auto& file : fs::directory_iterator(version_dir.path() / L"files", files_ec)) { + if (file.path().extension() != L".bin") continue; + const std::optional v = read_version(file.path()); + if (v && (*v)[0] >= MIN_DLSS_MAJOR && *v > best) best = *v, best_path = file.path(); + } + } + return best_path; +} + +/// The NVIDIA app's DLSS copied (signature checked) to \streamline\nvidia-app\nvngx_dlss.dll, the name +/// Streamline loads: that folder, or empty +fs::path use_app_model(const fs::path& app) { + const fs::path dir = exe_dir() / L"streamline" / L"nvidia-app", target = dir / L"nvngx_dlss.dll"; + std::error_code ec; + const bool current = fs::is_regular_file(target, ec) && fs::file_size(target, ec) == fs::file_size(app, ec) && + read_version(target) == read_version(app); + if (!current) { + if (!signed_by_nvidia(app)) { + logf("vk: dlss: the NVIDIA app's DLSS %s is not signed by NVIDIA", u8(app).c_str()); + return {}; + } + fs::create_directories(dir, ec); + fs::copy_file(app, target, fs::copy_options::overwrite_existing, ec); + if (ec) { + logf("vk: dlss: could not copy the NVIDIA app's DLSS to %s: %s", u8(target).c_str(), ec.message().c_str()); + return {}; + } + } + if (!signed_by_nvidia(target)) { + logf("vk: dlss: %s is not signed by NVIDIA", u8(target).c_str()); + return {}; + } + return dir; +} + +void unhook() { + if (!st.hooked) return; +#define DLSS_RESTORE(f) vkx::f = st.orig.f; + DLSS_HOOKED(DLSS_RESTORE) +#undef DLSS_RESTORE + st.hooked = false; +} + +/// Attach failed: Streamline stops, DLSS stays off +void shut(const char* why) { + unhook(); + st.shutdown(); + st.started = st.attached = false; + off(why); +} + +// DLSS checks the render size against the mode's range: the mode for this ratio +sl::DLSSMode mode_for(uint32_t render_w, uint32_t output_w) { + const float ratio = (float)render_w / (float)output_w; + return ratio >= 0.99f ? sl::DLSSMode::eDLAA : + ratio >= 0.65f ? sl::DLSSMode::eMaxQuality : + ratio >= 0.57f ? sl::DLSSMode::eBalanced : + ratio >= 0.49f ? sl::DLSSMode::eMaxPerformance : sl::DLSSMode::eUltraPerformance; +} + +// The menu's DLSS preset row, one preset for every mode: M by default (the owner's choice; Lichii kept K, as NVIDIA's own +// M and L for Performance/Ultra Performance drew thin horizontal lines there). RX_DLSS_PRESET=J|K|L|M sets the row +// (menu_init), =default: NVIDIA's choice per mode +sl::DLSSPreset preset_now() { + static const char* v = getenv("RX_DLSS_PRESET"); + if (v && !strcmp(v, "default")) return sl::DLSSPreset::eDefault; + return (sl::DLSSPreset)((uint32_t)sl::DLSSPreset::ePresetJ + (uint32_t)opts.dlss_preset); +} +std::string preset_name(sl::DLSSPreset p) { + return p == sl::DLSSPreset::eDefault ? "default" : std::string(1, (char)('A' + (uint32_t)p - 1)); +} + +sl::float4x4 identity() { + sl::float4x4 m; + m.setRow(0, {1.0f, 0.0f, 0.0f, 0.0f}); + m.setRow(1, {0.0f, 1.0f, 0.0f, 0.0f}); + m.setRow(2, {0.0f, 0.0f, 1.0f, 0.0f}); + m.setRow(3, {0.0f, 0.0f, 0.0f, 1.0f}); + return m; +} + +VkImageMemoryBarrier2 barrier(const DlssImage& i, VkAccessFlags2 src, VkAccessFlags2 dst, VkImageLayout from, VkImageLayout to) { + VkImageMemoryBarrier2 b{VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2}; + b.srcStageMask = b.dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT; + b.srcAccessMask = src, b.dstAccessMask = dst; + b.oldLayout = from, b.newLayout = to; + b.srcQueueFamilyIndex = b.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + b.image = i.image; + b.subresourceRange = {i.aspect, 0, 1, 0, 1}; + return b; +} + +void barriers(VkCommandBuffer cmd, const std::array& b) { + VkDependencyInfo d{VK_STRUCTURE_TYPE_DEPENDENCY_INFO}; + d.imageMemoryBarrierCount = (uint32_t)b.size(); + d.pImageMemoryBarriers = b.data(); + vkCmdPipelineBarrier2(cmd, &d); +} + +sl::Resource resource(const DlssImage& i, VkImageLayout layout, VkImageUsageFlags usage) { + sl::Resource r{sl::ResourceType::eTex2d, (void*)i.image, nullptr, (void*)i.view, (uint32_t)layout}; + r.width = i.width, r.height = i.height; + r.nativeFormat = (uint32_t)i.format; + r.mipLevels = r.arrayLayers = 1; + r.flags = 0; + r.usage = usage; + return r; +} + +} // namespace + +bool dlss_start() { + if (st.tried) return st.started; + st.tried = true; + // where sl.interposer.dll may be: RX_DLSS_DIR, then \streamline + std::vector dirs; + if (const char* d = getenv("RX_DLSS_DIR"); d && *d) dirs.emplace_back(d); + dirs.push_back(exe_dir() / L"streamline"); + std::error_code ec; + fs::path dir; + for (const fs::path& d : dirs) + if (fs::is_regular_file(d / L"sl.interposer.dll", ec)) { + dir = fs::absolute(d, ec); + break; + } + if (dir.empty()) { + logf("vk: dlss: no sl.interposer.dll in %s", u8(dirs.back()).c_str()); + return off("no sl.interposer.dll"); + } + const fs::path interposer = dir / L"sl.interposer.dll", model = dir / L"nvngx_dlss.dll"; + const bool has_model = fs::is_regular_file(model, ec); + if (has_model && !signed_by_nvidia(model)) { + logf("vk: dlss: %s is not signed by NVIDIA", u8(model).c_str()); + return off("nvngx_dlss.dll not signed by NVIDIA"); + } + if (!signed_by_nvidia(interposer)) { + logf("vk: dlss: %s is not signed by NVIDIA; not loading it", u8(interposer).c_str()); + return off("sl.interposer.dll not signed by NVIDIA"); + } + st.module = LoadLibraryW(interposer.c_str()); + if (!st.module) { + logf("vk: dlss: could not load %s (error %lu)", u8(interposer).c_str(), GetLastError()); + return off("sl.interposer.dll did not load"); + } + if (!(resolve("slInit", st.init) && resolve("slShutdown", st.shutdown) && + resolve("slIsFeatureSupported", st.is_feature_supported) && + resolve("slGetFeatureRequirements", st.get_feature_requirements) && + resolve("slGetFeatureVersion", st.get_feature_version) && + resolve("slGetFeatureFunction", st.get_feature_function) && + resolve("slGetNewFrameToken", st.get_new_frame_token) && resolve("slSetConstants", st.set_constants) && + resolve("slEvaluateFeature", st.evaluate_feature) && resolve("slFreeResources", st.free_resources) && + resolve("slSetVulkanInfo", st.set_vulkan_info))) { + FreeLibrary(st.module); + st.module = nullptr; + return off("sl.interposer.dll incomplete"); + } + st.plugin_dir = dir.wstring(); + // the model: the folder's nvngx_dlss.dll, or the NVIDIA app's newest when it is newer still (a tie: the folder's) + const fs::path app = find_app_model(); + const fs::path app_dir = + !app.empty() && (!has_model || read_version(app) > read_version(model)) ? use_app_model(app) : fs::path(); + const fs::path used = !app_dir.empty() ? app : has_model ? model : fs::path(); + if (!app_dir.empty()) st.model_dir = app_dir.wstring(); + if (used.empty()) + logf("vk: dlss: no nvngx_dlss.dll in %s and no DLSS %u+ from the NVIDIA app", u8(dir).c_str(), MIN_DLSS_MAJOR); + + // the plugins from the interposer's folder or NVIDIA's downloads (OTA); the model from the NVIDIA app's copy first, when used + const wchar_t* plugin_paths[] = {st.model_dir.c_str(), st.plugin_dir.c_str()}; + const sl::Feature features[] = {sl::kFeatureDLSS}; + sl::Preferences pref{}; + pref.logLevel = env_int("RX_DLSS_LOG", 0) >= 2 ? sl::LogLevel::eVerbose : sl::LogLevel::eDefault; + pref.logMessageCallback = sl_log; + pref.pathsToPlugins = st.model_dir.empty() ? plugin_paths + 1 : plugin_paths; + pref.numPathsToPlugins = st.model_dir.empty() ? 1 : 2; + pref.flags = sl::PreferenceFlags::eDisableCLStateTracking | sl::PreferenceFlags::eUseManualHooking | + sl::PreferenceFlags::eAllowOTA | sl::PreferenceFlags::eLoadDownloadedPlugins; + pref.featuresToLoad = features; + pref.numFeaturesToLoad = 1; + pref.engine = sl::EngineType::eCustom; + pref.engineVersion = "1.0"; + pref.projectId = PROJECT_ID; + pref.renderAPI = sl::RenderAPI::eVulkan; + sl::Result r = st.init(pref, sl::kSDKVersion); + if (r != sl::Result::eOk) { + logf("vk: dlss: slInit failed (result %d)", (int)r); + return off("Streamline did not start"); + } + sl::FeatureRequirements req{}; + if ((r = st.get_feature_requirements(sl::kFeatureDLSS, req)) != sl::Result::eOk) { + logf("vk: dlss: no DLSS plugin (result %d): sl.dlss.dll and sl.common.dll beside sl.interposer.dll, or the NVIDIA app", + (int)r); + st.shutdown(); + return off("no DLSS plugin"); + } + if (req.vkNumComputeQueuesRequired || req.vkNumGraphicsQueuesRequired) { + logf("vk: dlss: DLSS wants %u compute and %u graphics queues of its own", req.vkNumComputeQueuesRequired, + req.vkNumGraphicsQueuesRequired); + st.shutdown(); + return off("DLSS wants extra queues"); + } + for (uint32_t i = 0; i < req.vkNumInstanceExtensions; i++) st.inst_names.emplace_back(req.vkInstanceExtensions[i]); + bool khr_bda = false; + for (uint32_t i = 0; i < req.vkNumDeviceExtensions; i++) + khr_bda |= !strcmp(req.vkDeviceExtensions[i], VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME); + for (uint32_t i = 0; i < req.vkNumDeviceExtensions; i++) // (the KHR and EXT buffer device address cannot both be on) + if (!khr_bda || strcmp(req.vkDeviceExtensions[i], VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) + st.dev_names.emplace_back(req.vkDeviceExtensions[i]); + for (const std::string& s : st.inst_names) st.inst.push_back(s.c_str()); + for (const std::string& s : st.dev_names) st.devx.push_back(s.c_str()); + sl::FeatureVersion version{}; + st.get_feature_version(sl::kFeatureDLSS, version); + const Version mv = read_version(used).value_or(Version{}); + logf("vk: dlss: Streamline %s started from %s (DLSS %u.%u.%u.%u: %s; Streamline reports %s), %zu instance and %zu device " + "extensions", version.versionSL.toStr().c_str(), u8(dir).c_str(), mv[0], mv[1], mv[2], mv[3], u8(used).c_str(), + version.versionNGX.toStr().c_str(), st.inst.size(), st.devx.size()); + st.started = true; + st.reason = "no device yet"; + return true; +} + +const std::vector& dlss_instance_exts() { + static const std::vector none; + return st.started ? st.inst : none; +} + +const std::vector& dlss_device_exts() { + static const std::vector none; + return st.started ? st.devx : none; +} + +void dlss_attach(VkInstance instance, VkPhysicalDevice physical, VkDevice device, uint32_t queue_family) { + if (!st.started || st.attached) return; + sl::VulkanInfo info{}; + info.device = device; + info.instance = instance; + info.physicalDevice = physical; + info.computeQueueFamily = info.graphicsQueueFamily = queue_family; // (one family for both, as Hookshot's queue) + sl::Result r = st.set_vulkan_info(info); + if (r != sl::Result::eOk) { + logf("vk: dlss: slSetVulkanInfo failed (result %d)", (int)r); + return shut("Streamline did not take the device"); + } + sl::AdapterInfo adapter{}; + adapter.vkPhysicalDevice = physical; + if ((r = st.is_feature_supported(sl::kFeatureDLSS, adapter)) != sl::Result::eOk) { + logf("vk: dlss: not supported on this GPU or driver (result %d)", (int)r); + return shut("GPU not supported"); + } + void* set_options = nullptr; + if ((r = st.get_feature_function(sl::kFeatureDLSS, "slDLSSSetOptions", set_options)) != sl::Result::eOk || !set_options) { + logf("vk: dlss: no slDLSSSetOptions (result %d)", (int)r); + return shut("no slDLSSSetOptions"); + } + st.set_options = reinterpret_cast(set_options); + void* get_optimal = nullptr; // (the menu's DLSS mode labels and render sizes; standard ratios without it) + if (st.get_feature_function(sl::kFeatureDLSS, "slDLSSGetOptimalSettings", get_optimal) == sl::Result::eOk) + st.get_optimal = reinterpret_cast(get_optimal); + // manual hooking: Streamline does its per-frame work in these. RX_DLSS_NO_HOOKS=1: not routed (does DLSS-SR need them?) + if (env_int("RX_DLSS_NO_HOOKS", 0) != 1) { +#define DLSS_HOOK(f) \ + st.orig.f = vkx::f; \ + if (FARPROC p = GetProcAddress(st.module, #f)) vkx::f = reinterpret_cast(p); \ + else logf("vk: dlss: sl.interposer.dll has no %s", #f); + DLSS_HOOKED(DLSS_HOOK) +#undef DLSS_HOOK + st.hooked = true; + } + st.attached = true; + st.reason = ""; + sl::FeatureVersion version{}; // (again with the device: NGX's own number, if it differs from the start's) + st.get_feature_version(sl::kFeatureDLSS, version); + logf("vk: dlss: available, DLSS %s%s", version.versionNGX.toStr().c_str(), + st.hooked ? "" : " (RX_DLSS_NO_HOOKS: swapchain calls not routed through Streamline)"); +} + +void dlss_render_size(int mode, uint32_t ow, uint32_t oh, uint32_t& w, uint32_t& h) { + static const sl::DLSSMode modes[] = {sl::DLSSMode::eUltraPerformance, sl::DLSSMode::eMaxPerformance, sl::DLSSMode::eBalanced, + sl::DLSSMode::eMaxQuality, sl::DLSSMode::eDLAA}; + static const float ratios[] = {1.0f / 3.0f, 0.5f, 0.58f, 2.0f / 3.0f, 1.0f}; + mode = std::min(std::max(mode, 0), 4); + w = (uint32_t)(ow * ratios[mode] + 0.5f), h = (uint32_t)(oh * ratios[mode] + 0.5f); + static uint32_t got_w[5], got_h[5], got_ow, got_oh; // (asked once per output size) + if (!st.get_optimal || !dlss_available()) return; + if (got_ow != ow || got_oh != oh) std::fill_n(got_w, 5, 0u), got_ow = ow, got_oh = oh; + if (!got_w[mode]) { + sl::DLSSOptions o{}; + o.mode = modes[mode], o.outputWidth = ow, o.outputHeight = oh; + sl::DLSSOptimalSettings s{}; + if (st.get_optimal(o, s) == sl::Result::eOk && s.optimalRenderWidth && s.optimalRenderHeight) + got_w[mode] = s.optimalRenderWidth, got_h[mode] = s.optimalRenderHeight; + else + got_w[mode] = w, got_h[mode] = h; + } + w = got_w[mode], h = got_h[mode]; +} + +bool dlss_available() { + return st.started && st.attached && !st.failed; +} + +const char* dlss_reason() { + return st.reason; +} + +void dlss_stop() { + if (!st.started) return; + if (st.attached) st.free_resources(sl::kFeatureDLSS, sl::ViewportHandle{0u}); + unhook(); + const sl::Result r = st.shutdown(); + st.started = st.attached = false; + if (!st.failed) st.reason = "stopped"; + logf("vk: dlss: stopped (result %d)", (int)r); +} + +bool dlss_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& depth, const DlssImage& motion, + const DlssImage& output, bool reset, uint32_t frame_index) { + if (!dlss_available()) return false; + const sl::DLSSPreset preset = preset_now(); // (the menu's row: a change applies at once, history reset) + static const char* const mode_names[] = {"off", "Performance", "Balanced", "Quality", "Ultra Performance", "Ultra Quality", "DLAA"}; + const sl::ViewportHandle viewport{0u}; + const bool changed = !st.options_set || st.preset != preset || st.rw != color.width || st.rh != color.height || + st.ow != output.width || st.oh != output.height; + reset = reset || changed; + sl::Result r = sl::Result::eOk; + const char* stage = nullptr; + if (changed) { + // LDR: the game's colour is tonemapped already, so no HDR and no auto exposure + sl::DLSSOptions o{}; + o.mode = mode_for(color.width, output.width); + o.outputWidth = output.width, o.outputHeight = output.height; + o.colorBuffersHDR = sl::Boolean::eFalse; + o.useAutoExposure = sl::Boolean::eFalse; + sl::DLSSPreset use = preset; + const auto set = [&] { + o.dlaaPreset = o.qualityPreset = o.balancedPreset = o.performancePreset = o.ultraPerformancePreset = + o.ultraQualityPreset = use; + return st.set_options(viewport, o); + }; + if ((r = set()) != sl::Result::eOk && use != sl::DLSSPreset::ePresetK) { // (K: in every DLSS from 310) + logf("vk: dlss: preset %s not accepted (result %d): K", preset_name(use).c_str(), (int)r); + use = sl::DLSSPreset::ePresetK; + r = set(); + } + logf("vk: dlss: %ux%u -> %ux%u, mode %s, preset %s", color.width, color.height, output.width, output.height, + mode_names[(uint32_t)o.mode], preset_name(use).c_str()); + if (r != sl::Result::eOk) stage = "slDLSSSetOptions"; + else st.options_set = true, st.preset = preset, st.rw = color.width, st.rh = color.height, st.ow = output.width, + st.oh = output.height; + } + sl::FrameToken* frame = nullptr; + if (!stage && ((r = st.get_new_frame_token(frame, &frame_index)) != sl::Result::eOk || !frame)) stage = "slGetNewFrameToken"; + if (!stage) { + constexpr VkImageUsageFlags out_usage = VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + constexpr VkAccessFlags2 any = VK_ACCESS_2_MEMORY_READ_BIT | VK_ACCESS_2_MEMORY_WRITE_BIT; + constexpr VkAccessFlags2 dlss_out = VK_ACCESS_2_SHADER_READ_BIT | VK_ACCESS_2_SHADER_WRITE_BIT | VK_ACCESS_2_TRANSFER_WRITE_BIT; + constexpr VkImageLayout G = VK_IMAGE_LAYOUT_GENERAL, R = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + // the inputs as sampled images for DLSS; the output (GENERAL) waits for whatever used it last + barriers(cmd, {barrier(color, VK_ACCESS_2_MEMORY_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, G, R), + barrier(depth, VK_ACCESS_2_MEMORY_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, G, R), + barrier(motion, VK_ACCESS_2_MEMORY_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, G, R), + barrier(output, any, dlss_out, G, G)}); + + // DLSS-SR reads only the jitter, motion and depth conventions; the camera fields are frame generation's + const float rw = (float)color.width, rh = (float)color.height; + sl::Constants c{}; + c.cameraViewToClip = c.clipToCameraView = c.clipToLensClip = c.clipToPrevClip = c.prevClipToClip = identity(); + c.jitterOffset = {0.0f, 0.0f}; + c.mvecScale = {1.0f / rw, 1.0f / rh}; // (motion in render pixels; Streamline wants [-1,1] screen units) + c.cameraPinholeOffset = {0.0f, 0.0f}; + c.cameraPos = {0.0f, 0.0f, 0.0f}; + c.cameraUp = {0.0f, 1.0f, 0.0f}; + c.cameraRight = {1.0f, 0.0f, 0.0f}; + c.cameraFwd = {0.0f, 0.0f, 1.0f}; + c.cameraNear = 0.1f, c.cameraFar = 1000.0f, c.cameraFOV = 1.0f, c.cameraAspectRatio = rw / rh; + c.depthInverted = sl::Boolean::eFalse; + c.cameraMotionIncluded = sl::Boolean::eTrue; + c.motionVectors3D = sl::Boolean::eFalse; + c.reset = reset ? sl::Boolean::eTrue : sl::Boolean::eFalse; + c.motionVectorsJittered = sl::Boolean::eFalse; + if ((r = st.set_constants(c, *frame, viewport)) != sl::Result::eOk) { + stage = "slSetConstants"; + } else { + sl::Resource rc = resource(color, R, VK_IMAGE_USAGE_SAMPLED_BIT), rd = resource(depth, R, VK_IMAGE_USAGE_SAMPLED_BIT), + rm = resource(motion, R, VK_IMAGE_USAGE_SAMPLED_BIT), ro = resource(output, G, out_usage); + const sl::Extent render_area{0, 0, color.width, color.height}, output_area{0, 0, output.width, output.height}; + // local tags: everything stays put until the evaluation is recorded + sl::ResourceTag tc{&rc, sl::kBufferTypeScalingInputColor, sl::ResourceLifecycle::eValidUntilEvaluate, &render_area}, + td{&rd, sl::kBufferTypeDepth, sl::ResourceLifecycle::eValidUntilEvaluate, &render_area}, + tm{&rm, sl::kBufferTypeMotionVectors, sl::ResourceLifecycle::eValidUntilEvaluate, &render_area}, + to{&ro, sl::kBufferTypeScalingOutputColor, sl::ResourceLifecycle::eValidUntilEvaluate, &output_area}; + const sl::BaseStructure* inputs[] = {&viewport, &tc, &td, &tm, &to}; + if ((r = st.evaluate_feature(sl::kFeatureDLSS, *frame, inputs, (uint32_t)std::size(inputs), + reinterpret_cast(cmd))) != sl::Result::eOk) + stage = "slEvaluateFeature"; + } + // back to GENERAL, the output written (also when the evaluation failed: the caller's layouts hold) + barriers(cmd, {barrier(color, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), barrier(depth, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), + barrier(motion, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), barrier(output, dlss_out, any, G, G)}); + } + if (stage) { + st.failed = true; + st.reason = "DLSS evaluation failed"; + logf("vk: dlss: %s failed (result %d): off from now on", stage, (int)r); + return false; + } + return true; +} + +} // namespace mkwvk + +#else // (Streamline is Windows only) + +namespace mkwvk { +bool dlss_start() { return false; } +const std::vector& dlss_instance_exts() { static const std::vector none; return none; } +const std::vector& dlss_device_exts() { static const std::vector none; return none; } +void dlss_attach(VkInstance, VkPhysicalDevice, VkDevice, uint32_t) {} +bool dlss_available() { return false; } +void dlss_render_size(int, uint32_t ow, uint32_t oh, uint32_t& w, uint32_t& h) { w = ow, h = oh; } +const char* dlss_reason() { return "Windows only"; } +void dlss_stop() {} +bool dlss_evaluate(VkCommandBuffer, const DlssImage&, const DlssImage&, const DlssImage&, const DlssImage&, bool, uint32_t) { + return false; +} +} // namespace mkwvk + +#endif diff --git a/gpu/vk/vk_dlss.h b/gpu/vk/vk_dlss.h new file mode 100644 index 000000000..8993fdf23 --- /dev/null +++ b/gpu/vk/vk_dlss.h @@ -0,0 +1,42 @@ +// NVIDIA DLSS super resolution through NVIDIA Streamline (vk_dlss.cpp), manual hooking. Only Streamline's MIT headers are +// built in (third_party/streamline); sl.interposer.dll and NVIDIA's DLSS are loaded from the user's PC at run time and none +// ship with Hookshot. Ported from Lichii (Eden lineage; Duck912's Eglantine work), GPL-3.0-or-later. +#pragma once + +#include +#include + +#include "vk_loader.h" + +namespace mkwvk { + +/// At start, before create_instance: sl.interposer.dll from RX_DLSS_DIR, else \streamline\ (signatures checked; +/// the NVIDIA app's newest DLSS when newer than the nvngx_dlss.dll there, or there is none), slInit with manual hooking. +/// True when started +bool dlss_start(); +const std::vector& dlss_instance_exts(); // (empty unless started) +const std::vector& dlss_device_exts(); // (empty unless started) +/// After vkCreateDevice + load_device: the device to Streamline, and the six swapchain/present/wait functions routed to +/// its proxies (RX_DLSS_NO_HOOKS=1: not). On failure Streamline stops and DLSS stays unavailable (dlss_reason) +void dlss_attach(VkInstance instance, VkPhysicalDevice physical, VkDevice device, uint32_t queue_family); +bool dlss_available(); // (started, attached, no evaluation failed) +/// The render size for the menu's DLSS mode (0 Ultra Performance, 1 Performance, 2 Balanced, 3 Quality, 4 DLAA) at an output of +/// ow x oh: slDLSSGetOptimalSettings's, else NVIDIA's standard ratios (1/3, 1/2, 0.58, 2/3, 1) +void dlss_render_size(int mode, uint32_t ow, uint32_t oh, uint32_t& w, uint32_t& h); +const char* dlss_reason(); // (why not, short: the menu and the log) +void dlss_stop(); // (before the device goes; safe when never started) + +struct DlssImage { + VkImage image; + VkImageView view; + VkFormat format; + uint32_t width, height; + VkImageAspectFlags aspect; +}; +/// Records one DLSS evaluation on cmd: color, depth and motion at the render size, output at the output size (STORAGE | +/// SAMPLED | TRANSFER_SRC | TRANSFER_DST, the caller's). All in GENERAL before and after. False when Streamline failed (then +/// never again: dlss_available() is false from then on) +bool dlss_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& depth, const DlssImage& motion, + const DlssImage& output, bool reset, uint32_t frame_index); + +} // namespace mkwvk diff --git a/gpu/vk/vk_draw.cpp b/gpu/vk/vk_draw.cpp index 51b6f17ca..f1f03411b 100644 --- a/gpu/vk/vk_draw.cpp +++ b/gpu/vk/vk_draw.cpp @@ -7,6 +7,8 @@ // // Pipelines persist in a VkPipelineCache next to the executable (mkw_vk_pipelines.bin). #include +#include +#include #include #include #include @@ -40,6 +42,12 @@ #include "shaders/clear_vert_spv.h" #include "shaders/taau_upscale_comp_spv.h" #include "shaders/movie_upscale_comp_spv.h" +#include "shaders/dlss_motion_comp_spv.h" +#include "shaders/dlss_color_comp_spv.h" +#include "shaders/dlss_output_comp_spv.h" +#include "shaders/dlss_debug_comp_spv.h" +#include "vk_dlss.h" +#include "vk_menu.h" #include "shader_recompiler/backend/spirv/mma_layout.h" #include "vk_work.h" // (after the others: counts the commands that do GPU work, for full_barrier) @@ -4619,6 +4627,8 @@ void bind_index(VkCommandBuffer cmd, VkBuffer buffer, VkDeviceSize offset, VkInd vkCmdBindIndexBuffer(cmd, buffer, offset, type); last_ib = {b, (uint64_t)offset, (uint32_t)type, true}; } +void dlss_note_camera(const NvnState& s, const Targets& at); // (below, with the DLSS frame code) +bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p); void draw(VkCommandBuffer cmd, NvnState& s, const DrawArgs& d) { PROF(PROF_DRAW); @@ -4633,6 +4643,7 @@ void draw(VkCommandBuffer cmd, NvnState& s, const DrawArgs& d) { } const Targets at = bare_targets(s, targets(s)); if (!at.width || !at.height) SKIP_HERE(); + dlss_note_camera(s, at); // (hookshot: the scene camera, for DLSS's motion) uint8_t types[8]; for (int i = 0; i < 8; i++) { const VkFormat f = i < at.n ? at.color_format[i] : VK_FORMAT_UNDEFINED; @@ -5584,6 +5595,362 @@ bool taau_stand_in(VkCommandBuffer cmd, const NvnState& s, const Program& p) { return typed_upscale(cmd, dw.imgs[0].imageView, dw.imgs[ntex].imageView, out, level, p.key, keys, true); } +// ---- (hookshot) NVIDIA DLSS in place of OoT's gameplay upscale (vk_dlss.cpp has Streamline; this, the frame's part) ---- +// Ported from Lichii (Eden lineage; Duck912's Eglantine work), GPL-3.0-or-later: vk_ocarina_camera_motion.cpp, TryOcarinaDlss. +// The game's chain after its tonemap draw (B10G11R11 at the render size: twelfths of 2048x1152, the Resolution row's or, with DLSS +// on, the DLSS mode's; 1536x864 at 75%), seen in +// frame dumps: 26fe0c70ab9fc547 (a quarter-size pass over the tonemapped scene) -> 685adb41edc19de7 -> 6637ac1d052d22d4 (the +// network's input: the scene square-root encoded, RGB9E5, over the scene's colour target) -> fd029a317a9a4b94 (the network: +// a 4/3 upscale with its sharpening, B10G11R11 at 2048x1152, under the HUD; then the HUD, and a plain copy into the window +// texture, whose 2048x1152 crop the present scales: no FSR, no other upscale or sharpening). What the first three write feeds only +// the next (their images alias depth targets the next frame draws first). On a DLSS frame none of the four runs: at the first, the +// tonemapped scene becomes DLSS's colour; at the last, DLSS (with depth and the camera's motion) writes the network's target. +// The fallback, with its reason logged: the game's whole chain (the decision is made at its first pass), or, when DLSS fails after +// that, a linear upscale for the frame. +namespace { +constexpr uint64_t kChainFirst = 0x26fe0c70ab9fc547ull, kChainMid1 = 0x685adb41edc19de7ull, kChainMid2 = 0x6637ac1d052d22d4ull, + kChainNet = 0xfd029a317a9a4b94ull; +// (the network has one variant per input size, all to the same 2048x1152 target; the game draws at twelfths of it: 2048x1152 +// 9dc98871eb7fc101, 1536x864 fd029a317a9a4b94, 1366x768 6676619641320ba7, 1195x672 f10782f9e58b6a7c, 1024x576 +// 72ba090c70fe2614, 683x384 0775215f8da720e6 (frame dumps at each scale). Any other dispatch right after the three prepasses +// that writes a B10G11R11 target of at least the render size is taken as the network too: the sizes not seen) +bool chain_net(uint64_t k) { + return k == kChainNet || k == 0x0775215f8da720e6ull || k == 0xf10782f9e58b6a7cull || k == 0x9dc98871eb7fc101ull || + k == 0x72ba090c70fe2614ull || k == 0x6676619641320ba7ull; +} +using Mat = std::array; +struct DlssCamera { + uint64_t frame = ~0ull; + Texture* depth = nullptr; + VkImageView depth_view = VK_NULL_HANDLE; + uint32_t w = 0, h = 0; + Mat cur{}, prev{}; +}; +struct DlssImg { + VkImage image = VK_NULL_HANDLE; + VmaAllocation mem = nullptr; + VkImageView view = VK_NULL_HANDLE; + uint32_t w = 0, h = 0; +}; +struct DlssState { + DlssCamera cam, used; // (the frame's camera, and the one the armed frame took) + bool armed = false; // (the chain's first pass was left out: its last must be replaced) + uint64_t last_frame = ~0ull; + Mat last_vp{}; + uint32_t evals = 0; + DlssImg color, motion, out, prev; // (prev: last frame's colour, RX_DLSS_DEBUG 3/4 only) + VkPipeline motion_pipe = VK_NULL_HANDLE, color_pipe = VK_NULL_HANDLE, output_pipe = VK_NULL_HANDLE, debug_pipe = VK_NULL_HANDLE; + VkPipelineLayout layout = VK_NULL_HANDLE, debug_layout = VK_NULL_HANDLE; + uint32_t resets = 0, cuts = 0; // (in the last 600 evaluations: history dropped, and of those the camera cuts) + VkSampler nearest = VK_NULL_HANDLE, linear = VK_NULL_HANDLE; + const char* reason = nullptr; // (the last fallback's) + uint64_t repeats = 0; + bool ready = false, made = false; +}; +DlssState ds; // ponytail: one set of images, no lock: the replay records one frame at a time (RX_VK_PARALLEL would need ParLock here) + +bool dlss_on() { return opts.dlss && dlss_available(); } +// RX_DLSS_DEBUG=1..4 (dlss_debug.comp): motion, depth, or the reprojection error with and without the motion, drawn in place of +// DLSS's output (DLSS still runs) +int dlss_debug() { static const int v = getenv("RX_DLSS_DEBUG") ? atoi(getenv("RX_DLSS_DEBUG")) : 0; return v; } // (the menu's Off takes effect at once; On needs the start's Streamline) + +/// Logged when the reason changes and every 600th repeat: the game's chain draws this frame +void dlss_fallback(const char* why) { + if (why != ds.reason || ++ds.repeats % 600 == 0) + logf("vk: dlss: the game's upscale draws frame %llu (%s)", (unsigned long long)texture_frame_no(), why); + if (why != ds.reason) ds.reason = why, ds.repeats = 0; +} + +/// (Lichii's ClipToPreviousClip) depth reprojected from the current clip space into the previous camera's +bool clip_to_previous(const Mat& current, const Mat& previous, Mat& out) { + double rows[4][8]{}; + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) rows[i][j] = current[i * 4 + j]; + rows[i][i + 4] = 1.0; + } + for (int col = 0; col < 4; col++) { + int pivot = col; + for (int r = col + 1; r < 4; r++) + if (std::abs(rows[r][col]) > std::abs(rows[pivot][col])) pivot = r; + std::swap(rows[col], rows[pivot]); + const double d = rows[col][col]; + if (!std::isfinite(d) || std::abs(d) < 1e-10) return false; + for (double& v : rows[col]) v /= d; + for (int r = 0; r < 4; r++) + if (r != col) { + const double k = rows[r][col]; + for (int i = 0; i < 8; i++) rows[r][i] -= k * rows[col][i]; + } + } + for (int r = 0; r < 4; r++) + for (int c = 0; c < 4; c++) { + double v = 0; + for (int i = 0; i < 4; i++) v += previous[r * 4 + i] * rows[i][c + 4]; + out[r * 4 + c] = (float)v; + if (!std::isfinite(out[r * 4 + c])) return false; + } + return true; +} + +bool dlss_image(DlssImg& im, uint32_t w, uint32_t h, VkFormat format, VkImageUsageFlags usage, VkCommandBuffer cmd) { + if (im.image && im.w == w && im.h == h) return true; + im = {}; // (the one before is kept: work in flight may still use it, and the sizes seldom change) + VkImageCreateInfo ic{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; + ic.imageType = VK_IMAGE_TYPE_2D, ic.format = format, ic.extent = {w, h, 1}, ic.mipLevels = 1, ic.arrayLayers = 1; + ic.samples = VK_SAMPLE_COUNT_1_BIT, ic.tiling = VK_IMAGE_TILING_OPTIMAL, ic.usage = usage; + if (!create_image(ic, im.image, im.mem)) return im = {}, false; + VkImageViewCreateInfo vc{VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO}; + vc.image = im.image, vc.viewType = VK_IMAGE_VIEW_TYPE_2D, vc.format = format, vc.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}; + if (vkCreateImageView(dev.device, &vc, nullptr, &im.view) != VK_SUCCESS) return im = {}, false; + VkImageMemoryBarrier2 ib{VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2}; // (UNDEFINED -> GENERAL, once) + ib.srcStageMask = VK_PIPELINE_STAGE_2_NONE, ib.dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT; + ib.dstAccessMask = VK_ACCESS_2_MEMORY_READ_BIT | VK_ACCESS_2_MEMORY_WRITE_BIT; + ib.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED, ib.newLayout = VK_IMAGE_LAYOUT_GENERAL; + ib.srcQueueFamilyIndex = ib.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + ib.image = im.image, ib.subresourceRange = vc.subresourceRange; + VkDependencyInfo di{VK_STRUCTURE_TYPE_DEPENDENCY_INFO}; + di.imageMemoryBarrierCount = 1, di.pImageMemoryBarriers = &ib; + vkCmdPipelineBarrier2(cmd, &di); + im.w = w, im.h = h; + return true; +} + +/// The three passes' pipelines (binding 0 a sampled image, 1 a storage image, 64 bytes pushed), once +bool dlss_pipelines() { + if (ds.made) return ds.ready; + ds.made = true; + if (!dev.push_descriptor || !vkCmdPushDescriptorSetKHR) return false; + VkDescriptorSetLayoutBinding b[2] = {{0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}, + {1, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}}; + VkDescriptorSetLayoutCreateInfo li{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO}; + li.flags = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, li.bindingCount = 2, li.pBindings = b; + VkDescriptorSetLayout set{}; + if (vkCreateDescriptorSetLayout(dev.device, &li, nullptr, &set) != VK_SUCCESS) return false; + const VkPushConstantRange pr{VK_SHADER_STAGE_COMPUTE_BIT, 0, 64}; + VkPipelineLayoutCreateInfo pi{VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO}; + pi.setLayoutCount = 1, pi.pSetLayouts = &set, pi.pushConstantRangeCount = 1, pi.pPushConstantRanges = ≺ + if (vkCreatePipelineLayout(dev.device, &pi, nullptr, &ds.layout) != VK_SUCCESS) return false; + const auto make = [](const uint32_t* code, size_t bytes) { + VkShaderModuleCreateInfo mi{VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO}; + mi.codeSize = bytes, mi.pCode = code; + VkShaderModule m{}; + if (vkCreateShaderModule(dev.device, &mi, nullptr, &m) != VK_SUCCESS) return VkPipeline(VK_NULL_HANDLE); + VkComputePipelineCreateInfo ci{VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO}; + ci.stage = {VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, nullptr, 0, VK_SHADER_STAGE_COMPUTE_BIT, m, "main", nullptr}; + ci.layout = ds.layout; + VkPipeline pl = VK_NULL_HANDLE; + if (vkCreateComputePipelines(dev.device, VK_NULL_HANDLE, 1, &ci, nullptr, &pl) != VK_SUCCESS) pl = VK_NULL_HANDLE; + vkDestroyShaderModule(dev.device, m, nullptr); + return pl; + }; + ds.motion_pipe = make(DLSS_MOTION_COMP_SPV, sizeof DLSS_MOTION_COMP_SPV); + ds.color_pipe = make(DLSS_COLOR_COMP_SPV, sizeof DLSS_COLOR_COMP_SPV); + ds.output_pipe = make(DLSS_OUTPUT_COMP_SPV, sizeof DLSS_OUTPUT_COMP_SPV); + VkSamplerCreateInfo si{VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO}; + si.addressModeU = si.addressModeV = si.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + vkCreateSampler(dev.device, &si, nullptr, &ds.nearest); + si.magFilter = si.minFilter = VK_FILTER_LINEAR; + vkCreateSampler(dev.device, &si, nullptr, &ds.linear); + ds.ready = ds.motion_pipe && ds.color_pipe && ds.output_pipe && ds.nearest && ds.linear; + if (ds.ready && dlss_debug()) { // (four sampled images and the target) + VkDescriptorSetLayoutBinding db[5]; + for (uint32_t i = 0; i < 5; i++) + db[i] = {i, i < 4 ? VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER : VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}; + li.bindingCount = 5, li.pBindings = db; + VkDescriptorSetLayout dset{}; + pi.pSetLayouts = &dset; + if (vkCreateDescriptorSetLayout(dev.device, &li, nullptr, &dset) == VK_SUCCESS && + vkCreatePipelineLayout(dev.device, &pi, nullptr, &ds.debug_layout) == VK_SUCCESS) { + std::swap(ds.layout, ds.debug_layout); + ds.debug_pipe = make(DLSS_DEBUG_COMP_SPV, sizeof DLSS_DEBUG_COMP_SPV); + std::swap(ds.layout, ds.debug_layout); + } + logf("vk: dlss: RX_DLSS_DEBUG=%d: %s", dlss_debug(), ds.debug_pipe ? "its view replaces DLSS's output" : "its pipeline was not made"); + } + if (!ds.ready) logf("vk: dlss: its passes' pipelines were not made"); + return ds.ready; +} + +void dlss_pass(VkCommandBuffer cmd, VkPipeline pipe, VkSampler sampler, VkImageView in, VkImageView out, uint32_t w, uint32_t h, + const void* push) { + const VkDescriptorImageInfo ii{sampler, in, VK_IMAGE_LAYOUT_GENERAL}, oi{VK_NULL_HANDLE, out, VK_IMAGE_LAYOUT_GENERAL}; + VkWriteDescriptorSet wr[2]{{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET}, {VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET}}; + wr[0].dstBinding = 0, wr[0].descriptorCount = 1, wr[0].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, wr[0].pImageInfo = ⅈ + wr[1].dstBinding = 1, wr[1].descriptorCount = 1, wr[1].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, wr[1].pImageInfo = &oi; + vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, pipe); + vkCmdPushDescriptorSetKHR(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, ds.layout, 0, 2, wr); + if (push) vkCmdPushConstants(cmd, ds.layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, 64, push); + vkCmdDispatch(cmd, (w + 7) / 8, (h + 7) / 8, 1); +} +/// RX_DLSS_DEBUG: its view into the network's target (out), then this frame's colour kept as the next one's previous +bool dlss_debug_pass(VkCommandBuffer cmd, VkImageView out, uint32_t w, uint32_t h, const DlssCamera& cam) { + if (!ds.debug_pipe || !dlss_image(ds.prev, ds.color.w, ds.color.h, VK_FORMAT_R16G16B16A16_SFLOAT, + VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, cmd)) + return false; + VkDescriptorImageInfo ii[5] = {{ds.nearest, ds.color.view, VK_IMAGE_LAYOUT_GENERAL}, {ds.nearest, ds.motion.view, VK_IMAGE_LAYOUT_GENERAL}, + {ds.nearest, cam.depth_view, VK_IMAGE_LAYOUT_GENERAL}, {ds.linear, ds.prev.view, VK_IMAGE_LAYOUT_GENERAL}, + {VK_NULL_HANDLE, out, VK_IMAGE_LAYOUT_GENERAL}}; + VkWriteDescriptorSet wr[5]; + for (uint32_t i = 0; i < 5; i++) { + wr[i] = {VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET}; + wr[i].dstBinding = i, wr[i].descriptorCount = 1, wr[i].pImageInfo = &ii[i]; + wr[i].descriptorType = i < 4 ? VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER : VK_DESCRIPTOR_TYPE_STORAGE_IMAGE; + } + const int32_t push[16] = {dlss_debug()}; + vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, ds.debug_pipe); + vkCmdPushDescriptorSetKHR(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, ds.debug_layout, 0, 5, wr); + vkCmdPushConstants(cmd, ds.debug_layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, 64, push); + vkCmdDispatch(cmd, (w + 7) / 8, (h + 7) / 8, 1); + std::swap(ds.color, ds.prev); // (the next frame's colour goes into the other image) + return true; +} +} // namespace + +/// From draw(): the scene camera (Lichii's TrackOcarinaCamera): vertex constant buffer 3 of a draw into a B10G11R11 target of at +/// least 640x360 with D32 depth, whose +0x120/+0x124 are the target's size and +0xa8/+0xac -1 and 0; current view-projection at +/// +0x30, the previous frame's at +0x180. The largest such target of the frame +void dlss_note_camera(const NvnState& s, const Targets& at) { + if (!dlss_on() || at.n < 1 || !at.color[0] || at.color_format[0] != VK_FORMAT_B10G11R11_UFLOAT_PACK32 || at.width < 640 || + at.height < 360 || !at.depth || at.depth_format != VK_FORMAT_D32_SFLOAT || at.samples != VK_SAMPLE_COUNT_1_BIT || + at.depth_level || at.depth_layer || !at.depth_view) + return; + const uint64_t now = texture_frame_no(); + if (ds.cam.frame == now && (uint64_t)at.width * at.height <= (uint64_t)ds.cam.w * ds.cam.h) return; + const nvn_p_bind_buf& u = s.ubo[0][0]; // (Maxwell's cbuf 3 of the vertex stage) + float c[0x230 / 4]; + if (!u.addr || (u.size && u.size < sizeof c) || !ub_read(u.addr, c, sizeof c)) return; + if (c[0x120 / 4] != (float)at.width || c[0x124 / 4] != (float)at.height || c[0xa8 / 4] != -1.0f || c[0xac / 4] != 0.0f) return; + // (a sampled view: at.depth_view is the attachment's, made with only the depth-attachment usage, and read through it the + // depth came back 0 everywhere: every pixel at the near plane, so any camera move gave huge motion, the ghosting) + const VkImageView depth = texture_view(at.depth, s.rt.depth, s.rt.has_dview ? &s.rt.dview : nullptr, VK_IMAGE_VIEW_TYPE_2D, ViewUse::Sample); + if (!depth) return; + ds.cam.frame = now, ds.cam.depth = at.depth, ds.cam.depth_view = depth, ds.cam.w = at.width, ds.cam.h = at.height; + std::copy_n(c + 0x30 / 4, 16, ds.cam.cur.begin()); + std::copy_n(c + 0x180 / 4, 16, ds.cam.prev.begin()); +} + +/// DLSS's colour for this frame into ds.color (encode: square-root encode it, the tonemapped scene; else the network's own input, +/// encoded already), with the checks that decide the frame; ds.used the camera it goes with. False: the game's passes run +bool dlss_take_colour(VkCommandBuffer cmd, const Program& p, bool encode) { + if (ds.cam.frame != texture_frame_no()) return dlss_fallback("no scene camera this frame"), false; + const Texture* src = draw_sampled.empty() ? nullptr : draw_sampled[0]; + if (p.stages.empty() || p.stages[0].info.texture_descriptors.empty() || dw.imgs.empty() || !dw.imgs[0].imageView || !src || + src->format != VK_FORMAT_B10G11R11_UFLOAT_PACK32 || src->samples != VK_SAMPLE_COUNT_1_BIT) + return dlss_fallback("unexpected bindings"), false; + if (src->width != ds.cam.w || src->height != ds.cam.h) return dlss_fallback("the scene colour is not the camera's size"), false; + if (!ds.cam.depth || !ds.cam.depth->image || ds.cam.depth->width != ds.cam.w || ds.cam.depth->height != ds.cam.h) + return dlss_fallback("no scene depth at the camera's size"), false; + if (!dlss_pipelines()) return dlss_fallback("no pipelines"), false; + if (!dlss_image(ds.color, ds.cam.w, ds.cam.h, VK_FORMAT_R16G16B16A16_SFLOAT, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, cmd) || + !dlss_image(ds.motion, ds.cam.w, ds.cam.h, VK_FORMAT_R16G16_SFLOAT, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, cmd)) + return dlss_fallback("images not made"), false; + int32_t push[16] = {encode ? 1 : 0}; + gprof_begin(cmd); + full_barrier(cmd); + dlss_pass(cmd, ds.color_pipe, ds.nearest, dw.imgs[0].imageView, ds.color.view, ds.cam.w, ds.cam.h, push); + full_barrier(cmd); + gprof_end(cmd, "dlss: colour"); + descriptors_disturbed(); + ds.used = ds.cam; + return true; +} + +/// From dispatch(), the program's descriptors built: true when the dispatch is replaced (the network on a DLSS frame; with +/// unless RX_DLSS_KEEP_PREPASSES=1, the chain's first three passes too) +bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { + const bool pre = p.key == kChainFirst || p.key == kChainMid1 || p.key == kChainMid2; + const bool known = chain_net(p.key); + if ((!pre && !known && !ds.armed) || !dlss_on()) return false; + // (the first three prepare the network's input and feed nothing else: left out, DLSS takes the tonemapped scene, square-root + // encoded here as they do. The same picture as with them (means within 1% in the A/B, docs in the DLSS report). + // RX_DLSS_KEEP_PREPASSES=1: they run and DLSS takes the network's input, as Lichii does) + static const bool skip_pre = !(getenv("RX_DLSS_KEEP_PREPASSES") && atoi(getenv("RX_DLSS_KEEP_PREPASSES")) != 0); + if (pre) { + if (!skip_pre) return false; + if (p.key == kChainFirst) ds.armed = dlss_take_colour(cmd, p, true); + return ds.armed; + } + if (!known && !skip_pre) return false; // (unknown networks by their place only: with the prepasses left out) + const bool armed = ds.armed; // (the network's input was never made: whatever happens, the network cannot run) + if (skip_pre ? !armed : !dlss_take_colour(cmd, p, false)) return false; + const uint64_t now = texture_frame_no(); + // the network's target, as taau_stand_in finds it + const Stage& st = p.stages[0]; + size_t ntex = 0; + for (const auto& d : st.info.texture_descriptors) ntex += d.count; + Texture* out = nullptr; + uint32_t level = 0; + const uint32_t handle = st.info.image_descriptors.empty() ? 0 : handle_of(s, st, st.info.image_descriptors[0], 0); + if (handle) texture_view_of(handle, VK_IMAGE_VIEW_TYPE_2D, ViewUse::Storage, image_format(st.info.image_descriptors[0].format), &out, &level); + if (!out || level || dw.imgs.size() <= ntex || !dw.imgs[ntex].imageView || out->format != VK_FORMAT_B10G11R11_UFLOAT_PACK32 || + out->width < ds.used.w || out->height < ds.used.h) { + if (!known) return false; // (not the network after all: it runs, the chain stays armed) + ds.armed = false; + if (!armed) return dlss_fallback("the network's target is not the expected B10G11R11 image"), false; + logf("vk: dlss: frame %llu: the network's target is not the expected B10G11R11 image: left as it was", (unsigned long long)now); + return true; + } + ds.armed = false; + if (!known) { + static uint64_t logged; + if (logged != p.key) logged = p.key, logf("vk: dlss: network %016llx (not a known one) taken by its place in the chain", (unsigned long long)p.key); + } + const uint32_t ow = out->width, oh = out->height, rw = ds.used.w, rh = ds.used.h; + gprof_begin(cmd); + full_barrier(cmd); + bool ok = dlss_image(ds.out, ow, oh, VK_FORMAT_R16G16B16A16_SFLOAT, + VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, cmd); + Mat clip{}; + const bool have_motion = clip_to_previous(ds.used.cur, ds.used.prev, clip); + if (ok && have_motion) { + dlss_pass(cmd, ds.motion_pipe, ds.nearest, ds.used.depth_view, ds.motion.view, rw, rh, clip.data()); + full_barrier(cmd); + bool same_camera = true; // (a camera cut: the previous matrix is not last frame's current one) + for (int i = 0; i < 16; i++) same_camera = same_camera && std::abs(ds.used.prev[i] - ds.last_vp[i]) < 0.001f; + const bool reset = ds.last_frame == ~0ull || now != ds.last_frame + 1 || !same_camera; + ds.resets += reset, ds.cuts += reset && !same_camera; + if (dlss_debug() && ds.evals >= 1500 && ds.evals < 1512) { // (the camera of 12 frames: a jitter would move [0][3]/[1][3] by ~1/w) + const Mat& m = ds.used.cur; + logf("vk: dlss: debug: frame %llu camera %.6g %.6g %.6g %.6g | %.6g %.6g %.6g %.6g | %.6g %.6g %.6g %.6g | %.6g %.6g %.6g %.6g", + (unsigned long long)now, m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); + } + if (ds.evals % 600 == 599) { // (a cut every frame would mean +0x180 is not last frame's camera: no history, no ghosting) + logf("vk: dlss: the last 600 frames: %u history resets, %u of them camera cuts", ds.resets, ds.cuts); + ds.resets = ds.cuts = 0; + } + const DlssImage color{ds.color.image, ds.color.view, VK_FORMAT_R16G16B16A16_SFLOAT, rw, rh, VK_IMAGE_ASPECT_COLOR_BIT}; + const DlssImage depth{ds.used.depth->image, ds.used.depth_view, VK_FORMAT_D32_SFLOAT, rw, rh, VK_IMAGE_ASPECT_DEPTH_BIT}; + const DlssImage motion{ds.motion.image, ds.motion.view, VK_FORMAT_R16G16_SFLOAT, rw, rh, VK_IMAGE_ASPECT_COLOR_BIT}; + const DlssImage output{ds.out.image, ds.out.view, VK_FORMAT_R16G16B16A16_SFLOAT, ow, oh, VK_IMAGE_ASPECT_COLOR_BIT}; + ok = dlss_evaluate(cmd, color, depth, motion, output, reset, ds.evals++); + if (ok) { + if (ds.reason || ds.last_frame == ~0ull) + logf("vk: dlss: DLSS draws the upscale from frame %llu (%ux%u -> %ux%u)", (unsigned long long)now, rw, rh, ow, oh); + ds.reason = nullptr; + ds.last_frame = now, ds.last_vp = ds.used.cur; + } + } + full_barrier(cmd); + if (!ok && !armed) { // (the network's input is there: the game's network draws this frame) + dlss_fallback(have_motion ? "DLSS declined the frame" : "the camera matrix is not invertible"); + gprof_end(cmd, "dlss: declined"); + descriptors_disturbed(); + return false; + } + if (ok && dlss_debug() && dlss_debug_pass(cmd, dw.imgs[ntex].imageView, ow, oh, ds.used)) { + } else if (ok) { + dlss_pass(cmd, ds.output_pipe, ds.nearest, ds.out.view, dw.imgs[ntex].imageView, ow, oh, nullptr); // (squared back) + } else { // (DLSS failed with the first passes left out: a linear upscale of the square-rooted scene this frame) + dlss_fallback(have_motion ? "DLSS declined the frame: a linear upscale" : "the camera matrix is not invertible: a linear upscale"); + dlss_pass(cmd, ds.output_pipe, ds.linear, ds.color.view, dw.imgs[ntex].imageView, ow, oh, nullptr); + } + full_barrier(cmd); + gprof_end(cmd, ok ? "dlss: motion, DLSS, output" : "dlss: fallback upscale"); + texture_written(out); + descriptors_disturbed(); + return true; +} + bool precompile_wanted() { #if defined(HOOKSHOT_RELEASE) bool on = true; @@ -6140,17 +6507,25 @@ void dispatch(VkCommandBuffer cmd, NvnState& s, uint32_t x, uint32_t y, uint32_t work_since_barrier = true; if (!p.stages.empty() && p.stages[0].info.uses_cooperative_matrix) { // (the game's networks, once each: what they read and write) static std::mutex mu; - static std::unordered_map seen; + static std::unordered_map seen; // (key -> the sizes last logged: again when they change) + static int lines = 0; std::lock_guard lk(mu); - if (seen[p.key]++ == 0) { + uint64_t sig = 0; + for (const Texture* t : draw_sampled) + if (t) sig = sig * 1000003u + ((uint64_t)t->width << 32 | t->height); + auto it = seen.find(p.key); + if ((it == seen.end() || it->second != sig) && lines++ < 200) { + seen[p.key] = sig; char line[900]; - int n = snprintf(line, sizeof line, "vk: network %016llx: dispatch %ux%ux%u, %zu textures %zu images:", (unsigned long long)p.key, x, y, z, - p.stages[0].info.texture_descriptors.size(), p.stages[0].info.image_descriptors.size()); + int n = snprintf(line, sizeof line, "vk: network %016llx: dispatch %ux%ux%u, %zu textures %zu images (frame %llu):", (unsigned long long)p.key, x, y, z, + p.stages[0].info.texture_descriptors.size(), p.stages[0].info.image_descriptors.size(), + (unsigned long long)texture_frame_no()); for (const Texture* t : draw_sampled) if (t && n < 860) n += snprintf(line + n, sizeof line - n, " %ux%ux%u/%u", t->width, t->height, t->depth, (unsigned)t->format); logf("%s", line); } } + if (dlss_dispatch(cmd, s, p)) return void(st_dispatches++); // (hookshot: NVIDIA DLSS in place of the game's upscale chain) if (taau_stand_in(cmd, s, p)) return void(st_dispatches++); if (!p.compute_pipeline) SKIP_HERE(); dump_ssbos(cmd, p, "before"); diff --git a/gpu/vk/vk_main.cpp b/gpu/vk/vk_main.cpp index 06a6fedc7..5b07ef7e8 100644 --- a/gpu/vk/vk_main.cpp +++ b/gpu/vk/vk_main.cpp @@ -4,6 +4,7 @@ #include "vk_paths.h" #include "vk_loader.h" +#include #include #include #include @@ -15,6 +16,7 @@ #include "vk_api.h" #include "vk_draw.h" #include "vk_internal.h" +#include "vk_dlss.h" #include "gpu_choice.h" #include "vk_menu.h" @@ -87,8 +89,16 @@ bool create_instance() { return false; } #ifdef _WIN32 - const char* exts[] = {VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_WIN32_SURFACE_EXTENSION_NAME}; - const uint32_t n_exts = 2; + std::vector exts = {VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_WIN32_SURFACE_EXTENSION_NAME}; + { // (hookshot) what NVIDIA Streamline asks for (vk_dlss.cpp), those the loader has + uint32_t n = 0; + vkEnumerateInstanceExtensionProperties(nullptr, &n, nullptr); + std::vector all(n); + vkEnumerateInstanceExtensionProperties(nullptr, &n, all.data()); + for (const char* e : dlss_instance_exts()) + if (has_extension(all, e) && std::none_of(exts.begin(), exts.end(), [&](const char* x) { return !std::strcmp(x, e); })) exts.push_back(e); + } + const uint32_t n_exts = (uint32_t)exts.size(); #else // (linux: every window system's surface the loader has, for whichever one SDL's window is on: X11 or Wayland) const char* exts[4] = {VK_KHR_SURFACE_EXTENSION_NAME}; @@ -108,7 +118,7 @@ bool create_instance() { VkInstanceCreateInfo ci{VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO}; ci.pApplicationInfo = &app; ci.enabledExtensionCount = n_exts; - ci.ppEnabledExtensionNames = exts; + ci.ppEnabledExtensionNames = &exts[0]; // RX_VK_VALIDATION=1: the Khronos validation layer (when installed) const char* layer = "VK_LAYER_KHRONOS_validation"; if (getenv("RX_VK_VALIDATION")) ci.enabledLayerCount = 1, ci.ppEnabledLayerNames = &layer; @@ -228,6 +238,8 @@ bool create_device() { optional(VK_AMD_BUFFER_MARKER_EXTENSION_NAME, dev.buffer_marker); optional(VK_EXT_DEVICE_FAULT_EXTENSION_NAME, dev.device_fault); optional(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME, dev.coop_matrix); + for (const char* e : dlss_device_exts()) // (hookshot: NVIDIA Streamline's, vk_dlss.cpp) + if (has_extension(exts, e) && std::none_of(want.begin(), want.end(), [&](const char* x) { return !std::strcmp(x, e); })) want.push_back(e); // the queue: one family for graphics, compute and transfer vkGetPhysicalDeviceQueueFamilyProperties(dev.physical, &n, nullptr); @@ -374,6 +386,7 @@ bool create_device() { load_device(dev.device); vkGetDeviceQueue(dev.device, dev.queue_family, 0, &dev.queue); + dlss_attach(dev.instance, dev.physical, dev.device, dev.queue_family); // (before the first swapchain: Streamline's proxies make them) if (dev.buffer_marker) buffer_markers_init(); coopmat_init(); if (dev.push_descriptor) { @@ -676,6 +689,8 @@ const MkwVkRenderer* mkwvk_init(const MkwVkHost* h) { logf("vk: vulkan-1.dll not found"); return nullptr; } + menu_init(); // (hookshot: the DLSS row decides the instance and device extensions) + if (opts.dlss) dlss_start(); if (!create_instance() || !pick_device() || !create_device()) return nullptr; logf("vk: %s, Vulkan %u.%u, driver %#x; mesh shaders %s, host memory import %s, pipeline libraries %s", dev.props.deviceName, VK_VERSION_MAJOR(dev.props.apiVersion), VK_VERSION_MINOR(dev.props.apiVersion), diff --git a/gpu/vk/vk_menu.cpp b/gpu/vk/vk_menu.cpp index 0bde16304..fc84fbd93 100644 --- a/gpu/vk/vk_menu.cpp +++ b/gpu/vk/vk_menu.cpp @@ -15,6 +15,7 @@ #include "vk_paths.h" #include "vk_menu.h" #include "oot_cheat_items.h" +#include "vk_dlss.h" #include "vk_work.h" // (after the others: counts the commands that do GPU work, for full_barrier) #ifndef HOOKSHOT_VERSION // (nx2/build.py gives it to this file: nx2/version.py) #define HOOKSHOT_VERSION "unknown" @@ -63,6 +64,8 @@ const char* tx_percent(int v) { snprintf(b, sizeof b, "%d%%", v); return b; } +// The game's output: the crop of its window texture that the present scales (menu_note_output): the scale sent to the game is for it +std::atomic out_w{2048}, out_h{1152}; // The output the menu's sizes are shown for: the Output resolution row's (applied at the next start), so the rows below follow a change // at once; the handheld profile runs the game's own (1536x864) struct Out { @@ -73,6 +76,7 @@ Out shown_output() { return opts.handheld ? Out{1536, 864} : t[std::min(std::max(opts.output_res, 0), 2)]; } constexpr int kResPercent[] = {0, 100, 75, 67, 50}; +bool dlss_sets_size() { return opts.dlss && dlss_available(); } // The size the game draws the 3D at for a fixed scale of its output, a twelfth of it: every twelfth asked came out exact at the three // outputs (2048x1152: 0.58 drew 1195x672, 0.6667 1366x768). So the scale the game is given is the twelfth too: 0.67 drew 2615x1471 at // 3840x2160, not the 2560x1440 of 8/12. @@ -82,14 +86,32 @@ void game_size(float scale, uint32_t& w, uint32_t& h) { const int k = twelfths(scale); w = (o.w * k + 11) / 12, h = o.h * k / 12; } +// The DLSS mode's scale: NVIDIA's optimal render width for the mode over the output's +float dlss_scale(int mode, Out o) { + uint32_t w, h; + dlss_render_size(mode, o.w, o.h, w, h); + return (float)w / o.w; +} const char* tx_resolution(int v) { static char b[48]; + if (dlss_sets_size()) return "Set by DLSS mode"; if (v <= 0 || v > 4) return "Auto (dynamic)"; uint32_t w, h; game_size(kResPercent[v] / 100.0f, w, h); snprintf(b, sizeof b, "%d%% (%ux%u)", kResPercent[v], w, h); return b; } +const char* tx_dlss_mode(int v) { + static const char* names[] = {"Ultra Performance", "Performance", "Balanced", "Quality", "DLAA"}; + static char b[64]; + if ((unsigned)v > 4) v = 3; + if (!dlss_sets_size()) return snprintf(b, sizeof b, "%s (DLSS off)", names[v]), b; + uint32_t w, h; + const float s = dlss_scale(v, shown_output()); + game_size(s, w, h); + snprintf(b, sizeof b, "%s (%d%%, %ux%u)", names[v], (int)(w * 100.0 / shown_output().w + 0.5), w, h); + return b; +} const char* tx_output_res(int v) { static const char* t[] = {"2048x1152 (game, restart)", "2560x1440 (restart)", "3840x2160 (restart)"}; return t[v]; @@ -101,6 +123,15 @@ const char* tx_text_speed(int v) { return t[v]; } const char* tx_handheld(int v) { return v ? "On (restart)" : "Off (restart)"; } +const char* tx_dlss(int v) { + if (v && !dlss_available()) return strcmp(dlss_reason(), "not started") ? "On (no NVIDIA DLSS found)" : "On (restart)"; + return v ? "On" : "Off"; +} +const char* tx_dlss_preset(int v) { + static char b[16]; + snprintf(b, sizeof b, opts.dlss && dlss_available() ? "%c" : "%c (DLSS off)", 'J' + v); + return b; +} const char* tx_ultrawide(int v) { return v ? "Monitor's shape (restart)" : "16:9 (restart)"; } int gpu_device_at_start = 0; // (the row's value the game started with: menu_set_gpu_count) const char* tx_gpu(int v) { @@ -176,10 +207,18 @@ Row rows[] = { "Shows each frame at an even interval instead of as soon as it is ready. Less stutter, at up to one frame of delay."}, {TAB_GRAPHICS, "Resolution", &opts.resolution, 0, 4, 1, tx_resolution, "How sharp the 3D is drawn. Auto lets the game lower it when the GPU is busy. A fixed percentage stays steady: lower is " - "faster."}, + "faster. With DLSS on, the DLSS mode sets it."}, {TAB_GRAPHICS, "Output resolution", &opts.output_res, 0, 2, 1, tx_output_res, "The size the game draws its whole frame at, HUD included, before it is scaled to your window. The 3D is drawn at the " - "Resolution percentage of it. Docked only. Applies after a restart."}, + "Resolution percentage of it, and DLSS scales up to it. Docked only. Applies after a restart."}, + {TAB_GRAPHICS, "DLSS", &opts.dlss, 0, 1, 1, tx_dlss, + "NVIDIA DLSS in place of the game's own upscale. Needs an RTX GPU and NVIDIA's DLLs in the " + "streamline folder beside the game. Applies after a restart."}, + {TAB_GRAPHICS, "DLSS mode", &opts.dlss_mode, 0, 4, 1, tx_dlss_mode, nullptr}, // (help_of: the output's size in it) + {TAB_GRAPHICS, "DLSS preset", &opts.dlss_preset, 0, 3, 1, tx_dlss_preset, + "NVIDIA's DLSS model, changed at once. M: NVIDIA's pick for Performance, close to L's picture but nearer K's speed. L: its " + "pick for Ultra Performance, sharper and steadier, less ghosting, slower. K: its pick for Quality, Balanced and DLAA. J: " + "like K, slightly less ghosting, more flicker."}, {TAB_GRAPHICS, "Upscaling", &opts.upscale, 0, 2, 1, tx_upscale, "The filter that scales the picture to your window. Off is the plain copy. Catmull-Rom is sharper, Lanczos sharper still."}, {TAB_GRAPHICS, "Sharpness", &opts.sharpness, 0, 100, 10, tx_percent, @@ -311,6 +350,15 @@ std::atomic item_counts[kItems]; // (-1 until the game side reports: OOT_ int item_choice = 0, item_scroll = 0; constexpr int kCheatRows = 11; constexpr int kRows = sizeof rows / sizeof rows[0]; +const char* help_of(const Row& r) { + if (r.help) return r.help; + static char b[400]; + const Out o = shown_output(); + snprintf(b, sizeof b, "The size DLSS draws the 3D at before upscaling it to the game's output (%ux%u), in place of Resolution, changed " + "at once. Quality is NVIDIA's default; Balanced, Performance and Ultra Performance are lighter on slower GPUs; DLAA draws at " + "full size.", o.w, o.h); + return b; +} constexpr int kMenuWidth = 480; // (at a scale of 1: 720 lines) int cur_tab = TAB_GRAPHICS; @@ -884,7 +932,7 @@ void paint_menu(HDC dc, uint32_t w, uint32_t h, int s) { HFONT help = font(14 * s, FW_NORMAL); SelectObject(dc, help); SetTextColor(dc, RGB(176, 186, 180)); - wrap_help(dc, rows[tab_row_to_global(cur_tab, tab_selected[cur_tab])].help, (int)w - 32 * s, 16 * s, help_top + 4 * s, true); + wrap_help(dc, help_of(rows[tab_row_to_global(cur_tab, tab_selected[cur_tab])]), (int)w - 32 * s, 16 * s, help_top + 4 * s, true); SelectObject(dc, body); SetTextColor(dc, RGB(140, 150, 144)); const char* hint = "Arrows change Q/E or LB/RB: tabs Insert, F1 or Home closes"; // (fits 448 px at 16 px) @@ -935,7 +983,7 @@ int measure_help(int s) { HFONT f = font(14 * s, FW_NORMAL); HGDIOBJ old = SelectObject(dc, f); int most = 0; - for (const Row& r : rows) most = std::max(most, wrap_help(dc, r.help, (kMenuWidth - 32) * s, 0, 0, false)); + for (const Row& r : rows) most = std::max(most, wrap_help(dc, help_of(r), (kMenuWidth - 32) * s, 0, 0, false)); SelectObject(dc, old); DeleteObject(f); DeleteDC(dc); @@ -1048,12 +1096,18 @@ void menu_init() { if (r.value == &opts.upscale) *r.value = std::min(std::max(atoi(e), r.lo), r.hi); if (const char* e = getenv("HOS_REALTIME_STEP")) opts.realtime = atoi(e) != 0; if (const char* e = getenv("HOS_DYNRES")) opts.resolution = atoi(e) != 0 ? 0 : 1; + if (const char* e = getenv("RX_DLSS")) opts.dlss = atoi(e) != 0; if (const char* e = getenv("HOS_OUTPUT_RES")) opts.output_res = std::min(std::max(atoi(e), 0), 2); + if (const char* e = getenv("RX_DLSS_PRESET"); e && e[0] >= 'J' && e[0] <= 'M') opts.dlss_preset = e[0] - 'J'; } -bool resolution_auto() { return opts.resolution == 0; } -int resolution_scale() { - const float s = opts.resolution > 0 && opts.resolution <= 4 ? kResPercent[opts.resolution] / 100.0f : 0; +void menu_note_output(uint32_t w, uint32_t h) { + if (w && h) out_w = w, out_h = h; +} +bool resolution_auto() { return opts.resolution == 0 && !dlss_sets_size(); } +int resolution_scale() { // (for the output the game runs at: the crop) + const Out o{out_w, out_h}; + float s = dlss_sets_size() ? dlss_scale(opts.dlss_mode, o) : opts.resolution > 0 && opts.resolution <= 4 ? kResPercent[opts.resolution] / 100.0f : 0; return s > 0 ? (int)(twelfths(s) * 10000.0f / 12.0f + 0.5f) : 0; // (the twelfth game_size labels) } diff --git a/gpu/vk/vk_menu.h b/gpu/vk/vk_menu.h index 75aa3d38f..6549a7094 100644 --- a/gpu/vk/vk_menu.h +++ b/gpu/vk/vk_menu.h @@ -31,6 +31,9 @@ struct Options { int preset = 0; // quality preset: 0 Custom, 1 Minimum (4GB), 2 Low (6GB), 3 Balanced (8GB), 4 High (12GB), 5 Ultra (16GB+) int vram_mb = 0; // dynamic texture cache budget limit in MB int mirror_mb = 0; // staging mirror limit in MB + int dlss = 0; // the game's gameplay upscale through NVIDIA DLSS (vk_dlss.cpp); read once, at the start (RX_DLSS=0/1 over it) + int dlss_mode = 3; // the render size with DLSS on: 0 Ultra Performance .. 3 Quality, 4 DLAA (dlss_render_size) + int dlss_preset = 3; // DLSS's model: 0 J, 1 K, 2 L, 3 M; applies at once (RX_DLSS_PRESET=J..M over it) }; extern Options opts; /// (vk_memory.cpp) true when the quality preset's memory budgets (vram_mb, mirror_mb) are to be used: the card has no more @@ -42,8 +45,9 @@ void menu_init(); // (the options from the file, once) void menu_set_gpu_count(int count); void menu_tick(); // (each frame shown: the keys, while the game's window has the focus) bool menu_is_open(); -bool resolution_auto(); // (the game's dynamic resolution: Resolution Auto) -int resolution_scale(); // (the fixed path's scale in 1/10000: the Resolution row's, as a twelfth of the output) +bool resolution_auto(); // (the game's dynamic resolution: Resolution Auto, and DLSS not setting the size) +void menu_note_output(uint32_t w, uint32_t h); // (each present: the game's output, its window crop) +int resolution_scale(); // (the fixed path's scale in 1/10000: the Resolution row's, or the DLSS mode's, as a twelfth of the output) void menu_option_set(int id, int value); // (from the game's side: 7 the mouse's sensitivity, the - and = keys) int menu_heart_protection(); int menu_player_flight(); diff --git a/gpu/vk/vk_replay.cpp b/gpu/vk/vk_replay.cpp index 20caeab4e..2a2e5428c 100644 --- a/gpu/vk/vk_replay.cpp +++ b/gpu/vk/vk_replay.cpp @@ -2480,6 +2480,7 @@ void log_frame_stats() { uint64_t present_value = 0; // (the present job's value, handed out as it came; 0: the next one) void do_present(const nvn_tex* t, const int crop[4]) { + if (crop) menu_note_output((uint32_t)std::max(crop[2], 0), (uint32_t)std::max(crop[3], 0)); // (the menu's sizes) { // (hookshot, RX_VK_PASS_TRACE_AT=: the passes of the frames around these frame numbers, for finding what a frame is made of) static std::atomic seen{0}; static const int64_t at = getenv("RX_VK_PASS_TRACE_AT") ? atoll(getenv("RX_VK_PASS_TRACE_AT")) : 0; diff --git a/host/nn_vi.c b/host/nn_vi.c index 19775d999..c26a483b6 100644 --- a/host/nn_vi.c +++ b/host/nn_vi.c @@ -204,7 +204,7 @@ static void realtime_step(int64_t now) { if (!looked) looked = 1, env = getenv("HOS_TEXT_SPEED"); hos_text_scale = text_scale(env, rx_option(5, 0)); } - { /* (the Insert menu's Resolution: the fixed path's scale in 1/10000, live; HOS_RES_SCALE + { /* (the Insert menu's Resolution, or the DLSS mode with DLSS on: the fixed path's scale in 1/10000, live; HOS_RES_SCALE below stays over it) */ const int scale = rx_option(3, 0); if (scale > 0 && !getenv("HOS_RES_SCALE")) { diff --git a/nx2/build.py b/nx2/build.py index a350b25f6..3c5360f9a 100644 --- a/nx2/build.py +++ b/nx2/build.py @@ -711,7 +711,9 @@ def main(): "-I" + os.path.join(GPU, "third_party", "suyu"), "-I" + os.path.join(vk, "sirit", "include"), "-I" + os.path.join(vk, "sirit", "src"), "-I" + os.path.join(spirv_headers, "include"), "-I" + os.path.join(spirv_headers, "include", "spirv", "unified1"), - "-I" + os.path.join(vk_headers, "include"), "-I" + vk] + (["-I" + os.path.join(cpm_package("vulkanmemoryallocator"), "include")] if cpm_package("vulkanmemoryallocator") else []) + # (third_party/streamline: NVIDIA Streamline's MIT headers, vk_dlss.cpp's) + "-I" + os.path.join(vk_headers, "include"), "-I" + vk, + "-I" + os.path.join(kit.HERE, "..", "third_party", "streamline", "include")] + (["-I" + os.path.join(cpm_package("vulkanmemoryallocator"), "include")] if cpm_package("vulkanmemoryallocator") else []) # (Eden's recompiler and sirit see only their own headers: a change to the back end's vk_*.h does not # rebuild their ~500 files; the back end itself depends on everything, suyu's texture decoders included) vk_lib_deps = tree_headers(os.path.join(vk, "eden"), os.path.join(vk, "sirit"), os.path.join(vk, "compat"), @@ -874,7 +876,8 @@ def main(): "-static-libstdc++", "-static-libgcc", "@" + vrsp, "-ldl", "-lpthread", "-lm"] else: link = [cc] + toolchain.native_target() + toolchain.native_link() + \ - ["-shared", "-o", vdll, toolchain.link_opt("/map:" + vdll[:-4] + ".map"), "@" + vrsp, "-luser32", "-lgdi32"] + (["-lc++", "-lunwind"] if toolchain.mingw() else []) + ["-shared", "-o", vdll, toolchain.link_opt("/map:" + vdll[:-4] + ".map"), "@" + vrsp, "-luser32", "-lgdi32", + "-lversion", "-lwintrust", "-lcrypt32"] + (["-lc++", "-lunwind"] if toolchain.mingw() else []) r = subprocess.run(link, capture_output=True, text=True) if r.returncode: undefined = sorted({l.strip() for l in (r.stdout + r.stderr).splitlines() if "undefined symbol" in l}) diff --git a/nx2/oot_patches.py b/nx2/oot_patches.py index aec012529..e3fcf06a3 100644 --- a/nx2/oot_patches.py +++ b/nx2/oot_patches.py @@ -35,7 +35,7 @@ def fixed_scale(t): - """The fixed path's scale reaching the 3D (the Resolution row). (t, 1) when applied here""" + """The fixed path's scale reaching the 3D (the Resolution row, or the DLSS mode with DLSS on). (t, 1) when applied here""" if APPLY_OLD not in t or FLAGS_OLD not in t: return t, 0 t = t.replace(APPLY_OLD, APPLY_NEW, 1).replace(FLAGS_OLD, FLAGS_NEW, 1) diff --git a/readme.md b/readme.md index 636384c2c..1cb278712 100644 --- a/readme.md +++ b/readme.md @@ -193,8 +193,11 @@ and the right one closes the menu. Your choices are saved in `hookshot_options.i | | GPU device | Auto, or each graphics card by name (after a restart) | Auto | | | Frame generation | Off, 2x to 8x | Off | | | Frame pacing | Off, On | Off | -| | Resolution | Auto (the game's own dynamic resolution), 100%, 75%, 67%, 50% (each with its size) | Auto | +| | Resolution | Auto (the game's own dynamic resolution), 100%, 75%, 67%, 50% (each with its size); set by the DLSS mode while DLSS is on | Auto | | | Output resolution | 2048x1152, 2560x1440, 3840x2160 (after a restart) | 2048x1152 | +| | DLSS | Off, On (after a restart) | Off | +| | DLSS mode | Ultra Performance, Performance, Balanced, Quality, DLAA | Quality | +| | DLSS preset | J, K, L, M | M | | | Upscaling | Off, Catmull-Rom, Lanczos | Off | | | Sharpness | 0 to 100%, in steps of 10 | 0% | | | Handheld profile | Off, On (after a restart) | Off | @@ -222,8 +225,7 @@ and the right one closes the menu. Your choices are saved in `hookshot_options.i - **Frame generation** makes extra frames between the game's own. It adds a little input delay, and fast motion can show artifacts. **Frame pacing** shows frames at an even interval: less stutter, up to one frame of delay. - **Output resolution** is the size of the game's whole frame, HUD included, before it is scaled to your window. - Resolution is a share of it, and its row shows the size for the output you chose. Docked only. At 3840x2160 the game's - render targets get a bigger GPU pool, so a full-size 3D fits. `HOS_OUTPUT_RES=0/1/2` sets it for one run. + Resolution and the DLSS mode are a share of it, and their rows show the size for the output you chose. Docked only. - **Upscaling** and **Sharpness** also work when Frame generation is Off. - **Handheld profile** runs the game as if the console were undocked: lower resolution, lighter on the GPU. - **Robust buffers:** a read past a buffer's end is dropped instead of stopping the GPU. Auto is on, on every card; Off @@ -238,6 +240,17 @@ and the right one closes the menu. Your choices are saved in `hookshot_options.i - **Layout preset:** Nintendo has A on the right face button, Xbox / PC and Swap Face put A on the bottom one. Changing a button yourself sets it to Custom. +### NVIDIA DLSS + +DLSS is optional and needs an RTX card. It replaces the game's own upscale: the 3D is drawn at the DLSS mode's size and +DLSS scales it up to the output. Hookshot does not include NVIDIA's files. Put a `streamline` folder beside the game's +exe (`bin\hookshot.exe` with the launcher) holding `sl.interposer.dll`, `sl.common.dll` and `sl.dlss.dll` from +NVIDIA's [Streamline SDK](https://github.com/NVIDIA-RTX/Streamline) (2.14 or newer) and `nvngx_dlss.dll`. Without +`nvngx_dlss.dll`, the copy the NVIDIA app keeps is used if it is signed by NVIDIA. Without any of them the DLSS row says +so and the game runs as before. **DLSS preset** picks NVIDIA's model and changes at once. + +For one run: `RX_DLSS=0/1`, `RX_DLSS_PRESET=J..M`, `RX_DLSS_DIR=`, `HOS_OUTPUT_RES=0/1/2`. + ### Controls Use a controller, or the keyboard and mouse. On the keyboard, W A S D move @@ -441,7 +454,7 @@ Hookshot exists thanks to the work of many people: - **[EvilBoyce / evilmfkr](https://github.com/evilmfkr/Hookshot)** (EvilOOT): the GPU culling that brings back Kokiri's foliage (trees, ferns, grass, falling leaves, fireflies), the ambient light probes, the pond's water, the game's own fog, the freeze after Load (Horizon's mutex handoff) and the exposure flicker fix. -- **[zortos293/Lichii](https://github.com/zortos293/Lichii)**: reference for Ampere shader lowering, and its compare-exchange retry fix. +- **[zortos293/Lichii](https://github.com/zortos293/Lichii)**: reference for Ampere shader lowering, and its compare-exchange retry fix; the NVIDIA DLSS replacement of the game's upscale (Streamline loader, camera motion and its shaders), ported in `gpu/vk/vk_dlss.cpp` and `gpu/vk/vk_draw.cpp`, which Lichii credits to Duck912's work in Eglantine. NVIDIA Streamline's headers (MIT) are in `third_party/streamline`; NVIDIA's DLLs are not part of Hookshot. - **[mstorsjo/llvm-mingw](https://github.com/mstorsjo/llvm-mingw)**: the bundled Windows compiler (no Visual Studio needed). - **[kinnay/zbic](https://github.com/kinnay/zbic)**, **Opus** and **SDL**: decompression, audio and controllers. - **[sostenesfreitas/ocarina-recomp](https://github.com/sostenesfreitas/ocarina-recomp)**: this README's layout, and its notes diff --git a/third_party/streamline/include/sl.h b/third_party/streamline/include/sl.h new file mode 100644 index 000000000..0e8e010ea --- /dev/null +++ b/third_party/streamline/include/sl.h @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include + +#include "sl_struct.h" +#include "sl_consts.h" +#include "sl_version.h" +#include "sl_result.h" +#include "sl_appidentity.h" +#include "sl_device_wrappers.h" + +#include "sl_core_api.h" +#include "sl_core_types.h" + +#define SL_FUN_DECL(name) PFun_##name* name{} +//! IMPORTANT: Macros which use `slGetFeatureFunction` can only be used AFTER device is set by calling either slSetD3DDevice or slSetVulkanInfo. +#define SL_FEATURE_FUN_IMPORT(feature, func) slGetFeatureFunction(feature, #func, (void*&) ##func) +#define SL_FEATURE_FUN_IMPORT_STATIC(feature, func) \ +static PFun_##func* s_ ##func{}; \ +if(!s_ ##func) { \ + sl::Result res = slGetFeatureFunction(feature, #func, (void*&) s_ ##func); \ + if(res != sl::Result::eOk) return res; \ +} \ + diff --git a/third_party/streamline/include/sl_appidentity.h b/third_party/streamline/include/sl_appidentity.h new file mode 100644 index 000000000..3f268fb65 --- /dev/null +++ b/third_party/streamline/include/sl_appidentity.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +#include "sl_struct.h" + +namespace sl +{ + +//! Engine types +//! +enum class EngineType : uint32_t +{ + eCustom, + eUnreal, + eUnity, + eCount +}; + +} diff --git a/third_party/streamline/include/sl_consts.h b/third_party/streamline/include/sl_consts.h new file mode 100644 index 000000000..20f8850c3 --- /dev/null +++ b/third_party/streamline/include/sl_consts.h @@ -0,0 +1,260 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include +#include +#include +#include "sl_struct.h" + +#define SL_ENUM_OPERATORS_64(T) \ +inline bool operator&(T a, T b) \ +{ \ + return ((uint64_t)a & (uint64_t)b) != 0; \ +} \ + \ +inline T& operator&=(T& a, T b) \ +{ \ + a = (T)((uint64_t)a & (uint64_t)b); \ + return a; \ +} \ + \ +inline T operator|(T a, T b) \ +{ \ + return (T)((uint64_t)a | (uint64_t)b); \ +} \ + \ +inline T& operator |= (T& lhs, T rhs) \ +{ \ + lhs = (T)((uint64_t)lhs | (uint64_t)rhs); \ + return lhs; \ +} \ + \ +inline T operator~(T a) \ +{ \ + return (T)~((uint64_t)a); \ +} + +#define SL_ENUM_OPERATORS_32(T) \ +inline bool operator&(T a, T b) \ +{ \ + return ((uint32_t)a & (uint32_t)b) != 0; \ +} \ + \ +inline T& operator&=(T& a, T b) \ +{ \ + a = (T)((uint32_t)a & (uint32_t)b); \ + return a; \ +} \ + \ +inline T operator|(T a, T b) \ +{ \ + return (T)((uint32_t)a | (uint32_t)b); \ +} \ + \ +inline T& operator |= (T& lhs, T rhs) \ +{ \ + lhs = (T)((uint32_t)lhs | (uint32_t)rhs); \ + return lhs; \ +} \ + \ +inline T operator~(T a) \ +{ \ + return (T)~((uint32_t)a); \ +} + +namespace sl +{ + +//! For cases when value has to be provided and we don't have good default +constexpr float INVALID_FLOAT = 3.40282346638528859811704183484516925440e38f; +constexpr uint32_t INVALID_UINT = 0xffffffff; + +//! Normally host would work with no more than 2 frames at the same time but sl.reflex sometimes +//! needs to send markers for previous and next frame so the total number of in-flight frames can be higher +constexpr uint32_t MAX_FRAMES_IN_FLIGHT = 6; + +struct uint2 +{ + uint32_t x; + uint32_t y; +}; + +struct uint3 +{ + uint32_t x; + uint32_t y; + uint32_t z; +}; + +struct float2 +{ + float2() : x(INVALID_FLOAT), y(INVALID_FLOAT) {} + float2(float _x, float _y) : x(_x), y(_y) {} + float x, y; +}; + +struct float3 +{ + float3() : x(INVALID_FLOAT), y(INVALID_FLOAT), z(INVALID_FLOAT) {} + float3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {} + float x, y, z; +}; + +struct float4 +{ + float4() : x(INVALID_FLOAT), y(INVALID_FLOAT), z(INVALID_FLOAT), w(INVALID_FLOAT) {} + float4(float _x, float _y, float _z, float _w) : x(_x), y(_y), z(_z), w(_w) {} + float x, y, z, w; +}; + +struct float4x4 +{ + //! All access points take row index as a parameter + inline float4& operator[](uint32_t i) { return row[i]; } + inline const float4& operator[](uint32_t i) const { return row[i]; } + inline void setRow(uint32_t i, const float4& v) { row[i] = v; } + inline const float4& getRow(uint32_t i) { return row[i]; } + + //! Row major matrix + float4 row[4]; +}; + +struct Extent +{ + uint32_t top{}; + uint32_t left{}; + uint32_t width{}; + uint32_t height{}; + + inline operator bool() const { return width != 0 && height != 0; } + inline bool operator==(const Extent& rhs) const + { + return top == rhs.top && left == rhs.left && + width == rhs.width && height == rhs.height; + } + inline bool operator!=(const Extent& rhs) const + { + return !operator==(rhs); + } + inline bool isSameRes(const Extent& rhs) const + { + return width == rhs.width && height == rhs.height; + } + +#if defined(_WINDEF_) + // Cast helper for sl::Extent->RECT when windef.h has been included + inline operator RECT() const { return RECT { (LONG)left, (LONG)top, (LONG)(left + width), (LONG)(top + height) }; } +#endif +}; + +//! For cases when value has to be provided and we don't have good default +enum Boolean : char +{ + eFalse, + eTrue, + eInvalid +}; + +//! Common constants, all parameters must be provided unless they are marked as optional +//! +//! {DCD35AD7-4E4A-4BAD-A90C-E0C49EB23AFE} +SL_STRUCT_BEGIN(Constants, StructType({ 0xdcd35ad7, 0x4e4a, 0x4bad, { 0xa9, 0xc, 0xe0, 0xc4, 0x9e, 0xb2, 0x3a, 0xfe } }), kStructVersion2) + //! IMPORTANT: All matrices are row major (see float4x4 definition) and + //! must NOT contain temporal AA jitter offset (if any). Any jitter offset + //! should be provided as the additional parameter Constants::jitterOffset (see below) + + //! Specifies matrix transformation from the camera view to the clip space. + float4x4 cameraViewToClip; + //! Specifies matrix transformation from the clip space to the camera view space. + float4x4 clipToCameraView; + //! Optional - Specifies matrix transformation describing lens distortion in clip space. + float4x4 clipToLensClip; + //! Specifies matrix transformation from the current clip to the previous clip space. + //! clipToPrevClip = clipToView * viewToViewPrev * viewToClipPrev + //! Sample code can be found in sl_matrix_helpers.h + float4x4 clipToPrevClip; + //! Specifies matrix transformation from the previous clip to the current clip space. + //! prevClipToClip = clipToPrevClip.inverse() + float4x4 prevClipToClip; + + //! Specifies pixel space jitter offset + float2 jitterOffset; + //! Specifies scale factors used to normalize motion vectors (so the values are in [-1,1] range) + float2 mvecScale; + //! Optional - Specifies camera pinhole offset if used. + float2 cameraPinholeOffset; + //! Specifies camera position in world space. + float3 cameraPos; + //! Specifies camera up vector in world space. + float3 cameraUp; + //! Specifies camera right vector in world space. + float3 cameraRight; + //! Specifies camera forward vector in world space. + float3 cameraFwd; + + //! Specifies camera near view plane distance. + float cameraNear = INVALID_FLOAT; + //! Specifies camera far view plane distance. + float cameraFar = INVALID_FLOAT; + //! Specifies camera field of view in radians. + float cameraFOV = INVALID_FLOAT; + //! Specifies camera aspect ratio defined as view space width divided by height. + float cameraAspectRatio = INVALID_FLOAT; + //! Specifies which value represents an invalid (un-initialized) value in the motion vectors buffer + //! NOTE: This is only required if `cameraMotionIncluded` is set to false and SL needs to compute it. + float motionVectorsInvalidValue = INVALID_FLOAT; + + //! Specifies if depth values are inverted (value closer to the camera is higher) or not. + Boolean depthInverted = Boolean::eInvalid; + //! Specifies if camera motion is included in the MVec buffer. + Boolean cameraMotionIncluded = Boolean::eInvalid; + //! Specifies if motion vectors are 3D or not. + Boolean motionVectors3D = Boolean::eInvalid; + //! Specifies if previous frame has no connection to the current one (i.e. motion vectors are invalid) + Boolean reset = Boolean::eInvalid; + //! Specifies if orthographic projection is used or not. + Boolean orthographicProjection = Boolean::eFalse; + //! Specifies if motion vectors are already dilated or not. + Boolean motionVectorsDilated = Boolean::eFalse; + //! Specifies if motion vectors are jittered or not. + Boolean motionVectorsJittered = Boolean::eFalse; + + //! Version 2 members: + //! + //! Optional heuristic that specifies the minimum depth difference between two objects in screen-space. + //! The units of the value are in linear depth units. + //! Linear depth is computed as: + //! if depthInverted is false: `lin_depth = 1 / (1 - depth)` + //! if depthInverted is true: `lin_depth = 1 / depth` + //! + //! Although unlikely to need to be modified, smaller thresholds are useful when depth units are + //! unusually compressed into a small dynamic range near 1. + //! + //! If not specified, the default value is 40.0f. + float minRelativeLinearDepthObjectSeparation = 40.0f; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} diff --git a/third_party/streamline/include/sl_core_api.h b/third_party/streamline/include/sl_core_api.h new file mode 100644 index 000000000..bc256d6d9 --- /dev/null +++ b/third_party/streamline/include/sl_core_api.h @@ -0,0 +1,328 @@ +/* +* Copyright (c) 2022-2024 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include + +#include "sl_struct.h" +#include "sl_consts.h" +#include "sl_version.h" +#include "sl_result.h" +#include "sl_appidentity.h" +#include "sl_device_wrappers.h" + +#include "sl_core_types.h" + +#if defined(SL_INTERPOSER) + #if defined(_WIN32) + #define SL_API extern "C" __declspec(dllexport) + #else + #error Unsupported Platform! + #endif +#else +#define SL_API extern "C" +#endif + +#pragma region SL_API + +//! Streamline core API functions (check feature specific headers for additional APIs) +//! +using PFun_slInit = sl::Result(const sl::Preferences& pref, uint64_t sdkVersion); +using PFun_slShutdown = sl::Result(); +using PFun_slIsFeatureSupported = sl::Result(sl::Feature feature, const sl::AdapterInfo& adapterInfo); +using PFun_slIsFeatureLoaded = sl::Result(sl::Feature feature, bool& loaded); +using PFun_slSetFeatureLoaded = sl::Result(sl::Feature feature, bool loaded); +using PFun_slEvaluateFeature = sl::Result(sl::Feature feature, const sl::FrameToken& frame, const sl::BaseStructure** inputs, uint32_t numInputs, sl::CommandBuffer* cmdBuffer); +using PFun_slAllocateResources = sl::Result(sl::CommandBuffer* cmdBuffer, sl::Feature feature, const sl::ViewportHandle& viewport); +using PFun_slFreeResources = sl::Result(sl::Feature feature, const sl::ViewportHandle& viewport); +using PFun_slSetTag +#if __cplusplus >= 201402L +[[deprecated("Use the version of this function that takes a sl::FrameToken instead - slSetTagForFrame and set sl::PreferenceFlags::eUseFrameBasedResourceTagging.")]] +#endif += sl::Result(const sl::ViewportHandle& viewport, const sl::ResourceTag* tags, uint32_t numTags, sl::CommandBuffer* cmdBuffer); +using PFun_slSetTagForFrame = sl::Result(const sl::FrameToken& frame, const sl::ViewportHandle& viewport, const sl::ResourceTag* tags, uint32_t numTags, sl::CommandBuffer* cmdBuffer); +using PFun_slGetFeatureRequirements = sl::Result(sl::Feature feature, sl::FeatureRequirements& requirements); +using PFun_slGetFeatureVersion = sl::Result(sl::Feature feature, sl::FeatureVersion& version); +using PFun_slUpgradeInterface = sl::Result(void** baseInterface); +using PFun_slSetConstants = sl::Result(const sl::Constants& values, const sl::FrameToken& frame, const sl::ViewportHandle& viewport); +using PFun_slGetNativeInterface = sl::Result(void* proxyInterface, void** baseInterface); +using PFun_slGetFeatureFunction = sl::Result(sl::Feature feature, const char* functionName, void*& function); +using PFun_slGetNewFrameToken = sl::Result(sl::FrameToken*& token, const uint32_t* frameIndex); +using PFun_slSetD3DDevice = sl::Result(void* d3dDevice); + + +//! Initializes the SL module +//! +//! Call this method when the game is initializing. +//! +//! @param pref Specifies preferred behavior for the SL library (SL will keep a copy) +//! @param sdkVersion Current SDK version +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +SL_API sl::Result slInit(const sl::Preferences &pref, uint64_t sdkVersion = sl::kSDKVersion); + +//! Shuts down the SL module +//! +//! Call this method when the game is shutting down. +//! +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +SL_API sl::Result slShutdown(); + +//! Checks if a specific feature is supported or not. +//! +//! Call this method to check if a certain e* (see above) is available. +//! +//! @param feature Specifies which feature to use +//! @param adapterInfo Adapter to check (optional) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! NOTE: If adapter info is null SL will return general feature compatibility with the OS, +//! installed drivers or any other requirements not directly related to the adapter. +//! +//! This method is NOT thread safe. +SL_API sl::Result slIsFeatureSupported(sl::Feature feature, const sl::AdapterInfo& adapterInfo); + +//! Checks if specified feature is loaded or not. +//! +//! Call this method to check if feature is loaded. +//! All requested features are loaded by default and have to be unloaded explicitly if needed. +//! +//! @param feature Specifies which feature to check +//! @param loaded Value specifying if feature is loaded or unloaded. +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slIsFeatureLoaded(sl::Feature feature, bool& loaded); + +//! Sets the specified feature to either loaded or unloaded state. +//! +//! Call this method to load or unload certain e*. +//! +//! NOTE: All requested features are loaded by default and have to be unloaded explicitly if needed. +//! +//! @param feature Specifies which feature to check +//! @param loaded Value specifying if feature should be loaded or unloaded. +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! NOTE: When this method is called no other DXGI/D3D/Vulkan APIs should be invoked in parallel so +//! make sure to flush your pipeline before calling this method. +//! +//! This method is NOT thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slSetFeatureLoaded(sl::Feature feature, bool loaded); + +//! NOTE: sl::PreferenceFlags::eUseFrameBasedResourceTagging must be set when using this API. +//! Tags resource globally +//! +//! Call this method to tag the appropriate buffers in global scope. +//! +//! @param frame Specifies the frame this tag applies to. Frame token can be obtained using slGetNewFrameToken API. +//! @param viewport Specifies viewport this tag applies to +//! @param tags Pointer to resources tags, set to null to remove the specified tag +//! @param numTags Number of resource tags in the provided list +//! @param cmdBuffer Command buffer to use (optional and can be null if ALL tags are null or have eValidUntilPresent life-cycle) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! IMPORTANT: GPU payload that generates content for the provided tag(s) MUST be either already submitted to the provided command buffer +//! or some other command buffer which is guaranteed, by the host application, to be executed BEFORE the provided command buffer. +//! +//! This method is thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slSetTagForFrame(const sl::FrameToken& frame, const sl::ViewportHandle& viewport, const sl::ResourceTag* resources, uint32_t numResources, sl::CommandBuffer* cmdBuffer); + +//! NOTE: This API has now been DEPRECATED in favor of the new slSetTagForFrame API above. +//! Tags resource globally +//! +//! Call this method to tag the appropriate buffers in global scope. +//! +//! @param viewport Specifies viewport this tag applies to +//! @param tags Pointer to resources tags, set to null to remove the specified tag +//! @param numTags Number of resource tags in the provided list +//! @param cmdBuffer Command buffer to use (optional and can be null if ALL tags are null or have eValidUntilPresent life-cycle) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! IMPORTANT: GPU payload that generates content for the provided tag(s) MUST be either already submitted to the provided command buffer +//! or some other command buffer which is guaranteed, by the host application, to be executed BEFORE the provided command buffer. +//! +//! This method is thread safe and requires DX/VK device to be created before calling it. +SL_API +#if __cplusplus >= 201402L +[[deprecated("Use the version of this function that takes a sl::FrameToken instead - slSetTagForFrame and set sl::PreferenceFlags::eUseFrameBasedResourceTagging.")]] +#endif +sl::Result slSetTag(const sl::ViewportHandle& viewport, const sl::ResourceTag* tags, uint32_t numTags, sl::CommandBuffer* cmdBuffer); + +//! Sets common constants. +//! +//! Call this method to provide the required data (SL will keep a copy). +//! +//! @param values Common constants required by SL plugins (SL will keep a copy) +//! @param frame Index of the current frame +//! @param viewport Unique id (can be viewport id | instance id etc.) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slSetConstants(const sl::Constants& values, const sl::FrameToken& frame, const sl::ViewportHandle& viewport); + +//! Returns feature's requirements +//! +//! Call this method to check what is required to run certain eFeature* (see above). +//! This method must be called after init otherwise it will always return an error. +//! +//! @param feature Specifies which feature to check +//! @param requirements Data structure with feature's requirements +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +SL_API sl::Result slGetFeatureRequirements(sl::Feature feature, sl::FeatureRequirements& requirements); + +//! Returns feature's version +//! +//! Call this method to check version for a certain eFeature* (see above). +//! This method must be called after init otherwise it will always return an error. +//! +//! @param feature Specifies which feature to check +//! @param version Data structure with feature's version +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is thread safe. +SL_API sl::Result slGetFeatureVersion(sl::Feature feature, sl::FeatureVersion& version); + +//! Allocates resources for the specified feature. +//! +//! Call this method to explicitly allocate resources +//! for an instance of the specified feature. +//! +//! @param cmdBuffer Command buffer to use (must be created on device where feature is supported but can be null if not needed) +//! @param feature Feature we are working with +//! @param viewport Unique id (viewport handle) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slAllocateResources(sl::CommandBuffer* cmdBuffer, sl::Feature feature, const sl::ViewportHandle& viewport); + +//! Frees resources for the specified feature. +//! +//! Call this method to explicitly free resources +//! for an instance of the specified feature. +//! +//! @param feature Feature we are working with +//! @param viewport Unique id (viewport handle) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! IMPORTANT: If slEvaluateFeature is pending on a command list, that command list must be flushed +//! before calling this method to prevent invalid resource access on the GPU. +//! +//! IMPORTANT: If slEvaluateFeature is pending on a command list, that command list must be flushed +//! before calling this method to prevent invalid resource access on the GPU. +//! +//! This method is NOT thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slFreeResources(sl::Feature feature, const sl::ViewportHandle& viewport); + +//! NOTE: sl::PreferenceFlags::eUseFrameBasedResourceTagging must be set when using this API to do +//! frame-based resource tagging for multiple frames in flight at the same time. +//! Evaluates feature +//! +//! Use this method to mark the section in your rendering pipeline +//! where specific feature should be injected. +//! +//! @param feature Feature we are working with +//! @param frame Current frame handle obtained from SL +//! @param inputs The chained structures providing the input data (viewport, tags, constants etc) +//! @param numInputs Number of inputs +//! @param cmdBuffer Command buffer to use (must be created on device where feature is supported) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! IMPORTANT: Frame and viewport must match whatever is used to set common and or feature options and constants (if any) +//! +//! NOTE: It is allowed to pass in buffer tags as inputs, they are considered to be a "local" tags and do NOT interact with +//! same tags sent in the global scope using slSetTag API. +//! +//! This method is NOT thread safe and requires DX/VK device to be created before calling it. +SL_API sl::Result slEvaluateFeature(sl::Feature feature, const sl::FrameToken& frame, const sl::BaseStructure** inputs, uint32_t numInputs, sl::CommandBuffer* cmdBuffer); + +//! Upgrade interface +//! +//! Use this method to upgrade basic D3D or DXGI interface to an SL proxy. +//! +//! @param baseInterface Pointer to a pointer to the base interface (for example ID3D12Device etc.) to be replaced in place. +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! IMPORTANT: This method should ONLY be used to support 3rd party SDKs like AMD AGS +//! which bypass SL or when using manual hooking. +//! +//! This method is NOT thread safe and should be called IMMEDIATELY after base interface is created. +SL_API sl::Result slUpgradeInterface(void** baseInterface); + +//! Obtain native interface +//! +//! Use this method to obtain underlying D3D or DXGI interface from an SL proxy. +//! +//! IMPORTANT: When calling NVAPI or other 3rd party SDKs from your application +//! it is recommended to provide native interfaces instead of SL proxies. +//! +//! @param proxyInterface Pointer to the SL proxy (D3D device, swap-chain etc) +//! @param baseInterface Pointer to a pointer to the base interface be returned. +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe +SL_API sl::Result slGetNativeInterface(void* proxyInterface, void** baseInterface); + +//! Gets specific feature's function +//! +//! Call this method to obtain various functions for the specified feature. See sl_$feature.h for details. +//! +//! @param feature Feature we are working with +//! @param functionName The name of the API to obtain (declared in sl_[$feature].h +//! @param function Pointer to the function to return +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! IMPORTANT: Must be called AFTER device is set by calling either slSetD3DDevice or slSetVulkanInfo. +//! +//! This method is thread safe. +SL_API sl::Result slGetFeatureFunction(sl::Feature feature, const char* functionName, void*& function); + +//! Gets unique frame token +//! +//! Call this method to obtain token for the unique frame identification. +//! +//! @param handle Frame token to return +//! @param frameIndex Frame index (optional, if not provided SL internal frame counting is used) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! NOTE: Normally SL would not expect more that 3 frames in flight due to added latency. +//! +//! This method is thread safe. +SL_API sl::Result slGetNewFrameToken(sl::FrameToken*& token, const uint32_t* frameIndex = nullptr); + +//! Set D3D device to use +//! +//! Use this method to specify which D3D device should be used. +//! +//! @param d3dDevice D3D device to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe and should be called IMMEDIATELY after main device is created. +SL_API sl::Result slSetD3DDevice(void* d3dDevice); + +#pragma endregion SL_API diff --git a/third_party/streamline/include/sl_core_types.h b/third_party/streamline/include/sl_core_types.h new file mode 100644 index 000000000..aa38649a1 --- /dev/null +++ b/third_party/streamline/include/sl_core_types.h @@ -0,0 +1,781 @@ +/* +* Copyright (c) 2022-2024 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include +#include + +#include "sl_struct.h" +#include "sl_consts.h" +#include "sl_version.h" +#include "sl_result.h" +#include "sl_appidentity.h" +#include "sl_device_wrappers.h" + +typedef struct ID3D11Resource ID3D11Resource; +typedef struct ID3D11Buffer ID3D11Buffer; +typedef struct ID3D11Texture2D ID3D11Texture2D; +typedef struct ID3D12Resource ID3D12Resource; + +// Forward declarations matching MS and VK specs +#ifdef VK_VERSION_1_0 +using SL_VKResult = VkResult; +#else +using SL_VKResult = int; +#endif +using HRESULT = long; + +namespace sl { + +using CommandBuffer = void; +using Device = void; + +//! Buffer types used for tagging +//! +//! IMPORTANT: Each tag must use the unique id +//! +using BufferType = uint32_t; + +// Friend function declaration to access private members for ABI validation static_asserts +namespace test +{ +constexpr void AbiValidation(); +} + +//! Depth buffer - IMPORTANT - Must be suitable to use with clipToPrevClip transformation (see Constants below) +constexpr BufferType kBufferTypeDepth = 0; +//! Object and optional camera motion vectors (see Constants below) +constexpr BufferType kBufferTypeMotionVectors = 1; +//! Color buffer with all post-processing effects applied but without any UI/HUD elements +constexpr BufferType kBufferTypeHUDLessColor = 2; +//! Color buffer containing jittered input data for the image scaling pass +constexpr BufferType kBufferTypeScalingInputColor = 3; +//! Color buffer containing results from the image scaling pass +constexpr BufferType kBufferTypeScalingOutputColor = 4; +//! Normals +constexpr BufferType kBufferTypeNormals = 5; +//! Roughness +constexpr BufferType kBufferTypeRoughness = 6; +//! Albedo +constexpr BufferType kBufferTypeAlbedo = 7; +//! Specular Albedo +constexpr BufferType kBufferTypeSpecularAlbedo = 8; +//! Indirect Albedo +constexpr BufferType kBufferTypeIndirectAlbedo = 9; +//! Specular Motion Vectors +constexpr BufferType kBufferTypeSpecularMotionVectors = 10; +//! Disocclusion Mask +constexpr BufferType kBufferTypeDisocclusionMask = 11; +//! Emissive +constexpr BufferType kBufferTypeEmissive = 12; +//! Exposure +constexpr BufferType kBufferTypeExposure = 13; +//! Buffer with normal and roughness in alpha channel +constexpr BufferType kBufferTypeNormalRoughness = 14; +//! Diffuse and camera ray length +constexpr BufferType kBufferTypeDiffuseHitNoisy = 15; +//! Diffuse denoised +constexpr BufferType kBufferTypeDiffuseHitDenoised = 16; +//! Specular and reflected ray length +constexpr BufferType kBufferTypeSpecularHitNoisy = 17; +//! Specular denoised +constexpr BufferType kBufferTypeSpecularHitDenoised = 18; +//! Shadow noisy +constexpr BufferType kBufferTypeShadowNoisy = 19; +//! Shadow denoised +constexpr BufferType kBufferTypeShadowDenoised = 20; +//! AO noisy +constexpr BufferType kBufferTypeAmbientOcclusionNoisy = 21; +//! AO denoised +constexpr BufferType kBufferTypeAmbientOcclusionDenoised = 22; +//! Optional - UI/HUD color and alpha +//! IMPORTANT: Please make sure that alpha channel has enough precision (for example do NOT use formats like R10G10B10A2) +constexpr BufferType kBufferTypeUIColorAndAlpha = 23; +//! Optional - Shadow pixels hint (set to 1 if a pixel belongs to the shadow area, 0 otherwise) +constexpr BufferType kBufferTypeShadowHint = 24; +//! Optional - Reflection pixels hint (set to 1 if a pixel belongs to the reflection area, 0 otherwise) +constexpr BufferType kBufferTypeReflectionHint = 25; +//! Optional - Particle pixels hint (set to 1 if a pixel represents a particle, 0 otherwise) +constexpr BufferType kBufferTypeParticleHint = 26; +//! Optional - Transparency pixels hint (set to 1 if a pixel belongs to the transparent area, 0 otherwise) +constexpr BufferType kBufferTypeTransparencyHint = 27; +//! Optional - Animated texture pixels hint (set to 1 if a pixel belongs to the animated texture area, 0 otherwise) +constexpr BufferType kBufferTypeAnimatedTextureHint = 28; +//! Optional - Bias for current color vs history hint - lerp(history, current, bias) (set to 1 to completely reject history) +constexpr BufferType kBufferTypeBiasCurrentColorHint = 29; +//! Optional - Ray-tracing distance (camera ray length) +constexpr BufferType kBufferTypeRaytracingDistance = 30; +//! Optional - Motion vectors for reflections +constexpr BufferType kBufferTypeReflectionMotionVectors = 31; +//! Optional - Position, in same space as eNormals +constexpr BufferType kBufferTypePosition = 32; +//! Optional - Indicates (via non-zero value) which pixels have motion/depth values that do not match the final color content at that pixel (e.g. overlaid, opaque Picture-in-Picture) +constexpr BufferType kBufferTypeInvalidDepthMotionHint = 33; +//! Alpha +constexpr BufferType kBufferTypeAlpha = 34; +//! Color buffer containing only opaque geometry +constexpr BufferType kBufferTypeOpaqueColor = 35; +//! Optional - Reduce reliance on history instead using current frame hint (0 if a pixel is not at all reactive and default composition should be used, 1 if fully reactive) +constexpr BufferType kBufferTypeReactiveMaskHint = 36; +//! Optional - Pixel lock adjustment hint (set to 1 if pixel lock should be completely removed, 0 otherwise) +constexpr BufferType kBufferTypeTransparencyAndCompositionMaskHint = 37; +//! Optional - Albedo of the reflection ray hit point. For multibounce reflections, this should be the albedo of the first non-specular bounce. +constexpr BufferType kBufferTypeReflectedAlbedo = 38; +//! Optional - Color buffer before particles are drawn. +constexpr BufferType kBufferTypeColorBeforeParticles = 39; +//! Optional - Color buffer before transparent objects are drawn. +constexpr BufferType kBufferTypeColorBeforeTransparency = 40; +//! Optional - Color buffer before fog is drawn. +constexpr BufferType kBufferTypeColorBeforeFog = 41; +//! Optional - Buffer containing the hit distance of a specular ray. +constexpr BufferType kBufferTypeSpecularHitDistance = 42; +//! Optional - Buffer that contains 3 components of a specular ray direction, and 1 component of specular hit distance. +constexpr BufferType kBufferTypeSpecularRayDirectionHitDistance = 43; +//! Optional - Buffer containing normalized direction of a specular ray. +constexpr BufferType kBufferTypeSpecularRayDirection = 44; +// !Optional - Buffer containing the hit distance of a diffuse ray. +constexpr BufferType kBufferTypeDiffuseHitDistance = 45; +//! Optional - Buffer that contains 3 components of a diffuse ray direction, and 1 component of diffuse hit distance. +constexpr BufferType kBufferTypeDiffuseRayDirectionHitDistance = 46; +//! Optional - Buffer containing normalized direction of a diffuse ray. +constexpr BufferType kBufferTypeDiffuseRayDirection = 47; +//! Optional - Buffer containing display resolution depth. +constexpr BufferType kBufferTypeHiResDepth = 48; +//! Required either this or kBufferTypeDepth - Buffer containing linear depth. +constexpr BufferType kBufferTypeLinearDepth = 49; +//! Optional - Bidirectional distortion field. 4 channels in normalized [0,1] pixel space. RG = distorted pixel to undistorted pixel displacement. BA = undistorted pixel to distorted pixel displacement. +constexpr BufferType kBufferTypeBidirectionalDistortionField = 50; +//!Optional - Buffer containing particles or other similar transparent effects rendered into it instead of passing it as part of the input color +constexpr BufferType kBufferTypeTransparencyLayer = 51; +//!Optional - Buffer to be used in addition to TransparencyLayer which allows 3-channels of Opacity versus 1-channel. +// In this case, TransparencyLayer represents Color (RcGcBc), TransparencyLayerOpacity represents alpha (RaGaBa)' +constexpr BufferType kBufferTypeTransparencyLayerOpacity = 52; +//! Optional - Swapchain buffer to be presented +constexpr BufferType kBufferTypeBackbuffer = 53; +//! Optional - Mask for pixels to skip warping +constexpr BufferType kBufferTypeNoWarpMask = 54; +//! Optional - Color buffer after particles are drawn (for research purposes) +constexpr BufferType kBufferTypeColorAfterParticles = 55; +//! Optional - Color buffer after transparent objects are drawn (for research purposes) +constexpr BufferType kBufferTypeColorAfterTransparency = 56; +//! Optional - Color buffer after fog is drawn (for research purposes) +constexpr BufferType kBufferTypeColorAfterFog = 57; +//! Optional - Subsurface scattering guide buffer +constexpr BufferType kBufferTypeScreenSpaceSubsurfaceScatteringGuide = 58; +//! Optional - Color buffer before subsurface scattering (for research purposes) +constexpr BufferType kBufferTypeColorBeforeScreenSpaceSubsurfaceScattering = 59; +//! Optional - Color buffer after subsurface scattering (for research purposes) +constexpr BufferType kBufferTypeColorAfterScreenSpaceSubsurfaceScattering = 60; +//! Optional - Refraction guide buffer (for research purposes) +constexpr BufferType kBufferTypeScreenSpaceRefractionGuide = 61; +//! Optional - Color buffer before refraction (for research purposes) +constexpr BufferType kBufferTypeColorBeforeScreenSpaceRefraction = 62; +//! Optional - Color buffer after refraction (for research purposes) +constexpr BufferType kBufferTypeColorAfterScreenSpaceRefraction = 63; +//! Optional - Depth of Field Buffer (for research purposes) +constexpr BufferType kBufferTypeDepthOfFieldGuide = 64; +//! Optional - Color buffer before Depth of Field (for research purposes) +constexpr BufferType kBufferTypeColorBeforeDepthOfField = 65; +//! Optional - Color buffer after Depth of Field (for research purposes) +constexpr BufferType kBufferTypeColorAfterDepthOfField = 66; +//! Optional - Color buffer that overrides the alpha channel of kBufferTypeScalingOutputColor +constexpr BufferType kBufferTypeScalingOutputAlpha = 67; +//! Optional buffer for responsivity mask +constexpr BufferType kBufferTypeResponsivityMask = 68; +//! Optional - UI Alpha +//! A 1 channel resource containing the alpha value of on-screen elements, between 0.0f and 1.0f inclusive. +//! Similar to kBufferTypeUIColorAndAlpha, but only the alpha channel for optimized run-time performance. +constexpr BufferType kBufferTypeUIAlpha = 69; +//! Input color for neural-net "uplift" passes +constexpr BufferType kBufferTypeUpliftInputColor = 70; +//! Output color for neural-net "uplift" passes +//! May alias kBufferTypeUpliftInputColor (in-place uplift); the feature transitions appropriately. +constexpr BufferType kBufferTypeUpliftOutputColor = 71; +//! Optional - 4-channel control mask consumed by uplift passes +constexpr BufferType kBufferTypeUpliftControlMask = 72; + +//! Features supported with this SDK +//! +//! IMPORTANT: Each feature must use a unique id +//! +using Feature = uint32_t; + +//! Deep Learning Super Sampling +constexpr Feature kFeatureDLSS = 0; + +//! Real-Time Denoiser (removed) +constexpr Feature kFeatureNRD_INVALID = 1; + +//! NVIDIA Image Scaling +constexpr Feature kFeatureNIS = 2; + +//! Reflex +constexpr Feature kFeatureReflex = 3; + +//! PC Latency +constexpr Feature kFeaturePCL = 4; + +//! DeepDVC +constexpr Feature kFeatureDeepDVC = 5; + +constexpr Feature kFeatureLatewarp = 6; + +//! DLSS Frame Generation +constexpr Feature kFeatureDLSS_G = 1000; + +//! DLSS Ray Reconstruction +constexpr Feature kFeatureDLSS_RR = 1001; + +constexpr Feature kFeatureNvPerf = 1002; + +constexpr Feature kFeatureDirectSR = 1003; + +constexpr Feature kFeatureDLSS_NR = 1004; + +// ImGUI +constexpr Feature kFeatureImGUI = 9999; + +#if defined(SL_UNITTEST_ONLY_CODE) +//! Dummy plugin for testing plugin.cpp functionality +constexpr Feature kFeatureDummyPlugin = 65534; +#endif + +//! Common feature, NOT intended to be used directly +constexpr Feature kFeatureCommon = UINT_MAX; + +//! Different levels for logging +enum class LogLevel : uint32_t +{ + //! No logging + eOff, + //! Default logging + eDefault, + //! Verbose logging + eVerbose, + //! Total count + eCount +}; + +//! Resource types +enum class ResourceType : char +{ + eTex2d, + eBuffer, + eCommandQueue, + eCommandBuffer, + eCommandPool, + eFence, + eSwapchain, + eHostFence, + // this type means that the only thing we know for sure about this resource is that it's castable to IUnknown + eUnknown, + eCount +}; + +//! Resource allocate information +//! +SL_STRUCT_BEGIN(ResourceAllocationDesc, StructType({ 0xbb57e5, 0x49a2, 0x4c23, { 0xa5, 0x19, 0xab, 0x92, 0x86, 0xe7, 0x40, 0x14 } }), kStructVersion1) + ResourceAllocationDesc(ResourceType _type, void* _desc, uint32_t _state, void* _heap) : BaseStructure(ResourceAllocationDesc::s_structType, kStructVersion1), type(_type),desc(_desc),state(_state),heap(_heap){}; + //! Indicates the type of resource + ResourceType type = ResourceType::eTex2d; + //! D3D12_RESOURCE_DESC/VkImageCreateInfo/VkBufferCreateInfo + void* desc{}; + //! Initial state as D3D12_RESOURCE_STATES or VkMemoryPropertyFlags + uint32_t state = 0; + //! CD3DX12_HEAP_PROPERTIES or nullptr + void* heap{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + + +//! Subresource range information, for Vulkan resources +//! +//! {8D4C316C-D402-4524-89A7-14E79E638E3A} +SL_STRUCT_BEGIN(SubresourceRange, StructType({ 0x8d4c316c, 0xd402, 0x4524, { 0x89, 0xa7, 0x14, 0xe7, 0x9e, 0x63, 0x8e, 0x3a } }), kStructVersion1) + //! Vulkan subresource aspectMask + uint32_t aspectMask; + //! Vulkan subresource baseMipLevel + uint32_t baseMipLevel; + //! Vulkan subresource levelCount + uint32_t levelCount; + //! Vulkan subresource baseArrayLayer + uint32_t baseArrayLayer; + //! Vulkan subresource layerCount + uint32_t layerCount; +SL_STRUCT_END() + +//! Native resource +//! +//! {3A9D70CF-2418-4B72-8391-13F8721C7261} +SL_STRUCT_BEGIN(Resource, StructType({ 0x3a9d70cf, 0x2418, 0x4b72, { 0x83, 0x91, 0x13, 0xf8, 0x72, 0x1c, 0x72, 0x61 } }), kStructVersion1) + //! Constructors + //! + //! Resource type, native pointer are MANDATORY always + //! Resource state is MANDATORY unless using D3D11 + //! Resource view, description etc. are MANDATORY only when using Vulkan + //! + Resource(ResourceType _type, void* _native, void* _mem, void* _view, uint32_t _state = UINT_MAX) : BaseStructure(Resource::s_structType, kStructVersion1), type(_type), native(_native), memory(_mem), view(_view), state(_state){}; + Resource(ResourceType _type, void* _native, uint32_t _state = UINT_MAX) : BaseStructure(Resource::s_structType, kStructVersion1), type(_type), native(_native), state(_state) {}; + + //! Conversion helpers for D3D + inline operator ID3D12Resource* () { return reinterpret_cast(native); } + inline operator ID3D11Resource* () { return reinterpret_cast(native); } + inline operator ID3D11Buffer* () { return reinterpret_cast(native); } + inline operator ID3D11Texture2D* () { return reinterpret_cast(native); } + + //! Indicates the type of resource + ResourceType type = ResourceType::eTex2d; + //! ID3D11Resource/ID3D12Resource/VkBuffer/VkImage + void* native{}; + //! vkDeviceMemory or nullptr + void* memory{}; + //! VkImageView/VkBufferView or nullptr + void* view{}; + //! State as D3D12_RESOURCE_STATES or VkImageLayout + //! + //! IMPORTANT: State is MANDATORY and needs to be correct when tagged resources are actually used. + //! + uint32_t state = UINT_MAX; + //! Width in pixels + uint32_t width{}; + //! Height in pixels + uint32_t height{}; + //! Native format + uint32_t nativeFormat{}; + //! Number of mip-map levels + uint32_t mipLevels{}; + //! Number of arrays + uint32_t arrayLayers{}; + //! Virtual address on GPU (if applicable) + uint64_t gpuVirtualAddress{}; + //! VkImageCreateFlags + uint32_t flags; + //! VkImageUsageFlags + uint32_t usage{}; + //! Internal flags (bitfield) - do not modify + enum InternalFlags : uint16_t + { + eNone = 0, + //! Resource wraps a Vulkan swapchain image not allocated by SL or the host callback. + //! The release callback must not be invoked for such resources. + eVulkanSwapChainImage = 1 << 0, + }; + uint16_t internalFlags{}; + //! Reserved for future use + uint16_t reserved{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Specifies life-cycle for the tagged resource +//! +//! IMPORTANT: Use 'eOnlyValidNow' and 'eValidUntilEvaluate' ONLY when really needed since it can result in wasting VRAM if SL ends up making unnecessary copies. +//! +//! If integrating features, like for example DLSS-G, which require tags to be 'eValidUntilPresent' please try to tag everything as 'eValidUntilPresent' first +//! and only make modifications if upon visual inspection you notice that tags are corrupted when used during the Present frame call. +enum ResourceLifecycle +{ + //! Resource can change, get destroyed or reused for other purposes after it is provided to SL + eOnlyValidNow, + //! Resource does NOT change, gets destroyed or reused for other purposes from the moment it is provided to SL until the frame is presented + eValidUntilPresent, + //! Resource does NOT change, gets destroyed or reused for other purposes from the moment it is provided to SL until after the slEvaluateFeature call has returned. + eValidUntilEvaluate +}; + +//! Tagged resource +//! +//! {4C6A5AAD-B445-496C-87FF-1AF3845BE653} +//! Extensions as part of the `next` ptr: +//! PrecisionInfo +SL_STRUCT_BEGIN(ResourceTag, StructType({ 0x4c6a5aad, 0xb445, 0x496c, { 0x87, 0xff, 0x1a, 0xf3, 0x84, 0x5b, 0xe6, 0x53 } }), kStructVersion1) + ResourceTag(Resource* r, BufferType t, ResourceLifecycle l, const Extent* e = nullptr) + : BaseStructure(ResourceTag::s_structType, kStructVersion1), resource(r), type(t), lifecycle(l) + { + if (e) extent = *e; + }; + + //! Resource description + Resource* resource{}; + //! Type of the tagged buffer + BufferType type{}; + //! The life-cycle for the tag, if resource is volatile a valid command buffer must be specified + ResourceLifecycle lifecycle{}; + //! The area of the tagged resource to use (if using the entire resource leave as null) + Extent extent{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +// +//! Precision info, optional extension for ResourceTag. +//! +//! {98F6E9BA-8D16-4831-A802-4D3B52FF26BF} +//! Extensions as part of the `next` ptr: +//! ResourceTag +SL_STRUCT_BEGIN(PrecisionInfo, StructType({ 0x98f6e9ba, 0x8d16, 0x4831, { 0xa8, 0x2, 0x4d, 0x3b, 0x52, 0xff, 0x26, 0xbf } }), kStructVersion1) + // Formula used to convert the low-precision data to high-precision + enum PrecisionFormula : uint32_t + { + eNoTransform = 0, // hi = lo, essentially no conversion is done + eLinearTransform, // hi = lo * scale + bias + }; + + PrecisionInfo(PrecisionInfo::PrecisionFormula formula, float bias, float scale) + : BaseStructure(PrecisionInfo::s_structType, kStructVersion1), conversionFormula(formula), bias(bias), scale(scale) {}; + + static std::string getPrecisionFormulaAsStr(PrecisionFormula formula) + { + switch (formula) + { + case eNoTransform: + return "eNoTransform"; + case eLinearTransform: + return "eLinearTransform"; + default: + assert("Invalid PrecisionFormula" && false); + return "Unknown"; + } + }; + + PrecisionFormula conversionFormula{ eNoTransform }; + float bias{ 0.0f }; + float scale{ 1.0f }; + + inline operator bool() const { return conversionFormula != eNoTransform; } + inline bool operator==(const PrecisionInfo& rhs) const + { + return conversionFormula == rhs.conversionFormula && bias == rhs.bias && scale == rhs.scale; + } + inline bool operator!=(const PrecisionInfo& rhs) const + { + return !operator==(rhs); + } +SL_STRUCT_END() + +//! Resource allocation/deallocation callbacks +//! +//! Use these callbacks to gain full control over +//! resource life cycle and memory allocation tracking. +//! +//! @param device - Device to be used (vkDevice or ID3D11Device or ID3D12Device) +//! +//! IMPORTANT: Textures must have the pixel shader resource +//! and the unordered access view flags set +using PFun_ResourceAllocateCallback = Resource(const ResourceAllocationDesc* desc, void* device); +using PFun_ResourceReleaseCallback = void(Resource* resource, void* device); + +//! Log type +enum class LogType : uint32_t +{ + //! Controlled by LogLevel, SL can show more information in eLogLevelVerbose mode + eInfo, + //! Always shown regardless of LogLevel + eWarn, + eError, + //! Total count + eCount +}; + +//! Logging callback +//! +//! Use these callbacks to track messages posted in the log. +//! If any of the SL methods returns false use eLogTypeError +//! type to track down what went wrong and why. +using PFun_LogMessageCallback = void(LogType type, const char* msg); + +struct APIError +{ + union + { + HRESULT hres; + SL_VKResult vkRes; + }; +}; +//! Returns an error returned by DXGI or Vulkan API calls 'vkQueuePresentKHR' and 'vkAcquireNextImageKHR' +using PFunOnAPIErrorCallback = void(const APIError& lastError); + +//! Optional flags +enum class PreferenceFlags : uint64_t +{ + //! Set by default - Disables command list state tracking - Host application is responsible for restoring CL state correctly after each 'slEvaluateFeature' call + eDisableCLStateTracking = 1 << 0, + //! Optional - Disables debug text on screen in development builds + eDisableDebugText = 1 << 1, + //! Optional - IMPORTANT: Only to be used in the advanced integration mode, see the 'manual hooking' programming guide for more details + eUseManualHooking = 1 << 2, + //! Optional - Enables downloading of Over The Air (OTA) updates for SL and NGX + //! This will invoke the OTA updater to look for new updates. A separate + //! flag below is used to control whether or not OTA-downloaded SL Plugins are + //! loaded. + eAllowOTA = 1 << 3, + //! Do not check OS version when deciding if feature is supported or not + //! + //! IMPORTANT: ONLY SET THIS FLAG IF YOU KNOW WHAT YOU ARE DOING. + //! + //! VARIOUS WIN APIs INCLUDING BUT NOT LIMITED TO `IsWindowsXXX`, `GetVersionX`, `rtlGetVersion` ARE KNOWN FOR RETURNING INCORRECT RESULTS. + eBypassOSVersionCheck = 1 << 4, + //! Optional - If specified SL will create DXGI factory proxy rather than modifying the v-table for the base interface. + //! + //! This can help with 3rd party overlays which are NOT integrated with the host application but rather operate via injection. + eUseDXGIFactoryProxy = 1 << 5, + //! Optional - Enables loading of plugins downloaded Over The Air (OTA), to + //! be used in conjunction with the eAllowOTA flag. + eLoadDownloadedPlugins = 1 << 6, + + //! Optional - allow tagging of resources for frame. This helps distinguish whether slEvaluateFeature needs to do frame-based tagging + //! of resources which wasn't the case earlier. + eUseFrameBasedResourceTagging = 1 << 7, + + //! All preference flags. This isn't expected to be used directly by integrations, but may be useful for e.g. writing helpers. + eAll = eDisableCLStateTracking | eDisableDebugText | eUseManualHooking | eAllowOTA | eBypassOSVersionCheck | eUseDXGIFactoryProxy | eLoadDownloadedPlugins | eUseFrameBasedResourceTagging +}; + +SL_ENUM_OPERATORS_64(PreferenceFlags) + +//! Application preferences +//! +//! {1CA10965-BF8E-432B-8DA1-6716D879FB14} +SL_STRUCT_BEGIN(Preferences, StructType({ 0x1ca10965, 0xbf8e, 0x432b, { 0x8d, 0xa1, 0x67, 0x16, 0xd8, 0x79, 0xfb, 0x14 } }), kStructVersion1) + //! Optional - In non-production builds it is useful to enable debugging console window + bool showConsole = false; + //! Optional - Various logging levels + LogLevel logLevel = LogLevel::eDefault; + //! Optional - Absolute paths to locations where to look for plugins, first path in the list has the highest priority + const wchar_t** pathsToPlugins{}; + //! Optional - Number of paths to search + uint32_t numPathsToPlugins = 0; + //! Optional - Absolute path to location where logs and other data should be stored + //! + //! NOTE: Set this to nullptr in order to disable logging to a file + const wchar_t* pathToLogsAndData{}; + //! Optional - Allows resource allocation tracking on the host side + PFun_ResourceAllocateCallback* allocateCallback{}; + //! Optional - Allows resource deallocation tracking on the host side + PFun_ResourceReleaseCallback* releaseCallback{}; + //! Optional - Allows log message tracking including critical errors if they occur + PFun_LogMessageCallback* logMessageCallback{}; + //! Optional - Flags used to enable or disable advanced options + PreferenceFlags flags = PreferenceFlags::eDisableCLStateTracking | PreferenceFlags::eAllowOTA | PreferenceFlags::eLoadDownloadedPlugins; + //! Required - Features to load (assuming appropriate plugins are found), if not specified NO features will be loaded by default + const Feature* featuresToLoad{}; + //! Required - Number of features to load, only used when list is not a null pointer + uint32_t numFeaturesToLoad{}; + //! Optional - Id provided by NVIDIA, if not specified then engine type and version are required + uint32_t applicationId{}; + //! Optional - Type of the rendering engine used, if not specified then applicationId is required + EngineType engine = EngineType::eCustom; + //! Optional - Version of the rendering engine used + const char* engineVersion{}; + //! Optional - GUID (like for example 'a0f57b54-1daf-4934-90ae-c4035c19df04') + const char* projectId{}; + //! Optional - Which rendering API host is planning to use + //! + //! NOTE: To ensure correct `slGetFeatureRequirements` behavior please specify if planning to use Vulkan. + RenderAPI renderAPI = RenderAPI::eD3D12; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Frame tracking handle +//! +//! IMPORTANT: Use slGetNewFrameToken to obtain unique instance +//! +//! {830A0F35-DB84-4171-A804-59B206499B18} +SL_STRUCT_PROTECTED_BEGIN(FrameToken, StructType({ 0x830a0f35, 0xdb84, 0x4171, { 0xa8, 0x4, 0x59, 0xb2, 0x6, 0x49, 0x9b, 0x18 } }), kStructVersion1) + //! Helper operator to obtain current frame index + virtual operator uint32_t() const = 0; +SL_STRUCT_END() + +//! Handle for the unique viewport +//! +//! {171B6435-9B3C-4FC8-9994-FBE52569AAA4} +SL_STRUCT_BEGIN(ViewportHandle, StructType({ 0x171b6435, 0x9b3c, 0x4fc8, { 0x99, 0x94, 0xfb, 0xe5, 0x25, 0x69, 0xaa, 0xa4 } }), kStructVersion1) + ViewportHandle(uint32_t v) : BaseStructure(ViewportHandle::s_structType, kStructVersion1), value(v) {} + ViewportHandle(int32_t v) : BaseStructure(ViewportHandle::s_structType, kStructVersion1), value(v) {} + operator uint32_t() const { return value; } +private: + uint32_t value = UINT_MAX; + friend constexpr void sl::test::AbiValidation(); +SL_STRUCT_END() + +//! Specifies feature requirement flags +//! +enum class FeatureRequirementFlags : uint32_t +{ + //! Rendering APIs + eD3D11Supported = 1 << 0, + eD3D12Supported = 1 << 1, + eVulkanSupported = 1 << 2, + //! If set V-Sync must be disabled when feature is active + eVSyncOffRequired = 1 << 3, + //! If set GPU hardware scheduling OS feature must be turned on + eHardwareSchedulingRequired = 1 << 4, + + //! All feature requirement flags. This isn't expected to be used directly by integrations, but may be useful for e.g. writing helpers. + eAll = eD3D11Supported | eD3D12Supported | eVulkanSupported | eVSyncOffRequired | eHardwareSchedulingRequired +}; + +SL_ENUM_OPERATORS_32(FeatureRequirementFlags); + +//! Specifies feature requirements +//! +//! {66714097-AC6D-4BC6-8915-1E0F55A6B61F} +SL_STRUCT_BEGIN(FeatureRequirements, StructType({ 0x66714097, 0xac6d, 0x4bc6, { 0x89, 0x15, 0x1e, 0xf, 0x55, 0xa6, 0xb6, 0x1f } }), kStructVersion2) + //! Various Flags + FeatureRequirementFlags flags {}; + + //! Feature will create this many CPU threads + uint32_t maxNumCPUThreads{}; + + //! Feature supports only this many viewports + uint32_t maxNumViewports{}; + + //! Required buffer tags + uint32_t numRequiredTags{}; + const BufferType* requiredTags{}; + + //! OS and Driver versions + Version osVersionDetected{}; + Version osVersionRequired{}; + Version driverVersionDetected{}; + Version driverVersionRequired{}; + + //! Vulkan specific bits + + //! Command queues + uint32_t vkNumComputeQueuesRequired{}; + uint32_t vkNumGraphicsQueuesRequired{}; + + //! Device extensions + uint32_t vkNumDeviceExtensions{}; + const char** vkDeviceExtensions{}; + //! Instance extensions + uint32_t vkNumInstanceExtensions{}; + const char** vkInstanceExtensions{}; + //! 1.2 features + //! + //! NOTE: Use getVkPhysicalDeviceVulkan12Features from sl_helpers_vk.h + uint32_t vkNumFeatures12{}; + const char** vkFeatures12{}; + //! 1.3 features + //! + //! NOTE: Use getVkPhysicalDeviceVulkan13Features from sl_helpers_vk.h + uint32_t vkNumFeatures13{}; + const char** vkFeatures13{}; + + //! Vulkan optical flow feature + uint32_t vkNumOpticalFlowQueuesRequired{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Specifies feature's version +//! +//! {6D5B51F0-076B-486D-9995-5A561043F5C1} +SL_STRUCT_BEGIN(FeatureVersion, StructType({ 0x6d5b51f0, 0x76b, 0x486d, { 0x99, 0x95, 0x5a, 0x56, 0x10, 0x43, 0xf5, 0xc1 } }), kStructVersion1) + //! SL version + Version versionSL{}; + //! NGX version (if feature is using NGX, null otherwise) + Version versionNGX{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Specifies either DXGI adapter or VK physical device +//! +//! {0677315F-A746-4492-9F42-CB6142C9C3D4} +SL_STRUCT_BEGIN(AdapterInfo, StructType({ 0x677315f, 0xa746, 0x4492, { 0x9f, 0x42, 0xcb, 0x61, 0x42, 0xc9, 0xc3, 0xd4 } }), kStructVersion1) + //! Locally unique identifier + uint8_t* deviceLUID {}; + //! Size in bytes + uint32_t deviceLUIDSizeInBytes{}; + //! Vulkan Specific, if specified LUID will be ignored + void* vkPhysicalDevice{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! A simple array wrapper designed for safe use across DLL boundaries. +//! Since different DLLs may use different memory allocators, this class +//! relies on an IAllocator pointer to ensure that memory is allocated +//! and freed consistently within the same runtime. +struct IAllocator +{ + virtual ~IAllocator() = default; + virtual void *allocate(uint32_t nBytes) = 0; + virtual void free(void *p) = 0; +}; +template +struct Array +{ + inline Array() {} + inline ~Array() { destroy(); } + inline uint32_t size() const { return m_size; } + inline void copyFrom(IAllocator *pAllocator, const std::vector& src) + { + // if they give us data - we need the allocator + assert(pAllocator || src.size() == 0); + destroy(); + if (src.size() == 0) return; + m_pAllocator = pAllocator; + m_size = static_cast(src.size()); + m_pData = (T*)m_pAllocator->allocate(m_size * sizeof(T)); + for (uint32_t i = 0; i < m_size; ++i) + m_pData[i] = src[i]; + } + inline void copyTo(std::vector& dst) + { + dst.resize(m_size); + for (uint32_t i = 0; i < m_size; ++i) + dst[i] = m_pData[i]; + } + inline T& operator[](uint32_t index) + { + assert(index < m_size); + return m_pData[index]; + } + inline const T& operator[](uint32_t index) const + { + assert(index < m_size); + return m_pData[index]; + } + inline void destroy() + { + if (m_pData) m_pAllocator->free(m_pData); + m_pAllocator = nullptr; + m_pData = nullptr; + m_size = 0; + } + // Prevent copying + Array(const Array&) = delete; + Array& operator=(const Array&) = delete; + private: + T* m_pData{}; + uint32_t m_size{}; + // the allocator that was used to allocate memory + IAllocator *m_pAllocator{}; +}; + +} diff --git a/third_party/streamline/include/sl_deepdvc.h b/third_party/streamline/include/sl_deepdvc.h new file mode 100644 index 000000000..755cd95e6 --- /dev/null +++ b/third_party/streamline/include/sl_deepdvc.h @@ -0,0 +1,103 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl.h" +#include "sl_helpers.h" + +namespace sl +{ + +enum class DeepDVCMode : uint32_t +{ + eOff, + eOn, + eCount +}; + +// {23288AAD-7E7E-BE2A-916F-27DA30A3046B} +SL_STRUCT_BEGIN(DeepDVCOptions, StructType({ 0x23288aad, 0x7e7e, 0xbe2a, { 0x91, 0x67, 0x27, 0xda, 0x30, 0xa3, 0x04, 0x6b } }), kStructVersion1) + //! Specifies which mode should be used + DeepDVCMode mode = DeepDVCMode::eOff; + //! Specifies intensity level in range [0,1]. Default 0.5 + float intensity = 0.5f; + //! Specifies saturation boost in range [0,1]. Default 0.25 + float saturationBoost = 0.25f; +SL_STRUCT_END() + +//! Returned by the DeepDVC plugin +//! +// {934FD3D3-B34C-70A7-A139-F19FE04D91D3} +SL_STRUCT_BEGIN(DeepDVCState, StructType({ 0x934fd3d3, 0xb34c, 0x70a7, { 0xa1, 0x39, 0xf1, 0x9f, 0xe0, 0x4d, 0x91, 0xd3 } }), kStructVersion1) + //! Specified the amount of memory expected to be used + uint64_t estimatedVRAMUsageInBytes {}; +SL_STRUCT_END() + +} + +//! Sets DeepDVC options +//! +//! Call this method to turn DeepDVC on/off, change mode etc. +//! +//! @param viewport Specified viewport we are working with +//! @param options Specifies DeepDVC options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDeepDVCSetOptions = sl::Result(const sl::ViewportHandle& viewport, const sl::DeepDVCOptions& options); + +//! Provides DeepDVC state for the given viewport +//! +//! Call this method to obtain VRAM usage and other information. +//! +//! @param viewport Specified viewport we are working with +//! @param state Reference to a structure where state is to be returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDeepDVCGetState = sl::Result(const sl::ViewportHandle& viewport, sl::DeepDVCState& state); + +//! HELPERS +//! +inline sl::Result slDeepDVCSetOptions(const sl::ViewportHandle& viewport, const sl::DeepDVCOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDeepDVC, slDeepDVCSetOptions); + return s_slDeepDVCSetOptions(viewport, options); +} + +inline sl::Result slDeepDVCGetState(const sl::ViewportHandle& viewport, sl::DeepDVCState& state) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDeepDVC, slDeepDVCGetState); + return s_slDeepDVCGetState(viewport, state); +} +//#define SL_CASE_STR(a) case a : return #a; + +inline const char* getDeepDVCModeAsStr(sl::DeepDVCMode v) +{ + switch (v) + { + SL_CASE_STR(sl::DeepDVCMode::eOff); + SL_CASE_STR(sl::DeepDVCMode::eOn); + }; + return "Unknown"; +} diff --git a/third_party/streamline/include/sl_device_wrappers.h b/third_party/streamline/include/sl_device_wrappers.h new file mode 100644 index 000000000..74d3f9372 --- /dev/null +++ b/third_party/streamline/include/sl_device_wrappers.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +#include "sl_struct.h" + +namespace sl +{ + +//! Rendering API +//! +enum class RenderAPI : uint32_t +{ + eD3D11, + eD3D12, + eVulkan, + eCount +}; + +} diff --git a/third_party/streamline/include/sl_directsr.h b/third_party/streamline/include/sl_directsr.h new file mode 100644 index 000000000..5655beb35 --- /dev/null +++ b/third_party/streamline/include/sl_directsr.h @@ -0,0 +1,173 @@ +/* +* Copyright (c) 2024 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl_struct.h" +#include + +struct ID3D12CommandQueue; +namespace sl +{ + +enum class DirectSROptimizationType : uint32_t +{ + eBalanced, + eHighQuality, + eMaxQuality, + eHighPerformance, + eMaxPerformance, + ePowerSaving, + eMaxPowerSaving, + + eCount +}; + +enum class DirectSRVariantFlags : uint32_t +{ + eNone = 0x0, + eSupportsExposureScaleTexture = 0x1, + eSupportsIgnoreHistoryMask = 0x2, + eNative = 0x4, + eSupportsReactiveMask = 0x8, + eSupportsSharpness = 0x10, + eDisallowsRegionOffsets = 0x20, + + eAll = eSupportsExposureScaleTexture | eSupportsIgnoreHistoryMask | eNative | eSupportsReactiveMask | eSupportsSharpness | eDisallowsRegionOffsets +}; + +// {1AD87504-774E-4BF3-9633-A44D1F7F9CB8} +SL_STRUCT_BEGIN(DirectSROptions, StructType({ 0x1ad87504, 0x774e, 0x4bf3, { 0x96, 0x33, 0xa4, 0x4d, 0x1f, 0x7f, 0x9c, 0xb8 } }), kStructVersion1) + // DirectSR variant index as enumerated + uint32_t variantIndex; + + // D3D12 command queue to execute work on + ID3D12CommandQueue *pCommandQueue; + + //! Specifies which mode should be used + DirectSROptimizationType optType; + + //! Specifies output (final) target width + uint32_t outputWidth = INVALID_UINT; + + //! Specifies output (final) target height + uint32_t outputHeight = INVALID_UINT; + + //! Specifies sharpening level in range [0,1] + float sharpness = 0.0f; + + //! Specifies pre-exposure value + float preExposure = 1.0f; + + //! Specifies exposure scale value + float exposureScale = 1.0f; + + //! Specifies if tagged color buffers are full HDR or not (DLSS in HDR pipeline or not) + Boolean colorBuffersHDR = Boolean::eTrue; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by DirectSR plugin +//! +//! {1BD0C637-A28F-41F2-BC91-B421FAEE8E1E} +SL_STRUCT_BEGIN(DirectSROptimalSettings, StructType({ 0x1bd0c637, 0xa28f, 0x41f2, { 0xbc, 0x91, 0xb4, 0x21, 0xfa, 0xee, 0x8e, 0x1e } }), kStructVersion1) +//! Specifies render area width + uint32_t optimalRenderWidth{}; + //! Specifies render area height + uint32_t optimalRenderHeight{}; + //! Specifies minimal render area width + uint32_t renderWidthMin{}; + //! Specifies minimal render area height + uint32_t renderHeightMin{}; + //! Specifies maximal render area width + uint32_t renderWidthMax{}; + //! Specifies maximal render area height + uint32_t renderHeightMax{}; + + // optimal color format + DXGI_FORMAT optimalColorFormat; + + // optimal depth format + DXGI_FORMAT optimalDepthFormat; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by DirectSR plugin +//! +//! {38216184-79ba-48cb-93f5-7a8a59382fdf} +SL_STRUCT_BEGIN(DirectSRVariantInfo, StructType({ 0x38216184, 0x79ba, 0x48cb, { 0x93, 0xf5, 0x7a, 0x8a, 0x59, 0x38, 0x2f, 0xdf } }), kStructVersion1) + char name[128]; + sl::DirectSRVariantFlags flags; + sl::DirectSROptimizationType optimizationRankings[7]; + DXGI_FORMAT optimalTargetFormat; + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} + +//! Provides optimal DirectSR settings +//! +//! Call this method to obtain optimal render target size and other DirectSR related settings. +//! +//! @param options Specifies DirectSR options to use +//! @param settings Reference to a structure where settings are returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDirectSRGetOptimalSettings = sl::Result(const sl::DirectSROptions & options, sl::DirectSROptimalSettings & settings); + +//! Retrive information about the available DirectSR variants. +using PFun_slDirectSRGetVariantInfo = sl::Result(uint32_t *numVariants, sl::DirectSRVariantInfo *variantInfo); + +//! Sets DirectSR options +//! +//! Call this method to turn DirectSR on/off, change mode etc. +//! +//! @param viewport Specified viewport we are working with +//! @param options Specifies DirectSR options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDirectSRSetOptions = sl::Result(const sl::ViewportHandle& viewport, const sl::DirectSROptions& options); + +//! HELPERS +//! +inline sl::Result slDirectSRGetOptimalSettings(const sl::DirectSROptions& options, sl::DirectSROptimalSettings& settings) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDirectSR, slDirectSRGetOptimalSettings); + return s_slDirectSRGetOptimalSettings(options, settings); +} + +inline sl::Result slDirectSRGetVariantInfo(uint32_t *numVariants, sl::DirectSRVariantInfo *variantInfo) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDirectSR, slDirectSRGetVariantInfo); + return s_slDirectSRGetVariantInfo(numVariants, variantInfo); +} + +inline sl::Result slDirectSRSetOptions(const sl::ViewportHandle& viewport, const sl::DirectSROptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDirectSR, slDirectSRSetOptions); + return s_slDirectSRSetOptions(viewport, options); +} + diff --git a/third_party/streamline/include/sl_dlss.h b/third_party/streamline/include/sl_dlss.h new file mode 100644 index 000000000..3aac47be6 --- /dev/null +++ b/third_party/streamline/include/sl_dlss.h @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#if __cplusplus >= 201402L +#define SR_DEPRECATED_SHARPENING [[deprecated("Sharpness is not supported")]] +#else +#define SR_DEPRECATED_SHARPENING +#endif + +namespace sl +{ + +enum class DLSSMode : uint32_t +{ + eOff, + eMaxPerformance, + eBalanced, + eMaxQuality, + eUltraPerformance, + eUltraQuality, + eDLAA, + eCount, +}; + +enum class DLSSPreset : uint32_t +{ + //! Default behavior, may or may not change after an OTA + eDefault, + //! Fixed DL models + // ePresetA removed, use presets J or K + // ePresetB removed, use presets J or K + // ePresetC removed, use presets J or K + // ePresetD removed, use presets J or K + ePresetE = 5, // Deprecated + ePresetF = 6, // Deprecated + ePresetG = 7, // Reverts to default, not recommended to use + ePresetH = 8, // Reverts to default, not recommended to use + ePresetI = 9, // Reverts to default, not recommended to use + ePresetJ = 10, // Similar to preset K. Preset J might exhibit slightly less ghosting at the cost of extra flickering. Preset K is generally recommended over preset J + ePresetK = 11, // Default preset for DLAA/Balanced/Quality modes that is transformer based. Best image quality preset at a higher performance cost + ePresetL = 12, // Default preset for UltraPerformance mode. Delivers a sharper, more stable image with less ghosting than Preset J, K but are more expensive performance wise + ePresetM = 13, // Default preset for Performance mode. Delivers similar image quality improvements as Preset L but closer in speed to Presets J, K + ePresetN = 14, // Reverts to default, not recommended to use + ePresetO = 15, // Reverts to default, not recommended to use + + eCount +}; + +// {6AC826E4-4C61-4101-A92D-638D421057B8} +SL_STRUCT_BEGIN(DLSSOptions, StructType({ 0x6ac826e4, 0x4c61, 0x4101, { 0xa9, 0x2d, 0x63, 0x8d, 0x42, 0x10, 0x57, 0xb8 } }), kStructVersion3) + //! Specifies which mode should be used + DLSSMode mode = DLSSMode::eOff; + //! Specifies output (final) target width + uint32_t outputWidth = INVALID_UINT; + //! Specifies output (final) target height + uint32_t outputHeight = INVALID_UINT; + //! Specifies sharpening level in range [0,1] this is a deprecated field + float sharpness SR_DEPRECATED_SHARPENING = 0.0f; + //! Specifies pre-exposure value + float preExposure = 1.0f; + //! Specifies exposure scale value + float exposureScale = 1.0f; + //! Specifies if tagged color buffers are full HDR or not (DLSS in HDR pipeline or not) + Boolean colorBuffersHDR = Boolean::eTrue; + //! Specifies if indicator on screen should invert axis + Boolean indicatorInvertAxisX = Boolean::eFalse; + //! Specifies if indicator on screen should invert axis + Boolean indicatorInvertAxisY = Boolean::eFalse; + //! Presets + DLSSPreset dlaaPreset = DLSSPreset::eDefault; + DLSSPreset qualityPreset = DLSSPreset::eDefault; + DLSSPreset balancedPreset = DLSSPreset::eDefault; + DLSSPreset performancePreset = DLSSPreset::eDefault; + DLSSPreset ultraPerformancePreset = DLSSPreset::eDefault; + DLSSPreset ultraQualityPreset = DLSSPreset::eDefault; + + //! Specifies if the setting for AutoExposure is used + Boolean useAutoExposure = Boolean::eFalse; + + //! Whether or not the alpha channel should be upscaled (if false, only RGB is upscaled) + //! Enabling alpha upscaling may impact performance + Boolean alphaUpscalingEnabled = Boolean::eFalse; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by DLSS plugin +//! +//! {EF1D0957-FD58-4DF7-B504-8B69D8AA6B76} +SL_STRUCT_BEGIN(DLSSOptimalSettings, StructType({ 0xef1d0957, 0xfd58, 0x4df7, { 0xb5, 0x4, 0x8b, 0x69, 0xd8, 0xaa, 0x6b, 0x76 } }), kStructVersion1) + //! Specifies render area width + uint32_t optimalRenderWidth{}; + //! Specifies render area height + uint32_t optimalRenderHeight{}; + //! Specifies the optimal sharpness value + float optimalSharpness{}; + //! Specifies minimal render area width + uint32_t renderWidthMin{}; + //! Specifies minimal render area height + uint32_t renderHeightMin{}; + //! Specifies maximal render area width + uint32_t renderWidthMax{}; + //! Specifies maximal render area height + uint32_t renderHeightMax{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by DLSS plugin +//! +//! {9366B056-8C01-463C-BB91-E68782636CE9} +SL_STRUCT_BEGIN(DLSSState, StructType({ 0x9366b056, 0x8c01, 0x463c, { 0xbb, 0x91, 0xe6, 0x87, 0x82, 0x63, 0x6c, 0xe9 } }), kStructVersion1) + //! Specified the amount of memory expected to be used + uint64_t estimatedVRAMUsageInBytes{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} + +//! Provides optimal DLSS settings +//! +//! Call this method to obtain optimal render target size and other DLSS related settings. +//! +//! @param options Specifies DLSS options to use +//! @param settings Reference to a structure where settings are returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSGetOptimalSettings = sl::Result(const sl::DLSSOptions & options, sl::DLSSOptimalSettings & settings); + +//! Provides DLSS state for the given viewport +//! +//! Call this method to obtain optimal render target size and other DLSS related settings. +//! +//! @param viewport Specified viewport we are working with +//! @param state Reference to a structure where state is to be returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSGetState = sl::Result(const sl::ViewportHandle & viewport, sl::DLSSState & state); + +//! Sets DLSS options +//! +//! Call this method to turn DLSS on/off, change mode etc. +//! +//! @param viewport Specified viewport we are working with +//! @param options Specifies DLSS options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSSetOptions = sl::Result(const sl::ViewportHandle& viewport, const sl::DLSSOptions& options); + +//! HELPERS +//! +inline sl::Result slDLSSGetOptimalSettings(const sl::DLSSOptions& options, sl::DLSSOptimalSettings& settings) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS, slDLSSGetOptimalSettings); + return s_slDLSSGetOptimalSettings(options, settings); +} + +inline sl::Result slDLSSGetState(const sl::ViewportHandle& viewport, sl::DLSSState& state) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS, slDLSSGetState); + return s_slDLSSGetState(viewport, state); +} + +inline sl::Result slDLSSSetOptions(const sl::ViewportHandle& viewport, const sl::DLSSOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS, slDLSSSetOptions); + return s_slDLSSSetOptions(viewport, options); +} diff --git a/third_party/streamline/include/sl_dlss_d.h b/third_party/streamline/include/sl_dlss_d.h new file mode 100644 index 000000000..e5ec8ec85 --- /dev/null +++ b/third_party/streamline/include/sl_dlss_d.h @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl_dlss.h" + +namespace sl +{ + +enum class DLSSDPreset : uint32_t +{ + //! Default behavior, may or may not change after an OTA + eDefault, + // ePresetA removed, use preset D, E or F + // ePresetB removed, use preset D, E or F + // ePresetC removed, use preset D, E or F + ePresetD = 4, // Transformer model + ePresetE = 5, // Transformer model + ePresetF = 6, // Latest and default transformer model + ePresetG = 7, // Reverts to default + ePresetH = 8, // Reverts to default + ePresetI = 9, // Reverts to default + ePresetJ = 10, // Reverts to default + ePresetK = 11, // Reverts to default + ePresetL = 12, // Reverts to default + ePresetM = 13, // Reverts to default. Not recommended to use + ePresetN = 14, // Reverts to default. Not recommended to use + ePresetO = 15, // Reverts to default. Not recommended to use + + eCount +}; + +enum class DLSSDNormalRoughnessMode : uint32_t +{ + eUnpacked, // App needs to provide Normal resource and Roughness resource separately. + ePacked, // App needs to write Roughness to w channel of Normal resource. + + eCount +}; + +// {0AD87504-774E-4BF3-9633-A44D1F7F9CB8} +SL_STRUCT_BEGIN(DLSSDOptions, StructType({ 0x0ad87504, 0x774e, 0x4bf3, { 0x96, 0x33, 0xa4, 0x4d, 0x1f, 0x7f, 0x9c, 0xb8 } }), kStructVersion3) + //! Specifies which mode should be used + DLSSMode mode = DLSSMode::eOff; + //! Specifies output (final) target width + uint32_t outputWidth = INVALID_UINT; + //! Specifies output (final) target height + uint32_t outputHeight = INVALID_UINT; + //! Specifies sharpening level in range [0,1] + float sharpness = 0.0f; + //! Specifies pre-exposure value + float preExposure = 1.0f; + //! Specifies exposure scale value + float exposureScale = 1.0f; + //! Specifies if tagged color buffers are full HDR or not (DLSS in HDR pipeline or not) + Boolean colorBuffersHDR = Boolean::eTrue; + //! Specifies if indicator on screen should invert axis + Boolean indicatorInvertAxisX = Boolean::eFalse; + //! Specifies if indicator on screen should invert axis + Boolean indicatorInvertAxisY = Boolean::eFalse; + //! Specifies which mode should be used for roughness resource + DLSSDNormalRoughnessMode normalRoughnessMode = DLSSDNormalRoughnessMode::eUnpacked; + //! Specifies matrix transformation from the world space to the camera view space. + float4x4 worldToCameraView; + //! Specifies matrix transformation from the camera view space to the world space. + //! cameraViewToWorld = worldToCameraView.inverse() + float4x4 cameraViewToWorld; + //! Whether or not the alpha channel should be upscaled (if false, only RGB is upscaled) + //! Enabling alpha upscaling may impact performance + Boolean alphaUpscalingEnabled = Boolean::eFalse; + + //! Presets + DLSSDPreset dlaaPreset = DLSSDPreset::eDefault; + DLSSDPreset qualityPreset = DLSSDPreset::eDefault; + DLSSDPreset balancedPreset = DLSSDPreset::eDefault; + DLSSDPreset performancePreset = DLSSDPreset::eDefault; + DLSSDPreset ultraPerformancePreset = DLSSDPreset::eDefault; + DLSSDPreset ultraQualityPreset = DLSSDPreset::eDefault; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by DLSSD plugin +//! +//! {FBD0C637-A28F-41F2-BC91-B421FAEE8E1E} +SL_STRUCT_BEGIN(DLSSDOptimalSettings, StructType({ 0xfbd0c637, 0xa28f, 0x41f2, { 0xbc, 0x91, 0xb4, 0x21, 0xfa, 0xee, 0x8e, 0x1e } }), kStructVersion1) +//! Specifies render area width + uint32_t optimalRenderWidth{}; + //! Specifies render area height + uint32_t optimalRenderHeight{}; + //! Specifies the optimal sharpness value + float optimalSharpness{}; + //! Specifies minimal render area width + uint32_t renderWidthMin{}; + //! Specifies minimal render area height + uint32_t renderHeightMin{}; + //! Specifies maximal render area width + uint32_t renderWidthMax{}; + //! Specifies maximal render area height + uint32_t renderHeightMax{}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by DLSSD plugin +//! +//! {71873C14-F8CA-4767-9EAF-3B4393EA98FA} +SL_STRUCT_BEGIN(DLSSDState, StructType({ 0x71873c14, 0xf8ca, 0x4767, { 0x9e, 0xaf, 0x3b, 0x43, 0x93, 0xea, 0x98, 0xfa } }), kStructVersion1) +//! Specified the amount of memory expected to be used + uint64_t estimatedVRAMUsageInBytes {}; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} + +//! Provides optimal DLSSD settings +//! +//! Call this method to obtain optimal render target size and other DLSSD related settings. +//! +//! @param options Specifies DLSSD options to use +//! @param settings Reference to a structure where settings are returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSDGetOptimalSettings = sl::Result(const sl::DLSSDOptions & options, sl::DLSSDOptimalSettings & settings); + +//! Provides DLSSD state for the given viewport +//! +//! Call this method to obtain optimal render target size and other DLSSD related settings. +//! +//! @param viewport Specified viewport we are working with +//! @param state Reference to a structure where state is to be returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSDGetState = sl::Result(const sl::ViewportHandle & viewport, sl::DLSSDState & state); + +//! Sets DLSSD options +//! +//! Call this method to turn DLSSD on/off, change mode etc. +//! +//! @param viewport Specified viewport we are working with +//! @param options Specifies DLSSD options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSDSetOptions = sl::Result(const sl::ViewportHandle& viewport, const sl::DLSSDOptions& options); + +//! HELPERS +//! +inline sl::Result slDLSSDGetOptimalSettings(const sl::DLSSDOptions& options, sl::DLSSDOptimalSettings& settings) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS_RR, slDLSSDGetOptimalSettings); + return s_slDLSSDGetOptimalSettings(options, settings); +} + +inline sl::Result slDLSSDGetState(const sl::ViewportHandle& viewport, sl::DLSSDState& state) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS_RR, slDLSSDGetState); + return s_slDLSSDGetState(viewport, state); +} + +inline sl::Result slDLSSDSetOptions(const sl::ViewportHandle& viewport, const sl::DLSSDOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS_RR, slDLSSDSetOptions); + return s_slDLSSDSetOptions(viewport, options); +} diff --git a/third_party/streamline/include/sl_dlss_g.h b/third_party/streamline/include/sl_dlss_g.h new file mode 100644 index 000000000..34e54cea1 --- /dev/null +++ b/third_party/streamline/include/sl_dlss_g.h @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl.h" +#include "sl_consts.h" +#include "sl_core_types.h" +#include + + +namespace sl +{ + +enum class DLSSGMode : uint32_t +{ + eOff, + eOn, + eAuto, + eDynamic, + eCount +}; + +enum class DLSSGFlags : uint32_t +{ + eShowOnlyInterpolatedFrame = 1 << 0, + eDynamicResolutionEnabled = 1 << 1, + eRequestVRAMEstimate = 1 << 2, + eRetainResourcesWhenOff = 1 << 3, + eEnableFullscreenMenuDetection = 1 << 4, + + //! All DLSS-FG flags. This isn't expected to be used directly by integrations, but may be useful for e.g. writing helpers. + eAll = eShowOnlyInterpolatedFrame | eDynamicResolutionEnabled | eRequestVRAMEstimate | eRetainResourcesWhenOff | eEnableFullscreenMenuDetection +}; + +enum class DLSSGQueueParallelismMode : uint32_t +{ + //! Default mode in which client's presenting queue is blocked until DLSSG workload execution completes. + eBlockPresentingClientQueue, + //! This mode is only supported on Vulkan presently. Even if set by any D3D client, it would default to + //! eBlockPresentingClientQueue as before. eBlockNoClientQueues mode helps achieve maximum performance benefit + //! from queue-level paralleism in Vulkan during DLSS-G processing. In this mode, client must must wait on + //! DLSSGState::inputsProcessingCompletionFence and associated value, before it can modify or destroy the tagged + //! resources input to DLSS-G enabled for the corresponding previously presented frame on any client queue. + eBlockNoClientQueues, + eCount +}; + +// Adds various useful operators for our enum +SL_ENUM_OPERATORS_32(DLSSGFlags) + +// {FAC5F1CB-2DFD-4F36-A1E6-3A9E865256C5} +SL_STRUCT_BEGIN(DLSSGOptions, StructType({ 0xfac5f1cb, 0x2dfd, 0x4f36, { 0xa1, 0xe6, 0x3a, 0x9e, 0x86, 0x52, 0x56, 0xc5 } }), kStructVersion5) + //! Specifies which mode should be used. + DLSSGMode mode = DLSSGMode::eOff; + //! Number of frames to generate inbetween fully rendered frames. Cannot exceed DLSSGState::numFramesToGenerateMax. + //! For 2x frame multiplier, numFramesToGenerate is 1. + //! For 3x frame multiplier, numFramesToGenerate is 2. + //! For 4x frame multiplier, numFramesToGenerate is 3. + uint32_t numFramesToGenerate = 1; + //! Optional - Flags used to enable or disable certain functionality + DLSSGFlags flags{}; + //! Optional - Dynamic resolution optimal width (used only if eDynamicResolutionEnabled is set) + uint32_t dynamicResWidth{}; + //! Optional - Dynamic resolution optimal height (used only if eDynamicResolutionEnabled is set) + uint32_t dynamicResHeight{}; + //! Optional - Expected number of buffers in the swap-chain + uint32_t numBackBuffers{}; + //! Optional - Expected width of the input render targets (depth, motion-vector buffers etc) + uint32_t mvecDepthWidth{}; + //! Optional - Expected height of the input render targets (depth, motion-vector buffers etc) + uint32_t mvecDepthHeight{}; + //! Optional - Expected width of the back buffers in the swap-chain + uint32_t colorWidth{}; + //! Optional - Expected height of the back buffers in the swap-chain + uint32_t colorHeight{}; + //! Optional - Indicates native format used for the swap-chain back buffers + uint32_t colorBufferFormat{}; + //! Optional - Indicates native format used for eMotionVectors + uint32_t mvecBufferFormat{}; + //! Optional - Indicates native format used for eDepth + uint32_t depthBufferFormat{}; + //! Optional - Indicates native format used for eHUDLessColor + uint32_t hudLessBufferFormat{}; + //! Optional - Indicates native format used for eUIColorAndAlpha + uint32_t uiBufferFormat{}; + //! Optional - if specified DLSSG will return any errors which occur when calling underlying API (DXGI or Vulkan) + PFunOnAPIErrorCallback* onErrorCallback{}; + // kStructVersion2 + Boolean bReserved15 = eInvalid; + // kStructVersion3 + //! Optional - determines the level of client and DLSSG queue parallelism to use for performance gain - must be same for all viewports. + DLSSGQueueParallelismMode queueParallelismMode{}; + // kStructVersion4 + //! Optional - if true, DLSSG will allocate a codepath that supports interpolating 'HUDless' and 'UI Color & Alpha' separately than the Color Backbuffer. + //! this property can be overridden by Nvidia App. See the programming guide for more details. + Boolean enableUserInterfaceRecomposition = Boolean::eFalse; + // kStructVersion5 + //! Optional - Target frame rate for dynamic frame generation when enabled. + //! If set to 0.0f (default), auto-detects the display refresh rate. + float dynamicTargetFrameRate{}; + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + + +enum class DLSSGStatus : uint32_t +{ + //! Everything is working as expected + eOk = 0, + //! Output resolution (size of the back buffers in the swap-chain) is too low + eFailResolutionTooLow = 1 << 0, + //! Reflex is not active while DLSS-G is running, Reflex must be turned on when DLSS-G is on + eFailReflexNotDetectedAtRuntime = 1 << 1, + //! HDR format not supported, see DLSS-G programming guide for more details + eFailHDRFormatNotSupported = 1 << 2, + //! Some constants are invalid, see programming guide for more details + eFailCommonConstantsInvalid = 1 << 3, + //! D3D integrations must use SwapChain::GetCurrentBackBufferIndex API + eFailGetCurrentBackBufferIndexNotCalled = 1 << 4, + //! Reserved for future use, do not use + eReserved5 = 1 << 5, + + eAll = eFailResolutionTooLow | eFailReflexNotDetectedAtRuntime | eFailHDRFormatNotSupported | eFailCommonConstantsInvalid | eFailGetCurrentBackBufferIndexNotCalled | eReserved5 +}; + +// Adds various useful operators for our enum +SL_ENUM_OPERATORS_32(DLSSGStatus) + +// {CC8AC8E1-A179-44F5-97FA-E74112F9BC61} +SL_STRUCT_BEGIN(DLSSGState, StructType({ 0xcc8ac8e1, 0xa179, 0x44f5, { 0x97, 0xfa, 0xe7, 0x41, 0x12, 0xf9, 0xbc, 0x61 } }), kStructVersion4) + //! Specifies the amount of memory expected to be used + uint64_t estimatedVRAMUsageInBytes{}; + //! Specifies current status of DLSS-G + DLSSGStatus status{}; + //! Specifies minimum supported dimension + uint32_t minWidthOrHeight{}; + //! Number of frames presented since the last 'slDLSSGGetState' call + uint32_t numFramesActuallyPresented{}; + // kStructVersion2 + //! The maximum number of interpolated frames the current system can generate per real frame. + //! This value represents the upper bound for 'numFramesToGenerate'. + //! Examples: + //! - On devices supporting up to a 2x multiplier: numFramesToGenerateMax is 1. + //! - On devices supporting up to a 6x multiplier: numFramesToGenerateMax is 5. + uint32_t numFramesToGenerateMax{}; + //! Reserved for future use, do not use + sl::Boolean bReserved4{}; + //! Hint to the application to display VSync support in the user interface + sl::Boolean bIsVsyncSupportAvailable{}; + + //! SL client must wait on SL DLSS-G plugin-internal fence and associated value, before it can modify or destroy the tagged resources input + //! to DLSS-G enabled for the corresponding previously presented frame on a non-presenting queue. + //! If modified on client's presenting queue, then it's recommended but not required. + //! However, if DLSSGQueueParallelismMode::eBlockNoClientQueues is set, then it's always required. + //! It must call slDLSSGGetState on the present thread to retrieve the fence value for the inputs consumed by FG, on which client would + //! wait in the frame it would modify those inputs. + void* inputsProcessingCompletionFence{}; + uint64_t lastPresentInputsProcessingCompletionFenceValue{}; + // kStructVersion4 + //! Whether or not Dynamic Multi Frame Generation (DLSSGMode::eDynamic) is + //! supported + sl::Boolean bIsDynamicMFGSupported{}; + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} + +//! Provides DLSS-G state +//! +//! Call this method to obtain current state of DLSS-G +//! +//! @param viewport Specified viewport we are working with +//! @param state Reference to a structure where state is returned +//! @param options Specifies DLSS-G options to use (can be null if not needed) +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSGGetState = sl::Result(const sl::ViewportHandle& viewport, sl::DLSSGState& state, const sl::DLSSGOptions* options); + +//! Sets DLSS-G options +//! +//! Call this method to turn DLSS-G on/off, change modes etc. +//! +//! @param viewport Specified viewport we are working with +//! @param options Specifies DLSS-G options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slDLSSGSetOptions = sl::Result(const sl::ViewportHandle& viewport, const sl::DLSSGOptions& options); + +//! HELPERS +//! +inline sl::Result slDLSSGGetState(const sl::ViewportHandle& viewport, sl::DLSSGState& state, const sl::DLSSGOptions* options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS_G, slDLSSGGetState); + return s_slDLSSGGetState(viewport, state, options); +} + +inline sl::Result slDLSSGSetOptions(const sl::ViewportHandle& viewport, const sl::DLSSGOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureDLSS_G, slDLSSGSetOptions); + return s_slDLSSGSetOptions(viewport, options); +} diff --git a/third_party/streamline/include/sl_helpers.h b/third_party/streamline/include/sl_helpers.h new file mode 100644 index 000000000..d56ceec2b --- /dev/null +++ b/third_party/streamline/include/sl_helpers.h @@ -0,0 +1,485 @@ +/* +* Copyright (c) 2022-2025 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include +#include + +#define FEATURE_SPECIFIC_BUFFER_TYPE_ID(feature, number) feature << 16 | number + +#include "sl.h" +#include "sl_consts.h" +#include "sl_reflex.h" +#include "sl_pcl.h" +#include "sl_dlss.h" +#include "sl_nis.h" +#include "sl_dlss_d.h" +#include "sl_dlss_g.h" + +#if defined(__clang__) + #define SL_DISABLE_DEPRECATED_WARNINGS \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") + #define SL_RESTORE_DEPRECATED_WARNINGS \ + _Pragma("clang diagnostic pop") + +#elif defined(_MSC_VER) + #define SL_DISABLE_DEPRECATED_WARNINGS \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4996)) + #define SL_RESTORE_DEPRECATED_WARNINGS \ + __pragma(warning(pop)) + +#else + #define SL_DISABLE_DEPRECATED_WARNINGS + #define SL_RESTORE_DEPRECATED_WARNINGS +#endif + + +namespace sl +{ + +inline float4x4 transpose(const float4x4& m) +{ + float4x4 r; + r[0] = { m[0].x, m[1].x, m[2].x, m[3].x }; + r[1] = { m[0].y, m[1].y, m[2].y, m[3].y }; + r[2] = { m[0].z, m[1].z, m[2].z, m[3].z }; + r[3] = { m[0].w, m[1].w, m[2].w, m[3].w }; + return r; +}; + +#define SL_CASE_STR(a) case a : return #a; + +// Check for c++17 features +#if __cplusplus >= 201703L + #define SL_FALLTHROUGH [[fallthrough]]; +#else + #define SL_FALLTHROUGH +#endif + +inline const char* getResultAsStr(Result v) +{ + switch (v) + { + SL_CASE_STR(Result::eOk); + SL_CASE_STR(Result::eErrorIO); + SL_CASE_STR(Result::eErrorDriverOutOfDate); + SL_CASE_STR(Result::eErrorOSOutOfDate); + SL_CASE_STR(Result::eErrorOSDisabledHWS); + SL_CASE_STR(Result::eErrorDeviceNotCreated); + SL_CASE_STR(Result::eErrorNoSupportedAdapterFound); + SL_CASE_STR(Result::eErrorAdapterNotSupported); + SL_CASE_STR(Result::eErrorNoPlugins); + SL_CASE_STR(Result::eErrorVulkanAPI); + SL_CASE_STR(Result::eErrorDXGIAPI); + SL_CASE_STR(Result::eErrorD3DAPI); + SL_CASE_STR(Result::eErrorNRDAPI); + SL_CASE_STR(Result::eErrorNVAPI); + SL_CASE_STR(Result::eErrorReflexAPI); + SL_CASE_STR(Result::eErrorNGXFailed); + SL_CASE_STR(Result::eErrorJSONParsing); + SL_CASE_STR(Result::eErrorMissingProxy); + SL_CASE_STR(Result::eErrorMissingResourceState); + SL_CASE_STR(Result::eErrorInvalidIntegration); + SL_CASE_STR(Result::eErrorMissingInputParameter); + SL_CASE_STR(Result::eErrorNotInitialized); + SL_CASE_STR(Result::eErrorComputeFailed); + SL_CASE_STR(Result::eErrorInitNotCalled); + SL_CASE_STR(Result::eErrorExceptionHandler); + SL_CASE_STR(Result::eErrorInvalidParameter); + SL_CASE_STR(Result::eErrorMissingConstants); + SL_CASE_STR(Result::eErrorDuplicatedConstants); + SL_CASE_STR(Result::eErrorMissingOrInvalidAPI); + SL_CASE_STR(Result::eErrorCommonConstantsMissing); + SL_CASE_STR(Result::eErrorUnsupportedInterface); + SL_CASE_STR(Result::eErrorFeatureMissing); + SL_CASE_STR(Result::eErrorFeatureNotSupported); + SL_CASE_STR(Result::eErrorFeatureMissingHooks); + SL_CASE_STR(Result::eErrorFeatureFailedToLoad); + SL_CASE_STR(Result::eErrorFeatureWrongPriority); + SL_CASE_STR(Result::eErrorFeatureMissingDependency); + SL_CASE_STR(Result::eErrorFeatureManagerInvalidState); + SL_CASE_STR(Result::eErrorInvalidState); + SL_CASE_STR(Result::eWarnOutOfVRAM); + }; + return "Unknown"; +} + +inline const char* getNISModeAsStr(NISMode v) +{ + switch (v) + { + SL_CASE_STR(NISMode::eOff); + SL_CASE_STR(NISMode::eScaler); + SL_CASE_STR(NISMode::eSharpen); + case NISMode::eCount: break; + }; + return "Unknown"; +} + +inline const char* getNISHDRAsStr(NISHDR v) +{ + switch (v) + { + SL_CASE_STR(NISHDR::eNone); + SL_CASE_STR(NISHDR::eLinear); + SL_CASE_STR(NISHDR::ePQ); + case NISHDR::eCount: break; + }; + return "Unknown"; +} + +inline const char* getReflexModeAsStr(ReflexMode mode) +{ + switch (mode) + { + SL_CASE_STR(ReflexMode::eOff); + SL_CASE_STR(ReflexMode::eLowLatency); + SL_CASE_STR(ReflexMode::eLowLatencyWithBoost); + case ReflexMode::ReflexMode_eCount: break; + }; + return "Unknown"; +} + +inline const char* getPCLMarkerAsStr(PCLMarker marker) +{ + switch (marker) + { + SL_CASE_STR(PCLMarker::eSimulationStart); + SL_CASE_STR(PCLMarker::eSimulationEnd); + SL_CASE_STR(PCLMarker::eRenderSubmitStart); + SL_CASE_STR(PCLMarker::eRenderSubmitEnd); + SL_CASE_STR(PCLMarker::ePresentStart); + SL_CASE_STR(PCLMarker::ePresentEnd); + SL_CASE_STR(PCLMarker::eTriggerFlash); + SL_CASE_STR(PCLMarker::ePCLatencyPing); + SL_CASE_STR(PCLMarker::eOutOfBandRenderSubmitStart); + SL_CASE_STR(PCLMarker::eOutOfBandRenderSubmitEnd); + SL_CASE_STR(PCLMarker::eOutOfBandPresentStart); + SL_CASE_STR(PCLMarker::eOutOfBandPresentEnd); + SL_CASE_STR(PCLMarker::eControllerInputSample); + SL_CASE_STR(PCLMarker::eDeltaTCalculation); + SL_CASE_STR(PCLMarker::eLateWarpPresentStart); + SL_CASE_STR(PCLMarker::eLateWarpPresentEnd); + SL_CASE_STR(PCLMarker::eCameraConstructed); + SL_CASE_STR(PCLMarker::eLateWarpRenderSubmitStart); + SL_CASE_STR(PCLMarker::eLateWarpRenderSubmitEnd); + SL_CASE_STR(PCLMarker::eVendorInternalAsyncPresentStart); + SL_CASE_STR(PCLMarker::eVendorInternalAsyncPresentEnd); + SL_CASE_STR(PCLMarker::eNumPresentsInBatch); + case PCLMarker::eMaximum: break; + }; + return "Unknown"; +} + +inline const char* getDLSSModeAsStr(DLSSMode mode) +{ + switch (mode) + { + SL_CASE_STR(DLSSMode::eOff); + SL_CASE_STR(DLSSMode::eDLAA); + SL_CASE_STR(DLSSMode::eMaxPerformance); + SL_CASE_STR(DLSSMode::eBalanced); + SL_CASE_STR(DLSSMode::eMaxQuality); + SL_CASE_STR(DLSSMode::eUltraPerformance); + SL_CASE_STR(DLSSMode::eUltraQuality); + case DLSSMode::eCount: break; + }; + return "Unknown"; +} + +inline const char* getDLSSGModeAsStr(DLSSGMode mode) +{ + switch (mode) + { + SL_CASE_STR(sl::DLSSGMode::eOff); + SL_CASE_STR(sl::DLSSGMode::eOn); + SL_CASE_STR(sl::DLSSGMode::eAuto); + SL_CASE_STR(sl::DLSSGMode::eDynamic); + case DLSSGMode::eCount: break; + }; + return "Unknown"; +} + +inline const char* getBufferTypeAsStr(BufferType buf) +{ + switch (buf) + { + SL_CASE_STR(kBufferTypeDepth); + SL_CASE_STR(kBufferTypeMotionVectors); + SL_CASE_STR(kBufferTypeHUDLessColor); + SL_CASE_STR(kBufferTypeScalingInputColor); + SL_CASE_STR(kBufferTypeScalingOutputColor); + SL_CASE_STR(kBufferTypeNormals); + SL_CASE_STR(kBufferTypeRoughness); + SL_CASE_STR(kBufferTypeAlbedo); + SL_CASE_STR(kBufferTypeSpecularAlbedo); + SL_CASE_STR(kBufferTypeIndirectAlbedo); + SL_CASE_STR(kBufferTypeSpecularMotionVectors); + SL_CASE_STR(kBufferTypeDisocclusionMask); + SL_CASE_STR(kBufferTypeEmissive); + SL_CASE_STR(kBufferTypeExposure); + SL_CASE_STR(kBufferTypeNormalRoughness); + SL_CASE_STR(kBufferTypeDiffuseHitNoisy); + SL_CASE_STR(kBufferTypeDiffuseHitDenoised); + SL_CASE_STR(kBufferTypeSpecularHitNoisy); + SL_CASE_STR(kBufferTypeSpecularHitDenoised); + SL_CASE_STR(kBufferTypeShadowNoisy); + SL_CASE_STR(kBufferTypeShadowDenoised); + SL_CASE_STR(kBufferTypeAmbientOcclusionNoisy); + SL_CASE_STR(kBufferTypeAmbientOcclusionDenoised); + SL_CASE_STR(kBufferTypeUIColorAndAlpha); + SL_CASE_STR(kBufferTypeUIAlpha); + SL_CASE_STR(kBufferTypeUpliftInputColor); + SL_CASE_STR(kBufferTypeUpliftOutputColor); + SL_CASE_STR(kBufferTypeUpliftControlMask); + SL_CASE_STR(kBufferTypeShadowHint); + SL_CASE_STR(kBufferTypeReflectionHint); + SL_CASE_STR(kBufferTypeParticleHint); + SL_CASE_STR(kBufferTypeTransparencyHint); + SL_CASE_STR(kBufferTypeAnimatedTextureHint); + SL_CASE_STR(kBufferTypeBiasCurrentColorHint); + SL_CASE_STR(kBufferTypeRaytracingDistance); + SL_CASE_STR(kBufferTypeReflectionMotionVectors); + SL_CASE_STR(kBufferTypePosition); + SL_CASE_STR(kBufferTypeInvalidDepthMotionHint); + SL_CASE_STR(kBufferTypeAlpha); + SL_CASE_STR(kBufferTypeOpaqueColor); + SL_CASE_STR(kBufferTypeReactiveMaskHint); + SL_CASE_STR(kBufferTypeTransparencyAndCompositionMaskHint); + SL_CASE_STR(kBufferTypeReflectedAlbedo); + SL_CASE_STR(kBufferTypeColorBeforeParticles); + SL_CASE_STR(kBufferTypeColorBeforeTransparency); + SL_CASE_STR(kBufferTypeColorBeforeFog); + SL_CASE_STR(kBufferTypeSpecularHitDistance); + SL_CASE_STR(kBufferTypeSpecularRayDirectionHitDistance); + SL_CASE_STR(kBufferTypeSpecularRayDirection); + SL_CASE_STR(kBufferTypeDiffuseHitDistance); + SL_CASE_STR(kBufferTypeDiffuseRayDirectionHitDistance); + SL_CASE_STR(kBufferTypeDiffuseRayDirection); + SL_CASE_STR(kBufferTypeHiResDepth); + SL_CASE_STR(kBufferTypeLinearDepth); + SL_CASE_STR(kBufferTypeColorAfterParticles); + SL_CASE_STR(kBufferTypeColorAfterTransparency); + SL_CASE_STR(kBufferTypeColorAfterFog); + SL_CASE_STR(kBufferTypeScreenSpaceSubsurfaceScatteringGuide); + SL_CASE_STR(kBufferTypeColorBeforeScreenSpaceSubsurfaceScattering); + SL_CASE_STR(kBufferTypeColorAfterScreenSpaceSubsurfaceScattering); + SL_CASE_STR(kBufferTypeScreenSpaceRefractionGuide); + SL_CASE_STR(kBufferTypeColorBeforeScreenSpaceRefraction); + SL_CASE_STR(kBufferTypeColorAfterScreenSpaceRefraction); + SL_CASE_STR(kBufferTypeDepthOfFieldGuide); + SL_CASE_STR(kBufferTypeColorBeforeDepthOfField); + SL_CASE_STR(kBufferTypeColorAfterDepthOfField); + SL_CASE_STR(kBufferTypeScalingOutputAlpha); + SL_CASE_STR(kBufferTypeResponsivityMask); + SL_CASE_STR(kBufferTypeBidirectionalDistortionField); + SL_CASE_STR(kBufferTypeTransparencyLayer); + SL_CASE_STR(kBufferTypeTransparencyLayerOpacity); + SL_CASE_STR(kBufferTypeBackbuffer); + SL_CASE_STR(kBufferTypeNoWarpMask); + }; + return "Unknown"; +} + +inline const char* getFeatureAsStr(Feature f) +{ + switch (f) + { + SL_CASE_STR(kFeatureDLSS); + SL_CASE_STR(kFeatureNIS); + SL_CASE_STR(kFeatureReflex); + SL_CASE_STR(kFeaturePCL); + SL_CASE_STR(kFeatureDLSS_G); + SL_CASE_STR(kFeatureNvPerf); + SL_CASE_STR(kFeatureImGUI); + SL_CASE_STR(kFeatureCommon); + SL_CASE_STR(kFeatureDLSS_RR); + SL_CASE_STR(kFeatureDeepDVC); + SL_CASE_STR(kFeatureDirectSR); + SL_CASE_STR(kFeatureLatewarp); + SL_CASE_STR(kFeatureDLSS_NR); + // Removed features + case kFeatureNRD_INVALID: break; + } + return "Unknown"; +} + +// Get the feature file name as a string. For a given feature kFeatureDLSS with +// a plugin name sl.dlss.dll the value "dlss" will be returned +inline const char* getFeatureFilenameAsStrNoSL(Feature f) +{ + switch (f) + { + case kFeatureDLSS: return "dlss"; + case kFeatureNIS: return "nis"; + case kFeatureReflex: return "reflex"; + case kFeaturePCL: return "pcl"; + case kFeatureDLSS_G: return "dlss_g"; + case kFeatureNvPerf: return "nvperf"; + case kFeatureDeepDVC: return "deepdvc"; + case kFeatureImGUI: return "imgui"; + case kFeatureCommon: return "common"; + case kFeatureDLSS_RR: return "dlss_d"; + case kFeatureDirectSR: return "directsr"; + case kFeatureLatewarp: return "latewarp"; + case kFeatureDLSS_NR: return "dlss_nr"; + case kFeatureNRD_INVALID: break; + } + return "Unknown"; +} + +inline const char* getLogLevelAsStr(LogLevel v) +{ + switch (v) + { + SL_CASE_STR(LogLevel::eOff); + SL_CASE_STR(LogLevel::eDefault); + SL_CASE_STR(LogLevel::eVerbose); + case LogLevel::eCount: break; + }; + return "Unknown"; +} + +inline const char* getResourceTypeAsStr(ResourceType v) +{ + switch (v) + { + SL_CASE_STR(ResourceType::eTex2d); + SL_CASE_STR(ResourceType::eBuffer); + SL_CASE_STR(ResourceType::eCommandQueue); + SL_CASE_STR(ResourceType::eCommandBuffer); + SL_CASE_STR(ResourceType::eCommandPool); + SL_CASE_STR(ResourceType::eFence); + SL_CASE_STR(ResourceType::eSwapchain); + SL_CASE_STR(ResourceType::eHostFence); + case ResourceType::eUnknown: break; + case ResourceType::eCount: break; + }; + return "Unknown"; +} + +inline const char* getResourceLifecycleAsStr(ResourceLifecycle v) +{ + switch (v) + { + SL_CASE_STR(ResourceLifecycle::eOnlyValidNow); + SL_CASE_STR(ResourceLifecycle::eValidUntilPresent); + SL_CASE_STR(ResourceLifecycle::eValidUntilEvaluate); + }; + return "Unknown"; +} + +SL_DISABLE_DEPRECATED_WARNINGS +inline DLSSPreset resolveDLSSPreset(DLSSPreset preset) +{ + switch (preset) + { + case DLSSPreset::ePresetJ: + case DLSSPreset::ePresetK: + return preset; + default: + return DLSSPreset::eDefault; + } +} +SL_RESTORE_DEPRECATED_WARNINGS + +inline DLSSDPreset resolveDLSSDPreset(DLSSDPreset preset) +{ + return static_cast(resolveDLSSPreset(static_cast(preset))); +} + + + +// Advanced/internal functions that are not useful or necessary in the vast majority of integrations +// and would just pollute the namespace and/or cause distractions. +// But, may be useful in e.g. intermediary game engine integrations, etc. +#ifndef __INTELLISENSE__ + +//! Find a struct of type T +template +T* findStruct(const void* ptr) +{ + auto base = static_cast(ptr); + while (base && base->structType != T::s_structType) + { + base = base->next; + } + return (T*)base; +} + +//! Find a struct of type T, but stop the search if we find a struct of type S +template +T* findStruct(const void* ptr) +{ + auto base = static_cast(ptr); + while (base && base->structType != T::s_structType) + { + base = base->next; + + // If we find a struct of type S, we know should stop the search + if (base->structType == S::s_structType) + { + return nullptr; + } + } + return (T*)base; +} + +template +T* findStruct(const void** ptr, uint32_t count) +{ + const BaseStructure* base{}; + for (uint32_t i = 0; base == nullptr && i < count; i++) + { + base = static_cast(ptr[i]); + while (base && base->structType != T::s_structType) + { + base = base->next; + } + } + return (T*)base; +} + +template +bool findStructs(const void** ptr, uint32_t count, std::vector& structs) +{ + for (uint32_t i = 0; i < count; i++) + { + auto base = static_cast(ptr[i]); + while (base) + { + if (base->structType == T::s_structType) + { + structs.push_back((T*)base); + } + base = base->next; + } + } + return structs.size() > 0; +} + +#endif // __INTELLISENSE__ + +} // namespace sl diff --git a/third_party/streamline/include/sl_helpers_vk.h b/third_party/streamline/include/sl_helpers_vk.h new file mode 100644 index 000000000..77c4dbc0f --- /dev/null +++ b/third_party/streamline/include/sl_helpers_vk.h @@ -0,0 +1,256 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl.h" +#include + +namespace sl +{ + +#define SL_VK_FEATURE(n) if(strcmp(featureNames[i], #n) == 0) features.n = VK_TRUE; + +inline VkPhysicalDeviceVulkan12Features getVkPhysicalDeviceVulkan12Features(uint32_t featureCount, const char** featureNames) +{ + VkPhysicalDeviceVulkan12Features features{ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES }; + for (uint32_t i = 0; i < featureCount; i++) + { + SL_VK_FEATURE(samplerMirrorClampToEdge); + SL_VK_FEATURE(drawIndirectCount); + SL_VK_FEATURE(storageBuffer8BitAccess); + SL_VK_FEATURE(uniformAndStorageBuffer8BitAccess); + SL_VK_FEATURE(storagePushConstant8); + SL_VK_FEATURE(shaderBufferInt64Atomics); + SL_VK_FEATURE(shaderSharedInt64Atomics); + SL_VK_FEATURE(shaderFloat16); + SL_VK_FEATURE(shaderInt8); + SL_VK_FEATURE(descriptorIndexing); + SL_VK_FEATURE(shaderInputAttachmentArrayDynamicIndexing); + SL_VK_FEATURE(shaderUniformTexelBufferArrayDynamicIndexing); + SL_VK_FEATURE(shaderStorageTexelBufferArrayDynamicIndexing); + SL_VK_FEATURE(shaderUniformBufferArrayNonUniformIndexing); + SL_VK_FEATURE(shaderSampledImageArrayNonUniformIndexing); + SL_VK_FEATURE(shaderStorageBufferArrayNonUniformIndexing); + SL_VK_FEATURE(shaderStorageImageArrayNonUniformIndexing); + SL_VK_FEATURE(shaderInputAttachmentArrayNonUniformIndexing); + SL_VK_FEATURE(shaderUniformTexelBufferArrayNonUniformIndexing); + SL_VK_FEATURE(shaderStorageTexelBufferArrayNonUniformIndexing); + SL_VK_FEATURE(descriptorBindingUniformBufferUpdateAfterBind); + SL_VK_FEATURE(descriptorBindingSampledImageUpdateAfterBind); + SL_VK_FEATURE(descriptorBindingStorageImageUpdateAfterBind); + SL_VK_FEATURE(descriptorBindingStorageBufferUpdateAfterBind); + SL_VK_FEATURE(descriptorBindingUniformTexelBufferUpdateAfterBind); + SL_VK_FEATURE(descriptorBindingStorageTexelBufferUpdateAfterBind); + SL_VK_FEATURE(descriptorBindingUpdateUnusedWhilePending); + SL_VK_FEATURE(descriptorBindingPartiallyBound); + SL_VK_FEATURE(descriptorBindingVariableDescriptorCount); + SL_VK_FEATURE(runtimeDescriptorArray); + SL_VK_FEATURE(samplerFilterMinmax); + SL_VK_FEATURE(scalarBlockLayout); + SL_VK_FEATURE(imagelessFramebuffer); + SL_VK_FEATURE(uniformBufferStandardLayout); + SL_VK_FEATURE(shaderSubgroupExtendedTypes); + SL_VK_FEATURE(separateDepthStencilLayouts); + SL_VK_FEATURE(hostQueryReset); + SL_VK_FEATURE(timelineSemaphore); + SL_VK_FEATURE(bufferDeviceAddress); + SL_VK_FEATURE(bufferDeviceAddressCaptureReplay); + SL_VK_FEATURE(bufferDeviceAddressMultiDevice); + SL_VK_FEATURE(vulkanMemoryModel); + SL_VK_FEATURE(vulkanMemoryModelDeviceScope); + SL_VK_FEATURE(vulkanMemoryModelAvailabilityVisibilityChains); + SL_VK_FEATURE(shaderOutputViewportIndex); + SL_VK_FEATURE(shaderOutputLayer); + SL_VK_FEATURE(subgroupBroadcastDynamicId); + } + return features; +} + +inline VkPhysicalDeviceVulkan13Features getVkPhysicalDeviceVulkan13Features(uint32_t featureCount, const char** featureNames) +{ + VkPhysicalDeviceVulkan13Features features{ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES }; + for (uint32_t i = 0; i < featureCount; i++) + { + SL_VK_FEATURE(robustImageAccess); + SL_VK_FEATURE(robustImageAccess); + SL_VK_FEATURE(inlineUniformBlock); + SL_VK_FEATURE(descriptorBindingInlineUniformBlockUpdateAfterBind); + SL_VK_FEATURE(pipelineCreationCacheControl); + SL_VK_FEATURE(privateData); + SL_VK_FEATURE(shaderDemoteToHelperInvocation); + SL_VK_FEATURE(shaderTerminateInvocation); + SL_VK_FEATURE(subgroupSizeControl); + SL_VK_FEATURE(computeFullSubgroups); + SL_VK_FEATURE(synchronization2); + SL_VK_FEATURE(textureCompressionASTC_HDR); + SL_VK_FEATURE(shaderZeroInitializeWorkgroupMemory); + SL_VK_FEATURE(dynamicRendering); + SL_VK_FEATURE(shaderIntegerDotProduct); + SL_VK_FEATURE(maintenance4); + } + return features; +} + +inline VkPhysicalDeviceOpticalFlowFeaturesNV getVkPhysicalDeviceOpticalFlowNVFeatures(uint32_t featureCount, const char** featureNames) +{ + VkPhysicalDeviceOpticalFlowFeaturesNV features{ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV }; + for (uint32_t i = 0; i < featureCount; i++) + { + SL_VK_FEATURE(opticalFlow); + } + return features; +} + +#define SL_VK_FEATURE_SUPPORT(T, feature, n) ((T*)pPhysicalDeviceFeatures)->n = ((feature) && (((T*)pSupportedFeatures)->n)) +#define SL_VK_FEATURE_MERGE_SUPPORT(T, n) (pFeaturesToMerge == NULL) ? \ + SL_VK_FEATURE_SUPPORT(T, ((T*)pPhysicalDeviceFeatures)->n, n) : SL_VK_FEATURE_SUPPORT(T, ((((T*)pPhysicalDeviceFeatures)->n) || (((T*)pFeaturesToMerge)->n)), n) + +inline void getMergedSupportedVkPhysicalDeviceVulkanFeatures(VkBaseOutStructure* pPhysicalDeviceFeatures, const VkBaseOutStructure* pFeaturesToMerge, const VkBaseOutStructure* pSupportedFeatures) +{ + if (pPhysicalDeviceFeatures == NULL || pSupportedFeatures == NULL) + { + return; + } + + if (pFeaturesToMerge != NULL) + { + assert(pFeaturesToMerge->sType == pPhysicalDeviceFeatures->sType); + } + assert(pSupportedFeatures->sType == pPhysicalDeviceFeatures->sType); + + switch (pPhysicalDeviceFeatures->sType) + { + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, samplerMirrorClampToEdge); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, samplerMirrorClampToEdge); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, drawIndirectCount); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, storageBuffer8BitAccess); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, uniformAndStorageBuffer8BitAccess); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, storagePushConstant8); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderBufferInt64Atomics); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderSharedInt64Atomics); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderFloat16); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderInt8); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayDynamicIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayDynamicIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayDynamicIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderUniformBufferArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderSampledImageArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderStorageBufferArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderStorageImageArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayNonUniformIndexing); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingUniformBufferUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingSampledImageUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageImageUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageBufferUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingUniformTexelBufferUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageTexelBufferUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingUpdateUnusedWhilePending); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingPartiallyBound); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, descriptorBindingVariableDescriptorCount); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, runtimeDescriptorArray); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, samplerFilterMinmax); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, scalarBlockLayout); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, imagelessFramebuffer); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, uniformBufferStandardLayout); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderSubgroupExtendedTypes); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, separateDepthStencilLayouts); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, hostQueryReset); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, timelineSemaphore); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, bufferDeviceAddress); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, bufferDeviceAddressCaptureReplay); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, bufferDeviceAddressMultiDevice); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, vulkanMemoryModel); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, vulkanMemoryModelDeviceScope); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, vulkanMemoryModelAvailabilityVisibilityChains); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderOutputViewportIndex); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, shaderOutputLayer); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan12Features, subgroupBroadcastDynamicId); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, robustImageAccess); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, robustImageAccess); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, inlineUniformBlock); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, descriptorBindingInlineUniformBlockUpdateAfterBind); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, pipelineCreationCacheControl); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, privateData); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, shaderDemoteToHelperInvocation); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, shaderTerminateInvocation); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, subgroupSizeControl); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, computeFullSubgroups); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, synchronization2); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, textureCompressionASTC_HDR); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, shaderZeroInitializeWorkgroupMemory); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, dynamicRendering); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, shaderIntegerDotProduct); + SL_VK_FEATURE_MERGE_SUPPORT(VkPhysicalDeviceVulkan13Features, maintenance4); + break; + + default: + break; + } +} + +//! Interface to provide to slSetVulkanInfo when manually hooking Vulkan API and NOT +//! leveraging vkCreateDevice and vkCreateInstance proxies provided by SL. +//! +//! {0EED6FD5-82CD-43A9-BDB5-47A5BA2F45D6} +SL_STRUCT_BEGIN(VulkanInfo, StructType({ 0xeed6fd5, 0x82cd, 0x43a9, { 0xbd, 0xb5, 0x47, 0xa5, 0xba, 0x2f, 0x45, 0xd6 } }), kStructVersion3) +VkDevice device {}; +VkInstance instance{}; +VkPhysicalDevice physicalDevice{}; +//! IMPORTANT: +//! +//! SL features can request additional graphics or compute queues. +//! The below values provide information about the queue families and +//! starting index at which SL queues are created. +uint32_t computeQueueIndex{}; +uint32_t computeQueueFamily{}; +uint32_t graphicsQueueIndex{}; +uint32_t graphicsQueueFamily{}; +uint32_t opticalFlowQueueIndex{}; +uint32_t opticalFlowQueueFamily{}; +bool useNativeOpticalFlowMode = false; +uint32_t computeQueueCreateFlags{}; +uint32_t graphicsQueueCreateFlags{}; +uint32_t opticalFlowQueueCreateFlags{}; +SL_STRUCT_END() + +} + +using PFun_slSetVulkanInfo = sl::Result(const sl::VulkanInfo& info); + +//! Specify Vulkan specific information +//! +//! Use this method to provide Vulkan device, instance information to SL. +//! +//! IMPORTANT: Only call this API if NOT using vkCreateDevice and vkCreateInstance proxies provided by SL. +// +//! @param info Reference to the structure providing the information +//! +//! This method is NOT thread safe and should be called IMMEDIATELY after base interface is created. +SL_API sl::Result slSetVulkanInfo(const sl::VulkanInfo& info); diff --git a/third_party/streamline/include/sl_hooks.h b/third_party/streamline/include/sl_hooks.h new file mode 100644 index 000000000..b9df141aa --- /dev/null +++ b/third_party/streamline/include/sl_hooks.h @@ -0,0 +1,115 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl.h" + +struct VkPhysicalDevice_T; +struct VkDevice_T; +struct VkInstance_T; + +using VkPhysicalDevice = VkPhysicalDevice_T*; +using VkDevice = VkDevice_T*; +using VkInstance = VkInstance_T*; + + +namespace sl +{ + +//! NOTE: Adding new hooks require sl.interposer to be recompiled +//! +//! IMPORTANT: Since SL interposer proxies supports many different versions of various D3D/DXGI interfaces +//! we use only base interface names for our hooks. +//! +//! For example if API was added in IDXGISwapChain5::FUNCTION it is still named eIDXGISwapChain_FUNCTION (there is no 5 in the name) +//! +enum class FunctionHookID : uint32_t +{ + //! Mandatory - IDXGIFactory* + eIDXGIFactory_CreateSwapChain, + eIDXGIFactory_CreateSwapChainForHwnd, + eIDXGIFactory_CreateSwapChainForCoreWindow, + + //! Mandatory - IDXGISwapChain* + eIDXGISwapChain_Present, + eIDXGISwapChain_Present1, + eIDXGISwapChain_GetBuffer, + eIDXGISwapChain_GetDesc, + eIDXGISwapChain_ResizeBuffers, + eIDXGISwapChain_ResizeBuffers1, + eIDXGISwapChain_GetCurrentBackBufferIndex, + eIDXGISwapChain_SetFullscreenState, + //! Internal - please ignore when doing manual hooking + eIDXGISwapChain_Destroyed, + + //! Mandatory - ID3D12Device* + eID3D12Device_CreateCommandQueue, + + //! Mandatory - Vulkan + eVulkan_Present, + eVulkan_CreateSwapchainKHR, + eVulkan_DestroySwapchainKHR, + eVulkan_GetSwapchainImagesKHR, + eVulkan_AcquireNextImageKHR, + eVulkan_DeviceWaitIdle, + eVulkan_CreateWin32SurfaceKHR, + eVulkan_DestroySurfaceKHR, + + eMaxNum +}; + +#ifndef SL_CASE_STR +#define SL_CASE_STR(a) case a : return #a; +#endif + +inline const char* getFunctionHookIDAsStr(FunctionHookID v) +{ + switch (v) + { + SL_CASE_STR(FunctionHookID::eIDXGIFactory_CreateSwapChain); + SL_CASE_STR(FunctionHookID::eIDXGIFactory_CreateSwapChainForHwnd); + SL_CASE_STR(FunctionHookID::eIDXGIFactory_CreateSwapChainForCoreWindow); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_Present); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_Present1); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_GetBuffer); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_GetDesc); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_ResizeBuffers); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_ResizeBuffers1); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_GetCurrentBackBufferIndex); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_SetFullscreenState); + SL_CASE_STR(FunctionHookID::eIDXGISwapChain_Destroyed); + SL_CASE_STR(FunctionHookID::eID3D12Device_CreateCommandQueue); + SL_CASE_STR(FunctionHookID::eVulkan_Present); + SL_CASE_STR(FunctionHookID::eVulkan_CreateSwapchainKHR); + SL_CASE_STR(FunctionHookID::eVulkan_DestroySwapchainKHR); + SL_CASE_STR(FunctionHookID::eVulkan_GetSwapchainImagesKHR); + SL_CASE_STR(FunctionHookID::eVulkan_AcquireNextImageKHR); + SL_CASE_STR(FunctionHookID::eVulkan_DeviceWaitIdle); + SL_CASE_STR(FunctionHookID::eVulkan_CreateWin32SurfaceKHR); + SL_CASE_STR(FunctionHookID::eVulkan_DestroySurfaceKHR); + case FunctionHookID::eMaxNum: break; + }; + return "Unknown"; +} + +} // namespace sl diff --git a/third_party/streamline/include/sl_matrix_helpers.h b/third_party/streamline/include/sl_matrix_helpers.h new file mode 100644 index 000000000..4c4fe236b --- /dev/null +++ b/third_party/streamline/include/sl_matrix_helpers.h @@ -0,0 +1,221 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl.h" +#include "sl_consts.h" + +namespace sl +{ + +inline void matrixMul(float4x4& result, const float4x4& a, const float4x4& b) +{ + // Alias raw pointers over the input matrices + const float* pA = &a[0].x; + const float* pB = &b[0].x; + + result[0].x = (float)((pA[0] * pB[0]) + (pA[1] * pB[4]) + (pA[2] * pB[8]) + (pA[3] * pB[12])); + result[0].y = (float)((pA[0] * pB[1]) + (pA[1] * pB[5]) + (pA[2] * pB[9]) + (pA[3] * pB[13])); + result[0].z = (float)((pA[0] * pB[2]) + (pA[1] * pB[6]) + (pA[2] * pB[10]) + (pA[3] * pB[14])); + result[0].w = (float)((pA[0] * pB[3]) + (pA[1] * pB[7]) + (pA[2] * pB[11]) + (pA[3] * pB[15])); + + result[1].x = (float)((pA[4] * pB[0]) + (pA[5] * pB[4]) + (pA[6] * pB[8]) + (pA[7] * pB[12])); + result[1].y = (float)((pA[4] * pB[1]) + (pA[5] * pB[5]) + (pA[6] * pB[9]) + (pA[7] * pB[13])); + result[1].z = (float)((pA[4] * pB[2]) + (pA[5] * pB[6]) + (pA[6] * pB[10]) + (pA[7] * pB[14])); + result[1].w = (float)((pA[4] * pB[3]) + (pA[5] * pB[7]) + (pA[6] * pB[11]) + (pA[7] * pB[15])); + + result[2].x = (float)((pA[8] * pB[0]) + (pA[9] * pB[4]) + (pA[10] * pB[8]) + (pA[11] * pB[12])); + result[2].y = (float)((pA[8] * pB[1]) + (pA[9] * pB[5]) + (pA[10] * pB[9]) + (pA[11] * pB[13])); + result[2].z = (float)((pA[8] * pB[2]) + (pA[9] * pB[6]) + (pA[10] * pB[10]) + (pA[11] * pB[14])); + result[2].w = (float)((pA[8] * pB[3]) + (pA[9] * pB[7]) + (pA[10] * pB[11]) + (pA[11] * pB[15])); + + result[3].x = (float)((pA[12] * pB[0]) + (pA[13] * pB[4]) + (pA[14] * pB[8]) + (pA[15] * pB[12])); + result[3].y = (float)((pA[12] * pB[1]) + (pA[13] * pB[5]) + (pA[14] * pB[9]) + (pA[15] * pB[13])); + result[3].z = (float)((pA[12] * pB[2]) + (pA[13] * pB[6]) + (pA[14] * pB[10]) + (pA[15] * pB[14])); + result[3].w = (float)((pA[12] * pB[3]) + (pA[13] * pB[7]) + (pA[14] * pB[11]) + (pA[15] * pB[15])); +} + +inline void matrixFullInvert(float4x4& result, const float4x4& mat) +{ + // Matrix inversion code from https://stackoverflow.com/questions/1148309/inverting-a-4x4-matrix + // Alias raw pointers over the input matrix and the result + const float* pMat = &mat[0].x; + float* pResult = &result[0].x; + + pResult[0] = pMat[5] * pMat[10] * pMat[15] - pMat[5] * pMat[11] * pMat[14] - pMat[9] * pMat[6] * pMat[15] + pMat[9] * pMat[7] * pMat[14] + pMat[13] * pMat[6] * pMat[11] - pMat[13] * pMat[7] * pMat[10]; + pResult[4] = -pMat[4] * pMat[10] * pMat[15] + pMat[4] * pMat[11] * pMat[14] + pMat[8] * pMat[6] * pMat[15] - pMat[8] * pMat[7] * pMat[14] - pMat[12] * pMat[6] * pMat[11] + pMat[12] * pMat[7] * pMat[10]; + pResult[8] = pMat[4] * pMat[9] * pMat[15] - pMat[4] * pMat[11] * pMat[13] - pMat[8] * pMat[5] * pMat[15] + pMat[8] * pMat[7] * pMat[13] + pMat[12] * pMat[5] * pMat[11] - pMat[12] * pMat[7] * pMat[9]; + pResult[12] = -pMat[4] * pMat[9] * pMat[14] + pMat[4] * pMat[10] * pMat[13] + pMat[8] * pMat[5] * pMat[14] - pMat[8] * pMat[6] * pMat[13] - pMat[12] * pMat[5] * pMat[10] + pMat[12] * pMat[6] * pMat[9]; + pResult[1] = -pMat[1] * pMat[10] * pMat[15] + pMat[1] * pMat[11] * pMat[14] + pMat[9] * pMat[2] * pMat[15] - pMat[9] * pMat[3] * pMat[14] - pMat[13] * pMat[2] * pMat[11] + pMat[13] * pMat[3] * pMat[10]; + pResult[5] = pMat[0] * pMat[10] * pMat[15] - pMat[0] * pMat[11] * pMat[14] - pMat[8] * pMat[2] * pMat[15] + pMat[8] * pMat[3] * pMat[14] + pMat[12] * pMat[2] * pMat[11] - pMat[12] * pMat[3] * pMat[10]; + pResult[9] = -pMat[0] * pMat[9] * pMat[15] + pMat[0] * pMat[11] * pMat[13] + pMat[8] * pMat[1] * pMat[15] - pMat[8] * pMat[3] * pMat[13] - pMat[12] * pMat[1] * pMat[11] + pMat[12] * pMat[3] * pMat[9]; + pResult[13] = pMat[0] * pMat[9] * pMat[14] - pMat[0] * pMat[10] * pMat[13] - pMat[8] * pMat[1] * pMat[14] + pMat[8] * pMat[2] * pMat[13] + pMat[12] * pMat[1] * pMat[10] - pMat[12] * pMat[2] * pMat[9]; + pResult[2] = pMat[1] * pMat[6] * pMat[15] - pMat[1] * pMat[7] * pMat[14] - pMat[5] * pMat[2] * pMat[15] + pMat[5] * pMat[3] * pMat[14] + pMat[13] * pMat[2] * pMat[7] - pMat[13] * pMat[3] * pMat[6]; + pResult[6] = -pMat[0] * pMat[6] * pMat[15] + pMat[0] * pMat[7] * pMat[14] + pMat[4] * pMat[2] * pMat[15] - pMat[4] * pMat[3] * pMat[14] - pMat[12] * pMat[2] * pMat[7] + pMat[12] * pMat[3] * pMat[6]; + pResult[10] = pMat[0] * pMat[5] * pMat[15] - pMat[0] * pMat[7] * pMat[13] - pMat[4] * pMat[1] * pMat[15] + pMat[4] * pMat[3] * pMat[13] + pMat[12] * pMat[1] * pMat[7] - pMat[12] * pMat[3] * pMat[5]; + pResult[14] = -pMat[0] * pMat[5] * pMat[14] + pMat[0] * pMat[6] * pMat[13] + pMat[4] * pMat[1] * pMat[14] - pMat[4] * pMat[2] * pMat[13] - pMat[12] * pMat[1] * pMat[6] + pMat[12] * pMat[2] * pMat[5]; + pResult[3] = -pMat[1] * pMat[6] * pMat[11] + pMat[1] * pMat[7] * pMat[10] + pMat[5] * pMat[2] * pMat[11] - pMat[5] * pMat[3] * pMat[10] - pMat[9] * pMat[2] * pMat[7] + pMat[9] * pMat[3] * pMat[6]; + pResult[7] = pMat[0] * pMat[6] * pMat[11] - pMat[0] * pMat[7] * pMat[10] - pMat[4] * pMat[2] * pMat[11] + pMat[4] * pMat[3] * pMat[10] + pMat[8] * pMat[2] * pMat[7] - pMat[8] * pMat[3] * pMat[6]; + pResult[11] = -pMat[0] * pMat[5] * pMat[11] + pMat[0] * pMat[7] * pMat[9] + pMat[4] * pMat[1] * pMat[11] - pMat[4] * pMat[3] * pMat[9] - pMat[8] * pMat[1] * pMat[7] + pMat[8] * pMat[3] * pMat[5]; + pResult[15] = pMat[0] * pMat[5] * pMat[10] - pMat[0] * pMat[6] * pMat[9] - pMat[4] * pMat[1] * pMat[10] + pMat[4] * pMat[2] * pMat[9] + pMat[8] * pMat[1] * pMat[6] - pMat[8] * pMat[2] * pMat[5]; + + float det = pMat[0] * pResult[0] + pMat[1] * pResult[4] + pMat[2] * pResult[8] + pMat[3] * pResult[12]; + if (det != 0.f) + { + det = 1.0f / det; + + for (int i = 0; i < 16; ++i) + { + pResult[i] *= det; + } + } +} + +// Specialised lightweight matrix invert when the matrix is known to be orthonormal +inline void matrixOrthoNormalInvert(float4x4& result, const float4x4& mat) +{ + // Transpose the first 3x3 + result[0].x = mat[0].x; + result[0].y = mat[1].x; + result[0].z = mat[2].x; + result[1].x = mat[0].y; + result[1].y = mat[1].y; + result[1].z = mat[2].y; + result[2].x = mat[0].z; + result[2].y = mat[1].z; + result[2].z = mat[2].z; + + // Invert the translation + result[3].x = -((mat[3].x * mat[0].x) + (mat[3].y * mat[0].y) + (mat[3].z * mat[0].z)); + result[3].y = -((mat[3].x * mat[1].x) + (mat[3].y * mat[1].y) + (mat[3].z * mat[1].z)); + result[3].z = -((mat[3].x * mat[2].x) + (mat[3].y * mat[2].y) + (mat[3].z * mat[2].z)); + + // Fill in the remaining constants + result[0].w = 0.0f; + result[1].w = 0.0f; + result[2].w = 0.0f; + result[3].w = 1.0f; +} + +inline void vectorNormalize(float3& v) +{ + float k = 1.f / sqrtf((v.x * v.x) + (v.y * v.y) + (v.z * v.z)); + v.x *= k; + v.y *= k; + v.z *= k; +} + +inline void vectorCrossProduct(float3& result, const float3& a, const float3& b) +{ + result.x = a.y * b.z - a.z * b.y; + result.y = a.z * b.x - a.x * b.z; + result.z = a.x * b.y - a.y * b.x; +} + +// Calculate a cameraToPrevCamera matrix from cameraToWorld and cameraToWorldPrev matrices +// but do so in such a way as to avoid precision issues. +// +// Traditionally, you might go something like this... +// +// worldToCameraPrev = invert(cameraToWorldPrev) +// cameraToPrevCamera = cameraToWorld * worldToCameraPrev +// +// But if you do that, you will subject yourself to fp32 precision issues if the camera is +// any kind of reasonable distance from the origin, because you'll end up adding small +// numbers to large numbers due to the large translations. +// +// But the camera's absolute position in the world doesn't matter at all to the result. +// What we're interested in is the camera's motion. +// So if we add the same thing to the translations of cameraToWorld and cameraToWorldPrev +// then we should get the same result. +// If we choose to subtract the current camera's translation in world space, then we will +// change a potentially very large translation value into a very small one - thereby +// sidestepping the precision issues. +inline void calcCameraToPrevCamera(float4x4& outCameraToPrevCamera, const float4x4& cameraToWorld, const float4x4& cameraToWorldPrev) +{ + // Create translated versions of cameraToWorld and cameraToWorldPrev, translated to + // so that the current camera is effectively at the world origin. + // CC == 'Camera-Centred' + float4x4 cameraToCcWorld = cameraToWorld; + cameraToCcWorld[3] = float4(0, 0, 0, 1); + float4x4 cameraToCcWorldPrev = cameraToWorldPrev; + cameraToCcWorldPrev[3].x -= cameraToWorld[3].x; + cameraToCcWorldPrev[3].y -= cameraToWorld[3].y; + cameraToCcWorldPrev[3].z -= cameraToWorld[3].z; + + // We can use an optimised invert if we assume that the camera matrix is orthonormal + float4x4 ccWorldToCameraPrev; + matrixOrthoNormalInvert(ccWorldToCameraPrev, cameraToCcWorldPrev); + matrixMul(outCameraToPrevCamera, cameraToCcWorld, ccWorldToCameraPrev); +} + +// Calculate some of the matrix fields in Constants +// This can be used to validate what the app is providing, or tease out precision issues +// The matrices that are recalculated are... +// - clipToCameraView +// - clipToPrevClip +// - prevClipToClip +inline void recalculateCameraMatrices(Constants& values) +{ + // Form a camera-to-world matrix from the camera fields + vectorNormalize(values.cameraRight); + vectorNormalize(values.cameraFwd); + vectorCrossProduct(values.cameraUp, values.cameraFwd, values.cameraRight); + vectorNormalize(values.cameraUp); + float4x4 cameraViewToWorld = { + float4(values.cameraRight.x, values.cameraRight.y, values.cameraRight.z, 0.f), + float4(values.cameraUp.x, values.cameraUp.y, values.cameraUp.z, 0.f), + float4(values.cameraFwd.x, values.cameraFwd.y, values.cameraFwd.z, 0.f), + float4(values.cameraPos.x, values.cameraPos.y, values.cameraPos.z, 1.f) + }; + // ********* DO NOT USE THIS IN ANYTHING PROPER ********* + // Crap storage of cameraViewToWorldPrev and cameraViewToClipPrev + // These should be provided by the app, or stored by association with the view index. + static float4x4 cameraViewToWorldPrev = { + float4(1, 0, 0, 0), + float4(0, 1, 0, 0), + float4(0, 0, 1, 0), + float4(0, 0, 0, 1), + }; + static float4x4 cameraViewToClipPrev = { + float4(1, 0, 0, 0), + float4(0, 1, 0, 0), + float4(0, 0, 1, 0), + float4(0, 0, 0, 1), + }; + matrixFullInvert(values.clipToCameraView, values.cameraViewToClip); + + float4x4 cameraViewToPrevCameraView; + calcCameraToPrevCamera(cameraViewToPrevCameraView, cameraViewToWorld, cameraViewToWorldPrev); + + float4x4 clipToPrevCameraView; + matrixMul(clipToPrevCameraView, values.clipToCameraView, cameraViewToPrevCameraView); + matrixMul(values.clipToPrevClip, clipToPrevCameraView, cameraViewToClipPrev); + matrixFullInvert(values.prevClipToClip, values.clipToPrevClip); + + // ********* DO NOT USE THIS IN ANYTHING PROPER ********* + cameraViewToWorldPrev = cameraViewToWorld; + cameraViewToClipPrev = values.cameraViewToClip; +} + +} diff --git a/third_party/streamline/include/sl_nis.h b/third_party/streamline/include/sl_nis.h new file mode 100644 index 000000000..8a0e87f8d --- /dev/null +++ b/third_party/streamline/include/sl_nis.h @@ -0,0 +1,102 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +namespace sl +{ + +enum class NISMode : uint32_t +{ + eOff, + eScaler, + eSharpen, + eCount +}; + +enum class NISHDR : uint32_t +{ + eNone, + eLinear, + ePQ, + eCount +}; + +// {676610E5-9674-4D3A-9C8A-F495D01B36F3} +SL_STRUCT_BEGIN(NISOptions, StructType({ 0x676610e5, 0x9674, 0x4d3a, { 0x9c, 0x8a, 0xf4, 0x95, 0xd0, 0x1b, 0x36, 0xf3 } }), kStructVersion1) + //! Specifies which mode should be used + NISMode mode = NISMode::eScaler; + //! Specifies which hdr mode should be used + NISHDR hdrMode = NISHDR::eNone; + //! Specifies sharpening level in range [0,1] + float sharpness = 0.0f; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! Returned by the NIS plugin +//! +// {71AB4FD0-D959-4C2A-AF69-ED4850BD4E3D} +SL_STRUCT_BEGIN(NISState, StructType({ 0x71ab4fd0, 0xd959, 0x4c2a, { 0xaf, 0x69, 0xed, 0x48, 0x50, 0xbd, 0x4e, 0x3d } }), kStructVersion1) + //! Specified the amount of memory expected to be used + uint64_t estimatedVRAMUsageInBytes {}; + +//! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} + +//! Sets NIS options +//! +//! Call this method to turn DLSS on/off, change mode etc. +//! +//! @param viewport Specified viewport we are working with +//! @param options Specifies NIS options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slNISSetOptions = sl::Result(const sl::ViewportHandle& viewport, const sl::NISOptions& options); + +//! Provides NIS state for the given viewport +//! +//! Call this method to obtain VRAM usage and other information. +//! +//! @param viewport Specified viewport we are working with +//! @param state Reference to a structure where state is to be returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slNISGetState = sl::Result(const sl::ViewportHandle& viewport, sl::NISState& state); + +//! HELPERS +//! +inline sl::Result slNISSetOptions(const sl::ViewportHandle& viewport, const sl::NISOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureNIS, slNISSetOptions); + return s_slNISSetOptions(viewport, options); +} + +inline sl::Result slNISGetState(const sl::ViewportHandle& viewport, sl::NISState& state) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureNIS, slNISGetState); + return s_slNISGetState(viewport, state); +} diff --git a/third_party/streamline/include/sl_nvperf.h b/third_party/streamline/include/sl_nvperf.h new file mode 100644 index 000000000..0c570c424 --- /dev/null +++ b/third_party/streamline/include/sl_nvperf.h @@ -0,0 +1,70 @@ +/* + * Copyright 2014-2023 NVIDIA Corporation. All rights reserved. + * + * NOTICE TO USER: + * + * This source code is subject to NVIDIA ownership rights under U.S. and + * international Copyright laws. + * + * This software and the information contained herein is PROPRIETARY and + * CONFIDENTIAL to NVIDIA and is being provided under the terms and conditions + * of a form of NVIDIA software license agreement. + * + * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE + * CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR + * IMPLIED WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. + * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE + * OR PERFORMANCE OF THIS SOURCE CODE. + * + * U.S. Government End Users. This source code is a "commercial item" as + * that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of + * "commercial computer software" and "commercial computer software + * documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) + * and is provided to the U.S. Government only as a commercial end item. + * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through + * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the + * source code with only those rights set forth herein. + * + * Any use of this source code in individual and commercial software must + * include, in the user documentation and internal comments to the code, + * the above Disclaimer and U.S. Government End Users Notice. + */ + +#pragma once + +namespace sl +{ + +//! If your plugin does not have any constants then the code below can be removed +//! +enum class NvPerfMode : uint32_t +{ + eOff, + eOn, + + eCount +}; + +//! IMPORTANT: Each structure must have a unique GUID assigned, change this as needed +//! +// {29DF7FE0-273A-4D72-B481-2DC823D5B1AD} +SL_STRUCT_BEGIN(NvPerfConstants, StructType({ 0x29df7fe0, 0x273a, 0x4d72, { 0xb4, 0x81, 0x2d, 0xc8, 0x23, 0xd5, 0xb1, 0xad } }), kStructVersion1) +NvPerfMode mode = NvPerfMode::eOff; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! IMPORTANT: Each structure must have a unique GUID assigned, change this as needed +//! +// {39DF7FE0-283A-4D72-B481-2DC823D5B1AD} +SL_STRUCT_BEGIN(NvPerfSettings, StructType({ 0x39df7fe0, 0x283a, 0x4d72, { 0xb4, 0x81, 0x2d, 0xc8, 0x23, 0xd5, 0xb1, 0xad } }), kStructVersion1) + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} diff --git a/third_party/streamline/include/sl_pcl.h b/third_party/streamline/include/sl_pcl.h new file mode 100644 index 000000000..dec5855cc --- /dev/null +++ b/third_party/streamline/include/sl_pcl.h @@ -0,0 +1,163 @@ +/* +* Copyright (c) 2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include + +#include "sl.h" + +namespace sl +{ + +//! Hot-key which should be used instead of custom message for PC latency marker +enum class PCLHotKey: int16_t +{ + eUsePingMessage = 0, + eVK_F13 = 0x7C, + eVK_F14 = 0x7D, + eVK_F15 = 0x7E, +}; + +// {cfa32f9b-023c-420e-9056-6832b74f89b4} +SL_STRUCT_BEGIN(PCLOptions, StructType({ 0xcfa32f9b, 0x023c, 0x420e, { 0x90, 0x56, 0x68, 0x32, 0xb7, 0x4f, 0x89, 0xb4 } }), kStructVersion1) + //! Specifies the hot-key which should be used instead of custom message for PC latency marker + //! Possible values: VK_F13, VK_F14, VK_F15 + PCLHotKey virtualKey = PCLHotKey::eUsePingMessage; + //! ThreadID for PCL messages + uint32_t idThread = 0; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +// {cfa32f9b-023c-420e-9056-6832b74f89b5} +SL_STRUCT_BEGIN(PCLState, StructType({ 0xcfa32f9b, 0x023c, 0x420e, { 0x90, 0x56, 0x68, 0x32, 0xb7, 0x4f, 0x89, 0xb5 } }), kStructVersion1) + //! Specifies PCL Windows message id (if PCLOptions::virtualKey is 0) + uint32_t statsWindowMessage; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +enum class PCLMarker: uint32_t +{ + eSimulationStart = 0, + eSimulationEnd = 1, + eRenderSubmitStart = 2, + eRenderSubmitEnd = 3, + ePresentStart = 4, + ePresentEnd = 5, + //eInputSample = 6, // Deprecated + eTriggerFlash = 7, + ePCLatencyPing = 8, + eOutOfBandRenderSubmitStart = 9, + eOutOfBandRenderSubmitEnd = 10, + eOutOfBandPresentStart = 11, + eOutOfBandPresentEnd = 12, + eControllerInputSample = 13, + eDeltaTCalculation = 14, + eLateWarpPresentStart = 15, + eLateWarpPresentEnd = 16, + eCameraConstructed = 17, + eLateWarpRenderSubmitStart = 18, + eLateWarpRenderSubmitEnd = 19, + eVendorInternalAsyncPresentStart = 20, + eVendorInternalAsyncPresentEnd = 21, + eNumPresentsInBatch = 22, + + eMaximum +}; + +// c++23 has to_underlying implementation +#if __cplusplus == 202302L +using to_underlying = std::to_underlying; +#else +// Return `enum class` member as value of underlying type (i.e. an int). Basically same as: +// static_cast>(value); +// See c++23s std::to_underlying() +template +constexpr auto to_underlying(T value) +{ + return std::underlying_type_t(value); +} +#endif + +// {cfa32f9b-023c-420e-9056-6832b74f89b6} +SL_STRUCT_BEGIN(PCLHelper, StructType({ 0xcfa32f9b, 0x023c, 0x420e, { 0x90, 0x56, 0x68, 0x32, 0xb7, 0x4f, 0x89, 0xb6 } }), kStructVersion1) + PCLHelper(PCLMarker m) : BaseStructure(PCLHelper::s_structType, kStructVersion1), marker(m) {}; + PCLMarker get() const { return marker; }; +private: + PCLMarker marker; +SL_STRUCT_END() + + +} + +//! Provides PCL settings +//! +//! Call this method to get stats etc. +//! +//! @param state Reference to a structure where states are returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slPCLGetState = sl::Result(sl::PCLState& state); + +//! Sets PCL marker +//! +//! Call this method to set specific PCL marker +//! +//! @param marker Specifies which marker to use +//! @param frame Specifies current frame +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is thread safe. +using PFun_slPCLSetMarker = sl::Result(sl::PCLMarker marker, const sl::FrameToken& frame); + +//! Sets PCL options +//! +//! Call this method to set PCL options. +//! +//! @param options Specifies options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slPCLSetOptions = sl::Result(const sl::PCLOptions& options); + +//! HELPERS +//! +inline sl::Result slPCLGetState(sl::PCLState& state) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeaturePCL, slPCLGetState); + return s_slPCLGetState(state); +} + +inline sl::Result slPCLSetMarker(sl::PCLMarker marker, const sl::FrameToken& frame) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeaturePCL, slPCLSetMarker); + return s_slPCLSetMarker(marker, frame); +} + +inline sl::Result slPCLSetOptions(const sl::PCLOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeaturePCL, slPCLSetOptions); + return s_slPCLSetOptions(options); +} diff --git a/third_party/streamline/include/sl_reflex.h b/third_party/streamline/include/sl_reflex.h new file mode 100644 index 000000000..c974483d9 --- /dev/null +++ b/third_party/streamline/include/sl_reflex.h @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include "sl_pcl.h" + +namespace sl +{ + +enum ReflexMode +{ + eOff, + eLowLatency, + eLowLatencyWithBoost, + + // ReflexMode is a C-enum (rather than enum class) so we can't add an eCount value + // without polluting the global namespace (and conflicts with SMSCGMode::eCount in sl.dlss_g/defines.h) + ReflexMode_eCount +}; + +// {F03AF81A-6D0B-4902-A651-C4965E215434} +SL_STRUCT_BEGIN(ReflexOptions, StructType({ 0xf03af81a, 0x6d0b, 0x4902, { 0xa6, 0x51, 0xc4, 0x96, 0x5e, 0x21, 0x54, 0x34 } }), kStructVersion1) + //! Specifies which mode should be used + ReflexMode mode = ReflexMode::eOff; + //! Specifies if frame limiting (FPS cap) is enabled (0 to disable, microseconds otherwise). + //! One benefit of using Reflex's FPS cap over other implementations is the driver would be aware and can provide better optimizations. + //! This setting is independent of ReflexOptions::mode; it can even be used with mode == ReflexMode::eOff. + //! The value is used each time you call slReflexSetOptions/slSetData, make sure to initialize when changing one of the other Reflex options during frame limiting. + //! It is overridden (ignored) by frameLimitUs if set in sl.reflex.json in non-production builds. + uint32_t frameLimitUs = 0; + //! This should only be enabled in specific scenarios with subtle caveats. + //! Most integrations should leave unset unless advised otherwise by the Reflex team + bool useMarkersToOptimize = false; + //! Specifies the hot-key which should be used instead of custom message for PC latency marker + //! Possible values: VK_F13, VK_F14, VK_F15 + uint16_t virtualKey = 0; + //! ThreadID for PCL Stats messages + //! Most integrations should leave unset unless advised otherwise by the Reflex team + uint32_t idThread = 0; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +// {0D569B37-A1C8-4453-BE4D-40F4DE57952B} +SL_STRUCT_BEGIN(ReflexReport, StructType({ 0xd569b37, 0xa1c8, 0x4453, { 0xbe, 0x4d, 0x40, 0xf4, 0xde, 0x57, 0x95, 0x2b } }), kStructVersion1) + //! Various latency related stats + uint64_t frameID{}; + uint64_t inputSampleTime{}; + uint64_t simStartTime{}; + uint64_t simEndTime{}; + uint64_t renderSubmitStartTime{}; + uint64_t renderSubmitEndTime{}; + uint64_t presentStartTime{}; + uint64_t presentEndTime{}; + uint64_t driverStartTime{}; + uint64_t driverEndTime{}; + uint64_t osRenderQueueStartTime{}; + uint64_t osRenderQueueEndTime{}; + uint64_t gpuRenderStartTime{}; + uint64_t gpuRenderEndTime{}; + uint32_t gpuActiveRenderTimeUs{}; + uint32_t gpuFrameTimeUs{}; + //! IMPORTANT: This struct cannot have new members because it is arrayed by ReflexState. +SL_STRUCT_END() + +// {68bb0632-5e1c-402b-899d-b49f633c56c2} +SL_STRUCT_BEGIN(ReflexReport2, StructType({ 0x68bb0632, 0x5e1c, 0x402b, { 0x89, 0x9d, 0xb4, 0x9f, 0x63, 0x3c, 0x56, 0xc2 } }), kStructVersion1) + //! Various latency related stats + uint64_t cameraConstructedTime{}; + uint32_t crossAdapterCopyTimeUs{}; + //! IMPORTANT: This struct cannot have new members because it is arrayed by ReflexState. +SL_STRUCT_END() + +constexpr int kReflexFrameReportCount = 64; + +// {F0BB5985-DAF9-4728-B2FD-AE80A2BD7989} +SL_STRUCT_BEGIN(ReflexState, StructType({ 0xf0bb5985, 0xdaf9, 0x4728, { 0xb2, 0xfd, 0xae, 0x80, 0xa2, 0xbd, 0x79, 0x89 } }), kStructVersion2) + //! Specifies if low-latency mode is available or not + bool lowLatencyAvailable = false; + //! Specifies if the frameReport below contains valid data or not + bool latencyReportAvailable = false; + //! Specifies low latency Windows message id (if ReflexOptions::virtualKey is 0) + uint32_t statsWindowMessage; + //! Reflex report per frame + ReflexReport frameReport[kReflexFrameReportCount]; + //! Specifies ownership of flash indicator toggle (true = driver, false = application) + bool flashIndicatorDriverControlled = false; + // kStructVersion2 + //! Reflex report per frame + ReflexReport2 frameReport2[kReflexFrameReportCount]; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +// {c83cbb02-b4e2-4260-9ca2-d0c3de3a9684} +SL_STRUCT_BEGIN(ReflexCameraData, StructType({ 0xc83cbb02, 0xb4e2, 0x4260, { 0x9c, 0xa2, 0xd0, 0xc3, 0xde, 0x3a, 0x96, 0x84 } }), kStructVersion1) + float4x4 worldToViewMatrix; + float4x4 viewToClipMatrix; + float4x4 prevRenderedWorldToViewMatrix; + float4x4 prevRenderedViewToClipMatrix; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +// {8b960090-a807-4c85-b02f-1069950d066c} +SL_STRUCT_BEGIN(ReflexPredictedCameraData, StructType({ 0x8b960090, 0xa807, 0x4c85, { 0xb0, 0x2f, 0x10, 0x69, 0x95, 0x0d, 0x06, 0x6c } }), kStructVersion1) + float4x4 predictedWorldToViewMatrix; + float4x4 predictedViewToClipMatrix; + +//! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +using MarkerUnderlying = std::underlying_type_t; + +// {E268B3DC-F963-4C37-9776-AF048E132621} +SL_STRUCT_BEGIN(ReflexHelper, StructType({ 0xe268b3dc, 0xf963, 0x4c37, { 0x97, 0x76, 0xaf, 0x4, 0x8e, 0x13, 0x26, 0x21 } }), kStructVersion1) + ReflexHelper(MarkerUnderlying m) : BaseStructure(ReflexHelper::s_structType, kStructVersion1), marker(m) {}; + ReflexHelper(PCLMarker m) : BaseStructure(ReflexHelper::s_structType, kStructVersion1), marker(to_underlying(m)) {}; + operator MarkerUnderlying () const { return marker; }; +private: + // May be kReflexMarkerSleep which is not a valid PCLMarker value + MarkerUnderlying marker; +SL_STRUCT_END() + + +} + +//! Provides Reflex settings +//! +//! Call this method to check if Reflex is on, get stats etc. +//! +//! @param state Reference to a structure where states are returned +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slReflexGetState = sl::Result(sl::ReflexState& state); + +//! Tells reflex to sleep the app +//! +//! Call this method to invoke Reflex sleep in your application. +//! +//! @param frame Specifies current frame +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is thread safe. +using PFun_slReflexSleep = sl::Result(const sl::FrameToken& frame); + +//! Sets Reflex options +//! +//! Call this method to turn Reflex on/off, change mode etc. +//! +//! @param options Specifies options to use +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is NOT thread safe. +using PFun_slReflexSetOptions = sl::Result(const sl::ReflexOptions& options); + +//! Sets Reflex camera data +//! +//! Call this method to inform Reflex of upcoming camera data +//! +//! @param viewport The viewport the camera corresponds to +//! @param frame The frame to set camera data for +//! @param inCameraData Camera data for an upcoming render frame +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is thread safe. +using PFun_slReflexSetCameraData = sl::Result(const sl::ViewportHandle& viewport, const sl::FrameToken& frame, const sl::ReflexCameraData& inCameraData); + +//! Gets predicted Reflex camera data +//! +//! Call this method to get a prediction of upcoming camera data +//! +//! @param viewport The viewport the camera corresponds to +//! @param frame The frame to get camera data for (if available) +//! @param outCameraData Predicted Camera data for an upcoming render frame +//! @return sl::ResultCode::eOk if successful, error code otherwise (see sl_result.h for details) +//! +//! This method is thread safe. +using PFun_slReflexGetPredictedCameraData = sl::Result(const sl::ViewportHandle& viewport, const sl::FrameToken& frame, sl::ReflexPredictedCameraData& outCameraData); + +//! HELPERS +//! +inline sl::Result slReflexGetState(sl::ReflexState& state) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureReflex, slReflexGetState); + return s_slReflexGetState(state); +} + +inline sl::Result slReflexSleep(const sl::FrameToken& frame) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureReflex, slReflexSleep); + return s_slReflexSleep(frame); +} + +inline sl::Result slReflexSetOptions(const sl::ReflexOptions& options) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureReflex, slReflexSetOptions); + return s_slReflexSetOptions(options); +} + +inline sl::Result slReflexSetCameraData(const sl::ViewportHandle& viewport, const sl::FrameToken& frame, const sl::ReflexCameraData& inCameraData) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureReflex, slReflexSetCameraData); + return s_slReflexSetCameraData(viewport, frame, inCameraData); +} + +inline sl::Result slReflexGetPredictedCameraData(const sl::ViewportHandle& viewport, const sl::FrameToken& frame, sl::ReflexPredictedCameraData& outCameraData) +{ + SL_FEATURE_FUN_IMPORT_STATIC(sl::kFeatureReflex, slReflexGetPredictedCameraData); + return s_slReflexGetPredictedCameraData(viewport, frame, outCameraData); +} + diff --git a/third_party/streamline/include/sl_result.h b/third_party/streamline/include/sl_result.h new file mode 100644 index 000000000..659fc5826 --- /dev/null +++ b/third_party/streamline/include/sl_result.h @@ -0,0 +1,77 @@ +/* +* Copyright (c) 2022-2024 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#define SL_CHECK(f) {auto _r = f; if(_r != sl::Result::eOk) return _r;} +#define SL_FAILED(r, f) sl::Result r = f; r != sl::Result::eOk +#define SL_SUCCEEDED(r, f) sl::Result r = f; r == sl::Result::eOk + +namespace sl +{ + +enum class Result +{ + eOk, + eErrorIO, + eErrorDriverOutOfDate, + eErrorOSOutOfDate, + eErrorOSDisabledHWS, + eErrorDeviceNotCreated, + eErrorNoSupportedAdapterFound, + eErrorAdapterNotSupported, + eErrorNoPlugins, + eErrorVulkanAPI, + eErrorDXGIAPI, + eErrorD3DAPI, + // NRD was removed + eErrorNRDAPI, + eErrorNVAPI, + eErrorReflexAPI, + eErrorNGXFailed, + eErrorJSONParsing, + eErrorMissingProxy, + eErrorMissingResourceState, + eErrorInvalidIntegration, + eErrorMissingInputParameter, + eErrorNotInitialized, + eErrorComputeFailed, + eErrorInitNotCalled, + eErrorExceptionHandler, + eErrorInvalidParameter, + eErrorMissingConstants, + eErrorDuplicatedConstants, + eErrorMissingOrInvalidAPI, + eErrorCommonConstantsMissing, + eErrorUnsupportedInterface, + eErrorFeatureMissing, + eErrorFeatureNotSupported, + eErrorFeatureMissingHooks, + eErrorFeatureFailedToLoad, + eErrorFeatureWrongPriority, + eErrorFeatureMissingDependency, + eErrorFeatureManagerInvalidState, + eErrorInvalidState, + eWarnOutOfVRAM +}; + +} diff --git a/third_party/streamline/include/sl_security.h b/third_party/streamline/include/sl_security.h new file mode 100644 index 000000000..380783dd7 --- /dev/null +++ b/third_party/streamline/include/sl_security.h @@ -0,0 +1,463 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#define _UNICODE 1 +#define UNICODE 1 + +#include +#include +#include +#include +#include +#include +#include +#include + +#define GetProc(hModule, procName, proc) (((NULL == proc) && (NULL == (*((FARPROC*)&proc) = GetProcAddress(hModule, procName)))) ? FALSE : TRUE) + +typedef BOOL(WINAPI* PfnCryptMsgClose)(IN HCRYPTMSG hCryptMsg); +static PfnCryptMsgClose pfnCryptMsgClose = NULL; + +typedef BOOL(WINAPI* PfnCertCloseStore)(IN HCERTSTORE hCertStore, DWORD dwFlags); +static PfnCertCloseStore pfnCertCloseStore = NULL; + +typedef HCERTSTORE (WINAPI* PfnCertOpenStore)( + _In_ LPCSTR lpszStoreProvider, + _In_ DWORD dwEncodingType, + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, + _In_ DWORD dwFlags, + _In_opt_ const void* pvPara +); +static PfnCertOpenStore pfnCertOpenStore = NULL; + +typedef BOOL(WINAPI* PfnCertFreeCertificateContext)(IN PCCERT_CONTEXT pCertContext); +static PfnCertFreeCertificateContext pfnCertFreeCertificateContext = NULL; + +typedef PCCERT_CONTEXT(WINAPI* PfnCertFindCertificateInStore)( + IN HCERTSTORE hCertStore, + IN DWORD dwCertEncodingType, + IN DWORD dwFindFlags, + IN DWORD dwFindType, + IN const void* pvFindPara, + IN PCCERT_CONTEXT pPrevCertContext + ); +static PfnCertFindCertificateInStore pfnCertFindCertificateInStore = NULL; + +typedef BOOL(WINAPI* PfnCryptMsgGetParam)( + IN HCRYPTMSG hCryptMsg, + IN DWORD dwParamType, + IN DWORD dwIndex, + OUT void* pvData, + IN OUT DWORD* pcbData + ); +static PfnCryptMsgGetParam pfnCryptMsgGetParam = NULL; + +typedef HCRYPTMSG (WINAPI* PfnCryptMsgOpenToDecode)( + _In_ DWORD dwMsgEncodingType, + _In_ DWORD dwFlags, + _In_ DWORD dwMsgType, + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, + _Reserved_ PCERT_INFO pRecipientInfo, + _In_opt_ PCMSG_STREAM_INFO pStreamInfo +); +PfnCryptMsgOpenToDecode pfnCryptMsgOpenToDecode = {}; + +typedef BOOL (WINAPI* PfnCryptMsgUpdate)( + _In_ HCRYPTMSG hCryptMsg, + _In_reads_bytes_opt_(cbData) const BYTE* pbData, + _In_ DWORD cbData, + _In_ BOOL fFinal +); +PfnCryptMsgUpdate pfnCryptMsgUpdate = {}; + +typedef BOOL(WINAPI* PfnCryptQueryObject)( + DWORD dwObjectType, + const void* pvObject, + DWORD dwExpectedContentTypeFlags, + DWORD dwExpectedFormatTypeFlags, + DWORD dwFlags, + DWORD* pdwMsgAndCertEncodingType, + DWORD* pdwContentType, + DWORD* pdwFormatType, + HCERTSTORE* phCertStore, + HCRYPTMSG* phMsg, + const void** ppvContext + ); +static PfnCryptQueryObject pfnCryptQueryObject = NULL; + +typedef BOOL(WINAPI* PfnCryptDecodeObjectEx)( + IN DWORD dwCertEncodingType, + IN LPCSTR lpszStructType, + IN const BYTE* pbEncoded, + IN DWORD cbEncoded, + IN DWORD dwFlags, + IN PCRYPT_DECODE_PARA pDecodePara, + OUT void* pvStructInfo, + IN OUT DWORD* pcbStructInfo + ); +static PfnCryptDecodeObjectEx pfnCryptDecodeObjectEx = NULL; + +typedef LONG(WINAPI* PfnWinVerifyTrust)( + IN HWND hwnd, + IN GUID* pgActionID, + IN LPVOID pWVTData + ); +static PfnWinVerifyTrust pfnWinVerifyTrust = NULL; + +namespace sl +{ + +namespace security +{ + +bool isSignedByNVIDIA(const wchar_t* pathToFile) +{ + bool valid = false; + + // Now let's make sure this is actually signed by NVIDIA + + DWORD dwEncoding, dwContentType, dwFormatType; + HCERTSTORE hStore = NULL; + HCRYPTMSG hMsg = NULL; + PCMSG_SIGNER_INFO pSignerInfo = NULL; + DWORD dwSignerInfo; + + if (!pfnCertOpenStore) + { + // We only support Win10+ so we can search for module in system32 directly + auto hModCrypt32 = LoadLibraryExW(L"crypt32.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); + if (!hModCrypt32 || + !GetProc(hModCrypt32, "CryptMsgClose", pfnCryptMsgClose) || + !GetProc(hModCrypt32, "CertOpenStore", pfnCertOpenStore) || + !GetProc(hModCrypt32, "CertCloseStore", pfnCertCloseStore) || + !GetProc(hModCrypt32, "CertFreeCertificateContext", pfnCertFreeCertificateContext) || + !GetProc(hModCrypt32, "CertFindCertificateInStore", pfnCertFindCertificateInStore) || + !GetProc(hModCrypt32, "CryptMsgGetParam", pfnCryptMsgGetParam) || + !GetProc(hModCrypt32, "CryptMsgUpdate", pfnCryptMsgUpdate) || + !GetProc(hModCrypt32, "CryptMsgOpenToDecode", pfnCryptMsgOpenToDecode) || + !GetProc(hModCrypt32, "CryptQueryObject", pfnCryptQueryObject) || + !GetProc(hModCrypt32, "CryptDecodeObjectEx", pfnCryptDecodeObjectEx)) + { + return false; + } + } + + // Get message handle and store handle from the signed file. + auto bResult = pfnCryptQueryObject(CERT_QUERY_OBJECT_FILE, + pathToFile, + CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, + CERT_QUERY_FORMAT_FLAG_BINARY, + 0, + &dwEncoding, + &dwContentType, + &dwFormatType, + &hStore, + &hMsg, + NULL); + if (!bResult) + { + return false; + } + + // Get signer information size. + bResult = pfnCryptMsgGetParam(hMsg, + CMSG_SIGNER_INFO_PARAM, + 0, + NULL, + &dwSignerInfo); + if (!bResult) + { + return false; + } + + // Allocate memory for signer information. + pSignerInfo = (PCMSG_SIGNER_INFO)LocalAlloc(LPTR, dwSignerInfo); + if (!pSignerInfo) + { + return false; + } + + // Get Signer Information. + bResult = pfnCryptMsgGetParam(hMsg, + CMSG_SIGNER_INFO_PARAM, + 0, + (PVOID)pSignerInfo, + &dwSignerInfo); + if (!bResult) + { + LocalFree(pSignerInfo); + return false; + } + + // Look for nested signature + constexpr const char* kOID_NESTED_SIGNATURE = "1.3.6.1.4.1.311.2.4.1"; + for (DWORD i = 0; i < pSignerInfo->UnauthAttrs.cAttr; i++) + { + if (strcmp(kOID_NESTED_SIGNATURE, pSignerInfo->UnauthAttrs.rgAttr[i].pszObjId) == 0) + { + HCRYPTMSG hMsg2 = pfnCryptMsgOpenToDecode(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, 0, NULL, NULL, NULL); + if (hMsg2) + { + if (pfnCryptMsgUpdate(hMsg2,pSignerInfo->UnauthAttrs.rgAttr[i].rgValue->pbData,pSignerInfo->UnauthAttrs.rgAttr[i].rgValue->cbData,TRUE)) + { + dwSignerInfo = 0; + pfnCryptMsgGetParam(hMsg2, CMSG_SIGNER_INFO_PARAM, 0, NULL, &dwSignerInfo); + if (dwSignerInfo != 0) + { + PCMSG_SIGNER_INFO pSignerInfo2 = (PCMSG_SIGNER_INFO)LocalAlloc(LPTR, dwSignerInfo); + if (pSignerInfo2) + { + if (pfnCryptMsgGetParam(hMsg2, CMSG_SIGNER_INFO_PARAM, 0, (PVOID)pSignerInfo2, &dwSignerInfo)) + { + CRYPT_DATA_BLOB c7Data; + c7Data.pbData = pSignerInfo->UnauthAttrs.rgAttr[i].rgValue->pbData; + c7Data.cbData = pSignerInfo->UnauthAttrs.rgAttr[i].rgValue->cbData; + + auto hStore2 = pfnCertOpenStore(CERT_STORE_PROV_PKCS7, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, NULL, 0, &c7Data); + if (!hStore2) + { + LocalFree(pSignerInfo2); + return false; + } + + CERT_INFO CertInfo{}; + PCCERT_CONTEXT pCertContext = NULL; + + // Search for the signer certificate in the temporary certificate store. + CertInfo.Issuer = pSignerInfo2->Issuer; + CertInfo.SerialNumber = pSignerInfo2->SerialNumber; + pCertContext = pfnCertFindCertificateInStore(hStore2, + (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING), + 0, + CERT_FIND_SUBJECT_CERT, + (PVOID)&CertInfo, + NULL); + if (!pCertContext) + { + LocalFree(pSignerInfo2); + pfnCertCloseStore(hStore2, CERT_CLOSE_STORE_FORCE_FLAG); + return false; + } + + void* decodedPublicKey{}; + DWORD decodedPublicLength{}; + if (pfnCryptDecodeObjectEx((PKCS_7_ASN_ENCODING | X509_ASN_ENCODING), + CNG_RSA_PUBLIC_KEY_BLOB, + pCertContext->pCertInfo->SubjectPublicKeyInfo.PublicKey.pbData, + pCertContext->pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData, + CRYPT_ENCODE_ALLOC_FLAG, + NULL, + &decodedPublicKey, + &decodedPublicLength)) + { + static uint8_t s_rsaStreamlinePublicKey[] = + { + 0x52, 0x53, 0x41, 0x31, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xc1, 0x8e, 0x40, 0xc3, 0xf5, + 0xa7, 0x01, 0x9a, 0x37, 0x6b, 0x47, 0xa8, 0x58, 0xe8, 0xbe, 0xe3, 0x55, 0x0a, 0xee, 0x0f, 0x0d, + 0x32, 0xaa, 0x12, 0xf9, 0x56, 0x7f, 0x5d, 0xfd, 0x82, 0x09, 0x33, 0x21, 0x42, 0xf2, 0xe8, 0x74, + 0x98, 0x51, 0xb3, 0x88, 0x74, 0xcd, 0x00, 0x6e, 0xb1, 0x08, 0x10, 0x4b, 0xf1, 0xda, 0xd6, 0x97, + 0x87, 0xd4, 0x9c, 0xb1, 0x13, 0xa8, 0xa2, 0x86, 0x15, 0x0e, 0xc1, 0xa5, 0x9c, 0xe5, 0x90, 0x9b, + 0xbe, 0x69, 0xdc, 0x6a, 0x82, 0xbe, 0xb4, 0x4b, 0x4b, 0xfa, 0x95, 0x8e, 0xc1, 0xfc, 0x2b, 0x61, + 0x95, 0xd1, 0x91, 0xed, 0xeb, 0x87, 0xe7, 0x09, 0x84, 0x05, 0x41, 0x03, 0xb0, 0x2d, 0xd4, 0x39, + 0x7f, 0x62, 0x06, 0x56, 0x33, 0x93, 0x7e, 0x77, 0x54, 0x06, 0x77, 0x2b, 0x75, 0x05, 0xbc, 0xeb, + 0x98, 0xea, 0xc0, 0xa2, 0xca, 0x98, 0x86, 0x0f, 0x10, 0x65, 0xde, 0x19, 0x2c, 0xa6, 0x1e, 0x93, + 0xb0, 0x92, 0x5d, 0x5f, 0x5b, 0x6f, 0x79, 0x6d, 0x2c, 0x76, 0xa6, 0x67, 0x50, 0xaa, 0x8f, 0xc2, + 0x4c, 0xf1, 0x08, 0xf7, 0xc0, 0x27, 0x29, 0xf0, 0x68, 0xf4, 0x64, 0x00, 0x1c, 0xb6, 0x28, 0x1e, + 0x25, 0xb8, 0xf3, 0x8a, 0xd1, 0x6e, 0x65, 0xa3, 0x61, 0x9d, 0xf8, 0xca, 0x4a, 0x41, 0x60, 0x80, + 0x62, 0xdf, 0x41, 0xa4, 0x8b, 0xdc, 0x97, 0xee, 0xeb, 0x64, 0x6f, 0xe4, 0x8f, 0x4b, 0xdf, 0x24, + 0x01, 0x80, 0xd9, 0xb4, 0x0a, 0xec, 0x0d, 0x3e, 0xb7, 0x76, 0xba, 0xe9, 0xe7, 0xde, 0x07, 0xdd, + 0x30, 0xc8, 0x4a, 0x14, 0x79, 0xec, 0x15, 0xed, 0x5c, 0xc6, 0xcc, 0xd4, 0xe6, 0x06, 0x3c, 0x42, + 0x92, 0x10, 0xf7, 0x7c, 0x80, 0x1e, 0x78, 0xd3, 0xb4, 0x9f, 0xc2, 0x3b, 0xa8, 0x7b, 0xa0, 0xe3, + 0x0c, 0xd9, 0xad, 0x2e, 0x09, 0x72, 0xe2, 0x8f, 0x54, 0x28, 0x87, 0x3c, 0xba, 0x7c, 0x97, 0x80, + 0xdc, 0x09, 0xb5, 0x12, 0x34, 0x78, 0x9a, 0x26, 0xd0, 0xa3, 0xa7, 0xa7, 0x1b, 0x25, 0x19, 0xe5, + 0x6e, 0xbe, 0xd7, 0x5a, 0x91, 0x32, 0xc4, 0xa9, 0x2f, 0xcc, 0xd5, 0x82, 0x4b, 0x5b, 0x9f, 0xad, + 0xf3, 0x2f, 0xed, 0x4f, 0x33, 0xe1, 0x50, 0x33, 0xd6, 0x90, 0x79, 0x22, 0xe5, 0x1c, 0xc7, 0x35, + 0xe7, 0x58, 0xe6, 0xb4, 0x8b, 0xc4, 0x28, 0x20, 0xec, 0xca, 0x70, 0xbb, 0x02, 0x1b, 0x48, 0xd8, + 0x84, 0x51, 0x24, 0x33, 0x2a, 0x08, 0xb1, 0x15, 0x4e, 0xbc, 0x88, 0xa5, 0xe1, 0x37, 0x76, 0x70, + 0xe6, 0xdf, 0x3f, 0x73, 0xfd, 0x0d, 0x8a, 0xd9, 0x0d, 0xa5, 0x35, 0xb2, 0xb4, 0x01, 0x42, 0x96, + 0xc4, 0xaa, 0x1c, 0xeb, 0x68, 0x62, 0x36, 0xbf, 0xef, 0x5e, 0x2a, 0x3d, 0x18, 0x91, 0x8b, 0x92, + 0x0a, 0x1e, 0xce, 0x98, 0x5b, 0x7b, 0x64, 0x42, 0x09, 0xb0, 0x1d + }; + + valid = decodedPublicLength == sizeof(s_rsaStreamlinePublicKey) && memcmp(s_rsaStreamlinePublicKey, decodedPublicKey, decodedPublicLength) == 0; + LocalFree(decodedPublicKey); + } + + pfnCertFreeCertificateContext(pCertContext); + pfnCertCloseStore(hStore2, CERT_CLOSE_STORE_FORCE_FLAG); + } + LocalFree(pSignerInfo2); + } + } + } + pfnCryptMsgClose(hMsg2); + } + break; + } + } + + LocalFree(pSignerInfo); + pfnCryptMsgClose(hMsg); + pfnCertCloseStore(hStore, CERT_CLOSE_STORE_FORCE_FLAG); + + return valid; +} + +//! See https://docs.microsoft.com/en-us/windows/win32/seccrypto/example-c-program--verifying-the-signature-of-a-pe-file +//! +//! IMPORTANT: Always pass in the FULL PATH to the file, relative paths are NOT allowed! +bool verifyEmbeddedSignature(const wchar_t* pathToFile) +{ + bool valid = true; + + LONG lStatus = {}; + + // Initialize the WINTRUST_FILE_INFO structure. + + WINTRUST_FILE_INFO FileData; + memset(&FileData, 0, sizeof(FileData)); + FileData.cbStruct = sizeof(WINTRUST_FILE_INFO); + FileData.pcwszFilePath = pathToFile; + FileData.hFile = NULL; + FileData.pgKnownSubject = NULL; + + if (!pfnWinVerifyTrust) + { + // We only support Win10+ so we can search for module in system32 directly + auto hModWintrust = LoadLibraryExW(L"wintrust.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); + if (!hModWintrust || !GetProc(hModWintrust, "WinVerifyTrust", pfnWinVerifyTrust)) + { + return false; + } + } + + /* + WVTPolicyGUID specifies the policy to apply on the file + WINTRUST_ACTION_GENERIC_VERIFY_V2 policy checks: + + 1) The certificate used to sign the file chains up to a root + certificate located in the trusted root certificate store. This + implies that the identity of the publisher has been verified by + a certification authority. + + 2) In cases where user interface is displayed (which this example + does not do), WinVerifyTrust will check for whether the + end entity certificate is stored in the trusted publisher store, + implying that the user trusts content from this publisher. + + 3) The end entity certificate has sufficient permission to sign + code, as indicated by the presence of a code signing EKU or no + EKU. + */ + + GUID WVTPolicyGUID = WINTRUST_ACTION_GENERIC_VERIFY_V2; + WINTRUST_DATA WinTrustData; + + // Initialize the WinVerifyTrust input data structure. + + // Default all fields to 0. + memset(&WinTrustData, 0, sizeof(WinTrustData)); + + WinTrustData.cbStruct = sizeof(WinTrustData); + // Use default code signing EKU. + WinTrustData.pPolicyCallbackData = NULL; + // No data to pass to SIP. + WinTrustData.pSIPClientData = NULL; + // Disable WVT UI. + WinTrustData.dwUIChoice = WTD_UI_NONE; + // No revocation checking. + WinTrustData.fdwRevocationChecks = WTD_REVOKE_NONE; + // Verify an embedded signature on a file. + WinTrustData.dwUnionChoice = WTD_CHOICE_FILE; + // Verify action. + WinTrustData.dwStateAction = WTD_STATEACTION_VERIFY; + // Verification sets this value. + WinTrustData.hWVTStateData = NULL; + // Not used. + WinTrustData.pwszURLReference = NULL; + // This is not applicable if there is no UI because it changes + // the UI to accommodate running applications instead of + // installing applications. + WinTrustData.dwUIContext = 0; + // Set pFile. + WinTrustData.pFile = &FileData; + + // First verify the primary signature (index 0) to determine how many secondary signatures + // are present. We use WSS_VERIFY_SPECIFIC and dwIndex to do this, also setting + // WSS_GET_SECONDARY_SIG_COUNT to have the number of secondary signatures returned. + WINTRUST_SIGNATURE_SETTINGS SignatureSettings = {}; + CERT_STRONG_SIGN_PARA StrongSigPolicy = {}; + SignatureSettings.cbStruct = sizeof(WINTRUST_SIGNATURE_SETTINGS); + SignatureSettings.dwFlags = WSS_GET_SECONDARY_SIG_COUNT | WSS_VERIFY_SPECIFIC; + SignatureSettings.dwIndex = 0; + WinTrustData.pSignatureSettings = &SignatureSettings; + + StrongSigPolicy.cbSize = sizeof(CERT_STRONG_SIGN_PARA); + StrongSigPolicy.dwInfoChoice = CERT_STRONG_SIGN_OID_INFO_CHOICE; + StrongSigPolicy.pszOID = (LPSTR)szOID_CERT_STRONG_SIGN_OS_CURRENT; + WinTrustData.pSignatureSettings->pCryptoPolicy = &StrongSigPolicy; + + // WinVerifyTrust verifies signatures as specified by the GUID and Wintrust_Data. + lStatus = pfnWinVerifyTrust(NULL, &WVTPolicyGUID, &WinTrustData); + + // First signature must be validated by the OS + valid = lStatus == ERROR_SUCCESS; + if (!valid) + { + printf("File '%S' is NOT correctly signed - Streamline will not load unsecured modules\n", pathToFile); + } + else + { + // Now there has to be a secondary one + valid &= WinTrustData.pSignatureSettings->cSecondarySigs == 1; + if (!valid) + { + printf("File '%S' does not have the secondary NVIDIA signature - Streamline will not load unsecured modules\n", pathToFile); + } + else + { + // The secondary signature must be from NVIDIA + valid &= isSignedByNVIDIA(pathToFile); + if (valid) + { + printf("File '%S' is signed by NVIDIA and the signature was verified.\n", pathToFile); + } + else + { + printf("File '%S' is NOT correctly signed - Streamline will not load unsecured modules\n", pathToFile); + } + } + } + + // Any hWVTStateData must be released by a call with close. + WinTrustData.dwStateAction = WTD_STATEACTION_CLOSE; + lStatus = pfnWinVerifyTrust(NULL, &WVTPolicyGUID, &WinTrustData); + + return valid; +} + +} +} + diff --git a/third_party/streamline/include/sl_struct.h b/third_party/streamline/include/sl_struct.h new file mode 100644 index 000000000..e9e911185 --- /dev/null +++ b/third_party/streamline/include/sl_struct.h @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +#include +#include + +namespace sl +{ + +//! GUID +struct StructType +{ + uint32_t data1; + uint16_t data2; + uint16_t data3; + uint8_t data4[8]; + + inline bool operator==(const StructType& rhs) const { return memcmp(this, &rhs, sizeof(*this)) == 0; } + inline bool operator!=(const StructType& rhs) const { return memcmp(this, &rhs, sizeof(*this)) != 0; } +}; + +//! SL is using typed and versioned structures which can be chained or not. +//! +//! --- OPTION 1 --- +//! +//! New members must be added at the end and version needs to be increased: +//! +//! SL_STRUCT_BEGIN(S1, GUID1, kStructVersion1) +//! A +//! B +//! C +//! SL_STRUCT_END() +//! +//! SL_STRUCT_BEGIN(S1, GUID1, kStructVersion2) // Note that version is bumped +//! // V1 +//! A +//! B +//! C +//! +//! //! V2 - new members always go at the end! +//! D +//! E +//! SL_STRUCT_END() +//! +//! Here is one example on how to check for version and handle backwards compatibility: +//! +//! void func(const S1* input) +//! { +//! // Access A, B, C as needed +//! ... +//! if (input->structVersion >= kStructVersion2) +//! { +//! // Safe to access D, E +//! } +//! } + + +//! --- OPTION 2 --- +//! +//! New members are optional and added to a new struct which is then chained as needed: +//! +//! SL_STRUCT_BEGIN(S1, GUID1, kStructVersion1) +//! A +//! B +//! C +//! SL_STRUCT_END() +//! +//! SL_STRUCT_BEGIN(S2, GUID2, kStructVersion1) // Note that this is a different struct with new GUID +//! D +//! E +//! SL_STRUCT_END() +//! +//! S1 s1; +//! S2 s2 +//! s1.next = &s2; // optional parameters in S2 + +//! IMPORTANT: New members in the structure always go at the end! +//! +constexpr uint32_t kStructVersion1 = 1; +constexpr uint32_t kStructVersion2 = 2; +constexpr uint32_t kStructVersion3 = 3; +constexpr uint32_t kStructVersion4 = 4; +constexpr uint32_t kStructVersion5 = 5; +constexpr uint32_t kStructVersion6 = 6; +constexpr uint32_t kStructVersion7 = 7; + +struct BaseStructure +{ + BaseStructure() = delete; + BaseStructure(StructType t, uint32_t v) : structType(t), structVersion(v) {}; + BaseStructure* next{}; + StructType structType{}; + size_t structVersion; +}; + +#define SL_STRUCT_BEGIN(name, guid, version) \ +struct name : public sl::BaseStructure \ +{ \ + name() : sl::BaseStructure(guid, version){} \ + constexpr static sl::StructType s_structType = guid; + +#define SL_STRUCT_END() }; + +#define SL_STRUCT_PROTECTED_BEGIN(name, guid, version) \ +struct name : public sl::BaseStructure \ +{ \ +protected: \ + name() : sl::BaseStructure(guid, version){} \ +public: \ + constexpr static sl::StructType s_structType = guid; \ + + +// Deprecated: please use SL_STRUCT_BEGIN/SL_STRUCT_END instead +#define SL_STRUCT(name, guid, version) \ +SL_STRUCT_BEGIN(name, guid, version) + +// Deprecated: please use SL_STRUCT_PROTECTED_BEGIN/SL_STRUCT_END instead +#define SL_STRUCT_PROTECTED(name, guid, version) \ +SL_STRUCT_PROTECTED_BEGIN(name, guid, version) + +} // namespace sl diff --git a/third_party/streamline/include/sl_template.h b/third_party/streamline/include/sl_template.h new file mode 100644 index 000000000..e60b6d7d7 --- /dev/null +++ b/third_party/streamline/include/sl_template.h @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +#pragma once + +namespace sl +{ + +//! Each feature must have a unique id, please see sl.h Feature +//! +constexpr uint32_t kFeatureTemplate = 0xffff; + +//! If your plugin does not have any constants then the code below can be removed +//! +enum class TemplateMode : uint32_t +{ + eOff, + eOn +}; + +//! IMPORTANT: Each structure must have a unique GUID assigned, change this as needed +//! +// {29DF7FE0-273A-4D72-B481-2DC823D5B1AD} +SL_STRUCT_BEGIN(TemplateConstants, StructType({ 0x29df7fe0, 0x273a, 0x4d72, { 0xb4, 0x81, 0x2d, 0xc8, 0x23, 0xd5, 0xb1, 0xad } }), kStructVersion1) + TemplateMode mode = TemplateMode::eOff; + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +//! IMPORTANT: Each structure must have a unique GUID assigned, change this as needed +//! +// {39DF7FE0-283A-4D72-B481-2DC823D5B1AD} +SL_STRUCT_BEGIN(TemplateSettings, StructType({ 0x39df7fe0, 0x283a, 0x4d72, { 0xb4, 0x81, 0x2d, 0xc8, 0x23, 0xd5, 0xb1, 0xad } }), kStructVersion1) + + //! IMPORTANT: New members go here or if optional can be chained in a new struct, see sl_struct.h for details +SL_STRUCT_END() + +} diff --git a/third_party/streamline/include/sl_version.h b/third_party/streamline/include/sl_version.h new file mode 100644 index 000000000..1848f70d1 --- /dev/null +++ b/third_party/streamline/include/sl_version.h @@ -0,0 +1,99 @@ +/* +* Copyright (c) 2022-2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ +#pragma once + +#define SL_VERSION_MAJOR 2 +#define SL_VERSION_MINOR 14 +#define SL_VERSION_PATCH 16 + +#include +#include + +namespace sl +{ +constexpr uint64_t kSDKVersionMagic = 0xfedc; +constexpr uint64_t kSDKVersion = (uint64_t(SL_VERSION_MAJOR) << 48) | (uint64_t(SL_VERSION_MINOR) << 32) | (uint64_t(SL_VERSION_PATCH) << 16) | kSDKVersionMagic; + +struct Version +{ + Version() : major(0), minor(0), build(0) {}; + Version(uint32_t v1, uint32_t v2, uint32_t v3) : major(v1), minor(v2), build(v3) {}; + + inline operator bool() const { return major != 0 || minor != 0 || build != 0; } + + inline std::string toStr() const + { + return std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(build); + } + inline std::wstring toWStr() const + { + return std::to_wstring(major) + L"." + std::to_wstring(minor) + L"." + std::to_wstring(build); + } + inline std::wstring toWStrOTAId() const + { + return std::to_wstring((major << 16) | (minor << 8) | build); + } + inline bool operator==(const Version& rhs) const + { + return major == rhs.major && minor == rhs.minor && build == rhs.build; + } + inline bool operator>(const Version& rhs) const + { + if (major < rhs.major) return false; + else if (major > rhs.major) return true; + // major version the same + if (minor < rhs.minor) return false; + else if (minor > rhs.minor) return true; + // minor version the same + if (build < rhs.build) return false; + else if (build > rhs.build) return true; + // build version the same + return false; + }; + inline bool operator>=(const Version& rhs) const + { + return operator>(rhs) || operator==(rhs); + }; + inline bool operator<(const Version& rhs) const + { + if (major > rhs.major) return false; + else if (major < rhs.major) return true; + // major version the same + if (minor > rhs.minor) return false; + else if (minor < rhs.minor) return true; + // minor version the same + if (build > rhs.build) return false; + else if (build < rhs.build) return true; + // build version the same + return false; + }; + inline bool operator<=(const Version& rhs) const + { + return operator<(rhs) || operator==(rhs); + }; + + uint32_t major; + uint32_t minor; + uint32_t build; +}; + +} diff --git a/third_party/streamline/license.txt b/third_party/streamline/license.txt new file mode 100644 index 000000000..9f48a0c32 --- /dev/null +++ b/third_party/streamline/license.txt @@ -0,0 +1,33 @@ +/* +* Copyright (c) 2023 NVIDIA CORPORATION. All rights reserved +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +*/ + +/* +* NSight Perf SDK License, Version 2023.3 +* Please see the file included in this package +* "NVIDIA Nsight Perf SDK License (28Sept2022).pdf" for licensing details +* of the NSight Perf SDK. +* NSight Perf SDK ver 2023.3 can be downloaded from here: +* https://developer.nvidia.com/gameworksdownload#?dn=nsight-perf-sdk-2023-3 +* The Streamline files covered by the NSight Perf SDK License are: +* sl_nvperf.h +* sl_nvperf.dll +*/ \ No newline at end of file From e1e7985cb6fd30af19722719fd832a4de8e5dec2 Mon Sep 17 00:00:00 2001 From: Jordan Date: Sun, 8 Nov 2026 23:48:56 +0000 Subject: [PATCH 02/13] AMD FSR 4.1 in place of the game's upscale, with a sub-pixel jitter (on top of #850's DLSS frame code) A second backend for #850's replacement of OoT's gameplay upscale, ported from the FSR 4.1 work on Lichii's OoT branch (madebyjordan/Lichii-Hyrule oot-dev, 7f8ae5b337..c5f2fce17d). It takes the same colour, depth and camera motion as DLSS; DLSS keeps priority when it is on. - vk_fsr4.cpp: AMD's FSR API (FidelityFX SDK 2.4). Only the MIT headers are vendored (third_party/fidelityfx); AMD's signed loader and upscaler DLLs load at run time from RX_FSR4_DIR or beside hookshot.exe. The newest 4.x provider the loader lists is picked explicitly (RDNA 2 and 3 run its INT8 model). LDR, non-linear colour, standard depth. One context per output size, render sizes up to it, so the Resolution row and the game's dynamic resolution need no new context. - Jitter: the game draws without one, so the draws that test or write the scene's depth move by a Halton (2, 3) sub-pixel offset through the viewport, and FSR is told it. The offset is part of the state dyn_pack compares, or a frame whose draws match the last frame's would keep the old one. From Lichii: the phase moves on at the network's pass (where the game's frame ends), not at presents; it is on only while FSR drew the last network pass. - AMD edge line (Lichii, RX 6700 XT): moved up or left, the AMD driver draws nothing into the scene's last column or row, a stale near-white value that became a flickering line in FSR's history. FSR's colour and the motion's depth repeat the column and row before them. Colour going into FSR is cleaned of NaN and Inf and clamped to [0, 1]; the output pass drops NaN and Inf for both upscalers. - FSR history resets when FSR did not draw the last network pass or on a camera cut, not by present count. - Menu: "AMD FSR 4.1" (Off/On, at once; ini key fsr4, RX_FSR4=0/1). Resolution sets what it upscales from (75% Quality, 50% Performance, 100% anti-aliasing only). RX_FSR4_JITTER=0 turns the jitter off. - What changes on native, compared with Lichii: no GPU-time divisor (Hookshot already scales the game's timer, so it keeps full quality), no hunt for the tonemap draw or depth reader (#818 takes them where the draws are), no 4/3-only size check. - tests/test_fsr_jitter.py: the jitter is compared and applied, moves on at the network's pass, and the edge repeat is in both passes. Co-Authored-By: Claude Opus 5.5 --- gpu/PROVENANCE.md | 6 + gpu/vk/shaders/dlss_color.comp | 12 +- gpu/vk/shaders/dlss_color_comp_spv.h | 139 ++- gpu/vk/shaders/dlss_motion.comp | 3 +- gpu/vk/shaders/dlss_motion_comp_spv.h | 206 ++-- gpu/vk/shaders/dlss_output.comp | 2 + gpu/vk/shaders/dlss_output_comp_spv.h | 69 +- gpu/vk/vk_draw.cpp | 103 +- gpu/vk/vk_fsr4.cpp | 281 +++++ gpu/vk/vk_fsr4.h | 27 + gpu/vk/vk_menu.cpp | 15 +- gpu/vk/vk_menu.h | 1 + nx2/build.py | 4 +- readme.md | 15 + tests/test_fsr_jitter.py | 79 ++ third_party/fidelityfx/LICENSE.md | 992 ++++++++++++++++++ third_party/fidelityfx/README.md | 9 + third_party/fidelityfx/api/include/ffx_api.h | 213 ++++ .../fidelityfx/api/include/ffx_api_types.h | 257 +++++ .../fidelityfx/api/include/vk/ffx_api_vk.h | 308 ++++++ .../upscalers/include/ffx_upscale.h | 230 ++++ 21 files changed, 2777 insertions(+), 194 deletions(-) create mode 100644 gpu/vk/vk_fsr4.cpp create mode 100644 gpu/vk/vk_fsr4.h create mode 100644 tests/test_fsr_jitter.py create mode 100644 third_party/fidelityfx/LICENSE.md create mode 100644 third_party/fidelityfx/README.md create mode 100644 third_party/fidelityfx/api/include/ffx_api.h create mode 100644 third_party/fidelityfx/api/include/ffx_api_types.h create mode 100644 third_party/fidelityfx/api/include/vk/ffx_api_vk.h create mode 100644 third_party/fidelityfx/upscalers/include/ffx_upscale.h diff --git a/gpu/PROVENANCE.md b/gpu/PROVENANCE.md index 412ceebba..8408631ce 100644 --- a/gpu/PROVENANCE.md +++ b/gpu/PROVENANCE.md @@ -34,3 +34,9 @@ Hookshot's NVIDIA DLSS (`vk/vk_dlss.cpp`, the DLSS part of `vk/vk_draw.cpp`, `vk `host_shaders/ocarina_*.comp`; Eden Emulator Project, GPL-3.0-or-later; Lichii credits Duck912's Eglantine work). `third_party/streamline/` is NVIDIA Streamline v2.14.16's headers (MIT, `license.txt`); its DLLs and NVIDIA's DLSS are loaded from the user's PC at run time and are not vendored. + +Hookshot's AMD FSR 4.1 (`vk/vk_fsr4.cpp`, the FSR and jitter parts of `vk/vk_draw.cpp`, the `fsr` paths of +`vk/shaders/dlss_*.comp`) is ported from madebyjordan's FSR 4.1 work on Lichii's OoT branch (`renderer_vulkan/vk_fsr4_upscaler.cpp`, +`vk_rasterizer.cpp`'s Ocarina jitter, `host_shaders/ocarina_*.comp`; GPL-3.0-or-later). `third_party/fidelityfx/` is AMD's +FSR API headers from FidelityFX SDK v2.4.0 (MIT, `LICENSE.md`); AMD's signed DLLs are loaded from the user's PC at run time +and are not vendored. diff --git a/gpu/vk/shaders/dlss_color.comp b/gpu/vk/shaders/dlss_color.comp index 44e5cf83a..cf1323ca2 100644 --- a/gpu/vk/shaders/dlss_color.comp +++ b/gpu/vk/shaders/dlss_color.comp @@ -4,7 +4,7 @@ layout(local_size_x = 8, local_size_y = 8) in; layout(binding = 0) uniform sampler2D guest_color; layout(binding = 1, rgba16f) uniform writeonly image2D dlss_color; -layout(push_constant) uniform P { int encode; } pc; +layout(push_constant) uniform P { int encode; int fsr; } pc; void main() { ivec2 pixel = ivec2(gl_GlobalInvocationID.xy); @@ -14,6 +14,12 @@ void main() { // The guest has already tonemapped this square-root-encoded color for LDR (the network's input, RGB9E5). (hookshot) encode = 1: // the tonemapped scene, the network's first passes left out (vk_draw.cpp), square-root encoded here the same way. // dlss_output.comp squares it back - const vec3 c = max(texelFetch(guest_color, pixel, 0).rgb, vec3(0.0)); - imageStore(dlss_color, pixel, vec4(pc.encode != 0 ? sqrt(c) : c, 1.0)); + // (hookshot-amd) fsr = 1, AMD FSR 4.1: its LDR mode keeps history, where a NaN, infinite or out-of-range value would build up; + // and under its jitter moved up or left, the AMD driver draws nothing into the scene's last column or row (a stale near-white + // value, a flickering line on the right and bottom edges): they repeat the ones before them (vk_draw.cpp FsrJitter) + const ivec2 source = pc.fsr != 0 ? min(pixel, max(imageSize(dlss_color) - 2, ivec2(0))) : pixel; + vec3 c = max(texelFetch(guest_color, source, 0).rgb, vec3(0.0)); + if (pc.fsr != 0 && (any(isnan(c)) || any(isinf(c)))) c = vec3(0.0); + c = pc.encode != 0 ? sqrt(c) : c; + imageStore(dlss_color, pixel, vec4(pc.fsr != 0 ? min(c, vec3(1.0)) : c, 1.0)); } diff --git a/gpu/vk/shaders/dlss_color_comp_spv.h b/gpu/vk/shaders/dlss_color_comp_spv.h index 6ea3734c4..8bb55be4d 100644 --- a/gpu/vk/shaders/dlss_color_comp_spv.h +++ b/gpu/vk/shaders/dlss_color_comp_spv.h @@ -1,60 +1,97 @@ - // 1116.6.0 + // 1116.2.0 #pragma once const uint32_t DLSS_COLOR_COMP_SPV[] = { - 0x07230203,0x00010600,0x0008000b,0x0000004a,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010500,0x0008000b,0x0000007d,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, 0x00000000,0x00000001,0x0009000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d, - 0x00000016,0x00000026,0x00000035,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008, + 0x00000016,0x00000023,0x0000003f,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008, 0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000, 0x00040005,0x00000009,0x65786970,0x0000006c,0x00080005,0x0000000d,0x475f6c67,0x61626f6c, 0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x00000016,0x73736c64,0x6c6f635f, - 0x0000726f,0x00030005,0x00000022,0x00000063,0x00050005,0x00000026,0x73657567,0x6f635f74, - 0x00726f6c,0x00030005,0x00000033,0x00000050,0x00050006,0x00000033,0x00000000,0x6f636e65, - 0x00006564,0x00030005,0x00000035,0x00006370,0x00040047,0x0000000d,0x0000000b,0x0000001c, + 0x0000726f,0x00040005,0x00000020,0x72756f73,0x00006563,0x00030005,0x00000021,0x00000050, + 0x00050006,0x00000021,0x00000000,0x6f636e65,0x00006564,0x00040006,0x00000021,0x00000001, + 0x00727366,0x00030005,0x00000023,0x00006370,0x00030005,0x0000003b,0x00000063,0x00050005, + 0x0000003f,0x73657567,0x6f635f74,0x00726f6c,0x00040047,0x0000000d,0x0000000b,0x0000001c, 0x00030047,0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047, - 0x00000016,0x00000022,0x00000000,0x00040047,0x00000026,0x00000021,0x00000000,0x00040047, - 0x00000026,0x00000022,0x00000000,0x00030047,0x00000033,0x00000002,0x00050048,0x00000033, - 0x00000000,0x00000023,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002, - 0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002, - 0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000, - 0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b, - 0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002, - 0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000, - 0x00000000,0x00000000,0x00000002,0x00000002,0x00040020,0x00000015,0x00000000,0x00000014, - 0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x00000019,0x00040017,0x0000001a, - 0x00000019,0x00000002,0x00040017,0x00000020,0x00000013,0x00000003,0x00040020,0x00000021, - 0x00000007,0x00000020,0x00090019,0x00000023,0x00000013,0x00000001,0x00000000,0x00000000, - 0x00000000,0x00000001,0x00000000,0x0003001b,0x00000024,0x00000023,0x00040020,0x00000025, - 0x00000000,0x00000024,0x0004003b,0x00000025,0x00000026,0x00000000,0x0004002b,0x00000006, - 0x00000029,0x00000000,0x00040017,0x0000002b,0x00000013,0x00000004,0x0004002b,0x00000013, - 0x0000002e,0x00000000,0x0006002c,0x00000020,0x0000002f,0x0000002e,0x0000002e,0x0000002e, - 0x0003001e,0x00000033,0x00000006,0x00040020,0x00000034,0x00000009,0x00000033,0x0004003b, - 0x00000034,0x00000035,0x00000009,0x00040020,0x00000036,0x00000009,0x00000006,0x0004002b, - 0x00000013,0x00000042,0x3f800000,0x0004002b,0x0000000a,0x00000047,0x00000008,0x0004002b, - 0x0000000a,0x00000048,0x00000001,0x0006002c,0x0000000b,0x00000049,0x00000047,0x00000047, - 0x00000048,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, - 0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000021,0x00000022,0x00000007, - 0x0004003b,0x00000021,0x0000003a,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d, - 0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c, - 0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000007, - 0x00000012,0x00000009,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068,0x00000007, - 0x00000018,0x00000017,0x000500af,0x0000001a,0x0000001b,0x00000012,0x00000018,0x0004009a, - 0x00000019,0x0000001c,0x0000001b,0x000300f7,0x0000001e,0x00000000,0x000400fa,0x0000001c, - 0x0000001d,0x0000001e,0x000200f8,0x0000001d,0x000100fd,0x000200f8,0x0000001e,0x0004003d, - 0x00000024,0x00000027,0x00000026,0x0004003d,0x00000007,0x00000028,0x00000009,0x00040064, - 0x00000023,0x0000002a,0x00000027,0x0007005f,0x0000002b,0x0000002c,0x0000002a,0x00000028, - 0x00000002,0x00000029,0x0008004f,0x00000020,0x0000002d,0x0000002c,0x0000002c,0x00000000, - 0x00000001,0x00000002,0x0007000c,0x00000020,0x00000030,0x00000001,0x00000028,0x0000002d, - 0x0000002f,0x0003003e,0x00000022,0x00000030,0x0004003d,0x00000014,0x00000031,0x00000016, - 0x0004003d,0x00000007,0x00000032,0x00000009,0x00050041,0x00000036,0x00000037,0x00000035, - 0x00000029,0x0004003d,0x00000006,0x00000038,0x00000037,0x000500ab,0x00000019,0x00000039, - 0x00000038,0x00000029,0x000300f7,0x0000003c,0x00000000,0x000400fa,0x00000039,0x0000003b, - 0x0000003f,0x000200f8,0x0000003b,0x0004003d,0x00000020,0x0000003d,0x00000022,0x0006000c, - 0x00000020,0x0000003e,0x00000001,0x0000001f,0x0000003d,0x0003003e,0x0000003a,0x0000003e, - 0x000200f9,0x0000003c,0x000200f8,0x0000003f,0x0004003d,0x00000020,0x00000040,0x00000022, - 0x0003003e,0x0000003a,0x00000040,0x000200f9,0x0000003c,0x000200f8,0x0000003c,0x0004003d, - 0x00000020,0x00000041,0x0000003a,0x00050051,0x00000013,0x00000043,0x00000041,0x00000000, - 0x00050051,0x00000013,0x00000044,0x00000041,0x00000001,0x00050051,0x00000013,0x00000045, - 0x00000041,0x00000002,0x00070050,0x0000002b,0x00000046,0x00000043,0x00000044,0x00000045, - 0x00000042,0x00040063,0x00000031,0x00000032,0x00000046,0x000100fd,0x00010038 + 0x00000016,0x00000022,0x00000000,0x00030047,0x00000021,0x00000002,0x00050048,0x00000021, + 0x00000000,0x00000023,0x00000000,0x00050048,0x00000021,0x00000001,0x00000023,0x00000004, + 0x00040047,0x0000003f,0x00000021,0x00000000,0x00040047,0x0000003f,0x00000022,0x00000000, + 0x00040047,0x0000007c,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, + 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006, + 0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020, + 0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001, + 0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a, + 0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000002,0x00000002,0x00040020,0x00000015,0x00000000, + 0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x00000019,0x00040017, + 0x0000001a,0x00000019,0x00000002,0x0004001e,0x00000021,0x00000006,0x00000006,0x00040020, + 0x00000022,0x00000009,0x00000021,0x0004003b,0x00000022,0x00000023,0x00000009,0x0004002b, + 0x00000006,0x00000024,0x00000001,0x00040020,0x00000025,0x00000009,0x00000006,0x0004002b, + 0x00000006,0x00000028,0x00000000,0x0004002b,0x00000006,0x00000030,0x00000002,0x0005002c, + 0x00000007,0x00000033,0x00000028,0x00000028,0x00040017,0x00000039,0x00000013,0x00000003, + 0x00040020,0x0000003a,0x00000007,0x00000039,0x00090019,0x0000003c,0x00000013,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x0000003d,0x0000003c, + 0x00040020,0x0000003e,0x00000000,0x0000003d,0x0004003b,0x0000003e,0x0000003f,0x00000000, + 0x00040017,0x00000043,0x00000013,0x00000004,0x0004002b,0x00000013,0x00000046,0x00000000, + 0x0006002c,0x00000039,0x00000047,0x00000046,0x00000046,0x00000046,0x00040017,0x0000004f, + 0x00000019,0x00000003,0x0004002b,0x00000013,0x00000070,0x3f800000,0x0006002c,0x00000039, + 0x00000071,0x00000070,0x00000070,0x00000070,0x0004002b,0x0000000a,0x0000007a,0x00000008, + 0x0004002b,0x0000000a,0x0000007b,0x00000001,0x0006002c,0x0000000b,0x0000007c,0x0000007a, + 0x0000007a,0x0000007b,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, + 0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x00000020, + 0x00000007,0x0004003b,0x00000008,0x0000002a,0x00000007,0x0004003b,0x0000003a,0x0000003b, + 0x00000007,0x0004003b,0x0000003a,0x0000005f,0x00000007,0x0004003b,0x0000003a,0x0000006c, + 0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010, + 0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011,0x00000010, + 0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000007,0x00000012,0x00000009,0x0004003d, + 0x00000014,0x00000017,0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x000500af, + 0x0000001a,0x0000001b,0x00000012,0x00000018,0x0004009a,0x00000019,0x0000001c,0x0000001b, + 0x000300f7,0x0000001e,0x00000000,0x000400fa,0x0000001c,0x0000001d,0x0000001e,0x000200f8, + 0x0000001d,0x000100fd,0x000200f8,0x0000001e,0x00050041,0x00000025,0x00000026,0x00000023, + 0x00000024,0x0004003d,0x00000006,0x00000027,0x00000026,0x000500ab,0x00000019,0x00000029, + 0x00000027,0x00000028,0x000300f7,0x0000002c,0x00000000,0x000400fa,0x00000029,0x0000002b, + 0x00000036,0x000200f8,0x0000002b,0x0004003d,0x00000007,0x0000002d,0x00000009,0x0004003d, + 0x00000014,0x0000002e,0x00000016,0x00040068,0x00000007,0x0000002f,0x0000002e,0x00050050, + 0x00000007,0x00000031,0x00000030,0x00000030,0x00050082,0x00000007,0x00000032,0x0000002f, + 0x00000031,0x0007000c,0x00000007,0x00000034,0x00000001,0x0000002a,0x00000032,0x00000033, + 0x0007000c,0x00000007,0x00000035,0x00000001,0x00000027,0x0000002d,0x00000034,0x0003003e, + 0x0000002a,0x00000035,0x000200f9,0x0000002c,0x000200f8,0x00000036,0x0004003d,0x00000007, + 0x00000037,0x00000009,0x0003003e,0x0000002a,0x00000037,0x000200f9,0x0000002c,0x000200f8, + 0x0000002c,0x0004003d,0x00000007,0x00000038,0x0000002a,0x0003003e,0x00000020,0x00000038, + 0x0004003d,0x0000003d,0x00000040,0x0000003f,0x0004003d,0x00000007,0x00000041,0x00000020, + 0x00040064,0x0000003c,0x00000042,0x00000040,0x0007005f,0x00000043,0x00000044,0x00000042, + 0x00000041,0x00000002,0x00000028,0x0008004f,0x00000039,0x00000045,0x00000044,0x00000044, + 0x00000000,0x00000001,0x00000002,0x0007000c,0x00000039,0x00000048,0x00000001,0x00000028, + 0x00000045,0x00000047,0x0003003e,0x0000003b,0x00000048,0x00050041,0x00000025,0x00000049, + 0x00000023,0x00000024,0x0004003d,0x00000006,0x0000004a,0x00000049,0x000500ab,0x00000019, + 0x0000004b,0x0000004a,0x00000028,0x000300f7,0x0000004d,0x00000000,0x000400fa,0x0000004b, + 0x0000004c,0x0000004d,0x000200f8,0x0000004c,0x0004003d,0x00000039,0x0000004e,0x0000003b, + 0x0004009c,0x0000004f,0x00000050,0x0000004e,0x0004009a,0x00000019,0x00000051,0x00000050, + 0x000400a8,0x00000019,0x00000052,0x00000051,0x000300f7,0x00000054,0x00000000,0x000400fa, + 0x00000052,0x00000053,0x00000054,0x000200f8,0x00000053,0x0004003d,0x00000039,0x00000055, + 0x0000003b,0x0004009d,0x0000004f,0x00000056,0x00000055,0x0004009a,0x00000019,0x00000057, + 0x00000056,0x000200f9,0x00000054,0x000200f8,0x00000054,0x000700f5,0x00000019,0x00000058, + 0x00000051,0x0000004c,0x00000057,0x00000053,0x000200f9,0x0000004d,0x000200f8,0x0000004d, + 0x000700f5,0x00000019,0x00000059,0x0000004b,0x0000002c,0x00000058,0x00000054,0x000300f7, + 0x0000005b,0x00000000,0x000400fa,0x00000059,0x0000005a,0x0000005b,0x000200f8,0x0000005a, + 0x0003003e,0x0000003b,0x00000047,0x000200f9,0x0000005b,0x000200f8,0x0000005b,0x00050041, + 0x00000025,0x0000005c,0x00000023,0x00000028,0x0004003d,0x00000006,0x0000005d,0x0000005c, + 0x000500ab,0x00000019,0x0000005e,0x0000005d,0x00000028,0x000300f7,0x00000061,0x00000000, + 0x000400fa,0x0000005e,0x00000060,0x00000064,0x000200f8,0x00000060,0x0004003d,0x00000039, + 0x00000062,0x0000003b,0x0006000c,0x00000039,0x00000063,0x00000001,0x0000001f,0x00000062, + 0x0003003e,0x0000005f,0x00000063,0x000200f9,0x00000061,0x000200f8,0x00000064,0x0004003d, + 0x00000039,0x00000065,0x0000003b,0x0003003e,0x0000005f,0x00000065,0x000200f9,0x00000061, + 0x000200f8,0x00000061,0x0004003d,0x00000039,0x00000066,0x0000005f,0x0003003e,0x0000003b, + 0x00000066,0x0004003d,0x00000014,0x00000067,0x00000016,0x0004003d,0x00000007,0x00000068, + 0x00000009,0x00050041,0x00000025,0x00000069,0x00000023,0x00000024,0x0004003d,0x00000006, + 0x0000006a,0x00000069,0x000500ab,0x00000019,0x0000006b,0x0000006a,0x00000028,0x000300f7, + 0x0000006e,0x00000000,0x000400fa,0x0000006b,0x0000006d,0x00000073,0x000200f8,0x0000006d, + 0x0004003d,0x00000039,0x0000006f,0x0000003b,0x0007000c,0x00000039,0x00000072,0x00000001, + 0x00000025,0x0000006f,0x00000071,0x0003003e,0x0000006c,0x00000072,0x000200f9,0x0000006e, + 0x000200f8,0x00000073,0x0004003d,0x00000039,0x00000074,0x0000003b,0x0003003e,0x0000006c, + 0x00000074,0x000200f9,0x0000006e,0x000200f8,0x0000006e,0x0004003d,0x00000039,0x00000075, + 0x0000006c,0x00050051,0x00000013,0x00000076,0x00000075,0x00000000,0x00050051,0x00000013, + 0x00000077,0x00000075,0x00000001,0x00050051,0x00000013,0x00000078,0x00000075,0x00000002, + 0x00070050,0x00000043,0x00000079,0x00000076,0x00000077,0x00000078,0x00000070,0x00040063, + 0x00000067,0x00000068,0x00000079,0x000100fd,0x00010038 }; diff --git a/gpu/vk/shaders/dlss_motion.comp b/gpu/vk/shaders/dlss_motion.comp index eb8588918..678de7201 100644 --- a/gpu/vk/shaders/dlss_motion.comp +++ b/gpu/vk/shaders/dlss_motion.comp @@ -7,6 +7,7 @@ layout(binding = 1, rg16f) uniform writeonly image2D motion; layout(push_constant, row_major) uniform Parameters { mat4 clip_to_previous_clip; + int fsr; // (hookshot-amd: AMD FSR 4.1's jitter on: the last column and row take the depth before them, dlss_color.comp) } params; void main() { @@ -17,7 +18,7 @@ void main() { } vec2 size = vec2(extent); - float depth = texelFetch(scene_depth, pixel, 0).r; + float depth = texelFetch(scene_depth, params.fsr != 0 ? min(pixel, max(extent - 2, ivec2(0))) : pixel, 0).r; vec2 screen = (vec2(pixel) + 0.5) / size; // The captured Zelda path is unjittered, with [-1, 1] clip depth and negative viewport height. vec4 clip = vec4(screen * vec2(2, -2) + vec2(-1, 1), depth * 2 - 1, 1); diff --git a/gpu/vk/shaders/dlss_motion_comp_spv.h b/gpu/vk/shaders/dlss_motion_comp_spv.h index 129471ff3..193d0e612 100644 --- a/gpu/vk/shaders/dlss_motion_comp_spv.h +++ b/gpu/vk/shaders/dlss_motion_comp_spv.h @@ -1,106 +1,120 @@ - // 1116.6.0 + // 1116.2.0 #pragma once const uint32_t DLSS_MOTION_COMP_SPV[] = { - 0x07230203,0x00010600,0x0008000b,0x0000008b,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010500,0x0008000b,0x0000009d,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001,0x0009000f,0x00000005,0x00000004,0x6e69616d, - 0x00000000,0x0000000d,0x00000016,0x0000002c,0x00000052,0x00060010,0x00000004,0x00000011, + 0x00000000,0x0000000d,0x00000016,0x0000002c,0x00000032,0x00060010,0x00000004,0x00000011, 0x00000008,0x00000008,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004, 0x6e69616d,0x00000000,0x00040005,0x00000009,0x65786970,0x0000006c,0x00080005,0x0000000d, 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000012, 0x65747865,0x0000746e,0x00040005,0x00000016,0x69746f6d,0x00006e6f,0x00040005,0x00000024, 0x657a6973,0x00000000,0x00040005,0x00000028,0x74706564,0x00000068,0x00050005,0x0000002c, - 0x6e656373,0x65645f65,0x00687470,0x00040005,0x00000035,0x65726373,0x00006e65,0x00040005, - 0x0000003e,0x70696c63,0x00000000,0x00050005,0x0000004e,0x76657270,0x73756f69,0x00000000, - 0x00050005,0x00000050,0x61726150,0x6574656d,0x00007372,0x00090006,0x00000050,0x00000000, - 0x70696c63,0x5f6f745f,0x76657270,0x73756f69,0x696c635f,0x00000070,0x00040005,0x00000052, - 0x61726170,0x0000736d,0x00040005,0x00000058,0x65786970,0x0000736c,0x00060005,0x0000006a, - 0x70736964,0x6563616c,0x746e656d,0x00000000,0x00040047,0x0000000d,0x0000000b,0x0000001c, - 0x00030047,0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047, - 0x00000016,0x00000022,0x00000000,0x00040047,0x0000002c,0x00000021,0x00000000,0x00040047, - 0x0000002c,0x00000022,0x00000000,0x00030047,0x00000050,0x00000002,0x00040048,0x00000050, - 0x00000000,0x00000004,0x00050048,0x00000050,0x00000000,0x00000007,0x00000010,0x00050048, - 0x00000050,0x00000000,0x00000023,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003, - 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006, - 0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020, - 0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001, - 0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a, - 0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001, - 0x00000000,0x00000000,0x00000000,0x00000002,0x00000007,0x00040020,0x00000015,0x00000000, - 0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017, - 0x0000001c,0x0000001b,0x00000002,0x00040017,0x00000022,0x00000013,0x00000002,0x00040020, - 0x00000023,0x00000007,0x00000022,0x00040020,0x00000027,0x00000007,0x00000013,0x00090019, - 0x00000029,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000, - 0x0003001b,0x0000002a,0x00000029,0x00040020,0x0000002b,0x00000000,0x0000002a,0x0004003b, - 0x0000002b,0x0000002c,0x00000000,0x0004002b,0x00000006,0x0000002f,0x00000000,0x00040017, - 0x00000031,0x00000013,0x00000004,0x0004002b,0x0000000a,0x00000033,0x00000000,0x0004002b, - 0x00000013,0x00000038,0x3f000000,0x00040020,0x0000003d,0x00000007,0x00000031,0x0004002b, - 0x00000013,0x00000040,0x40000000,0x0004002b,0x00000013,0x00000041,0xc0000000,0x0005002c, - 0x00000022,0x00000042,0x00000040,0x00000041,0x0004002b,0x00000013,0x00000044,0xbf800000, - 0x0004002b,0x00000013,0x00000045,0x3f800000,0x0005002c,0x00000022,0x00000046,0x00000044, - 0x00000045,0x00040018,0x0000004f,0x00000031,0x00000004,0x0003001e,0x00000050,0x0000004f, - 0x00040020,0x00000051,0x00000009,0x00000050,0x0004003b,0x00000051,0x00000052,0x00000009, - 0x00040020,0x00000053,0x00000009,0x0000004f,0x0004002b,0x00000013,0x00000059,0x00000000, - 0x0005002c,0x00000022,0x0000005a,0x00000059,0x00000059,0x0004002b,0x0000000a,0x00000062, - 0x00000003,0x0004002b,0x00000013,0x00000065,0x358637bd,0x0004002b,0x00000013,0x00000074, - 0xbf000000,0x0005002c,0x00000022,0x00000075,0x00000038,0x00000074,0x0004002b,0x00000013, - 0x0000007b,0x477fe000,0x0005002c,0x00000022,0x0000007c,0x0000007b,0x0000007b,0x0004002b, - 0x0000000a,0x00000088,0x00000008,0x0004002b,0x0000000a,0x00000089,0x00000001,0x0006002c, - 0x0000000b,0x0000008a,0x00000088,0x00000088,0x00000089,0x00050036,0x00000002,0x00000004, - 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007, - 0x0004003b,0x00000008,0x00000012,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007, - 0x0004003b,0x00000027,0x00000028,0x00000007,0x0004003b,0x00000023,0x00000035,0x00000007, - 0x0004003b,0x0000003d,0x0000003e,0x00000007,0x0004003b,0x0000003d,0x0000004e,0x00000007, - 0x0004003b,0x00000023,0x00000058,0x00000007,0x0004003b,0x00000023,0x0000006a,0x00000007, - 0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f, - 0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011,0x00000010,0x0003003e, - 0x00000009,0x00000011,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068,0x00000007, - 0x00000018,0x00000017,0x0003003e,0x00000012,0x00000018,0x0004003d,0x00000007,0x00000019, - 0x00000009,0x0004003d,0x00000007,0x0000001a,0x00000012,0x000500af,0x0000001c,0x0000001d, - 0x00000019,0x0000001a,0x0004009a,0x0000001b,0x0000001e,0x0000001d,0x000300f7,0x00000020, - 0x00000000,0x000400fa,0x0000001e,0x0000001f,0x00000020,0x000200f8,0x0000001f,0x000100fd, - 0x000200f8,0x00000020,0x0004003d,0x00000007,0x00000025,0x00000012,0x0004006f,0x00000022, - 0x00000026,0x00000025,0x0003003e,0x00000024,0x00000026,0x0004003d,0x0000002a,0x0000002d, - 0x0000002c,0x0004003d,0x00000007,0x0000002e,0x00000009,0x00040064,0x00000029,0x00000030, - 0x0000002d,0x0007005f,0x00000031,0x00000032,0x00000030,0x0000002e,0x00000002,0x0000002f, - 0x00050051,0x00000013,0x00000034,0x00000032,0x00000000,0x0003003e,0x00000028,0x00000034, - 0x0004003d,0x00000007,0x00000036,0x00000009,0x0004006f,0x00000022,0x00000037,0x00000036, - 0x00050050,0x00000022,0x00000039,0x00000038,0x00000038,0x00050081,0x00000022,0x0000003a, - 0x00000037,0x00000039,0x0004003d,0x00000022,0x0000003b,0x00000024,0x00050088,0x00000022, - 0x0000003c,0x0000003a,0x0000003b,0x0003003e,0x00000035,0x0000003c,0x0004003d,0x00000022, - 0x0000003f,0x00000035,0x00050085,0x00000022,0x00000043,0x0000003f,0x00000042,0x00050081, - 0x00000022,0x00000047,0x00000043,0x00000046,0x0004003d,0x00000013,0x00000048,0x00000028, - 0x00050085,0x00000013,0x00000049,0x00000048,0x00000040,0x00050083,0x00000013,0x0000004a, - 0x00000049,0x00000045,0x00050051,0x00000013,0x0000004b,0x00000047,0x00000000,0x00050051, - 0x00000013,0x0000004c,0x00000047,0x00000001,0x00070050,0x00000031,0x0000004d,0x0000004b, - 0x0000004c,0x0000004a,0x00000045,0x0003003e,0x0000003e,0x0000004d,0x00050041,0x00000053, - 0x00000054,0x00000052,0x0000002f,0x0004003d,0x0000004f,0x00000055,0x00000054,0x0004003d, - 0x00000031,0x00000056,0x0000003e,0x00050091,0x00000031,0x00000057,0x00000055,0x00000056, - 0x0003003e,0x0000004e,0x00000057,0x0003003e,0x00000058,0x0000005a,0x0004003d,0x00000013, - 0x0000005b,0x00000028,0x000500be,0x0000001b,0x0000005c,0x0000005b,0x00000059,0x0004003d, - 0x00000013,0x0000005d,0x00000028,0x000500bc,0x0000001b,0x0000005e,0x0000005d,0x00000045, - 0x000500a7,0x0000001b,0x0000005f,0x0000005c,0x0000005e,0x000300f7,0x00000061,0x00000000, - 0x000400fa,0x0000005f,0x00000060,0x00000061,0x000200f8,0x00000060,0x00050041,0x00000027, - 0x00000063,0x0000004e,0x00000062,0x0004003d,0x00000013,0x00000064,0x00000063,0x000500ba, - 0x0000001b,0x00000066,0x00000064,0x00000065,0x000200f9,0x00000061,0x000200f8,0x00000061, - 0x000700f5,0x0000001b,0x00000067,0x0000005f,0x00000020,0x00000066,0x00000060,0x000300f7, - 0x00000069,0x00000000,0x000400fa,0x00000067,0x00000068,0x00000069,0x000200f8,0x00000068, - 0x0004003d,0x00000031,0x0000006b,0x0000004e,0x0007004f,0x00000022,0x0000006c,0x0000006b, - 0x0000006b,0x00000000,0x00000001,0x00050041,0x00000027,0x0000006d,0x0000004e,0x00000062, - 0x0004003d,0x00000013,0x0000006e,0x0000006d,0x00050050,0x00000022,0x0000006f,0x0000006e, - 0x0000006e,0x00050088,0x00000022,0x00000070,0x0000006c,0x0000006f,0x0004003d,0x00000031, - 0x00000071,0x0000003e,0x0007004f,0x00000022,0x00000072,0x00000071,0x00000071,0x00000000, - 0x00000001,0x00050083,0x00000022,0x00000073,0x00000070,0x00000072,0x00050085,0x00000022, - 0x00000076,0x00000073,0x00000075,0x0004003d,0x00000022,0x00000077,0x00000024,0x00050085, - 0x00000022,0x00000078,0x00000076,0x00000077,0x0003003e,0x0000006a,0x00000078,0x0004003d, - 0x00000022,0x00000079,0x0000006a,0x0006000c,0x00000022,0x0000007a,0x00000001,0x00000004, - 0x00000079,0x000500bc,0x0000001c,0x0000007d,0x0000007a,0x0000007c,0x0004009b,0x0000001b, - 0x0000007e,0x0000007d,0x000300f7,0x00000080,0x00000000,0x000400fa,0x0000007e,0x0000007f, - 0x00000080,0x000200f8,0x0000007f,0x0004003d,0x00000022,0x00000081,0x0000006a,0x0003003e, - 0x00000058,0x00000081,0x000200f9,0x00000080,0x000200f8,0x00000080,0x000200f9,0x00000069, - 0x000200f8,0x00000069,0x0004003d,0x00000014,0x00000082,0x00000016,0x0004003d,0x00000007, - 0x00000083,0x00000009,0x0004003d,0x00000022,0x00000084,0x00000058,0x00050051,0x00000013, - 0x00000085,0x00000084,0x00000000,0x00050051,0x00000013,0x00000086,0x00000084,0x00000001, - 0x00070050,0x00000031,0x00000087,0x00000085,0x00000086,0x00000059,0x00000059,0x00040063, - 0x00000082,0x00000083,0x00000087,0x000100fd,0x00010038 + 0x6e656373,0x65645f65,0x00687470,0x00050005,0x00000030,0x61726150,0x6574656d,0x00007372, + 0x00090006,0x00000030,0x00000000,0x70696c63,0x5f6f745f,0x76657270,0x73756f69,0x696c635f, + 0x00000070,0x00040006,0x00000030,0x00000001,0x00727366,0x00040005,0x00000032,0x61726170, + 0x0000736d,0x00040005,0x0000004b,0x65726373,0x00006e65,0x00040005,0x00000054,0x70696c63, + 0x00000000,0x00050005,0x00000064,0x76657270,0x73756f69,0x00000000,0x00040005,0x0000006a, + 0x65786970,0x0000736c,0x00060005,0x0000007c,0x70736964,0x6563616c,0x746e656d,0x00000000, + 0x00040047,0x0000000d,0x0000000b,0x0000001c,0x00030047,0x00000016,0x00000019,0x00040047, + 0x00000016,0x00000021,0x00000001,0x00040047,0x00000016,0x00000022,0x00000000,0x00040047, + 0x0000002c,0x00000021,0x00000000,0x00040047,0x0000002c,0x00000022,0x00000000,0x00030047, + 0x00000030,0x00000002,0x00040048,0x00000030,0x00000000,0x00000004,0x00050048,0x00000030, + 0x00000000,0x00000007,0x00000010,0x00050048,0x00000030,0x00000000,0x00000023,0x00000000, + 0x00050048,0x00000030,0x00000001,0x00000023,0x00000040,0x00040047,0x0000009c,0x0000000b, + 0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006, + 0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008, + 0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000,0x00040017,0x0000000b, + 0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c, + 0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00030016,0x00000013, + 0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000007,0x00040020,0x00000015,0x00000000,0x00000014,0x0004003b,0x00000015, + 0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017,0x0000001c,0x0000001b,0x00000002, + 0x00040017,0x00000022,0x00000013,0x00000002,0x00040020,0x00000023,0x00000007,0x00000022, + 0x00040020,0x00000027,0x00000007,0x00000013,0x00090019,0x00000029,0x00000013,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x0000002a,0x00000029, + 0x00040020,0x0000002b,0x00000000,0x0000002a,0x0004003b,0x0000002b,0x0000002c,0x00000000, + 0x00040017,0x0000002e,0x00000013,0x00000004,0x00040018,0x0000002f,0x0000002e,0x00000004, + 0x0004001e,0x00000030,0x0000002f,0x00000006,0x00040020,0x00000031,0x00000009,0x00000030, + 0x0004003b,0x00000031,0x00000032,0x00000009,0x0004002b,0x00000006,0x00000033,0x00000001, + 0x00040020,0x00000034,0x00000009,0x00000006,0x0004002b,0x00000006,0x00000037,0x00000000, + 0x0004002b,0x00000006,0x0000003e,0x00000002,0x0005002c,0x00000007,0x00000041,0x00000037, + 0x00000037,0x0004002b,0x0000000a,0x00000049,0x00000000,0x0004002b,0x00000013,0x0000004e, + 0x3f000000,0x00040020,0x00000053,0x00000007,0x0000002e,0x0004002b,0x00000013,0x00000056, + 0x40000000,0x0004002b,0x00000013,0x00000057,0xc0000000,0x0005002c,0x00000022,0x00000058, + 0x00000056,0x00000057,0x0004002b,0x00000013,0x0000005a,0xbf800000,0x0004002b,0x00000013, + 0x0000005b,0x3f800000,0x0005002c,0x00000022,0x0000005c,0x0000005a,0x0000005b,0x00040020, + 0x00000065,0x00000009,0x0000002f,0x0004002b,0x00000013,0x0000006b,0x00000000,0x0005002c, + 0x00000022,0x0000006c,0x0000006b,0x0000006b,0x0004002b,0x0000000a,0x00000074,0x00000003, + 0x0004002b,0x00000013,0x00000077,0x358637bd,0x0004002b,0x00000013,0x00000086,0xbf000000, + 0x0005002c,0x00000022,0x00000087,0x0000004e,0x00000086,0x0004002b,0x00000013,0x0000008d, + 0x477fe000,0x0005002c,0x00000022,0x0000008e,0x0000008d,0x0000008d,0x0004002b,0x0000000a, + 0x0000009a,0x00000008,0x0004002b,0x0000000a,0x0000009b,0x00000001,0x0006002c,0x0000000b, + 0x0000009c,0x0000009a,0x0000009a,0x0000009b,0x00050036,0x00000002,0x00000004,0x00000000, + 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b, + 0x00000008,0x00000012,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,0x0004003b, + 0x00000027,0x00000028,0x00000007,0x0004003b,0x00000008,0x00000039,0x00000007,0x0004003b, + 0x00000023,0x0000004b,0x00000007,0x0004003b,0x00000053,0x00000054,0x00000007,0x0004003b, + 0x00000053,0x00000064,0x00000007,0x0004003b,0x00000023,0x0000006a,0x00000007,0x0004003b, + 0x00000023,0x0000007c,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f, + 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007, + 0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000014,0x00000017, + 0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x0003003e,0x00000012,0x00000018, + 0x0004003d,0x00000007,0x00000019,0x00000009,0x0004003d,0x00000007,0x0000001a,0x00000012, + 0x000500af,0x0000001c,0x0000001d,0x00000019,0x0000001a,0x0004009a,0x0000001b,0x0000001e, + 0x0000001d,0x000300f7,0x00000020,0x00000000,0x000400fa,0x0000001e,0x0000001f,0x00000020, + 0x000200f8,0x0000001f,0x000100fd,0x000200f8,0x00000020,0x0004003d,0x00000007,0x00000025, + 0x00000012,0x0004006f,0x00000022,0x00000026,0x00000025,0x0003003e,0x00000024,0x00000026, + 0x0004003d,0x0000002a,0x0000002d,0x0000002c,0x00050041,0x00000034,0x00000035,0x00000032, + 0x00000033,0x0004003d,0x00000006,0x00000036,0x00000035,0x000500ab,0x0000001b,0x00000038, + 0x00000036,0x00000037,0x000300f7,0x0000003b,0x00000000,0x000400fa,0x00000038,0x0000003a, + 0x00000044,0x000200f8,0x0000003a,0x0004003d,0x00000007,0x0000003c,0x00000009,0x0004003d, + 0x00000007,0x0000003d,0x00000012,0x00050050,0x00000007,0x0000003f,0x0000003e,0x0000003e, + 0x00050082,0x00000007,0x00000040,0x0000003d,0x0000003f,0x0007000c,0x00000007,0x00000042, + 0x00000001,0x0000002a,0x00000040,0x00000041,0x0007000c,0x00000007,0x00000043,0x00000001, + 0x00000027,0x0000003c,0x00000042,0x0003003e,0x00000039,0x00000043,0x000200f9,0x0000003b, + 0x000200f8,0x00000044,0x0004003d,0x00000007,0x00000045,0x00000009,0x0003003e,0x00000039, + 0x00000045,0x000200f9,0x0000003b,0x000200f8,0x0000003b,0x0004003d,0x00000007,0x00000046, + 0x00000039,0x00040064,0x00000029,0x00000047,0x0000002d,0x0007005f,0x0000002e,0x00000048, + 0x00000047,0x00000046,0x00000002,0x00000037,0x00050051,0x00000013,0x0000004a,0x00000048, + 0x00000000,0x0003003e,0x00000028,0x0000004a,0x0004003d,0x00000007,0x0000004c,0x00000009, + 0x0004006f,0x00000022,0x0000004d,0x0000004c,0x00050050,0x00000022,0x0000004f,0x0000004e, + 0x0000004e,0x00050081,0x00000022,0x00000050,0x0000004d,0x0000004f,0x0004003d,0x00000022, + 0x00000051,0x00000024,0x00050088,0x00000022,0x00000052,0x00000050,0x00000051,0x0003003e, + 0x0000004b,0x00000052,0x0004003d,0x00000022,0x00000055,0x0000004b,0x00050085,0x00000022, + 0x00000059,0x00000055,0x00000058,0x00050081,0x00000022,0x0000005d,0x00000059,0x0000005c, + 0x0004003d,0x00000013,0x0000005e,0x00000028,0x00050085,0x00000013,0x0000005f,0x0000005e, + 0x00000056,0x00050083,0x00000013,0x00000060,0x0000005f,0x0000005b,0x00050051,0x00000013, + 0x00000061,0x0000005d,0x00000000,0x00050051,0x00000013,0x00000062,0x0000005d,0x00000001, + 0x00070050,0x0000002e,0x00000063,0x00000061,0x00000062,0x00000060,0x0000005b,0x0003003e, + 0x00000054,0x00000063,0x00050041,0x00000065,0x00000066,0x00000032,0x00000037,0x0004003d, + 0x0000002f,0x00000067,0x00000066,0x0004003d,0x0000002e,0x00000068,0x00000054,0x00050091, + 0x0000002e,0x00000069,0x00000067,0x00000068,0x0003003e,0x00000064,0x00000069,0x0003003e, + 0x0000006a,0x0000006c,0x0004003d,0x00000013,0x0000006d,0x00000028,0x000500be,0x0000001b, + 0x0000006e,0x0000006d,0x0000006b,0x0004003d,0x00000013,0x0000006f,0x00000028,0x000500bc, + 0x0000001b,0x00000070,0x0000006f,0x0000005b,0x000500a7,0x0000001b,0x00000071,0x0000006e, + 0x00000070,0x000300f7,0x00000073,0x00000000,0x000400fa,0x00000071,0x00000072,0x00000073, + 0x000200f8,0x00000072,0x00050041,0x00000027,0x00000075,0x00000064,0x00000074,0x0004003d, + 0x00000013,0x00000076,0x00000075,0x000500ba,0x0000001b,0x00000078,0x00000076,0x00000077, + 0x000200f9,0x00000073,0x000200f8,0x00000073,0x000700f5,0x0000001b,0x00000079,0x00000071, + 0x0000003b,0x00000078,0x00000072,0x000300f7,0x0000007b,0x00000000,0x000400fa,0x00000079, + 0x0000007a,0x0000007b,0x000200f8,0x0000007a,0x0004003d,0x0000002e,0x0000007d,0x00000064, + 0x0007004f,0x00000022,0x0000007e,0x0000007d,0x0000007d,0x00000000,0x00000001,0x00050041, + 0x00000027,0x0000007f,0x00000064,0x00000074,0x0004003d,0x00000013,0x00000080,0x0000007f, + 0x00050050,0x00000022,0x00000081,0x00000080,0x00000080,0x00050088,0x00000022,0x00000082, + 0x0000007e,0x00000081,0x0004003d,0x0000002e,0x00000083,0x00000054,0x0007004f,0x00000022, + 0x00000084,0x00000083,0x00000083,0x00000000,0x00000001,0x00050083,0x00000022,0x00000085, + 0x00000082,0x00000084,0x00050085,0x00000022,0x00000088,0x00000085,0x00000087,0x0004003d, + 0x00000022,0x00000089,0x00000024,0x00050085,0x00000022,0x0000008a,0x00000088,0x00000089, + 0x0003003e,0x0000007c,0x0000008a,0x0004003d,0x00000022,0x0000008b,0x0000007c,0x0006000c, + 0x00000022,0x0000008c,0x00000001,0x00000004,0x0000008b,0x000500bc,0x0000001c,0x0000008f, + 0x0000008c,0x0000008e,0x0004009b,0x0000001b,0x00000090,0x0000008f,0x000300f7,0x00000092, + 0x00000000,0x000400fa,0x00000090,0x00000091,0x00000092,0x000200f8,0x00000091,0x0004003d, + 0x00000022,0x00000093,0x0000007c,0x0003003e,0x0000006a,0x00000093,0x000200f9,0x00000092, + 0x000200f8,0x00000092,0x000200f9,0x0000007b,0x000200f8,0x0000007b,0x0004003d,0x00000014, + 0x00000094,0x00000016,0x0004003d,0x00000007,0x00000095,0x00000009,0x0004003d,0x00000022, + 0x00000096,0x0000006a,0x00050051,0x00000013,0x00000097,0x00000096,0x00000000,0x00050051, + 0x00000013,0x00000098,0x00000096,0x00000001,0x00070050,0x0000002e,0x00000099,0x00000097, + 0x00000098,0x0000006b,0x0000006b,0x00040063,0x00000094,0x00000095,0x00000099,0x000100fd, + 0x00010038 }; diff --git a/gpu/vk/shaders/dlss_output.comp b/gpu/vk/shaders/dlss_output.comp index 7df27f33e..c4b07ff24 100644 --- a/gpu/vk/shaders/dlss_output.comp +++ b/gpu/vk/shaders/dlss_output.comp @@ -15,6 +15,8 @@ void main() { vec3 sampled = all(equal(textureSize(dlss_color, 0), extent)) ? texelFetch(dlss_color, pixel, 0).rgb : textureLod(dlss_color, (vec2(pixel) + 0.5) / vec2(extent), 0).rgb; + // (hookshot-amd) nothing invalid into the game's scene image, whatever the upscaler made + if (any(isnan(sampled)) || any(isinf(sampled))) sampled = vec3(0.0); vec3 color = max(sampled, vec3(0.0)); imageStore(guest_color, pixel, vec4(color * color, 1.0)); } diff --git a/gpu/vk/shaders/dlss_output_comp_spv.h b/gpu/vk/shaders/dlss_output_comp_spv.h index 090f881d1..5cf1d7571 100644 --- a/gpu/vk/shaders/dlss_output_comp_spv.h +++ b/gpu/vk/shaders/dlss_output_comp_spv.h @@ -1,7 +1,7 @@ - // 1116.6.0 + // 1116.2.0 #pragma once const uint32_t DLSS_OUTPUT_COMP_SPV[] = { - 0x07230203,0x00010600,0x0008000b,0x00000059,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010500,0x0008000b,0x00000066,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000005,0x00000004,0x6e69616d, 0x00000000,0x0000000d,0x00000016,0x00000028,0x00060010,0x00000004,0x00000011,0x00000008, @@ -10,30 +10,31 @@ const uint32_t DLSS_OUTPUT_COMP_SPV[] = { 0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000012,0x65747865, 0x0000746e,0x00050005,0x00000016,0x73657567,0x6f635f74,0x00726f6c,0x00040005,0x00000024, 0x706d6173,0x0064656c,0x00050005,0x00000028,0x73736c64,0x6c6f635f,0x0000726f,0x00040005, - 0x00000048,0x6f6c6f63,0x00000072,0x00040047,0x0000000d,0x0000000b,0x0000001c,0x00030047, + 0x00000056,0x6f6c6f63,0x00000072,0x00040047,0x0000000d,0x0000000b,0x0000001c,0x00030047, 0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047,0x00000016, 0x00000022,0x00000000,0x00040047,0x00000028,0x00000021,0x00000000,0x00040047,0x00000028, - 0x00000022,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015, - 0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020, - 0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000,0x00040017, - 0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b, - 0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00030016, - 0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000,0x00000000, - 0x00000000,0x00000002,0x00000008,0x00040020,0x00000015,0x00000000,0x00000014,0x0004003b, - 0x00000015,0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017,0x0000001c,0x0000001b, - 0x00000002,0x00040017,0x00000022,0x00000013,0x00000003,0x00040020,0x00000023,0x00000007, - 0x00000022,0x00090019,0x00000025,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000, - 0x00000001,0x00000000,0x0003001b,0x00000026,0x00000025,0x00040020,0x00000027,0x00000000, - 0x00000026,0x0004003b,0x00000027,0x00000028,0x00000000,0x0004002b,0x00000006,0x0000002a, - 0x00000000,0x00040017,0x00000036,0x00000013,0x00000004,0x00040017,0x0000003c,0x00000013, - 0x00000002,0x0004002b,0x00000013,0x0000003e,0x3f000000,0x0004002b,0x00000013,0x00000044, - 0x00000000,0x0006002c,0x00000022,0x0000004a,0x00000044,0x00000044,0x00000044,0x0004002b, - 0x00000013,0x00000051,0x3f800000,0x0004002b,0x0000000a,0x00000056,0x00000008,0x0004002b, - 0x0000000a,0x00000057,0x00000001,0x0006002c,0x0000000b,0x00000058,0x00000056,0x00000056, - 0x00000057,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, + 0x00000022,0x00000000,0x00040047,0x00000065,0x0000000b,0x00000019,0x00020013,0x00000002, + 0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017, + 0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015, + 0x0000000a,0x00000020,0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020, + 0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017, + 0x0000000e,0x0000000a,0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014, + 0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000008,0x00040020, + 0x00000015,0x00000000,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014, + 0x0000001b,0x00040017,0x0000001c,0x0000001b,0x00000002,0x00040017,0x00000022,0x00000013, + 0x00000003,0x00040020,0x00000023,0x00000007,0x00000022,0x00090019,0x00000025,0x00000013, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x00000026, + 0x00000025,0x00040020,0x00000027,0x00000000,0x00000026,0x0004003b,0x00000027,0x00000028, + 0x00000000,0x0004002b,0x00000006,0x0000002a,0x00000000,0x00040017,0x00000036,0x00000013, + 0x00000004,0x00040017,0x0000003c,0x00000013,0x00000002,0x0004002b,0x00000013,0x0000003e, + 0x3f000000,0x0004002b,0x00000013,0x00000044,0x00000000,0x00040017,0x00000049,0x0000001b, + 0x00000003,0x0006002c,0x00000022,0x00000055,0x00000044,0x00000044,0x00000044,0x0004002b, + 0x00000013,0x0000005e,0x3f800000,0x0004002b,0x0000000a,0x00000063,0x00000008,0x0004002b, + 0x0000000a,0x00000064,0x00000001,0x0006002c,0x0000000b,0x00000065,0x00000063,0x00000063, + 0x00000064,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, 0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x00000012,0x00000007, 0x0004003b,0x00000023,0x00000024,0x00000007,0x0004003b,0x00000023,0x00000030,0x00000007, - 0x0004003b,0x00000023,0x00000048,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d, + 0x0004003b,0x00000023,0x00000056,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d, 0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c, 0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000014, 0x00000017,0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x0003003e,0x00000012, @@ -57,13 +58,21 @@ const uint32_t DLSS_OUTPUT_COMP_SPV[] = { 0x00000045,0x0000003a,0x00000043,0x00000002,0x00000044,0x0008004f,0x00000022,0x00000046, 0x00000045,0x00000045,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000030,0x00000046, 0x000200f9,0x00000032,0x000200f8,0x00000032,0x0004003d,0x00000022,0x00000047,0x00000030, - 0x0003003e,0x00000024,0x00000047,0x0004003d,0x00000022,0x00000049,0x00000024,0x0007000c, - 0x00000022,0x0000004b,0x00000001,0x00000028,0x00000049,0x0000004a,0x0003003e,0x00000048, - 0x0000004b,0x0004003d,0x00000014,0x0000004c,0x00000016,0x0004003d,0x00000007,0x0000004d, - 0x00000009,0x0004003d,0x00000022,0x0000004e,0x00000048,0x0004003d,0x00000022,0x0000004f, - 0x00000048,0x00050085,0x00000022,0x00000050,0x0000004e,0x0000004f,0x00050051,0x00000013, - 0x00000052,0x00000050,0x00000000,0x00050051,0x00000013,0x00000053,0x00000050,0x00000001, - 0x00050051,0x00000013,0x00000054,0x00000050,0x00000002,0x00070050,0x00000036,0x00000055, - 0x00000052,0x00000053,0x00000054,0x00000051,0x00040063,0x0000004c,0x0000004d,0x00000055, + 0x0003003e,0x00000024,0x00000047,0x0004003d,0x00000022,0x00000048,0x00000024,0x0004009c, + 0x00000049,0x0000004a,0x00000048,0x0004009a,0x0000001b,0x0000004b,0x0000004a,0x000400a8, + 0x0000001b,0x0000004c,0x0000004b,0x000300f7,0x0000004e,0x00000000,0x000400fa,0x0000004c, + 0x0000004d,0x0000004e,0x000200f8,0x0000004d,0x0004003d,0x00000022,0x0000004f,0x00000024, + 0x0004009d,0x00000049,0x00000050,0x0000004f,0x0004009a,0x0000001b,0x00000051,0x00000050, + 0x000200f9,0x0000004e,0x000200f8,0x0000004e,0x000700f5,0x0000001b,0x00000052,0x0000004b, + 0x00000032,0x00000051,0x0000004d,0x000300f7,0x00000054,0x00000000,0x000400fa,0x00000052, + 0x00000053,0x00000054,0x000200f8,0x00000053,0x0003003e,0x00000024,0x00000055,0x000200f9, + 0x00000054,0x000200f8,0x00000054,0x0004003d,0x00000022,0x00000057,0x00000024,0x0007000c, + 0x00000022,0x00000058,0x00000001,0x00000028,0x00000057,0x00000055,0x0003003e,0x00000056, + 0x00000058,0x0004003d,0x00000014,0x00000059,0x00000016,0x0004003d,0x00000007,0x0000005a, + 0x00000009,0x0004003d,0x00000022,0x0000005b,0x00000056,0x0004003d,0x00000022,0x0000005c, + 0x00000056,0x00050085,0x00000022,0x0000005d,0x0000005b,0x0000005c,0x00050051,0x00000013, + 0x0000005f,0x0000005d,0x00000000,0x00050051,0x00000013,0x00000060,0x0000005d,0x00000001, + 0x00050051,0x00000013,0x00000061,0x0000005d,0x00000002,0x00070050,0x00000036,0x00000062, + 0x0000005f,0x00000060,0x00000061,0x0000005e,0x00040063,0x00000059,0x0000005a,0x00000062, 0x000100fd,0x00010038 }; diff --git a/gpu/vk/vk_draw.cpp b/gpu/vk/vk_draw.cpp index f1f03411b..d791ce5c5 100644 --- a/gpu/vk/vk_draw.cpp +++ b/gpu/vk/vk_draw.cpp @@ -47,6 +47,7 @@ #include "shaders/dlss_output_comp_spv.h" #include "shaders/dlss_debug_comp_spv.h" #include "vk_dlss.h" +#include "vk_fsr4.h" #include "vk_menu.h" #include "shader_recompiler/backend/spirv/mma_layout.h" #include "vk_work.h" // (after the others: counts the commands that do GPU work, for full_barrier) @@ -2798,7 +2799,10 @@ bool dyn_same(const float* fp, int nf, const uint32_t* up, int nu, const uint8_t if (raw[i] != craw[i]) return false; return true; } -constexpr int kDynF = 13, kDynU = 35; +// (hookshot-amd) AMD FSR 4.1's sub-pixel jitter of the scene's draws (fsr_jitter_for, with the DLSS frame code): part of the +// state a draw is compared by (fp[13], fp[14]), or a frame whose draws match the last frame's would keep its jitter +bool fsr_jitter_for(const Targets& at, float& jx, float& jy); +constexpr int kDynF = 15, kDynU = 35; struct DynFast { bool on = false; float fp[kDynF]{}; @@ -2814,6 +2818,9 @@ int dyn_pack(const NvnState& s, const Targets& at, VkPrimitiveTopology topo, boo fp[4] = s.depth_near, fp[5] = s.depth_far; std::memcpy(fp + 6, s.blend_color, sizeof s.blend_color); fp[10] = s.poly_offset[0], fp[11] = s.poly_offset[1], fp[12] = s.poly_offset[2]; + // (only draws that test or write the scene's depth: full-screen passes and the HUD are not moved) + fp[13] = fp[14] = 0.0f; + if ((s.ds.dt || s.ds.dw) && at.depth && depth_aspect(at.depth_format)) fsr_jitter_for(at, fp[13], fp[14]); up[0] = (uint32_t)s.scissor[0], up[1] = (uint32_t)s.scissor[1], up[2] = (uint32_t)s.scissor[2], up[3] = (uint32_t)s.scissor[3]; up[4] = s.stencil_ref[0], up[5] = s.stencil_ref[1]; up[6] = s.stencil_value_mask[0], up[7] = s.stencil_value_mask[1]; @@ -2872,6 +2879,7 @@ void dynamic_state(VkCommandBuffer cmd, const NvnState& s, const Targets& at, Vk float vx = s.viewport[0][0], vy = s.viewport[0][1], vw = s.viewport[0][2], vh = s.viewport[0][3]; if (vw == 0.0f && vh == 0.0f) vx = 0, vy = 0, vw = (float)at.width, vh = (float)at.height; d.vp = {vx, vy + vh, vw, -vh, std::clamp(s.depth_near, 0.0f, 1.0f), std::clamp(s.depth_far, 0.0f, 1.0f)}; + d.vp.x += df[13], d.vp.y += df[14]; // (AMD FSR 4.1's jitter, render pixels: right and down for positive values) d.sc = {{0, 0}, {at.width, at.height}}; if (s.scissor[2] > 0 && s.scissor[3] > 0) { const int32_t x0 = std::max(0, s.scissor[0]), y0 = std::max(0, s.scissor[1]); @@ -5650,6 +5658,50 @@ struct DlssState { DlssState ds; // ponytail: one set of images, no lock: the replay records one frame at a time (RX_VK_PARALLEL would need ParLock here) bool dlss_on() { return opts.dlss && dlss_available(); } +// (hookshot-amd) AMD FSR 4.1 on the same frames (vk_fsr4.cpp), from the same colour, depth and camera motion, when DLSS is not on: +// the menu's AMD FSR 4.1 row (at once) and AMD's DLLs found. Ported from madebyjordan's FSR 4.1 work on Lichii +bool fsr_on() { return opts.fsr4 && !dlss_on() && fsr4_available(); } +bool upscaler_on() { return dlss_on() || fsr_on(); } +const char* upscaler_name() { return fsr_on() ? "fsr4" : "dlss"; } + +// FSR's jitter. The game draws without one, so a temporal upscaler has no sub-pixel detail to gather: the draws that test or write +// the scene's depth are moved by a sub-pixel amount through the viewport (dyn_pack, dynamic_state), Halton (2, 3) as FSR's own +// helpers make it, and FSR is told the amount. (Lichii, on the same game and an RX 6700 XT:) +// - The phase moves on at the network's pass, where the game's frame ends; counted by presents, which can come while the next +// frame is drawn, part of a frame's draws had one offset and the rest another. +// - Only while FSR replaces the upscale (the last network pass, and a present at most since): the game's own upscale would show +// the jitter as shimmer. The frame FSR comes back on is drawn and evaluated without one. +// - Moved up or left, the AMD driver draws nothing into the scene's last column or row, which keeps a stale, near-white value: +// a flickering line on the right and bottom edges that built up in FSR's history (one long run ended in device loss). FSR's +// colour and the motion's depth repeat the column and row before them (fsr != 0 in dlss_color.comp and dlss_motion.comp). +// Offsets kept in [0, 1) avoided it but gave FSR 4 horizontal seams every 128 rows in bright haze. +// RX_FSR4_JITTER=0: none (FSR still runs) +struct FsrJitter { + uint64_t phase = 0; + uint32_t phases = 16; // (FSR's 8 per (output pixel / render pixel)^2, from the last evaluation's sizes: 16 at 75%) + float x = 0, y = 0; // (the offset of the frame being drawn: 0 unless live) + bool drew = false; // (FSR replaced the last network pass: its history goes on) + bool live = false; // (and the jitter is on) + bool used = false; // (a draw of this frame was moved: FSR is told x, y) + uint64_t net_present = 0; // (the present the last network pass came in) +}; +FsrJitter fj; +float halton(uint32_t i, uint32_t base) { + float f = 1.0f, r = 0.0f; + for (; i; i /= base) f /= (float)base, r += f * (float)(i % base); + return r; +} +/// At the network's pass (the game's frame ends): the next frame's offset; live: FSR drew this one +void fsr_frame_end(bool live, uint32_t rw, uint32_t ow) { + static const bool off = getenv("RX_FSR4_JITTER") && !atoi(getenv("RX_FSR4_JITTER")); + fj.drew = live, fj.live = live && !off, fj.used = false, fj.phase++, fj.net_present = texture_frame_no(); + if (live && rw && ow) { + const float k = (float)ow / (float)rw; + fj.phases = (uint32_t)std::clamp(8.0f * k * k + 0.5f, 8.0f, 32.0f); + } + const uint32_t i = (uint32_t)(fj.phase % fj.phases) + 1; + fj.x = fj.live ? halton(i, 2) - 0.5f : 0.0f, fj.y = fj.live ? halton(i, 3) - 0.5f : 0.0f; +} // RX_DLSS_DEBUG=1..4 (dlss_debug.comp): motion, depth, or the reprojection error with and without the motion, drawn in place of // DLSS's output (DLSS still runs) int dlss_debug() { static const int v = getenv("RX_DLSS_DEBUG") ? atoi(getenv("RX_DLSS_DEBUG")) : 0; return v; } // (the menu's Off takes effect at once; On needs the start's Streamline) @@ -5657,7 +5709,7 @@ int dlss_debug() { static const int v = getenv("RX_DLSS_DEBUG") ? atoi(getenv("R /// Logged when the reason changes and every 600th repeat: the game's chain draws this frame void dlss_fallback(const char* why) { if (why != ds.reason || ++ds.repeats % 600 == 0) - logf("vk: dlss: the game's upscale draws frame %llu (%s)", (unsigned long long)texture_frame_no(), why); + logf("vk: %s: the game's upscale draws frame %llu (%s)", upscaler_name(), (unsigned long long)texture_frame_no(), why); if (why != ds.reason) ds.reason = why, ds.repeats = 0; } @@ -5726,7 +5778,7 @@ bool dlss_pipelines() { li.flags = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, li.bindingCount = 2, li.pBindings = b; VkDescriptorSetLayout set{}; if (vkCreateDescriptorSetLayout(dev.device, &li, nullptr, &set) != VK_SUCCESS) return false; - const VkPushConstantRange pr{VK_SHADER_STAGE_COMPUTE_BIT, 0, 64}; + const VkPushConstantRange pr{VK_SHADER_STAGE_COMPUTE_BIT, 0, 80}; // (hookshot-amd: 64 + the passes' FSR flag) VkPipelineLayoutCreateInfo pi{VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO}; pi.setLayoutCount = 1, pi.pSetLayouts = &set, pi.pushConstantRangeCount = 1, pi.pPushConstantRanges = ≺ if (vkCreatePipelineLayout(dev.device, &pi, nullptr, &ds.layout) != VK_SUCCESS) return false; @@ -5779,7 +5831,7 @@ void dlss_pass(VkCommandBuffer cmd, VkPipeline pipe, VkSampler sampler, VkImageV wr[1].dstBinding = 1, wr[1].descriptorCount = 1, wr[1].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, wr[1].pImageInfo = &oi; vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, pipe); vkCmdPushDescriptorSetKHR(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, ds.layout, 0, 2, wr); - if (push) vkCmdPushConstants(cmd, ds.layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, 64, push); + if (push) vkCmdPushConstants(cmd, ds.layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, 80, push); // (push: 20 words) vkCmdDispatch(cmd, (w + 7) / 8, (h + 7) / 8, 1); } /// RX_DLSS_DEBUG: its view into the network's target (out), then this frame's colour kept as the next one's previous @@ -5806,11 +5858,22 @@ bool dlss_debug_pass(VkCommandBuffer cmd, VkImageView out, uint32_t w, uint32_t } } // namespace +namespace { // (with Targets, as its declaration above dyn_pack) +/// From dyn_pack: the offset a draw into these targets is moved by (0, 0 for a target not the scene's size: shadow maps, reflections) +bool fsr_jitter_for(const Targets& at, float& jx, float& jy) { + if (!fj.live || par_active.load(std::memory_order_relaxed) || !at.depth || !ds.cam.w || at.depth->width != ds.cam.w || + at.depth->height != ds.cam.h || texture_frame_no() - fj.net_present > 1 || !fsr_on()) + return false; + jx = fj.x, jy = fj.y, fj.used = true; + return true; +} +} // namespace + /// From draw(): the scene camera (Lichii's TrackOcarinaCamera): vertex constant buffer 3 of a draw into a B10G11R11 target of at /// least 640x360 with D32 depth, whose +0x120/+0x124 are the target's size and +0xa8/+0xac -1 and 0; current view-projection at /// +0x30, the previous frame's at +0x180. The largest such target of the frame void dlss_note_camera(const NvnState& s, const Targets& at) { - if (!dlss_on() || at.n < 1 || !at.color[0] || at.color_format[0] != VK_FORMAT_B10G11R11_UFLOAT_PACK32 || at.width < 640 || + if (!upscaler_on() || at.n < 1 || !at.color[0] || at.color_format[0] != VK_FORMAT_B10G11R11_UFLOAT_PACK32 || at.width < 640 || at.height < 360 || !at.depth || at.depth_format != VK_FORMAT_D32_SFLOAT || at.samples != VK_SAMPLE_COUNT_1_BIT || at.depth_level || at.depth_layer || !at.depth_view) return; @@ -5844,7 +5907,8 @@ bool dlss_take_colour(VkCommandBuffer cmd, const Program& p, bool encode) { if (!dlss_image(ds.color, ds.cam.w, ds.cam.h, VK_FORMAT_R16G16B16A16_SFLOAT, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, cmd) || !dlss_image(ds.motion, ds.cam.w, ds.cam.h, VK_FORMAT_R16G16_SFLOAT, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, cmd)) return dlss_fallback("images not made"), false; - int32_t push[16] = {encode ? 1 : 0}; + // (fsr: AMD FSR 4.1 takes it: no NaN or out-of-range value into its LDR history, the last column and row repeated: FsrJitter) + int32_t push[20] = {encode ? 1 : 0, fsr_on() ? 1 : 0}; gprof_begin(cmd); full_barrier(cmd); dlss_pass(cmd, ds.color_pipe, ds.nearest, dw.imgs[0].imageView, ds.color.view, ds.cam.w, ds.cam.h, push); @@ -5860,7 +5924,7 @@ bool dlss_take_colour(VkCommandBuffer cmd, const Program& p, bool encode) { bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { const bool pre = p.key == kChainFirst || p.key == kChainMid1 || p.key == kChainMid2; const bool known = chain_net(p.key); - if ((!pre && !known && !ds.armed) || !dlss_on()) return false; + if ((!pre && !known && !ds.armed) || !upscaler_on()) return false; // (the first three prepare the network's input and feed nothing else: left out, DLSS takes the tonemapped scene, square-root // encoded here as they do. The same picture as with them (means within 1% in the A/B, docs in the DLSS report). // RX_DLSS_KEEP_PREPASSES=1: they run and DLSS takes the network's input, as Lichii does) @@ -5871,6 +5935,13 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { return ds.armed; } if (!known && !skip_pre) return false; // (unknown networks by their place only: with the prepasses left out) + // (hookshot-amd: the game's frame ends here; FSR's next jitter, live when FSR drew this one) + const bool fsr = fsr_on(); + struct FrameEnd { + bool drew = false; + uint32_t rw = 0, ow = 0; + ~FrameEnd() { fsr_frame_end(drew, rw, ow); } + } frame_end; const bool armed = ds.armed; // (the network's input was never made: whatever happens, the network cannot run) if (skip_pre ? !armed : !dlss_take_colour(cmd, p, false)) return false; const uint64_t now = texture_frame_no(); @@ -5903,11 +5974,16 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { Mat clip{}; const bool have_motion = clip_to_previous(ds.used.cur, ds.used.prev, clip); if (ok && have_motion) { - dlss_pass(cmd, ds.motion_pipe, ds.nearest, ds.used.depth_view, ds.motion.view, rw, rh, clip.data()); + float mpush[20] = {}; // (the matrix, then FSR's flag: the last column and row repeat the ones before them) + std::copy(clip.begin(), clip.end(), mpush); + const int32_t edge = fsr ? 1 : 0; + std::memcpy(&mpush[16], &edge, 4); + dlss_pass(cmd, ds.motion_pipe, ds.nearest, ds.used.depth_view, ds.motion.view, rw, rh, mpush); full_barrier(cmd); bool same_camera = true; // (a camera cut: the previous matrix is not last frame's current one) for (int i = 0; i < 16; i++) same_camera = same_camera && std::abs(ds.used.prev[i] - ds.last_vp[i]) < 0.001f; - const bool reset = ds.last_frame == ~0ull || now != ds.last_frame + 1 || !same_camera; + // (FSR: history goes on while it drew the last network pass; presents can come mid-frame, and made frames add presents) + const bool reset = (fsr ? !fj.drew : (ds.last_frame == ~0ull || now != ds.last_frame + 1)) || !same_camera; ds.resets += reset, ds.cuts += reset && !same_camera; if (dlss_debug() && ds.evals >= 1500 && ds.evals < 1512) { // (the camera of 12 frames: a jitter would move [0][3]/[1][3] by ~1/w) const Mat& m = ds.used.cur; @@ -5922,10 +5998,15 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { const DlssImage depth{ds.used.depth->image, ds.used.depth_view, VK_FORMAT_D32_SFLOAT, rw, rh, VK_IMAGE_ASPECT_DEPTH_BIT}; const DlssImage motion{ds.motion.image, ds.motion.view, VK_FORMAT_R16G16_SFLOAT, rw, rh, VK_IMAGE_ASPECT_COLOR_BIT}; const DlssImage output{ds.out.image, ds.out.view, VK_FORMAT_R16G16B16A16_SFLOAT, ow, oh, VK_IMAGE_ASPECT_COLOR_BIT}; - ok = dlss_evaluate(cmd, color, depth, motion, output, reset, ds.evals++); + // (FSR is told the offset this frame's scene was drawn with: none when no draw was moved) + ok = fsr ? fsr4_evaluate(cmd, color, depth, motion, output, fj.used ? fj.x : 0.0f, fj.used ? fj.y : 0.0f, reset) + : dlss_evaluate(cmd, color, depth, motion, output, reset, ds.evals++); + if (fsr) ds.evals++; + frame_end.drew = ok && fsr, frame_end.rw = rw, frame_end.ow = ow; if (ok) { if (ds.reason || ds.last_frame == ~0ull) - logf("vk: dlss: DLSS draws the upscale from frame %llu (%ux%u -> %ux%u)", (unsigned long long)now, rw, rh, ow, oh); + logf("vk: %s: %s draws the upscale from frame %llu (%ux%u -> %ux%u)", upscaler_name(), fsr ? "AMD FSR 4.1" : "DLSS", + (unsigned long long)now, rw, rh, ow, oh); ds.reason = nullptr; ds.last_frame = now, ds.last_vp = ds.used.cur; } diff --git a/gpu/vk/vk_fsr4.cpp b/gpu/vk/vk_fsr4.cpp new file mode 100644 index 000000000..c357d4835 --- /dev/null +++ b/gpu/vk/vk_fsr4.cpp @@ -0,0 +1,281 @@ +// AMD FSR 4.1 in place of the game's gameplay upscale (vk_fsr4.h). The host side follows the API guide of FidelityFX SDK 2.4 +// (Kits/FidelityFX/docs/getting-started/ffx-api.md): a Vulkan backend description chained to the upscale context description, +// inputs read in SHADER_READ_ONLY_OPTIMAL, the output written in GENERAL. Ported from madebyjordan's FSR 4.1 work on Lichii +// (vk_fsr4_upscaler.cpp), GPL-3.0-or-later. +#include "vk_paths.h" +#include "vk_fsr4.h" + +#include +#include +#include +#include +#include +#include + +#include "vk_internal.h" + +#include "api/include/ffx_api.h" +#include "api/include/ffx_api_types.h" +#include "api/include/vk/ffx_api_vk.h" +#include "upscalers/include/ffx_upscale.h" + +namespace mkwvk { +namespace { + +constexpr const char* kLoader = "amd_fidelityfx_loader_vk.dll"; + +struct Fsr { + bool tried = false, ok = false; + const char* reason = "not started"; + HMODULE lib = nullptr; + PfnFfxCreateContext create = nullptr; + PfnFfxDestroyContext destroy = nullptr; + PfnFfxQuery query = nullptr; + PfnFfxDispatch dispatch = nullptr; + uint64_t version_id = 0; + // (the context keeps pointers into its creation descriptions until it is destroyed) + VkDeviceContext device_context{}; + ffxCreateBackendVKDesc backend{}; + ffxOverrideVersion version{}; + ffxCreateContextDescUpscale upscale{}; + ffxContext context = nullptr; + uint32_t max_w = 0, max_h = 0; // (the context's sizes: the output's, the most the render size can be) + std::chrono::steady_clock::time_point last{}; + uint64_t evals = 0; +}; +Fsr fsr; + +void on_message(uint32_t type, const wchar_t* message) { + char text[512] = {}; + if (message) WideCharToMultiByte(CP_UTF8, 0, message, -1, text, (int)sizeof text - 1, nullptr, nullptr); + logf("vk: fsr4: AMD FSR %s: %s", type == FFX_API_MESSAGE_TYPE_ERROR ? "error" : "warning", text); +} + +/// The folders the loader is looked for in: RX_FSR4_DIR, the executable's (bin\ beside the launcher), the game folder +std::vector loader_dirs() { + std::vector d; + if (const char* e = getenv("RX_FSR4_DIR"); e && *e) d.emplace_back(e); + char exe[MAX_PATH]; + DWORD n = GetModuleFileNameA(nullptr, exe, MAX_PATH); + if (n && n < MAX_PATH) { + std::string s(exe, n); + d.push_back(s.substr(0, s.find_last_of("\\/"))); + } + n = game_module_path(exe, MAX_PATH); + if (n && n < MAX_PATH) { + std::string s(exe, n); + s = s.substr(0, s.find_last_of("\\/")); + if (d.empty() || d.back() != s) d.push_back(s); + } + return d; +} + +bool start() { + fsr.tried = true; + for (const std::string& dir : loader_dirs()) { + const std::string path = dir + "\\" + kLoader; + if (GetFileAttributesA(path.c_str()) == INVALID_FILE_ATTRIBUTES) continue; + // (the upscaler DLL the loader picks lies beside it: the loader's folder first in the search) + fsr.lib = LoadLibraryExA(path.c_str(), nullptr, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); + if (fsr.lib) { + logf("vk: fsr4: %s", path.c_str()); + break; + } + } + if (!fsr.lib) { + fsr.reason = "no AMD FSR DLLs"; + logf("vk: fsr4: %s not found (RX_FSR4_DIR, or beside hookshot.exe with amd_fidelityfx_upscaler_vk.dll)", kLoader); + return false; + } + fsr.create = (PfnFfxCreateContext)(void*)GetProcAddress(fsr.lib, "ffxCreateContext"); + fsr.destroy = (PfnFfxDestroyContext)(void*)GetProcAddress(fsr.lib, "ffxDestroyContext"); + fsr.query = (PfnFfxQuery)(void*)GetProcAddress(fsr.lib, "ffxQuery"); + fsr.dispatch = (PfnFfxDispatch)(void*)GetProcAddress(fsr.lib, "ffxDispatch"); + if (!fsr.create || !fsr.destroy || !fsr.query || !fsr.dispatch) { + fsr.reason = "the AMD loader lacks the FSR API"; + logf("vk: fsr4: %s lacks the FSR API's entry points", kLoader); + return false; + } + fsr.device_context = VkDeviceContext{dev.device, dev.physical, vkGetDeviceProcAddr}; + // (the loader lists every upscaler this device can run: the newest 4.x is taken explicitly, so an FSR 3.1 provider never + // stands in silently) + ffxQueryDescGetVersions versions{}; + versions.header.type = FFX_API_QUERY_DESC_TYPE_GET_VERSIONS; + versions.createDescType = FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE; + versions.device = &fsr.device_context; + uint64_t count = 0; + versions.outputCount = &count; + if (fsr.query(nullptr, &versions.header) != FFX_API_RETURN_OK || !count) { + fsr.reason = "no AMD upscaler for this GPU"; + logf("vk: fsr4: the loader lists no upscaler for this device"); + return false; + } + std::vector ids(count); + std::vector names(count); + versions.versionIds = ids.data(); + versions.versionNames = names.data(); + if (fsr.query(nullptr, &versions.header) != FFX_API_RETURN_OK) { + fsr.reason = "no AMD upscaler for this GPU"; + logf("vk: fsr4: the upscaler versions could not be listed"); + return false; + } + std::string listed; + unsigned best[3] = {0, 0, 0}; + for (uint64_t i = 0; i < count; i++) { + const char* name = names[i] ? names[i] : ""; + listed += (listed.empty() ? "" : ", ") + std::string(name); + unsigned v[3] = {0, 0, 0}; + sscanf(name, "%u.%u.%u", &v[0], &v[1], &v[2]); + if (v[0] == 4 && (v[1] > best[1] || (v[1] == best[1] && v[2] >= best[2]))) { + std::memcpy(best, v, sizeof best); + fsr.version_id = ids[i]; + } + } + if (!fsr.version_id) { + fsr.reason = "no FSR 4 for this GPU"; + logf("vk: fsr4: no FSR 4 upscaler for this device (the loader has: %s)", listed.c_str()); + return false; + } + logf("vk: fsr4: upscalers %s; using %u.%u.%u", listed.c_str(), best[0], best[1], best[2]); + fsr.ok = true; + fsr.reason = ""; + return true; +} + +void destroy_context() { + if (!fsr.context) return; + vkDeviceWaitIdle(dev.device); // (recorded evaluations may still use it; the sizes seldom change) + fsr.destroy(&fsr.context, nullptr); + fsr.context = nullptr; +} + +/// The context for outputs of w x h, render sizes up to it (the game's dynamic resolution and the Resolution row's change the +/// render size every so often: one context takes them all) +bool make_context(uint32_t w, uint32_t h) { + destroy_context(); + fsr.backend = {}; + fsr.backend.header.type = FFX_API_CREATE_CONTEXT_DESC_TYPE_BACKEND_VK; + fsr.backend.deviceContext = fsr.device_context; + fsr.version = {}; + fsr.version.header.type = FFX_API_DESC_TYPE_OVERRIDE_VERSION; + fsr.version.versionId = fsr.version_id; + fsr.backend.header.pNext = &fsr.version.header; + fsr.upscale = {}; + fsr.upscale.header.type = FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE; + fsr.upscale.header.pNext = &fsr.backend.header; + // (the game's colour is tonemapped and square-root encoded already: LDR, perceptual, no auto exposure; depth not inverted) + fsr.upscale.flags = FFX_UPSCALE_ENABLE_NON_LINEAR_COLORSPACE; + fsr.upscale.maxRenderSize = {w, h}; + fsr.upscale.maxUpscaleSize = {w, h}; + fsr.upscale.fpMessage = &on_message; + ffxContext made = nullptr; + const ffxReturnCode_t r = fsr.create(&made, &fsr.upscale.header, nullptr); + if (r != FFX_API_RETURN_OK || !made) { + logf("vk: fsr4: creating the upscaler failed (%d)", (int)r); + return false; + } + fsr.context = made; + fsr.max_w = w, fsr.max_h = h; + ffxQueryGetProviderVersion provider{}; + provider.header.type = FFX_API_QUERY_DESC_TYPE_GET_PROVIDER_VERSION; + const bool known = fsr.query(&fsr.context, &provider.header) == FFX_API_RETURN_OK && provider.versionName; + logf("vk: fsr4: AMD FSR %s for outputs of %ux%u", known ? provider.versionName : "?", w, h); + return true; +} + +FfxApiResource resource(const DlssImage& im, VkImageUsageFlags usage, uint32_t state) { + VkImageCreateInfo ci{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; + ci.imageType = VK_IMAGE_TYPE_2D, ci.format = im.format, ci.extent = {im.width, im.height, 1}; + ci.mipLevels = 1, ci.arrayLayers = 1, ci.samples = VK_SAMPLE_COUNT_1_BIT, ci.tiling = VK_IMAGE_TILING_OPTIMAL; + ci.usage = usage, ci.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + return ffxApiGetResourceVK((void*)im.image, ffxApiGetImageResourceDescriptionVK(im.image, ci, 0), state); +} + +VkImageMemoryBarrier2 barrier(const DlssImage& im, VkAccessFlags2 src, VkAccessFlags2 dst, VkImageLayout from, VkImageLayout to) { + VkImageMemoryBarrier2 b{VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2}; + b.srcStageMask = b.dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT; + b.srcAccessMask = src, b.dstAccessMask = dst, b.oldLayout = from, b.newLayout = to; + b.srcQueueFamilyIndex = b.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + b.image = im.image, b.subresourceRange = {im.aspect, 0, 1, 0, 1}; + return b; +} +void barriers(VkCommandBuffer cmd, const VkImageMemoryBarrier2* b, uint32_t n) { + VkDependencyInfo di{VK_STRUCTURE_TYPE_DEPENDENCY_INFO}; + di.imageMemoryBarrierCount = n, di.pImageMemoryBarriers = b; + vkCmdPipelineBarrier2(cmd, &di); +} + +} // namespace + +bool fsr4_available() { + if (!fsr.tried) start(); + return fsr.ok; +} +const char* fsr4_reason() { return fsr.reason; } + +bool fsr4_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& depth, const DlssImage& motion, + const DlssImage& output, float jitter_x, float jitter_y, bool reset) { + if (!fsr4_available()) return false; + if (!fsr.context || fsr.max_w != output.width || fsr.max_h != output.height) { + if (!make_context(output.width, output.height)) { + fsr.ok = false, fsr.reason = "FSR 4 did not start"; + return false; + } + reset = true; + } + if (color.width > fsr.max_w || color.height > fsr.max_h) return false; // (a render size past the output: not an upscale) + const auto now = std::chrono::steady_clock::now(); + const float frame_ms = fsr.evals ? std::chrono::duration(now - fsr.last).count() : 1000.0f / 30.0f; + fsr.last = now; + + constexpr VkImageLayout G = VK_IMAGE_LAYOUT_GENERAL, R = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + constexpr VkAccessFlags2 any = VK_ACCESS_2_MEMORY_READ_BIT | VK_ACCESS_2_MEMORY_WRITE_BIT; + const VkImageMemoryBarrier2 in[4] = {barrier(color, VK_ACCESS_2_MEMORY_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, G, R), + barrier(depth, VK_ACCESS_2_MEMORY_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, G, R), + barrier(motion, VK_ACCESS_2_MEMORY_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, G, R), + barrier(output, any, any, G, G)}; + barriers(cmd, in, 4); + + ffxDispatchDescUpscale d{}; + d.header.type = FFX_API_DISPATCH_DESC_TYPE_UPSCALE; + d.commandList = cmd; + d.color = resource(color, VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_COMPUTE_READ); + d.depth = resource(depth, VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_COMPUTE_READ); + d.motionVectors = resource(motion, VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_COMPUTE_READ); + d.output = resource(output, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_UNORDERED_ACCESS); + d.jitterOffset = {jitter_x, jitter_y}; + d.motionVectorScale = {1.0f, 1.0f}; // (render pixels already, towards the previous frame) + d.renderSize = {color.width, color.height}; + d.upscaleSize = {output.width, output.height}; + d.enableSharpening = false; // (the Sharpness row sharpens at the window, after the HUD) + d.sharpness = 0.0f; + d.frameTimeDelta = frame_ms; + d.preExposure = 1.0f; + d.reset = reset; + // (the game hands no camera; FSR uses these only for its depth heuristics) + d.cameraNear = 0.1f, d.cameraFar = 1000.0f, d.cameraFovAngleVertical = 1.0f, d.viewSpaceToMetersFactor = 1.0f; + d.flags = FFX_UPSCALE_FLAG_NON_LINEAR_COLOR_SRGB; + const ffxReturnCode_t r = fsr.dispatch(&fsr.context, &d.header); + + const VkImageMemoryBarrier2 out[4] = {barrier(color, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), + barrier(depth, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), + barrier(motion, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), + barrier(output, any, any, G, G)}; + barriers(cmd, out, 4); + if (r != FFX_API_RETURN_OK) { + logf("vk: fsr4: recording the upscale failed (%d): the game's upscale from now on", (int)r); + fsr.ok = false, fsr.reason = "FSR 4 failed"; + return false; + } + static int told = 0; // (the first evaluation, and the first resets: a camera cut each) + if (fsr.evals++ == 0 || (reset && told < 40)) + told++, logf("vk: fsr4: %ux%u -> %ux%u, jitter %.3f %.3f%s", color.width, color.height, output.width, output.height, jitter_x, + jitter_y, reset ? " (history reset)" : ""); + return true; +} + +void fsr4_stop() { + if (fsr.context) destroy_context(); +} + +} // namespace mkwvk diff --git a/gpu/vk/vk_fsr4.h b/gpu/vk/vk_fsr4.h new file mode 100644 index 000000000..9a96f2aaa --- /dev/null +++ b/gpu/vk/vk_fsr4.h @@ -0,0 +1,27 @@ +// AMD FSR 4.1 through the AMD FSR API (vk_fsr4.cpp), in place of the game's gameplay upscale, beside NVIDIA DLSS (vk_dlss.h): +// the same colour, depth and camera motion from vk_draw.cpp. Only the API's MIT headers are built in (third_party/fidelityfx); +// AMD's signed amd_fidelityfx_loader_vk.dll and amd_fidelityfx_upscaler_vk.dll are loaded from the user's PC at run time and +// none ship with Hookshot. Ported from madebyjordan's FSR 4.1 work on Lichii (vk_fsr4_upscaler.cpp), GPL-3.0-or-later. +#pragma once + +#include + +#include "vk_loader.h" +#include "vk_dlss.h" // (DlssImage: the images both upscalers take) + +namespace mkwvk { + +/// The loader DLL from RX_FSR4_DIR, else the executable's folder, else the game folder; an FSR 4.x upscaler for this device +/// among those it lists. Made at the first use (no instance or device extensions needed), once. True when there is one +bool fsr4_available(); +const char* fsr4_reason(); // (why not, short: the menu and the log) + +/// Records one FSR evaluation on cmd: color (perceptual, tonemapped: FSR's LDR mode), depth (standard, not inverted) and motion +/// (render pixels, towards the previous frame) at the render size, output (RGBA16F, STORAGE | SAMPLED) at the output size. All +/// in GENERAL before and after. jitter: the sub-pixel offset this frame's scene was drawn with, in render pixels. False when FSR +/// failed (then never again: fsr4_available() is false from then on) +bool fsr4_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& depth, const DlssImage& motion, + const DlssImage& output, float jitter_x, float jitter_y, bool reset); +void fsr4_stop(); // (before the device goes; safe when never started) + +} // namespace mkwvk diff --git a/gpu/vk/vk_menu.cpp b/gpu/vk/vk_menu.cpp index fc84fbd93..d93932b2d 100644 --- a/gpu/vk/vk_menu.cpp +++ b/gpu/vk/vk_menu.cpp @@ -16,6 +16,7 @@ #include "vk_menu.h" #include "oot_cheat_items.h" #include "vk_dlss.h" +#include "vk_fsr4.h" #include "vk_work.h" // (after the others: counts the commands that do GPU work, for full_barrier) #ifndef HOOKSHOT_VERSION // (nx2/build.py gives it to this file: nx2/version.py) #define HOOKSHOT_VERSION "unknown" @@ -132,6 +133,12 @@ const char* tx_dlss_preset(int v) { snprintf(b, sizeof b, opts.dlss && dlss_available() ? "%c" : "%c (DLSS off)", 'J' + v); return b; } +const char* tx_fsr4(int v) { + if (!v) return "Off"; + if (opts.dlss && dlss_available()) return "On (DLSS is on)"; + const char* why = fsr4_reason(); // (read only: the replay thread loads AMD's DLLs at the first frame it is wanted) + return *why && strcmp(why, "not started") ? "On (no AMD FSR 4 found)" : "On"; +} const char* tx_ultrawide(int v) { return v ? "Monitor's shape (restart)" : "16:9 (restart)"; } int gpu_device_at_start = 0; // (the row's value the game started with: menu_set_gpu_count) const char* tx_gpu(int v) { @@ -219,6 +226,10 @@ Row rows[] = { "NVIDIA's DLSS model, changed at once. M: NVIDIA's pick for Performance, close to L's picture but nearer K's speed. L: its " "pick for Ultra Performance, sharper and steadier, less ghosting, slower. K: its pick for Quality, Balanced and DLAA. J: " "like K, slightly less ghosting, more flicker."}, + {TAB_GRAPHICS, "AMD FSR 4.1", &opts.fsr4, 0, 1, 1, tx_fsr4, + "AMD FSR 4.1 in place of the game's own upscale, with the scene's depth, the camera's motion and a sub-pixel jitter: steadier " + "edges, less shimmer. Resolution sets what it upscales from: 75% is FSR's Quality, 50% Performance, 100% anti-aliasing only. " + "Needs AMD's two FidelityFX DLLs beside the game. DLSS takes priority when on."}, {TAB_GRAPHICS, "Upscaling", &opts.upscale, 0, 2, 1, tx_upscale, "The filter that scales the picture to your window. Off is the plain copy. Catmull-Rom is sharper, Lanczos sharper still."}, {TAB_GRAPHICS, "Sharpness", &opts.sharpness, 0, 100, 10, tx_percent, @@ -401,7 +412,8 @@ std::string ini_path() { return dir.substr(0, dir.find_last_of("\\/") + 1) + "hookshot_options.ini"; } const char* ini_key(const Row& r) { - if (r.value == &opts.output_res) return "output_res"; // (host/nn_applet.c reads it at the start) + if (r.value == &opts.output_res) return "output_res"; + if (r.value == &opts.fsr4) return "fsr4"; // (host/nn_applet.c reads it at the start) static char k[32]; size_t n = 0; for (const char* p = r.name; *p && n + 1 < sizeof k; p++) k[n++] = *p == ' ' ? '_' : (char)tolower(*p); @@ -1097,6 +1109,7 @@ void menu_init() { if (const char* e = getenv("HOS_REALTIME_STEP")) opts.realtime = atoi(e) != 0; if (const char* e = getenv("HOS_DYNRES")) opts.resolution = atoi(e) != 0 ? 0 : 1; if (const char* e = getenv("RX_DLSS")) opts.dlss = atoi(e) != 0; + if (const char* e = getenv("RX_FSR4")) opts.fsr4 = atoi(e) != 0; if (const char* e = getenv("HOS_OUTPUT_RES")) opts.output_res = std::min(std::max(atoi(e), 0), 2); if (const char* e = getenv("RX_DLSS_PRESET"); e && e[0] >= 'J' && e[0] <= 'M') opts.dlss_preset = e[0] - 'J'; } diff --git a/gpu/vk/vk_menu.h b/gpu/vk/vk_menu.h index 6549a7094..fe385402e 100644 --- a/gpu/vk/vk_menu.h +++ b/gpu/vk/vk_menu.h @@ -34,6 +34,7 @@ struct Options { int dlss = 0; // the game's gameplay upscale through NVIDIA DLSS (vk_dlss.cpp); read once, at the start (RX_DLSS=0/1 over it) int dlss_mode = 3; // the render size with DLSS on: 0 Ultra Performance .. 3 Quality, 4 DLAA (dlss_render_size) int dlss_preset = 3; // DLSS's model: 0 J, 1 K, 2 L, 3 M; applies at once (RX_DLSS_PRESET=J..M over it) + int fsr4 = 0; // (hookshot-amd) the gameplay upscale through AMD FSR 4.1 (vk_fsr4.cpp) when DLSS is off; at once (RX_FSR4=0/1 over it) }; extern Options opts; /// (vk_memory.cpp) true when the quality preset's memory budgets (vram_mb, mirror_mb) are to be used: the card has no more diff --git a/nx2/build.py b/nx2/build.py index 3c5360f9a..bf833378d 100644 --- a/nx2/build.py +++ b/nx2/build.py @@ -713,7 +713,9 @@ def main(): "-I" + os.path.join(spirv_headers, "include"), "-I" + os.path.join(spirv_headers, "include", "spirv", "unified1"), # (third_party/streamline: NVIDIA Streamline's MIT headers, vk_dlss.cpp's) "-I" + os.path.join(vk_headers, "include"), "-I" + vk, - "-I" + os.path.join(kit.HERE, "..", "third_party", "streamline", "include")] + (["-I" + os.path.join(cpm_package("vulkanmemoryallocator"), "include")] if cpm_package("vulkanmemoryallocator") else []) + "-I" + os.path.join(kit.HERE, "..", "third_party", "streamline", "include"), + # (third_party/fidelityfx: AMD's FSR API headers, MIT, vk_fsr4.cpp's) + "-I" + os.path.join(kit.HERE, "..", "third_party", "fidelityfx")] + (["-I" + os.path.join(cpm_package("vulkanmemoryallocator"), "include")] if cpm_package("vulkanmemoryallocator") else []) # (Eden's recompiler and sirit see only their own headers: a change to the back end's vk_*.h does not # rebuild their ~500 files; the back end itself depends on everything, suyu's texture decoders included) vk_lib_deps = tree_headers(os.path.join(vk, "eden"), os.path.join(vk, "sirit"), os.path.join(vk, "compat"), diff --git a/readme.md b/readme.md index 1cb278712..3b3670ac3 100644 --- a/readme.md +++ b/readme.md @@ -198,6 +198,7 @@ and the right one closes the menu. Your choices are saved in `hookshot_options.i | | DLSS | Off, On (after a restart) | Off | | | DLSS mode | Ultra Performance, Performance, Balanced, Quality, DLAA | Quality | | | DLSS preset | J, K, L, M | M | +| | AMD FSR 4.1 | Off, On | Off | | | Upscaling | Off, Catmull-Rom, Lanczos | Off | | | Sharpness | 0 to 100%, in steps of 10 | 0% | | | Handheld profile | Off, On (after a restart) | Off | @@ -251,6 +252,19 @@ so and the game runs as before. **DLSS preset** picks NVIDIA's model and changes For one run: `RX_DLSS=0/1`, `RX_DLSS_PRESET=J..M`, `RX_DLSS_DIR=`, `HOS_OUTPUT_RES=0/1/2`. +### AMD FSR 4.1 + +FSR 4.1 is optional. It replaces the game's own upscale the same way, from the scene's depth and the camera's motion, +and moves the 3D by a sub-pixel amount each frame (a jitter) so it can rebuild edges and fine detail over several +frames. It runs on AMD's RDNA 2 cards and newer (RDNA 2 and 3 use its INT8 model). **Resolution** sets the size it +upscales from: 75% is FSR's Quality, 67% Balanced, 50% Performance, 100% anti-aliasing only. Hookshot does not include +AMD's files: put `amd_fidelityfx_loader_vk.dll` and `amd_fidelityfx_upscaler_vk.dll` from the +[FidelityFX SDK](https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK) 2.4 release (`Kits/FidelityFX/signedbin`) +beside the game's exe (`bin\hookshot.exe` with the launcher). Without them the row says so and the game runs as +before. The row changes at once; DLSS takes priority while it is on. + +For one run: `RX_FSR4=0/1`, `RX_FSR4_DIR=`, `RX_FSR4_JITTER=0` (no jitter, for comparisons). + ### Controls Use a controller, or the keyboard and mouse. On the keyboard, W A S D move @@ -455,6 +469,7 @@ Hookshot exists thanks to the work of many people: (trees, ferns, grass, falling leaves, fireflies), the ambient light probes, the pond's water, the game's own fog, the freeze after Load (Horizon's mutex handoff) and the exposure flicker fix. - **[zortos293/Lichii](https://github.com/zortos293/Lichii)**: reference for Ampere shader lowering, and its compare-exchange retry fix; the NVIDIA DLSS replacement of the game's upscale (Streamline loader, camera motion and its shaders), ported in `gpu/vk/vk_dlss.cpp` and `gpu/vk/vk_draw.cpp`, which Lichii credits to Duck912's work in Eglantine. NVIDIA Streamline's headers (MIT) are in `third_party/streamline`; NVIDIA's DLLs are not part of Hookshot. +- **[madebyjordan/Lichii-Hyrule](https://github.com/madebyjordan/Lichii-Hyrule)** (Lichii's OoT branch): AMD FSR 4.1 in place of the game's upscale, its jitter and the AMD edge fixes, ported in `gpu/vk/vk_fsr4.cpp` and `gpu/vk/vk_draw.cpp`. AMD's FSR API headers (MIT) are in `third_party/fidelityfx`; AMD's DLLs are not part of Hookshot. - **[mstorsjo/llvm-mingw](https://github.com/mstorsjo/llvm-mingw)**: the bundled Windows compiler (no Visual Studio needed). - **[kinnay/zbic](https://github.com/kinnay/zbic)**, **Opus** and **SDL**: decompression, audio and controllers. - **[sostenesfreitas/ocarina-recomp](https://github.com/sostenesfreitas/ocarina-recomp)**: this README's layout, and its notes diff --git a/tests/test_fsr_jitter.py b/tests/test_fsr_jitter.py new file mode 100644 index 000000000..c65a1bdb9 --- /dev/null +++ b/tests/test_fsr_jitter.py @@ -0,0 +1,79 @@ +"""AMD FSR 4.1's jitter (gpu/vk/vk_draw.cpp): Halton (2, 3) offsets in [-0.5, 0.5), part of the state a draw is compared by, moved +on only at the network's pass, and the AMD edge repeat in the colour and motion passes. + +python -I -B tests/test_fsr_jitter.py [--cxx g++] +""" +import argparse +import subprocess +import tempfile +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] + + +def block(text, marker): + start = text.index(marker) + end = text.index("{", start) + 1 + depth = 1 + while depth: + depth += (text[end] == "{") - (text[end] == "}") + end += 1 + return text[start:end] + + +def main(): + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--cxx", default="g++") + a = p.parse_args() + source = (ROOT / "gpu" / "vk" / "vk_draw.cpp").read_text(encoding="utf-8") + pack = block(source, "int dyn_pack(") + # (a frame whose draws match the last frame's would keep its jitter if the offset were not compared) + if "fsr_jitter_for(at, fp[13], fp[14])" not in pack: + raise SystemExit("dyn_pack leaves FSR's jitter out of the state a draw is compared by") + if "constexpr int kDynF = 15" not in source: + raise SystemExit("the compared floats do not hold FSR's jitter (fp[13], fp[14])") + dyn = block(source, "void dynamic_state(") + if "d.vp.x += df[13], d.vp.y += df[14]" not in dyn: + raise SystemExit("the viewport is not moved by the jitter dyn_pack compared") + dispatch = block(source, "bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) {") + if "fsr_frame_end(drew, rw, ow)" not in dispatch or "fj.used ? fj.x : 0.0f" not in dispatch: + raise SystemExit("the jitter does not move on at the network's pass, or FSR is told an offset no draw had") + jitter_for = block(source, "bool fsr_jitter_for(const Targets& at, float& jx, float& jy) {") + for need in ("fj.live", "par_active", "ds.cam.w", "fj.net_present"): + if need not in jitter_for: + raise SystemExit(f"fsr_jitter_for moves draws without checking {need}") + shaders = ROOT / "gpu" / "vk" / "shaders" + if "imageSize(dlss_color) - 2" not in (shaders / "dlss_color.comp").read_text(encoding="utf-8"): + raise SystemExit("FSR's colour does not repeat the column and row before the last (AMD's edge line)") + if "extent - 2" not in (shaders / "dlss_motion.comp").read_text(encoding="utf-8"): + raise SystemExit("the motion's depth does not repeat the column and row before the last (AMD's edge line)") + fn = block(source, "float halton(") + fixture = r'''#include +#include +#include +#include +#define CHECK(x) do { if (!(x)) { std::fprintf(stderr, "FAIL:%d %s\n", __LINE__, #x); std::exit(1); } } while (0) +''' + fn + r''' +int main() { + CHECK(halton(1, 2) == 0.5f && halton(2, 2) == 0.25f && halton(3, 2) == 0.75f); + CHECK(std::fabs(halton(1, 3) - 1.0f / 3) < 1e-6f && std::fabs(halton(2, 3) - 2.0f / 3) < 1e-6f); + float sx = 0, sy = 0; + for (uint32_t i = 1; i <= 16; i++) { // (the 16 phases of a 75% render: each offset in [-0.5, 0.5), centred overall) + const float x = halton(i, 2) - 0.5f, y = halton(i, 3) - 0.5f; + CHECK(x >= -0.5f && x < 0.5f && y >= -0.5f && y < 0.5f); + sx += x, sy += y; + } + CHECK(std::fabs(sx / 16) < 0.05f && std::fabs(sy / 16) < 0.05f); + std::printf("PASS: FSR's jitter is compared, moved on at the network's pass, and balanced\n"); +} +''' + with tempfile.TemporaryDirectory(prefix="fsr-jitter-") as tmp: + cpp = Path(tmp) / "fixture.cpp" + exe = Path(tmp) / "fixture" + cpp.write_text(fixture, encoding="utf-8") + subprocess.run([a.cxx, "-std=c++20", "-Wall", "-Wextra", "-Werror", str(cpp), "-o", str(exe)], check=True) + subprocess.run([str(exe)], check=True) + + +if __name__ == "__main__": + main() diff --git a/third_party/fidelityfx/LICENSE.md b/third_party/fidelityfx/LICENSE.md new file mode 100644 index 000000000..aef7adddb --- /dev/null +++ b/third_party/fidelityfx/LICENSE.md @@ -0,0 +1,992 @@ +The following license applies to all files except as noted below. + +Copyright (C)  Advanced Micro Devices, Inc. All rights reserved. + +REDISTRIBUTION: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to install, reproduce, copy and distribute copies of the Software, in binary form only, and to permit persons to whom the Software is provided to do the same, provided that the following conditions are met: + +No reverse engineering, decompilation, or disassembly of this Software is permitted. + +Redistributions must reproduce the above copyright notice, this permission notice, and the following disclaimers and notices in the Software documentation and/or other materials provided with the Software. + +DISCLAIMER: THE USE OF THE SOFTWARE IS AT YOUR SOLE RISK.  THE SOFTWARE +IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND AND COPYRIGHT +HOLDER AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS AND +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +COPYRIGHT HOLDER AND ITS LICENSORS DO NOT WARRANT THAT THE SOFTWARE WILL +MEET YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE SOFTWARE WILL BE +UNINTERRUPTED OR ERROR-FREE.  THE ENTIRE RISK ASSOCIATED WITH THE USE OF +THE SOFTWARE IS ASSUMED BY YOU.  FURTHERMORE, COPYRIGHT HOLDER AND ITS +LICENSORS DO NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE +OR THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, +ACCURACY, RELIABILITY, CURRENTNESS, OR OTHERWISE. + +DISCLAIMER: UNDER NO CIRCUMSTANCES INCLUDING NEGLIGENCE, SHALL COPYRIGHT HOLDER AND ITS LICENSORS OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS ("AUTHORIZED REPRESENTATIVES") BE LIABLE FOR ANY INCIDENTAL, INDIRECT, +SPECIAL OR CONSEQUENTIAL DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS +PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, AND THE +LIKE) ARISING OUT OF THE USE, MISUSE OR INABILITY TO USE THE SOFTWARE, +BREACH OR DEFAULT, INCLUDING THOSE ARISING FROM INFRINGEMENT OR ALLEGED +INFRINGEMENT OF ANY PATENT, TRADEMARK, COPYRIGHT OR OTHER INTELLECTUAL +PROPERTY RIGHT EVEN IF COPYRIGHT HOLDER AND ITS AUTHORIZED +REPRESENTATIVES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  IN +NO EVENT SHALL COPYRIGHT HOLDER OR ITS AUTHORIZED REPRESENTATIVES TOTAL +LIABILITY FOR ALL DAMAGES, LOSSES, AND CAUSES OF ACTION (WHETHER IN +CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE) EXCEED THE AMOUNT OF +US$10. + +These source files + +- `3rdpartynotice.md` +- `ClearMediaCache.bat` +- `docs\getting-started\building-samples.md` +- `docs\getting-started\index.md` +- `docs\getting-started\media\component-dependencies-dark.png` +- `docs\getting-started\media\component-dependencies.png` +- `docs\getting-started\media\config_init.jpg` +- `docs\getting-started\media\lighting-ui.jpg` +- `docs\getting-started\media\limiter-ui.jpg` +- `docs\getting-started\media\magnifier-ui.jpg` +- `docs\getting-started\media\particle-ui.jpg` +- `docs\getting-started\media\postprocessing-ui.jpg` +- `docs\getting-started\media\shadowraster-ui.jpg` +- `docs\getting-started\media\skydome-ui.jpg` +- `docs\getting-started\media\taa-ui.jpg` +- `docs\getting-started\running-samples.md` +- `docs\getting-started\sdk-structure.md` +- `docs\license.md` +- `docs\media\AMD_FidelityFX_Lockup_Black.png` +- `docs\media\AMD_FidelityFX_SDK_Colored.jpg` +- `docs\media\fidelityfxsdk-logo-rescaled.png` +- `docs\samples\denoiser.md` +- `docs\samples\index.md` +- `docs\samples\media\blur\blur.jpg` +- `docs\samples\media\blur\blur.png` +- `docs\samples\media\brixelizergi\sample.png` +- `docs\samples\media\contrast-adaptive-sharpening\cas-sample.png` +- `docs\samples\media\denoiser\fsr-ray-regeneration-sample.png` +- `docs\samples\media\hybrid-reflections\hybrid-reflections.jpg` +- `docs\samples\media\hybrid-reflections\hybrid-reflections.png` +- `docs\samples\media\hybrid-shadows\hybrid-shadows-sample.jpg` +- `docs\samples\media\hybrid-shadows\hybrid-shadows-sample.png` +- `docs\samples\media\lens\lens-sample_resized.jpg` +- `docs\samples\media\lens\lens-sample.jpg` +- `docs\samples\media\luma-preserving-mapper\LPM.jpg` +- `docs\samples\media\luma-preserving-mapper\LPM.png` +- `docs\samples\media\luma-preserving-mapper\NoLPM.jpg` +- `docs\samples\media\luma-preserving-mapper\NoLPM.png` +- `docs\samples\media\parallel-sort\parallel-sort_resized.jpg` +- `docs\samples\media\parallel-sort\parallel-sort.jpg` +- `docs\samples\media\radiance-caching\nrc-preview-sample.png` +- `docs\samples\media\single-pass-downsampler\spd-sample.jpg` +- `docs\samples\media\stochastic-screen-space-reflections\sssr-sample_resized.jpg` +- `docs\samples\media\stochastic-screen-space-reflections\sssr-sample.jpg` +- `docs\samples\media\super-resolution\frame-interpolation-debug-overlay.svg` +- `docs\samples\media\super-resolution\fsr3-sample_resized.jpg` +- `docs\samples\media\super-resolution\fsr3-sample.jpg` +- `docs\samples\media\super-resolution\upscaler-debug-overlay.svg` +- `docs\samples\media\variable-shading\variable-shading.jpg` +- `docs\samples\media\variable-shading\variable-shading.png` +- `docs\samples\radiance-cache.md` +- `docs\samples\super-resolution.md` +- `docs\sdk.css` +- `docs\tools\index.md` +- `docs\tools\media-delivery.md` +- `Kits\Cauldron2\dx12\Cauldron_vs2022.vcxproj` +- `Kits\Cauldron2\dx12\Cauldron_vs2022.vcxproj.filters` +- `Kits\Cauldron2\dx12\vcpkg.json` +- `Kits\Cauldron2\framework\config\cauldronconfig.json` +- `Kits\Cauldron2\framework\core\backend_interface.h` +- `Kits\Cauldron2\framework\core\component.cpp` +- `Kits\Cauldron2\framework\core\component.h` +- `Kits\Cauldron2\framework\core\components\animationcomponent.cpp` +- `Kits\Cauldron2\framework\core\components\animationcomponent.h` +- `Kits\Cauldron2\framework\core\components\cameracomponent.cpp` +- `Kits\Cauldron2\framework\core\components\cameracomponent.h` +- `Kits\Cauldron2\framework\core\components\lightcomponent.cpp` +- `Kits\Cauldron2\framework\core\components\lightcomponent.h` +- `Kits\Cauldron2\framework\core\components\meshcomponent.cpp` +- `Kits\Cauldron2\framework\core\components\meshcomponent.h` +- `Kits\Cauldron2\framework\core\components\particlespawnercomponent.cpp` +- `Kits\Cauldron2\framework\core\components\particlespawnercomponent.h` +- `Kits\Cauldron2\framework\core\contentloader.h` +- `Kits\Cauldron2\framework\core\contentmanager.cpp` +- `Kits\Cauldron2\framework\core\contentmanager.h` +- `Kits\Cauldron2\framework\core\entity.cpp` +- `Kits\Cauldron2\framework\core\entity.h` +- `Kits\Cauldron2\framework\core\framework.cpp` +- `Kits\Cauldron2\framework\core\framework.h` +- `Kits\Cauldron2\framework\core\inputmanager.cpp` +- `Kits\Cauldron2\framework\core\inputmanager.h` +- `Kits\Cauldron2\framework\core\loaders\gltfloader.cpp` +- `Kits\Cauldron2\framework\core\loaders\gltfloader.h` +- `Kits\Cauldron2\framework\core\loaders\particleloader.cpp` +- `Kits\Cauldron2\framework\core\loaders\particleloader.h` +- `Kits\Cauldron2\framework\core\loaders\textureloader.cpp` +- `Kits\Cauldron2\framework\core\loaders\textureloader.h` +- `Kits\Cauldron2\framework\core\scene.cpp` +- `Kits\Cauldron2\framework\core\scene.h` +- `Kits\Cauldron2\framework\core\taskmanager.cpp` +- `Kits\Cauldron2\framework\core\taskmanager.h` +- `Kits\Cauldron2\framework\core\uibackend.cpp` +- `Kits\Cauldron2\framework\core\uibackend.h` +- `Kits\Cauldron2\framework\core\uimanager.cpp` +- `Kits\Cauldron2\framework\core\uimanager.h` +- `Kits\Cauldron2\framework\core\win\framework_win.cpp` +- `Kits\Cauldron2\framework\core\win\framework_win.h` +- `Kits\Cauldron2\framework\core\win\inputmanager_win.cpp` +- `Kits\Cauldron2\framework\core\win\inputmanager_win.h` +- `Kits\Cauldron2\framework\core\win\uibackend_win.cpp` +- `Kits\Cauldron2\framework\core\win\uibackend_win.h` +- `Kits\Cauldron2\framework\misc\assert.h` +- `Kits\Cauldron2\framework\misc\corecounts.cpp` +- `Kits\Cauldron2\framework\misc\corecounts.h` +- `Kits\Cauldron2\framework\misc\fileio.cpp` +- `Kits\Cauldron2\framework\misc\fileio.h` +- `Kits\Cauldron2\framework\misc\helpers.h` +- `Kits\Cauldron2\framework\misc\log.cpp` +- `Kits\Cauldron2\framework\misc\log.h` +- `Kits\Cauldron2\framework\misc\math.cpp` +- `Kits\Cauldron2\framework\misc\math.h` +- `Kits\Cauldron2\framework\misc\sync.h` +- `Kits\Cauldron2\framework\misc\threadsafe_queue.h` +- `Kits\Cauldron2\framework\misc\threadsafe_ringbuffer.h` +- `Kits\Cauldron2\framework\render\animation.cpp` +- `Kits\Cauldron2\framework\render\animation.h` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\backend_shader_reloader_common.cpp` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\backend_shader_reloader_common.h` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\backend_shader_reloader.cpp` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\backend_shader_reloader.h` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\CMakeLists.txt` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\command_execution.cpp` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\command_execution.h` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\native_backend_shader_reloader.cpp` +- `Kits\Cauldron2\framework\render\backend_shader_reloader\native_backend_shader_reloader.h` +- `Kits\Cauldron2\framework\render\buffer.cpp` +- `Kits\Cauldron2\framework\render\buffer.h` +- `Kits\Cauldron2\framework\render\color_conversion.cpp` +- `Kits\Cauldron2\framework\render\color_conversion.h` +- `Kits\Cauldron2\framework\render\commandlist.cpp` +- `Kits\Cauldron2\framework\render\commandlist.h` +- `Kits\Cauldron2\framework\render\copyresource.cpp` +- `Kits\Cauldron2\framework\render\copyresource.h` +- `Kits\Cauldron2\framework\render\device.cpp` +- `Kits\Cauldron2\framework\render\device.h` +- `Kits\Cauldron2\framework\render\dx12\buffer_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\buffer_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\commandlist_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\commandlist_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\copyresource_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\copyresource_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\defines_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\device_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\device_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\dynamicbufferpool_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\dynamicbufferpool_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\gpuresource_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\gpuresource_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\indirectworkload_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\indirectworkload_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\parameterset_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\parameterset_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\pipelinedesc_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\pipelinedesc_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\pipelineobject_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\pipelineobject_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\profiler_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\profiler_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\resourceview_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\resourceview_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\resourceviewallocator_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\resourceviewallocator_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\rootsignature_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\rootsignature_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\rootsignaturedesc_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\rootsignaturedesc_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\rtresources_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\rtresources_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\sampler_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\sampler_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\swapchain_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\swapchain_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\texture_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\texture_dx12.h` +- `Kits\Cauldron2\framework\render\dx12\uploadheap_dx12.cpp` +- `Kits\Cauldron2\framework\render\dx12\uploadheap_dx12.h` +- `Kits\Cauldron2\framework\render\dynamicbufferpool.cpp` +- `Kits\Cauldron2\framework\render\dynamicbufferpool.h` +- `Kits\Cauldron2\framework\render\dynamicresourcepool.cpp` +- `Kits\Cauldron2\framework\render\dynamicresourcepool.h` +- `Kits\Cauldron2\framework\render\gpuresource.cpp` +- `Kits\Cauldron2\framework\render\gpuresource.h` +- `Kits\Cauldron2\framework\render\indirectworkload.h` +- `Kits\Cauldron2\framework\render\material.cpp` +- `Kits\Cauldron2\framework\render\material.h` +- `Kits\Cauldron2\framework\render\mesh.cpp` +- `Kits\Cauldron2\framework\render\mesh.h` +- `Kits\Cauldron2\framework\render\parameterset.cpp` +- `Kits\Cauldron2\framework\render\parameterset.h` +- `Kits\Cauldron2\framework\render\particle.cpp` +- `Kits\Cauldron2\framework\render\particle.h` +- `Kits\Cauldron2\framework\render\pipelinedesc.cpp` +- `Kits\Cauldron2\framework\render\pipelinedesc.h` +- `Kits\Cauldron2\framework\render\pipelineobject.h` +- `Kits\Cauldron2\framework\render\profiler.cpp` +- `Kits\Cauldron2\framework\render\profiler.h` +- `Kits\Cauldron2\framework\render\rasterview.cpp` +- `Kits\Cauldron2\framework\render\rasterview.h` +- `Kits\Cauldron2\framework\render\renderdefines.h` +- `Kits\Cauldron2\framework\render\rendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\fpslimiter\fpslimiterrendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\fpslimiter\fpslimiterrendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\raytracing\raytracingrendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\raytracing\raytracingrendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\rsr\runtimeshaderrecompilerrendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\rsr\runtimeshaderrecompilerrendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\skinning\skinningrendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\skinning\skinningrendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\swapchain\swapchainrendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\swapchain\swapchainrendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\tonemapping\tonemappingrendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\tonemapping\tonemappingrendermodule.h` +- `Kits\Cauldron2\framework\render\rendermodules\ui\uirendermodule.cpp` +- `Kits\Cauldron2\framework\render\rendermodules\ui\uirendermodule.h` +- `Kits\Cauldron2\framework\render\resourceresizedlistener.cpp` +- `Kits\Cauldron2\framework\render\resourceresizedlistener.h` +- `Kits\Cauldron2\framework\render\resourceview.cpp` +- `Kits\Cauldron2\framework\render\resourceview.h` +- `Kits\Cauldron2\framework\render\resourceviewallocator.cpp` +- `Kits\Cauldron2\framework\render\resourceviewallocator.h` +- `Kits\Cauldron2\framework\render\rootsignature.h` +- `Kits\Cauldron2\framework\render\rootsignaturedesc.cpp` +- `Kits\Cauldron2\framework\render\rootsignaturedesc.h` +- `Kits\Cauldron2\framework\render\rtresources.h` +- `Kits\Cauldron2\framework\render\sampler.h` +- `Kits\Cauldron2\framework\render\shaderbuilder.h` +- `Kits\Cauldron2\framework\render\shaderbuilderhelper.cpp` +- `Kits\Cauldron2\framework\render\shaderbuilderhelper.h` +- `Kits\Cauldron2\framework\render\shadowmapresourcepool.cpp` +- `Kits\Cauldron2\framework\render\shadowmapresourcepool.h` +- `Kits\Cauldron2\framework\render\swapchain.cpp` +- `Kits\Cauldron2\framework\render\swapchain.h` +- `Kits\Cauldron2\framework\render\texture.cpp` +- `Kits\Cauldron2\framework\render\texture.h` +- `Kits\Cauldron2\framework\render\uploadheap.cpp` +- `Kits\Cauldron2\framework\render\uploadheap.h` +- `Kits\Cauldron2\framework\render\vk\buffer_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\buffer_vk.h` +- `Kits\Cauldron2\framework\render\vk\commandlist_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\commandlist_vk.h` +- `Kits\Cauldron2\framework\render\vk\copyresource_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\copyresource_vk.h` +- `Kits\Cauldron2\framework\render\vk\device_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\device_vk.h` +- `Kits\Cauldron2\framework\render\vk\dynamicbufferpool_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\dynamicbufferpool_vk.h` +- `Kits\Cauldron2\framework\render\vk\gpuresource_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\gpuresource_vk.h` +- `Kits\Cauldron2\framework\render\vk\helpers.cpp` +- `Kits\Cauldron2\framework\render\vk\helpers.h` +- `Kits\Cauldron2\framework\render\vk\indirectworkload_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\indirectworkload_vk.h` +- `Kits\Cauldron2\framework\render\vk\parameterset_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\parameterset_vk.h` +- `Kits\Cauldron2\framework\render\vk\pipelinedesc_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\pipelinedesc_vk.h` +- `Kits\Cauldron2\framework\render\vk\pipelineobject_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\pipelineobject_vk.h` +- `Kits\Cauldron2\framework\render\vk\profiler_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\profiler_vk.h` +- `Kits\Cauldron2\framework\render\vk\resourceview_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\resourceview_vk.h` +- `Kits\Cauldron2\framework\render\vk\resourceviewallocator_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\resourceviewallocator_vk.h` +- `Kits\Cauldron2\framework\render\vk\rootsignature_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\rootsignature_vk.h` +- `Kits\Cauldron2\framework\render\vk\rootsignaturedesc_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\rootsignaturedesc_vk.h` +- `Kits\Cauldron2\framework\render\vk\rtresources_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\rtresources_vk.h` +- `Kits\Cauldron2\framework\render\vk\sampler_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\sampler_vk.h` +- `Kits\Cauldron2\framework\render\vk\swapchain_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\swapchain_vk.h` +- `Kits\Cauldron2\framework\render\vk\texture_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\texture_vk.h` +- `Kits\Cauldron2\framework\render\vk\uploadheap_vk.cpp` +- `Kits\Cauldron2\framework\render\vk\uploadheap_vk.h` +- `Kits\Cauldron2\framework\render\win\shaderbuilder_win.cpp` +- `Kits\Cauldron2\framework\shaders\autoexposure.hlsl` +- `Kits\Cauldron2\framework\shaders\builddistortionfield.hlsl` +- `Kits\Cauldron2\framework\shaders\commonintersect.hlsl` +- `Kits\Cauldron2\framework\shaders\computeskinning.hlsl` +- `Kits\Cauldron2\framework\shaders\copytexture.hlsl` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_common_types.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_core_cpu.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_core_gpu_common_half.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_core_gpu_common.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_core_hlsl.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_core_portability.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\ffx_core.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\parallelsort\ffx_parallelsort_common.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\parallelsort\ffx_parallelsort.h` +- `Kits\Cauldron2\framework\shaders\fidelityfx\spd\ffx_spd.h` +- `Kits\Cauldron2\framework\shaders\fpslimiter.hlsl` +- `Kits\Cauldron2\framework\shaders\fullscreen.hlsl` +- `Kits\Cauldron2\framework\shaders\hudlessblit.hlsl` +- `Kits\Cauldron2\framework\shaders\lensdistortion.h` +- `Kits\Cauldron2\framework\shaders\lightfunctionscommon.hlsl` +- `Kits\Cauldron2\framework\shaders\lightingcommon.h` +- `Kits\Cauldron2\framework\shaders\particlecommon.h` +- `Kits\Cauldron2\framework\shaders\rasterlightfunctions.hlsl` +- `Kits\Cauldron2\framework\shaders\raytracingcommon.hlsl` +- `Kits\Cauldron2\framework\shaders\raytracinglightfunctions.hlsl` +- `Kits\Cauldron2\framework\shaders\shadercommon.h` +- `Kits\Cauldron2\framework\shaders\shadowFiltering.h` +- `Kits\Cauldron2\framework\shaders\surfacerendercommon.h` +- `Kits\Cauldron2\framework\shaders\tonemappercommon.h` +- `Kits\Cauldron2\framework\shaders\tonemappers.hlsl` +- `Kits\Cauldron2\framework\shaders\tonemapping.hlsl` +- `Kits\Cauldron2\framework\shaders\transferFunction.h` +- `Kits\Cauldron2\framework\shaders\transformVS.hlsl` +- `Kits\Cauldron2\framework\shaders\ui.hlsl` +- `Kits\Cauldron2\framework\shaders\uicommon.h` +- `Kits\Cauldron2\framework\shaders\upscaler.h` +- `Kits\Cauldron2\rendermodules\animatedtextures\animatedtexturesrendermodule.cpp` +- `Kits\Cauldron2\rendermodules\animatedtextures\animatedtexturesrendermodule.h` +- `Kits\Cauldron2\rendermodules\animatedtextures\shaders\AnimatedTexture.hlsl` +- `Kits\Cauldron2\rendermodules\gbuffer\config\gbufferrendermodule.json` +- `Kits\Cauldron2\rendermodules\gbuffer\gbufferrendermodule.cpp` +- `Kits\Cauldron2\rendermodules\gbuffer\gbufferrendermodule.h` +- `Kits\Cauldron2\rendermodules\gbuffer\shaders\gbufferps.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_assert.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_error.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_interface.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_parallelsort_private.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_parallelsort.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_types.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\ffx_util.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\gpuparticlerendermodule.cpp` +- `Kits\Cauldron2\rendermodules\gpuparticle\gpuparticlerendermodule.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort.cpp` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_callbacks_glsl.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_callbacks_hlsl.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_common.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_reduce.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_resources.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_scan_add.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_scan.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_scatter.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_setup_indirect_args.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort_sum.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\parallelsort\ffx_parallelsort.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_common_ffx.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_reduce_pass.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_scan_add_pass.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_scan_pass.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_scatter_pass.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_setup_indirect_args.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\parallelsort_sum_pass.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\particleemit.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\particlesimulation.hlsl` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\particlesimulationcommon.h` +- `Kits\Cauldron2\rendermodules\gpuparticle\shaders\simulationbindings.h` +- `Kits\Cauldron2\rendermodules\lighting\lightingrendermodule.cpp` +- `Kits\Cauldron2\rendermodules\lighting\lightingrendermodule.h` +- `Kits\Cauldron2\rendermodules\lighting\shaders\lighting.hlsl` +- `Kits\Cauldron2\rendermodules\rastershadow\config\rastershadowrendermodule.json` +- `Kits\Cauldron2\rendermodules\rastershadow\rastershadowrendermodule.cpp` +- `Kits\Cauldron2\rendermodules\rastershadow\rastershadowrendermodule.h` +- `Kits\Cauldron2\rendermodules\rastershadow\shaders\rastershadowps.hlsl` +- `Kits\Cauldron2\rendermodules\rendermoduleregistry.cpp` +- `Kits\Cauldron2\rendermodules\rendermoduleregistry.h` +- `Kits\Cauldron2\rendermodules\skydome\config\skydomerendermodule.json` +- `Kits\Cauldron2\rendermodules\skydome\shaders\skydome.hlsl` +- `Kits\Cauldron2\rendermodules\skydome\shaders\skydomecommon.h` +- `Kits\Cauldron2\rendermodules\skydome\shaders\skydomeproc.hlsl` +- `Kits\Cauldron2\rendermodules\skydome\skydomerendermodule.cpp` +- `Kits\Cauldron2\rendermodules\skydome\skydomerendermodule.h` +- `Kits\Cauldron2\rendermodules\taa\config\taarendermodule.json` +- `Kits\Cauldron2\rendermodules\taa\shaders\taa.hlsl` +- `Kits\Cauldron2\rendermodules\taa\shaders\taacommon.h` +- `Kits\Cauldron2\rendermodules\taa\shaders\taaPost.hlsl` +- `Kits\Cauldron2\rendermodules\taa\taarendermodule.cpp` +- `Kits\Cauldron2\rendermodules\taa\taarendermodule.h` +- `Kits\Cauldron2\rendermodules\translucency\config\translucencyrendermodule.json` +- `Kits\Cauldron2\rendermodules\translucency\shaders\particlerender.hlsl` +- `Kits\Cauldron2\rendermodules\translucency\shaders\particlerendercommon.h` +- `Kits\Cauldron2\rendermodules\translucency\shaders\translucencyps.hlsl` +- `Kits\Cauldron2\rendermodules\translucency\translucencyrendermodule.cpp` +- `Kits\Cauldron2\rendermodules\translucency\translucencyrendermodule.h` +- `Kits\Cauldron2\vk\Cauldron_vs2022.vcxproj` +- `Kits\Cauldron2\vk\Cauldron_vs2022.vcxproj.filters` +- `Kits\Cauldron2\vk\vcpkg.json` +- `Kits\FidelityFX\api\include\dx12\ffx_api_dx12.h` +- `Kits\FidelityFX\api\include\dx12\ffx_api_dx12.hpp` +- `Kits\FidelityFX\api\include\ffx_api_loader.h` +- `Kits\FidelityFX\api\include\ffx_api_matrix_helpers.h` +- `Kits\FidelityFX\api\include\ffx_api_matrix_helpers.hpp` +- `Kits\FidelityFX\api\include\ffx_api_types.h` +- `Kits\FidelityFX\api\include\ffx_api.h` +- `Kits\FidelityFX\api\include\ffx_api.hpp` +- `Kits\FidelityFX\api\include\vk\ffx_api_vk.h` +- `Kits\FidelityFX\api\include\vk\ffx_api_vk.hpp` +- `Kits\FidelityFX\api\internal\ffx_api_helper.h` +- `Kits\FidelityFX\api\internal\ffx_api.cpp` +- `Kits\FidelityFX\api\internal\ffx_assert.cpp` +- `Kits\FidelityFX\api\internal\ffx_assert.h` +- `Kits\FidelityFX\api\internal\ffx_backends.h` +- `Kits\FidelityFX\api\internal\ffx_blob_compression.h` +- `Kits\FidelityFX\api\internal\ffx_blob_decompress.h` +- `Kits\FidelityFX\api\internal\ffx_error.h` +- `Kits\FidelityFX\api\internal\ffx_interface.h` +- `Kits\FidelityFX\api\internal\ffx_internal_types.h` +- `Kits\FidelityFX\api\internal\ffx_message.cpp` +- `Kits\FidelityFX\api\internal\ffx_message.h` +- `Kits\FidelityFX\api\internal\ffx_object_management.cpp` +- `Kits\FidelityFX\api\internal\ffx_object_management.h` +- `Kits\FidelityFX\api\internal\ffx_provider.h` +- `Kits\FidelityFX\api\internal\ffx_query_fallback.cpp` +- `Kits\FidelityFX\api\internal\ffx_util.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_common_types.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_core_cpu.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_core_gpu_common_half.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_core_gpu_common.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_core_hlsl.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_core_portability.h` +- `Kits\FidelityFX\api\internal\gpu\ffx_core.h` +- `Kits\FidelityFX\backend\dx12\d3dx12.h` +- `Kits\FidelityFX\backend\dx12\ffx_backends_dx12.cpp` +- `Kits\FidelityFX\backend\dx12\ffx_dx12.cpp` +- `Kits\FidelityFX\backend\dx12\ffx_dx12.h` +- `Kits\FidelityFX\backend\vk\ffx_backends_vk.cpp` +- `Kits\FidelityFX\backend\vk\ffx_vk.cpp` +- `Kits\FidelityFX\backend\vk\ffx_vk.h` +- `Kits\FidelityFX\denoisers\include\ffx_denoiser.h` +- `Kits\FidelityFX\denoisers\include\ffx_denoiser.hpp` +- `Kits\FidelityFX\docs\getting-started\ffx-api.md` +- `Kits\FidelityFX\docs\getting-started\index.md` +- `Kits\FidelityFX\docs\getting-started\media\component-dependencies-dark.png` +- `Kits\FidelityFX\docs\getting-started\media\component-dependencies.png` +- `Kits\FidelityFX\docs\getting-started\media\config_init.jpg` +- `Kits\FidelityFX\docs\getting-started\media\lighting-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\limiter-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\magnifier-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\particle-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\postprocessing-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\shadowraster-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\skydome-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\media\taa-ui.jpg` +- `Kits\FidelityFX\docs\getting-started\naming-guidelines.md` +- `Kits\FidelityFX\docs\getting-started\sdk-structure.md` +- `Kits\FidelityFX\docs\license.md` +- `Kits\FidelityFX\docs\media\AMD_FSR_SDK_Lockup_RGB_Blk.png` +- `Kits\FidelityFX\docs\media\AMD_FSR_SDK_Lockup_RGB_Wht.png` +- `Kits\FidelityFX\docs\techniques\denoising.md` +- `Kits\FidelityFX\docs\techniques\frame-interpolation-api.md` +- `Kits\FidelityFX\docs\techniques\frame-interpolation-ml.md` +- `Kits\FidelityFX\docs\techniques\frame-interpolation-swap-chain.md` +- `Kits\FidelityFX\docs\techniques\frame-interpolation.md` +- `Kits\FidelityFX\docs\techniques\index.md` +- `Kits\FidelityFX\docs\techniques\media\cross.png` +- `Kits\FidelityFX\docs\techniques\media\denoiser\fsr-ray-regeneration-brdf-lut.jpg` +- `Kits\FidelityFX\docs\techniques\media\denoiser\fsr-ray-regeneration-debug-view.png` +- `Kits\FidelityFX\docs\techniques\media\denoiser\fsr-ray-regeneration-denoised-sample.png` +- `Kits\FidelityFX\docs\techniques\media\denoiser\fsr-ray-regeneration-dispatch.png` +- `Kits\FidelityFX\docs\techniques\media\denoiser\fsr-ray-regeneration-noisy-sample.png` +- `Kits\FidelityFX\docs\techniques\media\denoiser\fsr-ray-regeneration-sample.png` +- `Kits\FidelityFX\docs\techniques\media\frame-interpolation-swapchain\frame-interpolation-swap-chain.svg` +- `Kits\FidelityFX\docs\techniques\media\frame-interpolation\frame-interpolation-debug-overlay.svg` +- `Kits\FidelityFX\docs\techniques\media\frame-pacing\fixed-high.svg` +- `Kits\FidelityFX\docs\techniques\media\frame-pacing\fixed-low.svg` +- `Kits\FidelityFX\docs\techniques\media\frame-pacing\pacing-overview.svg` +- `Kits\FidelityFX\docs\techniques\media\frame-pacing\variable-inside.svg` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\banner.jpg` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\path-tracer-schematic-querying.png` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\path-tracer-schematic-self-train.png` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\path-tracer-schematic-subpaths.png` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\pipeline-one-pass.png` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\pipeline-two-pass.png` +- `Kits\FidelityFX\docs\techniques\media\radiance-cache\sub-path-eqn.png` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\01_FSR3_DataFlow.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\02_FSR3_Flow.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\03_FSR3_FlowAsyncQueue.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\04_FSR3_UiCallback.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\05_FSR3_NoFG_UiCallback.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\06_FSR3_UiTex.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\07_FSR3_NoFG_UiTex.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-interpolation\08_FSR3_HUDLess.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-ml\fsr4-sample.jpg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-ml\pipeline-placement.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\fsr2-sample_resized.jpg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\fsr2-sample.jpg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\fsr3-sample_resized.jpg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\fsr3-sample.jpg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\jitter-space.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\motion-vectors.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\overview.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-temporal\pipeline-placement.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-upscaler\overview.svg` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-upscaler\upscaler-debug-fsr4.png` +- `Kits\FidelityFX\docs\techniques\media\super-resolution-upscaler\upscaler-debug-overlay.svg` +- `Kits\FidelityFX\docs\techniques\media\tick.png` +- `Kits\FidelityFX\docs\techniques\radiance-cache.md` +- `Kits\FidelityFX\docs\techniques\super-resolution-ml.md` +- `Kits\FidelityFX\docs\techniques\super-resolution-temporal.md` +- `Kits\FidelityFX\docs\techniques\super-resolution-upscaler.md` +- `Kits\FidelityFX\docs\whats-new\index.md` +- `Kits\FidelityFX\docs\whats-new\version_1_0.md` +- `Kits\FidelityFX\docs\whats-new\version_1_1_1.md` +- `Kits\FidelityFX\docs\whats-new\version_1_1_2.md` +- `Kits\FidelityFX\docs\whats-new\version_1_1_3.md` +- `Kits\FidelityFX\docs\whats-new\version_1_1_4.md` +- `Kits\FidelityFX\docs\whats-new\version_1_1.md` +- `Kits\FidelityFX\docs\whats-new\version_2_0_0.md` +- `Kits\FidelityFX\docs\whats-new\version_2_1_0.md` +- `Kits\FidelityFX\docs\whats-new\version_2_2_0.md` +- `Kits\FidelityFX\docs\whats-new\version_2_3_0.md` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\antilag2\ffx_antilag2_dx12.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\ffx_provider_fsr3framegenerationswapchain_dx12.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDebugPacingPS.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDebugPacingVS.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12_DebugPacing.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12_DebugPacing.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12_Helpers.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12_Helpers.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12_UiComposition.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12_UiComposition.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainDX12.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainUiCompositionPremulPS.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainUiCompositionPremulVS.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainUiCompositionPS.h` +- `Kits\FidelityFX\framegeneration\fsr3\dx12\FrameInterpolationSwapchainUiCompositionVS.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\ffx_frameinterpolation.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\ffx_opticalflow.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\ffx_provider_fsr3framegeneration.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\ffx_provider_fsr3framegenerationswapchain.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_callbacks_hlsl.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_common.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_compute_game_vector_field_inpainting_pyramid.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_compute_inpainting_pyramid.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_debug_view.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_disocclusion_mask.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_game_motion_vector_field.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_inpainting.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_optical_flow_vector_field.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_reconstruct_dilated_velocity_and_previous_depth.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_reconstruct_previous_depth.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_resources.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation_setup.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\frameinterpolation\ffx_frameinterpolation.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_callbacks_hlsl.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_common.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_compute_luminance_pyramid.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_compute_optical_flow_v5.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_compute_scd_divergence.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_filter_optical_flow_v5.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_generate_scd_histogram.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_prepare_luma.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_resources.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\opticalflow\ffx_opticalflow_scale_optical_flow_advanced_v5.h` +- `Kits\FidelityFX\framegeneration\fsr3\include\gpu\spd\ffx_spd.h` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_frameinterpolation_private.h` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_frameinterpolation_shaderblobs.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_frameinterpolation_shaderblobs.h` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_frameinterpolation.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_opticalflow_private.h` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_opticalflow_shaderblobs.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_opticalflow_shaderblobs.h` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_opticalflow.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\internal\ffx_provider_fsr3framegeneration.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_compute_game_vector_field_inpainting_pyramid_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_compute_inpainting_pyramid_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_debug_view_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_disocclusion_mask_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_game_motion_vector_field_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_inpainting_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_optical_flow_vector_field_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_reconstruct_and_dilate_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_reconstruct_previous_depth_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_frameinterpolation_setup_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_compute_luminance_pyramid_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_compute_optical_flow_advanced_pass_v5.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_compute_scd_divergence_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_filter_optical_flow_pass_v5.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_generate_scd_histogram_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_prepare_luma_pass.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\ffx_opticalflow_scale_optical_flow_advanced_pass_v5.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\FrameInterpolationSwapchainDebugPacing.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\internal\shaders\FrameInterpolationSwapchainUiComposition.hlsl` +- `Kits\FidelityFX\framegeneration\fsr3\vk\ffx_provider_framegenerationswapchain_vk.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainDebugPacingPS.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainDebugPacingVS.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainUiCompositionPremulPS.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainUiCompositionPremulVS.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainUiCompositionPS.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainUiCompositionVS.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK_DebugPacing.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK_DebugPacing.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK_Helpers.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK_Helpers.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK_UiComposition.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK_UiComposition.h` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK.cpp` +- `Kits\FidelityFX\framegeneration\fsr3\vk\FrameInterpolationSwapchainVK.h` +- `Kits\FidelityFX\framegeneration\include\dx12\ffx_api_framegeneration_dx12.h` +- `Kits\FidelityFX\framegeneration\include\dx12\ffx_api_framegeneration_dx12.hpp` +- `Kits\FidelityFX\framegeneration\include\ffx_framegeneration_api_types.h` +- `Kits\FidelityFX\framegeneration\include\ffx_framegeneration.h` +- `Kits\FidelityFX\framegeneration\include\ffx_framegeneration.hpp` +- `Kits\FidelityFX\framegeneration\include\vk\ffx_api_framegeneration_vk.h` +- `Kits\FidelityFX\framegeneration\include\vk\ffx_api_framegeneration_vk.hpp` +- `Kits\FidelityFX\framegeneration\internal\ffx_framegeneration_internal.h` +- `Kits\FidelityFX\radiancecache\include\ffx_radiancecache.h` +- `Kits\FidelityFX\radiancecache\include\ffx_radiancecache.hpp` +- `Kits\FidelityFX\readme.md` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_denoiser_dx12.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_framegeneration_dx12.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_framegeneration_vk.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_loader_dx12.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_loader_dx12.lib` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_loader_vk.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_loader_vk.lib` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_radiancecache_dx12.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_upscaler_dx12.dll` +- `Kits\FidelityFX\signedbin\amd_fidelityfx_upscaler_vk.dll` +- `Kits\FidelityFX\upscalers\fsr3\include\ffx_fsr2.h` +- `Kits\FidelityFX\upscalers\fsr3\include\ffx_fsr3upscaler.h` +- `Kits\FidelityFX\upscalers\fsr3\include\ffx_provider_fsr2.h` +- `Kits\FidelityFX\upscalers\fsr3\include\ffx_provider_fsr3upscale.h` +- `Kits\FidelityFX\upscalers\fsr3\include\ffx_spd.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr1\ffx_fsr1.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_accumulate.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_callbacks_hlsl.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_common.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_compute_luminance_pyramid.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_depth_clip.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_lock.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_postprocess_lock_status.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_rcas.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_reconstruct_previous_depth.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_reproject.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_resources.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_sample.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_tcr_autogen.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr2\ffx_fsr2_upsample.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3\ffx_fsr3_callbacks_hlsl.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3\ffx_fsr3_common.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3\ffx_fsr3_resources.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_accumulate.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_callbacks_hlsl.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_common.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_debug_view.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_luma_instability.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_luma_pyramid.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_prepare_inputs.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_prepare_reactivity.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_rcas.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_reproject.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_resources.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_sample.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_shading_change_pyramid.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_shading_change.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\fsr3upscaler\ffx_fsr3upscaler_upsample.h` +- `Kits\FidelityFX\upscalers\fsr3\include\gpu\spd\ffx_spd.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr2_maximum_bias.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr2_private.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr2_shaderblobs.cpp` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr2_shaderblobs.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr2.cpp` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr3_private.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr3upscaler_private.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr3upscaler_shaderblobs.cpp` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr3upscaler_shaderblobs.h` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_fsr3upscaler.cpp` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_provider_fsr2.cpp` +- `Kits\FidelityFX\upscalers\fsr3\internal\ffx_provider_fsr3upscale.cpp` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_accumulate_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_autogen_reactive_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_compute_luminance_pyramid_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_debug_blit.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_depth_clip_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_lock_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_rcas_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_reconstruct_previous_depth_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr2_tcr_autogen_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_accumulate_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_autogen_reactive_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_debug_view_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_luma_instability_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_luma_pyramid_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_prepare_inputs_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_prepare_reactivity_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_rcas_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_shading_change_pass.hlsl` +- `Kits\FidelityFX\upscalers\fsr3\internal\shaders\ffx_fsr3upscaler_shading_change_pyramid_pass.hlsl` +- `Kits\FidelityFX\upscalers\include\ffx_upscale.h` +- `Kits\FidelityFX\upscalers\include\ffx_upscale.hpp` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64_2022_MD.lib` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64_2022_MDd.lib` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64_2022_MT.lib` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64_2022_MTd.lib` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64.dll` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64.exp` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64.lib` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64d.exp` +- `Kits\OpenSource\amd\acs\amd_acs_ARM64d.lib` +- `Kits\OpenSource\amd\acs\amd_acs_x64_2019_MD.lib` +- `Kits\OpenSource\amd\acs\amd_acs_x64_2019_MDd.lib` +- `Kits\OpenSource\amd\acs\amd_acs_x64_2019_MT.lib` +- `Kits\OpenSource\amd\acs\amd_acs_x64_2019_MTd.lib` +- `Kits\OpenSource\amd\acs\amd_acs_x64.dll` +- `Kits\OpenSource\amd\acs\amd_acs_x64.exp` +- `Kits\OpenSource\amd\acs\amd_acs_x64.lib` +- `Kits\OpenSource\amd\acs\amd_acs_x64d.exp` +- `Kits\OpenSource\amd\acs\amd_acs_x64d.lib` +- `Kits\OpenSource\amd\acs\amd_acs.h` +- `Kits\OpenSource\amd\acs\LICENSE.txt` +- `Kits\OpenSource\amd\acs\README.md` +- `Kits\OpenSource\amd\ags\ags_shader_intrinsics_dx12.hlsl` +- `Kits\OpenSource\amd\ags\amd_ags_x64.dll` +- `Kits\OpenSource\amd\ags\amd_ags_x64.lib` +- `Kits\OpenSource\amd\ags\amd_ags.chm` +- `Kits\OpenSource\amd\ags\amd_ags.h` +- `Kits\OpenSource\amd\ags\LICENSE.txt` +- `Kits\OpenSource\amd\ags\README.md` +- `Kits\OpenSource\amd\antilag2\ffx_antilag2_dx12.h` +- `Kits\OpenSource\amd\antilag2\LICENSE.txt` +- `Kits\OpenSource\amd\memoryallocator\D3D12MemAlloc.cpp` +- `Kits\OpenSource\amd\memoryallocator\D3D12MemAlloc.h` +- `Kits\OpenSource\amd\memoryallocator\license.txt` +- `Kits\OpenSource\amd\memoryallocator\memoryallocator.cpp` +- `Kits\OpenSource\amd\memoryallocator\memoryallocator.h` +- `Kits\OpenSource\amd\memoryallocator\vk_mem_alloc.h` +- `Kits\OpenSource\imgui\backends\imgui_impl_dx12.cpp` +- `Kits\OpenSource\imgui\backends\imgui_impl_dx12.h` +- `Kits\OpenSource\imgui\backends\imgui_impl_win32.cpp` +- `Kits\OpenSource\imgui\backends\imgui_impl_win32.h` +- `Kits\OpenSource\imgui\docs\BACKENDS.md` +- `Kits\OpenSource\imgui\docs\CHANGELOG.txt` +- `Kits\OpenSource\imgui\docs\CONTRIBUTING.md` +- `Kits\OpenSource\imgui\docs\EXAMPLES.md` +- `Kits\OpenSource\imgui\docs\FAQ.md` +- `Kits\OpenSource\imgui\docs\FONTS.md` +- `Kits\OpenSource\imgui\docs\README.md` +- `Kits\OpenSource\imgui\docs\TODO.txt` +- `Kits\OpenSource\imgui\imconfig.h` +- `Kits\OpenSource\imgui\imgui_demo.cpp` +- `Kits\OpenSource\imgui\imgui_draw.cpp` +- `Kits\OpenSource\imgui\imgui_internal.h` +- `Kits\OpenSource\imgui\imgui_tables.cpp` +- `Kits\OpenSource\imgui\imgui_widgets.cpp` +- `Kits\OpenSource\imgui\imgui.cpp` +- `Kits\OpenSource\imgui\imgui.h` +- `Kits\OpenSource\imgui\imstb_rectpack.h` +- `Kits\OpenSource\imgui\imstb_textedit.h` +- `Kits\OpenSource\imgui\imstb_truetype.h` +- `Kits\OpenSource\imgui\LICENSE.txt` +- `Kits\OpenSource\imgui\misc\cpp\imgui_stdlib.cpp` +- `Kits\OpenSource\imgui\misc\cpp\imgui_stdlib.h` +- `Kits\OpenSource\imgui\misc\cpp\README.txt` +- `Kits\OpenSource\imgui\misc\debuggers\imgui.gdb` +- `Kits\OpenSource\imgui\misc\debuggers\imgui.natstepfilter` +- `Kits\OpenSource\imgui\misc\debuggers\imgui.natvis` +- `Kits\OpenSource\imgui\misc\debuggers\README.txt` +- `Kits\OpenSource\imgui\misc\fonts\binary_to_compressed_c.cpp` +- `Kits\OpenSource\imgui\misc\fonts\Cousine-Regular.ttf` +- `Kits\OpenSource\imgui\misc\fonts\DroidSans.ttf` +- `Kits\OpenSource\imgui\misc\fonts\Karla-Regular.ttf` +- `Kits\OpenSource\imgui\misc\fonts\ProggyClean.ttf` +- `Kits\OpenSource\imgui\misc\fonts\ProggyTiny.ttf` +- `Kits\OpenSource\imgui\misc\fonts\Roboto-Medium.ttf` +- `Kits\OpenSource\imgui\misc\freetype\imgui_freetype.cpp` +- `Kits\OpenSource\imgui\misc\freetype\imgui_freetype.h` +- `Kits\OpenSource\imgui\misc\freetype\README.md` +- `Kits\OpenSource\imgui\misc\README.txt` +- `Kits\OpenSource\imgui\misc\single_file\imgui_single_file.h` +- `Kits\OpenSource\nlohmann\json_fwd.hpp` +- `Kits\OpenSource\nlohmann\json.hpp` +- `Kits\OpenSource\nlohmann\LICENSE.MIT` +- `Kits\OpenSource\nlohmann\version.txt` +- `Kits\OpenSource\stb\LICENSE.MIT` +- `Kits\OpenSource\stb\stb_image_write.h` +- `Kits\OpenSource\stb\stb_image.h` +- `Kits\OpenSource\vectormath\common.hpp` +- `Kits\OpenSource\vectormath\docs\VectorMath-Library-Overview.pdf` +- `Kits\OpenSource\vectormath\LICENSE.txt` +- `Kits\OpenSource\vectormath\README.md` +- `Kits\OpenSource\vectormath\scalar\matrix.hpp` +- `Kits\OpenSource\vectormath\scalar\quaternion.hpp` +- `Kits\OpenSource\vectormath\scalar\vector.hpp` +- `Kits\OpenSource\vectormath\scalar\vectormath.hpp` +- `Kits\OpenSource\vectormath\sse\boolinvec.hpp` +- `Kits\OpenSource\vectormath\sse\floatinvec.hpp` +- `Kits\OpenSource\vectormath\sse\internal.hpp` +- `Kits\OpenSource\vectormath\sse\matrix.hpp` +- `Kits\OpenSource\vectormath\sse\quaternion.hpp` +- `Kits\OpenSource\vectormath\sse\vecidx.hpp` +- `Kits\OpenSource\vectormath\sse\vector.hpp` +- `Kits\OpenSource\vectormath\sse\vectormath.hpp` +- `Kits\OpenSource\vectormath\vec2d.hpp` +- `Kits\OpenSource\vectormath\vectormath.hpp` +- `readme.md` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\config\denoiserconfig.json` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\debugoverlayrendermodule.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\debugoverlayrendermodule.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\denoiserrendermodule.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\denoiserrendermodule.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\denoisersettingshandler.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\denoisersettingshandler.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\dpiawarescaling.manifest` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\FidelityFX_Denoiser_Sample_2022.props` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\FidelityFX_Denoiser_Sample_2022.sln` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\FidelityFX_Denoiser_Sample_2022.vcxproj` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\FidelityFX_Denoiser_Sample_2022.vcxproj.filters` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\fsrapirendermodule.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\fsrapirendermodule.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\fsrsettingshandler.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\fsrsettingshandler.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\main.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\pathtracingrendermodule.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\pathtracingrendermodule.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\resources\cauldron.rc` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\resources\GPUOpenChip.ico` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\resources\resource.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\sample.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\sample.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\sampleautomation.cpp` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\sampleautomation.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Basis.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Bindings.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Color.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\DebugOverlay.cs.hlsl` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\DebugOverlayData.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\DenoisingCompose.cs.hlsl` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\DenoisingData.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\DenoisingPrepare.cs.hlsl` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Dispatch.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Geometry.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Lighting.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Material.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Numeric.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\PackedData.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\PathTracing.cs.hlsl` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\PathTracing.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\PathTracingData.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Random.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Sampling.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Shadow.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Transformation.hlsli` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\Types.h` +- `Samples\Denoisers\FidelityFX_Denoiser\dx12\shaders\UnitVector.hlsli` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\config.json` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\D3DBase.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\D3DPipeline.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\D3DPipeline.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\dpiawarescaling.manifest` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\DXC.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\DXC.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\FidelityFX_NRC_2022.props` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\FidelityFX_NRC_2022.sln` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\FidelityFX_NRC_2022.vcxproj` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\FidelityFX_NRC_2022.vcxproj.filters` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\RenderManager.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\RenderManager.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\resources\cauldron.rc` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\resources\GPUOpenChip.ico` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\resources\resource.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\ShaderGraph.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\ShaderGraph.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Basis.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\bsdf\Beckmann.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\bsdf\BSDF.hlsli` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\bsdf\GGX.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\bsdf\Simple.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Camera.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Cel.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\color\Color.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\color\Grade.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Constants.hlsli` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Ctor.hlsli` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\FrameCtx.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Half.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Hash.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Hatch.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\integrator\PT.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\light\Planar.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Math.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\RadianceCache.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\random\Halton.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\random\OwenSobol.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\random\PCG.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\random\Random.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Ray.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\texture\Simple.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\tracable\Boolean.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\tracable\Intersector.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\tracable\KIFS.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\tracable\Primitive.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\tracable\SimpleCSG.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Transform.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\common\Triplanar.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\scene\Composite.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\scene\Display.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\scene\Meta.json` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\shaders\scene\Renderer.hlsl` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Assert.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Backtrace.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Backtrace.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\FilesystemUtils.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\FilesystemUtils.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\HighResTimer.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Json.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Json.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Log.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\Log.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\StringUtils.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\utils\StringUtils.h` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\vcpkg.json` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\Win32.cpp` +- `Samples\RadianceCaches\FidelityFX_NRC\dx12\Win32.h` +- `Samples\Upscalers\FidelityFX_FSR\dx12\config\fsrapiconfig.json` +- `Samples\Upscalers\FidelityFX_FSR\dx12\dpiawarescaling.manifest` +- `Samples\Upscalers\FidelityFX_FSR\dx12\FidelityFX_FSR_2022.props` +- `Samples\Upscalers\FidelityFX_FSR\dx12\FidelityFX_FSR_2022.sln` +- `Samples\Upscalers\FidelityFX_FSR\dx12\FidelityFX_FSR_2022.vcxproj` +- `Samples\Upscalers\FidelityFX_FSR\dx12\FidelityFX_FSR_2022.vcxproj.filters` +- `Samples\Upscalers\FidelityFX_FSR\dx12\resources\cauldron.rc` +- `Samples\Upscalers\FidelityFX_FSR\dx12\resources\GPUOpenChip.ico` +- `Samples\Upscalers\FidelityFX_FSR\dx12\resources\resource.h` +- `Samples\Upscalers\FidelityFX_FSR\internal\fsrapirendermodule.cpp` +- `Samples\Upscalers\FidelityFX_FSR\internal\fsrapirendermodule.h` +- `Samples\Upscalers\FidelityFX_FSR\internal\fsrsettingshandler.cpp` +- `Samples\Upscalers\FidelityFX_FSR\internal\fsrsettingshandler.h` +- `Samples\Upscalers\FidelityFX_FSR\internal\main.cpp` +- `Samples\Upscalers\FidelityFX_FSR\internal\sample.cpp` +- `Samples\Upscalers\FidelityFX_FSR\internal\sample.h` +- `Samples\Upscalers\FidelityFX_FSR\vk\config\fsrapiconfig.json` +- `Samples\Upscalers\FidelityFX_FSR\vk\dpiawarescaling.manifest` +- `Samples\Upscalers\FidelityFX_FSR\vk\FidelityFX_FSR_2022.props` +- `Samples\Upscalers\FidelityFX_FSR\vk\FidelityFX_FSR_2022.sln` +- `Samples\Upscalers\FidelityFX_FSR\vk\FidelityFX_FSR_2022.vcxproj` +- `Samples\Upscalers\FidelityFX_FSR\vk\FidelityFX_FSR_2022.vcxproj.filters` +- `Samples\Upscalers\FidelityFX_FSR\vk\fsrapirendermodule.cpp` +- `Samples\Upscalers\FidelityFX_FSR\vk\resources\cauldron.rc` +- `Samples\Upscalers\FidelityFX_FSR\vk\resources\GPUOpenChip.ico` +- `Samples\Upscalers\FidelityFX_FSR\vk\resources\resource.h` +- `Tools\media_delivery\MediaDelivery.exe` +- `UpdateMedia.bat` + +are subject to the following license: + + +Copyright (C)  Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/third_party/fidelityfx/README.md b/third_party/fidelityfx/README.md new file mode 100644 index 000000000..c4db24cfd --- /dev/null +++ b/third_party/fidelityfx/README.md @@ -0,0 +1,9 @@ +# AMD FSR API headers (FidelityFX SDK v2.4.0) + +Unmodified MIT-licensed headers from AMD's FidelityFX SDK, tag `v2.4.0` +(, `Kits/FidelityFX/api/include` and +`Kits/FidelityFX/upscalers/include`). See `LICENSE.md`. + +Only the headers are compiled in (`gpu/vk/vk_fsr4.cpp`). AMD's signed `amd_fidelityfx_loader_vk.dll` and +`amd_fidelityfx_upscaler_vk.dll` (from `Kits/FidelityFX/signedbin` of the same release) are not vendored: they are +loaded at run time, from `RX_FSR4_DIR` or the folder of `hookshot.exe`, when the AMD FSR 4.1 row is on. diff --git a/third_party/fidelityfx/api/include/ffx_api.h b/third_party/fidelityfx/api/include/ffx_api.h new file mode 100644 index 000000000..d351c168e --- /dev/null +++ b/third_party/fidelityfx/api/include/ffx_api.h @@ -0,0 +1,213 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2026 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#pragma once + +#if defined(__cplusplus) +extern "C" { +#endif // #if defined(__cplusplus) + +#define FFX_API_ENTRY __declspec(dllexport) + +#include + +enum FfxApiReturnCodes +{ + FFX_API_RETURN_OK = 0, ///< The oparation was successful. + FFX_API_RETURN_ERROR = 1, ///< An error occurred that is not further specified. + FFX_API_RETURN_ERROR_UNKNOWN_DESCTYPE = 2, ///< The structure type given was not recognized for the function or context with which it was used. This is likely a programming error. + FFX_API_RETURN_ERROR_RUNTIME_ERROR = 3, ///< The underlying runtime (e.g. D3D12, Vulkan) or effect returned an error code. + FFX_API_RETURN_NO_PROVIDER = 4, ///< No provider was found for the given structure type. This is likely a programming error. + FFX_API_RETURN_ERROR_MEMORY = 5, ///< A memory allocation failed. + FFX_API_RETURN_ERROR_PARAMETER = 6, ///< A parameter was invalid, e.g. a null pointer, empty resource or out-of-bounds enum value. + FFX_API_RETURN_PROVIDER_NO_SUPPORT_NEW_DESCTYPE = 7, ///< The structure type given is new and not supported in the old provider. This is likely fixed with driver upgrade or effect DLL upgrade. +}; + +typedef void* ffxContext; +typedef uint32_t ffxReturnCode_t; + +#define FFX_API_EFFECT_MASK 0x00ff0000u +#define FFX_API_BACKEND_MASK 0xff000000u +#define FFX_API_EFFECT_ID_GENERAL 0x00000000u + +// Base Descriptor types +typedef uint64_t ffxStructType_t; +typedef struct ffxApiHeader +{ + ffxStructType_t type; ///< The structure type. Must always be set to the corresponding value for any structure (found nearby with a similar name). + struct ffxApiHeader* pNext; ///< Pointer to next structure, used for optional parameters and extensions. Can be null. +} ffxApiHeader; + +typedef ffxApiHeader ffxCreateContextDescHeader; +typedef ffxApiHeader ffxConfigureDescHeader; +typedef ffxApiHeader ffxQueryDescHeader; +typedef ffxApiHeader ffxDispatchDescHeader; + +// Extensions for global debug +#define FFX_API_CONFIGURE_GLOBALDEBUG_LEVEL_SILENCE 0x0000000u +#define FFX_API_CONFIGURE_GLOBALDEBUG_LEVEL_ERRORS 0x0000001u +#define FFX_API_CONFIGURE_GLOBALDEBUG_LEVEL_WARNINGS 0x0000002u +#define FFX_API_CONFIGURE_GLOBALDEBUG_LEVEL_VERBOSE 0xfffffffu + +enum FfxApiMsgType +{ + FFX_API_MESSAGE_TYPE_ERROR = 0, + FFX_API_MESSAGE_TYPE_WARNING = 1, + FFX_API_MESSAGE_TYPE_COUNT +}; + +typedef void (*ffxApiMessage)(uint32_t type, const wchar_t* message); + +#define FFX_API_CONFIGURE_DESC_TYPE_GLOBALDEBUG 7u +struct ffxConfigureDescGlobalDebug +{ + ffxConfigureDescHeader header; + uint64_t effectId; + ffxApiMessage fpMessage; ///< A pointer to a function that can receive messages from the runtime. May be null. + uint32_t debugLevel; +}; + +#define FFX_API_QUERY_DESC_TYPE_GET_VERSIONS 4u +struct ffxQueryDescGetVersions +{ + ffxQueryDescHeader header; + uint64_t createDescType; ///< Create description for the effect whose versions should be enumerated. + void* device; ///< For DX12: pointer to ID3D12Device. For VK, pointer to VkDeviceContext. + uint64_t *outputCount; ///< Input capacity of id and name arrays. Output number of returned versions. If initially zero, output is number of available versions. + uint64_t *versionIds; ///< Output array of version ids to be used as version overrides. If null, only names and count are returned. + const char** versionNames; ///< Output array of version names for display. If null, only ids and count are returned. If both this and versionIds are null, only count is returned. +}; + +#define FFX_API_DESC_TYPE_OVERRIDE_VERSION 5u +struct ffxOverrideVersion +{ + ffxApiHeader header; + uint64_t versionId; ///< Id of version to use. Must be a value returned from a query in ffxQueryDescGetVersions.versionIds array. +}; + +#define FFX_API_QUERY_DESC_TYPE_GET_PROVIDER_VERSION 6u +struct ffxQueryGetProviderVersion +{ + ffxQueryDescHeader header; + uint64_t versionId; ///< Id of provider being used for queried context. 0 if invalid. + const char* versionName; ///< Version name for display. If nullptr, the query was invalid. +}; + +// Memory allocation function. Must return a valid pointer to at least size bytes of memory aligned to hold any type. +// May return null to indicate failure. Standard library malloc fulfills this requirement. +typedef void* (*ffxAlloc)(void* pUserData, uint64_t size); + +// Memory deallocation function. May be called with null pointer as second argument. +typedef void (*ffxDealloc)(void* pUserData, void* pMem); + +typedef struct ffxAllocationCallbacks +{ + void* pUserData; + ffxAlloc alloc; + ffxDealloc dealloc; +} ffxAllocationCallbacks; + +// Creates a FFX object context. +// Depending on the desc structures provided to this function, the context will be created with the desired version and attributes. +// Non-zero return indicates error code. +// Pointers passed in desc must remain live until ffxDestroyContext is called on the context. +// MemCb may be null; the system allocator (malloc/free) will be used in this case. +FFX_API_ENTRY ffxReturnCode_t ffxCreateContext(ffxContext* context, ffxCreateContextDescHeader* desc, const ffxAllocationCallbacks* memCb); +typedef ffxReturnCode_t (*PfnFfxCreateContext)(ffxContext* context, ffxCreateContextDescHeader* desc, const ffxAllocationCallbacks* memCb); + +// Destroys an FFX object context. +// Non-zero return indicates error code. +// MemCb must be compatible with the callbacks passed into ffxCreateContext. +FFX_API_ENTRY ffxReturnCode_t ffxDestroyContext(ffxContext* context, const ffxAllocationCallbacks* memCb); +typedef ffxReturnCode_t (*PfnFfxDestroyContext)(ffxContext* context, const ffxAllocationCallbacks* memCb); + +// Configures the provided FFX object context. +// If context is null, configure operates on any global state. +// Non-zero return indicates error code. +FFX_API_ENTRY ffxReturnCode_t ffxConfigure(ffxContext* context, const ffxConfigureDescHeader* desc); +typedef ffxReturnCode_t (*PfnFfxConfigure)(ffxContext* context, const ffxConfigureDescHeader* desc); + +// Queries the provided FFX object context. +// If context is null, query operates on any global state. +// Non-zero return indicates error code. +FFX_API_ENTRY ffxReturnCode_t ffxQuery(ffxContext* context, ffxQueryDescHeader* desc); +typedef ffxReturnCode_t (*PfnFfxQuery)(ffxContext* context, ffxQueryDescHeader* desc); + +// Dispatches work on the given FFX object context defined by the dispatch descriptor. +// Non-zero return indicates error code. +FFX_API_ENTRY ffxReturnCode_t ffxDispatch(ffxContext* context, const ffxDispatchDescHeader* desc); +typedef ffxReturnCode_t (*PfnFfxDispatch)(ffxContext* context, const ffxDispatchDescHeader* desc); + +// FFX_API_EFFECT_IDs +#define FFX_API_EFFECT_ID_UPSCALE 0x00010000u +#define FFX_API_EFFECT_ID_FRAMEGENERATION 0x00020000u +#define FFX_API_EFFECT_ID_FRAMEGENERATIONSWAPCHAIN 0x00030000u +// Need to keep this ID around for the deprecated VK frame gen swapchain +#define FFX_API_EFFECT_ID_FRAMEGENERATIONSWAPCHAIN_VK 0x00040000u +#define FFX_API_EFFECT_ID_DENOISER 0x00050000u +#define FFX_API_EFFECT_ID_RADIANCECACHE 0x00060000u +#define FFX_API_EFFECT_COUNT 6u + +#define FFX_API_MAKE_EFFECT_SUB_ID(effectId, subversion) ((effectId & FFX_API_EFFECT_MASK) | (subversion & ~FFX_API_EFFECT_MASK)) + +// FFX_APID_BACKEND_IDs +#define FFX_API_BACKEND_ID_DX12 0x00000000u +#define FFX_API_BACKEND_ID_VK 0x01000000u // For new effects going forward, please use this backend ID for vulkan specifics +#define FFX_API_BACKEND_ID_XBOX 0x02000000u + +#define FFX_API_MAKE_BACKEND_SUB_ID(backendId, subversion) ((backendId & FFX_API_BACKEND_MASK) | (subversion & ~FFX_API_BACKEND_MASK)) + +// Combiner for BACKEND-specific EFFECT sub-Ids +#define FFX_API_MAKE_BACKEND_EFFECT_SUB_ID(backendId, effectId, subversion) ((subversion & ~FFX_API_EFFECT_MASK) | (effectId & FFX_API_EFFECT_MASK) | (backendId & FFX_API_BACKEND_MASK) | (subversion & ~(FFX_API_BACKEND_MASK | FFX_API_EFFECT_MASK))) + +// Pragma macros for controlling warnings so that deprecations take affect externally but can be suppressed internally. +// This is so we can maintain the API/ABI until we are ready to make the breaking change. +// These are sadly compiler specific. +#if defined(_MSC_VER) && !defined(__clang__) && !defined(__GNUC__) && !defined(__INTEL_COMPILER) +#define FFX_PRAGMA_WARNING_PUSH warning( push ) +#define FFX_PRAGMA_WARNING_POP warning( pop ) +#define FFX_PRAGMA_WARNING_DISABLE_DEPRECATIONS warning( disable: 4996 ) +#define FFX_PRAGMA_WARNING_WARN_DEPRECATIONS warning( default: 4996 ) +#elif defined(__clang__) || defined(__GNUC__) +#define FFX_PRAGMA_WARNING_PUSH GCC diagnostic push +#define FFX_PRAGMA_WARNING_POP GCC diagnostic pop +#define FFX_PRAGMA_WARNING_DISABLE_DEPRECATIONS GCC diagnostic ignored "-Wdeprecated" +#define FFX_PRAGMA_WARNING_WARN_DEPRECATIONS GCC diagnostic warning "-Wdeprecated" +#else +#define FFX_PRAGMA_WARNING_PUSH +#define FFX_PRAGMA_WARNING_POP +#define FFX_PRAGMA_WARNING_DISABLE_DEPRECATIONS +#endif + +#define FFX_DEPRECATION(message) [[deprecated(message)]] + +#define FFX_API_CONFIGURE_DESC_TYPE_GLOBALDEBUG1 0x0000001u +struct FFX_DEPRECATION("Use ffxConfigureDescGlobalDebug instead of ffxConfigureDescGlobalDebug1.") ffxConfigureDescGlobalDebug1 +{ + ffxConfigureDescHeader header; + ffxApiMessage fpMessage; + uint32_t debugLevel; +}; + +#if defined(__cplusplus) +} +#endif // #if defined(__cplusplus) diff --git a/third_party/fidelityfx/api/include/ffx_api_types.h b/third_party/fidelityfx/api/include/ffx_api_types.h new file mode 100644 index 000000000..380c4c0a1 --- /dev/null +++ b/third_party/fidelityfx/api/include/ffx_api_types.h @@ -0,0 +1,257 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2026 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#pragma once + +#include +#include + +/// An enumeration of surface formats. Needs to match enum FfxApiSurfaceFormat +enum FfxApiSurfaceFormat +{ + FFX_API_SURFACE_FORMAT_UNKNOWN, ///< Unknown format + FFX_API_SURFACE_FORMAT_R32G32B32A32_TYPELESS, ///< 32 bit per channel, 4 channel typeless format + FFX_API_SURFACE_FORMAT_R32G32B32A32_UINT, ///< 32 bit per channel, 4 channel uint format + FFX_API_SURFACE_FORMAT_R32G32B32A32_FLOAT, ///< 32 bit per channel, 4 channel float format + FFX_API_SURFACE_FORMAT_R16G16B16A16_FLOAT, ///< 16 bit per channel, 4 channel float format + FFX_API_SURFACE_FORMAT_R32G32B32_FLOAT, ///< 32 bit per channel, 3 channel float format + FFX_API_SURFACE_FORMAT_R32G32_FLOAT, ///< 32 bit per channel, 2 channel float format + FFX_API_SURFACE_FORMAT_R8_UINT, ///< 8 bit per channel, 1 channel float format + FFX_API_SURFACE_FORMAT_R32_UINT, ///< 32 bit per channel, 1 channel float format + FFX_API_SURFACE_FORMAT_R8G8B8A8_TYPELESS, ///< 8 bit per channel, 4 channel typeless format + FFX_API_SURFACE_FORMAT_R8G8B8A8_UNORM, ///< 8 bit per channel, 4 channel unsigned normalized format + FFX_API_SURFACE_FORMAT_R8G8B8A8_SNORM, ///< 8 bit per channel, 4 channel signed normalized format + FFX_API_SURFACE_FORMAT_R8G8B8A8_SRGB, ///< 8 bit per channel, 4 channel srgb normalized + FFX_API_SURFACE_FORMAT_B8G8R8A8_TYPELESS, ///< 8 bit per channel, 4 channel typeless format + FFX_API_SURFACE_FORMAT_B8G8R8A8_UNORM, ///< 8 bit per channel, 4 channel unsigned normalized format + FFX_API_SURFACE_FORMAT_B8G8R8A8_SRGB, ///< 8 bit per channel, 4 channel srgb normalized + FFX_API_SURFACE_FORMAT_R11G11B10_FLOAT, ///< 32 bit 3 channel float format + FFX_API_SURFACE_FORMAT_R10G10B10A2_UNORM, ///< 10 bit per 3 channel, 2 bit for 1 channel normalized format + FFX_API_SURFACE_FORMAT_R16G16_FLOAT, ///< 16 bit per channel, 2 channel float format + FFX_API_SURFACE_FORMAT_R16G16_UINT, ///< 16 bit per channel, 2 channel unsigned int format + FFX_API_SURFACE_FORMAT_R16G16_SINT, ///< 16 bit per channel, 2 channel signed int format + FFX_API_SURFACE_FORMAT_R16_FLOAT, ///< 16 bit per channel, 1 channel float format + FFX_API_SURFACE_FORMAT_R16_UINT, ///< 16 bit per channel, 1 channel unsigned int format + FFX_API_SURFACE_FORMAT_R16_UNORM, ///< 16 bit per channel, 1 channel unsigned normalized format + FFX_API_SURFACE_FORMAT_R16_SNORM, ///< 16 bit per channel, 1 channel signed normalized format + FFX_API_SURFACE_FORMAT_R8_UNORM, ///< 8 bit per channel, 1 channel unsigned normalized format + FFX_API_SURFACE_FORMAT_R8G8_UNORM, ///< 8 bit per channel, 2 channel unsigned normalized format + FFX_API_SURFACE_FORMAT_R8G8_UINT, ///< 8 bit per channel, 2 channel unsigned integer format + FFX_API_SURFACE_FORMAT_R32_FLOAT, ///< 32 bit per channel, 1 channel float format + FFX_API_SURFACE_FORMAT_R9G9B9E5_SHAREDEXP, ///< 9 bit per channel, 5 bit exponent format + + FFX_API_SURFACE_FORMAT_R16G16B16A16_TYPELESS, ///< 16 bit per channel, 4 channel typeless format + FFX_API_SURFACE_FORMAT_R32G32_TYPELESS, ///< 32 bit per channel, 2 channel typeless format + FFX_API_SURFACE_FORMAT_R10G10B10A2_TYPELESS, ///< 10 bit per 3 channel, 2 bit for 1 channel typeless format + FFX_API_SURFACE_FORMAT_R16G16_TYPELESS, ///< 16 bit per channel, 2 channel typless format + FFX_API_SURFACE_FORMAT_R16_TYPELESS, ///< 16 bit per channel, 1 channel typeless format + FFX_API_SURFACE_FORMAT_R8_TYPELESS, ///< 8 bit per channel, 1 channel typeless format + FFX_API_SURFACE_FORMAT_R8G8_TYPELESS, ///< 8 bit per channel, 2 channel typeless format + FFX_API_SURFACE_FORMAT_R32_TYPELESS, ///< 32 bit per channel, 1 channel typeless format + FFX_API_SURFACE_FORMAT_R32G32_UINT, ///< 32 bit per channel, 2 channel uint format + + FFX_API_SURFACE_FORMAT_R8_SNORM, ///< 8 bit per channel, 1 channel signed normalized format +}; + +/// An enumeration of resource usage. +enum FfxApiResourceUsage +{ + FFX_API_RESOURCE_USAGE_READ_ONLY = 0, ///< No usage flags indicate a resource is read only. + FFX_API_RESOURCE_USAGE_RENDERTARGET = (1<<0), ///< Indicates a resource will be used as render target. + FFX_API_RESOURCE_USAGE_UAV = (1<<1), ///< Indicates a resource will be used as UAV. + FFX_API_RESOURCE_USAGE_DEPTHTARGET = (1<<2), ///< Indicates a resource will be used as depth target. + FFX_API_RESOURCE_USAGE_INDIRECT = (1<<3), ///< Indicates a resource will be used as indirect argument buffer + FFX_API_RESOURCE_USAGE_ARRAYVIEW = (1<<4), ///< Indicates a resource that will generate array views. Works on 2D and cubemap textures + FFX_API_RESOURCE_USAGE_STENCILTARGET = (1<<5), ///< Indicates a resource will be used as stencil target. + + FFX_API_RESOURCE_USAGE_DCC_RENDERTARGET = (1<<15), ///< Indicates a resource that should specify optimal render target memory access flags (for console use) +}; + + +/// An enumeration of resource states. +enum FfxApiResourceState +{ + FFX_API_RESOURCE_STATE_COMMON = (1 << 0), + FFX_API_RESOURCE_STATE_UNORDERED_ACCESS = (1 << 1), ///< Indicates a resource is in the state to be used as UAV. + FFX_API_RESOURCE_STATE_COMPUTE_READ = (1 << 2), ///< Indicates a resource is in the state to be read by compute shaders. + FFX_API_RESOURCE_STATE_PIXEL_READ = (1 << 3), ///< Indicates a resource is in the state to be read by pixel shaders. + FFX_API_RESOURCE_STATE_PIXEL_COMPUTE_READ = (FFX_API_RESOURCE_STATE_PIXEL_READ | FFX_API_RESOURCE_STATE_COMPUTE_READ), ///< Indicates a resource is in the state to be read by pixel or compute shaders. + FFX_API_RESOURCE_STATE_COPY_SRC = (1 << 4), ///< Indicates a resource is in the state to be used as source in a copy command. + FFX_API_RESOURCE_STATE_COPY_DEST = (1 << 5), ///< Indicates a resource is in the state to be used as destination in a copy command. + FFX_API_RESOURCE_STATE_GENERIC_READ = (FFX_API_RESOURCE_STATE_COPY_SRC | FFX_API_RESOURCE_STATE_COMPUTE_READ), ///< Indicates a resource is in generic (slow) read state. + FFX_API_RESOURCE_STATE_INDIRECT_ARGUMENT = (1 << 6), ///< Indicates a resource is in the state to be used as an indirect command argument + FFX_API_RESOURCE_STATE_PRESENT = (1 << 7), ///< Indicates a resource is in the state to be used to present to the swap chain + FFX_API_RESOURCE_STATE_RENDER_TARGET = (1 << 8), ///< Indicates a resource is in the state to be used as render target + FFX_API_RESOURCE_STATE_DEPTH_ATTACHMENT = (1 << 9), ///< Indicates a resource is in the state to be used as depth attachment +}; + +/// An enumeration of surface dimensions. +enum FfxApiResourceDimension +{ + FFX_API_RESOURCE_DIMENSION_TEXTURE_1D, ///< A resource with a single dimension. + FFX_API_RESOURCE_DIMENSION_TEXTURE_2D, ///< A resource with two dimensions. +}; + +/// An enumeration of resource flags. +enum FfxApiResourceFlags +{ + FFX_API_RESOURCE_FLAGS_NONE = 0, ///< No flags. + FFX_API_RESOURCE_FLAGS_ALIASABLE = (1 << 0), ///< A bit indicating a resource does not need to persist across frames. + FFX_API_RESOURCE_FLAGS_UNDEFINED = (1 << 1), ///< Special case flag used internally when importing resources that require additional setup +}; + +// An enumeration for different resource types +enum FfxApiResourceType +{ + FFX_API_RESOURCE_TYPE_BUFFER, ///< The resource is a buffer. + FFX_API_RESOURCE_TYPE_TEXTURE1D, ///< The resource is a 1-dimensional texture. + FFX_API_RESOURCE_TYPE_TEXTURE2D, ///< The resource is a 2-dimensional texture. + FFX_API_RESOURCE_TYPE_TEXTURE_CUBE, ///< The resource is a cube map. + FFX_API_RESOURCE_TYPE_TEXTURE3D, ///< The resource is a 3-dimensional texture. +}; + +enum FfxApiBackbufferTransferFunction +{ + FFX_API_BACKBUFFER_TRANSFER_FUNCTION_SRGB, + FFX_API_BACKBUFFER_TRANSFER_FUNCTION_PQ, + FFX_API_BACKBUFFER_TRANSFER_FUNCTION_SCRGB +}; + +/// A structure encapsulating a 2-dimensional point, using 32bit unsigned integers. +struct FfxApiDimensions2D +{ + uint32_t width; ///< The width of a 2-dimensional range. + uint32_t height; ///< The height of a 2-dimensional range. +}; + +/// A structure encapsulating a 2-dimensional set of floating point coordinates. +struct FfxApiFloatCoords2D +{ + float x; ///< The x coordinate of a 2-dimensional point. + float y; ///< The y coordinate of a 2-dimensional point. +}; + +/// A structure encapsulating a 3-dimensional set of floating point coordinates. +struct FfxApiFloatCoords3D +{ + float x; ///< The x coordinate of a 3-dimensional point. + float y; ///< The y coordinate of a 3-dimensional point. + float z; ///< The z coordinate of a 3-dimensional point. +}; + +/// A structure encapsulating a 2-dimensional rect. +struct FfxApiRect2D +{ + int32_t left; + int32_t top; + int32_t width; + int32_t height; +}; + +/// A structure describing a resource. +/// +/// @ingroup SDKTypes +struct FfxApiResourceDescription +{ + uint32_t type; ///< The type of the resource. + uint32_t format; ///< The surface format. + union { + uint32_t width; ///< The width of the texture resource. + uint32_t size; ///< The size of the buffer resource. + }; + + union { + uint32_t height; ///< The height of the texture resource. + uint32_t stride; ///< The stride of the buffer resource. + }; + + union { + uint32_t depth; ///< The depth of the texture resource. + uint32_t alignment; ///< The alignment of the buffer resource. + }; + + uint32_t mipCount; ///< Number of mips (or 0 for full mipchain). + uint32_t flags; ///< A set of resource flags. + uint32_t usage; ///< Resource usage flags. +}; + +#define FFX_RESOURCE_NAME_SIZE 64 + +struct FfxApiResource +{ + void* resource; + struct FfxApiResourceDescription description; + uint32_t state; +}; + +//struct definition matches FfxApiEffectMemoryUsage +typedef struct FfxApiEffectMemoryUsage +{ + uint64_t totalUsageInBytes; + uint64_t aliasableUsageInBytes; +} FfxApiEffectMemoryUsage; + +/// A structure describing a constant buffer allocation. +/// +/// @ingroup SDKTypes +typedef struct FfxApiConstantBufferAllocation +{ + struct FfxApiResource resource; ///< The resource representing the constant buffer resource. + uint64_t handle; ///< The binding handle for the constant buffer + +} FfxApiConstantBufferAllocation; + +/// A function definition for a constant buffer allocation callback +/// Used to provide a constant buffer allocator to the calling backend +/// +/// @param [in] data The constant buffer data. +/// @param [in] dataSize The size of the constant buffer data. +/// +/// @ingroup SDKTypes +typedef FfxApiConstantBufferAllocation(*FfxApiConstantBufferAllocator)(void* data, const uint64_t dataSize); + +/// A 4-component floating point vector +typedef struct FfxApiFloat4 +{ + float x; + float y; + float z; + float w; +} FfxApiFloat4; + +/// A 4x4 matrix in row-major layout with row-vector convention. +/// This is the canonical format expected by FFX APIs. +/// +/// Memory layout: rows[row_index][column_index] +/// Mathematical convention: v * M (row vector multiplied by matrix) +typedef struct FfxApiMatrix4x4 +{ + FfxApiFloat4 rows[4]; ///< Four rows of the matrix. Access as rows[row].x, rows[row].y etc. +} FfxApiMatrix4x4; + +/// An inclusive floating-point interval [min, max]. +/// Valid instances must satisfy min <= max. +typedef struct FfxApiFloatBounds +{ + float min; ///< Lower bound of the interval. + float max; ///< Upper bound of the interval. +} FfxApiFloatBounds; diff --git a/third_party/fidelityfx/api/include/vk/ffx_api_vk.h b/third_party/fidelityfx/api/include/vk/ffx_api_vk.h new file mode 100644 index 000000000..1bbe1d9e4 --- /dev/null +++ b/third_party/fidelityfx/api/include/vk/ffx_api_vk.h @@ -0,0 +1,308 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2026 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#pragma once +#include "../ffx_api.h" +#include "../ffx_api_types.h" +#include + +/// FFX specific callback type when submitting a command buffer to a queue. +typedef VkResult(*PFN_vkQueueSubmitFFXAPI)(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); + +/// Helper stucture +struct VkQueueInfoFFXAPI +{ + VkQueue queue; ///< the vulkan queue + uint32_t familyIndex; ///< the queue family index, that will be used to perform queue family ownership transfer + PFN_vkQueueSubmitFFXAPI submitFunc; ///< an optional submit function in case there might be some concurrent submissions +}; + +// We need to keep this one alive because of VK verison of FSR3.1.4 +// Deprecated version of the VK backend create context descriptor, please use the non-deprecated version below. +#define FFX_API_CREATE_CONTEXT_DESC_TYPE_BACKEND_VK_DEPRECATED 0x0000003u +struct ffxCreateBackendVKDesc_DEPRECATED +{ + ffxCreateContextDescHeader header; + VkDevice vkDevice; ///< the logical device used by the program. + VkPhysicalDevice vkPhysicalDevice; ///< the physical device used by the program. + PFN_vkGetDeviceProcAddr vkDeviceProcAddr; ///< function pointer to get device procedure addresses +}; + +/// Convenience structure to hold all VK-related device information. +typedef struct VkDeviceContext { + VkDevice vkDevice; ///< The Vulkan device + VkPhysicalDevice vkPhysicalDevice; ///< The Vulkan physical device + PFN_vkGetDeviceProcAddr vkDeviceProcAddr; ///< The device's function address table +} VkDeviceContext; + +#define FFX_API_CREATE_CONTEXT_DESC_TYPE_BACKEND_VK FFX_API_MAKE_BACKEND_SUB_ID(FFX_API_BACKEND_ID_VK, 0x03) +struct ffxCreateBackendVKDesc +{ + ffxCreateContextDescHeader header; + VkDeviceContext deviceContext; ///< the VK device information used by the program. +}; + +/// Resource allocation callback function. (TODO) +typedef ffxReturnCode_t(*PfnFfxResourceAllocatorFunc)(uint32_t effectId/*, + D3D12_RESOURCE_STATES initialState, + const D3D12_HEAP_PROPERTIES* pHeapProps, + const D3D12_RESOURCE_DESC* pD3DDesc, + const FfxApiResourceDescription* pFfxDesc, + const D3D12_CLEAR_VALUE* pOptimizedClear, + ID3D12Resource** ppD3DResource*/); + +/// Resource destruction callback function. (TODO) +typedef ffxReturnCode_t(*PfnFfxResourceDeallocatorFunc)(uint32_t effectId/*, ID3D12Resource* pResource*/); + +#define FFX_API_CREATE_CONTEXT_DESC_TYPE_BACKEND_VK_ALLOCATION_CALLBACKS FFX_API_MAKE_BACKEND_SUB_ID(FFX_API_BACKEND_ID_VK, 0x04) +struct ffxCreateBackendVKAllocationCallbacksDesc +{ + ffxCreateContextDescHeader header; + PfnFfxResourceAllocatorFunc pfnFfxResourceAllocator; ///< Resource allocation function (can be null) <------- NOT IMPL YET, SEE DX12/XBOX IMPL + PfnFfxResourceDeallocatorFunc pfnFfxResourceDeallocator; ///< Resource deallocation function (can be null) <------- NOT IMPL YET, SEE DX12/XBOX IMPL + FfxApiConstantBufferAllocator pfnFfxConstantBufferAllocator; ///< Constant buffer allocation function (can be null) +}; + +#if defined(__cplusplus) + +static inline uint32_t ffxApiGetSurfaceFormatVK(VkFormat fmt) +{ + switch (fmt) + { + case VK_FORMAT_R32G32B32A32_SFLOAT: + return FFX_API_SURFACE_FORMAT_R32G32B32A32_FLOAT; + case VK_FORMAT_R32G32B32_SFLOAT: + return FFX_API_SURFACE_FORMAT_R32G32B32_FLOAT; + case VK_FORMAT_R32G32B32A32_UINT: + return FFX_API_SURFACE_FORMAT_R32G32B32A32_UINT; + case VK_FORMAT_R16G16B16A16_SFLOAT: + return FFX_API_SURFACE_FORMAT_R16G16B16A16_FLOAT; + case VK_FORMAT_R32G32_SFLOAT: + return FFX_API_SURFACE_FORMAT_R32G32_FLOAT; + case VK_FORMAT_R32_UINT: + case VK_FORMAT_D24_UNORM_S8_UINT: + case VK_FORMAT_X8_D24_UNORM_PACK32: + return FFX_API_SURFACE_FORMAT_R32_UINT; + case VK_FORMAT_R8G8B8A8_UNORM: + return FFX_API_SURFACE_FORMAT_R8G8B8A8_UNORM; + case VK_FORMAT_R8G8B8A8_SNORM: + return FFX_API_SURFACE_FORMAT_R8G8B8A8_SNORM; + case VK_FORMAT_R8G8B8A8_SRGB: + return FFX_API_SURFACE_FORMAT_R8G8B8A8_SRGB; + case VK_FORMAT_B8G8R8A8_UNORM: + return FFX_API_SURFACE_FORMAT_B8G8R8A8_UNORM; + case VK_FORMAT_B8G8R8A8_SRGB: + return FFX_API_SURFACE_FORMAT_B8G8R8A8_SRGB; + case VK_FORMAT_B10G11R11_UFLOAT_PACK32: + return FFX_API_SURFACE_FORMAT_R11G11B10_FLOAT; + case VK_FORMAT_A2B10G10R10_UNORM_PACK32: + return FFX_API_SURFACE_FORMAT_R10G10B10A2_UNORM; + case VK_FORMAT_R16G16_SFLOAT: + return FFX_API_SURFACE_FORMAT_R16G16_FLOAT; + case VK_FORMAT_R16G16_UINT: + return FFX_API_SURFACE_FORMAT_R16G16_UINT; + case VK_FORMAT_R16G16_SINT: + return FFX_API_SURFACE_FORMAT_R16G16_SINT; + case VK_FORMAT_R16_SFLOAT: + return FFX_API_SURFACE_FORMAT_R16_FLOAT; + case VK_FORMAT_R16_UINT: + return FFX_API_SURFACE_FORMAT_R16_UINT; + case VK_FORMAT_R16_UNORM: + case VK_FORMAT_D16_UNORM: + case VK_FORMAT_D16_UNORM_S8_UINT: + return FFX_API_SURFACE_FORMAT_R16_UNORM; + case VK_FORMAT_R16_SNORM: + return FFX_API_SURFACE_FORMAT_R16_SNORM; + case VK_FORMAT_R8_UNORM: + return FFX_API_SURFACE_FORMAT_R8_UNORM; + case VK_FORMAT_R8_SNORM: + return FFX_API_SURFACE_FORMAT_R8_SNORM; + case VK_FORMAT_R8_UINT: + case VK_FORMAT_S8_UINT: + return FFX_API_SURFACE_FORMAT_R8_UINT; + case VK_FORMAT_R8G8_UNORM: + return FFX_API_SURFACE_FORMAT_R8G8_UNORM; + case VK_FORMAT_R8G8_UINT: + return FFX_API_SURFACE_FORMAT_R8G8_UINT; + case VK_FORMAT_R32_SFLOAT: + case VK_FORMAT_D32_SFLOAT: + case VK_FORMAT_D32_SFLOAT_S8_UINT: + return FFX_API_SURFACE_FORMAT_R32_FLOAT; + case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: + return FFX_API_SURFACE_FORMAT_R9G9B9E5_SHAREDEXP; + case VK_FORMAT_UNDEFINED: + return FFX_API_SURFACE_FORMAT_UNKNOWN; + + default: + // NOTE: we do not support typeless formats here + //FFX_ASSERT_MESSAGE(false, "Format not yet supported"); + return FFX_API_SURFACE_FORMAT_UNKNOWN; + } +} + +static inline uint32_t ffxApiGetSurfaceFormatToGamma(uint32_t fmt) +{ + switch (fmt) + { + case (FFX_API_SURFACE_FORMAT_R8G8B8A8_UNORM): + return FFX_API_SURFACE_FORMAT_R8G8B8A8_SRGB; + case (FFX_API_SURFACE_FORMAT_B8G8R8A8_UNORM): + return FFX_API_SURFACE_FORMAT_B8G8R8A8_SRGB; + default: + return fmt; + } +} + +static inline bool ffxApiIsDepthFormat(VkFormat fmt) +{ + switch (fmt) + { + case VK_FORMAT_D16_UNORM: + case VK_FORMAT_X8_D24_UNORM_PACK32: + case VK_FORMAT_D32_SFLOAT: + case VK_FORMAT_D16_UNORM_S8_UINT: + case VK_FORMAT_D24_UNORM_S8_UINT: + case VK_FORMAT_D32_SFLOAT_S8_UINT: + return true; + + default: + return false; + } +} + +static inline bool ffxApiIsStencilFormat(VkFormat fmt) +{ + switch (fmt) + { + case VK_FORMAT_S8_UINT: + case VK_FORMAT_D16_UNORM_S8_UINT: + case VK_FORMAT_D24_UNORM_S8_UINT: + case VK_FORMAT_D32_SFLOAT_S8_UINT: + return true; + + default: + return false; + } +} + +static inline FfxApiResourceDescription ffxApiGetBufferResourceDescriptionVK(const VkBuffer buffer, + const VkBufferCreateInfo createInfo, + uint32_t additionalUsages) +{ + FfxApiResourceDescription resourceDescription = {}; + + // This is valid + if (buffer == VK_NULL_HANDLE) + return resourceDescription; + + resourceDescription.flags = FFX_API_RESOURCE_FLAGS_NONE; + resourceDescription.usage = additionalUsages; + resourceDescription.size = (uint32_t)createInfo.size; + resourceDescription.stride = 0; + resourceDescription.format = FFX_API_SURFACE_FORMAT_UNKNOWN; + + if ((createInfo.usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) != 0) + resourceDescription.usage |= FFX_API_RESOURCE_USAGE_UAV; + if ((createInfo.usage & VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT) != 0) + resourceDescription.usage |= FFX_API_RESOURCE_USAGE_INDIRECT; + + // What should we initialize this to?? No case for this yet + resourceDescription.depth = 0; + resourceDescription.mipCount = 0; + + // Set the type + resourceDescription.type = FFX_API_RESOURCE_TYPE_BUFFER; + + return resourceDescription; +} + +static inline FfxApiResourceDescription ffxApiGetImageResourceDescriptionVK(const VkImage image, const VkImageCreateInfo createInfo, uint32_t additionalUsages) +{ + FfxApiResourceDescription resourceDescription = {}; + + // This is valid + if (image == VK_NULL_HANDLE) + return resourceDescription; + + // Set flags properly for resource registration + resourceDescription.flags = FFX_API_RESOURCE_FLAGS_NONE; + resourceDescription.usage = FFX_API_RESOURCE_USAGE_READ_ONLY; + + // Check for depth stencil use + if (ffxApiIsDepthFormat(createInfo.format)) + resourceDescription.usage |= FFX_API_RESOURCE_USAGE_DEPTHTARGET; + if (ffxApiIsStencilFormat(createInfo.format)) + resourceDescription.usage |= FFX_API_RESOURCE_USAGE_STENCILTARGET; + + // Unordered access use + if ((createInfo.usage & VK_IMAGE_USAGE_STORAGE_BIT) != 0) + resourceDescription.usage |= FFX_API_RESOURCE_USAGE_UAV; + + // Resource-specific supplemental use flags + resourceDescription.usage |= additionalUsages; + + resourceDescription.width = createInfo.extent.width; + resourceDescription.height = createInfo.extent.height; + resourceDescription.mipCount = createInfo.mipLevels; + resourceDescription.format = ffxApiGetSurfaceFormatVK(createInfo.format); + + // if the mutable flag is present, assume that the real format is sRGB + if ((createInfo.flags & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT) != 0) + resourceDescription.format = ffxApiGetSurfaceFormatToGamma(resourceDescription.format); + + switch (createInfo.imageType) + { + case VK_IMAGE_TYPE_1D: + resourceDescription.type = FFX_API_RESOURCE_TYPE_TEXTURE1D; + break; + case VK_IMAGE_TYPE_2D: + resourceDescription.depth = createInfo.arrayLayers; + if ((additionalUsages & FFX_API_RESOURCE_USAGE_ARRAYVIEW) != 0) + resourceDescription.type = FFX_API_RESOURCE_TYPE_TEXTURE2D; + else if ((createInfo.flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) != 0) + resourceDescription.type = FFX_API_RESOURCE_TYPE_TEXTURE_CUBE; + else + resourceDescription.type = FFX_API_RESOURCE_TYPE_TEXTURE2D; + break; + case VK_IMAGE_TYPE_3D: + resourceDescription.depth = createInfo.extent.depth; + resourceDescription.type = FFX_API_RESOURCE_TYPE_TEXTURE3D; + break; + default: + //FFX_ASSERT_MESSAGE(false, "FFXInterface: VK: Unsupported texture dimension requested. Please implement."); + break; + } + + return resourceDescription; +} + +static inline FfxApiResource ffxApiGetResourceVK(void* vkResource, FfxApiResourceDescription ffxResDescription, uint32_t state) +{ + FfxApiResource resource = {}; + resource.resource = vkResource; + resource.state = state; + resource.description = ffxResDescription; + + return resource; +} + +#endif diff --git a/third_party/fidelityfx/upscalers/include/ffx_upscale.h b/third_party/fidelityfx/upscalers/include/ffx_upscale.h new file mode 100644 index 000000000..9d4a3e5f6 --- /dev/null +++ b/third_party/fidelityfx/upscalers/include/ffx_upscale.h @@ -0,0 +1,230 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2026 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#pragma once +#include "../../api/include/ffx_api.h" +#include "../../api/include/ffx_api_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define FFX_UPSCALER_VERSION_MAJOR 4 +#define FFX_UPSCALER_VERSION_MINOR 1 +#define FFX_UPSCALER_VERSION_PATCH 2 + +#define FFX_UPSCALER_MAKE_VERSION(major, minor, patch) (((major) << 22) | ((minor) << 12) | (patch)) +#define FFX_UPSCALER_VERSION FFX_UPSCALER_MAKE_VERSION(FFX_UPSCALER_VERSION_MAJOR, FFX_UPSCALER_VERSION_MINOR, FFX_UPSCALER_VERSION_PATCH) + +enum FfxApiUpscaleQualityMode +{ + FFX_UPSCALE_QUALITY_MODE_NATIVEAA = 0, ///< Perform upscaling with a per-dimension upscaling ratio of 1.0x. + FFX_UPSCALE_QUALITY_MODE_QUALITY = 1, ///< Perform upscaling with a per-dimension upscaling ratio of 1.5x. + FFX_UPSCALE_QUALITY_MODE_BALANCED = 2, ///< Perform upscaling with a per-dimension upscaling ratio of 1.7x. + FFX_UPSCALE_QUALITY_MODE_PERFORMANCE = 3, ///< Perform upscaling with a per-dimension upscaling ratio of 2.0x. + FFX_UPSCALE_QUALITY_MODE_ULTRA_PERFORMANCE = 4 ///< Perform upscaling with a per-dimension upscaling ratio of 3.0x. +}; + +enum FfxApiCreateContextUpscaleFlags +{ + FFX_UPSCALE_ENABLE_HIGH_DYNAMIC_RANGE = (1 << 0), ///< A bit indicating if the input color data provided is using a high-dynamic range. + FFX_UPSCALE_ENABLE_DISPLAY_RESOLUTION_MOTION_VECTORS = (1 << 1), ///< A bit indicating if the motion vectors are rendered at display resolution. + FFX_UPSCALE_ENABLE_MOTION_VECTORS_JITTER_CANCELLATION = (1 << 2), ///< A bit indicating that the motion vectors have the jittering pattern applied to them. + FFX_UPSCALE_ENABLE_DEPTH_INVERTED = (1 << 3), ///< A bit indicating that the input depth buffer data provided is inverted [1..0]. + FFX_UPSCALE_ENABLE_DEPTH_INFINITE = (1 << 4), ///< A bit indicating that the input depth buffer data provided is using an infinite far plane. + FFX_UPSCALE_ENABLE_AUTO_EXPOSURE = (1 << 5), ///< A bit indicating if automatic exposure should be applied to input color data. + FFX_UPSCALE_ENABLE_DYNAMIC_RESOLUTION = (1 << 6), ///< A bit indicating that the application uses dynamic resolution scaling. + FFX_UPSCALE_ENABLE_DEBUG_CHECKING = (1 << 7), ///< A bit indicating that the runtime should check some API values and report issues. + FFX_UPSCALE_ENABLE_NON_LINEAR_COLORSPACE = (1 << 8), ///< A bit indicating that the color resource contains perceptual (gamma corrected) colors + FFX_UPSCALE_ENABLE_DEBUG_VISUALIZATION = (1 << 9), ///< A bit indicating if debug visualization is allowed. (memory consumption could increase) +}; + +enum FfxApiDispatchFsrUpscaleFlags +{ + FFX_UPSCALE_FLAG_DRAW_DEBUG_VIEW = (1 << 0), ///< A bit indicating that the output resource will contain debug views with relevant information. + FFX_UPSCALE_FLAG_NON_LINEAR_COLOR_SRGB = (1 << 1), ///< A bit indicating that the input color resource contains perceptual sRGB colors + FFX_UPSCALE_FLAG_NON_LINEAR_COLOR_PQ = (1 << 2), ///< A bit indicating that the input color resource contains perceptual PQ colors +}; + +enum FfxApiDispatchUpscaleAutoreactiveFlags +{ + FFX_UPSCALE_AUTOREACTIVEFLAGS_APPLY_TONEMAP = (1 << 0), ///< Apply tonemapping function prior to calculating reactivity. + FFX_UPSCALE_AUTOREACTIVEFLAGS_APPLY_INVERSETONEMAP = (1 << 1), ///< Apply inverse tonemapping function prior to calculating reactivity. + FFX_UPSCALE_AUTOREACTIVEFLAGS_APPLY_THRESHOLD = (1 << 2), ///< Compare to a threshold value and only record reactivity above the threshold. + FFX_UPSCALE_AUTOREACTIVEFLAGS_USE_COMPONENTS_MAX = (1 << 3), ///< When enabled use the max. component value, otherwise use the length to calculate reactivity. +}; + +#define FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x00) +struct ffxCreateContextDescUpscale +{ + ffxCreateContextDescHeader header; ///< Header descriptor, use type FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE. + uint32_t flags; ///< Zero or a combination of values from FfxApiCreateContextUpscaleFlags. + struct FfxApiDimensions2D maxRenderSize; ///< The maximum size that rendering will be performed at. + struct FfxApiDimensions2D maxUpscaleSize; ///< The size of the presentation resolution targeted by the upscaling process. + ffxApiMessage fpMessage; ///< A pointer to a function that can receive messages from the runtime. May be null. +}; + +#define FFX_API_DISPATCH_DESC_TYPE_UPSCALE FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x01) +struct ffxDispatchDescUpscale +{ + ffxDispatchDescHeader header; ///< Header descriptor, use type FFX_API_DISPATCH_DESC_TYPE_UPSCALE. + void* commandList; ///< Command list to record upscaling rendering commands into. + struct FfxApiResource color; ///< Color buffer for the current frame (at render resolution). + struct FfxApiResource depth; ///< 32bit depth values for the current frame (at render resolution). + struct FfxApiResource motionVectors; ///< 2-dimensional motion vectors (at render resolution if FFX_FSR_ENABLE_DISPLAY_RESOLUTION_MOTION_VECTORS is not set). + struct FfxApiResource exposure; ///< Optional resource containing a 1x1 exposure value. + struct FfxApiResource reactive; ///< Optional resource containing alpha value of reactive objects in the scene. + struct FfxApiResource transparencyAndComposition; ///< Optional resource containing alpha value of special objects in the scene. + struct FfxApiResource output; ///< Output color buffer for the current frame (at presentation resolution). + struct FfxApiFloatCoords2D jitterOffset; ///< The subpixel jitter offset applied to the camera. + struct FfxApiFloatCoords2D motionVectorScale; ///< The scale factor to convert motion vectors to pixel space. Internally: pixelSpaceMV = motionVector * motionVectorScale. Set to renderSize if motion vectors are in UV space [0,1], or to (1.0, 1.0) if motion vectors are already in pixel space. When using display-resolution motion vectors, set to displaySize. + struct FfxApiDimensions2D renderSize; ///< The resolution that was used for rendering the input resources. + struct FfxApiDimensions2D upscaleSize; ///< The resolution that the upscaler will upscale to (optional, assumed maxUpscaleSize otherwise). + bool enableSharpening; ///< Enable an additional sharpening pass. + float sharpness; ///< The sharpness value between 0 and 1, where 0 is no additional sharpness and 1 is maximum additional sharpness. + float frameTimeDelta; ///< The time elapsed since the last frame (expressed in milliseconds). + float preExposure; ///< The pre exposure value (must be > 0.0f) + bool reset; ///< A boolean value which when set to true, indicates the camera has moved discontinuously. + float cameraNear; ///< The distance to the near plane of the camera. + float cameraFar; ///< The distance to the far plane of the camera. + float cameraFovAngleVertical; ///< The camera angle field of view in the vertical direction (expressed in radians). + float viewSpaceToMetersFactor; ///< The scale factor to convert view space units to meters + uint32_t flags; ///< Zero or a combination of values from FfxApiDispatchFsrUpscaleFlags. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GETUPSCALERATIOFROMQUALITYMODE FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x02) +struct ffxQueryDescUpscaleGetUpscaleRatioFromQualityMode +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GETUPSCALERATIOFROMQUALITYMODE. + uint32_t qualityMode; ///< The desired quality mode for FSR upscaling. + float* pOutUpscaleRatio; ///< A pointer to a float which will hold the upscaling the per-dimension upscaling ratio. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GETRENDERRESOLUTIONFROMQUALITYMODE FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x03) +struct ffxQueryDescUpscaleGetRenderResolutionFromQualityMode +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GETRENDERRESOLUTIONFROMQUALITYMODE. + uint32_t displayWidth; ///< The target display resolution width. + uint32_t displayHeight; ///< The target display resolution height. + uint32_t qualityMode; ///< The desired quality mode for FSR upscaling. + uint32_t* pOutRenderWidth; ///< A pointer to a uint32_t which will hold the calculated render resolution width. + uint32_t* pOutRenderHeight; ///< A pointer to a uint32_t which will hold the calculated render resolution height. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GETJITTERPHASECOUNT FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x04) +struct ffxQueryDescUpscaleGetJitterPhaseCount +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GETJITTERPHASECOUNT. + uint32_t renderWidth; ///< The render resolution width. + uint32_t displayWidth; ///< The output resolution width. + int32_t* pOutPhaseCount; ///< A pointer to a int32_t which will hold the jitter phase count for the scaling factor between renderWidth and displayWidth. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GETJITTEROFFSET FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x05) +struct ffxQueryDescUpscaleGetJitterOffset +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GETJITTEROFFSET. + int32_t index; ///< The index within the jitter sequence. + int32_t phaseCount; ///< The length of jitter phase. See ffxQueryDescFsrGetJitterPhaseCount. + float* pOutX; ///< A pointer to a float which will contain the subpixel jitter offset for the x dimension. + float* pOutY; ///< A pointer to a float which will contain the subpixel jitter offset for the y dimension. +}; + +#define FFX_API_DISPATCH_DESC_TYPE_UPSCALE_GENERATEREACTIVEMASK FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x06) +struct ffxDispatchDescUpscaleGenerateReactiveMask +{ + ffxDispatchDescHeader header; ///< Header descriptor, use type FFX_API_DISPATCH_DESC_TYPE_UPSCALE_GENERATEREACTIVEMASK. + void* commandList; ///< The FfxCommandList to record FSRUPSCALE rendering commands into. + struct FfxApiResource colorOpaqueOnly; ///< A FfxApiResource containing the opaque only color buffer for the current frame (at render resolution). + struct FfxApiResource colorPreUpscale; ///< A FfxApiResource containing the opaque+translucent color buffer for the current frame (at render resolution). + struct FfxApiResource outReactive; ///< A FfxApiResource containing the surface to generate the reactive mask into. + struct FfxApiDimensions2D renderSize; ///< The resolution that was used for rendering the input resources. + float scale; ///< A value to scale the output + float cutoffThreshold; ///< A threshold value to generate a binary reactive mask + float binaryValue; ///< A value to set for the binary reactive mask + uint32_t flags; ///< Flags to determine how to generate the reactive mask +}; + +#define FFX_API_CONFIGURE_DESC_TYPE_UPSCALE_KEYVALUE FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x07) +struct ffxConfigureDescUpscaleKeyValue +{ + ffxConfigureDescHeader header; ///< Header descriptor, use type FFX_API_CONFIGURE_DESC_TYPE_UPSCALE_KEYVALUE. + uint64_t key; ///< Configuration key, member of the FfxApiConfigureUpscaleKey enumeration. + uint64_t u64; ///< Integer value or enum value to set. + void* ptr; ///< Pointer to set or pointer to value to set. +}; + +enum FfxApiConfigureUpscaleKey +{ + FFX_API_CONFIGURE_UPSCALE_KEY_FVELOCITYFACTOR = 0, ///< Override constant buffer fVelocityFactor. The float value is casted from void * ptr. Value of 0.0f can improve temporal stability of bright pixels. Default value is 1.0f. Value is clamped to [0.0f, 1.0f]. + FFX_API_CONFIGURE_UPSCALE_KEY_FREACTIVENESSSCALE = 1, ///< Override constant buffer fReactivenessScale. The float value is casted from void * ptr. Meant for development purpose to test if writing a larger value to reactive mask, reduces ghosting. Default value is 1.0f. Value is clamped to [0.0f, +infinity]. + FFX_API_CONFIGURE_UPSCALE_KEY_FSHADINGCHANGESCALE = 2, ///< Override fShadingChangeScale. Increasing this scales fsr3.1 computed shading change value at read to have higher reactiveness. Default value is 1.0f. Value is clamped to [0.0f, +infinity]. + FFX_API_CONFIGURE_UPSCALE_KEY_FACCUMULATIONADDEDPERFRAME = 3, ///< Override constant buffer fAccumulationAddedPerFrame. Corresponds to amount of accumulation added per frame at pixel coordinate where disocclusion occured or when reactive mask value is > 0.0f. Decreasing this and drawing the ghosting object (IE no mv) to reactive mask with value close to 1.0f can decrease temporal ghosting. Decreasing this value could result in more thin feature pixels flickering. Default value is 0.333. Value is clamped to [0.0f, 1.0f]. + FFX_API_CONFIGURE_UPSCALE_KEY_FMINDISOCCLUSIONACCUMULATION = 4, ///< Override constant buffer fMinDisocclusionAccumulation. Increasing this value may reduce white pixel temporal flickering around swaying thin objects that are disoccluding one another often. Too high value may increase ghosting. A sufficiently negative value means for pixel coordinate at frame N that is disoccluded, add fAccumulationAddedPerFrame starting at frame N+2. Default value is -0.333. Value is clamped to [-1.0f, 1.0f]. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GPU_MEMORY_USAGE FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x08) +struct ffxQueryDescUpscaleGetGPUMemoryUsage +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GPU_MEMORY_USAGE. + struct FfxApiEffectMemoryUsage* gpuMemoryUsageUpscaler; ///< Output values by Query() call. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GPU_MEMORY_USAGE_V2 FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x09) +struct ffxQueryDescUpscaleGetGPUMemoryUsageV2 +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GPU_MEMORY_USAGE_V2. + void* device; ///< For DX12: pointer to ID3D12Device. For VK, pointer to VkDeviceContext. App needs to fill out before Query() call. + struct FfxApiDimensions2D maxRenderSize; ///< App needs to fill out before Query() call. + struct FfxApiDimensions2D maxUpscaleSize; ///< App needs to fill out before Query() call. + uint32_t flags; ///< Zero or a combination of values from FfxApiCreateContextUpscaleFlags. App needs to fill out before Query() call. + struct FfxApiEffectMemoryUsage* gpuMemoryUsageUpscaler; ///< Output values by Query() call. +}; + +enum FfxApiQueryResourceIdentifiers +{ + FFX_API_QUERY_RESOURCE_INPUT_COLOR = (1 << 0), ///< Color buffer for the current frame (at render resolution). + FFX_API_QUERY_RESOURCE_INPUT_DEPTH = (1 << 1), ///< 32bit depth values for the current frame (at render resolution). + FFX_API_QUERY_RESOURCE_INPUT_MV = (1 << 2), ///< 2-dimensional motion vectors (at render resolution if FFX_FSR_ENABLE_DISPLAY_RESOLUTION_MOTION_VECTORS is not set). + FFX_API_QUERY_RESOURCE_INPUT_EXPOSURE = (1 << 3), ///< A 1x1 texture containing exposure value or the FFX_UPSCALE_ENABLE_AUTO_EXPOSURE set at context creation. + FFX_API_QUERY_RESOURCE_INPUT_REACTIVEMASK = (1 << 4), ///< An R8 UNORM texture at render resolution that controls the influence of pixel history on upscaling result. + FFX_API_QUERY_RESOURCE_INPUT_TRANSPARENCYCOMPOSITION = (1 << 5), ///< An R8 UNORM texture at render resolution that controls the blending of color in the upscaling result. +}; + +#define FFX_API_QUERY_DESC_TYPE_UPSCALE_GET_RESOURCE_REQUIREMENTS FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x0a) +struct ffxQueryDescUpscaleGetResourceRequirements +{ + ffxQueryDescHeader header; ///< Header descriptor, use type FFX_API_QUERY_DESC_TYPE_UPSCALE_GET_RESOURCE_REQUIREMENTS. + uint64_t required_resources; ///< resources 64b bitfield, that given current context state, are required for effect correctness. + uint64_t optional_resources; ///< resources 64b bitfield, that given current context state, will be consumed if provided, but are optional. +}; + +#define FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE_VERSION FFX_API_MAKE_EFFECT_SUB_ID(FFX_API_EFFECT_ID_UPSCALE, 0x0b) +struct ffxCreateContextDescUpscaleVersion +{ + ffxCreateContextDescHeader header; ///< Header descriptor, use type FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE_VERSION. + uint32_t version; ///< The version of the API the application was built against. This must be set to FFX_UPSCALER_VERSION. +}; + +#ifdef __cplusplus +} +#endif From 6b149bcf252587230678af7fcb601653c68ebd28 Mon Sep 17 00:00:00 2001 From: Jordan Date: Sun, 8 Nov 2026 23:48:57 +0000 Subject: [PATCH 03/13] FSR 4.1 review fixes: dynamic resolution, Linux build, barrier count, images given back - The FSR context is made with FFX_UPSCALE_ENABLE_DYNAMIC_RESOLUTION: the render size changes under it with the Resolution row and the game's dynamic resolution. - vk_fsr4.cpp is Windows only (AMD's signed runtime is), with stubs elsewhere: the Linux build has no LoadLibraryExA. - AMD's dispatches count as work (note_work, vk_work.h), so full_barrier does not leave out the barrier after them as a repeat. - dlss_image gives a replaced image back 120 presents later, as typed_upscale does with its histories, instead of keeping it: DLSS fixes the render size, but FSR can run with Resolution Auto. - The dlss_*.comp headers regenerated at SPIR-V 1.6, as #850 makes them. - readme: FSR 4 claims limited to what was tested (RX 6700 XT, INT8). Co-Authored-By: Claude Opus 5.5 --- gpu/vk/shaders/dlss_color_comp_spv.h | 158 ++++++++++----------- gpu/vk/shaders/dlss_motion_comp_spv.h | 193 +++++++++++++------------- gpu/vk/shaders/dlss_output_comp_spv.h | 125 +++++++++-------- gpu/vk/vk_draw.cpp | 13 +- gpu/vk/vk_fsr4.cpp | 25 +++- gpu/vk/vk_fsr4.h | 2 +- readme.md | 3 +- 7 files changed, 274 insertions(+), 245 deletions(-) diff --git a/gpu/vk/shaders/dlss_color_comp_spv.h b/gpu/vk/shaders/dlss_color_comp_spv.h index 8bb55be4d..f026db700 100644 --- a/gpu/vk/shaders/dlss_color_comp_spv.h +++ b/gpu/vk/shaders/dlss_color_comp_spv.h @@ -1,7 +1,7 @@ // 1116.2.0 #pragma once const uint32_t DLSS_COLOR_COMP_SPV[] = { - 0x07230203,0x00010500,0x0008000b,0x0000007d,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010600,0x0008000b,0x0000007d,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, 0x00000000,0x00000001,0x0009000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d, 0x00000016,0x00000023,0x0000003f,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008, @@ -16,82 +16,82 @@ const uint32_t DLSS_COLOR_COMP_SPV[] = { 0x00000016,0x00000022,0x00000000,0x00030047,0x00000021,0x00000002,0x00050048,0x00000021, 0x00000000,0x00000023,0x00000000,0x00050048,0x00000021,0x00000001,0x00000023,0x00000004, 0x00040047,0x0000003f,0x00000021,0x00000000,0x00040047,0x0000003f,0x00000022,0x00000000, - 0x00040047,0x0000007c,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, - 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006, - 0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020, - 0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001, - 0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a, - 0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001, - 0x00000000,0x00000000,0x00000000,0x00000002,0x00000002,0x00040020,0x00000015,0x00000000, - 0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x00000019,0x00040017, - 0x0000001a,0x00000019,0x00000002,0x0004001e,0x00000021,0x00000006,0x00000006,0x00040020, - 0x00000022,0x00000009,0x00000021,0x0004003b,0x00000022,0x00000023,0x00000009,0x0004002b, - 0x00000006,0x00000024,0x00000001,0x00040020,0x00000025,0x00000009,0x00000006,0x0004002b, - 0x00000006,0x00000028,0x00000000,0x0004002b,0x00000006,0x00000030,0x00000002,0x0005002c, - 0x00000007,0x00000033,0x00000028,0x00000028,0x00040017,0x00000039,0x00000013,0x00000003, - 0x00040020,0x0000003a,0x00000007,0x00000039,0x00090019,0x0000003c,0x00000013,0x00000001, - 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x0000003d,0x0000003c, - 0x00040020,0x0000003e,0x00000000,0x0000003d,0x0004003b,0x0000003e,0x0000003f,0x00000000, - 0x00040017,0x00000043,0x00000013,0x00000004,0x0004002b,0x00000013,0x00000046,0x00000000, - 0x0006002c,0x00000039,0x00000047,0x00000046,0x00000046,0x00000046,0x00040017,0x0000004f, - 0x00000019,0x00000003,0x0004002b,0x00000013,0x00000070,0x3f800000,0x0006002c,0x00000039, - 0x00000071,0x00000070,0x00000070,0x00000070,0x0004002b,0x0000000a,0x0000007a,0x00000008, - 0x0004002b,0x0000000a,0x0000007b,0x00000001,0x0006002c,0x0000000b,0x0000007c,0x0000007a, - 0x0000007a,0x0000007b,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, - 0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x00000020, - 0x00000007,0x0004003b,0x00000008,0x0000002a,0x00000007,0x0004003b,0x0000003a,0x0000003b, - 0x00000007,0x0004003b,0x0000003a,0x0000005f,0x00000007,0x0004003b,0x0000003a,0x0000006c, - 0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010, - 0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011,0x00000010, - 0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000007,0x00000012,0x00000009,0x0004003d, - 0x00000014,0x00000017,0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x000500af, - 0x0000001a,0x0000001b,0x00000012,0x00000018,0x0004009a,0x00000019,0x0000001c,0x0000001b, - 0x000300f7,0x0000001e,0x00000000,0x000400fa,0x0000001c,0x0000001d,0x0000001e,0x000200f8, - 0x0000001d,0x000100fd,0x000200f8,0x0000001e,0x00050041,0x00000025,0x00000026,0x00000023, - 0x00000024,0x0004003d,0x00000006,0x00000027,0x00000026,0x000500ab,0x00000019,0x00000029, - 0x00000027,0x00000028,0x000300f7,0x0000002c,0x00000000,0x000400fa,0x00000029,0x0000002b, - 0x00000036,0x000200f8,0x0000002b,0x0004003d,0x00000007,0x0000002d,0x00000009,0x0004003d, - 0x00000014,0x0000002e,0x00000016,0x00040068,0x00000007,0x0000002f,0x0000002e,0x00050050, - 0x00000007,0x00000031,0x00000030,0x00000030,0x00050082,0x00000007,0x00000032,0x0000002f, - 0x00000031,0x0007000c,0x00000007,0x00000034,0x00000001,0x0000002a,0x00000032,0x00000033, - 0x0007000c,0x00000007,0x00000035,0x00000001,0x00000027,0x0000002d,0x00000034,0x0003003e, - 0x0000002a,0x00000035,0x000200f9,0x0000002c,0x000200f8,0x00000036,0x0004003d,0x00000007, - 0x00000037,0x00000009,0x0003003e,0x0000002a,0x00000037,0x000200f9,0x0000002c,0x000200f8, - 0x0000002c,0x0004003d,0x00000007,0x00000038,0x0000002a,0x0003003e,0x00000020,0x00000038, - 0x0004003d,0x0000003d,0x00000040,0x0000003f,0x0004003d,0x00000007,0x00000041,0x00000020, - 0x00040064,0x0000003c,0x00000042,0x00000040,0x0007005f,0x00000043,0x00000044,0x00000042, - 0x00000041,0x00000002,0x00000028,0x0008004f,0x00000039,0x00000045,0x00000044,0x00000044, - 0x00000000,0x00000001,0x00000002,0x0007000c,0x00000039,0x00000048,0x00000001,0x00000028, - 0x00000045,0x00000047,0x0003003e,0x0000003b,0x00000048,0x00050041,0x00000025,0x00000049, - 0x00000023,0x00000024,0x0004003d,0x00000006,0x0000004a,0x00000049,0x000500ab,0x00000019, - 0x0000004b,0x0000004a,0x00000028,0x000300f7,0x0000004d,0x00000000,0x000400fa,0x0000004b, - 0x0000004c,0x0000004d,0x000200f8,0x0000004c,0x0004003d,0x00000039,0x0000004e,0x0000003b, - 0x0004009c,0x0000004f,0x00000050,0x0000004e,0x0004009a,0x00000019,0x00000051,0x00000050, - 0x000400a8,0x00000019,0x00000052,0x00000051,0x000300f7,0x00000054,0x00000000,0x000400fa, - 0x00000052,0x00000053,0x00000054,0x000200f8,0x00000053,0x0004003d,0x00000039,0x00000055, - 0x0000003b,0x0004009d,0x0000004f,0x00000056,0x00000055,0x0004009a,0x00000019,0x00000057, - 0x00000056,0x000200f9,0x00000054,0x000200f8,0x00000054,0x000700f5,0x00000019,0x00000058, - 0x00000051,0x0000004c,0x00000057,0x00000053,0x000200f9,0x0000004d,0x000200f8,0x0000004d, - 0x000700f5,0x00000019,0x00000059,0x0000004b,0x0000002c,0x00000058,0x00000054,0x000300f7, - 0x0000005b,0x00000000,0x000400fa,0x00000059,0x0000005a,0x0000005b,0x000200f8,0x0000005a, - 0x0003003e,0x0000003b,0x00000047,0x000200f9,0x0000005b,0x000200f8,0x0000005b,0x00050041, - 0x00000025,0x0000005c,0x00000023,0x00000028,0x0004003d,0x00000006,0x0000005d,0x0000005c, - 0x000500ab,0x00000019,0x0000005e,0x0000005d,0x00000028,0x000300f7,0x00000061,0x00000000, - 0x000400fa,0x0000005e,0x00000060,0x00000064,0x000200f8,0x00000060,0x0004003d,0x00000039, - 0x00000062,0x0000003b,0x0006000c,0x00000039,0x00000063,0x00000001,0x0000001f,0x00000062, - 0x0003003e,0x0000005f,0x00000063,0x000200f9,0x00000061,0x000200f8,0x00000064,0x0004003d, - 0x00000039,0x00000065,0x0000003b,0x0003003e,0x0000005f,0x00000065,0x000200f9,0x00000061, - 0x000200f8,0x00000061,0x0004003d,0x00000039,0x00000066,0x0000005f,0x0003003e,0x0000003b, - 0x00000066,0x0004003d,0x00000014,0x00000067,0x00000016,0x0004003d,0x00000007,0x00000068, - 0x00000009,0x00050041,0x00000025,0x00000069,0x00000023,0x00000024,0x0004003d,0x00000006, - 0x0000006a,0x00000069,0x000500ab,0x00000019,0x0000006b,0x0000006a,0x00000028,0x000300f7, - 0x0000006e,0x00000000,0x000400fa,0x0000006b,0x0000006d,0x00000073,0x000200f8,0x0000006d, - 0x0004003d,0x00000039,0x0000006f,0x0000003b,0x0007000c,0x00000039,0x00000072,0x00000001, - 0x00000025,0x0000006f,0x00000071,0x0003003e,0x0000006c,0x00000072,0x000200f9,0x0000006e, - 0x000200f8,0x00000073,0x0004003d,0x00000039,0x00000074,0x0000003b,0x0003003e,0x0000006c, - 0x00000074,0x000200f9,0x0000006e,0x000200f8,0x0000006e,0x0004003d,0x00000039,0x00000075, - 0x0000006c,0x00050051,0x00000013,0x00000076,0x00000075,0x00000000,0x00050051,0x00000013, - 0x00000077,0x00000075,0x00000001,0x00050051,0x00000013,0x00000078,0x00000075,0x00000002, - 0x00070050,0x00000043,0x00000079,0x00000076,0x00000077,0x00000078,0x00000070,0x00040063, - 0x00000067,0x00000068,0x00000079,0x000100fd,0x00010038 + 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020, + 0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007, + 0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000,0x00040017,0x0000000b,0x0000000a, + 0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d, + 0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00030016,0x00000013,0x00000020, + 0x00090019,0x00000014,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x00000002,0x00040020,0x00000015,0x00000000,0x00000014,0x0004003b,0x00000015,0x00000016, + 0x00000000,0x00020014,0x00000019,0x00040017,0x0000001a,0x00000019,0x00000002,0x0004001e, + 0x00000021,0x00000006,0x00000006,0x00040020,0x00000022,0x00000009,0x00000021,0x0004003b, + 0x00000022,0x00000023,0x00000009,0x0004002b,0x00000006,0x00000024,0x00000001,0x00040020, + 0x00000025,0x00000009,0x00000006,0x0004002b,0x00000006,0x00000028,0x00000000,0x0004002b, + 0x00000006,0x00000030,0x00000002,0x0005002c,0x00000007,0x00000033,0x00000028,0x00000028, + 0x00040017,0x00000039,0x00000013,0x00000003,0x00040020,0x0000003a,0x00000007,0x00000039, + 0x00090019,0x0000003c,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001, + 0x00000000,0x0003001b,0x0000003d,0x0000003c,0x00040020,0x0000003e,0x00000000,0x0000003d, + 0x0004003b,0x0000003e,0x0000003f,0x00000000,0x00040017,0x00000043,0x00000013,0x00000004, + 0x0004002b,0x00000013,0x00000046,0x00000000,0x0006002c,0x00000039,0x00000047,0x00000046, + 0x00000046,0x00000046,0x00040017,0x0000004f,0x00000019,0x00000003,0x0004002b,0x00000013, + 0x00000070,0x3f800000,0x0006002c,0x00000039,0x00000071,0x00000070,0x00000070,0x00000070, + 0x0004002b,0x0000000a,0x0000007a,0x00000008,0x0004002b,0x0000000a,0x0000007b,0x00000001, + 0x0006002c,0x0000000b,0x0000007c,0x0000007a,0x0000007a,0x0000007b,0x00050036,0x00000002, + 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009, + 0x00000007,0x0004003b,0x00000008,0x00000020,0x00000007,0x0004003b,0x00000008,0x0000002a, + 0x00000007,0x0004003b,0x0000003a,0x0000003b,0x00000007,0x0004003b,0x0000003a,0x0000005f, + 0x00000007,0x0004003b,0x0000003a,0x0000006c,0x00000007,0x0004003d,0x0000000b,0x0000000f, + 0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001, + 0x0004007c,0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d, + 0x00000007,0x00000012,0x00000009,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068, + 0x00000007,0x00000018,0x00000017,0x000500af,0x0000001a,0x0000001b,0x00000012,0x00000018, + 0x0004009a,0x00000019,0x0000001c,0x0000001b,0x000300f7,0x0000001e,0x00000000,0x000400fa, + 0x0000001c,0x0000001d,0x0000001e,0x000200f8,0x0000001d,0x000100fd,0x000200f8,0x0000001e, + 0x00050041,0x00000025,0x00000026,0x00000023,0x00000024,0x0004003d,0x00000006,0x00000027, + 0x00000026,0x000500ab,0x00000019,0x00000029,0x00000027,0x00000028,0x000300f7,0x0000002c, + 0x00000000,0x000400fa,0x00000029,0x0000002b,0x00000036,0x000200f8,0x0000002b,0x0004003d, + 0x00000007,0x0000002d,0x00000009,0x0004003d,0x00000014,0x0000002e,0x00000016,0x00040068, + 0x00000007,0x0000002f,0x0000002e,0x00050050,0x00000007,0x00000031,0x00000030,0x00000030, + 0x00050082,0x00000007,0x00000032,0x0000002f,0x00000031,0x0007000c,0x00000007,0x00000034, + 0x00000001,0x0000002a,0x00000032,0x00000033,0x0007000c,0x00000007,0x00000035,0x00000001, + 0x00000027,0x0000002d,0x00000034,0x0003003e,0x0000002a,0x00000035,0x000200f9,0x0000002c, + 0x000200f8,0x00000036,0x0004003d,0x00000007,0x00000037,0x00000009,0x0003003e,0x0000002a, + 0x00000037,0x000200f9,0x0000002c,0x000200f8,0x0000002c,0x0004003d,0x00000007,0x00000038, + 0x0000002a,0x0003003e,0x00000020,0x00000038,0x0004003d,0x0000003d,0x00000040,0x0000003f, + 0x0004003d,0x00000007,0x00000041,0x00000020,0x00040064,0x0000003c,0x00000042,0x00000040, + 0x0007005f,0x00000043,0x00000044,0x00000042,0x00000041,0x00000002,0x00000028,0x0008004f, + 0x00000039,0x00000045,0x00000044,0x00000044,0x00000000,0x00000001,0x00000002,0x0007000c, + 0x00000039,0x00000048,0x00000001,0x00000028,0x00000045,0x00000047,0x0003003e,0x0000003b, + 0x00000048,0x00050041,0x00000025,0x00000049,0x00000023,0x00000024,0x0004003d,0x00000006, + 0x0000004a,0x00000049,0x000500ab,0x00000019,0x0000004b,0x0000004a,0x00000028,0x000300f7, + 0x0000004d,0x00000000,0x000400fa,0x0000004b,0x0000004c,0x0000004d,0x000200f8,0x0000004c, + 0x0004003d,0x00000039,0x0000004e,0x0000003b,0x0004009c,0x0000004f,0x00000050,0x0000004e, + 0x0004009a,0x00000019,0x00000051,0x00000050,0x000400a8,0x00000019,0x00000052,0x00000051, + 0x000300f7,0x00000054,0x00000000,0x000400fa,0x00000052,0x00000053,0x00000054,0x000200f8, + 0x00000053,0x0004003d,0x00000039,0x00000055,0x0000003b,0x0004009d,0x0000004f,0x00000056, + 0x00000055,0x0004009a,0x00000019,0x00000057,0x00000056,0x000200f9,0x00000054,0x000200f8, + 0x00000054,0x000700f5,0x00000019,0x00000058,0x00000051,0x0000004c,0x00000057,0x00000053, + 0x000200f9,0x0000004d,0x000200f8,0x0000004d,0x000700f5,0x00000019,0x00000059,0x0000004b, + 0x0000002c,0x00000058,0x00000054,0x000300f7,0x0000005b,0x00000000,0x000400fa,0x00000059, + 0x0000005a,0x0000005b,0x000200f8,0x0000005a,0x0003003e,0x0000003b,0x00000047,0x000200f9, + 0x0000005b,0x000200f8,0x0000005b,0x00050041,0x00000025,0x0000005c,0x00000023,0x00000028, + 0x0004003d,0x00000006,0x0000005d,0x0000005c,0x000500ab,0x00000019,0x0000005e,0x0000005d, + 0x00000028,0x000300f7,0x00000061,0x00000000,0x000400fa,0x0000005e,0x00000060,0x00000064, + 0x000200f8,0x00000060,0x0004003d,0x00000039,0x00000062,0x0000003b,0x0006000c,0x00000039, + 0x00000063,0x00000001,0x0000001f,0x00000062,0x0003003e,0x0000005f,0x00000063,0x000200f9, + 0x00000061,0x000200f8,0x00000064,0x0004003d,0x00000039,0x00000065,0x0000003b,0x0003003e, + 0x0000005f,0x00000065,0x000200f9,0x00000061,0x000200f8,0x00000061,0x0004003d,0x00000039, + 0x00000066,0x0000005f,0x0003003e,0x0000003b,0x00000066,0x0004003d,0x00000014,0x00000067, + 0x00000016,0x0004003d,0x00000007,0x00000068,0x00000009,0x00050041,0x00000025,0x00000069, + 0x00000023,0x00000024,0x0004003d,0x00000006,0x0000006a,0x00000069,0x000500ab,0x00000019, + 0x0000006b,0x0000006a,0x00000028,0x000300f7,0x0000006e,0x00000000,0x000400fa,0x0000006b, + 0x0000006d,0x00000073,0x000200f8,0x0000006d,0x0004003d,0x00000039,0x0000006f,0x0000003b, + 0x0007000c,0x00000039,0x00000072,0x00000001,0x00000025,0x0000006f,0x00000071,0x0003003e, + 0x0000006c,0x00000072,0x000200f9,0x0000006e,0x000200f8,0x00000073,0x0004003d,0x00000039, + 0x00000074,0x0000003b,0x0003003e,0x0000006c,0x00000074,0x000200f9,0x0000006e,0x000200f8, + 0x0000006e,0x0004003d,0x00000039,0x00000075,0x0000006c,0x00050051,0x00000013,0x00000076, + 0x00000075,0x00000000,0x00050051,0x00000013,0x00000077,0x00000075,0x00000001,0x00050051, + 0x00000013,0x00000078,0x00000075,0x00000002,0x00070050,0x00000043,0x00000079,0x00000076, + 0x00000077,0x00000078,0x00000070,0x00040063,0x00000067,0x00000068,0x00000079,0x000100fd, + 0x00010038 }; diff --git a/gpu/vk/shaders/dlss_motion_comp_spv.h b/gpu/vk/shaders/dlss_motion_comp_spv.h index 193d0e612..aa56bb631 100644 --- a/gpu/vk/shaders/dlss_motion_comp_spv.h +++ b/gpu/vk/shaders/dlss_motion_comp_spv.h @@ -1,7 +1,7 @@ // 1116.2.0 #pragma once const uint32_t DLSS_MOTION_COMP_SPV[] = { - 0x07230203,0x00010500,0x0008000b,0x0000009d,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010600,0x0008000b,0x0000009d,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001,0x0009000f,0x00000005,0x00000004,0x6e69616d, 0x00000000,0x0000000d,0x00000016,0x0000002c,0x00000032,0x00060010,0x00000004,0x00000011, @@ -21,100 +21,99 @@ const uint32_t DLSS_MOTION_COMP_SPV[] = { 0x0000002c,0x00000021,0x00000000,0x00040047,0x0000002c,0x00000022,0x00000000,0x00030047, 0x00000030,0x00000002,0x00040048,0x00000030,0x00000000,0x00000004,0x00050048,0x00000030, 0x00000000,0x00000007,0x00000010,0x00050048,0x00000030,0x00000000,0x00000023,0x00000000, - 0x00050048,0x00000030,0x00000001,0x00000023,0x00000040,0x00040047,0x0000009c,0x0000000b, - 0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006, - 0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020,0x00000008, - 0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000,0x00040017,0x0000000b, - 0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c, - 0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00030016,0x00000013, - 0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000, - 0x00000002,0x00000007,0x00040020,0x00000015,0x00000000,0x00000014,0x0004003b,0x00000015, - 0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017,0x0000001c,0x0000001b,0x00000002, - 0x00040017,0x00000022,0x00000013,0x00000002,0x00040020,0x00000023,0x00000007,0x00000022, - 0x00040020,0x00000027,0x00000007,0x00000013,0x00090019,0x00000029,0x00000013,0x00000001, - 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x0000002a,0x00000029, - 0x00040020,0x0000002b,0x00000000,0x0000002a,0x0004003b,0x0000002b,0x0000002c,0x00000000, - 0x00040017,0x0000002e,0x00000013,0x00000004,0x00040018,0x0000002f,0x0000002e,0x00000004, - 0x0004001e,0x00000030,0x0000002f,0x00000006,0x00040020,0x00000031,0x00000009,0x00000030, - 0x0004003b,0x00000031,0x00000032,0x00000009,0x0004002b,0x00000006,0x00000033,0x00000001, - 0x00040020,0x00000034,0x00000009,0x00000006,0x0004002b,0x00000006,0x00000037,0x00000000, - 0x0004002b,0x00000006,0x0000003e,0x00000002,0x0005002c,0x00000007,0x00000041,0x00000037, - 0x00000037,0x0004002b,0x0000000a,0x00000049,0x00000000,0x0004002b,0x00000013,0x0000004e, - 0x3f000000,0x00040020,0x00000053,0x00000007,0x0000002e,0x0004002b,0x00000013,0x00000056, - 0x40000000,0x0004002b,0x00000013,0x00000057,0xc0000000,0x0005002c,0x00000022,0x00000058, - 0x00000056,0x00000057,0x0004002b,0x00000013,0x0000005a,0xbf800000,0x0004002b,0x00000013, - 0x0000005b,0x3f800000,0x0005002c,0x00000022,0x0000005c,0x0000005a,0x0000005b,0x00040020, - 0x00000065,0x00000009,0x0000002f,0x0004002b,0x00000013,0x0000006b,0x00000000,0x0005002c, - 0x00000022,0x0000006c,0x0000006b,0x0000006b,0x0004002b,0x0000000a,0x00000074,0x00000003, - 0x0004002b,0x00000013,0x00000077,0x358637bd,0x0004002b,0x00000013,0x00000086,0xbf000000, - 0x0005002c,0x00000022,0x00000087,0x0000004e,0x00000086,0x0004002b,0x00000013,0x0000008d, - 0x477fe000,0x0005002c,0x00000022,0x0000008e,0x0000008d,0x0000008d,0x0004002b,0x0000000a, - 0x0000009a,0x00000008,0x0004002b,0x0000000a,0x0000009b,0x00000001,0x0006002c,0x0000000b, - 0x0000009c,0x0000009a,0x0000009a,0x0000009b,0x00050036,0x00000002,0x00000004,0x00000000, - 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b, - 0x00000008,0x00000012,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,0x0004003b, - 0x00000027,0x00000028,0x00000007,0x0004003b,0x00000008,0x00000039,0x00000007,0x0004003b, - 0x00000023,0x0000004b,0x00000007,0x0004003b,0x00000053,0x00000054,0x00000007,0x0004003b, - 0x00000053,0x00000064,0x00000007,0x0004003b,0x00000023,0x0000006a,0x00000007,0x0004003b, - 0x00000023,0x0000007c,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f, - 0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007, - 0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000014,0x00000017, - 0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x0003003e,0x00000012,0x00000018, - 0x0004003d,0x00000007,0x00000019,0x00000009,0x0004003d,0x00000007,0x0000001a,0x00000012, - 0x000500af,0x0000001c,0x0000001d,0x00000019,0x0000001a,0x0004009a,0x0000001b,0x0000001e, - 0x0000001d,0x000300f7,0x00000020,0x00000000,0x000400fa,0x0000001e,0x0000001f,0x00000020, - 0x000200f8,0x0000001f,0x000100fd,0x000200f8,0x00000020,0x0004003d,0x00000007,0x00000025, - 0x00000012,0x0004006f,0x00000022,0x00000026,0x00000025,0x0003003e,0x00000024,0x00000026, - 0x0004003d,0x0000002a,0x0000002d,0x0000002c,0x00050041,0x00000034,0x00000035,0x00000032, - 0x00000033,0x0004003d,0x00000006,0x00000036,0x00000035,0x000500ab,0x0000001b,0x00000038, - 0x00000036,0x00000037,0x000300f7,0x0000003b,0x00000000,0x000400fa,0x00000038,0x0000003a, - 0x00000044,0x000200f8,0x0000003a,0x0004003d,0x00000007,0x0000003c,0x00000009,0x0004003d, - 0x00000007,0x0000003d,0x00000012,0x00050050,0x00000007,0x0000003f,0x0000003e,0x0000003e, - 0x00050082,0x00000007,0x00000040,0x0000003d,0x0000003f,0x0007000c,0x00000007,0x00000042, - 0x00000001,0x0000002a,0x00000040,0x00000041,0x0007000c,0x00000007,0x00000043,0x00000001, - 0x00000027,0x0000003c,0x00000042,0x0003003e,0x00000039,0x00000043,0x000200f9,0x0000003b, - 0x000200f8,0x00000044,0x0004003d,0x00000007,0x00000045,0x00000009,0x0003003e,0x00000039, - 0x00000045,0x000200f9,0x0000003b,0x000200f8,0x0000003b,0x0004003d,0x00000007,0x00000046, - 0x00000039,0x00040064,0x00000029,0x00000047,0x0000002d,0x0007005f,0x0000002e,0x00000048, - 0x00000047,0x00000046,0x00000002,0x00000037,0x00050051,0x00000013,0x0000004a,0x00000048, - 0x00000000,0x0003003e,0x00000028,0x0000004a,0x0004003d,0x00000007,0x0000004c,0x00000009, - 0x0004006f,0x00000022,0x0000004d,0x0000004c,0x00050050,0x00000022,0x0000004f,0x0000004e, - 0x0000004e,0x00050081,0x00000022,0x00000050,0x0000004d,0x0000004f,0x0004003d,0x00000022, - 0x00000051,0x00000024,0x00050088,0x00000022,0x00000052,0x00000050,0x00000051,0x0003003e, - 0x0000004b,0x00000052,0x0004003d,0x00000022,0x00000055,0x0000004b,0x00050085,0x00000022, - 0x00000059,0x00000055,0x00000058,0x00050081,0x00000022,0x0000005d,0x00000059,0x0000005c, - 0x0004003d,0x00000013,0x0000005e,0x00000028,0x00050085,0x00000013,0x0000005f,0x0000005e, - 0x00000056,0x00050083,0x00000013,0x00000060,0x0000005f,0x0000005b,0x00050051,0x00000013, - 0x00000061,0x0000005d,0x00000000,0x00050051,0x00000013,0x00000062,0x0000005d,0x00000001, - 0x00070050,0x0000002e,0x00000063,0x00000061,0x00000062,0x00000060,0x0000005b,0x0003003e, - 0x00000054,0x00000063,0x00050041,0x00000065,0x00000066,0x00000032,0x00000037,0x0004003d, - 0x0000002f,0x00000067,0x00000066,0x0004003d,0x0000002e,0x00000068,0x00000054,0x00050091, - 0x0000002e,0x00000069,0x00000067,0x00000068,0x0003003e,0x00000064,0x00000069,0x0003003e, - 0x0000006a,0x0000006c,0x0004003d,0x00000013,0x0000006d,0x00000028,0x000500be,0x0000001b, - 0x0000006e,0x0000006d,0x0000006b,0x0004003d,0x00000013,0x0000006f,0x00000028,0x000500bc, - 0x0000001b,0x00000070,0x0000006f,0x0000005b,0x000500a7,0x0000001b,0x00000071,0x0000006e, - 0x00000070,0x000300f7,0x00000073,0x00000000,0x000400fa,0x00000071,0x00000072,0x00000073, - 0x000200f8,0x00000072,0x00050041,0x00000027,0x00000075,0x00000064,0x00000074,0x0004003d, - 0x00000013,0x00000076,0x00000075,0x000500ba,0x0000001b,0x00000078,0x00000076,0x00000077, - 0x000200f9,0x00000073,0x000200f8,0x00000073,0x000700f5,0x0000001b,0x00000079,0x00000071, - 0x0000003b,0x00000078,0x00000072,0x000300f7,0x0000007b,0x00000000,0x000400fa,0x00000079, - 0x0000007a,0x0000007b,0x000200f8,0x0000007a,0x0004003d,0x0000002e,0x0000007d,0x00000064, - 0x0007004f,0x00000022,0x0000007e,0x0000007d,0x0000007d,0x00000000,0x00000001,0x00050041, - 0x00000027,0x0000007f,0x00000064,0x00000074,0x0004003d,0x00000013,0x00000080,0x0000007f, - 0x00050050,0x00000022,0x00000081,0x00000080,0x00000080,0x00050088,0x00000022,0x00000082, - 0x0000007e,0x00000081,0x0004003d,0x0000002e,0x00000083,0x00000054,0x0007004f,0x00000022, - 0x00000084,0x00000083,0x00000083,0x00000000,0x00000001,0x00050083,0x00000022,0x00000085, - 0x00000082,0x00000084,0x00050085,0x00000022,0x00000088,0x00000085,0x00000087,0x0004003d, - 0x00000022,0x00000089,0x00000024,0x00050085,0x00000022,0x0000008a,0x00000088,0x00000089, - 0x0003003e,0x0000007c,0x0000008a,0x0004003d,0x00000022,0x0000008b,0x0000007c,0x0006000c, - 0x00000022,0x0000008c,0x00000001,0x00000004,0x0000008b,0x000500bc,0x0000001c,0x0000008f, - 0x0000008c,0x0000008e,0x0004009b,0x0000001b,0x00000090,0x0000008f,0x000300f7,0x00000092, - 0x00000000,0x000400fa,0x00000090,0x00000091,0x00000092,0x000200f8,0x00000091,0x0004003d, - 0x00000022,0x00000093,0x0000007c,0x0003003e,0x0000006a,0x00000093,0x000200f9,0x00000092, - 0x000200f8,0x00000092,0x000200f9,0x0000007b,0x000200f8,0x0000007b,0x0004003d,0x00000014, - 0x00000094,0x00000016,0x0004003d,0x00000007,0x00000095,0x00000009,0x0004003d,0x00000022, - 0x00000096,0x0000006a,0x00050051,0x00000013,0x00000097,0x00000096,0x00000000,0x00050051, - 0x00000013,0x00000098,0x00000096,0x00000001,0x00070050,0x0000002e,0x00000099,0x00000097, - 0x00000098,0x0000006b,0x0000006b,0x00040063,0x00000094,0x00000095,0x00000099,0x000100fd, - 0x00010038 + 0x00050048,0x00000030,0x00000001,0x00000023,0x00000040,0x00020013,0x00000002,0x00030021, + 0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017,0x00000007, + 0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a, + 0x00000020,0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c, + 0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e, + 0x0000000a,0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014,0x00000013, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000007,0x00040020,0x00000015, + 0x00000000,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014,0x0000001b, + 0x00040017,0x0000001c,0x0000001b,0x00000002,0x00040017,0x00000022,0x00000013,0x00000002, + 0x00040020,0x00000023,0x00000007,0x00000022,0x00040020,0x00000027,0x00000007,0x00000013, + 0x00090019,0x00000029,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001, + 0x00000000,0x0003001b,0x0000002a,0x00000029,0x00040020,0x0000002b,0x00000000,0x0000002a, + 0x0004003b,0x0000002b,0x0000002c,0x00000000,0x00040017,0x0000002e,0x00000013,0x00000004, + 0x00040018,0x0000002f,0x0000002e,0x00000004,0x0004001e,0x00000030,0x0000002f,0x00000006, + 0x00040020,0x00000031,0x00000009,0x00000030,0x0004003b,0x00000031,0x00000032,0x00000009, + 0x0004002b,0x00000006,0x00000033,0x00000001,0x00040020,0x00000034,0x00000009,0x00000006, + 0x0004002b,0x00000006,0x00000037,0x00000000,0x0004002b,0x00000006,0x0000003e,0x00000002, + 0x0005002c,0x00000007,0x00000041,0x00000037,0x00000037,0x0004002b,0x0000000a,0x00000049, + 0x00000000,0x0004002b,0x00000013,0x0000004e,0x3f000000,0x00040020,0x00000053,0x00000007, + 0x0000002e,0x0004002b,0x00000013,0x00000056,0x40000000,0x0004002b,0x00000013,0x00000057, + 0xc0000000,0x0005002c,0x00000022,0x00000058,0x00000056,0x00000057,0x0004002b,0x00000013, + 0x0000005a,0xbf800000,0x0004002b,0x00000013,0x0000005b,0x3f800000,0x0005002c,0x00000022, + 0x0000005c,0x0000005a,0x0000005b,0x00040020,0x00000065,0x00000009,0x0000002f,0x0004002b, + 0x00000013,0x0000006b,0x00000000,0x0005002c,0x00000022,0x0000006c,0x0000006b,0x0000006b, + 0x0004002b,0x0000000a,0x00000074,0x00000003,0x0004002b,0x00000013,0x00000077,0x358637bd, + 0x0004002b,0x00000013,0x00000086,0xbf000000,0x0005002c,0x00000022,0x00000087,0x0000004e, + 0x00000086,0x0004002b,0x00000013,0x0000008d,0x477fe000,0x0005002c,0x00000022,0x0000008e, + 0x0000008d,0x0000008d,0x0004002b,0x0000000a,0x0000009a,0x00000008,0x0004002b,0x0000000a, + 0x0000009b,0x00000001,0x0006002c,0x0000000b,0x0000009c,0x0000009a,0x0000009a,0x0000009b, + 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b, + 0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x00000012,0x00000007,0x0004003b, + 0x00000023,0x00000024,0x00000007,0x0004003b,0x00000027,0x00000028,0x00000007,0x0004003b, + 0x00000008,0x00000039,0x00000007,0x0004003b,0x00000023,0x0000004b,0x00000007,0x0004003b, + 0x00000053,0x00000054,0x00000007,0x0004003b,0x00000053,0x00000064,0x00000007,0x0004003b, + 0x00000023,0x0000006a,0x00000007,0x0004003b,0x00000023,0x0000007c,0x00000007,0x0004003d, + 0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f, + 0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009, + 0x00000011,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068,0x00000007,0x00000018, + 0x00000017,0x0003003e,0x00000012,0x00000018,0x0004003d,0x00000007,0x00000019,0x00000009, + 0x0004003d,0x00000007,0x0000001a,0x00000012,0x000500af,0x0000001c,0x0000001d,0x00000019, + 0x0000001a,0x0004009a,0x0000001b,0x0000001e,0x0000001d,0x000300f7,0x00000020,0x00000000, + 0x000400fa,0x0000001e,0x0000001f,0x00000020,0x000200f8,0x0000001f,0x000100fd,0x000200f8, + 0x00000020,0x0004003d,0x00000007,0x00000025,0x00000012,0x0004006f,0x00000022,0x00000026, + 0x00000025,0x0003003e,0x00000024,0x00000026,0x0004003d,0x0000002a,0x0000002d,0x0000002c, + 0x00050041,0x00000034,0x00000035,0x00000032,0x00000033,0x0004003d,0x00000006,0x00000036, + 0x00000035,0x000500ab,0x0000001b,0x00000038,0x00000036,0x00000037,0x000300f7,0x0000003b, + 0x00000000,0x000400fa,0x00000038,0x0000003a,0x00000044,0x000200f8,0x0000003a,0x0004003d, + 0x00000007,0x0000003c,0x00000009,0x0004003d,0x00000007,0x0000003d,0x00000012,0x00050050, + 0x00000007,0x0000003f,0x0000003e,0x0000003e,0x00050082,0x00000007,0x00000040,0x0000003d, + 0x0000003f,0x0007000c,0x00000007,0x00000042,0x00000001,0x0000002a,0x00000040,0x00000041, + 0x0007000c,0x00000007,0x00000043,0x00000001,0x00000027,0x0000003c,0x00000042,0x0003003e, + 0x00000039,0x00000043,0x000200f9,0x0000003b,0x000200f8,0x00000044,0x0004003d,0x00000007, + 0x00000045,0x00000009,0x0003003e,0x00000039,0x00000045,0x000200f9,0x0000003b,0x000200f8, + 0x0000003b,0x0004003d,0x00000007,0x00000046,0x00000039,0x00040064,0x00000029,0x00000047, + 0x0000002d,0x0007005f,0x0000002e,0x00000048,0x00000047,0x00000046,0x00000002,0x00000037, + 0x00050051,0x00000013,0x0000004a,0x00000048,0x00000000,0x0003003e,0x00000028,0x0000004a, + 0x0004003d,0x00000007,0x0000004c,0x00000009,0x0004006f,0x00000022,0x0000004d,0x0000004c, + 0x00050050,0x00000022,0x0000004f,0x0000004e,0x0000004e,0x00050081,0x00000022,0x00000050, + 0x0000004d,0x0000004f,0x0004003d,0x00000022,0x00000051,0x00000024,0x00050088,0x00000022, + 0x00000052,0x00000050,0x00000051,0x0003003e,0x0000004b,0x00000052,0x0004003d,0x00000022, + 0x00000055,0x0000004b,0x00050085,0x00000022,0x00000059,0x00000055,0x00000058,0x00050081, + 0x00000022,0x0000005d,0x00000059,0x0000005c,0x0004003d,0x00000013,0x0000005e,0x00000028, + 0x00050085,0x00000013,0x0000005f,0x0000005e,0x00000056,0x00050083,0x00000013,0x00000060, + 0x0000005f,0x0000005b,0x00050051,0x00000013,0x00000061,0x0000005d,0x00000000,0x00050051, + 0x00000013,0x00000062,0x0000005d,0x00000001,0x00070050,0x0000002e,0x00000063,0x00000061, + 0x00000062,0x00000060,0x0000005b,0x0003003e,0x00000054,0x00000063,0x00050041,0x00000065, + 0x00000066,0x00000032,0x00000037,0x0004003d,0x0000002f,0x00000067,0x00000066,0x0004003d, + 0x0000002e,0x00000068,0x00000054,0x00050091,0x0000002e,0x00000069,0x00000067,0x00000068, + 0x0003003e,0x00000064,0x00000069,0x0003003e,0x0000006a,0x0000006c,0x0004003d,0x00000013, + 0x0000006d,0x00000028,0x000500be,0x0000001b,0x0000006e,0x0000006d,0x0000006b,0x0004003d, + 0x00000013,0x0000006f,0x00000028,0x000500bc,0x0000001b,0x00000070,0x0000006f,0x0000005b, + 0x000500a7,0x0000001b,0x00000071,0x0000006e,0x00000070,0x000300f7,0x00000073,0x00000000, + 0x000400fa,0x00000071,0x00000072,0x00000073,0x000200f8,0x00000072,0x00050041,0x00000027, + 0x00000075,0x00000064,0x00000074,0x0004003d,0x00000013,0x00000076,0x00000075,0x000500ba, + 0x0000001b,0x00000078,0x00000076,0x00000077,0x000200f9,0x00000073,0x000200f8,0x00000073, + 0x000700f5,0x0000001b,0x00000079,0x00000071,0x0000003b,0x00000078,0x00000072,0x000300f7, + 0x0000007b,0x00000000,0x000400fa,0x00000079,0x0000007a,0x0000007b,0x000200f8,0x0000007a, + 0x0004003d,0x0000002e,0x0000007d,0x00000064,0x0007004f,0x00000022,0x0000007e,0x0000007d, + 0x0000007d,0x00000000,0x00000001,0x00050041,0x00000027,0x0000007f,0x00000064,0x00000074, + 0x0004003d,0x00000013,0x00000080,0x0000007f,0x00050050,0x00000022,0x00000081,0x00000080, + 0x00000080,0x00050088,0x00000022,0x00000082,0x0000007e,0x00000081,0x0004003d,0x0000002e, + 0x00000083,0x00000054,0x0007004f,0x00000022,0x00000084,0x00000083,0x00000083,0x00000000, + 0x00000001,0x00050083,0x00000022,0x00000085,0x00000082,0x00000084,0x00050085,0x00000022, + 0x00000088,0x00000085,0x00000087,0x0004003d,0x00000022,0x00000089,0x00000024,0x00050085, + 0x00000022,0x0000008a,0x00000088,0x00000089,0x0003003e,0x0000007c,0x0000008a,0x0004003d, + 0x00000022,0x0000008b,0x0000007c,0x0006000c,0x00000022,0x0000008c,0x00000001,0x00000004, + 0x0000008b,0x000500bc,0x0000001c,0x0000008f,0x0000008c,0x0000008e,0x0004009b,0x0000001b, + 0x00000090,0x0000008f,0x000300f7,0x00000092,0x00000000,0x000400fa,0x00000090,0x00000091, + 0x00000092,0x000200f8,0x00000091,0x0004003d,0x00000022,0x00000093,0x0000007c,0x0003003e, + 0x0000006a,0x00000093,0x000200f9,0x00000092,0x000200f8,0x00000092,0x000200f9,0x0000007b, + 0x000200f8,0x0000007b,0x0004003d,0x00000014,0x00000094,0x00000016,0x0004003d,0x00000007, + 0x00000095,0x00000009,0x0004003d,0x00000022,0x00000096,0x0000006a,0x00050051,0x00000013, + 0x00000097,0x00000096,0x00000000,0x00050051,0x00000013,0x00000098,0x00000096,0x00000001, + 0x00070050,0x0000002e,0x00000099,0x00000097,0x00000098,0x0000006b,0x0000006b,0x00040063, + 0x00000094,0x00000095,0x00000099,0x000100fd,0x00010038 }; diff --git a/gpu/vk/shaders/dlss_output_comp_spv.h b/gpu/vk/shaders/dlss_output_comp_spv.h index 5cf1d7571..3ee8735cb 100644 --- a/gpu/vk/shaders/dlss_output_comp_spv.h +++ b/gpu/vk/shaders/dlss_output_comp_spv.h @@ -1,7 +1,7 @@ // 1116.2.0 #pragma once const uint32_t DLSS_OUTPUT_COMP_SPV[] = { - 0x07230203,0x00010500,0x0008000b,0x00000066,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010600,0x0008000b,0x00000066,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001,0x0008000f,0x00000005,0x00000004,0x6e69616d, 0x00000000,0x0000000d,0x00000016,0x00000028,0x00060010,0x00000004,0x00000011,0x00000008, @@ -13,66 +13,65 @@ const uint32_t DLSS_OUTPUT_COMP_SPV[] = { 0x00000056,0x6f6c6f63,0x00000072,0x00040047,0x0000000d,0x0000000b,0x0000001c,0x00030047, 0x00000016,0x00000019,0x00040047,0x00000016,0x00000021,0x00000001,0x00040047,0x00000016, 0x00000022,0x00000000,0x00040047,0x00000028,0x00000021,0x00000000,0x00040047,0x00000028, - 0x00000022,0x00000000,0x00040047,0x00000065,0x0000000b,0x00000019,0x00020013,0x00000002, - 0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040017, - 0x00000007,0x00000006,0x00000002,0x00040020,0x00000008,0x00000007,0x00000007,0x00040015, - 0x0000000a,0x00000020,0x00000000,0x00040017,0x0000000b,0x0000000a,0x00000003,0x00040020, - 0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x00040017, - 0x0000000e,0x0000000a,0x00000002,0x00030016,0x00000013,0x00000020,0x00090019,0x00000014, - 0x00000013,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000008,0x00040020, - 0x00000015,0x00000000,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000000,0x00020014, - 0x0000001b,0x00040017,0x0000001c,0x0000001b,0x00000002,0x00040017,0x00000022,0x00000013, - 0x00000003,0x00040020,0x00000023,0x00000007,0x00000022,0x00090019,0x00000025,0x00000013, - 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x00000026, - 0x00000025,0x00040020,0x00000027,0x00000000,0x00000026,0x0004003b,0x00000027,0x00000028, - 0x00000000,0x0004002b,0x00000006,0x0000002a,0x00000000,0x00040017,0x00000036,0x00000013, - 0x00000004,0x00040017,0x0000003c,0x00000013,0x00000002,0x0004002b,0x00000013,0x0000003e, - 0x3f000000,0x0004002b,0x00000013,0x00000044,0x00000000,0x00040017,0x00000049,0x0000001b, - 0x00000003,0x0006002c,0x00000022,0x00000055,0x00000044,0x00000044,0x00000044,0x0004002b, - 0x00000013,0x0000005e,0x3f800000,0x0004002b,0x0000000a,0x00000063,0x00000008,0x0004002b, - 0x0000000a,0x00000064,0x00000001,0x0006002c,0x0000000b,0x00000065,0x00000063,0x00000063, - 0x00000064,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, - 0x0004003b,0x00000008,0x00000009,0x00000007,0x0004003b,0x00000008,0x00000012,0x00000007, - 0x0004003b,0x00000023,0x00000024,0x00000007,0x0004003b,0x00000023,0x00000030,0x00000007, - 0x0004003b,0x00000023,0x00000056,0x00000007,0x0004003d,0x0000000b,0x0000000f,0x0000000d, - 0x0007004f,0x0000000e,0x00000010,0x0000000f,0x0000000f,0x00000000,0x00000001,0x0004007c, - 0x00000007,0x00000011,0x00000010,0x0003003e,0x00000009,0x00000011,0x0004003d,0x00000014, - 0x00000017,0x00000016,0x00040068,0x00000007,0x00000018,0x00000017,0x0003003e,0x00000012, - 0x00000018,0x0004003d,0x00000007,0x00000019,0x00000009,0x0004003d,0x00000007,0x0000001a, - 0x00000012,0x000500af,0x0000001c,0x0000001d,0x00000019,0x0000001a,0x0004009a,0x0000001b, - 0x0000001e,0x0000001d,0x000300f7,0x00000020,0x00000000,0x000400fa,0x0000001e,0x0000001f, - 0x00000020,0x000200f8,0x0000001f,0x000100fd,0x000200f8,0x00000020,0x0004003d,0x00000026, - 0x00000029,0x00000028,0x00040064,0x00000025,0x0000002b,0x00000029,0x00050067,0x00000007, - 0x0000002c,0x0000002b,0x0000002a,0x0004003d,0x00000007,0x0000002d,0x00000012,0x000500aa, - 0x0000001c,0x0000002e,0x0000002c,0x0000002d,0x0004009b,0x0000001b,0x0000002f,0x0000002e, - 0x000300f7,0x00000032,0x00000000,0x000400fa,0x0000002f,0x00000031,0x00000039,0x000200f8, - 0x00000031,0x0004003d,0x00000026,0x00000033,0x00000028,0x0004003d,0x00000007,0x00000034, - 0x00000009,0x00040064,0x00000025,0x00000035,0x00000033,0x0007005f,0x00000036,0x00000037, - 0x00000035,0x00000034,0x00000002,0x0000002a,0x0008004f,0x00000022,0x00000038,0x00000037, - 0x00000037,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000030,0x00000038,0x000200f9, - 0x00000032,0x000200f8,0x00000039,0x0004003d,0x00000026,0x0000003a,0x00000028,0x0004003d, - 0x00000007,0x0000003b,0x00000009,0x0004006f,0x0000003c,0x0000003d,0x0000003b,0x00050050, - 0x0000003c,0x0000003f,0x0000003e,0x0000003e,0x00050081,0x0000003c,0x00000040,0x0000003d, - 0x0000003f,0x0004003d,0x00000007,0x00000041,0x00000012,0x0004006f,0x0000003c,0x00000042, - 0x00000041,0x00050088,0x0000003c,0x00000043,0x00000040,0x00000042,0x00070058,0x00000036, - 0x00000045,0x0000003a,0x00000043,0x00000002,0x00000044,0x0008004f,0x00000022,0x00000046, - 0x00000045,0x00000045,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000030,0x00000046, - 0x000200f9,0x00000032,0x000200f8,0x00000032,0x0004003d,0x00000022,0x00000047,0x00000030, - 0x0003003e,0x00000024,0x00000047,0x0004003d,0x00000022,0x00000048,0x00000024,0x0004009c, - 0x00000049,0x0000004a,0x00000048,0x0004009a,0x0000001b,0x0000004b,0x0000004a,0x000400a8, - 0x0000001b,0x0000004c,0x0000004b,0x000300f7,0x0000004e,0x00000000,0x000400fa,0x0000004c, - 0x0000004d,0x0000004e,0x000200f8,0x0000004d,0x0004003d,0x00000022,0x0000004f,0x00000024, - 0x0004009d,0x00000049,0x00000050,0x0000004f,0x0004009a,0x0000001b,0x00000051,0x00000050, - 0x000200f9,0x0000004e,0x000200f8,0x0000004e,0x000700f5,0x0000001b,0x00000052,0x0000004b, - 0x00000032,0x00000051,0x0000004d,0x000300f7,0x00000054,0x00000000,0x000400fa,0x00000052, - 0x00000053,0x00000054,0x000200f8,0x00000053,0x0003003e,0x00000024,0x00000055,0x000200f9, - 0x00000054,0x000200f8,0x00000054,0x0004003d,0x00000022,0x00000057,0x00000024,0x0007000c, - 0x00000022,0x00000058,0x00000001,0x00000028,0x00000057,0x00000055,0x0003003e,0x00000056, - 0x00000058,0x0004003d,0x00000014,0x00000059,0x00000016,0x0004003d,0x00000007,0x0000005a, - 0x00000009,0x0004003d,0x00000022,0x0000005b,0x00000056,0x0004003d,0x00000022,0x0000005c, - 0x00000056,0x00050085,0x00000022,0x0000005d,0x0000005b,0x0000005c,0x00050051,0x00000013, - 0x0000005f,0x0000005d,0x00000000,0x00050051,0x00000013,0x00000060,0x0000005d,0x00000001, - 0x00050051,0x00000013,0x00000061,0x0000005d,0x00000002,0x00070050,0x00000036,0x00000062, - 0x0000005f,0x00000060,0x00000061,0x0000005e,0x00040063,0x00000059,0x0000005a,0x00000062, - 0x000100fd,0x00010038 + 0x00000022,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015, + 0x00000006,0x00000020,0x00000001,0x00040017,0x00000007,0x00000006,0x00000002,0x00040020, + 0x00000008,0x00000007,0x00000007,0x00040015,0x0000000a,0x00000020,0x00000000,0x00040017, + 0x0000000b,0x0000000a,0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b, + 0x0000000c,0x0000000d,0x00000001,0x00040017,0x0000000e,0x0000000a,0x00000002,0x00030016, + 0x00000013,0x00000020,0x00090019,0x00000014,0x00000013,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000008,0x00040020,0x00000015,0x00000000,0x00000014,0x0004003b, + 0x00000015,0x00000016,0x00000000,0x00020014,0x0000001b,0x00040017,0x0000001c,0x0000001b, + 0x00000002,0x00040017,0x00000022,0x00000013,0x00000003,0x00040020,0x00000023,0x00000007, + 0x00000022,0x00090019,0x00000025,0x00000013,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000001,0x00000000,0x0003001b,0x00000026,0x00000025,0x00040020,0x00000027,0x00000000, + 0x00000026,0x0004003b,0x00000027,0x00000028,0x00000000,0x0004002b,0x00000006,0x0000002a, + 0x00000000,0x00040017,0x00000036,0x00000013,0x00000004,0x00040017,0x0000003c,0x00000013, + 0x00000002,0x0004002b,0x00000013,0x0000003e,0x3f000000,0x0004002b,0x00000013,0x00000044, + 0x00000000,0x00040017,0x00000049,0x0000001b,0x00000003,0x0006002c,0x00000022,0x00000055, + 0x00000044,0x00000044,0x00000044,0x0004002b,0x00000013,0x0000005e,0x3f800000,0x0004002b, + 0x0000000a,0x00000063,0x00000008,0x0004002b,0x0000000a,0x00000064,0x00000001,0x0006002c, + 0x0000000b,0x00000065,0x00000063,0x00000063,0x00000064,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000008,0x00000009,0x00000007, + 0x0004003b,0x00000008,0x00000012,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007, + 0x0004003b,0x00000023,0x00000030,0x00000007,0x0004003b,0x00000023,0x00000056,0x00000007, + 0x0004003d,0x0000000b,0x0000000f,0x0000000d,0x0007004f,0x0000000e,0x00000010,0x0000000f, + 0x0000000f,0x00000000,0x00000001,0x0004007c,0x00000007,0x00000011,0x00000010,0x0003003e, + 0x00000009,0x00000011,0x0004003d,0x00000014,0x00000017,0x00000016,0x00040068,0x00000007, + 0x00000018,0x00000017,0x0003003e,0x00000012,0x00000018,0x0004003d,0x00000007,0x00000019, + 0x00000009,0x0004003d,0x00000007,0x0000001a,0x00000012,0x000500af,0x0000001c,0x0000001d, + 0x00000019,0x0000001a,0x0004009a,0x0000001b,0x0000001e,0x0000001d,0x000300f7,0x00000020, + 0x00000000,0x000400fa,0x0000001e,0x0000001f,0x00000020,0x000200f8,0x0000001f,0x000100fd, + 0x000200f8,0x00000020,0x0004003d,0x00000026,0x00000029,0x00000028,0x00040064,0x00000025, + 0x0000002b,0x00000029,0x00050067,0x00000007,0x0000002c,0x0000002b,0x0000002a,0x0004003d, + 0x00000007,0x0000002d,0x00000012,0x000500aa,0x0000001c,0x0000002e,0x0000002c,0x0000002d, + 0x0004009b,0x0000001b,0x0000002f,0x0000002e,0x000300f7,0x00000032,0x00000000,0x000400fa, + 0x0000002f,0x00000031,0x00000039,0x000200f8,0x00000031,0x0004003d,0x00000026,0x00000033, + 0x00000028,0x0004003d,0x00000007,0x00000034,0x00000009,0x00040064,0x00000025,0x00000035, + 0x00000033,0x0007005f,0x00000036,0x00000037,0x00000035,0x00000034,0x00000002,0x0000002a, + 0x0008004f,0x00000022,0x00000038,0x00000037,0x00000037,0x00000000,0x00000001,0x00000002, + 0x0003003e,0x00000030,0x00000038,0x000200f9,0x00000032,0x000200f8,0x00000039,0x0004003d, + 0x00000026,0x0000003a,0x00000028,0x0004003d,0x00000007,0x0000003b,0x00000009,0x0004006f, + 0x0000003c,0x0000003d,0x0000003b,0x00050050,0x0000003c,0x0000003f,0x0000003e,0x0000003e, + 0x00050081,0x0000003c,0x00000040,0x0000003d,0x0000003f,0x0004003d,0x00000007,0x00000041, + 0x00000012,0x0004006f,0x0000003c,0x00000042,0x00000041,0x00050088,0x0000003c,0x00000043, + 0x00000040,0x00000042,0x00070058,0x00000036,0x00000045,0x0000003a,0x00000043,0x00000002, + 0x00000044,0x0008004f,0x00000022,0x00000046,0x00000045,0x00000045,0x00000000,0x00000001, + 0x00000002,0x0003003e,0x00000030,0x00000046,0x000200f9,0x00000032,0x000200f8,0x00000032, + 0x0004003d,0x00000022,0x00000047,0x00000030,0x0003003e,0x00000024,0x00000047,0x0004003d, + 0x00000022,0x00000048,0x00000024,0x0004009c,0x00000049,0x0000004a,0x00000048,0x0004009a, + 0x0000001b,0x0000004b,0x0000004a,0x000400a8,0x0000001b,0x0000004c,0x0000004b,0x000300f7, + 0x0000004e,0x00000000,0x000400fa,0x0000004c,0x0000004d,0x0000004e,0x000200f8,0x0000004d, + 0x0004003d,0x00000022,0x0000004f,0x00000024,0x0004009d,0x00000049,0x00000050,0x0000004f, + 0x0004009a,0x0000001b,0x00000051,0x00000050,0x000200f9,0x0000004e,0x000200f8,0x0000004e, + 0x000700f5,0x0000001b,0x00000052,0x0000004b,0x00000032,0x00000051,0x0000004d,0x000300f7, + 0x00000054,0x00000000,0x000400fa,0x00000052,0x00000053,0x00000054,0x000200f8,0x00000053, + 0x0003003e,0x00000024,0x00000055,0x000200f9,0x00000054,0x000200f8,0x00000054,0x0004003d, + 0x00000022,0x00000057,0x00000024,0x0007000c,0x00000022,0x00000058,0x00000001,0x00000028, + 0x00000057,0x00000055,0x0003003e,0x00000056,0x00000058,0x0004003d,0x00000014,0x00000059, + 0x00000016,0x0004003d,0x00000007,0x0000005a,0x00000009,0x0004003d,0x00000022,0x0000005b, + 0x00000056,0x0004003d,0x00000022,0x0000005c,0x00000056,0x00050085,0x00000022,0x0000005d, + 0x0000005b,0x0000005c,0x00050051,0x00000013,0x0000005f,0x0000005d,0x00000000,0x00050051, + 0x00000013,0x00000060,0x0000005d,0x00000001,0x00050051,0x00000013,0x00000061,0x0000005d, + 0x00000002,0x00070050,0x00000036,0x00000062,0x0000005f,0x00000060,0x00000061,0x0000005e, + 0x00040063,0x00000059,0x0000005a,0x00000062,0x000100fd,0x00010038 }; diff --git a/gpu/vk/vk_draw.cpp b/gpu/vk/vk_draw.cpp index d791ce5c5..cd31958b4 100644 --- a/gpu/vk/vk_draw.cpp +++ b/gpu/vk/vk_draw.cpp @@ -5746,7 +5746,18 @@ bool clip_to_previous(const Mat& current, const Mat& previous, Mat& out) { bool dlss_image(DlssImg& im, uint32_t w, uint32_t h, VkFormat format, VkImageUsageFlags usage, VkCommandBuffer cmd) { if (im.image && im.w == w && im.h == h) return true; - im = {}; // (the one before is kept: work in flight may still use it, and the sizes seldom change) + // (the one before is given back 120 presents later, when no work in flight can use it, as typed_upscale's histories are: with + // AMD FSR 4.1 the Resolution row may be Auto, and the game's dynamic resolution changes the render size every so often) + struct Old { DlssImg im; uint64_t frame; }; + static std::vector old; + for (size_t i = 0; i < old.size();) { + if (texture_frame_no() - old[i].frame < 120) { i++; continue; } + if (old[i].im.view) vkDestroyImageView(dev.device, old[i].im.view, nullptr); + destroy_image(old[i].im.image, old[i].im.mem); + old.erase(old.begin() + (ptrdiff_t)i); + } + if (im.image) old.push_back({im, texture_frame_no()}); + im = {}; VkImageCreateInfo ic{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; ic.imageType = VK_IMAGE_TYPE_2D, ic.format = format, ic.extent = {w, h, 1}, ic.mipLevels = 1, ic.arrayLayers = 1; ic.samples = VK_SAMPLE_COUNT_1_BIT, ic.tiling = VK_IMAGE_TILING_OPTIMAL, ic.usage = usage; diff --git a/gpu/vk/vk_fsr4.cpp b/gpu/vk/vk_fsr4.cpp index c357d4835..7b8247726 100644 --- a/gpu/vk/vk_fsr4.cpp +++ b/gpu/vk/vk_fsr4.cpp @@ -2,9 +2,12 @@ // (Kits/FidelityFX/docs/getting-started/ffx-api.md): a Vulkan backend description chained to the upscale context description, // inputs read in SHADER_READ_ONLY_OPTIMAL, the output written in GENERAL. Ported from madebyjordan's FSR 4.1 work on Lichii // (vk_fsr4_upscaler.cpp), GPL-3.0-or-later. -#include "vk_paths.h" #include "vk_fsr4.h" +#ifdef _WIN32 // (AMD's signed FSR 4 runtime is Windows only: elsewhere FSR is never available, below) + +#include "vk_paths.h" + #include #include #include @@ -18,6 +21,7 @@ #include "api/include/ffx_api_types.h" #include "api/include/vk/ffx_api_vk.h" #include "upscalers/include/ffx_upscale.h" +#include "vk_work.h" // (after the others: the barriers here count as work for full_barrier) namespace mkwvk { namespace { @@ -163,8 +167,9 @@ bool make_context(uint32_t w, uint32_t h) { fsr.upscale = {}; fsr.upscale.header.type = FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE; fsr.upscale.header.pNext = &fsr.backend.header; - // (the game's colour is tonemapped and square-root encoded already: LDR, perceptual, no auto exposure; depth not inverted) - fsr.upscale.flags = FFX_UPSCALE_ENABLE_NON_LINEAR_COLORSPACE; + // (the game's colour is tonemapped and square-root encoded already: LDR, perceptual, no auto exposure; depth not inverted. + // The render size changes with the Resolution row and the game's dynamic resolution, under the one context) + fsr.upscale.flags = FFX_UPSCALE_ENABLE_NON_LINEAR_COLORSPACE | FFX_UPSCALE_ENABLE_DYNAMIC_RESOLUTION; fsr.upscale.maxRenderSize = {w, h}; fsr.upscale.maxUpscaleSize = {w, h}; fsr.upscale.fpMessage = &on_message; @@ -256,6 +261,7 @@ bool fsr4_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& d.cameraNear = 0.1f, d.cameraFar = 1000.0f, d.cameraFovAngleVertical = 1.0f, d.viewSpaceToMetersFactor = 1.0f; d.flags = FFX_UPSCALE_FLAG_NON_LINEAR_COLOR_SRGB; const ffxReturnCode_t r = fsr.dispatch(&fsr.context, &d.header); + note_work(); // (AMD's dispatches: full_barrier must not take the next barrier for a repeat of the one before them) const VkImageMemoryBarrier2 out[4] = {barrier(color, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), barrier(depth, VK_ACCESS_2_SHADER_READ_BIT, any, R, G), @@ -279,3 +285,16 @@ void fsr4_stop() { } } // namespace mkwvk + +#else + +namespace mkwvk { +bool fsr4_available() { return false; } +const char* fsr4_reason() { return "Windows only"; } +bool fsr4_evaluate(VkCommandBuffer, const DlssImage&, const DlssImage&, const DlssImage&, const DlssImage&, float, float, bool) { + return false; +} +void fsr4_stop() {} +} // namespace mkwvk + +#endif diff --git a/gpu/vk/vk_fsr4.h b/gpu/vk/vk_fsr4.h index 9a96f2aaa..74039fbbb 100644 --- a/gpu/vk/vk_fsr4.h +++ b/gpu/vk/vk_fsr4.h @@ -11,7 +11,7 @@ namespace mkwvk { -/// The loader DLL from RX_FSR4_DIR, else the executable's folder, else the game folder; an FSR 4.x upscaler for this device +/// (Windows only) The loader DLL from RX_FSR4_DIR, else the executable's folder, else the game folder; an FSR 4.x upscaler for this device /// among those it lists. Made at the first use (no instance or device extensions needed), once. True when there is one bool fsr4_available(); const char* fsr4_reason(); // (why not, short: the menu and the log) diff --git a/readme.md b/readme.md index 3b3670ac3..a00c2fb0e 100644 --- a/readme.md +++ b/readme.md @@ -256,7 +256,8 @@ For one run: `RX_DLSS=0/1`, `RX_DLSS_PRESET=J..M`, `RX_DLSS_DIR=`, `HOS_ FSR 4.1 is optional. It replaces the game's own upscale the same way, from the scene's depth and the camera's motion, and moves the 3D by a sub-pixel amount each frame (a jitter) so it can rebuild edges and fine detail over several -frames. It runs on AMD's RDNA 2 cards and newer (RDNA 2 and 3 use its INT8 model). **Resolution** sets the size it +frames. It is for AMD cards: tested on an RX 6700 XT (RDNA 2), which runs FSR 4's INT8 model. Windows only. +**Resolution** sets the size it upscales from: 75% is FSR's Quality, 67% Balanced, 50% Performance, 100% anti-aliasing only. Hookshot does not include AMD's files: put `amd_fidelityfx_loader_vk.dll` and `amd_fidelityfx_upscaler_vk.dll` from the [FidelityFX SDK](https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK) 2.4 release (`Kits/FidelityFX/signedbin`) From 9d0893257bd6c354e766d93e3d6cb686b1395631 Mon Sep 17 00:00:00 2001 From: NoBoDyZ Date: Mon, 9 Nov 2026 00:17:09 +0100 Subject: [PATCH 04/13] feat(fsr): run FSR 4 on Linux through a Vulkan FSR 4 library There is no AMD loader on Linux, so the upscaler library itself (amd_fidelityfx_upscaler_vk.so) is loaded with dlopen from RX_FSR4_DIR or beside the game. A Vulkan FSR 4 build reads the SDK's older backend description and records with descriptor buffers: the description is chained next to the current one, and VK_EXT_descriptor_buffer is enabled only when the library is there. Windows is unchanged. BITMAPFILEHEADER joins the POSIX windows.h shim, for the menu dump. Assisted-by: Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 --- gpu/vk/vk_fsr4.cpp | 55 ++++++++++++++++++++++++++++++++++++++++---- gpu/vk/vk_fsr4.h | 2 ++ gpu/vk/vk_main.cpp | 6 +++++ host/posix/windows.h | 3 +++ 4 files changed, 62 insertions(+), 4 deletions(-) diff --git a/gpu/vk/vk_fsr4.cpp b/gpu/vk/vk_fsr4.cpp index 7b8247726..f5389ae9b 100644 --- a/gpu/vk/vk_fsr4.cpp +++ b/gpu/vk/vk_fsr4.cpp @@ -14,6 +14,10 @@ #include #include #include +#ifndef _WIN32 +#include +#include +#endif #include "vk_internal.h" @@ -26,7 +30,12 @@ namespace mkwvk { namespace { +#ifdef _WIN32 constexpr const char* kLoader = "amd_fidelityfx_loader_vk.dll"; +#else +// (linux) no AMD loader exists there: the upscaler library itself, which exports the ffx entry points (a Vulkan FSR 4 build) +constexpr const char* kLoader = "amd_fidelityfx_upscaler_vk.so"; +#endif struct Fsr { bool tried = false, ok = false; @@ -41,6 +50,9 @@ struct Fsr { VkDeviceContext device_context{}; ffxCreateBackendVKDesc backend{}; ffxOverrideVersion version{}; +#ifndef _WIN32 + ffxCreateBackendVKDesc_DEPRECATED legacy_backend{}; // (linux) the backend description a Vulkan FSR 4 build like fsr4-vk reads +#endif ffxCreateContextDescUpscale upscale{}; ffxContext context = nullptr; uint32_t max_w = 0, max_h = 0; // (the context's sizes: the output's, the most the render size can be) @@ -74,13 +86,28 @@ std::vector loader_dirs() { return d; } +void* symbol(const char* name) { +#ifdef _WIN32 + return (void*)GetProcAddress(fsr.lib, name); +#else + return dlsym(fsr.lib, name); +#endif +} + bool start() { fsr.tried = true; for (const std::string& dir : loader_dirs()) { +#ifdef _WIN32 const std::string path = dir + "\\" + kLoader; if (GetFileAttributesA(path.c_str()) == INVALID_FILE_ATTRIBUTES) continue; // (the upscaler DLL the loader picks lies beside it: the loader's folder first in the search) fsr.lib = LoadLibraryExA(path.c_str(), nullptr, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); +#else + const std::string path = dir + "/" + kLoader; + if (access(path.c_str(), R_OK) != 0) continue; + fsr.lib = (HMODULE)dlopen(path.c_str(), RTLD_NOW | RTLD_LOCAL); + if (!fsr.lib) logf("vk: fsr4: %s not loaded: %s", path.c_str(), dlerror()); +#endif if (fsr.lib) { logf("vk: fsr4: %s", path.c_str()); break; @@ -91,10 +118,10 @@ bool start() { logf("vk: fsr4: %s not found (RX_FSR4_DIR, or beside hookshot.exe with amd_fidelityfx_upscaler_vk.dll)", kLoader); return false; } - fsr.create = (PfnFfxCreateContext)(void*)GetProcAddress(fsr.lib, "ffxCreateContext"); - fsr.destroy = (PfnFfxDestroyContext)(void*)GetProcAddress(fsr.lib, "ffxDestroyContext"); - fsr.query = (PfnFfxQuery)(void*)GetProcAddress(fsr.lib, "ffxQuery"); - fsr.dispatch = (PfnFfxDispatch)(void*)GetProcAddress(fsr.lib, "ffxDispatch"); + fsr.create = (PfnFfxCreateContext)symbol("ffxCreateContext"); + fsr.destroy = (PfnFfxDestroyContext)symbol("ffxDestroyContext"); + fsr.query = (PfnFfxQuery)symbol("ffxQuery"); + fsr.dispatch = (PfnFfxDispatch)symbol("ffxDispatch"); if (!fsr.create || !fsr.destroy || !fsr.query || !fsr.dispatch) { fsr.reason = "the AMD loader lacks the FSR API"; logf("vk: fsr4: %s lacks the FSR API's entry points", kLoader); @@ -164,6 +191,16 @@ bool make_context(uint32_t w, uint32_t h) { fsr.version.header.type = FFX_API_DESC_TYPE_OVERRIDE_VERSION; fsr.version.versionId = fsr.version_id; fsr.backend.header.pNext = &fsr.version.header; +#ifndef _WIN32 + // (linux) fsr4-vk looks for the SDK's older backend description, not ffxCreateBackendVKDesc: without it, it finds no device + // and creation returns FFX_API_RETURN_ERROR_PARAMETER. Both stay chained + fsr.legacy_backend = {}; + fsr.legacy_backend.header.type = FFX_API_CREATE_CONTEXT_DESC_TYPE_BACKEND_VK_DEPRECATED; + fsr.legacy_backend.vkDevice = fsr.device_context.vkDevice; + fsr.legacy_backend.vkPhysicalDevice = fsr.device_context.vkPhysicalDevice; + fsr.legacy_backend.vkDeviceProcAddr = fsr.device_context.vkDeviceProcAddr; + fsr.version.header.pNext = &fsr.legacy_backend.header; +#endif fsr.upscale = {}; fsr.upscale.header.type = FFX_API_CREATE_CONTEXT_DESC_TYPE_UPSCALE; fsr.upscale.header.pNext = &fsr.backend.header; @@ -218,6 +255,16 @@ bool fsr4_available() { } const char* fsr4_reason() { return fsr.reason; } +bool fsr4_wants_descriptor_buffer() { +#ifdef _WIN32 + return false; +#else + for (const std::string& dir : loader_dirs()) + if (access((dir + "/" + kLoader).c_str(), R_OK) == 0) return true; + return false; +#endif +} + bool fsr4_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& depth, const DlssImage& motion, const DlssImage& output, float jitter_x, float jitter_y, bool reset) { if (!fsr4_available()) return false; diff --git a/gpu/vk/vk_fsr4.h b/gpu/vk/vk_fsr4.h index 74039fbbb..9dded2db7 100644 --- a/gpu/vk/vk_fsr4.h +++ b/gpu/vk/vk_fsr4.h @@ -15,6 +15,8 @@ namespace mkwvk { /// among those it lists. Made at the first use (no instance or device extensions needed), once. True when there is one bool fsr4_available(); const char* fsr4_reason(); // (why not, short: the menu and the log) +/// (linux) a Vulkan FSR 4 library such as fsr4-vk's is there and records with descriptor buffers: the device has to enable them +bool fsr4_wants_descriptor_buffer(); /// Records one FSR evaluation on cmd: color (perceptual, tonemapped: FSR's LDR mode), depth (standard, not inverted) and motion /// (render pixels, towards the previous frame) at the render size, output (RGBA16F, STORAGE | SAMPLED) at the output size. All diff --git a/gpu/vk/vk_main.cpp b/gpu/vk/vk_main.cpp index 5b07ef7e8..8feb78925 100644 --- a/gpu/vk/vk_main.cpp +++ b/gpu/vk/vk_main.cpp @@ -17,6 +17,7 @@ #include "vk_draw.h" #include "vk_internal.h" #include "vk_dlss.h" +#include "vk_fsr4.h" #include "gpu_choice.h" #include "vk_menu.h" @@ -240,6 +241,8 @@ bool create_device() { optional(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME, dev.coop_matrix); for (const char* e : dlss_device_exts()) // (hookshot: NVIDIA Streamline's, vk_dlss.cpp) if (has_extension(exts, e) && std::none_of(want.begin(), want.end(), [&](const char* x) { return !std::strcmp(x, e); })) want.push_back(e); + bool fsr_descriptor_buffer = false; // (hookshot, linux: only with a Vulkan FSR 4 library beside the game, vk_fsr4.cpp) + if (fsr4_wants_descriptor_buffer()) optional(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME, fsr_descriptor_buffer); // the queue: one family for graphics, compute and transfer vkGetPhysicalDeviceQueueFamilyProperties(dev.physical, &n, nullptr); @@ -290,7 +293,10 @@ bool create_device() { if (dev.view_2d_of_3d) *tail = &v2d3d, tail = &v2d3d.pNext; VkPhysicalDeviceCooperativeMatrixFeaturesKHR coop{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR}; if (dev.coop_matrix) *tail = &coop, tail = &coop.pNext; + VkPhysicalDeviceDescriptorBufferFeaturesEXT descriptor_buffer{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT}; + if (fsr_descriptor_buffer) *tail = &descriptor_buffer, tail = &descriptor_buffer.pNext; vkGetPhysicalDeviceFeatures2(dev.physical, &f); + descriptor_buffer.descriptorBufferCaptureReplay = VK_FALSE; dev.view_2d_of_3d = dev.view_2d_of_3d && v2d3d.sampler2DViewOf3D; coop.cooperativeMatrixRobustBufferAccess = VK_FALSE; dev.coop_matrix = dev.coop_matrix && coop.cooperativeMatrix && diff --git a/host/posix/windows.h b/host/posix/windows.h index 85d262f0f..84efc5914 100644 --- a/host/posix/windows.h +++ b/host/posix/windows.h @@ -577,6 +577,9 @@ int MessageBoxA(HWND w, LPCSTR text, LPCSTR caption, UINT type); #define ANTIALIASED_QUALITY 4 #define CLEARTYPE_QUALITY 5 #define DEFAULT_PITCH 0 +#pragma pack(push, 2) +typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1, bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; /* (the 14 bytes of a .bmp) */ +#pragma pack(pop) typedef struct { DWORD biSize; LONG biWidth, biHeight; From b63c8ebc7f2837bdce1e7c11ab1d3820ab6b7437 Mon Sep 17 00:00:00 2001 From: NoBoDyZ Date: Mon, 9 Nov 2026 00:17:09 +0100 Subject: [PATCH 05/13] fix(fsr): pick the first of equal providers, give the upscaler a unit exposure A Vulkan FSR 4 build lists its Auto provider before INT8 and FP8, so taking the last of equal versions chose FP8 on hardware without it. It also rejects a dispatch without an exposure: the game's colour is already tonemapped, so it gets a 1x1 R32F of 1. Assisted-by: Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 --- gpu/vk/vk_fsr4.cpp | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gpu/vk/vk_fsr4.cpp b/gpu/vk/vk_fsr4.cpp index f5389ae9b..c8e097668 100644 --- a/gpu/vk/vk_fsr4.cpp +++ b/gpu/vk/vk_fsr4.cpp @@ -157,7 +157,8 @@ bool start() { listed += (listed.empty() ? "" : ", ") + std::string(name); unsigned v[3] = {0, 0, 0}; sscanf(name, "%u.%u.%u", &v[0], &v[1], &v[2]); - if (v[0] == 4 && (v[1] > best[1] || (v[1] == best[1] && v[2] >= best[2]))) { + // (the first of equal versions: a Vulkan FSR 4 build lists its Auto, which picks the GPU's model, before INT8 and FP8) + if (v[0] == 4 && (!fsr.version_id || v[1] > best[1] || (v[1] == best[1] && v[2] > best[2]))) { std::memcpy(best, v, sizeof best); fsr.version_id = ids[i]; } @@ -247,6 +248,35 @@ void barriers(VkCommandBuffer cmd, const VkImageMemoryBarrier2* b, uint32_t n) { vkCmdPipelineBarrier2(cmd, &di); } +#ifndef _WIN32 +/// (linux) a Vulkan FSR 4 build takes no frame without an exposure, and the game's colour is tonemapped already: a 1x1 R32F of 1 +bool unit_exposure(VkCommandBuffer cmd, DlssImage& out) { + static VkImage image = VK_NULL_HANDLE; + static VmaAllocation allocation{}; + const bool made = image != VK_NULL_HANDLE; + if (!made) { + VkImageCreateInfo ci{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; + ci.imageType = VK_IMAGE_TYPE_2D, ci.format = VK_FORMAT_R32_SFLOAT, ci.extent = {1, 1, 1}, ci.mipLevels = 1, ci.arrayLayers = 1; + ci.samples = VK_SAMPLE_COUNT_1_BIT, ci.tiling = VK_IMAGE_TILING_OPTIMAL; + ci.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + if (!create_image(ci, image, allocation)) return image = VK_NULL_HANDLE, false; + } + out = DlssImage{image, VK_NULL_HANDLE, VK_FORMAT_R32_SFLOAT, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT}; + if (!made) { + const VkImageMemoryBarrier2 to_clear = barrier(out, 0, VK_ACCESS_2_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + barriers(cmd, &to_clear, 1); + const VkClearColorValue one{{1.0f, 0.0f, 0.0f, 0.0f}}; + const VkImageSubresourceRange range{VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}; + vkCmdClearColorImage(cmd, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &one, 1, &range); + const VkImageMemoryBarrier2 to_read = barrier(out, VK_ACCESS_2_TRANSFER_WRITE_BIT, VK_ACCESS_2_SHADER_READ_BIT, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); + barriers(cmd, &to_read, 1); + } + return true; +} +#endif + } // namespace bool fsr4_available() { @@ -276,6 +306,10 @@ bool fsr4_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& reset = true; } if (color.width > fsr.max_w || color.height > fsr.max_h) return false; // (a render size past the output: not an upscale) +#ifndef _WIN32 + DlssImage exposure{}; + if (!unit_exposure(cmd, exposure)) return false; +#endif const auto now = std::chrono::steady_clock::now(); const float frame_ms = fsr.evals ? std::chrono::duration(now - fsr.last).count() : 1000.0f / 30.0f; fsr.last = now; @@ -295,6 +329,9 @@ bool fsr4_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& d.depth = resource(depth, VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_COMPUTE_READ); d.motionVectors = resource(motion, VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_COMPUTE_READ); d.output = resource(output, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_UNORDERED_ACCESS); +#ifndef _WIN32 + d.exposure = resource(exposure, VK_IMAGE_USAGE_SAMPLED_BIT, FFX_API_RESOURCE_STATE_COMPUTE_READ); +#endif d.jitterOffset = {jitter_x, jitter_y}; d.motionVectorScale = {1.0f, 1.0f}; // (render pixels already, towards the previous frame) d.renderSize = {color.width, color.height}; From 322e6905252644a36d9a6701bc24e3dbcac2042f Mon Sep 17 00:00:00 2001 From: NoBoDyZ Date: Mon, 9 Nov 2026 00:54:41 +0100 Subject: [PATCH 06/13] fix(fsr): build the FSR 4 path on Linux The file was Windows-only, which hid the Linux loading. Remove the guard and its stubs, and say in the readme what Linux needs. Assisted-by: Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 --- gpu/vk/vk_fsr4.cpp | 15 --------------- gpu/vk/vk_fsr4.h | 2 +- readme.md | 2 +- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/gpu/vk/vk_fsr4.cpp b/gpu/vk/vk_fsr4.cpp index c8e097668..9604d5bfc 100644 --- a/gpu/vk/vk_fsr4.cpp +++ b/gpu/vk/vk_fsr4.cpp @@ -4,8 +4,6 @@ // (vk_fsr4_upscaler.cpp), GPL-3.0-or-later. #include "vk_fsr4.h" -#ifdef _WIN32 // (AMD's signed FSR 4 runtime is Windows only: elsewhere FSR is never available, below) - #include "vk_paths.h" #include @@ -369,16 +367,3 @@ void fsr4_stop() { } } // namespace mkwvk - -#else - -namespace mkwvk { -bool fsr4_available() { return false; } -const char* fsr4_reason() { return "Windows only"; } -bool fsr4_evaluate(VkCommandBuffer, const DlssImage&, const DlssImage&, const DlssImage&, const DlssImage&, float, float, bool) { - return false; -} -void fsr4_stop() {} -} // namespace mkwvk - -#endif diff --git a/gpu/vk/vk_fsr4.h b/gpu/vk/vk_fsr4.h index 9dded2db7..b3bea5db8 100644 --- a/gpu/vk/vk_fsr4.h +++ b/gpu/vk/vk_fsr4.h @@ -11,7 +11,7 @@ namespace mkwvk { -/// (Windows only) The loader DLL from RX_FSR4_DIR, else the executable's folder, else the game folder; an FSR 4.x upscaler for this device +/// The loader DLL (Linux: a Vulkan FSR 4 library) from RX_FSR4_DIR, else the executable's folder, else the game folder; an FSR 4.x upscaler for this device /// among those it lists. Made at the first use (no instance or device extensions needed), once. True when there is one bool fsr4_available(); const char* fsr4_reason(); // (why not, short: the menu and the log) diff --git a/readme.md b/readme.md index a00c2fb0e..de9777d36 100644 --- a/readme.md +++ b/readme.md @@ -256,7 +256,7 @@ For one run: `RX_DLSS=0/1`, `RX_DLSS_PRESET=J..M`, `RX_DLSS_DIR=`, `HOS_ FSR 4.1 is optional. It replaces the game's own upscale the same way, from the scene's depth and the camera's motion, and moves the 3D by a sub-pixel amount each frame (a jitter) so it can rebuild edges and fine detail over several -frames. It is for AMD cards: tested on an RX 6700 XT (RDNA 2), which runs FSR 4's INT8 model. Windows only. +frames. It is for AMD cards: tested on an RX 6700 XT (RDNA 2), which runs FSR 4's INT8 model. On Linux it needs a Vulkan FSR 4 library (`amd_fidelityfx_upscaler_vk.so`) beside the game. **Resolution** sets the size it upscales from: 75% is FSR's Quality, 67% Balanced, 50% Performance, 100% anti-aliasing only. Hookshot does not include AMD's files: put `amd_fidelityfx_loader_vk.dll` and `amd_fidelityfx_upscaler_vk.dll` from the From 14329d95138bcc219bbacbaa47536bacb8601494 Mon Sep 17 00:00:00 2001 From: notquiteog Date: Sun, 8 Nov 2026 15:52:31 -0600 Subject: [PATCH 07/13] feat: compile AMD's FSR 3.1 upscaler passes from the FidelityFX SDK The first half of an FSR backend: its shaders. Adds AMD's FidelityFX SDK v1.1.4 GPU sources under third_party/fidelityfx-sdk, unmodified and MIT, with a provenance note, and scripts/fsr3_shaders.py to compile the eleven variants into gpu/vk/shaders/fsr3_*_comp_spv.h. Eleven, not eight: the eight passes, plus wave-free variants of both pyramids for devices without the subgroup operations the single-pass downsampler prefers, and an accumulate compiled with sharpening on. The option set lives in one place in the script because each option is a promise about the inputs -- HDR colour, low-resolution motion that is not jittered, reversed depth -- and the host code has to hand the passes what they were compiled for. This is the SDK-source route rather than AMD's FidelityFX API, so no runtime library is needed, none is included, and one code path serves Windows and Linux. #577 vendors AMD's API headers for the other route under third_party/fidelityfx; if both land, one should go. The headers are checked in, like every other shader in gpu/vk/shaders, so a clone builds with no glslang. tests/test_fsr3_shaders.py recompiles all eleven and compares, and validates each module with spirv-val, so the headers cannot drift from their sources and an invalid module is caught here rather than on a device. It is wired into run_all's tool table, and glslang-tools is added to the Linux CI step that had spirv-tools only. That costs about 1.3 MB of generated hex. Generating at build time would remove it at the price of a glslang dependency for every build. No renderer change: nothing includes these headers yet. The host side that records the passes is the next commit. Checked here: all eleven compile and pass spirv-val, the check passes, and it fails as it should on a changed word in a header, a changed compile option and a missing header. python -I -B tests/run_all.py: 90 passed, with the same 8 failures and 12 skips as upstream/main (a missing clang++ or SPIR-V headers). Assisted-by: Claude Opus 5 Co-Authored-By: Claude Opus 5 --- .github/workflows/source-regressions.yml | 2 +- gpu/vk/shaders/fsr3_accumulate_comp_spv.h | 1995 +++++++++++ .../fsr3_accumulate_sharpen_comp_spv.h | 1980 +++++++++++ .../shaders/fsr3_luma_instability_comp_spv.h | 543 +++ gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h | 1527 +++++++++ .../fsr3_luma_pyramid_nowave_comp_spv.h | 1567 +++++++++ gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h | 562 ++++ .../fsr3_prepare_reactivity_comp_spv.h | 1083 ++++++ gpu/vk/shaders/fsr3_rcas_comp_spv.h | 694 ++++ gpu/vk/shaders/fsr3_shading_change_comp_spv.h | 282 ++ .../fsr3_shading_change_pyramid_comp_spv.h | 1903 +++++++++++ ...3_shading_change_pyramid_nowave_comp_spv.h | 1942 +++++++++++ scripts/fsr3_shaders.py | 118 + tests/run_all.py | 2 + tests/test_fsr3_shaders.py | 33 + third_party/fidelityfx-sdk/LICENSE.txt | 21 + third_party/fidelityfx-sdk/PROVENANCE.md | 24 + .../include/FidelityFX/gpu/ffx_common_types.h | 558 +++ .../include/FidelityFX/gpu/ffx_core.h | 80 + .../include/FidelityFX/gpu/ffx_core_glsl.h | 1916 +++++++++++ .../FidelityFX/gpu/ffx_core_gpu_common.h | 2736 +++++++++++++++ .../FidelityFX/gpu/ffx_core_gpu_common_half.h | 2981 +++++++++++++++++ .../FidelityFX/gpu/ffx_core_portability.h | 46 + .../include/FidelityFX/gpu/fsr1/ffx_fsr1.h | 1252 +++++++ .../ffx_fsr3upscaler_accumulate.h | 172 + .../ffx_fsr3upscaler_callbacks_glsl.h | 903 +++++ .../fsr3upscaler/ffx_fsr3upscaler_common.h | 403 +++ .../ffx_fsr3upscaler_luma_instability.h | 115 + .../ffx_fsr3upscaler_luma_pyramid.h | 192 ++ .../ffx_fsr3upscaler_prepare_inputs.h | 152 + .../ffx_fsr3upscaler_prepare_reactivity.h | 283 ++ .../gpu/fsr3upscaler/ffx_fsr3upscaler_rcas.h | 112 + .../fsr3upscaler/ffx_fsr3upscaler_reproject.h | 79 + .../fsr3upscaler/ffx_fsr3upscaler_resources.h | 100 + .../fsr3upscaler/ffx_fsr3upscaler_sample.h | 628 ++++ .../ffx_fsr3upscaler_shading_change.h | 68 + .../ffx_fsr3upscaler_shading_change_pyramid.h | 297 ++ .../fsr3upscaler/ffx_fsr3upscaler_upsample.h | 644 ++++ .../include/FidelityFX/gpu/spd/ffx_spd.h | 1014 ++++++ .../ffx_fsr3upscaler_accumulate_pass.glsl | 75 + ...fx_fsr3upscaler_luma_instability_pass.glsl | 62 + .../ffx_fsr3upscaler_luma_pyramid_pass.glsl | 65 + .../ffx_fsr3upscaler_prepare_inputs_pass.glsl | 61 + ..._fsr3upscaler_prepare_reactivity_pass.glsl | 65 + .../ffx_fsr3upscaler_rcas_pass.glsl | 59 + .../ffx_fsr3upscaler_shading_change_pass.glsl | 55 + ...3upscaler_shading_change_pyramid_pass.glsl | 67 + 47 files changed, 29517 insertions(+), 1 deletion(-) create mode 100644 gpu/vk/shaders/fsr3_accumulate_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_luma_instability_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_rcas_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_shading_change_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h create mode 100644 gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h create mode 100644 scripts/fsr3_shaders.py create mode 100644 tests/test_fsr3_shaders.py create mode 100644 third_party/fidelityfx-sdk/LICENSE.txt create mode 100644 third_party/fidelityfx-sdk/PROVENANCE.md create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_common_types.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_glsl.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common_half.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_portability.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr1/ffx_fsr1.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_accumulate.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_common.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_instability.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_rcas.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_reproject.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_resources.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_sample.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_upsample.h create mode 100644 third_party/fidelityfx-sdk/include/FidelityFX/gpu/spd/ffx_spd.h create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl create mode 100644 third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl diff --git a/.github/workflows/source-regressions.yml b/.github/workflows/source-regressions.yml index 40bb187d5..75267bde8 100644 --- a/.github/workflows/source-regressions.yml +++ b/.github/workflows/source-regressions.yml @@ -56,7 +56,7 @@ jobs: run: python -m pip install --disable-pip-version-check --no-deps zstandard==0.25.0 - name: Compilers and the SPIR-V validator if: runner.os == 'Linux' - run: sudo apt-get update && sudo apt-get install -y g++ clang spirv-tools + run: sudo apt-get update && sudo apt-get install -y g++ clang spirv-tools glslang-tools # (the steps below all run when one before them failed, so one run shows every failure) - name: Check Windows native source regressions diff --git a/gpu/vk/shaders/fsr3_accumulate_comp_spv.h b/gpu/vk/shaders/fsr3_accumulate_comp_spv.h new file mode 100644 index 000000000..d746783c1 --- /dev/null +++ b/gpu/vk/shaders/fsr3_accumulate_comp_spv.h @@ -0,0 +1,1995 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_ACCUMULATE_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x00000924,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x00020011,0x00000038,0x0006000b,0x00000001,0x4c534c47, + 0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005, + 0x00000004,0x6e69616d,0x00000000,0x00000912,0x00060010,0x00000004,0x00000011,0x00000008, + 0x00000008,0x00000001,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458, + 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000, + 0x000b0004,0x455f4c47,0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972, + 0x6974656d,0x79745f63,0x00736570,0x000a0004,0x455f4c47,0x735f5458,0x65646168,0x6d695f72, + 0x5f656761,0x64616f6c,0x726f665f,0x7474616d,0x00006465,0x000a0004,0x475f4c47,0x4c474f4f, + 0x70635f45,0x74735f70,0x5f656c79,0x656e696c,0x7269645f,0x69746365,0x00006576,0x00080004, + 0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65,0x74636572,0x00657669,0x00040005, + 0x00000004,0x6e69616d,0x00000000,0x00070005,0x0000000c,0x4c786666,0x28707265,0x663b3166, + 0x31663b31,0x0000003b,0x00030005,0x00000009,0x00000078,0x00030005,0x0000000a,0x00000079, + 0x00030005,0x0000000b,0x00000074,0x00070005,0x00000014,0x4c786666,0x28707265,0x3b336676, + 0x3b336676,0x003b3166,0x00030005,0x00000011,0x00000078,0x00030005,0x00000012,0x00000079, + 0x00030005,0x00000013,0x00000074,0x00060005,0x00000018,0x53786666,0x72757461,0x28657461, + 0x003b3166,0x00030005,0x00000017,0x00000078,0x00060005,0x0000001e,0x46786666,0x74636172, + 0x32667628,0x0000003b,0x00030005,0x0000001d,0x00000078,0x00060005,0x00000023,0x4d786666, + 0x66286e69,0x31663b31,0x0000003b,0x00030005,0x00000021,0x00000078,0x00030005,0x00000022, + 0x00000079,0x00060005,0x00000028,0x4d786666,0x76286e69,0x763b3266,0x003b3266,0x00030005, + 0x00000026,0x00000078,0x00030005,0x00000027,0x00000079,0x00060005,0x0000002d,0x4d786666, + 0x76286e69,0x763b3366,0x003b3366,0x00030005,0x0000002b,0x00000078,0x00030005,0x0000002c, + 0x00000079,0x00060005,0x00000034,0x4d786666,0x76286e69,0x763b3466,0x003b3466,0x00030005, + 0x00000032,0x00000078,0x00030005,0x00000033,0x00000079,0x00060005,0x0000003b,0x4d786666, + 0x69286e69,0x31693b31,0x0000003b,0x00030005,0x00000039,0x00000078,0x00030005,0x0000003a, + 0x00000079,0x00060005,0x0000003f,0x4d786666,0x66287861,0x31663b31,0x0000003b,0x00030005, + 0x0000003d,0x00000078,0x00030005,0x0000003e,0x00000079,0x00060005,0x00000043,0x4d786666, + 0x76287861,0x763b3266,0x003b3266,0x00030005,0x00000041,0x00000078,0x00030005,0x00000042, + 0x00000079,0x00060005,0x00000047,0x4d786666,0x76287861,0x763b3366,0x003b3366,0x00030005, + 0x00000045,0x00000078,0x00030005,0x00000046,0x00000079,0x00060005,0x0000004b,0x4d786666, + 0x76287861,0x763b3466,0x003b3466,0x00030005,0x00000049,0x00000078,0x00030005,0x0000004a, + 0x00000079,0x00060005,0x0000004f,0x4d786666,0x69287861,0x31693b31,0x0000003b,0x00030005, + 0x0000004d,0x00000078,0x00030005,0x0000004e,0x00000079,0x00060005,0x00000053,0x50786666, + 0x6628776f,0x31663b31,0x0000003b,0x00030005,0x00000051,0x00000078,0x00030005,0x00000052, + 0x00000079,0x00050005,0x00000057,0x646e6552,0x69537265,0x0028657a,0x00060005,0x00000059, + 0x5278614d,0x65646e65,0x7a695372,0x00002865,0x00060005,0x0000005b,0x63737055,0x53656c61, + 0x28657a69,0x00000000,0x00090005,0x0000005d,0x76657250,0x73756f69,0x6d617246,0x73705565, + 0x656c6163,0x657a6953,0x00000028,0x00040005,0x00000060,0x7474694a,0x00287265,0x00070005, + 0x00000062,0x6e776f44,0x6c616373,0x63614665,0x28726f74,0x00000000,0x00080005,0x00000065, + 0x7474694a,0x65537265,0x6e657571,0x654c6563,0x6874676e,0x00000028,0x00070005,0x00000067, + 0x746c6544,0x65725061,0x6f707845,0x65727573,0x00000028,0x00050005,0x00000069,0x6d617246, + 0x646e4965,0x00287865,0x00060005,0x0000006b,0x6f6c6556,0x79746963,0x74636146,0x0028726f, + 0x00070005,0x00000070,0x64616f4c,0x75706e49,0x6c6f4374,0x7628726f,0x003b3269,0x00040005, + 0x0000006f,0x50785069,0x0000736f,0x00070005,0x00000074,0x64616f4c,0x74736948,0x2879726f, + 0x3b326976,0x00000000,0x00050005,0x00000073,0x48785069,0x6f747369,0x00007972,0x000c0005, + 0x00000079,0x726f7453,0x746e4965,0x616e7265,0x6c6f436c,0x6e41726f,0x69655764,0x28746867, + 0x3b326976,0x3b346676,0x00000000,0x00040005,0x00000077,0x50785069,0x0000736f,0x00060005, + 0x00000078,0x6c6f4366,0x6e41726f,0x69655764,0x00746867,0x000a0005,0x0000007e,0x726f7453, + 0x73705565,0x656c6163,0x74754f64,0x28747570,0x3b326976,0x3b336676,0x00000000,0x00040005, + 0x0000007c,0x50785069,0x0000736f,0x00040005,0x0000007d,0x6c6f4366,0x0000726f,0x000c0005, + 0x00000080,0x46746547,0x68747261,0x44747365,0x68747065,0x3170694d,0x6f736552,0x65637275, + 0x656d6944,0x6f69736e,0x0028736e,0x000a0005,0x00000084,0x706d6153,0x6146656c,0x65687472, + 0x65447473,0x4d687470,0x28317069,0x3b326676,0x00000000,0x00030005,0x00000083,0x00565566, + 0x00090005,0x00000087,0x706d6153,0x754c656c,0x6e49616d,0x62617473,0x74696c69,0x66762879, + 0x00003b32,0x00030005,0x00000086,0x00007675,0x00070005,0x0000008b,0x64616f4c,0x654e7752, + 0x636f4c77,0x7628736b,0x003b3269,0x00040005,0x0000008a,0x50785069,0x0000736f,0x00080005, + 0x00000090,0x726f7453,0x77654e65,0x6b636f4c,0x69762873,0x31663b32,0x0000003b,0x00040005, + 0x0000008e,0x50785069,0x0000736f,0x00040005,0x0000008f,0x4c77656e,0x006b636f,0x000a0005, + 0x00000094,0x64616f4c,0x616c6944,0x4d646574,0x6f69746f,0x6365566e,0x28726f74,0x3b326976, + 0x00000000,0x00050005,0x00000093,0x49785069,0x7475706e,0x00000000,0x00050005,0x00000096, + 0x6f707845,0x65727573,0x00000028,0x000a0005,0x0000009a,0x706d6153,0x6944656c,0x6574616c, + 0x61655264,0x76697463,0x73614d65,0x7628736b,0x003b3266,0x00030005,0x00000099,0x00565566, + 0x00070005,0x0000009d,0x34746547,0x6c65564b,0x7469636f,0x66762879,0x00003b32,0x00060005, + 0x0000009c,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00070005,0x0000009f,0x74636552, + 0x63696669,0x6f697461,0x786f426e,0x00000000,0x00060006,0x0000009f,0x00000000,0x43786f62, + 0x65746e65,0x00000072,0x00050006,0x0000009f,0x00000001,0x56786f62,0x00006365,0x00050006, + 0x0000009f,0x00000002,0x62626161,0x006e694d,0x00050006,0x0000009f,0x00000003,0x62626161, + 0x0078614d,0x00080006,0x0000009f,0x00000004,0x786f4266,0x746e6543,0x65577265,0x74686769, + 0x00000000,0x00180005,0x000000a5,0x74636552,0x63696669,0x6f697461,0x786f426e,0x49646441, + 0x6974696e,0x61536c61,0x656c706d,0x72747328,0x2d746375,0x74636552,0x63696669,0x6f697461, + 0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366763b,0x3b31663b, + 0x00000000,0x00070005,0x000000a2,0x74636572,0x63696669,0x6f697461,0x786f426e,0x00000000, + 0x00050005,0x000000a3,0x6f6c6f63,0x6d615372,0x00656c70,0x00060005,0x000000a4,0x6d615366, + 0x57656c70,0x68676965,0x00000074,0x00170005,0x000000ae,0x74636552,0x63696669,0x6f697461, + 0x786f426e,0x53646441,0x6c706d61,0x31622865,0x7274733b,0x2d746375,0x74636552,0x63696669, + 0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366763b, + 0x3b31663b,0x00000000,0x00060005,0x000000aa,0x696e4962,0x6c616974,0x706d6153,0x0000656c, + 0x00070005,0x000000ab,0x74636572,0x63696669,0x6f697461,0x786f426e,0x00000000,0x00050005, + 0x000000ac,0x6f6c6f63,0x6d615372,0x00656c70,0x00060005,0x000000ad,0x6d615366,0x57656c70, + 0x68676965,0x00000074,0x00170005,0x000000b2,0x74636552,0x63696669,0x6f697461,0x786f426e, + 0x706d6f43,0x56657475,0x61697261,0x4265636e,0x6144786f,0x73286174,0x63757274,0x65522d74, + 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, + 0x003b3131,0x00070005,0x000000b1,0x74636572,0x63696669,0x6f697461,0x786f426e,0x00000000, + 0x00060005,0x000000b6,0x436f4359,0x526f5467,0x76284247,0x003b3366,0x00040005,0x000000b5, + 0x6f435966,0x00006743,0x00060005,0x000000b9,0x54424752,0x6f43596f,0x76286743,0x003b3366, + 0x00040005,0x000000b8,0x62675266,0x00000000,0x00060005,0x000000bc,0x656e6f54,0x2870616d, + 0x3b336676,0x00000000,0x00040005,0x000000bb,0x62675266,0x00000000,0x00070005,0x000000bf, + 0x65766e49,0x54657372,0x6d656e6f,0x76287061,0x003b3366,0x00040005,0x000000be,0x62675266, + 0x00000000,0x00060005,0x000000c3,0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005, + 0x000000c2,0x00765566,0x00080005,0x000000c9,0x6d616c43,0x616f4c70,0x69762864,0x69763b32, + 0x69763b32,0x00003b32,0x00050005,0x000000c6,0x53785069,0x6c706d61,0x00000065,0x00050005, + 0x000000c7,0x4f785069,0x65736666,0x00000074,0x00060005,0x000000c8,0x78655469,0x65727574, + 0x657a6953,0x00000000,0x00080005,0x000000cf,0x6d616c43,0x28765570,0x3b326676,0x3b326976, + 0x3b326976,0x00000000,0x00030005,0x000000cc,0x00765566,0x00060005,0x000000cd,0x78655469, + 0x65727574,0x657a6953,0x00000000,0x00060005,0x000000ce,0x73655269,0x6372756f,0x7a695365, + 0x00000065,0x00070005,0x000000d4,0x6e4f7349,0x65726353,0x76286e65,0x763b3269,0x003b3269, + 0x00030005,0x000000d2,0x00736f70,0x00040005,0x000000d3,0x657a6973,0x00000000,0x00070005, + 0x000000d7,0x636e614c,0x32736f7a,0x6c436f4e,0x28706d61,0x003b3166,0x00030005,0x000000d6, + 0x00000078,0x00060005,0x000000da,0x636e614c,0x32736f7a,0x3b316628,0x00000000,0x00030005, + 0x000000d9,0x00000078,0x00090005,0x000000dd,0x636e614c,0x32736f7a,0x72707041,0x7153786f, + 0x6c436f4e,0x28706d61,0x003b3166,0x00030005,0x000000dc,0x00003278,0x00080005,0x000000e0, + 0x636e614c,0x32736f7a,0x72707041,0x7153786f,0x3b316628,0x00000000,0x00030005,0x000000df, + 0x00003278,0x000a0005,0x000000e8,0x636e614c,0x32736f7a,0x34667628,0x3466763b,0x3466763b, + 0x3466763b,0x3b31663b,0x00000000,0x00040005,0x000000e3,0x6c6f4366,0x0030726f,0x00040005, + 0x000000e4,0x6c6f4366,0x0031726f,0x00040005,0x000000e5,0x6c6f4366,0x0032726f,0x00040005, + 0x000000e6,0x6c6f4366,0x0033726f,0x00030005,0x000000e7,0x00000074,0x00080005,0x000000ea, + 0x63746546,0x42646568,0x62756369,0x61536369,0x656c706d,0x00000073,0x00060006,0x000000ea, + 0x00000000,0x6c6f4366,0x3030726f,0x00000000,0x00060006,0x000000ea,0x00000001,0x6c6f4366, + 0x3031726f,0x00000000,0x00060006,0x000000ea,0x00000002,0x6c6f4366,0x3032726f,0x00000000, + 0x00060006,0x000000ea,0x00000003,0x6c6f4366,0x3033726f,0x00000000,0x00060006,0x000000ea, + 0x00000004,0x6c6f4366,0x3130726f,0x00000000,0x00060006,0x000000ea,0x00000005,0x6c6f4366, + 0x3131726f,0x00000000,0x00060006,0x000000ea,0x00000006,0x6c6f4366,0x3132726f,0x00000000, + 0x00060006,0x000000ea,0x00000007,0x6c6f4366,0x3133726f,0x00000000,0x00060006,0x000000ea, + 0x00000008,0x6c6f4366,0x3230726f,0x00000000,0x00060006,0x000000ea,0x00000009,0x6c6f4366, + 0x3231726f,0x00000000,0x00060006,0x000000ea,0x0000000a,0x6c6f4366,0x3232726f,0x00000000, + 0x00060006,0x000000ea,0x0000000b,0x6c6f4366,0x3233726f,0x00000000,0x00060006,0x000000ea, + 0x0000000c,0x6c6f4366,0x3330726f,0x00000000,0x00060006,0x000000ea,0x0000000d,0x6c6f4366, + 0x3331726f,0x00000000,0x00060006,0x000000ea,0x0000000e,0x6c6f4366,0x3332726f,0x00000000, + 0x00060006,0x000000ea,0x0000000f,0x6c6f4366,0x3333726f,0x00000000,0x001d0005,0x000000ef, + 0x636e614c,0x32736f7a,0x72747328,0x2d746375,0x63746546,0x42646568,0x62756369,0x61536369, + 0x656c706d,0x66762d73,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, + 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, + 0x66762d34,0x763b3134,0x003b3266,0x00040005,0x000000ed,0x706d6153,0x0073656c,0x00040005, + 0x000000ee,0x46785066,0x00636172,0x00080005,0x000000f4,0x6d616c43,0x6f6f4370,0x76286472, + 0x763b3269,0x763b3269,0x003b3269,0x00050005,0x000000f1,0x53785069,0x6c706d61,0x00000065, + 0x00050005,0x000000f2,0x4f785069,0x65736666,0x00000074,0x00060005,0x000000f3,0x78655469, + 0x65727574,0x657a6953,0x00000000,0x00110005,0x000000f9,0x69726544,0x6e69676e,0x74732867, + 0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33, + 0x66762d33,0x31662d33,0x66763b31,0x00003b33,0x00050005,0x000000f7,0x70696c63,0x676e6970, + 0x00786f42,0x00040005,0x000000f8,0x6c6f4366,0x0000726f,0x000b0005,0x000000fe,0x55746547, + 0x6d617370,0x4c656c70,0x7a636e61,0x6557736f,0x74686769,0x32667628,0x3b31663b,0x00000000, + 0x00070005,0x000000fc,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005, + 0x000000fd,0x72654b66,0x576c656e,0x68676965,0x00000074,0x000a0005,0x00000100,0x75636341, + 0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x00000000,0x00060006, + 0x00000100,0x00000000,0x48785069,0x736f5072,0x00000000,0x00050006,0x00000100,0x00000001, + 0x55724866,0x00000076,0x00070006,0x00000100,0x00000002,0x55724c66,0x74694a76,0x65726574, + 0x00000064,0x00070006,0x00000100,0x00000003,0x55724c66,0x77485f76,0x706d6153,0x0072656c, + 0x00070006,0x00000100,0x00000004,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00080006, + 0x00000100,0x00000005,0x70655266,0x656a6f72,0x64657463,0x76557248,0x00000000,0x00060006, + 0x00000100,0x00000006,0x564b3466,0x636f6c65,0x00797469,0x00070006,0x00000100,0x00000007, + 0x73694466,0x6c63636f,0x6f697375,0x0000006e,0x00070006,0x00000100,0x00000008,0x61655266, + 0x76697463,0x73614d65,0x0000006b,0x00070006,0x00000100,0x00000009,0x61685366,0x676e6964, + 0x6e616843,0x00006567,0x00070006,0x00000100,0x0000000a,0x63634166,0x6c756d75,0x6f697461, + 0x0000006e,0x00090006,0x00000100,0x0000000b,0x6d754c66,0x736e4961,0x69626174,0x7974696c, + 0x74636146,0x0000726f,0x00090006,0x00000100,0x0000000c,0x72614666,0x73656874,0x70654474, + 0x6e496874,0x6574654d,0x00007372,0x00080006,0x00000100,0x0000000d,0x45734962,0x74736978, + 0x53676e69,0x6c706d61,0x00000065,0x00070006,0x00000100,0x0000000e,0x4e734962,0x61537765, + 0x656c706d,0x00000000,0x00080005,0x00000101,0x75636341,0x616c756d,0x6e6f6974,0x73736150, + 0x61746144,0x00000000,0x00060006,0x00000101,0x00000000,0x70696c63,0x676e6970,0x00786f42, + 0x00070006,0x00000101,0x00000001,0x73705566,0x6c706d61,0x6f436465,0x00726f6c,0x00080006, + 0x00000101,0x00000002,0x73705566,0x6c706d61,0x65576465,0x74686769,0x00000000,0x00070006, + 0x00000101,0x00000003,0x73694866,0x79726f74,0x6f6c6f43,0x00000072,0x00070006,0x00000101, + 0x00000004,0x73694866,0x79726f74,0x67696557,0x00007468,0x00050006,0x00000101,0x00000005, + 0x636f4c66,0x0000006b,0x000a0006,0x00000101,0x00000006,0x636f4c66,0x6e6f436b,0x62697274, + 0x6f697475,0x6968546e,0x61724673,0x0000656d,0x00360005,0x00000106,0x706d6f43,0x4d657475, + 0x654b7861,0x6c656e72,0x67696557,0x73287468,0x63757274,0x63412d74,0x756d7563,0x6974616c, + 0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266, + 0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, + 0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373, + 0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366, + 0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d, + 0x3b313166,0x00000000,0x00040005,0x00000104,0x61726170,0x0000736d,0x00040005,0x00000105, + 0x61746164,0x00000000,0x00080005,0x00000109,0x64616f4c,0x70657250,0x64657261,0x6f6c6f43, + 0x69762872,0x00003b32,0x00050005,0x00000108,0x6d615369,0x50656c70,0x0000736f,0x00380005, + 0x0000010e,0x706d6f43,0x55657475,0x6d617370,0x64656c70,0x6f6c6f43,0x646e4172,0x67696557, + 0x73287468,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d, + 0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266, + 0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274, + 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74, + 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, + 0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005, + 0x0000010c,0x61726170,0x0000736d,0x00040005,0x0000010d,0x61746164,0x00000000,0x00070005, + 0x00000111,0x70617257,0x74736948,0x2879726f,0x3b326976,0x00000000,0x00050005,0x00000110, + 0x53785069,0x6c706d61,0x00000065,0x000a0005,0x00000116,0x63746546,0x73694868,0x79726f74, + 0x706d6153,0x2873656c,0x3b326976,0x3b326976,0x00000000,0x00050005,0x00000114,0x53785069, + 0x6c706d61,0x00000065,0x00060005,0x00000115,0x78655469,0x65727574,0x657a6953,0x00000000, + 0x00080005,0x0000011b,0x74736948,0x5379726f,0x6c706d61,0x66762865,0x69763b32,0x00003b32, + 0x00050005,0x00000119,0x53765566,0x6c706d61,0x00000065,0x00060005,0x0000011a,0x78655469, + 0x65727574,0x657a6953,0x00000000,0x00090005,0x00000120,0x4d746547,0x6f69746f,0x6365566e, + 0x28726f74,0x3b326976,0x3b326676,0x00000000,0x00050005,0x0000011e,0x48785069,0x736f5072, + 0x00000000,0x00040005,0x0000011f,0x55724866,0x00000076,0x001e0005,0x00000125,0x706d6f43, + 0x52657475,0x6f727065,0x7463656a,0x56556465,0x74732873,0x74637572,0x6363412d,0x6c756d75, + 0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32, + 0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, + 0x622d3166,0x31622d31,0x00003b31,0x00040005,0x00000124,0x61726170,0x0000736d,0x00350005, + 0x00000129,0x72706552,0x63656a6f,0x73694874,0x79726f74,0x6f6c6f43,0x74732872,0x74637572, + 0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73, + 0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166, + 0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x74733b31,0x74637572,0x6363412d,0x6c756d75, + 0x6f697461,0x7361506e,0x74614473,0x74732d61,0x74637572,0x6365522d,0x69666974,0x69746163, + 0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66762d31,0x31662d33, + 0x3366762d,0x2d31662d,0x662d3166,0x003b3131,0x00040005,0x00000127,0x61726170,0x0000736d, + 0x00040005,0x00000128,0x61746164,0x00000000,0x00330005,0x0000012d,0x75636341,0x616c756d, + 0x73286574,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d, + 0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266, + 0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274, + 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74, + 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, + 0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005, + 0x0000012b,0x61726170,0x0000736d,0x00040005,0x0000012c,0x61746164,0x00000000,0x00340005, + 0x00000131,0x74636552,0x48796669,0x6f747369,0x73287972,0x63757274,0x63412d74,0x756d7563, + 0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266, + 0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31, + 0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, + 0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, + 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33, + 0x2d31662d,0x3b313166,0x00000000,0x00040005,0x0000012f,0x61726170,0x0000736d,0x00040005, + 0x00000130,0x61746164,0x00000000,0x00340005,0x00000136,0x61647055,0x6f4c6574,0x74536b63, + 0x73757461,0x72747328,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43, + 0x61506e6f,0x736d6172,0x3269762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d, + 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x662d3166,0x31622d31,0x3131622d,0x7274733b, + 0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x7274732d,0x2d746375, + 0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d, + 0x3131662d,0x3366762d,0x2d31662d,0x2d336676,0x662d3166,0x31662d31,0x00003b31,0x00040005, + 0x00000134,0x61726170,0x0000736d,0x00040005,0x00000135,0x61746164,0x00000000,0x00370005, + 0x0000013a,0x706d6f43,0x42657475,0x41657361,0x6d756363,0x74616c75,0x576e6f69,0x68676965, + 0x74732874,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d, + 0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32, + 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x74733b31,0x74637572, + 0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x74614473,0x74732d61,0x74637572,0x6365522d, + 0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33, + 0x66762d31,0x31662d33,0x3366762d,0x2d31662d,0x662d3166,0x003b3131,0x00040005,0x00000138, + 0x61726170,0x0000736d,0x00040005,0x00000139,0x61746164,0x00000000,0x00340005,0x00000140, + 0x74696e49,0x73736150,0x61746144,0x32697628,0x7274733b,0x2d746375,0x75636341,0x616c756d, + 0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x3269762d,0x3266762d,0x3266762d, + 0x3266762d,0x3266762d,0x3266762d,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x662d3166, + 0x31622d31,0x3131622d,0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150, + 0x61746144,0x7274732d,0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d, + 0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366762d,0x2d31662d,0x2d336676,0x662d3166, + 0x31662d31,0x00003b31,0x00050005,0x0000013d,0x48785069,0x736f5072,0x00000000,0x00040005, + 0x0000013e,0x61726170,0x0000736d,0x00040005,0x0000013f,0x61746164,0x00000000,0x00060005, + 0x00000144,0x75636341,0x616c756d,0x76286574,0x003b3269,0x00050005,0x00000143,0x48785069, + 0x736f5072,0x00000000,0x00070005,0x00000194,0x53466263,0x50553352,0x4c414353,0x745f5245, + 0x00000000,0x00060006,0x00000194,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006, + 0x00000194,0x00000001,0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953, + 0x00000000,0x00070006,0x00000194,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000, + 0x000a0006,0x00000194,0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373, + 0x7a695365,0x00000065,0x00070006,0x00000194,0x00000004,0x78614d69,0x646e6552,0x69537265, + 0x0000657a,0x00070006,0x00000194,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69, + 0x00080006,0x00000194,0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874, + 0x00050006,0x00000194,0x00000007,0x74694a66,0x00726574,0x00090006,0x00000194,0x00000008, + 0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x00000194, + 0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x00000194, + 0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x00000194, + 0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c, + 0x006e6f69,0x00060006,0x00000194,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006, + 0x00000194,0x0000000d,0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068, + 0x00060006,0x00000194,0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x00000194, + 0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x00000194, + 0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000, + 0x00060006,0x00000194,0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x00000194, + 0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74,0x00080006,0x00000194,0x00000013, + 0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c,0x00080006,0x00000194,0x00000014, + 0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61,0x000a0006,0x00000194,0x00000015, + 0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006, + 0x00000194,0x00000016,0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d, + 0x6e6f6974,0x00000000,0x00060005,0x00000196,0x53466263,0x70553352,0x6c616373,0x00007265, + 0x00080005,0x000001ce,0x6e695f72,0x5f747570,0x6f6c6f63,0x696a5f72,0x72657474,0x00006465, + 0x00090005,0x000001d5,0x6e695f72,0x6e726574,0x755f6c61,0x61637370,0x5f64656c,0x6f6c6f63, + 0x00000072,0x00090005,0x000001dd,0x695f7772,0x7265746e,0x5f6c616e,0x63737075,0x64656c61, + 0x6c6f635f,0x0000726f,0x00070005,0x000001e3,0x755f7772,0x61637370,0x5f64656c,0x7074756f, + 0x00007475,0x00080005,0x000001eb,0x61665f72,0x65687472,0x645f7473,0x68747065,0x70696d5f, + 0x00000031,0x00060005,0x000001f3,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00070005, + 0x000001fe,0x756c5f72,0x695f616d,0x6174736e,0x696c6962,0x00007974,0x00060005,0x00000209, + 0x6e5f7772,0x6c5f7765,0x736b636f,0x00000000,0x00090005,0x00000214,0x69645f72,0x6574616c, + 0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00050005,0x0000021b,0x6f707865, + 0x65727573,0x00000000,0x00070005,0x0000021c,0x6e695f72,0x5f747570,0x6f707865,0x65727573, + 0x00000000,0x00090005,0x00000228,0x69645f72,0x6574616c,0x65725f64,0x69746361,0x6d5f6576, + 0x736b7361,0x00000000,0x00060005,0x0000023a,0x67696577,0x64657468,0x706d6153,0x0000656c, + 0x00040005,0x00000246,0x61726170,0x0000006d,0x00040005,0x0000024b,0x61726170,0x0000006d, + 0x00040005,0x0000024e,0x61726170,0x0000006d,0x00040005,0x00000251,0x61726170,0x0000006d, + 0x00040005,0x00000254,0x61726170,0x0000006d,0x00060005,0x00000257,0x67696577,0x64657468, + 0x706d6153,0x0000656c,0x00040005,0x00000283,0x44647473,0x00007665,0x00040005,0x00000290, + 0x62675266,0x00000000,0x00040005,0x000002ac,0x6f435966,0x00006743,0x00040005,0x000002d2, + 0x61726170,0x0000006d,0x00040005,0x000002d3,0x61726170,0x0000006d,0x00040005,0x000002d7, + 0x61726170,0x0000006d,0x00040005,0x000002da,0x61726170,0x0000006d,0x00040005,0x000002de, + 0x61726170,0x0000006d,0x00040005,0x000002df,0x61726170,0x0000006d,0x00040005,0x000002e8, + 0x61726170,0x0000006d,0x00040005,0x000002eb,0x61726170,0x0000006d,0x00040005,0x000002ef, + 0x61726170,0x0000006d,0x00040005,0x000002f2,0x61726170,0x0000006d,0x00040005,0x000002f5, + 0x61726170,0x0000006d,0x00040005,0x000002f6,0x61726170,0x0000006d,0x00040005,0x00000313, + 0x75736572,0x0000746c,0x00040005,0x0000031a,0x61726170,0x0000006d,0x00040005,0x0000031d, + 0x61726170,0x0000006d,0x00040005,0x0000031f,0x61726170,0x0000006d,0x00040005,0x00000320, + 0x61726170,0x0000006d,0x00040005,0x00000326,0x61726170,0x0000006d,0x00040005,0x00000329, + 0x61726170,0x0000006d,0x00040005,0x0000032b,0x61726170,0x0000006d,0x00040005,0x0000032c, + 0x61726170,0x0000006d,0x00060005,0x00000332,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69, + 0x00070005,0x00000337,0x616c4366,0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005, + 0x0000033c,0x61726170,0x0000006d,0x00040005,0x0000033e,0x61726170,0x0000006d,0x00040005, + 0x00000340,0x61726170,0x0000006d,0x00040005,0x00000341,0x61726170,0x0000006d,0x00050005, + 0x00000343,0x616c4366,0x6465706d,0x00007655,0x00040005,0x00000371,0x61726170,0x0000006d, + 0x00040005,0x00000372,0x61726170,0x0000006d,0x00040005,0x00000374,0x61726170,0x0000006d, + 0x00030005,0x00000379,0x00000061,0x00030005,0x0000037e,0x00000062,0x00040005,0x00000390, + 0x61726170,0x0000006d,0x00040005,0x00000392,0x61726170,0x0000006d,0x00040005,0x00000394, + 0x61726170,0x0000006d,0x00050005,0x00000399,0x69655766,0x30746867,0x00000000,0x00040005, + 0x0000039d,0x61726170,0x0000006d,0x00050005,0x0000039f,0x69655766,0x31746867,0x00000000, + 0x00040005,0x000003a3,0x61726170,0x0000006d,0x00050005,0x000003a5,0x69655766,0x32746867, + 0x00000000,0x00040005,0x000003a8,0x61726170,0x0000006d,0x00050005,0x000003aa,0x69655766, + 0x33746867,0x00000000,0x00040005,0x000003ad,0x61726170,0x0000006d,0x00050005,0x000003c9, + 0x6c6f4366,0x3058726f,0x00000000,0x00040005,0x000003ca,0x61726170,0x0000006d,0x00040005, + 0x000003cd,0x61726170,0x0000006d,0x00040005,0x000003d0,0x61726170,0x0000006d,0x00040005, + 0x000003d3,0x61726170,0x0000006d,0x00040005,0x000003d6,0x61726170,0x0000006d,0x00050005, + 0x000003da,0x6c6f4366,0x3158726f,0x00000000,0x00040005,0x000003dd,0x61726170,0x0000006d, + 0x00040005,0x000003e0,0x61726170,0x0000006d,0x00040005,0x000003e3,0x61726170,0x0000006d, + 0x00040005,0x000003e6,0x61726170,0x0000006d,0x00040005,0x000003e9,0x61726170,0x0000006d, + 0x00050005,0x000003ed,0x6c6f4366,0x3258726f,0x00000000,0x00040005,0x000003f1,0x61726170, + 0x0000006d,0x00040005,0x000003f4,0x61726170,0x0000006d,0x00040005,0x000003f7,0x61726170, + 0x0000006d,0x00040005,0x000003fa,0x61726170,0x0000006d,0x00040005,0x000003fd,0x61726170, + 0x0000006d,0x00050005,0x00000401,0x6c6f4366,0x3358726f,0x00000000,0x00040005,0x00000404, + 0x61726170,0x0000006d,0x00040005,0x00000407,0x61726170,0x0000006d,0x00040005,0x0000040a, + 0x61726170,0x0000006d,0x00040005,0x0000040d,0x61726170,0x0000006d,0x00040005,0x00000410, + 0x61726170,0x0000006d,0x00050005,0x00000414,0x6c6f4366,0x5958726f,0x00000000,0x00040005, + 0x00000415,0x61726170,0x0000006d,0x00040005,0x00000417,0x61726170,0x0000006d,0x00040005, + 0x00000419,0x61726170,0x0000006d,0x00040005,0x0000041b,0x61726170,0x0000006d,0x00040005, + 0x0000041d,0x61726170,0x0000006d,0x00070005,0x00000424,0x72654466,0x69676e69,0x6153676e, + 0x656c706d,0x00000073,0x00060005,0x0000042e,0x72654466,0x69676e69,0x694d676e,0x0000006e, + 0x00060005,0x00000431,0x72654466,0x69676e69,0x614d676e,0x00000078,0x00060005,0x00000434, + 0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x0000043d,0x61726170,0x0000006d, + 0x00040005,0x0000043f,0x61726170,0x0000006d,0x00040005,0x00000444,0x61726170,0x0000006d, + 0x00040005,0x00000446,0x61726170,0x0000006d,0x00040005,0x00000453,0x75736572,0x0000746c, + 0x00040005,0x0000045a,0x61726170,0x0000006d,0x00040005,0x0000045d,0x61726170,0x0000006d, + 0x00040005,0x0000045f,0x61726170,0x0000006d,0x00040005,0x00000460,0x61726170,0x0000006d, + 0x00040005,0x00000466,0x61726170,0x0000006d,0x00040005,0x00000469,0x61726170,0x0000006d, + 0x00040005,0x0000046b,0x61726170,0x0000006d,0x00040005,0x0000046c,0x61726170,0x0000006d, + 0x00080005,0x00000478,0x63725366,0x706d6153,0x664f656c,0x74657366,0x73616942,0x00006465, + 0x00060005,0x0000047d,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00040005,0x00000481, + 0x61726170,0x0000006d,0x00060005,0x00000486,0x72654b66,0x536c656e,0x42657a69,0x00736169, + 0x00040005,0x0000048f,0x61726170,0x0000006d,0x00040005,0x00000490,0x61726170,0x0000006d, + 0x00040005,0x00000495,0x62675266,0x00000000,0x00040005,0x00000497,0x61726170,0x0000006d, + 0x00040005,0x0000049a,0x61726170,0x0000006d,0x00040005,0x0000049b,0x61726170,0x0000006d, + 0x00060005,0x0000049f,0x65725066,0x65726170,0x6f435964,0x00006743,0x00040005,0x000004a0, + 0x61726170,0x0000006d,0x00060005,0x000004a6,0x74734466,0x7074754f,0x6f507475,0x00000073, + 0x00060005,0x000004aa,0x63725366,0x7074754f,0x6f507475,0x00000073,0x00060005,0x000004ae, + 0x63725369,0x75706e49,0x736f5074,0x00000000,0x00070005,0x000004b2,0x63725366,0x696a6e55, + 0x72657474,0x6f506465,0x00000073,0x00070005,0x000004b8,0x73614266,0x6d615365,0x4f656c70, + 0x65736666,0x00000074,0x00050005,0x000004bc,0x7366666f,0x4c547465,0x00000000,0x00050005, + 0x000004cd,0x696c4662,0x776f5270,0x00000000,0x00050005,0x000004d3,0x696c4662,0x6c6f4370, + 0x00000000,0x00050005,0x000004d9,0x66664f66,0x54746573,0x0000004c,0x00070005,0x000004dc, + 0x49734962,0x6974696e,0x61536c61,0x656c706d,0x00000000,0x00060005,0x000004df,0x6d615369, + 0x49656c70,0x7865646e,0x00000000,0x00030005,0x000004e0,0x00776f72,0x00030005,0x000004e8, + 0x006c6f63,0x00060005,0x000004f0,0x6d615369,0x43656c70,0x6f526c6f,0x00000077,0x00060005, + 0x00000504,0x63725369,0x706d6153,0x6f50656c,0x00000073,0x00060005,0x0000050a,0x6d615369, + 0x43656c70,0x64726f6f,0x00000000,0x00040005,0x0000050c,0x61726170,0x0000006d,0x00040005, + 0x0000050e,0x61726170,0x0000006d,0x00040005,0x0000050f,0x61726170,0x0000006d,0x00050005, + 0x00000514,0x6d615366,0x73656c70,0x00000000,0x00040005,0x00000516,0x61726170,0x0000006d, + 0x00040005,0x0000052c,0x61726170,0x0000006d,0x00040005,0x00000530,0x61726170,0x0000006d, + 0x00040005,0x00000532,0x61726170,0x0000006d,0x00060005,0x00000537,0x72654b66,0x426c656e, + 0x4d736169,0x00007861,0x00040005,0x00000538,0x61726170,0x0000006d,0x00060005,0x0000053c, + 0x72654b66,0x426c656e,0x4d736169,0x00006e69,0x00040005,0x00000541,0x61726170,0x0000006d, + 0x00040005,0x00000542,0x61726170,0x0000006d,0x00070005,0x00000544,0x72654b66,0x426c656e, + 0x57736169,0x68676965,0x00000074,0x00040005,0x0000054e,0x61726170,0x0000006d,0x00040005, + 0x00000550,0x61726170,0x0000006d,0x00040005,0x00000551,0x61726170,0x0000006d,0x00040005, + 0x00000553,0x61726170,0x0000006d,0x00040005,0x00000554,0x61726170,0x0000006d,0x00050005, + 0x00000556,0x72654b66,0x426c656e,0x00736169,0x00040005,0x00000557,0x61726170,0x0000006d, + 0x00040005,0x00000559,0x61726170,0x0000006d,0x00040005,0x0000055b,0x61726170,0x0000006d, + 0x00030005,0x0000055e,0x00776f72,0x00030005,0x00000566,0x006c6f63,0x00060005,0x0000056e, + 0x706d6173,0x6f43656c,0x776f526c,0x00000000,0x00040005,0x00000582,0x66664f66,0x00746573, + 0x00070005,0x00000587,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005, + 0x0000058b,0x63725369,0x706d6153,0x6f50656c,0x00000073,0x00060005,0x00000591,0x536e4f66, + 0x65657263,0x6361466e,0x00726f74,0x00040005,0x00000594,0x61726170,0x0000006d,0x00040005, + 0x00000595,0x61726170,0x0000006d,0x00060005,0x0000059c,0x6d615366,0x57656c70,0x68676965, + 0x00000074,0x00040005,0x0000059e,0x61726170,0x0000006d,0x00040005,0x000005a0,0x61726170, + 0x0000006d,0x00070005,0x000005b2,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00007153, + 0x00070005,0x000005b6,0x786f4266,0x706d6153,0x6557656c,0x74686769,0x00000000,0x00060005, + 0x000005bd,0x696e4962,0x6c616974,0x706d6153,0x0000656c,0x00040005,0x000005c7,0x61726170, + 0x0000006d,0x00040005,0x000005c9,0x61726170,0x0000006d,0x00040005,0x000005d5,0x61726170, + 0x0000006d,0x00040005,0x000005f4,0x61726170,0x0000006d,0x00040005,0x000005f7,0x61726170, + 0x0000006d,0x00040005,0x00000600,0x61726170,0x0000006d,0x00040005,0x00000604,0x61726170, + 0x0000006d,0x00040005,0x00000606,0x61726170,0x0000006d,0x00040005,0x0000060b,0x61726170, + 0x0000006d,0x00040005,0x00000610,0x706d6153,0x0073656c,0x00040005,0x00000612,0x61726170, + 0x0000006d,0x00040005,0x00000614,0x61726170,0x0000006d,0x00040005,0x00000615,0x61726170, + 0x0000006d,0x00040005,0x00000618,0x61726170,0x0000006d,0x00040005,0x0000061c,0x61726170, + 0x0000006d,0x00040005,0x0000061e,0x61726170,0x0000006d,0x00040005,0x0000061f,0x61726170, + 0x0000006d,0x00040005,0x00000622,0x61726170,0x0000006d,0x00040005,0x00000626,0x61726170, + 0x0000006d,0x00040005,0x00000628,0x61726170,0x0000006d,0x00040005,0x00000629,0x61726170, + 0x0000006d,0x00040005,0x0000062c,0x61726170,0x0000006d,0x00040005,0x00000630,0x61726170, + 0x0000006d,0x00040005,0x00000632,0x61726170,0x0000006d,0x00040005,0x00000633,0x61726170, + 0x0000006d,0x00040005,0x00000636,0x61726170,0x0000006d,0x00040005,0x0000063a,0x61726170, + 0x0000006d,0x00040005,0x0000063c,0x61726170,0x0000006d,0x00040005,0x0000063d,0x61726170, + 0x0000006d,0x00040005,0x00000640,0x61726170,0x0000006d,0x00040005,0x00000643,0x61726170, + 0x0000006d,0x00040005,0x00000645,0x61726170,0x0000006d,0x00040005,0x00000646,0x61726170, + 0x0000006d,0x00040005,0x00000649,0x61726170,0x0000006d,0x00040005,0x0000064d,0x61726170, + 0x0000006d,0x00040005,0x0000064f,0x61726170,0x0000006d,0x00040005,0x00000650,0x61726170, + 0x0000006d,0x00040005,0x00000653,0x61726170,0x0000006d,0x00040005,0x00000657,0x61726170, + 0x0000006d,0x00040005,0x00000659,0x61726170,0x0000006d,0x00040005,0x0000065a,0x61726170, + 0x0000006d,0x00040005,0x0000065d,0x61726170,0x0000006d,0x00040005,0x00000661,0x61726170, + 0x0000006d,0x00040005,0x00000663,0x61726170,0x0000006d,0x00040005,0x00000664,0x61726170, + 0x0000006d,0x00040005,0x00000667,0x61726170,0x0000006d,0x00040005,0x0000066b,0x61726170, + 0x0000006d,0x00040005,0x0000066d,0x61726170,0x0000006d,0x00040005,0x0000066e,0x61726170, + 0x0000006d,0x00040005,0x00000671,0x61726170,0x0000006d,0x00040005,0x00000675,0x61726170, + 0x0000006d,0x00040005,0x00000677,0x61726170,0x0000006d,0x00040005,0x00000678,0x61726170, + 0x0000006d,0x00040005,0x0000067b,0x61726170,0x0000006d,0x00040005,0x0000067f,0x61726170, + 0x0000006d,0x00040005,0x00000681,0x61726170,0x0000006d,0x00040005,0x00000682,0x61726170, + 0x0000006d,0x00040005,0x00000685,0x61726170,0x0000006d,0x00040005,0x00000689,0x61726170, + 0x0000006d,0x00040005,0x0000068b,0x61726170,0x0000006d,0x00040005,0x0000068c,0x61726170, + 0x0000006d,0x00040005,0x0000068f,0x61726170,0x0000006d,0x00040005,0x00000693,0x61726170, + 0x0000006d,0x00040005,0x00000695,0x61726170,0x0000006d,0x00040005,0x00000696,0x61726170, + 0x0000006d,0x00040005,0x00000699,0x61726170,0x0000006d,0x00040005,0x0000069d,0x61726170, + 0x0000006d,0x00040005,0x0000069f,0x61726170,0x0000006d,0x00040005,0x000006a0,0x61726170, + 0x0000006d,0x00040005,0x000006a3,0x61726170,0x0000006d,0x00040005,0x000006a7,0x61726170, + 0x0000006d,0x00040005,0x000006a9,0x61726170,0x0000006d,0x00040005,0x000006aa,0x61726170, + 0x0000006d,0x00040005,0x000006ad,0x61726170,0x0000006d,0x00050005,0x000006b3,0x53785066, + 0x6c706d61,0x00000065,0x00040005,0x000006b9,0x46785066,0x00636172,0x00040005,0x000006ba, + 0x61726170,0x0000006d,0x00040005,0x000006c1,0x61726170,0x0000006d,0x00040005,0x000006c2, + 0x61726170,0x0000006d,0x00040005,0x000006c6,0x61726170,0x0000006d,0x00040005,0x000006c7, + 0x61726170,0x0000006d,0x00040005,0x000006ce,0x61726170,0x0000006d,0x00040005,0x000006cf, + 0x61726170,0x0000006d,0x00040005,0x000006d3,0x61726170,0x0000006d,0x00040005,0x000006d4, + 0x61726170,0x0000006d,0x00050005,0x000006d7,0x53785069,0x6c706d61,0x00000065,0x00050005, + 0x000006db,0x6c6f4366,0x5958726f,0x00000000,0x00040005,0x000006dc,0x61726170,0x0000006d, + 0x00040005,0x000006de,0x61726170,0x0000006d,0x00040005,0x000006e1,0x61726170,0x0000006d, + 0x00040005,0x000006e2,0x61726170,0x0000006d,0x00080005,0x000006e8,0x6c694466,0x64657461, + 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x000006ee,0x61726170,0x0000006d, + 0x00040005,0x000006f9,0x61726170,0x0000006d,0x00070005,0x000006fe,0x70655266,0x656a6f72, + 0x64657463,0x74736948,0x0079726f,0x00040005,0x00000700,0x61726170,0x0000006d,0x00040005, + 0x00000702,0x61726170,0x0000006d,0x00040005,0x00000711,0x61726170,0x0000006d,0x00040005, + 0x00000727,0x61726170,0x0000006d,0x00040005,0x00000728,0x61726170,0x0000006d,0x00040005, + 0x0000072b,0x61726170,0x0000006d,0x00040005,0x0000072f,0x61726170,0x0000006d,0x00040005, + 0x00000731,0x61726170,0x0000006d,0x00040005,0x00000734,0x61726170,0x0000006d,0x00040005, + 0x00000738,0x61726170,0x0000006d,0x00040005,0x0000073a,0x61726170,0x0000006d,0x00040005, + 0x0000073d,0x706c4166,0x00006168,0x00040005,0x00000743,0x61726170,0x0000006d,0x00040005, + 0x00000745,0x61726170,0x0000006d,0x00040005,0x00000748,0x61726170,0x0000006d,0x00040005, + 0x0000074b,0x61726170,0x0000006d,0x00040005,0x0000074f,0x61726170,0x0000006d,0x00040005, + 0x00000754,0x61726170,0x0000006d,0x00070005,0x00000759,0x566b3466,0x636f6c65,0x46797469, + 0x6f746361,0x00000072,0x00040005,0x0000075d,0x61726170,0x0000006d,0x00060005,0x0000075f, + 0x73694466,0x636e6174,0x63614665,0x00726f74,0x00040005,0x00000764,0x61726170,0x0000006d, + 0x00070005,0x00000766,0x63634166,0x6c756d75,0x6f697461,0x6361466e,0x00726f74,0x00060005, + 0x00000769,0x61655266,0x76697463,0x63614665,0x00726f74,0x00040005,0x0000076a,0x61726170, + 0x0000006d,0x00040005,0x0000076c,0x61726170,0x0000006d,0x00080005,0x0000076e,0x61685366, + 0x676e6964,0x6e616843,0x61466567,0x726f7463,0x00000000,0x00050005,0x00000770,0x786f4266, + 0x6c616353,0x00005465,0x00040005,0x00000771,0x61726170,0x0000006d,0x00040005,0x00000773, + 0x61726170,0x0000006d,0x00040005,0x00000776,0x61726170,0x0000006d,0x00040005,0x00000778, + 0x61726170,0x0000006d,0x00040005,0x0000077a,0x61726170,0x0000006d,0x00040005,0x0000077c, + 0x61726170,0x0000006d,0x00040005,0x0000077e,0x61726170,0x0000006d,0x00040005,0x00000780, + 0x61726170,0x0000006d,0x00050005,0x00000782,0x786f4266,0x6c616353,0x00000065,0x00040005, + 0x00000784,0x61726170,0x0000006d,0x00040005,0x00000785,0x61726170,0x0000006d,0x00040005, + 0x00000786,0x61726170,0x0000006d,0x00060005,0x00000789,0x61635366,0x4264656c,0x6556786f, + 0x00000063,0x00080005,0x00000791,0x616c4366,0x6465706d,0x6c616353,0x6f426465,0x63655678, + 0x00000000,0x00040005,0x00000794,0x61726170,0x0000006d,0x00040005,0x00000796,0x61726170, + 0x0000006d,0x00090005,0x00000798,0x61725466,0x6f66736e,0x64656d72,0x74736948,0x4379726f, + 0x726f6c6f,0x00000000,0x00080005,0x000007a5,0x616c4366,0x6465706d,0x74736948,0x4379726f, + 0x726f6c6f,0x00000000,0x00090005,0x000007a8,0x6e694666,0x6c436c61,0x65706d61,0x73694864, + 0x79726f74,0x6f6c6f43,0x00000072,0x00080005,0x000007af,0x73694866,0x79726f74,0x746e6f43, + 0x75626972,0x6e6f6974,0x00000000,0x00040005,0x000007b0,0x61726170,0x0000006d,0x00040005, + 0x000007b2,0x61726170,0x0000006d,0x00040005,0x000007bb,0x61726170,0x0000006d,0x00040005, + 0x000007be,0x61726170,0x0000006d,0x00040005,0x000007c0,0x61726170,0x0000006d,0x00040005, + 0x000007c3,0x61726170,0x0000006d,0x00080005,0x000007cf,0x66694c66,0x6d697465,0x63654465, + 0x73616572,0x63614665,0x00726f74,0x00040005,0x000007d0,0x61726170,0x0000006d,0x00040005, + 0x000007d4,0x61726170,0x0000006d,0x00040005,0x000007d7,0x61726170,0x0000006d,0x00040005, + 0x000007db,0x61726170,0x0000006d,0x00040005,0x000007dc,0x61726170,0x0000006d,0x00040005, + 0x000007e3,0x61726170,0x0000006d,0x00040005,0x000007e4,0x61726170,0x0000006d,0x00040005, + 0x000007ea,0x61726170,0x0000006d,0x00040005,0x000007ed,0x61726170,0x0000006d,0x00070005, + 0x000007f0,0x77654e66,0x6b636f4c,0x65746e49,0x7469736e,0x00000079,0x00040005,0x000007f1, + 0x61726170,0x0000006d,0x00040005,0x000007f8,0x61726170,0x0000006d,0x00040005,0x000007f9, + 0x61726170,0x0000006d,0x00040005,0x00000803,0x61726170,0x0000006d,0x00040005,0x00000804, + 0x61726170,0x0000006d,0x00040005,0x00000806,0x61726170,0x0000006d,0x00040005,0x00000807, + 0x61726170,0x0000006d,0x00070005,0x0000080a,0x66694c66,0x6d697465,0x63654465,0x73616572, + 0x00000065,0x00040005,0x00000815,0x61726170,0x0000006d,0x00040005,0x00000816,0x61726170, + 0x0000006d,0x00080005,0x00000819,0x74734566,0x74616d69,0x76556465,0x7478654e,0x6d617246, + 0x00000065,0x00040005,0x0000081f,0x61726170,0x0000006d,0x00070005,0x00000829,0x73614266, + 0x63634165,0x6c756d75,0x6f697461,0x0000006e,0x00040005,0x00000830,0x61726170,0x0000006d, + 0x00040005,0x00000831,0x61726170,0x0000006d,0x00040005,0x00000833,0x61726170,0x0000006d, + 0x00040005,0x00000835,0x61726170,0x0000006d,0x00040005,0x00000837,0x61726170,0x0000006d, + 0x00040005,0x00000838,0x61726170,0x0000006d,0x00040005,0x0000083a,0x61726170,0x0000006d, + 0x00040005,0x0000083c,0x61726170,0x0000006d,0x00040005,0x00000842,0x55724866,0x00000076, + 0x00040005,0x00000855,0x61726170,0x0000006d,0x00040005,0x00000858,0x61726170,0x0000006d, + 0x00040005,0x00000859,0x61726170,0x0000006d,0x00040005,0x0000085c,0x61726170,0x0000006d, + 0x00040005,0x0000085e,0x61726170,0x0000006d,0x00040005,0x00000862,0x61726170,0x0000006d, + 0x00040005,0x00000867,0x61726170,0x0000006d,0x00080005,0x0000086b,0x6d754c66,0x736e4961, + 0x69626174,0x7974696c,0x485f7655,0x00000057,0x00040005,0x0000086e,0x61726170,0x0000006d, + 0x00040005,0x00000870,0x61726170,0x0000006d,0x00040005,0x00000871,0x61726170,0x0000006d, + 0x00040005,0x00000873,0x61726170,0x0000006d,0x00070005,0x00000877,0x72614666,0x73656874, + 0x70654474,0x76556874,0x00000000,0x00040005,0x0000087c,0x61726170,0x0000006d,0x00040005, + 0x0000087f,0x61726170,0x0000006d,0x00040005,0x00000880,0x61726170,0x0000006d,0x00040005, + 0x00000882,0x61726170,0x0000006d,0x00080005,0x00000890,0x6c694466,0x64657461,0x63616552, + 0x65766974,0x6b73614d,0x00000073,0x00040005,0x00000891,0x61726170,0x0000006d,0x00040005, + 0x00000895,0x61726170,0x0000006d,0x00040005,0x0000089a,0x61726170,0x0000006d,0x00040005, + 0x0000089f,0x61726170,0x0000006d,0x00040005,0x000008a4,0x61726170,0x0000006d,0x00040005, + 0x000008ba,0x61726170,0x0000736d,0x00040005,0x000008bb,0x61746164,0x00000000,0x00040005, + 0x000008bc,0x61726170,0x0000006d,0x00040005,0x000008be,0x61726170,0x0000006d,0x00040005, + 0x000008c0,0x61726170,0x0000006d,0x00040005,0x000008d0,0x61726170,0x0000006d,0x00040005, + 0x000008d4,0x61726170,0x0000006d,0x00040005,0x000008d6,0x61726170,0x0000006d,0x00040005, + 0x000008db,0x61726170,0x0000006d,0x00040005,0x000008e0,0x61726170,0x0000006d,0x00040005, + 0x000008e5,0x61726170,0x0000006d,0x00040005,0x000008ea,0x61726170,0x0000006d,0x00040005, + 0x000008f4,0x61726170,0x0000006d,0x00040005,0x000008f7,0x61726170,0x0000006d,0x00040005, + 0x00000902,0x61726170,0x0000006d,0x00040005,0x00000904,0x61726170,0x0000006d,0x00040005, + 0x00000906,0x61726170,0x0000006d,0x00040005,0x00000908,0x61726170,0x0000006d,0x00040005, + 0x0000090c,0x61726170,0x0000006d,0x00040005,0x0000090e,0x61726170,0x0000006d,0x00080005, + 0x00000912,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005, + 0x00000916,0x61726170,0x0000006d,0x00060005,0x0000091a,0x6f505f73,0x43746e69,0x706d616c, + 0x00000000,0x00060005,0x0000091b,0x75635f72,0x6e657272,0x756c5f74,0x0000616d,0x00060005, + 0x0000091c,0x616c5f72,0x6f7a636e,0x756c5f73,0x00000074,0x00030047,0x00000194,0x00000002, + 0x00050048,0x00000194,0x00000000,0x00000023,0x00000000,0x00050048,0x00000194,0x00000001, + 0x00000023,0x00000008,0x00050048,0x00000194,0x00000002,0x00000023,0x00000010,0x00050048, + 0x00000194,0x00000003,0x00000023,0x00000018,0x00050048,0x00000194,0x00000004,0x00000023, + 0x00000020,0x00050048,0x00000194,0x00000005,0x00000023,0x00000028,0x00050048,0x00000194, + 0x00000006,0x00000023,0x00000030,0x00050048,0x00000194,0x00000007,0x00000023,0x00000040, + 0x00050048,0x00000194,0x00000008,0x00000023,0x00000048,0x00050048,0x00000194,0x00000009, + 0x00000023,0x00000050,0x00050048,0x00000194,0x0000000a,0x00000023,0x00000058,0x00050048, + 0x00000194,0x0000000b,0x00000023,0x00000060,0x00050048,0x00000194,0x0000000c,0x00000023, + 0x00000068,0x00050048,0x00000194,0x0000000d,0x00000023,0x0000006c,0x00050048,0x00000194, + 0x0000000e,0x00000023,0x00000070,0x00050048,0x00000194,0x0000000f,0x00000023,0x00000074, + 0x00050048,0x00000194,0x00000010,0x00000023,0x00000078,0x00050048,0x00000194,0x00000011, + 0x00000023,0x0000007c,0x00050048,0x00000194,0x00000012,0x00000023,0x00000080,0x00050048, + 0x00000194,0x00000013,0x00000023,0x00000084,0x00050048,0x00000194,0x00000014,0x00000023, + 0x00000088,0x00050048,0x00000194,0x00000015,0x00000023,0x0000008c,0x00050048,0x00000194, + 0x00000016,0x00000023,0x00000090,0x00040047,0x00000196,0x00000021,0x0000000c,0x00040047, + 0x00000196,0x00000022,0x00000000,0x00040047,0x000001ce,0x00000021,0x00000008,0x00040047, + 0x000001ce,0x00000022,0x00000000,0x00040047,0x000001d5,0x00000021,0x00000003,0x00040047, + 0x000001d5,0x00000022,0x00000000,0x00030047,0x000001dd,0x00000019,0x00040047,0x000001dd, + 0x00000021,0x00000009,0x00040047,0x000001dd,0x00000022,0x00000000,0x00030047,0x000001e3, + 0x00000019,0x00040047,0x000001e3,0x00000021,0x0000000a,0x00040047,0x000001e3,0x00000022, + 0x00000000,0x00040047,0x000001eb,0x00000021,0x00000005,0x00040047,0x000001eb,0x00000022, + 0x00000000,0x00040047,0x000001f3,0x00000021,0x000003e9,0x00040047,0x000001f3,0x00000022, + 0x00000000,0x00040047,0x000001fe,0x00000021,0x00000007,0x00040047,0x000001fe,0x00000022, + 0x00000000,0x00040047,0x00000209,0x00000021,0x0000000b,0x00040047,0x00000209,0x00000022, + 0x00000000,0x00040047,0x00000214,0x00000021,0x00000002,0x00040047,0x00000214,0x00000022, + 0x00000000,0x00040047,0x0000021c,0x00000021,0x00000000,0x00040047,0x0000021c,0x00000022, + 0x00000000,0x00040047,0x00000228,0x00000021,0x00000001,0x00040047,0x00000228,0x00000022, + 0x00000000,0x00040047,0x00000912,0x0000000b,0x0000001c,0x00040047,0x0000091a,0x00000021, + 0x000003e8,0x00040047,0x0000091a,0x00000022,0x00000000,0x00040047,0x0000091b,0x00000021, + 0x00000006,0x00040047,0x0000091b,0x00000022,0x00000000,0x00040047,0x0000091c,0x00000021, + 0x00000004,0x00040047,0x0000091c,0x00000022,0x00000000,0x00040047,0x00000923,0x0000000b, + 0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006, + 0x00000020,0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008,0x00000006, + 0x00000007,0x00000007,0x00000007,0x00040017,0x0000000e,0x00000006,0x00000003,0x00040020, + 0x0000000f,0x00000007,0x0000000e,0x00060021,0x00000010,0x0000000e,0x0000000f,0x0000000f, + 0x00000007,0x00040021,0x00000016,0x00000006,0x00000007,0x00040017,0x0000001a,0x00000006, + 0x00000002,0x00040020,0x0000001b,0x00000007,0x0000001a,0x00040021,0x0000001c,0x0000001a, + 0x0000001b,0x00050021,0x00000020,0x00000006,0x00000007,0x00000007,0x00050021,0x00000025, + 0x0000001a,0x0000001b,0x0000001b,0x00050021,0x0000002a,0x0000000e,0x0000000f,0x0000000f, + 0x00040017,0x0000002f,0x00000006,0x00000004,0x00040020,0x00000030,0x00000007,0x0000002f, + 0x00050021,0x00000031,0x0000002f,0x00000030,0x00000030,0x00040015,0x00000036,0x00000020, + 0x00000001,0x00040020,0x00000037,0x00000007,0x00000036,0x00050021,0x00000038,0x00000036, + 0x00000037,0x00000037,0x00040017,0x00000055,0x00000036,0x00000002,0x00030021,0x00000056, + 0x00000055,0x00030021,0x0000005f,0x0000001a,0x00030021,0x00000064,0x00000006,0x00040020, + 0x0000006d,0x00000007,0x00000055,0x00040021,0x0000006e,0x0000000e,0x0000006d,0x00040021, + 0x00000072,0x0000002f,0x0000006d,0x00050021,0x00000076,0x00000002,0x0000006d,0x00000030, + 0x00050021,0x0000007b,0x00000002,0x0000006d,0x0000000f,0x00040021,0x00000082,0x00000006, + 0x0000001b,0x00040021,0x00000089,0x00000006,0x0000006d,0x00050021,0x0000008d,0x00000002, + 0x0000006d,0x00000007,0x00040021,0x00000092,0x0000001a,0x0000006d,0x00040021,0x00000098, + 0x0000002f,0x0000001b,0x0007001e,0x0000009f,0x0000000e,0x0000000e,0x0000000e,0x0000000e, + 0x00000006,0x00040020,0x000000a0,0x00000007,0x0000009f,0x00060021,0x000000a1,0x00000002, + 0x000000a0,0x0000000e,0x00000006,0x00020014,0x000000a7,0x00040020,0x000000a8,0x00000007, + 0x000000a7,0x00070021,0x000000a9,0x00000002,0x000000a8,0x000000a0,0x0000000e,0x00000006, + 0x00040021,0x000000b0,0x00000002,0x000000a0,0x00040021,0x000000b4,0x0000000e,0x0000000f, + 0x00040021,0x000000c1,0x000000a7,0x0000001b,0x00060021,0x000000c5,0x00000055,0x0000006d, + 0x0000006d,0x0000006d,0x00060021,0x000000cb,0x0000001a,0x0000001b,0x0000006d,0x0000006d, + 0x00050021,0x000000d1,0x000000a7,0x0000006d,0x0000006d,0x00080021,0x000000e2,0x0000002f, + 0x00000030,0x00000030,0x00000030,0x00000030,0x00000007,0x0012001e,0x000000ea,0x0000002f, + 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f, + 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x00040020, + 0x000000eb,0x00000007,0x000000ea,0x00050021,0x000000ec,0x0000002f,0x000000eb,0x0000001b, + 0x00050021,0x000000f6,0x00000002,0x000000a0,0x0000000f,0x00050021,0x000000fb,0x00000006, + 0x0000001b,0x00000007,0x0011001e,0x00000100,0x00000055,0x0000001a,0x0000001a,0x0000001a, + 0x0000001a,0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x000000a7,0x000000a7,0x0009001e,0x00000101,0x0000009f,0x0000000e,0x00000006, + 0x0000000e,0x00000006,0x00000006,0x00000006,0x00040020,0x00000102,0x00000007,0x00000101, + 0x00050021,0x00000103,0x00000006,0x00000100,0x00000102,0x00050021,0x0000010b,0x00000002, + 0x00000100,0x00000102,0x00050021,0x00000113,0x000000ea,0x0000006d,0x0000006d,0x00050021, + 0x00000118,0x0000002f,0x0000001b,0x0000006d,0x00050021,0x0000011d,0x0000001a,0x0000006d, + 0x0000001b,0x00040020,0x00000122,0x00000007,0x00000100,0x00040021,0x00000123,0x00000002, + 0x00000122,0x00050021,0x00000133,0x00000002,0x00000122,0x00000102,0x00060021,0x0000013c, + 0x00000002,0x0000006d,0x00000122,0x00000102,0x00040021,0x00000142,0x00000002,0x0000006d, + 0x0004002b,0x00000006,0x00000154,0x00000000,0x0004002b,0x00000006,0x00000155,0x3f800000, + 0x0019001e,0x00000194,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055, + 0x0000002f,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00040020,0x00000195,0x00000002,0x00000194,0x0004003b,0x00000195,0x00000196, + 0x00000002,0x0004002b,0x00000036,0x00000197,0x00000000,0x00040020,0x00000198,0x00000002, + 0x00000055,0x0004002b,0x00000036,0x0000019d,0x00000004,0x0004002b,0x00000036,0x000001a2, + 0x00000002,0x0004002b,0x00000036,0x000001a7,0x00000003,0x0004002b,0x00000036,0x000001ac, + 0x00000007,0x00040020,0x000001ad,0x00000002,0x0000001a,0x0004002b,0x00000036,0x000001b2, + 0x0000000a,0x0004002b,0x00000036,0x000001b7,0x0000000d,0x00040020,0x000001b8,0x00000002, + 0x00000006,0x0004002b,0x00000036,0x000001bd,0x0000000f,0x0004002b,0x00000036,0x000001c2, + 0x00000011,0x0004002b,0x00000036,0x000001c7,0x00000012,0x00090019,0x000001cc,0x00000006, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001cd, + 0x00000000,0x000001cc,0x0004003b,0x000001cd,0x000001ce,0x00000000,0x0004003b,0x000001cd, + 0x000001d5,0x00000000,0x00090019,0x000001db,0x00000006,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000002,0x00040020,0x000001dc,0x00000000,0x000001db,0x0004003b, + 0x000001dc,0x000001dd,0x00000000,0x00090019,0x000001e1,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000000,0x00040020,0x000001e2,0x00000000,0x000001e1, + 0x0004003b,0x000001e2,0x000001e3,0x00000000,0x0004003b,0x000001cd,0x000001eb,0x00000000, + 0x0002001a,0x000001f1,0x00040020,0x000001f2,0x00000000,0x000001f1,0x0004003b,0x000001f2, + 0x000001f3,0x00000000,0x0003001b,0x000001f5,0x000001cc,0x00040015,0x000001f9,0x00000020, + 0x00000000,0x0004002b,0x000001f9,0x000001fa,0x00000000,0x0004003b,0x000001cd,0x000001fe, + 0x00000000,0x00090019,0x00000207,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x0000000f,0x00040020,0x00000208,0x00000000,0x00000207,0x0004003b,0x00000208, + 0x00000209,0x00000000,0x0004003b,0x000001cd,0x00000214,0x00000000,0x0004003b,0x000001cd, + 0x0000021c,0x00000000,0x0005002c,0x00000055,0x0000021e,0x00000197,0x00000197,0x0004003b, + 0x000001cd,0x00000228,0x00000000,0x0004002b,0x00000006,0x00000231,0x45700000,0x0004002b, + 0x00000006,0x00000232,0x45070000,0x0005002c,0x0000001a,0x00000233,0x00000231,0x00000232, + 0x0004002b,0x00000036,0x0000023e,0x00000001,0x0004002b,0x00000006,0x0000026b,0x00800000, + 0x0004002b,0x000001f9,0x00000293,0x00000001,0x0004002b,0x000001f9,0x00000297,0x00000002, + 0x0004002b,0x00000006,0x000002ad,0x3e800000,0x0004002b,0x00000006,0x000002b1,0x3f000000, + 0x0004002b,0x00000006,0x000002c1,0xbe800000,0x0004002b,0x00000006,0x000002e7,0x387fda40, + 0x0005002c,0x0000001a,0x00000338,0x000002b1,0x000002b1,0x00040017,0x0000034c,0x000001f9, + 0x00000002,0x00040017,0x00000350,0x000000a7,0x00000002,0x0004002b,0x00000006,0x0000035c, + 0x40490fdb,0x0004002b,0x00000006,0x00000363,0x3fc90fdb,0x0004002b,0x00000006,0x00000370, + 0x40000000,0x0004002b,0x00000006,0x0000037a,0x3ecccccd,0x0004002b,0x00000006,0x00000382, + 0x3fc80000,0x0004002b,0x00000006,0x00000387,0x3f100000,0x0004002b,0x00000006,0x0000038f, + 0x40800000,0x0004002b,0x00000006,0x0000039a,0xbf800000,0x0004002b,0x00000006,0x000003a0, + 0x80000000,0x0004002b,0x00000036,0x000003db,0x00000005,0x0004002b,0x00000036,0x000003dc, + 0x00000006,0x0004002b,0x00000036,0x000003ee,0x00000008,0x0004002b,0x00000036,0x000003ef, + 0x00000009,0x0004002b,0x00000036,0x000003f0,0x0000000b,0x0004002b,0x00000036,0x00000402, + 0x0000000c,0x0004002b,0x00000036,0x00000403,0x0000000e,0x0004002b,0x000001f9,0x00000421, + 0x00000004,0x0004001c,0x00000422,0x0000002f,0x00000421,0x00040020,0x00000423,0x00000007, + 0x00000422,0x0004002b,0x00000006,0x0000048e,0x3ffeb852,0x0006002c,0x0000000e,0x00000496, + 0x00000154,0x00000154,0x00000154,0x0004002b,0x00000036,0x000004c2,0xfffffffe,0x0004002b, + 0x00000036,0x000004c3,0xffffffff,0x0004002b,0x000001f9,0x00000511,0x00000009,0x0004001c, + 0x00000512,0x0000000e,0x00000511,0x00040020,0x00000513,0x00000007,0x00000512,0x0004002b, + 0x00000006,0x0000053f,0x3e99999a,0x0004002b,0x00000006,0x0000054c,0x40a00000,0x0004002b, + 0x00000006,0x000005b7,0xc0133333,0x0004002b,0x00000006,0x000005ef,0x3d3d70a4,0x0005002c, + 0x00000055,0x00000611,0x000004c3,0x000004c3,0x0005002c,0x00000055,0x0000061b,0x00000197, + 0x000004c3,0x0005002c,0x00000055,0x00000625,0x0000023e,0x000004c3,0x0005002c,0x00000055, + 0x0000062f,0x000001a2,0x000004c3,0x0005002c,0x00000055,0x00000639,0x000004c3,0x00000197, + 0x0005002c,0x00000055,0x0000064c,0x0000023e,0x00000197,0x0005002c,0x00000055,0x00000656, + 0x000001a2,0x00000197,0x0005002c,0x00000055,0x00000660,0x000004c3,0x0000023e,0x0005002c, + 0x00000055,0x0000066a,0x00000197,0x0000023e,0x0005002c,0x00000055,0x00000674,0x0000023e, + 0x0000023e,0x0005002c,0x00000055,0x0000067e,0x000001a2,0x0000023e,0x0005002c,0x00000055, + 0x00000688,0x000004c3,0x000001a2,0x0005002c,0x00000055,0x00000692,0x00000197,0x000001a2, + 0x0005002c,0x00000055,0x0000069c,0x0000023e,0x000001a2,0x0005002c,0x00000055,0x000006a6, + 0x000001a2,0x000001a2,0x0004002b,0x000001f9,0x00000716,0x00000003,0x0004002b,0x00000006, + 0x0000075b,0x41a00000,0x0004002b,0x00000006,0x00000760,0x3f400000,0x0004002b,0x00000006, + 0x00000783,0x40400000,0x0004002b,0x00000006,0x0000078c,0x3fd9999a,0x0006002c,0x0000000e, + 0x0000078d,0x0000078c,0x00000155,0x00000155,0x0004002b,0x00000006,0x00000792,0x340018ef, + 0x0006002c,0x0000000e,0x00000793,0x00000792,0x00000792,0x00000792,0x0003002a,0x000000a7, + 0x000007c8,0x0004002b,0x00000006,0x0000080b,0x3dcccccd,0x00030029,0x000000a7,0x00000822, + 0x0004002b,0x00000006,0x0000082b,0x3e19999a,0x0004002b,0x00000006,0x000008ab,0x42c80000, + 0x00040017,0x00000910,0x000001f9,0x00000003,0x00040020,0x00000911,0x00000001,0x00000910, + 0x0004003b,0x00000911,0x00000912,0x00000001,0x0004002b,0x00000006,0x00000918,0x477fe000, + 0x0004002b,0x00000006,0x00000919,0x37801002,0x0004003b,0x000001f2,0x0000091a,0x00000000, + 0x0004003b,0x000001cd,0x0000091b,0x00000000,0x0004003b,0x000001cd,0x0000091c,0x00000000, + 0x0004002b,0x00000006,0x0000091d,0x7f7fffff,0x0004002b,0x00000006,0x0000091e,0x3a1fe868, + 0x0004002b,0x00000006,0x0000091f,0x3d800000,0x0004002b,0x00000006,0x00000920,0x3e400000, + 0x0004002b,0x00000006,0x00000921,0x461c4000,0x0004002b,0x000001f9,0x00000922,0x00000008, + 0x0006002c,0x00000910,0x00000923,0x00000922,0x00000922,0x00000293,0x00050036,0x00000002, + 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000006d,0x00000916, + 0x00000007,0x0004003d,0x00000910,0x00000913,0x00000912,0x0007004f,0x0000034c,0x00000914, + 0x00000913,0x00000913,0x00000000,0x00000001,0x0004007c,0x00000055,0x00000915,0x00000914, + 0x0003003e,0x00000916,0x00000915,0x00050039,0x00000002,0x00000917,0x00000144,0x00000916, + 0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037, + 0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b, + 0x000200f8,0x0000000d,0x0004003d,0x00000006,0x00000146,0x00000009,0x0004003d,0x00000006, + 0x00000147,0x0000000a,0x0004003d,0x00000006,0x00000148,0x0000000b,0x0008000c,0x00000006, + 0x00000149,0x00000001,0x0000002e,0x00000146,0x00000147,0x00000148,0x000200fe,0x00000149, + 0x00010038,0x00050036,0x0000000e,0x00000014,0x00000000,0x00000010,0x00030037,0x0000000f, + 0x00000011,0x00030037,0x0000000f,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8, + 0x00000015,0x0004003d,0x0000000e,0x0000014c,0x00000011,0x0004003d,0x0000000e,0x0000014d, + 0x00000012,0x0004003d,0x00000006,0x0000014e,0x00000013,0x00060050,0x0000000e,0x0000014f, + 0x0000014e,0x0000014e,0x0000014e,0x0008000c,0x0000000e,0x00000150,0x00000001,0x0000002e, + 0x0000014c,0x0000014d,0x0000014f,0x000200fe,0x00000150,0x00010038,0x00050036,0x00000006, + 0x00000018,0x00000000,0x00000016,0x00030037,0x00000007,0x00000017,0x000200f8,0x00000019, + 0x0004003d,0x00000006,0x00000153,0x00000017,0x0008000c,0x00000006,0x00000156,0x00000001, + 0x0000002b,0x00000153,0x00000154,0x00000155,0x000200fe,0x00000156,0x00010038,0x00050036, + 0x0000001a,0x0000001e,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x000200f8, + 0x0000001f,0x0004003d,0x0000001a,0x00000159,0x0000001d,0x0006000c,0x0000001a,0x0000015a, + 0x00000001,0x0000000a,0x00000159,0x000200fe,0x0000015a,0x00010038,0x00050036,0x00000006, + 0x00000023,0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x00030037,0x00000007, + 0x00000022,0x000200f8,0x00000024,0x0004003d,0x00000006,0x0000015d,0x00000021,0x0004003d, + 0x00000006,0x0000015e,0x00000022,0x0007000c,0x00000006,0x0000015f,0x00000001,0x00000025, + 0x0000015d,0x0000015e,0x000200fe,0x0000015f,0x00010038,0x00050036,0x0000001a,0x00000028, + 0x00000000,0x00000025,0x00030037,0x0000001b,0x00000026,0x00030037,0x0000001b,0x00000027, + 0x000200f8,0x00000029,0x0004003d,0x0000001a,0x00000162,0x00000026,0x0004003d,0x0000001a, + 0x00000163,0x00000027,0x0007000c,0x0000001a,0x00000164,0x00000001,0x00000025,0x00000162, + 0x00000163,0x000200fe,0x00000164,0x00010038,0x00050036,0x0000000e,0x0000002d,0x00000000, + 0x0000002a,0x00030037,0x0000000f,0x0000002b,0x00030037,0x0000000f,0x0000002c,0x000200f8, + 0x0000002e,0x0004003d,0x0000000e,0x00000167,0x0000002b,0x0004003d,0x0000000e,0x00000168, + 0x0000002c,0x0007000c,0x0000000e,0x00000169,0x00000001,0x00000025,0x00000167,0x00000168, + 0x000200fe,0x00000169,0x00010038,0x00050036,0x0000002f,0x00000034,0x00000000,0x00000031, + 0x00030037,0x00000030,0x00000032,0x00030037,0x00000030,0x00000033,0x000200f8,0x00000035, + 0x0004003d,0x0000002f,0x0000016c,0x00000032,0x0004003d,0x0000002f,0x0000016d,0x00000033, + 0x0007000c,0x0000002f,0x0000016e,0x00000001,0x00000025,0x0000016c,0x0000016d,0x000200fe, + 0x0000016e,0x00010038,0x00050036,0x00000036,0x0000003b,0x00000000,0x00000038,0x00030037, + 0x00000037,0x00000039,0x00030037,0x00000037,0x0000003a,0x000200f8,0x0000003c,0x0004003d, + 0x00000036,0x00000171,0x00000039,0x0004003d,0x00000036,0x00000172,0x0000003a,0x0007000c, + 0x00000036,0x00000173,0x00000001,0x00000027,0x00000171,0x00000172,0x000200fe,0x00000173, + 0x00010038,0x00050036,0x00000006,0x0000003f,0x00000000,0x00000020,0x00030037,0x00000007, + 0x0000003d,0x00030037,0x00000007,0x0000003e,0x000200f8,0x00000040,0x0004003d,0x00000006, + 0x00000176,0x0000003d,0x0004003d,0x00000006,0x00000177,0x0000003e,0x0007000c,0x00000006, + 0x00000178,0x00000001,0x00000028,0x00000176,0x00000177,0x000200fe,0x00000178,0x00010038, + 0x00050036,0x0000001a,0x00000043,0x00000000,0x00000025,0x00030037,0x0000001b,0x00000041, + 0x00030037,0x0000001b,0x00000042,0x000200f8,0x00000044,0x0004003d,0x0000001a,0x0000017b, + 0x00000041,0x0004003d,0x0000001a,0x0000017c,0x00000042,0x0007000c,0x0000001a,0x0000017d, + 0x00000001,0x00000028,0x0000017b,0x0000017c,0x000200fe,0x0000017d,0x00010038,0x00050036, + 0x0000000e,0x00000047,0x00000000,0x0000002a,0x00030037,0x0000000f,0x00000045,0x00030037, + 0x0000000f,0x00000046,0x000200f8,0x00000048,0x0004003d,0x0000000e,0x00000180,0x00000045, + 0x0004003d,0x0000000e,0x00000181,0x00000046,0x0007000c,0x0000000e,0x00000182,0x00000001, + 0x00000028,0x00000180,0x00000181,0x000200fe,0x00000182,0x00010038,0x00050036,0x0000002f, + 0x0000004b,0x00000000,0x00000031,0x00030037,0x00000030,0x00000049,0x00030037,0x00000030, + 0x0000004a,0x000200f8,0x0000004c,0x0004003d,0x0000002f,0x00000185,0x00000049,0x0004003d, + 0x0000002f,0x00000186,0x0000004a,0x0007000c,0x0000002f,0x00000187,0x00000001,0x00000028, + 0x00000185,0x00000186,0x000200fe,0x00000187,0x00010038,0x00050036,0x00000036,0x0000004f, + 0x00000000,0x00000038,0x00030037,0x00000037,0x0000004d,0x00030037,0x00000037,0x0000004e, + 0x000200f8,0x00000050,0x0004003d,0x00000036,0x0000018a,0x0000004d,0x0004003d,0x00000036, + 0x0000018b,0x0000004e,0x0007000c,0x00000036,0x0000018c,0x00000001,0x0000002a,0x0000018a, + 0x0000018b,0x000200fe,0x0000018c,0x00010038,0x00050036,0x00000006,0x00000053,0x00000000, + 0x00000020,0x00030037,0x00000007,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8, + 0x00000054,0x0004003d,0x00000006,0x0000018f,0x00000051,0x0004003d,0x00000006,0x00000190, + 0x00000052,0x0007000c,0x00000006,0x00000191,0x00000001,0x0000001a,0x0000018f,0x00000190, + 0x000200fe,0x00000191,0x00010038,0x00050036,0x00000055,0x00000057,0x00000000,0x00000056, + 0x000200f8,0x00000058,0x00050041,0x00000198,0x00000199,0x00000196,0x00000197,0x0004003d, + 0x00000055,0x0000019a,0x00000199,0x000200fe,0x0000019a,0x00010038,0x00050036,0x00000055, + 0x00000059,0x00000000,0x00000056,0x000200f8,0x0000005a,0x00050041,0x00000198,0x0000019e, + 0x00000196,0x0000019d,0x0004003d,0x00000055,0x0000019f,0x0000019e,0x000200fe,0x0000019f, + 0x00010038,0x00050036,0x00000055,0x0000005b,0x00000000,0x00000056,0x000200f8,0x0000005c, + 0x00050041,0x00000198,0x000001a3,0x00000196,0x000001a2,0x0004003d,0x00000055,0x000001a4, + 0x000001a3,0x000200fe,0x000001a4,0x00010038,0x00050036,0x00000055,0x0000005d,0x00000000, + 0x00000056,0x000200f8,0x0000005e,0x00050041,0x00000198,0x000001a8,0x00000196,0x000001a7, + 0x0004003d,0x00000055,0x000001a9,0x000001a8,0x000200fe,0x000001a9,0x00010038,0x00050036, + 0x0000001a,0x00000060,0x00000000,0x0000005f,0x000200f8,0x00000061,0x00050041,0x000001ad, + 0x000001ae,0x00000196,0x000001ac,0x0004003d,0x0000001a,0x000001af,0x000001ae,0x000200fe, + 0x000001af,0x00010038,0x00050036,0x0000001a,0x00000062,0x00000000,0x0000005f,0x000200f8, + 0x00000063,0x00050041,0x000001ad,0x000001b3,0x00000196,0x000001b2,0x0004003d,0x0000001a, + 0x000001b4,0x000001b3,0x000200fe,0x000001b4,0x00010038,0x00050036,0x00000006,0x00000065, + 0x00000000,0x00000064,0x000200f8,0x00000066,0x00050041,0x000001b8,0x000001b9,0x00000196, + 0x000001b7,0x0004003d,0x00000006,0x000001ba,0x000001b9,0x000200fe,0x000001ba,0x00010038, + 0x00050036,0x00000006,0x00000067,0x00000000,0x00000064,0x000200f8,0x00000068,0x00050041, + 0x000001b8,0x000001be,0x00000196,0x000001bd,0x0004003d,0x00000006,0x000001bf,0x000001be, + 0x000200fe,0x000001bf,0x00010038,0x00050036,0x00000006,0x00000069,0x00000000,0x00000064, + 0x000200f8,0x0000006a,0x00050041,0x000001b8,0x000001c3,0x00000196,0x000001c2,0x0004003d, + 0x00000006,0x000001c4,0x000001c3,0x000200fe,0x000001c4,0x00010038,0x00050036,0x00000006, + 0x0000006b,0x00000000,0x00000064,0x000200f8,0x0000006c,0x00050041,0x000001b8,0x000001c8, + 0x00000196,0x000001c7,0x0004003d,0x00000006,0x000001c9,0x000001c8,0x000200fe,0x000001c9, + 0x00010038,0x00050036,0x0000000e,0x00000070,0x00000000,0x0000006e,0x00030037,0x0000006d, + 0x0000006f,0x000200f8,0x00000071,0x0004003d,0x000001cc,0x000001cf,0x000001ce,0x0004003d, + 0x00000055,0x000001d0,0x0000006f,0x0007005f,0x0000002f,0x000001d1,0x000001cf,0x000001d0, + 0x00000002,0x00000197,0x0008004f,0x0000000e,0x000001d2,0x000001d1,0x000001d1,0x00000000, + 0x00000001,0x00000002,0x000200fe,0x000001d2,0x00010038,0x00050036,0x0000002f,0x00000074, + 0x00000000,0x00000072,0x00030037,0x0000006d,0x00000073,0x000200f8,0x00000075,0x0004003d, + 0x000001cc,0x000001d6,0x000001d5,0x0004003d,0x00000055,0x000001d7,0x00000073,0x0007005f, + 0x0000002f,0x000001d8,0x000001d6,0x000001d7,0x00000002,0x00000197,0x000200fe,0x000001d8, + 0x00010038,0x00050036,0x00000002,0x00000079,0x00000000,0x00000076,0x00030037,0x0000006d, + 0x00000077,0x00030037,0x00000030,0x00000078,0x000200f8,0x0000007a,0x0004003d,0x000001db, + 0x000001de,0x000001dd,0x0004003d,0x00000055,0x000001df,0x00000077,0x0004003d,0x0000002f, + 0x000001e0,0x00000078,0x00040063,0x000001de,0x000001df,0x000001e0,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x0000007e,0x00000000,0x0000007b,0x00030037,0x0000006d,0x0000007c, + 0x00030037,0x0000000f,0x0000007d,0x000200f8,0x0000007f,0x0004003d,0x000001e1,0x000001e4, + 0x000001e3,0x0004003d,0x00000055,0x000001e5,0x0000007c,0x0004003d,0x0000000e,0x000001e6, + 0x0000007d,0x00050051,0x00000006,0x000001e7,0x000001e6,0x00000000,0x00050051,0x00000006, + 0x000001e8,0x000001e6,0x00000001,0x00050051,0x00000006,0x000001e9,0x000001e6,0x00000002, + 0x00070050,0x0000002f,0x000001ea,0x000001e7,0x000001e8,0x000001e9,0x00000155,0x00040063, + 0x000001e4,0x000001e5,0x000001ea,0x000100fd,0x00010038,0x00050036,0x00000055,0x00000080, + 0x00000000,0x00000056,0x000200f8,0x00000081,0x0004003d,0x000001cc,0x000001ec,0x000001eb, + 0x00050067,0x00000055,0x000001ed,0x000001ec,0x00000197,0x000200fe,0x000001ed,0x00010038, + 0x00050036,0x00000006,0x00000084,0x00000000,0x00000082,0x00030037,0x0000001b,0x00000083, + 0x000200f8,0x00000085,0x0004003d,0x000001cc,0x000001f0,0x000001eb,0x0004003d,0x000001f1, + 0x000001f4,0x000001f3,0x00050056,0x000001f5,0x000001f6,0x000001f0,0x000001f4,0x0004003d, + 0x0000001a,0x000001f7,0x00000083,0x00070058,0x0000002f,0x000001f8,0x000001f6,0x000001f7, + 0x00000002,0x00000154,0x00050051,0x00000006,0x000001fb,0x000001f8,0x00000000,0x000200fe, + 0x000001fb,0x00010038,0x00050036,0x00000006,0x00000087,0x00000000,0x00000082,0x00030037, + 0x0000001b,0x00000086,0x000200f8,0x00000088,0x0004003d,0x000001cc,0x000001ff,0x000001fe, + 0x0004003d,0x000001f1,0x00000200,0x000001f3,0x00050056,0x000001f5,0x00000201,0x000001ff, + 0x00000200,0x0004003d,0x0000001a,0x00000202,0x00000086,0x00070058,0x0000002f,0x00000203, + 0x00000201,0x00000202,0x00000002,0x00000154,0x00050051,0x00000006,0x00000204,0x00000203, + 0x00000000,0x000200fe,0x00000204,0x00010038,0x00050036,0x00000006,0x0000008b,0x00000000, + 0x00000089,0x00030037,0x0000006d,0x0000008a,0x000200f8,0x0000008c,0x0004003d,0x00000207, + 0x0000020a,0x00000209,0x0004003d,0x00000055,0x0000020b,0x0000008a,0x00050062,0x0000002f, + 0x0000020c,0x0000020a,0x0000020b,0x00050051,0x00000006,0x0000020d,0x0000020c,0x00000000, + 0x000200fe,0x0000020d,0x00010038,0x00050036,0x00000002,0x00000090,0x00000000,0x0000008d, + 0x00030037,0x0000006d,0x0000008e,0x00030037,0x00000007,0x0000008f,0x000200f8,0x00000091, + 0x0004003d,0x00000207,0x00000210,0x00000209,0x0004003d,0x00000055,0x00000211,0x0000008e, + 0x0004003d,0x00000006,0x00000212,0x0000008f,0x00070050,0x0000002f,0x00000213,0x00000212, + 0x00000154,0x00000154,0x00000154,0x00040063,0x00000210,0x00000211,0x00000213,0x000100fd, + 0x00010038,0x00050036,0x0000001a,0x00000094,0x00000000,0x00000092,0x00030037,0x0000006d, + 0x00000093,0x000200f8,0x00000095,0x0004003d,0x000001cc,0x00000215,0x00000214,0x0004003d, + 0x00000055,0x00000216,0x00000093,0x0007005f,0x0000002f,0x00000217,0x00000215,0x00000216, + 0x00000002,0x00000197,0x0007004f,0x0000001a,0x00000218,0x00000217,0x00000217,0x00000000, + 0x00000001,0x000200fe,0x00000218,0x00010038,0x00050036,0x00000006,0x00000096,0x00000000, + 0x00000064,0x000200f8,0x00000097,0x0004003b,0x00000007,0x0000021b,0x00000007,0x0004003d, + 0x000001cc,0x0000021d,0x0000021c,0x0007005f,0x0000002f,0x0000021f,0x0000021d,0x0000021e, + 0x00000002,0x00000197,0x00050051,0x00000006,0x00000220,0x0000021f,0x00000000,0x0003003e, + 0x0000021b,0x00000220,0x0004003d,0x00000006,0x00000221,0x0000021b,0x000500b4,0x000000a7, + 0x00000222,0x00000221,0x00000154,0x000300f7,0x00000224,0x00000000,0x000400fa,0x00000222, + 0x00000223,0x00000224,0x000200f8,0x00000223,0x0003003e,0x0000021b,0x00000155,0x000200f9, + 0x00000224,0x000200f8,0x00000224,0x0004003d,0x00000006,0x00000225,0x0000021b,0x000200fe, + 0x00000225,0x00010038,0x00050036,0x0000002f,0x0000009a,0x00000000,0x00000098,0x00030037, + 0x0000001b,0x00000099,0x000200f8,0x0000009b,0x0004003d,0x000001cc,0x00000229,0x00000228, + 0x0004003d,0x000001f1,0x0000022a,0x000001f3,0x00050056,0x000001f5,0x0000022b,0x00000229, + 0x0000022a,0x0004003d,0x0000001a,0x0000022c,0x00000099,0x00070058,0x0000002f,0x0000022d, + 0x0000022b,0x0000022c,0x00000002,0x00000154,0x000200fe,0x0000022d,0x00010038,0x00050036, + 0x00000006,0x0000009d,0x00000000,0x00000082,0x00030037,0x0000001b,0x0000009c,0x000200f8, + 0x0000009e,0x0004003d,0x0000001a,0x00000230,0x0000009c,0x00050085,0x0000001a,0x00000234, + 0x00000230,0x00000233,0x0006000c,0x00000006,0x00000235,0x00000001,0x00000042,0x00000234, + 0x000200fe,0x00000235,0x00010038,0x00050036,0x00000002,0x000000a5,0x00000000,0x000000a1, + 0x00030037,0x000000a0,0x000000a2,0x00030037,0x0000000e,0x000000a3,0x00030037,0x00000006, + 0x000000a4,0x000200f8,0x000000a6,0x0004003b,0x0000000f,0x0000023a,0x00000007,0x00050041, + 0x0000000f,0x00000238,0x000000a2,0x000001a2,0x0003003e,0x00000238,0x000000a3,0x00050041, + 0x0000000f,0x00000239,0x000000a2,0x000001a7,0x0003003e,0x00000239,0x000000a3,0x0005008e, + 0x0000000e,0x0000023b,0x000000a3,0x000000a4,0x0003003e,0x0000023a,0x0000023b,0x0004003d, + 0x0000000e,0x0000023c,0x0000023a,0x00050041,0x0000000f,0x0000023d,0x000000a2,0x00000197, + 0x0003003e,0x0000023d,0x0000023c,0x0004003d,0x0000000e,0x0000023f,0x0000023a,0x00050085, + 0x0000000e,0x00000240,0x000000a3,0x0000023f,0x00050041,0x0000000f,0x00000241,0x000000a2, + 0x0000023e,0x0003003e,0x00000241,0x00000240,0x00050041,0x00000007,0x00000242,0x000000a2, + 0x0000019d,0x0003003e,0x00000242,0x000000a4,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x000000ae,0x00000000,0x000000a9,0x00030037,0x000000a8,0x000000aa,0x00030037,0x000000a0, + 0x000000ab,0x00030037,0x0000000e,0x000000ac,0x00030037,0x00000006,0x000000ad,0x000200f8, + 0x000000af,0x0004003b,0x000000a0,0x00000246,0x00000007,0x0004003b,0x0000000f,0x0000024b, + 0x00000007,0x0004003b,0x0000000f,0x0000024e,0x00000007,0x0004003b,0x0000000f,0x00000251, + 0x00000007,0x0004003b,0x0000000f,0x00000254,0x00000007,0x0004003b,0x0000000f,0x00000257, + 0x00000007,0x0004003d,0x000000a7,0x00000243,0x000000aa,0x000300f7,0x00000245,0x00000000, + 0x000400fa,0x00000243,0x00000244,0x0000024a,0x000200f8,0x00000244,0x0004003d,0x0000009f, + 0x00000247,0x000000ab,0x0003003e,0x00000246,0x00000247,0x00070039,0x00000002,0x00000248, + 0x000000a5,0x00000246,0x000000ac,0x000000ad,0x0004003d,0x0000009f,0x00000249,0x00000246, + 0x0003003e,0x000000ab,0x00000249,0x000200f9,0x00000245,0x000200f8,0x0000024a,0x00050041, + 0x0000000f,0x0000024c,0x000000ab,0x000001a2,0x0004003d,0x0000000e,0x0000024d,0x0000024c, + 0x0003003e,0x0000024b,0x0000024d,0x0003003e,0x0000024e,0x000000ac,0x00060039,0x0000000e, + 0x0000024f,0x0000002d,0x0000024b,0x0000024e,0x00050041,0x0000000f,0x00000250,0x000000ab, + 0x000001a2,0x0003003e,0x00000250,0x0000024f,0x00050041,0x0000000f,0x00000252,0x000000ab, + 0x000001a7,0x0004003d,0x0000000e,0x00000253,0x00000252,0x0003003e,0x00000251,0x00000253, + 0x0003003e,0x00000254,0x000000ac,0x00060039,0x0000000e,0x00000255,0x00000047,0x00000251, + 0x00000254,0x00050041,0x0000000f,0x00000256,0x000000ab,0x000001a7,0x0003003e,0x00000256, + 0x00000255,0x0005008e,0x0000000e,0x00000258,0x000000ac,0x000000ad,0x0003003e,0x00000257, + 0x00000258,0x0004003d,0x0000000e,0x00000259,0x00000257,0x00050041,0x0000000f,0x0000025a, + 0x000000ab,0x00000197,0x0004003d,0x0000000e,0x0000025b,0x0000025a,0x00050081,0x0000000e, + 0x0000025c,0x0000025b,0x00000259,0x00050041,0x0000000f,0x0000025d,0x000000ab,0x00000197, + 0x0003003e,0x0000025d,0x0000025c,0x0004003d,0x0000000e,0x0000025e,0x00000257,0x00050085, + 0x0000000e,0x0000025f,0x000000ac,0x0000025e,0x00050041,0x0000000f,0x00000260,0x000000ab, + 0x0000023e,0x0004003d,0x0000000e,0x00000261,0x00000260,0x00050081,0x0000000e,0x00000262, + 0x00000261,0x0000025f,0x00050041,0x0000000f,0x00000263,0x000000ab,0x0000023e,0x0003003e, + 0x00000263,0x00000262,0x00050041,0x00000007,0x00000264,0x000000ab,0x0000019d,0x0004003d, + 0x00000006,0x00000265,0x00000264,0x00050081,0x00000006,0x00000266,0x00000265,0x000000ad, + 0x00050041,0x00000007,0x00000267,0x000000ab,0x0000019d,0x0003003e,0x00000267,0x00000266, + 0x000200f9,0x00000245,0x000200f8,0x00000245,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x000000b2,0x00000000,0x000000b0,0x00030037,0x000000a0,0x000000b1,0x000200f8,0x000000b3, + 0x0004003b,0x00000007,0x0000026d,0x00000007,0x0004003b,0x0000000f,0x00000283,0x00000007, + 0x00050041,0x00000007,0x00000268,0x000000b1,0x0000019d,0x0004003d,0x00000006,0x00000269, + 0x00000268,0x0006000c,0x00000006,0x0000026a,0x00000001,0x00000004,0x00000269,0x000500ba, + 0x000000a7,0x0000026c,0x0000026a,0x0000026b,0x000300f7,0x0000026f,0x00000000,0x000400fa, + 0x0000026c,0x0000026e,0x00000272,0x000200f8,0x0000026e,0x00050041,0x00000007,0x00000270, + 0x000000b1,0x0000019d,0x0004003d,0x00000006,0x00000271,0x00000270,0x0003003e,0x0000026d, + 0x00000271,0x000200f9,0x0000026f,0x000200f8,0x00000272,0x0003003e,0x0000026d,0x00000155, + 0x000200f9,0x0000026f,0x000200f8,0x0000026f,0x0004003d,0x00000006,0x00000273,0x0000026d, + 0x00050041,0x00000007,0x00000274,0x000000b1,0x0000019d,0x0003003e,0x00000274,0x00000273, + 0x00050041,0x00000007,0x00000275,0x000000b1,0x0000019d,0x0004003d,0x00000006,0x00000276, + 0x00000275,0x00050041,0x0000000f,0x00000277,0x000000b1,0x00000197,0x0004003d,0x0000000e, + 0x00000278,0x00000277,0x00060050,0x0000000e,0x00000279,0x00000276,0x00000276,0x00000276, + 0x00050088,0x0000000e,0x0000027a,0x00000278,0x00000279,0x00050041,0x0000000f,0x0000027b, + 0x000000b1,0x00000197,0x0003003e,0x0000027b,0x0000027a,0x00050041,0x00000007,0x0000027c, + 0x000000b1,0x0000019d,0x0004003d,0x00000006,0x0000027d,0x0000027c,0x00050041,0x0000000f, + 0x0000027e,0x000000b1,0x0000023e,0x0004003d,0x0000000e,0x0000027f,0x0000027e,0x00060050, + 0x0000000e,0x00000280,0x0000027d,0x0000027d,0x0000027d,0x00050088,0x0000000e,0x00000281, + 0x0000027f,0x00000280,0x00050041,0x0000000f,0x00000282,0x000000b1,0x0000023e,0x0003003e, + 0x00000282,0x00000281,0x00050041,0x0000000f,0x00000284,0x000000b1,0x0000023e,0x0004003d, + 0x0000000e,0x00000285,0x00000284,0x00050041,0x0000000f,0x00000286,0x000000b1,0x00000197, + 0x0004003d,0x0000000e,0x00000287,0x00000286,0x00050041,0x0000000f,0x00000288,0x000000b1, + 0x00000197,0x0004003d,0x0000000e,0x00000289,0x00000288,0x00050085,0x0000000e,0x0000028a, + 0x00000287,0x00000289,0x00050083,0x0000000e,0x0000028b,0x00000285,0x0000028a,0x0006000c, + 0x0000000e,0x0000028c,0x00000001,0x00000004,0x0000028b,0x0006000c,0x0000000e,0x0000028d, + 0x00000001,0x0000001f,0x0000028c,0x0003003e,0x00000283,0x0000028d,0x0004003d,0x0000000e, + 0x0000028e,0x00000283,0x00050041,0x0000000f,0x0000028f,0x000000b1,0x0000023e,0x0003003e, + 0x0000028f,0x0000028e,0x000100fd,0x00010038,0x00050036,0x0000000e,0x000000b6,0x00000000, + 0x000000b4,0x00030037,0x0000000f,0x000000b5,0x000200f8,0x000000b7,0x0004003b,0x0000000f, + 0x00000290,0x00000007,0x00050041,0x00000007,0x00000291,0x000000b5,0x000001fa,0x0004003d, + 0x00000006,0x00000292,0x00000291,0x00050041,0x00000007,0x00000294,0x000000b5,0x00000293, + 0x0004003d,0x00000006,0x00000295,0x00000294,0x00050081,0x00000006,0x00000296,0x00000292, + 0x00000295,0x00050041,0x00000007,0x00000298,0x000000b5,0x00000297,0x0004003d,0x00000006, + 0x00000299,0x00000298,0x00050083,0x00000006,0x0000029a,0x00000296,0x00000299,0x00050041, + 0x00000007,0x0000029b,0x000000b5,0x000001fa,0x0004003d,0x00000006,0x0000029c,0x0000029b, + 0x00050041,0x00000007,0x0000029d,0x000000b5,0x00000297,0x0004003d,0x00000006,0x0000029e, + 0x0000029d,0x00050081,0x00000006,0x0000029f,0x0000029c,0x0000029e,0x00050041,0x00000007, + 0x000002a0,0x000000b5,0x000001fa,0x0004003d,0x00000006,0x000002a1,0x000002a0,0x00050041, + 0x00000007,0x000002a2,0x000000b5,0x00000293,0x0004003d,0x00000006,0x000002a3,0x000002a2, + 0x00050083,0x00000006,0x000002a4,0x000002a1,0x000002a3,0x00050041,0x00000007,0x000002a5, + 0x000000b5,0x00000297,0x0004003d,0x00000006,0x000002a6,0x000002a5,0x00050083,0x00000006, + 0x000002a7,0x000002a4,0x000002a6,0x00060050,0x0000000e,0x000002a8,0x0000029a,0x0000029f, + 0x000002a7,0x0003003e,0x00000290,0x000002a8,0x0004003d,0x0000000e,0x000002a9,0x00000290, + 0x000200fe,0x000002a9,0x00010038,0x00050036,0x0000000e,0x000000b9,0x00000000,0x000000b4, + 0x00030037,0x0000000f,0x000000b8,0x000200f8,0x000000ba,0x0004003b,0x0000000f,0x000002ac, + 0x00000007,0x00050041,0x00000007,0x000002ae,0x000000b8,0x000001fa,0x0004003d,0x00000006, + 0x000002af,0x000002ae,0x00050085,0x00000006,0x000002b0,0x000002ad,0x000002af,0x00050041, + 0x00000007,0x000002b2,0x000000b8,0x00000293,0x0004003d,0x00000006,0x000002b3,0x000002b2, + 0x00050085,0x00000006,0x000002b4,0x000002b1,0x000002b3,0x00050081,0x00000006,0x000002b5, + 0x000002b0,0x000002b4,0x00050041,0x00000007,0x000002b6,0x000000b8,0x00000297,0x0004003d, + 0x00000006,0x000002b7,0x000002b6,0x00050085,0x00000006,0x000002b8,0x000002ad,0x000002b7, + 0x00050081,0x00000006,0x000002b9,0x000002b5,0x000002b8,0x00050041,0x00000007,0x000002ba, + 0x000000b8,0x000001fa,0x0004003d,0x00000006,0x000002bb,0x000002ba,0x00050085,0x00000006, + 0x000002bc,0x000002b1,0x000002bb,0x00050041,0x00000007,0x000002bd,0x000000b8,0x00000297, + 0x0004003d,0x00000006,0x000002be,0x000002bd,0x00050085,0x00000006,0x000002bf,0x000002b1, + 0x000002be,0x00050083,0x00000006,0x000002c0,0x000002bc,0x000002bf,0x00050041,0x00000007, + 0x000002c2,0x000000b8,0x000001fa,0x0004003d,0x00000006,0x000002c3,0x000002c2,0x00050085, + 0x00000006,0x000002c4,0x000002c1,0x000002c3,0x00050041,0x00000007,0x000002c5,0x000000b8, + 0x00000293,0x0004003d,0x00000006,0x000002c6,0x000002c5,0x00050085,0x00000006,0x000002c7, + 0x000002b1,0x000002c6,0x00050081,0x00000006,0x000002c8,0x000002c4,0x000002c7,0x00050041, + 0x00000007,0x000002c9,0x000000b8,0x00000297,0x0004003d,0x00000006,0x000002ca,0x000002c9, + 0x00050085,0x00000006,0x000002cb,0x000002ad,0x000002ca,0x00050083,0x00000006,0x000002cc, + 0x000002c8,0x000002cb,0x00060050,0x0000000e,0x000002cd,0x000002b9,0x000002c0,0x000002cc, + 0x0003003e,0x000002ac,0x000002cd,0x0004003d,0x0000000e,0x000002ce,0x000002ac,0x000200fe, + 0x000002ce,0x00010038,0x00050036,0x0000000e,0x000000bc,0x00000000,0x000000b4,0x00030037, + 0x0000000f,0x000000bb,0x000200f8,0x000000bd,0x0004003b,0x00000007,0x000002d2,0x00000007, + 0x0004003b,0x00000007,0x000002d3,0x00000007,0x0004003b,0x00000007,0x000002d7,0x00000007, + 0x0004003b,0x00000007,0x000002da,0x00000007,0x0004003b,0x00000007,0x000002de,0x00000007, + 0x0004003b,0x00000007,0x000002df,0x00000007,0x0004003d,0x0000000e,0x000002d1,0x000000bb, + 0x0003003e,0x000002d2,0x00000154,0x00050041,0x00000007,0x000002d4,0x000000bb,0x000001fa, + 0x0004003d,0x00000006,0x000002d5,0x000002d4,0x0003003e,0x000002d3,0x000002d5,0x00060039, + 0x00000006,0x000002d6,0x0000003f,0x000002d2,0x000002d3,0x00050041,0x00000007,0x000002d8, + 0x000000bb,0x00000293,0x0004003d,0x00000006,0x000002d9,0x000002d8,0x0003003e,0x000002d7, + 0x000002d9,0x00050041,0x00000007,0x000002db,0x000000bb,0x00000297,0x0004003d,0x00000006, + 0x000002dc,0x000002db,0x0003003e,0x000002da,0x000002dc,0x00060039,0x00000006,0x000002dd, + 0x0000003f,0x000002d7,0x000002da,0x0003003e,0x000002de,0x000002d6,0x0003003e,0x000002df, + 0x000002dd,0x00060039,0x00000006,0x000002e0,0x0000003f,0x000002de,0x000002df,0x00050081, + 0x00000006,0x000002e1,0x000002e0,0x00000155,0x00060050,0x0000000e,0x000002e2,0x000002e1, + 0x000002e1,0x000002e1,0x00050088,0x0000000e,0x000002e3,0x000002d1,0x000002e2,0x000200fe, + 0x000002e3,0x00010038,0x00050036,0x0000000e,0x000000bf,0x00000000,0x000000b4,0x00030037, + 0x0000000f,0x000000be,0x000200f8,0x000000c0,0x0004003b,0x00000007,0x000002e8,0x00000007, + 0x0004003b,0x00000007,0x000002eb,0x00000007,0x0004003b,0x00000007,0x000002ef,0x00000007, + 0x0004003b,0x00000007,0x000002f2,0x00000007,0x0004003b,0x00000007,0x000002f5,0x00000007, + 0x0004003b,0x00000007,0x000002f6,0x00000007,0x0004003d,0x0000000e,0x000002e6,0x000000be, + 0x00050041,0x00000007,0x000002e9,0x000000be,0x00000293,0x0004003d,0x00000006,0x000002ea, + 0x000002e9,0x0003003e,0x000002e8,0x000002ea,0x00050041,0x00000007,0x000002ec,0x000000be, + 0x00000297,0x0004003d,0x00000006,0x000002ed,0x000002ec,0x0003003e,0x000002eb,0x000002ed, + 0x00060039,0x00000006,0x000002ee,0x0000003f,0x000002e8,0x000002eb,0x00050041,0x00000007, + 0x000002f0,0x000000be,0x000001fa,0x0004003d,0x00000006,0x000002f1,0x000002f0,0x0003003e, + 0x000002ef,0x000002f1,0x0003003e,0x000002f2,0x000002ee,0x00060039,0x00000006,0x000002f3, + 0x0000003f,0x000002ef,0x000002f2,0x00050083,0x00000006,0x000002f4,0x00000155,0x000002f3, + 0x0003003e,0x000002f5,0x000002e7,0x0003003e,0x000002f6,0x000002f4,0x00060039,0x00000006, + 0x000002f7,0x0000003f,0x000002f5,0x000002f6,0x00060050,0x0000000e,0x000002f8,0x000002f7, + 0x000002f7,0x000002f7,0x00050088,0x0000000e,0x000002f9,0x000002e6,0x000002f8,0x000200fe, + 0x000002f9,0x00010038,0x00050036,0x000000a7,0x000000c3,0x00000000,0x000000c1,0x00030037, + 0x0000001b,0x000000c2,0x000200f8,0x000000c4,0x00050041,0x00000007,0x000002fc,0x000000c2, + 0x000001fa,0x0004003d,0x00000006,0x000002fd,0x000002fc,0x000500be,0x000000a7,0x000002fe, + 0x000002fd,0x00000154,0x000300f7,0x00000300,0x00000000,0x000400fa,0x000002fe,0x000002ff, + 0x00000300,0x000200f8,0x000002ff,0x00050041,0x00000007,0x00000301,0x000000c2,0x000001fa, + 0x0004003d,0x00000006,0x00000302,0x00000301,0x000500bc,0x000000a7,0x00000303,0x00000302, + 0x00000155,0x000200f9,0x00000300,0x000200f8,0x00000300,0x000700f5,0x000000a7,0x00000304, + 0x000002fe,0x000000c4,0x00000303,0x000002ff,0x000300f7,0x00000306,0x00000000,0x000400fa, + 0x00000304,0x00000305,0x00000306,0x000200f8,0x00000305,0x00050041,0x00000007,0x00000307, + 0x000000c2,0x00000293,0x0004003d,0x00000006,0x00000308,0x00000307,0x000500be,0x000000a7, + 0x00000309,0x00000308,0x00000154,0x000300f7,0x0000030b,0x00000000,0x000400fa,0x00000309, + 0x0000030a,0x0000030b,0x000200f8,0x0000030a,0x00050041,0x00000007,0x0000030c,0x000000c2, + 0x00000293,0x0004003d,0x00000006,0x0000030d,0x0000030c,0x000500bc,0x000000a7,0x0000030e, + 0x0000030d,0x00000155,0x000200f9,0x0000030b,0x000200f8,0x0000030b,0x000700f5,0x000000a7, + 0x0000030f,0x00000309,0x00000305,0x0000030e,0x0000030a,0x000200f9,0x00000306,0x000200f8, + 0x00000306,0x000700f5,0x000000a7,0x00000310,0x00000304,0x00000300,0x0000030f,0x0000030b, + 0x000200fe,0x00000310,0x00010038,0x00050036,0x00000055,0x000000c9,0x00000000,0x000000c5, + 0x00030037,0x0000006d,0x000000c6,0x00030037,0x0000006d,0x000000c7,0x00030037,0x0000006d, + 0x000000c8,0x000200f8,0x000000ca,0x0004003b,0x0000006d,0x00000313,0x00000007,0x0004003b, + 0x00000037,0x0000031a,0x00000007,0x0004003b,0x00000037,0x0000031d,0x00000007,0x0004003b, + 0x00000037,0x0000031f,0x00000007,0x0004003b,0x00000037,0x00000320,0x00000007,0x0004003b, + 0x00000037,0x00000326,0x00000007,0x0004003b,0x00000037,0x00000329,0x00000007,0x0004003b, + 0x00000037,0x0000032b,0x00000007,0x0004003b,0x00000037,0x0000032c,0x00000007,0x0004003d, + 0x00000055,0x00000314,0x000000c6,0x0004003d,0x00000055,0x00000315,0x000000c7,0x00050080, + 0x00000055,0x00000316,0x00000314,0x00000315,0x0003003e,0x00000313,0x00000316,0x00050041, + 0x00000037,0x00000317,0x000000c8,0x000001fa,0x0004003d,0x00000036,0x00000318,0x00000317, + 0x00050082,0x00000036,0x00000319,0x00000318,0x0000023e,0x00050041,0x00000037,0x0000031b, + 0x00000313,0x000001fa,0x0004003d,0x00000036,0x0000031c,0x0000031b,0x0003003e,0x0000031a, + 0x0000031c,0x0003003e,0x0000031d,0x00000319,0x00060039,0x00000036,0x0000031e,0x0000003b, + 0x0000031a,0x0000031d,0x0003003e,0x0000031f,0x00000197,0x0003003e,0x00000320,0x0000031e, + 0x00060039,0x00000036,0x00000321,0x0000004f,0x0000031f,0x00000320,0x00050041,0x00000037, + 0x00000322,0x00000313,0x000001fa,0x0003003e,0x00000322,0x00000321,0x00050041,0x00000037, + 0x00000323,0x000000c8,0x00000293,0x0004003d,0x00000036,0x00000324,0x00000323,0x00050082, + 0x00000036,0x00000325,0x00000324,0x0000023e,0x00050041,0x00000037,0x00000327,0x00000313, + 0x00000293,0x0004003d,0x00000036,0x00000328,0x00000327,0x0003003e,0x00000326,0x00000328, + 0x0003003e,0x00000329,0x00000325,0x00060039,0x00000036,0x0000032a,0x0000003b,0x00000326, + 0x00000329,0x0003003e,0x0000032b,0x00000197,0x0003003e,0x0000032c,0x0000032a,0x00060039, + 0x00000036,0x0000032d,0x0000004f,0x0000032b,0x0000032c,0x00050041,0x00000037,0x0000032e, + 0x00000313,0x00000293,0x0003003e,0x0000032e,0x0000032d,0x0004003d,0x00000055,0x0000032f, + 0x00000313,0x000200fe,0x0000032f,0x00010038,0x00050036,0x0000001a,0x000000cf,0x00000000, + 0x000000cb,0x00030037,0x0000001b,0x000000cc,0x00030037,0x0000006d,0x000000cd,0x00030037, + 0x0000006d,0x000000ce,0x000200f8,0x000000d0,0x0004003b,0x0000001b,0x00000332,0x00000007, + 0x0004003b,0x0000001b,0x00000337,0x00000007,0x0004003b,0x0000001b,0x0000033c,0x00000007, + 0x0004003b,0x0000001b,0x0000033e,0x00000007,0x0004003b,0x0000001b,0x00000340,0x00000007, + 0x0004003b,0x0000001b,0x00000341,0x00000007,0x0004003b,0x0000001b,0x00000343,0x00000007, + 0x0004003d,0x0000001a,0x00000333,0x000000cc,0x0004003d,0x00000055,0x00000334,0x000000cd, + 0x0004006f,0x0000001a,0x00000335,0x00000334,0x00050085,0x0000001a,0x00000336,0x00000333, + 0x00000335,0x0003003e,0x00000332,0x00000336,0x0004003d,0x00000055,0x00000339,0x000000cd, + 0x0004006f,0x0000001a,0x0000033a,0x00000339,0x00050083,0x0000001a,0x0000033b,0x0000033a, + 0x00000338,0x0004003d,0x0000001a,0x0000033d,0x00000332,0x0003003e,0x0000033c,0x0000033d, + 0x0003003e,0x0000033e,0x0000033b,0x00060039,0x0000001a,0x0000033f,0x00000028,0x0000033c, + 0x0000033e,0x0003003e,0x00000340,0x00000338,0x0003003e,0x00000341,0x0000033f,0x00060039, + 0x0000001a,0x00000342,0x00000043,0x00000340,0x00000341,0x0003003e,0x00000337,0x00000342, + 0x0004003d,0x0000001a,0x00000344,0x00000337,0x0004003d,0x00000055,0x00000345,0x000000ce, + 0x0004006f,0x0000001a,0x00000346,0x00000345,0x00050088,0x0000001a,0x00000347,0x00000344, + 0x00000346,0x0003003e,0x00000343,0x00000347,0x0004003d,0x0000001a,0x00000348,0x00000343, + 0x000200fe,0x00000348,0x00010038,0x00050036,0x000000a7,0x000000d4,0x00000000,0x000000d1, + 0x00030037,0x0000006d,0x000000d2,0x00030037,0x0000006d,0x000000d3,0x000200f8,0x000000d5, + 0x0004003d,0x00000055,0x0000034b,0x000000d2,0x0004007c,0x0000034c,0x0000034d,0x0000034b, + 0x0004003d,0x00000055,0x0000034e,0x000000d3,0x0004007c,0x0000034c,0x0000034f,0x0000034e, + 0x000500b0,0x00000350,0x00000351,0x0000034d,0x0000034f,0x0004009b,0x000000a7,0x00000352, + 0x00000351,0x000200fe,0x00000352,0x00010038,0x00050036,0x00000006,0x000000d7,0x00000000, + 0x00000016,0x00030037,0x00000007,0x000000d6,0x000200f8,0x000000d8,0x0004003b,0x00000007, + 0x00000358,0x00000007,0x0004003d,0x00000006,0x00000355,0x000000d6,0x0006000c,0x00000006, + 0x00000356,0x00000001,0x00000004,0x00000355,0x000500b8,0x000000a7,0x00000357,0x00000356, + 0x000002e7,0x000300f7,0x0000035a,0x00000000,0x000400fa,0x00000357,0x00000359,0x0000035b, + 0x000200f8,0x00000359,0x0003003e,0x00000358,0x00000155,0x000200f9,0x0000035a,0x000200f8, + 0x0000035b,0x0004003d,0x00000006,0x0000035d,0x000000d6,0x00050085,0x00000006,0x0000035e, + 0x0000035c,0x0000035d,0x0006000c,0x00000006,0x0000035f,0x00000001,0x0000000d,0x0000035e, + 0x0004003d,0x00000006,0x00000360,0x000000d6,0x00050085,0x00000006,0x00000361,0x0000035c, + 0x00000360,0x00050088,0x00000006,0x00000362,0x0000035f,0x00000361,0x0004003d,0x00000006, + 0x00000364,0x000000d6,0x00050085,0x00000006,0x00000365,0x00000363,0x00000364,0x0006000c, + 0x00000006,0x00000366,0x00000001,0x0000000d,0x00000365,0x0004003d,0x00000006,0x00000367, + 0x000000d6,0x00050085,0x00000006,0x00000368,0x00000363,0x00000367,0x00050088,0x00000006, + 0x00000369,0x00000366,0x00000368,0x00050085,0x00000006,0x0000036a,0x00000362,0x00000369, + 0x0003003e,0x00000358,0x0000036a,0x000200f9,0x0000035a,0x000200f8,0x0000035a,0x0004003d, + 0x00000006,0x0000036b,0x00000358,0x000200fe,0x0000036b,0x00010038,0x00050036,0x00000006, + 0x000000da,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d9,0x000200f8,0x000000db, + 0x0004003b,0x00000007,0x00000371,0x00000007,0x0004003b,0x00000007,0x00000372,0x00000007, + 0x0004003b,0x00000007,0x00000374,0x00000007,0x0004003d,0x00000006,0x0000036e,0x000000d9, + 0x0006000c,0x00000006,0x0000036f,0x00000001,0x00000004,0x0000036e,0x0003003e,0x00000371, + 0x0000036f,0x0003003e,0x00000372,0x00000370,0x00060039,0x00000006,0x00000373,0x00000023, + 0x00000371,0x00000372,0x0003003e,0x000000d9,0x00000373,0x0004003d,0x00000006,0x00000375, + 0x000000d9,0x0003003e,0x00000374,0x00000375,0x00050039,0x00000006,0x00000376,0x000000d7, + 0x00000374,0x000200fe,0x00000376,0x00010038,0x00050036,0x00000006,0x000000dd,0x00000000, + 0x00000016,0x00030037,0x00000007,0x000000dc,0x000200f8,0x000000de,0x0004003b,0x00000007, + 0x00000379,0x00000007,0x0004003b,0x00000007,0x0000037e,0x00000007,0x0004003d,0x00000006, + 0x0000037b,0x000000dc,0x00050085,0x00000006,0x0000037c,0x0000037a,0x0000037b,0x00050083, + 0x00000006,0x0000037d,0x0000037c,0x00000155,0x0003003e,0x00000379,0x0000037d,0x0004003d, + 0x00000006,0x0000037f,0x000000dc,0x00050085,0x00000006,0x00000380,0x000002ad,0x0000037f, + 0x00050083,0x00000006,0x00000381,0x00000380,0x00000155,0x0003003e,0x0000037e,0x00000381, + 0x0004003d,0x00000006,0x00000383,0x00000379,0x00050085,0x00000006,0x00000384,0x00000382, + 0x00000383,0x0004003d,0x00000006,0x00000385,0x00000379,0x00050085,0x00000006,0x00000386, + 0x00000384,0x00000385,0x00050083,0x00000006,0x00000388,0x00000386,0x00000387,0x0004003d, + 0x00000006,0x00000389,0x0000037e,0x0004003d,0x00000006,0x0000038a,0x0000037e,0x00050085, + 0x00000006,0x0000038b,0x00000389,0x0000038a,0x00050085,0x00000006,0x0000038c,0x00000388, + 0x0000038b,0x000200fe,0x0000038c,0x00010038,0x00050036,0x00000006,0x000000e0,0x00000000, + 0x00000016,0x00030037,0x00000007,0x000000df,0x000200f8,0x000000e1,0x0004003b,0x00000007, + 0x00000390,0x00000007,0x0004003b,0x00000007,0x00000392,0x00000007,0x0004003b,0x00000007, + 0x00000394,0x00000007,0x0004003d,0x00000006,0x00000391,0x000000df,0x0003003e,0x00000390, + 0x00000391,0x0003003e,0x00000392,0x0000038f,0x00060039,0x00000006,0x00000393,0x00000023, + 0x00000390,0x00000392,0x0003003e,0x000000df,0x00000393,0x0004003d,0x00000006,0x00000395, + 0x000000df,0x0003003e,0x00000394,0x00000395,0x00050039,0x00000006,0x00000396,0x000000dd, + 0x00000394,0x000200fe,0x00000396,0x00010038,0x00050036,0x0000002f,0x000000e8,0x00000000, + 0x000000e2,0x00030037,0x00000030,0x000000e3,0x00030037,0x00000030,0x000000e4,0x00030037, + 0x00000030,0x000000e5,0x00030037,0x00000030,0x000000e6,0x00030037,0x00000007,0x000000e7, + 0x000200f8,0x000000e9,0x0004003b,0x00000007,0x00000399,0x00000007,0x0004003b,0x00000007, + 0x0000039d,0x00000007,0x0004003b,0x00000007,0x0000039f,0x00000007,0x0004003b,0x00000007, + 0x000003a3,0x00000007,0x0004003b,0x00000007,0x000003a5,0x00000007,0x0004003b,0x00000007, + 0x000003a8,0x00000007,0x0004003b,0x00000007,0x000003aa,0x00000007,0x0004003b,0x00000007, + 0x000003ad,0x00000007,0x0004003d,0x00000006,0x0000039b,0x000000e7,0x00050083,0x00000006, + 0x0000039c,0x0000039a,0x0000039b,0x0003003e,0x0000039d,0x0000039c,0x00050039,0x00000006, + 0x0000039e,0x000000da,0x0000039d,0x0003003e,0x00000399,0x0000039e,0x0004003d,0x00000006, + 0x000003a1,0x000000e7,0x00050083,0x00000006,0x000003a2,0x000003a0,0x000003a1,0x0003003e, + 0x000003a3,0x000003a2,0x00050039,0x00000006,0x000003a4,0x000000da,0x000003a3,0x0003003e, + 0x0000039f,0x000003a4,0x0004003d,0x00000006,0x000003a6,0x000000e7,0x00050083,0x00000006, + 0x000003a7,0x00000155,0x000003a6,0x0003003e,0x000003a8,0x000003a7,0x00050039,0x00000006, + 0x000003a9,0x000000da,0x000003a8,0x0003003e,0x000003a5,0x000003a9,0x0004003d,0x00000006, + 0x000003ab,0x000000e7,0x00050083,0x00000006,0x000003ac,0x00000370,0x000003ab,0x0003003e, + 0x000003ad,0x000003ac,0x00050039,0x00000006,0x000003ae,0x000000da,0x000003ad,0x0003003e, + 0x000003aa,0x000003ae,0x0004003d,0x00000006,0x000003af,0x00000399,0x0004003d,0x0000002f, + 0x000003b0,0x000000e3,0x0005008e,0x0000002f,0x000003b1,0x000003b0,0x000003af,0x0004003d, + 0x00000006,0x000003b2,0x0000039f,0x0004003d,0x0000002f,0x000003b3,0x000000e4,0x0005008e, + 0x0000002f,0x000003b4,0x000003b3,0x000003b2,0x00050081,0x0000002f,0x000003b5,0x000003b1, + 0x000003b4,0x0004003d,0x00000006,0x000003b6,0x000003a5,0x0004003d,0x0000002f,0x000003b7, + 0x000000e5,0x0005008e,0x0000002f,0x000003b8,0x000003b7,0x000003b6,0x00050081,0x0000002f, + 0x000003b9,0x000003b5,0x000003b8,0x0004003d,0x00000006,0x000003ba,0x000003aa,0x0004003d, + 0x0000002f,0x000003bb,0x000000e6,0x0005008e,0x0000002f,0x000003bc,0x000003bb,0x000003ba, + 0x00050081,0x0000002f,0x000003bd,0x000003b9,0x000003bc,0x0004003d,0x00000006,0x000003be, + 0x00000399,0x0004003d,0x00000006,0x000003bf,0x0000039f,0x00050081,0x00000006,0x000003c0, + 0x000003be,0x000003bf,0x0004003d,0x00000006,0x000003c1,0x000003a5,0x00050081,0x00000006, + 0x000003c2,0x000003c0,0x000003c1,0x0004003d,0x00000006,0x000003c3,0x000003aa,0x00050081, + 0x00000006,0x000003c4,0x000003c2,0x000003c3,0x00070050,0x0000002f,0x000003c5,0x000003c4, + 0x000003c4,0x000003c4,0x000003c4,0x00050088,0x0000002f,0x000003c6,0x000003bd,0x000003c5, + 0x000200fe,0x000003c6,0x00010038,0x00050036,0x0000002f,0x000000ef,0x00000000,0x000000ec, + 0x00030037,0x000000eb,0x000000ed,0x00030037,0x0000001b,0x000000ee,0x000200f8,0x000000f0, + 0x0004003b,0x00000030,0x000003c9,0x00000007,0x0004003b,0x00000030,0x000003ca,0x00000007, + 0x0004003b,0x00000030,0x000003cd,0x00000007,0x0004003b,0x00000030,0x000003d0,0x00000007, + 0x0004003b,0x00000030,0x000003d3,0x00000007,0x0004003b,0x00000007,0x000003d6,0x00000007, + 0x0004003b,0x00000030,0x000003da,0x00000007,0x0004003b,0x00000030,0x000003dd,0x00000007, + 0x0004003b,0x00000030,0x000003e0,0x00000007,0x0004003b,0x00000030,0x000003e3,0x00000007, + 0x0004003b,0x00000030,0x000003e6,0x00000007,0x0004003b,0x00000007,0x000003e9,0x00000007, + 0x0004003b,0x00000030,0x000003ed,0x00000007,0x0004003b,0x00000030,0x000003f1,0x00000007, + 0x0004003b,0x00000030,0x000003f4,0x00000007,0x0004003b,0x00000030,0x000003f7,0x00000007, + 0x0004003b,0x00000030,0x000003fa,0x00000007,0x0004003b,0x00000007,0x000003fd,0x00000007, + 0x0004003b,0x00000030,0x00000401,0x00000007,0x0004003b,0x00000030,0x00000404,0x00000007, + 0x0004003b,0x00000030,0x00000407,0x00000007,0x0004003b,0x00000030,0x0000040a,0x00000007, + 0x0004003b,0x00000030,0x0000040d,0x00000007,0x0004003b,0x00000007,0x00000410,0x00000007, + 0x0004003b,0x00000030,0x00000414,0x00000007,0x0004003b,0x00000030,0x00000415,0x00000007, + 0x0004003b,0x00000030,0x00000417,0x00000007,0x0004003b,0x00000030,0x00000419,0x00000007, + 0x0004003b,0x00000030,0x0000041b,0x00000007,0x0004003b,0x00000007,0x0000041d,0x00000007, + 0x0004003b,0x00000423,0x00000424,0x00000007,0x0004003b,0x00000030,0x0000042e,0x00000007, + 0x0004003b,0x00000030,0x00000431,0x00000007,0x0004003b,0x00000037,0x00000434,0x00000007, + 0x0004003b,0x00000030,0x0000043d,0x00000007,0x0004003b,0x00000030,0x0000043f,0x00000007, + 0x0004003b,0x00000030,0x00000444,0x00000007,0x0004003b,0x00000030,0x00000446,0x00000007, + 0x00050041,0x00000030,0x000003cb,0x000000ed,0x00000197,0x0004003d,0x0000002f,0x000003cc, + 0x000003cb,0x0003003e,0x000003ca,0x000003cc,0x00050041,0x00000030,0x000003ce,0x000000ed, + 0x0000023e,0x0004003d,0x0000002f,0x000003cf,0x000003ce,0x0003003e,0x000003cd,0x000003cf, + 0x00050041,0x00000030,0x000003d1,0x000000ed,0x000001a2,0x0004003d,0x0000002f,0x000003d2, + 0x000003d1,0x0003003e,0x000003d0,0x000003d2,0x00050041,0x00000030,0x000003d4,0x000000ed, + 0x000001a7,0x0004003d,0x0000002f,0x000003d5,0x000003d4,0x0003003e,0x000003d3,0x000003d5, + 0x00050041,0x00000007,0x000003d7,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x000003d8, + 0x000003d7,0x0003003e,0x000003d6,0x000003d8,0x00090039,0x0000002f,0x000003d9,0x000000e8, + 0x000003ca,0x000003cd,0x000003d0,0x000003d3,0x000003d6,0x0003003e,0x000003c9,0x000003d9, + 0x00050041,0x00000030,0x000003de,0x000000ed,0x0000019d,0x0004003d,0x0000002f,0x000003df, + 0x000003de,0x0003003e,0x000003dd,0x000003df,0x00050041,0x00000030,0x000003e1,0x000000ed, + 0x000003db,0x0004003d,0x0000002f,0x000003e2,0x000003e1,0x0003003e,0x000003e0,0x000003e2, + 0x00050041,0x00000030,0x000003e4,0x000000ed,0x000003dc,0x0004003d,0x0000002f,0x000003e5, + 0x000003e4,0x0003003e,0x000003e3,0x000003e5,0x00050041,0x00000030,0x000003e7,0x000000ed, + 0x000001ac,0x0004003d,0x0000002f,0x000003e8,0x000003e7,0x0003003e,0x000003e6,0x000003e8, + 0x00050041,0x00000007,0x000003ea,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x000003eb, + 0x000003ea,0x0003003e,0x000003e9,0x000003eb,0x00090039,0x0000002f,0x000003ec,0x000000e8, + 0x000003dd,0x000003e0,0x000003e3,0x000003e6,0x000003e9,0x0003003e,0x000003da,0x000003ec, + 0x00050041,0x00000030,0x000003f2,0x000000ed,0x000003ee,0x0004003d,0x0000002f,0x000003f3, + 0x000003f2,0x0003003e,0x000003f1,0x000003f3,0x00050041,0x00000030,0x000003f5,0x000000ed, + 0x000003ef,0x0004003d,0x0000002f,0x000003f6,0x000003f5,0x0003003e,0x000003f4,0x000003f6, + 0x00050041,0x00000030,0x000003f8,0x000000ed,0x000001b2,0x0004003d,0x0000002f,0x000003f9, + 0x000003f8,0x0003003e,0x000003f7,0x000003f9,0x00050041,0x00000030,0x000003fb,0x000000ed, + 0x000003f0,0x0004003d,0x0000002f,0x000003fc,0x000003fb,0x0003003e,0x000003fa,0x000003fc, + 0x00050041,0x00000007,0x000003fe,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x000003ff, + 0x000003fe,0x0003003e,0x000003fd,0x000003ff,0x00090039,0x0000002f,0x00000400,0x000000e8, + 0x000003f1,0x000003f4,0x000003f7,0x000003fa,0x000003fd,0x0003003e,0x000003ed,0x00000400, + 0x00050041,0x00000030,0x00000405,0x000000ed,0x00000402,0x0004003d,0x0000002f,0x00000406, + 0x00000405,0x0003003e,0x00000404,0x00000406,0x00050041,0x00000030,0x00000408,0x000000ed, + 0x000001b7,0x0004003d,0x0000002f,0x00000409,0x00000408,0x0003003e,0x00000407,0x00000409, + 0x00050041,0x00000030,0x0000040b,0x000000ed,0x00000403,0x0004003d,0x0000002f,0x0000040c, + 0x0000040b,0x0003003e,0x0000040a,0x0000040c,0x00050041,0x00000030,0x0000040e,0x000000ed, + 0x000001bd,0x0004003d,0x0000002f,0x0000040f,0x0000040e,0x0003003e,0x0000040d,0x0000040f, + 0x00050041,0x00000007,0x00000411,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x00000412, + 0x00000411,0x0003003e,0x00000410,0x00000412,0x00090039,0x0000002f,0x00000413,0x000000e8, + 0x00000404,0x00000407,0x0000040a,0x0000040d,0x00000410,0x0003003e,0x00000401,0x00000413, + 0x0004003d,0x0000002f,0x00000416,0x000003c9,0x0003003e,0x00000415,0x00000416,0x0004003d, + 0x0000002f,0x00000418,0x000003da,0x0003003e,0x00000417,0x00000418,0x0004003d,0x0000002f, + 0x0000041a,0x000003ed,0x0003003e,0x00000419,0x0000041a,0x0004003d,0x0000002f,0x0000041c, + 0x00000401,0x0003003e,0x0000041b,0x0000041c,0x00050041,0x00000007,0x0000041e,0x000000ee, + 0x00000293,0x0004003d,0x00000006,0x0000041f,0x0000041e,0x0003003e,0x0000041d,0x0000041f, + 0x00090039,0x0000002f,0x00000420,0x000000e8,0x00000415,0x00000417,0x00000419,0x0000041b, + 0x0000041d,0x0003003e,0x00000414,0x00000420,0x00050041,0x00000030,0x00000425,0x000000ed, + 0x000003db,0x0004003d,0x0000002f,0x00000426,0x00000425,0x00050041,0x00000030,0x00000427, + 0x000000ed,0x000003dc,0x0004003d,0x0000002f,0x00000428,0x00000427,0x00050041,0x00000030, + 0x00000429,0x000000ed,0x000003ef,0x0004003d,0x0000002f,0x0000042a,0x00000429,0x00050041, + 0x00000030,0x0000042b,0x000000ed,0x000001b2,0x0004003d,0x0000002f,0x0000042c,0x0000042b, + 0x00070050,0x00000422,0x0000042d,0x00000426,0x00000428,0x0000042a,0x0000042c,0x0003003e, + 0x00000424,0x0000042d,0x00050041,0x00000030,0x0000042f,0x00000424,0x00000197,0x0004003d, + 0x0000002f,0x00000430,0x0000042f,0x0003003e,0x0000042e,0x00000430,0x00050041,0x00000030, + 0x00000432,0x00000424,0x00000197,0x0004003d,0x0000002f,0x00000433,0x00000432,0x0003003e, + 0x00000431,0x00000433,0x0003003e,0x00000434,0x0000023e,0x000200f9,0x00000435,0x000200f8, + 0x00000435,0x000400f6,0x00000437,0x00000438,0x00000000,0x000200f9,0x00000439,0x000200f8, + 0x00000439,0x0004003d,0x00000036,0x0000043a,0x00000434,0x000500b1,0x000000a7,0x0000043b, + 0x0000043a,0x0000019d,0x000400fa,0x0000043b,0x00000436,0x00000437,0x000200f8,0x00000436, + 0x0004003d,0x00000036,0x0000043c,0x00000434,0x0004003d,0x0000002f,0x0000043e,0x0000042e, + 0x0003003e,0x0000043d,0x0000043e,0x00050041,0x00000030,0x00000440,0x00000424,0x0000043c, + 0x0004003d,0x0000002f,0x00000441,0x00000440,0x0003003e,0x0000043f,0x00000441,0x00060039, + 0x0000002f,0x00000442,0x00000034,0x0000043d,0x0000043f,0x0003003e,0x0000042e,0x00000442, + 0x0004003d,0x00000036,0x00000443,0x00000434,0x0004003d,0x0000002f,0x00000445,0x00000431, + 0x0003003e,0x00000444,0x00000445,0x00050041,0x00000030,0x00000447,0x00000424,0x00000443, + 0x0004003d,0x0000002f,0x00000448,0x00000447,0x0003003e,0x00000446,0x00000448,0x00060039, + 0x0000002f,0x00000449,0x0000004b,0x00000444,0x00000446,0x0003003e,0x00000431,0x00000449, + 0x000200f9,0x00000438,0x000200f8,0x00000438,0x0004003d,0x00000036,0x0000044a,0x00000434, + 0x00050080,0x00000036,0x0000044b,0x0000044a,0x0000023e,0x0003003e,0x00000434,0x0000044b, + 0x000200f9,0x00000435,0x000200f8,0x00000437,0x0004003d,0x0000002f,0x0000044c,0x00000414, + 0x0004003d,0x0000002f,0x0000044d,0x0000042e,0x0004003d,0x0000002f,0x0000044e,0x00000431, + 0x0008000c,0x0000002f,0x0000044f,0x00000001,0x0000002b,0x0000044c,0x0000044d,0x0000044e, + 0x0003003e,0x00000414,0x0000044f,0x0004003d,0x0000002f,0x00000450,0x00000414,0x000200fe, + 0x00000450,0x00010038,0x00050036,0x00000055,0x000000f4,0x00000000,0x000000c5,0x00030037, + 0x0000006d,0x000000f1,0x00030037,0x0000006d,0x000000f2,0x00030037,0x0000006d,0x000000f3, + 0x000200f8,0x000000f5,0x0004003b,0x0000006d,0x00000453,0x00000007,0x0004003b,0x00000037, + 0x0000045a,0x00000007,0x0004003b,0x00000037,0x0000045d,0x00000007,0x0004003b,0x00000037, + 0x0000045f,0x00000007,0x0004003b,0x00000037,0x00000460,0x00000007,0x0004003b,0x00000037, + 0x00000466,0x00000007,0x0004003b,0x00000037,0x00000469,0x00000007,0x0004003b,0x00000037, + 0x0000046b,0x00000007,0x0004003b,0x00000037,0x0000046c,0x00000007,0x0004003d,0x00000055, + 0x00000454,0x000000f1,0x0004003d,0x00000055,0x00000455,0x000000f2,0x00050080,0x00000055, + 0x00000456,0x00000454,0x00000455,0x0003003e,0x00000453,0x00000456,0x00050041,0x00000037, + 0x00000457,0x000000f3,0x000001fa,0x0004003d,0x00000036,0x00000458,0x00000457,0x00050082, + 0x00000036,0x00000459,0x00000458,0x000001a2,0x00050041,0x00000037,0x0000045b,0x00000453, + 0x000001fa,0x0004003d,0x00000036,0x0000045c,0x0000045b,0x0003003e,0x0000045a,0x0000045c, + 0x0003003e,0x0000045d,0x00000459,0x00060039,0x00000036,0x0000045e,0x0000003b,0x0000045a, + 0x0000045d,0x0003003e,0x0000045f,0x0000023e,0x0003003e,0x00000460,0x0000045e,0x00060039, + 0x00000036,0x00000461,0x0000004f,0x0000045f,0x00000460,0x00050041,0x00000037,0x00000462, + 0x00000453,0x000001fa,0x0003003e,0x00000462,0x00000461,0x00050041,0x00000037,0x00000463, + 0x000000f3,0x00000293,0x0004003d,0x00000036,0x00000464,0x00000463,0x00050082,0x00000036, + 0x00000465,0x00000464,0x000001a2,0x00050041,0x00000037,0x00000467,0x00000453,0x00000293, + 0x0004003d,0x00000036,0x00000468,0x00000467,0x0003003e,0x00000466,0x00000468,0x0003003e, + 0x00000469,0x00000465,0x00060039,0x00000036,0x0000046a,0x0000003b,0x00000466,0x00000469, + 0x0003003e,0x0000046b,0x0000023e,0x0003003e,0x0000046c,0x0000046a,0x00060039,0x00000036, + 0x0000046d,0x0000004f,0x0000046b,0x0000046c,0x00050041,0x00000037,0x0000046e,0x00000453, + 0x00000293,0x0003003e,0x0000046e,0x0000046d,0x0004003d,0x00000055,0x0000046f,0x00000453, + 0x000200fe,0x0000046f,0x00010038,0x00050036,0x00000002,0x000000f9,0x00000000,0x000000f6, + 0x00030037,0x000000a0,0x000000f7,0x00030037,0x0000000f,0x000000f8,0x000200f8,0x000000fa, + 0x0004003d,0x0000000e,0x00000472,0x000000f8,0x00050041,0x0000000f,0x00000473,0x000000f7, + 0x000001a2,0x0004003d,0x0000000e,0x00000474,0x00000473,0x00050041,0x0000000f,0x00000475, + 0x000000f7,0x000001a7,0x0004003d,0x0000000e,0x00000476,0x00000475,0x0008000c,0x0000000e, + 0x00000477,0x00000001,0x0000002b,0x00000472,0x00000474,0x00000476,0x0003003e,0x000000f8, + 0x00000477,0x000100fd,0x00010038,0x00050036,0x00000006,0x000000fe,0x00000000,0x000000fb, + 0x00030037,0x0000001b,0x000000fc,0x00030037,0x00000007,0x000000fd,0x000200f8,0x000000ff, + 0x0004003b,0x0000001b,0x00000478,0x00000007,0x0004003b,0x00000007,0x0000047d,0x00000007, + 0x0004003b,0x00000007,0x00000481,0x00000007,0x0004003d,0x0000001a,0x00000479,0x000000fc, + 0x0004003d,0x00000006,0x0000047a,0x000000fd,0x00050050,0x0000001a,0x0000047b,0x0000047a, + 0x0000047a,0x00050085,0x0000001a,0x0000047c,0x00000479,0x0000047b,0x0003003e,0x00000478, + 0x0000047c,0x0004003d,0x0000001a,0x0000047e,0x00000478,0x0004003d,0x0000001a,0x0000047f, + 0x00000478,0x00050094,0x00000006,0x00000480,0x0000047e,0x0000047f,0x0003003e,0x00000481, + 0x00000480,0x00050039,0x00000006,0x00000482,0x000000e0,0x00000481,0x0003003e,0x0000047d, + 0x00000482,0x0004003d,0x00000006,0x00000483,0x0000047d,0x000200fe,0x00000483,0x00010038, + 0x00050036,0x00000006,0x00000106,0x00000000,0x00000103,0x00030037,0x00000100,0x00000104, + 0x00030037,0x00000102,0x00000105,0x000200f8,0x00000107,0x0004003b,0x00000007,0x00000486, + 0x00000007,0x0004003b,0x00000007,0x0000048f,0x00000007,0x0004003b,0x00000007,0x00000490, + 0x00000007,0x00040039,0x0000001a,0x00000487,0x00000062,0x00050050,0x0000001a,0x00000488, + 0x00000155,0x00000155,0x00050088,0x0000001a,0x00000489,0x00000488,0x00000487,0x00050050, + 0x0000001a,0x0000048a,0x00000155,0x00000155,0x00050083,0x0000001a,0x0000048b,0x00000489, + 0x0000048a,0x00050051,0x00000006,0x0000048c,0x0000048b,0x00000000,0x00050081,0x00000006, + 0x0000048d,0x00000155,0x0000048c,0x0003003e,0x00000486,0x0000048d,0x0003003e,0x0000048f, + 0x0000048e,0x0004003d,0x00000006,0x00000491,0x00000486,0x0003003e,0x00000490,0x00000491, + 0x00060039,0x00000006,0x00000492,0x00000023,0x0000048f,0x00000490,0x000200fe,0x00000492, + 0x00010038,0x00050036,0x0000000e,0x00000109,0x00000000,0x0000006e,0x00030037,0x0000006d, + 0x00000108,0x000200f8,0x0000010a,0x0004003b,0x0000000f,0x00000495,0x00000007,0x0004003b, + 0x0000006d,0x00000497,0x00000007,0x0004003b,0x0000000f,0x0000049a,0x00000007,0x0004003b, + 0x0000000f,0x0000049b,0x00000007,0x0004003b,0x0000000f,0x0000049f,0x00000007,0x0004003b, + 0x0000000f,0x000004a0,0x00000007,0x0004003d,0x00000055,0x00000498,0x00000108,0x0003003e, + 0x00000497,0x00000498,0x00050039,0x0000000e,0x00000499,0x00000070,0x00000497,0x0003003e, + 0x0000049a,0x00000496,0x0003003e,0x0000049b,0x00000499,0x00060039,0x0000000e,0x0000049c, + 0x00000047,0x0000049a,0x0000049b,0x00040039,0x00000006,0x0000049d,0x00000096,0x0005008e, + 0x0000000e,0x0000049e,0x0000049c,0x0000049d,0x0003003e,0x00000495,0x0000049e,0x0004003d, + 0x0000000e,0x000004a1,0x00000495,0x0003003e,0x000004a0,0x000004a1,0x00050039,0x0000000e, + 0x000004a2,0x000000b9,0x000004a0,0x0003003e,0x0000049f,0x000004a2,0x0004003d,0x0000000e, + 0x000004a3,0x0000049f,0x000200fe,0x000004a3,0x00010038,0x00050036,0x00000002,0x0000010e, + 0x00000000,0x0000010b,0x00030037,0x00000100,0x0000010c,0x00030037,0x00000102,0x0000010d, + 0x000200f8,0x0000010f,0x0004003b,0x0000001b,0x000004a6,0x00000007,0x0004003b,0x0000001b, + 0x000004aa,0x00000007,0x0004003b,0x0000006d,0x000004ae,0x00000007,0x0004003b,0x0000001b, + 0x000004b2,0x00000007,0x0004003b,0x0000001b,0x000004b8,0x00000007,0x0004003b,0x0000006d, + 0x000004bc,0x00000007,0x0004003b,0x000000a8,0x000004cd,0x00000007,0x0004003b,0x000000a8, + 0x000004d3,0x00000007,0x0004003b,0x0000001b,0x000004d9,0x00000007,0x0004003b,0x000000a8, + 0x000004dc,0x00000007,0x0004003b,0x00000037,0x000004df,0x00000007,0x0004003b,0x00000037, + 0x000004e0,0x00000007,0x0004003b,0x00000037,0x000004e8,0x00000007,0x0004003b,0x0000006d, + 0x000004f0,0x00000007,0x0004003b,0x00000037,0x000004f2,0x00000007,0x0004003b,0x00000037, + 0x000004fb,0x00000007,0x0004003b,0x0000006d,0x00000504,0x00000007,0x0004003b,0x0000006d, + 0x0000050a,0x00000007,0x0004003b,0x0000006d,0x0000050c,0x00000007,0x0004003b,0x0000006d, + 0x0000050e,0x00000007,0x0004003b,0x0000006d,0x0000050f,0x00000007,0x0004003b,0x00000513, + 0x00000514,0x00000007,0x0004003b,0x0000006d,0x00000516,0x00000007,0x0004003b,0x0000000f, + 0x0000052c,0x00000007,0x0004003b,0x0000000f,0x00000530,0x00000007,0x0004003b,0x0000000f, + 0x00000532,0x00000007,0x0004003b,0x00000007,0x00000537,0x00000007,0x0004003b,0x00000102, + 0x00000538,0x00000007,0x0004003b,0x00000007,0x0000053c,0x00000007,0x0004003b,0x00000007, + 0x00000541,0x00000007,0x0004003b,0x00000007,0x00000542,0x00000007,0x0004003b,0x00000007, + 0x00000544,0x00000007,0x0004003b,0x00000007,0x0000054e,0x00000007,0x0004003b,0x00000007, + 0x00000550,0x00000007,0x0004003b,0x00000007,0x00000551,0x00000007,0x0004003b,0x00000007, + 0x00000553,0x00000007,0x0004003b,0x00000007,0x00000554,0x00000007,0x0004003b,0x00000007, + 0x00000556,0x00000007,0x0004003b,0x00000007,0x00000557,0x00000007,0x0004003b,0x00000007, + 0x00000559,0x00000007,0x0004003b,0x00000007,0x0000055b,0x00000007,0x0004003b,0x00000037, + 0x0000055e,0x00000007,0x0004003b,0x00000037,0x00000566,0x00000007,0x0004003b,0x0000006d, + 0x0000056e,0x00000007,0x0004003b,0x00000037,0x00000570,0x00000007,0x0004003b,0x00000037, + 0x00000579,0x00000007,0x0004003b,0x0000001b,0x00000582,0x00000007,0x0004003b,0x0000001b, + 0x00000587,0x00000007,0x0004003b,0x0000006d,0x0000058b,0x00000007,0x0004003b,0x00000007, + 0x00000591,0x00000007,0x0004003b,0x0000006d,0x00000594,0x00000007,0x0004003b,0x0000006d, + 0x00000595,0x00000007,0x0004003b,0x00000007,0x0000059c,0x00000007,0x0004003b,0x0000001b, + 0x0000059e,0x00000007,0x0004003b,0x00000007,0x000005a0,0x00000007,0x0004003b,0x00000007, + 0x000005b2,0x00000007,0x0004003b,0x00000007,0x000005b6,0x00000007,0x0004003b,0x000000a8, + 0x000005bd,0x00000007,0x0004003b,0x000000a8,0x000005c7,0x00000007,0x0004003b,0x000000a0, + 0x000005c9,0x00000007,0x0004003b,0x000000a0,0x000005d5,0x00000007,0x0004003b,0x000000a0, + 0x000005f4,0x00000007,0x0004003b,0x0000000f,0x000005f7,0x00000007,0x0004003b,0x0000000f, + 0x00000600,0x00000007,0x0004003b,0x0000000f,0x00000604,0x00000007,0x0004003b,0x0000000f, + 0x00000606,0x00000007,0x00050051,0x00000055,0x000004a7,0x0000010c,0x00000000,0x0004006f, + 0x0000001a,0x000004a8,0x000004a7,0x00050081,0x0000001a,0x000004a9,0x000004a8,0x00000338, + 0x0003003e,0x000004a6,0x000004a9,0x0004003d,0x0000001a,0x000004ab,0x000004a6,0x00040039, + 0x0000001a,0x000004ac,0x00000062,0x00050085,0x0000001a,0x000004ad,0x000004ab,0x000004ac, + 0x0003003e,0x000004aa,0x000004ad,0x0004003d,0x0000001a,0x000004af,0x000004aa,0x0006000c, + 0x0000001a,0x000004b0,0x00000001,0x00000008,0x000004af,0x0004006e,0x00000055,0x000004b1, + 0x000004b0,0x0003003e,0x000004ae,0x000004b1,0x0004003d,0x00000055,0x000004b3,0x000004ae, + 0x0004006f,0x0000001a,0x000004b4,0x000004b3,0x00050081,0x0000001a,0x000004b5,0x000004b4, + 0x00000338,0x00040039,0x0000001a,0x000004b6,0x00000060,0x00050083,0x0000001a,0x000004b7, + 0x000004b5,0x000004b6,0x0003003e,0x000004b2,0x000004b7,0x0004003d,0x0000001a,0x000004b9, + 0x000004b2,0x0004003d,0x0000001a,0x000004ba,0x000004aa,0x00050083,0x0000001a,0x000004bb, + 0x000004b9,0x000004ba,0x0003003e,0x000004b8,0x000004bb,0x00050041,0x00000007,0x000004bd, + 0x000004b2,0x000001fa,0x0004003d,0x00000006,0x000004be,0x000004bd,0x00050041,0x00000007, + 0x000004bf,0x000004aa,0x000001fa,0x0004003d,0x00000006,0x000004c0,0x000004bf,0x000500ba, + 0x000000a7,0x000004c1,0x000004be,0x000004c0,0x000600a9,0x00000036,0x000004c4,0x000004c1, + 0x000004c2,0x000004c3,0x00050041,0x00000037,0x000004c5,0x000004bc,0x000001fa,0x0003003e, + 0x000004c5,0x000004c4,0x00050041,0x00000007,0x000004c6,0x000004b2,0x00000293,0x0004003d, + 0x00000006,0x000004c7,0x000004c6,0x00050041,0x00000007,0x000004c8,0x000004aa,0x00000293, + 0x0004003d,0x00000006,0x000004c9,0x000004c8,0x000500ba,0x000000a7,0x000004ca,0x000004c7, + 0x000004c9,0x000600a9,0x00000036,0x000004cb,0x000004ca,0x000004c2,0x000004c3,0x00050041, + 0x00000037,0x000004cc,0x000004bc,0x00000293,0x0003003e,0x000004cc,0x000004cb,0x00050041, + 0x00000007,0x000004ce,0x000004b2,0x00000293,0x0004003d,0x00000006,0x000004cf,0x000004ce, + 0x00050041,0x00000007,0x000004d0,0x000004aa,0x00000293,0x0004003d,0x00000006,0x000004d1, + 0x000004d0,0x000500ba,0x000000a7,0x000004d2,0x000004cf,0x000004d1,0x0003003e,0x000004cd, + 0x000004d2,0x00050041,0x00000007,0x000004d4,0x000004b2,0x000001fa,0x0004003d,0x00000006, + 0x000004d5,0x000004d4,0x00050041,0x00000007,0x000004d6,0x000004aa,0x000001fa,0x0004003d, + 0x00000006,0x000004d7,0x000004d6,0x000500ba,0x000000a7,0x000004d8,0x000004d5,0x000004d7, + 0x0003003e,0x000004d3,0x000004d8,0x0004003d,0x00000055,0x000004da,0x000004bc,0x0004006f, + 0x0000001a,0x000004db,0x000004da,0x0003003e,0x000004d9,0x000004db,0x00050051,0x00000006, + 0x000004dd,0x0000010c,0x0000000a,0x000500b4,0x000000a7,0x000004de,0x000004dd,0x00000154, + 0x0003003e,0x000004dc,0x000004de,0x0003003e,0x000004df,0x00000197,0x0003003e,0x000004e0, + 0x00000197,0x000200f9,0x000004e1,0x000200f8,0x000004e1,0x000400f6,0x000004e3,0x000004e4, + 0x00000000,0x000200f9,0x000004e5,0x000200f8,0x000004e5,0x0004003d,0x00000036,0x000004e6, + 0x000004e0,0x000500b1,0x000000a7,0x000004e7,0x000004e6,0x000001a7,0x000400fa,0x000004e7, + 0x000004e2,0x000004e3,0x000200f8,0x000004e2,0x0003003e,0x000004e8,0x00000197,0x000200f9, + 0x000004e9,0x000200f8,0x000004e9,0x000400f6,0x000004eb,0x000004ec,0x00000000,0x000200f9, + 0x000004ed,0x000200f8,0x000004ed,0x0004003d,0x00000036,0x000004ee,0x000004e8,0x000500b1, + 0x000000a7,0x000004ef,0x000004ee,0x000001a7,0x000400fa,0x000004ef,0x000004ea,0x000004eb, + 0x000200f8,0x000004ea,0x0004003d,0x000000a7,0x000004f1,0x000004d3,0x000300f7,0x000004f4, + 0x00000000,0x000400fa,0x000004f1,0x000004f3,0x000004f7,0x000200f8,0x000004f3,0x0004003d, + 0x00000036,0x000004f5,0x000004e8,0x00050082,0x00000036,0x000004f6,0x000001a7,0x000004f5, + 0x0003003e,0x000004f2,0x000004f6,0x000200f9,0x000004f4,0x000200f8,0x000004f7,0x0004003d, + 0x00000036,0x000004f8,0x000004e8,0x0003003e,0x000004f2,0x000004f8,0x000200f9,0x000004f4, + 0x000200f8,0x000004f4,0x0004003d,0x00000036,0x000004f9,0x000004f2,0x0004003d,0x000000a7, + 0x000004fa,0x000004cd,0x000300f7,0x000004fd,0x00000000,0x000400fa,0x000004fa,0x000004fc, + 0x00000500,0x000200f8,0x000004fc,0x0004003d,0x00000036,0x000004fe,0x000004e0,0x00050082, + 0x00000036,0x000004ff,0x000001a7,0x000004fe,0x0003003e,0x000004fb,0x000004ff,0x000200f9, + 0x000004fd,0x000200f8,0x00000500,0x0004003d,0x00000036,0x00000501,0x000004e0,0x0003003e, + 0x000004fb,0x00000501,0x000200f9,0x000004fd,0x000200f8,0x000004fd,0x0004003d,0x00000036, + 0x00000502,0x000004fb,0x00050050,0x00000055,0x00000503,0x000004f9,0x00000502,0x0003003e, + 0x000004f0,0x00000503,0x0004003d,0x00000055,0x00000505,0x000004ae,0x0004003d,0x00000055, + 0x00000506,0x000004bc,0x00050080,0x00000055,0x00000507,0x00000505,0x00000506,0x0004003d, + 0x00000055,0x00000508,0x000004f0,0x00050080,0x00000055,0x00000509,0x00000507,0x00000508, + 0x0003003e,0x00000504,0x00000509,0x00040039,0x00000055,0x0000050b,0x00000057,0x0004003d, + 0x00000055,0x0000050d,0x00000504,0x0003003e,0x0000050c,0x0000050d,0x0003003e,0x0000050e, + 0x0000021e,0x0003003e,0x0000050f,0x0000050b,0x00070039,0x00000055,0x00000510,0x000000c9, + 0x0000050c,0x0000050e,0x0000050f,0x0003003e,0x0000050a,0x00000510,0x0004003d,0x00000036, + 0x00000515,0x000004df,0x0004003d,0x00000055,0x00000517,0x0000050a,0x0003003e,0x00000516, + 0x00000517,0x00050039,0x0000000e,0x00000518,0x00000109,0x00000516,0x00050041,0x0000000f, + 0x00000519,0x00000514,0x00000515,0x0003003e,0x00000519,0x00000518,0x0004003d,0x00000036, + 0x0000051a,0x000004df,0x00050080,0x00000036,0x0000051b,0x0000051a,0x0000023e,0x0003003e, + 0x000004df,0x0000051b,0x000200f9,0x000004ec,0x000200f8,0x000004ec,0x0004003d,0x00000036, + 0x0000051c,0x000004e8,0x00050080,0x00000036,0x0000051d,0x0000051c,0x0000023e,0x0003003e, + 0x000004e8,0x0000051d,0x000200f9,0x000004e9,0x000200f8,0x000004eb,0x000200f9,0x000004e4, + 0x000200f8,0x000004e4,0x0004003d,0x00000036,0x0000051e,0x000004e0,0x00050080,0x00000036, + 0x0000051f,0x0000051e,0x0000023e,0x0003003e,0x000004e0,0x0000051f,0x000200f9,0x000004e1, + 0x000200f8,0x000004e3,0x0004003d,0x000000a7,0x00000520,0x000004dc,0x000300f7,0x00000522, + 0x00000000,0x000400fa,0x00000520,0x00000521,0x00000522,0x000200f8,0x00000521,0x0003003e, + 0x000004df,0x00000197,0x000200f9,0x00000523,0x000200f8,0x00000523,0x000400f6,0x00000525, + 0x00000526,0x00000000,0x000200f9,0x00000527,0x000200f8,0x00000527,0x0004003d,0x00000036, + 0x00000528,0x000004df,0x000500b1,0x000000a7,0x00000529,0x00000528,0x000003ef,0x000400fa, + 0x00000529,0x00000524,0x00000525,0x000200f8,0x00000524,0x0004003d,0x00000036,0x0000052a, + 0x000004df,0x0004003d,0x00000036,0x0000052b,0x000004df,0x00050041,0x0000000f,0x0000052d, + 0x00000514,0x0000052b,0x0004003d,0x0000000e,0x0000052e,0x0000052d,0x0003003e,0x0000052c, + 0x0000052e,0x00050039,0x0000000e,0x0000052f,0x000000b6,0x0000052c,0x0003003e,0x00000530, + 0x0000052f,0x00050039,0x0000000e,0x00000531,0x000000bc,0x00000530,0x0003003e,0x00000532, + 0x00000531,0x00050039,0x0000000e,0x00000533,0x000000b9,0x00000532,0x00050041,0x0000000f, + 0x00000534,0x00000514,0x0000052a,0x0003003e,0x00000534,0x00000533,0x000200f9,0x00000526, + 0x000200f8,0x00000526,0x0004003d,0x00000036,0x00000535,0x000004df,0x00050080,0x00000036, + 0x00000536,0x00000535,0x0000023e,0x0003003e,0x000004df,0x00000536,0x000200f9,0x00000523, + 0x000200f8,0x00000525,0x000200f9,0x00000522,0x000200f8,0x00000522,0x0004003d,0x00000101, + 0x00000539,0x0000010d,0x0003003e,0x00000538,0x00000539,0x00060039,0x00000006,0x0000053a, + 0x00000106,0x0000010c,0x00000538,0x0004003d,0x00000101,0x0000053b,0x00000538,0x0003003e, + 0x0000010d,0x0000053b,0x0003003e,0x00000537,0x0000053a,0x0004003d,0x00000006,0x0000053d, + 0x00000537,0x00050081,0x00000006,0x0000053e,0x00000155,0x0000053d,0x00050085,0x00000006, + 0x00000540,0x0000053e,0x0000053f,0x0003003e,0x00000541,0x00000155,0x0003003e,0x00000542, + 0x00000540,0x00060039,0x00000006,0x00000543,0x0000003f,0x00000541,0x00000542,0x0003003e, + 0x0000053c,0x00000543,0x00050051,0x00000006,0x00000545,0x0000010c,0x00000007,0x00050085, + 0x00000006,0x00000546,0x00000545,0x000002b1,0x00050083,0x00000006,0x00000547,0x00000155, + 0x00000546,0x00050051,0x00000006,0x00000548,0x0000010c,0x00000009,0x00050083,0x00000006, + 0x00000549,0x00000155,0x00000548,0x00050041,0x00000007,0x0000054a,0x0000010d,0x0000019d, + 0x0004003d,0x00000006,0x0000054b,0x0000054a,0x00050085,0x00000006,0x0000054d,0x0000054b, + 0x0000054c,0x0003003e,0x0000054e,0x0000054d,0x00050039,0x00000006,0x0000054f,0x00000018, + 0x0000054e,0x0003003e,0x00000550,0x00000549,0x0003003e,0x00000551,0x0000054f,0x00060039, + 0x00000006,0x00000552,0x00000023,0x00000550,0x00000551,0x0003003e,0x00000553,0x00000547, + 0x0003003e,0x00000554,0x00000552,0x00060039,0x00000006,0x00000555,0x00000023,0x00000553, + 0x00000554,0x0003003e,0x00000544,0x00000555,0x0004003d,0x00000006,0x00000558,0x0000053c, + 0x0003003e,0x00000557,0x00000558,0x0004003d,0x00000006,0x0000055a,0x00000537,0x0003003e, + 0x00000559,0x0000055a,0x0004003d,0x00000006,0x0000055c,0x00000544,0x0003003e,0x0000055b, + 0x0000055c,0x00070039,0x00000006,0x0000055d,0x0000000c,0x00000557,0x00000559,0x0000055b, + 0x0003003e,0x00000556,0x0000055d,0x0003003e,0x000004df,0x00000197,0x0003003e,0x0000055e, + 0x00000197,0x000200f9,0x0000055f,0x000200f8,0x0000055f,0x000400f6,0x00000561,0x00000562, + 0x00000000,0x000200f9,0x00000563,0x000200f8,0x00000563,0x0004003d,0x00000036,0x00000564, + 0x0000055e,0x000500b1,0x000000a7,0x00000565,0x00000564,0x000001a7,0x000400fa,0x00000565, + 0x00000560,0x00000561,0x000200f8,0x00000560,0x0003003e,0x00000566,0x00000197,0x000200f9, + 0x00000567,0x000200f8,0x00000567,0x000400f6,0x00000569,0x0000056a,0x00000000,0x000200f9, + 0x0000056b,0x000200f8,0x0000056b,0x0004003d,0x00000036,0x0000056c,0x00000566,0x000500b1, + 0x000000a7,0x0000056d,0x0000056c,0x000001a7,0x000400fa,0x0000056d,0x00000568,0x00000569, + 0x000200f8,0x00000568,0x0004003d,0x000000a7,0x0000056f,0x000004d3,0x000300f7,0x00000572, + 0x00000000,0x000400fa,0x0000056f,0x00000571,0x00000575,0x000200f8,0x00000571,0x0004003d, + 0x00000036,0x00000573,0x00000566,0x00050082,0x00000036,0x00000574,0x000001a7,0x00000573, + 0x0003003e,0x00000570,0x00000574,0x000200f9,0x00000572,0x000200f8,0x00000575,0x0004003d, + 0x00000036,0x00000576,0x00000566,0x0003003e,0x00000570,0x00000576,0x000200f9,0x00000572, + 0x000200f8,0x00000572,0x0004003d,0x00000036,0x00000577,0x00000570,0x0004003d,0x000000a7, + 0x00000578,0x000004cd,0x000300f7,0x0000057b,0x00000000,0x000400fa,0x00000578,0x0000057a, + 0x0000057e,0x000200f8,0x0000057a,0x0004003d,0x00000036,0x0000057c,0x0000055e,0x00050082, + 0x00000036,0x0000057d,0x000001a7,0x0000057c,0x0003003e,0x00000579,0x0000057d,0x000200f9, + 0x0000057b,0x000200f8,0x0000057e,0x0004003d,0x00000036,0x0000057f,0x0000055e,0x0003003e, + 0x00000579,0x0000057f,0x000200f9,0x0000057b,0x000200f8,0x0000057b,0x0004003d,0x00000036, + 0x00000580,0x00000579,0x00050050,0x00000055,0x00000581,0x00000577,0x00000580,0x0003003e, + 0x0000056e,0x00000581,0x0004003d,0x0000001a,0x00000583,0x000004d9,0x0004003d,0x00000055, + 0x00000584,0x0000056e,0x0004006f,0x0000001a,0x00000585,0x00000584,0x00050081,0x0000001a, + 0x00000586,0x00000583,0x00000585,0x0003003e,0x00000582,0x00000586,0x0004003d,0x0000001a, + 0x00000588,0x000004b8,0x0004003d,0x0000001a,0x00000589,0x00000582,0x00050081,0x0000001a, + 0x0000058a,0x00000588,0x00000589,0x0003003e,0x00000587,0x0000058a,0x0004003d,0x00000055, + 0x0000058c,0x000004ae,0x0004003d,0x00000055,0x0000058d,0x000004bc,0x00050080,0x00000055, + 0x0000058e,0x0000058c,0x0000058d,0x0004003d,0x00000055,0x0000058f,0x0000056e,0x00050080, + 0x00000055,0x00000590,0x0000058e,0x0000058f,0x0003003e,0x0000058b,0x00000590,0x0004003d, + 0x00000055,0x00000592,0x0000058b,0x00040039,0x00000055,0x00000593,0x00000057,0x0003003e, + 0x00000594,0x00000592,0x0003003e,0x00000595,0x00000593,0x00060039,0x000000a7,0x00000596, + 0x000000d4,0x00000594,0x00000595,0x000600a9,0x00000006,0x00000597,0x00000596,0x00000155, + 0x00000154,0x0003003e,0x00000591,0x00000597,0x0004003d,0x000000a7,0x00000598,0x000004dc, + 0x000400a8,0x000000a7,0x00000599,0x00000598,0x000300f7,0x0000059b,0x00000000,0x000400fa, + 0x00000599,0x0000059a,0x0000059b,0x000200f8,0x0000059a,0x0004003d,0x00000006,0x0000059d, + 0x00000591,0x0004003d,0x0000001a,0x0000059f,0x00000587,0x0003003e,0x0000059e,0x0000059f, + 0x0004003d,0x00000006,0x000005a1,0x00000556,0x0003003e,0x000005a0,0x000005a1,0x00060039, + 0x00000006,0x000005a2,0x000000fe,0x0000059e,0x000005a0,0x00050085,0x00000006,0x000005a3, + 0x0000059d,0x000005a2,0x0003003e,0x0000059c,0x000005a3,0x0004003d,0x00000036,0x000005a4, + 0x000004df,0x00050041,0x0000000f,0x000005a5,0x00000514,0x000005a4,0x0004003d,0x0000000e, + 0x000005a6,0x000005a5,0x0004003d,0x00000006,0x000005a7,0x0000059c,0x0005008e,0x0000000e, + 0x000005a8,0x000005a6,0x000005a7,0x00050041,0x0000000f,0x000005a9,0x0000010d,0x0000023e, + 0x0004003d,0x0000000e,0x000005aa,0x000005a9,0x00050081,0x0000000e,0x000005ab,0x000005aa, + 0x000005a8,0x00050041,0x0000000f,0x000005ac,0x0000010d,0x0000023e,0x0003003e,0x000005ac, + 0x000005ab,0x0004003d,0x00000006,0x000005ad,0x0000059c,0x00050041,0x00000007,0x000005ae, + 0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005af,0x000005ae,0x00050081,0x00000006, + 0x000005b0,0x000005af,0x000005ad,0x00050041,0x00000007,0x000005b1,0x0000010d,0x000001a2, + 0x0003003e,0x000005b1,0x000005b0,0x000200f9,0x0000059b,0x000200f8,0x0000059b,0x0004003d, + 0x0000001a,0x000005b3,0x00000587,0x0004003d,0x0000001a,0x000005b4,0x00000587,0x00050094, + 0x00000006,0x000005b5,0x000005b3,0x000005b4,0x0003003e,0x000005b2,0x000005b5,0x0004003d, + 0x00000006,0x000005b8,0x000005b2,0x00050085,0x00000006,0x000005b9,0x000005b7,0x000005b8, + 0x0006000c,0x00000006,0x000005ba,0x00000001,0x0000001b,0x000005b9,0x0004003d,0x00000006, + 0x000005bb,0x00000591,0x00050085,0x00000006,0x000005bc,0x000005ba,0x000005bb,0x0003003e, + 0x000005b6,0x000005bc,0x0004003d,0x00000036,0x000005be,0x0000055e,0x000500aa,0x000000a7, + 0x000005bf,0x000005be,0x00000197,0x0004003d,0x00000036,0x000005c0,0x00000566,0x000500aa, + 0x000000a7,0x000005c1,0x000005c0,0x00000197,0x000500a7,0x000000a7,0x000005c2,0x000005bf, + 0x000005c1,0x0003003e,0x000005bd,0x000005c2,0x0004003d,0x00000036,0x000005c3,0x000004df, + 0x00050041,0x0000000f,0x000005c4,0x00000514,0x000005c3,0x0004003d,0x0000000e,0x000005c5, + 0x000005c4,0x0004003d,0x00000006,0x000005c6,0x000005b6,0x0004003d,0x000000a7,0x000005c8, + 0x000005bd,0x0003003e,0x000005c7,0x000005c8,0x00050041,0x000000a0,0x000005ca,0x0000010d, + 0x00000197,0x0004003d,0x0000009f,0x000005cb,0x000005ca,0x0003003e,0x000005c9,0x000005cb, + 0x00080039,0x00000002,0x000005cc,0x000000ae,0x000005c7,0x000005c9,0x000005c5,0x000005c6, + 0x0004003d,0x0000009f,0x000005cd,0x000005c9,0x00050041,0x000000a0,0x000005ce,0x0000010d, + 0x00000197,0x0003003e,0x000005ce,0x000005cd,0x0004003d,0x00000036,0x000005cf,0x000004df, + 0x00050080,0x00000036,0x000005d0,0x000005cf,0x0000023e,0x0003003e,0x000004df,0x000005d0, + 0x000200f9,0x0000056a,0x000200f8,0x0000056a,0x0004003d,0x00000036,0x000005d1,0x00000566, + 0x00050080,0x00000036,0x000005d2,0x000005d1,0x0000023e,0x0003003e,0x00000566,0x000005d2, + 0x000200f9,0x00000567,0x000200f8,0x00000569,0x000200f9,0x00000562,0x000200f8,0x00000562, + 0x0004003d,0x00000036,0x000005d3,0x0000055e,0x00050080,0x00000036,0x000005d4,0x000005d3, + 0x0000023e,0x0003003e,0x0000055e,0x000005d4,0x000200f9,0x0000055f,0x000200f8,0x00000561, + 0x00050041,0x000000a0,0x000005d6,0x0000010d,0x00000197,0x0004003d,0x0000009f,0x000005d7, + 0x000005d6,0x0003003e,0x000005d5,0x000005d7,0x00050039,0x00000002,0x000005d8,0x000000b2, + 0x000005d5,0x0004003d,0x0000009f,0x000005d9,0x000005d5,0x00050041,0x000000a0,0x000005da, + 0x0000010d,0x00000197,0x0003003e,0x000005da,0x000005d9,0x00050041,0x00000007,0x000005db, + 0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005dc,0x000005db,0x000500ba,0x000000a7, + 0x000005dd,0x000005dc,0x000002e7,0x000600a9,0x00000006,0x000005de,0x000005dd,0x00000155, + 0x00000154,0x00050041,0x00000007,0x000005df,0x0000010d,0x000001a2,0x0004003d,0x00000006, + 0x000005e0,0x000005df,0x00050085,0x00000006,0x000005e1,0x000005e0,0x000005de,0x00050041, + 0x00000007,0x000005e2,0x0000010d,0x000001a2,0x0003003e,0x000005e2,0x000005e1,0x00050041, + 0x00000007,0x000005e3,0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005e4,0x000005e3, + 0x000500ba,0x000000a7,0x000005e5,0x000005e4,0x000002e7,0x000300f7,0x000005e7,0x00000000, + 0x000400fa,0x000005e5,0x000005e6,0x000005e7,0x000200f8,0x000005e6,0x00050041,0x0000000f, + 0x000005e8,0x0000010d,0x0000023e,0x0004003d,0x0000000e,0x000005e9,0x000005e8,0x00050041, + 0x00000007,0x000005ea,0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005eb,0x000005ea, + 0x00060050,0x0000000e,0x000005ec,0x000005eb,0x000005eb,0x000005eb,0x00050088,0x0000000e, + 0x000005ed,0x000005e9,0x000005ec,0x00050041,0x0000000f,0x000005ee,0x0000010d,0x0000023e, + 0x0003003e,0x000005ee,0x000005ed,0x00050041,0x00000007,0x000005f0,0x0000010d,0x000001a2, + 0x0004003d,0x00000006,0x000005f1,0x000005f0,0x00050085,0x00000006,0x000005f2,0x000005f1, + 0x000005ef,0x00050041,0x00000007,0x000005f3,0x0000010d,0x000001a2,0x0003003e,0x000005f3, + 0x000005f2,0x00050041,0x000000a0,0x000005f5,0x0000010d,0x00000197,0x0004003d,0x0000009f, + 0x000005f6,0x000005f5,0x0003003e,0x000005f4,0x000005f6,0x00050041,0x0000000f,0x000005f8, + 0x0000010d,0x0000023e,0x0004003d,0x0000000e,0x000005f9,0x000005f8,0x0003003e,0x000005f7, + 0x000005f9,0x00060039,0x00000002,0x000005fa,0x000000f9,0x000005f4,0x000005f7,0x0004003d, + 0x0000000e,0x000005fb,0x000005f7,0x00050041,0x0000000f,0x000005fc,0x0000010d,0x0000023e, + 0x0003003e,0x000005fc,0x000005fb,0x000200f9,0x000005e7,0x000200f8,0x000005e7,0x0004003d, + 0x000000a7,0x000005fd,0x000004dc,0x000300f7,0x000005ff,0x00000000,0x000400fa,0x000005fd, + 0x000005fe,0x000005ff,0x000200f8,0x000005fe,0x00060041,0x0000000f,0x00000601,0x0000010d, + 0x00000197,0x00000197,0x0004003d,0x0000000e,0x00000602,0x00000601,0x0003003e,0x00000600, + 0x00000602,0x00050039,0x0000000e,0x00000603,0x000000b6,0x00000600,0x0003003e,0x00000604, + 0x00000603,0x00050039,0x0000000e,0x00000605,0x000000bf,0x00000604,0x0003003e,0x00000606, + 0x00000605,0x00050039,0x0000000e,0x00000607,0x000000b9,0x00000606,0x00050041,0x0000000f, + 0x00000608,0x0000010d,0x0000023e,0x0003003e,0x00000608,0x00000607,0x00050041,0x00000007, + 0x00000609,0x0000010d,0x000001a2,0x0003003e,0x00000609,0x00000155,0x00050041,0x00000007, + 0x0000060a,0x0000010d,0x0000019d,0x0003003e,0x0000060a,0x00000154,0x000200f9,0x000005ff, + 0x000200f8,0x000005ff,0x000100fd,0x00010038,0x00050036,0x0000002f,0x00000111,0x00000000, + 0x00000072,0x00030037,0x0000006d,0x00000110,0x000200f8,0x00000112,0x0004003b,0x0000006d, + 0x0000060b,0x00000007,0x0004003d,0x00000055,0x0000060c,0x00000110,0x0003003e,0x0000060b, + 0x0000060c,0x00050039,0x0000002f,0x0000060d,0x00000074,0x0000060b,0x000200fe,0x0000060d, + 0x00010038,0x00050036,0x000000ea,0x00000116,0x00000000,0x00000113,0x00030037,0x0000006d, + 0x00000114,0x00030037,0x0000006d,0x00000115,0x000200f8,0x00000117,0x0004003b,0x000000eb, + 0x00000610,0x00000007,0x0004003b,0x0000006d,0x00000612,0x00000007,0x0004003b,0x0000006d, + 0x00000614,0x00000007,0x0004003b,0x0000006d,0x00000615,0x00000007,0x0004003b,0x0000006d, + 0x00000618,0x00000007,0x0004003b,0x0000006d,0x0000061c,0x00000007,0x0004003b,0x0000006d, + 0x0000061e,0x00000007,0x0004003b,0x0000006d,0x0000061f,0x00000007,0x0004003b,0x0000006d, + 0x00000622,0x00000007,0x0004003b,0x0000006d,0x00000626,0x00000007,0x0004003b,0x0000006d, + 0x00000628,0x00000007,0x0004003b,0x0000006d,0x00000629,0x00000007,0x0004003b,0x0000006d, + 0x0000062c,0x00000007,0x0004003b,0x0000006d,0x00000630,0x00000007,0x0004003b,0x0000006d, + 0x00000632,0x00000007,0x0004003b,0x0000006d,0x00000633,0x00000007,0x0004003b,0x0000006d, + 0x00000636,0x00000007,0x0004003b,0x0000006d,0x0000063a,0x00000007,0x0004003b,0x0000006d, + 0x0000063c,0x00000007,0x0004003b,0x0000006d,0x0000063d,0x00000007,0x0004003b,0x0000006d, + 0x00000640,0x00000007,0x0004003b,0x0000006d,0x00000643,0x00000007,0x0004003b,0x0000006d, + 0x00000645,0x00000007,0x0004003b,0x0000006d,0x00000646,0x00000007,0x0004003b,0x0000006d, + 0x00000649,0x00000007,0x0004003b,0x0000006d,0x0000064d,0x00000007,0x0004003b,0x0000006d, + 0x0000064f,0x00000007,0x0004003b,0x0000006d,0x00000650,0x00000007,0x0004003b,0x0000006d, + 0x00000653,0x00000007,0x0004003b,0x0000006d,0x00000657,0x00000007,0x0004003b,0x0000006d, + 0x00000659,0x00000007,0x0004003b,0x0000006d,0x0000065a,0x00000007,0x0004003b,0x0000006d, + 0x0000065d,0x00000007,0x0004003b,0x0000006d,0x00000661,0x00000007,0x0004003b,0x0000006d, + 0x00000663,0x00000007,0x0004003b,0x0000006d,0x00000664,0x00000007,0x0004003b,0x0000006d, + 0x00000667,0x00000007,0x0004003b,0x0000006d,0x0000066b,0x00000007,0x0004003b,0x0000006d, + 0x0000066d,0x00000007,0x0004003b,0x0000006d,0x0000066e,0x00000007,0x0004003b,0x0000006d, + 0x00000671,0x00000007,0x0004003b,0x0000006d,0x00000675,0x00000007,0x0004003b,0x0000006d, + 0x00000677,0x00000007,0x0004003b,0x0000006d,0x00000678,0x00000007,0x0004003b,0x0000006d, + 0x0000067b,0x00000007,0x0004003b,0x0000006d,0x0000067f,0x00000007,0x0004003b,0x0000006d, + 0x00000681,0x00000007,0x0004003b,0x0000006d,0x00000682,0x00000007,0x0004003b,0x0000006d, + 0x00000685,0x00000007,0x0004003b,0x0000006d,0x00000689,0x00000007,0x0004003b,0x0000006d, + 0x0000068b,0x00000007,0x0004003b,0x0000006d,0x0000068c,0x00000007,0x0004003b,0x0000006d, + 0x0000068f,0x00000007,0x0004003b,0x0000006d,0x00000693,0x00000007,0x0004003b,0x0000006d, + 0x00000695,0x00000007,0x0004003b,0x0000006d,0x00000696,0x00000007,0x0004003b,0x0000006d, + 0x00000699,0x00000007,0x0004003b,0x0000006d,0x0000069d,0x00000007,0x0004003b,0x0000006d, + 0x0000069f,0x00000007,0x0004003b,0x0000006d,0x000006a0,0x00000007,0x0004003b,0x0000006d, + 0x000006a3,0x00000007,0x0004003b,0x0000006d,0x000006a7,0x00000007,0x0004003b,0x0000006d, + 0x000006a9,0x00000007,0x0004003b,0x0000006d,0x000006aa,0x00000007,0x0004003b,0x0000006d, + 0x000006ad,0x00000007,0x0004003d,0x00000055,0x00000613,0x00000114,0x0003003e,0x00000612, + 0x00000613,0x0003003e,0x00000614,0x00000611,0x0004003d,0x00000055,0x00000616,0x00000115, + 0x0003003e,0x00000615,0x00000616,0x00070039,0x00000055,0x00000617,0x000000f4,0x00000612, + 0x00000614,0x00000615,0x0003003e,0x00000618,0x00000617,0x00050039,0x0000002f,0x00000619, + 0x00000111,0x00000618,0x00050041,0x00000030,0x0000061a,0x00000610,0x00000197,0x0003003e, + 0x0000061a,0x00000619,0x0004003d,0x00000055,0x0000061d,0x00000114,0x0003003e,0x0000061c, + 0x0000061d,0x0003003e,0x0000061e,0x0000061b,0x0004003d,0x00000055,0x00000620,0x00000115, + 0x0003003e,0x0000061f,0x00000620,0x00070039,0x00000055,0x00000621,0x000000f4,0x0000061c, + 0x0000061e,0x0000061f,0x0003003e,0x00000622,0x00000621,0x00050039,0x0000002f,0x00000623, + 0x00000111,0x00000622,0x00050041,0x00000030,0x00000624,0x00000610,0x0000023e,0x0003003e, + 0x00000624,0x00000623,0x0004003d,0x00000055,0x00000627,0x00000114,0x0003003e,0x00000626, + 0x00000627,0x0003003e,0x00000628,0x00000625,0x0004003d,0x00000055,0x0000062a,0x00000115, + 0x0003003e,0x00000629,0x0000062a,0x00070039,0x00000055,0x0000062b,0x000000f4,0x00000626, + 0x00000628,0x00000629,0x0003003e,0x0000062c,0x0000062b,0x00050039,0x0000002f,0x0000062d, + 0x00000111,0x0000062c,0x00050041,0x00000030,0x0000062e,0x00000610,0x000001a2,0x0003003e, + 0x0000062e,0x0000062d,0x0004003d,0x00000055,0x00000631,0x00000114,0x0003003e,0x00000630, + 0x00000631,0x0003003e,0x00000632,0x0000062f,0x0004003d,0x00000055,0x00000634,0x00000115, + 0x0003003e,0x00000633,0x00000634,0x00070039,0x00000055,0x00000635,0x000000f4,0x00000630, + 0x00000632,0x00000633,0x0003003e,0x00000636,0x00000635,0x00050039,0x0000002f,0x00000637, + 0x00000111,0x00000636,0x00050041,0x00000030,0x00000638,0x00000610,0x000001a7,0x0003003e, + 0x00000638,0x00000637,0x0004003d,0x00000055,0x0000063b,0x00000114,0x0003003e,0x0000063a, + 0x0000063b,0x0003003e,0x0000063c,0x00000639,0x0004003d,0x00000055,0x0000063e,0x00000115, + 0x0003003e,0x0000063d,0x0000063e,0x00070039,0x00000055,0x0000063f,0x000000f4,0x0000063a, + 0x0000063c,0x0000063d,0x0003003e,0x00000640,0x0000063f,0x00050039,0x0000002f,0x00000641, + 0x00000111,0x00000640,0x00050041,0x00000030,0x00000642,0x00000610,0x0000019d,0x0003003e, + 0x00000642,0x00000641,0x0004003d,0x00000055,0x00000644,0x00000114,0x0003003e,0x00000643, + 0x00000644,0x0003003e,0x00000645,0x0000021e,0x0004003d,0x00000055,0x00000647,0x00000115, + 0x0003003e,0x00000646,0x00000647,0x00070039,0x00000055,0x00000648,0x000000f4,0x00000643, + 0x00000645,0x00000646,0x0003003e,0x00000649,0x00000648,0x00050039,0x0000002f,0x0000064a, + 0x00000111,0x00000649,0x00050041,0x00000030,0x0000064b,0x00000610,0x000003db,0x0003003e, + 0x0000064b,0x0000064a,0x0004003d,0x00000055,0x0000064e,0x00000114,0x0003003e,0x0000064d, + 0x0000064e,0x0003003e,0x0000064f,0x0000064c,0x0004003d,0x00000055,0x00000651,0x00000115, + 0x0003003e,0x00000650,0x00000651,0x00070039,0x00000055,0x00000652,0x000000f4,0x0000064d, + 0x0000064f,0x00000650,0x0003003e,0x00000653,0x00000652,0x00050039,0x0000002f,0x00000654, + 0x00000111,0x00000653,0x00050041,0x00000030,0x00000655,0x00000610,0x000003dc,0x0003003e, + 0x00000655,0x00000654,0x0004003d,0x00000055,0x00000658,0x00000114,0x0003003e,0x00000657, + 0x00000658,0x0003003e,0x00000659,0x00000656,0x0004003d,0x00000055,0x0000065b,0x00000115, + 0x0003003e,0x0000065a,0x0000065b,0x00070039,0x00000055,0x0000065c,0x000000f4,0x00000657, + 0x00000659,0x0000065a,0x0003003e,0x0000065d,0x0000065c,0x00050039,0x0000002f,0x0000065e, + 0x00000111,0x0000065d,0x00050041,0x00000030,0x0000065f,0x00000610,0x000001ac,0x0003003e, + 0x0000065f,0x0000065e,0x0004003d,0x00000055,0x00000662,0x00000114,0x0003003e,0x00000661, + 0x00000662,0x0003003e,0x00000663,0x00000660,0x0004003d,0x00000055,0x00000665,0x00000115, + 0x0003003e,0x00000664,0x00000665,0x00070039,0x00000055,0x00000666,0x000000f4,0x00000661, + 0x00000663,0x00000664,0x0003003e,0x00000667,0x00000666,0x00050039,0x0000002f,0x00000668, + 0x00000111,0x00000667,0x00050041,0x00000030,0x00000669,0x00000610,0x000003ee,0x0003003e, + 0x00000669,0x00000668,0x0004003d,0x00000055,0x0000066c,0x00000114,0x0003003e,0x0000066b, + 0x0000066c,0x0003003e,0x0000066d,0x0000066a,0x0004003d,0x00000055,0x0000066f,0x00000115, + 0x0003003e,0x0000066e,0x0000066f,0x00070039,0x00000055,0x00000670,0x000000f4,0x0000066b, + 0x0000066d,0x0000066e,0x0003003e,0x00000671,0x00000670,0x00050039,0x0000002f,0x00000672, + 0x00000111,0x00000671,0x00050041,0x00000030,0x00000673,0x00000610,0x000003ef,0x0003003e, + 0x00000673,0x00000672,0x0004003d,0x00000055,0x00000676,0x00000114,0x0003003e,0x00000675, + 0x00000676,0x0003003e,0x00000677,0x00000674,0x0004003d,0x00000055,0x00000679,0x00000115, + 0x0003003e,0x00000678,0x00000679,0x00070039,0x00000055,0x0000067a,0x000000f4,0x00000675, + 0x00000677,0x00000678,0x0003003e,0x0000067b,0x0000067a,0x00050039,0x0000002f,0x0000067c, + 0x00000111,0x0000067b,0x00050041,0x00000030,0x0000067d,0x00000610,0x000001b2,0x0003003e, + 0x0000067d,0x0000067c,0x0004003d,0x00000055,0x00000680,0x00000114,0x0003003e,0x0000067f, + 0x00000680,0x0003003e,0x00000681,0x0000067e,0x0004003d,0x00000055,0x00000683,0x00000115, + 0x0003003e,0x00000682,0x00000683,0x00070039,0x00000055,0x00000684,0x000000f4,0x0000067f, + 0x00000681,0x00000682,0x0003003e,0x00000685,0x00000684,0x00050039,0x0000002f,0x00000686, + 0x00000111,0x00000685,0x00050041,0x00000030,0x00000687,0x00000610,0x000003f0,0x0003003e, + 0x00000687,0x00000686,0x0004003d,0x00000055,0x0000068a,0x00000114,0x0003003e,0x00000689, + 0x0000068a,0x0003003e,0x0000068b,0x00000688,0x0004003d,0x00000055,0x0000068d,0x00000115, + 0x0003003e,0x0000068c,0x0000068d,0x00070039,0x00000055,0x0000068e,0x000000f4,0x00000689, + 0x0000068b,0x0000068c,0x0003003e,0x0000068f,0x0000068e,0x00050039,0x0000002f,0x00000690, + 0x00000111,0x0000068f,0x00050041,0x00000030,0x00000691,0x00000610,0x00000402,0x0003003e, + 0x00000691,0x00000690,0x0004003d,0x00000055,0x00000694,0x00000114,0x0003003e,0x00000693, + 0x00000694,0x0003003e,0x00000695,0x00000692,0x0004003d,0x00000055,0x00000697,0x00000115, + 0x0003003e,0x00000696,0x00000697,0x00070039,0x00000055,0x00000698,0x000000f4,0x00000693, + 0x00000695,0x00000696,0x0003003e,0x00000699,0x00000698,0x00050039,0x0000002f,0x0000069a, + 0x00000111,0x00000699,0x00050041,0x00000030,0x0000069b,0x00000610,0x000001b7,0x0003003e, + 0x0000069b,0x0000069a,0x0004003d,0x00000055,0x0000069e,0x00000114,0x0003003e,0x0000069d, + 0x0000069e,0x0003003e,0x0000069f,0x0000069c,0x0004003d,0x00000055,0x000006a1,0x00000115, + 0x0003003e,0x000006a0,0x000006a1,0x00070039,0x00000055,0x000006a2,0x000000f4,0x0000069d, + 0x0000069f,0x000006a0,0x0003003e,0x000006a3,0x000006a2,0x00050039,0x0000002f,0x000006a4, + 0x00000111,0x000006a3,0x00050041,0x00000030,0x000006a5,0x00000610,0x00000403,0x0003003e, + 0x000006a5,0x000006a4,0x0004003d,0x00000055,0x000006a8,0x00000114,0x0003003e,0x000006a7, + 0x000006a8,0x0003003e,0x000006a9,0x000006a6,0x0004003d,0x00000055,0x000006ab,0x00000115, + 0x0003003e,0x000006aa,0x000006ab,0x00070039,0x00000055,0x000006ac,0x000000f4,0x000006a7, + 0x000006a9,0x000006aa,0x0003003e,0x000006ad,0x000006ac,0x00050039,0x0000002f,0x000006ae, + 0x00000111,0x000006ad,0x00050041,0x00000030,0x000006af,0x00000610,0x000001bd,0x0003003e, + 0x000006af,0x000006ae,0x0004003d,0x000000ea,0x000006b0,0x00000610,0x000200fe,0x000006b0, + 0x00010038,0x00050036,0x0000002f,0x0000011b,0x00000000,0x00000118,0x00030037,0x0000001b, + 0x00000119,0x00030037,0x0000006d,0x0000011a,0x000200f8,0x0000011c,0x0004003b,0x0000001b, + 0x000006b3,0x00000007,0x0004003b,0x0000001b,0x000006b9,0x00000007,0x0004003b,0x0000001b, + 0x000006ba,0x00000007,0x0004003b,0x00000007,0x000006c1,0x00000007,0x0004003b,0x00000007, + 0x000006c2,0x00000007,0x0004003b,0x00000007,0x000006c6,0x00000007,0x0004003b,0x00000007, + 0x000006c7,0x00000007,0x0004003b,0x00000007,0x000006ce,0x00000007,0x0004003b,0x00000007, + 0x000006cf,0x00000007,0x0004003b,0x00000007,0x000006d3,0x00000007,0x0004003b,0x00000007, + 0x000006d4,0x00000007,0x0004003b,0x0000006d,0x000006d7,0x00000007,0x0004003b,0x00000030, + 0x000006db,0x00000007,0x0004003b,0x0000006d,0x000006dc,0x00000007,0x0004003b,0x0000006d, + 0x000006de,0x00000007,0x0004003b,0x000000eb,0x000006e1,0x00000007,0x0004003b,0x0000001b, + 0x000006e2,0x00000007,0x0004003d,0x0000001a,0x000006b4,0x00000119,0x0004003d,0x00000055, + 0x000006b5,0x0000011a,0x0004006f,0x0000001a,0x000006b6,0x000006b5,0x00050085,0x0000001a, + 0x000006b7,0x000006b4,0x000006b6,0x00050083,0x0000001a,0x000006b8,0x000006b7,0x00000338, + 0x0003003e,0x000006b3,0x000006b8,0x0004003d,0x0000001a,0x000006bb,0x000006b3,0x0003003e, + 0x000006ba,0x000006bb,0x00050039,0x0000001a,0x000006bc,0x0000001e,0x000006ba,0x0003003e, + 0x000006b9,0x000006bc,0x00050041,0x00000037,0x000006bd,0x0000011a,0x000001fa,0x0004003d, + 0x00000036,0x000006be,0x000006bd,0x00050082,0x00000036,0x000006bf,0x000006be,0x0000023e, + 0x0004006f,0x00000006,0x000006c0,0x000006bf,0x0003003e,0x000006c1,0x000006c0,0x00050041, + 0x00000007,0x000006c3,0x000006b3,0x000001fa,0x0004003d,0x00000006,0x000006c4,0x000006c3, + 0x0003003e,0x000006c2,0x000006c4,0x00060039,0x00000006,0x000006c5,0x00000023,0x000006c1, + 0x000006c2,0x0003003e,0x000006c6,0x00000154,0x0003003e,0x000006c7,0x000006c5,0x00060039, + 0x00000006,0x000006c8,0x0000003f,0x000006c6,0x000006c7,0x00050041,0x00000007,0x000006c9, + 0x000006b3,0x000001fa,0x0003003e,0x000006c9,0x000006c8,0x00050041,0x00000037,0x000006ca, + 0x0000011a,0x00000293,0x0004003d,0x00000036,0x000006cb,0x000006ca,0x00050082,0x00000036, + 0x000006cc,0x000006cb,0x0000023e,0x0004006f,0x00000006,0x000006cd,0x000006cc,0x0003003e, + 0x000006ce,0x000006cd,0x00050041,0x00000007,0x000006d0,0x000006b3,0x00000293,0x0004003d, + 0x00000006,0x000006d1,0x000006d0,0x0003003e,0x000006cf,0x000006d1,0x00060039,0x00000006, + 0x000006d2,0x00000023,0x000006ce,0x000006cf,0x0003003e,0x000006d3,0x00000154,0x0003003e, + 0x000006d4,0x000006d2,0x00060039,0x00000006,0x000006d5,0x0000003f,0x000006d3,0x000006d4, + 0x00050041,0x00000007,0x000006d6,0x000006b3,0x00000293,0x0003003e,0x000006d6,0x000006d5, + 0x0004003d,0x0000001a,0x000006d8,0x000006b3,0x0006000c,0x0000001a,0x000006d9,0x00000001, + 0x00000008,0x000006d8,0x0004006e,0x00000055,0x000006da,0x000006d9,0x0003003e,0x000006d7, + 0x000006da,0x0004003d,0x00000055,0x000006dd,0x000006d7,0x0003003e,0x000006dc,0x000006dd, + 0x0004003d,0x00000055,0x000006df,0x0000011a,0x0003003e,0x000006de,0x000006df,0x00060039, + 0x000000ea,0x000006e0,0x00000116,0x000006dc,0x000006de,0x0003003e,0x000006e1,0x000006e0, + 0x0004003d,0x0000001a,0x000006e3,0x000006b9,0x0003003e,0x000006e2,0x000006e3,0x00060039, + 0x0000002f,0x000006e4,0x000000ef,0x000006e1,0x000006e2,0x0003003e,0x000006db,0x000006e4, + 0x0004003d,0x0000002f,0x000006e5,0x000006db,0x000200fe,0x000006e5,0x00010038,0x00050036, + 0x0000001a,0x00000120,0x00000000,0x0000011d,0x00030037,0x0000006d,0x0000011e,0x00030037, + 0x0000001b,0x0000011f,0x000200f8,0x00000121,0x0004003b,0x0000001b,0x000006e8,0x00000007, + 0x0004003b,0x0000006d,0x000006ee,0x00000007,0x0004003d,0x0000001a,0x000006e9,0x0000011f, + 0x00040039,0x00000055,0x000006ea,0x00000057,0x0004006f,0x0000001a,0x000006eb,0x000006ea, + 0x00050085,0x0000001a,0x000006ec,0x000006e9,0x000006eb,0x0004006e,0x00000055,0x000006ed, + 0x000006ec,0x0003003e,0x000006ee,0x000006ed,0x00050039,0x0000001a,0x000006ef,0x00000094, + 0x000006ee,0x0003003e,0x000006e8,0x000006ef,0x0004003d,0x0000001a,0x000006f0,0x000006e8, + 0x000200fe,0x000006f0,0x00010038,0x00050036,0x00000002,0x00000125,0x00000000,0x00000123, + 0x00030037,0x00000122,0x00000124,0x000200f8,0x00000126,0x0004003b,0x0000001b,0x000006f9, + 0x00000007,0x00050041,0x0000001b,0x000006f3,0x00000124,0x0000023e,0x0004003d,0x0000001a, + 0x000006f4,0x000006f3,0x00050041,0x0000001b,0x000006f5,0x00000124,0x0000019d,0x0004003d, + 0x0000001a,0x000006f6,0x000006f5,0x00050081,0x0000001a,0x000006f7,0x000006f4,0x000006f6, + 0x00050041,0x0000001b,0x000006f8,0x00000124,0x000003db,0x0003003e,0x000006f8,0x000006f7, + 0x00050041,0x0000001b,0x000006fa,0x00000124,0x000003db,0x0004003d,0x0000001a,0x000006fb, + 0x000006fa,0x0003003e,0x000006f9,0x000006fb,0x00050039,0x000000a7,0x000006fc,0x000000c3, + 0x000006f9,0x00050041,0x000000a8,0x000006fd,0x00000124,0x000001b7,0x0003003e,0x000006fd, + 0x000006fc,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000129,0x00000000,0x0000010b, + 0x00030037,0x00000100,0x00000127,0x00030037,0x00000102,0x00000128,0x000200f8,0x0000012a, + 0x0004003b,0x00000030,0x000006fe,0x00000007,0x0004003b,0x0000001b,0x00000700,0x00000007, + 0x0004003b,0x0000006d,0x00000702,0x00000007,0x0004003b,0x0000000f,0x00000711,0x00000007, + 0x00040039,0x00000055,0x000006ff,0x0000005d,0x00050051,0x0000001a,0x00000701,0x00000127, + 0x00000005,0x0003003e,0x00000700,0x00000701,0x0003003e,0x00000702,0x000006ff,0x00060039, + 0x0000002f,0x00000703,0x0000011b,0x00000700,0x00000702,0x0003003e,0x000006fe,0x00000703, + 0x0004003d,0x0000002f,0x00000704,0x000006fe,0x0008004f,0x0000000e,0x00000705,0x00000704, + 0x00000704,0x00000000,0x00000001,0x00000002,0x00050041,0x0000000f,0x00000706,0x00000128, + 0x000001a7,0x0003003e,0x00000706,0x00000705,0x00040039,0x00000006,0x00000707,0x00000067, + 0x00050041,0x0000000f,0x00000708,0x00000128,0x000001a7,0x0004003d,0x0000000e,0x00000709, + 0x00000708,0x0005008e,0x0000000e,0x0000070a,0x00000709,0x00000707,0x00050041,0x0000000f, + 0x0000070b,0x00000128,0x000001a7,0x0003003e,0x0000070b,0x0000070a,0x00040039,0x00000006, + 0x0000070c,0x00000096,0x00050041,0x0000000f,0x0000070d,0x00000128,0x000001a7,0x0004003d, + 0x0000000e,0x0000070e,0x0000070d,0x0005008e,0x0000000e,0x0000070f,0x0000070e,0x0000070c, + 0x00050041,0x0000000f,0x00000710,0x00000128,0x000001a7,0x0003003e,0x00000710,0x0000070f, + 0x00050041,0x0000000f,0x00000712,0x00000128,0x000001a7,0x0004003d,0x0000000e,0x00000713, + 0x00000712,0x0003003e,0x00000711,0x00000713,0x00050039,0x0000000e,0x00000714,0x000000b9, + 0x00000711,0x00050041,0x0000000f,0x00000715,0x00000128,0x000001a7,0x0003003e,0x00000715, + 0x00000714,0x00050041,0x00000007,0x00000717,0x000006fe,0x00000716,0x0004003d,0x00000006, + 0x00000718,0x00000717,0x00050041,0x00000007,0x00000719,0x00000128,0x000003db,0x0003003e, + 0x00000719,0x00000718,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000012d,0x00000000, + 0x0000010b,0x00030037,0x00000100,0x0000012b,0x00030037,0x00000102,0x0000012c,0x000200f8, + 0x0000012e,0x0004003b,0x00000007,0x00000727,0x00000007,0x0004003b,0x00000007,0x00000728, + 0x00000007,0x0004003b,0x0000000f,0x0000072b,0x00000007,0x0004003b,0x0000000f,0x0000072f, + 0x00000007,0x0004003b,0x0000000f,0x00000731,0x00000007,0x0004003b,0x0000000f,0x00000734, + 0x00000007,0x0004003b,0x0000000f,0x00000738,0x00000007,0x0004003b,0x0000000f,0x0000073a, + 0x00000007,0x0004003b,0x00000007,0x0000073d,0x00000007,0x0004003b,0x00000007,0x00000743, + 0x00000007,0x0004003b,0x0000000f,0x00000745,0x00000007,0x0004003b,0x0000000f,0x00000748, + 0x00000007,0x0004003b,0x00000007,0x0000074b,0x00000007,0x0004003b,0x0000000f,0x0000074f, + 0x00000007,0x0004003b,0x0000000f,0x00000754,0x00000007,0x00050041,0x00000007,0x0000071a, + 0x0000012c,0x0000019d,0x0004003d,0x00000006,0x0000071b,0x0000071a,0x000500ba,0x000000a7, + 0x0000071c,0x0000071b,0x000002e7,0x000600a9,0x00000006,0x0000071d,0x0000071c,0x00000155, + 0x00000154,0x00050041,0x00000007,0x0000071e,0x0000012c,0x0000019d,0x0004003d,0x00000006, + 0x0000071f,0x0000071e,0x00050085,0x00000006,0x00000720,0x0000071f,0x0000071d,0x00050041, + 0x00000007,0x00000721,0x0000012c,0x0000019d,0x0003003e,0x00000721,0x00000720,0x00050041, + 0x00000007,0x00000722,0x0000012c,0x0000019d,0x0004003d,0x00000006,0x00000723,0x00000722, + 0x00050041,0x00000007,0x00000724,0x0000012c,0x000001a2,0x0004003d,0x00000006,0x00000725, + 0x00000724,0x00050081,0x00000006,0x00000726,0x00000723,0x00000725,0x0003003e,0x00000727, + 0x000002e7,0x0003003e,0x00000728,0x00000726,0x00060039,0x00000006,0x00000729,0x0000003f, + 0x00000727,0x00000728,0x00050041,0x00000007,0x0000072a,0x0000012c,0x0000019d,0x0003003e, + 0x0000072a,0x00000729,0x00050041,0x0000000f,0x0000072c,0x0000012c,0x0000023e,0x0004003d, + 0x0000000e,0x0000072d,0x0000072c,0x0003003e,0x0000072b,0x0000072d,0x00050039,0x0000000e, + 0x0000072e,0x000000b6,0x0000072b,0x0003003e,0x0000072f,0x0000072e,0x00050039,0x0000000e, + 0x00000730,0x000000bc,0x0000072f,0x0003003e,0x00000731,0x00000730,0x00050039,0x0000000e, + 0x00000732,0x000000b9,0x00000731,0x00050041,0x0000000f,0x00000733,0x0000012c,0x0000023e, + 0x0003003e,0x00000733,0x00000732,0x00050041,0x0000000f,0x00000735,0x0000012c,0x000001a7, + 0x0004003d,0x0000000e,0x00000736,0x00000735,0x0003003e,0x00000734,0x00000736,0x00050039, + 0x0000000e,0x00000737,0x000000b6,0x00000734,0x0003003e,0x00000738,0x00000737,0x00050039, + 0x0000000e,0x00000739,0x000000bc,0x00000738,0x0003003e,0x0000073a,0x00000739,0x00050039, + 0x0000000e,0x0000073b,0x000000b9,0x0000073a,0x00050041,0x0000000f,0x0000073c,0x0000012c, + 0x000001a7,0x0003003e,0x0000073c,0x0000073b,0x00050041,0x00000007,0x0000073e,0x0000012c, + 0x000001a2,0x0004003d,0x00000006,0x0000073f,0x0000073e,0x00050041,0x00000007,0x00000740, + 0x0000012c,0x0000019d,0x0004003d,0x00000006,0x00000741,0x00000740,0x00050088,0x00000006, + 0x00000742,0x0000073f,0x00000741,0x0003003e,0x00000743,0x00000742,0x00050039,0x00000006, + 0x00000744,0x00000018,0x00000743,0x0003003e,0x0000073d,0x00000744,0x00050041,0x0000000f, + 0x00000746,0x0000012c,0x000001a7,0x0004003d,0x0000000e,0x00000747,0x00000746,0x0003003e, + 0x00000745,0x00000747,0x00050041,0x0000000f,0x00000749,0x0000012c,0x0000023e,0x0004003d, + 0x0000000e,0x0000074a,0x00000749,0x0003003e,0x00000748,0x0000074a,0x0004003d,0x00000006, + 0x0000074c,0x0000073d,0x0003003e,0x0000074b,0x0000074c,0x00070039,0x0000000e,0x0000074d, + 0x00000014,0x00000745,0x00000748,0x0000074b,0x00050041,0x0000000f,0x0000074e,0x0000012c, + 0x000001a7,0x0003003e,0x0000074e,0x0000074d,0x00050041,0x0000000f,0x00000750,0x0000012c, + 0x000001a7,0x0004003d,0x0000000e,0x00000751,0x00000750,0x0003003e,0x0000074f,0x00000751, + 0x00050039,0x0000000e,0x00000752,0x000000b6,0x0000074f,0x00050041,0x0000000f,0x00000753, + 0x0000012c,0x000001a7,0x0003003e,0x00000753,0x00000752,0x00050041,0x0000000f,0x00000755, + 0x0000012c,0x000001a7,0x0004003d,0x0000000e,0x00000756,0x00000755,0x0003003e,0x00000754, + 0x00000756,0x00050039,0x0000000e,0x00000757,0x000000bf,0x00000754,0x00050041,0x0000000f, + 0x00000758,0x0000012c,0x000001a7,0x0003003e,0x00000758,0x00000757,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000131,0x00000000,0x0000010b,0x00030037,0x00000100,0x0000012f, + 0x00030037,0x00000102,0x00000130,0x000200f8,0x00000132,0x0004003b,0x00000007,0x00000759, + 0x00000007,0x0004003b,0x00000007,0x0000075d,0x00000007,0x0004003b,0x00000007,0x0000075f, + 0x00000007,0x0004003b,0x00000007,0x00000764,0x00000007,0x0004003b,0x00000007,0x00000766, + 0x00000007,0x0004003b,0x00000007,0x00000769,0x00000007,0x0004003b,0x00000007,0x0000076a, + 0x00000007,0x0004003b,0x00000007,0x0000076c,0x00000007,0x0004003b,0x00000007,0x0000076e, + 0x00000007,0x0004003b,0x00000007,0x00000770,0x00000007,0x0004003b,0x00000007,0x00000771, + 0x00000007,0x0004003b,0x00000007,0x00000773,0x00000007,0x0004003b,0x00000007,0x00000776, + 0x00000007,0x0004003b,0x00000007,0x00000778,0x00000007,0x0004003b,0x00000007,0x0000077a, + 0x00000007,0x0004003b,0x00000007,0x0000077c,0x00000007,0x0004003b,0x00000007,0x0000077e, + 0x00000007,0x0004003b,0x00000007,0x00000780,0x00000007,0x0004003b,0x00000007,0x00000782, + 0x00000007,0x0004003b,0x00000007,0x00000784,0x00000007,0x0004003b,0x00000007,0x00000785, + 0x00000007,0x0004003b,0x00000007,0x00000786,0x00000007,0x0004003b,0x0000000f,0x00000789, + 0x00000007,0x0004003b,0x0000000f,0x00000791,0x00000007,0x0004003b,0x0000000f,0x00000794, + 0x00000007,0x0004003b,0x0000000f,0x00000796,0x00000007,0x0004003b,0x0000000f,0x00000798, + 0x00000007,0x0004003b,0x0000000f,0x000007a5,0x00000007,0x0004003b,0x0000000f,0x000007a8, + 0x00000007,0x0004003b,0x00000007,0x000007af,0x00000007,0x0004003b,0x00000007,0x000007b0, + 0x00000007,0x0004003b,0x00000007,0x000007b2,0x00000007,0x0004003b,0x00000007,0x000007bb, + 0x00000007,0x0004003b,0x0000000f,0x000007be,0x00000007,0x0004003b,0x0000000f,0x000007c0, + 0x00000007,0x0004003b,0x00000007,0x000007c3,0x00000007,0x00050051,0x00000006,0x0000075a, + 0x0000012f,0x00000006,0x00050088,0x00000006,0x0000075c,0x0000075a,0x0000075b,0x0003003e, + 0x0000075d,0x0000075c,0x00050039,0x00000006,0x0000075e,0x00000018,0x0000075d,0x0003003e, + 0x00000759,0x0000075e,0x00050051,0x00000006,0x00000761,0x0000012f,0x0000000c,0x00050088, + 0x00000006,0x00000762,0x00000761,0x0000075b,0x00050083,0x00000006,0x00000763,0x00000760, + 0x00000762,0x0003003e,0x00000764,0x00000763,0x00050039,0x00000006,0x00000765,0x00000018, + 0x00000764,0x0003003e,0x0000075f,0x00000765,0x00050051,0x00000006,0x00000767,0x0000012f, + 0x0000000a,0x00050083,0x00000006,0x00000768,0x00000155,0x00000767,0x0003003e,0x00000766, + 0x00000768,0x00050051,0x00000006,0x0000076b,0x0000012f,0x00000008,0x0003003e,0x0000076a, + 0x0000076b,0x0003003e,0x0000076c,0x000002b1,0x00060039,0x00000006,0x0000076d,0x00000053, + 0x0000076a,0x0000076c,0x0003003e,0x00000769,0x0000076d,0x00050051,0x00000006,0x0000076f, + 0x0000012f,0x00000009,0x0003003e,0x0000076e,0x0000076f,0x0004003d,0x00000006,0x00000772, + 0x00000769,0x0003003e,0x00000771,0x00000772,0x0004003d,0x00000006,0x00000774,0x0000076e, + 0x0003003e,0x00000773,0x00000774,0x00060039,0x00000006,0x00000775,0x0000003f,0x00000771, + 0x00000773,0x0004003d,0x00000006,0x00000777,0x00000766,0x0003003e,0x00000776,0x00000777, + 0x0003003e,0x00000778,0x00000775,0x00060039,0x00000006,0x00000779,0x0000003f,0x00000776, + 0x00000778,0x0004003d,0x00000006,0x0000077b,0x0000075f,0x0003003e,0x0000077a,0x0000077b, + 0x0003003e,0x0000077c,0x00000779,0x00060039,0x00000006,0x0000077d,0x0000003f,0x0000077a, + 0x0000077c,0x0004003d,0x00000006,0x0000077f,0x00000759,0x0003003e,0x0000077e,0x0000077f, + 0x0003003e,0x00000780,0x0000077d,0x00060039,0x00000006,0x00000781,0x0000003f,0x0000077e, + 0x00000780,0x0003003e,0x00000770,0x00000781,0x0003003e,0x00000784,0x00000783,0x0003003e, + 0x00000785,0x00000155,0x0004003d,0x00000006,0x00000787,0x00000770,0x0003003e,0x00000786, + 0x00000787,0x00070039,0x00000006,0x00000788,0x0000000c,0x00000784,0x00000785,0x00000786, + 0x0003003e,0x00000782,0x00000788,0x00060041,0x0000000f,0x0000078a,0x00000130,0x00000197, + 0x0000023e,0x0004003d,0x0000000e,0x0000078b,0x0000078a,0x00050085,0x0000000e,0x0000078e, + 0x0000078b,0x0000078d,0x0004003d,0x00000006,0x0000078f,0x00000782,0x0005008e,0x0000000e, + 0x00000790,0x0000078e,0x0000078f,0x0003003e,0x00000789,0x00000790,0x0004003d,0x0000000e, + 0x00000795,0x00000789,0x0003003e,0x00000794,0x00000795,0x0003003e,0x00000796,0x00000793, + 0x00060039,0x0000000e,0x00000797,0x00000047,0x00000794,0x00000796,0x0003003e,0x00000791, + 0x00000797,0x00050041,0x0000000f,0x00000799,0x00000130,0x000001a7,0x0004003d,0x0000000e, + 0x0000079a,0x00000799,0x00060041,0x0000000f,0x0000079b,0x00000130,0x00000197,0x00000197, + 0x0004003d,0x0000000e,0x0000079c,0x0000079b,0x00050083,0x0000000e,0x0000079d,0x0000079a, + 0x0000079c,0x0004003d,0x0000000e,0x0000079e,0x00000791,0x00050088,0x0000000e,0x0000079f, + 0x0000079d,0x0000079e,0x0003003e,0x00000798,0x0000079f,0x0004003d,0x0000000e,0x000007a0, + 0x00000798,0x0006000c,0x00000006,0x000007a1,0x00000001,0x00000042,0x000007a0,0x000500ba, + 0x000000a7,0x000007a2,0x000007a1,0x00000155,0x000300f7,0x000007a4,0x00000000,0x000400fa, + 0x000007a2,0x000007a3,0x000007a4,0x000200f8,0x000007a3,0x0004003d,0x0000000e,0x000007a6, + 0x00000798,0x0006000c,0x0000000e,0x000007a7,0x00000001,0x00000045,0x000007a6,0x0003003e, + 0x000007a5,0x000007a7,0x0004003d,0x0000000e,0x000007a9,0x000007a5,0x0004003d,0x0000000e, + 0x000007aa,0x00000789,0x00050085,0x0000000e,0x000007ab,0x000007a9,0x000007aa,0x00060041, + 0x0000000f,0x000007ac,0x00000130,0x00000197,0x00000197,0x0004003d,0x0000000e,0x000007ad, + 0x000007ac,0x00050081,0x0000000e,0x000007ae,0x000007ab,0x000007ad,0x0003003e,0x000007a8, + 0x000007ae,0x00050051,0x00000006,0x000007b1,0x0000012f,0x0000000b,0x0003003e,0x000007b0, + 0x000007b1,0x00050041,0x00000007,0x000007b3,0x00000130,0x000003dc,0x0004003d,0x00000006, + 0x000007b4,0x000007b3,0x0003003e,0x000007b2,0x000007b4,0x00060039,0x00000006,0x000007b5, + 0x0000003f,0x000007b0,0x000007b2,0x00050051,0x00000006,0x000007b6,0x0000012f,0x0000000a, + 0x00050085,0x00000006,0x000007b7,0x000007b5,0x000007b6,0x00050051,0x00000006,0x000007b8, + 0x0000012f,0x00000007,0x00050083,0x00000006,0x000007b9,0x00000155,0x000007b8,0x00050085, + 0x00000006,0x000007ba,0x000007b7,0x000007b9,0x0003003e,0x000007af,0x000007ba,0x0004003d, + 0x00000006,0x000007bc,0x000007af,0x0003003e,0x000007bb,0x000007bc,0x00050039,0x00000006, + 0x000007bd,0x00000018,0x000007bb,0x0004003d,0x0000000e,0x000007bf,0x000007a8,0x0003003e, + 0x000007be,0x000007bf,0x00050041,0x0000000f,0x000007c1,0x00000130,0x000001a7,0x0004003d, + 0x0000000e,0x000007c2,0x000007c1,0x0003003e,0x000007c0,0x000007c2,0x0003003e,0x000007c3, + 0x000007bd,0x00070039,0x0000000e,0x000007c4,0x00000014,0x000007be,0x000007c0,0x000007c3, + 0x00050041,0x0000000f,0x000007c5,0x00000130,0x000001a7,0x0003003e,0x000007c5,0x000007c4, + 0x000200f9,0x000007a4,0x000200f8,0x000007a4,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000136,0x00000000,0x00000133,0x00030037,0x00000122,0x00000134,0x00030037,0x00000102, + 0x00000135,0x000200f8,0x00000137,0x0004003b,0x00000007,0x000007cf,0x00000007,0x0004003b, + 0x00000007,0x000007d0,0x00000007,0x0004003b,0x00000007,0x000007d4,0x00000007,0x0004003b, + 0x00000007,0x000007d7,0x00000007,0x0004003b,0x00000007,0x000007db,0x00000007,0x0004003b, + 0x00000007,0x000007dc,0x00000007,0x0004003b,0x00000007,0x000007e3,0x00000007,0x0004003b, + 0x00000007,0x000007e4,0x00000007,0x0004003b,0x00000007,0x000007ea,0x00000007,0x0004003b, + 0x00000007,0x000007ed,0x00000007,0x0004003b,0x00000007,0x000007f0,0x00000007,0x0004003b, + 0x0000006d,0x000007f1,0x00000007,0x0004003b,0x00000007,0x000007f8,0x00000007,0x0004003b, + 0x00000007,0x000007f9,0x00000007,0x0004003b,0x00000007,0x00000803,0x00000007,0x0004003b, + 0x00000007,0x00000804,0x00000007,0x0004003b,0x00000007,0x00000806,0x00000007,0x0004003b, + 0x00000007,0x00000807,0x00000007,0x0004003b,0x00000007,0x0000080a,0x00000007,0x0004003b, + 0x00000007,0x00000815,0x00000007,0x0004003b,0x00000007,0x00000816,0x00000007,0x0004003b, + 0x0000001b,0x00000819,0x00000007,0x0004003b,0x0000001b,0x0000081f,0x00000007,0x00050041, + 0x000000a8,0x000007c6,0x00000134,0x00000403,0x0004003d,0x000000a7,0x000007c7,0x000007c6, + 0x000500a4,0x000000a7,0x000007c9,0x000007c7,0x000007c8,0x000600a9,0x00000006,0x000007ca, + 0x000007c9,0x00000155,0x00000154,0x00050041,0x00000007,0x000007cb,0x00000135,0x000003db, + 0x0004003d,0x00000006,0x000007cc,0x000007cb,0x00050085,0x00000006,0x000007cd,0x000007cc, + 0x000007ca,0x00050041,0x00000007,0x000007ce,0x00000135,0x000003db,0x0003003e,0x000007ce, + 0x000007cd,0x00050041,0x00000007,0x000007d1,0x00000134,0x000003ef,0x0004003d,0x00000006, + 0x000007d2,0x000007d1,0x0003003e,0x000007d0,0x000007d2,0x00050039,0x00000006,0x000007d3, + 0x00000018,0x000007d0,0x00050041,0x00000007,0x000007d5,0x00000134,0x000003ee,0x0004003d, + 0x00000006,0x000007d6,0x000007d5,0x0003003e,0x000007d4,0x000007d6,0x00050041,0x00000007, + 0x000007d8,0x00000134,0x000001ac,0x0004003d,0x00000006,0x000007d9,0x000007d8,0x0003003e, + 0x000007d7,0x000007d9,0x00060039,0x00000006,0x000007da,0x0000003f,0x000007d4,0x000007d7, + 0x0003003e,0x000007db,0x000007d3,0x0003003e,0x000007dc,0x000007da,0x00060039,0x00000006, + 0x000007dd,0x0000003f,0x000007db,0x000007dc,0x0003003e,0x000007cf,0x000007dd,0x00050041, + 0x00000007,0x000007de,0x00000135,0x000003db,0x0004003d,0x00000006,0x000007df,0x000007de, + 0x0004003d,0x00000006,0x000007e0,0x000007cf,0x00050085,0x00000006,0x000007e1,0x000007e0, + 0x00000370,0x00050083,0x00000006,0x000007e2,0x000007df,0x000007e1,0x0003003e,0x000007e3, + 0x00000154,0x0003003e,0x000007e4,0x000007e2,0x00060039,0x00000006,0x000007e5,0x0000003f, + 0x000007e3,0x000007e4,0x00050041,0x00000007,0x000007e6,0x00000135,0x000003db,0x0003003e, + 0x000007e6,0x000007e5,0x00050041,0x00000007,0x000007e7,0x00000135,0x000003db,0x0004003d, + 0x00000006,0x000007e8,0x000007e7,0x00050083,0x00000006,0x000007e9,0x000007e8,0x00000155, + 0x0003003e,0x000007ea,0x000007e9,0x00050039,0x00000006,0x000007eb,0x00000018,0x000007ea, + 0x00050085,0x00000006,0x000007ec,0x000007eb,0x00000155,0x0003003e,0x000007ed,0x000007ec, + 0x00050039,0x00000006,0x000007ee,0x00000018,0x000007ed,0x00050041,0x00000007,0x000007ef, + 0x00000135,0x000003dc,0x0003003e,0x000007ef,0x000007ee,0x00050041,0x0000006d,0x000007f2, + 0x00000134,0x00000197,0x0004003d,0x00000055,0x000007f3,0x000007f2,0x0003003e,0x000007f1, + 0x000007f3,0x00050039,0x00000006,0x000007f4,0x0000008b,0x000007f1,0x00050041,0x00000007, + 0x000007f5,0x00000134,0x000003ef,0x0004003d,0x00000006,0x000007f6,0x000007f5,0x00050085, + 0x00000006,0x000007f7,0x000007f6,0x00000154,0x0003003e,0x000007f8,0x000007f7,0x00050041, + 0x00000007,0x000007fa,0x00000134,0x000003ee,0x0004003d,0x00000006,0x000007fb,0x000007fa, + 0x0003003e,0x000007f9,0x000007fb,0x00060039,0x00000006,0x000007fc,0x0000003f,0x000007f8, + 0x000007f9,0x00050083,0x00000006,0x000007fd,0x00000155,0x000007fc,0x00050085,0x00000006, + 0x000007fe,0x000007f4,0x000007fd,0x0003003e,0x000007f0,0x000007fe,0x00050041,0x00000007, + 0x000007ff,0x00000135,0x000003db,0x0004003d,0x00000006,0x00000800,0x000007ff,0x0004003d, + 0x00000006,0x00000801,0x000007f0,0x00050081,0x00000006,0x00000802,0x00000800,0x00000801, + 0x0003003e,0x00000803,0x00000802,0x0003003e,0x00000804,0x00000370,0x00060039,0x00000006, + 0x00000805,0x00000023,0x00000803,0x00000804,0x0003003e,0x00000806,0x00000154,0x0003003e, + 0x00000807,0x00000805,0x00060039,0x00000006,0x00000808,0x0000003f,0x00000806,0x00000807, + 0x00050041,0x00000007,0x00000809,0x00000135,0x000003db,0x0003003e,0x00000809,0x00000808, + 0x00040039,0x00000006,0x0000080c,0x00000065,0x00050088,0x00000006,0x0000080d,0x0000080b, + 0x0000080c,0x0004003d,0x00000006,0x0000080e,0x000007cf,0x00050083,0x00000006,0x0000080f, + 0x00000155,0x0000080e,0x00050085,0x00000006,0x00000810,0x0000080d,0x0000080f,0x0003003e, + 0x0000080a,0x00000810,0x00050041,0x00000007,0x00000811,0x00000135,0x000003db,0x0004003d, + 0x00000006,0x00000812,0x00000811,0x0004003d,0x00000006,0x00000813,0x0000080a,0x00050083, + 0x00000006,0x00000814,0x00000812,0x00000813,0x0003003e,0x00000815,0x00000154,0x0003003e, + 0x00000816,0x00000814,0x00060039,0x00000006,0x00000817,0x0000003f,0x00000815,0x00000816, + 0x00050041,0x00000007,0x00000818,0x00000135,0x000003db,0x0003003e,0x00000818,0x00000817, + 0x00050041,0x0000001b,0x0000081a,0x00000134,0x0000023e,0x0004003d,0x0000001a,0x0000081b, + 0x0000081a,0x00050041,0x0000001b,0x0000081c,0x00000134,0x0000019d,0x0004003d,0x0000001a, + 0x0000081d,0x0000081c,0x00050083,0x0000001a,0x0000081e,0x0000081b,0x0000081d,0x0003003e, + 0x00000819,0x0000081e,0x0004003d,0x0000001a,0x00000820,0x00000819,0x0003003e,0x0000081f, + 0x00000820,0x00050039,0x000000a7,0x00000821,0x000000c3,0x0000081f,0x000500a4,0x000000a7, + 0x00000823,0x00000821,0x00000822,0x000600a9,0x00000006,0x00000824,0x00000823,0x00000155, + 0x00000154,0x00050041,0x00000007,0x00000825,0x00000135,0x000003db,0x0004003d,0x00000006, + 0x00000826,0x00000825,0x00050085,0x00000006,0x00000827,0x00000826,0x00000824,0x00050041, + 0x00000007,0x00000828,0x00000135,0x000003db,0x0003003e,0x00000828,0x00000827,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x0000013a,0x00000000,0x0000010b,0x00030037,0x00000100, + 0x00000138,0x00030037,0x00000102,0x00000139,0x000200f8,0x0000013b,0x0004003b,0x00000007, + 0x00000829,0x00000007,0x0004003b,0x00000007,0x00000830,0x00000007,0x0004003b,0x00000007, + 0x00000831,0x00000007,0x0004003b,0x00000007,0x00000833,0x00000007,0x0004003b,0x00000007, + 0x00000835,0x00000007,0x0004003b,0x00000007,0x00000837,0x00000007,0x0004003b,0x00000007, + 0x00000838,0x00000007,0x0004003b,0x00000007,0x0000083a,0x00000007,0x0004003b,0x00000007, + 0x0000083c,0x00000007,0x00050051,0x00000006,0x0000082a,0x00000138,0x0000000a,0x0003003e, + 0x00000829,0x0000082a,0x00050051,0x00000006,0x0000082c,0x00000138,0x00000006,0x00040039, + 0x00000006,0x0000082d,0x0000006b,0x00050085,0x00000006,0x0000082e,0x0000082c,0x0000082d, + 0x00050088,0x00000006,0x0000082f,0x0000082e,0x000002b1,0x0003003e,0x00000830,0x00000154, + 0x0003003e,0x00000831,0x0000082f,0x00060039,0x00000006,0x00000832,0x0000003f,0x00000830, + 0x00000831,0x0003003e,0x00000833,0x00000832,0x00050039,0x00000006,0x00000834,0x00000018, + 0x00000833,0x0004003d,0x00000006,0x00000836,0x00000829,0x0003003e,0x00000835,0x00000836, + 0x0003003e,0x00000837,0x0000082b,0x0003003e,0x00000838,0x00000834,0x00070039,0x00000006, + 0x00000839,0x0000000c,0x00000835,0x00000837,0x00000838,0x0004003d,0x00000006,0x0000083b, + 0x00000829,0x0003003e,0x0000083a,0x0000083b,0x0003003e,0x0000083c,0x00000839,0x00060039, + 0x00000006,0x0000083d,0x00000023,0x0000083a,0x0000083c,0x0003003e,0x00000829,0x0000083d, + 0x0004003d,0x00000006,0x0000083e,0x00000829,0x00050041,0x00000007,0x0000083f,0x00000139, + 0x0000019d,0x0003003e,0x0000083f,0x0000083e,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000140,0x00000000,0x0000013c,0x00030037,0x0000006d,0x0000013d,0x00030037,0x00000122, + 0x0000013e,0x00030037,0x00000102,0x0000013f,0x000200f8,0x00000141,0x0004003b,0x0000001b, + 0x00000842,0x00000007,0x0004003b,0x0000001b,0x00000855,0x00000007,0x0004003b,0x0000006d, + 0x00000858,0x00000007,0x0004003b,0x0000006d,0x00000859,0x00000007,0x0004003b,0x0000006d, + 0x0000085c,0x00000007,0x0004003b,0x0000001b,0x0000085e,0x00000007,0x0004003b,0x0000001b, + 0x00000862,0x00000007,0x0004003b,0x00000122,0x00000867,0x00000007,0x0004003b,0x0000001b, + 0x0000086b,0x00000007,0x0004003b,0x0000001b,0x0000086e,0x00000007,0x0004003b,0x0000006d, + 0x00000870,0x00000007,0x0004003b,0x0000006d,0x00000871,0x00000007,0x0004003b,0x0000001b, + 0x00000873,0x00000007,0x0004003b,0x0000001b,0x00000877,0x00000007,0x0004003b,0x0000001b, + 0x0000087c,0x00000007,0x0004003b,0x0000006d,0x0000087f,0x00000007,0x0004003b,0x0000006d, + 0x00000880,0x00000007,0x0004003b,0x0000001b,0x00000882,0x00000007,0x0004003b,0x00000030, + 0x00000890,0x00000007,0x0004003b,0x0000001b,0x00000891,0x00000007,0x0004003b,0x00000007, + 0x00000895,0x00000007,0x0004003b,0x00000007,0x0000089a,0x00000007,0x0004003b,0x00000007, + 0x0000089f,0x00000007,0x0004003b,0x00000007,0x000008a4,0x00000007,0x0004003d,0x00000055, + 0x00000840,0x0000013d,0x00050041,0x0000006d,0x00000841,0x0000013e,0x00000197,0x0003003e, + 0x00000841,0x00000840,0x0004003d,0x00000055,0x00000843,0x0000013d,0x0004006f,0x0000001a, + 0x00000844,0x00000843,0x00050050,0x0000001a,0x00000845,0x000002b1,0x000002b1,0x00050081, + 0x0000001a,0x00000846,0x00000844,0x00000845,0x00040039,0x00000055,0x00000847,0x0000005b, + 0x0004006f,0x0000001a,0x00000848,0x00000847,0x00050088,0x0000001a,0x00000849,0x00000846, + 0x00000848,0x0003003e,0x00000842,0x00000849,0x0004003d,0x0000001a,0x0000084a,0x00000842, + 0x00050041,0x0000001b,0x0000084b,0x0000013e,0x0000023e,0x0003003e,0x0000084b,0x0000084a, + 0x0004003d,0x0000001a,0x0000084c,0x00000842,0x00040039,0x0000001a,0x0000084d,0x00000060, + 0x00040039,0x00000055,0x0000084e,0x00000057,0x0004006f,0x0000001a,0x0000084f,0x0000084e, + 0x00050088,0x0000001a,0x00000850,0x0000084d,0x0000084f,0x00050081,0x0000001a,0x00000851, + 0x0000084c,0x00000850,0x00050041,0x0000001b,0x00000852,0x0000013e,0x000001a2,0x0003003e, + 0x00000852,0x00000851,0x00040039,0x00000055,0x00000853,0x00000057,0x00040039,0x00000055, + 0x00000854,0x00000059,0x00050041,0x0000001b,0x00000856,0x0000013e,0x000001a2,0x0004003d, + 0x0000001a,0x00000857,0x00000856,0x0003003e,0x00000855,0x00000857,0x0003003e,0x00000858, + 0x00000853,0x0003003e,0x00000859,0x00000854,0x00070039,0x0000001a,0x0000085a,0x000000cf, + 0x00000855,0x00000858,0x00000859,0x00050041,0x0000001b,0x0000085b,0x0000013e,0x000001a7, + 0x0003003e,0x0000085b,0x0000085a,0x0004003d,0x00000055,0x0000085d,0x0000013d,0x0003003e, + 0x0000085c,0x0000085d,0x0004003d,0x0000001a,0x0000085f,0x00000842,0x0003003e,0x0000085e, + 0x0000085f,0x00060039,0x0000001a,0x00000860,0x00000120,0x0000085c,0x0000085e,0x00050041, + 0x0000001b,0x00000861,0x0000013e,0x0000019d,0x0003003e,0x00000861,0x00000860,0x00050041, + 0x0000001b,0x00000863,0x0000013e,0x0000019d,0x0004003d,0x0000001a,0x00000864,0x00000863, + 0x0003003e,0x00000862,0x00000864,0x00050039,0x00000006,0x00000865,0x0000009d,0x00000862, + 0x00050041,0x00000007,0x00000866,0x0000013e,0x000003dc,0x0003003e,0x00000866,0x00000865, + 0x0004003d,0x00000100,0x00000868,0x0000013e,0x0003003e,0x00000867,0x00000868,0x00050039, + 0x00000002,0x00000869,0x00000125,0x00000867,0x0004003d,0x00000100,0x0000086a,0x00000867, + 0x0003003e,0x0000013e,0x0000086a,0x00040039,0x00000055,0x0000086c,0x00000057,0x00040039, + 0x00000055,0x0000086d,0x00000059,0x0004003d,0x0000001a,0x0000086f,0x00000842,0x0003003e, + 0x0000086e,0x0000086f,0x0003003e,0x00000870,0x0000086c,0x0003003e,0x00000871,0x0000086d, + 0x00070039,0x0000001a,0x00000872,0x000000cf,0x0000086e,0x00000870,0x00000871,0x0003003e, + 0x0000086b,0x00000872,0x0004003d,0x0000001a,0x00000874,0x0000086b,0x0003003e,0x00000873, + 0x00000874,0x00050039,0x00000006,0x00000875,0x00000087,0x00000873,0x00050041,0x00000007, + 0x00000876,0x0000013e,0x000003f0,0x0003003e,0x00000876,0x00000875,0x00040039,0x00000055, + 0x00000878,0x00000057,0x00050050,0x00000055,0x00000879,0x000001a2,0x000001a2,0x00050087, + 0x00000055,0x0000087a,0x00000878,0x00000879,0x00040039,0x00000055,0x0000087b,0x00000080, + 0x00050041,0x0000001b,0x0000087d,0x0000013e,0x000001a2,0x0004003d,0x0000001a,0x0000087e, + 0x0000087d,0x0003003e,0x0000087c,0x0000087e,0x0003003e,0x0000087f,0x0000087a,0x0003003e, + 0x00000880,0x0000087b,0x00070039,0x0000001a,0x00000881,0x000000cf,0x0000087c,0x0000087f, + 0x00000880,0x0003003e,0x00000877,0x00000881,0x0004003d,0x0000001a,0x00000883,0x00000877, + 0x0003003e,0x00000882,0x00000883,0x00050039,0x00000006,0x00000884,0x00000084,0x00000882, + 0x00050041,0x00000007,0x00000885,0x0000013e,0x00000402,0x0003003e,0x00000885,0x00000884, + 0x00050041,0x000000a8,0x00000886,0x0000013e,0x000001b7,0x0004003d,0x000000a7,0x00000887, + 0x00000886,0x000500a4,0x000000a7,0x00000888,0x00000887,0x000007c8,0x000400a8,0x000000a7, + 0x00000889,0x00000888,0x000300f7,0x0000088b,0x00000000,0x000400fa,0x00000889,0x0000088a, + 0x0000088b,0x000200f8,0x0000088a,0x00040039,0x00000006,0x0000088c,0x00000069,0x000500b4, + 0x000000a7,0x0000088d,0x00000154,0x0000088c,0x000200f9,0x0000088b,0x000200f8,0x0000088b, + 0x000700f5,0x000000a7,0x0000088e,0x00000888,0x00000141,0x0000088d,0x0000088a,0x00050041, + 0x000000a8,0x0000088f,0x0000013e,0x00000403,0x0003003e,0x0000088f,0x0000088e,0x00050041, + 0x0000001b,0x00000892,0x0000013e,0x000001a7,0x0004003d,0x0000001a,0x00000893,0x00000892, + 0x0003003e,0x00000891,0x00000893,0x00050039,0x0000002f,0x00000894,0x0000009a,0x00000891, + 0x0003003e,0x00000890,0x00000894,0x00050041,0x00000007,0x00000896,0x00000890,0x000001fa, + 0x0004003d,0x00000006,0x00000897,0x00000896,0x0003003e,0x00000895,0x00000897,0x00050039, + 0x00000006,0x00000898,0x00000018,0x00000895,0x00050041,0x00000007,0x00000899,0x0000013e, + 0x000003ee,0x0003003e,0x00000899,0x00000898,0x00050041,0x00000007,0x0000089b,0x00000890, + 0x00000293,0x0004003d,0x00000006,0x0000089c,0x0000089b,0x0003003e,0x0000089a,0x0000089c, + 0x00050039,0x00000006,0x0000089d,0x00000018,0x0000089a,0x00050041,0x00000007,0x0000089e, + 0x0000013e,0x000001ac,0x0003003e,0x0000089e,0x0000089d,0x00050041,0x00000007,0x000008a0, + 0x00000890,0x00000297,0x0004003d,0x00000006,0x000008a1,0x000008a0,0x0003003e,0x0000089f, + 0x000008a1,0x00050039,0x00000006,0x000008a2,0x00000018,0x0000089f,0x00050041,0x00000007, + 0x000008a3,0x0000013e,0x000003ef,0x0003003e,0x000008a3,0x000008a2,0x00050041,0x00000007, + 0x000008a5,0x00000890,0x00000716,0x0004003d,0x00000006,0x000008a6,0x000008a5,0x0003003e, + 0x000008a4,0x000008a6,0x00050039,0x00000006,0x000008a7,0x00000018,0x000008a4,0x00050041, + 0x00000007,0x000008a8,0x0000013e,0x000001b2,0x0003003e,0x000008a8,0x000008a7,0x00050041, + 0x00000007,0x000008a9,0x0000013e,0x000001b2,0x0004003d,0x00000006,0x000008aa,0x000008a9, + 0x00050085,0x00000006,0x000008ac,0x000008aa,0x000008ab,0x0006000c,0x00000006,0x000008ad, + 0x00000001,0x00000001,0x000008ac,0x000500ba,0x000000a7,0x000008ae,0x000008ad,0x00000155, + 0x000600a9,0x00000006,0x000008af,0x000008ae,0x00000155,0x00000154,0x00050041,0x00000007, + 0x000008b0,0x0000013e,0x000001b2,0x0004003d,0x00000006,0x000008b1,0x000008b0,0x00050085, + 0x00000006,0x000008b2,0x000008b1,0x000008af,0x00050041,0x00000007,0x000008b3,0x0000013e, + 0x000001b2,0x0003003e,0x000008b3,0x000008b2,0x00050041,0x0000000f,0x000008b4,0x0000013f, + 0x0000023e,0x0003003e,0x000008b4,0x00000496,0x00050041,0x0000000f,0x000008b5,0x0000013f, + 0x000001a7,0x0003003e,0x000008b5,0x00000496,0x00050041,0x00000007,0x000008b6,0x0000013f, + 0x0000019d,0x0003003e,0x000008b6,0x00000155,0x00050041,0x00000007,0x000008b7,0x0000013f, + 0x000001a2,0x0003003e,0x000008b7,0x00000154,0x00050041,0x00000007,0x000008b8,0x0000013f, + 0x000003db,0x0003003e,0x000008b8,0x00000154,0x00050041,0x00000007,0x000008b9,0x0000013f, + 0x000003dc,0x0003003e,0x000008b9,0x00000154,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000144,0x00000000,0x00000142,0x00030037,0x0000006d,0x00000143,0x000200f8,0x00000145, + 0x0004003b,0x00000122,0x000008ba,0x00000007,0x0004003b,0x00000102,0x000008bb,0x00000007, + 0x0004003b,0x0000006d,0x000008bc,0x00000007,0x0004003b,0x00000122,0x000008be,0x00000007, + 0x0004003b,0x00000102,0x000008c0,0x00000007,0x0004003b,0x00000102,0x000008d0,0x00000007, + 0x0004003b,0x00000122,0x000008d4,0x00000007,0x0004003b,0x00000102,0x000008d6,0x00000007, + 0x0004003b,0x00000102,0x000008db,0x00000007,0x0004003b,0x00000102,0x000008e0,0x00000007, + 0x0004003b,0x00000102,0x000008e5,0x00000007,0x0004003b,0x00000102,0x000008ea,0x00000007, + 0x0004003b,0x0000000f,0x000008f4,0x00000007,0x0004003b,0x0000000f,0x000008f7,0x00000007, + 0x0004003b,0x0000006d,0x00000902,0x00000007,0x0004003b,0x00000030,0x00000904,0x00000007, + 0x0004003b,0x0000006d,0x00000906,0x00000007,0x0004003b,0x0000000f,0x00000908,0x00000007, + 0x0004003b,0x0000006d,0x0000090c,0x00000007,0x0004003b,0x00000007,0x0000090e,0x00000007, + 0x0004003d,0x00000055,0x000008bd,0x00000143,0x0003003e,0x000008bc,0x000008bd,0x0004003d, + 0x00000100,0x000008bf,0x000008ba,0x0003003e,0x000008be,0x000008bf,0x0004003d,0x00000101, + 0x000008c1,0x000008bb,0x0003003e,0x000008c0,0x000008c1,0x00070039,0x00000002,0x000008c2, + 0x00000140,0x000008bc,0x000008be,0x000008c0,0x0004003d,0x00000100,0x000008c3,0x000008be, + 0x0003003e,0x000008ba,0x000008c3,0x0004003d,0x00000101,0x000008c4,0x000008c0,0x0003003e, + 0x000008bb,0x000008c4,0x00050041,0x000000a8,0x000008c5,0x000008ba,0x000001b7,0x0004003d, + 0x000000a7,0x000008c6,0x000008c5,0x000300f7,0x000008c8,0x00000000,0x000400fa,0x000008c6, + 0x000008c7,0x000008c8,0x000200f8,0x000008c7,0x00050041,0x000000a8,0x000008c9,0x000008ba, + 0x00000403,0x0004003d,0x000000a7,0x000008ca,0x000008c9,0x000400a8,0x000000a7,0x000008cb, + 0x000008ca,0x000200f9,0x000008c8,0x000200f8,0x000008c8,0x000700f5,0x000000a7,0x000008cc, + 0x000008c6,0x00000145,0x000008cb,0x000008c7,0x000300f7,0x000008ce,0x00000000,0x000400fa, + 0x000008cc,0x000008cd,0x000008ce,0x000200f8,0x000008cd,0x0004003d,0x00000100,0x000008cf, + 0x000008ba,0x0004003d,0x00000101,0x000008d1,0x000008bb,0x0003003e,0x000008d0,0x000008d1, + 0x00060039,0x00000002,0x000008d2,0x00000129,0x000008cf,0x000008d0,0x0004003d,0x00000101, + 0x000008d3,0x000008d0,0x0003003e,0x000008bb,0x000008d3,0x000200f9,0x000008ce,0x000200f8, + 0x000008ce,0x0004003d,0x00000100,0x000008d5,0x000008ba,0x0003003e,0x000008d4,0x000008d5, + 0x0004003d,0x00000101,0x000008d7,0x000008bb,0x0003003e,0x000008d6,0x000008d7,0x00060039, + 0x00000002,0x000008d8,0x00000136,0x000008d4,0x000008d6,0x0004003d,0x00000101,0x000008d9, + 0x000008d6,0x0003003e,0x000008bb,0x000008d9,0x0004003d,0x00000100,0x000008da,0x000008ba, + 0x0004003d,0x00000101,0x000008dc,0x000008bb,0x0003003e,0x000008db,0x000008dc,0x00060039, + 0x00000002,0x000008dd,0x0000013a,0x000008da,0x000008db,0x0004003d,0x00000101,0x000008de, + 0x000008db,0x0003003e,0x000008bb,0x000008de,0x0004003d,0x00000100,0x000008df,0x000008ba, + 0x0004003d,0x00000101,0x000008e1,0x000008bb,0x0003003e,0x000008e0,0x000008e1,0x00060039, + 0x00000002,0x000008e2,0x0000010e,0x000008df,0x000008e0,0x0004003d,0x00000101,0x000008e3, + 0x000008e0,0x0003003e,0x000008bb,0x000008e3,0x0004003d,0x00000100,0x000008e4,0x000008ba, + 0x0004003d,0x00000101,0x000008e6,0x000008bb,0x0003003e,0x000008e5,0x000008e6,0x00060039, + 0x00000002,0x000008e7,0x00000131,0x000008e4,0x000008e5,0x0004003d,0x00000101,0x000008e8, + 0x000008e5,0x0003003e,0x000008bb,0x000008e8,0x0004003d,0x00000100,0x000008e9,0x000008ba, + 0x0004003d,0x00000101,0x000008eb,0x000008bb,0x0003003e,0x000008ea,0x000008eb,0x00060039, + 0x00000002,0x000008ec,0x0000012d,0x000008e9,0x000008ea,0x0004003d,0x00000101,0x000008ed, + 0x000008ea,0x0003003e,0x000008bb,0x000008ed,0x00040039,0x00000006,0x000008ee,0x00000096, + 0x00050041,0x0000000f,0x000008ef,0x000008bb,0x000001a7,0x0004003d,0x0000000e,0x000008f0, + 0x000008ef,0x00060050,0x0000000e,0x000008f1,0x000008ee,0x000008ee,0x000008ee,0x00050088, + 0x0000000e,0x000008f2,0x000008f0,0x000008f1,0x00050041,0x0000000f,0x000008f3,0x000008bb, + 0x000001a7,0x0003003e,0x000008f3,0x000008f2,0x00050041,0x0000000f,0x000008f5,0x000008bb, + 0x000001a7,0x0004003d,0x0000000e,0x000008f6,0x000008f5,0x0003003e,0x000008f4,0x000008f6, + 0x0003003e,0x000008f7,0x00000496,0x00060039,0x0000000e,0x000008f8,0x00000047,0x000008f4, + 0x000008f7,0x00050041,0x0000000f,0x000008f9,0x000008bb,0x000001a7,0x0003003e,0x000008f9, + 0x000008f8,0x00050041,0x0000000f,0x000008fa,0x000008bb,0x000001a7,0x0004003d,0x0000000e, + 0x000008fb,0x000008fa,0x00050041,0x00000007,0x000008fc,0x000008bb,0x000003db,0x0004003d, + 0x00000006,0x000008fd,0x000008fc,0x00050051,0x00000006,0x000008fe,0x000008fb,0x00000000, + 0x00050051,0x00000006,0x000008ff,0x000008fb,0x00000001,0x00050051,0x00000006,0x00000900, + 0x000008fb,0x00000002,0x00070050,0x0000002f,0x00000901,0x000008fe,0x000008ff,0x00000900, + 0x000008fd,0x0004003d,0x00000055,0x00000903,0x00000143,0x0003003e,0x00000902,0x00000903, + 0x0003003e,0x00000904,0x00000901,0x00060039,0x00000002,0x00000905,0x00000079,0x00000902, + 0x00000904,0x0004003d,0x00000055,0x00000907,0x00000143,0x0003003e,0x00000906,0x00000907, + 0x00050041,0x0000000f,0x00000909,0x000008bb,0x000001a7,0x0004003d,0x0000000e,0x0000090a, + 0x00000909,0x0003003e,0x00000908,0x0000090a,0x00060039,0x00000002,0x0000090b,0x0000007e, + 0x00000906,0x00000908,0x0004003d,0x00000055,0x0000090d,0x00000143,0x0003003e,0x0000090c, + 0x0000090d,0x0003003e,0x0000090e,0x00000154,0x00060039,0x00000002,0x0000090f,0x00000090, + 0x0000090c,0x0000090e,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h b/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h new file mode 100644 index 000000000..9170ff3c1 --- /dev/null +++ b/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h @@ -0,0 +1,1980 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_ACCUMULATE_SHARPEN_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x00000912,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x000008fd,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001, + 0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265, + 0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47, + 0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63, + 0x00736570,0x000a0004,0x455f4c47,0x735f5458,0x65646168,0x6d695f72,0x5f656761,0x64616f6c, + 0x726f665f,0x7474616d,0x00006465,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70, + 0x5f656c79,0x656e696c,0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f, + 0x6e695f45,0x64756c63,0x69645f65,0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d, + 0x00000000,0x00070005,0x0000000c,0x4c786666,0x28707265,0x663b3166,0x31663b31,0x0000003b, + 0x00030005,0x00000009,0x00000078,0x00030005,0x0000000a,0x00000079,0x00030005,0x0000000b, + 0x00000074,0x00070005,0x00000014,0x4c786666,0x28707265,0x3b336676,0x3b336676,0x003b3166, + 0x00030005,0x00000011,0x00000078,0x00030005,0x00000012,0x00000079,0x00030005,0x00000013, + 0x00000074,0x00060005,0x00000018,0x53786666,0x72757461,0x28657461,0x003b3166,0x00030005, + 0x00000017,0x00000078,0x00060005,0x0000001e,0x46786666,0x74636172,0x32667628,0x0000003b, + 0x00030005,0x0000001d,0x00000078,0x00060005,0x00000023,0x4d786666,0x66286e69,0x31663b31, + 0x0000003b,0x00030005,0x00000021,0x00000078,0x00030005,0x00000022,0x00000079,0x00060005, + 0x00000028,0x4d786666,0x76286e69,0x763b3266,0x003b3266,0x00030005,0x00000026,0x00000078, + 0x00030005,0x00000027,0x00000079,0x00060005,0x0000002d,0x4d786666,0x76286e69,0x763b3366, + 0x003b3366,0x00030005,0x0000002b,0x00000078,0x00030005,0x0000002c,0x00000079,0x00060005, + 0x00000034,0x4d786666,0x76286e69,0x763b3466,0x003b3466,0x00030005,0x00000032,0x00000078, + 0x00030005,0x00000033,0x00000079,0x00060005,0x0000003b,0x4d786666,0x69286e69,0x31693b31, + 0x0000003b,0x00030005,0x00000039,0x00000078,0x00030005,0x0000003a,0x00000079,0x00060005, + 0x0000003f,0x4d786666,0x66287861,0x31663b31,0x0000003b,0x00030005,0x0000003d,0x00000078, + 0x00030005,0x0000003e,0x00000079,0x00060005,0x00000043,0x4d786666,0x76287861,0x763b3266, + 0x003b3266,0x00030005,0x00000041,0x00000078,0x00030005,0x00000042,0x00000079,0x00060005, + 0x00000047,0x4d786666,0x76287861,0x763b3366,0x003b3366,0x00030005,0x00000045,0x00000078, + 0x00030005,0x00000046,0x00000079,0x00060005,0x0000004b,0x4d786666,0x76287861,0x763b3466, + 0x003b3466,0x00030005,0x00000049,0x00000078,0x00030005,0x0000004a,0x00000079,0x00060005, + 0x0000004f,0x4d786666,0x69287861,0x31693b31,0x0000003b,0x00030005,0x0000004d,0x00000078, + 0x00030005,0x0000004e,0x00000079,0x00060005,0x00000053,0x50786666,0x6628776f,0x31663b31, + 0x0000003b,0x00030005,0x00000051,0x00000078,0x00030005,0x00000052,0x00000079,0x00050005, + 0x00000057,0x646e6552,0x69537265,0x0028657a,0x00060005,0x00000059,0x5278614d,0x65646e65, + 0x7a695372,0x00002865,0x00060005,0x0000005b,0x63737055,0x53656c61,0x28657a69,0x00000000, + 0x00090005,0x0000005d,0x76657250,0x73756f69,0x6d617246,0x73705565,0x656c6163,0x657a6953, + 0x00000028,0x00040005,0x00000060,0x7474694a,0x00287265,0x00070005,0x00000062,0x6e776f44, + 0x6c616373,0x63614665,0x28726f74,0x00000000,0x00080005,0x00000065,0x7474694a,0x65537265, + 0x6e657571,0x654c6563,0x6874676e,0x00000028,0x00070005,0x00000067,0x746c6544,0x65725061, + 0x6f707845,0x65727573,0x00000028,0x00050005,0x00000069,0x6d617246,0x646e4965,0x00287865, + 0x00060005,0x0000006b,0x6f6c6556,0x79746963,0x74636146,0x0028726f,0x00070005,0x00000070, + 0x64616f4c,0x75706e49,0x6c6f4374,0x7628726f,0x003b3269,0x00040005,0x0000006f,0x50785069, + 0x0000736f,0x00070005,0x00000074,0x64616f4c,0x74736948,0x2879726f,0x3b326976,0x00000000, + 0x00050005,0x00000073,0x48785069,0x6f747369,0x00007972,0x000c0005,0x00000079,0x726f7453, + 0x746e4965,0x616e7265,0x6c6f436c,0x6e41726f,0x69655764,0x28746867,0x3b326976,0x3b346676, + 0x00000000,0x00040005,0x00000077,0x50785069,0x0000736f,0x00060005,0x00000078,0x6c6f4366, + 0x6e41726f,0x69655764,0x00746867,0x000c0005,0x0000007b,0x46746547,0x68747261,0x44747365, + 0x68747065,0x3170694d,0x6f736552,0x65637275,0x656d6944,0x6f69736e,0x0028736e,0x000a0005, + 0x0000007f,0x706d6153,0x6146656c,0x65687472,0x65447473,0x4d687470,0x28317069,0x3b326676, + 0x00000000,0x00030005,0x0000007e,0x00565566,0x00090005,0x00000082,0x706d6153,0x754c656c, + 0x6e49616d,0x62617473,0x74696c69,0x66762879,0x00003b32,0x00030005,0x00000081,0x00007675, + 0x00070005,0x00000086,0x64616f4c,0x654e7752,0x636f4c77,0x7628736b,0x003b3269,0x00040005, + 0x00000085,0x50785069,0x0000736f,0x00080005,0x0000008b,0x726f7453,0x77654e65,0x6b636f4c, + 0x69762873,0x31663b32,0x0000003b,0x00040005,0x00000089,0x50785069,0x0000736f,0x00040005, + 0x0000008a,0x4c77656e,0x006b636f,0x000a0005,0x0000008f,0x64616f4c,0x616c6944,0x4d646574, + 0x6f69746f,0x6365566e,0x28726f74,0x3b326976,0x00000000,0x00050005,0x0000008e,0x49785069, + 0x7475706e,0x00000000,0x00050005,0x00000091,0x6f707845,0x65727573,0x00000028,0x000a0005, + 0x00000095,0x706d6153,0x6944656c,0x6574616c,0x61655264,0x76697463,0x73614d65,0x7628736b, + 0x003b3266,0x00030005,0x00000094,0x00565566,0x00070005,0x00000098,0x34746547,0x6c65564b, + 0x7469636f,0x66762879,0x00003b32,0x00060005,0x00000097,0x746f4d66,0x566e6f69,0x6f746365, + 0x00000072,0x00070005,0x0000009a,0x74636552,0x63696669,0x6f697461,0x786f426e,0x00000000, + 0x00060006,0x0000009a,0x00000000,0x43786f62,0x65746e65,0x00000072,0x00050006,0x0000009a, + 0x00000001,0x56786f62,0x00006365,0x00050006,0x0000009a,0x00000002,0x62626161,0x006e694d, + 0x00050006,0x0000009a,0x00000003,0x62626161,0x0078614d,0x00080006,0x0000009a,0x00000004, + 0x786f4266,0x746e6543,0x65577265,0x74686769,0x00000000,0x00180005,0x000000a0,0x74636552, + 0x63696669,0x6f697461,0x786f426e,0x49646441,0x6974696e,0x61536c61,0x656c706d,0x72747328, + 0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d, + 0x3366762d,0x3131662d,0x3366763b,0x3b31663b,0x00000000,0x00070005,0x0000009d,0x74636572, + 0x63696669,0x6f697461,0x786f426e,0x00000000,0x00050005,0x0000009e,0x6f6c6f63,0x6d615372, + 0x00656c70,0x00060005,0x0000009f,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00170005, + 0x000000a9,0x74636552,0x63696669,0x6f697461,0x786f426e,0x53646441,0x6c706d61,0x31622865, + 0x7274733b,0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d, + 0x3366762d,0x3366762d,0x3131662d,0x3366763b,0x3b31663b,0x00000000,0x00060005,0x000000a5, + 0x696e4962,0x6c616974,0x706d6153,0x0000656c,0x00070005,0x000000a6,0x74636572,0x63696669, + 0x6f697461,0x786f426e,0x00000000,0x00050005,0x000000a7,0x6f6c6f63,0x6d615372,0x00656c70, + 0x00060005,0x000000a8,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00170005,0x000000ad, + 0x74636552,0x63696669,0x6f697461,0x786f426e,0x706d6f43,0x56657475,0x61697261,0x4265636e, + 0x6144786f,0x73286174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, + 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x003b3131,0x00070005,0x000000ac,0x74636572, + 0x63696669,0x6f697461,0x786f426e,0x00000000,0x00060005,0x000000b1,0x436f4359,0x526f5467, + 0x76284247,0x003b3366,0x00040005,0x000000b0,0x6f435966,0x00006743,0x00060005,0x000000b4, + 0x54424752,0x6f43596f,0x76286743,0x003b3366,0x00040005,0x000000b3,0x62675266,0x00000000, + 0x00060005,0x000000b7,0x656e6f54,0x2870616d,0x3b336676,0x00000000,0x00040005,0x000000b6, + 0x62675266,0x00000000,0x00070005,0x000000ba,0x65766e49,0x54657372,0x6d656e6f,0x76287061, + 0x003b3366,0x00040005,0x000000b9,0x62675266,0x00000000,0x00060005,0x000000be,0x76557349, + 0x69736e49,0x76286564,0x003b3266,0x00030005,0x000000bd,0x00765566,0x00080005,0x000000c4, + 0x6d616c43,0x616f4c70,0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005,0x000000c1, + 0x53785069,0x6c706d61,0x00000065,0x00050005,0x000000c2,0x4f785069,0x65736666,0x00000074, + 0x00060005,0x000000c3,0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005,0x000000ca, + 0x6d616c43,0x28765570,0x3b326676,0x3b326976,0x3b326976,0x00000000,0x00030005,0x000000c7, + 0x00765566,0x00060005,0x000000c8,0x78655469,0x65727574,0x657a6953,0x00000000,0x00060005, + 0x000000c9,0x73655269,0x6372756f,0x7a695365,0x00000065,0x00070005,0x000000cf,0x6e4f7349, + 0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005,0x000000cd,0x00736f70,0x00040005, + 0x000000ce,0x657a6973,0x00000000,0x00070005,0x000000d2,0x636e614c,0x32736f7a,0x6c436f4e, + 0x28706d61,0x003b3166,0x00030005,0x000000d1,0x00000078,0x00060005,0x000000d5,0x636e614c, + 0x32736f7a,0x3b316628,0x00000000,0x00030005,0x000000d4,0x00000078,0x00090005,0x000000d8, + 0x636e614c,0x32736f7a,0x72707041,0x7153786f,0x6c436f4e,0x28706d61,0x003b3166,0x00030005, + 0x000000d7,0x00003278,0x00080005,0x000000db,0x636e614c,0x32736f7a,0x72707041,0x7153786f, + 0x3b316628,0x00000000,0x00030005,0x000000da,0x00003278,0x000a0005,0x000000e3,0x636e614c, + 0x32736f7a,0x34667628,0x3466763b,0x3466763b,0x3466763b,0x3b31663b,0x00000000,0x00040005, + 0x000000de,0x6c6f4366,0x0030726f,0x00040005,0x000000df,0x6c6f4366,0x0031726f,0x00040005, + 0x000000e0,0x6c6f4366,0x0032726f,0x00040005,0x000000e1,0x6c6f4366,0x0033726f,0x00030005, + 0x000000e2,0x00000074,0x00080005,0x000000e5,0x63746546,0x42646568,0x62756369,0x61536369, + 0x656c706d,0x00000073,0x00060006,0x000000e5,0x00000000,0x6c6f4366,0x3030726f,0x00000000, + 0x00060006,0x000000e5,0x00000001,0x6c6f4366,0x3031726f,0x00000000,0x00060006,0x000000e5, + 0x00000002,0x6c6f4366,0x3032726f,0x00000000,0x00060006,0x000000e5,0x00000003,0x6c6f4366, + 0x3033726f,0x00000000,0x00060006,0x000000e5,0x00000004,0x6c6f4366,0x3130726f,0x00000000, + 0x00060006,0x000000e5,0x00000005,0x6c6f4366,0x3131726f,0x00000000,0x00060006,0x000000e5, + 0x00000006,0x6c6f4366,0x3132726f,0x00000000,0x00060006,0x000000e5,0x00000007,0x6c6f4366, + 0x3133726f,0x00000000,0x00060006,0x000000e5,0x00000008,0x6c6f4366,0x3230726f,0x00000000, + 0x00060006,0x000000e5,0x00000009,0x6c6f4366,0x3231726f,0x00000000,0x00060006,0x000000e5, + 0x0000000a,0x6c6f4366,0x3232726f,0x00000000,0x00060006,0x000000e5,0x0000000b,0x6c6f4366, + 0x3233726f,0x00000000,0x00060006,0x000000e5,0x0000000c,0x6c6f4366,0x3330726f,0x00000000, + 0x00060006,0x000000e5,0x0000000d,0x6c6f4366,0x3331726f,0x00000000,0x00060006,0x000000e5, + 0x0000000e,0x6c6f4366,0x3332726f,0x00000000,0x00060006,0x000000e5,0x0000000f,0x6c6f4366, + 0x3333726f,0x00000000,0x001d0005,0x000000ea,0x636e614c,0x32736f7a,0x72747328,0x2d746375, + 0x63746546,0x42646568,0x62756369,0x61536369,0x656c706d,0x66762d73,0x66762d34,0x66762d34, + 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, + 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x763b3134,0x003b3266,0x00040005, + 0x000000e8,0x706d6153,0x0073656c,0x00040005,0x000000e9,0x46785066,0x00636172,0x00080005, + 0x000000ef,0x6d616c43,0x6f6f4370,0x76286472,0x763b3269,0x763b3269,0x003b3269,0x00050005, + 0x000000ec,0x53785069,0x6c706d61,0x00000065,0x00050005,0x000000ed,0x4f785069,0x65736666, + 0x00000074,0x00060005,0x000000ee,0x78655469,0x65727574,0x657a6953,0x00000000,0x00110005, + 0x000000f4,0x69726544,0x6e69676e,0x74732867,0x74637572,0x6365522d,0x69666974,0x69746163, + 0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66763b31,0x00003b33, + 0x00050005,0x000000f2,0x70696c63,0x676e6970,0x00786f42,0x00040005,0x000000f3,0x6c6f4366, + 0x0000726f,0x000b0005,0x000000f9,0x55746547,0x6d617370,0x4c656c70,0x7a636e61,0x6557736f, + 0x74686769,0x32667628,0x3b31663b,0x00000000,0x00070005,0x000000f7,0x63725366,0x706d6153, + 0x664f656c,0x74657366,0x00000000,0x00060005,0x000000f8,0x72654b66,0x576c656e,0x68676965, + 0x00000074,0x000a0005,0x000000fb,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43, + 0x61506e6f,0x736d6172,0x00000000,0x00060006,0x000000fb,0x00000000,0x48785069,0x736f5072, + 0x00000000,0x00050006,0x000000fb,0x00000001,0x55724866,0x00000076,0x00070006,0x000000fb, + 0x00000002,0x55724c66,0x74694a76,0x65726574,0x00000064,0x00070006,0x000000fb,0x00000003, + 0x55724c66,0x77485f76,0x706d6153,0x0072656c,0x00070006,0x000000fb,0x00000004,0x746f4d66, + 0x566e6f69,0x6f746365,0x00000072,0x00080006,0x000000fb,0x00000005,0x70655266,0x656a6f72, + 0x64657463,0x76557248,0x00000000,0x00060006,0x000000fb,0x00000006,0x564b3466,0x636f6c65, + 0x00797469,0x00070006,0x000000fb,0x00000007,0x73694466,0x6c63636f,0x6f697375,0x0000006e, + 0x00070006,0x000000fb,0x00000008,0x61655266,0x76697463,0x73614d65,0x0000006b,0x00070006, + 0x000000fb,0x00000009,0x61685366,0x676e6964,0x6e616843,0x00006567,0x00070006,0x000000fb, + 0x0000000a,0x63634166,0x6c756d75,0x6f697461,0x0000006e,0x00090006,0x000000fb,0x0000000b, + 0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x74636146,0x0000726f,0x00090006,0x000000fb, + 0x0000000c,0x72614666,0x73656874,0x70654474,0x6e496874,0x6574654d,0x00007372,0x00080006, + 0x000000fb,0x0000000d,0x45734962,0x74736978,0x53676e69,0x6c706d61,0x00000065,0x00070006, + 0x000000fb,0x0000000e,0x4e734962,0x61537765,0x656c706d,0x00000000,0x00080005,0x000000fc, + 0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x00000000,0x00060006,0x000000fc, + 0x00000000,0x70696c63,0x676e6970,0x00786f42,0x00070006,0x000000fc,0x00000001,0x73705566, + 0x6c706d61,0x6f436465,0x00726f6c,0x00080006,0x000000fc,0x00000002,0x73705566,0x6c706d61, + 0x65576465,0x74686769,0x00000000,0x00070006,0x000000fc,0x00000003,0x73694866,0x79726f74, + 0x6f6c6f43,0x00000072,0x00070006,0x000000fc,0x00000004,0x73694866,0x79726f74,0x67696557, + 0x00007468,0x00050006,0x000000fc,0x00000005,0x636f4c66,0x0000006b,0x000a0006,0x000000fc, + 0x00000006,0x636f4c66,0x6e6f436b,0x62697274,0x6f697475,0x6968546e,0x61724673,0x0000656d, + 0x00360005,0x00000101,0x706d6f43,0x4d657475,0x654b7861,0x6c656e72,0x67696557,0x73287468, + 0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150, + 0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31, + 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74, + 0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463, + 0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131, + 0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005,0x000000ff, + 0x61726170,0x0000736d,0x00040005,0x00000100,0x61746164,0x00000000,0x00080005,0x00000104, + 0x64616f4c,0x70657250,0x64657261,0x6f6c6f43,0x69762872,0x00003b32,0x00050005,0x00000103, + 0x6d615369,0x50656c70,0x0000736f,0x00380005,0x00000109,0x706d6f43,0x55657475,0x6d617370, + 0x64656c70,0x6f6c6f43,0x646e4172,0x67696557,0x73287468,0x63757274,0x63412d74,0x756d7563, + 0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266, + 0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31, + 0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, + 0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, + 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33, + 0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000107,0x61726170,0x0000736d,0x00040005, + 0x00000108,0x61746164,0x00000000,0x00070005,0x0000010c,0x70617257,0x74736948,0x2879726f, + 0x3b326976,0x00000000,0x00050005,0x0000010b,0x53785069,0x6c706d61,0x00000065,0x000a0005, + 0x00000111,0x63746546,0x73694868,0x79726f74,0x706d6153,0x2873656c,0x3b326976,0x3b326976, + 0x00000000,0x00050005,0x0000010f,0x53785069,0x6c706d61,0x00000065,0x00060005,0x00000110, + 0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005,0x00000116,0x74736948,0x5379726f, + 0x6c706d61,0x66762865,0x69763b32,0x00003b32,0x00050005,0x00000114,0x53765566,0x6c706d61, + 0x00000065,0x00060005,0x00000115,0x78655469,0x65727574,0x657a6953,0x00000000,0x00090005, + 0x0000011b,0x4d746547,0x6f69746f,0x6365566e,0x28726f74,0x3b326976,0x3b326676,0x00000000, + 0x00050005,0x00000119,0x48785069,0x736f5072,0x00000000,0x00040005,0x0000011a,0x55724866, + 0x00000076,0x001e0005,0x00000120,0x706d6f43,0x52657475,0x6f727065,0x7463656a,0x56556465, + 0x74732873,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d, + 0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32, + 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x00003b31,0x00040005, + 0x0000011f,0x61726170,0x0000736d,0x00350005,0x00000124,0x72706552,0x63656a6f,0x73694874, + 0x79726f74,0x6f6c6f43,0x74732872,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e, + 0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32, + 0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31, + 0x74733b31,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x74614473,0x74732d61, + 0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33, + 0x66762d33,0x31662d33,0x66762d31,0x31662d33,0x3366762d,0x2d31662d,0x662d3166,0x003b3131, + 0x00040005,0x00000122,0x61726170,0x0000736d,0x00040005,0x00000123,0x61746164,0x00000000, + 0x00330005,0x00000128,0x75636341,0x616c756d,0x73286574,0x63757274,0x63412d74,0x756d7563, + 0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266, + 0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31, + 0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, + 0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, + 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33, + 0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000126,0x61726170,0x0000736d,0x00040005, + 0x00000127,0x61746164,0x00000000,0x00340005,0x0000012c,0x74636552,0x48796669,0x6f747369, + 0x73287972,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d, + 0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266, + 0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274, + 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74, + 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, + 0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005, + 0x0000012a,0x61726170,0x0000736d,0x00040005,0x0000012b,0x61746164,0x00000000,0x00340005, + 0x00000131,0x61647055,0x6f4c6574,0x74536b63,0x73757461,0x72747328,0x2d746375,0x75636341, + 0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x3269762d,0x3266762d, + 0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, + 0x662d3166,0x31622d31,0x3131622d,0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974, + 0x73736150,0x61746144,0x7274732d,0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e, + 0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366762d,0x2d31662d,0x2d336676, + 0x662d3166,0x31662d31,0x00003b31,0x00040005,0x0000012f,0x61726170,0x0000736d,0x00040005, + 0x00000130,0x61746164,0x00000000,0x00370005,0x00000135,0x706d6f43,0x42657475,0x41657361, + 0x6d756363,0x74616c75,0x576e6f69,0x68676965,0x74732874,0x74637572,0x6363412d,0x6c756d75, + 0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32, + 0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, + 0x622d3166,0x31622d31,0x74733b31,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e, + 0x74614473,0x74732d61,0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78, + 0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66762d31,0x31662d33,0x3366762d,0x2d31662d, + 0x662d3166,0x003b3131,0x00040005,0x00000133,0x61726170,0x0000736d,0x00040005,0x00000134, + 0x61746164,0x00000000,0x00340005,0x0000013b,0x74696e49,0x73736150,0x61746144,0x32697628, + 0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f, + 0x736d6172,0x3269762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x2d31662d, + 0x662d3166,0x31662d31,0x2d31662d,0x662d3166,0x31622d31,0x3131622d,0x7274733b,0x2d746375, + 0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x7274732d,0x2d746375,0x74636552, + 0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d, + 0x3366762d,0x2d31662d,0x2d336676,0x662d3166,0x31662d31,0x00003b31,0x00050005,0x00000138, + 0x48785069,0x736f5072,0x00000000,0x00040005,0x00000139,0x61726170,0x0000736d,0x00040005, + 0x0000013a,0x61746164,0x00000000,0x00060005,0x0000013f,0x75636341,0x616c756d,0x76286574, + 0x003b3269,0x00050005,0x0000013e,0x48785069,0x736f5072,0x00000000,0x00070005,0x0000018f, + 0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x0000018f,0x00000000, + 0x6e655269,0x53726564,0x00657a69,0x000a0006,0x0000018f,0x00000001,0x65725069,0x756f6976, + 0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x0000018f,0x00000002, + 0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x0000018f,0x00000003,0x65725069, + 0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x0000018f, + 0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x0000018f,0x00000005, + 0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x0000018f,0x00000006,0x76654466, + 0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x0000018f,0x00000007,0x74694a66, + 0x00726574,0x00090006,0x0000018f,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d, + 0x72657474,0x00000000,0x00080006,0x0000018f,0x00000009,0x746f4d66,0x566e6f69,0x6f746365, + 0x61635372,0x0000656c,0x00080006,0x0000018f,0x0000000a,0x776f4466,0x6163736e,0x6146656c, + 0x726f7463,0x00000000,0x000b0006,0x0000018f,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365, + 0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x0000018f,0x0000000c, + 0x6e615466,0x666c6148,0x00564f46,0x00090006,0x0000018f,0x0000000d,0x74694a66,0x53726574, + 0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x0000018f,0x0000000e,0x6c654466, + 0x69546174,0x0000656d,0x00080006,0x0000018f,0x0000000f,0x6c654466,0x72506174,0x70784565, + 0x7275736f,0x00000065,0x000a0006,0x0000018f,0x00000010,0x65695666,0x61705377,0x6f546563, + 0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x0000018f,0x00000011,0x61724666, + 0x6e49656d,0x00786564,0x00070006,0x0000018f,0x00000012,0x6c655666,0x7469636f,0x63614679, + 0x00726f74,0x00080006,0x0000018f,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373, + 0x0000656c,0x00080006,0x0000018f,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567, + 0x00656c61,0x000a0006,0x0000018f,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e, + 0x65506465,0x61724672,0x0000656d,0x000b0006,0x0000018f,0x00000016,0x6e694d66,0x6f736944, + 0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x00000191, + 0x53466263,0x70553352,0x6c616373,0x00007265,0x00080005,0x000001c9,0x6e695f72,0x5f747570, + 0x6f6c6f63,0x696a5f72,0x72657474,0x00006465,0x00090005,0x000001d0,0x6e695f72,0x6e726574, + 0x755f6c61,0x61637370,0x5f64656c,0x6f6c6f63,0x00000072,0x00090005,0x000001d8,0x695f7772, + 0x7265746e,0x5f6c616e,0x63737075,0x64656c61,0x6c6f635f,0x0000726f,0x00080005,0x000001dc, + 0x61665f72,0x65687472,0x645f7473,0x68747065,0x70696d5f,0x00000031,0x00060005,0x000001e4, + 0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00070005,0x000001ef,0x756c5f72,0x695f616d, + 0x6174736e,0x696c6962,0x00007974,0x00060005,0x000001fa,0x6e5f7772,0x6c5f7765,0x736b636f, + 0x00000000,0x00090005,0x00000205,0x69645f72,0x6574616c,0x6f6d5f64,0x6e6f6974,0x6365765f, + 0x73726f74,0x00000000,0x00050005,0x0000020c,0x6f707865,0x65727573,0x00000000,0x00070005, + 0x0000020d,0x6e695f72,0x5f747570,0x6f707865,0x65727573,0x00000000,0x00090005,0x00000219, + 0x69645f72,0x6574616c,0x65725f64,0x69746361,0x6d5f6576,0x736b7361,0x00000000,0x00060005, + 0x0000022b,0x67696577,0x64657468,0x706d6153,0x0000656c,0x00040005,0x00000237,0x61726170, + 0x0000006d,0x00040005,0x0000023c,0x61726170,0x0000006d,0x00040005,0x0000023f,0x61726170, + 0x0000006d,0x00040005,0x00000242,0x61726170,0x0000006d,0x00040005,0x00000245,0x61726170, + 0x0000006d,0x00060005,0x00000248,0x67696577,0x64657468,0x706d6153,0x0000656c,0x00040005, + 0x00000274,0x44647473,0x00007665,0x00040005,0x00000281,0x62675266,0x00000000,0x00040005, + 0x0000029d,0x6f435966,0x00006743,0x00040005,0x000002c3,0x61726170,0x0000006d,0x00040005, + 0x000002c4,0x61726170,0x0000006d,0x00040005,0x000002c8,0x61726170,0x0000006d,0x00040005, + 0x000002cb,0x61726170,0x0000006d,0x00040005,0x000002cf,0x61726170,0x0000006d,0x00040005, + 0x000002d0,0x61726170,0x0000006d,0x00040005,0x000002d9,0x61726170,0x0000006d,0x00040005, + 0x000002dc,0x61726170,0x0000006d,0x00040005,0x000002e0,0x61726170,0x0000006d,0x00040005, + 0x000002e3,0x61726170,0x0000006d,0x00040005,0x000002e6,0x61726170,0x0000006d,0x00040005, + 0x000002e7,0x61726170,0x0000006d,0x00040005,0x00000304,0x75736572,0x0000746c,0x00040005, + 0x0000030b,0x61726170,0x0000006d,0x00040005,0x0000030e,0x61726170,0x0000006d,0x00040005, + 0x00000310,0x61726170,0x0000006d,0x00040005,0x00000311,0x61726170,0x0000006d,0x00040005, + 0x00000317,0x61726170,0x0000006d,0x00040005,0x0000031a,0x61726170,0x0000006d,0x00040005, + 0x0000031c,0x61726170,0x0000006d,0x00040005,0x0000031d,0x61726170,0x0000006d,0x00060005, + 0x00000323,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69,0x00070005,0x00000328,0x616c4366, + 0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005,0x0000032d,0x61726170,0x0000006d, + 0x00040005,0x0000032f,0x61726170,0x0000006d,0x00040005,0x00000331,0x61726170,0x0000006d, + 0x00040005,0x00000332,0x61726170,0x0000006d,0x00050005,0x00000334,0x616c4366,0x6465706d, + 0x00007655,0x00040005,0x00000362,0x61726170,0x0000006d,0x00040005,0x00000363,0x61726170, + 0x0000006d,0x00040005,0x00000365,0x61726170,0x0000006d,0x00030005,0x0000036a,0x00000061, + 0x00030005,0x0000036f,0x00000062,0x00040005,0x00000381,0x61726170,0x0000006d,0x00040005, + 0x00000383,0x61726170,0x0000006d,0x00040005,0x00000385,0x61726170,0x0000006d,0x00050005, + 0x0000038a,0x69655766,0x30746867,0x00000000,0x00040005,0x0000038e,0x61726170,0x0000006d, + 0x00050005,0x00000390,0x69655766,0x31746867,0x00000000,0x00040005,0x00000394,0x61726170, + 0x0000006d,0x00050005,0x00000396,0x69655766,0x32746867,0x00000000,0x00040005,0x00000399, + 0x61726170,0x0000006d,0x00050005,0x0000039b,0x69655766,0x33746867,0x00000000,0x00040005, + 0x0000039e,0x61726170,0x0000006d,0x00050005,0x000003ba,0x6c6f4366,0x3058726f,0x00000000, + 0x00040005,0x000003bb,0x61726170,0x0000006d,0x00040005,0x000003be,0x61726170,0x0000006d, + 0x00040005,0x000003c1,0x61726170,0x0000006d,0x00040005,0x000003c4,0x61726170,0x0000006d, + 0x00040005,0x000003c7,0x61726170,0x0000006d,0x00050005,0x000003cb,0x6c6f4366,0x3158726f, + 0x00000000,0x00040005,0x000003ce,0x61726170,0x0000006d,0x00040005,0x000003d1,0x61726170, + 0x0000006d,0x00040005,0x000003d4,0x61726170,0x0000006d,0x00040005,0x000003d7,0x61726170, + 0x0000006d,0x00040005,0x000003da,0x61726170,0x0000006d,0x00050005,0x000003de,0x6c6f4366, + 0x3258726f,0x00000000,0x00040005,0x000003e2,0x61726170,0x0000006d,0x00040005,0x000003e5, + 0x61726170,0x0000006d,0x00040005,0x000003e8,0x61726170,0x0000006d,0x00040005,0x000003eb, + 0x61726170,0x0000006d,0x00040005,0x000003ee,0x61726170,0x0000006d,0x00050005,0x000003f2, + 0x6c6f4366,0x3358726f,0x00000000,0x00040005,0x000003f5,0x61726170,0x0000006d,0x00040005, + 0x000003f8,0x61726170,0x0000006d,0x00040005,0x000003fb,0x61726170,0x0000006d,0x00040005, + 0x000003fe,0x61726170,0x0000006d,0x00040005,0x00000401,0x61726170,0x0000006d,0x00050005, + 0x00000405,0x6c6f4366,0x5958726f,0x00000000,0x00040005,0x00000406,0x61726170,0x0000006d, + 0x00040005,0x00000408,0x61726170,0x0000006d,0x00040005,0x0000040a,0x61726170,0x0000006d, + 0x00040005,0x0000040c,0x61726170,0x0000006d,0x00040005,0x0000040e,0x61726170,0x0000006d, + 0x00070005,0x00000415,0x72654466,0x69676e69,0x6153676e,0x656c706d,0x00000073,0x00060005, + 0x0000041f,0x72654466,0x69676e69,0x694d676e,0x0000006e,0x00060005,0x00000422,0x72654466, + 0x69676e69,0x614d676e,0x00000078,0x00060005,0x00000425,0x6d615369,0x49656c70,0x7865646e, + 0x00000000,0x00040005,0x0000042e,0x61726170,0x0000006d,0x00040005,0x00000430,0x61726170, + 0x0000006d,0x00040005,0x00000435,0x61726170,0x0000006d,0x00040005,0x00000437,0x61726170, + 0x0000006d,0x00040005,0x00000444,0x75736572,0x0000746c,0x00040005,0x0000044b,0x61726170, + 0x0000006d,0x00040005,0x0000044e,0x61726170,0x0000006d,0x00040005,0x00000450,0x61726170, + 0x0000006d,0x00040005,0x00000451,0x61726170,0x0000006d,0x00040005,0x00000457,0x61726170, + 0x0000006d,0x00040005,0x0000045a,0x61726170,0x0000006d,0x00040005,0x0000045c,0x61726170, + 0x0000006d,0x00040005,0x0000045d,0x61726170,0x0000006d,0x00080005,0x00000469,0x63725366, + 0x706d6153,0x664f656c,0x74657366,0x73616942,0x00006465,0x00060005,0x0000046e,0x6d615366, + 0x57656c70,0x68676965,0x00000074,0x00040005,0x00000472,0x61726170,0x0000006d,0x00060005, + 0x00000477,0x72654b66,0x536c656e,0x42657a69,0x00736169,0x00040005,0x00000480,0x61726170, + 0x0000006d,0x00040005,0x00000481,0x61726170,0x0000006d,0x00040005,0x00000486,0x62675266, + 0x00000000,0x00040005,0x00000488,0x61726170,0x0000006d,0x00040005,0x0000048b,0x61726170, + 0x0000006d,0x00040005,0x0000048c,0x61726170,0x0000006d,0x00060005,0x00000490,0x65725066, + 0x65726170,0x6f435964,0x00006743,0x00040005,0x00000491,0x61726170,0x0000006d,0x00060005, + 0x00000497,0x74734466,0x7074754f,0x6f507475,0x00000073,0x00060005,0x0000049b,0x63725366, + 0x7074754f,0x6f507475,0x00000073,0x00060005,0x0000049f,0x63725369,0x75706e49,0x736f5074, + 0x00000000,0x00070005,0x000004a3,0x63725366,0x696a6e55,0x72657474,0x6f506465,0x00000073, + 0x00070005,0x000004a9,0x73614266,0x6d615365,0x4f656c70,0x65736666,0x00000074,0x00050005, + 0x000004ad,0x7366666f,0x4c547465,0x00000000,0x00050005,0x000004be,0x696c4662,0x776f5270, + 0x00000000,0x00050005,0x000004c4,0x696c4662,0x6c6f4370,0x00000000,0x00050005,0x000004ca, + 0x66664f66,0x54746573,0x0000004c,0x00070005,0x000004cd,0x49734962,0x6974696e,0x61536c61, + 0x656c706d,0x00000000,0x00060005,0x000004d0,0x6d615369,0x49656c70,0x7865646e,0x00000000, + 0x00030005,0x000004d1,0x00776f72,0x00030005,0x000004d9,0x006c6f63,0x00060005,0x000004e1, + 0x6d615369,0x43656c70,0x6f526c6f,0x00000077,0x00060005,0x000004f5,0x63725369,0x706d6153, + 0x6f50656c,0x00000073,0x00060005,0x000004fb,0x6d615369,0x43656c70,0x64726f6f,0x00000000, + 0x00040005,0x000004fd,0x61726170,0x0000006d,0x00040005,0x000004ff,0x61726170,0x0000006d, + 0x00040005,0x00000500,0x61726170,0x0000006d,0x00050005,0x00000505,0x6d615366,0x73656c70, + 0x00000000,0x00040005,0x00000507,0x61726170,0x0000006d,0x00040005,0x0000051d,0x61726170, + 0x0000006d,0x00040005,0x00000521,0x61726170,0x0000006d,0x00040005,0x00000523,0x61726170, + 0x0000006d,0x00060005,0x00000528,0x72654b66,0x426c656e,0x4d736169,0x00007861,0x00040005, + 0x00000529,0x61726170,0x0000006d,0x00060005,0x0000052d,0x72654b66,0x426c656e,0x4d736169, + 0x00006e69,0x00040005,0x00000532,0x61726170,0x0000006d,0x00040005,0x00000533,0x61726170, + 0x0000006d,0x00070005,0x00000535,0x72654b66,0x426c656e,0x57736169,0x68676965,0x00000074, + 0x00040005,0x0000053f,0x61726170,0x0000006d,0x00040005,0x00000541,0x61726170,0x0000006d, + 0x00040005,0x00000542,0x61726170,0x0000006d,0x00040005,0x00000544,0x61726170,0x0000006d, + 0x00040005,0x00000545,0x61726170,0x0000006d,0x00050005,0x00000547,0x72654b66,0x426c656e, + 0x00736169,0x00040005,0x00000548,0x61726170,0x0000006d,0x00040005,0x0000054a,0x61726170, + 0x0000006d,0x00040005,0x0000054c,0x61726170,0x0000006d,0x00030005,0x0000054f,0x00776f72, + 0x00030005,0x00000557,0x006c6f63,0x00060005,0x0000055f,0x706d6173,0x6f43656c,0x776f526c, + 0x00000000,0x00040005,0x00000573,0x66664f66,0x00746573,0x00070005,0x00000578,0x63725366, + 0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005,0x0000057c,0x63725369,0x706d6153, + 0x6f50656c,0x00000073,0x00060005,0x00000582,0x536e4f66,0x65657263,0x6361466e,0x00726f74, + 0x00040005,0x00000585,0x61726170,0x0000006d,0x00040005,0x00000586,0x61726170,0x0000006d, + 0x00060005,0x0000058d,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00040005,0x0000058f, + 0x61726170,0x0000006d,0x00040005,0x00000591,0x61726170,0x0000006d,0x00070005,0x000005a3, + 0x63725366,0x706d6153,0x664f656c,0x74657366,0x00007153,0x00070005,0x000005a7,0x786f4266, + 0x706d6153,0x6557656c,0x74686769,0x00000000,0x00060005,0x000005ae,0x696e4962,0x6c616974, + 0x706d6153,0x0000656c,0x00040005,0x000005b8,0x61726170,0x0000006d,0x00040005,0x000005ba, + 0x61726170,0x0000006d,0x00040005,0x000005c6,0x61726170,0x0000006d,0x00040005,0x000005e5, + 0x61726170,0x0000006d,0x00040005,0x000005e8,0x61726170,0x0000006d,0x00040005,0x000005f1, + 0x61726170,0x0000006d,0x00040005,0x000005f5,0x61726170,0x0000006d,0x00040005,0x000005f7, + 0x61726170,0x0000006d,0x00040005,0x000005fc,0x61726170,0x0000006d,0x00040005,0x00000601, + 0x706d6153,0x0073656c,0x00040005,0x00000603,0x61726170,0x0000006d,0x00040005,0x00000605, + 0x61726170,0x0000006d,0x00040005,0x00000606,0x61726170,0x0000006d,0x00040005,0x00000609, + 0x61726170,0x0000006d,0x00040005,0x0000060d,0x61726170,0x0000006d,0x00040005,0x0000060f, + 0x61726170,0x0000006d,0x00040005,0x00000610,0x61726170,0x0000006d,0x00040005,0x00000613, + 0x61726170,0x0000006d,0x00040005,0x00000617,0x61726170,0x0000006d,0x00040005,0x00000619, + 0x61726170,0x0000006d,0x00040005,0x0000061a,0x61726170,0x0000006d,0x00040005,0x0000061d, + 0x61726170,0x0000006d,0x00040005,0x00000621,0x61726170,0x0000006d,0x00040005,0x00000623, + 0x61726170,0x0000006d,0x00040005,0x00000624,0x61726170,0x0000006d,0x00040005,0x00000627, + 0x61726170,0x0000006d,0x00040005,0x0000062b,0x61726170,0x0000006d,0x00040005,0x0000062d, + 0x61726170,0x0000006d,0x00040005,0x0000062e,0x61726170,0x0000006d,0x00040005,0x00000631, + 0x61726170,0x0000006d,0x00040005,0x00000634,0x61726170,0x0000006d,0x00040005,0x00000636, + 0x61726170,0x0000006d,0x00040005,0x00000637,0x61726170,0x0000006d,0x00040005,0x0000063a, + 0x61726170,0x0000006d,0x00040005,0x0000063e,0x61726170,0x0000006d,0x00040005,0x00000640, + 0x61726170,0x0000006d,0x00040005,0x00000641,0x61726170,0x0000006d,0x00040005,0x00000644, + 0x61726170,0x0000006d,0x00040005,0x00000648,0x61726170,0x0000006d,0x00040005,0x0000064a, + 0x61726170,0x0000006d,0x00040005,0x0000064b,0x61726170,0x0000006d,0x00040005,0x0000064e, + 0x61726170,0x0000006d,0x00040005,0x00000652,0x61726170,0x0000006d,0x00040005,0x00000654, + 0x61726170,0x0000006d,0x00040005,0x00000655,0x61726170,0x0000006d,0x00040005,0x00000658, + 0x61726170,0x0000006d,0x00040005,0x0000065c,0x61726170,0x0000006d,0x00040005,0x0000065e, + 0x61726170,0x0000006d,0x00040005,0x0000065f,0x61726170,0x0000006d,0x00040005,0x00000662, + 0x61726170,0x0000006d,0x00040005,0x00000666,0x61726170,0x0000006d,0x00040005,0x00000668, + 0x61726170,0x0000006d,0x00040005,0x00000669,0x61726170,0x0000006d,0x00040005,0x0000066c, + 0x61726170,0x0000006d,0x00040005,0x00000670,0x61726170,0x0000006d,0x00040005,0x00000672, + 0x61726170,0x0000006d,0x00040005,0x00000673,0x61726170,0x0000006d,0x00040005,0x00000676, + 0x61726170,0x0000006d,0x00040005,0x0000067a,0x61726170,0x0000006d,0x00040005,0x0000067c, + 0x61726170,0x0000006d,0x00040005,0x0000067d,0x61726170,0x0000006d,0x00040005,0x00000680, + 0x61726170,0x0000006d,0x00040005,0x00000684,0x61726170,0x0000006d,0x00040005,0x00000686, + 0x61726170,0x0000006d,0x00040005,0x00000687,0x61726170,0x0000006d,0x00040005,0x0000068a, + 0x61726170,0x0000006d,0x00040005,0x0000068e,0x61726170,0x0000006d,0x00040005,0x00000690, + 0x61726170,0x0000006d,0x00040005,0x00000691,0x61726170,0x0000006d,0x00040005,0x00000694, + 0x61726170,0x0000006d,0x00040005,0x00000698,0x61726170,0x0000006d,0x00040005,0x0000069a, + 0x61726170,0x0000006d,0x00040005,0x0000069b,0x61726170,0x0000006d,0x00040005,0x0000069e, + 0x61726170,0x0000006d,0x00050005,0x000006a4,0x53785066,0x6c706d61,0x00000065,0x00040005, + 0x000006aa,0x46785066,0x00636172,0x00040005,0x000006ab,0x61726170,0x0000006d,0x00040005, + 0x000006b2,0x61726170,0x0000006d,0x00040005,0x000006b3,0x61726170,0x0000006d,0x00040005, + 0x000006b7,0x61726170,0x0000006d,0x00040005,0x000006b8,0x61726170,0x0000006d,0x00040005, + 0x000006bf,0x61726170,0x0000006d,0x00040005,0x000006c0,0x61726170,0x0000006d,0x00040005, + 0x000006c4,0x61726170,0x0000006d,0x00040005,0x000006c5,0x61726170,0x0000006d,0x00050005, + 0x000006c8,0x53785069,0x6c706d61,0x00000065,0x00050005,0x000006cc,0x6c6f4366,0x5958726f, + 0x00000000,0x00040005,0x000006cd,0x61726170,0x0000006d,0x00040005,0x000006cf,0x61726170, + 0x0000006d,0x00040005,0x000006d2,0x61726170,0x0000006d,0x00040005,0x000006d3,0x61726170, + 0x0000006d,0x00080005,0x000006d9,0x6c694466,0x64657461,0x69746f4d,0x65566e6f,0x726f7463, + 0x00000000,0x00040005,0x000006df,0x61726170,0x0000006d,0x00040005,0x000006ea,0x61726170, + 0x0000006d,0x00070005,0x000006ef,0x70655266,0x656a6f72,0x64657463,0x74736948,0x0079726f, + 0x00040005,0x000006f1,0x61726170,0x0000006d,0x00040005,0x000006f3,0x61726170,0x0000006d, + 0x00040005,0x00000702,0x61726170,0x0000006d,0x00040005,0x00000718,0x61726170,0x0000006d, + 0x00040005,0x00000719,0x61726170,0x0000006d,0x00040005,0x0000071c,0x61726170,0x0000006d, + 0x00040005,0x00000720,0x61726170,0x0000006d,0x00040005,0x00000722,0x61726170,0x0000006d, + 0x00040005,0x00000725,0x61726170,0x0000006d,0x00040005,0x00000729,0x61726170,0x0000006d, + 0x00040005,0x0000072b,0x61726170,0x0000006d,0x00040005,0x0000072e,0x706c4166,0x00006168, + 0x00040005,0x00000734,0x61726170,0x0000006d,0x00040005,0x00000736,0x61726170,0x0000006d, + 0x00040005,0x00000739,0x61726170,0x0000006d,0x00040005,0x0000073c,0x61726170,0x0000006d, + 0x00040005,0x00000740,0x61726170,0x0000006d,0x00040005,0x00000745,0x61726170,0x0000006d, + 0x00070005,0x0000074a,0x566b3466,0x636f6c65,0x46797469,0x6f746361,0x00000072,0x00040005, + 0x0000074e,0x61726170,0x0000006d,0x00060005,0x00000750,0x73694466,0x636e6174,0x63614665, + 0x00726f74,0x00040005,0x00000755,0x61726170,0x0000006d,0x00070005,0x00000757,0x63634166, + 0x6c756d75,0x6f697461,0x6361466e,0x00726f74,0x00060005,0x0000075a,0x61655266,0x76697463, + 0x63614665,0x00726f74,0x00040005,0x0000075b,0x61726170,0x0000006d,0x00040005,0x0000075d, + 0x61726170,0x0000006d,0x00080005,0x0000075f,0x61685366,0x676e6964,0x6e616843,0x61466567, + 0x726f7463,0x00000000,0x00050005,0x00000761,0x786f4266,0x6c616353,0x00005465,0x00040005, + 0x00000762,0x61726170,0x0000006d,0x00040005,0x00000764,0x61726170,0x0000006d,0x00040005, + 0x00000767,0x61726170,0x0000006d,0x00040005,0x00000769,0x61726170,0x0000006d,0x00040005, + 0x0000076b,0x61726170,0x0000006d,0x00040005,0x0000076d,0x61726170,0x0000006d,0x00040005, + 0x0000076f,0x61726170,0x0000006d,0x00040005,0x00000771,0x61726170,0x0000006d,0x00050005, + 0x00000773,0x786f4266,0x6c616353,0x00000065,0x00040005,0x00000775,0x61726170,0x0000006d, + 0x00040005,0x00000776,0x61726170,0x0000006d,0x00040005,0x00000777,0x61726170,0x0000006d, + 0x00060005,0x0000077a,0x61635366,0x4264656c,0x6556786f,0x00000063,0x00080005,0x00000782, + 0x616c4366,0x6465706d,0x6c616353,0x6f426465,0x63655678,0x00000000,0x00040005,0x00000785, + 0x61726170,0x0000006d,0x00040005,0x00000787,0x61726170,0x0000006d,0x00090005,0x00000789, + 0x61725466,0x6f66736e,0x64656d72,0x74736948,0x4379726f,0x726f6c6f,0x00000000,0x00080005, + 0x00000796,0x616c4366,0x6465706d,0x74736948,0x4379726f,0x726f6c6f,0x00000000,0x00090005, + 0x00000799,0x6e694666,0x6c436c61,0x65706d61,0x73694864,0x79726f74,0x6f6c6f43,0x00000072, + 0x00080005,0x000007a0,0x73694866,0x79726f74,0x746e6f43,0x75626972,0x6e6f6974,0x00000000, + 0x00040005,0x000007a1,0x61726170,0x0000006d,0x00040005,0x000007a3,0x61726170,0x0000006d, + 0x00040005,0x000007ac,0x61726170,0x0000006d,0x00040005,0x000007af,0x61726170,0x0000006d, + 0x00040005,0x000007b1,0x61726170,0x0000006d,0x00040005,0x000007b4,0x61726170,0x0000006d, + 0x00080005,0x000007c0,0x66694c66,0x6d697465,0x63654465,0x73616572,0x63614665,0x00726f74, + 0x00040005,0x000007c1,0x61726170,0x0000006d,0x00040005,0x000007c5,0x61726170,0x0000006d, + 0x00040005,0x000007c8,0x61726170,0x0000006d,0x00040005,0x000007cc,0x61726170,0x0000006d, + 0x00040005,0x000007cd,0x61726170,0x0000006d,0x00040005,0x000007d4,0x61726170,0x0000006d, + 0x00040005,0x000007d5,0x61726170,0x0000006d,0x00040005,0x000007db,0x61726170,0x0000006d, + 0x00040005,0x000007de,0x61726170,0x0000006d,0x00070005,0x000007e1,0x77654e66,0x6b636f4c, + 0x65746e49,0x7469736e,0x00000079,0x00040005,0x000007e2,0x61726170,0x0000006d,0x00040005, + 0x000007e9,0x61726170,0x0000006d,0x00040005,0x000007ea,0x61726170,0x0000006d,0x00040005, + 0x000007f4,0x61726170,0x0000006d,0x00040005,0x000007f5,0x61726170,0x0000006d,0x00040005, + 0x000007f7,0x61726170,0x0000006d,0x00040005,0x000007f8,0x61726170,0x0000006d,0x00070005, + 0x000007fb,0x66694c66,0x6d697465,0x63654465,0x73616572,0x00000065,0x00040005,0x00000806, + 0x61726170,0x0000006d,0x00040005,0x00000807,0x61726170,0x0000006d,0x00080005,0x0000080a, + 0x74734566,0x74616d69,0x76556465,0x7478654e,0x6d617246,0x00000065,0x00040005,0x00000810, + 0x61726170,0x0000006d,0x00070005,0x0000081a,0x73614266,0x63634165,0x6c756d75,0x6f697461, + 0x0000006e,0x00040005,0x00000821,0x61726170,0x0000006d,0x00040005,0x00000822,0x61726170, + 0x0000006d,0x00040005,0x00000824,0x61726170,0x0000006d,0x00040005,0x00000826,0x61726170, + 0x0000006d,0x00040005,0x00000828,0x61726170,0x0000006d,0x00040005,0x00000829,0x61726170, + 0x0000006d,0x00040005,0x0000082b,0x61726170,0x0000006d,0x00040005,0x0000082d,0x61726170, + 0x0000006d,0x00040005,0x00000833,0x55724866,0x00000076,0x00040005,0x00000846,0x61726170, + 0x0000006d,0x00040005,0x00000849,0x61726170,0x0000006d,0x00040005,0x0000084a,0x61726170, + 0x0000006d,0x00040005,0x0000084d,0x61726170,0x0000006d,0x00040005,0x0000084f,0x61726170, + 0x0000006d,0x00040005,0x00000853,0x61726170,0x0000006d,0x00040005,0x00000858,0x61726170, + 0x0000006d,0x00080005,0x0000085c,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x485f7655, + 0x00000057,0x00040005,0x0000085f,0x61726170,0x0000006d,0x00040005,0x00000861,0x61726170, + 0x0000006d,0x00040005,0x00000862,0x61726170,0x0000006d,0x00040005,0x00000864,0x61726170, + 0x0000006d,0x00070005,0x00000868,0x72614666,0x73656874,0x70654474,0x76556874,0x00000000, + 0x00040005,0x0000086d,0x61726170,0x0000006d,0x00040005,0x00000870,0x61726170,0x0000006d, + 0x00040005,0x00000871,0x61726170,0x0000006d,0x00040005,0x00000873,0x61726170,0x0000006d, + 0x00080005,0x00000881,0x6c694466,0x64657461,0x63616552,0x65766974,0x6b73614d,0x00000073, + 0x00040005,0x00000882,0x61726170,0x0000006d,0x00040005,0x00000886,0x61726170,0x0000006d, + 0x00040005,0x0000088b,0x61726170,0x0000006d,0x00040005,0x00000890,0x61726170,0x0000006d, + 0x00040005,0x00000895,0x61726170,0x0000006d,0x00040005,0x000008ab,0x61726170,0x0000736d, + 0x00040005,0x000008ac,0x61746164,0x00000000,0x00040005,0x000008ad,0x61726170,0x0000006d, + 0x00040005,0x000008af,0x61726170,0x0000006d,0x00040005,0x000008b1,0x61726170,0x0000006d, + 0x00040005,0x000008c1,0x61726170,0x0000006d,0x00040005,0x000008c5,0x61726170,0x0000006d, + 0x00040005,0x000008c7,0x61726170,0x0000006d,0x00040005,0x000008cc,0x61726170,0x0000006d, + 0x00040005,0x000008d1,0x61726170,0x0000006d,0x00040005,0x000008d6,0x61726170,0x0000006d, + 0x00040005,0x000008db,0x61726170,0x0000006d,0x00040005,0x000008e5,0x61726170,0x0000006d, + 0x00040005,0x000008e8,0x61726170,0x0000006d,0x00040005,0x000008f3,0x61726170,0x0000006d, + 0x00040005,0x000008f5,0x61726170,0x0000006d,0x00040005,0x000008f7,0x61726170,0x0000006d, + 0x00040005,0x000008f9,0x61726170,0x0000006d,0x00080005,0x000008fd,0x475f6c67,0x61626f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000901,0x61726170,0x0000006d, + 0x00060005,0x00000905,0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00070005,0x00000908, + 0x755f7772,0x61637370,0x5f64656c,0x7074756f,0x00007475,0x00060005,0x00000909,0x75635f72, + 0x6e657272,0x756c5f74,0x0000616d,0x00060005,0x0000090a,0x616c5f72,0x6f7a636e,0x756c5f73, + 0x00000074,0x00030047,0x0000018f,0x00000002,0x00050048,0x0000018f,0x00000000,0x00000023, + 0x00000000,0x00050048,0x0000018f,0x00000001,0x00000023,0x00000008,0x00050048,0x0000018f, + 0x00000002,0x00000023,0x00000010,0x00050048,0x0000018f,0x00000003,0x00000023,0x00000018, + 0x00050048,0x0000018f,0x00000004,0x00000023,0x00000020,0x00050048,0x0000018f,0x00000005, + 0x00000023,0x00000028,0x00050048,0x0000018f,0x00000006,0x00000023,0x00000030,0x00050048, + 0x0000018f,0x00000007,0x00000023,0x00000040,0x00050048,0x0000018f,0x00000008,0x00000023, + 0x00000048,0x00050048,0x0000018f,0x00000009,0x00000023,0x00000050,0x00050048,0x0000018f, + 0x0000000a,0x00000023,0x00000058,0x00050048,0x0000018f,0x0000000b,0x00000023,0x00000060, + 0x00050048,0x0000018f,0x0000000c,0x00000023,0x00000068,0x00050048,0x0000018f,0x0000000d, + 0x00000023,0x0000006c,0x00050048,0x0000018f,0x0000000e,0x00000023,0x00000070,0x00050048, + 0x0000018f,0x0000000f,0x00000023,0x00000074,0x00050048,0x0000018f,0x00000010,0x00000023, + 0x00000078,0x00050048,0x0000018f,0x00000011,0x00000023,0x0000007c,0x00050048,0x0000018f, + 0x00000012,0x00000023,0x00000080,0x00050048,0x0000018f,0x00000013,0x00000023,0x00000084, + 0x00050048,0x0000018f,0x00000014,0x00000023,0x00000088,0x00050048,0x0000018f,0x00000015, + 0x00000023,0x0000008c,0x00050048,0x0000018f,0x00000016,0x00000023,0x00000090,0x00040047, + 0x00000191,0x00000021,0x0000000c,0x00040047,0x00000191,0x00000022,0x00000000,0x00040047, + 0x000001c9,0x00000021,0x00000008,0x00040047,0x000001c9,0x00000022,0x00000000,0x00040047, + 0x000001d0,0x00000021,0x00000003,0x00040047,0x000001d0,0x00000022,0x00000000,0x00030047, + 0x000001d8,0x00000019,0x00040047,0x000001d8,0x00000021,0x00000009,0x00040047,0x000001d8, + 0x00000022,0x00000000,0x00040047,0x000001dc,0x00000021,0x00000005,0x00040047,0x000001dc, + 0x00000022,0x00000000,0x00040047,0x000001e4,0x00000021,0x000003e9,0x00040047,0x000001e4, + 0x00000022,0x00000000,0x00040047,0x000001ef,0x00000021,0x00000007,0x00040047,0x000001ef, + 0x00000022,0x00000000,0x00040047,0x000001fa,0x00000021,0x0000000b,0x00040047,0x000001fa, + 0x00000022,0x00000000,0x00040047,0x00000205,0x00000021,0x00000002,0x00040047,0x00000205, + 0x00000022,0x00000000,0x00040047,0x0000020d,0x00000021,0x00000000,0x00040047,0x0000020d, + 0x00000022,0x00000000,0x00040047,0x00000219,0x00000021,0x00000001,0x00040047,0x00000219, + 0x00000022,0x00000000,0x00040047,0x000008fd,0x0000000b,0x0000001c,0x00040047,0x00000905, + 0x00000021,0x000003e8,0x00040047,0x00000905,0x00000022,0x00000000,0x00030047,0x00000908, + 0x00000019,0x00040047,0x00000908,0x00000021,0x0000000a,0x00040047,0x00000908,0x00000022, + 0x00000000,0x00040047,0x00000909,0x00000021,0x00000006,0x00040047,0x00000909,0x00000022, + 0x00000000,0x00040047,0x0000090a,0x00000021,0x00000004,0x00040047,0x0000090a,0x00000022, + 0x00000000,0x00040047,0x00000911,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021, + 0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040020,0x00000007,0x00000007, + 0x00000006,0x00060021,0x00000008,0x00000006,0x00000007,0x00000007,0x00000007,0x00040017, + 0x0000000e,0x00000006,0x00000003,0x00040020,0x0000000f,0x00000007,0x0000000e,0x00060021, + 0x00000010,0x0000000e,0x0000000f,0x0000000f,0x00000007,0x00040021,0x00000016,0x00000006, + 0x00000007,0x00040017,0x0000001a,0x00000006,0x00000002,0x00040020,0x0000001b,0x00000007, + 0x0000001a,0x00040021,0x0000001c,0x0000001a,0x0000001b,0x00050021,0x00000020,0x00000006, + 0x00000007,0x00000007,0x00050021,0x00000025,0x0000001a,0x0000001b,0x0000001b,0x00050021, + 0x0000002a,0x0000000e,0x0000000f,0x0000000f,0x00040017,0x0000002f,0x00000006,0x00000004, + 0x00040020,0x00000030,0x00000007,0x0000002f,0x00050021,0x00000031,0x0000002f,0x00000030, + 0x00000030,0x00040015,0x00000036,0x00000020,0x00000001,0x00040020,0x00000037,0x00000007, + 0x00000036,0x00050021,0x00000038,0x00000036,0x00000037,0x00000037,0x00040017,0x00000055, + 0x00000036,0x00000002,0x00030021,0x00000056,0x00000055,0x00030021,0x0000005f,0x0000001a, + 0x00030021,0x00000064,0x00000006,0x00040020,0x0000006d,0x00000007,0x00000055,0x00040021, + 0x0000006e,0x0000000e,0x0000006d,0x00040021,0x00000072,0x0000002f,0x0000006d,0x00050021, + 0x00000076,0x00000002,0x0000006d,0x00000030,0x00040021,0x0000007d,0x00000006,0x0000001b, + 0x00040021,0x00000084,0x00000006,0x0000006d,0x00050021,0x00000088,0x00000002,0x0000006d, + 0x00000007,0x00040021,0x0000008d,0x0000001a,0x0000006d,0x00040021,0x00000093,0x0000002f, + 0x0000001b,0x0007001e,0x0000009a,0x0000000e,0x0000000e,0x0000000e,0x0000000e,0x00000006, + 0x00040020,0x0000009b,0x00000007,0x0000009a,0x00060021,0x0000009c,0x00000002,0x0000009b, + 0x0000000e,0x00000006,0x00020014,0x000000a2,0x00040020,0x000000a3,0x00000007,0x000000a2, + 0x00070021,0x000000a4,0x00000002,0x000000a3,0x0000009b,0x0000000e,0x00000006,0x00040021, + 0x000000ab,0x00000002,0x0000009b,0x00040021,0x000000af,0x0000000e,0x0000000f,0x00040021, + 0x000000bc,0x000000a2,0x0000001b,0x00060021,0x000000c0,0x00000055,0x0000006d,0x0000006d, + 0x0000006d,0x00060021,0x000000c6,0x0000001a,0x0000001b,0x0000006d,0x0000006d,0x00050021, + 0x000000cc,0x000000a2,0x0000006d,0x0000006d,0x00080021,0x000000dd,0x0000002f,0x00000030, + 0x00000030,0x00000030,0x00000030,0x00000007,0x0012001e,0x000000e5,0x0000002f,0x0000002f, + 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f, + 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x00040020,0x000000e6, + 0x00000007,0x000000e5,0x00050021,0x000000e7,0x0000002f,0x000000e6,0x0000001b,0x00050021, + 0x000000f1,0x00000002,0x0000009b,0x0000000f,0x00050021,0x000000f6,0x00000006,0x0000001b, + 0x00000007,0x0011001e,0x000000fb,0x00000055,0x0000001a,0x0000001a,0x0000001a,0x0000001a, + 0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x000000a2,0x000000a2,0x0009001e,0x000000fc,0x0000009a,0x0000000e,0x00000006,0x0000000e, + 0x00000006,0x00000006,0x00000006,0x00040020,0x000000fd,0x00000007,0x000000fc,0x00050021, + 0x000000fe,0x00000006,0x000000fb,0x000000fd,0x00050021,0x00000106,0x00000002,0x000000fb, + 0x000000fd,0x00050021,0x0000010e,0x000000e5,0x0000006d,0x0000006d,0x00050021,0x00000113, + 0x0000002f,0x0000001b,0x0000006d,0x00050021,0x00000118,0x0000001a,0x0000006d,0x0000001b, + 0x00040020,0x0000011d,0x00000007,0x000000fb,0x00040021,0x0000011e,0x00000002,0x0000011d, + 0x00050021,0x0000012e,0x00000002,0x0000011d,0x000000fd,0x00060021,0x00000137,0x00000002, + 0x0000006d,0x0000011d,0x000000fd,0x00040021,0x0000013d,0x00000002,0x0000006d,0x0004002b, + 0x00000006,0x0000014f,0x00000000,0x0004002b,0x00000006,0x00000150,0x3f800000,0x0019001e, + 0x0000018f,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x0000002f, + 0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00040020,0x00000190,0x00000002,0x0000018f,0x0004003b,0x00000190,0x00000191,0x00000002, + 0x0004002b,0x00000036,0x00000192,0x00000000,0x00040020,0x00000193,0x00000002,0x00000055, + 0x0004002b,0x00000036,0x00000198,0x00000004,0x0004002b,0x00000036,0x0000019d,0x00000002, + 0x0004002b,0x00000036,0x000001a2,0x00000003,0x0004002b,0x00000036,0x000001a7,0x00000007, + 0x00040020,0x000001a8,0x00000002,0x0000001a,0x0004002b,0x00000036,0x000001ad,0x0000000a, + 0x0004002b,0x00000036,0x000001b2,0x0000000d,0x00040020,0x000001b3,0x00000002,0x00000006, + 0x0004002b,0x00000036,0x000001b8,0x0000000f,0x0004002b,0x00000036,0x000001bd,0x00000011, + 0x0004002b,0x00000036,0x000001c2,0x00000012,0x00090019,0x000001c7,0x00000006,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001c8,0x00000000, + 0x000001c7,0x0004003b,0x000001c8,0x000001c9,0x00000000,0x0004003b,0x000001c8,0x000001d0, + 0x00000000,0x00090019,0x000001d6,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000002,0x00040020,0x000001d7,0x00000000,0x000001d6,0x0004003b,0x000001d7, + 0x000001d8,0x00000000,0x0004003b,0x000001c8,0x000001dc,0x00000000,0x0002001a,0x000001e2, + 0x00040020,0x000001e3,0x00000000,0x000001e2,0x0004003b,0x000001e3,0x000001e4,0x00000000, + 0x0003001b,0x000001e6,0x000001c7,0x00040015,0x000001ea,0x00000020,0x00000000,0x0004002b, + 0x000001ea,0x000001eb,0x00000000,0x0004003b,0x000001c8,0x000001ef,0x00000000,0x00090019, + 0x000001f8,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x0000000f, + 0x00040020,0x000001f9,0x00000000,0x000001f8,0x0004003b,0x000001f9,0x000001fa,0x00000000, + 0x0004003b,0x000001c8,0x00000205,0x00000000,0x0004003b,0x000001c8,0x0000020d,0x00000000, + 0x0005002c,0x00000055,0x0000020f,0x00000192,0x00000192,0x0004003b,0x000001c8,0x00000219, + 0x00000000,0x0004002b,0x00000006,0x00000222,0x45700000,0x0004002b,0x00000006,0x00000223, + 0x45070000,0x0005002c,0x0000001a,0x00000224,0x00000222,0x00000223,0x0004002b,0x00000036, + 0x0000022f,0x00000001,0x0004002b,0x00000006,0x0000025c,0x00800000,0x0004002b,0x000001ea, + 0x00000284,0x00000001,0x0004002b,0x000001ea,0x00000288,0x00000002,0x0004002b,0x00000006, + 0x0000029e,0x3e800000,0x0004002b,0x00000006,0x000002a2,0x3f000000,0x0004002b,0x00000006, + 0x000002b2,0xbe800000,0x0004002b,0x00000006,0x000002d8,0x387fda40,0x0005002c,0x0000001a, + 0x00000329,0x000002a2,0x000002a2,0x00040017,0x0000033d,0x000001ea,0x00000002,0x00040017, + 0x00000341,0x000000a2,0x00000002,0x0004002b,0x00000006,0x0000034d,0x40490fdb,0x0004002b, + 0x00000006,0x00000354,0x3fc90fdb,0x0004002b,0x00000006,0x00000361,0x40000000,0x0004002b, + 0x00000006,0x0000036b,0x3ecccccd,0x0004002b,0x00000006,0x00000373,0x3fc80000,0x0004002b, + 0x00000006,0x00000378,0x3f100000,0x0004002b,0x00000006,0x00000380,0x40800000,0x0004002b, + 0x00000006,0x0000038b,0xbf800000,0x0004002b,0x00000006,0x00000391,0x80000000,0x0004002b, + 0x00000036,0x000003cc,0x00000005,0x0004002b,0x00000036,0x000003cd,0x00000006,0x0004002b, + 0x00000036,0x000003df,0x00000008,0x0004002b,0x00000036,0x000003e0,0x00000009,0x0004002b, + 0x00000036,0x000003e1,0x0000000b,0x0004002b,0x00000036,0x000003f3,0x0000000c,0x0004002b, + 0x00000036,0x000003f4,0x0000000e,0x0004002b,0x000001ea,0x00000412,0x00000004,0x0004001c, + 0x00000413,0x0000002f,0x00000412,0x00040020,0x00000414,0x00000007,0x00000413,0x0004002b, + 0x00000006,0x0000047f,0x3ffeb852,0x0006002c,0x0000000e,0x00000487,0x0000014f,0x0000014f, + 0x0000014f,0x0004002b,0x00000036,0x000004b3,0xfffffffe,0x0004002b,0x00000036,0x000004b4, + 0xffffffff,0x0004002b,0x000001ea,0x00000502,0x00000009,0x0004001c,0x00000503,0x0000000e, + 0x00000502,0x00040020,0x00000504,0x00000007,0x00000503,0x0004002b,0x00000006,0x00000530, + 0x3e99999a,0x0004002b,0x00000006,0x0000053d,0x40a00000,0x0004002b,0x00000006,0x000005a8, + 0xc0133333,0x0004002b,0x00000006,0x000005e0,0x3d3d70a4,0x0005002c,0x00000055,0x00000602, + 0x000004b4,0x000004b4,0x0005002c,0x00000055,0x0000060c,0x00000192,0x000004b4,0x0005002c, + 0x00000055,0x00000616,0x0000022f,0x000004b4,0x0005002c,0x00000055,0x00000620,0x0000019d, + 0x000004b4,0x0005002c,0x00000055,0x0000062a,0x000004b4,0x00000192,0x0005002c,0x00000055, + 0x0000063d,0x0000022f,0x00000192,0x0005002c,0x00000055,0x00000647,0x0000019d,0x00000192, + 0x0005002c,0x00000055,0x00000651,0x000004b4,0x0000022f,0x0005002c,0x00000055,0x0000065b, + 0x00000192,0x0000022f,0x0005002c,0x00000055,0x00000665,0x0000022f,0x0000022f,0x0005002c, + 0x00000055,0x0000066f,0x0000019d,0x0000022f,0x0005002c,0x00000055,0x00000679,0x000004b4, + 0x0000019d,0x0005002c,0x00000055,0x00000683,0x00000192,0x0000019d,0x0005002c,0x00000055, + 0x0000068d,0x0000022f,0x0000019d,0x0005002c,0x00000055,0x00000697,0x0000019d,0x0000019d, + 0x0004002b,0x000001ea,0x00000707,0x00000003,0x0004002b,0x00000006,0x0000074c,0x41a00000, + 0x0004002b,0x00000006,0x00000751,0x3f400000,0x0004002b,0x00000006,0x00000774,0x40400000, + 0x0004002b,0x00000006,0x0000077d,0x3fd9999a,0x0006002c,0x0000000e,0x0000077e,0x0000077d, + 0x00000150,0x00000150,0x0004002b,0x00000006,0x00000783,0x340018ef,0x0006002c,0x0000000e, + 0x00000784,0x00000783,0x00000783,0x00000783,0x0003002a,0x000000a2,0x000007b9,0x0004002b, + 0x00000006,0x000007fc,0x3dcccccd,0x00030029,0x000000a2,0x00000813,0x0004002b,0x00000006, + 0x0000081c,0x3e19999a,0x0004002b,0x00000006,0x0000089c,0x42c80000,0x00040017,0x000008fb, + 0x000001ea,0x00000003,0x00040020,0x000008fc,0x00000001,0x000008fb,0x0004003b,0x000008fc, + 0x000008fd,0x00000001,0x0004002b,0x00000006,0x00000903,0x477fe000,0x0004002b,0x00000006, + 0x00000904,0x37801002,0x0004003b,0x000001e3,0x00000905,0x00000000,0x00090019,0x00000906, + 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00040020, + 0x00000907,0x00000000,0x00000906,0x0004003b,0x00000907,0x00000908,0x00000000,0x0004003b, + 0x000001c8,0x00000909,0x00000000,0x0004003b,0x000001c8,0x0000090a,0x00000000,0x0004002b, + 0x00000006,0x0000090b,0x7f7fffff,0x0004002b,0x00000006,0x0000090c,0x3a1fe868,0x0004002b, + 0x00000006,0x0000090d,0x3d800000,0x0004002b,0x00000006,0x0000090e,0x3e400000,0x0004002b, + 0x00000006,0x0000090f,0x461c4000,0x0004002b,0x000001ea,0x00000910,0x00000008,0x0006002c, + 0x000008fb,0x00000911,0x00000910,0x00000910,0x00000284,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000006d,0x00000901,0x00000007, + 0x0004003d,0x000008fb,0x000008fe,0x000008fd,0x0007004f,0x0000033d,0x000008ff,0x000008fe, + 0x000008fe,0x00000000,0x00000001,0x0004007c,0x00000055,0x00000900,0x000008ff,0x0003003e, + 0x00000901,0x00000900,0x00050039,0x00000002,0x00000902,0x0000013f,0x00000901,0x000100fd, + 0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007, + 0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8, + 0x0000000d,0x0004003d,0x00000006,0x00000141,0x00000009,0x0004003d,0x00000006,0x00000142, + 0x0000000a,0x0004003d,0x00000006,0x00000143,0x0000000b,0x0008000c,0x00000006,0x00000144, + 0x00000001,0x0000002e,0x00000141,0x00000142,0x00000143,0x000200fe,0x00000144,0x00010038, + 0x00050036,0x0000000e,0x00000014,0x00000000,0x00000010,0x00030037,0x0000000f,0x00000011, + 0x00030037,0x0000000f,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8,0x00000015, + 0x0004003d,0x0000000e,0x00000147,0x00000011,0x0004003d,0x0000000e,0x00000148,0x00000012, + 0x0004003d,0x00000006,0x00000149,0x00000013,0x00060050,0x0000000e,0x0000014a,0x00000149, + 0x00000149,0x00000149,0x0008000c,0x0000000e,0x0000014b,0x00000001,0x0000002e,0x00000147, + 0x00000148,0x0000014a,0x000200fe,0x0000014b,0x00010038,0x00050036,0x00000006,0x00000018, + 0x00000000,0x00000016,0x00030037,0x00000007,0x00000017,0x000200f8,0x00000019,0x0004003d, + 0x00000006,0x0000014e,0x00000017,0x0008000c,0x00000006,0x00000151,0x00000001,0x0000002b, + 0x0000014e,0x0000014f,0x00000150,0x000200fe,0x00000151,0x00010038,0x00050036,0x0000001a, + 0x0000001e,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x000200f8,0x0000001f, + 0x0004003d,0x0000001a,0x00000154,0x0000001d,0x0006000c,0x0000001a,0x00000155,0x00000001, + 0x0000000a,0x00000154,0x000200fe,0x00000155,0x00010038,0x00050036,0x00000006,0x00000023, + 0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x00030037,0x00000007,0x00000022, + 0x000200f8,0x00000024,0x0004003d,0x00000006,0x00000158,0x00000021,0x0004003d,0x00000006, + 0x00000159,0x00000022,0x0007000c,0x00000006,0x0000015a,0x00000001,0x00000025,0x00000158, + 0x00000159,0x000200fe,0x0000015a,0x00010038,0x00050036,0x0000001a,0x00000028,0x00000000, + 0x00000025,0x00030037,0x0000001b,0x00000026,0x00030037,0x0000001b,0x00000027,0x000200f8, + 0x00000029,0x0004003d,0x0000001a,0x0000015d,0x00000026,0x0004003d,0x0000001a,0x0000015e, + 0x00000027,0x0007000c,0x0000001a,0x0000015f,0x00000001,0x00000025,0x0000015d,0x0000015e, + 0x000200fe,0x0000015f,0x00010038,0x00050036,0x0000000e,0x0000002d,0x00000000,0x0000002a, + 0x00030037,0x0000000f,0x0000002b,0x00030037,0x0000000f,0x0000002c,0x000200f8,0x0000002e, + 0x0004003d,0x0000000e,0x00000162,0x0000002b,0x0004003d,0x0000000e,0x00000163,0x0000002c, + 0x0007000c,0x0000000e,0x00000164,0x00000001,0x00000025,0x00000162,0x00000163,0x000200fe, + 0x00000164,0x00010038,0x00050036,0x0000002f,0x00000034,0x00000000,0x00000031,0x00030037, + 0x00000030,0x00000032,0x00030037,0x00000030,0x00000033,0x000200f8,0x00000035,0x0004003d, + 0x0000002f,0x00000167,0x00000032,0x0004003d,0x0000002f,0x00000168,0x00000033,0x0007000c, + 0x0000002f,0x00000169,0x00000001,0x00000025,0x00000167,0x00000168,0x000200fe,0x00000169, + 0x00010038,0x00050036,0x00000036,0x0000003b,0x00000000,0x00000038,0x00030037,0x00000037, + 0x00000039,0x00030037,0x00000037,0x0000003a,0x000200f8,0x0000003c,0x0004003d,0x00000036, + 0x0000016c,0x00000039,0x0004003d,0x00000036,0x0000016d,0x0000003a,0x0007000c,0x00000036, + 0x0000016e,0x00000001,0x00000027,0x0000016c,0x0000016d,0x000200fe,0x0000016e,0x00010038, + 0x00050036,0x00000006,0x0000003f,0x00000000,0x00000020,0x00030037,0x00000007,0x0000003d, + 0x00030037,0x00000007,0x0000003e,0x000200f8,0x00000040,0x0004003d,0x00000006,0x00000171, + 0x0000003d,0x0004003d,0x00000006,0x00000172,0x0000003e,0x0007000c,0x00000006,0x00000173, + 0x00000001,0x00000028,0x00000171,0x00000172,0x000200fe,0x00000173,0x00010038,0x00050036, + 0x0000001a,0x00000043,0x00000000,0x00000025,0x00030037,0x0000001b,0x00000041,0x00030037, + 0x0000001b,0x00000042,0x000200f8,0x00000044,0x0004003d,0x0000001a,0x00000176,0x00000041, + 0x0004003d,0x0000001a,0x00000177,0x00000042,0x0007000c,0x0000001a,0x00000178,0x00000001, + 0x00000028,0x00000176,0x00000177,0x000200fe,0x00000178,0x00010038,0x00050036,0x0000000e, + 0x00000047,0x00000000,0x0000002a,0x00030037,0x0000000f,0x00000045,0x00030037,0x0000000f, + 0x00000046,0x000200f8,0x00000048,0x0004003d,0x0000000e,0x0000017b,0x00000045,0x0004003d, + 0x0000000e,0x0000017c,0x00000046,0x0007000c,0x0000000e,0x0000017d,0x00000001,0x00000028, + 0x0000017b,0x0000017c,0x000200fe,0x0000017d,0x00010038,0x00050036,0x0000002f,0x0000004b, + 0x00000000,0x00000031,0x00030037,0x00000030,0x00000049,0x00030037,0x00000030,0x0000004a, + 0x000200f8,0x0000004c,0x0004003d,0x0000002f,0x00000180,0x00000049,0x0004003d,0x0000002f, + 0x00000181,0x0000004a,0x0007000c,0x0000002f,0x00000182,0x00000001,0x00000028,0x00000180, + 0x00000181,0x000200fe,0x00000182,0x00010038,0x00050036,0x00000036,0x0000004f,0x00000000, + 0x00000038,0x00030037,0x00000037,0x0000004d,0x00030037,0x00000037,0x0000004e,0x000200f8, + 0x00000050,0x0004003d,0x00000036,0x00000185,0x0000004d,0x0004003d,0x00000036,0x00000186, + 0x0000004e,0x0007000c,0x00000036,0x00000187,0x00000001,0x0000002a,0x00000185,0x00000186, + 0x000200fe,0x00000187,0x00010038,0x00050036,0x00000006,0x00000053,0x00000000,0x00000020, + 0x00030037,0x00000007,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8,0x00000054, + 0x0004003d,0x00000006,0x0000018a,0x00000051,0x0004003d,0x00000006,0x0000018b,0x00000052, + 0x0007000c,0x00000006,0x0000018c,0x00000001,0x0000001a,0x0000018a,0x0000018b,0x000200fe, + 0x0000018c,0x00010038,0x00050036,0x00000055,0x00000057,0x00000000,0x00000056,0x000200f8, + 0x00000058,0x00050041,0x00000193,0x00000194,0x00000191,0x00000192,0x0004003d,0x00000055, + 0x00000195,0x00000194,0x000200fe,0x00000195,0x00010038,0x00050036,0x00000055,0x00000059, + 0x00000000,0x00000056,0x000200f8,0x0000005a,0x00050041,0x00000193,0x00000199,0x00000191, + 0x00000198,0x0004003d,0x00000055,0x0000019a,0x00000199,0x000200fe,0x0000019a,0x00010038, + 0x00050036,0x00000055,0x0000005b,0x00000000,0x00000056,0x000200f8,0x0000005c,0x00050041, + 0x00000193,0x0000019e,0x00000191,0x0000019d,0x0004003d,0x00000055,0x0000019f,0x0000019e, + 0x000200fe,0x0000019f,0x00010038,0x00050036,0x00000055,0x0000005d,0x00000000,0x00000056, + 0x000200f8,0x0000005e,0x00050041,0x00000193,0x000001a3,0x00000191,0x000001a2,0x0004003d, + 0x00000055,0x000001a4,0x000001a3,0x000200fe,0x000001a4,0x00010038,0x00050036,0x0000001a, + 0x00000060,0x00000000,0x0000005f,0x000200f8,0x00000061,0x00050041,0x000001a8,0x000001a9, + 0x00000191,0x000001a7,0x0004003d,0x0000001a,0x000001aa,0x000001a9,0x000200fe,0x000001aa, + 0x00010038,0x00050036,0x0000001a,0x00000062,0x00000000,0x0000005f,0x000200f8,0x00000063, + 0x00050041,0x000001a8,0x000001ae,0x00000191,0x000001ad,0x0004003d,0x0000001a,0x000001af, + 0x000001ae,0x000200fe,0x000001af,0x00010038,0x00050036,0x00000006,0x00000065,0x00000000, + 0x00000064,0x000200f8,0x00000066,0x00050041,0x000001b3,0x000001b4,0x00000191,0x000001b2, + 0x0004003d,0x00000006,0x000001b5,0x000001b4,0x000200fe,0x000001b5,0x00010038,0x00050036, + 0x00000006,0x00000067,0x00000000,0x00000064,0x000200f8,0x00000068,0x00050041,0x000001b3, + 0x000001b9,0x00000191,0x000001b8,0x0004003d,0x00000006,0x000001ba,0x000001b9,0x000200fe, + 0x000001ba,0x00010038,0x00050036,0x00000006,0x00000069,0x00000000,0x00000064,0x000200f8, + 0x0000006a,0x00050041,0x000001b3,0x000001be,0x00000191,0x000001bd,0x0004003d,0x00000006, + 0x000001bf,0x000001be,0x000200fe,0x000001bf,0x00010038,0x00050036,0x00000006,0x0000006b, + 0x00000000,0x00000064,0x000200f8,0x0000006c,0x00050041,0x000001b3,0x000001c3,0x00000191, + 0x000001c2,0x0004003d,0x00000006,0x000001c4,0x000001c3,0x000200fe,0x000001c4,0x00010038, + 0x00050036,0x0000000e,0x00000070,0x00000000,0x0000006e,0x00030037,0x0000006d,0x0000006f, + 0x000200f8,0x00000071,0x0004003d,0x000001c7,0x000001ca,0x000001c9,0x0004003d,0x00000055, + 0x000001cb,0x0000006f,0x0007005f,0x0000002f,0x000001cc,0x000001ca,0x000001cb,0x00000002, + 0x00000192,0x0008004f,0x0000000e,0x000001cd,0x000001cc,0x000001cc,0x00000000,0x00000001, + 0x00000002,0x000200fe,0x000001cd,0x00010038,0x00050036,0x0000002f,0x00000074,0x00000000, + 0x00000072,0x00030037,0x0000006d,0x00000073,0x000200f8,0x00000075,0x0004003d,0x000001c7, + 0x000001d1,0x000001d0,0x0004003d,0x00000055,0x000001d2,0x00000073,0x0007005f,0x0000002f, + 0x000001d3,0x000001d1,0x000001d2,0x00000002,0x00000192,0x000200fe,0x000001d3,0x00010038, + 0x00050036,0x00000002,0x00000079,0x00000000,0x00000076,0x00030037,0x0000006d,0x00000077, + 0x00030037,0x00000030,0x00000078,0x000200f8,0x0000007a,0x0004003d,0x000001d6,0x000001d9, + 0x000001d8,0x0004003d,0x00000055,0x000001da,0x00000077,0x0004003d,0x0000002f,0x000001db, + 0x00000078,0x00040063,0x000001d9,0x000001da,0x000001db,0x000100fd,0x00010038,0x00050036, + 0x00000055,0x0000007b,0x00000000,0x00000056,0x000200f8,0x0000007c,0x0004003d,0x000001c7, + 0x000001dd,0x000001dc,0x00050067,0x00000055,0x000001de,0x000001dd,0x00000192,0x000200fe, + 0x000001de,0x00010038,0x00050036,0x00000006,0x0000007f,0x00000000,0x0000007d,0x00030037, + 0x0000001b,0x0000007e,0x000200f8,0x00000080,0x0004003d,0x000001c7,0x000001e1,0x000001dc, + 0x0004003d,0x000001e2,0x000001e5,0x000001e4,0x00050056,0x000001e6,0x000001e7,0x000001e1, + 0x000001e5,0x0004003d,0x0000001a,0x000001e8,0x0000007e,0x00070058,0x0000002f,0x000001e9, + 0x000001e7,0x000001e8,0x00000002,0x0000014f,0x00050051,0x00000006,0x000001ec,0x000001e9, + 0x00000000,0x000200fe,0x000001ec,0x00010038,0x00050036,0x00000006,0x00000082,0x00000000, + 0x0000007d,0x00030037,0x0000001b,0x00000081,0x000200f8,0x00000083,0x0004003d,0x000001c7, + 0x000001f0,0x000001ef,0x0004003d,0x000001e2,0x000001f1,0x000001e4,0x00050056,0x000001e6, + 0x000001f2,0x000001f0,0x000001f1,0x0004003d,0x0000001a,0x000001f3,0x00000081,0x00070058, + 0x0000002f,0x000001f4,0x000001f2,0x000001f3,0x00000002,0x0000014f,0x00050051,0x00000006, + 0x000001f5,0x000001f4,0x00000000,0x000200fe,0x000001f5,0x00010038,0x00050036,0x00000006, + 0x00000086,0x00000000,0x00000084,0x00030037,0x0000006d,0x00000085,0x000200f8,0x00000087, + 0x0004003d,0x000001f8,0x000001fb,0x000001fa,0x0004003d,0x00000055,0x000001fc,0x00000085, + 0x00050062,0x0000002f,0x000001fd,0x000001fb,0x000001fc,0x00050051,0x00000006,0x000001fe, + 0x000001fd,0x00000000,0x000200fe,0x000001fe,0x00010038,0x00050036,0x00000002,0x0000008b, + 0x00000000,0x00000088,0x00030037,0x0000006d,0x00000089,0x00030037,0x00000007,0x0000008a, + 0x000200f8,0x0000008c,0x0004003d,0x000001f8,0x00000201,0x000001fa,0x0004003d,0x00000055, + 0x00000202,0x00000089,0x0004003d,0x00000006,0x00000203,0x0000008a,0x00070050,0x0000002f, + 0x00000204,0x00000203,0x0000014f,0x0000014f,0x0000014f,0x00040063,0x00000201,0x00000202, + 0x00000204,0x000100fd,0x00010038,0x00050036,0x0000001a,0x0000008f,0x00000000,0x0000008d, + 0x00030037,0x0000006d,0x0000008e,0x000200f8,0x00000090,0x0004003d,0x000001c7,0x00000206, + 0x00000205,0x0004003d,0x00000055,0x00000207,0x0000008e,0x0007005f,0x0000002f,0x00000208, + 0x00000206,0x00000207,0x00000002,0x00000192,0x0007004f,0x0000001a,0x00000209,0x00000208, + 0x00000208,0x00000000,0x00000001,0x000200fe,0x00000209,0x00010038,0x00050036,0x00000006, + 0x00000091,0x00000000,0x00000064,0x000200f8,0x00000092,0x0004003b,0x00000007,0x0000020c, + 0x00000007,0x0004003d,0x000001c7,0x0000020e,0x0000020d,0x0007005f,0x0000002f,0x00000210, + 0x0000020e,0x0000020f,0x00000002,0x00000192,0x00050051,0x00000006,0x00000211,0x00000210, + 0x00000000,0x0003003e,0x0000020c,0x00000211,0x0004003d,0x00000006,0x00000212,0x0000020c, + 0x000500b4,0x000000a2,0x00000213,0x00000212,0x0000014f,0x000300f7,0x00000215,0x00000000, + 0x000400fa,0x00000213,0x00000214,0x00000215,0x000200f8,0x00000214,0x0003003e,0x0000020c, + 0x00000150,0x000200f9,0x00000215,0x000200f8,0x00000215,0x0004003d,0x00000006,0x00000216, + 0x0000020c,0x000200fe,0x00000216,0x00010038,0x00050036,0x0000002f,0x00000095,0x00000000, + 0x00000093,0x00030037,0x0000001b,0x00000094,0x000200f8,0x00000096,0x0004003d,0x000001c7, + 0x0000021a,0x00000219,0x0004003d,0x000001e2,0x0000021b,0x000001e4,0x00050056,0x000001e6, + 0x0000021c,0x0000021a,0x0000021b,0x0004003d,0x0000001a,0x0000021d,0x00000094,0x00070058, + 0x0000002f,0x0000021e,0x0000021c,0x0000021d,0x00000002,0x0000014f,0x000200fe,0x0000021e, + 0x00010038,0x00050036,0x00000006,0x00000098,0x00000000,0x0000007d,0x00030037,0x0000001b, + 0x00000097,0x000200f8,0x00000099,0x0004003d,0x0000001a,0x00000221,0x00000097,0x00050085, + 0x0000001a,0x00000225,0x00000221,0x00000224,0x0006000c,0x00000006,0x00000226,0x00000001, + 0x00000042,0x00000225,0x000200fe,0x00000226,0x00010038,0x00050036,0x00000002,0x000000a0, + 0x00000000,0x0000009c,0x00030037,0x0000009b,0x0000009d,0x00030037,0x0000000e,0x0000009e, + 0x00030037,0x00000006,0x0000009f,0x000200f8,0x000000a1,0x0004003b,0x0000000f,0x0000022b, + 0x00000007,0x00050041,0x0000000f,0x00000229,0x0000009d,0x0000019d,0x0003003e,0x00000229, + 0x0000009e,0x00050041,0x0000000f,0x0000022a,0x0000009d,0x000001a2,0x0003003e,0x0000022a, + 0x0000009e,0x0005008e,0x0000000e,0x0000022c,0x0000009e,0x0000009f,0x0003003e,0x0000022b, + 0x0000022c,0x0004003d,0x0000000e,0x0000022d,0x0000022b,0x00050041,0x0000000f,0x0000022e, + 0x0000009d,0x00000192,0x0003003e,0x0000022e,0x0000022d,0x0004003d,0x0000000e,0x00000230, + 0x0000022b,0x00050085,0x0000000e,0x00000231,0x0000009e,0x00000230,0x00050041,0x0000000f, + 0x00000232,0x0000009d,0x0000022f,0x0003003e,0x00000232,0x00000231,0x00050041,0x00000007, + 0x00000233,0x0000009d,0x00000198,0x0003003e,0x00000233,0x0000009f,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x000000a9,0x00000000,0x000000a4,0x00030037,0x000000a3,0x000000a5, + 0x00030037,0x0000009b,0x000000a6,0x00030037,0x0000000e,0x000000a7,0x00030037,0x00000006, + 0x000000a8,0x000200f8,0x000000aa,0x0004003b,0x0000009b,0x00000237,0x00000007,0x0004003b, + 0x0000000f,0x0000023c,0x00000007,0x0004003b,0x0000000f,0x0000023f,0x00000007,0x0004003b, + 0x0000000f,0x00000242,0x00000007,0x0004003b,0x0000000f,0x00000245,0x00000007,0x0004003b, + 0x0000000f,0x00000248,0x00000007,0x0004003d,0x000000a2,0x00000234,0x000000a5,0x000300f7, + 0x00000236,0x00000000,0x000400fa,0x00000234,0x00000235,0x0000023b,0x000200f8,0x00000235, + 0x0004003d,0x0000009a,0x00000238,0x000000a6,0x0003003e,0x00000237,0x00000238,0x00070039, + 0x00000002,0x00000239,0x000000a0,0x00000237,0x000000a7,0x000000a8,0x0004003d,0x0000009a, + 0x0000023a,0x00000237,0x0003003e,0x000000a6,0x0000023a,0x000200f9,0x00000236,0x000200f8, + 0x0000023b,0x00050041,0x0000000f,0x0000023d,0x000000a6,0x0000019d,0x0004003d,0x0000000e, + 0x0000023e,0x0000023d,0x0003003e,0x0000023c,0x0000023e,0x0003003e,0x0000023f,0x000000a7, + 0x00060039,0x0000000e,0x00000240,0x0000002d,0x0000023c,0x0000023f,0x00050041,0x0000000f, + 0x00000241,0x000000a6,0x0000019d,0x0003003e,0x00000241,0x00000240,0x00050041,0x0000000f, + 0x00000243,0x000000a6,0x000001a2,0x0004003d,0x0000000e,0x00000244,0x00000243,0x0003003e, + 0x00000242,0x00000244,0x0003003e,0x00000245,0x000000a7,0x00060039,0x0000000e,0x00000246, + 0x00000047,0x00000242,0x00000245,0x00050041,0x0000000f,0x00000247,0x000000a6,0x000001a2, + 0x0003003e,0x00000247,0x00000246,0x0005008e,0x0000000e,0x00000249,0x000000a7,0x000000a8, + 0x0003003e,0x00000248,0x00000249,0x0004003d,0x0000000e,0x0000024a,0x00000248,0x00050041, + 0x0000000f,0x0000024b,0x000000a6,0x00000192,0x0004003d,0x0000000e,0x0000024c,0x0000024b, + 0x00050081,0x0000000e,0x0000024d,0x0000024c,0x0000024a,0x00050041,0x0000000f,0x0000024e, + 0x000000a6,0x00000192,0x0003003e,0x0000024e,0x0000024d,0x0004003d,0x0000000e,0x0000024f, + 0x00000248,0x00050085,0x0000000e,0x00000250,0x000000a7,0x0000024f,0x00050041,0x0000000f, + 0x00000251,0x000000a6,0x0000022f,0x0004003d,0x0000000e,0x00000252,0x00000251,0x00050081, + 0x0000000e,0x00000253,0x00000252,0x00000250,0x00050041,0x0000000f,0x00000254,0x000000a6, + 0x0000022f,0x0003003e,0x00000254,0x00000253,0x00050041,0x00000007,0x00000255,0x000000a6, + 0x00000198,0x0004003d,0x00000006,0x00000256,0x00000255,0x00050081,0x00000006,0x00000257, + 0x00000256,0x000000a8,0x00050041,0x00000007,0x00000258,0x000000a6,0x00000198,0x0003003e, + 0x00000258,0x00000257,0x000200f9,0x00000236,0x000200f8,0x00000236,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x000000ad,0x00000000,0x000000ab,0x00030037,0x0000009b,0x000000ac, + 0x000200f8,0x000000ae,0x0004003b,0x00000007,0x0000025e,0x00000007,0x0004003b,0x0000000f, + 0x00000274,0x00000007,0x00050041,0x00000007,0x00000259,0x000000ac,0x00000198,0x0004003d, + 0x00000006,0x0000025a,0x00000259,0x0006000c,0x00000006,0x0000025b,0x00000001,0x00000004, + 0x0000025a,0x000500ba,0x000000a2,0x0000025d,0x0000025b,0x0000025c,0x000300f7,0x00000260, + 0x00000000,0x000400fa,0x0000025d,0x0000025f,0x00000263,0x000200f8,0x0000025f,0x00050041, + 0x00000007,0x00000261,0x000000ac,0x00000198,0x0004003d,0x00000006,0x00000262,0x00000261, + 0x0003003e,0x0000025e,0x00000262,0x000200f9,0x00000260,0x000200f8,0x00000263,0x0003003e, + 0x0000025e,0x00000150,0x000200f9,0x00000260,0x000200f8,0x00000260,0x0004003d,0x00000006, + 0x00000264,0x0000025e,0x00050041,0x00000007,0x00000265,0x000000ac,0x00000198,0x0003003e, + 0x00000265,0x00000264,0x00050041,0x00000007,0x00000266,0x000000ac,0x00000198,0x0004003d, + 0x00000006,0x00000267,0x00000266,0x00050041,0x0000000f,0x00000268,0x000000ac,0x00000192, + 0x0004003d,0x0000000e,0x00000269,0x00000268,0x00060050,0x0000000e,0x0000026a,0x00000267, + 0x00000267,0x00000267,0x00050088,0x0000000e,0x0000026b,0x00000269,0x0000026a,0x00050041, + 0x0000000f,0x0000026c,0x000000ac,0x00000192,0x0003003e,0x0000026c,0x0000026b,0x00050041, + 0x00000007,0x0000026d,0x000000ac,0x00000198,0x0004003d,0x00000006,0x0000026e,0x0000026d, + 0x00050041,0x0000000f,0x0000026f,0x000000ac,0x0000022f,0x0004003d,0x0000000e,0x00000270, + 0x0000026f,0x00060050,0x0000000e,0x00000271,0x0000026e,0x0000026e,0x0000026e,0x00050088, + 0x0000000e,0x00000272,0x00000270,0x00000271,0x00050041,0x0000000f,0x00000273,0x000000ac, + 0x0000022f,0x0003003e,0x00000273,0x00000272,0x00050041,0x0000000f,0x00000275,0x000000ac, + 0x0000022f,0x0004003d,0x0000000e,0x00000276,0x00000275,0x00050041,0x0000000f,0x00000277, + 0x000000ac,0x00000192,0x0004003d,0x0000000e,0x00000278,0x00000277,0x00050041,0x0000000f, + 0x00000279,0x000000ac,0x00000192,0x0004003d,0x0000000e,0x0000027a,0x00000279,0x00050085, + 0x0000000e,0x0000027b,0x00000278,0x0000027a,0x00050083,0x0000000e,0x0000027c,0x00000276, + 0x0000027b,0x0006000c,0x0000000e,0x0000027d,0x00000001,0x00000004,0x0000027c,0x0006000c, + 0x0000000e,0x0000027e,0x00000001,0x0000001f,0x0000027d,0x0003003e,0x00000274,0x0000027e, + 0x0004003d,0x0000000e,0x0000027f,0x00000274,0x00050041,0x0000000f,0x00000280,0x000000ac, + 0x0000022f,0x0003003e,0x00000280,0x0000027f,0x000100fd,0x00010038,0x00050036,0x0000000e, + 0x000000b1,0x00000000,0x000000af,0x00030037,0x0000000f,0x000000b0,0x000200f8,0x000000b2, + 0x0004003b,0x0000000f,0x00000281,0x00000007,0x00050041,0x00000007,0x00000282,0x000000b0, + 0x000001eb,0x0004003d,0x00000006,0x00000283,0x00000282,0x00050041,0x00000007,0x00000285, + 0x000000b0,0x00000284,0x0004003d,0x00000006,0x00000286,0x00000285,0x00050081,0x00000006, + 0x00000287,0x00000283,0x00000286,0x00050041,0x00000007,0x00000289,0x000000b0,0x00000288, + 0x0004003d,0x00000006,0x0000028a,0x00000289,0x00050083,0x00000006,0x0000028b,0x00000287, + 0x0000028a,0x00050041,0x00000007,0x0000028c,0x000000b0,0x000001eb,0x0004003d,0x00000006, + 0x0000028d,0x0000028c,0x00050041,0x00000007,0x0000028e,0x000000b0,0x00000288,0x0004003d, + 0x00000006,0x0000028f,0x0000028e,0x00050081,0x00000006,0x00000290,0x0000028d,0x0000028f, + 0x00050041,0x00000007,0x00000291,0x000000b0,0x000001eb,0x0004003d,0x00000006,0x00000292, + 0x00000291,0x00050041,0x00000007,0x00000293,0x000000b0,0x00000284,0x0004003d,0x00000006, + 0x00000294,0x00000293,0x00050083,0x00000006,0x00000295,0x00000292,0x00000294,0x00050041, + 0x00000007,0x00000296,0x000000b0,0x00000288,0x0004003d,0x00000006,0x00000297,0x00000296, + 0x00050083,0x00000006,0x00000298,0x00000295,0x00000297,0x00060050,0x0000000e,0x00000299, + 0x0000028b,0x00000290,0x00000298,0x0003003e,0x00000281,0x00000299,0x0004003d,0x0000000e, + 0x0000029a,0x00000281,0x000200fe,0x0000029a,0x00010038,0x00050036,0x0000000e,0x000000b4, + 0x00000000,0x000000af,0x00030037,0x0000000f,0x000000b3,0x000200f8,0x000000b5,0x0004003b, + 0x0000000f,0x0000029d,0x00000007,0x00050041,0x00000007,0x0000029f,0x000000b3,0x000001eb, + 0x0004003d,0x00000006,0x000002a0,0x0000029f,0x00050085,0x00000006,0x000002a1,0x0000029e, + 0x000002a0,0x00050041,0x00000007,0x000002a3,0x000000b3,0x00000284,0x0004003d,0x00000006, + 0x000002a4,0x000002a3,0x00050085,0x00000006,0x000002a5,0x000002a2,0x000002a4,0x00050081, + 0x00000006,0x000002a6,0x000002a1,0x000002a5,0x00050041,0x00000007,0x000002a7,0x000000b3, + 0x00000288,0x0004003d,0x00000006,0x000002a8,0x000002a7,0x00050085,0x00000006,0x000002a9, + 0x0000029e,0x000002a8,0x00050081,0x00000006,0x000002aa,0x000002a6,0x000002a9,0x00050041, + 0x00000007,0x000002ab,0x000000b3,0x000001eb,0x0004003d,0x00000006,0x000002ac,0x000002ab, + 0x00050085,0x00000006,0x000002ad,0x000002a2,0x000002ac,0x00050041,0x00000007,0x000002ae, + 0x000000b3,0x00000288,0x0004003d,0x00000006,0x000002af,0x000002ae,0x00050085,0x00000006, + 0x000002b0,0x000002a2,0x000002af,0x00050083,0x00000006,0x000002b1,0x000002ad,0x000002b0, + 0x00050041,0x00000007,0x000002b3,0x000000b3,0x000001eb,0x0004003d,0x00000006,0x000002b4, + 0x000002b3,0x00050085,0x00000006,0x000002b5,0x000002b2,0x000002b4,0x00050041,0x00000007, + 0x000002b6,0x000000b3,0x00000284,0x0004003d,0x00000006,0x000002b7,0x000002b6,0x00050085, + 0x00000006,0x000002b8,0x000002a2,0x000002b7,0x00050081,0x00000006,0x000002b9,0x000002b5, + 0x000002b8,0x00050041,0x00000007,0x000002ba,0x000000b3,0x00000288,0x0004003d,0x00000006, + 0x000002bb,0x000002ba,0x00050085,0x00000006,0x000002bc,0x0000029e,0x000002bb,0x00050083, + 0x00000006,0x000002bd,0x000002b9,0x000002bc,0x00060050,0x0000000e,0x000002be,0x000002aa, + 0x000002b1,0x000002bd,0x0003003e,0x0000029d,0x000002be,0x0004003d,0x0000000e,0x000002bf, + 0x0000029d,0x000200fe,0x000002bf,0x00010038,0x00050036,0x0000000e,0x000000b7,0x00000000, + 0x000000af,0x00030037,0x0000000f,0x000000b6,0x000200f8,0x000000b8,0x0004003b,0x00000007, + 0x000002c3,0x00000007,0x0004003b,0x00000007,0x000002c4,0x00000007,0x0004003b,0x00000007, + 0x000002c8,0x00000007,0x0004003b,0x00000007,0x000002cb,0x00000007,0x0004003b,0x00000007, + 0x000002cf,0x00000007,0x0004003b,0x00000007,0x000002d0,0x00000007,0x0004003d,0x0000000e, + 0x000002c2,0x000000b6,0x0003003e,0x000002c3,0x0000014f,0x00050041,0x00000007,0x000002c5, + 0x000000b6,0x000001eb,0x0004003d,0x00000006,0x000002c6,0x000002c5,0x0003003e,0x000002c4, + 0x000002c6,0x00060039,0x00000006,0x000002c7,0x0000003f,0x000002c3,0x000002c4,0x00050041, + 0x00000007,0x000002c9,0x000000b6,0x00000284,0x0004003d,0x00000006,0x000002ca,0x000002c9, + 0x0003003e,0x000002c8,0x000002ca,0x00050041,0x00000007,0x000002cc,0x000000b6,0x00000288, + 0x0004003d,0x00000006,0x000002cd,0x000002cc,0x0003003e,0x000002cb,0x000002cd,0x00060039, + 0x00000006,0x000002ce,0x0000003f,0x000002c8,0x000002cb,0x0003003e,0x000002cf,0x000002c7, + 0x0003003e,0x000002d0,0x000002ce,0x00060039,0x00000006,0x000002d1,0x0000003f,0x000002cf, + 0x000002d0,0x00050081,0x00000006,0x000002d2,0x000002d1,0x00000150,0x00060050,0x0000000e, + 0x000002d3,0x000002d2,0x000002d2,0x000002d2,0x00050088,0x0000000e,0x000002d4,0x000002c2, + 0x000002d3,0x000200fe,0x000002d4,0x00010038,0x00050036,0x0000000e,0x000000ba,0x00000000, + 0x000000af,0x00030037,0x0000000f,0x000000b9,0x000200f8,0x000000bb,0x0004003b,0x00000007, + 0x000002d9,0x00000007,0x0004003b,0x00000007,0x000002dc,0x00000007,0x0004003b,0x00000007, + 0x000002e0,0x00000007,0x0004003b,0x00000007,0x000002e3,0x00000007,0x0004003b,0x00000007, + 0x000002e6,0x00000007,0x0004003b,0x00000007,0x000002e7,0x00000007,0x0004003d,0x0000000e, + 0x000002d7,0x000000b9,0x00050041,0x00000007,0x000002da,0x000000b9,0x00000284,0x0004003d, + 0x00000006,0x000002db,0x000002da,0x0003003e,0x000002d9,0x000002db,0x00050041,0x00000007, + 0x000002dd,0x000000b9,0x00000288,0x0004003d,0x00000006,0x000002de,0x000002dd,0x0003003e, + 0x000002dc,0x000002de,0x00060039,0x00000006,0x000002df,0x0000003f,0x000002d9,0x000002dc, + 0x00050041,0x00000007,0x000002e1,0x000000b9,0x000001eb,0x0004003d,0x00000006,0x000002e2, + 0x000002e1,0x0003003e,0x000002e0,0x000002e2,0x0003003e,0x000002e3,0x000002df,0x00060039, + 0x00000006,0x000002e4,0x0000003f,0x000002e0,0x000002e3,0x00050083,0x00000006,0x000002e5, + 0x00000150,0x000002e4,0x0003003e,0x000002e6,0x000002d8,0x0003003e,0x000002e7,0x000002e5, + 0x00060039,0x00000006,0x000002e8,0x0000003f,0x000002e6,0x000002e7,0x00060050,0x0000000e, + 0x000002e9,0x000002e8,0x000002e8,0x000002e8,0x00050088,0x0000000e,0x000002ea,0x000002d7, + 0x000002e9,0x000200fe,0x000002ea,0x00010038,0x00050036,0x000000a2,0x000000be,0x00000000, + 0x000000bc,0x00030037,0x0000001b,0x000000bd,0x000200f8,0x000000bf,0x00050041,0x00000007, + 0x000002ed,0x000000bd,0x000001eb,0x0004003d,0x00000006,0x000002ee,0x000002ed,0x000500be, + 0x000000a2,0x000002ef,0x000002ee,0x0000014f,0x000300f7,0x000002f1,0x00000000,0x000400fa, + 0x000002ef,0x000002f0,0x000002f1,0x000200f8,0x000002f0,0x00050041,0x00000007,0x000002f2, + 0x000000bd,0x000001eb,0x0004003d,0x00000006,0x000002f3,0x000002f2,0x000500bc,0x000000a2, + 0x000002f4,0x000002f3,0x00000150,0x000200f9,0x000002f1,0x000200f8,0x000002f1,0x000700f5, + 0x000000a2,0x000002f5,0x000002ef,0x000000bf,0x000002f4,0x000002f0,0x000300f7,0x000002f7, + 0x00000000,0x000400fa,0x000002f5,0x000002f6,0x000002f7,0x000200f8,0x000002f6,0x00050041, + 0x00000007,0x000002f8,0x000000bd,0x00000284,0x0004003d,0x00000006,0x000002f9,0x000002f8, + 0x000500be,0x000000a2,0x000002fa,0x000002f9,0x0000014f,0x000300f7,0x000002fc,0x00000000, + 0x000400fa,0x000002fa,0x000002fb,0x000002fc,0x000200f8,0x000002fb,0x00050041,0x00000007, + 0x000002fd,0x000000bd,0x00000284,0x0004003d,0x00000006,0x000002fe,0x000002fd,0x000500bc, + 0x000000a2,0x000002ff,0x000002fe,0x00000150,0x000200f9,0x000002fc,0x000200f8,0x000002fc, + 0x000700f5,0x000000a2,0x00000300,0x000002fa,0x000002f6,0x000002ff,0x000002fb,0x000200f9, + 0x000002f7,0x000200f8,0x000002f7,0x000700f5,0x000000a2,0x00000301,0x000002f5,0x000002f1, + 0x00000300,0x000002fc,0x000200fe,0x00000301,0x00010038,0x00050036,0x00000055,0x000000c4, + 0x00000000,0x000000c0,0x00030037,0x0000006d,0x000000c1,0x00030037,0x0000006d,0x000000c2, + 0x00030037,0x0000006d,0x000000c3,0x000200f8,0x000000c5,0x0004003b,0x0000006d,0x00000304, + 0x00000007,0x0004003b,0x00000037,0x0000030b,0x00000007,0x0004003b,0x00000037,0x0000030e, + 0x00000007,0x0004003b,0x00000037,0x00000310,0x00000007,0x0004003b,0x00000037,0x00000311, + 0x00000007,0x0004003b,0x00000037,0x00000317,0x00000007,0x0004003b,0x00000037,0x0000031a, + 0x00000007,0x0004003b,0x00000037,0x0000031c,0x00000007,0x0004003b,0x00000037,0x0000031d, + 0x00000007,0x0004003d,0x00000055,0x00000305,0x000000c1,0x0004003d,0x00000055,0x00000306, + 0x000000c2,0x00050080,0x00000055,0x00000307,0x00000305,0x00000306,0x0003003e,0x00000304, + 0x00000307,0x00050041,0x00000037,0x00000308,0x000000c3,0x000001eb,0x0004003d,0x00000036, + 0x00000309,0x00000308,0x00050082,0x00000036,0x0000030a,0x00000309,0x0000022f,0x00050041, + 0x00000037,0x0000030c,0x00000304,0x000001eb,0x0004003d,0x00000036,0x0000030d,0x0000030c, + 0x0003003e,0x0000030b,0x0000030d,0x0003003e,0x0000030e,0x0000030a,0x00060039,0x00000036, + 0x0000030f,0x0000003b,0x0000030b,0x0000030e,0x0003003e,0x00000310,0x00000192,0x0003003e, + 0x00000311,0x0000030f,0x00060039,0x00000036,0x00000312,0x0000004f,0x00000310,0x00000311, + 0x00050041,0x00000037,0x00000313,0x00000304,0x000001eb,0x0003003e,0x00000313,0x00000312, + 0x00050041,0x00000037,0x00000314,0x000000c3,0x00000284,0x0004003d,0x00000036,0x00000315, + 0x00000314,0x00050082,0x00000036,0x00000316,0x00000315,0x0000022f,0x00050041,0x00000037, + 0x00000318,0x00000304,0x00000284,0x0004003d,0x00000036,0x00000319,0x00000318,0x0003003e, + 0x00000317,0x00000319,0x0003003e,0x0000031a,0x00000316,0x00060039,0x00000036,0x0000031b, + 0x0000003b,0x00000317,0x0000031a,0x0003003e,0x0000031c,0x00000192,0x0003003e,0x0000031d, + 0x0000031b,0x00060039,0x00000036,0x0000031e,0x0000004f,0x0000031c,0x0000031d,0x00050041, + 0x00000037,0x0000031f,0x00000304,0x00000284,0x0003003e,0x0000031f,0x0000031e,0x0004003d, + 0x00000055,0x00000320,0x00000304,0x000200fe,0x00000320,0x00010038,0x00050036,0x0000001a, + 0x000000ca,0x00000000,0x000000c6,0x00030037,0x0000001b,0x000000c7,0x00030037,0x0000006d, + 0x000000c8,0x00030037,0x0000006d,0x000000c9,0x000200f8,0x000000cb,0x0004003b,0x0000001b, + 0x00000323,0x00000007,0x0004003b,0x0000001b,0x00000328,0x00000007,0x0004003b,0x0000001b, + 0x0000032d,0x00000007,0x0004003b,0x0000001b,0x0000032f,0x00000007,0x0004003b,0x0000001b, + 0x00000331,0x00000007,0x0004003b,0x0000001b,0x00000332,0x00000007,0x0004003b,0x0000001b, + 0x00000334,0x00000007,0x0004003d,0x0000001a,0x00000324,0x000000c7,0x0004003d,0x00000055, + 0x00000325,0x000000c8,0x0004006f,0x0000001a,0x00000326,0x00000325,0x00050085,0x0000001a, + 0x00000327,0x00000324,0x00000326,0x0003003e,0x00000323,0x00000327,0x0004003d,0x00000055, + 0x0000032a,0x000000c8,0x0004006f,0x0000001a,0x0000032b,0x0000032a,0x00050083,0x0000001a, + 0x0000032c,0x0000032b,0x00000329,0x0004003d,0x0000001a,0x0000032e,0x00000323,0x0003003e, + 0x0000032d,0x0000032e,0x0003003e,0x0000032f,0x0000032c,0x00060039,0x0000001a,0x00000330, + 0x00000028,0x0000032d,0x0000032f,0x0003003e,0x00000331,0x00000329,0x0003003e,0x00000332, + 0x00000330,0x00060039,0x0000001a,0x00000333,0x00000043,0x00000331,0x00000332,0x0003003e, + 0x00000328,0x00000333,0x0004003d,0x0000001a,0x00000335,0x00000328,0x0004003d,0x00000055, + 0x00000336,0x000000c9,0x0004006f,0x0000001a,0x00000337,0x00000336,0x00050088,0x0000001a, + 0x00000338,0x00000335,0x00000337,0x0003003e,0x00000334,0x00000338,0x0004003d,0x0000001a, + 0x00000339,0x00000334,0x000200fe,0x00000339,0x00010038,0x00050036,0x000000a2,0x000000cf, + 0x00000000,0x000000cc,0x00030037,0x0000006d,0x000000cd,0x00030037,0x0000006d,0x000000ce, + 0x000200f8,0x000000d0,0x0004003d,0x00000055,0x0000033c,0x000000cd,0x0004007c,0x0000033d, + 0x0000033e,0x0000033c,0x0004003d,0x00000055,0x0000033f,0x000000ce,0x0004007c,0x0000033d, + 0x00000340,0x0000033f,0x000500b0,0x00000341,0x00000342,0x0000033e,0x00000340,0x0004009b, + 0x000000a2,0x00000343,0x00000342,0x000200fe,0x00000343,0x00010038,0x00050036,0x00000006, + 0x000000d2,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d1,0x000200f8,0x000000d3, + 0x0004003b,0x00000007,0x00000349,0x00000007,0x0004003d,0x00000006,0x00000346,0x000000d1, + 0x0006000c,0x00000006,0x00000347,0x00000001,0x00000004,0x00000346,0x000500b8,0x000000a2, + 0x00000348,0x00000347,0x000002d8,0x000300f7,0x0000034b,0x00000000,0x000400fa,0x00000348, + 0x0000034a,0x0000034c,0x000200f8,0x0000034a,0x0003003e,0x00000349,0x00000150,0x000200f9, + 0x0000034b,0x000200f8,0x0000034c,0x0004003d,0x00000006,0x0000034e,0x000000d1,0x00050085, + 0x00000006,0x0000034f,0x0000034d,0x0000034e,0x0006000c,0x00000006,0x00000350,0x00000001, + 0x0000000d,0x0000034f,0x0004003d,0x00000006,0x00000351,0x000000d1,0x00050085,0x00000006, + 0x00000352,0x0000034d,0x00000351,0x00050088,0x00000006,0x00000353,0x00000350,0x00000352, + 0x0004003d,0x00000006,0x00000355,0x000000d1,0x00050085,0x00000006,0x00000356,0x00000354, + 0x00000355,0x0006000c,0x00000006,0x00000357,0x00000001,0x0000000d,0x00000356,0x0004003d, + 0x00000006,0x00000358,0x000000d1,0x00050085,0x00000006,0x00000359,0x00000354,0x00000358, + 0x00050088,0x00000006,0x0000035a,0x00000357,0x00000359,0x00050085,0x00000006,0x0000035b, + 0x00000353,0x0000035a,0x0003003e,0x00000349,0x0000035b,0x000200f9,0x0000034b,0x000200f8, + 0x0000034b,0x0004003d,0x00000006,0x0000035c,0x00000349,0x000200fe,0x0000035c,0x00010038, + 0x00050036,0x00000006,0x000000d5,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d4, + 0x000200f8,0x000000d6,0x0004003b,0x00000007,0x00000362,0x00000007,0x0004003b,0x00000007, + 0x00000363,0x00000007,0x0004003b,0x00000007,0x00000365,0x00000007,0x0004003d,0x00000006, + 0x0000035f,0x000000d4,0x0006000c,0x00000006,0x00000360,0x00000001,0x00000004,0x0000035f, + 0x0003003e,0x00000362,0x00000360,0x0003003e,0x00000363,0x00000361,0x00060039,0x00000006, + 0x00000364,0x00000023,0x00000362,0x00000363,0x0003003e,0x000000d4,0x00000364,0x0004003d, + 0x00000006,0x00000366,0x000000d4,0x0003003e,0x00000365,0x00000366,0x00050039,0x00000006, + 0x00000367,0x000000d2,0x00000365,0x000200fe,0x00000367,0x00010038,0x00050036,0x00000006, + 0x000000d8,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d7,0x000200f8,0x000000d9, + 0x0004003b,0x00000007,0x0000036a,0x00000007,0x0004003b,0x00000007,0x0000036f,0x00000007, + 0x0004003d,0x00000006,0x0000036c,0x000000d7,0x00050085,0x00000006,0x0000036d,0x0000036b, + 0x0000036c,0x00050083,0x00000006,0x0000036e,0x0000036d,0x00000150,0x0003003e,0x0000036a, + 0x0000036e,0x0004003d,0x00000006,0x00000370,0x000000d7,0x00050085,0x00000006,0x00000371, + 0x0000029e,0x00000370,0x00050083,0x00000006,0x00000372,0x00000371,0x00000150,0x0003003e, + 0x0000036f,0x00000372,0x0004003d,0x00000006,0x00000374,0x0000036a,0x00050085,0x00000006, + 0x00000375,0x00000373,0x00000374,0x0004003d,0x00000006,0x00000376,0x0000036a,0x00050085, + 0x00000006,0x00000377,0x00000375,0x00000376,0x00050083,0x00000006,0x00000379,0x00000377, + 0x00000378,0x0004003d,0x00000006,0x0000037a,0x0000036f,0x0004003d,0x00000006,0x0000037b, + 0x0000036f,0x00050085,0x00000006,0x0000037c,0x0000037a,0x0000037b,0x00050085,0x00000006, + 0x0000037d,0x00000379,0x0000037c,0x000200fe,0x0000037d,0x00010038,0x00050036,0x00000006, + 0x000000db,0x00000000,0x00000016,0x00030037,0x00000007,0x000000da,0x000200f8,0x000000dc, + 0x0004003b,0x00000007,0x00000381,0x00000007,0x0004003b,0x00000007,0x00000383,0x00000007, + 0x0004003b,0x00000007,0x00000385,0x00000007,0x0004003d,0x00000006,0x00000382,0x000000da, + 0x0003003e,0x00000381,0x00000382,0x0003003e,0x00000383,0x00000380,0x00060039,0x00000006, + 0x00000384,0x00000023,0x00000381,0x00000383,0x0003003e,0x000000da,0x00000384,0x0004003d, + 0x00000006,0x00000386,0x000000da,0x0003003e,0x00000385,0x00000386,0x00050039,0x00000006, + 0x00000387,0x000000d8,0x00000385,0x000200fe,0x00000387,0x00010038,0x00050036,0x0000002f, + 0x000000e3,0x00000000,0x000000dd,0x00030037,0x00000030,0x000000de,0x00030037,0x00000030, + 0x000000df,0x00030037,0x00000030,0x000000e0,0x00030037,0x00000030,0x000000e1,0x00030037, + 0x00000007,0x000000e2,0x000200f8,0x000000e4,0x0004003b,0x00000007,0x0000038a,0x00000007, + 0x0004003b,0x00000007,0x0000038e,0x00000007,0x0004003b,0x00000007,0x00000390,0x00000007, + 0x0004003b,0x00000007,0x00000394,0x00000007,0x0004003b,0x00000007,0x00000396,0x00000007, + 0x0004003b,0x00000007,0x00000399,0x00000007,0x0004003b,0x00000007,0x0000039b,0x00000007, + 0x0004003b,0x00000007,0x0000039e,0x00000007,0x0004003d,0x00000006,0x0000038c,0x000000e2, + 0x00050083,0x00000006,0x0000038d,0x0000038b,0x0000038c,0x0003003e,0x0000038e,0x0000038d, + 0x00050039,0x00000006,0x0000038f,0x000000d5,0x0000038e,0x0003003e,0x0000038a,0x0000038f, + 0x0004003d,0x00000006,0x00000392,0x000000e2,0x00050083,0x00000006,0x00000393,0x00000391, + 0x00000392,0x0003003e,0x00000394,0x00000393,0x00050039,0x00000006,0x00000395,0x000000d5, + 0x00000394,0x0003003e,0x00000390,0x00000395,0x0004003d,0x00000006,0x00000397,0x000000e2, + 0x00050083,0x00000006,0x00000398,0x00000150,0x00000397,0x0003003e,0x00000399,0x00000398, + 0x00050039,0x00000006,0x0000039a,0x000000d5,0x00000399,0x0003003e,0x00000396,0x0000039a, + 0x0004003d,0x00000006,0x0000039c,0x000000e2,0x00050083,0x00000006,0x0000039d,0x00000361, + 0x0000039c,0x0003003e,0x0000039e,0x0000039d,0x00050039,0x00000006,0x0000039f,0x000000d5, + 0x0000039e,0x0003003e,0x0000039b,0x0000039f,0x0004003d,0x00000006,0x000003a0,0x0000038a, + 0x0004003d,0x0000002f,0x000003a1,0x000000de,0x0005008e,0x0000002f,0x000003a2,0x000003a1, + 0x000003a0,0x0004003d,0x00000006,0x000003a3,0x00000390,0x0004003d,0x0000002f,0x000003a4, + 0x000000df,0x0005008e,0x0000002f,0x000003a5,0x000003a4,0x000003a3,0x00050081,0x0000002f, + 0x000003a6,0x000003a2,0x000003a5,0x0004003d,0x00000006,0x000003a7,0x00000396,0x0004003d, + 0x0000002f,0x000003a8,0x000000e0,0x0005008e,0x0000002f,0x000003a9,0x000003a8,0x000003a7, + 0x00050081,0x0000002f,0x000003aa,0x000003a6,0x000003a9,0x0004003d,0x00000006,0x000003ab, + 0x0000039b,0x0004003d,0x0000002f,0x000003ac,0x000000e1,0x0005008e,0x0000002f,0x000003ad, + 0x000003ac,0x000003ab,0x00050081,0x0000002f,0x000003ae,0x000003aa,0x000003ad,0x0004003d, + 0x00000006,0x000003af,0x0000038a,0x0004003d,0x00000006,0x000003b0,0x00000390,0x00050081, + 0x00000006,0x000003b1,0x000003af,0x000003b0,0x0004003d,0x00000006,0x000003b2,0x00000396, + 0x00050081,0x00000006,0x000003b3,0x000003b1,0x000003b2,0x0004003d,0x00000006,0x000003b4, + 0x0000039b,0x00050081,0x00000006,0x000003b5,0x000003b3,0x000003b4,0x00070050,0x0000002f, + 0x000003b6,0x000003b5,0x000003b5,0x000003b5,0x000003b5,0x00050088,0x0000002f,0x000003b7, + 0x000003ae,0x000003b6,0x000200fe,0x000003b7,0x00010038,0x00050036,0x0000002f,0x000000ea, + 0x00000000,0x000000e7,0x00030037,0x000000e6,0x000000e8,0x00030037,0x0000001b,0x000000e9, + 0x000200f8,0x000000eb,0x0004003b,0x00000030,0x000003ba,0x00000007,0x0004003b,0x00000030, + 0x000003bb,0x00000007,0x0004003b,0x00000030,0x000003be,0x00000007,0x0004003b,0x00000030, + 0x000003c1,0x00000007,0x0004003b,0x00000030,0x000003c4,0x00000007,0x0004003b,0x00000007, + 0x000003c7,0x00000007,0x0004003b,0x00000030,0x000003cb,0x00000007,0x0004003b,0x00000030, + 0x000003ce,0x00000007,0x0004003b,0x00000030,0x000003d1,0x00000007,0x0004003b,0x00000030, + 0x000003d4,0x00000007,0x0004003b,0x00000030,0x000003d7,0x00000007,0x0004003b,0x00000007, + 0x000003da,0x00000007,0x0004003b,0x00000030,0x000003de,0x00000007,0x0004003b,0x00000030, + 0x000003e2,0x00000007,0x0004003b,0x00000030,0x000003e5,0x00000007,0x0004003b,0x00000030, + 0x000003e8,0x00000007,0x0004003b,0x00000030,0x000003eb,0x00000007,0x0004003b,0x00000007, + 0x000003ee,0x00000007,0x0004003b,0x00000030,0x000003f2,0x00000007,0x0004003b,0x00000030, + 0x000003f5,0x00000007,0x0004003b,0x00000030,0x000003f8,0x00000007,0x0004003b,0x00000030, + 0x000003fb,0x00000007,0x0004003b,0x00000030,0x000003fe,0x00000007,0x0004003b,0x00000007, + 0x00000401,0x00000007,0x0004003b,0x00000030,0x00000405,0x00000007,0x0004003b,0x00000030, + 0x00000406,0x00000007,0x0004003b,0x00000030,0x00000408,0x00000007,0x0004003b,0x00000030, + 0x0000040a,0x00000007,0x0004003b,0x00000030,0x0000040c,0x00000007,0x0004003b,0x00000007, + 0x0000040e,0x00000007,0x0004003b,0x00000414,0x00000415,0x00000007,0x0004003b,0x00000030, + 0x0000041f,0x00000007,0x0004003b,0x00000030,0x00000422,0x00000007,0x0004003b,0x00000037, + 0x00000425,0x00000007,0x0004003b,0x00000030,0x0000042e,0x00000007,0x0004003b,0x00000030, + 0x00000430,0x00000007,0x0004003b,0x00000030,0x00000435,0x00000007,0x0004003b,0x00000030, + 0x00000437,0x00000007,0x00050041,0x00000030,0x000003bc,0x000000e8,0x00000192,0x0004003d, + 0x0000002f,0x000003bd,0x000003bc,0x0003003e,0x000003bb,0x000003bd,0x00050041,0x00000030, + 0x000003bf,0x000000e8,0x0000022f,0x0004003d,0x0000002f,0x000003c0,0x000003bf,0x0003003e, + 0x000003be,0x000003c0,0x00050041,0x00000030,0x000003c2,0x000000e8,0x0000019d,0x0004003d, + 0x0000002f,0x000003c3,0x000003c2,0x0003003e,0x000003c1,0x000003c3,0x00050041,0x00000030, + 0x000003c5,0x000000e8,0x000001a2,0x0004003d,0x0000002f,0x000003c6,0x000003c5,0x0003003e, + 0x000003c4,0x000003c6,0x00050041,0x00000007,0x000003c8,0x000000e9,0x000001eb,0x0004003d, + 0x00000006,0x000003c9,0x000003c8,0x0003003e,0x000003c7,0x000003c9,0x00090039,0x0000002f, + 0x000003ca,0x000000e3,0x000003bb,0x000003be,0x000003c1,0x000003c4,0x000003c7,0x0003003e, + 0x000003ba,0x000003ca,0x00050041,0x00000030,0x000003cf,0x000000e8,0x00000198,0x0004003d, + 0x0000002f,0x000003d0,0x000003cf,0x0003003e,0x000003ce,0x000003d0,0x00050041,0x00000030, + 0x000003d2,0x000000e8,0x000003cc,0x0004003d,0x0000002f,0x000003d3,0x000003d2,0x0003003e, + 0x000003d1,0x000003d3,0x00050041,0x00000030,0x000003d5,0x000000e8,0x000003cd,0x0004003d, + 0x0000002f,0x000003d6,0x000003d5,0x0003003e,0x000003d4,0x000003d6,0x00050041,0x00000030, + 0x000003d8,0x000000e8,0x000001a7,0x0004003d,0x0000002f,0x000003d9,0x000003d8,0x0003003e, + 0x000003d7,0x000003d9,0x00050041,0x00000007,0x000003db,0x000000e9,0x000001eb,0x0004003d, + 0x00000006,0x000003dc,0x000003db,0x0003003e,0x000003da,0x000003dc,0x00090039,0x0000002f, + 0x000003dd,0x000000e3,0x000003ce,0x000003d1,0x000003d4,0x000003d7,0x000003da,0x0003003e, + 0x000003cb,0x000003dd,0x00050041,0x00000030,0x000003e3,0x000000e8,0x000003df,0x0004003d, + 0x0000002f,0x000003e4,0x000003e3,0x0003003e,0x000003e2,0x000003e4,0x00050041,0x00000030, + 0x000003e6,0x000000e8,0x000003e0,0x0004003d,0x0000002f,0x000003e7,0x000003e6,0x0003003e, + 0x000003e5,0x000003e7,0x00050041,0x00000030,0x000003e9,0x000000e8,0x000001ad,0x0004003d, + 0x0000002f,0x000003ea,0x000003e9,0x0003003e,0x000003e8,0x000003ea,0x00050041,0x00000030, + 0x000003ec,0x000000e8,0x000003e1,0x0004003d,0x0000002f,0x000003ed,0x000003ec,0x0003003e, + 0x000003eb,0x000003ed,0x00050041,0x00000007,0x000003ef,0x000000e9,0x000001eb,0x0004003d, + 0x00000006,0x000003f0,0x000003ef,0x0003003e,0x000003ee,0x000003f0,0x00090039,0x0000002f, + 0x000003f1,0x000000e3,0x000003e2,0x000003e5,0x000003e8,0x000003eb,0x000003ee,0x0003003e, + 0x000003de,0x000003f1,0x00050041,0x00000030,0x000003f6,0x000000e8,0x000003f3,0x0004003d, + 0x0000002f,0x000003f7,0x000003f6,0x0003003e,0x000003f5,0x000003f7,0x00050041,0x00000030, + 0x000003f9,0x000000e8,0x000001b2,0x0004003d,0x0000002f,0x000003fa,0x000003f9,0x0003003e, + 0x000003f8,0x000003fa,0x00050041,0x00000030,0x000003fc,0x000000e8,0x000003f4,0x0004003d, + 0x0000002f,0x000003fd,0x000003fc,0x0003003e,0x000003fb,0x000003fd,0x00050041,0x00000030, + 0x000003ff,0x000000e8,0x000001b8,0x0004003d,0x0000002f,0x00000400,0x000003ff,0x0003003e, + 0x000003fe,0x00000400,0x00050041,0x00000007,0x00000402,0x000000e9,0x000001eb,0x0004003d, + 0x00000006,0x00000403,0x00000402,0x0003003e,0x00000401,0x00000403,0x00090039,0x0000002f, + 0x00000404,0x000000e3,0x000003f5,0x000003f8,0x000003fb,0x000003fe,0x00000401,0x0003003e, + 0x000003f2,0x00000404,0x0004003d,0x0000002f,0x00000407,0x000003ba,0x0003003e,0x00000406, + 0x00000407,0x0004003d,0x0000002f,0x00000409,0x000003cb,0x0003003e,0x00000408,0x00000409, + 0x0004003d,0x0000002f,0x0000040b,0x000003de,0x0003003e,0x0000040a,0x0000040b,0x0004003d, + 0x0000002f,0x0000040d,0x000003f2,0x0003003e,0x0000040c,0x0000040d,0x00050041,0x00000007, + 0x0000040f,0x000000e9,0x00000284,0x0004003d,0x00000006,0x00000410,0x0000040f,0x0003003e, + 0x0000040e,0x00000410,0x00090039,0x0000002f,0x00000411,0x000000e3,0x00000406,0x00000408, + 0x0000040a,0x0000040c,0x0000040e,0x0003003e,0x00000405,0x00000411,0x00050041,0x00000030, + 0x00000416,0x000000e8,0x000003cc,0x0004003d,0x0000002f,0x00000417,0x00000416,0x00050041, + 0x00000030,0x00000418,0x000000e8,0x000003cd,0x0004003d,0x0000002f,0x00000419,0x00000418, + 0x00050041,0x00000030,0x0000041a,0x000000e8,0x000003e0,0x0004003d,0x0000002f,0x0000041b, + 0x0000041a,0x00050041,0x00000030,0x0000041c,0x000000e8,0x000001ad,0x0004003d,0x0000002f, + 0x0000041d,0x0000041c,0x00070050,0x00000413,0x0000041e,0x00000417,0x00000419,0x0000041b, + 0x0000041d,0x0003003e,0x00000415,0x0000041e,0x00050041,0x00000030,0x00000420,0x00000415, + 0x00000192,0x0004003d,0x0000002f,0x00000421,0x00000420,0x0003003e,0x0000041f,0x00000421, + 0x00050041,0x00000030,0x00000423,0x00000415,0x00000192,0x0004003d,0x0000002f,0x00000424, + 0x00000423,0x0003003e,0x00000422,0x00000424,0x0003003e,0x00000425,0x0000022f,0x000200f9, + 0x00000426,0x000200f8,0x00000426,0x000400f6,0x00000428,0x00000429,0x00000000,0x000200f9, + 0x0000042a,0x000200f8,0x0000042a,0x0004003d,0x00000036,0x0000042b,0x00000425,0x000500b1, + 0x000000a2,0x0000042c,0x0000042b,0x00000198,0x000400fa,0x0000042c,0x00000427,0x00000428, + 0x000200f8,0x00000427,0x0004003d,0x00000036,0x0000042d,0x00000425,0x0004003d,0x0000002f, + 0x0000042f,0x0000041f,0x0003003e,0x0000042e,0x0000042f,0x00050041,0x00000030,0x00000431, + 0x00000415,0x0000042d,0x0004003d,0x0000002f,0x00000432,0x00000431,0x0003003e,0x00000430, + 0x00000432,0x00060039,0x0000002f,0x00000433,0x00000034,0x0000042e,0x00000430,0x0003003e, + 0x0000041f,0x00000433,0x0004003d,0x00000036,0x00000434,0x00000425,0x0004003d,0x0000002f, + 0x00000436,0x00000422,0x0003003e,0x00000435,0x00000436,0x00050041,0x00000030,0x00000438, + 0x00000415,0x00000434,0x0004003d,0x0000002f,0x00000439,0x00000438,0x0003003e,0x00000437, + 0x00000439,0x00060039,0x0000002f,0x0000043a,0x0000004b,0x00000435,0x00000437,0x0003003e, + 0x00000422,0x0000043a,0x000200f9,0x00000429,0x000200f8,0x00000429,0x0004003d,0x00000036, + 0x0000043b,0x00000425,0x00050080,0x00000036,0x0000043c,0x0000043b,0x0000022f,0x0003003e, + 0x00000425,0x0000043c,0x000200f9,0x00000426,0x000200f8,0x00000428,0x0004003d,0x0000002f, + 0x0000043d,0x00000405,0x0004003d,0x0000002f,0x0000043e,0x0000041f,0x0004003d,0x0000002f, + 0x0000043f,0x00000422,0x0008000c,0x0000002f,0x00000440,0x00000001,0x0000002b,0x0000043d, + 0x0000043e,0x0000043f,0x0003003e,0x00000405,0x00000440,0x0004003d,0x0000002f,0x00000441, + 0x00000405,0x000200fe,0x00000441,0x00010038,0x00050036,0x00000055,0x000000ef,0x00000000, + 0x000000c0,0x00030037,0x0000006d,0x000000ec,0x00030037,0x0000006d,0x000000ed,0x00030037, + 0x0000006d,0x000000ee,0x000200f8,0x000000f0,0x0004003b,0x0000006d,0x00000444,0x00000007, + 0x0004003b,0x00000037,0x0000044b,0x00000007,0x0004003b,0x00000037,0x0000044e,0x00000007, + 0x0004003b,0x00000037,0x00000450,0x00000007,0x0004003b,0x00000037,0x00000451,0x00000007, + 0x0004003b,0x00000037,0x00000457,0x00000007,0x0004003b,0x00000037,0x0000045a,0x00000007, + 0x0004003b,0x00000037,0x0000045c,0x00000007,0x0004003b,0x00000037,0x0000045d,0x00000007, + 0x0004003d,0x00000055,0x00000445,0x000000ec,0x0004003d,0x00000055,0x00000446,0x000000ed, + 0x00050080,0x00000055,0x00000447,0x00000445,0x00000446,0x0003003e,0x00000444,0x00000447, + 0x00050041,0x00000037,0x00000448,0x000000ee,0x000001eb,0x0004003d,0x00000036,0x00000449, + 0x00000448,0x00050082,0x00000036,0x0000044a,0x00000449,0x0000019d,0x00050041,0x00000037, + 0x0000044c,0x00000444,0x000001eb,0x0004003d,0x00000036,0x0000044d,0x0000044c,0x0003003e, + 0x0000044b,0x0000044d,0x0003003e,0x0000044e,0x0000044a,0x00060039,0x00000036,0x0000044f, + 0x0000003b,0x0000044b,0x0000044e,0x0003003e,0x00000450,0x0000022f,0x0003003e,0x00000451, + 0x0000044f,0x00060039,0x00000036,0x00000452,0x0000004f,0x00000450,0x00000451,0x00050041, + 0x00000037,0x00000453,0x00000444,0x000001eb,0x0003003e,0x00000453,0x00000452,0x00050041, + 0x00000037,0x00000454,0x000000ee,0x00000284,0x0004003d,0x00000036,0x00000455,0x00000454, + 0x00050082,0x00000036,0x00000456,0x00000455,0x0000019d,0x00050041,0x00000037,0x00000458, + 0x00000444,0x00000284,0x0004003d,0x00000036,0x00000459,0x00000458,0x0003003e,0x00000457, + 0x00000459,0x0003003e,0x0000045a,0x00000456,0x00060039,0x00000036,0x0000045b,0x0000003b, + 0x00000457,0x0000045a,0x0003003e,0x0000045c,0x0000022f,0x0003003e,0x0000045d,0x0000045b, + 0x00060039,0x00000036,0x0000045e,0x0000004f,0x0000045c,0x0000045d,0x00050041,0x00000037, + 0x0000045f,0x00000444,0x00000284,0x0003003e,0x0000045f,0x0000045e,0x0004003d,0x00000055, + 0x00000460,0x00000444,0x000200fe,0x00000460,0x00010038,0x00050036,0x00000002,0x000000f4, + 0x00000000,0x000000f1,0x00030037,0x0000009b,0x000000f2,0x00030037,0x0000000f,0x000000f3, + 0x000200f8,0x000000f5,0x0004003d,0x0000000e,0x00000463,0x000000f3,0x00050041,0x0000000f, + 0x00000464,0x000000f2,0x0000019d,0x0004003d,0x0000000e,0x00000465,0x00000464,0x00050041, + 0x0000000f,0x00000466,0x000000f2,0x000001a2,0x0004003d,0x0000000e,0x00000467,0x00000466, + 0x0008000c,0x0000000e,0x00000468,0x00000001,0x0000002b,0x00000463,0x00000465,0x00000467, + 0x0003003e,0x000000f3,0x00000468,0x000100fd,0x00010038,0x00050036,0x00000006,0x000000f9, + 0x00000000,0x000000f6,0x00030037,0x0000001b,0x000000f7,0x00030037,0x00000007,0x000000f8, + 0x000200f8,0x000000fa,0x0004003b,0x0000001b,0x00000469,0x00000007,0x0004003b,0x00000007, + 0x0000046e,0x00000007,0x0004003b,0x00000007,0x00000472,0x00000007,0x0004003d,0x0000001a, + 0x0000046a,0x000000f7,0x0004003d,0x00000006,0x0000046b,0x000000f8,0x00050050,0x0000001a, + 0x0000046c,0x0000046b,0x0000046b,0x00050085,0x0000001a,0x0000046d,0x0000046a,0x0000046c, + 0x0003003e,0x00000469,0x0000046d,0x0004003d,0x0000001a,0x0000046f,0x00000469,0x0004003d, + 0x0000001a,0x00000470,0x00000469,0x00050094,0x00000006,0x00000471,0x0000046f,0x00000470, + 0x0003003e,0x00000472,0x00000471,0x00050039,0x00000006,0x00000473,0x000000db,0x00000472, + 0x0003003e,0x0000046e,0x00000473,0x0004003d,0x00000006,0x00000474,0x0000046e,0x000200fe, + 0x00000474,0x00010038,0x00050036,0x00000006,0x00000101,0x00000000,0x000000fe,0x00030037, + 0x000000fb,0x000000ff,0x00030037,0x000000fd,0x00000100,0x000200f8,0x00000102,0x0004003b, + 0x00000007,0x00000477,0x00000007,0x0004003b,0x00000007,0x00000480,0x00000007,0x0004003b, + 0x00000007,0x00000481,0x00000007,0x00040039,0x0000001a,0x00000478,0x00000062,0x00050050, + 0x0000001a,0x00000479,0x00000150,0x00000150,0x00050088,0x0000001a,0x0000047a,0x00000479, + 0x00000478,0x00050050,0x0000001a,0x0000047b,0x00000150,0x00000150,0x00050083,0x0000001a, + 0x0000047c,0x0000047a,0x0000047b,0x00050051,0x00000006,0x0000047d,0x0000047c,0x00000000, + 0x00050081,0x00000006,0x0000047e,0x00000150,0x0000047d,0x0003003e,0x00000477,0x0000047e, + 0x0003003e,0x00000480,0x0000047f,0x0004003d,0x00000006,0x00000482,0x00000477,0x0003003e, + 0x00000481,0x00000482,0x00060039,0x00000006,0x00000483,0x00000023,0x00000480,0x00000481, + 0x000200fe,0x00000483,0x00010038,0x00050036,0x0000000e,0x00000104,0x00000000,0x0000006e, + 0x00030037,0x0000006d,0x00000103,0x000200f8,0x00000105,0x0004003b,0x0000000f,0x00000486, + 0x00000007,0x0004003b,0x0000006d,0x00000488,0x00000007,0x0004003b,0x0000000f,0x0000048b, + 0x00000007,0x0004003b,0x0000000f,0x0000048c,0x00000007,0x0004003b,0x0000000f,0x00000490, + 0x00000007,0x0004003b,0x0000000f,0x00000491,0x00000007,0x0004003d,0x00000055,0x00000489, + 0x00000103,0x0003003e,0x00000488,0x00000489,0x00050039,0x0000000e,0x0000048a,0x00000070, + 0x00000488,0x0003003e,0x0000048b,0x00000487,0x0003003e,0x0000048c,0x0000048a,0x00060039, + 0x0000000e,0x0000048d,0x00000047,0x0000048b,0x0000048c,0x00040039,0x00000006,0x0000048e, + 0x00000091,0x0005008e,0x0000000e,0x0000048f,0x0000048d,0x0000048e,0x0003003e,0x00000486, + 0x0000048f,0x0004003d,0x0000000e,0x00000492,0x00000486,0x0003003e,0x00000491,0x00000492, + 0x00050039,0x0000000e,0x00000493,0x000000b4,0x00000491,0x0003003e,0x00000490,0x00000493, + 0x0004003d,0x0000000e,0x00000494,0x00000490,0x000200fe,0x00000494,0x00010038,0x00050036, + 0x00000002,0x00000109,0x00000000,0x00000106,0x00030037,0x000000fb,0x00000107,0x00030037, + 0x000000fd,0x00000108,0x000200f8,0x0000010a,0x0004003b,0x0000001b,0x00000497,0x00000007, + 0x0004003b,0x0000001b,0x0000049b,0x00000007,0x0004003b,0x0000006d,0x0000049f,0x00000007, + 0x0004003b,0x0000001b,0x000004a3,0x00000007,0x0004003b,0x0000001b,0x000004a9,0x00000007, + 0x0004003b,0x0000006d,0x000004ad,0x00000007,0x0004003b,0x000000a3,0x000004be,0x00000007, + 0x0004003b,0x000000a3,0x000004c4,0x00000007,0x0004003b,0x0000001b,0x000004ca,0x00000007, + 0x0004003b,0x000000a3,0x000004cd,0x00000007,0x0004003b,0x00000037,0x000004d0,0x00000007, + 0x0004003b,0x00000037,0x000004d1,0x00000007,0x0004003b,0x00000037,0x000004d9,0x00000007, + 0x0004003b,0x0000006d,0x000004e1,0x00000007,0x0004003b,0x00000037,0x000004e3,0x00000007, + 0x0004003b,0x00000037,0x000004ec,0x00000007,0x0004003b,0x0000006d,0x000004f5,0x00000007, + 0x0004003b,0x0000006d,0x000004fb,0x00000007,0x0004003b,0x0000006d,0x000004fd,0x00000007, + 0x0004003b,0x0000006d,0x000004ff,0x00000007,0x0004003b,0x0000006d,0x00000500,0x00000007, + 0x0004003b,0x00000504,0x00000505,0x00000007,0x0004003b,0x0000006d,0x00000507,0x00000007, + 0x0004003b,0x0000000f,0x0000051d,0x00000007,0x0004003b,0x0000000f,0x00000521,0x00000007, + 0x0004003b,0x0000000f,0x00000523,0x00000007,0x0004003b,0x00000007,0x00000528,0x00000007, + 0x0004003b,0x000000fd,0x00000529,0x00000007,0x0004003b,0x00000007,0x0000052d,0x00000007, + 0x0004003b,0x00000007,0x00000532,0x00000007,0x0004003b,0x00000007,0x00000533,0x00000007, + 0x0004003b,0x00000007,0x00000535,0x00000007,0x0004003b,0x00000007,0x0000053f,0x00000007, + 0x0004003b,0x00000007,0x00000541,0x00000007,0x0004003b,0x00000007,0x00000542,0x00000007, + 0x0004003b,0x00000007,0x00000544,0x00000007,0x0004003b,0x00000007,0x00000545,0x00000007, + 0x0004003b,0x00000007,0x00000547,0x00000007,0x0004003b,0x00000007,0x00000548,0x00000007, + 0x0004003b,0x00000007,0x0000054a,0x00000007,0x0004003b,0x00000007,0x0000054c,0x00000007, + 0x0004003b,0x00000037,0x0000054f,0x00000007,0x0004003b,0x00000037,0x00000557,0x00000007, + 0x0004003b,0x0000006d,0x0000055f,0x00000007,0x0004003b,0x00000037,0x00000561,0x00000007, + 0x0004003b,0x00000037,0x0000056a,0x00000007,0x0004003b,0x0000001b,0x00000573,0x00000007, + 0x0004003b,0x0000001b,0x00000578,0x00000007,0x0004003b,0x0000006d,0x0000057c,0x00000007, + 0x0004003b,0x00000007,0x00000582,0x00000007,0x0004003b,0x0000006d,0x00000585,0x00000007, + 0x0004003b,0x0000006d,0x00000586,0x00000007,0x0004003b,0x00000007,0x0000058d,0x00000007, + 0x0004003b,0x0000001b,0x0000058f,0x00000007,0x0004003b,0x00000007,0x00000591,0x00000007, + 0x0004003b,0x00000007,0x000005a3,0x00000007,0x0004003b,0x00000007,0x000005a7,0x00000007, + 0x0004003b,0x000000a3,0x000005ae,0x00000007,0x0004003b,0x000000a3,0x000005b8,0x00000007, + 0x0004003b,0x0000009b,0x000005ba,0x00000007,0x0004003b,0x0000009b,0x000005c6,0x00000007, + 0x0004003b,0x0000009b,0x000005e5,0x00000007,0x0004003b,0x0000000f,0x000005e8,0x00000007, + 0x0004003b,0x0000000f,0x000005f1,0x00000007,0x0004003b,0x0000000f,0x000005f5,0x00000007, + 0x0004003b,0x0000000f,0x000005f7,0x00000007,0x00050051,0x00000055,0x00000498,0x00000107, + 0x00000000,0x0004006f,0x0000001a,0x00000499,0x00000498,0x00050081,0x0000001a,0x0000049a, + 0x00000499,0x00000329,0x0003003e,0x00000497,0x0000049a,0x0004003d,0x0000001a,0x0000049c, + 0x00000497,0x00040039,0x0000001a,0x0000049d,0x00000062,0x00050085,0x0000001a,0x0000049e, + 0x0000049c,0x0000049d,0x0003003e,0x0000049b,0x0000049e,0x0004003d,0x0000001a,0x000004a0, + 0x0000049b,0x0006000c,0x0000001a,0x000004a1,0x00000001,0x00000008,0x000004a0,0x0004006e, + 0x00000055,0x000004a2,0x000004a1,0x0003003e,0x0000049f,0x000004a2,0x0004003d,0x00000055, + 0x000004a4,0x0000049f,0x0004006f,0x0000001a,0x000004a5,0x000004a4,0x00050081,0x0000001a, + 0x000004a6,0x000004a5,0x00000329,0x00040039,0x0000001a,0x000004a7,0x00000060,0x00050083, + 0x0000001a,0x000004a8,0x000004a6,0x000004a7,0x0003003e,0x000004a3,0x000004a8,0x0004003d, + 0x0000001a,0x000004aa,0x000004a3,0x0004003d,0x0000001a,0x000004ab,0x0000049b,0x00050083, + 0x0000001a,0x000004ac,0x000004aa,0x000004ab,0x0003003e,0x000004a9,0x000004ac,0x00050041, + 0x00000007,0x000004ae,0x000004a3,0x000001eb,0x0004003d,0x00000006,0x000004af,0x000004ae, + 0x00050041,0x00000007,0x000004b0,0x0000049b,0x000001eb,0x0004003d,0x00000006,0x000004b1, + 0x000004b0,0x000500ba,0x000000a2,0x000004b2,0x000004af,0x000004b1,0x000600a9,0x00000036, + 0x000004b5,0x000004b2,0x000004b3,0x000004b4,0x00050041,0x00000037,0x000004b6,0x000004ad, + 0x000001eb,0x0003003e,0x000004b6,0x000004b5,0x00050041,0x00000007,0x000004b7,0x000004a3, + 0x00000284,0x0004003d,0x00000006,0x000004b8,0x000004b7,0x00050041,0x00000007,0x000004b9, + 0x0000049b,0x00000284,0x0004003d,0x00000006,0x000004ba,0x000004b9,0x000500ba,0x000000a2, + 0x000004bb,0x000004b8,0x000004ba,0x000600a9,0x00000036,0x000004bc,0x000004bb,0x000004b3, + 0x000004b4,0x00050041,0x00000037,0x000004bd,0x000004ad,0x00000284,0x0003003e,0x000004bd, + 0x000004bc,0x00050041,0x00000007,0x000004bf,0x000004a3,0x00000284,0x0004003d,0x00000006, + 0x000004c0,0x000004bf,0x00050041,0x00000007,0x000004c1,0x0000049b,0x00000284,0x0004003d, + 0x00000006,0x000004c2,0x000004c1,0x000500ba,0x000000a2,0x000004c3,0x000004c0,0x000004c2, + 0x0003003e,0x000004be,0x000004c3,0x00050041,0x00000007,0x000004c5,0x000004a3,0x000001eb, + 0x0004003d,0x00000006,0x000004c6,0x000004c5,0x00050041,0x00000007,0x000004c7,0x0000049b, + 0x000001eb,0x0004003d,0x00000006,0x000004c8,0x000004c7,0x000500ba,0x000000a2,0x000004c9, + 0x000004c6,0x000004c8,0x0003003e,0x000004c4,0x000004c9,0x0004003d,0x00000055,0x000004cb, + 0x000004ad,0x0004006f,0x0000001a,0x000004cc,0x000004cb,0x0003003e,0x000004ca,0x000004cc, + 0x00050051,0x00000006,0x000004ce,0x00000107,0x0000000a,0x000500b4,0x000000a2,0x000004cf, + 0x000004ce,0x0000014f,0x0003003e,0x000004cd,0x000004cf,0x0003003e,0x000004d0,0x00000192, + 0x0003003e,0x000004d1,0x00000192,0x000200f9,0x000004d2,0x000200f8,0x000004d2,0x000400f6, + 0x000004d4,0x000004d5,0x00000000,0x000200f9,0x000004d6,0x000200f8,0x000004d6,0x0004003d, + 0x00000036,0x000004d7,0x000004d1,0x000500b1,0x000000a2,0x000004d8,0x000004d7,0x000001a2, + 0x000400fa,0x000004d8,0x000004d3,0x000004d4,0x000200f8,0x000004d3,0x0003003e,0x000004d9, + 0x00000192,0x000200f9,0x000004da,0x000200f8,0x000004da,0x000400f6,0x000004dc,0x000004dd, + 0x00000000,0x000200f9,0x000004de,0x000200f8,0x000004de,0x0004003d,0x00000036,0x000004df, + 0x000004d9,0x000500b1,0x000000a2,0x000004e0,0x000004df,0x000001a2,0x000400fa,0x000004e0, + 0x000004db,0x000004dc,0x000200f8,0x000004db,0x0004003d,0x000000a2,0x000004e2,0x000004c4, + 0x000300f7,0x000004e5,0x00000000,0x000400fa,0x000004e2,0x000004e4,0x000004e8,0x000200f8, + 0x000004e4,0x0004003d,0x00000036,0x000004e6,0x000004d9,0x00050082,0x00000036,0x000004e7, + 0x000001a2,0x000004e6,0x0003003e,0x000004e3,0x000004e7,0x000200f9,0x000004e5,0x000200f8, + 0x000004e8,0x0004003d,0x00000036,0x000004e9,0x000004d9,0x0003003e,0x000004e3,0x000004e9, + 0x000200f9,0x000004e5,0x000200f8,0x000004e5,0x0004003d,0x00000036,0x000004ea,0x000004e3, + 0x0004003d,0x000000a2,0x000004eb,0x000004be,0x000300f7,0x000004ee,0x00000000,0x000400fa, + 0x000004eb,0x000004ed,0x000004f1,0x000200f8,0x000004ed,0x0004003d,0x00000036,0x000004ef, + 0x000004d1,0x00050082,0x00000036,0x000004f0,0x000001a2,0x000004ef,0x0003003e,0x000004ec, + 0x000004f0,0x000200f9,0x000004ee,0x000200f8,0x000004f1,0x0004003d,0x00000036,0x000004f2, + 0x000004d1,0x0003003e,0x000004ec,0x000004f2,0x000200f9,0x000004ee,0x000200f8,0x000004ee, + 0x0004003d,0x00000036,0x000004f3,0x000004ec,0x00050050,0x00000055,0x000004f4,0x000004ea, + 0x000004f3,0x0003003e,0x000004e1,0x000004f4,0x0004003d,0x00000055,0x000004f6,0x0000049f, + 0x0004003d,0x00000055,0x000004f7,0x000004ad,0x00050080,0x00000055,0x000004f8,0x000004f6, + 0x000004f7,0x0004003d,0x00000055,0x000004f9,0x000004e1,0x00050080,0x00000055,0x000004fa, + 0x000004f8,0x000004f9,0x0003003e,0x000004f5,0x000004fa,0x00040039,0x00000055,0x000004fc, + 0x00000057,0x0004003d,0x00000055,0x000004fe,0x000004f5,0x0003003e,0x000004fd,0x000004fe, + 0x0003003e,0x000004ff,0x0000020f,0x0003003e,0x00000500,0x000004fc,0x00070039,0x00000055, + 0x00000501,0x000000c4,0x000004fd,0x000004ff,0x00000500,0x0003003e,0x000004fb,0x00000501, + 0x0004003d,0x00000036,0x00000506,0x000004d0,0x0004003d,0x00000055,0x00000508,0x000004fb, + 0x0003003e,0x00000507,0x00000508,0x00050039,0x0000000e,0x00000509,0x00000104,0x00000507, + 0x00050041,0x0000000f,0x0000050a,0x00000505,0x00000506,0x0003003e,0x0000050a,0x00000509, + 0x0004003d,0x00000036,0x0000050b,0x000004d0,0x00050080,0x00000036,0x0000050c,0x0000050b, + 0x0000022f,0x0003003e,0x000004d0,0x0000050c,0x000200f9,0x000004dd,0x000200f8,0x000004dd, + 0x0004003d,0x00000036,0x0000050d,0x000004d9,0x00050080,0x00000036,0x0000050e,0x0000050d, + 0x0000022f,0x0003003e,0x000004d9,0x0000050e,0x000200f9,0x000004da,0x000200f8,0x000004dc, + 0x000200f9,0x000004d5,0x000200f8,0x000004d5,0x0004003d,0x00000036,0x0000050f,0x000004d1, + 0x00050080,0x00000036,0x00000510,0x0000050f,0x0000022f,0x0003003e,0x000004d1,0x00000510, + 0x000200f9,0x000004d2,0x000200f8,0x000004d4,0x0004003d,0x000000a2,0x00000511,0x000004cd, + 0x000300f7,0x00000513,0x00000000,0x000400fa,0x00000511,0x00000512,0x00000513,0x000200f8, + 0x00000512,0x0003003e,0x000004d0,0x00000192,0x000200f9,0x00000514,0x000200f8,0x00000514, + 0x000400f6,0x00000516,0x00000517,0x00000000,0x000200f9,0x00000518,0x000200f8,0x00000518, + 0x0004003d,0x00000036,0x00000519,0x000004d0,0x000500b1,0x000000a2,0x0000051a,0x00000519, + 0x000003e0,0x000400fa,0x0000051a,0x00000515,0x00000516,0x000200f8,0x00000515,0x0004003d, + 0x00000036,0x0000051b,0x000004d0,0x0004003d,0x00000036,0x0000051c,0x000004d0,0x00050041, + 0x0000000f,0x0000051e,0x00000505,0x0000051c,0x0004003d,0x0000000e,0x0000051f,0x0000051e, + 0x0003003e,0x0000051d,0x0000051f,0x00050039,0x0000000e,0x00000520,0x000000b1,0x0000051d, + 0x0003003e,0x00000521,0x00000520,0x00050039,0x0000000e,0x00000522,0x000000b7,0x00000521, + 0x0003003e,0x00000523,0x00000522,0x00050039,0x0000000e,0x00000524,0x000000b4,0x00000523, + 0x00050041,0x0000000f,0x00000525,0x00000505,0x0000051b,0x0003003e,0x00000525,0x00000524, + 0x000200f9,0x00000517,0x000200f8,0x00000517,0x0004003d,0x00000036,0x00000526,0x000004d0, + 0x00050080,0x00000036,0x00000527,0x00000526,0x0000022f,0x0003003e,0x000004d0,0x00000527, + 0x000200f9,0x00000514,0x000200f8,0x00000516,0x000200f9,0x00000513,0x000200f8,0x00000513, + 0x0004003d,0x000000fc,0x0000052a,0x00000108,0x0003003e,0x00000529,0x0000052a,0x00060039, + 0x00000006,0x0000052b,0x00000101,0x00000107,0x00000529,0x0004003d,0x000000fc,0x0000052c, + 0x00000529,0x0003003e,0x00000108,0x0000052c,0x0003003e,0x00000528,0x0000052b,0x0004003d, + 0x00000006,0x0000052e,0x00000528,0x00050081,0x00000006,0x0000052f,0x00000150,0x0000052e, + 0x00050085,0x00000006,0x00000531,0x0000052f,0x00000530,0x0003003e,0x00000532,0x00000150, + 0x0003003e,0x00000533,0x00000531,0x00060039,0x00000006,0x00000534,0x0000003f,0x00000532, + 0x00000533,0x0003003e,0x0000052d,0x00000534,0x00050051,0x00000006,0x00000536,0x00000107, + 0x00000007,0x00050085,0x00000006,0x00000537,0x00000536,0x000002a2,0x00050083,0x00000006, + 0x00000538,0x00000150,0x00000537,0x00050051,0x00000006,0x00000539,0x00000107,0x00000009, + 0x00050083,0x00000006,0x0000053a,0x00000150,0x00000539,0x00050041,0x00000007,0x0000053b, + 0x00000108,0x00000198,0x0004003d,0x00000006,0x0000053c,0x0000053b,0x00050085,0x00000006, + 0x0000053e,0x0000053c,0x0000053d,0x0003003e,0x0000053f,0x0000053e,0x00050039,0x00000006, + 0x00000540,0x00000018,0x0000053f,0x0003003e,0x00000541,0x0000053a,0x0003003e,0x00000542, + 0x00000540,0x00060039,0x00000006,0x00000543,0x00000023,0x00000541,0x00000542,0x0003003e, + 0x00000544,0x00000538,0x0003003e,0x00000545,0x00000543,0x00060039,0x00000006,0x00000546, + 0x00000023,0x00000544,0x00000545,0x0003003e,0x00000535,0x00000546,0x0004003d,0x00000006, + 0x00000549,0x0000052d,0x0003003e,0x00000548,0x00000549,0x0004003d,0x00000006,0x0000054b, + 0x00000528,0x0003003e,0x0000054a,0x0000054b,0x0004003d,0x00000006,0x0000054d,0x00000535, + 0x0003003e,0x0000054c,0x0000054d,0x00070039,0x00000006,0x0000054e,0x0000000c,0x00000548, + 0x0000054a,0x0000054c,0x0003003e,0x00000547,0x0000054e,0x0003003e,0x000004d0,0x00000192, + 0x0003003e,0x0000054f,0x00000192,0x000200f9,0x00000550,0x000200f8,0x00000550,0x000400f6, + 0x00000552,0x00000553,0x00000000,0x000200f9,0x00000554,0x000200f8,0x00000554,0x0004003d, + 0x00000036,0x00000555,0x0000054f,0x000500b1,0x000000a2,0x00000556,0x00000555,0x000001a2, + 0x000400fa,0x00000556,0x00000551,0x00000552,0x000200f8,0x00000551,0x0003003e,0x00000557, + 0x00000192,0x000200f9,0x00000558,0x000200f8,0x00000558,0x000400f6,0x0000055a,0x0000055b, + 0x00000000,0x000200f9,0x0000055c,0x000200f8,0x0000055c,0x0004003d,0x00000036,0x0000055d, + 0x00000557,0x000500b1,0x000000a2,0x0000055e,0x0000055d,0x000001a2,0x000400fa,0x0000055e, + 0x00000559,0x0000055a,0x000200f8,0x00000559,0x0004003d,0x000000a2,0x00000560,0x000004c4, + 0x000300f7,0x00000563,0x00000000,0x000400fa,0x00000560,0x00000562,0x00000566,0x000200f8, + 0x00000562,0x0004003d,0x00000036,0x00000564,0x00000557,0x00050082,0x00000036,0x00000565, + 0x000001a2,0x00000564,0x0003003e,0x00000561,0x00000565,0x000200f9,0x00000563,0x000200f8, + 0x00000566,0x0004003d,0x00000036,0x00000567,0x00000557,0x0003003e,0x00000561,0x00000567, + 0x000200f9,0x00000563,0x000200f8,0x00000563,0x0004003d,0x00000036,0x00000568,0x00000561, + 0x0004003d,0x000000a2,0x00000569,0x000004be,0x000300f7,0x0000056c,0x00000000,0x000400fa, + 0x00000569,0x0000056b,0x0000056f,0x000200f8,0x0000056b,0x0004003d,0x00000036,0x0000056d, + 0x0000054f,0x00050082,0x00000036,0x0000056e,0x000001a2,0x0000056d,0x0003003e,0x0000056a, + 0x0000056e,0x000200f9,0x0000056c,0x000200f8,0x0000056f,0x0004003d,0x00000036,0x00000570, + 0x0000054f,0x0003003e,0x0000056a,0x00000570,0x000200f9,0x0000056c,0x000200f8,0x0000056c, + 0x0004003d,0x00000036,0x00000571,0x0000056a,0x00050050,0x00000055,0x00000572,0x00000568, + 0x00000571,0x0003003e,0x0000055f,0x00000572,0x0004003d,0x0000001a,0x00000574,0x000004ca, + 0x0004003d,0x00000055,0x00000575,0x0000055f,0x0004006f,0x0000001a,0x00000576,0x00000575, + 0x00050081,0x0000001a,0x00000577,0x00000574,0x00000576,0x0003003e,0x00000573,0x00000577, + 0x0004003d,0x0000001a,0x00000579,0x000004a9,0x0004003d,0x0000001a,0x0000057a,0x00000573, + 0x00050081,0x0000001a,0x0000057b,0x00000579,0x0000057a,0x0003003e,0x00000578,0x0000057b, + 0x0004003d,0x00000055,0x0000057d,0x0000049f,0x0004003d,0x00000055,0x0000057e,0x000004ad, + 0x00050080,0x00000055,0x0000057f,0x0000057d,0x0000057e,0x0004003d,0x00000055,0x00000580, + 0x0000055f,0x00050080,0x00000055,0x00000581,0x0000057f,0x00000580,0x0003003e,0x0000057c, + 0x00000581,0x0004003d,0x00000055,0x00000583,0x0000057c,0x00040039,0x00000055,0x00000584, + 0x00000057,0x0003003e,0x00000585,0x00000583,0x0003003e,0x00000586,0x00000584,0x00060039, + 0x000000a2,0x00000587,0x000000cf,0x00000585,0x00000586,0x000600a9,0x00000006,0x00000588, + 0x00000587,0x00000150,0x0000014f,0x0003003e,0x00000582,0x00000588,0x0004003d,0x000000a2, + 0x00000589,0x000004cd,0x000400a8,0x000000a2,0x0000058a,0x00000589,0x000300f7,0x0000058c, + 0x00000000,0x000400fa,0x0000058a,0x0000058b,0x0000058c,0x000200f8,0x0000058b,0x0004003d, + 0x00000006,0x0000058e,0x00000582,0x0004003d,0x0000001a,0x00000590,0x00000578,0x0003003e, + 0x0000058f,0x00000590,0x0004003d,0x00000006,0x00000592,0x00000547,0x0003003e,0x00000591, + 0x00000592,0x00060039,0x00000006,0x00000593,0x000000f9,0x0000058f,0x00000591,0x00050085, + 0x00000006,0x00000594,0x0000058e,0x00000593,0x0003003e,0x0000058d,0x00000594,0x0004003d, + 0x00000036,0x00000595,0x000004d0,0x00050041,0x0000000f,0x00000596,0x00000505,0x00000595, + 0x0004003d,0x0000000e,0x00000597,0x00000596,0x0004003d,0x00000006,0x00000598,0x0000058d, + 0x0005008e,0x0000000e,0x00000599,0x00000597,0x00000598,0x00050041,0x0000000f,0x0000059a, + 0x00000108,0x0000022f,0x0004003d,0x0000000e,0x0000059b,0x0000059a,0x00050081,0x0000000e, + 0x0000059c,0x0000059b,0x00000599,0x00050041,0x0000000f,0x0000059d,0x00000108,0x0000022f, + 0x0003003e,0x0000059d,0x0000059c,0x0004003d,0x00000006,0x0000059e,0x0000058d,0x00050041, + 0x00000007,0x0000059f,0x00000108,0x0000019d,0x0004003d,0x00000006,0x000005a0,0x0000059f, + 0x00050081,0x00000006,0x000005a1,0x000005a0,0x0000059e,0x00050041,0x00000007,0x000005a2, + 0x00000108,0x0000019d,0x0003003e,0x000005a2,0x000005a1,0x000200f9,0x0000058c,0x000200f8, + 0x0000058c,0x0004003d,0x0000001a,0x000005a4,0x00000578,0x0004003d,0x0000001a,0x000005a5, + 0x00000578,0x00050094,0x00000006,0x000005a6,0x000005a4,0x000005a5,0x0003003e,0x000005a3, + 0x000005a6,0x0004003d,0x00000006,0x000005a9,0x000005a3,0x00050085,0x00000006,0x000005aa, + 0x000005a8,0x000005a9,0x0006000c,0x00000006,0x000005ab,0x00000001,0x0000001b,0x000005aa, + 0x0004003d,0x00000006,0x000005ac,0x00000582,0x00050085,0x00000006,0x000005ad,0x000005ab, + 0x000005ac,0x0003003e,0x000005a7,0x000005ad,0x0004003d,0x00000036,0x000005af,0x0000054f, + 0x000500aa,0x000000a2,0x000005b0,0x000005af,0x00000192,0x0004003d,0x00000036,0x000005b1, + 0x00000557,0x000500aa,0x000000a2,0x000005b2,0x000005b1,0x00000192,0x000500a7,0x000000a2, + 0x000005b3,0x000005b0,0x000005b2,0x0003003e,0x000005ae,0x000005b3,0x0004003d,0x00000036, + 0x000005b4,0x000004d0,0x00050041,0x0000000f,0x000005b5,0x00000505,0x000005b4,0x0004003d, + 0x0000000e,0x000005b6,0x000005b5,0x0004003d,0x00000006,0x000005b7,0x000005a7,0x0004003d, + 0x000000a2,0x000005b9,0x000005ae,0x0003003e,0x000005b8,0x000005b9,0x00050041,0x0000009b, + 0x000005bb,0x00000108,0x00000192,0x0004003d,0x0000009a,0x000005bc,0x000005bb,0x0003003e, + 0x000005ba,0x000005bc,0x00080039,0x00000002,0x000005bd,0x000000a9,0x000005b8,0x000005ba, + 0x000005b6,0x000005b7,0x0004003d,0x0000009a,0x000005be,0x000005ba,0x00050041,0x0000009b, + 0x000005bf,0x00000108,0x00000192,0x0003003e,0x000005bf,0x000005be,0x0004003d,0x00000036, + 0x000005c0,0x000004d0,0x00050080,0x00000036,0x000005c1,0x000005c0,0x0000022f,0x0003003e, + 0x000004d0,0x000005c1,0x000200f9,0x0000055b,0x000200f8,0x0000055b,0x0004003d,0x00000036, + 0x000005c2,0x00000557,0x00050080,0x00000036,0x000005c3,0x000005c2,0x0000022f,0x0003003e, + 0x00000557,0x000005c3,0x000200f9,0x00000558,0x000200f8,0x0000055a,0x000200f9,0x00000553, + 0x000200f8,0x00000553,0x0004003d,0x00000036,0x000005c4,0x0000054f,0x00050080,0x00000036, + 0x000005c5,0x000005c4,0x0000022f,0x0003003e,0x0000054f,0x000005c5,0x000200f9,0x00000550, + 0x000200f8,0x00000552,0x00050041,0x0000009b,0x000005c7,0x00000108,0x00000192,0x0004003d, + 0x0000009a,0x000005c8,0x000005c7,0x0003003e,0x000005c6,0x000005c8,0x00050039,0x00000002, + 0x000005c9,0x000000ad,0x000005c6,0x0004003d,0x0000009a,0x000005ca,0x000005c6,0x00050041, + 0x0000009b,0x000005cb,0x00000108,0x00000192,0x0003003e,0x000005cb,0x000005ca,0x00050041, + 0x00000007,0x000005cc,0x00000108,0x0000019d,0x0004003d,0x00000006,0x000005cd,0x000005cc, + 0x000500ba,0x000000a2,0x000005ce,0x000005cd,0x000002d8,0x000600a9,0x00000006,0x000005cf, + 0x000005ce,0x00000150,0x0000014f,0x00050041,0x00000007,0x000005d0,0x00000108,0x0000019d, + 0x0004003d,0x00000006,0x000005d1,0x000005d0,0x00050085,0x00000006,0x000005d2,0x000005d1, + 0x000005cf,0x00050041,0x00000007,0x000005d3,0x00000108,0x0000019d,0x0003003e,0x000005d3, + 0x000005d2,0x00050041,0x00000007,0x000005d4,0x00000108,0x0000019d,0x0004003d,0x00000006, + 0x000005d5,0x000005d4,0x000500ba,0x000000a2,0x000005d6,0x000005d5,0x000002d8,0x000300f7, + 0x000005d8,0x00000000,0x000400fa,0x000005d6,0x000005d7,0x000005d8,0x000200f8,0x000005d7, + 0x00050041,0x0000000f,0x000005d9,0x00000108,0x0000022f,0x0004003d,0x0000000e,0x000005da, + 0x000005d9,0x00050041,0x00000007,0x000005db,0x00000108,0x0000019d,0x0004003d,0x00000006, + 0x000005dc,0x000005db,0x00060050,0x0000000e,0x000005dd,0x000005dc,0x000005dc,0x000005dc, + 0x00050088,0x0000000e,0x000005de,0x000005da,0x000005dd,0x00050041,0x0000000f,0x000005df, + 0x00000108,0x0000022f,0x0003003e,0x000005df,0x000005de,0x00050041,0x00000007,0x000005e1, + 0x00000108,0x0000019d,0x0004003d,0x00000006,0x000005e2,0x000005e1,0x00050085,0x00000006, + 0x000005e3,0x000005e2,0x000005e0,0x00050041,0x00000007,0x000005e4,0x00000108,0x0000019d, + 0x0003003e,0x000005e4,0x000005e3,0x00050041,0x0000009b,0x000005e6,0x00000108,0x00000192, + 0x0004003d,0x0000009a,0x000005e7,0x000005e6,0x0003003e,0x000005e5,0x000005e7,0x00050041, + 0x0000000f,0x000005e9,0x00000108,0x0000022f,0x0004003d,0x0000000e,0x000005ea,0x000005e9, + 0x0003003e,0x000005e8,0x000005ea,0x00060039,0x00000002,0x000005eb,0x000000f4,0x000005e5, + 0x000005e8,0x0004003d,0x0000000e,0x000005ec,0x000005e8,0x00050041,0x0000000f,0x000005ed, + 0x00000108,0x0000022f,0x0003003e,0x000005ed,0x000005ec,0x000200f9,0x000005d8,0x000200f8, + 0x000005d8,0x0004003d,0x000000a2,0x000005ee,0x000004cd,0x000300f7,0x000005f0,0x00000000, + 0x000400fa,0x000005ee,0x000005ef,0x000005f0,0x000200f8,0x000005ef,0x00060041,0x0000000f, + 0x000005f2,0x00000108,0x00000192,0x00000192,0x0004003d,0x0000000e,0x000005f3,0x000005f2, + 0x0003003e,0x000005f1,0x000005f3,0x00050039,0x0000000e,0x000005f4,0x000000b1,0x000005f1, + 0x0003003e,0x000005f5,0x000005f4,0x00050039,0x0000000e,0x000005f6,0x000000ba,0x000005f5, + 0x0003003e,0x000005f7,0x000005f6,0x00050039,0x0000000e,0x000005f8,0x000000b4,0x000005f7, + 0x00050041,0x0000000f,0x000005f9,0x00000108,0x0000022f,0x0003003e,0x000005f9,0x000005f8, + 0x00050041,0x00000007,0x000005fa,0x00000108,0x0000019d,0x0003003e,0x000005fa,0x00000150, + 0x00050041,0x00000007,0x000005fb,0x00000108,0x00000198,0x0003003e,0x000005fb,0x0000014f, + 0x000200f9,0x000005f0,0x000200f8,0x000005f0,0x000100fd,0x00010038,0x00050036,0x0000002f, + 0x0000010c,0x00000000,0x00000072,0x00030037,0x0000006d,0x0000010b,0x000200f8,0x0000010d, + 0x0004003b,0x0000006d,0x000005fc,0x00000007,0x0004003d,0x00000055,0x000005fd,0x0000010b, + 0x0003003e,0x000005fc,0x000005fd,0x00050039,0x0000002f,0x000005fe,0x00000074,0x000005fc, + 0x000200fe,0x000005fe,0x00010038,0x00050036,0x000000e5,0x00000111,0x00000000,0x0000010e, + 0x00030037,0x0000006d,0x0000010f,0x00030037,0x0000006d,0x00000110,0x000200f8,0x00000112, + 0x0004003b,0x000000e6,0x00000601,0x00000007,0x0004003b,0x0000006d,0x00000603,0x00000007, + 0x0004003b,0x0000006d,0x00000605,0x00000007,0x0004003b,0x0000006d,0x00000606,0x00000007, + 0x0004003b,0x0000006d,0x00000609,0x00000007,0x0004003b,0x0000006d,0x0000060d,0x00000007, + 0x0004003b,0x0000006d,0x0000060f,0x00000007,0x0004003b,0x0000006d,0x00000610,0x00000007, + 0x0004003b,0x0000006d,0x00000613,0x00000007,0x0004003b,0x0000006d,0x00000617,0x00000007, + 0x0004003b,0x0000006d,0x00000619,0x00000007,0x0004003b,0x0000006d,0x0000061a,0x00000007, + 0x0004003b,0x0000006d,0x0000061d,0x00000007,0x0004003b,0x0000006d,0x00000621,0x00000007, + 0x0004003b,0x0000006d,0x00000623,0x00000007,0x0004003b,0x0000006d,0x00000624,0x00000007, + 0x0004003b,0x0000006d,0x00000627,0x00000007,0x0004003b,0x0000006d,0x0000062b,0x00000007, + 0x0004003b,0x0000006d,0x0000062d,0x00000007,0x0004003b,0x0000006d,0x0000062e,0x00000007, + 0x0004003b,0x0000006d,0x00000631,0x00000007,0x0004003b,0x0000006d,0x00000634,0x00000007, + 0x0004003b,0x0000006d,0x00000636,0x00000007,0x0004003b,0x0000006d,0x00000637,0x00000007, + 0x0004003b,0x0000006d,0x0000063a,0x00000007,0x0004003b,0x0000006d,0x0000063e,0x00000007, + 0x0004003b,0x0000006d,0x00000640,0x00000007,0x0004003b,0x0000006d,0x00000641,0x00000007, + 0x0004003b,0x0000006d,0x00000644,0x00000007,0x0004003b,0x0000006d,0x00000648,0x00000007, + 0x0004003b,0x0000006d,0x0000064a,0x00000007,0x0004003b,0x0000006d,0x0000064b,0x00000007, + 0x0004003b,0x0000006d,0x0000064e,0x00000007,0x0004003b,0x0000006d,0x00000652,0x00000007, + 0x0004003b,0x0000006d,0x00000654,0x00000007,0x0004003b,0x0000006d,0x00000655,0x00000007, + 0x0004003b,0x0000006d,0x00000658,0x00000007,0x0004003b,0x0000006d,0x0000065c,0x00000007, + 0x0004003b,0x0000006d,0x0000065e,0x00000007,0x0004003b,0x0000006d,0x0000065f,0x00000007, + 0x0004003b,0x0000006d,0x00000662,0x00000007,0x0004003b,0x0000006d,0x00000666,0x00000007, + 0x0004003b,0x0000006d,0x00000668,0x00000007,0x0004003b,0x0000006d,0x00000669,0x00000007, + 0x0004003b,0x0000006d,0x0000066c,0x00000007,0x0004003b,0x0000006d,0x00000670,0x00000007, + 0x0004003b,0x0000006d,0x00000672,0x00000007,0x0004003b,0x0000006d,0x00000673,0x00000007, + 0x0004003b,0x0000006d,0x00000676,0x00000007,0x0004003b,0x0000006d,0x0000067a,0x00000007, + 0x0004003b,0x0000006d,0x0000067c,0x00000007,0x0004003b,0x0000006d,0x0000067d,0x00000007, + 0x0004003b,0x0000006d,0x00000680,0x00000007,0x0004003b,0x0000006d,0x00000684,0x00000007, + 0x0004003b,0x0000006d,0x00000686,0x00000007,0x0004003b,0x0000006d,0x00000687,0x00000007, + 0x0004003b,0x0000006d,0x0000068a,0x00000007,0x0004003b,0x0000006d,0x0000068e,0x00000007, + 0x0004003b,0x0000006d,0x00000690,0x00000007,0x0004003b,0x0000006d,0x00000691,0x00000007, + 0x0004003b,0x0000006d,0x00000694,0x00000007,0x0004003b,0x0000006d,0x00000698,0x00000007, + 0x0004003b,0x0000006d,0x0000069a,0x00000007,0x0004003b,0x0000006d,0x0000069b,0x00000007, + 0x0004003b,0x0000006d,0x0000069e,0x00000007,0x0004003d,0x00000055,0x00000604,0x0000010f, + 0x0003003e,0x00000603,0x00000604,0x0003003e,0x00000605,0x00000602,0x0004003d,0x00000055, + 0x00000607,0x00000110,0x0003003e,0x00000606,0x00000607,0x00070039,0x00000055,0x00000608, + 0x000000ef,0x00000603,0x00000605,0x00000606,0x0003003e,0x00000609,0x00000608,0x00050039, + 0x0000002f,0x0000060a,0x0000010c,0x00000609,0x00050041,0x00000030,0x0000060b,0x00000601, + 0x00000192,0x0003003e,0x0000060b,0x0000060a,0x0004003d,0x00000055,0x0000060e,0x0000010f, + 0x0003003e,0x0000060d,0x0000060e,0x0003003e,0x0000060f,0x0000060c,0x0004003d,0x00000055, + 0x00000611,0x00000110,0x0003003e,0x00000610,0x00000611,0x00070039,0x00000055,0x00000612, + 0x000000ef,0x0000060d,0x0000060f,0x00000610,0x0003003e,0x00000613,0x00000612,0x00050039, + 0x0000002f,0x00000614,0x0000010c,0x00000613,0x00050041,0x00000030,0x00000615,0x00000601, + 0x0000022f,0x0003003e,0x00000615,0x00000614,0x0004003d,0x00000055,0x00000618,0x0000010f, + 0x0003003e,0x00000617,0x00000618,0x0003003e,0x00000619,0x00000616,0x0004003d,0x00000055, + 0x0000061b,0x00000110,0x0003003e,0x0000061a,0x0000061b,0x00070039,0x00000055,0x0000061c, + 0x000000ef,0x00000617,0x00000619,0x0000061a,0x0003003e,0x0000061d,0x0000061c,0x00050039, + 0x0000002f,0x0000061e,0x0000010c,0x0000061d,0x00050041,0x00000030,0x0000061f,0x00000601, + 0x0000019d,0x0003003e,0x0000061f,0x0000061e,0x0004003d,0x00000055,0x00000622,0x0000010f, + 0x0003003e,0x00000621,0x00000622,0x0003003e,0x00000623,0x00000620,0x0004003d,0x00000055, + 0x00000625,0x00000110,0x0003003e,0x00000624,0x00000625,0x00070039,0x00000055,0x00000626, + 0x000000ef,0x00000621,0x00000623,0x00000624,0x0003003e,0x00000627,0x00000626,0x00050039, + 0x0000002f,0x00000628,0x0000010c,0x00000627,0x00050041,0x00000030,0x00000629,0x00000601, + 0x000001a2,0x0003003e,0x00000629,0x00000628,0x0004003d,0x00000055,0x0000062c,0x0000010f, + 0x0003003e,0x0000062b,0x0000062c,0x0003003e,0x0000062d,0x0000062a,0x0004003d,0x00000055, + 0x0000062f,0x00000110,0x0003003e,0x0000062e,0x0000062f,0x00070039,0x00000055,0x00000630, + 0x000000ef,0x0000062b,0x0000062d,0x0000062e,0x0003003e,0x00000631,0x00000630,0x00050039, + 0x0000002f,0x00000632,0x0000010c,0x00000631,0x00050041,0x00000030,0x00000633,0x00000601, + 0x00000198,0x0003003e,0x00000633,0x00000632,0x0004003d,0x00000055,0x00000635,0x0000010f, + 0x0003003e,0x00000634,0x00000635,0x0003003e,0x00000636,0x0000020f,0x0004003d,0x00000055, + 0x00000638,0x00000110,0x0003003e,0x00000637,0x00000638,0x00070039,0x00000055,0x00000639, + 0x000000ef,0x00000634,0x00000636,0x00000637,0x0003003e,0x0000063a,0x00000639,0x00050039, + 0x0000002f,0x0000063b,0x0000010c,0x0000063a,0x00050041,0x00000030,0x0000063c,0x00000601, + 0x000003cc,0x0003003e,0x0000063c,0x0000063b,0x0004003d,0x00000055,0x0000063f,0x0000010f, + 0x0003003e,0x0000063e,0x0000063f,0x0003003e,0x00000640,0x0000063d,0x0004003d,0x00000055, + 0x00000642,0x00000110,0x0003003e,0x00000641,0x00000642,0x00070039,0x00000055,0x00000643, + 0x000000ef,0x0000063e,0x00000640,0x00000641,0x0003003e,0x00000644,0x00000643,0x00050039, + 0x0000002f,0x00000645,0x0000010c,0x00000644,0x00050041,0x00000030,0x00000646,0x00000601, + 0x000003cd,0x0003003e,0x00000646,0x00000645,0x0004003d,0x00000055,0x00000649,0x0000010f, + 0x0003003e,0x00000648,0x00000649,0x0003003e,0x0000064a,0x00000647,0x0004003d,0x00000055, + 0x0000064c,0x00000110,0x0003003e,0x0000064b,0x0000064c,0x00070039,0x00000055,0x0000064d, + 0x000000ef,0x00000648,0x0000064a,0x0000064b,0x0003003e,0x0000064e,0x0000064d,0x00050039, + 0x0000002f,0x0000064f,0x0000010c,0x0000064e,0x00050041,0x00000030,0x00000650,0x00000601, + 0x000001a7,0x0003003e,0x00000650,0x0000064f,0x0004003d,0x00000055,0x00000653,0x0000010f, + 0x0003003e,0x00000652,0x00000653,0x0003003e,0x00000654,0x00000651,0x0004003d,0x00000055, + 0x00000656,0x00000110,0x0003003e,0x00000655,0x00000656,0x00070039,0x00000055,0x00000657, + 0x000000ef,0x00000652,0x00000654,0x00000655,0x0003003e,0x00000658,0x00000657,0x00050039, + 0x0000002f,0x00000659,0x0000010c,0x00000658,0x00050041,0x00000030,0x0000065a,0x00000601, + 0x000003df,0x0003003e,0x0000065a,0x00000659,0x0004003d,0x00000055,0x0000065d,0x0000010f, + 0x0003003e,0x0000065c,0x0000065d,0x0003003e,0x0000065e,0x0000065b,0x0004003d,0x00000055, + 0x00000660,0x00000110,0x0003003e,0x0000065f,0x00000660,0x00070039,0x00000055,0x00000661, + 0x000000ef,0x0000065c,0x0000065e,0x0000065f,0x0003003e,0x00000662,0x00000661,0x00050039, + 0x0000002f,0x00000663,0x0000010c,0x00000662,0x00050041,0x00000030,0x00000664,0x00000601, + 0x000003e0,0x0003003e,0x00000664,0x00000663,0x0004003d,0x00000055,0x00000667,0x0000010f, + 0x0003003e,0x00000666,0x00000667,0x0003003e,0x00000668,0x00000665,0x0004003d,0x00000055, + 0x0000066a,0x00000110,0x0003003e,0x00000669,0x0000066a,0x00070039,0x00000055,0x0000066b, + 0x000000ef,0x00000666,0x00000668,0x00000669,0x0003003e,0x0000066c,0x0000066b,0x00050039, + 0x0000002f,0x0000066d,0x0000010c,0x0000066c,0x00050041,0x00000030,0x0000066e,0x00000601, + 0x000001ad,0x0003003e,0x0000066e,0x0000066d,0x0004003d,0x00000055,0x00000671,0x0000010f, + 0x0003003e,0x00000670,0x00000671,0x0003003e,0x00000672,0x0000066f,0x0004003d,0x00000055, + 0x00000674,0x00000110,0x0003003e,0x00000673,0x00000674,0x00070039,0x00000055,0x00000675, + 0x000000ef,0x00000670,0x00000672,0x00000673,0x0003003e,0x00000676,0x00000675,0x00050039, + 0x0000002f,0x00000677,0x0000010c,0x00000676,0x00050041,0x00000030,0x00000678,0x00000601, + 0x000003e1,0x0003003e,0x00000678,0x00000677,0x0004003d,0x00000055,0x0000067b,0x0000010f, + 0x0003003e,0x0000067a,0x0000067b,0x0003003e,0x0000067c,0x00000679,0x0004003d,0x00000055, + 0x0000067e,0x00000110,0x0003003e,0x0000067d,0x0000067e,0x00070039,0x00000055,0x0000067f, + 0x000000ef,0x0000067a,0x0000067c,0x0000067d,0x0003003e,0x00000680,0x0000067f,0x00050039, + 0x0000002f,0x00000681,0x0000010c,0x00000680,0x00050041,0x00000030,0x00000682,0x00000601, + 0x000003f3,0x0003003e,0x00000682,0x00000681,0x0004003d,0x00000055,0x00000685,0x0000010f, + 0x0003003e,0x00000684,0x00000685,0x0003003e,0x00000686,0x00000683,0x0004003d,0x00000055, + 0x00000688,0x00000110,0x0003003e,0x00000687,0x00000688,0x00070039,0x00000055,0x00000689, + 0x000000ef,0x00000684,0x00000686,0x00000687,0x0003003e,0x0000068a,0x00000689,0x00050039, + 0x0000002f,0x0000068b,0x0000010c,0x0000068a,0x00050041,0x00000030,0x0000068c,0x00000601, + 0x000001b2,0x0003003e,0x0000068c,0x0000068b,0x0004003d,0x00000055,0x0000068f,0x0000010f, + 0x0003003e,0x0000068e,0x0000068f,0x0003003e,0x00000690,0x0000068d,0x0004003d,0x00000055, + 0x00000692,0x00000110,0x0003003e,0x00000691,0x00000692,0x00070039,0x00000055,0x00000693, + 0x000000ef,0x0000068e,0x00000690,0x00000691,0x0003003e,0x00000694,0x00000693,0x00050039, + 0x0000002f,0x00000695,0x0000010c,0x00000694,0x00050041,0x00000030,0x00000696,0x00000601, + 0x000003f4,0x0003003e,0x00000696,0x00000695,0x0004003d,0x00000055,0x00000699,0x0000010f, + 0x0003003e,0x00000698,0x00000699,0x0003003e,0x0000069a,0x00000697,0x0004003d,0x00000055, + 0x0000069c,0x00000110,0x0003003e,0x0000069b,0x0000069c,0x00070039,0x00000055,0x0000069d, + 0x000000ef,0x00000698,0x0000069a,0x0000069b,0x0003003e,0x0000069e,0x0000069d,0x00050039, + 0x0000002f,0x0000069f,0x0000010c,0x0000069e,0x00050041,0x00000030,0x000006a0,0x00000601, + 0x000001b8,0x0003003e,0x000006a0,0x0000069f,0x0004003d,0x000000e5,0x000006a1,0x00000601, + 0x000200fe,0x000006a1,0x00010038,0x00050036,0x0000002f,0x00000116,0x00000000,0x00000113, + 0x00030037,0x0000001b,0x00000114,0x00030037,0x0000006d,0x00000115,0x000200f8,0x00000117, + 0x0004003b,0x0000001b,0x000006a4,0x00000007,0x0004003b,0x0000001b,0x000006aa,0x00000007, + 0x0004003b,0x0000001b,0x000006ab,0x00000007,0x0004003b,0x00000007,0x000006b2,0x00000007, + 0x0004003b,0x00000007,0x000006b3,0x00000007,0x0004003b,0x00000007,0x000006b7,0x00000007, + 0x0004003b,0x00000007,0x000006b8,0x00000007,0x0004003b,0x00000007,0x000006bf,0x00000007, + 0x0004003b,0x00000007,0x000006c0,0x00000007,0x0004003b,0x00000007,0x000006c4,0x00000007, + 0x0004003b,0x00000007,0x000006c5,0x00000007,0x0004003b,0x0000006d,0x000006c8,0x00000007, + 0x0004003b,0x00000030,0x000006cc,0x00000007,0x0004003b,0x0000006d,0x000006cd,0x00000007, + 0x0004003b,0x0000006d,0x000006cf,0x00000007,0x0004003b,0x000000e6,0x000006d2,0x00000007, + 0x0004003b,0x0000001b,0x000006d3,0x00000007,0x0004003d,0x0000001a,0x000006a5,0x00000114, + 0x0004003d,0x00000055,0x000006a6,0x00000115,0x0004006f,0x0000001a,0x000006a7,0x000006a6, + 0x00050085,0x0000001a,0x000006a8,0x000006a5,0x000006a7,0x00050083,0x0000001a,0x000006a9, + 0x000006a8,0x00000329,0x0003003e,0x000006a4,0x000006a9,0x0004003d,0x0000001a,0x000006ac, + 0x000006a4,0x0003003e,0x000006ab,0x000006ac,0x00050039,0x0000001a,0x000006ad,0x0000001e, + 0x000006ab,0x0003003e,0x000006aa,0x000006ad,0x00050041,0x00000037,0x000006ae,0x00000115, + 0x000001eb,0x0004003d,0x00000036,0x000006af,0x000006ae,0x00050082,0x00000036,0x000006b0, + 0x000006af,0x0000022f,0x0004006f,0x00000006,0x000006b1,0x000006b0,0x0003003e,0x000006b2, + 0x000006b1,0x00050041,0x00000007,0x000006b4,0x000006a4,0x000001eb,0x0004003d,0x00000006, + 0x000006b5,0x000006b4,0x0003003e,0x000006b3,0x000006b5,0x00060039,0x00000006,0x000006b6, + 0x00000023,0x000006b2,0x000006b3,0x0003003e,0x000006b7,0x0000014f,0x0003003e,0x000006b8, + 0x000006b6,0x00060039,0x00000006,0x000006b9,0x0000003f,0x000006b7,0x000006b8,0x00050041, + 0x00000007,0x000006ba,0x000006a4,0x000001eb,0x0003003e,0x000006ba,0x000006b9,0x00050041, + 0x00000037,0x000006bb,0x00000115,0x00000284,0x0004003d,0x00000036,0x000006bc,0x000006bb, + 0x00050082,0x00000036,0x000006bd,0x000006bc,0x0000022f,0x0004006f,0x00000006,0x000006be, + 0x000006bd,0x0003003e,0x000006bf,0x000006be,0x00050041,0x00000007,0x000006c1,0x000006a4, + 0x00000284,0x0004003d,0x00000006,0x000006c2,0x000006c1,0x0003003e,0x000006c0,0x000006c2, + 0x00060039,0x00000006,0x000006c3,0x00000023,0x000006bf,0x000006c0,0x0003003e,0x000006c4, + 0x0000014f,0x0003003e,0x000006c5,0x000006c3,0x00060039,0x00000006,0x000006c6,0x0000003f, + 0x000006c4,0x000006c5,0x00050041,0x00000007,0x000006c7,0x000006a4,0x00000284,0x0003003e, + 0x000006c7,0x000006c6,0x0004003d,0x0000001a,0x000006c9,0x000006a4,0x0006000c,0x0000001a, + 0x000006ca,0x00000001,0x00000008,0x000006c9,0x0004006e,0x00000055,0x000006cb,0x000006ca, + 0x0003003e,0x000006c8,0x000006cb,0x0004003d,0x00000055,0x000006ce,0x000006c8,0x0003003e, + 0x000006cd,0x000006ce,0x0004003d,0x00000055,0x000006d0,0x00000115,0x0003003e,0x000006cf, + 0x000006d0,0x00060039,0x000000e5,0x000006d1,0x00000111,0x000006cd,0x000006cf,0x0003003e, + 0x000006d2,0x000006d1,0x0004003d,0x0000001a,0x000006d4,0x000006aa,0x0003003e,0x000006d3, + 0x000006d4,0x00060039,0x0000002f,0x000006d5,0x000000ea,0x000006d2,0x000006d3,0x0003003e, + 0x000006cc,0x000006d5,0x0004003d,0x0000002f,0x000006d6,0x000006cc,0x000200fe,0x000006d6, + 0x00010038,0x00050036,0x0000001a,0x0000011b,0x00000000,0x00000118,0x00030037,0x0000006d, + 0x00000119,0x00030037,0x0000001b,0x0000011a,0x000200f8,0x0000011c,0x0004003b,0x0000001b, + 0x000006d9,0x00000007,0x0004003b,0x0000006d,0x000006df,0x00000007,0x0004003d,0x0000001a, + 0x000006da,0x0000011a,0x00040039,0x00000055,0x000006db,0x00000057,0x0004006f,0x0000001a, + 0x000006dc,0x000006db,0x00050085,0x0000001a,0x000006dd,0x000006da,0x000006dc,0x0004006e, + 0x00000055,0x000006de,0x000006dd,0x0003003e,0x000006df,0x000006de,0x00050039,0x0000001a, + 0x000006e0,0x0000008f,0x000006df,0x0003003e,0x000006d9,0x000006e0,0x0004003d,0x0000001a, + 0x000006e1,0x000006d9,0x000200fe,0x000006e1,0x00010038,0x00050036,0x00000002,0x00000120, + 0x00000000,0x0000011e,0x00030037,0x0000011d,0x0000011f,0x000200f8,0x00000121,0x0004003b, + 0x0000001b,0x000006ea,0x00000007,0x00050041,0x0000001b,0x000006e4,0x0000011f,0x0000022f, + 0x0004003d,0x0000001a,0x000006e5,0x000006e4,0x00050041,0x0000001b,0x000006e6,0x0000011f, + 0x00000198,0x0004003d,0x0000001a,0x000006e7,0x000006e6,0x00050081,0x0000001a,0x000006e8, + 0x000006e5,0x000006e7,0x00050041,0x0000001b,0x000006e9,0x0000011f,0x000003cc,0x0003003e, + 0x000006e9,0x000006e8,0x00050041,0x0000001b,0x000006eb,0x0000011f,0x000003cc,0x0004003d, + 0x0000001a,0x000006ec,0x000006eb,0x0003003e,0x000006ea,0x000006ec,0x00050039,0x000000a2, + 0x000006ed,0x000000be,0x000006ea,0x00050041,0x000000a3,0x000006ee,0x0000011f,0x000001b2, + 0x0003003e,0x000006ee,0x000006ed,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000124, + 0x00000000,0x00000106,0x00030037,0x000000fb,0x00000122,0x00030037,0x000000fd,0x00000123, + 0x000200f8,0x00000125,0x0004003b,0x00000030,0x000006ef,0x00000007,0x0004003b,0x0000001b, + 0x000006f1,0x00000007,0x0004003b,0x0000006d,0x000006f3,0x00000007,0x0004003b,0x0000000f, + 0x00000702,0x00000007,0x00040039,0x00000055,0x000006f0,0x0000005d,0x00050051,0x0000001a, + 0x000006f2,0x00000122,0x00000005,0x0003003e,0x000006f1,0x000006f2,0x0003003e,0x000006f3, + 0x000006f0,0x00060039,0x0000002f,0x000006f4,0x00000116,0x000006f1,0x000006f3,0x0003003e, + 0x000006ef,0x000006f4,0x0004003d,0x0000002f,0x000006f5,0x000006ef,0x0008004f,0x0000000e, + 0x000006f6,0x000006f5,0x000006f5,0x00000000,0x00000001,0x00000002,0x00050041,0x0000000f, + 0x000006f7,0x00000123,0x000001a2,0x0003003e,0x000006f7,0x000006f6,0x00040039,0x00000006, + 0x000006f8,0x00000067,0x00050041,0x0000000f,0x000006f9,0x00000123,0x000001a2,0x0004003d, + 0x0000000e,0x000006fa,0x000006f9,0x0005008e,0x0000000e,0x000006fb,0x000006fa,0x000006f8, + 0x00050041,0x0000000f,0x000006fc,0x00000123,0x000001a2,0x0003003e,0x000006fc,0x000006fb, + 0x00040039,0x00000006,0x000006fd,0x00000091,0x00050041,0x0000000f,0x000006fe,0x00000123, + 0x000001a2,0x0004003d,0x0000000e,0x000006ff,0x000006fe,0x0005008e,0x0000000e,0x00000700, + 0x000006ff,0x000006fd,0x00050041,0x0000000f,0x00000701,0x00000123,0x000001a2,0x0003003e, + 0x00000701,0x00000700,0x00050041,0x0000000f,0x00000703,0x00000123,0x000001a2,0x0004003d, + 0x0000000e,0x00000704,0x00000703,0x0003003e,0x00000702,0x00000704,0x00050039,0x0000000e, + 0x00000705,0x000000b4,0x00000702,0x00050041,0x0000000f,0x00000706,0x00000123,0x000001a2, + 0x0003003e,0x00000706,0x00000705,0x00050041,0x00000007,0x00000708,0x000006ef,0x00000707, + 0x0004003d,0x00000006,0x00000709,0x00000708,0x00050041,0x00000007,0x0000070a,0x00000123, + 0x000003cc,0x0003003e,0x0000070a,0x00000709,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000128,0x00000000,0x00000106,0x00030037,0x000000fb,0x00000126,0x00030037,0x000000fd, + 0x00000127,0x000200f8,0x00000129,0x0004003b,0x00000007,0x00000718,0x00000007,0x0004003b, + 0x00000007,0x00000719,0x00000007,0x0004003b,0x0000000f,0x0000071c,0x00000007,0x0004003b, + 0x0000000f,0x00000720,0x00000007,0x0004003b,0x0000000f,0x00000722,0x00000007,0x0004003b, + 0x0000000f,0x00000725,0x00000007,0x0004003b,0x0000000f,0x00000729,0x00000007,0x0004003b, + 0x0000000f,0x0000072b,0x00000007,0x0004003b,0x00000007,0x0000072e,0x00000007,0x0004003b, + 0x00000007,0x00000734,0x00000007,0x0004003b,0x0000000f,0x00000736,0x00000007,0x0004003b, + 0x0000000f,0x00000739,0x00000007,0x0004003b,0x00000007,0x0000073c,0x00000007,0x0004003b, + 0x0000000f,0x00000740,0x00000007,0x0004003b,0x0000000f,0x00000745,0x00000007,0x00050041, + 0x00000007,0x0000070b,0x00000127,0x00000198,0x0004003d,0x00000006,0x0000070c,0x0000070b, + 0x000500ba,0x000000a2,0x0000070d,0x0000070c,0x000002d8,0x000600a9,0x00000006,0x0000070e, + 0x0000070d,0x00000150,0x0000014f,0x00050041,0x00000007,0x0000070f,0x00000127,0x00000198, + 0x0004003d,0x00000006,0x00000710,0x0000070f,0x00050085,0x00000006,0x00000711,0x00000710, + 0x0000070e,0x00050041,0x00000007,0x00000712,0x00000127,0x00000198,0x0003003e,0x00000712, + 0x00000711,0x00050041,0x00000007,0x00000713,0x00000127,0x00000198,0x0004003d,0x00000006, + 0x00000714,0x00000713,0x00050041,0x00000007,0x00000715,0x00000127,0x0000019d,0x0004003d, + 0x00000006,0x00000716,0x00000715,0x00050081,0x00000006,0x00000717,0x00000714,0x00000716, + 0x0003003e,0x00000718,0x000002d8,0x0003003e,0x00000719,0x00000717,0x00060039,0x00000006, + 0x0000071a,0x0000003f,0x00000718,0x00000719,0x00050041,0x00000007,0x0000071b,0x00000127, + 0x00000198,0x0003003e,0x0000071b,0x0000071a,0x00050041,0x0000000f,0x0000071d,0x00000127, + 0x0000022f,0x0004003d,0x0000000e,0x0000071e,0x0000071d,0x0003003e,0x0000071c,0x0000071e, + 0x00050039,0x0000000e,0x0000071f,0x000000b1,0x0000071c,0x0003003e,0x00000720,0x0000071f, + 0x00050039,0x0000000e,0x00000721,0x000000b7,0x00000720,0x0003003e,0x00000722,0x00000721, + 0x00050039,0x0000000e,0x00000723,0x000000b4,0x00000722,0x00050041,0x0000000f,0x00000724, + 0x00000127,0x0000022f,0x0003003e,0x00000724,0x00000723,0x00050041,0x0000000f,0x00000726, + 0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000727,0x00000726,0x0003003e,0x00000725, + 0x00000727,0x00050039,0x0000000e,0x00000728,0x000000b1,0x00000725,0x0003003e,0x00000729, + 0x00000728,0x00050039,0x0000000e,0x0000072a,0x000000b7,0x00000729,0x0003003e,0x0000072b, + 0x0000072a,0x00050039,0x0000000e,0x0000072c,0x000000b4,0x0000072b,0x00050041,0x0000000f, + 0x0000072d,0x00000127,0x000001a2,0x0003003e,0x0000072d,0x0000072c,0x00050041,0x00000007, + 0x0000072f,0x00000127,0x0000019d,0x0004003d,0x00000006,0x00000730,0x0000072f,0x00050041, + 0x00000007,0x00000731,0x00000127,0x00000198,0x0004003d,0x00000006,0x00000732,0x00000731, + 0x00050088,0x00000006,0x00000733,0x00000730,0x00000732,0x0003003e,0x00000734,0x00000733, + 0x00050039,0x00000006,0x00000735,0x00000018,0x00000734,0x0003003e,0x0000072e,0x00000735, + 0x00050041,0x0000000f,0x00000737,0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000738, + 0x00000737,0x0003003e,0x00000736,0x00000738,0x00050041,0x0000000f,0x0000073a,0x00000127, + 0x0000022f,0x0004003d,0x0000000e,0x0000073b,0x0000073a,0x0003003e,0x00000739,0x0000073b, + 0x0004003d,0x00000006,0x0000073d,0x0000072e,0x0003003e,0x0000073c,0x0000073d,0x00070039, + 0x0000000e,0x0000073e,0x00000014,0x00000736,0x00000739,0x0000073c,0x00050041,0x0000000f, + 0x0000073f,0x00000127,0x000001a2,0x0003003e,0x0000073f,0x0000073e,0x00050041,0x0000000f, + 0x00000741,0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000742,0x00000741,0x0003003e, + 0x00000740,0x00000742,0x00050039,0x0000000e,0x00000743,0x000000b1,0x00000740,0x00050041, + 0x0000000f,0x00000744,0x00000127,0x000001a2,0x0003003e,0x00000744,0x00000743,0x00050041, + 0x0000000f,0x00000746,0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000747,0x00000746, + 0x0003003e,0x00000745,0x00000747,0x00050039,0x0000000e,0x00000748,0x000000ba,0x00000745, + 0x00050041,0x0000000f,0x00000749,0x00000127,0x000001a2,0x0003003e,0x00000749,0x00000748, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x0000012c,0x00000000,0x00000106,0x00030037, + 0x000000fb,0x0000012a,0x00030037,0x000000fd,0x0000012b,0x000200f8,0x0000012d,0x0004003b, + 0x00000007,0x0000074a,0x00000007,0x0004003b,0x00000007,0x0000074e,0x00000007,0x0004003b, + 0x00000007,0x00000750,0x00000007,0x0004003b,0x00000007,0x00000755,0x00000007,0x0004003b, + 0x00000007,0x00000757,0x00000007,0x0004003b,0x00000007,0x0000075a,0x00000007,0x0004003b, + 0x00000007,0x0000075b,0x00000007,0x0004003b,0x00000007,0x0000075d,0x00000007,0x0004003b, + 0x00000007,0x0000075f,0x00000007,0x0004003b,0x00000007,0x00000761,0x00000007,0x0004003b, + 0x00000007,0x00000762,0x00000007,0x0004003b,0x00000007,0x00000764,0x00000007,0x0004003b, + 0x00000007,0x00000767,0x00000007,0x0004003b,0x00000007,0x00000769,0x00000007,0x0004003b, + 0x00000007,0x0000076b,0x00000007,0x0004003b,0x00000007,0x0000076d,0x00000007,0x0004003b, + 0x00000007,0x0000076f,0x00000007,0x0004003b,0x00000007,0x00000771,0x00000007,0x0004003b, + 0x00000007,0x00000773,0x00000007,0x0004003b,0x00000007,0x00000775,0x00000007,0x0004003b, + 0x00000007,0x00000776,0x00000007,0x0004003b,0x00000007,0x00000777,0x00000007,0x0004003b, + 0x0000000f,0x0000077a,0x00000007,0x0004003b,0x0000000f,0x00000782,0x00000007,0x0004003b, + 0x0000000f,0x00000785,0x00000007,0x0004003b,0x0000000f,0x00000787,0x00000007,0x0004003b, + 0x0000000f,0x00000789,0x00000007,0x0004003b,0x0000000f,0x00000796,0x00000007,0x0004003b, + 0x0000000f,0x00000799,0x00000007,0x0004003b,0x00000007,0x000007a0,0x00000007,0x0004003b, + 0x00000007,0x000007a1,0x00000007,0x0004003b,0x00000007,0x000007a3,0x00000007,0x0004003b, + 0x00000007,0x000007ac,0x00000007,0x0004003b,0x0000000f,0x000007af,0x00000007,0x0004003b, + 0x0000000f,0x000007b1,0x00000007,0x0004003b,0x00000007,0x000007b4,0x00000007,0x00050051, + 0x00000006,0x0000074b,0x0000012a,0x00000006,0x00050088,0x00000006,0x0000074d,0x0000074b, + 0x0000074c,0x0003003e,0x0000074e,0x0000074d,0x00050039,0x00000006,0x0000074f,0x00000018, + 0x0000074e,0x0003003e,0x0000074a,0x0000074f,0x00050051,0x00000006,0x00000752,0x0000012a, + 0x0000000c,0x00050088,0x00000006,0x00000753,0x00000752,0x0000074c,0x00050083,0x00000006, + 0x00000754,0x00000751,0x00000753,0x0003003e,0x00000755,0x00000754,0x00050039,0x00000006, + 0x00000756,0x00000018,0x00000755,0x0003003e,0x00000750,0x00000756,0x00050051,0x00000006, + 0x00000758,0x0000012a,0x0000000a,0x00050083,0x00000006,0x00000759,0x00000150,0x00000758, + 0x0003003e,0x00000757,0x00000759,0x00050051,0x00000006,0x0000075c,0x0000012a,0x00000008, + 0x0003003e,0x0000075b,0x0000075c,0x0003003e,0x0000075d,0x000002a2,0x00060039,0x00000006, + 0x0000075e,0x00000053,0x0000075b,0x0000075d,0x0003003e,0x0000075a,0x0000075e,0x00050051, + 0x00000006,0x00000760,0x0000012a,0x00000009,0x0003003e,0x0000075f,0x00000760,0x0004003d, + 0x00000006,0x00000763,0x0000075a,0x0003003e,0x00000762,0x00000763,0x0004003d,0x00000006, + 0x00000765,0x0000075f,0x0003003e,0x00000764,0x00000765,0x00060039,0x00000006,0x00000766, + 0x0000003f,0x00000762,0x00000764,0x0004003d,0x00000006,0x00000768,0x00000757,0x0003003e, + 0x00000767,0x00000768,0x0003003e,0x00000769,0x00000766,0x00060039,0x00000006,0x0000076a, + 0x0000003f,0x00000767,0x00000769,0x0004003d,0x00000006,0x0000076c,0x00000750,0x0003003e, + 0x0000076b,0x0000076c,0x0003003e,0x0000076d,0x0000076a,0x00060039,0x00000006,0x0000076e, + 0x0000003f,0x0000076b,0x0000076d,0x0004003d,0x00000006,0x00000770,0x0000074a,0x0003003e, + 0x0000076f,0x00000770,0x0003003e,0x00000771,0x0000076e,0x00060039,0x00000006,0x00000772, + 0x0000003f,0x0000076f,0x00000771,0x0003003e,0x00000761,0x00000772,0x0003003e,0x00000775, + 0x00000774,0x0003003e,0x00000776,0x00000150,0x0004003d,0x00000006,0x00000778,0x00000761, + 0x0003003e,0x00000777,0x00000778,0x00070039,0x00000006,0x00000779,0x0000000c,0x00000775, + 0x00000776,0x00000777,0x0003003e,0x00000773,0x00000779,0x00060041,0x0000000f,0x0000077b, + 0x0000012b,0x00000192,0x0000022f,0x0004003d,0x0000000e,0x0000077c,0x0000077b,0x00050085, + 0x0000000e,0x0000077f,0x0000077c,0x0000077e,0x0004003d,0x00000006,0x00000780,0x00000773, + 0x0005008e,0x0000000e,0x00000781,0x0000077f,0x00000780,0x0003003e,0x0000077a,0x00000781, + 0x0004003d,0x0000000e,0x00000786,0x0000077a,0x0003003e,0x00000785,0x00000786,0x0003003e, + 0x00000787,0x00000784,0x00060039,0x0000000e,0x00000788,0x00000047,0x00000785,0x00000787, + 0x0003003e,0x00000782,0x00000788,0x00050041,0x0000000f,0x0000078a,0x0000012b,0x000001a2, + 0x0004003d,0x0000000e,0x0000078b,0x0000078a,0x00060041,0x0000000f,0x0000078c,0x0000012b, + 0x00000192,0x00000192,0x0004003d,0x0000000e,0x0000078d,0x0000078c,0x00050083,0x0000000e, + 0x0000078e,0x0000078b,0x0000078d,0x0004003d,0x0000000e,0x0000078f,0x00000782,0x00050088, + 0x0000000e,0x00000790,0x0000078e,0x0000078f,0x0003003e,0x00000789,0x00000790,0x0004003d, + 0x0000000e,0x00000791,0x00000789,0x0006000c,0x00000006,0x00000792,0x00000001,0x00000042, + 0x00000791,0x000500ba,0x000000a2,0x00000793,0x00000792,0x00000150,0x000300f7,0x00000795, + 0x00000000,0x000400fa,0x00000793,0x00000794,0x00000795,0x000200f8,0x00000794,0x0004003d, + 0x0000000e,0x00000797,0x00000789,0x0006000c,0x0000000e,0x00000798,0x00000001,0x00000045, + 0x00000797,0x0003003e,0x00000796,0x00000798,0x0004003d,0x0000000e,0x0000079a,0x00000796, + 0x0004003d,0x0000000e,0x0000079b,0x0000077a,0x00050085,0x0000000e,0x0000079c,0x0000079a, + 0x0000079b,0x00060041,0x0000000f,0x0000079d,0x0000012b,0x00000192,0x00000192,0x0004003d, + 0x0000000e,0x0000079e,0x0000079d,0x00050081,0x0000000e,0x0000079f,0x0000079c,0x0000079e, + 0x0003003e,0x00000799,0x0000079f,0x00050051,0x00000006,0x000007a2,0x0000012a,0x0000000b, + 0x0003003e,0x000007a1,0x000007a2,0x00050041,0x00000007,0x000007a4,0x0000012b,0x000003cd, + 0x0004003d,0x00000006,0x000007a5,0x000007a4,0x0003003e,0x000007a3,0x000007a5,0x00060039, + 0x00000006,0x000007a6,0x0000003f,0x000007a1,0x000007a3,0x00050051,0x00000006,0x000007a7, + 0x0000012a,0x0000000a,0x00050085,0x00000006,0x000007a8,0x000007a6,0x000007a7,0x00050051, + 0x00000006,0x000007a9,0x0000012a,0x00000007,0x00050083,0x00000006,0x000007aa,0x00000150, + 0x000007a9,0x00050085,0x00000006,0x000007ab,0x000007a8,0x000007aa,0x0003003e,0x000007a0, + 0x000007ab,0x0004003d,0x00000006,0x000007ad,0x000007a0,0x0003003e,0x000007ac,0x000007ad, + 0x00050039,0x00000006,0x000007ae,0x00000018,0x000007ac,0x0004003d,0x0000000e,0x000007b0, + 0x00000799,0x0003003e,0x000007af,0x000007b0,0x00050041,0x0000000f,0x000007b2,0x0000012b, + 0x000001a2,0x0004003d,0x0000000e,0x000007b3,0x000007b2,0x0003003e,0x000007b1,0x000007b3, + 0x0003003e,0x000007b4,0x000007ae,0x00070039,0x0000000e,0x000007b5,0x00000014,0x000007af, + 0x000007b1,0x000007b4,0x00050041,0x0000000f,0x000007b6,0x0000012b,0x000001a2,0x0003003e, + 0x000007b6,0x000007b5,0x000200f9,0x00000795,0x000200f8,0x00000795,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000131,0x00000000,0x0000012e,0x00030037,0x0000011d,0x0000012f, + 0x00030037,0x000000fd,0x00000130,0x000200f8,0x00000132,0x0004003b,0x00000007,0x000007c0, + 0x00000007,0x0004003b,0x00000007,0x000007c1,0x00000007,0x0004003b,0x00000007,0x000007c5, + 0x00000007,0x0004003b,0x00000007,0x000007c8,0x00000007,0x0004003b,0x00000007,0x000007cc, + 0x00000007,0x0004003b,0x00000007,0x000007cd,0x00000007,0x0004003b,0x00000007,0x000007d4, + 0x00000007,0x0004003b,0x00000007,0x000007d5,0x00000007,0x0004003b,0x00000007,0x000007db, + 0x00000007,0x0004003b,0x00000007,0x000007de,0x00000007,0x0004003b,0x00000007,0x000007e1, + 0x00000007,0x0004003b,0x0000006d,0x000007e2,0x00000007,0x0004003b,0x00000007,0x000007e9, + 0x00000007,0x0004003b,0x00000007,0x000007ea,0x00000007,0x0004003b,0x00000007,0x000007f4, + 0x00000007,0x0004003b,0x00000007,0x000007f5,0x00000007,0x0004003b,0x00000007,0x000007f7, + 0x00000007,0x0004003b,0x00000007,0x000007f8,0x00000007,0x0004003b,0x00000007,0x000007fb, + 0x00000007,0x0004003b,0x00000007,0x00000806,0x00000007,0x0004003b,0x00000007,0x00000807, + 0x00000007,0x0004003b,0x0000001b,0x0000080a,0x00000007,0x0004003b,0x0000001b,0x00000810, + 0x00000007,0x00050041,0x000000a3,0x000007b7,0x0000012f,0x000003f4,0x0004003d,0x000000a2, + 0x000007b8,0x000007b7,0x000500a4,0x000000a2,0x000007ba,0x000007b8,0x000007b9,0x000600a9, + 0x00000006,0x000007bb,0x000007ba,0x00000150,0x0000014f,0x00050041,0x00000007,0x000007bc, + 0x00000130,0x000003cc,0x0004003d,0x00000006,0x000007bd,0x000007bc,0x00050085,0x00000006, + 0x000007be,0x000007bd,0x000007bb,0x00050041,0x00000007,0x000007bf,0x00000130,0x000003cc, + 0x0003003e,0x000007bf,0x000007be,0x00050041,0x00000007,0x000007c2,0x0000012f,0x000003e0, + 0x0004003d,0x00000006,0x000007c3,0x000007c2,0x0003003e,0x000007c1,0x000007c3,0x00050039, + 0x00000006,0x000007c4,0x00000018,0x000007c1,0x00050041,0x00000007,0x000007c6,0x0000012f, + 0x000003df,0x0004003d,0x00000006,0x000007c7,0x000007c6,0x0003003e,0x000007c5,0x000007c7, + 0x00050041,0x00000007,0x000007c9,0x0000012f,0x000001a7,0x0004003d,0x00000006,0x000007ca, + 0x000007c9,0x0003003e,0x000007c8,0x000007ca,0x00060039,0x00000006,0x000007cb,0x0000003f, + 0x000007c5,0x000007c8,0x0003003e,0x000007cc,0x000007c4,0x0003003e,0x000007cd,0x000007cb, + 0x00060039,0x00000006,0x000007ce,0x0000003f,0x000007cc,0x000007cd,0x0003003e,0x000007c0, + 0x000007ce,0x00050041,0x00000007,0x000007cf,0x00000130,0x000003cc,0x0004003d,0x00000006, + 0x000007d0,0x000007cf,0x0004003d,0x00000006,0x000007d1,0x000007c0,0x00050085,0x00000006, + 0x000007d2,0x000007d1,0x00000361,0x00050083,0x00000006,0x000007d3,0x000007d0,0x000007d2, + 0x0003003e,0x000007d4,0x0000014f,0x0003003e,0x000007d5,0x000007d3,0x00060039,0x00000006, + 0x000007d6,0x0000003f,0x000007d4,0x000007d5,0x00050041,0x00000007,0x000007d7,0x00000130, + 0x000003cc,0x0003003e,0x000007d7,0x000007d6,0x00050041,0x00000007,0x000007d8,0x00000130, + 0x000003cc,0x0004003d,0x00000006,0x000007d9,0x000007d8,0x00050083,0x00000006,0x000007da, + 0x000007d9,0x00000150,0x0003003e,0x000007db,0x000007da,0x00050039,0x00000006,0x000007dc, + 0x00000018,0x000007db,0x00050085,0x00000006,0x000007dd,0x000007dc,0x00000150,0x0003003e, + 0x000007de,0x000007dd,0x00050039,0x00000006,0x000007df,0x00000018,0x000007de,0x00050041, + 0x00000007,0x000007e0,0x00000130,0x000003cd,0x0003003e,0x000007e0,0x000007df,0x00050041, + 0x0000006d,0x000007e3,0x0000012f,0x00000192,0x0004003d,0x00000055,0x000007e4,0x000007e3, + 0x0003003e,0x000007e2,0x000007e4,0x00050039,0x00000006,0x000007e5,0x00000086,0x000007e2, + 0x00050041,0x00000007,0x000007e6,0x0000012f,0x000003e0,0x0004003d,0x00000006,0x000007e7, + 0x000007e6,0x00050085,0x00000006,0x000007e8,0x000007e7,0x0000014f,0x0003003e,0x000007e9, + 0x000007e8,0x00050041,0x00000007,0x000007eb,0x0000012f,0x000003df,0x0004003d,0x00000006, + 0x000007ec,0x000007eb,0x0003003e,0x000007ea,0x000007ec,0x00060039,0x00000006,0x000007ed, + 0x0000003f,0x000007e9,0x000007ea,0x00050083,0x00000006,0x000007ee,0x00000150,0x000007ed, + 0x00050085,0x00000006,0x000007ef,0x000007e5,0x000007ee,0x0003003e,0x000007e1,0x000007ef, + 0x00050041,0x00000007,0x000007f0,0x00000130,0x000003cc,0x0004003d,0x00000006,0x000007f1, + 0x000007f0,0x0004003d,0x00000006,0x000007f2,0x000007e1,0x00050081,0x00000006,0x000007f3, + 0x000007f1,0x000007f2,0x0003003e,0x000007f4,0x000007f3,0x0003003e,0x000007f5,0x00000361, + 0x00060039,0x00000006,0x000007f6,0x00000023,0x000007f4,0x000007f5,0x0003003e,0x000007f7, + 0x0000014f,0x0003003e,0x000007f8,0x000007f6,0x00060039,0x00000006,0x000007f9,0x0000003f, + 0x000007f7,0x000007f8,0x00050041,0x00000007,0x000007fa,0x00000130,0x000003cc,0x0003003e, + 0x000007fa,0x000007f9,0x00040039,0x00000006,0x000007fd,0x00000065,0x00050088,0x00000006, + 0x000007fe,0x000007fc,0x000007fd,0x0004003d,0x00000006,0x000007ff,0x000007c0,0x00050083, + 0x00000006,0x00000800,0x00000150,0x000007ff,0x00050085,0x00000006,0x00000801,0x000007fe, + 0x00000800,0x0003003e,0x000007fb,0x00000801,0x00050041,0x00000007,0x00000802,0x00000130, + 0x000003cc,0x0004003d,0x00000006,0x00000803,0x00000802,0x0004003d,0x00000006,0x00000804, + 0x000007fb,0x00050083,0x00000006,0x00000805,0x00000803,0x00000804,0x0003003e,0x00000806, + 0x0000014f,0x0003003e,0x00000807,0x00000805,0x00060039,0x00000006,0x00000808,0x0000003f, + 0x00000806,0x00000807,0x00050041,0x00000007,0x00000809,0x00000130,0x000003cc,0x0003003e, + 0x00000809,0x00000808,0x00050041,0x0000001b,0x0000080b,0x0000012f,0x0000022f,0x0004003d, + 0x0000001a,0x0000080c,0x0000080b,0x00050041,0x0000001b,0x0000080d,0x0000012f,0x00000198, + 0x0004003d,0x0000001a,0x0000080e,0x0000080d,0x00050083,0x0000001a,0x0000080f,0x0000080c, + 0x0000080e,0x0003003e,0x0000080a,0x0000080f,0x0004003d,0x0000001a,0x00000811,0x0000080a, + 0x0003003e,0x00000810,0x00000811,0x00050039,0x000000a2,0x00000812,0x000000be,0x00000810, + 0x000500a4,0x000000a2,0x00000814,0x00000812,0x00000813,0x000600a9,0x00000006,0x00000815, + 0x00000814,0x00000150,0x0000014f,0x00050041,0x00000007,0x00000816,0x00000130,0x000003cc, + 0x0004003d,0x00000006,0x00000817,0x00000816,0x00050085,0x00000006,0x00000818,0x00000817, + 0x00000815,0x00050041,0x00000007,0x00000819,0x00000130,0x000003cc,0x0003003e,0x00000819, + 0x00000818,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000135,0x00000000,0x00000106, + 0x00030037,0x000000fb,0x00000133,0x00030037,0x000000fd,0x00000134,0x000200f8,0x00000136, + 0x0004003b,0x00000007,0x0000081a,0x00000007,0x0004003b,0x00000007,0x00000821,0x00000007, + 0x0004003b,0x00000007,0x00000822,0x00000007,0x0004003b,0x00000007,0x00000824,0x00000007, + 0x0004003b,0x00000007,0x00000826,0x00000007,0x0004003b,0x00000007,0x00000828,0x00000007, + 0x0004003b,0x00000007,0x00000829,0x00000007,0x0004003b,0x00000007,0x0000082b,0x00000007, + 0x0004003b,0x00000007,0x0000082d,0x00000007,0x00050051,0x00000006,0x0000081b,0x00000133, + 0x0000000a,0x0003003e,0x0000081a,0x0000081b,0x00050051,0x00000006,0x0000081d,0x00000133, + 0x00000006,0x00040039,0x00000006,0x0000081e,0x0000006b,0x00050085,0x00000006,0x0000081f, + 0x0000081d,0x0000081e,0x00050088,0x00000006,0x00000820,0x0000081f,0x000002a2,0x0003003e, + 0x00000821,0x0000014f,0x0003003e,0x00000822,0x00000820,0x00060039,0x00000006,0x00000823, + 0x0000003f,0x00000821,0x00000822,0x0003003e,0x00000824,0x00000823,0x00050039,0x00000006, + 0x00000825,0x00000018,0x00000824,0x0004003d,0x00000006,0x00000827,0x0000081a,0x0003003e, + 0x00000826,0x00000827,0x0003003e,0x00000828,0x0000081c,0x0003003e,0x00000829,0x00000825, + 0x00070039,0x00000006,0x0000082a,0x0000000c,0x00000826,0x00000828,0x00000829,0x0004003d, + 0x00000006,0x0000082c,0x0000081a,0x0003003e,0x0000082b,0x0000082c,0x0003003e,0x0000082d, + 0x0000082a,0x00060039,0x00000006,0x0000082e,0x00000023,0x0000082b,0x0000082d,0x0003003e, + 0x0000081a,0x0000082e,0x0004003d,0x00000006,0x0000082f,0x0000081a,0x00050041,0x00000007, + 0x00000830,0x00000134,0x00000198,0x0003003e,0x00000830,0x0000082f,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x0000013b,0x00000000,0x00000137,0x00030037,0x0000006d,0x00000138, + 0x00030037,0x0000011d,0x00000139,0x00030037,0x000000fd,0x0000013a,0x000200f8,0x0000013c, + 0x0004003b,0x0000001b,0x00000833,0x00000007,0x0004003b,0x0000001b,0x00000846,0x00000007, + 0x0004003b,0x0000006d,0x00000849,0x00000007,0x0004003b,0x0000006d,0x0000084a,0x00000007, + 0x0004003b,0x0000006d,0x0000084d,0x00000007,0x0004003b,0x0000001b,0x0000084f,0x00000007, + 0x0004003b,0x0000001b,0x00000853,0x00000007,0x0004003b,0x0000011d,0x00000858,0x00000007, + 0x0004003b,0x0000001b,0x0000085c,0x00000007,0x0004003b,0x0000001b,0x0000085f,0x00000007, + 0x0004003b,0x0000006d,0x00000861,0x00000007,0x0004003b,0x0000006d,0x00000862,0x00000007, + 0x0004003b,0x0000001b,0x00000864,0x00000007,0x0004003b,0x0000001b,0x00000868,0x00000007, + 0x0004003b,0x0000001b,0x0000086d,0x00000007,0x0004003b,0x0000006d,0x00000870,0x00000007, + 0x0004003b,0x0000006d,0x00000871,0x00000007,0x0004003b,0x0000001b,0x00000873,0x00000007, + 0x0004003b,0x00000030,0x00000881,0x00000007,0x0004003b,0x0000001b,0x00000882,0x00000007, + 0x0004003b,0x00000007,0x00000886,0x00000007,0x0004003b,0x00000007,0x0000088b,0x00000007, + 0x0004003b,0x00000007,0x00000890,0x00000007,0x0004003b,0x00000007,0x00000895,0x00000007, + 0x0004003d,0x00000055,0x00000831,0x00000138,0x00050041,0x0000006d,0x00000832,0x00000139, + 0x00000192,0x0003003e,0x00000832,0x00000831,0x0004003d,0x00000055,0x00000834,0x00000138, + 0x0004006f,0x0000001a,0x00000835,0x00000834,0x00050050,0x0000001a,0x00000836,0x000002a2, + 0x000002a2,0x00050081,0x0000001a,0x00000837,0x00000835,0x00000836,0x00040039,0x00000055, + 0x00000838,0x0000005b,0x0004006f,0x0000001a,0x00000839,0x00000838,0x00050088,0x0000001a, + 0x0000083a,0x00000837,0x00000839,0x0003003e,0x00000833,0x0000083a,0x0004003d,0x0000001a, + 0x0000083b,0x00000833,0x00050041,0x0000001b,0x0000083c,0x00000139,0x0000022f,0x0003003e, + 0x0000083c,0x0000083b,0x0004003d,0x0000001a,0x0000083d,0x00000833,0x00040039,0x0000001a, + 0x0000083e,0x00000060,0x00040039,0x00000055,0x0000083f,0x00000057,0x0004006f,0x0000001a, + 0x00000840,0x0000083f,0x00050088,0x0000001a,0x00000841,0x0000083e,0x00000840,0x00050081, + 0x0000001a,0x00000842,0x0000083d,0x00000841,0x00050041,0x0000001b,0x00000843,0x00000139, + 0x0000019d,0x0003003e,0x00000843,0x00000842,0x00040039,0x00000055,0x00000844,0x00000057, + 0x00040039,0x00000055,0x00000845,0x00000059,0x00050041,0x0000001b,0x00000847,0x00000139, + 0x0000019d,0x0004003d,0x0000001a,0x00000848,0x00000847,0x0003003e,0x00000846,0x00000848, + 0x0003003e,0x00000849,0x00000844,0x0003003e,0x0000084a,0x00000845,0x00070039,0x0000001a, + 0x0000084b,0x000000ca,0x00000846,0x00000849,0x0000084a,0x00050041,0x0000001b,0x0000084c, + 0x00000139,0x000001a2,0x0003003e,0x0000084c,0x0000084b,0x0004003d,0x00000055,0x0000084e, + 0x00000138,0x0003003e,0x0000084d,0x0000084e,0x0004003d,0x0000001a,0x00000850,0x00000833, + 0x0003003e,0x0000084f,0x00000850,0x00060039,0x0000001a,0x00000851,0x0000011b,0x0000084d, + 0x0000084f,0x00050041,0x0000001b,0x00000852,0x00000139,0x00000198,0x0003003e,0x00000852, + 0x00000851,0x00050041,0x0000001b,0x00000854,0x00000139,0x00000198,0x0004003d,0x0000001a, + 0x00000855,0x00000854,0x0003003e,0x00000853,0x00000855,0x00050039,0x00000006,0x00000856, + 0x00000098,0x00000853,0x00050041,0x00000007,0x00000857,0x00000139,0x000003cd,0x0003003e, + 0x00000857,0x00000856,0x0004003d,0x000000fb,0x00000859,0x00000139,0x0003003e,0x00000858, + 0x00000859,0x00050039,0x00000002,0x0000085a,0x00000120,0x00000858,0x0004003d,0x000000fb, + 0x0000085b,0x00000858,0x0003003e,0x00000139,0x0000085b,0x00040039,0x00000055,0x0000085d, + 0x00000057,0x00040039,0x00000055,0x0000085e,0x00000059,0x0004003d,0x0000001a,0x00000860, + 0x00000833,0x0003003e,0x0000085f,0x00000860,0x0003003e,0x00000861,0x0000085d,0x0003003e, + 0x00000862,0x0000085e,0x00070039,0x0000001a,0x00000863,0x000000ca,0x0000085f,0x00000861, + 0x00000862,0x0003003e,0x0000085c,0x00000863,0x0004003d,0x0000001a,0x00000865,0x0000085c, + 0x0003003e,0x00000864,0x00000865,0x00050039,0x00000006,0x00000866,0x00000082,0x00000864, + 0x00050041,0x00000007,0x00000867,0x00000139,0x000003e1,0x0003003e,0x00000867,0x00000866, + 0x00040039,0x00000055,0x00000869,0x00000057,0x00050050,0x00000055,0x0000086a,0x0000019d, + 0x0000019d,0x00050087,0x00000055,0x0000086b,0x00000869,0x0000086a,0x00040039,0x00000055, + 0x0000086c,0x0000007b,0x00050041,0x0000001b,0x0000086e,0x00000139,0x0000019d,0x0004003d, + 0x0000001a,0x0000086f,0x0000086e,0x0003003e,0x0000086d,0x0000086f,0x0003003e,0x00000870, + 0x0000086b,0x0003003e,0x00000871,0x0000086c,0x00070039,0x0000001a,0x00000872,0x000000ca, + 0x0000086d,0x00000870,0x00000871,0x0003003e,0x00000868,0x00000872,0x0004003d,0x0000001a, + 0x00000874,0x00000868,0x0003003e,0x00000873,0x00000874,0x00050039,0x00000006,0x00000875, + 0x0000007f,0x00000873,0x00050041,0x00000007,0x00000876,0x00000139,0x000003f3,0x0003003e, + 0x00000876,0x00000875,0x00050041,0x000000a3,0x00000877,0x00000139,0x000001b2,0x0004003d, + 0x000000a2,0x00000878,0x00000877,0x000500a4,0x000000a2,0x00000879,0x00000878,0x000007b9, + 0x000400a8,0x000000a2,0x0000087a,0x00000879,0x000300f7,0x0000087c,0x00000000,0x000400fa, + 0x0000087a,0x0000087b,0x0000087c,0x000200f8,0x0000087b,0x00040039,0x00000006,0x0000087d, + 0x00000069,0x000500b4,0x000000a2,0x0000087e,0x0000014f,0x0000087d,0x000200f9,0x0000087c, + 0x000200f8,0x0000087c,0x000700f5,0x000000a2,0x0000087f,0x00000879,0x0000013c,0x0000087e, + 0x0000087b,0x00050041,0x000000a3,0x00000880,0x00000139,0x000003f4,0x0003003e,0x00000880, + 0x0000087f,0x00050041,0x0000001b,0x00000883,0x00000139,0x000001a2,0x0004003d,0x0000001a, + 0x00000884,0x00000883,0x0003003e,0x00000882,0x00000884,0x00050039,0x0000002f,0x00000885, + 0x00000095,0x00000882,0x0003003e,0x00000881,0x00000885,0x00050041,0x00000007,0x00000887, + 0x00000881,0x000001eb,0x0004003d,0x00000006,0x00000888,0x00000887,0x0003003e,0x00000886, + 0x00000888,0x00050039,0x00000006,0x00000889,0x00000018,0x00000886,0x00050041,0x00000007, + 0x0000088a,0x00000139,0x000003df,0x0003003e,0x0000088a,0x00000889,0x00050041,0x00000007, + 0x0000088c,0x00000881,0x00000284,0x0004003d,0x00000006,0x0000088d,0x0000088c,0x0003003e, + 0x0000088b,0x0000088d,0x00050039,0x00000006,0x0000088e,0x00000018,0x0000088b,0x00050041, + 0x00000007,0x0000088f,0x00000139,0x000001a7,0x0003003e,0x0000088f,0x0000088e,0x00050041, + 0x00000007,0x00000891,0x00000881,0x00000288,0x0004003d,0x00000006,0x00000892,0x00000891, + 0x0003003e,0x00000890,0x00000892,0x00050039,0x00000006,0x00000893,0x00000018,0x00000890, + 0x00050041,0x00000007,0x00000894,0x00000139,0x000003e0,0x0003003e,0x00000894,0x00000893, + 0x00050041,0x00000007,0x00000896,0x00000881,0x00000707,0x0004003d,0x00000006,0x00000897, + 0x00000896,0x0003003e,0x00000895,0x00000897,0x00050039,0x00000006,0x00000898,0x00000018, + 0x00000895,0x00050041,0x00000007,0x00000899,0x00000139,0x000001ad,0x0003003e,0x00000899, + 0x00000898,0x00050041,0x00000007,0x0000089a,0x00000139,0x000001ad,0x0004003d,0x00000006, + 0x0000089b,0x0000089a,0x00050085,0x00000006,0x0000089d,0x0000089b,0x0000089c,0x0006000c, + 0x00000006,0x0000089e,0x00000001,0x00000001,0x0000089d,0x000500ba,0x000000a2,0x0000089f, + 0x0000089e,0x00000150,0x000600a9,0x00000006,0x000008a0,0x0000089f,0x00000150,0x0000014f, + 0x00050041,0x00000007,0x000008a1,0x00000139,0x000001ad,0x0004003d,0x00000006,0x000008a2, + 0x000008a1,0x00050085,0x00000006,0x000008a3,0x000008a2,0x000008a0,0x00050041,0x00000007, + 0x000008a4,0x00000139,0x000001ad,0x0003003e,0x000008a4,0x000008a3,0x00050041,0x0000000f, + 0x000008a5,0x0000013a,0x0000022f,0x0003003e,0x000008a5,0x00000487,0x00050041,0x0000000f, + 0x000008a6,0x0000013a,0x000001a2,0x0003003e,0x000008a6,0x00000487,0x00050041,0x00000007, + 0x000008a7,0x0000013a,0x00000198,0x0003003e,0x000008a7,0x00000150,0x00050041,0x00000007, + 0x000008a8,0x0000013a,0x0000019d,0x0003003e,0x000008a8,0x0000014f,0x00050041,0x00000007, + 0x000008a9,0x0000013a,0x000003cc,0x0003003e,0x000008a9,0x0000014f,0x00050041,0x00000007, + 0x000008aa,0x0000013a,0x000003cd,0x0003003e,0x000008aa,0x0000014f,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x0000013f,0x00000000,0x0000013d,0x00030037,0x0000006d,0x0000013e, + 0x000200f8,0x00000140,0x0004003b,0x0000011d,0x000008ab,0x00000007,0x0004003b,0x000000fd, + 0x000008ac,0x00000007,0x0004003b,0x0000006d,0x000008ad,0x00000007,0x0004003b,0x0000011d, + 0x000008af,0x00000007,0x0004003b,0x000000fd,0x000008b1,0x00000007,0x0004003b,0x000000fd, + 0x000008c1,0x00000007,0x0004003b,0x0000011d,0x000008c5,0x00000007,0x0004003b,0x000000fd, + 0x000008c7,0x00000007,0x0004003b,0x000000fd,0x000008cc,0x00000007,0x0004003b,0x000000fd, + 0x000008d1,0x00000007,0x0004003b,0x000000fd,0x000008d6,0x00000007,0x0004003b,0x000000fd, + 0x000008db,0x00000007,0x0004003b,0x0000000f,0x000008e5,0x00000007,0x0004003b,0x0000000f, + 0x000008e8,0x00000007,0x0004003b,0x0000006d,0x000008f3,0x00000007,0x0004003b,0x00000030, + 0x000008f5,0x00000007,0x0004003b,0x0000006d,0x000008f7,0x00000007,0x0004003b,0x00000007, + 0x000008f9,0x00000007,0x0004003d,0x00000055,0x000008ae,0x0000013e,0x0003003e,0x000008ad, + 0x000008ae,0x0004003d,0x000000fb,0x000008b0,0x000008ab,0x0003003e,0x000008af,0x000008b0, + 0x0004003d,0x000000fc,0x000008b2,0x000008ac,0x0003003e,0x000008b1,0x000008b2,0x00070039, + 0x00000002,0x000008b3,0x0000013b,0x000008ad,0x000008af,0x000008b1,0x0004003d,0x000000fb, + 0x000008b4,0x000008af,0x0003003e,0x000008ab,0x000008b4,0x0004003d,0x000000fc,0x000008b5, + 0x000008b1,0x0003003e,0x000008ac,0x000008b5,0x00050041,0x000000a3,0x000008b6,0x000008ab, + 0x000001b2,0x0004003d,0x000000a2,0x000008b7,0x000008b6,0x000300f7,0x000008b9,0x00000000, + 0x000400fa,0x000008b7,0x000008b8,0x000008b9,0x000200f8,0x000008b8,0x00050041,0x000000a3, + 0x000008ba,0x000008ab,0x000003f4,0x0004003d,0x000000a2,0x000008bb,0x000008ba,0x000400a8, + 0x000000a2,0x000008bc,0x000008bb,0x000200f9,0x000008b9,0x000200f8,0x000008b9,0x000700f5, + 0x000000a2,0x000008bd,0x000008b7,0x00000140,0x000008bc,0x000008b8,0x000300f7,0x000008bf, + 0x00000000,0x000400fa,0x000008bd,0x000008be,0x000008bf,0x000200f8,0x000008be,0x0004003d, + 0x000000fb,0x000008c0,0x000008ab,0x0004003d,0x000000fc,0x000008c2,0x000008ac,0x0003003e, + 0x000008c1,0x000008c2,0x00060039,0x00000002,0x000008c3,0x00000124,0x000008c0,0x000008c1, + 0x0004003d,0x000000fc,0x000008c4,0x000008c1,0x0003003e,0x000008ac,0x000008c4,0x000200f9, + 0x000008bf,0x000200f8,0x000008bf,0x0004003d,0x000000fb,0x000008c6,0x000008ab,0x0003003e, + 0x000008c5,0x000008c6,0x0004003d,0x000000fc,0x000008c8,0x000008ac,0x0003003e,0x000008c7, + 0x000008c8,0x00060039,0x00000002,0x000008c9,0x00000131,0x000008c5,0x000008c7,0x0004003d, + 0x000000fc,0x000008ca,0x000008c7,0x0003003e,0x000008ac,0x000008ca,0x0004003d,0x000000fb, + 0x000008cb,0x000008ab,0x0004003d,0x000000fc,0x000008cd,0x000008ac,0x0003003e,0x000008cc, + 0x000008cd,0x00060039,0x00000002,0x000008ce,0x00000135,0x000008cb,0x000008cc,0x0004003d, + 0x000000fc,0x000008cf,0x000008cc,0x0003003e,0x000008ac,0x000008cf,0x0004003d,0x000000fb, + 0x000008d0,0x000008ab,0x0004003d,0x000000fc,0x000008d2,0x000008ac,0x0003003e,0x000008d1, + 0x000008d2,0x00060039,0x00000002,0x000008d3,0x00000109,0x000008d0,0x000008d1,0x0004003d, + 0x000000fc,0x000008d4,0x000008d1,0x0003003e,0x000008ac,0x000008d4,0x0004003d,0x000000fb, + 0x000008d5,0x000008ab,0x0004003d,0x000000fc,0x000008d7,0x000008ac,0x0003003e,0x000008d6, + 0x000008d7,0x00060039,0x00000002,0x000008d8,0x0000012c,0x000008d5,0x000008d6,0x0004003d, + 0x000000fc,0x000008d9,0x000008d6,0x0003003e,0x000008ac,0x000008d9,0x0004003d,0x000000fb, + 0x000008da,0x000008ab,0x0004003d,0x000000fc,0x000008dc,0x000008ac,0x0003003e,0x000008db, + 0x000008dc,0x00060039,0x00000002,0x000008dd,0x00000128,0x000008da,0x000008db,0x0004003d, + 0x000000fc,0x000008de,0x000008db,0x0003003e,0x000008ac,0x000008de,0x00040039,0x00000006, + 0x000008df,0x00000091,0x00050041,0x0000000f,0x000008e0,0x000008ac,0x000001a2,0x0004003d, + 0x0000000e,0x000008e1,0x000008e0,0x00060050,0x0000000e,0x000008e2,0x000008df,0x000008df, + 0x000008df,0x00050088,0x0000000e,0x000008e3,0x000008e1,0x000008e2,0x00050041,0x0000000f, + 0x000008e4,0x000008ac,0x000001a2,0x0003003e,0x000008e4,0x000008e3,0x00050041,0x0000000f, + 0x000008e6,0x000008ac,0x000001a2,0x0004003d,0x0000000e,0x000008e7,0x000008e6,0x0003003e, + 0x000008e5,0x000008e7,0x0003003e,0x000008e8,0x00000487,0x00060039,0x0000000e,0x000008e9, + 0x00000047,0x000008e5,0x000008e8,0x00050041,0x0000000f,0x000008ea,0x000008ac,0x000001a2, + 0x0003003e,0x000008ea,0x000008e9,0x00050041,0x0000000f,0x000008eb,0x000008ac,0x000001a2, + 0x0004003d,0x0000000e,0x000008ec,0x000008eb,0x00050041,0x00000007,0x000008ed,0x000008ac, + 0x000003cc,0x0004003d,0x00000006,0x000008ee,0x000008ed,0x00050051,0x00000006,0x000008ef, + 0x000008ec,0x00000000,0x00050051,0x00000006,0x000008f0,0x000008ec,0x00000001,0x00050051, + 0x00000006,0x000008f1,0x000008ec,0x00000002,0x00070050,0x0000002f,0x000008f2,0x000008ef, + 0x000008f0,0x000008f1,0x000008ee,0x0004003d,0x00000055,0x000008f4,0x0000013e,0x0003003e, + 0x000008f3,0x000008f4,0x0003003e,0x000008f5,0x000008f2,0x00060039,0x00000002,0x000008f6, + 0x00000079,0x000008f3,0x000008f5,0x0004003d,0x00000055,0x000008f8,0x0000013e,0x0003003e, + 0x000008f7,0x000008f8,0x0003003e,0x000008f9,0x0000014f,0x00060039,0x00000002,0x000008fa, + 0x0000008b,0x000008f7,0x000008f9,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h b/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h new file mode 100644 index 000000000..eb4cbcc0b --- /dev/null +++ b/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h @@ -0,0 +1,543 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_LUMA_INSTABILITY_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x0000027a,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x00000264,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001, + 0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265, + 0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47, + 0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63, + 0x00736570,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70,0x5f656c79,0x656e696c, + 0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63, + 0x69645f65,0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005, + 0x0000000a,0x53786666,0x72757461,0x28657461,0x003b3166,0x00030005,0x00000009,0x00000078, + 0x00060005,0x0000000f,0x4d786666,0x66286e69,0x31663b31,0x0000003b,0x00030005,0x0000000d, + 0x00000078,0x00030005,0x0000000e,0x00000079,0x00060005,0x00000016,0x4d786666,0x76286e69, + 0x763b3266,0x003b3266,0x00030005,0x00000014,0x00000078,0x00030005,0x00000015,0x00000079, + 0x00060005,0x0000001a,0x4d786666,0x66287861,0x31663b31,0x0000003b,0x00030005,0x00000018, + 0x00000078,0x00030005,0x00000019,0x00000079,0x00060005,0x0000001e,0x4d786666,0x76287861, + 0x763b3266,0x003b3266,0x00030005,0x0000001c,0x00000078,0x00030005,0x0000001d,0x00000079, + 0x00050005,0x00000023,0x646e6552,0x69537265,0x0028657a,0x00090005,0x00000025,0x76657250, + 0x73756f69,0x6d617246,0x6e655265,0x53726564,0x28657a69,0x00000000,0x00060005,0x00000027, + 0x5278614d,0x65646e65,0x7a695372,0x00002865,0x00040005,0x0000002a,0x7474694a,0x00287265, + 0x00080005,0x0000002c,0x76657250,0x73756f69,0x6d617246,0x74694a65,0x28726574,0x00000000, + 0x00070005,0x0000002f,0x746c6544,0x65725061,0x6f707845,0x65727573,0x00000028,0x00090005, + 0x00000037,0x726f7453,0x6d754c65,0x73694861,0x79726f74,0x32697628,0x3466763b,0x0000003b, + 0x00040005,0x00000035,0x50785069,0x0000736f,0x00060005,0x00000036,0x6d754c66,0x73694861, + 0x79726f74,0x00000000,0x00080005,0x0000003b,0x706d6153,0x754c656c,0x6948616d,0x726f7473, + 0x66762879,0x00003b32,0x00030005,0x0000003a,0x00565566,0x000c0005,0x0000003d,0x46746547, + 0x68747261,0x44747365,0x68747065,0x3170694d,0x6f736552,0x65637275,0x656d6944,0x6f69736e, + 0x0028736e,0x000a0005,0x00000041,0x706d6153,0x6146656c,0x65687472,0x65447473,0x4d687470, + 0x28317069,0x3b326676,0x00000000,0x00030005,0x00000040,0x00565566,0x00080005,0x00000044, + 0x706d6153,0x7543656c,0x6e657272,0x6d754c74,0x66762861,0x00003b32,0x00030005,0x00000043, + 0x00007675,0x000a0005,0x00000049,0x726f7453,0x6d754c65,0x736e4961,0x69626174,0x7974696c, + 0x32697628,0x3b31663b,0x00000000,0x00040005,0x00000047,0x50785069,0x0000736f,0x00070005, + 0x00000048,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x00000000,0x000a0005,0x0000004d, + 0x64616f4c,0x616c6944,0x4d646574,0x6f69746f,0x6365566e,0x28726f74,0x3b326976,0x00000000, + 0x00050005,0x0000004c,0x49785069,0x7475706e,0x00000000,0x00050005,0x0000004f,0x6f707845, + 0x65727573,0x00000028,0x000a0005,0x00000052,0x706d6153,0x6944656c,0x6574616c,0x61655264, + 0x76697463,0x73614d65,0x7628736b,0x003b3266,0x00030005,0x00000051,0x00565566,0x00070005, + 0x00000055,0x34746547,0x6c65564b,0x7469636f,0x66762879,0x00003b32,0x00060005,0x00000054, + 0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00090005,0x0000005b,0x446e694d,0x64697669, + 0x79426465,0x2878614d,0x663b3166,0x31663b31,0x0000003b,0x00030005,0x00000058,0x00003076, + 0x00030005,0x00000059,0x00003176,0x00070005,0x0000005a,0x5a6e4f66,0x526f7265,0x72757465, + 0x6c61566e,0x00006575,0x00080005,0x00000060,0x446e694d,0x64697669,0x79426465,0x2878614d, + 0x663b3166,0x00003b31,0x00030005,0x0000005e,0x00003076,0x00030005,0x0000005f,0x00003176, + 0x00060005,0x00000065,0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005,0x00000064, + 0x00765566,0x00080005,0x0000006b,0x6d616c43,0x28765570,0x3b326676,0x3b326976,0x3b326976, + 0x00000000,0x00030005,0x00000068,0x00765566,0x00060005,0x00000069,0x78655469,0x65727574, + 0x657a6953,0x00000000,0x00060005,0x0000006a,0x73655269,0x6372756f,0x7a695365,0x00000065, + 0x00090005,0x0000006d,0x616d754c,0x74736e49,0x6c696261,0x46797469,0x6f746361,0x74614472, + 0x00000061,0x00070006,0x0000006d,0x00000000,0x6d754c66,0x73694861,0x79726f74,0x00000000, + 0x00090006,0x0000006d,0x00000001,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x74636146, + 0x0000726f,0x00160005,0x00000073,0x706d6f43,0x4c657475,0x49616d75,0x6174736e,0x696c6962, + 0x61467974,0x726f7463,0x72747328,0x2d746375,0x616d754c,0x74736e49,0x6c696261,0x46797469, + 0x6f746361,0x74614472,0x66762d61,0x31662d34,0x31663b31,0x3b31663b,0x00000000,0x00040005, + 0x00000070,0x61746164,0x00000000,0x00070005,0x00000071,0x72754366,0x746e6572,0x6d617246, + 0x6d754c65,0x00000061,0x00080005,0x00000072,0x72614666,0x73656874,0x70654474,0x6e496874, + 0x6574654d,0x00007372,0x00080005,0x00000077,0x616d754c,0x74736e49,0x6c696261,0x28797469, + 0x3b326976,0x00000000,0x00040005,0x00000076,0x50785069,0x0000736f,0x00070005,0x00000093, + 0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x00000093,0x00000000, + 0x6e655269,0x53726564,0x00657a69,0x000a0006,0x00000093,0x00000001,0x65725069,0x756f6976, + 0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x00000093,0x00000002, + 0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x00000093,0x00000003,0x65725069, + 0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x00000093, + 0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x00000093,0x00000005, + 0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x00000093,0x00000006,0x76654466, + 0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x00000093,0x00000007,0x74694a66, + 0x00726574,0x00090006,0x00000093,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d, + 0x72657474,0x00000000,0x00080006,0x00000093,0x00000009,0x746f4d66,0x566e6f69,0x6f746365, + 0x61635372,0x0000656c,0x00080006,0x00000093,0x0000000a,0x776f4466,0x6163736e,0x6146656c, + 0x726f7463,0x00000000,0x000b0006,0x00000093,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365, + 0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x00000093,0x0000000c, + 0x6e615466,0x666c6148,0x00564f46,0x00090006,0x00000093,0x0000000d,0x74694a66,0x53726574, + 0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x00000093,0x0000000e,0x6c654466, + 0x69546174,0x0000656d,0x00080006,0x00000093,0x0000000f,0x6c654466,0x72506174,0x70784565, + 0x7275736f,0x00000065,0x000a0006,0x00000093,0x00000010,0x65695666,0x61705377,0x6f546563, + 0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x00000093,0x00000011,0x61724666, + 0x6e49656d,0x00786564,0x00070006,0x00000093,0x00000012,0x6c655666,0x7469636f,0x63614679, + 0x00726f74,0x00080006,0x00000093,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373, + 0x0000656c,0x00080006,0x00000093,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567, + 0x00656c61,0x000a0006,0x00000093,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e, + 0x65506465,0x61724672,0x0000656d,0x000b0006,0x00000093,0x00000016,0x6e694d66,0x6f736944, + 0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x00000095, + 0x53466263,0x70553352,0x6c616373,0x00007265,0x00060005,0x000000b9,0x6c5f7772,0x5f616d75, + 0x74736968,0x0079726f,0x00060005,0x000000bf,0x756c5f72,0x685f616d,0x6f747369,0x00007972, + 0x00060005,0x000000c3,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00080005,0x000000cb, + 0x61665f72,0x65687472,0x645f7473,0x68747065,0x70696d5f,0x00000031,0x00060005,0x000000da, + 0x75635f72,0x6e657272,0x756c5f74,0x0000616d,0x00070005,0x000000e5,0x6c5f7772,0x5f616d75, + 0x74736e69,0x6c696261,0x00797469,0x00090005,0x000000ea,0x69645f72,0x6574616c,0x6f6d5f64, + 0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00050005,0x000000f1,0x6f707865,0x65727573, + 0x00000000,0x00070005,0x000000f2,0x6e695f72,0x5f747570,0x6f707865,0x65727573,0x00000000, + 0x00090005,0x000000fe,0x69645f72,0x6574616c,0x65725f64,0x69746361,0x6d5f6576,0x736b7361, + 0x00000000,0x00030005,0x0000010e,0x0000006d,0x00040005,0x0000010f,0x61726170,0x0000006d, + 0x00040005,0x00000110,0x61726170,0x0000006d,0x00040005,0x00000117,0x61726170,0x0000006d, + 0x00040005,0x00000118,0x61726170,0x0000006d,0x00030005,0x00000120,0x0000006d,0x00040005, + 0x00000121,0x61726170,0x0000006d,0x00040005,0x00000122,0x61726170,0x0000006d,0x00040005, + 0x00000129,0x61726170,0x0000006d,0x00040005,0x0000012a,0x61726170,0x0000006d,0x00060005, + 0x0000014a,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69,0x00070005,0x0000014f,0x616c4366, + 0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005,0x00000155,0x61726170,0x0000006d, + 0x00040005,0x00000157,0x61726170,0x0000006d,0x00040005,0x00000159,0x61726170,0x0000006d, + 0x00040005,0x0000015a,0x61726170,0x0000006d,0x00050005,0x0000015c,0x616c4366,0x6465706d, + 0x00007655,0x00070005,0x00000164,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x00000000, + 0x00040005,0x00000165,0x66694466,0x00307366,0x00060005,0x0000016a,0x6d695366,0x72616c69, + 0x30797469,0x00000000,0x00060005,0x0000016f,0x78614d66,0x696d6953,0x6972616c,0x00007974, + 0x00030005,0x00000176,0x00000069,0x00040005,0x0000017f,0x66694466,0x00317366,0x00060005, + 0x00000185,0x6d695366,0x72616c69,0x31797469,0x00000000,0x00040005,0x00000192,0x61726170, + 0x0000006d,0x00040005,0x00000194,0x61726170,0x0000006d,0x00040005,0x000001ba,0x61746164, + 0x00000000,0x00080005,0x000001be,0x6c694466,0x64657461,0x69746f4d,0x65566e6f,0x726f7463, + 0x00000000,0x00040005,0x000001bf,0x61726170,0x0000006d,0x00030005,0x000001c2,0x00765566, + 0x00080005,0x000001ca,0x43765566,0x46727275,0x656d6172,0x7474694a,0x64657265,0x00000000, + 0x00080005,0x000001d1,0x50765566,0x46766572,0x656d6172,0x7474694a,0x64657265,0x00000000, + 0x00060005,0x000001d8,0x70655266,0x656a6f72,0x64657463,0x00007655,0x00040005,0x000001dc, + 0x61726170,0x0000006d,0x00060005,0x000001e1,0x52765566,0x74636165,0x5f657669,0x00005748, + 0x00040005,0x000001e4,0x61726170,0x0000006d,0x00040005,0x000001e6,0x61726170,0x0000006d, + 0x00040005,0x000001e7,0x61726170,0x0000006d,0x00080005,0x000001e9,0x6c694466,0x64657461, + 0x63616552,0x65766974,0x6b73614d,0x00000073,0x00040005,0x000001ea,0x61726170,0x0000006d, + 0x00060005,0x000001ed,0x61655266,0x76697463,0x73614d65,0x0000006b,0x00040005,0x000001ee, + 0x61726170,0x0000006d,0x00060005,0x000001f2,0x73694466,0x6c63636f,0x6f697375,0x0000006e, + 0x00040005,0x000001f3,0x61726170,0x0000006d,0x00060005,0x000001f7,0x61685366,0x676e6964, + 0x6e616843,0x00006567,0x00040005,0x000001f8,0x61726170,0x0000006d,0x00060005,0x000001fc, + 0x63634166,0x6c756d75,0x6f697461,0x0000006e,0x00040005,0x000001fd,0x61726170,0x0000006d, + 0x00070005,0x00000202,0x63634162,0x6c756d75,0x6f697461,0x6361466e,0x00726f74,0x00070005, + 0x00000206,0x6d6f4362,0x65747570,0x74736e49,0x6c696261,0x00797469,0x00040005,0x0000020b, + 0x5f765566,0x00005748,0x00040005,0x0000020e,0x61726170,0x0000006d,0x00040005,0x00000210, + 0x61726170,0x0000006d,0x00040005,0x00000211,0x61726170,0x0000006d,0x00070005,0x00000213, + 0x72754366,0x746e6572,0x6d617246,0x6d754c65,0x00000061,0x00040005,0x00000214,0x61726170, + 0x0000006d,0x00070005,0x00000219,0x70655266,0x656a6f72,0x64657463,0x485f7655,0x00000057, + 0x00040005,0x0000021c,0x61726170,0x0000006d,0x00040005,0x0000021e,0x61726170,0x0000006d, + 0x00040005,0x0000021f,0x61726170,0x0000006d,0x00040005,0x00000221,0x61726170,0x0000006d, + 0x00070005,0x00000229,0x72614666,0x73656874,0x70654474,0x76556874,0x0057485f,0x00040005, + 0x0000022f,0x61726170,0x0000006d,0x00040005,0x00000231,0x61726170,0x0000006d,0x00040005, + 0x00000232,0x61726170,0x0000006d,0x00080005,0x00000234,0x72614666,0x73656874,0x70654474, + 0x6e496874,0x6574654d,0x00007372,0x00040005,0x00000235,0x61726170,0x0000006d,0x00040005, + 0x00000238,0x61726170,0x0000006d,0x00040005,0x0000023a,0x61726170,0x0000006d,0x00040005, + 0x0000023c,0x61726170,0x0000006d,0x00060005,0x0000023f,0x6c655666,0x7469636f,0x69655779, + 0x00746867,0x00040005,0x00000240,0x61726170,0x0000006d,0x00040005,0x00000245,0x61726170, + 0x0000006d,0x00040005,0x00000256,0x61726170,0x0000006d,0x00040005,0x00000258,0x61726170, + 0x0000006d,0x00040005,0x0000025c,0x61726170,0x0000006d,0x00040005,0x0000025e,0x61726170, + 0x0000006d,0x00080005,0x00000264,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x00000044,0x00040005,0x00000269,0x61726170,0x0000006d,0x00060005,0x0000026e,0x6f505f73, + 0x43746e69,0x706d616c,0x00000000,0x00060005,0x0000026f,0x72665f72,0x5f656d61,0x6f666e69, + 0x00000000,0x00030047,0x00000093,0x00000002,0x00050048,0x00000093,0x00000000,0x00000023, + 0x00000000,0x00050048,0x00000093,0x00000001,0x00000023,0x00000008,0x00050048,0x00000093, + 0x00000002,0x00000023,0x00000010,0x00050048,0x00000093,0x00000003,0x00000023,0x00000018, + 0x00050048,0x00000093,0x00000004,0x00000023,0x00000020,0x00050048,0x00000093,0x00000005, + 0x00000023,0x00000028,0x00050048,0x00000093,0x00000006,0x00000023,0x00000030,0x00050048, + 0x00000093,0x00000007,0x00000023,0x00000040,0x00050048,0x00000093,0x00000008,0x00000023, + 0x00000048,0x00050048,0x00000093,0x00000009,0x00000023,0x00000050,0x00050048,0x00000093, + 0x0000000a,0x00000023,0x00000058,0x00050048,0x00000093,0x0000000b,0x00000023,0x00000060, + 0x00050048,0x00000093,0x0000000c,0x00000023,0x00000068,0x00050048,0x00000093,0x0000000d, + 0x00000023,0x0000006c,0x00050048,0x00000093,0x0000000e,0x00000023,0x00000070,0x00050048, + 0x00000093,0x0000000f,0x00000023,0x00000074,0x00050048,0x00000093,0x00000010,0x00000023, + 0x00000078,0x00050048,0x00000093,0x00000011,0x00000023,0x0000007c,0x00050048,0x00000093, + 0x00000012,0x00000023,0x00000080,0x00050048,0x00000093,0x00000013,0x00000023,0x00000084, + 0x00050048,0x00000093,0x00000014,0x00000023,0x00000088,0x00050048,0x00000093,0x00000015, + 0x00000023,0x0000008c,0x00050048,0x00000093,0x00000016,0x00000023,0x00000090,0x00040047, + 0x00000095,0x00000021,0x00000009,0x00040047,0x00000095,0x00000022,0x00000000,0x00040047, + 0x000000b9,0x00000021,0x00000007,0x00040047,0x000000b9,0x00000022,0x00000000,0x00040047, + 0x000000bf,0x00000021,0x00000004,0x00040047,0x000000bf,0x00000022,0x00000000,0x00040047, + 0x000000c3,0x00000021,0x000003e9,0x00040047,0x000000c3,0x00000022,0x00000000,0x00040047, + 0x000000cb,0x00000021,0x00000005,0x00040047,0x000000cb,0x00000022,0x00000000,0x00040047, + 0x000000da,0x00000021,0x00000006,0x00040047,0x000000da,0x00000022,0x00000000,0x00040047, + 0x000000e5,0x00000021,0x00000008,0x00040047,0x000000e5,0x00000022,0x00000000,0x00040047, + 0x000000ea,0x00000021,0x00000002,0x00040047,0x000000ea,0x00000022,0x00000000,0x00040047, + 0x000000f2,0x00000021,0x00000000,0x00040047,0x000000f2,0x00000022,0x00000000,0x00040047, + 0x000000fe,0x00000021,0x00000001,0x00040047,0x000000fe,0x00000022,0x00000000,0x00040047, + 0x00000264,0x0000000b,0x0000001c,0x00040047,0x0000026e,0x00000021,0x000003e8,0x00040047, + 0x0000026e,0x00000022,0x00000000,0x00040047,0x0000026f,0x00000021,0x00000003,0x00040047, + 0x0000026f,0x00000022,0x00000000,0x00040047,0x00000279,0x0000000b,0x00000019,0x00020013, + 0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040020, + 0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,0x00000006,0x00000007,0x00050021, + 0x0000000c,0x00000006,0x00000007,0x00000007,0x00040017,0x00000011,0x00000006,0x00000002, + 0x00040020,0x00000012,0x00000007,0x00000011,0x00050021,0x00000013,0x00000011,0x00000012, + 0x00000012,0x00040015,0x00000020,0x00000020,0x00000001,0x00040017,0x00000021,0x00000020, + 0x00000002,0x00030021,0x00000022,0x00000021,0x00030021,0x00000029,0x00000011,0x00030021, + 0x0000002e,0x00000006,0x00040020,0x00000031,0x00000007,0x00000021,0x00040017,0x00000032, + 0x00000006,0x00000004,0x00040020,0x00000033,0x00000007,0x00000032,0x00050021,0x00000034, + 0x00000002,0x00000031,0x00000033,0x00040021,0x00000039,0x00000032,0x00000012,0x00040021, + 0x0000003f,0x00000006,0x00000012,0x00050021,0x00000046,0x00000002,0x00000031,0x00000007, + 0x00040021,0x0000004b,0x00000011,0x00000031,0x00060021,0x00000057,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00050021,0x0000005d,0x00000006,0x00000006,0x00000006,0x00020014, + 0x00000062,0x00040021,0x00000063,0x00000062,0x00000012,0x00060021,0x00000067,0x00000011, + 0x00000012,0x00000031,0x00000031,0x0004001e,0x0000006d,0x00000032,0x00000006,0x00040020, + 0x0000006e,0x00000007,0x0000006d,0x00060021,0x0000006f,0x0000006d,0x0000006e,0x00000007, + 0x00000007,0x00040021,0x00000075,0x00000002,0x00000031,0x0004002b,0x00000006,0x0000007a, + 0x00000000,0x0004002b,0x00000006,0x0000007b,0x3f800000,0x0019001e,0x00000093,0x00000021, + 0x00000021,0x00000021,0x00000021,0x00000021,0x00000021,0x00000032,0x00000011,0x00000011, + 0x00000011,0x00000011,0x00000011,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000094, + 0x00000002,0x00000093,0x0004003b,0x00000094,0x00000095,0x00000002,0x0004002b,0x00000020, + 0x00000096,0x00000000,0x00040020,0x00000097,0x00000002,0x00000021,0x0004002b,0x00000020, + 0x0000009c,0x00000001,0x0004002b,0x00000020,0x000000a1,0x00000004,0x0004002b,0x00000020, + 0x000000a6,0x00000007,0x00040020,0x000000a7,0x00000002,0x00000011,0x0004002b,0x00000020, + 0x000000ac,0x00000008,0x0004002b,0x00000020,0x000000b1,0x0000000f,0x00040020,0x000000b2, + 0x00000002,0x00000006,0x00090019,0x000000b7,0x00000006,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000004,0x00040020,0x000000b8,0x00000000,0x000000b7,0x0004003b, + 0x000000b8,0x000000b9,0x00000000,0x00090019,0x000000bd,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000000be,0x00000000,0x000000bd, + 0x0004003b,0x000000be,0x000000bf,0x00000000,0x0002001a,0x000000c1,0x00040020,0x000000c2, + 0x00000000,0x000000c1,0x0004003b,0x000000c2,0x000000c3,0x00000000,0x0003001b,0x000000c5, + 0x000000bd,0x0004003b,0x000000be,0x000000cb,0x00000000,0x00040015,0x000000d5,0x00000020, + 0x00000000,0x0004002b,0x000000d5,0x000000d6,0x00000000,0x0004003b,0x000000be,0x000000da, + 0x00000000,0x00090019,0x000000e3,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000009,0x00040020,0x000000e4,0x00000000,0x000000e3,0x0004003b,0x000000e4, + 0x000000e5,0x00000000,0x0004003b,0x000000be,0x000000ea,0x00000000,0x0004003b,0x000000be, + 0x000000f2,0x00000000,0x0005002c,0x00000021,0x000000f4,0x00000096,0x00000096,0x0004003b, + 0x000000be,0x000000fe,0x00000000,0x0004002b,0x00000006,0x00000107,0x45700000,0x0004002b, + 0x00000006,0x00000108,0x45070000,0x0005002c,0x00000011,0x00000109,0x00000107,0x00000108, + 0x0004002b,0x000000d5,0x0000013d,0x00000001,0x0004002b,0x00000006,0x00000150,0x3f000000, + 0x0005002c,0x00000011,0x00000151,0x00000150,0x00000150,0x00040020,0x00000175,0x00000007, + 0x00000020,0x0004002b,0x00000020,0x0000017d,0x00000003,0x0004002b,0x000000d5,0x0000019d, + 0x00000002,0x0004002b,0x000000d5,0x000001a0,0x00000003,0x0007002c,0x00000032,0x000001bc, + 0x0000007a,0x0000007a,0x0000007a,0x0000007a,0x00040020,0x00000201,0x00000007,0x00000062, + 0x0004002b,0x00000006,0x00000204,0x3f666666,0x0004002b,0x00000020,0x0000022b,0x00000002, + 0x0004002b,0x00000006,0x00000243,0x41a00000,0x00040017,0x00000262,0x000000d5,0x00000003, + 0x00040020,0x00000263,0x00000001,0x00000262,0x0004003b,0x00000263,0x00000264,0x00000001, + 0x00040017,0x00000265,0x000000d5,0x00000002,0x0004002b,0x00000006,0x0000026b,0x387fda40, + 0x0004002b,0x00000006,0x0000026c,0x477fe000,0x0004002b,0x00000006,0x0000026d,0x37801002, + 0x0004003b,0x000000c2,0x0000026e,0x00000000,0x0004003b,0x000000be,0x0000026f,0x00000000, + 0x0004002b,0x00000006,0x00000270,0x7f7fffff,0x0004002b,0x00000006,0x00000271,0x00800000, + 0x0004002b,0x00000006,0x00000272,0x3a1fe868,0x0004002b,0x00000006,0x00000273,0x3d800000, + 0x0004002b,0x00000006,0x00000274,0x3d3d70a4,0x0004002b,0x00000006,0x00000275,0x3e400000, + 0x0004002b,0x00000006,0x00000276,0x40000000,0x0004002b,0x00000006,0x00000277,0x461c4000, + 0x0004002b,0x000000d5,0x00000278,0x00000008,0x0006002c,0x00000262,0x00000279,0x00000278, + 0x00000278,0x0000013d,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, + 0x00000005,0x0004003b,0x00000031,0x00000269,0x00000007,0x0004003d,0x00000262,0x00000266, + 0x00000264,0x0007004f,0x00000265,0x00000267,0x00000266,0x00000266,0x00000000,0x00000001, + 0x0004007c,0x00000021,0x00000268,0x00000267,0x0003003e,0x00000269,0x00000268,0x00050039, + 0x00000002,0x0000026a,0x00000077,0x00000269,0x000100fd,0x00010038,0x00050036,0x00000006, + 0x0000000a,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x000200f8,0x0000000b, + 0x0004003d,0x00000006,0x00000079,0x00000009,0x0008000c,0x00000006,0x0000007c,0x00000001, + 0x0000002b,0x00000079,0x0000007a,0x0000007b,0x000200fe,0x0000007c,0x00010038,0x00050036, + 0x00000006,0x0000000f,0x00000000,0x0000000c,0x00030037,0x00000007,0x0000000d,0x00030037, + 0x00000007,0x0000000e,0x000200f8,0x00000010,0x0004003d,0x00000006,0x0000007f,0x0000000d, + 0x0004003d,0x00000006,0x00000080,0x0000000e,0x0007000c,0x00000006,0x00000081,0x00000001, + 0x00000025,0x0000007f,0x00000080,0x000200fe,0x00000081,0x00010038,0x00050036,0x00000011, + 0x00000016,0x00000000,0x00000013,0x00030037,0x00000012,0x00000014,0x00030037,0x00000012, + 0x00000015,0x000200f8,0x00000017,0x0004003d,0x00000011,0x00000084,0x00000014,0x0004003d, + 0x00000011,0x00000085,0x00000015,0x0007000c,0x00000011,0x00000086,0x00000001,0x00000025, + 0x00000084,0x00000085,0x000200fe,0x00000086,0x00010038,0x00050036,0x00000006,0x0000001a, + 0x00000000,0x0000000c,0x00030037,0x00000007,0x00000018,0x00030037,0x00000007,0x00000019, + 0x000200f8,0x0000001b,0x0004003d,0x00000006,0x00000089,0x00000018,0x0004003d,0x00000006, + 0x0000008a,0x00000019,0x0007000c,0x00000006,0x0000008b,0x00000001,0x00000028,0x00000089, + 0x0000008a,0x000200fe,0x0000008b,0x00010038,0x00050036,0x00000011,0x0000001e,0x00000000, + 0x00000013,0x00030037,0x00000012,0x0000001c,0x00030037,0x00000012,0x0000001d,0x000200f8, + 0x0000001f,0x0004003d,0x00000011,0x0000008e,0x0000001c,0x0004003d,0x00000011,0x0000008f, + 0x0000001d,0x0007000c,0x00000011,0x00000090,0x00000001,0x00000028,0x0000008e,0x0000008f, + 0x000200fe,0x00000090,0x00010038,0x00050036,0x00000021,0x00000023,0x00000000,0x00000022, + 0x000200f8,0x00000024,0x00050041,0x00000097,0x00000098,0x00000095,0x00000096,0x0004003d, + 0x00000021,0x00000099,0x00000098,0x000200fe,0x00000099,0x00010038,0x00050036,0x00000021, + 0x00000025,0x00000000,0x00000022,0x000200f8,0x00000026,0x00050041,0x00000097,0x0000009d, + 0x00000095,0x0000009c,0x0004003d,0x00000021,0x0000009e,0x0000009d,0x000200fe,0x0000009e, + 0x00010038,0x00050036,0x00000021,0x00000027,0x00000000,0x00000022,0x000200f8,0x00000028, + 0x00050041,0x00000097,0x000000a2,0x00000095,0x000000a1,0x0004003d,0x00000021,0x000000a3, + 0x000000a2,0x000200fe,0x000000a3,0x00010038,0x00050036,0x00000011,0x0000002a,0x00000000, + 0x00000029,0x000200f8,0x0000002b,0x00050041,0x000000a7,0x000000a8,0x00000095,0x000000a6, + 0x0004003d,0x00000011,0x000000a9,0x000000a8,0x000200fe,0x000000a9,0x00010038,0x00050036, + 0x00000011,0x0000002c,0x00000000,0x00000029,0x000200f8,0x0000002d,0x00050041,0x000000a7, + 0x000000ad,0x00000095,0x000000ac,0x0004003d,0x00000011,0x000000ae,0x000000ad,0x000200fe, + 0x000000ae,0x00010038,0x00050036,0x00000006,0x0000002f,0x00000000,0x0000002e,0x000200f8, + 0x00000030,0x00050041,0x000000b2,0x000000b3,0x00000095,0x000000b1,0x0004003d,0x00000006, + 0x000000b4,0x000000b3,0x000200fe,0x000000b4,0x00010038,0x00050036,0x00000002,0x00000037, + 0x00000000,0x00000034,0x00030037,0x00000031,0x00000035,0x00030037,0x00000033,0x00000036, + 0x000200f8,0x00000038,0x0004003d,0x000000b7,0x000000ba,0x000000b9,0x0004003d,0x00000021, + 0x000000bb,0x00000035,0x0004003d,0x00000032,0x000000bc,0x00000036,0x00040063,0x000000ba, + 0x000000bb,0x000000bc,0x000100fd,0x00010038,0x00050036,0x00000032,0x0000003b,0x00000000, + 0x00000039,0x00030037,0x00000012,0x0000003a,0x000200f8,0x0000003c,0x0004003d,0x000000bd, + 0x000000c0,0x000000bf,0x0004003d,0x000000c1,0x000000c4,0x000000c3,0x00050056,0x000000c5, + 0x000000c6,0x000000c0,0x000000c4,0x0004003d,0x00000011,0x000000c7,0x0000003a,0x00070058, + 0x00000032,0x000000c8,0x000000c6,0x000000c7,0x00000002,0x0000007a,0x000200fe,0x000000c8, + 0x00010038,0x00050036,0x00000021,0x0000003d,0x00000000,0x00000022,0x000200f8,0x0000003e, + 0x0004003d,0x000000bd,0x000000cc,0x000000cb,0x00050067,0x00000021,0x000000cd,0x000000cc, + 0x00000096,0x000200fe,0x000000cd,0x00010038,0x00050036,0x00000006,0x00000041,0x00000000, + 0x0000003f,0x00030037,0x00000012,0x00000040,0x000200f8,0x00000042,0x0004003d,0x000000bd, + 0x000000d0,0x000000cb,0x0004003d,0x000000c1,0x000000d1,0x000000c3,0x00050056,0x000000c5, + 0x000000d2,0x000000d0,0x000000d1,0x0004003d,0x00000011,0x000000d3,0x00000040,0x00070058, + 0x00000032,0x000000d4,0x000000d2,0x000000d3,0x00000002,0x0000007a,0x00050051,0x00000006, + 0x000000d7,0x000000d4,0x00000000,0x000200fe,0x000000d7,0x00010038,0x00050036,0x00000006, + 0x00000044,0x00000000,0x0000003f,0x00030037,0x00000012,0x00000043,0x000200f8,0x00000045, + 0x0004003d,0x000000bd,0x000000db,0x000000da,0x0004003d,0x000000c1,0x000000dc,0x000000c3, + 0x00050056,0x000000c5,0x000000dd,0x000000db,0x000000dc,0x0004003d,0x00000011,0x000000de, + 0x00000043,0x00070058,0x00000032,0x000000df,0x000000dd,0x000000de,0x00000002,0x0000007a, + 0x00050051,0x00000006,0x000000e0,0x000000df,0x00000000,0x000200fe,0x000000e0,0x00010038, + 0x00050036,0x00000002,0x00000049,0x00000000,0x00000046,0x00030037,0x00000031,0x00000047, + 0x00030037,0x00000007,0x00000048,0x000200f8,0x0000004a,0x0004003d,0x000000e3,0x000000e6, + 0x000000e5,0x0004003d,0x00000021,0x000000e7,0x00000047,0x0004003d,0x00000006,0x000000e8, + 0x00000048,0x00070050,0x00000032,0x000000e9,0x000000e8,0x0000007a,0x0000007a,0x0000007a, + 0x00040063,0x000000e6,0x000000e7,0x000000e9,0x000100fd,0x00010038,0x00050036,0x00000011, + 0x0000004d,0x00000000,0x0000004b,0x00030037,0x00000031,0x0000004c,0x000200f8,0x0000004e, + 0x0004003d,0x000000bd,0x000000eb,0x000000ea,0x0004003d,0x00000021,0x000000ec,0x0000004c, + 0x0007005f,0x00000032,0x000000ed,0x000000eb,0x000000ec,0x00000002,0x00000096,0x0007004f, + 0x00000011,0x000000ee,0x000000ed,0x000000ed,0x00000000,0x00000001,0x000200fe,0x000000ee, + 0x00010038,0x00050036,0x00000006,0x0000004f,0x00000000,0x0000002e,0x000200f8,0x00000050, + 0x0004003b,0x00000007,0x000000f1,0x00000007,0x0004003d,0x000000bd,0x000000f3,0x000000f2, + 0x0007005f,0x00000032,0x000000f5,0x000000f3,0x000000f4,0x00000002,0x00000096,0x00050051, + 0x00000006,0x000000f6,0x000000f5,0x00000000,0x0003003e,0x000000f1,0x000000f6,0x0004003d, + 0x00000006,0x000000f7,0x000000f1,0x000500b4,0x00000062,0x000000f8,0x000000f7,0x0000007a, + 0x000300f7,0x000000fa,0x00000000,0x000400fa,0x000000f8,0x000000f9,0x000000fa,0x000200f8, + 0x000000f9,0x0003003e,0x000000f1,0x0000007b,0x000200f9,0x000000fa,0x000200f8,0x000000fa, + 0x0004003d,0x00000006,0x000000fb,0x000000f1,0x000200fe,0x000000fb,0x00010038,0x00050036, + 0x00000032,0x00000052,0x00000000,0x00000039,0x00030037,0x00000012,0x00000051,0x000200f8, + 0x00000053,0x0004003d,0x000000bd,0x000000ff,0x000000fe,0x0004003d,0x000000c1,0x00000100, + 0x000000c3,0x00050056,0x000000c5,0x00000101,0x000000ff,0x00000100,0x0004003d,0x00000011, + 0x00000102,0x00000051,0x00070058,0x00000032,0x00000103,0x00000101,0x00000102,0x00000002, + 0x0000007a,0x000200fe,0x00000103,0x00010038,0x00050036,0x00000006,0x00000055,0x00000000, + 0x0000003f,0x00030037,0x00000012,0x00000054,0x000200f8,0x00000056,0x0004003d,0x00000011, + 0x00000106,0x00000054,0x00050085,0x00000011,0x0000010a,0x00000106,0x00000109,0x0006000c, + 0x00000006,0x0000010b,0x00000001,0x00000042,0x0000010a,0x000200fe,0x0000010b,0x00010038, + 0x00050036,0x00000006,0x0000005b,0x00000000,0x00000057,0x00030037,0x00000006,0x00000058, + 0x00030037,0x00000006,0x00000059,0x00030037,0x00000006,0x0000005a,0x000200f8,0x0000005c, + 0x0004003b,0x00000007,0x0000010e,0x00000007,0x0004003b,0x00000007,0x0000010f,0x00000007, + 0x0004003b,0x00000007,0x00000110,0x00000007,0x0004003b,0x00000007,0x00000114,0x00000007, + 0x0004003b,0x00000007,0x00000117,0x00000007,0x0004003b,0x00000007,0x00000118,0x00000007, + 0x0003003e,0x0000010f,0x00000058,0x0003003e,0x00000110,0x00000059,0x00060039,0x00000006, + 0x00000111,0x0000001a,0x0000010f,0x00000110,0x0003003e,0x0000010e,0x00000111,0x0004003d, + 0x00000006,0x00000112,0x0000010e,0x000500b7,0x00000062,0x00000113,0x00000112,0x0000007a, + 0x000300f7,0x00000116,0x00000000,0x000400fa,0x00000113,0x00000115,0x0000011c,0x000200f8, + 0x00000115,0x0003003e,0x00000117,0x00000058,0x0003003e,0x00000118,0x00000059,0x00060039, + 0x00000006,0x00000119,0x0000000f,0x00000117,0x00000118,0x0004003d,0x00000006,0x0000011a, + 0x0000010e,0x00050088,0x00000006,0x0000011b,0x00000119,0x0000011a,0x0003003e,0x00000114, + 0x0000011b,0x000200f9,0x00000116,0x000200f8,0x0000011c,0x0003003e,0x00000114,0x0000005a, + 0x000200f9,0x00000116,0x000200f8,0x00000116,0x0004003d,0x00000006,0x0000011d,0x00000114, + 0x000200fe,0x0000011d,0x00010038,0x00050036,0x00000006,0x00000060,0x00000000,0x0000005d, + 0x00030037,0x00000006,0x0000005e,0x00030037,0x00000006,0x0000005f,0x000200f8,0x00000061, + 0x0004003b,0x00000007,0x00000120,0x00000007,0x0004003b,0x00000007,0x00000121,0x00000007, + 0x0004003b,0x00000007,0x00000122,0x00000007,0x0004003b,0x00000007,0x00000126,0x00000007, + 0x0004003b,0x00000007,0x00000129,0x00000007,0x0004003b,0x00000007,0x0000012a,0x00000007, + 0x0003003e,0x00000121,0x0000005e,0x0003003e,0x00000122,0x0000005f,0x00060039,0x00000006, + 0x00000123,0x0000001a,0x00000121,0x00000122,0x0003003e,0x00000120,0x00000123,0x0004003d, + 0x00000006,0x00000124,0x00000120,0x000500b7,0x00000062,0x00000125,0x00000124,0x0000007a, + 0x000300f7,0x00000128,0x00000000,0x000400fa,0x00000125,0x00000127,0x0000012e,0x000200f8, + 0x00000127,0x0003003e,0x00000129,0x0000005e,0x0003003e,0x0000012a,0x0000005f,0x00060039, + 0x00000006,0x0000012b,0x0000000f,0x00000129,0x0000012a,0x0004003d,0x00000006,0x0000012c, + 0x00000120,0x00050088,0x00000006,0x0000012d,0x0000012b,0x0000012c,0x0003003e,0x00000126, + 0x0000012d,0x000200f9,0x00000128,0x000200f8,0x0000012e,0x0003003e,0x00000126,0x0000007a, + 0x000200f9,0x00000128,0x000200f8,0x00000128,0x0004003d,0x00000006,0x0000012f,0x00000126, + 0x000200fe,0x0000012f,0x00010038,0x00050036,0x00000062,0x00000065,0x00000000,0x00000063, + 0x00030037,0x00000012,0x00000064,0x000200f8,0x00000066,0x00050041,0x00000007,0x00000132, + 0x00000064,0x000000d6,0x0004003d,0x00000006,0x00000133,0x00000132,0x000500be,0x00000062, + 0x00000134,0x00000133,0x0000007a,0x000300f7,0x00000136,0x00000000,0x000400fa,0x00000134, + 0x00000135,0x00000136,0x000200f8,0x00000135,0x00050041,0x00000007,0x00000137,0x00000064, + 0x000000d6,0x0004003d,0x00000006,0x00000138,0x00000137,0x000500bc,0x00000062,0x00000139, + 0x00000138,0x0000007b,0x000200f9,0x00000136,0x000200f8,0x00000136,0x000700f5,0x00000062, + 0x0000013a,0x00000134,0x00000066,0x00000139,0x00000135,0x000300f7,0x0000013c,0x00000000, + 0x000400fa,0x0000013a,0x0000013b,0x0000013c,0x000200f8,0x0000013b,0x00050041,0x00000007, + 0x0000013e,0x00000064,0x0000013d,0x0004003d,0x00000006,0x0000013f,0x0000013e,0x000500be, + 0x00000062,0x00000140,0x0000013f,0x0000007a,0x000300f7,0x00000142,0x00000000,0x000400fa, + 0x00000140,0x00000141,0x00000142,0x000200f8,0x00000141,0x00050041,0x00000007,0x00000143, + 0x00000064,0x0000013d,0x0004003d,0x00000006,0x00000144,0x00000143,0x000500bc,0x00000062, + 0x00000145,0x00000144,0x0000007b,0x000200f9,0x00000142,0x000200f8,0x00000142,0x000700f5, + 0x00000062,0x00000146,0x00000140,0x0000013b,0x00000145,0x00000141,0x000200f9,0x0000013c, + 0x000200f8,0x0000013c,0x000700f5,0x00000062,0x00000147,0x0000013a,0x00000136,0x00000146, + 0x00000142,0x000200fe,0x00000147,0x00010038,0x00050036,0x00000011,0x0000006b,0x00000000, + 0x00000067,0x00030037,0x00000012,0x00000068,0x00030037,0x00000031,0x00000069,0x00030037, + 0x00000031,0x0000006a,0x000200f8,0x0000006c,0x0004003b,0x00000012,0x0000014a,0x00000007, + 0x0004003b,0x00000012,0x0000014f,0x00000007,0x0004003b,0x00000012,0x00000155,0x00000007, + 0x0004003b,0x00000012,0x00000157,0x00000007,0x0004003b,0x00000012,0x00000159,0x00000007, + 0x0004003b,0x00000012,0x0000015a,0x00000007,0x0004003b,0x00000012,0x0000015c,0x00000007, + 0x0004003d,0x00000011,0x0000014b,0x00000068,0x0004003d,0x00000021,0x0000014c,0x00000069, + 0x0004006f,0x00000011,0x0000014d,0x0000014c,0x00050085,0x00000011,0x0000014e,0x0000014b, + 0x0000014d,0x0003003e,0x0000014a,0x0000014e,0x0004003d,0x00000021,0x00000152,0x00000069, + 0x0004006f,0x00000011,0x00000153,0x00000152,0x00050083,0x00000011,0x00000154,0x00000153, + 0x00000151,0x0004003d,0x00000011,0x00000156,0x0000014a,0x0003003e,0x00000155,0x00000156, + 0x0003003e,0x00000157,0x00000154,0x00060039,0x00000011,0x00000158,0x00000016,0x00000155, + 0x00000157,0x0003003e,0x00000159,0x00000151,0x0003003e,0x0000015a,0x00000158,0x00060039, + 0x00000011,0x0000015b,0x0000001e,0x00000159,0x0000015a,0x0003003e,0x0000014f,0x0000015b, + 0x0004003d,0x00000011,0x0000015d,0x0000014f,0x0004003d,0x00000021,0x0000015e,0x0000006a, + 0x0004006f,0x00000011,0x0000015f,0x0000015e,0x00050088,0x00000011,0x00000160,0x0000015d, + 0x0000015f,0x0003003e,0x0000015c,0x00000160,0x0004003d,0x00000011,0x00000161,0x0000015c, + 0x000200fe,0x00000161,0x00010038,0x00050036,0x0000006d,0x00000073,0x00000000,0x0000006f, + 0x00030037,0x0000006e,0x00000070,0x00030037,0x00000007,0x00000071,0x00030037,0x00000007, + 0x00000072,0x000200f8,0x00000074,0x0004003b,0x00000007,0x00000164,0x00000007,0x0004003b, + 0x00000007,0x00000165,0x00000007,0x0004003b,0x00000007,0x0000016a,0x00000007,0x0004003b, + 0x00000007,0x0000016f,0x00000007,0x0004003b,0x00000175,0x00000176,0x00000007,0x0004003b, + 0x00000007,0x0000017f,0x00000007,0x0004003b,0x00000007,0x00000185,0x00000007,0x0004003b, + 0x00000007,0x00000192,0x00000007,0x0004003b,0x00000007,0x00000194,0x00000007,0x0003003e, + 0x00000164,0x0000007a,0x0004003d,0x00000006,0x00000166,0x00000071,0x00060041,0x00000007, + 0x00000167,0x00000070,0x00000096,0x000000d6,0x0004003d,0x00000006,0x00000168,0x00000167, + 0x00050083,0x00000006,0x00000169,0x00000166,0x00000168,0x0003003e,0x00000165,0x00000169, + 0x0004003d,0x00000006,0x0000016b,0x00000071,0x00060041,0x00000007,0x0000016c,0x00000070, + 0x00000096,0x000000d6,0x0004003d,0x00000006,0x0000016d,0x0000016c,0x00070039,0x00000006, + 0x0000016e,0x0000005b,0x0000016b,0x0000016d,0x0000007b,0x0003003e,0x0000016a,0x0000016e, + 0x0004003d,0x00000006,0x00000170,0x0000016a,0x0003003e,0x0000016f,0x00000170,0x0004003d, + 0x00000006,0x00000171,0x0000016a,0x000500b8,0x00000062,0x00000172,0x00000171,0x0000007b, + 0x000300f7,0x00000174,0x00000000,0x000400fa,0x00000172,0x00000173,0x00000174,0x000200f8, + 0x00000173,0x0003003e,0x00000176,0x0000009c,0x000200f9,0x00000177,0x000200f8,0x00000177, + 0x000400f6,0x00000179,0x0000017a,0x00000000,0x000200f9,0x0000017b,0x000200f8,0x0000017b, + 0x0004003d,0x00000020,0x0000017c,0x00000176,0x000500b3,0x00000062,0x0000017e,0x0000017c, + 0x0000017d,0x000400fa,0x0000017e,0x00000178,0x00000179,0x000200f8,0x00000178,0x0004003d, + 0x00000006,0x00000180,0x00000071,0x0004003d,0x00000020,0x00000181,0x00000176,0x00060041, + 0x00000007,0x00000182,0x00000070,0x00000096,0x00000181,0x0004003d,0x00000006,0x00000183, + 0x00000182,0x00050083,0x00000006,0x00000184,0x00000180,0x00000183,0x0003003e,0x0000017f, + 0x00000184,0x0004003d,0x00000006,0x00000186,0x00000071,0x0004003d,0x00000020,0x00000187, + 0x00000176,0x00060041,0x00000007,0x00000188,0x00000070,0x00000096,0x00000187,0x0004003d, + 0x00000006,0x00000189,0x00000188,0x00060039,0x00000006,0x0000018a,0x00000060,0x00000186, + 0x00000189,0x0003003e,0x00000185,0x0000018a,0x0004003d,0x00000006,0x0000018b,0x00000165, + 0x0006000c,0x00000006,0x0000018c,0x00000001,0x00000006,0x0000018b,0x0004003d,0x00000006, + 0x0000018d,0x0000017f,0x0006000c,0x00000006,0x0000018e,0x00000001,0x00000006,0x0000018d, + 0x000500b4,0x00000062,0x0000018f,0x0000018c,0x0000018e,0x000300f7,0x00000191,0x00000000, + 0x000400fa,0x0000018f,0x00000190,0x00000191,0x000200f8,0x00000190,0x0004003d,0x00000006, + 0x00000193,0x0000016f,0x0003003e,0x00000192,0x00000193,0x0004003d,0x00000006,0x00000195, + 0x00000185,0x0003003e,0x00000194,0x00000195,0x00060039,0x00000006,0x00000196,0x0000001a, + 0x00000192,0x00000194,0x0003003e,0x0000016f,0x00000196,0x000200f9,0x00000191,0x000200f8, + 0x00000191,0x000200f9,0x0000017a,0x000200f8,0x0000017a,0x0004003d,0x00000020,0x00000197, + 0x00000176,0x00050080,0x00000020,0x00000198,0x00000197,0x0000009c,0x0003003e,0x00000176, + 0x00000198,0x000200f9,0x00000177,0x000200f8,0x00000179,0x0004003d,0x00000006,0x00000199, + 0x0000016f,0x0004003d,0x00000006,0x0000019a,0x0000016a,0x000500ba,0x00000062,0x0000019b, + 0x00000199,0x0000019a,0x000600a9,0x00000006,0x0000019c,0x0000019b,0x0000007b,0x0000007a, + 0x0003003e,0x00000164,0x0000019c,0x000200f9,0x00000174,0x000200f8,0x00000174,0x00060041, + 0x00000007,0x0000019e,0x00000070,0x00000096,0x0000019d,0x0004003d,0x00000006,0x0000019f, + 0x0000019e,0x00060041,0x00000007,0x000001a1,0x00000070,0x00000096,0x000001a0,0x0003003e, + 0x000001a1,0x0000019f,0x00060041,0x00000007,0x000001a2,0x00000070,0x00000096,0x0000013d, + 0x0004003d,0x00000006,0x000001a3,0x000001a2,0x00060041,0x00000007,0x000001a4,0x00000070, + 0x00000096,0x0000019d,0x0003003e,0x000001a4,0x000001a3,0x00060041,0x00000007,0x000001a5, + 0x00000070,0x00000096,0x000000d6,0x0004003d,0x00000006,0x000001a6,0x000001a5,0x00060041, + 0x00000007,0x000001a7,0x00000070,0x00000096,0x0000013d,0x0003003e,0x000001a7,0x000001a6, + 0x0004003d,0x00000006,0x000001a8,0x00000071,0x00060041,0x00000007,0x000001a9,0x00000070, + 0x00000096,0x000000d6,0x0003003e,0x000001a9,0x000001a8,0x00040039,0x00000006,0x000001aa, + 0x0000004f,0x00050041,0x00000033,0x000001ab,0x00000070,0x00000096,0x0004003d,0x00000032, + 0x000001ac,0x000001ab,0x00070050,0x00000032,0x000001ad,0x000001aa,0x000001aa,0x000001aa, + 0x000001aa,0x00050088,0x00000032,0x000001ae,0x000001ac,0x000001ad,0x00050041,0x00000033, + 0x000001af,0x00000070,0x00000096,0x0003003e,0x000001af,0x000001ae,0x0004003d,0x00000006, + 0x000001b0,0x00000164,0x00060041,0x00000007,0x000001b1,0x00000070,0x00000096,0x000001a0, + 0x0004003d,0x00000006,0x000001b2,0x000001b1,0x000500b7,0x00000062,0x000001b3,0x000001b2, + 0x0000007a,0x000600a9,0x00000006,0x000001b4,0x000001b3,0x0000007b,0x0000007a,0x00050085, + 0x00000006,0x000001b5,0x000001b0,0x000001b4,0x00050041,0x00000007,0x000001b6,0x00000070, + 0x0000009c,0x0003003e,0x000001b6,0x000001b5,0x0004003d,0x0000006d,0x000001b7,0x00000070, + 0x000200fe,0x000001b7,0x00010038,0x00050036,0x00000002,0x00000077,0x00000000,0x00000075, + 0x00030037,0x00000031,0x00000076,0x000200f8,0x00000078,0x0004003b,0x0000006e,0x000001ba, + 0x00000007,0x0004003b,0x00000012,0x000001be,0x00000007,0x0004003b,0x00000031,0x000001bf, + 0x00000007,0x0004003b,0x00000012,0x000001c2,0x00000007,0x0004003b,0x00000012,0x000001ca, + 0x00000007,0x0004003b,0x00000012,0x000001d1,0x00000007,0x0004003b,0x00000012,0x000001d8, + 0x00000007,0x0004003b,0x00000012,0x000001dc,0x00000007,0x0004003b,0x00000012,0x000001e1, + 0x00000007,0x0004003b,0x00000012,0x000001e4,0x00000007,0x0004003b,0x00000031,0x000001e6, + 0x00000007,0x0004003b,0x00000031,0x000001e7,0x00000007,0x0004003b,0x00000033,0x000001e9, + 0x00000007,0x0004003b,0x00000012,0x000001ea,0x00000007,0x0004003b,0x00000007,0x000001ed, + 0x00000007,0x0004003b,0x00000007,0x000001ee,0x00000007,0x0004003b,0x00000007,0x000001f2, + 0x00000007,0x0004003b,0x00000007,0x000001f3,0x00000007,0x0004003b,0x00000007,0x000001f7, + 0x00000007,0x0004003b,0x00000007,0x000001f8,0x00000007,0x0004003b,0x00000007,0x000001fc, + 0x00000007,0x0004003b,0x00000007,0x000001fd,0x00000007,0x0004003b,0x00000201,0x00000202, + 0x00000007,0x0004003b,0x00000201,0x00000206,0x00000007,0x0004003b,0x00000012,0x0000020b, + 0x00000007,0x0004003b,0x00000012,0x0000020e,0x00000007,0x0004003b,0x00000031,0x00000210, + 0x00000007,0x0004003b,0x00000031,0x00000211,0x00000007,0x0004003b,0x00000007,0x00000213, + 0x00000007,0x0004003b,0x00000012,0x00000214,0x00000007,0x0004003b,0x00000012,0x00000219, + 0x00000007,0x0004003b,0x00000012,0x0000021c,0x00000007,0x0004003b,0x00000031,0x0000021e, + 0x00000007,0x0004003b,0x00000031,0x0000021f,0x00000007,0x0004003b,0x00000012,0x00000221, + 0x00000007,0x0004003b,0x00000012,0x00000229,0x00000007,0x0004003b,0x00000012,0x0000022f, + 0x00000007,0x0004003b,0x00000031,0x00000231,0x00000007,0x0004003b,0x00000031,0x00000232, + 0x00000007,0x0004003b,0x00000007,0x00000234,0x00000007,0x0004003b,0x00000012,0x00000235, + 0x00000007,0x0004003b,0x0000006e,0x00000238,0x00000007,0x0004003b,0x00000007,0x0000023a, + 0x00000007,0x0004003b,0x00000007,0x0000023c,0x00000007,0x0004003b,0x00000007,0x0000023f, + 0x00000007,0x0004003b,0x00000012,0x00000240,0x00000007,0x0004003b,0x00000007,0x00000245, + 0x00000007,0x0004003b,0x00000031,0x00000256,0x00000007,0x0004003b,0x00000033,0x00000258, + 0x00000007,0x0004003b,0x00000031,0x0000025c,0x00000007,0x0004003b,0x00000007,0x0000025e, + 0x00000007,0x00050041,0x00000007,0x000001bb,0x000001ba,0x0000009c,0x0003003e,0x000001bb, + 0x0000007a,0x00050041,0x00000033,0x000001bd,0x000001ba,0x00000096,0x0003003e,0x000001bd, + 0x000001bc,0x0004003d,0x00000021,0x000001c0,0x00000076,0x0003003e,0x000001bf,0x000001c0, + 0x00050039,0x00000011,0x000001c1,0x0000004d,0x000001bf,0x0003003e,0x000001be,0x000001c1, + 0x0004003d,0x00000021,0x000001c3,0x00000076,0x0004006f,0x00000011,0x000001c4,0x000001c3, + 0x00050050,0x00000011,0x000001c5,0x00000150,0x00000150,0x00050081,0x00000011,0x000001c6, + 0x000001c4,0x000001c5,0x00040039,0x00000021,0x000001c7,0x00000023,0x0004006f,0x00000011, + 0x000001c8,0x000001c7,0x00050088,0x00000011,0x000001c9,0x000001c6,0x000001c8,0x0003003e, + 0x000001c2,0x000001c9,0x0004003d,0x00000011,0x000001cb,0x000001c2,0x00040039,0x00000011, + 0x000001cc,0x0000002a,0x00040039,0x00000021,0x000001cd,0x00000023,0x0004006f,0x00000011, + 0x000001ce,0x000001cd,0x00050088,0x00000011,0x000001cf,0x000001cc,0x000001ce,0x00050081, + 0x00000011,0x000001d0,0x000001cb,0x000001cf,0x0003003e,0x000001ca,0x000001d0,0x0004003d, + 0x00000011,0x000001d2,0x000001c2,0x00040039,0x00000011,0x000001d3,0x0000002c,0x00040039, + 0x00000021,0x000001d4,0x00000025,0x0004006f,0x00000011,0x000001d5,0x000001d4,0x00050088, + 0x00000011,0x000001d6,0x000001d3,0x000001d5,0x00050081,0x00000011,0x000001d7,0x000001d2, + 0x000001d6,0x0003003e,0x000001d1,0x000001d7,0x0004003d,0x00000011,0x000001d9,0x000001d1, + 0x0004003d,0x00000011,0x000001da,0x000001be,0x00050081,0x00000011,0x000001db,0x000001d9, + 0x000001da,0x0003003e,0x000001d8,0x000001db,0x0004003d,0x00000011,0x000001dd,0x000001d8, + 0x0003003e,0x000001dc,0x000001dd,0x00050039,0x00000062,0x000001de,0x00000065,0x000001dc, + 0x000300f7,0x000001e0,0x00000000,0x000400fa,0x000001de,0x000001df,0x000001e0,0x000200f8, + 0x000001df,0x00040039,0x00000021,0x000001e2,0x00000023,0x00040039,0x00000021,0x000001e3, + 0x00000027,0x0004003d,0x00000011,0x000001e5,0x000001ca,0x0003003e,0x000001e4,0x000001e5, + 0x0003003e,0x000001e6,0x000001e2,0x0003003e,0x000001e7,0x000001e3,0x00070039,0x00000011, + 0x000001e8,0x0000006b,0x000001e4,0x000001e6,0x000001e7,0x0003003e,0x000001e1,0x000001e8, + 0x0004003d,0x00000011,0x000001eb,0x000001e1,0x0003003e,0x000001ea,0x000001eb,0x00050039, + 0x00000032,0x000001ec,0x00000052,0x000001ea,0x0003003e,0x000001e9,0x000001ec,0x00050041, + 0x00000007,0x000001ef,0x000001e9,0x000000d6,0x0004003d,0x00000006,0x000001f0,0x000001ef, + 0x0003003e,0x000001ee,0x000001f0,0x00050039,0x00000006,0x000001f1,0x0000000a,0x000001ee, + 0x0003003e,0x000001ed,0x000001f1,0x00050041,0x00000007,0x000001f4,0x000001e9,0x0000013d, + 0x0004003d,0x00000006,0x000001f5,0x000001f4,0x0003003e,0x000001f3,0x000001f5,0x00050039, + 0x00000006,0x000001f6,0x0000000a,0x000001f3,0x0003003e,0x000001f2,0x000001f6,0x00050041, + 0x00000007,0x000001f9,0x000001e9,0x0000019d,0x0004003d,0x00000006,0x000001fa,0x000001f9, + 0x0003003e,0x000001f8,0x000001fa,0x00050039,0x00000006,0x000001fb,0x0000000a,0x000001f8, + 0x0003003e,0x000001f7,0x000001fb,0x00050041,0x00000007,0x000001fe,0x000001e9,0x000001a0, + 0x0004003d,0x00000006,0x000001ff,0x000001fe,0x0003003e,0x000001fd,0x000001ff,0x00050039, + 0x00000006,0x00000200,0x0000000a,0x000001fd,0x0003003e,0x000001fc,0x00000200,0x0004003d, + 0x00000006,0x00000203,0x000001fc,0x000500ba,0x00000062,0x00000205,0x00000203,0x00000204, + 0x0003003e,0x00000202,0x00000205,0x0004003d,0x00000062,0x00000207,0x00000202,0x0003003e, + 0x00000206,0x00000207,0x0004003d,0x00000062,0x00000208,0x00000206,0x000300f7,0x0000020a, + 0x00000000,0x000400fa,0x00000208,0x00000209,0x0000020a,0x000200f8,0x00000209,0x00040039, + 0x00000021,0x0000020c,0x00000023,0x00040039,0x00000021,0x0000020d,0x00000027,0x0004003d, + 0x00000011,0x0000020f,0x000001ca,0x0003003e,0x0000020e,0x0000020f,0x0003003e,0x00000210, + 0x0000020c,0x0003003e,0x00000211,0x0000020d,0x00070039,0x00000011,0x00000212,0x0000006b, + 0x0000020e,0x00000210,0x00000211,0x0003003e,0x0000020b,0x00000212,0x0004003d,0x00000011, + 0x00000215,0x0000020b,0x0003003e,0x00000214,0x00000215,0x00050039,0x00000006,0x00000216, + 0x00000044,0x00000214,0x00040039,0x00000006,0x00000217,0x0000004f,0x00050085,0x00000006, + 0x00000218,0x00000216,0x00000217,0x0003003e,0x00000213,0x00000218,0x00040039,0x00000021, + 0x0000021a,0x00000025,0x00040039,0x00000021,0x0000021b,0x00000027,0x0004003d,0x00000011, + 0x0000021d,0x000001d8,0x0003003e,0x0000021c,0x0000021d,0x0003003e,0x0000021e,0x0000021a, + 0x0003003e,0x0000021f,0x0000021b,0x00070039,0x00000011,0x00000220,0x0000006b,0x0000021c, + 0x0000021e,0x0000021f,0x0003003e,0x00000219,0x00000220,0x0004003d,0x00000011,0x00000222, + 0x00000219,0x0003003e,0x00000221,0x00000222,0x00050039,0x00000032,0x00000223,0x0000003b, + 0x00000221,0x00040039,0x00000006,0x00000224,0x0000002f,0x0005008e,0x00000032,0x00000225, + 0x00000223,0x00000224,0x00040039,0x00000006,0x00000226,0x0000004f,0x0005008e,0x00000032, + 0x00000227,0x00000225,0x00000226,0x00050041,0x00000033,0x00000228,0x000001ba,0x00000096, + 0x0003003e,0x00000228,0x00000227,0x00040039,0x00000021,0x0000022a,0x00000023,0x00050050, + 0x00000021,0x0000022c,0x0000022b,0x0000022b,0x00050087,0x00000021,0x0000022d,0x0000022a, + 0x0000022c,0x00040039,0x00000021,0x0000022e,0x0000003d,0x0004003d,0x00000011,0x00000230, + 0x000001ca,0x0003003e,0x0000022f,0x00000230,0x0003003e,0x00000231,0x0000022d,0x0003003e, + 0x00000232,0x0000022e,0x00070039,0x00000011,0x00000233,0x0000006b,0x0000022f,0x00000231, + 0x00000232,0x0003003e,0x00000229,0x00000233,0x0004003d,0x00000011,0x00000236,0x00000229, + 0x0003003e,0x00000235,0x00000236,0x00050039,0x00000006,0x00000237,0x00000041,0x00000235, + 0x0003003e,0x00000234,0x00000237,0x0004003d,0x0000006d,0x00000239,0x000001ba,0x0003003e, + 0x00000238,0x00000239,0x0004003d,0x00000006,0x0000023b,0x00000213,0x0003003e,0x0000023a, + 0x0000023b,0x0004003d,0x00000006,0x0000023d,0x00000234,0x0003003e,0x0000023c,0x0000023d, + 0x00070039,0x0000006d,0x0000023e,0x00000073,0x00000238,0x0000023a,0x0000023c,0x0003003e, + 0x000001ba,0x0000023e,0x0004003d,0x00000011,0x00000241,0x000001be,0x0003003e,0x00000240, + 0x00000241,0x00050039,0x00000006,0x00000242,0x00000055,0x00000240,0x00050088,0x00000006, + 0x00000244,0x00000242,0x00000243,0x0003003e,0x00000245,0x00000244,0x00050039,0x00000006, + 0x00000246,0x0000000a,0x00000245,0x00050083,0x00000006,0x00000247,0x0000007b,0x00000246, + 0x0003003e,0x0000023f,0x00000247,0x0004003d,0x00000006,0x00000248,0x0000023f,0x0004003d, + 0x00000006,0x00000249,0x000001f2,0x00050083,0x00000006,0x0000024a,0x0000007b,0x00000249, + 0x00050085,0x00000006,0x0000024b,0x00000248,0x0000024a,0x0004003d,0x00000006,0x0000024c, + 0x000001ed,0x00050083,0x00000006,0x0000024d,0x0000007b,0x0000024c,0x00050085,0x00000006, + 0x0000024e,0x0000024b,0x0000024d,0x0004003d,0x00000006,0x0000024f,0x000001f7,0x00050083, + 0x00000006,0x00000250,0x0000007b,0x0000024f,0x00050085,0x00000006,0x00000251,0x0000024e, + 0x00000250,0x00050041,0x00000007,0x00000252,0x000001ba,0x0000009c,0x0004003d,0x00000006, + 0x00000253,0x00000252,0x00050085,0x00000006,0x00000254,0x00000253,0x00000251,0x00050041, + 0x00000007,0x00000255,0x000001ba,0x0000009c,0x0003003e,0x00000255,0x00000254,0x000200f9, + 0x0000020a,0x000200f8,0x0000020a,0x000200f9,0x000001e0,0x000200f8,0x000001e0,0x0004003d, + 0x00000021,0x00000257,0x00000076,0x0003003e,0x00000256,0x00000257,0x00050041,0x00000033, + 0x00000259,0x000001ba,0x00000096,0x0004003d,0x00000032,0x0000025a,0x00000259,0x0003003e, + 0x00000258,0x0000025a,0x00060039,0x00000002,0x0000025b,0x00000037,0x00000256,0x00000258, + 0x0004003d,0x00000021,0x0000025d,0x00000076,0x0003003e,0x0000025c,0x0000025d,0x00050041, + 0x00000007,0x0000025f,0x000001ba,0x0000009c,0x0004003d,0x00000006,0x00000260,0x0000025f, + 0x0003003e,0x0000025e,0x00000260,0x00060039,0x00000002,0x00000261,0x00000049,0x0000025c, + 0x0000025e,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h b/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h new file mode 100644 index 000000000..831563084 --- /dev/null +++ b/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h @@ -0,0 +1,1527 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_LUMA_PYRAMID_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x00000747,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x0000003d,0x00020011,0x00000044,0x0006000b,0x00000001,0x4c534c47, + 0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,0x0007000f,0x00000005, + 0x00000004,0x6e69616d,0x00000000,0x00000731,0x00000733,0x00060010,0x00000004,0x00000011, + 0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47, + 0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69, + 0x00000000,0x000b0004,0x455f4c47,0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469, + 0x68746972,0x6974656d,0x79745f63,0x00736570,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45, + 0x74735f70,0x5f656c79,0x656e696c,0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47, + 0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65,0x74636572,0x00657669,0x00090004,0x4b5f4c47, + 0x735f5248,0x65646168,0x75735f72,0x6f726762,0x625f7075,0x63697361,0x00000000,0x00080004, + 0x4b5f4c47,0x735f5248,0x65646168,0x75735f72,0x6f726762,0x715f7075,0x00646175,0x00040005, + 0x00000004,0x6e69616d,0x00000000,0x000a0005,0x0000000c,0x42786666,0x69667469,0x45646c65, + 0x61727478,0x75287463,0x31753b31,0x3b31753b,0x00000000,0x00030005,0x00000009,0x00637273, + 0x00030005,0x0000000a,0x0066666f,0x00040005,0x0000000b,0x73746962,0x00000000,0x000a0005, + 0x00000011,0x42786666,0x69667469,0x49646c65,0x7265736e,0x73614d74,0x3175286b,0x3b31753b, + 0x003b3175,0x00030005,0x0000000e,0x00637273,0x00030005,0x0000000f,0x00736e69,0x00040005, + 0x00000010,0x73746962,0x00000000,0x00060005,0x00000018,0x4d786666,0x69286e69,0x31693b31, + 0x0000003b,0x00030005,0x00000016,0x00000078,0x00030005,0x00000017,0x00000079,0x00060005, + 0x0000001f,0x4d786666,0x66287861,0x31663b31,0x0000003b,0x00030005,0x0000001d,0x00000078, + 0x00030005,0x0000001e,0x00000079,0x00060005,0x00000023,0x4d786666,0x69287861,0x31693b31, + 0x0000003b,0x00030005,0x00000021,0x00000078,0x00030005,0x00000022,0x00000079,0x00060005, + 0x00000027,0x50786666,0x6628776f,0x31663b31,0x0000003b,0x00030005,0x00000025,0x00000078, + 0x00030005,0x00000026,0x00000079,0x000a0005,0x0000002c,0x52786666,0x70616d65,0x57726f46, + 0x52657661,0x63756465,0x6e6f6974,0x3b317528,0x00000000,0x00030005,0x0000002b,0x00000061, + 0x00050005,0x00000030,0x646e6552,0x69537265,0x0028657a,0x00050005,0x00000033,0x746c6544, + 0x6d695461,0x00002865,0x00050005,0x00000036,0x4370694d,0x746e756f,0x00000028,0x00060005, + 0x00000038,0x576d754e,0x476b726f,0x70756f72,0x00002873,0x00070005,0x0000003b,0x6b726f57, + 0x756f7247,0x66664f70,0x28746573,0x00000000,0x00080005,0x00000040,0x64616f4c,0x74726146, + 0x74736568,0x74706544,0x69762868,0x00003b32,0x00040005,0x0000003f,0x50785069,0x0000736f, + 0x000a0005,0x00000045,0x726f7453,0x72614665,0x73656874,0x70654474,0x694d6874,0x76283170, + 0x663b3269,0x00003b31,0x00040005,0x00000043,0x50785069,0x0000736f,0x00040005,0x00000044, + 0x70654466,0x00006874,0x00080005,0x00000048,0x64616f4c,0x72727543,0x4c746e65,0x28616d75, + 0x3b326976,0x00000000,0x00040005,0x00000047,0x50785069,0x0000736f,0x00060005,0x0000004c, + 0x64616f4c,0x6d617246,0x666e4965,0x0000286f,0x00070005,0x00000051,0x726f7453,0x61724665, + 0x6e49656d,0x76286f66,0x003b3466,0x00040005,0x00000050,0x666e4966,0x0000006f,0x00080005, + 0x00000057,0x6f4c5752,0x79506461,0x696d6172,0x69762864,0x31753b32,0x0000003b,0x00040005, + 0x00000055,0x50785069,0x0000736f,0x00040005,0x00000056,0x65646e69,0x00000078,0x00090005, + 0x0000005e,0x726f7453,0x72795065,0x64696d61,0x32697628,0x3266763b,0x3b31753b,0x00000000, + 0x00040005,0x0000005b,0x50785069,0x0000736f,0x00050005,0x0000005c,0x5674756f,0x65756c61, + 0x00000000,0x00040005,0x0000005d,0x65646e69,0x00000078,0x000a0005,0x00000062,0x5f445053, + 0x72636e49,0x65736165,0x6d6f7441,0x6f436369,0x65746e75,0x31752872,0x0000003b,0x00050005, + 0x00000061,0x43647073,0x746e756f,0x00007265,0x00080005,0x00000064,0x5f445053,0x65736552, + 0x6f744174,0x4363696d,0x746e756f,0x00287265,0x00080005,0x0000006a,0x6d616c43,0x616f4c70, + 0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005,0x00000067,0x53785069,0x6c706d61, + 0x00000065,0x00050005,0x00000068,0x4f785069,0x65736666,0x00000074,0x00060005,0x00000069, + 0x78655469,0x65727574,0x657a6953,0x00000000,0x000a0005,0x0000006e,0x706d6f43,0x41657475, + 0x456f7475,0x736f7078,0x46657275,0x4c6d6f72,0x28677661,0x003b3166,0x00040005,0x0000006d, + 0x6776614c,0x00000000,0x000a0005,0x00000071,0x49647053,0x6572636e,0x41657361,0x696d6f74, + 0x756f4363,0x7265746e,0x3b317528,0x00000000,0x00040005,0x00000070,0x63696c73,0x00000065, + 0x00080005,0x00000073,0x47647053,0x74417465,0x63696d6f,0x6e756f43,0x28726574,0x00000000, + 0x00090005,0x00000076,0x52647053,0x74657365,0x6d6f7441,0x6f436369,0x65746e75,0x31752872, + 0x0000003b,0x00040005,0x00000075,0x63696c73,0x00000065,0x00090005,0x0000007b,0x4c647053, + 0x5364616f,0x6372756f,0x616d4965,0x76286567,0x753b3266,0x00003b31,0x00040005,0x00000079, + 0x50785069,0x0000736f,0x00040005,0x0000007a,0x63696c73,0x00000065,0x00060005,0x00000080, + 0x4c647053,0x2864616f,0x3b326976,0x003b3175,0x00030005,0x0000007e,0x00786574,0x00040005, + 0x0000007f,0x63696c73,0x00000065,0x00090005,0x00000087,0x52647053,0x63756465,0x76283465, + 0x763b3466,0x763b3466,0x763b3466,0x003b3466,0x00030005,0x00000083,0x00003076,0x00030005, + 0x00000084,0x00003176,0x00030005,0x00000085,0x00003276,0x00030005,0x00000086,0x00003376, + 0x00080005,0x0000008e,0x53647053,0x65726f74,0x32697628,0x3466763b,0x3b31753b,0x003b3175, + 0x00030005,0x0000008a,0x00786970,0x00050005,0x0000008b,0x5674756f,0x65756c61,0x00000000, + 0x00040005,0x0000008c,0x65646e69,0x00000078,0x00040005,0x0000008d,0x63696c73,0x00000065, + 0x00090005,0x00000093,0x4c647053,0x4964616f,0x7265746e,0x6964656d,0x28657461,0x753b3175, + 0x00003b31,0x00030005,0x00000091,0x00000078,0x00030005,0x00000092,0x00000079,0x000a0005, + 0x00000099,0x53647053,0x65726f74,0x65746e49,0x64656d72,0x65746169,0x3b317528,0x763b3175, + 0x003b3466,0x00030005,0x00000096,0x00000078,0x00030005,0x00000097,0x00000079,0x00040005, + 0x00000098,0x756c6176,0x00000065,0x000a0005,0x0000009b,0x53786666,0x6f576470,0x72676b72, + 0x5370756f,0x66667568,0x6142656c,0x65697272,0x00002872,0x00090005,0x000000a2,0x45647053, + 0x57746978,0x676b726f,0x70756f72,0x3b317528,0x753b3175,0x00003b31,0x00060005,0x0000009f, + 0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00080005,0x000000a0,0x61636f6c,0x766e496c, + 0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x000000a1,0x63696c73,0x00000065, + 0x00070005,0x000000a6,0x52647053,0x63756465,0x61755165,0x66762864,0x00003b34,0x00030005, + 0x000000a5,0x00000076,0x000b0005,0x000000af,0x52647053,0x63756465,0x616f4c65,0x76283464, + 0x763b3275,0x763b3275,0x763b3275,0x753b3275,0x00003b31,0x00030005,0x000000aa,0x00003069, + 0x00030005,0x000000ab,0x00003169,0x00030005,0x000000ac,0x00003269,0x00030005,0x000000ad, + 0x00003369,0x00040005,0x000000ae,0x63696c73,0x00000065,0x00080005,0x000000b4,0x52647053, + 0x63756465,0x616f4c65,0x76283464,0x753b3275,0x00003b31,0x00040005,0x000000b2,0x65736162, + 0x00000000,0x00040005,0x000000b3,0x63696c73,0x00000065,0x000e0005,0x000000bb,0x52647053, + 0x63756465,0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x75762834,0x75763b32,0x75763b32, + 0x75763b32,0x31753b32,0x0000003b,0x00030005,0x000000b6,0x00003069,0x00030005,0x000000b7, + 0x00003169,0x00030005,0x000000b8,0x00003269,0x00030005,0x000000b9,0x00003369,0x00040005, + 0x000000ba,0x63696c73,0x00000065,0x000b0005,0x000000bf,0x52647053,0x63756465,0x616f4c65, + 0x756f5364,0x49656372,0x6567616d,0x32757628,0x3b31753b,0x00000000,0x00040005,0x000000bd, + 0x65736162,0x00000000,0x00040005,0x000000be,0x63696c73,0x00000065,0x00100005,0x000000c8, + 0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x6e495f31,0x6e697274,0x73636973, + 0x3b317528,0x763b3175,0x753b3275,0x31753b31,0x3b31753b,0x00000000,0x00030005,0x000000c2, + 0x00000078,0x00030005,0x000000c3,0x00000079,0x00050005,0x000000c4,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x000000c5,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00030005,0x000000c6,0x0070696d,0x00040005,0x000000c7,0x63696c73,0x00000065, + 0x000d0005,0x000000d0,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x31752831, + 0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x0000003b,0x00030005,0x000000ca,0x00000078, + 0x00030005,0x000000cb,0x00000079,0x00050005,0x000000cc,0x6b726f77,0x756f7247,0x00444970, + 0x00080005,0x000000cd,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000, + 0x00030005,0x000000ce,0x0070696d,0x00040005,0x000000cf,0x63696c73,0x00000065,0x000c0005, + 0x000000d8,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7528325f,0x31753b31,0x3275763b, + 0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x000000d2,0x00000078,0x00030005,0x000000d3, + 0x00000079,0x00050005,0x000000d4,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x000000d5, + 0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005,0x000000d6, + 0x0070696d,0x00040005,0x000000d7,0x63696c73,0x00000065,0x000c0005,0x000000e0,0x44647053, + 0x736e776f,0x6c706d61,0x70694d65,0x7528335f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175, + 0x00003b31,0x00030005,0x000000da,0x00000078,0x00030005,0x000000db,0x00000079,0x00050005, + 0x000000dc,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x000000dd,0x61636f6c,0x766e496c, + 0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005,0x000000de,0x0070696d,0x00040005, + 0x000000df,0x63696c73,0x00000065,0x000c0005,0x000000e8,0x44647053,0x736e776f,0x6c706d61, + 0x70694d65,0x7528345f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175,0x00003b31,0x00030005, + 0x000000e2,0x00000078,0x00030005,0x000000e3,0x00000079,0x00050005,0x000000e4,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x000000e5,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00030005,0x000000e6,0x0070696d,0x00040005,0x000000e7,0x63696c73, + 0x00000065,0x000b0005,0x000000ef,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7628355f, + 0x753b3275,0x31753b31,0x3b31753b,0x00000000,0x00050005,0x000000eb,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x000000ec,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00030005,0x000000ed,0x0070696d,0x00040005,0x000000ee,0x63696c73,0x00000065, + 0x000b0005,0x000000f6,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f365f73,0x31752837, + 0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x000000f2,0x00000078,0x00030005,0x000000f3, + 0x00000079,0x00040005,0x000000f4,0x7370696d,0x00000000,0x00040005,0x000000f5,0x63696c73, + 0x00000065,0x000e0005,0x00000100,0x44647053,0x736e776f,0x6c706d61,0x78654e65,0x756f4674, + 0x31752872,0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x3b31753b,0x00000000,0x00030005, + 0x000000f9,0x00000078,0x00030005,0x000000fa,0x00000079,0x00050005,0x000000fb,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x000000fc,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00040005,0x000000fd,0x65736162,0x0070694d,0x00040005,0x000000fe, + 0x7370696d,0x00000000,0x00040005,0x000000ff,0x63696c73,0x00000065,0x000a0005,0x00000108, + 0x44647053,0x736e776f,0x6c706d61,0x75762865,0x31753b32,0x3b31753b,0x753b3175,0x00003b31, + 0x00050005,0x00000103,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000104,0x61636f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x00000105,0x7370696d, + 0x00000000,0x00060005,0x00000106,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005, + 0x00000107,0x63696c73,0x00000065,0x000b0005,0x00000111,0x44647053,0x736e776f,0x6c706d61, + 0x75762865,0x31753b32,0x3b31753b,0x753b3175,0x75763b31,0x00003b32,0x00050005,0x0000010b, + 0x6b726f77,0x756f7247,0x00444970,0x00080005,0x0000010c,0x61636f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x7865646e,0x00000000,0x00040005,0x0000010d,0x7370696d,0x00000000,0x00060005, + 0x0000010e,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005,0x0000010f,0x63696c73, + 0x00000065,0x00060005,0x00000110,0x6b726f77,0x756f7247,0x66664f70,0x00746573,0x00090005, + 0x00000118,0x706d6f43,0x41657475,0x456f7475,0x736f7078,0x28657275,0x3b337576,0x003b3175, + 0x00050005,0x00000116,0x6b726f57,0x756f7247,0x00644970,0x00070005,0x00000117,0x61636f4c, + 0x7268546c,0x49646165,0x7865646e,0x00000000,0x00040005,0x00000140,0x61726170,0x0000006d, + 0x00040005,0x00000142,0x61726170,0x0000006d,0x00040005,0x00000143,0x61726170,0x0000006d, + 0x00040005,0x00000146,0x61726170,0x0000006d,0x00040005,0x00000147,0x61726170,0x0000006d, + 0x00040005,0x00000149,0x61726170,0x0000006d,0x00040005,0x0000014b,0x61726170,0x0000006d, + 0x00040005,0x0000014d,0x61726170,0x0000006d,0x00040005,0x0000014e,0x61726170,0x0000006d, + 0x00040005,0x00000150,0x61726170,0x0000006d,0x00040005,0x00000152,0x61726170,0x0000006d, + 0x00040005,0x00000153,0x61726170,0x0000006d,0x00040005,0x00000155,0x61726170,0x0000006d, + 0x00040005,0x00000156,0x61726170,0x0000006d,0x00040005,0x00000157,0x61726170,0x0000006d, + 0x00070005,0x0000015c,0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006, + 0x0000015c,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006,0x0000015c,0x00000001, + 0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006, + 0x0000015c,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x0000015c, + 0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065, + 0x00070006,0x0000015c,0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006, + 0x0000015c,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x0000015c, + 0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x0000015c, + 0x00000007,0x74694a66,0x00726574,0x00090006,0x0000015c,0x00000008,0x65725066,0x756f6976, + 0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x0000015c,0x00000009,0x746f4d66, + 0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x0000015c,0x0000000a,0x776f4466, + 0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x0000015c,0x0000000b,0x746f4d66, + 0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006, + 0x0000015c,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006,0x0000015c,0x0000000d, + 0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x0000015c, + 0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x0000015c,0x0000000f,0x6c654466, + 0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x0000015c,0x00000010,0x65695666, + 0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x0000015c, + 0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x0000015c,0x00000012,0x6c655666, + 0x7469636f,0x63614679,0x00726f74,0x00080006,0x0000015c,0x00000013,0x61655266,0x76697463, + 0x73656e65,0x61635373,0x0000656c,0x00080006,0x0000015c,0x00000014,0x61685366,0x676e6964, + 0x6e616843,0x63536567,0x00656c61,0x000a0006,0x0000015c,0x00000015,0x63634166,0x6c756d75, + 0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006,0x0000015c,0x00000016, + 0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000, + 0x00060005,0x0000015e,0x53466263,0x70553352,0x6c616373,0x00007265,0x00040005,0x0000016a, + 0x50536263,0x00745f44,0x00050006,0x0000016a,0x00000000,0x7370696d,0x00000000,0x00070006, + 0x0000016a,0x00000001,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00070006,0x0000016a, + 0x00000002,0x6b726f77,0x756f7247,0x66664f70,0x00746573,0x00060006,0x0000016a,0x00000003, + 0x646e6572,0x69537265,0x0000657a,0x00040005,0x0000016c,0x50536263,0x00000044,0x00070005, + 0x0000017f,0x61665f72,0x65687472,0x645f7473,0x68747065,0x00000000,0x00080005,0x00000189, + 0x665f7772,0x68747261,0x5f747365,0x74706564,0x696d5f68,0x00003170,0x00060005,0x0000018f, + 0x75635f72,0x6e657272,0x756c5f74,0x0000616d,0x00060005,0x00000198,0x665f7772,0x656d6172, + 0x666e695f,0x0000006f,0x00050005,0x000001a6,0x735f7772,0x6d5f6470,0x00307069,0x00050005, + 0x000001b0,0x735f7772,0x6d5f6470,0x00317069,0x00050005,0x000001ba,0x735f7772,0x6d5f6470, + 0x00327069,0x00050005,0x000001c4,0x735f7772,0x6d5f6470,0x00337069,0x00050005,0x000001cf, + 0x735f7772,0x6d5f6470,0x00347069,0x00050005,0x000001da,0x735f7772,0x6d5f6470,0x00357069, + 0x00080005,0x00000221,0x735f7772,0x675f6470,0x61626f6c,0x74615f6c,0x63696d6f,0x00000000, + 0x00040005,0x00000228,0x75736572,0x0000746c,0x00040005,0x0000022f,0x61726170,0x0000006d, + 0x00040005,0x00000232,0x61726170,0x0000006d,0x00040005,0x00000234,0x61726170,0x0000006d, + 0x00040005,0x00000235,0x61726170,0x0000006d,0x00040005,0x0000023b,0x61726170,0x0000006d, + 0x00040005,0x0000023e,0x61726170,0x0000006d,0x00040005,0x00000240,0x61726170,0x0000006d, + 0x00040005,0x00000241,0x61726170,0x0000006d,0x00060005,0x00000249,0x6f707845,0x65727573, + 0x314f5349,0x00003030,0x00040005,0x00000250,0x78616d4c,0x00000000,0x00040005,0x00000253, + 0x61726170,0x0000006d,0x00040005,0x00000254,0x61726170,0x0000006d,0x00050005,0x0000025e, + 0x43647073,0x746e756f,0x00007265,0x00040005,0x0000025f,0x61726170,0x0000006d,0x00060005, + 0x00000267,0x53785069,0x6c706d61,0x736f5065,0x00000000,0x00040005,0x0000026b,0x61726170, + 0x0000006d,0x00040005,0x0000026c,0x61726170,0x0000006d,0x00040005,0x0000026d,0x61726170, + 0x0000006d,0x00040005,0x0000026f,0x6d754c66,0x00000061,0x00040005,0x00000270,0x61726170, + 0x0000006d,0x00050005,0x00000273,0x676f4c66,0x616d754c,0x00000000,0x00040005,0x00000277, + 0x61726170,0x0000006d,0x00040005,0x00000278,0x61726170,0x0000006d,0x00080005,0x0000027a, + 0x72614666,0x73656874,0x70654474,0x6e496874,0x6574654d,0x00007372,0x00040005,0x0000027b, + 0x61726170,0x0000006d,0x00040005,0x0000027e,0x74754f66,0x00747570,0x00040005,0x00000289, + 0x61726170,0x0000006d,0x00040005,0x0000028b,0x61726170,0x0000006d,0x00040005,0x000002a1, + 0x61726170,0x0000006d,0x00040005,0x000002a3,0x61726170,0x0000006d,0x00040005,0x000002a6, + 0x61726170,0x0000006d,0x00040005,0x000002ae,0x61726170,0x0000006d,0x00040005,0x000002b0, + 0x61726170,0x0000006d,0x00050005,0x000002c0,0x6d617266,0x666e4965,0x0000006f,0x00060005, + 0x000002c2,0x65635366,0x7641656e,0x6d754c67,0x00000061,0x00060005,0x000002c5,0x65725066, + 0x676f4c76,0x616d754c,0x00000000,0x00050005,0x000002c8,0x676f4c66,0x616d754c,0x00000000, + 0x00040005,0x000002da,0x61726170,0x0000006d,0x00040005,0x000002db,0x61726170,0x0000006d, + 0x00040005,0x000002de,0x61726170,0x0000006d,0x00040005,0x000002e6,0x61726170,0x0000006d, + 0x00070005,0x000002ed,0x49647073,0x7265746e,0x6964656d,0x52657461,0x00000000,0x00070005, + 0x000002f3,0x49647073,0x7265746e,0x6964656d,0x47657461,0x00000000,0x00070005,0x000002f8, + 0x49647073,0x7265746e,0x6964656d,0x42657461,0x00000000,0x00070005,0x000002fd,0x49647073, + 0x7265746e,0x6964656d,0x41657461,0x00000000,0x00040005,0x0000031f,0x61726170,0x0000006d, + 0x00030005,0x00000329,0x00003076,0x00030005,0x0000032b,0x00003176,0x00030005,0x0000032e, + 0x00003276,0x00030005,0x00000331,0x00003376,0x00040005,0x00000334,0x61726170,0x0000006d, + 0x00040005,0x00000336,0x61726170,0x0000006d,0x00040005,0x00000338,0x61726170,0x0000006d, + 0x00040005,0x0000033a,0x61726170,0x0000006d,0x00030005,0x00000341,0x00003076,0x00040005, + 0x00000344,0x61726170,0x0000006d,0x00040005,0x00000345,0x61726170,0x0000006d,0x00030005, + 0x00000348,0x00003176,0x00040005,0x0000034b,0x61726170,0x0000006d,0x00040005,0x0000034c, + 0x61726170,0x0000006d,0x00030005,0x0000034f,0x00003276,0x00040005,0x00000352,0x61726170, + 0x0000006d,0x00040005,0x00000353,0x61726170,0x0000006d,0x00030005,0x00000356,0x00003376, + 0x00040005,0x00000359,0x61726170,0x0000006d,0x00040005,0x0000035a,0x61726170,0x0000006d, + 0x00040005,0x0000035d,0x61726170,0x0000006d,0x00040005,0x0000035f,0x61726170,0x0000006d, + 0x00040005,0x00000361,0x61726170,0x0000006d,0x00040005,0x00000363,0x61726170,0x0000006d, + 0x00040005,0x00000374,0x61726170,0x0000006d,0x00040005,0x00000375,0x61726170,0x0000006d, + 0x00040005,0x00000376,0x61726170,0x0000006d,0x00040005,0x00000377,0x61726170,0x0000006d, + 0x00040005,0x00000378,0x61726170,0x0000006d,0x00030005,0x0000037d,0x00003076,0x00040005, + 0x00000381,0x61726170,0x0000006d,0x00040005,0x00000382,0x61726170,0x0000006d,0x00030005, + 0x00000385,0x00003176,0x00040005,0x00000389,0x61726170,0x0000006d,0x00040005,0x0000038a, + 0x61726170,0x0000006d,0x00030005,0x0000038d,0x00003276,0x00040005,0x00000391,0x61726170, + 0x0000006d,0x00040005,0x00000392,0x61726170,0x0000006d,0x00030005,0x00000395,0x00003376, + 0x00040005,0x00000399,0x61726170,0x0000006d,0x00040005,0x0000039a,0x61726170,0x0000006d, + 0x00040005,0x0000039d,0x61726170,0x0000006d,0x00040005,0x0000039f,0x61726170,0x0000006d, + 0x00040005,0x000003a1,0x61726170,0x0000006d,0x00040005,0x000003a3,0x61726170,0x0000006d, + 0x00040005,0x000003b0,0x61726170,0x0000006d,0x00040005,0x000003b1,0x61726170,0x0000006d, + 0x00040005,0x000003b2,0x61726170,0x0000006d,0x00040005,0x000003b3,0x61726170,0x0000006d, + 0x00040005,0x000003b4,0x61726170,0x0000006d,0x00030005,0x000003b9,0x00786574,0x00030005, + 0x000003c7,0x00786970,0x00030005,0x000003d5,0x00000076,0x00040005,0x000003d8,0x61726170, + 0x0000006d,0x00040005,0x000003d9,0x61726170,0x0000006d,0x00040005,0x000003dd,0x61726170, + 0x0000006d,0x00040005,0x000003df,0x61726170,0x0000006d,0x00040005,0x000003e2,0x61726170, + 0x0000006d,0x00040005,0x000003e3,0x61726170,0x0000006d,0x00040005,0x00000400,0x61726170, + 0x0000006d,0x00040005,0x00000401,0x61726170,0x0000006d,0x00040005,0x00000405,0x61726170, + 0x0000006d,0x00040005,0x00000407,0x61726170,0x0000006d,0x00040005,0x0000040a,0x61726170, + 0x0000006d,0x00040005,0x0000040b,0x61726170,0x0000006d,0x00040005,0x00000428,0x61726170, + 0x0000006d,0x00040005,0x00000429,0x61726170,0x0000006d,0x00040005,0x0000042d,0x61726170, + 0x0000006d,0x00040005,0x0000042f,0x61726170,0x0000006d,0x00040005,0x00000432,0x61726170, + 0x0000006d,0x00040005,0x00000433,0x61726170,0x0000006d,0x00040005,0x00000453,0x61726170, + 0x0000006d,0x00040005,0x00000454,0x61726170,0x0000006d,0x00040005,0x00000458,0x61726170, + 0x0000006d,0x00040005,0x0000045a,0x61726170,0x0000006d,0x00040005,0x0000045d,0x61726170, + 0x0000006d,0x00040005,0x0000045e,0x61726170,0x0000006d,0x00040005,0x00000466,0x61726170, + 0x0000006d,0x00040005,0x0000046b,0x61726170,0x0000006d,0x00040005,0x00000470,0x61726170, + 0x0000006d,0x00040005,0x00000475,0x61726170,0x0000006d,0x00040005,0x0000048b,0x61726170, + 0x0000006d,0x00040005,0x0000048c,0x61726170,0x0000006d,0x00040005,0x0000048f,0x61726170, + 0x0000006d,0x00040005,0x00000490,0x61726170,0x0000006d,0x00040005,0x00000497,0x61726170, + 0x0000006d,0x00040005,0x00000498,0x61726170,0x0000006d,0x00040005,0x00000499,0x61726170, + 0x0000006d,0x00040005,0x000004ab,0x61726170,0x0000006d,0x00040005,0x000004ac,0x61726170, + 0x0000006d,0x00040005,0x000004af,0x61726170,0x0000006d,0x00040005,0x000004b0,0x61726170, + 0x0000006d,0x00040005,0x000004b8,0x61726170,0x0000006d,0x00040005,0x000004b9,0x61726170, + 0x0000006d,0x00040005,0x000004ba,0x61726170,0x0000006d,0x00040005,0x000004cb,0x61726170, + 0x0000006d,0x00040005,0x000004cc,0x61726170,0x0000006d,0x00040005,0x000004cf,0x61726170, + 0x0000006d,0x00040005,0x000004d0,0x61726170,0x0000006d,0x00040005,0x000004d8,0x61726170, + 0x0000006d,0x00040005,0x000004d9,0x61726170,0x0000006d,0x00040005,0x000004da,0x61726170, + 0x0000006d,0x00040005,0x000004ec,0x61726170,0x0000006d,0x00040005,0x000004ed,0x61726170, + 0x0000006d,0x00040005,0x000004f0,0x61726170,0x0000006d,0x00040005,0x000004f1,0x61726170, + 0x0000006d,0x00040005,0x000004fa,0x61726170,0x0000006d,0x00040005,0x000004fb,0x61726170, + 0x0000006d,0x00040005,0x000004fc,0x61726170,0x0000006d,0x00040005,0x00000500,0x61726170, + 0x0000006d,0x00040005,0x00000502,0x61726170,0x0000006d,0x00040005,0x00000504,0x61726170, + 0x0000006d,0x00040005,0x00000506,0x61726170,0x0000006d,0x00040005,0x00000508,0x61726170, + 0x0000006d,0x00040005,0x0000050a,0x61726170,0x0000006d,0x00030005,0x0000050d,0x00000076, + 0x00040005,0x0000050e,0x61726170,0x0000006d,0x00040005,0x00000510,0x61726170,0x0000006d, + 0x00040005,0x00000513,0x61726170,0x0000006d,0x00040005,0x00000527,0x61726170,0x0000006d, + 0x00040005,0x00000528,0x61726170,0x0000006d,0x00040005,0x0000052a,0x61726170,0x0000006d, + 0x00040005,0x0000052c,0x61726170,0x0000006d,0x00040005,0x00000534,0x61726170,0x0000006d, + 0x00040005,0x00000535,0x61726170,0x0000006d,0x00040005,0x00000537,0x61726170,0x0000006d, + 0x00030005,0x0000053e,0x00000076,0x00040005,0x00000546,0x61726170,0x0000006d,0x00040005, + 0x00000547,0x61726170,0x0000006d,0x00040005,0x00000549,0x61726170,0x0000006d,0x00040005, + 0x0000055d,0x61726170,0x0000006d,0x00040005,0x0000055e,0x61726170,0x0000006d,0x00040005, + 0x00000560,0x61726170,0x0000006d,0x00040005,0x00000562,0x61726170,0x0000006d,0x00040005, + 0x0000056c,0x61726170,0x0000006d,0x00040005,0x0000056d,0x61726170,0x0000006d,0x00040005, + 0x0000056e,0x61726170,0x0000006d,0x00030005,0x00000575,0x00000076,0x00040005,0x0000057c, + 0x61726170,0x0000006d,0x00040005,0x0000057d,0x61726170,0x0000006d,0x00040005,0x0000057f, + 0x61726170,0x0000006d,0x00040005,0x00000593,0x61726170,0x0000006d,0x00040005,0x00000594, + 0x61726170,0x0000006d,0x00040005,0x00000596,0x61726170,0x0000006d,0x00040005,0x00000598, + 0x61726170,0x0000006d,0x00040005,0x0000059f,0x61726170,0x0000006d,0x00040005,0x000005a0, + 0x61726170,0x0000006d,0x00040005,0x000005a1,0x61726170,0x0000006d,0x00030005,0x000005a8, + 0x00000076,0x00040005,0x000005a9,0x61726170,0x0000006d,0x00040005,0x000005ab,0x61726170, + 0x0000006d,0x00040005,0x000005ad,0x61726170,0x0000006d,0x00040005,0x000005b7,0x61726170, + 0x0000006d,0x00040005,0x000005b8,0x61726170,0x0000006d,0x00040005,0x000005ba,0x61726170, + 0x0000006d,0x00040005,0x000005bc,0x61726170,0x0000006d,0x00030005,0x000005bf,0x00786574, + 0x00030005,0x000005c9,0x00786970,0x00030005,0x000005d3,0x00003076,0x00040005,0x000005d6, + 0x61726170,0x0000006d,0x00040005,0x000005d7,0x61726170,0x0000006d,0x00040005,0x000005db, + 0x61726170,0x0000006d,0x00040005,0x000005dd,0x61726170,0x0000006d,0x00040005,0x000005df, + 0x61726170,0x0000006d,0x00040005,0x000005e0,0x61726170,0x0000006d,0x00030005,0x000005f5, + 0x00003176,0x00040005,0x000005f8,0x61726170,0x0000006d,0x00040005,0x000005f9,0x61726170, + 0x0000006d,0x00040005,0x000005fc,0x61726170,0x0000006d,0x00040005,0x000005fe,0x61726170, + 0x0000006d,0x00040005,0x00000600,0x61726170,0x0000006d,0x00040005,0x00000601,0x61726170, + 0x0000006d,0x00030005,0x00000616,0x00003276,0x00040005,0x00000619,0x61726170,0x0000006d, + 0x00040005,0x0000061a,0x61726170,0x0000006d,0x00040005,0x0000061d,0x61726170,0x0000006d, + 0x00040005,0x0000061f,0x61726170,0x0000006d,0x00040005,0x00000621,0x61726170,0x0000006d, + 0x00040005,0x00000622,0x61726170,0x0000006d,0x00030005,0x00000637,0x00003376,0x00040005, + 0x0000063a,0x61726170,0x0000006d,0x00040005,0x0000063b,0x61726170,0x0000006d,0x00040005, + 0x0000063e,0x61726170,0x0000006d,0x00040005,0x00000640,0x61726170,0x0000006d,0x00040005, + 0x00000642,0x61726170,0x0000006d,0x00040005,0x00000643,0x61726170,0x0000006d,0x00030005, + 0x0000064c,0x00000076,0x00040005,0x0000064d,0x61726170,0x0000006d,0x00040005,0x0000064f, + 0x61726170,0x0000006d,0x00040005,0x00000651,0x61726170,0x0000006d,0x00040005,0x00000653, + 0x61726170,0x0000006d,0x00040005,0x0000065b,0x61726170,0x0000006d,0x00040005,0x0000065c, + 0x61726170,0x0000006d,0x00040005,0x0000065e,0x61726170,0x0000006d,0x00040005,0x0000065f, + 0x61726170,0x0000006d,0x00040005,0x00000662,0x61726170,0x0000006d,0x00040005,0x00000664, + 0x61726170,0x0000006d,0x00040005,0x00000666,0x61726170,0x0000006d,0x00040005,0x00000670, + 0x61726170,0x0000006d,0x00040005,0x00000672,0x61726170,0x0000006d,0x00040005,0x00000674, + 0x61726170,0x0000006d,0x00040005,0x00000676,0x61726170,0x0000006d,0x00040005,0x00000678, + 0x61726170,0x0000006d,0x00040005,0x0000067a,0x61726170,0x0000006d,0x00040005,0x00000687, + 0x61726170,0x0000006d,0x00040005,0x00000689,0x61726170,0x0000006d,0x00040005,0x0000068b, + 0x61726170,0x0000006d,0x00040005,0x0000068d,0x61726170,0x0000006d,0x00040005,0x0000068f, + 0x61726170,0x0000006d,0x00040005,0x00000690,0x61726170,0x0000006d,0x00040005,0x0000069d, + 0x61726170,0x0000006d,0x00040005,0x0000069f,0x61726170,0x0000006d,0x00040005,0x000006a1, + 0x61726170,0x0000006d,0x00040005,0x000006a3,0x61726170,0x0000006d,0x00040005,0x000006a5, + 0x61726170,0x0000006d,0x00040005,0x000006a6,0x61726170,0x0000006d,0x00040005,0x000006b3, + 0x61726170,0x0000006d,0x00040005,0x000006b5,0x61726170,0x0000006d,0x00040005,0x000006b7, + 0x61726170,0x0000006d,0x00040005,0x000006b8,0x61726170,0x0000006d,0x00040005,0x000006bb, + 0x5f627573,0x00007978,0x00040005,0x000006be,0x61726170,0x0000006d,0x00030005,0x000006c0, + 0x00000078,0x00030005,0x000006c9,0x00000079,0x00040005,0x000006d1,0x61726170,0x0000006d, + 0x00040005,0x000006d3,0x61726170,0x0000006d,0x00040005,0x000006d5,0x61726170,0x0000006d, + 0x00040005,0x000006d7,0x61726170,0x0000006d,0x00040005,0x000006d9,0x61726170,0x0000006d, + 0x00040005,0x000006db,0x61726170,0x0000006d,0x00040005,0x000006de,0x61726170,0x0000006d, + 0x00040005,0x000006e0,0x61726170,0x0000006d,0x00040005,0x000006e2,0x61726170,0x0000006d, + 0x00040005,0x000006e4,0x61726170,0x0000006d,0x00040005,0x000006e6,0x61726170,0x0000006d, + 0x00040005,0x000006e7,0x61726170,0x0000006d,0x00040005,0x000006e9,0x61726170,0x0000006d, + 0x00040005,0x000006f1,0x61726170,0x0000006d,0x00040005,0x000006f3,0x61726170,0x0000006d, + 0x00040005,0x000006f5,0x61726170,0x0000006d,0x00040005,0x000006fb,0x61726170,0x0000006d, + 0x00040005,0x000006fe,0x61726170,0x0000006d,0x00040005,0x00000700,0x61726170,0x0000006d, + 0x00040005,0x00000702,0x61726170,0x0000006d,0x00040005,0x00000704,0x61726170,0x0000006d, + 0x00040005,0x00000707,0x61726170,0x0000006d,0x00040005,0x00000709,0x61726170,0x0000006d, + 0x00040005,0x0000070b,0x61726170,0x0000006d,0x00040005,0x0000070c,0x61726170,0x0000006d, + 0x00040005,0x0000070e,0x61726170,0x0000006d,0x00040005,0x0000070f,0x61726170,0x0000006d, + 0x00040005,0x00000711,0x61726170,0x0000006d,0x00040005,0x00000717,0x61726170,0x0000006d, + 0x00040005,0x00000718,0x61726170,0x0000006d,0x00040005,0x0000071a,0x61726170,0x0000006d, + 0x00040005,0x0000071c,0x61726170,0x0000006d,0x00040005,0x0000071e,0x61726170,0x0000006d, + 0x00040005,0x00000729,0x61726170,0x0000006d,0x00040005,0x0000072a,0x61726170,0x0000006d, + 0x00040005,0x0000072b,0x61726170,0x0000006d,0x00040005,0x0000072c,0x61726170,0x0000006d, + 0x00040005,0x0000072d,0x61726170,0x0000006d,0x00040005,0x0000072e,0x61726170,0x0000006d, + 0x00060005,0x00000731,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00080005,0x00000733, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x6e496e6f,0x00786564,0x00040005,0x00000734, + 0x61726170,0x0000006d,0x00040005,0x00000736,0x61726170,0x0000006d,0x00060005,0x0000073d, + 0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00060005,0x0000073e,0x694c5f73,0x7261656e, + 0x6d616c43,0x00000070,0x00030047,0x0000015c,0x00000002,0x00050048,0x0000015c,0x00000000, + 0x00000023,0x00000000,0x00050048,0x0000015c,0x00000001,0x00000023,0x00000008,0x00050048, + 0x0000015c,0x00000002,0x00000023,0x00000010,0x00050048,0x0000015c,0x00000003,0x00000023, + 0x00000018,0x00050048,0x0000015c,0x00000004,0x00000023,0x00000020,0x00050048,0x0000015c, + 0x00000005,0x00000023,0x00000028,0x00050048,0x0000015c,0x00000006,0x00000023,0x00000030, + 0x00050048,0x0000015c,0x00000007,0x00000023,0x00000040,0x00050048,0x0000015c,0x00000008, + 0x00000023,0x00000048,0x00050048,0x0000015c,0x00000009,0x00000023,0x00000050,0x00050048, + 0x0000015c,0x0000000a,0x00000023,0x00000058,0x00050048,0x0000015c,0x0000000b,0x00000023, + 0x00000060,0x00050048,0x0000015c,0x0000000c,0x00000023,0x00000068,0x00050048,0x0000015c, + 0x0000000d,0x00000023,0x0000006c,0x00050048,0x0000015c,0x0000000e,0x00000023,0x00000070, + 0x00050048,0x0000015c,0x0000000f,0x00000023,0x00000074,0x00050048,0x0000015c,0x00000010, + 0x00000023,0x00000078,0x00050048,0x0000015c,0x00000011,0x00000023,0x0000007c,0x00050048, + 0x0000015c,0x00000012,0x00000023,0x00000080,0x00050048,0x0000015c,0x00000013,0x00000023, + 0x00000084,0x00050048,0x0000015c,0x00000014,0x00000023,0x00000088,0x00050048,0x0000015c, + 0x00000015,0x00000023,0x0000008c,0x00050048,0x0000015c,0x00000016,0x00000023,0x00000090, + 0x00040047,0x0000015e,0x00000021,0x0000000b,0x00040047,0x0000015e,0x00000022,0x00000000, + 0x00030047,0x0000016a,0x00000002,0x00050048,0x0000016a,0x00000000,0x00000023,0x00000000, + 0x00050048,0x0000016a,0x00000001,0x00000023,0x00000004,0x00050048,0x0000016a,0x00000002, + 0x00000023,0x00000008,0x00050048,0x0000016a,0x00000003,0x00000023,0x00000010,0x00040047, + 0x0000016c,0x00000021,0x0000000c,0x00040047,0x0000016c,0x00000022,0x00000000,0x00040047, + 0x0000017f,0x00000021,0x00000001,0x00040047,0x0000017f,0x00000022,0x00000000,0x00040047, + 0x00000189,0x00000021,0x0000000a,0x00040047,0x00000189,0x00000022,0x00000000,0x00040047, + 0x0000018f,0x00000021,0x00000000,0x00040047,0x0000018f,0x00000022,0x00000000,0x00040047, + 0x00000198,0x00000021,0x00000003,0x00040047,0x00000198,0x00000022,0x00000000,0x00040047, + 0x000001a6,0x00000021,0x00000004,0x00040047,0x000001a6,0x00000022,0x00000000,0x00040047, + 0x000001b0,0x00000021,0x00000005,0x00040047,0x000001b0,0x00000022,0x00000000,0x00040047, + 0x000001ba,0x00000021,0x00000006,0x00040047,0x000001ba,0x00000022,0x00000000,0x00040047, + 0x000001c4,0x00000021,0x00000007,0x00040047,0x000001c4,0x00000022,0x00000000,0x00040047, + 0x000001cf,0x00000021,0x00000008,0x00040047,0x000001cf,0x00000022,0x00000000,0x00030047, + 0x000001da,0x00000017,0x00040047,0x000001da,0x00000021,0x00000009,0x00040047,0x000001da, + 0x00000022,0x00000000,0x00030047,0x00000221,0x00000017,0x00040047,0x00000221,0x00000021, + 0x00000002,0x00040047,0x00000221,0x00000022,0x00000000,0x00040047,0x00000731,0x0000000b, + 0x0000001a,0x00040047,0x00000733,0x0000000b,0x0000001d,0x00040047,0x0000073d,0x00000021, + 0x000003e8,0x00040047,0x0000073d,0x00000022,0x00000000,0x00040047,0x0000073e,0x00000021, + 0x000003e9,0x00040047,0x0000073e,0x00000022,0x00000000,0x00040047,0x00000746,0x0000000b, + 0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006, + 0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008, + 0x00000006,0x00000007,0x00000007,0x00000007,0x00040015,0x00000013,0x00000020,0x00000001, + 0x00040020,0x00000014,0x00000007,0x00000013,0x00050021,0x00000015,0x00000013,0x00000014, + 0x00000014,0x00030016,0x0000001a,0x00000020,0x00040020,0x0000001b,0x00000007,0x0000001a, + 0x00050021,0x0000001c,0x0000001a,0x0000001b,0x0000001b,0x00040017,0x00000029,0x00000006, + 0x00000002,0x00040021,0x0000002a,0x00000029,0x00000007,0x00040017,0x0000002e,0x00000013, + 0x00000002,0x00030021,0x0000002f,0x0000002e,0x00030021,0x00000032,0x0000001a,0x00030021, + 0x00000035,0x00000006,0x00030021,0x0000003a,0x00000029,0x00040020,0x0000003d,0x00000007, + 0x0000002e,0x00040021,0x0000003e,0x0000001a,0x0000003d,0x00050021,0x00000042,0x00000002, + 0x0000003d,0x0000001b,0x00040017,0x0000004a,0x0000001a,0x00000004,0x00030021,0x0000004b, + 0x0000004a,0x00040020,0x0000004e,0x00000007,0x0000004a,0x00040021,0x0000004f,0x00000002, + 0x0000004e,0x00040017,0x00000053,0x0000001a,0x00000002,0x00050021,0x00000054,0x00000053, + 0x0000003d,0x00000007,0x00040020,0x00000059,0x00000007,0x00000053,0x00060021,0x0000005a, + 0x00000002,0x0000003d,0x00000059,0x00000007,0x00040021,0x00000060,0x00000002,0x00000007, + 0x00060021,0x00000066,0x0000002e,0x0000003d,0x0000003d,0x0000003d,0x00040021,0x0000006c, + 0x0000001a,0x0000001b,0x00050021,0x00000078,0x0000004a,0x00000059,0x00000007,0x00050021, + 0x0000007d,0x0000004a,0x0000003d,0x00000007,0x00070021,0x00000082,0x0000004a,0x0000004e, + 0x0000004e,0x0000004e,0x0000004e,0x00070021,0x00000089,0x00000002,0x0000003d,0x0000004e, + 0x00000007,0x00000007,0x00050021,0x00000090,0x0000004a,0x00000007,0x00000007,0x00060021, + 0x00000095,0x00000002,0x00000007,0x00000007,0x0000004e,0x00020014,0x0000009d,0x00060021, + 0x0000009e,0x0000009d,0x00000007,0x00000007,0x00000007,0x00040021,0x000000a4,0x0000004a, + 0x0000004e,0x00040020,0x000000a8,0x00000007,0x00000029,0x00080021,0x000000a9,0x0000004a, + 0x000000a8,0x000000a8,0x000000a8,0x000000a8,0x00000007,0x00050021,0x000000b1,0x0000004a, + 0x000000a8,0x00000007,0x00090021,0x000000c1,0x00000002,0x00000007,0x00000007,0x000000a8, + 0x00000007,0x00000007,0x00000007,0x00070021,0x000000ea,0x00000002,0x000000a8,0x00000007, + 0x00000007,0x00000007,0x00070021,0x000000f1,0x00000002,0x00000007,0x00000007,0x00000007, + 0x00000007,0x000a0021,0x000000f8,0x00000002,0x00000007,0x00000007,0x000000a8,0x00000007, + 0x00000007,0x00000007,0x00000007,0x00080021,0x00000102,0x00000002,0x000000a8,0x00000007, + 0x00000007,0x00000007,0x00000007,0x00090021,0x0000010a,0x00000002,0x000000a8,0x00000007, + 0x00000007,0x00000007,0x00000007,0x000000a8,0x00040017,0x00000113,0x00000006,0x00000003, + 0x00040020,0x00000114,0x00000007,0x00000113,0x00050021,0x00000115,0x00000002,0x00000114, + 0x00000007,0x0004002b,0x00000013,0x00000124,0x00000000,0x0004002b,0x00000006,0x0000013e, + 0x00000002,0x0004002b,0x00000006,0x0000013f,0x00000003,0x0004002b,0x00000006,0x00000145, + 0x00000001,0x0019001e,0x0000015c,0x0000002e,0x0000002e,0x0000002e,0x0000002e,0x0000002e, + 0x0000002e,0x0000004a,0x00000053,0x00000053,0x00000053,0x00000053,0x00000053,0x0000001a, + 0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a, + 0x0000001a,0x0000001a,0x00040020,0x0000015d,0x00000002,0x0000015c,0x0004003b,0x0000015d, + 0x0000015e,0x00000002,0x00040020,0x0000015f,0x00000002,0x0000002e,0x0004002b,0x00000013, + 0x00000164,0x0000000e,0x00040020,0x00000165,0x00000002,0x0000001a,0x0006001e,0x0000016a, + 0x00000006,0x00000006,0x00000029,0x00000029,0x00040020,0x0000016b,0x00000002,0x0000016a, + 0x0004003b,0x0000016b,0x0000016c,0x00000002,0x00040020,0x0000016d,0x00000002,0x00000006, + 0x0004002b,0x00000013,0x00000172,0x00000001,0x0004002b,0x00000013,0x00000177,0x00000002, + 0x00040020,0x00000178,0x00000002,0x00000029,0x00090019,0x0000017d,0x0000001a,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x0000017e,0x00000000, + 0x0000017d,0x0004003b,0x0000017e,0x0000017f,0x00000000,0x0004002b,0x00000006,0x00000183, + 0x00000000,0x00090019,0x00000187,0x0000001a,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000009,0x00040020,0x00000188,0x00000000,0x00000187,0x0004003b,0x00000188, + 0x00000189,0x00000000,0x0004002b,0x0000001a,0x0000018d,0x00000000,0x0004003b,0x0000017e, + 0x0000018f,0x00000000,0x00090019,0x00000196,0x0000001a,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000001,0x00040020,0x00000197,0x00000000,0x00000196,0x0004003b, + 0x00000197,0x00000198,0x00000000,0x0005002c,0x0000002e,0x0000019a,0x00000124,0x00000124, + 0x00090019,0x000001a4,0x0000001a,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x00000007,0x00040020,0x000001a5,0x00000000,0x000001a4,0x0004003b,0x000001a5,0x000001a6, + 0x00000000,0x0004003b,0x000001a5,0x000001b0,0x00000000,0x0004003b,0x000001a5,0x000001ba, + 0x00000000,0x0004003b,0x000001a5,0x000001c4,0x00000000,0x0004002b,0x00000006,0x000001cb, + 0x00000004,0x0004003b,0x000001a5,0x000001cf,0x00000000,0x0004002b,0x00000006,0x000001d6, + 0x00000005,0x0004003b,0x000001a5,0x000001da,0x00000000,0x0005002c,0x00000053,0x000001e0, + 0x0000018d,0x0000018d,0x00090019,0x0000021f,0x00000006,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000021,0x00040020,0x00000220,0x00000000,0x0000021f,0x0004003b, + 0x00000220,0x00000221,0x00000000,0x00040020,0x00000222,0x0000000b,0x00000006,0x00040017, + 0x00000226,0x00000006,0x00000004,0x0007002c,0x00000226,0x00000227,0x00000183,0x00000183, + 0x00000183,0x00000183,0x0004002b,0x0000001a,0x0000024b,0x42c80000,0x0004002b,0x0000001a, + 0x0000024d,0x41480000,0x0004002b,0x0000001a,0x00000251,0x3f99999a,0x0004002b,0x0000001a, + 0x00000252,0x40000000,0x0004002b,0x0000001a,0x00000258,0x3f800000,0x00040020,0x0000025d, + 0x00000004,0x00000006,0x0004003b,0x0000025d,0x0000025e,0x00000004,0x0004002b,0x0000001a, + 0x00000274,0x387fda40,0x0007002c,0x0000004a,0x0000027f,0x0000018d,0x0000018d,0x0000018d, + 0x0000018d,0x0004002b,0x0000001a,0x00000299,0x3e800000,0x00040017,0x000002bb,0x0000009d, + 0x00000002,0x0004002b,0x0000001a,0x000002cc,0x461c4000,0x0004002b,0x00000006,0x000002e9, + 0x00000010,0x0004001c,0x000002ea,0x0000001a,0x000002e9,0x0004001c,0x000002eb,0x000002ea, + 0x000002e9,0x00040020,0x000002ec,0x00000004,0x000002eb,0x0004003b,0x000002ec,0x000002ed, + 0x00000004,0x00040020,0x000002f0,0x00000004,0x0000001a,0x0004003b,0x000002ec,0x000002f3, + 0x00000004,0x0004003b,0x000002ec,0x000002f8,0x00000004,0x0004003b,0x000002ec,0x000002fd, + 0x00000004,0x0004002b,0x00000006,0x00000319,0x00000d48,0x0004002b,0x00000006,0x0000031a, + 0x00000108,0x0005002c,0x00000029,0x00000369,0x00000183,0x00000183,0x0005002c,0x00000029, + 0x0000036c,0x00000183,0x00000145,0x0005002c,0x00000029,0x0000036f,0x00000145,0x00000183, + 0x0005002c,0x00000029,0x00000372,0x00000145,0x00000145,0x0004002b,0x00000006,0x000003bb, + 0x00000040,0x0004002b,0x00000006,0x000003c9,0x00000020,0x0004001c,0x000003d3,0x0000004a, + 0x000001cb,0x00040020,0x000003d4,0x00000007,0x000003d3,0x0004002b,0x00000013,0x00000450, + 0x00000003,0x0004002b,0x00000006,0x000004a3,0x00000008,0x0004002b,0x00000006,0x000005da, + 0x00000006,0x0004002b,0x00000006,0x00000647,0x00000007,0x0004002b,0x00000013,0x000006c4, + 0x00000006,0x0004002b,0x00000013,0x000006cd,0x00000007,0x00040020,0x00000730,0x00000001, + 0x00000113,0x0004003b,0x00000730,0x00000731,0x00000001,0x00040020,0x00000732,0x00000001, + 0x00000006,0x0004003b,0x00000732,0x00000733,0x00000001,0x0004002b,0x0000001a,0x00000739, + 0x477fe000,0x0004002b,0x0000001a,0x0000073a,0x37801002,0x0002001a,0x0000073b,0x00040020, + 0x0000073c,0x00000000,0x0000073b,0x0004003b,0x0000073c,0x0000073d,0x00000000,0x0004003b, + 0x0000073c,0x0000073e,0x00000000,0x0004002b,0x0000001a,0x0000073f,0x7f7fffff,0x0004002b, + 0x0000001a,0x00000740,0x00800000,0x0004002b,0x0000001a,0x00000741,0x3a1fe868,0x0004002b, + 0x0000001a,0x00000742,0x3d800000,0x0004002b,0x0000001a,0x00000743,0x3d3d70a4,0x0004002b, + 0x0000001a,0x00000744,0x3e400000,0x0004002b,0x00000006,0x00000745,0x00000100,0x0006002c, + 0x00000113,0x00000746,0x00000745,0x00000145,0x00000145,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000114,0x00000734,0x00000007, + 0x0004003b,0x00000007,0x00000736,0x00000007,0x0004003d,0x00000113,0x00000735,0x00000731, + 0x0003003e,0x00000734,0x00000735,0x0004003d,0x00000006,0x00000737,0x00000733,0x0003003e, + 0x00000736,0x00000737,0x00060039,0x00000002,0x00000738,0x00000118,0x00000734,0x00000736, + 0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037, + 0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b, + 0x000200f8,0x0000000d,0x0004003d,0x00000006,0x0000011a,0x00000009,0x0004003d,0x00000006, + 0x0000011b,0x0000000a,0x0004007c,0x00000013,0x0000011c,0x0000011b,0x0004003d,0x00000006, + 0x0000011d,0x0000000b,0x0004007c,0x00000013,0x0000011e,0x0000011d,0x000600cb,0x00000006, + 0x0000011f,0x0000011a,0x0000011c,0x0000011e,0x000200fe,0x0000011f,0x00010038,0x00050036, + 0x00000006,0x00000011,0x00000000,0x00000008,0x00030037,0x00000007,0x0000000e,0x00030037, + 0x00000007,0x0000000f,0x00030037,0x00000007,0x00000010,0x000200f8,0x00000012,0x0004003d, + 0x00000006,0x00000122,0x0000000e,0x0004003d,0x00000006,0x00000123,0x0000000f,0x0004003d, + 0x00000006,0x00000125,0x00000010,0x0004007c,0x00000013,0x00000126,0x00000125,0x000700c9, + 0x00000006,0x00000127,0x00000122,0x00000123,0x00000124,0x00000126,0x000200fe,0x00000127, + 0x00010038,0x00050036,0x00000013,0x00000018,0x00000000,0x00000015,0x00030037,0x00000014, + 0x00000016,0x00030037,0x00000014,0x00000017,0x000200f8,0x00000019,0x0004003d,0x00000013, + 0x0000012a,0x00000016,0x0004003d,0x00000013,0x0000012b,0x00000017,0x0007000c,0x00000013, + 0x0000012c,0x00000001,0x00000027,0x0000012a,0x0000012b,0x000200fe,0x0000012c,0x00010038, + 0x00050036,0x0000001a,0x0000001f,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d, + 0x00030037,0x0000001b,0x0000001e,0x000200f8,0x00000020,0x0004003d,0x0000001a,0x0000012f, + 0x0000001d,0x0004003d,0x0000001a,0x00000130,0x0000001e,0x0007000c,0x0000001a,0x00000131, + 0x00000001,0x00000028,0x0000012f,0x00000130,0x000200fe,0x00000131,0x00010038,0x00050036, + 0x00000013,0x00000023,0x00000000,0x00000015,0x00030037,0x00000014,0x00000021,0x00030037, + 0x00000014,0x00000022,0x000200f8,0x00000024,0x0004003d,0x00000013,0x00000134,0x00000021, + 0x0004003d,0x00000013,0x00000135,0x00000022,0x0007000c,0x00000013,0x00000136,0x00000001, + 0x0000002a,0x00000134,0x00000135,0x000200fe,0x00000136,0x00010038,0x00050036,0x0000001a, + 0x00000027,0x00000000,0x0000001c,0x00030037,0x0000001b,0x00000025,0x00030037,0x0000001b, + 0x00000026,0x000200f8,0x00000028,0x0004003d,0x0000001a,0x00000139,0x00000025,0x0004003d, + 0x0000001a,0x0000013a,0x00000026,0x0007000c,0x0000001a,0x0000013b,0x00000001,0x0000001a, + 0x00000139,0x0000013a,0x000200fe,0x0000013b,0x00010038,0x00050036,0x00000029,0x0000002c, + 0x00000000,0x0000002a,0x00030037,0x00000007,0x0000002b,0x000200f8,0x0000002d,0x0004003b, + 0x00000007,0x00000140,0x00000007,0x0004003b,0x00000007,0x00000142,0x00000007,0x0004003b, + 0x00000007,0x00000143,0x00000007,0x0004003b,0x00000007,0x00000146,0x00000007,0x0004003b, + 0x00000007,0x00000147,0x00000007,0x0004003b,0x00000007,0x00000149,0x00000007,0x0004003b, + 0x00000007,0x0000014b,0x00000007,0x0004003b,0x00000007,0x0000014d,0x00000007,0x0004003b, + 0x00000007,0x0000014e,0x00000007,0x0004003b,0x00000007,0x00000150,0x00000007,0x0004003b, + 0x00000007,0x00000152,0x00000007,0x0004003b,0x00000007,0x00000153,0x00000007,0x0004003b, + 0x00000007,0x00000155,0x00000007,0x0004003b,0x00000007,0x00000156,0x00000007,0x0004003b, + 0x00000007,0x00000157,0x00000007,0x0004003d,0x00000006,0x00000141,0x0000002b,0x0003003e, + 0x00000140,0x00000141,0x0003003e,0x00000142,0x0000013e,0x0003003e,0x00000143,0x0000013f, + 0x00070039,0x00000006,0x00000144,0x0000000c,0x00000140,0x00000142,0x00000143,0x0003003e, + 0x00000146,0x00000144,0x0004003d,0x00000006,0x00000148,0x0000002b,0x0003003e,0x00000147, + 0x00000148,0x0003003e,0x00000149,0x00000145,0x00070039,0x00000006,0x0000014a,0x00000011, + 0x00000146,0x00000147,0x00000149,0x0004003d,0x00000006,0x0000014c,0x0000002b,0x0003003e, + 0x0000014b,0x0000014c,0x0003003e,0x0000014d,0x0000013f,0x0003003e,0x0000014e,0x0000013f, + 0x00070039,0x00000006,0x0000014f,0x0000000c,0x0000014b,0x0000014d,0x0000014e,0x0004003d, + 0x00000006,0x00000151,0x0000002b,0x0003003e,0x00000150,0x00000151,0x0003003e,0x00000152, + 0x00000145,0x0003003e,0x00000153,0x0000013e,0x00070039,0x00000006,0x00000154,0x0000000c, + 0x00000150,0x00000152,0x00000153,0x0003003e,0x00000155,0x0000014f,0x0003003e,0x00000156, + 0x00000154,0x0003003e,0x00000157,0x0000013e,0x00070039,0x00000006,0x00000158,0x00000011, + 0x00000155,0x00000156,0x00000157,0x00050050,0x00000029,0x00000159,0x0000014a,0x00000158, + 0x000200fe,0x00000159,0x00010038,0x00050036,0x0000002e,0x00000030,0x00000000,0x0000002f, + 0x000200f8,0x00000031,0x00050041,0x0000015f,0x00000160,0x0000015e,0x00000124,0x0004003d, + 0x0000002e,0x00000161,0x00000160,0x000200fe,0x00000161,0x00010038,0x00050036,0x0000001a, + 0x00000033,0x00000000,0x00000032,0x000200f8,0x00000034,0x00050041,0x00000165,0x00000166, + 0x0000015e,0x00000164,0x0004003d,0x0000001a,0x00000167,0x00000166,0x000200fe,0x00000167, + 0x00010038,0x00050036,0x00000006,0x00000036,0x00000000,0x00000035,0x000200f8,0x00000037, + 0x00050041,0x0000016d,0x0000016e,0x0000016c,0x00000124,0x0004003d,0x00000006,0x0000016f, + 0x0000016e,0x000200fe,0x0000016f,0x00010038,0x00050036,0x00000006,0x00000038,0x00000000, + 0x00000035,0x000200f8,0x00000039,0x00050041,0x0000016d,0x00000173,0x0000016c,0x00000172, + 0x0004003d,0x00000006,0x00000174,0x00000173,0x000200fe,0x00000174,0x00010038,0x00050036, + 0x00000029,0x0000003b,0x00000000,0x0000003a,0x000200f8,0x0000003c,0x00050041,0x00000178, + 0x00000179,0x0000016c,0x00000177,0x0004003d,0x00000029,0x0000017a,0x00000179,0x000200fe, + 0x0000017a,0x00010038,0x00050036,0x0000001a,0x00000040,0x00000000,0x0000003e,0x00030037, + 0x0000003d,0x0000003f,0x000200f8,0x00000041,0x0004003d,0x0000017d,0x00000180,0x0000017f, + 0x0004003d,0x0000002e,0x00000181,0x0000003f,0x0007005f,0x0000004a,0x00000182,0x00000180, + 0x00000181,0x00000002,0x00000124,0x00050051,0x0000001a,0x00000184,0x00000182,0x00000000, + 0x000200fe,0x00000184,0x00010038,0x00050036,0x00000002,0x00000045,0x00000000,0x00000042, + 0x00030037,0x0000003d,0x00000043,0x00030037,0x0000001b,0x00000044,0x000200f8,0x00000046, + 0x0004003d,0x00000187,0x0000018a,0x00000189,0x0004003d,0x0000002e,0x0000018b,0x00000043, + 0x0004003d,0x0000001a,0x0000018c,0x00000044,0x00070050,0x0000004a,0x0000018e,0x0000018c, + 0x0000018d,0x0000018d,0x0000018d,0x00040063,0x0000018a,0x0000018b,0x0000018e,0x000100fd, + 0x00010038,0x00050036,0x0000001a,0x00000048,0x00000000,0x0000003e,0x00030037,0x0000003d, + 0x00000047,0x000200f8,0x00000049,0x0004003d,0x0000017d,0x00000190,0x0000018f,0x0004003d, + 0x0000002e,0x00000191,0x00000047,0x0007005f,0x0000004a,0x00000192,0x00000190,0x00000191, + 0x00000002,0x00000124,0x00050051,0x0000001a,0x00000193,0x00000192,0x00000000,0x000200fe, + 0x00000193,0x00010038,0x00050036,0x0000004a,0x0000004c,0x00000000,0x0000004b,0x000200f8, + 0x0000004d,0x0004003d,0x00000196,0x00000199,0x00000198,0x00050062,0x0000004a,0x0000019b, + 0x00000199,0x0000019a,0x000200fe,0x0000019b,0x00010038,0x00050036,0x00000002,0x00000051, + 0x00000000,0x0000004f,0x00030037,0x0000004e,0x00000050,0x000200f8,0x00000052,0x0004003d, + 0x00000196,0x0000019e,0x00000198,0x0004003d,0x0000004a,0x0000019f,0x00000050,0x00040063, + 0x0000019e,0x0000019a,0x0000019f,0x000100fd,0x00010038,0x00050036,0x00000053,0x00000057, + 0x00000000,0x00000054,0x00030037,0x0000003d,0x00000055,0x00030037,0x00000007,0x00000056, + 0x000200f8,0x00000058,0x0004003d,0x00000006,0x000001a0,0x00000056,0x000500aa,0x0000009d, + 0x000001a1,0x000001a0,0x00000183,0x000300f7,0x000001a3,0x00000000,0x000400fa,0x000001a1, + 0x000001a2,0x000001a3,0x000200f8,0x000001a2,0x0004003d,0x000001a4,0x000001a7,0x000001a6, + 0x0004003d,0x0000002e,0x000001a8,0x00000055,0x00050062,0x0000004a,0x000001a9,0x000001a7, + 0x000001a8,0x0007004f,0x00000053,0x000001aa,0x000001a9,0x000001a9,0x00000000,0x00000001, + 0x000200fe,0x000001aa,0x000200f8,0x000001a3,0x0004003d,0x00000006,0x000001ac,0x00000056, + 0x000500aa,0x0000009d,0x000001ad,0x000001ac,0x00000145,0x000300f7,0x000001af,0x00000000, + 0x000400fa,0x000001ad,0x000001ae,0x000001af,0x000200f8,0x000001ae,0x0004003d,0x000001a4, + 0x000001b1,0x000001b0,0x0004003d,0x0000002e,0x000001b2,0x00000055,0x00050062,0x0000004a, + 0x000001b3,0x000001b1,0x000001b2,0x0007004f,0x00000053,0x000001b4,0x000001b3,0x000001b3, + 0x00000000,0x00000001,0x000200fe,0x000001b4,0x000200f8,0x000001af,0x0004003d,0x00000006, + 0x000001b6,0x00000056,0x000500aa,0x0000009d,0x000001b7,0x000001b6,0x0000013e,0x000300f7, + 0x000001b9,0x00000000,0x000400fa,0x000001b7,0x000001b8,0x000001b9,0x000200f8,0x000001b8, + 0x0004003d,0x000001a4,0x000001bb,0x000001ba,0x0004003d,0x0000002e,0x000001bc,0x00000055, + 0x00050062,0x0000004a,0x000001bd,0x000001bb,0x000001bc,0x0007004f,0x00000053,0x000001be, + 0x000001bd,0x000001bd,0x00000000,0x00000001,0x000200fe,0x000001be,0x000200f8,0x000001b9, + 0x0004003d,0x00000006,0x000001c0,0x00000056,0x000500aa,0x0000009d,0x000001c1,0x000001c0, + 0x0000013f,0x000300f7,0x000001c3,0x00000000,0x000400fa,0x000001c1,0x000001c2,0x000001c3, + 0x000200f8,0x000001c2,0x0004003d,0x000001a4,0x000001c5,0x000001c4,0x0004003d,0x0000002e, + 0x000001c6,0x00000055,0x00050062,0x0000004a,0x000001c7,0x000001c5,0x000001c6,0x0007004f, + 0x00000053,0x000001c8,0x000001c7,0x000001c7,0x00000000,0x00000001,0x000200fe,0x000001c8, + 0x000200f8,0x000001c3,0x0004003d,0x00000006,0x000001ca,0x00000056,0x000500aa,0x0000009d, + 0x000001cc,0x000001ca,0x000001cb,0x000300f7,0x000001ce,0x00000000,0x000400fa,0x000001cc, + 0x000001cd,0x000001ce,0x000200f8,0x000001cd,0x0004003d,0x000001a4,0x000001d0,0x000001cf, + 0x0004003d,0x0000002e,0x000001d1,0x00000055,0x00050062,0x0000004a,0x000001d2,0x000001d0, + 0x000001d1,0x0007004f,0x00000053,0x000001d3,0x000001d2,0x000001d2,0x00000000,0x00000001, + 0x000200fe,0x000001d3,0x000200f8,0x000001ce,0x0004003d,0x00000006,0x000001d5,0x00000056, + 0x000500aa,0x0000009d,0x000001d7,0x000001d5,0x000001d6,0x000300f7,0x000001d9,0x00000000, + 0x000400fa,0x000001d7,0x000001d8,0x000001d9,0x000200f8,0x000001d8,0x0004003d,0x000001a4, + 0x000001db,0x000001da,0x0004003d,0x0000002e,0x000001dc,0x00000055,0x00050062,0x0000004a, + 0x000001dd,0x000001db,0x000001dc,0x0007004f,0x00000053,0x000001de,0x000001dd,0x000001dd, + 0x00000000,0x00000001,0x000200fe,0x000001de,0x000200f8,0x000001d9,0x000200fe,0x000001e0, + 0x00010038,0x00050036,0x00000002,0x0000005e,0x00000000,0x0000005a,0x00030037,0x0000003d, + 0x0000005b,0x00030037,0x00000059,0x0000005c,0x00030037,0x00000007,0x0000005d,0x000200f8, + 0x0000005f,0x0004003d,0x00000006,0x000001e3,0x0000005d,0x000500aa,0x0000009d,0x000001e4, + 0x000001e3,0x00000183,0x000300f7,0x000001e6,0x00000000,0x000400fa,0x000001e4,0x000001e5, + 0x000001e6,0x000200f8,0x000001e5,0x0004003d,0x000001a4,0x000001e7,0x000001a6,0x0004003d, + 0x0000002e,0x000001e8,0x0000005b,0x0004003d,0x00000053,0x000001e9,0x0000005c,0x00050051, + 0x0000001a,0x000001ea,0x000001e9,0x00000000,0x00050051,0x0000001a,0x000001eb,0x000001e9, + 0x00000001,0x00070050,0x0000004a,0x000001ec,0x000001ea,0x000001eb,0x0000018d,0x0000018d, + 0x00040063,0x000001e7,0x000001e8,0x000001ec,0x000200f9,0x000001e6,0x000200f8,0x000001e6, + 0x0004003d,0x00000006,0x000001ed,0x0000005d,0x000500aa,0x0000009d,0x000001ee,0x000001ed, + 0x00000145,0x000300f7,0x000001f0,0x00000000,0x000400fa,0x000001ee,0x000001ef,0x000001f0, + 0x000200f8,0x000001ef,0x0004003d,0x000001a4,0x000001f1,0x000001b0,0x0004003d,0x0000002e, + 0x000001f2,0x0000005b,0x0004003d,0x00000053,0x000001f3,0x0000005c,0x00050051,0x0000001a, + 0x000001f4,0x000001f3,0x00000000,0x00050051,0x0000001a,0x000001f5,0x000001f3,0x00000001, + 0x00070050,0x0000004a,0x000001f6,0x000001f4,0x000001f5,0x0000018d,0x0000018d,0x00040063, + 0x000001f1,0x000001f2,0x000001f6,0x000200f9,0x000001f0,0x000200f8,0x000001f0,0x0004003d, + 0x00000006,0x000001f7,0x0000005d,0x000500aa,0x0000009d,0x000001f8,0x000001f7,0x0000013e, + 0x000300f7,0x000001fa,0x00000000,0x000400fa,0x000001f8,0x000001f9,0x000001fa,0x000200f8, + 0x000001f9,0x0004003d,0x000001a4,0x000001fb,0x000001ba,0x0004003d,0x0000002e,0x000001fc, + 0x0000005b,0x0004003d,0x00000053,0x000001fd,0x0000005c,0x00050051,0x0000001a,0x000001fe, + 0x000001fd,0x00000000,0x00050051,0x0000001a,0x000001ff,0x000001fd,0x00000001,0x00070050, + 0x0000004a,0x00000200,0x000001fe,0x000001ff,0x0000018d,0x0000018d,0x00040063,0x000001fb, + 0x000001fc,0x00000200,0x000200f9,0x000001fa,0x000200f8,0x000001fa,0x0004003d,0x00000006, + 0x00000201,0x0000005d,0x000500aa,0x0000009d,0x00000202,0x00000201,0x0000013f,0x000300f7, + 0x00000204,0x00000000,0x000400fa,0x00000202,0x00000203,0x00000204,0x000200f8,0x00000203, + 0x0004003d,0x000001a4,0x00000205,0x000001c4,0x0004003d,0x0000002e,0x00000206,0x0000005b, + 0x0004003d,0x00000053,0x00000207,0x0000005c,0x00050051,0x0000001a,0x00000208,0x00000207, + 0x00000000,0x00050051,0x0000001a,0x00000209,0x00000207,0x00000001,0x00070050,0x0000004a, + 0x0000020a,0x00000208,0x00000209,0x0000018d,0x0000018d,0x00040063,0x00000205,0x00000206, + 0x0000020a,0x000200f9,0x00000204,0x000200f8,0x00000204,0x0004003d,0x00000006,0x0000020b, + 0x0000005d,0x000500aa,0x0000009d,0x0000020c,0x0000020b,0x000001cb,0x000300f7,0x0000020e, + 0x00000000,0x000400fa,0x0000020c,0x0000020d,0x0000020e,0x000200f8,0x0000020d,0x0004003d, + 0x000001a4,0x0000020f,0x000001cf,0x0004003d,0x0000002e,0x00000210,0x0000005b,0x0004003d, + 0x00000053,0x00000211,0x0000005c,0x00050051,0x0000001a,0x00000212,0x00000211,0x00000000, + 0x00050051,0x0000001a,0x00000213,0x00000211,0x00000001,0x00070050,0x0000004a,0x00000214, + 0x00000212,0x00000213,0x0000018d,0x0000018d,0x00040063,0x0000020f,0x00000210,0x00000214, + 0x000200f9,0x0000020e,0x000200f8,0x0000020e,0x0004003d,0x00000006,0x00000215,0x0000005d, + 0x000500aa,0x0000009d,0x00000216,0x00000215,0x000001d6,0x000300f7,0x00000218,0x00000000, + 0x000400fa,0x00000216,0x00000217,0x00000218,0x000200f8,0x00000217,0x0004003d,0x000001a4, + 0x00000219,0x000001da,0x0004003d,0x0000002e,0x0000021a,0x0000005b,0x0004003d,0x00000053, + 0x0000021b,0x0000005c,0x00050051,0x0000001a,0x0000021c,0x0000021b,0x00000000,0x00050051, + 0x0000001a,0x0000021d,0x0000021b,0x00000001,0x00070050,0x0000004a,0x0000021e,0x0000021c, + 0x0000021d,0x0000018d,0x0000018d,0x00040063,0x00000219,0x0000021a,0x0000021e,0x000200f9, + 0x00000218,0x000200f8,0x00000218,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000062, + 0x00000000,0x00000060,0x00030037,0x00000007,0x00000061,0x000200f8,0x00000063,0x0006003c, + 0x00000222,0x00000223,0x00000221,0x0000019a,0x00000183,0x000700ea,0x00000006,0x00000224, + 0x00000223,0x00000145,0x00000183,0x00000145,0x0003003e,0x00000061,0x00000224,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x00000064,0x00000000,0x00000003,0x000200f8,0x00000065, + 0x0004003d,0x0000021f,0x00000225,0x00000221,0x00040063,0x00000225,0x0000019a,0x00000227, + 0x000100fd,0x00010038,0x00050036,0x0000002e,0x0000006a,0x00000000,0x00000066,0x00030037, + 0x0000003d,0x00000067,0x00030037,0x0000003d,0x00000068,0x00030037,0x0000003d,0x00000069, + 0x000200f8,0x0000006b,0x0004003b,0x0000003d,0x00000228,0x00000007,0x0004003b,0x00000014, + 0x0000022f,0x00000007,0x0004003b,0x00000014,0x00000232,0x00000007,0x0004003b,0x00000014, + 0x00000234,0x00000007,0x0004003b,0x00000014,0x00000235,0x00000007,0x0004003b,0x00000014, + 0x0000023b,0x00000007,0x0004003b,0x00000014,0x0000023e,0x00000007,0x0004003b,0x00000014, + 0x00000240,0x00000007,0x0004003b,0x00000014,0x00000241,0x00000007,0x0004003d,0x0000002e, + 0x00000229,0x00000067,0x0004003d,0x0000002e,0x0000022a,0x00000068,0x00050080,0x0000002e, + 0x0000022b,0x00000229,0x0000022a,0x0003003e,0x00000228,0x0000022b,0x00050041,0x00000014, + 0x0000022c,0x00000069,0x00000183,0x0004003d,0x00000013,0x0000022d,0x0000022c,0x00050082, + 0x00000013,0x0000022e,0x0000022d,0x00000172,0x00050041,0x00000014,0x00000230,0x00000228, + 0x00000183,0x0004003d,0x00000013,0x00000231,0x00000230,0x0003003e,0x0000022f,0x00000231, + 0x0003003e,0x00000232,0x0000022e,0x00060039,0x00000013,0x00000233,0x00000018,0x0000022f, + 0x00000232,0x0003003e,0x00000234,0x00000124,0x0003003e,0x00000235,0x00000233,0x00060039, + 0x00000013,0x00000236,0x00000023,0x00000234,0x00000235,0x00050041,0x00000014,0x00000237, + 0x00000228,0x00000183,0x0003003e,0x00000237,0x00000236,0x00050041,0x00000014,0x00000238, + 0x00000069,0x00000145,0x0004003d,0x00000013,0x00000239,0x00000238,0x00050082,0x00000013, + 0x0000023a,0x00000239,0x00000172,0x00050041,0x00000014,0x0000023c,0x00000228,0x00000145, + 0x0004003d,0x00000013,0x0000023d,0x0000023c,0x0003003e,0x0000023b,0x0000023d,0x0003003e, + 0x0000023e,0x0000023a,0x00060039,0x00000013,0x0000023f,0x00000018,0x0000023b,0x0000023e, + 0x0003003e,0x00000240,0x00000124,0x0003003e,0x00000241,0x0000023f,0x00060039,0x00000013, + 0x00000242,0x00000023,0x00000240,0x00000241,0x00050041,0x00000014,0x00000243,0x00000228, + 0x00000145,0x0003003e,0x00000243,0x00000242,0x0004003d,0x0000002e,0x00000244,0x00000228, + 0x000200fe,0x00000244,0x00010038,0x00050036,0x0000001a,0x0000006e,0x00000000,0x0000006c, + 0x00030037,0x0000001b,0x0000006d,0x000200f8,0x0000006f,0x0004003b,0x0000001b,0x00000249, + 0x00000007,0x0004003b,0x0000001b,0x00000250,0x00000007,0x0004003b,0x0000001b,0x00000253, + 0x00000007,0x0004003b,0x0000001b,0x00000254,0x00000007,0x0004003d,0x0000001a,0x00000247, + 0x0000006d,0x0006000c,0x0000001a,0x00000248,0x00000001,0x0000001b,0x00000247,0x0003003e, + 0x0000006d,0x00000248,0x0004003d,0x0000001a,0x0000024a,0x0000006d,0x00050085,0x0000001a, + 0x0000024c,0x0000024a,0x0000024b,0x00050088,0x0000001a,0x0000024e,0x0000024c,0x0000024d, + 0x0006000c,0x0000001a,0x0000024f,0x00000001,0x0000001e,0x0000024e,0x0003003e,0x00000249, + 0x0000024f,0x0003003e,0x00000253,0x00000252,0x0004003d,0x0000001a,0x00000255,0x00000249, + 0x0003003e,0x00000254,0x00000255,0x00060039,0x0000001a,0x00000256,0x00000027,0x00000253, + 0x00000254,0x00050085,0x0000001a,0x00000257,0x00000251,0x00000256,0x0003003e,0x00000250, + 0x00000257,0x0004003d,0x0000001a,0x00000259,0x00000250,0x00050088,0x0000001a,0x0000025a, + 0x00000258,0x00000259,0x000200fe,0x0000025a,0x00010038,0x00050036,0x00000002,0x00000071, + 0x00000000,0x00000060,0x00030037,0x00000007,0x00000070,0x000200f8,0x00000072,0x0004003b, + 0x00000007,0x0000025f,0x00000007,0x0004003d,0x00000006,0x00000260,0x0000025e,0x0003003e, + 0x0000025f,0x00000260,0x00050039,0x00000002,0x00000261,0x00000062,0x0000025f,0x0004003d, + 0x00000006,0x00000262,0x0000025f,0x0003003e,0x0000025e,0x00000262,0x000100fd,0x00010038, + 0x00050036,0x00000006,0x00000073,0x00000000,0x00000035,0x000200f8,0x00000074,0x0004003d, + 0x00000006,0x00000263,0x0000025e,0x000200fe,0x00000263,0x00010038,0x00050036,0x00000002, + 0x00000076,0x00000000,0x00000060,0x00030037,0x00000007,0x00000075,0x000200f8,0x00000077, + 0x00040039,0x00000002,0x00000266,0x00000064,0x000100fd,0x00010038,0x00050036,0x0000004a, + 0x0000007b,0x00000000,0x00000078,0x00030037,0x00000059,0x00000079,0x00030037,0x00000007, + 0x0000007a,0x000200f8,0x0000007c,0x0004003b,0x0000003d,0x00000267,0x00000007,0x0004003b, + 0x0000003d,0x0000026b,0x00000007,0x0004003b,0x0000003d,0x0000026c,0x00000007,0x0004003b, + 0x0000003d,0x0000026d,0x00000007,0x0004003b,0x0000001b,0x0000026f,0x00000007,0x0004003b, + 0x0000003d,0x00000270,0x00000007,0x0004003b,0x0000001b,0x00000273,0x00000007,0x0004003b, + 0x0000001b,0x00000277,0x00000007,0x0004003b,0x0000001b,0x00000278,0x00000007,0x0004003b, + 0x0000001b,0x0000027a,0x00000007,0x0004003b,0x0000003d,0x0000027b,0x00000007,0x0004003b, + 0x0000004e,0x0000027e,0x00000007,0x0004003d,0x00000053,0x00000268,0x00000079,0x0004006e, + 0x0000002e,0x00000269,0x00000268,0x00040039,0x0000002e,0x0000026a,0x00000030,0x0003003e, + 0x0000026b,0x00000269,0x0003003e,0x0000026c,0x0000019a,0x0003003e,0x0000026d,0x0000026a, + 0x00070039,0x0000002e,0x0000026e,0x0000006a,0x0000026b,0x0000026c,0x0000026d,0x0003003e, + 0x00000267,0x0000026e,0x0004003d,0x0000002e,0x00000271,0x00000267,0x0003003e,0x00000270, + 0x00000271,0x00050039,0x0000001a,0x00000272,0x00000048,0x00000270,0x0003003e,0x0000026f, + 0x00000272,0x0004003d,0x0000001a,0x00000275,0x0000026f,0x0006000c,0x0000001a,0x00000276, + 0x00000001,0x0000001c,0x00000275,0x0003003e,0x00000277,0x00000274,0x0003003e,0x00000278, + 0x00000276,0x00060039,0x0000001a,0x00000279,0x0000001f,0x00000277,0x00000278,0x0003003e, + 0x00000273,0x00000279,0x0004003d,0x0000002e,0x0000027c,0x00000267,0x0003003e,0x0000027b, + 0x0000027c,0x00050039,0x0000001a,0x0000027d,0x00000040,0x0000027b,0x0003003e,0x0000027a, + 0x0000027d,0x0003003e,0x0000027e,0x0000027f,0x0004003d,0x0000001a,0x00000280,0x00000273, + 0x00050041,0x0000001b,0x00000281,0x0000027e,0x00000183,0x0003003e,0x00000281,0x00000280, + 0x0004003d,0x0000001a,0x00000282,0x0000026f,0x00050041,0x0000001b,0x00000283,0x0000027e, + 0x00000145,0x0003003e,0x00000283,0x00000282,0x0004003d,0x0000001a,0x00000284,0x0000027a, + 0x00050041,0x0000001b,0x00000285,0x0000027e,0x0000013e,0x0003003e,0x00000285,0x00000284, + 0x0004003d,0x0000004a,0x00000286,0x0000027e,0x000200fe,0x00000286,0x00010038,0x00050036, + 0x0000004a,0x00000080,0x00000000,0x0000007d,0x00030037,0x0000003d,0x0000007e,0x00030037, + 0x00000007,0x0000007f,0x000200f8,0x00000081,0x0004003b,0x0000003d,0x00000289,0x00000007, + 0x0004003b,0x00000007,0x0000028b,0x00000007,0x0004003d,0x0000002e,0x0000028a,0x0000007e, + 0x0003003e,0x00000289,0x0000028a,0x0003003e,0x0000028b,0x000001d6,0x00060039,0x00000053, + 0x0000028c,0x00000057,0x00000289,0x0000028b,0x00050051,0x0000001a,0x0000028d,0x0000028c, + 0x00000000,0x00050051,0x0000001a,0x0000028e,0x0000028c,0x00000001,0x00070050,0x0000004a, + 0x0000028f,0x0000028d,0x0000028e,0x0000018d,0x0000018d,0x000200fe,0x0000028f,0x00010038, + 0x00050036,0x0000004a,0x00000087,0x00000000,0x00000082,0x00030037,0x0000004e,0x00000083, + 0x00030037,0x0000004e,0x00000084,0x00030037,0x0000004e,0x00000085,0x00030037,0x0000004e, + 0x00000086,0x000200f8,0x00000088,0x0004003d,0x0000004a,0x00000292,0x00000083,0x0004003d, + 0x0000004a,0x00000293,0x00000084,0x00050081,0x0000004a,0x00000294,0x00000292,0x00000293, + 0x0004003d,0x0000004a,0x00000295,0x00000085,0x00050081,0x0000004a,0x00000296,0x00000294, + 0x00000295,0x0004003d,0x0000004a,0x00000297,0x00000086,0x00050081,0x0000004a,0x00000298, + 0x00000296,0x00000297,0x0005008e,0x0000004a,0x0000029a,0x00000298,0x00000299,0x000200fe, + 0x0000029a,0x00010038,0x00050036,0x00000002,0x0000008e,0x00000000,0x00000089,0x00030037, + 0x0000003d,0x0000008a,0x00030037,0x0000004e,0x0000008b,0x00030037,0x00000007,0x0000008c, + 0x00030037,0x00000007,0x0000008d,0x000200f8,0x0000008f,0x0004003b,0x0000003d,0x000002a1, + 0x00000007,0x0004003b,0x00000059,0x000002a3,0x00000007,0x0004003b,0x00000007,0x000002a6, + 0x00000007,0x0004003b,0x0000003d,0x000002ae,0x00000007,0x0004003b,0x0000001b,0x000002b0, + 0x00000007,0x0004003b,0x0000004e,0x000002c0,0x00000007,0x0004003b,0x0000001b,0x000002c2, + 0x00000007,0x0004003b,0x0000001b,0x000002c5,0x00000007,0x0004003b,0x0000001b,0x000002c8, + 0x00000007,0x0004003b,0x0000001b,0x000002da,0x00000007,0x0004003b,0x0000001b,0x000002db, + 0x00000007,0x0004003b,0x0000001b,0x000002de,0x00000007,0x0004003b,0x0000004e,0x000002e6, + 0x00000007,0x0004003d,0x00000006,0x0000029d,0x0000008c,0x000500aa,0x0000009d,0x0000029e, + 0x0000029d,0x000001d6,0x000300f7,0x000002a0,0x00000000,0x000400fa,0x0000029e,0x0000029f, + 0x000002a9,0x000200f8,0x0000029f,0x0004003d,0x0000002e,0x000002a2,0x0000008a,0x0003003e, + 0x000002a1,0x000002a2,0x0004003d,0x0000004a,0x000002a4,0x0000008b,0x0007004f,0x00000053, + 0x000002a5,0x000002a4,0x000002a4,0x00000000,0x00000001,0x0003003e,0x000002a3,0x000002a5, + 0x0004003d,0x00000006,0x000002a7,0x0000008c,0x0003003e,0x000002a6,0x000002a7,0x00070039, + 0x00000002,0x000002a8,0x0000005e,0x000002a1,0x000002a3,0x000002a6,0x000200f9,0x000002a0, + 0x000200f8,0x000002a9,0x0004003d,0x00000006,0x000002aa,0x0000008c,0x000500aa,0x0000009d, + 0x000002ab,0x000002aa,0x00000183,0x000300f7,0x000002ad,0x00000000,0x000400fa,0x000002ab, + 0x000002ac,0x000002ad,0x000200f8,0x000002ac,0x0004003d,0x0000002e,0x000002af,0x0000008a, + 0x0003003e,0x000002ae,0x000002af,0x00050041,0x0000001b,0x000002b1,0x0000008b,0x0000013e, + 0x0004003d,0x0000001a,0x000002b2,0x000002b1,0x0003003e,0x000002b0,0x000002b2,0x00060039, + 0x00000002,0x000002b3,0x00000045,0x000002ae,0x000002b0,0x000200f9,0x000002ad,0x000200f8, + 0x000002ad,0x000200f9,0x000002a0,0x000200f8,0x000002a0,0x0004003d,0x00000006,0x000002b4, + 0x0000008c,0x00040039,0x00000006,0x000002b5,0x00000036,0x00050082,0x00000006,0x000002b6, + 0x000002b5,0x00000145,0x000500aa,0x0000009d,0x000002b7,0x000002b4,0x000002b6,0x000300f7, + 0x000002b9,0x00000000,0x000400fa,0x000002b7,0x000002b8,0x000002b9,0x000200f8,0x000002b8, + 0x0004003d,0x0000002e,0x000002ba,0x0000008a,0x000500aa,0x000002bb,0x000002bc,0x000002ba, + 0x0000019a,0x0004009b,0x0000009d,0x000002bd,0x000002bc,0x000300f7,0x000002bf,0x00000000, + 0x000400fa,0x000002bd,0x000002be,0x000002bf,0x000200f8,0x000002be,0x00040039,0x0000004a, + 0x000002c1,0x0000004c,0x0003003e,0x000002c0,0x000002c1,0x00050041,0x0000001b,0x000002c3, + 0x0000008b,0x00000145,0x0004003d,0x0000001a,0x000002c4,0x000002c3,0x0003003e,0x000002c2, + 0x000002c4,0x00050041,0x0000001b,0x000002c6,0x000002c0,0x00000145,0x0004003d,0x0000001a, + 0x000002c7,0x000002c6,0x0003003e,0x000002c5,0x000002c7,0x00050041,0x0000001b,0x000002c9, + 0x0000008b,0x00000183,0x0004003d,0x0000001a,0x000002ca,0x000002c9,0x0003003e,0x000002c8, + 0x000002ca,0x0004003d,0x0000001a,0x000002cb,0x000002c5,0x000500b8,0x0000009d,0x000002cd, + 0x000002cb,0x000002cc,0x000300f7,0x000002cf,0x00000000,0x000400fa,0x000002cd,0x000002ce, + 0x000002cf,0x000200f8,0x000002ce,0x0004003d,0x0000001a,0x000002d0,0x000002c5,0x0004003d, + 0x0000001a,0x000002d1,0x000002c8,0x0004003d,0x0000001a,0x000002d2,0x000002c5,0x00050083, + 0x0000001a,0x000002d3,0x000002d1,0x000002d2,0x00040039,0x0000001a,0x000002d4,0x00000033, + 0x0004007f,0x0000001a,0x000002d5,0x000002d4,0x0006000c,0x0000001a,0x000002d6,0x00000001, + 0x0000001b,0x000002d5,0x00050083,0x0000001a,0x000002d7,0x00000258,0x000002d6,0x00050085, + 0x0000001a,0x000002d8,0x000002d3,0x000002d7,0x00050081,0x0000001a,0x000002d9,0x000002d0, + 0x000002d8,0x0003003e,0x000002c8,0x000002d9,0x0003003e,0x000002da,0x0000018d,0x0004003d, + 0x0000001a,0x000002dc,0x000002c8,0x0003003e,0x000002db,0x000002dc,0x00060039,0x0000001a, + 0x000002dd,0x0000001f,0x000002da,0x000002db,0x0003003e,0x000002c8,0x000002dd,0x000200f9, + 0x000002cf,0x000200f8,0x000002cf,0x0004003d,0x0000001a,0x000002df,0x000002c8,0x0003003e, + 0x000002de,0x000002df,0x00050039,0x0000001a,0x000002e0,0x0000006e,0x000002de,0x00050041, + 0x0000001b,0x000002e1,0x000002c0,0x00000183,0x0003003e,0x000002e1,0x000002e0,0x0004003d, + 0x0000001a,0x000002e2,0x000002c8,0x00050041,0x0000001b,0x000002e3,0x000002c0,0x00000145, + 0x0003003e,0x000002e3,0x000002e2,0x0004003d,0x0000001a,0x000002e4,0x000002c2,0x00050041, + 0x0000001b,0x000002e5,0x000002c0,0x0000013e,0x0003003e,0x000002e5,0x000002e4,0x0004003d, + 0x0000004a,0x000002e7,0x000002c0,0x0003003e,0x000002e6,0x000002e7,0x00050039,0x00000002, + 0x000002e8,0x00000051,0x000002e6,0x000200f9,0x000002bf,0x000200f8,0x000002bf,0x000200f9, + 0x000002b9,0x000200f8,0x000002b9,0x000100fd,0x00010038,0x00050036,0x0000004a,0x00000093, + 0x00000000,0x00000090,0x00030037,0x00000007,0x00000091,0x00030037,0x00000007,0x00000092, + 0x000200f8,0x00000094,0x0004003d,0x00000006,0x000002ee,0x00000091,0x0004003d,0x00000006, + 0x000002ef,0x00000092,0x00060041,0x000002f0,0x000002f1,0x000002ed,0x000002ee,0x000002ef, + 0x0004003d,0x0000001a,0x000002f2,0x000002f1,0x0004003d,0x00000006,0x000002f4,0x00000091, + 0x0004003d,0x00000006,0x000002f5,0x00000092,0x00060041,0x000002f0,0x000002f6,0x000002f3, + 0x000002f4,0x000002f5,0x0004003d,0x0000001a,0x000002f7,0x000002f6,0x0004003d,0x00000006, + 0x000002f9,0x00000091,0x0004003d,0x00000006,0x000002fa,0x00000092,0x00060041,0x000002f0, + 0x000002fb,0x000002f8,0x000002f9,0x000002fa,0x0004003d,0x0000001a,0x000002fc,0x000002fb, + 0x0004003d,0x00000006,0x000002fe,0x00000091,0x0004003d,0x00000006,0x000002ff,0x00000092, + 0x00060041,0x000002f0,0x00000300,0x000002fd,0x000002fe,0x000002ff,0x0004003d,0x0000001a, + 0x00000301,0x00000300,0x00070050,0x0000004a,0x00000302,0x000002f2,0x000002f7,0x000002fc, + 0x00000301,0x000200fe,0x00000302,0x00010038,0x00050036,0x00000002,0x00000099,0x00000000, + 0x00000095,0x00030037,0x00000007,0x00000096,0x00030037,0x00000007,0x00000097,0x00030037, + 0x0000004e,0x00000098,0x000200f8,0x0000009a,0x0004003d,0x00000006,0x00000305,0x00000096, + 0x0004003d,0x00000006,0x00000306,0x00000097,0x00050041,0x0000001b,0x00000307,0x00000098, + 0x00000183,0x0004003d,0x0000001a,0x00000308,0x00000307,0x00060041,0x000002f0,0x00000309, + 0x000002ed,0x00000305,0x00000306,0x0003003e,0x00000309,0x00000308,0x0004003d,0x00000006, + 0x0000030a,0x00000096,0x0004003d,0x00000006,0x0000030b,0x00000097,0x00050041,0x0000001b, + 0x0000030c,0x00000098,0x00000145,0x0004003d,0x0000001a,0x0000030d,0x0000030c,0x00060041, + 0x000002f0,0x0000030e,0x000002f3,0x0000030a,0x0000030b,0x0003003e,0x0000030e,0x0000030d, + 0x0004003d,0x00000006,0x0000030f,0x00000096,0x0004003d,0x00000006,0x00000310,0x00000097, + 0x00050041,0x0000001b,0x00000311,0x00000098,0x0000013e,0x0004003d,0x0000001a,0x00000312, + 0x00000311,0x00060041,0x000002f0,0x00000313,0x000002f8,0x0000030f,0x00000310,0x0003003e, + 0x00000313,0x00000312,0x0004003d,0x00000006,0x00000314,0x00000096,0x0004003d,0x00000006, + 0x00000315,0x00000097,0x00050041,0x0000001b,0x00000316,0x00000098,0x0000013f,0x0004003d, + 0x0000001a,0x00000317,0x00000316,0x00060041,0x000002f0,0x00000318,0x000002fd,0x00000314, + 0x00000315,0x0003003e,0x00000318,0x00000317,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x0000009b,0x00000000,0x00000003,0x000200f8,0x0000009c,0x000300e1,0x0000013e,0x00000319, + 0x000400e0,0x0000013e,0x0000013e,0x0000031a,0x000100fd,0x00010038,0x00050036,0x0000009d, + 0x000000a2,0x00000000,0x0000009e,0x00030037,0x00000007,0x0000009f,0x00030037,0x00000007, + 0x000000a0,0x00030037,0x00000007,0x000000a1,0x000200f8,0x000000a3,0x0004003b,0x00000007, + 0x0000031f,0x00000007,0x0004003d,0x00000006,0x0000031b,0x000000a0,0x000500aa,0x0000009d, + 0x0000031c,0x0000031b,0x00000183,0x000300f7,0x0000031e,0x00000000,0x000400fa,0x0000031c, + 0x0000031d,0x0000031e,0x000200f8,0x0000031d,0x0004003d,0x00000006,0x00000320,0x000000a1, + 0x0003003e,0x0000031f,0x00000320,0x00050039,0x00000002,0x00000321,0x00000071,0x0000031f, + 0x000200f9,0x0000031e,0x000200f8,0x0000031e,0x00040039,0x00000002,0x00000322,0x0000009b, + 0x00040039,0x00000006,0x00000323,0x00000073,0x0004003d,0x00000006,0x00000324,0x0000009f, + 0x00050082,0x00000006,0x00000325,0x00000324,0x00000145,0x000500ab,0x0000009d,0x00000326, + 0x00000323,0x00000325,0x000200fe,0x00000326,0x00010038,0x00050036,0x0000004a,0x000000a6, + 0x00000000,0x000000a4,0x00030037,0x0000004e,0x000000a5,0x000200f8,0x000000a7,0x0004003b, + 0x0000004e,0x00000329,0x00000007,0x0004003b,0x0000004e,0x0000032b,0x00000007,0x0004003b, + 0x0000004e,0x0000032e,0x00000007,0x0004003b,0x0000004e,0x00000331,0x00000007,0x0004003b, + 0x0000004e,0x00000334,0x00000007,0x0004003b,0x0000004e,0x00000336,0x00000007,0x0004003b, + 0x0000004e,0x00000338,0x00000007,0x0004003b,0x0000004e,0x0000033a,0x00000007,0x0004003d, + 0x0000004a,0x0000032a,0x000000a5,0x0003003e,0x00000329,0x0000032a,0x0004003d,0x0000004a, + 0x0000032c,0x000000a5,0x0006016e,0x0000004a,0x0000032d,0x0000013f,0x0000032c,0x00000183, + 0x0003003e,0x0000032b,0x0000032d,0x0004003d,0x0000004a,0x0000032f,0x000000a5,0x0006016e, + 0x0000004a,0x00000330,0x0000013f,0x0000032f,0x00000145,0x0003003e,0x0000032e,0x00000330, + 0x0004003d,0x0000004a,0x00000332,0x000000a5,0x0006016e,0x0000004a,0x00000333,0x0000013f, + 0x00000332,0x0000013e,0x0003003e,0x00000331,0x00000333,0x0004003d,0x0000004a,0x00000335, + 0x00000329,0x0003003e,0x00000334,0x00000335,0x0004003d,0x0000004a,0x00000337,0x0000032b, + 0x0003003e,0x00000336,0x00000337,0x0004003d,0x0000004a,0x00000339,0x0000032e,0x0003003e, + 0x00000338,0x00000339,0x0004003d,0x0000004a,0x0000033b,0x00000331,0x0003003e,0x0000033a, + 0x0000033b,0x00080039,0x0000004a,0x0000033c,0x00000087,0x00000334,0x00000336,0x00000338, + 0x0000033a,0x000200fe,0x0000033c,0x00010038,0x00050036,0x0000004a,0x000000af,0x00000000, + 0x000000a9,0x00030037,0x000000a8,0x000000aa,0x00030037,0x000000a8,0x000000ab,0x00030037, + 0x000000a8,0x000000ac,0x00030037,0x000000a8,0x000000ad,0x00030037,0x00000007,0x000000ae, + 0x000200f8,0x000000b0,0x0004003b,0x0000004e,0x00000341,0x00000007,0x0004003b,0x0000003d, + 0x00000344,0x00000007,0x0004003b,0x00000007,0x00000345,0x00000007,0x0004003b,0x0000004e, + 0x00000348,0x00000007,0x0004003b,0x0000003d,0x0000034b,0x00000007,0x0004003b,0x00000007, + 0x0000034c,0x00000007,0x0004003b,0x0000004e,0x0000034f,0x00000007,0x0004003b,0x0000003d, + 0x00000352,0x00000007,0x0004003b,0x00000007,0x00000353,0x00000007,0x0004003b,0x0000004e, + 0x00000356,0x00000007,0x0004003b,0x0000003d,0x00000359,0x00000007,0x0004003b,0x00000007, + 0x0000035a,0x00000007,0x0004003b,0x0000004e,0x0000035d,0x00000007,0x0004003b,0x0000004e, + 0x0000035f,0x00000007,0x0004003b,0x0000004e,0x00000361,0x00000007,0x0004003b,0x0000004e, + 0x00000363,0x00000007,0x0004003d,0x00000029,0x00000342,0x000000aa,0x0004007c,0x0000002e, + 0x00000343,0x00000342,0x0003003e,0x00000344,0x00000343,0x0004003d,0x00000006,0x00000346, + 0x000000ae,0x0003003e,0x00000345,0x00000346,0x00060039,0x0000004a,0x00000347,0x00000080, + 0x00000344,0x00000345,0x0003003e,0x00000341,0x00000347,0x0004003d,0x00000029,0x00000349, + 0x000000ab,0x0004007c,0x0000002e,0x0000034a,0x00000349,0x0003003e,0x0000034b,0x0000034a, + 0x0004003d,0x00000006,0x0000034d,0x000000ae,0x0003003e,0x0000034c,0x0000034d,0x00060039, + 0x0000004a,0x0000034e,0x00000080,0x0000034b,0x0000034c,0x0003003e,0x00000348,0x0000034e, + 0x0004003d,0x00000029,0x00000350,0x000000ac,0x0004007c,0x0000002e,0x00000351,0x00000350, + 0x0003003e,0x00000352,0x00000351,0x0004003d,0x00000006,0x00000354,0x000000ae,0x0003003e, + 0x00000353,0x00000354,0x00060039,0x0000004a,0x00000355,0x00000080,0x00000352,0x00000353, + 0x0003003e,0x0000034f,0x00000355,0x0004003d,0x00000029,0x00000357,0x000000ad,0x0004007c, + 0x0000002e,0x00000358,0x00000357,0x0003003e,0x00000359,0x00000358,0x0004003d,0x00000006, + 0x0000035b,0x000000ae,0x0003003e,0x0000035a,0x0000035b,0x00060039,0x0000004a,0x0000035c, + 0x00000080,0x00000359,0x0000035a,0x0003003e,0x00000356,0x0000035c,0x0004003d,0x0000004a, + 0x0000035e,0x00000341,0x0003003e,0x0000035d,0x0000035e,0x0004003d,0x0000004a,0x00000360, + 0x00000348,0x0003003e,0x0000035f,0x00000360,0x0004003d,0x0000004a,0x00000362,0x0000034f, + 0x0003003e,0x00000361,0x00000362,0x0004003d,0x0000004a,0x00000364,0x00000356,0x0003003e, + 0x00000363,0x00000364,0x00080039,0x0000004a,0x00000365,0x00000087,0x0000035d,0x0000035f, + 0x00000361,0x00000363,0x000200fe,0x00000365,0x00010038,0x00050036,0x0000004a,0x000000b4, + 0x00000000,0x000000b1,0x00030037,0x000000a8,0x000000b2,0x00030037,0x00000007,0x000000b3, + 0x000200f8,0x000000b5,0x0004003b,0x000000a8,0x00000374,0x00000007,0x0004003b,0x000000a8, + 0x00000375,0x00000007,0x0004003b,0x000000a8,0x00000376,0x00000007,0x0004003b,0x000000a8, + 0x00000377,0x00000007,0x0004003b,0x00000007,0x00000378,0x00000007,0x0004003d,0x00000029, + 0x00000368,0x000000b2,0x00050080,0x00000029,0x0000036a,0x00000368,0x00000369,0x0004003d, + 0x00000029,0x0000036b,0x000000b2,0x00050080,0x00000029,0x0000036d,0x0000036b,0x0000036c, + 0x0004003d,0x00000029,0x0000036e,0x000000b2,0x00050080,0x00000029,0x00000370,0x0000036e, + 0x0000036f,0x0004003d,0x00000029,0x00000371,0x000000b2,0x00050080,0x00000029,0x00000373, + 0x00000371,0x00000372,0x0003003e,0x00000374,0x0000036a,0x0003003e,0x00000375,0x0000036d, + 0x0003003e,0x00000376,0x00000370,0x0003003e,0x00000377,0x00000373,0x0004003d,0x00000006, + 0x00000379,0x000000b3,0x0003003e,0x00000378,0x00000379,0x00090039,0x0000004a,0x0000037a, + 0x000000af,0x00000374,0x00000375,0x00000376,0x00000377,0x00000378,0x000200fe,0x0000037a, + 0x00010038,0x00050036,0x0000004a,0x000000bb,0x00000000,0x000000a9,0x00030037,0x000000a8, + 0x000000b6,0x00030037,0x000000a8,0x000000b7,0x00030037,0x000000a8,0x000000b8,0x00030037, + 0x000000a8,0x000000b9,0x00030037,0x00000007,0x000000ba,0x000200f8,0x000000bc,0x0004003b, + 0x0000004e,0x0000037d,0x00000007,0x0004003b,0x00000059,0x00000381,0x00000007,0x0004003b, + 0x00000007,0x00000382,0x00000007,0x0004003b,0x0000004e,0x00000385,0x00000007,0x0004003b, + 0x00000059,0x00000389,0x00000007,0x0004003b,0x00000007,0x0000038a,0x00000007,0x0004003b, + 0x0000004e,0x0000038d,0x00000007,0x0004003b,0x00000059,0x00000391,0x00000007,0x0004003b, + 0x00000007,0x00000392,0x00000007,0x0004003b,0x0000004e,0x00000395,0x00000007,0x0004003b, + 0x00000059,0x00000399,0x00000007,0x0004003b,0x00000007,0x0000039a,0x00000007,0x0004003b, + 0x0000004e,0x0000039d,0x00000007,0x0004003b,0x0000004e,0x0000039f,0x00000007,0x0004003b, + 0x0000004e,0x000003a1,0x00000007,0x0004003b,0x0000004e,0x000003a3,0x00000007,0x0004003d, + 0x00000029,0x0000037e,0x000000b6,0x0004007c,0x0000002e,0x0000037f,0x0000037e,0x0004006f, + 0x00000053,0x00000380,0x0000037f,0x0003003e,0x00000381,0x00000380,0x0004003d,0x00000006, + 0x00000383,0x000000ba,0x0003003e,0x00000382,0x00000383,0x00060039,0x0000004a,0x00000384, + 0x0000007b,0x00000381,0x00000382,0x0003003e,0x0000037d,0x00000384,0x0004003d,0x00000029, + 0x00000386,0x000000b7,0x0004007c,0x0000002e,0x00000387,0x00000386,0x0004006f,0x00000053, + 0x00000388,0x00000387,0x0003003e,0x00000389,0x00000388,0x0004003d,0x00000006,0x0000038b, + 0x000000ba,0x0003003e,0x0000038a,0x0000038b,0x00060039,0x0000004a,0x0000038c,0x0000007b, + 0x00000389,0x0000038a,0x0003003e,0x00000385,0x0000038c,0x0004003d,0x00000029,0x0000038e, + 0x000000b8,0x0004007c,0x0000002e,0x0000038f,0x0000038e,0x0004006f,0x00000053,0x00000390, + 0x0000038f,0x0003003e,0x00000391,0x00000390,0x0004003d,0x00000006,0x00000393,0x000000ba, + 0x0003003e,0x00000392,0x00000393,0x00060039,0x0000004a,0x00000394,0x0000007b,0x00000391, + 0x00000392,0x0003003e,0x0000038d,0x00000394,0x0004003d,0x00000029,0x00000396,0x000000b9, + 0x0004007c,0x0000002e,0x00000397,0x00000396,0x0004006f,0x00000053,0x00000398,0x00000397, + 0x0003003e,0x00000399,0x00000398,0x0004003d,0x00000006,0x0000039b,0x000000ba,0x0003003e, + 0x0000039a,0x0000039b,0x00060039,0x0000004a,0x0000039c,0x0000007b,0x00000399,0x0000039a, + 0x0003003e,0x00000395,0x0000039c,0x0004003d,0x0000004a,0x0000039e,0x0000037d,0x0003003e, + 0x0000039d,0x0000039e,0x0004003d,0x0000004a,0x000003a0,0x00000385,0x0003003e,0x0000039f, + 0x000003a0,0x0004003d,0x0000004a,0x000003a2,0x0000038d,0x0003003e,0x000003a1,0x000003a2, + 0x0004003d,0x0000004a,0x000003a4,0x00000395,0x0003003e,0x000003a3,0x000003a4,0x00080039, + 0x0000004a,0x000003a5,0x00000087,0x0000039d,0x0000039f,0x000003a1,0x000003a3,0x000200fe, + 0x000003a5,0x00010038,0x00050036,0x0000004a,0x000000bf,0x00000000,0x000000b1,0x00030037, + 0x000000a8,0x000000bd,0x00030037,0x00000007,0x000000be,0x000200f8,0x000000c0,0x0004003b, + 0x000000a8,0x000003b0,0x00000007,0x0004003b,0x000000a8,0x000003b1,0x00000007,0x0004003b, + 0x000000a8,0x000003b2,0x00000007,0x0004003b,0x000000a8,0x000003b3,0x00000007,0x0004003b, + 0x00000007,0x000003b4,0x00000007,0x0004003d,0x00000029,0x000003a8,0x000000bd,0x00050080, + 0x00000029,0x000003a9,0x000003a8,0x00000369,0x0004003d,0x00000029,0x000003aa,0x000000bd, + 0x00050080,0x00000029,0x000003ab,0x000003aa,0x0000036c,0x0004003d,0x00000029,0x000003ac, + 0x000000bd,0x00050080,0x00000029,0x000003ad,0x000003ac,0x0000036f,0x0004003d,0x00000029, + 0x000003ae,0x000000bd,0x00050080,0x00000029,0x000003af,0x000003ae,0x00000372,0x0003003e, + 0x000003b0,0x000003a9,0x0003003e,0x000003b1,0x000003ab,0x0003003e,0x000003b2,0x000003ad, + 0x0003003e,0x000003b3,0x000003af,0x0004003d,0x00000006,0x000003b5,0x000000be,0x0003003e, + 0x000003b4,0x000003b5,0x00090039,0x0000004a,0x000003b6,0x000000bb,0x000003b0,0x000003b1, + 0x000003b2,0x000003b3,0x000003b4,0x000200fe,0x000003b6,0x00010038,0x00050036,0x00000002, + 0x000000c8,0x00000000,0x000000c1,0x00030037,0x00000007,0x000000c2,0x00030037,0x00000007, + 0x000000c3,0x00030037,0x000000a8,0x000000c4,0x00030037,0x00000007,0x000000c5,0x00030037, + 0x00000007,0x000000c6,0x00030037,0x00000007,0x000000c7,0x000200f8,0x000000c9,0x0004003b, + 0x0000003d,0x000003b9,0x00000007,0x0004003b,0x0000003d,0x000003c7,0x00000007,0x0004003b, + 0x000003d4,0x000003d5,0x00000007,0x0004003b,0x000000a8,0x000003d8,0x00000007,0x0004003b, + 0x00000007,0x000003d9,0x00000007,0x0004003b,0x0000003d,0x000003dd,0x00000007,0x0004003b, + 0x0000004e,0x000003df,0x00000007,0x0004003b,0x00000007,0x000003e2,0x00000007,0x0004003b, + 0x00000007,0x000003e3,0x00000007,0x0004003b,0x000000a8,0x00000400,0x00000007,0x0004003b, + 0x00000007,0x00000401,0x00000007,0x0004003b,0x0000003d,0x00000405,0x00000007,0x0004003b, + 0x0000004e,0x00000407,0x00000007,0x0004003b,0x00000007,0x0000040a,0x00000007,0x0004003b, + 0x00000007,0x0000040b,0x00000007,0x0004003b,0x000000a8,0x00000428,0x00000007,0x0004003b, + 0x00000007,0x00000429,0x00000007,0x0004003b,0x0000003d,0x0000042d,0x00000007,0x0004003b, + 0x0000004e,0x0000042f,0x00000007,0x0004003b,0x00000007,0x00000432,0x00000007,0x0004003b, + 0x00000007,0x00000433,0x00000007,0x0004003b,0x000000a8,0x00000453,0x00000007,0x0004003b, + 0x00000007,0x00000454,0x00000007,0x0004003b,0x0000003d,0x00000458,0x00000007,0x0004003b, + 0x0000004e,0x0000045a,0x00000007,0x0004003b,0x00000007,0x0000045d,0x00000007,0x0004003b, + 0x00000007,0x0000045e,0x00000007,0x0004003b,0x0000004e,0x00000466,0x00000007,0x0004003b, + 0x0000004e,0x0000046b,0x00000007,0x0004003b,0x0000004e,0x00000470,0x00000007,0x0004003b, + 0x0000004e,0x00000475,0x00000007,0x0004003b,0x0000003d,0x0000048b,0x00000007,0x0004003b, + 0x0000004e,0x0000048c,0x00000007,0x0004003b,0x00000007,0x0000048f,0x00000007,0x0004003b, + 0x00000007,0x00000490,0x00000007,0x0004003b,0x00000007,0x00000497,0x00000007,0x0004003b, + 0x00000007,0x00000498,0x00000007,0x0004003b,0x0000004e,0x00000499,0x00000007,0x0004003b, + 0x0000003d,0x000004ab,0x00000007,0x0004003b,0x0000004e,0x000004ac,0x00000007,0x0004003b, + 0x00000007,0x000004af,0x00000007,0x0004003b,0x00000007,0x000004b0,0x00000007,0x0004003b, + 0x00000007,0x000004b8,0x00000007,0x0004003b,0x00000007,0x000004b9,0x00000007,0x0004003b, + 0x0000004e,0x000004ba,0x00000007,0x0004003b,0x0000003d,0x000004cb,0x00000007,0x0004003b, + 0x0000004e,0x000004cc,0x00000007,0x0004003b,0x00000007,0x000004cf,0x00000007,0x0004003b, + 0x00000007,0x000004d0,0x00000007,0x0004003b,0x00000007,0x000004d8,0x00000007,0x0004003b, + 0x00000007,0x000004d9,0x00000007,0x0004003b,0x0000004e,0x000004da,0x00000007,0x0004003b, + 0x0000003d,0x000004ec,0x00000007,0x0004003b,0x0000004e,0x000004ed,0x00000007,0x0004003b, + 0x00000007,0x000004f0,0x00000007,0x0004003b,0x00000007,0x000004f1,0x00000007,0x0004003b, + 0x00000007,0x000004fa,0x00000007,0x0004003b,0x00000007,0x000004fb,0x00000007,0x0004003b, + 0x0000004e,0x000004fc,0x00000007,0x0004003d,0x00000029,0x000003ba,0x000000c4,0x00050050, + 0x00000029,0x000003bc,0x000003bb,0x000003bb,0x00050084,0x00000029,0x000003bd,0x000003ba, + 0x000003bc,0x0004007c,0x0000002e,0x000003be,0x000003bd,0x0004003d,0x00000006,0x000003bf, + 0x000000c2,0x00050084,0x00000006,0x000003c0,0x000003bf,0x0000013e,0x0004007c,0x00000013, + 0x000003c1,0x000003c0,0x0004003d,0x00000006,0x000003c2,0x000000c3,0x00050084,0x00000006, + 0x000003c3,0x000003c2,0x0000013e,0x0004007c,0x00000013,0x000003c4,0x000003c3,0x00050050, + 0x0000002e,0x000003c5,0x000003c1,0x000003c4,0x00050080,0x0000002e,0x000003c6,0x000003be, + 0x000003c5,0x0003003e,0x000003b9,0x000003c6,0x0004003d,0x00000029,0x000003c8,0x000000c4, + 0x00050050,0x00000029,0x000003ca,0x000003c9,0x000003c9,0x00050084,0x00000029,0x000003cb, + 0x000003c8,0x000003ca,0x0004007c,0x0000002e,0x000003cc,0x000003cb,0x0004003d,0x00000006, + 0x000003cd,0x000000c2,0x0004007c,0x00000013,0x000003ce,0x000003cd,0x0004003d,0x00000006, + 0x000003cf,0x000000c3,0x0004007c,0x00000013,0x000003d0,0x000003cf,0x00050050,0x0000002e, + 0x000003d1,0x000003ce,0x000003d0,0x00050080,0x0000002e,0x000003d2,0x000003cc,0x000003d1, + 0x0003003e,0x000003c7,0x000003d2,0x0004003d,0x0000002e,0x000003d6,0x000003b9,0x0004007c, + 0x00000029,0x000003d7,0x000003d6,0x0003003e,0x000003d8,0x000003d7,0x0004003d,0x00000006, + 0x000003da,0x000000c7,0x0003003e,0x000003d9,0x000003da,0x00060039,0x0000004a,0x000003db, + 0x000000bf,0x000003d8,0x000003d9,0x00050041,0x0000004e,0x000003dc,0x000003d5,0x00000124, + 0x0003003e,0x000003dc,0x000003db,0x0004003d,0x0000002e,0x000003de,0x000003c7,0x0003003e, + 0x000003dd,0x000003de,0x00050041,0x0000004e,0x000003e0,0x000003d5,0x00000124,0x0004003d, + 0x0000004a,0x000003e1,0x000003e0,0x0003003e,0x000003df,0x000003e1,0x0003003e,0x000003e2, + 0x00000183,0x0004003d,0x00000006,0x000003e4,0x000000c7,0x0003003e,0x000003e3,0x000003e4, + 0x00080039,0x00000002,0x000003e5,0x0000008e,0x000003dd,0x000003df,0x000003e2,0x000003e3, + 0x0004003d,0x00000029,0x000003e6,0x000000c4,0x00050050,0x00000029,0x000003e7,0x000003bb, + 0x000003bb,0x00050084,0x00000029,0x000003e8,0x000003e6,0x000003e7,0x0004007c,0x0000002e, + 0x000003e9,0x000003e8,0x0004003d,0x00000006,0x000003ea,0x000000c2,0x00050084,0x00000006, + 0x000003eb,0x000003ea,0x0000013e,0x00050080,0x00000006,0x000003ec,0x000003eb,0x000003c9, + 0x0004007c,0x00000013,0x000003ed,0x000003ec,0x0004003d,0x00000006,0x000003ee,0x000000c3, + 0x00050084,0x00000006,0x000003ef,0x000003ee,0x0000013e,0x0004007c,0x00000013,0x000003f0, + 0x000003ef,0x00050050,0x0000002e,0x000003f1,0x000003ed,0x000003f0,0x00050080,0x0000002e, + 0x000003f2,0x000003e9,0x000003f1,0x0003003e,0x000003b9,0x000003f2,0x0004003d,0x00000029, + 0x000003f3,0x000000c4,0x00050050,0x00000029,0x000003f4,0x000003c9,0x000003c9,0x00050084, + 0x00000029,0x000003f5,0x000003f3,0x000003f4,0x0004007c,0x0000002e,0x000003f6,0x000003f5, + 0x0004003d,0x00000006,0x000003f7,0x000000c2,0x00050080,0x00000006,0x000003f8,0x000003f7, + 0x000002e9,0x0004007c,0x00000013,0x000003f9,0x000003f8,0x0004003d,0x00000006,0x000003fa, + 0x000000c3,0x0004007c,0x00000013,0x000003fb,0x000003fa,0x00050050,0x0000002e,0x000003fc, + 0x000003f9,0x000003fb,0x00050080,0x0000002e,0x000003fd,0x000003f6,0x000003fc,0x0003003e, + 0x000003c7,0x000003fd,0x0004003d,0x0000002e,0x000003fe,0x000003b9,0x0004007c,0x00000029, + 0x000003ff,0x000003fe,0x0003003e,0x00000400,0x000003ff,0x0004003d,0x00000006,0x00000402, + 0x000000c7,0x0003003e,0x00000401,0x00000402,0x00060039,0x0000004a,0x00000403,0x000000bf, + 0x00000400,0x00000401,0x00050041,0x0000004e,0x00000404,0x000003d5,0x00000172,0x0003003e, + 0x00000404,0x00000403,0x0004003d,0x0000002e,0x00000406,0x000003c7,0x0003003e,0x00000405, + 0x00000406,0x00050041,0x0000004e,0x00000408,0x000003d5,0x00000172,0x0004003d,0x0000004a, + 0x00000409,0x00000408,0x0003003e,0x00000407,0x00000409,0x0003003e,0x0000040a,0x00000183, + 0x0004003d,0x00000006,0x0000040c,0x000000c7,0x0003003e,0x0000040b,0x0000040c,0x00080039, + 0x00000002,0x0000040d,0x0000008e,0x00000405,0x00000407,0x0000040a,0x0000040b,0x0004003d, + 0x00000029,0x0000040e,0x000000c4,0x00050050,0x00000029,0x0000040f,0x000003bb,0x000003bb, + 0x00050084,0x00000029,0x00000410,0x0000040e,0x0000040f,0x0004007c,0x0000002e,0x00000411, + 0x00000410,0x0004003d,0x00000006,0x00000412,0x000000c2,0x00050084,0x00000006,0x00000413, + 0x00000412,0x0000013e,0x0004007c,0x00000013,0x00000414,0x00000413,0x0004003d,0x00000006, + 0x00000415,0x000000c3,0x00050084,0x00000006,0x00000416,0x00000415,0x0000013e,0x00050080, + 0x00000006,0x00000417,0x00000416,0x000003c9,0x0004007c,0x00000013,0x00000418,0x00000417, + 0x00050050,0x0000002e,0x00000419,0x00000414,0x00000418,0x00050080,0x0000002e,0x0000041a, + 0x00000411,0x00000419,0x0003003e,0x000003b9,0x0000041a,0x0004003d,0x00000029,0x0000041b, + 0x000000c4,0x00050050,0x00000029,0x0000041c,0x000003c9,0x000003c9,0x00050084,0x00000029, + 0x0000041d,0x0000041b,0x0000041c,0x0004007c,0x0000002e,0x0000041e,0x0000041d,0x0004003d, + 0x00000006,0x0000041f,0x000000c2,0x0004007c,0x00000013,0x00000420,0x0000041f,0x0004003d, + 0x00000006,0x00000421,0x000000c3,0x00050080,0x00000006,0x00000422,0x00000421,0x000002e9, + 0x0004007c,0x00000013,0x00000423,0x00000422,0x00050050,0x0000002e,0x00000424,0x00000420, + 0x00000423,0x00050080,0x0000002e,0x00000425,0x0000041e,0x00000424,0x0003003e,0x000003c7, + 0x00000425,0x0004003d,0x0000002e,0x00000426,0x000003b9,0x0004007c,0x00000029,0x00000427, + 0x00000426,0x0003003e,0x00000428,0x00000427,0x0004003d,0x00000006,0x0000042a,0x000000c7, + 0x0003003e,0x00000429,0x0000042a,0x00060039,0x0000004a,0x0000042b,0x000000bf,0x00000428, + 0x00000429,0x00050041,0x0000004e,0x0000042c,0x000003d5,0x00000177,0x0003003e,0x0000042c, + 0x0000042b,0x0004003d,0x0000002e,0x0000042e,0x000003c7,0x0003003e,0x0000042d,0x0000042e, + 0x00050041,0x0000004e,0x00000430,0x000003d5,0x00000177,0x0004003d,0x0000004a,0x00000431, + 0x00000430,0x0003003e,0x0000042f,0x00000431,0x0003003e,0x00000432,0x00000183,0x0004003d, + 0x00000006,0x00000434,0x000000c7,0x0003003e,0x00000433,0x00000434,0x00080039,0x00000002, + 0x00000435,0x0000008e,0x0000042d,0x0000042f,0x00000432,0x00000433,0x0004003d,0x00000029, + 0x00000436,0x000000c4,0x00050050,0x00000029,0x00000437,0x000003bb,0x000003bb,0x00050084, + 0x00000029,0x00000438,0x00000436,0x00000437,0x0004007c,0x0000002e,0x00000439,0x00000438, + 0x0004003d,0x00000006,0x0000043a,0x000000c2,0x00050084,0x00000006,0x0000043b,0x0000043a, + 0x0000013e,0x00050080,0x00000006,0x0000043c,0x0000043b,0x000003c9,0x0004007c,0x00000013, + 0x0000043d,0x0000043c,0x0004003d,0x00000006,0x0000043e,0x000000c3,0x00050084,0x00000006, + 0x0000043f,0x0000043e,0x0000013e,0x00050080,0x00000006,0x00000440,0x0000043f,0x000003c9, + 0x0004007c,0x00000013,0x00000441,0x00000440,0x00050050,0x0000002e,0x00000442,0x0000043d, + 0x00000441,0x00050080,0x0000002e,0x00000443,0x00000439,0x00000442,0x0003003e,0x000003b9, + 0x00000443,0x0004003d,0x00000029,0x00000444,0x000000c4,0x00050050,0x00000029,0x00000445, + 0x000003c9,0x000003c9,0x00050084,0x00000029,0x00000446,0x00000444,0x00000445,0x0004007c, + 0x0000002e,0x00000447,0x00000446,0x0004003d,0x00000006,0x00000448,0x000000c2,0x00050080, + 0x00000006,0x00000449,0x00000448,0x000002e9,0x0004007c,0x00000013,0x0000044a,0x00000449, + 0x0004003d,0x00000006,0x0000044b,0x000000c3,0x00050080,0x00000006,0x0000044c,0x0000044b, + 0x000002e9,0x0004007c,0x00000013,0x0000044d,0x0000044c,0x00050050,0x0000002e,0x0000044e, + 0x0000044a,0x0000044d,0x00050080,0x0000002e,0x0000044f,0x00000447,0x0000044e,0x0003003e, + 0x000003c7,0x0000044f,0x0004003d,0x0000002e,0x00000451,0x000003b9,0x0004007c,0x00000029, + 0x00000452,0x00000451,0x0003003e,0x00000453,0x00000452,0x0004003d,0x00000006,0x00000455, + 0x000000c7,0x0003003e,0x00000454,0x00000455,0x00060039,0x0000004a,0x00000456,0x000000bf, + 0x00000453,0x00000454,0x00050041,0x0000004e,0x00000457,0x000003d5,0x00000450,0x0003003e, + 0x00000457,0x00000456,0x0004003d,0x0000002e,0x00000459,0x000003c7,0x0003003e,0x00000458, + 0x00000459,0x00050041,0x0000004e,0x0000045b,0x000003d5,0x00000450,0x0004003d,0x0000004a, + 0x0000045c,0x0000045b,0x0003003e,0x0000045a,0x0000045c,0x0003003e,0x0000045d,0x00000183, + 0x0004003d,0x00000006,0x0000045f,0x000000c7,0x0003003e,0x0000045e,0x0000045f,0x00080039, + 0x00000002,0x00000460,0x0000008e,0x00000458,0x0000045a,0x0000045d,0x0000045e,0x0004003d, + 0x00000006,0x00000461,0x000000c6,0x000500b2,0x0000009d,0x00000462,0x00000461,0x00000145, + 0x000300f7,0x00000464,0x00000000,0x000400fa,0x00000462,0x00000463,0x00000464,0x000200f8, + 0x00000463,0x000100fd,0x000200f8,0x00000464,0x00050041,0x0000004e,0x00000467,0x000003d5, + 0x00000124,0x0004003d,0x0000004a,0x00000468,0x00000467,0x0003003e,0x00000466,0x00000468, + 0x00050039,0x0000004a,0x00000469,0x000000a6,0x00000466,0x00050041,0x0000004e,0x0000046a, + 0x000003d5,0x00000124,0x0003003e,0x0000046a,0x00000469,0x00050041,0x0000004e,0x0000046c, + 0x000003d5,0x00000172,0x0004003d,0x0000004a,0x0000046d,0x0000046c,0x0003003e,0x0000046b, + 0x0000046d,0x00050039,0x0000004a,0x0000046e,0x000000a6,0x0000046b,0x00050041,0x0000004e, + 0x0000046f,0x000003d5,0x00000172,0x0003003e,0x0000046f,0x0000046e,0x00050041,0x0000004e, + 0x00000471,0x000003d5,0x00000177,0x0004003d,0x0000004a,0x00000472,0x00000471,0x0003003e, + 0x00000470,0x00000472,0x00050039,0x0000004a,0x00000473,0x000000a6,0x00000470,0x00050041, + 0x0000004e,0x00000474,0x000003d5,0x00000177,0x0003003e,0x00000474,0x00000473,0x00050041, + 0x0000004e,0x00000476,0x000003d5,0x00000450,0x0004003d,0x0000004a,0x00000477,0x00000476, + 0x0003003e,0x00000475,0x00000477,0x00050039,0x0000004a,0x00000478,0x000000a6,0x00000475, + 0x00050041,0x0000004e,0x00000479,0x000003d5,0x00000450,0x0003003e,0x00000479,0x00000478, + 0x0004003d,0x00000006,0x0000047a,0x000000c5,0x00050089,0x00000006,0x0000047b,0x0000047a, + 0x000001cb,0x000500aa,0x0000009d,0x0000047c,0x0000047b,0x00000183,0x000300f7,0x0000047e, + 0x00000000,0x000400fa,0x0000047c,0x0000047d,0x0000047e,0x000200f8,0x0000047d,0x0004003d, + 0x00000029,0x0000047f,0x000000c4,0x00050050,0x00000029,0x00000480,0x000002e9,0x000002e9, + 0x00050084,0x00000029,0x00000481,0x0000047f,0x00000480,0x0004007c,0x0000002e,0x00000482, + 0x00000481,0x0004003d,0x00000006,0x00000483,0x000000c2,0x00050086,0x00000006,0x00000484, + 0x00000483,0x0000013e,0x0004007c,0x00000013,0x00000485,0x00000484,0x0004003d,0x00000006, + 0x00000486,0x000000c3,0x00050086,0x00000006,0x00000487,0x00000486,0x0000013e,0x0004007c, + 0x00000013,0x00000488,0x00000487,0x00050050,0x0000002e,0x00000489,0x00000485,0x00000488, + 0x00050080,0x0000002e,0x0000048a,0x00000482,0x00000489,0x0003003e,0x0000048b,0x0000048a, + 0x00050041,0x0000004e,0x0000048d,0x000003d5,0x00000124,0x0004003d,0x0000004a,0x0000048e, + 0x0000048d,0x0003003e,0x0000048c,0x0000048e,0x0003003e,0x0000048f,0x00000145,0x0004003d, + 0x00000006,0x00000491,0x000000c7,0x0003003e,0x00000490,0x00000491,0x00080039,0x00000002, + 0x00000492,0x0000008e,0x0000048b,0x0000048c,0x0000048f,0x00000490,0x0004003d,0x00000006, + 0x00000493,0x000000c2,0x00050086,0x00000006,0x00000494,0x00000493,0x0000013e,0x0004003d, + 0x00000006,0x00000495,0x000000c3,0x00050086,0x00000006,0x00000496,0x00000495,0x0000013e, + 0x0003003e,0x00000497,0x00000494,0x0003003e,0x00000498,0x00000496,0x00050041,0x0000004e, + 0x0000049a,0x000003d5,0x00000124,0x0004003d,0x0000004a,0x0000049b,0x0000049a,0x0003003e, + 0x00000499,0x0000049b,0x00070039,0x00000002,0x0000049c,0x00000099,0x00000497,0x00000498, + 0x00000499,0x0004003d,0x00000029,0x0000049d,0x000000c4,0x00050050,0x00000029,0x0000049e, + 0x000002e9,0x000002e9,0x00050084,0x00000029,0x0000049f,0x0000049d,0x0000049e,0x0004007c, + 0x0000002e,0x000004a0,0x0000049f,0x0004003d,0x00000006,0x000004a1,0x000000c2,0x00050086, + 0x00000006,0x000004a2,0x000004a1,0x0000013e,0x00050080,0x00000006,0x000004a4,0x000004a2, + 0x000004a3,0x0004007c,0x00000013,0x000004a5,0x000004a4,0x0004003d,0x00000006,0x000004a6, + 0x000000c3,0x00050086,0x00000006,0x000004a7,0x000004a6,0x0000013e,0x0004007c,0x00000013, + 0x000004a8,0x000004a7,0x00050050,0x0000002e,0x000004a9,0x000004a5,0x000004a8,0x00050080, + 0x0000002e,0x000004aa,0x000004a0,0x000004a9,0x0003003e,0x000004ab,0x000004aa,0x00050041, + 0x0000004e,0x000004ad,0x000003d5,0x00000172,0x0004003d,0x0000004a,0x000004ae,0x000004ad, + 0x0003003e,0x000004ac,0x000004ae,0x0003003e,0x000004af,0x00000145,0x0004003d,0x00000006, + 0x000004b1,0x000000c7,0x0003003e,0x000004b0,0x000004b1,0x00080039,0x00000002,0x000004b2, + 0x0000008e,0x000004ab,0x000004ac,0x000004af,0x000004b0,0x0004003d,0x00000006,0x000004b3, + 0x000000c2,0x00050086,0x00000006,0x000004b4,0x000004b3,0x0000013e,0x00050080,0x00000006, + 0x000004b5,0x000004b4,0x000004a3,0x0004003d,0x00000006,0x000004b6,0x000000c3,0x00050086, + 0x00000006,0x000004b7,0x000004b6,0x0000013e,0x0003003e,0x000004b8,0x000004b5,0x0003003e, + 0x000004b9,0x000004b7,0x00050041,0x0000004e,0x000004bb,0x000003d5,0x00000172,0x0004003d, + 0x0000004a,0x000004bc,0x000004bb,0x0003003e,0x000004ba,0x000004bc,0x00070039,0x00000002, + 0x000004bd,0x00000099,0x000004b8,0x000004b9,0x000004ba,0x0004003d,0x00000029,0x000004be, + 0x000000c4,0x00050050,0x00000029,0x000004bf,0x000002e9,0x000002e9,0x00050084,0x00000029, + 0x000004c0,0x000004be,0x000004bf,0x0004007c,0x0000002e,0x000004c1,0x000004c0,0x0004003d, + 0x00000006,0x000004c2,0x000000c2,0x00050086,0x00000006,0x000004c3,0x000004c2,0x0000013e, + 0x0004007c,0x00000013,0x000004c4,0x000004c3,0x0004003d,0x00000006,0x000004c5,0x000000c3, + 0x00050086,0x00000006,0x000004c6,0x000004c5,0x0000013e,0x00050080,0x00000006,0x000004c7, + 0x000004c6,0x000004a3,0x0004007c,0x00000013,0x000004c8,0x000004c7,0x00050050,0x0000002e, + 0x000004c9,0x000004c4,0x000004c8,0x00050080,0x0000002e,0x000004ca,0x000004c1,0x000004c9, + 0x0003003e,0x000004cb,0x000004ca,0x00050041,0x0000004e,0x000004cd,0x000003d5,0x00000177, + 0x0004003d,0x0000004a,0x000004ce,0x000004cd,0x0003003e,0x000004cc,0x000004ce,0x0003003e, + 0x000004cf,0x00000145,0x0004003d,0x00000006,0x000004d1,0x000000c7,0x0003003e,0x000004d0, + 0x000004d1,0x00080039,0x00000002,0x000004d2,0x0000008e,0x000004cb,0x000004cc,0x000004cf, + 0x000004d0,0x0004003d,0x00000006,0x000004d3,0x000000c2,0x00050086,0x00000006,0x000004d4, + 0x000004d3,0x0000013e,0x0004003d,0x00000006,0x000004d5,0x000000c3,0x00050086,0x00000006, + 0x000004d6,0x000004d5,0x0000013e,0x00050080,0x00000006,0x000004d7,0x000004d6,0x000004a3, + 0x0003003e,0x000004d8,0x000004d4,0x0003003e,0x000004d9,0x000004d7,0x00050041,0x0000004e, + 0x000004db,0x000003d5,0x00000177,0x0004003d,0x0000004a,0x000004dc,0x000004db,0x0003003e, + 0x000004da,0x000004dc,0x00070039,0x00000002,0x000004dd,0x00000099,0x000004d8,0x000004d9, + 0x000004da,0x0004003d,0x00000029,0x000004de,0x000000c4,0x00050050,0x00000029,0x000004df, + 0x000002e9,0x000002e9,0x00050084,0x00000029,0x000004e0,0x000004de,0x000004df,0x0004007c, + 0x0000002e,0x000004e1,0x000004e0,0x0004003d,0x00000006,0x000004e2,0x000000c2,0x00050086, + 0x00000006,0x000004e3,0x000004e2,0x0000013e,0x00050080,0x00000006,0x000004e4,0x000004e3, + 0x000004a3,0x0004007c,0x00000013,0x000004e5,0x000004e4,0x0004003d,0x00000006,0x000004e6, + 0x000000c3,0x00050086,0x00000006,0x000004e7,0x000004e6,0x0000013e,0x00050080,0x00000006, + 0x000004e8,0x000004e7,0x000004a3,0x0004007c,0x00000013,0x000004e9,0x000004e8,0x00050050, + 0x0000002e,0x000004ea,0x000004e5,0x000004e9,0x00050080,0x0000002e,0x000004eb,0x000004e1, + 0x000004ea,0x0003003e,0x000004ec,0x000004eb,0x00050041,0x0000004e,0x000004ee,0x000003d5, + 0x00000450,0x0004003d,0x0000004a,0x000004ef,0x000004ee,0x0003003e,0x000004ed,0x000004ef, + 0x0003003e,0x000004f0,0x00000145,0x0004003d,0x00000006,0x000004f2,0x000000c7,0x0003003e, + 0x000004f1,0x000004f2,0x00080039,0x00000002,0x000004f3,0x0000008e,0x000004ec,0x000004ed, + 0x000004f0,0x000004f1,0x0004003d,0x00000006,0x000004f4,0x000000c2,0x00050086,0x00000006, + 0x000004f5,0x000004f4,0x0000013e,0x00050080,0x00000006,0x000004f6,0x000004f5,0x000004a3, + 0x0004003d,0x00000006,0x000004f7,0x000000c3,0x00050086,0x00000006,0x000004f8,0x000004f7, + 0x0000013e,0x00050080,0x00000006,0x000004f9,0x000004f8,0x000004a3,0x0003003e,0x000004fa, + 0x000004f6,0x0003003e,0x000004fb,0x000004f9,0x00050041,0x0000004e,0x000004fd,0x000003d5, + 0x00000450,0x0004003d,0x0000004a,0x000004fe,0x000004fd,0x0003003e,0x000004fc,0x000004fe, + 0x00070039,0x00000002,0x000004ff,0x00000099,0x000004fa,0x000004fb,0x000004fc,0x000200f9, + 0x0000047e,0x000200f8,0x0000047e,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000d0, + 0x00000000,0x000000c1,0x00030037,0x00000007,0x000000ca,0x00030037,0x00000007,0x000000cb, + 0x00030037,0x000000a8,0x000000cc,0x00030037,0x00000007,0x000000cd,0x00030037,0x00000007, + 0x000000ce,0x00030037,0x00000007,0x000000cf,0x000200f8,0x000000d1,0x0004003b,0x00000007, + 0x00000500,0x00000007,0x0004003b,0x00000007,0x00000502,0x00000007,0x0004003b,0x000000a8, + 0x00000504,0x00000007,0x0004003b,0x00000007,0x00000506,0x00000007,0x0004003b,0x00000007, + 0x00000508,0x00000007,0x0004003b,0x00000007,0x0000050a,0x00000007,0x0004003d,0x00000006, + 0x00000501,0x000000ca,0x0003003e,0x00000500,0x00000501,0x0004003d,0x00000006,0x00000503, + 0x000000cb,0x0003003e,0x00000502,0x00000503,0x0004003d,0x00000029,0x00000505,0x000000cc, + 0x0003003e,0x00000504,0x00000505,0x0004003d,0x00000006,0x00000507,0x000000cd,0x0003003e, + 0x00000506,0x00000507,0x0004003d,0x00000006,0x00000509,0x000000ce,0x0003003e,0x00000508, + 0x00000509,0x0004003d,0x00000006,0x0000050b,0x000000cf,0x0003003e,0x0000050a,0x0000050b, + 0x000a0039,0x00000002,0x0000050c,0x000000c8,0x00000500,0x00000502,0x00000504,0x00000506, + 0x00000508,0x0000050a,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000d8,0x00000000, + 0x000000c1,0x00030037,0x00000007,0x000000d2,0x00030037,0x00000007,0x000000d3,0x00030037, + 0x000000a8,0x000000d4,0x00030037,0x00000007,0x000000d5,0x00030037,0x00000007,0x000000d6, + 0x00030037,0x00000007,0x000000d7,0x000200f8,0x000000d9,0x0004003b,0x0000004e,0x0000050d, + 0x00000007,0x0004003b,0x00000007,0x0000050e,0x00000007,0x0004003b,0x00000007,0x00000510, + 0x00000007,0x0004003b,0x0000004e,0x00000513,0x00000007,0x0004003b,0x0000003d,0x00000527, + 0x00000007,0x0004003b,0x0000004e,0x00000528,0x00000007,0x0004003b,0x00000007,0x0000052a, + 0x00000007,0x0004003b,0x00000007,0x0000052c,0x00000007,0x0004003b,0x00000007,0x00000534, + 0x00000007,0x0004003b,0x00000007,0x00000535,0x00000007,0x0004003b,0x0000004e,0x00000537, + 0x00000007,0x0004003d,0x00000006,0x0000050f,0x000000d2,0x0003003e,0x0000050e,0x0000050f, + 0x0004003d,0x00000006,0x00000511,0x000000d3,0x0003003e,0x00000510,0x00000511,0x00060039, + 0x0000004a,0x00000512,0x00000093,0x0000050e,0x00000510,0x0003003e,0x0000050d,0x00000512, + 0x0004003d,0x0000004a,0x00000514,0x0000050d,0x0003003e,0x00000513,0x00000514,0x00050039, + 0x0000004a,0x00000515,0x000000a6,0x00000513,0x0003003e,0x0000050d,0x00000515,0x0004003d, + 0x00000006,0x00000516,0x000000d5,0x00050089,0x00000006,0x00000517,0x00000516,0x000001cb, + 0x000500aa,0x0000009d,0x00000518,0x00000517,0x00000183,0x000300f7,0x0000051a,0x00000000, + 0x000400fa,0x00000518,0x00000519,0x0000051a,0x000200f8,0x00000519,0x0004003d,0x00000029, + 0x0000051b,0x000000d4,0x00050050,0x00000029,0x0000051c,0x000004a3,0x000004a3,0x00050084, + 0x00000029,0x0000051d,0x0000051b,0x0000051c,0x0004007c,0x0000002e,0x0000051e,0x0000051d, + 0x0004003d,0x00000006,0x0000051f,0x000000d2,0x00050086,0x00000006,0x00000520,0x0000051f, + 0x0000013e,0x0004007c,0x00000013,0x00000521,0x00000520,0x0004003d,0x00000006,0x00000522, + 0x000000d3,0x00050086,0x00000006,0x00000523,0x00000522,0x0000013e,0x0004007c,0x00000013, + 0x00000524,0x00000523,0x00050050,0x0000002e,0x00000525,0x00000521,0x00000524,0x00050080, + 0x0000002e,0x00000526,0x0000051e,0x00000525,0x0003003e,0x00000527,0x00000526,0x0004003d, + 0x0000004a,0x00000529,0x0000050d,0x0003003e,0x00000528,0x00000529,0x0004003d,0x00000006, + 0x0000052b,0x000000d6,0x0003003e,0x0000052a,0x0000052b,0x0004003d,0x00000006,0x0000052d, + 0x000000d7,0x0003003e,0x0000052c,0x0000052d,0x00080039,0x00000002,0x0000052e,0x0000008e, + 0x00000527,0x00000528,0x0000052a,0x0000052c,0x0004003d,0x00000006,0x0000052f,0x000000d2, + 0x0004003d,0x00000006,0x00000530,0x000000d3,0x00050086,0x00000006,0x00000531,0x00000530, + 0x0000013e,0x00050089,0x00000006,0x00000532,0x00000531,0x0000013e,0x00050080,0x00000006, + 0x00000533,0x0000052f,0x00000532,0x0003003e,0x00000534,0x00000533,0x0004003d,0x00000006, + 0x00000536,0x000000d3,0x0003003e,0x00000535,0x00000536,0x0004003d,0x0000004a,0x00000538, + 0x0000050d,0x0003003e,0x00000537,0x00000538,0x00070039,0x00000002,0x00000539,0x00000099, + 0x00000534,0x00000535,0x00000537,0x000200f9,0x0000051a,0x000200f8,0x0000051a,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x000000e0,0x00000000,0x000000c1,0x00030037,0x00000007, + 0x000000da,0x00030037,0x00000007,0x000000db,0x00030037,0x000000a8,0x000000dc,0x00030037, + 0x00000007,0x000000dd,0x00030037,0x00000007,0x000000de,0x00030037,0x00000007,0x000000df, + 0x000200f8,0x000000e1,0x0004003b,0x0000004e,0x0000053e,0x00000007,0x0004003b,0x00000007, + 0x00000546,0x00000007,0x0004003b,0x00000007,0x00000547,0x00000007,0x0004003b,0x0000004e, + 0x00000549,0x00000007,0x0004003b,0x0000003d,0x0000055d,0x00000007,0x0004003b,0x0000004e, + 0x0000055e,0x00000007,0x0004003b,0x00000007,0x00000560,0x00000007,0x0004003b,0x00000007, + 0x00000562,0x00000007,0x0004003b,0x00000007,0x0000056c,0x00000007,0x0004003b,0x00000007, + 0x0000056d,0x00000007,0x0004003b,0x0000004e,0x0000056e,0x00000007,0x0004003d,0x00000006, + 0x0000053a,0x000000dd,0x000500b0,0x0000009d,0x0000053b,0x0000053a,0x000003bb,0x000300f7, + 0x0000053d,0x00000000,0x000400fa,0x0000053b,0x0000053c,0x0000053d,0x000200f8,0x0000053c, + 0x0004003d,0x00000006,0x0000053f,0x000000da,0x00050084,0x00000006,0x00000540,0x0000053f, + 0x0000013e,0x0004003d,0x00000006,0x00000541,0x000000db,0x00050089,0x00000006,0x00000542, + 0x00000541,0x0000013e,0x00050080,0x00000006,0x00000543,0x00000540,0x00000542,0x0004003d, + 0x00000006,0x00000544,0x000000db,0x00050084,0x00000006,0x00000545,0x00000544,0x0000013e, + 0x0003003e,0x00000546,0x00000543,0x0003003e,0x00000547,0x00000545,0x00060039,0x0000004a, + 0x00000548,0x00000093,0x00000546,0x00000547,0x0003003e,0x0000053e,0x00000548,0x0004003d, + 0x0000004a,0x0000054a,0x0000053e,0x0003003e,0x00000549,0x0000054a,0x00050039,0x0000004a, + 0x0000054b,0x000000a6,0x00000549,0x0003003e,0x0000053e,0x0000054b,0x0004003d,0x00000006, + 0x0000054c,0x000000dd,0x00050089,0x00000006,0x0000054d,0x0000054c,0x000001cb,0x000500aa, + 0x0000009d,0x0000054e,0x0000054d,0x00000183,0x000300f7,0x00000550,0x00000000,0x000400fa, + 0x0000054e,0x0000054f,0x00000550,0x000200f8,0x0000054f,0x0004003d,0x00000029,0x00000551, + 0x000000dc,0x00050050,0x00000029,0x00000552,0x000001cb,0x000001cb,0x00050084,0x00000029, + 0x00000553,0x00000551,0x00000552,0x0004007c,0x0000002e,0x00000554,0x00000553,0x0004003d, + 0x00000006,0x00000555,0x000000da,0x00050086,0x00000006,0x00000556,0x00000555,0x0000013e, + 0x0004007c,0x00000013,0x00000557,0x00000556,0x0004003d,0x00000006,0x00000558,0x000000db, + 0x00050086,0x00000006,0x00000559,0x00000558,0x0000013e,0x0004007c,0x00000013,0x0000055a, + 0x00000559,0x00050050,0x0000002e,0x0000055b,0x00000557,0x0000055a,0x00050080,0x0000002e, + 0x0000055c,0x00000554,0x0000055b,0x0003003e,0x0000055d,0x0000055c,0x0004003d,0x0000004a, + 0x0000055f,0x0000053e,0x0003003e,0x0000055e,0x0000055f,0x0004003d,0x00000006,0x00000561, + 0x000000de,0x0003003e,0x00000560,0x00000561,0x0004003d,0x00000006,0x00000563,0x000000df, + 0x0003003e,0x00000562,0x00000563,0x00080039,0x00000002,0x00000564,0x0000008e,0x0000055d, + 0x0000055e,0x00000560,0x00000562,0x0004003d,0x00000006,0x00000565,0x000000da,0x00050084, + 0x00000006,0x00000566,0x00000565,0x0000013e,0x0004003d,0x00000006,0x00000567,0x000000db, + 0x00050086,0x00000006,0x00000568,0x00000567,0x0000013e,0x00050080,0x00000006,0x00000569, + 0x00000566,0x00000568,0x0004003d,0x00000006,0x0000056a,0x000000db,0x00050084,0x00000006, + 0x0000056b,0x0000056a,0x0000013e,0x0003003e,0x0000056c,0x00000569,0x0003003e,0x0000056d, + 0x0000056b,0x0004003d,0x0000004a,0x0000056f,0x0000053e,0x0003003e,0x0000056e,0x0000056f, + 0x00070039,0x00000002,0x00000570,0x00000099,0x0000056c,0x0000056d,0x0000056e,0x000200f9, + 0x00000550,0x000200f8,0x00000550,0x000200f9,0x0000053d,0x000200f8,0x0000053d,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x000000e8,0x00000000,0x000000c1,0x00030037,0x00000007, + 0x000000e2,0x00030037,0x00000007,0x000000e3,0x00030037,0x000000a8,0x000000e4,0x00030037, + 0x00000007,0x000000e5,0x00030037,0x00000007,0x000000e6,0x00030037,0x00000007,0x000000e7, + 0x000200f8,0x000000e9,0x0004003b,0x0000004e,0x00000575,0x00000007,0x0004003b,0x00000007, + 0x0000057c,0x00000007,0x0004003b,0x00000007,0x0000057d,0x00000007,0x0004003b,0x0000004e, + 0x0000057f,0x00000007,0x0004003b,0x0000003d,0x00000593,0x00000007,0x0004003b,0x0000004e, + 0x00000594,0x00000007,0x0004003b,0x00000007,0x00000596,0x00000007,0x0004003b,0x00000007, + 0x00000598,0x00000007,0x0004003b,0x00000007,0x0000059f,0x00000007,0x0004003b,0x00000007, + 0x000005a0,0x00000007,0x0004003b,0x0000004e,0x000005a1,0x00000007,0x0004003d,0x00000006, + 0x00000571,0x000000e5,0x000500b0,0x0000009d,0x00000572,0x00000571,0x000002e9,0x000300f7, + 0x00000574,0x00000000,0x000400fa,0x00000572,0x00000573,0x00000574,0x000200f8,0x00000573, + 0x0004003d,0x00000006,0x00000576,0x000000e2,0x00050084,0x00000006,0x00000577,0x00000576, + 0x000001cb,0x0004003d,0x00000006,0x00000578,0x000000e3,0x00050080,0x00000006,0x00000579, + 0x00000577,0x00000578,0x0004003d,0x00000006,0x0000057a,0x000000e3,0x00050084,0x00000006, + 0x0000057b,0x0000057a,0x000001cb,0x0003003e,0x0000057c,0x00000579,0x0003003e,0x0000057d, + 0x0000057b,0x00060039,0x0000004a,0x0000057e,0x00000093,0x0000057c,0x0000057d,0x0003003e, + 0x00000575,0x0000057e,0x0004003d,0x0000004a,0x00000580,0x00000575,0x0003003e,0x0000057f, + 0x00000580,0x00050039,0x0000004a,0x00000581,0x000000a6,0x0000057f,0x0003003e,0x00000575, + 0x00000581,0x0004003d,0x00000006,0x00000582,0x000000e5,0x00050089,0x00000006,0x00000583, + 0x00000582,0x000001cb,0x000500aa,0x0000009d,0x00000584,0x00000583,0x00000183,0x000300f7, + 0x00000586,0x00000000,0x000400fa,0x00000584,0x00000585,0x00000586,0x000200f8,0x00000585, + 0x0004003d,0x00000029,0x00000587,0x000000e4,0x00050050,0x00000029,0x00000588,0x0000013e, + 0x0000013e,0x00050084,0x00000029,0x00000589,0x00000587,0x00000588,0x0004007c,0x0000002e, + 0x0000058a,0x00000589,0x0004003d,0x00000006,0x0000058b,0x000000e2,0x00050086,0x00000006, + 0x0000058c,0x0000058b,0x0000013e,0x0004007c,0x00000013,0x0000058d,0x0000058c,0x0004003d, + 0x00000006,0x0000058e,0x000000e3,0x00050086,0x00000006,0x0000058f,0x0000058e,0x0000013e, + 0x0004007c,0x00000013,0x00000590,0x0000058f,0x00050050,0x0000002e,0x00000591,0x0000058d, + 0x00000590,0x00050080,0x0000002e,0x00000592,0x0000058a,0x00000591,0x0003003e,0x00000593, + 0x00000592,0x0004003d,0x0000004a,0x00000595,0x00000575,0x0003003e,0x00000594,0x00000595, + 0x0004003d,0x00000006,0x00000597,0x000000e6,0x0003003e,0x00000596,0x00000597,0x0004003d, + 0x00000006,0x00000599,0x000000e7,0x0003003e,0x00000598,0x00000599,0x00080039,0x00000002, + 0x0000059a,0x0000008e,0x00000593,0x00000594,0x00000596,0x00000598,0x0004003d,0x00000006, + 0x0000059b,0x000000e2,0x00050086,0x00000006,0x0000059c,0x0000059b,0x0000013e,0x0004003d, + 0x00000006,0x0000059d,0x000000e3,0x00050080,0x00000006,0x0000059e,0x0000059c,0x0000059d, + 0x0003003e,0x0000059f,0x0000059e,0x0003003e,0x000005a0,0x00000183,0x0004003d,0x0000004a, + 0x000005a2,0x00000575,0x0003003e,0x000005a1,0x000005a2,0x00070039,0x00000002,0x000005a3, + 0x00000099,0x0000059f,0x000005a0,0x000005a1,0x000200f9,0x00000586,0x000200f8,0x00000586, + 0x000200f9,0x00000574,0x000200f8,0x00000574,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x000000ef,0x00000000,0x000000ea,0x00030037,0x000000a8,0x000000eb,0x00030037,0x00000007, + 0x000000ec,0x00030037,0x00000007,0x000000ed,0x00030037,0x00000007,0x000000ee,0x000200f8, + 0x000000f0,0x0004003b,0x0000004e,0x000005a8,0x00000007,0x0004003b,0x00000007,0x000005a9, + 0x00000007,0x0004003b,0x00000007,0x000005ab,0x00000007,0x0004003b,0x0000004e,0x000005ad, + 0x00000007,0x0004003b,0x0000003d,0x000005b7,0x00000007,0x0004003b,0x0000004e,0x000005b8, + 0x00000007,0x0004003b,0x00000007,0x000005ba,0x00000007,0x0004003b,0x00000007,0x000005bc, + 0x00000007,0x0004003d,0x00000006,0x000005a4,0x000000ec,0x000500b0,0x0000009d,0x000005a5, + 0x000005a4,0x000001cb,0x000300f7,0x000005a7,0x00000000,0x000400fa,0x000005a5,0x000005a6, + 0x000005a7,0x000200f8,0x000005a6,0x0004003d,0x00000006,0x000005aa,0x000000ec,0x0003003e, + 0x000005a9,0x000005aa,0x0003003e,0x000005ab,0x00000183,0x00060039,0x0000004a,0x000005ac, + 0x00000093,0x000005a9,0x000005ab,0x0003003e,0x000005a8,0x000005ac,0x0004003d,0x0000004a, + 0x000005ae,0x000005a8,0x0003003e,0x000005ad,0x000005ae,0x00050039,0x0000004a,0x000005af, + 0x000000a6,0x000005ad,0x0003003e,0x000005a8,0x000005af,0x0004003d,0x00000006,0x000005b0, + 0x000000ec,0x00050089,0x00000006,0x000005b1,0x000005b0,0x000001cb,0x000500aa,0x0000009d, + 0x000005b2,0x000005b1,0x00000183,0x000300f7,0x000005b4,0x00000000,0x000400fa,0x000005b2, + 0x000005b3,0x000005b4,0x000200f8,0x000005b3,0x0004003d,0x00000029,0x000005b5,0x000000eb, + 0x0004007c,0x0000002e,0x000005b6,0x000005b5,0x0003003e,0x000005b7,0x000005b6,0x0004003d, + 0x0000004a,0x000005b9,0x000005a8,0x0003003e,0x000005b8,0x000005b9,0x0004003d,0x00000006, + 0x000005bb,0x000000ed,0x0003003e,0x000005ba,0x000005bb,0x0004003d,0x00000006,0x000005bd, + 0x000000ee,0x0003003e,0x000005bc,0x000005bd,0x00080039,0x00000002,0x000005be,0x0000008e, + 0x000005b7,0x000005b8,0x000005ba,0x000005bc,0x000200f9,0x000005b4,0x000200f8,0x000005b4, + 0x000200f9,0x000005a7,0x000200f8,0x000005a7,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x000000f6,0x00000000,0x000000f1,0x00030037,0x00000007,0x000000f2,0x00030037,0x00000007, + 0x000000f3,0x00030037,0x00000007,0x000000f4,0x00030037,0x00000007,0x000000f5,0x000200f8, + 0x000000f7,0x0004003b,0x0000003d,0x000005bf,0x00000007,0x0004003b,0x0000003d,0x000005c9, + 0x00000007,0x0004003b,0x0000004e,0x000005d3,0x00000007,0x0004003b,0x000000a8,0x000005d6, + 0x00000007,0x0004003b,0x00000007,0x000005d7,0x00000007,0x0004003b,0x0000003d,0x000005db, + 0x00000007,0x0004003b,0x0000004e,0x000005dd,0x00000007,0x0004003b,0x00000007,0x000005df, + 0x00000007,0x0004003b,0x00000007,0x000005e0,0x00000007,0x0004003b,0x0000004e,0x000005f5, + 0x00000007,0x0004003b,0x000000a8,0x000005f8,0x00000007,0x0004003b,0x00000007,0x000005f9, + 0x00000007,0x0004003b,0x0000003d,0x000005fc,0x00000007,0x0004003b,0x0000004e,0x000005fe, + 0x00000007,0x0004003b,0x00000007,0x00000600,0x00000007,0x0004003b,0x00000007,0x00000601, + 0x00000007,0x0004003b,0x0000004e,0x00000616,0x00000007,0x0004003b,0x000000a8,0x00000619, + 0x00000007,0x0004003b,0x00000007,0x0000061a,0x00000007,0x0004003b,0x0000003d,0x0000061d, + 0x00000007,0x0004003b,0x0000004e,0x0000061f,0x00000007,0x0004003b,0x00000007,0x00000621, + 0x00000007,0x0004003b,0x00000007,0x00000622,0x00000007,0x0004003b,0x0000004e,0x00000637, + 0x00000007,0x0004003b,0x000000a8,0x0000063a,0x00000007,0x0004003b,0x00000007,0x0000063b, + 0x00000007,0x0004003b,0x0000003d,0x0000063e,0x00000007,0x0004003b,0x0000004e,0x00000640, + 0x00000007,0x0004003b,0x00000007,0x00000642,0x00000007,0x0004003b,0x00000007,0x00000643, + 0x00000007,0x0004003b,0x0000004e,0x0000064c,0x00000007,0x0004003b,0x0000004e,0x0000064d, + 0x00000007,0x0004003b,0x0000004e,0x0000064f,0x00000007,0x0004003b,0x0000004e,0x00000651, + 0x00000007,0x0004003b,0x0000004e,0x00000653,0x00000007,0x0004003b,0x0000003d,0x0000065b, + 0x00000007,0x0004003b,0x0000004e,0x0000065c,0x00000007,0x0004003b,0x00000007,0x0000065e, + 0x00000007,0x0004003b,0x00000007,0x0000065f,0x00000007,0x0004003b,0x00000007,0x00000662, + 0x00000007,0x0004003b,0x00000007,0x00000664,0x00000007,0x0004003b,0x0000004e,0x00000666, + 0x00000007,0x0004003d,0x00000006,0x000005c0,0x000000f2,0x00050084,0x00000006,0x000005c1, + 0x000005c0,0x000001cb,0x00050080,0x00000006,0x000005c2,0x000005c1,0x00000183,0x0004007c, + 0x00000013,0x000005c3,0x000005c2,0x0004003d,0x00000006,0x000005c4,0x000000f3,0x00050084, + 0x00000006,0x000005c5,0x000005c4,0x000001cb,0x00050080,0x00000006,0x000005c6,0x000005c5, + 0x00000183,0x0004007c,0x00000013,0x000005c7,0x000005c6,0x00050050,0x0000002e,0x000005c8, + 0x000005c3,0x000005c7,0x0003003e,0x000005bf,0x000005c8,0x0004003d,0x00000006,0x000005ca, + 0x000000f2,0x00050084,0x00000006,0x000005cb,0x000005ca,0x0000013e,0x00050080,0x00000006, + 0x000005cc,0x000005cb,0x00000183,0x0004007c,0x00000013,0x000005cd,0x000005cc,0x0004003d, + 0x00000006,0x000005ce,0x000000f3,0x00050084,0x00000006,0x000005cf,0x000005ce,0x0000013e, + 0x00050080,0x00000006,0x000005d0,0x000005cf,0x00000183,0x0004007c,0x00000013,0x000005d1, + 0x000005d0,0x00050050,0x0000002e,0x000005d2,0x000005cd,0x000005d1,0x0003003e,0x000005c9, + 0x000005d2,0x0004003d,0x0000002e,0x000005d4,0x000005bf,0x0004007c,0x00000029,0x000005d5, + 0x000005d4,0x0003003e,0x000005d6,0x000005d5,0x0004003d,0x00000006,0x000005d8,0x000000f5, + 0x0003003e,0x000005d7,0x000005d8,0x00060039,0x0000004a,0x000005d9,0x000000b4,0x000005d6, + 0x000005d7,0x0003003e,0x000005d3,0x000005d9,0x0004003d,0x0000002e,0x000005dc,0x000005c9, + 0x0003003e,0x000005db,0x000005dc,0x0004003d,0x0000004a,0x000005de,0x000005d3,0x0003003e, + 0x000005dd,0x000005de,0x0003003e,0x000005df,0x000005da,0x0004003d,0x00000006,0x000005e1, + 0x000000f5,0x0003003e,0x000005e0,0x000005e1,0x00080039,0x00000002,0x000005e2,0x0000008e, + 0x000005db,0x000005dd,0x000005df,0x000005e0,0x0004003d,0x00000006,0x000005e3,0x000000f2, + 0x00050084,0x00000006,0x000005e4,0x000005e3,0x000001cb,0x00050080,0x00000006,0x000005e5, + 0x000005e4,0x0000013e,0x0004007c,0x00000013,0x000005e6,0x000005e5,0x0004003d,0x00000006, + 0x000005e7,0x000000f3,0x00050084,0x00000006,0x000005e8,0x000005e7,0x000001cb,0x00050080, + 0x00000006,0x000005e9,0x000005e8,0x00000183,0x0004007c,0x00000013,0x000005ea,0x000005e9, + 0x00050050,0x0000002e,0x000005eb,0x000005e6,0x000005ea,0x0003003e,0x000005bf,0x000005eb, + 0x0004003d,0x00000006,0x000005ec,0x000000f2,0x00050084,0x00000006,0x000005ed,0x000005ec, + 0x0000013e,0x00050080,0x00000006,0x000005ee,0x000005ed,0x00000145,0x0004007c,0x00000013, + 0x000005ef,0x000005ee,0x0004003d,0x00000006,0x000005f0,0x000000f3,0x00050084,0x00000006, + 0x000005f1,0x000005f0,0x0000013e,0x00050080,0x00000006,0x000005f2,0x000005f1,0x00000183, + 0x0004007c,0x00000013,0x000005f3,0x000005f2,0x00050050,0x0000002e,0x000005f4,0x000005ef, + 0x000005f3,0x0003003e,0x000005c9,0x000005f4,0x0004003d,0x0000002e,0x000005f6,0x000005bf, + 0x0004007c,0x00000029,0x000005f7,0x000005f6,0x0003003e,0x000005f8,0x000005f7,0x0004003d, + 0x00000006,0x000005fa,0x000000f5,0x0003003e,0x000005f9,0x000005fa,0x00060039,0x0000004a, + 0x000005fb,0x000000b4,0x000005f8,0x000005f9,0x0003003e,0x000005f5,0x000005fb,0x0004003d, + 0x0000002e,0x000005fd,0x000005c9,0x0003003e,0x000005fc,0x000005fd,0x0004003d,0x0000004a, + 0x000005ff,0x000005f5,0x0003003e,0x000005fe,0x000005ff,0x0003003e,0x00000600,0x000005da, + 0x0004003d,0x00000006,0x00000602,0x000000f5,0x0003003e,0x00000601,0x00000602,0x00080039, + 0x00000002,0x00000603,0x0000008e,0x000005fc,0x000005fe,0x00000600,0x00000601,0x0004003d, + 0x00000006,0x00000604,0x000000f2,0x00050084,0x00000006,0x00000605,0x00000604,0x000001cb, + 0x00050080,0x00000006,0x00000606,0x00000605,0x00000183,0x0004007c,0x00000013,0x00000607, + 0x00000606,0x0004003d,0x00000006,0x00000608,0x000000f3,0x00050084,0x00000006,0x00000609, + 0x00000608,0x000001cb,0x00050080,0x00000006,0x0000060a,0x00000609,0x0000013e,0x0004007c, + 0x00000013,0x0000060b,0x0000060a,0x00050050,0x0000002e,0x0000060c,0x00000607,0x0000060b, + 0x0003003e,0x000005bf,0x0000060c,0x0004003d,0x00000006,0x0000060d,0x000000f2,0x00050084, + 0x00000006,0x0000060e,0x0000060d,0x0000013e,0x00050080,0x00000006,0x0000060f,0x0000060e, + 0x00000183,0x0004007c,0x00000013,0x00000610,0x0000060f,0x0004003d,0x00000006,0x00000611, + 0x000000f3,0x00050084,0x00000006,0x00000612,0x00000611,0x0000013e,0x00050080,0x00000006, + 0x00000613,0x00000612,0x00000145,0x0004007c,0x00000013,0x00000614,0x00000613,0x00050050, + 0x0000002e,0x00000615,0x00000610,0x00000614,0x0003003e,0x000005c9,0x00000615,0x0004003d, + 0x0000002e,0x00000617,0x000005bf,0x0004007c,0x00000029,0x00000618,0x00000617,0x0003003e, + 0x00000619,0x00000618,0x0004003d,0x00000006,0x0000061b,0x000000f5,0x0003003e,0x0000061a, + 0x0000061b,0x00060039,0x0000004a,0x0000061c,0x000000b4,0x00000619,0x0000061a,0x0003003e, + 0x00000616,0x0000061c,0x0004003d,0x0000002e,0x0000061e,0x000005c9,0x0003003e,0x0000061d, + 0x0000061e,0x0004003d,0x0000004a,0x00000620,0x00000616,0x0003003e,0x0000061f,0x00000620, + 0x0003003e,0x00000621,0x000005da,0x0004003d,0x00000006,0x00000623,0x000000f5,0x0003003e, + 0x00000622,0x00000623,0x00080039,0x00000002,0x00000624,0x0000008e,0x0000061d,0x0000061f, + 0x00000621,0x00000622,0x0004003d,0x00000006,0x00000625,0x000000f2,0x00050084,0x00000006, + 0x00000626,0x00000625,0x000001cb,0x00050080,0x00000006,0x00000627,0x00000626,0x0000013e, + 0x0004007c,0x00000013,0x00000628,0x00000627,0x0004003d,0x00000006,0x00000629,0x000000f3, + 0x00050084,0x00000006,0x0000062a,0x00000629,0x000001cb,0x00050080,0x00000006,0x0000062b, + 0x0000062a,0x0000013e,0x0004007c,0x00000013,0x0000062c,0x0000062b,0x00050050,0x0000002e, + 0x0000062d,0x00000628,0x0000062c,0x0003003e,0x000005bf,0x0000062d,0x0004003d,0x00000006, + 0x0000062e,0x000000f2,0x00050084,0x00000006,0x0000062f,0x0000062e,0x0000013e,0x00050080, + 0x00000006,0x00000630,0x0000062f,0x00000145,0x0004007c,0x00000013,0x00000631,0x00000630, + 0x0004003d,0x00000006,0x00000632,0x000000f3,0x00050084,0x00000006,0x00000633,0x00000632, + 0x0000013e,0x00050080,0x00000006,0x00000634,0x00000633,0x00000145,0x0004007c,0x00000013, + 0x00000635,0x00000634,0x00050050,0x0000002e,0x00000636,0x00000631,0x00000635,0x0003003e, + 0x000005c9,0x00000636,0x0004003d,0x0000002e,0x00000638,0x000005bf,0x0004007c,0x00000029, + 0x00000639,0x00000638,0x0003003e,0x0000063a,0x00000639,0x0004003d,0x00000006,0x0000063c, + 0x000000f5,0x0003003e,0x0000063b,0x0000063c,0x00060039,0x0000004a,0x0000063d,0x000000b4, + 0x0000063a,0x0000063b,0x0003003e,0x00000637,0x0000063d,0x0004003d,0x0000002e,0x0000063f, + 0x000005c9,0x0003003e,0x0000063e,0x0000063f,0x0004003d,0x0000004a,0x00000641,0x00000637, + 0x0003003e,0x00000640,0x00000641,0x0003003e,0x00000642,0x000005da,0x0004003d,0x00000006, + 0x00000644,0x000000f5,0x0003003e,0x00000643,0x00000644,0x00080039,0x00000002,0x00000645, + 0x0000008e,0x0000063e,0x00000640,0x00000642,0x00000643,0x0004003d,0x00000006,0x00000646, + 0x000000f4,0x000500b2,0x0000009d,0x00000648,0x00000646,0x00000647,0x000300f7,0x0000064a, + 0x00000000,0x000400fa,0x00000648,0x00000649,0x0000064a,0x000200f8,0x00000649,0x000100fd, + 0x000200f8,0x0000064a,0x0004003d,0x0000004a,0x0000064e,0x000005d3,0x0003003e,0x0000064d, + 0x0000064e,0x0004003d,0x0000004a,0x00000650,0x000005f5,0x0003003e,0x0000064f,0x00000650, + 0x0004003d,0x0000004a,0x00000652,0x00000616,0x0003003e,0x00000651,0x00000652,0x0004003d, + 0x0000004a,0x00000654,0x00000637,0x0003003e,0x00000653,0x00000654,0x00080039,0x0000004a, + 0x00000655,0x00000087,0x0000064d,0x0000064f,0x00000651,0x00000653,0x0003003e,0x0000064c, + 0x00000655,0x0004003d,0x00000006,0x00000656,0x000000f2,0x0004007c,0x00000013,0x00000657, + 0x00000656,0x0004003d,0x00000006,0x00000658,0x000000f3,0x0004007c,0x00000013,0x00000659, + 0x00000658,0x00050050,0x0000002e,0x0000065a,0x00000657,0x00000659,0x0003003e,0x0000065b, + 0x0000065a,0x0004003d,0x0000004a,0x0000065d,0x0000064c,0x0003003e,0x0000065c,0x0000065d, + 0x0003003e,0x0000065e,0x00000647,0x0004003d,0x00000006,0x00000660,0x000000f5,0x0003003e, + 0x0000065f,0x00000660,0x00080039,0x00000002,0x00000661,0x0000008e,0x0000065b,0x0000065c, + 0x0000065e,0x0000065f,0x0004003d,0x00000006,0x00000663,0x000000f2,0x0003003e,0x00000662, + 0x00000663,0x0004003d,0x00000006,0x00000665,0x000000f3,0x0003003e,0x00000664,0x00000665, + 0x0004003d,0x0000004a,0x00000667,0x0000064c,0x0003003e,0x00000666,0x00000667,0x00070039, + 0x00000002,0x00000668,0x00000099,0x00000662,0x00000664,0x00000666,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000100,0x00000000,0x000000f8,0x00030037,0x00000007,0x000000f9, + 0x00030037,0x00000007,0x000000fa,0x00030037,0x000000a8,0x000000fb,0x00030037,0x00000007, + 0x000000fc,0x00030037,0x00000007,0x000000fd,0x00030037,0x00000007,0x000000fe,0x00030037, + 0x00000007,0x000000ff,0x000200f8,0x00000101,0x0004003b,0x00000007,0x00000670,0x00000007, + 0x0004003b,0x00000007,0x00000672,0x00000007,0x0004003b,0x000000a8,0x00000674,0x00000007, + 0x0004003b,0x00000007,0x00000676,0x00000007,0x0004003b,0x00000007,0x00000678,0x00000007, + 0x0004003b,0x00000007,0x0000067a,0x00000007,0x0004003b,0x00000007,0x00000687,0x00000007, + 0x0004003b,0x00000007,0x00000689,0x00000007,0x0004003b,0x000000a8,0x0000068b,0x00000007, + 0x0004003b,0x00000007,0x0000068d,0x00000007,0x0004003b,0x00000007,0x0000068f,0x00000007, + 0x0004003b,0x00000007,0x00000690,0x00000007,0x0004003b,0x00000007,0x0000069d,0x00000007, + 0x0004003b,0x00000007,0x0000069f,0x00000007,0x0004003b,0x000000a8,0x000006a1,0x00000007, + 0x0004003b,0x00000007,0x000006a3,0x00000007,0x0004003b,0x00000007,0x000006a5,0x00000007, + 0x0004003b,0x00000007,0x000006a6,0x00000007,0x0004003b,0x000000a8,0x000006b3,0x00000007, + 0x0004003b,0x00000007,0x000006b5,0x00000007,0x0004003b,0x00000007,0x000006b7,0x00000007, + 0x0004003b,0x00000007,0x000006b8,0x00000007,0x0004003d,0x00000006,0x00000669,0x000000fe, + 0x0004003d,0x00000006,0x0000066a,0x000000fd,0x000500b2,0x0000009d,0x0000066b,0x00000669, + 0x0000066a,0x000300f7,0x0000066d,0x00000000,0x000400fa,0x0000066b,0x0000066c,0x0000066d, + 0x000200f8,0x0000066c,0x000100fd,0x000200f8,0x0000066d,0x00040039,0x00000002,0x0000066f, + 0x0000009b,0x0004003d,0x00000006,0x00000671,0x000000f9,0x0003003e,0x00000670,0x00000671, + 0x0004003d,0x00000006,0x00000673,0x000000fa,0x0003003e,0x00000672,0x00000673,0x0004003d, + 0x00000029,0x00000675,0x000000fb,0x0003003e,0x00000674,0x00000675,0x0004003d,0x00000006, + 0x00000677,0x000000fc,0x0003003e,0x00000676,0x00000677,0x0004003d,0x00000006,0x00000679, + 0x000000fd,0x0003003e,0x00000678,0x00000679,0x0004003d,0x00000006,0x0000067b,0x000000ff, + 0x0003003e,0x0000067a,0x0000067b,0x000a0039,0x00000002,0x0000067c,0x000000d8,0x00000670, + 0x00000672,0x00000674,0x00000676,0x00000678,0x0000067a,0x0004003d,0x00000006,0x0000067d, + 0x000000fe,0x0004003d,0x00000006,0x0000067e,0x000000fd,0x00050080,0x00000006,0x0000067f, + 0x0000067e,0x00000145,0x000500b2,0x0000009d,0x00000680,0x0000067d,0x0000067f,0x000300f7, + 0x00000682,0x00000000,0x000400fa,0x00000680,0x00000681,0x00000682,0x000200f8,0x00000681, + 0x000100fd,0x000200f8,0x00000682,0x00040039,0x00000002,0x00000684,0x0000009b,0x0004003d, + 0x00000006,0x00000685,0x000000fd,0x00050080,0x00000006,0x00000686,0x00000685,0x00000145, + 0x0004003d,0x00000006,0x00000688,0x000000f9,0x0003003e,0x00000687,0x00000688,0x0004003d, + 0x00000006,0x0000068a,0x000000fa,0x0003003e,0x00000689,0x0000068a,0x0004003d,0x00000029, + 0x0000068c,0x000000fb,0x0003003e,0x0000068b,0x0000068c,0x0004003d,0x00000006,0x0000068e, + 0x000000fc,0x0003003e,0x0000068d,0x0000068e,0x0003003e,0x0000068f,0x00000686,0x0004003d, + 0x00000006,0x00000691,0x000000ff,0x0003003e,0x00000690,0x00000691,0x000a0039,0x00000002, + 0x00000692,0x000000e0,0x00000687,0x00000689,0x0000068b,0x0000068d,0x0000068f,0x00000690, + 0x0004003d,0x00000006,0x00000693,0x000000fe,0x0004003d,0x00000006,0x00000694,0x000000fd, + 0x00050080,0x00000006,0x00000695,0x00000694,0x0000013e,0x000500b2,0x0000009d,0x00000696, + 0x00000693,0x00000695,0x000300f7,0x00000698,0x00000000,0x000400fa,0x00000696,0x00000697, + 0x00000698,0x000200f8,0x00000697,0x000100fd,0x000200f8,0x00000698,0x00040039,0x00000002, + 0x0000069a,0x0000009b,0x0004003d,0x00000006,0x0000069b,0x000000fd,0x00050080,0x00000006, + 0x0000069c,0x0000069b,0x0000013e,0x0004003d,0x00000006,0x0000069e,0x000000f9,0x0003003e, + 0x0000069d,0x0000069e,0x0004003d,0x00000006,0x000006a0,0x000000fa,0x0003003e,0x0000069f, + 0x000006a0,0x0004003d,0x00000029,0x000006a2,0x000000fb,0x0003003e,0x000006a1,0x000006a2, + 0x0004003d,0x00000006,0x000006a4,0x000000fc,0x0003003e,0x000006a3,0x000006a4,0x0003003e, + 0x000006a5,0x0000069c,0x0004003d,0x00000006,0x000006a7,0x000000ff,0x0003003e,0x000006a6, + 0x000006a7,0x000a0039,0x00000002,0x000006a8,0x000000e8,0x0000069d,0x0000069f,0x000006a1, + 0x000006a3,0x000006a5,0x000006a6,0x0004003d,0x00000006,0x000006a9,0x000000fe,0x0004003d, + 0x00000006,0x000006aa,0x000000fd,0x00050080,0x00000006,0x000006ab,0x000006aa,0x0000013f, + 0x000500b2,0x0000009d,0x000006ac,0x000006a9,0x000006ab,0x000300f7,0x000006ae,0x00000000, + 0x000400fa,0x000006ac,0x000006ad,0x000006ae,0x000200f8,0x000006ad,0x000100fd,0x000200f8, + 0x000006ae,0x00040039,0x00000002,0x000006b0,0x0000009b,0x0004003d,0x00000006,0x000006b1, + 0x000000fd,0x00050080,0x00000006,0x000006b2,0x000006b1,0x0000013f,0x0004003d,0x00000029, + 0x000006b4,0x000000fb,0x0003003e,0x000006b3,0x000006b4,0x0004003d,0x00000006,0x000006b6, + 0x000000fc,0x0003003e,0x000006b5,0x000006b6,0x0003003e,0x000006b7,0x000006b2,0x0004003d, + 0x00000006,0x000006b9,0x000000ff,0x0003003e,0x000006b8,0x000006b9,0x00080039,0x00000002, + 0x000006ba,0x000000ef,0x000006b3,0x000006b5,0x000006b7,0x000006b8,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000108,0x00000000,0x00000102,0x00030037,0x000000a8,0x00000103, + 0x00030037,0x00000007,0x00000104,0x00030037,0x00000007,0x00000105,0x00030037,0x00000007, + 0x00000106,0x00030037,0x00000007,0x00000107,0x000200f8,0x00000109,0x0004003b,0x000000a8, + 0x000006bb,0x00000007,0x0004003b,0x00000007,0x000006be,0x00000007,0x0004003b,0x00000007, + 0x000006c0,0x00000007,0x0004003b,0x00000007,0x000006c9,0x00000007,0x0004003b,0x00000007, + 0x000006d1,0x00000007,0x0004003b,0x00000007,0x000006d3,0x00000007,0x0004003b,0x000000a8, + 0x000006d5,0x00000007,0x0004003b,0x00000007,0x000006d7,0x00000007,0x0004003b,0x00000007, + 0x000006d9,0x00000007,0x0004003b,0x00000007,0x000006db,0x00000007,0x0004003b,0x00000007, + 0x000006de,0x00000007,0x0004003b,0x00000007,0x000006e0,0x00000007,0x0004003b,0x000000a8, + 0x000006e2,0x00000007,0x0004003b,0x00000007,0x000006e4,0x00000007,0x0004003b,0x00000007, + 0x000006e6,0x00000007,0x0004003b,0x00000007,0x000006e7,0x00000007,0x0004003b,0x00000007, + 0x000006e9,0x00000007,0x0004003b,0x00000007,0x000006f1,0x00000007,0x0004003b,0x00000007, + 0x000006f3,0x00000007,0x0004003b,0x00000007,0x000006f5,0x00000007,0x0004003b,0x00000007, + 0x000006fb,0x00000007,0x0004003b,0x00000007,0x000006fe,0x00000007,0x0004003b,0x00000007, + 0x00000700,0x00000007,0x0004003b,0x00000007,0x00000702,0x00000007,0x0004003b,0x00000007, + 0x00000704,0x00000007,0x0004003b,0x00000007,0x00000707,0x00000007,0x0004003b,0x00000007, + 0x00000709,0x00000007,0x0004003b,0x000000a8,0x0000070b,0x00000007,0x0004003b,0x00000007, + 0x0000070c,0x00000007,0x0004003b,0x00000007,0x0000070e,0x00000007,0x0004003b,0x00000007, + 0x0000070f,0x00000007,0x0004003b,0x00000007,0x00000711,0x00000007,0x0004003d,0x00000006, + 0x000006bc,0x00000104,0x00050089,0x00000006,0x000006bd,0x000006bc,0x000003bb,0x0003003e, + 0x000006be,0x000006bd,0x00050039,0x00000029,0x000006bf,0x0000002c,0x000006be,0x0003003e, + 0x000006bb,0x000006bf,0x00050041,0x00000007,0x000006c1,0x000006bb,0x00000183,0x0004003d, + 0x00000006,0x000006c2,0x000006c1,0x0004003d,0x00000006,0x000006c3,0x00000104,0x000500c2, + 0x00000006,0x000006c5,0x000006c3,0x000006c4,0x00050089,0x00000006,0x000006c6,0x000006c5, + 0x0000013e,0x00050084,0x00000006,0x000006c7,0x000004a3,0x000006c6,0x00050080,0x00000006, + 0x000006c8,0x000006c2,0x000006c7,0x0003003e,0x000006c0,0x000006c8,0x00050041,0x00000007, + 0x000006ca,0x000006bb,0x00000145,0x0004003d,0x00000006,0x000006cb,0x000006ca,0x0004003d, + 0x00000006,0x000006cc,0x00000104,0x000500c2,0x00000006,0x000006ce,0x000006cc,0x000006cd, + 0x00050084,0x00000006,0x000006cf,0x000004a3,0x000006ce,0x00050080,0x00000006,0x000006d0, + 0x000006cb,0x000006cf,0x0003003e,0x000006c9,0x000006d0,0x0004003d,0x00000006,0x000006d2, + 0x000006c0,0x0003003e,0x000006d1,0x000006d2,0x0004003d,0x00000006,0x000006d4,0x000006c9, + 0x0003003e,0x000006d3,0x000006d4,0x0004003d,0x00000029,0x000006d6,0x00000103,0x0003003e, + 0x000006d5,0x000006d6,0x0004003d,0x00000006,0x000006d8,0x00000104,0x0003003e,0x000006d7, + 0x000006d8,0x0004003d,0x00000006,0x000006da,0x00000105,0x0003003e,0x000006d9,0x000006da, + 0x0004003d,0x00000006,0x000006dc,0x00000107,0x0003003e,0x000006db,0x000006dc,0x000a0039, + 0x00000002,0x000006dd,0x000000d0,0x000006d1,0x000006d3,0x000006d5,0x000006d7,0x000006d9, + 0x000006db,0x0004003d,0x00000006,0x000006df,0x000006c0,0x0003003e,0x000006de,0x000006df, + 0x0004003d,0x00000006,0x000006e1,0x000006c9,0x0003003e,0x000006e0,0x000006e1,0x0004003d, + 0x00000029,0x000006e3,0x00000103,0x0003003e,0x000006e2,0x000006e3,0x0004003d,0x00000006, + 0x000006e5,0x00000104,0x0003003e,0x000006e4,0x000006e5,0x0003003e,0x000006e6,0x0000013e, + 0x0004003d,0x00000006,0x000006e8,0x00000105,0x0003003e,0x000006e7,0x000006e8,0x0004003d, + 0x00000006,0x000006ea,0x00000107,0x0003003e,0x000006e9,0x000006ea,0x000b0039,0x00000002, + 0x000006eb,0x00000100,0x000006de,0x000006e0,0x000006e2,0x000006e4,0x000006e6,0x000006e7, + 0x000006e9,0x0004003d,0x00000006,0x000006ec,0x00000105,0x000500b2,0x0000009d,0x000006ed, + 0x000006ec,0x000005da,0x000300f7,0x000006ef,0x00000000,0x000400fa,0x000006ed,0x000006ee, + 0x000006ef,0x000200f8,0x000006ee,0x000100fd,0x000200f8,0x000006ef,0x0004003d,0x00000006, + 0x000006f2,0x00000106,0x0003003e,0x000006f1,0x000006f2,0x0004003d,0x00000006,0x000006f4, + 0x00000104,0x0003003e,0x000006f3,0x000006f4,0x0004003d,0x00000006,0x000006f6,0x00000107, + 0x0003003e,0x000006f5,0x000006f6,0x00070039,0x0000009d,0x000006f7,0x000000a2,0x000006f1, + 0x000006f3,0x000006f5,0x000300f7,0x000006f9,0x00000000,0x000400fa,0x000006f7,0x000006f8, + 0x000006f9,0x000200f8,0x000006f8,0x000100fd,0x000200f8,0x000006f9,0x0004003d,0x00000006, + 0x000006fc,0x00000107,0x0003003e,0x000006fb,0x000006fc,0x00050039,0x00000002,0x000006fd, + 0x00000076,0x000006fb,0x0004003d,0x00000006,0x000006ff,0x000006c0,0x0003003e,0x000006fe, + 0x000006ff,0x0004003d,0x00000006,0x00000701,0x000006c9,0x0003003e,0x00000700,0x00000701, + 0x0004003d,0x00000006,0x00000703,0x00000105,0x0003003e,0x00000702,0x00000703,0x0004003d, + 0x00000006,0x00000705,0x00000107,0x0003003e,0x00000704,0x00000705,0x00080039,0x00000002, + 0x00000706,0x000000f6,0x000006fe,0x00000700,0x00000702,0x00000704,0x0004003d,0x00000006, + 0x00000708,0x000006c0,0x0003003e,0x00000707,0x00000708,0x0004003d,0x00000006,0x0000070a, + 0x000006c9,0x0003003e,0x00000709,0x0000070a,0x0003003e,0x0000070b,0x00000369,0x0004003d, + 0x00000006,0x0000070d,0x00000104,0x0003003e,0x0000070c,0x0000070d,0x0003003e,0x0000070e, + 0x000004a3,0x0004003d,0x00000006,0x00000710,0x00000105,0x0003003e,0x0000070f,0x00000710, + 0x0004003d,0x00000006,0x00000712,0x00000107,0x0003003e,0x00000711,0x00000712,0x000b0039, + 0x00000002,0x00000713,0x00000100,0x00000707,0x00000709,0x0000070b,0x0000070c,0x0000070e, + 0x0000070f,0x00000711,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000111,0x00000000, + 0x0000010a,0x00030037,0x000000a8,0x0000010b,0x00030037,0x00000007,0x0000010c,0x00030037, + 0x00000007,0x0000010d,0x00030037,0x00000007,0x0000010e,0x00030037,0x00000007,0x0000010f, + 0x00030037,0x000000a8,0x00000110,0x000200f8,0x00000112,0x0004003b,0x000000a8,0x00000717, + 0x00000007,0x0004003b,0x00000007,0x00000718,0x00000007,0x0004003b,0x00000007,0x0000071a, + 0x00000007,0x0004003b,0x00000007,0x0000071c,0x00000007,0x0004003b,0x00000007,0x0000071e, + 0x00000007,0x0004003d,0x00000029,0x00000714,0x0000010b,0x0004003d,0x00000029,0x00000715, + 0x00000110,0x00050080,0x00000029,0x00000716,0x00000714,0x00000715,0x0003003e,0x00000717, + 0x00000716,0x0004003d,0x00000006,0x00000719,0x0000010c,0x0003003e,0x00000718,0x00000719, + 0x0004003d,0x00000006,0x0000071b,0x0000010d,0x0003003e,0x0000071a,0x0000071b,0x0004003d, + 0x00000006,0x0000071d,0x0000010e,0x0003003e,0x0000071c,0x0000071d,0x0004003d,0x00000006, + 0x0000071f,0x0000010f,0x0003003e,0x0000071e,0x0000071f,0x00090039,0x00000002,0x00000720, + 0x00000108,0x00000717,0x00000718,0x0000071a,0x0000071c,0x0000071e,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000118,0x00000000,0x00000115,0x00030037,0x00000114,0x00000116, + 0x00030037,0x00000007,0x00000117,0x000200f8,0x00000119,0x0004003b,0x000000a8,0x00000729, + 0x00000007,0x0004003b,0x00000007,0x0000072a,0x00000007,0x0004003b,0x00000007,0x0000072b, + 0x00000007,0x0004003b,0x00000007,0x0000072c,0x00000007,0x0004003b,0x00000007,0x0000072d, + 0x00000007,0x0004003b,0x000000a8,0x0000072e,0x00000007,0x0004003d,0x00000113,0x00000721, + 0x00000116,0x0007004f,0x00000029,0x00000722,0x00000721,0x00000721,0x00000000,0x00000001, + 0x0004003d,0x00000006,0x00000723,0x00000117,0x00040039,0x00000006,0x00000724,0x00000036, + 0x00040039,0x00000006,0x00000725,0x00000038,0x00050041,0x00000007,0x00000726,0x00000116, + 0x0000013e,0x0004003d,0x00000006,0x00000727,0x00000726,0x00040039,0x00000029,0x00000728, + 0x0000003b,0x0003003e,0x00000729,0x00000722,0x0003003e,0x0000072a,0x00000723,0x0003003e, + 0x0000072b,0x00000724,0x0003003e,0x0000072c,0x00000725,0x0003003e,0x0000072d,0x00000727, + 0x0003003e,0x0000072e,0x00000728,0x000a0039,0x00000002,0x0000072f,0x00000111,0x00000729, + 0x0000072a,0x0000072b,0x0000072c,0x0000072d,0x0000072e,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h b/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h new file mode 100644 index 000000000..62fd5bf40 --- /dev/null +++ b/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h @@ -0,0 +1,1567 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_LUMA_PYRAMID_NOWAVE_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x00000787,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, + 0x00000000,0x00000001,0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000771, + 0x00000773,0x00060010,0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003, + 0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373, + 0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47,0x735f5458, + 0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63,0x00736570, + 0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70,0x5f656c79,0x656e696c,0x7269645f, + 0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65, + 0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d,0x00000000,0x000a0005,0x0000000c, + 0x42786666,0x69667469,0x45646c65,0x61727478,0x75287463,0x31753b31,0x3b31753b,0x00000000, + 0x00030005,0x00000009,0x00637273,0x00030005,0x0000000a,0x0066666f,0x00040005,0x0000000b, + 0x73746962,0x00000000,0x000a0005,0x00000011,0x42786666,0x69667469,0x49646c65,0x7265736e, + 0x73614d74,0x3175286b,0x3b31753b,0x003b3175,0x00030005,0x0000000e,0x00637273,0x00030005, + 0x0000000f,0x00736e69,0x00040005,0x00000010,0x73746962,0x00000000,0x00060005,0x00000018, + 0x4d786666,0x69286e69,0x31693b31,0x0000003b,0x00030005,0x00000016,0x00000078,0x00030005, + 0x00000017,0x00000079,0x00060005,0x0000001f,0x4d786666,0x66287861,0x31663b31,0x0000003b, + 0x00030005,0x0000001d,0x00000078,0x00030005,0x0000001e,0x00000079,0x00060005,0x00000023, + 0x4d786666,0x69287861,0x31693b31,0x0000003b,0x00030005,0x00000021,0x00000078,0x00030005, + 0x00000022,0x00000079,0x00060005,0x00000027,0x50786666,0x6628776f,0x31663b31,0x0000003b, + 0x00030005,0x00000025,0x00000078,0x00030005,0x00000026,0x00000079,0x000a0005,0x0000002c, + 0x52786666,0x70616d65,0x57726f46,0x52657661,0x63756465,0x6e6f6974,0x3b317528,0x00000000, + 0x00030005,0x0000002b,0x00000061,0x00050005,0x00000030,0x646e6552,0x69537265,0x0028657a, + 0x00050005,0x00000033,0x746c6544,0x6d695461,0x00002865,0x00050005,0x00000036,0x4370694d, + 0x746e756f,0x00000028,0x00060005,0x00000038,0x576d754e,0x476b726f,0x70756f72,0x00002873, + 0x00070005,0x0000003b,0x6b726f57,0x756f7247,0x66664f70,0x28746573,0x00000000,0x00080005, + 0x00000040,0x64616f4c,0x74726146,0x74736568,0x74706544,0x69762868,0x00003b32,0x00040005, + 0x0000003f,0x50785069,0x0000736f,0x000a0005,0x00000045,0x726f7453,0x72614665,0x73656874, + 0x70654474,0x694d6874,0x76283170,0x663b3269,0x00003b31,0x00040005,0x00000043,0x50785069, + 0x0000736f,0x00040005,0x00000044,0x70654466,0x00006874,0x00080005,0x00000048,0x64616f4c, + 0x72727543,0x4c746e65,0x28616d75,0x3b326976,0x00000000,0x00040005,0x00000047,0x50785069, + 0x0000736f,0x00060005,0x0000004c,0x64616f4c,0x6d617246,0x666e4965,0x0000286f,0x00070005, + 0x00000051,0x726f7453,0x61724665,0x6e49656d,0x76286f66,0x003b3466,0x00040005,0x00000050, + 0x666e4966,0x0000006f,0x00080005,0x00000057,0x6f4c5752,0x79506461,0x696d6172,0x69762864, + 0x31753b32,0x0000003b,0x00040005,0x00000055,0x50785069,0x0000736f,0x00040005,0x00000056, + 0x65646e69,0x00000078,0x00090005,0x0000005e,0x726f7453,0x72795065,0x64696d61,0x32697628, + 0x3266763b,0x3b31753b,0x00000000,0x00040005,0x0000005b,0x50785069,0x0000736f,0x00050005, + 0x0000005c,0x5674756f,0x65756c61,0x00000000,0x00040005,0x0000005d,0x65646e69,0x00000078, + 0x000a0005,0x00000062,0x5f445053,0x72636e49,0x65736165,0x6d6f7441,0x6f436369,0x65746e75, + 0x31752872,0x0000003b,0x00050005,0x00000061,0x43647073,0x746e756f,0x00007265,0x00080005, + 0x00000064,0x5f445053,0x65736552,0x6f744174,0x4363696d,0x746e756f,0x00287265,0x00080005, + 0x0000006a,0x6d616c43,0x616f4c70,0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005, + 0x00000067,0x53785069,0x6c706d61,0x00000065,0x00050005,0x00000068,0x4f785069,0x65736666, + 0x00000074,0x00060005,0x00000069,0x78655469,0x65727574,0x657a6953,0x00000000,0x000a0005, + 0x0000006e,0x706d6f43,0x41657475,0x456f7475,0x736f7078,0x46657275,0x4c6d6f72,0x28677661, + 0x003b3166,0x00040005,0x0000006d,0x6776614c,0x00000000,0x000a0005,0x00000071,0x49647053, + 0x6572636e,0x41657361,0x696d6f74,0x756f4363,0x7265746e,0x3b317528,0x00000000,0x00040005, + 0x00000070,0x63696c73,0x00000065,0x00080005,0x00000073,0x47647053,0x74417465,0x63696d6f, + 0x6e756f43,0x28726574,0x00000000,0x00090005,0x00000076,0x52647053,0x74657365,0x6d6f7441, + 0x6f436369,0x65746e75,0x31752872,0x0000003b,0x00040005,0x00000075,0x63696c73,0x00000065, + 0x00090005,0x0000007b,0x4c647053,0x5364616f,0x6372756f,0x616d4965,0x76286567,0x753b3266, + 0x00003b31,0x00040005,0x00000079,0x50785069,0x0000736f,0x00040005,0x0000007a,0x63696c73, + 0x00000065,0x00060005,0x00000080,0x4c647053,0x2864616f,0x3b326976,0x003b3175,0x00030005, + 0x0000007e,0x00786574,0x00040005,0x0000007f,0x63696c73,0x00000065,0x00090005,0x00000087, + 0x52647053,0x63756465,0x76283465,0x763b3466,0x763b3466,0x763b3466,0x003b3466,0x00030005, + 0x00000083,0x00003076,0x00030005,0x00000084,0x00003176,0x00030005,0x00000085,0x00003276, + 0x00030005,0x00000086,0x00003376,0x00080005,0x0000008e,0x53647053,0x65726f74,0x32697628, + 0x3466763b,0x3b31753b,0x003b3175,0x00030005,0x0000008a,0x00786970,0x00050005,0x0000008b, + 0x5674756f,0x65756c61,0x00000000,0x00040005,0x0000008c,0x65646e69,0x00000078,0x00040005, + 0x0000008d,0x63696c73,0x00000065,0x00090005,0x00000093,0x4c647053,0x4964616f,0x7265746e, + 0x6964656d,0x28657461,0x753b3175,0x00003b31,0x00030005,0x00000091,0x00000078,0x00030005, + 0x00000092,0x00000079,0x000a0005,0x00000099,0x53647053,0x65726f74,0x65746e49,0x64656d72, + 0x65746169,0x3b317528,0x763b3175,0x003b3466,0x00030005,0x00000096,0x00000078,0x00030005, + 0x00000097,0x00000079,0x00040005,0x00000098,0x756c6176,0x00000065,0x000a0005,0x0000009b, + 0x53786666,0x6f576470,0x72676b72,0x5370756f,0x66667568,0x6142656c,0x65697272,0x00002872, + 0x00090005,0x000000a2,0x45647053,0x57746978,0x676b726f,0x70756f72,0x3b317528,0x753b3175, + 0x00003b31,0x00060005,0x0000009f,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00080005, + 0x000000a0,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005, + 0x000000a1,0x63696c73,0x00000065,0x000c0005,0x000000aa,0x52647053,0x63756465,0x746e4965, + 0x656d7265,0x74616964,0x75762865,0x75763b32,0x75763b32,0x75763b32,0x00003b32,0x00030005, + 0x000000a6,0x00003069,0x00030005,0x000000a7,0x00003169,0x00030005,0x000000a8,0x00003269, + 0x00030005,0x000000a9,0x00003369,0x000b0005,0x000000b2,0x52647053,0x63756465,0x616f4c65, + 0x76283464,0x763b3275,0x763b3275,0x763b3275,0x753b3275,0x00003b31,0x00030005,0x000000ad, + 0x00003069,0x00030005,0x000000ae,0x00003169,0x00030005,0x000000af,0x00003269,0x00030005, + 0x000000b0,0x00003369,0x00040005,0x000000b1,0x63696c73,0x00000065,0x00080005,0x000000b7, + 0x52647053,0x63756465,0x616f4c65,0x76283464,0x753b3275,0x00003b31,0x00040005,0x000000b5, + 0x65736162,0x00000000,0x00040005,0x000000b6,0x63696c73,0x00000065,0x000e0005,0x000000be, + 0x52647053,0x63756465,0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x75762834,0x75763b32, + 0x75763b32,0x75763b32,0x31753b32,0x0000003b,0x00030005,0x000000b9,0x00003069,0x00030005, + 0x000000ba,0x00003169,0x00030005,0x000000bb,0x00003269,0x00030005,0x000000bc,0x00003369, + 0x00040005,0x000000bd,0x63696c73,0x00000065,0x000b0005,0x000000c2,0x52647053,0x63756465, + 0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x32757628,0x3b31753b,0x00000000,0x00040005, + 0x000000c0,0x65736162,0x00000000,0x00040005,0x000000c1,0x63696c73,0x00000065,0x000e0005, + 0x000000cb,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x444c5f31,0x31752853, + 0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x0000003b,0x00030005,0x000000c5,0x00000078, + 0x00030005,0x000000c6,0x00000079,0x00050005,0x000000c7,0x6b726f77,0x756f7247,0x00444970, + 0x00080005,0x000000c8,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000, + 0x00030005,0x000000c9,0x0070696d,0x00040005,0x000000ca,0x63696c73,0x00000065,0x000d0005, + 0x000000d3,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x31752831,0x3b31753b, + 0x3b327576,0x753b3175,0x31753b31,0x0000003b,0x00030005,0x000000cd,0x00000078,0x00030005, + 0x000000ce,0x00000079,0x00050005,0x000000cf,0x6b726f77,0x756f7247,0x00444970,0x00080005, + 0x000000d0,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005, + 0x000000d1,0x0070696d,0x00040005,0x000000d2,0x63696c73,0x00000065,0x000c0005,0x000000db, + 0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7528325f,0x31753b31,0x3275763b,0x3b31753b, + 0x753b3175,0x00003b31,0x00030005,0x000000d5,0x00000078,0x00030005,0x000000d6,0x00000079, + 0x00050005,0x000000d7,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x000000d8,0x61636f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005,0x000000d9,0x0070696d, + 0x00040005,0x000000da,0x63696c73,0x00000065,0x000c0005,0x000000e3,0x44647053,0x736e776f, + 0x6c706d61,0x70694d65,0x7528335f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175,0x00003b31, + 0x00030005,0x000000dd,0x00000078,0x00030005,0x000000de,0x00000079,0x00050005,0x000000df, + 0x6b726f77,0x756f7247,0x00444970,0x00080005,0x000000e0,0x61636f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x7865646e,0x00000000,0x00030005,0x000000e1,0x0070696d,0x00040005,0x000000e2, + 0x63696c73,0x00000065,0x000c0005,0x000000eb,0x44647053,0x736e776f,0x6c706d61,0x70694d65, + 0x7528345f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x000000e5, + 0x00000078,0x00030005,0x000000e6,0x00000079,0x00050005,0x000000e7,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x000000e8,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00030005,0x000000e9,0x0070696d,0x00040005,0x000000ea,0x63696c73,0x00000065, + 0x000b0005,0x000000f2,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7628355f,0x753b3275, + 0x31753b31,0x3b31753b,0x00000000,0x00050005,0x000000ee,0x6b726f77,0x756f7247,0x00444970, + 0x00080005,0x000000ef,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000, + 0x00030005,0x000000f0,0x0070696d,0x00040005,0x000000f1,0x63696c73,0x00000065,0x000b0005, + 0x000000f9,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f365f73,0x31752837,0x3b31753b, + 0x753b3175,0x00003b31,0x00030005,0x000000f5,0x00000078,0x00030005,0x000000f6,0x00000079, + 0x00040005,0x000000f7,0x7370696d,0x00000000,0x00040005,0x000000f8,0x63696c73,0x00000065, + 0x000e0005,0x00000103,0x44647053,0x736e776f,0x6c706d61,0x78654e65,0x756f4674,0x31752872, + 0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x3b31753b,0x00000000,0x00030005,0x000000fc, + 0x00000078,0x00030005,0x000000fd,0x00000079,0x00050005,0x000000fe,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x000000ff,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00040005,0x00000100,0x65736162,0x0070694d,0x00040005,0x00000101,0x7370696d, + 0x00000000,0x00040005,0x00000102,0x63696c73,0x00000065,0x000a0005,0x0000010b,0x44647053, + 0x736e776f,0x6c706d61,0x75762865,0x31753b32,0x3b31753b,0x753b3175,0x00003b31,0x00050005, + 0x00000106,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000107,0x61636f6c,0x766e496c, + 0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x00000108,0x7370696d,0x00000000, + 0x00060005,0x00000109,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005,0x0000010a, + 0x63696c73,0x00000065,0x000b0005,0x00000114,0x44647053,0x736e776f,0x6c706d61,0x75762865, + 0x31753b32,0x3b31753b,0x753b3175,0x75763b31,0x00003b32,0x00050005,0x0000010e,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x0000010f,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00040005,0x00000110,0x7370696d,0x00000000,0x00060005,0x00000111, + 0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005,0x00000112,0x63696c73,0x00000065, + 0x00060005,0x00000113,0x6b726f77,0x756f7247,0x66664f70,0x00746573,0x00090005,0x0000011b, + 0x706d6f43,0x41657475,0x456f7475,0x736f7078,0x28657275,0x3b337576,0x003b3175,0x00050005, + 0x00000119,0x6b726f57,0x756f7247,0x00644970,0x00070005,0x0000011a,0x61636f4c,0x7268546c, + 0x49646165,0x7865646e,0x00000000,0x00040005,0x00000143,0x61726170,0x0000006d,0x00040005, + 0x00000145,0x61726170,0x0000006d,0x00040005,0x00000146,0x61726170,0x0000006d,0x00040005, + 0x00000149,0x61726170,0x0000006d,0x00040005,0x0000014a,0x61726170,0x0000006d,0x00040005, + 0x0000014c,0x61726170,0x0000006d,0x00040005,0x0000014e,0x61726170,0x0000006d,0x00040005, + 0x00000150,0x61726170,0x0000006d,0x00040005,0x00000151,0x61726170,0x0000006d,0x00040005, + 0x00000153,0x61726170,0x0000006d,0x00040005,0x00000155,0x61726170,0x0000006d,0x00040005, + 0x00000156,0x61726170,0x0000006d,0x00040005,0x00000158,0x61726170,0x0000006d,0x00040005, + 0x00000159,0x61726170,0x0000006d,0x00040005,0x0000015a,0x61726170,0x0000006d,0x00070005, + 0x0000015f,0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x0000015f, + 0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006,0x0000015f,0x00000001,0x65725069, + 0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x0000015f, + 0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x0000015f,0x00000003, + 0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006, + 0x0000015f,0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x0000015f, + 0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x0000015f,0x00000006, + 0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x0000015f,0x00000007, + 0x74694a66,0x00726574,0x00090006,0x0000015f,0x00000008,0x65725066,0x756f6976,0x61724673, + 0x694a656d,0x72657474,0x00000000,0x00080006,0x0000015f,0x00000009,0x746f4d66,0x566e6f69, + 0x6f746365,0x61635372,0x0000656c,0x00080006,0x0000015f,0x0000000a,0x776f4466,0x6163736e, + 0x6146656c,0x726f7463,0x00000000,0x000b0006,0x0000015f,0x0000000b,0x746f4d66,0x566e6f69, + 0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x0000015f, + 0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006,0x0000015f,0x0000000d,0x74694a66, + 0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x0000015f,0x0000000e, + 0x6c654466,0x69546174,0x0000656d,0x00080006,0x0000015f,0x0000000f,0x6c654466,0x72506174, + 0x70784565,0x7275736f,0x00000065,0x000a0006,0x0000015f,0x00000010,0x65695666,0x61705377, + 0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x0000015f,0x00000011, + 0x61724666,0x6e49656d,0x00786564,0x00070006,0x0000015f,0x00000012,0x6c655666,0x7469636f, + 0x63614679,0x00726f74,0x00080006,0x0000015f,0x00000013,0x61655266,0x76697463,0x73656e65, + 0x61635373,0x0000656c,0x00080006,0x0000015f,0x00000014,0x61685366,0x676e6964,0x6e616843, + 0x63536567,0x00656c61,0x000a0006,0x0000015f,0x00000015,0x63634166,0x6c756d75,0x6f697461, + 0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006,0x0000015f,0x00000016,0x6e694d66, + 0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005, + 0x00000161,0x53466263,0x70553352,0x6c616373,0x00007265,0x00040005,0x0000016d,0x50536263, + 0x00745f44,0x00050006,0x0000016d,0x00000000,0x7370696d,0x00000000,0x00070006,0x0000016d, + 0x00000001,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00070006,0x0000016d,0x00000002, + 0x6b726f77,0x756f7247,0x66664f70,0x00746573,0x00060006,0x0000016d,0x00000003,0x646e6572, + 0x69537265,0x0000657a,0x00040005,0x0000016f,0x50536263,0x00000044,0x00070005,0x00000182, + 0x61665f72,0x65687472,0x645f7473,0x68747065,0x00000000,0x00080005,0x0000018c,0x665f7772, + 0x68747261,0x5f747365,0x74706564,0x696d5f68,0x00003170,0x00060005,0x00000192,0x75635f72, + 0x6e657272,0x756c5f74,0x0000616d,0x00060005,0x0000019b,0x665f7772,0x656d6172,0x666e695f, + 0x0000006f,0x00050005,0x000001a9,0x735f7772,0x6d5f6470,0x00307069,0x00050005,0x000001b3, + 0x735f7772,0x6d5f6470,0x00317069,0x00050005,0x000001bd,0x735f7772,0x6d5f6470,0x00327069, + 0x00050005,0x000001c7,0x735f7772,0x6d5f6470,0x00337069,0x00050005,0x000001d2,0x735f7772, + 0x6d5f6470,0x00347069,0x00050005,0x000001dd,0x735f7772,0x6d5f6470,0x00357069,0x00080005, + 0x00000224,0x735f7772,0x675f6470,0x61626f6c,0x74615f6c,0x63696d6f,0x00000000,0x00040005, + 0x0000022b,0x75736572,0x0000746c,0x00040005,0x00000232,0x61726170,0x0000006d,0x00040005, + 0x00000235,0x61726170,0x0000006d,0x00040005,0x00000237,0x61726170,0x0000006d,0x00040005, + 0x00000238,0x61726170,0x0000006d,0x00040005,0x0000023e,0x61726170,0x0000006d,0x00040005, + 0x00000241,0x61726170,0x0000006d,0x00040005,0x00000243,0x61726170,0x0000006d,0x00040005, + 0x00000244,0x61726170,0x0000006d,0x00060005,0x0000024c,0x6f707845,0x65727573,0x314f5349, + 0x00003030,0x00040005,0x00000253,0x78616d4c,0x00000000,0x00040005,0x00000256,0x61726170, + 0x0000006d,0x00040005,0x00000257,0x61726170,0x0000006d,0x00050005,0x00000261,0x43647073, + 0x746e756f,0x00007265,0x00040005,0x00000262,0x61726170,0x0000006d,0x00060005,0x0000026a, + 0x53785069,0x6c706d61,0x736f5065,0x00000000,0x00040005,0x0000026e,0x61726170,0x0000006d, + 0x00040005,0x0000026f,0x61726170,0x0000006d,0x00040005,0x00000270,0x61726170,0x0000006d, + 0x00040005,0x00000272,0x6d754c66,0x00000061,0x00040005,0x00000273,0x61726170,0x0000006d, + 0x00050005,0x00000276,0x676f4c66,0x616d754c,0x00000000,0x00040005,0x0000027a,0x61726170, + 0x0000006d,0x00040005,0x0000027b,0x61726170,0x0000006d,0x00080005,0x0000027d,0x72614666, + 0x73656874,0x70654474,0x6e496874,0x6574654d,0x00007372,0x00040005,0x0000027e,0x61726170, + 0x0000006d,0x00040005,0x00000281,0x74754f66,0x00747570,0x00040005,0x0000028c,0x61726170, + 0x0000006d,0x00040005,0x0000028e,0x61726170,0x0000006d,0x00040005,0x000002a4,0x61726170, + 0x0000006d,0x00040005,0x000002a6,0x61726170,0x0000006d,0x00040005,0x000002a9,0x61726170, + 0x0000006d,0x00040005,0x000002b1,0x61726170,0x0000006d,0x00040005,0x000002b3,0x61726170, + 0x0000006d,0x00050005,0x000002c3,0x6d617266,0x666e4965,0x0000006f,0x00060005,0x000002c5, + 0x65635366,0x7641656e,0x6d754c67,0x00000061,0x00060005,0x000002c8,0x65725066,0x676f4c76, + 0x616d754c,0x00000000,0x00050005,0x000002cb,0x676f4c66,0x616d754c,0x00000000,0x00040005, + 0x000002dd,0x61726170,0x0000006d,0x00040005,0x000002de,0x61726170,0x0000006d,0x00040005, + 0x000002e1,0x61726170,0x0000006d,0x00040005,0x000002e9,0x61726170,0x0000006d,0x00070005, + 0x000002f0,0x49647073,0x7265746e,0x6964656d,0x52657461,0x00000000,0x00070005,0x000002f6, + 0x49647073,0x7265746e,0x6964656d,0x47657461,0x00000000,0x00070005,0x000002fb,0x49647073, + 0x7265746e,0x6964656d,0x42657461,0x00000000,0x00070005,0x00000300,0x49647073,0x7265746e, + 0x6964656d,0x41657461,0x00000000,0x00040005,0x00000322,0x61726170,0x0000006d,0x00030005, + 0x0000032c,0x00003076,0x00040005,0x0000032d,0x61726170,0x0000006d,0x00040005,0x00000330, + 0x61726170,0x0000006d,0x00030005,0x00000334,0x00003176,0x00040005,0x00000335,0x61726170, + 0x0000006d,0x00040005,0x00000338,0x61726170,0x0000006d,0x00030005,0x0000033c,0x00003276, + 0x00040005,0x0000033d,0x61726170,0x0000006d,0x00040005,0x00000340,0x61726170,0x0000006d, + 0x00030005,0x00000344,0x00003376,0x00040005,0x00000345,0x61726170,0x0000006d,0x00040005, + 0x00000348,0x61726170,0x0000006d,0x00040005,0x0000034c,0x61726170,0x0000006d,0x00040005, + 0x0000034e,0x61726170,0x0000006d,0x00040005,0x00000350,0x61726170,0x0000006d,0x00040005, + 0x00000352,0x61726170,0x0000006d,0x00030005,0x00000357,0x00003076,0x00040005,0x0000035a, + 0x61726170,0x0000006d,0x00040005,0x0000035b,0x61726170,0x0000006d,0x00030005,0x0000035e, + 0x00003176,0x00040005,0x00000361,0x61726170,0x0000006d,0x00040005,0x00000362,0x61726170, + 0x0000006d,0x00030005,0x00000365,0x00003276,0x00040005,0x00000368,0x61726170,0x0000006d, + 0x00040005,0x00000369,0x61726170,0x0000006d,0x00030005,0x0000036c,0x00003376,0x00040005, + 0x0000036f,0x61726170,0x0000006d,0x00040005,0x00000370,0x61726170,0x0000006d,0x00040005, + 0x00000373,0x61726170,0x0000006d,0x00040005,0x00000375,0x61726170,0x0000006d,0x00040005, + 0x00000377,0x61726170,0x0000006d,0x00040005,0x00000379,0x61726170,0x0000006d,0x00040005, + 0x0000038a,0x61726170,0x0000006d,0x00040005,0x0000038b,0x61726170,0x0000006d,0x00040005, + 0x0000038c,0x61726170,0x0000006d,0x00040005,0x0000038d,0x61726170,0x0000006d,0x00040005, + 0x0000038e,0x61726170,0x0000006d,0x00030005,0x00000393,0x00003076,0x00040005,0x00000397, + 0x61726170,0x0000006d,0x00040005,0x00000398,0x61726170,0x0000006d,0x00030005,0x0000039b, + 0x00003176,0x00040005,0x0000039f,0x61726170,0x0000006d,0x00040005,0x000003a0,0x61726170, + 0x0000006d,0x00030005,0x000003a3,0x00003276,0x00040005,0x000003a7,0x61726170,0x0000006d, + 0x00040005,0x000003a8,0x61726170,0x0000006d,0x00030005,0x000003ab,0x00003376,0x00040005, + 0x000003af,0x61726170,0x0000006d,0x00040005,0x000003b0,0x61726170,0x0000006d,0x00040005, + 0x000003b3,0x61726170,0x0000006d,0x00040005,0x000003b5,0x61726170,0x0000006d,0x00040005, + 0x000003b7,0x61726170,0x0000006d,0x00040005,0x000003b9,0x61726170,0x0000006d,0x00040005, + 0x000003c6,0x61726170,0x0000006d,0x00040005,0x000003c7,0x61726170,0x0000006d,0x00040005, + 0x000003c8,0x61726170,0x0000006d,0x00040005,0x000003c9,0x61726170,0x0000006d,0x00040005, + 0x000003ca,0x61726170,0x0000006d,0x00030005,0x000003cf,0x00786574,0x00030005,0x000003dd, + 0x00786970,0x00030005,0x000003eb,0x00000076,0x00040005,0x000003ee,0x61726170,0x0000006d, + 0x00040005,0x000003ef,0x61726170,0x0000006d,0x00040005,0x000003f3,0x61726170,0x0000006d, + 0x00040005,0x000003f5,0x61726170,0x0000006d,0x00040005,0x000003f8,0x61726170,0x0000006d, + 0x00040005,0x000003f9,0x61726170,0x0000006d,0x00040005,0x00000416,0x61726170,0x0000006d, + 0x00040005,0x00000417,0x61726170,0x0000006d,0x00040005,0x0000041b,0x61726170,0x0000006d, + 0x00040005,0x0000041d,0x61726170,0x0000006d,0x00040005,0x00000420,0x61726170,0x0000006d, + 0x00040005,0x00000421,0x61726170,0x0000006d,0x00040005,0x0000043e,0x61726170,0x0000006d, + 0x00040005,0x0000043f,0x61726170,0x0000006d,0x00040005,0x00000443,0x61726170,0x0000006d, + 0x00040005,0x00000445,0x61726170,0x0000006d,0x00040005,0x00000448,0x61726170,0x0000006d, + 0x00040005,0x00000449,0x61726170,0x0000006d,0x00040005,0x00000469,0x61726170,0x0000006d, + 0x00040005,0x0000046a,0x61726170,0x0000006d,0x00040005,0x0000046e,0x61726170,0x0000006d, + 0x00040005,0x00000470,0x61726170,0x0000006d,0x00040005,0x00000473,0x61726170,0x0000006d, + 0x00040005,0x00000474,0x61726170,0x0000006d,0x00030005,0x0000047c,0x00000069,0x00040005, + 0x00000485,0x61726170,0x0000006d,0x00040005,0x00000487,0x61726170,0x0000006d,0x00040005, + 0x00000489,0x61726170,0x0000006d,0x00040005,0x000004af,0x61726170,0x0000006d,0x00040005, + 0x000004b0,0x61726170,0x0000006d,0x00040005,0x000004b1,0x61726170,0x0000006d,0x00040005, + 0x000004b2,0x61726170,0x0000006d,0x00040005,0x000004c9,0x61726170,0x0000006d,0x00040005, + 0x000004ca,0x61726170,0x0000006d,0x00040005,0x000004cd,0x61726170,0x0000006d,0x00040005, + 0x000004ce,0x61726170,0x0000006d,0x00040005,0x000004dc,0x61726170,0x0000006d,0x00040005, + 0x000004dd,0x61726170,0x0000006d,0x00040005,0x000004de,0x61726170,0x0000006d,0x00040005, + 0x000004e6,0x61726170,0x0000006d,0x00040005,0x000004e7,0x61726170,0x0000006d,0x00040005, + 0x000004e8,0x61726170,0x0000006d,0x00040005,0x000004f0,0x61726170,0x0000006d,0x00040005, + 0x000004f1,0x61726170,0x0000006d,0x00040005,0x000004f2,0x61726170,0x0000006d,0x00040005, + 0x000004fa,0x61726170,0x0000006d,0x00040005,0x000004fb,0x61726170,0x0000006d,0x00040005, + 0x000004fc,0x61726170,0x0000006d,0x00040005,0x00000500,0x61726170,0x0000006d,0x00040005, + 0x00000502,0x61726170,0x0000006d,0x00040005,0x00000504,0x61726170,0x0000006d,0x00040005, + 0x00000506,0x61726170,0x0000006d,0x00040005,0x00000508,0x61726170,0x0000006d,0x00040005, + 0x0000050a,0x61726170,0x0000006d,0x00030005,0x00000511,0x00000076,0x00040005,0x0000052e, + 0x61726170,0x0000006d,0x00040005,0x0000052f,0x61726170,0x0000006d,0x00040005,0x00000530, + 0x61726170,0x0000006d,0x00040005,0x00000531,0x61726170,0x0000006d,0x00040005,0x0000053d, + 0x61726170,0x0000006d,0x00040005,0x0000053e,0x61726170,0x0000006d,0x00040005,0x00000540, + 0x61726170,0x0000006d,0x00040005,0x00000542,0x61726170,0x0000006d,0x00040005,0x0000054c, + 0x61726170,0x0000006d,0x00040005,0x0000054d,0x61726170,0x0000006d,0x00040005,0x0000054e, + 0x61726170,0x0000006d,0x00030005,0x00000555,0x00000076,0x00040005,0x00000576,0x61726170, + 0x0000006d,0x00040005,0x00000577,0x61726170,0x0000006d,0x00040005,0x00000578,0x61726170, + 0x0000006d,0x00040005,0x00000579,0x61726170,0x0000006d,0x00040005,0x00000585,0x61726170, + 0x0000006d,0x00040005,0x00000586,0x61726170,0x0000006d,0x00040005,0x00000588,0x61726170, + 0x0000006d,0x00040005,0x0000058a,0x61726170,0x0000006d,0x00040005,0x00000593,0x61726170, + 0x0000006d,0x00040005,0x00000594,0x61726170,0x0000006d,0x00040005,0x00000595,0x61726170, + 0x0000006d,0x00030005,0x0000059c,0x00000076,0x00040005,0x000005c9,0x61726170,0x0000006d, + 0x00040005,0x000005ca,0x61726170,0x0000006d,0x00040005,0x000005cb,0x61726170,0x0000006d, + 0x00040005,0x000005cc,0x61726170,0x0000006d,0x00040005,0x000005d8,0x61726170,0x0000006d, + 0x00040005,0x000005d9,0x61726170,0x0000006d,0x00040005,0x000005db,0x61726170,0x0000006d, + 0x00040005,0x000005dd,0x61726170,0x0000006d,0x00040005,0x000005e4,0x61726170,0x0000006d, + 0x00040005,0x000005e5,0x61726170,0x0000006d,0x00040005,0x000005e6,0x61726170,0x0000006d, + 0x00030005,0x000005ed,0x00000076,0x00040005,0x000005f0,0x61726170,0x0000006d,0x00040005, + 0x000005f1,0x61726170,0x0000006d,0x00040005,0x000005f2,0x61726170,0x0000006d,0x00040005, + 0x000005f3,0x61726170,0x0000006d,0x00040005,0x000005f7,0x61726170,0x0000006d,0x00040005, + 0x000005f8,0x61726170,0x0000006d,0x00040005,0x000005fa,0x61726170,0x0000006d,0x00040005, + 0x000005fc,0x61726170,0x0000006d,0x00030005,0x000005ff,0x00786574,0x00030005,0x00000609, + 0x00786970,0x00030005,0x00000613,0x00003076,0x00040005,0x00000616,0x61726170,0x0000006d, + 0x00040005,0x00000617,0x61726170,0x0000006d,0x00040005,0x0000061b,0x61726170,0x0000006d, + 0x00040005,0x0000061d,0x61726170,0x0000006d,0x00040005,0x0000061f,0x61726170,0x0000006d, + 0x00040005,0x00000620,0x61726170,0x0000006d,0x00030005,0x00000635,0x00003176,0x00040005, + 0x00000638,0x61726170,0x0000006d,0x00040005,0x00000639,0x61726170,0x0000006d,0x00040005, + 0x0000063c,0x61726170,0x0000006d,0x00040005,0x0000063e,0x61726170,0x0000006d,0x00040005, + 0x00000640,0x61726170,0x0000006d,0x00040005,0x00000641,0x61726170,0x0000006d,0x00030005, + 0x00000656,0x00003276,0x00040005,0x00000659,0x61726170,0x0000006d,0x00040005,0x0000065a, + 0x61726170,0x0000006d,0x00040005,0x0000065d,0x61726170,0x0000006d,0x00040005,0x0000065f, + 0x61726170,0x0000006d,0x00040005,0x00000661,0x61726170,0x0000006d,0x00040005,0x00000662, + 0x61726170,0x0000006d,0x00030005,0x00000677,0x00003376,0x00040005,0x0000067a,0x61726170, + 0x0000006d,0x00040005,0x0000067b,0x61726170,0x0000006d,0x00040005,0x0000067e,0x61726170, + 0x0000006d,0x00040005,0x00000680,0x61726170,0x0000006d,0x00040005,0x00000682,0x61726170, + 0x0000006d,0x00040005,0x00000683,0x61726170,0x0000006d,0x00030005,0x0000068c,0x00000076, + 0x00040005,0x0000068d,0x61726170,0x0000006d,0x00040005,0x0000068f,0x61726170,0x0000006d, + 0x00040005,0x00000691,0x61726170,0x0000006d,0x00040005,0x00000693,0x61726170,0x0000006d, + 0x00040005,0x0000069b,0x61726170,0x0000006d,0x00040005,0x0000069c,0x61726170,0x0000006d, + 0x00040005,0x0000069e,0x61726170,0x0000006d,0x00040005,0x0000069f,0x61726170,0x0000006d, + 0x00040005,0x000006a2,0x61726170,0x0000006d,0x00040005,0x000006a4,0x61726170,0x0000006d, + 0x00040005,0x000006a6,0x61726170,0x0000006d,0x00040005,0x000006b0,0x61726170,0x0000006d, + 0x00040005,0x000006b2,0x61726170,0x0000006d,0x00040005,0x000006b4,0x61726170,0x0000006d, + 0x00040005,0x000006b6,0x61726170,0x0000006d,0x00040005,0x000006b8,0x61726170,0x0000006d, + 0x00040005,0x000006ba,0x61726170,0x0000006d,0x00040005,0x000006c7,0x61726170,0x0000006d, + 0x00040005,0x000006c9,0x61726170,0x0000006d,0x00040005,0x000006cb,0x61726170,0x0000006d, + 0x00040005,0x000006cd,0x61726170,0x0000006d,0x00040005,0x000006cf,0x61726170,0x0000006d, + 0x00040005,0x000006d0,0x61726170,0x0000006d,0x00040005,0x000006dd,0x61726170,0x0000006d, + 0x00040005,0x000006df,0x61726170,0x0000006d,0x00040005,0x000006e1,0x61726170,0x0000006d, + 0x00040005,0x000006e3,0x61726170,0x0000006d,0x00040005,0x000006e5,0x61726170,0x0000006d, + 0x00040005,0x000006e6,0x61726170,0x0000006d,0x00040005,0x000006f3,0x61726170,0x0000006d, + 0x00040005,0x000006f5,0x61726170,0x0000006d,0x00040005,0x000006f7,0x61726170,0x0000006d, + 0x00040005,0x000006f8,0x61726170,0x0000006d,0x00040005,0x000006fb,0x5f627573,0x00007978, + 0x00040005,0x000006fe,0x61726170,0x0000006d,0x00030005,0x00000700,0x00000078,0x00030005, + 0x00000709,0x00000079,0x00040005,0x00000711,0x61726170,0x0000006d,0x00040005,0x00000713, + 0x61726170,0x0000006d,0x00040005,0x00000715,0x61726170,0x0000006d,0x00040005,0x00000717, + 0x61726170,0x0000006d,0x00040005,0x00000719,0x61726170,0x0000006d,0x00040005,0x0000071b, + 0x61726170,0x0000006d,0x00040005,0x0000071e,0x61726170,0x0000006d,0x00040005,0x00000720, + 0x61726170,0x0000006d,0x00040005,0x00000722,0x61726170,0x0000006d,0x00040005,0x00000724, + 0x61726170,0x0000006d,0x00040005,0x00000726,0x61726170,0x0000006d,0x00040005,0x00000727, + 0x61726170,0x0000006d,0x00040005,0x00000729,0x61726170,0x0000006d,0x00040005,0x00000731, + 0x61726170,0x0000006d,0x00040005,0x00000733,0x61726170,0x0000006d,0x00040005,0x00000735, + 0x61726170,0x0000006d,0x00040005,0x0000073b,0x61726170,0x0000006d,0x00040005,0x0000073e, + 0x61726170,0x0000006d,0x00040005,0x00000740,0x61726170,0x0000006d,0x00040005,0x00000742, + 0x61726170,0x0000006d,0x00040005,0x00000744,0x61726170,0x0000006d,0x00040005,0x00000747, + 0x61726170,0x0000006d,0x00040005,0x00000749,0x61726170,0x0000006d,0x00040005,0x0000074b, + 0x61726170,0x0000006d,0x00040005,0x0000074c,0x61726170,0x0000006d,0x00040005,0x0000074e, + 0x61726170,0x0000006d,0x00040005,0x0000074f,0x61726170,0x0000006d,0x00040005,0x00000751, + 0x61726170,0x0000006d,0x00040005,0x00000757,0x61726170,0x0000006d,0x00040005,0x00000758, + 0x61726170,0x0000006d,0x00040005,0x0000075a,0x61726170,0x0000006d,0x00040005,0x0000075c, + 0x61726170,0x0000006d,0x00040005,0x0000075e,0x61726170,0x0000006d,0x00040005,0x00000769, + 0x61726170,0x0000006d,0x00040005,0x0000076a,0x61726170,0x0000006d,0x00040005,0x0000076b, + 0x61726170,0x0000006d,0x00040005,0x0000076c,0x61726170,0x0000006d,0x00040005,0x0000076d, + 0x61726170,0x0000006d,0x00040005,0x0000076e,0x61726170,0x0000006d,0x00060005,0x00000771, + 0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00080005,0x00000773,0x4c5f6c67,0x6c61636f, + 0x6f766e49,0x69746163,0x6e496e6f,0x00786564,0x00040005,0x00000774,0x61726170,0x0000006d, + 0x00040005,0x00000776,0x61726170,0x0000006d,0x00060005,0x0000077d,0x6f505f73,0x43746e69, + 0x706d616c,0x00000000,0x00060005,0x0000077e,0x694c5f73,0x7261656e,0x6d616c43,0x00000070, + 0x00030047,0x0000015f,0x00000002,0x00050048,0x0000015f,0x00000000,0x00000023,0x00000000, + 0x00050048,0x0000015f,0x00000001,0x00000023,0x00000008,0x00050048,0x0000015f,0x00000002, + 0x00000023,0x00000010,0x00050048,0x0000015f,0x00000003,0x00000023,0x00000018,0x00050048, + 0x0000015f,0x00000004,0x00000023,0x00000020,0x00050048,0x0000015f,0x00000005,0x00000023, + 0x00000028,0x00050048,0x0000015f,0x00000006,0x00000023,0x00000030,0x00050048,0x0000015f, + 0x00000007,0x00000023,0x00000040,0x00050048,0x0000015f,0x00000008,0x00000023,0x00000048, + 0x00050048,0x0000015f,0x00000009,0x00000023,0x00000050,0x00050048,0x0000015f,0x0000000a, + 0x00000023,0x00000058,0x00050048,0x0000015f,0x0000000b,0x00000023,0x00000060,0x00050048, + 0x0000015f,0x0000000c,0x00000023,0x00000068,0x00050048,0x0000015f,0x0000000d,0x00000023, + 0x0000006c,0x00050048,0x0000015f,0x0000000e,0x00000023,0x00000070,0x00050048,0x0000015f, + 0x0000000f,0x00000023,0x00000074,0x00050048,0x0000015f,0x00000010,0x00000023,0x00000078, + 0x00050048,0x0000015f,0x00000011,0x00000023,0x0000007c,0x00050048,0x0000015f,0x00000012, + 0x00000023,0x00000080,0x00050048,0x0000015f,0x00000013,0x00000023,0x00000084,0x00050048, + 0x0000015f,0x00000014,0x00000023,0x00000088,0x00050048,0x0000015f,0x00000015,0x00000023, + 0x0000008c,0x00050048,0x0000015f,0x00000016,0x00000023,0x00000090,0x00040047,0x00000161, + 0x00000021,0x0000000b,0x00040047,0x00000161,0x00000022,0x00000000,0x00030047,0x0000016d, + 0x00000002,0x00050048,0x0000016d,0x00000000,0x00000023,0x00000000,0x00050048,0x0000016d, + 0x00000001,0x00000023,0x00000004,0x00050048,0x0000016d,0x00000002,0x00000023,0x00000008, + 0x00050048,0x0000016d,0x00000003,0x00000023,0x00000010,0x00040047,0x0000016f,0x00000021, + 0x0000000c,0x00040047,0x0000016f,0x00000022,0x00000000,0x00040047,0x00000182,0x00000021, + 0x00000001,0x00040047,0x00000182,0x00000022,0x00000000,0x00040047,0x0000018c,0x00000021, + 0x0000000a,0x00040047,0x0000018c,0x00000022,0x00000000,0x00040047,0x00000192,0x00000021, + 0x00000000,0x00040047,0x00000192,0x00000022,0x00000000,0x00040047,0x0000019b,0x00000021, + 0x00000003,0x00040047,0x0000019b,0x00000022,0x00000000,0x00040047,0x000001a9,0x00000021, + 0x00000004,0x00040047,0x000001a9,0x00000022,0x00000000,0x00040047,0x000001b3,0x00000021, + 0x00000005,0x00040047,0x000001b3,0x00000022,0x00000000,0x00040047,0x000001bd,0x00000021, + 0x00000006,0x00040047,0x000001bd,0x00000022,0x00000000,0x00040047,0x000001c7,0x00000021, + 0x00000007,0x00040047,0x000001c7,0x00000022,0x00000000,0x00040047,0x000001d2,0x00000021, + 0x00000008,0x00040047,0x000001d2,0x00000022,0x00000000,0x00030047,0x000001dd,0x00000017, + 0x00040047,0x000001dd,0x00000021,0x00000009,0x00040047,0x000001dd,0x00000022,0x00000000, + 0x00030047,0x00000224,0x00000017,0x00040047,0x00000224,0x00000021,0x00000002,0x00040047, + 0x00000224,0x00000022,0x00000000,0x00040047,0x00000771,0x0000000b,0x0000001a,0x00040047, + 0x00000773,0x0000000b,0x0000001d,0x00040047,0x0000077d,0x00000021,0x000003e8,0x00040047, + 0x0000077d,0x00000022,0x00000000,0x00040047,0x0000077e,0x00000021,0x000003e9,0x00040047, + 0x0000077e,0x00000022,0x00000000,0x00040047,0x00000786,0x0000000b,0x00000019,0x00020013, + 0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000, + 0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008,0x00000006,0x00000007, + 0x00000007,0x00000007,0x00040015,0x00000013,0x00000020,0x00000001,0x00040020,0x00000014, + 0x00000007,0x00000013,0x00050021,0x00000015,0x00000013,0x00000014,0x00000014,0x00030016, + 0x0000001a,0x00000020,0x00040020,0x0000001b,0x00000007,0x0000001a,0x00050021,0x0000001c, + 0x0000001a,0x0000001b,0x0000001b,0x00040017,0x00000029,0x00000006,0x00000002,0x00040021, + 0x0000002a,0x00000029,0x00000007,0x00040017,0x0000002e,0x00000013,0x00000002,0x00030021, + 0x0000002f,0x0000002e,0x00030021,0x00000032,0x0000001a,0x00030021,0x00000035,0x00000006, + 0x00030021,0x0000003a,0x00000029,0x00040020,0x0000003d,0x00000007,0x0000002e,0x00040021, + 0x0000003e,0x0000001a,0x0000003d,0x00050021,0x00000042,0x00000002,0x0000003d,0x0000001b, + 0x00040017,0x0000004a,0x0000001a,0x00000004,0x00030021,0x0000004b,0x0000004a,0x00040020, + 0x0000004e,0x00000007,0x0000004a,0x00040021,0x0000004f,0x00000002,0x0000004e,0x00040017, + 0x00000053,0x0000001a,0x00000002,0x00050021,0x00000054,0x00000053,0x0000003d,0x00000007, + 0x00040020,0x00000059,0x00000007,0x00000053,0x00060021,0x0000005a,0x00000002,0x0000003d, + 0x00000059,0x00000007,0x00040021,0x00000060,0x00000002,0x00000007,0x00060021,0x00000066, + 0x0000002e,0x0000003d,0x0000003d,0x0000003d,0x00040021,0x0000006c,0x0000001a,0x0000001b, + 0x00050021,0x00000078,0x0000004a,0x00000059,0x00000007,0x00050021,0x0000007d,0x0000004a, + 0x0000003d,0x00000007,0x00070021,0x00000082,0x0000004a,0x0000004e,0x0000004e,0x0000004e, + 0x0000004e,0x00070021,0x00000089,0x00000002,0x0000003d,0x0000004e,0x00000007,0x00000007, + 0x00050021,0x00000090,0x0000004a,0x00000007,0x00000007,0x00060021,0x00000095,0x00000002, + 0x00000007,0x00000007,0x0000004e,0x00020014,0x0000009d,0x00060021,0x0000009e,0x0000009d, + 0x00000007,0x00000007,0x00000007,0x00040020,0x000000a4,0x00000007,0x00000029,0x00070021, + 0x000000a5,0x0000004a,0x000000a4,0x000000a4,0x000000a4,0x000000a4,0x00080021,0x000000ac, + 0x0000004a,0x000000a4,0x000000a4,0x000000a4,0x000000a4,0x00000007,0x00050021,0x000000b4, + 0x0000004a,0x000000a4,0x00000007,0x00090021,0x000000c4,0x00000002,0x00000007,0x00000007, + 0x000000a4,0x00000007,0x00000007,0x00000007,0x00070021,0x000000ed,0x00000002,0x000000a4, + 0x00000007,0x00000007,0x00000007,0x00070021,0x000000f4,0x00000002,0x00000007,0x00000007, + 0x00000007,0x00000007,0x000a0021,0x000000fb,0x00000002,0x00000007,0x00000007,0x000000a4, + 0x00000007,0x00000007,0x00000007,0x00000007,0x00080021,0x00000105,0x00000002,0x000000a4, + 0x00000007,0x00000007,0x00000007,0x00000007,0x00090021,0x0000010d,0x00000002,0x000000a4, + 0x00000007,0x00000007,0x00000007,0x00000007,0x000000a4,0x00040017,0x00000116,0x00000006, + 0x00000003,0x00040020,0x00000117,0x00000007,0x00000116,0x00050021,0x00000118,0x00000002, + 0x00000117,0x00000007,0x0004002b,0x00000013,0x00000127,0x00000000,0x0004002b,0x00000006, + 0x00000141,0x00000002,0x0004002b,0x00000006,0x00000142,0x00000003,0x0004002b,0x00000006, + 0x00000148,0x00000001,0x0019001e,0x0000015f,0x0000002e,0x0000002e,0x0000002e,0x0000002e, + 0x0000002e,0x0000002e,0x0000004a,0x00000053,0x00000053,0x00000053,0x00000053,0x00000053, + 0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a, + 0x0000001a,0x0000001a,0x0000001a,0x00040020,0x00000160,0x00000002,0x0000015f,0x0004003b, + 0x00000160,0x00000161,0x00000002,0x00040020,0x00000162,0x00000002,0x0000002e,0x0004002b, + 0x00000013,0x00000167,0x0000000e,0x00040020,0x00000168,0x00000002,0x0000001a,0x0006001e, + 0x0000016d,0x00000006,0x00000006,0x00000029,0x00000029,0x00040020,0x0000016e,0x00000002, + 0x0000016d,0x0004003b,0x0000016e,0x0000016f,0x00000002,0x00040020,0x00000170,0x00000002, + 0x00000006,0x0004002b,0x00000013,0x00000175,0x00000001,0x0004002b,0x00000013,0x0000017a, + 0x00000002,0x00040020,0x0000017b,0x00000002,0x00000029,0x00090019,0x00000180,0x0000001a, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000181, + 0x00000000,0x00000180,0x0004003b,0x00000181,0x00000182,0x00000000,0x0004002b,0x00000006, + 0x00000186,0x00000000,0x00090019,0x0000018a,0x0000001a,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000009,0x00040020,0x0000018b,0x00000000,0x0000018a,0x0004003b, + 0x0000018b,0x0000018c,0x00000000,0x0004002b,0x0000001a,0x00000190,0x00000000,0x0004003b, + 0x00000181,0x00000192,0x00000000,0x00090019,0x00000199,0x0000001a,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000001,0x00040020,0x0000019a,0x00000000,0x00000199, + 0x0004003b,0x0000019a,0x0000019b,0x00000000,0x0005002c,0x0000002e,0x0000019d,0x00000127, + 0x00000127,0x00090019,0x000001a7,0x0000001a,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000007,0x00040020,0x000001a8,0x00000000,0x000001a7,0x0004003b,0x000001a8, + 0x000001a9,0x00000000,0x0004003b,0x000001a8,0x000001b3,0x00000000,0x0004003b,0x000001a8, + 0x000001bd,0x00000000,0x0004003b,0x000001a8,0x000001c7,0x00000000,0x0004002b,0x00000006, + 0x000001ce,0x00000004,0x0004003b,0x000001a8,0x000001d2,0x00000000,0x0004002b,0x00000006, + 0x000001d9,0x00000005,0x0004003b,0x000001a8,0x000001dd,0x00000000,0x0005002c,0x00000053, + 0x000001e3,0x00000190,0x00000190,0x00090019,0x00000222,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000021,0x00040020,0x00000223,0x00000000,0x00000222, + 0x0004003b,0x00000223,0x00000224,0x00000000,0x00040020,0x00000225,0x0000000b,0x00000006, + 0x00040017,0x00000229,0x00000006,0x00000004,0x0007002c,0x00000229,0x0000022a,0x00000186, + 0x00000186,0x00000186,0x00000186,0x0004002b,0x0000001a,0x0000024e,0x42c80000,0x0004002b, + 0x0000001a,0x00000250,0x41480000,0x0004002b,0x0000001a,0x00000254,0x3f99999a,0x0004002b, + 0x0000001a,0x00000255,0x40000000,0x0004002b,0x0000001a,0x0000025b,0x3f800000,0x00040020, + 0x00000260,0x00000004,0x00000006,0x0004003b,0x00000260,0x00000261,0x00000004,0x0004002b, + 0x0000001a,0x00000277,0x387fda40,0x0007002c,0x0000004a,0x00000282,0x00000190,0x00000190, + 0x00000190,0x00000190,0x0004002b,0x0000001a,0x0000029c,0x3e800000,0x00040017,0x000002be, + 0x0000009d,0x00000002,0x0004002b,0x0000001a,0x000002cf,0x461c4000,0x0004002b,0x00000006, + 0x000002ec,0x00000010,0x0004001c,0x000002ed,0x0000001a,0x000002ec,0x0004001c,0x000002ee, + 0x000002ed,0x000002ec,0x00040020,0x000002ef,0x00000004,0x000002ee,0x0004003b,0x000002ef, + 0x000002f0,0x00000004,0x00040020,0x000002f3,0x00000004,0x0000001a,0x0004003b,0x000002ef, + 0x000002f6,0x00000004,0x0004003b,0x000002ef,0x000002fb,0x00000004,0x0004003b,0x000002ef, + 0x00000300,0x00000004,0x0004002b,0x00000006,0x0000031c,0x00000d48,0x0004002b,0x00000006, + 0x0000031d,0x00000108,0x0005002c,0x00000029,0x0000037f,0x00000186,0x00000186,0x0005002c, + 0x00000029,0x00000382,0x00000186,0x00000148,0x0005002c,0x00000029,0x00000385,0x00000148, + 0x00000186,0x0005002c,0x00000029,0x00000388,0x00000148,0x00000148,0x0004002b,0x00000006, + 0x000003d1,0x00000040,0x0004002b,0x00000006,0x000003df,0x00000020,0x0004001c,0x000003e9, + 0x0000004a,0x000001ce,0x00040020,0x000003ea,0x00000007,0x000003e9,0x0004002b,0x00000013, + 0x00000466,0x00000003,0x0004002b,0x00000006,0x000004bc,0x00000008,0x0005002c,0x00000029, + 0x000005ee,0x00000141,0x00000186,0x0005002c,0x00000029,0x000005ef,0x00000142,0x00000186, + 0x0004002b,0x00000006,0x0000061a,0x00000006,0x0004002b,0x00000006,0x00000687,0x00000007, + 0x0004002b,0x00000013,0x00000704,0x00000006,0x0004002b,0x00000013,0x0000070d,0x00000007, + 0x00040020,0x00000770,0x00000001,0x00000116,0x0004003b,0x00000770,0x00000771,0x00000001, + 0x00040020,0x00000772,0x00000001,0x00000006,0x0004003b,0x00000772,0x00000773,0x00000001, + 0x0004002b,0x0000001a,0x00000779,0x477fe000,0x0004002b,0x0000001a,0x0000077a,0x37801002, + 0x0002001a,0x0000077b,0x00040020,0x0000077c,0x00000000,0x0000077b,0x0004003b,0x0000077c, + 0x0000077d,0x00000000,0x0004003b,0x0000077c,0x0000077e,0x00000000,0x0004002b,0x0000001a, + 0x0000077f,0x7f7fffff,0x0004002b,0x0000001a,0x00000780,0x00800000,0x0004002b,0x0000001a, + 0x00000781,0x3a1fe868,0x0004002b,0x0000001a,0x00000782,0x3d800000,0x0004002b,0x0000001a, + 0x00000783,0x3d3d70a4,0x0004002b,0x0000001a,0x00000784,0x3e400000,0x0004002b,0x00000006, + 0x00000785,0x00000100,0x0006002c,0x00000116,0x00000786,0x00000785,0x00000148,0x00000148, + 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b, + 0x00000117,0x00000774,0x00000007,0x0004003b,0x00000007,0x00000776,0x00000007,0x0004003d, + 0x00000116,0x00000775,0x00000771,0x0003003e,0x00000774,0x00000775,0x0004003d,0x00000006, + 0x00000777,0x00000773,0x0003003e,0x00000776,0x00000777,0x00060039,0x00000002,0x00000778, + 0x0000011b,0x00000774,0x00000776,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c, + 0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a, + 0x00030037,0x00000007,0x0000000b,0x000200f8,0x0000000d,0x0004003d,0x00000006,0x0000011d, + 0x00000009,0x0004003d,0x00000006,0x0000011e,0x0000000a,0x0004007c,0x00000013,0x0000011f, + 0x0000011e,0x0004003d,0x00000006,0x00000120,0x0000000b,0x0004007c,0x00000013,0x00000121, + 0x00000120,0x000600cb,0x00000006,0x00000122,0x0000011d,0x0000011f,0x00000121,0x000200fe, + 0x00000122,0x00010038,0x00050036,0x00000006,0x00000011,0x00000000,0x00000008,0x00030037, + 0x00000007,0x0000000e,0x00030037,0x00000007,0x0000000f,0x00030037,0x00000007,0x00000010, + 0x000200f8,0x00000012,0x0004003d,0x00000006,0x00000125,0x0000000e,0x0004003d,0x00000006, + 0x00000126,0x0000000f,0x0004003d,0x00000006,0x00000128,0x00000010,0x0004007c,0x00000013, + 0x00000129,0x00000128,0x000700c9,0x00000006,0x0000012a,0x00000125,0x00000126,0x00000127, + 0x00000129,0x000200fe,0x0000012a,0x00010038,0x00050036,0x00000013,0x00000018,0x00000000, + 0x00000015,0x00030037,0x00000014,0x00000016,0x00030037,0x00000014,0x00000017,0x000200f8, + 0x00000019,0x0004003d,0x00000013,0x0000012d,0x00000016,0x0004003d,0x00000013,0x0000012e, + 0x00000017,0x0007000c,0x00000013,0x0000012f,0x00000001,0x00000027,0x0000012d,0x0000012e, + 0x000200fe,0x0000012f,0x00010038,0x00050036,0x0000001a,0x0000001f,0x00000000,0x0000001c, + 0x00030037,0x0000001b,0x0000001d,0x00030037,0x0000001b,0x0000001e,0x000200f8,0x00000020, + 0x0004003d,0x0000001a,0x00000132,0x0000001d,0x0004003d,0x0000001a,0x00000133,0x0000001e, + 0x0007000c,0x0000001a,0x00000134,0x00000001,0x00000028,0x00000132,0x00000133,0x000200fe, + 0x00000134,0x00010038,0x00050036,0x00000013,0x00000023,0x00000000,0x00000015,0x00030037, + 0x00000014,0x00000021,0x00030037,0x00000014,0x00000022,0x000200f8,0x00000024,0x0004003d, + 0x00000013,0x00000137,0x00000021,0x0004003d,0x00000013,0x00000138,0x00000022,0x0007000c, + 0x00000013,0x00000139,0x00000001,0x0000002a,0x00000137,0x00000138,0x000200fe,0x00000139, + 0x00010038,0x00050036,0x0000001a,0x00000027,0x00000000,0x0000001c,0x00030037,0x0000001b, + 0x00000025,0x00030037,0x0000001b,0x00000026,0x000200f8,0x00000028,0x0004003d,0x0000001a, + 0x0000013c,0x00000025,0x0004003d,0x0000001a,0x0000013d,0x00000026,0x0007000c,0x0000001a, + 0x0000013e,0x00000001,0x0000001a,0x0000013c,0x0000013d,0x000200fe,0x0000013e,0x00010038, + 0x00050036,0x00000029,0x0000002c,0x00000000,0x0000002a,0x00030037,0x00000007,0x0000002b, + 0x000200f8,0x0000002d,0x0004003b,0x00000007,0x00000143,0x00000007,0x0004003b,0x00000007, + 0x00000145,0x00000007,0x0004003b,0x00000007,0x00000146,0x00000007,0x0004003b,0x00000007, + 0x00000149,0x00000007,0x0004003b,0x00000007,0x0000014a,0x00000007,0x0004003b,0x00000007, + 0x0000014c,0x00000007,0x0004003b,0x00000007,0x0000014e,0x00000007,0x0004003b,0x00000007, + 0x00000150,0x00000007,0x0004003b,0x00000007,0x00000151,0x00000007,0x0004003b,0x00000007, + 0x00000153,0x00000007,0x0004003b,0x00000007,0x00000155,0x00000007,0x0004003b,0x00000007, + 0x00000156,0x00000007,0x0004003b,0x00000007,0x00000158,0x00000007,0x0004003b,0x00000007, + 0x00000159,0x00000007,0x0004003b,0x00000007,0x0000015a,0x00000007,0x0004003d,0x00000006, + 0x00000144,0x0000002b,0x0003003e,0x00000143,0x00000144,0x0003003e,0x00000145,0x00000141, + 0x0003003e,0x00000146,0x00000142,0x00070039,0x00000006,0x00000147,0x0000000c,0x00000143, + 0x00000145,0x00000146,0x0003003e,0x00000149,0x00000147,0x0004003d,0x00000006,0x0000014b, + 0x0000002b,0x0003003e,0x0000014a,0x0000014b,0x0003003e,0x0000014c,0x00000148,0x00070039, + 0x00000006,0x0000014d,0x00000011,0x00000149,0x0000014a,0x0000014c,0x0004003d,0x00000006, + 0x0000014f,0x0000002b,0x0003003e,0x0000014e,0x0000014f,0x0003003e,0x00000150,0x00000142, + 0x0003003e,0x00000151,0x00000142,0x00070039,0x00000006,0x00000152,0x0000000c,0x0000014e, + 0x00000150,0x00000151,0x0004003d,0x00000006,0x00000154,0x0000002b,0x0003003e,0x00000153, + 0x00000154,0x0003003e,0x00000155,0x00000148,0x0003003e,0x00000156,0x00000141,0x00070039, + 0x00000006,0x00000157,0x0000000c,0x00000153,0x00000155,0x00000156,0x0003003e,0x00000158, + 0x00000152,0x0003003e,0x00000159,0x00000157,0x0003003e,0x0000015a,0x00000141,0x00070039, + 0x00000006,0x0000015b,0x00000011,0x00000158,0x00000159,0x0000015a,0x00050050,0x00000029, + 0x0000015c,0x0000014d,0x0000015b,0x000200fe,0x0000015c,0x00010038,0x00050036,0x0000002e, + 0x00000030,0x00000000,0x0000002f,0x000200f8,0x00000031,0x00050041,0x00000162,0x00000163, + 0x00000161,0x00000127,0x0004003d,0x0000002e,0x00000164,0x00000163,0x000200fe,0x00000164, + 0x00010038,0x00050036,0x0000001a,0x00000033,0x00000000,0x00000032,0x000200f8,0x00000034, + 0x00050041,0x00000168,0x00000169,0x00000161,0x00000167,0x0004003d,0x0000001a,0x0000016a, + 0x00000169,0x000200fe,0x0000016a,0x00010038,0x00050036,0x00000006,0x00000036,0x00000000, + 0x00000035,0x000200f8,0x00000037,0x00050041,0x00000170,0x00000171,0x0000016f,0x00000127, + 0x0004003d,0x00000006,0x00000172,0x00000171,0x000200fe,0x00000172,0x00010038,0x00050036, + 0x00000006,0x00000038,0x00000000,0x00000035,0x000200f8,0x00000039,0x00050041,0x00000170, + 0x00000176,0x0000016f,0x00000175,0x0004003d,0x00000006,0x00000177,0x00000176,0x000200fe, + 0x00000177,0x00010038,0x00050036,0x00000029,0x0000003b,0x00000000,0x0000003a,0x000200f8, + 0x0000003c,0x00050041,0x0000017b,0x0000017c,0x0000016f,0x0000017a,0x0004003d,0x00000029, + 0x0000017d,0x0000017c,0x000200fe,0x0000017d,0x00010038,0x00050036,0x0000001a,0x00000040, + 0x00000000,0x0000003e,0x00030037,0x0000003d,0x0000003f,0x000200f8,0x00000041,0x0004003d, + 0x00000180,0x00000183,0x00000182,0x0004003d,0x0000002e,0x00000184,0x0000003f,0x0007005f, + 0x0000004a,0x00000185,0x00000183,0x00000184,0x00000002,0x00000127,0x00050051,0x0000001a, + 0x00000187,0x00000185,0x00000000,0x000200fe,0x00000187,0x00010038,0x00050036,0x00000002, + 0x00000045,0x00000000,0x00000042,0x00030037,0x0000003d,0x00000043,0x00030037,0x0000001b, + 0x00000044,0x000200f8,0x00000046,0x0004003d,0x0000018a,0x0000018d,0x0000018c,0x0004003d, + 0x0000002e,0x0000018e,0x00000043,0x0004003d,0x0000001a,0x0000018f,0x00000044,0x00070050, + 0x0000004a,0x00000191,0x0000018f,0x00000190,0x00000190,0x00000190,0x00040063,0x0000018d, + 0x0000018e,0x00000191,0x000100fd,0x00010038,0x00050036,0x0000001a,0x00000048,0x00000000, + 0x0000003e,0x00030037,0x0000003d,0x00000047,0x000200f8,0x00000049,0x0004003d,0x00000180, + 0x00000193,0x00000192,0x0004003d,0x0000002e,0x00000194,0x00000047,0x0007005f,0x0000004a, + 0x00000195,0x00000193,0x00000194,0x00000002,0x00000127,0x00050051,0x0000001a,0x00000196, + 0x00000195,0x00000000,0x000200fe,0x00000196,0x00010038,0x00050036,0x0000004a,0x0000004c, + 0x00000000,0x0000004b,0x000200f8,0x0000004d,0x0004003d,0x00000199,0x0000019c,0x0000019b, + 0x00050062,0x0000004a,0x0000019e,0x0000019c,0x0000019d,0x000200fe,0x0000019e,0x00010038, + 0x00050036,0x00000002,0x00000051,0x00000000,0x0000004f,0x00030037,0x0000004e,0x00000050, + 0x000200f8,0x00000052,0x0004003d,0x00000199,0x000001a1,0x0000019b,0x0004003d,0x0000004a, + 0x000001a2,0x00000050,0x00040063,0x000001a1,0x0000019d,0x000001a2,0x000100fd,0x00010038, + 0x00050036,0x00000053,0x00000057,0x00000000,0x00000054,0x00030037,0x0000003d,0x00000055, + 0x00030037,0x00000007,0x00000056,0x000200f8,0x00000058,0x0004003d,0x00000006,0x000001a3, + 0x00000056,0x000500aa,0x0000009d,0x000001a4,0x000001a3,0x00000186,0x000300f7,0x000001a6, + 0x00000000,0x000400fa,0x000001a4,0x000001a5,0x000001a6,0x000200f8,0x000001a5,0x0004003d, + 0x000001a7,0x000001aa,0x000001a9,0x0004003d,0x0000002e,0x000001ab,0x00000055,0x00050062, + 0x0000004a,0x000001ac,0x000001aa,0x000001ab,0x0007004f,0x00000053,0x000001ad,0x000001ac, + 0x000001ac,0x00000000,0x00000001,0x000200fe,0x000001ad,0x000200f8,0x000001a6,0x0004003d, + 0x00000006,0x000001af,0x00000056,0x000500aa,0x0000009d,0x000001b0,0x000001af,0x00000148, + 0x000300f7,0x000001b2,0x00000000,0x000400fa,0x000001b0,0x000001b1,0x000001b2,0x000200f8, + 0x000001b1,0x0004003d,0x000001a7,0x000001b4,0x000001b3,0x0004003d,0x0000002e,0x000001b5, + 0x00000055,0x00050062,0x0000004a,0x000001b6,0x000001b4,0x000001b5,0x0007004f,0x00000053, + 0x000001b7,0x000001b6,0x000001b6,0x00000000,0x00000001,0x000200fe,0x000001b7,0x000200f8, + 0x000001b2,0x0004003d,0x00000006,0x000001b9,0x00000056,0x000500aa,0x0000009d,0x000001ba, + 0x000001b9,0x00000141,0x000300f7,0x000001bc,0x00000000,0x000400fa,0x000001ba,0x000001bb, + 0x000001bc,0x000200f8,0x000001bb,0x0004003d,0x000001a7,0x000001be,0x000001bd,0x0004003d, + 0x0000002e,0x000001bf,0x00000055,0x00050062,0x0000004a,0x000001c0,0x000001be,0x000001bf, + 0x0007004f,0x00000053,0x000001c1,0x000001c0,0x000001c0,0x00000000,0x00000001,0x000200fe, + 0x000001c1,0x000200f8,0x000001bc,0x0004003d,0x00000006,0x000001c3,0x00000056,0x000500aa, + 0x0000009d,0x000001c4,0x000001c3,0x00000142,0x000300f7,0x000001c6,0x00000000,0x000400fa, + 0x000001c4,0x000001c5,0x000001c6,0x000200f8,0x000001c5,0x0004003d,0x000001a7,0x000001c8, + 0x000001c7,0x0004003d,0x0000002e,0x000001c9,0x00000055,0x00050062,0x0000004a,0x000001ca, + 0x000001c8,0x000001c9,0x0007004f,0x00000053,0x000001cb,0x000001ca,0x000001ca,0x00000000, + 0x00000001,0x000200fe,0x000001cb,0x000200f8,0x000001c6,0x0004003d,0x00000006,0x000001cd, + 0x00000056,0x000500aa,0x0000009d,0x000001cf,0x000001cd,0x000001ce,0x000300f7,0x000001d1, + 0x00000000,0x000400fa,0x000001cf,0x000001d0,0x000001d1,0x000200f8,0x000001d0,0x0004003d, + 0x000001a7,0x000001d3,0x000001d2,0x0004003d,0x0000002e,0x000001d4,0x00000055,0x00050062, + 0x0000004a,0x000001d5,0x000001d3,0x000001d4,0x0007004f,0x00000053,0x000001d6,0x000001d5, + 0x000001d5,0x00000000,0x00000001,0x000200fe,0x000001d6,0x000200f8,0x000001d1,0x0004003d, + 0x00000006,0x000001d8,0x00000056,0x000500aa,0x0000009d,0x000001da,0x000001d8,0x000001d9, + 0x000300f7,0x000001dc,0x00000000,0x000400fa,0x000001da,0x000001db,0x000001dc,0x000200f8, + 0x000001db,0x0004003d,0x000001a7,0x000001de,0x000001dd,0x0004003d,0x0000002e,0x000001df, + 0x00000055,0x00050062,0x0000004a,0x000001e0,0x000001de,0x000001df,0x0007004f,0x00000053, + 0x000001e1,0x000001e0,0x000001e0,0x00000000,0x00000001,0x000200fe,0x000001e1,0x000200f8, + 0x000001dc,0x000200fe,0x000001e3,0x00010038,0x00050036,0x00000002,0x0000005e,0x00000000, + 0x0000005a,0x00030037,0x0000003d,0x0000005b,0x00030037,0x00000059,0x0000005c,0x00030037, + 0x00000007,0x0000005d,0x000200f8,0x0000005f,0x0004003d,0x00000006,0x000001e6,0x0000005d, + 0x000500aa,0x0000009d,0x000001e7,0x000001e6,0x00000186,0x000300f7,0x000001e9,0x00000000, + 0x000400fa,0x000001e7,0x000001e8,0x000001e9,0x000200f8,0x000001e8,0x0004003d,0x000001a7, + 0x000001ea,0x000001a9,0x0004003d,0x0000002e,0x000001eb,0x0000005b,0x0004003d,0x00000053, + 0x000001ec,0x0000005c,0x00050051,0x0000001a,0x000001ed,0x000001ec,0x00000000,0x00050051, + 0x0000001a,0x000001ee,0x000001ec,0x00000001,0x00070050,0x0000004a,0x000001ef,0x000001ed, + 0x000001ee,0x00000190,0x00000190,0x00040063,0x000001ea,0x000001eb,0x000001ef,0x000200f9, + 0x000001e9,0x000200f8,0x000001e9,0x0004003d,0x00000006,0x000001f0,0x0000005d,0x000500aa, + 0x0000009d,0x000001f1,0x000001f0,0x00000148,0x000300f7,0x000001f3,0x00000000,0x000400fa, + 0x000001f1,0x000001f2,0x000001f3,0x000200f8,0x000001f2,0x0004003d,0x000001a7,0x000001f4, + 0x000001b3,0x0004003d,0x0000002e,0x000001f5,0x0000005b,0x0004003d,0x00000053,0x000001f6, + 0x0000005c,0x00050051,0x0000001a,0x000001f7,0x000001f6,0x00000000,0x00050051,0x0000001a, + 0x000001f8,0x000001f6,0x00000001,0x00070050,0x0000004a,0x000001f9,0x000001f7,0x000001f8, + 0x00000190,0x00000190,0x00040063,0x000001f4,0x000001f5,0x000001f9,0x000200f9,0x000001f3, + 0x000200f8,0x000001f3,0x0004003d,0x00000006,0x000001fa,0x0000005d,0x000500aa,0x0000009d, + 0x000001fb,0x000001fa,0x00000141,0x000300f7,0x000001fd,0x00000000,0x000400fa,0x000001fb, + 0x000001fc,0x000001fd,0x000200f8,0x000001fc,0x0004003d,0x000001a7,0x000001fe,0x000001bd, + 0x0004003d,0x0000002e,0x000001ff,0x0000005b,0x0004003d,0x00000053,0x00000200,0x0000005c, + 0x00050051,0x0000001a,0x00000201,0x00000200,0x00000000,0x00050051,0x0000001a,0x00000202, + 0x00000200,0x00000001,0x00070050,0x0000004a,0x00000203,0x00000201,0x00000202,0x00000190, + 0x00000190,0x00040063,0x000001fe,0x000001ff,0x00000203,0x000200f9,0x000001fd,0x000200f8, + 0x000001fd,0x0004003d,0x00000006,0x00000204,0x0000005d,0x000500aa,0x0000009d,0x00000205, + 0x00000204,0x00000142,0x000300f7,0x00000207,0x00000000,0x000400fa,0x00000205,0x00000206, + 0x00000207,0x000200f8,0x00000206,0x0004003d,0x000001a7,0x00000208,0x000001c7,0x0004003d, + 0x0000002e,0x00000209,0x0000005b,0x0004003d,0x00000053,0x0000020a,0x0000005c,0x00050051, + 0x0000001a,0x0000020b,0x0000020a,0x00000000,0x00050051,0x0000001a,0x0000020c,0x0000020a, + 0x00000001,0x00070050,0x0000004a,0x0000020d,0x0000020b,0x0000020c,0x00000190,0x00000190, + 0x00040063,0x00000208,0x00000209,0x0000020d,0x000200f9,0x00000207,0x000200f8,0x00000207, + 0x0004003d,0x00000006,0x0000020e,0x0000005d,0x000500aa,0x0000009d,0x0000020f,0x0000020e, + 0x000001ce,0x000300f7,0x00000211,0x00000000,0x000400fa,0x0000020f,0x00000210,0x00000211, + 0x000200f8,0x00000210,0x0004003d,0x000001a7,0x00000212,0x000001d2,0x0004003d,0x0000002e, + 0x00000213,0x0000005b,0x0004003d,0x00000053,0x00000214,0x0000005c,0x00050051,0x0000001a, + 0x00000215,0x00000214,0x00000000,0x00050051,0x0000001a,0x00000216,0x00000214,0x00000001, + 0x00070050,0x0000004a,0x00000217,0x00000215,0x00000216,0x00000190,0x00000190,0x00040063, + 0x00000212,0x00000213,0x00000217,0x000200f9,0x00000211,0x000200f8,0x00000211,0x0004003d, + 0x00000006,0x00000218,0x0000005d,0x000500aa,0x0000009d,0x00000219,0x00000218,0x000001d9, + 0x000300f7,0x0000021b,0x00000000,0x000400fa,0x00000219,0x0000021a,0x0000021b,0x000200f8, + 0x0000021a,0x0004003d,0x000001a7,0x0000021c,0x000001dd,0x0004003d,0x0000002e,0x0000021d, + 0x0000005b,0x0004003d,0x00000053,0x0000021e,0x0000005c,0x00050051,0x0000001a,0x0000021f, + 0x0000021e,0x00000000,0x00050051,0x0000001a,0x00000220,0x0000021e,0x00000001,0x00070050, + 0x0000004a,0x00000221,0x0000021f,0x00000220,0x00000190,0x00000190,0x00040063,0x0000021c, + 0x0000021d,0x00000221,0x000200f9,0x0000021b,0x000200f8,0x0000021b,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000062,0x00000000,0x00000060,0x00030037,0x00000007,0x00000061, + 0x000200f8,0x00000063,0x0006003c,0x00000225,0x00000226,0x00000224,0x0000019d,0x00000186, + 0x000700ea,0x00000006,0x00000227,0x00000226,0x00000148,0x00000186,0x00000148,0x0003003e, + 0x00000061,0x00000227,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000064,0x00000000, + 0x00000003,0x000200f8,0x00000065,0x0004003d,0x00000222,0x00000228,0x00000224,0x00040063, + 0x00000228,0x0000019d,0x0000022a,0x000100fd,0x00010038,0x00050036,0x0000002e,0x0000006a, + 0x00000000,0x00000066,0x00030037,0x0000003d,0x00000067,0x00030037,0x0000003d,0x00000068, + 0x00030037,0x0000003d,0x00000069,0x000200f8,0x0000006b,0x0004003b,0x0000003d,0x0000022b, + 0x00000007,0x0004003b,0x00000014,0x00000232,0x00000007,0x0004003b,0x00000014,0x00000235, + 0x00000007,0x0004003b,0x00000014,0x00000237,0x00000007,0x0004003b,0x00000014,0x00000238, + 0x00000007,0x0004003b,0x00000014,0x0000023e,0x00000007,0x0004003b,0x00000014,0x00000241, + 0x00000007,0x0004003b,0x00000014,0x00000243,0x00000007,0x0004003b,0x00000014,0x00000244, + 0x00000007,0x0004003d,0x0000002e,0x0000022c,0x00000067,0x0004003d,0x0000002e,0x0000022d, + 0x00000068,0x00050080,0x0000002e,0x0000022e,0x0000022c,0x0000022d,0x0003003e,0x0000022b, + 0x0000022e,0x00050041,0x00000014,0x0000022f,0x00000069,0x00000186,0x0004003d,0x00000013, + 0x00000230,0x0000022f,0x00050082,0x00000013,0x00000231,0x00000230,0x00000175,0x00050041, + 0x00000014,0x00000233,0x0000022b,0x00000186,0x0004003d,0x00000013,0x00000234,0x00000233, + 0x0003003e,0x00000232,0x00000234,0x0003003e,0x00000235,0x00000231,0x00060039,0x00000013, + 0x00000236,0x00000018,0x00000232,0x00000235,0x0003003e,0x00000237,0x00000127,0x0003003e, + 0x00000238,0x00000236,0x00060039,0x00000013,0x00000239,0x00000023,0x00000237,0x00000238, + 0x00050041,0x00000014,0x0000023a,0x0000022b,0x00000186,0x0003003e,0x0000023a,0x00000239, + 0x00050041,0x00000014,0x0000023b,0x00000069,0x00000148,0x0004003d,0x00000013,0x0000023c, + 0x0000023b,0x00050082,0x00000013,0x0000023d,0x0000023c,0x00000175,0x00050041,0x00000014, + 0x0000023f,0x0000022b,0x00000148,0x0004003d,0x00000013,0x00000240,0x0000023f,0x0003003e, + 0x0000023e,0x00000240,0x0003003e,0x00000241,0x0000023d,0x00060039,0x00000013,0x00000242, + 0x00000018,0x0000023e,0x00000241,0x0003003e,0x00000243,0x00000127,0x0003003e,0x00000244, + 0x00000242,0x00060039,0x00000013,0x00000245,0x00000023,0x00000243,0x00000244,0x00050041, + 0x00000014,0x00000246,0x0000022b,0x00000148,0x0003003e,0x00000246,0x00000245,0x0004003d, + 0x0000002e,0x00000247,0x0000022b,0x000200fe,0x00000247,0x00010038,0x00050036,0x0000001a, + 0x0000006e,0x00000000,0x0000006c,0x00030037,0x0000001b,0x0000006d,0x000200f8,0x0000006f, + 0x0004003b,0x0000001b,0x0000024c,0x00000007,0x0004003b,0x0000001b,0x00000253,0x00000007, + 0x0004003b,0x0000001b,0x00000256,0x00000007,0x0004003b,0x0000001b,0x00000257,0x00000007, + 0x0004003d,0x0000001a,0x0000024a,0x0000006d,0x0006000c,0x0000001a,0x0000024b,0x00000001, + 0x0000001b,0x0000024a,0x0003003e,0x0000006d,0x0000024b,0x0004003d,0x0000001a,0x0000024d, + 0x0000006d,0x00050085,0x0000001a,0x0000024f,0x0000024d,0x0000024e,0x00050088,0x0000001a, + 0x00000251,0x0000024f,0x00000250,0x0006000c,0x0000001a,0x00000252,0x00000001,0x0000001e, + 0x00000251,0x0003003e,0x0000024c,0x00000252,0x0003003e,0x00000256,0x00000255,0x0004003d, + 0x0000001a,0x00000258,0x0000024c,0x0003003e,0x00000257,0x00000258,0x00060039,0x0000001a, + 0x00000259,0x00000027,0x00000256,0x00000257,0x00050085,0x0000001a,0x0000025a,0x00000254, + 0x00000259,0x0003003e,0x00000253,0x0000025a,0x0004003d,0x0000001a,0x0000025c,0x00000253, + 0x00050088,0x0000001a,0x0000025d,0x0000025b,0x0000025c,0x000200fe,0x0000025d,0x00010038, + 0x00050036,0x00000002,0x00000071,0x00000000,0x00000060,0x00030037,0x00000007,0x00000070, + 0x000200f8,0x00000072,0x0004003b,0x00000007,0x00000262,0x00000007,0x0004003d,0x00000006, + 0x00000263,0x00000261,0x0003003e,0x00000262,0x00000263,0x00050039,0x00000002,0x00000264, + 0x00000062,0x00000262,0x0004003d,0x00000006,0x00000265,0x00000262,0x0003003e,0x00000261, + 0x00000265,0x000100fd,0x00010038,0x00050036,0x00000006,0x00000073,0x00000000,0x00000035, + 0x000200f8,0x00000074,0x0004003d,0x00000006,0x00000266,0x00000261,0x000200fe,0x00000266, + 0x00010038,0x00050036,0x00000002,0x00000076,0x00000000,0x00000060,0x00030037,0x00000007, + 0x00000075,0x000200f8,0x00000077,0x00040039,0x00000002,0x00000269,0x00000064,0x000100fd, + 0x00010038,0x00050036,0x0000004a,0x0000007b,0x00000000,0x00000078,0x00030037,0x00000059, + 0x00000079,0x00030037,0x00000007,0x0000007a,0x000200f8,0x0000007c,0x0004003b,0x0000003d, + 0x0000026a,0x00000007,0x0004003b,0x0000003d,0x0000026e,0x00000007,0x0004003b,0x0000003d, + 0x0000026f,0x00000007,0x0004003b,0x0000003d,0x00000270,0x00000007,0x0004003b,0x0000001b, + 0x00000272,0x00000007,0x0004003b,0x0000003d,0x00000273,0x00000007,0x0004003b,0x0000001b, + 0x00000276,0x00000007,0x0004003b,0x0000001b,0x0000027a,0x00000007,0x0004003b,0x0000001b, + 0x0000027b,0x00000007,0x0004003b,0x0000001b,0x0000027d,0x00000007,0x0004003b,0x0000003d, + 0x0000027e,0x00000007,0x0004003b,0x0000004e,0x00000281,0x00000007,0x0004003d,0x00000053, + 0x0000026b,0x00000079,0x0004006e,0x0000002e,0x0000026c,0x0000026b,0x00040039,0x0000002e, + 0x0000026d,0x00000030,0x0003003e,0x0000026e,0x0000026c,0x0003003e,0x0000026f,0x0000019d, + 0x0003003e,0x00000270,0x0000026d,0x00070039,0x0000002e,0x00000271,0x0000006a,0x0000026e, + 0x0000026f,0x00000270,0x0003003e,0x0000026a,0x00000271,0x0004003d,0x0000002e,0x00000274, + 0x0000026a,0x0003003e,0x00000273,0x00000274,0x00050039,0x0000001a,0x00000275,0x00000048, + 0x00000273,0x0003003e,0x00000272,0x00000275,0x0004003d,0x0000001a,0x00000278,0x00000272, + 0x0006000c,0x0000001a,0x00000279,0x00000001,0x0000001c,0x00000278,0x0003003e,0x0000027a, + 0x00000277,0x0003003e,0x0000027b,0x00000279,0x00060039,0x0000001a,0x0000027c,0x0000001f, + 0x0000027a,0x0000027b,0x0003003e,0x00000276,0x0000027c,0x0004003d,0x0000002e,0x0000027f, + 0x0000026a,0x0003003e,0x0000027e,0x0000027f,0x00050039,0x0000001a,0x00000280,0x00000040, + 0x0000027e,0x0003003e,0x0000027d,0x00000280,0x0003003e,0x00000281,0x00000282,0x0004003d, + 0x0000001a,0x00000283,0x00000276,0x00050041,0x0000001b,0x00000284,0x00000281,0x00000186, + 0x0003003e,0x00000284,0x00000283,0x0004003d,0x0000001a,0x00000285,0x00000272,0x00050041, + 0x0000001b,0x00000286,0x00000281,0x00000148,0x0003003e,0x00000286,0x00000285,0x0004003d, + 0x0000001a,0x00000287,0x0000027d,0x00050041,0x0000001b,0x00000288,0x00000281,0x00000141, + 0x0003003e,0x00000288,0x00000287,0x0004003d,0x0000004a,0x00000289,0x00000281,0x000200fe, + 0x00000289,0x00010038,0x00050036,0x0000004a,0x00000080,0x00000000,0x0000007d,0x00030037, + 0x0000003d,0x0000007e,0x00030037,0x00000007,0x0000007f,0x000200f8,0x00000081,0x0004003b, + 0x0000003d,0x0000028c,0x00000007,0x0004003b,0x00000007,0x0000028e,0x00000007,0x0004003d, + 0x0000002e,0x0000028d,0x0000007e,0x0003003e,0x0000028c,0x0000028d,0x0003003e,0x0000028e, + 0x000001d9,0x00060039,0x00000053,0x0000028f,0x00000057,0x0000028c,0x0000028e,0x00050051, + 0x0000001a,0x00000290,0x0000028f,0x00000000,0x00050051,0x0000001a,0x00000291,0x0000028f, + 0x00000001,0x00070050,0x0000004a,0x00000292,0x00000290,0x00000291,0x00000190,0x00000190, + 0x000200fe,0x00000292,0x00010038,0x00050036,0x0000004a,0x00000087,0x00000000,0x00000082, + 0x00030037,0x0000004e,0x00000083,0x00030037,0x0000004e,0x00000084,0x00030037,0x0000004e, + 0x00000085,0x00030037,0x0000004e,0x00000086,0x000200f8,0x00000088,0x0004003d,0x0000004a, + 0x00000295,0x00000083,0x0004003d,0x0000004a,0x00000296,0x00000084,0x00050081,0x0000004a, + 0x00000297,0x00000295,0x00000296,0x0004003d,0x0000004a,0x00000298,0x00000085,0x00050081, + 0x0000004a,0x00000299,0x00000297,0x00000298,0x0004003d,0x0000004a,0x0000029a,0x00000086, + 0x00050081,0x0000004a,0x0000029b,0x00000299,0x0000029a,0x0005008e,0x0000004a,0x0000029d, + 0x0000029b,0x0000029c,0x000200fe,0x0000029d,0x00010038,0x00050036,0x00000002,0x0000008e, + 0x00000000,0x00000089,0x00030037,0x0000003d,0x0000008a,0x00030037,0x0000004e,0x0000008b, + 0x00030037,0x00000007,0x0000008c,0x00030037,0x00000007,0x0000008d,0x000200f8,0x0000008f, + 0x0004003b,0x0000003d,0x000002a4,0x00000007,0x0004003b,0x00000059,0x000002a6,0x00000007, + 0x0004003b,0x00000007,0x000002a9,0x00000007,0x0004003b,0x0000003d,0x000002b1,0x00000007, + 0x0004003b,0x0000001b,0x000002b3,0x00000007,0x0004003b,0x0000004e,0x000002c3,0x00000007, + 0x0004003b,0x0000001b,0x000002c5,0x00000007,0x0004003b,0x0000001b,0x000002c8,0x00000007, + 0x0004003b,0x0000001b,0x000002cb,0x00000007,0x0004003b,0x0000001b,0x000002dd,0x00000007, + 0x0004003b,0x0000001b,0x000002de,0x00000007,0x0004003b,0x0000001b,0x000002e1,0x00000007, + 0x0004003b,0x0000004e,0x000002e9,0x00000007,0x0004003d,0x00000006,0x000002a0,0x0000008c, + 0x000500aa,0x0000009d,0x000002a1,0x000002a0,0x000001d9,0x000300f7,0x000002a3,0x00000000, + 0x000400fa,0x000002a1,0x000002a2,0x000002ac,0x000200f8,0x000002a2,0x0004003d,0x0000002e, + 0x000002a5,0x0000008a,0x0003003e,0x000002a4,0x000002a5,0x0004003d,0x0000004a,0x000002a7, + 0x0000008b,0x0007004f,0x00000053,0x000002a8,0x000002a7,0x000002a7,0x00000000,0x00000001, + 0x0003003e,0x000002a6,0x000002a8,0x0004003d,0x00000006,0x000002aa,0x0000008c,0x0003003e, + 0x000002a9,0x000002aa,0x00070039,0x00000002,0x000002ab,0x0000005e,0x000002a4,0x000002a6, + 0x000002a9,0x000200f9,0x000002a3,0x000200f8,0x000002ac,0x0004003d,0x00000006,0x000002ad, + 0x0000008c,0x000500aa,0x0000009d,0x000002ae,0x000002ad,0x00000186,0x000300f7,0x000002b0, + 0x00000000,0x000400fa,0x000002ae,0x000002af,0x000002b0,0x000200f8,0x000002af,0x0004003d, + 0x0000002e,0x000002b2,0x0000008a,0x0003003e,0x000002b1,0x000002b2,0x00050041,0x0000001b, + 0x000002b4,0x0000008b,0x00000141,0x0004003d,0x0000001a,0x000002b5,0x000002b4,0x0003003e, + 0x000002b3,0x000002b5,0x00060039,0x00000002,0x000002b6,0x00000045,0x000002b1,0x000002b3, + 0x000200f9,0x000002b0,0x000200f8,0x000002b0,0x000200f9,0x000002a3,0x000200f8,0x000002a3, + 0x0004003d,0x00000006,0x000002b7,0x0000008c,0x00040039,0x00000006,0x000002b8,0x00000036, + 0x00050082,0x00000006,0x000002b9,0x000002b8,0x00000148,0x000500aa,0x0000009d,0x000002ba, + 0x000002b7,0x000002b9,0x000300f7,0x000002bc,0x00000000,0x000400fa,0x000002ba,0x000002bb, + 0x000002bc,0x000200f8,0x000002bb,0x0004003d,0x0000002e,0x000002bd,0x0000008a,0x000500aa, + 0x000002be,0x000002bf,0x000002bd,0x0000019d,0x0004009b,0x0000009d,0x000002c0,0x000002bf, + 0x000300f7,0x000002c2,0x00000000,0x000400fa,0x000002c0,0x000002c1,0x000002c2,0x000200f8, + 0x000002c1,0x00040039,0x0000004a,0x000002c4,0x0000004c,0x0003003e,0x000002c3,0x000002c4, + 0x00050041,0x0000001b,0x000002c6,0x0000008b,0x00000148,0x0004003d,0x0000001a,0x000002c7, + 0x000002c6,0x0003003e,0x000002c5,0x000002c7,0x00050041,0x0000001b,0x000002c9,0x000002c3, + 0x00000148,0x0004003d,0x0000001a,0x000002ca,0x000002c9,0x0003003e,0x000002c8,0x000002ca, + 0x00050041,0x0000001b,0x000002cc,0x0000008b,0x00000186,0x0004003d,0x0000001a,0x000002cd, + 0x000002cc,0x0003003e,0x000002cb,0x000002cd,0x0004003d,0x0000001a,0x000002ce,0x000002c8, + 0x000500b8,0x0000009d,0x000002d0,0x000002ce,0x000002cf,0x000300f7,0x000002d2,0x00000000, + 0x000400fa,0x000002d0,0x000002d1,0x000002d2,0x000200f8,0x000002d1,0x0004003d,0x0000001a, + 0x000002d3,0x000002c8,0x0004003d,0x0000001a,0x000002d4,0x000002cb,0x0004003d,0x0000001a, + 0x000002d5,0x000002c8,0x00050083,0x0000001a,0x000002d6,0x000002d4,0x000002d5,0x00040039, + 0x0000001a,0x000002d7,0x00000033,0x0004007f,0x0000001a,0x000002d8,0x000002d7,0x0006000c, + 0x0000001a,0x000002d9,0x00000001,0x0000001b,0x000002d8,0x00050083,0x0000001a,0x000002da, + 0x0000025b,0x000002d9,0x00050085,0x0000001a,0x000002db,0x000002d6,0x000002da,0x00050081, + 0x0000001a,0x000002dc,0x000002d3,0x000002db,0x0003003e,0x000002cb,0x000002dc,0x0003003e, + 0x000002dd,0x00000190,0x0004003d,0x0000001a,0x000002df,0x000002cb,0x0003003e,0x000002de, + 0x000002df,0x00060039,0x0000001a,0x000002e0,0x0000001f,0x000002dd,0x000002de,0x0003003e, + 0x000002cb,0x000002e0,0x000200f9,0x000002d2,0x000200f8,0x000002d2,0x0004003d,0x0000001a, + 0x000002e2,0x000002cb,0x0003003e,0x000002e1,0x000002e2,0x00050039,0x0000001a,0x000002e3, + 0x0000006e,0x000002e1,0x00050041,0x0000001b,0x000002e4,0x000002c3,0x00000186,0x0003003e, + 0x000002e4,0x000002e3,0x0004003d,0x0000001a,0x000002e5,0x000002cb,0x00050041,0x0000001b, + 0x000002e6,0x000002c3,0x00000148,0x0003003e,0x000002e6,0x000002e5,0x0004003d,0x0000001a, + 0x000002e7,0x000002c5,0x00050041,0x0000001b,0x000002e8,0x000002c3,0x00000141,0x0003003e, + 0x000002e8,0x000002e7,0x0004003d,0x0000004a,0x000002ea,0x000002c3,0x0003003e,0x000002e9, + 0x000002ea,0x00050039,0x00000002,0x000002eb,0x00000051,0x000002e9,0x000200f9,0x000002c2, + 0x000200f8,0x000002c2,0x000200f9,0x000002bc,0x000200f8,0x000002bc,0x000100fd,0x00010038, + 0x00050036,0x0000004a,0x00000093,0x00000000,0x00000090,0x00030037,0x00000007,0x00000091, + 0x00030037,0x00000007,0x00000092,0x000200f8,0x00000094,0x0004003d,0x00000006,0x000002f1, + 0x00000091,0x0004003d,0x00000006,0x000002f2,0x00000092,0x00060041,0x000002f3,0x000002f4, + 0x000002f0,0x000002f1,0x000002f2,0x0004003d,0x0000001a,0x000002f5,0x000002f4,0x0004003d, + 0x00000006,0x000002f7,0x00000091,0x0004003d,0x00000006,0x000002f8,0x00000092,0x00060041, + 0x000002f3,0x000002f9,0x000002f6,0x000002f7,0x000002f8,0x0004003d,0x0000001a,0x000002fa, + 0x000002f9,0x0004003d,0x00000006,0x000002fc,0x00000091,0x0004003d,0x00000006,0x000002fd, + 0x00000092,0x00060041,0x000002f3,0x000002fe,0x000002fb,0x000002fc,0x000002fd,0x0004003d, + 0x0000001a,0x000002ff,0x000002fe,0x0004003d,0x00000006,0x00000301,0x00000091,0x0004003d, + 0x00000006,0x00000302,0x00000092,0x00060041,0x000002f3,0x00000303,0x00000300,0x00000301, + 0x00000302,0x0004003d,0x0000001a,0x00000304,0x00000303,0x00070050,0x0000004a,0x00000305, + 0x000002f5,0x000002fa,0x000002ff,0x00000304,0x000200fe,0x00000305,0x00010038,0x00050036, + 0x00000002,0x00000099,0x00000000,0x00000095,0x00030037,0x00000007,0x00000096,0x00030037, + 0x00000007,0x00000097,0x00030037,0x0000004e,0x00000098,0x000200f8,0x0000009a,0x0004003d, + 0x00000006,0x00000308,0x00000096,0x0004003d,0x00000006,0x00000309,0x00000097,0x00050041, + 0x0000001b,0x0000030a,0x00000098,0x00000186,0x0004003d,0x0000001a,0x0000030b,0x0000030a, + 0x00060041,0x000002f3,0x0000030c,0x000002f0,0x00000308,0x00000309,0x0003003e,0x0000030c, + 0x0000030b,0x0004003d,0x00000006,0x0000030d,0x00000096,0x0004003d,0x00000006,0x0000030e, + 0x00000097,0x00050041,0x0000001b,0x0000030f,0x00000098,0x00000148,0x0004003d,0x0000001a, + 0x00000310,0x0000030f,0x00060041,0x000002f3,0x00000311,0x000002f6,0x0000030d,0x0000030e, + 0x0003003e,0x00000311,0x00000310,0x0004003d,0x00000006,0x00000312,0x00000096,0x0004003d, + 0x00000006,0x00000313,0x00000097,0x00050041,0x0000001b,0x00000314,0x00000098,0x00000141, + 0x0004003d,0x0000001a,0x00000315,0x00000314,0x00060041,0x000002f3,0x00000316,0x000002fb, + 0x00000312,0x00000313,0x0003003e,0x00000316,0x00000315,0x0004003d,0x00000006,0x00000317, + 0x00000096,0x0004003d,0x00000006,0x00000318,0x00000097,0x00050041,0x0000001b,0x00000319, + 0x00000098,0x00000142,0x0004003d,0x0000001a,0x0000031a,0x00000319,0x00060041,0x000002f3, + 0x0000031b,0x00000300,0x00000317,0x00000318,0x0003003e,0x0000031b,0x0000031a,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x0000009b,0x00000000,0x00000003,0x000200f8,0x0000009c, + 0x000300e1,0x00000141,0x0000031c,0x000400e0,0x00000141,0x00000141,0x0000031d,0x000100fd, + 0x00010038,0x00050036,0x0000009d,0x000000a2,0x00000000,0x0000009e,0x00030037,0x00000007, + 0x0000009f,0x00030037,0x00000007,0x000000a0,0x00030037,0x00000007,0x000000a1,0x000200f8, + 0x000000a3,0x0004003b,0x00000007,0x00000322,0x00000007,0x0004003d,0x00000006,0x0000031e, + 0x000000a0,0x000500aa,0x0000009d,0x0000031f,0x0000031e,0x00000186,0x000300f7,0x00000321, + 0x00000000,0x000400fa,0x0000031f,0x00000320,0x00000321,0x000200f8,0x00000320,0x0004003d, + 0x00000006,0x00000323,0x000000a1,0x0003003e,0x00000322,0x00000323,0x00050039,0x00000002, + 0x00000324,0x00000071,0x00000322,0x000200f9,0x00000321,0x000200f8,0x00000321,0x00040039, + 0x00000002,0x00000325,0x0000009b,0x00040039,0x00000006,0x00000326,0x00000073,0x0004003d, + 0x00000006,0x00000327,0x0000009f,0x00050082,0x00000006,0x00000328,0x00000327,0x00000148, + 0x000500ab,0x0000009d,0x00000329,0x00000326,0x00000328,0x000200fe,0x00000329,0x00010038, + 0x00050036,0x0000004a,0x000000aa,0x00000000,0x000000a5,0x00030037,0x000000a4,0x000000a6, + 0x00030037,0x000000a4,0x000000a7,0x00030037,0x000000a4,0x000000a8,0x00030037,0x000000a4, + 0x000000a9,0x000200f8,0x000000ab,0x0004003b,0x0000004e,0x0000032c,0x00000007,0x0004003b, + 0x00000007,0x0000032d,0x00000007,0x0004003b,0x00000007,0x00000330,0x00000007,0x0004003b, + 0x0000004e,0x00000334,0x00000007,0x0004003b,0x00000007,0x00000335,0x00000007,0x0004003b, + 0x00000007,0x00000338,0x00000007,0x0004003b,0x0000004e,0x0000033c,0x00000007,0x0004003b, + 0x00000007,0x0000033d,0x00000007,0x0004003b,0x00000007,0x00000340,0x00000007,0x0004003b, + 0x0000004e,0x00000344,0x00000007,0x0004003b,0x00000007,0x00000345,0x00000007,0x0004003b, + 0x00000007,0x00000348,0x00000007,0x0004003b,0x0000004e,0x0000034c,0x00000007,0x0004003b, + 0x0000004e,0x0000034e,0x00000007,0x0004003b,0x0000004e,0x00000350,0x00000007,0x0004003b, + 0x0000004e,0x00000352,0x00000007,0x00050041,0x00000007,0x0000032e,0x000000a6,0x00000186, + 0x0004003d,0x00000006,0x0000032f,0x0000032e,0x0003003e,0x0000032d,0x0000032f,0x00050041, + 0x00000007,0x00000331,0x000000a6,0x00000148,0x0004003d,0x00000006,0x00000332,0x00000331, + 0x0003003e,0x00000330,0x00000332,0x00060039,0x0000004a,0x00000333,0x00000093,0x0000032d, + 0x00000330,0x0003003e,0x0000032c,0x00000333,0x00050041,0x00000007,0x00000336,0x000000a7, + 0x00000186,0x0004003d,0x00000006,0x00000337,0x00000336,0x0003003e,0x00000335,0x00000337, + 0x00050041,0x00000007,0x00000339,0x000000a7,0x00000148,0x0004003d,0x00000006,0x0000033a, + 0x00000339,0x0003003e,0x00000338,0x0000033a,0x00060039,0x0000004a,0x0000033b,0x00000093, + 0x00000335,0x00000338,0x0003003e,0x00000334,0x0000033b,0x00050041,0x00000007,0x0000033e, + 0x000000a8,0x00000186,0x0004003d,0x00000006,0x0000033f,0x0000033e,0x0003003e,0x0000033d, + 0x0000033f,0x00050041,0x00000007,0x00000341,0x000000a8,0x00000148,0x0004003d,0x00000006, + 0x00000342,0x00000341,0x0003003e,0x00000340,0x00000342,0x00060039,0x0000004a,0x00000343, + 0x00000093,0x0000033d,0x00000340,0x0003003e,0x0000033c,0x00000343,0x00050041,0x00000007, + 0x00000346,0x000000a9,0x00000186,0x0004003d,0x00000006,0x00000347,0x00000346,0x0003003e, + 0x00000345,0x00000347,0x00050041,0x00000007,0x00000349,0x000000a9,0x00000148,0x0004003d, + 0x00000006,0x0000034a,0x00000349,0x0003003e,0x00000348,0x0000034a,0x00060039,0x0000004a, + 0x0000034b,0x00000093,0x00000345,0x00000348,0x0003003e,0x00000344,0x0000034b,0x0004003d, + 0x0000004a,0x0000034d,0x0000032c,0x0003003e,0x0000034c,0x0000034d,0x0004003d,0x0000004a, + 0x0000034f,0x00000334,0x0003003e,0x0000034e,0x0000034f,0x0004003d,0x0000004a,0x00000351, + 0x0000033c,0x0003003e,0x00000350,0x00000351,0x0004003d,0x0000004a,0x00000353,0x00000344, + 0x0003003e,0x00000352,0x00000353,0x00080039,0x0000004a,0x00000354,0x00000087,0x0000034c, + 0x0000034e,0x00000350,0x00000352,0x000200fe,0x00000354,0x00010038,0x00050036,0x0000004a, + 0x000000b2,0x00000000,0x000000ac,0x00030037,0x000000a4,0x000000ad,0x00030037,0x000000a4, + 0x000000ae,0x00030037,0x000000a4,0x000000af,0x00030037,0x000000a4,0x000000b0,0x00030037, + 0x00000007,0x000000b1,0x000200f8,0x000000b3,0x0004003b,0x0000004e,0x00000357,0x00000007, + 0x0004003b,0x0000003d,0x0000035a,0x00000007,0x0004003b,0x00000007,0x0000035b,0x00000007, + 0x0004003b,0x0000004e,0x0000035e,0x00000007,0x0004003b,0x0000003d,0x00000361,0x00000007, + 0x0004003b,0x00000007,0x00000362,0x00000007,0x0004003b,0x0000004e,0x00000365,0x00000007, + 0x0004003b,0x0000003d,0x00000368,0x00000007,0x0004003b,0x00000007,0x00000369,0x00000007, + 0x0004003b,0x0000004e,0x0000036c,0x00000007,0x0004003b,0x0000003d,0x0000036f,0x00000007, + 0x0004003b,0x00000007,0x00000370,0x00000007,0x0004003b,0x0000004e,0x00000373,0x00000007, + 0x0004003b,0x0000004e,0x00000375,0x00000007,0x0004003b,0x0000004e,0x00000377,0x00000007, + 0x0004003b,0x0000004e,0x00000379,0x00000007,0x0004003d,0x00000029,0x00000358,0x000000ad, + 0x0004007c,0x0000002e,0x00000359,0x00000358,0x0003003e,0x0000035a,0x00000359,0x0004003d, + 0x00000006,0x0000035c,0x000000b1,0x0003003e,0x0000035b,0x0000035c,0x00060039,0x0000004a, + 0x0000035d,0x00000080,0x0000035a,0x0000035b,0x0003003e,0x00000357,0x0000035d,0x0004003d, + 0x00000029,0x0000035f,0x000000ae,0x0004007c,0x0000002e,0x00000360,0x0000035f,0x0003003e, + 0x00000361,0x00000360,0x0004003d,0x00000006,0x00000363,0x000000b1,0x0003003e,0x00000362, + 0x00000363,0x00060039,0x0000004a,0x00000364,0x00000080,0x00000361,0x00000362,0x0003003e, + 0x0000035e,0x00000364,0x0004003d,0x00000029,0x00000366,0x000000af,0x0004007c,0x0000002e, + 0x00000367,0x00000366,0x0003003e,0x00000368,0x00000367,0x0004003d,0x00000006,0x0000036a, + 0x000000b1,0x0003003e,0x00000369,0x0000036a,0x00060039,0x0000004a,0x0000036b,0x00000080, + 0x00000368,0x00000369,0x0003003e,0x00000365,0x0000036b,0x0004003d,0x00000029,0x0000036d, + 0x000000b0,0x0004007c,0x0000002e,0x0000036e,0x0000036d,0x0003003e,0x0000036f,0x0000036e, + 0x0004003d,0x00000006,0x00000371,0x000000b1,0x0003003e,0x00000370,0x00000371,0x00060039, + 0x0000004a,0x00000372,0x00000080,0x0000036f,0x00000370,0x0003003e,0x0000036c,0x00000372, + 0x0004003d,0x0000004a,0x00000374,0x00000357,0x0003003e,0x00000373,0x00000374,0x0004003d, + 0x0000004a,0x00000376,0x0000035e,0x0003003e,0x00000375,0x00000376,0x0004003d,0x0000004a, + 0x00000378,0x00000365,0x0003003e,0x00000377,0x00000378,0x0004003d,0x0000004a,0x0000037a, + 0x0000036c,0x0003003e,0x00000379,0x0000037a,0x00080039,0x0000004a,0x0000037b,0x00000087, + 0x00000373,0x00000375,0x00000377,0x00000379,0x000200fe,0x0000037b,0x00010038,0x00050036, + 0x0000004a,0x000000b7,0x00000000,0x000000b4,0x00030037,0x000000a4,0x000000b5,0x00030037, + 0x00000007,0x000000b6,0x000200f8,0x000000b8,0x0004003b,0x000000a4,0x0000038a,0x00000007, + 0x0004003b,0x000000a4,0x0000038b,0x00000007,0x0004003b,0x000000a4,0x0000038c,0x00000007, + 0x0004003b,0x000000a4,0x0000038d,0x00000007,0x0004003b,0x00000007,0x0000038e,0x00000007, + 0x0004003d,0x00000029,0x0000037e,0x000000b5,0x00050080,0x00000029,0x00000380,0x0000037e, + 0x0000037f,0x0004003d,0x00000029,0x00000381,0x000000b5,0x00050080,0x00000029,0x00000383, + 0x00000381,0x00000382,0x0004003d,0x00000029,0x00000384,0x000000b5,0x00050080,0x00000029, + 0x00000386,0x00000384,0x00000385,0x0004003d,0x00000029,0x00000387,0x000000b5,0x00050080, + 0x00000029,0x00000389,0x00000387,0x00000388,0x0003003e,0x0000038a,0x00000380,0x0003003e, + 0x0000038b,0x00000383,0x0003003e,0x0000038c,0x00000386,0x0003003e,0x0000038d,0x00000389, + 0x0004003d,0x00000006,0x0000038f,0x000000b6,0x0003003e,0x0000038e,0x0000038f,0x00090039, + 0x0000004a,0x00000390,0x000000b2,0x0000038a,0x0000038b,0x0000038c,0x0000038d,0x0000038e, + 0x000200fe,0x00000390,0x00010038,0x00050036,0x0000004a,0x000000be,0x00000000,0x000000ac, + 0x00030037,0x000000a4,0x000000b9,0x00030037,0x000000a4,0x000000ba,0x00030037,0x000000a4, + 0x000000bb,0x00030037,0x000000a4,0x000000bc,0x00030037,0x00000007,0x000000bd,0x000200f8, + 0x000000bf,0x0004003b,0x0000004e,0x00000393,0x00000007,0x0004003b,0x00000059,0x00000397, + 0x00000007,0x0004003b,0x00000007,0x00000398,0x00000007,0x0004003b,0x0000004e,0x0000039b, + 0x00000007,0x0004003b,0x00000059,0x0000039f,0x00000007,0x0004003b,0x00000007,0x000003a0, + 0x00000007,0x0004003b,0x0000004e,0x000003a3,0x00000007,0x0004003b,0x00000059,0x000003a7, + 0x00000007,0x0004003b,0x00000007,0x000003a8,0x00000007,0x0004003b,0x0000004e,0x000003ab, + 0x00000007,0x0004003b,0x00000059,0x000003af,0x00000007,0x0004003b,0x00000007,0x000003b0, + 0x00000007,0x0004003b,0x0000004e,0x000003b3,0x00000007,0x0004003b,0x0000004e,0x000003b5, + 0x00000007,0x0004003b,0x0000004e,0x000003b7,0x00000007,0x0004003b,0x0000004e,0x000003b9, + 0x00000007,0x0004003d,0x00000029,0x00000394,0x000000b9,0x0004007c,0x0000002e,0x00000395, + 0x00000394,0x0004006f,0x00000053,0x00000396,0x00000395,0x0003003e,0x00000397,0x00000396, + 0x0004003d,0x00000006,0x00000399,0x000000bd,0x0003003e,0x00000398,0x00000399,0x00060039, + 0x0000004a,0x0000039a,0x0000007b,0x00000397,0x00000398,0x0003003e,0x00000393,0x0000039a, + 0x0004003d,0x00000029,0x0000039c,0x000000ba,0x0004007c,0x0000002e,0x0000039d,0x0000039c, + 0x0004006f,0x00000053,0x0000039e,0x0000039d,0x0003003e,0x0000039f,0x0000039e,0x0004003d, + 0x00000006,0x000003a1,0x000000bd,0x0003003e,0x000003a0,0x000003a1,0x00060039,0x0000004a, + 0x000003a2,0x0000007b,0x0000039f,0x000003a0,0x0003003e,0x0000039b,0x000003a2,0x0004003d, + 0x00000029,0x000003a4,0x000000bb,0x0004007c,0x0000002e,0x000003a5,0x000003a4,0x0004006f, + 0x00000053,0x000003a6,0x000003a5,0x0003003e,0x000003a7,0x000003a6,0x0004003d,0x00000006, + 0x000003a9,0x000000bd,0x0003003e,0x000003a8,0x000003a9,0x00060039,0x0000004a,0x000003aa, + 0x0000007b,0x000003a7,0x000003a8,0x0003003e,0x000003a3,0x000003aa,0x0004003d,0x00000029, + 0x000003ac,0x000000bc,0x0004007c,0x0000002e,0x000003ad,0x000003ac,0x0004006f,0x00000053, + 0x000003ae,0x000003ad,0x0003003e,0x000003af,0x000003ae,0x0004003d,0x00000006,0x000003b1, + 0x000000bd,0x0003003e,0x000003b0,0x000003b1,0x00060039,0x0000004a,0x000003b2,0x0000007b, + 0x000003af,0x000003b0,0x0003003e,0x000003ab,0x000003b2,0x0004003d,0x0000004a,0x000003b4, + 0x00000393,0x0003003e,0x000003b3,0x000003b4,0x0004003d,0x0000004a,0x000003b6,0x0000039b, + 0x0003003e,0x000003b5,0x000003b6,0x0004003d,0x0000004a,0x000003b8,0x000003a3,0x0003003e, + 0x000003b7,0x000003b8,0x0004003d,0x0000004a,0x000003ba,0x000003ab,0x0003003e,0x000003b9, + 0x000003ba,0x00080039,0x0000004a,0x000003bb,0x00000087,0x000003b3,0x000003b5,0x000003b7, + 0x000003b9,0x000200fe,0x000003bb,0x00010038,0x00050036,0x0000004a,0x000000c2,0x00000000, + 0x000000b4,0x00030037,0x000000a4,0x000000c0,0x00030037,0x00000007,0x000000c1,0x000200f8, + 0x000000c3,0x0004003b,0x000000a4,0x000003c6,0x00000007,0x0004003b,0x000000a4,0x000003c7, + 0x00000007,0x0004003b,0x000000a4,0x000003c8,0x00000007,0x0004003b,0x000000a4,0x000003c9, + 0x00000007,0x0004003b,0x00000007,0x000003ca,0x00000007,0x0004003d,0x00000029,0x000003be, + 0x000000c0,0x00050080,0x00000029,0x000003bf,0x000003be,0x0000037f,0x0004003d,0x00000029, + 0x000003c0,0x000000c0,0x00050080,0x00000029,0x000003c1,0x000003c0,0x00000382,0x0004003d, + 0x00000029,0x000003c2,0x000000c0,0x00050080,0x00000029,0x000003c3,0x000003c2,0x00000385, + 0x0004003d,0x00000029,0x000003c4,0x000000c0,0x00050080,0x00000029,0x000003c5,0x000003c4, + 0x00000388,0x0003003e,0x000003c6,0x000003bf,0x0003003e,0x000003c7,0x000003c1,0x0003003e, + 0x000003c8,0x000003c3,0x0003003e,0x000003c9,0x000003c5,0x0004003d,0x00000006,0x000003cb, + 0x000000c1,0x0003003e,0x000003ca,0x000003cb,0x00090039,0x0000004a,0x000003cc,0x000000be, + 0x000003c6,0x000003c7,0x000003c8,0x000003c9,0x000003ca,0x000200fe,0x000003cc,0x00010038, + 0x00050036,0x00000002,0x000000cb,0x00000000,0x000000c4,0x00030037,0x00000007,0x000000c5, + 0x00030037,0x00000007,0x000000c6,0x00030037,0x000000a4,0x000000c7,0x00030037,0x00000007, + 0x000000c8,0x00030037,0x00000007,0x000000c9,0x00030037,0x00000007,0x000000ca,0x000200f8, + 0x000000cc,0x0004003b,0x0000003d,0x000003cf,0x00000007,0x0004003b,0x0000003d,0x000003dd, + 0x00000007,0x0004003b,0x000003ea,0x000003eb,0x00000007,0x0004003b,0x000000a4,0x000003ee, + 0x00000007,0x0004003b,0x00000007,0x000003ef,0x00000007,0x0004003b,0x0000003d,0x000003f3, + 0x00000007,0x0004003b,0x0000004e,0x000003f5,0x00000007,0x0004003b,0x00000007,0x000003f8, + 0x00000007,0x0004003b,0x00000007,0x000003f9,0x00000007,0x0004003b,0x000000a4,0x00000416, + 0x00000007,0x0004003b,0x00000007,0x00000417,0x00000007,0x0004003b,0x0000003d,0x0000041b, + 0x00000007,0x0004003b,0x0000004e,0x0000041d,0x00000007,0x0004003b,0x00000007,0x00000420, + 0x00000007,0x0004003b,0x00000007,0x00000421,0x00000007,0x0004003b,0x000000a4,0x0000043e, + 0x00000007,0x0004003b,0x00000007,0x0000043f,0x00000007,0x0004003b,0x0000003d,0x00000443, + 0x00000007,0x0004003b,0x0000004e,0x00000445,0x00000007,0x0004003b,0x00000007,0x00000448, + 0x00000007,0x0004003b,0x00000007,0x00000449,0x00000007,0x0004003b,0x000000a4,0x00000469, + 0x00000007,0x0004003b,0x00000007,0x0000046a,0x00000007,0x0004003b,0x0000003d,0x0000046e, + 0x00000007,0x0004003b,0x0000004e,0x00000470,0x00000007,0x0004003b,0x00000007,0x00000473, + 0x00000007,0x0004003b,0x00000007,0x00000474,0x00000007,0x0004003b,0x00000007,0x0000047c, + 0x00000007,0x0004003b,0x00000007,0x00000485,0x00000007,0x0004003b,0x00000007,0x00000487, + 0x00000007,0x0004003b,0x0000004e,0x00000489,0x00000007,0x0004003b,0x000000a4,0x000004af, + 0x00000007,0x0004003b,0x000000a4,0x000004b0,0x00000007,0x0004003b,0x000000a4,0x000004b1, + 0x00000007,0x0004003b,0x000000a4,0x000004b2,0x00000007,0x0004003b,0x0000003d,0x000004c9, + 0x00000007,0x0004003b,0x0000004e,0x000004ca,0x00000007,0x0004003b,0x00000007,0x000004cd, + 0x00000007,0x0004003b,0x00000007,0x000004ce,0x00000007,0x0004003b,0x00000007,0x000004dc, + 0x00000007,0x0004003b,0x00000007,0x000004dd,0x00000007,0x0004003b,0x0000004e,0x000004de, + 0x00000007,0x0004003b,0x00000007,0x000004e6,0x00000007,0x0004003b,0x00000007,0x000004e7, + 0x00000007,0x0004003b,0x0000004e,0x000004e8,0x00000007,0x0004003b,0x00000007,0x000004f0, + 0x00000007,0x0004003b,0x00000007,0x000004f1,0x00000007,0x0004003b,0x0000004e,0x000004f2, + 0x00000007,0x0004003b,0x00000007,0x000004fa,0x00000007,0x0004003b,0x00000007,0x000004fb, + 0x00000007,0x0004003b,0x0000004e,0x000004fc,0x00000007,0x0004003d,0x00000029,0x000003d0, + 0x000000c7,0x00050050,0x00000029,0x000003d2,0x000003d1,0x000003d1,0x00050084,0x00000029, + 0x000003d3,0x000003d0,0x000003d2,0x0004007c,0x0000002e,0x000003d4,0x000003d3,0x0004003d, + 0x00000006,0x000003d5,0x000000c5,0x00050084,0x00000006,0x000003d6,0x000003d5,0x00000141, + 0x0004007c,0x00000013,0x000003d7,0x000003d6,0x0004003d,0x00000006,0x000003d8,0x000000c6, + 0x00050084,0x00000006,0x000003d9,0x000003d8,0x00000141,0x0004007c,0x00000013,0x000003da, + 0x000003d9,0x00050050,0x0000002e,0x000003db,0x000003d7,0x000003da,0x00050080,0x0000002e, + 0x000003dc,0x000003d4,0x000003db,0x0003003e,0x000003cf,0x000003dc,0x0004003d,0x00000029, + 0x000003de,0x000000c7,0x00050050,0x00000029,0x000003e0,0x000003df,0x000003df,0x00050084, + 0x00000029,0x000003e1,0x000003de,0x000003e0,0x0004007c,0x0000002e,0x000003e2,0x000003e1, + 0x0004003d,0x00000006,0x000003e3,0x000000c5,0x0004007c,0x00000013,0x000003e4,0x000003e3, + 0x0004003d,0x00000006,0x000003e5,0x000000c6,0x0004007c,0x00000013,0x000003e6,0x000003e5, + 0x00050050,0x0000002e,0x000003e7,0x000003e4,0x000003e6,0x00050080,0x0000002e,0x000003e8, + 0x000003e2,0x000003e7,0x0003003e,0x000003dd,0x000003e8,0x0004003d,0x0000002e,0x000003ec, + 0x000003cf,0x0004007c,0x00000029,0x000003ed,0x000003ec,0x0003003e,0x000003ee,0x000003ed, + 0x0004003d,0x00000006,0x000003f0,0x000000ca,0x0003003e,0x000003ef,0x000003f0,0x00060039, + 0x0000004a,0x000003f1,0x000000c2,0x000003ee,0x000003ef,0x00050041,0x0000004e,0x000003f2, + 0x000003eb,0x00000127,0x0003003e,0x000003f2,0x000003f1,0x0004003d,0x0000002e,0x000003f4, + 0x000003dd,0x0003003e,0x000003f3,0x000003f4,0x00050041,0x0000004e,0x000003f6,0x000003eb, + 0x00000127,0x0004003d,0x0000004a,0x000003f7,0x000003f6,0x0003003e,0x000003f5,0x000003f7, + 0x0003003e,0x000003f8,0x00000186,0x0004003d,0x00000006,0x000003fa,0x000000ca,0x0003003e, + 0x000003f9,0x000003fa,0x00080039,0x00000002,0x000003fb,0x0000008e,0x000003f3,0x000003f5, + 0x000003f8,0x000003f9,0x0004003d,0x00000029,0x000003fc,0x000000c7,0x00050050,0x00000029, + 0x000003fd,0x000003d1,0x000003d1,0x00050084,0x00000029,0x000003fe,0x000003fc,0x000003fd, + 0x0004007c,0x0000002e,0x000003ff,0x000003fe,0x0004003d,0x00000006,0x00000400,0x000000c5, + 0x00050084,0x00000006,0x00000401,0x00000400,0x00000141,0x00050080,0x00000006,0x00000402, + 0x00000401,0x000003df,0x0004007c,0x00000013,0x00000403,0x00000402,0x0004003d,0x00000006, + 0x00000404,0x000000c6,0x00050084,0x00000006,0x00000405,0x00000404,0x00000141,0x0004007c, + 0x00000013,0x00000406,0x00000405,0x00050050,0x0000002e,0x00000407,0x00000403,0x00000406, + 0x00050080,0x0000002e,0x00000408,0x000003ff,0x00000407,0x0003003e,0x000003cf,0x00000408, + 0x0004003d,0x00000029,0x00000409,0x000000c7,0x00050050,0x00000029,0x0000040a,0x000003df, + 0x000003df,0x00050084,0x00000029,0x0000040b,0x00000409,0x0000040a,0x0004007c,0x0000002e, + 0x0000040c,0x0000040b,0x0004003d,0x00000006,0x0000040d,0x000000c5,0x00050080,0x00000006, + 0x0000040e,0x0000040d,0x000002ec,0x0004007c,0x00000013,0x0000040f,0x0000040e,0x0004003d, + 0x00000006,0x00000410,0x000000c6,0x0004007c,0x00000013,0x00000411,0x00000410,0x00050050, + 0x0000002e,0x00000412,0x0000040f,0x00000411,0x00050080,0x0000002e,0x00000413,0x0000040c, + 0x00000412,0x0003003e,0x000003dd,0x00000413,0x0004003d,0x0000002e,0x00000414,0x000003cf, + 0x0004007c,0x00000029,0x00000415,0x00000414,0x0003003e,0x00000416,0x00000415,0x0004003d, + 0x00000006,0x00000418,0x000000ca,0x0003003e,0x00000417,0x00000418,0x00060039,0x0000004a, + 0x00000419,0x000000c2,0x00000416,0x00000417,0x00050041,0x0000004e,0x0000041a,0x000003eb, + 0x00000175,0x0003003e,0x0000041a,0x00000419,0x0004003d,0x0000002e,0x0000041c,0x000003dd, + 0x0003003e,0x0000041b,0x0000041c,0x00050041,0x0000004e,0x0000041e,0x000003eb,0x00000175, + 0x0004003d,0x0000004a,0x0000041f,0x0000041e,0x0003003e,0x0000041d,0x0000041f,0x0003003e, + 0x00000420,0x00000186,0x0004003d,0x00000006,0x00000422,0x000000ca,0x0003003e,0x00000421, + 0x00000422,0x00080039,0x00000002,0x00000423,0x0000008e,0x0000041b,0x0000041d,0x00000420, + 0x00000421,0x0004003d,0x00000029,0x00000424,0x000000c7,0x00050050,0x00000029,0x00000425, + 0x000003d1,0x000003d1,0x00050084,0x00000029,0x00000426,0x00000424,0x00000425,0x0004007c, + 0x0000002e,0x00000427,0x00000426,0x0004003d,0x00000006,0x00000428,0x000000c5,0x00050084, + 0x00000006,0x00000429,0x00000428,0x00000141,0x0004007c,0x00000013,0x0000042a,0x00000429, + 0x0004003d,0x00000006,0x0000042b,0x000000c6,0x00050084,0x00000006,0x0000042c,0x0000042b, + 0x00000141,0x00050080,0x00000006,0x0000042d,0x0000042c,0x000003df,0x0004007c,0x00000013, + 0x0000042e,0x0000042d,0x00050050,0x0000002e,0x0000042f,0x0000042a,0x0000042e,0x00050080, + 0x0000002e,0x00000430,0x00000427,0x0000042f,0x0003003e,0x000003cf,0x00000430,0x0004003d, + 0x00000029,0x00000431,0x000000c7,0x00050050,0x00000029,0x00000432,0x000003df,0x000003df, + 0x00050084,0x00000029,0x00000433,0x00000431,0x00000432,0x0004007c,0x0000002e,0x00000434, + 0x00000433,0x0004003d,0x00000006,0x00000435,0x000000c5,0x0004007c,0x00000013,0x00000436, + 0x00000435,0x0004003d,0x00000006,0x00000437,0x000000c6,0x00050080,0x00000006,0x00000438, + 0x00000437,0x000002ec,0x0004007c,0x00000013,0x00000439,0x00000438,0x00050050,0x0000002e, + 0x0000043a,0x00000436,0x00000439,0x00050080,0x0000002e,0x0000043b,0x00000434,0x0000043a, + 0x0003003e,0x000003dd,0x0000043b,0x0004003d,0x0000002e,0x0000043c,0x000003cf,0x0004007c, + 0x00000029,0x0000043d,0x0000043c,0x0003003e,0x0000043e,0x0000043d,0x0004003d,0x00000006, + 0x00000440,0x000000ca,0x0003003e,0x0000043f,0x00000440,0x00060039,0x0000004a,0x00000441, + 0x000000c2,0x0000043e,0x0000043f,0x00050041,0x0000004e,0x00000442,0x000003eb,0x0000017a, + 0x0003003e,0x00000442,0x00000441,0x0004003d,0x0000002e,0x00000444,0x000003dd,0x0003003e, + 0x00000443,0x00000444,0x00050041,0x0000004e,0x00000446,0x000003eb,0x0000017a,0x0004003d, + 0x0000004a,0x00000447,0x00000446,0x0003003e,0x00000445,0x00000447,0x0003003e,0x00000448, + 0x00000186,0x0004003d,0x00000006,0x0000044a,0x000000ca,0x0003003e,0x00000449,0x0000044a, + 0x00080039,0x00000002,0x0000044b,0x0000008e,0x00000443,0x00000445,0x00000448,0x00000449, + 0x0004003d,0x00000029,0x0000044c,0x000000c7,0x00050050,0x00000029,0x0000044d,0x000003d1, + 0x000003d1,0x00050084,0x00000029,0x0000044e,0x0000044c,0x0000044d,0x0004007c,0x0000002e, + 0x0000044f,0x0000044e,0x0004003d,0x00000006,0x00000450,0x000000c5,0x00050084,0x00000006, + 0x00000451,0x00000450,0x00000141,0x00050080,0x00000006,0x00000452,0x00000451,0x000003df, + 0x0004007c,0x00000013,0x00000453,0x00000452,0x0004003d,0x00000006,0x00000454,0x000000c6, + 0x00050084,0x00000006,0x00000455,0x00000454,0x00000141,0x00050080,0x00000006,0x00000456, + 0x00000455,0x000003df,0x0004007c,0x00000013,0x00000457,0x00000456,0x00050050,0x0000002e, + 0x00000458,0x00000453,0x00000457,0x00050080,0x0000002e,0x00000459,0x0000044f,0x00000458, + 0x0003003e,0x000003cf,0x00000459,0x0004003d,0x00000029,0x0000045a,0x000000c7,0x00050050, + 0x00000029,0x0000045b,0x000003df,0x000003df,0x00050084,0x00000029,0x0000045c,0x0000045a, + 0x0000045b,0x0004007c,0x0000002e,0x0000045d,0x0000045c,0x0004003d,0x00000006,0x0000045e, + 0x000000c5,0x00050080,0x00000006,0x0000045f,0x0000045e,0x000002ec,0x0004007c,0x00000013, + 0x00000460,0x0000045f,0x0004003d,0x00000006,0x00000461,0x000000c6,0x00050080,0x00000006, + 0x00000462,0x00000461,0x000002ec,0x0004007c,0x00000013,0x00000463,0x00000462,0x00050050, + 0x0000002e,0x00000464,0x00000460,0x00000463,0x00050080,0x0000002e,0x00000465,0x0000045d, + 0x00000464,0x0003003e,0x000003dd,0x00000465,0x0004003d,0x0000002e,0x00000467,0x000003cf, + 0x0004007c,0x00000029,0x00000468,0x00000467,0x0003003e,0x00000469,0x00000468,0x0004003d, + 0x00000006,0x0000046b,0x000000ca,0x0003003e,0x0000046a,0x0000046b,0x00060039,0x0000004a, + 0x0000046c,0x000000c2,0x00000469,0x0000046a,0x00050041,0x0000004e,0x0000046d,0x000003eb, + 0x00000466,0x0003003e,0x0000046d,0x0000046c,0x0004003d,0x0000002e,0x0000046f,0x000003dd, + 0x0003003e,0x0000046e,0x0000046f,0x00050041,0x0000004e,0x00000471,0x000003eb,0x00000466, + 0x0004003d,0x0000004a,0x00000472,0x00000471,0x0003003e,0x00000470,0x00000472,0x0003003e, + 0x00000473,0x00000186,0x0004003d,0x00000006,0x00000475,0x000000ca,0x0003003e,0x00000474, + 0x00000475,0x00080039,0x00000002,0x00000476,0x0000008e,0x0000046e,0x00000470,0x00000473, + 0x00000474,0x0004003d,0x00000006,0x00000477,0x000000c9,0x000500b2,0x0000009d,0x00000478, + 0x00000477,0x00000148,0x000300f7,0x0000047a,0x00000000,0x000400fa,0x00000478,0x00000479, + 0x0000047a,0x000200f8,0x00000479,0x000100fd,0x000200f8,0x0000047a,0x0003003e,0x0000047c, + 0x00000186,0x000200f9,0x0000047d,0x000200f8,0x0000047d,0x000400f6,0x0000047f,0x00000480, + 0x00000000,0x000200f9,0x00000481,0x000200f8,0x00000481,0x0004003d,0x00000006,0x00000482, + 0x0000047c,0x000500b0,0x0000009d,0x00000483,0x00000482,0x000001ce,0x000400fa,0x00000483, + 0x0000047e,0x0000047f,0x000200f8,0x0000047e,0x0004003d,0x00000006,0x00000484,0x0000047c, + 0x0004003d,0x00000006,0x00000486,0x000000c5,0x0003003e,0x00000485,0x00000486,0x0004003d, + 0x00000006,0x00000488,0x000000c6,0x0003003e,0x00000487,0x00000488,0x00050041,0x0000004e, + 0x0000048a,0x000003eb,0x00000484,0x0004003d,0x0000004a,0x0000048b,0x0000048a,0x0003003e, + 0x00000489,0x0000048b,0x00070039,0x00000002,0x0000048c,0x00000099,0x00000485,0x00000487, + 0x00000489,0x00040039,0x00000002,0x0000048d,0x0000009b,0x0004003d,0x00000006,0x0000048e, + 0x000000c8,0x000500b0,0x0000009d,0x0000048f,0x0000048e,0x000003d1,0x000300f7,0x00000491, + 0x00000000,0x000400fa,0x0000048f,0x00000490,0x00000491,0x000200f8,0x00000490,0x0004003d, + 0x00000006,0x00000492,0x0000047c,0x0004003d,0x00000006,0x00000493,0x000000c5,0x00050084, + 0x00000006,0x00000494,0x00000493,0x00000141,0x00050080,0x00000006,0x00000495,0x00000494, + 0x00000186,0x0004003d,0x00000006,0x00000496,0x000000c6,0x00050084,0x00000006,0x00000497, + 0x00000496,0x00000141,0x00050080,0x00000006,0x00000498,0x00000497,0x00000186,0x00050050, + 0x00000029,0x00000499,0x00000495,0x00000498,0x0004003d,0x00000006,0x0000049a,0x000000c5, + 0x00050084,0x00000006,0x0000049b,0x0000049a,0x00000141,0x00050080,0x00000006,0x0000049c, + 0x0000049b,0x00000148,0x0004003d,0x00000006,0x0000049d,0x000000c6,0x00050084,0x00000006, + 0x0000049e,0x0000049d,0x00000141,0x00050080,0x00000006,0x0000049f,0x0000049e,0x00000186, + 0x00050050,0x00000029,0x000004a0,0x0000049c,0x0000049f,0x0004003d,0x00000006,0x000004a1, + 0x000000c5,0x00050084,0x00000006,0x000004a2,0x000004a1,0x00000141,0x00050080,0x00000006, + 0x000004a3,0x000004a2,0x00000186,0x0004003d,0x00000006,0x000004a4,0x000000c6,0x00050084, + 0x00000006,0x000004a5,0x000004a4,0x00000141,0x00050080,0x00000006,0x000004a6,0x000004a5, + 0x00000148,0x00050050,0x00000029,0x000004a7,0x000004a3,0x000004a6,0x0004003d,0x00000006, + 0x000004a8,0x000000c5,0x00050084,0x00000006,0x000004a9,0x000004a8,0x00000141,0x00050080, + 0x00000006,0x000004aa,0x000004a9,0x00000148,0x0004003d,0x00000006,0x000004ab,0x000000c6, + 0x00050084,0x00000006,0x000004ac,0x000004ab,0x00000141,0x00050080,0x00000006,0x000004ad, + 0x000004ac,0x00000148,0x00050050,0x00000029,0x000004ae,0x000004aa,0x000004ad,0x0003003e, + 0x000004af,0x00000499,0x0003003e,0x000004b0,0x000004a0,0x0003003e,0x000004b1,0x000004a7, + 0x0003003e,0x000004b2,0x000004ae,0x00080039,0x0000004a,0x000004b3,0x000000aa,0x000004af, + 0x000004b0,0x000004b1,0x000004b2,0x00050041,0x0000004e,0x000004b4,0x000003eb,0x00000492, + 0x0003003e,0x000004b4,0x000004b3,0x0004003d,0x00000029,0x000004b5,0x000000c7,0x00050050, + 0x00000029,0x000004b6,0x000002ec,0x000002ec,0x00050084,0x00000029,0x000004b7,0x000004b5, + 0x000004b6,0x0004007c,0x0000002e,0x000004b8,0x000004b7,0x0004003d,0x00000006,0x000004b9, + 0x000000c5,0x0004003d,0x00000006,0x000004ba,0x0000047c,0x00050089,0x00000006,0x000004bb, + 0x000004ba,0x00000141,0x00050084,0x00000006,0x000004bd,0x000004bb,0x000004bc,0x00050080, + 0x00000006,0x000004be,0x000004b9,0x000004bd,0x0004007c,0x00000013,0x000004bf,0x000004be, + 0x0004003d,0x00000006,0x000004c0,0x000000c6,0x0004003d,0x00000006,0x000004c1,0x0000047c, + 0x00050086,0x00000006,0x000004c2,0x000004c1,0x00000141,0x00050084,0x00000006,0x000004c3, + 0x000004c2,0x000004bc,0x00050080,0x00000006,0x000004c4,0x000004c0,0x000004c3,0x0004007c, + 0x00000013,0x000004c5,0x000004c4,0x00050050,0x0000002e,0x000004c6,0x000004bf,0x000004c5, + 0x00050080,0x0000002e,0x000004c7,0x000004b8,0x000004c6,0x0004003d,0x00000006,0x000004c8, + 0x0000047c,0x0003003e,0x000004c9,0x000004c7,0x00050041,0x0000004e,0x000004cb,0x000003eb, + 0x000004c8,0x0004003d,0x0000004a,0x000004cc,0x000004cb,0x0003003e,0x000004ca,0x000004cc, + 0x0003003e,0x000004cd,0x00000148,0x0004003d,0x00000006,0x000004cf,0x000000ca,0x0003003e, + 0x000004ce,0x000004cf,0x00080039,0x00000002,0x000004d0,0x0000008e,0x000004c9,0x000004ca, + 0x000004cd,0x000004ce,0x000200f9,0x00000491,0x000200f8,0x00000491,0x00040039,0x00000002, + 0x000004d1,0x0000009b,0x000200f9,0x00000480,0x000200f8,0x00000480,0x0004003d,0x00000006, + 0x000004d2,0x0000047c,0x00050080,0x00000006,0x000004d3,0x000004d2,0x00000175,0x0003003e, + 0x0000047c,0x000004d3,0x000200f9,0x0000047d,0x000200f8,0x0000047f,0x0004003d,0x00000006, + 0x000004d4,0x000000c8,0x000500b0,0x0000009d,0x000004d5,0x000004d4,0x000003d1,0x000300f7, + 0x000004d7,0x00000000,0x000400fa,0x000004d5,0x000004d6,0x000004d7,0x000200f8,0x000004d6, + 0x0004003d,0x00000006,0x000004d8,0x000000c5,0x00050080,0x00000006,0x000004d9,0x000004d8, + 0x00000186,0x0004003d,0x00000006,0x000004da,0x000000c6,0x00050080,0x00000006,0x000004db, + 0x000004da,0x00000186,0x0003003e,0x000004dc,0x000004d9,0x0003003e,0x000004dd,0x000004db, + 0x00050041,0x0000004e,0x000004df,0x000003eb,0x00000127,0x0004003d,0x0000004a,0x000004e0, + 0x000004df,0x0003003e,0x000004de,0x000004e0,0x00070039,0x00000002,0x000004e1,0x00000099, + 0x000004dc,0x000004dd,0x000004de,0x0004003d,0x00000006,0x000004e2,0x000000c5,0x00050080, + 0x00000006,0x000004e3,0x000004e2,0x000004bc,0x0004003d,0x00000006,0x000004e4,0x000000c6, + 0x00050080,0x00000006,0x000004e5,0x000004e4,0x00000186,0x0003003e,0x000004e6,0x000004e3, + 0x0003003e,0x000004e7,0x000004e5,0x00050041,0x0000004e,0x000004e9,0x000003eb,0x00000175, + 0x0004003d,0x0000004a,0x000004ea,0x000004e9,0x0003003e,0x000004e8,0x000004ea,0x00070039, + 0x00000002,0x000004eb,0x00000099,0x000004e6,0x000004e7,0x000004e8,0x0004003d,0x00000006, + 0x000004ec,0x000000c5,0x00050080,0x00000006,0x000004ed,0x000004ec,0x00000186,0x0004003d, + 0x00000006,0x000004ee,0x000000c6,0x00050080,0x00000006,0x000004ef,0x000004ee,0x000004bc, + 0x0003003e,0x000004f0,0x000004ed,0x0003003e,0x000004f1,0x000004ef,0x00050041,0x0000004e, + 0x000004f3,0x000003eb,0x0000017a,0x0004003d,0x0000004a,0x000004f4,0x000004f3,0x0003003e, + 0x000004f2,0x000004f4,0x00070039,0x00000002,0x000004f5,0x00000099,0x000004f0,0x000004f1, + 0x000004f2,0x0004003d,0x00000006,0x000004f6,0x000000c5,0x00050080,0x00000006,0x000004f7, + 0x000004f6,0x000004bc,0x0004003d,0x00000006,0x000004f8,0x000000c6,0x00050080,0x00000006, + 0x000004f9,0x000004f8,0x000004bc,0x0003003e,0x000004fa,0x000004f7,0x0003003e,0x000004fb, + 0x000004f9,0x00050041,0x0000004e,0x000004fd,0x000003eb,0x00000466,0x0004003d,0x0000004a, + 0x000004fe,0x000004fd,0x0003003e,0x000004fc,0x000004fe,0x00070039,0x00000002,0x000004ff, + 0x00000099,0x000004fa,0x000004fb,0x000004fc,0x000200f9,0x000004d7,0x000200f8,0x000004d7, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x000000d3,0x00000000,0x000000c4,0x00030037, + 0x00000007,0x000000cd,0x00030037,0x00000007,0x000000ce,0x00030037,0x000000a4,0x000000cf, + 0x00030037,0x00000007,0x000000d0,0x00030037,0x00000007,0x000000d1,0x00030037,0x00000007, + 0x000000d2,0x000200f8,0x000000d4,0x0004003b,0x00000007,0x00000500,0x00000007,0x0004003b, + 0x00000007,0x00000502,0x00000007,0x0004003b,0x000000a4,0x00000504,0x00000007,0x0004003b, + 0x00000007,0x00000506,0x00000007,0x0004003b,0x00000007,0x00000508,0x00000007,0x0004003b, + 0x00000007,0x0000050a,0x00000007,0x0004003d,0x00000006,0x00000501,0x000000cd,0x0003003e, + 0x00000500,0x00000501,0x0004003d,0x00000006,0x00000503,0x000000ce,0x0003003e,0x00000502, + 0x00000503,0x0004003d,0x00000029,0x00000505,0x000000cf,0x0003003e,0x00000504,0x00000505, + 0x0004003d,0x00000006,0x00000507,0x000000d0,0x0003003e,0x00000506,0x00000507,0x0004003d, + 0x00000006,0x00000509,0x000000d1,0x0003003e,0x00000508,0x00000509,0x0004003d,0x00000006, + 0x0000050b,0x000000d2,0x0003003e,0x0000050a,0x0000050b,0x000a0039,0x00000002,0x0000050c, + 0x000000cb,0x00000500,0x00000502,0x00000504,0x00000506,0x00000508,0x0000050a,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x000000db,0x00000000,0x000000c4,0x00030037,0x00000007, + 0x000000d5,0x00030037,0x00000007,0x000000d6,0x00030037,0x000000a4,0x000000d7,0x00030037, + 0x00000007,0x000000d8,0x00030037,0x00000007,0x000000d9,0x00030037,0x00000007,0x000000da, + 0x000200f8,0x000000dc,0x0004003b,0x0000004e,0x00000511,0x00000007,0x0004003b,0x000000a4, + 0x0000052e,0x00000007,0x0004003b,0x000000a4,0x0000052f,0x00000007,0x0004003b,0x000000a4, + 0x00000530,0x00000007,0x0004003b,0x000000a4,0x00000531,0x00000007,0x0004003b,0x0000003d, + 0x0000053d,0x00000007,0x0004003b,0x0000004e,0x0000053e,0x00000007,0x0004003b,0x00000007, + 0x00000540,0x00000007,0x0004003b,0x00000007,0x00000542,0x00000007,0x0004003b,0x00000007, + 0x0000054c,0x00000007,0x0004003b,0x00000007,0x0000054d,0x00000007,0x0004003b,0x0000004e, + 0x0000054e,0x00000007,0x0004003d,0x00000006,0x0000050d,0x000000d8,0x000500b0,0x0000009d, + 0x0000050e,0x0000050d,0x000003d1,0x000300f7,0x00000510,0x00000000,0x000400fa,0x0000050e, + 0x0000050f,0x00000510,0x000200f8,0x0000050f,0x0004003d,0x00000006,0x00000512,0x000000d5, + 0x00050084,0x00000006,0x00000513,0x00000512,0x00000141,0x00050080,0x00000006,0x00000514, + 0x00000513,0x00000186,0x0004003d,0x00000006,0x00000515,0x000000d6,0x00050084,0x00000006, + 0x00000516,0x00000515,0x00000141,0x00050080,0x00000006,0x00000517,0x00000516,0x00000186, + 0x00050050,0x00000029,0x00000518,0x00000514,0x00000517,0x0004003d,0x00000006,0x00000519, + 0x000000d5,0x00050084,0x00000006,0x0000051a,0x00000519,0x00000141,0x00050080,0x00000006, + 0x0000051b,0x0000051a,0x00000148,0x0004003d,0x00000006,0x0000051c,0x000000d6,0x00050084, + 0x00000006,0x0000051d,0x0000051c,0x00000141,0x00050080,0x00000006,0x0000051e,0x0000051d, + 0x00000186,0x00050050,0x00000029,0x0000051f,0x0000051b,0x0000051e,0x0004003d,0x00000006, + 0x00000520,0x000000d5,0x00050084,0x00000006,0x00000521,0x00000520,0x00000141,0x00050080, + 0x00000006,0x00000522,0x00000521,0x00000186,0x0004003d,0x00000006,0x00000523,0x000000d6, + 0x00050084,0x00000006,0x00000524,0x00000523,0x00000141,0x00050080,0x00000006,0x00000525, + 0x00000524,0x00000148,0x00050050,0x00000029,0x00000526,0x00000522,0x00000525,0x0004003d, + 0x00000006,0x00000527,0x000000d5,0x00050084,0x00000006,0x00000528,0x00000527,0x00000141, + 0x00050080,0x00000006,0x00000529,0x00000528,0x00000148,0x0004003d,0x00000006,0x0000052a, + 0x000000d6,0x00050084,0x00000006,0x0000052b,0x0000052a,0x00000141,0x00050080,0x00000006, + 0x0000052c,0x0000052b,0x00000148,0x00050050,0x00000029,0x0000052d,0x00000529,0x0000052c, + 0x0003003e,0x0000052e,0x00000518,0x0003003e,0x0000052f,0x0000051f,0x0003003e,0x00000530, + 0x00000526,0x0003003e,0x00000531,0x0000052d,0x00080039,0x0000004a,0x00000532,0x000000aa, + 0x0000052e,0x0000052f,0x00000530,0x00000531,0x0003003e,0x00000511,0x00000532,0x0004003d, + 0x00000029,0x00000533,0x000000d7,0x00050050,0x00000029,0x00000534,0x000004bc,0x000004bc, + 0x00050084,0x00000029,0x00000535,0x00000533,0x00000534,0x0004007c,0x0000002e,0x00000536, + 0x00000535,0x0004003d,0x00000006,0x00000537,0x000000d5,0x0004007c,0x00000013,0x00000538, + 0x00000537,0x0004003d,0x00000006,0x00000539,0x000000d6,0x0004007c,0x00000013,0x0000053a, + 0x00000539,0x00050050,0x0000002e,0x0000053b,0x00000538,0x0000053a,0x00050080,0x0000002e, + 0x0000053c,0x00000536,0x0000053b,0x0003003e,0x0000053d,0x0000053c,0x0004003d,0x0000004a, + 0x0000053f,0x00000511,0x0003003e,0x0000053e,0x0000053f,0x0004003d,0x00000006,0x00000541, + 0x000000d9,0x0003003e,0x00000540,0x00000541,0x0004003d,0x00000006,0x00000543,0x000000da, + 0x0003003e,0x00000542,0x00000543,0x00080039,0x00000002,0x00000544,0x0000008e,0x0000053d, + 0x0000053e,0x00000540,0x00000542,0x0004003d,0x00000006,0x00000545,0x000000d5,0x00050084, + 0x00000006,0x00000546,0x00000545,0x00000141,0x0004003d,0x00000006,0x00000547,0x000000d6, + 0x00050089,0x00000006,0x00000548,0x00000547,0x00000141,0x00050080,0x00000006,0x00000549, + 0x00000546,0x00000548,0x0004003d,0x00000006,0x0000054a,0x000000d6,0x00050084,0x00000006, + 0x0000054b,0x0000054a,0x00000141,0x0003003e,0x0000054c,0x00000549,0x0003003e,0x0000054d, + 0x0000054b,0x0004003d,0x0000004a,0x0000054f,0x00000511,0x0003003e,0x0000054e,0x0000054f, + 0x00070039,0x00000002,0x00000550,0x00000099,0x0000054c,0x0000054d,0x0000054e,0x000200f9, + 0x00000510,0x000200f8,0x00000510,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000e3, + 0x00000000,0x000000c4,0x00030037,0x00000007,0x000000dd,0x00030037,0x00000007,0x000000de, + 0x00030037,0x000000a4,0x000000df,0x00030037,0x00000007,0x000000e0,0x00030037,0x00000007, + 0x000000e1,0x00030037,0x00000007,0x000000e2,0x000200f8,0x000000e4,0x0004003b,0x0000004e, + 0x00000555,0x00000007,0x0004003b,0x000000a4,0x00000576,0x00000007,0x0004003b,0x000000a4, + 0x00000577,0x00000007,0x0004003b,0x000000a4,0x00000578,0x00000007,0x0004003b,0x000000a4, + 0x00000579,0x00000007,0x0004003b,0x0000003d,0x00000585,0x00000007,0x0004003b,0x0000004e, + 0x00000586,0x00000007,0x0004003b,0x00000007,0x00000588,0x00000007,0x0004003b,0x00000007, + 0x0000058a,0x00000007,0x0004003b,0x00000007,0x00000593,0x00000007,0x0004003b,0x00000007, + 0x00000594,0x00000007,0x0004003b,0x0000004e,0x00000595,0x00000007,0x0004003d,0x00000006, + 0x00000551,0x000000e0,0x000500b0,0x0000009d,0x00000552,0x00000551,0x000002ec,0x000300f7, + 0x00000554,0x00000000,0x000400fa,0x00000552,0x00000553,0x00000554,0x000200f8,0x00000553, + 0x0004003d,0x00000006,0x00000556,0x000000dd,0x00050084,0x00000006,0x00000557,0x00000556, + 0x000001ce,0x00050080,0x00000006,0x00000558,0x00000557,0x00000186,0x00050080,0x00000006, + 0x00000559,0x00000558,0x00000186,0x0004003d,0x00000006,0x0000055a,0x000000de,0x00050084, + 0x00000006,0x0000055b,0x0000055a,0x000001ce,0x00050080,0x00000006,0x0000055c,0x0000055b, + 0x00000186,0x00050050,0x00000029,0x0000055d,0x00000559,0x0000055c,0x0004003d,0x00000006, + 0x0000055e,0x000000dd,0x00050084,0x00000006,0x0000055f,0x0000055e,0x000001ce,0x00050080, + 0x00000006,0x00000560,0x0000055f,0x00000141,0x00050080,0x00000006,0x00000561,0x00000560, + 0x00000186,0x0004003d,0x00000006,0x00000562,0x000000de,0x00050084,0x00000006,0x00000563, + 0x00000562,0x000001ce,0x00050080,0x00000006,0x00000564,0x00000563,0x00000186,0x00050050, + 0x00000029,0x00000565,0x00000561,0x00000564,0x0004003d,0x00000006,0x00000566,0x000000dd, + 0x00050084,0x00000006,0x00000567,0x00000566,0x000001ce,0x00050080,0x00000006,0x00000568, + 0x00000567,0x00000186,0x00050080,0x00000006,0x00000569,0x00000568,0x00000148,0x0004003d, + 0x00000006,0x0000056a,0x000000de,0x00050084,0x00000006,0x0000056b,0x0000056a,0x000001ce, + 0x00050080,0x00000006,0x0000056c,0x0000056b,0x00000141,0x00050050,0x00000029,0x0000056d, + 0x00000569,0x0000056c,0x0004003d,0x00000006,0x0000056e,0x000000dd,0x00050084,0x00000006, + 0x0000056f,0x0000056e,0x000001ce,0x00050080,0x00000006,0x00000570,0x0000056f,0x00000141, + 0x00050080,0x00000006,0x00000571,0x00000570,0x00000148,0x0004003d,0x00000006,0x00000572, + 0x000000de,0x00050084,0x00000006,0x00000573,0x00000572,0x000001ce,0x00050080,0x00000006, + 0x00000574,0x00000573,0x00000141,0x00050050,0x00000029,0x00000575,0x00000571,0x00000574, + 0x0003003e,0x00000576,0x0000055d,0x0003003e,0x00000577,0x00000565,0x0003003e,0x00000578, + 0x0000056d,0x0003003e,0x00000579,0x00000575,0x00080039,0x0000004a,0x0000057a,0x000000aa, + 0x00000576,0x00000577,0x00000578,0x00000579,0x0003003e,0x00000555,0x0000057a,0x0004003d, + 0x00000029,0x0000057b,0x000000df,0x00050050,0x00000029,0x0000057c,0x000001ce,0x000001ce, + 0x00050084,0x00000029,0x0000057d,0x0000057b,0x0000057c,0x0004007c,0x0000002e,0x0000057e, + 0x0000057d,0x0004003d,0x00000006,0x0000057f,0x000000dd,0x0004007c,0x00000013,0x00000580, + 0x0000057f,0x0004003d,0x00000006,0x00000581,0x000000de,0x0004007c,0x00000013,0x00000582, + 0x00000581,0x00050050,0x0000002e,0x00000583,0x00000580,0x00000582,0x00050080,0x0000002e, + 0x00000584,0x0000057e,0x00000583,0x0003003e,0x00000585,0x00000584,0x0004003d,0x0000004a, + 0x00000587,0x00000555,0x0003003e,0x00000586,0x00000587,0x0004003d,0x00000006,0x00000589, + 0x000000e1,0x0003003e,0x00000588,0x00000589,0x0004003d,0x00000006,0x0000058b,0x000000e2, + 0x0003003e,0x0000058a,0x0000058b,0x00080039,0x00000002,0x0000058c,0x0000008e,0x00000585, + 0x00000586,0x00000588,0x0000058a,0x0004003d,0x00000006,0x0000058d,0x000000dd,0x00050084, + 0x00000006,0x0000058e,0x0000058d,0x000001ce,0x0004003d,0x00000006,0x0000058f,0x000000de, + 0x00050080,0x00000006,0x00000590,0x0000058e,0x0000058f,0x0004003d,0x00000006,0x00000591, + 0x000000de,0x00050084,0x00000006,0x00000592,0x00000591,0x000001ce,0x0003003e,0x00000593, + 0x00000590,0x0003003e,0x00000594,0x00000592,0x0004003d,0x0000004a,0x00000596,0x00000555, + 0x0003003e,0x00000595,0x00000596,0x00070039,0x00000002,0x00000597,0x00000099,0x00000593, + 0x00000594,0x00000595,0x000200f9,0x00000554,0x000200f8,0x00000554,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x000000eb,0x00000000,0x000000c4,0x00030037,0x00000007,0x000000e5, + 0x00030037,0x00000007,0x000000e6,0x00030037,0x000000a4,0x000000e7,0x00030037,0x00000007, + 0x000000e8,0x00030037,0x00000007,0x000000e9,0x00030037,0x00000007,0x000000ea,0x000200f8, + 0x000000ec,0x0004003b,0x0000004e,0x0000059c,0x00000007,0x0004003b,0x000000a4,0x000005c9, + 0x00000007,0x0004003b,0x000000a4,0x000005ca,0x00000007,0x0004003b,0x000000a4,0x000005cb, + 0x00000007,0x0004003b,0x000000a4,0x000005cc,0x00000007,0x0004003b,0x0000003d,0x000005d8, + 0x00000007,0x0004003b,0x0000004e,0x000005d9,0x00000007,0x0004003b,0x00000007,0x000005db, + 0x00000007,0x0004003b,0x00000007,0x000005dd,0x00000007,0x0004003b,0x00000007,0x000005e4, + 0x00000007,0x0004003b,0x00000007,0x000005e5,0x00000007,0x0004003b,0x0000004e,0x000005e6, + 0x00000007,0x0004003d,0x00000006,0x00000598,0x000000e8,0x000500b0,0x0000009d,0x00000599, + 0x00000598,0x000001ce,0x000300f7,0x0000059b,0x00000000,0x000400fa,0x00000599,0x0000059a, + 0x0000059b,0x000200f8,0x0000059a,0x0004003d,0x00000006,0x0000059d,0x000000e5,0x00050084, + 0x00000006,0x0000059e,0x0000059d,0x000004bc,0x00050080,0x00000006,0x0000059f,0x0000059e, + 0x00000186,0x00050080,0x00000006,0x000005a0,0x0000059f,0x00000186,0x0004003d,0x00000006, + 0x000005a1,0x000000e6,0x00050084,0x00000006,0x000005a2,0x000005a1,0x00000141,0x00050080, + 0x00000006,0x000005a3,0x000005a0,0x000005a2,0x0004003d,0x00000006,0x000005a4,0x000000e6, + 0x00050084,0x00000006,0x000005a5,0x000005a4,0x000004bc,0x00050080,0x00000006,0x000005a6, + 0x000005a5,0x00000186,0x00050050,0x00000029,0x000005a7,0x000005a3,0x000005a6,0x0004003d, + 0x00000006,0x000005a8,0x000000e5,0x00050084,0x00000006,0x000005a9,0x000005a8,0x000004bc, + 0x00050080,0x00000006,0x000005aa,0x000005a9,0x000001ce,0x00050080,0x00000006,0x000005ab, + 0x000005aa,0x00000186,0x0004003d,0x00000006,0x000005ac,0x000000e6,0x00050084,0x00000006, + 0x000005ad,0x000005ac,0x00000141,0x00050080,0x00000006,0x000005ae,0x000005ab,0x000005ad, + 0x0004003d,0x00000006,0x000005af,0x000000e6,0x00050084,0x00000006,0x000005b0,0x000005af, + 0x000004bc,0x00050080,0x00000006,0x000005b1,0x000005b0,0x00000186,0x00050050,0x00000029, + 0x000005b2,0x000005ae,0x000005b1,0x0004003d,0x00000006,0x000005b3,0x000000e5,0x00050084, + 0x00000006,0x000005b4,0x000005b3,0x000004bc,0x00050080,0x00000006,0x000005b5,0x000005b4, + 0x00000186,0x00050080,0x00000006,0x000005b6,0x000005b5,0x00000148,0x0004003d,0x00000006, + 0x000005b7,0x000000e6,0x00050084,0x00000006,0x000005b8,0x000005b7,0x00000141,0x00050080, + 0x00000006,0x000005b9,0x000005b6,0x000005b8,0x0004003d,0x00000006,0x000005ba,0x000000e6, + 0x00050084,0x00000006,0x000005bb,0x000005ba,0x000004bc,0x00050080,0x00000006,0x000005bc, + 0x000005bb,0x000001ce,0x00050050,0x00000029,0x000005bd,0x000005b9,0x000005bc,0x0004003d, + 0x00000006,0x000005be,0x000000e5,0x00050084,0x00000006,0x000005bf,0x000005be,0x000004bc, + 0x00050080,0x00000006,0x000005c0,0x000005bf,0x000001ce,0x00050080,0x00000006,0x000005c1, + 0x000005c0,0x00000148,0x0004003d,0x00000006,0x000005c2,0x000000e6,0x00050084,0x00000006, + 0x000005c3,0x000005c2,0x00000141,0x00050080,0x00000006,0x000005c4,0x000005c1,0x000005c3, + 0x0004003d,0x00000006,0x000005c5,0x000000e6,0x00050084,0x00000006,0x000005c6,0x000005c5, + 0x000004bc,0x00050080,0x00000006,0x000005c7,0x000005c6,0x000001ce,0x00050050,0x00000029, + 0x000005c8,0x000005c4,0x000005c7,0x0003003e,0x000005c9,0x000005a7,0x0003003e,0x000005ca, + 0x000005b2,0x0003003e,0x000005cb,0x000005bd,0x0003003e,0x000005cc,0x000005c8,0x00080039, + 0x0000004a,0x000005cd,0x000000aa,0x000005c9,0x000005ca,0x000005cb,0x000005cc,0x0003003e, + 0x0000059c,0x000005cd,0x0004003d,0x00000029,0x000005ce,0x000000e7,0x00050050,0x00000029, + 0x000005cf,0x00000141,0x00000141,0x00050084,0x00000029,0x000005d0,0x000005ce,0x000005cf, + 0x0004007c,0x0000002e,0x000005d1,0x000005d0,0x0004003d,0x00000006,0x000005d2,0x000000e5, + 0x0004007c,0x00000013,0x000005d3,0x000005d2,0x0004003d,0x00000006,0x000005d4,0x000000e6, + 0x0004007c,0x00000013,0x000005d5,0x000005d4,0x00050050,0x0000002e,0x000005d6,0x000005d3, + 0x000005d5,0x00050080,0x0000002e,0x000005d7,0x000005d1,0x000005d6,0x0003003e,0x000005d8, + 0x000005d7,0x0004003d,0x0000004a,0x000005da,0x0000059c,0x0003003e,0x000005d9,0x000005da, + 0x0004003d,0x00000006,0x000005dc,0x000000e9,0x0003003e,0x000005db,0x000005dc,0x0004003d, + 0x00000006,0x000005de,0x000000ea,0x0003003e,0x000005dd,0x000005de,0x00080039,0x00000002, + 0x000005df,0x0000008e,0x000005d8,0x000005d9,0x000005db,0x000005dd,0x0004003d,0x00000006, + 0x000005e0,0x000000e5,0x0004003d,0x00000006,0x000005e1,0x000000e6,0x00050084,0x00000006, + 0x000005e2,0x000005e1,0x00000141,0x00050080,0x00000006,0x000005e3,0x000005e0,0x000005e2, + 0x0003003e,0x000005e4,0x000005e3,0x0003003e,0x000005e5,0x00000186,0x0004003d,0x0000004a, + 0x000005e7,0x0000059c,0x0003003e,0x000005e6,0x000005e7,0x00070039,0x00000002,0x000005e8, + 0x00000099,0x000005e4,0x000005e5,0x000005e6,0x000200f9,0x0000059b,0x000200f8,0x0000059b, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x000000f2,0x00000000,0x000000ed,0x00030037, + 0x000000a4,0x000000ee,0x00030037,0x00000007,0x000000ef,0x00030037,0x00000007,0x000000f0, + 0x00030037,0x00000007,0x000000f1,0x000200f8,0x000000f3,0x0004003b,0x0000004e,0x000005ed, + 0x00000007,0x0004003b,0x000000a4,0x000005f0,0x00000007,0x0004003b,0x000000a4,0x000005f1, + 0x00000007,0x0004003b,0x000000a4,0x000005f2,0x00000007,0x0004003b,0x000000a4,0x000005f3, + 0x00000007,0x0004003b,0x0000003d,0x000005f7,0x00000007,0x0004003b,0x0000004e,0x000005f8, + 0x00000007,0x0004003b,0x00000007,0x000005fa,0x00000007,0x0004003b,0x00000007,0x000005fc, + 0x00000007,0x0004003d,0x00000006,0x000005e9,0x000000ef,0x000500b0,0x0000009d,0x000005ea, + 0x000005e9,0x00000148,0x000300f7,0x000005ec,0x00000000,0x000400fa,0x000005ea,0x000005eb, + 0x000005ec,0x000200f8,0x000005eb,0x0003003e,0x000005f0,0x0000037f,0x0003003e,0x000005f1, + 0x00000385,0x0003003e,0x000005f2,0x000005ee,0x0003003e,0x000005f3,0x000005ef,0x00080039, + 0x0000004a,0x000005f4,0x000000aa,0x000005f0,0x000005f1,0x000005f2,0x000005f3,0x0003003e, + 0x000005ed,0x000005f4,0x0004003d,0x00000029,0x000005f5,0x000000ee,0x0004007c,0x0000002e, + 0x000005f6,0x000005f5,0x0003003e,0x000005f7,0x000005f6,0x0004003d,0x0000004a,0x000005f9, + 0x000005ed,0x0003003e,0x000005f8,0x000005f9,0x0004003d,0x00000006,0x000005fb,0x000000f0, + 0x0003003e,0x000005fa,0x000005fb,0x0004003d,0x00000006,0x000005fd,0x000000f1,0x0003003e, + 0x000005fc,0x000005fd,0x00080039,0x00000002,0x000005fe,0x0000008e,0x000005f7,0x000005f8, + 0x000005fa,0x000005fc,0x000200f9,0x000005ec,0x000200f8,0x000005ec,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x000000f9,0x00000000,0x000000f4,0x00030037,0x00000007,0x000000f5, + 0x00030037,0x00000007,0x000000f6,0x00030037,0x00000007,0x000000f7,0x00030037,0x00000007, + 0x000000f8,0x000200f8,0x000000fa,0x0004003b,0x0000003d,0x000005ff,0x00000007,0x0004003b, + 0x0000003d,0x00000609,0x00000007,0x0004003b,0x0000004e,0x00000613,0x00000007,0x0004003b, + 0x000000a4,0x00000616,0x00000007,0x0004003b,0x00000007,0x00000617,0x00000007,0x0004003b, + 0x0000003d,0x0000061b,0x00000007,0x0004003b,0x0000004e,0x0000061d,0x00000007,0x0004003b, + 0x00000007,0x0000061f,0x00000007,0x0004003b,0x00000007,0x00000620,0x00000007,0x0004003b, + 0x0000004e,0x00000635,0x00000007,0x0004003b,0x000000a4,0x00000638,0x00000007,0x0004003b, + 0x00000007,0x00000639,0x00000007,0x0004003b,0x0000003d,0x0000063c,0x00000007,0x0004003b, + 0x0000004e,0x0000063e,0x00000007,0x0004003b,0x00000007,0x00000640,0x00000007,0x0004003b, + 0x00000007,0x00000641,0x00000007,0x0004003b,0x0000004e,0x00000656,0x00000007,0x0004003b, + 0x000000a4,0x00000659,0x00000007,0x0004003b,0x00000007,0x0000065a,0x00000007,0x0004003b, + 0x0000003d,0x0000065d,0x00000007,0x0004003b,0x0000004e,0x0000065f,0x00000007,0x0004003b, + 0x00000007,0x00000661,0x00000007,0x0004003b,0x00000007,0x00000662,0x00000007,0x0004003b, + 0x0000004e,0x00000677,0x00000007,0x0004003b,0x000000a4,0x0000067a,0x00000007,0x0004003b, + 0x00000007,0x0000067b,0x00000007,0x0004003b,0x0000003d,0x0000067e,0x00000007,0x0004003b, + 0x0000004e,0x00000680,0x00000007,0x0004003b,0x00000007,0x00000682,0x00000007,0x0004003b, + 0x00000007,0x00000683,0x00000007,0x0004003b,0x0000004e,0x0000068c,0x00000007,0x0004003b, + 0x0000004e,0x0000068d,0x00000007,0x0004003b,0x0000004e,0x0000068f,0x00000007,0x0004003b, + 0x0000004e,0x00000691,0x00000007,0x0004003b,0x0000004e,0x00000693,0x00000007,0x0004003b, + 0x0000003d,0x0000069b,0x00000007,0x0004003b,0x0000004e,0x0000069c,0x00000007,0x0004003b, + 0x00000007,0x0000069e,0x00000007,0x0004003b,0x00000007,0x0000069f,0x00000007,0x0004003b, + 0x00000007,0x000006a2,0x00000007,0x0004003b,0x00000007,0x000006a4,0x00000007,0x0004003b, + 0x0000004e,0x000006a6,0x00000007,0x0004003d,0x00000006,0x00000600,0x000000f5,0x00050084, + 0x00000006,0x00000601,0x00000600,0x000001ce,0x00050080,0x00000006,0x00000602,0x00000601, + 0x00000186,0x0004007c,0x00000013,0x00000603,0x00000602,0x0004003d,0x00000006,0x00000604, + 0x000000f6,0x00050084,0x00000006,0x00000605,0x00000604,0x000001ce,0x00050080,0x00000006, + 0x00000606,0x00000605,0x00000186,0x0004007c,0x00000013,0x00000607,0x00000606,0x00050050, + 0x0000002e,0x00000608,0x00000603,0x00000607,0x0003003e,0x000005ff,0x00000608,0x0004003d, + 0x00000006,0x0000060a,0x000000f5,0x00050084,0x00000006,0x0000060b,0x0000060a,0x00000141, + 0x00050080,0x00000006,0x0000060c,0x0000060b,0x00000186,0x0004007c,0x00000013,0x0000060d, + 0x0000060c,0x0004003d,0x00000006,0x0000060e,0x000000f6,0x00050084,0x00000006,0x0000060f, + 0x0000060e,0x00000141,0x00050080,0x00000006,0x00000610,0x0000060f,0x00000186,0x0004007c, + 0x00000013,0x00000611,0x00000610,0x00050050,0x0000002e,0x00000612,0x0000060d,0x00000611, + 0x0003003e,0x00000609,0x00000612,0x0004003d,0x0000002e,0x00000614,0x000005ff,0x0004007c, + 0x00000029,0x00000615,0x00000614,0x0003003e,0x00000616,0x00000615,0x0004003d,0x00000006, + 0x00000618,0x000000f8,0x0003003e,0x00000617,0x00000618,0x00060039,0x0000004a,0x00000619, + 0x000000b7,0x00000616,0x00000617,0x0003003e,0x00000613,0x00000619,0x0004003d,0x0000002e, + 0x0000061c,0x00000609,0x0003003e,0x0000061b,0x0000061c,0x0004003d,0x0000004a,0x0000061e, + 0x00000613,0x0003003e,0x0000061d,0x0000061e,0x0003003e,0x0000061f,0x0000061a,0x0004003d, + 0x00000006,0x00000621,0x000000f8,0x0003003e,0x00000620,0x00000621,0x00080039,0x00000002, + 0x00000622,0x0000008e,0x0000061b,0x0000061d,0x0000061f,0x00000620,0x0004003d,0x00000006, + 0x00000623,0x000000f5,0x00050084,0x00000006,0x00000624,0x00000623,0x000001ce,0x00050080, + 0x00000006,0x00000625,0x00000624,0x00000141,0x0004007c,0x00000013,0x00000626,0x00000625, + 0x0004003d,0x00000006,0x00000627,0x000000f6,0x00050084,0x00000006,0x00000628,0x00000627, + 0x000001ce,0x00050080,0x00000006,0x00000629,0x00000628,0x00000186,0x0004007c,0x00000013, + 0x0000062a,0x00000629,0x00050050,0x0000002e,0x0000062b,0x00000626,0x0000062a,0x0003003e, + 0x000005ff,0x0000062b,0x0004003d,0x00000006,0x0000062c,0x000000f5,0x00050084,0x00000006, + 0x0000062d,0x0000062c,0x00000141,0x00050080,0x00000006,0x0000062e,0x0000062d,0x00000148, + 0x0004007c,0x00000013,0x0000062f,0x0000062e,0x0004003d,0x00000006,0x00000630,0x000000f6, + 0x00050084,0x00000006,0x00000631,0x00000630,0x00000141,0x00050080,0x00000006,0x00000632, + 0x00000631,0x00000186,0x0004007c,0x00000013,0x00000633,0x00000632,0x00050050,0x0000002e, + 0x00000634,0x0000062f,0x00000633,0x0003003e,0x00000609,0x00000634,0x0004003d,0x0000002e, + 0x00000636,0x000005ff,0x0004007c,0x00000029,0x00000637,0x00000636,0x0003003e,0x00000638, + 0x00000637,0x0004003d,0x00000006,0x0000063a,0x000000f8,0x0003003e,0x00000639,0x0000063a, + 0x00060039,0x0000004a,0x0000063b,0x000000b7,0x00000638,0x00000639,0x0003003e,0x00000635, + 0x0000063b,0x0004003d,0x0000002e,0x0000063d,0x00000609,0x0003003e,0x0000063c,0x0000063d, + 0x0004003d,0x0000004a,0x0000063f,0x00000635,0x0003003e,0x0000063e,0x0000063f,0x0003003e, + 0x00000640,0x0000061a,0x0004003d,0x00000006,0x00000642,0x000000f8,0x0003003e,0x00000641, + 0x00000642,0x00080039,0x00000002,0x00000643,0x0000008e,0x0000063c,0x0000063e,0x00000640, + 0x00000641,0x0004003d,0x00000006,0x00000644,0x000000f5,0x00050084,0x00000006,0x00000645, + 0x00000644,0x000001ce,0x00050080,0x00000006,0x00000646,0x00000645,0x00000186,0x0004007c, + 0x00000013,0x00000647,0x00000646,0x0004003d,0x00000006,0x00000648,0x000000f6,0x00050084, + 0x00000006,0x00000649,0x00000648,0x000001ce,0x00050080,0x00000006,0x0000064a,0x00000649, + 0x00000141,0x0004007c,0x00000013,0x0000064b,0x0000064a,0x00050050,0x0000002e,0x0000064c, + 0x00000647,0x0000064b,0x0003003e,0x000005ff,0x0000064c,0x0004003d,0x00000006,0x0000064d, + 0x000000f5,0x00050084,0x00000006,0x0000064e,0x0000064d,0x00000141,0x00050080,0x00000006, + 0x0000064f,0x0000064e,0x00000186,0x0004007c,0x00000013,0x00000650,0x0000064f,0x0004003d, + 0x00000006,0x00000651,0x000000f6,0x00050084,0x00000006,0x00000652,0x00000651,0x00000141, + 0x00050080,0x00000006,0x00000653,0x00000652,0x00000148,0x0004007c,0x00000013,0x00000654, + 0x00000653,0x00050050,0x0000002e,0x00000655,0x00000650,0x00000654,0x0003003e,0x00000609, + 0x00000655,0x0004003d,0x0000002e,0x00000657,0x000005ff,0x0004007c,0x00000029,0x00000658, + 0x00000657,0x0003003e,0x00000659,0x00000658,0x0004003d,0x00000006,0x0000065b,0x000000f8, + 0x0003003e,0x0000065a,0x0000065b,0x00060039,0x0000004a,0x0000065c,0x000000b7,0x00000659, + 0x0000065a,0x0003003e,0x00000656,0x0000065c,0x0004003d,0x0000002e,0x0000065e,0x00000609, + 0x0003003e,0x0000065d,0x0000065e,0x0004003d,0x0000004a,0x00000660,0x00000656,0x0003003e, + 0x0000065f,0x00000660,0x0003003e,0x00000661,0x0000061a,0x0004003d,0x00000006,0x00000663, + 0x000000f8,0x0003003e,0x00000662,0x00000663,0x00080039,0x00000002,0x00000664,0x0000008e, + 0x0000065d,0x0000065f,0x00000661,0x00000662,0x0004003d,0x00000006,0x00000665,0x000000f5, + 0x00050084,0x00000006,0x00000666,0x00000665,0x000001ce,0x00050080,0x00000006,0x00000667, + 0x00000666,0x00000141,0x0004007c,0x00000013,0x00000668,0x00000667,0x0004003d,0x00000006, + 0x00000669,0x000000f6,0x00050084,0x00000006,0x0000066a,0x00000669,0x000001ce,0x00050080, + 0x00000006,0x0000066b,0x0000066a,0x00000141,0x0004007c,0x00000013,0x0000066c,0x0000066b, + 0x00050050,0x0000002e,0x0000066d,0x00000668,0x0000066c,0x0003003e,0x000005ff,0x0000066d, + 0x0004003d,0x00000006,0x0000066e,0x000000f5,0x00050084,0x00000006,0x0000066f,0x0000066e, + 0x00000141,0x00050080,0x00000006,0x00000670,0x0000066f,0x00000148,0x0004007c,0x00000013, + 0x00000671,0x00000670,0x0004003d,0x00000006,0x00000672,0x000000f6,0x00050084,0x00000006, + 0x00000673,0x00000672,0x00000141,0x00050080,0x00000006,0x00000674,0x00000673,0x00000148, + 0x0004007c,0x00000013,0x00000675,0x00000674,0x00050050,0x0000002e,0x00000676,0x00000671, + 0x00000675,0x0003003e,0x00000609,0x00000676,0x0004003d,0x0000002e,0x00000678,0x000005ff, + 0x0004007c,0x00000029,0x00000679,0x00000678,0x0003003e,0x0000067a,0x00000679,0x0004003d, + 0x00000006,0x0000067c,0x000000f8,0x0003003e,0x0000067b,0x0000067c,0x00060039,0x0000004a, + 0x0000067d,0x000000b7,0x0000067a,0x0000067b,0x0003003e,0x00000677,0x0000067d,0x0004003d, + 0x0000002e,0x0000067f,0x00000609,0x0003003e,0x0000067e,0x0000067f,0x0004003d,0x0000004a, + 0x00000681,0x00000677,0x0003003e,0x00000680,0x00000681,0x0003003e,0x00000682,0x0000061a, + 0x0004003d,0x00000006,0x00000684,0x000000f8,0x0003003e,0x00000683,0x00000684,0x00080039, + 0x00000002,0x00000685,0x0000008e,0x0000067e,0x00000680,0x00000682,0x00000683,0x0004003d, + 0x00000006,0x00000686,0x000000f7,0x000500b2,0x0000009d,0x00000688,0x00000686,0x00000687, + 0x000300f7,0x0000068a,0x00000000,0x000400fa,0x00000688,0x00000689,0x0000068a,0x000200f8, + 0x00000689,0x000100fd,0x000200f8,0x0000068a,0x0004003d,0x0000004a,0x0000068e,0x00000613, + 0x0003003e,0x0000068d,0x0000068e,0x0004003d,0x0000004a,0x00000690,0x00000635,0x0003003e, + 0x0000068f,0x00000690,0x0004003d,0x0000004a,0x00000692,0x00000656,0x0003003e,0x00000691, + 0x00000692,0x0004003d,0x0000004a,0x00000694,0x00000677,0x0003003e,0x00000693,0x00000694, + 0x00080039,0x0000004a,0x00000695,0x00000087,0x0000068d,0x0000068f,0x00000691,0x00000693, + 0x0003003e,0x0000068c,0x00000695,0x0004003d,0x00000006,0x00000696,0x000000f5,0x0004007c, + 0x00000013,0x00000697,0x00000696,0x0004003d,0x00000006,0x00000698,0x000000f6,0x0004007c, + 0x00000013,0x00000699,0x00000698,0x00050050,0x0000002e,0x0000069a,0x00000697,0x00000699, + 0x0003003e,0x0000069b,0x0000069a,0x0004003d,0x0000004a,0x0000069d,0x0000068c,0x0003003e, + 0x0000069c,0x0000069d,0x0003003e,0x0000069e,0x00000687,0x0004003d,0x00000006,0x000006a0, + 0x000000f8,0x0003003e,0x0000069f,0x000006a0,0x00080039,0x00000002,0x000006a1,0x0000008e, + 0x0000069b,0x0000069c,0x0000069e,0x0000069f,0x0004003d,0x00000006,0x000006a3,0x000000f5, + 0x0003003e,0x000006a2,0x000006a3,0x0004003d,0x00000006,0x000006a5,0x000000f6,0x0003003e, + 0x000006a4,0x000006a5,0x0004003d,0x0000004a,0x000006a7,0x0000068c,0x0003003e,0x000006a6, + 0x000006a7,0x00070039,0x00000002,0x000006a8,0x00000099,0x000006a2,0x000006a4,0x000006a6, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x00000103,0x00000000,0x000000fb,0x00030037, + 0x00000007,0x000000fc,0x00030037,0x00000007,0x000000fd,0x00030037,0x000000a4,0x000000fe, + 0x00030037,0x00000007,0x000000ff,0x00030037,0x00000007,0x00000100,0x00030037,0x00000007, + 0x00000101,0x00030037,0x00000007,0x00000102,0x000200f8,0x00000104,0x0004003b,0x00000007, + 0x000006b0,0x00000007,0x0004003b,0x00000007,0x000006b2,0x00000007,0x0004003b,0x000000a4, + 0x000006b4,0x00000007,0x0004003b,0x00000007,0x000006b6,0x00000007,0x0004003b,0x00000007, + 0x000006b8,0x00000007,0x0004003b,0x00000007,0x000006ba,0x00000007,0x0004003b,0x00000007, + 0x000006c7,0x00000007,0x0004003b,0x00000007,0x000006c9,0x00000007,0x0004003b,0x000000a4, + 0x000006cb,0x00000007,0x0004003b,0x00000007,0x000006cd,0x00000007,0x0004003b,0x00000007, + 0x000006cf,0x00000007,0x0004003b,0x00000007,0x000006d0,0x00000007,0x0004003b,0x00000007, + 0x000006dd,0x00000007,0x0004003b,0x00000007,0x000006df,0x00000007,0x0004003b,0x000000a4, + 0x000006e1,0x00000007,0x0004003b,0x00000007,0x000006e3,0x00000007,0x0004003b,0x00000007, + 0x000006e5,0x00000007,0x0004003b,0x00000007,0x000006e6,0x00000007,0x0004003b,0x000000a4, + 0x000006f3,0x00000007,0x0004003b,0x00000007,0x000006f5,0x00000007,0x0004003b,0x00000007, + 0x000006f7,0x00000007,0x0004003b,0x00000007,0x000006f8,0x00000007,0x0004003d,0x00000006, + 0x000006a9,0x00000101,0x0004003d,0x00000006,0x000006aa,0x00000100,0x000500b2,0x0000009d, + 0x000006ab,0x000006a9,0x000006aa,0x000300f7,0x000006ad,0x00000000,0x000400fa,0x000006ab, + 0x000006ac,0x000006ad,0x000200f8,0x000006ac,0x000100fd,0x000200f8,0x000006ad,0x00040039, + 0x00000002,0x000006af,0x0000009b,0x0004003d,0x00000006,0x000006b1,0x000000fc,0x0003003e, + 0x000006b0,0x000006b1,0x0004003d,0x00000006,0x000006b3,0x000000fd,0x0003003e,0x000006b2, + 0x000006b3,0x0004003d,0x00000029,0x000006b5,0x000000fe,0x0003003e,0x000006b4,0x000006b5, + 0x0004003d,0x00000006,0x000006b7,0x000000ff,0x0003003e,0x000006b6,0x000006b7,0x0004003d, + 0x00000006,0x000006b9,0x00000100,0x0003003e,0x000006b8,0x000006b9,0x0004003d,0x00000006, + 0x000006bb,0x00000102,0x0003003e,0x000006ba,0x000006bb,0x000a0039,0x00000002,0x000006bc, + 0x000000db,0x000006b0,0x000006b2,0x000006b4,0x000006b6,0x000006b8,0x000006ba,0x0004003d, + 0x00000006,0x000006bd,0x00000101,0x0004003d,0x00000006,0x000006be,0x00000100,0x00050080, + 0x00000006,0x000006bf,0x000006be,0x00000148,0x000500b2,0x0000009d,0x000006c0,0x000006bd, + 0x000006bf,0x000300f7,0x000006c2,0x00000000,0x000400fa,0x000006c0,0x000006c1,0x000006c2, + 0x000200f8,0x000006c1,0x000100fd,0x000200f8,0x000006c2,0x00040039,0x00000002,0x000006c4, + 0x0000009b,0x0004003d,0x00000006,0x000006c5,0x00000100,0x00050080,0x00000006,0x000006c6, + 0x000006c5,0x00000148,0x0004003d,0x00000006,0x000006c8,0x000000fc,0x0003003e,0x000006c7, + 0x000006c8,0x0004003d,0x00000006,0x000006ca,0x000000fd,0x0003003e,0x000006c9,0x000006ca, + 0x0004003d,0x00000029,0x000006cc,0x000000fe,0x0003003e,0x000006cb,0x000006cc,0x0004003d, + 0x00000006,0x000006ce,0x000000ff,0x0003003e,0x000006cd,0x000006ce,0x0003003e,0x000006cf, + 0x000006c6,0x0004003d,0x00000006,0x000006d1,0x00000102,0x0003003e,0x000006d0,0x000006d1, + 0x000a0039,0x00000002,0x000006d2,0x000000e3,0x000006c7,0x000006c9,0x000006cb,0x000006cd, + 0x000006cf,0x000006d0,0x0004003d,0x00000006,0x000006d3,0x00000101,0x0004003d,0x00000006, + 0x000006d4,0x00000100,0x00050080,0x00000006,0x000006d5,0x000006d4,0x00000141,0x000500b2, + 0x0000009d,0x000006d6,0x000006d3,0x000006d5,0x000300f7,0x000006d8,0x00000000,0x000400fa, + 0x000006d6,0x000006d7,0x000006d8,0x000200f8,0x000006d7,0x000100fd,0x000200f8,0x000006d8, + 0x00040039,0x00000002,0x000006da,0x0000009b,0x0004003d,0x00000006,0x000006db,0x00000100, + 0x00050080,0x00000006,0x000006dc,0x000006db,0x00000141,0x0004003d,0x00000006,0x000006de, + 0x000000fc,0x0003003e,0x000006dd,0x000006de,0x0004003d,0x00000006,0x000006e0,0x000000fd, + 0x0003003e,0x000006df,0x000006e0,0x0004003d,0x00000029,0x000006e2,0x000000fe,0x0003003e, + 0x000006e1,0x000006e2,0x0004003d,0x00000006,0x000006e4,0x000000ff,0x0003003e,0x000006e3, + 0x000006e4,0x0003003e,0x000006e5,0x000006dc,0x0004003d,0x00000006,0x000006e7,0x00000102, + 0x0003003e,0x000006e6,0x000006e7,0x000a0039,0x00000002,0x000006e8,0x000000eb,0x000006dd, + 0x000006df,0x000006e1,0x000006e3,0x000006e5,0x000006e6,0x0004003d,0x00000006,0x000006e9, + 0x00000101,0x0004003d,0x00000006,0x000006ea,0x00000100,0x00050080,0x00000006,0x000006eb, + 0x000006ea,0x00000142,0x000500b2,0x0000009d,0x000006ec,0x000006e9,0x000006eb,0x000300f7, + 0x000006ee,0x00000000,0x000400fa,0x000006ec,0x000006ed,0x000006ee,0x000200f8,0x000006ed, + 0x000100fd,0x000200f8,0x000006ee,0x00040039,0x00000002,0x000006f0,0x0000009b,0x0004003d, + 0x00000006,0x000006f1,0x00000100,0x00050080,0x00000006,0x000006f2,0x000006f1,0x00000142, + 0x0004003d,0x00000029,0x000006f4,0x000000fe,0x0003003e,0x000006f3,0x000006f4,0x0004003d, + 0x00000006,0x000006f6,0x000000ff,0x0003003e,0x000006f5,0x000006f6,0x0003003e,0x000006f7, + 0x000006f2,0x0004003d,0x00000006,0x000006f9,0x00000102,0x0003003e,0x000006f8,0x000006f9, + 0x00080039,0x00000002,0x000006fa,0x000000f2,0x000006f3,0x000006f5,0x000006f7,0x000006f8, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x0000010b,0x00000000,0x00000105,0x00030037, + 0x000000a4,0x00000106,0x00030037,0x00000007,0x00000107,0x00030037,0x00000007,0x00000108, + 0x00030037,0x00000007,0x00000109,0x00030037,0x00000007,0x0000010a,0x000200f8,0x0000010c, + 0x0004003b,0x000000a4,0x000006fb,0x00000007,0x0004003b,0x00000007,0x000006fe,0x00000007, + 0x0004003b,0x00000007,0x00000700,0x00000007,0x0004003b,0x00000007,0x00000709,0x00000007, + 0x0004003b,0x00000007,0x00000711,0x00000007,0x0004003b,0x00000007,0x00000713,0x00000007, + 0x0004003b,0x000000a4,0x00000715,0x00000007,0x0004003b,0x00000007,0x00000717,0x00000007, + 0x0004003b,0x00000007,0x00000719,0x00000007,0x0004003b,0x00000007,0x0000071b,0x00000007, + 0x0004003b,0x00000007,0x0000071e,0x00000007,0x0004003b,0x00000007,0x00000720,0x00000007, + 0x0004003b,0x000000a4,0x00000722,0x00000007,0x0004003b,0x00000007,0x00000724,0x00000007, + 0x0004003b,0x00000007,0x00000726,0x00000007,0x0004003b,0x00000007,0x00000727,0x00000007, + 0x0004003b,0x00000007,0x00000729,0x00000007,0x0004003b,0x00000007,0x00000731,0x00000007, + 0x0004003b,0x00000007,0x00000733,0x00000007,0x0004003b,0x00000007,0x00000735,0x00000007, + 0x0004003b,0x00000007,0x0000073b,0x00000007,0x0004003b,0x00000007,0x0000073e,0x00000007, + 0x0004003b,0x00000007,0x00000740,0x00000007,0x0004003b,0x00000007,0x00000742,0x00000007, + 0x0004003b,0x00000007,0x00000744,0x00000007,0x0004003b,0x00000007,0x00000747,0x00000007, + 0x0004003b,0x00000007,0x00000749,0x00000007,0x0004003b,0x000000a4,0x0000074b,0x00000007, + 0x0004003b,0x00000007,0x0000074c,0x00000007,0x0004003b,0x00000007,0x0000074e,0x00000007, + 0x0004003b,0x00000007,0x0000074f,0x00000007,0x0004003b,0x00000007,0x00000751,0x00000007, + 0x0004003d,0x00000006,0x000006fc,0x00000107,0x00050089,0x00000006,0x000006fd,0x000006fc, + 0x000003d1,0x0003003e,0x000006fe,0x000006fd,0x00050039,0x00000029,0x000006ff,0x0000002c, + 0x000006fe,0x0003003e,0x000006fb,0x000006ff,0x00050041,0x00000007,0x00000701,0x000006fb, + 0x00000186,0x0004003d,0x00000006,0x00000702,0x00000701,0x0004003d,0x00000006,0x00000703, + 0x00000107,0x000500c2,0x00000006,0x00000705,0x00000703,0x00000704,0x00050089,0x00000006, + 0x00000706,0x00000705,0x00000141,0x00050084,0x00000006,0x00000707,0x000004bc,0x00000706, + 0x00050080,0x00000006,0x00000708,0x00000702,0x00000707,0x0003003e,0x00000700,0x00000708, + 0x00050041,0x00000007,0x0000070a,0x000006fb,0x00000148,0x0004003d,0x00000006,0x0000070b, + 0x0000070a,0x0004003d,0x00000006,0x0000070c,0x00000107,0x000500c2,0x00000006,0x0000070e, + 0x0000070c,0x0000070d,0x00050084,0x00000006,0x0000070f,0x000004bc,0x0000070e,0x00050080, + 0x00000006,0x00000710,0x0000070b,0x0000070f,0x0003003e,0x00000709,0x00000710,0x0004003d, + 0x00000006,0x00000712,0x00000700,0x0003003e,0x00000711,0x00000712,0x0004003d,0x00000006, + 0x00000714,0x00000709,0x0003003e,0x00000713,0x00000714,0x0004003d,0x00000029,0x00000716, + 0x00000106,0x0003003e,0x00000715,0x00000716,0x0004003d,0x00000006,0x00000718,0x00000107, + 0x0003003e,0x00000717,0x00000718,0x0004003d,0x00000006,0x0000071a,0x00000108,0x0003003e, + 0x00000719,0x0000071a,0x0004003d,0x00000006,0x0000071c,0x0000010a,0x0003003e,0x0000071b, + 0x0000071c,0x000a0039,0x00000002,0x0000071d,0x000000d3,0x00000711,0x00000713,0x00000715, + 0x00000717,0x00000719,0x0000071b,0x0004003d,0x00000006,0x0000071f,0x00000700,0x0003003e, + 0x0000071e,0x0000071f,0x0004003d,0x00000006,0x00000721,0x00000709,0x0003003e,0x00000720, + 0x00000721,0x0004003d,0x00000029,0x00000723,0x00000106,0x0003003e,0x00000722,0x00000723, + 0x0004003d,0x00000006,0x00000725,0x00000107,0x0003003e,0x00000724,0x00000725,0x0003003e, + 0x00000726,0x00000141,0x0004003d,0x00000006,0x00000728,0x00000108,0x0003003e,0x00000727, + 0x00000728,0x0004003d,0x00000006,0x0000072a,0x0000010a,0x0003003e,0x00000729,0x0000072a, + 0x000b0039,0x00000002,0x0000072b,0x00000103,0x0000071e,0x00000720,0x00000722,0x00000724, + 0x00000726,0x00000727,0x00000729,0x0004003d,0x00000006,0x0000072c,0x00000108,0x000500b2, + 0x0000009d,0x0000072d,0x0000072c,0x0000061a,0x000300f7,0x0000072f,0x00000000,0x000400fa, + 0x0000072d,0x0000072e,0x0000072f,0x000200f8,0x0000072e,0x000100fd,0x000200f8,0x0000072f, + 0x0004003d,0x00000006,0x00000732,0x00000109,0x0003003e,0x00000731,0x00000732,0x0004003d, + 0x00000006,0x00000734,0x00000107,0x0003003e,0x00000733,0x00000734,0x0004003d,0x00000006, + 0x00000736,0x0000010a,0x0003003e,0x00000735,0x00000736,0x00070039,0x0000009d,0x00000737, + 0x000000a2,0x00000731,0x00000733,0x00000735,0x000300f7,0x00000739,0x00000000,0x000400fa, + 0x00000737,0x00000738,0x00000739,0x000200f8,0x00000738,0x000100fd,0x000200f8,0x00000739, + 0x0004003d,0x00000006,0x0000073c,0x0000010a,0x0003003e,0x0000073b,0x0000073c,0x00050039, + 0x00000002,0x0000073d,0x00000076,0x0000073b,0x0004003d,0x00000006,0x0000073f,0x00000700, + 0x0003003e,0x0000073e,0x0000073f,0x0004003d,0x00000006,0x00000741,0x00000709,0x0003003e, + 0x00000740,0x00000741,0x0004003d,0x00000006,0x00000743,0x00000108,0x0003003e,0x00000742, + 0x00000743,0x0004003d,0x00000006,0x00000745,0x0000010a,0x0003003e,0x00000744,0x00000745, + 0x00080039,0x00000002,0x00000746,0x000000f9,0x0000073e,0x00000740,0x00000742,0x00000744, + 0x0004003d,0x00000006,0x00000748,0x00000700,0x0003003e,0x00000747,0x00000748,0x0004003d, + 0x00000006,0x0000074a,0x00000709,0x0003003e,0x00000749,0x0000074a,0x0003003e,0x0000074b, + 0x0000037f,0x0004003d,0x00000006,0x0000074d,0x00000107,0x0003003e,0x0000074c,0x0000074d, + 0x0003003e,0x0000074e,0x000004bc,0x0004003d,0x00000006,0x00000750,0x00000108,0x0003003e, + 0x0000074f,0x00000750,0x0004003d,0x00000006,0x00000752,0x0000010a,0x0003003e,0x00000751, + 0x00000752,0x000b0039,0x00000002,0x00000753,0x00000103,0x00000747,0x00000749,0x0000074b, + 0x0000074c,0x0000074e,0x0000074f,0x00000751,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000114,0x00000000,0x0000010d,0x00030037,0x000000a4,0x0000010e,0x00030037,0x00000007, + 0x0000010f,0x00030037,0x00000007,0x00000110,0x00030037,0x00000007,0x00000111,0x00030037, + 0x00000007,0x00000112,0x00030037,0x000000a4,0x00000113,0x000200f8,0x00000115,0x0004003b, + 0x000000a4,0x00000757,0x00000007,0x0004003b,0x00000007,0x00000758,0x00000007,0x0004003b, + 0x00000007,0x0000075a,0x00000007,0x0004003b,0x00000007,0x0000075c,0x00000007,0x0004003b, + 0x00000007,0x0000075e,0x00000007,0x0004003d,0x00000029,0x00000754,0x0000010e,0x0004003d, + 0x00000029,0x00000755,0x00000113,0x00050080,0x00000029,0x00000756,0x00000754,0x00000755, + 0x0003003e,0x00000757,0x00000756,0x0004003d,0x00000006,0x00000759,0x0000010f,0x0003003e, + 0x00000758,0x00000759,0x0004003d,0x00000006,0x0000075b,0x00000110,0x0003003e,0x0000075a, + 0x0000075b,0x0004003d,0x00000006,0x0000075d,0x00000111,0x0003003e,0x0000075c,0x0000075d, + 0x0004003d,0x00000006,0x0000075f,0x00000112,0x0003003e,0x0000075e,0x0000075f,0x00090039, + 0x00000002,0x00000760,0x0000010b,0x00000757,0x00000758,0x0000075a,0x0000075c,0x0000075e, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x0000011b,0x00000000,0x00000118,0x00030037, + 0x00000117,0x00000119,0x00030037,0x00000007,0x0000011a,0x000200f8,0x0000011c,0x0004003b, + 0x000000a4,0x00000769,0x00000007,0x0004003b,0x00000007,0x0000076a,0x00000007,0x0004003b, + 0x00000007,0x0000076b,0x00000007,0x0004003b,0x00000007,0x0000076c,0x00000007,0x0004003b, + 0x00000007,0x0000076d,0x00000007,0x0004003b,0x000000a4,0x0000076e,0x00000007,0x0004003d, + 0x00000116,0x00000761,0x00000119,0x0007004f,0x00000029,0x00000762,0x00000761,0x00000761, + 0x00000000,0x00000001,0x0004003d,0x00000006,0x00000763,0x0000011a,0x00040039,0x00000006, + 0x00000764,0x00000036,0x00040039,0x00000006,0x00000765,0x00000038,0x00050041,0x00000007, + 0x00000766,0x00000119,0x00000141,0x0004003d,0x00000006,0x00000767,0x00000766,0x00040039, + 0x00000029,0x00000768,0x0000003b,0x0003003e,0x00000769,0x00000762,0x0003003e,0x0000076a, + 0x00000763,0x0003003e,0x0000076b,0x00000764,0x0003003e,0x0000076c,0x00000765,0x0003003e, + 0x0000076d,0x00000767,0x0003003e,0x0000076e,0x00000768,0x000a0039,0x00000002,0x0000076f, + 0x00000114,0x00000769,0x0000076a,0x0000076b,0x0000076c,0x0000076d,0x0000076e,0x000100fd, + 0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h b/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h new file mode 100644 index 000000000..d03156242 --- /dev/null +++ b/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h @@ -0,0 +1,562 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_PREPARE_INPUTS_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x0000028f,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, + 0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000027a, + 0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001,0x00030003,0x00000002, + 0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865, + 0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47,0x735f5458,0x65646168, + 0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63,0x00736570,0x000a0004, + 0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70,0x5f656c79,0x656e696c,0x7269645f,0x69746365, + 0x00006576,0x00080004,0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65,0x74636572, + 0x00657669,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005,0x0000000c,0x4c786666, + 0x28707265,0x663b3166,0x31663b31,0x0000003b,0x00030005,0x00000009,0x00000078,0x00030005, + 0x0000000a,0x00000079,0x00030005,0x0000000b,0x00000074,0x00060005,0x00000010,0x53786666, + 0x72757461,0x28657461,0x003b3166,0x00030005,0x0000000f,0x00000078,0x00060005,0x00000016, + 0x46786666,0x74636172,0x32667628,0x0000003b,0x00030005,0x00000015,0x00000078,0x00060005, + 0x0000001b,0x4d786666,0x66286e69,0x31663b31,0x0000003b,0x00030005,0x00000019,0x00000078, + 0x00030005,0x0000001a,0x00000079,0x00060005,0x00000022,0x4d786666,0x76287861,0x763b3366, + 0x003b3366,0x00030005,0x00000020,0x00000078,0x00030005,0x00000021,0x00000079,0x00050005, + 0x00000027,0x646e6552,0x69537265,0x0028657a,0x000b0005,0x0000002b,0x69766544,0x6f546563, + 0x77656956,0x63617053,0x61725465,0x6f66736e,0x61466d72,0x726f7463,0x00002873,0x00070005, + 0x0000002e,0x69746f4d,0x65566e6f,0x726f7463,0x6c616353,0x00002865,0x00090005,0x00000031, + 0x77656956,0x63617053,0x4d6f5465,0x72657465,0x63614673,0x28726f74,0x00000000,0x00070005, + 0x00000036,0x64616f4c,0x75706e49,0x70654474,0x76286874,0x003b3269,0x00040005,0x00000035, + 0x50785069,0x0000736f,0x00070005,0x0000003a,0x64616f4c,0x75706e49,0x6c6f4374,0x7628726f, + 0x003b3269,0x00040005,0x00000039,0x50785069,0x0000736f,0x00090005,0x0000003e,0x64616f4c, + 0x75706e49,0x746f4d74,0x566e6f69,0x6f746365,0x69762872,0x00003b32,0x00090005,0x0000003d, + 0x44785069,0x74616c69,0x6f4d6465,0x6e6f6974,0x74636556,0x6f50726f,0x00000073,0x00090005, + 0x00000043,0x726f7453,0x72614665,0x73656874,0x70654474,0x76286874,0x663b3269,0x00003b31, + 0x00040005,0x00000041,0x50785069,0x0000736f,0x00040005,0x00000042,0x70654466,0x00006874, + 0x00090005,0x00000047,0x726f7453,0x72754365,0x746e6572,0x616d754c,0x32697628,0x3b31663b, + 0x00000000,0x00040005,0x00000045,0x50785069,0x0000736f,0x00040005,0x00000046,0x6d754c66, + 0x00000061,0x000a0005,0x0000004b,0x726f7453,0x63655265,0x74736e6f,0x74637572,0x65446465, + 0x28687470,0x3b326976,0x003b3166,0x00050005,0x00000049,0x53785069,0x6c706d61,0x00000065, + 0x00040005,0x0000004a,0x70654466,0x00006874,0x00090005,0x0000004f,0x726f7453,0x6c694465, + 0x64657461,0x74706544,0x69762868,0x31663b32,0x0000003b,0x00040005,0x0000004d,0x50785069, + 0x0000736f,0x00040005,0x0000004e,0x70654466,0x00006874,0x000b0005,0x00000054,0x726f7453, + 0x6c694465,0x64657461,0x69746f4d,0x65566e6f,0x726f7463,0x32697628,0x3266763b,0x0000003b, + 0x00040005,0x00000052,0x50785069,0x0000736f,0x00060005,0x00000053,0x746f4d66,0x566e6f69, + 0x6f746365,0x00000072,0x000b0005,0x00000057,0x6f636552,0x7274736e,0x65746375,0x70654464, + 0x764d6874,0x68547850,0x68736572,0x28646c6f,0x003b3166,0x00080005,0x00000056,0x61654e66, + 0x74736572,0x74706544,0x4d6e4968,0x72657465,0x00000073,0x00070005,0x0000005b,0x34746547, + 0x6c65564b,0x7469636f,0x66762879,0x00003b32,0x00060005,0x0000005a,0x746f4d66,0x566e6f69, + 0x6f746365,0x00000072,0x00060005,0x0000005f,0x54424752,0x6d754c6f,0x66762861,0x00003b33, + 0x00050005,0x0000005e,0x6e694c66,0x52726165,0x00006267,0x00070005,0x00000065,0x6e4f7349, + 0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005,0x00000063,0x00736f70,0x00040005, + 0x00000064,0x657a6973,0x00000000,0x00080005,0x00000068,0x56746547,0x53776569,0x65636170, + 0x74706544,0x31662868,0x0000003b,0x00060005,0x00000067,0x76654466,0x44656369,0x68747065, + 0x00000000,0x000a0005,0x0000006b,0x56746547,0x53776569,0x65636170,0x74706544,0x4d6e4968, + 0x72657465,0x31662873,0x0000003b,0x00060005,0x0000006a,0x76654466,0x44656369,0x68747065, + 0x00000000,0x00080005,0x00000071,0x696c6942,0x7261656e,0x706d6153,0x676e696c,0x61746144, + 0x00000000,0x00060006,0x00000071,0x00000000,0x66664f69,0x73746573,0x00000000,0x00060006, + 0x00000071,0x00000001,0x69655766,0x73746867,0x00000000,0x00060006,0x00000071,0x00000002, + 0x73614269,0x736f5065,0x00000000,0x000b0005,0x00000075,0x42746547,0x6e696c69,0x53726165, + 0x6c706d61,0x44676e69,0x28617461,0x3b326676,0x3b326976,0x00000000,0x00030005,0x00000073, + 0x00765566,0x00040005,0x00000074,0x7a695369,0x00000065,0x000b0005,0x0000007b,0x6f636552, + 0x7274736e,0x50746375,0x44766572,0x68747065,0x32697628,0x3b31663b,0x3b326676,0x00000000, + 0x00040005,0x00000078,0x50785069,0x0000736f,0x00040005,0x00000079,0x70654466,0x00006874, + 0x00060005,0x0000007a,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00060005,0x0000007d, + 0x74706544,0x74784568,0x73746e65,0x00000000,0x00060006,0x0000007d,0x00000000,0x61654e66, + 0x74736572,0x00000000,0x00070006,0x0000007d,0x00000001,0x61654e66,0x74736572,0x726f6f43, + 0x00000064,0x00060006,0x0000007d,0x00000002,0x72614666,0x73656874,0x00000074,0x00080005, + 0x00000080,0x646e6946,0x74706544,0x74784568,0x73746e65,0x32697628,0x0000003b,0x00040005, + 0x0000007f,0x50785069,0x0000736f,0x00100005,0x00000085,0x616c6944,0x6f4d6574,0x6e6f6974, + 0x74636556,0x7628726f,0x733b3269,0x63757274,0x65442d74,0x45687470,0x6e657478,0x662d7374, + 0x69762d31,0x31662d32,0x00003b31,0x00040005,0x00000083,0x50785069,0x0000736f,0x00060005, + 0x00000084,0x74706564,0x74784568,0x73746e65,0x00000000,0x00090005,0x00000088,0x43746547, + 0x65727275,0x7246746e,0x4c656d61,0x28616d75,0x3b326976,0x00000000,0x00040005,0x00000087, + 0x50785069,0x0000736f,0x00070005,0x0000008c,0x70657250,0x49657261,0x7475706e,0x69762873, + 0x00003b32,0x00040005,0x0000008b,0x50785069,0x0000736f,0x00070005,0x000000a8,0x53466263, + 0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x000000a8,0x00000000,0x6e655269, + 0x53726564,0x00657a69,0x000a0006,0x000000a8,0x00000001,0x65725069,0x756f6976,0x61724673, + 0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x000000a8,0x00000002,0x73705569, + 0x656c6163,0x657a6953,0x00000000,0x000a0006,0x000000a8,0x00000003,0x65725069,0x756f6976, + 0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x000000a8,0x00000004, + 0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x000000a8,0x00000005,0x78614d69, + 0x63737055,0x53656c61,0x00657a69,0x00080006,0x000000a8,0x00000006,0x76654466,0x54656369, + 0x6569566f,0x70654477,0x00006874,0x00050006,0x000000a8,0x00000007,0x74694a66,0x00726574, + 0x00090006,0x000000a8,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474, + 0x00000000,0x00080006,0x000000a8,0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372, + 0x0000656c,0x00080006,0x000000a8,0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463, + 0x00000000,0x000b0006,0x000000a8,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72, + 0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x000000a8,0x0000000c,0x6e615466, + 0x666c6148,0x00564f46,0x00090006,0x000000a8,0x0000000d,0x74694a66,0x53726574,0x65757165, + 0x4c65636e,0x74676e65,0x00000068,0x00060006,0x000000a8,0x0000000e,0x6c654466,0x69546174, + 0x0000656d,0x00080006,0x000000a8,0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f, + 0x00000065,0x000a0006,0x000000a8,0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d, + 0x61467372,0x726f7463,0x00000000,0x00060006,0x000000a8,0x00000011,0x61724666,0x6e49656d, + 0x00786564,0x00070006,0x000000a8,0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74, + 0x00080006,0x000000a8,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c, + 0x00080006,0x000000a8,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61, + 0x000a0006,0x000000a8,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465, + 0x61724672,0x0000656d,0x000b0006,0x000000a8,0x00000016,0x6e694d66,0x6f736944,0x756c6363, + 0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x000000aa,0x53466263, + 0x70553352,0x6c616373,0x00007265,0x00060005,0x000000c5,0x6e695f72,0x5f747570,0x74706564, + 0x00000068,0x00080005,0x000000cd,0x6e695f72,0x5f747570,0x6f6c6f63,0x696a5f72,0x72657474, + 0x00006465,0x00070005,0x000000d4,0x63725366,0x69746f4d,0x65566e6f,0x726f7463,0x00000000, + 0x00080005,0x000000d5,0x6e695f72,0x5f747570,0x69746f6d,0x765f6e6f,0x6f746365,0x00007372, + 0x00060005,0x000000da,0x4d765566,0x6f69746f,0x6365566e,0x00726f74,0x00070005,0x000000e3, + 0x665f7772,0x68747261,0x5f747365,0x74706564,0x00000068,0x00060005,0x000000e8,0x635f7772, + 0x65727275,0x6c5f746e,0x00616d75,0x00040005,0x000000ee,0x70654475,0x00006874,0x000c0005, + 0x000000f3,0x725f7772,0x6e6f6365,0x75727473,0x64657463,0x6572705f,0x756f6976,0x656e5f73, + 0x73657261,0x65645f74,0x00687470,0x00070005,0x000000fc,0x645f7772,0x74616c69,0x645f6465, + 0x68747065,0x00000000,0x00090005,0x00000103,0x645f7772,0x74616c69,0x6d5f6465,0x6f69746f, + 0x65765f6e,0x726f7463,0x00000073,0x00040005,0x0000010f,0x61726170,0x0000006d,0x00040005, + 0x00000111,0x61726170,0x0000006d,0x00040005,0x00000112,0x61726170,0x0000006d,0x00040005, + 0x00000113,0x61726170,0x0000006d,0x00070005,0x00000132,0x76654466,0x54656369,0x6569566f, + 0x70654477,0x00006874,0x00040005,0x0000013d,0x61726170,0x0000006d,0x00050005,0x00000144, + 0x53785066,0x6c706d61,0x00000065,0x00040005,0x0000014d,0x61746164,0x00000000,0x00040005, + 0x00000153,0x46785066,0x00636172,0x00040005,0x00000154,0x61726170,0x0000006d,0x00080005, + 0x00000180,0x61654e66,0x74736572,0x74706544,0x4d6e4968,0x72657465,0x00000073,0x00040005, + 0x00000181,0x61726170,0x0000006d,0x00040005,0x00000185,0x61726170,0x0000006d,0x00040005, + 0x00000186,0x61726170,0x0000006d,0x000a0005,0x00000188,0x63655266,0x74736e6f,0x74637572, + 0x65446465,0x764d7470,0x65726854,0x6c6f6873,0x00000064,0x00040005,0x00000189,0x61726170, + 0x0000006d,0x00040005,0x0000018c,0x61726170,0x0000006d,0x00030005,0x00000194,0x00765566, + 0x00060005,0x0000019c,0x70655266,0x656a6f72,0x64657463,0x00007655,0x00060005,0x000001a0, + 0x696c6962,0x7261656e,0x6f666e49,0x00000000,0x00040005,0x000001a2,0x61726170,0x0000006d, + 0x00040005,0x000001a4,0x61726170,0x0000006d,0x00060005,0x000001a7,0x6d615369,0x49656c70, + 0x7865646e,0x00000000,0x00040005,0x000001b0,0x66664f69,0x00746573,0x00040005,0x000001b4, + 0x69655766,0x00746867,0x00050005,0x000001bd,0x6f745369,0x6f506572,0x00000073,0x00040005, + 0x000001c3,0x61726170,0x0000006d,0x00040005,0x000001c5,0x61726170,0x0000006d,0x00040005, + 0x000001c9,0x61726170,0x0000006d,0x00040005,0x000001cb,0x61726170,0x0000006d,0x00060005, + 0x000001d0,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x000001d8,0x736f5069, + 0x00000000,0x00050005,0x000001e5,0x65646e69,0x6c626178,0x00000065,0x00040005,0x000001eb, + 0x74706564,0x00000068,0x00040005,0x000001ed,0x61726170,0x0000006d,0x00040005,0x000001f4, + 0x65747865,0x0073746e,0x00040005,0x00000204,0x736f5069,0x00000000,0x00050005,0x00000207, + 0x65646e69,0x6c626178,0x00000065,0x00040005,0x0000020c,0x61726170,0x0000006d,0x00040005, + 0x0000020e,0x61726170,0x0000006d,0x00050005,0x00000212,0x44644e66,0x68747065,0x00000000, + 0x00040005,0x0000021c,0x61726170,0x0000006d,0x00040005,0x0000021f,0x61726170,0x0000006d, + 0x00050005,0x0000022c,0x6d615369,0x50656c70,0x0000736f,0x00070005,0x0000022e,0x746f4d69, + 0x566e6f69,0x6f746365,0x736f5072,0x00000000,0x00080005,0x00000230,0x6c694466,0x64657461, + 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x00000231,0x61726170,0x0000006d, + 0x00040005,0x00000237,0x62675266,0x00000000,0x00040005,0x00000239,0x61726170,0x0000006d, + 0x00040005,0x0000023c,0x61726170,0x0000006d,0x00040005,0x0000023d,0x61726170,0x0000006d, + 0x00040005,0x0000023f,0x6d754c66,0x00000061,0x00040005,0x00000240,0x61726170,0x0000006d, + 0x00060005,0x00000246,0x74706564,0x74784568,0x73746e65,0x00000000,0x00040005,0x00000247, + 0x61726170,0x0000006d,0x00080005,0x0000024a,0x6c694466,0x64657461,0x69746f4d,0x65566e6f, + 0x726f7463,0x00000000,0x00040005,0x0000024c,0x61726170,0x0000006d,0x00040005,0x0000024f, + 0x61726170,0x0000006d,0x00040005,0x00000251,0x61726170,0x0000006d,0x00040005,0x00000254, + 0x61726170,0x0000006d,0x00040005,0x00000257,0x61726170,0x0000006d,0x00040005,0x00000259, + 0x61726170,0x0000006d,0x00040005,0x0000025c,0x61726170,0x0000006d,0x00040005,0x0000025e, + 0x61726170,0x0000006d,0x00080005,0x00000262,0x72614666,0x73656874,0x70654474,0x6e496874, + 0x6574654d,0x00007372,0x00040005,0x00000263,0x61726170,0x0000006d,0x00040005,0x00000267, + 0x61726170,0x0000006d,0x00040005,0x00000268,0x61726170,0x0000006d,0x00040005,0x0000026a, + 0x61726170,0x0000006d,0x00040005,0x0000026c,0x61726170,0x0000006d,0x00040005,0x0000026f, + 0x6d754c66,0x00000061,0x00040005,0x00000270,0x61726170,0x0000006d,0x00040005,0x00000273, + 0x61726170,0x0000006d,0x00040005,0x00000275,0x61726170,0x0000006d,0x00080005,0x0000027a, + 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x0000027e, + 0x61726170,0x0000006d,0x00060005,0x00000284,0x6f505f73,0x43746e69,0x706d616c,0x00000000, + 0x00060005,0x00000285,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00030047,0x000000a8, + 0x00000002,0x00050048,0x000000a8,0x00000000,0x00000023,0x00000000,0x00050048,0x000000a8, + 0x00000001,0x00000023,0x00000008,0x00050048,0x000000a8,0x00000002,0x00000023,0x00000010, + 0x00050048,0x000000a8,0x00000003,0x00000023,0x00000018,0x00050048,0x000000a8,0x00000004, + 0x00000023,0x00000020,0x00050048,0x000000a8,0x00000005,0x00000023,0x00000028,0x00050048, + 0x000000a8,0x00000006,0x00000023,0x00000030,0x00050048,0x000000a8,0x00000007,0x00000023, + 0x00000040,0x00050048,0x000000a8,0x00000008,0x00000023,0x00000048,0x00050048,0x000000a8, + 0x00000009,0x00000023,0x00000050,0x00050048,0x000000a8,0x0000000a,0x00000023,0x00000058, + 0x00050048,0x000000a8,0x0000000b,0x00000023,0x00000060,0x00050048,0x000000a8,0x0000000c, + 0x00000023,0x00000068,0x00050048,0x000000a8,0x0000000d,0x00000023,0x0000006c,0x00050048, + 0x000000a8,0x0000000e,0x00000023,0x00000070,0x00050048,0x000000a8,0x0000000f,0x00000023, + 0x00000074,0x00050048,0x000000a8,0x00000010,0x00000023,0x00000078,0x00050048,0x000000a8, + 0x00000011,0x00000023,0x0000007c,0x00050048,0x000000a8,0x00000012,0x00000023,0x00000080, + 0x00050048,0x000000a8,0x00000013,0x00000023,0x00000084,0x00050048,0x000000a8,0x00000014, + 0x00000023,0x00000088,0x00050048,0x000000a8,0x00000015,0x00000023,0x0000008c,0x00050048, + 0x000000a8,0x00000016,0x00000023,0x00000090,0x00040047,0x000000aa,0x00000021,0x00000008, + 0x00040047,0x000000aa,0x00000022,0x00000000,0x00040047,0x000000c5,0x00000021,0x00000001, + 0x00040047,0x000000c5,0x00000022,0x00000000,0x00040047,0x000000cd,0x00000021,0x00000002, + 0x00040047,0x000000cd,0x00000022,0x00000000,0x00040047,0x000000d5,0x00000021,0x00000000, + 0x00040047,0x000000d5,0x00000022,0x00000000,0x00040047,0x000000e3,0x00000021,0x00000006, + 0x00040047,0x000000e3,0x00000022,0x00000000,0x00040047,0x000000e8,0x00000021,0x00000007, + 0x00040047,0x000000e8,0x00000022,0x00000000,0x00040047,0x000000f3,0x00000021,0x00000005, + 0x00040047,0x000000f3,0x00000022,0x00000000,0x00030047,0x000000fc,0x00000019,0x00040047, + 0x000000fc,0x00000021,0x00000004,0x00040047,0x000000fc,0x00000022,0x00000000,0x00030047, + 0x00000103,0x00000019,0x00040047,0x00000103,0x00000021,0x00000003,0x00040047,0x00000103, + 0x00000022,0x00000000,0x00040047,0x0000027a,0x0000000b,0x0000001c,0x00040047,0x00000284, + 0x00000021,0x000003e8,0x00040047,0x00000284,0x00000022,0x00000000,0x00040047,0x00000285, + 0x00000021,0x000003e9,0x00040047,0x00000285,0x00000022,0x00000000,0x00040047,0x0000028e, + 0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016, + 0x00000006,0x00000020,0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008, + 0x00000006,0x00000007,0x00000007,0x00000007,0x00040021,0x0000000e,0x00000006,0x00000007, + 0x00040017,0x00000012,0x00000006,0x00000002,0x00040020,0x00000013,0x00000007,0x00000012, + 0x00040021,0x00000014,0x00000012,0x00000013,0x00050021,0x00000018,0x00000006,0x00000007, + 0x00000007,0x00040017,0x0000001d,0x00000006,0x00000003,0x00040020,0x0000001e,0x00000007, + 0x0000001d,0x00050021,0x0000001f,0x0000001d,0x0000001e,0x0000001e,0x00040015,0x00000024, + 0x00000020,0x00000001,0x00040017,0x00000025,0x00000024,0x00000002,0x00030021,0x00000026, + 0x00000025,0x00040017,0x00000029,0x00000006,0x00000004,0x00030021,0x0000002a,0x00000029, + 0x00030021,0x0000002d,0x00000012,0x00030021,0x00000030,0x00000006,0x00040020,0x00000033, + 0x00000007,0x00000025,0x00040021,0x00000034,0x00000006,0x00000033,0x00040021,0x00000038, + 0x0000001d,0x00000033,0x00040021,0x0000003c,0x00000012,0x00000033,0x00050021,0x00000040, + 0x00000002,0x00000033,0x00000007,0x00050021,0x00000051,0x00000002,0x00000033,0x00000013, + 0x00040021,0x00000059,0x00000006,0x00000013,0x00040021,0x0000005d,0x00000006,0x0000001e, + 0x00020014,0x00000061,0x00050021,0x00000062,0x00000061,0x00000033,0x00000033,0x00040015, + 0x0000006d,0x00000020,0x00000000,0x0004002b,0x0000006d,0x0000006e,0x00000004,0x0004001c, + 0x0000006f,0x00000025,0x0000006e,0x0004001c,0x00000070,0x00000006,0x0000006e,0x0005001e, + 0x00000071,0x0000006f,0x00000070,0x00000025,0x00050021,0x00000072,0x00000071,0x00000013, + 0x00000033,0x00060021,0x00000077,0x00000002,0x00000033,0x00000007,0x00000013,0x0005001e, + 0x0000007d,0x00000006,0x00000025,0x00000006,0x00040021,0x0000007e,0x0000007d,0x00000033, + 0x00050021,0x00000082,0x00000012,0x00000033,0x0000007d,0x00040021,0x0000008a,0x00000002, + 0x00000033,0x0004002b,0x00000006,0x00000095,0x00000000,0x0004002b,0x00000006,0x00000096, + 0x3f800000,0x0019001e,0x000000a8,0x00000025,0x00000025,0x00000025,0x00000025,0x00000025, + 0x00000025,0x00000029,0x00000012,0x00000012,0x00000012,0x00000012,0x00000012,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00040020,0x000000a9,0x00000002,0x000000a8,0x0004003b,0x000000a9, + 0x000000aa,0x00000002,0x0004002b,0x00000024,0x000000ab,0x00000000,0x00040020,0x000000ac, + 0x00000002,0x00000025,0x0004002b,0x00000024,0x000000b1,0x00000006,0x00040020,0x000000b2, + 0x00000002,0x00000029,0x0004002b,0x00000024,0x000000b7,0x00000009,0x00040020,0x000000b8, + 0x00000002,0x00000012,0x0004002b,0x00000024,0x000000bd,0x00000010,0x00040020,0x000000be, + 0x00000002,0x00000006,0x00090019,0x000000c3,0x00000006,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000001,0x00000000,0x00040020,0x000000c4,0x00000000,0x000000c3,0x0004003b, + 0x000000c4,0x000000c5,0x00000000,0x0004002b,0x0000006d,0x000000c9,0x00000000,0x0004003b, + 0x000000c4,0x000000cd,0x00000000,0x0004003b,0x000000c4,0x000000d5,0x00000000,0x00090019, + 0x000000e1,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000009, + 0x00040020,0x000000e2,0x00000000,0x000000e1,0x0004003b,0x000000e2,0x000000e3,0x00000000, + 0x0004003b,0x000000e2,0x000000e8,0x00000000,0x00040020,0x000000ed,0x00000007,0x0000006d, + 0x00090019,0x000000f1,0x0000006d,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x00000021,0x00040020,0x000000f2,0x00000000,0x000000f1,0x0004003b,0x000000f2,0x000000f3, + 0x00000000,0x00040020,0x000000f6,0x0000000b,0x0000006d,0x0004002b,0x0000006d,0x000000f8, + 0x00000001,0x00090019,0x000000fa,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000003,0x00040020,0x000000fb,0x00000000,0x000000fa,0x0004003b,0x000000fb, + 0x000000fc,0x00000000,0x00090019,0x00000101,0x00000006,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000007,0x00040020,0x00000102,0x00000000,0x00000101,0x0004003b, + 0x00000102,0x00000103,0x00000000,0x0004002b,0x00000006,0x0000010a,0x3e800000,0x0004002b, + 0x00000006,0x0000010b,0x3f400000,0x0004002b,0x00000006,0x0000010d,0x42c80000,0x0004002b, + 0x00000006,0x00000118,0x45700000,0x0004002b,0x00000006,0x00000119,0x45070000,0x0005002c, + 0x00000012,0x0000011a,0x00000118,0x00000119,0x0004002b,0x00000006,0x00000120,0x3e59b3d0, + 0x0004002b,0x00000006,0x00000121,0x3f371759,0x0004002b,0x00000006,0x00000122,0x3d93dd98, + 0x0006002c,0x0000001d,0x00000123,0x00000120,0x00000121,0x00000122,0x00040017,0x00000128, + 0x0000006d,0x00000002,0x00040017,0x0000012c,0x00000061,0x00000002,0x00040020,0x00000131, + 0x00000007,0x00000029,0x0004002b,0x00000006,0x00000149,0x3f000000,0x0005002c,0x00000012, + 0x0000014a,0x00000149,0x00000149,0x00040020,0x0000014c,0x00000007,0x00000071,0x0004002b, + 0x00000024,0x0000014e,0x00000002,0x0005002c,0x00000025,0x00000157,0x000000ab,0x000000ab, + 0x0004002b,0x00000024,0x00000159,0x00000001,0x0005002c,0x00000025,0x0000015a,0x00000159, + 0x000000ab,0x0005002c,0x00000025,0x0000015c,0x000000ab,0x00000159,0x0004002b,0x00000024, + 0x0000015e,0x00000003,0x0005002c,0x00000025,0x0000015f,0x00000159,0x00000159,0x0004002b, + 0x00000006,0x00000184,0x477fe000,0x00040020,0x000001a6,0x00000007,0x00000024,0x0004002b, + 0x00000024,0x000001ae,0x00000004,0x0004002b,0x00000006,0x000001b9,0x3a1fe868,0x0004002b, + 0x0000006d,0x000001da,0x00000009,0x0004001c,0x000001db,0x00000025,0x000001da,0x0004002b, + 0x00000024,0x000001dc,0xffffffff,0x0005002c,0x00000025,0x000001dd,0x000000ab,0x000001dc, + 0x0005002c,0x00000025,0x000001de,0x000001dc,0x000000ab,0x0005002c,0x00000025,0x000001df, + 0x000001dc,0x00000159,0x0005002c,0x00000025,0x000001e0,0x000001dc,0x000001dc,0x0005002c, + 0x00000025,0x000001e1,0x00000159,0x000001dc,0x000c002c,0x000001db,0x000001e2,0x00000157, + 0x0000015a,0x0000015c,0x000001dd,0x000001de,0x000001df,0x0000015f,0x000001e0,0x000001e1, + 0x00040020,0x000001e4,0x00000007,0x000001db,0x0004001c,0x000001e9,0x00000006,0x000001da, + 0x00040020,0x000001ea,0x00000007,0x000001e9,0x00040020,0x000001f3,0x00000007,0x0000007d, + 0x0006002c,0x0000001d,0x00000238,0x00000095,0x00000095,0x00000095,0x00040017,0x00000278, + 0x0000006d,0x00000003,0x00040020,0x00000279,0x00000001,0x00000278,0x0004003b,0x00000279, + 0x0000027a,0x00000001,0x0004002b,0x00000006,0x00000280,0x387fda40,0x0004002b,0x00000006, + 0x00000281,0x37801002,0x0002001a,0x00000282,0x00040020,0x00000283,0x00000000,0x00000282, + 0x0004003b,0x00000283,0x00000284,0x00000000,0x0004003b,0x00000283,0x00000285,0x00000000, + 0x0004002b,0x00000006,0x00000286,0x7f7fffff,0x0004002b,0x00000006,0x00000287,0x00800000, + 0x0004002b,0x00000006,0x00000288,0x3d800000,0x0004002b,0x00000006,0x00000289,0x3d3d70a4, + 0x0004002b,0x00000006,0x0000028a,0x3e400000,0x0004002b,0x00000006,0x0000028b,0x40000000, + 0x0004002b,0x00000006,0x0000028c,0x461c4000,0x0004002b,0x0000006d,0x0000028d,0x00000008, + 0x0006002c,0x00000278,0x0000028e,0x0000028d,0x0000028d,0x000000f8,0x00050036,0x00000002, + 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000033,0x0000027e, + 0x00000007,0x0004003d,0x00000278,0x0000027b,0x0000027a,0x0007004f,0x00000128,0x0000027c, + 0x0000027b,0x0000027b,0x00000000,0x00000001,0x0004007c,0x00000025,0x0000027d,0x0000027c, + 0x0003003e,0x0000027e,0x0000027d,0x00050039,0x00000002,0x0000027f,0x0000008c,0x0000027e, + 0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037, + 0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b, + 0x000200f8,0x0000000d,0x0004003d,0x00000006,0x0000008e,0x00000009,0x0004003d,0x00000006, + 0x0000008f,0x0000000a,0x0004003d,0x00000006,0x00000090,0x0000000b,0x0008000c,0x00000006, + 0x00000091,0x00000001,0x0000002e,0x0000008e,0x0000008f,0x00000090,0x000200fe,0x00000091, + 0x00010038,0x00050036,0x00000006,0x00000010,0x00000000,0x0000000e,0x00030037,0x00000007, + 0x0000000f,0x000200f8,0x00000011,0x0004003d,0x00000006,0x00000094,0x0000000f,0x0008000c, + 0x00000006,0x00000097,0x00000001,0x0000002b,0x00000094,0x00000095,0x00000096,0x000200fe, + 0x00000097,0x00010038,0x00050036,0x00000012,0x00000016,0x00000000,0x00000014,0x00030037, + 0x00000013,0x00000015,0x000200f8,0x00000017,0x0004003d,0x00000012,0x0000009a,0x00000015, + 0x0006000c,0x00000012,0x0000009b,0x00000001,0x0000000a,0x0000009a,0x000200fe,0x0000009b, + 0x00010038,0x00050036,0x00000006,0x0000001b,0x00000000,0x00000018,0x00030037,0x00000007, + 0x00000019,0x00030037,0x00000007,0x0000001a,0x000200f8,0x0000001c,0x0004003d,0x00000006, + 0x0000009e,0x00000019,0x0004003d,0x00000006,0x0000009f,0x0000001a,0x0007000c,0x00000006, + 0x000000a0,0x00000001,0x00000025,0x0000009e,0x0000009f,0x000200fe,0x000000a0,0x00010038, + 0x00050036,0x0000001d,0x00000022,0x00000000,0x0000001f,0x00030037,0x0000001e,0x00000020, + 0x00030037,0x0000001e,0x00000021,0x000200f8,0x00000023,0x0004003d,0x0000001d,0x000000a3, + 0x00000020,0x0004003d,0x0000001d,0x000000a4,0x00000021,0x0007000c,0x0000001d,0x000000a5, + 0x00000001,0x00000028,0x000000a3,0x000000a4,0x000200fe,0x000000a5,0x00010038,0x00050036, + 0x00000025,0x00000027,0x00000000,0x00000026,0x000200f8,0x00000028,0x00050041,0x000000ac, + 0x000000ad,0x000000aa,0x000000ab,0x0004003d,0x00000025,0x000000ae,0x000000ad,0x000200fe, + 0x000000ae,0x00010038,0x00050036,0x00000029,0x0000002b,0x00000000,0x0000002a,0x000200f8, + 0x0000002c,0x00050041,0x000000b2,0x000000b3,0x000000aa,0x000000b1,0x0004003d,0x00000029, + 0x000000b4,0x000000b3,0x000200fe,0x000000b4,0x00010038,0x00050036,0x00000012,0x0000002e, + 0x00000000,0x0000002d,0x000200f8,0x0000002f,0x00050041,0x000000b8,0x000000b9,0x000000aa, + 0x000000b7,0x0004003d,0x00000012,0x000000ba,0x000000b9,0x000200fe,0x000000ba,0x00010038, + 0x00050036,0x00000006,0x00000031,0x00000000,0x00000030,0x000200f8,0x00000032,0x00050041, + 0x000000be,0x000000bf,0x000000aa,0x000000bd,0x0004003d,0x00000006,0x000000c0,0x000000bf, + 0x000200fe,0x000000c0,0x00010038,0x00050036,0x00000006,0x00000036,0x00000000,0x00000034, + 0x00030037,0x00000033,0x00000035,0x000200f8,0x00000037,0x0004003d,0x000000c3,0x000000c6, + 0x000000c5,0x0004003d,0x00000025,0x000000c7,0x00000035,0x0007005f,0x00000029,0x000000c8, + 0x000000c6,0x000000c7,0x00000002,0x000000ab,0x00050051,0x00000006,0x000000ca,0x000000c8, + 0x00000000,0x000200fe,0x000000ca,0x00010038,0x00050036,0x0000001d,0x0000003a,0x00000000, + 0x00000038,0x00030037,0x00000033,0x00000039,0x000200f8,0x0000003b,0x0004003d,0x000000c3, + 0x000000ce,0x000000cd,0x0004003d,0x00000025,0x000000cf,0x00000039,0x0007005f,0x00000029, + 0x000000d0,0x000000ce,0x000000cf,0x00000002,0x000000ab,0x0008004f,0x0000001d,0x000000d1, + 0x000000d0,0x000000d0,0x00000000,0x00000001,0x00000002,0x000200fe,0x000000d1,0x00010038, + 0x00050036,0x00000012,0x0000003e,0x00000000,0x0000003c,0x00030037,0x00000033,0x0000003d, + 0x000200f8,0x0000003f,0x0004003b,0x00000013,0x000000d4,0x00000007,0x0004003b,0x00000013, + 0x000000da,0x00000007,0x0004003d,0x000000c3,0x000000d6,0x000000d5,0x0004003d,0x00000025, + 0x000000d7,0x0000003d,0x0007005f,0x00000029,0x000000d8,0x000000d6,0x000000d7,0x00000002, + 0x000000ab,0x0007004f,0x00000012,0x000000d9,0x000000d8,0x000000d8,0x00000000,0x00000001, + 0x0003003e,0x000000d4,0x000000d9,0x0004003d,0x00000012,0x000000db,0x000000d4,0x00040039, + 0x00000012,0x000000dc,0x0000002e,0x00050085,0x00000012,0x000000dd,0x000000db,0x000000dc, + 0x0003003e,0x000000da,0x000000dd,0x0004003d,0x00000012,0x000000de,0x000000da,0x000200fe, + 0x000000de,0x00010038,0x00050036,0x00000002,0x00000043,0x00000000,0x00000040,0x00030037, + 0x00000033,0x00000041,0x00030037,0x00000007,0x00000042,0x000200f8,0x00000044,0x0004003d, + 0x000000e1,0x000000e4,0x000000e3,0x0004003d,0x00000025,0x000000e5,0x00000041,0x0004003d, + 0x00000006,0x000000e6,0x00000042,0x00070050,0x00000029,0x000000e7,0x000000e6,0x00000095, + 0x00000095,0x00000095,0x00040063,0x000000e4,0x000000e5,0x000000e7,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000047,0x00000000,0x00000040,0x00030037,0x00000033,0x00000045, + 0x00030037,0x00000007,0x00000046,0x000200f8,0x00000048,0x0004003d,0x000000e1,0x000000e9, + 0x000000e8,0x0004003d,0x00000025,0x000000ea,0x00000045,0x0004003d,0x00000006,0x000000eb, + 0x00000046,0x00070050,0x00000029,0x000000ec,0x000000eb,0x00000095,0x00000095,0x00000095, + 0x00040063,0x000000e9,0x000000ea,0x000000ec,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x0000004b,0x00000000,0x00000040,0x00030037,0x00000033,0x00000049,0x00030037,0x00000007, + 0x0000004a,0x000200f8,0x0000004c,0x0004003b,0x000000ed,0x000000ee,0x00000007,0x0004003d, + 0x00000006,0x000000ef,0x0000004a,0x0004007c,0x0000006d,0x000000f0,0x000000ef,0x0003003e, + 0x000000ee,0x000000f0,0x0004003d,0x00000025,0x000000f4,0x00000049,0x0004003d,0x0000006d, + 0x000000f5,0x000000ee,0x0006003c,0x000000f6,0x000000f7,0x000000f3,0x000000f4,0x000000c9, + 0x000700ef,0x0000006d,0x000000f9,0x000000f7,0x000000f8,0x000000c9,0x000000f5,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x0000004f,0x00000000,0x00000040,0x00030037,0x00000033, + 0x0000004d,0x00030037,0x00000007,0x0000004e,0x000200f8,0x00000050,0x0004003d,0x000000fa, + 0x000000fd,0x000000fc,0x0004003d,0x00000025,0x000000fe,0x0000004d,0x0004003d,0x00000006, + 0x000000ff,0x0000004e,0x00070050,0x00000029,0x00000100,0x000000ff,0x00000095,0x00000095, + 0x00000095,0x00040063,0x000000fd,0x000000fe,0x00000100,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x00000054,0x00000000,0x00000051,0x00030037,0x00000033,0x00000052,0x00030037, + 0x00000013,0x00000053,0x000200f8,0x00000055,0x0004003d,0x00000101,0x00000104,0x00000103, + 0x0004003d,0x00000025,0x00000105,0x00000052,0x0004003d,0x00000012,0x00000106,0x00000053, + 0x00050051,0x00000006,0x00000107,0x00000106,0x00000000,0x00050051,0x00000006,0x00000108, + 0x00000106,0x00000001,0x00070050,0x00000029,0x00000109,0x00000107,0x00000108,0x00000095, + 0x00000095,0x00040063,0x00000104,0x00000105,0x00000109,0x000100fd,0x00010038,0x00050036, + 0x00000006,0x00000057,0x00000000,0x0000000e,0x00030037,0x00000007,0x00000056,0x000200f8, + 0x00000058,0x0004003b,0x00000007,0x0000010f,0x00000007,0x0004003b,0x00000007,0x00000111, + 0x00000007,0x0004003b,0x00000007,0x00000112,0x00000007,0x0004003b,0x00000007,0x00000113, + 0x00000007,0x0004003d,0x00000006,0x0000010c,0x00000056,0x00050088,0x00000006,0x0000010e, + 0x0000010c,0x0000010d,0x0003003e,0x0000010f,0x0000010e,0x00050039,0x00000006,0x00000110, + 0x00000010,0x0000010f,0x0003003e,0x00000111,0x0000010a,0x0003003e,0x00000112,0x0000010b, + 0x0003003e,0x00000113,0x00000110,0x00070039,0x00000006,0x00000114,0x0000000c,0x00000111, + 0x00000112,0x00000113,0x000200fe,0x00000114,0x00010038,0x00050036,0x00000006,0x0000005b, + 0x00000000,0x00000059,0x00030037,0x00000013,0x0000005a,0x000200f8,0x0000005c,0x0004003d, + 0x00000012,0x00000117,0x0000005a,0x00050085,0x00000012,0x0000011b,0x00000117,0x0000011a, + 0x0006000c,0x00000006,0x0000011c,0x00000001,0x00000042,0x0000011b,0x000200fe,0x0000011c, + 0x00010038,0x00050036,0x00000006,0x0000005f,0x00000000,0x0000005d,0x00030037,0x0000001e, + 0x0000005e,0x000200f8,0x00000060,0x0004003d,0x0000001d,0x0000011f,0x0000005e,0x00050094, + 0x00000006,0x00000124,0x0000011f,0x00000123,0x000200fe,0x00000124,0x00010038,0x00050036, + 0x00000061,0x00000065,0x00000000,0x00000062,0x00030037,0x00000033,0x00000063,0x00030037, + 0x00000033,0x00000064,0x000200f8,0x00000066,0x0004003d,0x00000025,0x00000127,0x00000063, + 0x0004007c,0x00000128,0x00000129,0x00000127,0x0004003d,0x00000025,0x0000012a,0x00000064, + 0x0004007c,0x00000128,0x0000012b,0x0000012a,0x000500b0,0x0000012c,0x0000012d,0x00000129, + 0x0000012b,0x0004009b,0x00000061,0x0000012e,0x0000012d,0x000200fe,0x0000012e,0x00010038, + 0x00050036,0x00000006,0x00000068,0x00000000,0x0000000e,0x00030037,0x00000007,0x00000067, + 0x000200f8,0x00000069,0x0004003b,0x00000131,0x00000132,0x00000007,0x00040039,0x00000029, + 0x00000133,0x0000002b,0x0003003e,0x00000132,0x00000133,0x00050041,0x00000007,0x00000134, + 0x00000132,0x000000f8,0x0004003d,0x00000006,0x00000135,0x00000134,0x0004003d,0x00000006, + 0x00000136,0x00000067,0x00050041,0x00000007,0x00000137,0x00000132,0x000000c9,0x0004003d, + 0x00000006,0x00000138,0x00000137,0x00050083,0x00000006,0x00000139,0x00000136,0x00000138, + 0x00050088,0x00000006,0x0000013a,0x00000135,0x00000139,0x000200fe,0x0000013a,0x00010038, + 0x00050036,0x00000006,0x0000006b,0x00000000,0x0000000e,0x00030037,0x00000007,0x0000006a, + 0x000200f8,0x0000006c,0x0004003b,0x00000007,0x0000013d,0x00000007,0x0004003d,0x00000006, + 0x0000013e,0x0000006a,0x0003003e,0x0000013d,0x0000013e,0x00050039,0x00000006,0x0000013f, + 0x00000068,0x0000013d,0x00040039,0x00000006,0x00000140,0x00000031,0x00050085,0x00000006, + 0x00000141,0x0000013f,0x00000140,0x000200fe,0x00000141,0x00010038,0x00050036,0x00000071, + 0x00000075,0x00000000,0x00000072,0x00030037,0x00000013,0x00000073,0x00030037,0x00000033, + 0x00000074,0x000200f8,0x00000076,0x0004003b,0x00000013,0x00000144,0x00000007,0x0004003b, + 0x0000014c,0x0000014d,0x00000007,0x0004003b,0x00000013,0x00000153,0x00000007,0x0004003b, + 0x00000013,0x00000154,0x00000007,0x0004003d,0x00000012,0x00000145,0x00000073,0x0004003d, + 0x00000025,0x00000146,0x00000074,0x0004006f,0x00000012,0x00000147,0x00000146,0x00050085, + 0x00000012,0x00000148,0x00000145,0x00000147,0x00050083,0x00000012,0x0000014b,0x00000148, + 0x0000014a,0x0003003e,0x00000144,0x0000014b,0x0004003d,0x00000012,0x0000014f,0x00000144, + 0x0006000c,0x00000012,0x00000150,0x00000001,0x00000008,0x0000014f,0x0004006e,0x00000025, + 0x00000151,0x00000150,0x00050041,0x00000033,0x00000152,0x0000014d,0x0000014e,0x0003003e, + 0x00000152,0x00000151,0x0004003d,0x00000012,0x00000155,0x00000144,0x0003003e,0x00000154, + 0x00000155,0x00050039,0x00000012,0x00000156,0x00000016,0x00000154,0x0003003e,0x00000153, + 0x00000156,0x00060041,0x00000033,0x00000158,0x0000014d,0x000000ab,0x000000ab,0x0003003e, + 0x00000158,0x00000157,0x00060041,0x00000033,0x0000015b,0x0000014d,0x000000ab,0x00000159, + 0x0003003e,0x0000015b,0x0000015a,0x00060041,0x00000033,0x0000015d,0x0000014d,0x000000ab, + 0x0000014e,0x0003003e,0x0000015d,0x0000015c,0x00060041,0x00000033,0x00000160,0x0000014d, + 0x000000ab,0x0000015e,0x0003003e,0x00000160,0x0000015f,0x00050041,0x00000007,0x00000161, + 0x00000153,0x000000c9,0x0004003d,0x00000006,0x00000162,0x00000161,0x00050083,0x00000006, + 0x00000163,0x00000096,0x00000162,0x00050041,0x00000007,0x00000164,0x00000153,0x000000f8, + 0x0004003d,0x00000006,0x00000165,0x00000164,0x00050083,0x00000006,0x00000166,0x00000096, + 0x00000165,0x00050085,0x00000006,0x00000167,0x00000163,0x00000166,0x00060041,0x00000007, + 0x00000168,0x0000014d,0x00000159,0x000000ab,0x0003003e,0x00000168,0x00000167,0x00050041, + 0x00000007,0x00000169,0x00000153,0x000000c9,0x0004003d,0x00000006,0x0000016a,0x00000169, + 0x00050041,0x00000007,0x0000016b,0x00000153,0x000000f8,0x0004003d,0x00000006,0x0000016c, + 0x0000016b,0x00050083,0x00000006,0x0000016d,0x00000096,0x0000016c,0x00050085,0x00000006, + 0x0000016e,0x0000016a,0x0000016d,0x00060041,0x00000007,0x0000016f,0x0000014d,0x00000159, + 0x00000159,0x0003003e,0x0000016f,0x0000016e,0x00050041,0x00000007,0x00000170,0x00000153, + 0x000000c9,0x0004003d,0x00000006,0x00000171,0x00000170,0x00050083,0x00000006,0x00000172, + 0x00000096,0x00000171,0x00050041,0x00000007,0x00000173,0x00000153,0x000000f8,0x0004003d, + 0x00000006,0x00000174,0x00000173,0x00050085,0x00000006,0x00000175,0x00000172,0x00000174, + 0x00060041,0x00000007,0x00000176,0x0000014d,0x00000159,0x0000014e,0x0003003e,0x00000176, + 0x00000175,0x00050041,0x00000007,0x00000177,0x00000153,0x000000c9,0x0004003d,0x00000006, + 0x00000178,0x00000177,0x00050041,0x00000007,0x00000179,0x00000153,0x000000f8,0x0004003d, + 0x00000006,0x0000017a,0x00000179,0x00050085,0x00000006,0x0000017b,0x00000178,0x0000017a, + 0x00060041,0x00000007,0x0000017c,0x0000014d,0x00000159,0x0000015e,0x0003003e,0x0000017c, + 0x0000017b,0x0004003d,0x00000071,0x0000017d,0x0000014d,0x000200fe,0x0000017d,0x00010038, + 0x00050036,0x00000002,0x0000007b,0x00000000,0x00000077,0x00030037,0x00000033,0x00000078, + 0x00030037,0x00000007,0x00000079,0x00030037,0x00000013,0x0000007a,0x000200f8,0x0000007c, + 0x0004003b,0x00000007,0x00000180,0x00000007,0x0004003b,0x00000007,0x00000181,0x00000007, + 0x0004003b,0x00000007,0x00000185,0x00000007,0x0004003b,0x00000007,0x00000186,0x00000007, + 0x0004003b,0x00000007,0x00000188,0x00000007,0x0004003b,0x00000007,0x00000189,0x00000007, + 0x0004003b,0x00000013,0x0000018c,0x00000007,0x0004003b,0x00000013,0x00000194,0x00000007, + 0x0004003b,0x00000013,0x0000019c,0x00000007,0x0004003b,0x0000014c,0x000001a0,0x00000007, + 0x0004003b,0x00000013,0x000001a2,0x00000007,0x0004003b,0x00000033,0x000001a4,0x00000007, + 0x0004003b,0x000001a6,0x000001a7,0x00000007,0x0004003b,0x00000033,0x000001b0,0x00000007, + 0x0004003b,0x00000007,0x000001b4,0x00000007,0x0004003b,0x00000033,0x000001bd,0x00000007, + 0x0004003b,0x00000033,0x000001c3,0x00000007,0x0004003b,0x00000033,0x000001c5,0x00000007, + 0x0004003b,0x00000033,0x000001c9,0x00000007,0x0004003b,0x00000007,0x000001cb,0x00000007, + 0x0004003d,0x00000006,0x00000182,0x00000079,0x0003003e,0x00000181,0x00000182,0x00050039, + 0x00000006,0x00000183,0x0000006b,0x00000181,0x0003003e,0x00000185,0x00000183,0x0003003e, + 0x00000186,0x00000184,0x00060039,0x00000006,0x00000187,0x0000001b,0x00000185,0x00000186, + 0x0003003e,0x00000180,0x00000187,0x0004003d,0x00000006,0x0000018a,0x00000180,0x0003003e, + 0x00000189,0x0000018a,0x00050039,0x00000006,0x0000018b,0x00000057,0x00000189,0x0003003e, + 0x00000188,0x0000018b,0x0004003d,0x00000012,0x0000018d,0x0000007a,0x0003003e,0x0000018c, + 0x0000018d,0x00050039,0x00000006,0x0000018e,0x0000005b,0x0000018c,0x0004003d,0x00000006, + 0x0000018f,0x00000188,0x000500ba,0x00000061,0x00000190,0x0000018e,0x0000018f,0x000600a9, + 0x00000006,0x00000191,0x00000190,0x00000096,0x00000095,0x0004003d,0x00000012,0x00000192, + 0x0000007a,0x0005008e,0x00000012,0x00000193,0x00000192,0x00000191,0x0003003e,0x0000007a, + 0x00000193,0x0004003d,0x00000025,0x00000195,0x00000078,0x0004006f,0x00000012,0x00000196, + 0x00000195,0x00050050,0x00000012,0x00000197,0x00000149,0x00000149,0x00050081,0x00000012, + 0x00000198,0x00000196,0x00000197,0x00040039,0x00000025,0x00000199,0x00000027,0x0004006f, + 0x00000012,0x0000019a,0x00000199,0x00050088,0x00000012,0x0000019b,0x00000198,0x0000019a, + 0x0003003e,0x00000194,0x0000019b,0x0004003d,0x00000012,0x0000019d,0x00000194,0x0004003d, + 0x00000012,0x0000019e,0x0000007a,0x00050081,0x00000012,0x0000019f,0x0000019d,0x0000019e, + 0x0003003e,0x0000019c,0x0000019f,0x00040039,0x00000025,0x000001a1,0x00000027,0x0004003d, + 0x00000012,0x000001a3,0x0000019c,0x0003003e,0x000001a2,0x000001a3,0x0003003e,0x000001a4, + 0x000001a1,0x00060039,0x00000071,0x000001a5,0x00000075,0x000001a2,0x000001a4,0x0003003e, + 0x000001a0,0x000001a5,0x0003003e,0x000001a7,0x000000ab,0x000200f9,0x000001a8,0x000200f8, + 0x000001a8,0x000400f6,0x000001aa,0x000001ab,0x00000000,0x000200f9,0x000001ac,0x000200f8, + 0x000001ac,0x0004003d,0x00000024,0x000001ad,0x000001a7,0x000500b1,0x00000061,0x000001af, + 0x000001ad,0x000001ae,0x000400fa,0x000001af,0x000001a9,0x000001aa,0x000200f8,0x000001a9, + 0x0004003d,0x00000024,0x000001b1,0x000001a7,0x00060041,0x00000033,0x000001b2,0x000001a0, + 0x000000ab,0x000001b1,0x0004003d,0x00000025,0x000001b3,0x000001b2,0x0003003e,0x000001b0, + 0x000001b3,0x0004003d,0x00000024,0x000001b5,0x000001a7,0x00060041,0x00000007,0x000001b6, + 0x000001a0,0x00000159,0x000001b5,0x0004003d,0x00000006,0x000001b7,0x000001b6,0x0003003e, + 0x000001b4,0x000001b7,0x0004003d,0x00000006,0x000001b8,0x000001b4,0x000500ba,0x00000061, + 0x000001ba,0x000001b8,0x000001b9,0x000300f7,0x000001bc,0x00000000,0x000400fa,0x000001ba, + 0x000001bb,0x000001bc,0x000200f8,0x000001bb,0x00050041,0x00000033,0x000001be,0x000001a0, + 0x0000014e,0x0004003d,0x00000025,0x000001bf,0x000001be,0x0004003d,0x00000025,0x000001c0, + 0x000001b0,0x00050080,0x00000025,0x000001c1,0x000001bf,0x000001c0,0x0003003e,0x000001bd, + 0x000001c1,0x00040039,0x00000025,0x000001c2,0x00000027,0x0004003d,0x00000025,0x000001c4, + 0x000001bd,0x0003003e,0x000001c3,0x000001c4,0x0003003e,0x000001c5,0x000001c2,0x00060039, + 0x00000061,0x000001c6,0x00000065,0x000001c3,0x000001c5,0x000300f7,0x000001c8,0x00000000, + 0x000400fa,0x000001c6,0x000001c7,0x000001c8,0x000200f8,0x000001c7,0x0004003d,0x00000025, + 0x000001ca,0x000001bd,0x0003003e,0x000001c9,0x000001ca,0x0004003d,0x00000006,0x000001cc, + 0x00000079,0x0003003e,0x000001cb,0x000001cc,0x00060039,0x00000002,0x000001cd,0x0000004b, + 0x000001c9,0x000001cb,0x000200f9,0x000001c8,0x000200f8,0x000001c8,0x000200f9,0x000001bc, + 0x000200f8,0x000001bc,0x000200f9,0x000001ab,0x000200f8,0x000001ab,0x0004003d,0x00000024, + 0x000001ce,0x000001a7,0x00050080,0x00000024,0x000001cf,0x000001ce,0x00000159,0x0003003e, + 0x000001a7,0x000001cf,0x000200f9,0x000001a8,0x000200f8,0x000001aa,0x000100fd,0x00010038, + 0x00050036,0x0000007d,0x00000080,0x00000000,0x0000007e,0x00030037,0x00000033,0x0000007f, + 0x000200f8,0x00000081,0x0004003b,0x000001a6,0x000001d0,0x00000007,0x0004003b,0x00000033, + 0x000001d8,0x00000007,0x0004003b,0x000001e4,0x000001e5,0x00000007,0x0004003b,0x000001ea, + 0x000001eb,0x00000007,0x0004003b,0x00000033,0x000001ed,0x00000007,0x0004003b,0x000001f3, + 0x000001f4,0x00000007,0x0004003b,0x00000033,0x00000204,0x00000007,0x0004003b,0x000001e4, + 0x00000207,0x00000007,0x0004003b,0x00000033,0x0000020c,0x00000007,0x0004003b,0x00000033, + 0x0000020e,0x00000007,0x0004003b,0x00000007,0x00000212,0x00000007,0x0004003b,0x00000007, + 0x0000021c,0x00000007,0x0004003b,0x00000007,0x0000021f,0x00000007,0x0003003e,0x000001d0, + 0x000000ab,0x0003003e,0x000001d0,0x000000ab,0x000200f9,0x000001d1,0x000200f8,0x000001d1, + 0x000400f6,0x000001d3,0x000001d4,0x00000000,0x000200f9,0x000001d5,0x000200f8,0x000001d5, + 0x0004003d,0x00000024,0x000001d6,0x000001d0,0x000500b1,0x00000061,0x000001d7,0x000001d6, + 0x000000b7,0x000400fa,0x000001d7,0x000001d2,0x000001d3,0x000200f8,0x000001d2,0x0004003d, + 0x00000025,0x000001d9,0x0000007f,0x0004003d,0x00000024,0x000001e3,0x000001d0,0x0003003e, + 0x000001e5,0x000001e2,0x00050041,0x00000033,0x000001e6,0x000001e5,0x000001e3,0x0004003d, + 0x00000025,0x000001e7,0x000001e6,0x00050080,0x00000025,0x000001e8,0x000001d9,0x000001e7, + 0x0003003e,0x000001d8,0x000001e8,0x0004003d,0x00000024,0x000001ec,0x000001d0,0x0004003d, + 0x00000025,0x000001ee,0x000001d8,0x0003003e,0x000001ed,0x000001ee,0x00050039,0x00000006, + 0x000001ef,0x00000036,0x000001ed,0x00050041,0x00000007,0x000001f0,0x000001eb,0x000001ec, + 0x0003003e,0x000001f0,0x000001ef,0x000200f9,0x000001d4,0x000200f8,0x000001d4,0x0004003d, + 0x00000024,0x000001f1,0x000001d0,0x00050080,0x00000024,0x000001f2,0x000001f1,0x00000159, + 0x0003003e,0x000001d0,0x000001f2,0x000200f9,0x000001d1,0x000200f8,0x000001d3,0x0004003d, + 0x00000025,0x000001f5,0x0000007f,0x00050041,0x00000033,0x000001f6,0x000001f4,0x00000159, + 0x0003003e,0x000001f6,0x000001f5,0x00050041,0x00000007,0x000001f7,0x000001eb,0x000000ab, + 0x0004003d,0x00000006,0x000001f8,0x000001f7,0x00050041,0x00000007,0x000001f9,0x000001f4, + 0x000000ab,0x0003003e,0x000001f9,0x000001f8,0x00050041,0x00000007,0x000001fa,0x000001eb, + 0x000000ab,0x0004003d,0x00000006,0x000001fb,0x000001fa,0x00050041,0x00000007,0x000001fc, + 0x000001f4,0x0000014e,0x0003003e,0x000001fc,0x000001fb,0x0003003e,0x000001d0,0x00000159, + 0x000200f9,0x000001fd,0x000200f8,0x000001fd,0x000400f6,0x000001ff,0x00000200,0x00000000, + 0x000200f9,0x00000201,0x000200f8,0x00000201,0x0004003d,0x00000024,0x00000202,0x000001d0, + 0x000500b1,0x00000061,0x00000203,0x00000202,0x000000b7,0x000400fa,0x00000203,0x000001fe, + 0x000001ff,0x000200f8,0x000001fe,0x0004003d,0x00000025,0x00000205,0x0000007f,0x0004003d, + 0x00000024,0x00000206,0x000001d0,0x0003003e,0x00000207,0x000001e2,0x00050041,0x00000033, + 0x00000208,0x00000207,0x00000206,0x0004003d,0x00000025,0x00000209,0x00000208,0x00050080, + 0x00000025,0x0000020a,0x00000205,0x00000209,0x0003003e,0x00000204,0x0000020a,0x00040039, + 0x00000025,0x0000020b,0x00000027,0x0004003d,0x00000025,0x0000020d,0x00000204,0x0003003e, + 0x0000020c,0x0000020d,0x0003003e,0x0000020e,0x0000020b,0x00060039,0x00000061,0x0000020f, + 0x00000065,0x0000020c,0x0000020e,0x000300f7,0x00000211,0x00000000,0x000400fa,0x0000020f, + 0x00000210,0x00000211,0x000200f8,0x00000210,0x0004003d,0x00000024,0x00000213,0x000001d0, + 0x00050041,0x00000007,0x00000214,0x000001eb,0x00000213,0x0004003d,0x00000006,0x00000215, + 0x00000214,0x0003003e,0x00000212,0x00000215,0x0004003d,0x00000006,0x00000216,0x00000212, + 0x00050041,0x00000007,0x00000217,0x000001f4,0x000000ab,0x0004003d,0x00000006,0x00000218, + 0x00000217,0x000500ba,0x00000061,0x00000219,0x00000216,0x00000218,0x000300f7,0x0000021b, + 0x00000000,0x000400fa,0x00000219,0x0000021a,0x0000021b,0x000200f8,0x0000021a,0x00050041, + 0x00000007,0x0000021d,0x000001f4,0x0000014e,0x0004003d,0x00000006,0x0000021e,0x0000021d, + 0x0003003e,0x0000021c,0x0000021e,0x0004003d,0x00000006,0x00000220,0x00000212,0x0003003e, + 0x0000021f,0x00000220,0x00060039,0x00000006,0x00000221,0x0000001b,0x0000021c,0x0000021f, + 0x00050041,0x00000007,0x00000222,0x000001f4,0x0000014e,0x0003003e,0x00000222,0x00000221, + 0x0004003d,0x00000025,0x00000223,0x00000204,0x00050041,0x00000033,0x00000224,0x000001f4, + 0x00000159,0x0003003e,0x00000224,0x00000223,0x0004003d,0x00000006,0x00000225,0x00000212, + 0x00050041,0x00000007,0x00000226,0x000001f4,0x000000ab,0x0003003e,0x00000226,0x00000225, + 0x000200f9,0x0000021b,0x000200f8,0x0000021b,0x000200f9,0x00000211,0x000200f8,0x00000211, + 0x000200f9,0x00000200,0x000200f8,0x00000200,0x0004003d,0x00000024,0x00000227,0x000001d0, + 0x00050080,0x00000024,0x00000228,0x00000227,0x00000159,0x0003003e,0x000001d0,0x00000228, + 0x000200f9,0x000001fd,0x000200f8,0x000001ff,0x0004003d,0x0000007d,0x00000229,0x000001f4, + 0x000200fe,0x00000229,0x00010038,0x00050036,0x00000012,0x00000085,0x00000000,0x00000082, + 0x00030037,0x00000033,0x00000083,0x00030037,0x0000007d,0x00000084,0x000200f8,0x00000086, + 0x0004003b,0x00000033,0x0000022c,0x00000007,0x0004003b,0x00000033,0x0000022e,0x00000007, + 0x0004003b,0x00000013,0x00000230,0x00000007,0x0004003b,0x00000033,0x00000231,0x00000007, + 0x0004003d,0x00000025,0x0000022d,0x00000083,0x0003003e,0x0000022c,0x0000022d,0x00050051, + 0x00000025,0x0000022f,0x00000084,0x00000001,0x0003003e,0x0000022e,0x0000022f,0x0004003d, + 0x00000025,0x00000232,0x0000022e,0x0003003e,0x00000231,0x00000232,0x00050039,0x00000012, + 0x00000233,0x0000003e,0x00000231,0x0003003e,0x00000230,0x00000233,0x0004003d,0x00000012, + 0x00000234,0x00000230,0x000200fe,0x00000234,0x00010038,0x00050036,0x00000006,0x00000088, + 0x00000000,0x00000034,0x00030037,0x00000033,0x00000087,0x000200f8,0x00000089,0x0004003b, + 0x0000001e,0x00000237,0x00000007,0x0004003b,0x00000033,0x00000239,0x00000007,0x0004003b, + 0x0000001e,0x0000023c,0x00000007,0x0004003b,0x0000001e,0x0000023d,0x00000007,0x0004003b, + 0x00000007,0x0000023f,0x00000007,0x0004003b,0x0000001e,0x00000240,0x00000007,0x0004003d, + 0x00000025,0x0000023a,0x00000087,0x0003003e,0x00000239,0x0000023a,0x00050039,0x0000001d, + 0x0000023b,0x0000003a,0x00000239,0x0003003e,0x0000023c,0x00000238,0x0003003e,0x0000023d, + 0x0000023b,0x00060039,0x0000001d,0x0000023e,0x00000022,0x0000023c,0x0000023d,0x0003003e, + 0x00000237,0x0000023e,0x0004003d,0x0000001d,0x00000241,0x00000237,0x0003003e,0x00000240, + 0x00000241,0x00050039,0x00000006,0x00000242,0x0000005f,0x00000240,0x0003003e,0x0000023f, + 0x00000242,0x0004003d,0x00000006,0x00000243,0x0000023f,0x000200fe,0x00000243,0x00010038, + 0x00050036,0x00000002,0x0000008c,0x00000000,0x0000008a,0x00030037,0x00000033,0x0000008b, + 0x000200f8,0x0000008d,0x0004003b,0x000001f3,0x00000246,0x00000007,0x0004003b,0x00000033, + 0x00000247,0x00000007,0x0004003b,0x00000013,0x0000024a,0x00000007,0x0004003b,0x00000033, + 0x0000024c,0x00000007,0x0004003b,0x00000033,0x0000024f,0x00000007,0x0004003b,0x00000007, + 0x00000251,0x00000007,0x0004003b,0x00000013,0x00000254,0x00000007,0x0004003b,0x00000033, + 0x00000257,0x00000007,0x0004003b,0x00000013,0x00000259,0x00000007,0x0004003b,0x00000033, + 0x0000025c,0x00000007,0x0004003b,0x00000007,0x0000025e,0x00000007,0x0004003b,0x00000007, + 0x00000262,0x00000007,0x0004003b,0x00000007,0x00000263,0x00000007,0x0004003b,0x00000007, + 0x00000267,0x00000007,0x0004003b,0x00000007,0x00000268,0x00000007,0x0004003b,0x00000033, + 0x0000026a,0x00000007,0x0004003b,0x00000007,0x0000026c,0x00000007,0x0004003b,0x00000007, + 0x0000026f,0x00000007,0x0004003b,0x00000033,0x00000270,0x00000007,0x0004003b,0x00000033, + 0x00000273,0x00000007,0x0004003b,0x00000007,0x00000275,0x00000007,0x0004003d,0x00000025, + 0x00000248,0x0000008b,0x0003003e,0x00000247,0x00000248,0x00050039,0x0000007d,0x00000249, + 0x00000080,0x00000247,0x0003003e,0x00000246,0x00000249,0x0004003d,0x0000007d,0x0000024b, + 0x00000246,0x0004003d,0x00000025,0x0000024d,0x0000008b,0x0003003e,0x0000024c,0x0000024d, + 0x00060039,0x00000012,0x0000024e,0x00000085,0x0000024c,0x0000024b,0x0003003e,0x0000024a, + 0x0000024e,0x0004003d,0x00000025,0x00000250,0x0000008b,0x0003003e,0x0000024f,0x00000250, + 0x00050041,0x00000007,0x00000252,0x00000246,0x000000ab,0x0004003d,0x00000006,0x00000253, + 0x00000252,0x0003003e,0x00000251,0x00000253,0x0004003d,0x00000012,0x00000255,0x0000024a, + 0x0003003e,0x00000254,0x00000255,0x00070039,0x00000002,0x00000256,0x0000007b,0x0000024f, + 0x00000251,0x00000254,0x0004003d,0x00000025,0x00000258,0x0000008b,0x0003003e,0x00000257, + 0x00000258,0x0004003d,0x00000012,0x0000025a,0x0000024a,0x0003003e,0x00000259,0x0000025a, + 0x00060039,0x00000002,0x0000025b,0x00000054,0x00000257,0x00000259,0x0004003d,0x00000025, + 0x0000025d,0x0000008b,0x0003003e,0x0000025c,0x0000025d,0x00050041,0x00000007,0x0000025f, + 0x00000246,0x000000ab,0x0004003d,0x00000006,0x00000260,0x0000025f,0x0003003e,0x0000025e, + 0x00000260,0x00060039,0x00000002,0x00000261,0x0000004f,0x0000025c,0x0000025e,0x00050041, + 0x00000007,0x00000264,0x00000246,0x0000014e,0x0004003d,0x00000006,0x00000265,0x00000264, + 0x0003003e,0x00000263,0x00000265,0x00050039,0x00000006,0x00000266,0x0000006b,0x00000263, + 0x0003003e,0x00000267,0x00000266,0x0003003e,0x00000268,0x00000184,0x00060039,0x00000006, + 0x00000269,0x0000001b,0x00000267,0x00000268,0x0003003e,0x00000262,0x00000269,0x0004003d, + 0x00000025,0x0000026b,0x0000008b,0x0003003e,0x0000026a,0x0000026b,0x0004003d,0x00000006, + 0x0000026d,0x00000262,0x0003003e,0x0000026c,0x0000026d,0x00060039,0x00000002,0x0000026e, + 0x00000043,0x0000026a,0x0000026c,0x0004003d,0x00000025,0x00000271,0x0000008b,0x0003003e, + 0x00000270,0x00000271,0x00050039,0x00000006,0x00000272,0x00000088,0x00000270,0x0003003e, + 0x0000026f,0x00000272,0x0004003d,0x00000025,0x00000274,0x0000008b,0x0003003e,0x00000273, + 0x00000274,0x0004003d,0x00000006,0x00000276,0x0000026f,0x0003003e,0x00000275,0x00000276, + 0x00060039,0x00000002,0x00000277,0x00000047,0x00000273,0x00000275,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h b/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h new file mode 100644 index 000000000..dbf1c35f9 --- /dev/null +++ b/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h @@ -0,0 +1,1083 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_PREPARE_REACTIVITY_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x00000523,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x00000513,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001, + 0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265, + 0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47, + 0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63, + 0x00736570,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70,0x5f656c79,0x656e696c, + 0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63, + 0x69645f65,0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00070005, + 0x0000000c,0x4c786666,0x28707265,0x663b3166,0x31663b31,0x0000003b,0x00030005,0x00000009, + 0x00000078,0x00030005,0x0000000a,0x00000079,0x00030005,0x0000000b,0x00000074,0x00060005, + 0x00000010,0x53786666,0x72757461,0x28657461,0x003b3166,0x00030005,0x0000000f,0x00000078, + 0x00060005,0x00000016,0x46786666,0x74636172,0x32667628,0x0000003b,0x00030005,0x00000015, + 0x00000078,0x00060005,0x0000001b,0x4d786666,0x66286e69,0x31663b31,0x0000003b,0x00030005, + 0x00000019,0x00000078,0x00030005,0x0000001a,0x00000079,0x00060005,0x00000020,0x4d786666, + 0x76286e69,0x763b3266,0x003b3266,0x00030005,0x0000001e,0x00000078,0x00030005,0x0000001f, + 0x00000079,0x00060005,0x00000027,0x4d786666,0x69286e69,0x31693b31,0x0000003b,0x00030005, + 0x00000025,0x00000078,0x00030005,0x00000026,0x00000079,0x00060005,0x0000002b,0x4d786666, + 0x66287861,0x31663b31,0x0000003b,0x00030005,0x00000029,0x00000078,0x00030005,0x0000002a, + 0x00000079,0x00060005,0x0000002f,0x4d786666,0x76287861,0x763b3266,0x003b3266,0x00030005, + 0x0000002d,0x00000078,0x00030005,0x0000002e,0x00000079,0x00060005,0x00000033,0x4d786666, + 0x69287861,0x31693b31,0x0000003b,0x00030005,0x00000031,0x00000078,0x00030005,0x00000032, + 0x00000079,0x00050005,0x00000037,0x646e6552,0x69537265,0x0028657a,0x00090005,0x00000039, + 0x76657250,0x73756f69,0x6d617246,0x6e655265,0x53726564,0x28657a69,0x00000000,0x00060005, + 0x0000003b,0x5278614d,0x65646e65,0x7a695372,0x00002865,0x00060005,0x0000003d,0x63737055, + 0x53656c61,0x28657a69,0x00000000,0x00040005,0x00000040,0x7474694a,0x00287265,0x000b0005, + 0x00000044,0x69766544,0x6f546563,0x77656956,0x63617053,0x61725465,0x6f66736e,0x61466d72, + 0x726f7463,0x00002873,0x00090005,0x00000047,0x77656956,0x63617053,0x4d6f5465,0x72657465, + 0x63614673,0x28726f74,0x00000000,0x00090005,0x00000049,0x75636341,0x616c756d,0x6e6f6974, + 0x65646441,0x72655064,0x6d617246,0x00002865,0x000a0005,0x0000004b,0x446e694d,0x636f7369, + 0x73756c63,0x416e6f69,0x6d756363,0x74616c75,0x286e6f69,0x00000000,0x00080005,0x00000050, + 0x64616f4c,0x63616552,0x65766974,0x6b73614d,0x32697628,0x0000003b,0x00040005,0x0000004f, + 0x50785069,0x0000736f,0x00100005,0x00000052,0x54746547,0x736e6172,0x65726170,0x4179636e, + 0x6f43646e,0x736f706d,0x6f697469,0x73614d6e,0x7365526b,0x6372756f,0x6d694465,0x69736e65, + 0x28736e6f,0x00000000,0x000d0005,0x00000056,0x706d6153,0x7254656c,0x70736e61,0x6e657261, + 0x6e417963,0x6d6f4364,0x69736f70,0x6e6f6974,0x6b73614d,0x32667628,0x0000003b,0x00030005, + 0x00000055,0x00565566,0x00080005,0x00000059,0x706d6153,0x6341656c,0x756d7563,0x6974616c, + 0x76286e6f,0x003b3266,0x00030005,0x00000058,0x00565566,0x00090005,0x0000005e,0x726f7453, + 0x63634165,0x6c756d75,0x6f697461,0x6976286e,0x31663b32,0x0000003b,0x00040005,0x0000005c, + 0x50785069,0x0000736f,0x00060005,0x0000005d,0x63634166,0x6c756d75,0x6f697461,0x0000006e, + 0x00090005,0x00000061,0x706d6153,0x6853656c,0x6e696461,0x61684367,0x2865676e,0x3b326676, + 0x00000000,0x00030005,0x00000060,0x00565566,0x00080005,0x00000064,0x64616f4c,0x72727543, + 0x4c746e65,0x28616d75,0x3b326976,0x00000000,0x00040005,0x00000063,0x50785069,0x0000736f, + 0x00080005,0x00000068,0x726f7453,0x77654e65,0x6b636f4c,0x69762873,0x31663b32,0x0000003b, + 0x00040005,0x00000066,0x50785069,0x0000736f,0x00040005,0x00000067,0x4c77656e,0x006b636f, + 0x000a0005,0x0000006b,0x64616f4c,0x6f636552,0x7274736e,0x65746375,0x65725064,0x70654476, + 0x76286874,0x003b3269,0x00040005,0x0000006a,0x50785069,0x0000736f,0x000a0005,0x0000006f, + 0x64616f4c,0x616c6944,0x4d646574,0x6f69746f,0x6365566e,0x28726f74,0x3b326976,0x00000000, + 0x00050005,0x0000006e,0x49785069,0x7475706e,0x00000000,0x00080005,0x00000072,0x64616f4c, + 0x616c6944,0x44646574,0x68747065,0x32697628,0x0000003b,0x00050005,0x00000071,0x49785069, + 0x7475706e,0x00000000,0x00050005,0x00000074,0x6f707845,0x65727573,0x00000028,0x000b0005, + 0x0000007a,0x726f7453,0x6c694465,0x64657461,0x63616552,0x65766974,0x6b73614d,0x69762873, + 0x66763b32,0x00003b34,0x00040005,0x00000078,0x50785069,0x0000736f,0x00080005,0x00000079, + 0x6c694466,0x64657461,0x63616552,0x65766974,0x6b73614d,0x00000073,0x000b0005,0x0000007d, + 0x6f636552,0x7274736e,0x65746375,0x70654464,0x764d6874,0x68547850,0x68736572,0x28646c6f, + 0x003b3166,0x00080005,0x0000007c,0x61654e66,0x74736572,0x74706544,0x4d6e4968,0x72657465, + 0x00000073,0x00090005,0x0000007f,0x64616853,0x43676e69,0x676e6168,0x6e655265,0x53726564, + 0x28657a69,0x00000000,0x00090005,0x00000081,0x64616853,0x43676e69,0x676e6168,0x78614d65, + 0x646e6552,0x69537265,0x0028657a,0x00070005,0x00000084,0x34746547,0x6c65564b,0x7469636f, + 0x66762879,0x00003b32,0x00060005,0x00000083,0x746f4d66,0x566e6f69,0x6f746365,0x00000072, + 0x00080005,0x00000089,0x446e694d,0x64697669,0x79426465,0x2878614d,0x663b3166,0x00003b31, + 0x00030005,0x00000087,0x00003076,0x00030005,0x00000088,0x00003176,0x00060005,0x0000008e, + 0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005,0x0000008d,0x00765566,0x00080005, + 0x00000094,0x6d616c43,0x616f4c70,0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005, + 0x00000091,0x53785069,0x6c706d61,0x00000065,0x00050005,0x00000092,0x4f785069,0x65736666, + 0x00000074,0x00060005,0x00000093,0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005, + 0x0000009a,0x6d616c43,0x28765570,0x3b326676,0x3b326976,0x3b326976,0x00000000,0x00030005, + 0x00000097,0x00765566,0x00060005,0x00000098,0x78655469,0x65727574,0x657a6953,0x00000000, + 0x00060005,0x00000099,0x73655269,0x6372756f,0x7a695365,0x00000065,0x00070005,0x0000009f, + 0x6e4f7349,0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005,0x0000009d,0x00736f70, + 0x00040005,0x0000009e,0x657a6973,0x00000000,0x00090005,0x000000a3,0x706d6f43,0x48657475, + 0x736f5072,0x6d6f7246,0x6f50724c,0x69762873,0x00003b32,0x00050005,0x000000a2,0x4c785069, + 0x736f5072,0x00000000,0x00080005,0x000000a6,0x56746547,0x53776569,0x65636170,0x74706544, + 0x31662868,0x0000003b,0x00060005,0x000000a5,0x76654466,0x44656369,0x68747065,0x00000000, + 0x000a0005,0x000000a9,0x56746547,0x53776569,0x65636170,0x74706544,0x4d6e4968,0x72657465, + 0x31662873,0x0000003b,0x00060005,0x000000a8,0x76654466,0x44656369,0x68747065,0x00000000, + 0x00080005,0x000000af,0x696c6942,0x7261656e,0x706d6153,0x676e696c,0x61746144,0x00000000, + 0x00060006,0x000000af,0x00000000,0x66664f69,0x73746573,0x00000000,0x00060006,0x000000af, + 0x00000001,0x69655766,0x73746867,0x00000000,0x00060006,0x000000af,0x00000002,0x73614269, + 0x736f5065,0x00000000,0x000b0005,0x000000b3,0x42746547,0x6e696c69,0x53726165,0x6c706d61, + 0x44676e69,0x28617461,0x3b326676,0x3b326976,0x00000000,0x00030005,0x000000b1,0x00765566, + 0x00040005,0x000000b2,0x7a695369,0x00000065,0x000b0005,0x000000b9,0x706d6f43,0x44657475, + 0x636f7369,0x73756c63,0x736e6f69,0x32667628,0x3266763b,0x3b31663b,0x00000000,0x00030005, + 0x000000b6,0x00765566,0x00060005,0x000000b7,0x746f4d66,0x566e6f69,0x6f746365,0x00000072, + 0x00080005,0x000000b8,0x72754366,0x746e6572,0x74706544,0x65695668,0x61705377,0x00006563, + 0x000b0005,0x000000be,0x706d6f43,0x4d657475,0x6f69746f,0x7669446e,0x65677265,0x2865636e, + 0x3b326676,0x3b326676,0x003b3166,0x00030005,0x000000bb,0x00765566,0x00060005,0x000000bc, + 0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00070005,0x000000bd,0x72754366,0x746e6572, + 0x74706544,0x6d615368,0x00656c70,0x000a0005,0x000000c3,0x616c6944,0x65526574,0x69746361, + 0x614d6576,0x28736b73,0x3b326976,0x3b326676,0x00000000,0x00040005,0x000000c1,0x50785069, + 0x0000736f,0x00030005,0x000000c2,0x00765566,0x000e0005,0x000000c7,0x616c6944,0x72546574, + 0x70736e61,0x6e657261,0x6e417963,0x6d6f4364,0x69736f70,0x6e6f6974,0x6b73614d,0x69762873, + 0x66763b32,0x00003b32,0x00040005,0x000000c5,0x50785069,0x0000736f,0x00030005,0x000000c6, + 0x00765566,0x000b0005,0x000000ca,0x706d6f43,0x54657475,0x466e6968,0x75746165,0x6f436572, + 0x6469666e,0x65636e65,0x32697628,0x0000003b,0x00040005,0x000000c9,0x50785069,0x0000736f, + 0x000c0005,0x000000d2,0x61647055,0x63416574,0x756d7563,0x6974616c,0x76286e6f,0x763b3269, + 0x763b3266,0x663b3266,0x31663b31,0x0000003b,0x00040005,0x000000cd,0x50785069,0x0000736f, + 0x00030005,0x000000ce,0x00765566,0x00060005,0x000000cf,0x746f4d66,0x566e6f69,0x6f746365, + 0x00000072,0x00060005,0x000000d0,0x73694466,0x6c63636f,0x6f697375,0x0000006e,0x00060005, + 0x000000d1,0x61685366,0x676e6964,0x6e616843,0x00006567,0x00090005,0x000000d5,0x706d6f43, + 0x53657475,0x69646168,0x6843676e,0x65676e61,0x32667628,0x0000003b,0x00030005,0x000000d4, + 0x00765566,0x00080005,0x000000d9,0x70657250,0x52657261,0x74636165,0x74697669,0x69762879, + 0x00003b32,0x00040005,0x000000d8,0x50785069,0x0000736f,0x00070005,0x00000109,0x53466263, + 0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x00000109,0x00000000,0x6e655269, + 0x53726564,0x00657a69,0x000a0006,0x00000109,0x00000001,0x65725069,0x756f6976,0x61724673, + 0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x00000109,0x00000002,0x73705569, + 0x656c6163,0x657a6953,0x00000000,0x000a0006,0x00000109,0x00000003,0x65725069,0x756f6976, + 0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x00000109,0x00000004, + 0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x00000109,0x00000005,0x78614d69, + 0x63737055,0x53656c61,0x00657a69,0x00080006,0x00000109,0x00000006,0x76654466,0x54656369, + 0x6569566f,0x70654477,0x00006874,0x00050006,0x00000109,0x00000007,0x74694a66,0x00726574, + 0x00090006,0x00000109,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474, + 0x00000000,0x00080006,0x00000109,0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372, + 0x0000656c,0x00080006,0x00000109,0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463, + 0x00000000,0x000b0006,0x00000109,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72, + 0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x00000109,0x0000000c,0x6e615466, + 0x666c6148,0x00564f46,0x00090006,0x00000109,0x0000000d,0x74694a66,0x53726574,0x65757165, + 0x4c65636e,0x74676e65,0x00000068,0x00060006,0x00000109,0x0000000e,0x6c654466,0x69546174, + 0x0000656d,0x00080006,0x00000109,0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f, + 0x00000065,0x000a0006,0x00000109,0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d, + 0x61467372,0x726f7463,0x00000000,0x00060006,0x00000109,0x00000011,0x61724666,0x6e49656d, + 0x00786564,0x00070006,0x00000109,0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74, + 0x00080006,0x00000109,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c, + 0x00080006,0x00000109,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61, + 0x000a0006,0x00000109,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465, + 0x61724672,0x0000656d,0x000b0006,0x00000109,0x00000016,0x6e694d66,0x6f736944,0x756c6363, + 0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x0000010b,0x53466263, + 0x70553352,0x6c616373,0x00007265,0x00060005,0x0000013f,0x65725f72,0x69746361,0x6d5f6576, + 0x006b7361,0x000b0005,0x0000014b,0x72745f72,0x70736e61,0x6e657261,0x615f7963,0x635f646e, + 0x6f706d6f,0x69746973,0x6d5f6e6f,0x006b7361,0x00060005,0x00000153,0x694c5f73,0x7261656e, + 0x6d616c43,0x00000070,0x00060005,0x0000015c,0x63615f72,0x756d7563,0x6974616c,0x00006e6f, + 0x00060005,0x00000167,0x615f7772,0x6d756363,0x74616c75,0x006e6f69,0x00070005,0x0000016c, + 0x68735f72,0x6e696461,0x68635f67,0x65676e61,0x00000000,0x00060005,0x00000179,0x75635f72, + 0x6e657272,0x756c5f74,0x0000616d,0x00060005,0x00000180,0x6e5f7772,0x6c5f7765,0x736b636f, + 0x00000000,0x000c0005,0x00000187,0x65725f72,0x736e6f63,0x63757274,0x5f646574,0x76657270, + 0x73756f69,0x61656e5f,0x74736572,0x7065645f,0x00006874,0x00090005,0x00000190,0x69645f72, + 0x6574616c,0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00060005,0x00000197, + 0x69645f72,0x6574616c,0x65645f64,0x00687470,0x00050005,0x0000019e,0x6f707865,0x65727573, + 0x00000000,0x00070005,0x0000019f,0x6e695f72,0x5f747570,0x6f707865,0x65727573,0x00000000, + 0x00090005,0x000001ad,0x645f7772,0x74616c69,0x725f6465,0x74636165,0x5f657669,0x6b73616d, + 0x00000073,0x00040005,0x000001b6,0x61726170,0x0000006d,0x00040005,0x000001b8,0x61726170, + 0x0000006d,0x00040005,0x000001b9,0x61726170,0x0000006d,0x00040005,0x000001ba,0x61726170, + 0x0000006d,0x00030005,0x000001d3,0x0000006d,0x00040005,0x000001d4,0x61726170,0x0000006d, + 0x00040005,0x000001d5,0x61726170,0x0000006d,0x00040005,0x000001dc,0x61726170,0x0000006d, + 0x00040005,0x000001dd,0x61726170,0x0000006d,0x00040005,0x000001fd,0x75736572,0x0000746c, + 0x00040005,0x00000204,0x61726170,0x0000006d,0x00040005,0x00000207,0x61726170,0x0000006d, + 0x00040005,0x00000209,0x61726170,0x0000006d,0x00040005,0x0000020a,0x61726170,0x0000006d, + 0x00040005,0x00000210,0x61726170,0x0000006d,0x00040005,0x00000213,0x61726170,0x0000006d, + 0x00040005,0x00000215,0x61726170,0x0000006d,0x00040005,0x00000216,0x61726170,0x0000006d, + 0x00060005,0x0000021c,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69,0x00070005,0x00000221, + 0x616c4366,0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005,0x00000226,0x61726170, + 0x0000006d,0x00040005,0x00000228,0x61726170,0x0000006d,0x00040005,0x0000022a,0x61726170, + 0x0000006d,0x00040005,0x0000022b,0x61726170,0x0000006d,0x00050005,0x0000022d,0x616c4366, + 0x6465706d,0x00007655,0x00060005,0x0000023f,0x63725366,0x7474694a,0x64657265,0x00736f50, + 0x00050005,0x00000246,0x50724c66,0x6e49736f,0x00007248,0x00050005,0x0000024e,0x48785069, + 0x736f5072,0x00000000,0x00070005,0x00000255,0x76654466,0x54656369,0x6569566f,0x70654477, + 0x00006874,0x00040005,0x00000260,0x61726170,0x0000006d,0x00050005,0x00000267,0x53785066, + 0x6c706d61,0x00000065,0x00040005,0x0000026e,0x61746164,0x00000000,0x00040005,0x00000273, + 0x46785066,0x00636172,0x00040005,0x00000274,0x61726170,0x0000006d,0x00080005,0x0000029e, + 0x61654e66,0x74736572,0x74706544,0x4d6e4968,0x72657465,0x00000073,0x00040005,0x000002a3, + 0x61726170,0x0000006d,0x00040005,0x000002a4,0x61726170,0x0000006d,0x000a0005,0x000002a6, + 0x63655266,0x74736e6f,0x74637572,0x65446465,0x764d7470,0x65726854,0x6c6f6873,0x00000064, + 0x00040005,0x000002a7,0x61726170,0x0000006d,0x00040005,0x000002aa,0x61726170,0x0000006d, + 0x00060005,0x000002b2,0x70655266,0x656a6f72,0x64657463,0x00007655,0x00060005,0x000002b6, + 0x696c6962,0x7261656e,0x6f666e49,0x00000000,0x00040005,0x000002b8,0x61726170,0x0000006d, + 0x00040005,0x000002ba,0x61726170,0x0000006d,0x00060005,0x000002bc,0x73694466,0x6c63636f, + 0x6f697375,0x0000006e,0x00050005,0x000002bd,0x69655766,0x53746867,0x00006d75,0x00080005, + 0x000002bf,0x746f5062,0x69746e65,0x69446c61,0x63636f73,0x6973756c,0x00006e6f,0x00060005, + 0x000002c1,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x000002cb,0x66664f69, + 0x00746573,0x00050005,0x000002cf,0x6d615369,0x50656c70,0x0000736f,0x00040005,0x000002d1, + 0x61726170,0x0000006d,0x00040005,0x000002d4,0x61726170,0x0000006d,0x00040005,0x000002d6, + 0x61726170,0x0000006d,0x00040005,0x000002d9,0x61726170,0x0000006d,0x00040005,0x000002db, + 0x61726170,0x0000006d,0x00040005,0x000002df,0x69655766,0x00746867,0x00090005,0x000002e8, + 0x65725066,0x61654e76,0x74736572,0x74706544,0x65695668,0x61705377,0x00006563,0x00040005, + 0x000002e9,0x61726170,0x0000006d,0x00040005,0x000002ec,0x61726170,0x0000006d,0x00070005, + 0x000002ee,0x70654466,0x69446874,0x72656666,0x65636e65,0x00000000,0x00070005,0x000002fa, + 0x6c614866,0x65695666,0x726f7077,0x64695774,0x00006874,0x00060005,0x000002ff,0x70654466, + 0x68546874,0x68736572,0x00646c6f,0x00040005,0x00000300,0x61726170,0x0000006d,0x00040005, + 0x00000302,0x61726170,0x0000006d,0x00090005,0x00000305,0x71655266,0x65726975,0x70654464, + 0x65536874,0x61726170,0x6e6f6974,0x00000000,0x00040005,0x0000030e,0x61726170,0x0000006d, + 0x00040005,0x00000324,0x61726170,0x0000006d,0x00070005,0x0000032b,0x52785069,0x6f727065, + 0x7463656a,0x6f506465,0x00000073,0x00070005,0x00000333,0x70655266,0x656a6f72,0x64657463, + 0x74706544,0x00000068,0x00040005,0x00000334,0x61726170,0x0000006d,0x00090005,0x00000337, + 0x70655266,0x656a6f72,0x64657463,0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005, + 0x00000338,0x61726170,0x0000006d,0x00080005,0x0000033b,0x70655266,0x656a6f72,0x64657463, + 0x6f6c6556,0x79746963,0x00000000,0x00040005,0x0000033c,0x61726170,0x0000006d,0x00050005, + 0x0000033f,0x564b3466,0x636f6c65,0x00797469,0x00040005,0x00000340,0x61726170,0x0000006d, + 0x00040005,0x00000343,0x78614d66,0x006e654c,0x00080005,0x00000349,0x63754e66,0x7375656c, + 0x74706544,0x4d6e4968,0x72657465,0x00000073,0x00040005,0x0000034a,0x61726170,0x0000006d, + 0x00080005,0x0000034d,0x72754366,0x746e6572,0x74706544,0x4d6e4968,0x72657465,0x00000073, + 0x00040005,0x0000034e,0x61726170,0x0000006d,0x00060005,0x00000351,0x73694466,0x636e6174, + 0x63614665,0x00726f74,0x00060005,0x00000355,0x6c655666,0x7469636f,0x63614679,0x00726f74, + 0x00040005,0x00000359,0x61726170,0x0000006d,0x000a0005,0x0000035b,0x746f4d66,0x566e6f69, + 0x6f746365,0x65694672,0x6f43646c,0x6469666e,0x65636e65,0x00000000,0x00040005,0x0000035f, + 0x61726170,0x0000006d,0x00080005,0x00000369,0x6c694466,0x64657461,0x63616552,0x65766974, + 0x6b73614d,0x00000073,0x00030005,0x0000036a,0x00000079,0x00030005,0x00000373,0x00000078, + 0x00050005,0x0000037b,0x706d6173,0x6f43656c,0x0064726f,0x00040005,0x00000380,0x61726170, + 0x0000006d,0x00040005,0x00000382,0x61726170,0x0000006d,0x00040005,0x00000383,0x61726170, + 0x0000006d,0x00040005,0x00000385,0x61726170,0x0000006d,0x00040005,0x00000388,0x61726170, + 0x0000006d,0x00040005,0x0000038a,0x61726170,0x0000006d,0x000b0005,0x00000393,0x54765566, + 0x736e6172,0x65726170,0x4179636e,0x6f43646e,0x736f706d,0x6f697469,0x73614d6e,0x0000006b, + 0x00040005,0x00000396,0x61726170,0x0000006d,0x00040005,0x00000398,0x61726170,0x0000006d, + 0x00040005,0x00000399,0x61726170,0x0000006d,0x00040005,0x0000039b,0x61726170,0x0000006d, + 0x00050005,0x000003a0,0x6d754c66,0x6e694d61,0x00000000,0x00050005,0x000003a2,0x6d754c66, + 0x78614d61,0x00000000,0x00060005,0x000003a3,0x6d615369,0x49656c70,0x7865646e,0x00000000, + 0x00060005,0x000003ac,0x53785069,0x6c706d61,0x736f5065,0x00000000,0x00040005,0x000003b7, + 0x61726170,0x0000006d,0x00040005,0x000003b9,0x61726170,0x0000006d,0x00050005,0x000003bb, + 0x65646e69,0x6c626178,0x00000065,0x00040005,0x000003be,0x61726170,0x0000006d,0x00050005, + 0x000003c2,0x6d615366,0x73656c70,0x00000000,0x00040005,0x000003c4,0x61726170,0x0000006d, + 0x00040005,0x000003cb,0x61726170,0x0000006d,0x00040005,0x000003cd,0x61726170,0x0000006d, + 0x00040005,0x000003d2,0x61726170,0x0000006d,0x00040005,0x000003d4,0x61726170,0x0000006d, + 0x00070005,0x000003da,0x73694466,0x696d6973,0x4c72616c,0x4d616d75,0x00006e69,0x00070005, + 0x000003db,0x73694466,0x696d6973,0x4c72616c,0x4d616d75,0x00007861,0x00060005,0x000003dd, + 0x74615075,0x6e726574,0x6b73614d,0x00000000,0x00050005,0x000003de,0x74694269,0x65646e49, + 0x00000078,0x00060005,0x000003df,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00050005, + 0x000003e7,0x66694466,0x65726566,0x0065636e,0x00040005,0x000003fe,0x61726170,0x0000006d, + 0x00040005,0x00000400,0x61726170,0x0000006d,0x00040005,0x00000405,0x61726170,0x0000006d, + 0x00040005,0x00000407,0x61726170,0x0000006d,0x00050005,0x0000040f,0x52734962,0x65676469, + 0x00000000,0x00030005,0x00000422,0x00000069,0x00050005,0x00000434,0x65646e69,0x6c626178, + 0x00000065,0x00050005,0x00000439,0x65646e69,0x6c626178,0x00000065,0x00060005,0x00000448, + 0x70655266,0x656a6f72,0x64657463,0x00007655,0x00060005,0x0000044c,0x63634166,0x6c756d75, + 0x6f697461,0x0000006e,0x00040005,0x0000044d,0x61726170,0x0000006d,0x00070005,0x00000452, + 0x70655266,0x656a6f72,0x64657463,0x485f7655,0x00000057,0x00040005,0x00000455,0x61726170, + 0x0000006d,0x00040005,0x00000457,0x61726170,0x0000006d,0x00040005,0x00000458,0x61726170, + 0x0000006d,0x00040005,0x0000045a,0x61726170,0x0000006d,0x00040005,0x0000045d,0x61726170, + 0x0000006d,0x00090005,0x0000045f,0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465, + 0x61724672,0x0000656d,0x00040005,0x00000461,0x61726170,0x0000006d,0x00040005,0x00000463, + 0x61726170,0x0000006d,0x00040005,0x00000464,0x61726170,0x0000006d,0x000a0005,0x00000467, + 0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000, + 0x00040005,0x00000469,0x61726170,0x0000006d,0x00040005,0x0000046b,0x61726170,0x0000006d, + 0x00040005,0x0000046e,0x61726170,0x0000006d,0x00040005,0x00000470,0x61726170,0x0000006d, + 0x00040005,0x00000471,0x61726170,0x0000006d,0x00090005,0x0000047b,0x63634166,0x6c756d75, + 0x64657461,0x6d617246,0x6f547365,0x726f7453,0x00000065,0x00040005,0x0000047f,0x61726170, + 0x0000006d,0x00040005,0x00000481,0x61726170,0x0000006d,0x00040005,0x00000483,0x61726170, + 0x0000006d,0x00070005,0x00000489,0x61685366,0x676e6964,0x6e616843,0x76556567,0x00000000, + 0x00040005,0x00000492,0x61726170,0x0000006d,0x00040005,0x00000493,0x61726170,0x0000006d, + 0x00040005,0x00000494,0x61726170,0x0000006d,0x00060005,0x00000496,0x61685366,0x676e6964, + 0x6e616843,0x00006567,0x00040005,0x00000497,0x61726170,0x0000006d,0x00040005,0x0000049a, + 0x61726170,0x0000006d,0x00030005,0x0000049f,0x00765566,0x00060005,0x000004a7,0x746f4d66, + 0x566e6f69,0x6f746365,0x00000072,0x00040005,0x000004a8,0x61726170,0x0000006d,0x00050005, + 0x000004ab,0x564b3466,0x636f6c65,0x00797469,0x00040005,0x000004ac,0x61726170,0x0000006d, + 0x00050005,0x000004af,0x6c694466,0x64657461,0x00007655,0x00060005,0x000004b3,0x6c694466, + 0x64657461,0x74706544,0x00000068,0x00040005,0x000004b4,0x61726170,0x0000006d,0x00060005, + 0x000004b7,0x70654466,0x6e496874,0x6574654d,0x00007372,0x00040005,0x000004b8,0x61726170, + 0x0000006d,0x00060005,0x000004bb,0x73694466,0x6c63636f,0x6f697375,0x0000006e,0x00040005, + 0x000004bc,0x61726170,0x0000006d,0x00040005,0x000004bf,0x61726170,0x0000006d,0x00040005, + 0x000004c1,0x61726170,0x0000006d,0x00040005,0x000004c3,0x61726170,0x0000006d,0x00060005, + 0x000004c5,0x61685366,0x676e6964,0x6e616843,0x00006567,0x00040005,0x000004c6,0x61726170, + 0x0000006d,0x00040005,0x000004c8,0x61726170,0x0000006d,0x00040005,0x000004cb,0x61726170, + 0x0000006d,0x00040005,0x000004ce,0x61726170,0x0000006d,0x00040005,0x000004cf,0x61726170, + 0x0000006d,0x00070005,0x000004d1,0x746f4d66,0x446e6f69,0x72657669,0x636e6567,0x00000065, + 0x00040005,0x000004d2,0x61726170,0x0000006d,0x00040005,0x000004d4,0x61726170,0x0000006d, + 0x00040005,0x000004d6,0x61726170,0x0000006d,0x000b0005,0x000004d9,0x6c694466,0x64657461, + 0x6e617254,0x72617073,0x79636e65,0x43646e41,0x6f706d6f,0x69746973,0x00006e6f,0x00040005, + 0x000004da,0x61726170,0x0000006d,0x00040005,0x000004dc,0x61726170,0x0000006d,0x00070005, + 0x000004df,0x6e694666,0x65526c61,0x69746361,0x656e6576,0x00007373,0x00040005,0x000004e0, + 0x61726170,0x0000006d,0x00040005,0x000004e2,0x61726170,0x0000006d,0x00060005,0x000004e5, + 0x63634166,0x6c756d75,0x6f697461,0x0000006e,0x00040005,0x000004e6,0x61726170,0x0000006d, + 0x00040005,0x000004e8,0x61726170,0x0000006d,0x00040005,0x000004ea,0x61726170,0x0000006d, + 0x00040005,0x000004ec,0x61726170,0x0000006d,0x00040005,0x000004ee,0x61726170,0x0000006d, + 0x00040005,0x000004f1,0x74754f66,0x00747570,0x00040005,0x000004fc,0x61726170,0x0000006d, + 0x00040005,0x000004fe,0x61726170,0x0000006d,0x00060005,0x00000501,0x636f4c66,0x7274536b, + 0x74676e65,0x00000068,0x00040005,0x00000502,0x61726170,0x0000006d,0x00040005,0x0000050b, + 0x61726170,0x0000006d,0x00040005,0x0000050d,0x61726170,0x0000006d,0x00040005,0x0000050e, + 0x61726170,0x0000006d,0x00080005,0x00000513,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x00000044,0x00040005,0x00000517,0x61726170,0x0000006d,0x00060005,0x0000051b, + 0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00030047,0x00000109,0x00000002,0x00050048, + 0x00000109,0x00000000,0x00000023,0x00000000,0x00050048,0x00000109,0x00000001,0x00000023, + 0x00000008,0x00050048,0x00000109,0x00000002,0x00000023,0x00000010,0x00050048,0x00000109, + 0x00000003,0x00000023,0x00000018,0x00050048,0x00000109,0x00000004,0x00000023,0x00000020, + 0x00050048,0x00000109,0x00000005,0x00000023,0x00000028,0x00050048,0x00000109,0x00000006, + 0x00000023,0x00000030,0x00050048,0x00000109,0x00000007,0x00000023,0x00000040,0x00050048, + 0x00000109,0x00000008,0x00000023,0x00000048,0x00050048,0x00000109,0x00000009,0x00000023, + 0x00000050,0x00050048,0x00000109,0x0000000a,0x00000023,0x00000058,0x00050048,0x00000109, + 0x0000000b,0x00000023,0x00000060,0x00050048,0x00000109,0x0000000c,0x00000023,0x00000068, + 0x00050048,0x00000109,0x0000000d,0x00000023,0x0000006c,0x00050048,0x00000109,0x0000000e, + 0x00000023,0x00000070,0x00050048,0x00000109,0x0000000f,0x00000023,0x00000074,0x00050048, + 0x00000109,0x00000010,0x00000023,0x00000078,0x00050048,0x00000109,0x00000011,0x00000023, + 0x0000007c,0x00050048,0x00000109,0x00000012,0x00000023,0x00000080,0x00050048,0x00000109, + 0x00000013,0x00000023,0x00000084,0x00050048,0x00000109,0x00000014,0x00000023,0x00000088, + 0x00050048,0x00000109,0x00000015,0x00000023,0x0000008c,0x00050048,0x00000109,0x00000016, + 0x00000023,0x00000090,0x00040047,0x0000010b,0x00000021,0x0000000c,0x00040047,0x0000010b, + 0x00000022,0x00000000,0x00040047,0x0000013f,0x00000021,0x00000003,0x00040047,0x0000013f, + 0x00000022,0x00000000,0x00040047,0x0000014b,0x00000021,0x00000004,0x00040047,0x0000014b, + 0x00000022,0x00000000,0x00040047,0x00000153,0x00000021,0x000003e9,0x00040047,0x00000153, + 0x00000022,0x00000000,0x00040047,0x0000015c,0x00000021,0x00000005,0x00040047,0x0000015c, + 0x00000022,0x00000000,0x00040047,0x00000167,0x00000021,0x0000000b,0x00040047,0x00000167, + 0x00000022,0x00000000,0x00040047,0x0000016c,0x00000021,0x00000006,0x00040047,0x0000016c, + 0x00000022,0x00000000,0x00040047,0x00000179,0x00000021,0x00000007,0x00040047,0x00000179, + 0x00000022,0x00000000,0x00040047,0x00000180,0x00000021,0x0000000a,0x00040047,0x00000180, + 0x00000022,0x00000000,0x00040047,0x00000187,0x00000021,0x00000000,0x00040047,0x00000187, + 0x00000022,0x00000000,0x00040047,0x00000190,0x00000021,0x00000001,0x00040047,0x00000190, + 0x00000022,0x00000000,0x00040047,0x00000197,0x00000021,0x00000002,0x00040047,0x00000197, + 0x00000022,0x00000000,0x00040047,0x0000019f,0x00000021,0x00000008,0x00040047,0x0000019f, + 0x00000022,0x00000000,0x00030047,0x000001ad,0x00000019,0x00040047,0x000001ad,0x00000021, + 0x00000009,0x00040047,0x000001ad,0x00000022,0x00000000,0x00040047,0x00000513,0x0000000b, + 0x0000001c,0x00040047,0x0000051b,0x00000021,0x000003e8,0x00040047,0x0000051b,0x00000022, + 0x00000000,0x00040047,0x00000522,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021, + 0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040020,0x00000007,0x00000007, + 0x00000006,0x00060021,0x00000008,0x00000006,0x00000007,0x00000007,0x00000007,0x00040021, + 0x0000000e,0x00000006,0x00000007,0x00040017,0x00000012,0x00000006,0x00000002,0x00040020, + 0x00000013,0x00000007,0x00000012,0x00040021,0x00000014,0x00000012,0x00000013,0x00050021, + 0x00000018,0x00000006,0x00000007,0x00000007,0x00050021,0x0000001d,0x00000012,0x00000013, + 0x00000013,0x00040015,0x00000022,0x00000020,0x00000001,0x00040020,0x00000023,0x00000007, + 0x00000022,0x00050021,0x00000024,0x00000022,0x00000023,0x00000023,0x00040017,0x00000035, + 0x00000022,0x00000002,0x00030021,0x00000036,0x00000035,0x00030021,0x0000003f,0x00000012, + 0x00040017,0x00000042,0x00000006,0x00000004,0x00030021,0x00000043,0x00000042,0x00030021, + 0x00000046,0x00000006,0x00040020,0x0000004d,0x00000007,0x00000035,0x00040021,0x0000004e, + 0x00000006,0x0000004d,0x00040021,0x00000054,0x00000006,0x00000013,0x00050021,0x0000005b, + 0x00000002,0x0000004d,0x00000007,0x00040021,0x0000006d,0x00000012,0x0000004d,0x00040020, + 0x00000076,0x00000007,0x00000042,0x00050021,0x00000077,0x00000002,0x0000004d,0x00000076, + 0x00050021,0x00000086,0x00000006,0x00000006,0x00000006,0x00020014,0x0000008b,0x00040021, + 0x0000008c,0x0000008b,0x00000013,0x00060021,0x00000090,0x00000035,0x0000004d,0x0000004d, + 0x0000004d,0x00060021,0x00000096,0x00000012,0x00000013,0x0000004d,0x0000004d,0x00050021, + 0x0000009c,0x0000008b,0x0000004d,0x0000004d,0x00040021,0x000000a1,0x00000035,0x0000004d, + 0x00040015,0x000000ab,0x00000020,0x00000000,0x0004002b,0x000000ab,0x000000ac,0x00000004, + 0x0004001c,0x000000ad,0x00000035,0x000000ac,0x0004001c,0x000000ae,0x00000006,0x000000ac, + 0x0005001e,0x000000af,0x000000ad,0x000000ae,0x00000035,0x00050021,0x000000b0,0x000000af, + 0x00000013,0x0000004d,0x00060021,0x000000b5,0x00000006,0x00000013,0x00000013,0x00000007, + 0x00050021,0x000000c0,0x00000006,0x0000004d,0x00000013,0x00080021,0x000000cc,0x00000006, + 0x0000004d,0x00000013,0x00000013,0x00000007,0x00000007,0x00040021,0x000000d7,0x00000002, + 0x0000004d,0x0004002b,0x00000006,0x000000e2,0x00000000,0x0004002b,0x00000006,0x000000e3, + 0x3f800000,0x0019001e,0x00000109,0x00000035,0x00000035,0x00000035,0x00000035,0x00000035, + 0x00000035,0x00000042,0x00000012,0x00000012,0x00000012,0x00000012,0x00000012,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00040020,0x0000010a,0x00000002,0x00000109,0x0004003b,0x0000010a, + 0x0000010b,0x00000002,0x0004002b,0x00000022,0x0000010c,0x00000000,0x00040020,0x0000010d, + 0x00000002,0x00000035,0x0004002b,0x00000022,0x00000112,0x00000001,0x0004002b,0x00000022, + 0x00000117,0x00000004,0x0004002b,0x00000022,0x0000011c,0x00000002,0x0004002b,0x00000022, + 0x00000121,0x00000007,0x00040020,0x00000122,0x00000002,0x00000012,0x0004002b,0x00000022, + 0x00000127,0x00000006,0x00040020,0x00000128,0x00000002,0x00000042,0x0004002b,0x00000022, + 0x0000012d,0x00000010,0x00040020,0x0000012e,0x00000002,0x00000006,0x0004002b,0x00000022, + 0x00000133,0x00000015,0x0004002b,0x00000022,0x00000138,0x00000016,0x00090019,0x0000013d, + 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020, + 0x0000013e,0x00000000,0x0000013d,0x0004003b,0x0000013e,0x0000013f,0x00000000,0x0004002b, + 0x000000ab,0x00000143,0x00000000,0x0004002b,0x00000022,0x00000145,0x00000013,0x0004003b, + 0x0000013e,0x0000014b,0x00000000,0x0002001a,0x00000151,0x00040020,0x00000152,0x00000000, + 0x00000151,0x0004003b,0x00000152,0x00000153,0x00000000,0x0003001b,0x00000155,0x0000013d, + 0x0004003b,0x0000013e,0x0000015c,0x00000000,0x00090019,0x00000165,0x00000006,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000002,0x0000000f,0x00040020,0x00000166,0x00000000, + 0x00000165,0x0004003b,0x00000166,0x00000167,0x00000000,0x0004003b,0x0000013e,0x0000016c, + 0x00000000,0x0004002b,0x00000022,0x00000173,0x00000014,0x0004003b,0x0000013e,0x00000179, + 0x00000000,0x0004003b,0x00000166,0x00000180,0x00000000,0x00090019,0x00000185,0x000000ab, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000186, + 0x00000000,0x00000185,0x0004003b,0x00000186,0x00000187,0x00000000,0x00040017,0x0000018a, + 0x000000ab,0x00000004,0x0004003b,0x0000013e,0x00000190,0x00000000,0x0004003b,0x0000013e, + 0x00000197,0x00000000,0x0004003b,0x0000013e,0x0000019f,0x00000000,0x0005002c,0x00000035, + 0x000001a1,0x0000010c,0x0000010c,0x00090019,0x000001ab,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000004,0x00040020,0x000001ac,0x00000000,0x000001ab, + 0x0004003b,0x000001ac,0x000001ad,0x00000000,0x0004002b,0x00000006,0x000001b1,0x3e800000, + 0x0004002b,0x00000006,0x000001b2,0x3f400000,0x0004002b,0x00000006,0x000001b4,0x42c80000, + 0x0004002b,0x00000006,0x000001c0,0x3f000000,0x0004002b,0x00000006,0x000001cc,0x45700000, + 0x0004002b,0x00000006,0x000001cd,0x45070000,0x0005002c,0x00000012,0x000001ce,0x000001cc, + 0x000001cd,0x0004002b,0x000000ab,0x000001f0,0x00000001,0x0005002c,0x00000012,0x00000222, + 0x000001c0,0x000001c0,0x00040017,0x00000236,0x000000ab,0x00000002,0x00040017,0x0000023a, + 0x0000008b,0x00000002,0x00040020,0x0000026d,0x00000007,0x000000af,0x0005002c,0x00000035, + 0x00000278,0x00000112,0x0000010c,0x0005002c,0x00000035,0x0000027a,0x0000010c,0x00000112, + 0x0004002b,0x00000022,0x0000027c,0x00000003,0x0005002c,0x00000035,0x0000027d,0x00000112, + 0x00000112,0x0004002b,0x00000006,0x000002a2,0x477fe000,0x00040020,0x000002be,0x00000007, + 0x0000008b,0x00030029,0x0000008b,0x000002c0,0x0004002b,0x00000006,0x000002e4,0x3a1fe868, + 0x0004002b,0x00000006,0x000002f4,0x00800000,0x0004002b,0x00000006,0x00000306,0x3765d90d, + 0x0004002b,0x00000006,0x00000357,0x41200000,0x0004002b,0x00000022,0x0000036b,0xffffffff, + 0x0004002b,0x00000006,0x000003a1,0x7f7fffff,0x0004002b,0x00000022,0x000003aa,0x00000009, + 0x0004002b,0x000000ab,0x000003ad,0x00000009,0x0004001c,0x000003ae,0x00000035,0x000003ad, + 0x0005002c,0x00000035,0x000003af,0x0000036b,0x0000036b,0x0005002c,0x00000035,0x000003b0, + 0x0000010c,0x0000036b,0x0005002c,0x00000035,0x000003b1,0x00000112,0x0000036b,0x0005002c, + 0x00000035,0x000003b2,0x0000036b,0x0000010c,0x0005002c,0x00000035,0x000003b3,0x0000036b, + 0x00000112,0x000c002c,0x000003ae,0x000003b4,0x000001a1,0x000003af,0x000003b0,0x000003b1, + 0x000003b2,0x00000278,0x000003b3,0x0000027a,0x0000027d,0x00040020,0x000003ba,0x00000007, + 0x000003ae,0x0004001c,0x000003c0,0x00000006,0x000003ad,0x00040020,0x000003c1,0x00000007, + 0x000003c0,0x00040020,0x000003dc,0x00000007,0x000000ab,0x0004002b,0x00000006,0x000003f4, + 0x3f666666,0x0003002a,0x0000008b,0x0000041c,0x0004001c,0x0000042c,0x000000ab,0x000000ac, + 0x0004002b,0x000000ab,0x0000042d,0x00000017,0x0004002b,0x000000ab,0x0000042e,0x0000002d, + 0x0004002b,0x000000ab,0x0000042f,0x000000d1,0x0004002b,0x000000ab,0x00000430,0x000001a1, + 0x0007002c,0x0000042c,0x00000431,0x0000042d,0x0000042e,0x0000042f,0x00000430,0x00040020, + 0x00000433,0x00000007,0x0000042c,0x0004002b,0x000000ab,0x000004f7,0x00000002,0x0004002b, + 0x000000ab,0x000004fa,0x00000003,0x0004002b,0x00000006,0x00000506,0x3c23d70a,0x00040017, + 0x00000511,0x000000ab,0x00000003,0x00040020,0x00000512,0x00000001,0x00000511,0x0004003b, + 0x00000512,0x00000513,0x00000001,0x0004002b,0x00000006,0x00000519,0x387fda40,0x0004002b, + 0x00000006,0x0000051a,0x37801002,0x0004003b,0x00000152,0x0000051b,0x00000000,0x0004002b, + 0x00000006,0x0000051c,0x3d800000,0x0004002b,0x00000006,0x0000051d,0x3d3d70a4,0x0004002b, + 0x00000006,0x0000051e,0x3e400000,0x0004002b,0x00000006,0x0000051f,0x40000000,0x0004002b, + 0x00000006,0x00000520,0x461c4000,0x0004002b,0x000000ab,0x00000521,0x00000008,0x0006002c, + 0x00000511,0x00000522,0x00000521,0x00000521,0x000001f0,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000004d,0x00000517,0x00000007, + 0x0004003d,0x00000511,0x00000514,0x00000513,0x0007004f,0x00000236,0x00000515,0x00000514, + 0x00000514,0x00000000,0x00000001,0x0004007c,0x00000035,0x00000516,0x00000515,0x0003003e, + 0x00000517,0x00000516,0x00050039,0x00000002,0x00000518,0x000000d9,0x00000517,0x000100fd, + 0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007, + 0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8, + 0x0000000d,0x0004003d,0x00000006,0x000000db,0x00000009,0x0004003d,0x00000006,0x000000dc, + 0x0000000a,0x0004003d,0x00000006,0x000000dd,0x0000000b,0x0008000c,0x00000006,0x000000de, + 0x00000001,0x0000002e,0x000000db,0x000000dc,0x000000dd,0x000200fe,0x000000de,0x00010038, + 0x00050036,0x00000006,0x00000010,0x00000000,0x0000000e,0x00030037,0x00000007,0x0000000f, + 0x000200f8,0x00000011,0x0004003d,0x00000006,0x000000e1,0x0000000f,0x0008000c,0x00000006, + 0x000000e4,0x00000001,0x0000002b,0x000000e1,0x000000e2,0x000000e3,0x000200fe,0x000000e4, + 0x00010038,0x00050036,0x00000012,0x00000016,0x00000000,0x00000014,0x00030037,0x00000013, + 0x00000015,0x000200f8,0x00000017,0x0004003d,0x00000012,0x000000e7,0x00000015,0x0006000c, + 0x00000012,0x000000e8,0x00000001,0x0000000a,0x000000e7,0x000200fe,0x000000e8,0x00010038, + 0x00050036,0x00000006,0x0000001b,0x00000000,0x00000018,0x00030037,0x00000007,0x00000019, + 0x00030037,0x00000007,0x0000001a,0x000200f8,0x0000001c,0x0004003d,0x00000006,0x000000eb, + 0x00000019,0x0004003d,0x00000006,0x000000ec,0x0000001a,0x0007000c,0x00000006,0x000000ed, + 0x00000001,0x00000025,0x000000eb,0x000000ec,0x000200fe,0x000000ed,0x00010038,0x00050036, + 0x00000012,0x00000020,0x00000000,0x0000001d,0x00030037,0x00000013,0x0000001e,0x00030037, + 0x00000013,0x0000001f,0x000200f8,0x00000021,0x0004003d,0x00000012,0x000000f0,0x0000001e, + 0x0004003d,0x00000012,0x000000f1,0x0000001f,0x0007000c,0x00000012,0x000000f2,0x00000001, + 0x00000025,0x000000f0,0x000000f1,0x000200fe,0x000000f2,0x00010038,0x00050036,0x00000022, + 0x00000027,0x00000000,0x00000024,0x00030037,0x00000023,0x00000025,0x00030037,0x00000023, + 0x00000026,0x000200f8,0x00000028,0x0004003d,0x00000022,0x000000f5,0x00000025,0x0004003d, + 0x00000022,0x000000f6,0x00000026,0x0007000c,0x00000022,0x000000f7,0x00000001,0x00000027, + 0x000000f5,0x000000f6,0x000200fe,0x000000f7,0x00010038,0x00050036,0x00000006,0x0000002b, + 0x00000000,0x00000018,0x00030037,0x00000007,0x00000029,0x00030037,0x00000007,0x0000002a, + 0x000200f8,0x0000002c,0x0004003d,0x00000006,0x000000fa,0x00000029,0x0004003d,0x00000006, + 0x000000fb,0x0000002a,0x0007000c,0x00000006,0x000000fc,0x00000001,0x00000028,0x000000fa, + 0x000000fb,0x000200fe,0x000000fc,0x00010038,0x00050036,0x00000012,0x0000002f,0x00000000, + 0x0000001d,0x00030037,0x00000013,0x0000002d,0x00030037,0x00000013,0x0000002e,0x000200f8, + 0x00000030,0x0004003d,0x00000012,0x000000ff,0x0000002d,0x0004003d,0x00000012,0x00000100, + 0x0000002e,0x0007000c,0x00000012,0x00000101,0x00000001,0x00000028,0x000000ff,0x00000100, + 0x000200fe,0x00000101,0x00010038,0x00050036,0x00000022,0x00000033,0x00000000,0x00000024, + 0x00030037,0x00000023,0x00000031,0x00030037,0x00000023,0x00000032,0x000200f8,0x00000034, + 0x0004003d,0x00000022,0x00000104,0x00000031,0x0004003d,0x00000022,0x00000105,0x00000032, + 0x0007000c,0x00000022,0x00000106,0x00000001,0x0000002a,0x00000104,0x00000105,0x000200fe, + 0x00000106,0x00010038,0x00050036,0x00000035,0x00000037,0x00000000,0x00000036,0x000200f8, + 0x00000038,0x00050041,0x0000010d,0x0000010e,0x0000010b,0x0000010c,0x0004003d,0x00000035, + 0x0000010f,0x0000010e,0x000200fe,0x0000010f,0x00010038,0x00050036,0x00000035,0x00000039, + 0x00000000,0x00000036,0x000200f8,0x0000003a,0x00050041,0x0000010d,0x00000113,0x0000010b, + 0x00000112,0x0004003d,0x00000035,0x00000114,0x00000113,0x000200fe,0x00000114,0x00010038, + 0x00050036,0x00000035,0x0000003b,0x00000000,0x00000036,0x000200f8,0x0000003c,0x00050041, + 0x0000010d,0x00000118,0x0000010b,0x00000117,0x0004003d,0x00000035,0x00000119,0x00000118, + 0x000200fe,0x00000119,0x00010038,0x00050036,0x00000035,0x0000003d,0x00000000,0x00000036, + 0x000200f8,0x0000003e,0x00050041,0x0000010d,0x0000011d,0x0000010b,0x0000011c,0x0004003d, + 0x00000035,0x0000011e,0x0000011d,0x000200fe,0x0000011e,0x00010038,0x00050036,0x00000012, + 0x00000040,0x00000000,0x0000003f,0x000200f8,0x00000041,0x00050041,0x00000122,0x00000123, + 0x0000010b,0x00000121,0x0004003d,0x00000012,0x00000124,0x00000123,0x000200fe,0x00000124, + 0x00010038,0x00050036,0x00000042,0x00000044,0x00000000,0x00000043,0x000200f8,0x00000045, + 0x00050041,0x00000128,0x00000129,0x0000010b,0x00000127,0x0004003d,0x00000042,0x0000012a, + 0x00000129,0x000200fe,0x0000012a,0x00010038,0x00050036,0x00000006,0x00000047,0x00000000, + 0x00000046,0x000200f8,0x00000048,0x00050041,0x0000012e,0x0000012f,0x0000010b,0x0000012d, + 0x0004003d,0x00000006,0x00000130,0x0000012f,0x000200fe,0x00000130,0x00010038,0x00050036, + 0x00000006,0x00000049,0x00000000,0x00000046,0x000200f8,0x0000004a,0x00050041,0x0000012e, + 0x00000134,0x0000010b,0x00000133,0x0004003d,0x00000006,0x00000135,0x00000134,0x000200fe, + 0x00000135,0x00010038,0x00050036,0x00000006,0x0000004b,0x00000000,0x00000046,0x000200f8, + 0x0000004c,0x00050041,0x0000012e,0x00000139,0x0000010b,0x00000138,0x0004003d,0x00000006, + 0x0000013a,0x00000139,0x000200fe,0x0000013a,0x00010038,0x00050036,0x00000006,0x00000050, + 0x00000000,0x0000004e,0x00030037,0x0000004d,0x0000004f,0x000200f8,0x00000051,0x0004003d, + 0x0000013d,0x00000140,0x0000013f,0x0004003d,0x00000035,0x00000141,0x0000004f,0x0007005f, + 0x00000042,0x00000142,0x00000140,0x00000141,0x00000002,0x0000010c,0x00050051,0x00000006, + 0x00000144,0x00000142,0x00000000,0x00050041,0x0000012e,0x00000146,0x0000010b,0x00000145, + 0x0004003d,0x00000006,0x00000147,0x00000146,0x00050085,0x00000006,0x00000148,0x00000144, + 0x00000147,0x000200fe,0x00000148,0x00010038,0x00050036,0x00000035,0x00000052,0x00000000, + 0x00000036,0x000200f8,0x00000053,0x0004003d,0x0000013d,0x0000014c,0x0000014b,0x00050067, + 0x00000035,0x0000014d,0x0000014c,0x0000010c,0x000200fe,0x0000014d,0x00010038,0x00050036, + 0x00000006,0x00000056,0x00000000,0x00000054,0x00030037,0x00000013,0x00000055,0x000200f8, + 0x00000057,0x0004003d,0x0000013d,0x00000150,0x0000014b,0x0004003d,0x00000151,0x00000154, + 0x00000153,0x00050056,0x00000155,0x00000156,0x00000150,0x00000154,0x0004003d,0x00000012, + 0x00000157,0x00000055,0x00070058,0x00000042,0x00000158,0x00000156,0x00000157,0x00000002, + 0x000000e2,0x00050051,0x00000006,0x00000159,0x00000158,0x00000000,0x000200fe,0x00000159, + 0x00010038,0x00050036,0x00000006,0x00000059,0x00000000,0x00000054,0x00030037,0x00000013, + 0x00000058,0x000200f8,0x0000005a,0x0004003d,0x0000013d,0x0000015d,0x0000015c,0x0004003d, + 0x00000151,0x0000015e,0x00000153,0x00050056,0x00000155,0x0000015f,0x0000015d,0x0000015e, + 0x0004003d,0x00000012,0x00000160,0x00000058,0x00070058,0x00000042,0x00000161,0x0000015f, + 0x00000160,0x00000002,0x000000e2,0x00050051,0x00000006,0x00000162,0x00000161,0x00000000, + 0x000200fe,0x00000162,0x00010038,0x00050036,0x00000002,0x0000005e,0x00000000,0x0000005b, + 0x00030037,0x0000004d,0x0000005c,0x00030037,0x00000007,0x0000005d,0x000200f8,0x0000005f, + 0x0004003d,0x00000165,0x00000168,0x00000167,0x0004003d,0x00000035,0x00000169,0x0000005c, + 0x0004003d,0x00000006,0x0000016a,0x0000005d,0x00070050,0x00000042,0x0000016b,0x0000016a, + 0x000000e2,0x000000e2,0x000000e2,0x00040063,0x00000168,0x00000169,0x0000016b,0x000100fd, + 0x00010038,0x00050036,0x00000006,0x00000061,0x00000000,0x00000054,0x00030037,0x00000013, + 0x00000060,0x000200f8,0x00000062,0x0004003d,0x0000013d,0x0000016d,0x0000016c,0x0004003d, + 0x00000151,0x0000016e,0x00000153,0x00050056,0x00000155,0x0000016f,0x0000016d,0x0000016e, + 0x0004003d,0x00000012,0x00000170,0x00000060,0x00070058,0x00000042,0x00000171,0x0000016f, + 0x00000170,0x00000002,0x000000e2,0x00050051,0x00000006,0x00000172,0x00000171,0x00000000, + 0x00050041,0x0000012e,0x00000174,0x0000010b,0x00000173,0x0004003d,0x00000006,0x00000175, + 0x00000174,0x00050085,0x00000006,0x00000176,0x00000172,0x00000175,0x000200fe,0x00000176, + 0x00010038,0x00050036,0x00000006,0x00000064,0x00000000,0x0000004e,0x00030037,0x0000004d, + 0x00000063,0x000200f8,0x00000065,0x0004003d,0x0000013d,0x0000017a,0x00000179,0x0004003d, + 0x00000035,0x0000017b,0x00000063,0x0007005f,0x00000042,0x0000017c,0x0000017a,0x0000017b, + 0x00000002,0x0000010c,0x00050051,0x00000006,0x0000017d,0x0000017c,0x00000000,0x000200fe, + 0x0000017d,0x00010038,0x00050036,0x00000002,0x00000068,0x00000000,0x0000005b,0x00030037, + 0x0000004d,0x00000066,0x00030037,0x00000007,0x00000067,0x000200f8,0x00000069,0x0004003d, + 0x00000165,0x00000181,0x00000180,0x0004003d,0x00000035,0x00000182,0x00000066,0x0004003d, + 0x00000006,0x00000183,0x00000067,0x00070050,0x00000042,0x00000184,0x00000183,0x000000e2, + 0x000000e2,0x000000e2,0x00040063,0x00000181,0x00000182,0x00000184,0x000100fd,0x00010038, + 0x00050036,0x00000006,0x0000006b,0x00000000,0x0000004e,0x00030037,0x0000004d,0x0000006a, + 0x000200f8,0x0000006c,0x0004003d,0x00000185,0x00000188,0x00000187,0x0004003d,0x00000035, + 0x00000189,0x0000006a,0x0007005f,0x0000018a,0x0000018b,0x00000188,0x00000189,0x00000002, + 0x0000010c,0x00050051,0x000000ab,0x0000018c,0x0000018b,0x00000000,0x0004007c,0x00000006, + 0x0000018d,0x0000018c,0x000200fe,0x0000018d,0x00010038,0x00050036,0x00000012,0x0000006f, + 0x00000000,0x0000006d,0x00030037,0x0000004d,0x0000006e,0x000200f8,0x00000070,0x0004003d, + 0x0000013d,0x00000191,0x00000190,0x0004003d,0x00000035,0x00000192,0x0000006e,0x0007005f, + 0x00000042,0x00000193,0x00000191,0x00000192,0x00000002,0x0000010c,0x0007004f,0x00000012, + 0x00000194,0x00000193,0x00000193,0x00000000,0x00000001,0x000200fe,0x00000194,0x00010038, + 0x00050036,0x00000006,0x00000072,0x00000000,0x0000004e,0x00030037,0x0000004d,0x00000071, + 0x000200f8,0x00000073,0x0004003d,0x0000013d,0x00000198,0x00000197,0x0004003d,0x00000035, + 0x00000199,0x00000071,0x0007005f,0x00000042,0x0000019a,0x00000198,0x00000199,0x00000002, + 0x0000010c,0x00050051,0x00000006,0x0000019b,0x0000019a,0x00000000,0x000200fe,0x0000019b, + 0x00010038,0x00050036,0x00000006,0x00000074,0x00000000,0x00000046,0x000200f8,0x00000075, + 0x0004003b,0x00000007,0x0000019e,0x00000007,0x0004003d,0x0000013d,0x000001a0,0x0000019f, + 0x0007005f,0x00000042,0x000001a2,0x000001a0,0x000001a1,0x00000002,0x0000010c,0x00050051, + 0x00000006,0x000001a3,0x000001a2,0x00000000,0x0003003e,0x0000019e,0x000001a3,0x0004003d, + 0x00000006,0x000001a4,0x0000019e,0x000500b4,0x0000008b,0x000001a5,0x000001a4,0x000000e2, + 0x000300f7,0x000001a7,0x00000000,0x000400fa,0x000001a5,0x000001a6,0x000001a7,0x000200f8, + 0x000001a6,0x0003003e,0x0000019e,0x000000e3,0x000200f9,0x000001a7,0x000200f8,0x000001a7, + 0x0004003d,0x00000006,0x000001a8,0x0000019e,0x000200fe,0x000001a8,0x00010038,0x00050036, + 0x00000002,0x0000007a,0x00000000,0x00000077,0x00030037,0x0000004d,0x00000078,0x00030037, + 0x00000076,0x00000079,0x000200f8,0x0000007b,0x0004003d,0x000001ab,0x000001ae,0x000001ad, + 0x0004003d,0x00000035,0x000001af,0x00000078,0x0004003d,0x00000042,0x000001b0,0x00000079, + 0x00040063,0x000001ae,0x000001af,0x000001b0,0x000100fd,0x00010038,0x00050036,0x00000006, + 0x0000007d,0x00000000,0x0000000e,0x00030037,0x00000007,0x0000007c,0x000200f8,0x0000007e, + 0x0004003b,0x00000007,0x000001b6,0x00000007,0x0004003b,0x00000007,0x000001b8,0x00000007, + 0x0004003b,0x00000007,0x000001b9,0x00000007,0x0004003b,0x00000007,0x000001ba,0x00000007, + 0x0004003d,0x00000006,0x000001b3,0x0000007c,0x00050088,0x00000006,0x000001b5,0x000001b3, + 0x000001b4,0x0003003e,0x000001b6,0x000001b5,0x00050039,0x00000006,0x000001b7,0x00000010, + 0x000001b6,0x0003003e,0x000001b8,0x000001b1,0x0003003e,0x000001b9,0x000001b2,0x0003003e, + 0x000001ba,0x000001b7,0x00070039,0x00000006,0x000001bb,0x0000000c,0x000001b8,0x000001b9, + 0x000001ba,0x000200fe,0x000001bb,0x00010038,0x00050036,0x00000035,0x0000007f,0x00000000, + 0x00000036,0x000200f8,0x00000080,0x00040039,0x00000035,0x000001be,0x00000037,0x0004006f, + 0x00000012,0x000001bf,0x000001be,0x0005008e,0x00000012,0x000001c1,0x000001bf,0x000001c0, + 0x0004006e,0x00000035,0x000001c2,0x000001c1,0x000200fe,0x000001c2,0x00010038,0x00050036, + 0x00000035,0x00000081,0x00000000,0x00000036,0x000200f8,0x00000082,0x00040039,0x00000035, + 0x000001c5,0x0000003b,0x0004006f,0x00000012,0x000001c6,0x000001c5,0x0005008e,0x00000012, + 0x000001c7,0x000001c6,0x000001c0,0x0004006e,0x00000035,0x000001c8,0x000001c7,0x000200fe, + 0x000001c8,0x00010038,0x00050036,0x00000006,0x00000084,0x00000000,0x00000054,0x00030037, + 0x00000013,0x00000083,0x000200f8,0x00000085,0x0004003d,0x00000012,0x000001cb,0x00000083, + 0x00050085,0x00000012,0x000001cf,0x000001cb,0x000001ce,0x0006000c,0x00000006,0x000001d0, + 0x00000001,0x00000042,0x000001cf,0x000200fe,0x000001d0,0x00010038,0x00050036,0x00000006, + 0x00000089,0x00000000,0x00000086,0x00030037,0x00000006,0x00000087,0x00030037,0x00000006, + 0x00000088,0x000200f8,0x0000008a,0x0004003b,0x00000007,0x000001d3,0x00000007,0x0004003b, + 0x00000007,0x000001d4,0x00000007,0x0004003b,0x00000007,0x000001d5,0x00000007,0x0004003b, + 0x00000007,0x000001d9,0x00000007,0x0004003b,0x00000007,0x000001dc,0x00000007,0x0004003b, + 0x00000007,0x000001dd,0x00000007,0x0003003e,0x000001d4,0x00000087,0x0003003e,0x000001d5, + 0x00000088,0x00060039,0x00000006,0x000001d6,0x0000002b,0x000001d4,0x000001d5,0x0003003e, + 0x000001d3,0x000001d6,0x0004003d,0x00000006,0x000001d7,0x000001d3,0x000500b7,0x0000008b, + 0x000001d8,0x000001d7,0x000000e2,0x000300f7,0x000001db,0x00000000,0x000400fa,0x000001d8, + 0x000001da,0x000001e1,0x000200f8,0x000001da,0x0003003e,0x000001dc,0x00000087,0x0003003e, + 0x000001dd,0x00000088,0x00060039,0x00000006,0x000001de,0x0000001b,0x000001dc,0x000001dd, + 0x0004003d,0x00000006,0x000001df,0x000001d3,0x00050088,0x00000006,0x000001e0,0x000001de, + 0x000001df,0x0003003e,0x000001d9,0x000001e0,0x000200f9,0x000001db,0x000200f8,0x000001e1, + 0x0003003e,0x000001d9,0x000000e2,0x000200f9,0x000001db,0x000200f8,0x000001db,0x0004003d, + 0x00000006,0x000001e2,0x000001d9,0x000200fe,0x000001e2,0x00010038,0x00050036,0x0000008b, + 0x0000008e,0x00000000,0x0000008c,0x00030037,0x00000013,0x0000008d,0x000200f8,0x0000008f, + 0x00050041,0x00000007,0x000001e5,0x0000008d,0x00000143,0x0004003d,0x00000006,0x000001e6, + 0x000001e5,0x000500be,0x0000008b,0x000001e7,0x000001e6,0x000000e2,0x000300f7,0x000001e9, + 0x00000000,0x000400fa,0x000001e7,0x000001e8,0x000001e9,0x000200f8,0x000001e8,0x00050041, + 0x00000007,0x000001ea,0x0000008d,0x00000143,0x0004003d,0x00000006,0x000001eb,0x000001ea, + 0x000500bc,0x0000008b,0x000001ec,0x000001eb,0x000000e3,0x000200f9,0x000001e9,0x000200f8, + 0x000001e9,0x000700f5,0x0000008b,0x000001ed,0x000001e7,0x0000008f,0x000001ec,0x000001e8, + 0x000300f7,0x000001ef,0x00000000,0x000400fa,0x000001ed,0x000001ee,0x000001ef,0x000200f8, + 0x000001ee,0x00050041,0x00000007,0x000001f1,0x0000008d,0x000001f0,0x0004003d,0x00000006, + 0x000001f2,0x000001f1,0x000500be,0x0000008b,0x000001f3,0x000001f2,0x000000e2,0x000300f7, + 0x000001f5,0x00000000,0x000400fa,0x000001f3,0x000001f4,0x000001f5,0x000200f8,0x000001f4, + 0x00050041,0x00000007,0x000001f6,0x0000008d,0x000001f0,0x0004003d,0x00000006,0x000001f7, + 0x000001f6,0x000500bc,0x0000008b,0x000001f8,0x000001f7,0x000000e3,0x000200f9,0x000001f5, + 0x000200f8,0x000001f5,0x000700f5,0x0000008b,0x000001f9,0x000001f3,0x000001ee,0x000001f8, + 0x000001f4,0x000200f9,0x000001ef,0x000200f8,0x000001ef,0x000700f5,0x0000008b,0x000001fa, + 0x000001ed,0x000001e9,0x000001f9,0x000001f5,0x000200fe,0x000001fa,0x00010038,0x00050036, + 0x00000035,0x00000094,0x00000000,0x00000090,0x00030037,0x0000004d,0x00000091,0x00030037, + 0x0000004d,0x00000092,0x00030037,0x0000004d,0x00000093,0x000200f8,0x00000095,0x0004003b, + 0x0000004d,0x000001fd,0x00000007,0x0004003b,0x00000023,0x00000204,0x00000007,0x0004003b, + 0x00000023,0x00000207,0x00000007,0x0004003b,0x00000023,0x00000209,0x00000007,0x0004003b, + 0x00000023,0x0000020a,0x00000007,0x0004003b,0x00000023,0x00000210,0x00000007,0x0004003b, + 0x00000023,0x00000213,0x00000007,0x0004003b,0x00000023,0x00000215,0x00000007,0x0004003b, + 0x00000023,0x00000216,0x00000007,0x0004003d,0x00000035,0x000001fe,0x00000091,0x0004003d, + 0x00000035,0x000001ff,0x00000092,0x00050080,0x00000035,0x00000200,0x000001fe,0x000001ff, + 0x0003003e,0x000001fd,0x00000200,0x00050041,0x00000023,0x00000201,0x00000093,0x00000143, + 0x0004003d,0x00000022,0x00000202,0x00000201,0x00050082,0x00000022,0x00000203,0x00000202, + 0x00000112,0x00050041,0x00000023,0x00000205,0x000001fd,0x00000143,0x0004003d,0x00000022, + 0x00000206,0x00000205,0x0003003e,0x00000204,0x00000206,0x0003003e,0x00000207,0x00000203, + 0x00060039,0x00000022,0x00000208,0x00000027,0x00000204,0x00000207,0x0003003e,0x00000209, + 0x0000010c,0x0003003e,0x0000020a,0x00000208,0x00060039,0x00000022,0x0000020b,0x00000033, + 0x00000209,0x0000020a,0x00050041,0x00000023,0x0000020c,0x000001fd,0x00000143,0x0003003e, + 0x0000020c,0x0000020b,0x00050041,0x00000023,0x0000020d,0x00000093,0x000001f0,0x0004003d, + 0x00000022,0x0000020e,0x0000020d,0x00050082,0x00000022,0x0000020f,0x0000020e,0x00000112, + 0x00050041,0x00000023,0x00000211,0x000001fd,0x000001f0,0x0004003d,0x00000022,0x00000212, + 0x00000211,0x0003003e,0x00000210,0x00000212,0x0003003e,0x00000213,0x0000020f,0x00060039, + 0x00000022,0x00000214,0x00000027,0x00000210,0x00000213,0x0003003e,0x00000215,0x0000010c, + 0x0003003e,0x00000216,0x00000214,0x00060039,0x00000022,0x00000217,0x00000033,0x00000215, + 0x00000216,0x00050041,0x00000023,0x00000218,0x000001fd,0x000001f0,0x0003003e,0x00000218, + 0x00000217,0x0004003d,0x00000035,0x00000219,0x000001fd,0x000200fe,0x00000219,0x00010038, + 0x00050036,0x00000012,0x0000009a,0x00000000,0x00000096,0x00030037,0x00000013,0x00000097, + 0x00030037,0x0000004d,0x00000098,0x00030037,0x0000004d,0x00000099,0x000200f8,0x0000009b, + 0x0004003b,0x00000013,0x0000021c,0x00000007,0x0004003b,0x00000013,0x00000221,0x00000007, + 0x0004003b,0x00000013,0x00000226,0x00000007,0x0004003b,0x00000013,0x00000228,0x00000007, + 0x0004003b,0x00000013,0x0000022a,0x00000007,0x0004003b,0x00000013,0x0000022b,0x00000007, + 0x0004003b,0x00000013,0x0000022d,0x00000007,0x0004003d,0x00000012,0x0000021d,0x00000097, + 0x0004003d,0x00000035,0x0000021e,0x00000098,0x0004006f,0x00000012,0x0000021f,0x0000021e, + 0x00050085,0x00000012,0x00000220,0x0000021d,0x0000021f,0x0003003e,0x0000021c,0x00000220, + 0x0004003d,0x00000035,0x00000223,0x00000098,0x0004006f,0x00000012,0x00000224,0x00000223, + 0x00050083,0x00000012,0x00000225,0x00000224,0x00000222,0x0004003d,0x00000012,0x00000227, + 0x0000021c,0x0003003e,0x00000226,0x00000227,0x0003003e,0x00000228,0x00000225,0x00060039, + 0x00000012,0x00000229,0x00000020,0x00000226,0x00000228,0x0003003e,0x0000022a,0x00000222, + 0x0003003e,0x0000022b,0x00000229,0x00060039,0x00000012,0x0000022c,0x0000002f,0x0000022a, + 0x0000022b,0x0003003e,0x00000221,0x0000022c,0x0004003d,0x00000012,0x0000022e,0x00000221, + 0x0004003d,0x00000035,0x0000022f,0x00000099,0x0004006f,0x00000012,0x00000230,0x0000022f, + 0x00050088,0x00000012,0x00000231,0x0000022e,0x00000230,0x0003003e,0x0000022d,0x00000231, + 0x0004003d,0x00000012,0x00000232,0x0000022d,0x000200fe,0x00000232,0x00010038,0x00050036, + 0x0000008b,0x0000009f,0x00000000,0x0000009c,0x00030037,0x0000004d,0x0000009d,0x00030037, + 0x0000004d,0x0000009e,0x000200f8,0x000000a0,0x0004003d,0x00000035,0x00000235,0x0000009d, + 0x0004007c,0x00000236,0x00000237,0x00000235,0x0004003d,0x00000035,0x00000238,0x0000009e, + 0x0004007c,0x00000236,0x00000239,0x00000238,0x000500b0,0x0000023a,0x0000023b,0x00000237, + 0x00000239,0x0004009b,0x0000008b,0x0000023c,0x0000023b,0x000200fe,0x0000023c,0x00010038, + 0x00050036,0x00000035,0x000000a3,0x00000000,0x000000a1,0x00030037,0x0000004d,0x000000a2, + 0x000200f8,0x000000a4,0x0004003b,0x00000013,0x0000023f,0x00000007,0x0004003b,0x00000013, + 0x00000246,0x00000007,0x0004003b,0x0000004d,0x0000024e,0x00000007,0x0004003d,0x00000035, + 0x00000240,0x000000a2,0x0004006f,0x00000012,0x00000241,0x00000240,0x00050050,0x00000012, + 0x00000242,0x000001c0,0x000001c0,0x00050081,0x00000012,0x00000243,0x00000241,0x00000242, + 0x00040039,0x00000012,0x00000244,0x00000040,0x00050083,0x00000012,0x00000245,0x00000243, + 0x00000244,0x0003003e,0x0000023f,0x00000245,0x0004003d,0x00000012,0x00000247,0x0000023f, + 0x00040039,0x00000035,0x00000248,0x00000037,0x0004006f,0x00000012,0x00000249,0x00000248, + 0x00050088,0x00000012,0x0000024a,0x00000247,0x00000249,0x00040039,0x00000035,0x0000024b, + 0x0000003d,0x0004006f,0x00000012,0x0000024c,0x0000024b,0x00050085,0x00000012,0x0000024d, + 0x0000024a,0x0000024c,0x0003003e,0x00000246,0x0000024d,0x0004003d,0x00000012,0x0000024f, + 0x00000246,0x0006000c,0x00000012,0x00000250,0x00000001,0x00000008,0x0000024f,0x0004006e, + 0x00000035,0x00000251,0x00000250,0x0003003e,0x0000024e,0x00000251,0x0004003d,0x00000035, + 0x00000252,0x0000024e,0x000200fe,0x00000252,0x00010038,0x00050036,0x00000006,0x000000a6, + 0x00000000,0x0000000e,0x00030037,0x00000007,0x000000a5,0x000200f8,0x000000a7,0x0004003b, + 0x00000076,0x00000255,0x00000007,0x00040039,0x00000042,0x00000256,0x00000044,0x0003003e, + 0x00000255,0x00000256,0x00050041,0x00000007,0x00000257,0x00000255,0x000001f0,0x0004003d, + 0x00000006,0x00000258,0x00000257,0x0004003d,0x00000006,0x00000259,0x000000a5,0x00050041, + 0x00000007,0x0000025a,0x00000255,0x00000143,0x0004003d,0x00000006,0x0000025b,0x0000025a, + 0x00050083,0x00000006,0x0000025c,0x00000259,0x0000025b,0x00050088,0x00000006,0x0000025d, + 0x00000258,0x0000025c,0x000200fe,0x0000025d,0x00010038,0x00050036,0x00000006,0x000000a9, + 0x00000000,0x0000000e,0x00030037,0x00000007,0x000000a8,0x000200f8,0x000000aa,0x0004003b, + 0x00000007,0x00000260,0x00000007,0x0004003d,0x00000006,0x00000261,0x000000a8,0x0003003e, + 0x00000260,0x00000261,0x00050039,0x00000006,0x00000262,0x000000a6,0x00000260,0x00040039, + 0x00000006,0x00000263,0x00000047,0x00050085,0x00000006,0x00000264,0x00000262,0x00000263, + 0x000200fe,0x00000264,0x00010038,0x00050036,0x000000af,0x000000b3,0x00000000,0x000000b0, + 0x00030037,0x00000013,0x000000b1,0x00030037,0x0000004d,0x000000b2,0x000200f8,0x000000b4, + 0x0004003b,0x00000013,0x00000267,0x00000007,0x0004003b,0x0000026d,0x0000026e,0x00000007, + 0x0004003b,0x00000013,0x00000273,0x00000007,0x0004003b,0x00000013,0x00000274,0x00000007, + 0x0004003d,0x00000012,0x00000268,0x000000b1,0x0004003d,0x00000035,0x00000269,0x000000b2, + 0x0004006f,0x00000012,0x0000026a,0x00000269,0x00050085,0x00000012,0x0000026b,0x00000268, + 0x0000026a,0x00050083,0x00000012,0x0000026c,0x0000026b,0x00000222,0x0003003e,0x00000267, + 0x0000026c,0x0004003d,0x00000012,0x0000026f,0x00000267,0x0006000c,0x00000012,0x00000270, + 0x00000001,0x00000008,0x0000026f,0x0004006e,0x00000035,0x00000271,0x00000270,0x00050041, + 0x0000004d,0x00000272,0x0000026e,0x0000011c,0x0003003e,0x00000272,0x00000271,0x0004003d, + 0x00000012,0x00000275,0x00000267,0x0003003e,0x00000274,0x00000275,0x00050039,0x00000012, + 0x00000276,0x00000016,0x00000274,0x0003003e,0x00000273,0x00000276,0x00060041,0x0000004d, + 0x00000277,0x0000026e,0x0000010c,0x0000010c,0x0003003e,0x00000277,0x000001a1,0x00060041, + 0x0000004d,0x00000279,0x0000026e,0x0000010c,0x00000112,0x0003003e,0x00000279,0x00000278, + 0x00060041,0x0000004d,0x0000027b,0x0000026e,0x0000010c,0x0000011c,0x0003003e,0x0000027b, + 0x0000027a,0x00060041,0x0000004d,0x0000027e,0x0000026e,0x0000010c,0x0000027c,0x0003003e, + 0x0000027e,0x0000027d,0x00050041,0x00000007,0x0000027f,0x00000273,0x00000143,0x0004003d, + 0x00000006,0x00000280,0x0000027f,0x00050083,0x00000006,0x00000281,0x000000e3,0x00000280, + 0x00050041,0x00000007,0x00000282,0x00000273,0x000001f0,0x0004003d,0x00000006,0x00000283, + 0x00000282,0x00050083,0x00000006,0x00000284,0x000000e3,0x00000283,0x00050085,0x00000006, + 0x00000285,0x00000281,0x00000284,0x00060041,0x00000007,0x00000286,0x0000026e,0x00000112, + 0x0000010c,0x0003003e,0x00000286,0x00000285,0x00050041,0x00000007,0x00000287,0x00000273, + 0x00000143,0x0004003d,0x00000006,0x00000288,0x00000287,0x00050041,0x00000007,0x00000289, + 0x00000273,0x000001f0,0x0004003d,0x00000006,0x0000028a,0x00000289,0x00050083,0x00000006, + 0x0000028b,0x000000e3,0x0000028a,0x00050085,0x00000006,0x0000028c,0x00000288,0x0000028b, + 0x00060041,0x00000007,0x0000028d,0x0000026e,0x00000112,0x00000112,0x0003003e,0x0000028d, + 0x0000028c,0x00050041,0x00000007,0x0000028e,0x00000273,0x00000143,0x0004003d,0x00000006, + 0x0000028f,0x0000028e,0x00050083,0x00000006,0x00000290,0x000000e3,0x0000028f,0x00050041, + 0x00000007,0x00000291,0x00000273,0x000001f0,0x0004003d,0x00000006,0x00000292,0x00000291, + 0x00050085,0x00000006,0x00000293,0x00000290,0x00000292,0x00060041,0x00000007,0x00000294, + 0x0000026e,0x00000112,0x0000011c,0x0003003e,0x00000294,0x00000293,0x00050041,0x00000007, + 0x00000295,0x00000273,0x00000143,0x0004003d,0x00000006,0x00000296,0x00000295,0x00050041, + 0x00000007,0x00000297,0x00000273,0x000001f0,0x0004003d,0x00000006,0x00000298,0x00000297, + 0x00050085,0x00000006,0x00000299,0x00000296,0x00000298,0x00060041,0x00000007,0x0000029a, + 0x0000026e,0x00000112,0x0000027c,0x0003003e,0x0000029a,0x00000299,0x0004003d,0x000000af, + 0x0000029b,0x0000026e,0x000200fe,0x0000029b,0x00010038,0x00050036,0x00000006,0x000000b9, + 0x00000000,0x000000b5,0x00030037,0x00000013,0x000000b6,0x00030037,0x00000013,0x000000b7, + 0x00030037,0x00000007,0x000000b8,0x000200f8,0x000000ba,0x0004003b,0x00000007,0x0000029e, + 0x00000007,0x0004003b,0x00000007,0x000002a3,0x00000007,0x0004003b,0x00000007,0x000002a4, + 0x00000007,0x0004003b,0x00000007,0x000002a6,0x00000007,0x0004003b,0x00000007,0x000002a7, + 0x00000007,0x0004003b,0x00000013,0x000002aa,0x00000007,0x0004003b,0x00000013,0x000002b2, + 0x00000007,0x0004003b,0x0000026d,0x000002b6,0x00000007,0x0004003b,0x00000013,0x000002b8, + 0x00000007,0x0004003b,0x0000004d,0x000002ba,0x00000007,0x0004003b,0x00000007,0x000002bc, + 0x00000007,0x0004003b,0x00000007,0x000002bd,0x00000007,0x0004003b,0x000002be,0x000002bf, + 0x00000007,0x0004003b,0x00000023,0x000002c1,0x00000007,0x0004003b,0x0000004d,0x000002cb, + 0x00000007,0x0004003b,0x0000004d,0x000002cf,0x00000007,0x0004003b,0x0000004d,0x000002d1, + 0x00000007,0x0004003b,0x0000004d,0x000002d4,0x00000007,0x0004003b,0x0000004d,0x000002d6, + 0x00000007,0x0004003b,0x0000004d,0x000002d9,0x00000007,0x0004003b,0x0000004d,0x000002db, + 0x00000007,0x0004003b,0x00000007,0x000002df,0x00000007,0x0004003b,0x00000007,0x000002e8, + 0x00000007,0x0004003b,0x0000004d,0x000002e9,0x00000007,0x0004003b,0x00000007,0x000002ec, + 0x00000007,0x0004003b,0x00000007,0x000002ee,0x00000007,0x0004003b,0x00000007,0x000002fa, + 0x00000007,0x0004003b,0x00000007,0x000002ff,0x00000007,0x0004003b,0x00000007,0x00000300, + 0x00000007,0x0004003b,0x00000007,0x00000302,0x00000007,0x0004003b,0x00000007,0x00000305, + 0x00000007,0x0004003b,0x00000007,0x0000030e,0x00000007,0x0004003b,0x00000007,0x0000031d, + 0x00000007,0x0004003b,0x00000007,0x00000324,0x00000007,0x0004003d,0x00000006,0x0000029f, + 0x000000b8,0x00040039,0x00000006,0x000002a0,0x00000047,0x00050085,0x00000006,0x000002a1, + 0x0000029f,0x000002a0,0x0003003e,0x000002a3,0x000002a1,0x0003003e,0x000002a4,0x000002a2, + 0x00060039,0x00000006,0x000002a5,0x0000001b,0x000002a3,0x000002a4,0x0003003e,0x0000029e, + 0x000002a5,0x0004003d,0x00000006,0x000002a8,0x0000029e,0x0003003e,0x000002a7,0x000002a8, + 0x00050039,0x00000006,0x000002a9,0x0000007d,0x000002a7,0x0003003e,0x000002a6,0x000002a9, + 0x0004003d,0x00000012,0x000002ab,0x000000b7,0x0003003e,0x000002aa,0x000002ab,0x00050039, + 0x00000006,0x000002ac,0x00000084,0x000002aa,0x0004003d,0x00000006,0x000002ad,0x000002a6, + 0x000500ba,0x0000008b,0x000002ae,0x000002ac,0x000002ad,0x000600a9,0x00000006,0x000002af, + 0x000002ae,0x000000e3,0x000000e2,0x0004003d,0x00000012,0x000002b0,0x000000b7,0x0005008e, + 0x00000012,0x000002b1,0x000002b0,0x000002af,0x0003003e,0x000000b7,0x000002b1,0x0004003d, + 0x00000012,0x000002b3,0x000000b6,0x0004003d,0x00000012,0x000002b4,0x000000b7,0x00050081, + 0x00000012,0x000002b5,0x000002b3,0x000002b4,0x0003003e,0x000002b2,0x000002b5,0x00040039, + 0x00000035,0x000002b7,0x00000037,0x0004003d,0x00000012,0x000002b9,0x000002b2,0x0003003e, + 0x000002b8,0x000002b9,0x0003003e,0x000002ba,0x000002b7,0x00060039,0x000000af,0x000002bb, + 0x000000b3,0x000002b8,0x000002ba,0x0003003e,0x000002b6,0x000002bb,0x0003003e,0x000002bc, + 0x000000e2,0x0003003e,0x000002bd,0x000000e2,0x0003003e,0x000002bf,0x000002c0,0x0003003e, + 0x000002c1,0x0000010c,0x000200f9,0x000002c2,0x000200f8,0x000002c2,0x000400f6,0x000002c4, + 0x000002c5,0x00000000,0x000200f9,0x000002c6,0x000200f8,0x000002c6,0x0004003d,0x00000022, + 0x000002c7,0x000002c1,0x000500b1,0x0000008b,0x000002c8,0x000002c7,0x00000117,0x0004003d, + 0x0000008b,0x000002c9,0x000002bf,0x000500a7,0x0000008b,0x000002ca,0x000002c8,0x000002c9, + 0x000400fa,0x000002ca,0x000002c3,0x000002c4,0x000200f8,0x000002c3,0x0004003d,0x00000022, + 0x000002cc,0x000002c1,0x00060041,0x0000004d,0x000002cd,0x000002b6,0x0000010c,0x000002cc, + 0x0004003d,0x00000035,0x000002ce,0x000002cd,0x0003003e,0x000002cb,0x000002ce,0x00040039, + 0x00000035,0x000002d0,0x00000037,0x00050041,0x0000004d,0x000002d2,0x000002b6,0x0000011c, + 0x0004003d,0x00000035,0x000002d3,0x000002d2,0x0003003e,0x000002d1,0x000002d3,0x0004003d, + 0x00000035,0x000002d5,0x000002cb,0x0003003e,0x000002d4,0x000002d5,0x0003003e,0x000002d6, + 0x000002d0,0x00070039,0x00000035,0x000002d7,0x00000094,0x000002d1,0x000002d4,0x000002d6, + 0x0003003e,0x000002cf,0x000002d7,0x00040039,0x00000035,0x000002d8,0x00000037,0x0004003d, + 0x00000035,0x000002da,0x000002cf,0x0003003e,0x000002d9,0x000002da,0x0003003e,0x000002db, + 0x000002d8,0x00060039,0x0000008b,0x000002dc,0x0000009f,0x000002d9,0x000002db,0x000300f7, + 0x000002de,0x00000000,0x000400fa,0x000002dc,0x000002dd,0x000002de,0x000200f8,0x000002dd, + 0x0004003d,0x00000022,0x000002e0,0x000002c1,0x00060041,0x00000007,0x000002e1,0x000002b6, + 0x00000112,0x000002e0,0x0004003d,0x00000006,0x000002e2,0x000002e1,0x0003003e,0x000002df, + 0x000002e2,0x0004003d,0x00000006,0x000002e3,0x000002df,0x000500ba,0x0000008b,0x000002e5, + 0x000002e3,0x000002e4,0x000300f7,0x000002e7,0x00000000,0x000400fa,0x000002e5,0x000002e6, + 0x000002e7,0x000200f8,0x000002e6,0x0004003d,0x00000035,0x000002ea,0x000002cf,0x0003003e, + 0x000002e9,0x000002ea,0x00050039,0x00000006,0x000002eb,0x0000006b,0x000002e9,0x0003003e, + 0x000002ec,0x000002eb,0x00050039,0x00000006,0x000002ed,0x000000a6,0x000002ec,0x0003003e, + 0x000002e8,0x000002ed,0x0004003d,0x00000006,0x000002ef,0x000000b8,0x0004003d,0x00000006, + 0x000002f0,0x000002e8,0x00050083,0x00000006,0x000002f1,0x000002ef,0x000002f0,0x0003003e, + 0x000002ee,0x000002f1,0x0004003d,0x0000008b,0x000002f2,0x000002bf,0x0004003d,0x00000006, + 0x000002f3,0x000002ee,0x000500ba,0x0000008b,0x000002f5,0x000002f3,0x000002f4,0x000500a7, + 0x0000008b,0x000002f6,0x000002f2,0x000002f5,0x0003003e,0x000002bf,0x000002f6,0x0004003d, + 0x0000008b,0x000002f7,0x000002bf,0x000300f7,0x000002f9,0x00000000,0x000400fa,0x000002f7, + 0x000002f8,0x000002f9,0x000200f8,0x000002f8,0x00040039,0x00000035,0x000002fb,0x00000037, + 0x0004006f,0x00000012,0x000002fc,0x000002fb,0x0005008e,0x00000012,0x000002fd,0x000002fc, + 0x000001c0,0x0006000c,0x00000006,0x000002fe,0x00000001,0x00000042,0x000002fd,0x0003003e, + 0x000002fa,0x000002fe,0x0004003d,0x00000006,0x00000301,0x000000b8,0x0003003e,0x00000300, + 0x00000301,0x0004003d,0x00000006,0x00000303,0x000002e8,0x0003003e,0x00000302,0x00000303, + 0x00060039,0x00000006,0x00000304,0x0000002b,0x00000300,0x00000302,0x0003003e,0x000002ff, + 0x00000304,0x0004003d,0x00000006,0x00000307,0x000002fa,0x00050085,0x00000006,0x00000308, + 0x00000306,0x00000307,0x0004003d,0x00000006,0x00000309,0x000002ff,0x00050085,0x00000006, + 0x0000030a,0x00000308,0x00000309,0x0003003e,0x00000305,0x0000030a,0x0004003d,0x00000006, + 0x0000030b,0x00000305,0x0004003d,0x00000006,0x0000030c,0x000002ee,0x00050088,0x00000006, + 0x0000030d,0x0000030b,0x0000030c,0x0003003e,0x0000030e,0x0000030d,0x00050039,0x00000006, + 0x0000030f,0x00000010,0x0000030e,0x0004003d,0x00000006,0x00000310,0x000002df,0x00050085, + 0x00000006,0x00000311,0x0000030f,0x00000310,0x0004003d,0x00000006,0x00000312,0x000002bc, + 0x00050081,0x00000006,0x00000313,0x00000312,0x00000311,0x0003003e,0x000002bc,0x00000313, + 0x0004003d,0x00000006,0x00000314,0x000002df,0x0004003d,0x00000006,0x00000315,0x000002bd, + 0x00050081,0x00000006,0x00000316,0x00000315,0x00000314,0x0003003e,0x000002bd,0x00000316, + 0x000200f9,0x000002f9,0x000200f8,0x000002f9,0x000200f9,0x000002e7,0x000200f8,0x000002e7, + 0x000200f9,0x000002de,0x000200f8,0x000002de,0x000200f9,0x000002c5,0x000200f8,0x000002c5, + 0x0004003d,0x00000022,0x00000317,0x000002c1,0x00050080,0x00000022,0x00000318,0x00000317, + 0x00000112,0x0003003e,0x000002c1,0x00000318,0x000200f9,0x000002c2,0x000200f8,0x000002c4, + 0x0004003d,0x0000008b,0x00000319,0x000002bf,0x0004003d,0x00000006,0x0000031a,0x000002bd, + 0x000500ba,0x0000008b,0x0000031b,0x0000031a,0x000000e2,0x000500a7,0x0000008b,0x0000031c, + 0x00000319,0x0000031b,0x000300f7,0x0000031f,0x00000000,0x000400fa,0x0000031c,0x0000031e, + 0x00000326,0x000200f8,0x0000031e,0x0004003d,0x00000006,0x00000320,0x000002bc,0x0004003d, + 0x00000006,0x00000321,0x000002bd,0x00050088,0x00000006,0x00000322,0x00000320,0x00000321, + 0x00050083,0x00000006,0x00000323,0x000000e3,0x00000322,0x0003003e,0x00000324,0x00000323, + 0x00050039,0x00000006,0x00000325,0x00000010,0x00000324,0x0003003e,0x0000031d,0x00000325, + 0x000200f9,0x0000031f,0x000200f8,0x00000326,0x0003003e,0x0000031d,0x000000e2,0x000200f9, + 0x0000031f,0x000200f8,0x0000031f,0x0004003d,0x00000006,0x00000327,0x0000031d,0x0003003e, + 0x000002bc,0x00000327,0x0004003d,0x00000006,0x00000328,0x000002bc,0x000200fe,0x00000328, + 0x00010038,0x00050036,0x00000006,0x000000be,0x00000000,0x000000b5,0x00030037,0x00000013, + 0x000000bb,0x00030037,0x00000013,0x000000bc,0x00030037,0x00000007,0x000000bd,0x000200f8, + 0x000000bf,0x0004003b,0x0000004d,0x0000032b,0x00000007,0x0004003b,0x00000007,0x00000333, + 0x00000007,0x0004003b,0x0000004d,0x00000334,0x00000007,0x0004003b,0x00000013,0x00000337, + 0x00000007,0x0004003b,0x0000004d,0x00000338,0x00000007,0x0004003b,0x00000007,0x0000033b, + 0x00000007,0x0004003b,0x00000013,0x0000033c,0x00000007,0x0004003b,0x00000007,0x0000033f, + 0x00000007,0x0004003b,0x00000013,0x00000340,0x00000007,0x0004003b,0x00000007,0x00000343, + 0x00000007,0x0004003b,0x00000007,0x00000349,0x00000007,0x0004003b,0x00000007,0x0000034a, + 0x00000007,0x0004003b,0x00000007,0x0000034d,0x00000007,0x0004003b,0x00000007,0x0000034e, + 0x00000007,0x0004003b,0x00000007,0x00000351,0x00000007,0x0004003b,0x00000007,0x00000355, + 0x00000007,0x0004003b,0x00000007,0x00000359,0x00000007,0x0004003b,0x00000007,0x0000035b, + 0x00000007,0x0004003b,0x00000007,0x0000035f,0x00000007,0x0004003d,0x00000012,0x0000032c, + 0x000000bb,0x0004003d,0x00000012,0x0000032d,0x000000bc,0x00050081,0x00000012,0x0000032e, + 0x0000032c,0x0000032d,0x00040039,0x00000035,0x0000032f,0x00000037,0x0004006f,0x00000012, + 0x00000330,0x0000032f,0x00050085,0x00000012,0x00000331,0x0000032e,0x00000330,0x0004006e, + 0x00000035,0x00000332,0x00000331,0x0003003e,0x0000032b,0x00000332,0x0004003d,0x00000035, + 0x00000335,0x0000032b,0x0003003e,0x00000334,0x00000335,0x00050039,0x00000006,0x00000336, + 0x00000072,0x00000334,0x0003003e,0x00000333,0x00000336,0x0004003d,0x00000035,0x00000339, + 0x0000032b,0x0003003e,0x00000338,0x00000339,0x00050039,0x00000012,0x0000033a,0x0000006f, + 0x00000338,0x0003003e,0x00000337,0x0000033a,0x0004003d,0x00000012,0x0000033d,0x00000337, + 0x0003003e,0x0000033c,0x0000033d,0x00050039,0x00000006,0x0000033e,0x00000084,0x0000033c, + 0x0003003e,0x0000033b,0x0000033e,0x0004003d,0x00000012,0x00000341,0x000000bc,0x0003003e, + 0x00000340,0x00000341,0x00050039,0x00000006,0x00000342,0x00000084,0x00000340,0x0003003e, + 0x0000033f,0x00000342,0x0004003d,0x00000012,0x00000344,0x000000bc,0x0006000c,0x00000006, + 0x00000345,0x00000001,0x00000042,0x00000344,0x0004003d,0x00000012,0x00000346,0x00000337, + 0x0006000c,0x00000006,0x00000347,0x00000001,0x00000042,0x00000346,0x0007000c,0x00000006, + 0x00000348,0x00000001,0x00000028,0x00000345,0x00000347,0x0003003e,0x00000343,0x00000348, + 0x0004003d,0x00000006,0x0000034b,0x00000333,0x0003003e,0x0000034a,0x0000034b,0x00050039, + 0x00000006,0x0000034c,0x000000a9,0x0000034a,0x0003003e,0x00000349,0x0000034c,0x0004003d, + 0x00000006,0x0000034f,0x000000bd,0x0003003e,0x0000034e,0x0000034f,0x00050039,0x00000006, + 0x00000350,0x000000a9,0x0000034e,0x0003003e,0x0000034d,0x00000350,0x0004003d,0x00000006, + 0x00000352,0x00000349,0x0004003d,0x00000006,0x00000353,0x0000034d,0x00060039,0x00000006, + 0x00000354,0x00000089,0x00000352,0x00000353,0x0003003e,0x00000351,0x00000354,0x0004003d, + 0x00000006,0x00000356,0x0000033f,0x00050088,0x00000006,0x00000358,0x00000356,0x00000357, + 0x0003003e,0x00000359,0x00000358,0x00050039,0x00000006,0x0000035a,0x00000010,0x00000359, + 0x0003003e,0x00000355,0x0000035a,0x0004003d,0x00000006,0x0000035c,0x0000033b,0x0004003d, + 0x00000006,0x0000035d,0x0000033f,0x00050088,0x00000006,0x0000035e,0x0000035c,0x0000035d, + 0x0003003e,0x0000035f,0x0000035e,0x00050039,0x00000006,0x00000360,0x00000010,0x0000035f, + 0x00050083,0x00000006,0x00000361,0x000000e3,0x00000360,0x0004003d,0x00000006,0x00000362, + 0x00000351,0x00050085,0x00000006,0x00000363,0x00000361,0x00000362,0x0004003d,0x00000006, + 0x00000364,0x00000355,0x00050085,0x00000006,0x00000365,0x00000363,0x00000364,0x0003003e, + 0x0000035b,0x00000365,0x0004003d,0x00000006,0x00000366,0x0000035b,0x000200fe,0x00000366, + 0x00010038,0x00050036,0x00000006,0x000000c3,0x00000000,0x000000c0,0x00030037,0x0000004d, + 0x000000c1,0x00030037,0x00000013,0x000000c2,0x000200f8,0x000000c4,0x0004003b,0x00000007, + 0x00000369,0x00000007,0x0004003b,0x00000023,0x0000036a,0x00000007,0x0004003b,0x00000023, + 0x00000373,0x00000007,0x0004003b,0x0000004d,0x0000037b,0x00000007,0x0004003b,0x0000004d, + 0x00000380,0x00000007,0x0004003b,0x0000004d,0x00000382,0x00000007,0x0004003b,0x0000004d, + 0x00000383,0x00000007,0x0004003b,0x0000004d,0x00000385,0x00000007,0x0004003b,0x00000007, + 0x00000388,0x00000007,0x0004003b,0x00000007,0x0000038a,0x00000007,0x0003003e,0x00000369, + 0x000000e2,0x0003003e,0x0000036a,0x0000036b,0x000200f9,0x0000036c,0x000200f8,0x0000036c, + 0x000400f6,0x0000036e,0x0000036f,0x00000000,0x000200f9,0x00000370,0x000200f8,0x00000370, + 0x0004003d,0x00000022,0x00000371,0x0000036a,0x000500b3,0x0000008b,0x00000372,0x00000371, + 0x00000112,0x000400fa,0x00000372,0x0000036d,0x0000036e,0x000200f8,0x0000036d,0x0003003e, + 0x00000373,0x0000036b,0x000200f9,0x00000374,0x000200f8,0x00000374,0x000400f6,0x00000376, + 0x00000377,0x00000000,0x000200f9,0x00000378,0x000200f8,0x00000378,0x0004003d,0x00000022, + 0x00000379,0x00000373,0x000500b3,0x0000008b,0x0000037a,0x00000379,0x00000112,0x000400fa, + 0x0000037a,0x00000375,0x00000376,0x000200f8,0x00000375,0x0004003d,0x00000022,0x0000037c, + 0x00000373,0x0004003d,0x00000022,0x0000037d,0x0000036a,0x00050050,0x00000035,0x0000037e, + 0x0000037c,0x0000037d,0x00040039,0x00000035,0x0000037f,0x00000037,0x0004003d,0x00000035, + 0x00000381,0x000000c1,0x0003003e,0x00000380,0x00000381,0x0003003e,0x00000382,0x0000037e, + 0x0003003e,0x00000383,0x0000037f,0x00070039,0x00000035,0x00000384,0x00000094,0x00000380, + 0x00000382,0x00000383,0x0003003e,0x0000037b,0x00000384,0x0004003d,0x00000035,0x00000386, + 0x0000037b,0x0003003e,0x00000385,0x00000386,0x00050039,0x00000006,0x00000387,0x00000050, + 0x00000385,0x0004003d,0x00000006,0x00000389,0x00000369,0x0003003e,0x00000388,0x00000389, + 0x0003003e,0x0000038a,0x00000387,0x00060039,0x00000006,0x0000038b,0x0000002b,0x00000388, + 0x0000038a,0x0003003e,0x00000369,0x0000038b,0x000200f9,0x00000377,0x000200f8,0x00000377, + 0x0004003d,0x00000022,0x0000038c,0x00000373,0x00050080,0x00000022,0x0000038d,0x0000038c, + 0x00000112,0x0003003e,0x00000373,0x0000038d,0x000200f9,0x00000374,0x000200f8,0x00000376, + 0x000200f9,0x0000036f,0x000200f8,0x0000036f,0x0004003d,0x00000022,0x0000038e,0x0000036a, + 0x00050080,0x00000022,0x0000038f,0x0000038e,0x00000112,0x0003003e,0x0000036a,0x0000038f, + 0x000200f9,0x0000036c,0x000200f8,0x0000036e,0x0004003d,0x00000006,0x00000390,0x00000369, + 0x000200fe,0x00000390,0x00010038,0x00050036,0x00000006,0x000000c7,0x00000000,0x000000c0, + 0x00030037,0x0000004d,0x000000c5,0x00030037,0x00000013,0x000000c6,0x000200f8,0x000000c8, + 0x0004003b,0x00000013,0x00000393,0x00000007,0x0004003b,0x00000013,0x00000396,0x00000007, + 0x0004003b,0x0000004d,0x00000398,0x00000007,0x0004003b,0x0000004d,0x00000399,0x00000007, + 0x0004003b,0x00000013,0x0000039b,0x00000007,0x00040039,0x00000035,0x00000394,0x00000037, + 0x00040039,0x00000035,0x00000395,0x00000052,0x0004003d,0x00000012,0x00000397,0x000000c6, + 0x0003003e,0x00000396,0x00000397,0x0003003e,0x00000398,0x00000394,0x0003003e,0x00000399, + 0x00000395,0x00070039,0x00000012,0x0000039a,0x0000009a,0x00000396,0x00000398,0x00000399, + 0x0003003e,0x00000393,0x0000039a,0x0004003d,0x00000012,0x0000039c,0x00000393,0x0003003e, + 0x0000039b,0x0000039c,0x00050039,0x00000006,0x0000039d,0x00000056,0x0000039b,0x000200fe, + 0x0000039d,0x00010038,0x00050036,0x00000006,0x000000ca,0x00000000,0x0000004e,0x00030037, + 0x0000004d,0x000000c9,0x000200f8,0x000000cb,0x0004003b,0x00000007,0x000003a0,0x00000007, + 0x0004003b,0x00000007,0x000003a2,0x00000007,0x0004003b,0x00000023,0x000003a3,0x00000007, + 0x0004003b,0x0000004d,0x000003ac,0x00000007,0x0004003b,0x0000004d,0x000003b7,0x00000007, + 0x0004003b,0x0000004d,0x000003b9,0x00000007,0x0004003b,0x000003ba,0x000003bb,0x00000007, + 0x0004003b,0x0000004d,0x000003be,0x00000007,0x0004003b,0x000003c1,0x000003c2,0x00000007, + 0x0004003b,0x0000004d,0x000003c4,0x00000007,0x0004003b,0x00000007,0x000003cb,0x00000007, + 0x0004003b,0x00000007,0x000003cd,0x00000007,0x0004003b,0x00000007,0x000003d2,0x00000007, + 0x0004003b,0x00000007,0x000003d4,0x00000007,0x0004003b,0x00000007,0x000003da,0x00000007, + 0x0004003b,0x00000007,0x000003db,0x00000007,0x0004003b,0x000003dc,0x000003dd,0x00000007, + 0x0004003b,0x00000023,0x000003de,0x00000007,0x0004003b,0x00000023,0x000003df,0x00000007, + 0x0004003b,0x00000007,0x000003e7,0x00000007,0x0004003b,0x00000007,0x000003fe,0x00000007, + 0x0004003b,0x00000007,0x00000400,0x00000007,0x0004003b,0x00000007,0x00000405,0x00000007, + 0x0004003b,0x00000007,0x00000407,0x00000007,0x0004003b,0x000002be,0x0000040f,0x00000007, + 0x0004003b,0x00000023,0x00000422,0x00000007,0x0004003b,0x00000433,0x00000434,0x00000007, + 0x0004003b,0x00000433,0x00000439,0x00000007,0x0003003e,0x000003a0,0x000003a1,0x0003003e, + 0x000003a2,0x000002f4,0x0003003e,0x000003a3,0x0000010c,0x000200f9,0x000003a4,0x000200f8, + 0x000003a4,0x000400f6,0x000003a6,0x000003a7,0x00000000,0x000200f9,0x000003a8,0x000200f8, + 0x000003a8,0x0004003d,0x00000022,0x000003a9,0x000003a3,0x000500b1,0x0000008b,0x000003ab, + 0x000003a9,0x000003aa,0x000400fa,0x000003ab,0x000003a5,0x000003a6,0x000200f8,0x000003a5, + 0x0004003d,0x00000022,0x000003b5,0x000003a3,0x00040039,0x00000035,0x000003b6,0x00000037, + 0x0004003d,0x00000035,0x000003b8,0x000000c9,0x0003003e,0x000003b7,0x000003b8,0x0003003e, + 0x000003bb,0x000003b4,0x00050041,0x0000004d,0x000003bc,0x000003bb,0x000003b5,0x0004003d, + 0x00000035,0x000003bd,0x000003bc,0x0003003e,0x000003b9,0x000003bd,0x0003003e,0x000003be, + 0x000003b6,0x00070039,0x00000035,0x000003bf,0x00000094,0x000003b7,0x000003b9,0x000003be, + 0x0003003e,0x000003ac,0x000003bf,0x0004003d,0x00000022,0x000003c3,0x000003a3,0x0004003d, + 0x00000035,0x000003c5,0x000003ac,0x0003003e,0x000003c4,0x000003c5,0x00050039,0x00000006, + 0x000003c6,0x00000064,0x000003c4,0x00040039,0x00000006,0x000003c7,0x00000074,0x00050085, + 0x00000006,0x000003c8,0x000003c6,0x000003c7,0x00050041,0x00000007,0x000003c9,0x000003c2, + 0x000003c3,0x0003003e,0x000003c9,0x000003c8,0x0004003d,0x00000022,0x000003ca,0x000003a3, + 0x0004003d,0x00000006,0x000003cc,0x000003a0,0x0003003e,0x000003cb,0x000003cc,0x00050041, + 0x00000007,0x000003ce,0x000003c2,0x000003ca,0x0004003d,0x00000006,0x000003cf,0x000003ce, + 0x0003003e,0x000003cd,0x000003cf,0x00060039,0x00000006,0x000003d0,0x0000001b,0x000003cb, + 0x000003cd,0x0003003e,0x000003a0,0x000003d0,0x0004003d,0x00000022,0x000003d1,0x000003a3, + 0x0004003d,0x00000006,0x000003d3,0x000003a2,0x0003003e,0x000003d2,0x000003d3,0x00050041, + 0x00000007,0x000003d5,0x000003c2,0x000003d1,0x0004003d,0x00000006,0x000003d6,0x000003d5, + 0x0003003e,0x000003d4,0x000003d6,0x00060039,0x00000006,0x000003d7,0x0000002b,0x000003d2, + 0x000003d4,0x0003003e,0x000003a2,0x000003d7,0x000200f9,0x000003a7,0x000200f8,0x000003a7, + 0x0004003d,0x00000022,0x000003d8,0x000003a3,0x00050080,0x00000022,0x000003d9,0x000003d8, + 0x00000112,0x0003003e,0x000003a3,0x000003d9,0x000200f9,0x000003a4,0x000200f8,0x000003a6, + 0x0003003e,0x000003da,0x000003a1,0x0003003e,0x000003db,0x000000e2,0x0003003e,0x000003dd, + 0x000001f0,0x0003003e,0x000003de,0x00000112,0x0003003e,0x000003df,0x00000112,0x000200f9, + 0x000003e0,0x000200f8,0x000003e0,0x000400f6,0x000003e2,0x000003e3,0x00000000,0x000200f9, + 0x000003e4,0x000200f8,0x000003e4,0x0004003d,0x00000022,0x000003e5,0x000003df,0x000500b1, + 0x0000008b,0x000003e6,0x000003e5,0x000003aa,0x000400fa,0x000003e6,0x000003e1,0x000003e2, + 0x000200f8,0x000003e1,0x0004003d,0x00000022,0x000003e8,0x000003df,0x00050041,0x00000007, + 0x000003e9,0x000003c2,0x000003e8,0x0004003d,0x00000006,0x000003ea,0x000003e9,0x00050041, + 0x00000007,0x000003eb,0x000003c2,0x0000010c,0x0004003d,0x00000006,0x000003ec,0x000003eb, + 0x00050083,0x00000006,0x000003ed,0x000003ea,0x000003ec,0x0006000c,0x00000006,0x000003ee, + 0x00000001,0x00000004,0x000003ed,0x0004003d,0x00000006,0x000003ef,0x000003a2,0x0004003d, + 0x00000006,0x000003f0,0x000003a0,0x00050083,0x00000006,0x000003f1,0x000003ef,0x000003f0, + 0x00050088,0x00000006,0x000003f2,0x000003ee,0x000003f1,0x0003003e,0x000003e7,0x000003f2, + 0x0004003d,0x00000006,0x000003f3,0x000003e7,0x000500b8,0x0000008b,0x000003f5,0x000003f3, + 0x000003f4,0x000300f7,0x000003f7,0x00000000,0x000400fa,0x000003f5,0x000003f6,0x000003fc, + 0x000200f8,0x000003f6,0x0004003d,0x00000022,0x000003f8,0x000003de,0x000500c4,0x000000ab, + 0x000003f9,0x000001f0,0x000003f8,0x0004003d,0x000000ab,0x000003fa,0x000003dd,0x000500c5, + 0x000000ab,0x000003fb,0x000003fa,0x000003f9,0x0003003e,0x000003dd,0x000003fb,0x000200f9, + 0x000003f7,0x000200f8,0x000003fc,0x0004003d,0x00000022,0x000003fd,0x000003df,0x0004003d, + 0x00000006,0x000003ff,0x000003da,0x0003003e,0x000003fe,0x000003ff,0x00050041,0x00000007, + 0x00000401,0x000003c2,0x000003fd,0x0004003d,0x00000006,0x00000402,0x00000401,0x0003003e, + 0x00000400,0x00000402,0x00060039,0x00000006,0x00000403,0x0000001b,0x000003fe,0x00000400, + 0x0003003e,0x000003da,0x00000403,0x0004003d,0x00000022,0x00000404,0x000003df,0x0004003d, + 0x00000006,0x00000406,0x000003db,0x0003003e,0x00000405,0x00000406,0x00050041,0x00000007, + 0x00000408,0x000003c2,0x00000404,0x0004003d,0x00000006,0x00000409,0x00000408,0x0003003e, + 0x00000407,0x00000409,0x00060039,0x00000006,0x0000040a,0x0000002b,0x00000405,0x00000407, + 0x0003003e,0x000003db,0x0000040a,0x000200f9,0x000003f7,0x000200f8,0x000003f7,0x000200f9, + 0x000003e3,0x000200f8,0x000003e3,0x0004003d,0x00000022,0x0000040b,0x000003df,0x00050080, + 0x00000022,0x0000040c,0x0000040b,0x00000112,0x0003003e,0x000003df,0x0000040c,0x0004003d, + 0x00000022,0x0000040d,0x000003de,0x00050080,0x00000022,0x0000040e,0x0000040d,0x00000112, + 0x0003003e,0x000003de,0x0000040e,0x000200f9,0x000003e0,0x000200f8,0x000003e2,0x00050041, + 0x00000007,0x00000410,0x000003c2,0x0000010c,0x0004003d,0x00000006,0x00000411,0x00000410, + 0x0004003d,0x00000006,0x00000412,0x000003db,0x000500ba,0x0000008b,0x00000413,0x00000411, + 0x00000412,0x000400a8,0x0000008b,0x00000414,0x00000413,0x000300f7,0x00000416,0x00000000, + 0x000400fa,0x00000414,0x00000415,0x00000416,0x000200f8,0x00000415,0x00050041,0x00000007, + 0x00000417,0x000003c2,0x0000010c,0x0004003d,0x00000006,0x00000418,0x00000417,0x0004003d, + 0x00000006,0x00000419,0x000003da,0x000500b8,0x0000008b,0x0000041a,0x00000418,0x00000419, + 0x000200f9,0x00000416,0x000200f8,0x00000416,0x000700f5,0x0000008b,0x0000041b,0x00000413, + 0x000003e2,0x0000041a,0x00000415,0x0003003e,0x0000040f,0x0000041b,0x0004003d,0x0000008b, + 0x0000041d,0x0000040f,0x000500a4,0x0000008b,0x0000041e,0x0000041c,0x0000041d,0x000300f7, + 0x00000420,0x00000000,0x000400fa,0x0000041e,0x0000041f,0x00000420,0x000200f8,0x0000041f, + 0x000200fe,0x000000e2,0x000200f8,0x00000420,0x0003003e,0x00000422,0x0000010c,0x000200f9, + 0x00000423,0x000200f8,0x00000423,0x000400f6,0x00000425,0x00000426,0x00000000,0x000200f9, + 0x00000427,0x000200f8,0x00000427,0x0004003d,0x00000022,0x00000428,0x00000422,0x0004007c, + 0x000000ab,0x00000429,0x00000428,0x000500b0,0x0000008b,0x0000042a,0x00000429,0x000000ac, + 0x000400fa,0x0000042a,0x00000424,0x00000425,0x000200f8,0x00000424,0x0004003d,0x000000ab, + 0x0000042b,0x000003dd,0x0004003d,0x00000022,0x00000432,0x00000422,0x0003003e,0x00000434, + 0x00000431,0x00050041,0x000003dc,0x00000435,0x00000434,0x00000432,0x0004003d,0x000000ab, + 0x00000436,0x00000435,0x000500c7,0x000000ab,0x00000437,0x0000042b,0x00000436,0x0004003d, + 0x00000022,0x00000438,0x00000422,0x0003003e,0x00000439,0x00000431,0x00050041,0x000003dc, + 0x0000043a,0x00000439,0x00000438,0x0004003d,0x000000ab,0x0000043b,0x0000043a,0x000500aa, + 0x0000008b,0x0000043c,0x00000437,0x0000043b,0x000300f7,0x0000043e,0x00000000,0x000400fa, + 0x0000043c,0x0000043d,0x0000043e,0x000200f8,0x0000043d,0x000200fe,0x000000e2,0x000200f8, + 0x0000043e,0x000200f9,0x00000426,0x000200f8,0x00000426,0x0004003d,0x00000022,0x00000440, + 0x00000422,0x00050080,0x00000022,0x00000441,0x00000440,0x00000112,0x0003003e,0x00000422, + 0x00000441,0x000200f9,0x00000423,0x000200f8,0x00000425,0x0004003d,0x00000006,0x00000442, + 0x000003a0,0x0004003d,0x00000006,0x00000443,0x000003a2,0x00050088,0x00000006,0x00000444, + 0x00000442,0x00000443,0x00050083,0x00000006,0x00000445,0x000000e3,0x00000444,0x000200fe, + 0x00000445,0x00010038,0x00050036,0x00000006,0x000000d2,0x00000000,0x000000cc,0x00030037, + 0x0000004d,0x000000cd,0x00030037,0x00000013,0x000000ce,0x00030037,0x00000013,0x000000cf, + 0x00030037,0x00000007,0x000000d0,0x00030037,0x00000007,0x000000d1,0x000200f8,0x000000d3, + 0x0004003b,0x00000013,0x00000448,0x00000007,0x0004003b,0x00000007,0x0000044c,0x00000007, + 0x0004003b,0x00000013,0x0000044d,0x00000007,0x0004003b,0x00000013,0x00000452,0x00000007, + 0x0004003b,0x00000013,0x00000455,0x00000007,0x0004003b,0x0000004d,0x00000457,0x00000007, + 0x0004003b,0x0000004d,0x00000458,0x00000007,0x0004003b,0x00000013,0x0000045a,0x00000007, + 0x0004003b,0x00000007,0x0000045d,0x00000007,0x0004003b,0x00000007,0x0000045f,0x00000007, + 0x0004003b,0x00000007,0x00000461,0x00000007,0x0004003b,0x00000007,0x00000463,0x00000007, + 0x0004003b,0x00000007,0x00000464,0x00000007,0x0004003b,0x00000007,0x00000467,0x00000007, + 0x0004003b,0x00000007,0x00000469,0x00000007,0x0004003b,0x00000007,0x0000046b,0x00000007, + 0x0004003b,0x00000007,0x0000046e,0x00000007,0x0004003b,0x00000007,0x00000470,0x00000007, + 0x0004003b,0x00000007,0x00000471,0x00000007,0x0004003b,0x00000007,0x0000047b,0x00000007, + 0x0004003b,0x00000007,0x0000047f,0x00000007,0x0004003b,0x0000004d,0x00000481,0x00000007, + 0x0004003b,0x00000007,0x00000483,0x00000007,0x0004003d,0x00000012,0x00000449,0x000000ce, + 0x0004003d,0x00000012,0x0000044a,0x000000cf,0x00050081,0x00000012,0x0000044b,0x00000449, + 0x0000044a,0x0003003e,0x00000448,0x0000044b,0x0003003e,0x0000044c,0x000000e2,0x0004003d, + 0x00000012,0x0000044e,0x00000448,0x0003003e,0x0000044d,0x0000044e,0x00050039,0x0000008b, + 0x0000044f,0x0000008e,0x0000044d,0x000300f7,0x00000451,0x00000000,0x000400fa,0x0000044f, + 0x00000450,0x00000451,0x000200f8,0x00000450,0x00040039,0x00000035,0x00000453,0x00000039, + 0x00040039,0x00000035,0x00000454,0x0000003b,0x0004003d,0x00000012,0x00000456,0x00000448, + 0x0003003e,0x00000455,0x00000456,0x0003003e,0x00000457,0x00000453,0x0003003e,0x00000458, + 0x00000454,0x00070039,0x00000012,0x00000459,0x0000009a,0x00000455,0x00000457,0x00000458, + 0x0003003e,0x00000452,0x00000459,0x0004003d,0x00000012,0x0000045b,0x00000452,0x0003003e, + 0x0000045a,0x0000045b,0x00050039,0x00000006,0x0000045c,0x00000059,0x0000045a,0x0003003e, + 0x0000045d,0x0000045c,0x00050039,0x00000006,0x0000045e,0x00000010,0x0000045d,0x0003003e, + 0x0000044c,0x0000045e,0x000200f9,0x00000451,0x000200f8,0x00000451,0x00040039,0x00000006, + 0x00000460,0x00000049,0x0003003e,0x0000045f,0x00000460,0x0004003d,0x00000006,0x00000462, + 0x0000044c,0x0003003e,0x00000461,0x00000462,0x0003003e,0x00000463,0x000000e2,0x0004003d, + 0x00000006,0x00000465,0x000000d1,0x0003003e,0x00000464,0x00000465,0x00070039,0x00000006, + 0x00000466,0x0000000c,0x00000461,0x00000463,0x00000464,0x0003003e,0x0000044c,0x00000466, + 0x00040039,0x00000006,0x00000468,0x0000004b,0x0003003e,0x00000467,0x00000468,0x0004003d, + 0x00000006,0x0000046a,0x00000467,0x0003003e,0x00000469,0x0000046a,0x0004003d,0x00000006, + 0x0000046c,0x0000044c,0x0003003e,0x0000046b,0x0000046c,0x00060039,0x00000006,0x0000046d, + 0x0000001b,0x00000469,0x0000046b,0x0004003d,0x00000006,0x0000046f,0x0000044c,0x0003003e, + 0x0000046e,0x0000046f,0x0003003e,0x00000470,0x0000046d,0x0004003d,0x00000006,0x00000472, + 0x000000d0,0x0003003e,0x00000471,0x00000472,0x00070039,0x00000006,0x00000473,0x0000000c, + 0x0000046e,0x00000470,0x00000471,0x0003003e,0x0000044c,0x00000473,0x0004003d,0x00000006, + 0x00000474,0x0000044c,0x00050085,0x00000006,0x00000475,0x00000474,0x000001b4,0x0006000c, + 0x00000006,0x00000476,0x00000001,0x00000001,0x00000475,0x000500ba,0x0000008b,0x00000477, + 0x00000476,0x000000e3,0x000600a9,0x00000006,0x00000478,0x00000477,0x000000e3,0x000000e2, + 0x0004003d,0x00000006,0x00000479,0x0000044c,0x00050085,0x00000006,0x0000047a,0x00000479, + 0x00000478,0x0003003e,0x0000044c,0x0000047a,0x0004003d,0x00000006,0x0000047c,0x0000044c, + 0x0004003d,0x00000006,0x0000047d,0x0000045f,0x00050081,0x00000006,0x0000047e,0x0000047c, + 0x0000047d,0x0003003e,0x0000047f,0x0000047e,0x00050039,0x00000006,0x00000480,0x00000010, + 0x0000047f,0x0003003e,0x0000047b,0x00000480,0x0004003d,0x00000035,0x00000482,0x000000cd, + 0x0003003e,0x00000481,0x00000482,0x0004003d,0x00000006,0x00000484,0x0000047b,0x0003003e, + 0x00000483,0x00000484,0x00060039,0x00000002,0x00000485,0x0000005e,0x00000481,0x00000483, + 0x0004003d,0x00000006,0x00000486,0x0000044c,0x000200fe,0x00000486,0x00010038,0x00050036, + 0x00000006,0x000000d5,0x00000000,0x00000054,0x00030037,0x00000013,0x000000d4,0x000200f8, + 0x000000d6,0x0004003b,0x00000013,0x00000489,0x00000007,0x0004003b,0x00000013,0x00000492, + 0x00000007,0x0004003b,0x0000004d,0x00000493,0x00000007,0x0004003b,0x0000004d,0x00000494, + 0x00000007,0x0004003b,0x00000007,0x00000496,0x00000007,0x0004003b,0x00000013,0x00000497, + 0x00000007,0x0004003b,0x00000007,0x0000049a,0x00000007,0x0004003d,0x00000012,0x0000048a, + 0x000000d4,0x00040039,0x00000012,0x0000048b,0x00000040,0x00040039,0x00000035,0x0000048c, + 0x00000037,0x0004006f,0x00000012,0x0000048d,0x0000048c,0x00050088,0x00000012,0x0000048e, + 0x0000048b,0x0000048d,0x00050083,0x00000012,0x0000048f,0x0000048a,0x0000048e,0x00040039, + 0x00000035,0x00000490,0x0000007f,0x00040039,0x00000035,0x00000491,0x00000081,0x0003003e, + 0x00000492,0x0000048f,0x0003003e,0x00000493,0x00000490,0x0003003e,0x00000494,0x00000491, + 0x00070039,0x00000012,0x00000495,0x0000009a,0x00000492,0x00000493,0x00000494,0x0003003e, + 0x00000489,0x00000495,0x0004003d,0x00000012,0x00000498,0x00000489,0x0003003e,0x00000497, + 0x00000498,0x00050039,0x00000006,0x00000499,0x00000061,0x00000497,0x0003003e,0x0000049a, + 0x00000499,0x00050039,0x00000006,0x0000049b,0x00000010,0x0000049a,0x0003003e,0x00000496, + 0x0000049b,0x0004003d,0x00000006,0x0000049c,0x00000496,0x000200fe,0x0000049c,0x00010038, + 0x00050036,0x00000002,0x000000d9,0x00000000,0x000000d7,0x00030037,0x0000004d,0x000000d8, + 0x000200f8,0x000000da,0x0004003b,0x00000013,0x0000049f,0x00000007,0x0004003b,0x00000013, + 0x000004a7,0x00000007,0x0004003b,0x0000004d,0x000004a8,0x00000007,0x0004003b,0x00000007, + 0x000004ab,0x00000007,0x0004003b,0x00000013,0x000004ac,0x00000007,0x0004003b,0x00000013, + 0x000004af,0x00000007,0x0004003b,0x00000007,0x000004b3,0x00000007,0x0004003b,0x0000004d, + 0x000004b4,0x00000007,0x0004003b,0x00000007,0x000004b7,0x00000007,0x0004003b,0x00000007, + 0x000004b8,0x00000007,0x0004003b,0x00000007,0x000004bb,0x00000007,0x0004003b,0x00000007, + 0x000004bc,0x00000007,0x0004003b,0x00000013,0x000004bf,0x00000007,0x0004003b,0x00000013, + 0x000004c1,0x00000007,0x0004003b,0x00000007,0x000004c3,0x00000007,0x0004003b,0x00000007, + 0x000004c5,0x00000007,0x0004003b,0x0000004d,0x000004c6,0x00000007,0x0004003b,0x00000013, + 0x000004c8,0x00000007,0x0004003b,0x00000013,0x000004cb,0x00000007,0x0004003b,0x00000007, + 0x000004ce,0x00000007,0x0004003b,0x00000007,0x000004cf,0x00000007,0x0004003b,0x00000007, + 0x000004d1,0x00000007,0x0004003b,0x00000013,0x000004d2,0x00000007,0x0004003b,0x00000013, + 0x000004d4,0x00000007,0x0004003b,0x00000007,0x000004d6,0x00000007,0x0004003b,0x00000007, + 0x000004d9,0x00000007,0x0004003b,0x0000004d,0x000004da,0x00000007,0x0004003b,0x00000013, + 0x000004dc,0x00000007,0x0004003b,0x00000007,0x000004df,0x00000007,0x0004003b,0x00000007, + 0x000004e0,0x00000007,0x0004003b,0x00000007,0x000004e2,0x00000007,0x0004003b,0x00000007, + 0x000004e5,0x00000007,0x0004003b,0x0000004d,0x000004e6,0x00000007,0x0004003b,0x00000013, + 0x000004e8,0x00000007,0x0004003b,0x00000013,0x000004ea,0x00000007,0x0004003b,0x00000007, + 0x000004ec,0x00000007,0x0004003b,0x00000007,0x000004ee,0x00000007,0x0004003b,0x00000076, + 0x000004f1,0x00000007,0x0004003b,0x0000004d,0x000004fc,0x00000007,0x0004003b,0x00000076, + 0x000004fe,0x00000007,0x0004003b,0x00000007,0x00000501,0x00000007,0x0004003b,0x0000004d, + 0x00000502,0x00000007,0x0004003b,0x0000004d,0x0000050b,0x00000007,0x0004003b,0x0000004d, + 0x0000050d,0x00000007,0x0004003b,0x00000007,0x0000050e,0x00000007,0x0004003d,0x00000035, + 0x000004a0,0x000000d8,0x0004006f,0x00000012,0x000004a1,0x000004a0,0x00050050,0x00000012, + 0x000004a2,0x000001c0,0x000001c0,0x00050081,0x00000012,0x000004a3,0x000004a1,0x000004a2, + 0x00040039,0x00000035,0x000004a4,0x00000037,0x0004006f,0x00000012,0x000004a5,0x000004a4, + 0x00050088,0x00000012,0x000004a6,0x000004a3,0x000004a5,0x0003003e,0x0000049f,0x000004a6, + 0x0004003d,0x00000035,0x000004a9,0x000000d8,0x0003003e,0x000004a8,0x000004a9,0x00050039, + 0x00000012,0x000004aa,0x0000006f,0x000004a8,0x0003003e,0x000004a7,0x000004aa,0x0004003d, + 0x00000012,0x000004ad,0x000004a7,0x0003003e,0x000004ac,0x000004ad,0x00050039,0x00000006, + 0x000004ae,0x00000084,0x000004ac,0x0003003e,0x000004ab,0x000004ae,0x0004003d,0x00000012, + 0x000004b0,0x0000049f,0x0004003d,0x00000012,0x000004b1,0x000004a7,0x00050081,0x00000012, + 0x000004b2,0x000004b0,0x000004b1,0x0003003e,0x000004af,0x000004b2,0x0004003d,0x00000035, + 0x000004b5,0x000000d8,0x0003003e,0x000004b4,0x000004b5,0x00050039,0x00000006,0x000004b6, + 0x00000072,0x000004b4,0x0003003e,0x000004b3,0x000004b6,0x0004003d,0x00000006,0x000004b9, + 0x000004b3,0x0003003e,0x000004b8,0x000004b9,0x00050039,0x00000006,0x000004ba,0x000000a9, + 0x000004b8,0x0003003e,0x000004b7,0x000004ba,0x0004003d,0x00000006,0x000004bd,0x000004b3, + 0x0003003e,0x000004bc,0x000004bd,0x00050039,0x00000006,0x000004be,0x000000a6,0x000004bc, + 0x0004003d,0x00000012,0x000004c0,0x0000049f,0x0003003e,0x000004bf,0x000004c0,0x0004003d, + 0x00000012,0x000004c2,0x000004a7,0x0003003e,0x000004c1,0x000004c2,0x0003003e,0x000004c3, + 0x000004be,0x00070039,0x00000006,0x000004c4,0x000000b9,0x000004bf,0x000004c1,0x000004c3, + 0x0003003e,0x000004bb,0x000004c4,0x0004003d,0x00000035,0x000004c7,0x000000d8,0x0003003e, + 0x000004c6,0x000004c7,0x0004003d,0x00000012,0x000004c9,0x0000049f,0x0003003e,0x000004c8, + 0x000004c9,0x00060039,0x00000006,0x000004ca,0x000000c3,0x000004c6,0x000004c8,0x0004003d, + 0x00000012,0x000004cc,0x0000049f,0x0003003e,0x000004cb,0x000004cc,0x00050039,0x00000006, + 0x000004cd,0x000000d5,0x000004cb,0x0003003e,0x000004ce,0x000004ca,0x0003003e,0x000004cf, + 0x000004cd,0x00060039,0x00000006,0x000004d0,0x0000002b,0x000004ce,0x000004cf,0x0003003e, + 0x000004c5,0x000004d0,0x0004003d,0x00000012,0x000004d3,0x0000049f,0x0003003e,0x000004d2, + 0x000004d3,0x0004003d,0x00000012,0x000004d5,0x000004a7,0x0003003e,0x000004d4,0x000004d5, + 0x0004003d,0x00000006,0x000004d7,0x000004b3,0x0003003e,0x000004d6,0x000004d7,0x00070039, + 0x00000006,0x000004d8,0x000000be,0x000004d2,0x000004d4,0x000004d6,0x0003003e,0x000004d1, + 0x000004d8,0x0004003d,0x00000035,0x000004db,0x000000d8,0x0003003e,0x000004da,0x000004db, + 0x0004003d,0x00000012,0x000004dd,0x0000049f,0x0003003e,0x000004dc,0x000004dd,0x00060039, + 0x00000006,0x000004de,0x000000c7,0x000004da,0x000004dc,0x0003003e,0x000004d9,0x000004de, + 0x0004003d,0x00000006,0x000004e1,0x000004d1,0x0003003e,0x000004e0,0x000004e1,0x0004003d, + 0x00000006,0x000004e3,0x000004d9,0x0003003e,0x000004e2,0x000004e3,0x00060039,0x00000006, + 0x000004e4,0x0000002b,0x000004e0,0x000004e2,0x0003003e,0x000004df,0x000004e4,0x0004003d, + 0x00000035,0x000004e7,0x000000d8,0x0003003e,0x000004e6,0x000004e7,0x0004003d,0x00000012, + 0x000004e9,0x0000049f,0x0003003e,0x000004e8,0x000004e9,0x0004003d,0x00000012,0x000004eb, + 0x000004a7,0x0003003e,0x000004ea,0x000004eb,0x0004003d,0x00000006,0x000004ed,0x000004bb, + 0x0003003e,0x000004ec,0x000004ed,0x0004003d,0x00000006,0x000004ef,0x000004c5,0x0003003e, + 0x000004ee,0x000004ef,0x00090039,0x00000006,0x000004f0,0x000000d2,0x000004e6,0x000004e8, + 0x000004ea,0x000004ec,0x000004ee,0x0003003e,0x000004e5,0x000004f0,0x0004003d,0x00000006, + 0x000004f2,0x000004df,0x00050041,0x00000007,0x000004f3,0x000004f1,0x00000143,0x0003003e, + 0x000004f3,0x000004f2,0x0004003d,0x00000006,0x000004f4,0x000004bb,0x00050041,0x00000007, + 0x000004f5,0x000004f1,0x000001f0,0x0003003e,0x000004f5,0x000004f4,0x0004003d,0x00000006, + 0x000004f6,0x000004c5,0x00050041,0x00000007,0x000004f8,0x000004f1,0x000004f7,0x0003003e, + 0x000004f8,0x000004f6,0x0004003d,0x00000006,0x000004f9,0x000004e5,0x00050041,0x00000007, + 0x000004fb,0x000004f1,0x000004fa,0x0003003e,0x000004fb,0x000004f9,0x0004003d,0x00000035, + 0x000004fd,0x000000d8,0x0003003e,0x000004fc,0x000004fd,0x0004003d,0x00000042,0x000004ff, + 0x000004f1,0x0003003e,0x000004fe,0x000004ff,0x00060039,0x00000002,0x00000500,0x0000007a, + 0x000004fc,0x000004fe,0x0004003d,0x00000035,0x00000503,0x000000d8,0x0003003e,0x00000502, + 0x00000503,0x00050039,0x00000006,0x00000504,0x000000ca,0x00000502,0x0003003e,0x00000501, + 0x00000504,0x0004003d,0x00000006,0x00000505,0x00000501,0x000500ba,0x0000008b,0x00000507, + 0x00000505,0x00000506,0x000300f7,0x00000509,0x00000000,0x000400fa,0x00000507,0x00000508, + 0x00000509,0x000200f8,0x00000508,0x0004003d,0x00000035,0x0000050a,0x000000d8,0x0003003e, + 0x0000050b,0x0000050a,0x00050039,0x00000035,0x0000050c,0x000000a3,0x0000050b,0x0003003e, + 0x0000050d,0x0000050c,0x0004003d,0x00000006,0x0000050f,0x00000501,0x0003003e,0x0000050e, + 0x0000050f,0x00060039,0x00000002,0x00000510,0x00000068,0x0000050d,0x0000050e,0x000200f9, + 0x00000509,0x000200f8,0x00000509,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_rcas_comp_spv.h b/gpu/vk/shaders/fsr3_rcas_comp_spv.h new file mode 100644 index 000000000..90f455760 --- /dev/null +++ b/gpu/vk/shaders/fsr3_rcas_comp_spv.h @@ -0,0 +1,694 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_RCAS_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x0000033d,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000038,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, + 0x00000000,0x00000001,0x0008000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000031e, + 0x0000031f,0x00000320,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001, + 0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265, + 0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47, + 0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63, + 0x00736570,0x000a0004,0x455f4c47,0x735f5458,0x65646168,0x6d695f72,0x5f656761,0x64616f6c, + 0x726f665f,0x7474616d,0x00006465,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70, + 0x5f656c79,0x656e696c,0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f, + 0x6e695f45,0x64756c63,0x69645f65,0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d, + 0x00000000,0x00060005,0x0000000b,0x41786666,0x6f6c4673,0x75287461,0x00003b31,0x00030005, + 0x0000000a,0x00000078,0x00060005,0x00000010,0x41786666,0x6e495573,0x28323374,0x003b3166, + 0x00030005,0x0000000f,0x00000078,0x000a0005,0x00000016,0x42786666,0x69667469,0x45646c65, + 0x61727478,0x75287463,0x31753b31,0x3b31753b,0x00000000,0x00030005,0x00000013,0x00637273, + 0x00030005,0x00000014,0x0066666f,0x00040005,0x00000015,0x73746962,0x00000000,0x000a0005, + 0x0000001b,0x42786666,0x69667469,0x49646c65,0x7265736e,0x73614d74,0x3175286b,0x3b31753b, + 0x003b3175,0x00030005,0x00000018,0x00637273,0x00030005,0x00000019,0x00736e69,0x00040005, + 0x0000001a,0x73746962,0x00000000,0x00070005,0x00000021,0x4d786666,0x28337861,0x663b3166, + 0x31663b31,0x0000003b,0x00030005,0x0000001e,0x00000078,0x00030005,0x0000001f,0x00000079, + 0x00030005,0x00000020,0x0000007a,0x00070005,0x00000026,0x4d786666,0x28336e69,0x663b3166, + 0x31663b31,0x0000003b,0x00030005,0x00000023,0x00000078,0x00030005,0x00000024,0x00000079, + 0x00030005,0x00000025,0x0000007a,0x00070005,0x0000002a,0x52786666,0x70696365,0x61636f72, + 0x3166286c,0x0000003b,0x00030005,0x00000029,0x00000078,0x00060005,0x0000002d,0x53786666, + 0x72757461,0x28657461,0x003b3166,0x00030005,0x0000002c,0x00000078,0x00060005,0x00000032, + 0x4d786666,0x66286e69,0x31663b31,0x0000003b,0x00030005,0x00000030,0x00000078,0x00030005, + 0x00000031,0x00000079,0x000b0005,0x00000035,0x41786666,0x6f727070,0x616d6978,0x65526574, + 0x72706963,0x6c61636f,0x6964654d,0x66286d75,0x00003b31,0x00040005,0x00000034,0x756c6176, + 0x00000065,0x00070005,0x0000003a,0x52786666,0x70616d65,0x51726f46,0x28646175,0x003b3175, + 0x00030005,0x00000039,0x00000061,0x00050005,0x0000003e,0x53414352,0x666e6f43,0x00286769, + 0x00070005,0x00000046,0x64616f4c,0x53414352,0x706e495f,0x76287475,0x003b3269,0x00040005, + 0x00000045,0x50785069,0x0000736f,0x000a0005,0x0000004d,0x726f7453,0x73705565,0x656c6163, + 0x74754f64,0x28747570,0x3b326976,0x3b336676,0x00000000,0x00040005,0x0000004b,0x50785069, + 0x0000736f,0x00040005,0x0000004c,0x6c6f4366,0x0000726f,0x00050005,0x00000050,0x6f707845, + 0x65727573,0x00000028,0x000a0005,0x00000056,0x74697257,0x73705565,0x656c6163,0x74754f64, + 0x28747570,0x3b327576,0x3b336676,0x00000000,0x00050005,0x00000054,0x48785069,0x736f5072, + 0x00000000,0x00060005,0x00000055,0x73705566,0x656c6163,0x6c6f4364,0x0000726f,0x00070005, + 0x00000059,0x52727346,0x4c736163,0x4664616f,0x32697628,0x0000003b,0x00030005,0x00000058, + 0x00000070,0x00080005,0x0000005f,0x52727346,0x49736163,0x7475706e,0x31662846,0x3b31663b, + 0x003b3166,0x00030005,0x0000005c,0x00000072,0x00030005,0x0000005d,0x00000067,0x00030005, + 0x0000005e,0x00000062,0x00090005,0x00000068,0x52727346,0x46736163,0x3b316628,0x663b3166, + 0x75763b31,0x75763b32,0x00003b34,0x00040005,0x00000063,0x52786970,0x00000000,0x00040005, + 0x00000064,0x47786970,0x00000000,0x00040005,0x00000065,0x42786970,0x00000000,0x00030005, + 0x00000066,0x00007069,0x00030005,0x00000067,0x006e6f63,0x00060005,0x0000006c,0x72727543, + 0x746c6946,0x76287265,0x003b3275,0x00030005,0x0000006b,0x00736f70,0x00070005,0x00000074, + 0x53414352,0x33757628,0x3375763b,0x3375763b,0x0000003b,0x00060005,0x00000071,0x61636f4c, + 0x7268546c,0x49646165,0x00000064,0x00050005,0x00000072,0x6b726f57,0x756f7247,0x00644970, + 0x00040005,0x00000073,0x64697444,0x00000000,0x00030005,0x000000ab,0x00000062,0x00040005, + 0x000000ad,0x61726170,0x0000006d,0x00040005,0x000000b1,0x61726170,0x0000006d,0x00040005, + 0x000000bf,0x61726170,0x0000006d,0x00040005,0x000000c1,0x61726170,0x0000006d,0x00040005, + 0x000000c2,0x61726170,0x0000006d,0x00040005,0x000000c4,0x61726170,0x0000006d,0x00040005, + 0x000000c6,0x61726170,0x0000006d,0x00040005,0x000000c7,0x61726170,0x0000006d,0x00040005, + 0x000000c9,0x61726170,0x0000006d,0x00040005,0x000000ca,0x61726170,0x0000006d,0x00040005, + 0x000000cc,0x61726170,0x0000006d,0x00050005,0x000000d1,0x43526263,0x745f5341,0x00000000, + 0x00060006,0x000000d1,0x00000000,0x73616372,0x666e6f43,0x00006769,0x00040005,0x000000d3, + 0x43526263,0x00005341,0x00060005,0x000000db,0x63725f72,0x695f7361,0x7475706e,0x00000000, + 0x00070005,0x000000e3,0x755f7772,0x61637370,0x5f64656c,0x7074756f,0x00007475,0x00050005, + 0x000000eb,0x6f707865,0x65727573,0x00000000,0x00070005,0x000000ec,0x6e695f72,0x5f747570, + 0x6f707865,0x65727573,0x00000000,0x00040005,0x000000fc,0x61726170,0x0000006d,0x00040005, + 0x000000fd,0x61726170,0x0000006d,0x00040005,0x00000101,0x6c6f4366,0x0000726f,0x00040005, + 0x00000102,0x61726170,0x0000006d,0x00030005,0x00000113,0x00007073,0x00030005,0x00000116, + 0x00000062,0x00040005,0x0000011b,0x61726170,0x0000006d,0x00030005,0x0000011e,0x00000064, + 0x00040005,0x00000122,0x61726170,0x0000006d,0x00030005,0x00000125,0x00000065,0x00040005, + 0x00000126,0x61726170,0x0000006d,0x00030005,0x0000012a,0x00000066,0x00040005,0x0000012f, + 0x61726170,0x0000006d,0x00030005,0x00000132,0x00000068,0x00040005,0x00000136,0x61726170, + 0x0000006d,0x00030005,0x00000139,0x00005262,0x00030005,0x0000013c,0x00004762,0x00030005, + 0x0000013f,0x00004262,0x00030005,0x00000142,0x00005264,0x00030005,0x00000145,0x00004764, + 0x00030005,0x00000148,0x00004264,0x00030005,0x0000014b,0x00005265,0x00030005,0x0000014e, + 0x00004765,0x00030005,0x00000151,0x00004265,0x00030005,0x00000154,0x00005266,0x00030005, + 0x00000157,0x00004766,0x00030005,0x0000015a,0x00004266,0x00030005,0x0000015d,0x00005268, + 0x00030005,0x00000160,0x00004768,0x00030005,0x00000163,0x00004268,0x00040005,0x00000166, + 0x61726170,0x0000006d,0x00040005,0x00000168,0x61726170,0x0000006d,0x00040005,0x0000016a, + 0x61726170,0x0000006d,0x00040005,0x00000170,0x61726170,0x0000006d,0x00040005,0x00000172, + 0x61726170,0x0000006d,0x00040005,0x00000174,0x61726170,0x0000006d,0x00040005,0x0000017a, + 0x61726170,0x0000006d,0x00040005,0x0000017c,0x61726170,0x0000006d,0x00040005,0x0000017e, + 0x61726170,0x0000006d,0x00040005,0x00000184,0x61726170,0x0000006d,0x00040005,0x00000186, + 0x61726170,0x0000006d,0x00040005,0x00000188,0x61726170,0x0000006d,0x00040005,0x0000018e, + 0x61726170,0x0000006d,0x00040005,0x00000190,0x61726170,0x0000006d,0x00040005,0x00000192, + 0x61726170,0x0000006d,0x00030005,0x00000198,0x00004c62,0x00030005,0x000001a1,0x00004c64, + 0x00030005,0x000001a9,0x00004c65,0x00030005,0x000001b1,0x00004c66,0x00030005,0x000001b9, + 0x00004c68,0x00030005,0x000001c1,0x00007a6e,0x00040005,0x000001d2,0x61726170,0x0000006d, + 0x00040005,0x000001d4,0x61726170,0x0000006d,0x00040005,0x000001d6,0x61726170,0x0000006d, + 0x00040005,0x000001d9,0x61726170,0x0000006d,0x00040005,0x000001da,0x61726170,0x0000006d, + 0x00040005,0x000001dc,0x61726170,0x0000006d,0x00040005,0x000001df,0x61726170,0x0000006d, + 0x00040005,0x000001e1,0x61726170,0x0000006d,0x00040005,0x000001e3,0x61726170,0x0000006d, + 0x00040005,0x000001e6,0x61726170,0x0000006d,0x00040005,0x000001e7,0x61726170,0x0000006d, + 0x00040005,0x000001e9,0x61726170,0x0000006d,0x00040005,0x000001ed,0x61726170,0x0000006d, + 0x00040005,0x000001f0,0x61726170,0x0000006d,0x00040005,0x000001f6,0x52346e6d,0x00000000, + 0x00040005,0x000001f7,0x61726170,0x0000006d,0x00040005,0x000001f9,0x61726170,0x0000006d, + 0x00040005,0x000001fb,0x61726170,0x0000006d,0x00040005,0x000001fe,0x61726170,0x0000006d, + 0x00040005,0x000001ff,0x61726170,0x0000006d,0x00040005,0x00000202,0x47346e6d,0x00000000, + 0x00040005,0x00000203,0x61726170,0x0000006d,0x00040005,0x00000205,0x61726170,0x0000006d, + 0x00040005,0x00000207,0x61726170,0x0000006d,0x00040005,0x0000020a,0x61726170,0x0000006d, + 0x00040005,0x0000020b,0x61726170,0x0000006d,0x00040005,0x0000020e,0x42346e6d,0x00000000, + 0x00040005,0x0000020f,0x61726170,0x0000006d,0x00040005,0x00000211,0x61726170,0x0000006d, + 0x00040005,0x00000213,0x61726170,0x0000006d,0x00040005,0x00000216,0x61726170,0x0000006d, + 0x00040005,0x00000217,0x61726170,0x0000006d,0x00040005,0x0000021a,0x5234786d,0x00000000, + 0x00040005,0x0000021b,0x61726170,0x0000006d,0x00040005,0x0000021d,0x61726170,0x0000006d, + 0x00040005,0x0000021f,0x61726170,0x0000006d,0x00040005,0x00000224,0x4734786d,0x00000000, + 0x00040005,0x00000225,0x61726170,0x0000006d,0x00040005,0x00000227,0x61726170,0x0000006d, + 0x00040005,0x00000229,0x61726170,0x0000006d,0x00040005,0x0000022e,0x4234786d,0x00000000, + 0x00040005,0x0000022f,0x61726170,0x0000006d,0x00040005,0x00000231,0x61726170,0x0000006d, + 0x00040005,0x00000233,0x61726170,0x0000006d,0x00040005,0x0000023a,0x6b616570,0x00000043, + 0x00040005,0x0000023d,0x4d746968,0x00526e69,0x00040005,0x00000242,0x61726170,0x0000006d, + 0x00040005,0x00000245,0x4d746968,0x00476e69,0x00040005,0x00000249,0x61726170,0x0000006d, + 0x00040005,0x0000024c,0x4d746968,0x00426e69,0x00040005,0x00000250,0x61726170,0x0000006d, + 0x00040005,0x00000253,0x4d746968,0x00527861,0x00040005,0x0000025d,0x61726170,0x0000006d, + 0x00040005,0x00000260,0x4d746968,0x00477861,0x00040005,0x0000026a,0x61726170,0x0000006d, + 0x00040005,0x0000026d,0x4d746968,0x00427861,0x00040005,0x00000277,0x61726170,0x0000006d, + 0x00040005,0x0000027a,0x65626f6c,0x00000052,0x00040005,0x0000027f,0x65626f6c,0x00000047, + 0x00040005,0x00000284,0x65626f6c,0x00000042,0x00040005,0x00000289,0x65626f6c,0x00000000, + 0x00040005,0x0000028b,0x61726170,0x0000006d,0x00040005,0x0000028d,0x61726170,0x0000006d, + 0x00040005,0x0000028f,0x61726170,0x0000006d,0x00040005,0x00000292,0x61726170,0x0000006d, + 0x00040005,0x00000293,0x61726170,0x0000006d,0x00040005,0x00000296,0x61726170,0x0000006d, + 0x00040005,0x0000029e,0x4c706372,0x00000000,0x00040005,0x000002a2,0x61726170,0x0000006d, + 0x00030005,0x000002de,0x00000063,0x00040005,0x000002e0,0x61726170,0x0000006d,0x00040005, + 0x000002e1,0x61726170,0x0000006d,0x00040005,0x000002e2,0x61726170,0x0000006d,0x00040005, + 0x000002e3,0x61726170,0x0000006d,0x00040005,0x000002e5,0x61726170,0x0000006d,0x00040005, + 0x000002f1,0x61726170,0x0000006d,0x00040005,0x000002f3,0x61726170,0x0000006d,0x00030005, + 0x000002f6,0x00797867,0x00040005,0x000002f7,0x61726170,0x0000006d,0x00040005,0x00000305, + 0x61726170,0x0000006d,0x00040005,0x0000030d,0x61726170,0x0000006d,0x00040005,0x00000314, + 0x61726170,0x0000006d,0x00040005,0x0000031b,0x61726170,0x0000006d,0x00080005,0x0000031e, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x44496e6f,0x00000000,0x00060005,0x0000031f, + 0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00080005,0x00000320,0x475f6c67,0x61626f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000321,0x61726170,0x0000006d, + 0x00040005,0x00000323,0x61726170,0x0000006d,0x00040005,0x00000325,0x61726170,0x0000006d, + 0x00070005,0x0000032b,0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006, + 0x0000032b,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006,0x0000032b,0x00000001, + 0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006, + 0x0000032b,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x0000032b, + 0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065, + 0x00070006,0x0000032b,0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006, + 0x0000032b,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x0000032b, + 0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x0000032b, + 0x00000007,0x74694a66,0x00726574,0x00090006,0x0000032b,0x00000008,0x65725066,0x756f6976, + 0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x0000032b,0x00000009,0x746f4d66, + 0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x0000032b,0x0000000a,0x776f4466, + 0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x0000032b,0x0000000b,0x746f4d66, + 0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006, + 0x0000032b,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006,0x0000032b,0x0000000d, + 0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x0000032b, + 0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x0000032b,0x0000000f,0x6c654466, + 0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x0000032b,0x00000010,0x65695666, + 0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x0000032b, + 0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x0000032b,0x00000012,0x6c655666, + 0x7469636f,0x63614679,0x00726f74,0x00080006,0x0000032b,0x00000013,0x61655266,0x76697463, + 0x73656e65,0x61635373,0x0000656c,0x00080006,0x0000032b,0x00000014,0x61685366,0x676e6964, + 0x6e616843,0x63536567,0x00656c61,0x000a0006,0x0000032b,0x00000015,0x63634166,0x6c756d75, + 0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006,0x0000032b,0x00000016, + 0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000, + 0x00060005,0x0000032d,0x53466263,0x70553352,0x6c616373,0x00007265,0x00060005,0x00000330, + 0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00060005,0x00000331,0x694c5f73,0x7261656e, + 0x6d616c43,0x00000070,0x00030047,0x000000d1,0x00000002,0x00050048,0x000000d1,0x00000000, + 0x00000023,0x00000000,0x00040047,0x000000d3,0x00000021,0x00000004,0x00040047,0x000000d3, + 0x00000022,0x00000000,0x00040047,0x000000db,0x00000021,0x00000001,0x00040047,0x000000db, + 0x00000022,0x00000000,0x00030047,0x000000e3,0x00000019,0x00040047,0x000000e3,0x00000021, + 0x00000002,0x00040047,0x000000e3,0x00000022,0x00000000,0x00040047,0x000000ec,0x00000021, + 0x00000000,0x00040047,0x000000ec,0x00000022,0x00000000,0x00040047,0x0000031e,0x0000000b, + 0x0000001b,0x00040047,0x0000031f,0x0000000b,0x0000001a,0x00040047,0x00000320,0x0000000b, + 0x0000001c,0x00030047,0x0000032b,0x00000002,0x00050048,0x0000032b,0x00000000,0x00000023, + 0x00000000,0x00050048,0x0000032b,0x00000001,0x00000023,0x00000008,0x00050048,0x0000032b, + 0x00000002,0x00000023,0x00000010,0x00050048,0x0000032b,0x00000003,0x00000023,0x00000018, + 0x00050048,0x0000032b,0x00000004,0x00000023,0x00000020,0x00050048,0x0000032b,0x00000005, + 0x00000023,0x00000028,0x00050048,0x0000032b,0x00000006,0x00000023,0x00000030,0x00050048, + 0x0000032b,0x00000007,0x00000023,0x00000040,0x00050048,0x0000032b,0x00000008,0x00000023, + 0x00000048,0x00050048,0x0000032b,0x00000009,0x00000023,0x00000050,0x00050048,0x0000032b, + 0x0000000a,0x00000023,0x00000058,0x00050048,0x0000032b,0x0000000b,0x00000023,0x00000060, + 0x00050048,0x0000032b,0x0000000c,0x00000023,0x00000068,0x00050048,0x0000032b,0x0000000d, + 0x00000023,0x0000006c,0x00050048,0x0000032b,0x0000000e,0x00000023,0x00000070,0x00050048, + 0x0000032b,0x0000000f,0x00000023,0x00000074,0x00050048,0x0000032b,0x00000010,0x00000023, + 0x00000078,0x00050048,0x0000032b,0x00000011,0x00000023,0x0000007c,0x00050048,0x0000032b, + 0x00000012,0x00000023,0x00000080,0x00050048,0x0000032b,0x00000013,0x00000023,0x00000084, + 0x00050048,0x0000032b,0x00000014,0x00000023,0x00000088,0x00050048,0x0000032b,0x00000015, + 0x00000023,0x0000008c,0x00050048,0x0000032b,0x00000016,0x00000023,0x00000090,0x00040047, + 0x0000032d,0x00000021,0x00000003,0x00040047,0x0000032d,0x00000022,0x00000000,0x00040047, + 0x00000330,0x00000021,0x000003e8,0x00040047,0x00000330,0x00000022,0x00000000,0x00040047, + 0x00000331,0x00000021,0x000003e9,0x00040047,0x00000331,0x00000022,0x00000000,0x00040047, + 0x0000033c,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002, + 0x00040015,0x00000006,0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006, + 0x00030016,0x00000008,0x00000020,0x00040021,0x00000009,0x00000008,0x00000007,0x00040020, + 0x0000000d,0x00000007,0x00000008,0x00040021,0x0000000e,0x00000006,0x0000000d,0x00060021, + 0x00000012,0x00000006,0x00000007,0x00000007,0x00000007,0x00060021,0x0000001d,0x00000008, + 0x0000000d,0x0000000d,0x0000000d,0x00040021,0x00000028,0x00000008,0x0000000d,0x00050021, + 0x0000002f,0x00000008,0x0000000d,0x0000000d,0x00040017,0x00000037,0x00000006,0x00000002, + 0x00040021,0x00000038,0x00000037,0x00000007,0x00040017,0x0000003c,0x00000006,0x00000004, + 0x00030021,0x0000003d,0x0000003c,0x00040015,0x00000040,0x00000020,0x00000001,0x00040017, + 0x00000041,0x00000040,0x00000002,0x00040020,0x00000042,0x00000007,0x00000041,0x00040017, + 0x00000043,0x00000008,0x00000004,0x00040021,0x00000044,0x00000043,0x00000042,0x00040017, + 0x00000048,0x00000008,0x00000003,0x00040020,0x00000049,0x00000007,0x00000048,0x00050021, + 0x0000004a,0x00000002,0x00000042,0x00000049,0x00030021,0x0000004f,0x00000008,0x00040020, + 0x00000052,0x00000007,0x00000037,0x00050021,0x00000053,0x00000002,0x00000052,0x00000049, + 0x00060021,0x0000005b,0x00000002,0x0000000d,0x0000000d,0x0000000d,0x00040020,0x00000061, + 0x00000007,0x0000003c,0x00080021,0x00000062,0x00000002,0x0000000d,0x0000000d,0x0000000d, + 0x00000052,0x00000061,0x00040021,0x0000006a,0x00000002,0x00000052,0x00040017,0x0000006e, + 0x00000006,0x00000003,0x00040020,0x0000006f,0x00000007,0x0000006e,0x00060021,0x00000070, + 0x00000002,0x0000006f,0x0000006f,0x0000006f,0x0004002b,0x00000040,0x00000088,0x00000000, + 0x0004002b,0x00000008,0x0000009c,0x3f800000,0x0004002b,0x00000008,0x000000a2,0x00000000, + 0x0004002b,0x00000006,0x000000ac,0x7ef19fff,0x0004002b,0x00000008,0x000000b8,0x40000000, + 0x0004002b,0x00000006,0x000000bd,0x00000001,0x0004002b,0x00000006,0x000000be,0x00000003, + 0x0003001e,0x000000d1,0x0000003c,0x00040020,0x000000d2,0x00000002,0x000000d1,0x0004003b, + 0x000000d2,0x000000d3,0x00000002,0x00040020,0x000000d4,0x00000002,0x0000003c,0x00090019, + 0x000000d9,0x00000008,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000, + 0x00040020,0x000000da,0x00000000,0x000000d9,0x0004003b,0x000000da,0x000000db,0x00000000, + 0x00090019,0x000000e1,0x00000008,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x00000000,0x00040020,0x000000e2,0x00000000,0x000000e1,0x0004003b,0x000000e2,0x000000e3, + 0x00000000,0x0004003b,0x000000da,0x000000ec,0x00000000,0x0005002c,0x00000041,0x000000ee, + 0x00000088,0x00000088,0x0004002b,0x00000006,0x000000f0,0x00000000,0x00020014,0x000000f3, + 0x00040020,0x00000100,0x00000007,0x00000043,0x0004002b,0x00000006,0x0000010d,0x00000002, + 0x0004002b,0x00000040,0x00000118,0xffffffff,0x0005002c,0x00000041,0x00000119,0x00000088, + 0x00000118,0x0005002c,0x00000041,0x00000120,0x00000118,0x00000088,0x0004002b,0x00000040, + 0x0000012c,0x00000001,0x0005002c,0x00000041,0x0000012d,0x0000012c,0x00000088,0x0005002c, + 0x00000041,0x00000134,0x00000088,0x0000012c,0x0004002b,0x00000008,0x0000019a,0x3f000000, + 0x0004002b,0x00000008,0x000001c2,0x3e800000,0x0004002b,0x00000008,0x000001f2,0xbf000000, + 0x00040017,0x00000238,0x00000008,0x00000002,0x00040020,0x00000239,0x00000007,0x00000238, + 0x0004002b,0x00000008,0x0000023b,0xc0800000,0x0005002c,0x00000238,0x0000023c,0x0000009c, + 0x0000023b,0x0004002b,0x00000008,0x0000023f,0x40800000,0x0004002b,0x00000008,0x0000028a, + 0xbe400000,0x0004002b,0x00000006,0x000002fd,0x00000004,0x0004002b,0x00000006,0x00000307, + 0x00000008,0x00040020,0x0000031d,0x00000001,0x0000006e,0x0004003b,0x0000031d,0x0000031e, + 0x00000001,0x0004003b,0x0000031d,0x0000031f,0x00000001,0x0004003b,0x0000031d,0x00000320, + 0x00000001,0x0004002b,0x00000008,0x00000328,0x387fda40,0x0004002b,0x00000008,0x00000329, + 0x477fe000,0x0004002b,0x00000008,0x0000032a,0x37801002,0x0019001e,0x0000032b,0x00000041, + 0x00000041,0x00000041,0x00000041,0x00000041,0x00000041,0x00000043,0x00000238,0x00000238, + 0x00000238,0x00000238,0x00000238,0x00000008,0x00000008,0x00000008,0x00000008,0x00000008, + 0x00000008,0x00000008,0x00000008,0x00000008,0x00000008,0x00000008,0x00040020,0x0000032c, + 0x00000002,0x0000032b,0x0004003b,0x0000032c,0x0000032d,0x00000002,0x0002001a,0x0000032e, + 0x00040020,0x0000032f,0x00000000,0x0000032e,0x0004003b,0x0000032f,0x00000330,0x00000000, + 0x0004003b,0x0000032f,0x00000331,0x00000000,0x0004002b,0x00000008,0x00000332,0x7f7fffff, + 0x0004002b,0x00000008,0x00000333,0x00800000,0x0004002b,0x00000008,0x00000334,0x3a1fe868, + 0x0004002b,0x00000008,0x00000335,0x3d800000,0x0004002b,0x00000008,0x00000336,0x3d3d70a4, + 0x0004002b,0x00000008,0x00000337,0x3e400000,0x0004002b,0x00000040,0x00000338,0x00000002, + 0x0004002b,0x00000040,0x00000339,0x00000003,0x0004002b,0x00000008,0x0000033a,0x461c4000, + 0x0004002b,0x00000006,0x0000033b,0x00000040,0x0006002c,0x0000006e,0x0000033c,0x0000033b, + 0x000000bd,0x000000bd,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, + 0x00000005,0x0004003b,0x0000006f,0x00000321,0x00000007,0x0004003b,0x0000006f,0x00000323, + 0x00000007,0x0004003b,0x0000006f,0x00000325,0x00000007,0x0004003d,0x0000006e,0x00000322, + 0x0000031e,0x0003003e,0x00000321,0x00000322,0x0004003d,0x0000006e,0x00000324,0x0000031f, + 0x0003003e,0x00000323,0x00000324,0x0004003d,0x0000006e,0x00000326,0x00000320,0x0003003e, + 0x00000325,0x00000326,0x00070039,0x00000002,0x00000327,0x00000074,0x00000321,0x00000323, + 0x00000325,0x000100fd,0x00010038,0x00050036,0x00000008,0x0000000b,0x00000000,0x00000009, + 0x00030037,0x00000007,0x0000000a,0x000200f8,0x0000000c,0x0004003d,0x00000006,0x00000076, + 0x0000000a,0x0004007c,0x00000008,0x00000077,0x00000076,0x000200fe,0x00000077,0x00010038, + 0x00050036,0x00000006,0x00000010,0x00000000,0x0000000e,0x00030037,0x0000000d,0x0000000f, + 0x000200f8,0x00000011,0x0004003d,0x00000008,0x0000007a,0x0000000f,0x0004007c,0x00000006, + 0x0000007b,0x0000007a,0x000200fe,0x0000007b,0x00010038,0x00050036,0x00000006,0x00000016, + 0x00000000,0x00000012,0x00030037,0x00000007,0x00000013,0x00030037,0x00000007,0x00000014, + 0x00030037,0x00000007,0x00000015,0x000200f8,0x00000017,0x0004003d,0x00000006,0x0000007e, + 0x00000013,0x0004003d,0x00000006,0x0000007f,0x00000014,0x0004007c,0x00000040,0x00000080, + 0x0000007f,0x0004003d,0x00000006,0x00000081,0x00000015,0x0004007c,0x00000040,0x00000082, + 0x00000081,0x000600cb,0x00000006,0x00000083,0x0000007e,0x00000080,0x00000082,0x000200fe, + 0x00000083,0x00010038,0x00050036,0x00000006,0x0000001b,0x00000000,0x00000012,0x00030037, + 0x00000007,0x00000018,0x00030037,0x00000007,0x00000019,0x00030037,0x00000007,0x0000001a, + 0x000200f8,0x0000001c,0x0004003d,0x00000006,0x00000086,0x00000018,0x0004003d,0x00000006, + 0x00000087,0x00000019,0x0004003d,0x00000006,0x00000089,0x0000001a,0x0004007c,0x00000040, + 0x0000008a,0x00000089,0x000700c9,0x00000006,0x0000008b,0x00000086,0x00000087,0x00000088, + 0x0000008a,0x000200fe,0x0000008b,0x00010038,0x00050036,0x00000008,0x00000021,0x00000000, + 0x0000001d,0x00030037,0x0000000d,0x0000001e,0x00030037,0x0000000d,0x0000001f,0x00030037, + 0x0000000d,0x00000020,0x000200f8,0x00000022,0x0004003d,0x00000008,0x0000008e,0x0000001e, + 0x0004003d,0x00000008,0x0000008f,0x0000001f,0x0004003d,0x00000008,0x00000090,0x00000020, + 0x0007000c,0x00000008,0x00000091,0x00000001,0x00000028,0x0000008f,0x00000090,0x0007000c, + 0x00000008,0x00000092,0x00000001,0x00000028,0x0000008e,0x00000091,0x000200fe,0x00000092, + 0x00010038,0x00050036,0x00000008,0x00000026,0x00000000,0x0000001d,0x00030037,0x0000000d, + 0x00000023,0x00030037,0x0000000d,0x00000024,0x00030037,0x0000000d,0x00000025,0x000200f8, + 0x00000027,0x0004003d,0x00000008,0x00000095,0x00000023,0x0004003d,0x00000008,0x00000096, + 0x00000024,0x0004003d,0x00000008,0x00000097,0x00000025,0x0007000c,0x00000008,0x00000098, + 0x00000001,0x00000025,0x00000096,0x00000097,0x0007000c,0x00000008,0x00000099,0x00000001, + 0x00000025,0x00000095,0x00000098,0x000200fe,0x00000099,0x00010038,0x00050036,0x00000008, + 0x0000002a,0x00000000,0x00000028,0x00030037,0x0000000d,0x00000029,0x000200f8,0x0000002b, + 0x0004003d,0x00000008,0x0000009d,0x00000029,0x00050088,0x00000008,0x0000009e,0x0000009c, + 0x0000009d,0x000200fe,0x0000009e,0x00010038,0x00050036,0x00000008,0x0000002d,0x00000000, + 0x00000028,0x00030037,0x0000000d,0x0000002c,0x000200f8,0x0000002e,0x0004003d,0x00000008, + 0x000000a1,0x0000002c,0x0008000c,0x00000008,0x000000a3,0x00000001,0x0000002b,0x000000a1, + 0x000000a2,0x0000009c,0x000200fe,0x000000a3,0x00010038,0x00050036,0x00000008,0x00000032, + 0x00000000,0x0000002f,0x00030037,0x0000000d,0x00000030,0x00030037,0x0000000d,0x00000031, + 0x000200f8,0x00000033,0x0004003d,0x00000008,0x000000a6,0x00000030,0x0004003d,0x00000008, + 0x000000a7,0x00000031,0x0007000c,0x00000008,0x000000a8,0x00000001,0x00000025,0x000000a6, + 0x000000a7,0x000200fe,0x000000a8,0x00010038,0x00050036,0x00000008,0x00000035,0x00000000, + 0x00000028,0x00030037,0x0000000d,0x00000034,0x000200f8,0x00000036,0x0004003b,0x0000000d, + 0x000000ab,0x00000007,0x0004003b,0x0000000d,0x000000ad,0x00000007,0x0004003b,0x00000007, + 0x000000b1,0x00000007,0x0004003d,0x00000008,0x000000ae,0x00000034,0x0003003e,0x000000ad, + 0x000000ae,0x00050039,0x00000006,0x000000af,0x00000010,0x000000ad,0x00050082,0x00000006, + 0x000000b0,0x000000ac,0x000000af,0x0003003e,0x000000b1,0x000000b0,0x00050039,0x00000008, + 0x000000b2,0x0000000b,0x000000b1,0x0003003e,0x000000ab,0x000000b2,0x0004003d,0x00000008, + 0x000000b3,0x000000ab,0x0004003d,0x00000008,0x000000b4,0x000000ab,0x0004007f,0x00000008, + 0x000000b5,0x000000b4,0x0004003d,0x00000008,0x000000b6,0x00000034,0x00050085,0x00000008, + 0x000000b7,0x000000b5,0x000000b6,0x00050081,0x00000008,0x000000b9,0x000000b7,0x000000b8, + 0x00050085,0x00000008,0x000000ba,0x000000b3,0x000000b9,0x000200fe,0x000000ba,0x00010038, + 0x00050036,0x00000037,0x0000003a,0x00000000,0x00000038,0x00030037,0x00000007,0x00000039, + 0x000200f8,0x0000003b,0x0004003b,0x00000007,0x000000bf,0x00000007,0x0004003b,0x00000007, + 0x000000c1,0x00000007,0x0004003b,0x00000007,0x000000c2,0x00000007,0x0004003b,0x00000007, + 0x000000c4,0x00000007,0x0004003b,0x00000007,0x000000c6,0x00000007,0x0004003b,0x00000007, + 0x000000c7,0x00000007,0x0004003b,0x00000007,0x000000c9,0x00000007,0x0004003b,0x00000007, + 0x000000ca,0x00000007,0x0004003b,0x00000007,0x000000cc,0x00000007,0x0004003d,0x00000006, + 0x000000c0,0x00000039,0x0003003e,0x000000bf,0x000000c0,0x0003003e,0x000000c1,0x000000bd, + 0x0003003e,0x000000c2,0x000000be,0x00070039,0x00000006,0x000000c3,0x00000016,0x000000bf, + 0x000000c1,0x000000c2,0x0004003d,0x00000006,0x000000c5,0x00000039,0x0003003e,0x000000c4, + 0x000000c5,0x0003003e,0x000000c6,0x000000be,0x0003003e,0x000000c7,0x000000be,0x00070039, + 0x00000006,0x000000c8,0x00000016,0x000000c4,0x000000c6,0x000000c7,0x0003003e,0x000000c9, + 0x000000c8,0x0004003d,0x00000006,0x000000cb,0x00000039,0x0003003e,0x000000ca,0x000000cb, + 0x0003003e,0x000000cc,0x000000bd,0x00070039,0x00000006,0x000000cd,0x0000001b,0x000000c9, + 0x000000ca,0x000000cc,0x00050050,0x00000037,0x000000ce,0x000000c3,0x000000cd,0x000200fe, + 0x000000ce,0x00010038,0x00050036,0x0000003c,0x0000003e,0x00000000,0x0000003d,0x000200f8, + 0x0000003f,0x00050041,0x000000d4,0x000000d5,0x000000d3,0x00000088,0x0004003d,0x0000003c, + 0x000000d6,0x000000d5,0x000200fe,0x000000d6,0x00010038,0x00050036,0x00000043,0x00000046, + 0x00000000,0x00000044,0x00030037,0x00000042,0x00000045,0x000200f8,0x00000047,0x0004003d, + 0x000000d9,0x000000dc,0x000000db,0x0004003d,0x00000041,0x000000dd,0x00000045,0x0007005f, + 0x00000043,0x000000de,0x000000dc,0x000000dd,0x00000002,0x00000088,0x000200fe,0x000000de, + 0x00010038,0x00050036,0x00000002,0x0000004d,0x00000000,0x0000004a,0x00030037,0x00000042, + 0x0000004b,0x00030037,0x00000049,0x0000004c,0x000200f8,0x0000004e,0x0004003d,0x000000e1, + 0x000000e4,0x000000e3,0x0004003d,0x00000041,0x000000e5,0x0000004b,0x0004003d,0x00000048, + 0x000000e6,0x0000004c,0x00050051,0x00000008,0x000000e7,0x000000e6,0x00000000,0x00050051, + 0x00000008,0x000000e8,0x000000e6,0x00000001,0x00050051,0x00000008,0x000000e9,0x000000e6, + 0x00000002,0x00070050,0x00000043,0x000000ea,0x000000e7,0x000000e8,0x000000e9,0x0000009c, + 0x00040063,0x000000e4,0x000000e5,0x000000ea,0x000100fd,0x00010038,0x00050036,0x00000008, + 0x00000050,0x00000000,0x0000004f,0x000200f8,0x00000051,0x0004003b,0x0000000d,0x000000eb, + 0x00000007,0x0004003d,0x000000d9,0x000000ed,0x000000ec,0x0007005f,0x00000043,0x000000ef, + 0x000000ed,0x000000ee,0x00000002,0x00000088,0x00050051,0x00000008,0x000000f1,0x000000ef, + 0x00000000,0x0003003e,0x000000eb,0x000000f1,0x0004003d,0x00000008,0x000000f2,0x000000eb, + 0x000500b4,0x000000f3,0x000000f4,0x000000f2,0x000000a2,0x000300f7,0x000000f6,0x00000000, + 0x000400fa,0x000000f4,0x000000f5,0x000000f6,0x000200f8,0x000000f5,0x0003003e,0x000000eb, + 0x0000009c,0x000200f9,0x000000f6,0x000200f8,0x000000f6,0x0004003d,0x00000008,0x000000f7, + 0x000000eb,0x000200fe,0x000000f7,0x00010038,0x00050036,0x00000002,0x00000056,0x00000000, + 0x00000053,0x00030037,0x00000052,0x00000054,0x00030037,0x00000049,0x00000055,0x000200f8, + 0x00000057,0x0004003b,0x00000042,0x000000fc,0x00000007,0x0004003b,0x00000049,0x000000fd, + 0x00000007,0x0004003d,0x00000037,0x000000fa,0x00000054,0x0004007c,0x00000041,0x000000fb, + 0x000000fa,0x0003003e,0x000000fc,0x000000fb,0x0004003d,0x00000048,0x000000fe,0x00000055, + 0x0003003e,0x000000fd,0x000000fe,0x00060039,0x00000002,0x000000ff,0x0000004d,0x000000fc, + 0x000000fd,0x000100fd,0x00010038,0x00050036,0x00000043,0x00000059,0x00000000,0x00000044, + 0x00030037,0x00000042,0x00000058,0x000200f8,0x0000005a,0x0004003b,0x00000100,0x00000101, + 0x00000007,0x0004003b,0x00000042,0x00000102,0x00000007,0x0004003d,0x00000041,0x00000103, + 0x00000058,0x0003003e,0x00000102,0x00000103,0x00050039,0x00000043,0x00000104,0x00000046, + 0x00000102,0x0003003e,0x00000101,0x00000104,0x00040039,0x00000008,0x00000105,0x00000050, + 0x0004003d,0x00000043,0x00000106,0x00000101,0x0008004f,0x00000048,0x00000107,0x00000106, + 0x00000106,0x00000000,0x00000001,0x00000002,0x0005008e,0x00000048,0x00000108,0x00000107, + 0x00000105,0x00050041,0x0000000d,0x00000109,0x00000101,0x000000f0,0x00050051,0x00000008, + 0x0000010a,0x00000108,0x00000000,0x0003003e,0x00000109,0x0000010a,0x00050041,0x0000000d, + 0x0000010b,0x00000101,0x000000bd,0x00050051,0x00000008,0x0000010c,0x00000108,0x00000001, + 0x0003003e,0x0000010b,0x0000010c,0x00050041,0x0000000d,0x0000010e,0x00000101,0x0000010d, + 0x00050051,0x00000008,0x0000010f,0x00000108,0x00000002,0x0003003e,0x0000010e,0x0000010f, + 0x0004003d,0x00000043,0x00000110,0x00000101,0x000200fe,0x00000110,0x00010038,0x00050036, + 0x00000002,0x0000005f,0x00000000,0x0000005b,0x00030037,0x0000000d,0x0000005c,0x00030037, + 0x0000000d,0x0000005d,0x00030037,0x0000000d,0x0000005e,0x000200f8,0x00000060,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x00000068,0x00000000,0x00000062,0x00030037,0x0000000d, + 0x00000063,0x00030037,0x0000000d,0x00000064,0x00030037,0x0000000d,0x00000065,0x00030037, + 0x00000052,0x00000066,0x00030037,0x00000061,0x00000067,0x000200f8,0x00000069,0x0004003b, + 0x00000042,0x00000113,0x00000007,0x0004003b,0x00000049,0x00000116,0x00000007,0x0004003b, + 0x00000042,0x0000011b,0x00000007,0x0004003b,0x00000049,0x0000011e,0x00000007,0x0004003b, + 0x00000042,0x00000122,0x00000007,0x0004003b,0x00000049,0x00000125,0x00000007,0x0004003b, + 0x00000042,0x00000126,0x00000007,0x0004003b,0x00000049,0x0000012a,0x00000007,0x0004003b, + 0x00000042,0x0000012f,0x00000007,0x0004003b,0x00000049,0x00000132,0x00000007,0x0004003b, + 0x00000042,0x00000136,0x00000007,0x0004003b,0x0000000d,0x00000139,0x00000007,0x0004003b, + 0x0000000d,0x0000013c,0x00000007,0x0004003b,0x0000000d,0x0000013f,0x00000007,0x0004003b, + 0x0000000d,0x00000142,0x00000007,0x0004003b,0x0000000d,0x00000145,0x00000007,0x0004003b, + 0x0000000d,0x00000148,0x00000007,0x0004003b,0x0000000d,0x0000014b,0x00000007,0x0004003b, + 0x0000000d,0x0000014e,0x00000007,0x0004003b,0x0000000d,0x00000151,0x00000007,0x0004003b, + 0x0000000d,0x00000154,0x00000007,0x0004003b,0x0000000d,0x00000157,0x00000007,0x0004003b, + 0x0000000d,0x0000015a,0x00000007,0x0004003b,0x0000000d,0x0000015d,0x00000007,0x0004003b, + 0x0000000d,0x00000160,0x00000007,0x0004003b,0x0000000d,0x00000163,0x00000007,0x0004003b, + 0x0000000d,0x00000166,0x00000007,0x0004003b,0x0000000d,0x00000168,0x00000007,0x0004003b, + 0x0000000d,0x0000016a,0x00000007,0x0004003b,0x0000000d,0x00000170,0x00000007,0x0004003b, + 0x0000000d,0x00000172,0x00000007,0x0004003b,0x0000000d,0x00000174,0x00000007,0x0004003b, + 0x0000000d,0x0000017a,0x00000007,0x0004003b,0x0000000d,0x0000017c,0x00000007,0x0004003b, + 0x0000000d,0x0000017e,0x00000007,0x0004003b,0x0000000d,0x00000184,0x00000007,0x0004003b, + 0x0000000d,0x00000186,0x00000007,0x0004003b,0x0000000d,0x00000188,0x00000007,0x0004003b, + 0x0000000d,0x0000018e,0x00000007,0x0004003b,0x0000000d,0x00000190,0x00000007,0x0004003b, + 0x0000000d,0x00000192,0x00000007,0x0004003b,0x0000000d,0x00000198,0x00000007,0x0004003b, + 0x0000000d,0x000001a1,0x00000007,0x0004003b,0x0000000d,0x000001a9,0x00000007,0x0004003b, + 0x0000000d,0x000001b1,0x00000007,0x0004003b,0x0000000d,0x000001b9,0x00000007,0x0004003b, + 0x0000000d,0x000001c1,0x00000007,0x0004003b,0x0000000d,0x000001d2,0x00000007,0x0004003b, + 0x0000000d,0x000001d4,0x00000007,0x0004003b,0x0000000d,0x000001d6,0x00000007,0x0004003b, + 0x0000000d,0x000001d9,0x00000007,0x0004003b,0x0000000d,0x000001da,0x00000007,0x0004003b, + 0x0000000d,0x000001dc,0x00000007,0x0004003b,0x0000000d,0x000001df,0x00000007,0x0004003b, + 0x0000000d,0x000001e1,0x00000007,0x0004003b,0x0000000d,0x000001e3,0x00000007,0x0004003b, + 0x0000000d,0x000001e6,0x00000007,0x0004003b,0x0000000d,0x000001e7,0x00000007,0x0004003b, + 0x0000000d,0x000001e9,0x00000007,0x0004003b,0x0000000d,0x000001ed,0x00000007,0x0004003b, + 0x0000000d,0x000001f0,0x00000007,0x0004003b,0x0000000d,0x000001f6,0x00000007,0x0004003b, + 0x0000000d,0x000001f7,0x00000007,0x0004003b,0x0000000d,0x000001f9,0x00000007,0x0004003b, + 0x0000000d,0x000001fb,0x00000007,0x0004003b,0x0000000d,0x000001fe,0x00000007,0x0004003b, + 0x0000000d,0x000001ff,0x00000007,0x0004003b,0x0000000d,0x00000202,0x00000007,0x0004003b, + 0x0000000d,0x00000203,0x00000007,0x0004003b,0x0000000d,0x00000205,0x00000007,0x0004003b, + 0x0000000d,0x00000207,0x00000007,0x0004003b,0x0000000d,0x0000020a,0x00000007,0x0004003b, + 0x0000000d,0x0000020b,0x00000007,0x0004003b,0x0000000d,0x0000020e,0x00000007,0x0004003b, + 0x0000000d,0x0000020f,0x00000007,0x0004003b,0x0000000d,0x00000211,0x00000007,0x0004003b, + 0x0000000d,0x00000213,0x00000007,0x0004003b,0x0000000d,0x00000216,0x00000007,0x0004003b, + 0x0000000d,0x00000217,0x00000007,0x0004003b,0x0000000d,0x0000021a,0x00000007,0x0004003b, + 0x0000000d,0x0000021b,0x00000007,0x0004003b,0x0000000d,0x0000021d,0x00000007,0x0004003b, + 0x0000000d,0x0000021f,0x00000007,0x0004003b,0x0000000d,0x00000224,0x00000007,0x0004003b, + 0x0000000d,0x00000225,0x00000007,0x0004003b,0x0000000d,0x00000227,0x00000007,0x0004003b, + 0x0000000d,0x00000229,0x00000007,0x0004003b,0x0000000d,0x0000022e,0x00000007,0x0004003b, + 0x0000000d,0x0000022f,0x00000007,0x0004003b,0x0000000d,0x00000231,0x00000007,0x0004003b, + 0x0000000d,0x00000233,0x00000007,0x0004003b,0x00000239,0x0000023a,0x00000007,0x0004003b, + 0x0000000d,0x0000023d,0x00000007,0x0004003b,0x0000000d,0x00000242,0x00000007,0x0004003b, + 0x0000000d,0x00000245,0x00000007,0x0004003b,0x0000000d,0x00000249,0x00000007,0x0004003b, + 0x0000000d,0x0000024c,0x00000007,0x0004003b,0x0000000d,0x00000250,0x00000007,0x0004003b, + 0x0000000d,0x00000253,0x00000007,0x0004003b,0x0000000d,0x0000025d,0x00000007,0x0004003b, + 0x0000000d,0x00000260,0x00000007,0x0004003b,0x0000000d,0x0000026a,0x00000007,0x0004003b, + 0x0000000d,0x0000026d,0x00000007,0x0004003b,0x0000000d,0x00000277,0x00000007,0x0004003b, + 0x0000000d,0x0000027a,0x00000007,0x0004003b,0x0000000d,0x0000027f,0x00000007,0x0004003b, + 0x0000000d,0x00000284,0x00000007,0x0004003b,0x0000000d,0x00000289,0x00000007,0x0004003b, + 0x0000000d,0x0000028b,0x00000007,0x0004003b,0x0000000d,0x0000028d,0x00000007,0x0004003b, + 0x0000000d,0x0000028f,0x00000007,0x0004003b,0x0000000d,0x00000292,0x00000007,0x0004003b, + 0x0000000d,0x00000293,0x00000007,0x0004003b,0x00000007,0x00000296,0x00000007,0x0004003b, + 0x0000000d,0x0000029e,0x00000007,0x0004003b,0x0000000d,0x000002a2,0x00000007,0x0004003d, + 0x00000037,0x00000114,0x00000066,0x0004007c,0x00000041,0x00000115,0x00000114,0x0003003e, + 0x00000113,0x00000115,0x0004003d,0x00000041,0x00000117,0x00000113,0x00050080,0x00000041, + 0x0000011a,0x00000117,0x00000119,0x0003003e,0x0000011b,0x0000011a,0x00050039,0x00000043, + 0x0000011c,0x00000059,0x0000011b,0x0008004f,0x00000048,0x0000011d,0x0000011c,0x0000011c, + 0x00000000,0x00000001,0x00000002,0x0003003e,0x00000116,0x0000011d,0x0004003d,0x00000041, + 0x0000011f,0x00000113,0x00050080,0x00000041,0x00000121,0x0000011f,0x00000120,0x0003003e, + 0x00000122,0x00000121,0x00050039,0x00000043,0x00000123,0x00000059,0x00000122,0x0008004f, + 0x00000048,0x00000124,0x00000123,0x00000123,0x00000000,0x00000001,0x00000002,0x0003003e, + 0x0000011e,0x00000124,0x0004003d,0x00000041,0x00000127,0x00000113,0x0003003e,0x00000126, + 0x00000127,0x00050039,0x00000043,0x00000128,0x00000059,0x00000126,0x0008004f,0x00000048, + 0x00000129,0x00000128,0x00000128,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000125, + 0x00000129,0x0004003d,0x00000041,0x0000012b,0x00000113,0x00050080,0x00000041,0x0000012e, + 0x0000012b,0x0000012d,0x0003003e,0x0000012f,0x0000012e,0x00050039,0x00000043,0x00000130, + 0x00000059,0x0000012f,0x0008004f,0x00000048,0x00000131,0x00000130,0x00000130,0x00000000, + 0x00000001,0x00000002,0x0003003e,0x0000012a,0x00000131,0x0004003d,0x00000041,0x00000133, + 0x00000113,0x00050080,0x00000041,0x00000135,0x00000133,0x00000134,0x0003003e,0x00000136, + 0x00000135,0x00050039,0x00000043,0x00000137,0x00000059,0x00000136,0x0008004f,0x00000048, + 0x00000138,0x00000137,0x00000137,0x00000000,0x00000001,0x00000002,0x0003003e,0x00000132, + 0x00000138,0x00050041,0x0000000d,0x0000013a,0x00000116,0x000000f0,0x0004003d,0x00000008, + 0x0000013b,0x0000013a,0x0003003e,0x00000139,0x0000013b,0x00050041,0x0000000d,0x0000013d, + 0x00000116,0x000000bd,0x0004003d,0x00000008,0x0000013e,0x0000013d,0x0003003e,0x0000013c, + 0x0000013e,0x00050041,0x0000000d,0x00000140,0x00000116,0x0000010d,0x0004003d,0x00000008, + 0x00000141,0x00000140,0x0003003e,0x0000013f,0x00000141,0x00050041,0x0000000d,0x00000143, + 0x0000011e,0x000000f0,0x0004003d,0x00000008,0x00000144,0x00000143,0x0003003e,0x00000142, + 0x00000144,0x00050041,0x0000000d,0x00000146,0x0000011e,0x000000bd,0x0004003d,0x00000008, + 0x00000147,0x00000146,0x0003003e,0x00000145,0x00000147,0x00050041,0x0000000d,0x00000149, + 0x0000011e,0x0000010d,0x0004003d,0x00000008,0x0000014a,0x00000149,0x0003003e,0x00000148, + 0x0000014a,0x00050041,0x0000000d,0x0000014c,0x00000125,0x000000f0,0x0004003d,0x00000008, + 0x0000014d,0x0000014c,0x0003003e,0x0000014b,0x0000014d,0x00050041,0x0000000d,0x0000014f, + 0x00000125,0x000000bd,0x0004003d,0x00000008,0x00000150,0x0000014f,0x0003003e,0x0000014e, + 0x00000150,0x00050041,0x0000000d,0x00000152,0x00000125,0x0000010d,0x0004003d,0x00000008, + 0x00000153,0x00000152,0x0003003e,0x00000151,0x00000153,0x00050041,0x0000000d,0x00000155, + 0x0000012a,0x000000f0,0x0004003d,0x00000008,0x00000156,0x00000155,0x0003003e,0x00000154, + 0x00000156,0x00050041,0x0000000d,0x00000158,0x0000012a,0x000000bd,0x0004003d,0x00000008, + 0x00000159,0x00000158,0x0003003e,0x00000157,0x00000159,0x00050041,0x0000000d,0x0000015b, + 0x0000012a,0x0000010d,0x0004003d,0x00000008,0x0000015c,0x0000015b,0x0003003e,0x0000015a, + 0x0000015c,0x00050041,0x0000000d,0x0000015e,0x00000132,0x000000f0,0x0004003d,0x00000008, + 0x0000015f,0x0000015e,0x0003003e,0x0000015d,0x0000015f,0x00050041,0x0000000d,0x00000161, + 0x00000132,0x000000bd,0x0004003d,0x00000008,0x00000162,0x00000161,0x0003003e,0x00000160, + 0x00000162,0x00050041,0x0000000d,0x00000164,0x00000132,0x0000010d,0x0004003d,0x00000008, + 0x00000165,0x00000164,0x0003003e,0x00000163,0x00000165,0x0004003d,0x00000008,0x00000167, + 0x00000139,0x0003003e,0x00000166,0x00000167,0x0004003d,0x00000008,0x00000169,0x0000013c, + 0x0003003e,0x00000168,0x00000169,0x0004003d,0x00000008,0x0000016b,0x0000013f,0x0003003e, + 0x0000016a,0x0000016b,0x00070039,0x00000002,0x0000016c,0x0000005f,0x00000166,0x00000168, + 0x0000016a,0x0004003d,0x00000008,0x0000016d,0x00000166,0x0003003e,0x00000139,0x0000016d, + 0x0004003d,0x00000008,0x0000016e,0x00000168,0x0003003e,0x0000013c,0x0000016e,0x0004003d, + 0x00000008,0x0000016f,0x0000016a,0x0003003e,0x0000013f,0x0000016f,0x0004003d,0x00000008, + 0x00000171,0x00000142,0x0003003e,0x00000170,0x00000171,0x0004003d,0x00000008,0x00000173, + 0x00000145,0x0003003e,0x00000172,0x00000173,0x0004003d,0x00000008,0x00000175,0x00000148, + 0x0003003e,0x00000174,0x00000175,0x00070039,0x00000002,0x00000176,0x0000005f,0x00000170, + 0x00000172,0x00000174,0x0004003d,0x00000008,0x00000177,0x00000170,0x0003003e,0x00000142, + 0x00000177,0x0004003d,0x00000008,0x00000178,0x00000172,0x0003003e,0x00000145,0x00000178, + 0x0004003d,0x00000008,0x00000179,0x00000174,0x0003003e,0x00000148,0x00000179,0x0004003d, + 0x00000008,0x0000017b,0x0000014b,0x0003003e,0x0000017a,0x0000017b,0x0004003d,0x00000008, + 0x0000017d,0x0000014e,0x0003003e,0x0000017c,0x0000017d,0x0004003d,0x00000008,0x0000017f, + 0x00000151,0x0003003e,0x0000017e,0x0000017f,0x00070039,0x00000002,0x00000180,0x0000005f, + 0x0000017a,0x0000017c,0x0000017e,0x0004003d,0x00000008,0x00000181,0x0000017a,0x0003003e, + 0x0000014b,0x00000181,0x0004003d,0x00000008,0x00000182,0x0000017c,0x0003003e,0x0000014e, + 0x00000182,0x0004003d,0x00000008,0x00000183,0x0000017e,0x0003003e,0x00000151,0x00000183, + 0x0004003d,0x00000008,0x00000185,0x00000154,0x0003003e,0x00000184,0x00000185,0x0004003d, + 0x00000008,0x00000187,0x00000157,0x0003003e,0x00000186,0x00000187,0x0004003d,0x00000008, + 0x00000189,0x0000015a,0x0003003e,0x00000188,0x00000189,0x00070039,0x00000002,0x0000018a, + 0x0000005f,0x00000184,0x00000186,0x00000188,0x0004003d,0x00000008,0x0000018b,0x00000184, + 0x0003003e,0x00000154,0x0000018b,0x0004003d,0x00000008,0x0000018c,0x00000186,0x0003003e, + 0x00000157,0x0000018c,0x0004003d,0x00000008,0x0000018d,0x00000188,0x0003003e,0x0000015a, + 0x0000018d,0x0004003d,0x00000008,0x0000018f,0x0000015d,0x0003003e,0x0000018e,0x0000018f, + 0x0004003d,0x00000008,0x00000191,0x00000160,0x0003003e,0x00000190,0x00000191,0x0004003d, + 0x00000008,0x00000193,0x00000163,0x0003003e,0x00000192,0x00000193,0x00070039,0x00000002, + 0x00000194,0x0000005f,0x0000018e,0x00000190,0x00000192,0x0004003d,0x00000008,0x00000195, + 0x0000018e,0x0003003e,0x0000015d,0x00000195,0x0004003d,0x00000008,0x00000196,0x00000190, + 0x0003003e,0x00000160,0x00000196,0x0004003d,0x00000008,0x00000197,0x00000192,0x0003003e, + 0x00000163,0x00000197,0x0004003d,0x00000008,0x00000199,0x0000013f,0x00050085,0x00000008, + 0x0000019b,0x00000199,0x0000019a,0x0004003d,0x00000008,0x0000019c,0x00000139,0x00050085, + 0x00000008,0x0000019d,0x0000019c,0x0000019a,0x0004003d,0x00000008,0x0000019e,0x0000013c, + 0x00050081,0x00000008,0x0000019f,0x0000019d,0x0000019e,0x00050081,0x00000008,0x000001a0, + 0x0000019b,0x0000019f,0x0003003e,0x00000198,0x000001a0,0x0004003d,0x00000008,0x000001a2, + 0x00000148,0x00050085,0x00000008,0x000001a3,0x000001a2,0x0000019a,0x0004003d,0x00000008, + 0x000001a4,0x00000142,0x00050085,0x00000008,0x000001a5,0x000001a4,0x0000019a,0x0004003d, + 0x00000008,0x000001a6,0x00000145,0x00050081,0x00000008,0x000001a7,0x000001a5,0x000001a6, + 0x00050081,0x00000008,0x000001a8,0x000001a3,0x000001a7,0x0003003e,0x000001a1,0x000001a8, + 0x0004003d,0x00000008,0x000001aa,0x00000151,0x00050085,0x00000008,0x000001ab,0x000001aa, + 0x0000019a,0x0004003d,0x00000008,0x000001ac,0x0000014b,0x00050085,0x00000008,0x000001ad, + 0x000001ac,0x0000019a,0x0004003d,0x00000008,0x000001ae,0x0000014e,0x00050081,0x00000008, + 0x000001af,0x000001ad,0x000001ae,0x00050081,0x00000008,0x000001b0,0x000001ab,0x000001af, + 0x0003003e,0x000001a9,0x000001b0,0x0004003d,0x00000008,0x000001b2,0x0000015a,0x00050085, + 0x00000008,0x000001b3,0x000001b2,0x0000019a,0x0004003d,0x00000008,0x000001b4,0x00000154, + 0x00050085,0x00000008,0x000001b5,0x000001b4,0x0000019a,0x0004003d,0x00000008,0x000001b6, + 0x00000157,0x00050081,0x00000008,0x000001b7,0x000001b5,0x000001b6,0x00050081,0x00000008, + 0x000001b8,0x000001b3,0x000001b7,0x0003003e,0x000001b1,0x000001b8,0x0004003d,0x00000008, + 0x000001ba,0x00000163,0x00050085,0x00000008,0x000001bb,0x000001ba,0x0000019a,0x0004003d, + 0x00000008,0x000001bc,0x0000015d,0x00050085,0x00000008,0x000001bd,0x000001bc,0x0000019a, + 0x0004003d,0x00000008,0x000001be,0x00000160,0x00050081,0x00000008,0x000001bf,0x000001bd, + 0x000001be,0x00050081,0x00000008,0x000001c0,0x000001bb,0x000001bf,0x0003003e,0x000001b9, + 0x000001c0,0x0004003d,0x00000008,0x000001c3,0x00000198,0x00050085,0x00000008,0x000001c4, + 0x000001c2,0x000001c3,0x0004003d,0x00000008,0x000001c5,0x000001a1,0x00050085,0x00000008, + 0x000001c6,0x000001c2,0x000001c5,0x00050081,0x00000008,0x000001c7,0x000001c4,0x000001c6, + 0x0004003d,0x00000008,0x000001c8,0x000001b1,0x00050085,0x00000008,0x000001c9,0x000001c2, + 0x000001c8,0x00050081,0x00000008,0x000001ca,0x000001c7,0x000001c9,0x0004003d,0x00000008, + 0x000001cb,0x000001b9,0x00050085,0x00000008,0x000001cc,0x000001c2,0x000001cb,0x00050081, + 0x00000008,0x000001cd,0x000001ca,0x000001cc,0x0004003d,0x00000008,0x000001ce,0x000001a9, + 0x00050083,0x00000008,0x000001cf,0x000001cd,0x000001ce,0x0003003e,0x000001c1,0x000001cf, + 0x0004003d,0x00000008,0x000001d0,0x000001c1,0x0006000c,0x00000008,0x000001d1,0x00000001, + 0x00000004,0x000001d0,0x0004003d,0x00000008,0x000001d3,0x00000198,0x0003003e,0x000001d2, + 0x000001d3,0x0004003d,0x00000008,0x000001d5,0x000001a1,0x0003003e,0x000001d4,0x000001d5, + 0x0004003d,0x00000008,0x000001d7,0x000001a9,0x0003003e,0x000001d6,0x000001d7,0x00070039, + 0x00000008,0x000001d8,0x00000021,0x000001d2,0x000001d4,0x000001d6,0x0003003e,0x000001d9, + 0x000001d8,0x0004003d,0x00000008,0x000001db,0x000001b1,0x0003003e,0x000001da,0x000001db, + 0x0004003d,0x00000008,0x000001dd,0x000001b9,0x0003003e,0x000001dc,0x000001dd,0x00070039, + 0x00000008,0x000001de,0x00000021,0x000001d9,0x000001da,0x000001dc,0x0004003d,0x00000008, + 0x000001e0,0x00000198,0x0003003e,0x000001df,0x000001e0,0x0004003d,0x00000008,0x000001e2, + 0x000001a1,0x0003003e,0x000001e1,0x000001e2,0x0004003d,0x00000008,0x000001e4,0x000001a9, + 0x0003003e,0x000001e3,0x000001e4,0x00070039,0x00000008,0x000001e5,0x00000026,0x000001df, + 0x000001e1,0x000001e3,0x0003003e,0x000001e6,0x000001e5,0x0004003d,0x00000008,0x000001e8, + 0x000001b1,0x0003003e,0x000001e7,0x000001e8,0x0004003d,0x00000008,0x000001ea,0x000001b9, + 0x0003003e,0x000001e9,0x000001ea,0x00070039,0x00000008,0x000001eb,0x00000026,0x000001e6, + 0x000001e7,0x000001e9,0x00050083,0x00000008,0x000001ec,0x000001de,0x000001eb,0x0003003e, + 0x000001ed,0x000001ec,0x00050039,0x00000008,0x000001ee,0x00000035,0x000001ed,0x00050085, + 0x00000008,0x000001ef,0x000001d1,0x000001ee,0x0003003e,0x000001f0,0x000001ef,0x00050039, + 0x00000008,0x000001f1,0x0000002d,0x000001f0,0x0003003e,0x000001c1,0x000001f1,0x0004003d, + 0x00000008,0x000001f3,0x000001c1,0x00050085,0x00000008,0x000001f4,0x000001f2,0x000001f3, + 0x00050081,0x00000008,0x000001f5,0x000001f4,0x0000009c,0x0003003e,0x000001c1,0x000001f5, + 0x0004003d,0x00000008,0x000001f8,0x00000139,0x0003003e,0x000001f7,0x000001f8,0x0004003d, + 0x00000008,0x000001fa,0x00000142,0x0003003e,0x000001f9,0x000001fa,0x0004003d,0x00000008, + 0x000001fc,0x00000154,0x0003003e,0x000001fb,0x000001fc,0x00070039,0x00000008,0x000001fd, + 0x00000026,0x000001f7,0x000001f9,0x000001fb,0x0003003e,0x000001fe,0x000001fd,0x0004003d, + 0x00000008,0x00000200,0x0000015d,0x0003003e,0x000001ff,0x00000200,0x00060039,0x00000008, + 0x00000201,0x00000032,0x000001fe,0x000001ff,0x0003003e,0x000001f6,0x00000201,0x0004003d, + 0x00000008,0x00000204,0x0000013c,0x0003003e,0x00000203,0x00000204,0x0004003d,0x00000008, + 0x00000206,0x00000145,0x0003003e,0x00000205,0x00000206,0x0004003d,0x00000008,0x00000208, + 0x00000157,0x0003003e,0x00000207,0x00000208,0x00070039,0x00000008,0x00000209,0x00000026, + 0x00000203,0x00000205,0x00000207,0x0003003e,0x0000020a,0x00000209,0x0004003d,0x00000008, + 0x0000020c,0x00000160,0x0003003e,0x0000020b,0x0000020c,0x00060039,0x00000008,0x0000020d, + 0x00000032,0x0000020a,0x0000020b,0x0003003e,0x00000202,0x0000020d,0x0004003d,0x00000008, + 0x00000210,0x0000013f,0x0003003e,0x0000020f,0x00000210,0x0004003d,0x00000008,0x00000212, + 0x00000148,0x0003003e,0x00000211,0x00000212,0x0004003d,0x00000008,0x00000214,0x0000015a, + 0x0003003e,0x00000213,0x00000214,0x00070039,0x00000008,0x00000215,0x00000026,0x0000020f, + 0x00000211,0x00000213,0x0003003e,0x00000216,0x00000215,0x0004003d,0x00000008,0x00000218, + 0x00000163,0x0003003e,0x00000217,0x00000218,0x00060039,0x00000008,0x00000219,0x00000032, + 0x00000216,0x00000217,0x0003003e,0x0000020e,0x00000219,0x0004003d,0x00000008,0x0000021c, + 0x00000139,0x0003003e,0x0000021b,0x0000021c,0x0004003d,0x00000008,0x0000021e,0x00000142, + 0x0003003e,0x0000021d,0x0000021e,0x0004003d,0x00000008,0x00000220,0x00000154,0x0003003e, + 0x0000021f,0x00000220,0x00070039,0x00000008,0x00000221,0x00000021,0x0000021b,0x0000021d, + 0x0000021f,0x0004003d,0x00000008,0x00000222,0x0000015d,0x0007000c,0x00000008,0x00000223, + 0x00000001,0x00000028,0x00000221,0x00000222,0x0003003e,0x0000021a,0x00000223,0x0004003d, + 0x00000008,0x00000226,0x0000013c,0x0003003e,0x00000225,0x00000226,0x0004003d,0x00000008, + 0x00000228,0x00000145,0x0003003e,0x00000227,0x00000228,0x0004003d,0x00000008,0x0000022a, + 0x00000157,0x0003003e,0x00000229,0x0000022a,0x00070039,0x00000008,0x0000022b,0x00000021, + 0x00000225,0x00000227,0x00000229,0x0004003d,0x00000008,0x0000022c,0x00000160,0x0007000c, + 0x00000008,0x0000022d,0x00000001,0x00000028,0x0000022b,0x0000022c,0x0003003e,0x00000224, + 0x0000022d,0x0004003d,0x00000008,0x00000230,0x0000013f,0x0003003e,0x0000022f,0x00000230, + 0x0004003d,0x00000008,0x00000232,0x00000148,0x0003003e,0x00000231,0x00000232,0x0004003d, + 0x00000008,0x00000234,0x0000015a,0x0003003e,0x00000233,0x00000234,0x00070039,0x00000008, + 0x00000235,0x00000021,0x0000022f,0x00000231,0x00000233,0x0004003d,0x00000008,0x00000236, + 0x00000163,0x0007000c,0x00000008,0x00000237,0x00000001,0x00000028,0x00000235,0x00000236, + 0x0003003e,0x0000022e,0x00000237,0x0003003e,0x0000023a,0x0000023c,0x0004003d,0x00000008, + 0x0000023e,0x000001f6,0x0004003d,0x00000008,0x00000240,0x0000021a,0x00050085,0x00000008, + 0x00000241,0x0000023f,0x00000240,0x0003003e,0x00000242,0x00000241,0x00050039,0x00000008, + 0x00000243,0x0000002a,0x00000242,0x00050085,0x00000008,0x00000244,0x0000023e,0x00000243, + 0x0003003e,0x0000023d,0x00000244,0x0004003d,0x00000008,0x00000246,0x00000202,0x0004003d, + 0x00000008,0x00000247,0x00000224,0x00050085,0x00000008,0x00000248,0x0000023f,0x00000247, + 0x0003003e,0x00000249,0x00000248,0x00050039,0x00000008,0x0000024a,0x0000002a,0x00000249, + 0x00050085,0x00000008,0x0000024b,0x00000246,0x0000024a,0x0003003e,0x00000245,0x0000024b, + 0x0004003d,0x00000008,0x0000024d,0x0000020e,0x0004003d,0x00000008,0x0000024e,0x0000022e, + 0x00050085,0x00000008,0x0000024f,0x0000023f,0x0000024e,0x0003003e,0x00000250,0x0000024f, + 0x00050039,0x00000008,0x00000251,0x0000002a,0x00000250,0x00050085,0x00000008,0x00000252, + 0x0000024d,0x00000251,0x0003003e,0x0000024c,0x00000252,0x00050041,0x0000000d,0x00000254, + 0x0000023a,0x000000f0,0x0004003d,0x00000008,0x00000255,0x00000254,0x0004003d,0x00000008, + 0x00000256,0x0000021a,0x00050083,0x00000008,0x00000257,0x00000255,0x00000256,0x0004003d, + 0x00000008,0x00000258,0x000001f6,0x00050085,0x00000008,0x00000259,0x0000023f,0x00000258, + 0x00050041,0x0000000d,0x0000025a,0x0000023a,0x000000bd,0x0004003d,0x00000008,0x0000025b, + 0x0000025a,0x00050081,0x00000008,0x0000025c,0x00000259,0x0000025b,0x0003003e,0x0000025d, + 0x0000025c,0x00050039,0x00000008,0x0000025e,0x0000002a,0x0000025d,0x00050085,0x00000008, + 0x0000025f,0x00000257,0x0000025e,0x0003003e,0x00000253,0x0000025f,0x00050041,0x0000000d, + 0x00000261,0x0000023a,0x000000f0,0x0004003d,0x00000008,0x00000262,0x00000261,0x0004003d, + 0x00000008,0x00000263,0x00000224,0x00050083,0x00000008,0x00000264,0x00000262,0x00000263, + 0x0004003d,0x00000008,0x00000265,0x00000202,0x00050085,0x00000008,0x00000266,0x0000023f, + 0x00000265,0x00050041,0x0000000d,0x00000267,0x0000023a,0x000000bd,0x0004003d,0x00000008, + 0x00000268,0x00000267,0x00050081,0x00000008,0x00000269,0x00000266,0x00000268,0x0003003e, + 0x0000026a,0x00000269,0x00050039,0x00000008,0x0000026b,0x0000002a,0x0000026a,0x00050085, + 0x00000008,0x0000026c,0x00000264,0x0000026b,0x0003003e,0x00000260,0x0000026c,0x00050041, + 0x0000000d,0x0000026e,0x0000023a,0x000000f0,0x0004003d,0x00000008,0x0000026f,0x0000026e, + 0x0004003d,0x00000008,0x00000270,0x0000022e,0x00050083,0x00000008,0x00000271,0x0000026f, + 0x00000270,0x0004003d,0x00000008,0x00000272,0x0000020e,0x00050085,0x00000008,0x00000273, + 0x0000023f,0x00000272,0x00050041,0x0000000d,0x00000274,0x0000023a,0x000000bd,0x0004003d, + 0x00000008,0x00000275,0x00000274,0x00050081,0x00000008,0x00000276,0x00000273,0x00000275, + 0x0003003e,0x00000277,0x00000276,0x00050039,0x00000008,0x00000278,0x0000002a,0x00000277, + 0x00050085,0x00000008,0x00000279,0x00000271,0x00000278,0x0003003e,0x0000026d,0x00000279, + 0x0004003d,0x00000008,0x0000027b,0x0000023d,0x0004007f,0x00000008,0x0000027c,0x0000027b, + 0x0004003d,0x00000008,0x0000027d,0x00000253,0x0007000c,0x00000008,0x0000027e,0x00000001, + 0x00000028,0x0000027c,0x0000027d,0x0003003e,0x0000027a,0x0000027e,0x0004003d,0x00000008, + 0x00000280,0x00000245,0x0004007f,0x00000008,0x00000281,0x00000280,0x0004003d,0x00000008, + 0x00000282,0x00000260,0x0007000c,0x00000008,0x00000283,0x00000001,0x00000028,0x00000281, + 0x00000282,0x0003003e,0x0000027f,0x00000283,0x0004003d,0x00000008,0x00000285,0x0000024c, + 0x0004007f,0x00000008,0x00000286,0x00000285,0x0004003d,0x00000008,0x00000287,0x0000026d, + 0x0007000c,0x00000008,0x00000288,0x00000001,0x00000028,0x00000286,0x00000287,0x0003003e, + 0x00000284,0x00000288,0x0004003d,0x00000008,0x0000028c,0x0000027a,0x0003003e,0x0000028b, + 0x0000028c,0x0004003d,0x00000008,0x0000028e,0x0000027f,0x0003003e,0x0000028d,0x0000028e, + 0x0004003d,0x00000008,0x00000290,0x00000284,0x0003003e,0x0000028f,0x00000290,0x00070039, + 0x00000008,0x00000291,0x00000021,0x0000028b,0x0000028d,0x0000028f,0x0003003e,0x00000292, + 0x00000291,0x0003003e,0x00000293,0x000000a2,0x00060039,0x00000008,0x00000294,0x00000032, + 0x00000292,0x00000293,0x0007000c,0x00000008,0x00000295,0x00000001,0x00000028,0x0000028a, + 0x00000294,0x00050041,0x00000007,0x00000297,0x00000067,0x000000f0,0x0004003d,0x00000006, + 0x00000298,0x00000297,0x0003003e,0x00000296,0x00000298,0x00050039,0x00000008,0x00000299, + 0x0000000b,0x00000296,0x00050085,0x00000008,0x0000029a,0x00000295,0x00000299,0x0003003e, + 0x00000289,0x0000029a,0x0004003d,0x00000008,0x0000029b,0x000001c1,0x0004003d,0x00000008, + 0x0000029c,0x00000289,0x00050085,0x00000008,0x0000029d,0x0000029c,0x0000029b,0x0003003e, + 0x00000289,0x0000029d,0x0004003d,0x00000008,0x0000029f,0x00000289,0x00050085,0x00000008, + 0x000002a0,0x0000023f,0x0000029f,0x00050081,0x00000008,0x000002a1,0x000002a0,0x0000009c, + 0x0003003e,0x000002a2,0x000002a1,0x00050039,0x00000008,0x000002a3,0x00000035,0x000002a2, + 0x0003003e,0x0000029e,0x000002a3,0x0004003d,0x00000008,0x000002a4,0x00000289,0x0004003d, + 0x00000008,0x000002a5,0x00000139,0x00050085,0x00000008,0x000002a6,0x000002a4,0x000002a5, + 0x0004003d,0x00000008,0x000002a7,0x00000289,0x0004003d,0x00000008,0x000002a8,0x00000142, + 0x00050085,0x00000008,0x000002a9,0x000002a7,0x000002a8,0x00050081,0x00000008,0x000002aa, + 0x000002a6,0x000002a9,0x0004003d,0x00000008,0x000002ab,0x00000289,0x0004003d,0x00000008, + 0x000002ac,0x0000015d,0x00050085,0x00000008,0x000002ad,0x000002ab,0x000002ac,0x00050081, + 0x00000008,0x000002ae,0x000002aa,0x000002ad,0x0004003d,0x00000008,0x000002af,0x00000289, + 0x0004003d,0x00000008,0x000002b0,0x00000154,0x00050085,0x00000008,0x000002b1,0x000002af, + 0x000002b0,0x00050081,0x00000008,0x000002b2,0x000002ae,0x000002b1,0x0004003d,0x00000008, + 0x000002b3,0x0000014b,0x00050081,0x00000008,0x000002b4,0x000002b2,0x000002b3,0x0004003d, + 0x00000008,0x000002b5,0x0000029e,0x00050085,0x00000008,0x000002b6,0x000002b4,0x000002b5, + 0x0003003e,0x00000063,0x000002b6,0x0004003d,0x00000008,0x000002b7,0x00000289,0x0004003d, + 0x00000008,0x000002b8,0x0000013c,0x00050085,0x00000008,0x000002b9,0x000002b7,0x000002b8, + 0x0004003d,0x00000008,0x000002ba,0x00000289,0x0004003d,0x00000008,0x000002bb,0x00000145, + 0x00050085,0x00000008,0x000002bc,0x000002ba,0x000002bb,0x00050081,0x00000008,0x000002bd, + 0x000002b9,0x000002bc,0x0004003d,0x00000008,0x000002be,0x00000289,0x0004003d,0x00000008, + 0x000002bf,0x00000160,0x00050085,0x00000008,0x000002c0,0x000002be,0x000002bf,0x00050081, + 0x00000008,0x000002c1,0x000002bd,0x000002c0,0x0004003d,0x00000008,0x000002c2,0x00000289, + 0x0004003d,0x00000008,0x000002c3,0x00000157,0x00050085,0x00000008,0x000002c4,0x000002c2, + 0x000002c3,0x00050081,0x00000008,0x000002c5,0x000002c1,0x000002c4,0x0004003d,0x00000008, + 0x000002c6,0x0000014e,0x00050081,0x00000008,0x000002c7,0x000002c5,0x000002c6,0x0004003d, + 0x00000008,0x000002c8,0x0000029e,0x00050085,0x00000008,0x000002c9,0x000002c7,0x000002c8, + 0x0003003e,0x00000064,0x000002c9,0x0004003d,0x00000008,0x000002ca,0x00000289,0x0004003d, + 0x00000008,0x000002cb,0x0000013f,0x00050085,0x00000008,0x000002cc,0x000002ca,0x000002cb, + 0x0004003d,0x00000008,0x000002cd,0x00000289,0x0004003d,0x00000008,0x000002ce,0x00000148, + 0x00050085,0x00000008,0x000002cf,0x000002cd,0x000002ce,0x00050081,0x00000008,0x000002d0, + 0x000002cc,0x000002cf,0x0004003d,0x00000008,0x000002d1,0x00000289,0x0004003d,0x00000008, + 0x000002d2,0x00000163,0x00050085,0x00000008,0x000002d3,0x000002d1,0x000002d2,0x00050081, + 0x00000008,0x000002d4,0x000002d0,0x000002d3,0x0004003d,0x00000008,0x000002d5,0x00000289, + 0x0004003d,0x00000008,0x000002d6,0x0000015a,0x00050085,0x00000008,0x000002d7,0x000002d5, + 0x000002d6,0x00050081,0x00000008,0x000002d8,0x000002d4,0x000002d7,0x0004003d,0x00000008, + 0x000002d9,0x00000151,0x00050081,0x00000008,0x000002da,0x000002d8,0x000002d9,0x0004003d, + 0x00000008,0x000002db,0x0000029e,0x00050085,0x00000008,0x000002dc,0x000002da,0x000002db, + 0x0003003e,0x00000065,0x000002dc,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000006c, + 0x00000000,0x0000006a,0x00030037,0x00000052,0x0000006b,0x000200f8,0x0000006d,0x0004003b, + 0x00000049,0x000002de,0x00000007,0x0004003b,0x0000000d,0x000002e0,0x00000007,0x0004003b, + 0x0000000d,0x000002e1,0x00000007,0x0004003b,0x0000000d,0x000002e2,0x00000007,0x0004003b, + 0x00000052,0x000002e3,0x00000007,0x0004003b,0x00000061,0x000002e5,0x00000007,0x0004003b, + 0x00000052,0x000002f1,0x00000007,0x0004003b,0x00000049,0x000002f3,0x00000007,0x00040039, + 0x0000003c,0x000002df,0x0000003e,0x0004003d,0x00000037,0x000002e4,0x0000006b,0x0003003e, + 0x000002e3,0x000002e4,0x0003003e,0x000002e5,0x000002df,0x00090039,0x00000002,0x000002e6, + 0x00000068,0x000002e0,0x000002e1,0x000002e2,0x000002e3,0x000002e5,0x0004003d,0x00000008, + 0x000002e7,0x000002e0,0x00050041,0x0000000d,0x000002e8,0x000002de,0x000000f0,0x0003003e, + 0x000002e8,0x000002e7,0x0004003d,0x00000008,0x000002e9,0x000002e1,0x00050041,0x0000000d, + 0x000002ea,0x000002de,0x000000bd,0x0003003e,0x000002ea,0x000002e9,0x0004003d,0x00000008, + 0x000002eb,0x000002e2,0x00050041,0x0000000d,0x000002ec,0x000002de,0x0000010d,0x0003003e, + 0x000002ec,0x000002eb,0x00040039,0x00000008,0x000002ed,0x00000050,0x0004003d,0x00000048, + 0x000002ee,0x000002de,0x00060050,0x00000048,0x000002ef,0x000002ed,0x000002ed,0x000002ed, + 0x00050088,0x00000048,0x000002f0,0x000002ee,0x000002ef,0x0003003e,0x000002de,0x000002f0, + 0x0004003d,0x00000037,0x000002f2,0x0000006b,0x0003003e,0x000002f1,0x000002f2,0x0004003d, + 0x00000048,0x000002f4,0x000002de,0x0003003e,0x000002f3,0x000002f4,0x00060039,0x00000002, + 0x000002f5,0x00000056,0x000002f1,0x000002f3,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000074,0x00000000,0x00000070,0x00030037,0x0000006f,0x00000071,0x00030037,0x0000006f, + 0x00000072,0x00030037,0x0000006f,0x00000073,0x000200f8,0x00000075,0x0004003b,0x00000052, + 0x000002f6,0x00000007,0x0004003b,0x00000007,0x000002f7,0x00000007,0x0004003b,0x00000052, + 0x00000305,0x00000007,0x0004003b,0x00000052,0x0000030d,0x00000007,0x0004003b,0x00000052, + 0x00000314,0x00000007,0x0004003b,0x00000052,0x0000031b,0x00000007,0x00050041,0x00000007, + 0x000002f8,0x00000071,0x000000f0,0x0004003d,0x00000006,0x000002f9,0x000002f8,0x0003003e, + 0x000002f7,0x000002f9,0x00050039,0x00000037,0x000002fa,0x0000003a,0x000002f7,0x00050041, + 0x00000007,0x000002fb,0x00000072,0x000000f0,0x0004003d,0x00000006,0x000002fc,0x000002fb, + 0x000500c4,0x00000006,0x000002fe,0x000002fc,0x000002fd,0x00050041,0x00000007,0x000002ff, + 0x00000072,0x000000bd,0x0004003d,0x00000006,0x00000300,0x000002ff,0x000500c4,0x00000006, + 0x00000301,0x00000300,0x000002fd,0x00050050,0x00000037,0x00000302,0x000002fe,0x00000301, + 0x00050080,0x00000037,0x00000303,0x000002fa,0x00000302,0x0003003e,0x000002f6,0x00000303, + 0x0004003d,0x00000037,0x00000304,0x000002f6,0x0003003e,0x00000305,0x00000304,0x00050039, + 0x00000002,0x00000306,0x0000006c,0x00000305,0x00050041,0x00000007,0x00000308,0x000002f6, + 0x000000f0,0x0004003d,0x00000006,0x00000309,0x00000308,0x00050080,0x00000006,0x0000030a, + 0x00000309,0x00000307,0x00050041,0x00000007,0x0000030b,0x000002f6,0x000000f0,0x0003003e, + 0x0000030b,0x0000030a,0x0004003d,0x00000037,0x0000030c,0x000002f6,0x0003003e,0x0000030d, + 0x0000030c,0x00050039,0x00000002,0x0000030e,0x0000006c,0x0000030d,0x00050041,0x00000007, + 0x0000030f,0x000002f6,0x000000bd,0x0004003d,0x00000006,0x00000310,0x0000030f,0x00050080, + 0x00000006,0x00000311,0x00000310,0x00000307,0x00050041,0x00000007,0x00000312,0x000002f6, + 0x000000bd,0x0003003e,0x00000312,0x00000311,0x0004003d,0x00000037,0x00000313,0x000002f6, + 0x0003003e,0x00000314,0x00000313,0x00050039,0x00000002,0x00000315,0x0000006c,0x00000314, + 0x00050041,0x00000007,0x00000316,0x000002f6,0x000000f0,0x0004003d,0x00000006,0x00000317, + 0x00000316,0x00050082,0x00000006,0x00000318,0x00000317,0x00000307,0x00050041,0x00000007, + 0x00000319,0x000002f6,0x000000f0,0x0003003e,0x00000319,0x00000318,0x0004003d,0x00000037, + 0x0000031a,0x000002f6,0x0003003e,0x0000031b,0x0000031a,0x00050039,0x00000002,0x0000031c, + 0x0000006c,0x0000031b,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_shading_change_comp_spv.h b/gpu/vk/shaders/fsr3_shading_change_comp_spv.h new file mode 100644 index 000000000..892d24cc5 --- /dev/null +++ b/gpu/vk/shaders/fsr3_shading_change_comp_spv.h @@ -0,0 +1,282 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_SHADING_CHANGE_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x0000013d,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, + 0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d, + 0x00000000,0x00000128,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001, + 0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265, + 0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47, + 0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63, + 0x00736570,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70,0x5f656c79,0x656e696c, + 0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63, + 0x69645f65,0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00060005, + 0x0000000a,0x53786666,0x72757461,0x28657461,0x003b3166,0x00030005,0x00000009,0x00000078, + 0x00060005,0x00000011,0x4d786666,0x76286e69,0x763b3266,0x003b3266,0x00030005,0x0000000f, + 0x00000078,0x00030005,0x00000010,0x00000079,0x00060005,0x00000016,0x4d786666,0x66287861, + 0x31663b31,0x0000003b,0x00030005,0x00000014,0x00000078,0x00030005,0x00000015,0x00000079, + 0x00060005,0x0000001a,0x4d786666,0x76287861,0x763b3266,0x003b3266,0x00030005,0x00000018, + 0x00000078,0x00030005,0x00000019,0x00000079,0x00050005,0x0000001f,0x646e6552,0x69537265, + 0x0028657a,0x00040005,0x00000022,0x7474694a,0x00287265,0x00080005,0x00000028,0x53746547, + 0x694d4450,0x6d694470,0x69736e65,0x28736e6f,0x003b3175,0x00050005,0x00000027,0x70694d75, + 0x6576654c,0x0000006c,0x00090005,0x0000002d,0x706d6153,0x5053656c,0x70694d44,0x6576654c, + 0x6676286c,0x31753b32,0x0000003b,0x00030005,0x0000002b,0x00565566,0x00050005,0x0000002c, + 0x4c70696d,0x6c657665,0x00000000,0x00090005,0x00000033,0x726f7453,0x61685365,0x676e6964, + 0x6e616843,0x76286567,0x663b3269,0x00003b31,0x00040005,0x00000031,0x50785069,0x0000736f, + 0x00060005,0x00000032,0x61685366,0x676e6964,0x6e616843,0x00006567,0x00090005,0x00000035, + 0x64616853,0x43676e69,0x676e6168,0x6e655265,0x53726564,0x28657a69,0x00000000,0x00080005, + 0x0000003b,0x6d616c43,0x28765570,0x3b326676,0x3b326976,0x3b326976,0x00000000,0x00030005, + 0x00000038,0x00765566,0x00060005,0x00000039,0x78655469,0x65727574,0x657a6953,0x00000000, + 0x00060005,0x0000003a,0x73655269,0x6372756f,0x7a695365,0x00000065,0x00070005,0x00000041, + 0x6e4f7349,0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005,0x0000003f,0x00736f70, + 0x00040005,0x00000040,0x657a6973,0x00000000,0x00080005,0x00000045,0x64616853,0x43676e69, + 0x676e6168,0x6d754c65,0x666e4961,0x0000006f,0x00060006,0x00000045,0x00000000,0x6d615366, + 0x73656c70,0x00000000,0x000c0005,0x0000004a,0x706d6f43,0x53657475,0x69646168,0x6843676e, + 0x65676e61,0x616d754c,0x32697628,0x3266763b,0x3269763b,0x0000003b,0x00040005,0x00000047, + 0x50785069,0x0000736f,0x00030005,0x00000048,0x00765566,0x00060005,0x00000049,0x72754369, + 0x746e6572,0x657a6953,0x00000000,0x00070005,0x0000004e,0x64616853,0x43676e69,0x676e6168, + 0x69762865,0x00003b32,0x00040005,0x0000004d,0x50785069,0x0000736f,0x00070005,0x00000066, + 0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x00000066,0x00000000, + 0x6e655269,0x53726564,0x00657a69,0x000a0006,0x00000066,0x00000001,0x65725069,0x756f6976, + 0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x00000066,0x00000002, + 0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x00000066,0x00000003,0x65725069, + 0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x00000066, + 0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x00000066,0x00000005, + 0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x00000066,0x00000006,0x76654466, + 0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x00000066,0x00000007,0x74694a66, + 0x00726574,0x00090006,0x00000066,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d, + 0x72657474,0x00000000,0x00080006,0x00000066,0x00000009,0x746f4d66,0x566e6f69,0x6f746365, + 0x61635372,0x0000656c,0x00080006,0x00000066,0x0000000a,0x776f4466,0x6163736e,0x6146656c, + 0x726f7463,0x00000000,0x000b0006,0x00000066,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365, + 0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x00000066,0x0000000c, + 0x6e615466,0x666c6148,0x00564f46,0x00090006,0x00000066,0x0000000d,0x74694a66,0x53726574, + 0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x00000066,0x0000000e,0x6c654466, + 0x69546174,0x0000656d,0x00080006,0x00000066,0x0000000f,0x6c654466,0x72506174,0x70784565, + 0x7275736f,0x00000065,0x000a0006,0x00000066,0x00000010,0x65695666,0x61705377,0x6f546563, + 0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x00000066,0x00000011,0x61724666, + 0x6e49656d,0x00786564,0x00070006,0x00000066,0x00000012,0x6c655666,0x7469636f,0x63614679, + 0x00726f74,0x00080006,0x00000066,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373, + 0x0000656c,0x00080006,0x00000066,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567, + 0x00656c61,0x000a0006,0x00000066,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e, + 0x65506465,0x61724672,0x0000656d,0x000b0006,0x00000066,0x00000016,0x6e694d66,0x6f736944, + 0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x00000068, + 0x53466263,0x70553352,0x6c616373,0x00007265,0x00050005,0x00000077,0x70735f72,0x696d5f64, + 0x00007370,0x00060005,0x00000081,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00070005, + 0x0000008e,0x735f7772,0x69646168,0x635f676e,0x676e6168,0x00000065,0x00060005,0x0000009a, + 0x6d615366,0x4c656c70,0x7461636f,0x006e6f69,0x00070005,0x0000009f,0x616c4366,0x6465706d, + 0x61636f4c,0x6e6f6974,0x00000000,0x00040005,0x000000a4,0x61726170,0x0000006d,0x00040005, + 0x000000a6,0x61726170,0x0000006d,0x00040005,0x000000a8,0x61726170,0x0000006d,0x00040005, + 0x000000a9,0x61726170,0x0000006d,0x00050005,0x000000ab,0x616c4366,0x6465706d,0x00007655, + 0x00040005,0x000000bd,0x70694d66,0x00007655,0x00040005,0x000000c0,0x61726170,0x0000006d, + 0x00040005,0x000000c2,0x61726170,0x0000006d,0x00040005,0x000000c4,0x61726170,0x0000006d, + 0x00040005,0x000000c5,0x61726170,0x0000006d,0x00050005,0x000000c8,0x70694d69,0x6576654c, + 0x0000006c,0x00040005,0x000000d1,0x6d615366,0x00656c70,0x00040005,0x000000d4,0x61726170, + 0x0000006d,0x00040005,0x000000d6,0x61726170,0x0000006d,0x00040005,0x000000d9,0x6f666e69, + 0x00000000,0x00040005,0x000000eb,0x61726170,0x0000006d,0x00040005,0x000000ec,0x61726170, + 0x0000006d,0x00030005,0x000000f0,0x00765566,0x00050005,0x000000f8,0x4a765566,0x65747469, + 0x00646572,0x00040005,0x000000ff,0x6f666e69,0x00000000,0x00040005,0x00000101,0x61726170, + 0x0000006d,0x00040005,0x00000103,0x61726170,0x0000006d,0x00060005,0x00000106,0x61685366, + 0x676e6964,0x6e616843,0x00006567,0x00050005,0x00000107,0x70694d69,0x6576654c,0x0000006c, + 0x00040005,0x00000116,0x61726170,0x0000006d,0x00040005,0x00000118,0x61726170,0x0000006d, + 0x00040005,0x0000011f,0x61726170,0x0000006d,0x00040005,0x00000122,0x61726170,0x0000006d, + 0x00040005,0x00000124,0x61726170,0x0000006d,0x00080005,0x00000128,0x475f6c67,0x61626f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x0000012c,0x61726170,0x0000006d, + 0x00060005,0x00000131,0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00030047,0x00000066, + 0x00000002,0x00050048,0x00000066,0x00000000,0x00000023,0x00000000,0x00050048,0x00000066, + 0x00000001,0x00000023,0x00000008,0x00050048,0x00000066,0x00000002,0x00000023,0x00000010, + 0x00050048,0x00000066,0x00000003,0x00000023,0x00000018,0x00050048,0x00000066,0x00000004, + 0x00000023,0x00000020,0x00050048,0x00000066,0x00000005,0x00000023,0x00000028,0x00050048, + 0x00000066,0x00000006,0x00000023,0x00000030,0x00050048,0x00000066,0x00000007,0x00000023, + 0x00000040,0x00050048,0x00000066,0x00000008,0x00000023,0x00000048,0x00050048,0x00000066, + 0x00000009,0x00000023,0x00000050,0x00050048,0x00000066,0x0000000a,0x00000023,0x00000058, + 0x00050048,0x00000066,0x0000000b,0x00000023,0x00000060,0x00050048,0x00000066,0x0000000c, + 0x00000023,0x00000068,0x00050048,0x00000066,0x0000000d,0x00000023,0x0000006c,0x00050048, + 0x00000066,0x0000000e,0x00000023,0x00000070,0x00050048,0x00000066,0x0000000f,0x00000023, + 0x00000074,0x00050048,0x00000066,0x00000010,0x00000023,0x00000078,0x00050048,0x00000066, + 0x00000011,0x00000023,0x0000007c,0x00050048,0x00000066,0x00000012,0x00000023,0x00000080, + 0x00050048,0x00000066,0x00000013,0x00000023,0x00000084,0x00050048,0x00000066,0x00000014, + 0x00000023,0x00000088,0x00050048,0x00000066,0x00000015,0x00000023,0x0000008c,0x00050048, + 0x00000066,0x00000016,0x00000023,0x00000090,0x00040047,0x00000068,0x00000021,0x00000002, + 0x00040047,0x00000068,0x00000022,0x00000000,0x00040047,0x00000077,0x00000021,0x00000000, + 0x00040047,0x00000077,0x00000022,0x00000000,0x00040047,0x00000081,0x00000021,0x000003e9, + 0x00040047,0x00000081,0x00000022,0x00000000,0x00040047,0x0000008e,0x00000021,0x00000001, + 0x00040047,0x0000008e,0x00000022,0x00000000,0x00040047,0x00000128,0x0000000b,0x0000001c, + 0x00040047,0x00000131,0x00000021,0x000003e8,0x00040047,0x00000131,0x00000022,0x00000000, + 0x00040047,0x0000013c,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, + 0x00000002,0x00030016,0x00000006,0x00000020,0x00040020,0x00000007,0x00000007,0x00000006, + 0x00040021,0x00000008,0x00000006,0x00000007,0x00040017,0x0000000c,0x00000006,0x00000002, + 0x00040020,0x0000000d,0x00000007,0x0000000c,0x00050021,0x0000000e,0x0000000c,0x0000000d, + 0x0000000d,0x00050021,0x00000013,0x00000006,0x00000007,0x00000007,0x00040015,0x0000001c, + 0x00000020,0x00000001,0x00040017,0x0000001d,0x0000001c,0x00000002,0x00030021,0x0000001e, + 0x0000001d,0x00030021,0x00000021,0x0000000c,0x00040015,0x00000024,0x00000020,0x00000000, + 0x00040020,0x00000025,0x00000007,0x00000024,0x00040021,0x00000026,0x0000001d,0x00000025, + 0x00050021,0x0000002a,0x0000000c,0x0000000d,0x00000025,0x00040020,0x0000002f,0x00000007, + 0x0000001d,0x00050021,0x00000030,0x00000002,0x0000002f,0x00000007,0x00060021,0x00000037, + 0x0000000c,0x0000000d,0x0000002f,0x0000002f,0x00020014,0x0000003d,0x00050021,0x0000003e, + 0x0000003d,0x0000002f,0x0000002f,0x0004002b,0x00000024,0x00000043,0x00000003,0x0004001c, + 0x00000044,0x00000006,0x00000043,0x0003001e,0x00000045,0x00000044,0x00060021,0x00000046, + 0x00000045,0x0000002f,0x0000000d,0x0000001d,0x00040021,0x0000004c,0x00000002,0x0000002f, + 0x0004002b,0x00000006,0x00000051,0x00000000,0x0004002b,0x00000006,0x00000052,0x3f800000, + 0x00040017,0x00000065,0x00000006,0x00000004,0x0019001e,0x00000066,0x0000001d,0x0000001d, + 0x0000001d,0x0000001d,0x0000001d,0x0000001d,0x00000065,0x0000000c,0x0000000c,0x0000000c, + 0x0000000c,0x0000000c,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000067,0x00000002, + 0x00000066,0x0004003b,0x00000067,0x00000068,0x00000002,0x0004002b,0x0000001c,0x00000069, + 0x00000000,0x00040020,0x0000006a,0x00000002,0x0000001d,0x0004002b,0x0000001c,0x0000006f, + 0x00000007,0x00040020,0x00000070,0x00000002,0x0000000c,0x00090019,0x00000075,0x00000006, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x00000076, + 0x00000000,0x00000075,0x0004003b,0x00000076,0x00000077,0x00000000,0x0002001a,0x0000007f, + 0x00040020,0x00000080,0x00000000,0x0000007f,0x0004003b,0x00000080,0x00000081,0x00000000, + 0x0003001b,0x00000083,0x00000075,0x00090019,0x0000008c,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x0000000f,0x00040020,0x0000008d,0x00000000,0x0000008c, + 0x0004003b,0x0000008d,0x0000008e,0x00000000,0x0004002b,0x00000006,0x00000095,0x3f000000, + 0x0005002c,0x0000000c,0x000000a0,0x00000095,0x00000095,0x00040017,0x000000b4,0x00000024, + 0x00000002,0x00040017,0x000000b8,0x0000003d,0x00000002,0x0004002b,0x00000024,0x000000bf, + 0x00000000,0x00040020,0x000000c7,0x00000007,0x0000001c,0x0004002b,0x0000001c,0x000000cf, + 0x00000003,0x00040020,0x000000d8,0x00000007,0x00000045,0x0004002b,0x00000024,0x000000dd, + 0x00000001,0x0004002b,0x0000001c,0x000000e4,0x00000001,0x00040017,0x00000126,0x00000024, + 0x00000003,0x00040020,0x00000127,0x00000001,0x00000126,0x0004003b,0x00000127,0x00000128, + 0x00000001,0x0004002b,0x00000006,0x0000012e,0x387fda40,0x0004002b,0x00000006,0x0000012f, + 0x477fe000,0x0004002b,0x00000006,0x00000130,0x37801002,0x0004003b,0x00000080,0x00000131, + 0x00000000,0x0004002b,0x00000006,0x00000132,0x7f7fffff,0x0004002b,0x00000006,0x00000133, + 0x00800000,0x0004002b,0x00000006,0x00000134,0x3a1fe868,0x0004002b,0x00000006,0x00000135, + 0x3d800000,0x0004002b,0x00000006,0x00000136,0x3d3d70a4,0x0004002b,0x00000006,0x00000137, + 0x3e400000,0x0004002b,0x00000006,0x00000138,0x40000000,0x0004002b,0x0000001c,0x00000139, + 0x00000002,0x0004002b,0x00000006,0x0000013a,0x461c4000,0x0004002b,0x00000024,0x0000013b, + 0x00000008,0x0006002c,0x00000126,0x0000013c,0x0000013b,0x0000013b,0x000000dd,0x00050036, + 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000002f, + 0x0000012c,0x00000007,0x0004003d,0x00000126,0x00000129,0x00000128,0x0007004f,0x000000b4, + 0x0000012a,0x00000129,0x00000129,0x00000000,0x00000001,0x0004007c,0x0000001d,0x0000012b, + 0x0000012a,0x0003003e,0x0000012c,0x0000012b,0x00050039,0x00000002,0x0000012d,0x0000004e, + 0x0000012c,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000a,0x00000000,0x00000008, + 0x00030037,0x00000007,0x00000009,0x000200f8,0x0000000b,0x0004003d,0x00000006,0x00000050, + 0x00000009,0x0008000c,0x00000006,0x00000053,0x00000001,0x0000002b,0x00000050,0x00000051, + 0x00000052,0x000200fe,0x00000053,0x00010038,0x00050036,0x0000000c,0x00000011,0x00000000, + 0x0000000e,0x00030037,0x0000000d,0x0000000f,0x00030037,0x0000000d,0x00000010,0x000200f8, + 0x00000012,0x0004003d,0x0000000c,0x00000056,0x0000000f,0x0004003d,0x0000000c,0x00000057, + 0x00000010,0x0007000c,0x0000000c,0x00000058,0x00000001,0x00000025,0x00000056,0x00000057, + 0x000200fe,0x00000058,0x00010038,0x00050036,0x00000006,0x00000016,0x00000000,0x00000013, + 0x00030037,0x00000007,0x00000014,0x00030037,0x00000007,0x00000015,0x000200f8,0x00000017, + 0x0004003d,0x00000006,0x0000005b,0x00000014,0x0004003d,0x00000006,0x0000005c,0x00000015, + 0x0007000c,0x00000006,0x0000005d,0x00000001,0x00000028,0x0000005b,0x0000005c,0x000200fe, + 0x0000005d,0x00010038,0x00050036,0x0000000c,0x0000001a,0x00000000,0x0000000e,0x00030037, + 0x0000000d,0x00000018,0x00030037,0x0000000d,0x00000019,0x000200f8,0x0000001b,0x0004003d, + 0x0000000c,0x00000060,0x00000018,0x0004003d,0x0000000c,0x00000061,0x00000019,0x0007000c, + 0x0000000c,0x00000062,0x00000001,0x00000028,0x00000060,0x00000061,0x000200fe,0x00000062, + 0x00010038,0x00050036,0x0000001d,0x0000001f,0x00000000,0x0000001e,0x000200f8,0x00000020, + 0x00050041,0x0000006a,0x0000006b,0x00000068,0x00000069,0x0004003d,0x0000001d,0x0000006c, + 0x0000006b,0x000200fe,0x0000006c,0x00010038,0x00050036,0x0000000c,0x00000022,0x00000000, + 0x00000021,0x000200f8,0x00000023,0x00050041,0x00000070,0x00000071,0x00000068,0x0000006f, + 0x0004003d,0x0000000c,0x00000072,0x00000071,0x000200fe,0x00000072,0x00010038,0x00050036, + 0x0000001d,0x00000028,0x00000000,0x00000026,0x00030037,0x00000025,0x00000027,0x000200f8, + 0x00000029,0x0004003d,0x00000075,0x00000078,0x00000077,0x0004003d,0x00000024,0x00000079, + 0x00000027,0x0004007c,0x0000001c,0x0000007a,0x00000079,0x00050067,0x0000001d,0x0000007b, + 0x00000078,0x0000007a,0x000200fe,0x0000007b,0x00010038,0x00050036,0x0000000c,0x0000002d, + 0x00000000,0x0000002a,0x00030037,0x0000000d,0x0000002b,0x00030037,0x00000025,0x0000002c, + 0x000200f8,0x0000002e,0x0004003d,0x00000075,0x0000007e,0x00000077,0x0004003d,0x0000007f, + 0x00000082,0x00000081,0x00050056,0x00000083,0x00000084,0x0000007e,0x00000082,0x0004003d, + 0x0000000c,0x00000085,0x0000002b,0x0004003d,0x00000024,0x00000086,0x0000002c,0x00040070, + 0x00000006,0x00000087,0x00000086,0x00070058,0x00000065,0x00000088,0x00000084,0x00000085, + 0x00000002,0x00000087,0x0007004f,0x0000000c,0x00000089,0x00000088,0x00000088,0x00000000, + 0x00000001,0x000200fe,0x00000089,0x00010038,0x00050036,0x00000002,0x00000033,0x00000000, + 0x00000030,0x00030037,0x0000002f,0x00000031,0x00030037,0x00000007,0x00000032,0x000200f8, + 0x00000034,0x0004003d,0x0000008c,0x0000008f,0x0000008e,0x0004003d,0x0000001d,0x00000090, + 0x00000031,0x0004003d,0x00000006,0x00000091,0x00000032,0x00070050,0x00000065,0x00000092, + 0x00000091,0x00000051,0x00000051,0x00000051,0x00040063,0x0000008f,0x00000090,0x00000092, + 0x000100fd,0x00010038,0x00050036,0x0000001d,0x00000035,0x00000000,0x0000001e,0x000200f8, + 0x00000036,0x00040039,0x0000001d,0x00000093,0x0000001f,0x0004006f,0x0000000c,0x00000094, + 0x00000093,0x0005008e,0x0000000c,0x00000096,0x00000094,0x00000095,0x0004006e,0x0000001d, + 0x00000097,0x00000096,0x000200fe,0x00000097,0x00010038,0x00050036,0x0000000c,0x0000003b, + 0x00000000,0x00000037,0x00030037,0x0000000d,0x00000038,0x00030037,0x0000002f,0x00000039, + 0x00030037,0x0000002f,0x0000003a,0x000200f8,0x0000003c,0x0004003b,0x0000000d,0x0000009a, + 0x00000007,0x0004003b,0x0000000d,0x0000009f,0x00000007,0x0004003b,0x0000000d,0x000000a4, + 0x00000007,0x0004003b,0x0000000d,0x000000a6,0x00000007,0x0004003b,0x0000000d,0x000000a8, + 0x00000007,0x0004003b,0x0000000d,0x000000a9,0x00000007,0x0004003b,0x0000000d,0x000000ab, + 0x00000007,0x0004003d,0x0000000c,0x0000009b,0x00000038,0x0004003d,0x0000001d,0x0000009c, + 0x00000039,0x0004006f,0x0000000c,0x0000009d,0x0000009c,0x00050085,0x0000000c,0x0000009e, + 0x0000009b,0x0000009d,0x0003003e,0x0000009a,0x0000009e,0x0004003d,0x0000001d,0x000000a1, + 0x00000039,0x0004006f,0x0000000c,0x000000a2,0x000000a1,0x00050083,0x0000000c,0x000000a3, + 0x000000a2,0x000000a0,0x0004003d,0x0000000c,0x000000a5,0x0000009a,0x0003003e,0x000000a4, + 0x000000a5,0x0003003e,0x000000a6,0x000000a3,0x00060039,0x0000000c,0x000000a7,0x00000011, + 0x000000a4,0x000000a6,0x0003003e,0x000000a8,0x000000a0,0x0003003e,0x000000a9,0x000000a7, + 0x00060039,0x0000000c,0x000000aa,0x0000001a,0x000000a8,0x000000a9,0x0003003e,0x0000009f, + 0x000000aa,0x0004003d,0x0000000c,0x000000ac,0x0000009f,0x0004003d,0x0000001d,0x000000ad, + 0x0000003a,0x0004006f,0x0000000c,0x000000ae,0x000000ad,0x00050088,0x0000000c,0x000000af, + 0x000000ac,0x000000ae,0x0003003e,0x000000ab,0x000000af,0x0004003d,0x0000000c,0x000000b0, + 0x000000ab,0x000200fe,0x000000b0,0x00010038,0x00050036,0x0000003d,0x00000041,0x00000000, + 0x0000003e,0x00030037,0x0000002f,0x0000003f,0x00030037,0x0000002f,0x00000040,0x000200f8, + 0x00000042,0x0004003d,0x0000001d,0x000000b3,0x0000003f,0x0004007c,0x000000b4,0x000000b5, + 0x000000b3,0x0004003d,0x0000001d,0x000000b6,0x00000040,0x0004007c,0x000000b4,0x000000b7, + 0x000000b6,0x000500b0,0x000000b8,0x000000b9,0x000000b5,0x000000b7,0x0004009b,0x0000003d, + 0x000000ba,0x000000b9,0x000200fe,0x000000ba,0x00010038,0x00050036,0x00000045,0x0000004a, + 0x00000000,0x00000046,0x00030037,0x0000002f,0x00000047,0x00030037,0x0000000d,0x00000048, + 0x00030037,0x0000001d,0x00000049,0x000200f8,0x0000004b,0x0004003b,0x0000000d,0x000000bd, + 0x00000007,0x0004003b,0x00000025,0x000000c0,0x00000007,0x0004003b,0x0000000d,0x000000c2, + 0x00000007,0x0004003b,0x0000002f,0x000000c4,0x00000007,0x0004003b,0x0000002f,0x000000c5, + 0x00000007,0x0004003b,0x000000c7,0x000000c8,0x00000007,0x0004003b,0x0000000d,0x000000d1, + 0x00000007,0x0004003b,0x0000000d,0x000000d4,0x00000007,0x0004003b,0x00000025,0x000000d6, + 0x00000007,0x0004003b,0x000000d8,0x000000d9,0x00000007,0x00040039,0x0000001d,0x000000be, + 0x00000035,0x0003003e,0x000000c0,0x000000bf,0x00050039,0x0000001d,0x000000c1,0x00000028, + 0x000000c0,0x0004003d,0x0000000c,0x000000c3,0x00000048,0x0003003e,0x000000c2,0x000000c3, + 0x0003003e,0x000000c4,0x000000be,0x0003003e,0x000000c5,0x000000c1,0x00070039,0x0000000c, + 0x000000c6,0x0000003b,0x000000c2,0x000000c4,0x000000c5,0x0003003e,0x000000bd,0x000000c6, + 0x0003003e,0x000000c8,0x00000069,0x000200f9,0x000000c9,0x000200f8,0x000000c9,0x000400f6, + 0x000000cb,0x000000cc,0x00000000,0x000200f9,0x000000cd,0x000200f8,0x000000cd,0x0004003d, + 0x0000001c,0x000000ce,0x000000c8,0x000500b1,0x0000003d,0x000000d0,0x000000ce,0x000000cf, + 0x000400fa,0x000000d0,0x000000ca,0x000000cb,0x000200f8,0x000000ca,0x0004003d,0x0000001c, + 0x000000d2,0x000000c8,0x0004007c,0x00000024,0x000000d3,0x000000d2,0x0004003d,0x0000000c, + 0x000000d5,0x000000bd,0x0003003e,0x000000d4,0x000000d5,0x0003003e,0x000000d6,0x000000d3, + 0x00060039,0x0000000c,0x000000d7,0x0000002d,0x000000d4,0x000000d6,0x0003003e,0x000000d1, + 0x000000d7,0x0004003d,0x0000001c,0x000000da,0x000000c8,0x00050041,0x00000007,0x000000db, + 0x000000d1,0x000000bf,0x0004003d,0x00000006,0x000000dc,0x000000db,0x00050041,0x00000007, + 0x000000de,0x000000d1,0x000000dd,0x0004003d,0x00000006,0x000000df,0x000000de,0x00050085, + 0x00000006,0x000000e0,0x000000dc,0x000000df,0x0006000c,0x00000006,0x000000e1,0x00000001, + 0x00000004,0x000000e0,0x00060041,0x00000007,0x000000e2,0x000000d9,0x00000069,0x000000da, + 0x0003003e,0x000000e2,0x000000e1,0x000200f9,0x000000cc,0x000200f8,0x000000cc,0x0004003d, + 0x0000001c,0x000000e3,0x000000c8,0x00050080,0x0000001c,0x000000e5,0x000000e3,0x000000e4, + 0x0003003e,0x000000c8,0x000000e5,0x000200f9,0x000000c9,0x000200f8,0x000000cb,0x0004003d, + 0x00000045,0x000000e6,0x000000d9,0x000200fe,0x000000e6,0x00010038,0x00050036,0x00000002, + 0x0000004e,0x00000000,0x0000004c,0x00030037,0x0000002f,0x0000004d,0x000200f8,0x0000004f, + 0x0004003b,0x0000002f,0x000000eb,0x00000007,0x0004003b,0x0000002f,0x000000ec,0x00000007, + 0x0004003b,0x0000000d,0x000000f0,0x00000007,0x0004003b,0x0000000d,0x000000f8,0x00000007, + 0x0004003b,0x000000d8,0x000000ff,0x00000007,0x0004003b,0x0000002f,0x00000101,0x00000007, + 0x0004003b,0x0000000d,0x00000103,0x00000007,0x0004003b,0x00000007,0x00000106,0x00000007, + 0x0004003b,0x000000c7,0x00000107,0x00000007,0x0004003b,0x00000007,0x00000116,0x00000007, + 0x0004003b,0x00000007,0x00000118,0x00000007,0x0004003b,0x00000007,0x0000011f,0x00000007, + 0x0004003b,0x0000002f,0x00000122,0x00000007,0x0004003b,0x00000007,0x00000124,0x00000007, + 0x0004003d,0x0000001d,0x000000e9,0x0000004d,0x00040039,0x0000001d,0x000000ea,0x00000035, + 0x0003003e,0x000000eb,0x000000e9,0x0003003e,0x000000ec,0x000000ea,0x00060039,0x0000003d, + 0x000000ed,0x00000041,0x000000eb,0x000000ec,0x000300f7,0x000000ef,0x00000000,0x000400fa, + 0x000000ed,0x000000ee,0x000000ef,0x000200f8,0x000000ee,0x0004003d,0x0000001d,0x000000f1, + 0x0000004d,0x0004006f,0x0000000c,0x000000f2,0x000000f1,0x00050050,0x0000000c,0x000000f3, + 0x00000095,0x00000095,0x00050081,0x0000000c,0x000000f4,0x000000f2,0x000000f3,0x00040039, + 0x0000001d,0x000000f5,0x00000035,0x0004006f,0x0000000c,0x000000f6,0x000000f5,0x00050088, + 0x0000000c,0x000000f7,0x000000f4,0x000000f6,0x0003003e,0x000000f0,0x000000f7,0x0004003d, + 0x0000000c,0x000000f9,0x000000f0,0x00040039,0x0000000c,0x000000fa,0x00000022,0x00040039, + 0x0000001d,0x000000fb,0x0000001f,0x0004006f,0x0000000c,0x000000fc,0x000000fb,0x00050088, + 0x0000000c,0x000000fd,0x000000fa,0x000000fc,0x00050081,0x0000000c,0x000000fe,0x000000f9, + 0x000000fd,0x0003003e,0x000000f8,0x000000fe,0x00040039,0x0000001d,0x00000100,0x00000035, + 0x0004003d,0x0000001d,0x00000102,0x0000004d,0x0003003e,0x00000101,0x00000102,0x0004003d, + 0x0000000c,0x00000104,0x000000f8,0x0003003e,0x00000103,0x00000104,0x00070039,0x00000045, + 0x00000105,0x0000004a,0x00000101,0x00000103,0x00000100,0x0003003e,0x000000ff,0x00000105, + 0x0003003e,0x00000106,0x00000051,0x0003003e,0x00000107,0x00000069,0x000200f9,0x00000108, + 0x000200f8,0x00000108,0x000400f6,0x0000010a,0x0000010b,0x00000000,0x000200f9,0x0000010c, + 0x000200f8,0x0000010c,0x0004003d,0x0000001c,0x0000010d,0x00000107,0x000500b1,0x0000003d, + 0x0000010e,0x0000010d,0x000000cf,0x000400fa,0x0000010e,0x00000109,0x0000010a,0x000200f8, + 0x00000109,0x0004003d,0x0000001c,0x0000010f,0x00000107,0x00060041,0x00000007,0x00000110, + 0x000000ff,0x00000069,0x0000010f,0x0004003d,0x00000006,0x00000111,0x00000110,0x000500ba, + 0x0000003d,0x00000112,0x00000111,0x00000051,0x000300f7,0x00000114,0x00000000,0x000400fa, + 0x00000112,0x00000113,0x00000114,0x000200f8,0x00000113,0x0004003d,0x0000001c,0x00000115, + 0x00000107,0x0004003d,0x00000006,0x00000117,0x00000106,0x0003003e,0x00000116,0x00000117, + 0x00060041,0x00000007,0x00000119,0x000000ff,0x00000069,0x00000115,0x0004003d,0x00000006, + 0x0000011a,0x00000119,0x0003003e,0x00000118,0x0000011a,0x00060039,0x00000006,0x0000011b, + 0x00000016,0x00000116,0x00000118,0x00050085,0x00000006,0x0000011c,0x0000011b,0x00000052, + 0x0003003e,0x00000106,0x0000011c,0x000200f9,0x00000114,0x000200f8,0x00000114,0x000200f9, + 0x0000010b,0x000200f8,0x0000010b,0x0004003d,0x0000001c,0x0000011d,0x00000107,0x00050080, + 0x0000001c,0x0000011e,0x0000011d,0x000000e4,0x0003003e,0x00000107,0x0000011e,0x000200f9, + 0x00000108,0x000200f8,0x0000010a,0x0004003d,0x00000006,0x00000120,0x00000106,0x0003003e, + 0x0000011f,0x00000120,0x00050039,0x00000006,0x00000121,0x0000000a,0x0000011f,0x0004003d, + 0x0000001d,0x00000123,0x0000004d,0x0003003e,0x00000122,0x00000123,0x0003003e,0x00000124, + 0x00000121,0x00060039,0x00000002,0x00000125,0x00000033,0x00000122,0x00000124,0x000200f9, + 0x000000ef,0x000200f8,0x000000ef,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h b/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h new file mode 100644 index 000000000..ec5446d11 --- /dev/null +++ b/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h @@ -0,0 +1,1903 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_SHADING_CHANGE_PYRAMID_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x0000091b,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x00020011,0x0000003d,0x00020011,0x00000044,0x0006000b,0x00000001,0x4c534c47, + 0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,0x0007000f,0x00000005, + 0x00000004,0x6e69616d,0x00000000,0x00000905,0x00000907,0x00060010,0x00000004,0x00000011, + 0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47, + 0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69, + 0x00000000,0x000b0004,0x455f4c47,0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469, + 0x68746972,0x6974656d,0x79745f63,0x00736570,0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45, + 0x74735f70,0x5f656c79,0x656e696c,0x7269645f,0x69746365,0x00006576,0x00080004,0x475f4c47, + 0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65,0x74636572,0x00657669,0x00090004,0x4b5f4c47, + 0x735f5248,0x65646168,0x75735f72,0x6f726762,0x625f7075,0x63697361,0x00000000,0x00080004, + 0x4b5f4c47,0x735f5248,0x65646168,0x75735f72,0x6f726762,0x715f7075,0x00646175,0x00040005, + 0x00000004,0x6e69616d,0x00000000,0x000a0005,0x0000000c,0x42786666,0x69667469,0x45646c65, + 0x61727478,0x75287463,0x31753b31,0x3b31753b,0x00000000,0x00030005,0x00000009,0x00637273, + 0x00030005,0x0000000a,0x0066666f,0x00040005,0x0000000b,0x73746962,0x00000000,0x000a0005, + 0x00000011,0x42786666,0x69667469,0x49646c65,0x7265736e,0x73614d74,0x3175286b,0x3b31753b, + 0x003b3175,0x00030005,0x0000000e,0x00637273,0x00030005,0x0000000f,0x00736e69,0x00040005, + 0x00000010,0x73746962,0x00000000,0x00060005,0x00000018,0x4d786666,0x66286e69,0x31663b31, + 0x0000003b,0x00030005,0x00000016,0x00000078,0x00030005,0x00000017,0x00000079,0x00060005, + 0x0000001f,0x4d786666,0x69286e69,0x31693b31,0x0000003b,0x00030005,0x0000001d,0x00000078, + 0x00030005,0x0000001e,0x00000079,0x00060005,0x00000023,0x4d786666,0x66287861,0x31663b31, + 0x0000003b,0x00030005,0x00000021,0x00000078,0x00030005,0x00000022,0x00000079,0x00060005, + 0x00000027,0x4d786666,0x69287861,0x31693b31,0x0000003b,0x00030005,0x00000025,0x00000078, + 0x00030005,0x00000026,0x00000079,0x00060005,0x0000002b,0x50786666,0x6628776f,0x31663b31, + 0x0000003b,0x00030005,0x00000029,0x00000078,0x00030005,0x0000002a,0x00000079,0x000a0005, + 0x00000030,0x52786666,0x70616d65,0x57726f46,0x52657661,0x63756465,0x6e6f6974,0x3b317528, + 0x00000000,0x00030005,0x0000002f,0x00000061,0x00050005,0x00000034,0x646e6552,0x69537265, + 0x0028657a,0x00090005,0x00000036,0x76657250,0x73756f69,0x6d617246,0x6e655265,0x53726564, + 0x28657a69,0x00000000,0x00040005,0x0000003a,0x7474694a,0x00287265,0x00080005,0x0000003c, + 0x76657250,0x73756f69,0x6d617246,0x74694a65,0x28726574,0x00000000,0x00070005,0x0000003f, + 0x746c6544,0x65725061,0x6f707845,0x65727573,0x00000028,0x00050005,0x00000042,0x4370694d, + 0x746e756f,0x00000028,0x00060005,0x00000044,0x576d754e,0x476b726f,0x70756f72,0x00002873, + 0x00070005,0x00000047,0x6b726f57,0x756f7247,0x66664f70,0x28746573,0x00000000,0x00080005, + 0x0000004c,0x64616f4c,0x72727543,0x4c746e65,0x28616d75,0x3b326976,0x00000000,0x00040005, + 0x0000004b,0x50785069,0x0000736f,0x00080005,0x0000004f,0x64616f4c,0x76657250,0x73756f69, + 0x616d754c,0x32697628,0x0000003b,0x00040005,0x0000004e,0x50785069,0x0000736f,0x000a0005, + 0x00000053,0x64616f4c,0x616c6944,0x4d646574,0x6f69746f,0x6365566e,0x28726f74,0x3b326976, + 0x00000000,0x00050005,0x00000052,0x49785069,0x7475706e,0x00000000,0x00050005,0x00000055, + 0x6f707845,0x65727573,0x00000028,0x00080005,0x0000005a,0x6f4c5752,0x79506461,0x696d6172, + 0x69762864,0x31753b32,0x0000003b,0x00040005,0x00000058,0x50785069,0x0000736f,0x00040005, + 0x00000059,0x65646e69,0x00000078,0x00090005,0x00000061,0x726f7453,0x72795065,0x64696d61, + 0x32697628,0x3266763b,0x3b31753b,0x00000000,0x00040005,0x0000005e,0x50785069,0x0000736f, + 0x00050005,0x0000005f,0x5674756f,0x65756c61,0x00000000,0x00040005,0x00000060,0x65646e69, + 0x00000078,0x000a0005,0x00000065,0x5f445053,0x72636e49,0x65736165,0x6d6f7441,0x6f436369, + 0x65746e75,0x31752872,0x0000003b,0x00050005,0x00000064,0x43647073,0x746e756f,0x00007265, + 0x00080005,0x00000067,0x5f445053,0x65736552,0x6f744174,0x4363696d,0x746e756f,0x00287265, + 0x00080005,0x0000006c,0x446e694d,0x64697669,0x79426465,0x2878614d,0x663b3166,0x00003b31, + 0x00030005,0x0000006a,0x00003076,0x00030005,0x0000006b,0x00003176,0x00060005,0x00000071, + 0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005,0x00000070,0x00765566,0x00080005, + 0x00000077,0x6d616c43,0x616f4c70,0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005, + 0x00000074,0x53785069,0x6c706d61,0x00000065,0x00050005,0x00000075,0x4f785069,0x65736666, + 0x00000074,0x00060005,0x00000076,0x78655469,0x65727574,0x657a6953,0x00000000,0x000a0005, + 0x0000007a,0x49647053,0x6572636e,0x41657361,0x696d6f74,0x756f4363,0x7265746e,0x3b317528, + 0x00000000,0x00040005,0x00000079,0x63696c73,0x00000065,0x00080005,0x0000007c,0x47647053, + 0x74417465,0x63696d6f,0x6e756f43,0x28726574,0x00000000,0x00090005,0x0000007f,0x52647053, + 0x74657365,0x6d6f7441,0x6f436369,0x65746e75,0x31752872,0x0000003b,0x00040005,0x0000007e, + 0x63696c73,0x00000065,0x00050005,0x00000083,0x706d6153,0x6553656c,0x00000074,0x00060006, + 0x00000083,0x00000000,0x6d615366,0x73656c70,0x00000000,0x000b0005,0x00000087,0x74726f53, + 0x28746553,0x75727473,0x532d7463,0x6c706d61,0x74655365,0x5b31662d,0x3b315d35,0x00000000, + 0x00040005,0x00000086,0x74655366,0x00000000,0x00160005,0x0000008d,0x706d6f43,0x4d657475, + 0x6d696e69,0x69446d75,0x72656666,0x65636e65,0x32697628,0x7274733b,0x2d746375,0x706d6153, + 0x6553656c,0x31662d74,0x315d355b,0x7274733b,0x2d746375,0x706d6153,0x6553656c,0x31662d74, + 0x315d355b,0x0000003b,0x00040005,0x0000008a,0x50785069,0x0000736f,0x00040005,0x0000008b, + 0x74655366,0x00000030,0x00040005,0x0000008c,0x74655366,0x00000031,0x000b0005,0x00000091, + 0x43746547,0x65727275,0x754c746e,0x6942616d,0x656e696c,0x61537261,0x656c706d,0x66762873, + 0x00003b32,0x00030005,0x00000090,0x00765566,0x000a0005,0x00000093,0x76657250,0x73756f69, + 0x616d754c,0x696c6942,0x7261656e,0x706d6153,0x4473656c,0x00617461,0x00050006,0x00000093, + 0x00000000,0x74655366,0x00000000,0x00080006,0x00000093,0x00000001,0x45734962,0x74736978, + 0x53676e69,0x6c706d61,0x00000065,0x000c0005,0x00000097,0x50746547,0x69766572,0x4c73756f, + 0x42616d75,0x6e696c69,0x53726165,0x6c706d61,0x76287365,0x763b3266,0x003b3266,0x00030005, + 0x00000095,0x00765566,0x00060005,0x00000096,0x746f4d66,0x566e6f69,0x6f746365,0x00000072, + 0x00090005,0x0000009d,0x706d6f43,0x44657475,0x28666669,0x3b326976,0x3b326676,0x3b326676, + 0x00000000,0x00040005,0x0000009a,0x50785069,0x0000736f,0x00030005,0x0000009b,0x00765566, + 0x00060005,0x0000009c,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00090005,0x000000a3, + 0x4c647053,0x5364616f,0x6372756f,0x616d4965,0x76286567,0x753b3266,0x00003b31,0x00040005, + 0x000000a1,0x50785069,0x0000736f,0x00040005,0x000000a2,0x63696c73,0x00000065,0x00060005, + 0x000000a8,0x4c647053,0x2864616f,0x3b326976,0x003b3175,0x00030005,0x000000a6,0x00786574, + 0x00040005,0x000000a7,0x63696c73,0x00000065,0x00090005,0x000000b0,0x52647053,0x63756465, + 0x76283465,0x763b3466,0x763b3466,0x763b3466,0x003b3466,0x00030005,0x000000ac,0x00003076, + 0x00030005,0x000000ad,0x00003176,0x00030005,0x000000ae,0x00003276,0x00030005,0x000000af, + 0x00003376,0x00080005,0x000000b7,0x53647053,0x65726f74,0x32697628,0x3466763b,0x3b31753b, + 0x003b3175,0x00030005,0x000000b3,0x00786970,0x00050005,0x000000b4,0x5674756f,0x65756c61, + 0x00000000,0x00040005,0x000000b5,0x65646e69,0x00000078,0x00040005,0x000000b6,0x63696c73, + 0x00000065,0x00090005,0x000000bc,0x4c647053,0x4964616f,0x7265746e,0x6964656d,0x28657461, + 0x753b3175,0x00003b31,0x00030005,0x000000ba,0x00000078,0x00030005,0x000000bb,0x00000079, + 0x000a0005,0x000000c2,0x53647053,0x65726f74,0x65746e49,0x64656d72,0x65746169,0x3b317528, + 0x763b3175,0x003b3466,0x00030005,0x000000bf,0x00000078,0x00030005,0x000000c0,0x00000079, + 0x00040005,0x000000c1,0x756c6176,0x00000065,0x000a0005,0x000000c4,0x53786666,0x6f576470, + 0x72676b72,0x5370756f,0x66667568,0x6142656c,0x65697272,0x00002872,0x00090005,0x000000ca, + 0x45647053,0x57746978,0x676b726f,0x70756f72,0x3b317528,0x753b3175,0x00003b31,0x00060005, + 0x000000c7,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00080005,0x000000c8,0x61636f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x000000c9,0x63696c73, + 0x00000065,0x00070005,0x000000ce,0x52647053,0x63756465,0x61755165,0x66762864,0x00003b34, + 0x00030005,0x000000cd,0x00000076,0x000b0005,0x000000d7,0x52647053,0x63756465,0x616f4c65, + 0x76283464,0x763b3275,0x763b3275,0x763b3275,0x753b3275,0x00003b31,0x00030005,0x000000d2, + 0x00003069,0x00030005,0x000000d3,0x00003169,0x00030005,0x000000d4,0x00003269,0x00030005, + 0x000000d5,0x00003369,0x00040005,0x000000d6,0x63696c73,0x00000065,0x00080005,0x000000dc, + 0x52647053,0x63756465,0x616f4c65,0x76283464,0x753b3275,0x00003b31,0x00040005,0x000000da, + 0x65736162,0x00000000,0x00040005,0x000000db,0x63696c73,0x00000065,0x000e0005,0x000000e3, + 0x52647053,0x63756465,0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x75762834,0x75763b32, + 0x75763b32,0x75763b32,0x31753b32,0x0000003b,0x00030005,0x000000de,0x00003069,0x00030005, + 0x000000df,0x00003169,0x00030005,0x000000e0,0x00003269,0x00030005,0x000000e1,0x00003369, + 0x00040005,0x000000e2,0x63696c73,0x00000065,0x000b0005,0x000000e7,0x52647053,0x63756465, + 0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x32757628,0x3b31753b,0x00000000,0x00040005, + 0x000000e5,0x65736162,0x00000000,0x00040005,0x000000e6,0x63696c73,0x00000065,0x00100005, + 0x000000f0,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x6e495f31,0x6e697274, + 0x73636973,0x3b317528,0x763b3175,0x753b3275,0x31753b31,0x3b31753b,0x00000000,0x00030005, + 0x000000ea,0x00000078,0x00030005,0x000000eb,0x00000079,0x00050005,0x000000ec,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x000000ed,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00030005,0x000000ee,0x0070696d,0x00040005,0x000000ef,0x63696c73, + 0x00000065,0x000d0005,0x000000f8,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73, + 0x31752831,0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x0000003b,0x00030005,0x000000f2, + 0x00000078,0x00030005,0x000000f3,0x00000079,0x00050005,0x000000f4,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x000000f5,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00030005,0x000000f6,0x0070696d,0x00040005,0x000000f7,0x63696c73,0x00000065, + 0x000c0005,0x00000100,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7528325f,0x31753b31, + 0x3275763b,0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x000000fa,0x00000078,0x00030005, + 0x000000fb,0x00000079,0x00050005,0x000000fc,0x6b726f77,0x756f7247,0x00444970,0x00080005, + 0x000000fd,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005, + 0x000000fe,0x0070696d,0x00040005,0x000000ff,0x63696c73,0x00000065,0x000c0005,0x00000108, + 0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7528335f,0x31753b31,0x3275763b,0x3b31753b, + 0x753b3175,0x00003b31,0x00030005,0x00000102,0x00000078,0x00030005,0x00000103,0x00000079, + 0x00050005,0x00000104,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000105,0x61636f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005,0x00000106,0x0070696d, + 0x00040005,0x00000107,0x63696c73,0x00000065,0x000c0005,0x00000110,0x44647053,0x736e776f, + 0x6c706d61,0x70694d65,0x7528345f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175,0x00003b31, + 0x00030005,0x0000010a,0x00000078,0x00030005,0x0000010b,0x00000079,0x00050005,0x0000010c, + 0x6b726f77,0x756f7247,0x00444970,0x00080005,0x0000010d,0x61636f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x7865646e,0x00000000,0x00030005,0x0000010e,0x0070696d,0x00040005,0x0000010f, + 0x63696c73,0x00000065,0x000b0005,0x00000117,0x44647053,0x736e776f,0x6c706d61,0x70694d65, + 0x7628355f,0x753b3275,0x31753b31,0x3b31753b,0x00000000,0x00050005,0x00000113,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x00000114,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00030005,0x00000115,0x0070696d,0x00040005,0x00000116,0x63696c73, + 0x00000065,0x000b0005,0x0000011e,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f365f73, + 0x31752837,0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x0000011a,0x00000078,0x00030005, + 0x0000011b,0x00000079,0x00040005,0x0000011c,0x7370696d,0x00000000,0x00040005,0x0000011d, + 0x63696c73,0x00000065,0x000e0005,0x00000128,0x44647053,0x736e776f,0x6c706d61,0x78654e65, + 0x756f4674,0x31752872,0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x3b31753b,0x00000000, + 0x00030005,0x00000121,0x00000078,0x00030005,0x00000122,0x00000079,0x00050005,0x00000123, + 0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000124,0x61636f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x7865646e,0x00000000,0x00040005,0x00000125,0x65736162,0x0070694d,0x00040005, + 0x00000126,0x7370696d,0x00000000,0x00040005,0x00000127,0x63696c73,0x00000065,0x000a0005, + 0x00000130,0x44647053,0x736e776f,0x6c706d61,0x75762865,0x31753b32,0x3b31753b,0x753b3175, + 0x00003b31,0x00050005,0x0000012b,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x0000012c, + 0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x0000012d, + 0x7370696d,0x00000000,0x00060005,0x0000012e,0x576d756e,0x476b726f,0x70756f72,0x00000073, + 0x00040005,0x0000012f,0x63696c73,0x00000065,0x000b0005,0x00000139,0x44647053,0x736e776f, + 0x6c706d61,0x75762865,0x31753b32,0x3b31753b,0x753b3175,0x75763b31,0x00003b32,0x00050005, + 0x00000133,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000134,0x61636f6c,0x766e496c, + 0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x00000135,0x7370696d,0x00000000, + 0x00060005,0x00000136,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005,0x00000137, + 0x63696c73,0x00000065,0x00060005,0x00000138,0x6b726f77,0x756f7247,0x66664f70,0x00746573, + 0x000b0005,0x00000140,0x706d6f43,0x53657475,0x69646168,0x6843676e,0x65676e61,0x61727950, + 0x2864696d,0x3b337576,0x003b3175,0x00050005,0x0000013e,0x6b726f57,0x756f7247,0x00644970, + 0x00070005,0x0000013f,0x61636f4c,0x7268546c,0x49646165,0x7865646e,0x00000000,0x00040005, + 0x0000016d,0x61726170,0x0000006d,0x00040005,0x0000016f,0x61726170,0x0000006d,0x00040005, + 0x00000170,0x61726170,0x0000006d,0x00040005,0x00000173,0x61726170,0x0000006d,0x00040005, + 0x00000174,0x61726170,0x0000006d,0x00040005,0x00000176,0x61726170,0x0000006d,0x00040005, + 0x00000178,0x61726170,0x0000006d,0x00040005,0x0000017a,0x61726170,0x0000006d,0x00040005, + 0x0000017b,0x61726170,0x0000006d,0x00040005,0x0000017d,0x61726170,0x0000006d,0x00040005, + 0x0000017f,0x61726170,0x0000006d,0x00040005,0x00000180,0x61726170,0x0000006d,0x00040005, + 0x00000182,0x61726170,0x0000006d,0x00040005,0x00000183,0x61726170,0x0000006d,0x00040005, + 0x00000184,0x61726170,0x0000006d,0x00070005,0x00000189,0x53466263,0x50553352,0x4c414353, + 0x745f5245,0x00000000,0x00060006,0x00000189,0x00000000,0x6e655269,0x53726564,0x00657a69, + 0x000a0006,0x00000189,0x00000001,0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e, + 0x657a6953,0x00000000,0x00070006,0x00000189,0x00000002,0x73705569,0x656c6163,0x657a6953, + 0x00000000,0x000a0006,0x00000189,0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d, + 0x6c616373,0x7a695365,0x00000065,0x00070006,0x00000189,0x00000004,0x78614d69,0x646e6552, + 0x69537265,0x0000657a,0x00070006,0x00000189,0x00000005,0x78614d69,0x63737055,0x53656c61, + 0x00657a69,0x00080006,0x00000189,0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477, + 0x00006874,0x00050006,0x00000189,0x00000007,0x74694a66,0x00726574,0x00090006,0x00000189, + 0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006, + 0x00000189,0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006, + 0x00000189,0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006, + 0x00000189,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61, + 0x74616c6c,0x006e6f69,0x00060006,0x00000189,0x0000000c,0x6e615466,0x666c6148,0x00564f46, + 0x00090006,0x00000189,0x0000000d,0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65, + 0x00000068,0x00060006,0x00000189,0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006, + 0x00000189,0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006, + 0x00000189,0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463, + 0x00000000,0x00060006,0x00000189,0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006, + 0x00000189,0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74,0x00080006,0x00000189, + 0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c,0x00080006,0x00000189, + 0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61,0x000a0006,0x00000189, + 0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d, + 0x000b0006,0x00000189,0x00000016,0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341, + 0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x0000018b,0x53466263,0x70553352,0x6c616373, + 0x00007265,0x00040005,0x000001a7,0x50536263,0x00745f44,0x00050006,0x000001a7,0x00000000, + 0x7370696d,0x00000000,0x00070006,0x000001a7,0x00000001,0x576d756e,0x476b726f,0x70756f72, + 0x00000073,0x00070006,0x000001a7,0x00000002,0x6b726f77,0x756f7247,0x66664f70,0x00746573, + 0x00060006,0x000001a7,0x00000003,0x646e6572,0x69537265,0x0000657a,0x00040005,0x000001a9, + 0x50536263,0x00000044,0x00060005,0x000001bb,0x75635f72,0x6e657272,0x756c5f74,0x0000616d, + 0x00060005,0x000001c3,0x72705f72,0x6f697665,0x6c5f7375,0x00616d75,0x00090005,0x000001ca, + 0x69645f72,0x6574616c,0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00050005, + 0x000001d1,0x6f707865,0x65727573,0x00000000,0x00070005,0x000001d2,0x6e695f72,0x5f747570, + 0x6f707865,0x65727573,0x00000000,0x00050005,0x000001e6,0x735f7772,0x6d5f6470,0x00307069, + 0x00050005,0x000001f0,0x735f7772,0x6d5f6470,0x00317069,0x00050005,0x000001fa,0x735f7772, + 0x6d5f6470,0x00327069,0x00050005,0x00000204,0x735f7772,0x6d5f6470,0x00337069,0x00050005, + 0x0000020f,0x735f7772,0x6d5f6470,0x00347069,0x00050005,0x00000219,0x735f7772,0x6d5f6470, + 0x00357069,0x00080005,0x00000260,0x735f7772,0x675f6470,0x61626f6c,0x74615f6c,0x63696d6f, + 0x00000000,0x00030005,0x00000267,0x0000006d,0x00040005,0x00000268,0x61726170,0x0000006d, + 0x00040005,0x00000269,0x61726170,0x0000006d,0x00040005,0x00000270,0x61726170,0x0000006d, + 0x00040005,0x00000271,0x61726170,0x0000006d,0x00040005,0x00000290,0x75736572,0x0000746c, + 0x00040005,0x00000297,0x61726170,0x0000006d,0x00040005,0x0000029a,0x61726170,0x0000006d, + 0x00040005,0x0000029c,0x61726170,0x0000006d,0x00040005,0x0000029d,0x61726170,0x0000006d, + 0x00040005,0x000002a3,0x61726170,0x0000006d,0x00040005,0x000002a6,0x61726170,0x0000006d, + 0x00040005,0x000002a8,0x61726170,0x0000006d,0x00040005,0x000002a9,0x61726170,0x0000006d, + 0x00050005,0x000002b0,0x43647073,0x746e756f,0x00007265,0x00040005,0x000002b1,0x61726170, + 0x0000006d,0x00040005,0x000002b9,0x706d5466,0x00000000,0x00040005,0x000002bb,0x61726170, + 0x0000006d,0x00040005,0x000002be,0x61726170,0x0000006d,0x00040005,0x000002c2,0x61726170, + 0x0000006d,0x00040005,0x000002c5,0x61726170,0x0000006d,0x00040005,0x000002cc,0x706d5466, + 0x00000000,0x00040005,0x000002ce,0x61726170,0x0000006d,0x00040005,0x000002d1,0x61726170, + 0x0000006d,0x00040005,0x000002d5,0x61726170,0x0000006d,0x00040005,0x000002d8,0x61726170, + 0x0000006d,0x00040005,0x000002df,0x706d5466,0x00000000,0x00040005,0x000002e0,0x61726170, + 0x0000006d,0x00040005,0x000002e3,0x61726170,0x0000006d,0x00040005,0x000002e7,0x61726170, + 0x0000006d,0x00040005,0x000002ea,0x61726170,0x0000006d,0x00040005,0x000002f1,0x706d5466, + 0x00000000,0x00040005,0x000002f2,0x61726170,0x0000006d,0x00040005,0x000002f5,0x61726170, + 0x0000006d,0x00040005,0x000002f9,0x61726170,0x0000006d,0x00040005,0x000002fc,0x61726170, + 0x0000006d,0x00040005,0x00000303,0x706d5466,0x00000000,0x00040005,0x00000304,0x61726170, + 0x0000006d,0x00040005,0x00000307,0x61726170,0x0000006d,0x00040005,0x0000030b,0x61726170, + 0x0000006d,0x00040005,0x0000030e,0x61726170,0x0000006d,0x00040005,0x00000315,0x706d5466, + 0x00000000,0x00040005,0x00000316,0x61726170,0x0000006d,0x00040005,0x00000319,0x61726170, + 0x0000006d,0x00040005,0x0000031d,0x61726170,0x0000006d,0x00040005,0x00000320,0x61726170, + 0x0000006d,0x00040005,0x00000327,0x706d5466,0x00000000,0x00040005,0x00000328,0x61726170, + 0x0000006d,0x00040005,0x0000032b,0x61726170,0x0000006d,0x00040005,0x0000032f,0x61726170, + 0x0000006d,0x00040005,0x00000332,0x61726170,0x0000006d,0x00040005,0x00000339,0x706d5466, + 0x00000000,0x00040005,0x0000033a,0x61726170,0x0000006d,0x00040005,0x0000033d,0x61726170, + 0x0000006d,0x00040005,0x00000341,0x61726170,0x0000006d,0x00040005,0x00000344,0x61726170, + 0x0000006d,0x00040005,0x0000034b,0x706d5466,0x00000000,0x00040005,0x0000034c,0x61726170, + 0x0000006d,0x00040005,0x0000034f,0x61726170,0x0000006d,0x00040005,0x00000353,0x61726170, + 0x0000006d,0x00040005,0x00000356,0x61726170,0x0000006d,0x00050005,0x0000035d,0x6e694d66, + 0x66666944,0x00000000,0x00030005,0x0000035f,0x00000061,0x00030005,0x00000360,0x00000062, + 0x00040005,0x00000361,0x61726170,0x0000006d,0x00040005,0x00000365,0x61726170,0x0000006d, + 0x00040005,0x00000369,0x78614d66,0x00000000,0x00040005,0x0000036a,0x61726170,0x0000006d, + 0x00040005,0x0000036d,0x61726170,0x0000006d,0x00030005,0x00000376,0x00000069,0x00040005, + 0x00000383,0x66694466,0x00000066,0x00050005,0x000003c2,0x4a765566,0x65747469,0x00646572, + 0x00050005,0x000003c9,0x73614269,0x736f5065,0x00000000,0x00060005,0x000003d0,0x6d615369, + 0x49656c70,0x7865646e,0x00000000,0x00050005,0x000003d8,0x6d615369,0x50656c70,0x0000736f, + 0x00040005,0x000003e2,0x61726170,0x0000006d,0x00040005,0x000003e4,0x61726170,0x0000006d, + 0x00050005,0x000003e6,0x65646e69,0x6c626178,0x00000065,0x00040005,0x000003e9,0x61726170, + 0x0000006d,0x00040005,0x000003eb,0x74655366,0x00000000,0x00040005,0x000003ed,0x61726170, + 0x0000006d,0x00040005,0x000003f5,0x61726170,0x0000006d,0x00040005,0x000003f8,0x61726170, + 0x0000006d,0x00040005,0x000003fd,0x61726170,0x0000006d,0x00040005,0x00000400,0x61726170, + 0x0000006d,0x00050005,0x00000408,0x4a765566,0x65747469,0x00646572,0x00060005,0x0000040f, + 0x70655266,0x656a6f72,0x64657463,0x00007655,0x00040005,0x00000414,0x61746164,0x00000000, + 0x00040005,0x00000415,0x61726170,0x0000006d,0x00050005,0x0000041e,0x73614269,0x736f5065, + 0x00000000,0x00060005,0x00000425,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00050005, + 0x0000042d,0x6d615369,0x50656c70,0x0000736f,0x00040005,0x00000430,0x61726170,0x0000006d, + 0x00040005,0x00000432,0x61726170,0x0000006d,0x00050005,0x00000433,0x65646e69,0x6c626178, + 0x00000065,0x00040005,0x00000436,0x61726170,0x0000006d,0x00040005,0x00000439,0x61726170, + 0x0000006d,0x00040005,0x00000443,0x61726170,0x0000006d,0x00040005,0x00000446,0x61726170, + 0x0000006d,0x00040005,0x0000044b,0x61726170,0x0000006d,0x00040005,0x0000044e,0x61726170, + 0x0000006d,0x00050005,0x00000456,0x6e694d66,0x66666944,0x00000000,0x00060005,0x00000457, + 0x72754366,0x746e6572,0x706d6153,0x0073656c,0x00040005,0x00000458,0x61726170,0x0000006d, + 0x00060005,0x0000045b,0x76657270,0x73756f69,0x61746144,0x00000000,0x00040005,0x0000045c, + 0x61726170,0x0000006d,0x00040005,0x0000045e,0x61726170,0x0000006d,0x00040005,0x00000465, + 0x61726170,0x0000006d,0x00040005,0x00000467,0x61726170,0x0000006d,0x00040005,0x00000469, + 0x61726170,0x0000006d,0x00060005,0x00000470,0x53785069,0x6c706d61,0x736f5065,0x00000000, + 0x00040005,0x00000474,0x61726170,0x0000006d,0x00040005,0x00000475,0x61726170,0x0000006d, + 0x00040005,0x00000476,0x61726170,0x0000006d,0x00080005,0x00000478,0x6c694466,0x64657461, + 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x00000479,0x61726170,0x0000006d, + 0x00030005,0x0000047c,0x00765566,0x00090005,0x00000485,0x61635366,0x4164656c,0x6953646e, + 0x64656e67,0x616d754c,0x66666944,0x00000000,0x00040005,0x00000486,0x61726170,0x0000006d, + 0x00040005,0x00000488,0x61726170,0x0000006d,0x00040005,0x0000048a,0x61726170,0x0000006d, + 0x00040005,0x0000048d,0x74754f66,0x00747570,0x00040005,0x0000049f,0x61726170,0x0000006d, + 0x00040005,0x000004a1,0x61726170,0x0000006d,0x00040005,0x000004b7,0x61726170,0x0000006d, + 0x00040005,0x000004b9,0x61726170,0x0000006d,0x00040005,0x000004bc,0x61726170,0x0000006d, + 0x00070005,0x000004c3,0x49647073,0x7265746e,0x6964656d,0x52657461,0x00000000,0x00070005, + 0x000004c9,0x49647073,0x7265746e,0x6964656d,0x47657461,0x00000000,0x00070005,0x000004ce, + 0x49647073,0x7265746e,0x6964656d,0x42657461,0x00000000,0x00070005,0x000004d3,0x49647073, + 0x7265746e,0x6964656d,0x41657461,0x00000000,0x00040005,0x000004f5,0x61726170,0x0000006d, + 0x00030005,0x000004ff,0x00003076,0x00030005,0x00000501,0x00003176,0x00030005,0x00000504, + 0x00003276,0x00030005,0x00000507,0x00003376,0x00040005,0x0000050a,0x61726170,0x0000006d, + 0x00040005,0x0000050c,0x61726170,0x0000006d,0x00040005,0x0000050e,0x61726170,0x0000006d, + 0x00040005,0x00000510,0x61726170,0x0000006d,0x00030005,0x00000517,0x00003076,0x00040005, + 0x0000051a,0x61726170,0x0000006d,0x00040005,0x0000051b,0x61726170,0x0000006d,0x00030005, + 0x0000051e,0x00003176,0x00040005,0x00000521,0x61726170,0x0000006d,0x00040005,0x00000522, + 0x61726170,0x0000006d,0x00030005,0x00000525,0x00003276,0x00040005,0x00000528,0x61726170, + 0x0000006d,0x00040005,0x00000529,0x61726170,0x0000006d,0x00030005,0x0000052c,0x00003376, + 0x00040005,0x0000052f,0x61726170,0x0000006d,0x00040005,0x00000530,0x61726170,0x0000006d, + 0x00040005,0x00000533,0x61726170,0x0000006d,0x00040005,0x00000535,0x61726170,0x0000006d, + 0x00040005,0x00000537,0x61726170,0x0000006d,0x00040005,0x00000539,0x61726170,0x0000006d, + 0x00040005,0x0000054a,0x61726170,0x0000006d,0x00040005,0x0000054b,0x61726170,0x0000006d, + 0x00040005,0x0000054c,0x61726170,0x0000006d,0x00040005,0x0000054d,0x61726170,0x0000006d, + 0x00040005,0x0000054e,0x61726170,0x0000006d,0x00030005,0x00000553,0x00003076,0x00040005, + 0x00000557,0x61726170,0x0000006d,0x00040005,0x00000558,0x61726170,0x0000006d,0x00030005, + 0x0000055b,0x00003176,0x00040005,0x0000055f,0x61726170,0x0000006d,0x00040005,0x00000560, + 0x61726170,0x0000006d,0x00030005,0x00000563,0x00003276,0x00040005,0x00000567,0x61726170, + 0x0000006d,0x00040005,0x00000568,0x61726170,0x0000006d,0x00030005,0x0000056b,0x00003376, + 0x00040005,0x0000056f,0x61726170,0x0000006d,0x00040005,0x00000570,0x61726170,0x0000006d, + 0x00040005,0x00000573,0x61726170,0x0000006d,0x00040005,0x00000575,0x61726170,0x0000006d, + 0x00040005,0x00000577,0x61726170,0x0000006d,0x00040005,0x00000579,0x61726170,0x0000006d, + 0x00040005,0x00000586,0x61726170,0x0000006d,0x00040005,0x00000587,0x61726170,0x0000006d, + 0x00040005,0x00000588,0x61726170,0x0000006d,0x00040005,0x00000589,0x61726170,0x0000006d, + 0x00040005,0x0000058a,0x61726170,0x0000006d,0x00030005,0x0000058f,0x00786574,0x00030005, + 0x0000059d,0x00786970,0x00030005,0x000005ab,0x00000076,0x00040005,0x000005ae,0x61726170, + 0x0000006d,0x00040005,0x000005af,0x61726170,0x0000006d,0x00040005,0x000005b3,0x61726170, + 0x0000006d,0x00040005,0x000005b5,0x61726170,0x0000006d,0x00040005,0x000005b8,0x61726170, + 0x0000006d,0x00040005,0x000005b9,0x61726170,0x0000006d,0x00040005,0x000005d6,0x61726170, + 0x0000006d,0x00040005,0x000005d7,0x61726170,0x0000006d,0x00040005,0x000005db,0x61726170, + 0x0000006d,0x00040005,0x000005dd,0x61726170,0x0000006d,0x00040005,0x000005e0,0x61726170, + 0x0000006d,0x00040005,0x000005e1,0x61726170,0x0000006d,0x00040005,0x000005fe,0x61726170, + 0x0000006d,0x00040005,0x000005ff,0x61726170,0x0000006d,0x00040005,0x00000603,0x61726170, + 0x0000006d,0x00040005,0x00000605,0x61726170,0x0000006d,0x00040005,0x00000608,0x61726170, + 0x0000006d,0x00040005,0x00000609,0x61726170,0x0000006d,0x00040005,0x00000628,0x61726170, + 0x0000006d,0x00040005,0x00000629,0x61726170,0x0000006d,0x00040005,0x0000062d,0x61726170, + 0x0000006d,0x00040005,0x0000062f,0x61726170,0x0000006d,0x00040005,0x00000632,0x61726170, + 0x0000006d,0x00040005,0x00000633,0x61726170,0x0000006d,0x00040005,0x0000063b,0x61726170, + 0x0000006d,0x00040005,0x00000640,0x61726170,0x0000006d,0x00040005,0x00000645,0x61726170, + 0x0000006d,0x00040005,0x0000064a,0x61726170,0x0000006d,0x00040005,0x00000660,0x61726170, + 0x0000006d,0x00040005,0x00000661,0x61726170,0x0000006d,0x00040005,0x00000664,0x61726170, + 0x0000006d,0x00040005,0x00000665,0x61726170,0x0000006d,0x00040005,0x0000066c,0x61726170, + 0x0000006d,0x00040005,0x0000066d,0x61726170,0x0000006d,0x00040005,0x0000066e,0x61726170, + 0x0000006d,0x00040005,0x00000680,0x61726170,0x0000006d,0x00040005,0x00000681,0x61726170, + 0x0000006d,0x00040005,0x00000684,0x61726170,0x0000006d,0x00040005,0x00000685,0x61726170, + 0x0000006d,0x00040005,0x0000068d,0x61726170,0x0000006d,0x00040005,0x0000068e,0x61726170, + 0x0000006d,0x00040005,0x0000068f,0x61726170,0x0000006d,0x00040005,0x000006a0,0x61726170, + 0x0000006d,0x00040005,0x000006a1,0x61726170,0x0000006d,0x00040005,0x000006a4,0x61726170, + 0x0000006d,0x00040005,0x000006a5,0x61726170,0x0000006d,0x00040005,0x000006ad,0x61726170, + 0x0000006d,0x00040005,0x000006ae,0x61726170,0x0000006d,0x00040005,0x000006af,0x61726170, + 0x0000006d,0x00040005,0x000006c1,0x61726170,0x0000006d,0x00040005,0x000006c2,0x61726170, + 0x0000006d,0x00040005,0x000006c5,0x61726170,0x0000006d,0x00040005,0x000006c6,0x61726170, + 0x0000006d,0x00040005,0x000006cf,0x61726170,0x0000006d,0x00040005,0x000006d0,0x61726170, + 0x0000006d,0x00040005,0x000006d1,0x61726170,0x0000006d,0x00040005,0x000006d5,0x61726170, + 0x0000006d,0x00040005,0x000006d7,0x61726170,0x0000006d,0x00040005,0x000006d9,0x61726170, + 0x0000006d,0x00040005,0x000006db,0x61726170,0x0000006d,0x00040005,0x000006dd,0x61726170, + 0x0000006d,0x00040005,0x000006df,0x61726170,0x0000006d,0x00030005,0x000006e2,0x00000076, + 0x00040005,0x000006e3,0x61726170,0x0000006d,0x00040005,0x000006e5,0x61726170,0x0000006d, + 0x00040005,0x000006e8,0x61726170,0x0000006d,0x00040005,0x000006fc,0x61726170,0x0000006d, + 0x00040005,0x000006fd,0x61726170,0x0000006d,0x00040005,0x000006ff,0x61726170,0x0000006d, + 0x00040005,0x00000701,0x61726170,0x0000006d,0x00040005,0x00000709,0x61726170,0x0000006d, + 0x00040005,0x0000070a,0x61726170,0x0000006d,0x00040005,0x0000070c,0x61726170,0x0000006d, + 0x00030005,0x00000713,0x00000076,0x00040005,0x0000071b,0x61726170,0x0000006d,0x00040005, + 0x0000071c,0x61726170,0x0000006d,0x00040005,0x0000071e,0x61726170,0x0000006d,0x00040005, + 0x00000732,0x61726170,0x0000006d,0x00040005,0x00000733,0x61726170,0x0000006d,0x00040005, + 0x00000735,0x61726170,0x0000006d,0x00040005,0x00000737,0x61726170,0x0000006d,0x00040005, + 0x00000741,0x61726170,0x0000006d,0x00040005,0x00000742,0x61726170,0x0000006d,0x00040005, + 0x00000743,0x61726170,0x0000006d,0x00030005,0x0000074a,0x00000076,0x00040005,0x00000751, + 0x61726170,0x0000006d,0x00040005,0x00000752,0x61726170,0x0000006d,0x00040005,0x00000754, + 0x61726170,0x0000006d,0x00040005,0x00000768,0x61726170,0x0000006d,0x00040005,0x00000769, + 0x61726170,0x0000006d,0x00040005,0x0000076b,0x61726170,0x0000006d,0x00040005,0x0000076d, + 0x61726170,0x0000006d,0x00040005,0x00000774,0x61726170,0x0000006d,0x00040005,0x00000775, + 0x61726170,0x0000006d,0x00040005,0x00000776,0x61726170,0x0000006d,0x00030005,0x0000077d, + 0x00000076,0x00040005,0x0000077e,0x61726170,0x0000006d,0x00040005,0x00000780,0x61726170, + 0x0000006d,0x00040005,0x00000782,0x61726170,0x0000006d,0x00040005,0x0000078c,0x61726170, + 0x0000006d,0x00040005,0x0000078d,0x61726170,0x0000006d,0x00040005,0x0000078f,0x61726170, + 0x0000006d,0x00040005,0x00000791,0x61726170,0x0000006d,0x00030005,0x00000794,0x00786574, + 0x00030005,0x0000079e,0x00786970,0x00030005,0x000007a8,0x00003076,0x00040005,0x000007ab, + 0x61726170,0x0000006d,0x00040005,0x000007ac,0x61726170,0x0000006d,0x00040005,0x000007b0, + 0x61726170,0x0000006d,0x00040005,0x000007b2,0x61726170,0x0000006d,0x00040005,0x000007b4, + 0x61726170,0x0000006d,0x00040005,0x000007b5,0x61726170,0x0000006d,0x00030005,0x000007ca, + 0x00003176,0x00040005,0x000007cd,0x61726170,0x0000006d,0x00040005,0x000007ce,0x61726170, + 0x0000006d,0x00040005,0x000007d1,0x61726170,0x0000006d,0x00040005,0x000007d3,0x61726170, + 0x0000006d,0x00040005,0x000007d5,0x61726170,0x0000006d,0x00040005,0x000007d6,0x61726170, + 0x0000006d,0x00030005,0x000007eb,0x00003276,0x00040005,0x000007ee,0x61726170,0x0000006d, + 0x00040005,0x000007ef,0x61726170,0x0000006d,0x00040005,0x000007f2,0x61726170,0x0000006d, + 0x00040005,0x000007f4,0x61726170,0x0000006d,0x00040005,0x000007f6,0x61726170,0x0000006d, + 0x00040005,0x000007f7,0x61726170,0x0000006d,0x00030005,0x0000080c,0x00003376,0x00040005, + 0x0000080f,0x61726170,0x0000006d,0x00040005,0x00000810,0x61726170,0x0000006d,0x00040005, + 0x00000813,0x61726170,0x0000006d,0x00040005,0x00000815,0x61726170,0x0000006d,0x00040005, + 0x00000817,0x61726170,0x0000006d,0x00040005,0x00000818,0x61726170,0x0000006d,0x00030005, + 0x00000821,0x00000076,0x00040005,0x00000822,0x61726170,0x0000006d,0x00040005,0x00000824, + 0x61726170,0x0000006d,0x00040005,0x00000826,0x61726170,0x0000006d,0x00040005,0x00000828, + 0x61726170,0x0000006d,0x00040005,0x00000830,0x61726170,0x0000006d,0x00040005,0x00000831, + 0x61726170,0x0000006d,0x00040005,0x00000833,0x61726170,0x0000006d,0x00040005,0x00000834, + 0x61726170,0x0000006d,0x00040005,0x00000837,0x61726170,0x0000006d,0x00040005,0x00000839, + 0x61726170,0x0000006d,0x00040005,0x0000083b,0x61726170,0x0000006d,0x00040005,0x00000845, + 0x61726170,0x0000006d,0x00040005,0x00000847,0x61726170,0x0000006d,0x00040005,0x00000849, + 0x61726170,0x0000006d,0x00040005,0x0000084b,0x61726170,0x0000006d,0x00040005,0x0000084d, + 0x61726170,0x0000006d,0x00040005,0x0000084f,0x61726170,0x0000006d,0x00040005,0x0000085c, + 0x61726170,0x0000006d,0x00040005,0x0000085e,0x61726170,0x0000006d,0x00040005,0x00000860, + 0x61726170,0x0000006d,0x00040005,0x00000862,0x61726170,0x0000006d,0x00040005,0x00000864, + 0x61726170,0x0000006d,0x00040005,0x00000865,0x61726170,0x0000006d,0x00040005,0x00000872, + 0x61726170,0x0000006d,0x00040005,0x00000874,0x61726170,0x0000006d,0x00040005,0x00000876, + 0x61726170,0x0000006d,0x00040005,0x00000878,0x61726170,0x0000006d,0x00040005,0x0000087a, + 0x61726170,0x0000006d,0x00040005,0x0000087b,0x61726170,0x0000006d,0x00040005,0x00000888, + 0x61726170,0x0000006d,0x00040005,0x0000088a,0x61726170,0x0000006d,0x00040005,0x0000088c, + 0x61726170,0x0000006d,0x00040005,0x0000088d,0x61726170,0x0000006d,0x00040005,0x00000890, + 0x5f627573,0x00007978,0x00040005,0x00000893,0x61726170,0x0000006d,0x00030005,0x00000895, + 0x00000078,0x00030005,0x0000089e,0x00000079,0x00040005,0x000008a5,0x61726170,0x0000006d, + 0x00040005,0x000008a7,0x61726170,0x0000006d,0x00040005,0x000008a9,0x61726170,0x0000006d, + 0x00040005,0x000008ab,0x61726170,0x0000006d,0x00040005,0x000008ad,0x61726170,0x0000006d, + 0x00040005,0x000008af,0x61726170,0x0000006d,0x00040005,0x000008b2,0x61726170,0x0000006d, + 0x00040005,0x000008b4,0x61726170,0x0000006d,0x00040005,0x000008b6,0x61726170,0x0000006d, + 0x00040005,0x000008b8,0x61726170,0x0000006d,0x00040005,0x000008ba,0x61726170,0x0000006d, + 0x00040005,0x000008bb,0x61726170,0x0000006d,0x00040005,0x000008bd,0x61726170,0x0000006d, + 0x00040005,0x000008c5,0x61726170,0x0000006d,0x00040005,0x000008c7,0x61726170,0x0000006d, + 0x00040005,0x000008c9,0x61726170,0x0000006d,0x00040005,0x000008cf,0x61726170,0x0000006d, + 0x00040005,0x000008d2,0x61726170,0x0000006d,0x00040005,0x000008d4,0x61726170,0x0000006d, + 0x00040005,0x000008d6,0x61726170,0x0000006d,0x00040005,0x000008d8,0x61726170,0x0000006d, + 0x00040005,0x000008db,0x61726170,0x0000006d,0x00040005,0x000008dd,0x61726170,0x0000006d, + 0x00040005,0x000008df,0x61726170,0x0000006d,0x00040005,0x000008e0,0x61726170,0x0000006d, + 0x00040005,0x000008e2,0x61726170,0x0000006d,0x00040005,0x000008e3,0x61726170,0x0000006d, + 0x00040005,0x000008e5,0x61726170,0x0000006d,0x00040005,0x000008eb,0x61726170,0x0000006d, + 0x00040005,0x000008ec,0x61726170,0x0000006d,0x00040005,0x000008ee,0x61726170,0x0000006d, + 0x00040005,0x000008f0,0x61726170,0x0000006d,0x00040005,0x000008f2,0x61726170,0x0000006d, + 0x00040005,0x000008fd,0x61726170,0x0000006d,0x00040005,0x000008fe,0x61726170,0x0000006d, + 0x00040005,0x000008ff,0x61726170,0x0000006d,0x00040005,0x00000900,0x61726170,0x0000006d, + 0x00040005,0x00000901,0x61726170,0x0000006d,0x00040005,0x00000902,0x61726170,0x0000006d, + 0x00060005,0x00000905,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00080005,0x00000907, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x6e496e6f,0x00786564,0x00040005,0x00000908, + 0x61726170,0x0000006d,0x00040005,0x0000090a,0x61726170,0x0000006d,0x00060005,0x00000910, + 0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00060005,0x00000911,0x694c5f73,0x7261656e, + 0x6d616c43,0x00000070,0x00030047,0x00000189,0x00000002,0x00050048,0x00000189,0x00000000, + 0x00000023,0x00000000,0x00050048,0x00000189,0x00000001,0x00000023,0x00000008,0x00050048, + 0x00000189,0x00000002,0x00000023,0x00000010,0x00050048,0x00000189,0x00000003,0x00000023, + 0x00000018,0x00050048,0x00000189,0x00000004,0x00000023,0x00000020,0x00050048,0x00000189, + 0x00000005,0x00000023,0x00000028,0x00050048,0x00000189,0x00000006,0x00000023,0x00000030, + 0x00050048,0x00000189,0x00000007,0x00000023,0x00000040,0x00050048,0x00000189,0x00000008, + 0x00000023,0x00000048,0x00050048,0x00000189,0x00000009,0x00000023,0x00000050,0x00050048, + 0x00000189,0x0000000a,0x00000023,0x00000058,0x00050048,0x00000189,0x0000000b,0x00000023, + 0x00000060,0x00050048,0x00000189,0x0000000c,0x00000023,0x00000068,0x00050048,0x00000189, + 0x0000000d,0x00000023,0x0000006c,0x00050048,0x00000189,0x0000000e,0x00000023,0x00000070, + 0x00050048,0x00000189,0x0000000f,0x00000023,0x00000074,0x00050048,0x00000189,0x00000010, + 0x00000023,0x00000078,0x00050048,0x00000189,0x00000011,0x00000023,0x0000007c,0x00050048, + 0x00000189,0x00000012,0x00000023,0x00000080,0x00050048,0x00000189,0x00000013,0x00000023, + 0x00000084,0x00050048,0x00000189,0x00000014,0x00000023,0x00000088,0x00050048,0x00000189, + 0x00000015,0x00000023,0x0000008c,0x00050048,0x00000189,0x00000016,0x00000023,0x00000090, + 0x00040047,0x0000018b,0x00000021,0x0000000b,0x00040047,0x0000018b,0x00000022,0x00000000, + 0x00030047,0x000001a7,0x00000002,0x00050048,0x000001a7,0x00000000,0x00000023,0x00000000, + 0x00050048,0x000001a7,0x00000001,0x00000023,0x00000004,0x00050048,0x000001a7,0x00000002, + 0x00000023,0x00000008,0x00050048,0x000001a7,0x00000003,0x00000023,0x00000010,0x00040047, + 0x000001a9,0x00000021,0x0000000c,0x00040047,0x000001a9,0x00000022,0x00000000,0x00040047, + 0x000001bb,0x00000021,0x00000000,0x00040047,0x000001bb,0x00000022,0x00000000,0x00040047, + 0x000001c3,0x00000021,0x00000001,0x00040047,0x000001c3,0x00000022,0x00000000,0x00040047, + 0x000001ca,0x00000021,0x00000002,0x00040047,0x000001ca,0x00000022,0x00000000,0x00040047, + 0x000001d2,0x00000021,0x00000003,0x00040047,0x000001d2,0x00000022,0x00000000,0x00040047, + 0x000001e6,0x00000021,0x00000005,0x00040047,0x000001e6,0x00000022,0x00000000,0x00040047, + 0x000001f0,0x00000021,0x00000006,0x00040047,0x000001f0,0x00000022,0x00000000,0x00040047, + 0x000001fa,0x00000021,0x00000007,0x00040047,0x000001fa,0x00000022,0x00000000,0x00040047, + 0x00000204,0x00000021,0x00000008,0x00040047,0x00000204,0x00000022,0x00000000,0x00040047, + 0x0000020f,0x00000021,0x00000009,0x00040047,0x0000020f,0x00000022,0x00000000,0x00030047, + 0x00000219,0x00000017,0x00040047,0x00000219,0x00000021,0x0000000a,0x00040047,0x00000219, + 0x00000022,0x00000000,0x00030047,0x00000260,0x00000017,0x00040047,0x00000260,0x00000021, + 0x00000004,0x00040047,0x00000260,0x00000022,0x00000000,0x00040047,0x00000905,0x0000000b, + 0x0000001a,0x00040047,0x00000907,0x0000000b,0x0000001d,0x00040047,0x00000910,0x00000021, + 0x000003e8,0x00040047,0x00000910,0x00000022,0x00000000,0x00040047,0x00000911,0x00000021, + 0x000003e9,0x00040047,0x00000911,0x00000022,0x00000000,0x00040047,0x0000091a,0x0000000b, + 0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006, + 0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008, + 0x00000006,0x00000007,0x00000007,0x00000007,0x00030016,0x00000013,0x00000020,0x00040020, + 0x00000014,0x00000007,0x00000013,0x00050021,0x00000015,0x00000013,0x00000014,0x00000014, + 0x00040015,0x0000001a,0x00000020,0x00000001,0x00040020,0x0000001b,0x00000007,0x0000001a, + 0x00050021,0x0000001c,0x0000001a,0x0000001b,0x0000001b,0x00040017,0x0000002d,0x00000006, + 0x00000002,0x00040021,0x0000002e,0x0000002d,0x00000007,0x00040017,0x00000032,0x0000001a, + 0x00000002,0x00030021,0x00000033,0x00000032,0x00040017,0x00000038,0x00000013,0x00000002, + 0x00030021,0x00000039,0x00000038,0x00030021,0x0000003e,0x00000013,0x00030021,0x00000041, + 0x00000006,0x00030021,0x00000046,0x0000002d,0x00040020,0x00000049,0x00000007,0x00000032, + 0x00040021,0x0000004a,0x00000013,0x00000049,0x00040021,0x00000051,0x00000038,0x00000049, + 0x00050021,0x00000057,0x00000038,0x00000049,0x00000007,0x00040020,0x0000005c,0x00000007, + 0x00000038,0x00060021,0x0000005d,0x00000002,0x00000049,0x0000005c,0x00000007,0x00040021, + 0x00000063,0x00000002,0x00000007,0x00050021,0x00000069,0x00000013,0x00000013,0x00000013, + 0x00020014,0x0000006e,0x00040021,0x0000006f,0x0000006e,0x0000005c,0x00060021,0x00000073, + 0x00000032,0x00000049,0x00000049,0x00000049,0x0004002b,0x00000006,0x00000081,0x00000005, + 0x0004001c,0x00000082,0x00000013,0x00000081,0x0003001e,0x00000083,0x00000082,0x00040020, + 0x00000084,0x00000007,0x00000083,0x00040021,0x00000085,0x00000002,0x00000084,0x00060021, + 0x00000089,0x00000013,0x00000049,0x00000084,0x00000084,0x00040021,0x0000008f,0x00000083, + 0x0000005c,0x0004001e,0x00000093,0x00000083,0x0000006e,0x00050021,0x00000094,0x00000093, + 0x0000005c,0x0000005c,0x00060021,0x00000099,0x00000013,0x00000049,0x0000005c,0x0000005c, + 0x00040017,0x0000009f,0x00000013,0x00000004,0x00050021,0x000000a0,0x0000009f,0x0000005c, + 0x00000007,0x00050021,0x000000a5,0x0000009f,0x00000049,0x00000007,0x00040020,0x000000aa, + 0x00000007,0x0000009f,0x00070021,0x000000ab,0x0000009f,0x000000aa,0x000000aa,0x000000aa, + 0x000000aa,0x00070021,0x000000b2,0x00000002,0x00000049,0x000000aa,0x00000007,0x00000007, + 0x00050021,0x000000b9,0x0000009f,0x00000007,0x00000007,0x00060021,0x000000be,0x00000002, + 0x00000007,0x00000007,0x000000aa,0x00060021,0x000000c6,0x0000006e,0x00000007,0x00000007, + 0x00000007,0x00040021,0x000000cc,0x0000009f,0x000000aa,0x00040020,0x000000d0,0x00000007, + 0x0000002d,0x00080021,0x000000d1,0x0000009f,0x000000d0,0x000000d0,0x000000d0,0x000000d0, + 0x00000007,0x00050021,0x000000d9,0x0000009f,0x000000d0,0x00000007,0x00090021,0x000000e9, + 0x00000002,0x00000007,0x00000007,0x000000d0,0x00000007,0x00000007,0x00000007,0x00070021, + 0x00000112,0x00000002,0x000000d0,0x00000007,0x00000007,0x00000007,0x00070021,0x00000119, + 0x00000002,0x00000007,0x00000007,0x00000007,0x00000007,0x000a0021,0x00000120,0x00000002, + 0x00000007,0x00000007,0x000000d0,0x00000007,0x00000007,0x00000007,0x00000007,0x00080021, + 0x0000012a,0x00000002,0x000000d0,0x00000007,0x00000007,0x00000007,0x00000007,0x00090021, + 0x00000132,0x00000002,0x000000d0,0x00000007,0x00000007,0x00000007,0x00000007,0x000000d0, + 0x00040017,0x0000013b,0x00000006,0x00000003,0x00040020,0x0000013c,0x00000007,0x0000013b, + 0x00050021,0x0000013d,0x00000002,0x0000013c,0x00000007,0x0004002b,0x0000001a,0x0000014c, + 0x00000000,0x0004002b,0x00000006,0x0000016b,0x00000002,0x0004002b,0x00000006,0x0000016c, + 0x00000003,0x0004002b,0x00000006,0x00000172,0x00000001,0x0019001e,0x00000189,0x00000032, + 0x00000032,0x00000032,0x00000032,0x00000032,0x00000032,0x0000009f,0x00000038,0x00000038, + 0x00000038,0x00000038,0x00000038,0x00000013,0x00000013,0x00000013,0x00000013,0x00000013, + 0x00000013,0x00000013,0x00000013,0x00000013,0x00000013,0x00000013,0x00040020,0x0000018a, + 0x00000002,0x00000189,0x0004003b,0x0000018a,0x0000018b,0x00000002,0x00040020,0x0000018c, + 0x00000002,0x00000032,0x0004002b,0x0000001a,0x00000191,0x00000001,0x0004002b,0x0000001a, + 0x00000196,0x00000007,0x00040020,0x00000197,0x00000002,0x00000038,0x0004002b,0x0000001a, + 0x0000019c,0x00000008,0x0004002b,0x0000001a,0x000001a1,0x0000000f,0x00040020,0x000001a2, + 0x00000002,0x00000013,0x0006001e,0x000001a7,0x00000006,0x00000006,0x0000002d,0x0000002d, + 0x00040020,0x000001a8,0x00000002,0x000001a7,0x0004003b,0x000001a8,0x000001a9,0x00000002, + 0x00040020,0x000001aa,0x00000002,0x00000006,0x0004002b,0x0000001a,0x000001b3,0x00000002, + 0x00040020,0x000001b4,0x00000002,0x0000002d,0x00090019,0x000001b9,0x00000013,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001ba,0x00000000, + 0x000001b9,0x0004003b,0x000001ba,0x000001bb,0x00000000,0x0004002b,0x00000006,0x000001bf, + 0x00000000,0x0004003b,0x000001ba,0x000001c3,0x00000000,0x0004003b,0x000001ba,0x000001ca, + 0x00000000,0x0004003b,0x000001ba,0x000001d2,0x00000000,0x0005002c,0x00000032,0x000001d4, + 0x0000014c,0x0000014c,0x0004002b,0x00000013,0x000001d8,0x00000000,0x0004002b,0x00000013, + 0x000001dc,0x3f800000,0x00090019,0x000001e4,0x00000013,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000007,0x00040020,0x000001e5,0x00000000,0x000001e4,0x0004003b, + 0x000001e5,0x000001e6,0x00000000,0x0004003b,0x000001e5,0x000001f0,0x00000000,0x0004003b, + 0x000001e5,0x000001fa,0x00000000,0x0004003b,0x000001e5,0x00000204,0x00000000,0x0004002b, + 0x00000006,0x0000020b,0x00000004,0x0004003b,0x000001e5,0x0000020f,0x00000000,0x0004003b, + 0x000001e5,0x00000219,0x00000000,0x0005002c,0x00000038,0x0000021f,0x000001d8,0x000001d8, + 0x00090019,0x0000025e,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x00000021,0x00040020,0x0000025f,0x00000000,0x0000025e,0x0004003b,0x0000025f,0x00000260, + 0x00000000,0x00040020,0x00000261,0x0000000b,0x00000006,0x00040017,0x00000265,0x00000006, + 0x00000004,0x0007002c,0x00000265,0x00000266,0x000001bf,0x000001bf,0x000001bf,0x000001bf, + 0x00040020,0x000002af,0x00000004,0x00000006,0x0004003b,0x000002af,0x000002b0,0x00000004, + 0x0004002b,0x0000001a,0x000002ba,0x00000003,0x0004002b,0x0000001a,0x000002cd,0x00000004, + 0x0004002b,0x00000013,0x0000035e,0x477fdf00,0x0004002b,0x00000013,0x00000372,0x00800000, + 0x0004002b,0x0000001a,0x0000037d,0x00000005,0x0004002b,0x00000013,0x00000380,0x477fe000, + 0x0004002b,0x00000013,0x0000038d,0x387fda40,0x0004001c,0x000003d9,0x00000032,0x00000081, + 0x0004002b,0x0000001a,0x000003da,0xffffffff,0x0005002c,0x00000032,0x000003db,0x000003da, + 0x0000014c,0x0005002c,0x00000032,0x000003dc,0x00000191,0x0000014c,0x0005002c,0x00000032, + 0x000003dd,0x0000014c,0x000003da,0x0005002c,0x00000032,0x000003de,0x0000014c,0x00000191, + 0x0008002c,0x000003d9,0x000003df,0x000001d4,0x000003db,0x000003dc,0x000003dd,0x000003de, + 0x00040020,0x000003e5,0x00000007,0x000003d9,0x00040020,0x00000413,0x00000007,0x00000093, + 0x00040020,0x00000418,0x00000007,0x0000006e,0x0004002b,0x00000013,0x0000047f,0x3f000000, + 0x0007002c,0x0000009f,0x0000048e,0x000001d8,0x000001d8,0x000001d8,0x000001d8,0x0004002b, + 0x00000013,0x000004af,0x3e800000,0x0004002b,0x00000006,0x000004bf,0x00000010,0x0004001c, + 0x000004c0,0x00000013,0x000004bf,0x0004001c,0x000004c1,0x000004c0,0x000004bf,0x00040020, + 0x000004c2,0x00000004,0x000004c1,0x0004003b,0x000004c2,0x000004c3,0x00000004,0x00040020, + 0x000004c6,0x00000004,0x00000013,0x0004003b,0x000004c2,0x000004c9,0x00000004,0x0004003b, + 0x000004c2,0x000004ce,0x00000004,0x0004003b,0x000004c2,0x000004d3,0x00000004,0x0004002b, + 0x00000006,0x000004ef,0x00000d48,0x0004002b,0x00000006,0x000004f0,0x00000108,0x0005002c, + 0x0000002d,0x0000053f,0x000001bf,0x000001bf,0x0005002c,0x0000002d,0x00000542,0x000001bf, + 0x00000172,0x0005002c,0x0000002d,0x00000545,0x00000172,0x000001bf,0x0005002c,0x0000002d, + 0x00000548,0x00000172,0x00000172,0x0004002b,0x00000006,0x00000591,0x00000040,0x0004002b, + 0x00000006,0x0000059f,0x00000020,0x0004001c,0x000005a9,0x0000009f,0x0000020b,0x00040020, + 0x000005aa,0x00000007,0x000005a9,0x0004002b,0x00000006,0x00000678,0x00000008,0x0004002b, + 0x00000006,0x000007af,0x00000006,0x0004002b,0x00000006,0x0000081c,0x00000007,0x0004002b, + 0x0000001a,0x00000899,0x00000006,0x00040020,0x00000904,0x00000001,0x0000013b,0x0004003b, + 0x00000904,0x00000905,0x00000001,0x00040020,0x00000906,0x00000001,0x00000006,0x0004003b, + 0x00000906,0x00000907,0x00000001,0x0004002b,0x00000013,0x0000090d,0x37801002,0x0002001a, + 0x0000090e,0x00040020,0x0000090f,0x00000000,0x0000090e,0x0004003b,0x0000090f,0x00000910, + 0x00000000,0x0004003b,0x0000090f,0x00000911,0x00000000,0x0004002b,0x00000013,0x00000912, + 0x7f7fffff,0x0004002b,0x00000013,0x00000913,0x3a1fe868,0x0004002b,0x00000013,0x00000914, + 0x3d800000,0x0004002b,0x00000013,0x00000915,0x3d3d70a4,0x0004002b,0x00000013,0x00000916, + 0x3e400000,0x0004002b,0x00000013,0x00000917,0x40000000,0x0004002b,0x00000013,0x00000918, + 0x461c4000,0x0004002b,0x00000006,0x00000919,0x00000100,0x0006002c,0x0000013b,0x0000091a, + 0x00000919,0x00000172,0x00000172,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003, + 0x000200f8,0x00000005,0x0004003b,0x0000013c,0x00000908,0x00000007,0x0004003b,0x00000007, + 0x0000090a,0x00000007,0x0004003d,0x0000013b,0x00000909,0x00000905,0x0003003e,0x00000908, + 0x00000909,0x0004003d,0x00000006,0x0000090b,0x00000907,0x0003003e,0x0000090a,0x0000090b, + 0x00060039,0x00000002,0x0000090c,0x00000140,0x00000908,0x0000090a,0x000100fd,0x00010038, + 0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009, + 0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8,0x0000000d, + 0x0004003d,0x00000006,0x00000142,0x00000009,0x0004003d,0x00000006,0x00000143,0x0000000a, + 0x0004007c,0x0000001a,0x00000144,0x00000143,0x0004003d,0x00000006,0x00000145,0x0000000b, + 0x0004007c,0x0000001a,0x00000146,0x00000145,0x000600cb,0x00000006,0x00000147,0x00000142, + 0x00000144,0x00000146,0x000200fe,0x00000147,0x00010038,0x00050036,0x00000006,0x00000011, + 0x00000000,0x00000008,0x00030037,0x00000007,0x0000000e,0x00030037,0x00000007,0x0000000f, + 0x00030037,0x00000007,0x00000010,0x000200f8,0x00000012,0x0004003d,0x00000006,0x0000014a, + 0x0000000e,0x0004003d,0x00000006,0x0000014b,0x0000000f,0x0004003d,0x00000006,0x0000014d, + 0x00000010,0x0004007c,0x0000001a,0x0000014e,0x0000014d,0x000700c9,0x00000006,0x0000014f, + 0x0000014a,0x0000014b,0x0000014c,0x0000014e,0x000200fe,0x0000014f,0x00010038,0x00050036, + 0x00000013,0x00000018,0x00000000,0x00000015,0x00030037,0x00000014,0x00000016,0x00030037, + 0x00000014,0x00000017,0x000200f8,0x00000019,0x0004003d,0x00000013,0x00000152,0x00000016, + 0x0004003d,0x00000013,0x00000153,0x00000017,0x0007000c,0x00000013,0x00000154,0x00000001, + 0x00000025,0x00000152,0x00000153,0x000200fe,0x00000154,0x00010038,0x00050036,0x0000001a, + 0x0000001f,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x00030037,0x0000001b, + 0x0000001e,0x000200f8,0x00000020,0x0004003d,0x0000001a,0x00000157,0x0000001d,0x0004003d, + 0x0000001a,0x00000158,0x0000001e,0x0007000c,0x0000001a,0x00000159,0x00000001,0x00000027, + 0x00000157,0x00000158,0x000200fe,0x00000159,0x00010038,0x00050036,0x00000013,0x00000023, + 0x00000000,0x00000015,0x00030037,0x00000014,0x00000021,0x00030037,0x00000014,0x00000022, + 0x000200f8,0x00000024,0x0004003d,0x00000013,0x0000015c,0x00000021,0x0004003d,0x00000013, + 0x0000015d,0x00000022,0x0007000c,0x00000013,0x0000015e,0x00000001,0x00000028,0x0000015c, + 0x0000015d,0x000200fe,0x0000015e,0x00010038,0x00050036,0x0000001a,0x00000027,0x00000000, + 0x0000001c,0x00030037,0x0000001b,0x00000025,0x00030037,0x0000001b,0x00000026,0x000200f8, + 0x00000028,0x0004003d,0x0000001a,0x00000161,0x00000025,0x0004003d,0x0000001a,0x00000162, + 0x00000026,0x0007000c,0x0000001a,0x00000163,0x00000001,0x0000002a,0x00000161,0x00000162, + 0x000200fe,0x00000163,0x00010038,0x00050036,0x00000013,0x0000002b,0x00000000,0x00000015, + 0x00030037,0x00000014,0x00000029,0x00030037,0x00000014,0x0000002a,0x000200f8,0x0000002c, + 0x0004003d,0x00000013,0x00000166,0x00000029,0x0004003d,0x00000013,0x00000167,0x0000002a, + 0x0007000c,0x00000013,0x00000168,0x00000001,0x0000001a,0x00000166,0x00000167,0x000200fe, + 0x00000168,0x00010038,0x00050036,0x0000002d,0x00000030,0x00000000,0x0000002e,0x00030037, + 0x00000007,0x0000002f,0x000200f8,0x00000031,0x0004003b,0x00000007,0x0000016d,0x00000007, + 0x0004003b,0x00000007,0x0000016f,0x00000007,0x0004003b,0x00000007,0x00000170,0x00000007, + 0x0004003b,0x00000007,0x00000173,0x00000007,0x0004003b,0x00000007,0x00000174,0x00000007, + 0x0004003b,0x00000007,0x00000176,0x00000007,0x0004003b,0x00000007,0x00000178,0x00000007, + 0x0004003b,0x00000007,0x0000017a,0x00000007,0x0004003b,0x00000007,0x0000017b,0x00000007, + 0x0004003b,0x00000007,0x0000017d,0x00000007,0x0004003b,0x00000007,0x0000017f,0x00000007, + 0x0004003b,0x00000007,0x00000180,0x00000007,0x0004003b,0x00000007,0x00000182,0x00000007, + 0x0004003b,0x00000007,0x00000183,0x00000007,0x0004003b,0x00000007,0x00000184,0x00000007, + 0x0004003d,0x00000006,0x0000016e,0x0000002f,0x0003003e,0x0000016d,0x0000016e,0x0003003e, + 0x0000016f,0x0000016b,0x0003003e,0x00000170,0x0000016c,0x00070039,0x00000006,0x00000171, + 0x0000000c,0x0000016d,0x0000016f,0x00000170,0x0003003e,0x00000173,0x00000171,0x0004003d, + 0x00000006,0x00000175,0x0000002f,0x0003003e,0x00000174,0x00000175,0x0003003e,0x00000176, + 0x00000172,0x00070039,0x00000006,0x00000177,0x00000011,0x00000173,0x00000174,0x00000176, + 0x0004003d,0x00000006,0x00000179,0x0000002f,0x0003003e,0x00000178,0x00000179,0x0003003e, + 0x0000017a,0x0000016c,0x0003003e,0x0000017b,0x0000016c,0x00070039,0x00000006,0x0000017c, + 0x0000000c,0x00000178,0x0000017a,0x0000017b,0x0004003d,0x00000006,0x0000017e,0x0000002f, + 0x0003003e,0x0000017d,0x0000017e,0x0003003e,0x0000017f,0x00000172,0x0003003e,0x00000180, + 0x0000016b,0x00070039,0x00000006,0x00000181,0x0000000c,0x0000017d,0x0000017f,0x00000180, + 0x0003003e,0x00000182,0x0000017c,0x0003003e,0x00000183,0x00000181,0x0003003e,0x00000184, + 0x0000016b,0x00070039,0x00000006,0x00000185,0x00000011,0x00000182,0x00000183,0x00000184, + 0x00050050,0x0000002d,0x00000186,0x00000177,0x00000185,0x000200fe,0x00000186,0x00010038, + 0x00050036,0x00000032,0x00000034,0x00000000,0x00000033,0x000200f8,0x00000035,0x00050041, + 0x0000018c,0x0000018d,0x0000018b,0x0000014c,0x0004003d,0x00000032,0x0000018e,0x0000018d, + 0x000200fe,0x0000018e,0x00010038,0x00050036,0x00000032,0x00000036,0x00000000,0x00000033, + 0x000200f8,0x00000037,0x00050041,0x0000018c,0x00000192,0x0000018b,0x00000191,0x0004003d, + 0x00000032,0x00000193,0x00000192,0x000200fe,0x00000193,0x00010038,0x00050036,0x00000038, + 0x0000003a,0x00000000,0x00000039,0x000200f8,0x0000003b,0x00050041,0x00000197,0x00000198, + 0x0000018b,0x00000196,0x0004003d,0x00000038,0x00000199,0x00000198,0x000200fe,0x00000199, + 0x00010038,0x00050036,0x00000038,0x0000003c,0x00000000,0x00000039,0x000200f8,0x0000003d, + 0x00050041,0x00000197,0x0000019d,0x0000018b,0x0000019c,0x0004003d,0x00000038,0x0000019e, + 0x0000019d,0x000200fe,0x0000019e,0x00010038,0x00050036,0x00000013,0x0000003f,0x00000000, + 0x0000003e,0x000200f8,0x00000040,0x00050041,0x000001a2,0x000001a3,0x0000018b,0x000001a1, + 0x0004003d,0x00000013,0x000001a4,0x000001a3,0x000200fe,0x000001a4,0x00010038,0x00050036, + 0x00000006,0x00000042,0x00000000,0x00000041,0x000200f8,0x00000043,0x00050041,0x000001aa, + 0x000001ab,0x000001a9,0x0000014c,0x0004003d,0x00000006,0x000001ac,0x000001ab,0x000200fe, + 0x000001ac,0x00010038,0x00050036,0x00000006,0x00000044,0x00000000,0x00000041,0x000200f8, + 0x00000045,0x00050041,0x000001aa,0x000001af,0x000001a9,0x00000191,0x0004003d,0x00000006, + 0x000001b0,0x000001af,0x000200fe,0x000001b0,0x00010038,0x00050036,0x0000002d,0x00000047, + 0x00000000,0x00000046,0x000200f8,0x00000048,0x00050041,0x000001b4,0x000001b5,0x000001a9, + 0x000001b3,0x0004003d,0x0000002d,0x000001b6,0x000001b5,0x000200fe,0x000001b6,0x00010038, + 0x00050036,0x00000013,0x0000004c,0x00000000,0x0000004a,0x00030037,0x00000049,0x0000004b, + 0x000200f8,0x0000004d,0x0004003d,0x000001b9,0x000001bc,0x000001bb,0x0004003d,0x00000032, + 0x000001bd,0x0000004b,0x0007005f,0x0000009f,0x000001be,0x000001bc,0x000001bd,0x00000002, + 0x0000014c,0x00050051,0x00000013,0x000001c0,0x000001be,0x00000000,0x000200fe,0x000001c0, + 0x00010038,0x00050036,0x00000013,0x0000004f,0x00000000,0x0000004a,0x00030037,0x00000049, + 0x0000004e,0x000200f8,0x00000050,0x0004003d,0x000001b9,0x000001c4,0x000001c3,0x0004003d, + 0x00000032,0x000001c5,0x0000004e,0x0007005f,0x0000009f,0x000001c6,0x000001c4,0x000001c5, + 0x00000002,0x0000014c,0x00050051,0x00000013,0x000001c7,0x000001c6,0x00000000,0x000200fe, + 0x000001c7,0x00010038,0x00050036,0x00000038,0x00000053,0x00000000,0x00000051,0x00030037, + 0x00000049,0x00000052,0x000200f8,0x00000054,0x0004003d,0x000001b9,0x000001cb,0x000001ca, + 0x0004003d,0x00000032,0x000001cc,0x00000052,0x0007005f,0x0000009f,0x000001cd,0x000001cb, + 0x000001cc,0x00000002,0x0000014c,0x0007004f,0x00000038,0x000001ce,0x000001cd,0x000001cd, + 0x00000000,0x00000001,0x000200fe,0x000001ce,0x00010038,0x00050036,0x00000013,0x00000055, + 0x00000000,0x0000003e,0x000200f8,0x00000056,0x0004003b,0x00000014,0x000001d1,0x00000007, + 0x0004003d,0x000001b9,0x000001d3,0x000001d2,0x0007005f,0x0000009f,0x000001d5,0x000001d3, + 0x000001d4,0x00000002,0x0000014c,0x00050051,0x00000013,0x000001d6,0x000001d5,0x00000000, + 0x0003003e,0x000001d1,0x000001d6,0x0004003d,0x00000013,0x000001d7,0x000001d1,0x000500b4, + 0x0000006e,0x000001d9,0x000001d7,0x000001d8,0x000300f7,0x000001db,0x00000000,0x000400fa, + 0x000001d9,0x000001da,0x000001db,0x000200f8,0x000001da,0x0003003e,0x000001d1,0x000001dc, + 0x000200f9,0x000001db,0x000200f8,0x000001db,0x0004003d,0x00000013,0x000001dd,0x000001d1, + 0x000200fe,0x000001dd,0x00010038,0x00050036,0x00000038,0x0000005a,0x00000000,0x00000057, + 0x00030037,0x00000049,0x00000058,0x00030037,0x00000007,0x00000059,0x000200f8,0x0000005b, + 0x0004003d,0x00000006,0x000001e0,0x00000059,0x000500aa,0x0000006e,0x000001e1,0x000001e0, + 0x000001bf,0x000300f7,0x000001e3,0x00000000,0x000400fa,0x000001e1,0x000001e2,0x000001e3, + 0x000200f8,0x000001e2,0x0004003d,0x000001e4,0x000001e7,0x000001e6,0x0004003d,0x00000032, + 0x000001e8,0x00000058,0x00050062,0x0000009f,0x000001e9,0x000001e7,0x000001e8,0x0007004f, + 0x00000038,0x000001ea,0x000001e9,0x000001e9,0x00000000,0x00000001,0x000200fe,0x000001ea, + 0x000200f8,0x000001e3,0x0004003d,0x00000006,0x000001ec,0x00000059,0x000500aa,0x0000006e, + 0x000001ed,0x000001ec,0x00000172,0x000300f7,0x000001ef,0x00000000,0x000400fa,0x000001ed, + 0x000001ee,0x000001ef,0x000200f8,0x000001ee,0x0004003d,0x000001e4,0x000001f1,0x000001f0, + 0x0004003d,0x00000032,0x000001f2,0x00000058,0x00050062,0x0000009f,0x000001f3,0x000001f1, + 0x000001f2,0x0007004f,0x00000038,0x000001f4,0x000001f3,0x000001f3,0x00000000,0x00000001, + 0x000200fe,0x000001f4,0x000200f8,0x000001ef,0x0004003d,0x00000006,0x000001f6,0x00000059, + 0x000500aa,0x0000006e,0x000001f7,0x000001f6,0x0000016b,0x000300f7,0x000001f9,0x00000000, + 0x000400fa,0x000001f7,0x000001f8,0x000001f9,0x000200f8,0x000001f8,0x0004003d,0x000001e4, + 0x000001fb,0x000001fa,0x0004003d,0x00000032,0x000001fc,0x00000058,0x00050062,0x0000009f, + 0x000001fd,0x000001fb,0x000001fc,0x0007004f,0x00000038,0x000001fe,0x000001fd,0x000001fd, + 0x00000000,0x00000001,0x000200fe,0x000001fe,0x000200f8,0x000001f9,0x0004003d,0x00000006, + 0x00000200,0x00000059,0x000500aa,0x0000006e,0x00000201,0x00000200,0x0000016c,0x000300f7, + 0x00000203,0x00000000,0x000400fa,0x00000201,0x00000202,0x00000203,0x000200f8,0x00000202, + 0x0004003d,0x000001e4,0x00000205,0x00000204,0x0004003d,0x00000032,0x00000206,0x00000058, + 0x00050062,0x0000009f,0x00000207,0x00000205,0x00000206,0x0007004f,0x00000038,0x00000208, + 0x00000207,0x00000207,0x00000000,0x00000001,0x000200fe,0x00000208,0x000200f8,0x00000203, + 0x0004003d,0x00000006,0x0000020a,0x00000059,0x000500aa,0x0000006e,0x0000020c,0x0000020a, + 0x0000020b,0x000300f7,0x0000020e,0x00000000,0x000400fa,0x0000020c,0x0000020d,0x0000020e, + 0x000200f8,0x0000020d,0x0004003d,0x000001e4,0x00000210,0x0000020f,0x0004003d,0x00000032, + 0x00000211,0x00000058,0x00050062,0x0000009f,0x00000212,0x00000210,0x00000211,0x0007004f, + 0x00000038,0x00000213,0x00000212,0x00000212,0x00000000,0x00000001,0x000200fe,0x00000213, + 0x000200f8,0x0000020e,0x0004003d,0x00000006,0x00000215,0x00000059,0x000500aa,0x0000006e, + 0x00000216,0x00000215,0x00000081,0x000300f7,0x00000218,0x00000000,0x000400fa,0x00000216, + 0x00000217,0x00000218,0x000200f8,0x00000217,0x0004003d,0x000001e4,0x0000021a,0x00000219, + 0x0004003d,0x00000032,0x0000021b,0x00000058,0x00050062,0x0000009f,0x0000021c,0x0000021a, + 0x0000021b,0x0007004f,0x00000038,0x0000021d,0x0000021c,0x0000021c,0x00000000,0x00000001, + 0x000200fe,0x0000021d,0x000200f8,0x00000218,0x000200fe,0x0000021f,0x00010038,0x00050036, + 0x00000002,0x00000061,0x00000000,0x0000005d,0x00030037,0x00000049,0x0000005e,0x00030037, + 0x0000005c,0x0000005f,0x00030037,0x00000007,0x00000060,0x000200f8,0x00000062,0x0004003d, + 0x00000006,0x00000222,0x00000060,0x000500aa,0x0000006e,0x00000223,0x00000222,0x000001bf, + 0x000300f7,0x00000225,0x00000000,0x000400fa,0x00000223,0x00000224,0x00000225,0x000200f8, + 0x00000224,0x0004003d,0x000001e4,0x00000226,0x000001e6,0x0004003d,0x00000032,0x00000227, + 0x0000005e,0x0004003d,0x00000038,0x00000228,0x0000005f,0x00050051,0x00000013,0x00000229, + 0x00000228,0x00000000,0x00050051,0x00000013,0x0000022a,0x00000228,0x00000001,0x00070050, + 0x0000009f,0x0000022b,0x00000229,0x0000022a,0x000001d8,0x000001d8,0x00040063,0x00000226, + 0x00000227,0x0000022b,0x000200f9,0x00000225,0x000200f8,0x00000225,0x0004003d,0x00000006, + 0x0000022c,0x00000060,0x000500aa,0x0000006e,0x0000022d,0x0000022c,0x00000172,0x000300f7, + 0x0000022f,0x00000000,0x000400fa,0x0000022d,0x0000022e,0x0000022f,0x000200f8,0x0000022e, + 0x0004003d,0x000001e4,0x00000230,0x000001f0,0x0004003d,0x00000032,0x00000231,0x0000005e, + 0x0004003d,0x00000038,0x00000232,0x0000005f,0x00050051,0x00000013,0x00000233,0x00000232, + 0x00000000,0x00050051,0x00000013,0x00000234,0x00000232,0x00000001,0x00070050,0x0000009f, + 0x00000235,0x00000233,0x00000234,0x000001d8,0x000001d8,0x00040063,0x00000230,0x00000231, + 0x00000235,0x000200f9,0x0000022f,0x000200f8,0x0000022f,0x0004003d,0x00000006,0x00000236, + 0x00000060,0x000500aa,0x0000006e,0x00000237,0x00000236,0x0000016b,0x000300f7,0x00000239, + 0x00000000,0x000400fa,0x00000237,0x00000238,0x00000239,0x000200f8,0x00000238,0x0004003d, + 0x000001e4,0x0000023a,0x000001fa,0x0004003d,0x00000032,0x0000023b,0x0000005e,0x0004003d, + 0x00000038,0x0000023c,0x0000005f,0x00050051,0x00000013,0x0000023d,0x0000023c,0x00000000, + 0x00050051,0x00000013,0x0000023e,0x0000023c,0x00000001,0x00070050,0x0000009f,0x0000023f, + 0x0000023d,0x0000023e,0x000001d8,0x000001d8,0x00040063,0x0000023a,0x0000023b,0x0000023f, + 0x000200f9,0x00000239,0x000200f8,0x00000239,0x0004003d,0x00000006,0x00000240,0x00000060, + 0x000500aa,0x0000006e,0x00000241,0x00000240,0x0000016c,0x000300f7,0x00000243,0x00000000, + 0x000400fa,0x00000241,0x00000242,0x00000243,0x000200f8,0x00000242,0x0004003d,0x000001e4, + 0x00000244,0x00000204,0x0004003d,0x00000032,0x00000245,0x0000005e,0x0004003d,0x00000038, + 0x00000246,0x0000005f,0x00050051,0x00000013,0x00000247,0x00000246,0x00000000,0x00050051, + 0x00000013,0x00000248,0x00000246,0x00000001,0x00070050,0x0000009f,0x00000249,0x00000247, + 0x00000248,0x000001d8,0x000001d8,0x00040063,0x00000244,0x00000245,0x00000249,0x000200f9, + 0x00000243,0x000200f8,0x00000243,0x0004003d,0x00000006,0x0000024a,0x00000060,0x000500aa, + 0x0000006e,0x0000024b,0x0000024a,0x0000020b,0x000300f7,0x0000024d,0x00000000,0x000400fa, + 0x0000024b,0x0000024c,0x0000024d,0x000200f8,0x0000024c,0x0004003d,0x000001e4,0x0000024e, + 0x0000020f,0x0004003d,0x00000032,0x0000024f,0x0000005e,0x0004003d,0x00000038,0x00000250, + 0x0000005f,0x00050051,0x00000013,0x00000251,0x00000250,0x00000000,0x00050051,0x00000013, + 0x00000252,0x00000250,0x00000001,0x00070050,0x0000009f,0x00000253,0x00000251,0x00000252, + 0x000001d8,0x000001d8,0x00040063,0x0000024e,0x0000024f,0x00000253,0x000200f9,0x0000024d, + 0x000200f8,0x0000024d,0x0004003d,0x00000006,0x00000254,0x00000060,0x000500aa,0x0000006e, + 0x00000255,0x00000254,0x00000081,0x000300f7,0x00000257,0x00000000,0x000400fa,0x00000255, + 0x00000256,0x00000257,0x000200f8,0x00000256,0x0004003d,0x000001e4,0x00000258,0x00000219, + 0x0004003d,0x00000032,0x00000259,0x0000005e,0x0004003d,0x00000038,0x0000025a,0x0000005f, + 0x00050051,0x00000013,0x0000025b,0x0000025a,0x00000000,0x00050051,0x00000013,0x0000025c, + 0x0000025a,0x00000001,0x00070050,0x0000009f,0x0000025d,0x0000025b,0x0000025c,0x000001d8, + 0x000001d8,0x00040063,0x00000258,0x00000259,0x0000025d,0x000200f9,0x00000257,0x000200f8, + 0x00000257,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000065,0x00000000,0x00000063, + 0x00030037,0x00000007,0x00000064,0x000200f8,0x00000066,0x0006003c,0x00000261,0x00000262, + 0x00000260,0x000001d4,0x000001bf,0x000700ea,0x00000006,0x00000263,0x00000262,0x00000172, + 0x000001bf,0x00000172,0x0003003e,0x00000064,0x00000263,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x00000067,0x00000000,0x00000003,0x000200f8,0x00000068,0x0004003d,0x0000025e, + 0x00000264,0x00000260,0x00040063,0x00000264,0x000001d4,0x00000266,0x000100fd,0x00010038, + 0x00050036,0x00000013,0x0000006c,0x00000000,0x00000069,0x00030037,0x00000013,0x0000006a, + 0x00030037,0x00000013,0x0000006b,0x000200f8,0x0000006d,0x0004003b,0x00000014,0x00000267, + 0x00000007,0x0004003b,0x00000014,0x00000268,0x00000007,0x0004003b,0x00000014,0x00000269, + 0x00000007,0x0004003b,0x00000014,0x0000026d,0x00000007,0x0004003b,0x00000014,0x00000270, + 0x00000007,0x0004003b,0x00000014,0x00000271,0x00000007,0x0003003e,0x00000268,0x0000006a, + 0x0003003e,0x00000269,0x0000006b,0x00060039,0x00000013,0x0000026a,0x00000023,0x00000268, + 0x00000269,0x0003003e,0x00000267,0x0000026a,0x0004003d,0x00000013,0x0000026b,0x00000267, + 0x000500b7,0x0000006e,0x0000026c,0x0000026b,0x000001d8,0x000300f7,0x0000026f,0x00000000, + 0x000400fa,0x0000026c,0x0000026e,0x00000275,0x000200f8,0x0000026e,0x0003003e,0x00000270, + 0x0000006a,0x0003003e,0x00000271,0x0000006b,0x00060039,0x00000013,0x00000272,0x00000018, + 0x00000270,0x00000271,0x0004003d,0x00000013,0x00000273,0x00000267,0x00050088,0x00000013, + 0x00000274,0x00000272,0x00000273,0x0003003e,0x0000026d,0x00000274,0x000200f9,0x0000026f, + 0x000200f8,0x00000275,0x0003003e,0x0000026d,0x000001d8,0x000200f9,0x0000026f,0x000200f8, + 0x0000026f,0x0004003d,0x00000013,0x00000276,0x0000026d,0x000200fe,0x00000276,0x00010038, + 0x00050036,0x0000006e,0x00000071,0x00000000,0x0000006f,0x00030037,0x0000005c,0x00000070, + 0x000200f8,0x00000072,0x00050041,0x00000014,0x00000279,0x00000070,0x000001bf,0x0004003d, + 0x00000013,0x0000027a,0x00000279,0x000500be,0x0000006e,0x0000027b,0x0000027a,0x000001d8, + 0x000300f7,0x0000027d,0x00000000,0x000400fa,0x0000027b,0x0000027c,0x0000027d,0x000200f8, + 0x0000027c,0x00050041,0x00000014,0x0000027e,0x00000070,0x000001bf,0x0004003d,0x00000013, + 0x0000027f,0x0000027e,0x000500bc,0x0000006e,0x00000280,0x0000027f,0x000001dc,0x000200f9, + 0x0000027d,0x000200f8,0x0000027d,0x000700f5,0x0000006e,0x00000281,0x0000027b,0x00000072, + 0x00000280,0x0000027c,0x000300f7,0x00000283,0x00000000,0x000400fa,0x00000281,0x00000282, + 0x00000283,0x000200f8,0x00000282,0x00050041,0x00000014,0x00000284,0x00000070,0x00000172, + 0x0004003d,0x00000013,0x00000285,0x00000284,0x000500be,0x0000006e,0x00000286,0x00000285, + 0x000001d8,0x000300f7,0x00000288,0x00000000,0x000400fa,0x00000286,0x00000287,0x00000288, + 0x000200f8,0x00000287,0x00050041,0x00000014,0x00000289,0x00000070,0x00000172,0x0004003d, + 0x00000013,0x0000028a,0x00000289,0x000500bc,0x0000006e,0x0000028b,0x0000028a,0x000001dc, + 0x000200f9,0x00000288,0x000200f8,0x00000288,0x000700f5,0x0000006e,0x0000028c,0x00000286, + 0x00000282,0x0000028b,0x00000287,0x000200f9,0x00000283,0x000200f8,0x00000283,0x000700f5, + 0x0000006e,0x0000028d,0x00000281,0x0000027d,0x0000028c,0x00000288,0x000200fe,0x0000028d, + 0x00010038,0x00050036,0x00000032,0x00000077,0x00000000,0x00000073,0x00030037,0x00000049, + 0x00000074,0x00030037,0x00000049,0x00000075,0x00030037,0x00000049,0x00000076,0x000200f8, + 0x00000078,0x0004003b,0x00000049,0x00000290,0x00000007,0x0004003b,0x0000001b,0x00000297, + 0x00000007,0x0004003b,0x0000001b,0x0000029a,0x00000007,0x0004003b,0x0000001b,0x0000029c, + 0x00000007,0x0004003b,0x0000001b,0x0000029d,0x00000007,0x0004003b,0x0000001b,0x000002a3, + 0x00000007,0x0004003b,0x0000001b,0x000002a6,0x00000007,0x0004003b,0x0000001b,0x000002a8, + 0x00000007,0x0004003b,0x0000001b,0x000002a9,0x00000007,0x0004003d,0x00000032,0x00000291, + 0x00000074,0x0004003d,0x00000032,0x00000292,0x00000075,0x00050080,0x00000032,0x00000293, + 0x00000291,0x00000292,0x0003003e,0x00000290,0x00000293,0x00050041,0x0000001b,0x00000294, + 0x00000076,0x000001bf,0x0004003d,0x0000001a,0x00000295,0x00000294,0x00050082,0x0000001a, + 0x00000296,0x00000295,0x00000191,0x00050041,0x0000001b,0x00000298,0x00000290,0x000001bf, + 0x0004003d,0x0000001a,0x00000299,0x00000298,0x0003003e,0x00000297,0x00000299,0x0003003e, + 0x0000029a,0x00000296,0x00060039,0x0000001a,0x0000029b,0x0000001f,0x00000297,0x0000029a, + 0x0003003e,0x0000029c,0x0000014c,0x0003003e,0x0000029d,0x0000029b,0x00060039,0x0000001a, + 0x0000029e,0x00000027,0x0000029c,0x0000029d,0x00050041,0x0000001b,0x0000029f,0x00000290, + 0x000001bf,0x0003003e,0x0000029f,0x0000029e,0x00050041,0x0000001b,0x000002a0,0x00000076, + 0x00000172,0x0004003d,0x0000001a,0x000002a1,0x000002a0,0x00050082,0x0000001a,0x000002a2, + 0x000002a1,0x00000191,0x00050041,0x0000001b,0x000002a4,0x00000290,0x00000172,0x0004003d, + 0x0000001a,0x000002a5,0x000002a4,0x0003003e,0x000002a3,0x000002a5,0x0003003e,0x000002a6, + 0x000002a2,0x00060039,0x0000001a,0x000002a7,0x0000001f,0x000002a3,0x000002a6,0x0003003e, + 0x000002a8,0x0000014c,0x0003003e,0x000002a9,0x000002a7,0x00060039,0x0000001a,0x000002aa, + 0x00000027,0x000002a8,0x000002a9,0x00050041,0x0000001b,0x000002ab,0x00000290,0x00000172, + 0x0003003e,0x000002ab,0x000002aa,0x0004003d,0x00000032,0x000002ac,0x00000290,0x000200fe, + 0x000002ac,0x00010038,0x00050036,0x00000002,0x0000007a,0x00000000,0x00000063,0x00030037, + 0x00000007,0x00000079,0x000200f8,0x0000007b,0x0004003b,0x00000007,0x000002b1,0x00000007, + 0x0004003d,0x00000006,0x000002b2,0x000002b0,0x0003003e,0x000002b1,0x000002b2,0x00050039, + 0x00000002,0x000002b3,0x00000065,0x000002b1,0x0004003d,0x00000006,0x000002b4,0x000002b1, + 0x0003003e,0x000002b0,0x000002b4,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000007c, + 0x00000000,0x00000041,0x000200f8,0x0000007d,0x0004003d,0x00000006,0x000002b5,0x000002b0, + 0x000200fe,0x000002b5,0x00010038,0x00050036,0x00000002,0x0000007f,0x00000000,0x00000063, + 0x00030037,0x00000007,0x0000007e,0x000200f8,0x00000080,0x00040039,0x00000002,0x000002b8, + 0x00000067,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000087,0x00000000,0x00000085, + 0x00030037,0x00000084,0x00000086,0x000200f8,0x00000088,0x0004003b,0x00000014,0x000002b9, + 0x00000007,0x0004003b,0x00000014,0x000002bb,0x00000007,0x0004003b,0x00000014,0x000002be, + 0x00000007,0x0004003b,0x00000014,0x000002c2,0x00000007,0x0004003b,0x00000014,0x000002c5, + 0x00000007,0x0004003b,0x00000014,0x000002cc,0x00000007,0x0004003b,0x00000014,0x000002ce, + 0x00000007,0x0004003b,0x00000014,0x000002d1,0x00000007,0x0004003b,0x00000014,0x000002d5, + 0x00000007,0x0004003b,0x00000014,0x000002d8,0x00000007,0x0004003b,0x00000014,0x000002df, + 0x00000007,0x0004003b,0x00000014,0x000002e0,0x00000007,0x0004003b,0x00000014,0x000002e3, + 0x00000007,0x0004003b,0x00000014,0x000002e7,0x00000007,0x0004003b,0x00000014,0x000002ea, + 0x00000007,0x0004003b,0x00000014,0x000002f1,0x00000007,0x0004003b,0x00000014,0x000002f2, + 0x00000007,0x0004003b,0x00000014,0x000002f5,0x00000007,0x0004003b,0x00000014,0x000002f9, + 0x00000007,0x0004003b,0x00000014,0x000002fc,0x00000007,0x0004003b,0x00000014,0x00000303, + 0x00000007,0x0004003b,0x00000014,0x00000304,0x00000007,0x0004003b,0x00000014,0x00000307, + 0x00000007,0x0004003b,0x00000014,0x0000030b,0x00000007,0x0004003b,0x00000014,0x0000030e, + 0x00000007,0x0004003b,0x00000014,0x00000315,0x00000007,0x0004003b,0x00000014,0x00000316, + 0x00000007,0x0004003b,0x00000014,0x00000319,0x00000007,0x0004003b,0x00000014,0x0000031d, + 0x00000007,0x0004003b,0x00000014,0x00000320,0x00000007,0x0004003b,0x00000014,0x00000327, + 0x00000007,0x0004003b,0x00000014,0x00000328,0x00000007,0x0004003b,0x00000014,0x0000032b, + 0x00000007,0x0004003b,0x00000014,0x0000032f,0x00000007,0x0004003b,0x00000014,0x00000332, + 0x00000007,0x0004003b,0x00000014,0x00000339,0x00000007,0x0004003b,0x00000014,0x0000033a, + 0x00000007,0x0004003b,0x00000014,0x0000033d,0x00000007,0x0004003b,0x00000014,0x00000341, + 0x00000007,0x0004003b,0x00000014,0x00000344,0x00000007,0x0004003b,0x00000014,0x0000034b, + 0x00000007,0x0004003b,0x00000014,0x0000034c,0x00000007,0x0004003b,0x00000014,0x0000034f, + 0x00000007,0x0004003b,0x00000014,0x00000353,0x00000007,0x0004003b,0x00000014,0x00000356, + 0x00000007,0x00060041,0x00000014,0x000002bc,0x00000086,0x0000014c,0x0000014c,0x0004003d, + 0x00000013,0x000002bd,0x000002bc,0x0003003e,0x000002bb,0x000002bd,0x00060041,0x00000014, + 0x000002bf,0x00000086,0x0000014c,0x000002ba,0x0004003d,0x00000013,0x000002c0,0x000002bf, + 0x0003003e,0x000002be,0x000002c0,0x00060039,0x00000013,0x000002c1,0x00000018,0x000002bb, + 0x000002be,0x0003003e,0x000002b9,0x000002c1,0x00060041,0x00000014,0x000002c3,0x00000086, + 0x0000014c,0x0000014c,0x0004003d,0x00000013,0x000002c4,0x000002c3,0x0003003e,0x000002c2, + 0x000002c4,0x00060041,0x00000014,0x000002c6,0x00000086,0x0000014c,0x000002ba,0x0004003d, + 0x00000013,0x000002c7,0x000002c6,0x0003003e,0x000002c5,0x000002c7,0x00060039,0x00000013, + 0x000002c8,0x00000023,0x000002c2,0x000002c5,0x00060041,0x00000014,0x000002c9,0x00000086, + 0x0000014c,0x000002ba,0x0003003e,0x000002c9,0x000002c8,0x0004003d,0x00000013,0x000002ca, + 0x000002b9,0x00060041,0x00000014,0x000002cb,0x00000086,0x0000014c,0x0000014c,0x0003003e, + 0x000002cb,0x000002ca,0x00060041,0x00000014,0x000002cf,0x00000086,0x0000014c,0x00000191, + 0x0004003d,0x00000013,0x000002d0,0x000002cf,0x0003003e,0x000002ce,0x000002d0,0x00060041, + 0x00000014,0x000002d2,0x00000086,0x0000014c,0x000002cd,0x0004003d,0x00000013,0x000002d3, + 0x000002d2,0x0003003e,0x000002d1,0x000002d3,0x00060039,0x00000013,0x000002d4,0x00000018, + 0x000002ce,0x000002d1,0x0003003e,0x000002cc,0x000002d4,0x00060041,0x00000014,0x000002d6, + 0x00000086,0x0000014c,0x00000191,0x0004003d,0x00000013,0x000002d7,0x000002d6,0x0003003e, + 0x000002d5,0x000002d7,0x00060041,0x00000014,0x000002d9,0x00000086,0x0000014c,0x000002cd, + 0x0004003d,0x00000013,0x000002da,0x000002d9,0x0003003e,0x000002d8,0x000002da,0x00060039, + 0x00000013,0x000002db,0x00000023,0x000002d5,0x000002d8,0x00060041,0x00000014,0x000002dc, + 0x00000086,0x0000014c,0x000002cd,0x0003003e,0x000002dc,0x000002db,0x0004003d,0x00000013, + 0x000002dd,0x000002cc,0x00060041,0x00000014,0x000002de,0x00000086,0x0000014c,0x00000191, + 0x0003003e,0x000002de,0x000002dd,0x00060041,0x00000014,0x000002e1,0x00000086,0x0000014c, + 0x0000014c,0x0004003d,0x00000013,0x000002e2,0x000002e1,0x0003003e,0x000002e0,0x000002e2, + 0x00060041,0x00000014,0x000002e4,0x00000086,0x0000014c,0x000001b3,0x0004003d,0x00000013, + 0x000002e5,0x000002e4,0x0003003e,0x000002e3,0x000002e5,0x00060039,0x00000013,0x000002e6, + 0x00000018,0x000002e0,0x000002e3,0x0003003e,0x000002df,0x000002e6,0x00060041,0x00000014, + 0x000002e8,0x00000086,0x0000014c,0x0000014c,0x0004003d,0x00000013,0x000002e9,0x000002e8, + 0x0003003e,0x000002e7,0x000002e9,0x00060041,0x00000014,0x000002eb,0x00000086,0x0000014c, + 0x000001b3,0x0004003d,0x00000013,0x000002ec,0x000002eb,0x0003003e,0x000002ea,0x000002ec, + 0x00060039,0x00000013,0x000002ed,0x00000023,0x000002e7,0x000002ea,0x00060041,0x00000014, + 0x000002ee,0x00000086,0x0000014c,0x000001b3,0x0003003e,0x000002ee,0x000002ed,0x0004003d, + 0x00000013,0x000002ef,0x000002df,0x00060041,0x00000014,0x000002f0,0x00000086,0x0000014c, + 0x0000014c,0x0003003e,0x000002f0,0x000002ef,0x00060041,0x00000014,0x000002f3,0x00000086, + 0x0000014c,0x00000191,0x0004003d,0x00000013,0x000002f4,0x000002f3,0x0003003e,0x000002f2, + 0x000002f4,0x00060041,0x00000014,0x000002f6,0x00000086,0x0000014c,0x000002ba,0x0004003d, + 0x00000013,0x000002f7,0x000002f6,0x0003003e,0x000002f5,0x000002f7,0x00060039,0x00000013, + 0x000002f8,0x00000018,0x000002f2,0x000002f5,0x0003003e,0x000002f1,0x000002f8,0x00060041, + 0x00000014,0x000002fa,0x00000086,0x0000014c,0x00000191,0x0004003d,0x00000013,0x000002fb, + 0x000002fa,0x0003003e,0x000002f9,0x000002fb,0x00060041,0x00000014,0x000002fd,0x00000086, + 0x0000014c,0x000002ba,0x0004003d,0x00000013,0x000002fe,0x000002fd,0x0003003e,0x000002fc, + 0x000002fe,0x00060039,0x00000013,0x000002ff,0x00000023,0x000002f9,0x000002fc,0x00060041, + 0x00000014,0x00000300,0x00000086,0x0000014c,0x000002ba,0x0003003e,0x00000300,0x000002ff, + 0x0004003d,0x00000013,0x00000301,0x000002f1,0x00060041,0x00000014,0x00000302,0x00000086, + 0x0000014c,0x00000191,0x0003003e,0x00000302,0x00000301,0x00060041,0x00000014,0x00000305, + 0x00000086,0x0000014c,0x0000014c,0x0004003d,0x00000013,0x00000306,0x00000305,0x0003003e, + 0x00000304,0x00000306,0x00060041,0x00000014,0x00000308,0x00000086,0x0000014c,0x00000191, + 0x0004003d,0x00000013,0x00000309,0x00000308,0x0003003e,0x00000307,0x00000309,0x00060039, + 0x00000013,0x0000030a,0x00000018,0x00000304,0x00000307,0x0003003e,0x00000303,0x0000030a, + 0x00060041,0x00000014,0x0000030c,0x00000086,0x0000014c,0x0000014c,0x0004003d,0x00000013, + 0x0000030d,0x0000030c,0x0003003e,0x0000030b,0x0000030d,0x00060041,0x00000014,0x0000030f, + 0x00000086,0x0000014c,0x00000191,0x0004003d,0x00000013,0x00000310,0x0000030f,0x0003003e, + 0x0000030e,0x00000310,0x00060039,0x00000013,0x00000311,0x00000023,0x0000030b,0x0000030e, + 0x00060041,0x00000014,0x00000312,0x00000086,0x0000014c,0x00000191,0x0003003e,0x00000312, + 0x00000311,0x0004003d,0x00000013,0x00000313,0x00000303,0x00060041,0x00000014,0x00000314, + 0x00000086,0x0000014c,0x0000014c,0x0003003e,0x00000314,0x00000313,0x00060041,0x00000014, + 0x00000317,0x00000086,0x0000014c,0x000001b3,0x0004003d,0x00000013,0x00000318,0x00000317, + 0x0003003e,0x00000316,0x00000318,0x00060041,0x00000014,0x0000031a,0x00000086,0x0000014c, + 0x000002cd,0x0004003d,0x00000013,0x0000031b,0x0000031a,0x0003003e,0x00000319,0x0000031b, + 0x00060039,0x00000013,0x0000031c,0x00000018,0x00000316,0x00000319,0x0003003e,0x00000315, + 0x0000031c,0x00060041,0x00000014,0x0000031e,0x00000086,0x0000014c,0x000001b3,0x0004003d, + 0x00000013,0x0000031f,0x0000031e,0x0003003e,0x0000031d,0x0000031f,0x00060041,0x00000014, + 0x00000321,0x00000086,0x0000014c,0x000002cd,0x0004003d,0x00000013,0x00000322,0x00000321, + 0x0003003e,0x00000320,0x00000322,0x00060039,0x00000013,0x00000323,0x00000023,0x0000031d, + 0x00000320,0x00060041,0x00000014,0x00000324,0x00000086,0x0000014c,0x000002cd,0x0003003e, + 0x00000324,0x00000323,0x0004003d,0x00000013,0x00000325,0x00000315,0x00060041,0x00000014, + 0x00000326,0x00000086,0x0000014c,0x000001b3,0x0003003e,0x00000326,0x00000325,0x00060041, + 0x00000014,0x00000329,0x00000086,0x0000014c,0x00000191,0x0004003d,0x00000013,0x0000032a, + 0x00000329,0x0003003e,0x00000328,0x0000032a,0x00060041,0x00000014,0x0000032c,0x00000086, + 0x0000014c,0x000001b3,0x0004003d,0x00000013,0x0000032d,0x0000032c,0x0003003e,0x0000032b, + 0x0000032d,0x00060039,0x00000013,0x0000032e,0x00000018,0x00000328,0x0000032b,0x0003003e, + 0x00000327,0x0000032e,0x00060041,0x00000014,0x00000330,0x00000086,0x0000014c,0x00000191, + 0x0004003d,0x00000013,0x00000331,0x00000330,0x0003003e,0x0000032f,0x00000331,0x00060041, + 0x00000014,0x00000333,0x00000086,0x0000014c,0x000001b3,0x0004003d,0x00000013,0x00000334, + 0x00000333,0x0003003e,0x00000332,0x00000334,0x00060039,0x00000013,0x00000335,0x00000023, + 0x0000032f,0x00000332,0x00060041,0x00000014,0x00000336,0x00000086,0x0000014c,0x000001b3, + 0x0003003e,0x00000336,0x00000335,0x0004003d,0x00000013,0x00000337,0x00000327,0x00060041, + 0x00000014,0x00000338,0x00000086,0x0000014c,0x00000191,0x0003003e,0x00000338,0x00000337, + 0x00060041,0x00000014,0x0000033b,0x00000086,0x0000014c,0x000002ba,0x0004003d,0x00000013, + 0x0000033c,0x0000033b,0x0003003e,0x0000033a,0x0000033c,0x00060041,0x00000014,0x0000033e, + 0x00000086,0x0000014c,0x000002cd,0x0004003d,0x00000013,0x0000033f,0x0000033e,0x0003003e, + 0x0000033d,0x0000033f,0x00060039,0x00000013,0x00000340,0x00000018,0x0000033a,0x0000033d, + 0x0003003e,0x00000339,0x00000340,0x00060041,0x00000014,0x00000342,0x00000086,0x0000014c, + 0x000002ba,0x0004003d,0x00000013,0x00000343,0x00000342,0x0003003e,0x00000341,0x00000343, + 0x00060041,0x00000014,0x00000345,0x00000086,0x0000014c,0x000002cd,0x0004003d,0x00000013, + 0x00000346,0x00000345,0x0003003e,0x00000344,0x00000346,0x00060039,0x00000013,0x00000347, + 0x00000023,0x00000341,0x00000344,0x00060041,0x00000014,0x00000348,0x00000086,0x0000014c, + 0x000002cd,0x0003003e,0x00000348,0x00000347,0x0004003d,0x00000013,0x00000349,0x00000339, + 0x00060041,0x00000014,0x0000034a,0x00000086,0x0000014c,0x000002ba,0x0003003e,0x0000034a, + 0x00000349,0x00060041,0x00000014,0x0000034d,0x00000086,0x0000014c,0x000001b3,0x0004003d, + 0x00000013,0x0000034e,0x0000034d,0x0003003e,0x0000034c,0x0000034e,0x00060041,0x00000014, + 0x00000350,0x00000086,0x0000014c,0x000002ba,0x0004003d,0x00000013,0x00000351,0x00000350, + 0x0003003e,0x0000034f,0x00000351,0x00060039,0x00000013,0x00000352,0x00000018,0x0000034c, + 0x0000034f,0x0003003e,0x0000034b,0x00000352,0x00060041,0x00000014,0x00000354,0x00000086, + 0x0000014c,0x000001b3,0x0004003d,0x00000013,0x00000355,0x00000354,0x0003003e,0x00000353, + 0x00000355,0x00060041,0x00000014,0x00000357,0x00000086,0x0000014c,0x000002ba,0x0004003d, + 0x00000013,0x00000358,0x00000357,0x0003003e,0x00000356,0x00000358,0x00060039,0x00000013, + 0x00000359,0x00000023,0x00000353,0x00000356,0x00060041,0x00000014,0x0000035a,0x00000086, + 0x0000014c,0x000002ba,0x0003003e,0x0000035a,0x00000359,0x0004003d,0x00000013,0x0000035b, + 0x0000034b,0x00060041,0x00000014,0x0000035c,0x00000086,0x0000014c,0x000001b3,0x0003003e, + 0x0000035c,0x0000035b,0x000100fd,0x00010038,0x00050036,0x00000013,0x0000008d,0x00000000, + 0x00000089,0x00030037,0x00000049,0x0000008a,0x00030037,0x00000084,0x0000008b,0x00030037, + 0x00000084,0x0000008c,0x000200f8,0x0000008e,0x0004003b,0x00000014,0x0000035d,0x00000007, + 0x0004003b,0x0000001b,0x0000035f,0x00000007,0x0004003b,0x0000001b,0x00000360,0x00000007, + 0x0004003b,0x00000084,0x00000361,0x00000007,0x0004003b,0x00000084,0x00000365,0x00000007, + 0x0004003b,0x00000014,0x00000369,0x00000007,0x0004003b,0x00000014,0x0000036a,0x00000007, + 0x0004003b,0x00000014,0x0000036d,0x00000007,0x0004003b,0x0000001b,0x00000376,0x00000007, + 0x0004003b,0x00000014,0x00000383,0x00000007,0x0003003e,0x0000035d,0x0000035e,0x0003003e, + 0x0000035f,0x0000014c,0x0003003e,0x00000360,0x0000014c,0x0004003d,0x00000083,0x00000362, + 0x0000008b,0x0003003e,0x00000361,0x00000362,0x00050039,0x00000002,0x00000363,0x00000087, + 0x00000361,0x0004003d,0x00000083,0x00000364,0x00000361,0x0003003e,0x0000008b,0x00000364, + 0x0004003d,0x00000083,0x00000366,0x0000008c,0x0003003e,0x00000365,0x00000366,0x00050039, + 0x00000002,0x00000367,0x00000087,0x00000365,0x0004003d,0x00000083,0x00000368,0x00000365, + 0x0003003e,0x0000008c,0x00000368,0x00060041,0x00000014,0x0000036b,0x0000008b,0x0000014c, + 0x000002cd,0x0004003d,0x00000013,0x0000036c,0x0000036b,0x0003003e,0x0000036a,0x0000036c, + 0x00060041,0x00000014,0x0000036e,0x0000008c,0x0000014c,0x000002cd,0x0004003d,0x00000013, + 0x0000036f,0x0000036e,0x0003003e,0x0000036d,0x0000036f,0x00060039,0x00000013,0x00000370, + 0x00000018,0x0000036a,0x0000036d,0x0003003e,0x00000369,0x00000370,0x0004003d,0x00000013, + 0x00000371,0x00000369,0x000500ba,0x0000006e,0x00000373,0x00000371,0x00000372,0x000300f7, + 0x00000375,0x00000000,0x000400fa,0x00000373,0x00000374,0x00000375,0x000200f8,0x00000374, + 0x0003003e,0x00000376,0x0000014c,0x000200f9,0x00000377,0x000200f8,0x00000377,0x000400f6, + 0x00000379,0x0000037a,0x00000000,0x000200f9,0x0000037b,0x000200f8,0x0000037b,0x0004003d, + 0x0000001a,0x0000037c,0x00000376,0x000500b1,0x0000006e,0x0000037e,0x0000037c,0x0000037d, + 0x0004003d,0x00000013,0x0000037f,0x0000035d,0x000500b8,0x0000006e,0x00000381,0x0000037f, + 0x00000380,0x000500a7,0x0000006e,0x00000382,0x0000037e,0x00000381,0x000400fa,0x00000382, + 0x00000378,0x00000379,0x000200f8,0x00000378,0x0004003d,0x0000001a,0x00000384,0x0000035f, + 0x00060041,0x00000014,0x00000385,0x0000008b,0x0000014c,0x00000384,0x0004003d,0x00000013, + 0x00000386,0x00000385,0x0004003d,0x0000001a,0x00000387,0x00000360,0x00060041,0x00000014, + 0x00000388,0x0000008c,0x0000014c,0x00000387,0x0004003d,0x00000013,0x00000389,0x00000388, + 0x00050083,0x00000013,0x0000038a,0x00000386,0x00000389,0x0003003e,0x00000383,0x0000038a, + 0x0004003d,0x00000013,0x0000038b,0x00000383,0x0006000c,0x00000013,0x0000038c,0x00000001, + 0x00000004,0x0000038b,0x000500ba,0x0000006e,0x0000038e,0x0000038c,0x0000038d,0x000300f7, + 0x00000390,0x00000000,0x000400fa,0x0000038e,0x0000038f,0x000003b8,0x000200f8,0x0000038f, + 0x0004003d,0x00000013,0x00000391,0x00000383,0x0006000c,0x00000013,0x00000392,0x00000001, + 0x00000006,0x00000391,0x0004003d,0x0000001a,0x00000393,0x0000035f,0x00060041,0x00000014, + 0x00000394,0x0000008b,0x0000014c,0x00000393,0x0004003d,0x00000013,0x00000395,0x00000394, + 0x0004003d,0x0000001a,0x00000396,0x00000360,0x00060041,0x00000014,0x00000397,0x0000008c, + 0x0000014c,0x00000396,0x0004003d,0x00000013,0x00000398,0x00000397,0x00060039,0x00000013, + 0x00000399,0x0000006c,0x00000395,0x00000398,0x00050083,0x00000013,0x0000039a,0x000001dc, + 0x00000399,0x00050085,0x00000013,0x0000039b,0x00000392,0x0000039a,0x0003003e,0x00000383, + 0x0000039b,0x0004003d,0x00000013,0x0000039c,0x00000383,0x0006000c,0x00000013,0x0000039d, + 0x00000001,0x00000004,0x0000039c,0x0004003d,0x00000013,0x0000039e,0x0000035d,0x0006000c, + 0x00000013,0x0000039f,0x00000001,0x00000004,0x0000039e,0x000500b8,0x0000006e,0x000003a0, + 0x0000039d,0x0000039f,0x0004003d,0x00000013,0x000003a1,0x00000383,0x0004003d,0x00000013, + 0x000003a2,0x0000035d,0x000600a9,0x00000013,0x000003a3,0x000003a0,0x000003a1,0x000003a2, + 0x0003003e,0x0000035d,0x000003a3,0x0004003d,0x0000001a,0x000003a4,0x0000035f,0x00060041, + 0x00000014,0x000003a5,0x0000008b,0x0000014c,0x000003a4,0x0004003d,0x00000013,0x000003a6, + 0x000003a5,0x0004003d,0x0000001a,0x000003a7,0x00000360,0x00060041,0x00000014,0x000003a8, + 0x0000008c,0x0000014c,0x000003a7,0x0004003d,0x00000013,0x000003a9,0x000003a8,0x000500b8, + 0x0000006e,0x000003aa,0x000003a6,0x000003a9,0x000600a9,0x0000001a,0x000003ab,0x000003aa, + 0x00000191,0x0000014c,0x0004003d,0x0000001a,0x000003ac,0x0000035f,0x00050080,0x0000001a, + 0x000003ad,0x000003ac,0x000003ab,0x0003003e,0x0000035f,0x000003ad,0x0004003d,0x0000001a, + 0x000003ae,0x0000035f,0x00060041,0x00000014,0x000003af,0x0000008b,0x0000014c,0x000003ae, + 0x0004003d,0x00000013,0x000003b0,0x000003af,0x0004003d,0x0000001a,0x000003b1,0x00000360, + 0x00060041,0x00000014,0x000003b2,0x0000008c,0x0000014c,0x000003b1,0x0004003d,0x00000013, + 0x000003b3,0x000003b2,0x000500be,0x0000006e,0x000003b4,0x000003b0,0x000003b3,0x000600a9, + 0x0000001a,0x000003b5,0x000003b4,0x00000191,0x0000014c,0x0004003d,0x0000001a,0x000003b6, + 0x00000360,0x00050080,0x0000001a,0x000003b7,0x000003b6,0x000003b5,0x0003003e,0x00000360, + 0x000003b7,0x000200f9,0x00000390,0x000200f8,0x000003b8,0x0003003e,0x0000035d,0x00000380, + 0x000200f9,0x00000390,0x000200f8,0x00000390,0x000200f9,0x0000037a,0x000200f8,0x0000037a, + 0x0004003d,0x0000001a,0x000003b9,0x00000376,0x00050080,0x0000001a,0x000003ba,0x000003b9, + 0x00000191,0x0003003e,0x00000376,0x000003ba,0x000200f9,0x00000377,0x000200f8,0x00000379, + 0x000200f9,0x00000375,0x000200f8,0x00000375,0x0004003d,0x00000013,0x000003bb,0x0000035d, + 0x0004003d,0x00000013,0x000003bc,0x0000035d,0x000500b8,0x0000006e,0x000003bd,0x000003bc, + 0x0000035e,0x000600a9,0x00000013,0x000003be,0x000003bd,0x000001dc,0x000001d8,0x00050085, + 0x00000013,0x000003bf,0x000003bb,0x000003be,0x000200fe,0x000003bf,0x00010038,0x00050036, + 0x00000083,0x00000091,0x00000000,0x0000008f,0x00030037,0x0000005c,0x00000090,0x000200f8, + 0x00000092,0x0004003b,0x0000005c,0x000003c2,0x00000007,0x0004003b,0x00000049,0x000003c9, + 0x00000007,0x0004003b,0x0000001b,0x000003d0,0x00000007,0x0004003b,0x00000049,0x000003d8, + 0x00000007,0x0004003b,0x00000049,0x000003e2,0x00000007,0x0004003b,0x00000049,0x000003e4, + 0x00000007,0x0004003b,0x000003e5,0x000003e6,0x00000007,0x0004003b,0x00000049,0x000003e9, + 0x00000007,0x0004003b,0x00000084,0x000003eb,0x00000007,0x0004003b,0x00000049,0x000003ed, + 0x00000007,0x0004003b,0x00000014,0x000003f5,0x00000007,0x0004003b,0x00000014,0x000003f8, + 0x00000007,0x0004003b,0x00000014,0x000003fd,0x00000007,0x0004003b,0x00000014,0x00000400, + 0x00000007,0x0004003d,0x00000038,0x000003c3,0x00000090,0x00040039,0x00000038,0x000003c4, + 0x0000003a,0x00040039,0x00000032,0x000003c5,0x00000034,0x0004006f,0x00000038,0x000003c6, + 0x000003c5,0x00050088,0x00000038,0x000003c7,0x000003c4,0x000003c6,0x00050081,0x00000038, + 0x000003c8,0x000003c3,0x000003c7,0x0003003e,0x000003c2,0x000003c8,0x0004003d,0x00000038, + 0x000003ca,0x000003c2,0x00040039,0x00000032,0x000003cb,0x00000034,0x0004006f,0x00000038, + 0x000003cc,0x000003cb,0x00050085,0x00000038,0x000003cd,0x000003ca,0x000003cc,0x0006000c, + 0x00000038,0x000003ce,0x00000001,0x00000008,0x000003cd,0x0004006e,0x00000032,0x000003cf, + 0x000003ce,0x0003003e,0x000003c9,0x000003cf,0x0003003e,0x000003d0,0x0000014c,0x000200f9, + 0x000003d1,0x000200f8,0x000003d1,0x000400f6,0x000003d3,0x000003d4,0x00000000,0x000200f9, + 0x000003d5,0x000200f8,0x000003d5,0x0004003d,0x0000001a,0x000003d6,0x000003d0,0x000500b1, + 0x0000006e,0x000003d7,0x000003d6,0x0000037d,0x000400fa,0x000003d7,0x000003d2,0x000003d3, + 0x000200f8,0x000003d2,0x0004003d,0x0000001a,0x000003e0,0x000003d0,0x00040039,0x00000032, + 0x000003e1,0x00000034,0x0004003d,0x00000032,0x000003e3,0x000003c9,0x0003003e,0x000003e2, + 0x000003e3,0x0003003e,0x000003e6,0x000003df,0x00050041,0x00000049,0x000003e7,0x000003e6, + 0x000003e0,0x0004003d,0x00000032,0x000003e8,0x000003e7,0x0003003e,0x000003e4,0x000003e8, + 0x0003003e,0x000003e9,0x000003e1,0x00070039,0x00000032,0x000003ea,0x00000077,0x000003e2, + 0x000003e4,0x000003e9,0x0003003e,0x000003d8,0x000003ea,0x0004003d,0x0000001a,0x000003ec, + 0x000003d0,0x0004003d,0x00000032,0x000003ee,0x000003d8,0x0003003e,0x000003ed,0x000003ee, + 0x00050039,0x00000013,0x000003ef,0x0000004c,0x000003ed,0x00040039,0x00000013,0x000003f0, + 0x00000055,0x00050085,0x00000013,0x000003f1,0x000003ef,0x000003f0,0x00060041,0x00000014, + 0x000003f2,0x000003eb,0x0000014c,0x000003ec,0x0003003e,0x000003f2,0x000003f1,0x0004003d, + 0x0000001a,0x000003f3,0x000003d0,0x0004003d,0x0000001a,0x000003f4,0x000003d0,0x00060041, + 0x00000014,0x000003f6,0x000003eb,0x0000014c,0x000003f4,0x0004003d,0x00000013,0x000003f7, + 0x000003f6,0x0003003e,0x000003f5,0x000003f7,0x0003003e,0x000003f8,0x000001dc,0x00060039, + 0x00000013,0x000003f9,0x0000002b,0x000003f5,0x000003f8,0x00060041,0x00000014,0x000003fa, + 0x000003eb,0x0000014c,0x000003f3,0x0003003e,0x000003fa,0x000003f9,0x0004003d,0x0000001a, + 0x000003fb,0x000003d0,0x0004003d,0x0000001a,0x000003fc,0x000003d0,0x00060041,0x00000014, + 0x000003fe,0x000003eb,0x0000014c,0x000003fc,0x0004003d,0x00000013,0x000003ff,0x000003fe, + 0x0003003e,0x000003fd,0x000003ff,0x0003003e,0x00000400,0x0000038d,0x00060039,0x00000013, + 0x00000401,0x00000023,0x000003fd,0x00000400,0x00060041,0x00000014,0x00000402,0x000003eb, + 0x0000014c,0x000003fb,0x0003003e,0x00000402,0x00000401,0x000200f9,0x000003d4,0x000200f8, + 0x000003d4,0x0004003d,0x0000001a,0x00000403,0x000003d0,0x00050080,0x0000001a,0x00000404, + 0x00000403,0x00000191,0x0003003e,0x000003d0,0x00000404,0x000200f9,0x000003d1,0x000200f8, + 0x000003d3,0x0004003d,0x00000083,0x00000405,0x000003eb,0x000200fe,0x00000405,0x00010038, + 0x00050036,0x00000093,0x00000097,0x00000000,0x00000094,0x00030037,0x0000005c,0x00000095, + 0x00030037,0x0000005c,0x00000096,0x000200f8,0x00000098,0x0004003b,0x0000005c,0x00000408, + 0x00000007,0x0004003b,0x0000005c,0x0000040f,0x00000007,0x0004003b,0x00000413,0x00000414, + 0x00000007,0x0004003b,0x0000005c,0x00000415,0x00000007,0x0004003b,0x00000049,0x0000041e, + 0x00000007,0x0004003b,0x0000001b,0x00000425,0x00000007,0x0004003b,0x00000049,0x0000042d, + 0x00000007,0x0004003b,0x00000049,0x00000430,0x00000007,0x0004003b,0x00000049,0x00000432, + 0x00000007,0x0004003b,0x000003e5,0x00000433,0x00000007,0x0004003b,0x00000049,0x00000436, + 0x00000007,0x0004003b,0x00000049,0x00000439,0x00000007,0x0004003b,0x00000014,0x00000443, + 0x00000007,0x0004003b,0x00000014,0x00000446,0x00000007,0x0004003b,0x00000014,0x0000044b, + 0x00000007,0x0004003b,0x00000014,0x0000044e,0x00000007,0x0004003d,0x00000038,0x00000409, + 0x00000095,0x00040039,0x00000038,0x0000040a,0x0000003c,0x00040039,0x00000032,0x0000040b, + 0x00000036,0x0004006f,0x00000038,0x0000040c,0x0000040b,0x00050088,0x00000038,0x0000040d, + 0x0000040a,0x0000040c,0x00050081,0x00000038,0x0000040e,0x00000409,0x0000040d,0x0003003e, + 0x00000408,0x0000040e,0x0004003d,0x00000038,0x00000410,0x00000408,0x0004003d,0x00000038, + 0x00000411,0x00000096,0x00050081,0x00000038,0x00000412,0x00000410,0x00000411,0x0003003e, + 0x0000040f,0x00000412,0x0004003d,0x00000038,0x00000416,0x0000040f,0x0003003e,0x00000415, + 0x00000416,0x00050039,0x0000006e,0x00000417,0x00000071,0x00000415,0x00050041,0x00000418, + 0x00000419,0x00000414,0x00000191,0x0003003e,0x00000419,0x00000417,0x00050041,0x00000418, + 0x0000041a,0x00000414,0x00000191,0x0004003d,0x0000006e,0x0000041b,0x0000041a,0x000300f7, + 0x0000041d,0x00000000,0x000400fa,0x0000041b,0x0000041c,0x0000041d,0x000200f8,0x0000041c, + 0x0004003d,0x00000038,0x0000041f,0x0000040f,0x00040039,0x00000032,0x00000420,0x00000036, + 0x0004006f,0x00000038,0x00000421,0x00000420,0x00050085,0x00000038,0x00000422,0x0000041f, + 0x00000421,0x0006000c,0x00000038,0x00000423,0x00000001,0x00000008,0x00000422,0x0004006e, + 0x00000032,0x00000424,0x00000423,0x0003003e,0x0000041e,0x00000424,0x0003003e,0x00000425, + 0x0000014c,0x000200f9,0x00000426,0x000200f8,0x00000426,0x000400f6,0x00000428,0x00000429, + 0x00000000,0x000200f9,0x0000042a,0x000200f8,0x0000042a,0x0004003d,0x0000001a,0x0000042b, + 0x00000425,0x000500b1,0x0000006e,0x0000042c,0x0000042b,0x0000037d,0x000400fa,0x0000042c, + 0x00000427,0x00000428,0x000200f8,0x00000427,0x0004003d,0x0000001a,0x0000042e,0x00000425, + 0x00040039,0x00000032,0x0000042f,0x00000036,0x0004003d,0x00000032,0x00000431,0x0000041e, + 0x0003003e,0x00000430,0x00000431,0x0003003e,0x00000433,0x000003df,0x00050041,0x00000049, + 0x00000434,0x00000433,0x0000042e,0x0004003d,0x00000032,0x00000435,0x00000434,0x0003003e, + 0x00000432,0x00000435,0x0003003e,0x00000436,0x0000042f,0x00070039,0x00000032,0x00000437, + 0x00000077,0x00000430,0x00000432,0x00000436,0x0003003e,0x0000042d,0x00000437,0x0004003d, + 0x0000001a,0x00000438,0x00000425,0x0004003d,0x00000032,0x0000043a,0x0000042d,0x0003003e, + 0x00000439,0x0000043a,0x00050039,0x00000013,0x0000043b,0x0000004f,0x00000439,0x00040039, + 0x00000013,0x0000043c,0x0000003f,0x00050085,0x00000013,0x0000043d,0x0000043b,0x0000043c, + 0x00040039,0x00000013,0x0000043e,0x00000055,0x00050085,0x00000013,0x0000043f,0x0000043d, + 0x0000043e,0x00070041,0x00000014,0x00000440,0x00000414,0x0000014c,0x0000014c,0x00000438, + 0x0003003e,0x00000440,0x0000043f,0x0004003d,0x0000001a,0x00000441,0x00000425,0x0004003d, + 0x0000001a,0x00000442,0x00000425,0x00070041,0x00000014,0x00000444,0x00000414,0x0000014c, + 0x0000014c,0x00000442,0x0004003d,0x00000013,0x00000445,0x00000444,0x0003003e,0x00000443, + 0x00000445,0x0003003e,0x00000446,0x000001dc,0x00060039,0x00000013,0x00000447,0x0000002b, + 0x00000443,0x00000446,0x00070041,0x00000014,0x00000448,0x00000414,0x0000014c,0x0000014c, + 0x00000441,0x0003003e,0x00000448,0x00000447,0x0004003d,0x0000001a,0x00000449,0x00000425, + 0x0004003d,0x0000001a,0x0000044a,0x00000425,0x00070041,0x00000014,0x0000044c,0x00000414, + 0x0000014c,0x0000014c,0x0000044a,0x0004003d,0x00000013,0x0000044d,0x0000044c,0x0003003e, + 0x0000044b,0x0000044d,0x0003003e,0x0000044e,0x0000038d,0x00060039,0x00000013,0x0000044f, + 0x00000023,0x0000044b,0x0000044e,0x00070041,0x00000014,0x00000450,0x00000414,0x0000014c, + 0x0000014c,0x00000449,0x0003003e,0x00000450,0x0000044f,0x000200f9,0x00000429,0x000200f8, + 0x00000429,0x0004003d,0x0000001a,0x00000451,0x00000425,0x00050080,0x0000001a,0x00000452, + 0x00000451,0x00000191,0x0003003e,0x00000425,0x00000452,0x000200f9,0x00000426,0x000200f8, + 0x00000428,0x000200f9,0x0000041d,0x000200f8,0x0000041d,0x0004003d,0x00000093,0x00000453, + 0x00000414,0x000200fe,0x00000453,0x00010038,0x00050036,0x00000013,0x0000009d,0x00000000, + 0x00000099,0x00030037,0x00000049,0x0000009a,0x00030037,0x0000005c,0x0000009b,0x00030037, + 0x0000005c,0x0000009c,0x000200f8,0x0000009e,0x0004003b,0x00000014,0x00000456,0x00000007, + 0x0004003b,0x00000084,0x00000457,0x00000007,0x0004003b,0x0000005c,0x00000458,0x00000007, + 0x0004003b,0x00000413,0x0000045b,0x00000007,0x0004003b,0x0000005c,0x0000045c,0x00000007, + 0x0004003b,0x0000005c,0x0000045e,0x00000007,0x0004003b,0x00000049,0x00000465,0x00000007, + 0x0004003b,0x00000084,0x00000467,0x00000007,0x0004003b,0x00000084,0x00000469,0x00000007, + 0x0003003e,0x00000456,0x000001d8,0x0004003d,0x00000038,0x00000459,0x0000009b,0x0003003e, + 0x00000458,0x00000459,0x00050039,0x00000083,0x0000045a,0x00000091,0x00000458,0x0003003e, + 0x00000457,0x0000045a,0x0004003d,0x00000038,0x0000045d,0x0000009b,0x0003003e,0x0000045c, + 0x0000045d,0x0004003d,0x00000038,0x0000045f,0x0000009c,0x0003003e,0x0000045e,0x0000045f, + 0x00060039,0x00000093,0x00000460,0x00000097,0x0000045c,0x0000045e,0x0003003e,0x0000045b, + 0x00000460,0x00050041,0x00000418,0x00000461,0x0000045b,0x00000191,0x0004003d,0x0000006e, + 0x00000462,0x00000461,0x000300f7,0x00000464,0x00000000,0x000400fa,0x00000462,0x00000463, + 0x00000464,0x000200f8,0x00000463,0x0004003d,0x00000032,0x00000466,0x0000009a,0x0003003e, + 0x00000465,0x00000466,0x0004003d,0x00000083,0x00000468,0x00000457,0x0003003e,0x00000467, + 0x00000468,0x00050041,0x00000084,0x0000046a,0x0000045b,0x0000014c,0x0004003d,0x00000083, + 0x0000046b,0x0000046a,0x0003003e,0x00000469,0x0000046b,0x00070039,0x00000013,0x0000046c, + 0x0000008d,0x00000465,0x00000467,0x00000469,0x0003003e,0x00000456,0x0000046c,0x000200f9, + 0x00000464,0x000200f8,0x00000464,0x0004003d,0x00000013,0x0000046d,0x00000456,0x000200fe, + 0x0000046d,0x00010038,0x00050036,0x0000009f,0x000000a3,0x00000000,0x000000a0,0x00030037, + 0x0000005c,0x000000a1,0x00030037,0x00000007,0x000000a2,0x000200f8,0x000000a4,0x0004003b, + 0x00000049,0x00000470,0x00000007,0x0004003b,0x00000049,0x00000474,0x00000007,0x0004003b, + 0x00000049,0x00000475,0x00000007,0x0004003b,0x00000049,0x00000476,0x00000007,0x0004003b, + 0x0000005c,0x00000478,0x00000007,0x0004003b,0x00000049,0x00000479,0x00000007,0x0004003b, + 0x0000005c,0x0000047c,0x00000007,0x0004003b,0x00000014,0x00000485,0x00000007,0x0004003b, + 0x00000049,0x00000486,0x00000007,0x0004003b,0x0000005c,0x00000488,0x00000007,0x0004003b, + 0x0000005c,0x0000048a,0x00000007,0x0004003b,0x000000aa,0x0000048d,0x00000007,0x0004003b, + 0x00000014,0x00000493,0x00000007,0x0004003d,0x00000038,0x00000471,0x000000a1,0x0004006e, + 0x00000032,0x00000472,0x00000471,0x00040039,0x00000032,0x00000473,0x00000034,0x0003003e, + 0x00000474,0x00000472,0x0003003e,0x00000475,0x000001d4,0x0003003e,0x00000476,0x00000473, + 0x00070039,0x00000032,0x00000477,0x00000077,0x00000474,0x00000475,0x00000476,0x0003003e, + 0x00000470,0x00000477,0x0004003d,0x00000032,0x0000047a,0x00000470,0x0003003e,0x00000479, + 0x0000047a,0x00050039,0x00000038,0x0000047b,0x00000053,0x00000479,0x0003003e,0x00000478, + 0x0000047b,0x0004003d,0x00000032,0x0000047d,0x00000470,0x0004006f,0x00000038,0x0000047e, + 0x0000047d,0x00050050,0x00000038,0x00000480,0x0000047f,0x0000047f,0x00050081,0x00000038, + 0x00000481,0x0000047e,0x00000480,0x00040039,0x00000032,0x00000482,0x00000034,0x0004006f, + 0x00000038,0x00000483,0x00000482,0x00050088,0x00000038,0x00000484,0x00000481,0x00000483, + 0x0003003e,0x0000047c,0x00000484,0x0004003d,0x00000032,0x00000487,0x00000470,0x0003003e, + 0x00000486,0x00000487,0x0004003d,0x00000038,0x00000489,0x0000047c,0x0003003e,0x00000488, + 0x00000489,0x0004003d,0x00000038,0x0000048b,0x00000478,0x0003003e,0x0000048a,0x0000048b, + 0x00070039,0x00000013,0x0000048c,0x0000009d,0x00000486,0x00000488,0x0000048a,0x0003003e, + 0x00000485,0x0000048c,0x0003003e,0x0000048d,0x0000048e,0x0004003d,0x00000013,0x0000048f, + 0x00000485,0x00050041,0x00000014,0x00000490,0x0000048d,0x000001bf,0x0003003e,0x00000490, + 0x0000048f,0x0004003d,0x00000013,0x00000491,0x00000485,0x000500b7,0x0000006e,0x00000492, + 0x00000491,0x000001d8,0x000300f7,0x00000495,0x00000000,0x000400fa,0x00000492,0x00000494, + 0x00000498,0x000200f8,0x00000494,0x0004003d,0x00000013,0x00000496,0x00000485,0x0006000c, + 0x00000013,0x00000497,0x00000001,0x00000006,0x00000496,0x0003003e,0x00000493,0x00000497, + 0x000200f9,0x00000495,0x000200f8,0x00000498,0x0003003e,0x00000493,0x000001d8,0x000200f9, + 0x00000495,0x000200f8,0x00000495,0x0004003d,0x00000013,0x00000499,0x00000493,0x00050041, + 0x00000014,0x0000049a,0x0000048d,0x00000172,0x0003003e,0x0000049a,0x00000499,0x00050041, + 0x00000014,0x0000049b,0x0000048d,0x0000016b,0x0003003e,0x0000049b,0x000001dc,0x0004003d, + 0x0000009f,0x0000049c,0x0000048d,0x000200fe,0x0000049c,0x00010038,0x00050036,0x0000009f, + 0x000000a8,0x00000000,0x000000a5,0x00030037,0x00000049,0x000000a6,0x00030037,0x00000007, + 0x000000a7,0x000200f8,0x000000a9,0x0004003b,0x00000049,0x0000049f,0x00000007,0x0004003b, + 0x00000007,0x000004a1,0x00000007,0x0004003d,0x00000032,0x000004a0,0x000000a6,0x0003003e, + 0x0000049f,0x000004a0,0x0003003e,0x000004a1,0x00000081,0x00060039,0x00000038,0x000004a2, + 0x0000005a,0x0000049f,0x000004a1,0x00050051,0x00000013,0x000004a3,0x000004a2,0x00000000, + 0x00050051,0x00000013,0x000004a4,0x000004a2,0x00000001,0x00070050,0x0000009f,0x000004a5, + 0x000004a3,0x000004a4,0x000001d8,0x000001d8,0x000200fe,0x000004a5,0x00010038,0x00050036, + 0x0000009f,0x000000b0,0x00000000,0x000000ab,0x00030037,0x000000aa,0x000000ac,0x00030037, + 0x000000aa,0x000000ad,0x00030037,0x000000aa,0x000000ae,0x00030037,0x000000aa,0x000000af, + 0x000200f8,0x000000b1,0x0004003d,0x0000009f,0x000004a8,0x000000ac,0x0004003d,0x0000009f, + 0x000004a9,0x000000ad,0x00050081,0x0000009f,0x000004aa,0x000004a8,0x000004a9,0x0004003d, + 0x0000009f,0x000004ab,0x000000ae,0x00050081,0x0000009f,0x000004ac,0x000004aa,0x000004ab, + 0x0004003d,0x0000009f,0x000004ad,0x000000af,0x00050081,0x0000009f,0x000004ae,0x000004ac, + 0x000004ad,0x0005008e,0x0000009f,0x000004b0,0x000004ae,0x000004af,0x000200fe,0x000004b0, + 0x00010038,0x00050036,0x00000002,0x000000b7,0x00000000,0x000000b2,0x00030037,0x00000049, + 0x000000b3,0x00030037,0x000000aa,0x000000b4,0x00030037,0x00000007,0x000000b5,0x00030037, + 0x00000007,0x000000b6,0x000200f8,0x000000b8,0x0004003b,0x00000049,0x000004b7,0x00000007, + 0x0004003b,0x0000005c,0x000004b9,0x00000007,0x0004003b,0x00000007,0x000004bc,0x00000007, + 0x0004003d,0x00000006,0x000004b3,0x000000b5,0x000500ae,0x0000006e,0x000004b4,0x000004b3, + 0x000001bf,0x000300f7,0x000004b6,0x00000000,0x000400fa,0x000004b4,0x000004b5,0x000004b6, + 0x000200f8,0x000004b5,0x0004003d,0x00000032,0x000004b8,0x000000b3,0x0003003e,0x000004b7, + 0x000004b8,0x0004003d,0x0000009f,0x000004ba,0x000000b4,0x0007004f,0x00000038,0x000004bb, + 0x000004ba,0x000004ba,0x00000000,0x00000001,0x0003003e,0x000004b9,0x000004bb,0x0004003d, + 0x00000006,0x000004bd,0x000000b5,0x0003003e,0x000004bc,0x000004bd,0x00070039,0x00000002, + 0x000004be,0x00000061,0x000004b7,0x000004b9,0x000004bc,0x000200f9,0x000004b6,0x000200f8, + 0x000004b6,0x000100fd,0x00010038,0x00050036,0x0000009f,0x000000bc,0x00000000,0x000000b9, + 0x00030037,0x00000007,0x000000ba,0x00030037,0x00000007,0x000000bb,0x000200f8,0x000000bd, + 0x0004003d,0x00000006,0x000004c4,0x000000ba,0x0004003d,0x00000006,0x000004c5,0x000000bb, + 0x00060041,0x000004c6,0x000004c7,0x000004c3,0x000004c4,0x000004c5,0x0004003d,0x00000013, + 0x000004c8,0x000004c7,0x0004003d,0x00000006,0x000004ca,0x000000ba,0x0004003d,0x00000006, + 0x000004cb,0x000000bb,0x00060041,0x000004c6,0x000004cc,0x000004c9,0x000004ca,0x000004cb, + 0x0004003d,0x00000013,0x000004cd,0x000004cc,0x0004003d,0x00000006,0x000004cf,0x000000ba, + 0x0004003d,0x00000006,0x000004d0,0x000000bb,0x00060041,0x000004c6,0x000004d1,0x000004ce, + 0x000004cf,0x000004d0,0x0004003d,0x00000013,0x000004d2,0x000004d1,0x0004003d,0x00000006, + 0x000004d4,0x000000ba,0x0004003d,0x00000006,0x000004d5,0x000000bb,0x00060041,0x000004c6, + 0x000004d6,0x000004d3,0x000004d4,0x000004d5,0x0004003d,0x00000013,0x000004d7,0x000004d6, + 0x00070050,0x0000009f,0x000004d8,0x000004c8,0x000004cd,0x000004d2,0x000004d7,0x000200fe, + 0x000004d8,0x00010038,0x00050036,0x00000002,0x000000c2,0x00000000,0x000000be,0x00030037, + 0x00000007,0x000000bf,0x00030037,0x00000007,0x000000c0,0x00030037,0x000000aa,0x000000c1, + 0x000200f8,0x000000c3,0x0004003d,0x00000006,0x000004db,0x000000bf,0x0004003d,0x00000006, + 0x000004dc,0x000000c0,0x00050041,0x00000014,0x000004dd,0x000000c1,0x000001bf,0x0004003d, + 0x00000013,0x000004de,0x000004dd,0x00060041,0x000004c6,0x000004df,0x000004c3,0x000004db, + 0x000004dc,0x0003003e,0x000004df,0x000004de,0x0004003d,0x00000006,0x000004e0,0x000000bf, + 0x0004003d,0x00000006,0x000004e1,0x000000c0,0x00050041,0x00000014,0x000004e2,0x000000c1, + 0x00000172,0x0004003d,0x00000013,0x000004e3,0x000004e2,0x00060041,0x000004c6,0x000004e4, + 0x000004c9,0x000004e0,0x000004e1,0x0003003e,0x000004e4,0x000004e3,0x0004003d,0x00000006, + 0x000004e5,0x000000bf,0x0004003d,0x00000006,0x000004e6,0x000000c0,0x00050041,0x00000014, + 0x000004e7,0x000000c1,0x0000016b,0x0004003d,0x00000013,0x000004e8,0x000004e7,0x00060041, + 0x000004c6,0x000004e9,0x000004ce,0x000004e5,0x000004e6,0x0003003e,0x000004e9,0x000004e8, + 0x0004003d,0x00000006,0x000004ea,0x000000bf,0x0004003d,0x00000006,0x000004eb,0x000000c0, + 0x00050041,0x00000014,0x000004ec,0x000000c1,0x0000016c,0x0004003d,0x00000013,0x000004ed, + 0x000004ec,0x00060041,0x000004c6,0x000004ee,0x000004d3,0x000004ea,0x000004eb,0x0003003e, + 0x000004ee,0x000004ed,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000c4,0x00000000, + 0x00000003,0x000200f8,0x000000c5,0x000300e1,0x0000016b,0x000004ef,0x000400e0,0x0000016b, + 0x0000016b,0x000004f0,0x000100fd,0x00010038,0x00050036,0x0000006e,0x000000ca,0x00000000, + 0x000000c6,0x00030037,0x00000007,0x000000c7,0x00030037,0x00000007,0x000000c8,0x00030037, + 0x00000007,0x000000c9,0x000200f8,0x000000cb,0x0004003b,0x00000007,0x000004f5,0x00000007, + 0x0004003d,0x00000006,0x000004f1,0x000000c8,0x000500aa,0x0000006e,0x000004f2,0x000004f1, + 0x000001bf,0x000300f7,0x000004f4,0x00000000,0x000400fa,0x000004f2,0x000004f3,0x000004f4, + 0x000200f8,0x000004f3,0x0004003d,0x00000006,0x000004f6,0x000000c9,0x0003003e,0x000004f5, + 0x000004f6,0x00050039,0x00000002,0x000004f7,0x0000007a,0x000004f5,0x000200f9,0x000004f4, + 0x000200f8,0x000004f4,0x00040039,0x00000002,0x000004f8,0x000000c4,0x00040039,0x00000006, + 0x000004f9,0x0000007c,0x0004003d,0x00000006,0x000004fa,0x000000c7,0x00050082,0x00000006, + 0x000004fb,0x000004fa,0x00000172,0x000500ab,0x0000006e,0x000004fc,0x000004f9,0x000004fb, + 0x000200fe,0x000004fc,0x00010038,0x00050036,0x0000009f,0x000000ce,0x00000000,0x000000cc, + 0x00030037,0x000000aa,0x000000cd,0x000200f8,0x000000cf,0x0004003b,0x000000aa,0x000004ff, + 0x00000007,0x0004003b,0x000000aa,0x00000501,0x00000007,0x0004003b,0x000000aa,0x00000504, + 0x00000007,0x0004003b,0x000000aa,0x00000507,0x00000007,0x0004003b,0x000000aa,0x0000050a, + 0x00000007,0x0004003b,0x000000aa,0x0000050c,0x00000007,0x0004003b,0x000000aa,0x0000050e, + 0x00000007,0x0004003b,0x000000aa,0x00000510,0x00000007,0x0004003d,0x0000009f,0x00000500, + 0x000000cd,0x0003003e,0x000004ff,0x00000500,0x0004003d,0x0000009f,0x00000502,0x000000cd, + 0x0006016e,0x0000009f,0x00000503,0x0000016c,0x00000502,0x000001bf,0x0003003e,0x00000501, + 0x00000503,0x0004003d,0x0000009f,0x00000505,0x000000cd,0x0006016e,0x0000009f,0x00000506, + 0x0000016c,0x00000505,0x00000172,0x0003003e,0x00000504,0x00000506,0x0004003d,0x0000009f, + 0x00000508,0x000000cd,0x0006016e,0x0000009f,0x00000509,0x0000016c,0x00000508,0x0000016b, + 0x0003003e,0x00000507,0x00000509,0x0004003d,0x0000009f,0x0000050b,0x000004ff,0x0003003e, + 0x0000050a,0x0000050b,0x0004003d,0x0000009f,0x0000050d,0x00000501,0x0003003e,0x0000050c, + 0x0000050d,0x0004003d,0x0000009f,0x0000050f,0x00000504,0x0003003e,0x0000050e,0x0000050f, + 0x0004003d,0x0000009f,0x00000511,0x00000507,0x0003003e,0x00000510,0x00000511,0x00080039, + 0x0000009f,0x00000512,0x000000b0,0x0000050a,0x0000050c,0x0000050e,0x00000510,0x000200fe, + 0x00000512,0x00010038,0x00050036,0x0000009f,0x000000d7,0x00000000,0x000000d1,0x00030037, + 0x000000d0,0x000000d2,0x00030037,0x000000d0,0x000000d3,0x00030037,0x000000d0,0x000000d4, + 0x00030037,0x000000d0,0x000000d5,0x00030037,0x00000007,0x000000d6,0x000200f8,0x000000d8, + 0x0004003b,0x000000aa,0x00000517,0x00000007,0x0004003b,0x00000049,0x0000051a,0x00000007, + 0x0004003b,0x00000007,0x0000051b,0x00000007,0x0004003b,0x000000aa,0x0000051e,0x00000007, + 0x0004003b,0x00000049,0x00000521,0x00000007,0x0004003b,0x00000007,0x00000522,0x00000007, + 0x0004003b,0x000000aa,0x00000525,0x00000007,0x0004003b,0x00000049,0x00000528,0x00000007, + 0x0004003b,0x00000007,0x00000529,0x00000007,0x0004003b,0x000000aa,0x0000052c,0x00000007, + 0x0004003b,0x00000049,0x0000052f,0x00000007,0x0004003b,0x00000007,0x00000530,0x00000007, + 0x0004003b,0x000000aa,0x00000533,0x00000007,0x0004003b,0x000000aa,0x00000535,0x00000007, + 0x0004003b,0x000000aa,0x00000537,0x00000007,0x0004003b,0x000000aa,0x00000539,0x00000007, + 0x0004003d,0x0000002d,0x00000518,0x000000d2,0x0004007c,0x00000032,0x00000519,0x00000518, + 0x0003003e,0x0000051a,0x00000519,0x0004003d,0x00000006,0x0000051c,0x000000d6,0x0003003e, + 0x0000051b,0x0000051c,0x00060039,0x0000009f,0x0000051d,0x000000a8,0x0000051a,0x0000051b, + 0x0003003e,0x00000517,0x0000051d,0x0004003d,0x0000002d,0x0000051f,0x000000d3,0x0004007c, + 0x00000032,0x00000520,0x0000051f,0x0003003e,0x00000521,0x00000520,0x0004003d,0x00000006, + 0x00000523,0x000000d6,0x0003003e,0x00000522,0x00000523,0x00060039,0x0000009f,0x00000524, + 0x000000a8,0x00000521,0x00000522,0x0003003e,0x0000051e,0x00000524,0x0004003d,0x0000002d, + 0x00000526,0x000000d4,0x0004007c,0x00000032,0x00000527,0x00000526,0x0003003e,0x00000528, + 0x00000527,0x0004003d,0x00000006,0x0000052a,0x000000d6,0x0003003e,0x00000529,0x0000052a, + 0x00060039,0x0000009f,0x0000052b,0x000000a8,0x00000528,0x00000529,0x0003003e,0x00000525, + 0x0000052b,0x0004003d,0x0000002d,0x0000052d,0x000000d5,0x0004007c,0x00000032,0x0000052e, + 0x0000052d,0x0003003e,0x0000052f,0x0000052e,0x0004003d,0x00000006,0x00000531,0x000000d6, + 0x0003003e,0x00000530,0x00000531,0x00060039,0x0000009f,0x00000532,0x000000a8,0x0000052f, + 0x00000530,0x0003003e,0x0000052c,0x00000532,0x0004003d,0x0000009f,0x00000534,0x00000517, + 0x0003003e,0x00000533,0x00000534,0x0004003d,0x0000009f,0x00000536,0x0000051e,0x0003003e, + 0x00000535,0x00000536,0x0004003d,0x0000009f,0x00000538,0x00000525,0x0003003e,0x00000537, + 0x00000538,0x0004003d,0x0000009f,0x0000053a,0x0000052c,0x0003003e,0x00000539,0x0000053a, + 0x00080039,0x0000009f,0x0000053b,0x000000b0,0x00000533,0x00000535,0x00000537,0x00000539, + 0x000200fe,0x0000053b,0x00010038,0x00050036,0x0000009f,0x000000dc,0x00000000,0x000000d9, + 0x00030037,0x000000d0,0x000000da,0x00030037,0x00000007,0x000000db,0x000200f8,0x000000dd, + 0x0004003b,0x000000d0,0x0000054a,0x00000007,0x0004003b,0x000000d0,0x0000054b,0x00000007, + 0x0004003b,0x000000d0,0x0000054c,0x00000007,0x0004003b,0x000000d0,0x0000054d,0x00000007, + 0x0004003b,0x00000007,0x0000054e,0x00000007,0x0004003d,0x0000002d,0x0000053e,0x000000da, + 0x00050080,0x0000002d,0x00000540,0x0000053e,0x0000053f,0x0004003d,0x0000002d,0x00000541, + 0x000000da,0x00050080,0x0000002d,0x00000543,0x00000541,0x00000542,0x0004003d,0x0000002d, + 0x00000544,0x000000da,0x00050080,0x0000002d,0x00000546,0x00000544,0x00000545,0x0004003d, + 0x0000002d,0x00000547,0x000000da,0x00050080,0x0000002d,0x00000549,0x00000547,0x00000548, + 0x0003003e,0x0000054a,0x00000540,0x0003003e,0x0000054b,0x00000543,0x0003003e,0x0000054c, + 0x00000546,0x0003003e,0x0000054d,0x00000549,0x0004003d,0x00000006,0x0000054f,0x000000db, + 0x0003003e,0x0000054e,0x0000054f,0x00090039,0x0000009f,0x00000550,0x000000d7,0x0000054a, + 0x0000054b,0x0000054c,0x0000054d,0x0000054e,0x000200fe,0x00000550,0x00010038,0x00050036, + 0x0000009f,0x000000e3,0x00000000,0x000000d1,0x00030037,0x000000d0,0x000000de,0x00030037, + 0x000000d0,0x000000df,0x00030037,0x000000d0,0x000000e0,0x00030037,0x000000d0,0x000000e1, + 0x00030037,0x00000007,0x000000e2,0x000200f8,0x000000e4,0x0004003b,0x000000aa,0x00000553, + 0x00000007,0x0004003b,0x0000005c,0x00000557,0x00000007,0x0004003b,0x00000007,0x00000558, + 0x00000007,0x0004003b,0x000000aa,0x0000055b,0x00000007,0x0004003b,0x0000005c,0x0000055f, + 0x00000007,0x0004003b,0x00000007,0x00000560,0x00000007,0x0004003b,0x000000aa,0x00000563, + 0x00000007,0x0004003b,0x0000005c,0x00000567,0x00000007,0x0004003b,0x00000007,0x00000568, + 0x00000007,0x0004003b,0x000000aa,0x0000056b,0x00000007,0x0004003b,0x0000005c,0x0000056f, + 0x00000007,0x0004003b,0x00000007,0x00000570,0x00000007,0x0004003b,0x000000aa,0x00000573, + 0x00000007,0x0004003b,0x000000aa,0x00000575,0x00000007,0x0004003b,0x000000aa,0x00000577, + 0x00000007,0x0004003b,0x000000aa,0x00000579,0x00000007,0x0004003d,0x0000002d,0x00000554, + 0x000000de,0x0004007c,0x00000032,0x00000555,0x00000554,0x0004006f,0x00000038,0x00000556, + 0x00000555,0x0003003e,0x00000557,0x00000556,0x0004003d,0x00000006,0x00000559,0x000000e2, + 0x0003003e,0x00000558,0x00000559,0x00060039,0x0000009f,0x0000055a,0x000000a3,0x00000557, + 0x00000558,0x0003003e,0x00000553,0x0000055a,0x0004003d,0x0000002d,0x0000055c,0x000000df, + 0x0004007c,0x00000032,0x0000055d,0x0000055c,0x0004006f,0x00000038,0x0000055e,0x0000055d, + 0x0003003e,0x0000055f,0x0000055e,0x0004003d,0x00000006,0x00000561,0x000000e2,0x0003003e, + 0x00000560,0x00000561,0x00060039,0x0000009f,0x00000562,0x000000a3,0x0000055f,0x00000560, + 0x0003003e,0x0000055b,0x00000562,0x0004003d,0x0000002d,0x00000564,0x000000e0,0x0004007c, + 0x00000032,0x00000565,0x00000564,0x0004006f,0x00000038,0x00000566,0x00000565,0x0003003e, + 0x00000567,0x00000566,0x0004003d,0x00000006,0x00000569,0x000000e2,0x0003003e,0x00000568, + 0x00000569,0x00060039,0x0000009f,0x0000056a,0x000000a3,0x00000567,0x00000568,0x0003003e, + 0x00000563,0x0000056a,0x0004003d,0x0000002d,0x0000056c,0x000000e1,0x0004007c,0x00000032, + 0x0000056d,0x0000056c,0x0004006f,0x00000038,0x0000056e,0x0000056d,0x0003003e,0x0000056f, + 0x0000056e,0x0004003d,0x00000006,0x00000571,0x000000e2,0x0003003e,0x00000570,0x00000571, + 0x00060039,0x0000009f,0x00000572,0x000000a3,0x0000056f,0x00000570,0x0003003e,0x0000056b, + 0x00000572,0x0004003d,0x0000009f,0x00000574,0x00000553,0x0003003e,0x00000573,0x00000574, + 0x0004003d,0x0000009f,0x00000576,0x0000055b,0x0003003e,0x00000575,0x00000576,0x0004003d, + 0x0000009f,0x00000578,0x00000563,0x0003003e,0x00000577,0x00000578,0x0004003d,0x0000009f, + 0x0000057a,0x0000056b,0x0003003e,0x00000579,0x0000057a,0x00080039,0x0000009f,0x0000057b, + 0x000000b0,0x00000573,0x00000575,0x00000577,0x00000579,0x000200fe,0x0000057b,0x00010038, + 0x00050036,0x0000009f,0x000000e7,0x00000000,0x000000d9,0x00030037,0x000000d0,0x000000e5, + 0x00030037,0x00000007,0x000000e6,0x000200f8,0x000000e8,0x0004003b,0x000000d0,0x00000586, + 0x00000007,0x0004003b,0x000000d0,0x00000587,0x00000007,0x0004003b,0x000000d0,0x00000588, + 0x00000007,0x0004003b,0x000000d0,0x00000589,0x00000007,0x0004003b,0x00000007,0x0000058a, + 0x00000007,0x0004003d,0x0000002d,0x0000057e,0x000000e5,0x00050080,0x0000002d,0x0000057f, + 0x0000057e,0x0000053f,0x0004003d,0x0000002d,0x00000580,0x000000e5,0x00050080,0x0000002d, + 0x00000581,0x00000580,0x00000542,0x0004003d,0x0000002d,0x00000582,0x000000e5,0x00050080, + 0x0000002d,0x00000583,0x00000582,0x00000545,0x0004003d,0x0000002d,0x00000584,0x000000e5, + 0x00050080,0x0000002d,0x00000585,0x00000584,0x00000548,0x0003003e,0x00000586,0x0000057f, + 0x0003003e,0x00000587,0x00000581,0x0003003e,0x00000588,0x00000583,0x0003003e,0x00000589, + 0x00000585,0x0004003d,0x00000006,0x0000058b,0x000000e6,0x0003003e,0x0000058a,0x0000058b, + 0x00090039,0x0000009f,0x0000058c,0x000000e3,0x00000586,0x00000587,0x00000588,0x00000589, + 0x0000058a,0x000200fe,0x0000058c,0x00010038,0x00050036,0x00000002,0x000000f0,0x00000000, + 0x000000e9,0x00030037,0x00000007,0x000000ea,0x00030037,0x00000007,0x000000eb,0x00030037, + 0x000000d0,0x000000ec,0x00030037,0x00000007,0x000000ed,0x00030037,0x00000007,0x000000ee, + 0x00030037,0x00000007,0x000000ef,0x000200f8,0x000000f1,0x0004003b,0x00000049,0x0000058f, + 0x00000007,0x0004003b,0x00000049,0x0000059d,0x00000007,0x0004003b,0x000005aa,0x000005ab, + 0x00000007,0x0004003b,0x000000d0,0x000005ae,0x00000007,0x0004003b,0x00000007,0x000005af, + 0x00000007,0x0004003b,0x00000049,0x000005b3,0x00000007,0x0004003b,0x000000aa,0x000005b5, + 0x00000007,0x0004003b,0x00000007,0x000005b8,0x00000007,0x0004003b,0x00000007,0x000005b9, + 0x00000007,0x0004003b,0x000000d0,0x000005d6,0x00000007,0x0004003b,0x00000007,0x000005d7, + 0x00000007,0x0004003b,0x00000049,0x000005db,0x00000007,0x0004003b,0x000000aa,0x000005dd, + 0x00000007,0x0004003b,0x00000007,0x000005e0,0x00000007,0x0004003b,0x00000007,0x000005e1, + 0x00000007,0x0004003b,0x000000d0,0x000005fe,0x00000007,0x0004003b,0x00000007,0x000005ff, + 0x00000007,0x0004003b,0x00000049,0x00000603,0x00000007,0x0004003b,0x000000aa,0x00000605, + 0x00000007,0x0004003b,0x00000007,0x00000608,0x00000007,0x0004003b,0x00000007,0x00000609, + 0x00000007,0x0004003b,0x000000d0,0x00000628,0x00000007,0x0004003b,0x00000007,0x00000629, + 0x00000007,0x0004003b,0x00000049,0x0000062d,0x00000007,0x0004003b,0x000000aa,0x0000062f, + 0x00000007,0x0004003b,0x00000007,0x00000632,0x00000007,0x0004003b,0x00000007,0x00000633, + 0x00000007,0x0004003b,0x000000aa,0x0000063b,0x00000007,0x0004003b,0x000000aa,0x00000640, + 0x00000007,0x0004003b,0x000000aa,0x00000645,0x00000007,0x0004003b,0x000000aa,0x0000064a, + 0x00000007,0x0004003b,0x00000049,0x00000660,0x00000007,0x0004003b,0x000000aa,0x00000661, + 0x00000007,0x0004003b,0x00000007,0x00000664,0x00000007,0x0004003b,0x00000007,0x00000665, + 0x00000007,0x0004003b,0x00000007,0x0000066c,0x00000007,0x0004003b,0x00000007,0x0000066d, + 0x00000007,0x0004003b,0x000000aa,0x0000066e,0x00000007,0x0004003b,0x00000049,0x00000680, + 0x00000007,0x0004003b,0x000000aa,0x00000681,0x00000007,0x0004003b,0x00000007,0x00000684, + 0x00000007,0x0004003b,0x00000007,0x00000685,0x00000007,0x0004003b,0x00000007,0x0000068d, + 0x00000007,0x0004003b,0x00000007,0x0000068e,0x00000007,0x0004003b,0x000000aa,0x0000068f, + 0x00000007,0x0004003b,0x00000049,0x000006a0,0x00000007,0x0004003b,0x000000aa,0x000006a1, + 0x00000007,0x0004003b,0x00000007,0x000006a4,0x00000007,0x0004003b,0x00000007,0x000006a5, + 0x00000007,0x0004003b,0x00000007,0x000006ad,0x00000007,0x0004003b,0x00000007,0x000006ae, + 0x00000007,0x0004003b,0x000000aa,0x000006af,0x00000007,0x0004003b,0x00000049,0x000006c1, + 0x00000007,0x0004003b,0x000000aa,0x000006c2,0x00000007,0x0004003b,0x00000007,0x000006c5, + 0x00000007,0x0004003b,0x00000007,0x000006c6,0x00000007,0x0004003b,0x00000007,0x000006cf, + 0x00000007,0x0004003b,0x00000007,0x000006d0,0x00000007,0x0004003b,0x000000aa,0x000006d1, + 0x00000007,0x0004003d,0x0000002d,0x00000590,0x000000ec,0x00050050,0x0000002d,0x00000592, + 0x00000591,0x00000591,0x00050084,0x0000002d,0x00000593,0x00000590,0x00000592,0x0004007c, + 0x00000032,0x00000594,0x00000593,0x0004003d,0x00000006,0x00000595,0x000000ea,0x00050084, + 0x00000006,0x00000596,0x00000595,0x0000016b,0x0004007c,0x0000001a,0x00000597,0x00000596, + 0x0004003d,0x00000006,0x00000598,0x000000eb,0x00050084,0x00000006,0x00000599,0x00000598, + 0x0000016b,0x0004007c,0x0000001a,0x0000059a,0x00000599,0x00050050,0x00000032,0x0000059b, + 0x00000597,0x0000059a,0x00050080,0x00000032,0x0000059c,0x00000594,0x0000059b,0x0003003e, + 0x0000058f,0x0000059c,0x0004003d,0x0000002d,0x0000059e,0x000000ec,0x00050050,0x0000002d, + 0x000005a0,0x0000059f,0x0000059f,0x00050084,0x0000002d,0x000005a1,0x0000059e,0x000005a0, + 0x0004007c,0x00000032,0x000005a2,0x000005a1,0x0004003d,0x00000006,0x000005a3,0x000000ea, + 0x0004007c,0x0000001a,0x000005a4,0x000005a3,0x0004003d,0x00000006,0x000005a5,0x000000eb, + 0x0004007c,0x0000001a,0x000005a6,0x000005a5,0x00050050,0x00000032,0x000005a7,0x000005a4, + 0x000005a6,0x00050080,0x00000032,0x000005a8,0x000005a2,0x000005a7,0x0003003e,0x0000059d, + 0x000005a8,0x0004003d,0x00000032,0x000005ac,0x0000058f,0x0004007c,0x0000002d,0x000005ad, + 0x000005ac,0x0003003e,0x000005ae,0x000005ad,0x0004003d,0x00000006,0x000005b0,0x000000ef, + 0x0003003e,0x000005af,0x000005b0,0x00060039,0x0000009f,0x000005b1,0x000000e7,0x000005ae, + 0x000005af,0x00050041,0x000000aa,0x000005b2,0x000005ab,0x0000014c,0x0003003e,0x000005b2, + 0x000005b1,0x0004003d,0x00000032,0x000005b4,0x0000059d,0x0003003e,0x000005b3,0x000005b4, + 0x00050041,0x000000aa,0x000005b6,0x000005ab,0x0000014c,0x0004003d,0x0000009f,0x000005b7, + 0x000005b6,0x0003003e,0x000005b5,0x000005b7,0x0003003e,0x000005b8,0x000001bf,0x0004003d, + 0x00000006,0x000005ba,0x000000ef,0x0003003e,0x000005b9,0x000005ba,0x00080039,0x00000002, + 0x000005bb,0x000000b7,0x000005b3,0x000005b5,0x000005b8,0x000005b9,0x0004003d,0x0000002d, + 0x000005bc,0x000000ec,0x00050050,0x0000002d,0x000005bd,0x00000591,0x00000591,0x00050084, + 0x0000002d,0x000005be,0x000005bc,0x000005bd,0x0004007c,0x00000032,0x000005bf,0x000005be, + 0x0004003d,0x00000006,0x000005c0,0x000000ea,0x00050084,0x00000006,0x000005c1,0x000005c0, + 0x0000016b,0x00050080,0x00000006,0x000005c2,0x000005c1,0x0000059f,0x0004007c,0x0000001a, + 0x000005c3,0x000005c2,0x0004003d,0x00000006,0x000005c4,0x000000eb,0x00050084,0x00000006, + 0x000005c5,0x000005c4,0x0000016b,0x0004007c,0x0000001a,0x000005c6,0x000005c5,0x00050050, + 0x00000032,0x000005c7,0x000005c3,0x000005c6,0x00050080,0x00000032,0x000005c8,0x000005bf, + 0x000005c7,0x0003003e,0x0000058f,0x000005c8,0x0004003d,0x0000002d,0x000005c9,0x000000ec, + 0x00050050,0x0000002d,0x000005ca,0x0000059f,0x0000059f,0x00050084,0x0000002d,0x000005cb, + 0x000005c9,0x000005ca,0x0004007c,0x00000032,0x000005cc,0x000005cb,0x0004003d,0x00000006, + 0x000005cd,0x000000ea,0x00050080,0x00000006,0x000005ce,0x000005cd,0x000004bf,0x0004007c, + 0x0000001a,0x000005cf,0x000005ce,0x0004003d,0x00000006,0x000005d0,0x000000eb,0x0004007c, + 0x0000001a,0x000005d1,0x000005d0,0x00050050,0x00000032,0x000005d2,0x000005cf,0x000005d1, + 0x00050080,0x00000032,0x000005d3,0x000005cc,0x000005d2,0x0003003e,0x0000059d,0x000005d3, + 0x0004003d,0x00000032,0x000005d4,0x0000058f,0x0004007c,0x0000002d,0x000005d5,0x000005d4, + 0x0003003e,0x000005d6,0x000005d5,0x0004003d,0x00000006,0x000005d8,0x000000ef,0x0003003e, + 0x000005d7,0x000005d8,0x00060039,0x0000009f,0x000005d9,0x000000e7,0x000005d6,0x000005d7, + 0x00050041,0x000000aa,0x000005da,0x000005ab,0x00000191,0x0003003e,0x000005da,0x000005d9, + 0x0004003d,0x00000032,0x000005dc,0x0000059d,0x0003003e,0x000005db,0x000005dc,0x00050041, + 0x000000aa,0x000005de,0x000005ab,0x00000191,0x0004003d,0x0000009f,0x000005df,0x000005de, + 0x0003003e,0x000005dd,0x000005df,0x0003003e,0x000005e0,0x000001bf,0x0004003d,0x00000006, + 0x000005e2,0x000000ef,0x0003003e,0x000005e1,0x000005e2,0x00080039,0x00000002,0x000005e3, + 0x000000b7,0x000005db,0x000005dd,0x000005e0,0x000005e1,0x0004003d,0x0000002d,0x000005e4, + 0x000000ec,0x00050050,0x0000002d,0x000005e5,0x00000591,0x00000591,0x00050084,0x0000002d, + 0x000005e6,0x000005e4,0x000005e5,0x0004007c,0x00000032,0x000005e7,0x000005e6,0x0004003d, + 0x00000006,0x000005e8,0x000000ea,0x00050084,0x00000006,0x000005e9,0x000005e8,0x0000016b, + 0x0004007c,0x0000001a,0x000005ea,0x000005e9,0x0004003d,0x00000006,0x000005eb,0x000000eb, + 0x00050084,0x00000006,0x000005ec,0x000005eb,0x0000016b,0x00050080,0x00000006,0x000005ed, + 0x000005ec,0x0000059f,0x0004007c,0x0000001a,0x000005ee,0x000005ed,0x00050050,0x00000032, + 0x000005ef,0x000005ea,0x000005ee,0x00050080,0x00000032,0x000005f0,0x000005e7,0x000005ef, + 0x0003003e,0x0000058f,0x000005f0,0x0004003d,0x0000002d,0x000005f1,0x000000ec,0x00050050, + 0x0000002d,0x000005f2,0x0000059f,0x0000059f,0x00050084,0x0000002d,0x000005f3,0x000005f1, + 0x000005f2,0x0004007c,0x00000032,0x000005f4,0x000005f3,0x0004003d,0x00000006,0x000005f5, + 0x000000ea,0x0004007c,0x0000001a,0x000005f6,0x000005f5,0x0004003d,0x00000006,0x000005f7, + 0x000000eb,0x00050080,0x00000006,0x000005f8,0x000005f7,0x000004bf,0x0004007c,0x0000001a, + 0x000005f9,0x000005f8,0x00050050,0x00000032,0x000005fa,0x000005f6,0x000005f9,0x00050080, + 0x00000032,0x000005fb,0x000005f4,0x000005fa,0x0003003e,0x0000059d,0x000005fb,0x0004003d, + 0x00000032,0x000005fc,0x0000058f,0x0004007c,0x0000002d,0x000005fd,0x000005fc,0x0003003e, + 0x000005fe,0x000005fd,0x0004003d,0x00000006,0x00000600,0x000000ef,0x0003003e,0x000005ff, + 0x00000600,0x00060039,0x0000009f,0x00000601,0x000000e7,0x000005fe,0x000005ff,0x00050041, + 0x000000aa,0x00000602,0x000005ab,0x000001b3,0x0003003e,0x00000602,0x00000601,0x0004003d, + 0x00000032,0x00000604,0x0000059d,0x0003003e,0x00000603,0x00000604,0x00050041,0x000000aa, + 0x00000606,0x000005ab,0x000001b3,0x0004003d,0x0000009f,0x00000607,0x00000606,0x0003003e, + 0x00000605,0x00000607,0x0003003e,0x00000608,0x000001bf,0x0004003d,0x00000006,0x0000060a, + 0x000000ef,0x0003003e,0x00000609,0x0000060a,0x00080039,0x00000002,0x0000060b,0x000000b7, + 0x00000603,0x00000605,0x00000608,0x00000609,0x0004003d,0x0000002d,0x0000060c,0x000000ec, + 0x00050050,0x0000002d,0x0000060d,0x00000591,0x00000591,0x00050084,0x0000002d,0x0000060e, + 0x0000060c,0x0000060d,0x0004007c,0x00000032,0x0000060f,0x0000060e,0x0004003d,0x00000006, + 0x00000610,0x000000ea,0x00050084,0x00000006,0x00000611,0x00000610,0x0000016b,0x00050080, + 0x00000006,0x00000612,0x00000611,0x0000059f,0x0004007c,0x0000001a,0x00000613,0x00000612, + 0x0004003d,0x00000006,0x00000614,0x000000eb,0x00050084,0x00000006,0x00000615,0x00000614, + 0x0000016b,0x00050080,0x00000006,0x00000616,0x00000615,0x0000059f,0x0004007c,0x0000001a, + 0x00000617,0x00000616,0x00050050,0x00000032,0x00000618,0x00000613,0x00000617,0x00050080, + 0x00000032,0x00000619,0x0000060f,0x00000618,0x0003003e,0x0000058f,0x00000619,0x0004003d, + 0x0000002d,0x0000061a,0x000000ec,0x00050050,0x0000002d,0x0000061b,0x0000059f,0x0000059f, + 0x00050084,0x0000002d,0x0000061c,0x0000061a,0x0000061b,0x0004007c,0x00000032,0x0000061d, + 0x0000061c,0x0004003d,0x00000006,0x0000061e,0x000000ea,0x00050080,0x00000006,0x0000061f, + 0x0000061e,0x000004bf,0x0004007c,0x0000001a,0x00000620,0x0000061f,0x0004003d,0x00000006, + 0x00000621,0x000000eb,0x00050080,0x00000006,0x00000622,0x00000621,0x000004bf,0x0004007c, + 0x0000001a,0x00000623,0x00000622,0x00050050,0x00000032,0x00000624,0x00000620,0x00000623, + 0x00050080,0x00000032,0x00000625,0x0000061d,0x00000624,0x0003003e,0x0000059d,0x00000625, + 0x0004003d,0x00000032,0x00000626,0x0000058f,0x0004007c,0x0000002d,0x00000627,0x00000626, + 0x0003003e,0x00000628,0x00000627,0x0004003d,0x00000006,0x0000062a,0x000000ef,0x0003003e, + 0x00000629,0x0000062a,0x00060039,0x0000009f,0x0000062b,0x000000e7,0x00000628,0x00000629, + 0x00050041,0x000000aa,0x0000062c,0x000005ab,0x000002ba,0x0003003e,0x0000062c,0x0000062b, + 0x0004003d,0x00000032,0x0000062e,0x0000059d,0x0003003e,0x0000062d,0x0000062e,0x00050041, + 0x000000aa,0x00000630,0x000005ab,0x000002ba,0x0004003d,0x0000009f,0x00000631,0x00000630, + 0x0003003e,0x0000062f,0x00000631,0x0003003e,0x00000632,0x000001bf,0x0004003d,0x00000006, + 0x00000634,0x000000ef,0x0003003e,0x00000633,0x00000634,0x00080039,0x00000002,0x00000635, + 0x000000b7,0x0000062d,0x0000062f,0x00000632,0x00000633,0x0004003d,0x00000006,0x00000636, + 0x000000ee,0x000500b2,0x0000006e,0x00000637,0x00000636,0x00000172,0x000300f7,0x00000639, + 0x00000000,0x000400fa,0x00000637,0x00000638,0x00000639,0x000200f8,0x00000638,0x000100fd, + 0x000200f8,0x00000639,0x00050041,0x000000aa,0x0000063c,0x000005ab,0x0000014c,0x0004003d, + 0x0000009f,0x0000063d,0x0000063c,0x0003003e,0x0000063b,0x0000063d,0x00050039,0x0000009f, + 0x0000063e,0x000000ce,0x0000063b,0x00050041,0x000000aa,0x0000063f,0x000005ab,0x0000014c, + 0x0003003e,0x0000063f,0x0000063e,0x00050041,0x000000aa,0x00000641,0x000005ab,0x00000191, + 0x0004003d,0x0000009f,0x00000642,0x00000641,0x0003003e,0x00000640,0x00000642,0x00050039, + 0x0000009f,0x00000643,0x000000ce,0x00000640,0x00050041,0x000000aa,0x00000644,0x000005ab, + 0x00000191,0x0003003e,0x00000644,0x00000643,0x00050041,0x000000aa,0x00000646,0x000005ab, + 0x000001b3,0x0004003d,0x0000009f,0x00000647,0x00000646,0x0003003e,0x00000645,0x00000647, + 0x00050039,0x0000009f,0x00000648,0x000000ce,0x00000645,0x00050041,0x000000aa,0x00000649, + 0x000005ab,0x000001b3,0x0003003e,0x00000649,0x00000648,0x00050041,0x000000aa,0x0000064b, + 0x000005ab,0x000002ba,0x0004003d,0x0000009f,0x0000064c,0x0000064b,0x0003003e,0x0000064a, + 0x0000064c,0x00050039,0x0000009f,0x0000064d,0x000000ce,0x0000064a,0x00050041,0x000000aa, + 0x0000064e,0x000005ab,0x000002ba,0x0003003e,0x0000064e,0x0000064d,0x0004003d,0x00000006, + 0x0000064f,0x000000ed,0x00050089,0x00000006,0x00000650,0x0000064f,0x0000020b,0x000500aa, + 0x0000006e,0x00000651,0x00000650,0x000001bf,0x000300f7,0x00000653,0x00000000,0x000400fa, + 0x00000651,0x00000652,0x00000653,0x000200f8,0x00000652,0x0004003d,0x0000002d,0x00000654, + 0x000000ec,0x00050050,0x0000002d,0x00000655,0x000004bf,0x000004bf,0x00050084,0x0000002d, + 0x00000656,0x00000654,0x00000655,0x0004007c,0x00000032,0x00000657,0x00000656,0x0004003d, + 0x00000006,0x00000658,0x000000ea,0x00050086,0x00000006,0x00000659,0x00000658,0x0000016b, + 0x0004007c,0x0000001a,0x0000065a,0x00000659,0x0004003d,0x00000006,0x0000065b,0x000000eb, + 0x00050086,0x00000006,0x0000065c,0x0000065b,0x0000016b,0x0004007c,0x0000001a,0x0000065d, + 0x0000065c,0x00050050,0x00000032,0x0000065e,0x0000065a,0x0000065d,0x00050080,0x00000032, + 0x0000065f,0x00000657,0x0000065e,0x0003003e,0x00000660,0x0000065f,0x00050041,0x000000aa, + 0x00000662,0x000005ab,0x0000014c,0x0004003d,0x0000009f,0x00000663,0x00000662,0x0003003e, + 0x00000661,0x00000663,0x0003003e,0x00000664,0x00000172,0x0004003d,0x00000006,0x00000666, + 0x000000ef,0x0003003e,0x00000665,0x00000666,0x00080039,0x00000002,0x00000667,0x000000b7, + 0x00000660,0x00000661,0x00000664,0x00000665,0x0004003d,0x00000006,0x00000668,0x000000ea, + 0x00050086,0x00000006,0x00000669,0x00000668,0x0000016b,0x0004003d,0x00000006,0x0000066a, + 0x000000eb,0x00050086,0x00000006,0x0000066b,0x0000066a,0x0000016b,0x0003003e,0x0000066c, + 0x00000669,0x0003003e,0x0000066d,0x0000066b,0x00050041,0x000000aa,0x0000066f,0x000005ab, + 0x0000014c,0x0004003d,0x0000009f,0x00000670,0x0000066f,0x0003003e,0x0000066e,0x00000670, + 0x00070039,0x00000002,0x00000671,0x000000c2,0x0000066c,0x0000066d,0x0000066e,0x0004003d, + 0x0000002d,0x00000672,0x000000ec,0x00050050,0x0000002d,0x00000673,0x000004bf,0x000004bf, + 0x00050084,0x0000002d,0x00000674,0x00000672,0x00000673,0x0004007c,0x00000032,0x00000675, + 0x00000674,0x0004003d,0x00000006,0x00000676,0x000000ea,0x00050086,0x00000006,0x00000677, + 0x00000676,0x0000016b,0x00050080,0x00000006,0x00000679,0x00000677,0x00000678,0x0004007c, + 0x0000001a,0x0000067a,0x00000679,0x0004003d,0x00000006,0x0000067b,0x000000eb,0x00050086, + 0x00000006,0x0000067c,0x0000067b,0x0000016b,0x0004007c,0x0000001a,0x0000067d,0x0000067c, + 0x00050050,0x00000032,0x0000067e,0x0000067a,0x0000067d,0x00050080,0x00000032,0x0000067f, + 0x00000675,0x0000067e,0x0003003e,0x00000680,0x0000067f,0x00050041,0x000000aa,0x00000682, + 0x000005ab,0x00000191,0x0004003d,0x0000009f,0x00000683,0x00000682,0x0003003e,0x00000681, + 0x00000683,0x0003003e,0x00000684,0x00000172,0x0004003d,0x00000006,0x00000686,0x000000ef, + 0x0003003e,0x00000685,0x00000686,0x00080039,0x00000002,0x00000687,0x000000b7,0x00000680, + 0x00000681,0x00000684,0x00000685,0x0004003d,0x00000006,0x00000688,0x000000ea,0x00050086, + 0x00000006,0x00000689,0x00000688,0x0000016b,0x00050080,0x00000006,0x0000068a,0x00000689, + 0x00000678,0x0004003d,0x00000006,0x0000068b,0x000000eb,0x00050086,0x00000006,0x0000068c, + 0x0000068b,0x0000016b,0x0003003e,0x0000068d,0x0000068a,0x0003003e,0x0000068e,0x0000068c, + 0x00050041,0x000000aa,0x00000690,0x000005ab,0x00000191,0x0004003d,0x0000009f,0x00000691, + 0x00000690,0x0003003e,0x0000068f,0x00000691,0x00070039,0x00000002,0x00000692,0x000000c2, + 0x0000068d,0x0000068e,0x0000068f,0x0004003d,0x0000002d,0x00000693,0x000000ec,0x00050050, + 0x0000002d,0x00000694,0x000004bf,0x000004bf,0x00050084,0x0000002d,0x00000695,0x00000693, + 0x00000694,0x0004007c,0x00000032,0x00000696,0x00000695,0x0004003d,0x00000006,0x00000697, + 0x000000ea,0x00050086,0x00000006,0x00000698,0x00000697,0x0000016b,0x0004007c,0x0000001a, + 0x00000699,0x00000698,0x0004003d,0x00000006,0x0000069a,0x000000eb,0x00050086,0x00000006, + 0x0000069b,0x0000069a,0x0000016b,0x00050080,0x00000006,0x0000069c,0x0000069b,0x00000678, + 0x0004007c,0x0000001a,0x0000069d,0x0000069c,0x00050050,0x00000032,0x0000069e,0x00000699, + 0x0000069d,0x00050080,0x00000032,0x0000069f,0x00000696,0x0000069e,0x0003003e,0x000006a0, + 0x0000069f,0x00050041,0x000000aa,0x000006a2,0x000005ab,0x000001b3,0x0004003d,0x0000009f, + 0x000006a3,0x000006a2,0x0003003e,0x000006a1,0x000006a3,0x0003003e,0x000006a4,0x00000172, + 0x0004003d,0x00000006,0x000006a6,0x000000ef,0x0003003e,0x000006a5,0x000006a6,0x00080039, + 0x00000002,0x000006a7,0x000000b7,0x000006a0,0x000006a1,0x000006a4,0x000006a5,0x0004003d, + 0x00000006,0x000006a8,0x000000ea,0x00050086,0x00000006,0x000006a9,0x000006a8,0x0000016b, + 0x0004003d,0x00000006,0x000006aa,0x000000eb,0x00050086,0x00000006,0x000006ab,0x000006aa, + 0x0000016b,0x00050080,0x00000006,0x000006ac,0x000006ab,0x00000678,0x0003003e,0x000006ad, + 0x000006a9,0x0003003e,0x000006ae,0x000006ac,0x00050041,0x000000aa,0x000006b0,0x000005ab, + 0x000001b3,0x0004003d,0x0000009f,0x000006b1,0x000006b0,0x0003003e,0x000006af,0x000006b1, + 0x00070039,0x00000002,0x000006b2,0x000000c2,0x000006ad,0x000006ae,0x000006af,0x0004003d, + 0x0000002d,0x000006b3,0x000000ec,0x00050050,0x0000002d,0x000006b4,0x000004bf,0x000004bf, + 0x00050084,0x0000002d,0x000006b5,0x000006b3,0x000006b4,0x0004007c,0x00000032,0x000006b6, + 0x000006b5,0x0004003d,0x00000006,0x000006b7,0x000000ea,0x00050086,0x00000006,0x000006b8, + 0x000006b7,0x0000016b,0x00050080,0x00000006,0x000006b9,0x000006b8,0x00000678,0x0004007c, + 0x0000001a,0x000006ba,0x000006b9,0x0004003d,0x00000006,0x000006bb,0x000000eb,0x00050086, + 0x00000006,0x000006bc,0x000006bb,0x0000016b,0x00050080,0x00000006,0x000006bd,0x000006bc, + 0x00000678,0x0004007c,0x0000001a,0x000006be,0x000006bd,0x00050050,0x00000032,0x000006bf, + 0x000006ba,0x000006be,0x00050080,0x00000032,0x000006c0,0x000006b6,0x000006bf,0x0003003e, + 0x000006c1,0x000006c0,0x00050041,0x000000aa,0x000006c3,0x000005ab,0x000002ba,0x0004003d, + 0x0000009f,0x000006c4,0x000006c3,0x0003003e,0x000006c2,0x000006c4,0x0003003e,0x000006c5, + 0x00000172,0x0004003d,0x00000006,0x000006c7,0x000000ef,0x0003003e,0x000006c6,0x000006c7, + 0x00080039,0x00000002,0x000006c8,0x000000b7,0x000006c1,0x000006c2,0x000006c5,0x000006c6, + 0x0004003d,0x00000006,0x000006c9,0x000000ea,0x00050086,0x00000006,0x000006ca,0x000006c9, + 0x0000016b,0x00050080,0x00000006,0x000006cb,0x000006ca,0x00000678,0x0004003d,0x00000006, + 0x000006cc,0x000000eb,0x00050086,0x00000006,0x000006cd,0x000006cc,0x0000016b,0x00050080, + 0x00000006,0x000006ce,0x000006cd,0x00000678,0x0003003e,0x000006cf,0x000006cb,0x0003003e, + 0x000006d0,0x000006ce,0x00050041,0x000000aa,0x000006d2,0x000005ab,0x000002ba,0x0004003d, + 0x0000009f,0x000006d3,0x000006d2,0x0003003e,0x000006d1,0x000006d3,0x00070039,0x00000002, + 0x000006d4,0x000000c2,0x000006cf,0x000006d0,0x000006d1,0x000200f9,0x00000653,0x000200f8, + 0x00000653,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000f8,0x00000000,0x000000e9, + 0x00030037,0x00000007,0x000000f2,0x00030037,0x00000007,0x000000f3,0x00030037,0x000000d0, + 0x000000f4,0x00030037,0x00000007,0x000000f5,0x00030037,0x00000007,0x000000f6,0x00030037, + 0x00000007,0x000000f7,0x000200f8,0x000000f9,0x0004003b,0x00000007,0x000006d5,0x00000007, + 0x0004003b,0x00000007,0x000006d7,0x00000007,0x0004003b,0x000000d0,0x000006d9,0x00000007, + 0x0004003b,0x00000007,0x000006db,0x00000007,0x0004003b,0x00000007,0x000006dd,0x00000007, + 0x0004003b,0x00000007,0x000006df,0x00000007,0x0004003d,0x00000006,0x000006d6,0x000000f2, + 0x0003003e,0x000006d5,0x000006d6,0x0004003d,0x00000006,0x000006d8,0x000000f3,0x0003003e, + 0x000006d7,0x000006d8,0x0004003d,0x0000002d,0x000006da,0x000000f4,0x0003003e,0x000006d9, + 0x000006da,0x0004003d,0x00000006,0x000006dc,0x000000f5,0x0003003e,0x000006db,0x000006dc, + 0x0004003d,0x00000006,0x000006de,0x000000f6,0x0003003e,0x000006dd,0x000006de,0x0004003d, + 0x00000006,0x000006e0,0x000000f7,0x0003003e,0x000006df,0x000006e0,0x000a0039,0x00000002, + 0x000006e1,0x000000f0,0x000006d5,0x000006d7,0x000006d9,0x000006db,0x000006dd,0x000006df, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x00000100,0x00000000,0x000000e9,0x00030037, + 0x00000007,0x000000fa,0x00030037,0x00000007,0x000000fb,0x00030037,0x000000d0,0x000000fc, + 0x00030037,0x00000007,0x000000fd,0x00030037,0x00000007,0x000000fe,0x00030037,0x00000007, + 0x000000ff,0x000200f8,0x00000101,0x0004003b,0x000000aa,0x000006e2,0x00000007,0x0004003b, + 0x00000007,0x000006e3,0x00000007,0x0004003b,0x00000007,0x000006e5,0x00000007,0x0004003b, + 0x000000aa,0x000006e8,0x00000007,0x0004003b,0x00000049,0x000006fc,0x00000007,0x0004003b, + 0x000000aa,0x000006fd,0x00000007,0x0004003b,0x00000007,0x000006ff,0x00000007,0x0004003b, + 0x00000007,0x00000701,0x00000007,0x0004003b,0x00000007,0x00000709,0x00000007,0x0004003b, + 0x00000007,0x0000070a,0x00000007,0x0004003b,0x000000aa,0x0000070c,0x00000007,0x0004003d, + 0x00000006,0x000006e4,0x000000fa,0x0003003e,0x000006e3,0x000006e4,0x0004003d,0x00000006, + 0x000006e6,0x000000fb,0x0003003e,0x000006e5,0x000006e6,0x00060039,0x0000009f,0x000006e7, + 0x000000bc,0x000006e3,0x000006e5,0x0003003e,0x000006e2,0x000006e7,0x0004003d,0x0000009f, + 0x000006e9,0x000006e2,0x0003003e,0x000006e8,0x000006e9,0x00050039,0x0000009f,0x000006ea, + 0x000000ce,0x000006e8,0x0003003e,0x000006e2,0x000006ea,0x0004003d,0x00000006,0x000006eb, + 0x000000fd,0x00050089,0x00000006,0x000006ec,0x000006eb,0x0000020b,0x000500aa,0x0000006e, + 0x000006ed,0x000006ec,0x000001bf,0x000300f7,0x000006ef,0x00000000,0x000400fa,0x000006ed, + 0x000006ee,0x000006ef,0x000200f8,0x000006ee,0x0004003d,0x0000002d,0x000006f0,0x000000fc, + 0x00050050,0x0000002d,0x000006f1,0x00000678,0x00000678,0x00050084,0x0000002d,0x000006f2, + 0x000006f0,0x000006f1,0x0004007c,0x00000032,0x000006f3,0x000006f2,0x0004003d,0x00000006, + 0x000006f4,0x000000fa,0x00050086,0x00000006,0x000006f5,0x000006f4,0x0000016b,0x0004007c, + 0x0000001a,0x000006f6,0x000006f5,0x0004003d,0x00000006,0x000006f7,0x000000fb,0x00050086, + 0x00000006,0x000006f8,0x000006f7,0x0000016b,0x0004007c,0x0000001a,0x000006f9,0x000006f8, + 0x00050050,0x00000032,0x000006fa,0x000006f6,0x000006f9,0x00050080,0x00000032,0x000006fb, + 0x000006f3,0x000006fa,0x0003003e,0x000006fc,0x000006fb,0x0004003d,0x0000009f,0x000006fe, + 0x000006e2,0x0003003e,0x000006fd,0x000006fe,0x0004003d,0x00000006,0x00000700,0x000000fe, + 0x0003003e,0x000006ff,0x00000700,0x0004003d,0x00000006,0x00000702,0x000000ff,0x0003003e, + 0x00000701,0x00000702,0x00080039,0x00000002,0x00000703,0x000000b7,0x000006fc,0x000006fd, + 0x000006ff,0x00000701,0x0004003d,0x00000006,0x00000704,0x000000fa,0x0004003d,0x00000006, + 0x00000705,0x000000fb,0x00050086,0x00000006,0x00000706,0x00000705,0x0000016b,0x00050089, + 0x00000006,0x00000707,0x00000706,0x0000016b,0x00050080,0x00000006,0x00000708,0x00000704, + 0x00000707,0x0003003e,0x00000709,0x00000708,0x0004003d,0x00000006,0x0000070b,0x000000fb, + 0x0003003e,0x0000070a,0x0000070b,0x0004003d,0x0000009f,0x0000070d,0x000006e2,0x0003003e, + 0x0000070c,0x0000070d,0x00070039,0x00000002,0x0000070e,0x000000c2,0x00000709,0x0000070a, + 0x0000070c,0x000200f9,0x000006ef,0x000200f8,0x000006ef,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x00000108,0x00000000,0x000000e9,0x00030037,0x00000007,0x00000102,0x00030037, + 0x00000007,0x00000103,0x00030037,0x000000d0,0x00000104,0x00030037,0x00000007,0x00000105, + 0x00030037,0x00000007,0x00000106,0x00030037,0x00000007,0x00000107,0x000200f8,0x00000109, + 0x0004003b,0x000000aa,0x00000713,0x00000007,0x0004003b,0x00000007,0x0000071b,0x00000007, + 0x0004003b,0x00000007,0x0000071c,0x00000007,0x0004003b,0x000000aa,0x0000071e,0x00000007, + 0x0004003b,0x00000049,0x00000732,0x00000007,0x0004003b,0x000000aa,0x00000733,0x00000007, + 0x0004003b,0x00000007,0x00000735,0x00000007,0x0004003b,0x00000007,0x00000737,0x00000007, + 0x0004003b,0x00000007,0x00000741,0x00000007,0x0004003b,0x00000007,0x00000742,0x00000007, + 0x0004003b,0x000000aa,0x00000743,0x00000007,0x0004003d,0x00000006,0x0000070f,0x00000105, + 0x000500b0,0x0000006e,0x00000710,0x0000070f,0x00000591,0x000300f7,0x00000712,0x00000000, + 0x000400fa,0x00000710,0x00000711,0x00000712,0x000200f8,0x00000711,0x0004003d,0x00000006, + 0x00000714,0x00000102,0x00050084,0x00000006,0x00000715,0x00000714,0x0000016b,0x0004003d, + 0x00000006,0x00000716,0x00000103,0x00050089,0x00000006,0x00000717,0x00000716,0x0000016b, + 0x00050080,0x00000006,0x00000718,0x00000715,0x00000717,0x0004003d,0x00000006,0x00000719, + 0x00000103,0x00050084,0x00000006,0x0000071a,0x00000719,0x0000016b,0x0003003e,0x0000071b, + 0x00000718,0x0003003e,0x0000071c,0x0000071a,0x00060039,0x0000009f,0x0000071d,0x000000bc, + 0x0000071b,0x0000071c,0x0003003e,0x00000713,0x0000071d,0x0004003d,0x0000009f,0x0000071f, + 0x00000713,0x0003003e,0x0000071e,0x0000071f,0x00050039,0x0000009f,0x00000720,0x000000ce, + 0x0000071e,0x0003003e,0x00000713,0x00000720,0x0004003d,0x00000006,0x00000721,0x00000105, + 0x00050089,0x00000006,0x00000722,0x00000721,0x0000020b,0x000500aa,0x0000006e,0x00000723, + 0x00000722,0x000001bf,0x000300f7,0x00000725,0x00000000,0x000400fa,0x00000723,0x00000724, + 0x00000725,0x000200f8,0x00000724,0x0004003d,0x0000002d,0x00000726,0x00000104,0x00050050, + 0x0000002d,0x00000727,0x0000020b,0x0000020b,0x00050084,0x0000002d,0x00000728,0x00000726, + 0x00000727,0x0004007c,0x00000032,0x00000729,0x00000728,0x0004003d,0x00000006,0x0000072a, + 0x00000102,0x00050086,0x00000006,0x0000072b,0x0000072a,0x0000016b,0x0004007c,0x0000001a, + 0x0000072c,0x0000072b,0x0004003d,0x00000006,0x0000072d,0x00000103,0x00050086,0x00000006, + 0x0000072e,0x0000072d,0x0000016b,0x0004007c,0x0000001a,0x0000072f,0x0000072e,0x00050050, + 0x00000032,0x00000730,0x0000072c,0x0000072f,0x00050080,0x00000032,0x00000731,0x00000729, + 0x00000730,0x0003003e,0x00000732,0x00000731,0x0004003d,0x0000009f,0x00000734,0x00000713, + 0x0003003e,0x00000733,0x00000734,0x0004003d,0x00000006,0x00000736,0x00000106,0x0003003e, + 0x00000735,0x00000736,0x0004003d,0x00000006,0x00000738,0x00000107,0x0003003e,0x00000737, + 0x00000738,0x00080039,0x00000002,0x00000739,0x000000b7,0x00000732,0x00000733,0x00000735, + 0x00000737,0x0004003d,0x00000006,0x0000073a,0x00000102,0x00050084,0x00000006,0x0000073b, + 0x0000073a,0x0000016b,0x0004003d,0x00000006,0x0000073c,0x00000103,0x00050086,0x00000006, + 0x0000073d,0x0000073c,0x0000016b,0x00050080,0x00000006,0x0000073e,0x0000073b,0x0000073d, + 0x0004003d,0x00000006,0x0000073f,0x00000103,0x00050084,0x00000006,0x00000740,0x0000073f, + 0x0000016b,0x0003003e,0x00000741,0x0000073e,0x0003003e,0x00000742,0x00000740,0x0004003d, + 0x0000009f,0x00000744,0x00000713,0x0003003e,0x00000743,0x00000744,0x00070039,0x00000002, + 0x00000745,0x000000c2,0x00000741,0x00000742,0x00000743,0x000200f9,0x00000725,0x000200f8, + 0x00000725,0x000200f9,0x00000712,0x000200f8,0x00000712,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x00000110,0x00000000,0x000000e9,0x00030037,0x00000007,0x0000010a,0x00030037, + 0x00000007,0x0000010b,0x00030037,0x000000d0,0x0000010c,0x00030037,0x00000007,0x0000010d, + 0x00030037,0x00000007,0x0000010e,0x00030037,0x00000007,0x0000010f,0x000200f8,0x00000111, + 0x0004003b,0x000000aa,0x0000074a,0x00000007,0x0004003b,0x00000007,0x00000751,0x00000007, + 0x0004003b,0x00000007,0x00000752,0x00000007,0x0004003b,0x000000aa,0x00000754,0x00000007, + 0x0004003b,0x00000049,0x00000768,0x00000007,0x0004003b,0x000000aa,0x00000769,0x00000007, + 0x0004003b,0x00000007,0x0000076b,0x00000007,0x0004003b,0x00000007,0x0000076d,0x00000007, + 0x0004003b,0x00000007,0x00000774,0x00000007,0x0004003b,0x00000007,0x00000775,0x00000007, + 0x0004003b,0x000000aa,0x00000776,0x00000007,0x0004003d,0x00000006,0x00000746,0x0000010d, + 0x000500b0,0x0000006e,0x00000747,0x00000746,0x000004bf,0x000300f7,0x00000749,0x00000000, + 0x000400fa,0x00000747,0x00000748,0x00000749,0x000200f8,0x00000748,0x0004003d,0x00000006, + 0x0000074b,0x0000010a,0x00050084,0x00000006,0x0000074c,0x0000074b,0x0000020b,0x0004003d, + 0x00000006,0x0000074d,0x0000010b,0x00050080,0x00000006,0x0000074e,0x0000074c,0x0000074d, + 0x0004003d,0x00000006,0x0000074f,0x0000010b,0x00050084,0x00000006,0x00000750,0x0000074f, + 0x0000020b,0x0003003e,0x00000751,0x0000074e,0x0003003e,0x00000752,0x00000750,0x00060039, + 0x0000009f,0x00000753,0x000000bc,0x00000751,0x00000752,0x0003003e,0x0000074a,0x00000753, + 0x0004003d,0x0000009f,0x00000755,0x0000074a,0x0003003e,0x00000754,0x00000755,0x00050039, + 0x0000009f,0x00000756,0x000000ce,0x00000754,0x0003003e,0x0000074a,0x00000756,0x0004003d, + 0x00000006,0x00000757,0x0000010d,0x00050089,0x00000006,0x00000758,0x00000757,0x0000020b, + 0x000500aa,0x0000006e,0x00000759,0x00000758,0x000001bf,0x000300f7,0x0000075b,0x00000000, + 0x000400fa,0x00000759,0x0000075a,0x0000075b,0x000200f8,0x0000075a,0x0004003d,0x0000002d, + 0x0000075c,0x0000010c,0x00050050,0x0000002d,0x0000075d,0x0000016b,0x0000016b,0x00050084, + 0x0000002d,0x0000075e,0x0000075c,0x0000075d,0x0004007c,0x00000032,0x0000075f,0x0000075e, + 0x0004003d,0x00000006,0x00000760,0x0000010a,0x00050086,0x00000006,0x00000761,0x00000760, + 0x0000016b,0x0004007c,0x0000001a,0x00000762,0x00000761,0x0004003d,0x00000006,0x00000763, + 0x0000010b,0x00050086,0x00000006,0x00000764,0x00000763,0x0000016b,0x0004007c,0x0000001a, + 0x00000765,0x00000764,0x00050050,0x00000032,0x00000766,0x00000762,0x00000765,0x00050080, + 0x00000032,0x00000767,0x0000075f,0x00000766,0x0003003e,0x00000768,0x00000767,0x0004003d, + 0x0000009f,0x0000076a,0x0000074a,0x0003003e,0x00000769,0x0000076a,0x0004003d,0x00000006, + 0x0000076c,0x0000010e,0x0003003e,0x0000076b,0x0000076c,0x0004003d,0x00000006,0x0000076e, + 0x0000010f,0x0003003e,0x0000076d,0x0000076e,0x00080039,0x00000002,0x0000076f,0x000000b7, + 0x00000768,0x00000769,0x0000076b,0x0000076d,0x0004003d,0x00000006,0x00000770,0x0000010a, + 0x00050086,0x00000006,0x00000771,0x00000770,0x0000016b,0x0004003d,0x00000006,0x00000772, + 0x0000010b,0x00050080,0x00000006,0x00000773,0x00000771,0x00000772,0x0003003e,0x00000774, + 0x00000773,0x0003003e,0x00000775,0x000001bf,0x0004003d,0x0000009f,0x00000777,0x0000074a, + 0x0003003e,0x00000776,0x00000777,0x00070039,0x00000002,0x00000778,0x000000c2,0x00000774, + 0x00000775,0x00000776,0x000200f9,0x0000075b,0x000200f8,0x0000075b,0x000200f9,0x00000749, + 0x000200f8,0x00000749,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000117,0x00000000, + 0x00000112,0x00030037,0x000000d0,0x00000113,0x00030037,0x00000007,0x00000114,0x00030037, + 0x00000007,0x00000115,0x00030037,0x00000007,0x00000116,0x000200f8,0x00000118,0x0004003b, + 0x000000aa,0x0000077d,0x00000007,0x0004003b,0x00000007,0x0000077e,0x00000007,0x0004003b, + 0x00000007,0x00000780,0x00000007,0x0004003b,0x000000aa,0x00000782,0x00000007,0x0004003b, + 0x00000049,0x0000078c,0x00000007,0x0004003b,0x000000aa,0x0000078d,0x00000007,0x0004003b, + 0x00000007,0x0000078f,0x00000007,0x0004003b,0x00000007,0x00000791,0x00000007,0x0004003d, + 0x00000006,0x00000779,0x00000114,0x000500b0,0x0000006e,0x0000077a,0x00000779,0x0000020b, + 0x000300f7,0x0000077c,0x00000000,0x000400fa,0x0000077a,0x0000077b,0x0000077c,0x000200f8, + 0x0000077b,0x0004003d,0x00000006,0x0000077f,0x00000114,0x0003003e,0x0000077e,0x0000077f, + 0x0003003e,0x00000780,0x000001bf,0x00060039,0x0000009f,0x00000781,0x000000bc,0x0000077e, + 0x00000780,0x0003003e,0x0000077d,0x00000781,0x0004003d,0x0000009f,0x00000783,0x0000077d, + 0x0003003e,0x00000782,0x00000783,0x00050039,0x0000009f,0x00000784,0x000000ce,0x00000782, + 0x0003003e,0x0000077d,0x00000784,0x0004003d,0x00000006,0x00000785,0x00000114,0x00050089, + 0x00000006,0x00000786,0x00000785,0x0000020b,0x000500aa,0x0000006e,0x00000787,0x00000786, + 0x000001bf,0x000300f7,0x00000789,0x00000000,0x000400fa,0x00000787,0x00000788,0x00000789, + 0x000200f8,0x00000788,0x0004003d,0x0000002d,0x0000078a,0x00000113,0x0004007c,0x00000032, + 0x0000078b,0x0000078a,0x0003003e,0x0000078c,0x0000078b,0x0004003d,0x0000009f,0x0000078e, + 0x0000077d,0x0003003e,0x0000078d,0x0000078e,0x0004003d,0x00000006,0x00000790,0x00000115, + 0x0003003e,0x0000078f,0x00000790,0x0004003d,0x00000006,0x00000792,0x00000116,0x0003003e, + 0x00000791,0x00000792,0x00080039,0x00000002,0x00000793,0x000000b7,0x0000078c,0x0000078d, + 0x0000078f,0x00000791,0x000200f9,0x00000789,0x000200f8,0x00000789,0x000200f9,0x0000077c, + 0x000200f8,0x0000077c,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000011e,0x00000000, + 0x00000119,0x00030037,0x00000007,0x0000011a,0x00030037,0x00000007,0x0000011b,0x00030037, + 0x00000007,0x0000011c,0x00030037,0x00000007,0x0000011d,0x000200f8,0x0000011f,0x0004003b, + 0x00000049,0x00000794,0x00000007,0x0004003b,0x00000049,0x0000079e,0x00000007,0x0004003b, + 0x000000aa,0x000007a8,0x00000007,0x0004003b,0x000000d0,0x000007ab,0x00000007,0x0004003b, + 0x00000007,0x000007ac,0x00000007,0x0004003b,0x00000049,0x000007b0,0x00000007,0x0004003b, + 0x000000aa,0x000007b2,0x00000007,0x0004003b,0x00000007,0x000007b4,0x00000007,0x0004003b, + 0x00000007,0x000007b5,0x00000007,0x0004003b,0x000000aa,0x000007ca,0x00000007,0x0004003b, + 0x000000d0,0x000007cd,0x00000007,0x0004003b,0x00000007,0x000007ce,0x00000007,0x0004003b, + 0x00000049,0x000007d1,0x00000007,0x0004003b,0x000000aa,0x000007d3,0x00000007,0x0004003b, + 0x00000007,0x000007d5,0x00000007,0x0004003b,0x00000007,0x000007d6,0x00000007,0x0004003b, + 0x000000aa,0x000007eb,0x00000007,0x0004003b,0x000000d0,0x000007ee,0x00000007,0x0004003b, + 0x00000007,0x000007ef,0x00000007,0x0004003b,0x00000049,0x000007f2,0x00000007,0x0004003b, + 0x000000aa,0x000007f4,0x00000007,0x0004003b,0x00000007,0x000007f6,0x00000007,0x0004003b, + 0x00000007,0x000007f7,0x00000007,0x0004003b,0x000000aa,0x0000080c,0x00000007,0x0004003b, + 0x000000d0,0x0000080f,0x00000007,0x0004003b,0x00000007,0x00000810,0x00000007,0x0004003b, + 0x00000049,0x00000813,0x00000007,0x0004003b,0x000000aa,0x00000815,0x00000007,0x0004003b, + 0x00000007,0x00000817,0x00000007,0x0004003b,0x00000007,0x00000818,0x00000007,0x0004003b, + 0x000000aa,0x00000821,0x00000007,0x0004003b,0x000000aa,0x00000822,0x00000007,0x0004003b, + 0x000000aa,0x00000824,0x00000007,0x0004003b,0x000000aa,0x00000826,0x00000007,0x0004003b, + 0x000000aa,0x00000828,0x00000007,0x0004003b,0x00000049,0x00000830,0x00000007,0x0004003b, + 0x000000aa,0x00000831,0x00000007,0x0004003b,0x00000007,0x00000833,0x00000007,0x0004003b, + 0x00000007,0x00000834,0x00000007,0x0004003b,0x00000007,0x00000837,0x00000007,0x0004003b, + 0x00000007,0x00000839,0x00000007,0x0004003b,0x000000aa,0x0000083b,0x00000007,0x0004003d, + 0x00000006,0x00000795,0x0000011a,0x00050084,0x00000006,0x00000796,0x00000795,0x0000020b, + 0x00050080,0x00000006,0x00000797,0x00000796,0x000001bf,0x0004007c,0x0000001a,0x00000798, + 0x00000797,0x0004003d,0x00000006,0x00000799,0x0000011b,0x00050084,0x00000006,0x0000079a, + 0x00000799,0x0000020b,0x00050080,0x00000006,0x0000079b,0x0000079a,0x000001bf,0x0004007c, + 0x0000001a,0x0000079c,0x0000079b,0x00050050,0x00000032,0x0000079d,0x00000798,0x0000079c, + 0x0003003e,0x00000794,0x0000079d,0x0004003d,0x00000006,0x0000079f,0x0000011a,0x00050084, + 0x00000006,0x000007a0,0x0000079f,0x0000016b,0x00050080,0x00000006,0x000007a1,0x000007a0, + 0x000001bf,0x0004007c,0x0000001a,0x000007a2,0x000007a1,0x0004003d,0x00000006,0x000007a3, + 0x0000011b,0x00050084,0x00000006,0x000007a4,0x000007a3,0x0000016b,0x00050080,0x00000006, + 0x000007a5,0x000007a4,0x000001bf,0x0004007c,0x0000001a,0x000007a6,0x000007a5,0x00050050, + 0x00000032,0x000007a7,0x000007a2,0x000007a6,0x0003003e,0x0000079e,0x000007a7,0x0004003d, + 0x00000032,0x000007a9,0x00000794,0x0004007c,0x0000002d,0x000007aa,0x000007a9,0x0003003e, + 0x000007ab,0x000007aa,0x0004003d,0x00000006,0x000007ad,0x0000011d,0x0003003e,0x000007ac, + 0x000007ad,0x00060039,0x0000009f,0x000007ae,0x000000dc,0x000007ab,0x000007ac,0x0003003e, + 0x000007a8,0x000007ae,0x0004003d,0x00000032,0x000007b1,0x0000079e,0x0003003e,0x000007b0, + 0x000007b1,0x0004003d,0x0000009f,0x000007b3,0x000007a8,0x0003003e,0x000007b2,0x000007b3, + 0x0003003e,0x000007b4,0x000007af,0x0004003d,0x00000006,0x000007b6,0x0000011d,0x0003003e, + 0x000007b5,0x000007b6,0x00080039,0x00000002,0x000007b7,0x000000b7,0x000007b0,0x000007b2, + 0x000007b4,0x000007b5,0x0004003d,0x00000006,0x000007b8,0x0000011a,0x00050084,0x00000006, + 0x000007b9,0x000007b8,0x0000020b,0x00050080,0x00000006,0x000007ba,0x000007b9,0x0000016b, + 0x0004007c,0x0000001a,0x000007bb,0x000007ba,0x0004003d,0x00000006,0x000007bc,0x0000011b, + 0x00050084,0x00000006,0x000007bd,0x000007bc,0x0000020b,0x00050080,0x00000006,0x000007be, + 0x000007bd,0x000001bf,0x0004007c,0x0000001a,0x000007bf,0x000007be,0x00050050,0x00000032, + 0x000007c0,0x000007bb,0x000007bf,0x0003003e,0x00000794,0x000007c0,0x0004003d,0x00000006, + 0x000007c1,0x0000011a,0x00050084,0x00000006,0x000007c2,0x000007c1,0x0000016b,0x00050080, + 0x00000006,0x000007c3,0x000007c2,0x00000172,0x0004007c,0x0000001a,0x000007c4,0x000007c3, + 0x0004003d,0x00000006,0x000007c5,0x0000011b,0x00050084,0x00000006,0x000007c6,0x000007c5, + 0x0000016b,0x00050080,0x00000006,0x000007c7,0x000007c6,0x000001bf,0x0004007c,0x0000001a, + 0x000007c8,0x000007c7,0x00050050,0x00000032,0x000007c9,0x000007c4,0x000007c8,0x0003003e, + 0x0000079e,0x000007c9,0x0004003d,0x00000032,0x000007cb,0x00000794,0x0004007c,0x0000002d, + 0x000007cc,0x000007cb,0x0003003e,0x000007cd,0x000007cc,0x0004003d,0x00000006,0x000007cf, + 0x0000011d,0x0003003e,0x000007ce,0x000007cf,0x00060039,0x0000009f,0x000007d0,0x000000dc, + 0x000007cd,0x000007ce,0x0003003e,0x000007ca,0x000007d0,0x0004003d,0x00000032,0x000007d2, + 0x0000079e,0x0003003e,0x000007d1,0x000007d2,0x0004003d,0x0000009f,0x000007d4,0x000007ca, + 0x0003003e,0x000007d3,0x000007d4,0x0003003e,0x000007d5,0x000007af,0x0004003d,0x00000006, + 0x000007d7,0x0000011d,0x0003003e,0x000007d6,0x000007d7,0x00080039,0x00000002,0x000007d8, + 0x000000b7,0x000007d1,0x000007d3,0x000007d5,0x000007d6,0x0004003d,0x00000006,0x000007d9, + 0x0000011a,0x00050084,0x00000006,0x000007da,0x000007d9,0x0000020b,0x00050080,0x00000006, + 0x000007db,0x000007da,0x000001bf,0x0004007c,0x0000001a,0x000007dc,0x000007db,0x0004003d, + 0x00000006,0x000007dd,0x0000011b,0x00050084,0x00000006,0x000007de,0x000007dd,0x0000020b, + 0x00050080,0x00000006,0x000007df,0x000007de,0x0000016b,0x0004007c,0x0000001a,0x000007e0, + 0x000007df,0x00050050,0x00000032,0x000007e1,0x000007dc,0x000007e0,0x0003003e,0x00000794, + 0x000007e1,0x0004003d,0x00000006,0x000007e2,0x0000011a,0x00050084,0x00000006,0x000007e3, + 0x000007e2,0x0000016b,0x00050080,0x00000006,0x000007e4,0x000007e3,0x000001bf,0x0004007c, + 0x0000001a,0x000007e5,0x000007e4,0x0004003d,0x00000006,0x000007e6,0x0000011b,0x00050084, + 0x00000006,0x000007e7,0x000007e6,0x0000016b,0x00050080,0x00000006,0x000007e8,0x000007e7, + 0x00000172,0x0004007c,0x0000001a,0x000007e9,0x000007e8,0x00050050,0x00000032,0x000007ea, + 0x000007e5,0x000007e9,0x0003003e,0x0000079e,0x000007ea,0x0004003d,0x00000032,0x000007ec, + 0x00000794,0x0004007c,0x0000002d,0x000007ed,0x000007ec,0x0003003e,0x000007ee,0x000007ed, + 0x0004003d,0x00000006,0x000007f0,0x0000011d,0x0003003e,0x000007ef,0x000007f0,0x00060039, + 0x0000009f,0x000007f1,0x000000dc,0x000007ee,0x000007ef,0x0003003e,0x000007eb,0x000007f1, + 0x0004003d,0x00000032,0x000007f3,0x0000079e,0x0003003e,0x000007f2,0x000007f3,0x0004003d, + 0x0000009f,0x000007f5,0x000007eb,0x0003003e,0x000007f4,0x000007f5,0x0003003e,0x000007f6, + 0x000007af,0x0004003d,0x00000006,0x000007f8,0x0000011d,0x0003003e,0x000007f7,0x000007f8, + 0x00080039,0x00000002,0x000007f9,0x000000b7,0x000007f2,0x000007f4,0x000007f6,0x000007f7, + 0x0004003d,0x00000006,0x000007fa,0x0000011a,0x00050084,0x00000006,0x000007fb,0x000007fa, + 0x0000020b,0x00050080,0x00000006,0x000007fc,0x000007fb,0x0000016b,0x0004007c,0x0000001a, + 0x000007fd,0x000007fc,0x0004003d,0x00000006,0x000007fe,0x0000011b,0x00050084,0x00000006, + 0x000007ff,0x000007fe,0x0000020b,0x00050080,0x00000006,0x00000800,0x000007ff,0x0000016b, + 0x0004007c,0x0000001a,0x00000801,0x00000800,0x00050050,0x00000032,0x00000802,0x000007fd, + 0x00000801,0x0003003e,0x00000794,0x00000802,0x0004003d,0x00000006,0x00000803,0x0000011a, + 0x00050084,0x00000006,0x00000804,0x00000803,0x0000016b,0x00050080,0x00000006,0x00000805, + 0x00000804,0x00000172,0x0004007c,0x0000001a,0x00000806,0x00000805,0x0004003d,0x00000006, + 0x00000807,0x0000011b,0x00050084,0x00000006,0x00000808,0x00000807,0x0000016b,0x00050080, + 0x00000006,0x00000809,0x00000808,0x00000172,0x0004007c,0x0000001a,0x0000080a,0x00000809, + 0x00050050,0x00000032,0x0000080b,0x00000806,0x0000080a,0x0003003e,0x0000079e,0x0000080b, + 0x0004003d,0x00000032,0x0000080d,0x00000794,0x0004007c,0x0000002d,0x0000080e,0x0000080d, + 0x0003003e,0x0000080f,0x0000080e,0x0004003d,0x00000006,0x00000811,0x0000011d,0x0003003e, + 0x00000810,0x00000811,0x00060039,0x0000009f,0x00000812,0x000000dc,0x0000080f,0x00000810, + 0x0003003e,0x0000080c,0x00000812,0x0004003d,0x00000032,0x00000814,0x0000079e,0x0003003e, + 0x00000813,0x00000814,0x0004003d,0x0000009f,0x00000816,0x0000080c,0x0003003e,0x00000815, + 0x00000816,0x0003003e,0x00000817,0x000007af,0x0004003d,0x00000006,0x00000819,0x0000011d, + 0x0003003e,0x00000818,0x00000819,0x00080039,0x00000002,0x0000081a,0x000000b7,0x00000813, + 0x00000815,0x00000817,0x00000818,0x0004003d,0x00000006,0x0000081b,0x0000011c,0x000500b2, + 0x0000006e,0x0000081d,0x0000081b,0x0000081c,0x000300f7,0x0000081f,0x00000000,0x000400fa, + 0x0000081d,0x0000081e,0x0000081f,0x000200f8,0x0000081e,0x000100fd,0x000200f8,0x0000081f, + 0x0004003d,0x0000009f,0x00000823,0x000007a8,0x0003003e,0x00000822,0x00000823,0x0004003d, + 0x0000009f,0x00000825,0x000007ca,0x0003003e,0x00000824,0x00000825,0x0004003d,0x0000009f, + 0x00000827,0x000007eb,0x0003003e,0x00000826,0x00000827,0x0004003d,0x0000009f,0x00000829, + 0x0000080c,0x0003003e,0x00000828,0x00000829,0x00080039,0x0000009f,0x0000082a,0x000000b0, + 0x00000822,0x00000824,0x00000826,0x00000828,0x0003003e,0x00000821,0x0000082a,0x0004003d, + 0x00000006,0x0000082b,0x0000011a,0x0004007c,0x0000001a,0x0000082c,0x0000082b,0x0004003d, + 0x00000006,0x0000082d,0x0000011b,0x0004007c,0x0000001a,0x0000082e,0x0000082d,0x00050050, + 0x00000032,0x0000082f,0x0000082c,0x0000082e,0x0003003e,0x00000830,0x0000082f,0x0004003d, + 0x0000009f,0x00000832,0x00000821,0x0003003e,0x00000831,0x00000832,0x0003003e,0x00000833, + 0x0000081c,0x0004003d,0x00000006,0x00000835,0x0000011d,0x0003003e,0x00000834,0x00000835, + 0x00080039,0x00000002,0x00000836,0x000000b7,0x00000830,0x00000831,0x00000833,0x00000834, + 0x0004003d,0x00000006,0x00000838,0x0000011a,0x0003003e,0x00000837,0x00000838,0x0004003d, + 0x00000006,0x0000083a,0x0000011b,0x0003003e,0x00000839,0x0000083a,0x0004003d,0x0000009f, + 0x0000083c,0x00000821,0x0003003e,0x0000083b,0x0000083c,0x00070039,0x00000002,0x0000083d, + 0x000000c2,0x00000837,0x00000839,0x0000083b,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000128,0x00000000,0x00000120,0x00030037,0x00000007,0x00000121,0x00030037,0x00000007, + 0x00000122,0x00030037,0x000000d0,0x00000123,0x00030037,0x00000007,0x00000124,0x00030037, + 0x00000007,0x00000125,0x00030037,0x00000007,0x00000126,0x00030037,0x00000007,0x00000127, + 0x000200f8,0x00000129,0x0004003b,0x00000007,0x00000845,0x00000007,0x0004003b,0x00000007, + 0x00000847,0x00000007,0x0004003b,0x000000d0,0x00000849,0x00000007,0x0004003b,0x00000007, + 0x0000084b,0x00000007,0x0004003b,0x00000007,0x0000084d,0x00000007,0x0004003b,0x00000007, + 0x0000084f,0x00000007,0x0004003b,0x00000007,0x0000085c,0x00000007,0x0004003b,0x00000007, + 0x0000085e,0x00000007,0x0004003b,0x000000d0,0x00000860,0x00000007,0x0004003b,0x00000007, + 0x00000862,0x00000007,0x0004003b,0x00000007,0x00000864,0x00000007,0x0004003b,0x00000007, + 0x00000865,0x00000007,0x0004003b,0x00000007,0x00000872,0x00000007,0x0004003b,0x00000007, + 0x00000874,0x00000007,0x0004003b,0x000000d0,0x00000876,0x00000007,0x0004003b,0x00000007, + 0x00000878,0x00000007,0x0004003b,0x00000007,0x0000087a,0x00000007,0x0004003b,0x00000007, + 0x0000087b,0x00000007,0x0004003b,0x000000d0,0x00000888,0x00000007,0x0004003b,0x00000007, + 0x0000088a,0x00000007,0x0004003b,0x00000007,0x0000088c,0x00000007,0x0004003b,0x00000007, + 0x0000088d,0x00000007,0x0004003d,0x00000006,0x0000083e,0x00000126,0x0004003d,0x00000006, + 0x0000083f,0x00000125,0x000500b2,0x0000006e,0x00000840,0x0000083e,0x0000083f,0x000300f7, + 0x00000842,0x00000000,0x000400fa,0x00000840,0x00000841,0x00000842,0x000200f8,0x00000841, + 0x000100fd,0x000200f8,0x00000842,0x00040039,0x00000002,0x00000844,0x000000c4,0x0004003d, + 0x00000006,0x00000846,0x00000121,0x0003003e,0x00000845,0x00000846,0x0004003d,0x00000006, + 0x00000848,0x00000122,0x0003003e,0x00000847,0x00000848,0x0004003d,0x0000002d,0x0000084a, + 0x00000123,0x0003003e,0x00000849,0x0000084a,0x0004003d,0x00000006,0x0000084c,0x00000124, + 0x0003003e,0x0000084b,0x0000084c,0x0004003d,0x00000006,0x0000084e,0x00000125,0x0003003e, + 0x0000084d,0x0000084e,0x0004003d,0x00000006,0x00000850,0x00000127,0x0003003e,0x0000084f, + 0x00000850,0x000a0039,0x00000002,0x00000851,0x00000100,0x00000845,0x00000847,0x00000849, + 0x0000084b,0x0000084d,0x0000084f,0x0004003d,0x00000006,0x00000852,0x00000126,0x0004003d, + 0x00000006,0x00000853,0x00000125,0x00050080,0x00000006,0x00000854,0x00000853,0x00000172, + 0x000500b2,0x0000006e,0x00000855,0x00000852,0x00000854,0x000300f7,0x00000857,0x00000000, + 0x000400fa,0x00000855,0x00000856,0x00000857,0x000200f8,0x00000856,0x000100fd,0x000200f8, + 0x00000857,0x00040039,0x00000002,0x00000859,0x000000c4,0x0004003d,0x00000006,0x0000085a, + 0x00000125,0x00050080,0x00000006,0x0000085b,0x0000085a,0x00000172,0x0004003d,0x00000006, + 0x0000085d,0x00000121,0x0003003e,0x0000085c,0x0000085d,0x0004003d,0x00000006,0x0000085f, + 0x00000122,0x0003003e,0x0000085e,0x0000085f,0x0004003d,0x0000002d,0x00000861,0x00000123, + 0x0003003e,0x00000860,0x00000861,0x0004003d,0x00000006,0x00000863,0x00000124,0x0003003e, + 0x00000862,0x00000863,0x0003003e,0x00000864,0x0000085b,0x0004003d,0x00000006,0x00000866, + 0x00000127,0x0003003e,0x00000865,0x00000866,0x000a0039,0x00000002,0x00000867,0x00000108, + 0x0000085c,0x0000085e,0x00000860,0x00000862,0x00000864,0x00000865,0x0004003d,0x00000006, + 0x00000868,0x00000126,0x0004003d,0x00000006,0x00000869,0x00000125,0x00050080,0x00000006, + 0x0000086a,0x00000869,0x0000016b,0x000500b2,0x0000006e,0x0000086b,0x00000868,0x0000086a, + 0x000300f7,0x0000086d,0x00000000,0x000400fa,0x0000086b,0x0000086c,0x0000086d,0x000200f8, + 0x0000086c,0x000100fd,0x000200f8,0x0000086d,0x00040039,0x00000002,0x0000086f,0x000000c4, + 0x0004003d,0x00000006,0x00000870,0x00000125,0x00050080,0x00000006,0x00000871,0x00000870, + 0x0000016b,0x0004003d,0x00000006,0x00000873,0x00000121,0x0003003e,0x00000872,0x00000873, + 0x0004003d,0x00000006,0x00000875,0x00000122,0x0003003e,0x00000874,0x00000875,0x0004003d, + 0x0000002d,0x00000877,0x00000123,0x0003003e,0x00000876,0x00000877,0x0004003d,0x00000006, + 0x00000879,0x00000124,0x0003003e,0x00000878,0x00000879,0x0003003e,0x0000087a,0x00000871, + 0x0004003d,0x00000006,0x0000087c,0x00000127,0x0003003e,0x0000087b,0x0000087c,0x000a0039, + 0x00000002,0x0000087d,0x00000110,0x00000872,0x00000874,0x00000876,0x00000878,0x0000087a, + 0x0000087b,0x0004003d,0x00000006,0x0000087e,0x00000126,0x0004003d,0x00000006,0x0000087f, + 0x00000125,0x00050080,0x00000006,0x00000880,0x0000087f,0x0000016c,0x000500b2,0x0000006e, + 0x00000881,0x0000087e,0x00000880,0x000300f7,0x00000883,0x00000000,0x000400fa,0x00000881, + 0x00000882,0x00000883,0x000200f8,0x00000882,0x000100fd,0x000200f8,0x00000883,0x00040039, + 0x00000002,0x00000885,0x000000c4,0x0004003d,0x00000006,0x00000886,0x00000125,0x00050080, + 0x00000006,0x00000887,0x00000886,0x0000016c,0x0004003d,0x0000002d,0x00000889,0x00000123, + 0x0003003e,0x00000888,0x00000889,0x0004003d,0x00000006,0x0000088b,0x00000124,0x0003003e, + 0x0000088a,0x0000088b,0x0003003e,0x0000088c,0x00000887,0x0004003d,0x00000006,0x0000088e, + 0x00000127,0x0003003e,0x0000088d,0x0000088e,0x00080039,0x00000002,0x0000088f,0x00000117, + 0x00000888,0x0000088a,0x0000088c,0x0000088d,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000130,0x00000000,0x0000012a,0x00030037,0x000000d0,0x0000012b,0x00030037,0x00000007, + 0x0000012c,0x00030037,0x00000007,0x0000012d,0x00030037,0x00000007,0x0000012e,0x00030037, + 0x00000007,0x0000012f,0x000200f8,0x00000131,0x0004003b,0x000000d0,0x00000890,0x00000007, + 0x0004003b,0x00000007,0x00000893,0x00000007,0x0004003b,0x00000007,0x00000895,0x00000007, + 0x0004003b,0x00000007,0x0000089e,0x00000007,0x0004003b,0x00000007,0x000008a5,0x00000007, + 0x0004003b,0x00000007,0x000008a7,0x00000007,0x0004003b,0x000000d0,0x000008a9,0x00000007, + 0x0004003b,0x00000007,0x000008ab,0x00000007,0x0004003b,0x00000007,0x000008ad,0x00000007, + 0x0004003b,0x00000007,0x000008af,0x00000007,0x0004003b,0x00000007,0x000008b2,0x00000007, + 0x0004003b,0x00000007,0x000008b4,0x00000007,0x0004003b,0x000000d0,0x000008b6,0x00000007, + 0x0004003b,0x00000007,0x000008b8,0x00000007,0x0004003b,0x00000007,0x000008ba,0x00000007, + 0x0004003b,0x00000007,0x000008bb,0x00000007,0x0004003b,0x00000007,0x000008bd,0x00000007, + 0x0004003b,0x00000007,0x000008c5,0x00000007,0x0004003b,0x00000007,0x000008c7,0x00000007, + 0x0004003b,0x00000007,0x000008c9,0x00000007,0x0004003b,0x00000007,0x000008cf,0x00000007, + 0x0004003b,0x00000007,0x000008d2,0x00000007,0x0004003b,0x00000007,0x000008d4,0x00000007, + 0x0004003b,0x00000007,0x000008d6,0x00000007,0x0004003b,0x00000007,0x000008d8,0x00000007, + 0x0004003b,0x00000007,0x000008db,0x00000007,0x0004003b,0x00000007,0x000008dd,0x00000007, + 0x0004003b,0x000000d0,0x000008df,0x00000007,0x0004003b,0x00000007,0x000008e0,0x00000007, + 0x0004003b,0x00000007,0x000008e2,0x00000007,0x0004003b,0x00000007,0x000008e3,0x00000007, + 0x0004003b,0x00000007,0x000008e5,0x00000007,0x0004003d,0x00000006,0x00000891,0x0000012c, + 0x00050089,0x00000006,0x00000892,0x00000891,0x00000591,0x0003003e,0x00000893,0x00000892, + 0x00050039,0x0000002d,0x00000894,0x00000030,0x00000893,0x0003003e,0x00000890,0x00000894, + 0x00050041,0x00000007,0x00000896,0x00000890,0x000001bf,0x0004003d,0x00000006,0x00000897, + 0x00000896,0x0004003d,0x00000006,0x00000898,0x0000012c,0x000500c2,0x00000006,0x0000089a, + 0x00000898,0x00000899,0x00050089,0x00000006,0x0000089b,0x0000089a,0x0000016b,0x00050084, + 0x00000006,0x0000089c,0x00000678,0x0000089b,0x00050080,0x00000006,0x0000089d,0x00000897, + 0x0000089c,0x0003003e,0x00000895,0x0000089d,0x00050041,0x00000007,0x0000089f,0x00000890, + 0x00000172,0x0004003d,0x00000006,0x000008a0,0x0000089f,0x0004003d,0x00000006,0x000008a1, + 0x0000012c,0x000500c2,0x00000006,0x000008a2,0x000008a1,0x00000196,0x00050084,0x00000006, + 0x000008a3,0x00000678,0x000008a2,0x00050080,0x00000006,0x000008a4,0x000008a0,0x000008a3, + 0x0003003e,0x0000089e,0x000008a4,0x0004003d,0x00000006,0x000008a6,0x00000895,0x0003003e, + 0x000008a5,0x000008a6,0x0004003d,0x00000006,0x000008a8,0x0000089e,0x0003003e,0x000008a7, + 0x000008a8,0x0004003d,0x0000002d,0x000008aa,0x0000012b,0x0003003e,0x000008a9,0x000008aa, + 0x0004003d,0x00000006,0x000008ac,0x0000012c,0x0003003e,0x000008ab,0x000008ac,0x0004003d, + 0x00000006,0x000008ae,0x0000012d,0x0003003e,0x000008ad,0x000008ae,0x0004003d,0x00000006, + 0x000008b0,0x0000012f,0x0003003e,0x000008af,0x000008b0,0x000a0039,0x00000002,0x000008b1, + 0x000000f8,0x000008a5,0x000008a7,0x000008a9,0x000008ab,0x000008ad,0x000008af,0x0004003d, + 0x00000006,0x000008b3,0x00000895,0x0003003e,0x000008b2,0x000008b3,0x0004003d,0x00000006, + 0x000008b5,0x0000089e,0x0003003e,0x000008b4,0x000008b5,0x0004003d,0x0000002d,0x000008b7, + 0x0000012b,0x0003003e,0x000008b6,0x000008b7,0x0004003d,0x00000006,0x000008b9,0x0000012c, + 0x0003003e,0x000008b8,0x000008b9,0x0003003e,0x000008ba,0x0000016b,0x0004003d,0x00000006, + 0x000008bc,0x0000012d,0x0003003e,0x000008bb,0x000008bc,0x0004003d,0x00000006,0x000008be, + 0x0000012f,0x0003003e,0x000008bd,0x000008be,0x000b0039,0x00000002,0x000008bf,0x00000128, + 0x000008b2,0x000008b4,0x000008b6,0x000008b8,0x000008ba,0x000008bb,0x000008bd,0x0004003d, + 0x00000006,0x000008c0,0x0000012d,0x000500b2,0x0000006e,0x000008c1,0x000008c0,0x000007af, + 0x000300f7,0x000008c3,0x00000000,0x000400fa,0x000008c1,0x000008c2,0x000008c3,0x000200f8, + 0x000008c2,0x000100fd,0x000200f8,0x000008c3,0x0004003d,0x00000006,0x000008c6,0x0000012e, + 0x0003003e,0x000008c5,0x000008c6,0x0004003d,0x00000006,0x000008c8,0x0000012c,0x0003003e, + 0x000008c7,0x000008c8,0x0004003d,0x00000006,0x000008ca,0x0000012f,0x0003003e,0x000008c9, + 0x000008ca,0x00070039,0x0000006e,0x000008cb,0x000000ca,0x000008c5,0x000008c7,0x000008c9, + 0x000300f7,0x000008cd,0x00000000,0x000400fa,0x000008cb,0x000008cc,0x000008cd,0x000200f8, + 0x000008cc,0x000100fd,0x000200f8,0x000008cd,0x0004003d,0x00000006,0x000008d0,0x0000012f, + 0x0003003e,0x000008cf,0x000008d0,0x00050039,0x00000002,0x000008d1,0x0000007f,0x000008cf, + 0x0004003d,0x00000006,0x000008d3,0x00000895,0x0003003e,0x000008d2,0x000008d3,0x0004003d, + 0x00000006,0x000008d5,0x0000089e,0x0003003e,0x000008d4,0x000008d5,0x0004003d,0x00000006, + 0x000008d7,0x0000012d,0x0003003e,0x000008d6,0x000008d7,0x0004003d,0x00000006,0x000008d9, + 0x0000012f,0x0003003e,0x000008d8,0x000008d9,0x00080039,0x00000002,0x000008da,0x0000011e, + 0x000008d2,0x000008d4,0x000008d6,0x000008d8,0x0004003d,0x00000006,0x000008dc,0x00000895, + 0x0003003e,0x000008db,0x000008dc,0x0004003d,0x00000006,0x000008de,0x0000089e,0x0003003e, + 0x000008dd,0x000008de,0x0003003e,0x000008df,0x0000053f,0x0004003d,0x00000006,0x000008e1, + 0x0000012c,0x0003003e,0x000008e0,0x000008e1,0x0003003e,0x000008e2,0x00000678,0x0004003d, + 0x00000006,0x000008e4,0x0000012d,0x0003003e,0x000008e3,0x000008e4,0x0004003d,0x00000006, + 0x000008e6,0x0000012f,0x0003003e,0x000008e5,0x000008e6,0x000b0039,0x00000002,0x000008e7, + 0x00000128,0x000008db,0x000008dd,0x000008df,0x000008e0,0x000008e2,0x000008e3,0x000008e5, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x00000139,0x00000000,0x00000132,0x00030037, + 0x000000d0,0x00000133,0x00030037,0x00000007,0x00000134,0x00030037,0x00000007,0x00000135, + 0x00030037,0x00000007,0x00000136,0x00030037,0x00000007,0x00000137,0x00030037,0x000000d0, + 0x00000138,0x000200f8,0x0000013a,0x0004003b,0x000000d0,0x000008eb,0x00000007,0x0004003b, + 0x00000007,0x000008ec,0x00000007,0x0004003b,0x00000007,0x000008ee,0x00000007,0x0004003b, + 0x00000007,0x000008f0,0x00000007,0x0004003b,0x00000007,0x000008f2,0x00000007,0x0004003d, + 0x0000002d,0x000008e8,0x00000133,0x0004003d,0x0000002d,0x000008e9,0x00000138,0x00050080, + 0x0000002d,0x000008ea,0x000008e8,0x000008e9,0x0003003e,0x000008eb,0x000008ea,0x0004003d, + 0x00000006,0x000008ed,0x00000134,0x0003003e,0x000008ec,0x000008ed,0x0004003d,0x00000006, + 0x000008ef,0x00000135,0x0003003e,0x000008ee,0x000008ef,0x0004003d,0x00000006,0x000008f1, + 0x00000136,0x0003003e,0x000008f0,0x000008f1,0x0004003d,0x00000006,0x000008f3,0x00000137, + 0x0003003e,0x000008f2,0x000008f3,0x00090039,0x00000002,0x000008f4,0x00000130,0x000008eb, + 0x000008ec,0x000008ee,0x000008f0,0x000008f2,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000140,0x00000000,0x0000013d,0x00030037,0x0000013c,0x0000013e,0x00030037,0x00000007, + 0x0000013f,0x000200f8,0x00000141,0x0004003b,0x000000d0,0x000008fd,0x00000007,0x0004003b, + 0x00000007,0x000008fe,0x00000007,0x0004003b,0x00000007,0x000008ff,0x00000007,0x0004003b, + 0x00000007,0x00000900,0x00000007,0x0004003b,0x00000007,0x00000901,0x00000007,0x0004003b, + 0x000000d0,0x00000902,0x00000007,0x0004003d,0x0000013b,0x000008f5,0x0000013e,0x0007004f, + 0x0000002d,0x000008f6,0x000008f5,0x000008f5,0x00000000,0x00000001,0x0004003d,0x00000006, + 0x000008f7,0x0000013f,0x00040039,0x00000006,0x000008f8,0x00000042,0x00040039,0x00000006, + 0x000008f9,0x00000044,0x00050041,0x00000007,0x000008fa,0x0000013e,0x0000016b,0x0004003d, + 0x00000006,0x000008fb,0x000008fa,0x00040039,0x0000002d,0x000008fc,0x00000047,0x0003003e, + 0x000008fd,0x000008f6,0x0003003e,0x000008fe,0x000008f7,0x0003003e,0x000008ff,0x000008f8, + 0x0003003e,0x00000900,0x000008f9,0x0003003e,0x00000901,0x000008fb,0x0003003e,0x00000902, + 0x000008fc,0x000a0039,0x00000002,0x00000903,0x00000139,0x000008fd,0x000008fe,0x000008ff, + 0x00000900,0x00000901,0x00000902,0x000100fd,0x00010038 +}; diff --git a/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h b/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h new file mode 100644 index 000000000..6b251bbb6 --- /dev/null +++ b/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h @@ -0,0 +1,1942 @@ + // 1116.2.0 + #pragma once +const uint32_t FSR3_SHADING_CHANGE_PYRAMID_NOWAVE_COMP_SPV[] = { + 0x07230203,0x00010300,0x0008000b,0x0000095b,0x00000000,0x00020011,0x00000001,0x00020011, + 0x00000031,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, + 0x00000000,0x00000001,0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000945, + 0x00000947,0x00060010,0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003, + 0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373, + 0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47,0x735f5458, + 0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63,0x00736570, + 0x000a0004,0x475f4c47,0x4c474f4f,0x70635f45,0x74735f70,0x5f656c79,0x656e696c,0x7269645f, + 0x69746365,0x00006576,0x00080004,0x475f4c47,0x4c474f4f,0x6e695f45,0x64756c63,0x69645f65, + 0x74636572,0x00657669,0x00040005,0x00000004,0x6e69616d,0x00000000,0x000a0005,0x0000000c, + 0x42786666,0x69667469,0x45646c65,0x61727478,0x75287463,0x31753b31,0x3b31753b,0x00000000, + 0x00030005,0x00000009,0x00637273,0x00030005,0x0000000a,0x0066666f,0x00040005,0x0000000b, + 0x73746962,0x00000000,0x000a0005,0x00000011,0x42786666,0x69667469,0x49646c65,0x7265736e, + 0x73614d74,0x3175286b,0x3b31753b,0x003b3175,0x00030005,0x0000000e,0x00637273,0x00030005, + 0x0000000f,0x00736e69,0x00040005,0x00000010,0x73746962,0x00000000,0x00060005,0x00000018, + 0x4d786666,0x66286e69,0x31663b31,0x0000003b,0x00030005,0x00000016,0x00000078,0x00030005, + 0x00000017,0x00000079,0x00060005,0x0000001f,0x4d786666,0x69286e69,0x31693b31,0x0000003b, + 0x00030005,0x0000001d,0x00000078,0x00030005,0x0000001e,0x00000079,0x00060005,0x00000023, + 0x4d786666,0x66287861,0x31663b31,0x0000003b,0x00030005,0x00000021,0x00000078,0x00030005, + 0x00000022,0x00000079,0x00060005,0x00000027,0x4d786666,0x69287861,0x31693b31,0x0000003b, + 0x00030005,0x00000025,0x00000078,0x00030005,0x00000026,0x00000079,0x00060005,0x0000002b, + 0x50786666,0x6628776f,0x31663b31,0x0000003b,0x00030005,0x00000029,0x00000078,0x00030005, + 0x0000002a,0x00000079,0x000a0005,0x00000030,0x52786666,0x70616d65,0x57726f46,0x52657661, + 0x63756465,0x6e6f6974,0x3b317528,0x00000000,0x00030005,0x0000002f,0x00000061,0x00050005, + 0x00000034,0x646e6552,0x69537265,0x0028657a,0x00090005,0x00000036,0x76657250,0x73756f69, + 0x6d617246,0x6e655265,0x53726564,0x28657a69,0x00000000,0x00040005,0x0000003a,0x7474694a, + 0x00287265,0x00080005,0x0000003c,0x76657250,0x73756f69,0x6d617246,0x74694a65,0x28726574, + 0x00000000,0x00070005,0x0000003f,0x746c6544,0x65725061,0x6f707845,0x65727573,0x00000028, + 0x00050005,0x00000042,0x4370694d,0x746e756f,0x00000028,0x00060005,0x00000044,0x576d754e, + 0x476b726f,0x70756f72,0x00002873,0x00070005,0x00000047,0x6b726f57,0x756f7247,0x66664f70, + 0x28746573,0x00000000,0x00080005,0x0000004c,0x64616f4c,0x72727543,0x4c746e65,0x28616d75, + 0x3b326976,0x00000000,0x00040005,0x0000004b,0x50785069,0x0000736f,0x00080005,0x0000004f, + 0x64616f4c,0x76657250,0x73756f69,0x616d754c,0x32697628,0x0000003b,0x00040005,0x0000004e, + 0x50785069,0x0000736f,0x000a0005,0x00000053,0x64616f4c,0x616c6944,0x4d646574,0x6f69746f, + 0x6365566e,0x28726f74,0x3b326976,0x00000000,0x00050005,0x00000052,0x49785069,0x7475706e, + 0x00000000,0x00050005,0x00000055,0x6f707845,0x65727573,0x00000028,0x00080005,0x0000005a, + 0x6f4c5752,0x79506461,0x696d6172,0x69762864,0x31753b32,0x0000003b,0x00040005,0x00000058, + 0x50785069,0x0000736f,0x00040005,0x00000059,0x65646e69,0x00000078,0x00090005,0x00000061, + 0x726f7453,0x72795065,0x64696d61,0x32697628,0x3266763b,0x3b31753b,0x00000000,0x00040005, + 0x0000005e,0x50785069,0x0000736f,0x00050005,0x0000005f,0x5674756f,0x65756c61,0x00000000, + 0x00040005,0x00000060,0x65646e69,0x00000078,0x000a0005,0x00000065,0x5f445053,0x72636e49, + 0x65736165,0x6d6f7441,0x6f436369,0x65746e75,0x31752872,0x0000003b,0x00050005,0x00000064, + 0x43647073,0x746e756f,0x00007265,0x00080005,0x00000067,0x5f445053,0x65736552,0x6f744174, + 0x4363696d,0x746e756f,0x00287265,0x00080005,0x0000006c,0x446e694d,0x64697669,0x79426465, + 0x2878614d,0x663b3166,0x00003b31,0x00030005,0x0000006a,0x00003076,0x00030005,0x0000006b, + 0x00003176,0x00060005,0x00000071,0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005, + 0x00000070,0x00765566,0x00080005,0x00000077,0x6d616c43,0x616f4c70,0x69762864,0x69763b32, + 0x69763b32,0x00003b32,0x00050005,0x00000074,0x53785069,0x6c706d61,0x00000065,0x00050005, + 0x00000075,0x4f785069,0x65736666,0x00000074,0x00060005,0x00000076,0x78655469,0x65727574, + 0x657a6953,0x00000000,0x000a0005,0x0000007a,0x49647053,0x6572636e,0x41657361,0x696d6f74, + 0x756f4363,0x7265746e,0x3b317528,0x00000000,0x00040005,0x00000079,0x63696c73,0x00000065, + 0x00080005,0x0000007c,0x47647053,0x74417465,0x63696d6f,0x6e756f43,0x28726574,0x00000000, + 0x00090005,0x0000007f,0x52647053,0x74657365,0x6d6f7441,0x6f436369,0x65746e75,0x31752872, + 0x0000003b,0x00040005,0x0000007e,0x63696c73,0x00000065,0x00050005,0x00000083,0x706d6153, + 0x6553656c,0x00000074,0x00060006,0x00000083,0x00000000,0x6d615366,0x73656c70,0x00000000, + 0x000b0005,0x00000087,0x74726f53,0x28746553,0x75727473,0x532d7463,0x6c706d61,0x74655365, + 0x5b31662d,0x3b315d35,0x00000000,0x00040005,0x00000086,0x74655366,0x00000000,0x00160005, + 0x0000008d,0x706d6f43,0x4d657475,0x6d696e69,0x69446d75,0x72656666,0x65636e65,0x32697628, + 0x7274733b,0x2d746375,0x706d6153,0x6553656c,0x31662d74,0x315d355b,0x7274733b,0x2d746375, + 0x706d6153,0x6553656c,0x31662d74,0x315d355b,0x0000003b,0x00040005,0x0000008a,0x50785069, + 0x0000736f,0x00040005,0x0000008b,0x74655366,0x00000030,0x00040005,0x0000008c,0x74655366, + 0x00000031,0x000b0005,0x00000091,0x43746547,0x65727275,0x754c746e,0x6942616d,0x656e696c, + 0x61537261,0x656c706d,0x66762873,0x00003b32,0x00030005,0x00000090,0x00765566,0x000a0005, + 0x00000093,0x76657250,0x73756f69,0x616d754c,0x696c6942,0x7261656e,0x706d6153,0x4473656c, + 0x00617461,0x00050006,0x00000093,0x00000000,0x74655366,0x00000000,0x00080006,0x00000093, + 0x00000001,0x45734962,0x74736978,0x53676e69,0x6c706d61,0x00000065,0x000c0005,0x00000097, + 0x50746547,0x69766572,0x4c73756f,0x42616d75,0x6e696c69,0x53726165,0x6c706d61,0x76287365, + 0x763b3266,0x003b3266,0x00030005,0x00000095,0x00765566,0x00060005,0x00000096,0x746f4d66, + 0x566e6f69,0x6f746365,0x00000072,0x00090005,0x0000009d,0x706d6f43,0x44657475,0x28666669, + 0x3b326976,0x3b326676,0x3b326676,0x00000000,0x00040005,0x0000009a,0x50785069,0x0000736f, + 0x00030005,0x0000009b,0x00765566,0x00060005,0x0000009c,0x746f4d66,0x566e6f69,0x6f746365, + 0x00000072,0x00090005,0x000000a3,0x4c647053,0x5364616f,0x6372756f,0x616d4965,0x76286567, + 0x753b3266,0x00003b31,0x00040005,0x000000a1,0x50785069,0x0000736f,0x00040005,0x000000a2, + 0x63696c73,0x00000065,0x00060005,0x000000a8,0x4c647053,0x2864616f,0x3b326976,0x003b3175, + 0x00030005,0x000000a6,0x00786574,0x00040005,0x000000a7,0x63696c73,0x00000065,0x00090005, + 0x000000b0,0x52647053,0x63756465,0x76283465,0x763b3466,0x763b3466,0x763b3466,0x003b3466, + 0x00030005,0x000000ac,0x00003076,0x00030005,0x000000ad,0x00003176,0x00030005,0x000000ae, + 0x00003276,0x00030005,0x000000af,0x00003376,0x00080005,0x000000b7,0x53647053,0x65726f74, + 0x32697628,0x3466763b,0x3b31753b,0x003b3175,0x00030005,0x000000b3,0x00786970,0x00050005, + 0x000000b4,0x5674756f,0x65756c61,0x00000000,0x00040005,0x000000b5,0x65646e69,0x00000078, + 0x00040005,0x000000b6,0x63696c73,0x00000065,0x00090005,0x000000bc,0x4c647053,0x4964616f, + 0x7265746e,0x6964656d,0x28657461,0x753b3175,0x00003b31,0x00030005,0x000000ba,0x00000078, + 0x00030005,0x000000bb,0x00000079,0x000a0005,0x000000c2,0x53647053,0x65726f74,0x65746e49, + 0x64656d72,0x65746169,0x3b317528,0x763b3175,0x003b3466,0x00030005,0x000000bf,0x00000078, + 0x00030005,0x000000c0,0x00000079,0x00040005,0x000000c1,0x756c6176,0x00000065,0x000a0005, + 0x000000c4,0x53786666,0x6f576470,0x72676b72,0x5370756f,0x66667568,0x6142656c,0x65697272, + 0x00002872,0x00090005,0x000000ca,0x45647053,0x57746978,0x676b726f,0x70756f72,0x3b317528, + 0x753b3175,0x00003b31,0x00060005,0x000000c7,0x576d756e,0x476b726f,0x70756f72,0x00000073, + 0x00080005,0x000000c8,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000, + 0x00040005,0x000000c9,0x63696c73,0x00000065,0x000c0005,0x000000d2,0x52647053,0x63756465, + 0x746e4965,0x656d7265,0x74616964,0x75762865,0x75763b32,0x75763b32,0x75763b32,0x00003b32, + 0x00030005,0x000000ce,0x00003069,0x00030005,0x000000cf,0x00003169,0x00030005,0x000000d0, + 0x00003269,0x00030005,0x000000d1,0x00003369,0x000b0005,0x000000da,0x52647053,0x63756465, + 0x616f4c65,0x76283464,0x763b3275,0x763b3275,0x763b3275,0x753b3275,0x00003b31,0x00030005, + 0x000000d5,0x00003069,0x00030005,0x000000d6,0x00003169,0x00030005,0x000000d7,0x00003269, + 0x00030005,0x000000d8,0x00003369,0x00040005,0x000000d9,0x63696c73,0x00000065,0x00080005, + 0x000000df,0x52647053,0x63756465,0x616f4c65,0x76283464,0x753b3275,0x00003b31,0x00040005, + 0x000000dd,0x65736162,0x00000000,0x00040005,0x000000de,0x63696c73,0x00000065,0x000e0005, + 0x000000e6,0x52647053,0x63756465,0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x75762834, + 0x75763b32,0x75763b32,0x75763b32,0x31753b32,0x0000003b,0x00030005,0x000000e1,0x00003069, + 0x00030005,0x000000e2,0x00003169,0x00030005,0x000000e3,0x00003269,0x00030005,0x000000e4, + 0x00003369,0x00040005,0x000000e5,0x63696c73,0x00000065,0x000b0005,0x000000ea,0x52647053, + 0x63756465,0x616f4c65,0x756f5364,0x49656372,0x6567616d,0x32757628,0x3b31753b,0x00000000, + 0x00040005,0x000000e8,0x65736162,0x00000000,0x00040005,0x000000e9,0x63696c73,0x00000065, + 0x000e0005,0x000000f3,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x444c5f31, + 0x31752853,0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x0000003b,0x00030005,0x000000ed, + 0x00000078,0x00030005,0x000000ee,0x00000079,0x00050005,0x000000ef,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x000000f0,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00030005,0x000000f1,0x0070696d,0x00040005,0x000000f2,0x63696c73,0x00000065, + 0x000d0005,0x000000fb,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f305f73,0x31752831, + 0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x0000003b,0x00030005,0x000000f5,0x00000078, + 0x00030005,0x000000f6,0x00000079,0x00050005,0x000000f7,0x6b726f77,0x756f7247,0x00444970, + 0x00080005,0x000000f8,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000, + 0x00030005,0x000000f9,0x0070696d,0x00040005,0x000000fa,0x63696c73,0x00000065,0x000c0005, + 0x00000103,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7528325f,0x31753b31,0x3275763b, + 0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x000000fd,0x00000078,0x00030005,0x000000fe, + 0x00000079,0x00050005,0x000000ff,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000100, + 0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005,0x00000101, + 0x0070696d,0x00040005,0x00000102,0x63696c73,0x00000065,0x000c0005,0x0000010b,0x44647053, + 0x736e776f,0x6c706d61,0x70694d65,0x7528335f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175, + 0x00003b31,0x00030005,0x00000105,0x00000078,0x00030005,0x00000106,0x00000079,0x00050005, + 0x00000107,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000108,0x61636f6c,0x766e496c, + 0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00030005,0x00000109,0x0070696d,0x00040005, + 0x0000010a,0x63696c73,0x00000065,0x000c0005,0x00000113,0x44647053,0x736e776f,0x6c706d61, + 0x70694d65,0x7528345f,0x31753b31,0x3275763b,0x3b31753b,0x753b3175,0x00003b31,0x00030005, + 0x0000010d,0x00000078,0x00030005,0x0000010e,0x00000079,0x00050005,0x0000010f,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x00000110,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00030005,0x00000111,0x0070696d,0x00040005,0x00000112,0x63696c73, + 0x00000065,0x000b0005,0x0000011a,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x7628355f, + 0x753b3275,0x31753b31,0x3b31753b,0x00000000,0x00050005,0x00000116,0x6b726f77,0x756f7247, + 0x00444970,0x00080005,0x00000117,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69,0x7865646e, + 0x00000000,0x00030005,0x00000118,0x0070696d,0x00040005,0x00000119,0x63696c73,0x00000065, + 0x000b0005,0x00000121,0x44647053,0x736e776f,0x6c706d61,0x70694d65,0x5f365f73,0x31752837, + 0x3b31753b,0x753b3175,0x00003b31,0x00030005,0x0000011d,0x00000078,0x00030005,0x0000011e, + 0x00000079,0x00040005,0x0000011f,0x7370696d,0x00000000,0x00040005,0x00000120,0x63696c73, + 0x00000065,0x000e0005,0x0000012b,0x44647053,0x736e776f,0x6c706d61,0x78654e65,0x756f4674, + 0x31752872,0x3b31753b,0x3b327576,0x753b3175,0x31753b31,0x3b31753b,0x00000000,0x00030005, + 0x00000124,0x00000078,0x00030005,0x00000125,0x00000079,0x00050005,0x00000126,0x6b726f77, + 0x756f7247,0x00444970,0x00080005,0x00000127,0x61636f6c,0x766e496c,0x7461636f,0x496e6f69, + 0x7865646e,0x00000000,0x00040005,0x00000128,0x65736162,0x0070694d,0x00040005,0x00000129, + 0x7370696d,0x00000000,0x00040005,0x0000012a,0x63696c73,0x00000065,0x000a0005,0x00000133, + 0x44647053,0x736e776f,0x6c706d61,0x75762865,0x31753b32,0x3b31753b,0x753b3175,0x00003b31, + 0x00050005,0x0000012e,0x6b726f77,0x756f7247,0x00444970,0x00080005,0x0000012f,0x61636f6c, + 0x766e496c,0x7461636f,0x496e6f69,0x7865646e,0x00000000,0x00040005,0x00000130,0x7370696d, + 0x00000000,0x00060005,0x00000131,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005, + 0x00000132,0x63696c73,0x00000065,0x000b0005,0x0000013c,0x44647053,0x736e776f,0x6c706d61, + 0x75762865,0x31753b32,0x3b31753b,0x753b3175,0x75763b31,0x00003b32,0x00050005,0x00000136, + 0x6b726f77,0x756f7247,0x00444970,0x00080005,0x00000137,0x61636f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x7865646e,0x00000000,0x00040005,0x00000138,0x7370696d,0x00000000,0x00060005, + 0x00000139,0x576d756e,0x476b726f,0x70756f72,0x00000073,0x00040005,0x0000013a,0x63696c73, + 0x00000065,0x00060005,0x0000013b,0x6b726f77,0x756f7247,0x66664f70,0x00746573,0x000b0005, + 0x00000143,0x706d6f43,0x53657475,0x69646168,0x6843676e,0x65676e61,0x61727950,0x2864696d, + 0x3b337576,0x003b3175,0x00050005,0x00000141,0x6b726f57,0x756f7247,0x00644970,0x00070005, + 0x00000142,0x61636f4c,0x7268546c,0x49646165,0x7865646e,0x00000000,0x00040005,0x00000170, + 0x61726170,0x0000006d,0x00040005,0x00000172,0x61726170,0x0000006d,0x00040005,0x00000173, + 0x61726170,0x0000006d,0x00040005,0x00000176,0x61726170,0x0000006d,0x00040005,0x00000177, + 0x61726170,0x0000006d,0x00040005,0x00000179,0x61726170,0x0000006d,0x00040005,0x0000017b, + 0x61726170,0x0000006d,0x00040005,0x0000017d,0x61726170,0x0000006d,0x00040005,0x0000017e, + 0x61726170,0x0000006d,0x00040005,0x00000180,0x61726170,0x0000006d,0x00040005,0x00000182, + 0x61726170,0x0000006d,0x00040005,0x00000183,0x61726170,0x0000006d,0x00040005,0x00000185, + 0x61726170,0x0000006d,0x00040005,0x00000186,0x61726170,0x0000006d,0x00040005,0x00000187, + 0x61726170,0x0000006d,0x00070005,0x0000018c,0x53466263,0x50553352,0x4c414353,0x745f5245, + 0x00000000,0x00060006,0x0000018c,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006, + 0x0000018c,0x00000001,0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953, + 0x00000000,0x00070006,0x0000018c,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000, + 0x000a0006,0x0000018c,0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373, + 0x7a695365,0x00000065,0x00070006,0x0000018c,0x00000004,0x78614d69,0x646e6552,0x69537265, + 0x0000657a,0x00070006,0x0000018c,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69, + 0x00080006,0x0000018c,0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874, + 0x00050006,0x0000018c,0x00000007,0x74694a66,0x00726574,0x00090006,0x0000018c,0x00000008, + 0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x0000018c, + 0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x0000018c, + 0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x0000018c, + 0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c, + 0x006e6f69,0x00060006,0x0000018c,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006, + 0x0000018c,0x0000000d,0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068, + 0x00060006,0x0000018c,0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x0000018c, + 0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x0000018c, + 0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000, + 0x00060006,0x0000018c,0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x0000018c, + 0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74,0x00080006,0x0000018c,0x00000013, + 0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c,0x00080006,0x0000018c,0x00000014, + 0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61,0x000a0006,0x0000018c,0x00000015, + 0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006, + 0x0000018c,0x00000016,0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d, + 0x6e6f6974,0x00000000,0x00060005,0x0000018e,0x53466263,0x70553352,0x6c616373,0x00007265, + 0x00040005,0x000001aa,0x50536263,0x00745f44,0x00050006,0x000001aa,0x00000000,0x7370696d, + 0x00000000,0x00070006,0x000001aa,0x00000001,0x576d756e,0x476b726f,0x70756f72,0x00000073, + 0x00070006,0x000001aa,0x00000002,0x6b726f77,0x756f7247,0x66664f70,0x00746573,0x00060006, + 0x000001aa,0x00000003,0x646e6572,0x69537265,0x0000657a,0x00040005,0x000001ac,0x50536263, + 0x00000044,0x00060005,0x000001be,0x75635f72,0x6e657272,0x756c5f74,0x0000616d,0x00060005, + 0x000001c6,0x72705f72,0x6f697665,0x6c5f7375,0x00616d75,0x00090005,0x000001cd,0x69645f72, + 0x6574616c,0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00050005,0x000001d4, + 0x6f707865,0x65727573,0x00000000,0x00070005,0x000001d5,0x6e695f72,0x5f747570,0x6f707865, + 0x65727573,0x00000000,0x00050005,0x000001e9,0x735f7772,0x6d5f6470,0x00307069,0x00050005, + 0x000001f3,0x735f7772,0x6d5f6470,0x00317069,0x00050005,0x000001fd,0x735f7772,0x6d5f6470, + 0x00327069,0x00050005,0x00000207,0x735f7772,0x6d5f6470,0x00337069,0x00050005,0x00000212, + 0x735f7772,0x6d5f6470,0x00347069,0x00050005,0x0000021c,0x735f7772,0x6d5f6470,0x00357069, + 0x00080005,0x00000263,0x735f7772,0x675f6470,0x61626f6c,0x74615f6c,0x63696d6f,0x00000000, + 0x00030005,0x0000026a,0x0000006d,0x00040005,0x0000026b,0x61726170,0x0000006d,0x00040005, + 0x0000026c,0x61726170,0x0000006d,0x00040005,0x00000273,0x61726170,0x0000006d,0x00040005, + 0x00000274,0x61726170,0x0000006d,0x00040005,0x00000293,0x75736572,0x0000746c,0x00040005, + 0x0000029a,0x61726170,0x0000006d,0x00040005,0x0000029d,0x61726170,0x0000006d,0x00040005, + 0x0000029f,0x61726170,0x0000006d,0x00040005,0x000002a0,0x61726170,0x0000006d,0x00040005, + 0x000002a6,0x61726170,0x0000006d,0x00040005,0x000002a9,0x61726170,0x0000006d,0x00040005, + 0x000002ab,0x61726170,0x0000006d,0x00040005,0x000002ac,0x61726170,0x0000006d,0x00050005, + 0x000002b3,0x43647073,0x746e756f,0x00007265,0x00040005,0x000002b4,0x61726170,0x0000006d, + 0x00040005,0x000002bc,0x706d5466,0x00000000,0x00040005,0x000002be,0x61726170,0x0000006d, + 0x00040005,0x000002c1,0x61726170,0x0000006d,0x00040005,0x000002c5,0x61726170,0x0000006d, + 0x00040005,0x000002c8,0x61726170,0x0000006d,0x00040005,0x000002cf,0x706d5466,0x00000000, + 0x00040005,0x000002d1,0x61726170,0x0000006d,0x00040005,0x000002d4,0x61726170,0x0000006d, + 0x00040005,0x000002d8,0x61726170,0x0000006d,0x00040005,0x000002db,0x61726170,0x0000006d, + 0x00040005,0x000002e2,0x706d5466,0x00000000,0x00040005,0x000002e3,0x61726170,0x0000006d, + 0x00040005,0x000002e6,0x61726170,0x0000006d,0x00040005,0x000002ea,0x61726170,0x0000006d, + 0x00040005,0x000002ed,0x61726170,0x0000006d,0x00040005,0x000002f4,0x706d5466,0x00000000, + 0x00040005,0x000002f5,0x61726170,0x0000006d,0x00040005,0x000002f8,0x61726170,0x0000006d, + 0x00040005,0x000002fc,0x61726170,0x0000006d,0x00040005,0x000002ff,0x61726170,0x0000006d, + 0x00040005,0x00000306,0x706d5466,0x00000000,0x00040005,0x00000307,0x61726170,0x0000006d, + 0x00040005,0x0000030a,0x61726170,0x0000006d,0x00040005,0x0000030e,0x61726170,0x0000006d, + 0x00040005,0x00000311,0x61726170,0x0000006d,0x00040005,0x00000318,0x706d5466,0x00000000, + 0x00040005,0x00000319,0x61726170,0x0000006d,0x00040005,0x0000031c,0x61726170,0x0000006d, + 0x00040005,0x00000320,0x61726170,0x0000006d,0x00040005,0x00000323,0x61726170,0x0000006d, + 0x00040005,0x0000032a,0x706d5466,0x00000000,0x00040005,0x0000032b,0x61726170,0x0000006d, + 0x00040005,0x0000032e,0x61726170,0x0000006d,0x00040005,0x00000332,0x61726170,0x0000006d, + 0x00040005,0x00000335,0x61726170,0x0000006d,0x00040005,0x0000033c,0x706d5466,0x00000000, + 0x00040005,0x0000033d,0x61726170,0x0000006d,0x00040005,0x00000340,0x61726170,0x0000006d, + 0x00040005,0x00000344,0x61726170,0x0000006d,0x00040005,0x00000347,0x61726170,0x0000006d, + 0x00040005,0x0000034e,0x706d5466,0x00000000,0x00040005,0x0000034f,0x61726170,0x0000006d, + 0x00040005,0x00000352,0x61726170,0x0000006d,0x00040005,0x00000356,0x61726170,0x0000006d, + 0x00040005,0x00000359,0x61726170,0x0000006d,0x00050005,0x00000360,0x6e694d66,0x66666944, + 0x00000000,0x00030005,0x00000362,0x00000061,0x00030005,0x00000363,0x00000062,0x00040005, + 0x00000364,0x61726170,0x0000006d,0x00040005,0x00000368,0x61726170,0x0000006d,0x00040005, + 0x0000036c,0x78614d66,0x00000000,0x00040005,0x0000036d,0x61726170,0x0000006d,0x00040005, + 0x00000370,0x61726170,0x0000006d,0x00030005,0x00000379,0x00000069,0x00040005,0x00000386, + 0x66694466,0x00000066,0x00050005,0x000003c5,0x4a765566,0x65747469,0x00646572,0x00050005, + 0x000003cc,0x73614269,0x736f5065,0x00000000,0x00060005,0x000003d3,0x6d615369,0x49656c70, + 0x7865646e,0x00000000,0x00050005,0x000003db,0x6d615369,0x50656c70,0x0000736f,0x00040005, + 0x000003e5,0x61726170,0x0000006d,0x00040005,0x000003e7,0x61726170,0x0000006d,0x00050005, + 0x000003e9,0x65646e69,0x6c626178,0x00000065,0x00040005,0x000003ec,0x61726170,0x0000006d, + 0x00040005,0x000003ee,0x74655366,0x00000000,0x00040005,0x000003f0,0x61726170,0x0000006d, + 0x00040005,0x000003f8,0x61726170,0x0000006d,0x00040005,0x000003fb,0x61726170,0x0000006d, + 0x00040005,0x00000400,0x61726170,0x0000006d,0x00040005,0x00000403,0x61726170,0x0000006d, + 0x00050005,0x0000040b,0x4a765566,0x65747469,0x00646572,0x00060005,0x00000412,0x70655266, + 0x656a6f72,0x64657463,0x00007655,0x00040005,0x00000417,0x61746164,0x00000000,0x00040005, + 0x00000418,0x61726170,0x0000006d,0x00050005,0x00000421,0x73614269,0x736f5065,0x00000000, + 0x00060005,0x00000428,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00050005,0x00000430, + 0x6d615369,0x50656c70,0x0000736f,0x00040005,0x00000433,0x61726170,0x0000006d,0x00040005, + 0x00000435,0x61726170,0x0000006d,0x00050005,0x00000436,0x65646e69,0x6c626178,0x00000065, + 0x00040005,0x00000439,0x61726170,0x0000006d,0x00040005,0x0000043c,0x61726170,0x0000006d, + 0x00040005,0x00000446,0x61726170,0x0000006d,0x00040005,0x00000449,0x61726170,0x0000006d, + 0x00040005,0x0000044e,0x61726170,0x0000006d,0x00040005,0x00000451,0x61726170,0x0000006d, + 0x00050005,0x00000459,0x6e694d66,0x66666944,0x00000000,0x00060005,0x0000045a,0x72754366, + 0x746e6572,0x706d6153,0x0073656c,0x00040005,0x0000045b,0x61726170,0x0000006d,0x00060005, + 0x0000045e,0x76657270,0x73756f69,0x61746144,0x00000000,0x00040005,0x0000045f,0x61726170, + 0x0000006d,0x00040005,0x00000461,0x61726170,0x0000006d,0x00040005,0x00000468,0x61726170, + 0x0000006d,0x00040005,0x0000046a,0x61726170,0x0000006d,0x00040005,0x0000046c,0x61726170, + 0x0000006d,0x00060005,0x00000473,0x53785069,0x6c706d61,0x736f5065,0x00000000,0x00040005, + 0x00000477,0x61726170,0x0000006d,0x00040005,0x00000478,0x61726170,0x0000006d,0x00040005, + 0x00000479,0x61726170,0x0000006d,0x00080005,0x0000047b,0x6c694466,0x64657461,0x69746f4d, + 0x65566e6f,0x726f7463,0x00000000,0x00040005,0x0000047c,0x61726170,0x0000006d,0x00030005, + 0x0000047f,0x00765566,0x00090005,0x00000488,0x61635366,0x4164656c,0x6953646e,0x64656e67, + 0x616d754c,0x66666944,0x00000000,0x00040005,0x00000489,0x61726170,0x0000006d,0x00040005, + 0x0000048b,0x61726170,0x0000006d,0x00040005,0x0000048d,0x61726170,0x0000006d,0x00040005, + 0x00000490,0x74754f66,0x00747570,0x00040005,0x000004a2,0x61726170,0x0000006d,0x00040005, + 0x000004a4,0x61726170,0x0000006d,0x00040005,0x000004ba,0x61726170,0x0000006d,0x00040005, + 0x000004bc,0x61726170,0x0000006d,0x00040005,0x000004bf,0x61726170,0x0000006d,0x00070005, + 0x000004c6,0x49647073,0x7265746e,0x6964656d,0x52657461,0x00000000,0x00070005,0x000004cc, + 0x49647073,0x7265746e,0x6964656d,0x47657461,0x00000000,0x00070005,0x000004d1,0x49647073, + 0x7265746e,0x6964656d,0x42657461,0x00000000,0x00070005,0x000004d6,0x49647073,0x7265746e, + 0x6964656d,0x41657461,0x00000000,0x00040005,0x000004f8,0x61726170,0x0000006d,0x00030005, + 0x00000502,0x00003076,0x00040005,0x00000503,0x61726170,0x0000006d,0x00040005,0x00000506, + 0x61726170,0x0000006d,0x00030005,0x0000050a,0x00003176,0x00040005,0x0000050b,0x61726170, + 0x0000006d,0x00040005,0x0000050e,0x61726170,0x0000006d,0x00030005,0x00000512,0x00003276, + 0x00040005,0x00000513,0x61726170,0x0000006d,0x00040005,0x00000516,0x61726170,0x0000006d, + 0x00030005,0x0000051a,0x00003376,0x00040005,0x0000051b,0x61726170,0x0000006d,0x00040005, + 0x0000051e,0x61726170,0x0000006d,0x00040005,0x00000522,0x61726170,0x0000006d,0x00040005, + 0x00000524,0x61726170,0x0000006d,0x00040005,0x00000526,0x61726170,0x0000006d,0x00040005, + 0x00000528,0x61726170,0x0000006d,0x00030005,0x0000052d,0x00003076,0x00040005,0x00000530, + 0x61726170,0x0000006d,0x00040005,0x00000531,0x61726170,0x0000006d,0x00030005,0x00000534, + 0x00003176,0x00040005,0x00000537,0x61726170,0x0000006d,0x00040005,0x00000538,0x61726170, + 0x0000006d,0x00030005,0x0000053b,0x00003276,0x00040005,0x0000053e,0x61726170,0x0000006d, + 0x00040005,0x0000053f,0x61726170,0x0000006d,0x00030005,0x00000542,0x00003376,0x00040005, + 0x00000545,0x61726170,0x0000006d,0x00040005,0x00000546,0x61726170,0x0000006d,0x00040005, + 0x00000549,0x61726170,0x0000006d,0x00040005,0x0000054b,0x61726170,0x0000006d,0x00040005, + 0x0000054d,0x61726170,0x0000006d,0x00040005,0x0000054f,0x61726170,0x0000006d,0x00040005, + 0x00000560,0x61726170,0x0000006d,0x00040005,0x00000561,0x61726170,0x0000006d,0x00040005, + 0x00000562,0x61726170,0x0000006d,0x00040005,0x00000563,0x61726170,0x0000006d,0x00040005, + 0x00000564,0x61726170,0x0000006d,0x00030005,0x00000569,0x00003076,0x00040005,0x0000056d, + 0x61726170,0x0000006d,0x00040005,0x0000056e,0x61726170,0x0000006d,0x00030005,0x00000571, + 0x00003176,0x00040005,0x00000575,0x61726170,0x0000006d,0x00040005,0x00000576,0x61726170, + 0x0000006d,0x00030005,0x00000579,0x00003276,0x00040005,0x0000057d,0x61726170,0x0000006d, + 0x00040005,0x0000057e,0x61726170,0x0000006d,0x00030005,0x00000581,0x00003376,0x00040005, + 0x00000585,0x61726170,0x0000006d,0x00040005,0x00000586,0x61726170,0x0000006d,0x00040005, + 0x00000589,0x61726170,0x0000006d,0x00040005,0x0000058b,0x61726170,0x0000006d,0x00040005, + 0x0000058d,0x61726170,0x0000006d,0x00040005,0x0000058f,0x61726170,0x0000006d,0x00040005, + 0x0000059c,0x61726170,0x0000006d,0x00040005,0x0000059d,0x61726170,0x0000006d,0x00040005, + 0x0000059e,0x61726170,0x0000006d,0x00040005,0x0000059f,0x61726170,0x0000006d,0x00040005, + 0x000005a0,0x61726170,0x0000006d,0x00030005,0x000005a5,0x00786574,0x00030005,0x000005b3, + 0x00786970,0x00030005,0x000005c1,0x00000076,0x00040005,0x000005c4,0x61726170,0x0000006d, + 0x00040005,0x000005c5,0x61726170,0x0000006d,0x00040005,0x000005c9,0x61726170,0x0000006d, + 0x00040005,0x000005cb,0x61726170,0x0000006d,0x00040005,0x000005ce,0x61726170,0x0000006d, + 0x00040005,0x000005cf,0x61726170,0x0000006d,0x00040005,0x000005ec,0x61726170,0x0000006d, + 0x00040005,0x000005ed,0x61726170,0x0000006d,0x00040005,0x000005f1,0x61726170,0x0000006d, + 0x00040005,0x000005f3,0x61726170,0x0000006d,0x00040005,0x000005f6,0x61726170,0x0000006d, + 0x00040005,0x000005f7,0x61726170,0x0000006d,0x00040005,0x00000614,0x61726170,0x0000006d, + 0x00040005,0x00000615,0x61726170,0x0000006d,0x00040005,0x00000619,0x61726170,0x0000006d, + 0x00040005,0x0000061b,0x61726170,0x0000006d,0x00040005,0x0000061e,0x61726170,0x0000006d, + 0x00040005,0x0000061f,0x61726170,0x0000006d,0x00040005,0x0000063e,0x61726170,0x0000006d, + 0x00040005,0x0000063f,0x61726170,0x0000006d,0x00040005,0x00000643,0x61726170,0x0000006d, + 0x00040005,0x00000645,0x61726170,0x0000006d,0x00040005,0x00000648,0x61726170,0x0000006d, + 0x00040005,0x00000649,0x61726170,0x0000006d,0x00030005,0x00000651,0x00000069,0x00040005, + 0x0000065a,0x61726170,0x0000006d,0x00040005,0x0000065c,0x61726170,0x0000006d,0x00040005, + 0x0000065e,0x61726170,0x0000006d,0x00040005,0x00000684,0x61726170,0x0000006d,0x00040005, + 0x00000685,0x61726170,0x0000006d,0x00040005,0x00000686,0x61726170,0x0000006d,0x00040005, + 0x00000687,0x61726170,0x0000006d,0x00040005,0x0000069e,0x61726170,0x0000006d,0x00040005, + 0x0000069f,0x61726170,0x0000006d,0x00040005,0x000006a2,0x61726170,0x0000006d,0x00040005, + 0x000006a3,0x61726170,0x0000006d,0x00040005,0x000006b1,0x61726170,0x0000006d,0x00040005, + 0x000006b2,0x61726170,0x0000006d,0x00040005,0x000006b3,0x61726170,0x0000006d,0x00040005, + 0x000006bb,0x61726170,0x0000006d,0x00040005,0x000006bc,0x61726170,0x0000006d,0x00040005, + 0x000006bd,0x61726170,0x0000006d,0x00040005,0x000006c5,0x61726170,0x0000006d,0x00040005, + 0x000006c6,0x61726170,0x0000006d,0x00040005,0x000006c7,0x61726170,0x0000006d,0x00040005, + 0x000006cf,0x61726170,0x0000006d,0x00040005,0x000006d0,0x61726170,0x0000006d,0x00040005, + 0x000006d1,0x61726170,0x0000006d,0x00040005,0x000006d5,0x61726170,0x0000006d,0x00040005, + 0x000006d7,0x61726170,0x0000006d,0x00040005,0x000006d9,0x61726170,0x0000006d,0x00040005, + 0x000006db,0x61726170,0x0000006d,0x00040005,0x000006dd,0x61726170,0x0000006d,0x00040005, + 0x000006df,0x61726170,0x0000006d,0x00030005,0x000006e6,0x00000076,0x00040005,0x00000703, + 0x61726170,0x0000006d,0x00040005,0x00000704,0x61726170,0x0000006d,0x00040005,0x00000705, + 0x61726170,0x0000006d,0x00040005,0x00000706,0x61726170,0x0000006d,0x00040005,0x00000712, + 0x61726170,0x0000006d,0x00040005,0x00000713,0x61726170,0x0000006d,0x00040005,0x00000715, + 0x61726170,0x0000006d,0x00040005,0x00000717,0x61726170,0x0000006d,0x00040005,0x00000721, + 0x61726170,0x0000006d,0x00040005,0x00000722,0x61726170,0x0000006d,0x00040005,0x00000723, + 0x61726170,0x0000006d,0x00030005,0x0000072a,0x00000076,0x00040005,0x0000074b,0x61726170, + 0x0000006d,0x00040005,0x0000074c,0x61726170,0x0000006d,0x00040005,0x0000074d,0x61726170, + 0x0000006d,0x00040005,0x0000074e,0x61726170,0x0000006d,0x00040005,0x0000075a,0x61726170, + 0x0000006d,0x00040005,0x0000075b,0x61726170,0x0000006d,0x00040005,0x0000075d,0x61726170, + 0x0000006d,0x00040005,0x0000075f,0x61726170,0x0000006d,0x00040005,0x00000768,0x61726170, + 0x0000006d,0x00040005,0x00000769,0x61726170,0x0000006d,0x00040005,0x0000076a,0x61726170, + 0x0000006d,0x00030005,0x00000771,0x00000076,0x00040005,0x0000079e,0x61726170,0x0000006d, + 0x00040005,0x0000079f,0x61726170,0x0000006d,0x00040005,0x000007a0,0x61726170,0x0000006d, + 0x00040005,0x000007a1,0x61726170,0x0000006d,0x00040005,0x000007ad,0x61726170,0x0000006d, + 0x00040005,0x000007ae,0x61726170,0x0000006d,0x00040005,0x000007b0,0x61726170,0x0000006d, + 0x00040005,0x000007b2,0x61726170,0x0000006d,0x00040005,0x000007b9,0x61726170,0x0000006d, + 0x00040005,0x000007ba,0x61726170,0x0000006d,0x00040005,0x000007bb,0x61726170,0x0000006d, + 0x00030005,0x000007c2,0x00000076,0x00040005,0x000007c5,0x61726170,0x0000006d,0x00040005, + 0x000007c6,0x61726170,0x0000006d,0x00040005,0x000007c7,0x61726170,0x0000006d,0x00040005, + 0x000007c8,0x61726170,0x0000006d,0x00040005,0x000007cc,0x61726170,0x0000006d,0x00040005, + 0x000007cd,0x61726170,0x0000006d,0x00040005,0x000007cf,0x61726170,0x0000006d,0x00040005, + 0x000007d1,0x61726170,0x0000006d,0x00030005,0x000007d4,0x00786574,0x00030005,0x000007de, + 0x00786970,0x00030005,0x000007e8,0x00003076,0x00040005,0x000007eb,0x61726170,0x0000006d, + 0x00040005,0x000007ec,0x61726170,0x0000006d,0x00040005,0x000007f0,0x61726170,0x0000006d, + 0x00040005,0x000007f2,0x61726170,0x0000006d,0x00040005,0x000007f4,0x61726170,0x0000006d, + 0x00040005,0x000007f5,0x61726170,0x0000006d,0x00030005,0x0000080a,0x00003176,0x00040005, + 0x0000080d,0x61726170,0x0000006d,0x00040005,0x0000080e,0x61726170,0x0000006d,0x00040005, + 0x00000811,0x61726170,0x0000006d,0x00040005,0x00000813,0x61726170,0x0000006d,0x00040005, + 0x00000815,0x61726170,0x0000006d,0x00040005,0x00000816,0x61726170,0x0000006d,0x00030005, + 0x0000082b,0x00003276,0x00040005,0x0000082e,0x61726170,0x0000006d,0x00040005,0x0000082f, + 0x61726170,0x0000006d,0x00040005,0x00000832,0x61726170,0x0000006d,0x00040005,0x00000834, + 0x61726170,0x0000006d,0x00040005,0x00000836,0x61726170,0x0000006d,0x00040005,0x00000837, + 0x61726170,0x0000006d,0x00030005,0x0000084c,0x00003376,0x00040005,0x0000084f,0x61726170, + 0x0000006d,0x00040005,0x00000850,0x61726170,0x0000006d,0x00040005,0x00000853,0x61726170, + 0x0000006d,0x00040005,0x00000855,0x61726170,0x0000006d,0x00040005,0x00000857,0x61726170, + 0x0000006d,0x00040005,0x00000858,0x61726170,0x0000006d,0x00030005,0x00000861,0x00000076, + 0x00040005,0x00000862,0x61726170,0x0000006d,0x00040005,0x00000864,0x61726170,0x0000006d, + 0x00040005,0x00000866,0x61726170,0x0000006d,0x00040005,0x00000868,0x61726170,0x0000006d, + 0x00040005,0x00000870,0x61726170,0x0000006d,0x00040005,0x00000871,0x61726170,0x0000006d, + 0x00040005,0x00000873,0x61726170,0x0000006d,0x00040005,0x00000874,0x61726170,0x0000006d, + 0x00040005,0x00000877,0x61726170,0x0000006d,0x00040005,0x00000879,0x61726170,0x0000006d, + 0x00040005,0x0000087b,0x61726170,0x0000006d,0x00040005,0x00000885,0x61726170,0x0000006d, + 0x00040005,0x00000887,0x61726170,0x0000006d,0x00040005,0x00000889,0x61726170,0x0000006d, + 0x00040005,0x0000088b,0x61726170,0x0000006d,0x00040005,0x0000088d,0x61726170,0x0000006d, + 0x00040005,0x0000088f,0x61726170,0x0000006d,0x00040005,0x0000089c,0x61726170,0x0000006d, + 0x00040005,0x0000089e,0x61726170,0x0000006d,0x00040005,0x000008a0,0x61726170,0x0000006d, + 0x00040005,0x000008a2,0x61726170,0x0000006d,0x00040005,0x000008a4,0x61726170,0x0000006d, + 0x00040005,0x000008a5,0x61726170,0x0000006d,0x00040005,0x000008b2,0x61726170,0x0000006d, + 0x00040005,0x000008b4,0x61726170,0x0000006d,0x00040005,0x000008b6,0x61726170,0x0000006d, + 0x00040005,0x000008b8,0x61726170,0x0000006d,0x00040005,0x000008ba,0x61726170,0x0000006d, + 0x00040005,0x000008bb,0x61726170,0x0000006d,0x00040005,0x000008c8,0x61726170,0x0000006d, + 0x00040005,0x000008ca,0x61726170,0x0000006d,0x00040005,0x000008cc,0x61726170,0x0000006d, + 0x00040005,0x000008cd,0x61726170,0x0000006d,0x00040005,0x000008d0,0x5f627573,0x00007978, + 0x00040005,0x000008d3,0x61726170,0x0000006d,0x00030005,0x000008d5,0x00000078,0x00030005, + 0x000008de,0x00000079,0x00040005,0x000008e5,0x61726170,0x0000006d,0x00040005,0x000008e7, + 0x61726170,0x0000006d,0x00040005,0x000008e9,0x61726170,0x0000006d,0x00040005,0x000008eb, + 0x61726170,0x0000006d,0x00040005,0x000008ed,0x61726170,0x0000006d,0x00040005,0x000008ef, + 0x61726170,0x0000006d,0x00040005,0x000008f2,0x61726170,0x0000006d,0x00040005,0x000008f4, + 0x61726170,0x0000006d,0x00040005,0x000008f6,0x61726170,0x0000006d,0x00040005,0x000008f8, + 0x61726170,0x0000006d,0x00040005,0x000008fa,0x61726170,0x0000006d,0x00040005,0x000008fb, + 0x61726170,0x0000006d,0x00040005,0x000008fd,0x61726170,0x0000006d,0x00040005,0x00000905, + 0x61726170,0x0000006d,0x00040005,0x00000907,0x61726170,0x0000006d,0x00040005,0x00000909, + 0x61726170,0x0000006d,0x00040005,0x0000090f,0x61726170,0x0000006d,0x00040005,0x00000912, + 0x61726170,0x0000006d,0x00040005,0x00000914,0x61726170,0x0000006d,0x00040005,0x00000916, + 0x61726170,0x0000006d,0x00040005,0x00000918,0x61726170,0x0000006d,0x00040005,0x0000091b, + 0x61726170,0x0000006d,0x00040005,0x0000091d,0x61726170,0x0000006d,0x00040005,0x0000091f, + 0x61726170,0x0000006d,0x00040005,0x00000920,0x61726170,0x0000006d,0x00040005,0x00000922, + 0x61726170,0x0000006d,0x00040005,0x00000923,0x61726170,0x0000006d,0x00040005,0x00000925, + 0x61726170,0x0000006d,0x00040005,0x0000092b,0x61726170,0x0000006d,0x00040005,0x0000092c, + 0x61726170,0x0000006d,0x00040005,0x0000092e,0x61726170,0x0000006d,0x00040005,0x00000930, + 0x61726170,0x0000006d,0x00040005,0x00000932,0x61726170,0x0000006d,0x00040005,0x0000093d, + 0x61726170,0x0000006d,0x00040005,0x0000093e,0x61726170,0x0000006d,0x00040005,0x0000093f, + 0x61726170,0x0000006d,0x00040005,0x00000940,0x61726170,0x0000006d,0x00040005,0x00000941, + 0x61726170,0x0000006d,0x00040005,0x00000942,0x61726170,0x0000006d,0x00060005,0x00000945, + 0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00080005,0x00000947,0x4c5f6c67,0x6c61636f, + 0x6f766e49,0x69746163,0x6e496e6f,0x00786564,0x00040005,0x00000948,0x61726170,0x0000006d, + 0x00040005,0x0000094a,0x61726170,0x0000006d,0x00060005,0x00000950,0x6f505f73,0x43746e69, + 0x706d616c,0x00000000,0x00060005,0x00000951,0x694c5f73,0x7261656e,0x6d616c43,0x00000070, + 0x00030047,0x0000018c,0x00000002,0x00050048,0x0000018c,0x00000000,0x00000023,0x00000000, + 0x00050048,0x0000018c,0x00000001,0x00000023,0x00000008,0x00050048,0x0000018c,0x00000002, + 0x00000023,0x00000010,0x00050048,0x0000018c,0x00000003,0x00000023,0x00000018,0x00050048, + 0x0000018c,0x00000004,0x00000023,0x00000020,0x00050048,0x0000018c,0x00000005,0x00000023, + 0x00000028,0x00050048,0x0000018c,0x00000006,0x00000023,0x00000030,0x00050048,0x0000018c, + 0x00000007,0x00000023,0x00000040,0x00050048,0x0000018c,0x00000008,0x00000023,0x00000048, + 0x00050048,0x0000018c,0x00000009,0x00000023,0x00000050,0x00050048,0x0000018c,0x0000000a, + 0x00000023,0x00000058,0x00050048,0x0000018c,0x0000000b,0x00000023,0x00000060,0x00050048, + 0x0000018c,0x0000000c,0x00000023,0x00000068,0x00050048,0x0000018c,0x0000000d,0x00000023, + 0x0000006c,0x00050048,0x0000018c,0x0000000e,0x00000023,0x00000070,0x00050048,0x0000018c, + 0x0000000f,0x00000023,0x00000074,0x00050048,0x0000018c,0x00000010,0x00000023,0x00000078, + 0x00050048,0x0000018c,0x00000011,0x00000023,0x0000007c,0x00050048,0x0000018c,0x00000012, + 0x00000023,0x00000080,0x00050048,0x0000018c,0x00000013,0x00000023,0x00000084,0x00050048, + 0x0000018c,0x00000014,0x00000023,0x00000088,0x00050048,0x0000018c,0x00000015,0x00000023, + 0x0000008c,0x00050048,0x0000018c,0x00000016,0x00000023,0x00000090,0x00040047,0x0000018e, + 0x00000021,0x0000000b,0x00040047,0x0000018e,0x00000022,0x00000000,0x00030047,0x000001aa, + 0x00000002,0x00050048,0x000001aa,0x00000000,0x00000023,0x00000000,0x00050048,0x000001aa, + 0x00000001,0x00000023,0x00000004,0x00050048,0x000001aa,0x00000002,0x00000023,0x00000008, + 0x00050048,0x000001aa,0x00000003,0x00000023,0x00000010,0x00040047,0x000001ac,0x00000021, + 0x0000000c,0x00040047,0x000001ac,0x00000022,0x00000000,0x00040047,0x000001be,0x00000021, + 0x00000000,0x00040047,0x000001be,0x00000022,0x00000000,0x00040047,0x000001c6,0x00000021, + 0x00000001,0x00040047,0x000001c6,0x00000022,0x00000000,0x00040047,0x000001cd,0x00000021, + 0x00000002,0x00040047,0x000001cd,0x00000022,0x00000000,0x00040047,0x000001d5,0x00000021, + 0x00000003,0x00040047,0x000001d5,0x00000022,0x00000000,0x00040047,0x000001e9,0x00000021, + 0x00000005,0x00040047,0x000001e9,0x00000022,0x00000000,0x00040047,0x000001f3,0x00000021, + 0x00000006,0x00040047,0x000001f3,0x00000022,0x00000000,0x00040047,0x000001fd,0x00000021, + 0x00000007,0x00040047,0x000001fd,0x00000022,0x00000000,0x00040047,0x00000207,0x00000021, + 0x00000008,0x00040047,0x00000207,0x00000022,0x00000000,0x00040047,0x00000212,0x00000021, + 0x00000009,0x00040047,0x00000212,0x00000022,0x00000000,0x00030047,0x0000021c,0x00000017, + 0x00040047,0x0000021c,0x00000021,0x0000000a,0x00040047,0x0000021c,0x00000022,0x00000000, + 0x00030047,0x00000263,0x00000017,0x00040047,0x00000263,0x00000021,0x00000004,0x00040047, + 0x00000263,0x00000022,0x00000000,0x00040047,0x00000945,0x0000000b,0x0000001a,0x00040047, + 0x00000947,0x0000000b,0x0000001d,0x00040047,0x00000950,0x00000021,0x000003e8,0x00040047, + 0x00000950,0x00000022,0x00000000,0x00040047,0x00000951,0x00000021,0x000003e9,0x00040047, + 0x00000951,0x00000022,0x00000000,0x00040047,0x0000095a,0x0000000b,0x00000019,0x00020013, + 0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000, + 0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008,0x00000006,0x00000007, + 0x00000007,0x00000007,0x00030016,0x00000013,0x00000020,0x00040020,0x00000014,0x00000007, + 0x00000013,0x00050021,0x00000015,0x00000013,0x00000014,0x00000014,0x00040015,0x0000001a, + 0x00000020,0x00000001,0x00040020,0x0000001b,0x00000007,0x0000001a,0x00050021,0x0000001c, + 0x0000001a,0x0000001b,0x0000001b,0x00040017,0x0000002d,0x00000006,0x00000002,0x00040021, + 0x0000002e,0x0000002d,0x00000007,0x00040017,0x00000032,0x0000001a,0x00000002,0x00030021, + 0x00000033,0x00000032,0x00040017,0x00000038,0x00000013,0x00000002,0x00030021,0x00000039, + 0x00000038,0x00030021,0x0000003e,0x00000013,0x00030021,0x00000041,0x00000006,0x00030021, + 0x00000046,0x0000002d,0x00040020,0x00000049,0x00000007,0x00000032,0x00040021,0x0000004a, + 0x00000013,0x00000049,0x00040021,0x00000051,0x00000038,0x00000049,0x00050021,0x00000057, + 0x00000038,0x00000049,0x00000007,0x00040020,0x0000005c,0x00000007,0x00000038,0x00060021, + 0x0000005d,0x00000002,0x00000049,0x0000005c,0x00000007,0x00040021,0x00000063,0x00000002, + 0x00000007,0x00050021,0x00000069,0x00000013,0x00000013,0x00000013,0x00020014,0x0000006e, + 0x00040021,0x0000006f,0x0000006e,0x0000005c,0x00060021,0x00000073,0x00000032,0x00000049, + 0x00000049,0x00000049,0x0004002b,0x00000006,0x00000081,0x00000005,0x0004001c,0x00000082, + 0x00000013,0x00000081,0x0003001e,0x00000083,0x00000082,0x00040020,0x00000084,0x00000007, + 0x00000083,0x00040021,0x00000085,0x00000002,0x00000084,0x00060021,0x00000089,0x00000013, + 0x00000049,0x00000084,0x00000084,0x00040021,0x0000008f,0x00000083,0x0000005c,0x0004001e, + 0x00000093,0x00000083,0x0000006e,0x00050021,0x00000094,0x00000093,0x0000005c,0x0000005c, + 0x00060021,0x00000099,0x00000013,0x00000049,0x0000005c,0x0000005c,0x00040017,0x0000009f, + 0x00000013,0x00000004,0x00050021,0x000000a0,0x0000009f,0x0000005c,0x00000007,0x00050021, + 0x000000a5,0x0000009f,0x00000049,0x00000007,0x00040020,0x000000aa,0x00000007,0x0000009f, + 0x00070021,0x000000ab,0x0000009f,0x000000aa,0x000000aa,0x000000aa,0x000000aa,0x00070021, + 0x000000b2,0x00000002,0x00000049,0x000000aa,0x00000007,0x00000007,0x00050021,0x000000b9, + 0x0000009f,0x00000007,0x00000007,0x00060021,0x000000be,0x00000002,0x00000007,0x00000007, + 0x000000aa,0x00060021,0x000000c6,0x0000006e,0x00000007,0x00000007,0x00000007,0x00040020, + 0x000000cc,0x00000007,0x0000002d,0x00070021,0x000000cd,0x0000009f,0x000000cc,0x000000cc, + 0x000000cc,0x000000cc,0x00080021,0x000000d4,0x0000009f,0x000000cc,0x000000cc,0x000000cc, + 0x000000cc,0x00000007,0x00050021,0x000000dc,0x0000009f,0x000000cc,0x00000007,0x00090021, + 0x000000ec,0x00000002,0x00000007,0x00000007,0x000000cc,0x00000007,0x00000007,0x00000007, + 0x00070021,0x00000115,0x00000002,0x000000cc,0x00000007,0x00000007,0x00000007,0x00070021, + 0x0000011c,0x00000002,0x00000007,0x00000007,0x00000007,0x00000007,0x000a0021,0x00000123, + 0x00000002,0x00000007,0x00000007,0x000000cc,0x00000007,0x00000007,0x00000007,0x00000007, + 0x00080021,0x0000012d,0x00000002,0x000000cc,0x00000007,0x00000007,0x00000007,0x00000007, + 0x00090021,0x00000135,0x00000002,0x000000cc,0x00000007,0x00000007,0x00000007,0x00000007, + 0x000000cc,0x00040017,0x0000013e,0x00000006,0x00000003,0x00040020,0x0000013f,0x00000007, + 0x0000013e,0x00050021,0x00000140,0x00000002,0x0000013f,0x00000007,0x0004002b,0x0000001a, + 0x0000014f,0x00000000,0x0004002b,0x00000006,0x0000016e,0x00000002,0x0004002b,0x00000006, + 0x0000016f,0x00000003,0x0004002b,0x00000006,0x00000175,0x00000001,0x0019001e,0x0000018c, + 0x00000032,0x00000032,0x00000032,0x00000032,0x00000032,0x00000032,0x0000009f,0x00000038, + 0x00000038,0x00000038,0x00000038,0x00000038,0x00000013,0x00000013,0x00000013,0x00000013, + 0x00000013,0x00000013,0x00000013,0x00000013,0x00000013,0x00000013,0x00000013,0x00040020, + 0x0000018d,0x00000002,0x0000018c,0x0004003b,0x0000018d,0x0000018e,0x00000002,0x00040020, + 0x0000018f,0x00000002,0x00000032,0x0004002b,0x0000001a,0x00000194,0x00000001,0x0004002b, + 0x0000001a,0x00000199,0x00000007,0x00040020,0x0000019a,0x00000002,0x00000038,0x0004002b, + 0x0000001a,0x0000019f,0x00000008,0x0004002b,0x0000001a,0x000001a4,0x0000000f,0x00040020, + 0x000001a5,0x00000002,0x00000013,0x0006001e,0x000001aa,0x00000006,0x00000006,0x0000002d, + 0x0000002d,0x00040020,0x000001ab,0x00000002,0x000001aa,0x0004003b,0x000001ab,0x000001ac, + 0x00000002,0x00040020,0x000001ad,0x00000002,0x00000006,0x0004002b,0x0000001a,0x000001b6, + 0x00000002,0x00040020,0x000001b7,0x00000002,0x0000002d,0x00090019,0x000001bc,0x00000013, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001bd, + 0x00000000,0x000001bc,0x0004003b,0x000001bd,0x000001be,0x00000000,0x0004002b,0x00000006, + 0x000001c2,0x00000000,0x0004003b,0x000001bd,0x000001c6,0x00000000,0x0004003b,0x000001bd, + 0x000001cd,0x00000000,0x0004003b,0x000001bd,0x000001d5,0x00000000,0x0005002c,0x00000032, + 0x000001d7,0x0000014f,0x0000014f,0x0004002b,0x00000013,0x000001db,0x00000000,0x0004002b, + 0x00000013,0x000001df,0x3f800000,0x00090019,0x000001e7,0x00000013,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000007,0x00040020,0x000001e8,0x00000000,0x000001e7, + 0x0004003b,0x000001e8,0x000001e9,0x00000000,0x0004003b,0x000001e8,0x000001f3,0x00000000, + 0x0004003b,0x000001e8,0x000001fd,0x00000000,0x0004003b,0x000001e8,0x00000207,0x00000000, + 0x0004002b,0x00000006,0x0000020e,0x00000004,0x0004003b,0x000001e8,0x00000212,0x00000000, + 0x0004003b,0x000001e8,0x0000021c,0x00000000,0x0005002c,0x00000038,0x00000222,0x000001db, + 0x000001db,0x00090019,0x00000261,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000021,0x00040020,0x00000262,0x00000000,0x00000261,0x0004003b,0x00000262, + 0x00000263,0x00000000,0x00040020,0x00000264,0x0000000b,0x00000006,0x00040017,0x00000268, + 0x00000006,0x00000004,0x0007002c,0x00000268,0x00000269,0x000001c2,0x000001c2,0x000001c2, + 0x000001c2,0x00040020,0x000002b2,0x00000004,0x00000006,0x0004003b,0x000002b2,0x000002b3, + 0x00000004,0x0004002b,0x0000001a,0x000002bd,0x00000003,0x0004002b,0x0000001a,0x000002d0, + 0x00000004,0x0004002b,0x00000013,0x00000361,0x477fdf00,0x0004002b,0x00000013,0x00000375, + 0x00800000,0x0004002b,0x0000001a,0x00000380,0x00000005,0x0004002b,0x00000013,0x00000383, + 0x477fe000,0x0004002b,0x00000013,0x00000390,0x387fda40,0x0004001c,0x000003dc,0x00000032, + 0x00000081,0x0004002b,0x0000001a,0x000003dd,0xffffffff,0x0005002c,0x00000032,0x000003de, + 0x000003dd,0x0000014f,0x0005002c,0x00000032,0x000003df,0x00000194,0x0000014f,0x0005002c, + 0x00000032,0x000003e0,0x0000014f,0x000003dd,0x0005002c,0x00000032,0x000003e1,0x0000014f, + 0x00000194,0x0008002c,0x000003dc,0x000003e2,0x000001d7,0x000003de,0x000003df,0x000003e0, + 0x000003e1,0x00040020,0x000003e8,0x00000007,0x000003dc,0x00040020,0x00000416,0x00000007, + 0x00000093,0x00040020,0x0000041b,0x00000007,0x0000006e,0x0004002b,0x00000013,0x00000482, + 0x3f000000,0x0007002c,0x0000009f,0x00000491,0x000001db,0x000001db,0x000001db,0x000001db, + 0x0004002b,0x00000013,0x000004b2,0x3e800000,0x0004002b,0x00000006,0x000004c2,0x00000010, + 0x0004001c,0x000004c3,0x00000013,0x000004c2,0x0004001c,0x000004c4,0x000004c3,0x000004c2, + 0x00040020,0x000004c5,0x00000004,0x000004c4,0x0004003b,0x000004c5,0x000004c6,0x00000004, + 0x00040020,0x000004c9,0x00000004,0x00000013,0x0004003b,0x000004c5,0x000004cc,0x00000004, + 0x0004003b,0x000004c5,0x000004d1,0x00000004,0x0004003b,0x000004c5,0x000004d6,0x00000004, + 0x0004002b,0x00000006,0x000004f2,0x00000d48,0x0004002b,0x00000006,0x000004f3,0x00000108, + 0x0005002c,0x0000002d,0x00000555,0x000001c2,0x000001c2,0x0005002c,0x0000002d,0x00000558, + 0x000001c2,0x00000175,0x0005002c,0x0000002d,0x0000055b,0x00000175,0x000001c2,0x0005002c, + 0x0000002d,0x0000055e,0x00000175,0x00000175,0x0004002b,0x00000006,0x000005a7,0x00000040, + 0x0004002b,0x00000006,0x000005b5,0x00000020,0x0004001c,0x000005bf,0x0000009f,0x0000020e, + 0x00040020,0x000005c0,0x00000007,0x000005bf,0x0004002b,0x00000006,0x00000691,0x00000008, + 0x0005002c,0x0000002d,0x000007c3,0x0000016e,0x000001c2,0x0005002c,0x0000002d,0x000007c4, + 0x0000016f,0x000001c2,0x0004002b,0x00000006,0x000007ef,0x00000006,0x0004002b,0x00000006, + 0x0000085c,0x00000007,0x0004002b,0x0000001a,0x000008d9,0x00000006,0x00040020,0x00000944, + 0x00000001,0x0000013e,0x0004003b,0x00000944,0x00000945,0x00000001,0x00040020,0x00000946, + 0x00000001,0x00000006,0x0004003b,0x00000946,0x00000947,0x00000001,0x0004002b,0x00000013, + 0x0000094d,0x37801002,0x0002001a,0x0000094e,0x00040020,0x0000094f,0x00000000,0x0000094e, + 0x0004003b,0x0000094f,0x00000950,0x00000000,0x0004003b,0x0000094f,0x00000951,0x00000000, + 0x0004002b,0x00000013,0x00000952,0x7f7fffff,0x0004002b,0x00000013,0x00000953,0x3a1fe868, + 0x0004002b,0x00000013,0x00000954,0x3d800000,0x0004002b,0x00000013,0x00000955,0x3d3d70a4, + 0x0004002b,0x00000013,0x00000956,0x3e400000,0x0004002b,0x00000013,0x00000957,0x40000000, + 0x0004002b,0x00000013,0x00000958,0x461c4000,0x0004002b,0x00000006,0x00000959,0x00000100, + 0x0006002c,0x0000013e,0x0000095a,0x00000959,0x00000175,0x00000175,0x00050036,0x00000002, + 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000013f,0x00000948, + 0x00000007,0x0004003b,0x00000007,0x0000094a,0x00000007,0x0004003d,0x0000013e,0x00000949, + 0x00000945,0x0003003e,0x00000948,0x00000949,0x0004003d,0x00000006,0x0000094b,0x00000947, + 0x0003003e,0x0000094a,0x0000094b,0x00060039,0x00000002,0x0000094c,0x00000143,0x00000948, + 0x0000094a,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008, + 0x00030037,0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007, + 0x0000000b,0x000200f8,0x0000000d,0x0004003d,0x00000006,0x00000145,0x00000009,0x0004003d, + 0x00000006,0x00000146,0x0000000a,0x0004007c,0x0000001a,0x00000147,0x00000146,0x0004003d, + 0x00000006,0x00000148,0x0000000b,0x0004007c,0x0000001a,0x00000149,0x00000148,0x000600cb, + 0x00000006,0x0000014a,0x00000145,0x00000147,0x00000149,0x000200fe,0x0000014a,0x00010038, + 0x00050036,0x00000006,0x00000011,0x00000000,0x00000008,0x00030037,0x00000007,0x0000000e, + 0x00030037,0x00000007,0x0000000f,0x00030037,0x00000007,0x00000010,0x000200f8,0x00000012, + 0x0004003d,0x00000006,0x0000014d,0x0000000e,0x0004003d,0x00000006,0x0000014e,0x0000000f, + 0x0004003d,0x00000006,0x00000150,0x00000010,0x0004007c,0x0000001a,0x00000151,0x00000150, + 0x000700c9,0x00000006,0x00000152,0x0000014d,0x0000014e,0x0000014f,0x00000151,0x000200fe, + 0x00000152,0x00010038,0x00050036,0x00000013,0x00000018,0x00000000,0x00000015,0x00030037, + 0x00000014,0x00000016,0x00030037,0x00000014,0x00000017,0x000200f8,0x00000019,0x0004003d, + 0x00000013,0x00000155,0x00000016,0x0004003d,0x00000013,0x00000156,0x00000017,0x0007000c, + 0x00000013,0x00000157,0x00000001,0x00000025,0x00000155,0x00000156,0x000200fe,0x00000157, + 0x00010038,0x00050036,0x0000001a,0x0000001f,0x00000000,0x0000001c,0x00030037,0x0000001b, + 0x0000001d,0x00030037,0x0000001b,0x0000001e,0x000200f8,0x00000020,0x0004003d,0x0000001a, + 0x0000015a,0x0000001d,0x0004003d,0x0000001a,0x0000015b,0x0000001e,0x0007000c,0x0000001a, + 0x0000015c,0x00000001,0x00000027,0x0000015a,0x0000015b,0x000200fe,0x0000015c,0x00010038, + 0x00050036,0x00000013,0x00000023,0x00000000,0x00000015,0x00030037,0x00000014,0x00000021, + 0x00030037,0x00000014,0x00000022,0x000200f8,0x00000024,0x0004003d,0x00000013,0x0000015f, + 0x00000021,0x0004003d,0x00000013,0x00000160,0x00000022,0x0007000c,0x00000013,0x00000161, + 0x00000001,0x00000028,0x0000015f,0x00000160,0x000200fe,0x00000161,0x00010038,0x00050036, + 0x0000001a,0x00000027,0x00000000,0x0000001c,0x00030037,0x0000001b,0x00000025,0x00030037, + 0x0000001b,0x00000026,0x000200f8,0x00000028,0x0004003d,0x0000001a,0x00000164,0x00000025, + 0x0004003d,0x0000001a,0x00000165,0x00000026,0x0007000c,0x0000001a,0x00000166,0x00000001, + 0x0000002a,0x00000164,0x00000165,0x000200fe,0x00000166,0x00010038,0x00050036,0x00000013, + 0x0000002b,0x00000000,0x00000015,0x00030037,0x00000014,0x00000029,0x00030037,0x00000014, + 0x0000002a,0x000200f8,0x0000002c,0x0004003d,0x00000013,0x00000169,0x00000029,0x0004003d, + 0x00000013,0x0000016a,0x0000002a,0x0007000c,0x00000013,0x0000016b,0x00000001,0x0000001a, + 0x00000169,0x0000016a,0x000200fe,0x0000016b,0x00010038,0x00050036,0x0000002d,0x00000030, + 0x00000000,0x0000002e,0x00030037,0x00000007,0x0000002f,0x000200f8,0x00000031,0x0004003b, + 0x00000007,0x00000170,0x00000007,0x0004003b,0x00000007,0x00000172,0x00000007,0x0004003b, + 0x00000007,0x00000173,0x00000007,0x0004003b,0x00000007,0x00000176,0x00000007,0x0004003b, + 0x00000007,0x00000177,0x00000007,0x0004003b,0x00000007,0x00000179,0x00000007,0x0004003b, + 0x00000007,0x0000017b,0x00000007,0x0004003b,0x00000007,0x0000017d,0x00000007,0x0004003b, + 0x00000007,0x0000017e,0x00000007,0x0004003b,0x00000007,0x00000180,0x00000007,0x0004003b, + 0x00000007,0x00000182,0x00000007,0x0004003b,0x00000007,0x00000183,0x00000007,0x0004003b, + 0x00000007,0x00000185,0x00000007,0x0004003b,0x00000007,0x00000186,0x00000007,0x0004003b, + 0x00000007,0x00000187,0x00000007,0x0004003d,0x00000006,0x00000171,0x0000002f,0x0003003e, + 0x00000170,0x00000171,0x0003003e,0x00000172,0x0000016e,0x0003003e,0x00000173,0x0000016f, + 0x00070039,0x00000006,0x00000174,0x0000000c,0x00000170,0x00000172,0x00000173,0x0003003e, + 0x00000176,0x00000174,0x0004003d,0x00000006,0x00000178,0x0000002f,0x0003003e,0x00000177, + 0x00000178,0x0003003e,0x00000179,0x00000175,0x00070039,0x00000006,0x0000017a,0x00000011, + 0x00000176,0x00000177,0x00000179,0x0004003d,0x00000006,0x0000017c,0x0000002f,0x0003003e, + 0x0000017b,0x0000017c,0x0003003e,0x0000017d,0x0000016f,0x0003003e,0x0000017e,0x0000016f, + 0x00070039,0x00000006,0x0000017f,0x0000000c,0x0000017b,0x0000017d,0x0000017e,0x0004003d, + 0x00000006,0x00000181,0x0000002f,0x0003003e,0x00000180,0x00000181,0x0003003e,0x00000182, + 0x00000175,0x0003003e,0x00000183,0x0000016e,0x00070039,0x00000006,0x00000184,0x0000000c, + 0x00000180,0x00000182,0x00000183,0x0003003e,0x00000185,0x0000017f,0x0003003e,0x00000186, + 0x00000184,0x0003003e,0x00000187,0x0000016e,0x00070039,0x00000006,0x00000188,0x00000011, + 0x00000185,0x00000186,0x00000187,0x00050050,0x0000002d,0x00000189,0x0000017a,0x00000188, + 0x000200fe,0x00000189,0x00010038,0x00050036,0x00000032,0x00000034,0x00000000,0x00000033, + 0x000200f8,0x00000035,0x00050041,0x0000018f,0x00000190,0x0000018e,0x0000014f,0x0004003d, + 0x00000032,0x00000191,0x00000190,0x000200fe,0x00000191,0x00010038,0x00050036,0x00000032, + 0x00000036,0x00000000,0x00000033,0x000200f8,0x00000037,0x00050041,0x0000018f,0x00000195, + 0x0000018e,0x00000194,0x0004003d,0x00000032,0x00000196,0x00000195,0x000200fe,0x00000196, + 0x00010038,0x00050036,0x00000038,0x0000003a,0x00000000,0x00000039,0x000200f8,0x0000003b, + 0x00050041,0x0000019a,0x0000019b,0x0000018e,0x00000199,0x0004003d,0x00000038,0x0000019c, + 0x0000019b,0x000200fe,0x0000019c,0x00010038,0x00050036,0x00000038,0x0000003c,0x00000000, + 0x00000039,0x000200f8,0x0000003d,0x00050041,0x0000019a,0x000001a0,0x0000018e,0x0000019f, + 0x0004003d,0x00000038,0x000001a1,0x000001a0,0x000200fe,0x000001a1,0x00010038,0x00050036, + 0x00000013,0x0000003f,0x00000000,0x0000003e,0x000200f8,0x00000040,0x00050041,0x000001a5, + 0x000001a6,0x0000018e,0x000001a4,0x0004003d,0x00000013,0x000001a7,0x000001a6,0x000200fe, + 0x000001a7,0x00010038,0x00050036,0x00000006,0x00000042,0x00000000,0x00000041,0x000200f8, + 0x00000043,0x00050041,0x000001ad,0x000001ae,0x000001ac,0x0000014f,0x0004003d,0x00000006, + 0x000001af,0x000001ae,0x000200fe,0x000001af,0x00010038,0x00050036,0x00000006,0x00000044, + 0x00000000,0x00000041,0x000200f8,0x00000045,0x00050041,0x000001ad,0x000001b2,0x000001ac, + 0x00000194,0x0004003d,0x00000006,0x000001b3,0x000001b2,0x000200fe,0x000001b3,0x00010038, + 0x00050036,0x0000002d,0x00000047,0x00000000,0x00000046,0x000200f8,0x00000048,0x00050041, + 0x000001b7,0x000001b8,0x000001ac,0x000001b6,0x0004003d,0x0000002d,0x000001b9,0x000001b8, + 0x000200fe,0x000001b9,0x00010038,0x00050036,0x00000013,0x0000004c,0x00000000,0x0000004a, + 0x00030037,0x00000049,0x0000004b,0x000200f8,0x0000004d,0x0004003d,0x000001bc,0x000001bf, + 0x000001be,0x0004003d,0x00000032,0x000001c0,0x0000004b,0x0007005f,0x0000009f,0x000001c1, + 0x000001bf,0x000001c0,0x00000002,0x0000014f,0x00050051,0x00000013,0x000001c3,0x000001c1, + 0x00000000,0x000200fe,0x000001c3,0x00010038,0x00050036,0x00000013,0x0000004f,0x00000000, + 0x0000004a,0x00030037,0x00000049,0x0000004e,0x000200f8,0x00000050,0x0004003d,0x000001bc, + 0x000001c7,0x000001c6,0x0004003d,0x00000032,0x000001c8,0x0000004e,0x0007005f,0x0000009f, + 0x000001c9,0x000001c7,0x000001c8,0x00000002,0x0000014f,0x00050051,0x00000013,0x000001ca, + 0x000001c9,0x00000000,0x000200fe,0x000001ca,0x00010038,0x00050036,0x00000038,0x00000053, + 0x00000000,0x00000051,0x00030037,0x00000049,0x00000052,0x000200f8,0x00000054,0x0004003d, + 0x000001bc,0x000001ce,0x000001cd,0x0004003d,0x00000032,0x000001cf,0x00000052,0x0007005f, + 0x0000009f,0x000001d0,0x000001ce,0x000001cf,0x00000002,0x0000014f,0x0007004f,0x00000038, + 0x000001d1,0x000001d0,0x000001d0,0x00000000,0x00000001,0x000200fe,0x000001d1,0x00010038, + 0x00050036,0x00000013,0x00000055,0x00000000,0x0000003e,0x000200f8,0x00000056,0x0004003b, + 0x00000014,0x000001d4,0x00000007,0x0004003d,0x000001bc,0x000001d6,0x000001d5,0x0007005f, + 0x0000009f,0x000001d8,0x000001d6,0x000001d7,0x00000002,0x0000014f,0x00050051,0x00000013, + 0x000001d9,0x000001d8,0x00000000,0x0003003e,0x000001d4,0x000001d9,0x0004003d,0x00000013, + 0x000001da,0x000001d4,0x000500b4,0x0000006e,0x000001dc,0x000001da,0x000001db,0x000300f7, + 0x000001de,0x00000000,0x000400fa,0x000001dc,0x000001dd,0x000001de,0x000200f8,0x000001dd, + 0x0003003e,0x000001d4,0x000001df,0x000200f9,0x000001de,0x000200f8,0x000001de,0x0004003d, + 0x00000013,0x000001e0,0x000001d4,0x000200fe,0x000001e0,0x00010038,0x00050036,0x00000038, + 0x0000005a,0x00000000,0x00000057,0x00030037,0x00000049,0x00000058,0x00030037,0x00000007, + 0x00000059,0x000200f8,0x0000005b,0x0004003d,0x00000006,0x000001e3,0x00000059,0x000500aa, + 0x0000006e,0x000001e4,0x000001e3,0x000001c2,0x000300f7,0x000001e6,0x00000000,0x000400fa, + 0x000001e4,0x000001e5,0x000001e6,0x000200f8,0x000001e5,0x0004003d,0x000001e7,0x000001ea, + 0x000001e9,0x0004003d,0x00000032,0x000001eb,0x00000058,0x00050062,0x0000009f,0x000001ec, + 0x000001ea,0x000001eb,0x0007004f,0x00000038,0x000001ed,0x000001ec,0x000001ec,0x00000000, + 0x00000001,0x000200fe,0x000001ed,0x000200f8,0x000001e6,0x0004003d,0x00000006,0x000001ef, + 0x00000059,0x000500aa,0x0000006e,0x000001f0,0x000001ef,0x00000175,0x000300f7,0x000001f2, + 0x00000000,0x000400fa,0x000001f0,0x000001f1,0x000001f2,0x000200f8,0x000001f1,0x0004003d, + 0x000001e7,0x000001f4,0x000001f3,0x0004003d,0x00000032,0x000001f5,0x00000058,0x00050062, + 0x0000009f,0x000001f6,0x000001f4,0x000001f5,0x0007004f,0x00000038,0x000001f7,0x000001f6, + 0x000001f6,0x00000000,0x00000001,0x000200fe,0x000001f7,0x000200f8,0x000001f2,0x0004003d, + 0x00000006,0x000001f9,0x00000059,0x000500aa,0x0000006e,0x000001fa,0x000001f9,0x0000016e, + 0x000300f7,0x000001fc,0x00000000,0x000400fa,0x000001fa,0x000001fb,0x000001fc,0x000200f8, + 0x000001fb,0x0004003d,0x000001e7,0x000001fe,0x000001fd,0x0004003d,0x00000032,0x000001ff, + 0x00000058,0x00050062,0x0000009f,0x00000200,0x000001fe,0x000001ff,0x0007004f,0x00000038, + 0x00000201,0x00000200,0x00000200,0x00000000,0x00000001,0x000200fe,0x00000201,0x000200f8, + 0x000001fc,0x0004003d,0x00000006,0x00000203,0x00000059,0x000500aa,0x0000006e,0x00000204, + 0x00000203,0x0000016f,0x000300f7,0x00000206,0x00000000,0x000400fa,0x00000204,0x00000205, + 0x00000206,0x000200f8,0x00000205,0x0004003d,0x000001e7,0x00000208,0x00000207,0x0004003d, + 0x00000032,0x00000209,0x00000058,0x00050062,0x0000009f,0x0000020a,0x00000208,0x00000209, + 0x0007004f,0x00000038,0x0000020b,0x0000020a,0x0000020a,0x00000000,0x00000001,0x000200fe, + 0x0000020b,0x000200f8,0x00000206,0x0004003d,0x00000006,0x0000020d,0x00000059,0x000500aa, + 0x0000006e,0x0000020f,0x0000020d,0x0000020e,0x000300f7,0x00000211,0x00000000,0x000400fa, + 0x0000020f,0x00000210,0x00000211,0x000200f8,0x00000210,0x0004003d,0x000001e7,0x00000213, + 0x00000212,0x0004003d,0x00000032,0x00000214,0x00000058,0x00050062,0x0000009f,0x00000215, + 0x00000213,0x00000214,0x0007004f,0x00000038,0x00000216,0x00000215,0x00000215,0x00000000, + 0x00000001,0x000200fe,0x00000216,0x000200f8,0x00000211,0x0004003d,0x00000006,0x00000218, + 0x00000059,0x000500aa,0x0000006e,0x00000219,0x00000218,0x00000081,0x000300f7,0x0000021b, + 0x00000000,0x000400fa,0x00000219,0x0000021a,0x0000021b,0x000200f8,0x0000021a,0x0004003d, + 0x000001e7,0x0000021d,0x0000021c,0x0004003d,0x00000032,0x0000021e,0x00000058,0x00050062, + 0x0000009f,0x0000021f,0x0000021d,0x0000021e,0x0007004f,0x00000038,0x00000220,0x0000021f, + 0x0000021f,0x00000000,0x00000001,0x000200fe,0x00000220,0x000200f8,0x0000021b,0x000200fe, + 0x00000222,0x00010038,0x00050036,0x00000002,0x00000061,0x00000000,0x0000005d,0x00030037, + 0x00000049,0x0000005e,0x00030037,0x0000005c,0x0000005f,0x00030037,0x00000007,0x00000060, + 0x000200f8,0x00000062,0x0004003d,0x00000006,0x00000225,0x00000060,0x000500aa,0x0000006e, + 0x00000226,0x00000225,0x000001c2,0x000300f7,0x00000228,0x00000000,0x000400fa,0x00000226, + 0x00000227,0x00000228,0x000200f8,0x00000227,0x0004003d,0x000001e7,0x00000229,0x000001e9, + 0x0004003d,0x00000032,0x0000022a,0x0000005e,0x0004003d,0x00000038,0x0000022b,0x0000005f, + 0x00050051,0x00000013,0x0000022c,0x0000022b,0x00000000,0x00050051,0x00000013,0x0000022d, + 0x0000022b,0x00000001,0x00070050,0x0000009f,0x0000022e,0x0000022c,0x0000022d,0x000001db, + 0x000001db,0x00040063,0x00000229,0x0000022a,0x0000022e,0x000200f9,0x00000228,0x000200f8, + 0x00000228,0x0004003d,0x00000006,0x0000022f,0x00000060,0x000500aa,0x0000006e,0x00000230, + 0x0000022f,0x00000175,0x000300f7,0x00000232,0x00000000,0x000400fa,0x00000230,0x00000231, + 0x00000232,0x000200f8,0x00000231,0x0004003d,0x000001e7,0x00000233,0x000001f3,0x0004003d, + 0x00000032,0x00000234,0x0000005e,0x0004003d,0x00000038,0x00000235,0x0000005f,0x00050051, + 0x00000013,0x00000236,0x00000235,0x00000000,0x00050051,0x00000013,0x00000237,0x00000235, + 0x00000001,0x00070050,0x0000009f,0x00000238,0x00000236,0x00000237,0x000001db,0x000001db, + 0x00040063,0x00000233,0x00000234,0x00000238,0x000200f9,0x00000232,0x000200f8,0x00000232, + 0x0004003d,0x00000006,0x00000239,0x00000060,0x000500aa,0x0000006e,0x0000023a,0x00000239, + 0x0000016e,0x000300f7,0x0000023c,0x00000000,0x000400fa,0x0000023a,0x0000023b,0x0000023c, + 0x000200f8,0x0000023b,0x0004003d,0x000001e7,0x0000023d,0x000001fd,0x0004003d,0x00000032, + 0x0000023e,0x0000005e,0x0004003d,0x00000038,0x0000023f,0x0000005f,0x00050051,0x00000013, + 0x00000240,0x0000023f,0x00000000,0x00050051,0x00000013,0x00000241,0x0000023f,0x00000001, + 0x00070050,0x0000009f,0x00000242,0x00000240,0x00000241,0x000001db,0x000001db,0x00040063, + 0x0000023d,0x0000023e,0x00000242,0x000200f9,0x0000023c,0x000200f8,0x0000023c,0x0004003d, + 0x00000006,0x00000243,0x00000060,0x000500aa,0x0000006e,0x00000244,0x00000243,0x0000016f, + 0x000300f7,0x00000246,0x00000000,0x000400fa,0x00000244,0x00000245,0x00000246,0x000200f8, + 0x00000245,0x0004003d,0x000001e7,0x00000247,0x00000207,0x0004003d,0x00000032,0x00000248, + 0x0000005e,0x0004003d,0x00000038,0x00000249,0x0000005f,0x00050051,0x00000013,0x0000024a, + 0x00000249,0x00000000,0x00050051,0x00000013,0x0000024b,0x00000249,0x00000001,0x00070050, + 0x0000009f,0x0000024c,0x0000024a,0x0000024b,0x000001db,0x000001db,0x00040063,0x00000247, + 0x00000248,0x0000024c,0x000200f9,0x00000246,0x000200f8,0x00000246,0x0004003d,0x00000006, + 0x0000024d,0x00000060,0x000500aa,0x0000006e,0x0000024e,0x0000024d,0x0000020e,0x000300f7, + 0x00000250,0x00000000,0x000400fa,0x0000024e,0x0000024f,0x00000250,0x000200f8,0x0000024f, + 0x0004003d,0x000001e7,0x00000251,0x00000212,0x0004003d,0x00000032,0x00000252,0x0000005e, + 0x0004003d,0x00000038,0x00000253,0x0000005f,0x00050051,0x00000013,0x00000254,0x00000253, + 0x00000000,0x00050051,0x00000013,0x00000255,0x00000253,0x00000001,0x00070050,0x0000009f, + 0x00000256,0x00000254,0x00000255,0x000001db,0x000001db,0x00040063,0x00000251,0x00000252, + 0x00000256,0x000200f9,0x00000250,0x000200f8,0x00000250,0x0004003d,0x00000006,0x00000257, + 0x00000060,0x000500aa,0x0000006e,0x00000258,0x00000257,0x00000081,0x000300f7,0x0000025a, + 0x00000000,0x000400fa,0x00000258,0x00000259,0x0000025a,0x000200f8,0x00000259,0x0004003d, + 0x000001e7,0x0000025b,0x0000021c,0x0004003d,0x00000032,0x0000025c,0x0000005e,0x0004003d, + 0x00000038,0x0000025d,0x0000005f,0x00050051,0x00000013,0x0000025e,0x0000025d,0x00000000, + 0x00050051,0x00000013,0x0000025f,0x0000025d,0x00000001,0x00070050,0x0000009f,0x00000260, + 0x0000025e,0x0000025f,0x000001db,0x000001db,0x00040063,0x0000025b,0x0000025c,0x00000260, + 0x000200f9,0x0000025a,0x000200f8,0x0000025a,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000065,0x00000000,0x00000063,0x00030037,0x00000007,0x00000064,0x000200f8,0x00000066, + 0x0006003c,0x00000264,0x00000265,0x00000263,0x000001d7,0x000001c2,0x000700ea,0x00000006, + 0x00000266,0x00000265,0x00000175,0x000001c2,0x00000175,0x0003003e,0x00000064,0x00000266, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x00000067,0x00000000,0x00000003,0x000200f8, + 0x00000068,0x0004003d,0x00000261,0x00000267,0x00000263,0x00040063,0x00000267,0x000001d7, + 0x00000269,0x000100fd,0x00010038,0x00050036,0x00000013,0x0000006c,0x00000000,0x00000069, + 0x00030037,0x00000013,0x0000006a,0x00030037,0x00000013,0x0000006b,0x000200f8,0x0000006d, + 0x0004003b,0x00000014,0x0000026a,0x00000007,0x0004003b,0x00000014,0x0000026b,0x00000007, + 0x0004003b,0x00000014,0x0000026c,0x00000007,0x0004003b,0x00000014,0x00000270,0x00000007, + 0x0004003b,0x00000014,0x00000273,0x00000007,0x0004003b,0x00000014,0x00000274,0x00000007, + 0x0003003e,0x0000026b,0x0000006a,0x0003003e,0x0000026c,0x0000006b,0x00060039,0x00000013, + 0x0000026d,0x00000023,0x0000026b,0x0000026c,0x0003003e,0x0000026a,0x0000026d,0x0004003d, + 0x00000013,0x0000026e,0x0000026a,0x000500b7,0x0000006e,0x0000026f,0x0000026e,0x000001db, + 0x000300f7,0x00000272,0x00000000,0x000400fa,0x0000026f,0x00000271,0x00000278,0x000200f8, + 0x00000271,0x0003003e,0x00000273,0x0000006a,0x0003003e,0x00000274,0x0000006b,0x00060039, + 0x00000013,0x00000275,0x00000018,0x00000273,0x00000274,0x0004003d,0x00000013,0x00000276, + 0x0000026a,0x00050088,0x00000013,0x00000277,0x00000275,0x00000276,0x0003003e,0x00000270, + 0x00000277,0x000200f9,0x00000272,0x000200f8,0x00000278,0x0003003e,0x00000270,0x000001db, + 0x000200f9,0x00000272,0x000200f8,0x00000272,0x0004003d,0x00000013,0x00000279,0x00000270, + 0x000200fe,0x00000279,0x00010038,0x00050036,0x0000006e,0x00000071,0x00000000,0x0000006f, + 0x00030037,0x0000005c,0x00000070,0x000200f8,0x00000072,0x00050041,0x00000014,0x0000027c, + 0x00000070,0x000001c2,0x0004003d,0x00000013,0x0000027d,0x0000027c,0x000500be,0x0000006e, + 0x0000027e,0x0000027d,0x000001db,0x000300f7,0x00000280,0x00000000,0x000400fa,0x0000027e, + 0x0000027f,0x00000280,0x000200f8,0x0000027f,0x00050041,0x00000014,0x00000281,0x00000070, + 0x000001c2,0x0004003d,0x00000013,0x00000282,0x00000281,0x000500bc,0x0000006e,0x00000283, + 0x00000282,0x000001df,0x000200f9,0x00000280,0x000200f8,0x00000280,0x000700f5,0x0000006e, + 0x00000284,0x0000027e,0x00000072,0x00000283,0x0000027f,0x000300f7,0x00000286,0x00000000, + 0x000400fa,0x00000284,0x00000285,0x00000286,0x000200f8,0x00000285,0x00050041,0x00000014, + 0x00000287,0x00000070,0x00000175,0x0004003d,0x00000013,0x00000288,0x00000287,0x000500be, + 0x0000006e,0x00000289,0x00000288,0x000001db,0x000300f7,0x0000028b,0x00000000,0x000400fa, + 0x00000289,0x0000028a,0x0000028b,0x000200f8,0x0000028a,0x00050041,0x00000014,0x0000028c, + 0x00000070,0x00000175,0x0004003d,0x00000013,0x0000028d,0x0000028c,0x000500bc,0x0000006e, + 0x0000028e,0x0000028d,0x000001df,0x000200f9,0x0000028b,0x000200f8,0x0000028b,0x000700f5, + 0x0000006e,0x0000028f,0x00000289,0x00000285,0x0000028e,0x0000028a,0x000200f9,0x00000286, + 0x000200f8,0x00000286,0x000700f5,0x0000006e,0x00000290,0x00000284,0x00000280,0x0000028f, + 0x0000028b,0x000200fe,0x00000290,0x00010038,0x00050036,0x00000032,0x00000077,0x00000000, + 0x00000073,0x00030037,0x00000049,0x00000074,0x00030037,0x00000049,0x00000075,0x00030037, + 0x00000049,0x00000076,0x000200f8,0x00000078,0x0004003b,0x00000049,0x00000293,0x00000007, + 0x0004003b,0x0000001b,0x0000029a,0x00000007,0x0004003b,0x0000001b,0x0000029d,0x00000007, + 0x0004003b,0x0000001b,0x0000029f,0x00000007,0x0004003b,0x0000001b,0x000002a0,0x00000007, + 0x0004003b,0x0000001b,0x000002a6,0x00000007,0x0004003b,0x0000001b,0x000002a9,0x00000007, + 0x0004003b,0x0000001b,0x000002ab,0x00000007,0x0004003b,0x0000001b,0x000002ac,0x00000007, + 0x0004003d,0x00000032,0x00000294,0x00000074,0x0004003d,0x00000032,0x00000295,0x00000075, + 0x00050080,0x00000032,0x00000296,0x00000294,0x00000295,0x0003003e,0x00000293,0x00000296, + 0x00050041,0x0000001b,0x00000297,0x00000076,0x000001c2,0x0004003d,0x0000001a,0x00000298, + 0x00000297,0x00050082,0x0000001a,0x00000299,0x00000298,0x00000194,0x00050041,0x0000001b, + 0x0000029b,0x00000293,0x000001c2,0x0004003d,0x0000001a,0x0000029c,0x0000029b,0x0003003e, + 0x0000029a,0x0000029c,0x0003003e,0x0000029d,0x00000299,0x00060039,0x0000001a,0x0000029e, + 0x0000001f,0x0000029a,0x0000029d,0x0003003e,0x0000029f,0x0000014f,0x0003003e,0x000002a0, + 0x0000029e,0x00060039,0x0000001a,0x000002a1,0x00000027,0x0000029f,0x000002a0,0x00050041, + 0x0000001b,0x000002a2,0x00000293,0x000001c2,0x0003003e,0x000002a2,0x000002a1,0x00050041, + 0x0000001b,0x000002a3,0x00000076,0x00000175,0x0004003d,0x0000001a,0x000002a4,0x000002a3, + 0x00050082,0x0000001a,0x000002a5,0x000002a4,0x00000194,0x00050041,0x0000001b,0x000002a7, + 0x00000293,0x00000175,0x0004003d,0x0000001a,0x000002a8,0x000002a7,0x0003003e,0x000002a6, + 0x000002a8,0x0003003e,0x000002a9,0x000002a5,0x00060039,0x0000001a,0x000002aa,0x0000001f, + 0x000002a6,0x000002a9,0x0003003e,0x000002ab,0x0000014f,0x0003003e,0x000002ac,0x000002aa, + 0x00060039,0x0000001a,0x000002ad,0x00000027,0x000002ab,0x000002ac,0x00050041,0x0000001b, + 0x000002ae,0x00000293,0x00000175,0x0003003e,0x000002ae,0x000002ad,0x0004003d,0x00000032, + 0x000002af,0x00000293,0x000200fe,0x000002af,0x00010038,0x00050036,0x00000002,0x0000007a, + 0x00000000,0x00000063,0x00030037,0x00000007,0x00000079,0x000200f8,0x0000007b,0x0004003b, + 0x00000007,0x000002b4,0x00000007,0x0004003d,0x00000006,0x000002b5,0x000002b3,0x0003003e, + 0x000002b4,0x000002b5,0x00050039,0x00000002,0x000002b6,0x00000065,0x000002b4,0x0004003d, + 0x00000006,0x000002b7,0x000002b4,0x0003003e,0x000002b3,0x000002b7,0x000100fd,0x00010038, + 0x00050036,0x00000006,0x0000007c,0x00000000,0x00000041,0x000200f8,0x0000007d,0x0004003d, + 0x00000006,0x000002b8,0x000002b3,0x000200fe,0x000002b8,0x00010038,0x00050036,0x00000002, + 0x0000007f,0x00000000,0x00000063,0x00030037,0x00000007,0x0000007e,0x000200f8,0x00000080, + 0x00040039,0x00000002,0x000002bb,0x00000067,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000087,0x00000000,0x00000085,0x00030037,0x00000084,0x00000086,0x000200f8,0x00000088, + 0x0004003b,0x00000014,0x000002bc,0x00000007,0x0004003b,0x00000014,0x000002be,0x00000007, + 0x0004003b,0x00000014,0x000002c1,0x00000007,0x0004003b,0x00000014,0x000002c5,0x00000007, + 0x0004003b,0x00000014,0x000002c8,0x00000007,0x0004003b,0x00000014,0x000002cf,0x00000007, + 0x0004003b,0x00000014,0x000002d1,0x00000007,0x0004003b,0x00000014,0x000002d4,0x00000007, + 0x0004003b,0x00000014,0x000002d8,0x00000007,0x0004003b,0x00000014,0x000002db,0x00000007, + 0x0004003b,0x00000014,0x000002e2,0x00000007,0x0004003b,0x00000014,0x000002e3,0x00000007, + 0x0004003b,0x00000014,0x000002e6,0x00000007,0x0004003b,0x00000014,0x000002ea,0x00000007, + 0x0004003b,0x00000014,0x000002ed,0x00000007,0x0004003b,0x00000014,0x000002f4,0x00000007, + 0x0004003b,0x00000014,0x000002f5,0x00000007,0x0004003b,0x00000014,0x000002f8,0x00000007, + 0x0004003b,0x00000014,0x000002fc,0x00000007,0x0004003b,0x00000014,0x000002ff,0x00000007, + 0x0004003b,0x00000014,0x00000306,0x00000007,0x0004003b,0x00000014,0x00000307,0x00000007, + 0x0004003b,0x00000014,0x0000030a,0x00000007,0x0004003b,0x00000014,0x0000030e,0x00000007, + 0x0004003b,0x00000014,0x00000311,0x00000007,0x0004003b,0x00000014,0x00000318,0x00000007, + 0x0004003b,0x00000014,0x00000319,0x00000007,0x0004003b,0x00000014,0x0000031c,0x00000007, + 0x0004003b,0x00000014,0x00000320,0x00000007,0x0004003b,0x00000014,0x00000323,0x00000007, + 0x0004003b,0x00000014,0x0000032a,0x00000007,0x0004003b,0x00000014,0x0000032b,0x00000007, + 0x0004003b,0x00000014,0x0000032e,0x00000007,0x0004003b,0x00000014,0x00000332,0x00000007, + 0x0004003b,0x00000014,0x00000335,0x00000007,0x0004003b,0x00000014,0x0000033c,0x00000007, + 0x0004003b,0x00000014,0x0000033d,0x00000007,0x0004003b,0x00000014,0x00000340,0x00000007, + 0x0004003b,0x00000014,0x00000344,0x00000007,0x0004003b,0x00000014,0x00000347,0x00000007, + 0x0004003b,0x00000014,0x0000034e,0x00000007,0x0004003b,0x00000014,0x0000034f,0x00000007, + 0x0004003b,0x00000014,0x00000352,0x00000007,0x0004003b,0x00000014,0x00000356,0x00000007, + 0x0004003b,0x00000014,0x00000359,0x00000007,0x00060041,0x00000014,0x000002bf,0x00000086, + 0x0000014f,0x0000014f,0x0004003d,0x00000013,0x000002c0,0x000002bf,0x0003003e,0x000002be, + 0x000002c0,0x00060041,0x00000014,0x000002c2,0x00000086,0x0000014f,0x000002bd,0x0004003d, + 0x00000013,0x000002c3,0x000002c2,0x0003003e,0x000002c1,0x000002c3,0x00060039,0x00000013, + 0x000002c4,0x00000018,0x000002be,0x000002c1,0x0003003e,0x000002bc,0x000002c4,0x00060041, + 0x00000014,0x000002c6,0x00000086,0x0000014f,0x0000014f,0x0004003d,0x00000013,0x000002c7, + 0x000002c6,0x0003003e,0x000002c5,0x000002c7,0x00060041,0x00000014,0x000002c9,0x00000086, + 0x0000014f,0x000002bd,0x0004003d,0x00000013,0x000002ca,0x000002c9,0x0003003e,0x000002c8, + 0x000002ca,0x00060039,0x00000013,0x000002cb,0x00000023,0x000002c5,0x000002c8,0x00060041, + 0x00000014,0x000002cc,0x00000086,0x0000014f,0x000002bd,0x0003003e,0x000002cc,0x000002cb, + 0x0004003d,0x00000013,0x000002cd,0x000002bc,0x00060041,0x00000014,0x000002ce,0x00000086, + 0x0000014f,0x0000014f,0x0003003e,0x000002ce,0x000002cd,0x00060041,0x00000014,0x000002d2, + 0x00000086,0x0000014f,0x00000194,0x0004003d,0x00000013,0x000002d3,0x000002d2,0x0003003e, + 0x000002d1,0x000002d3,0x00060041,0x00000014,0x000002d5,0x00000086,0x0000014f,0x000002d0, + 0x0004003d,0x00000013,0x000002d6,0x000002d5,0x0003003e,0x000002d4,0x000002d6,0x00060039, + 0x00000013,0x000002d7,0x00000018,0x000002d1,0x000002d4,0x0003003e,0x000002cf,0x000002d7, + 0x00060041,0x00000014,0x000002d9,0x00000086,0x0000014f,0x00000194,0x0004003d,0x00000013, + 0x000002da,0x000002d9,0x0003003e,0x000002d8,0x000002da,0x00060041,0x00000014,0x000002dc, + 0x00000086,0x0000014f,0x000002d0,0x0004003d,0x00000013,0x000002dd,0x000002dc,0x0003003e, + 0x000002db,0x000002dd,0x00060039,0x00000013,0x000002de,0x00000023,0x000002d8,0x000002db, + 0x00060041,0x00000014,0x000002df,0x00000086,0x0000014f,0x000002d0,0x0003003e,0x000002df, + 0x000002de,0x0004003d,0x00000013,0x000002e0,0x000002cf,0x00060041,0x00000014,0x000002e1, + 0x00000086,0x0000014f,0x00000194,0x0003003e,0x000002e1,0x000002e0,0x00060041,0x00000014, + 0x000002e4,0x00000086,0x0000014f,0x0000014f,0x0004003d,0x00000013,0x000002e5,0x000002e4, + 0x0003003e,0x000002e3,0x000002e5,0x00060041,0x00000014,0x000002e7,0x00000086,0x0000014f, + 0x000001b6,0x0004003d,0x00000013,0x000002e8,0x000002e7,0x0003003e,0x000002e6,0x000002e8, + 0x00060039,0x00000013,0x000002e9,0x00000018,0x000002e3,0x000002e6,0x0003003e,0x000002e2, + 0x000002e9,0x00060041,0x00000014,0x000002eb,0x00000086,0x0000014f,0x0000014f,0x0004003d, + 0x00000013,0x000002ec,0x000002eb,0x0003003e,0x000002ea,0x000002ec,0x00060041,0x00000014, + 0x000002ee,0x00000086,0x0000014f,0x000001b6,0x0004003d,0x00000013,0x000002ef,0x000002ee, + 0x0003003e,0x000002ed,0x000002ef,0x00060039,0x00000013,0x000002f0,0x00000023,0x000002ea, + 0x000002ed,0x00060041,0x00000014,0x000002f1,0x00000086,0x0000014f,0x000001b6,0x0003003e, + 0x000002f1,0x000002f0,0x0004003d,0x00000013,0x000002f2,0x000002e2,0x00060041,0x00000014, + 0x000002f3,0x00000086,0x0000014f,0x0000014f,0x0003003e,0x000002f3,0x000002f2,0x00060041, + 0x00000014,0x000002f6,0x00000086,0x0000014f,0x00000194,0x0004003d,0x00000013,0x000002f7, + 0x000002f6,0x0003003e,0x000002f5,0x000002f7,0x00060041,0x00000014,0x000002f9,0x00000086, + 0x0000014f,0x000002bd,0x0004003d,0x00000013,0x000002fa,0x000002f9,0x0003003e,0x000002f8, + 0x000002fa,0x00060039,0x00000013,0x000002fb,0x00000018,0x000002f5,0x000002f8,0x0003003e, + 0x000002f4,0x000002fb,0x00060041,0x00000014,0x000002fd,0x00000086,0x0000014f,0x00000194, + 0x0004003d,0x00000013,0x000002fe,0x000002fd,0x0003003e,0x000002fc,0x000002fe,0x00060041, + 0x00000014,0x00000300,0x00000086,0x0000014f,0x000002bd,0x0004003d,0x00000013,0x00000301, + 0x00000300,0x0003003e,0x000002ff,0x00000301,0x00060039,0x00000013,0x00000302,0x00000023, + 0x000002fc,0x000002ff,0x00060041,0x00000014,0x00000303,0x00000086,0x0000014f,0x000002bd, + 0x0003003e,0x00000303,0x00000302,0x0004003d,0x00000013,0x00000304,0x000002f4,0x00060041, + 0x00000014,0x00000305,0x00000086,0x0000014f,0x00000194,0x0003003e,0x00000305,0x00000304, + 0x00060041,0x00000014,0x00000308,0x00000086,0x0000014f,0x0000014f,0x0004003d,0x00000013, + 0x00000309,0x00000308,0x0003003e,0x00000307,0x00000309,0x00060041,0x00000014,0x0000030b, + 0x00000086,0x0000014f,0x00000194,0x0004003d,0x00000013,0x0000030c,0x0000030b,0x0003003e, + 0x0000030a,0x0000030c,0x00060039,0x00000013,0x0000030d,0x00000018,0x00000307,0x0000030a, + 0x0003003e,0x00000306,0x0000030d,0x00060041,0x00000014,0x0000030f,0x00000086,0x0000014f, + 0x0000014f,0x0004003d,0x00000013,0x00000310,0x0000030f,0x0003003e,0x0000030e,0x00000310, + 0x00060041,0x00000014,0x00000312,0x00000086,0x0000014f,0x00000194,0x0004003d,0x00000013, + 0x00000313,0x00000312,0x0003003e,0x00000311,0x00000313,0x00060039,0x00000013,0x00000314, + 0x00000023,0x0000030e,0x00000311,0x00060041,0x00000014,0x00000315,0x00000086,0x0000014f, + 0x00000194,0x0003003e,0x00000315,0x00000314,0x0004003d,0x00000013,0x00000316,0x00000306, + 0x00060041,0x00000014,0x00000317,0x00000086,0x0000014f,0x0000014f,0x0003003e,0x00000317, + 0x00000316,0x00060041,0x00000014,0x0000031a,0x00000086,0x0000014f,0x000001b6,0x0004003d, + 0x00000013,0x0000031b,0x0000031a,0x0003003e,0x00000319,0x0000031b,0x00060041,0x00000014, + 0x0000031d,0x00000086,0x0000014f,0x000002d0,0x0004003d,0x00000013,0x0000031e,0x0000031d, + 0x0003003e,0x0000031c,0x0000031e,0x00060039,0x00000013,0x0000031f,0x00000018,0x00000319, + 0x0000031c,0x0003003e,0x00000318,0x0000031f,0x00060041,0x00000014,0x00000321,0x00000086, + 0x0000014f,0x000001b6,0x0004003d,0x00000013,0x00000322,0x00000321,0x0003003e,0x00000320, + 0x00000322,0x00060041,0x00000014,0x00000324,0x00000086,0x0000014f,0x000002d0,0x0004003d, + 0x00000013,0x00000325,0x00000324,0x0003003e,0x00000323,0x00000325,0x00060039,0x00000013, + 0x00000326,0x00000023,0x00000320,0x00000323,0x00060041,0x00000014,0x00000327,0x00000086, + 0x0000014f,0x000002d0,0x0003003e,0x00000327,0x00000326,0x0004003d,0x00000013,0x00000328, + 0x00000318,0x00060041,0x00000014,0x00000329,0x00000086,0x0000014f,0x000001b6,0x0003003e, + 0x00000329,0x00000328,0x00060041,0x00000014,0x0000032c,0x00000086,0x0000014f,0x00000194, + 0x0004003d,0x00000013,0x0000032d,0x0000032c,0x0003003e,0x0000032b,0x0000032d,0x00060041, + 0x00000014,0x0000032f,0x00000086,0x0000014f,0x000001b6,0x0004003d,0x00000013,0x00000330, + 0x0000032f,0x0003003e,0x0000032e,0x00000330,0x00060039,0x00000013,0x00000331,0x00000018, + 0x0000032b,0x0000032e,0x0003003e,0x0000032a,0x00000331,0x00060041,0x00000014,0x00000333, + 0x00000086,0x0000014f,0x00000194,0x0004003d,0x00000013,0x00000334,0x00000333,0x0003003e, + 0x00000332,0x00000334,0x00060041,0x00000014,0x00000336,0x00000086,0x0000014f,0x000001b6, + 0x0004003d,0x00000013,0x00000337,0x00000336,0x0003003e,0x00000335,0x00000337,0x00060039, + 0x00000013,0x00000338,0x00000023,0x00000332,0x00000335,0x00060041,0x00000014,0x00000339, + 0x00000086,0x0000014f,0x000001b6,0x0003003e,0x00000339,0x00000338,0x0004003d,0x00000013, + 0x0000033a,0x0000032a,0x00060041,0x00000014,0x0000033b,0x00000086,0x0000014f,0x00000194, + 0x0003003e,0x0000033b,0x0000033a,0x00060041,0x00000014,0x0000033e,0x00000086,0x0000014f, + 0x000002bd,0x0004003d,0x00000013,0x0000033f,0x0000033e,0x0003003e,0x0000033d,0x0000033f, + 0x00060041,0x00000014,0x00000341,0x00000086,0x0000014f,0x000002d0,0x0004003d,0x00000013, + 0x00000342,0x00000341,0x0003003e,0x00000340,0x00000342,0x00060039,0x00000013,0x00000343, + 0x00000018,0x0000033d,0x00000340,0x0003003e,0x0000033c,0x00000343,0x00060041,0x00000014, + 0x00000345,0x00000086,0x0000014f,0x000002bd,0x0004003d,0x00000013,0x00000346,0x00000345, + 0x0003003e,0x00000344,0x00000346,0x00060041,0x00000014,0x00000348,0x00000086,0x0000014f, + 0x000002d0,0x0004003d,0x00000013,0x00000349,0x00000348,0x0003003e,0x00000347,0x00000349, + 0x00060039,0x00000013,0x0000034a,0x00000023,0x00000344,0x00000347,0x00060041,0x00000014, + 0x0000034b,0x00000086,0x0000014f,0x000002d0,0x0003003e,0x0000034b,0x0000034a,0x0004003d, + 0x00000013,0x0000034c,0x0000033c,0x00060041,0x00000014,0x0000034d,0x00000086,0x0000014f, + 0x000002bd,0x0003003e,0x0000034d,0x0000034c,0x00060041,0x00000014,0x00000350,0x00000086, + 0x0000014f,0x000001b6,0x0004003d,0x00000013,0x00000351,0x00000350,0x0003003e,0x0000034f, + 0x00000351,0x00060041,0x00000014,0x00000353,0x00000086,0x0000014f,0x000002bd,0x0004003d, + 0x00000013,0x00000354,0x00000353,0x0003003e,0x00000352,0x00000354,0x00060039,0x00000013, + 0x00000355,0x00000018,0x0000034f,0x00000352,0x0003003e,0x0000034e,0x00000355,0x00060041, + 0x00000014,0x00000357,0x00000086,0x0000014f,0x000001b6,0x0004003d,0x00000013,0x00000358, + 0x00000357,0x0003003e,0x00000356,0x00000358,0x00060041,0x00000014,0x0000035a,0x00000086, + 0x0000014f,0x000002bd,0x0004003d,0x00000013,0x0000035b,0x0000035a,0x0003003e,0x00000359, + 0x0000035b,0x00060039,0x00000013,0x0000035c,0x00000023,0x00000356,0x00000359,0x00060041, + 0x00000014,0x0000035d,0x00000086,0x0000014f,0x000002bd,0x0003003e,0x0000035d,0x0000035c, + 0x0004003d,0x00000013,0x0000035e,0x0000034e,0x00060041,0x00000014,0x0000035f,0x00000086, + 0x0000014f,0x000001b6,0x0003003e,0x0000035f,0x0000035e,0x000100fd,0x00010038,0x00050036, + 0x00000013,0x0000008d,0x00000000,0x00000089,0x00030037,0x00000049,0x0000008a,0x00030037, + 0x00000084,0x0000008b,0x00030037,0x00000084,0x0000008c,0x000200f8,0x0000008e,0x0004003b, + 0x00000014,0x00000360,0x00000007,0x0004003b,0x0000001b,0x00000362,0x00000007,0x0004003b, + 0x0000001b,0x00000363,0x00000007,0x0004003b,0x00000084,0x00000364,0x00000007,0x0004003b, + 0x00000084,0x00000368,0x00000007,0x0004003b,0x00000014,0x0000036c,0x00000007,0x0004003b, + 0x00000014,0x0000036d,0x00000007,0x0004003b,0x00000014,0x00000370,0x00000007,0x0004003b, + 0x0000001b,0x00000379,0x00000007,0x0004003b,0x00000014,0x00000386,0x00000007,0x0003003e, + 0x00000360,0x00000361,0x0003003e,0x00000362,0x0000014f,0x0003003e,0x00000363,0x0000014f, + 0x0004003d,0x00000083,0x00000365,0x0000008b,0x0003003e,0x00000364,0x00000365,0x00050039, + 0x00000002,0x00000366,0x00000087,0x00000364,0x0004003d,0x00000083,0x00000367,0x00000364, + 0x0003003e,0x0000008b,0x00000367,0x0004003d,0x00000083,0x00000369,0x0000008c,0x0003003e, + 0x00000368,0x00000369,0x00050039,0x00000002,0x0000036a,0x00000087,0x00000368,0x0004003d, + 0x00000083,0x0000036b,0x00000368,0x0003003e,0x0000008c,0x0000036b,0x00060041,0x00000014, + 0x0000036e,0x0000008b,0x0000014f,0x000002d0,0x0004003d,0x00000013,0x0000036f,0x0000036e, + 0x0003003e,0x0000036d,0x0000036f,0x00060041,0x00000014,0x00000371,0x0000008c,0x0000014f, + 0x000002d0,0x0004003d,0x00000013,0x00000372,0x00000371,0x0003003e,0x00000370,0x00000372, + 0x00060039,0x00000013,0x00000373,0x00000018,0x0000036d,0x00000370,0x0003003e,0x0000036c, + 0x00000373,0x0004003d,0x00000013,0x00000374,0x0000036c,0x000500ba,0x0000006e,0x00000376, + 0x00000374,0x00000375,0x000300f7,0x00000378,0x00000000,0x000400fa,0x00000376,0x00000377, + 0x00000378,0x000200f8,0x00000377,0x0003003e,0x00000379,0x0000014f,0x000200f9,0x0000037a, + 0x000200f8,0x0000037a,0x000400f6,0x0000037c,0x0000037d,0x00000000,0x000200f9,0x0000037e, + 0x000200f8,0x0000037e,0x0004003d,0x0000001a,0x0000037f,0x00000379,0x000500b1,0x0000006e, + 0x00000381,0x0000037f,0x00000380,0x0004003d,0x00000013,0x00000382,0x00000360,0x000500b8, + 0x0000006e,0x00000384,0x00000382,0x00000383,0x000500a7,0x0000006e,0x00000385,0x00000381, + 0x00000384,0x000400fa,0x00000385,0x0000037b,0x0000037c,0x000200f8,0x0000037b,0x0004003d, + 0x0000001a,0x00000387,0x00000362,0x00060041,0x00000014,0x00000388,0x0000008b,0x0000014f, + 0x00000387,0x0004003d,0x00000013,0x00000389,0x00000388,0x0004003d,0x0000001a,0x0000038a, + 0x00000363,0x00060041,0x00000014,0x0000038b,0x0000008c,0x0000014f,0x0000038a,0x0004003d, + 0x00000013,0x0000038c,0x0000038b,0x00050083,0x00000013,0x0000038d,0x00000389,0x0000038c, + 0x0003003e,0x00000386,0x0000038d,0x0004003d,0x00000013,0x0000038e,0x00000386,0x0006000c, + 0x00000013,0x0000038f,0x00000001,0x00000004,0x0000038e,0x000500ba,0x0000006e,0x00000391, + 0x0000038f,0x00000390,0x000300f7,0x00000393,0x00000000,0x000400fa,0x00000391,0x00000392, + 0x000003bb,0x000200f8,0x00000392,0x0004003d,0x00000013,0x00000394,0x00000386,0x0006000c, + 0x00000013,0x00000395,0x00000001,0x00000006,0x00000394,0x0004003d,0x0000001a,0x00000396, + 0x00000362,0x00060041,0x00000014,0x00000397,0x0000008b,0x0000014f,0x00000396,0x0004003d, + 0x00000013,0x00000398,0x00000397,0x0004003d,0x0000001a,0x00000399,0x00000363,0x00060041, + 0x00000014,0x0000039a,0x0000008c,0x0000014f,0x00000399,0x0004003d,0x00000013,0x0000039b, + 0x0000039a,0x00060039,0x00000013,0x0000039c,0x0000006c,0x00000398,0x0000039b,0x00050083, + 0x00000013,0x0000039d,0x000001df,0x0000039c,0x00050085,0x00000013,0x0000039e,0x00000395, + 0x0000039d,0x0003003e,0x00000386,0x0000039e,0x0004003d,0x00000013,0x0000039f,0x00000386, + 0x0006000c,0x00000013,0x000003a0,0x00000001,0x00000004,0x0000039f,0x0004003d,0x00000013, + 0x000003a1,0x00000360,0x0006000c,0x00000013,0x000003a2,0x00000001,0x00000004,0x000003a1, + 0x000500b8,0x0000006e,0x000003a3,0x000003a0,0x000003a2,0x0004003d,0x00000013,0x000003a4, + 0x00000386,0x0004003d,0x00000013,0x000003a5,0x00000360,0x000600a9,0x00000013,0x000003a6, + 0x000003a3,0x000003a4,0x000003a5,0x0003003e,0x00000360,0x000003a6,0x0004003d,0x0000001a, + 0x000003a7,0x00000362,0x00060041,0x00000014,0x000003a8,0x0000008b,0x0000014f,0x000003a7, + 0x0004003d,0x00000013,0x000003a9,0x000003a8,0x0004003d,0x0000001a,0x000003aa,0x00000363, + 0x00060041,0x00000014,0x000003ab,0x0000008c,0x0000014f,0x000003aa,0x0004003d,0x00000013, + 0x000003ac,0x000003ab,0x000500b8,0x0000006e,0x000003ad,0x000003a9,0x000003ac,0x000600a9, + 0x0000001a,0x000003ae,0x000003ad,0x00000194,0x0000014f,0x0004003d,0x0000001a,0x000003af, + 0x00000362,0x00050080,0x0000001a,0x000003b0,0x000003af,0x000003ae,0x0003003e,0x00000362, + 0x000003b0,0x0004003d,0x0000001a,0x000003b1,0x00000362,0x00060041,0x00000014,0x000003b2, + 0x0000008b,0x0000014f,0x000003b1,0x0004003d,0x00000013,0x000003b3,0x000003b2,0x0004003d, + 0x0000001a,0x000003b4,0x00000363,0x00060041,0x00000014,0x000003b5,0x0000008c,0x0000014f, + 0x000003b4,0x0004003d,0x00000013,0x000003b6,0x000003b5,0x000500be,0x0000006e,0x000003b7, + 0x000003b3,0x000003b6,0x000600a9,0x0000001a,0x000003b8,0x000003b7,0x00000194,0x0000014f, + 0x0004003d,0x0000001a,0x000003b9,0x00000363,0x00050080,0x0000001a,0x000003ba,0x000003b9, + 0x000003b8,0x0003003e,0x00000363,0x000003ba,0x000200f9,0x00000393,0x000200f8,0x000003bb, + 0x0003003e,0x00000360,0x00000383,0x000200f9,0x00000393,0x000200f8,0x00000393,0x000200f9, + 0x0000037d,0x000200f8,0x0000037d,0x0004003d,0x0000001a,0x000003bc,0x00000379,0x00050080, + 0x0000001a,0x000003bd,0x000003bc,0x00000194,0x0003003e,0x00000379,0x000003bd,0x000200f9, + 0x0000037a,0x000200f8,0x0000037c,0x000200f9,0x00000378,0x000200f8,0x00000378,0x0004003d, + 0x00000013,0x000003be,0x00000360,0x0004003d,0x00000013,0x000003bf,0x00000360,0x000500b8, + 0x0000006e,0x000003c0,0x000003bf,0x00000361,0x000600a9,0x00000013,0x000003c1,0x000003c0, + 0x000001df,0x000001db,0x00050085,0x00000013,0x000003c2,0x000003be,0x000003c1,0x000200fe, + 0x000003c2,0x00010038,0x00050036,0x00000083,0x00000091,0x00000000,0x0000008f,0x00030037, + 0x0000005c,0x00000090,0x000200f8,0x00000092,0x0004003b,0x0000005c,0x000003c5,0x00000007, + 0x0004003b,0x00000049,0x000003cc,0x00000007,0x0004003b,0x0000001b,0x000003d3,0x00000007, + 0x0004003b,0x00000049,0x000003db,0x00000007,0x0004003b,0x00000049,0x000003e5,0x00000007, + 0x0004003b,0x00000049,0x000003e7,0x00000007,0x0004003b,0x000003e8,0x000003e9,0x00000007, + 0x0004003b,0x00000049,0x000003ec,0x00000007,0x0004003b,0x00000084,0x000003ee,0x00000007, + 0x0004003b,0x00000049,0x000003f0,0x00000007,0x0004003b,0x00000014,0x000003f8,0x00000007, + 0x0004003b,0x00000014,0x000003fb,0x00000007,0x0004003b,0x00000014,0x00000400,0x00000007, + 0x0004003b,0x00000014,0x00000403,0x00000007,0x0004003d,0x00000038,0x000003c6,0x00000090, + 0x00040039,0x00000038,0x000003c7,0x0000003a,0x00040039,0x00000032,0x000003c8,0x00000034, + 0x0004006f,0x00000038,0x000003c9,0x000003c8,0x00050088,0x00000038,0x000003ca,0x000003c7, + 0x000003c9,0x00050081,0x00000038,0x000003cb,0x000003c6,0x000003ca,0x0003003e,0x000003c5, + 0x000003cb,0x0004003d,0x00000038,0x000003cd,0x000003c5,0x00040039,0x00000032,0x000003ce, + 0x00000034,0x0004006f,0x00000038,0x000003cf,0x000003ce,0x00050085,0x00000038,0x000003d0, + 0x000003cd,0x000003cf,0x0006000c,0x00000038,0x000003d1,0x00000001,0x00000008,0x000003d0, + 0x0004006e,0x00000032,0x000003d2,0x000003d1,0x0003003e,0x000003cc,0x000003d2,0x0003003e, + 0x000003d3,0x0000014f,0x000200f9,0x000003d4,0x000200f8,0x000003d4,0x000400f6,0x000003d6, + 0x000003d7,0x00000000,0x000200f9,0x000003d8,0x000200f8,0x000003d8,0x0004003d,0x0000001a, + 0x000003d9,0x000003d3,0x000500b1,0x0000006e,0x000003da,0x000003d9,0x00000380,0x000400fa, + 0x000003da,0x000003d5,0x000003d6,0x000200f8,0x000003d5,0x0004003d,0x0000001a,0x000003e3, + 0x000003d3,0x00040039,0x00000032,0x000003e4,0x00000034,0x0004003d,0x00000032,0x000003e6, + 0x000003cc,0x0003003e,0x000003e5,0x000003e6,0x0003003e,0x000003e9,0x000003e2,0x00050041, + 0x00000049,0x000003ea,0x000003e9,0x000003e3,0x0004003d,0x00000032,0x000003eb,0x000003ea, + 0x0003003e,0x000003e7,0x000003eb,0x0003003e,0x000003ec,0x000003e4,0x00070039,0x00000032, + 0x000003ed,0x00000077,0x000003e5,0x000003e7,0x000003ec,0x0003003e,0x000003db,0x000003ed, + 0x0004003d,0x0000001a,0x000003ef,0x000003d3,0x0004003d,0x00000032,0x000003f1,0x000003db, + 0x0003003e,0x000003f0,0x000003f1,0x00050039,0x00000013,0x000003f2,0x0000004c,0x000003f0, + 0x00040039,0x00000013,0x000003f3,0x00000055,0x00050085,0x00000013,0x000003f4,0x000003f2, + 0x000003f3,0x00060041,0x00000014,0x000003f5,0x000003ee,0x0000014f,0x000003ef,0x0003003e, + 0x000003f5,0x000003f4,0x0004003d,0x0000001a,0x000003f6,0x000003d3,0x0004003d,0x0000001a, + 0x000003f7,0x000003d3,0x00060041,0x00000014,0x000003f9,0x000003ee,0x0000014f,0x000003f7, + 0x0004003d,0x00000013,0x000003fa,0x000003f9,0x0003003e,0x000003f8,0x000003fa,0x0003003e, + 0x000003fb,0x000001df,0x00060039,0x00000013,0x000003fc,0x0000002b,0x000003f8,0x000003fb, + 0x00060041,0x00000014,0x000003fd,0x000003ee,0x0000014f,0x000003f6,0x0003003e,0x000003fd, + 0x000003fc,0x0004003d,0x0000001a,0x000003fe,0x000003d3,0x0004003d,0x0000001a,0x000003ff, + 0x000003d3,0x00060041,0x00000014,0x00000401,0x000003ee,0x0000014f,0x000003ff,0x0004003d, + 0x00000013,0x00000402,0x00000401,0x0003003e,0x00000400,0x00000402,0x0003003e,0x00000403, + 0x00000390,0x00060039,0x00000013,0x00000404,0x00000023,0x00000400,0x00000403,0x00060041, + 0x00000014,0x00000405,0x000003ee,0x0000014f,0x000003fe,0x0003003e,0x00000405,0x00000404, + 0x000200f9,0x000003d7,0x000200f8,0x000003d7,0x0004003d,0x0000001a,0x00000406,0x000003d3, + 0x00050080,0x0000001a,0x00000407,0x00000406,0x00000194,0x0003003e,0x000003d3,0x00000407, + 0x000200f9,0x000003d4,0x000200f8,0x000003d6,0x0004003d,0x00000083,0x00000408,0x000003ee, + 0x000200fe,0x00000408,0x00010038,0x00050036,0x00000093,0x00000097,0x00000000,0x00000094, + 0x00030037,0x0000005c,0x00000095,0x00030037,0x0000005c,0x00000096,0x000200f8,0x00000098, + 0x0004003b,0x0000005c,0x0000040b,0x00000007,0x0004003b,0x0000005c,0x00000412,0x00000007, + 0x0004003b,0x00000416,0x00000417,0x00000007,0x0004003b,0x0000005c,0x00000418,0x00000007, + 0x0004003b,0x00000049,0x00000421,0x00000007,0x0004003b,0x0000001b,0x00000428,0x00000007, + 0x0004003b,0x00000049,0x00000430,0x00000007,0x0004003b,0x00000049,0x00000433,0x00000007, + 0x0004003b,0x00000049,0x00000435,0x00000007,0x0004003b,0x000003e8,0x00000436,0x00000007, + 0x0004003b,0x00000049,0x00000439,0x00000007,0x0004003b,0x00000049,0x0000043c,0x00000007, + 0x0004003b,0x00000014,0x00000446,0x00000007,0x0004003b,0x00000014,0x00000449,0x00000007, + 0x0004003b,0x00000014,0x0000044e,0x00000007,0x0004003b,0x00000014,0x00000451,0x00000007, + 0x0004003d,0x00000038,0x0000040c,0x00000095,0x00040039,0x00000038,0x0000040d,0x0000003c, + 0x00040039,0x00000032,0x0000040e,0x00000036,0x0004006f,0x00000038,0x0000040f,0x0000040e, + 0x00050088,0x00000038,0x00000410,0x0000040d,0x0000040f,0x00050081,0x00000038,0x00000411, + 0x0000040c,0x00000410,0x0003003e,0x0000040b,0x00000411,0x0004003d,0x00000038,0x00000413, + 0x0000040b,0x0004003d,0x00000038,0x00000414,0x00000096,0x00050081,0x00000038,0x00000415, + 0x00000413,0x00000414,0x0003003e,0x00000412,0x00000415,0x0004003d,0x00000038,0x00000419, + 0x00000412,0x0003003e,0x00000418,0x00000419,0x00050039,0x0000006e,0x0000041a,0x00000071, + 0x00000418,0x00050041,0x0000041b,0x0000041c,0x00000417,0x00000194,0x0003003e,0x0000041c, + 0x0000041a,0x00050041,0x0000041b,0x0000041d,0x00000417,0x00000194,0x0004003d,0x0000006e, + 0x0000041e,0x0000041d,0x000300f7,0x00000420,0x00000000,0x000400fa,0x0000041e,0x0000041f, + 0x00000420,0x000200f8,0x0000041f,0x0004003d,0x00000038,0x00000422,0x00000412,0x00040039, + 0x00000032,0x00000423,0x00000036,0x0004006f,0x00000038,0x00000424,0x00000423,0x00050085, + 0x00000038,0x00000425,0x00000422,0x00000424,0x0006000c,0x00000038,0x00000426,0x00000001, + 0x00000008,0x00000425,0x0004006e,0x00000032,0x00000427,0x00000426,0x0003003e,0x00000421, + 0x00000427,0x0003003e,0x00000428,0x0000014f,0x000200f9,0x00000429,0x000200f8,0x00000429, + 0x000400f6,0x0000042b,0x0000042c,0x00000000,0x000200f9,0x0000042d,0x000200f8,0x0000042d, + 0x0004003d,0x0000001a,0x0000042e,0x00000428,0x000500b1,0x0000006e,0x0000042f,0x0000042e, + 0x00000380,0x000400fa,0x0000042f,0x0000042a,0x0000042b,0x000200f8,0x0000042a,0x0004003d, + 0x0000001a,0x00000431,0x00000428,0x00040039,0x00000032,0x00000432,0x00000036,0x0004003d, + 0x00000032,0x00000434,0x00000421,0x0003003e,0x00000433,0x00000434,0x0003003e,0x00000436, + 0x000003e2,0x00050041,0x00000049,0x00000437,0x00000436,0x00000431,0x0004003d,0x00000032, + 0x00000438,0x00000437,0x0003003e,0x00000435,0x00000438,0x0003003e,0x00000439,0x00000432, + 0x00070039,0x00000032,0x0000043a,0x00000077,0x00000433,0x00000435,0x00000439,0x0003003e, + 0x00000430,0x0000043a,0x0004003d,0x0000001a,0x0000043b,0x00000428,0x0004003d,0x00000032, + 0x0000043d,0x00000430,0x0003003e,0x0000043c,0x0000043d,0x00050039,0x00000013,0x0000043e, + 0x0000004f,0x0000043c,0x00040039,0x00000013,0x0000043f,0x0000003f,0x00050085,0x00000013, + 0x00000440,0x0000043e,0x0000043f,0x00040039,0x00000013,0x00000441,0x00000055,0x00050085, + 0x00000013,0x00000442,0x00000440,0x00000441,0x00070041,0x00000014,0x00000443,0x00000417, + 0x0000014f,0x0000014f,0x0000043b,0x0003003e,0x00000443,0x00000442,0x0004003d,0x0000001a, + 0x00000444,0x00000428,0x0004003d,0x0000001a,0x00000445,0x00000428,0x00070041,0x00000014, + 0x00000447,0x00000417,0x0000014f,0x0000014f,0x00000445,0x0004003d,0x00000013,0x00000448, + 0x00000447,0x0003003e,0x00000446,0x00000448,0x0003003e,0x00000449,0x000001df,0x00060039, + 0x00000013,0x0000044a,0x0000002b,0x00000446,0x00000449,0x00070041,0x00000014,0x0000044b, + 0x00000417,0x0000014f,0x0000014f,0x00000444,0x0003003e,0x0000044b,0x0000044a,0x0004003d, + 0x0000001a,0x0000044c,0x00000428,0x0004003d,0x0000001a,0x0000044d,0x00000428,0x00070041, + 0x00000014,0x0000044f,0x00000417,0x0000014f,0x0000014f,0x0000044d,0x0004003d,0x00000013, + 0x00000450,0x0000044f,0x0003003e,0x0000044e,0x00000450,0x0003003e,0x00000451,0x00000390, + 0x00060039,0x00000013,0x00000452,0x00000023,0x0000044e,0x00000451,0x00070041,0x00000014, + 0x00000453,0x00000417,0x0000014f,0x0000014f,0x0000044c,0x0003003e,0x00000453,0x00000452, + 0x000200f9,0x0000042c,0x000200f8,0x0000042c,0x0004003d,0x0000001a,0x00000454,0x00000428, + 0x00050080,0x0000001a,0x00000455,0x00000454,0x00000194,0x0003003e,0x00000428,0x00000455, + 0x000200f9,0x00000429,0x000200f8,0x0000042b,0x000200f9,0x00000420,0x000200f8,0x00000420, + 0x0004003d,0x00000093,0x00000456,0x00000417,0x000200fe,0x00000456,0x00010038,0x00050036, + 0x00000013,0x0000009d,0x00000000,0x00000099,0x00030037,0x00000049,0x0000009a,0x00030037, + 0x0000005c,0x0000009b,0x00030037,0x0000005c,0x0000009c,0x000200f8,0x0000009e,0x0004003b, + 0x00000014,0x00000459,0x00000007,0x0004003b,0x00000084,0x0000045a,0x00000007,0x0004003b, + 0x0000005c,0x0000045b,0x00000007,0x0004003b,0x00000416,0x0000045e,0x00000007,0x0004003b, + 0x0000005c,0x0000045f,0x00000007,0x0004003b,0x0000005c,0x00000461,0x00000007,0x0004003b, + 0x00000049,0x00000468,0x00000007,0x0004003b,0x00000084,0x0000046a,0x00000007,0x0004003b, + 0x00000084,0x0000046c,0x00000007,0x0003003e,0x00000459,0x000001db,0x0004003d,0x00000038, + 0x0000045c,0x0000009b,0x0003003e,0x0000045b,0x0000045c,0x00050039,0x00000083,0x0000045d, + 0x00000091,0x0000045b,0x0003003e,0x0000045a,0x0000045d,0x0004003d,0x00000038,0x00000460, + 0x0000009b,0x0003003e,0x0000045f,0x00000460,0x0004003d,0x00000038,0x00000462,0x0000009c, + 0x0003003e,0x00000461,0x00000462,0x00060039,0x00000093,0x00000463,0x00000097,0x0000045f, + 0x00000461,0x0003003e,0x0000045e,0x00000463,0x00050041,0x0000041b,0x00000464,0x0000045e, + 0x00000194,0x0004003d,0x0000006e,0x00000465,0x00000464,0x000300f7,0x00000467,0x00000000, + 0x000400fa,0x00000465,0x00000466,0x00000467,0x000200f8,0x00000466,0x0004003d,0x00000032, + 0x00000469,0x0000009a,0x0003003e,0x00000468,0x00000469,0x0004003d,0x00000083,0x0000046b, + 0x0000045a,0x0003003e,0x0000046a,0x0000046b,0x00050041,0x00000084,0x0000046d,0x0000045e, + 0x0000014f,0x0004003d,0x00000083,0x0000046e,0x0000046d,0x0003003e,0x0000046c,0x0000046e, + 0x00070039,0x00000013,0x0000046f,0x0000008d,0x00000468,0x0000046a,0x0000046c,0x0003003e, + 0x00000459,0x0000046f,0x000200f9,0x00000467,0x000200f8,0x00000467,0x0004003d,0x00000013, + 0x00000470,0x00000459,0x000200fe,0x00000470,0x00010038,0x00050036,0x0000009f,0x000000a3, + 0x00000000,0x000000a0,0x00030037,0x0000005c,0x000000a1,0x00030037,0x00000007,0x000000a2, + 0x000200f8,0x000000a4,0x0004003b,0x00000049,0x00000473,0x00000007,0x0004003b,0x00000049, + 0x00000477,0x00000007,0x0004003b,0x00000049,0x00000478,0x00000007,0x0004003b,0x00000049, + 0x00000479,0x00000007,0x0004003b,0x0000005c,0x0000047b,0x00000007,0x0004003b,0x00000049, + 0x0000047c,0x00000007,0x0004003b,0x0000005c,0x0000047f,0x00000007,0x0004003b,0x00000014, + 0x00000488,0x00000007,0x0004003b,0x00000049,0x00000489,0x00000007,0x0004003b,0x0000005c, + 0x0000048b,0x00000007,0x0004003b,0x0000005c,0x0000048d,0x00000007,0x0004003b,0x000000aa, + 0x00000490,0x00000007,0x0004003b,0x00000014,0x00000496,0x00000007,0x0004003d,0x00000038, + 0x00000474,0x000000a1,0x0004006e,0x00000032,0x00000475,0x00000474,0x00040039,0x00000032, + 0x00000476,0x00000034,0x0003003e,0x00000477,0x00000475,0x0003003e,0x00000478,0x000001d7, + 0x0003003e,0x00000479,0x00000476,0x00070039,0x00000032,0x0000047a,0x00000077,0x00000477, + 0x00000478,0x00000479,0x0003003e,0x00000473,0x0000047a,0x0004003d,0x00000032,0x0000047d, + 0x00000473,0x0003003e,0x0000047c,0x0000047d,0x00050039,0x00000038,0x0000047e,0x00000053, + 0x0000047c,0x0003003e,0x0000047b,0x0000047e,0x0004003d,0x00000032,0x00000480,0x00000473, + 0x0004006f,0x00000038,0x00000481,0x00000480,0x00050050,0x00000038,0x00000483,0x00000482, + 0x00000482,0x00050081,0x00000038,0x00000484,0x00000481,0x00000483,0x00040039,0x00000032, + 0x00000485,0x00000034,0x0004006f,0x00000038,0x00000486,0x00000485,0x00050088,0x00000038, + 0x00000487,0x00000484,0x00000486,0x0003003e,0x0000047f,0x00000487,0x0004003d,0x00000032, + 0x0000048a,0x00000473,0x0003003e,0x00000489,0x0000048a,0x0004003d,0x00000038,0x0000048c, + 0x0000047f,0x0003003e,0x0000048b,0x0000048c,0x0004003d,0x00000038,0x0000048e,0x0000047b, + 0x0003003e,0x0000048d,0x0000048e,0x00070039,0x00000013,0x0000048f,0x0000009d,0x00000489, + 0x0000048b,0x0000048d,0x0003003e,0x00000488,0x0000048f,0x0003003e,0x00000490,0x00000491, + 0x0004003d,0x00000013,0x00000492,0x00000488,0x00050041,0x00000014,0x00000493,0x00000490, + 0x000001c2,0x0003003e,0x00000493,0x00000492,0x0004003d,0x00000013,0x00000494,0x00000488, + 0x000500b7,0x0000006e,0x00000495,0x00000494,0x000001db,0x000300f7,0x00000498,0x00000000, + 0x000400fa,0x00000495,0x00000497,0x0000049b,0x000200f8,0x00000497,0x0004003d,0x00000013, + 0x00000499,0x00000488,0x0006000c,0x00000013,0x0000049a,0x00000001,0x00000006,0x00000499, + 0x0003003e,0x00000496,0x0000049a,0x000200f9,0x00000498,0x000200f8,0x0000049b,0x0003003e, + 0x00000496,0x000001db,0x000200f9,0x00000498,0x000200f8,0x00000498,0x0004003d,0x00000013, + 0x0000049c,0x00000496,0x00050041,0x00000014,0x0000049d,0x00000490,0x00000175,0x0003003e, + 0x0000049d,0x0000049c,0x00050041,0x00000014,0x0000049e,0x00000490,0x0000016e,0x0003003e, + 0x0000049e,0x000001df,0x0004003d,0x0000009f,0x0000049f,0x00000490,0x000200fe,0x0000049f, + 0x00010038,0x00050036,0x0000009f,0x000000a8,0x00000000,0x000000a5,0x00030037,0x00000049, + 0x000000a6,0x00030037,0x00000007,0x000000a7,0x000200f8,0x000000a9,0x0004003b,0x00000049, + 0x000004a2,0x00000007,0x0004003b,0x00000007,0x000004a4,0x00000007,0x0004003d,0x00000032, + 0x000004a3,0x000000a6,0x0003003e,0x000004a2,0x000004a3,0x0003003e,0x000004a4,0x00000081, + 0x00060039,0x00000038,0x000004a5,0x0000005a,0x000004a2,0x000004a4,0x00050051,0x00000013, + 0x000004a6,0x000004a5,0x00000000,0x00050051,0x00000013,0x000004a7,0x000004a5,0x00000001, + 0x00070050,0x0000009f,0x000004a8,0x000004a6,0x000004a7,0x000001db,0x000001db,0x000200fe, + 0x000004a8,0x00010038,0x00050036,0x0000009f,0x000000b0,0x00000000,0x000000ab,0x00030037, + 0x000000aa,0x000000ac,0x00030037,0x000000aa,0x000000ad,0x00030037,0x000000aa,0x000000ae, + 0x00030037,0x000000aa,0x000000af,0x000200f8,0x000000b1,0x0004003d,0x0000009f,0x000004ab, + 0x000000ac,0x0004003d,0x0000009f,0x000004ac,0x000000ad,0x00050081,0x0000009f,0x000004ad, + 0x000004ab,0x000004ac,0x0004003d,0x0000009f,0x000004ae,0x000000ae,0x00050081,0x0000009f, + 0x000004af,0x000004ad,0x000004ae,0x0004003d,0x0000009f,0x000004b0,0x000000af,0x00050081, + 0x0000009f,0x000004b1,0x000004af,0x000004b0,0x0005008e,0x0000009f,0x000004b3,0x000004b1, + 0x000004b2,0x000200fe,0x000004b3,0x00010038,0x00050036,0x00000002,0x000000b7,0x00000000, + 0x000000b2,0x00030037,0x00000049,0x000000b3,0x00030037,0x000000aa,0x000000b4,0x00030037, + 0x00000007,0x000000b5,0x00030037,0x00000007,0x000000b6,0x000200f8,0x000000b8,0x0004003b, + 0x00000049,0x000004ba,0x00000007,0x0004003b,0x0000005c,0x000004bc,0x00000007,0x0004003b, + 0x00000007,0x000004bf,0x00000007,0x0004003d,0x00000006,0x000004b6,0x000000b5,0x000500ae, + 0x0000006e,0x000004b7,0x000004b6,0x000001c2,0x000300f7,0x000004b9,0x00000000,0x000400fa, + 0x000004b7,0x000004b8,0x000004b9,0x000200f8,0x000004b8,0x0004003d,0x00000032,0x000004bb, + 0x000000b3,0x0003003e,0x000004ba,0x000004bb,0x0004003d,0x0000009f,0x000004bd,0x000000b4, + 0x0007004f,0x00000038,0x000004be,0x000004bd,0x000004bd,0x00000000,0x00000001,0x0003003e, + 0x000004bc,0x000004be,0x0004003d,0x00000006,0x000004c0,0x000000b5,0x0003003e,0x000004bf, + 0x000004c0,0x00070039,0x00000002,0x000004c1,0x00000061,0x000004ba,0x000004bc,0x000004bf, + 0x000200f9,0x000004b9,0x000200f8,0x000004b9,0x000100fd,0x00010038,0x00050036,0x0000009f, + 0x000000bc,0x00000000,0x000000b9,0x00030037,0x00000007,0x000000ba,0x00030037,0x00000007, + 0x000000bb,0x000200f8,0x000000bd,0x0004003d,0x00000006,0x000004c7,0x000000ba,0x0004003d, + 0x00000006,0x000004c8,0x000000bb,0x00060041,0x000004c9,0x000004ca,0x000004c6,0x000004c7, + 0x000004c8,0x0004003d,0x00000013,0x000004cb,0x000004ca,0x0004003d,0x00000006,0x000004cd, + 0x000000ba,0x0004003d,0x00000006,0x000004ce,0x000000bb,0x00060041,0x000004c9,0x000004cf, + 0x000004cc,0x000004cd,0x000004ce,0x0004003d,0x00000013,0x000004d0,0x000004cf,0x0004003d, + 0x00000006,0x000004d2,0x000000ba,0x0004003d,0x00000006,0x000004d3,0x000000bb,0x00060041, + 0x000004c9,0x000004d4,0x000004d1,0x000004d2,0x000004d3,0x0004003d,0x00000013,0x000004d5, + 0x000004d4,0x0004003d,0x00000006,0x000004d7,0x000000ba,0x0004003d,0x00000006,0x000004d8, + 0x000000bb,0x00060041,0x000004c9,0x000004d9,0x000004d6,0x000004d7,0x000004d8,0x0004003d, + 0x00000013,0x000004da,0x000004d9,0x00070050,0x0000009f,0x000004db,0x000004cb,0x000004d0, + 0x000004d5,0x000004da,0x000200fe,0x000004db,0x00010038,0x00050036,0x00000002,0x000000c2, + 0x00000000,0x000000be,0x00030037,0x00000007,0x000000bf,0x00030037,0x00000007,0x000000c0, + 0x00030037,0x000000aa,0x000000c1,0x000200f8,0x000000c3,0x0004003d,0x00000006,0x000004de, + 0x000000bf,0x0004003d,0x00000006,0x000004df,0x000000c0,0x00050041,0x00000014,0x000004e0, + 0x000000c1,0x000001c2,0x0004003d,0x00000013,0x000004e1,0x000004e0,0x00060041,0x000004c9, + 0x000004e2,0x000004c6,0x000004de,0x000004df,0x0003003e,0x000004e2,0x000004e1,0x0004003d, + 0x00000006,0x000004e3,0x000000bf,0x0004003d,0x00000006,0x000004e4,0x000000c0,0x00050041, + 0x00000014,0x000004e5,0x000000c1,0x00000175,0x0004003d,0x00000013,0x000004e6,0x000004e5, + 0x00060041,0x000004c9,0x000004e7,0x000004cc,0x000004e3,0x000004e4,0x0003003e,0x000004e7, + 0x000004e6,0x0004003d,0x00000006,0x000004e8,0x000000bf,0x0004003d,0x00000006,0x000004e9, + 0x000000c0,0x00050041,0x00000014,0x000004ea,0x000000c1,0x0000016e,0x0004003d,0x00000013, + 0x000004eb,0x000004ea,0x00060041,0x000004c9,0x000004ec,0x000004d1,0x000004e8,0x000004e9, + 0x0003003e,0x000004ec,0x000004eb,0x0004003d,0x00000006,0x000004ed,0x000000bf,0x0004003d, + 0x00000006,0x000004ee,0x000000c0,0x00050041,0x00000014,0x000004ef,0x000000c1,0x0000016f, + 0x0004003d,0x00000013,0x000004f0,0x000004ef,0x00060041,0x000004c9,0x000004f1,0x000004d6, + 0x000004ed,0x000004ee,0x0003003e,0x000004f1,0x000004f0,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x000000c4,0x00000000,0x00000003,0x000200f8,0x000000c5,0x000300e1,0x0000016e, + 0x000004f2,0x000400e0,0x0000016e,0x0000016e,0x000004f3,0x000100fd,0x00010038,0x00050036, + 0x0000006e,0x000000ca,0x00000000,0x000000c6,0x00030037,0x00000007,0x000000c7,0x00030037, + 0x00000007,0x000000c8,0x00030037,0x00000007,0x000000c9,0x000200f8,0x000000cb,0x0004003b, + 0x00000007,0x000004f8,0x00000007,0x0004003d,0x00000006,0x000004f4,0x000000c8,0x000500aa, + 0x0000006e,0x000004f5,0x000004f4,0x000001c2,0x000300f7,0x000004f7,0x00000000,0x000400fa, + 0x000004f5,0x000004f6,0x000004f7,0x000200f8,0x000004f6,0x0004003d,0x00000006,0x000004f9, + 0x000000c9,0x0003003e,0x000004f8,0x000004f9,0x00050039,0x00000002,0x000004fa,0x0000007a, + 0x000004f8,0x000200f9,0x000004f7,0x000200f8,0x000004f7,0x00040039,0x00000002,0x000004fb, + 0x000000c4,0x00040039,0x00000006,0x000004fc,0x0000007c,0x0004003d,0x00000006,0x000004fd, + 0x000000c7,0x00050082,0x00000006,0x000004fe,0x000004fd,0x00000175,0x000500ab,0x0000006e, + 0x000004ff,0x000004fc,0x000004fe,0x000200fe,0x000004ff,0x00010038,0x00050036,0x0000009f, + 0x000000d2,0x00000000,0x000000cd,0x00030037,0x000000cc,0x000000ce,0x00030037,0x000000cc, + 0x000000cf,0x00030037,0x000000cc,0x000000d0,0x00030037,0x000000cc,0x000000d1,0x000200f8, + 0x000000d3,0x0004003b,0x000000aa,0x00000502,0x00000007,0x0004003b,0x00000007,0x00000503, + 0x00000007,0x0004003b,0x00000007,0x00000506,0x00000007,0x0004003b,0x000000aa,0x0000050a, + 0x00000007,0x0004003b,0x00000007,0x0000050b,0x00000007,0x0004003b,0x00000007,0x0000050e, + 0x00000007,0x0004003b,0x000000aa,0x00000512,0x00000007,0x0004003b,0x00000007,0x00000513, + 0x00000007,0x0004003b,0x00000007,0x00000516,0x00000007,0x0004003b,0x000000aa,0x0000051a, + 0x00000007,0x0004003b,0x00000007,0x0000051b,0x00000007,0x0004003b,0x00000007,0x0000051e, + 0x00000007,0x0004003b,0x000000aa,0x00000522,0x00000007,0x0004003b,0x000000aa,0x00000524, + 0x00000007,0x0004003b,0x000000aa,0x00000526,0x00000007,0x0004003b,0x000000aa,0x00000528, + 0x00000007,0x00050041,0x00000007,0x00000504,0x000000ce,0x000001c2,0x0004003d,0x00000006, + 0x00000505,0x00000504,0x0003003e,0x00000503,0x00000505,0x00050041,0x00000007,0x00000507, + 0x000000ce,0x00000175,0x0004003d,0x00000006,0x00000508,0x00000507,0x0003003e,0x00000506, + 0x00000508,0x00060039,0x0000009f,0x00000509,0x000000bc,0x00000503,0x00000506,0x0003003e, + 0x00000502,0x00000509,0x00050041,0x00000007,0x0000050c,0x000000cf,0x000001c2,0x0004003d, + 0x00000006,0x0000050d,0x0000050c,0x0003003e,0x0000050b,0x0000050d,0x00050041,0x00000007, + 0x0000050f,0x000000cf,0x00000175,0x0004003d,0x00000006,0x00000510,0x0000050f,0x0003003e, + 0x0000050e,0x00000510,0x00060039,0x0000009f,0x00000511,0x000000bc,0x0000050b,0x0000050e, + 0x0003003e,0x0000050a,0x00000511,0x00050041,0x00000007,0x00000514,0x000000d0,0x000001c2, + 0x0004003d,0x00000006,0x00000515,0x00000514,0x0003003e,0x00000513,0x00000515,0x00050041, + 0x00000007,0x00000517,0x000000d0,0x00000175,0x0004003d,0x00000006,0x00000518,0x00000517, + 0x0003003e,0x00000516,0x00000518,0x00060039,0x0000009f,0x00000519,0x000000bc,0x00000513, + 0x00000516,0x0003003e,0x00000512,0x00000519,0x00050041,0x00000007,0x0000051c,0x000000d1, + 0x000001c2,0x0004003d,0x00000006,0x0000051d,0x0000051c,0x0003003e,0x0000051b,0x0000051d, + 0x00050041,0x00000007,0x0000051f,0x000000d1,0x00000175,0x0004003d,0x00000006,0x00000520, + 0x0000051f,0x0003003e,0x0000051e,0x00000520,0x00060039,0x0000009f,0x00000521,0x000000bc, + 0x0000051b,0x0000051e,0x0003003e,0x0000051a,0x00000521,0x0004003d,0x0000009f,0x00000523, + 0x00000502,0x0003003e,0x00000522,0x00000523,0x0004003d,0x0000009f,0x00000525,0x0000050a, + 0x0003003e,0x00000524,0x00000525,0x0004003d,0x0000009f,0x00000527,0x00000512,0x0003003e, + 0x00000526,0x00000527,0x0004003d,0x0000009f,0x00000529,0x0000051a,0x0003003e,0x00000528, + 0x00000529,0x00080039,0x0000009f,0x0000052a,0x000000b0,0x00000522,0x00000524,0x00000526, + 0x00000528,0x000200fe,0x0000052a,0x00010038,0x00050036,0x0000009f,0x000000da,0x00000000, + 0x000000d4,0x00030037,0x000000cc,0x000000d5,0x00030037,0x000000cc,0x000000d6,0x00030037, + 0x000000cc,0x000000d7,0x00030037,0x000000cc,0x000000d8,0x00030037,0x00000007,0x000000d9, + 0x000200f8,0x000000db,0x0004003b,0x000000aa,0x0000052d,0x00000007,0x0004003b,0x00000049, + 0x00000530,0x00000007,0x0004003b,0x00000007,0x00000531,0x00000007,0x0004003b,0x000000aa, + 0x00000534,0x00000007,0x0004003b,0x00000049,0x00000537,0x00000007,0x0004003b,0x00000007, + 0x00000538,0x00000007,0x0004003b,0x000000aa,0x0000053b,0x00000007,0x0004003b,0x00000049, + 0x0000053e,0x00000007,0x0004003b,0x00000007,0x0000053f,0x00000007,0x0004003b,0x000000aa, + 0x00000542,0x00000007,0x0004003b,0x00000049,0x00000545,0x00000007,0x0004003b,0x00000007, + 0x00000546,0x00000007,0x0004003b,0x000000aa,0x00000549,0x00000007,0x0004003b,0x000000aa, + 0x0000054b,0x00000007,0x0004003b,0x000000aa,0x0000054d,0x00000007,0x0004003b,0x000000aa, + 0x0000054f,0x00000007,0x0004003d,0x0000002d,0x0000052e,0x000000d5,0x0004007c,0x00000032, + 0x0000052f,0x0000052e,0x0003003e,0x00000530,0x0000052f,0x0004003d,0x00000006,0x00000532, + 0x000000d9,0x0003003e,0x00000531,0x00000532,0x00060039,0x0000009f,0x00000533,0x000000a8, + 0x00000530,0x00000531,0x0003003e,0x0000052d,0x00000533,0x0004003d,0x0000002d,0x00000535, + 0x000000d6,0x0004007c,0x00000032,0x00000536,0x00000535,0x0003003e,0x00000537,0x00000536, + 0x0004003d,0x00000006,0x00000539,0x000000d9,0x0003003e,0x00000538,0x00000539,0x00060039, + 0x0000009f,0x0000053a,0x000000a8,0x00000537,0x00000538,0x0003003e,0x00000534,0x0000053a, + 0x0004003d,0x0000002d,0x0000053c,0x000000d7,0x0004007c,0x00000032,0x0000053d,0x0000053c, + 0x0003003e,0x0000053e,0x0000053d,0x0004003d,0x00000006,0x00000540,0x000000d9,0x0003003e, + 0x0000053f,0x00000540,0x00060039,0x0000009f,0x00000541,0x000000a8,0x0000053e,0x0000053f, + 0x0003003e,0x0000053b,0x00000541,0x0004003d,0x0000002d,0x00000543,0x000000d8,0x0004007c, + 0x00000032,0x00000544,0x00000543,0x0003003e,0x00000545,0x00000544,0x0004003d,0x00000006, + 0x00000547,0x000000d9,0x0003003e,0x00000546,0x00000547,0x00060039,0x0000009f,0x00000548, + 0x000000a8,0x00000545,0x00000546,0x0003003e,0x00000542,0x00000548,0x0004003d,0x0000009f, + 0x0000054a,0x0000052d,0x0003003e,0x00000549,0x0000054a,0x0004003d,0x0000009f,0x0000054c, + 0x00000534,0x0003003e,0x0000054b,0x0000054c,0x0004003d,0x0000009f,0x0000054e,0x0000053b, + 0x0003003e,0x0000054d,0x0000054e,0x0004003d,0x0000009f,0x00000550,0x00000542,0x0003003e, + 0x0000054f,0x00000550,0x00080039,0x0000009f,0x00000551,0x000000b0,0x00000549,0x0000054b, + 0x0000054d,0x0000054f,0x000200fe,0x00000551,0x00010038,0x00050036,0x0000009f,0x000000df, + 0x00000000,0x000000dc,0x00030037,0x000000cc,0x000000dd,0x00030037,0x00000007,0x000000de, + 0x000200f8,0x000000e0,0x0004003b,0x000000cc,0x00000560,0x00000007,0x0004003b,0x000000cc, + 0x00000561,0x00000007,0x0004003b,0x000000cc,0x00000562,0x00000007,0x0004003b,0x000000cc, + 0x00000563,0x00000007,0x0004003b,0x00000007,0x00000564,0x00000007,0x0004003d,0x0000002d, + 0x00000554,0x000000dd,0x00050080,0x0000002d,0x00000556,0x00000554,0x00000555,0x0004003d, + 0x0000002d,0x00000557,0x000000dd,0x00050080,0x0000002d,0x00000559,0x00000557,0x00000558, + 0x0004003d,0x0000002d,0x0000055a,0x000000dd,0x00050080,0x0000002d,0x0000055c,0x0000055a, + 0x0000055b,0x0004003d,0x0000002d,0x0000055d,0x000000dd,0x00050080,0x0000002d,0x0000055f, + 0x0000055d,0x0000055e,0x0003003e,0x00000560,0x00000556,0x0003003e,0x00000561,0x00000559, + 0x0003003e,0x00000562,0x0000055c,0x0003003e,0x00000563,0x0000055f,0x0004003d,0x00000006, + 0x00000565,0x000000de,0x0003003e,0x00000564,0x00000565,0x00090039,0x0000009f,0x00000566, + 0x000000da,0x00000560,0x00000561,0x00000562,0x00000563,0x00000564,0x000200fe,0x00000566, + 0x00010038,0x00050036,0x0000009f,0x000000e6,0x00000000,0x000000d4,0x00030037,0x000000cc, + 0x000000e1,0x00030037,0x000000cc,0x000000e2,0x00030037,0x000000cc,0x000000e3,0x00030037, + 0x000000cc,0x000000e4,0x00030037,0x00000007,0x000000e5,0x000200f8,0x000000e7,0x0004003b, + 0x000000aa,0x00000569,0x00000007,0x0004003b,0x0000005c,0x0000056d,0x00000007,0x0004003b, + 0x00000007,0x0000056e,0x00000007,0x0004003b,0x000000aa,0x00000571,0x00000007,0x0004003b, + 0x0000005c,0x00000575,0x00000007,0x0004003b,0x00000007,0x00000576,0x00000007,0x0004003b, + 0x000000aa,0x00000579,0x00000007,0x0004003b,0x0000005c,0x0000057d,0x00000007,0x0004003b, + 0x00000007,0x0000057e,0x00000007,0x0004003b,0x000000aa,0x00000581,0x00000007,0x0004003b, + 0x0000005c,0x00000585,0x00000007,0x0004003b,0x00000007,0x00000586,0x00000007,0x0004003b, + 0x000000aa,0x00000589,0x00000007,0x0004003b,0x000000aa,0x0000058b,0x00000007,0x0004003b, + 0x000000aa,0x0000058d,0x00000007,0x0004003b,0x000000aa,0x0000058f,0x00000007,0x0004003d, + 0x0000002d,0x0000056a,0x000000e1,0x0004007c,0x00000032,0x0000056b,0x0000056a,0x0004006f, + 0x00000038,0x0000056c,0x0000056b,0x0003003e,0x0000056d,0x0000056c,0x0004003d,0x00000006, + 0x0000056f,0x000000e5,0x0003003e,0x0000056e,0x0000056f,0x00060039,0x0000009f,0x00000570, + 0x000000a3,0x0000056d,0x0000056e,0x0003003e,0x00000569,0x00000570,0x0004003d,0x0000002d, + 0x00000572,0x000000e2,0x0004007c,0x00000032,0x00000573,0x00000572,0x0004006f,0x00000038, + 0x00000574,0x00000573,0x0003003e,0x00000575,0x00000574,0x0004003d,0x00000006,0x00000577, + 0x000000e5,0x0003003e,0x00000576,0x00000577,0x00060039,0x0000009f,0x00000578,0x000000a3, + 0x00000575,0x00000576,0x0003003e,0x00000571,0x00000578,0x0004003d,0x0000002d,0x0000057a, + 0x000000e3,0x0004007c,0x00000032,0x0000057b,0x0000057a,0x0004006f,0x00000038,0x0000057c, + 0x0000057b,0x0003003e,0x0000057d,0x0000057c,0x0004003d,0x00000006,0x0000057f,0x000000e5, + 0x0003003e,0x0000057e,0x0000057f,0x00060039,0x0000009f,0x00000580,0x000000a3,0x0000057d, + 0x0000057e,0x0003003e,0x00000579,0x00000580,0x0004003d,0x0000002d,0x00000582,0x000000e4, + 0x0004007c,0x00000032,0x00000583,0x00000582,0x0004006f,0x00000038,0x00000584,0x00000583, + 0x0003003e,0x00000585,0x00000584,0x0004003d,0x00000006,0x00000587,0x000000e5,0x0003003e, + 0x00000586,0x00000587,0x00060039,0x0000009f,0x00000588,0x000000a3,0x00000585,0x00000586, + 0x0003003e,0x00000581,0x00000588,0x0004003d,0x0000009f,0x0000058a,0x00000569,0x0003003e, + 0x00000589,0x0000058a,0x0004003d,0x0000009f,0x0000058c,0x00000571,0x0003003e,0x0000058b, + 0x0000058c,0x0004003d,0x0000009f,0x0000058e,0x00000579,0x0003003e,0x0000058d,0x0000058e, + 0x0004003d,0x0000009f,0x00000590,0x00000581,0x0003003e,0x0000058f,0x00000590,0x00080039, + 0x0000009f,0x00000591,0x000000b0,0x00000589,0x0000058b,0x0000058d,0x0000058f,0x000200fe, + 0x00000591,0x00010038,0x00050036,0x0000009f,0x000000ea,0x00000000,0x000000dc,0x00030037, + 0x000000cc,0x000000e8,0x00030037,0x00000007,0x000000e9,0x000200f8,0x000000eb,0x0004003b, + 0x000000cc,0x0000059c,0x00000007,0x0004003b,0x000000cc,0x0000059d,0x00000007,0x0004003b, + 0x000000cc,0x0000059e,0x00000007,0x0004003b,0x000000cc,0x0000059f,0x00000007,0x0004003b, + 0x00000007,0x000005a0,0x00000007,0x0004003d,0x0000002d,0x00000594,0x000000e8,0x00050080, + 0x0000002d,0x00000595,0x00000594,0x00000555,0x0004003d,0x0000002d,0x00000596,0x000000e8, + 0x00050080,0x0000002d,0x00000597,0x00000596,0x00000558,0x0004003d,0x0000002d,0x00000598, + 0x000000e8,0x00050080,0x0000002d,0x00000599,0x00000598,0x0000055b,0x0004003d,0x0000002d, + 0x0000059a,0x000000e8,0x00050080,0x0000002d,0x0000059b,0x0000059a,0x0000055e,0x0003003e, + 0x0000059c,0x00000595,0x0003003e,0x0000059d,0x00000597,0x0003003e,0x0000059e,0x00000599, + 0x0003003e,0x0000059f,0x0000059b,0x0004003d,0x00000006,0x000005a1,0x000000e9,0x0003003e, + 0x000005a0,0x000005a1,0x00090039,0x0000009f,0x000005a2,0x000000e6,0x0000059c,0x0000059d, + 0x0000059e,0x0000059f,0x000005a0,0x000200fe,0x000005a2,0x00010038,0x00050036,0x00000002, + 0x000000f3,0x00000000,0x000000ec,0x00030037,0x00000007,0x000000ed,0x00030037,0x00000007, + 0x000000ee,0x00030037,0x000000cc,0x000000ef,0x00030037,0x00000007,0x000000f0,0x00030037, + 0x00000007,0x000000f1,0x00030037,0x00000007,0x000000f2,0x000200f8,0x000000f4,0x0004003b, + 0x00000049,0x000005a5,0x00000007,0x0004003b,0x00000049,0x000005b3,0x00000007,0x0004003b, + 0x000005c0,0x000005c1,0x00000007,0x0004003b,0x000000cc,0x000005c4,0x00000007,0x0004003b, + 0x00000007,0x000005c5,0x00000007,0x0004003b,0x00000049,0x000005c9,0x00000007,0x0004003b, + 0x000000aa,0x000005cb,0x00000007,0x0004003b,0x00000007,0x000005ce,0x00000007,0x0004003b, + 0x00000007,0x000005cf,0x00000007,0x0004003b,0x000000cc,0x000005ec,0x00000007,0x0004003b, + 0x00000007,0x000005ed,0x00000007,0x0004003b,0x00000049,0x000005f1,0x00000007,0x0004003b, + 0x000000aa,0x000005f3,0x00000007,0x0004003b,0x00000007,0x000005f6,0x00000007,0x0004003b, + 0x00000007,0x000005f7,0x00000007,0x0004003b,0x000000cc,0x00000614,0x00000007,0x0004003b, + 0x00000007,0x00000615,0x00000007,0x0004003b,0x00000049,0x00000619,0x00000007,0x0004003b, + 0x000000aa,0x0000061b,0x00000007,0x0004003b,0x00000007,0x0000061e,0x00000007,0x0004003b, + 0x00000007,0x0000061f,0x00000007,0x0004003b,0x000000cc,0x0000063e,0x00000007,0x0004003b, + 0x00000007,0x0000063f,0x00000007,0x0004003b,0x00000049,0x00000643,0x00000007,0x0004003b, + 0x000000aa,0x00000645,0x00000007,0x0004003b,0x00000007,0x00000648,0x00000007,0x0004003b, + 0x00000007,0x00000649,0x00000007,0x0004003b,0x00000007,0x00000651,0x00000007,0x0004003b, + 0x00000007,0x0000065a,0x00000007,0x0004003b,0x00000007,0x0000065c,0x00000007,0x0004003b, + 0x000000aa,0x0000065e,0x00000007,0x0004003b,0x000000cc,0x00000684,0x00000007,0x0004003b, + 0x000000cc,0x00000685,0x00000007,0x0004003b,0x000000cc,0x00000686,0x00000007,0x0004003b, + 0x000000cc,0x00000687,0x00000007,0x0004003b,0x00000049,0x0000069e,0x00000007,0x0004003b, + 0x000000aa,0x0000069f,0x00000007,0x0004003b,0x00000007,0x000006a2,0x00000007,0x0004003b, + 0x00000007,0x000006a3,0x00000007,0x0004003b,0x00000007,0x000006b1,0x00000007,0x0004003b, + 0x00000007,0x000006b2,0x00000007,0x0004003b,0x000000aa,0x000006b3,0x00000007,0x0004003b, + 0x00000007,0x000006bb,0x00000007,0x0004003b,0x00000007,0x000006bc,0x00000007,0x0004003b, + 0x000000aa,0x000006bd,0x00000007,0x0004003b,0x00000007,0x000006c5,0x00000007,0x0004003b, + 0x00000007,0x000006c6,0x00000007,0x0004003b,0x000000aa,0x000006c7,0x00000007,0x0004003b, + 0x00000007,0x000006cf,0x00000007,0x0004003b,0x00000007,0x000006d0,0x00000007,0x0004003b, + 0x000000aa,0x000006d1,0x00000007,0x0004003d,0x0000002d,0x000005a6,0x000000ef,0x00050050, + 0x0000002d,0x000005a8,0x000005a7,0x000005a7,0x00050084,0x0000002d,0x000005a9,0x000005a6, + 0x000005a8,0x0004007c,0x00000032,0x000005aa,0x000005a9,0x0004003d,0x00000006,0x000005ab, + 0x000000ed,0x00050084,0x00000006,0x000005ac,0x000005ab,0x0000016e,0x0004007c,0x0000001a, + 0x000005ad,0x000005ac,0x0004003d,0x00000006,0x000005ae,0x000000ee,0x00050084,0x00000006, + 0x000005af,0x000005ae,0x0000016e,0x0004007c,0x0000001a,0x000005b0,0x000005af,0x00050050, + 0x00000032,0x000005b1,0x000005ad,0x000005b0,0x00050080,0x00000032,0x000005b2,0x000005aa, + 0x000005b1,0x0003003e,0x000005a5,0x000005b2,0x0004003d,0x0000002d,0x000005b4,0x000000ef, + 0x00050050,0x0000002d,0x000005b6,0x000005b5,0x000005b5,0x00050084,0x0000002d,0x000005b7, + 0x000005b4,0x000005b6,0x0004007c,0x00000032,0x000005b8,0x000005b7,0x0004003d,0x00000006, + 0x000005b9,0x000000ed,0x0004007c,0x0000001a,0x000005ba,0x000005b9,0x0004003d,0x00000006, + 0x000005bb,0x000000ee,0x0004007c,0x0000001a,0x000005bc,0x000005bb,0x00050050,0x00000032, + 0x000005bd,0x000005ba,0x000005bc,0x00050080,0x00000032,0x000005be,0x000005b8,0x000005bd, + 0x0003003e,0x000005b3,0x000005be,0x0004003d,0x00000032,0x000005c2,0x000005a5,0x0004007c, + 0x0000002d,0x000005c3,0x000005c2,0x0003003e,0x000005c4,0x000005c3,0x0004003d,0x00000006, + 0x000005c6,0x000000f2,0x0003003e,0x000005c5,0x000005c6,0x00060039,0x0000009f,0x000005c7, + 0x000000ea,0x000005c4,0x000005c5,0x00050041,0x000000aa,0x000005c8,0x000005c1,0x0000014f, + 0x0003003e,0x000005c8,0x000005c7,0x0004003d,0x00000032,0x000005ca,0x000005b3,0x0003003e, + 0x000005c9,0x000005ca,0x00050041,0x000000aa,0x000005cc,0x000005c1,0x0000014f,0x0004003d, + 0x0000009f,0x000005cd,0x000005cc,0x0003003e,0x000005cb,0x000005cd,0x0003003e,0x000005ce, + 0x000001c2,0x0004003d,0x00000006,0x000005d0,0x000000f2,0x0003003e,0x000005cf,0x000005d0, + 0x00080039,0x00000002,0x000005d1,0x000000b7,0x000005c9,0x000005cb,0x000005ce,0x000005cf, + 0x0004003d,0x0000002d,0x000005d2,0x000000ef,0x00050050,0x0000002d,0x000005d3,0x000005a7, + 0x000005a7,0x00050084,0x0000002d,0x000005d4,0x000005d2,0x000005d3,0x0004007c,0x00000032, + 0x000005d5,0x000005d4,0x0004003d,0x00000006,0x000005d6,0x000000ed,0x00050084,0x00000006, + 0x000005d7,0x000005d6,0x0000016e,0x00050080,0x00000006,0x000005d8,0x000005d7,0x000005b5, + 0x0004007c,0x0000001a,0x000005d9,0x000005d8,0x0004003d,0x00000006,0x000005da,0x000000ee, + 0x00050084,0x00000006,0x000005db,0x000005da,0x0000016e,0x0004007c,0x0000001a,0x000005dc, + 0x000005db,0x00050050,0x00000032,0x000005dd,0x000005d9,0x000005dc,0x00050080,0x00000032, + 0x000005de,0x000005d5,0x000005dd,0x0003003e,0x000005a5,0x000005de,0x0004003d,0x0000002d, + 0x000005df,0x000000ef,0x00050050,0x0000002d,0x000005e0,0x000005b5,0x000005b5,0x00050084, + 0x0000002d,0x000005e1,0x000005df,0x000005e0,0x0004007c,0x00000032,0x000005e2,0x000005e1, + 0x0004003d,0x00000006,0x000005e3,0x000000ed,0x00050080,0x00000006,0x000005e4,0x000005e3, + 0x000004c2,0x0004007c,0x0000001a,0x000005e5,0x000005e4,0x0004003d,0x00000006,0x000005e6, + 0x000000ee,0x0004007c,0x0000001a,0x000005e7,0x000005e6,0x00050050,0x00000032,0x000005e8, + 0x000005e5,0x000005e7,0x00050080,0x00000032,0x000005e9,0x000005e2,0x000005e8,0x0003003e, + 0x000005b3,0x000005e9,0x0004003d,0x00000032,0x000005ea,0x000005a5,0x0004007c,0x0000002d, + 0x000005eb,0x000005ea,0x0003003e,0x000005ec,0x000005eb,0x0004003d,0x00000006,0x000005ee, + 0x000000f2,0x0003003e,0x000005ed,0x000005ee,0x00060039,0x0000009f,0x000005ef,0x000000ea, + 0x000005ec,0x000005ed,0x00050041,0x000000aa,0x000005f0,0x000005c1,0x00000194,0x0003003e, + 0x000005f0,0x000005ef,0x0004003d,0x00000032,0x000005f2,0x000005b3,0x0003003e,0x000005f1, + 0x000005f2,0x00050041,0x000000aa,0x000005f4,0x000005c1,0x00000194,0x0004003d,0x0000009f, + 0x000005f5,0x000005f4,0x0003003e,0x000005f3,0x000005f5,0x0003003e,0x000005f6,0x000001c2, + 0x0004003d,0x00000006,0x000005f8,0x000000f2,0x0003003e,0x000005f7,0x000005f8,0x00080039, + 0x00000002,0x000005f9,0x000000b7,0x000005f1,0x000005f3,0x000005f6,0x000005f7,0x0004003d, + 0x0000002d,0x000005fa,0x000000ef,0x00050050,0x0000002d,0x000005fb,0x000005a7,0x000005a7, + 0x00050084,0x0000002d,0x000005fc,0x000005fa,0x000005fb,0x0004007c,0x00000032,0x000005fd, + 0x000005fc,0x0004003d,0x00000006,0x000005fe,0x000000ed,0x00050084,0x00000006,0x000005ff, + 0x000005fe,0x0000016e,0x0004007c,0x0000001a,0x00000600,0x000005ff,0x0004003d,0x00000006, + 0x00000601,0x000000ee,0x00050084,0x00000006,0x00000602,0x00000601,0x0000016e,0x00050080, + 0x00000006,0x00000603,0x00000602,0x000005b5,0x0004007c,0x0000001a,0x00000604,0x00000603, + 0x00050050,0x00000032,0x00000605,0x00000600,0x00000604,0x00050080,0x00000032,0x00000606, + 0x000005fd,0x00000605,0x0003003e,0x000005a5,0x00000606,0x0004003d,0x0000002d,0x00000607, + 0x000000ef,0x00050050,0x0000002d,0x00000608,0x000005b5,0x000005b5,0x00050084,0x0000002d, + 0x00000609,0x00000607,0x00000608,0x0004007c,0x00000032,0x0000060a,0x00000609,0x0004003d, + 0x00000006,0x0000060b,0x000000ed,0x0004007c,0x0000001a,0x0000060c,0x0000060b,0x0004003d, + 0x00000006,0x0000060d,0x000000ee,0x00050080,0x00000006,0x0000060e,0x0000060d,0x000004c2, + 0x0004007c,0x0000001a,0x0000060f,0x0000060e,0x00050050,0x00000032,0x00000610,0x0000060c, + 0x0000060f,0x00050080,0x00000032,0x00000611,0x0000060a,0x00000610,0x0003003e,0x000005b3, + 0x00000611,0x0004003d,0x00000032,0x00000612,0x000005a5,0x0004007c,0x0000002d,0x00000613, + 0x00000612,0x0003003e,0x00000614,0x00000613,0x0004003d,0x00000006,0x00000616,0x000000f2, + 0x0003003e,0x00000615,0x00000616,0x00060039,0x0000009f,0x00000617,0x000000ea,0x00000614, + 0x00000615,0x00050041,0x000000aa,0x00000618,0x000005c1,0x000001b6,0x0003003e,0x00000618, + 0x00000617,0x0004003d,0x00000032,0x0000061a,0x000005b3,0x0003003e,0x00000619,0x0000061a, + 0x00050041,0x000000aa,0x0000061c,0x000005c1,0x000001b6,0x0004003d,0x0000009f,0x0000061d, + 0x0000061c,0x0003003e,0x0000061b,0x0000061d,0x0003003e,0x0000061e,0x000001c2,0x0004003d, + 0x00000006,0x00000620,0x000000f2,0x0003003e,0x0000061f,0x00000620,0x00080039,0x00000002, + 0x00000621,0x000000b7,0x00000619,0x0000061b,0x0000061e,0x0000061f,0x0004003d,0x0000002d, + 0x00000622,0x000000ef,0x00050050,0x0000002d,0x00000623,0x000005a7,0x000005a7,0x00050084, + 0x0000002d,0x00000624,0x00000622,0x00000623,0x0004007c,0x00000032,0x00000625,0x00000624, + 0x0004003d,0x00000006,0x00000626,0x000000ed,0x00050084,0x00000006,0x00000627,0x00000626, + 0x0000016e,0x00050080,0x00000006,0x00000628,0x00000627,0x000005b5,0x0004007c,0x0000001a, + 0x00000629,0x00000628,0x0004003d,0x00000006,0x0000062a,0x000000ee,0x00050084,0x00000006, + 0x0000062b,0x0000062a,0x0000016e,0x00050080,0x00000006,0x0000062c,0x0000062b,0x000005b5, + 0x0004007c,0x0000001a,0x0000062d,0x0000062c,0x00050050,0x00000032,0x0000062e,0x00000629, + 0x0000062d,0x00050080,0x00000032,0x0000062f,0x00000625,0x0000062e,0x0003003e,0x000005a5, + 0x0000062f,0x0004003d,0x0000002d,0x00000630,0x000000ef,0x00050050,0x0000002d,0x00000631, + 0x000005b5,0x000005b5,0x00050084,0x0000002d,0x00000632,0x00000630,0x00000631,0x0004007c, + 0x00000032,0x00000633,0x00000632,0x0004003d,0x00000006,0x00000634,0x000000ed,0x00050080, + 0x00000006,0x00000635,0x00000634,0x000004c2,0x0004007c,0x0000001a,0x00000636,0x00000635, + 0x0004003d,0x00000006,0x00000637,0x000000ee,0x00050080,0x00000006,0x00000638,0x00000637, + 0x000004c2,0x0004007c,0x0000001a,0x00000639,0x00000638,0x00050050,0x00000032,0x0000063a, + 0x00000636,0x00000639,0x00050080,0x00000032,0x0000063b,0x00000633,0x0000063a,0x0003003e, + 0x000005b3,0x0000063b,0x0004003d,0x00000032,0x0000063c,0x000005a5,0x0004007c,0x0000002d, + 0x0000063d,0x0000063c,0x0003003e,0x0000063e,0x0000063d,0x0004003d,0x00000006,0x00000640, + 0x000000f2,0x0003003e,0x0000063f,0x00000640,0x00060039,0x0000009f,0x00000641,0x000000ea, + 0x0000063e,0x0000063f,0x00050041,0x000000aa,0x00000642,0x000005c1,0x000002bd,0x0003003e, + 0x00000642,0x00000641,0x0004003d,0x00000032,0x00000644,0x000005b3,0x0003003e,0x00000643, + 0x00000644,0x00050041,0x000000aa,0x00000646,0x000005c1,0x000002bd,0x0004003d,0x0000009f, + 0x00000647,0x00000646,0x0003003e,0x00000645,0x00000647,0x0003003e,0x00000648,0x000001c2, + 0x0004003d,0x00000006,0x0000064a,0x000000f2,0x0003003e,0x00000649,0x0000064a,0x00080039, + 0x00000002,0x0000064b,0x000000b7,0x00000643,0x00000645,0x00000648,0x00000649,0x0004003d, + 0x00000006,0x0000064c,0x000000f1,0x000500b2,0x0000006e,0x0000064d,0x0000064c,0x00000175, + 0x000300f7,0x0000064f,0x00000000,0x000400fa,0x0000064d,0x0000064e,0x0000064f,0x000200f8, + 0x0000064e,0x000100fd,0x000200f8,0x0000064f,0x0003003e,0x00000651,0x000001c2,0x000200f9, + 0x00000652,0x000200f8,0x00000652,0x000400f6,0x00000654,0x00000655,0x00000000,0x000200f9, + 0x00000656,0x000200f8,0x00000656,0x0004003d,0x00000006,0x00000657,0x00000651,0x000500b0, + 0x0000006e,0x00000658,0x00000657,0x0000020e,0x000400fa,0x00000658,0x00000653,0x00000654, + 0x000200f8,0x00000653,0x0004003d,0x00000006,0x00000659,0x00000651,0x0004003d,0x00000006, + 0x0000065b,0x000000ed,0x0003003e,0x0000065a,0x0000065b,0x0004003d,0x00000006,0x0000065d, + 0x000000ee,0x0003003e,0x0000065c,0x0000065d,0x00050041,0x000000aa,0x0000065f,0x000005c1, + 0x00000659,0x0004003d,0x0000009f,0x00000660,0x0000065f,0x0003003e,0x0000065e,0x00000660, + 0x00070039,0x00000002,0x00000661,0x000000c2,0x0000065a,0x0000065c,0x0000065e,0x00040039, + 0x00000002,0x00000662,0x000000c4,0x0004003d,0x00000006,0x00000663,0x000000f0,0x000500b0, + 0x0000006e,0x00000664,0x00000663,0x000005a7,0x000300f7,0x00000666,0x00000000,0x000400fa, + 0x00000664,0x00000665,0x00000666,0x000200f8,0x00000665,0x0004003d,0x00000006,0x00000667, + 0x00000651,0x0004003d,0x00000006,0x00000668,0x000000ed,0x00050084,0x00000006,0x00000669, + 0x00000668,0x0000016e,0x00050080,0x00000006,0x0000066a,0x00000669,0x000001c2,0x0004003d, + 0x00000006,0x0000066b,0x000000ee,0x00050084,0x00000006,0x0000066c,0x0000066b,0x0000016e, + 0x00050080,0x00000006,0x0000066d,0x0000066c,0x000001c2,0x00050050,0x0000002d,0x0000066e, + 0x0000066a,0x0000066d,0x0004003d,0x00000006,0x0000066f,0x000000ed,0x00050084,0x00000006, + 0x00000670,0x0000066f,0x0000016e,0x00050080,0x00000006,0x00000671,0x00000670,0x00000175, + 0x0004003d,0x00000006,0x00000672,0x000000ee,0x00050084,0x00000006,0x00000673,0x00000672, + 0x0000016e,0x00050080,0x00000006,0x00000674,0x00000673,0x000001c2,0x00050050,0x0000002d, + 0x00000675,0x00000671,0x00000674,0x0004003d,0x00000006,0x00000676,0x000000ed,0x00050084, + 0x00000006,0x00000677,0x00000676,0x0000016e,0x00050080,0x00000006,0x00000678,0x00000677, + 0x000001c2,0x0004003d,0x00000006,0x00000679,0x000000ee,0x00050084,0x00000006,0x0000067a, + 0x00000679,0x0000016e,0x00050080,0x00000006,0x0000067b,0x0000067a,0x00000175,0x00050050, + 0x0000002d,0x0000067c,0x00000678,0x0000067b,0x0004003d,0x00000006,0x0000067d,0x000000ed, + 0x00050084,0x00000006,0x0000067e,0x0000067d,0x0000016e,0x00050080,0x00000006,0x0000067f, + 0x0000067e,0x00000175,0x0004003d,0x00000006,0x00000680,0x000000ee,0x00050084,0x00000006, + 0x00000681,0x00000680,0x0000016e,0x00050080,0x00000006,0x00000682,0x00000681,0x00000175, + 0x00050050,0x0000002d,0x00000683,0x0000067f,0x00000682,0x0003003e,0x00000684,0x0000066e, + 0x0003003e,0x00000685,0x00000675,0x0003003e,0x00000686,0x0000067c,0x0003003e,0x00000687, + 0x00000683,0x00080039,0x0000009f,0x00000688,0x000000d2,0x00000684,0x00000685,0x00000686, + 0x00000687,0x00050041,0x000000aa,0x00000689,0x000005c1,0x00000667,0x0003003e,0x00000689, + 0x00000688,0x0004003d,0x0000002d,0x0000068a,0x000000ef,0x00050050,0x0000002d,0x0000068b, + 0x000004c2,0x000004c2,0x00050084,0x0000002d,0x0000068c,0x0000068a,0x0000068b,0x0004007c, + 0x00000032,0x0000068d,0x0000068c,0x0004003d,0x00000006,0x0000068e,0x000000ed,0x0004003d, + 0x00000006,0x0000068f,0x00000651,0x00050089,0x00000006,0x00000690,0x0000068f,0x0000016e, + 0x00050084,0x00000006,0x00000692,0x00000690,0x00000691,0x00050080,0x00000006,0x00000693, + 0x0000068e,0x00000692,0x0004007c,0x0000001a,0x00000694,0x00000693,0x0004003d,0x00000006, + 0x00000695,0x000000ee,0x0004003d,0x00000006,0x00000696,0x00000651,0x00050086,0x00000006, + 0x00000697,0x00000696,0x0000016e,0x00050084,0x00000006,0x00000698,0x00000697,0x00000691, + 0x00050080,0x00000006,0x00000699,0x00000695,0x00000698,0x0004007c,0x0000001a,0x0000069a, + 0x00000699,0x00050050,0x00000032,0x0000069b,0x00000694,0x0000069a,0x00050080,0x00000032, + 0x0000069c,0x0000068d,0x0000069b,0x0004003d,0x00000006,0x0000069d,0x00000651,0x0003003e, + 0x0000069e,0x0000069c,0x00050041,0x000000aa,0x000006a0,0x000005c1,0x0000069d,0x0004003d, + 0x0000009f,0x000006a1,0x000006a0,0x0003003e,0x0000069f,0x000006a1,0x0003003e,0x000006a2, + 0x00000175,0x0004003d,0x00000006,0x000006a4,0x000000f2,0x0003003e,0x000006a3,0x000006a4, + 0x00080039,0x00000002,0x000006a5,0x000000b7,0x0000069e,0x0000069f,0x000006a2,0x000006a3, + 0x000200f9,0x00000666,0x000200f8,0x00000666,0x00040039,0x00000002,0x000006a6,0x000000c4, + 0x000200f9,0x00000655,0x000200f8,0x00000655,0x0004003d,0x00000006,0x000006a7,0x00000651, + 0x00050080,0x00000006,0x000006a8,0x000006a7,0x00000194,0x0003003e,0x00000651,0x000006a8, + 0x000200f9,0x00000652,0x000200f8,0x00000654,0x0004003d,0x00000006,0x000006a9,0x000000f0, + 0x000500b0,0x0000006e,0x000006aa,0x000006a9,0x000005a7,0x000300f7,0x000006ac,0x00000000, + 0x000400fa,0x000006aa,0x000006ab,0x000006ac,0x000200f8,0x000006ab,0x0004003d,0x00000006, + 0x000006ad,0x000000ed,0x00050080,0x00000006,0x000006ae,0x000006ad,0x000001c2,0x0004003d, + 0x00000006,0x000006af,0x000000ee,0x00050080,0x00000006,0x000006b0,0x000006af,0x000001c2, + 0x0003003e,0x000006b1,0x000006ae,0x0003003e,0x000006b2,0x000006b0,0x00050041,0x000000aa, + 0x000006b4,0x000005c1,0x0000014f,0x0004003d,0x0000009f,0x000006b5,0x000006b4,0x0003003e, + 0x000006b3,0x000006b5,0x00070039,0x00000002,0x000006b6,0x000000c2,0x000006b1,0x000006b2, + 0x000006b3,0x0004003d,0x00000006,0x000006b7,0x000000ed,0x00050080,0x00000006,0x000006b8, + 0x000006b7,0x00000691,0x0004003d,0x00000006,0x000006b9,0x000000ee,0x00050080,0x00000006, + 0x000006ba,0x000006b9,0x000001c2,0x0003003e,0x000006bb,0x000006b8,0x0003003e,0x000006bc, + 0x000006ba,0x00050041,0x000000aa,0x000006be,0x000005c1,0x00000194,0x0004003d,0x0000009f, + 0x000006bf,0x000006be,0x0003003e,0x000006bd,0x000006bf,0x00070039,0x00000002,0x000006c0, + 0x000000c2,0x000006bb,0x000006bc,0x000006bd,0x0004003d,0x00000006,0x000006c1,0x000000ed, + 0x00050080,0x00000006,0x000006c2,0x000006c1,0x000001c2,0x0004003d,0x00000006,0x000006c3, + 0x000000ee,0x00050080,0x00000006,0x000006c4,0x000006c3,0x00000691,0x0003003e,0x000006c5, + 0x000006c2,0x0003003e,0x000006c6,0x000006c4,0x00050041,0x000000aa,0x000006c8,0x000005c1, + 0x000001b6,0x0004003d,0x0000009f,0x000006c9,0x000006c8,0x0003003e,0x000006c7,0x000006c9, + 0x00070039,0x00000002,0x000006ca,0x000000c2,0x000006c5,0x000006c6,0x000006c7,0x0004003d, + 0x00000006,0x000006cb,0x000000ed,0x00050080,0x00000006,0x000006cc,0x000006cb,0x00000691, + 0x0004003d,0x00000006,0x000006cd,0x000000ee,0x00050080,0x00000006,0x000006ce,0x000006cd, + 0x00000691,0x0003003e,0x000006cf,0x000006cc,0x0003003e,0x000006d0,0x000006ce,0x00050041, + 0x000000aa,0x000006d2,0x000005c1,0x000002bd,0x0004003d,0x0000009f,0x000006d3,0x000006d2, + 0x0003003e,0x000006d1,0x000006d3,0x00070039,0x00000002,0x000006d4,0x000000c2,0x000006cf, + 0x000006d0,0x000006d1,0x000200f9,0x000006ac,0x000200f8,0x000006ac,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x000000fb,0x00000000,0x000000ec,0x00030037,0x00000007,0x000000f5, + 0x00030037,0x00000007,0x000000f6,0x00030037,0x000000cc,0x000000f7,0x00030037,0x00000007, + 0x000000f8,0x00030037,0x00000007,0x000000f9,0x00030037,0x00000007,0x000000fa,0x000200f8, + 0x000000fc,0x0004003b,0x00000007,0x000006d5,0x00000007,0x0004003b,0x00000007,0x000006d7, + 0x00000007,0x0004003b,0x000000cc,0x000006d9,0x00000007,0x0004003b,0x00000007,0x000006db, + 0x00000007,0x0004003b,0x00000007,0x000006dd,0x00000007,0x0004003b,0x00000007,0x000006df, + 0x00000007,0x0004003d,0x00000006,0x000006d6,0x000000f5,0x0003003e,0x000006d5,0x000006d6, + 0x0004003d,0x00000006,0x000006d8,0x000000f6,0x0003003e,0x000006d7,0x000006d8,0x0004003d, + 0x0000002d,0x000006da,0x000000f7,0x0003003e,0x000006d9,0x000006da,0x0004003d,0x00000006, + 0x000006dc,0x000000f8,0x0003003e,0x000006db,0x000006dc,0x0004003d,0x00000006,0x000006de, + 0x000000f9,0x0003003e,0x000006dd,0x000006de,0x0004003d,0x00000006,0x000006e0,0x000000fa, + 0x0003003e,0x000006df,0x000006e0,0x000a0039,0x00000002,0x000006e1,0x000000f3,0x000006d5, + 0x000006d7,0x000006d9,0x000006db,0x000006dd,0x000006df,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x00000103,0x00000000,0x000000ec,0x00030037,0x00000007,0x000000fd,0x00030037, + 0x00000007,0x000000fe,0x00030037,0x000000cc,0x000000ff,0x00030037,0x00000007,0x00000100, + 0x00030037,0x00000007,0x00000101,0x00030037,0x00000007,0x00000102,0x000200f8,0x00000104, + 0x0004003b,0x000000aa,0x000006e6,0x00000007,0x0004003b,0x000000cc,0x00000703,0x00000007, + 0x0004003b,0x000000cc,0x00000704,0x00000007,0x0004003b,0x000000cc,0x00000705,0x00000007, + 0x0004003b,0x000000cc,0x00000706,0x00000007,0x0004003b,0x00000049,0x00000712,0x00000007, + 0x0004003b,0x000000aa,0x00000713,0x00000007,0x0004003b,0x00000007,0x00000715,0x00000007, + 0x0004003b,0x00000007,0x00000717,0x00000007,0x0004003b,0x00000007,0x00000721,0x00000007, + 0x0004003b,0x00000007,0x00000722,0x00000007,0x0004003b,0x000000aa,0x00000723,0x00000007, + 0x0004003d,0x00000006,0x000006e2,0x00000100,0x000500b0,0x0000006e,0x000006e3,0x000006e2, + 0x000005a7,0x000300f7,0x000006e5,0x00000000,0x000400fa,0x000006e3,0x000006e4,0x000006e5, + 0x000200f8,0x000006e4,0x0004003d,0x00000006,0x000006e7,0x000000fd,0x00050084,0x00000006, + 0x000006e8,0x000006e7,0x0000016e,0x00050080,0x00000006,0x000006e9,0x000006e8,0x000001c2, + 0x0004003d,0x00000006,0x000006ea,0x000000fe,0x00050084,0x00000006,0x000006eb,0x000006ea, + 0x0000016e,0x00050080,0x00000006,0x000006ec,0x000006eb,0x000001c2,0x00050050,0x0000002d, + 0x000006ed,0x000006e9,0x000006ec,0x0004003d,0x00000006,0x000006ee,0x000000fd,0x00050084, + 0x00000006,0x000006ef,0x000006ee,0x0000016e,0x00050080,0x00000006,0x000006f0,0x000006ef, + 0x00000175,0x0004003d,0x00000006,0x000006f1,0x000000fe,0x00050084,0x00000006,0x000006f2, + 0x000006f1,0x0000016e,0x00050080,0x00000006,0x000006f3,0x000006f2,0x000001c2,0x00050050, + 0x0000002d,0x000006f4,0x000006f0,0x000006f3,0x0004003d,0x00000006,0x000006f5,0x000000fd, + 0x00050084,0x00000006,0x000006f6,0x000006f5,0x0000016e,0x00050080,0x00000006,0x000006f7, + 0x000006f6,0x000001c2,0x0004003d,0x00000006,0x000006f8,0x000000fe,0x00050084,0x00000006, + 0x000006f9,0x000006f8,0x0000016e,0x00050080,0x00000006,0x000006fa,0x000006f9,0x00000175, + 0x00050050,0x0000002d,0x000006fb,0x000006f7,0x000006fa,0x0004003d,0x00000006,0x000006fc, + 0x000000fd,0x00050084,0x00000006,0x000006fd,0x000006fc,0x0000016e,0x00050080,0x00000006, + 0x000006fe,0x000006fd,0x00000175,0x0004003d,0x00000006,0x000006ff,0x000000fe,0x00050084, + 0x00000006,0x00000700,0x000006ff,0x0000016e,0x00050080,0x00000006,0x00000701,0x00000700, + 0x00000175,0x00050050,0x0000002d,0x00000702,0x000006fe,0x00000701,0x0003003e,0x00000703, + 0x000006ed,0x0003003e,0x00000704,0x000006f4,0x0003003e,0x00000705,0x000006fb,0x0003003e, + 0x00000706,0x00000702,0x00080039,0x0000009f,0x00000707,0x000000d2,0x00000703,0x00000704, + 0x00000705,0x00000706,0x0003003e,0x000006e6,0x00000707,0x0004003d,0x0000002d,0x00000708, + 0x000000ff,0x00050050,0x0000002d,0x00000709,0x00000691,0x00000691,0x00050084,0x0000002d, + 0x0000070a,0x00000708,0x00000709,0x0004007c,0x00000032,0x0000070b,0x0000070a,0x0004003d, + 0x00000006,0x0000070c,0x000000fd,0x0004007c,0x0000001a,0x0000070d,0x0000070c,0x0004003d, + 0x00000006,0x0000070e,0x000000fe,0x0004007c,0x0000001a,0x0000070f,0x0000070e,0x00050050, + 0x00000032,0x00000710,0x0000070d,0x0000070f,0x00050080,0x00000032,0x00000711,0x0000070b, + 0x00000710,0x0003003e,0x00000712,0x00000711,0x0004003d,0x0000009f,0x00000714,0x000006e6, + 0x0003003e,0x00000713,0x00000714,0x0004003d,0x00000006,0x00000716,0x00000101,0x0003003e, + 0x00000715,0x00000716,0x0004003d,0x00000006,0x00000718,0x00000102,0x0003003e,0x00000717, + 0x00000718,0x00080039,0x00000002,0x00000719,0x000000b7,0x00000712,0x00000713,0x00000715, + 0x00000717,0x0004003d,0x00000006,0x0000071a,0x000000fd,0x00050084,0x00000006,0x0000071b, + 0x0000071a,0x0000016e,0x0004003d,0x00000006,0x0000071c,0x000000fe,0x00050089,0x00000006, + 0x0000071d,0x0000071c,0x0000016e,0x00050080,0x00000006,0x0000071e,0x0000071b,0x0000071d, + 0x0004003d,0x00000006,0x0000071f,0x000000fe,0x00050084,0x00000006,0x00000720,0x0000071f, + 0x0000016e,0x0003003e,0x00000721,0x0000071e,0x0003003e,0x00000722,0x00000720,0x0004003d, + 0x0000009f,0x00000724,0x000006e6,0x0003003e,0x00000723,0x00000724,0x00070039,0x00000002, + 0x00000725,0x000000c2,0x00000721,0x00000722,0x00000723,0x000200f9,0x000006e5,0x000200f8, + 0x000006e5,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000010b,0x00000000,0x000000ec, + 0x00030037,0x00000007,0x00000105,0x00030037,0x00000007,0x00000106,0x00030037,0x000000cc, + 0x00000107,0x00030037,0x00000007,0x00000108,0x00030037,0x00000007,0x00000109,0x00030037, + 0x00000007,0x0000010a,0x000200f8,0x0000010c,0x0004003b,0x000000aa,0x0000072a,0x00000007, + 0x0004003b,0x000000cc,0x0000074b,0x00000007,0x0004003b,0x000000cc,0x0000074c,0x00000007, + 0x0004003b,0x000000cc,0x0000074d,0x00000007,0x0004003b,0x000000cc,0x0000074e,0x00000007, + 0x0004003b,0x00000049,0x0000075a,0x00000007,0x0004003b,0x000000aa,0x0000075b,0x00000007, + 0x0004003b,0x00000007,0x0000075d,0x00000007,0x0004003b,0x00000007,0x0000075f,0x00000007, + 0x0004003b,0x00000007,0x00000768,0x00000007,0x0004003b,0x00000007,0x00000769,0x00000007, + 0x0004003b,0x000000aa,0x0000076a,0x00000007,0x0004003d,0x00000006,0x00000726,0x00000108, + 0x000500b0,0x0000006e,0x00000727,0x00000726,0x000004c2,0x000300f7,0x00000729,0x00000000, + 0x000400fa,0x00000727,0x00000728,0x00000729,0x000200f8,0x00000728,0x0004003d,0x00000006, + 0x0000072b,0x00000105,0x00050084,0x00000006,0x0000072c,0x0000072b,0x0000020e,0x00050080, + 0x00000006,0x0000072d,0x0000072c,0x000001c2,0x00050080,0x00000006,0x0000072e,0x0000072d, + 0x000001c2,0x0004003d,0x00000006,0x0000072f,0x00000106,0x00050084,0x00000006,0x00000730, + 0x0000072f,0x0000020e,0x00050080,0x00000006,0x00000731,0x00000730,0x000001c2,0x00050050, + 0x0000002d,0x00000732,0x0000072e,0x00000731,0x0004003d,0x00000006,0x00000733,0x00000105, + 0x00050084,0x00000006,0x00000734,0x00000733,0x0000020e,0x00050080,0x00000006,0x00000735, + 0x00000734,0x0000016e,0x00050080,0x00000006,0x00000736,0x00000735,0x000001c2,0x0004003d, + 0x00000006,0x00000737,0x00000106,0x00050084,0x00000006,0x00000738,0x00000737,0x0000020e, + 0x00050080,0x00000006,0x00000739,0x00000738,0x000001c2,0x00050050,0x0000002d,0x0000073a, + 0x00000736,0x00000739,0x0004003d,0x00000006,0x0000073b,0x00000105,0x00050084,0x00000006, + 0x0000073c,0x0000073b,0x0000020e,0x00050080,0x00000006,0x0000073d,0x0000073c,0x000001c2, + 0x00050080,0x00000006,0x0000073e,0x0000073d,0x00000175,0x0004003d,0x00000006,0x0000073f, + 0x00000106,0x00050084,0x00000006,0x00000740,0x0000073f,0x0000020e,0x00050080,0x00000006, + 0x00000741,0x00000740,0x0000016e,0x00050050,0x0000002d,0x00000742,0x0000073e,0x00000741, + 0x0004003d,0x00000006,0x00000743,0x00000105,0x00050084,0x00000006,0x00000744,0x00000743, + 0x0000020e,0x00050080,0x00000006,0x00000745,0x00000744,0x0000016e,0x00050080,0x00000006, + 0x00000746,0x00000745,0x00000175,0x0004003d,0x00000006,0x00000747,0x00000106,0x00050084, + 0x00000006,0x00000748,0x00000747,0x0000020e,0x00050080,0x00000006,0x00000749,0x00000748, + 0x0000016e,0x00050050,0x0000002d,0x0000074a,0x00000746,0x00000749,0x0003003e,0x0000074b, + 0x00000732,0x0003003e,0x0000074c,0x0000073a,0x0003003e,0x0000074d,0x00000742,0x0003003e, + 0x0000074e,0x0000074a,0x00080039,0x0000009f,0x0000074f,0x000000d2,0x0000074b,0x0000074c, + 0x0000074d,0x0000074e,0x0003003e,0x0000072a,0x0000074f,0x0004003d,0x0000002d,0x00000750, + 0x00000107,0x00050050,0x0000002d,0x00000751,0x0000020e,0x0000020e,0x00050084,0x0000002d, + 0x00000752,0x00000750,0x00000751,0x0004007c,0x00000032,0x00000753,0x00000752,0x0004003d, + 0x00000006,0x00000754,0x00000105,0x0004007c,0x0000001a,0x00000755,0x00000754,0x0004003d, + 0x00000006,0x00000756,0x00000106,0x0004007c,0x0000001a,0x00000757,0x00000756,0x00050050, + 0x00000032,0x00000758,0x00000755,0x00000757,0x00050080,0x00000032,0x00000759,0x00000753, + 0x00000758,0x0003003e,0x0000075a,0x00000759,0x0004003d,0x0000009f,0x0000075c,0x0000072a, + 0x0003003e,0x0000075b,0x0000075c,0x0004003d,0x00000006,0x0000075e,0x00000109,0x0003003e, + 0x0000075d,0x0000075e,0x0004003d,0x00000006,0x00000760,0x0000010a,0x0003003e,0x0000075f, + 0x00000760,0x00080039,0x00000002,0x00000761,0x000000b7,0x0000075a,0x0000075b,0x0000075d, + 0x0000075f,0x0004003d,0x00000006,0x00000762,0x00000105,0x00050084,0x00000006,0x00000763, + 0x00000762,0x0000020e,0x0004003d,0x00000006,0x00000764,0x00000106,0x00050080,0x00000006, + 0x00000765,0x00000763,0x00000764,0x0004003d,0x00000006,0x00000766,0x00000106,0x00050084, + 0x00000006,0x00000767,0x00000766,0x0000020e,0x0003003e,0x00000768,0x00000765,0x0003003e, + 0x00000769,0x00000767,0x0004003d,0x0000009f,0x0000076b,0x0000072a,0x0003003e,0x0000076a, + 0x0000076b,0x00070039,0x00000002,0x0000076c,0x000000c2,0x00000768,0x00000769,0x0000076a, + 0x000200f9,0x00000729,0x000200f8,0x00000729,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000113,0x00000000,0x000000ec,0x00030037,0x00000007,0x0000010d,0x00030037,0x00000007, + 0x0000010e,0x00030037,0x000000cc,0x0000010f,0x00030037,0x00000007,0x00000110,0x00030037, + 0x00000007,0x00000111,0x00030037,0x00000007,0x00000112,0x000200f8,0x00000114,0x0004003b, + 0x000000aa,0x00000771,0x00000007,0x0004003b,0x000000cc,0x0000079e,0x00000007,0x0004003b, + 0x000000cc,0x0000079f,0x00000007,0x0004003b,0x000000cc,0x000007a0,0x00000007,0x0004003b, + 0x000000cc,0x000007a1,0x00000007,0x0004003b,0x00000049,0x000007ad,0x00000007,0x0004003b, + 0x000000aa,0x000007ae,0x00000007,0x0004003b,0x00000007,0x000007b0,0x00000007,0x0004003b, + 0x00000007,0x000007b2,0x00000007,0x0004003b,0x00000007,0x000007b9,0x00000007,0x0004003b, + 0x00000007,0x000007ba,0x00000007,0x0004003b,0x000000aa,0x000007bb,0x00000007,0x0004003d, + 0x00000006,0x0000076d,0x00000110,0x000500b0,0x0000006e,0x0000076e,0x0000076d,0x0000020e, + 0x000300f7,0x00000770,0x00000000,0x000400fa,0x0000076e,0x0000076f,0x00000770,0x000200f8, + 0x0000076f,0x0004003d,0x00000006,0x00000772,0x0000010d,0x00050084,0x00000006,0x00000773, + 0x00000772,0x00000691,0x00050080,0x00000006,0x00000774,0x00000773,0x000001c2,0x00050080, + 0x00000006,0x00000775,0x00000774,0x000001c2,0x0004003d,0x00000006,0x00000776,0x0000010e, + 0x00050084,0x00000006,0x00000777,0x00000776,0x0000016e,0x00050080,0x00000006,0x00000778, + 0x00000775,0x00000777,0x0004003d,0x00000006,0x00000779,0x0000010e,0x00050084,0x00000006, + 0x0000077a,0x00000779,0x00000691,0x00050080,0x00000006,0x0000077b,0x0000077a,0x000001c2, + 0x00050050,0x0000002d,0x0000077c,0x00000778,0x0000077b,0x0004003d,0x00000006,0x0000077d, + 0x0000010d,0x00050084,0x00000006,0x0000077e,0x0000077d,0x00000691,0x00050080,0x00000006, + 0x0000077f,0x0000077e,0x0000020e,0x00050080,0x00000006,0x00000780,0x0000077f,0x000001c2, + 0x0004003d,0x00000006,0x00000781,0x0000010e,0x00050084,0x00000006,0x00000782,0x00000781, + 0x0000016e,0x00050080,0x00000006,0x00000783,0x00000780,0x00000782,0x0004003d,0x00000006, + 0x00000784,0x0000010e,0x00050084,0x00000006,0x00000785,0x00000784,0x00000691,0x00050080, + 0x00000006,0x00000786,0x00000785,0x000001c2,0x00050050,0x0000002d,0x00000787,0x00000783, + 0x00000786,0x0004003d,0x00000006,0x00000788,0x0000010d,0x00050084,0x00000006,0x00000789, + 0x00000788,0x00000691,0x00050080,0x00000006,0x0000078a,0x00000789,0x000001c2,0x00050080, + 0x00000006,0x0000078b,0x0000078a,0x00000175,0x0004003d,0x00000006,0x0000078c,0x0000010e, + 0x00050084,0x00000006,0x0000078d,0x0000078c,0x0000016e,0x00050080,0x00000006,0x0000078e, + 0x0000078b,0x0000078d,0x0004003d,0x00000006,0x0000078f,0x0000010e,0x00050084,0x00000006, + 0x00000790,0x0000078f,0x00000691,0x00050080,0x00000006,0x00000791,0x00000790,0x0000020e, + 0x00050050,0x0000002d,0x00000792,0x0000078e,0x00000791,0x0004003d,0x00000006,0x00000793, + 0x0000010d,0x00050084,0x00000006,0x00000794,0x00000793,0x00000691,0x00050080,0x00000006, + 0x00000795,0x00000794,0x0000020e,0x00050080,0x00000006,0x00000796,0x00000795,0x00000175, + 0x0004003d,0x00000006,0x00000797,0x0000010e,0x00050084,0x00000006,0x00000798,0x00000797, + 0x0000016e,0x00050080,0x00000006,0x00000799,0x00000796,0x00000798,0x0004003d,0x00000006, + 0x0000079a,0x0000010e,0x00050084,0x00000006,0x0000079b,0x0000079a,0x00000691,0x00050080, + 0x00000006,0x0000079c,0x0000079b,0x0000020e,0x00050050,0x0000002d,0x0000079d,0x00000799, + 0x0000079c,0x0003003e,0x0000079e,0x0000077c,0x0003003e,0x0000079f,0x00000787,0x0003003e, + 0x000007a0,0x00000792,0x0003003e,0x000007a1,0x0000079d,0x00080039,0x0000009f,0x000007a2, + 0x000000d2,0x0000079e,0x0000079f,0x000007a0,0x000007a1,0x0003003e,0x00000771,0x000007a2, + 0x0004003d,0x0000002d,0x000007a3,0x0000010f,0x00050050,0x0000002d,0x000007a4,0x0000016e, + 0x0000016e,0x00050084,0x0000002d,0x000007a5,0x000007a3,0x000007a4,0x0004007c,0x00000032, + 0x000007a6,0x000007a5,0x0004003d,0x00000006,0x000007a7,0x0000010d,0x0004007c,0x0000001a, + 0x000007a8,0x000007a7,0x0004003d,0x00000006,0x000007a9,0x0000010e,0x0004007c,0x0000001a, + 0x000007aa,0x000007a9,0x00050050,0x00000032,0x000007ab,0x000007a8,0x000007aa,0x00050080, + 0x00000032,0x000007ac,0x000007a6,0x000007ab,0x0003003e,0x000007ad,0x000007ac,0x0004003d, + 0x0000009f,0x000007af,0x00000771,0x0003003e,0x000007ae,0x000007af,0x0004003d,0x00000006, + 0x000007b1,0x00000111,0x0003003e,0x000007b0,0x000007b1,0x0004003d,0x00000006,0x000007b3, + 0x00000112,0x0003003e,0x000007b2,0x000007b3,0x00080039,0x00000002,0x000007b4,0x000000b7, + 0x000007ad,0x000007ae,0x000007b0,0x000007b2,0x0004003d,0x00000006,0x000007b5,0x0000010d, + 0x0004003d,0x00000006,0x000007b6,0x0000010e,0x00050084,0x00000006,0x000007b7,0x000007b6, + 0x0000016e,0x00050080,0x00000006,0x000007b8,0x000007b5,0x000007b7,0x0003003e,0x000007b9, + 0x000007b8,0x0003003e,0x000007ba,0x000001c2,0x0004003d,0x0000009f,0x000007bc,0x00000771, + 0x0003003e,0x000007bb,0x000007bc,0x00070039,0x00000002,0x000007bd,0x000000c2,0x000007b9, + 0x000007ba,0x000007bb,0x000200f9,0x00000770,0x000200f8,0x00000770,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x0000011a,0x00000000,0x00000115,0x00030037,0x000000cc,0x00000116, + 0x00030037,0x00000007,0x00000117,0x00030037,0x00000007,0x00000118,0x00030037,0x00000007, + 0x00000119,0x000200f8,0x0000011b,0x0004003b,0x000000aa,0x000007c2,0x00000007,0x0004003b, + 0x000000cc,0x000007c5,0x00000007,0x0004003b,0x000000cc,0x000007c6,0x00000007,0x0004003b, + 0x000000cc,0x000007c7,0x00000007,0x0004003b,0x000000cc,0x000007c8,0x00000007,0x0004003b, + 0x00000049,0x000007cc,0x00000007,0x0004003b,0x000000aa,0x000007cd,0x00000007,0x0004003b, + 0x00000007,0x000007cf,0x00000007,0x0004003b,0x00000007,0x000007d1,0x00000007,0x0004003d, + 0x00000006,0x000007be,0x00000117,0x000500b0,0x0000006e,0x000007bf,0x000007be,0x00000175, + 0x000300f7,0x000007c1,0x00000000,0x000400fa,0x000007bf,0x000007c0,0x000007c1,0x000200f8, + 0x000007c0,0x0003003e,0x000007c5,0x00000555,0x0003003e,0x000007c6,0x0000055b,0x0003003e, + 0x000007c7,0x000007c3,0x0003003e,0x000007c8,0x000007c4,0x00080039,0x0000009f,0x000007c9, + 0x000000d2,0x000007c5,0x000007c6,0x000007c7,0x000007c8,0x0003003e,0x000007c2,0x000007c9, + 0x0004003d,0x0000002d,0x000007ca,0x00000116,0x0004007c,0x00000032,0x000007cb,0x000007ca, + 0x0003003e,0x000007cc,0x000007cb,0x0004003d,0x0000009f,0x000007ce,0x000007c2,0x0003003e, + 0x000007cd,0x000007ce,0x0004003d,0x00000006,0x000007d0,0x00000118,0x0003003e,0x000007cf, + 0x000007d0,0x0004003d,0x00000006,0x000007d2,0x00000119,0x0003003e,0x000007d1,0x000007d2, + 0x00080039,0x00000002,0x000007d3,0x000000b7,0x000007cc,0x000007cd,0x000007cf,0x000007d1, + 0x000200f9,0x000007c1,0x000200f8,0x000007c1,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000121,0x00000000,0x0000011c,0x00030037,0x00000007,0x0000011d,0x00030037,0x00000007, + 0x0000011e,0x00030037,0x00000007,0x0000011f,0x00030037,0x00000007,0x00000120,0x000200f8, + 0x00000122,0x0004003b,0x00000049,0x000007d4,0x00000007,0x0004003b,0x00000049,0x000007de, + 0x00000007,0x0004003b,0x000000aa,0x000007e8,0x00000007,0x0004003b,0x000000cc,0x000007eb, + 0x00000007,0x0004003b,0x00000007,0x000007ec,0x00000007,0x0004003b,0x00000049,0x000007f0, + 0x00000007,0x0004003b,0x000000aa,0x000007f2,0x00000007,0x0004003b,0x00000007,0x000007f4, + 0x00000007,0x0004003b,0x00000007,0x000007f5,0x00000007,0x0004003b,0x000000aa,0x0000080a, + 0x00000007,0x0004003b,0x000000cc,0x0000080d,0x00000007,0x0004003b,0x00000007,0x0000080e, + 0x00000007,0x0004003b,0x00000049,0x00000811,0x00000007,0x0004003b,0x000000aa,0x00000813, + 0x00000007,0x0004003b,0x00000007,0x00000815,0x00000007,0x0004003b,0x00000007,0x00000816, + 0x00000007,0x0004003b,0x000000aa,0x0000082b,0x00000007,0x0004003b,0x000000cc,0x0000082e, + 0x00000007,0x0004003b,0x00000007,0x0000082f,0x00000007,0x0004003b,0x00000049,0x00000832, + 0x00000007,0x0004003b,0x000000aa,0x00000834,0x00000007,0x0004003b,0x00000007,0x00000836, + 0x00000007,0x0004003b,0x00000007,0x00000837,0x00000007,0x0004003b,0x000000aa,0x0000084c, + 0x00000007,0x0004003b,0x000000cc,0x0000084f,0x00000007,0x0004003b,0x00000007,0x00000850, + 0x00000007,0x0004003b,0x00000049,0x00000853,0x00000007,0x0004003b,0x000000aa,0x00000855, + 0x00000007,0x0004003b,0x00000007,0x00000857,0x00000007,0x0004003b,0x00000007,0x00000858, + 0x00000007,0x0004003b,0x000000aa,0x00000861,0x00000007,0x0004003b,0x000000aa,0x00000862, + 0x00000007,0x0004003b,0x000000aa,0x00000864,0x00000007,0x0004003b,0x000000aa,0x00000866, + 0x00000007,0x0004003b,0x000000aa,0x00000868,0x00000007,0x0004003b,0x00000049,0x00000870, + 0x00000007,0x0004003b,0x000000aa,0x00000871,0x00000007,0x0004003b,0x00000007,0x00000873, + 0x00000007,0x0004003b,0x00000007,0x00000874,0x00000007,0x0004003b,0x00000007,0x00000877, + 0x00000007,0x0004003b,0x00000007,0x00000879,0x00000007,0x0004003b,0x000000aa,0x0000087b, + 0x00000007,0x0004003d,0x00000006,0x000007d5,0x0000011d,0x00050084,0x00000006,0x000007d6, + 0x000007d5,0x0000020e,0x00050080,0x00000006,0x000007d7,0x000007d6,0x000001c2,0x0004007c, + 0x0000001a,0x000007d8,0x000007d7,0x0004003d,0x00000006,0x000007d9,0x0000011e,0x00050084, + 0x00000006,0x000007da,0x000007d9,0x0000020e,0x00050080,0x00000006,0x000007db,0x000007da, + 0x000001c2,0x0004007c,0x0000001a,0x000007dc,0x000007db,0x00050050,0x00000032,0x000007dd, + 0x000007d8,0x000007dc,0x0003003e,0x000007d4,0x000007dd,0x0004003d,0x00000006,0x000007df, + 0x0000011d,0x00050084,0x00000006,0x000007e0,0x000007df,0x0000016e,0x00050080,0x00000006, + 0x000007e1,0x000007e0,0x000001c2,0x0004007c,0x0000001a,0x000007e2,0x000007e1,0x0004003d, + 0x00000006,0x000007e3,0x0000011e,0x00050084,0x00000006,0x000007e4,0x000007e3,0x0000016e, + 0x00050080,0x00000006,0x000007e5,0x000007e4,0x000001c2,0x0004007c,0x0000001a,0x000007e6, + 0x000007e5,0x00050050,0x00000032,0x000007e7,0x000007e2,0x000007e6,0x0003003e,0x000007de, + 0x000007e7,0x0004003d,0x00000032,0x000007e9,0x000007d4,0x0004007c,0x0000002d,0x000007ea, + 0x000007e9,0x0003003e,0x000007eb,0x000007ea,0x0004003d,0x00000006,0x000007ed,0x00000120, + 0x0003003e,0x000007ec,0x000007ed,0x00060039,0x0000009f,0x000007ee,0x000000df,0x000007eb, + 0x000007ec,0x0003003e,0x000007e8,0x000007ee,0x0004003d,0x00000032,0x000007f1,0x000007de, + 0x0003003e,0x000007f0,0x000007f1,0x0004003d,0x0000009f,0x000007f3,0x000007e8,0x0003003e, + 0x000007f2,0x000007f3,0x0003003e,0x000007f4,0x000007ef,0x0004003d,0x00000006,0x000007f6, + 0x00000120,0x0003003e,0x000007f5,0x000007f6,0x00080039,0x00000002,0x000007f7,0x000000b7, + 0x000007f0,0x000007f2,0x000007f4,0x000007f5,0x0004003d,0x00000006,0x000007f8,0x0000011d, + 0x00050084,0x00000006,0x000007f9,0x000007f8,0x0000020e,0x00050080,0x00000006,0x000007fa, + 0x000007f9,0x0000016e,0x0004007c,0x0000001a,0x000007fb,0x000007fa,0x0004003d,0x00000006, + 0x000007fc,0x0000011e,0x00050084,0x00000006,0x000007fd,0x000007fc,0x0000020e,0x00050080, + 0x00000006,0x000007fe,0x000007fd,0x000001c2,0x0004007c,0x0000001a,0x000007ff,0x000007fe, + 0x00050050,0x00000032,0x00000800,0x000007fb,0x000007ff,0x0003003e,0x000007d4,0x00000800, + 0x0004003d,0x00000006,0x00000801,0x0000011d,0x00050084,0x00000006,0x00000802,0x00000801, + 0x0000016e,0x00050080,0x00000006,0x00000803,0x00000802,0x00000175,0x0004007c,0x0000001a, + 0x00000804,0x00000803,0x0004003d,0x00000006,0x00000805,0x0000011e,0x00050084,0x00000006, + 0x00000806,0x00000805,0x0000016e,0x00050080,0x00000006,0x00000807,0x00000806,0x000001c2, + 0x0004007c,0x0000001a,0x00000808,0x00000807,0x00050050,0x00000032,0x00000809,0x00000804, + 0x00000808,0x0003003e,0x000007de,0x00000809,0x0004003d,0x00000032,0x0000080b,0x000007d4, + 0x0004007c,0x0000002d,0x0000080c,0x0000080b,0x0003003e,0x0000080d,0x0000080c,0x0004003d, + 0x00000006,0x0000080f,0x00000120,0x0003003e,0x0000080e,0x0000080f,0x00060039,0x0000009f, + 0x00000810,0x000000df,0x0000080d,0x0000080e,0x0003003e,0x0000080a,0x00000810,0x0004003d, + 0x00000032,0x00000812,0x000007de,0x0003003e,0x00000811,0x00000812,0x0004003d,0x0000009f, + 0x00000814,0x0000080a,0x0003003e,0x00000813,0x00000814,0x0003003e,0x00000815,0x000007ef, + 0x0004003d,0x00000006,0x00000817,0x00000120,0x0003003e,0x00000816,0x00000817,0x00080039, + 0x00000002,0x00000818,0x000000b7,0x00000811,0x00000813,0x00000815,0x00000816,0x0004003d, + 0x00000006,0x00000819,0x0000011d,0x00050084,0x00000006,0x0000081a,0x00000819,0x0000020e, + 0x00050080,0x00000006,0x0000081b,0x0000081a,0x000001c2,0x0004007c,0x0000001a,0x0000081c, + 0x0000081b,0x0004003d,0x00000006,0x0000081d,0x0000011e,0x00050084,0x00000006,0x0000081e, + 0x0000081d,0x0000020e,0x00050080,0x00000006,0x0000081f,0x0000081e,0x0000016e,0x0004007c, + 0x0000001a,0x00000820,0x0000081f,0x00050050,0x00000032,0x00000821,0x0000081c,0x00000820, + 0x0003003e,0x000007d4,0x00000821,0x0004003d,0x00000006,0x00000822,0x0000011d,0x00050084, + 0x00000006,0x00000823,0x00000822,0x0000016e,0x00050080,0x00000006,0x00000824,0x00000823, + 0x000001c2,0x0004007c,0x0000001a,0x00000825,0x00000824,0x0004003d,0x00000006,0x00000826, + 0x0000011e,0x00050084,0x00000006,0x00000827,0x00000826,0x0000016e,0x00050080,0x00000006, + 0x00000828,0x00000827,0x00000175,0x0004007c,0x0000001a,0x00000829,0x00000828,0x00050050, + 0x00000032,0x0000082a,0x00000825,0x00000829,0x0003003e,0x000007de,0x0000082a,0x0004003d, + 0x00000032,0x0000082c,0x000007d4,0x0004007c,0x0000002d,0x0000082d,0x0000082c,0x0003003e, + 0x0000082e,0x0000082d,0x0004003d,0x00000006,0x00000830,0x00000120,0x0003003e,0x0000082f, + 0x00000830,0x00060039,0x0000009f,0x00000831,0x000000df,0x0000082e,0x0000082f,0x0003003e, + 0x0000082b,0x00000831,0x0004003d,0x00000032,0x00000833,0x000007de,0x0003003e,0x00000832, + 0x00000833,0x0004003d,0x0000009f,0x00000835,0x0000082b,0x0003003e,0x00000834,0x00000835, + 0x0003003e,0x00000836,0x000007ef,0x0004003d,0x00000006,0x00000838,0x00000120,0x0003003e, + 0x00000837,0x00000838,0x00080039,0x00000002,0x00000839,0x000000b7,0x00000832,0x00000834, + 0x00000836,0x00000837,0x0004003d,0x00000006,0x0000083a,0x0000011d,0x00050084,0x00000006, + 0x0000083b,0x0000083a,0x0000020e,0x00050080,0x00000006,0x0000083c,0x0000083b,0x0000016e, + 0x0004007c,0x0000001a,0x0000083d,0x0000083c,0x0004003d,0x00000006,0x0000083e,0x0000011e, + 0x00050084,0x00000006,0x0000083f,0x0000083e,0x0000020e,0x00050080,0x00000006,0x00000840, + 0x0000083f,0x0000016e,0x0004007c,0x0000001a,0x00000841,0x00000840,0x00050050,0x00000032, + 0x00000842,0x0000083d,0x00000841,0x0003003e,0x000007d4,0x00000842,0x0004003d,0x00000006, + 0x00000843,0x0000011d,0x00050084,0x00000006,0x00000844,0x00000843,0x0000016e,0x00050080, + 0x00000006,0x00000845,0x00000844,0x00000175,0x0004007c,0x0000001a,0x00000846,0x00000845, + 0x0004003d,0x00000006,0x00000847,0x0000011e,0x00050084,0x00000006,0x00000848,0x00000847, + 0x0000016e,0x00050080,0x00000006,0x00000849,0x00000848,0x00000175,0x0004007c,0x0000001a, + 0x0000084a,0x00000849,0x00050050,0x00000032,0x0000084b,0x00000846,0x0000084a,0x0003003e, + 0x000007de,0x0000084b,0x0004003d,0x00000032,0x0000084d,0x000007d4,0x0004007c,0x0000002d, + 0x0000084e,0x0000084d,0x0003003e,0x0000084f,0x0000084e,0x0004003d,0x00000006,0x00000851, + 0x00000120,0x0003003e,0x00000850,0x00000851,0x00060039,0x0000009f,0x00000852,0x000000df, + 0x0000084f,0x00000850,0x0003003e,0x0000084c,0x00000852,0x0004003d,0x00000032,0x00000854, + 0x000007de,0x0003003e,0x00000853,0x00000854,0x0004003d,0x0000009f,0x00000856,0x0000084c, + 0x0003003e,0x00000855,0x00000856,0x0003003e,0x00000857,0x000007ef,0x0004003d,0x00000006, + 0x00000859,0x00000120,0x0003003e,0x00000858,0x00000859,0x00080039,0x00000002,0x0000085a, + 0x000000b7,0x00000853,0x00000855,0x00000857,0x00000858,0x0004003d,0x00000006,0x0000085b, + 0x0000011f,0x000500b2,0x0000006e,0x0000085d,0x0000085b,0x0000085c,0x000300f7,0x0000085f, + 0x00000000,0x000400fa,0x0000085d,0x0000085e,0x0000085f,0x000200f8,0x0000085e,0x000100fd, + 0x000200f8,0x0000085f,0x0004003d,0x0000009f,0x00000863,0x000007e8,0x0003003e,0x00000862, + 0x00000863,0x0004003d,0x0000009f,0x00000865,0x0000080a,0x0003003e,0x00000864,0x00000865, + 0x0004003d,0x0000009f,0x00000867,0x0000082b,0x0003003e,0x00000866,0x00000867,0x0004003d, + 0x0000009f,0x00000869,0x0000084c,0x0003003e,0x00000868,0x00000869,0x00080039,0x0000009f, + 0x0000086a,0x000000b0,0x00000862,0x00000864,0x00000866,0x00000868,0x0003003e,0x00000861, + 0x0000086a,0x0004003d,0x00000006,0x0000086b,0x0000011d,0x0004007c,0x0000001a,0x0000086c, + 0x0000086b,0x0004003d,0x00000006,0x0000086d,0x0000011e,0x0004007c,0x0000001a,0x0000086e, + 0x0000086d,0x00050050,0x00000032,0x0000086f,0x0000086c,0x0000086e,0x0003003e,0x00000870, + 0x0000086f,0x0004003d,0x0000009f,0x00000872,0x00000861,0x0003003e,0x00000871,0x00000872, + 0x0003003e,0x00000873,0x0000085c,0x0004003d,0x00000006,0x00000875,0x00000120,0x0003003e, + 0x00000874,0x00000875,0x00080039,0x00000002,0x00000876,0x000000b7,0x00000870,0x00000871, + 0x00000873,0x00000874,0x0004003d,0x00000006,0x00000878,0x0000011d,0x0003003e,0x00000877, + 0x00000878,0x0004003d,0x00000006,0x0000087a,0x0000011e,0x0003003e,0x00000879,0x0000087a, + 0x0004003d,0x0000009f,0x0000087c,0x00000861,0x0003003e,0x0000087b,0x0000087c,0x00070039, + 0x00000002,0x0000087d,0x000000c2,0x00000877,0x00000879,0x0000087b,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x0000012b,0x00000000,0x00000123,0x00030037,0x00000007,0x00000124, + 0x00030037,0x00000007,0x00000125,0x00030037,0x000000cc,0x00000126,0x00030037,0x00000007, + 0x00000127,0x00030037,0x00000007,0x00000128,0x00030037,0x00000007,0x00000129,0x00030037, + 0x00000007,0x0000012a,0x000200f8,0x0000012c,0x0004003b,0x00000007,0x00000885,0x00000007, + 0x0004003b,0x00000007,0x00000887,0x00000007,0x0004003b,0x000000cc,0x00000889,0x00000007, + 0x0004003b,0x00000007,0x0000088b,0x00000007,0x0004003b,0x00000007,0x0000088d,0x00000007, + 0x0004003b,0x00000007,0x0000088f,0x00000007,0x0004003b,0x00000007,0x0000089c,0x00000007, + 0x0004003b,0x00000007,0x0000089e,0x00000007,0x0004003b,0x000000cc,0x000008a0,0x00000007, + 0x0004003b,0x00000007,0x000008a2,0x00000007,0x0004003b,0x00000007,0x000008a4,0x00000007, + 0x0004003b,0x00000007,0x000008a5,0x00000007,0x0004003b,0x00000007,0x000008b2,0x00000007, + 0x0004003b,0x00000007,0x000008b4,0x00000007,0x0004003b,0x000000cc,0x000008b6,0x00000007, + 0x0004003b,0x00000007,0x000008b8,0x00000007,0x0004003b,0x00000007,0x000008ba,0x00000007, + 0x0004003b,0x00000007,0x000008bb,0x00000007,0x0004003b,0x000000cc,0x000008c8,0x00000007, + 0x0004003b,0x00000007,0x000008ca,0x00000007,0x0004003b,0x00000007,0x000008cc,0x00000007, + 0x0004003b,0x00000007,0x000008cd,0x00000007,0x0004003d,0x00000006,0x0000087e,0x00000129, + 0x0004003d,0x00000006,0x0000087f,0x00000128,0x000500b2,0x0000006e,0x00000880,0x0000087e, + 0x0000087f,0x000300f7,0x00000882,0x00000000,0x000400fa,0x00000880,0x00000881,0x00000882, + 0x000200f8,0x00000881,0x000100fd,0x000200f8,0x00000882,0x00040039,0x00000002,0x00000884, + 0x000000c4,0x0004003d,0x00000006,0x00000886,0x00000124,0x0003003e,0x00000885,0x00000886, + 0x0004003d,0x00000006,0x00000888,0x00000125,0x0003003e,0x00000887,0x00000888,0x0004003d, + 0x0000002d,0x0000088a,0x00000126,0x0003003e,0x00000889,0x0000088a,0x0004003d,0x00000006, + 0x0000088c,0x00000127,0x0003003e,0x0000088b,0x0000088c,0x0004003d,0x00000006,0x0000088e, + 0x00000128,0x0003003e,0x0000088d,0x0000088e,0x0004003d,0x00000006,0x00000890,0x0000012a, + 0x0003003e,0x0000088f,0x00000890,0x000a0039,0x00000002,0x00000891,0x00000103,0x00000885, + 0x00000887,0x00000889,0x0000088b,0x0000088d,0x0000088f,0x0004003d,0x00000006,0x00000892, + 0x00000129,0x0004003d,0x00000006,0x00000893,0x00000128,0x00050080,0x00000006,0x00000894, + 0x00000893,0x00000175,0x000500b2,0x0000006e,0x00000895,0x00000892,0x00000894,0x000300f7, + 0x00000897,0x00000000,0x000400fa,0x00000895,0x00000896,0x00000897,0x000200f8,0x00000896, + 0x000100fd,0x000200f8,0x00000897,0x00040039,0x00000002,0x00000899,0x000000c4,0x0004003d, + 0x00000006,0x0000089a,0x00000128,0x00050080,0x00000006,0x0000089b,0x0000089a,0x00000175, + 0x0004003d,0x00000006,0x0000089d,0x00000124,0x0003003e,0x0000089c,0x0000089d,0x0004003d, + 0x00000006,0x0000089f,0x00000125,0x0003003e,0x0000089e,0x0000089f,0x0004003d,0x0000002d, + 0x000008a1,0x00000126,0x0003003e,0x000008a0,0x000008a1,0x0004003d,0x00000006,0x000008a3, + 0x00000127,0x0003003e,0x000008a2,0x000008a3,0x0003003e,0x000008a4,0x0000089b,0x0004003d, + 0x00000006,0x000008a6,0x0000012a,0x0003003e,0x000008a5,0x000008a6,0x000a0039,0x00000002, + 0x000008a7,0x0000010b,0x0000089c,0x0000089e,0x000008a0,0x000008a2,0x000008a4,0x000008a5, + 0x0004003d,0x00000006,0x000008a8,0x00000129,0x0004003d,0x00000006,0x000008a9,0x00000128, + 0x00050080,0x00000006,0x000008aa,0x000008a9,0x0000016e,0x000500b2,0x0000006e,0x000008ab, + 0x000008a8,0x000008aa,0x000300f7,0x000008ad,0x00000000,0x000400fa,0x000008ab,0x000008ac, + 0x000008ad,0x000200f8,0x000008ac,0x000100fd,0x000200f8,0x000008ad,0x00040039,0x00000002, + 0x000008af,0x000000c4,0x0004003d,0x00000006,0x000008b0,0x00000128,0x00050080,0x00000006, + 0x000008b1,0x000008b0,0x0000016e,0x0004003d,0x00000006,0x000008b3,0x00000124,0x0003003e, + 0x000008b2,0x000008b3,0x0004003d,0x00000006,0x000008b5,0x00000125,0x0003003e,0x000008b4, + 0x000008b5,0x0004003d,0x0000002d,0x000008b7,0x00000126,0x0003003e,0x000008b6,0x000008b7, + 0x0004003d,0x00000006,0x000008b9,0x00000127,0x0003003e,0x000008b8,0x000008b9,0x0003003e, + 0x000008ba,0x000008b1,0x0004003d,0x00000006,0x000008bc,0x0000012a,0x0003003e,0x000008bb, + 0x000008bc,0x000a0039,0x00000002,0x000008bd,0x00000113,0x000008b2,0x000008b4,0x000008b6, + 0x000008b8,0x000008ba,0x000008bb,0x0004003d,0x00000006,0x000008be,0x00000129,0x0004003d, + 0x00000006,0x000008bf,0x00000128,0x00050080,0x00000006,0x000008c0,0x000008bf,0x0000016f, + 0x000500b2,0x0000006e,0x000008c1,0x000008be,0x000008c0,0x000300f7,0x000008c3,0x00000000, + 0x000400fa,0x000008c1,0x000008c2,0x000008c3,0x000200f8,0x000008c2,0x000100fd,0x000200f8, + 0x000008c3,0x00040039,0x00000002,0x000008c5,0x000000c4,0x0004003d,0x00000006,0x000008c6, + 0x00000128,0x00050080,0x00000006,0x000008c7,0x000008c6,0x0000016f,0x0004003d,0x0000002d, + 0x000008c9,0x00000126,0x0003003e,0x000008c8,0x000008c9,0x0004003d,0x00000006,0x000008cb, + 0x00000127,0x0003003e,0x000008ca,0x000008cb,0x0003003e,0x000008cc,0x000008c7,0x0004003d, + 0x00000006,0x000008ce,0x0000012a,0x0003003e,0x000008cd,0x000008ce,0x00080039,0x00000002, + 0x000008cf,0x0000011a,0x000008c8,0x000008ca,0x000008cc,0x000008cd,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000133,0x00000000,0x0000012d,0x00030037,0x000000cc,0x0000012e, + 0x00030037,0x00000007,0x0000012f,0x00030037,0x00000007,0x00000130,0x00030037,0x00000007, + 0x00000131,0x00030037,0x00000007,0x00000132,0x000200f8,0x00000134,0x0004003b,0x000000cc, + 0x000008d0,0x00000007,0x0004003b,0x00000007,0x000008d3,0x00000007,0x0004003b,0x00000007, + 0x000008d5,0x00000007,0x0004003b,0x00000007,0x000008de,0x00000007,0x0004003b,0x00000007, + 0x000008e5,0x00000007,0x0004003b,0x00000007,0x000008e7,0x00000007,0x0004003b,0x000000cc, + 0x000008e9,0x00000007,0x0004003b,0x00000007,0x000008eb,0x00000007,0x0004003b,0x00000007, + 0x000008ed,0x00000007,0x0004003b,0x00000007,0x000008ef,0x00000007,0x0004003b,0x00000007, + 0x000008f2,0x00000007,0x0004003b,0x00000007,0x000008f4,0x00000007,0x0004003b,0x000000cc, + 0x000008f6,0x00000007,0x0004003b,0x00000007,0x000008f8,0x00000007,0x0004003b,0x00000007, + 0x000008fa,0x00000007,0x0004003b,0x00000007,0x000008fb,0x00000007,0x0004003b,0x00000007, + 0x000008fd,0x00000007,0x0004003b,0x00000007,0x00000905,0x00000007,0x0004003b,0x00000007, + 0x00000907,0x00000007,0x0004003b,0x00000007,0x00000909,0x00000007,0x0004003b,0x00000007, + 0x0000090f,0x00000007,0x0004003b,0x00000007,0x00000912,0x00000007,0x0004003b,0x00000007, + 0x00000914,0x00000007,0x0004003b,0x00000007,0x00000916,0x00000007,0x0004003b,0x00000007, + 0x00000918,0x00000007,0x0004003b,0x00000007,0x0000091b,0x00000007,0x0004003b,0x00000007, + 0x0000091d,0x00000007,0x0004003b,0x000000cc,0x0000091f,0x00000007,0x0004003b,0x00000007, + 0x00000920,0x00000007,0x0004003b,0x00000007,0x00000922,0x00000007,0x0004003b,0x00000007, + 0x00000923,0x00000007,0x0004003b,0x00000007,0x00000925,0x00000007,0x0004003d,0x00000006, + 0x000008d1,0x0000012f,0x00050089,0x00000006,0x000008d2,0x000008d1,0x000005a7,0x0003003e, + 0x000008d3,0x000008d2,0x00050039,0x0000002d,0x000008d4,0x00000030,0x000008d3,0x0003003e, + 0x000008d0,0x000008d4,0x00050041,0x00000007,0x000008d6,0x000008d0,0x000001c2,0x0004003d, + 0x00000006,0x000008d7,0x000008d6,0x0004003d,0x00000006,0x000008d8,0x0000012f,0x000500c2, + 0x00000006,0x000008da,0x000008d8,0x000008d9,0x00050089,0x00000006,0x000008db,0x000008da, + 0x0000016e,0x00050084,0x00000006,0x000008dc,0x00000691,0x000008db,0x00050080,0x00000006, + 0x000008dd,0x000008d7,0x000008dc,0x0003003e,0x000008d5,0x000008dd,0x00050041,0x00000007, + 0x000008df,0x000008d0,0x00000175,0x0004003d,0x00000006,0x000008e0,0x000008df,0x0004003d, + 0x00000006,0x000008e1,0x0000012f,0x000500c2,0x00000006,0x000008e2,0x000008e1,0x00000199, + 0x00050084,0x00000006,0x000008e3,0x00000691,0x000008e2,0x00050080,0x00000006,0x000008e4, + 0x000008e0,0x000008e3,0x0003003e,0x000008de,0x000008e4,0x0004003d,0x00000006,0x000008e6, + 0x000008d5,0x0003003e,0x000008e5,0x000008e6,0x0004003d,0x00000006,0x000008e8,0x000008de, + 0x0003003e,0x000008e7,0x000008e8,0x0004003d,0x0000002d,0x000008ea,0x0000012e,0x0003003e, + 0x000008e9,0x000008ea,0x0004003d,0x00000006,0x000008ec,0x0000012f,0x0003003e,0x000008eb, + 0x000008ec,0x0004003d,0x00000006,0x000008ee,0x00000130,0x0003003e,0x000008ed,0x000008ee, + 0x0004003d,0x00000006,0x000008f0,0x00000132,0x0003003e,0x000008ef,0x000008f0,0x000a0039, + 0x00000002,0x000008f1,0x000000fb,0x000008e5,0x000008e7,0x000008e9,0x000008eb,0x000008ed, + 0x000008ef,0x0004003d,0x00000006,0x000008f3,0x000008d5,0x0003003e,0x000008f2,0x000008f3, + 0x0004003d,0x00000006,0x000008f5,0x000008de,0x0003003e,0x000008f4,0x000008f5,0x0004003d, + 0x0000002d,0x000008f7,0x0000012e,0x0003003e,0x000008f6,0x000008f7,0x0004003d,0x00000006, + 0x000008f9,0x0000012f,0x0003003e,0x000008f8,0x000008f9,0x0003003e,0x000008fa,0x0000016e, + 0x0004003d,0x00000006,0x000008fc,0x00000130,0x0003003e,0x000008fb,0x000008fc,0x0004003d, + 0x00000006,0x000008fe,0x00000132,0x0003003e,0x000008fd,0x000008fe,0x000b0039,0x00000002, + 0x000008ff,0x0000012b,0x000008f2,0x000008f4,0x000008f6,0x000008f8,0x000008fa,0x000008fb, + 0x000008fd,0x0004003d,0x00000006,0x00000900,0x00000130,0x000500b2,0x0000006e,0x00000901, + 0x00000900,0x000007ef,0x000300f7,0x00000903,0x00000000,0x000400fa,0x00000901,0x00000902, + 0x00000903,0x000200f8,0x00000902,0x000100fd,0x000200f8,0x00000903,0x0004003d,0x00000006, + 0x00000906,0x00000131,0x0003003e,0x00000905,0x00000906,0x0004003d,0x00000006,0x00000908, + 0x0000012f,0x0003003e,0x00000907,0x00000908,0x0004003d,0x00000006,0x0000090a,0x00000132, + 0x0003003e,0x00000909,0x0000090a,0x00070039,0x0000006e,0x0000090b,0x000000ca,0x00000905, + 0x00000907,0x00000909,0x000300f7,0x0000090d,0x00000000,0x000400fa,0x0000090b,0x0000090c, + 0x0000090d,0x000200f8,0x0000090c,0x000100fd,0x000200f8,0x0000090d,0x0004003d,0x00000006, + 0x00000910,0x00000132,0x0003003e,0x0000090f,0x00000910,0x00050039,0x00000002,0x00000911, + 0x0000007f,0x0000090f,0x0004003d,0x00000006,0x00000913,0x000008d5,0x0003003e,0x00000912, + 0x00000913,0x0004003d,0x00000006,0x00000915,0x000008de,0x0003003e,0x00000914,0x00000915, + 0x0004003d,0x00000006,0x00000917,0x00000130,0x0003003e,0x00000916,0x00000917,0x0004003d, + 0x00000006,0x00000919,0x00000132,0x0003003e,0x00000918,0x00000919,0x00080039,0x00000002, + 0x0000091a,0x00000121,0x00000912,0x00000914,0x00000916,0x00000918,0x0004003d,0x00000006, + 0x0000091c,0x000008d5,0x0003003e,0x0000091b,0x0000091c,0x0004003d,0x00000006,0x0000091e, + 0x000008de,0x0003003e,0x0000091d,0x0000091e,0x0003003e,0x0000091f,0x00000555,0x0004003d, + 0x00000006,0x00000921,0x0000012f,0x0003003e,0x00000920,0x00000921,0x0003003e,0x00000922, + 0x00000691,0x0004003d,0x00000006,0x00000924,0x00000130,0x0003003e,0x00000923,0x00000924, + 0x0004003d,0x00000006,0x00000926,0x00000132,0x0003003e,0x00000925,0x00000926,0x000b0039, + 0x00000002,0x00000927,0x0000012b,0x0000091b,0x0000091d,0x0000091f,0x00000920,0x00000922, + 0x00000923,0x00000925,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000013c,0x00000000, + 0x00000135,0x00030037,0x000000cc,0x00000136,0x00030037,0x00000007,0x00000137,0x00030037, + 0x00000007,0x00000138,0x00030037,0x00000007,0x00000139,0x00030037,0x00000007,0x0000013a, + 0x00030037,0x000000cc,0x0000013b,0x000200f8,0x0000013d,0x0004003b,0x000000cc,0x0000092b, + 0x00000007,0x0004003b,0x00000007,0x0000092c,0x00000007,0x0004003b,0x00000007,0x0000092e, + 0x00000007,0x0004003b,0x00000007,0x00000930,0x00000007,0x0004003b,0x00000007,0x00000932, + 0x00000007,0x0004003d,0x0000002d,0x00000928,0x00000136,0x0004003d,0x0000002d,0x00000929, + 0x0000013b,0x00050080,0x0000002d,0x0000092a,0x00000928,0x00000929,0x0003003e,0x0000092b, + 0x0000092a,0x0004003d,0x00000006,0x0000092d,0x00000137,0x0003003e,0x0000092c,0x0000092d, + 0x0004003d,0x00000006,0x0000092f,0x00000138,0x0003003e,0x0000092e,0x0000092f,0x0004003d, + 0x00000006,0x00000931,0x00000139,0x0003003e,0x00000930,0x00000931,0x0004003d,0x00000006, + 0x00000933,0x0000013a,0x0003003e,0x00000932,0x00000933,0x00090039,0x00000002,0x00000934, + 0x00000133,0x0000092b,0x0000092c,0x0000092e,0x00000930,0x00000932,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x00000143,0x00000000,0x00000140,0x00030037,0x0000013f,0x00000141, + 0x00030037,0x00000007,0x00000142,0x000200f8,0x00000144,0x0004003b,0x000000cc,0x0000093d, + 0x00000007,0x0004003b,0x00000007,0x0000093e,0x00000007,0x0004003b,0x00000007,0x0000093f, + 0x00000007,0x0004003b,0x00000007,0x00000940,0x00000007,0x0004003b,0x00000007,0x00000941, + 0x00000007,0x0004003b,0x000000cc,0x00000942,0x00000007,0x0004003d,0x0000013e,0x00000935, + 0x00000141,0x0007004f,0x0000002d,0x00000936,0x00000935,0x00000935,0x00000000,0x00000001, + 0x0004003d,0x00000006,0x00000937,0x00000142,0x00040039,0x00000006,0x00000938,0x00000042, + 0x00040039,0x00000006,0x00000939,0x00000044,0x00050041,0x00000007,0x0000093a,0x00000141, + 0x0000016e,0x0004003d,0x00000006,0x0000093b,0x0000093a,0x00040039,0x0000002d,0x0000093c, + 0x00000047,0x0003003e,0x0000093d,0x00000936,0x0003003e,0x0000093e,0x00000937,0x0003003e, + 0x0000093f,0x00000938,0x0003003e,0x00000940,0x00000939,0x0003003e,0x00000941,0x0000093b, + 0x0003003e,0x00000942,0x0000093c,0x000a0039,0x00000002,0x00000943,0x0000013c,0x0000093d, + 0x0000093e,0x0000093f,0x00000940,0x00000941,0x00000942,0x000100fd,0x00010038 +}; diff --git a/scripts/fsr3_shaders.py b/scripts/fsr3_shaders.py new file mode 100644 index 000000000..1b584898f --- /dev/null +++ b/scripts/fsr3_shaders.py @@ -0,0 +1,118 @@ +"""Compile AMD's FSR 3.1 upscaler passes into the SPIR-V headers gpu/vk uses. + +The FidelityFX SDK ships each pass as GLSL that includes the SDK's own GPU headers, so the eleven +variants below are the same eight passes compiled with different options. They are checked in like +every other shader in gpu/vk/shaders, so a clone builds without glslang; this script regenerates +them, and --check proves the checked-in files still match their sources (tests/test_fsr3_shaders.py). + + python -I -B scripts/fsr3_shaders.py # write gpu/vk/shaders/fsr3_*_comp_spv.h + python -I -B scripts/fsr3_shaders.py --check # compare instead of writing +""" +import argparse +import difflib +import shutil +import subprocess +import sys +import tempfile +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +SDK = ROOT / "third_party/fidelityfx-sdk" +GPU = SDK / "include/FidelityFX/gpu" +PASSES = SDK / "shaders/fsr3upscaler" +OUT = ROOT / "gpu/vk/shaders" + +# The option set the renderer records these passes under. Each one is a promise about the inputs: +# the colour is HDR, the motion is low-resolution and not jittered, and the depth is reversed. They +# have to match what gpu/vk/vk_fsr3.cpp hands the passes, which is why they live in one place. +OPTIONS = [ + "-DFFX_GPU=1", + "-DFFX_GLSL=1", + "-DFFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE=2", + "-DFFX_FSR3UPSCALER_OPTION_REPROJECT_USE_LANCZOS_TYPE=0", + "-DFFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT=1", + "-DFFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS=1", + "-DFFX_FSR3UPSCALER_OPTION_JITTERED_MOTION_VECTORS=0", + "-DFFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH=1", +] + +# name, the pass GLSL it compiles, extra defines. The _nowave variants are for devices without the +# subgroup operations the single-pass downsampler prefers. +VARIANTS = [ + ("prepare_inputs", "prepare_inputs", []), + ("luma_pyramid", "luma_pyramid", []), + ("luma_pyramid_nowave", "luma_pyramid", ["-DFFX_SPD_NO_WAVE_OPERATIONS=1"]), + ("shading_change_pyramid", "shading_change_pyramid", []), + ("shading_change_pyramid_nowave", "shading_change_pyramid", ["-DFFX_SPD_NO_WAVE_OPERATIONS=1"]), + ("shading_change", "shading_change", []), + ("prepare_reactivity", "prepare_reactivity", []), + ("luma_instability", "luma_instability", []), + ("accumulate", "accumulate", []), + ("accumulate_sharpen", "accumulate", ["-DFFX_FSR3UPSCALER_OPTION_APPLY_SHARPENING=1"]), + ("rcas", "rcas", []), +] + + +def compile_one(glslang, name, pass_name, extra, out_path, target_env, variable=True): + """Compile one variant. With `variable`, glslang writes a C header; without it, binary SPIR-V, + which is what spirv-val reads.""" + defines = list(OPTIONS) + if not any("APPLY_SHARPENING" in d for d in extra): + defines.append("-DFFX_FSR3UPSCALER_OPTION_APPLY_SHARPENING=0") + cmd = [glslang, "-V", "--quiet", "-S", "comp", + "-I" + str(GPU), "-I" + str(GPU / "fsr3upscaler"), + *defines, *extra] + if variable: + cmd += ["--variable-name", f"FSR3_{name.upper()}_COMP_SPV"] + cmd += ["-o", str(out_path), + str(PASSES / f"ffx_fsr3upscaler_{pass_name}_pass.glsl"), + "--target-env", target_env] + subprocess.run(cmd, check=True) + + +def main(): + p = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) + p.add_argument("--glslang", default=None, help="glslangValidator; found on PATH by default") + p.add_argument("--spirv-val", default=None, help="spirv-val, to validate each module") + p.add_argument("--target-env", default="spirv1.3") + p.add_argument("--check", action="store_true", help="compare with the checked-in headers") + a = p.parse_args() + glslang = a.glslang or shutil.which("glslangValidator") or shutil.which("glslang") + if not glslang: + print("glslangValidator not found; pass --glslang", file=sys.stderr) + return 2 + + bad = [] + with tempfile.TemporaryDirectory(prefix="fsr3-shaders-") as tmp: + for name, pass_name, extra in VARIANTS: + header = OUT / f"fsr3_{name}_comp_spv.h" + made = Path(tmp) / header.name + compile_one(glslang, name, pass_name, extra, made, a.target_env) + if a.spirv_val: + spv = Path(tmp) / f"{name}.spv" + compile_one(glslang, name, pass_name, extra, spv, a.target_env, variable=False) + subprocess.run([a.spirv_val, str(spv)], check=True) + if a.check: + have = header.read_text() if header.exists() else "" + want = made.read_text() + if have != want: + bad.append(name) + if not have: + print(f"{header.name}: missing", file=sys.stderr) + else: + diff = difflib.unified_diff(have.splitlines(), want.splitlines(), + "checked in", "regenerated", n=0, lineterm="") + print("\n".join(list(diff)[:12]), file=sys.stderr) + else: + shutil.copyfile(made, header) + print(f"wrote {header.relative_to(ROOT)} ({header.stat().st_size} bytes)") + if bad: + print(f"{len(bad)} header(s) do not match their source: {', '.join(bad)}", file=sys.stderr) + return 1 + print(f"fsr3 shaders: {len(VARIANTS)} {'match' if a.check else 'written'}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tests/run_all.py b/tests/run_all.py index 431618edd..8015dfb70 100644 --- a/tests/run_all.py +++ b/tests/run_all.py @@ -36,6 +36,7 @@ "tests/test_lower_register_markers.py": ["--cxx", "clang++"], "tests/test_text_speed.py": ["--cc", "gcc"], "tests/test_upscale_fallback.py": ["--cxx", "g++"], + "tests/test_fsr3_shaders.py": ["--glslang", "{glslang}", "--spirv-val", "{spirv_val}"], "tests/test_taau_env_lookup.py": ["--cxx", "g++"], "tests/test_target_overlap.py": ["--cxx", "g++"], "tests/test_menu_hit.py": ["--cxx", "g++"], @@ -116,6 +117,7 @@ def find_tools(): "spirv_headers": header_dir("HOOKSHOT_SPIRV_HEADERS", "spirv-headers", os.path.join("spirv", "unified1", "spirv.h")), "vulkan_headers": header_dir("HOOKSHOT_VULKAN_HEADERS", "vulkanheaders", os.path.join("vulkan", "vulkan.h")), "spirv_val": which("spirv-val"), + "glslang": which("glslangValidator", "glslang"), "cxx": which(os.environ.get("CXX", ""), "clang++", "g++", "c++"), } diff --git a/tests/test_fsr3_shaders.py b/tests/test_fsr3_shaders.py new file mode 100644 index 000000000..da890cf19 --- /dev/null +++ b/tests/test_fsr3_shaders.py @@ -0,0 +1,33 @@ +"""The checked-in FSR 3.1 pass shaders still match the FidelityFX SDK sources they came from. + +gpu/vk/shaders/fsr3_*_comp_spv.h are generated from third_party/fidelityfx-sdk by +scripts/fsr3_shaders.py and checked in like every other shader here, so a clone builds without +glslang. That only stays true if the headers and their sources cannot drift apart, which is what +this check is for: it recompiles every variant and compares. It also validates each module, so a +pass that compiles but is not valid SPIR-V is caught here rather than on a device. + +python -I -B tests/test_fsr3_shaders.py [--glslang glslangValidator] [--spirv-val spirv-val] +""" +import argparse +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] + + +def main(): + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--glslang") + p.add_argument("--spirv-val") + a = p.parse_args() + cmd = [sys.executable, "-I", "-B", str(ROOT / "scripts/fsr3_shaders.py"), "--check"] + if a.glslang: + cmd += ["--glslang", a.glslang] + if a.spirv_val: + cmd += ["--spirv-val", a.spirv_val] + subprocess.run(cmd, check=True) + + +if __name__ == "__main__": + main() diff --git a/third_party/fidelityfx-sdk/LICENSE.txt b/third_party/fidelityfx-sdk/LICENSE.txt new file mode 100644 index 000000000..3712e34ad --- /dev/null +++ b/third_party/fidelityfx-sdk/LICENSE.txt @@ -0,0 +1,21 @@ +This file is part of the FidelityFX SDK. + +Copyright (C) 2024 Advanced Micro Devices, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/third_party/fidelityfx-sdk/PROVENANCE.md b/third_party/fidelityfx-sdk/PROVENANCE.md new file mode 100644 index 000000000..a4aaf8099 --- /dev/null +++ b/third_party/fidelityfx-sdk/PROVENANCE.md @@ -0,0 +1,24 @@ +# FidelityFX SDK + +AMD FidelityFX SDK, used for the FSR 3.1 upscaler's GPU sources. Unmodified upstream copy. + +- Upstream: https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK +- Version: v1.1.4, commit `c6efa6bf7f2027b3ec94f28578bb5965eabb9e55` +- License: MIT, in `LICENSE.txt`. Keep it with any distribution. + +What is here and why: + +| | | +|---|---| +| `include/FidelityFX/gpu/` | The GPU-side headers the passes include: the common core, `fsr1/`, `spd/` (the single-pass downsampler the pyramids use) and `fsr3upscaler/` | +| `shaders/fsr3upscaler/*.glsl` | The eight upscaler passes, as AMD ships them | +| `LICENSE.txt` | AMD's MIT notice | + +No runtime library is needed, and none is included: the passes are compiled from these sources into +`gpu/vk/shaders/fsr3_*_comp_spv.h` by `scripts/fsr3_shaders.py`, which is also what +`tests/test_fsr3_shaders.py` runs to prove the checked-in headers still match. This is the SDK-source +route rather than AMD's FidelityFX API, which would load AMD's own Vulkan runtime and is Windows +only; see `docs/upscaling.md`. + +Nothing in this folder is edited. A change belongs in a new folder with its own note, per +`CONTRIBUTING.md`. diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_common_types.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_common_types.h new file mode 100644 index 000000000..2c4f0ba02 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_common_types.h @@ -0,0 +1,558 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef FFX_COMMON_TYPES_H +#define FFX_COMMON_TYPES_H + +#if defined(FFX_CPU) +#define FFX_PARAMETER_IN +#define FFX_PARAMETER_OUT +#define FFX_PARAMETER_INOUT +#define FFX_PARAMETER_UNIFORM +#elif defined(FFX_HLSL) +#define FFX_PARAMETER_IN in +#define FFX_PARAMETER_OUT out +#define FFX_PARAMETER_INOUT inout +#define FFX_PARAMETER_UNIFORM uniform +#elif defined(FFX_GLSL) +#define FFX_PARAMETER_IN in +#define FFX_PARAMETER_OUT out +#define FFX_PARAMETER_INOUT inout +#define FFX_PARAMETER_UNIFORM const //[cacao_placeholder] until a better fit is found! +#endif // #if defined(FFX_CPU) + +#if defined(FFX_CPU) +/// A typedef for a boolean value. +/// +/// @ingroup CPUTypes +typedef bool FfxBoolean; + +/// A typedef for a unsigned 8bit integer. +/// +/// @ingroup CPUTypes +typedef uint8_t FfxUInt8; + +/// A typedef for a unsigned 16bit integer. +/// +/// @ingroup CPUTypes +typedef uint16_t FfxUInt16; + +/// A typedef for a unsigned 32bit integer. +/// +/// @ingroup CPUTypes +typedef uint32_t FfxUInt32; + +/// A typedef for a unsigned 64bit integer. +/// +/// @ingroup CPUTypes +typedef uint64_t FfxUInt64; + +/// A typedef for a signed 8bit integer. +/// +/// @ingroup CPUTypes +typedef int8_t FfxInt8; + +/// A typedef for a signed 16bit integer. +/// +/// @ingroup CPUTypes +typedef int16_t FfxInt16; + +/// A typedef for a signed 32bit integer. +/// +/// @ingroup CPUTypes +typedef int32_t FfxInt32; + +/// A typedef for a signed 64bit integer. +/// +/// @ingroup CPUTypes +typedef int64_t FfxInt64; + +/// A typedef for a floating point value. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32; + +/// A typedef for a 2-dimensional floating point value. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x2[2]; + +/// A typedef for a 3-dimensional floating point value. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x3[3]; + +/// A typedef for a 4-dimensional floating point value. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x4[4]; + +/// A typedef for a 2x2 floating point matrix. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x2x2[4]; + +/// A typedef for a 3x3 floating point matrix. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x3x3[9]; + +/// A typedef for a 3x4 floating point matrix. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x3x4[12]; + +/// A typedef for a 4x4 floating point matrix. +/// +/// @ingroup CPUTypes +typedef float FfxFloat32x4x4[16]; + +/// A typedef for a 2-dimensional 32bit signed integer. +/// +/// @ingroup CPUTypes +typedef int32_t FfxInt32x2[2]; + +/// A typedef for a 3-dimensional 32bit signed integer. +/// +/// @ingroup CPUTypes +typedef int32_t FfxInt32x3[3]; + +/// A typedef for a 4-dimensional 32bit signed integer. +/// +/// @ingroup CPUTypes +typedef int32_t FfxInt32x4[4]; + +/// A typedef for a 2-dimensional 32bit usigned integer. +/// +/// @ingroup CPUTypes +typedef uint32_t FfxUInt32x2[2]; + +/// A typedef for a 3-dimensional 32bit unsigned integer. +/// +/// @ingroup CPUTypes +typedef uint32_t FfxUInt32x3[3]; + +/// A typedef for a 4-dimensional 32bit unsigned integer. +/// +/// @ingroup CPUTypes +typedef uint32_t FfxUInt32x4[4]; +#endif // #if defined(FFX_CPU) + +#if defined(FFX_HLSL) + +#define FfxFloat32Mat4 matrix +#define FfxFloat32Mat3 matrix + +/// A typedef for a boolean value. +/// +/// @ingroup HLSLTypes +typedef bool FfxBoolean; + +#if FFX_HLSL_SM>=62 + +/// @defgroup HLSL62Types HLSL 6.2 And Above Types +/// HLSL 6.2 and above type defines for all commonly used variables +/// +/// @ingroup HLSLTypes + +/// A typedef for a floating point value. +/// +/// @ingroup HLSL62Types +typedef float32_t FfxFloat32; + +/// A typedef for a 2-dimensional floating point value. +/// +/// @ingroup HLSL62Types +typedef float32_t2 FfxFloat32x2; + +/// A typedef for a 3-dimensional floating point value. +/// +/// @ingroup HLSL62Types +typedef float32_t3 FfxFloat32x3; + +/// A typedef for a 4-dimensional floating point value. +/// +/// @ingroup HLSL62Types +typedef float32_t4 FfxFloat32x4; + +/// A [cacao_placeholder] typedef for matrix type until confirmed. +typedef float4x4 FfxFloat32x4x4; +typedef float3x4 FfxFloat32x3x4; +typedef float3x3 FfxFloat32x3x3; +typedef float2x2 FfxFloat32x2x2; + +/// A typedef for a unsigned 32bit integer. +/// +/// @ingroup HLSL62Types +typedef uint32_t FfxUInt32; + +/// A typedef for a 2-dimensional 32bit unsigned integer. +/// +/// @ingroup HLSL62Types +typedef uint32_t2 FfxUInt32x2; + +/// A typedef for a 3-dimensional 32bit unsigned integer. +/// +/// @ingroup HLSL62Types +typedef uint32_t3 FfxUInt32x3; + +/// A typedef for a 4-dimensional 32bit unsigned integer. +/// +/// @ingroup HLSL62Types +typedef uint32_t4 FfxUInt32x4; + +/// A typedef for a signed 32bit integer. +/// +/// @ingroup HLSL62Types +typedef int32_t FfxInt32; + +/// A typedef for a 2-dimensional signed 32bit integer. +/// +/// @ingroup HLSL62Types +typedef int32_t2 FfxInt32x2; + +/// A typedef for a 3-dimensional signed 32bit integer. +/// +/// @ingroup HLSL62Types +typedef int32_t3 FfxInt32x3; + +/// A typedef for a 4-dimensional signed 32bit integer. +/// +/// @ingroup HLSL62Types +typedef int32_t4 FfxInt32x4; + +#else // #if FFX_HLSL_SM>=62 + +/// @defgroup HLSLBaseTypes HLSL 6.1 And Below Types +/// HLSL 6.1 and below type defines for all commonly used variables +/// +/// @ingroup HLSLTypes + +#define FfxFloat32 float +#define FfxFloat32x2 float2 +#define FfxFloat32x3 float3 +#define FfxFloat32x4 float4 + +/// A [cacao_placeholder] typedef for matrix type until confirmed. +#define FfxFloat32x4x4 float4x4 +#define FfxFloat32x3x4 float3x4 +#define FfxFloat32x3x3 float3x3 +#define FfxFloat32x2x2 float2x2 + +/// A typedef for a unsigned 32bit integer. +/// +/// @ingroup GPU +typedef uint FfxUInt32; +typedef uint2 FfxUInt32x2; +typedef uint3 FfxUInt32x3; +typedef uint4 FfxUInt32x4; + +typedef int FfxInt32; +typedef int2 FfxInt32x2; +typedef int3 FfxInt32x3; +typedef int4 FfxInt32x4; + +#endif // #if FFX_HLSL_SM>=62 + +#if FFX_HALF + +#if FFX_HLSL_SM >= 62 + +typedef float16_t FfxFloat16; +typedef float16_t2 FfxFloat16x2; +typedef float16_t3 FfxFloat16x3; +typedef float16_t4 FfxFloat16x4; + +/// A typedef for an unsigned 16bit integer. +/// +/// @ingroup HLSLTypes +typedef uint16_t FfxUInt16; +typedef uint16_t2 FfxUInt16x2; +typedef uint16_t3 FfxUInt16x3; +typedef uint16_t4 FfxUInt16x4; + +/// A typedef for a signed 16bit integer. +/// +/// @ingroup HLSLTypes +typedef int16_t FfxInt16; +typedef int16_t2 FfxInt16x2; +typedef int16_t3 FfxInt16x3; +typedef int16_t4 FfxInt16x4; +#else // #if FFX_HLSL_SM>=62 +typedef min16float FfxFloat16; +typedef min16float2 FfxFloat16x2; +typedef min16float3 FfxFloat16x3; +typedef min16float4 FfxFloat16x4; + +/// A typedef for an unsigned 16bit integer. +/// +/// @ingroup HLSLTypes +typedef min16uint FfxUInt16; +typedef min16uint2 FfxUInt16x2; +typedef min16uint3 FfxUInt16x3; +typedef min16uint4 FfxUInt16x4; + +/// A typedef for a signed 16bit integer. +/// +/// @ingroup HLSLTypes +typedef min16int FfxInt16; +typedef min16int2 FfxInt16x2; +typedef min16int3 FfxInt16x3; +typedef min16int4 FfxInt16x4; +#endif // #if FFX_HLSL_SM>=62 + +#endif // FFX_HALF + +#endif // #if defined(FFX_HLSL) + +#if defined(FFX_GLSL) + +#define FfxFloat32Mat4 mat4 +#define FfxFloat32Mat3 mat3 + +/// A typedef for a boolean value. +/// +/// @ingroup GLSLTypes +#define FfxBoolean bool +#define FfxFloat32 float +#define FfxFloat32x2 vec2 +#define FfxFloat32x3 vec3 +#define FfxFloat32x4 vec4 +#define FfxUInt32 uint +#define FfxUInt32x2 uvec2 +#define FfxUInt32x3 uvec3 +#define FfxUInt32x4 uvec4 +#define FfxInt32 int +#define FfxInt32x2 ivec2 +#define FfxInt32x3 ivec3 +#define FfxInt32x4 ivec4 + +/// A [cacao_placeholder] typedef for matrix type until confirmed. +#define FfxFloat32x4x4 mat4 +#define FfxFloat32x3x4 mat4x3 +#define FfxFloat32x3x3 mat3 +#define FfxFloat32x2x2 mat2 + +#if FFX_HALF +#define FfxFloat16 float16_t +#define FfxFloat16x2 f16vec2 +#define FfxFloat16x3 f16vec3 +#define FfxFloat16x4 f16vec4 +#define FfxUInt16 uint16_t +#define FfxUInt16x2 u16vec2 +#define FfxUInt16x3 u16vec3 +#define FfxUInt16x4 u16vec4 +#define FfxInt16 int16_t +#define FfxInt16x2 i16vec2 +#define FfxInt16x3 i16vec3 +#define FfxInt16x4 i16vec4 +#endif // FFX_HALF +#endif // #if defined(FFX_GLSL) + +// Global toggles: +// #define FFX_HALF (1) +// #define FFX_HLSL_SM (62) + +#if FFX_HALF + +#if FFX_HLSL_SM >= 62 + +#define FFX_MIN16_SCALAR( TypeName, BaseComponentType ) typedef BaseComponentType##16_t TypeName; +#define FFX_MIN16_VECTOR( TypeName, BaseComponentType, COL ) typedef vector TypeName; +#define FFX_MIN16_MATRIX( TypeName, BaseComponentType, ROW, COL ) typedef matrix TypeName; + +#define FFX_16BIT_SCALAR( TypeName, BaseComponentType ) typedef BaseComponentType##16_t TypeName; +#define FFX_16BIT_VECTOR( TypeName, BaseComponentType, COL ) typedef vector TypeName; +#define FFX_16BIT_MATRIX( TypeName, BaseComponentType, ROW, COL ) typedef matrix TypeName; + +#else //FFX_HLSL_SM>=62 + +#define FFX_MIN16_SCALAR( TypeName, BaseComponentType ) typedef min16##BaseComponentType TypeName; +#define FFX_MIN16_VECTOR( TypeName, BaseComponentType, COL ) typedef vector TypeName; +#define FFX_MIN16_MATRIX( TypeName, BaseComponentType, ROW, COL ) typedef matrix TypeName; + +#define FFX_16BIT_SCALAR( TypeName, BaseComponentType ) FFX_MIN16_SCALAR( TypeName, BaseComponentType ); +#define FFX_16BIT_VECTOR( TypeName, BaseComponentType, COL ) FFX_MIN16_VECTOR( TypeName, BaseComponentType, COL ); +#define FFX_16BIT_MATRIX( TypeName, BaseComponentType, ROW, COL ) FFX_MIN16_MATRIX( TypeName, BaseComponentType, ROW, COL ); + +#endif //FFX_HLSL_SM>=62 + +#else //FFX_HALF + +#define FFX_MIN16_SCALAR( TypeName, BaseComponentType ) typedef BaseComponentType TypeName; +#define FFX_MIN16_VECTOR( TypeName, BaseComponentType, COL ) typedef vector TypeName; +#define FFX_MIN16_MATRIX( TypeName, BaseComponentType, ROW, COL ) typedef matrix TypeName; + +#define FFX_16BIT_SCALAR( TypeName, BaseComponentType ) typedef BaseComponentType TypeName; +#define FFX_16BIT_VECTOR( TypeName, BaseComponentType, COL ) typedef vector TypeName; +#define FFX_16BIT_MATRIX( TypeName, BaseComponentType, ROW, COL ) typedef matrix TypeName; + +#endif //FFX_HALF + +#if defined(FFX_GPU) +// Common typedefs: +#if defined(FFX_HLSL) +FFX_MIN16_SCALAR( FFX_MIN16_F , float ); +FFX_MIN16_VECTOR( FFX_MIN16_F2, float, 2 ); +FFX_MIN16_VECTOR( FFX_MIN16_F3, float, 3 ); +FFX_MIN16_VECTOR( FFX_MIN16_F4, float, 4 ); + +FFX_MIN16_SCALAR( FFX_MIN16_I, int ); +FFX_MIN16_VECTOR( FFX_MIN16_I2, int, 2 ); +FFX_MIN16_VECTOR( FFX_MIN16_I3, int, 3 ); +FFX_MIN16_VECTOR( FFX_MIN16_I4, int, 4 ); + +FFX_MIN16_SCALAR( FFX_MIN16_U, uint ); +FFX_MIN16_VECTOR( FFX_MIN16_U2, uint, 2 ); +FFX_MIN16_VECTOR( FFX_MIN16_U3, uint, 3 ); +FFX_MIN16_VECTOR( FFX_MIN16_U4, uint, 4 ); + +FFX_16BIT_SCALAR( FFX_F16_t , float ); +FFX_16BIT_VECTOR( FFX_F16_t2, float, 2 ); +FFX_16BIT_VECTOR( FFX_F16_t3, float, 3 ); +FFX_16BIT_VECTOR( FFX_F16_t4, float, 4 ); + +FFX_16BIT_SCALAR( FFX_I16_t, int ); +FFX_16BIT_VECTOR( FFX_I16_t2, int, 2 ); +FFX_16BIT_VECTOR( FFX_I16_t3, int, 3 ); +FFX_16BIT_VECTOR( FFX_I16_t4, int, 4 ); + +FFX_16BIT_SCALAR( FFX_U16_t, uint ); +FFX_16BIT_VECTOR( FFX_U16_t2, uint, 2 ); +FFX_16BIT_VECTOR( FFX_U16_t3, uint, 3 ); +FFX_16BIT_VECTOR( FFX_U16_t4, uint, 4 ); + +#define TYPEDEF_MIN16_TYPES(Prefix) \ +typedef FFX_MIN16_F Prefix##_F; \ +typedef FFX_MIN16_F2 Prefix##_F2; \ +typedef FFX_MIN16_F3 Prefix##_F3; \ +typedef FFX_MIN16_F4 Prefix##_F4; \ +typedef FFX_MIN16_I Prefix##_I; \ +typedef FFX_MIN16_I2 Prefix##_I2; \ +typedef FFX_MIN16_I3 Prefix##_I3; \ +typedef FFX_MIN16_I4 Prefix##_I4; \ +typedef FFX_MIN16_U Prefix##_U; \ +typedef FFX_MIN16_U2 Prefix##_U2; \ +typedef FFX_MIN16_U3 Prefix##_U3; \ +typedef FFX_MIN16_U4 Prefix##_U4; + +#define TYPEDEF_16BIT_TYPES(Prefix) \ +typedef FFX_16BIT_F Prefix##_F; \ +typedef FFX_16BIT_F2 Prefix##_F2; \ +typedef FFX_16BIT_F3 Prefix##_F3; \ +typedef FFX_16BIT_F4 Prefix##_F4; \ +typedef FFX_16BIT_I Prefix##_I; \ +typedef FFX_16BIT_I2 Prefix##_I2; \ +typedef FFX_16BIT_I3 Prefix##_I3; \ +typedef FFX_16BIT_I4 Prefix##_I4; \ +typedef FFX_16BIT_U Prefix##_U; \ +typedef FFX_16BIT_U2 Prefix##_U2; \ +typedef FFX_16BIT_U3 Prefix##_U3; \ +typedef FFX_16BIT_U4 Prefix##_U4; + +#define TYPEDEF_FULL_PRECISION_TYPES(Prefix) \ +typedef FfxFloat32 Prefix##_F; \ +typedef FfxFloat32x2 Prefix##_F2; \ +typedef FfxFloat32x3 Prefix##_F3; \ +typedef FfxFloat32x4 Prefix##_F4; \ +typedef FfxInt32 Prefix##_I; \ +typedef FfxInt32x2 Prefix##_I2; \ +typedef FfxInt32x3 Prefix##_I3; \ +typedef FfxInt32x4 Prefix##_I4; \ +typedef FfxUInt32 Prefix##_U; \ +typedef FfxUInt32x2 Prefix##_U2; \ +typedef FfxUInt32x3 Prefix##_U3; \ +typedef FfxUInt32x4 Prefix##_U4; +#endif // #if defined(FFX_HLSL) + +#if defined(FFX_GLSL) + +#if FFX_HALF + +#define FFX_MIN16_F float16_t +#define FFX_MIN16_F2 f16vec2 +#define FFX_MIN16_F3 f16vec3 +#define FFX_MIN16_F4 f16vec4 + +#define FFX_MIN16_I int16_t +#define FFX_MIN16_I2 i16vec2 +#define FFX_MIN16_I3 i16vec3 +#define FFX_MIN16_I4 i16vec4 + +#define FFX_MIN16_U uint16_t +#define FFX_MIN16_U2 u16vec2 +#define FFX_MIN16_U3 u16vec3 +#define FFX_MIN16_U4 u16vec4 + +#define FFX_16BIT_F float16_t +#define FFX_16BIT_F2 f16vec2 +#define FFX_16BIT_F3 f16vec3 +#define FFX_16BIT_F4 f16vec4 + +#define FFX_16BIT_I int16_t +#define FFX_16BIT_I2 i16vec2 +#define FFX_16BIT_I3 i16vec3 +#define FFX_16BIT_I4 i16vec4 + +#define FFX_16BIT_U uint16_t +#define FFX_16BIT_U2 u16vec2 +#define FFX_16BIT_U3 u16vec3 +#define FFX_16BIT_U4 u16vec4 + +#else // FFX_HALF + +#define FFX_MIN16_F float +#define FFX_MIN16_F2 vec2 +#define FFX_MIN16_F3 vec3 +#define FFX_MIN16_F4 vec4 + +#define FFX_MIN16_I int +#define FFX_MIN16_I2 ivec2 +#define FFX_MIN16_I3 ivec3 +#define FFX_MIN16_I4 ivec4 + +#define FFX_MIN16_U uint +#define FFX_MIN16_U2 uvec2 +#define FFX_MIN16_U3 uvec3 +#define FFX_MIN16_U4 uvec4 + +#define FFX_16BIT_F float +#define FFX_16BIT_F2 vec2 +#define FFX_16BIT_F3 vec3 +#define FFX_16BIT_F4 vec4 + +#define FFX_16BIT_I int +#define FFX_16BIT_I2 ivec2 +#define FFX_16BIT_I3 ivec3 +#define FFX_16BIT_I4 ivec4 + +#define FFX_16BIT_U uint +#define FFX_16BIT_U2 uvec2 +#define FFX_16BIT_U3 uvec3 +#define FFX_16BIT_U4 uvec4 + +#endif // FFX_HALF + +#endif // #if defined(FFX_GLSL) + +#endif // #if defined(FFX_GPU) +#endif // #ifndef FFX_COMMON_TYPES_H diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core.h new file mode 100644 index 000000000..d1ed14419 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core.h @@ -0,0 +1,80 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +/// @defgroup FfxGPU GPU +/// The FidelityFX SDK GPU References +/// +/// @ingroup ffxSDK + +/// @defgroup FfxHLSL HLSL References +/// FidelityFX SDK HLSL GPU References +/// +/// @ingroup FfxGPU + +/// @defgroup FfxGLSL GLSL References +/// FidelityFX SDK GLSL GPU References +/// +/// @ingroup FfxGPU + +/// @defgroup FfxGPUEffects FidelityFX GPU References +/// FidelityFX Effect GPU Reference Documentation +/// +/// @ingroup FfxGPU + +/// @defgroup GPUCore GPU Core +/// GPU defines and functions +/// +/// @ingroup FfxGPU + +#if !defined(FFX_CORE_H) +#define FFX_CORE_H + +#ifdef __hlsl_dx_compiler +#pragma dxc diagnostic push +#pragma dxc diagnostic ignored "-Wambig-lit-shift" +#endif //__hlsl_dx_compiler + +#include "ffx_common_types.h" + +#if defined(FFX_CPU) + #include "ffx_core_cpu.h" +#endif // #if defined(FFX_CPU) + +#if defined(FFX_GLSL) && defined(FFX_GPU) + #include "ffx_core_glsl.h" +#endif // #if defined(FFX_GLSL) && defined(FFX_GPU) + +#if defined(FFX_HLSL) && defined(FFX_GPU) + #include "ffx_core_hlsl.h" +#endif // #if defined(FFX_HLSL) && defined(FFX_GPU) + +#if defined(FFX_GPU) + #include "ffx_core_gpu_common.h" + #include "ffx_core_gpu_common_half.h" + #include "ffx_core_portability.h" +#endif // #if defined(FFX_GPU) + +#ifdef __hlsl_dx_compiler +#pragma dxc diagnostic pop +#endif //__hlsl_dx_compiler + +#endif // #if !defined(FFX_CORE_H) diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_glsl.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_glsl.h new file mode 100644 index 000000000..c8dccacdb --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_glsl.h @@ -0,0 +1,1916 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +/// @defgroup GLSLCore GLSL Core +/// GLSL core defines and functions +/// +/// @ingroup FfxGLSL + +/// A define for abstracting select functionality for pre/post HLSL 21 +/// +/// @ingroup GLSLCore +#define FFX_SELECT(cond, arg1, arg2) cond ? arg1 : arg2 + +/// A define for abstracting shared memory between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_GROUPSHARED shared + +/// A define for abstracting compute memory barriers between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_GROUP_MEMORY_BARRIER groupMemoryBarrier(); barrier() + +/// A define for abstracting compute atomic additions between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_ATOMIC_ADD(x, y) atomicAdd(x, y) + +/// A define for abstracting compute atomic additions between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_ATOMIC_ADD_RETURN(x, y, r) r = atomicAdd(x, y) + +/// A define for abstracting compute atomic OR between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_ATOMIC_OR(x, y) atomicOr(x, y) + +/// A define for abstracting compute atomic min between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_ATOMIC_MIN(x, y) atomicMin(x, y) + +/// A define for abstracting compute atomic max between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_ATOMIC_MAX(x, y) atomicMax(x, y) + +/// A define added to accept static markup on functions to aid CPU/GPU portability of code. +/// +/// @ingroup GLSLCore +#define FFX_STATIC + +/// A define for abstracting loop unrolling between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_UNROLL + +/// A define for abstracting a 'greater than' comparison operator between two types. +/// +/// @ingroup GLSLCore +#define FFX_GREATER_THAN(x, y) greaterThan(x, y) + +/// A define for abstracting a 'greater than or equal' comparison operator between two types. +/// +/// @ingroup GLSLCore +#define FFX_GREATER_THAN_EQUAL(x, y) greaterThanEqual(x, y) + +/// A define for abstracting a 'less than' comparison operator between two types. +/// +/// @ingroup GLSLCore +#define FFX_LESS_THAN(x, y) lessThan(x, y) + +/// A define for abstracting a 'less than or equal' comparison operator between two types. +/// +/// @ingroup GLSLCore +#define FFX_LESS_THAN_EQUAL(x, y) lessThanEqual(x, y) + +/// A define for abstracting an 'equal' comparison operator between two types. +/// +/// @ingroup GLSLCore +#define FFX_EQUAL(x, y) equal(x, y) + +/// A define for abstracting a 'not equal' comparison operator between two types. +/// +/// @ingroup GLSLCore +#define FFX_NOT_EQUAL(x, y) notEqual(x, y) + +/// A define for abstracting matrix multiply operations between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_MATRIX_MULTIPLY(a, b) (a * b) + +/// A define for abstracting vector transformations between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_TRANSFORM_VECTOR(a, b) (a * b) + +/// A define for abstracting modulo operations between shading languages. +/// +/// @ingroup GLSLCore +#define FFX_MODULO(a, b) (mod(a, b)) + +/// Broadcast a scalar value to a 1-dimensional floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_FLOAT32(x) FfxFloat32(x) + +/// Broadcast a scalar value to a 2-dimensional floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_FLOAT32X2(x) FfxFloat32x2(FfxFloat32(x)) + +/// Broadcast a scalar value to a 3-dimensional floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_FLOAT32X3(x) FfxFloat32x3(FfxFloat32(x)) + +/// Broadcast a scalar value to a 4-dimensional floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_FLOAT32X4(x) FfxFloat32x4(FfxFloat32(x)) + +/// Broadcast a scalar value to a 1-dimensional unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_UINT32(x) FfxUInt32(x) + +/// Broadcast a scalar value to a 2-dimensional unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_UINT32X2(x) FfxUInt32x2(FfxUInt32(x)) + +/// Broadcast a scalar value to a 3-dimensional unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_UINT32X3(x) FfxUInt32x3(FfxUInt32(x)) + +/// Broadcast a scalar value to a 4-dimensional unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_UINT32X4(x) FfxUInt32x4(FfxUInt32(x)) + +/// Broadcast a scalar value to a 1-dimensional signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_INT32(x) FfxInt32(x) + +/// Broadcast a scalar value to a 2-dimensional signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_INT32X2(x) FfxInt32x2(FfxInt32(x)) + +/// Broadcast a scalar value to a 3-dimensional signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_INT32X3(x) FfxInt32x3(FfxInt32(x)) + +/// Broadcast a scalar value to a 4-dimensional signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_INT32X4(x) FfxInt32x4(FfxInt32(x)) + +/// Broadcast a scalar value to a 1-dimensional half-precision floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_FLOAT16(x) FFX_MIN16_F(x) + +/// Broadcast a scalar value to a 2-dimensional half-precision floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_FLOAT16X2(x) FFX_MIN16_F2(FFX_MIN16_F(x)) + +/// Broadcast a scalar value to a 3-dimensional half-precision floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_FLOAT16X3(x) FFX_MIN16_F3(FFX_MIN16_F(x)) + +/// Broadcast a scalar value to a 4-dimensional half-precision floating point vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_FLOAT16X4(x) FFX_MIN16_F4(FFX_MIN16_F(x)) + +/// Broadcast a scalar value to a 1-dimensional half-precision unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_UINT16(x) FFX_MIN16_U(x) + +/// Broadcast a scalar value to a 2-dimensional half-precision unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_UINT16X2(x) FFX_MIN16_U2(FFX_MIN16_U(x)) + +/// Broadcast a scalar value to a 3-dimensional half-precision unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_UINT16X3(x) FFX_MIN16_U3(FFX_MIN16_U(x)) + +/// Broadcast a scalar value to a 4-dimensional half-precision unsigned integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_UINT16X4(x) FFX_MIN16_U4(FFX_MIN16_U(x)) + +/// Broadcast a scalar value to a 1-dimensional half-precision signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_INT16(x) FFX_MIN16_I(x) + +/// Broadcast a scalar value to a 2-dimensional half-precision signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_INT16X2(x) FFX_MIN16_I2(FFX_MIN16_I(x)) + +/// Broadcast a scalar value to a 3-dimensional half-precision signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_INT16X3(x) FFX_MIN16_I3(FFX_MIN16_I(x)) + +/// Broadcast a scalar value to a 4-dimensional half-precision signed integer vector. +/// +/// @ingroup GLSLCore +#define FFX_BROADCAST_MIN_INT16X4(x) FFX_MIN16_I4(FFX_MIN16_I(x)) + + #extension GL_EXT_shader_explicit_arithmetic_types : require +#if !defined(FFX_SKIP_EXT) +#if FFX_HALF + #extension GL_EXT_shader_16bit_storage : require +#endif // FFX_HALF + +#if defined(FFX_LONG) + #extension GL_ARB_gpu_shader_int64 : require + #extension GL_NV_shader_atomic_int64 : require +#endif // #if defined(FFX_LONG) + +#if defined(FFX_WAVE) + #extension GL_KHR_shader_subgroup_arithmetic : require + #extension GL_KHR_shader_subgroup_ballot : require + #extension GL_KHR_shader_subgroup_quad : require + #extension GL_KHR_shader_subgroup_shuffle : require +#endif // #if defined(FFX_WAVE) +#endif // #if !defined(FFX_SKIP_EXT) + +// Forward declarations +FfxFloat32 ffxSqrt(FfxFloat32 x); +FfxFloat32x2 ffxSqrt(FfxFloat32x2 x); +FfxFloat32x3 ffxSqrt(FfxFloat32x3 x); +FfxFloat32x4 ffxSqrt(FfxFloat32x4 x); + +/// Interprets the bit pattern of x as a floating-point number. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as a floating-point number. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxAsFloat(FfxUInt32 x) +{ + return uintBitsToFloat(x); +} + +/// Interprets the bit pattern of x as a floating-point number. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as a floating-point number. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxAsFloat(FfxUInt32x2 x) +{ + return uintBitsToFloat(x); +} + +/// Interprets the bit pattern of x as a floating-point number. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as a floating-point number. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxAsFloat(FfxUInt32x3 x) +{ + return uintBitsToFloat(x); +} + +/// Interprets the bit pattern of x as a floating-point number. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as a floating-point number. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxAsFloat(FfxUInt32x4 x) +{ + return uintBitsToFloat(x); +} + +/// Interprets the bit pattern of x as an unsigned integer. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as an unsigned integer. +/// +/// @ingroup GLSLCore +FfxUInt32 ffxAsUInt32(FfxFloat32 x) +{ + return floatBitsToUint(x); +} + +/// Interprets the bit pattern of x as an unsigned integer. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as an unsigned integer. +/// +/// @ingroup GLSLCore +FfxUInt32x2 ffxAsUInt32(FfxFloat32x2 x) +{ + return floatBitsToUint(x); +} + +/// Interprets the bit pattern of x as an unsigned integer. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as an unsigned integer. +/// +/// @ingroup GLSLCore +FfxUInt32x3 ffxAsUInt32(FfxFloat32x3 x) +{ + return floatBitsToUint(x); +} + +/// Interprets the bit pattern of x as an unsigned integer. +/// +/// @param [in] x The input value. +/// +/// @returns +/// The input interpreted as an unsigned integer. +/// +/// @ingroup GLSLCore +FfxUInt32x4 ffxAsUInt32(FfxFloat32x4 x) +{ + return floatBitsToUint(x); +} + +/// Pack 2x32-bit floating point values in a single 32bit value. +/// +/// This function first converts each component of value into their nearest 16-bit floating +/// point representation, and then stores the X and Y components in the lower and upper 16 bits of the +/// 32bit unsigned integer respectively. +/// +/// @param [in] value A 2-dimensional floating point value to convert and pack. +/// +/// @returns +/// A packed 32bit value containing 2 16bit floating point values. +/// +/// @ingroup GLSLCore +FfxUInt32 ffxPackHalf2x16(FfxFloat32x2 value) +{ + return packHalf2x16(value); +} + +/// Convert a 32bit IEEE 754 floating point value to its nearest 16bit equivalent. +/// +/// @param [in] value The value to convert. +/// +/// @returns +/// The nearest 16bit equivalent of value. +/// +/// @ingroup GLSLCore +FfxUInt32 ffxF32ToF16(FfxFloat32 value) +{ + return packHalf2x16(FfxFloat32x2(value, 0.0)); +} + +/// Broadcast a scalar value to a 2-dimensional floating point vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 2-dimensional floating point vector with value in each component. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxBroadcast2(FfxFloat32 value) +{ + return FfxFloat32x2(value, value); +} + +/// Broadcast a scalar value to a 3-dimensional floating point vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 3-dimensional floating point vector with value in each component. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxBroadcast3(FfxFloat32 value) +{ + return FfxFloat32x3(value, value, value); +} + +/// Broadcast a scalar value to a 4-dimensional floating point vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 4-dimensional floating point vector with value in each component. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxBroadcast4(FfxFloat32 value) +{ + return FfxFloat32x4(value, value, value, value); +} + +/// Broadcast a scalar value to a 2-dimensional signed integer vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 2-dimensional signed integer vector with value in each component. +/// +/// @ingroup GLSLCore +FfxInt32x2 ffxBroadcast2(FfxInt32 value) +{ + return FfxInt32x2(value, value); +} + +/// Broadcast a scalar value to a 3-dimensional signed integer vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 3-dimensional signed integer vector with value in each component. +/// +/// @ingroup GLSLCore +FfxInt32x3 ffxBroadcast3(FfxInt32 value) +{ + return FfxInt32x3(value, value, value); +} + +/// Broadcast a scalar value to a 4-dimensional signed integer vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 4-dimensional signed integer vector with value in each component. +/// +/// @ingroup GLSLCore +FfxInt32x4 ffxBroadcast4(FfxInt32 value) +{ + return FfxInt32x4(value, value, value, value); +} + +/// Broadcast a scalar value to a 2-dimensional unsigned integer vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 2-dimensional unsigned integer vector with value in each component. +/// +/// @ingroup GLSLCore +FfxUInt32x2 ffxBroadcast2(FfxUInt32 value) +{ + return FfxUInt32x2(value, value); +} + +/// Broadcast a scalar value to a 3-dimensional unsigned integer vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 3-dimensional unsigned integer vector with value in each component. +/// +/// @ingroup GLSLCore +FfxUInt32x3 ffxBroadcast3(FfxUInt32 value) +{ + return FfxUInt32x3(value, value, value); +} + +/// Broadcast a scalar value to a 4-dimensional unsigned integer vector. +/// +/// @param [in] value The value to to broadcast. +/// +/// @returns +/// A 4-dimensional unsigned integer vector with value in each component. +/// +/// @ingroup GLSLCore +FfxUInt32x4 ffxBroadcast4(FfxUInt32 value) +{ + return FfxUInt32x4(value, value, value, value); +} + +/// +/// +/// @ingroup GLSLCore +FfxUInt32 ffxBitfieldExtract(FfxUInt32 src, FfxUInt32 off, FfxUInt32 bits) +{ + return bitfieldExtract(src, FfxInt32(off), FfxInt32(bits)); +} + +/// +/// +/// @ingroup GLSLCore +FfxUInt32 ffxBitfieldInsert(FfxUInt32 src, FfxUInt32 ins, FfxUInt32 mask) +{ + return (ins & mask) | (src & (~mask)); +} + +// Proxy for V_BFI_B32 where the 'mask' is set as 'bits', 'mask=(1<mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxLerp(FfxFloat32 x, FfxFloat32 y, FfxFloat32 t) +{ + return mix(x, y, t); +} + +/// Compute the linear interopation between two values. +/// +/// Implemented by calling the GLSL mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxLerp(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32 t) +{ + return mix(x, y, t); +} + +/// Compute the linear interopation between two values. +/// +/// Implemented by calling the GLSL mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxLerp(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32x2 t) +{ + return mix(x, y, t); +} + +/// Compute the linear interopation between two values. +/// +/// Implemented by calling the GLSL mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxLerp(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32 t) +{ + return mix(x, y, t); +} + +/// Compute the linear interopation between two values. +/// +/// Implemented by calling the GLSL mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxLerp(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32x3 t) +{ + return mix(x, y, t); +} + +/// Compute the linear interopation between two values. +/// +/// Implemented by calling the GLSL mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxLerp(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32 t) +{ + return mix(x, y, t); +} + +/// Compute the linear interopation between two values. +/// +/// Implemented by calling the GLSL mix instrinsic function. Implements the +/// following math: +/// +/// (1 - t) * x + t * y +/// +/// @param [in] x The first value to lerp between. +/// @param [in] y The second value to lerp between. +/// @param [in] t The value to determine how much of x and how much of y. +/// +/// @returns +/// A linearly interpolated value between x and y according to t. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxLerp(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32x4 t) +{ + return mix(x, y, t); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN or RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxMax3(FfxFloat32 x, FfxFloat32 y, FfxFloat32 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN or RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxMax3(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32x2 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN or RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxMax3(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32x3 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN or RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxMax3(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32x4 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN or RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32 ffxMax3(FfxUInt32 x, FfxUInt32 y, FfxUInt32 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN or RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32x2 ffxMax3(FfxUInt32x2 x, FfxUInt32x2 y, FfxUInt32x2 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32x3 ffxMax3(FfxUInt32x3 x, FfxUInt32x3 y, FfxUInt32x3 z) +{ + return max(x, max(y, z)); +} + +/// Compute the maximum of three values. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the max calculation. +/// @param [in] y The second value to include in the max calcuation. +/// @param [in] z The third value to include in the max calcuation. +/// +/// @returns +/// The maximum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32x4 ffxMax3(FfxUInt32x4 x, FfxUInt32x4 y, FfxUInt32x4 z) +{ + return max(x, max(y, z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxMed3(FfxFloat32 x, FfxFloat32 y, FfxFloat32 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxMed3(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32x2 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxMed3(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32x3 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxMed3(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32x4 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_I32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxInt32 ffxMed3(FfxInt32 x, FfxInt32 y, FfxInt32 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_I32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxInt32x2 ffxMed3(FfxInt32x2 x, FfxInt32x2 y, FfxInt32x2 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_I32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxInt32x3 ffxMed3(FfxInt32x3 x, FfxInt32x3 y, FfxInt32x3 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + +/// Compute the median of three values. +/// +/// NOTE: This function should compile down to a single V_MED3_I32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the median calculation. +/// @param [in] y The second value to include in the median calcuation. +/// @param [in] z The third value to include in the median calcuation. +/// +/// @returns +/// The median value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxInt32x4 ffxMed3(FfxInt32x4 x, FfxInt32x4 y, FfxInt32x4 z) +{ + return max(min(x, y), min(max(x, y), z)); +} + + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN and RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxMin3(FfxFloat32 x, FfxFloat32 y, FfxFloat32 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxMin3(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32x2 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxMin3(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32x3 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxMin3(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32x4 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32 ffxMin3(FfxUInt32 x, FfxUInt32 y, FfxUInt32 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32x2 ffxMin3(FfxUInt32x2 x, FfxUInt32x2 y, FfxUInt32x2 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32x3 ffxMin3(FfxUInt32x3 x, FfxUInt32x3 y, FfxUInt32x3 z) +{ + return min(x, min(y, z)); +} + +/// Compute the minimum of three values. +/// +/// NOTE: This function should compile down to a single V_MIN3_F32 operation on +/// GCN/RDNA hardware. +/// +/// @param [in] x The first value to include in the min calculation. +/// @param [in] y The second value to include in the min calcuation. +/// @param [in] z The third value to include in the min calcuation. +/// +/// @returns +/// The minimum value of x, y, and z. +/// +/// @ingroup GLSLCore +FfxUInt32x4 ffxMin3(FfxUInt32x4 x, FfxUInt32x4 y, FfxUInt32x4 z) +{ + return min(x, min(y, z)); +} + +/// Compute the reciprocal of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rcp can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal value of x. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxReciprocal(FfxFloat32 x) +{ + return FfxFloat32(1.0) / x; +} + +/// Compute the reciprocal of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rcp can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal value of x. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxReciprocal(FfxFloat32x2 x) +{ + return ffxBroadcast2(1.0) / x; +} + +/// Compute the reciprocal of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rcp can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal value of x. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxReciprocal(FfxFloat32x3 x) +{ + return ffxBroadcast3(1.0) / x; +} + +/// Compute the reciprocal of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rcp can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal value of x. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxReciprocal(FfxFloat32x4 x) +{ + return ffxBroadcast4(1.0) / x; +} + +/// Compute the reciprocal square root of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rsqrt can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal square root value of x. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxRsqrt(FfxFloat32 x) +{ + return FfxFloat32(1.0) / ffxSqrt(x); +} + +/// Compute the reciprocal square root of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rsqrt can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal square root value of x. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxRsqrt(FfxFloat32x2 x) +{ + return ffxBroadcast2(1.0) / ffxSqrt(x); +} + +/// Compute the reciprocal square root of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rsqrt can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal square root value of x. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxRsqrt(FfxFloat32x3 x) +{ + return ffxBroadcast3(1.0) / ffxSqrt(x); +} + +/// Compute the reciprocal square root of a value. +/// +/// NOTE: This function is only provided for GLSL. In HLSL the intrinsic function rsqrt can be used. +/// +/// @param [in] x The value to compute the reciprocal for. +/// +/// @returns +/// The reciprocal square root value of x. +/// +/// @ingroup GLSLCore +FfxFloat32x4 rsqrt(FfxFloat32x4 x) +{ + return ffxBroadcast4(1.0) / ffxSqrt(x); +} + +/// Clamp a value to a [0..1] range. +/// +/// @param [in] x The value to clamp to [0..1] range. +/// +/// @returns +/// The clamped version of x. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxSaturate(FfxFloat32 x) +{ + return clamp(x, FfxFloat32(0.0), FfxFloat32(1.0)); +} + +/// Clamp a value to a [0..1] range. +/// +/// @param [in] x The value to clamp to [0..1] range. +/// +/// @returns +/// The clamped version of x. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxSaturate(FfxFloat32x2 x) +{ + return clamp(x, ffxBroadcast2(0.0), ffxBroadcast2(1.0)); +} + +/// Clamp a value to a [0..1] range. +/// +/// @param [in] x The value to clamp to [0..1] range. +/// +/// @returns +/// The clamped version of x. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxSaturate(FfxFloat32x3 x) +{ + return clamp(x, ffxBroadcast3(0.0), ffxBroadcast3(1.0)); +} + +/// Clamp a value to a [0..1] range. +/// +/// @param [in] x The value to clamp to [0..1] range. +/// +/// @returns +/// The clamped version of x. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxSaturate(FfxFloat32x4 x) +{ + return clamp(x, ffxBroadcast4(0.0), ffxBroadcast4(1.0)); +} + +/// Compute the factional part of a decimal value. +/// +/// This function calculates x - floor(x). Where floor is the intrinsic HLSL function. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on GCN/RDNA hardware. It is +/// worth further noting that this function is intentionally distinct from the HLSL frac intrinsic +/// function. +/// +/// @param [in] x The value to compute the fractional part from. +/// +/// @returns +/// The fractional part of x. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxFract(FfxFloat32 x) +{ + return fract(x); +} + +/// Compute the factional part of a decimal value. +/// +/// This function calculates x - floor(x). Where floor is the intrinsic HLSL function. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on GCN/RDNA hardware. It is +/// worth further noting that this function is intentionally distinct from the HLSL frac intrinsic +/// function. +/// +/// @param [in] x The value to compute the fractional part from. +/// +/// @returns +/// The fractional part of x. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxFract(FfxFloat32x2 x) +{ + return fract(x); +} + +/// Compute the factional part of a decimal value. +/// +/// This function calculates x - floor(x). Where floor is the intrinsic HLSL function. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on GCN/RDNA hardware. It is +/// worth further noting that this function is intentionally distinct from the HLSL frac intrinsic +/// function. +/// +/// @param [in] x The value to compute the fractional part from. +/// +/// @returns +/// The fractional part of x. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxFract(FfxFloat32x3 x) +{ + return fract(x); +} + +/// Compute the factional part of a decimal value. +/// +/// This function calculates x - floor(x). Where floor is the intrinsic HLSL function. +/// +/// NOTE: This function should compile down to a single V_MAX3_F32 operation on GCN/RDNA hardware. It is +/// worth further noting that this function is intentionally distinct from the HLSL frac intrinsic +/// function. +/// +/// @param [in] x The value to compute the fractional part from. +/// +/// @returns +/// The fractional part of x. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxFract(FfxFloat32x4 x) +{ + return fract(x); +} + +/// Rounds to the nearest integer. In case the fractional part is 0.5, it will round to the nearest even integer. +/// +/// @param [in] x The value to be rounded. +/// +/// @returns +/// The nearest integer from x. The nearest even integer from x if equidistant from 2 integer. +/// +/// @ingroup GLSLCore +FfxFloat32 ffxRound(FfxFloat32 x) +{ + return roundEven(x); +} + +/// Rounds to the nearest integer. In case the fractional part is 0.5, it will round to the nearest even integer. +/// +/// @param [in] x The value to be rounded. +/// +/// @returns +/// The nearest integer from x. The nearest even integer from x if equidistant from 2 integer. +/// +/// @ingroup GLSLCore +FfxFloat32x2 ffxRound(FfxFloat32x2 x) +{ + return roundEven(x); +} + +/// Rounds to the nearest integer. In case the fractional part is 0.5, it will round to the nearest even integer. +/// +/// @param [in] x The value to be rounded. +/// +/// @returns +/// The nearest integer from x. The nearest even integer from x if equidistant from 2 integer. +/// +/// @ingroup GLSLCore +FfxFloat32x3 ffxRound(FfxFloat32x3 x) +{ + return roundEven(x); +} + +/// Rounds to the nearest integer. In case the fractional part is 0.5, it will round to the nearest even integer. +/// +/// @param [in] x The value to be rounded. +/// +/// @returns +/// The nearest integer from x. The nearest even integer from x if equidistant from 2 integer. +/// +/// @ingroup GLSLCore +FfxFloat32x4 ffxRound(FfxFloat32x4 x) +{ + return roundEven(x); +} + +FfxUInt32 ffxAShrSU1(FfxUInt32 a, FfxUInt32 b) +{ + return FfxUInt32(FfxInt32(a) >> FfxInt32(b)); +} + +FfxUInt32 ffxPackF32(FfxFloat32x2 v){ + return packHalf2x16(v); +} + +FfxFloat32x2 ffxUnpackF32(FfxUInt32 u){ + return unpackHalf2x16(u); +} + +FfxUInt32x2 ffxPackF32x2(FfxFloat32x4 v){ + return FfxUInt32x2(ffxPackF32(v.xy), ffxPackF32(v.zw)); +} + +FfxFloat32x4 ffxUnpackF32x2(FfxUInt32x2 a){ + return FfxFloat32x4(ffxUnpackF32(a.x), ffxUnpackF32(a.y)); +} + +/// @brief Inverts the value while avoiding division by zero. If the value is zero, zero is returned. +/// @param v Value to invert. +/// @return If v = 0 returns 0. If v != 0 returns 1/v. +FfxFloat32 ffxInvertSafe(FfxFloat32 v){ + FfxFloat32 s = sign(v); + FfxFloat32 s2 = s*s; + return s2/(v + s2 - 1.0); +} + +/// @brief Inverts the value while avoiding division by zero. If the value is zero, zero is returned. +/// @param v Value to invert. +/// @return If v = 0 returns 0. If v != 0 returns 1/v. +FfxFloat32x2 ffxInvertSafe(FfxFloat32x2 v){ + FfxFloat32x2 s = sign(v); + FfxFloat32x2 s2 = s*s; + return s2/(v + s2 - FfxFloat32x2(1.0, 1.0)); +} + +/// @brief Inverts the value while avoiding division by zero. If the value is zero, zero is returned. +/// @param v Value to invert. +/// @return If v = 0 returns 0. If v != 0 returns 1/v. +FfxFloat32x3 ffxInvertSafe(FfxFloat32x3 v){ + FfxFloat32x3 s = sign(v); + FfxFloat32x3 s2 = s*s; + return s2/(v + s2 - FfxFloat32x3(1.0, 1.0, 1.0)); +} + +/// @brief Inverts the value while avoiding division by zero. If the value is zero, zero is returned. +/// @param v Value to invert. +/// @return If v = 0 returns 0. If v != 0 returns 1/v. +FfxFloat32x4 ffxInvertSafe(FfxFloat32x4 v){ + FfxFloat32x4 s = sign(v); + FfxFloat32x4 s2 = s*s; + return s2/(v + s2 - FfxFloat32x4(1.0, 1.0, 1.0, 1.0)); +} +#if FFX_HALF +#define FFX_UINT32_TO_FLOAT16X2(x) unpackFloat2x16(FfxUInt32(x)) + +FfxUInt32 ffxPackF16(FfxFloat16x2 v){ + return packHalf2x16(v); +} + +FfxFloat16x2 ffxUnpackF16(FfxUInt32 u){ + return FfxFloat16x2(unpackHalf2x16(u)); +} + +FfxFloat16x4 ffxUint32x2ToFloat16x4(FfxUInt32x2 x) +{ + return FfxFloat16x4(unpackFloat2x16(x.x), unpackFloat2x16(x.y)); +} +#define FFX_UINT32X2_TO_FLOAT16X4(x) ffxUint32x2ToFloat16x4(FfxUInt32x2(x)) +#define FFX_UINT32_TO_UINT16X2(x) unpackUint2x16(FfxUInt32(x)) +#define FFX_UINT32X2_TO_UINT16X4(x) unpackUint4x16(pack64(FfxUInt32x2(x))) +//------------------------------------------------------------------------------------------------------------------------------ +#define FFX_FLOAT16X2_TO_UINT32(x) packFloat2x16(FfxFloat16x2(x)) +FfxUInt32x2 ffxFloat16x4ToUint32x2(FfxFloat16x4 x) +{ + return FfxUInt32x2(packFloat2x16(x.xy), packFloat2x16(x.zw)); +} +#define FFX_FLOAT16X4_TO_UINT32X2(x) ffxFloat16x4ToUint32x2(FfxFloat16x4(x)) +#define FFX_UINT16X2_TO_UINT32(x) packUint2x16(FfxUInt16x2(x)) +#define FFX_UINT16X4_TO_UINT32X2(x) unpack32(packUint4x16(FfxUInt16x4(x))) +//============================================================================================================================== +#define FFX_TO_UINT16(x) halfBitsToUint16(FfxFloat16(x)) +#define FFX_TO_UINT16X2(x) halfBitsToUint16(FfxFloat16x2(x)) +#define FFX_TO_UINT16X3(x) halfBitsToUint16(FfxFloat16x3(x)) +#define FFX_TO_UINT16X4(x) halfBitsToUint16(FfxFloat16x4(x)) +//------------------------------------------------------------------------------------------------------------------------------ +#define FFX_TO_FLOAT16(x) uint16BitsToHalf(FfxUInt16(x)) +#define FFX_TO_FLOAT16X2(x) uint16BitsToHalf(FfxUInt16x2(x)) +#define FFX_TO_FLOAT16X3(x) uint16BitsToHalf(FfxUInt16x3(x)) +#define FFX_TO_FLOAT16X4(x) uint16BitsToHalf(FfxUInt16x4(x)) +//============================================================================================================================== +FfxFloat16 ffxBroadcastFloat16(FfxFloat16 a) +{ + return FfxFloat16(a); +} +FfxFloat16x2 ffxBroadcastFloat16x2(FfxFloat16 a) +{ + return FfxFloat16x2(a, a); +} +FfxFloat16x3 ffxBroadcastFloat16x3(FfxFloat16 a) +{ + return FfxFloat16x3(a, a, a); +} +FfxFloat16x4 ffxBroadcastFloat16x4(FfxFloat16 a) +{ + return FfxFloat16x4(a, a, a, a); +} +#define FFX_BROADCAST_FLOAT16(a) FfxFloat16(a) +#define FFX_BROADCAST_FLOAT16X2(a) FfxFloat16x2(FfxFloat16(a)) +#define FFX_BROADCAST_FLOAT16X3(a) FfxFloat16x3(FfxFloat16(a)) +#define FFX_BROADCAST_FLOAT16X4(a) FfxFloat16x4(FfxFloat16(a)) +//------------------------------------------------------------------------------------------------------------------------------ +FfxInt16 ffxBroadcastInt16(FfxInt16 a) +{ + return FfxInt16(a); +} +FfxInt16x2 ffxBroadcastInt16x2(FfxInt16 a) +{ + return FfxInt16x2(a, a); +} +FfxInt16x3 ffxBroadcastInt16x3(FfxInt16 a) +{ + return FfxInt16x3(a, a, a); +} +FfxInt16x4 ffxBroadcastInt16x4(FfxInt16 a) +{ + return FfxInt16x4(a, a, a, a); +} +#define FFX_BROADCAST_INT16(a) FfxInt16(a) +#define FFX_BROADCAST_INT16X2(a) FfxInt16x2(FfxInt16(a)) +#define FFX_BROADCAST_INT16X3(a) FfxInt16x3(FfxInt16(a)) +#define FFX_BROADCAST_INT16X4(a) FfxInt16x4(FfxInt16(a)) +//------------------------------------------------------------------------------------------------------------------------------ +FfxUInt16 ffxBroadcastUInt16(FfxUInt16 a) +{ + return FfxUInt16(a); +} +FfxUInt16x2 ffxBroadcastUInt16x2(FfxUInt16 a) +{ + return FfxUInt16x2(a, a); +} +FfxUInt16x3 ffxBroadcastUInt16x3(FfxUInt16 a) +{ + return FfxUInt16x3(a, a, a); +} +FfxUInt16x4 ffxBroadcastUInt16x4(FfxUInt16 a) +{ + return FfxUInt16x4(a, a, a, a); +} +#define FFX_BROADCAST_UINT16(a) FfxUInt16(a) +#define FFX_BROADCAST_UINT16X2(a) FfxUInt16x2(FfxUInt16(a)) +#define FFX_BROADCAST_UINT16X3(a) FfxUInt16x3(FfxUInt16(a)) +#define FFX_BROADCAST_UINT16X4(a) FfxUInt16x4(FfxUInt16(a)) +//============================================================================================================================== +FfxUInt16 ffxAbsHalf(FfxUInt16 a) +{ + return FfxUInt16(abs(FfxInt16(a))); +} +FfxUInt16x2 ffxAbsHalf(FfxUInt16x2 a) +{ + return FfxUInt16x2(abs(FfxInt16x2(a))); +} +FfxUInt16x3 ffxAbsHalf(FfxUInt16x3 a) +{ + return FfxUInt16x3(abs(FfxInt16x3(a))); +} +FfxUInt16x4 ffxAbsHalf(FfxUInt16x4 a) +{ + return FfxUInt16x4(abs(FfxInt16x4(a))); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxClampHalf(FfxFloat16 x, FfxFloat16 n, FfxFloat16 m) +{ + return clamp(x, n, m); +} +FfxFloat16x2 ffxClampHalf(FfxFloat16x2 x, FfxFloat16x2 n, FfxFloat16x2 m) +{ + return clamp(x, n, m); +} +FfxFloat16x3 ffxClampHalf(FfxFloat16x3 x, FfxFloat16x3 n, FfxFloat16x3 m) +{ + return clamp(x, n, m); +} +FfxFloat16x4 ffxClampHalf(FfxFloat16x4 x, FfxFloat16x4 n, FfxFloat16x4 m) +{ + return clamp(x, n, m); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxFract(FfxFloat16 x) +{ + return fract(x); +} +FfxFloat16x2 ffxFract(FfxFloat16x2 x) +{ + return fract(x); +} +FfxFloat16x3 ffxFract(FfxFloat16x3 x) +{ + return fract(x); +} +FfxFloat16x4 ffxFract(FfxFloat16x4 x) +{ + return fract(x); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxLerp(FfxFloat16 x, FfxFloat16 y, FfxFloat16 a) +{ + return mix(x, y, a); +} +FfxFloat16x2 ffxLerp(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16 a) +{ + return mix(x, y, a); +} +FfxFloat16x2 ffxLerp(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16x2 a) +{ + return mix(x, y, a); +} +FfxFloat16x3 ffxLerp(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16x3 a) +{ + return mix(x, y, a); +} +FfxFloat16x3 ffxLerp(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16 a) +{ + return mix(x, y, a); +} +FfxFloat16x4 ffxLerp(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16 a) +{ + return mix(x, y, a); +} +FfxFloat16x4 ffxLerp(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16x4 a) +{ + return mix(x, y, a); +} +//------------------------------------------------------------------------------------------------------------------------------ +// No packed version of ffxMax3. +FfxFloat16 ffxMax3Half(FfxFloat16 x, FfxFloat16 y, FfxFloat16 z) +{ + return max(x, max(y, z)); +} +FfxFloat16x2 ffxMax3Half(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16x2 z) +{ + return max(x, max(y, z)); +} +FfxFloat16x3 ffxMax3Half(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16x3 z) +{ + return max(x, max(y, z)); +} +FfxFloat16x4 ffxMax3Half(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16x4 z) +{ + return max(x, max(y, z)); +} +//------------------------------------------------------------------------------------------------------------------------------ +// No packed version of ffxMin3. +FfxFloat16 ffxMin3Half(FfxFloat16 x, FfxFloat16 y, FfxFloat16 z) +{ + return min(x, min(y, z)); +} +FfxFloat16x2 ffxMin3Half(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16x2 z) +{ + return min(x, min(y, z)); +} +FfxFloat16x3 ffxMin3Half(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16x3 z) +{ + return min(x, min(y, z)); +} +FfxFloat16x4 ffxMin3Half(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16x4 z) +{ + return min(x, min(y, z)); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxMed3Half(FfxFloat16 x, FfxFloat16 y, FfxFloat16 z) +{ + return max(min(x, y), min(max(x, y), z)); +} +FfxFloat16x2 ffxMed3Half(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16x2 z) +{ + return max(min(x, y), min(max(x, y), z)); +} +FfxFloat16x3 ffxMed3Half(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16x3 z) +{ + return max(min(x, y), min(max(x, y), z)); +} +FfxFloat16x4 ffxMed3Half(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16x4 z) +{ + return max(min(x, y), min(max(x, y), z)); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxReciprocalHalf(FfxFloat16 x) +{ + return FFX_BROADCAST_FLOAT16(1.0) / x; +} +FfxFloat16x2 ffxReciprocalHalf(FfxFloat16x2 x) +{ + return FFX_BROADCAST_FLOAT16X2(1.0) / x; +} +FfxFloat16x3 ffxReciprocalHalf(FfxFloat16x3 x) +{ + return FFX_BROADCAST_FLOAT16X3(1.0) / x; +} +FfxFloat16x4 ffxReciprocalHalf(FfxFloat16x4 x) +{ + return FFX_BROADCAST_FLOAT16X4(1.0) / x; +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxReciprocalSquareRootHalf(FfxFloat16 x) +{ + return FFX_BROADCAST_FLOAT16(1.0) / sqrt(x); +} +FfxFloat16x2 ffxReciprocalSquareRootHalf(FfxFloat16x2 x) +{ + return FFX_BROADCAST_FLOAT16X2(1.0) / sqrt(x); +} +FfxFloat16x3 ffxReciprocalSquareRootHalf(FfxFloat16x3 x) +{ + return FFX_BROADCAST_FLOAT16X3(1.0) / sqrt(x); +} +FfxFloat16x4 ffxReciprocalSquareRootHalf(FfxFloat16x4 x) +{ + return FFX_BROADCAST_FLOAT16X4(1.0) / sqrt(x); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxFloat16 ffxSaturate(FfxFloat16 x) +{ + return clamp(x, FFX_BROADCAST_FLOAT16(0.0), FFX_BROADCAST_FLOAT16(1.0)); +} +FfxFloat16x2 ffxSaturate(FfxFloat16x2 x) +{ + return clamp(x, FFX_BROADCAST_FLOAT16X2(0.0), FFX_BROADCAST_FLOAT16X2(1.0)); +} +FfxFloat16x3 ffxSaturate(FfxFloat16x3 x) +{ + return clamp(x, FFX_BROADCAST_FLOAT16X3(0.0), FFX_BROADCAST_FLOAT16X3(1.0)); +} +FfxFloat16x4 ffxSaturate(FfxFloat16x4 x) +{ + return clamp(x, FFX_BROADCAST_FLOAT16X4(0.0), FFX_BROADCAST_FLOAT16X4(1.0)); +} +//------------------------------------------------------------------------------------------------------------------------------ +FfxUInt16 ffxBitShiftRightHalf(FfxUInt16 a, FfxUInt16 b) +{ + return FfxUInt16(FfxInt16(a) >> FfxInt16(b)); +} +FfxUInt16x2 ffxBitShiftRightHalf(FfxUInt16x2 a, FfxUInt16x2 b) +{ + return FfxUInt16x2(FfxInt16x2(a) >> FfxInt16x2(b)); +} +FfxUInt16x3 ffxBitShiftRightHalf(FfxUInt16x3 a, FfxUInt16x3 b) +{ + return FfxUInt16x3(FfxInt16x3(a) >> FfxInt16x3(b)); +} +FfxUInt16x4 ffxBitShiftRightHalf(FfxUInt16x4 a, FfxUInt16x4 b) +{ + return FfxUInt16x4(FfxInt16x4(a) >> FfxInt16x4(b)); +} +#endif // FFX_HALF + +#if defined(FFX_WAVE) +// Where 'x' must be a compile time literal. +FfxFloat32 ffxWaveXorF1(FfxFloat32 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxFloat32x2 ffxWaveXorF2(FfxFloat32x2 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxFloat32x3 ffxWaveXorF3(FfxFloat32x3 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxFloat32x4 ffxWaveXorF4(FfxFloat32x4 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxUInt32 ffxWaveXorU1(FfxUInt32 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxUInt32x2 ffxWaveXorU2(FfxUInt32x2 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxUInt32x3 ffxWaveXorU3(FfxUInt32x3 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxUInt32x4 ffxWaveXorU4(FfxUInt32x4 v, FfxUInt32 x) +{ + return subgroupShuffleXor(v, x); +} +FfxBoolean ffxWaveIsFirstLane() +{ + return subgroupElect(); +} +FfxUInt32 ffxWaveLaneIndex() +{ + return gl_SubgroupInvocationID; +} +FfxBoolean ffxWaveReadAtLaneIndexB1(FfxBoolean v, FfxUInt32 x ) +{ + return subgroupShuffle(v, x); +} +FfxUInt32 ffxWavePrefixCountBits(FfxBoolean v) +{ + return subgroupBallotExclusiveBitCount(subgroupBallot(v)); +} +FfxUInt32 ffxWaveActiveCountBits(FfxBoolean v) +{ + return subgroupBallotBitCount(subgroupBallot(v)); +} +FfxUInt32 ffxWaveReadLaneFirstU1(FfxUInt32 v) +{ + return subgroupBroadcastFirst(v); +} +FfxUInt32x2 ffxWaveReadLaneFirstU2(FfxUInt32x2 v) +{ + return subgroupBroadcastFirst(v); +} +FfxBoolean ffxWaveReadLaneFirstB1(FfxBoolean v) +{ + return subgroupBroadcastFirst(v); +} +FfxUInt32 ffxWaveOr(FfxUInt32 a) +{ + return subgroupOr(a); +} +FfxUInt32 ffxWaveMin(FfxUInt32 a) +{ + return subgroupMin(a); +} +FfxFloat32 ffxWaveMin(FfxFloat32 a) +{ + return subgroupMin(a); +} +FfxUInt32 ffxWaveMax(FfxUInt32 a) +{ + return subgroupMax(a); +} +FfxFloat32 ffxWaveMax(FfxFloat32 a) +{ + return subgroupMax(a); +} +FfxUInt32 ffxWaveSum(FfxUInt32 a) +{ + return subgroupAdd(a); +} +FfxFloat32 ffxWaveSum(FfxFloat32 a) +{ + return subgroupAdd(a); +} +FfxUInt32 ffxWaveLaneCount() +{ + return gl_SubgroupSize; +} +#if defined(FFX_WAVE_ALL_TRUE) +FfxBoolean ffxWaveAllTrue(FfxBoolean v) +{ + return subgroupAll(v); +} +#endif +FfxFloat32 ffxQuadReadX(FfxFloat32 v) +{ + return subgroupQuadSwapHorizontal(v); +} +FfxFloat32x2 ffxQuadReadX(FfxFloat32x2 v) +{ + return subgroupQuadSwapHorizontal(v); +} +FfxFloat32 ffxQuadReadY(FfxFloat32 v) +{ + return subgroupQuadSwapVertical(v); +} +FfxFloat32x2 ffxQuadReadY(FfxFloat32x2 v) +{ + return subgroupQuadSwapVertical(v); +} + +//------------------------------------------------------------------------------------------------------------------------------ +#if FFX_HALF +FfxFloat16x2 ffxWaveXorFloat16x2(FfxFloat16x2 v, FfxUInt32 x) +{ + return FFX_UINT32_TO_FLOAT16X2(subgroupShuffleXor(FFX_FLOAT16X2_TO_UINT32(v), x)); +} +FfxFloat16x4 ffxWaveXorFloat16x4(FfxFloat16x4 v, FfxUInt32 x) +{ + return FFX_UINT32X2_TO_FLOAT16X4(subgroupShuffleXor(FFX_FLOAT16X4_TO_UINT32X2(v), x)); +} +FfxUInt16x2 ffxWaveXorUint16x2(FfxUInt16x2 v, FfxUInt32 x) +{ + return FFX_UINT32_TO_UINT16X2(subgroupShuffleXor(FFX_UINT16X2_TO_UINT32(v), x)); +} +FfxUInt16x4 ffxWaveXorUint16x4(FfxUInt16x4 v, FfxUInt32 x) +{ + return FFX_UINT32X2_TO_UINT16X4(subgroupShuffleXor(FFX_UINT16X4_TO_UINT32X2(v), x)); +} +#endif // FFX_HALF +#endif // #if defined(FFX_WAVE) diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common.h new file mode 100644 index 000000000..da03b07aa --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common.h @@ -0,0 +1,2736 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +/// A define for a true value in a boolean expression. +/// +/// @ingroup GPUCore +#define FFX_TRUE (true) + +/// A define for a false value in a boolean expression. +/// +/// @ingroup GPUCore +#define FFX_FALSE (false) + +/// A define value for positive infinity. +/// +/// @ingroup GPUCore +#define FFX_POSITIVE_INFINITY_FLOAT ffxAsFloat(0x7f800000u) + +/// A define value for negative infinity. +/// +/// @ingroup GPUCore +#define FFX_NEGATIVE_INFINITY_FLOAT ffxAsFloat(0xff800000u) + +/// A define value for PI. +/// +/// @ingroup GPUCore +#define FFX_PI (3.14159) + +FFX_STATIC const FfxFloat32 FFX_FP16_MIN = 6.10e-05f; +FFX_STATIC const FfxFloat32 FFX_FP16_MAX = 65504.0f; +FFX_STATIC const FfxFloat32 FFX_TONEMAP_EPSILON = 1.0f / FFX_FP16_MAX; + +#define FFX_HAS_FLAG(v, f) ((v & f) == f) + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32 ffxMin(FfxFloat32 x, FfxFloat32 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxMin(FfxFloat32x2 x, FfxFloat32x2 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxMin(FfxFloat32x3 x, FfxFloat32x3 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxMin(FfxFloat32x4 x, FfxFloat32x4 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32 ffxMin(FfxInt32 x, FfxInt32 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32x2 ffxMin(FfxInt32x2 x, FfxInt32x2 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32x3 ffxMin(FfxInt32x3 x, FfxInt32x3 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32x4 ffxMin(FfxInt32x4 x, FfxInt32x4 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32 ffxMin(FfxUInt32 x, FfxUInt32 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxMin(FfxUInt32x2 x, FfxUInt32x2 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32x3 ffxMin(FfxUInt32x3 x, FfxUInt32x3 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32x4 ffxMin(FfxUInt32x4 x, FfxUInt32x4 y) +{ + return min(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32 ffxMax(FfxFloat32 x, FfxFloat32 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxMax(FfxFloat32x2 x, FfxFloat32x2 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxMax(FfxFloat32x3 x, FfxFloat32x3 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxMax(FfxFloat32x4 x, FfxFloat32x4 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32 ffxMax(FfxInt32 x, FfxInt32 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32x2 ffxMax(FfxInt32x2 x, FfxInt32x2 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32x3 ffxMax(FfxInt32x3 x, FfxInt32x3 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt32x4 ffxMax(FfxInt32x4 x, FfxInt32x4 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32 ffxMax(FfxUInt32 x, FfxUInt32 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxMax(FfxUInt32x2 x, FfxUInt32x2 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32x3 ffxMax(FfxUInt32x3 x, FfxUInt32x3 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt32x4 ffxMax(FfxUInt32x4 x, FfxUInt32x4 y) +{ + return max(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat32 ffxPow(FfxFloat32 x, FfxFloat32 y) +{ + return pow(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxPow(FfxFloat32x2 x, FfxFloat32x2 y) +{ + return pow(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxPow(FfxFloat32x3 x, FfxFloat32x3 y) +{ + return pow(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxPow(FfxFloat32x4 x, FfxFloat32x4 y) +{ + return pow(x, y); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat32 ffxSqrt(FfxFloat32 x) +{ + return sqrt(x); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxSqrt(FfxFloat32x2 x) +{ + return sqrt(x); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxSqrt(FfxFloat32x3 x) +{ + return sqrt(x); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxSqrt(FfxFloat32x4 x) +{ + return sqrt(x); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat32 ffxCopySignBit(FfxFloat32 d, FfxFloat32 s) +{ + return ffxAsFloat(ffxAsUInt32(d) | (ffxAsUInt32(s) & FfxUInt32(0x80000000u))); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxCopySignBit(FfxFloat32x2 d, FfxFloat32x2 s) +{ + return ffxAsFloat(ffxAsUInt32(d) | (ffxAsUInt32(s) & ffxBroadcast2(0x80000000u))); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxCopySignBit(FfxFloat32x3 d, FfxFloat32x3 s) +{ + return ffxAsFloat(ffxAsUInt32(d) | (ffxAsUInt32(s) & ffxBroadcast3(0x80000000u))); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxCopySignBit(FfxFloat32x4 d, FfxFloat32x4 s) +{ + return ffxAsFloat(ffxAsUInt32(d) | (ffxAsUInt32(s) & ffxBroadcast4(0x80000000u))); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat32 ffxIsSigned(FfxFloat32 m) +{ + return ffxSaturate(m * FfxFloat32(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxIsSigned(FfxFloat32x2 m) +{ + return ffxSaturate(m * ffxBroadcast2(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxIsSigned(FfxFloat32x3 m) +{ + return ffxSaturate(m * ffxBroadcast3(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against for have the sign set. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or positive. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxIsSigned(FfxFloat32x4 m) +{ + return ffxSaturate(m * ffxBroadcast4(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat32 ffxIsGreaterThanZero(FfxFloat32 m) +{ + return ffxSaturate(m * FfxFloat32(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxIsGreaterThanZero(FfxFloat32x2 m) +{ + return ffxSaturate(m * ffxBroadcast2(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxIsGreaterThanZero(FfxFloat32x3 m) +{ + return ffxSaturate(m * ffxBroadcast3(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxIsGreaterThanZero(FfxFloat32x4 m) +{ + return ffxSaturate(m * ffxBroadcast4(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// Convert a 32bit floating point value to sortable integer. +/// +/// - If sign bit=0, flip the sign bit (positives). +/// - If sign bit=1, flip all bits (negatives). +/// +/// The function has the side effects that: +/// - Larger integers are more positive values. +/// - Float zero is mapped to center of integers (so clear to integer zero is a nice default for atomic max usage). +/// +/// @param [in] value The floating point value to make sortable. +/// +/// @returns +/// The sortable integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxFloatToSortableInteger(FfxUInt32 value) +{ + return value ^ ((ffxAShrSU1(value, FfxUInt32(31))) | FfxUInt32(0x80000000)); +} + +/// Convert a sortable integer to a 32bit floating point value. +/// +/// The function has the side effects that: +/// - If sign bit=1, flip the sign bit (positives). +/// - If sign bit=0, flip all bits (negatives). +/// +/// @param [in] value The floating point value to make sortable. +/// +/// @returns +/// The sortable integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxSortableIntegerToFloat(FfxUInt32 value) +{ + return value ^ ((~ffxAShrSU1(value, FfxUInt32(31))) | FfxUInt32(0x80000000)); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateSqrt(FfxFloat32 value) +{ + return ffxAsFloat((ffxAsUInt32(value) >> FfxUInt32(1)) + FfxUInt32(0x1fbc4639)); +} + +/// Calculate a low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateReciprocal(FfxFloat32 value) +{ + return ffxAsFloat(FfxUInt32(0x7ef07ebb) - ffxAsUInt32(value)); +} + +/// Calculate a medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateReciprocalMedium(FfxFloat32 value) +{ + FfxFloat32 b = ffxAsFloat(FfxUInt32(0x7ef19fff) - ffxAsUInt32(value)); + return b * (-b * value + FfxFloat32(2.0)); +} + +/// Calculate a low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal square root for. +/// +/// @returns +/// An approximation of the reciprocal square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateReciprocalSquareRoot(FfxFloat32 value) +{ + return ffxAsFloat(FfxUInt32(0x5f347d74) - (ffxAsUInt32(value) >> FfxUInt32(1))); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateSqrt(FfxFloat32x2 value) +{ + return ffxAsFloat((ffxAsUInt32(value) >> ffxBroadcast2(1u)) + ffxBroadcast2(0x1fbc4639u)); +} + +/// Calculate a low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateReciprocal(FfxFloat32x2 value) +{ + return ffxAsFloat(ffxBroadcast2(0x7ef07ebbu) - ffxAsUInt32(value)); +} + +/// Calculate a medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateReciprocalMedium(FfxFloat32x2 value) +{ + FfxFloat32x2 b = ffxAsFloat(ffxBroadcast2(0x7ef19fffu) - ffxAsUInt32(value)); + return b * (-b * value + ffxBroadcast2(2.0f)); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateReciprocalSquareRoot(FfxFloat32x2 value) +{ + return ffxAsFloat(ffxBroadcast2(0x5f347d74u) - (ffxAsUInt32(value) >> ffxBroadcast2(1u))); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateSqrt(FfxFloat32x3 value) +{ + return ffxAsFloat((ffxAsUInt32(value) >> ffxBroadcast3(1u)) + ffxBroadcast3(0x1fbc4639u)); +} + +/// Calculate a low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateReciprocal(FfxFloat32x3 value) +{ + return ffxAsFloat(ffxBroadcast3(0x7ef07ebbu) - ffxAsUInt32(value)); +} + +/// Calculate a medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateReciprocalMedium(FfxFloat32x3 value) +{ + FfxFloat32x3 b = ffxAsFloat(ffxBroadcast3(0x7ef19fffu) - ffxAsUInt32(value)); + return b * (-b * value + ffxBroadcast3(2.0f)); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateReciprocalSquareRoot(FfxFloat32x3 value) +{ + return ffxAsFloat(ffxBroadcast3(0x5f347d74u) - (ffxAsUInt32(value) >> ffxBroadcast3(1u))); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateSqrt(FfxFloat32x4 value) +{ + return ffxAsFloat((ffxAsUInt32(value) >> ffxBroadcast4(1u)) + ffxBroadcast4(0x1fbc4639u)); +} + +/// Calculate a low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateReciprocal(FfxFloat32x4 value) +{ + return ffxAsFloat(ffxBroadcast4(0x7ef07ebbu) - ffxAsUInt32(value)); +} + +/// Calculate a medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateReciprocalMedium(FfxFloat32x4 value) +{ + FfxFloat32x4 b = ffxAsFloat(ffxBroadcast4(0x7ef19fffu) - ffxAsUInt32(value)); + return b * (-b * value + ffxBroadcast4(2.0f)); +} + +/// Calculate a low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] value The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateReciprocalSquareRoot(FfxFloat32x4 value) +{ + return ffxAsFloat(ffxBroadcast4(0x5f347d74u) - (ffxAsUInt32(value) >> ffxBroadcast4(1u))); +} + +/// Calculate dot product of 'a' and 'b'. +/// +/// @param [in] a First vector input. +/// @param [in] b Second vector input. +/// +/// @returns +/// The value of a dot b. +/// +/// @ingroup GPUCore +FfxFloat32 ffxDot2(FfxFloat32x2 a, FfxFloat32x2 b) +{ + return dot(a, b); +} + +/// Calculate dot product of 'a' and 'b'. +/// +/// @param [in] a First vector input. +/// @param [in] b Second vector input. +/// +/// @returns +/// The value of a dot b. +/// +/// @ingroup GPUCore +FfxFloat32 ffxDot3(FfxFloat32x3 a, FfxFloat32x3 b) +{ + return dot(a, b); +} + +/// Calculate dot product of 'a' and 'b'. +/// +/// @param [in] a First vector input. +/// @param [in] b Second vector input. +/// +/// @returns +/// The value of a dot b. +/// +/// @ingroup GPUCore +FfxFloat32 ffxDot4(FfxFloat32x4 a, FfxFloat32x4 b) +{ + return dot(a, b); +} + + +/// Compute an approximate conversion from PQ to Gamma2 space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and Gamma2. +/// +/// @returns +/// The value a converted into Gamma2. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximatePQToGamma2Medium(FfxFloat32 a) +{ + return a * a * a * a; +} + +/// Compute an approximate conversion from PQ to linear space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and linear. +/// +/// @returns +/// The value a converted into linear. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximatePQToLinear(FfxFloat32 a) +{ + return a * a * a * a * a * a * a * a; +} + +/// Compute an approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateGamma2ToPQ(FfxFloat32 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> FfxUInt32(2)) + FfxUInt32(0x2F9A4E46)); +} + +/// Compute a more accurate approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateGamma2ToPQMedium(FfxFloat32 a) +{ + FfxFloat32 b = ffxAsFloat((ffxAsUInt32(a) >> FfxUInt32(2)) + FfxUInt32(0x2F9A4E46)); + FfxFloat32 b4 = b * b * b * b; + return b - b * (b4 - a) / (FfxFloat32(4.0) * b4); +} + +/// Compute a high accuracy approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateGamma2ToPQHigh(FfxFloat32 a) +{ + return ffxSqrt(ffxSqrt(a)); +} + +/// Compute an approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateLinearToPQ(FfxFloat32 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> FfxUInt32(3)) + FfxUInt32(0x378D8723)); +} + +/// Compute a more accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateLinearToPQMedium(FfxFloat32 a) +{ + FfxFloat32 b = ffxAsFloat((ffxAsUInt32(a) >> FfxUInt32(3)) + FfxUInt32(0x378D8723)); + FfxFloat32 b8 = b * b * b * b * b * b * b * b; + return b - b * (b8 - a) / (FfxFloat32(8.0) * b8); +} + +/// Compute a very accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32 ffxApproximateLinearToPQHigh(FfxFloat32 a) +{ + return ffxSqrt(ffxSqrt(ffxSqrt(a))); +} + +/// Compute an approximate conversion from PQ to Gamma2 space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and Gamma2. +/// +/// @returns +/// The value a converted into Gamma2. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximatePQToGamma2Medium(FfxFloat32x2 a) +{ + return a * a * a * a; +} + +/// Compute an approximate conversion from PQ to linear space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and linear. +/// +/// @returns +/// The value a converted into linear. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximatePQToLinear(FfxFloat32x2 a) +{ + return a * a * a * a * a * a * a * a; +} + +/// Compute an approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateGamma2ToPQ(FfxFloat32x2 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast2(2u)) + ffxBroadcast2(0x2F9A4E46u)); +} + +/// Compute a more accurate approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateGamma2ToPQMedium(FfxFloat32x2 a) +{ + FfxFloat32x2 b = ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast2(2u)) + ffxBroadcast2(0x2F9A4E46u)); + FfxFloat32x2 b4 = b * b * b * b; + return b - b * (b4 - a) / (FfxFloat32(4.0) * b4); +} + +/// Compute a high accuracy approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateGamma2ToPQHigh(FfxFloat32x2 a) +{ + return ffxSqrt(ffxSqrt(a)); +} + +/// Compute an approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateLinearToPQ(FfxFloat32x2 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast2(3u)) + ffxBroadcast2(0x378D8723u)); +} + +/// Compute a more accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateLinearToPQMedium(FfxFloat32x2 a) +{ + FfxFloat32x2 b = ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast2(3u)) + ffxBroadcast2(0x378D8723u)); + FfxFloat32x2 b8 = b * b * b * b * b * b * b * b; + return b - b * (b8 - a) / (FfxFloat32(8.0) * b8); +} + +/// Compute a very accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxApproximateLinearToPQHigh(FfxFloat32x2 a) +{ + return ffxSqrt(ffxSqrt(ffxSqrt(a))); +} + +/// Compute an approximate conversion from PQ to Gamma2 space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and Gamma2. +/// +/// @returns +/// The value a converted into Gamma2. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximatePQToGamma2Medium(FfxFloat32x3 a) +{ + return a * a * a * a; +} + +/// Compute an approximate conversion from PQ to linear space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and linear. +/// +/// @returns +/// The value a converted into linear. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximatePQToLinear(FfxFloat32x3 a) +{ + return a * a * a * a * a * a * a * a; +} + +/// Compute an approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateGamma2ToPQ(FfxFloat32x3 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast3(2u)) + ffxBroadcast3(0x2F9A4E46u)); +} + +/// Compute a more accurate approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateGamma2ToPQMedium(FfxFloat32x3 a) +{ + FfxFloat32x3 b = ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast3(2u)) + ffxBroadcast3(0x2F9A4E46u)); + FfxFloat32x3 b4 = b * b * b * b; + return b - b * (b4 - a) / (FfxFloat32(4.0) * b4); +} + +/// Compute a high accuracy approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateGamma2ToPQHigh(FfxFloat32x3 a) +{ + return ffxSqrt(ffxSqrt(a)); +} + +/// Compute an approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateLinearToPQ(FfxFloat32x3 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast3(3u)) + ffxBroadcast3(0x378D8723u)); +} + +/// Compute a more accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateLinearToPQMedium(FfxFloat32x3 a) +{ + FfxFloat32x3 b = ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast3(3u)) + ffxBroadcast3(0x378D8723u)); + FfxFloat32x3 b8 = b * b * b * b * b * b * b * b; + return b - b * (b8 - a) / (FfxFloat32(8.0) * b8); +} + +/// Compute a very accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxApproximateLinearToPQHigh(FfxFloat32x3 a) +{ + return ffxSqrt(ffxSqrt(ffxSqrt(a))); +} + +/// Compute an approximate conversion from PQ to Gamma2 space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and Gamma2. +/// +/// @returns +/// The value a converted into Gamma2. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximatePQToGamma2Medium(FfxFloat32x4 a) +{ + return a * a * a * a; +} + +/// Compute an approximate conversion from PQ to linear space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between PQ and linear. +/// +/// @returns +/// The value a converted into linear. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximatePQToLinear(FfxFloat32x4 a) +{ + return a * a * a * a * a * a * a * a; +} + +/// Compute an approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateGamma2ToPQ(FfxFloat32x4 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast4(2u)) + ffxBroadcast4(0x2F9A4E46u)); +} + +/// Compute a more accurate approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateGamma2ToPQMedium(FfxFloat32x4 a) +{ + FfxFloat32x4 b = ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast4(2u)) + ffxBroadcast4(0x2F9A4E46u)); + FfxFloat32x4 b4 = b * b * b * b * b * b * b * b; + return b - b * (b4 - a) / (FfxFloat32(4.0) * b4); +} + +/// Compute a high accuracy approximate conversion from gamma2 to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between gamma2 and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateGamma2ToPQHigh(FfxFloat32x4 a) +{ + return ffxSqrt(ffxSqrt(a)); +} + +/// Compute an approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateLinearToPQ(FfxFloat32x4 a) +{ + return ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast4(3u)) + ffxBroadcast4(0x378D8723u)); +} + +/// Compute a more accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateLinearToPQMedium(FfxFloat32x4 a) +{ + FfxFloat32x4 b = ffxAsFloat((ffxAsUInt32(a) >> ffxBroadcast4(3u)) + ffxBroadcast4(0x378D8723u)); + FfxFloat32x4 b8 = b * b * b * b * b * b * b * b; + return b - b * (b8 - a) / (FfxFloat32(8.0) * b8); +} + +/// Compute a very accurate approximate conversion from linear to PQ space. +/// +/// PQ is very close to x^(1/8). The functions below Use the fast FfxFloat32 approximation method to do +/// PQ conversions to and from Gamma2 (4th power and fast 4th root), and PQ to and from Linear +/// (8th power and fast 8th root). The maximum error is approximately 0.2%. +/// +/// @param a The value to convert between linear and PQ. +/// +/// @returns +/// The value a converted into PQ. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxApproximateLinearToPQHigh(FfxFloat32x4 a) +{ + return ffxSqrt(ffxSqrt(ffxSqrt(a))); +} + +// An approximation of sine. +// +// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +// is {-1/4 to 1/4} representing {-1 to 1}. +// +// @param [in] value The value to calculate approximate sine for. +// +// @returns +// The approximate sine of value. +FfxFloat32 ffxParabolicSin(FfxFloat32 value) +{ + return value * abs(value) - value; +} + +// An approximation of sine. +// +// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +// is {-1/4 to 1/4} representing {-1 to 1}. +// +// @param [in] value The value to calculate approximate sine for. +// +// @returns +// The approximate sine of value. +FfxFloat32x2 ffxParabolicSin(FfxFloat32x2 x) +{ + return x * abs(x) - x; +} + +// An approximation of cosine. +// +// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +// is {-1/4 to 1/4} representing {-1 to 1}. +// +// @param [in] value The value to calculate approximate cosine for. +// +// @returns +// The approximate cosine of value. +FfxFloat32 ffxParabolicCos(FfxFloat32 x) +{ + x = ffxFract(x * FfxFloat32(0.5) + FfxFloat32(0.75)); + x = x * FfxFloat32(2.0) - FfxFloat32(1.0); + return ffxParabolicSin(x); +} + +// An approximation of cosine. +// +// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +// is {-1/4 to 1/4} representing {-1 to 1}. +// +// @param [in] value The value to calculate approximate cosine for. +// +// @returns +// The approximate cosine of value. +FfxFloat32x2 ffxParabolicCos(FfxFloat32x2 x) +{ + x = ffxFract(x * ffxBroadcast2(0.5f) + ffxBroadcast2(0.75f)); + x = x * ffxBroadcast2(2.0f) - ffxBroadcast2(1.0f); + return ffxParabolicSin(x); +} + +// An approximation of both sine and cosine. +// +// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +// is {-1/4 to 1/4} representing {-1 to 1}. +// +// @param [in] value The value to calculate approximate cosine for. +// +// @returns +// A FfxFloat32x2 containing approximations of both sine and cosine of value. +FfxFloat32x2 ffxParabolicSinCos(FfxFloat32 x) +{ + FfxFloat32 y = ffxFract(x * FfxFloat32(0.5) + FfxFloat32(0.75)); + y = y * FfxFloat32(2.0) - FfxFloat32(1.0); + return ffxParabolicSin(FfxFloat32x2(x, y)); +} + +/// Conditional free logic AND operation using values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt32 ffxZeroOneAnd(FfxUInt32 x, FfxUInt32 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxZeroOneAnd(FfxUInt32x2 x, FfxUInt32x2 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt32x3 ffxZeroOneAnd(FfxUInt32x3 x, FfxUInt32x3 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt32x4 ffxZeroOneAnd(FfxUInt32x4 x, FfxUInt32x4 y) +{ + return min(x, y); +} + +/// Conditional free logic NOT operation using two values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt32 ffxZeroOneAnd(FfxUInt32 x) +{ + return x ^ FfxUInt32(1); +} + +/// Conditional free logic NOT operation using two values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxZeroOneAnd(FfxUInt32x2 x) +{ + return x ^ ffxBroadcast2(1u); +} + +/// Conditional free logic NOT operation using two values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt32x3 ffxZeroOneAnd(FfxUInt32x3 x) +{ + return x ^ ffxBroadcast3(1u); +} + +/// Conditional free logic NOT operation using two values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt32x4 ffxZeroOneAnd(FfxUInt32x4 x) +{ + return x ^ ffxBroadcast4(1u); +} + +/// Conditional free logic OR operation using two values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt32 ffxZeroOneOr(FfxUInt32 x, FfxUInt32 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxZeroOneOr(FfxUInt32x2 x, FfxUInt32x2 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt32x3 ffxZeroOneOr(FfxUInt32x3 x, FfxUInt32x3 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt32x4 ffxZeroOneOr(FfxUInt32x4 x, FfxUInt32x4 y) +{ + return max(x, y); +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxUInt32 ffxZeroOneAndToU1(FfxFloat32 x) +{ + return FfxUInt32(FfxFloat32(1.0) - x); +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxZeroOneAndToU2(FfxFloat32x2 x) +{ + return FfxUInt32x2(ffxBroadcast2(1.0) - x); +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxUInt32x3 ffxZeroOneAndToU3(FfxFloat32x3 x) +{ + return FfxUInt32x3(ffxBroadcast3(1.0) - x); +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxUInt32x4 ffxZeroOneAndToU4(FfxFloat32x4 x) +{ + return FfxUInt32x4(ffxBroadcast4(1.0) - x); +} + +/// Conditional free logic AND operation using two values followed by a NOT operation +/// using the resulting value and a third value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32 ffxZeroOneAndOr(FfxFloat32 x, FfxFloat32 y, FfxFloat32 z) +{ + return ffxSaturate(x * y + z); +} + +/// Conditional free logic AND operation using two values followed by a NOT operation +/// using the resulting value and a third value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxZeroOneAndOr(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32x2 z) +{ + return ffxSaturate(x * y + z); +} + +/// Conditional free logic AND operation using two values followed by a NOT operation +/// using the resulting value and a third value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxZeroOneAndOr(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32x3 z) +{ + return ffxSaturate(x * y + z); +} + +/// Conditional free logic AND operation using two values followed by a NOT operation +/// using the resulting value and a third value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxZeroOneAndOr(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32x4 z) +{ + return ffxSaturate(x * y + z); +} + +/// Given a value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat32 ffxZeroOneIsGreaterThanZero(FfxFloat32 x) +{ + return ffxSaturate(x * FfxFloat32(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// Given a value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxZeroOneIsGreaterThanZero(FfxFloat32x2 x) +{ + return ffxSaturate(x * ffxBroadcast2(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// Given a value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxZeroOneIsGreaterThanZero(FfxFloat32x3 x) +{ + return ffxSaturate(x * ffxBroadcast3(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// Given a value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxZeroOneIsGreaterThanZero(FfxFloat32x4 x) +{ + return ffxSaturate(x * ffxBroadcast4(FFX_POSITIVE_INFINITY_FLOAT)); +} + +/// Conditional free logic signed NOT operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32 ffxZeroOneAnd(FfxFloat32 x) +{ + return FfxFloat32(1.0) - x; +} + +/// Conditional free logic signed NOT operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxZeroOneAnd(FfxFloat32x2 x) +{ + return ffxBroadcast2(1.0) - x; +} + +/// Conditional free logic signed NOT operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxZeroOneAnd(FfxFloat32x3 x) +{ + return ffxBroadcast3(1.0) - x; +} + +/// Conditional free logic signed NOT operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxZeroOneAnd(FfxFloat32x4 x) +{ + return ffxBroadcast4(1.0) - x; +} + +/// Conditional free logic OR operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat32 ffxZeroOneOr(FfxFloat32 x, FfxFloat32 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxZeroOneOr(FfxFloat32x2 x, FfxFloat32x2 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxZeroOneOr(FfxFloat32x3 x, FfxFloat32x3 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxZeroOneOr(FfxFloat32x4 x, FfxFloat32x4 y) +{ + return max(x, y); +} + +/// Choose between two FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat32 ffxZeroOneSelect(FfxFloat32 x, FfxFloat32 y, FfxFloat32 z) +{ + FfxFloat32 r = (-x) * z + z; + return x * y + r; +} + +/// Choose between two FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxZeroOneSelect(FfxFloat32x2 x, FfxFloat32x2 y, FfxFloat32x2 z) +{ + FfxFloat32x2 r = (-x) * z + z; + return x * y + r; +} + +/// Choose between two FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxZeroOneSelect(FfxFloat32x3 x, FfxFloat32x3 y, FfxFloat32x3 z) +{ + FfxFloat32x3 r = (-x) * z + z; + return x * y + r; +} + +/// Choose between two FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxZeroOneSelect(FfxFloat32x4 x, FfxFloat32x4 y, FfxFloat32x4 z) +{ + FfxFloat32x4 r = (-x) * z + z; + return x * y + r; +} + +/// Given a value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat32 ffxZeroOneIsSigned(FfxFloat32 x) +{ + return ffxSaturate(x * FfxFloat32(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// Given a value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxZeroOneIsSigned(FfxFloat32x2 x) +{ + return ffxSaturate(x * ffxBroadcast2(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// Given a value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxZeroOneIsSigned(FfxFloat32x3 x) +{ + return ffxSaturate(x * ffxBroadcast3(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// Given a value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat32x4 ffxZeroOneIsSigned(FfxFloat32x4 x) +{ + return ffxSaturate(x * ffxBroadcast4(FFX_NEGATIVE_INFINITY_FLOAT)); +} + +/// Compute a Rec.709 color space. +/// +/// Rec.709 is used for some HDTVs. +/// +/// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +/// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +/// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +/// +/// @param [in] color The color to convert to Rec. 709. +/// +/// @returns +/// The color in linear space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxRec709FromLinear(FfxFloat32 color) +{ + FfxFloat32x3 j = FfxFloat32x3(0.018 * 4.5, 4.5, 0.45); + FfxFloat32x2 k = FfxFloat32x2(1.099, -0.099); + return clamp(j.x, color * j.y, pow(color, j.z) * k.x + k.y); +} + +/// Compute a Rec.709 color space. +/// +/// Rec.709 is used for some HDTVs. +/// +/// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +/// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +/// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +/// +/// @param [in] color The color to convert to Rec. 709. +/// +/// @returns +/// The color in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxRec709FromLinear(FfxFloat32x2 color) +{ + FfxFloat32x3 j = FfxFloat32x3(0.018 * 4.5, 4.5, 0.45); + FfxFloat32x2 k = FfxFloat32x2(1.099, -0.099); + return clamp(j.xx, color * j.yy, pow(color, j.zz) * k.xx + k.yy); +} + +/// Compute a Rec.709 color space. +/// +/// Rec.709 is used for some HDTVs. +/// +/// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +/// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +/// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +/// +/// @param [in] color The color to convert to Rec. 709. +/// +/// @returns +/// The color in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxRec709FromLinear(FfxFloat32x3 color) +{ + FfxFloat32x3 j = FfxFloat32x3(0.018 * 4.5, 4.5, 0.45); + FfxFloat32x2 k = FfxFloat32x2(1.099, -0.099); + return clamp(j.xxx, color * j.yyy, pow(color, j.zzz) * k.xxx + k.yyy); +} + +/// Compute a linear value from a REC.709 value. +/// +/// @param [in] color The value to convert to linear from REC.709. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxLinearFromRec709(FfxFloat32 color) +{ + FfxFloat32x3 j = FfxFloat32x3(0.081 / 4.5, 1.0 / 4.5, 1.0 / 0.45); + FfxFloat32x2 k = FfxFloat32x2(1.0 / 1.099, 0.099 / 1.099); + return ffxZeroOneSelect(ffxZeroOneIsSigned(color - j.x), color * j.y, pow(color * k.x + k.y, j.z)); +} + +/// Compute a linear value from a REC.709 value. +/// +/// @param [in] color The value to convert to linear from REC.709. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxLinearFromRec709(FfxFloat32x2 color) +{ + FfxFloat32x3 j = FfxFloat32x3(0.081 / 4.5, 1.0 / 4.5, 1.0 / 0.45); + FfxFloat32x2 k = FfxFloat32x2(1.0 / 1.099, 0.099 / 1.099); + return ffxZeroOneSelect(ffxZeroOneIsSigned(color - j.xx), color * j.yy, pow(color * k.xx + k.yy, j.zz)); +} + +/// Compute a linear value from a REC.709 value. +/// +/// @param [in] color The value to convert to linear from REC.709. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxLinearFromRec709(FfxFloat32x3 color) +{ + FfxFloat32x3 j = FfxFloat32x3(0.081 / 4.5, 1.0 / 4.5, 1.0 / 0.45); + FfxFloat32x2 k = FfxFloat32x2(1.0 / 1.099, 0.099 / 1.099); + return ffxZeroOneSelect(ffxZeroOneIsSigned(color - j.xxx), color * j.yyy, pow(color * k.xxx + k.yyy, j.zzz)); +} + +/// Compute a gamma value from a linear value. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// Note: 'rcpX' is '1/x', where the 'x' is what would be used in ffxLinearFromGamma. +/// +/// @param [in] value The value to convert to gamma space from linear. +/// @param [in] power The reciprocal of power value used for the gamma curve. +/// +/// @returns +/// A value in gamma space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxGammaFromLinear(FfxFloat32 value, FfxFloat32 power) +{ + return pow(value, FfxFloat32(power)); +} + +/// Compute a gamma value from a linear value. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// Note: 'rcpX' is '1/x', where the 'x' is what would be used in ffxLinearFromGamma. +/// +/// @param [in] value The value to convert to gamma space from linear. +/// @param [in] power The reciprocal of power value used for the gamma curve. +/// +/// @returns +/// A value in gamma space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxGammaFromLinear(FfxFloat32x2 value, FfxFloat32 power) +{ + return pow(value, ffxBroadcast2(power)); +} + +/// Compute a gamma value from a linear value. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// Note: 'rcpX' is '1/x', where the 'x' is what would be used in ffxLinearFromGamma. +/// +/// @param [in] value The value to convert to gamma space from linear. +/// @param [in] power The reciprocal of power value used for the gamma curve. +/// +/// @returns +/// A value in gamma space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxGammaFromLinear(FfxFloat32x3 value, FfxFloat32 power) +{ + return pow(value, ffxBroadcast3(power)); +} + +/// Compute a linear value from a value in a gamma space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] color The value to convert to linear in gamma space. +/// @param [in] power The power value used for the gamma curve. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxLinearFromGamma(FfxFloat32 color, FfxFloat32 power) +{ + return pow(color, FfxFloat32(power)); +} + +/// Compute a linear value from a value in a gamma space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] color The value to convert to linear in gamma space. +/// @param [in] power The power value used for the gamma curve. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxLinearFromGamma(FfxFloat32x2 color, FfxFloat32 power) +{ + return pow(color, ffxBroadcast2(power)); +} + +/// Compute a linear value from a value in a gamma space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] color The value to convert to linear in gamma space. +/// @param [in] power The power value used for the gamma curve. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxLinearFromGamma(FfxFloat32x3 color, FfxFloat32 power) +{ + return pow(color, ffxBroadcast3(power)); +} + +/// Compute a PQ value from a linear value. +/// +/// @param [in] value The value to convert to PQ from linear. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxPQFromLinear(FfxFloat32 value) +{ + FfxFloat32 p = pow(value, FfxFloat32(0.159302)); + return pow((FfxFloat32(0.835938) + FfxFloat32(18.8516) * p) / (FfxFloat32(1.0) + FfxFloat32(18.6875) * p), FfxFloat32(78.8438)); +} + +/// Compute a PQ value from a linear value. +/// +/// @param [in] value The value to convert to PQ from linear. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxPQFromLinear(FfxFloat32x2 value) +{ + FfxFloat32x2 p = pow(value, ffxBroadcast2(0.159302)); + return pow((ffxBroadcast2(0.835938) + ffxBroadcast2(18.8516) * p) / (ffxBroadcast2(1.0) + ffxBroadcast2(18.6875) * p), ffxBroadcast2(78.8438)); +} + +/// Compute a PQ value from a linear value. +/// +/// @param [in] value The value to convert to PQ from linear. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxPQFromLinear(FfxFloat32x3 value) +{ + FfxFloat32x3 p = pow(value, ffxBroadcast3(0.159302)); + return pow((ffxBroadcast3(0.835938) + ffxBroadcast3(18.8516) * p) / (ffxBroadcast3(1.0) + ffxBroadcast3(18.6875) * p), ffxBroadcast3(78.8438)); +} + +/// Compute a linear value from a value in a PQ space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] value The value to convert to linear in PQ space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxLinearFromPQ(FfxFloat32 value) +{ + FfxFloat32 p = pow(value, FfxFloat32(0.0126833)); + return pow(ffxSaturate(p - FfxFloat32(0.835938)) / (FfxFloat32(18.8516) - FfxFloat32(18.6875) * p), FfxFloat32(6.27739)); +} + +/// Compute a linear value from a value in a PQ space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] value The value to convert to linear in PQ space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxLinearFromPQ(FfxFloat32x2 value) +{ + FfxFloat32x2 p = pow(value, ffxBroadcast2(0.0126833)); + return pow(ffxSaturate(p - ffxBroadcast2(0.835938)) / (ffxBroadcast2(18.8516) - ffxBroadcast2(18.6875) * p), ffxBroadcast2(6.27739)); +} + +/// Compute a linear value from a value in a PQ space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] value The value to convert to linear in PQ space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxLinearFromPQ(FfxFloat32x3 value) +{ + FfxFloat32x3 p = pow(value, ffxBroadcast3(0.0126833)); + return pow(ffxSaturate(p - ffxBroadcast3(0.835938)) / (ffxBroadcast3(18.8516) - ffxBroadcast3(18.6875) * p), ffxBroadcast3(6.27739)); +} + +/// Compute an SRGB value from a linear value. +/// +/// @param [in] value The value to convert to SRGB from linear. +/// +/// @returns +/// A value in SRGB space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxSrgbFromLinear(FfxFloat32 value) +{ + FfxFloat32x3 j = FfxFloat32x3(0.0031308 * 12.92, 12.92, 1.0 / 2.4); + FfxFloat32x2 k = FfxFloat32x2(1.055, -0.055); + return clamp(j.x, value * j.y, pow(value, j.z) * k.x + k.y); +} + +/// Compute an SRGB value from a linear value. +/// +/// @param [in] value The value to convert to SRGB from linear. +/// +/// @returns +/// A value in SRGB space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxSrgbFromLinear(FfxFloat32x2 value) +{ + FfxFloat32x3 j = FfxFloat32x3(0.0031308 * 12.92, 12.92, 1.0 / 2.4); + FfxFloat32x2 k = FfxFloat32x2(1.055, -0.055); + return clamp(j.xx, value * j.yy, pow(value, j.zz) * k.xx + k.yy); +} + +/// Compute an SRGB value from a linear value. +/// +/// @param [in] value The value to convert to SRGB from linear. +/// +/// @returns +/// A value in SRGB space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxSrgbFromLinear(FfxFloat32x3 value) +{ + FfxFloat32x3 j = FfxFloat32x3(0.0031308 * 12.92, 12.92, 1.0 / 2.4); + FfxFloat32x2 k = FfxFloat32x2(1.055, -0.055); + return clamp(j.xxx, value * j.yyy, pow(value, j.zzz) * k.xxx + k.yyy); +} + +/// Compute a linear value from a value in a SRGB space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] value The value to convert to linear in SRGB space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32 ffxLinearFromSrgb(FfxFloat32 value) +{ + FfxFloat32x3 j = FfxFloat32x3(0.04045, 1.0 / 12.92, 2.4); + FfxFloat32x2 k = FfxFloat32x2(1.0 / 1.055, 0.055 / 1.055); + return ffxZeroOneSelect(ffxZeroOneIsSigned(value - j.x), value * j.y, pow(value * k.x + k.y, j.z)); +} + +/// Compute a linear value from a value in a SRGB space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] value The value to convert to linear in SRGB space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x2 ffxLinearFromSrgb(FfxFloat32x2 value) +{ + FfxFloat32x3 j = FfxFloat32x3(0.04045, 1.0 / 12.92, 2.4); + FfxFloat32x2 k = FfxFloat32x2(1.0 / 1.055, 0.055 / 1.055); + return ffxZeroOneSelect(ffxZeroOneIsSigned(value - j.xx), value * j.yy, pow(value * k.xx + k.yy, j.zz)); +} + +/// Compute a linear value from a value in a SRGB space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] value The value to convert to linear in SRGB space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat32x3 ffxLinearFromSrgb(FfxFloat32x3 value) +{ + FfxFloat32x3 j = FfxFloat32x3(0.04045, 1.0 / 12.92, 2.4); + FfxFloat32x2 k = FfxFloat32x2(1.0 / 1.055, 0.055 / 1.055); + return ffxZeroOneSelect(ffxZeroOneIsSigned(value - j.xxx), value * j.yyy, pow(value * k.xxx + k.yyy, j.zzz)); +} + +/// A remapping of 64x1 to 8x8 imposing rotated 2x2 pixel quads in quad linear. +/// +/// Remap illustration: +/// +/// 543210 +/// ~~~~~~ +/// ..xxx. +/// yy...y +/// +/// @param [in] a The input 1D coordinates to remap. +/// +/// @returns +/// The remapped 2D coordinates. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxRemapForQuad(FfxUInt32 a) +{ + return FfxUInt32x2(ffxBitfieldExtract(a, 1u, 3u), ffxBitfieldInsertMask(ffxBitfieldExtract(a, 3u, 3u), a, 1u)); +} + +/// A helper function performing a remap 64x1 to 8x8 remapping which is necessary for 2D wave reductions. +/// +/// The 64-wide lane indices to 8x8 remapping is performed as follows: +/// +/// 00 01 08 09 10 11 18 19 +/// 02 03 0a 0b 12 13 1a 1b +/// 04 05 0c 0d 14 15 1c 1d +/// 06 07 0e 0f 16 17 1e 1f +/// 20 21 28 29 30 31 38 39 +/// 22 23 2a 2b 32 33 3a 3b +/// 24 25 2c 2d 34 35 3c 3d +/// 26 27 2e 2f 36 37 3e 3f +/// +/// @param [in] a The input 1D coordinate to remap. +/// +/// @returns +/// The remapped 2D coordinates. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxRemapForWaveReduction(FfxUInt32 a) +{ + return FfxUInt32x2(ffxBitfieldInsertMask(ffxBitfieldExtract(a, 2u, 3u), a, 1u), ffxBitfieldInsertMask(ffxBitfieldExtract(a, 3u, 3u), ffxBitfieldExtract(a, 1u, 2u), 2u)); +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common_half.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common_half.h new file mode 100644 index 000000000..6b071d590 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_gpu_common_half.h @@ -0,0 +1,2981 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#if FFX_HALF +#if FFX_HLSL_SM >= 62 +/// A define value for 16bit positive infinity. +/// +/// @ingroup GPUCore +#define FFX_POSITIVE_INFINITY_HALF FFX_TO_FLOAT16((uint16_t)0x7c00u) + +/// A define value for 16bit negative infinity. +/// +/// @ingroup GPUCore +#define FFX_NEGATIVE_INFINITY_HALF FFX_TO_FLOAT16((uint16_t)0xfc00u) +#else +/// A define value for 16bit positive infinity. +/// +/// @ingroup GPUCore +#define FFX_POSITIVE_INFINITY_HALF FFX_TO_FLOAT16(0x7c00u) + +/// A define value for 16bit negative infinity. +/// +/// @ingroup GPUCore +#define FFX_NEGATIVE_INFINITY_HALF FFX_TO_FLOAT16(0xfc00u) +#endif // #if FFX_HLSL_SM>=62 + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16 ffxMin(FfxFloat16 x, FfxFloat16 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxMin(FfxFloat16x2 x, FfxFloat16x2 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxMin(FfxFloat16x3 x, FfxFloat16x3 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxMin(FfxFloat16x4 x, FfxFloat16x4 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16 ffxMin(FfxInt16 x, FfxInt16 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16x2 ffxMin(FfxInt16x2 x, FfxInt16x2 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16x3 ffxMin(FfxInt16x3 x, FfxInt16x3 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16x4 ffxMin(FfxInt16x4 x, FfxInt16x4 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16 ffxMin(FfxUInt16 x, FfxUInt16 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxMin(FfxUInt16x2 x, FfxUInt16x2 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16x3 ffxMin(FfxUInt16x3 x, FfxUInt16x3 y) +{ + return min(x, y); +} + +/// Compute the min of two values. +/// +/// @param [in] x The first value to compute the min of. +/// @param [in] y The second value to compute the min of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16x4 ffxMin(FfxUInt16x4 x, FfxUInt16x4 y) +{ + return min(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16 ffxMax(FfxFloat16 x, FfxFloat16 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxMax(FfxFloat16x2 x, FfxFloat16x2 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxMax(FfxFloat16x3 x, FfxFloat16x3 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxMax(FfxFloat16x4 x, FfxFloat16x4 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16 ffxMax(FfxInt16 x, FfxInt16 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16x2 ffxMax(FfxInt16x2 x, FfxInt16x2 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16x3 ffxMax(FfxInt16x3 x, FfxInt16x3 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxInt16x4 ffxMax(FfxInt16x4 x, FfxInt16x4 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16 ffxMax(FfxUInt16 x, FfxUInt16 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxMax(FfxUInt16x2 x, FfxUInt16x2 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16x3 ffxMax(FfxUInt16x3 x, FfxUInt16x3 y) +{ + return max(x, y); +} + +/// Compute the max of two values. +/// +/// @param [in] x The first value to compute the max of. +/// @param [in] y The second value to compute the max of. +/// +/// @returns +/// The the lowest of two values. +/// +/// @ingroup GPUCore +FfxUInt16x4 ffxMax(FfxUInt16x4 x, FfxUInt16x4 y) +{ + return max(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat16 ffxPow(FfxFloat16 x, FfxFloat16 y) +{ + return pow(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPow(FfxFloat16x2 x, FfxFloat16x2 y) +{ + return pow(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxPow(FfxFloat16x3 x, FfxFloat16x3 y) +{ + return pow(x, y); +} + +/// Compute the value of the first parameter raised to the power of the second. +/// +/// @param [in] x The value to raise to the power y. +/// @param [in] y The power to which to raise x. +/// +/// @returns +/// The value of the first parameter raised to the power of the second. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxPow(FfxFloat16x4 x, FfxFloat16x4 y) +{ + return pow(x, y); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat16 ffxSqrt(FfxFloat16 x) +{ + return sqrt(x); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxSqrt(FfxFloat16x2 x) +{ + return sqrt(x); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxSqrt(FfxFloat16x3 x) +{ + return sqrt(x); +} + +/// Compute the square root of a value. +/// +/// @param [in] x The first value to compute the min of. +/// +/// @returns +/// The the square root of x. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxSqrt(FfxFloat16x4 x) +{ + return sqrt(x); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat16 ffxCopySignBitHalf(FfxFloat16 d, FfxFloat16 s) +{ + return FFX_TO_FLOAT16(FFX_TO_UINT16(d) | (FFX_TO_UINT16(s) & FFX_BROADCAST_UINT16(0x8000u))); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxCopySignBitHalf(FfxFloat16x2 d, FfxFloat16x2 s) +{ + return FFX_TO_FLOAT16X2(FFX_TO_UINT16X2(d) | (FFX_TO_UINT16X2(s) & FFX_BROADCAST_UINT16X2(0x8000u))); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxCopySignBitHalf(FfxFloat16x3 d, FfxFloat16x3 s) +{ + return FFX_TO_FLOAT16X3(FFX_TO_UINT16X3(d) | (FFX_TO_UINT16X3(s) & FFX_BROADCAST_UINT16X3(0x8000u))); +} + +/// Copy the sign bit from 's' to positive 'd'. +/// +/// @param [in] d The value to copy the sign bit into. +/// @param [in] s The value to copy the sign bit from. +/// +/// @returns +/// The value of d with the sign bit from s. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxCopySignBitHalf(FfxFloat16x4 d, FfxFloat16x4 s) +{ + return FFX_TO_FLOAT16X4(FFX_TO_UINT16X4(d) | (FFX_TO_UINT16X4(s) & FFX_BROADCAST_UINT16X4(0x8000u))); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat16 ffxIsSignedHalf(FfxFloat16 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxIsSignedHalf(FfxFloat16x2 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16X2(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxIsSignedHalf(FfxFloat16x3 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16X3(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 0 +/// m >= 0 := 0 +/// m < 0 := 1 +/// +/// Uses the following useful floating point logic, +/// saturate(+a*(-INF)==-INF) := 0 +/// saturate( 0*(-INF)== NaN) := 0 +/// saturate(-a*(-INF)==+INF) := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against 0. +/// +/// @returns +/// 1.0 when the value is negative, or 0.0 when the value is 0 or position. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxIsSignedHalf(FfxFloat16x4 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16X4(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat16 ffxIsGreaterThanZeroHalf(FfxFloat16 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16(FFX_POSITIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxIsGreaterThanZeroHalf(FfxFloat16x2 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16X2(FFX_POSITIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxIsGreaterThanZeroHalf(FfxFloat16x3 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16X3(FFX_POSITIVE_INFINITY_HALF)); +} + +/// A single operation to return the following: +/// m = NaN := 1 +/// m > 0 := 0 +/// m <= 0 := 1 +/// +/// This function is useful when creating masks for branch-free logic. +/// +/// @param [in] m The value to test against zero. +/// +/// @returns +/// 1.0 when the value is position, or 0.0 when the value is 0 or negative. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxIsGreaterThanZeroHalf(FfxFloat16x4 m) +{ + return ffxSaturate(m * FFX_BROADCAST_FLOAT16X4(FFX_POSITIVE_INFINITY_HALF)); +} + +/// Convert a 16bit floating point value to sortable integer. +/// +/// - If sign bit=0, flip the sign bit (positives). +/// - If sign bit=1, flip all bits (negatives). +/// +/// The function has the side effects that: +/// - Larger integers are more positive values. +/// - Float zero is mapped to center of integers (so clear to integer zero is a nice default for atomic max usage). +/// +/// @param [in] x The floating point value to make sortable. +/// +/// @returns +/// The sortable integer value. +/// +/// @ingroup GPUCore +FfxUInt16 ffxFloatToSortableIntegerHalf(FfxUInt16 x) +{ + return x ^ ((ffxBitShiftRightHalf(x, FFX_BROADCAST_UINT16(15))) | FFX_BROADCAST_UINT16(0x8000)); +} + +/// Convert a sortable integer to a 16bit floating point value. +/// +/// The function has the side effects that: +/// - If sign bit=1, flip the sign bit (positives). +/// - If sign bit=0, flip all bits (negatives). +/// +/// @param [in] x The sortable integer value to make floating point. +/// +/// @returns +/// The floating point value. +/// +/// @ingroup GPUCore +FfxUInt16 ffxSortableIntegerToFloatHalf(FfxUInt16 x) +{ + return x ^ ((~ffxBitShiftRightHalf(x, FFX_BROADCAST_UINT16(15))) | FFX_BROADCAST_UINT16(0x8000)); +} + +/// Convert a pair of 16bit floating point values to a pair of sortable integers. +/// +/// - If sign bit=0, flip the sign bit (positives). +/// - If sign bit=1, flip all bits (negatives). +/// +/// The function has the side effects that: +/// - Larger integers are more positive values. +/// - Float zero is mapped to center of integers (so clear to integer zero is a nice default for atomic max usage). +/// +/// @param [in] x The floating point values to make sortable. +/// +/// @returns +/// The sortable integer values. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxFloatToSortableIntegerHalf(FfxUInt16x2 x) +{ + return x ^ ((ffxBitShiftRightHalf(x, FFX_BROADCAST_UINT16X2(15))) | FFX_BROADCAST_UINT16X2(0x8000)); +} + +/// Convert a pair of sortable integers to a pair of 16bit floating point values. +/// +/// The function has the side effects that: +/// - If sign bit=1, flip the sign bit (positives). +/// - If sign bit=0, flip all bits (negatives). +/// +/// @param [in] x The sortable integer values to make floating point. +/// +/// @returns +/// The floating point values. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxSortableIntegerToFloatHalf(FfxUInt16x2 x) +{ + return x ^ ((~ffxBitShiftRightHalf(x, FFX_BROADCAST_UINT16X2(15))) | FFX_BROADCAST_UINT16X2(0x8000)); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// [Zero] Y0 [Zero] X0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesZeroY0ZeroX0(FfxUInt32x2 i) +{ + return ((i.x) & 0xffu) | ((i.y << 16) & 0xff0000u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// [Zero] Y1 [Zero] X1 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesZeroY1ZeroX1(FfxUInt32x2 i) +{ + return ((i.x >> 8) & 0xffu) | ((i.y << 8) & 0xff0000u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// [Zero] Y2 [Zero] X2 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesZeroY2ZeroX2(FfxUInt32x2 i) +{ + return ((i.x >> 16) & 0xffu) | ((i.y) & 0xff0000u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// [Zero] Y3 [Zero] X3 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesZeroY3ZeroX3(FfxUInt32x2 i) +{ + return ((i.x >> 24) & 0xffu) | ((i.y >> 8) & 0xff0000u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y3 Y2 Y1 X0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY3Y2Y1X0(FfxUInt32x2 i) +{ + return ((i.x) & 0x000000ffu) | (i.y & 0xffffff00u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y3 Y2 Y1 X2 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY3Y2Y1X2(FfxUInt32x2 i) +{ + return ((i.x >> 16) & 0x000000ffu) | (i.y & 0xffffff00u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y3 Y2 X0 Y0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY3Y2X0Y0(FfxUInt32x2 i) +{ + return ((i.x << 8) & 0x0000ff00u) | (i.y & 0xffff00ffu); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y3 Y2 X2 Y0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY3Y2X2Y0(FfxUInt32x2 i) +{ + return ((i.x >> 8) & 0x0000ff00u) | (i.y & 0xffff00ffu); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y3 X0 Y1 Y0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY3X0Y1Y0(FfxUInt32x2 i) +{ + return ((i.x << 16) & 0x00ff0000u) | (i.y & 0xff00ffffu); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y3 X2 Y1 Y0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY3X2Y1Y0(FfxUInt32x2 i) +{ + return ((i.x) & 0x00ff0000u) | (i.y & 0xff00ffffu); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// X0 Y2 Y1 Y0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesX0Y2Y1Y0(FfxUInt32x2 i) +{ + return ((i.x << 24) & 0xff000000u) | (i.y & 0x00ffffffu); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// X2 Y2 Y1 Y0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesX2Y2Y1Y0(FfxUInt32x2 i) +{ + return ((i.x << 8) & 0xff000000u) | (i.y & 0x00ffffffu); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y2 X2 Y0 X0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY2X2Y0X0(FfxUInt32x2 i) +{ + return ((i.x) & 0x00ff00ffu) | ((i.y << 8) & 0xff00ff00u); +} + +/// Packs the bytes from the X and Y components of a FfxUInt32x2 into a single 32-bit integer. +/// +/// The resulting integer will contain bytes in the following order, from most to least significant: +/// Y2 Y0 X2 X0 +/// +/// @param [in] i The integer pair to pack. +/// +/// @returns +/// The packed integer value. +/// +/// @ingroup GPUCore +FfxUInt32 ffxPackBytesY2Y0X2X0(FfxUInt32x2 i) +{ + return (((i.x) & 0xffu) | ((i.x >> 8) & 0xff00u) | ((i.y << 16) & 0xff0000u) | ((i.y << 8) & 0xff000000u)); +} + +/// Takes two Float16x2 values x and y, normalizes them and builds a single Uint16x2 value in the format {{x0,y0},{x1,y1}}. +/// +/// @param [in] x The first float16x2 value to pack. +/// @param [in] y The second float16x2 value to pack. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxPackX0Y0X1Y1UnsignedToUint16x2(FfxFloat16x2 x, FfxFloat16x2 y) +{ + x *= FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0); + y *= FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0); + return FFX_UINT32_TO_UINT16X2(ffxPackBytesY2X2Y0X0(FfxUInt32x2(FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(x)), FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(y))))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[0:7], +/// d.y[0:7] into r.y[0:7], i.x[8:15] into r.x[8:15], r.y[8:15] and i.y[0:15] into r.x[16:31], r.y[16:31] using 3 ops. +/// +/// r=ffxPermuteUByte0Float16x2ToUint2(d,i) +/// Where 'k0' is an SGPR with {1.0/32768.0} packed into the lower 16-bits +/// Where 'k1' is an SGPR with 0x???? +/// Where 'k2' is an SGPR with 0x???? +/// V_PK_FMA_F16 i,i,k0.x,0 +/// V_PERM_B32 r.x,i,i,k1 +/// V_PERM_B32 r.y,i,i,k2 +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteUByte0Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0))); + return FfxUInt32x2(ffxPackBytesY3Y2Y1X0(FfxUInt32x2(d.x, b)), ffxPackBytesY3Y2Y1X2(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[8:15], +/// d.y[0:7] into r.y[8:15], i.x[0:7] into r.x[0:7], r.y[0:7] and i.y[0:15] into r.x[16:31], r.y[16:31] using 3 ops. +/// +/// r=ffxPermuteUByte1Float16x2ToUint2(d,i) +/// Where 'k0' is an SGPR with {1.0/32768.0} packed into the lower 16-bits +/// Where 'k1' is an SGPR with 0x???? +/// Where 'k2' is an SGPR with 0x???? +/// V_PK_FMA_F16 i,i,k0.x,0 +/// V_PERM_B32 r.x,i,i,k1 +/// V_PERM_B32 r.y,i,i,k2 +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteUByte1Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0))); + return FfxUInt32x2(ffxPackBytesY3Y2X0Y0(FfxUInt32x2(d.x, b)), ffxPackBytesY3Y2X2Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[16:23], +/// d.y[0:7] into r.y[16:23], i.x[0:15] into r.x[0:15], r.y[0:15] and i.y[8:15] into r.x[24:31], r.y[24:31] using 3 ops. +/// +/// r=ffxPermuteUByte2Float16x2ToUint2(d,i) +/// Where 'k0' is an SGPR with {1.0/32768.0} packed into the lower 16-bits +/// Where 'k1' is an SGPR with 0x???? +/// Where 'k2' is an SGPR with 0x???? +/// V_PK_FMA_F16 i,i,k0.x,0 +/// V_PERM_B32 r.x,i,i,k1 +/// V_PERM_B32 r.y,i,i,k2 +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteUByte2Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0))); + return FfxUInt32x2(ffxPackBytesY3X0Y1Y0(FfxUInt32x2(d.x, b)), ffxPackBytesY3X2Y1Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[24:31], +/// d.y[0:7] into r.y[24:31], i.x[0:15] into r.x[0:15], r.y[0:15] and i.y[0:7] into r.x[16:23], r.y[16:23] using 3 ops. +/// +/// r=ffxPermuteUByte3Float16x2ToUint2(d,i) +/// Where 'k0' is an SGPR with {1.0/32768.0} packed into the lower 16-bits +/// Where 'k1' is an SGPR with 0x???? +/// Where 'k2' is an SGPR with 0x???? +/// V_PK_FMA_F16 i,i,k0.x,0 +/// V_PERM_B32 r.x,i,i,k1 +/// V_PERM_B32 r.y,i,i,k2 +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteUByte3Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0))); + return FfxUInt32x2(ffxPackBytesX0Y2Y1Y0(FfxUInt32x2(d.x, b)), ffxPackBytesX2Y2Y1Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[0:7] into r.x[0:7] and i.y[0:7] into r.y[0:7] using 2 ops. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteUByte0Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY0ZeroX0(i))) * FFX_BROADCAST_FLOAT16X2(32768.0); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[8:15] into r.x[0:7] and i.y[8:15] into r.y[0:7] using 2 ops. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteUByte1Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY1ZeroX1(i))) * FFX_BROADCAST_FLOAT16X2(32768.0); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[16:23] into r.x[0:7] and i.y[16:23] into r.y[0:7] using 2 ops. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteUByte2Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY2ZeroX2(i))) * FFX_BROADCAST_FLOAT16X2(32768.0); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[24:31] into r.x[0:7] and i.y[24:31] into r.y[0:7] using 2 ops. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteUByte3Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY3ZeroX3(i))) * FFX_BROADCAST_FLOAT16X2(32768.0); +} + +/// Takes two Float16x2 values x and y, normalizes them and builds a single Uint16x2 value in the format {{x0,y0},{x1,y1}}. +/// +/// @param [in] x The first float16x2 value to pack. +/// @param [in] y The second float16x2 value to pack. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxPackX0Y0X1Y1SignedToUint16x2(FfxFloat16x2 x, FfxFloat16x2 y) +{ + x = x * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0); + y = y * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0); + return FFX_UINT32_TO_UINT16X2(ffxPackBytesY2X2Y0X0(FfxUInt32x2(FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(x)), FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(y))))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[0:7], +/// d.y[0:7] into r.y[0:7], i.x[8:15] into r.x[8:15], r.y[8:15] and i.y[0:15] into r.x[16:31], r.y[16:31] using 3 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteSByte0Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))); + return FfxUInt32x2(ffxPackBytesY3Y2Y1X0(FfxUInt32x2(d.x, b)), ffxPackBytesY3Y2Y1X2(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[8:15], +/// d.y[0:7] into r.y[8:15], i.x[0:7] into r.x[0:7], r.y[0:7] and i.y[0:15] into r.x[16:31], r.y[16:31] using 3 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteSByte1Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))); + return FfxUInt32x2(ffxPackBytesY3Y2X0Y0(FfxUInt32x2(d.x, b)), ffxPackBytesY3Y2X2Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[16:23], +/// d.y[0:7] into r.y[16:23], i.x[0:15] into r.x[0:15], r.y[0:15] and i.y[8:15] into r.x[24:31], r.y[24:31] using 3 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteSByte2Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))); + return FfxUInt32x2(ffxPackBytesY3X0Y1Y0(FfxUInt32x2(d.x, b)), ffxPackBytesY3X2Y1Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[24:31], +/// d.y[0:7] into r.y[24:31], i.x[0:15] into r.x[0:15], r.y[0:15] and i.y[0:7] into r.x[16:23], r.y[16:23] using 3 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteSByte3Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))); + return FfxUInt32x2(ffxPackBytesX0Y2Y1Y0(FfxUInt32x2(d.x, b)), ffxPackBytesX2Y2Y1Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[0:7], +/// d.y[0:7] into r.y[0:7], i.x[8:15] into r.x[8:15], r.y[8:15] and i.y[0:15] into r.x[16:31], r.y[16:31] using 3 ops. +/// +/// Zero-based flips the MSB bit of the byte (making 128 "exact zero" actually zero). +/// This is useful if there is a desire for cleared values to decode as zero. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteZeroBasedSByte0Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))) ^ 0x00800080u; + return FfxUInt32x2(ffxPackBytesY3Y2Y1X0(FfxUInt32x2(d.x, b)), ffxPackBytesY3Y2Y1X2(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[8:15], +/// d.y[0:7] into r.y[8:15], i.x[0:7] into r.x[0:7], r.y[0:7] and i.y[0:15] into r.x[16:31], r.y[16:31] using 3 ops. +/// +/// Zero-based flips the MSB bit of the byte (making 128 "exact zero" actually zero). +/// This is useful if there is a desire for cleared values to decode as zero. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteZeroBasedSByte1Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))) ^ 0x00800080u; + return FfxUInt32x2(ffxPackBytesY3Y2X0Y0(FfxUInt32x2(d.x, b)), ffxPackBytesY3Y2X2Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[16:23], +/// d.y[0:7] into r.y[16:23], i.x[0:15] into r.x[0:15], r.y[0:15] and i.y[8:15] into r.x[24:31], r.y[24:31] using 3 ops. +/// +/// Zero-based flips the MSB bit of the byte (making 128 "exact zero" actually zero). +/// This is useful if there is a desire for cleared values to decode as zero. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteZeroBasedSByte2Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))) ^ 0x00800080u; + return FfxUInt32x2(ffxPackBytesY3X0Y1Y0(FfxUInt32x2(d.x, b)), ffxPackBytesY3X2Y1Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value d, Float16x2 value i and a resulting FfxUInt32x2 value r, this function packs d.x[0:7] into r.x[24:31], +/// d.y[0:7] into r.y[24:31], i.x[0:15] into r.x[0:15], r.y[0:15] and i.y[0:7] into r.x[16:23], r.y[16:23] using 3 ops. +/// +/// Zero-based flips the MSB bit of the byte (making 128 "exact zero" actually zero). +/// This is useful if there is a desire for cleared values to decode as zero. +/// +/// Handles signed byte values. +/// +/// @param [in] d The FfxUInt32x2 value to be packed. +/// @param [in] i The FfxFloat16x2 value to be packed. +/// +/// @returns +/// The packed FfxUInt32x2 value. +/// +/// @ingroup GPUCore +FfxUInt32x2 ffxPermuteZeroBasedSByte3Float16x2ToUint2(FfxUInt32x2 d, FfxFloat16x2 i) +{ + FfxUInt32 b = FFX_UINT16X2_TO_UINT32(FFX_TO_UINT16X2(i * FFX_BROADCAST_FLOAT16X2(1.0 / 32768.0) + FFX_BROADCAST_FLOAT16X2(0.25 / 32768.0))) ^ 0x00800080u; + return FfxUInt32x2(ffxPackBytesX0Y2Y1Y0(FfxUInt32x2(d.x, b)), ffxPackBytesX2Y2Y1Y0(FfxUInt32x2(d.y, b))); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[0:7] into r.x[0:7] and i.y[0:7] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteSByte0Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY0ZeroX0(i))) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[8:15] into r.x[0:7] and i.y[8:15] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteSByte1Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY1ZeroX1(i))) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[16:23] into r.x[0:7] and i.y[16:23] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteSByte2Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY2ZeroX2(i))) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[24:31] into r.x[0:7] and i.y[24:31] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteSByte3Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY3ZeroX3(i))) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[0:7] into r.x[0:7] and i.y[0:7] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteZeroBasedSByte0Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY0ZeroX0(i) ^ 0x00800080u)) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[8:15] into r.x[0:7] and i.y[8:15] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteZeroBasedSByte1Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY1ZeroX1(i) ^ 0x00800080u)) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[16:23] into r.x[0:7] and i.y[16:23] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteZeroBasedSByte2Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY2ZeroX2(i) ^ 0x00800080u)) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Given a FfxUInt32x2 value i and a resulting Float16x2 value r, this function packs i.x[24:31] into r.x[0:7] and i.y[24:31] into r.y[0:7] using 2 ops. +/// +/// Handles signed byte values. +/// +/// @param [in] i The FfxUInt32x2 value to be unpacked. +/// +/// @returns +/// The unpacked FfxFloat16x2. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxPermuteZeroBasedSByte3Uint2ToFloat16x2(FfxUInt32x2 i) +{ + return FFX_TO_FLOAT16X2(FFX_UINT32_TO_UINT16X2(ffxPackBytesZeroY3ZeroX3(i) ^ 0x00800080u)) * FFX_BROADCAST_FLOAT16X2(32768.0) - FFX_BROADCAST_FLOAT16X2(0.25); +} + +/// Calculate a half-precision low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16 ffxApproximateSqrtHalf(FfxFloat16 a) +{ + return FFX_TO_FLOAT16((FFX_TO_UINT16(a) >> FFX_BROADCAST_UINT16(1)) + FFX_BROADCAST_UINT16(0x1de2)); +} + +/// Calculate a half-precision low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxApproximateSqrtHalf(FfxFloat16x2 a) +{ + return FFX_TO_FLOAT16X2((FFX_TO_UINT16X2(a) >> FFX_BROADCAST_UINT16X2(1)) + FFX_BROADCAST_UINT16X2(0x1de2)); +} + +/// Calculate a half-precision low-quality approximation for the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the square root for. +/// +/// @returns +/// An approximation of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxApproximateSqrtHalf(FfxFloat16x3 a) +{ + return FFX_TO_FLOAT16X3((FFX_TO_UINT16X3(a) >> FFX_BROADCAST_UINT16X3(1)) + FFX_BROADCAST_UINT16X3(0x1de2)); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16 ffxApproximateReciprocalHalf(FfxFloat16 a) +{ + return FFX_TO_FLOAT16(FFX_BROADCAST_UINT16(0x7784) - FFX_TO_UINT16(a)); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxApproximateReciprocalHalf(FfxFloat16x2 a) +{ + return FFX_TO_FLOAT16X2(FFX_BROADCAST_UINT16X2(0x7784) - FFX_TO_UINT16X2(a)); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxApproximateReciprocalHalf(FfxFloat16x3 a) +{ + return FFX_TO_FLOAT16X3(FFX_BROADCAST_UINT16X3(0x7784) - FFX_TO_UINT16X3(a)); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxApproximateReciprocalHalf(FfxFloat16x4 a) +{ + return FFX_TO_FLOAT16X4(FFX_BROADCAST_UINT16X4(0x7784) - FFX_TO_UINT16X4(a)); +} + +/// Calculate a half-precision medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat16 ffxApproximateReciprocalMediumHalf(FfxFloat16 a) +{ + FfxFloat16 b = FFX_TO_FLOAT16(FFX_BROADCAST_UINT16(0x778d) - FFX_TO_UINT16(a)); + return b * (-b * a + FFX_BROADCAST_FLOAT16(2.0)); +} + +/// Calculate a half-precision medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxApproximateReciprocalMediumHalf(FfxFloat16x2 a) +{ + FfxFloat16x2 b = FFX_TO_FLOAT16X2(FFX_BROADCAST_UINT16X2(0x778d) - FFX_TO_UINT16X2(a)); + return b * (-b * a + FFX_BROADCAST_FLOAT16X2(2.0)); +} + +/// Calculate a half-precision medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxApproximateReciprocalMediumHalf(FfxFloat16x3 a) +{ + FfxFloat16x3 b = FFX_TO_FLOAT16X3(FFX_BROADCAST_UINT16X3(0x778d) - FFX_TO_UINT16X3(a)); + return b * (-b * a + FFX_BROADCAST_FLOAT16X3(2.0)); +} + +/// Calculate a half-precision medium-quality approximation for the reciprocal of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal for. +/// +/// @returns +/// An approximation of the reciprocal, estimated to medium quality. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxApproximateReciprocalMediumHalf(FfxFloat16x4 a) +{ + FfxFloat16x4 b = FFX_TO_FLOAT16X4(FFX_BROADCAST_UINT16X4(0x778d) - FFX_TO_UINT16X4(a)); + return b * (-b * a + FFX_BROADCAST_FLOAT16X4(2.0)); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal of the square root for. +/// +/// @returns +/// An approximation of the reciprocal of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16 ffxApproximateReciprocalSquareRootHalf(FfxFloat16 a) +{ + return FFX_TO_FLOAT16(FFX_BROADCAST_UINT16(0x59a3) - (FFX_TO_UINT16(a) >> FFX_BROADCAST_UINT16(1))); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal of the square root for. +/// +/// @returns +/// An approximation of the reciprocal of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxApproximateReciprocalSquareRootHalf(FfxFloat16x2 a) +{ + return FFX_TO_FLOAT16X2(FFX_BROADCAST_UINT16X2(0x59a3) - (FFX_TO_UINT16X2(a) >> FFX_BROADCAST_UINT16X2(1))); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal of the square root for. +/// +/// @returns +/// An approximation of the reciprocal of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxApproximateReciprocalSquareRootHalf(FfxFloat16x3 a) +{ + return FFX_TO_FLOAT16X3(FFX_BROADCAST_UINT16X3(0x59a3) - (FFX_TO_UINT16X3(a) >> FFX_BROADCAST_UINT16X3(1))); +} + +/// Calculate a half-precision low-quality approximation for the reciprocal of the square root of a value. +/// +/// For additional information on the approximation family of functions, you can refer to Michal Drobot's excellent +/// presentation materials: +/// +/// - https://michaldrobot.files.wordpress.com/2014/05/gcn_alu_opt_digitaldragons2014.pdf +/// - https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h +/// +/// @param [in] a The value to calculate an approximate to the reciprocal of the square root for. +/// +/// @returns +/// An approximation of the reciprocal of the square root, estimated to low quality. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxApproximateReciprocalSquareRootHalf(FfxFloat16x4 a) +{ + return FFX_TO_FLOAT16X4(FFX_BROADCAST_UINT16X4(0x59a3) - (FFX_TO_UINT16X4(a) >> FFX_BROADCAST_UINT16X4(1))); +} + +/// An approximation of sine. +/// +/// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +/// is {-1/4 to 1/4} representing {-1 to 1}. +/// +/// @param [in] x The value to calculate approximate sine for. +/// +/// @returns +/// The approximate sine of value. +FfxFloat16 ffxParabolicSinHalf(FfxFloat16 x) +{ + return x * abs(x) - x; +} + +/// An approximation of sine. +/// +/// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +/// is {-1/4 to 1/4} representing {-1 to 1}. +/// +/// @param [in] x The value to calculate approximate sine for. +/// +/// @returns +/// The approximate sine of value. +FfxFloat16x2 ffxParabolicSinHalf(FfxFloat16x2 x) +{ + return x * abs(x) - x; +} + +/// An approximation of cosine. +/// +/// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +/// is {-1/4 to 1/4} representing {-1 to 1}. +/// +/// @param [in] x The value to calculate approximate cosine for. +/// +/// @returns +/// The approximate cosine of value. +FfxFloat16 ffxParabolicCosHalf(FfxFloat16 x) +{ + x = ffxFract(x * FFX_BROADCAST_FLOAT16(0.5) + FFX_BROADCAST_FLOAT16(0.75)); + x = x * FFX_BROADCAST_FLOAT16(2.0) - FFX_BROADCAST_FLOAT16(1.0); + return ffxParabolicSinHalf(x); +} + +/// An approximation of cosine. +/// +/// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +/// is {-1/4 to 1/4} representing {-1 to 1}. +/// +/// @param [in] x The value to calculate approximate cosine for. +/// +/// @returns +/// The approximate cosine of value. +FfxFloat16x2 ffxParabolicCosHalf(FfxFloat16x2 x) +{ + x = ffxFract(x * FFX_BROADCAST_FLOAT16X2(0.5) + FFX_BROADCAST_FLOAT16X2(0.75)); + x = x * FFX_BROADCAST_FLOAT16X2(2.0) - FFX_BROADCAST_FLOAT16X2(1.0); + return ffxParabolicSinHalf(x); +} + +/// An approximation of both sine and cosine. +/// +/// Valid input range is {-1 to 1} representing {0 to 2 pi}, and the output range +/// is {-1/4 to 1/4} representing {-1 to 1}. +/// +/// @param [in] x The value to calculate approximate cosine for. +/// +/// @returns +/// A FfxFloat32x2 containing approximations of both sine and cosine of value. +FfxFloat16x2 ffxParabolicSinCosHalf(FfxFloat16 x) +{ + FfxFloat16 y = ffxFract(x * FFX_BROADCAST_FLOAT16(0.5) + FFX_BROADCAST_FLOAT16(0.75)); + y = y * FFX_BROADCAST_FLOAT16(2.0) - FFX_BROADCAST_FLOAT16(1.0); + return ffxParabolicSinHalf(FfxFloat16x2(x, y)); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt16 ffxZeroOneAndHalf(FfxUInt16 x, FfxUInt16 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxZeroOneAndHalf(FfxUInt16x2 x, FfxUInt16x2 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt16x3 ffxZeroOneAndHalf(FfxUInt16x3 x, FfxUInt16x3 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxUInt16x4 ffxZeroOneAndHalf(FfxUInt16x4 x, FfxUInt16x4 y) +{ + return min(x, y); +} + +/// Conditional free logic NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// @param [in] y The second value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt16 ffxZeroOneNotHalf(FfxUInt16 x) +{ + return x ^ FFX_BROADCAST_UINT16(1); +} + +/// Conditional free logic NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// @param [in] y The second value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxZeroOneNotHalf(FfxUInt16x2 x) +{ + return x ^ FFX_BROADCAST_UINT16X2(1); +} + +/// Conditional free logic NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// @param [in] y The second value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt16x3 ffxZeroOneNotHalf(FfxUInt16x3 x) +{ + return x ^ FFX_BROADCAST_UINT16X3(1); +} + +/// Conditional free logic NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the NOT operator. +/// @param [in] y The second value to be fed into the NOT operator. +/// +/// @returns +/// Result of the NOT operation. +/// +/// @ingroup GPUCore +FfxUInt16x4 ffxZeroOneNotHalf(FfxUInt16x4 x) +{ + return x ^ FFX_BROADCAST_UINT16X4(1); +} + +/// Conditional free logic OR operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt16 ffxZeroOneOrHalf(FfxUInt16 x, FfxUInt16 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxZeroOneOrHalf(FfxUInt16x2 x, FfxUInt16x2 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt16x3 ffxZeroOneOrHalf(FfxUInt16x3 x, FfxUInt16x3 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxUInt16x4 ffxZeroOneOrHalf(FfxUInt16x4 x, FfxUInt16x4 y) +{ + return max(x, y); +} + +/// Convert a half-precision FfxFloat32 value between 0.0f and 1.0f to a half-precision Uint. +/// +/// @param [in] x The value to converted to a Uint. +/// +/// @returns +/// The converted Uint value. +/// +/// @ingroup GPUCore +FfxUInt16 ffxZeroOneFloat16ToUint16(FfxFloat16 x) +{ + return FFX_TO_UINT16(x * FFX_TO_FLOAT16(FFX_TO_UINT16(1))); +} + +/// Convert a half-precision FfxFloat32 value between 0.0f and 1.0f to a half-precision Uint. +/// +/// @param [in] x The value to converted to a Uint. +/// +/// @returns +/// The converted Uint value. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxZeroOneFloat16x2ToUint16x2(FfxFloat16x2 x) +{ + return FFX_TO_UINT16X2(x * FFX_TO_FLOAT16X2(FfxUInt16x2(1, 1))); +} + +/// Convert a half-precision FfxFloat32 value between 0.0f and 1.0f to a half-precision Uint. +/// +/// @param [in] x The value to converted to a Uint. +/// +/// @returns +/// The converted Uint value. +/// +/// @ingroup GPUCore +FfxUInt16x3 ffxZeroOneFloat16x3ToUint16x3(FfxFloat16x3 x) +{ + return FFX_TO_UINT16X3(x * FFX_TO_FLOAT16X3(FfxUInt16x3(1, 1, 1))); +} + +/// Convert a half-precision FfxFloat32 value between 0.0f and 1.0f to a half-precision Uint. +/// +/// @param [in] x The value to converted to a Uint. +/// +/// @returns +/// The converted Uint value. +/// +/// @ingroup GPUCore +FfxUInt16x4 ffxZeroOneFloat16x4ToUint16x4(FfxFloat16x4 x) +{ + return FFX_TO_UINT16X4(x * FFX_TO_FLOAT16X4(FfxUInt16x4(1, 1, 1, 1))); +} + +/// Convert a half-precision FfxUInt32 value between 0 and 1 to a half-precision FfxFloat32. +/// +/// @param [in] x The value to converted to a half-precision FfxFloat32. +/// +/// @returns +/// The converted half-precision FfxFloat32 value. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneUint16ToFloat16(FfxUInt16 x) +{ + return FFX_TO_FLOAT16(x * FFX_TO_UINT16(FFX_TO_FLOAT16(1.0))); +} + +/// Convert a half-precision FfxUInt32 value between 0 and 1 to a half-precision FfxFloat32. +/// +/// @param [in] x The value to converted to a half-precision FfxFloat32. +/// +/// @returns +/// The converted half-precision FfxFloat32 value. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneUint16x2ToFloat16x2(FfxUInt16x2 x) +{ + return FFX_TO_FLOAT16X2(x * FFX_TO_UINT16X2(FfxUInt16x2(FFX_TO_FLOAT16(1.0), FFX_TO_FLOAT16(1.0)))); +} + +/// Convert a half-precision FfxUInt32 value between 0 and 1 to a half-precision FfxFloat32. +/// +/// @param [in] x The value to converted to a half-precision FfxFloat32. +/// +/// @returns +/// The converted half-precision FfxFloat32 value. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneUint16x3ToFloat16x3(FfxUInt16x3 x) +{ + return FFX_TO_FLOAT16X3(x * FFX_TO_UINT16X3(FfxUInt16x3(FFX_TO_FLOAT16(1.0), FFX_TO_FLOAT16(1.0), FFX_TO_FLOAT16(1.0)))); +} + +/// Convert a half-precision FfxUInt32 value between 0 and 1 to a half-precision FfxFloat32. +/// +/// @param [in] x The value to converted to a half-precision FfxFloat32. +/// +/// @returns +/// The converted half-precision FfxFloat32 value. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneUint16x4ToFloat16x4(FfxUInt16x4 x) +{ + return FFX_TO_FLOAT16X4(x * FFX_TO_UINT16X4(FfxUInt16x4(FFX_TO_FLOAT16(1.0), FFX_TO_FLOAT16(1.0), FFX_TO_FLOAT16(1.0), FFX_TO_FLOAT16(1.0)))); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneAndHalf(FfxFloat16 x, FfxFloat16 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneAndHalf(FfxFloat16x2 x, FfxFloat16x2 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneAndHalf(FfxFloat16x3 x, FfxFloat16x3 y) +{ + return min(x, y); +} + +/// Conditional free logic AND operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// +/// @returns +/// Result of the AND operation. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneAndHalf(FfxFloat16x4 x, FfxFloat16x4 y) +{ + return min(x, y); +} + +/// Conditional free logic AND NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND NOT operator. +/// @param [in] y The second value to be fed into the AND NOT operator. +/// +/// @returns +/// Result of the AND NOT operation. +/// +/// @ingroup GPUCore +FfxFloat16 ffxSignedZeroOneAndOrHalf(FfxFloat16 x, FfxFloat16 y) +{ + return (-x) * y + FFX_BROADCAST_FLOAT16(1.0); +} + +/// Conditional free logic AND NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND NOT operator. +/// @param [in] y The second value to be fed into the AND NOT operator. +/// +/// @returns +/// Result of the AND NOT operation. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxSignedZeroOneAndOrHalf(FfxFloat16x2 x, FfxFloat16x2 y) +{ + return (-x) * y + FFX_BROADCAST_FLOAT16X2(1.0); +} + +/// Conditional free logic AND NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND NOT operator. +/// @param [in] y The second value to be fed into the AND NOT operator. +/// +/// @returns +/// Result of the AND NOT operation. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxSignedZeroOneAndOrHalf(FfxFloat16x3 x, FfxFloat16x3 y) +{ + return (-x) * y + FFX_BROADCAST_FLOAT16X3(1.0); +} + +/// Conditional free logic AND NOT operation using two half-precision values. +/// +/// @param [in] x The first value to be fed into the AND NOT operator. +/// @param [in] y The second value to be fed into the AND NOT operator. +/// +/// @returns +/// Result of the AND NOT operation. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxSignedZeroOneAndOrHalf(FfxFloat16x4 x, FfxFloat16x4 y) +{ + return (-x) * y + FFX_BROADCAST_FLOAT16X4(1.0); +} + +/// Conditional free logic AND operation using two half-precision values followed by +/// a NOT operation using the resulting value and a third half-precision value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneAndOrHalf(FfxFloat16 x, FfxFloat16 y, FfxFloat16 z) +{ + return ffxSaturate(x * y + z); +} + +/// Conditional free logic AND operation using two half-precision values followed by +/// a NOT operation using the resulting value and a third half-precision value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneAndOrHalf(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16x2 z) +{ + return ffxSaturate(x * y + z); +} + +/// Conditional free logic AND operation using two half-precision values followed by +/// a NOT operation using the resulting value and a third half-precision value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneAndOrHalf(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16x3 z) +{ + return ffxSaturate(x * y + z); +} + +/// Conditional free logic AND operation using two half-precision values followed by +/// a NOT operation using the resulting value and a third half-precision value. +/// +/// @param [in] x The first value to be fed into the AND operator. +/// @param [in] y The second value to be fed into the AND operator. +/// @param [in] z The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneAndOrHalf(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16x4 z) +{ + return ffxSaturate(x * y + z); +} + +/// Given a half-precision value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneIsGreaterThanZeroHalf(FfxFloat16 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16(FFX_POSITIVE_INFINITY_HALF)); +} + +/// Given a half-precision value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneIsGreaterThanZeroHalf(FfxFloat16x2 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16X2(FFX_POSITIVE_INFINITY_HALF)); +} + +/// Given a half-precision value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneIsGreaterThanZeroHalf(FfxFloat16x3 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16X3(FFX_POSITIVE_INFINITY_HALF)); +} + +/// Given a half-precision value, returns 1.0 if greater than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the greater than zero comparison. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneIsGreaterThanZeroHalf(FfxFloat16x4 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16X4(FFX_POSITIVE_INFINITY_HALF)); +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneNotHalf(FfxFloat16 x) +{ + return FFX_BROADCAST_FLOAT16(1.0) - x; +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneNotHalf(FfxFloat16x2 x) +{ + return FFX_BROADCAST_FLOAT16X2(1.0) - x; +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneNotHalf(FfxFloat16x3 x) +{ + return FFX_BROADCAST_FLOAT16X3(1.0) - x; +} + +/// Conditional free logic signed NOT operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the AND OR operator. +/// +/// @returns +/// Result of the AND OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneNotHalf(FfxFloat16x4 x) +{ + return FFX_BROADCAST_FLOAT16X4(1.0) - x; +} + +/// Conditional free logic OR operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneOrHalf(FfxFloat16 x, FfxFloat16 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneOrHalf(FfxFloat16x2 x, FfxFloat16x2 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneOrHalf(FfxFloat16x3 x, FfxFloat16x3 y) +{ + return max(x, y); +} + +/// Conditional free logic OR operation using two half-precision FfxFloat32 values. +/// +/// @param [in] x The first value to be fed into the OR operator. +/// @param [in] y The second value to be fed into the OR operator. +/// +/// @returns +/// Result of the OR operation. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneOrHalf(FfxFloat16x4 x, FfxFloat16x4 y) +{ + return max(x, y); +} + +/// Choose between two half-precision FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneSelectHalf(FfxFloat16 x, FfxFloat16 y, FfxFloat16 z) +{ + FfxFloat16 r = (-x) * z + z; + return x * y + r; +} + +/// Choose between two half-precision FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneSelectHalf(FfxFloat16x2 x, FfxFloat16x2 y, FfxFloat16x2 z) +{ + FfxFloat16x2 r = (-x) * z + z; + return x * y + r; +} + +/// Choose between two half-precision FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneSelectHalf(FfxFloat16x3 x, FfxFloat16x3 y, FfxFloat16x3 z) +{ + FfxFloat16x3 r = (-x) * z + z; + return x * y + r; +} + +/// Choose between two half-precision FfxFloat32 values if the first paramter is greater than zero. +/// +/// @param [in] x The value to compare against zero. +/// @param [in] y The value to return if the comparision is greater than zero. +/// @param [in] z The value to return if the comparision is less than or equal to zero. +/// +/// @returns +/// The selected value. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneSelectHalf(FfxFloat16x4 x, FfxFloat16x4 y, FfxFloat16x4 z) +{ + FfxFloat16x4 r = (-x) * z + z; + return x * y + r; +} + +/// Given a half-precision value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat16 ffxZeroOneIsSignedHalf(FfxFloat16 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// Given a half-precision value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxZeroOneIsSignedHalf(FfxFloat16x2 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16X2(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// Given a half-precision value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxZeroOneIsSignedHalf(FfxFloat16x3 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16X3(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// Given a half-precision value, returns 1.0 if less than zero and 0.0 if not. +/// +/// @param [in] x The value to be compared. +/// +/// @returns +/// Result of the sign value. +/// +/// @ingroup GPUCore +FfxFloat16x4 ffxZeroOneIsSignedHalf(FfxFloat16x4 x) +{ + return ffxSaturate(x * FFX_BROADCAST_FLOAT16X4(FFX_NEGATIVE_INFINITY_HALF)); +} + +/// Compute a Rec.709 color space. +/// +/// Rec.709 is used for some HDTVs. +/// +/// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +/// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +/// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +/// +/// @param [in] c The color to convert to Rec. 709. +/// +/// @returns +/// The color in Rec.709 space. +/// +/// @ingroup GPUCore +FfxFloat16 ffxRec709FromLinearHalf(FfxFloat16 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.018 * 4.5, 4.5, 0.45); + FfxFloat16x2 k = FfxFloat16x2(1.099, -0.099); + return clamp(j.x, c * j.y, pow(c, j.z) * k.x + k.y); +} + +/// Compute a Rec.709 color space. +/// +/// Rec.709 is used for some HDTVs. +/// +/// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +/// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +/// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +/// +/// @param [in] c The color to convert to Rec. 709. +/// +/// @returns +/// The color in Rec.709 space. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxRec709FromLinearHalf(FfxFloat16x2 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.018 * 4.5, 4.5, 0.45); + FfxFloat16x2 k = FfxFloat16x2(1.099, -0.099); + return clamp(j.xx, c * j.yy, pow(c, j.zz) * k.xx + k.yy); +} + +/// Compute a Rec.709 color space. +/// +/// Rec.709 is used for some HDTVs. +/// +/// Both Rec.709 and sRGB have a linear segment which as spec'ed would intersect the curved segment 2 times. +/// (a.) For 8-bit sRGB, steps {0 to 10.3} are in the linear region (4% of the encoding range). +/// (b.) For 8-bit 709, steps {0 to 20.7} are in the linear region (8% of the encoding range). +/// +/// @param [in] c The color to convert to Rec. 709. +/// +/// @returns +/// The color in Rec.709 space. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxRec709FromLinearHalf(FfxFloat16x3 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.018 * 4.5, 4.5, 0.45); + FfxFloat16x2 k = FfxFloat16x2(1.099, -0.099); + return clamp(j.xxx, c * j.yyy, pow(c, j.zzz) * k.xxx + k.yyy); +} + +/// Compute a gamma value from a linear value. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// Note: 'rcpX' is '1/x', where the 'x' is what would be used in ffxLinearFromGammaHalf. +/// +/// @param [in] c The value to convert to gamma space from linear. +/// @param [in] rcpX The reciprocal of power value used for the gamma curve. +/// +/// @returns +/// A value in gamma space. +/// +/// @ingroup GPUCore +FfxFloat16 ffxGammaFromLinearHalf(FfxFloat16 c, FfxFloat16 rcpX) +{ + return pow(c, FFX_BROADCAST_FLOAT16(rcpX)); +} + +/// Compute a gamma value from a linear value. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// Note: 'rcpX' is '1/x', where the 'x' is what would be used in ffxLinearFromGammaHalf. +/// +/// @param [in] c The value to convert to gamma space from linear. +/// @param [in] rcpX The reciprocal of power value used for the gamma curve. +/// +/// @returns +/// A value in gamma space. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxGammaFromLinearHalf(FfxFloat16x2 c, FfxFloat16 rcpX) +{ + return pow(c, FFX_BROADCAST_FLOAT16X2(rcpX)); +} + +/// Compute a gamma value from a linear value. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// Note: 'rcpX' is '1/x', where the 'x' is what would be used in ffxLinearFromGammaHalf. +/// +/// @param [in] c The value to convert to gamma space from linear. +/// @param [in] rcpX The reciprocal of power value used for the gamma curve. +/// +/// @returns +/// A value in gamma space. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxGammaFromLinearHalf(FfxFloat16x3 c, FfxFloat16 rcpX) +{ + return pow(c, FFX_BROADCAST_FLOAT16X3(rcpX)); +} + +/// Compute an SRGB value from a linear value. +/// +/// @param [in] c The value to convert to SRGB from linear. +/// +/// @returns +/// A value in SRGB space. +/// +/// @ingroup GPUCore +FfxFloat16 ffxSrgbFromLinearHalf(FfxFloat16 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.0031308 * 12.92, 12.92, 1.0 / 2.4); + FfxFloat16x2 k = FfxFloat16x2(1.055, -0.055); + return clamp(j.x, c * j.y, pow(c, j.z) * k.x + k.y); +} + +/// Compute an SRGB value from a linear value. +/// +/// @param [in] c The value to convert to SRGB from linear. +/// +/// @returns +/// A value in SRGB space. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxSrgbFromLinearHalf(FfxFloat16x2 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.0031308 * 12.92, 12.92, 1.0 / 2.4); + FfxFloat16x2 k = FfxFloat16x2(1.055, -0.055); + return clamp(j.xx, c * j.yy, pow(c, j.zz) * k.xx + k.yy); +} + +/// Compute an SRGB value from a linear value. +/// +/// @param [in] c The value to convert to SRGB from linear. +/// +/// @returns +/// A value in SRGB space. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxSrgbFromLinearHalf(FfxFloat16x3 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.0031308 * 12.92, 12.92, 1.0 / 2.4); + FfxFloat16x2 k = FfxFloat16x2(1.055, -0.055); + return clamp(j.xxx, c * j.yyy, pow(c, j.zzz) * k.xxx + k.yyy); +} + +/// Compute the square root of a value. +/// +/// @param [in] c The value to compute the square root for. +/// +/// @returns +/// A square root of the input value. +/// +/// @ingroup GPUCore +FfxFloat16 ffxSquareRootHalf(FfxFloat16 c) +{ + return sqrt(c); +} + +/// Compute the square root of a value. +/// +/// @param [in] c The value to compute the square root for. +/// +/// @returns +/// A square root of the input value. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxSquareRootHalf(FfxFloat16x2 c) +{ + return sqrt(c); +} + +/// Compute the square root of a value. +/// +/// @param [in] c The value to compute the square root for. +/// +/// @returns +/// A square root of the input value. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxSquareRootHalf(FfxFloat16x3 c) +{ + return sqrt(c); +} + +/// Compute the cube root of a value. +/// +/// @param [in] c The value to compute the cube root for. +/// +/// @returns +/// A cube root of the input value. +/// +/// @ingroup GPUCore +FfxFloat16 ffxCubeRootHalf(FfxFloat16 c) +{ + return pow(c, FFX_BROADCAST_FLOAT16(1.0 / 3.0)); +} + +/// Compute the cube root of a value. +/// +/// @param [in] c The value to compute the cube root for. +/// +/// @returns +/// A cube root of the input value. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxCubeRootHalf(FfxFloat16x2 c) +{ + return pow(c, FFX_BROADCAST_FLOAT16X2(1.0 / 3.0)); +} + +/// Compute the cube root of a value. +/// +/// @param [in] c The value to compute the cube root for. +/// +/// @returns +/// A cube root of the input value. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxCubeRootHalf(FfxFloat16x3 c) +{ + return pow(c, FFX_BROADCAST_FLOAT16X3(1.0 / 3.0)); +} + +/// Compute a linear value from a REC.709 value. +/// +/// @param [in] c The value to convert to linear from REC.709. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16 ffxLinearFromRec709Half(FfxFloat16 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.081 / 4.5, 1.0 / 4.5, 1.0 / 0.45); + FfxFloat16x2 k = FfxFloat16x2(1.0 / 1.099, 0.099 / 1.099); + return ffxZeroOneSelectHalf(ffxZeroOneIsSignedHalf(c - j.x), c * j.y, pow(c * k.x + k.y, j.z)); +} + +/// Compute a linear value from a REC.709 value. +/// +/// @param [in] c The value to convert to linear from REC.709. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxLinearFromRec709Half(FfxFloat16x2 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.081 / 4.5, 1.0 / 4.5, 1.0 / 0.45); + FfxFloat16x2 k = FfxFloat16x2(1.0 / 1.099, 0.099 / 1.099); + return ffxZeroOneSelectHalf(ffxZeroOneIsSignedHalf(c - j.xx), c * j.yy, pow(c * k.xx + k.yy, j.zz)); +} + +/// Compute a linear value from a REC.709 value. +/// +/// @param [in] c The value to convert to linear from REC.709. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxLinearFromRec709Half(FfxFloat16x3 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.081 / 4.5, 1.0 / 4.5, 1.0 / 0.45); + FfxFloat16x2 k = FfxFloat16x2(1.0 / 1.099, 0.099 / 1.099); + return ffxZeroOneSelectHalf(ffxZeroOneIsSignedHalf(c - j.xxx), c * j.yyy, pow(c * k.xxx + k.yyy, j.zzz)); +} + +/// Compute a linear value from a value in a gamma space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] c The value to convert to linear in gamma space. +/// @param [in] x The power value used for the gamma curve. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16 ffxLinearFromGammaHalf(FfxFloat16 c, FfxFloat16 x) +{ + return pow(c, FFX_BROADCAST_FLOAT16(x)); +} + +/// Compute a linear value from a value in a gamma space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] c The value to convert to linear in gamma space. +/// @param [in] x The power value used for the gamma curve. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxLinearFromGammaHalf(FfxFloat16x2 c, FfxFloat16 x) +{ + return pow(c, FFX_BROADCAST_FLOAT16X2(x)); +} + +/// Compute a linear value from a value in a gamma space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] c The value to convert to linear in gamma space. +/// @param [in] x The power value used for the gamma curve. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxLinearFromGammaHalf(FfxFloat16x3 c, FfxFloat16 x) +{ + return pow(c, FFX_BROADCAST_FLOAT16X3(x)); +} + +/// Compute a linear value from a value in a SRGB space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] c The value to convert to linear in SRGB space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16 ffxLinearFromSrgbHalf(FfxFloat16 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.04045, 1.0 / 12.92, 2.4); + FfxFloat16x2 k = FfxFloat16x2(1.0 / 1.055, 0.055 / 1.055); + return ffxZeroOneSelectHalf(ffxZeroOneIsSignedHalf(c - j.x), c * j.y, pow(c * k.x + k.y, j.z)); +} + +/// Compute a linear value from a value in a SRGB space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] c The value to convert to linear in SRGB space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16x2 ffxLinearFromSrgbHalf(FfxFloat16x2 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.04045, 1.0 / 12.92, 2.4); + FfxFloat16x2 k = FfxFloat16x2(1.0 / 1.055, 0.055 / 1.055); + return ffxZeroOneSelectHalf(ffxZeroOneIsSignedHalf(c - j.xx), c * j.yy, pow(c * k.xx + k.yy, j.zz)); +} + +/// Compute a linear value from a value in a SRGB space. +/// +/// Typically 2.2 for some PC displays, or 2.4-2.5 for CRTs, or 2.2 FreeSync2 native. +/// +/// @param [in] c The value to convert to linear in SRGB space. +/// +/// @returns +/// A value in linear space. +/// +/// @ingroup GPUCore +FfxFloat16x3 ffxLinearFromSrgbHalf(FfxFloat16x3 c) +{ + FfxFloat16x3 j = FfxFloat16x3(0.04045, 1.0 / 12.92, 2.4); + FfxFloat16x2 k = FfxFloat16x2(1.0 / 1.055, 0.055 / 1.055); + return ffxZeroOneSelectHalf(ffxZeroOneIsSignedHalf(c - j.xxx), c * j.yyy, pow(c * k.xxx + k.yyy, j.zzz)); +} + +/// A remapping of 64x1 to 8x8 imposing rotated 2x2 pixel quads in quad linear. +/// +/// Remap illustration: +/// +/// 543210 +/// ~~~~~~ +/// ..xxx. +/// yy...y +/// +/// @param [in] a The input 1D coordinates to remap. +/// +/// @returns +/// The remapped 2D coordinates. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxRemapForQuadHalf(FfxUInt32 a) +{ + return FfxUInt16x2(ffxBitfieldExtract(a, 1u, 3u), ffxBitfieldInsertMask(ffxBitfieldExtract(a, 3u, 3u), a, 1u)); +} + +/// A helper function performing a remap 64x1 to 8x8 remapping which is necessary for 2D wave reductions. +/// +/// The 64-wide lane indices to 8x8 remapping is performed as follows: +/// +/// 00 01 08 09 10 11 18 19 +/// 02 03 0a 0b 12 13 1a 1b +/// 04 05 0c 0d 14 15 1c 1d +/// 06 07 0e 0f 16 17 1e 1f +/// 20 21 28 29 30 31 38 39 +/// 22 23 2a 2b 32 33 3a 3b +/// 24 25 2c 2d 34 35 3c 3d +/// 26 27 2e 2f 36 37 3e 3f +/// +/// @param [in] a The input 1D coordinate to remap. +/// +/// @returns +/// The remapped 2D coordinates. +/// +/// @ingroup GPUCore +FfxUInt16x2 ffxRemapForWaveReductionHalf(FfxUInt32 a) +{ + return FfxUInt16x2(ffxBitfieldInsertMask(ffxBitfieldExtract(a, 2u, 3u), a, 1u), ffxBitfieldInsertMask(ffxBitfieldExtract(a, 3u, 3u), ffxBitfieldExtract(a, 1u, 2u), 2u)); +} + +#endif // FFX_HALF diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_portability.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_portability.h new file mode 100644 index 000000000..12147b9a7 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/ffx_core_portability.h @@ -0,0 +1,46 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +void ffxOpAAddOneF3(FFX_PARAMETER_OUT FfxFloat32x3 d, FfxFloat32x3 a, FfxFloat32 b) +{ + d = a + ffxBroadcast3(b); +} + +void ffxOpACpyF3(FFX_PARAMETER_OUT FfxFloat32x3 d, FfxFloat32x3 a) +{ + d = a; +} + +void ffxOpAMulF3(FFX_PARAMETER_OUT FfxFloat32x3 d, FfxFloat32x3 a, FfxFloat32x3 b) +{ + d = a * b; +} + +void ffxOpAMulOneF3(FFX_PARAMETER_OUT FfxFloat32x3 d, FfxFloat32x3 a, FfxFloat32 b) +{ + d = a * b; +} + +void ffxOpARcpF3(FFX_PARAMETER_OUT FfxFloat32x3 d, FfxFloat32x3 a) +{ + d = ffxReciprocal(a); +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr1/ffx_fsr1.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr1/ffx_fsr1.h new file mode 100644 index 000000000..82ebf21fe --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr1/ffx_fsr1.h @@ -0,0 +1,1252 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +/// @defgroup FfxGPUFsr1 FidelityFX FSR1 +/// FidelityFX Super Resolution 1 GPU documentation +/// +/// @ingroup FfxGPUEffects + +/// Setup required constant values for EASU (works on CPU or GPU). +/// +/// @param [out] con0 +/// @param [out] con1 +/// @param [out] con2 +/// @param [out] con3 +/// @param [in] inputViewportInPixelsX The rendered image resolution being upscaled in X dimension. +/// @param [in] inputViewportInPixelsY The rendered image resolution being upscaled in Y dimension. +/// @param [in] inputSizeInPixelsX The resolution of the resource containing the input image (useful for dynamic resolution) in X dimension. +/// @param [in] inputSizeInPixelsY The resolution of the resource containing the input image (useful for dynamic resolution) in Y dimension. +/// @param [in] outputSizeInPixelsX The display resolution which the input image gets upscaled to in X dimension. +/// @param [in] outputSizeInPixelsY The display resolution which the input image gets upscaled to in Y dimension. +/// +/// @ingroup FfxGPUFsr1 +FFX_STATIC void ffxFsrPopulateEasuConstants( + FFX_PARAMETER_INOUT FfxUInt32x4 con0, + FFX_PARAMETER_INOUT FfxUInt32x4 con1, + FFX_PARAMETER_INOUT FfxUInt32x4 con2, + FFX_PARAMETER_INOUT FfxUInt32x4 con3, + FFX_PARAMETER_IN FfxFloat32 inputViewportInPixelsX, + FFX_PARAMETER_IN FfxFloat32 inputViewportInPixelsY, + FFX_PARAMETER_IN FfxFloat32 inputSizeInPixelsX, + FFX_PARAMETER_IN FfxFloat32 inputSizeInPixelsY, + FFX_PARAMETER_IN FfxFloat32 outputSizeInPixelsX, + FFX_PARAMETER_IN FfxFloat32 outputSizeInPixelsY) +{ + // Output integer position to a pixel position in viewport. + con0[0] = ffxAsUInt32(inputViewportInPixelsX * ffxReciprocal(outputSizeInPixelsX)); + con0[1] = ffxAsUInt32(inputViewportInPixelsY * ffxReciprocal(outputSizeInPixelsY)); + con0[2] = ffxAsUInt32(FfxFloat32(0.5) * inputViewportInPixelsX * ffxReciprocal(outputSizeInPixelsX) - FfxFloat32(0.5)); + con0[3] = ffxAsUInt32(FfxFloat32(0.5) * inputViewportInPixelsY * ffxReciprocal(outputSizeInPixelsY) - FfxFloat32(0.5)); + + // Viewport pixel position to normalized image space. + // This is used to get upper-left of 'F' tap. + con1[0] = ffxAsUInt32(ffxReciprocal(inputSizeInPixelsX)); + con1[1] = ffxAsUInt32(ffxReciprocal(inputSizeInPixelsY)); + + // Centers of gather4, first offset from upper-left of 'F'. + // +---+---+ + // | | | + // +--(0)--+ + // | b | c | + // +---F---+---+---+ + // | e | f | g | h | + // +--(1)--+--(2)--+ + // | i | j | k | l | + // +---+---+---+---+ + // | n | o | + // +--(3)--+ + // | | | + // +---+---+ + con1[2] = ffxAsUInt32(FfxFloat32(1.0) * ffxReciprocal(inputSizeInPixelsX)); + con1[3] = ffxAsUInt32(FfxFloat32(-1.0) * ffxReciprocal(inputSizeInPixelsY)); + + // These are from (0) instead of 'F'. + con2[0] = ffxAsUInt32(FfxFloat32(-1.0) * ffxReciprocal(inputSizeInPixelsX)); + con2[1] = ffxAsUInt32(FfxFloat32(2.0) * ffxReciprocal(inputSizeInPixelsY)); + con2[2] = ffxAsUInt32(FfxFloat32(1.0) * ffxReciprocal(inputSizeInPixelsX)); + con2[3] = ffxAsUInt32(FfxFloat32(2.0) * ffxReciprocal(inputSizeInPixelsY)); + con3[0] = ffxAsUInt32(FfxFloat32(0.0) * ffxReciprocal(inputSizeInPixelsX)); + con3[1] = ffxAsUInt32(FfxFloat32(4.0) * ffxReciprocal(inputSizeInPixelsY)); + con3[2] = con3[3] = 0; +} + +/// Setup required constant values for EASU (works on CPU or GPU). +/// +/// @param [out] con0 +/// @param [out] con1 +/// @param [out] con2 +/// @param [out] con3 +/// @param [in] inputViewportInPixelsX The resolution of the input in the X dimension. +/// @param [in] inputViewportInPixelsY The resolution of the input in the Y dimension. +/// @param [in] inputSizeInPixelsX The input size in pixels in the X dimension. +/// @param [in] inputSizeInPixelsY The input size in pixels in the Y dimension. +/// @param [in] outputSizeInPixelsX The output size in pixels in the X dimension. +/// @param [in] outputSizeInPixelsY The output size in pixels in the Y dimension. +/// @param [in] inputOffsetInPixelsX The input image offset in the X dimension into the resource containing it (useful for dynamic resolution). +/// @param [in] inputOffsetInPixelsY The input image offset in the Y dimension into the resource containing it (useful for dynamic resolution). +/// +/// @ingroup FfxGPUFsr1 +FFX_STATIC void ffxFsrPopulateEasuConstantsOffset( + FFX_PARAMETER_INOUT FfxUInt32x4 con0, + FFX_PARAMETER_INOUT FfxUInt32x4 con1, + FFX_PARAMETER_INOUT FfxUInt32x4 con2, + FFX_PARAMETER_INOUT FfxUInt32x4 con3, + FFX_PARAMETER_IN FfxFloat32 inputViewportInPixelsX, + FFX_PARAMETER_IN FfxFloat32 inputViewportInPixelsY, + FFX_PARAMETER_IN FfxFloat32 inputSizeInPixelsX, + FFX_PARAMETER_IN FfxFloat32 inputSizeInPixelsY, + FFX_PARAMETER_IN FfxFloat32 outputSizeInPixelsX, + FFX_PARAMETER_IN FfxFloat32 outputSizeInPixelsY, + FFX_PARAMETER_IN FfxFloat32 inputOffsetInPixelsX, + FFX_PARAMETER_IN FfxFloat32 inputOffsetInPixelsY) +{ + ffxFsrPopulateEasuConstants( + con0, + con1, + con2, + con3, + inputViewportInPixelsX, + inputViewportInPixelsY, + inputSizeInPixelsX, + inputSizeInPixelsY, + outputSizeInPixelsX, + outputSizeInPixelsY); + + // override + con0[2] = ffxAsUInt32(FfxFloat32(0.5) * inputViewportInPixelsX * ffxReciprocal(outputSizeInPixelsX) - FfxFloat32(0.5) + inputOffsetInPixelsX); + con0[3] = ffxAsUInt32(FfxFloat32(0.5) * inputViewportInPixelsY * ffxReciprocal(outputSizeInPixelsY) - FfxFloat32(0.5) + inputOffsetInPixelsY); +} + +#if defined(FFX_GPU) && defined(FFX_FSR_EASU_FLOAT) +// Input callback prototypes, need to be implemented by calling shader +FfxFloat32x4 FsrEasuRF(FfxFloat32x2 p); +FfxFloat32x4 FsrEasuGF(FfxFloat32x2 p); +FfxFloat32x4 FsrEasuBF(FfxFloat32x2 p); + +// Filtering for a given tap for the scalar. +void fsrEasuTapFloat( + FFX_PARAMETER_INOUT FfxFloat32x3 accumulatedColor, // Accumulated color, with negative lobe. + FFX_PARAMETER_INOUT FfxFloat32 accumulatedWeight, // Accumulated weight. + FFX_PARAMETER_IN FfxFloat32x2 pixelOffset, // Pixel offset from resolve position to tap. + FFX_PARAMETER_IN FfxFloat32x2 gradientDirection, // Gradient direction. + FFX_PARAMETER_IN FfxFloat32x2 length, // Length. + FFX_PARAMETER_IN FfxFloat32 negativeLobeStrength, // Negative lobe strength. + FFX_PARAMETER_IN FfxFloat32 clippingPoint, // Clipping point. + FFX_PARAMETER_IN FfxFloat32x3 color) // Tap color. +{ + // Rotate offset by direction. + FfxFloat32x2 rotatedOffset; + rotatedOffset.x = (pixelOffset.x * (gradientDirection.x)) + (pixelOffset.y * gradientDirection.y); + rotatedOffset.y = (pixelOffset.x * (-gradientDirection.y)) + (pixelOffset.y * gradientDirection.x); + + // Anisotropy. + rotatedOffset *= length; + + // Compute distance^2. + FfxFloat32 distanceSquared = rotatedOffset.x * rotatedOffset.x + rotatedOffset.y * rotatedOffset.y; + + // Limit to the window as at corner, 2 taps can easily be outside. + distanceSquared = ffxMin(distanceSquared, clippingPoint); + + // Approximation of lancos2 without sin() or rcp(), or sqrt() to get x. + // (25/16 * (2/5 * x^2 - 1)^2 - (25/16 - 1)) * (1/4 * x^2 - 1)^2 + // |_______________________________________| |_______________| + // base window + // The general form of the 'base' is, + // (a*(b*x^2-1)^2-(a-1)) + // Where 'a=1/(2*b-b^2)' and 'b' moves around the negative lobe. + FfxFloat32 weightB = FfxFloat32(2.0 / 5.0) * distanceSquared + FfxFloat32(-1.0); + FfxFloat32 weightA = negativeLobeStrength * distanceSquared + FfxFloat32(-1.0); + weightB *= weightB; + weightA *= weightA; + weightB = FfxFloat32(25.0 / 16.0) * weightB + FfxFloat32(-(25.0 / 16.0 - 1.0)); + FfxFloat32 weight = weightB * weightA; + + // Do weighted average. + accumulatedColor += color * weight; + accumulatedWeight += weight; +} + +// Accumulate direction and length. +void fsrEasuSetFloat( + FFX_PARAMETER_INOUT FfxFloat32x2 direction, + FFX_PARAMETER_INOUT FfxFloat32 length, + FFX_PARAMETER_IN FfxFloat32x2 pp, + FFX_PARAMETER_IN FfxBoolean biS, + FFX_PARAMETER_IN FfxBoolean biT, + FFX_PARAMETER_IN FfxBoolean biU, + FFX_PARAMETER_IN FfxBoolean biV, + FFX_PARAMETER_IN FfxFloat32 lA, + FFX_PARAMETER_IN FfxFloat32 lB, + FFX_PARAMETER_IN FfxFloat32 lC, + FFX_PARAMETER_IN FfxFloat32 lD, + FFX_PARAMETER_IN FfxFloat32 lE) +{ + // Compute bilinear weight, branches factor out as predicates are compiler time immediates. + // s t + // u v + FfxFloat32 weight = FfxFloat32(0.0); + if (biS) + weight = (FfxFloat32(1.0) - pp.x) * (FfxFloat32(1.0) - pp.y); + if (biT) + weight = pp.x * (FfxFloat32(1.0) - pp.y); + if (biU) + weight = (FfxFloat32(1.0) - pp.x) * pp.y; + if (biV) + weight = pp.x * pp.y; + + // Direction is the '+' diff. + // a + // b c d + // e + // Then takes magnitude from abs average of both sides of 'c'. + // Length converts gradient reversal to 0, smoothly to non-reversal at 1, shaped, then adding horz and vert terms. + FfxFloat32 dc = lD - lC; + FfxFloat32 cb = lC - lB; + FfxFloat32 lengthX = max(abs(dc), abs(cb)); + lengthX = ffxApproximateReciprocal(lengthX); + FfxFloat32 directionX = lD - lB; + direction.x += directionX * weight; + lengthX = ffxSaturate(abs(directionX) * lengthX); + lengthX *= lengthX; + length += lengthX * weight; + + // Repeat for the y axis. + FfxFloat32 ec = lE - lC; + FfxFloat32 ca = lC - lA; + FfxFloat32 lengthY = max(abs(ec), abs(ca)); + lengthY = ffxApproximateReciprocal(lengthY); + FfxFloat32 directionY = lE - lA; + direction.y += directionY * weight; + lengthY = ffxSaturate(abs(directionY) * lengthY); + lengthY *= lengthY; + length += lengthY * weight; +} + +/// Apply edge-aware spatial upsampling using 32bit floating point precision calculations. +/// +/// @param [out] outPixel The computed color of a pixel. +/// @param [in] integerPosition Integer pixel position within the output. +/// @param [in] con0 The first constant value generated by ffxFsrPopulateEasuConstants. +/// @param [in] con1 The second constant value generated by ffxFsrPopulateEasuConstants. +/// @param [in] con2 The third constant value generated by ffxFsrPopulateEasuConstants. +/// @param [in] con3 The fourth constant value generated by ffxFsrPopulateEasuConstants. +/// +/// @ingroup FSR +void ffxFsrEasuFloat( + FFX_PARAMETER_OUT FfxFloat32x3 pix, + FFX_PARAMETER_IN FfxUInt32x2 ip, + FFX_PARAMETER_IN FfxUInt32x4 con0, + FFX_PARAMETER_IN FfxUInt32x4 con1, + FFX_PARAMETER_IN FfxUInt32x4 con2, + FFX_PARAMETER_IN FfxUInt32x4 con3) +{ + // Get position of 'f'. + FfxFloat32x2 pp = FfxFloat32x2(ip) * ffxAsFloat(con0.xy) + ffxAsFloat(con0.zw); + FfxFloat32x2 fp = floor(pp); + pp -= fp; + + // 12-tap kernel. + // b c + // e f g h + // i j k l + // n o + // Gather 4 ordering. + // a b + // r g + // For packed FP16, need either {rg} or {ab} so using the following setup for gather in all versions, + // a b <- unused (z) + // r g + // a b a b + // r g r g + // a b + // r g <- unused (z) + // Allowing dead-code removal to remove the 'z's. + FfxFloat32x2 p0 = fp * ffxAsFloat(con1.xy) + ffxAsFloat(con1.zw); + + // These are from p0 to avoid pulling two constants on pre-Navi hardware. + FfxFloat32x2 p1 = p0 + ffxAsFloat(con2.xy); + FfxFloat32x2 p2 = p0 + ffxAsFloat(con2.zw); + FfxFloat32x2 p3 = p0 + ffxAsFloat(con3.xy); + FfxFloat32x4 bczzR = FsrEasuRF(p0); + FfxFloat32x4 bczzG = FsrEasuGF(p0); + FfxFloat32x4 bczzB = FsrEasuBF(p0); + FfxFloat32x4 ijfeR = FsrEasuRF(p1); + FfxFloat32x4 ijfeG = FsrEasuGF(p1); + FfxFloat32x4 ijfeB = FsrEasuBF(p1); + FfxFloat32x4 klhgR = FsrEasuRF(p2); + FfxFloat32x4 klhgG = FsrEasuGF(p2); + FfxFloat32x4 klhgB = FsrEasuBF(p2); + FfxFloat32x4 zzonR = FsrEasuRF(p3); + FfxFloat32x4 zzonG = FsrEasuGF(p3); + FfxFloat32x4 zzonB = FsrEasuBF(p3); + + // Simplest multi-channel approximate luma possible (luma times 2, in 2 FMA/MAD). + FfxFloat32x4 bczzL = bczzB * ffxBroadcast4(0.5) + (bczzR * ffxBroadcast4(0.5) + bczzG); + FfxFloat32x4 ijfeL = ijfeB * ffxBroadcast4(0.5) + (ijfeR * ffxBroadcast4(0.5) + ijfeG); + FfxFloat32x4 klhgL = klhgB * ffxBroadcast4(0.5) + (klhgR * ffxBroadcast4(0.5) + klhgG); + FfxFloat32x4 zzonL = zzonB * ffxBroadcast4(0.5) + (zzonR * ffxBroadcast4(0.5) + zzonG); + + // Rename. + FfxFloat32 bL = bczzL.x; + FfxFloat32 cL = bczzL.y; + FfxFloat32 iL = ijfeL.x; + FfxFloat32 jL = ijfeL.y; + FfxFloat32 fL = ijfeL.z; + FfxFloat32 eL = ijfeL.w; + FfxFloat32 kL = klhgL.x; + FfxFloat32 lL = klhgL.y; + FfxFloat32 hL = klhgL.z; + FfxFloat32 gL = klhgL.w; + FfxFloat32 oL = zzonL.z; + FfxFloat32 nL = zzonL.w; + + // Accumulate for bilinear interpolation. + FfxFloat32x2 dir = ffxBroadcast2(0.0); + FfxFloat32 len = FfxFloat32(0.0); + fsrEasuSetFloat(dir, len, pp, FFX_TRUE, FFX_FALSE, FFX_FALSE, FFX_FALSE, bL, eL, fL, gL, jL); + fsrEasuSetFloat(dir, len, pp, FFX_FALSE, FFX_TRUE, FFX_FALSE, FFX_FALSE, cL, fL, gL, hL, kL); + fsrEasuSetFloat(dir, len, pp, FFX_FALSE, FFX_FALSE, FFX_TRUE, FFX_FALSE, fL, iL, jL, kL, nL); + fsrEasuSetFloat(dir, len, pp, FFX_FALSE, FFX_FALSE, FFX_FALSE, FFX_TRUE, gL, jL, kL, lL, oL); + + // Normalize with approximation, and cleanup close to zero. + FfxFloat32x2 dir2 = dir * dir; + FfxFloat32 dirR = dir2.x + dir2.y; + FfxBoolean zro = dirR < FfxFloat32(1.0 / 32768.0); + dirR = ffxApproximateReciprocalSquareRoot(dirR); + dirR = zro ? FfxFloat32(1.0) : dirR; + dir.x = zro ? FfxFloat32(1.0) : dir.x; + dir *= ffxBroadcast2(dirR); + + // Transform from {0 to 2} to {0 to 1} range, and shape with square. + len = len * FfxFloat32(0.5); + len *= len; + + // Stretch kernel {1.0 vert|horz, to sqrt(2.0) on diagonal}. + FfxFloat32 stretch = (dir.x * dir.x + dir.y * dir.y) * ffxApproximateReciprocal(max(abs(dir.x), abs(dir.y))); + + // Anisotropic length after rotation, + // x := 1.0 lerp to 'stretch' on edges + // y := 1.0 lerp to 2x on edges + FfxFloat32x2 len2 = FfxFloat32x2(FfxFloat32(1.0) + (stretch - FfxFloat32(1.0)) * len, FfxFloat32(1.0) + FfxFloat32(-0.5) * len); + + // Based on the amount of 'edge', + // the window shifts from +/-{sqrt(2.0) to slightly beyond 2.0}. + FfxFloat32 lob = FfxFloat32(0.5) + FfxFloat32((1.0 / 4.0 - 0.04) - 0.5) * len; + + // Set distance^2 clipping point to the end of the adjustable window. + FfxFloat32 clp = ffxApproximateReciprocal(lob); + + // Accumulation mixed with min/max of 4 nearest. + // b c + // e f g h + // i j k l + // n o + FfxFloat32x3 min4 = + ffxMin(ffxMin3(FfxFloat32x3(ijfeR.z, ijfeG.z, ijfeB.z), FfxFloat32x3(klhgR.w, klhgG.w, klhgB.w), FfxFloat32x3(ijfeR.y, ijfeG.y, ijfeB.y)), + FfxFloat32x3(klhgR.x, klhgG.x, klhgB.x)); + FfxFloat32x3 max4 = + max(ffxMax3(FfxFloat32x3(ijfeR.z, ijfeG.z, ijfeB.z), FfxFloat32x3(klhgR.w, klhgG.w, klhgB.w), FfxFloat32x3(ijfeR.y, ijfeG.y, ijfeB.y)), FfxFloat32x3(klhgR.x, klhgG.x, klhgB.x)); + + // Accumulation. + FfxFloat32x3 aC = ffxBroadcast3(0.0); + FfxFloat32 aW = FfxFloat32(0.0); + fsrEasuTapFloat(aC, aW, FfxFloat32x2(0.0, -1.0) - pp, dir, len2, lob, clp, FfxFloat32x3(bczzR.x, bczzG.x, bczzB.x)); // b + fsrEasuTapFloat(aC, aW, FfxFloat32x2(1.0, -1.0) - pp, dir, len2, lob, clp, FfxFloat32x3(bczzR.y, bczzG.y, bczzB.y)); // c + fsrEasuTapFloat(aC, aW, FfxFloat32x2(-1.0, 1.0) - pp, dir, len2, lob, clp, FfxFloat32x3(ijfeR.x, ijfeG.x, ijfeB.x)); // i + fsrEasuTapFloat(aC, aW, FfxFloat32x2(0.0, 1.0) - pp, dir, len2, lob, clp, FfxFloat32x3(ijfeR.y, ijfeG.y, ijfeB.y)); // j + fsrEasuTapFloat(aC, aW, FfxFloat32x2(0.0, 0.0) - pp, dir, len2, lob, clp, FfxFloat32x3(ijfeR.z, ijfeG.z, ijfeB.z)); // f + fsrEasuTapFloat(aC, aW, FfxFloat32x2(-1.0, 0.0) - pp, dir, len2, lob, clp, FfxFloat32x3(ijfeR.w, ijfeG.w, ijfeB.w)); // e + fsrEasuTapFloat(aC, aW, FfxFloat32x2(1.0, 1.0) - pp, dir, len2, lob, clp, FfxFloat32x3(klhgR.x, klhgG.x, klhgB.x)); // k + fsrEasuTapFloat(aC, aW, FfxFloat32x2(2.0, 1.0) - pp, dir, len2, lob, clp, FfxFloat32x3(klhgR.y, klhgG.y, klhgB.y)); // l + fsrEasuTapFloat(aC, aW, FfxFloat32x2(2.0, 0.0) - pp, dir, len2, lob, clp, FfxFloat32x3(klhgR.z, klhgG.z, klhgB.z)); // h + fsrEasuTapFloat(aC, aW, FfxFloat32x2(1.0, 0.0) - pp, dir, len2, lob, clp, FfxFloat32x3(klhgR.w, klhgG.w, klhgB.w)); // g + fsrEasuTapFloat(aC, aW, FfxFloat32x2(1.0, 2.0) - pp, dir, len2, lob, clp, FfxFloat32x3(zzonR.z, zzonG.z, zzonB.z)); // o + fsrEasuTapFloat(aC, aW, FfxFloat32x2(0.0, 2.0) - pp, dir, len2, lob, clp, FfxFloat32x3(zzonR.w, zzonG.w, zzonB.w)); // n + + // Normalize and dering. + pix = ffxMin(max4, max(min4, aC * ffxBroadcast3(ffxReciprocal(aW)))); +} +#endif // #if defined(FFX_GPU) && defined(FFX_FSR_EASU_FLOAT) + +#if defined(FFX_GPU) && FFX_HALF == 1 && defined(FFX_FSR_EASU_HALF) +// Input callback prototypes, need to be implemented by calling shader +FfxFloat16x4 FsrEasuRH(FfxFloat32x2 p); +FfxFloat16x4 FsrEasuGH(FfxFloat32x2 p); +FfxFloat16x4 FsrEasuBH(FfxFloat32x2 p); + +// This runs 2 taps in parallel. +void FsrEasuTapH( + FFX_PARAMETER_INOUT FfxFloat16x2 aCR, + FFX_PARAMETER_INOUT FfxFloat16x2 aCG, + FFX_PARAMETER_INOUT FfxFloat16x2 aCB, + FFX_PARAMETER_INOUT FfxFloat16x2 aW, + FFX_PARAMETER_IN FfxFloat16x2 offX, + FFX_PARAMETER_IN FfxFloat16x2 offY, + FFX_PARAMETER_IN FfxFloat16x2 dir, + FFX_PARAMETER_IN FfxFloat16x2 len, + FFX_PARAMETER_IN FfxFloat16 lob, + FFX_PARAMETER_IN FfxFloat16 clp, + FFX_PARAMETER_IN FfxFloat16x2 cR, + FFX_PARAMETER_IN FfxFloat16x2 cG, + FFX_PARAMETER_IN FfxFloat16x2 cB) +{ + FfxFloat16x2 vX, vY; + vX = offX * dir.xx + offY * dir.yy; + vY = offX * (-dir.yy) + offY * dir.xx; + vX *= len.x; + vY *= len.y; + FfxFloat16x2 d2 = vX * vX + vY * vY; + d2 = min(d2, FFX_BROADCAST_FLOAT16X2(clp)); + FfxFloat16x2 wB = FFX_BROADCAST_FLOAT16X2(2.0 / 5.0) * d2 + FFX_BROADCAST_FLOAT16X2(-1.0); + FfxFloat16x2 wA = FFX_BROADCAST_FLOAT16X2(lob) * d2 + FFX_BROADCAST_FLOAT16X2(-1.0); + wB *= wB; + wA *= wA; + wB = FFX_BROADCAST_FLOAT16X2(25.0 / 16.0) * wB + FFX_BROADCAST_FLOAT16X2(-(25.0 / 16.0 - 1.0)); + FfxFloat16x2 w = wB * wA; + aCR += cR * w; + aCG += cG * w; + aCB += cB * w; + aW += w; +} + +// This runs 2 taps in parallel. +void FsrEasuSetH( + FFX_PARAMETER_INOUT FfxFloat16x2 dirPX, + FFX_PARAMETER_INOUT FfxFloat16x2 dirPY, + FFX_PARAMETER_INOUT FfxFloat16x2 lenP, + FFX_PARAMETER_IN FfxFloat16x2 pp, + FFX_PARAMETER_IN FfxBoolean biST, + FFX_PARAMETER_IN FfxBoolean biUV, + FFX_PARAMETER_IN FfxFloat16x2 lA, + FFX_PARAMETER_IN FfxFloat16x2 lB, + FFX_PARAMETER_IN FfxFloat16x2 lC, + FFX_PARAMETER_IN FfxFloat16x2 lD, + FFX_PARAMETER_IN FfxFloat16x2 lE) +{ + FfxFloat16x2 w = FFX_BROADCAST_FLOAT16X2(0.0); + + if (biST) + w = (FfxFloat16x2(1.0, 0.0) + FfxFloat16x2(-pp.x, pp.x)) * FFX_BROADCAST_FLOAT16X2(FFX_BROADCAST_FLOAT16(1.0) - pp.y); + + if (biUV) + w = (FfxFloat16x2(1.0, 0.0) + FfxFloat16x2(-pp.x, pp.x)) * FFX_BROADCAST_FLOAT16X2(pp.y); + + // ABS is not free in the packed FP16 path. + FfxFloat16x2 dc = lD - lC; + FfxFloat16x2 cb = lC - lB; + FfxFloat16x2 lenX = max(abs(dc), abs(cb)); + lenX = ffxReciprocalHalf(lenX); + + FfxFloat16x2 dirX = lD - lB; + dirPX += dirX * w; + lenX = ffxSaturate(abs(dirX) * lenX); + lenX *= lenX; + lenP += lenX * w; + FfxFloat16x2 ec = lE - lC; + FfxFloat16x2 ca = lC - lA; + FfxFloat16x2 lenY = max(abs(ec), abs(ca)); + lenY = ffxReciprocalHalf(lenY); + FfxFloat16x2 dirY = lE - lA; + dirPY += dirY * w; + lenY = ffxSaturate(abs(dirY) * lenY); + lenY *= lenY; + lenP += lenY * w; +} + +void FsrEasuH( + FFX_PARAMETER_OUT FfxFloat16x3 pix, + FFX_PARAMETER_IN FfxUInt32x2 ip, + FFX_PARAMETER_IN FfxUInt32x4 con0, + FFX_PARAMETER_IN FfxUInt32x4 con1, + FFX_PARAMETER_IN FfxUInt32x4 con2, + FFX_PARAMETER_IN FfxUInt32x4 con3) +{ + FfxFloat32x2 pp = FfxFloat32x2(ip) * ffxAsFloat(con0.xy) + ffxAsFloat(con0.zw); + FfxFloat32x2 fp = floor(pp); + pp -= fp; + FfxFloat16x2 ppp = FfxFloat16x2(pp); + + FfxFloat32x2 p0 = fp * ffxAsFloat(con1.xy) + ffxAsFloat(con1.zw); + FfxFloat32x2 p1 = p0 + ffxAsFloat(con2.xy); + FfxFloat32x2 p2 = p0 + ffxAsFloat(con2.zw); + FfxFloat32x2 p3 = p0 + ffxAsFloat(con3.xy); + FfxFloat16x4 bczzR = FsrEasuRH(p0); + FfxFloat16x4 bczzG = FsrEasuGH(p0); + FfxFloat16x4 bczzB = FsrEasuBH(p0); + FfxFloat16x4 ijfeR = FsrEasuRH(p1); + FfxFloat16x4 ijfeG = FsrEasuGH(p1); + FfxFloat16x4 ijfeB = FsrEasuBH(p1); + FfxFloat16x4 klhgR = FsrEasuRH(p2); + FfxFloat16x4 klhgG = FsrEasuGH(p2); + FfxFloat16x4 klhgB = FsrEasuBH(p2); + FfxFloat16x4 zzonR = FsrEasuRH(p3); + FfxFloat16x4 zzonG = FsrEasuGH(p3); + FfxFloat16x4 zzonB = FsrEasuBH(p3); + + FfxFloat16x4 bczzL = bczzB * FFX_BROADCAST_FLOAT16X4(0.5) + (bczzR * FFX_BROADCAST_FLOAT16X4(0.5) + bczzG); + FfxFloat16x4 ijfeL = ijfeB * FFX_BROADCAST_FLOAT16X4(0.5) + (ijfeR * FFX_BROADCAST_FLOAT16X4(0.5) + ijfeG); + FfxFloat16x4 klhgL = klhgB * FFX_BROADCAST_FLOAT16X4(0.5) + (klhgR * FFX_BROADCAST_FLOAT16X4(0.5) + klhgG); + FfxFloat16x4 zzonL = zzonB * FFX_BROADCAST_FLOAT16X4(0.5) + (zzonR * FFX_BROADCAST_FLOAT16X4(0.5) + zzonG); + FfxFloat16 bL = bczzL.x; + FfxFloat16 cL = bczzL.y; + FfxFloat16 iL = ijfeL.x; + FfxFloat16 jL = ijfeL.y; + FfxFloat16 fL = ijfeL.z; + FfxFloat16 eL = ijfeL.w; + FfxFloat16 kL = klhgL.x; + FfxFloat16 lL = klhgL.y; + FfxFloat16 hL = klhgL.z; + FfxFloat16 gL = klhgL.w; + FfxFloat16 oL = zzonL.z; + FfxFloat16 nL = zzonL.w; + + // This part is different, accumulating 2 taps in parallel. + FfxFloat16x2 dirPX = FFX_BROADCAST_FLOAT16X2(0.0); + FfxFloat16x2 dirPY = FFX_BROADCAST_FLOAT16X2(0.0); + FfxFloat16x2 lenP = FFX_BROADCAST_FLOAT16X2(0.0); + FsrEasuSetH(dirPX, + dirPY, + lenP, + ppp, + FfxBoolean(true), + FfxBoolean(false), + FfxFloat16x2(bL, cL), + FfxFloat16x2(eL, fL), + FfxFloat16x2(fL, gL), + FfxFloat16x2(gL, hL), + FfxFloat16x2(jL, kL)); + FsrEasuSetH(dirPX, + dirPY, + lenP, + ppp, + FfxBoolean(false), + FfxBoolean(true), + FfxFloat16x2(fL, gL), + FfxFloat16x2(iL, jL), + FfxFloat16x2(jL, kL), + FfxFloat16x2(kL, lL), + FfxFloat16x2(nL, oL)); + FfxFloat16x2 dir = FfxFloat16x2(dirPX.r + dirPX.g, dirPY.r + dirPY.g); + FfxFloat16 len = lenP.r + lenP.g; + + FfxFloat16x2 dir2 = dir * dir; + FfxFloat16 dirR = dir2.x + dir2.y; + FfxUInt32 zro = FfxUInt32(dirR < FFX_BROADCAST_FLOAT16(1.0 / 32768.0)); + dirR = ffxApproximateReciprocalSquareRootHalf(dirR); + dirR = (zro > 0) ? FFX_BROADCAST_FLOAT16(1.0) : dirR; + dir.x = (zro > 0) ? FFX_BROADCAST_FLOAT16(1.0) : dir.x; + dir *= FFX_BROADCAST_FLOAT16X2(dirR); + len = len * FFX_BROADCAST_FLOAT16(0.5); + len *= len; + FfxFloat16 stretch = (dir.x * dir.x + dir.y * dir.y) * ffxApproximateReciprocalHalf(max(abs(dir.x), abs(dir.y))); + FfxFloat16x2 len2 = + FfxFloat16x2(FFX_BROADCAST_FLOAT16(1.0) + (stretch - FFX_BROADCAST_FLOAT16(1.0)) * len, FFX_BROADCAST_FLOAT16(1.0) + FFX_BROADCAST_FLOAT16(-0.5) * len); + FfxFloat16 lob = FFX_BROADCAST_FLOAT16(0.5) + FFX_BROADCAST_FLOAT16((1.0 / 4.0 - 0.04) - 0.5) * len; + FfxFloat16 clp = ffxApproximateReciprocalHalf(lob); + + // FP16 is different, using packed trick to do min and max in same operation. + FfxFloat16x2 bothR = + max(max(FfxFloat16x2(-ijfeR.z, ijfeR.z), FfxFloat16x2(-klhgR.w, klhgR.w)), max(FfxFloat16x2(-ijfeR.y, ijfeR.y), FfxFloat16x2(-klhgR.x, klhgR.x))); + FfxFloat16x2 bothG = + max(max(FfxFloat16x2(-ijfeG.z, ijfeG.z), FfxFloat16x2(-klhgG.w, klhgG.w)), max(FfxFloat16x2(-ijfeG.y, ijfeG.y), FfxFloat16x2(-klhgG.x, klhgG.x))); + FfxFloat16x2 bothB = + max(max(FfxFloat16x2(-ijfeB.z, ijfeB.z), FfxFloat16x2(-klhgB.w, klhgB.w)), max(FfxFloat16x2(-ijfeB.y, ijfeB.y), FfxFloat16x2(-klhgB.x, klhgB.x))); + + // This part is different for FP16, working pairs of taps at a time. + FfxFloat16x2 pR = FFX_BROADCAST_FLOAT16X2(0.0); + FfxFloat16x2 pG = FFX_BROADCAST_FLOAT16X2(0.0); + FfxFloat16x2 pB = FFX_BROADCAST_FLOAT16X2(0.0); + FfxFloat16x2 pW = FFX_BROADCAST_FLOAT16X2(0.0); + FsrEasuTapH(pR, pG, pB, pW, FfxFloat16x2(0.0, 1.0) - ppp.xx, FfxFloat16x2(-1.0, -1.0) - ppp.yy, dir, len2, lob, clp, bczzR.xy, bczzG.xy, bczzB.xy); + FsrEasuTapH(pR, pG, pB, pW, FfxFloat16x2(-1.0, 0.0) - ppp.xx, FfxFloat16x2(1.0, 1.0) - ppp.yy, dir, len2, lob, clp, ijfeR.xy, ijfeG.xy, ijfeB.xy); + FsrEasuTapH(pR, pG, pB, pW, FfxFloat16x2(0.0, -1.0) - ppp.xx, FfxFloat16x2(0.0, 0.0) - ppp.yy, dir, len2, lob, clp, ijfeR.zw, ijfeG.zw, ijfeB.zw); + FsrEasuTapH(pR, pG, pB, pW, FfxFloat16x2(1.0, 2.0) - ppp.xx, FfxFloat16x2(1.0, 1.0) - ppp.yy, dir, len2, lob, clp, klhgR.xy, klhgG.xy, klhgB.xy); + FsrEasuTapH(pR, pG, pB, pW, FfxFloat16x2(2.0, 1.0) - ppp.xx, FfxFloat16x2(0.0, 0.0) - ppp.yy, dir, len2, lob, clp, klhgR.zw, klhgG.zw, klhgB.zw); + FsrEasuTapH(pR, pG, pB, pW, FfxFloat16x2(1.0, 0.0) - ppp.xx, FfxFloat16x2(2.0, 2.0) - ppp.yy, dir, len2, lob, clp, zzonR.zw, zzonG.zw, zzonB.zw); + FfxFloat16x3 aC = FfxFloat16x3(pR.x + pR.y, pG.x + pG.y, pB.x + pB.y); + FfxFloat16 aW = pW.x + pW.y; + + // Slightly different for FP16 version due to combined min and max. + pix = min(FfxFloat16x3(bothR.y, bothG.y, bothB.y), max(-FfxFloat16x3(bothR.x, bothG.x, bothB.x), aC * FFX_BROADCAST_FLOAT16X3(ffxReciprocalHalf(aW)))); +} +#endif // #if defined(FFX_GPU) && defined(FFX_HALF) && defined(FFX_FSR_EASU_HALF) + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [RCAS] ROBUST CONTRAST ADAPTIVE SHARPENING +// +//------------------------------------------------------------------------------------------------------------------------------ +// CAS uses a simplified mechanism to convert local contrast into a variable amount of sharpness. +// RCAS uses a more exact mechanism, solving for the maximum local sharpness possible before clipping. +// RCAS also has a built in process to limit sharpening of what it detects as possible noise. +// RCAS sharper does not support scaling, as it should be applied after EASU scaling. +// Pass EASU output straight into RCAS, no color conversions necessary. +//------------------------------------------------------------------------------------------------------------------------------ +// RCAS is based on the following logic. +// RCAS uses a 5 tap filter in a cross pattern (same as CAS), +// w n +// w 1 w for taps w m e +// w s +// Where 'w' is the negative lobe weight. +// output = (w*(n+e+w+s)+m)/(4*w+1) +// RCAS solves for 'w' by seeing where the signal might clip out of the {0 to 1} input range, +// 0 == (w*(n+e+w+s)+m)/(4*w+1) -> w = -m/(n+e+w+s) +// 1 == (w*(n+e+w+s)+m)/(4*w+1) -> w = (1-m)/(n+e+w+s-4*1) +// Then chooses the 'w' which results in no clipping, limits 'w', and multiplies by the 'sharp' amount. +// This solution above has issues with MSAA input as the steps along the gradient cause edge detection issues. +// So RCAS uses 4x the maximum and 4x the minimum (depending on equation)in place of the individual taps. +// As well as switching from 'm' to either the minimum or maximum (depending on side), to help in energy conservation. +// This stabilizes RCAS. +// RCAS does a simple highpass which is normalized against the local contrast then shaped, +// 0.25 +// 0.25 -1 0.25 +// 0.25 +// This is used as a noise detection filter, to reduce the effect of RCAS on grain, and focus on real edges. +// +// GLSL example for the required callbacks : +// +// FfxFloat16x4 FsrRcasLoadH(FfxInt16x2 p){return FfxFloat16x4(imageLoad(imgSrc,FfxInt32x2(p)));} +// void FsrRcasInputH(inout FfxFloat16 r,inout FfxFloat16 g,inout FfxFloat16 b) +// { +// //do any simple input color conversions here or leave empty if none needed +// } +// +// FsrRcasCon need to be called from the CPU or GPU to set up constants. +// Including a GPU example here, the 'con' value would be stored out to a constant buffer. +// +// FfxUInt32x4 con; +// FsrRcasCon(con, +// 0.0); // The scale is {0.0 := maximum sharpness, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. +// --------------- +// RCAS sharpening supports a CAS-like pass-through alpha via, +// #define FSR_RCAS_PASSTHROUGH_ALPHA 1 +// RCAS also supports a define to enable a more expensive path to avoid some sharpening of noise. +// Would suggest it is better to apply film grain after RCAS sharpening (and after scaling) instead of using this define, +// #define FSR_RCAS_DENOISE 1 +//============================================================================================================================== +// This is set at the limit of providing unnatural results for sharpening. +#define FSR_RCAS_LIMIT (0.25-(1.0/16.0)) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// CONSTANT SETUP +//============================================================================================================================== +// Call to setup required constant values (works on CPU or GPU). + FFX_STATIC void FsrRcasCon(FfxUInt32x4 con, + // The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. + FfxFloat32 sharpness) + { + // Transform from stops to linear value. + sharpness = exp2(-sharpness); + FfxFloat32x2 hSharp = {sharpness, sharpness}; + con[0] = ffxAsUInt32(sharpness); + con[1] = ffxPackHalf2x16(hSharp); + con[2] = 0; + con[3] = 0; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// NON-PACKED 32-BIT VERSION +//============================================================================================================================== +#if defined(FFX_GPU)&&defined(FSR_RCAS_F) + // Input callback prototypes that need to be implemented by calling shader + FfxFloat32x4 FsrRcasLoadF(FfxInt32x2 p); + void FsrRcasInputF(inout FfxFloat32 r,inout FfxFloat32 g,inout FfxFloat32 b); +//------------------------------------------------------------------------------------------------------------------------------ + void FsrRcasF(out FfxFloat32 pixR, // Output values, non-vector so port between RcasFilter() and RcasFilterH() is easy. + out FfxFloat32 pixG, + out FfxFloat32 pixB, +#ifdef FSR_RCAS_PASSTHROUGH_ALPHA + out FfxFloat32 pixA, +#endif + FfxUInt32x2 ip, // Integer pixel position in output. + FfxUInt32x4 con) + { // Constant generated by RcasSetup(). + // Algorithm uses minimal 3x3 pixel neighborhood. + // b + // d e f + // h + FfxInt32x2 sp = FfxInt32x2(ip); + FfxFloat32x3 b = FsrRcasLoadF(sp + FfxInt32x2(0, -1)).rgb; + FfxFloat32x3 d = FsrRcasLoadF(sp + FfxInt32x2(-1, 0)).rgb; +#ifdef FSR_RCAS_PASSTHROUGH_ALPHA + FfxFloat32x4 ee = FsrRcasLoadF(sp); + FfxFloat32x3 e = ee.rgb; + pixA = ee.a; +#else + FfxFloat32x3 e = FsrRcasLoadF(sp).rgb; +#endif + FfxFloat32x3 f = FsrRcasLoadF(sp + FfxInt32x2(1, 0)).rgb; + FfxFloat32x3 h = FsrRcasLoadF(sp + FfxInt32x2(0, 1)).rgb; + // Rename (32-bit) or regroup (16-bit). + FfxFloat32 bR = b.r; + FfxFloat32 bG = b.g; + FfxFloat32 bB = b.b; + FfxFloat32 dR = d.r; + FfxFloat32 dG = d.g; + FfxFloat32 dB = d.b; + FfxFloat32 eR = e.r; + FfxFloat32 eG = e.g; + FfxFloat32 eB = e.b; + FfxFloat32 fR = f.r; + FfxFloat32 fG = f.g; + FfxFloat32 fB = f.b; + FfxFloat32 hR = h.r; + FfxFloat32 hG = h.g; + FfxFloat32 hB = h.b; + // Run optional input transform. + FsrRcasInputF(bR, bG, bB); + FsrRcasInputF(dR, dG, dB); + FsrRcasInputF(eR, eG, eB); + FsrRcasInputF(fR, fG, fB); + FsrRcasInputF(hR, hG, hB); + // Luma times 2. + FfxFloat32 bL = bB * FfxFloat32(0.5) + (bR * FfxFloat32(0.5) + bG); + FfxFloat32 dL = dB * FfxFloat32(0.5) + (dR * FfxFloat32(0.5) + dG); + FfxFloat32 eL = eB * FfxFloat32(0.5) + (eR * FfxFloat32(0.5) + eG); + FfxFloat32 fL = fB * FfxFloat32(0.5) + (fR * FfxFloat32(0.5) + fG); + FfxFloat32 hL = hB * FfxFloat32(0.5) + (hR * FfxFloat32(0.5) + hG); + // Noise detection. + FfxFloat32 nz = FfxFloat32(0.25) * bL + FfxFloat32(0.25) * dL + FfxFloat32(0.25) * fL + FfxFloat32(0.25) * hL - eL; + nz = ffxSaturate(abs(nz) * ffxApproximateReciprocalMedium(ffxMax3(ffxMax3(bL, dL, eL), fL, hL) - ffxMin3(ffxMin3(bL, dL, eL), fL, hL))); + nz = FfxFloat32(-0.5) * nz + FfxFloat32(1.0); + // Min and max of ring. + FfxFloat32 mn4R = ffxMin(ffxMin3(bR, dR, fR), hR); + FfxFloat32 mn4G = ffxMin(ffxMin3(bG, dG, fG), hG); + FfxFloat32 mn4B = ffxMin(ffxMin3(bB, dB, fB), hB); + FfxFloat32 mx4R = max(ffxMax3(bR, dR, fR), hR); + FfxFloat32 mx4G = max(ffxMax3(bG, dG, fG), hG); + FfxFloat32 mx4B = max(ffxMax3(bB, dB, fB), hB); + // Immediate constants for peak range. + FfxFloat32x2 peakC = FfxFloat32x2(1.0, -1.0 * 4.0); + // Limiters, these need to be high precision RCPs. + FfxFloat32 hitMinR = mn4R * ffxReciprocal(FfxFloat32(4.0) * mx4R); + FfxFloat32 hitMinG = mn4G * ffxReciprocal(FfxFloat32(4.0) * mx4G); + FfxFloat32 hitMinB = mn4B * ffxReciprocal(FfxFloat32(4.0) * mx4B); + FfxFloat32 hitMaxR = (peakC.x - mx4R) * ffxReciprocal(FfxFloat32(4.0) * mn4R + peakC.y); + FfxFloat32 hitMaxG = (peakC.x - mx4G) * ffxReciprocal(FfxFloat32(4.0) * mn4G + peakC.y); + FfxFloat32 hitMaxB = (peakC.x - mx4B) * ffxReciprocal(FfxFloat32(4.0) * mn4B + peakC.y); + FfxFloat32 lobeR = max(-hitMinR, hitMaxR); + FfxFloat32 lobeG = max(-hitMinG, hitMaxG); + FfxFloat32 lobeB = max(-hitMinB, hitMaxB); + FfxFloat32 lobe = max(FfxFloat32(-FSR_RCAS_LIMIT), ffxMin(ffxMax3(lobeR, lobeG, lobeB), FfxFloat32(0.0))) * ffxAsFloat + (con.x); + // Apply noise removal. +#ifdef FSR_RCAS_DENOISE + lobe *= nz; +#endif + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + FfxFloat32 rcpL = ffxApproximateReciprocalMedium(FfxFloat32(4.0) * lobe + FfxFloat32(1.0)); + pixR = (lobe * bR + lobe * dR + lobe * hR + lobe * fR + eR) * rcpL; + pixG = (lobe * bG + lobe * dG + lobe * hG + lobe * fG + eG) * rcpL; + pixB = (lobe * bB + lobe * dB + lobe * hB + lobe * fB + eB) * rcpL; + return; + } +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// NON-PACKED 16-BIT VERSION +//============================================================================================================================== +#if defined(FFX_GPU) && FFX_HALF == 1 && defined(FSR_RCAS_H) + // Input callback prototypes that need to be implemented by calling shader + FfxFloat16x4 FsrRcasLoadH(FfxInt16x2 p); + void FsrRcasInputH(inout FfxFloat16 r,inout FfxFloat16 g,inout FfxFloat16 b); +//------------------------------------------------------------------------------------------------------------------------------ + void FsrRcasH( + out FfxFloat16 pixR, // Output values, non-vector so port between RcasFilter() and RcasFilterH() is easy. + out FfxFloat16 pixG, + out FfxFloat16 pixB, + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + out FfxFloat16 pixA, + #endif + FfxUInt32x2 ip, // Integer pixel position in output. + FfxUInt32x4 con){ // Constant generated by RcasSetup(). + // Sharpening algorithm uses minimal 3x3 pixel neighborhood. + // b + // d e f + // h + FfxInt16x2 sp=FfxInt16x2(ip); + FfxFloat16x3 b=FsrRcasLoadH(sp+FfxInt16x2( 0,-1)).rgb; + FfxFloat16x3 d=FsrRcasLoadH(sp+FfxInt16x2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + FfxFloat16x4 ee=FsrRcasLoadH(sp); + FfxFloat16x3 e=ee.rgb;pixA=ee.a; + #else + FfxFloat16x3 e=FsrRcasLoadH(sp).rgb; + #endif + FfxFloat16x3 f=FsrRcasLoadH(sp+FfxInt16x2( 1, 0)).rgb; + FfxFloat16x3 h=FsrRcasLoadH(sp+FfxInt16x2( 0, 1)).rgb; + // Rename (32-bit) or regroup (16-bit). + FfxFloat16 bR=b.r; + FfxFloat16 bG=b.g; + FfxFloat16 bB=b.b; + FfxFloat16 dR=d.r; + FfxFloat16 dG=d.g; + FfxFloat16 dB=d.b; + FfxFloat16 eR=e.r; + FfxFloat16 eG=e.g; + FfxFloat16 eB=e.b; + FfxFloat16 fR=f.r; + FfxFloat16 fG=f.g; + FfxFloat16 fB=f.b; + FfxFloat16 hR=h.r; + FfxFloat16 hG=h.g; + FfxFloat16 hB=h.b; + // Run optional input transform. + FsrRcasInputH(bR,bG,bB); + FsrRcasInputH(dR,dG,dB); + FsrRcasInputH(eR,eG,eB); + FsrRcasInputH(fR,fG,fB); + FsrRcasInputH(hR,hG,hB); + // Luma times 2. + FfxFloat16 bL=bB*FFX_BROADCAST_FLOAT16(0.5)+(bR*FFX_BROADCAST_FLOAT16(0.5)+bG); + FfxFloat16 dL=dB*FFX_BROADCAST_FLOAT16(0.5)+(dR*FFX_BROADCAST_FLOAT16(0.5)+dG); + FfxFloat16 eL=eB*FFX_BROADCAST_FLOAT16(0.5)+(eR*FFX_BROADCAST_FLOAT16(0.5)+eG); + FfxFloat16 fL=fB*FFX_BROADCAST_FLOAT16(0.5)+(fR*FFX_BROADCAST_FLOAT16(0.5)+fG); + FfxFloat16 hL=hB*FFX_BROADCAST_FLOAT16(0.5)+(hR*FFX_BROADCAST_FLOAT16(0.5)+hG); + // Noise detection. + FfxFloat16 nz=FFX_BROADCAST_FLOAT16(0.25)*bL+FFX_BROADCAST_FLOAT16(0.25)*dL+FFX_BROADCAST_FLOAT16(0.25)*fL+FFX_BROADCAST_FLOAT16(0.25)*hL-eL; + nz=ffxSaturate(abs(nz)*ffxApproximateReciprocalMediumHalf(ffxMax3Half(ffxMax3Half(bL,dL,eL),fL,hL)-ffxMin3Half(ffxMin3Half(bL,dL,eL),fL,hL))); + nz=FFX_BROADCAST_FLOAT16(-0.5)*nz+FFX_BROADCAST_FLOAT16(1.0); + // Min and max of ring. + FfxFloat16 mn4R=min(ffxMin3Half(bR,dR,fR),hR); + FfxFloat16 mn4G=min(ffxMin3Half(bG,dG,fG),hG); + FfxFloat16 mn4B=min(ffxMin3Half(bB,dB,fB),hB); + FfxFloat16 mx4R=max(ffxMax3Half(bR,dR,fR),hR); + FfxFloat16 mx4G=max(ffxMax3Half(bG,dG,fG),hG); + FfxFloat16 mx4B=max(ffxMax3Half(bB,dB,fB),hB); + // Immediate constants for peak range. + FfxFloat16x2 peakC=FfxFloat16x2(1.0,-1.0*4.0); + // Limiters, these need to be high precision RCPs. + FfxFloat16 hitMinR=mn4R*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16(4.0)*mx4R); + FfxFloat16 hitMinG=mn4G*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16(4.0)*mx4G); + FfxFloat16 hitMinB=mn4B*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16(4.0)*mx4B); + FfxFloat16 hitMaxR=(peakC.x-mx4R)*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16(4.0)*mn4R+peakC.y); + FfxFloat16 hitMaxG=(peakC.x-mx4G)*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16(4.0)*mn4G+peakC.y); + FfxFloat16 hitMaxB=(peakC.x-mx4B)*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16(4.0)*mn4B+peakC.y); + FfxFloat16 lobeR=max(-hitMinR,hitMaxR); + FfxFloat16 lobeG=max(-hitMinG,hitMaxG); + FfxFloat16 lobeB=max(-hitMinB,hitMaxB); + FfxFloat16 lobe=max(FFX_BROADCAST_FLOAT16(-FSR_RCAS_LIMIT),min(ffxMax3Half(lobeR,lobeG,lobeB),FFX_BROADCAST_FLOAT16(0.0)))*FFX_UINT32_TO_FLOAT16X2(con.y).x; + // Apply noise removal. + #ifdef FSR_RCAS_DENOISE + lobe*=nz; + #endif + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + FfxFloat16 rcpL=ffxApproximateReciprocalMediumHalf(FFX_BROADCAST_FLOAT16(4.0)*lobe+FFX_BROADCAST_FLOAT16(1.0)); + pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL; + pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL; + pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL; +} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// PACKED 16-BIT VERSION +//============================================================================================================================== +#if defined(FFX_GPU)&& FFX_HALF == 1 && defined(FSR_RCAS_HX2) + // Input callback prototypes that need to be implemented by the calling shader + FfxFloat16x4 FsrRcasLoadHx2(FfxInt16x2 p); + void FsrRcasInputHx2(inout FfxFloat16x2 r,inout FfxFloat16x2 g,inout FfxFloat16x2 b); +//------------------------------------------------------------------------------------------------------------------------------ + // Can be used to convert from packed Structures of Arrays to Arrays of Structures for store. + void FsrRcasDepackHx2(out FfxFloat16x4 pix0,out FfxFloat16x4 pix1,FfxFloat16x2 pixR,FfxFloat16x2 pixG,FfxFloat16x2 pixB){ + #ifdef FFX_HLSL + // Invoke a slower path for DX only, since it won't allow uninitialized values. + pix0.a=pix1.a=0.0; + #endif + pix0.rgb=FfxFloat16x3(pixR.x,pixG.x,pixB.x); + pix1.rgb=FfxFloat16x3(pixR.y,pixG.y,pixB.y);} +//------------------------------------------------------------------------------------------------------------------------------ + void FsrRcasHx2( + // Output values are for 2 8x8 tiles in a 16x8 region. + // pix.x = left 8x8 tile + // pix.y = right 8x8 tile + // This enables later processing to easily be packed as well. + out FfxFloat16x2 pixR, + out FfxFloat16x2 pixG, + out FfxFloat16x2 pixB, + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + out FfxFloat16x2 pixA, + #endif + FfxUInt32x2 ip, // Integer pixel position in output. + FfxUInt32x4 con){ // Constant generated by RcasSetup(). + // No scaling algorithm uses minimal 3x3 pixel neighborhood. + FfxInt16x2 sp0=FfxInt16x2(ip); + FfxFloat16x3 b0=FsrRcasLoadHx2(sp0+FfxInt16x2( 0,-1)).rgb; + FfxFloat16x3 d0=FsrRcasLoadHx2(sp0+FfxInt16x2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + FfxFloat16x4 ee0=FsrRcasLoadHx2(sp0); + FfxFloat16x3 e0=ee0.rgb;pixA.r=ee0.a; + #else + FfxFloat16x3 e0=FsrRcasLoadHx2(sp0).rgb; + #endif + FfxFloat16x3 f0=FsrRcasLoadHx2(sp0+FfxInt16x2( 1, 0)).rgb; + FfxFloat16x3 h0=FsrRcasLoadHx2(sp0+FfxInt16x2( 0, 1)).rgb; + FfxInt16x2 sp1=sp0+FfxInt16x2(8,0); + FfxFloat16x3 b1=FsrRcasLoadHx2(sp1+FfxInt16x2( 0,-1)).rgb; + FfxFloat16x3 d1=FsrRcasLoadHx2(sp1+FfxInt16x2(-1, 0)).rgb; + #ifdef FSR_RCAS_PASSTHROUGH_ALPHA + FfxFloat16x4 ee1=FsrRcasLoadHx2(sp1); + FfxFloat16x3 e1=ee1.rgb;pixA.g=ee1.a; + #else + FfxFloat16x3 e1=FsrRcasLoadHx2(sp1).rgb; + #endif + FfxFloat16x3 f1=FsrRcasLoadHx2(sp1+FfxInt16x2( 1, 0)).rgb; + FfxFloat16x3 h1=FsrRcasLoadHx2(sp1+FfxInt16x2( 0, 1)).rgb; + // Arrays of Structures to Structures of Arrays conversion. + FfxFloat16x2 bR=FfxFloat16x2(b0.r,b1.r); + FfxFloat16x2 bG=FfxFloat16x2(b0.g,b1.g); + FfxFloat16x2 bB=FfxFloat16x2(b0.b,b1.b); + FfxFloat16x2 dR=FfxFloat16x2(d0.r,d1.r); + FfxFloat16x2 dG=FfxFloat16x2(d0.g,d1.g); + FfxFloat16x2 dB=FfxFloat16x2(d0.b,d1.b); + FfxFloat16x2 eR=FfxFloat16x2(e0.r,e1.r); + FfxFloat16x2 eG=FfxFloat16x2(e0.g,e1.g); + FfxFloat16x2 eB=FfxFloat16x2(e0.b,e1.b); + FfxFloat16x2 fR=FfxFloat16x2(f0.r,f1.r); + FfxFloat16x2 fG=FfxFloat16x2(f0.g,f1.g); + FfxFloat16x2 fB=FfxFloat16x2(f0.b,f1.b); + FfxFloat16x2 hR=FfxFloat16x2(h0.r,h1.r); + FfxFloat16x2 hG=FfxFloat16x2(h0.g,h1.g); + FfxFloat16x2 hB=FfxFloat16x2(h0.b,h1.b); + // Run optional input transform. + FsrRcasInputHx2(bR,bG,bB); + FsrRcasInputHx2(dR,dG,dB); + FsrRcasInputHx2(eR,eG,eB); + FsrRcasInputHx2(fR,fG,fB); + FsrRcasInputHx2(hR,hG,hB); + // Luma times 2. + FfxFloat16x2 bL=bB*FFX_BROADCAST_FLOAT16X2(0.5)+(bR*FFX_BROADCAST_FLOAT16X2(0.5)+bG); + FfxFloat16x2 dL=dB*FFX_BROADCAST_FLOAT16X2(0.5)+(dR*FFX_BROADCAST_FLOAT16X2(0.5)+dG); + FfxFloat16x2 eL=eB*FFX_BROADCAST_FLOAT16X2(0.5)+(eR*FFX_BROADCAST_FLOAT16X2(0.5)+eG); + FfxFloat16x2 fL=fB*FFX_BROADCAST_FLOAT16X2(0.5)+(fR*FFX_BROADCAST_FLOAT16X2(0.5)+fG); + FfxFloat16x2 hL=hB*FFX_BROADCAST_FLOAT16X2(0.5)+(hR*FFX_BROADCAST_FLOAT16X2(0.5)+hG); + // Noise detection. + FfxFloat16x2 nz=FFX_BROADCAST_FLOAT16X2(0.25)*bL+FFX_BROADCAST_FLOAT16X2(0.25)*dL+FFX_BROADCAST_FLOAT16X2(0.25)*fL+FFX_BROADCAST_FLOAT16X2(0.25)*hL-eL; + nz=ffxSaturate(abs(nz)*ffxApproximateReciprocalMediumHalf(ffxMax3Half(ffxMax3Half(bL,dL,eL),fL,hL)-ffxMin3Half(ffxMin3Half(bL,dL,eL),fL,hL))); + nz=FFX_BROADCAST_FLOAT16X2(-0.5)*nz+FFX_BROADCAST_FLOAT16X2(1.0); + // Min and max of ring. + FfxFloat16x2 mn4R=min(ffxMin3Half(bR,dR,fR),hR); + FfxFloat16x2 mn4G=min(ffxMin3Half(bG,dG,fG),hG); + FfxFloat16x2 mn4B=min(ffxMin3Half(bB,dB,fB),hB); + FfxFloat16x2 mx4R=max(ffxMax3Half(bR,dR,fR),hR); + FfxFloat16x2 mx4G=max(ffxMax3Half(bG,dG,fG),hG); + FfxFloat16x2 mx4B=max(ffxMax3Half(bB,dB,fB),hB); + // Immediate constants for peak range. + FfxFloat16x2 peakC=FfxFloat16x2(1.0,-1.0*4.0); + // Limiters, these need to be high precision RCPs. + FfxFloat16x2 hitMinR=mn4R*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16X2(4.0)*mx4R); + FfxFloat16x2 hitMinG=mn4G*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16X2(4.0)*mx4G); + FfxFloat16x2 hitMinB=mn4B*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16X2(4.0)*mx4B); + FfxFloat16x2 hitMaxR=(peakC.x-mx4R)*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16X2(4.0)*mn4R+peakC.y); + FfxFloat16x2 hitMaxG=(peakC.x-mx4G)*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16X2(4.0)*mn4G+peakC.y); + FfxFloat16x2 hitMaxB=(peakC.x-mx4B)*ffxReciprocalHalf(FFX_BROADCAST_FLOAT16X2(4.0)*mn4B+peakC.y); + FfxFloat16x2 lobeR=max(-hitMinR,hitMaxR); + FfxFloat16x2 lobeG=max(-hitMinG,hitMaxG); + FfxFloat16x2 lobeB=max(-hitMinB,hitMaxB); + FfxFloat16x2 lobe=max(FFX_BROADCAST_FLOAT16X2(-FSR_RCAS_LIMIT),min(ffxMax3Half(lobeR,lobeG,lobeB),FFX_BROADCAST_FLOAT16X2(0.0)))*FFX_BROADCAST_FLOAT16X2(FFX_UINT32_TO_FLOAT16X2(con.y).x); + // Apply noise removal. + #ifdef FSR_RCAS_DENOISE + lobe*=nz; + #endif + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + FfxFloat16x2 rcpL=ffxApproximateReciprocalMediumHalf(FFX_BROADCAST_FLOAT16X2(4.0)*lobe+FFX_BROADCAST_FLOAT16X2(1.0)); + pixR=(lobe*bR+lobe*dR+lobe*hR+lobe*fR+eR)*rcpL; + pixG=(lobe*bG+lobe*dG+lobe*hG+lobe*fG+eG)*rcpL; + pixB=(lobe*bB+lobe*dB+lobe*hB+lobe*fB+eB)*rcpL;} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [LFGA] LINEAR FILM GRAIN APPLICATOR +// +//------------------------------------------------------------------------------------------------------------------------------ +// Adding output-resolution film grain after scaling is a good way to mask both rendering and scaling artifacts. +// Suggest using tiled blue noise as film grain input, with peak noise frequency set for a specific look and feel. +// The 'Lfga*()' functions provide a convenient way to introduce grain. +// These functions limit grain based on distance to signal limits. +// This is done so that the grain is temporally energy preserving, and thus won't modify image tonality. +// Grain application should be done in a linear colorspace. +// The grain should be temporally changing, but have a temporal sum per pixel that adds to zero (non-biased). +//------------------------------------------------------------------------------------------------------------------------------ +// Usage, +// FsrLfga*( +// color, // In/out linear colorspace color {0 to 1} ranged. +// grain, // Per pixel grain texture value {-0.5 to 0.5} ranged, input is 3-channel to support colored grain. +// amount); // Amount of grain (0 to 1} ranged. +//------------------------------------------------------------------------------------------------------------------------------ +// Example if grain texture is monochrome: 'FsrLfgaF(color,ffxBroadcast3(grain),amount)' +//============================================================================================================================== +#if defined(FFX_GPU) + // Maximum grain is the minimum distance to the signal limit. + void FsrLfgaF(inout FfxFloat32x3 c, FfxFloat32x3 t, FfxFloat32 a) + { + c += (t * ffxBroadcast3(a)) * ffxMin(ffxBroadcast3(1.0) - c, c); + } +#endif +//============================================================================================================================== +#if defined(FFX_GPU)&& FFX_HALF == 1 + // Half precision version (slower). + void FsrLfgaH(inout FfxFloat16x3 c, FfxFloat16x3 t, FfxFloat16 a) + { + c += (t * FFX_BROADCAST_FLOAT16X3(a)) * min(FFX_BROADCAST_FLOAT16X3(1.0) - c, c); + } + //------------------------------------------------------------------------------------------------------------------------------ + // Packed half precision version (faster). + void FsrLfgaHx2(inout FfxFloat16x2 cR,inout FfxFloat16x2 cG,inout FfxFloat16x2 cB,FfxFloat16x2 tR,FfxFloat16x2 tG,FfxFloat16x2 tB,FfxFloat16 a){ + cR+=(tR*FFX_BROADCAST_FLOAT16X2(a))*min(FFX_BROADCAST_FLOAT16X2(1.0)-cR,cR);cG+=(tG*FFX_BROADCAST_FLOAT16X2(a))*min(FFX_BROADCAST_FLOAT16X2(1.0)-cG,cG);cB+=(tB*FFX_BROADCAST_FLOAT16X2(a))*min(FFX_BROADCAST_FLOAT16X2(1.0)-cB,cB);} +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [SRTM] SIMPLE REVERSIBLE TONE-MAPPER +// +//------------------------------------------------------------------------------------------------------------------------------ +// This provides a way to take linear HDR color {0 to FP16_MAX} and convert it into a temporary {0 to 1} ranged post-tonemapped linear. +// The tonemapper preserves RGB ratio, which helps maintain HDR color bleed during filtering. +//------------------------------------------------------------------------------------------------------------------------------ +// Reversible tonemapper usage, +// FsrSrtm*(color); // {0 to FP16_MAX} converted to {0 to 1}. +// FsrSrtmInv*(color); // {0 to 1} converted into {0 to 32768, output peak safe for FP16}. +//============================================================================================================================== +#if defined(FFX_GPU) + void FsrSrtmF(inout FfxFloat32x3 c) + { + c *= ffxBroadcast3(ffxReciprocal(ffxMax3(c.r, c.g, c.b) + FfxFloat32(1.0))); + } + // The extra max solves the c=1.0 case (which is a /0). + void FsrSrtmInvF(inout FfxFloat32x3 c){c*=ffxBroadcast3(ffxReciprocal(max(FfxFloat32(1.0/32768.0),FfxFloat32(1.0)-ffxMax3(c.r,c.g,c.b))));} +#endif +//============================================================================================================================== +#if defined(FFX_GPU )&& FFX_HALF == 1 + void FsrSrtmH(inout FfxFloat16x3 c) + { + c *= FFX_BROADCAST_FLOAT16X3(ffxReciprocalHalf(ffxMax3Half(c.r, c.g, c.b) + FFX_BROADCAST_FLOAT16(1.0))); + } + void FsrSrtmInvH(inout FfxFloat16x3 c) + { + c *= FFX_BROADCAST_FLOAT16X3(ffxReciprocalHalf(max(FFX_BROADCAST_FLOAT16(1.0 / 32768.0), FFX_BROADCAST_FLOAT16(1.0) - ffxMax3Half(c.r, c.g, c.b)))); + } + //------------------------------------------------------------------------------------------------------------------------------ + void FsrSrtmHx2(inout FfxFloat16x2 cR, inout FfxFloat16x2 cG, inout FfxFloat16x2 cB) + { + FfxFloat16x2 rcp = ffxReciprocalHalf(ffxMax3Half(cR, cG, cB) + FFX_BROADCAST_FLOAT16X2(1.0)); + cR *= rcp; + cG *= rcp; + cB *= rcp; + } + void FsrSrtmInvHx2(inout FfxFloat16x2 cR,inout FfxFloat16x2 cG,inout FfxFloat16x2 cB) + { + FfxFloat16x2 rcp=ffxReciprocalHalf(max(FFX_BROADCAST_FLOAT16X2(1.0/32768.0),FFX_BROADCAST_FLOAT16X2(1.0)-ffxMax3Half(cR,cG,cB))); + cR*=rcp; + cG*=rcp; + cB*=rcp; + } +#endif +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//_____________________________________________________________/\_______________________________________________________________ +//============================================================================================================================== +// +// FSR - [TEPD] TEMPORAL ENERGY PRESERVING DITHER +// +//------------------------------------------------------------------------------------------------------------------------------ +// Temporally energy preserving dithered {0 to 1} linear to gamma 2.0 conversion. +// Gamma 2.0 is used so that the conversion back to linear is just to square the color. +// The conversion comes in 8-bit and 10-bit modes, designed for output to 8-bit UNORM or 10:10:10:2 respectively. +// Given good non-biased temporal blue noise as dither input, +// the output dither will temporally conserve energy. +// This is done by choosing the linear nearest step point instead of perceptual nearest. +// See code below for details. +//------------------------------------------------------------------------------------------------------------------------------ +// DX SPEC RULES FOR FLOAT->UNORM 8-BIT CONVERSION +// =============================================== +// - Output is 'FfxUInt32(floor(saturate(n)*255.0+0.5))'. +// - Thus rounding is to nearest. +// - NaN gets converted to zero. +// - INF is clamped to {0.0 to 1.0}. +//============================================================================================================================== +#if defined(FFX_GPU) + // Hand tuned integer position to dither value, with more values than simple checkerboard. + // Only 32-bit has enough precision for this compddation. + // Output is {0 to <1}. + FfxFloat32 FsrTepdDitF(FfxUInt32x2 p, FfxUInt32 f) + { + FfxFloat32 x = FfxFloat32(p.x + f); + FfxFloat32 y = FfxFloat32(p.y); + // The 1.61803 golden ratio. + FfxFloat32 a = FfxFloat32((1.0 + ffxSqrt(5.0f)) / 2.0); + // Number designed to provide a good visual pattern. + FfxFloat32 b = FfxFloat32(1.0 / 3.69); + x = x * a + (y * b); + return ffxFract(x); + } + //------------------------------------------------------------------------------------------------------------------------------ + // This version is 8-bit gamma 2.0. + // The 'c' input is {0 to 1}. + // Output is {0 to 1} ready for image store. + void FsrTepdC8F(inout FfxFloat32x3 c, FfxFloat32 dit) + { + FfxFloat32x3 n = ffxSqrt(c); + n = floor(n * ffxBroadcast3(255.0)) * ffxBroadcast3(1.0 / 255.0); + FfxFloat32x3 a = n * n; + FfxFloat32x3 b = n + ffxBroadcast3(1.0 / 255.0); + b = b * b; + // Ratio of 'a' to 'b' required to produce 'c'. + // ffxApproximateReciprocal() won't work here (at least for very high dynamic ranges). + // ffxApproximateReciprocalMedium() is an IADD,FMA,MUL. + FfxFloat32x3 r = (c - b) * ffxApproximateReciprocalMedium(a - b); + // Use the ratio as a cutoff to choose 'a' or 'b'. + // ffxIsGreaterThanZero() is a MUL. + c = ffxSaturate(n + ffxIsGreaterThanZero(ffxBroadcast3(dit) - r) * ffxBroadcast3(1.0 / 255.0)); + } + //------------------------------------------------------------------------------------------------------------------------------ + // This version is 10-bit gamma 2.0. + // The 'c' input is {0 to 1}. + // Output is {0 to 1} ready for image store. + void FsrTepdC10F(inout FfxFloat32x3 c, FfxFloat32 dit) + { + FfxFloat32x3 n = ffxSqrt(c); + n = floor(n * ffxBroadcast3(1023.0)) * ffxBroadcast3(1.0 / 1023.0); + FfxFloat32x3 a = n * n; + FfxFloat32x3 b = n + ffxBroadcast3(1.0 / 1023.0); + b = b * b; + FfxFloat32x3 r = (c - b) * ffxApproximateReciprocalMedium(a - b); + c = ffxSaturate(n + ffxIsGreaterThanZero(ffxBroadcast3(dit) - r) * ffxBroadcast3(1.0 / 1023.0)); + } +#endif +//============================================================================================================================== +#if defined(FFX_GPU)&& FFX_HALF == 1 + FfxFloat16 FsrTepdDitH(FfxUInt32x2 p, FfxUInt32 f) + { + FfxFloat32 x = FfxFloat32(p.x + f); + FfxFloat32 y = FfxFloat32(p.y); + FfxFloat32 a = FfxFloat32((1.0 + ffxSqrt(5.0f)) / 2.0); + FfxFloat32 b = FfxFloat32(1.0 / 3.69); + x = x * a + (y * b); + return FfxFloat16(ffxFract(x)); + } + //------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC8H(inout FfxFloat16x3 c, FfxFloat16 dit) + { + FfxFloat16x3 n = sqrt(c); + n = floor(n * FFX_BROADCAST_FLOAT16X3(255.0)) * FFX_BROADCAST_FLOAT16X3(1.0 / 255.0); + FfxFloat16x3 a = n * n; + FfxFloat16x3 b = n + FFX_BROADCAST_FLOAT16X3(1.0 / 255.0); + b = b * b; + FfxFloat16x3 r = (c - b) * ffxApproximateReciprocalMediumHalf(a - b); + c = ffxSaturate(n + ffxIsGreaterThanZeroHalf(FFX_BROADCAST_FLOAT16X3(dit) - r) * FFX_BROADCAST_FLOAT16X3(1.0 / 255.0)); + } + //------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC10H(inout FfxFloat16x3 c, FfxFloat16 dit) + { + FfxFloat16x3 n = sqrt(c); + n = floor(n * FFX_BROADCAST_FLOAT16X3(1023.0)) * FFX_BROADCAST_FLOAT16X3(1.0 / 1023.0); + FfxFloat16x3 a = n * n; + FfxFloat16x3 b = n + FFX_BROADCAST_FLOAT16X3(1.0 / 1023.0); + b = b * b; + FfxFloat16x3 r = (c - b) * ffxApproximateReciprocalMediumHalf(a - b); + c = ffxSaturate(n + ffxIsGreaterThanZeroHalf(FFX_BROADCAST_FLOAT16X3(dit) - r) * FFX_BROADCAST_FLOAT16X3(1.0 / 1023.0)); + } + //============================================================================================================================== + // This computes dither for positions 'p' and 'p+{8,0}'. + FfxFloat16x2 FsrTepdDitHx2(FfxUInt32x2 p, FfxUInt32 f) + { + FfxFloat32x2 x; + x.x = FfxFloat32(p.x + f); + x.y = x.x + FfxFloat32(8.0); + FfxFloat32 y = FfxFloat32(p.y); + FfxFloat32 a = FfxFloat32((1.0 + ffxSqrt(5.0f)) / 2.0); + FfxFloat32 b = FfxFloat32(1.0 / 3.69); + x = x * ffxBroadcast2(a) + ffxBroadcast2(y * b); + return FfxFloat16x2(ffxFract(x)); + } + //------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC8Hx2(inout FfxFloat16x2 cR, inout FfxFloat16x2 cG, inout FfxFloat16x2 cB, FfxFloat16x2 dit) + { + FfxFloat16x2 nR = sqrt(cR); + FfxFloat16x2 nG = sqrt(cG); + FfxFloat16x2 nB = sqrt(cB); + nR = floor(nR * FFX_BROADCAST_FLOAT16X2(255.0)) * FFX_BROADCAST_FLOAT16X2(1.0 / 255.0); + nG = floor(nG * FFX_BROADCAST_FLOAT16X2(255.0)) * FFX_BROADCAST_FLOAT16X2(1.0 / 255.0); + nB = floor(nB * FFX_BROADCAST_FLOAT16X2(255.0)) * FFX_BROADCAST_FLOAT16X2(1.0 / 255.0); + FfxFloat16x2 aR = nR * nR; + FfxFloat16x2 aG = nG * nG; + FfxFloat16x2 aB = nB * nB; + FfxFloat16x2 bR = nR + FFX_BROADCAST_FLOAT16X2(1.0 / 255.0); + bR = bR * bR; + FfxFloat16x2 bG = nG + FFX_BROADCAST_FLOAT16X2(1.0 / 255.0); + bG = bG * bG; + FfxFloat16x2 bB = nB + FFX_BROADCAST_FLOAT16X2(1.0 / 255.0); + bB = bB * bB; + FfxFloat16x2 rR = (cR - bR) * ffxApproximateReciprocalMediumHalf(aR - bR); + FfxFloat16x2 rG = (cG - bG) * ffxApproximateReciprocalMediumHalf(aG - bG); + FfxFloat16x2 rB = (cB - bB) * ffxApproximateReciprocalMediumHalf(aB - bB); + cR = ffxSaturate(nR + ffxIsGreaterThanZeroHalf(dit - rR) * FFX_BROADCAST_FLOAT16X2(1.0 / 255.0)); + cG = ffxSaturate(nG + ffxIsGreaterThanZeroHalf(dit - rG) * FFX_BROADCAST_FLOAT16X2(1.0 / 255.0)); + cB = ffxSaturate(nB + ffxIsGreaterThanZeroHalf(dit - rB) * FFX_BROADCAST_FLOAT16X2(1.0 / 255.0)); + } + //------------------------------------------------------------------------------------------------------------------------------ + void FsrTepdC10Hx2(inout FfxFloat16x2 cR,inout FfxFloat16x2 cG,inout FfxFloat16x2 cB,FfxFloat16x2 dit){ + FfxFloat16x2 nR=sqrt(cR); + FfxFloat16x2 nG=sqrt(cG); + FfxFloat16x2 nB=sqrt(cB); + nR=floor(nR*FFX_BROADCAST_FLOAT16X2(1023.0))*FFX_BROADCAST_FLOAT16X2(1.0/1023.0); + nG=floor(nG*FFX_BROADCAST_FLOAT16X2(1023.0))*FFX_BROADCAST_FLOAT16X2(1.0/1023.0); + nB=floor(nB*FFX_BROADCAST_FLOAT16X2(1023.0))*FFX_BROADCAST_FLOAT16X2(1.0/1023.0); + FfxFloat16x2 aR=nR*nR; + FfxFloat16x2 aG=nG*nG; + FfxFloat16x2 aB=nB*nB; + FfxFloat16x2 bR=nR+FFX_BROADCAST_FLOAT16X2(1.0/1023.0);bR=bR*bR; + FfxFloat16x2 bG=nG+FFX_BROADCAST_FLOAT16X2(1.0/1023.0);bG=bG*bG; + FfxFloat16x2 bB=nB+FFX_BROADCAST_FLOAT16X2(1.0/1023.0);bB=bB*bB; + FfxFloat16x2 rR=(cR-bR)*ffxApproximateReciprocalMediumHalf(aR-bR); + FfxFloat16x2 rG=(cG-bG)*ffxApproximateReciprocalMediumHalf(aG-bG); + FfxFloat16x2 rB=(cB-bB)*ffxApproximateReciprocalMediumHalf(aB-bB); + cR=ffxSaturate(nR+ffxIsGreaterThanZeroHalf(dit-rR)*FFX_BROADCAST_FLOAT16X2(1.0/1023.0)); + cG=ffxSaturate(nG+ffxIsGreaterThanZeroHalf(dit-rG)*FFX_BROADCAST_FLOAT16X2(1.0/1023.0)); + cB = ffxSaturate(nB + ffxIsGreaterThanZeroHalf(dit - rB) * FFX_BROADCAST_FLOAT16X2(1.0 / 1023.0)); +} +#endif diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_accumulate.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_accumulate.h new file mode 100644 index 000000000..a8c6daa0e --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_accumulate.h @@ -0,0 +1,172 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +void Accumulate(const AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) +{ + // Avoid invalid values when accumulation and upsampled weight is 0 + data.fHistoryWeight *= FfxFloat32(data.fHistoryWeight > FSR3UPSCALER_FP16_MIN); + data.fHistoryWeight = ffxMax(FSR3UPSCALER_EPSILON, data.fHistoryWeight + data.fUpsampledWeight); + +#if FFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT + //YCoCg -> RGB -> Tonemap -> YCoCg (Use RGB tonemapper to avoid color desaturation) + data.fUpsampledColor = RGBToYCoCg(Tonemap(YCoCgToRGB(data.fUpsampledColor))); + data.fHistoryColor = RGBToYCoCg(Tonemap(YCoCgToRGB(data.fHistoryColor))); +#endif + + const FfxFloat32 fAlpha = ffxSaturate(data.fUpsampledWeight / data.fHistoryWeight); + data.fHistoryColor = ffxLerp(data.fHistoryColor, data.fUpsampledColor, fAlpha); + data.fHistoryColor = YCoCgToRGB(data.fHistoryColor); + +#if FFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT + data.fHistoryColor = InverseTonemap(data.fHistoryColor); +#endif +} + +void RectifyHistory( + const AccumulationPassCommonParams params, + FFX_PARAMETER_INOUT AccumulationPassData data +) +{ + const FfxFloat32 f4kVelocityFactor = ffxSaturate(params.f4KVelocity / 20.0f); + const FfxFloat32 fDistanceFactor = ffxSaturate(0.75f - params.fFarthestDepthInMeters / 20.0f); + const FfxFloat32 fAccumulationFactor = 1.0f - params.fAccumulation; + const FfxFloat32 fReactiveFactor = ffxPow(params.fReactiveMask, 1.0f / 2.0f); + const FfxFloat32 fShadingChangeFactor = params.fShadingChange; + const FfxFloat32 fBoxScaleT = ffxMax(f4kVelocityFactor, ffxMax(fDistanceFactor, ffxMax(fAccumulationFactor, ffxMax(fReactiveFactor, fShadingChangeFactor)))); + + const FfxFloat32 fBoxScale = ffxLerp(3.0f, 1.0f, fBoxScaleT); + const FfxFloat32x3 fScaledBoxVec = data.clippingBox.boxVec * FfxFloat32x3(1.7f, 1.0f, 1.0f) * fBoxScale; + + const FfxFloat32x3 fClampedScaledBoxVec = ffxMax(fScaledBoxVec, FfxFloat32x3(1.193e-7f, 1.193e-7f, 1.193e-7f)); + const FfxFloat32x3 fTransformedHistoryColor = (data.fHistoryColor - data.clippingBox.boxCenter) / fClampedScaledBoxVec; + + if (length(fTransformedHistoryColor)>1.f) { + const FfxFloat32x3 fClampedHistoryColor = normalize(fTransformedHistoryColor); + const FfxFloat32x3 fFinalClampedHistoryColor = (fClampedHistoryColor * fScaledBoxVec) + data.clippingBox.boxCenter; + + // Scale history color using rectification info, also using accumulation mask to avoid potential invalid color protection + const FfxFloat32 fHistoryContribution = ffxMax(params.fLumaInstabilityFactor, data.fLockContributionThisFrame) * params.fAccumulation * (1 - params.fDisocclusion); + data.fHistoryColor = ffxLerp(fFinalClampedHistoryColor, data.fHistoryColor, ffxSaturate(fHistoryContribution)); + } +} + +void UpdateLockStatus(AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) +{ + data.fLock *= FfxFloat32(params.bIsNewSample == false); + + const FfxFloat32 fLifetimeDecreaseFactor = ffxMax(ffxSaturate(params.fShadingChange), ffxMax(params.fReactiveMask, params.fDisocclusion)); + data.fLock = ffxMax(0.0f, data.fLock - fLifetimeDecreaseFactor * fLockMax); + + // Compute this frame lock contribution + data.fLockContributionThisFrame = ffxSaturate(ffxSaturate(data.fLock - fLockThreshold) * (fLockMax - fLockThreshold)); + + const FfxFloat32 fNewLockIntensity = LoadRwNewLocks(params.iPxHrPos) * (1.0f - ffxMax(params.fShadingChange * 0, params.fReactiveMask)); + data.fLock = ffxMax(0.0f, ffxMin(data.fLock + fNewLockIntensity, fLockMax)); + + // Preparing for next frame + const FfxFloat32 fLifetimeDecrease = (0.1f / JitterSequenceLength()) * (1.0f - fLifetimeDecreaseFactor); + data.fLock = ffxMax(0.0f, data.fLock - fLifetimeDecrease); + + // we expect similar motion for next frame + // kill lock if that location is outside screen, avoid locks to be clamped to screen borders + const FfxFloat32x2 fEstimatedUvNextFrame = params.fHrUv - params.fMotionVector; + data.fLock *= FfxFloat32(IsUvInside(fEstimatedUvNextFrame) == true); +} + +void ComputeBaseAccumulationWeight(const AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) +{ + FfxFloat32 fBaseAccumulation = params.fAccumulation; + + fBaseAccumulation = ffxMin(fBaseAccumulation, ffxLerp(fBaseAccumulation, 0.15f, ffxSaturate(ffxMax(0.0f, (params.f4KVelocity * VelocityFactor()) / 0.5f)))); + + data.fHistoryWeight = fBaseAccumulation; +} + +void InitPassData(FfxInt32x2 iPxHrPos, FFX_PARAMETER_INOUT AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) +{ + // Init constant params + params.iPxHrPos = iPxHrPos; + const FfxFloat32x2 fHrUv = (iPxHrPos + 0.5f) / UpscaleSize(); + params.fHrUv = fHrUv; + params.fLrUvJittered = fHrUv + Jitter() / RenderSize(); + params.fLrUv_HwSampler = ClampUv(params.fLrUvJittered, RenderSize(), MaxRenderSize()); + + params.fMotionVector = GetMotionVector(iPxHrPos, fHrUv); + params.f4KVelocity = Get4KVelocity(params.fMotionVector); + + ComputeReprojectedUVs(params); + + const FfxFloat32x2 fLumaInstabilityUv_HW = ClampUv(fHrUv, RenderSize(), MaxRenderSize()); + params.fLumaInstabilityFactor = SampleLumaInstability(fLumaInstabilityUv_HW); + + const FfxFloat32x2 fFarthestDepthUv = ClampUv(params.fLrUvJittered, RenderSize() / 2, GetFarthestDepthMip1ResourceDimensions()); + params.fFarthestDepthInMeters = SampleFarthestDepthMip1(fFarthestDepthUv); + params.bIsNewSample = (params.bIsExistingSample == false || 0 == FrameIndex()); + + const FfxFloat32x4 fDilatedReactiveMasks = SampleDilatedReactiveMasks(params.fLrUv_HwSampler); + params.fReactiveMask = ffxSaturate(fDilatedReactiveMasks[REACTIVE]); + params.fDisocclusion = ffxSaturate(fDilatedReactiveMasks[DISOCCLUSION]); + params.fShadingChange = ffxSaturate(fDilatedReactiveMasks[SHADING_CHANGE]); + params.fAccumulation = ffxSaturate(fDilatedReactiveMasks[ACCUMULAION]); + params.fAccumulation *= FfxFloat32(round(params.fAccumulation * 100.0f) > 1.0f); + + // Init variable data + data.fUpsampledColor = FfxFloat32x3(0.0f, 0.0f, 0.0f); + data.fHistoryColor = FfxFloat32x3(0.0f, 0.0f, 0.0f); + data.fHistoryWeight = 1.0f; + data.fUpsampledWeight = 0.0f; + data.fLock = 0.0f; + data.fLockContributionThisFrame = 0.0f; +} + +void Accumulate(FfxInt32x2 iPxHrPos) +{ + AccumulationPassCommonParams params; + AccumulationPassData data; + InitPassData(iPxHrPos, params, data); + + if (params.bIsExistingSample && !params.bIsNewSample) { + ReprojectHistoryColor(params, data); + } + + UpdateLockStatus(params, data); + + ComputeBaseAccumulationWeight(params, data); + + ComputeUpsampledColorAndWeight(params, data); + + RectifyHistory(params, data); + + Accumulate(params, data); + + data.fHistoryColor /= Exposure(); + + data.fHistoryColor = ffxMax(data.fHistoryColor, FfxFloat32x3(0.0f, 0.0f, 0.0f)); + + StoreInternalColorAndWeight(iPxHrPos, FfxFloat32x4(data.fHistoryColor, data.fLock)); + + // Output final color when RCAS is disabled +#if FFX_FSR3UPSCALER_OPTION_APPLY_SHARPENING == 0 + StoreUpscaledOutput(iPxHrPos, data.fHistoryColor); +#endif + StoreNewLocks(iPxHrPos, 0); +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h new file mode 100644 index 000000000..d0cbf9d32 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h @@ -0,0 +1,903 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include "ffx_fsr3upscaler_resources.h" + +#if defined(FFX_GPU) +#include "ffx_core.h" +#endif // #if defined(FFX_GPU) + +#if defined(FFX_GPU) +#ifndef FFX_PREFER_WAVE64 +#define FFX_PREFER_WAVE64 +#endif // FFX_PREFER_WAVE64 + +#if defined(FSR3UPSCALER_BIND_CB_FSR3UPSCALER) + layout (set = 0, binding = FSR3UPSCALER_BIND_CB_FSR3UPSCALER, std140) uniform cbFSR3UPSCALER_t + { + FfxInt32x2 iRenderSize; + FfxInt32x2 iPreviousFrameRenderSize; + + FfxInt32x2 iUpscaleSize; + FfxInt32x2 iPreviousFrameUpscaleSize; + + FfxInt32x2 iMaxRenderSize; + FfxInt32x2 iMaxUpscaleSize; + + FfxFloat32x4 fDeviceToViewDepth; + + FfxFloat32x2 fJitter; + FfxFloat32x2 fPreviousFrameJitter; + + FfxFloat32x2 fMotionVectorScale; + FfxFloat32x2 fDownscaleFactor; + + FfxFloat32x2 fMotionVectorJitterCancellation; + FfxFloat32 fTanHalfFOV; + FfxFloat32 fJitterSequenceLength; + + FfxFloat32 fDeltaTime; + FfxFloat32 fDeltaPreExposure; + FfxFloat32 fViewSpaceToMetersFactor; + FfxFloat32 fFrameIndex; + + FfxFloat32 fVelocityFactor; + FfxFloat32 fReactivenessScale; + FfxFloat32 fShadingChangeScale; + FfxFloat32 fAccumulationAddedPerFrame; + FfxFloat32 fMinDisocclusionAccumulation; + } cbFSR3Upscaler; + + +FfxInt32x2 RenderSize() +{ + return cbFSR3Upscaler.iRenderSize; +} + +FfxInt32x2 PreviousFrameRenderSize() +{ + return cbFSR3Upscaler.iPreviousFrameRenderSize; +} + +FfxInt32x2 MaxRenderSize() +{ + return cbFSR3Upscaler.iMaxRenderSize; +} + +FfxInt32x2 UpscaleSize() +{ + return cbFSR3Upscaler.iUpscaleSize; +} + +FfxInt32x2 PreviousFrameUpscaleSize() +{ + return cbFSR3Upscaler.iPreviousFrameUpscaleSize; +} + +FfxInt32x2 MaxUpscaleSize() +{ + return cbFSR3Upscaler.iMaxUpscaleSize; +} + +FfxFloat32x2 Jitter() +{ + return cbFSR3Upscaler.fJitter; +} + +FfxFloat32x2 PreviousFrameJitter() +{ + return cbFSR3Upscaler.fPreviousFrameJitter; +} + +FfxFloat32x4 DeviceToViewSpaceTransformFactors() +{ + return cbFSR3Upscaler.fDeviceToViewDepth; +} + +FfxFloat32x2 MotionVectorScale() +{ + return cbFSR3Upscaler.fMotionVectorScale; +} + +FfxFloat32x2 DownscaleFactor() +{ + return cbFSR3Upscaler.fDownscaleFactor; +} + +FfxFloat32x2 MotionVectorJitterCancellation() +{ + return cbFSR3Upscaler.fMotionVectorJitterCancellation; +} + +FfxFloat32 TanHalfFoV() +{ + return cbFSR3Upscaler.fTanHalfFOV; +} + +FfxFloat32 JitterSequenceLength() +{ + return cbFSR3Upscaler.fJitterSequenceLength; +} + +FfxFloat32 DeltaTime() +{ + return cbFSR3Upscaler.fDeltaTime; +} + +FfxFloat32 DeltaPreExposure() +{ + return cbFSR3Upscaler.fDeltaPreExposure; +} + +FfxFloat32 ViewSpaceToMetersFactor() +{ + return cbFSR3Upscaler.fViewSpaceToMetersFactor; +} + +FfxFloat32 FrameIndex() +{ + return cbFSR3Upscaler.fFrameIndex; +} + +FfxFloat32 VelocityFactor() +{ + return cbFSR3Upscaler.fVelocityFactor; +} + +FfxFloat32 AccumulationAddedPerFrame() +{ + return cbFSR3Upscaler.fAccumulationAddedPerFrame; +} + +FfxFloat32 MinDisocclusionAccumulation() +{ + return cbFSR3Upscaler.fMinDisocclusionAccumulation; +} + +#endif // #if defined(FSR3UPSCALER_BIND_CB_FSR3UPSCALER) + + +#if defined(FSR3UPSCALER_BIND_CB_AUTOREACTIVE) +layout(set = 0, binding = FSR3UPSCALER_BIND_CB_AUTOREACTIVE, std140) uniform cbGenerateReactive_t +{ + FfxFloat32 fTcThreshold; // 0.1 is a good starting value, lower will result in more TC pixels + FfxFloat32 fTcScale; + FfxFloat32 fReactiveScale; + FfxFloat32 fReactiveMax; +} cbGenerateReactive; + +FfxFloat32 TcThreshold() +{ + return cbGenerateReactive.fTcThreshold; +} + +FfxFloat32 TcScale() +{ + return cbGenerateReactive.fTcScale; +} + +FfxFloat32 ReactiveScale() +{ + return cbGenerateReactive.fReactiveScale; +} + +FfxFloat32 ReactiveMax() +{ + return cbGenerateReactive.fReactiveMax; +} +#endif // #if defined(FSR3UPSCALER_BIND_CB_AUTOREACTIVE) + +#if defined(FSR3UPSCALER_BIND_CB_RCAS) +layout(set = 0, binding = FSR3UPSCALER_BIND_CB_RCAS, std140) uniform cbRCAS_t +{ + FfxUInt32x4 rcasConfig; +} cbRCAS; + +FfxUInt32x4 RCASConfig() +{ + return cbRCAS.rcasConfig; +} +#endif // #if defined(FSR3UPSCALER_BIND_CB_RCAS) + + +#if defined(FSR3UPSCALER_BIND_CB_REACTIVE) +layout(set = 0, binding = FSR3UPSCALER_BIND_CB_REACTIVE, std140) uniform cbGenerateReactive_t +{ + FfxFloat32 gen_reactive_scale; + FfxFloat32 gen_reactive_threshold; + FfxFloat32 gen_reactive_binaryValue; + FfxUInt32 gen_reactive_flags; +} cbGenerateReactive; + +FfxFloat32 GenReactiveScale() +{ + return cbGenerateReactive.gen_reactive_scale; +} + +FfxFloat32 GenReactiveThreshold() +{ + return cbGenerateReactive.gen_reactive_threshold; +} + +FfxFloat32 GenReactiveBinaryValue() +{ + return cbGenerateReactive.gen_reactive_binaryValue; +} + +FfxUInt32 GenReactiveFlags() +{ + return cbGenerateReactive.gen_reactive_flags; +} +#endif // #if defined(FSR3UPSCALER_BIND_CB_REACTIVE) + + +#if defined(FSR3UPSCALER_BIND_CB_SPD) +layout(set = 0, binding = FSR3UPSCALER_BIND_CB_SPD, std140) uniform cbSPD_t +{ + FfxUInt32 mips; + FfxUInt32 numWorkGroups; + FfxUInt32x2 workGroupOffset; + FfxUInt32x2 renderSize; +} cbSPD; + +FfxUInt32 MipCount() +{ + return cbSPD.mips; +} + +FfxUInt32 NumWorkGroups() +{ + return cbSPD.numWorkGroups; +} + +FfxUInt32x2 WorkGroupOffset() +{ + return cbSPD.workGroupOffset; +} + +FfxUInt32x2 SPD_RenderSize() +{ + return cbSPD.renderSize; +} +#endif // #if defined(FSR3UPSCALER_BIND_CB_SPD) + +layout (set = 0, binding = 1000) uniform sampler s_PointClamp; +layout (set = 0, binding = 1001) uniform sampler s_LinearClamp; + +#if defined(FSR3UPSCALER_BIND_SRV_SPD_MIPS) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_SPD_MIPS) uniform texture2D r_spd_mips; + +FfxInt32x2 GetSPDMipDimensions(FfxUInt32 uMipLevel) +{ + return textureSize(r_spd_mips, int(uMipLevel)).xy; +} + +FfxFloat32x2 SampleSPDMipLevel(FfxFloat32x2 fUV, FfxUInt32 mipLevel) +{ + return textureLod(sampler2D(r_spd_mips, s_LinearClamp), fUV, float(mipLevel)).rg; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_INPUT_DEPTH) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_INPUT_DEPTH) uniform texture2D r_input_depth; + +FfxFloat32 LoadInputDepth(FfxInt32x2 iPxPos) +{ + return texelFetch(r_input_depth, iPxPos, 0).r; +} + +FfxFloat32 SampleInputDepth(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_input_depth, s_LinearClamp), fUV, 0.0).x; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_REACTIVE_MASK) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_REACTIVE_MASK) uniform texture2D r_reactive_mask; + +FfxFloat32 LoadReactiveMask(FfxInt32x2 iPxPos) +{ + return texelFetch(r_reactive_mask, FfxInt32x2(iPxPos), 0).r * cbFSR3Upscaler.fReactivenessScale; +} + +FfxInt32x2 GetReactiveMaskResourceDimensions() +{ + return textureSize(r_reactive_mask, 0).xy; +} + +FfxFloat32 SampleReactiveMask(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_reactive_mask, s_LinearClamp), fUV, 0.0).x * cbFSR3Upscaler.fReactivenessScale; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK) uniform texture2D r_transparency_and_composition_mask; + +FfxFloat32 LoadTransparencyAndCompositionMask(FfxUInt32x2 iPxPos) +{ + return texelFetch(r_transparency_and_composition_mask, FfxInt32x2(iPxPos), 0).r; +} + +FfxInt32x2 GetTransparencyAndCompositionMaskResourceDimensions() +{ + return textureSize(r_transparency_and_composition_mask, 0).xy; +} + +FfxFloat32 SampleTransparencyAndCompositionMask(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_transparency_and_composition_mask, s_LinearClamp), fUV, 0.0).x; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_INPUT_COLOR) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_INPUT_COLOR) uniform texture2D r_input_color_jittered; + +FfxFloat32x3 LoadInputColor(FfxInt32x2 iPxPos) +{ + return texelFetch(r_input_color_jittered, iPxPos, 0).rgb; +} + +FfxFloat32x3 SampleInputColor(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_input_color_jittered, s_LinearClamp), fUV, 0.0).rgb; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_INPUT_MOTION_VECTORS) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_INPUT_MOTION_VECTORS) uniform texture2D r_input_motion_vectors; + +FfxFloat32x2 LoadInputMotionVector(FfxInt32x2 iPxDilatedMotionVectorPos) +{ + FfxFloat32x2 fSrcMotionVector = texelFetch(r_input_motion_vectors, iPxDilatedMotionVectorPos, 0).xy; + + FfxFloat32x2 fUvMotionVector = fSrcMotionVector * MotionVectorScale(); + +#if FFX_FSR3UPSCALER_OPTION_JITTERED_MOTION_VECTORS + fUvMotionVector -= MotionVectorJitterCancellation(); +#endif + + return fUvMotionVector; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_INTERNAL_UPSCALED) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_INTERNAL_UPSCALED) uniform texture2D r_internal_upscaled_color; + +FfxFloat32x4 LoadHistory(FfxInt32x2 iPxHistory) +{ + return texelFetch(r_internal_upscaled_color, iPxHistory, 0); +} + +FfxFloat32x4 SampleHistory(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_internal_upscaled_color, s_LinearClamp), fUV, 0.0); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_LUMA_HISTORY) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_LUMA_HISTORY, rgba8) uniform image2D rw_luma_history; + +void StoreLumaHistory(FfxInt32x2 iPxPos, FfxFloat32x4 fLumaHistory) +{ + imageStore(rw_luma_history, iPxPos, fLumaHistory); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_LUMA_HISTORY) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_LUMA_HISTORY) uniform texture2D r_luma_history; + +FfxFloat32x4 LoadLumaHistory(FfxInt32x2 iPxPos) +{ + return texelFetch(r_luma_history, iPxPos, 0); +} + +FfxFloat32x4 SampleLumaHistory(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_luma_history, s_LinearClamp), fUV, 0.0); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_RCAS_INPUT) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_RCAS_INPUT) uniform texture2D r_rcas_input; + +FfxFloat32x4 LoadRCAS_Input(FfxInt32x2 iPxPos) +{ + return texelFetch(r_rcas_input, iPxPos, 0); +} + +FfxFloat32x3 SampleRCAS_Input(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_rcas_input, s_LinearClamp), fUV, 0.0).rgb; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_INTERNAL_UPSCALED) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_INTERNAL_UPSCALED, rgba16f) writeonly uniform image2D rw_internal_upscaled_color; + +void StoreReprojectedHistory(FfxInt32x2 iPxHistory, FfxFloat32x4 fHistory) +{ + imageStore(rw_internal_upscaled_color, iPxHistory, fHistory); +} + +void StoreInternalColorAndWeight(FfxInt32x2 iPxPos, FfxFloat32x4 fColorAndWeight) +{ + imageStore(rw_internal_upscaled_color, iPxPos, fColorAndWeight); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_UPSCALED_OUTPUT) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_UPSCALED_OUTPUT /* app controlled format */) writeonly uniform image2D rw_upscaled_output; + +void StoreUpscaledOutput(FfxInt32x2 iPxPos, FfxFloat32x3 fColor) +{ + imageStore(rw_upscaled_output, iPxPos, FfxFloat32x4(fColor, 1.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_ACCUMULATION) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_ACCUMULATION) uniform texture2D r_accumulation; + +FfxFloat32 SampleAccumulation(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_accumulation, s_LinearClamp), fUV, 0.0).x; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_ACCUMULATION) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_ACCUMULATION, r8) uniform image2D rw_accumulation; + +void StoreAccumulation(FfxInt32x2 iPxPos, FfxFloat32 fAccumulation) +{ + imageStore(rw_accumulation, iPxPos, vec4(fAccumulation, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_SHADING_CHANGE) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_SHADING_CHANGE) uniform texture2D r_shading_change; + +FfxFloat32 LoadShadingChange(FfxInt32x2 iPxPos) +{ + return texelFetch(r_shading_change, iPxPos, 0).x * cbFSR3Upscaler.fShadingChangeScale; +} + +FfxFloat32 SampleShadingChange(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_shading_change, s_LinearClamp), fUV, 0.0).x * cbFSR3Upscaler.fShadingChangeScale; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_SHADING_CHANGE) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SHADING_CHANGE, r8) uniform image2D rw_shading_change; + +void StoreShadingChange(FfxInt32x2 iPxPos, FfxFloat32 fShadingChange) +{ + imageStore(rw_shading_change, iPxPos, vec4(fShadingChange, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH) uniform texture2D r_farthest_depth; + +FfxInt32x2 GetFarthestDepthResourceDimensions() +{ + return textureSize(r_farthest_depth, 0).xy; +} + +FfxFloat32 LoadFarthestDepth(FfxInt32x2 iPxPos) +{ + return texelFetch(r_farthest_depth, iPxPos, 0).x; +} + +FfxFloat32 SampleFarthestDepth(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_farthest_depth, s_LinearClamp), fUV, 0.0).x; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH, r16f) uniform image2D rw_farthest_depth; + +void StoreFarthestDepth(FfxInt32x2 iPxPos, FfxFloat32 fDepth) +{ + imageStore(rw_farthest_depth, iPxPos, vec4(fDepth, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH_MIP1) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH_MIP1) uniform texture2D r_farthest_depth_mip1; + +FfxInt32x2 GetFarthestDepthMip1ResourceDimensions() +{ + return textureSize(r_farthest_depth_mip1, 0).xy; +} + +FfxFloat32 LoadFarthestDepthMip1(FfxInt32x2 iPxPos) +{ + return texelFetch(r_farthest_depth_mip1, iPxPos, 0).x; +} + +FfxFloat32 SampleFarthestDepthMip1(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_farthest_depth_mip1, s_LinearClamp), fUV, 0.0).x; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH_MIP1) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH_MIP1, r16f) uniform image2D rw_farthest_depth_mip1; + +void StoreFarthestDepthMip1(FfxInt32x2 iPxPos, FfxFloat32 fDepth) +{ + imageStore(rw_farthest_depth_mip1, iPxPos, vec4(fDepth, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_CURRENT_LUMA) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_CURRENT_LUMA) uniform texture2D r_current_luma; + +FfxFloat32 LoadCurrentLuma(FfxInt32x2 iPxPos) +{ + return texelFetch(r_current_luma, iPxPos, 0).r; +} + +FfxFloat32 SampleCurrentLuma(FfxFloat32x2 uv) +{ + return textureLod(sampler2D(r_current_luma, s_LinearClamp), uv, 0.0).r; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_CURRENT_LUMA) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_CURRENT_LUMA, r16f) uniform image2D rw_current_luma; + +void StoreCurrentLuma(FfxInt32x2 iPxPos, FfxFloat32 fLuma) +{ + imageStore(rw_current_luma, iPxPos, vec4(fLuma, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_LUMA_INSTABILITY) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_LUMA_INSTABILITY) uniform texture2D r_luma_instability; + +FfxFloat32 SampleLumaInstability(FfxFloat32x2 uv) +{ + return textureLod(sampler2D(r_luma_instability, s_LinearClamp), uv, 0.0).x; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_LUMA_INSTABILITY) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_LUMA_INSTABILITY, r16f) uniform image2D rw_luma_instability; + +void StoreLumaInstability(FfxInt32x2 iPxPos, FfxFloat32 fLumaInstability) +{ + imageStore(rw_luma_instability, iPxPos, vec4(fLumaInstability, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_PREVIOUS_LUMA) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_PREVIOUS_LUMA) uniform texture2D r_previous_luma; + +FfxFloat32 LoadPreviousLuma(FfxInt32x2 iPxPos) +{ + return texelFetch(r_previous_luma, iPxPos, 0).r; +} + +FfxFloat32 SamplePreviousLuma(FfxFloat32x2 uv) +{ + return textureLod(sampler2D(r_previous_luma, s_LinearClamp), uv, 0.0).r; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_NEW_LOCKS) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_NEW_LOCKS) uniform texture2D r_new_locks; + +FfxFloat32 LoadNewLocks(FfxInt32x2 iPxPos) +{ + return texelFetch(r_new_locks, iPxPos, 0).r; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_NEW_LOCKS) +layout(set = 0, binding = FSR3UPSCALER_BIND_UAV_NEW_LOCKS, r8) uniform image2D rw_new_locks; + +FfxFloat32 LoadRwNewLocks(FfxInt32x2 iPxPos) +{ + return imageLoad(rw_new_locks, iPxPos).r; +} + +void StoreNewLocks(FfxInt32x2 iPxPos, FfxFloat32 newLock) +{ + imageStore(rw_new_locks, iPxPos, vec4(newLock, 0, 0, 0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH) uniform utexture2D r_reconstructed_previous_nearest_depth; + +FfxFloat32 LoadReconstructedPrevDepth(FfxInt32x2 iPxPos) +{ + return uintBitsToFloat(texelFetch(r_reconstructed_previous_nearest_depth, iPxPos, 0).r); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH, r32ui) uniform uimage2D rw_reconstructed_previous_nearest_depth; + +void StoreReconstructedDepth(FfxInt32x2 iPxSample, FfxFloat32 fDepth) +{ + FfxUInt32 uDepth = floatBitsToUint(fDepth); + + #if FFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH + imageAtomicMax(rw_reconstructed_previous_nearest_depth, iPxSample, uDepth); + #else + imageAtomicMin(rw_reconstructed_previous_nearest_depth, iPxSample, uDepth); // min for standard, max for inverted depth + #endif +} + +void SetReconstructedDepth(FfxInt32x2 iPxSample, FfxUInt32 uValue) +{ + imageStore(rw_reconstructed_previous_nearest_depth, iPxSample, uvec4(uValue, 0, 0, 0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_DILATED_DEPTH) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_DILATED_DEPTH, r32f) writeonly uniform image2D rw_dilated_depth; + +void StoreDilatedDepth(FFX_PARAMETER_IN FfxInt32x2 iPxPos, FFX_PARAMETER_IN FfxFloat32 fDepth) +{ + imageStore(rw_dilated_depth, iPxPos, vec4(fDepth, 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_DILATED_MOTION_VECTORS) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_DILATED_MOTION_VECTORS, rg16f) writeonly uniform image2D rw_dilated_motion_vectors; + +void StoreDilatedMotionVector(FFX_PARAMETER_IN FfxInt32x2 iPxPos, FFX_PARAMETER_IN FfxFloat32x2 fMotionVector) +{ + imageStore(rw_dilated_motion_vectors, iPxPos, vec4(fMotionVector, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS) uniform texture2D r_dilated_motion_vectors; + +FfxFloat32x2 LoadDilatedMotionVector(FfxInt32x2 iPxInput) +{ + return texelFetch(r_dilated_motion_vectors, iPxInput, 0).xy; +} + +FfxFloat32x2 SampleDilatedMotionVector(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_dilated_motion_vectors, s_LinearClamp), fUV, 0.0).xy; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_DILATED_DEPTH) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_DILATED_DEPTH) uniform texture2D r_dilated_depth; + +FfxFloat32 LoadDilatedDepth(FfxInt32x2 iPxInput) +{ + return texelFetch(r_dilated_depth, iPxInput, 0).r; +} + +FfxFloat32 SampleDilatedDepth(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_dilated_depth, s_LinearClamp), fUV, 0.0).r; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE) uniform texture2D r_input_exposure; + +FfxFloat32 Exposure() +{ + FfxFloat32 exposure = texelFetch(r_input_exposure, FfxInt32x2(0, 0), 0).x; + + if (exposure == 0.0) { + exposure = 1.0; + } + + return exposure; +} +#endif + +// BEGIN: FSR3UPSCALER_BIND_SRV_LANCZOS_LUT +#if defined(FSR3UPSCALER_BIND_SRV_LANCZOS_LUT) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_LANCZOS_LUT) uniform texture2D r_lanczos_lut; +#endif + +FfxFloat32 SampleLanczos2Weight(FfxFloat32 x) +{ +#if defined(FSR3UPSCALER_BIND_SRV_LANCZOS_LUT) + return textureLod(sampler2D(r_lanczos_lut, s_LinearClamp), FfxFloat32x2(x / 2.0, 0.5), 0.0).x; +#else + return 0.f; +#endif +} +// END: FSR3UPSCALER_BIND_SRV_LANCZOS_LUT + +#if defined(FSR3UPSCALER_BIND_SRV_DILATED_REACTIVE_MASKS) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_DILATED_REACTIVE_MASKS) uniform texture2D r_dilated_reactive_masks; + +FfxFloat32x4 SampleDilatedReactiveMasks(FfxFloat32x2 fUV) +{ + return textureLod(sampler2D(r_dilated_reactive_masks, s_LinearClamp), fUV, 0.0); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_DILATED_REACTIVE_MASKS) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_DILATED_REACTIVE_MASKS, rgba8) writeonly uniform image2D rw_dilated_reactive_masks; + +void StoreDilatedReactiveMasks(FFX_PARAMETER_IN FfxInt32x2 iPxPos, FFX_PARAMETER_IN FfxFloat32x4 fDilatedReactiveMasks) +{ + imageStore(rw_dilated_reactive_masks, iPxPos, fDilatedReactiveMasks); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_INPUT_OPAQUE_ONLY) +layout (set = 0, binding = FSR3UPSCALER_BIND_SRV_INPUT_OPAQUE_ONLY) uniform texture2D r_input_opaque_only; + +FfxFloat32x3 LoadOpaqueOnly(FFX_PARAMETER_IN FFX_MIN16_I2 iPxPos) +{ + return texelFetch(r_input_opaque_only, iPxPos, 0).xyz; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_PREV_PRE_ALPHA_COLOR) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_PREV_PRE_ALPHA_COLOR) uniform texture2D r_input_prev_color_pre_alpha; + +FfxFloat32x3 LoadPrevPreAlpha(FFX_PARAMETER_IN FFX_MIN16_I2 iPxPos) +{ + return texelFetch(r_input_prev_color_pre_alpha, iPxPos, 0).xyz; +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_PREV_POST_ALPHA_COLOR) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_PREV_POST_ALPHA_COLOR) uniform texture2D r_input_prev_color_post_alpha; + +FfxFloat32x3 LoadPrevPostAlpha(FFX_PARAMETER_IN FFX_MIN16_I2 iPxPos) +{ + return texelFetch(r_input_prev_color_post_alpha, iPxPos, 0).xyz; +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_AUTOREACTIVE) && \ + defined(FSR3UPSCALER_BIND_UAV_AUTOCOMPOSITION) + +layout(set = 0, binding = FSR3UPSCALER_BIND_UAV_AUTOREACTIVE, r32f) uniform image2D rw_output_autoreactive; +layout(set = 0, binding = FSR3UPSCALER_BIND_UAV_AUTOCOMPOSITION, r32f) uniform image2D rw_output_autocomposition; + +void StoreAutoReactive(FFX_PARAMETER_IN FFX_MIN16_I2 iPxPos, FFX_PARAMETER_IN FFX_MIN16_F2 fReactive) +{ + imageStore(rw_output_autoreactive, iPxPos, FfxFloat32x4(FfxFloat32(fReactive.x), 0.0, 0.0, 0.0)); + + imageStore(rw_output_autocomposition, iPxPos, FfxFloat32x4(FfxFloat32(fReactive.y), 0.0, 0.0, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_PREV_PRE_ALPHA_COLOR) +layout(set = 0, binding = FSR3UPSCALER_BIND_UAV_PREV_PRE_ALPHA_COLOR, r11f_g11f_b10f) uniform image2D rw_output_prev_color_pre_alpha; + +void StorePrevPreAlpha(FFX_PARAMETER_IN FFX_MIN16_I2 iPxPos, FFX_PARAMETER_IN FFX_MIN16_F3 color) +{ + imageStore(rw_output_prev_color_pre_alpha, iPxPos, FfxFloat32x4(color, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_PREV_POST_ALPHA_COLOR) +layout(set = 0, binding = FSR3UPSCALER_BIND_UAV_PREV_POST_ALPHA_COLOR, r11f_g11f_b10f) uniform image2D rw_output_prev_color_post_alpha; + +void StorePrevPostAlpha(FFX_PARAMETER_IN FFX_MIN16_I2 iPxPos, FFX_PARAMETER_IN FFX_MIN16_F3 color) +{ + imageStore(rw_output_prev_color_post_alpha, iPxPos, FfxFloat32x4(color, 0.0)); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_FRAME_INFO) +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_FRAME_INFO, rgba32f) uniform image2D rw_frame_info; + +FfxFloat32x4 LoadFrameInfo() +{ + return imageLoad(rw_frame_info, ivec2(0, 0)); +} + +void StoreFrameInfo(FfxFloat32x4 fInfo) +{ + imageStore(rw_frame_info, ivec2(0, 0), fInfo); +} +#endif + +#if defined(FSR3UPSCALER_BIND_SRV_FRAME_INFO) +layout(set = 0, binding = FSR3UPSCALER_BIND_SRV_FRAME_INFO) uniform texture2D r_frame_info; + +FfxFloat32x4 FrameInfo() +{ + return texelFetch(r_frame_info, ivec2(0, 0), 0); +} +#endif + +#if defined(FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_0) && \ + defined(FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_1) && \ + defined(FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_2) && \ + defined(FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_3) && \ + defined(FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_4) && \ + defined(FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_5) + +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_0, rg16f) uniform image2D rw_spd_mip0; +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_1, rg16f) uniform image2D rw_spd_mip1; +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_2, rg16f) uniform image2D rw_spd_mip2; +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_3, rg16f) uniform image2D rw_spd_mip3; +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_4, rg16f) uniform image2D rw_spd_mip4; +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_5, rg16f) coherent uniform image2D rw_spd_mip5; + +FfxFloat32x2 RWLoadPyramid(FFX_PARAMETER_IN FfxInt32x2 iPxPos, FFX_PARAMETER_IN FfxUInt32 index) +{ +#define LOAD(idx) \ + if (index == idx) \ + { \ + return imageLoad(rw_spd_mip##idx, iPxPos).xy; \ + } + LOAD(0); + LOAD(1); + LOAD(2); + LOAD(3); + LOAD(4); + LOAD(5); + + return FfxFloat32x2(0.0, 0.0); + +#undef LOAD +} + +void StorePyramid(FFX_PARAMETER_IN FfxInt32x2 iPxPos, FFX_PARAMETER_IN FfxFloat32x2 outValue, FFX_PARAMETER_IN FfxUInt32 index) +{ +#define STORE(idx) \ + if (index == idx) \ + { \ + imageStore(rw_spd_mip##idx, iPxPos, vec4(outValue, 0.0, 0.0)); \ + } + + STORE(0); + STORE(1); + STORE(2); + STORE(3); + STORE(4); + STORE(5); + +#undef STORE +} +#endif + +#if defined FSR3UPSCALER_BIND_UAV_SPD_GLOBAL_ATOMIC +layout (set = 0, binding = FSR3UPSCALER_BIND_UAV_SPD_GLOBAL_ATOMIC, r32ui) coherent uniform uimage2D rw_spd_global_atomic; + +void SPD_IncreaseAtomicCounter(inout FfxUInt32 spdCounter) +{ + spdCounter = imageAtomicAdd(rw_spd_global_atomic, ivec2(0, 0), 1); +} + +void SPD_ResetAtomicCounter() +{ + imageStore(rw_spd_global_atomic, ivec2(0, 0), uvec4(0)); +} +#endif + +#endif // #if defined(FFX_GPU) diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_common.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_common.h new file mode 100644 index 000000000..87aa596db --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_common.h @@ -0,0 +1,403 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#if !defined(FFX_FSR3UPSCALER_COMMON_H) +#define FFX_FSR3UPSCALER_COMMON_H + +#if defined(FFX_GPU) +#pragma warning(error : 3206) // treat vector truncation warnings as errors +#pragma warning(disable : 3205) // conversion from larger type to smaller +#pragma warning(disable : 3571) // in ffxPow(f, e), f could be negative + +FFX_STATIC const FfxFloat32 FSR3UPSCALER_FP16_MIN = 6.10e-05f; +FFX_STATIC const FfxFloat32 FSR3UPSCALER_FP16_MAX = 65504.0f; +FFX_STATIC const FfxFloat32 FSR3UPSCALER_EPSILON = FSR3UPSCALER_FP16_MIN; +FFX_STATIC const FfxFloat32 FSR3UPSCALER_TONEMAP_EPSILON = FSR3UPSCALER_FP16_MIN; +FFX_STATIC const FfxFloat32 FSR3UPSCALER_FP32_MAX = 3.402823466e+38f; +FFX_STATIC const FfxFloat32 FSR3UPSCALER_FP32_MIN = 1.175494351e-38f; + +// Reconstructed depth usage +FFX_STATIC const FfxFloat32 fReconstructedDepthBilinearWeightThreshold = FSR3UPSCALER_EPSILON * 10; + +FfxFloat32 ReconstructedDepthMvPxThreshold(FfxFloat32 fNearestDepthInMeters) +{ + return ffxLerp(0.25f, 0.75f, ffxSaturate(fNearestDepthInMeters / 100.0f)); +} + +// Accumulation +FFX_STATIC const FfxFloat32 fUpsampleLanczosWeightScale = 1.0f / 16.0f; +FFX_STATIC const FfxFloat32 fAverageLanczosWeightPerFrame = 0.74f * fUpsampleLanczosWeightScale; // Average lanczos weight for jitter accumulated samples +FFX_STATIC const FfxFloat32 fAccumulationMaxOnMotion = 3.0f * fUpsampleLanczosWeightScale; + +#define SHADING_CHANGE_SET_SIZE 5 +FFX_STATIC const FfxInt32 iShadingChangeMipStart = 0; +FFX_STATIC const FfxFloat32 fShadingChangeSamplePow = 1.0f / 1.0f; + + +FFX_STATIC const FfxFloat32 fLockThreshold = 1.0f; +FFX_STATIC const FfxFloat32 fLockMax = 2.0f; + +FFX_STATIC const FfxInt32 REACTIVE = 0; +FFX_STATIC const FfxInt32 DISOCCLUSION = 1; +FFX_STATIC const FfxInt32 SHADING_CHANGE = 2; +FFX_STATIC const FfxInt32 ACCUMULAION = 3; + +FFX_STATIC const FfxInt32 FRAME_INFO_EXPOSURE = 0; +FFX_STATIC const FfxInt32 FRAME_INFO_LOG_LUMA = 1; +FFX_STATIC const FfxInt32 FRAME_INFO_SCENE_AVERAGE_LUMA = 2; + +FfxBoolean TonemapFirstFrame() +{ + const FfxBoolean bEnabled = true; + return FrameIndex() == 0 && bEnabled; +} + +FfxFloat32 AverageLanczosWeightPerFrame() +{ + return 0.74f; +} + +FfxInt32x2 ShadingChangeRenderSize() +{ + return FfxInt32x2(RenderSize() * 0.5f); +} + +FfxInt32x2 ShadingChangeMaxRenderSize() +{ + return FfxInt32x2(MaxRenderSize() * 0.5f); +} + +FfxInt32x2 PreviousFrameShadingChangeRenderSize() +{ + return FfxInt32x2(PreviousFrameRenderSize() * 0.5f); +} + +#if defined(FSR3UPSCALER_BIND_SRV_FRAME_INFO) +FfxFloat32 SceneAverageLuma() +{ + return FrameInfo()[FRAME_INFO_SCENE_AVERAGE_LUMA]; +} +#endif + +// Auto exposure +FFX_STATIC const FfxFloat32 resetAutoExposureAverageSmoothing = 1e4f; + +struct AccumulationPassCommonParams +{ + FfxInt32x2 iPxHrPos; + FfxFloat32x2 fHrUv; + FfxFloat32x2 fLrUvJittered; + FfxFloat32x2 fLrUv_HwSampler; + FfxFloat32x2 fMotionVector; + FfxFloat32x2 fReprojectedHrUv; + FfxFloat32 f4KVelocity; + FfxFloat32 fDisocclusion; + FfxFloat32 fReactiveMask; + FfxFloat32 fShadingChange; + FfxFloat32 fAccumulation; + FfxFloat32 fLumaInstabilityFactor; + FfxFloat32 fFarthestDepthInMeters; + + FfxBoolean bIsExistingSample; + FfxBoolean bIsNewSample; +}; + +FfxFloat32 Get4KVelocity(FfxFloat32x2 fMotionVector) +{ + return length(fMotionVector * FfxFloat32x2(3840.0f, 2160.0f)); +} + +struct RectificationBox +{ + FfxFloat32x3 boxCenter; + FfxFloat32x3 boxVec; + FfxFloat32x3 aabbMin; + FfxFloat32x3 aabbMax; + FfxFloat32 fBoxCenterWeight; +}; + +struct AccumulationPassData +{ + RectificationBox clippingBox; + FfxFloat32x3 fUpsampledColor; + FfxFloat32 fUpsampledWeight; + FfxFloat32x3 fHistoryColor; + FfxFloat32 fHistoryWeight; + FfxFloat32 fLock; + FfxFloat32 fLockContributionThisFrame; +}; + +void RectificationBoxAddInitialSample(FFX_PARAMETER_INOUT RectificationBox rectificationBox, const FfxFloat32x3 colorSample, const FfxFloat32 fSampleWeight) +{ + rectificationBox.aabbMin = colorSample; + rectificationBox.aabbMax = colorSample; + + FfxFloat32x3 weightedSample = colorSample * fSampleWeight; + rectificationBox.boxCenter = weightedSample; + rectificationBox.boxVec = colorSample * weightedSample; + rectificationBox.fBoxCenterWeight = fSampleWeight; +} + +void RectificationBoxAddSample(FfxBoolean bInitialSample, FFX_PARAMETER_INOUT RectificationBox rectificationBox, const FfxFloat32x3 colorSample, const FfxFloat32 fSampleWeight) +{ + if (bInitialSample) { + RectificationBoxAddInitialSample(rectificationBox, colorSample, fSampleWeight); + } else { + rectificationBox.aabbMin = ffxMin(rectificationBox.aabbMin, colorSample); + rectificationBox.aabbMax = ffxMax(rectificationBox.aabbMax, colorSample); + + FfxFloat32x3 weightedSample = colorSample * fSampleWeight; + rectificationBox.boxCenter += weightedSample; + rectificationBox.boxVec += colorSample * weightedSample; + rectificationBox.fBoxCenterWeight += fSampleWeight; + } +} + +void RectificationBoxComputeVarianceBoxData(FFX_PARAMETER_INOUT RectificationBox rectificationBox) +{ + rectificationBox.fBoxCenterWeight = (abs(rectificationBox.fBoxCenterWeight) > FfxFloat32(FSR3UPSCALER_FP32_MIN) ? rectificationBox.fBoxCenterWeight : FfxFloat32(1.f)); + rectificationBox.boxCenter /= rectificationBox.fBoxCenterWeight; + rectificationBox.boxVec /= rectificationBox.fBoxCenterWeight; + FfxFloat32x3 stdDev = sqrt(abs(rectificationBox.boxVec - rectificationBox.boxCenter * rectificationBox.boxCenter)); + rectificationBox.boxVec = stdDev; +} + +FfxFloat32x3 SafeRcp3(FfxFloat32x3 v) +{ + return (all(FFX_NOT_EQUAL(v, FfxFloat32x3(0, 0, 0)))) ? (FfxFloat32x3(1, 1, 1) / v) : FfxFloat32x3(0, 0, 0); +} + +FfxFloat32 MinDividedByMax(const FfxFloat32 v0, const FfxFloat32 v1, const FfxFloat32 fOnZeroReturnValue) +{ + const FfxFloat32 m = ffxMax(v0, v1); + return m != 0 ? ffxMin(v0, v1) / m : fOnZeroReturnValue; +} + +FfxFloat32 MinDividedByMax(const FfxFloat32 v0, const FfxFloat32 v1) +{ + const FfxFloat32 m = ffxMax(v0, v1); + return m != 0 ? ffxMin(v0, v1) / m : 0; +} + +FfxFloat32x3 YCoCgToRGB(FfxFloat32x3 fYCoCg) +{ + FfxFloat32x3 fRgb; + + fRgb = FfxFloat32x3( + fYCoCg.x + fYCoCg.y - fYCoCg.z, + fYCoCg.x + fYCoCg.z, + fYCoCg.x - fYCoCg.y - fYCoCg.z); + + return fRgb; +} + +FfxFloat32x3 RGBToYCoCg(FfxFloat32x3 fRgb) +{ + FfxFloat32x3 fYCoCg; + + fYCoCg = FfxFloat32x3( + 0.25f * fRgb.r + 0.5f * fRgb.g + 0.25f * fRgb.b, + 0.5f * fRgb.r - 0.5f * fRgb.b, + -0.25f * fRgb.r + 0.5f * fRgb.g - 0.25f * fRgb.b); + + return fYCoCg; +} + +FfxFloat32 RGBToLuma(FfxFloat32x3 fLinearRgb) +{ + return dot(fLinearRgb, FfxFloat32x3(0.2126f, 0.7152f, 0.0722f)); +} + +FfxFloat32 RGBToPerceivedLuma(FfxFloat32x3 fLinearRgb) +{ + FfxFloat32 fLuminance = RGBToLuma(fLinearRgb); + + FfxFloat32 fPercievedLuminance = 0; + if (fLuminance <= 216.0f / 24389.0f) { + fPercievedLuminance = fLuminance * (24389.0f / 27.0f); + } + else { + fPercievedLuminance = ffxPow(fLuminance, 1.0f / 3.0f) * 116.0f - 16.0f; + } + + return fPercievedLuminance * 0.01f; +} + +FfxFloat32x3 Tonemap(FfxFloat32x3 fRgb) +{ + return fRgb / (ffxMax(ffxMax(0.f, fRgb.r), ffxMax(fRgb.g, fRgb.b)) + 1.f).xxx; +} + +FfxFloat32x3 InverseTonemap(FfxFloat32x3 fRgb) +{ + return fRgb / ffxMax(FSR3UPSCALER_TONEMAP_EPSILON, 1.f - ffxMax(fRgb.r, ffxMax(fRgb.g, fRgb.b))).xxx; +} + +FfxBoolean IsUvInside(FfxFloat32x2 fUv) +{ + return (fUv.x >= 0.0f && fUv.x <= 1.0f) && (fUv.y >= 0.0f && fUv.y <= 1.0f); +} + +FfxInt32x2 ClampLoad(FfxInt32x2 iPxSample, FfxInt32x2 iPxOffset, FfxInt32x2 iTextureSize) +{ + FfxInt32x2 result = iPxSample + iPxOffset; + result.x = ffxMax(0, ffxMin(result.x, iTextureSize.x - 1)); + result.y = ffxMax(0, ffxMin(result.y, iTextureSize.y - 1)); + return result; +} + +FfxFloat32x2 ClampUv(FfxFloat32x2 fUv, FfxInt32x2 iTextureSize, FfxInt32x2 iResourceSize) +{ + const FfxFloat32x2 fSampleLocation = fUv * iTextureSize; + const FfxFloat32x2 fClampedLocation = ffxMax(FfxFloat32x2(0.5f, 0.5f), ffxMin(fSampleLocation, FfxFloat32x2(iTextureSize) - FfxFloat32x2(0.5f, 0.5f))); + const FfxFloat32x2 fClampedUv = fClampedLocation / FfxFloat32x2(iResourceSize); + + return fClampedUv; +} + +FfxBoolean IsOnScreen(FfxInt32x2 pos, FfxInt32x2 size) +{ + return all(FFX_LESS_THAN(FfxUInt32x2(pos), FfxUInt32x2(size))); +} + +FfxFloat32 ComputeAutoExposureFromLavg(FfxFloat32 Lavg) +{ + Lavg = exp(Lavg); + + const FfxFloat32 S = 100.0f; //ISO arithmetic speed + const FfxFloat32 K = 12.5f; + FfxFloat32 ExposureISO100 = log2((Lavg * S) / K); + + const FfxFloat32 q = 0.65f; + FfxFloat32 Lmax = (78.0f / (q * S)) * ffxPow(2.0f, ExposureISO100); + + return 1.0f / Lmax; +} + +FfxInt32x2 ComputeHrPosFromLrPos(FfxInt32x2 iPxLrPos) +{ + FfxFloat32x2 fSrcJitteredPos = FfxFloat32x2(iPxLrPos) + 0.5f - Jitter(); + FfxFloat32x2 fLrPosInHr = (fSrcJitteredPos / RenderSize()) * UpscaleSize(); + FfxInt32x2 iPxHrPos = FfxInt32x2(floor(fLrPosInHr)); + return iPxHrPos; +} + +FfxFloat32x2 ComputeNdc(FfxFloat32x2 fPxPos, FfxInt32x2 iSize) +{ + return fPxPos / FfxFloat32x2(iSize) * FfxFloat32x2(2.0f, -2.0f) + FfxFloat32x2(-1.0f, 1.0f); +} + +FfxFloat32 GetViewSpaceDepth(FfxFloat32 fDeviceDepth) +{ + const FfxFloat32x4 fDeviceToViewDepth = DeviceToViewSpaceTransformFactors(); + + // fDeviceToViewDepth details found in ffx_fsr3upscaler.cpp + return (fDeviceToViewDepth[1] / (fDeviceDepth - fDeviceToViewDepth[0])); +} + +FfxFloat32 GetViewSpaceDepthInMeters(FfxFloat32 fDeviceDepth) +{ + return GetViewSpaceDepth(fDeviceDepth) * ViewSpaceToMetersFactor(); +} + +FfxFloat32x3 GetViewSpacePosition(FfxInt32x2 iViewportPos, FfxInt32x2 iViewportSize, FfxFloat32 fDeviceDepth) +{ + const FfxFloat32x4 fDeviceToViewDepth = DeviceToViewSpaceTransformFactors(); + + const FfxFloat32 Z = GetViewSpaceDepth(fDeviceDepth); + + const FfxFloat32x2 fNdcPos = ComputeNdc(iViewportPos, iViewportSize); + const FfxFloat32 X = fDeviceToViewDepth[2] * fNdcPos.x * Z; + const FfxFloat32 Y = fDeviceToViewDepth[3] * fNdcPos.y * Z; + + return FfxFloat32x3(X, Y, Z); +} + +FfxFloat32x3 GetViewSpacePositionInMeters(FfxInt32x2 iViewportPos, FfxInt32x2 iViewportSize, FfxFloat32 fDeviceDepth) +{ + return GetViewSpacePosition(iViewportPos, iViewportSize, fDeviceDepth) * ViewSpaceToMetersFactor(); +} + +FfxFloat32 GetMaxDistanceInMeters() +{ +#if FFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH + return GetViewSpaceDepth(0.0f) * ViewSpaceToMetersFactor(); +#else + return GetViewSpaceDepth(1.0f) * ViewSpaceToMetersFactor(); +#endif +} + + +struct BilinearSamplingData +{ + FfxInt32x2 iOffsets[4]; + FfxFloat32 fWeights[4]; + FfxInt32x2 iBasePos; +}; + +BilinearSamplingData GetBilinearSamplingData(FfxFloat32x2 fUv, FfxInt32x2 iSize) +{ + BilinearSamplingData data; + + FfxFloat32x2 fPxSample = (fUv * iSize) - FfxFloat32x2(0.5f, 0.5f); + data.iBasePos = FfxInt32x2(floor(fPxSample)); + FfxFloat32x2 fPxFrac = ffxFract(fPxSample); + + data.iOffsets[0] = FfxInt32x2(0, 0); + data.iOffsets[1] = FfxInt32x2(1, 0); + data.iOffsets[2] = FfxInt32x2(0, 1); + data.iOffsets[3] = FfxInt32x2(1, 1); + + data.fWeights[0] = (1 - fPxFrac.x) * (1 - fPxFrac.y); + data.fWeights[1] = (fPxFrac.x) * (1 - fPxFrac.y); + data.fWeights[2] = (1 - fPxFrac.x) * (fPxFrac.y); + data.fWeights[3] = (fPxFrac.x) * (fPxFrac.y); + + return data; +} + +struct PlaneData +{ + FfxFloat32x3 fNormal; + FfxFloat32 fDistanceFromOrigin; +}; + +PlaneData GetPlaneFromPoints(FfxFloat32x3 fP0, FfxFloat32x3 fP1, FfxFloat32x3 fP2) +{ + PlaneData plane; + + FfxFloat32x3 v0 = fP0 - fP1; + FfxFloat32x3 v1 = fP0 - fP2; + plane.fNormal = normalize(cross(v0, v1)); + plane.fDistanceFromOrigin = -dot(fP0, plane.fNormal); + + return plane; +} + +FfxFloat32 PointToPlaneDistance(PlaneData plane, FfxFloat32x3 fPoint) +{ + return abs(dot(plane.fNormal, fPoint) + plane.fDistanceFromOrigin); +} + +#endif // #if defined(FFX_GPU) + +#endif //!defined(FFX_FSR3UPSCALER_COMMON_H) diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_instability.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_instability.h new file mode 100644 index 000000000..624b7ca94 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_instability.h @@ -0,0 +1,115 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +struct LumaInstabilityFactorData +{ + FfxFloat32x4 fLumaHistory; + FfxFloat32 fLumaInstabilityFactor; +}; + +LumaInstabilityFactorData ComputeLumaInstabilityFactor(LumaInstabilityFactorData data, FfxFloat32 fCurrentFrameLuma, FfxFloat32 fFarthestDepthInMeters) +{ + const FfxInt32 N_MINUS_1 = 0; + const FfxInt32 N_MINUS_2 = 1; + const FfxInt32 N_MINUS_3 = 2; + const FfxInt32 N_MINUS_4 = 3; + + FfxFloat32 fLumaInstability = 0.0f; + const FfxFloat32 fDiffs0 = (fCurrentFrameLuma - data.fLumaHistory[N_MINUS_1]); + const FfxFloat32 fSimilarity0 = MinDividedByMax(fCurrentFrameLuma, data.fLumaHistory[N_MINUS_1], 1.0f); + + FfxFloat32 fMaxSimilarity = fSimilarity0; + + if (fSimilarity0 < 1.0f) { + for (int i = N_MINUS_2; i <= N_MINUS_4; i++) { + const FfxFloat32 fDiffs1 = (fCurrentFrameLuma - data.fLumaHistory[i]); + const FfxFloat32 fSimilarity1 = MinDividedByMax(fCurrentFrameLuma, data.fLumaHistory[i]); + + if (sign(fDiffs0) == sign(fDiffs1)) { + + fMaxSimilarity = ffxMax(fMaxSimilarity, fSimilarity1); + } + } + + fLumaInstability = FfxFloat32(fMaxSimilarity > fSimilarity0); + } + + // Shift history + data.fLumaHistory[N_MINUS_4] = data.fLumaHistory[N_MINUS_3]; + data.fLumaHistory[N_MINUS_3] = data.fLumaHistory[N_MINUS_2]; + data.fLumaHistory[N_MINUS_2] = data.fLumaHistory[N_MINUS_1]; + data.fLumaHistory[N_MINUS_1] = fCurrentFrameLuma; + + data.fLumaHistory /= Exposure(); + + data.fLumaInstabilityFactor = fLumaInstability * FfxFloat32(data.fLumaHistory[N_MINUS_4] != 0); + + return data; +} + +void LumaInstability(FfxInt32x2 iPxPos) +{ + LumaInstabilityFactorData data; + data.fLumaInstabilityFactor = 0.0f; + data.fLumaHistory = FfxFloat32x4(0.0f, 0.0f, 0.0f, 0.0f); + + const FfxFloat32x2 fDilatedMotionVector = LoadDilatedMotionVector(iPxPos); + const FfxFloat32x2 fUv = (iPxPos + 0.5f) / RenderSize(); + const FfxFloat32x2 fUvCurrFrameJittered = fUv + Jitter() / RenderSize(); + const FfxFloat32x2 fUvPrevFrameJittered = fUv + PreviousFrameJitter() / PreviousFrameRenderSize(); + const FfxFloat32x2 fReprojectedUv = fUvPrevFrameJittered + fDilatedMotionVector; + + if (IsUvInside(fReprojectedUv)) + { + const FfxFloat32x2 fUvReactive_HW = ClampUv(fUvCurrFrameJittered, RenderSize(), MaxRenderSize()); + + const FfxFloat32x4 fDilatedReactiveMasks = SampleDilatedReactiveMasks(fUvReactive_HW); + const FfxFloat32 fReactiveMask = ffxSaturate(fDilatedReactiveMasks[REACTIVE]); + const FfxFloat32 fDisocclusion = ffxSaturate(fDilatedReactiveMasks[DISOCCLUSION]); + const FfxFloat32 fShadingChange = ffxSaturate(fDilatedReactiveMasks[SHADING_CHANGE]); + const FfxFloat32 fAccumulation = ffxSaturate(fDilatedReactiveMasks[ACCUMULAION]); + + const FfxBoolean bAccumulationFactor = fAccumulation > 0.9f; + + const FfxBoolean bComputeInstability = bAccumulationFactor; + + if (bComputeInstability) { + + const FfxFloat32x2 fUv_HW = ClampUv(fUvCurrFrameJittered, RenderSize(), MaxRenderSize()); + const FfxFloat32 fCurrentFrameLuma = SampleCurrentLuma(fUv_HW) * Exposure(); + + const FfxFloat32x2 fReprojectedUv_HW = ClampUv(fReprojectedUv, PreviousFrameRenderSize(), MaxRenderSize()); + data.fLumaHistory = SampleLumaHistory(fReprojectedUv_HW) * DeltaPreExposure() * Exposure(); + + const FfxFloat32x2 fFarthestDepthUv_HW = ClampUv(fUvCurrFrameJittered, RenderSize() / 2, GetFarthestDepthMip1ResourceDimensions()); + const FfxFloat32 fFarthestDepthInMeters = SampleFarthestDepthMip1(fFarthestDepthUv_HW); + + data = ComputeLumaInstabilityFactor(data, fCurrentFrameLuma, fFarthestDepthInMeters); + + const FfxFloat32 fVelocityWeight = 1.0f - ffxSaturate(Get4KVelocity(fDilatedMotionVector) / 20.0f); + data.fLumaInstabilityFactor *= fVelocityWeight * (1.0f - fDisocclusion) * (1.0f - fReactiveMask) * (1.0f - fShadingChange); + } + } + + StoreLumaHistory(iPxPos, data.fLumaHistory); + StoreLumaInstability(iPxPos, data.fLumaInstabilityFactor); +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid.h new file mode 100644 index 000000000..41c5dc7f4 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid.h @@ -0,0 +1,192 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +FFX_GROUPSHARED FfxUInt32 spdCounter; + +void SpdIncreaseAtomicCounter(FfxUInt32 slice) +{ + SPD_IncreaseAtomicCounter(spdCounter); +} + +FfxUInt32 SpdGetAtomicCounter() +{ + return spdCounter; +} + +void SpdResetAtomicCounter(FfxUInt32 slice) +{ + SPD_ResetAtomicCounter(); +} + +#ifndef SPD_PACKED_ONLY +FFX_GROUPSHARED FfxFloat32 spdIntermediateR[16][16]; +FFX_GROUPSHARED FfxFloat32 spdIntermediateG[16][16]; +FFX_GROUPSHARED FfxFloat32 spdIntermediateB[16][16]; +FFX_GROUPSHARED FfxFloat32 spdIntermediateA[16][16]; + +FFX_STATIC const FfxInt32 LOG_LUMA = 0; +FFX_STATIC const FfxInt32 LUMA = 1; +FFX_STATIC const FfxInt32 DEPTH_IN_METERS = 2; + +FfxFloat32x4 SpdLoadSourceImage(FfxFloat32x2 iPxPos, FfxUInt32 slice) +{ + //We assume linear data. if non-linear input (sRGB, ...), + //then we should convert to linear first and back to sRGB on output. + const FfxInt32x2 iPxSamplePos = ClampLoad(FfxInt32x2(iPxPos), FfxInt32x2(0, 0), FfxInt32x2(RenderSize())); + + const FfxFloat32 fLuma = LoadCurrentLuma(iPxSamplePos); + const FfxFloat32 fLogLuma = ffxMax(FSR3UPSCALER_EPSILON, log(fLuma)); + const FfxFloat32 fFarthestDepthInMeters = LoadFarthestDepth(iPxSamplePos); + + FfxFloat32x4 fOutput = FfxFloat32x4(0.0f, 0.0f, 0.0f, 0.0f); + fOutput[LOG_LUMA] = fLogLuma; + fOutput[LUMA] = fLuma; + fOutput[DEPTH_IN_METERS] = fFarthestDepthInMeters; + + return fOutput; +} + +FfxFloat32x4 SpdLoad(FfxInt32x2 tex, FfxUInt32 slice) +{ + return FfxFloat32x4(RWLoadPyramid(tex, 5), 0, 0); +} + +FfxFloat32x4 SpdReduce4(FfxFloat32x4 v0, FfxFloat32x4 v1, FfxFloat32x4 v2, FfxFloat32x4 v3) +{ + return (v0 + v1 + v2 + v3) * 0.25f; +} + +void SpdStore(FfxInt32x2 pix, FfxFloat32x4 outValue, FfxUInt32 index, FfxUInt32 slice) +{ + if (index == 5) + { + StorePyramid(pix, outValue.xy, index); + } + else if (index == 0) { + StoreFarthestDepthMip1(pix, outValue[DEPTH_IN_METERS]); + } + + if (index == MipCount() - 1) { //accumulate on 1x1 level + + if (all(FFX_EQUAL(pix, FfxInt32x2(0, 0)))) + { + FfxFloat32x4 frameInfo = LoadFrameInfo(); + const FfxFloat32 fSceneAvgLuma = outValue[LUMA]; + const FfxFloat32 fPrevLogLuma = frameInfo[FRAME_INFO_LOG_LUMA]; + FfxFloat32 fLogLuma = outValue[LOG_LUMA]; + + if (fPrevLogLuma < resetAutoExposureAverageSmoothing) // Compare Lavg, so small or negative values + { + fLogLuma = fPrevLogLuma + (fLogLuma - fPrevLogLuma) * (1.0f - exp(-DeltaTime())); + fLogLuma = ffxMax(0.0f, fLogLuma); + } + + frameInfo[FRAME_INFO_EXPOSURE] = ComputeAutoExposureFromLavg(fLogLuma); + frameInfo[FRAME_INFO_LOG_LUMA] = fLogLuma; + frameInfo[FRAME_INFO_SCENE_AVERAGE_LUMA] = fSceneAvgLuma; + + StoreFrameInfo(frameInfo); + } + } +} + +FfxFloat32x4 SpdLoadIntermediate(FfxUInt32 x, FfxUInt32 y) +{ + return FfxFloat32x4( + spdIntermediateR[x][y], + spdIntermediateG[x][y], + spdIntermediateB[x][y], + spdIntermediateA[x][y]); +} +void SpdStoreIntermediate(FfxUInt32 x, FfxUInt32 y, FfxFloat32x4 value) +{ + spdIntermediateR[x][y] = value.x; + spdIntermediateG[x][y] = value.y; + spdIntermediateB[x][y] = value.z; + spdIntermediateA[x][y] = value.w; +} + +#endif + +// define fetch and store functions Packed +#if FFX_HALF + +FFX_GROUPSHARED FfxFloat16x2 spdIntermediateRG[16][16]; +FFX_GROUPSHARED FfxFloat16x2 spdIntermediateBA[16][16]; + +FfxFloat16x4 SpdLoadSourceImageH(FfxFloat32x2 tex, FfxUInt32 slice) +{ + return FfxFloat16x4(0, 0, 0, 0); +} + +FfxFloat16x4 SpdLoadH(FfxInt32x2 p, FfxUInt32 slice) +{ + return FfxFloat16x4(0, 0, 0, 0); +} + +void SpdStoreH(FfxInt32x2 p, FfxFloat16x4 value, FfxUInt32 mip, FfxUInt32 slice) +{ +} + +FfxFloat16x4 SpdLoadIntermediateH(FfxUInt32 x, FfxUInt32 y) +{ + return FfxFloat16x4( + spdIntermediateRG[x][y].x, + spdIntermediateRG[x][y].y, + spdIntermediateBA[x][y].x, + spdIntermediateBA[x][y].y); +} + +void SpdStoreIntermediateH(FfxUInt32 x, FfxUInt32 y, FfxFloat16x4 value) +{ + spdIntermediateRG[x][y] = value.xy; + spdIntermediateBA[x][y] = value.zw; +} + +FfxFloat16x4 SpdReduce4H(FfxFloat16x4 v0, FfxFloat16x4 v1, FfxFloat16x4 v2, FfxFloat16x4 v3) +{ + return (v0 + v1 + v2 + v3) * FfxFloat16(0.25); +} +#endif + +#include "spd/ffx_spd.h" + +void ComputeAutoExposure(FfxUInt32x3 WorkGroupId, FfxUInt32 LocalThreadIndex) +{ +#if FFX_HALF + SpdDownsampleH( + FfxUInt32x2(WorkGroupId.xy), + FfxUInt32(LocalThreadIndex), + FfxUInt32(MipCount()), + FfxUInt32(NumWorkGroups()), + FfxUInt32(WorkGroupId.z), + FfxUInt32x2(WorkGroupOffset())); +#else + SpdDownsample( + FfxUInt32x2(WorkGroupId.xy), + FfxUInt32(LocalThreadIndex), + FfxUInt32(MipCount()), + FfxUInt32(NumWorkGroups()), + FfxUInt32(WorkGroupId.z), + FfxUInt32x2(WorkGroupOffset())); +#endif +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs.h new file mode 100644 index 000000000..59c765b52 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs.h @@ -0,0 +1,152 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +void ReconstructPrevDepth(FfxInt32x2 iPxPos, FfxFloat32 fDepth, FfxFloat32x2 fMotionVector) +{ + const FfxFloat32 fNearestDepthInMeters = ffxMin(GetViewSpaceDepthInMeters(fDepth), FSR3UPSCALER_FP16_MAX); + const FfxFloat32 fReconstructedDeptMvThreshold = ReconstructedDepthMvPxThreshold(fNearestDepthInMeters); + + // Discard small mvs + fMotionVector *= FfxFloat32(Get4KVelocity(fMotionVector) > fReconstructedDeptMvThreshold); + + const FfxFloat32x2 fUv = (iPxPos + FfxFloat32(0.5)) / RenderSize(); + const FfxFloat32x2 fReprojectedUv = fUv + fMotionVector; + const BilinearSamplingData bilinearInfo = GetBilinearSamplingData(fReprojectedUv, RenderSize()); + + // Project current depth into previous frame locations. + // Push to all pixels having some contribution if reprojection is using bilinear logic. + for (FfxInt32 iSampleIndex = 0; iSampleIndex < 4; iSampleIndex++) { + + const FfxInt32x2 iOffset = bilinearInfo.iOffsets[iSampleIndex]; + const FfxFloat32 fWeight = bilinearInfo.fWeights[iSampleIndex]; + + if (fWeight > fReconstructedDepthBilinearWeightThreshold) { + + const FfxInt32x2 iStorePos = bilinearInfo.iBasePos + iOffset; + if (IsOnScreen(iStorePos, RenderSize())) { + StoreReconstructedDepth(iStorePos, fDepth); + } + } + } +} + +struct DepthExtents +{ + FfxFloat32 fNearest; + FfxInt32x2 fNearestCoord; + FfxFloat32 fFarthest; +}; + +DepthExtents FindDepthExtents(FFX_PARAMETER_IN FfxInt32x2 iPxPos) +{ + DepthExtents extents; + const FfxInt32 iSampleCount = 9; + const FfxInt32x2 iSampleOffsets[iSampleCount] = { + FfxInt32x2(+0, +0), + FfxInt32x2(+1, +0), + FfxInt32x2(+0, +1), + FfxInt32x2(+0, -1), + FfxInt32x2(-1, +0), + FfxInt32x2(-1, +1), + FfxInt32x2(+1, +1), + FfxInt32x2(-1, -1), + FfxInt32x2(+1, -1), + }; + + // pull out the depth loads to allow SC to batch them + FfxFloat32 depth[9]; + FfxInt32 iSampleIndex = 0; + FFX_UNROLL + for (iSampleIndex = 0; iSampleIndex < iSampleCount; ++iSampleIndex) { + + FfxInt32x2 iPos = iPxPos + iSampleOffsets[iSampleIndex]; + depth[iSampleIndex] = LoadInputDepth(iPos); + } + + // find closest depth + extents.fNearestCoord = iPxPos; + extents.fNearest = depth[0]; + extents.fFarthest = depth[0]; + FFX_UNROLL + for (iSampleIndex = 1; iSampleIndex < iSampleCount; ++iSampleIndex) { + + const FfxInt32x2 iPos = iPxPos + iSampleOffsets[iSampleIndex]; + if (IsOnScreen(iPos, RenderSize())) { + + FfxFloat32 fNdDepth = depth[iSampleIndex]; +#if FFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH + if (fNdDepth > extents.fNearest) { + extents.fFarthest = ffxMin(extents.fFarthest, fNdDepth); +#else + if (fNdDepth < extents.fNearest) { + extents.fFarthest = ffxMax(extents.fFarthest, fNdDepth); +#endif + extents.fNearestCoord = iPos; + extents.fNearest = fNdDepth; + } + } + } + + return extents; +} + +FfxFloat32x2 DilateMotionVector(FfxInt32x2 iPxPos, const DepthExtents depthExtents) +{ +#if FFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS + const FfxInt32x2 iSamplePos = iPxPos; + const FfxInt32x2 iMotionVectorPos = depthExtents.fNearestCoord; +#else + const FfxInt32x2 iSamplePos = ComputeHrPosFromLrPos(iPxPos); + const FfxInt32x2 iMotionVectorPos = ComputeHrPosFromLrPos(depthExtents.fNearestCoord); +#endif + + const FfxFloat32x2 fDilatedMotionVector = LoadInputMotionVector(iMotionVectorPos); + + return fDilatedMotionVector; +} + +FfxFloat32 GetCurrentFrameLuma(FfxInt32x2 iPxPos) +{ + //We assume linear data. if non-linear input (sRGB, ...), + //then we should convert to linear first and back to sRGB on output. + const FfxFloat32x3 fRgb = ffxMax(FfxFloat32x3(0, 0, 0), LoadInputColor(iPxPos)); + const FfxFloat32 fLuma = RGBToLuma(fRgb); + + return fLuma; +} + +void PrepareInputs(FfxInt32x2 iPxPos) +{ + const DepthExtents depthExtents = FindDepthExtents(iPxPos); + const FfxFloat32x2 fDilatedMotionVector = DilateMotionVector(iPxPos, depthExtents); + + ReconstructPrevDepth(iPxPos, depthExtents.fNearest, fDilatedMotionVector); + + StoreDilatedMotionVector(iPxPos, fDilatedMotionVector); + StoreDilatedDepth(iPxPos, depthExtents.fNearest); + + const FfxFloat32 fFarthestDepthInMeters = ffxMin(GetViewSpaceDepthInMeters(depthExtents.fFarthest), FSR3UPSCALER_FP16_MAX); + StoreFarthestDepth(iPxPos, fFarthestDepthInMeters); + + const FfxFloat32 fLuma = GetCurrentFrameLuma(iPxPos); + StoreCurrentLuma(iPxPos, fLuma); +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity.h new file mode 100644 index 000000000..ae24545c8 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity.h @@ -0,0 +1,283 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +FfxFloat32 ComputeDisocclusions(FfxFloat32x2 fUv, FfxFloat32x2 fMotionVector, FfxFloat32 fCurrentDepthViewSpace) +{ + const FfxFloat32 fNearestDepthInMeters = ffxMin(fCurrentDepthViewSpace * ViewSpaceToMetersFactor(), FSR3UPSCALER_FP16_MAX); + const FfxFloat32 fReconstructedDeptMvThreshold = ReconstructedDepthMvPxThreshold(fNearestDepthInMeters); + + fMotionVector *= FfxFloat32(Get4KVelocity(fMotionVector) > fReconstructedDeptMvThreshold); + + const FfxFloat32x2 fReprojectedUv = fUv + fMotionVector; + const BilinearSamplingData bilinearInfo = GetBilinearSamplingData(fReprojectedUv, RenderSize()); + + FfxFloat32 fDisocclusion = 0.0f; + FfxFloat32 fWeightSum = 0.0f; + FfxBoolean bPotentialDisocclusion = true; + + for (FfxInt32 iSampleIndex = 0; iSampleIndex < 4 && bPotentialDisocclusion; iSampleIndex++) + { + + const FfxInt32x2 iOffset = bilinearInfo.iOffsets[iSampleIndex]; + const FfxInt32x2 iSamplePos = ClampLoad(bilinearInfo.iBasePos, iOffset, FfxInt32x2(RenderSize())); + + if (IsOnScreen(iSamplePos, RenderSize())) { + const FfxFloat32 fWeight = bilinearInfo.fWeights[iSampleIndex]; + if (fWeight > fReconstructedDepthBilinearWeightThreshold) { + + const FfxFloat32 fPrevNearestDepthViewSpace = GetViewSpaceDepth(LoadReconstructedPrevDepth(iSamplePos)); + const FfxFloat32 fDepthDifference = fCurrentDepthViewSpace - fPrevNearestDepthViewSpace; + + bPotentialDisocclusion = bPotentialDisocclusion && (fDepthDifference > FSR3UPSCALER_FP32_MIN); + + if (bPotentialDisocclusion) { + const FfxFloat32 fHalfViewportWidth = length(FfxFloat32x2(RenderSize()) * 0.5f); + const FfxFloat32 fDepthThreshold = ffxMax(fCurrentDepthViewSpace, fPrevNearestDepthViewSpace); + + const FfxFloat32 Ksep = 1.37e-05f; + const FfxFloat32 fRequiredDepthSeparation = Ksep * fHalfViewportWidth * fDepthThreshold; + + fDisocclusion += ffxSaturate(FfxFloat32(fRequiredDepthSeparation / fDepthDifference)) * fWeight; + fWeightSum += fWeight; + } + } + } + } + + fDisocclusion = (bPotentialDisocclusion && fWeightSum > 0) ? ffxSaturate(1.0f - fDisocclusion / fWeightSum) : 0.0f; + + return fDisocclusion; +} + +FfxFloat32 ComputeMotionDivergence(FfxFloat32x2 fUv, FfxFloat32x2 fMotionVector, FfxFloat32 fCurrentDepthSample) +{ + const FfxInt32x2 iPxReprojectedPos = FfxInt32x2((fUv + fMotionVector) * RenderSize()); + const FfxFloat32 fReprojectedDepth = LoadDilatedDepth(iPxReprojectedPos); + const FfxFloat32x2 fReprojectedMotionVector = LoadDilatedMotionVector(iPxReprojectedPos); + + const FfxFloat32 fReprojectedVelocity = Get4KVelocity(fReprojectedMotionVector); + const FfxFloat32 f4KVelocity = Get4KVelocity(fMotionVector); + + const FfxFloat32 fMaxLen = max(length(fMotionVector), length(fReprojectedMotionVector)); + + const FfxFloat32 fNucleusDepthInMeters = GetViewSpaceDepthInMeters(fReprojectedDepth); + const FfxFloat32 fCurrentDepthInMeters = GetViewSpaceDepthInMeters(fCurrentDepthSample); + + const FfxFloat32 fDistanceFactor = MinDividedByMax(fNucleusDepthInMeters, fCurrentDepthInMeters); + const FfxFloat32 fVelocityFactor = ffxSaturate(f4KVelocity / 10.0f); + const FfxFloat32 fMotionVectorFieldConfidence = (1.0f - ffxSaturate(fReprojectedVelocity / f4KVelocity)) * fDistanceFactor * fVelocityFactor; + + return fMotionVectorFieldConfidence; +} + +FfxFloat32 DilateReactiveMasks(FfxInt32x2 iPxPos, FfxFloat32x2 fUv) +{ + FfxFloat32 fDilatedReactiveMasks = 0.0f; + + FFX_UNROLL + for (FfxInt32 y = -1; y <=1; y++) + { + FFX_UNROLL + for (FfxInt32 x = -1; x <= 1; x++) + { + const FfxInt32x2 sampleCoord = ClampLoad(iPxPos, FfxInt32x2(x, y), FfxInt32x2(RenderSize())); + fDilatedReactiveMasks = ffxMax(fDilatedReactiveMasks, LoadReactiveMask(sampleCoord)); + } + } + + return fDilatedReactiveMasks; +} + +FfxFloat32 DilateTransparencyAndCompositionMasks(FfxInt32x2 iPxPos, FfxFloat32x2 fUv) +{ + const FfxFloat32x2 fUvTransparencyAndCompositionMask = ClampUv(fUv, RenderSize(), GetTransparencyAndCompositionMaskResourceDimensions()); + return SampleTransparencyAndCompositionMask(fUvTransparencyAndCompositionMask); +} + +FfxFloat32 ComputeThinFeatureConfidence(FfxInt32x2 iPxPos) +{ + /* + 1 2 3 + 4 0 5 + 6 7 8 + */ + + const FfxInt32 iNucleusIndex = 0; + const FfxInt32 iSampleCount = 9; + const FfxInt32x2 iSampleOffsets[iSampleCount] = { + FfxInt32x2(+0, +0), + FfxInt32x2(-1, -1), + FfxInt32x2(+0, -1), + FfxInt32x2(+1, -1), + FfxInt32x2(-1, +0), + FfxInt32x2(+1, +0), + FfxInt32x2(-1, +1), + FfxInt32x2(+0, +1), + FfxInt32x2(+1, +1), + }; + + FfxFloat32 fSamples[iSampleCount]; + + FfxFloat32 fLumaMin = FSR3UPSCALER_FP32_MAX; + FfxFloat32 fLumaMax = FSR3UPSCALER_FP32_MIN; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 0; iSampleIndex < iSampleCount; ++iSampleIndex) { + const FfxInt32x2 iPxSamplePos = ClampLoad(iPxPos, iSampleOffsets[iSampleIndex], FfxInt32x2(RenderSize())); + fSamples[iSampleIndex] = LoadCurrentLuma(iPxSamplePos) * Exposure(); + + fLumaMin = ffxMin(fLumaMin, fSamples[iSampleIndex]); + fLumaMax = ffxMax(fLumaMax, fSamples[iSampleIndex]); + } + + const FfxFloat32 fThreshold = 0.9f; + FfxFloat32 fDissimilarLumaMin = FSR3UPSCALER_FP32_MAX; + FfxFloat32 fDissimilarLumaMax = 0; + +#define SETBIT(x) (1U << x) + + FfxUInt32 uPatternMask = SETBIT(iNucleusIndex); // Flag nucleus as similar + + const FfxUInt32 uNumRejectionMasks = 4; + const FfxUInt32 uRejectionMasks[uNumRejectionMasks] = { + SETBIT(1) | SETBIT(2) | SETBIT(4) | SETBIT(iNucleusIndex), // Upper left + SETBIT(2) | SETBIT(3) | SETBIT(5) | SETBIT(iNucleusIndex), // Upper right + SETBIT(4) | SETBIT(6) | SETBIT(7) | SETBIT(iNucleusIndex), // Lower left + SETBIT(5) | SETBIT(7) | SETBIT(8) | SETBIT(iNucleusIndex) // Lower right + }; + + FfxInt32 iBitIndex = 1; + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iSampleCount; ++iSampleIndex, ++iBitIndex) { + + const FfxFloat32 fDifference = abs(fSamples[iSampleIndex] - fSamples[iNucleusIndex]) / (fLumaMax - fLumaMin); + + if (fDifference < fThreshold) + { + uPatternMask |= SETBIT(iBitIndex); + } + else + { + fDissimilarLumaMin = ffxMin(fDissimilarLumaMin, fSamples[iSampleIndex]); + fDissimilarLumaMax = ffxMax(fDissimilarLumaMax, fSamples[iSampleIndex]); + } + } + + const FfxBoolean bIsRidge = fSamples[iNucleusIndex] > fDissimilarLumaMax || fSamples[iNucleusIndex] < fDissimilarLumaMin; + + if (FFX_FALSE == bIsRidge) + { + return 0.0f; + } + + FFX_UNROLL + for (FfxInt32 i = 0; i < uNumRejectionMasks; i++) + { + if ((uPatternMask & uRejectionMasks[i]) == uRejectionMasks[i]) + { + return 0.0f; + } + } + + return 1.0f - fLumaMin / fLumaMax; +} + +FfxFloat32 UpdateAccumulation(FfxInt32x2 iPxPos, FfxFloat32x2 fUv, FfxFloat32x2 fMotionVector, FfxFloat32 fDisocclusion, FfxFloat32 fShadingChange) +{ + const FfxFloat32x2 fReprojectedUv = fUv + fMotionVector; + FfxFloat32 fAccumulation = 0.0f; + + if (IsUvInside(fReprojectedUv)) { + const FfxFloat32x2 fReprojectedUv_HW = ClampUv(fReprojectedUv, PreviousFrameRenderSize(), MaxRenderSize()); + fAccumulation = ffxSaturate(SampleAccumulation(fReprojectedUv_HW)); + } + const FfxFloat32 fAccumulationAddedPerFrame= AccumulationAddedPerFrame(); //default is 0.333 + + // Assume at frame N+0 fShadingChange is 1.0, and all subsequent frames fShadingChange is 0.0 and fDisocclusion is 0.0. Then, + // frame N+0 fAccumulation will be 0.000 + // frame N+2 fAccumulation will be 0.000 + 0.333 * 1 == 0.333 + // frame N+3 fAccumulation will be 0.000 + 0.333 * 2 == 0.666 + // frame N+4 fAccumulation will be 0.000 + 0.333 * 3 == 0.999 + fAccumulation = ffxLerp(fAccumulation, 0.0f, fShadingChange); + + const FfxFloat32 fMinDisocclusionAccumulation = MinDisocclusionAccumulation(); //default is -0.333 + // Assume at frame N+0 fDisocclusion is 1.0, and all subsequent frames fShadingChange is 0.0 and fDisocclusion is 0.0. Then, + // frame N+0 fAccumulation will be -0.333f (but normalized to store in unorm) + // frame N+1 fAccumulation will be -0.333f + 0.333 * 1 == 0.000 + // frame N+2 fAccumulation will be -0.333f + 0.333 * 2 == 0.333 + // frame N+3 fAccumulation will be -0.333f + 0.333 * 3 == 0.666 + // frame N+4 fAccumulation will be -0.333f + 0.333 * 4 == 0.999 + fAccumulation = ffxLerp(fAccumulation, ffxMin(fMinDisocclusionAccumulation, fAccumulation), fDisocclusion); + + fAccumulation *= FfxFloat32(round(fAccumulation * 100.0f) > 1.0f); + + // Update for next frame, normalize to store in unorm + const FfxFloat32 fAccumulatedFramesToStore = ffxSaturate(fAccumulation + fAccumulationAddedPerFrame); + StoreAccumulation(iPxPos, fAccumulatedFramesToStore); + + return fAccumulation; +} + +FfxFloat32 ComputeShadingChange(FfxFloat32x2 fUv) +{ + // NOTE: Here we re-apply jitter, will be reverted again when sampled in accumulation pass + const FfxFloat32x2 fShadingChangeUv = ClampUv(fUv - Jitter() / RenderSize(), ShadingChangeRenderSize(), ShadingChangeMaxRenderSize()); + const FfxFloat32 fShadingChange = ffxSaturate(SampleShadingChange(fShadingChangeUv)); + + return fShadingChange; +} + +void PrepareReactivity(FfxInt32x2 iPxPos) +{ + const FfxFloat32x2 fUv = (iPxPos + 0.5f) / RenderSize(); + const FfxFloat32x2 fMotionVector = LoadDilatedMotionVector(iPxPos); + + // Discard small mvs + const FfxFloat32 f4KVelocity = Get4KVelocity(fMotionVector); + + const FfxFloat32x2 fDilatedUv = fUv + fMotionVector; + const FfxFloat32 fDilatedDepth = LoadDilatedDepth(iPxPos); + const FfxFloat32 fDepthInMeters = GetViewSpaceDepthInMeters(fDilatedDepth); + + const FfxFloat32 fDisocclusion = ComputeDisocclusions(fUv, fMotionVector, GetViewSpaceDepth(fDilatedDepth)); + const FfxFloat32 fShadingChange = ffxMax(DilateReactiveMasks(iPxPos, fUv), ComputeShadingChange(fUv)); + + const FfxFloat32 fMotionDivergence = ComputeMotionDivergence(fUv, fMotionVector, fDilatedDepth); + const FfxFloat32 fDilatedTransparencyAndComposition = DilateTransparencyAndCompositionMasks(iPxPos, fUv); + const FfxFloat32 fFinalReactiveness = ffxMax(fMotionDivergence, fDilatedTransparencyAndComposition); + + const FfxFloat32 fAccumulation = UpdateAccumulation(iPxPos, fUv, fMotionVector, fDisocclusion, fShadingChange); + + FfxFloat32x4 fOutput; + fOutput[REACTIVE] = fFinalReactiveness; + fOutput[DISOCCLUSION] = fDisocclusion; + fOutput[SHADING_CHANGE] = fShadingChange; + fOutput[ACCUMULAION] = fAccumulation; + + StoreDilatedReactiveMasks(iPxPos, fOutput); + + const FfxFloat32 fLockStrength = ComputeThinFeatureConfidence(iPxPos); + if (fLockStrength > (1.0f / 100.0f)) + { + StoreNewLocks(ComputeHrPosFromLrPos(FfxInt32x2(iPxPos)), fLockStrength); + } +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_rcas.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_rcas.h new file mode 100644 index 000000000..f48cffb93 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_rcas.h @@ -0,0 +1,112 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#define GROUP_SIZE 8 +#define FSR_RCAS_DENOISE 1 + +#include "ffx_core.h" + +#if FFX_HALF && defined(__XBOX_SCARLETT) && defined(__XBATG_EXTRA_16_BIT_OPTIMISATION) && (__XBATG_EXTRA_16_BIT_OPTIMISATION == 1) + #define FSR_RCAS_PREFER_PAIRED_VERSION 1 +#else + #define FSR_RCAS_PREFER_PAIRED_VERSION 0 +#endif + +void WriteUpscaledOutput(FFX_MIN16_U2 iPxHrPos, FfxFloat32x3 fUpscaledColor) +{ + StoreUpscaledOutput(FFX_MIN16_I2(iPxHrPos), fUpscaledColor); +} + +#if FSR_RCAS_PREFER_PAIRED_VERSION + #define FSR_RCAS_HX2 1 + FfxFloat16x4 FsrRcasLoadHx2(FfxInt16x2 p) + { + return FfxFloat16x4(LoadRCAS_Input(p)); + } + void FsrRcasInputHx2(inout FfxFloat16x2 r, inout FfxFloat16x2 g, inout FfxFloat16x2 b) + { + FfxFloat32 e = Exposure(); + r = FfxFloat16x2(r * e); + g = FfxFloat16x2(g * e); + b = FfxFloat16x2(b * e); + } + + #include "fsr1/ffx_fsr1.h" + + void CurrFilterPaired(FFX_MIN16_U2 pos) + { + FfxFloat16x2 cr; + FfxFloat16x2 cg; + FfxFloat16x2 cb; + FsrRcasHx2(cr, cg, cb, pos, RCASConfig()); + FfxFloat32 InvExposure = 1.0f / Exposure(); + cr = FfxFloat16x2(cr * InvExposure); + cg = FfxFloat16x2(cg * InvExposure); + cb = FfxFloat16x2(cb * InvExposure); + WriteUpscaledOutput(pos, FfxFloat16x3(cr.x, cg.x, cb.x)); //TODO: fix type + pos.x += 8; + WriteUpscaledOutput(pos, FfxFloat16x3(cr.y, cg.y, cb.y)); //TODO: fix type + } +#else + #define FSR_RCAS_F 1 + FfxFloat32x4 FsrRcasLoadF(FfxInt32x2 p) + { + FfxFloat32x4 fColor = LoadRCAS_Input(p); + + fColor.rgb *= Exposure(); + + return fColor; + } + void FsrRcasInputF(inout FfxFloat32 r, inout FfxFloat32 g, inout FfxFloat32 b) {} + + #include "fsr1/ffx_fsr1.h" + + void CurrFilter(FFX_MIN16_U2 pos) + { + FfxFloat32x3 c; + FsrRcasF(c.r, c.g, c.b, pos, RCASConfig()); + + c /= Exposure(); + + WriteUpscaledOutput(pos, c); + } + +#endif // #if FSR_RCAS_PREFER_PAIRED_VERSION + +void RCAS(FfxUInt32x3 LocalThreadId, FfxUInt32x3 WorkGroupId, FfxUInt32x3 Dtid) +{ + // Do remapping of local xy in workgroup for a more PS-like swizzle pattern. + FfxUInt32x2 gxy = ffxRemapForQuad(LocalThreadId.x) + FfxUInt32x2(WorkGroupId.x << 4u, WorkGroupId.y << 4u); +#if FSR_RCAS_PREFER_PAIRED_VERSION + CurrFilterPaired(FFX_MIN16_U2(gxy)); + gxy.y += 8u; + CurrFilterPaired(FFX_MIN16_U2(gxy)); +#else + CurrFilter(FFX_MIN16_U2(gxy)); + gxy.x += 8u; + CurrFilter(FFX_MIN16_U2(gxy)); + gxy.y += 8u; + CurrFilter(FFX_MIN16_U2(gxy)); + gxy.x -= 8u; + CurrFilter(FFX_MIN16_U2(gxy)); +#endif +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_reproject.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_reproject.h new file mode 100644 index 000000000..c72f40fb6 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_reproject.h @@ -0,0 +1,79 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef FFX_FSR3UPSCALER_OPTION_REPROJECT_USE_LANCZOS_TYPE +#define FFX_FSR3UPSCALER_OPTION_REPROJECT_USE_LANCZOS_TYPE 0 // Reference +#endif + +FfxFloat32x4 WrapHistory(FfxInt32x2 iPxSample) +{ + return LoadHistory(iPxSample); +} + +DeclareCustomFetchBicubicSamples(FetchHistorySamples, WrapHistory) +DeclareCustomTextureSample(HistorySample, FFX_FSR3UPSCALER_GET_LANCZOS_SAMPLER1D(FFX_FSR3UPSCALER_OPTION_REPROJECT_USE_LANCZOS_TYPE), FetchHistorySamples) + +#if FFX_HALF +FFX_MIN16_F4 WrapHistory16(FfxInt32x2 iPxSample) +{ + return FFX_MIN16_F4(LoadHistory(iPxSample)); +} + +DeclareCustomFetchBicubicSamplesMin16(FetchHistorySamples16, WrapHistory16) +DeclareCustomTextureSampleMin16(HistorySample16, FFX_FSR3UPSCALER_GET_LANCZOS_SAMPLER1D(FFX_FSR3UPSCALER_OPTION_REPROJECT_USE_LANCZOS_TYPE), FetchHistorySamples16) +#endif + +FfxFloat32x2 GetMotionVector(FfxInt32x2 iPxHrPos, FfxFloat32x2 fHrUv) +{ +#if FFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS + const FfxFloat32x2 fDilatedMotionVector = LoadDilatedMotionVector(FFX_MIN16_I2(fHrUv * RenderSize())); +#else + const FfxFloat32x2 fDilatedMotionVector = LoadInputMotionVector(iPxHrPos); +#endif + + return fDilatedMotionVector; +} + +void ComputeReprojectedUVs(FFX_PARAMETER_INOUT AccumulationPassCommonParams params) +{ + params.fReprojectedHrUv = params.fHrUv + params.fMotionVector; + + params.bIsExistingSample = IsUvInside(params.fReprojectedHrUv); +} + +void ReprojectHistoryColor(const AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) + +{ +#if FFX_HALF && FFX_FSR3UPSCALER_OPTION_REPROJECT_SAMPLERS_USE_DATA_HALF + const FfxFloat32x4 fReprojectedHistory = FfxFloat32x4(HistorySample16(params.fReprojectedHrUv, UpscaleSize())); +#else + const FfxFloat32x4 fReprojectedHistory = HistorySample(params.fReprojectedHrUv, PreviousFrameUpscaleSize()); +#endif + + data.fHistoryColor = fReprojectedHistory.rgb; + data.fHistoryColor *= DeltaPreExposure(); + data.fHistoryColor *= Exposure(); + + data.fHistoryColor = RGBToYCoCg(data.fHistoryColor); + + data.fLock = fReprojectedHistory.w; +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_resources.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_resources.h new file mode 100644 index 000000000..b3d8ddb17 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_resources.h @@ -0,0 +1,100 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef FFX_FSR3UPSCALER_RESOURCES_H +#define FFX_FSR3UPSCALER_RESOURCES_H + +#if defined(FFX_CPU) || defined(FFX_GPU) +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_NULL 0 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_OPAQUE_ONLY 1 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_COLOR 2 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_MOTION_VECTORS 3 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_DEPTH 4 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_EXPOSURE 5 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_REACTIVE_MASK 6 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INPUT_TRANSPARENCY_AND_COMPOSITION_MASK 7 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_RECONSTRUCTED_PREVIOUS_NEAREST_DEPTH 8 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_DILATED_MOTION_VECTORS 9 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_DILATED_DEPTH 10 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERNAL_UPSCALED_COLOR 11 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_ACCUMULATION 12 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_NEW_LOCKS 13 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LUMA_HISTORY 14 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_DEBUG_OUTPUT 15 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LANCZOS_LUT 16 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_ATOMIC_COUNT 17 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_UPSCALED_OUTPUT 18 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_RCAS_INPUT 19 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_ACCUMULATION_1 20 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_ACCUMULATION_2 21 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERNAL_UPSCALED_COLOR_1 22 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERNAL_UPSCALED_COLOR_2 23 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERNAL_DEFAULT_REACTIVITY 24 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERNAL_DEFAULT_TRANSPARENCY_AND_COMPOSITION 25 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_DILATED_REACTIVE_MASKS 26 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS 27 // same as FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_0 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_0 27 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_1 28 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_2 29 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_3 30 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_4 31 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SPD_MIPS_LEVEL_5 32 + +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERNAL_DEFAULT_EXPOSURE 33 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_FRAME_INFO 34 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_AUTOREACTIVE 35 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_AUTOCOMPOSITION_DEPRECATED 36 + +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LUMA_HISTORY_1 37 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LUMA_HISTORY_2 38 + +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LUMA_1 40 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LUMA_2 41 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SHADING_CHANGE 42 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_FARTHEST_DEPTH 43 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_FARTHEST_DEPTH_MIP1 44 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_CURRENT_LUMA 45 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_PREVIOUS_LUMA 46 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_LUMA_INSTABILITY 48 +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_INTERMEDIATE_FP16x1 49 + + +// Shading change detection mip level setting, value must be in the range [FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SCENE_LUMINANCE_MIPMAP_0, FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SCENE_LUMINANCE_MIPMAP_12] +//#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SCENE_LUMINANCE_MIPMAP_SHADING_CHANGE FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SCENE_LUMINANCE_MIPMAP_4 +//#define FFX_FSR3UPSCALER_SHADING_CHANGE_MIP_LEVEL (FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SCENE_LUMINANCE_MIPMAP_SHADING_CHANGE - FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_SCENE_LUMINANCE) + +#define FFX_FSR3UPSCALER_RESOURCE_IDENTIFIER_COUNT 60 + +#define FFX_FSR3UPSCALER_CONSTANTBUFFER_IDENTIFIER_FSR3UPSCALER 0 +#define FFX_FSR3UPSCALER_CONSTANTBUFFER_IDENTIFIER_SPD 1 +#define FFX_FSR3UPSCALER_CONSTANTBUFFER_IDENTIFIER_RCAS 2 +#define FFX_FSR3UPSCALER_CONSTANTBUFFER_IDENTIFIER_GENREACTIVE 3 +#define FFX_FSR3UPSCALER_CONSTANTBUFFER_COUNT 4 + +#define FFX_FSR3UPSCALER_AUTOREACTIVEFLAGS_APPLY_TONEMAP 1 +#define FFX_FSR3UPSCALER_AUTOREACTIVEFLAGS_APPLY_INVERSETONEMAP 2 +#define FFX_FSR3UPSCALER_AUTOREACTIVEFLAGS_APPLY_THRESHOLD 4 +#define FFX_FSR3UPSCALER_AUTOREACTIVEFLAGS_USE_COMPONENTS_MAX 8 + +#endif // #if defined(FFX_CPU) || defined(FFX_GPU) + +#endif //!defined( FFX_FSR3UPSCALER_RESOURCES_H ) diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_sample.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_sample.h new file mode 100644 index 000000000..7a723d556 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_sample.h @@ -0,0 +1,628 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef FFX_FSR3UPSCALER_SAMPLE_H +#define FFX_FSR3UPSCALER_SAMPLE_H + +// suppress warnings +#ifdef FFX_HLSL +#pragma warning(disable: 4008) // potentially divide by zero +#endif //FFX_HLSL + +struct FetchedBilinearSamples { + + FfxFloat32x4 fColor00; + FfxFloat32x4 fColor10; + + FfxFloat32x4 fColor01; + FfxFloat32x4 fColor11; +}; + +struct FetchedBicubicSamples { + + FfxFloat32x4 fColor00; + FfxFloat32x4 fColor10; + FfxFloat32x4 fColor20; + FfxFloat32x4 fColor30; + + FfxFloat32x4 fColor01; + FfxFloat32x4 fColor11; + FfxFloat32x4 fColor21; + FfxFloat32x4 fColor31; + + FfxFloat32x4 fColor02; + FfxFloat32x4 fColor12; + FfxFloat32x4 fColor22; + FfxFloat32x4 fColor32; + + FfxFloat32x4 fColor03; + FfxFloat32x4 fColor13; + FfxFloat32x4 fColor23; + FfxFloat32x4 fColor33; +}; + +#if FFX_HALF +struct FetchedBilinearSamplesMin16 { + + FFX_MIN16_F4 fColor00; + FFX_MIN16_F4 fColor10; + + FFX_MIN16_F4 fColor01; + FFX_MIN16_F4 fColor11; +}; + +struct FetchedBicubicSamplesMin16 { + + FFX_MIN16_F4 fColor00; + FFX_MIN16_F4 fColor10; + FFX_MIN16_F4 fColor20; + FFX_MIN16_F4 fColor30; + + FFX_MIN16_F4 fColor01; + FFX_MIN16_F4 fColor11; + FFX_MIN16_F4 fColor21; + FFX_MIN16_F4 fColor31; + + FFX_MIN16_F4 fColor02; + FFX_MIN16_F4 fColor12; + FFX_MIN16_F4 fColor22; + FFX_MIN16_F4 fColor32; + + FFX_MIN16_F4 fColor03; + FFX_MIN16_F4 fColor13; + FFX_MIN16_F4 fColor23; + FFX_MIN16_F4 fColor33; +}; +#else //FFX_HALF +#define FetchedBicubicSamplesMin16 FetchedBicubicSamples +#define FetchedBilinearSamplesMin16 FetchedBilinearSamples +#endif //FFX_HALF + +FfxFloat32x4 Linear(FfxFloat32x4 A, FfxFloat32x4 B, FfxFloat32 t) +{ + return A + (B - A) * t; +} + +FfxFloat32x4 Bilinear(FetchedBilinearSamples BilinearSamples, FfxFloat32x2 fPxFrac) +{ + FfxFloat32x4 fColorX0 = Linear(BilinearSamples.fColor00, BilinearSamples.fColor10, fPxFrac.x); + FfxFloat32x4 fColorX1 = Linear(BilinearSamples.fColor01, BilinearSamples.fColor11, fPxFrac.x); + FfxFloat32x4 fColorXY = Linear(fColorX0, fColorX1, fPxFrac.y); + return fColorXY; +} + +#if FFX_HALF +FFX_MIN16_F4 Linear(FFX_MIN16_F4 A, FFX_MIN16_F4 B, FFX_MIN16_F t) +{ + return A + (B - A) * t; +} + +FFX_MIN16_F4 Bilinear(FetchedBilinearSamplesMin16 BilinearSamples, FFX_MIN16_F2 fPxFrac) +{ + FFX_MIN16_F4 fColorX0 = Linear(BilinearSamples.fColor00, BilinearSamples.fColor10, fPxFrac.x); + FFX_MIN16_F4 fColorX1 = Linear(BilinearSamples.fColor01, BilinearSamples.fColor11, fPxFrac.x); + FFX_MIN16_F4 fColorXY = Linear(fColorX0, fColorX1, fPxFrac.y); + return fColorXY; +} +#endif + +FfxFloat32 Lanczos2NoClamp(FfxFloat32 x) +{ + const FfxFloat32 PI = 3.141592653589793f; // TODO: share SDK constants + return abs(x) < FSR3UPSCALER_EPSILON ? 1.f : (sin(PI * x) / (PI * x)) * (sin(0.5f * PI * x) / (0.5f * PI * x)); +} + +FfxFloat32 Lanczos2(FfxFloat32 x) +{ + x = ffxMin(abs(x), 2.0f); + return Lanczos2NoClamp(x); +} + +#if FFX_HALF + +#if 0 +FFX_MIN16_F Lanczos2NoClamp(FFX_MIN16_F x) +{ + const FFX_MIN16_F PI = FFX_MIN16_F(3.141592653589793f); // TODO: share SDK constants + return abs(x) < FFX_MIN16_F(FSR3UPSCALER_EPSILON) ? FFX_MIN16_F(1.f) : (sin(PI * x) / (PI * x)) * (sin(FFX_MIN16_F(0.5f) * PI * x) / (FFX_MIN16_F(0.5f) * PI * x)); +} +#endif + +FFX_MIN16_F Lanczos2(FFX_MIN16_F x) +{ + x = ffxMin(abs(x), FFX_MIN16_F(2.0f)); + return FFX_MIN16_F(Lanczos2NoClamp(x)); +} +#endif //FFX_HALF + +// FSR1 lanczos approximation. Input is x*x and must be <= 4. +FfxFloat32 Lanczos2ApproxSqNoClamp(FfxFloat32 x2) +{ + FfxFloat32 a = (2.0f / 5.0f) * x2 - 1; + FfxFloat32 b = (1.0f / 4.0f) * x2 - 1; + return ((25.0f / 16.0f) * a * a - (25.0f / 16.0f - 1)) * (b * b); +} + +#if FFX_HALF +FFX_MIN16_F Lanczos2ApproxSqNoClamp(FFX_MIN16_F x2) +{ + FFX_MIN16_F a = FFX_MIN16_F(2.0f / 5.0f) * x2 - FFX_MIN16_F(1); + FFX_MIN16_F b = FFX_MIN16_F(1.0f / 4.0f) * x2 - FFX_MIN16_F(1); + return (FFX_MIN16_F(25.0f / 16.0f) * a * a - FFX_MIN16_F(25.0f / 16.0f - 1)) * (b * b); +} + +#if defined(__XBOX_SCARLETT) && defined(__XBATG_EXTRA_16_BIT_OPTIMISATION) && (__XBATG_EXTRA_16_BIT_OPTIMISATION == 1) +FFX_MIN16_F2 PairedLanczos2ApproxSqNoClamp(FFX_MIN16_F2 x2) +{ + // Xbox ATG (Pavel): + // + // 2.0 * x2 - 5.0 25.0 25.0 - 16.0 (2.0 * x2 - 5.0)^2 - (3.0)^2 (2.0 * x2 - 8.0) * (2.0 * x2 - 2.0) (x2 - 4.0) * (x2 - 1.0) + // a = -------------- ==> ---- * a^2 - -------------- = ----------------------------- = ---------------------------------- = ----------------------- = b * (x2 - 1.0) + // 5.0 16.0 16.0 16.0 16.0 4.0 + // + // so we need to compute just (b * b) * (b * x2 - b), so we should get four packed instructions: 2 fma + 2 mul + // + + FFX_MIN16_F2 b = (0.25 * x2 - 1.0); + return (b * b) * (b * x2 - b); +} +#endif + +#endif //FFX_HALF + +FfxFloat32 Lanczos2ApproxSq(FfxFloat32 x2) +{ + x2 = ffxMin(x2, 4.0f); + return Lanczos2ApproxSqNoClamp(x2); +} + +#if FFX_HALF +FFX_MIN16_F Lanczos2ApproxSq(FFX_MIN16_F x2) +{ + x2 = ffxMin(x2, FFX_MIN16_F(4.0f)); + return Lanczos2ApproxSqNoClamp(x2); +} + +#if defined(__XBOX_SCARLETT) && defined(__XBATG_EXTRA_16_BIT_OPTIMISATION) && (__XBATG_EXTRA_16_BIT_OPTIMISATION == 1) +FFX_MIN16_F2 PairedLanczos2ApproxSq(FFX_MIN16_F2 x2) +{ + x2 = ffxMin(x2, FFX_MIN16_F2(4.0, 4.0)); + return PairedLanczos2ApproxSqNoClamp(x2); +} +#endif +#endif //FFX_HALF + +FfxFloat32 Lanczos2ApproxNoClamp(FfxFloat32 x) +{ + return Lanczos2ApproxSqNoClamp(x * x); +} + +#if FFX_HALF +FFX_MIN16_F Lanczos2ApproxNoClamp(FFX_MIN16_F x) +{ + return Lanczos2ApproxSqNoClamp(x * x); +} +#endif //FFX_HALF + +FfxFloat32 Lanczos2Approx(FfxFloat32 x) +{ + return Lanczos2ApproxSq(x * x); +} + +#if FFX_HALF +FFX_MIN16_F Lanczos2Approx(FFX_MIN16_F x) +{ + return Lanczos2ApproxSq(x * x); +} +#endif //FFX_HALF + +FfxFloat32 Lanczos2_UseLUT(FfxFloat32 x) +{ + return SampleLanczos2Weight(abs(x)); +} + +#if FFX_HALF +FFX_MIN16_F Lanczos2_UseLUT(FFX_MIN16_F x) +{ + return FFX_MIN16_F(SampleLanczos2Weight(abs(x))); +} +#endif //FFX_HALF + +FfxFloat32x4 Lanczos2_UseLUT(FfxFloat32x4 fColor0, FfxFloat32x4 fColor1, FfxFloat32x4 fColor2, FfxFloat32x4 fColor3, FfxFloat32 t) +{ + FfxFloat32 fWeight0 = Lanczos2_UseLUT(-1.f - t); + FfxFloat32 fWeight1 = Lanczos2_UseLUT(-0.f - t); + FfxFloat32 fWeight2 = Lanczos2_UseLUT(+1.f - t); + FfxFloat32 fWeight3 = Lanczos2_UseLUT(+2.f - t); + return (fWeight0 * fColor0 + fWeight1 * fColor1 + fWeight2 * fColor2 + fWeight3 * fColor3) / (fWeight0 + fWeight1 + fWeight2 + fWeight3); +} +#if FFX_HALF +FFX_MIN16_F4 Lanczos2_UseLUT(FFX_MIN16_F4 fColor0, FFX_MIN16_F4 fColor1, FFX_MIN16_F4 fColor2, FFX_MIN16_F4 fColor3, FFX_MIN16_F t) +{ + FFX_MIN16_F fWeight0 = Lanczos2_UseLUT(FFX_MIN16_F(-1.f) - t); + FFX_MIN16_F fWeight1 = Lanczos2_UseLUT(FFX_MIN16_F(-0.f) - t); + FFX_MIN16_F fWeight2 = Lanczos2_UseLUT(FFX_MIN16_F(+1.f) - t); + FFX_MIN16_F fWeight3 = Lanczos2_UseLUT(FFX_MIN16_F(+2.f) - t); + return (fWeight0 * fColor0 + fWeight1 * fColor1 + fWeight2 * fColor2 + fWeight3 * fColor3) / (fWeight0 + fWeight1 + fWeight2 + fWeight3); +} +#endif + +FfxFloat32x4 Lanczos2(FfxFloat32x4 fColor0, FfxFloat32x4 fColor1, FfxFloat32x4 fColor2, FfxFloat32x4 fColor3, FfxFloat32 t) +{ + FfxFloat32 fWeight0 = Lanczos2(-1.f - t); + FfxFloat32 fWeight1 = Lanczos2(-0.f - t); + FfxFloat32 fWeight2 = Lanczos2(+1.f - t); + FfxFloat32 fWeight3 = Lanczos2(+2.f - t); + return (fWeight0 * fColor0 + fWeight1 * fColor1 + fWeight2 * fColor2 + fWeight3 * fColor3) / (fWeight0 + fWeight1 + fWeight2 + fWeight3); +} + +FfxFloat32x4 Lanczos2(FetchedBicubicSamples Samples, FfxFloat32x2 fPxFrac) +{ + FfxFloat32x4 fColorX0 = Lanczos2(Samples.fColor00, Samples.fColor10, Samples.fColor20, Samples.fColor30, fPxFrac.x); + FfxFloat32x4 fColorX1 = Lanczos2(Samples.fColor01, Samples.fColor11, Samples.fColor21, Samples.fColor31, fPxFrac.x); + FfxFloat32x4 fColorX2 = Lanczos2(Samples.fColor02, Samples.fColor12, Samples.fColor22, Samples.fColor32, fPxFrac.x); + FfxFloat32x4 fColorX3 = Lanczos2(Samples.fColor03, Samples.fColor13, Samples.fColor23, Samples.fColor33, fPxFrac.x); + FfxFloat32x4 fColorXY = Lanczos2(fColorX0, fColorX1, fColorX2, fColorX3, fPxFrac.y); + + // Deringing + + // TODO: only use 4 by checking jitter + const FfxInt32 iDeringingSampleCount = 4; + const FfxFloat32x4 fDeringingSamples[4] = { + Samples.fColor11, + Samples.fColor21, + Samples.fColor12, + Samples.fColor22, + }; + + FfxFloat32x4 fDeringingMin = fDeringingSamples[0]; + FfxFloat32x4 fDeringingMax = fDeringingSamples[0]; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iDeringingSampleCount; ++iSampleIndex) { + + fDeringingMin = ffxMin(fDeringingMin, fDeringingSamples[iSampleIndex]); + fDeringingMax = ffxMax(fDeringingMax, fDeringingSamples[iSampleIndex]); + } + + fColorXY = clamp(fColorXY, fDeringingMin, fDeringingMax); + + return fColorXY; +} + +#if FFX_HALF +FFX_MIN16_F4 Lanczos2(FFX_MIN16_F4 fColor0, FFX_MIN16_F4 fColor1, FFX_MIN16_F4 fColor2, FFX_MIN16_F4 fColor3, FFX_MIN16_F t) +{ + FFX_MIN16_F fWeight0 = Lanczos2(FFX_MIN16_F(-1.f) - t); + FFX_MIN16_F fWeight1 = Lanczos2(FFX_MIN16_F(-0.f) - t); + FFX_MIN16_F fWeight2 = Lanczos2(FFX_MIN16_F(+1.f) - t); + FFX_MIN16_F fWeight3 = Lanczos2(FFX_MIN16_F(+2.f) - t); + return (fWeight0 * fColor0 + fWeight1 * fColor1 + fWeight2 * fColor2 + fWeight3 * fColor3) / (fWeight0 + fWeight1 + fWeight2 + fWeight3); +} + +FFX_MIN16_F4 Lanczos2(FetchedBicubicSamplesMin16 Samples, FFX_MIN16_F2 fPxFrac) +{ + FFX_MIN16_F4 fColorX0 = Lanczos2(Samples.fColor00, Samples.fColor10, Samples.fColor20, Samples.fColor30, fPxFrac.x); + FFX_MIN16_F4 fColorX1 = Lanczos2(Samples.fColor01, Samples.fColor11, Samples.fColor21, Samples.fColor31, fPxFrac.x); + FFX_MIN16_F4 fColorX2 = Lanczos2(Samples.fColor02, Samples.fColor12, Samples.fColor22, Samples.fColor32, fPxFrac.x); + FFX_MIN16_F4 fColorX3 = Lanczos2(Samples.fColor03, Samples.fColor13, Samples.fColor23, Samples.fColor33, fPxFrac.x); + FFX_MIN16_F4 fColorXY = Lanczos2(fColorX0, fColorX1, fColorX2, fColorX3, fPxFrac.y); + + // Deringing + + // TODO: only use 4 by checking jitter + const FfxInt32 iDeringingSampleCount = 4; + const FFX_MIN16_F4 fDeringingSamples[4] = { + Samples.fColor11, + Samples.fColor21, + Samples.fColor12, + Samples.fColor22, + }; + + FFX_MIN16_F4 fDeringingMin = fDeringingSamples[0]; + FFX_MIN16_F4 fDeringingMax = fDeringingSamples[0]; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iDeringingSampleCount; ++iSampleIndex) + { + fDeringingMin = ffxMin(fDeringingMin, fDeringingSamples[iSampleIndex]); + fDeringingMax = ffxMax(fDeringingMax, fDeringingSamples[iSampleIndex]); + } + + fColorXY = clamp(fColorXY, fDeringingMin, fDeringingMax); + + return fColorXY; +} +#endif //FFX_HALF + + +FfxFloat32x4 Lanczos2LUT(FetchedBicubicSamples Samples, FfxFloat32x2 fPxFrac) +{ + FfxFloat32x4 fColorX0 = Lanczos2_UseLUT(Samples.fColor00, Samples.fColor10, Samples.fColor20, Samples.fColor30, fPxFrac.x); + FfxFloat32x4 fColorX1 = Lanczos2_UseLUT(Samples.fColor01, Samples.fColor11, Samples.fColor21, Samples.fColor31, fPxFrac.x); + FfxFloat32x4 fColorX2 = Lanczos2_UseLUT(Samples.fColor02, Samples.fColor12, Samples.fColor22, Samples.fColor32, fPxFrac.x); + FfxFloat32x4 fColorX3 = Lanczos2_UseLUT(Samples.fColor03, Samples.fColor13, Samples.fColor23, Samples.fColor33, fPxFrac.x); + FfxFloat32x4 fColorXY = Lanczos2_UseLUT(fColorX0, fColorX1, fColorX2, fColorX3, fPxFrac.y); + + // Deringing + + // TODO: only use 4 by checking jitter + const FfxInt32 iDeringingSampleCount = 4; + const FfxFloat32x4 fDeringingSamples[4] = { + Samples.fColor11, + Samples.fColor21, + Samples.fColor12, + Samples.fColor22, + }; + + FfxFloat32x4 fDeringingMin = fDeringingSamples[0]; + FfxFloat32x4 fDeringingMax = fDeringingSamples[0]; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iDeringingSampleCount; ++iSampleIndex) { + + fDeringingMin = ffxMin(fDeringingMin, fDeringingSamples[iSampleIndex]); + fDeringingMax = ffxMax(fDeringingMax, fDeringingSamples[iSampleIndex]); + } + + fColorXY = clamp(fColorXY, fDeringingMin, fDeringingMax); + + return fColorXY; +} + +#if FFX_HALF +FFX_MIN16_F4 Lanczos2LUT(FetchedBicubicSamplesMin16 Samples, FFX_MIN16_F2 fPxFrac) +{ + FFX_MIN16_F4 fColorX0 = Lanczos2_UseLUT(Samples.fColor00, Samples.fColor10, Samples.fColor20, Samples.fColor30, fPxFrac.x); + FFX_MIN16_F4 fColorX1 = Lanczos2_UseLUT(Samples.fColor01, Samples.fColor11, Samples.fColor21, Samples.fColor31, fPxFrac.x); + FFX_MIN16_F4 fColorX2 = Lanczos2_UseLUT(Samples.fColor02, Samples.fColor12, Samples.fColor22, Samples.fColor32, fPxFrac.x); + FFX_MIN16_F4 fColorX3 = Lanczos2_UseLUT(Samples.fColor03, Samples.fColor13, Samples.fColor23, Samples.fColor33, fPxFrac.x); + FFX_MIN16_F4 fColorXY = Lanczos2_UseLUT(fColorX0, fColorX1, fColorX2, fColorX3, fPxFrac.y); + + // Deringing + + // TODO: only use 4 by checking jitter + const FfxInt32 iDeringingSampleCount = 4; + const FFX_MIN16_F4 fDeringingSamples[4] = { + Samples.fColor11, + Samples.fColor21, + Samples.fColor12, + Samples.fColor22, + }; + + FFX_MIN16_F4 fDeringingMin = fDeringingSamples[0]; + FFX_MIN16_F4 fDeringingMax = fDeringingSamples[0]; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iDeringingSampleCount; ++iSampleIndex) + { + fDeringingMin = ffxMin(fDeringingMin, fDeringingSamples[iSampleIndex]); + fDeringingMax = ffxMax(fDeringingMax, fDeringingSamples[iSampleIndex]); + } + + fColorXY = clamp(fColorXY, fDeringingMin, fDeringingMax); + + return fColorXY; +} +#endif //FFX_HALF + + + +FfxFloat32x4 Lanczos2Approx(FfxFloat32x4 fColor0, FfxFloat32x4 fColor1, FfxFloat32x4 fColor2, FfxFloat32x4 fColor3, FfxFloat32 t) +{ + FfxFloat32 fWeight0 = Lanczos2ApproxNoClamp(-1.f - t); + FfxFloat32 fWeight1 = Lanczos2ApproxNoClamp(-0.f - t); + FfxFloat32 fWeight2 = Lanczos2ApproxNoClamp(+1.f - t); + FfxFloat32 fWeight3 = Lanczos2ApproxNoClamp(+2.f - t); + return (fWeight0 * fColor0 + fWeight1 * fColor1 + fWeight2 * fColor2 + fWeight3 * fColor3) / (fWeight0 + fWeight1 + fWeight2 + fWeight3); +} + +#if FFX_HALF +FFX_MIN16_F4 Lanczos2Approx(FFX_MIN16_F4 fColor0, FFX_MIN16_F4 fColor1, FFX_MIN16_F4 fColor2, FFX_MIN16_F4 fColor3, FFX_MIN16_F t) +{ + FFX_MIN16_F fWeight0 = Lanczos2ApproxNoClamp(FFX_MIN16_F(-1.f) - t); + FFX_MIN16_F fWeight1 = Lanczos2ApproxNoClamp(FFX_MIN16_F(-0.f) - t); + FFX_MIN16_F fWeight2 = Lanczos2ApproxNoClamp(FFX_MIN16_F(+1.f) - t); + FFX_MIN16_F fWeight3 = Lanczos2ApproxNoClamp(FFX_MIN16_F(+2.f) - t); + return (fWeight0 * fColor0 + fWeight1 * fColor1 + fWeight2 * fColor2 + fWeight3 * fColor3) / (fWeight0 + fWeight1 + fWeight2 + fWeight3); +} +#endif //FFX_HALF + +FfxFloat32x4 Lanczos2Approx(FetchedBicubicSamples Samples, FfxFloat32x2 fPxFrac) +{ + FfxFloat32x4 fColorX0 = Lanczos2Approx(Samples.fColor00, Samples.fColor10, Samples.fColor20, Samples.fColor30, fPxFrac.x); + FfxFloat32x4 fColorX1 = Lanczos2Approx(Samples.fColor01, Samples.fColor11, Samples.fColor21, Samples.fColor31, fPxFrac.x); + FfxFloat32x4 fColorX2 = Lanczos2Approx(Samples.fColor02, Samples.fColor12, Samples.fColor22, Samples.fColor32, fPxFrac.x); + FfxFloat32x4 fColorX3 = Lanczos2Approx(Samples.fColor03, Samples.fColor13, Samples.fColor23, Samples.fColor33, fPxFrac.x); + FfxFloat32x4 fColorXY = Lanczos2Approx(fColorX0, fColorX1, fColorX2, fColorX3, fPxFrac.y); + + // Deringing + + // TODO: only use 4 by checking jitter + const FfxInt32 iDeringingSampleCount = 4; + const FfxFloat32x4 fDeringingSamples[4] = { + Samples.fColor11, + Samples.fColor21, + Samples.fColor12, + Samples.fColor22, + }; + + FfxFloat32x4 fDeringingMin = fDeringingSamples[0]; + FfxFloat32x4 fDeringingMax = fDeringingSamples[0]; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iDeringingSampleCount; ++iSampleIndex) + { + fDeringingMin = ffxMin(fDeringingMin, fDeringingSamples[iSampleIndex]); + fDeringingMax = ffxMax(fDeringingMax, fDeringingSamples[iSampleIndex]); + } + + fColorXY = clamp(fColorXY, fDeringingMin, fDeringingMax); + + return fColorXY; +} + +#if FFX_HALF +FFX_MIN16_F4 Lanczos2Approx(FetchedBicubicSamplesMin16 Samples, FFX_MIN16_F2 fPxFrac) +{ + FFX_MIN16_F4 fColorX0 = Lanczos2Approx(Samples.fColor00, Samples.fColor10, Samples.fColor20, Samples.fColor30, fPxFrac.x); + FFX_MIN16_F4 fColorX1 = Lanczos2Approx(Samples.fColor01, Samples.fColor11, Samples.fColor21, Samples.fColor31, fPxFrac.x); + FFX_MIN16_F4 fColorX2 = Lanczos2Approx(Samples.fColor02, Samples.fColor12, Samples.fColor22, Samples.fColor32, fPxFrac.x); + FFX_MIN16_F4 fColorX3 = Lanczos2Approx(Samples.fColor03, Samples.fColor13, Samples.fColor23, Samples.fColor33, fPxFrac.x); + FFX_MIN16_F4 fColorXY = Lanczos2Approx(fColorX0, fColorX1, fColorX2, fColorX3, fPxFrac.y); + + // Deringing + + // TODO: only use 4 by checking jitter + const FfxInt32 iDeringingSampleCount = 4; + const FFX_MIN16_F4 fDeringingSamples[4] = { + Samples.fColor11, + Samples.fColor21, + Samples.fColor12, + Samples.fColor22, + }; + + FFX_MIN16_F4 fDeringingMin = fDeringingSamples[0]; + FFX_MIN16_F4 fDeringingMax = fDeringingSamples[0]; + + FFX_UNROLL + for (FfxInt32 iSampleIndex = 1; iSampleIndex < iDeringingSampleCount; ++iSampleIndex) + { + fDeringingMin = ffxMin(fDeringingMin, fDeringingSamples[iSampleIndex]); + fDeringingMax = ffxMax(fDeringingMax, fDeringingSamples[iSampleIndex]); + } + + fColorXY = clamp(fColorXY, fDeringingMin, fDeringingMax); + + return fColorXY; +} +#endif + +// Clamp by offset direction. Assuming iPxSample is already in range and iPxOffset is compile time constant. +FfxInt32x2 ClampCoord(FfxInt32x2 iPxSample, FfxInt32x2 iPxOffset, FfxInt32x2 iTextureSize) +{ + FfxInt32x2 result = iPxSample + iPxOffset; + result.x = ffxMax(1, ffxMin(result.x, iTextureSize.x - 2)); + result.y = ffxMax(1, ffxMin(result.y, iTextureSize.y - 2)); + return result; +} +#if FFX_HALF +FFX_MIN16_I2 ClampCoord(FFX_MIN16_I2 iPxSample, FFX_MIN16_I2 iPxOffset, FFX_MIN16_I2 iTextureSize) +{ + FFX_MIN16_I2 result = iPxSample + iPxOffset; + result.x = ffxMax(FFX_MIN16_I(1), ffxMin(result.x, iTextureSize.x - FFX_MIN16_I(2))); + result.y = ffxMax(FFX_MIN16_I(1), ffxMin(result.y, iTextureSize.y - FFX_MIN16_I(2))); + return result; +} +#endif //FFX_HALF + + +#define DeclareCustomFetchBicubicSamplesWithType(SampleType, TextureType, AddrType, Name, LoadTexture) \ + SampleType Name(AddrType iPxSample, AddrType iTextureSize) \ + { \ + SampleType Samples; \ + \ + Samples.fColor00 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(-1, -1), iTextureSize))); \ + Samples.fColor10 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+0, -1), iTextureSize))); \ + Samples.fColor20 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+1, -1), iTextureSize))); \ + Samples.fColor30 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+2, -1), iTextureSize))); \ + \ + Samples.fColor01 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(-1, +0), iTextureSize))); \ + Samples.fColor11 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+0, +0), iTextureSize))); \ + Samples.fColor21 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+1, +0), iTextureSize))); \ + Samples.fColor31 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+2, +0), iTextureSize))); \ + \ + Samples.fColor02 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(-1, +1), iTextureSize))); \ + Samples.fColor12 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+0, +1), iTextureSize))); \ + Samples.fColor22 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+1, +1), iTextureSize))); \ + Samples.fColor32 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+2, +1), iTextureSize))); \ + \ + Samples.fColor03 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(-1, +2), iTextureSize))); \ + Samples.fColor13 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+0, +2), iTextureSize))); \ + Samples.fColor23 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+1, +2), iTextureSize))); \ + Samples.fColor33 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+2, +2), iTextureSize))); \ + \ + return Samples; \ + } + +#define DeclareCustomFetchBicubicSamples(Name, LoadTexture) \ + DeclareCustomFetchBicubicSamplesWithType(FetchedBicubicSamples, FfxFloat32x4, FfxInt32x2, Name, LoadTexture) + +#define DeclareCustomFetchBicubicSamplesMin16(Name, LoadTexture) \ + DeclareCustomFetchBicubicSamplesWithType(FetchedBicubicSamplesMin16, FFX_MIN16_F4, FfxInt32x2, Name, LoadTexture) + +#define DeclareCustomFetchBilinearSamplesWithType(SampleType, TextureType,AddrType, Name, LoadTexture) \ + SampleType Name(AddrType iPxSample, AddrType iTextureSize) \ + { \ + SampleType Samples; \ + Samples.fColor00 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+0, +0), iTextureSize))); \ + Samples.fColor10 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+1, +0), iTextureSize))); \ + Samples.fColor01 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+0, +1), iTextureSize))); \ + Samples.fColor11 = TextureType(LoadTexture(ClampCoord(iPxSample, AddrType(+1, +1), iTextureSize))); \ + return Samples; \ + } + +#define DeclareCustomFetchBilinearSamples(Name, LoadTexture) \ + DeclareCustomFetchBilinearSamplesWithType(FetchedBilinearSamples, FfxFloat32x4, FfxInt32x2, Name, LoadTexture) + +#define DeclareCustomFetchBilinearSamplesMin16(Name, LoadTexture) \ + DeclareCustomFetchBilinearSamplesWithType(FetchedBilinearSamplesMin16, FFX_MIN16_F4, FfxInt32x2, Name, LoadTexture) + +// BE CAREFUL: there is some precision issues and (3253, 125) leading to (3252.9989778, 125.001102) +// is common, so iPxSample can "jitter" +#define DeclareCustomTextureSample(Name, InterpolateSamples, FetchSamples) \ + FfxFloat32x4 Name(FfxFloat32x2 fUvSample, FfxInt32x2 iTextureSize) \ + { \ + FfxFloat32x2 fPxSample = (fUvSample * FfxFloat32x2(iTextureSize)) - FfxFloat32x2(0.5f, 0.5f); \ + FfxFloat32x2 fPxFrac = ffxFract(fPxSample); \ + /* Clamp base coords */ \ + fPxSample.x = ffxMax(0.0f, ffxMin(FfxFloat32(iTextureSize.x-1), fPxSample.x)); \ + fPxSample.y = ffxMax(0.0f, ffxMin(FfxFloat32(iTextureSize.y-1), fPxSample.y)); \ + /* */ \ + FfxInt32x2 iPxSample = FfxInt32x2(floor(fPxSample)); \ + FfxFloat32x4 fColorXY = FfxFloat32x4(InterpolateSamples(FetchSamples(iPxSample, iTextureSize), fPxFrac)); \ + return fColorXY; \ + } + +#define DeclareCustomTextureSampleMin16(Name, InterpolateSamples, FetchSamples) \ + FFX_MIN16_F4 Name(FfxFloat32x2 fUvSample, FfxInt32x2 iTextureSize) \ + { \ + FfxFloat32x2 fPxSample = (fUvSample * FfxFloat32x2(iTextureSize)) - FfxFloat32x2(0.5f, 0.5f); \ + FFX_MIN16_F2 fPxFrac = FFX_MIN16_F2(ffxFract(fPxSample)); \ + /* Clamp base coords */ \ + fPxSample.x = ffxMax(0.0f, ffxMin(FfxFloat32(iTextureSize.x), fPxSample.x)); \ + fPxSample.y = ffxMax(0.0f, ffxMin(FfxFloat32(iTextureSize.y), fPxSample.y)); \ + /* */ \ + FfxInt32x2 iPxSample = FfxInt32x2(floor(fPxSample)); \ + FFX_MIN16_F4 fColorXY = FFX_MIN16_F4(InterpolateSamples(FetchSamples(iPxSample, iTextureSize), fPxFrac)); \ + return fColorXY; \ + } + +#define FFX_FSR3UPSCALER_CONCAT_ID(x, y) x ## y +#define FFX_FSR3UPSCALER_CONCAT(x, y) FFX_FSR3UPSCALER_CONCAT_ID(x, y) +#define FFX_FSR3UPSCALER_SAMPLER_1D_0 Lanczos2 +#define FFX_FSR3UPSCALER_SAMPLER_1D_1 Lanczos2LUT +#define FFX_FSR3UPSCALER_SAMPLER_1D_2 Lanczos2Approx + +#define FFX_FSR3UPSCALER_GET_LANCZOS_SAMPLER1D(x) FFX_FSR3UPSCALER_CONCAT(FFX_FSR3UPSCALER_SAMPLER_1D_, x) + +#endif //!defined( FFX_FSR3UPSCALER_SAMPLE_H ) diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change.h new file mode 100644 index 000000000..2eb23aacd --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change.h @@ -0,0 +1,68 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +FFX_STATIC const FfxInt32 s_MipLevelsToUse = 3; + +struct ShadingChangeLumaInfo +{ + FfxFloat32 fSamples[s_MipLevelsToUse]; +}; + +ShadingChangeLumaInfo ComputeShadingChangeLuma(FfxInt32x2 iPxPos, FfxFloat32x2 fUv, const FfxInt32x2 iCurrentSize) +{ + ShadingChangeLumaInfo info; + + const FfxFloat32x2 fMipUv = ClampUv(fUv, ShadingChangeRenderSize(), GetSPDMipDimensions(0)); + + FFX_UNROLL + for (FfxInt32 iMipLevel = iShadingChangeMipStart; iMipLevel < s_MipLevelsToUse; iMipLevel++) { + + const FfxFloat32x2 fSample = SampleSPDMipLevel(fMipUv, iMipLevel); + + info.fSamples[iMipLevel] = abs(fSample.x * fSample.y); + } + + return info; +} + +void ShadingChange(FfxInt32x2 iPxPos) +{ + if (IsOnScreen(FfxInt32x2(iPxPos), ShadingChangeRenderSize())) { + + const FfxFloat32x2 fUv = (iPxPos + 0.5f) / ShadingChangeRenderSize(); + const FfxFloat32x2 fUvJittered = fUv + Jitter() / RenderSize(); + + const ShadingChangeLumaInfo info = ComputeShadingChangeLuma(iPxPos, fUvJittered, ShadingChangeRenderSize()); + + const FfxFloat32 fScale = 1.0f + iShadingChangeMipStart / s_MipLevelsToUse; + FfxFloat32 fShadingChange = 0.0f; + FFX_UNROLL + for (int iMipLevel = iShadingChangeMipStart; iMipLevel < s_MipLevelsToUse; iMipLevel++) + { + if (info.fSamples[iMipLevel] > 0) { + fShadingChange = ffxMax(fShadingChange, info.fSamples[iMipLevel]) * fScale; + } + } + + StoreShadingChange(iPxPos, ffxSaturate(fShadingChange)); + } +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid.h new file mode 100644 index 000000000..63ca5d6d5 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid.h @@ -0,0 +1,297 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +FFX_GROUPSHARED FfxUInt32 spdCounter; + +void SpdIncreaseAtomicCounter(FfxUInt32 slice) +{ + SPD_IncreaseAtomicCounter(spdCounter); +} + +FfxUInt32 SpdGetAtomicCounter() +{ + return spdCounter; +} + +void SpdResetAtomicCounter(FfxUInt32 slice) +{ + SPD_ResetAtomicCounter(); +} + +#ifndef SPD_PACKED_ONLY +FFX_GROUPSHARED FfxFloat32 spdIntermediateR[16][16]; +FFX_GROUPSHARED FfxFloat32 spdIntermediateG[16][16]; +FFX_GROUPSHARED FfxFloat32 spdIntermediateB[16][16]; +FFX_GROUPSHARED FfxFloat32 spdIntermediateA[16][16]; + +FFX_STATIC const FfxInt32 DIFFERENCE = 0; +FFX_STATIC const FfxInt32 SIGN_SUM = 1; +FFX_STATIC const FfxInt32 MIP0_INDICATOR = 2; + +FfxFloat32x2 Sort2(FfxFloat32x2 v) +{ + return FfxFloat32x2(ffxMin(v.x, v.y), ffxMax(v.x, v.y)); +} + +struct SampleSet +{ + FfxFloat32 fSamples[SHADING_CHANGE_SET_SIZE]; +}; + +#define CompareSwap(i, j) \ +{ \ +FfxFloat32 fTmp = ffxMin(fSet.fSamples[i], fSet.fSamples[j]);\ +fSet.fSamples[j] = ffxMax(fSet.fSamples[i], fSet.fSamples[j]);\ +fSet.fSamples[i] = fTmp;\ +} + +#if SHADING_CHANGE_SET_SIZE == 5 +FFX_STATIC const FfxInt32x2 iSampleOffsets[5] = {FfxInt32x2(+0, +0), FfxInt32x2(-1, +0), FfxInt32x2(+1, +0), FfxInt32x2(+0, -1), FfxInt32x2(+0, +1)}; + +void SortSet(FFX_PARAMETER_INOUT SampleSet fSet) +{ + CompareSwap(0, 3); + CompareSwap(1, 4); + CompareSwap(0, 2); + CompareSwap(1, 3); + CompareSwap(0, 1); + CompareSwap(2, 4); + CompareSwap(1, 2); + CompareSwap(3, 4); + CompareSwap(2, 3); +} +#endif + +FfxFloat32 ComputeMinimumDifference(FfxInt32x2 iPxPos, SampleSet fSet0, SampleSet fSet1) +{ + FfxFloat32 fMinDiff = FSR3UPSCALER_FP16_MAX - 1; + FfxInt32 a = 0; + FfxInt32 b = 0; + + SortSet(fSet0); + SortSet(fSet1); + + const FfxFloat32 fMax = ffxMin(fSet0.fSamples[SHADING_CHANGE_SET_SIZE-1], fSet1.fSamples[SHADING_CHANGE_SET_SIZE-1]); + + if (fMax > FSR3UPSCALER_FP32_MIN) { + + FFX_UNROLL + for (FfxInt32 i = 0; i < SHADING_CHANGE_SET_SIZE && (fMinDiff < FSR3UPSCALER_FP16_MAX); i++) { + + FfxFloat32 fDiff = fSet0.fSamples[a] - fSet1.fSamples[b]; + + if (abs(fDiff) > FSR3UPSCALER_FP16_MIN) { + + fDiff = sign(fDiff) * (1.0f - MinDividedByMax(fSet0.fSamples[a], fSet1.fSamples[b])); + + fMinDiff = (abs(fDiff) < abs(fMinDiff)) ? fDiff : fMinDiff; + + a += FfxInt32(fSet0.fSamples[a] < fSet1.fSamples[b]); + b += FfxInt32(fSet0.fSamples[a] >= fSet1.fSamples[b]); + } + else + { + fMinDiff = FSR3UPSCALER_FP16_MAX; + } + } + } + + return fMinDiff * FfxFloat32(fMinDiff < (FSR3UPSCALER_FP16_MAX - 1)); +} + +SampleSet GetCurrentLumaBilinearSamples(FfxFloat32x2 fUv) +{ + const FfxFloat32x2 fUvJittered = fUv + Jitter() / RenderSize(); + const FfxInt32x2 iBasePos = FfxInt32x2(floor(fUvJittered * RenderSize())); + + SampleSet fSet; + + for (FfxInt32 iSampleIndex = 0; iSampleIndex < SHADING_CHANGE_SET_SIZE; iSampleIndex++) { + const FfxInt32x2 iSamplePos = ClampLoad(iBasePos, iSampleOffsets[iSampleIndex], RenderSize()); + fSet.fSamples[iSampleIndex] = LoadCurrentLuma(iSamplePos) * Exposure(); + fSet.fSamples[iSampleIndex] = ffxPow(fSet.fSamples[iSampleIndex], fShadingChangeSamplePow); + fSet.fSamples[iSampleIndex] = ffxMax(fSet.fSamples[iSampleIndex], FSR3UPSCALER_EPSILON); + } + + return fSet; +} + +struct PreviousLumaBilinearSamplesData +{ + SampleSet fSet; + FfxBoolean bIsExistingSample; +}; + +PreviousLumaBilinearSamplesData GetPreviousLumaBilinearSamples(FfxFloat32x2 fUv, FfxFloat32x2 fMotionVector) +{ + PreviousLumaBilinearSamplesData data; + + const FfxFloat32x2 fUvJittered = fUv + PreviousFrameJitter() / PreviousFrameRenderSize(); + const FfxFloat32x2 fReprojectedUv = fUvJittered + fMotionVector; + + data.bIsExistingSample = IsUvInside(fReprojectedUv); + + if (data.bIsExistingSample) { + + const FfxInt32x2 iBasePos = FfxInt32x2(floor(fReprojectedUv * PreviousFrameRenderSize())); + + for (FfxInt32 iSampleIndex = 0; iSampleIndex < SHADING_CHANGE_SET_SIZE; iSampleIndex++) { + + const FfxInt32x2 iSamplePos = ClampLoad(iBasePos, iSampleOffsets[iSampleIndex], PreviousFrameRenderSize()); + data.fSet.fSamples[iSampleIndex] = LoadPreviousLuma(iSamplePos) * DeltaPreExposure() * Exposure(); + data.fSet.fSamples[iSampleIndex] = ffxPow(data.fSet.fSamples[iSampleIndex], fShadingChangeSamplePow); + data.fSet.fSamples[iSampleIndex] = ffxMax(data.fSet.fSamples[iSampleIndex], FSR3UPSCALER_EPSILON); + } + } + + return data; +} + +FfxFloat32 ComputeDiff(FfxInt32x2 iPxPos, FfxFloat32x2 fUv, FfxFloat32x2 fMotionVector) +{ + FfxFloat32 fMinDiff = 0.0f; + + const SampleSet fCurrentSamples = GetCurrentLumaBilinearSamples(fUv); + const PreviousLumaBilinearSamplesData previousData = GetPreviousLumaBilinearSamples(fUv, fMotionVector); + + if (previousData.bIsExistingSample) { + fMinDiff = ComputeMinimumDifference(iPxPos, fCurrentSamples, previousData.fSet); + } + + return fMinDiff; +} + +FfxFloat32x4 SpdLoadSourceImage(FfxFloat32x2 iPxPos, FfxUInt32 slice) +{ + const FfxInt32x2 iPxSamplePos = ClampLoad(FfxInt32x2(iPxPos), FfxInt32x2(0, 0), FfxInt32x2(RenderSize())); + const FfxFloat32x2 fDilatedMotionVector = LoadDilatedMotionVector(iPxSamplePos); + const FfxFloat32x2 fUv = (iPxSamplePos + 0.5f) / RenderSize(); + + const FfxFloat32 fScaledAndSignedLumaDiff = ComputeDiff(iPxSamplePos, fUv, fDilatedMotionVector); + + FfxFloat32x4 fOutput = FfxFloat32x4(0.0f, 0.0f, 0.0f, 0.0f); + fOutput[DIFFERENCE] = fScaledAndSignedLumaDiff; + fOutput[SIGN_SUM] = (fScaledAndSignedLumaDiff != 0.0f) ? sign(fScaledAndSignedLumaDiff) : 0.0f; + fOutput[MIP0_INDICATOR] = 1.0f; + + return fOutput; +} + +FfxFloat32x4 SpdLoad(FfxInt32x2 tex, FfxUInt32 slice) +{ + return FfxFloat32x4(RWLoadPyramid(tex, 5), 0, 0); +} + +FfxFloat32x4 SpdReduce4(FfxFloat32x4 v0, FfxFloat32x4 v1, FfxFloat32x4 v2, FfxFloat32x4 v3) +{ + return (v0 + v1 + v2 + v3) * 0.25f; +} + +void SpdStore(FfxInt32x2 pix, FfxFloat32x4 outValue, FfxUInt32 index, FfxUInt32 slice) +{ + if (index >= iShadingChangeMipStart) + { + StorePyramid(pix, outValue.xy, index); + } +} + +FfxFloat32x4 SpdLoadIntermediate(FfxUInt32 x, FfxUInt32 y) +{ + return FfxFloat32x4( + spdIntermediateR[x][y], + spdIntermediateG[x][y], + spdIntermediateB[x][y], + spdIntermediateA[x][y]); +} +void SpdStoreIntermediate(FfxUInt32 x, FfxUInt32 y, FfxFloat32x4 value) +{ + spdIntermediateR[x][y] = value.x; + spdIntermediateG[x][y] = value.y; + spdIntermediateB[x][y] = value.z; + spdIntermediateA[x][y] = value.w; +} + +#endif + +// define fetch and store functions Packed +#if FFX_HALF + +FFX_GROUPSHARED FfxFloat16x2 spdIntermediateRG[16][16]; +FFX_GROUPSHARED FfxFloat16x2 spdIntermediateBA[16][16]; + +FfxFloat16x4 SpdLoadSourceImageH(FfxFloat32x2 tex, FfxUInt32 slice) +{ + return FfxFloat16x4(0, 0, 0, 0); +} + +FfxFloat16x4 SpdLoadH(FfxInt32x2 p, FfxUInt32 slice) +{ + return FfxFloat16x4(0, 0, 0, 0); +} + +void SpdStoreH(FfxInt32x2 p, FfxFloat16x4 value, FfxUInt32 mip, FfxUInt32 slice) +{ +} + +FfxFloat16x4 SpdLoadIntermediateH(FfxUInt32 x, FfxUInt32 y) +{ + return FfxFloat16x4( + spdIntermediateRG[x][y].x, + spdIntermediateRG[x][y].y, + spdIntermediateBA[x][y].x, + spdIntermediateBA[x][y].y); +} + +void SpdStoreIntermediateH(FfxUInt32 x, FfxUInt32 y, FfxFloat16x4 value) +{ + spdIntermediateRG[x][y] = value.xy; + spdIntermediateBA[x][y] = value.zw; +} + +FfxFloat16x4 SpdReduce4H(FfxFloat16x4 v0, FfxFloat16x4 v1, FfxFloat16x4 v2, FfxFloat16x4 v3) +{ + return (v0 + v1 + v2 + v3) * FfxFloat16(0.25); +} +#endif + +#include "spd/ffx_spd.h" + +void ComputeShadingChangePyramid(FfxUInt32x3 WorkGroupId, FfxUInt32 LocalThreadIndex) +{ +#if FFX_HALF + SpdDownsampleH( + FfxUInt32x2(WorkGroupId.xy), + FfxUInt32(LocalThreadIndex), + FfxUInt32(MipCount()), + FfxUInt32(NumWorkGroups()), + FfxUInt32(WorkGroupId.z), + FfxUInt32x2(WorkGroupOffset())); +#else + SpdDownsample( + FfxUInt32x2(WorkGroupId.xy), + FfxUInt32(LocalThreadIndex), + FfxUInt32(MipCount()), + FfxUInt32(NumWorkGroups()), + FfxUInt32(WorkGroupId.z), + FfxUInt32x2(WorkGroupOffset())); +#endif +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_upsample.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_upsample.h new file mode 100644 index 000000000..801a0a907 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/fsr3upscaler/ffx_fsr3upscaler_upsample.h @@ -0,0 +1,644 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +void Deringing(RectificationBox clippingBox, FFX_PARAMETER_INOUT FfxFloat32x3 fColor) +{ + fColor = clamp(fColor, clippingBox.aabbMin, clippingBox.aabbMax); +} + +#ifndef FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE +#define FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE 2 // Approximate +#endif + +FfxFloat32 GetUpsampleLanczosWeight(FfxFloat32x2 fSrcSampleOffset, FfxFloat32 fKernelWeight) +{ + FfxFloat32x2 fSrcSampleOffsetBiased = fSrcSampleOffset * fKernelWeight.xx; +#if FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 0 // LANCZOS_TYPE_REFERENCE + FfxFloat32 fSampleWeight = Lanczos2(length(fSrcSampleOffsetBiased)); +#elif FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 1 // LANCZOS_TYPE_LUT + FfxFloat32 fSampleWeight = Lanczos2_UseLUT(length(fSrcSampleOffsetBiased)); +#elif FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 2 // LANCZOS_TYPE_APPROXIMATE + FfxFloat32 fSampleWeight = Lanczos2ApproxSq(dot(fSrcSampleOffsetBiased, fSrcSampleOffsetBiased)); +#else +#error "Invalid Lanczos type" +#endif + return fSampleWeight; +} + +#if FFX_HALF +FFX_MIN16_F GetUpsampleLanczosWeight(FFX_MIN16_F2 fSrcSampleOffset, FFX_MIN16_F fKernelWeight) +{ + FFX_MIN16_F2 fSrcSampleOffsetBiased = fSrcSampleOffset * fKernelWeight.xx; +#if FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 0 // LANCZOS_TYPE_REFERENCE + FFX_MIN16_F fSampleWeight = Lanczos2(length(fSrcSampleOffsetBiased)); +#elif FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 1 // LANCZOS_TYPE_LUT + FFX_MIN16_F fSampleWeight = Lanczos2_UseLUT(length(fSrcSampleOffsetBiased)); +#elif FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 2 // LANCZOS_TYPE_APPROXIMATE + FFX_MIN16_F fSampleWeight = Lanczos2ApproxSq(dot(fSrcSampleOffsetBiased, fSrcSampleOffsetBiased)); + + // To Test: Save reciproqual sqrt compute + // FfxFloat32 fSampleWeight = Lanczos2Sq_UseLUT(dot(fSrcSampleOffsetBiased, fSrcSampleOffsetBiased)); +#else +#error "Invalid Lanczos type" +#endif + return fSampleWeight; +} +#endif + +FfxFloat32 ComputeMaxKernelWeight(const AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) { + + const FfxFloat32 fKernelSizeBias = 1.0f + (1.0f / FfxFloat32x2(DownscaleFactor()) - 1.0f).x; + + return ffxMin(FfxFloat32(1.99f), fKernelSizeBias); +} + +FfxFloat32x3 LoadPreparedColor(FfxInt32x2 iSamplePos) +{ + const FfxFloat32x3 fRgb = ffxMax(FfxFloat32x3(0, 0, 0), LoadInputColor(iSamplePos)) * Exposure(); + const FfxFloat32x3 fPreparedYCoCg = RGBToYCoCg(fRgb); + + return fPreparedYCoCg; +} + +#if FFX_HALF && (FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 2) && defined(__XBOX_SCARLETT) && defined(__XBATG_EXTRA_16_BIT_OPTIMISATION) && (__XBATG_EXTRA_16_BIT_OPTIMISATION == 1) +#define FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS 1 +#else +#define FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS 0 +#endif + +#if FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS + +void LoadPreparedColorPairedRgb(FFX_PARAMETER_OUT FFX_MIN16_F2 r, + FFX_PARAMETER_OUT FFX_MIN16_F2 g, + FFX_PARAMETER_OUT FFX_MIN16_F2 b, + FfxInt32x2 iSamplePos0, + FfxInt32x2 iSamplePos1) +{ + const FFX_MIN16_F3 sample0 = FFX_MIN16_F3(LoadInputColor(iSamplePos0)); + const FFX_MIN16_F3 sample1 = FFX_MIN16_F3(LoadInputColor(iSamplePos1)); + + r = ffxMax(FFX_MIN16_F2(0, 0), FFX_MIN16_F2(sample0.r, sample1.r)); + g = ffxMax(FFX_MIN16_F2(0, 0), FFX_MIN16_F2(sample0.g, sample1.g)); + b = ffxMax(FFX_MIN16_F2(0, 0), FFX_MIN16_F2(sample0.b, sample1.b)); + + r = FFX_MIN16_F2(r * Exposure()); + g = FFX_MIN16_F2(g * Exposure()); + b = FFX_MIN16_F2(b * Exposure()); +} + +void TonemapPaired(FFX_PARAMETER_INOUT FFX_MIN16_F2 r, FFX_PARAMETER_INOUT FFX_MIN16_F2 g, FFX_PARAMETER_INOUT FFX_MIN16_F2 b) +{ + FFX_MIN16_F2 denomF16 = ffxMax(ffxMax(ffxMax(0.0, r), g), b) + FFX_MIN16_F2(1.0, 1.0); + + // NOTE: expect 2 x v_cvt_f32_f16 + FfxFloat32x2 denomF32 = FfxFloat32x2(denomF16); + // NOTE: expect 2 x v_rcp_f32 + FfxFloat32x2 normF32 = FfxFloat32x2(1.0, 1.0) / denomF32; + // NOTE: expect 2 x v_cvt_f16_f32 + FFX_MIN16_F2 normF16 = FFX_MIN16_F2(normF32); + + r *= normF16; + g *= normF16; + b *= normF16; +} + +void RGBToYCoCgPaired(FFX_PARAMETER_INOUT FFX_MIN16_F2 r, FFX_PARAMETER_INOUT FFX_MIN16_F2 g, FFX_PARAMETER_INOUT FFX_MIN16_F2 b) +{ + /** + * NOTE: given the following conversion + * + * fYCoCg = FfxFloat32x3( + * 0.25f * fRgb.r + 0.5f * fRgb.g + 0.25f * fRgb.b, + * 0.5f * fRgb.r - 0.5f * fRgb.b, + * -0.25f * fRgb.r + 0.5f * fRgb.g - 0.25f * fRgb.b); + * + * it's possible to notice that we can compute: + * RplusBdiv4 = 0.25 * (R + B) + * + * so everything else is computed in 3 instructions + * Y = G * 0.5 + RplusBdiv4 + * Co = 2 * RplusBdiv4 - G + * Cg = G * 0.5 - RplusBdiv4 + */ + + // NOTE: expect v_pk_add_f32 + v_pk_mul_f32 + FFX_MIN16_F2 RplusBdiv4 = (r + b) * 0.25; + FFX_MIN16_F2 G = g; + FFX_MIN16_F2 B = b; + + // NOTE: expect 3x v_pk_fma_f32 + r = G * 0.5 + RplusBdiv4; + g = RplusBdiv4 * 2.0 - B; + b = G * 0.5 - RplusBdiv4; +} + +FFX_MIN16_F2 Compute3x3SamplesMinMaxPaired(FFX_PARAMETER_IN FFX_MIN16_F2 sampleCenter, + FFX_PARAMETER_IN FFX_MIN16_F2 sample0, + FFX_PARAMETER_IN FFX_MIN16_F2 sample1, + FFX_PARAMETER_IN FFX_MIN16_F2 sample2, + FFX_PARAMETER_IN FFX_MIN16_F2 sample3) +{ + FFX_MIN16_F2 twoMinValues = ffxMin(ffxMin(sample0, sample1), ffxMin(sample2, sample3)); + FFX_MIN16_F2 twoMaxValues = ffxMax(ffxMax(sample0, sample1), ffxMax(sample2, sample3)); + + return FFX_MIN16_F2( + ffxMin3Half(twoMinValues.x, twoMinValues.y, sampleCenter.x), + ffxMax3Half(twoMaxValues.x, twoMaxValues.y, sampleCenter.x) + ); +} + + +FFX_MIN16_F2 Bool2ToFloat16x2(bool x, bool y) +{ + uint lo = x ? 0x00003c00 : 0x00000000; + uint hi = y ? 0x3c000000 : 0x00000000; + return FFX_MIN16_F2(__XB_AsHalf(lo).x, __XB_AsHalf(hi).y); +} + +struct PairedRectificationBoxAndAccumulatedColorAndWeight +{ + FFX_MIN16_F2 boxCenterR; + FFX_MIN16_F2 boxCenterG; + FFX_MIN16_F2 boxCenterB; + + FFX_MIN16_F2 boxVecR; + FFX_MIN16_F2 boxVecG; + FFX_MIN16_F2 boxVecB; + + FFX_MIN16_F2 fBoxCenterWeight; + + FFX_MIN16_F2 fColorR; + FFX_MIN16_F2 fColorG; + FFX_MIN16_F2 fColorB; + FFX_MIN16_F2 fWeight; + + FFX_MIN16_F fKernelBiasSq; + FFX_MIN16_F fRectificationCurveBias; + + void setKernelBiasAndRectificationCurveBias(FfxFloat32 kernelBias, FfxFloat32 rectificationCurveBias) + { + fKernelBiasSq = FFX_MIN16_F(kernelBias * kernelBias); + fRectificationCurveBias = FFX_MIN16_F(rectificationCurveBias); + } + + void initUpscaledColor(FFX_MIN16_F fSrcSampleOffsetSq, FFX_MIN16_F fOnScreenWeight, FFX_MIN16_F2 sampleR, FFX_MIN16_F2 sampleG, FFX_MIN16_F2 sampleB) + { + #if FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 2 // LANCZOS_TYPE_APPROXIMATE + const FFX_MIN16_F2 LanczosUpsampleWeight = FFX_MIN16_F2( + PairedLanczos2ApproxSq(fSrcSampleOffsetSq * fKernelBiasSq).x, + 0.0 + ); + #else + #error "Only LANCZOS_TYPE_APPROXIMATE is supported in paired version so far" + #endif + const FFX_MIN16_F2 fSampleWeight = fOnScreenWeight * LanczosUpsampleWeight; + + fColorR = sampleR * fSampleWeight; + fColorG = sampleG * fSampleWeight; + fColorB = sampleB * fSampleWeight; + fWeight = fSampleWeight; + } + + void initBox(FFX_MIN16_F fSrcSampleOffsetSq, FFX_MIN16_F fOnScreenWeight, FFX_MIN16_F2 sampleR, FFX_MIN16_F2 sampleG, FFX_MIN16_F2 sampleB) + { + const FFX_MIN16_F2 fBoxSampleWeight = FFX_MIN16_F2( + exp(fRectificationCurveBias * fSrcSampleOffsetSq) * fOnScreenWeight, + 0.0 + ); + + FFX_MIN16_F2 weightedSampleR = sampleR * fBoxSampleWeight; + FFX_MIN16_F2 weightedSampleG = sampleG * fBoxSampleWeight; + FFX_MIN16_F2 weightedSampleB = sampleB * fBoxSampleWeight; + + boxCenterR = weightedSampleR; + boxCenterG = weightedSampleG; + boxCenterB = weightedSampleB; + + boxVecR = sampleR * weightedSampleR; + boxVecG = sampleG * weightedSampleG; + boxVecB = sampleB * weightedSampleB; + + fBoxCenterWeight = fBoxSampleWeight; + } + + void addUpscaledColorSample(FFX_MIN16_F2 fSrcSampleOffsetSq, FFX_MIN16_F2 fOnScreenWeight, FFX_MIN16_F2 sampleR, FFX_MIN16_F2 sampleG, FFX_MIN16_F2 sampleB) + { + #if FFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE == 2 // LANCZOS_TYPE_APPROXIMATE + const FFX_MIN16_F2 LanczosUpsampleWeight = PairedLanczos2ApproxSq(fSrcSampleOffsetSq * fKernelBiasSq); + #else + #error "Only LANCZOS_TYPE_APPROXIMATE is supported in paired version so far" + #endif + const FFX_MIN16_F2 fSampleWeight = fOnScreenWeight * LanczosUpsampleWeight; + + fColorR += sampleR * fSampleWeight; + fColorG += sampleG * fSampleWeight; + fColorB += sampleB * fSampleWeight; + fWeight += fSampleWeight; + } + + void addBoxSample(FFX_MIN16_F2 fSrcSampleOffsetSq, FFX_MIN16_F2 fOnScreenWeight, FFX_MIN16_F2 sampleR, FFX_MIN16_F2 sampleG, FFX_MIN16_F2 sampleB) + { + // NOTE: ideally expect here 2x v_fma_mix + 2x v_exp_f32 + 2x v_fma_mix + const FFX_MIN16_F2 fBoxSampleWeight = exp(fRectificationCurveBias * fSrcSampleOffsetSq) * fOnScreenWeight; + + FFX_MIN16_F2 weightedSampleR = sampleR * fBoxSampleWeight; + FFX_MIN16_F2 weightedSampleG = sampleG * fBoxSampleWeight; + FFX_MIN16_F2 weightedSampleB = sampleB * fBoxSampleWeight; + + boxCenterR += weightedSampleR; + boxCenterG += weightedSampleG; + boxCenterB += weightedSampleB; + + boxVecR += sampleR * weightedSampleR; + boxVecG += sampleG * weightedSampleG; + boxVecB += sampleB * weightedSampleB; + + fBoxCenterWeight += fBoxSampleWeight; + } + + void finalizeUpscaledColor(FFX_PARAMETER_OUT FfxFloat32x4 upscaledColorAndWeight) + { + upscaledColorAndWeight.r = fColorR.x + fColorR.y; + upscaledColorAndWeight.g = fColorG.x + fColorG.y; + upscaledColorAndWeight.b = fColorB.x + fColorB.y; + + upscaledColorAndWeight.a = fWeight.x + fWeight.y; + } + + void finalizeBox(FFX_PARAMETER_OUT FfxFloat32x2 boxCenterAndVecR, + FFX_PARAMETER_OUT FfxFloat32x2 boxCenterAndVecG, + FFX_PARAMETER_OUT FfxFloat32x2 boxCenterAndVecB, + FFX_PARAMETER_OUT FfxFloat32 boxCenterWeight) + { + boxCenterAndVecR = FfxFloat32x2(boxCenterR.x + boxCenterR.y, boxVecR.x + boxVecR.y); + boxCenterAndVecG = FfxFloat32x2(boxCenterG.x + boxCenterG.y, boxVecG.x + boxVecG.y); + boxCenterAndVecB = FfxFloat32x2(boxCenterB.x + boxCenterB.y, boxVecB.x + boxVecB.y); + + boxCenterWeight = fBoxCenterWeight.x + fBoxCenterWeight.y; + } +}; +#endif // #if FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS + +void ComputeUpsampledColorAndWeight(const AccumulationPassCommonParams params, FFX_PARAMETER_INOUT AccumulationPassData data) +{ + // We compute a sliced lanczos filter with 2 lobes (other slices are accumulated temporaly) + const FfxFloat32x2 fDstOutputPos = FfxFloat32x2(params.iPxHrPos) + FFX_BROADCAST_FLOAT32X2(0.5f); + const FfxFloat32x2 fSrcOutputPos = fDstOutputPos * DownscaleFactor(); + const FfxInt32x2 iSrcInputPos = FfxInt32x2(floor(fSrcOutputPos)); + const FfxFloat32x2 fSrcUnjitteredPos = (FfxFloat32x2(iSrcInputPos) + FfxFloat32x2(0.5f, 0.5f)) - Jitter(); // This is the un-jittered position of the sample at offset 0,0 + const FfxFloat32x2 fBaseSampleOffset = FfxFloat32x2(fSrcUnjitteredPos - fSrcOutputPos); + + FfxInt32x2 offsetTL; + offsetTL.x = (fSrcUnjitteredPos.x > fSrcOutputPos.x) ? FfxInt32(-2) : FfxInt32(-1); + offsetTL.y = (fSrcUnjitteredPos.y > fSrcOutputPos.y) ? FfxInt32(-2) : FfxInt32(-1); + + //Load samples + // If fSrcUnjitteredPos.y > fSrcOutputPos.y, indicates offsetTL.y = -2, sample offset Y will be [-2, 1], clipbox will be rows [1, 3]. + // Flip row# for sampling offset in this case, so first 0~2 rows in the sampled array can always be used for computing the clipbox. + // This reduces branch or cmove on sampled colors, but moving this overhead to sample position / weight calculation time which apply to less values. + const FfxBoolean bFlipRow = fSrcUnjitteredPos.y > fSrcOutputPos.y; + const FfxBoolean bFlipCol = fSrcUnjitteredPos.x > fSrcOutputPos.x; + const FfxFloat32x2 fOffsetTL = FfxFloat32x2(offsetTL); + + const FfxBoolean bIsInitialSample = (params.fAccumulation == 0.0f); + +#if FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS + // Unroll the loop to load samples on Scarlett to help the shader compiler + const FFX_MIN16_F2 fSampleOffsetX02 = __XB_AsHalf(bFlipCol ? __XB_AsUInt(FFX_MIN16_F2( 1, -1)) : __XB_AsUInt(FFX_MIN16_F2(-1, 1))); + const FFX_MIN16_F2 fSampleOffsetY02 = __XB_AsHalf(bFlipRow ? __XB_AsUInt(FFX_MIN16_F2( 1, -1)) : __XB_AsUInt(FFX_MIN16_F2(-1, 1))); + + typedef FfxInt32 FfxTexCoordI; + typedef FfxInt32x2 FfxTexCoordI2; + + const FfxTexCoordI2 iSrcSamplePosX01 = FfxTexCoordI2(iSrcInputPos.xx) + (bFlipCol ? FfxTexCoordI2( 1, 0) : FfxTexCoordI2(-1, 0)); + const FfxTexCoordI2 iSrcSamplePosX23 = FfxTexCoordI2(iSrcInputPos.xx) + (bFlipCol ? FfxTexCoordI2(-1, -2) : FfxTexCoordI2( 1, 2)); + + const FfxTexCoordI2 iSrcSamplePosY01 = FfxTexCoordI2(iSrcInputPos.yy) + (bFlipRow ? FfxTexCoordI2( 1, 0) : FfxTexCoordI2(-1, 0)); + const FfxTexCoordI2 iSrcSamplePosY23 = FfxTexCoordI2(iSrcInputPos.yy) + (bFlipRow ? FfxTexCoordI2(-1, -2) : FfxTexCoordI2( 1, 2)); + + const FfxTexCoordI2 renderSizeLastTexelCoord = FfxTexCoordI2(RenderSize()) - FfxTexCoordI2(1, 1); + + const FfxTexCoordI2 iSrcSamplePosX01Clamped = FfxTexCoordI2( + __XB_Med3_I32(iSrcSamplePosX01.x, 0, renderSizeLastTexelCoord.x), + __XB_Med3_I32(iSrcSamplePosX01.y, 0, renderSizeLastTexelCoord.x) + ); + + const FfxTexCoordI2 iSrcSamplePosX23Clamped = FfxTexCoordI2( + __XB_Med3_I32(iSrcSamplePosX23.x, 0, renderSizeLastTexelCoord.x), + __XB_Med3_I32(iSrcSamplePosX23.y, 0, renderSizeLastTexelCoord.x) + ); + + const FfxTexCoordI2 iSrcSamplePosY01Clamped = FfxTexCoordI2( + __XB_Med3_I32(iSrcSamplePosY01.x, 0, renderSizeLastTexelCoord.y), + __XB_Med3_I32(iSrcSamplePosY01.y, 0, renderSizeLastTexelCoord.y) + ); + + const FfxTexCoordI2 iSrcSamplePosY23Clamped = FfxTexCoordI2( + __XB_Med3_I32(iSrcSamplePosY23.x, 0, renderSizeLastTexelCoord.y), + __XB_Med3_I32(iSrcSamplePosY23.y, 0, renderSizeLastTexelCoord.y) + ); + + FFX_MIN16_F2 TopCornerR, BotCornerR, HorzR, VertR, CenterR; + FFX_MIN16_F2 TopCornerG, BotCornerG, HorzG, VertG, CenterG; + FFX_MIN16_F2 TopCornerB, BotCornerB, HorzB, VertB, CenterB; + + LoadPreparedColorPairedRgb(TopCornerR, TopCornerG, TopCornerB, + FfxTexCoordI2(iSrcSamplePosX01Clamped.x, iSrcSamplePosY01Clamped.x), + FfxTexCoordI2(iSrcSamplePosX23Clamped.x, iSrcSamplePosY01Clamped.x) + ); + + LoadPreparedColorPairedRgb(BotCornerR, BotCornerG, BotCornerB, + FfxTexCoordI2(iSrcSamplePosX01Clamped.x, iSrcSamplePosY23Clamped.x), + FfxTexCoordI2(iSrcSamplePosX23Clamped.x, iSrcSamplePosY23Clamped.x) + ); + + LoadPreparedColorPairedRgb(HorzR, HorzG, HorzB, + FfxTexCoordI2(iSrcSamplePosX01Clamped.x, iSrcSamplePosY01Clamped.y), + FfxTexCoordI2(iSrcSamplePosX23Clamped.x, iSrcSamplePosY01Clamped.y) + ); + + LoadPreparedColorPairedRgb(VertR, VertG, VertB, + FfxTexCoordI2(iSrcSamplePosX01Clamped.y, iSrcSamplePosY01Clamped.x), + FfxTexCoordI2(iSrcSamplePosX01Clamped.y, iSrcSamplePosY23Clamped.x) + ); + + // NOTE: duplicated data + LoadPreparedColorPairedRgb(CenterR, CenterG, CenterB, + FfxTexCoordI2(iSrcSamplePosX01Clamped.y, iSrcSamplePosY01Clamped.y), + FfxTexCoordI2(iSrcSamplePosX01Clamped.y, iSrcSamplePosY01Clamped.y) + ); + + #if FFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT + if (bIsInitialSample) + { + TonemapPaired(TopCornerR, TopCornerG, TopCornerB); + TonemapPaired(BotCornerR, BotCornerG, BotCornerB); + TonemapPaired(HorzR, HorzG, HorzB); + TonemapPaired(VertR, VertG, VertB); + TonemapPaired(CenterR, CenterG, CenterB); + } + #endif + + RGBToYCoCgPaired(TopCornerR, TopCornerG, TopCornerB); + RGBToYCoCgPaired(BotCornerR, BotCornerG, BotCornerB); + RGBToYCoCgPaired(HorzR, HorzG, HorzB); + RGBToYCoCgPaired(VertR, VertG, VertB); + RGBToYCoCgPaired(CenterR, CenterG, CenterB); + +#else + FfxFloat32x3 fSamples[9]; + FfxInt32 iSampleIndex = 0; + + FFX_UNROLL + for (FfxInt32 row = 0; row < 3; row++) { + FFX_UNROLL + for (FfxInt32 col = 0; col < 3; col++) { + const FfxInt32x2 iSampleColRow = FfxInt32x2(bFlipCol ? (3 - col) : col, bFlipRow ? (3 - row) : row); + const FfxInt32x2 iSrcSamplePos = FfxInt32x2(iSrcInputPos) + offsetTL + iSampleColRow; + const FfxInt32x2 iSampleCoord = ClampLoad(iSrcSamplePos, FfxInt32x2(0, 0), FfxInt32x2(RenderSize())); + + fSamples[iSampleIndex] = LoadPreparedColor(iSampleCoord); + + ++iSampleIndex; + } + } + +#if FFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT + if (bIsInitialSample) + { + for (iSampleIndex = 0; iSampleIndex < 9; ++iSampleIndex) + { + //YCoCg -> RGB -> Tonemap -> YCoCg (Use RGB tonemapper to avoid color desaturation) + fSamples[iSampleIndex] = RGBToYCoCg(Tonemap(YCoCgToRGB(fSamples[iSampleIndex]))); + } + } +#endif + +#endif // #if FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS + + // Identify how much of each upsampled color to be used for this frame + const FfxFloat32 fKernelBiasMax = ComputeMaxKernelWeight(params, data); + const FfxFloat32 fKernelBiasMin = ffxMax(1.0f, ((1.0f + fKernelBiasMax) * 0.3f)); + + const FfxFloat32 fKernelBiasWeight = + ffxMin(1.0f - params.fDisocclusion * 0.5f, + ffxMin(1.0f - params.fShadingChange, + ffxSaturate(data.fHistoryWeight * 5.0f) + )); + + const FfxFloat32 fKernelBias = ffxLerp(fKernelBiasMin, fKernelBiasMax, fKernelBiasWeight); + +#if FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS + // Unroll the loop to load samples on Scarlett to help the shader compiler + const bool coordX0OnScreen = iSrcSamplePosX01.x == iSrcSamplePosX01Clamped.x; + const bool coordX1OnScreen = iSrcSamplePosX01.y == iSrcSamplePosX01Clamped.y; + const bool coordX2OnScreen = iSrcSamplePosX23.x == iSrcSamplePosX23Clamped.x; + + const bool coordY0OnScreen = iSrcSamplePosY01.x == iSrcSamplePosY01Clamped.x; + const bool coordY1OnScreen = iSrcSamplePosY01.y == iSrcSamplePosY01Clamped.y; + const bool coordY2OnScreen = iSrcSamplePosY23.x == iSrcSamplePosY23Clamped.x; + + const FFX_MIN16_F2 fBaseSampleOffsetHalf = FFX_MIN16_F2(fBaseSampleOffset); + + const FFX_MIN16_F2 fSrcSampleOffsetX_02 = fBaseSampleOffsetHalf.xx + fSampleOffsetX02; + const FFX_MIN16_F2 fSrcSampleOffsetY_02 = fBaseSampleOffsetHalf.yy + fSampleOffsetY02; + + const FFX_MIN16_F2 fSrcSampleOffsetXSq_02 = fSrcSampleOffsetX_02 * fSrcSampleOffsetX_02; + const FFX_MIN16_F2 fSrcSampleOffsetYSq_02 = fSrcSampleOffsetY_02 * fSrcSampleOffsetY_02; + const FFX_MIN16_F2 fSrcSampleOffsetXYSq_11 = fBaseSampleOffsetHalf * fBaseSampleOffsetHalf; + + const FfxFloat32 fRectificationCurveBias = -2.3f; + PairedRectificationBoxAndAccumulatedColorAndWeight pairedBox; + pairedBox.setKernelBiasAndRectificationCurveBias(fKernelBias, fRectificationCurveBias); + + // init by o o o + // o x o + // o o o + pairedBox.initBox( + fSrcSampleOffsetXYSq_11.x + fSrcSampleOffsetXYSq_11.y, + Bool2ToFloat16x2(coordX1OnScreen && coordY1OnScreen, false).x, + CenterR, CenterG, CenterB + ); + + // add remaining two samples from 1st row x o x + // o * o + // o o o + pairedBox.addBoxSample( + fSrcSampleOffsetXSq_02 + fSrcSampleOffsetYSq_02.xx, + Bool2ToFloat16x2(coordX0OnScreen && coordY0OnScreen, coordX2OnScreen && coordY0OnScreen), + TopCornerR, TopCornerG, TopCornerB + ); + + // add two samples from 2nd row * o * + // o * o + // x o x + pairedBox.addBoxSample( + fSrcSampleOffsetXSq_02 + fSrcSampleOffsetYSq_02.yy, + Bool2ToFloat16x2(coordX0OnScreen && coordY2OnScreen, coordX2OnScreen && coordY2OnScreen), + BotCornerR, BotCornerG, BotCornerB + ); + + // add two samples from 3rd row * o * + // x * x + // * o * + pairedBox.addBoxSample( + fSrcSampleOffsetXSq_02 + fSrcSampleOffsetXYSq_11.yy, + Bool2ToFloat16x2(coordX0OnScreen && coordY1OnScreen, coordX2OnScreen && coordY1OnScreen), + HorzR, HorzG, HorzB + ); + + // add remaining samples * x * + // * * * + // * x * + pairedBox.addBoxSample( + fSrcSampleOffsetXYSq_11.xx + fSrcSampleOffsetYSq_02, + Bool2ToFloat16x2(coordX1OnScreen && coordY0OnScreen, coordX1OnScreen && coordY2OnScreen), + VertR, VertG, VertB + ); + + FfxFloat32x2 boxCenterAndVecR, boxCenterAndVecG, boxCenterAndVecB; + FfxFloat32 boxCenterWeight; + pairedBox.finalizeBox(boxCenterAndVecR, boxCenterAndVecG, boxCenterAndVecB, boxCenterWeight); + + if (!bIsInitialSample) + { + pairedBox.initUpscaledColor( + fSrcSampleOffsetXYSq_11.x + fSrcSampleOffsetXYSq_11.y, + Bool2ToFloat16x2(coordX1OnScreen && coordY1OnScreen, false).x, + CenterR, CenterG, CenterB + ); + + // add remaining two samples from 1st row x o x + // o * o + // o o o + pairedBox.addUpscaledColorSample( + fSrcSampleOffsetXSq_02 + fSrcSampleOffsetYSq_02.xx, + Bool2ToFloat16x2(coordX0OnScreen && coordY0OnScreen, coordX2OnScreen && coordY0OnScreen), + TopCornerR, TopCornerG, TopCornerB + ); + + // add two samples from 2nd row * o * + // o * o + // x o x + pairedBox.addUpscaledColorSample( + fSrcSampleOffsetXSq_02 + fSrcSampleOffsetYSq_02.yy, + Bool2ToFloat16x2(coordX0OnScreen && coordY2OnScreen, coordX2OnScreen && coordY2OnScreen), + BotCornerR, BotCornerG, BotCornerB + ); + + // add two samples from 3rd row * o * + // x * x + // * o * + pairedBox.addUpscaledColorSample( + fSrcSampleOffsetXSq_02 + fSrcSampleOffsetXYSq_11.yy, + Bool2ToFloat16x2(coordX0OnScreen && coordY1OnScreen, coordX2OnScreen && coordY1OnScreen), + HorzR, HorzG, HorzB + ); + + // add remaining samples * x * + // * * * + // * x * + pairedBox.addUpscaledColorSample( + fSrcSampleOffsetXYSq_11.xx + fSrcSampleOffsetYSq_02, + Bool2ToFloat16x2(coordX1OnScreen && coordY0OnScreen, coordX1OnScreen && coordY2OnScreen), + VertR, VertG, VertB + ); + + FfxFloat32x4 upscaledColorAndWeight = 0.0; + pairedBox.finalizeUpscaledColor(upscaledColorAndWeight); + + data.fUpsampledColor = FfxFloat32x3(upscaledColorAndWeight.rgb); + data.fUpsampledWeight = FfxFloat32(upscaledColorAndWeight.w); + } + + FFX_MIN16_F2 aabbMinMaxR = Compute3x3SamplesMinMaxPaired(CenterR, TopCornerR, BotCornerR, HorzR, VertR); + FFX_MIN16_F2 aabbMinMaxG = Compute3x3SamplesMinMaxPaired(CenterG, TopCornerG, BotCornerG, HorzG, VertG); + FFX_MIN16_F2 aabbMinMaxB = Compute3x3SamplesMinMaxPaired(CenterB, TopCornerB, BotCornerB, HorzB, VertB); + + data.clippingBox.boxCenter = FfxFloat32x3(boxCenterAndVecR.x, boxCenterAndVecG.x, boxCenterAndVecB.x); + data.clippingBox.boxVec = FfxFloat32x3(boxCenterAndVecR.y, boxCenterAndVecG.y, boxCenterAndVecB.y); + data.clippingBox.aabbMin = FfxFloat32x3(aabbMinMaxR.x, aabbMinMaxG.x, aabbMinMaxB.x); + data.clippingBox.aabbMax = FfxFloat32x3(aabbMinMaxR.y, aabbMinMaxG.y, aabbMinMaxB.y); + data.clippingBox.fBoxCenterWeight = FfxFloat32(boxCenterWeight); +#else + + iSampleIndex = 0; + + FFX_UNROLL + for (FfxInt32 row = 0; row < 3; row++) + { + FFX_UNROLL + for (FfxInt32 col = 0; col < 3; col++) + { + const FfxInt32x2 sampleColRow = FfxInt32x2(bFlipCol ? (3 - col) : col, bFlipRow ? (3 - row) : row); + const FfxFloat32x2 fOffset = fOffsetTL + FfxFloat32x2(sampleColRow); + const FfxFloat32x2 fSrcSampleOffset = fBaseSampleOffset + fOffset; + + const FfxInt32x2 iSrcSamplePos = FfxInt32x2(iSrcInputPos) + FfxInt32x2(offsetTL) + sampleColRow; + const FfxFloat32 fOnScreenFactor = FfxFloat32(IsOnScreen(FfxInt32x2(iSrcSamplePos), FfxInt32x2(RenderSize()))); + + if (!bIsInitialSample) + { + const FfxFloat32 fSampleWeight = fOnScreenFactor * FfxFloat32(GetUpsampleLanczosWeight(fSrcSampleOffset, fKernelBias)); + + data.fUpsampledColor += fSamples[iSampleIndex] * fSampleWeight; + data.fUpsampledWeight += fSampleWeight; + } + + // Update rectification box + { + const FfxFloat32 fRectificationCurveBias = -2.3f; + const FfxFloat32 fSrcSampleOffsetSq = dot(fSrcSampleOffset, fSrcSampleOffset); + const FfxFloat32 fBoxSampleWeight = exp(fRectificationCurveBias * fSrcSampleOffsetSq) * fOnScreenFactor; + + const FfxBoolean bInitialSample = (row == 0) && (col == 0); + RectificationBoxAddSample(bInitialSample, data.clippingBox, fSamples[iSampleIndex], fBoxSampleWeight); + } + ++iSampleIndex; + } + } + +#endif // #if FFX_FSR3UPSCALER_USE_XBOX_PAIRED_16BIT_MATH_OPTIMIZATIONS + + RectificationBoxComputeVarianceBoxData(data.clippingBox); + + data.fUpsampledWeight *= FfxFloat32(data.fUpsampledWeight > FSR3UPSCALER_EPSILON); + + if (data.fUpsampledWeight > FSR3UPSCALER_EPSILON) { + // Normalize for deringing (we need to compare colors) + data.fUpsampledColor = data.fUpsampledColor / data.fUpsampledWeight; + data.fUpsampledWeight *= fAverageLanczosWeightPerFrame; + + Deringing(data.clippingBox, data.fUpsampledColor); + } + + // Initial samples using tonemapped upsampling + if (bIsInitialSample) { +#if FFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT + data.fUpsampledColor = RGBToYCoCg(InverseTonemap(YCoCgToRGB(data.clippingBox.boxCenter))); +#else + data.fUpsampledColor = data.clippingBox.boxCenter; +#endif + data.fUpsampledWeight = 1.0f; + data.fHistoryWeight = 0.0f; + } +} diff --git a/third_party/fidelityfx-sdk/include/FidelityFX/gpu/spd/ffx_spd.h b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/spd/ffx_spd.h new file mode 100644 index 000000000..c3ee50f02 --- /dev/null +++ b/third_party/fidelityfx-sdk/include/FidelityFX/gpu/spd/ffx_spd.h @@ -0,0 +1,1014 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +/// @defgroup FfxGPUSpd FidelityFX SPD +/// FidelityFX Single Pass Downsampler 2.0 GPU documentation +/// +/// @ingroup FfxGPUEffects + +/// Setup required constant values for SPD (CPU). +/// +/// @param [out] dispatchThreadGroupCountXY CPU side: dispatch thread group count xy. z is number of slices of the input texture +/// @param [out] workGroupOffset GPU side: pass in as constant +/// @param [out] numWorkGroupsAndMips GPU side: pass in as constant +/// @param [in] rectInfo left, top, width, height +/// @param [in] mips optional: if -1, calculate based on rect width and height +/// +/// @ingroup FfxGPUSpd +#if defined(FFX_CPU) +FFX_STATIC void ffxSpdSetup(FfxUInt32x2 dispatchThreadGroupCountXY, + FfxUInt32x2 workGroupOffset, + FfxUInt32x2 numWorkGroupsAndMips, + FfxUInt32x4 rectInfo, + FfxInt32 mips) +{ + // determines the offset of the first tile to downsample based on + // left (rectInfo[0]) and top (rectInfo[1]) of the subregion. + workGroupOffset[0] = rectInfo[0] / 64; + workGroupOffset[1] = rectInfo[1] / 64; + + FfxUInt32 endIndexX = (rectInfo[0] + rectInfo[2] - 1) / 64; // rectInfo[0] = left, rectInfo[2] = width + FfxUInt32 endIndexY = (rectInfo[1] + rectInfo[3] - 1) / 64; // rectInfo[1] = top, rectInfo[3] = height + + // we only need to dispatch as many thread groups as tiles we need to downsample + // number of tiles per slice depends on the subregion to downsample + dispatchThreadGroupCountXY[0] = endIndexX + 1 - workGroupOffset[0]; + dispatchThreadGroupCountXY[1] = endIndexY + 1 - workGroupOffset[1]; + + // number of thread groups per slice + numWorkGroupsAndMips[0] = (dispatchThreadGroupCountXY[0]) * (dispatchThreadGroupCountXY[1]); + + if (mips >= 0) + { + numWorkGroupsAndMips[1] = FfxUInt32(mips); + } + else + { + // calculate based on rect width and height + FfxUInt32 resolution = ffxMax(rectInfo[2], rectInfo[3]); + numWorkGroupsAndMips[1] = FfxUInt32((ffxMin(floor(log2(FfxFloat32(resolution))), FfxFloat32(12)))); + } +} + +/// Setup required constant values for SPD (CPU). +/// +/// @param [out] dispatchThreadGroupCountXY CPU side: dispatch thread group count xy. z is number of slices of the input texture +/// @param [out] workGroupOffset GPU side: pass in as constant +/// @param [out] numWorkGroupsAndMips GPU side: pass in as constant +/// @param [in] rectInfo left, top, width, height +/// +/// @ingroup FfxGPUSpd +FFX_STATIC void ffxSpdSetup(FfxUInt32x2 dispatchThreadGroupCountXY, + FfxUInt32x2 workGroupOffset, + FfxUInt32x2 numWorkGroupsAndMips, + FfxUInt32x4 rectInfo) +{ + ffxSpdSetup(dispatchThreadGroupCountXY, workGroupOffset, numWorkGroupsAndMips, rectInfo, -1); +} +#endif // #if defined(FFX_CPU) + + +//============================================================================================================================== +// NON-PACKED VERSION +//============================================================================================================================== +#if defined(FFX_GPU) +#if defined(FFX_SPD_PACKED_ONLY) +// Avoid compiler errors by including default implementations of these callbacks. +FfxFloat32x4 SpdLoadSourceImage(FfxInt32x2 p, FfxUInt32 slice) +{ + return FfxFloat32x4(0.0, 0.0, 0.0, 0.0); +} + +FfxFloat32x4 SpdLoad(FfxInt32x2 p, FfxUInt32 slice) +{ + return FfxFloat32x4(0.0, 0.0, 0.0, 0.0); +} +void SpdStore(FfxInt32x2 p, FfxFloat32x4 value, FfxUInt32 mip, FfxUInt32 slice) +{ +} +FfxFloat32x4 SpdLoadIntermediate(FfxUInt32 x, FfxUInt32 y) +{ + return FfxFloat32x4(0.0, 0.0, 0.0, 0.0); +} +void SpdStoreIntermediate(FfxUInt32 x, FfxUInt32 y, FfxFloat32x4 value) +{ +} +FfxFloat32x4 SpdReduce4(FfxFloat32x4 v0, FfxFloat32x4 v1, FfxFloat32x4 v2, FfxFloat32x4 v3) +{ + return FfxFloat32x4(0.0, 0.0, 0.0, 0.0); +} +#endif // #if FFX_SPD_PACKED_ONLY + +//_____________________________________________________________/\_______________________________________________________________ +#if defined(FFX_GLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS) +#extension GL_KHR_shader_subgroup_quad:require +#endif + +void ffxSpdWorkgroupShuffleBarrier() +{ + FFX_GROUP_MEMORY_BARRIER; +} + +// Only last active workgroup should proceed +bool SpdExitWorkgroup(FfxUInt32 numWorkGroups, FfxUInt32 localInvocationIndex, FfxUInt32 slice) +{ + // global atomic counter + if (localInvocationIndex == 0) + { + SpdIncreaseAtomicCounter(slice); + } + + ffxSpdWorkgroupShuffleBarrier(); + return (SpdGetAtomicCounter() != (numWorkGroups - 1)); +} + +// User defined: FfxFloat32x4 SpdReduce4(FfxFloat32x4 v0, FfxFloat32x4 v1, FfxFloat32x4 v2, FfxFloat32x4 v3); +FfxFloat32x4 SpdReduceQuad(FfxFloat32x4 v) +{ +#if defined(FFX_GLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS) + + FfxFloat32x4 v0 = v; + FfxFloat32x4 v1 = subgroupQuadSwapHorizontal(v); + FfxFloat32x4 v2 = subgroupQuadSwapVertical(v); + FfxFloat32x4 v3 = subgroupQuadSwapDiagonal(v); + return SpdReduce4(v0, v1, v2, v3); + +#elif defined(FFX_HLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS) + + // requires SM6.0 + FfxFloat32x4 v0 = v; + FfxFloat32x4 v1 = QuadReadAcrossX(v); + FfxFloat32x4 v2 = QuadReadAcrossY(v); + FfxFloat32x4 v3 = QuadReadAcrossDiagonal(v); + return SpdReduce4(v0, v1, v2, v3); +/* + // if SM6.0 is not available, you can use the AMD shader intrinsics + // the AMD shader intrinsics are available in AMD GPU Services (AGS) library: + // https://gpuopen.com/amd-gpu-services-ags-library/ + // works for DX11 + FfxFloat32x4 v0 = v; + FfxFloat32x4 v1; + v1.x = AmdExtD3DShaderIntrinsics_SwizzleF(v.x, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + v1.y = AmdExtD3DShaderIntrinsics_SwizzleF(v.y, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + v1.z = AmdExtD3DShaderIntrinsics_SwizzleF(v.z, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + v1.w = AmdExtD3DShaderIntrinsics_SwizzleF(v.w, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + FfxFloat32x4 v2; + v2.x = AmdExtD3DShaderIntrinsics_SwizzleF(v.x, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + v2.y = AmdExtD3DShaderIntrinsics_SwizzleF(v.y, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + v2.z = AmdExtD3DShaderIntrinsics_SwizzleF(v.z, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + v2.w = AmdExtD3DShaderIntrinsics_SwizzleF(v.w, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + FfxFloat32x4 v3; + v3.x = AmdExtD3DShaderIntrinsics_SwizzleF(v.x, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + v3.y = AmdExtD3DShaderIntrinsics_SwizzleF(v.y, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + v3.z = AmdExtD3DShaderIntrinsics_SwizzleF(v.z, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + v3.w = AmdExtD3DShaderIntrinsics_SwizzleF(v.w, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + return SpdReduce4(v0, v1, v2, v3); + */ +#endif + return v; +} + +FfxFloat32x4 SpdReduceIntermediate(FfxUInt32x2 i0, FfxUInt32x2 i1, FfxUInt32x2 i2, FfxUInt32x2 i3) +{ + FfxFloat32x4 v0 = SpdLoadIntermediate(i0.x, i0.y); + FfxFloat32x4 v1 = SpdLoadIntermediate(i1.x, i1.y); + FfxFloat32x4 v2 = SpdLoadIntermediate(i2.x, i2.y); + FfxFloat32x4 v3 = SpdLoadIntermediate(i3.x, i3.y); + return SpdReduce4(v0, v1, v2, v3); +} + +FfxFloat32x4 SpdReduceLoad4(FfxUInt32x2 i0, FfxUInt32x2 i1, FfxUInt32x2 i2, FfxUInt32x2 i3, FfxUInt32 slice) +{ + FfxFloat32x4 v0 = SpdLoad(FfxInt32x2(i0), slice); + FfxFloat32x4 v1 = SpdLoad(FfxInt32x2(i1), slice); + FfxFloat32x4 v2 = SpdLoad(FfxInt32x2(i2), slice); + FfxFloat32x4 v3 = SpdLoad(FfxInt32x2(i3), slice); + return SpdReduce4(v0, v1, v2, v3); +} + +FfxFloat32x4 SpdReduceLoad4(FfxUInt32x2 base, FfxUInt32 slice) +{ + return SpdReduceLoad4(FfxUInt32x2(base + FfxUInt32x2(0, 0)), FfxUInt32x2(base + FfxUInt32x2(0, 1)), FfxUInt32x2(base + FfxUInt32x2(1, 0)), FfxUInt32x2(base + FfxUInt32x2(1, 1)), slice); +} + +FfxFloat32x4 SpdReduceLoadSourceImage4(FfxUInt32x2 i0, FfxUInt32x2 i1, FfxUInt32x2 i2, FfxUInt32x2 i3, FfxUInt32 slice) +{ + FfxFloat32x4 v0 = SpdLoadSourceImage(FfxInt32x2(i0), slice); + FfxFloat32x4 v1 = SpdLoadSourceImage(FfxInt32x2(i1), slice); + FfxFloat32x4 v2 = SpdLoadSourceImage(FfxInt32x2(i2), slice); + FfxFloat32x4 v3 = SpdLoadSourceImage(FfxInt32x2(i3), slice); + return SpdReduce4(v0, v1, v2, v3); +} + +FfxFloat32x4 SpdReduceLoadSourceImage(FfxUInt32x2 base, FfxUInt32 slice) +{ +#if defined(SPD_LINEAR_SAMPLER) + return SpdLoadSourceImage(FfxInt32x2(base), slice); +#else + return SpdReduceLoadSourceImage4(FfxUInt32x2(base + FfxUInt32x2(0, 0)), FfxUInt32x2(base + FfxUInt32x2(0, 1)), FfxUInt32x2(base + FfxUInt32x2(1, 0)), FfxUInt32x2(base + FfxUInt32x2(1, 1)), slice); +#endif +} + +void SpdDownsampleMips_0_1_Intrinsics(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ + FfxFloat32x4 v[4]; + + FfxInt32x2 tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2); + FfxInt32x2 pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y); + v[0] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[0], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y); + v[1] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[1], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y + 16); + v[2] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[2], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y + 16); + v[3] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[3], 0, slice); + + if (mip <= 1) + return; + + v[0] = SpdReduceQuad(v[0]); + v[1] = SpdReduceQuad(v[1]); + v[2] = SpdReduceQuad(v[2]); + v[3] = SpdReduceQuad(v[3]); + + if ((localInvocationIndex % 4) == 0) + { + SpdStore(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2, y / 2), v[0], 1, slice); + SpdStoreIntermediate(x / 2, y / 2, v[0]); + + SpdStore(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2 + 8, y / 2), v[1], 1, slice); + SpdStoreIntermediate(x / 2 + 8, y / 2, v[1]); + + SpdStore(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2, y / 2 + 8), v[2], 1, slice); + SpdStoreIntermediate(x / 2, y / 2 + 8, v[2]); + + SpdStore(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2 + 8, y / 2 + 8), v[3], 1, slice); + SpdStoreIntermediate(x / 2 + 8, y / 2 + 8, v[3]); + } +} + +void SpdDownsampleMips_0_1_LDS(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ + FfxFloat32x4 v[4]; + + FfxInt32x2 tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2); + FfxInt32x2 pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y); + v[0] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[0], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y); + v[1] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[1], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y + 16); + v[2] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[2], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y + 16); + v[3] = SpdReduceLoadSourceImage(tex, slice); + SpdStore(pix, v[3], 0, slice); + + if (mip <= 1) + return; + + for (FfxUInt32 i = 0; i < 4; i++) + { + SpdStoreIntermediate(x, y, v[i]); + ffxSpdWorkgroupShuffleBarrier(); + if (localInvocationIndex < 64) + { + v[i] = SpdReduceIntermediate(FfxUInt32x2(x * 2 + 0, y * 2 + 0), FfxUInt32x2(x * 2 + 1, y * 2 + 0), FfxUInt32x2(x * 2 + 0, y * 2 + 1), FfxUInt32x2(x * 2 + 1, y * 2 + 1)); + SpdStore(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x + (i % 2) * 8, y + (i / 2) * 8), v[i], 1, slice); + } + ffxSpdWorkgroupShuffleBarrier(); + } + + if (localInvocationIndex < 64) + { + SpdStoreIntermediate(x + 0, y + 0, v[0]); + SpdStoreIntermediate(x + 8, y + 0, v[1]); + SpdStoreIntermediate(x + 0, y + 8, v[2]); + SpdStoreIntermediate(x + 8, y + 8, v[3]); + } +} + +void SpdDownsampleMips_0_1(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + SpdDownsampleMips_0_1_LDS(x, y, workGroupID, localInvocationIndex, mip, slice); +#else + SpdDownsampleMips_0_1_Intrinsics(x, y, workGroupID, localInvocationIndex, mip, slice); +#endif +} + + +void SpdDownsampleMip_2(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 64) + { + FfxFloat32x4 v = SpdReduceIntermediate(FfxUInt32x2(x * 2 + 0, y * 2 + 0), FfxUInt32x2(x * 2 + 1, y * 2 + 0), FfxUInt32x2(x * 2 + 0, y * 2 + 1), FfxUInt32x2(x * 2 + 1, y * 2 + 1)); + SpdStore(FfxInt32x2(workGroupID.xy * 8) + FfxInt32x2(x, y), v, mip, slice); + // store to LDS, try to reduce bank conflicts + // x 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 x + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // x 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 + // ... + // x 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 + SpdStoreIntermediate(x * 2 + y % 2, y * 2, v); + } +#else + FfxFloat32x4 v = SpdLoadIntermediate(x, y); + v = SpdReduceQuad(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStore(FfxInt32x2(workGroupID.xy * 8) + FfxInt32x2(x / 2, y / 2), v, mip, slice); + SpdStoreIntermediate(x + (y / 2) % 2, y, v); + } +#endif +} + +void SpdDownsampleMip_3(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 16) + { + // x 0 x 0 + // 0 0 0 0 + // 0 x 0 x + // 0 0 0 0 + FfxFloat32x4 v = + SpdReduceIntermediate(FfxUInt32x2(x * 4 + 0 + 0, y * 4 + 0), FfxUInt32x2(x * 4 + 2 + 0, y * 4 + 0), FfxUInt32x2(x * 4 + 0 + 1, y * 4 + 2), FfxUInt32x2(x * 4 + 2 + 1, y * 4 + 2)); + SpdStore(FfxInt32x2(workGroupID.xy * 4) + FfxInt32x2(x, y), v, mip, slice); + // store to LDS + // x 0 0 0 x 0 0 0 x 0 0 0 x 0 0 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 x 0 0 0 x 0 0 0 x 0 0 0 x 0 0 + // ... + // 0 0 x 0 0 0 x 0 0 0 x 0 0 0 x 0 + // ... + // 0 0 0 x 0 0 0 x 0 0 0 x 0 0 0 x + // ... + SpdStoreIntermediate(x * 4 + y, y * 4, v); + } +#else + if (localInvocationIndex < 64) + { + FfxFloat32x4 v = SpdLoadIntermediate(x * 2 + y % 2, y * 2); + v = SpdReduceQuad(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStore(FfxInt32x2(workGroupID.xy * 4) + FfxInt32x2(x / 2, y / 2), v, mip, slice); + SpdStoreIntermediate(x * 2 + y / 2, y * 2, v); + } + } +#endif +} + +void SpdDownsampleMip_4(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 4) + { + // x 0 0 0 x 0 0 0 + // ... + // 0 x 0 0 0 x 0 0 + FfxFloat32x4 v = SpdReduceIntermediate(FfxUInt32x2(x * 8 + 0 + 0 + y * 2, y * 8 + 0), + FfxUInt32x2(x * 8 + 4 + 0 + y * 2, y * 8 + 0), + FfxUInt32x2(x * 8 + 0 + 1 + y * 2, y * 8 + 4), + FfxUInt32x2(x * 8 + 4 + 1 + y * 2, y * 8 + 4)); + SpdStore(FfxInt32x2(workGroupID.xy * 2) + FfxInt32x2(x, y), v, mip, slice); + // store to LDS + // x x x x 0 ... + // 0 ... + SpdStoreIntermediate(x + y * 2, 0, v); + } +#else + if (localInvocationIndex < 16) + { + FfxFloat32x4 v = SpdLoadIntermediate(x * 4 + y, y * 4); + v = SpdReduceQuad(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStore(FfxInt32x2(workGroupID.xy * 2) + FfxInt32x2(x / 2, y / 2), v, mip, slice); + SpdStoreIntermediate(x / 2 + y, 0, v); + } + } +#endif +} + +void SpdDownsampleMip_5(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 1) + { + // x x x x 0 ... + // 0 ... + FfxFloat32x4 v = SpdReduceIntermediate(FfxUInt32x2(0, 0), FfxUInt32x2(1, 0), FfxUInt32x2(2, 0), FfxUInt32x2(3, 0)); + SpdStore(FfxInt32x2(workGroupID.xy), v, mip, slice); + } +#else + if (localInvocationIndex < 4) + { + FfxFloat32x4 v = SpdLoadIntermediate(localInvocationIndex, 0); + v = SpdReduceQuad(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStore(FfxInt32x2(workGroupID.xy), v, mip, slice); + } + } +#endif +} + +void SpdDownsampleMips_6_7(FfxUInt32 x, FfxUInt32 y, FfxUInt32 mips, FfxUInt32 slice) +{ + FfxInt32x2 tex = FfxInt32x2(x * 4 + 0, y * 4 + 0); + FfxInt32x2 pix = FfxInt32x2(x * 2 + 0, y * 2 + 0); + FfxFloat32x4 v0 = SpdReduceLoad4(tex, slice); + SpdStore(pix, v0, 6, slice); + + tex = FfxInt32x2(x * 4 + 2, y * 4 + 0); + pix = FfxInt32x2(x * 2 + 1, y * 2 + 0); + FfxFloat32x4 v1 = SpdReduceLoad4(tex, slice); + SpdStore(pix, v1, 6, slice); + + tex = FfxInt32x2(x * 4 + 0, y * 4 + 2); + pix = FfxInt32x2(x * 2 + 0, y * 2 + 1); + FfxFloat32x4 v2 = SpdReduceLoad4(tex, slice); + SpdStore(pix, v2, 6, slice); + + tex = FfxInt32x2(x * 4 + 2, y * 4 + 2); + pix = FfxInt32x2(x * 2 + 1, y * 2 + 1); + FfxFloat32x4 v3 = SpdReduceLoad4(tex, slice); + SpdStore(pix, v3, 6, slice); + + if (mips <= 7) + return; + // no barrier needed, working on values only from the same thread + + FfxFloat32x4 v = SpdReduce4(v0, v1, v2, v3); + SpdStore(FfxInt32x2(x, y), v, 7, slice); + SpdStoreIntermediate(x, y, v); +} + +void SpdDownsampleNextFour(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 baseMip, FfxUInt32 mips, FfxUInt32 slice) +{ + if (mips <= baseMip) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_2(x, y, workGroupID, localInvocationIndex, baseMip, slice); + + if (mips <= baseMip + 1) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_3(x, y, workGroupID, localInvocationIndex, baseMip + 1, slice); + + if (mips <= baseMip + 2) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_4(x, y, workGroupID, localInvocationIndex, baseMip + 2, slice); + + if (mips <= baseMip + 3) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_5(workGroupID, localInvocationIndex, baseMip + 3, slice); +} + +/// Downsamples a 64x64 tile based on the work group id. +/// If after downsampling it's the last active thread group, computes the remaining MIP levels. +/// +/// @param [in] workGroupID index of the work group / thread group +/// @param [in] localInvocationIndex index of the thread within the thread group in 1D +/// @param [in] mips the number of total MIP levels to compute for the input texture +/// @param [in] numWorkGroups the total number of dispatched work groups / thread groups for this slice +/// @param [in] slice the slice of the input texture +/// +/// @ingroup FfxGPUSpd +void SpdDownsample(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 numWorkGroups, FfxUInt32 slice) +{ + // compute MIP level 0 and 1 + FfxUInt32x2 sub_xy = ffxRemapForWaveReduction(localInvocationIndex % 64); + FfxUInt32 x = sub_xy.x + 8 * ((localInvocationIndex >> 6) % 2); + FfxUInt32 y = sub_xy.y + 8 * ((localInvocationIndex >> 7)); + SpdDownsampleMips_0_1(x, y, workGroupID, localInvocationIndex, mips, slice); + + // compute MIP level 2, 3, 4, 5 + SpdDownsampleNextFour(x, y, workGroupID, localInvocationIndex, 2, mips, slice); + + if (mips <= 6) + return; + + // increase the global atomic counter for the given slice and check if it's the last remaining thread group: + // terminate if not, continue if yes. + if (SpdExitWorkgroup(numWorkGroups, localInvocationIndex, slice)) + return; + + // reset the global atomic counter back to 0 for the next spd dispatch + SpdResetAtomicCounter(slice); + + // After mip 5 there is only a single workgroup left that downsamples the remaining up to 64x64 texels. + // compute MIP level 6 and 7 + SpdDownsampleMips_6_7(x, y, mips, slice); + + // compute MIP level 8, 9, 10, 11 + SpdDownsampleNextFour(x, y, FfxUInt32x2(0, 0), localInvocationIndex, 8, mips, slice); +} +/// Downsamples a 64x64 tile based on the work group id and work group offset. +/// If after downsampling it's the last active thread group, computes the remaining MIP levels. +/// +/// @param [in] workGroupID index of the work group / thread group +/// @param [in] localInvocationIndex index of the thread within the thread group in 1D +/// @param [in] mips the number of total MIP levels to compute for the input texture +/// @param [in] numWorkGroups the total number of dispatched work groups / thread groups for this slice +/// @param [in] slice the slice of the input texture +/// @param [in] workGroupOffset the work group offset. it's (0,0) in case the entire input texture is downsampled. +/// +/// @ingroup FfxGPUSpd +void SpdDownsample(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 numWorkGroups, FfxUInt32 slice, FfxUInt32x2 workGroupOffset) +{ + SpdDownsample(workGroupID + workGroupOffset, localInvocationIndex, mips, numWorkGroups, slice); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//============================================================================================================================== +// PACKED VERSION +//============================================================================================================================== + +#if FFX_HALF + +#if defined(FFX_GLSL) +#extension GL_EXT_shader_subgroup_extended_types_float16:require +#endif + +FfxFloat16x4 SpdReduceQuadH(FfxFloat16x4 v) +{ +#if defined(FFX_GLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS) + FfxFloat16x4 v0 = v; + FfxFloat16x4 v1 = subgroupQuadSwapHorizontal(v); + FfxFloat16x4 v2 = subgroupQuadSwapVertical(v); + FfxFloat16x4 v3 = subgroupQuadSwapDiagonal(v); + return SpdReduce4H(v0, v1, v2, v3); +#elif defined(FFX_HLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS) + // requires SM6.0 + FfxFloat16x4 v0 = v; + FfxFloat16x4 v1 = QuadReadAcrossX(v); + FfxFloat16x4 v2 = QuadReadAcrossY(v); + FfxFloat16x4 v3 = QuadReadAcrossDiagonal(v); + return SpdReduce4H(v0, v1, v2, v3); +/* + // if SM6.0 is not available, you can use the AMD shader intrinsics + // the AMD shader intrinsics are available in AMD GPU Services (AGS) library: + // https://gpuopen.com/amd-gpu-services-ags-library/ + // works for DX11 + FfxFloat16x4 v0 = v; + FfxFloat16x4 v1; + v1.x = AmdExtD3DShaderIntrinsics_SwizzleF(v.x, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + v1.y = AmdExtD3DShaderIntrinsics_SwizzleF(v.y, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + v1.z = AmdExtD3DShaderIntrinsics_SwizzleF(v.z, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + v1.w = AmdExtD3DShaderIntrinsics_SwizzleF(v.w, AmdExtD3DShaderIntrinsicsSwizzle_SwapX1); + FfxFloat16x4 v2; + v2.x = AmdExtD3DShaderIntrinsics_SwizzleF(v.x, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + v2.y = AmdExtD3DShaderIntrinsics_SwizzleF(v.y, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + v2.z = AmdExtD3DShaderIntrinsics_SwizzleF(v.z, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + v2.w = AmdExtD3DShaderIntrinsics_SwizzleF(v.w, AmdExtD3DShaderIntrinsicsSwizzle_SwapX2); + FfxFloat16x4 v3; + v3.x = AmdExtD3DShaderIntrinsics_SwizzleF(v.x, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + v3.y = AmdExtD3DShaderIntrinsics_SwizzleF(v.y, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + v3.z = AmdExtD3DShaderIntrinsics_SwizzleF(v.z, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + v3.w = AmdExtD3DShaderIntrinsics_SwizzleF(v.w, AmdExtD3DShaderIntrinsicsSwizzle_ReverseX4); + return SpdReduce4H(v0, v1, v2, v3); + */ +#endif + return FfxFloat16x4(0.0, 0.0, 0.0, 0.0); +} + +FfxFloat16x4 SpdReduceIntermediateH(FfxUInt32x2 i0, FfxUInt32x2 i1, FfxUInt32x2 i2, FfxUInt32x2 i3) +{ + FfxFloat16x4 v0 = SpdLoadIntermediateH(i0.x, i0.y); + FfxFloat16x4 v1 = SpdLoadIntermediateH(i1.x, i1.y); + FfxFloat16x4 v2 = SpdLoadIntermediateH(i2.x, i2.y); + FfxFloat16x4 v3 = SpdLoadIntermediateH(i3.x, i3.y); + return SpdReduce4H(v0, v1, v2, v3); +} + +FfxFloat16x4 SpdReduceLoad4H(FfxUInt32x2 i0, FfxUInt32x2 i1, FfxUInt32x2 i2, FfxUInt32x2 i3, FfxUInt32 slice) +{ + FfxFloat16x4 v0 = SpdLoadH(FfxInt32x2(i0), slice); + FfxFloat16x4 v1 = SpdLoadH(FfxInt32x2(i1), slice); + FfxFloat16x4 v2 = SpdLoadH(FfxInt32x2(i2), slice); + FfxFloat16x4 v3 = SpdLoadH(FfxInt32x2(i3), slice); + return SpdReduce4H(v0, v1, v2, v3); +} + +FfxFloat16x4 SpdReduceLoad4H(FfxUInt32x2 base, FfxUInt32 slice) +{ + return SpdReduceLoad4H(FfxUInt32x2(base + FfxUInt32x2(0, 0)), FfxUInt32x2(base + FfxUInt32x2(0, 1)), FfxUInt32x2(base + FfxUInt32x2(1, 0)), FfxUInt32x2(base + FfxUInt32x2(1, 1)), slice); +} + +FfxFloat16x4 SpdReduceLoadSourceImage4H(FfxUInt32x2 i0, FfxUInt32x2 i1, FfxUInt32x2 i2, FfxUInt32x2 i3, FfxUInt32 slice) +{ + FfxFloat16x4 v0 = SpdLoadSourceImageH(FfxInt32x2(i0), slice); + FfxFloat16x4 v1 = SpdLoadSourceImageH(FfxInt32x2(i1), slice); + FfxFloat16x4 v2 = SpdLoadSourceImageH(FfxInt32x2(i2), slice); + FfxFloat16x4 v3 = SpdLoadSourceImageH(FfxInt32x2(i3), slice); + return SpdReduce4H(v0, v1, v2, v3); +} + +FfxFloat16x4 SpdReduceLoadSourceImageH(FfxUInt32x2 base, FfxUInt32 slice) +{ +#if defined(SPD_LINEAR_SAMPLER) + return SpdLoadSourceImageH(FfxInt32x2(base), slice); +#else + return SpdReduceLoadSourceImage4H(FfxUInt32x2(base + FfxUInt32x2(0, 0)), FfxUInt32x2(base + FfxUInt32x2(0, 1)), FfxUInt32x2(base + FfxUInt32x2(1, 0)), FfxUInt32x2(base + FfxUInt32x2(1, 1)), slice); +#endif +} + +void SpdDownsampleMips_0_1_IntrinsicsH(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 slice) +{ + FfxFloat16x4 v[4]; + + FfxInt32x2 tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2); + FfxInt32x2 pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y); + v[0] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[0], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y); + v[1] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[1], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y + 16); + v[2] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[2], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y + 16); + v[3] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[3], 0, slice); + + if (mips <= 1) + return; + + v[0] = SpdReduceQuadH(v[0]); + v[1] = SpdReduceQuadH(v[1]); + v[2] = SpdReduceQuadH(v[2]); + v[3] = SpdReduceQuadH(v[3]); + + if ((localInvocationIndex % 4) == 0) + { + SpdStoreH(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2, y / 2), v[0], 1, slice); + SpdStoreIntermediateH(x / 2, y / 2, v[0]); + + SpdStoreH(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2 + 8, y / 2), v[1], 1, slice); + SpdStoreIntermediateH(x / 2 + 8, y / 2, v[1]); + + SpdStoreH(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2, y / 2 + 8), v[2], 1, slice); + SpdStoreIntermediateH(x / 2, y / 2 + 8, v[2]); + + SpdStoreH(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x / 2 + 8, y / 2 + 8), v[3], 1, slice); + SpdStoreIntermediateH(x / 2 + 8, y / 2 + 8, v[3]); + } +} + +void SpdDownsampleMips_0_1_LDSH(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 slice) +{ + FfxFloat16x4 v[4]; + + FfxInt32x2 tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2); + FfxInt32x2 pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y); + v[0] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[0], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y); + v[1] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[1], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x, y + 16); + v[2] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[2], 0, slice); + + tex = FfxInt32x2(workGroupID.xy * 64) + FfxInt32x2(x * 2 + 32, y * 2 + 32); + pix = FfxInt32x2(workGroupID.xy * 32) + FfxInt32x2(x + 16, y + 16); + v[3] = SpdReduceLoadSourceImageH(tex, slice); + SpdStoreH(pix, v[3], 0, slice); + + if (mips <= 1) + return; + + for (FfxInt32 i = 0; i < 4; i++) + { + SpdStoreIntermediateH(x, y, v[i]); + ffxSpdWorkgroupShuffleBarrier(); + if (localInvocationIndex < 64) + { + v[i] = SpdReduceIntermediateH(FfxUInt32x2(x * 2 + 0, y * 2 + 0), FfxUInt32x2(x * 2 + 1, y * 2 + 0), FfxUInt32x2(x * 2 + 0, y * 2 + 1), FfxUInt32x2(x * 2 + 1, y * 2 + 1)); + SpdStoreH(FfxInt32x2(workGroupID.xy * 16) + FfxInt32x2(x + (i % 2) * 8, y + (i / 2) * 8), v[i], 1, slice); + } + ffxSpdWorkgroupShuffleBarrier(); + } + + if (localInvocationIndex < 64) + { + SpdStoreIntermediateH(x + 0, y + 0, v[0]); + SpdStoreIntermediateH(x + 8, y + 0, v[1]); + SpdStoreIntermediateH(x + 0, y + 8, v[2]); + SpdStoreIntermediateH(x + 8, y + 8, v[3]); + } +} + +void SpdDownsampleMips_0_1H(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + SpdDownsampleMips_0_1_LDSH(x, y, workGroupID, localInvocationIndex, mips, slice); +#else + SpdDownsampleMips_0_1_IntrinsicsH(x, y, workGroupID, localInvocationIndex, mips, slice); +#endif +} + + +void SpdDownsampleMip_2H(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 64) + { + FfxFloat16x4 v = SpdReduceIntermediateH(FfxUInt32x2(x * 2 + 0, y * 2 + 0), FfxUInt32x2(x * 2 + 1, y * 2 + 0), FfxUInt32x2(x * 2 + 0, y * 2 + 1), FfxUInt32x2(x * 2 + 1, y * 2 + 1)); + SpdStoreH(FfxInt32x2(workGroupID.xy * 8) + FfxInt32x2(x, y), v, mip, slice); + // store to LDS, try to reduce bank conflicts + // x 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 x + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // x 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 + // ... + // x 0 x 0 x 0 x 0 x 0 x 0 x 0 x 0 + SpdStoreIntermediateH(x * 2 + y % 2, y * 2, v); + } +#else + FfxFloat16x4 v = SpdLoadIntermediateH(x, y); + v = SpdReduceQuadH(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStoreH(FfxInt32x2(workGroupID.xy * 8) + FfxInt32x2(x / 2, y / 2), v, mip, slice); + SpdStoreIntermediateH(x + (y / 2) % 2, y, v); + } +#endif +} + +void SpdDownsampleMip_3H(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 16) + { + // x 0 x 0 + // 0 0 0 0 + // 0 x 0 x + // 0 0 0 0 + FfxFloat16x4 v = + SpdReduceIntermediateH(FfxUInt32x2(x * 4 + 0 + 0, y * 4 + 0), FfxUInt32x2(x * 4 + 2 + 0, y * 4 + 0), FfxUInt32x2(x * 4 + 0 + 1, y * 4 + 2), FfxUInt32x2(x * 4 + 2 + 1, y * 4 + 2)); + SpdStoreH(FfxInt32x2(workGroupID.xy * 4) + FfxInt32x2(x, y), v, mip, slice); + // store to LDS + // x 0 0 0 x 0 0 0 x 0 0 0 x 0 0 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + // 0 x 0 0 0 x 0 0 0 x 0 0 0 x 0 0 + // ... + // 0 0 x 0 0 0 x 0 0 0 x 0 0 0 x 0 + // ... + // 0 0 0 x 0 0 0 x 0 0 0 x 0 0 0 x + // ... + SpdStoreIntermediateH(x * 4 + y, y * 4, v); + } +#else + if (localInvocationIndex < 64) + { + FfxFloat16x4 v = SpdLoadIntermediateH(x * 2 + y % 2, y * 2); + v = SpdReduceQuadH(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStoreH(FfxInt32x2(workGroupID.xy * 4) + FfxInt32x2(x / 2, y / 2), v, mip, slice); + SpdStoreIntermediateH(x * 2 + y / 2, y * 2, v); + } + } +#endif +} + +void SpdDownsampleMip_4H(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 4) + { + // x 0 0 0 x 0 0 0 + // ... + // 0 x 0 0 0 x 0 0 + FfxFloat16x4 v = SpdReduceIntermediateH(FfxUInt32x2(x * 8 + 0 + 0 + y * 2, y * 8 + 0), + FfxUInt32x2(x * 8 + 4 + 0 + y * 2, y * 8 + 0), + FfxUInt32x2(x * 8 + 0 + 1 + y * 2, y * 8 + 4), + FfxUInt32x2(x * 8 + 4 + 1 + y * 2, y * 8 + 4)); + SpdStoreH(FfxInt32x2(workGroupID.xy * 2) + FfxInt32x2(x, y), v, mip, slice); + // store to LDS + // x x x x 0 ... + // 0 ... + SpdStoreIntermediateH(x + y * 2, 0, v); + } +#else + if (localInvocationIndex < 16) + { + FfxFloat16x4 v = SpdLoadIntermediateH(x * 4 + y, y * 4); + v = SpdReduceQuadH(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStoreH(FfxInt32x2(workGroupID.xy * 2) + FfxInt32x2(x / 2, y / 2), v, mip, slice); + SpdStoreIntermediateH(x / 2 + y, 0, v); + } + } +#endif +} + +void SpdDownsampleMip_5H(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mip, FfxUInt32 slice) +{ +#if defined(FFX_SPD_NO_WAVE_OPERATIONS) + if (localInvocationIndex < 1) + { + // x x x x 0 ... + // 0 ... + FfxFloat16x4 v = SpdReduceIntermediateH(FfxUInt32x2(0, 0), FfxUInt32x2(1, 0), FfxUInt32x2(2, 0), FfxUInt32x2(3, 0)); + SpdStoreH(FfxInt32x2(workGroupID.xy), v, mip, slice); + } +#else + if (localInvocationIndex < 4) + { + FfxFloat16x4 v = SpdLoadIntermediateH(localInvocationIndex, 0); + v = SpdReduceQuadH(v); + // quad index 0 stores result + if (localInvocationIndex % 4 == 0) + { + SpdStoreH(FfxInt32x2(workGroupID.xy), v, mip, slice); + } + } +#endif +} + +void SpdDownsampleMips_6_7H(FfxUInt32 x, FfxUInt32 y, FfxUInt32 mips, FfxUInt32 slice) +{ + FfxInt32x2 tex = FfxInt32x2(x * 4 + 0, y * 4 + 0); + FfxInt32x2 pix = FfxInt32x2(x * 2 + 0, y * 2 + 0); + FfxFloat16x4 v0 = SpdReduceLoad4H(tex, slice); + SpdStoreH(pix, v0, 6, slice); + + tex = FfxInt32x2(x * 4 + 2, y * 4 + 0); + pix = FfxInt32x2(x * 2 + 1, y * 2 + 0); + FfxFloat16x4 v1 = SpdReduceLoad4H(tex, slice); + SpdStoreH(pix, v1, 6, slice); + + tex = FfxInt32x2(x * 4 + 0, y * 4 + 2); + pix = FfxInt32x2(x * 2 + 0, y * 2 + 1); + FfxFloat16x4 v2 = SpdReduceLoad4H(tex, slice); + SpdStoreH(pix, v2, 6, slice); + + tex = FfxInt32x2(x * 4 + 2, y * 4 + 2); + pix = FfxInt32x2(x * 2 + 1, y * 2 + 1); + FfxFloat16x4 v3 = SpdReduceLoad4H(tex, slice); + SpdStoreH(pix, v3, 6, slice); + + if (mips < 8) + return; + // no barrier needed, working on values only from the same thread + + FfxFloat16x4 v = SpdReduce4H(v0, v1, v2, v3); + SpdStoreH(FfxInt32x2(x, y), v, 7, slice); + SpdStoreIntermediateH(x, y, v); +} + +void SpdDownsampleNextFourH(FfxUInt32 x, FfxUInt32 y, FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 baseMip, FfxUInt32 mips, FfxUInt32 slice) +{ + if (mips <= baseMip) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_2H(x, y, workGroupID, localInvocationIndex, baseMip, slice); + + if (mips <= baseMip + 1) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_3H(x, y, workGroupID, localInvocationIndex, baseMip + 1, slice); + + if (mips <= baseMip + 2) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_4H(x, y, workGroupID, localInvocationIndex, baseMip + 2, slice); + + if (mips <= baseMip + 3) + return; + ffxSpdWorkgroupShuffleBarrier(); + SpdDownsampleMip_5H(workGroupID, localInvocationIndex, baseMip + 3, slice); +} + +/// Downsamples a 64x64 tile based on the work group id and work group offset. +/// If after downsampling it's the last active thread group, computes the remaining MIP levels. +/// Uses half types. +/// +/// @param [in] workGroupID index of the work group / thread group +/// @param [in] localInvocationIndex index of the thread within the thread group in 1D +/// @param [in] mips the number of total MIP levels to compute for the input texture +/// @param [in] numWorkGroups the total number of dispatched work groups / thread groups for this slice +/// @param [in] slice the slice of the input texture +/// +/// @ingroup FfxGPUSpd +void SpdDownsampleH(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 numWorkGroups, FfxUInt32 slice) +{ + FfxUInt32x2 sub_xy = ffxRemapForWaveReduction(localInvocationIndex % 64); + FfxUInt32 x = sub_xy.x + 8 * ((localInvocationIndex >> 6) % 2); + FfxUInt32 y = sub_xy.y + 8 * ((localInvocationIndex >> 7)); + + // compute MIP level 0 and 1 + SpdDownsampleMips_0_1H(x, y, workGroupID, localInvocationIndex, mips, slice); + + // compute MIP level 2, 3, 4, 5 + SpdDownsampleNextFourH(x, y, workGroupID, localInvocationIndex, 2, mips, slice); + + if (mips < 7) + return; + + // increase the global atomic counter for the given slice and check if it's the last remaining thread group: + // terminate if not, continue if yes. + if (SpdExitWorkgroup(numWorkGroups, localInvocationIndex, slice)) + return; + + // reset the global atomic counter back to 0 for the next spd dispatch + SpdResetAtomicCounter(slice); + + // After mip 5 there is only a single workgroup left that downsamples the remaining up to 64x64 texels. + // compute MIP level 6 and 7 + SpdDownsampleMips_6_7H(x, y, mips, slice); + + // compute MIP level 8, 9, 10, 11 + SpdDownsampleNextFourH(x, y, FfxUInt32x2(0, 0), localInvocationIndex, 8, mips, slice); +} + +/// Downsamples a 64x64 tile based on the work group id and work group offset. +/// If after downsampling it's the last active thread group, computes the remaining MIP levels. +/// Uses half types. +/// +/// @param [in] workGroupID index of the work group / thread group +/// @param [in] localInvocationIndex index of the thread within the thread group in 1D +/// @param [in] mips the number of total MIP levels to compute for the input texture +/// @param [in] numWorkGroups the total number of dispatched work groups / thread groups for this slice +/// @param [in] slice the slice of the input texture +/// @param [in] workGroupOffset the work group offset. it's (0,0) in case the entire input texture is downsampled. +/// +/// @ingroup FfxGPUSpd +void SpdDownsampleH(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxUInt32 mips, FfxUInt32 numWorkGroups, FfxUInt32 slice, FfxUInt32x2 workGroupOffset) +{ + SpdDownsampleH(workGroupID + workGroupOffset, localInvocationIndex, mips, numWorkGroups, slice); +} + +#endif // #if FFX_HALF +#endif // #if defined(FFX_GPU) diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl new file mode 100644 index 000000000..3b9357553 --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl @@ -0,0 +1,75 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require +// Needed for rw_upscaled_output declaration +#extension GL_EXT_shader_image_load_formatted : require + +#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 0 +#define FSR3UPSCALER_BIND_SRV_DILATED_REACTIVE_MASKS 1 +#if FFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS +#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 2 +#else +#define FSR3UPSCALER_BIND_SRV_INPUT_MOTION_VECTORS 2 +#endif +#define FSR3UPSCALER_BIND_SRV_INTERNAL_UPSCALED 3 +#define FSR3UPSCALER_BIND_SRV_LANCZOS_LUT 4 +#define FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH_MIP1 5 + +#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 6 +#define FSR3UPSCALER_BIND_SRV_LUMA_INSTABILITY 7 +#define FSR3UPSCALER_BIND_SRV_INPUT_COLOR 8 + +#define FSR3UPSCALER_BIND_UAV_INTERNAL_UPSCALED 9 +#define FSR3UPSCALER_BIND_UAV_UPSCALED_OUTPUT 10 +#define FSR3UPSCALER_BIND_UAV_NEW_LOCKS 11 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 12 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_sample.h" +#include "fsr3upscaler/ffx_fsr3upscaler_upsample.h" +#include "fsr3upscaler/ffx_fsr3upscaler_reproject.h" +#include "fsr3upscaler/ffx_fsr3upscaler_accumulate.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8 +#endif // FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + Accumulate(FfxInt32x2(gl_GlobalInvocationID.xy)); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl new file mode 100644 index 000000000..6d5db88e1 --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl @@ -0,0 +1,62 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require + +#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 0 +#define FSR3UPSCALER_BIND_SRV_DILATED_REACTIVE_MASKS 1 +#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 2 +#define FSR3UPSCALER_BIND_SRV_FRAME_INFO 3 +#define FSR3UPSCALER_BIND_SRV_LUMA_HISTORY 4 +#define FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH_MIP1 5 +#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 6 + +#define FSR3UPSCALER_BIND_UAV_LUMA_HISTORY 7 +#define FSR3UPSCALER_BIND_UAV_LUMA_INSTABILITY 8 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 9 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_luma_instability.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8 +#endif // FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + LumaInstability(FfxInt32x2(gl_GlobalInvocationID.xy)); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl new file mode 100644 index 000000000..29f4c8f8d --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl @@ -0,0 +1,65 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require + +#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 0 +#define FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH 1 + +#define FSR3UPSCALER_BIND_UAV_SPD_GLOBAL_ATOMIC 2 +#define FSR3UPSCALER_BIND_UAV_FRAME_INFO 3 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_0 4 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_1 5 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_2 6 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_3 7 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_4 8 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_5 9 +#define FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH_MIP1 10 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 11 +#define FSR3UPSCALER_BIND_CB_SPD 12 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_luma_pyramid.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 256 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + ComputeAutoExposure(gl_WorkGroupID, gl_LocalInvocationIndex); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl new file mode 100644 index 000000000..6e3c57223 --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl @@ -0,0 +1,61 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require + +#define FSR3UPSCALER_BIND_SRV_INPUT_MOTION_VECTORS 0 +#define FSR3UPSCALER_BIND_SRV_INPUT_DEPTH 1 +#define FSR3UPSCALER_BIND_SRV_INPUT_COLOR 2 + +#define FSR3UPSCALER_BIND_UAV_DILATED_MOTION_VECTORS 3 +#define FSR3UPSCALER_BIND_UAV_DILATED_DEPTH 4 +#define FSR3UPSCALER_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH 5 +#define FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH 6 +#define FSR3UPSCALER_BIND_UAV_CURRENT_LUMA 7 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 8 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_prepare_inputs.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + PrepareInputs(FfxInt32x2(gl_GlobalInvocationID.xy)); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl new file mode 100644 index 000000000..e09d5d36d --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl @@ -0,0 +1,65 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require + +#define FSR3UPSCALER_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH 0 +#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 1 +#define FSR3UPSCALER_BIND_SRV_DILATED_DEPTH 2 +#define FSR3UPSCALER_BIND_SRV_REACTIVE_MASK 3 +#define FSR3UPSCALER_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK 4 +#define FSR3UPSCALER_BIND_SRV_ACCUMULATION 5 +#define FSR3UPSCALER_BIND_SRV_SHADING_CHANGE 6 +#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 7 +#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 8 + +#define FSR3UPSCALER_BIND_UAV_DILATED_REACTIVE_MASKS 9 +#define FSR3UPSCALER_BIND_UAV_NEW_LOCKS 10 +#define FSR3UPSCALER_BIND_UAV_ACCUMULATION 11 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 12 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + PrepareReactivity(FfxInt32x2(gl_GlobalInvocationID.xy)); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl new file mode 100644 index 000000000..112c2e5fb --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl @@ -0,0 +1,59 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require +// Needed for rw_upscaled_output declaration +#extension GL_EXT_shader_image_load_formatted : require + +#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 0 +#define FSR3UPSCALER_BIND_SRV_RCAS_INPUT 1 + +#define FSR3UPSCALER_BIND_UAV_UPSCALED_OUTPUT 2 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 3 +#define FSR3UPSCALER_BIND_CB_RCAS 4 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_rcas.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 64 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + RCAS(gl_LocalInvocationID.xyz, gl_WorkGroupID.xyz, gl_GlobalInvocationID.xyz); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl new file mode 100644 index 000000000..539728f0a --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl @@ -0,0 +1,55 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require + +#define FSR3UPSCALER_BIND_SRV_SPD_MIPS 0 + +#define FSR3UPSCALER_BIND_UAV_SHADING_CHANGE 1 + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 2 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_shading_change.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + ShadingChange(FfxInt32x2(gl_GlobalInvocationID.xy)); +} diff --git a/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl new file mode 100644 index 000000000..5e02d3da9 --- /dev/null +++ b/third_party/fidelityfx-sdk/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl @@ -0,0 +1,67 @@ +// This file is part of the FidelityFX SDK. +// +// Copyright (C) 2024 Advanced Micro Devices, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions : +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#version 450 + +#extension GL_GOOGLE_include_directive : require +#extension GL_EXT_samplerless_texture_functions : require + +#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 0 +#define FSR3UPSCALER_BIND_SRV_PREVIOUS_LUMA 1 +#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 2 +#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 3 + + +#define FSR3UPSCALER_BIND_UAV_SPD_GLOBAL_ATOMIC 4 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_0 5 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_1 6 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_2 7 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_3 8 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_4 9 +#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_5 10 + + +#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 11 +#define FSR3UPSCALER_BIND_CB_SPD 12 + +#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h" +#include "fsr3upscaler/ffx_fsr3upscaler_common.h" +#include "fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid.h" + +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 256 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT +#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1 +#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH +#ifndef FFX_FSR3UPSCALER_NUM_THREADS +#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in; +#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS + +FFX_FSR3UPSCALER_NUM_THREADS +void main() +{ + ComputeShadingChangePyramid(gl_WorkGroupID, gl_LocalInvocationIndex); +} From f25cc7953065ddbcb2152fc512fecf4b4a67b331 Mon Sep 17 00:00:00 2001 From: NoBoDyZ Date: Mon, 9 Nov 2026 11:46:14 +0100 Subject: [PATCH 08/13] fix(fsr): compile the FSR 3.1 passes for the inputs FSR 4.1 is given The renderer hands FSR tonemapped, square-root encoded colour (LDR), a standard D32 depth and render-pixel motion, so build the passes that way (HDR input off, inverted depth off) instead of converting the inputs. Regenerate the eleven headers, make --check ignore glslang's version comment (same SPIR-V) and pin the options in tests/test_fsr3_shaders.py. The note in third_party/fidelityfx-sdk no longer points at docs/upscaling.md, which this series does not bring in. Assisted-by: Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 --- gpu/vk/shaders/fsr3_accumulate_comp_spv.h | 3709 ++++++++--------- .../fsr3_accumulate_sharpen_comp_spv.h | 3688 ++++++++-------- .../shaders/fsr3_luma_instability_comp_spv.h | 2 +- gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h | 2 +- .../fsr3_luma_pyramid_nowave_comp_spv.h | 2 +- gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h | 1096 ++--- .../fsr3_prepare_reactivity_comp_spv.h | 2 +- gpu/vk/shaders/fsr3_rcas_comp_spv.h | 2 +- gpu/vk/shaders/fsr3_shading_change_comp_spv.h | 2 +- .../fsr3_shading_change_pyramid_comp_spv.h | 2 +- ...3_shading_change_pyramid_nowave_comp_spv.h | 2 +- scripts/fsr3_shaders.py | 25 +- tests/test_fsr3_shaders.py | 19 + third_party/fidelityfx-sdk/PROVENANCE.md | 2 +- 14 files changed, 4213 insertions(+), 4342 deletions(-) diff --git a/gpu/vk/shaders/fsr3_accumulate_comp_spv.h b/gpu/vk/shaders/fsr3_accumulate_comp_spv.h index d746783c1..f0655411f 100644 --- a/gpu/vk/shaders/fsr3_accumulate_comp_spv.h +++ b/gpu/vk/shaders/fsr3_accumulate_comp_spv.h @@ -1,10 +1,10 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_ACCUMULATE_COMP_SPV[] = { - 0x07230203,0x00010300,0x0008000b,0x00000924,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010300,0x0008000b,0x000008c0,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x00020011,0x00000032,0x00020011,0x00000038,0x0006000b,0x00000001,0x4c534c47, 0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005, - 0x00000004,0x6e69616d,0x00000000,0x00000912,0x00060010,0x00000004,0x00000011,0x00000008, + 0x00000004,0x6e69616d,0x00000000,0x000008ae,0x00060010,0x00000004,0x00000011,0x00000008, 0x00000008,0x00000001,0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458, 0x6c706d61,0x656c7265,0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000, 0x000b0004,0x455f4c47,0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972, @@ -86,1910 +86,1827 @@ const uint32_t FSR3_ACCUMULATE_COMP_SPV[] = { 0x003b3131,0x00070005,0x000000b1,0x74636572,0x63696669,0x6f697461,0x786f426e,0x00000000, 0x00060005,0x000000b6,0x436f4359,0x526f5467,0x76284247,0x003b3366,0x00040005,0x000000b5, 0x6f435966,0x00006743,0x00060005,0x000000b9,0x54424752,0x6f43596f,0x76286743,0x003b3366, - 0x00040005,0x000000b8,0x62675266,0x00000000,0x00060005,0x000000bc,0x656e6f54,0x2870616d, - 0x3b336676,0x00000000,0x00040005,0x000000bb,0x62675266,0x00000000,0x00070005,0x000000bf, - 0x65766e49,0x54657372,0x6d656e6f,0x76287061,0x003b3366,0x00040005,0x000000be,0x62675266, - 0x00000000,0x00060005,0x000000c3,0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005, - 0x000000c2,0x00765566,0x00080005,0x000000c9,0x6d616c43,0x616f4c70,0x69762864,0x69763b32, - 0x69763b32,0x00003b32,0x00050005,0x000000c6,0x53785069,0x6c706d61,0x00000065,0x00050005, - 0x000000c7,0x4f785069,0x65736666,0x00000074,0x00060005,0x000000c8,0x78655469,0x65727574, - 0x657a6953,0x00000000,0x00080005,0x000000cf,0x6d616c43,0x28765570,0x3b326676,0x3b326976, - 0x3b326976,0x00000000,0x00030005,0x000000cc,0x00765566,0x00060005,0x000000cd,0x78655469, - 0x65727574,0x657a6953,0x00000000,0x00060005,0x000000ce,0x73655269,0x6372756f,0x7a695365, - 0x00000065,0x00070005,0x000000d4,0x6e4f7349,0x65726353,0x76286e65,0x763b3269,0x003b3269, - 0x00030005,0x000000d2,0x00736f70,0x00040005,0x000000d3,0x657a6973,0x00000000,0x00070005, - 0x000000d7,0x636e614c,0x32736f7a,0x6c436f4e,0x28706d61,0x003b3166,0x00030005,0x000000d6, - 0x00000078,0x00060005,0x000000da,0x636e614c,0x32736f7a,0x3b316628,0x00000000,0x00030005, - 0x000000d9,0x00000078,0x00090005,0x000000dd,0x636e614c,0x32736f7a,0x72707041,0x7153786f, - 0x6c436f4e,0x28706d61,0x003b3166,0x00030005,0x000000dc,0x00003278,0x00080005,0x000000e0, - 0x636e614c,0x32736f7a,0x72707041,0x7153786f,0x3b316628,0x00000000,0x00030005,0x000000df, - 0x00003278,0x000a0005,0x000000e8,0x636e614c,0x32736f7a,0x34667628,0x3466763b,0x3466763b, - 0x3466763b,0x3b31663b,0x00000000,0x00040005,0x000000e3,0x6c6f4366,0x0030726f,0x00040005, - 0x000000e4,0x6c6f4366,0x0031726f,0x00040005,0x000000e5,0x6c6f4366,0x0032726f,0x00040005, - 0x000000e6,0x6c6f4366,0x0033726f,0x00030005,0x000000e7,0x00000074,0x00080005,0x000000ea, - 0x63746546,0x42646568,0x62756369,0x61536369,0x656c706d,0x00000073,0x00060006,0x000000ea, - 0x00000000,0x6c6f4366,0x3030726f,0x00000000,0x00060006,0x000000ea,0x00000001,0x6c6f4366, - 0x3031726f,0x00000000,0x00060006,0x000000ea,0x00000002,0x6c6f4366,0x3032726f,0x00000000, - 0x00060006,0x000000ea,0x00000003,0x6c6f4366,0x3033726f,0x00000000,0x00060006,0x000000ea, - 0x00000004,0x6c6f4366,0x3130726f,0x00000000,0x00060006,0x000000ea,0x00000005,0x6c6f4366, - 0x3131726f,0x00000000,0x00060006,0x000000ea,0x00000006,0x6c6f4366,0x3132726f,0x00000000, - 0x00060006,0x000000ea,0x00000007,0x6c6f4366,0x3133726f,0x00000000,0x00060006,0x000000ea, - 0x00000008,0x6c6f4366,0x3230726f,0x00000000,0x00060006,0x000000ea,0x00000009,0x6c6f4366, - 0x3231726f,0x00000000,0x00060006,0x000000ea,0x0000000a,0x6c6f4366,0x3232726f,0x00000000, - 0x00060006,0x000000ea,0x0000000b,0x6c6f4366,0x3233726f,0x00000000,0x00060006,0x000000ea, - 0x0000000c,0x6c6f4366,0x3330726f,0x00000000,0x00060006,0x000000ea,0x0000000d,0x6c6f4366, - 0x3331726f,0x00000000,0x00060006,0x000000ea,0x0000000e,0x6c6f4366,0x3332726f,0x00000000, - 0x00060006,0x000000ea,0x0000000f,0x6c6f4366,0x3333726f,0x00000000,0x001d0005,0x000000ef, - 0x636e614c,0x32736f7a,0x72747328,0x2d746375,0x63746546,0x42646568,0x62756369,0x61536369, - 0x656c706d,0x66762d73,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, + 0x00040005,0x000000b8,0x62675266,0x00000000,0x00060005,0x000000bd,0x76557349,0x69736e49, + 0x76286564,0x003b3266,0x00030005,0x000000bc,0x00765566,0x00080005,0x000000c3,0x6d616c43, + 0x616f4c70,0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005,0x000000c0,0x53785069, + 0x6c706d61,0x00000065,0x00050005,0x000000c1,0x4f785069,0x65736666,0x00000074,0x00060005, + 0x000000c2,0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005,0x000000c9,0x6d616c43, + 0x28765570,0x3b326676,0x3b326976,0x3b326976,0x00000000,0x00030005,0x000000c6,0x00765566, + 0x00060005,0x000000c7,0x78655469,0x65727574,0x657a6953,0x00000000,0x00060005,0x000000c8, + 0x73655269,0x6372756f,0x7a695365,0x00000065,0x00070005,0x000000ce,0x6e4f7349,0x65726353, + 0x76286e65,0x763b3269,0x003b3269,0x00030005,0x000000cc,0x00736f70,0x00040005,0x000000cd, + 0x657a6973,0x00000000,0x00070005,0x000000d1,0x636e614c,0x32736f7a,0x6c436f4e,0x28706d61, + 0x003b3166,0x00030005,0x000000d0,0x00000078,0x00060005,0x000000d4,0x636e614c,0x32736f7a, + 0x3b316628,0x00000000,0x00030005,0x000000d3,0x00000078,0x00090005,0x000000d7,0x636e614c, + 0x32736f7a,0x72707041,0x7153786f,0x6c436f4e,0x28706d61,0x003b3166,0x00030005,0x000000d6, + 0x00003278,0x00080005,0x000000da,0x636e614c,0x32736f7a,0x72707041,0x7153786f,0x3b316628, + 0x00000000,0x00030005,0x000000d9,0x00003278,0x000a0005,0x000000e2,0x636e614c,0x32736f7a, + 0x34667628,0x3466763b,0x3466763b,0x3466763b,0x3b31663b,0x00000000,0x00040005,0x000000dd, + 0x6c6f4366,0x0030726f,0x00040005,0x000000de,0x6c6f4366,0x0031726f,0x00040005,0x000000df, + 0x6c6f4366,0x0032726f,0x00040005,0x000000e0,0x6c6f4366,0x0033726f,0x00030005,0x000000e1, + 0x00000074,0x00080005,0x000000e4,0x63746546,0x42646568,0x62756369,0x61536369,0x656c706d, + 0x00000073,0x00060006,0x000000e4,0x00000000,0x6c6f4366,0x3030726f,0x00000000,0x00060006, + 0x000000e4,0x00000001,0x6c6f4366,0x3031726f,0x00000000,0x00060006,0x000000e4,0x00000002, + 0x6c6f4366,0x3032726f,0x00000000,0x00060006,0x000000e4,0x00000003,0x6c6f4366,0x3033726f, + 0x00000000,0x00060006,0x000000e4,0x00000004,0x6c6f4366,0x3130726f,0x00000000,0x00060006, + 0x000000e4,0x00000005,0x6c6f4366,0x3131726f,0x00000000,0x00060006,0x000000e4,0x00000006, + 0x6c6f4366,0x3132726f,0x00000000,0x00060006,0x000000e4,0x00000007,0x6c6f4366,0x3133726f, + 0x00000000,0x00060006,0x000000e4,0x00000008,0x6c6f4366,0x3230726f,0x00000000,0x00060006, + 0x000000e4,0x00000009,0x6c6f4366,0x3231726f,0x00000000,0x00060006,0x000000e4,0x0000000a, + 0x6c6f4366,0x3232726f,0x00000000,0x00060006,0x000000e4,0x0000000b,0x6c6f4366,0x3233726f, + 0x00000000,0x00060006,0x000000e4,0x0000000c,0x6c6f4366,0x3330726f,0x00000000,0x00060006, + 0x000000e4,0x0000000d,0x6c6f4366,0x3331726f,0x00000000,0x00060006,0x000000e4,0x0000000e, + 0x6c6f4366,0x3332726f,0x00000000,0x00060006,0x000000e4,0x0000000f,0x6c6f4366,0x3333726f, + 0x00000000,0x001d0005,0x000000e9,0x636e614c,0x32736f7a,0x72747328,0x2d746375,0x63746546, + 0x42646568,0x62756369,0x61536369,0x656c706d,0x66762d73,0x66762d34,0x66762d34,0x66762d34, 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, - 0x66762d34,0x763b3134,0x003b3266,0x00040005,0x000000ed,0x706d6153,0x0073656c,0x00040005, - 0x000000ee,0x46785066,0x00636172,0x00080005,0x000000f4,0x6d616c43,0x6f6f4370,0x76286472, - 0x763b3269,0x763b3269,0x003b3269,0x00050005,0x000000f1,0x53785069,0x6c706d61,0x00000065, - 0x00050005,0x000000f2,0x4f785069,0x65736666,0x00000074,0x00060005,0x000000f3,0x78655469, - 0x65727574,0x657a6953,0x00000000,0x00110005,0x000000f9,0x69726544,0x6e69676e,0x74732867, - 0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33, - 0x66762d33,0x31662d33,0x66763b31,0x00003b33,0x00050005,0x000000f7,0x70696c63,0x676e6970, - 0x00786f42,0x00040005,0x000000f8,0x6c6f4366,0x0000726f,0x000b0005,0x000000fe,0x55746547, - 0x6d617370,0x4c656c70,0x7a636e61,0x6557736f,0x74686769,0x32667628,0x3b31663b,0x00000000, - 0x00070005,0x000000fc,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005, - 0x000000fd,0x72654b66,0x576c656e,0x68676965,0x00000074,0x000a0005,0x00000100,0x75636341, - 0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x00000000,0x00060006, - 0x00000100,0x00000000,0x48785069,0x736f5072,0x00000000,0x00050006,0x00000100,0x00000001, - 0x55724866,0x00000076,0x00070006,0x00000100,0x00000002,0x55724c66,0x74694a76,0x65726574, - 0x00000064,0x00070006,0x00000100,0x00000003,0x55724c66,0x77485f76,0x706d6153,0x0072656c, - 0x00070006,0x00000100,0x00000004,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00080006, - 0x00000100,0x00000005,0x70655266,0x656a6f72,0x64657463,0x76557248,0x00000000,0x00060006, - 0x00000100,0x00000006,0x564b3466,0x636f6c65,0x00797469,0x00070006,0x00000100,0x00000007, - 0x73694466,0x6c63636f,0x6f697375,0x0000006e,0x00070006,0x00000100,0x00000008,0x61655266, - 0x76697463,0x73614d65,0x0000006b,0x00070006,0x00000100,0x00000009,0x61685366,0x676e6964, - 0x6e616843,0x00006567,0x00070006,0x00000100,0x0000000a,0x63634166,0x6c756d75,0x6f697461, - 0x0000006e,0x00090006,0x00000100,0x0000000b,0x6d754c66,0x736e4961,0x69626174,0x7974696c, - 0x74636146,0x0000726f,0x00090006,0x00000100,0x0000000c,0x72614666,0x73656874,0x70654474, - 0x6e496874,0x6574654d,0x00007372,0x00080006,0x00000100,0x0000000d,0x45734962,0x74736978, - 0x53676e69,0x6c706d61,0x00000065,0x00070006,0x00000100,0x0000000e,0x4e734962,0x61537765, - 0x656c706d,0x00000000,0x00080005,0x00000101,0x75636341,0x616c756d,0x6e6f6974,0x73736150, - 0x61746144,0x00000000,0x00060006,0x00000101,0x00000000,0x70696c63,0x676e6970,0x00786f42, - 0x00070006,0x00000101,0x00000001,0x73705566,0x6c706d61,0x6f436465,0x00726f6c,0x00080006, - 0x00000101,0x00000002,0x73705566,0x6c706d61,0x65576465,0x74686769,0x00000000,0x00070006, - 0x00000101,0x00000003,0x73694866,0x79726f74,0x6f6c6f43,0x00000072,0x00070006,0x00000101, - 0x00000004,0x73694866,0x79726f74,0x67696557,0x00007468,0x00050006,0x00000101,0x00000005, - 0x636f4c66,0x0000006b,0x000a0006,0x00000101,0x00000006,0x636f4c66,0x6e6f436b,0x62697274, - 0x6f697475,0x6968546e,0x61724673,0x0000656d,0x00360005,0x00000106,0x706d6f43,0x4d657475, - 0x654b7861,0x6c656e72,0x67696557,0x73287468,0x63757274,0x63412d74,0x756d7563,0x6974616c, + 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x763b3134,0x003b3266,0x00040005,0x000000e7, + 0x706d6153,0x0073656c,0x00040005,0x000000e8,0x46785066,0x00636172,0x00080005,0x000000ee, + 0x6d616c43,0x6f6f4370,0x76286472,0x763b3269,0x763b3269,0x003b3269,0x00050005,0x000000eb, + 0x53785069,0x6c706d61,0x00000065,0x00050005,0x000000ec,0x4f785069,0x65736666,0x00000074, + 0x00060005,0x000000ed,0x78655469,0x65727574,0x657a6953,0x00000000,0x00110005,0x000000f3, + 0x69726544,0x6e69676e,0x74732867,0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f, + 0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66763b31,0x00003b33,0x00050005, + 0x000000f1,0x70696c63,0x676e6970,0x00786f42,0x00040005,0x000000f2,0x6c6f4366,0x0000726f, + 0x000b0005,0x000000f8,0x55746547,0x6d617370,0x4c656c70,0x7a636e61,0x6557736f,0x74686769, + 0x32667628,0x3b31663b,0x00000000,0x00070005,0x000000f6,0x63725366,0x706d6153,0x664f656c, + 0x74657366,0x00000000,0x00060005,0x000000f7,0x72654b66,0x576c656e,0x68676965,0x00000074, + 0x000a0005,0x000000fa,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f, + 0x736d6172,0x00000000,0x00060006,0x000000fa,0x00000000,0x48785069,0x736f5072,0x00000000, + 0x00050006,0x000000fa,0x00000001,0x55724866,0x00000076,0x00070006,0x000000fa,0x00000002, + 0x55724c66,0x74694a76,0x65726574,0x00000064,0x00070006,0x000000fa,0x00000003,0x55724c66, + 0x77485f76,0x706d6153,0x0072656c,0x00070006,0x000000fa,0x00000004,0x746f4d66,0x566e6f69, + 0x6f746365,0x00000072,0x00080006,0x000000fa,0x00000005,0x70655266,0x656a6f72,0x64657463, + 0x76557248,0x00000000,0x00060006,0x000000fa,0x00000006,0x564b3466,0x636f6c65,0x00797469, + 0x00070006,0x000000fa,0x00000007,0x73694466,0x6c63636f,0x6f697375,0x0000006e,0x00070006, + 0x000000fa,0x00000008,0x61655266,0x76697463,0x73614d65,0x0000006b,0x00070006,0x000000fa, + 0x00000009,0x61685366,0x676e6964,0x6e616843,0x00006567,0x00070006,0x000000fa,0x0000000a, + 0x63634166,0x6c756d75,0x6f697461,0x0000006e,0x00090006,0x000000fa,0x0000000b,0x6d754c66, + 0x736e4961,0x69626174,0x7974696c,0x74636146,0x0000726f,0x00090006,0x000000fa,0x0000000c, + 0x72614666,0x73656874,0x70654474,0x6e496874,0x6574654d,0x00007372,0x00080006,0x000000fa, + 0x0000000d,0x45734962,0x74736978,0x53676e69,0x6c706d61,0x00000065,0x00070006,0x000000fa, + 0x0000000e,0x4e734962,0x61537765,0x656c706d,0x00000000,0x00080005,0x000000fb,0x75636341, + 0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x00000000,0x00060006,0x000000fb,0x00000000, + 0x70696c63,0x676e6970,0x00786f42,0x00070006,0x000000fb,0x00000001,0x73705566,0x6c706d61, + 0x6f436465,0x00726f6c,0x00080006,0x000000fb,0x00000002,0x73705566,0x6c706d61,0x65576465, + 0x74686769,0x00000000,0x00070006,0x000000fb,0x00000003,0x73694866,0x79726f74,0x6f6c6f43, + 0x00000072,0x00070006,0x000000fb,0x00000004,0x73694866,0x79726f74,0x67696557,0x00007468, + 0x00050006,0x000000fb,0x00000005,0x636f4c66,0x0000006b,0x000a0006,0x000000fb,0x00000006, + 0x636f4c66,0x6e6f436b,0x62697274,0x6f697475,0x6968546e,0x61724673,0x0000656d,0x00360005, + 0x00000100,0x706d6f43,0x4d657475,0x654b7861,0x6c656e72,0x67696557,0x73287468,0x63757274, + 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d, + 0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d, + 0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563, + 0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369, + 0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366, + 0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005,0x000000fe,0x61726170, + 0x0000736d,0x00040005,0x000000ff,0x61746164,0x00000000,0x00080005,0x00000103,0x64616f4c, + 0x70657250,0x64657261,0x6f6c6f43,0x69762872,0x00003b32,0x00050005,0x00000102,0x6d615369, + 0x50656c70,0x0000736f,0x00380005,0x00000108,0x706d6f43,0x55657475,0x6d617370,0x64656c70, + 0x6f6c6f43,0x646e4172,0x67696557,0x73287468,0x63757274,0x63412d74,0x756d7563,0x6974616c, 0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266, 0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, 0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373, 0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366, 0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d, - 0x3b313166,0x00000000,0x00040005,0x00000104,0x61726170,0x0000736d,0x00040005,0x00000105, - 0x61746164,0x00000000,0x00080005,0x00000109,0x64616f4c,0x70657250,0x64657261,0x6f6c6f43, - 0x69762872,0x00003b32,0x00050005,0x00000108,0x6d615369,0x50656c70,0x0000736f,0x00380005, - 0x0000010e,0x706d6f43,0x55657475,0x6d617370,0x64656c70,0x6f6c6f43,0x646e4172,0x67696557, - 0x73287468,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d, - 0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266, - 0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274, - 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74, - 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, - 0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005, - 0x0000010c,0x61726170,0x0000736d,0x00040005,0x0000010d,0x61746164,0x00000000,0x00070005, - 0x00000111,0x70617257,0x74736948,0x2879726f,0x3b326976,0x00000000,0x00050005,0x00000110, - 0x53785069,0x6c706d61,0x00000065,0x000a0005,0x00000116,0x63746546,0x73694868,0x79726f74, - 0x706d6153,0x2873656c,0x3b326976,0x3b326976,0x00000000,0x00050005,0x00000114,0x53785069, - 0x6c706d61,0x00000065,0x00060005,0x00000115,0x78655469,0x65727574,0x657a6953,0x00000000, - 0x00080005,0x0000011b,0x74736948,0x5379726f,0x6c706d61,0x66762865,0x69763b32,0x00003b32, - 0x00050005,0x00000119,0x53765566,0x6c706d61,0x00000065,0x00060005,0x0000011a,0x78655469, - 0x65727574,0x657a6953,0x00000000,0x00090005,0x00000120,0x4d746547,0x6f69746f,0x6365566e, - 0x28726f74,0x3b326976,0x3b326676,0x00000000,0x00050005,0x0000011e,0x48785069,0x736f5072, - 0x00000000,0x00040005,0x0000011f,0x55724866,0x00000076,0x001e0005,0x00000125,0x706d6f43, - 0x52657475,0x6f727065,0x7463656a,0x56556465,0x74732873,0x74637572,0x6363412d,0x6c756d75, - 0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32, - 0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, - 0x622d3166,0x31622d31,0x00003b31,0x00040005,0x00000124,0x61726170,0x0000736d,0x00350005, - 0x00000129,0x72706552,0x63656a6f,0x73694874,0x79726f74,0x6f6c6f43,0x74732872,0x74637572, - 0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73, - 0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166, - 0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x74733b31,0x74637572,0x6363412d,0x6c756d75, - 0x6f697461,0x7361506e,0x74614473,0x74732d61,0x74637572,0x6365522d,0x69666974,0x69746163, - 0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66762d31,0x31662d33, - 0x3366762d,0x2d31662d,0x662d3166,0x003b3131,0x00040005,0x00000127,0x61726170,0x0000736d, - 0x00040005,0x00000128,0x61746164,0x00000000,0x00330005,0x0000012d,0x75636341,0x616c756d, - 0x73286574,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d, - 0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266, - 0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274, - 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74, - 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, - 0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005, - 0x0000012b,0x61726170,0x0000736d,0x00040005,0x0000012c,0x61746164,0x00000000,0x00340005, - 0x00000131,0x74636552,0x48796669,0x6f747369,0x73287972,0x63757274,0x63412d74,0x756d7563, - 0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266, - 0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31, - 0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, - 0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, - 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33, - 0x2d31662d,0x3b313166,0x00000000,0x00040005,0x0000012f,0x61726170,0x0000736d,0x00040005, - 0x00000130,0x61746164,0x00000000,0x00340005,0x00000136,0x61647055,0x6f4c6574,0x74536b63, - 0x73757461,0x72747328,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43, - 0x61506e6f,0x736d6172,0x3269762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d, - 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x662d3166,0x31622d31,0x3131622d,0x7274733b, - 0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x7274732d,0x2d746375, - 0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d, - 0x3131662d,0x3366762d,0x2d31662d,0x2d336676,0x662d3166,0x31662d31,0x00003b31,0x00040005, - 0x00000134,0x61726170,0x0000736d,0x00040005,0x00000135,0x61746164,0x00000000,0x00370005, - 0x0000013a,0x706d6f43,0x42657475,0x41657361,0x6d756363,0x74616c75,0x576e6f69,0x68676965, - 0x74732874,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d, - 0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32, - 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x74733b31,0x74637572, - 0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x74614473,0x74732d61,0x74637572,0x6365522d, - 0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33, - 0x66762d31,0x31662d33,0x3366762d,0x2d31662d,0x662d3166,0x003b3131,0x00040005,0x00000138, - 0x61726170,0x0000736d,0x00040005,0x00000139,0x61746164,0x00000000,0x00340005,0x00000140, - 0x74696e49,0x73736150,0x61746144,0x32697628,0x7274733b,0x2d746375,0x75636341,0x616c756d, + 0x3b313166,0x00000000,0x00040005,0x00000106,0x61726170,0x0000736d,0x00040005,0x00000107, + 0x61746164,0x00000000,0x00070005,0x0000010b,0x70617257,0x74736948,0x2879726f,0x3b326976, + 0x00000000,0x00050005,0x0000010a,0x53785069,0x6c706d61,0x00000065,0x000a0005,0x00000110, + 0x63746546,0x73694868,0x79726f74,0x706d6153,0x2873656c,0x3b326976,0x3b326976,0x00000000, + 0x00050005,0x0000010e,0x53785069,0x6c706d61,0x00000065,0x00060005,0x0000010f,0x78655469, + 0x65727574,0x657a6953,0x00000000,0x00080005,0x00000115,0x74736948,0x5379726f,0x6c706d61, + 0x66762865,0x69763b32,0x00003b32,0x00050005,0x00000113,0x53765566,0x6c706d61,0x00000065, + 0x00060005,0x00000114,0x78655469,0x65727574,0x657a6953,0x00000000,0x00090005,0x0000011a, + 0x4d746547,0x6f69746f,0x6365566e,0x28726f74,0x3b326976,0x3b326676,0x00000000,0x00050005, + 0x00000118,0x48785069,0x736f5072,0x00000000,0x00040005,0x00000119,0x55724866,0x00000076, + 0x001e0005,0x0000011f,0x706d6f43,0x52657475,0x6f727065,0x7463656a,0x56556465,0x74732873, + 0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261, + 0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d, + 0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x00003b31,0x00040005,0x0000011e, + 0x61726170,0x0000736d,0x00350005,0x00000123,0x72706552,0x63656a6f,0x73694874,0x79726f74, + 0x6f6c6f43,0x74732872,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373, + 0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32, + 0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x74733b31, + 0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x74614473,0x74732d61,0x74637572, + 0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33, + 0x31662d33,0x66762d31,0x31662d33,0x3366762d,0x2d31662d,0x662d3166,0x003b3131,0x00040005, + 0x00000121,0x61726170,0x0000736d,0x00040005,0x00000122,0x61746164,0x00000000,0x00330005, + 0x00000127,0x75636341,0x616c756d,0x73286574,0x63757274,0x63412d74,0x756d7563,0x6974616c, + 0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266, + 0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, + 0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373, + 0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366, + 0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d, + 0x3b313166,0x00000000,0x00040005,0x00000125,0x61726170,0x0000736d,0x00040005,0x00000126, + 0x61746164,0x00000000,0x00340005,0x0000012b,0x74636552,0x48796669,0x6f747369,0x73287972, + 0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150, + 0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31, + 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74, + 0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463, + 0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131, + 0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000129, + 0x61726170,0x0000736d,0x00040005,0x0000012a,0x61746164,0x00000000,0x00340005,0x00000130, + 0x61647055,0x6f4c6574,0x74536b63,0x73757461,0x72747328,0x2d746375,0x75636341,0x616c756d, 0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x3269762d,0x3266762d,0x3266762d, 0x3266762d,0x3266762d,0x3266762d,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x662d3166, 0x31622d31,0x3131622d,0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150, 0x61746144,0x7274732d,0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d, 0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366762d,0x2d31662d,0x2d336676,0x662d3166, - 0x31662d31,0x00003b31,0x00050005,0x0000013d,0x48785069,0x736f5072,0x00000000,0x00040005, - 0x0000013e,0x61726170,0x0000736d,0x00040005,0x0000013f,0x61746164,0x00000000,0x00060005, - 0x00000144,0x75636341,0x616c756d,0x76286574,0x003b3269,0x00050005,0x00000143,0x48785069, - 0x736f5072,0x00000000,0x00070005,0x00000194,0x53466263,0x50553352,0x4c414353,0x745f5245, - 0x00000000,0x00060006,0x00000194,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006, - 0x00000194,0x00000001,0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953, - 0x00000000,0x00070006,0x00000194,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000, - 0x000a0006,0x00000194,0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373, - 0x7a695365,0x00000065,0x00070006,0x00000194,0x00000004,0x78614d69,0x646e6552,0x69537265, - 0x0000657a,0x00070006,0x00000194,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69, - 0x00080006,0x00000194,0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874, - 0x00050006,0x00000194,0x00000007,0x74694a66,0x00726574,0x00090006,0x00000194,0x00000008, - 0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x00000194, - 0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x00000194, - 0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x00000194, - 0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c, - 0x006e6f69,0x00060006,0x00000194,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006, - 0x00000194,0x0000000d,0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068, - 0x00060006,0x00000194,0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x00000194, - 0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x00000194, - 0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000, - 0x00060006,0x00000194,0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x00000194, - 0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74,0x00080006,0x00000194,0x00000013, - 0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c,0x00080006,0x00000194,0x00000014, - 0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61,0x000a0006,0x00000194,0x00000015, - 0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006, - 0x00000194,0x00000016,0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d, - 0x6e6f6974,0x00000000,0x00060005,0x00000196,0x53466263,0x70553352,0x6c616373,0x00007265, - 0x00080005,0x000001ce,0x6e695f72,0x5f747570,0x6f6c6f63,0x696a5f72,0x72657474,0x00006465, - 0x00090005,0x000001d5,0x6e695f72,0x6e726574,0x755f6c61,0x61637370,0x5f64656c,0x6f6c6f63, - 0x00000072,0x00090005,0x000001dd,0x695f7772,0x7265746e,0x5f6c616e,0x63737075,0x64656c61, - 0x6c6f635f,0x0000726f,0x00070005,0x000001e3,0x755f7772,0x61637370,0x5f64656c,0x7074756f, - 0x00007475,0x00080005,0x000001eb,0x61665f72,0x65687472,0x645f7473,0x68747065,0x70696d5f, - 0x00000031,0x00060005,0x000001f3,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00070005, - 0x000001fe,0x756c5f72,0x695f616d,0x6174736e,0x696c6962,0x00007974,0x00060005,0x00000209, - 0x6e5f7772,0x6c5f7765,0x736b636f,0x00000000,0x00090005,0x00000214,0x69645f72,0x6574616c, - 0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00050005,0x0000021b,0x6f707865, - 0x65727573,0x00000000,0x00070005,0x0000021c,0x6e695f72,0x5f747570,0x6f707865,0x65727573, - 0x00000000,0x00090005,0x00000228,0x69645f72,0x6574616c,0x65725f64,0x69746361,0x6d5f6576, - 0x736b7361,0x00000000,0x00060005,0x0000023a,0x67696577,0x64657468,0x706d6153,0x0000656c, - 0x00040005,0x00000246,0x61726170,0x0000006d,0x00040005,0x0000024b,0x61726170,0x0000006d, - 0x00040005,0x0000024e,0x61726170,0x0000006d,0x00040005,0x00000251,0x61726170,0x0000006d, - 0x00040005,0x00000254,0x61726170,0x0000006d,0x00060005,0x00000257,0x67696577,0x64657468, - 0x706d6153,0x0000656c,0x00040005,0x00000283,0x44647473,0x00007665,0x00040005,0x00000290, - 0x62675266,0x00000000,0x00040005,0x000002ac,0x6f435966,0x00006743,0x00040005,0x000002d2, - 0x61726170,0x0000006d,0x00040005,0x000002d3,0x61726170,0x0000006d,0x00040005,0x000002d7, - 0x61726170,0x0000006d,0x00040005,0x000002da,0x61726170,0x0000006d,0x00040005,0x000002de, - 0x61726170,0x0000006d,0x00040005,0x000002df,0x61726170,0x0000006d,0x00040005,0x000002e8, - 0x61726170,0x0000006d,0x00040005,0x000002eb,0x61726170,0x0000006d,0x00040005,0x000002ef, - 0x61726170,0x0000006d,0x00040005,0x000002f2,0x61726170,0x0000006d,0x00040005,0x000002f5, - 0x61726170,0x0000006d,0x00040005,0x000002f6,0x61726170,0x0000006d,0x00040005,0x00000313, - 0x75736572,0x0000746c,0x00040005,0x0000031a,0x61726170,0x0000006d,0x00040005,0x0000031d, - 0x61726170,0x0000006d,0x00040005,0x0000031f,0x61726170,0x0000006d,0x00040005,0x00000320, - 0x61726170,0x0000006d,0x00040005,0x00000326,0x61726170,0x0000006d,0x00040005,0x00000329, - 0x61726170,0x0000006d,0x00040005,0x0000032b,0x61726170,0x0000006d,0x00040005,0x0000032c, - 0x61726170,0x0000006d,0x00060005,0x00000332,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69, - 0x00070005,0x00000337,0x616c4366,0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005, - 0x0000033c,0x61726170,0x0000006d,0x00040005,0x0000033e,0x61726170,0x0000006d,0x00040005, - 0x00000340,0x61726170,0x0000006d,0x00040005,0x00000341,0x61726170,0x0000006d,0x00050005, - 0x00000343,0x616c4366,0x6465706d,0x00007655,0x00040005,0x00000371,0x61726170,0x0000006d, - 0x00040005,0x00000372,0x61726170,0x0000006d,0x00040005,0x00000374,0x61726170,0x0000006d, - 0x00030005,0x00000379,0x00000061,0x00030005,0x0000037e,0x00000062,0x00040005,0x00000390, - 0x61726170,0x0000006d,0x00040005,0x00000392,0x61726170,0x0000006d,0x00040005,0x00000394, - 0x61726170,0x0000006d,0x00050005,0x00000399,0x69655766,0x30746867,0x00000000,0x00040005, - 0x0000039d,0x61726170,0x0000006d,0x00050005,0x0000039f,0x69655766,0x31746867,0x00000000, - 0x00040005,0x000003a3,0x61726170,0x0000006d,0x00050005,0x000003a5,0x69655766,0x32746867, - 0x00000000,0x00040005,0x000003a8,0x61726170,0x0000006d,0x00050005,0x000003aa,0x69655766, - 0x33746867,0x00000000,0x00040005,0x000003ad,0x61726170,0x0000006d,0x00050005,0x000003c9, - 0x6c6f4366,0x3058726f,0x00000000,0x00040005,0x000003ca,0x61726170,0x0000006d,0x00040005, - 0x000003cd,0x61726170,0x0000006d,0x00040005,0x000003d0,0x61726170,0x0000006d,0x00040005, - 0x000003d3,0x61726170,0x0000006d,0x00040005,0x000003d6,0x61726170,0x0000006d,0x00050005, - 0x000003da,0x6c6f4366,0x3158726f,0x00000000,0x00040005,0x000003dd,0x61726170,0x0000006d, - 0x00040005,0x000003e0,0x61726170,0x0000006d,0x00040005,0x000003e3,0x61726170,0x0000006d, - 0x00040005,0x000003e6,0x61726170,0x0000006d,0x00040005,0x000003e9,0x61726170,0x0000006d, - 0x00050005,0x000003ed,0x6c6f4366,0x3258726f,0x00000000,0x00040005,0x000003f1,0x61726170, - 0x0000006d,0x00040005,0x000003f4,0x61726170,0x0000006d,0x00040005,0x000003f7,0x61726170, - 0x0000006d,0x00040005,0x000003fa,0x61726170,0x0000006d,0x00040005,0x000003fd,0x61726170, - 0x0000006d,0x00050005,0x00000401,0x6c6f4366,0x3358726f,0x00000000,0x00040005,0x00000404, - 0x61726170,0x0000006d,0x00040005,0x00000407,0x61726170,0x0000006d,0x00040005,0x0000040a, - 0x61726170,0x0000006d,0x00040005,0x0000040d,0x61726170,0x0000006d,0x00040005,0x00000410, - 0x61726170,0x0000006d,0x00050005,0x00000414,0x6c6f4366,0x5958726f,0x00000000,0x00040005, - 0x00000415,0x61726170,0x0000006d,0x00040005,0x00000417,0x61726170,0x0000006d,0x00040005, - 0x00000419,0x61726170,0x0000006d,0x00040005,0x0000041b,0x61726170,0x0000006d,0x00040005, - 0x0000041d,0x61726170,0x0000006d,0x00070005,0x00000424,0x72654466,0x69676e69,0x6153676e, - 0x656c706d,0x00000073,0x00060005,0x0000042e,0x72654466,0x69676e69,0x694d676e,0x0000006e, - 0x00060005,0x00000431,0x72654466,0x69676e69,0x614d676e,0x00000078,0x00060005,0x00000434, - 0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x0000043d,0x61726170,0x0000006d, - 0x00040005,0x0000043f,0x61726170,0x0000006d,0x00040005,0x00000444,0x61726170,0x0000006d, - 0x00040005,0x00000446,0x61726170,0x0000006d,0x00040005,0x00000453,0x75736572,0x0000746c, - 0x00040005,0x0000045a,0x61726170,0x0000006d,0x00040005,0x0000045d,0x61726170,0x0000006d, - 0x00040005,0x0000045f,0x61726170,0x0000006d,0x00040005,0x00000460,0x61726170,0x0000006d, - 0x00040005,0x00000466,0x61726170,0x0000006d,0x00040005,0x00000469,0x61726170,0x0000006d, - 0x00040005,0x0000046b,0x61726170,0x0000006d,0x00040005,0x0000046c,0x61726170,0x0000006d, - 0x00080005,0x00000478,0x63725366,0x706d6153,0x664f656c,0x74657366,0x73616942,0x00006465, - 0x00060005,0x0000047d,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00040005,0x00000481, - 0x61726170,0x0000006d,0x00060005,0x00000486,0x72654b66,0x536c656e,0x42657a69,0x00736169, - 0x00040005,0x0000048f,0x61726170,0x0000006d,0x00040005,0x00000490,0x61726170,0x0000006d, - 0x00040005,0x00000495,0x62675266,0x00000000,0x00040005,0x00000497,0x61726170,0x0000006d, - 0x00040005,0x0000049a,0x61726170,0x0000006d,0x00040005,0x0000049b,0x61726170,0x0000006d, - 0x00060005,0x0000049f,0x65725066,0x65726170,0x6f435964,0x00006743,0x00040005,0x000004a0, - 0x61726170,0x0000006d,0x00060005,0x000004a6,0x74734466,0x7074754f,0x6f507475,0x00000073, - 0x00060005,0x000004aa,0x63725366,0x7074754f,0x6f507475,0x00000073,0x00060005,0x000004ae, - 0x63725369,0x75706e49,0x736f5074,0x00000000,0x00070005,0x000004b2,0x63725366,0x696a6e55, - 0x72657474,0x6f506465,0x00000073,0x00070005,0x000004b8,0x73614266,0x6d615365,0x4f656c70, - 0x65736666,0x00000074,0x00050005,0x000004bc,0x7366666f,0x4c547465,0x00000000,0x00050005, - 0x000004cd,0x696c4662,0x776f5270,0x00000000,0x00050005,0x000004d3,0x696c4662,0x6c6f4370, - 0x00000000,0x00050005,0x000004d9,0x66664f66,0x54746573,0x0000004c,0x00070005,0x000004dc, - 0x49734962,0x6974696e,0x61536c61,0x656c706d,0x00000000,0x00060005,0x000004df,0x6d615369, - 0x49656c70,0x7865646e,0x00000000,0x00030005,0x000004e0,0x00776f72,0x00030005,0x000004e8, - 0x006c6f63,0x00060005,0x000004f0,0x6d615369,0x43656c70,0x6f526c6f,0x00000077,0x00060005, - 0x00000504,0x63725369,0x706d6153,0x6f50656c,0x00000073,0x00060005,0x0000050a,0x6d615369, - 0x43656c70,0x64726f6f,0x00000000,0x00040005,0x0000050c,0x61726170,0x0000006d,0x00040005, - 0x0000050e,0x61726170,0x0000006d,0x00040005,0x0000050f,0x61726170,0x0000006d,0x00050005, - 0x00000514,0x6d615366,0x73656c70,0x00000000,0x00040005,0x00000516,0x61726170,0x0000006d, - 0x00040005,0x0000052c,0x61726170,0x0000006d,0x00040005,0x00000530,0x61726170,0x0000006d, - 0x00040005,0x00000532,0x61726170,0x0000006d,0x00060005,0x00000537,0x72654b66,0x426c656e, - 0x4d736169,0x00007861,0x00040005,0x00000538,0x61726170,0x0000006d,0x00060005,0x0000053c, - 0x72654b66,0x426c656e,0x4d736169,0x00006e69,0x00040005,0x00000541,0x61726170,0x0000006d, - 0x00040005,0x00000542,0x61726170,0x0000006d,0x00070005,0x00000544,0x72654b66,0x426c656e, - 0x57736169,0x68676965,0x00000074,0x00040005,0x0000054e,0x61726170,0x0000006d,0x00040005, - 0x00000550,0x61726170,0x0000006d,0x00040005,0x00000551,0x61726170,0x0000006d,0x00040005, - 0x00000553,0x61726170,0x0000006d,0x00040005,0x00000554,0x61726170,0x0000006d,0x00050005, - 0x00000556,0x72654b66,0x426c656e,0x00736169,0x00040005,0x00000557,0x61726170,0x0000006d, - 0x00040005,0x00000559,0x61726170,0x0000006d,0x00040005,0x0000055b,0x61726170,0x0000006d, - 0x00030005,0x0000055e,0x00776f72,0x00030005,0x00000566,0x006c6f63,0x00060005,0x0000056e, - 0x706d6173,0x6f43656c,0x776f526c,0x00000000,0x00040005,0x00000582,0x66664f66,0x00746573, - 0x00070005,0x00000587,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005, - 0x0000058b,0x63725369,0x706d6153,0x6f50656c,0x00000073,0x00060005,0x00000591,0x536e4f66, - 0x65657263,0x6361466e,0x00726f74,0x00040005,0x00000594,0x61726170,0x0000006d,0x00040005, - 0x00000595,0x61726170,0x0000006d,0x00060005,0x0000059c,0x6d615366,0x57656c70,0x68676965, - 0x00000074,0x00040005,0x0000059e,0x61726170,0x0000006d,0x00040005,0x000005a0,0x61726170, - 0x0000006d,0x00070005,0x000005b2,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00007153, - 0x00070005,0x000005b6,0x786f4266,0x706d6153,0x6557656c,0x74686769,0x00000000,0x00060005, - 0x000005bd,0x696e4962,0x6c616974,0x706d6153,0x0000656c,0x00040005,0x000005c7,0x61726170, - 0x0000006d,0x00040005,0x000005c9,0x61726170,0x0000006d,0x00040005,0x000005d5,0x61726170, - 0x0000006d,0x00040005,0x000005f4,0x61726170,0x0000006d,0x00040005,0x000005f7,0x61726170, - 0x0000006d,0x00040005,0x00000600,0x61726170,0x0000006d,0x00040005,0x00000604,0x61726170, - 0x0000006d,0x00040005,0x00000606,0x61726170,0x0000006d,0x00040005,0x0000060b,0x61726170, - 0x0000006d,0x00040005,0x00000610,0x706d6153,0x0073656c,0x00040005,0x00000612,0x61726170, - 0x0000006d,0x00040005,0x00000614,0x61726170,0x0000006d,0x00040005,0x00000615,0x61726170, - 0x0000006d,0x00040005,0x00000618,0x61726170,0x0000006d,0x00040005,0x0000061c,0x61726170, - 0x0000006d,0x00040005,0x0000061e,0x61726170,0x0000006d,0x00040005,0x0000061f,0x61726170, - 0x0000006d,0x00040005,0x00000622,0x61726170,0x0000006d,0x00040005,0x00000626,0x61726170, - 0x0000006d,0x00040005,0x00000628,0x61726170,0x0000006d,0x00040005,0x00000629,0x61726170, - 0x0000006d,0x00040005,0x0000062c,0x61726170,0x0000006d,0x00040005,0x00000630,0x61726170, - 0x0000006d,0x00040005,0x00000632,0x61726170,0x0000006d,0x00040005,0x00000633,0x61726170, - 0x0000006d,0x00040005,0x00000636,0x61726170,0x0000006d,0x00040005,0x0000063a,0x61726170, - 0x0000006d,0x00040005,0x0000063c,0x61726170,0x0000006d,0x00040005,0x0000063d,0x61726170, - 0x0000006d,0x00040005,0x00000640,0x61726170,0x0000006d,0x00040005,0x00000643,0x61726170, - 0x0000006d,0x00040005,0x00000645,0x61726170,0x0000006d,0x00040005,0x00000646,0x61726170, - 0x0000006d,0x00040005,0x00000649,0x61726170,0x0000006d,0x00040005,0x0000064d,0x61726170, - 0x0000006d,0x00040005,0x0000064f,0x61726170,0x0000006d,0x00040005,0x00000650,0x61726170, - 0x0000006d,0x00040005,0x00000653,0x61726170,0x0000006d,0x00040005,0x00000657,0x61726170, - 0x0000006d,0x00040005,0x00000659,0x61726170,0x0000006d,0x00040005,0x0000065a,0x61726170, - 0x0000006d,0x00040005,0x0000065d,0x61726170,0x0000006d,0x00040005,0x00000661,0x61726170, - 0x0000006d,0x00040005,0x00000663,0x61726170,0x0000006d,0x00040005,0x00000664,0x61726170, - 0x0000006d,0x00040005,0x00000667,0x61726170,0x0000006d,0x00040005,0x0000066b,0x61726170, - 0x0000006d,0x00040005,0x0000066d,0x61726170,0x0000006d,0x00040005,0x0000066e,0x61726170, - 0x0000006d,0x00040005,0x00000671,0x61726170,0x0000006d,0x00040005,0x00000675,0x61726170, - 0x0000006d,0x00040005,0x00000677,0x61726170,0x0000006d,0x00040005,0x00000678,0x61726170, - 0x0000006d,0x00040005,0x0000067b,0x61726170,0x0000006d,0x00040005,0x0000067f,0x61726170, - 0x0000006d,0x00040005,0x00000681,0x61726170,0x0000006d,0x00040005,0x00000682,0x61726170, - 0x0000006d,0x00040005,0x00000685,0x61726170,0x0000006d,0x00040005,0x00000689,0x61726170, - 0x0000006d,0x00040005,0x0000068b,0x61726170,0x0000006d,0x00040005,0x0000068c,0x61726170, - 0x0000006d,0x00040005,0x0000068f,0x61726170,0x0000006d,0x00040005,0x00000693,0x61726170, - 0x0000006d,0x00040005,0x00000695,0x61726170,0x0000006d,0x00040005,0x00000696,0x61726170, - 0x0000006d,0x00040005,0x00000699,0x61726170,0x0000006d,0x00040005,0x0000069d,0x61726170, - 0x0000006d,0x00040005,0x0000069f,0x61726170,0x0000006d,0x00040005,0x000006a0,0x61726170, - 0x0000006d,0x00040005,0x000006a3,0x61726170,0x0000006d,0x00040005,0x000006a7,0x61726170, - 0x0000006d,0x00040005,0x000006a9,0x61726170,0x0000006d,0x00040005,0x000006aa,0x61726170, - 0x0000006d,0x00040005,0x000006ad,0x61726170,0x0000006d,0x00050005,0x000006b3,0x53785066, - 0x6c706d61,0x00000065,0x00040005,0x000006b9,0x46785066,0x00636172,0x00040005,0x000006ba, - 0x61726170,0x0000006d,0x00040005,0x000006c1,0x61726170,0x0000006d,0x00040005,0x000006c2, - 0x61726170,0x0000006d,0x00040005,0x000006c6,0x61726170,0x0000006d,0x00040005,0x000006c7, - 0x61726170,0x0000006d,0x00040005,0x000006ce,0x61726170,0x0000006d,0x00040005,0x000006cf, - 0x61726170,0x0000006d,0x00040005,0x000006d3,0x61726170,0x0000006d,0x00040005,0x000006d4, - 0x61726170,0x0000006d,0x00050005,0x000006d7,0x53785069,0x6c706d61,0x00000065,0x00050005, - 0x000006db,0x6c6f4366,0x5958726f,0x00000000,0x00040005,0x000006dc,0x61726170,0x0000006d, - 0x00040005,0x000006de,0x61726170,0x0000006d,0x00040005,0x000006e1,0x61726170,0x0000006d, - 0x00040005,0x000006e2,0x61726170,0x0000006d,0x00080005,0x000006e8,0x6c694466,0x64657461, - 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x000006ee,0x61726170,0x0000006d, - 0x00040005,0x000006f9,0x61726170,0x0000006d,0x00070005,0x000006fe,0x70655266,0x656a6f72, - 0x64657463,0x74736948,0x0079726f,0x00040005,0x00000700,0x61726170,0x0000006d,0x00040005, - 0x00000702,0x61726170,0x0000006d,0x00040005,0x00000711,0x61726170,0x0000006d,0x00040005, - 0x00000727,0x61726170,0x0000006d,0x00040005,0x00000728,0x61726170,0x0000006d,0x00040005, - 0x0000072b,0x61726170,0x0000006d,0x00040005,0x0000072f,0x61726170,0x0000006d,0x00040005, - 0x00000731,0x61726170,0x0000006d,0x00040005,0x00000734,0x61726170,0x0000006d,0x00040005, - 0x00000738,0x61726170,0x0000006d,0x00040005,0x0000073a,0x61726170,0x0000006d,0x00040005, - 0x0000073d,0x706c4166,0x00006168,0x00040005,0x00000743,0x61726170,0x0000006d,0x00040005, - 0x00000745,0x61726170,0x0000006d,0x00040005,0x00000748,0x61726170,0x0000006d,0x00040005, - 0x0000074b,0x61726170,0x0000006d,0x00040005,0x0000074f,0x61726170,0x0000006d,0x00040005, - 0x00000754,0x61726170,0x0000006d,0x00070005,0x00000759,0x566b3466,0x636f6c65,0x46797469, - 0x6f746361,0x00000072,0x00040005,0x0000075d,0x61726170,0x0000006d,0x00060005,0x0000075f, - 0x73694466,0x636e6174,0x63614665,0x00726f74,0x00040005,0x00000764,0x61726170,0x0000006d, - 0x00070005,0x00000766,0x63634166,0x6c756d75,0x6f697461,0x6361466e,0x00726f74,0x00060005, - 0x00000769,0x61655266,0x76697463,0x63614665,0x00726f74,0x00040005,0x0000076a,0x61726170, - 0x0000006d,0x00040005,0x0000076c,0x61726170,0x0000006d,0x00080005,0x0000076e,0x61685366, - 0x676e6964,0x6e616843,0x61466567,0x726f7463,0x00000000,0x00050005,0x00000770,0x786f4266, - 0x6c616353,0x00005465,0x00040005,0x00000771,0x61726170,0x0000006d,0x00040005,0x00000773, - 0x61726170,0x0000006d,0x00040005,0x00000776,0x61726170,0x0000006d,0x00040005,0x00000778, - 0x61726170,0x0000006d,0x00040005,0x0000077a,0x61726170,0x0000006d,0x00040005,0x0000077c, - 0x61726170,0x0000006d,0x00040005,0x0000077e,0x61726170,0x0000006d,0x00040005,0x00000780, - 0x61726170,0x0000006d,0x00050005,0x00000782,0x786f4266,0x6c616353,0x00000065,0x00040005, - 0x00000784,0x61726170,0x0000006d,0x00040005,0x00000785,0x61726170,0x0000006d,0x00040005, - 0x00000786,0x61726170,0x0000006d,0x00060005,0x00000789,0x61635366,0x4264656c,0x6556786f, - 0x00000063,0x00080005,0x00000791,0x616c4366,0x6465706d,0x6c616353,0x6f426465,0x63655678, - 0x00000000,0x00040005,0x00000794,0x61726170,0x0000006d,0x00040005,0x00000796,0x61726170, - 0x0000006d,0x00090005,0x00000798,0x61725466,0x6f66736e,0x64656d72,0x74736948,0x4379726f, - 0x726f6c6f,0x00000000,0x00080005,0x000007a5,0x616c4366,0x6465706d,0x74736948,0x4379726f, - 0x726f6c6f,0x00000000,0x00090005,0x000007a8,0x6e694666,0x6c436c61,0x65706d61,0x73694864, - 0x79726f74,0x6f6c6f43,0x00000072,0x00080005,0x000007af,0x73694866,0x79726f74,0x746e6f43, - 0x75626972,0x6e6f6974,0x00000000,0x00040005,0x000007b0,0x61726170,0x0000006d,0x00040005, - 0x000007b2,0x61726170,0x0000006d,0x00040005,0x000007bb,0x61726170,0x0000006d,0x00040005, - 0x000007be,0x61726170,0x0000006d,0x00040005,0x000007c0,0x61726170,0x0000006d,0x00040005, - 0x000007c3,0x61726170,0x0000006d,0x00080005,0x000007cf,0x66694c66,0x6d697465,0x63654465, - 0x73616572,0x63614665,0x00726f74,0x00040005,0x000007d0,0x61726170,0x0000006d,0x00040005, - 0x000007d4,0x61726170,0x0000006d,0x00040005,0x000007d7,0x61726170,0x0000006d,0x00040005, - 0x000007db,0x61726170,0x0000006d,0x00040005,0x000007dc,0x61726170,0x0000006d,0x00040005, - 0x000007e3,0x61726170,0x0000006d,0x00040005,0x000007e4,0x61726170,0x0000006d,0x00040005, - 0x000007ea,0x61726170,0x0000006d,0x00040005,0x000007ed,0x61726170,0x0000006d,0x00070005, - 0x000007f0,0x77654e66,0x6b636f4c,0x65746e49,0x7469736e,0x00000079,0x00040005,0x000007f1, - 0x61726170,0x0000006d,0x00040005,0x000007f8,0x61726170,0x0000006d,0x00040005,0x000007f9, - 0x61726170,0x0000006d,0x00040005,0x00000803,0x61726170,0x0000006d,0x00040005,0x00000804, - 0x61726170,0x0000006d,0x00040005,0x00000806,0x61726170,0x0000006d,0x00040005,0x00000807, - 0x61726170,0x0000006d,0x00070005,0x0000080a,0x66694c66,0x6d697465,0x63654465,0x73616572, - 0x00000065,0x00040005,0x00000815,0x61726170,0x0000006d,0x00040005,0x00000816,0x61726170, - 0x0000006d,0x00080005,0x00000819,0x74734566,0x74616d69,0x76556465,0x7478654e,0x6d617246, - 0x00000065,0x00040005,0x0000081f,0x61726170,0x0000006d,0x00070005,0x00000829,0x73614266, - 0x63634165,0x6c756d75,0x6f697461,0x0000006e,0x00040005,0x00000830,0x61726170,0x0000006d, - 0x00040005,0x00000831,0x61726170,0x0000006d,0x00040005,0x00000833,0x61726170,0x0000006d, - 0x00040005,0x00000835,0x61726170,0x0000006d,0x00040005,0x00000837,0x61726170,0x0000006d, - 0x00040005,0x00000838,0x61726170,0x0000006d,0x00040005,0x0000083a,0x61726170,0x0000006d, - 0x00040005,0x0000083c,0x61726170,0x0000006d,0x00040005,0x00000842,0x55724866,0x00000076, - 0x00040005,0x00000855,0x61726170,0x0000006d,0x00040005,0x00000858,0x61726170,0x0000006d, - 0x00040005,0x00000859,0x61726170,0x0000006d,0x00040005,0x0000085c,0x61726170,0x0000006d, - 0x00040005,0x0000085e,0x61726170,0x0000006d,0x00040005,0x00000862,0x61726170,0x0000006d, - 0x00040005,0x00000867,0x61726170,0x0000006d,0x00080005,0x0000086b,0x6d754c66,0x736e4961, - 0x69626174,0x7974696c,0x485f7655,0x00000057,0x00040005,0x0000086e,0x61726170,0x0000006d, - 0x00040005,0x00000870,0x61726170,0x0000006d,0x00040005,0x00000871,0x61726170,0x0000006d, - 0x00040005,0x00000873,0x61726170,0x0000006d,0x00070005,0x00000877,0x72614666,0x73656874, - 0x70654474,0x76556874,0x00000000,0x00040005,0x0000087c,0x61726170,0x0000006d,0x00040005, - 0x0000087f,0x61726170,0x0000006d,0x00040005,0x00000880,0x61726170,0x0000006d,0x00040005, - 0x00000882,0x61726170,0x0000006d,0x00080005,0x00000890,0x6c694466,0x64657461,0x63616552, - 0x65766974,0x6b73614d,0x00000073,0x00040005,0x00000891,0x61726170,0x0000006d,0x00040005, - 0x00000895,0x61726170,0x0000006d,0x00040005,0x0000089a,0x61726170,0x0000006d,0x00040005, - 0x0000089f,0x61726170,0x0000006d,0x00040005,0x000008a4,0x61726170,0x0000006d,0x00040005, - 0x000008ba,0x61726170,0x0000736d,0x00040005,0x000008bb,0x61746164,0x00000000,0x00040005, - 0x000008bc,0x61726170,0x0000006d,0x00040005,0x000008be,0x61726170,0x0000006d,0x00040005, - 0x000008c0,0x61726170,0x0000006d,0x00040005,0x000008d0,0x61726170,0x0000006d,0x00040005, - 0x000008d4,0x61726170,0x0000006d,0x00040005,0x000008d6,0x61726170,0x0000006d,0x00040005, - 0x000008db,0x61726170,0x0000006d,0x00040005,0x000008e0,0x61726170,0x0000006d,0x00040005, - 0x000008e5,0x61726170,0x0000006d,0x00040005,0x000008ea,0x61726170,0x0000006d,0x00040005, - 0x000008f4,0x61726170,0x0000006d,0x00040005,0x000008f7,0x61726170,0x0000006d,0x00040005, - 0x00000902,0x61726170,0x0000006d,0x00040005,0x00000904,0x61726170,0x0000006d,0x00040005, - 0x00000906,0x61726170,0x0000006d,0x00040005,0x00000908,0x61726170,0x0000006d,0x00040005, - 0x0000090c,0x61726170,0x0000006d,0x00040005,0x0000090e,0x61726170,0x0000006d,0x00080005, - 0x00000912,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005, - 0x00000916,0x61726170,0x0000006d,0x00060005,0x0000091a,0x6f505f73,0x43746e69,0x706d616c, - 0x00000000,0x00060005,0x0000091b,0x75635f72,0x6e657272,0x756c5f74,0x0000616d,0x00060005, - 0x0000091c,0x616c5f72,0x6f7a636e,0x756c5f73,0x00000074,0x00030047,0x00000194,0x00000002, - 0x00050048,0x00000194,0x00000000,0x00000023,0x00000000,0x00050048,0x00000194,0x00000001, - 0x00000023,0x00000008,0x00050048,0x00000194,0x00000002,0x00000023,0x00000010,0x00050048, - 0x00000194,0x00000003,0x00000023,0x00000018,0x00050048,0x00000194,0x00000004,0x00000023, - 0x00000020,0x00050048,0x00000194,0x00000005,0x00000023,0x00000028,0x00050048,0x00000194, - 0x00000006,0x00000023,0x00000030,0x00050048,0x00000194,0x00000007,0x00000023,0x00000040, - 0x00050048,0x00000194,0x00000008,0x00000023,0x00000048,0x00050048,0x00000194,0x00000009, - 0x00000023,0x00000050,0x00050048,0x00000194,0x0000000a,0x00000023,0x00000058,0x00050048, - 0x00000194,0x0000000b,0x00000023,0x00000060,0x00050048,0x00000194,0x0000000c,0x00000023, - 0x00000068,0x00050048,0x00000194,0x0000000d,0x00000023,0x0000006c,0x00050048,0x00000194, - 0x0000000e,0x00000023,0x00000070,0x00050048,0x00000194,0x0000000f,0x00000023,0x00000074, - 0x00050048,0x00000194,0x00000010,0x00000023,0x00000078,0x00050048,0x00000194,0x00000011, - 0x00000023,0x0000007c,0x00050048,0x00000194,0x00000012,0x00000023,0x00000080,0x00050048, - 0x00000194,0x00000013,0x00000023,0x00000084,0x00050048,0x00000194,0x00000014,0x00000023, - 0x00000088,0x00050048,0x00000194,0x00000015,0x00000023,0x0000008c,0x00050048,0x00000194, - 0x00000016,0x00000023,0x00000090,0x00040047,0x00000196,0x00000021,0x0000000c,0x00040047, - 0x00000196,0x00000022,0x00000000,0x00040047,0x000001ce,0x00000021,0x00000008,0x00040047, - 0x000001ce,0x00000022,0x00000000,0x00040047,0x000001d5,0x00000021,0x00000003,0x00040047, - 0x000001d5,0x00000022,0x00000000,0x00030047,0x000001dd,0x00000019,0x00040047,0x000001dd, - 0x00000021,0x00000009,0x00040047,0x000001dd,0x00000022,0x00000000,0x00030047,0x000001e3, - 0x00000019,0x00040047,0x000001e3,0x00000021,0x0000000a,0x00040047,0x000001e3,0x00000022, - 0x00000000,0x00040047,0x000001eb,0x00000021,0x00000005,0x00040047,0x000001eb,0x00000022, - 0x00000000,0x00040047,0x000001f3,0x00000021,0x000003e9,0x00040047,0x000001f3,0x00000022, - 0x00000000,0x00040047,0x000001fe,0x00000021,0x00000007,0x00040047,0x000001fe,0x00000022, - 0x00000000,0x00040047,0x00000209,0x00000021,0x0000000b,0x00040047,0x00000209,0x00000022, - 0x00000000,0x00040047,0x00000214,0x00000021,0x00000002,0x00040047,0x00000214,0x00000022, - 0x00000000,0x00040047,0x0000021c,0x00000021,0x00000000,0x00040047,0x0000021c,0x00000022, - 0x00000000,0x00040047,0x00000228,0x00000021,0x00000001,0x00040047,0x00000228,0x00000022, - 0x00000000,0x00040047,0x00000912,0x0000000b,0x0000001c,0x00040047,0x0000091a,0x00000021, - 0x000003e8,0x00040047,0x0000091a,0x00000022,0x00000000,0x00040047,0x0000091b,0x00000021, - 0x00000006,0x00040047,0x0000091b,0x00000022,0x00000000,0x00040047,0x0000091c,0x00000021, - 0x00000004,0x00040047,0x0000091c,0x00000022,0x00000000,0x00040047,0x00000923,0x0000000b, - 0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006, - 0x00000020,0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008,0x00000006, - 0x00000007,0x00000007,0x00000007,0x00040017,0x0000000e,0x00000006,0x00000003,0x00040020, - 0x0000000f,0x00000007,0x0000000e,0x00060021,0x00000010,0x0000000e,0x0000000f,0x0000000f, - 0x00000007,0x00040021,0x00000016,0x00000006,0x00000007,0x00040017,0x0000001a,0x00000006, - 0x00000002,0x00040020,0x0000001b,0x00000007,0x0000001a,0x00040021,0x0000001c,0x0000001a, - 0x0000001b,0x00050021,0x00000020,0x00000006,0x00000007,0x00000007,0x00050021,0x00000025, - 0x0000001a,0x0000001b,0x0000001b,0x00050021,0x0000002a,0x0000000e,0x0000000f,0x0000000f, - 0x00040017,0x0000002f,0x00000006,0x00000004,0x00040020,0x00000030,0x00000007,0x0000002f, - 0x00050021,0x00000031,0x0000002f,0x00000030,0x00000030,0x00040015,0x00000036,0x00000020, - 0x00000001,0x00040020,0x00000037,0x00000007,0x00000036,0x00050021,0x00000038,0x00000036, - 0x00000037,0x00000037,0x00040017,0x00000055,0x00000036,0x00000002,0x00030021,0x00000056, - 0x00000055,0x00030021,0x0000005f,0x0000001a,0x00030021,0x00000064,0x00000006,0x00040020, - 0x0000006d,0x00000007,0x00000055,0x00040021,0x0000006e,0x0000000e,0x0000006d,0x00040021, - 0x00000072,0x0000002f,0x0000006d,0x00050021,0x00000076,0x00000002,0x0000006d,0x00000030, - 0x00050021,0x0000007b,0x00000002,0x0000006d,0x0000000f,0x00040021,0x00000082,0x00000006, - 0x0000001b,0x00040021,0x00000089,0x00000006,0x0000006d,0x00050021,0x0000008d,0x00000002, - 0x0000006d,0x00000007,0x00040021,0x00000092,0x0000001a,0x0000006d,0x00040021,0x00000098, - 0x0000002f,0x0000001b,0x0007001e,0x0000009f,0x0000000e,0x0000000e,0x0000000e,0x0000000e, - 0x00000006,0x00040020,0x000000a0,0x00000007,0x0000009f,0x00060021,0x000000a1,0x00000002, - 0x000000a0,0x0000000e,0x00000006,0x00020014,0x000000a7,0x00040020,0x000000a8,0x00000007, - 0x000000a7,0x00070021,0x000000a9,0x00000002,0x000000a8,0x000000a0,0x0000000e,0x00000006, - 0x00040021,0x000000b0,0x00000002,0x000000a0,0x00040021,0x000000b4,0x0000000e,0x0000000f, - 0x00040021,0x000000c1,0x000000a7,0x0000001b,0x00060021,0x000000c5,0x00000055,0x0000006d, - 0x0000006d,0x0000006d,0x00060021,0x000000cb,0x0000001a,0x0000001b,0x0000006d,0x0000006d, - 0x00050021,0x000000d1,0x000000a7,0x0000006d,0x0000006d,0x00080021,0x000000e2,0x0000002f, - 0x00000030,0x00000030,0x00000030,0x00000030,0x00000007,0x0012001e,0x000000ea,0x0000002f, + 0x31662d31,0x00003b31,0x00040005,0x0000012e,0x61726170,0x0000736d,0x00040005,0x0000012f, + 0x61746164,0x00000000,0x00370005,0x00000134,0x706d6f43,0x42657475,0x41657361,0x6d756363, + 0x74616c75,0x576e6f69,0x68676965,0x74732874,0x74637572,0x6363412d,0x6c756d75,0x6f697461, + 0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32, + 0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166, + 0x31622d31,0x74733b31,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x74614473, + 0x74732d61,0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33, + 0x66762d33,0x66762d33,0x31662d33,0x66762d31,0x31662d33,0x3366762d,0x2d31662d,0x662d3166, + 0x003b3131,0x00040005,0x00000132,0x61726170,0x0000736d,0x00040005,0x00000133,0x61746164, + 0x00000000,0x00340005,0x0000013a,0x74696e49,0x73736150,0x61746144,0x32697628,0x7274733b, + 0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172, + 0x3269762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x2d31662d,0x662d3166, + 0x31662d31,0x2d31662d,0x662d3166,0x31622d31,0x3131622d,0x7274733b,0x2d746375,0x75636341, + 0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x7274732d,0x2d746375,0x74636552,0x63696669, + 0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366762d, + 0x2d31662d,0x2d336676,0x662d3166,0x31662d31,0x00003b31,0x00050005,0x00000137,0x48785069, + 0x736f5072,0x00000000,0x00040005,0x00000138,0x61726170,0x0000736d,0x00040005,0x00000139, + 0x61746164,0x00000000,0x00060005,0x0000013e,0x75636341,0x616c756d,0x76286574,0x003b3269, + 0x00050005,0x0000013d,0x48785069,0x736f5072,0x00000000,0x00070005,0x0000018e,0x53466263, + 0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x0000018e,0x00000000,0x6e655269, + 0x53726564,0x00657a69,0x000a0006,0x0000018e,0x00000001,0x65725069,0x756f6976,0x61724673, + 0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x0000018e,0x00000002,0x73705569, + 0x656c6163,0x657a6953,0x00000000,0x000a0006,0x0000018e,0x00000003,0x65725069,0x756f6976, + 0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x0000018e,0x00000004, + 0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x0000018e,0x00000005,0x78614d69, + 0x63737055,0x53656c61,0x00657a69,0x00080006,0x0000018e,0x00000006,0x76654466,0x54656369, + 0x6569566f,0x70654477,0x00006874,0x00050006,0x0000018e,0x00000007,0x74694a66,0x00726574, + 0x00090006,0x0000018e,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474, + 0x00000000,0x00080006,0x0000018e,0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372, + 0x0000656c,0x00080006,0x0000018e,0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463, + 0x00000000,0x000b0006,0x0000018e,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72, + 0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x0000018e,0x0000000c,0x6e615466, + 0x666c6148,0x00564f46,0x00090006,0x0000018e,0x0000000d,0x74694a66,0x53726574,0x65757165, + 0x4c65636e,0x74676e65,0x00000068,0x00060006,0x0000018e,0x0000000e,0x6c654466,0x69546174, + 0x0000656d,0x00080006,0x0000018e,0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f, + 0x00000065,0x000a0006,0x0000018e,0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d, + 0x61467372,0x726f7463,0x00000000,0x00060006,0x0000018e,0x00000011,0x61724666,0x6e49656d, + 0x00786564,0x00070006,0x0000018e,0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74, + 0x00080006,0x0000018e,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c, + 0x00080006,0x0000018e,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61, + 0x000a0006,0x0000018e,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465, + 0x61724672,0x0000656d,0x000b0006,0x0000018e,0x00000016,0x6e694d66,0x6f736944,0x756c6363, + 0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x00000190,0x53466263, + 0x70553352,0x6c616373,0x00007265,0x00080005,0x000001c8,0x6e695f72,0x5f747570,0x6f6c6f63, + 0x696a5f72,0x72657474,0x00006465,0x00090005,0x000001cf,0x6e695f72,0x6e726574,0x755f6c61, + 0x61637370,0x5f64656c,0x6f6c6f63,0x00000072,0x00090005,0x000001d7,0x695f7772,0x7265746e, + 0x5f6c616e,0x63737075,0x64656c61,0x6c6f635f,0x0000726f,0x00070005,0x000001dd,0x755f7772, + 0x61637370,0x5f64656c,0x7074756f,0x00007475,0x00080005,0x000001e5,0x61665f72,0x65687472, + 0x645f7473,0x68747065,0x70696d5f,0x00000031,0x00060005,0x000001ed,0x694c5f73,0x7261656e, + 0x6d616c43,0x00000070,0x00070005,0x000001f8,0x756c5f72,0x695f616d,0x6174736e,0x696c6962, + 0x00007974,0x00060005,0x00000203,0x6e5f7772,0x6c5f7765,0x736b636f,0x00000000,0x00090005, + 0x0000020e,0x69645f72,0x6574616c,0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000, + 0x00050005,0x00000215,0x6f707865,0x65727573,0x00000000,0x00070005,0x00000216,0x6e695f72, + 0x5f747570,0x6f707865,0x65727573,0x00000000,0x00090005,0x00000222,0x69645f72,0x6574616c, + 0x65725f64,0x69746361,0x6d5f6576,0x736b7361,0x00000000,0x00060005,0x00000234,0x67696577, + 0x64657468,0x706d6153,0x0000656c,0x00040005,0x00000240,0x61726170,0x0000006d,0x00040005, + 0x00000245,0x61726170,0x0000006d,0x00040005,0x00000248,0x61726170,0x0000006d,0x00040005, + 0x0000024b,0x61726170,0x0000006d,0x00040005,0x0000024e,0x61726170,0x0000006d,0x00060005, + 0x00000251,0x67696577,0x64657468,0x706d6153,0x0000656c,0x00040005,0x0000027d,0x44647473, + 0x00007665,0x00040005,0x0000028a,0x62675266,0x00000000,0x00040005,0x000002a6,0x6f435966, + 0x00006743,0x00040005,0x000002e2,0x75736572,0x0000746c,0x00040005,0x000002e9,0x61726170, + 0x0000006d,0x00040005,0x000002ec,0x61726170,0x0000006d,0x00040005,0x000002ee,0x61726170, + 0x0000006d,0x00040005,0x000002ef,0x61726170,0x0000006d,0x00040005,0x000002f5,0x61726170, + 0x0000006d,0x00040005,0x000002f8,0x61726170,0x0000006d,0x00040005,0x000002fa,0x61726170, + 0x0000006d,0x00040005,0x000002fb,0x61726170,0x0000006d,0x00060005,0x00000301,0x6d615366, + 0x4c656c70,0x7461636f,0x006e6f69,0x00070005,0x00000306,0x616c4366,0x6465706d,0x61636f4c, + 0x6e6f6974,0x00000000,0x00040005,0x0000030b,0x61726170,0x0000006d,0x00040005,0x0000030d, + 0x61726170,0x0000006d,0x00040005,0x0000030f,0x61726170,0x0000006d,0x00040005,0x00000310, + 0x61726170,0x0000006d,0x00050005,0x00000312,0x616c4366,0x6465706d,0x00007655,0x00040005, + 0x00000341,0x61726170,0x0000006d,0x00040005,0x00000342,0x61726170,0x0000006d,0x00040005, + 0x00000344,0x61726170,0x0000006d,0x00030005,0x00000349,0x00000061,0x00030005,0x0000034e, + 0x00000062,0x00040005,0x00000360,0x61726170,0x0000006d,0x00040005,0x00000362,0x61726170, + 0x0000006d,0x00040005,0x00000364,0x61726170,0x0000006d,0x00050005,0x00000369,0x69655766, + 0x30746867,0x00000000,0x00040005,0x0000036d,0x61726170,0x0000006d,0x00050005,0x0000036f, + 0x69655766,0x31746867,0x00000000,0x00040005,0x00000373,0x61726170,0x0000006d,0x00050005, + 0x00000375,0x69655766,0x32746867,0x00000000,0x00040005,0x00000378,0x61726170,0x0000006d, + 0x00050005,0x0000037a,0x69655766,0x33746867,0x00000000,0x00040005,0x0000037d,0x61726170, + 0x0000006d,0x00050005,0x00000399,0x6c6f4366,0x3058726f,0x00000000,0x00040005,0x0000039a, + 0x61726170,0x0000006d,0x00040005,0x0000039d,0x61726170,0x0000006d,0x00040005,0x000003a0, + 0x61726170,0x0000006d,0x00040005,0x000003a3,0x61726170,0x0000006d,0x00040005,0x000003a6, + 0x61726170,0x0000006d,0x00050005,0x000003aa,0x6c6f4366,0x3158726f,0x00000000,0x00040005, + 0x000003ad,0x61726170,0x0000006d,0x00040005,0x000003b0,0x61726170,0x0000006d,0x00040005, + 0x000003b3,0x61726170,0x0000006d,0x00040005,0x000003b6,0x61726170,0x0000006d,0x00040005, + 0x000003b9,0x61726170,0x0000006d,0x00050005,0x000003bd,0x6c6f4366,0x3258726f,0x00000000, + 0x00040005,0x000003c1,0x61726170,0x0000006d,0x00040005,0x000003c4,0x61726170,0x0000006d, + 0x00040005,0x000003c7,0x61726170,0x0000006d,0x00040005,0x000003ca,0x61726170,0x0000006d, + 0x00040005,0x000003cd,0x61726170,0x0000006d,0x00050005,0x000003d1,0x6c6f4366,0x3358726f, + 0x00000000,0x00040005,0x000003d4,0x61726170,0x0000006d,0x00040005,0x000003d7,0x61726170, + 0x0000006d,0x00040005,0x000003da,0x61726170,0x0000006d,0x00040005,0x000003dd,0x61726170, + 0x0000006d,0x00040005,0x000003e0,0x61726170,0x0000006d,0x00050005,0x000003e4,0x6c6f4366, + 0x5958726f,0x00000000,0x00040005,0x000003e5,0x61726170,0x0000006d,0x00040005,0x000003e7, + 0x61726170,0x0000006d,0x00040005,0x000003e9,0x61726170,0x0000006d,0x00040005,0x000003eb, + 0x61726170,0x0000006d,0x00040005,0x000003ed,0x61726170,0x0000006d,0x00070005,0x000003f4, + 0x72654466,0x69676e69,0x6153676e,0x656c706d,0x00000073,0x00060005,0x000003fe,0x72654466, + 0x69676e69,0x694d676e,0x0000006e,0x00060005,0x00000401,0x72654466,0x69676e69,0x614d676e, + 0x00000078,0x00060005,0x00000404,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005, + 0x0000040d,0x61726170,0x0000006d,0x00040005,0x0000040f,0x61726170,0x0000006d,0x00040005, + 0x00000414,0x61726170,0x0000006d,0x00040005,0x00000416,0x61726170,0x0000006d,0x00040005, + 0x00000423,0x75736572,0x0000746c,0x00040005,0x0000042a,0x61726170,0x0000006d,0x00040005, + 0x0000042d,0x61726170,0x0000006d,0x00040005,0x0000042f,0x61726170,0x0000006d,0x00040005, + 0x00000430,0x61726170,0x0000006d,0x00040005,0x00000436,0x61726170,0x0000006d,0x00040005, + 0x00000439,0x61726170,0x0000006d,0x00040005,0x0000043b,0x61726170,0x0000006d,0x00040005, + 0x0000043c,0x61726170,0x0000006d,0x00080005,0x00000448,0x63725366,0x706d6153,0x664f656c, + 0x74657366,0x73616942,0x00006465,0x00060005,0x0000044d,0x6d615366,0x57656c70,0x68676965, + 0x00000074,0x00040005,0x00000451,0x61726170,0x0000006d,0x00060005,0x00000456,0x72654b66, + 0x536c656e,0x42657a69,0x00736169,0x00040005,0x0000045f,0x61726170,0x0000006d,0x00040005, + 0x00000460,0x61726170,0x0000006d,0x00040005,0x00000465,0x62675266,0x00000000,0x00040005, + 0x00000467,0x61726170,0x0000006d,0x00040005,0x0000046a,0x61726170,0x0000006d,0x00040005, + 0x0000046b,0x61726170,0x0000006d,0x00060005,0x0000046f,0x65725066,0x65726170,0x6f435964, + 0x00006743,0x00040005,0x00000470,0x61726170,0x0000006d,0x00060005,0x00000476,0x74734466, + 0x7074754f,0x6f507475,0x00000073,0x00060005,0x0000047a,0x63725366,0x7074754f,0x6f507475, + 0x00000073,0x00060005,0x0000047e,0x63725369,0x75706e49,0x736f5074,0x00000000,0x00070005, + 0x00000482,0x63725366,0x696a6e55,0x72657474,0x6f506465,0x00000073,0x00070005,0x00000488, + 0x73614266,0x6d615365,0x4f656c70,0x65736666,0x00000074,0x00050005,0x0000048c,0x7366666f, + 0x4c547465,0x00000000,0x00050005,0x0000049d,0x696c4662,0x776f5270,0x00000000,0x00050005, + 0x000004a3,0x696c4662,0x6c6f4370,0x00000000,0x00050005,0x000004a9,0x66664f66,0x54746573, + 0x0000004c,0x00070005,0x000004ac,0x49734962,0x6974696e,0x61536c61,0x656c706d,0x00000000, + 0x00060005,0x000004af,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00030005,0x000004b0, + 0x00776f72,0x00030005,0x000004b8,0x006c6f63,0x00060005,0x000004c0,0x6d615369,0x43656c70, + 0x6f526c6f,0x00000077,0x00060005,0x000004d4,0x63725369,0x706d6153,0x6f50656c,0x00000073, + 0x00060005,0x000004da,0x6d615369,0x43656c70,0x64726f6f,0x00000000,0x00040005,0x000004dc, + 0x61726170,0x0000006d,0x00040005,0x000004de,0x61726170,0x0000006d,0x00040005,0x000004df, + 0x61726170,0x0000006d,0x00050005,0x000004e4,0x6d615366,0x73656c70,0x00000000,0x00040005, + 0x000004e6,0x61726170,0x0000006d,0x00060005,0x000004f0,0x72654b66,0x426c656e,0x4d736169, + 0x00007861,0x00040005,0x000004f1,0x61726170,0x0000006d,0x00060005,0x000004f5,0x72654b66, + 0x426c656e,0x4d736169,0x00006e69,0x00040005,0x000004fa,0x61726170,0x0000006d,0x00040005, + 0x000004fb,0x61726170,0x0000006d,0x00070005,0x000004fd,0x72654b66,0x426c656e,0x57736169, + 0x68676965,0x00000074,0x00040005,0x00000507,0x61726170,0x0000006d,0x00040005,0x00000509, + 0x61726170,0x0000006d,0x00040005,0x0000050a,0x61726170,0x0000006d,0x00040005,0x0000050c, + 0x61726170,0x0000006d,0x00040005,0x0000050d,0x61726170,0x0000006d,0x00050005,0x0000050f, + 0x72654b66,0x426c656e,0x00736169,0x00040005,0x00000510,0x61726170,0x0000006d,0x00040005, + 0x00000512,0x61726170,0x0000006d,0x00040005,0x00000514,0x61726170,0x0000006d,0x00030005, + 0x00000517,0x00776f72,0x00030005,0x0000051f,0x006c6f63,0x00060005,0x00000527,0x706d6173, + 0x6f43656c,0x776f526c,0x00000000,0x00040005,0x0000053b,0x66664f66,0x00746573,0x00070005, + 0x00000540,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005,0x00000544, + 0x63725369,0x706d6153,0x6f50656c,0x00000073,0x00060005,0x0000054a,0x536e4f66,0x65657263, + 0x6361466e,0x00726f74,0x00040005,0x0000054d,0x61726170,0x0000006d,0x00040005,0x0000054e, + 0x61726170,0x0000006d,0x00060005,0x00000555,0x6d615366,0x57656c70,0x68676965,0x00000074, + 0x00040005,0x00000557,0x61726170,0x0000006d,0x00040005,0x00000559,0x61726170,0x0000006d, + 0x00070005,0x0000056b,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00007153,0x00070005, + 0x0000056f,0x786f4266,0x706d6153,0x6557656c,0x74686769,0x00000000,0x00060005,0x00000576, + 0x696e4962,0x6c616974,0x706d6153,0x0000656c,0x00040005,0x00000580,0x61726170,0x0000006d, + 0x00040005,0x00000582,0x61726170,0x0000006d,0x00040005,0x0000058e,0x61726170,0x0000006d, + 0x00040005,0x000005ad,0x61726170,0x0000006d,0x00040005,0x000005b0,0x61726170,0x0000006d, + 0x00040005,0x000005be,0x61726170,0x0000006d,0x00040005,0x000005c3,0x706d6153,0x0073656c, + 0x00040005,0x000005c5,0x61726170,0x0000006d,0x00040005,0x000005c7,0x61726170,0x0000006d, + 0x00040005,0x000005c8,0x61726170,0x0000006d,0x00040005,0x000005cb,0x61726170,0x0000006d, + 0x00040005,0x000005cf,0x61726170,0x0000006d,0x00040005,0x000005d1,0x61726170,0x0000006d, + 0x00040005,0x000005d2,0x61726170,0x0000006d,0x00040005,0x000005d5,0x61726170,0x0000006d, + 0x00040005,0x000005d9,0x61726170,0x0000006d,0x00040005,0x000005db,0x61726170,0x0000006d, + 0x00040005,0x000005dc,0x61726170,0x0000006d,0x00040005,0x000005df,0x61726170,0x0000006d, + 0x00040005,0x000005e3,0x61726170,0x0000006d,0x00040005,0x000005e5,0x61726170,0x0000006d, + 0x00040005,0x000005e6,0x61726170,0x0000006d,0x00040005,0x000005e9,0x61726170,0x0000006d, + 0x00040005,0x000005ed,0x61726170,0x0000006d,0x00040005,0x000005ef,0x61726170,0x0000006d, + 0x00040005,0x000005f0,0x61726170,0x0000006d,0x00040005,0x000005f3,0x61726170,0x0000006d, + 0x00040005,0x000005f6,0x61726170,0x0000006d,0x00040005,0x000005f8,0x61726170,0x0000006d, + 0x00040005,0x000005f9,0x61726170,0x0000006d,0x00040005,0x000005fc,0x61726170,0x0000006d, + 0x00040005,0x00000600,0x61726170,0x0000006d,0x00040005,0x00000602,0x61726170,0x0000006d, + 0x00040005,0x00000603,0x61726170,0x0000006d,0x00040005,0x00000606,0x61726170,0x0000006d, + 0x00040005,0x0000060a,0x61726170,0x0000006d,0x00040005,0x0000060c,0x61726170,0x0000006d, + 0x00040005,0x0000060d,0x61726170,0x0000006d,0x00040005,0x00000610,0x61726170,0x0000006d, + 0x00040005,0x00000614,0x61726170,0x0000006d,0x00040005,0x00000616,0x61726170,0x0000006d, + 0x00040005,0x00000617,0x61726170,0x0000006d,0x00040005,0x0000061a,0x61726170,0x0000006d, + 0x00040005,0x0000061e,0x61726170,0x0000006d,0x00040005,0x00000620,0x61726170,0x0000006d, + 0x00040005,0x00000621,0x61726170,0x0000006d,0x00040005,0x00000624,0x61726170,0x0000006d, + 0x00040005,0x00000628,0x61726170,0x0000006d,0x00040005,0x0000062a,0x61726170,0x0000006d, + 0x00040005,0x0000062b,0x61726170,0x0000006d,0x00040005,0x0000062e,0x61726170,0x0000006d, + 0x00040005,0x00000632,0x61726170,0x0000006d,0x00040005,0x00000634,0x61726170,0x0000006d, + 0x00040005,0x00000635,0x61726170,0x0000006d,0x00040005,0x00000638,0x61726170,0x0000006d, + 0x00040005,0x0000063c,0x61726170,0x0000006d,0x00040005,0x0000063e,0x61726170,0x0000006d, + 0x00040005,0x0000063f,0x61726170,0x0000006d,0x00040005,0x00000642,0x61726170,0x0000006d, + 0x00040005,0x00000646,0x61726170,0x0000006d,0x00040005,0x00000648,0x61726170,0x0000006d, + 0x00040005,0x00000649,0x61726170,0x0000006d,0x00040005,0x0000064c,0x61726170,0x0000006d, + 0x00040005,0x00000650,0x61726170,0x0000006d,0x00040005,0x00000652,0x61726170,0x0000006d, + 0x00040005,0x00000653,0x61726170,0x0000006d,0x00040005,0x00000656,0x61726170,0x0000006d, + 0x00040005,0x0000065a,0x61726170,0x0000006d,0x00040005,0x0000065c,0x61726170,0x0000006d, + 0x00040005,0x0000065d,0x61726170,0x0000006d,0x00040005,0x00000660,0x61726170,0x0000006d, + 0x00050005,0x00000666,0x53785066,0x6c706d61,0x00000065,0x00040005,0x0000066c,0x46785066, + 0x00636172,0x00040005,0x0000066d,0x61726170,0x0000006d,0x00040005,0x00000674,0x61726170, + 0x0000006d,0x00040005,0x00000675,0x61726170,0x0000006d,0x00040005,0x00000679,0x61726170, + 0x0000006d,0x00040005,0x0000067a,0x61726170,0x0000006d,0x00040005,0x00000681,0x61726170, + 0x0000006d,0x00040005,0x00000682,0x61726170,0x0000006d,0x00040005,0x00000686,0x61726170, + 0x0000006d,0x00040005,0x00000687,0x61726170,0x0000006d,0x00050005,0x0000068a,0x53785069, + 0x6c706d61,0x00000065,0x00050005,0x0000068e,0x6c6f4366,0x5958726f,0x00000000,0x00040005, + 0x0000068f,0x61726170,0x0000006d,0x00040005,0x00000691,0x61726170,0x0000006d,0x00040005, + 0x00000694,0x61726170,0x0000006d,0x00040005,0x00000695,0x61726170,0x0000006d,0x00080005, + 0x0000069b,0x6c694466,0x64657461,0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005, + 0x000006a1,0x61726170,0x0000006d,0x00040005,0x000006ac,0x61726170,0x0000006d,0x00070005, + 0x000006b1,0x70655266,0x656a6f72,0x64657463,0x74736948,0x0079726f,0x00040005,0x000006b3, + 0x61726170,0x0000006d,0x00040005,0x000006b5,0x61726170,0x0000006d,0x00040005,0x000006c4, + 0x61726170,0x0000006d,0x00040005,0x000006da,0x61726170,0x0000006d,0x00040005,0x000006db, + 0x61726170,0x0000006d,0x00040005,0x000006de,0x706c4166,0x00006168,0x00040005,0x000006e4, + 0x61726170,0x0000006d,0x00040005,0x000006e6,0x61726170,0x0000006d,0x00040005,0x000006e9, + 0x61726170,0x0000006d,0x00040005,0x000006ec,0x61726170,0x0000006d,0x00040005,0x000006f0, + 0x61726170,0x0000006d,0x00070005,0x000006f5,0x566b3466,0x636f6c65,0x46797469,0x6f746361, + 0x00000072,0x00040005,0x000006f9,0x61726170,0x0000006d,0x00060005,0x000006fb,0x73694466, + 0x636e6174,0x63614665,0x00726f74,0x00040005,0x00000700,0x61726170,0x0000006d,0x00070005, + 0x00000702,0x63634166,0x6c756d75,0x6f697461,0x6361466e,0x00726f74,0x00060005,0x00000705, + 0x61655266,0x76697463,0x63614665,0x00726f74,0x00040005,0x00000706,0x61726170,0x0000006d, + 0x00040005,0x00000708,0x61726170,0x0000006d,0x00080005,0x0000070a,0x61685366,0x676e6964, + 0x6e616843,0x61466567,0x726f7463,0x00000000,0x00050005,0x0000070c,0x786f4266,0x6c616353, + 0x00005465,0x00040005,0x0000070d,0x61726170,0x0000006d,0x00040005,0x0000070f,0x61726170, + 0x0000006d,0x00040005,0x00000712,0x61726170,0x0000006d,0x00040005,0x00000714,0x61726170, + 0x0000006d,0x00040005,0x00000716,0x61726170,0x0000006d,0x00040005,0x00000718,0x61726170, + 0x0000006d,0x00040005,0x0000071a,0x61726170,0x0000006d,0x00040005,0x0000071c,0x61726170, + 0x0000006d,0x00050005,0x0000071e,0x786f4266,0x6c616353,0x00000065,0x00040005,0x00000720, + 0x61726170,0x0000006d,0x00040005,0x00000721,0x61726170,0x0000006d,0x00040005,0x00000722, + 0x61726170,0x0000006d,0x00060005,0x00000725,0x61635366,0x4264656c,0x6556786f,0x00000063, + 0x00080005,0x0000072d,0x616c4366,0x6465706d,0x6c616353,0x6f426465,0x63655678,0x00000000, + 0x00040005,0x00000730,0x61726170,0x0000006d,0x00040005,0x00000732,0x61726170,0x0000006d, + 0x00090005,0x00000734,0x61725466,0x6f66736e,0x64656d72,0x74736948,0x4379726f,0x726f6c6f, + 0x00000000,0x00080005,0x00000741,0x616c4366,0x6465706d,0x74736948,0x4379726f,0x726f6c6f, + 0x00000000,0x00090005,0x00000744,0x6e694666,0x6c436c61,0x65706d61,0x73694864,0x79726f74, + 0x6f6c6f43,0x00000072,0x00080005,0x0000074b,0x73694866,0x79726f74,0x746e6f43,0x75626972, + 0x6e6f6974,0x00000000,0x00040005,0x0000074c,0x61726170,0x0000006d,0x00040005,0x0000074e, + 0x61726170,0x0000006d,0x00040005,0x00000757,0x61726170,0x0000006d,0x00040005,0x0000075a, + 0x61726170,0x0000006d,0x00040005,0x0000075c,0x61726170,0x0000006d,0x00040005,0x0000075f, + 0x61726170,0x0000006d,0x00080005,0x0000076b,0x66694c66,0x6d697465,0x63654465,0x73616572, + 0x63614665,0x00726f74,0x00040005,0x0000076c,0x61726170,0x0000006d,0x00040005,0x00000770, + 0x61726170,0x0000006d,0x00040005,0x00000773,0x61726170,0x0000006d,0x00040005,0x00000777, + 0x61726170,0x0000006d,0x00040005,0x00000778,0x61726170,0x0000006d,0x00040005,0x0000077f, + 0x61726170,0x0000006d,0x00040005,0x00000780,0x61726170,0x0000006d,0x00040005,0x00000786, + 0x61726170,0x0000006d,0x00040005,0x00000789,0x61726170,0x0000006d,0x00070005,0x0000078c, + 0x77654e66,0x6b636f4c,0x65746e49,0x7469736e,0x00000079,0x00040005,0x0000078d,0x61726170, + 0x0000006d,0x00040005,0x00000794,0x61726170,0x0000006d,0x00040005,0x00000795,0x61726170, + 0x0000006d,0x00040005,0x0000079f,0x61726170,0x0000006d,0x00040005,0x000007a0,0x61726170, + 0x0000006d,0x00040005,0x000007a2,0x61726170,0x0000006d,0x00040005,0x000007a3,0x61726170, + 0x0000006d,0x00070005,0x000007a6,0x66694c66,0x6d697465,0x63654465,0x73616572,0x00000065, + 0x00040005,0x000007b1,0x61726170,0x0000006d,0x00040005,0x000007b2,0x61726170,0x0000006d, + 0x00080005,0x000007b5,0x74734566,0x74616d69,0x76556465,0x7478654e,0x6d617246,0x00000065, + 0x00040005,0x000007bb,0x61726170,0x0000006d,0x00070005,0x000007c5,0x73614266,0x63634165, + 0x6c756d75,0x6f697461,0x0000006e,0x00040005,0x000007cc,0x61726170,0x0000006d,0x00040005, + 0x000007cd,0x61726170,0x0000006d,0x00040005,0x000007cf,0x61726170,0x0000006d,0x00040005, + 0x000007d1,0x61726170,0x0000006d,0x00040005,0x000007d3,0x61726170,0x0000006d,0x00040005, + 0x000007d4,0x61726170,0x0000006d,0x00040005,0x000007d6,0x61726170,0x0000006d,0x00040005, + 0x000007d8,0x61726170,0x0000006d,0x00040005,0x000007de,0x55724866,0x00000076,0x00040005, + 0x000007f1,0x61726170,0x0000006d,0x00040005,0x000007f4,0x61726170,0x0000006d,0x00040005, + 0x000007f5,0x61726170,0x0000006d,0x00040005,0x000007f8,0x61726170,0x0000006d,0x00040005, + 0x000007fa,0x61726170,0x0000006d,0x00040005,0x000007fe,0x61726170,0x0000006d,0x00040005, + 0x00000803,0x61726170,0x0000006d,0x00080005,0x00000807,0x6d754c66,0x736e4961,0x69626174, + 0x7974696c,0x485f7655,0x00000057,0x00040005,0x0000080a,0x61726170,0x0000006d,0x00040005, + 0x0000080c,0x61726170,0x0000006d,0x00040005,0x0000080d,0x61726170,0x0000006d,0x00040005, + 0x0000080f,0x61726170,0x0000006d,0x00070005,0x00000813,0x72614666,0x73656874,0x70654474, + 0x76556874,0x00000000,0x00040005,0x00000818,0x61726170,0x0000006d,0x00040005,0x0000081b, + 0x61726170,0x0000006d,0x00040005,0x0000081c,0x61726170,0x0000006d,0x00040005,0x0000081e, + 0x61726170,0x0000006d,0x00080005,0x0000082c,0x6c694466,0x64657461,0x63616552,0x65766974, + 0x6b73614d,0x00000073,0x00040005,0x0000082d,0x61726170,0x0000006d,0x00040005,0x00000831, + 0x61726170,0x0000006d,0x00040005,0x00000836,0x61726170,0x0000006d,0x00040005,0x0000083b, + 0x61726170,0x0000006d,0x00040005,0x00000840,0x61726170,0x0000006d,0x00040005,0x00000856, + 0x61726170,0x0000736d,0x00040005,0x00000857,0x61746164,0x00000000,0x00040005,0x00000858, + 0x61726170,0x0000006d,0x00040005,0x0000085a,0x61726170,0x0000006d,0x00040005,0x0000085c, + 0x61726170,0x0000006d,0x00040005,0x0000086c,0x61726170,0x0000006d,0x00040005,0x00000870, + 0x61726170,0x0000006d,0x00040005,0x00000872,0x61726170,0x0000006d,0x00040005,0x00000877, + 0x61726170,0x0000006d,0x00040005,0x0000087c,0x61726170,0x0000006d,0x00040005,0x00000881, + 0x61726170,0x0000006d,0x00040005,0x00000886,0x61726170,0x0000006d,0x00040005,0x00000890, + 0x61726170,0x0000006d,0x00040005,0x00000893,0x61726170,0x0000006d,0x00040005,0x0000089e, + 0x61726170,0x0000006d,0x00040005,0x000008a0,0x61726170,0x0000006d,0x00040005,0x000008a2, + 0x61726170,0x0000006d,0x00040005,0x000008a4,0x61726170,0x0000006d,0x00040005,0x000008a8, + 0x61726170,0x0000006d,0x00040005,0x000008aa,0x61726170,0x0000006d,0x00080005,0x000008ae, + 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x000008b2, + 0x61726170,0x0000006d,0x00060005,0x000008b6,0x6f505f73,0x43746e69,0x706d616c,0x00000000, + 0x00060005,0x000008b7,0x75635f72,0x6e657272,0x756c5f74,0x0000616d,0x00060005,0x000008b8, + 0x616c5f72,0x6f7a636e,0x756c5f73,0x00000074,0x00030047,0x0000018e,0x00000002,0x00050048, + 0x0000018e,0x00000000,0x00000023,0x00000000,0x00050048,0x0000018e,0x00000001,0x00000023, + 0x00000008,0x00050048,0x0000018e,0x00000002,0x00000023,0x00000010,0x00050048,0x0000018e, + 0x00000003,0x00000023,0x00000018,0x00050048,0x0000018e,0x00000004,0x00000023,0x00000020, + 0x00050048,0x0000018e,0x00000005,0x00000023,0x00000028,0x00050048,0x0000018e,0x00000006, + 0x00000023,0x00000030,0x00050048,0x0000018e,0x00000007,0x00000023,0x00000040,0x00050048, + 0x0000018e,0x00000008,0x00000023,0x00000048,0x00050048,0x0000018e,0x00000009,0x00000023, + 0x00000050,0x00050048,0x0000018e,0x0000000a,0x00000023,0x00000058,0x00050048,0x0000018e, + 0x0000000b,0x00000023,0x00000060,0x00050048,0x0000018e,0x0000000c,0x00000023,0x00000068, + 0x00050048,0x0000018e,0x0000000d,0x00000023,0x0000006c,0x00050048,0x0000018e,0x0000000e, + 0x00000023,0x00000070,0x00050048,0x0000018e,0x0000000f,0x00000023,0x00000074,0x00050048, + 0x0000018e,0x00000010,0x00000023,0x00000078,0x00050048,0x0000018e,0x00000011,0x00000023, + 0x0000007c,0x00050048,0x0000018e,0x00000012,0x00000023,0x00000080,0x00050048,0x0000018e, + 0x00000013,0x00000023,0x00000084,0x00050048,0x0000018e,0x00000014,0x00000023,0x00000088, + 0x00050048,0x0000018e,0x00000015,0x00000023,0x0000008c,0x00050048,0x0000018e,0x00000016, + 0x00000023,0x00000090,0x00040047,0x00000190,0x00000021,0x0000000c,0x00040047,0x00000190, + 0x00000022,0x00000000,0x00040047,0x000001c8,0x00000021,0x00000008,0x00040047,0x000001c8, + 0x00000022,0x00000000,0x00040047,0x000001cf,0x00000021,0x00000003,0x00040047,0x000001cf, + 0x00000022,0x00000000,0x00030047,0x000001d7,0x00000019,0x00040047,0x000001d7,0x00000021, + 0x00000009,0x00040047,0x000001d7,0x00000022,0x00000000,0x00030047,0x000001dd,0x00000019, + 0x00040047,0x000001dd,0x00000021,0x0000000a,0x00040047,0x000001dd,0x00000022,0x00000000, + 0x00040047,0x000001e5,0x00000021,0x00000005,0x00040047,0x000001e5,0x00000022,0x00000000, + 0x00040047,0x000001ed,0x00000021,0x000003e9,0x00040047,0x000001ed,0x00000022,0x00000000, + 0x00040047,0x000001f8,0x00000021,0x00000007,0x00040047,0x000001f8,0x00000022,0x00000000, + 0x00040047,0x00000203,0x00000021,0x0000000b,0x00040047,0x00000203,0x00000022,0x00000000, + 0x00040047,0x0000020e,0x00000021,0x00000002,0x00040047,0x0000020e,0x00000022,0x00000000, + 0x00040047,0x00000216,0x00000021,0x00000000,0x00040047,0x00000216,0x00000022,0x00000000, + 0x00040047,0x00000222,0x00000021,0x00000001,0x00040047,0x00000222,0x00000022,0x00000000, + 0x00040047,0x000008ae,0x0000000b,0x0000001c,0x00040047,0x000008b6,0x00000021,0x000003e8, + 0x00040047,0x000008b6,0x00000022,0x00000000,0x00040047,0x000008b7,0x00000021,0x00000006, + 0x00040047,0x000008b7,0x00000022,0x00000000,0x00040047,0x000008b8,0x00000021,0x00000004, + 0x00040047,0x000008b8,0x00000022,0x00000000,0x00040047,0x000008bf,0x0000000b,0x00000019, + 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020, + 0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008,0x00000006,0x00000007, + 0x00000007,0x00000007,0x00040017,0x0000000e,0x00000006,0x00000003,0x00040020,0x0000000f, + 0x00000007,0x0000000e,0x00060021,0x00000010,0x0000000e,0x0000000f,0x0000000f,0x00000007, + 0x00040021,0x00000016,0x00000006,0x00000007,0x00040017,0x0000001a,0x00000006,0x00000002, + 0x00040020,0x0000001b,0x00000007,0x0000001a,0x00040021,0x0000001c,0x0000001a,0x0000001b, + 0x00050021,0x00000020,0x00000006,0x00000007,0x00000007,0x00050021,0x00000025,0x0000001a, + 0x0000001b,0x0000001b,0x00050021,0x0000002a,0x0000000e,0x0000000f,0x0000000f,0x00040017, + 0x0000002f,0x00000006,0x00000004,0x00040020,0x00000030,0x00000007,0x0000002f,0x00050021, + 0x00000031,0x0000002f,0x00000030,0x00000030,0x00040015,0x00000036,0x00000020,0x00000001, + 0x00040020,0x00000037,0x00000007,0x00000036,0x00050021,0x00000038,0x00000036,0x00000037, + 0x00000037,0x00040017,0x00000055,0x00000036,0x00000002,0x00030021,0x00000056,0x00000055, + 0x00030021,0x0000005f,0x0000001a,0x00030021,0x00000064,0x00000006,0x00040020,0x0000006d, + 0x00000007,0x00000055,0x00040021,0x0000006e,0x0000000e,0x0000006d,0x00040021,0x00000072, + 0x0000002f,0x0000006d,0x00050021,0x00000076,0x00000002,0x0000006d,0x00000030,0x00050021, + 0x0000007b,0x00000002,0x0000006d,0x0000000f,0x00040021,0x00000082,0x00000006,0x0000001b, + 0x00040021,0x00000089,0x00000006,0x0000006d,0x00050021,0x0000008d,0x00000002,0x0000006d, + 0x00000007,0x00040021,0x00000092,0x0000001a,0x0000006d,0x00040021,0x00000098,0x0000002f, + 0x0000001b,0x0007001e,0x0000009f,0x0000000e,0x0000000e,0x0000000e,0x0000000e,0x00000006, + 0x00040020,0x000000a0,0x00000007,0x0000009f,0x00060021,0x000000a1,0x00000002,0x000000a0, + 0x0000000e,0x00000006,0x00020014,0x000000a7,0x00040020,0x000000a8,0x00000007,0x000000a7, + 0x00070021,0x000000a9,0x00000002,0x000000a8,0x000000a0,0x0000000e,0x00000006,0x00040021, + 0x000000b0,0x00000002,0x000000a0,0x00040021,0x000000b4,0x0000000e,0x0000000f,0x00040021, + 0x000000bb,0x000000a7,0x0000001b,0x00060021,0x000000bf,0x00000055,0x0000006d,0x0000006d, + 0x0000006d,0x00060021,0x000000c5,0x0000001a,0x0000001b,0x0000006d,0x0000006d,0x00050021, + 0x000000cb,0x000000a7,0x0000006d,0x0000006d,0x00080021,0x000000dc,0x0000002f,0x00000030, + 0x00000030,0x00000030,0x00000030,0x00000007,0x0012001e,0x000000e4,0x0000002f,0x0000002f, 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f, - 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x00040020, - 0x000000eb,0x00000007,0x000000ea,0x00050021,0x000000ec,0x0000002f,0x000000eb,0x0000001b, - 0x00050021,0x000000f6,0x00000002,0x000000a0,0x0000000f,0x00050021,0x000000fb,0x00000006, - 0x0000001b,0x00000007,0x0011001e,0x00000100,0x00000055,0x0000001a,0x0000001a,0x0000001a, - 0x0000001a,0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x000000a7,0x000000a7,0x0009001e,0x00000101,0x0000009f,0x0000000e,0x00000006, - 0x0000000e,0x00000006,0x00000006,0x00000006,0x00040020,0x00000102,0x00000007,0x00000101, - 0x00050021,0x00000103,0x00000006,0x00000100,0x00000102,0x00050021,0x0000010b,0x00000002, - 0x00000100,0x00000102,0x00050021,0x00000113,0x000000ea,0x0000006d,0x0000006d,0x00050021, - 0x00000118,0x0000002f,0x0000001b,0x0000006d,0x00050021,0x0000011d,0x0000001a,0x0000006d, - 0x0000001b,0x00040020,0x00000122,0x00000007,0x00000100,0x00040021,0x00000123,0x00000002, - 0x00000122,0x00050021,0x00000133,0x00000002,0x00000122,0x00000102,0x00060021,0x0000013c, - 0x00000002,0x0000006d,0x00000122,0x00000102,0x00040021,0x00000142,0x00000002,0x0000006d, - 0x0004002b,0x00000006,0x00000154,0x00000000,0x0004002b,0x00000006,0x00000155,0x3f800000, - 0x0019001e,0x00000194,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055, - 0x0000002f,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x00000006,0x00000006, + 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x00040020,0x000000e5, + 0x00000007,0x000000e4,0x00050021,0x000000e6,0x0000002f,0x000000e5,0x0000001b,0x00050021, + 0x000000f0,0x00000002,0x000000a0,0x0000000f,0x00050021,0x000000f5,0x00000006,0x0000001b, + 0x00000007,0x0011001e,0x000000fa,0x00000055,0x0000001a,0x0000001a,0x0000001a,0x0000001a, + 0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x000000a7,0x000000a7,0x0009001e,0x000000fb,0x0000009f,0x0000000e,0x00000006,0x0000000e, + 0x00000006,0x00000006,0x00000006,0x00040020,0x000000fc,0x00000007,0x000000fb,0x00050021, + 0x000000fd,0x00000006,0x000000fa,0x000000fc,0x00050021,0x00000105,0x00000002,0x000000fa, + 0x000000fc,0x00050021,0x0000010d,0x000000e4,0x0000006d,0x0000006d,0x00050021,0x00000112, + 0x0000002f,0x0000001b,0x0000006d,0x00050021,0x00000117,0x0000001a,0x0000006d,0x0000001b, + 0x00040020,0x0000011c,0x00000007,0x000000fa,0x00040021,0x0000011d,0x00000002,0x0000011c, + 0x00050021,0x0000012d,0x00000002,0x0000011c,0x000000fc,0x00060021,0x00000136,0x00000002, + 0x0000006d,0x0000011c,0x000000fc,0x00040021,0x0000013c,0x00000002,0x0000006d,0x0004002b, + 0x00000006,0x0000014e,0x00000000,0x0004002b,0x00000006,0x0000014f,0x3f800000,0x0019001e, + 0x0000018e,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x0000002f, + 0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x00000006,0x00000006,0x00000006, 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00040020,0x00000195,0x00000002,0x00000194,0x0004003b,0x00000195,0x00000196, - 0x00000002,0x0004002b,0x00000036,0x00000197,0x00000000,0x00040020,0x00000198,0x00000002, - 0x00000055,0x0004002b,0x00000036,0x0000019d,0x00000004,0x0004002b,0x00000036,0x000001a2, - 0x00000002,0x0004002b,0x00000036,0x000001a7,0x00000003,0x0004002b,0x00000036,0x000001ac, - 0x00000007,0x00040020,0x000001ad,0x00000002,0x0000001a,0x0004002b,0x00000036,0x000001b2, - 0x0000000a,0x0004002b,0x00000036,0x000001b7,0x0000000d,0x00040020,0x000001b8,0x00000002, - 0x00000006,0x0004002b,0x00000036,0x000001bd,0x0000000f,0x0004002b,0x00000036,0x000001c2, - 0x00000011,0x0004002b,0x00000036,0x000001c7,0x00000012,0x00090019,0x000001cc,0x00000006, - 0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001cd, - 0x00000000,0x000001cc,0x0004003b,0x000001cd,0x000001ce,0x00000000,0x0004003b,0x000001cd, - 0x000001d5,0x00000000,0x00090019,0x000001db,0x00000006,0x00000001,0x00000000,0x00000000, - 0x00000000,0x00000002,0x00000002,0x00040020,0x000001dc,0x00000000,0x000001db,0x0004003b, - 0x000001dc,0x000001dd,0x00000000,0x00090019,0x000001e1,0x00000006,0x00000001,0x00000000, - 0x00000000,0x00000000,0x00000002,0x00000000,0x00040020,0x000001e2,0x00000000,0x000001e1, - 0x0004003b,0x000001e2,0x000001e3,0x00000000,0x0004003b,0x000001cd,0x000001eb,0x00000000, - 0x0002001a,0x000001f1,0x00040020,0x000001f2,0x00000000,0x000001f1,0x0004003b,0x000001f2, - 0x000001f3,0x00000000,0x0003001b,0x000001f5,0x000001cc,0x00040015,0x000001f9,0x00000020, - 0x00000000,0x0004002b,0x000001f9,0x000001fa,0x00000000,0x0004003b,0x000001cd,0x000001fe, - 0x00000000,0x00090019,0x00000207,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, - 0x00000002,0x0000000f,0x00040020,0x00000208,0x00000000,0x00000207,0x0004003b,0x00000208, - 0x00000209,0x00000000,0x0004003b,0x000001cd,0x00000214,0x00000000,0x0004003b,0x000001cd, - 0x0000021c,0x00000000,0x0005002c,0x00000055,0x0000021e,0x00000197,0x00000197,0x0004003b, - 0x000001cd,0x00000228,0x00000000,0x0004002b,0x00000006,0x00000231,0x45700000,0x0004002b, - 0x00000006,0x00000232,0x45070000,0x0005002c,0x0000001a,0x00000233,0x00000231,0x00000232, - 0x0004002b,0x00000036,0x0000023e,0x00000001,0x0004002b,0x00000006,0x0000026b,0x00800000, - 0x0004002b,0x000001f9,0x00000293,0x00000001,0x0004002b,0x000001f9,0x00000297,0x00000002, - 0x0004002b,0x00000006,0x000002ad,0x3e800000,0x0004002b,0x00000006,0x000002b1,0x3f000000, - 0x0004002b,0x00000006,0x000002c1,0xbe800000,0x0004002b,0x00000006,0x000002e7,0x387fda40, - 0x0005002c,0x0000001a,0x00000338,0x000002b1,0x000002b1,0x00040017,0x0000034c,0x000001f9, - 0x00000002,0x00040017,0x00000350,0x000000a7,0x00000002,0x0004002b,0x00000006,0x0000035c, - 0x40490fdb,0x0004002b,0x00000006,0x00000363,0x3fc90fdb,0x0004002b,0x00000006,0x00000370, - 0x40000000,0x0004002b,0x00000006,0x0000037a,0x3ecccccd,0x0004002b,0x00000006,0x00000382, - 0x3fc80000,0x0004002b,0x00000006,0x00000387,0x3f100000,0x0004002b,0x00000006,0x0000038f, - 0x40800000,0x0004002b,0x00000006,0x0000039a,0xbf800000,0x0004002b,0x00000006,0x000003a0, - 0x80000000,0x0004002b,0x00000036,0x000003db,0x00000005,0x0004002b,0x00000036,0x000003dc, - 0x00000006,0x0004002b,0x00000036,0x000003ee,0x00000008,0x0004002b,0x00000036,0x000003ef, - 0x00000009,0x0004002b,0x00000036,0x000003f0,0x0000000b,0x0004002b,0x00000036,0x00000402, - 0x0000000c,0x0004002b,0x00000036,0x00000403,0x0000000e,0x0004002b,0x000001f9,0x00000421, - 0x00000004,0x0004001c,0x00000422,0x0000002f,0x00000421,0x00040020,0x00000423,0x00000007, - 0x00000422,0x0004002b,0x00000006,0x0000048e,0x3ffeb852,0x0006002c,0x0000000e,0x00000496, - 0x00000154,0x00000154,0x00000154,0x0004002b,0x00000036,0x000004c2,0xfffffffe,0x0004002b, - 0x00000036,0x000004c3,0xffffffff,0x0004002b,0x000001f9,0x00000511,0x00000009,0x0004001c, - 0x00000512,0x0000000e,0x00000511,0x00040020,0x00000513,0x00000007,0x00000512,0x0004002b, - 0x00000006,0x0000053f,0x3e99999a,0x0004002b,0x00000006,0x0000054c,0x40a00000,0x0004002b, - 0x00000006,0x000005b7,0xc0133333,0x0004002b,0x00000006,0x000005ef,0x3d3d70a4,0x0005002c, - 0x00000055,0x00000611,0x000004c3,0x000004c3,0x0005002c,0x00000055,0x0000061b,0x00000197, - 0x000004c3,0x0005002c,0x00000055,0x00000625,0x0000023e,0x000004c3,0x0005002c,0x00000055, - 0x0000062f,0x000001a2,0x000004c3,0x0005002c,0x00000055,0x00000639,0x000004c3,0x00000197, - 0x0005002c,0x00000055,0x0000064c,0x0000023e,0x00000197,0x0005002c,0x00000055,0x00000656, - 0x000001a2,0x00000197,0x0005002c,0x00000055,0x00000660,0x000004c3,0x0000023e,0x0005002c, - 0x00000055,0x0000066a,0x00000197,0x0000023e,0x0005002c,0x00000055,0x00000674,0x0000023e, - 0x0000023e,0x0005002c,0x00000055,0x0000067e,0x000001a2,0x0000023e,0x0005002c,0x00000055, - 0x00000688,0x000004c3,0x000001a2,0x0005002c,0x00000055,0x00000692,0x00000197,0x000001a2, - 0x0005002c,0x00000055,0x0000069c,0x0000023e,0x000001a2,0x0005002c,0x00000055,0x000006a6, - 0x000001a2,0x000001a2,0x0004002b,0x000001f9,0x00000716,0x00000003,0x0004002b,0x00000006, - 0x0000075b,0x41a00000,0x0004002b,0x00000006,0x00000760,0x3f400000,0x0004002b,0x00000006, - 0x00000783,0x40400000,0x0004002b,0x00000006,0x0000078c,0x3fd9999a,0x0006002c,0x0000000e, - 0x0000078d,0x0000078c,0x00000155,0x00000155,0x0004002b,0x00000006,0x00000792,0x340018ef, - 0x0006002c,0x0000000e,0x00000793,0x00000792,0x00000792,0x00000792,0x0003002a,0x000000a7, - 0x000007c8,0x0004002b,0x00000006,0x0000080b,0x3dcccccd,0x00030029,0x000000a7,0x00000822, - 0x0004002b,0x00000006,0x0000082b,0x3e19999a,0x0004002b,0x00000006,0x000008ab,0x42c80000, - 0x00040017,0x00000910,0x000001f9,0x00000003,0x00040020,0x00000911,0x00000001,0x00000910, - 0x0004003b,0x00000911,0x00000912,0x00000001,0x0004002b,0x00000006,0x00000918,0x477fe000, - 0x0004002b,0x00000006,0x00000919,0x37801002,0x0004003b,0x000001f2,0x0000091a,0x00000000, - 0x0004003b,0x000001cd,0x0000091b,0x00000000,0x0004003b,0x000001cd,0x0000091c,0x00000000, - 0x0004002b,0x00000006,0x0000091d,0x7f7fffff,0x0004002b,0x00000006,0x0000091e,0x3a1fe868, - 0x0004002b,0x00000006,0x0000091f,0x3d800000,0x0004002b,0x00000006,0x00000920,0x3e400000, - 0x0004002b,0x00000006,0x00000921,0x461c4000,0x0004002b,0x000001f9,0x00000922,0x00000008, - 0x0006002c,0x00000910,0x00000923,0x00000922,0x00000922,0x00000293,0x00050036,0x00000002, - 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000006d,0x00000916, - 0x00000007,0x0004003d,0x00000910,0x00000913,0x00000912,0x0007004f,0x0000034c,0x00000914, - 0x00000913,0x00000913,0x00000000,0x00000001,0x0004007c,0x00000055,0x00000915,0x00000914, - 0x0003003e,0x00000916,0x00000915,0x00050039,0x00000002,0x00000917,0x00000144,0x00000916, - 0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037, - 0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b, - 0x000200f8,0x0000000d,0x0004003d,0x00000006,0x00000146,0x00000009,0x0004003d,0x00000006, - 0x00000147,0x0000000a,0x0004003d,0x00000006,0x00000148,0x0000000b,0x0008000c,0x00000006, - 0x00000149,0x00000001,0x0000002e,0x00000146,0x00000147,0x00000148,0x000200fe,0x00000149, - 0x00010038,0x00050036,0x0000000e,0x00000014,0x00000000,0x00000010,0x00030037,0x0000000f, - 0x00000011,0x00030037,0x0000000f,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8, - 0x00000015,0x0004003d,0x0000000e,0x0000014c,0x00000011,0x0004003d,0x0000000e,0x0000014d, - 0x00000012,0x0004003d,0x00000006,0x0000014e,0x00000013,0x00060050,0x0000000e,0x0000014f, - 0x0000014e,0x0000014e,0x0000014e,0x0008000c,0x0000000e,0x00000150,0x00000001,0x0000002e, - 0x0000014c,0x0000014d,0x0000014f,0x000200fe,0x00000150,0x00010038,0x00050036,0x00000006, - 0x00000018,0x00000000,0x00000016,0x00030037,0x00000007,0x00000017,0x000200f8,0x00000019, - 0x0004003d,0x00000006,0x00000153,0x00000017,0x0008000c,0x00000006,0x00000156,0x00000001, - 0x0000002b,0x00000153,0x00000154,0x00000155,0x000200fe,0x00000156,0x00010038,0x00050036, - 0x0000001a,0x0000001e,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x000200f8, - 0x0000001f,0x0004003d,0x0000001a,0x00000159,0x0000001d,0x0006000c,0x0000001a,0x0000015a, - 0x00000001,0x0000000a,0x00000159,0x000200fe,0x0000015a,0x00010038,0x00050036,0x00000006, - 0x00000023,0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x00030037,0x00000007, - 0x00000022,0x000200f8,0x00000024,0x0004003d,0x00000006,0x0000015d,0x00000021,0x0004003d, - 0x00000006,0x0000015e,0x00000022,0x0007000c,0x00000006,0x0000015f,0x00000001,0x00000025, - 0x0000015d,0x0000015e,0x000200fe,0x0000015f,0x00010038,0x00050036,0x0000001a,0x00000028, - 0x00000000,0x00000025,0x00030037,0x0000001b,0x00000026,0x00030037,0x0000001b,0x00000027, - 0x000200f8,0x00000029,0x0004003d,0x0000001a,0x00000162,0x00000026,0x0004003d,0x0000001a, - 0x00000163,0x00000027,0x0007000c,0x0000001a,0x00000164,0x00000001,0x00000025,0x00000162, - 0x00000163,0x000200fe,0x00000164,0x00010038,0x00050036,0x0000000e,0x0000002d,0x00000000, - 0x0000002a,0x00030037,0x0000000f,0x0000002b,0x00030037,0x0000000f,0x0000002c,0x000200f8, - 0x0000002e,0x0004003d,0x0000000e,0x00000167,0x0000002b,0x0004003d,0x0000000e,0x00000168, - 0x0000002c,0x0007000c,0x0000000e,0x00000169,0x00000001,0x00000025,0x00000167,0x00000168, - 0x000200fe,0x00000169,0x00010038,0x00050036,0x0000002f,0x00000034,0x00000000,0x00000031, - 0x00030037,0x00000030,0x00000032,0x00030037,0x00000030,0x00000033,0x000200f8,0x00000035, - 0x0004003d,0x0000002f,0x0000016c,0x00000032,0x0004003d,0x0000002f,0x0000016d,0x00000033, - 0x0007000c,0x0000002f,0x0000016e,0x00000001,0x00000025,0x0000016c,0x0000016d,0x000200fe, - 0x0000016e,0x00010038,0x00050036,0x00000036,0x0000003b,0x00000000,0x00000038,0x00030037, - 0x00000037,0x00000039,0x00030037,0x00000037,0x0000003a,0x000200f8,0x0000003c,0x0004003d, - 0x00000036,0x00000171,0x00000039,0x0004003d,0x00000036,0x00000172,0x0000003a,0x0007000c, - 0x00000036,0x00000173,0x00000001,0x00000027,0x00000171,0x00000172,0x000200fe,0x00000173, - 0x00010038,0x00050036,0x00000006,0x0000003f,0x00000000,0x00000020,0x00030037,0x00000007, - 0x0000003d,0x00030037,0x00000007,0x0000003e,0x000200f8,0x00000040,0x0004003d,0x00000006, - 0x00000176,0x0000003d,0x0004003d,0x00000006,0x00000177,0x0000003e,0x0007000c,0x00000006, - 0x00000178,0x00000001,0x00000028,0x00000176,0x00000177,0x000200fe,0x00000178,0x00010038, - 0x00050036,0x0000001a,0x00000043,0x00000000,0x00000025,0x00030037,0x0000001b,0x00000041, - 0x00030037,0x0000001b,0x00000042,0x000200f8,0x00000044,0x0004003d,0x0000001a,0x0000017b, - 0x00000041,0x0004003d,0x0000001a,0x0000017c,0x00000042,0x0007000c,0x0000001a,0x0000017d, - 0x00000001,0x00000028,0x0000017b,0x0000017c,0x000200fe,0x0000017d,0x00010038,0x00050036, - 0x0000000e,0x00000047,0x00000000,0x0000002a,0x00030037,0x0000000f,0x00000045,0x00030037, - 0x0000000f,0x00000046,0x000200f8,0x00000048,0x0004003d,0x0000000e,0x00000180,0x00000045, - 0x0004003d,0x0000000e,0x00000181,0x00000046,0x0007000c,0x0000000e,0x00000182,0x00000001, - 0x00000028,0x00000180,0x00000181,0x000200fe,0x00000182,0x00010038,0x00050036,0x0000002f, - 0x0000004b,0x00000000,0x00000031,0x00030037,0x00000030,0x00000049,0x00030037,0x00000030, - 0x0000004a,0x000200f8,0x0000004c,0x0004003d,0x0000002f,0x00000185,0x00000049,0x0004003d, - 0x0000002f,0x00000186,0x0000004a,0x0007000c,0x0000002f,0x00000187,0x00000001,0x00000028, - 0x00000185,0x00000186,0x000200fe,0x00000187,0x00010038,0x00050036,0x00000036,0x0000004f, - 0x00000000,0x00000038,0x00030037,0x00000037,0x0000004d,0x00030037,0x00000037,0x0000004e, - 0x000200f8,0x00000050,0x0004003d,0x00000036,0x0000018a,0x0000004d,0x0004003d,0x00000036, - 0x0000018b,0x0000004e,0x0007000c,0x00000036,0x0000018c,0x00000001,0x0000002a,0x0000018a, - 0x0000018b,0x000200fe,0x0000018c,0x00010038,0x00050036,0x00000006,0x00000053,0x00000000, - 0x00000020,0x00030037,0x00000007,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8, - 0x00000054,0x0004003d,0x00000006,0x0000018f,0x00000051,0x0004003d,0x00000006,0x00000190, - 0x00000052,0x0007000c,0x00000006,0x00000191,0x00000001,0x0000001a,0x0000018f,0x00000190, - 0x000200fe,0x00000191,0x00010038,0x00050036,0x00000055,0x00000057,0x00000000,0x00000056, - 0x000200f8,0x00000058,0x00050041,0x00000198,0x00000199,0x00000196,0x00000197,0x0004003d, - 0x00000055,0x0000019a,0x00000199,0x000200fe,0x0000019a,0x00010038,0x00050036,0x00000055, - 0x00000059,0x00000000,0x00000056,0x000200f8,0x0000005a,0x00050041,0x00000198,0x0000019e, - 0x00000196,0x0000019d,0x0004003d,0x00000055,0x0000019f,0x0000019e,0x000200fe,0x0000019f, - 0x00010038,0x00050036,0x00000055,0x0000005b,0x00000000,0x00000056,0x000200f8,0x0000005c, - 0x00050041,0x00000198,0x000001a3,0x00000196,0x000001a2,0x0004003d,0x00000055,0x000001a4, - 0x000001a3,0x000200fe,0x000001a4,0x00010038,0x00050036,0x00000055,0x0000005d,0x00000000, - 0x00000056,0x000200f8,0x0000005e,0x00050041,0x00000198,0x000001a8,0x00000196,0x000001a7, - 0x0004003d,0x00000055,0x000001a9,0x000001a8,0x000200fe,0x000001a9,0x00010038,0x00050036, - 0x0000001a,0x00000060,0x00000000,0x0000005f,0x000200f8,0x00000061,0x00050041,0x000001ad, - 0x000001ae,0x00000196,0x000001ac,0x0004003d,0x0000001a,0x000001af,0x000001ae,0x000200fe, - 0x000001af,0x00010038,0x00050036,0x0000001a,0x00000062,0x00000000,0x0000005f,0x000200f8, - 0x00000063,0x00050041,0x000001ad,0x000001b3,0x00000196,0x000001b2,0x0004003d,0x0000001a, - 0x000001b4,0x000001b3,0x000200fe,0x000001b4,0x00010038,0x00050036,0x00000006,0x00000065, - 0x00000000,0x00000064,0x000200f8,0x00000066,0x00050041,0x000001b8,0x000001b9,0x00000196, - 0x000001b7,0x0004003d,0x00000006,0x000001ba,0x000001b9,0x000200fe,0x000001ba,0x00010038, - 0x00050036,0x00000006,0x00000067,0x00000000,0x00000064,0x000200f8,0x00000068,0x00050041, - 0x000001b8,0x000001be,0x00000196,0x000001bd,0x0004003d,0x00000006,0x000001bf,0x000001be, - 0x000200fe,0x000001bf,0x00010038,0x00050036,0x00000006,0x00000069,0x00000000,0x00000064, - 0x000200f8,0x0000006a,0x00050041,0x000001b8,0x000001c3,0x00000196,0x000001c2,0x0004003d, - 0x00000006,0x000001c4,0x000001c3,0x000200fe,0x000001c4,0x00010038,0x00050036,0x00000006, - 0x0000006b,0x00000000,0x00000064,0x000200f8,0x0000006c,0x00050041,0x000001b8,0x000001c8, - 0x00000196,0x000001c7,0x0004003d,0x00000006,0x000001c9,0x000001c8,0x000200fe,0x000001c9, - 0x00010038,0x00050036,0x0000000e,0x00000070,0x00000000,0x0000006e,0x00030037,0x0000006d, - 0x0000006f,0x000200f8,0x00000071,0x0004003d,0x000001cc,0x000001cf,0x000001ce,0x0004003d, - 0x00000055,0x000001d0,0x0000006f,0x0007005f,0x0000002f,0x000001d1,0x000001cf,0x000001d0, - 0x00000002,0x00000197,0x0008004f,0x0000000e,0x000001d2,0x000001d1,0x000001d1,0x00000000, - 0x00000001,0x00000002,0x000200fe,0x000001d2,0x00010038,0x00050036,0x0000002f,0x00000074, - 0x00000000,0x00000072,0x00030037,0x0000006d,0x00000073,0x000200f8,0x00000075,0x0004003d, - 0x000001cc,0x000001d6,0x000001d5,0x0004003d,0x00000055,0x000001d7,0x00000073,0x0007005f, - 0x0000002f,0x000001d8,0x000001d6,0x000001d7,0x00000002,0x00000197,0x000200fe,0x000001d8, - 0x00010038,0x00050036,0x00000002,0x00000079,0x00000000,0x00000076,0x00030037,0x0000006d, - 0x00000077,0x00030037,0x00000030,0x00000078,0x000200f8,0x0000007a,0x0004003d,0x000001db, - 0x000001de,0x000001dd,0x0004003d,0x00000055,0x000001df,0x00000077,0x0004003d,0x0000002f, - 0x000001e0,0x00000078,0x00040063,0x000001de,0x000001df,0x000001e0,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x0000007e,0x00000000,0x0000007b,0x00030037,0x0000006d,0x0000007c, - 0x00030037,0x0000000f,0x0000007d,0x000200f8,0x0000007f,0x0004003d,0x000001e1,0x000001e4, - 0x000001e3,0x0004003d,0x00000055,0x000001e5,0x0000007c,0x0004003d,0x0000000e,0x000001e6, - 0x0000007d,0x00050051,0x00000006,0x000001e7,0x000001e6,0x00000000,0x00050051,0x00000006, - 0x000001e8,0x000001e6,0x00000001,0x00050051,0x00000006,0x000001e9,0x000001e6,0x00000002, - 0x00070050,0x0000002f,0x000001ea,0x000001e7,0x000001e8,0x000001e9,0x00000155,0x00040063, - 0x000001e4,0x000001e5,0x000001ea,0x000100fd,0x00010038,0x00050036,0x00000055,0x00000080, - 0x00000000,0x00000056,0x000200f8,0x00000081,0x0004003d,0x000001cc,0x000001ec,0x000001eb, - 0x00050067,0x00000055,0x000001ed,0x000001ec,0x00000197,0x000200fe,0x000001ed,0x00010038, - 0x00050036,0x00000006,0x00000084,0x00000000,0x00000082,0x00030037,0x0000001b,0x00000083, - 0x000200f8,0x00000085,0x0004003d,0x000001cc,0x000001f0,0x000001eb,0x0004003d,0x000001f1, - 0x000001f4,0x000001f3,0x00050056,0x000001f5,0x000001f6,0x000001f0,0x000001f4,0x0004003d, - 0x0000001a,0x000001f7,0x00000083,0x00070058,0x0000002f,0x000001f8,0x000001f6,0x000001f7, - 0x00000002,0x00000154,0x00050051,0x00000006,0x000001fb,0x000001f8,0x00000000,0x000200fe, - 0x000001fb,0x00010038,0x00050036,0x00000006,0x00000087,0x00000000,0x00000082,0x00030037, - 0x0000001b,0x00000086,0x000200f8,0x00000088,0x0004003d,0x000001cc,0x000001ff,0x000001fe, - 0x0004003d,0x000001f1,0x00000200,0x000001f3,0x00050056,0x000001f5,0x00000201,0x000001ff, - 0x00000200,0x0004003d,0x0000001a,0x00000202,0x00000086,0x00070058,0x0000002f,0x00000203, - 0x00000201,0x00000202,0x00000002,0x00000154,0x00050051,0x00000006,0x00000204,0x00000203, - 0x00000000,0x000200fe,0x00000204,0x00010038,0x00050036,0x00000006,0x0000008b,0x00000000, - 0x00000089,0x00030037,0x0000006d,0x0000008a,0x000200f8,0x0000008c,0x0004003d,0x00000207, - 0x0000020a,0x00000209,0x0004003d,0x00000055,0x0000020b,0x0000008a,0x00050062,0x0000002f, - 0x0000020c,0x0000020a,0x0000020b,0x00050051,0x00000006,0x0000020d,0x0000020c,0x00000000, - 0x000200fe,0x0000020d,0x00010038,0x00050036,0x00000002,0x00000090,0x00000000,0x0000008d, - 0x00030037,0x0000006d,0x0000008e,0x00030037,0x00000007,0x0000008f,0x000200f8,0x00000091, - 0x0004003d,0x00000207,0x00000210,0x00000209,0x0004003d,0x00000055,0x00000211,0x0000008e, - 0x0004003d,0x00000006,0x00000212,0x0000008f,0x00070050,0x0000002f,0x00000213,0x00000212, - 0x00000154,0x00000154,0x00000154,0x00040063,0x00000210,0x00000211,0x00000213,0x000100fd, - 0x00010038,0x00050036,0x0000001a,0x00000094,0x00000000,0x00000092,0x00030037,0x0000006d, - 0x00000093,0x000200f8,0x00000095,0x0004003d,0x000001cc,0x00000215,0x00000214,0x0004003d, - 0x00000055,0x00000216,0x00000093,0x0007005f,0x0000002f,0x00000217,0x00000215,0x00000216, - 0x00000002,0x00000197,0x0007004f,0x0000001a,0x00000218,0x00000217,0x00000217,0x00000000, - 0x00000001,0x000200fe,0x00000218,0x00010038,0x00050036,0x00000006,0x00000096,0x00000000, - 0x00000064,0x000200f8,0x00000097,0x0004003b,0x00000007,0x0000021b,0x00000007,0x0004003d, - 0x000001cc,0x0000021d,0x0000021c,0x0007005f,0x0000002f,0x0000021f,0x0000021d,0x0000021e, - 0x00000002,0x00000197,0x00050051,0x00000006,0x00000220,0x0000021f,0x00000000,0x0003003e, - 0x0000021b,0x00000220,0x0004003d,0x00000006,0x00000221,0x0000021b,0x000500b4,0x000000a7, - 0x00000222,0x00000221,0x00000154,0x000300f7,0x00000224,0x00000000,0x000400fa,0x00000222, - 0x00000223,0x00000224,0x000200f8,0x00000223,0x0003003e,0x0000021b,0x00000155,0x000200f9, - 0x00000224,0x000200f8,0x00000224,0x0004003d,0x00000006,0x00000225,0x0000021b,0x000200fe, - 0x00000225,0x00010038,0x00050036,0x0000002f,0x0000009a,0x00000000,0x00000098,0x00030037, - 0x0000001b,0x00000099,0x000200f8,0x0000009b,0x0004003d,0x000001cc,0x00000229,0x00000228, - 0x0004003d,0x000001f1,0x0000022a,0x000001f3,0x00050056,0x000001f5,0x0000022b,0x00000229, - 0x0000022a,0x0004003d,0x0000001a,0x0000022c,0x00000099,0x00070058,0x0000002f,0x0000022d, - 0x0000022b,0x0000022c,0x00000002,0x00000154,0x000200fe,0x0000022d,0x00010038,0x00050036, - 0x00000006,0x0000009d,0x00000000,0x00000082,0x00030037,0x0000001b,0x0000009c,0x000200f8, - 0x0000009e,0x0004003d,0x0000001a,0x00000230,0x0000009c,0x00050085,0x0000001a,0x00000234, - 0x00000230,0x00000233,0x0006000c,0x00000006,0x00000235,0x00000001,0x00000042,0x00000234, - 0x000200fe,0x00000235,0x00010038,0x00050036,0x00000002,0x000000a5,0x00000000,0x000000a1, - 0x00030037,0x000000a0,0x000000a2,0x00030037,0x0000000e,0x000000a3,0x00030037,0x00000006, - 0x000000a4,0x000200f8,0x000000a6,0x0004003b,0x0000000f,0x0000023a,0x00000007,0x00050041, - 0x0000000f,0x00000238,0x000000a2,0x000001a2,0x0003003e,0x00000238,0x000000a3,0x00050041, - 0x0000000f,0x00000239,0x000000a2,0x000001a7,0x0003003e,0x00000239,0x000000a3,0x0005008e, - 0x0000000e,0x0000023b,0x000000a3,0x000000a4,0x0003003e,0x0000023a,0x0000023b,0x0004003d, - 0x0000000e,0x0000023c,0x0000023a,0x00050041,0x0000000f,0x0000023d,0x000000a2,0x00000197, - 0x0003003e,0x0000023d,0x0000023c,0x0004003d,0x0000000e,0x0000023f,0x0000023a,0x00050085, - 0x0000000e,0x00000240,0x000000a3,0x0000023f,0x00050041,0x0000000f,0x00000241,0x000000a2, - 0x0000023e,0x0003003e,0x00000241,0x00000240,0x00050041,0x00000007,0x00000242,0x000000a2, - 0x0000019d,0x0003003e,0x00000242,0x000000a4,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x000000ae,0x00000000,0x000000a9,0x00030037,0x000000a8,0x000000aa,0x00030037,0x000000a0, - 0x000000ab,0x00030037,0x0000000e,0x000000ac,0x00030037,0x00000006,0x000000ad,0x000200f8, - 0x000000af,0x0004003b,0x000000a0,0x00000246,0x00000007,0x0004003b,0x0000000f,0x0000024b, - 0x00000007,0x0004003b,0x0000000f,0x0000024e,0x00000007,0x0004003b,0x0000000f,0x00000251, - 0x00000007,0x0004003b,0x0000000f,0x00000254,0x00000007,0x0004003b,0x0000000f,0x00000257, - 0x00000007,0x0004003d,0x000000a7,0x00000243,0x000000aa,0x000300f7,0x00000245,0x00000000, - 0x000400fa,0x00000243,0x00000244,0x0000024a,0x000200f8,0x00000244,0x0004003d,0x0000009f, - 0x00000247,0x000000ab,0x0003003e,0x00000246,0x00000247,0x00070039,0x00000002,0x00000248, - 0x000000a5,0x00000246,0x000000ac,0x000000ad,0x0004003d,0x0000009f,0x00000249,0x00000246, - 0x0003003e,0x000000ab,0x00000249,0x000200f9,0x00000245,0x000200f8,0x0000024a,0x00050041, - 0x0000000f,0x0000024c,0x000000ab,0x000001a2,0x0004003d,0x0000000e,0x0000024d,0x0000024c, - 0x0003003e,0x0000024b,0x0000024d,0x0003003e,0x0000024e,0x000000ac,0x00060039,0x0000000e, - 0x0000024f,0x0000002d,0x0000024b,0x0000024e,0x00050041,0x0000000f,0x00000250,0x000000ab, - 0x000001a2,0x0003003e,0x00000250,0x0000024f,0x00050041,0x0000000f,0x00000252,0x000000ab, - 0x000001a7,0x0004003d,0x0000000e,0x00000253,0x00000252,0x0003003e,0x00000251,0x00000253, - 0x0003003e,0x00000254,0x000000ac,0x00060039,0x0000000e,0x00000255,0x00000047,0x00000251, - 0x00000254,0x00050041,0x0000000f,0x00000256,0x000000ab,0x000001a7,0x0003003e,0x00000256, - 0x00000255,0x0005008e,0x0000000e,0x00000258,0x000000ac,0x000000ad,0x0003003e,0x00000257, - 0x00000258,0x0004003d,0x0000000e,0x00000259,0x00000257,0x00050041,0x0000000f,0x0000025a, - 0x000000ab,0x00000197,0x0004003d,0x0000000e,0x0000025b,0x0000025a,0x00050081,0x0000000e, - 0x0000025c,0x0000025b,0x00000259,0x00050041,0x0000000f,0x0000025d,0x000000ab,0x00000197, - 0x0003003e,0x0000025d,0x0000025c,0x0004003d,0x0000000e,0x0000025e,0x00000257,0x00050085, - 0x0000000e,0x0000025f,0x000000ac,0x0000025e,0x00050041,0x0000000f,0x00000260,0x000000ab, - 0x0000023e,0x0004003d,0x0000000e,0x00000261,0x00000260,0x00050081,0x0000000e,0x00000262, - 0x00000261,0x0000025f,0x00050041,0x0000000f,0x00000263,0x000000ab,0x0000023e,0x0003003e, - 0x00000263,0x00000262,0x00050041,0x00000007,0x00000264,0x000000ab,0x0000019d,0x0004003d, - 0x00000006,0x00000265,0x00000264,0x00050081,0x00000006,0x00000266,0x00000265,0x000000ad, - 0x00050041,0x00000007,0x00000267,0x000000ab,0x0000019d,0x0003003e,0x00000267,0x00000266, - 0x000200f9,0x00000245,0x000200f8,0x00000245,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x000000b2,0x00000000,0x000000b0,0x00030037,0x000000a0,0x000000b1,0x000200f8,0x000000b3, - 0x0004003b,0x00000007,0x0000026d,0x00000007,0x0004003b,0x0000000f,0x00000283,0x00000007, - 0x00050041,0x00000007,0x00000268,0x000000b1,0x0000019d,0x0004003d,0x00000006,0x00000269, - 0x00000268,0x0006000c,0x00000006,0x0000026a,0x00000001,0x00000004,0x00000269,0x000500ba, - 0x000000a7,0x0000026c,0x0000026a,0x0000026b,0x000300f7,0x0000026f,0x00000000,0x000400fa, - 0x0000026c,0x0000026e,0x00000272,0x000200f8,0x0000026e,0x00050041,0x00000007,0x00000270, - 0x000000b1,0x0000019d,0x0004003d,0x00000006,0x00000271,0x00000270,0x0003003e,0x0000026d, - 0x00000271,0x000200f9,0x0000026f,0x000200f8,0x00000272,0x0003003e,0x0000026d,0x00000155, - 0x000200f9,0x0000026f,0x000200f8,0x0000026f,0x0004003d,0x00000006,0x00000273,0x0000026d, - 0x00050041,0x00000007,0x00000274,0x000000b1,0x0000019d,0x0003003e,0x00000274,0x00000273, - 0x00050041,0x00000007,0x00000275,0x000000b1,0x0000019d,0x0004003d,0x00000006,0x00000276, - 0x00000275,0x00050041,0x0000000f,0x00000277,0x000000b1,0x00000197,0x0004003d,0x0000000e, - 0x00000278,0x00000277,0x00060050,0x0000000e,0x00000279,0x00000276,0x00000276,0x00000276, - 0x00050088,0x0000000e,0x0000027a,0x00000278,0x00000279,0x00050041,0x0000000f,0x0000027b, - 0x000000b1,0x00000197,0x0003003e,0x0000027b,0x0000027a,0x00050041,0x00000007,0x0000027c, - 0x000000b1,0x0000019d,0x0004003d,0x00000006,0x0000027d,0x0000027c,0x00050041,0x0000000f, - 0x0000027e,0x000000b1,0x0000023e,0x0004003d,0x0000000e,0x0000027f,0x0000027e,0x00060050, - 0x0000000e,0x00000280,0x0000027d,0x0000027d,0x0000027d,0x00050088,0x0000000e,0x00000281, - 0x0000027f,0x00000280,0x00050041,0x0000000f,0x00000282,0x000000b1,0x0000023e,0x0003003e, - 0x00000282,0x00000281,0x00050041,0x0000000f,0x00000284,0x000000b1,0x0000023e,0x0004003d, - 0x0000000e,0x00000285,0x00000284,0x00050041,0x0000000f,0x00000286,0x000000b1,0x00000197, - 0x0004003d,0x0000000e,0x00000287,0x00000286,0x00050041,0x0000000f,0x00000288,0x000000b1, - 0x00000197,0x0004003d,0x0000000e,0x00000289,0x00000288,0x00050085,0x0000000e,0x0000028a, - 0x00000287,0x00000289,0x00050083,0x0000000e,0x0000028b,0x00000285,0x0000028a,0x0006000c, - 0x0000000e,0x0000028c,0x00000001,0x00000004,0x0000028b,0x0006000c,0x0000000e,0x0000028d, - 0x00000001,0x0000001f,0x0000028c,0x0003003e,0x00000283,0x0000028d,0x0004003d,0x0000000e, - 0x0000028e,0x00000283,0x00050041,0x0000000f,0x0000028f,0x000000b1,0x0000023e,0x0003003e, - 0x0000028f,0x0000028e,0x000100fd,0x00010038,0x00050036,0x0000000e,0x000000b6,0x00000000, - 0x000000b4,0x00030037,0x0000000f,0x000000b5,0x000200f8,0x000000b7,0x0004003b,0x0000000f, - 0x00000290,0x00000007,0x00050041,0x00000007,0x00000291,0x000000b5,0x000001fa,0x0004003d, - 0x00000006,0x00000292,0x00000291,0x00050041,0x00000007,0x00000294,0x000000b5,0x00000293, - 0x0004003d,0x00000006,0x00000295,0x00000294,0x00050081,0x00000006,0x00000296,0x00000292, - 0x00000295,0x00050041,0x00000007,0x00000298,0x000000b5,0x00000297,0x0004003d,0x00000006, - 0x00000299,0x00000298,0x00050083,0x00000006,0x0000029a,0x00000296,0x00000299,0x00050041, - 0x00000007,0x0000029b,0x000000b5,0x000001fa,0x0004003d,0x00000006,0x0000029c,0x0000029b, - 0x00050041,0x00000007,0x0000029d,0x000000b5,0x00000297,0x0004003d,0x00000006,0x0000029e, - 0x0000029d,0x00050081,0x00000006,0x0000029f,0x0000029c,0x0000029e,0x00050041,0x00000007, - 0x000002a0,0x000000b5,0x000001fa,0x0004003d,0x00000006,0x000002a1,0x000002a0,0x00050041, - 0x00000007,0x000002a2,0x000000b5,0x00000293,0x0004003d,0x00000006,0x000002a3,0x000002a2, - 0x00050083,0x00000006,0x000002a4,0x000002a1,0x000002a3,0x00050041,0x00000007,0x000002a5, - 0x000000b5,0x00000297,0x0004003d,0x00000006,0x000002a6,0x000002a5,0x00050083,0x00000006, - 0x000002a7,0x000002a4,0x000002a6,0x00060050,0x0000000e,0x000002a8,0x0000029a,0x0000029f, - 0x000002a7,0x0003003e,0x00000290,0x000002a8,0x0004003d,0x0000000e,0x000002a9,0x00000290, - 0x000200fe,0x000002a9,0x00010038,0x00050036,0x0000000e,0x000000b9,0x00000000,0x000000b4, - 0x00030037,0x0000000f,0x000000b8,0x000200f8,0x000000ba,0x0004003b,0x0000000f,0x000002ac, - 0x00000007,0x00050041,0x00000007,0x000002ae,0x000000b8,0x000001fa,0x0004003d,0x00000006, - 0x000002af,0x000002ae,0x00050085,0x00000006,0x000002b0,0x000002ad,0x000002af,0x00050041, - 0x00000007,0x000002b2,0x000000b8,0x00000293,0x0004003d,0x00000006,0x000002b3,0x000002b2, - 0x00050085,0x00000006,0x000002b4,0x000002b1,0x000002b3,0x00050081,0x00000006,0x000002b5, - 0x000002b0,0x000002b4,0x00050041,0x00000007,0x000002b6,0x000000b8,0x00000297,0x0004003d, - 0x00000006,0x000002b7,0x000002b6,0x00050085,0x00000006,0x000002b8,0x000002ad,0x000002b7, - 0x00050081,0x00000006,0x000002b9,0x000002b5,0x000002b8,0x00050041,0x00000007,0x000002ba, - 0x000000b8,0x000001fa,0x0004003d,0x00000006,0x000002bb,0x000002ba,0x00050085,0x00000006, - 0x000002bc,0x000002b1,0x000002bb,0x00050041,0x00000007,0x000002bd,0x000000b8,0x00000297, - 0x0004003d,0x00000006,0x000002be,0x000002bd,0x00050085,0x00000006,0x000002bf,0x000002b1, - 0x000002be,0x00050083,0x00000006,0x000002c0,0x000002bc,0x000002bf,0x00050041,0x00000007, - 0x000002c2,0x000000b8,0x000001fa,0x0004003d,0x00000006,0x000002c3,0x000002c2,0x00050085, - 0x00000006,0x000002c4,0x000002c1,0x000002c3,0x00050041,0x00000007,0x000002c5,0x000000b8, - 0x00000293,0x0004003d,0x00000006,0x000002c6,0x000002c5,0x00050085,0x00000006,0x000002c7, - 0x000002b1,0x000002c6,0x00050081,0x00000006,0x000002c8,0x000002c4,0x000002c7,0x00050041, - 0x00000007,0x000002c9,0x000000b8,0x00000297,0x0004003d,0x00000006,0x000002ca,0x000002c9, - 0x00050085,0x00000006,0x000002cb,0x000002ad,0x000002ca,0x00050083,0x00000006,0x000002cc, - 0x000002c8,0x000002cb,0x00060050,0x0000000e,0x000002cd,0x000002b9,0x000002c0,0x000002cc, - 0x0003003e,0x000002ac,0x000002cd,0x0004003d,0x0000000e,0x000002ce,0x000002ac,0x000200fe, - 0x000002ce,0x00010038,0x00050036,0x0000000e,0x000000bc,0x00000000,0x000000b4,0x00030037, - 0x0000000f,0x000000bb,0x000200f8,0x000000bd,0x0004003b,0x00000007,0x000002d2,0x00000007, - 0x0004003b,0x00000007,0x000002d3,0x00000007,0x0004003b,0x00000007,0x000002d7,0x00000007, - 0x0004003b,0x00000007,0x000002da,0x00000007,0x0004003b,0x00000007,0x000002de,0x00000007, - 0x0004003b,0x00000007,0x000002df,0x00000007,0x0004003d,0x0000000e,0x000002d1,0x000000bb, - 0x0003003e,0x000002d2,0x00000154,0x00050041,0x00000007,0x000002d4,0x000000bb,0x000001fa, - 0x0004003d,0x00000006,0x000002d5,0x000002d4,0x0003003e,0x000002d3,0x000002d5,0x00060039, - 0x00000006,0x000002d6,0x0000003f,0x000002d2,0x000002d3,0x00050041,0x00000007,0x000002d8, - 0x000000bb,0x00000293,0x0004003d,0x00000006,0x000002d9,0x000002d8,0x0003003e,0x000002d7, - 0x000002d9,0x00050041,0x00000007,0x000002db,0x000000bb,0x00000297,0x0004003d,0x00000006, - 0x000002dc,0x000002db,0x0003003e,0x000002da,0x000002dc,0x00060039,0x00000006,0x000002dd, - 0x0000003f,0x000002d7,0x000002da,0x0003003e,0x000002de,0x000002d6,0x0003003e,0x000002df, - 0x000002dd,0x00060039,0x00000006,0x000002e0,0x0000003f,0x000002de,0x000002df,0x00050081, - 0x00000006,0x000002e1,0x000002e0,0x00000155,0x00060050,0x0000000e,0x000002e2,0x000002e1, - 0x000002e1,0x000002e1,0x00050088,0x0000000e,0x000002e3,0x000002d1,0x000002e2,0x000200fe, - 0x000002e3,0x00010038,0x00050036,0x0000000e,0x000000bf,0x00000000,0x000000b4,0x00030037, - 0x0000000f,0x000000be,0x000200f8,0x000000c0,0x0004003b,0x00000007,0x000002e8,0x00000007, - 0x0004003b,0x00000007,0x000002eb,0x00000007,0x0004003b,0x00000007,0x000002ef,0x00000007, - 0x0004003b,0x00000007,0x000002f2,0x00000007,0x0004003b,0x00000007,0x000002f5,0x00000007, - 0x0004003b,0x00000007,0x000002f6,0x00000007,0x0004003d,0x0000000e,0x000002e6,0x000000be, - 0x00050041,0x00000007,0x000002e9,0x000000be,0x00000293,0x0004003d,0x00000006,0x000002ea, - 0x000002e9,0x0003003e,0x000002e8,0x000002ea,0x00050041,0x00000007,0x000002ec,0x000000be, - 0x00000297,0x0004003d,0x00000006,0x000002ed,0x000002ec,0x0003003e,0x000002eb,0x000002ed, - 0x00060039,0x00000006,0x000002ee,0x0000003f,0x000002e8,0x000002eb,0x00050041,0x00000007, - 0x000002f0,0x000000be,0x000001fa,0x0004003d,0x00000006,0x000002f1,0x000002f0,0x0003003e, - 0x000002ef,0x000002f1,0x0003003e,0x000002f2,0x000002ee,0x00060039,0x00000006,0x000002f3, - 0x0000003f,0x000002ef,0x000002f2,0x00050083,0x00000006,0x000002f4,0x00000155,0x000002f3, - 0x0003003e,0x000002f5,0x000002e7,0x0003003e,0x000002f6,0x000002f4,0x00060039,0x00000006, - 0x000002f7,0x0000003f,0x000002f5,0x000002f6,0x00060050,0x0000000e,0x000002f8,0x000002f7, - 0x000002f7,0x000002f7,0x00050088,0x0000000e,0x000002f9,0x000002e6,0x000002f8,0x000200fe, - 0x000002f9,0x00010038,0x00050036,0x000000a7,0x000000c3,0x00000000,0x000000c1,0x00030037, - 0x0000001b,0x000000c2,0x000200f8,0x000000c4,0x00050041,0x00000007,0x000002fc,0x000000c2, - 0x000001fa,0x0004003d,0x00000006,0x000002fd,0x000002fc,0x000500be,0x000000a7,0x000002fe, - 0x000002fd,0x00000154,0x000300f7,0x00000300,0x00000000,0x000400fa,0x000002fe,0x000002ff, - 0x00000300,0x000200f8,0x000002ff,0x00050041,0x00000007,0x00000301,0x000000c2,0x000001fa, - 0x0004003d,0x00000006,0x00000302,0x00000301,0x000500bc,0x000000a7,0x00000303,0x00000302, - 0x00000155,0x000200f9,0x00000300,0x000200f8,0x00000300,0x000700f5,0x000000a7,0x00000304, - 0x000002fe,0x000000c4,0x00000303,0x000002ff,0x000300f7,0x00000306,0x00000000,0x000400fa, - 0x00000304,0x00000305,0x00000306,0x000200f8,0x00000305,0x00050041,0x00000007,0x00000307, - 0x000000c2,0x00000293,0x0004003d,0x00000006,0x00000308,0x00000307,0x000500be,0x000000a7, - 0x00000309,0x00000308,0x00000154,0x000300f7,0x0000030b,0x00000000,0x000400fa,0x00000309, - 0x0000030a,0x0000030b,0x000200f8,0x0000030a,0x00050041,0x00000007,0x0000030c,0x000000c2, - 0x00000293,0x0004003d,0x00000006,0x0000030d,0x0000030c,0x000500bc,0x000000a7,0x0000030e, - 0x0000030d,0x00000155,0x000200f9,0x0000030b,0x000200f8,0x0000030b,0x000700f5,0x000000a7, - 0x0000030f,0x00000309,0x00000305,0x0000030e,0x0000030a,0x000200f9,0x00000306,0x000200f8, - 0x00000306,0x000700f5,0x000000a7,0x00000310,0x00000304,0x00000300,0x0000030f,0x0000030b, - 0x000200fe,0x00000310,0x00010038,0x00050036,0x00000055,0x000000c9,0x00000000,0x000000c5, - 0x00030037,0x0000006d,0x000000c6,0x00030037,0x0000006d,0x000000c7,0x00030037,0x0000006d, - 0x000000c8,0x000200f8,0x000000ca,0x0004003b,0x0000006d,0x00000313,0x00000007,0x0004003b, - 0x00000037,0x0000031a,0x00000007,0x0004003b,0x00000037,0x0000031d,0x00000007,0x0004003b, - 0x00000037,0x0000031f,0x00000007,0x0004003b,0x00000037,0x00000320,0x00000007,0x0004003b, - 0x00000037,0x00000326,0x00000007,0x0004003b,0x00000037,0x00000329,0x00000007,0x0004003b, - 0x00000037,0x0000032b,0x00000007,0x0004003b,0x00000037,0x0000032c,0x00000007,0x0004003d, - 0x00000055,0x00000314,0x000000c6,0x0004003d,0x00000055,0x00000315,0x000000c7,0x00050080, - 0x00000055,0x00000316,0x00000314,0x00000315,0x0003003e,0x00000313,0x00000316,0x00050041, - 0x00000037,0x00000317,0x000000c8,0x000001fa,0x0004003d,0x00000036,0x00000318,0x00000317, - 0x00050082,0x00000036,0x00000319,0x00000318,0x0000023e,0x00050041,0x00000037,0x0000031b, - 0x00000313,0x000001fa,0x0004003d,0x00000036,0x0000031c,0x0000031b,0x0003003e,0x0000031a, - 0x0000031c,0x0003003e,0x0000031d,0x00000319,0x00060039,0x00000036,0x0000031e,0x0000003b, - 0x0000031a,0x0000031d,0x0003003e,0x0000031f,0x00000197,0x0003003e,0x00000320,0x0000031e, - 0x00060039,0x00000036,0x00000321,0x0000004f,0x0000031f,0x00000320,0x00050041,0x00000037, - 0x00000322,0x00000313,0x000001fa,0x0003003e,0x00000322,0x00000321,0x00050041,0x00000037, - 0x00000323,0x000000c8,0x00000293,0x0004003d,0x00000036,0x00000324,0x00000323,0x00050082, - 0x00000036,0x00000325,0x00000324,0x0000023e,0x00050041,0x00000037,0x00000327,0x00000313, - 0x00000293,0x0004003d,0x00000036,0x00000328,0x00000327,0x0003003e,0x00000326,0x00000328, - 0x0003003e,0x00000329,0x00000325,0x00060039,0x00000036,0x0000032a,0x0000003b,0x00000326, - 0x00000329,0x0003003e,0x0000032b,0x00000197,0x0003003e,0x0000032c,0x0000032a,0x00060039, - 0x00000036,0x0000032d,0x0000004f,0x0000032b,0x0000032c,0x00050041,0x00000037,0x0000032e, - 0x00000313,0x00000293,0x0003003e,0x0000032e,0x0000032d,0x0004003d,0x00000055,0x0000032f, - 0x00000313,0x000200fe,0x0000032f,0x00010038,0x00050036,0x0000001a,0x000000cf,0x00000000, - 0x000000cb,0x00030037,0x0000001b,0x000000cc,0x00030037,0x0000006d,0x000000cd,0x00030037, - 0x0000006d,0x000000ce,0x000200f8,0x000000d0,0x0004003b,0x0000001b,0x00000332,0x00000007, - 0x0004003b,0x0000001b,0x00000337,0x00000007,0x0004003b,0x0000001b,0x0000033c,0x00000007, - 0x0004003b,0x0000001b,0x0000033e,0x00000007,0x0004003b,0x0000001b,0x00000340,0x00000007, - 0x0004003b,0x0000001b,0x00000341,0x00000007,0x0004003b,0x0000001b,0x00000343,0x00000007, - 0x0004003d,0x0000001a,0x00000333,0x000000cc,0x0004003d,0x00000055,0x00000334,0x000000cd, - 0x0004006f,0x0000001a,0x00000335,0x00000334,0x00050085,0x0000001a,0x00000336,0x00000333, - 0x00000335,0x0003003e,0x00000332,0x00000336,0x0004003d,0x00000055,0x00000339,0x000000cd, - 0x0004006f,0x0000001a,0x0000033a,0x00000339,0x00050083,0x0000001a,0x0000033b,0x0000033a, - 0x00000338,0x0004003d,0x0000001a,0x0000033d,0x00000332,0x0003003e,0x0000033c,0x0000033d, - 0x0003003e,0x0000033e,0x0000033b,0x00060039,0x0000001a,0x0000033f,0x00000028,0x0000033c, - 0x0000033e,0x0003003e,0x00000340,0x00000338,0x0003003e,0x00000341,0x0000033f,0x00060039, - 0x0000001a,0x00000342,0x00000043,0x00000340,0x00000341,0x0003003e,0x00000337,0x00000342, - 0x0004003d,0x0000001a,0x00000344,0x00000337,0x0004003d,0x00000055,0x00000345,0x000000ce, - 0x0004006f,0x0000001a,0x00000346,0x00000345,0x00050088,0x0000001a,0x00000347,0x00000344, - 0x00000346,0x0003003e,0x00000343,0x00000347,0x0004003d,0x0000001a,0x00000348,0x00000343, - 0x000200fe,0x00000348,0x00010038,0x00050036,0x000000a7,0x000000d4,0x00000000,0x000000d1, - 0x00030037,0x0000006d,0x000000d2,0x00030037,0x0000006d,0x000000d3,0x000200f8,0x000000d5, - 0x0004003d,0x00000055,0x0000034b,0x000000d2,0x0004007c,0x0000034c,0x0000034d,0x0000034b, - 0x0004003d,0x00000055,0x0000034e,0x000000d3,0x0004007c,0x0000034c,0x0000034f,0x0000034e, - 0x000500b0,0x00000350,0x00000351,0x0000034d,0x0000034f,0x0004009b,0x000000a7,0x00000352, - 0x00000351,0x000200fe,0x00000352,0x00010038,0x00050036,0x00000006,0x000000d7,0x00000000, - 0x00000016,0x00030037,0x00000007,0x000000d6,0x000200f8,0x000000d8,0x0004003b,0x00000007, - 0x00000358,0x00000007,0x0004003d,0x00000006,0x00000355,0x000000d6,0x0006000c,0x00000006, - 0x00000356,0x00000001,0x00000004,0x00000355,0x000500b8,0x000000a7,0x00000357,0x00000356, - 0x000002e7,0x000300f7,0x0000035a,0x00000000,0x000400fa,0x00000357,0x00000359,0x0000035b, - 0x000200f8,0x00000359,0x0003003e,0x00000358,0x00000155,0x000200f9,0x0000035a,0x000200f8, - 0x0000035b,0x0004003d,0x00000006,0x0000035d,0x000000d6,0x00050085,0x00000006,0x0000035e, - 0x0000035c,0x0000035d,0x0006000c,0x00000006,0x0000035f,0x00000001,0x0000000d,0x0000035e, - 0x0004003d,0x00000006,0x00000360,0x000000d6,0x00050085,0x00000006,0x00000361,0x0000035c, - 0x00000360,0x00050088,0x00000006,0x00000362,0x0000035f,0x00000361,0x0004003d,0x00000006, - 0x00000364,0x000000d6,0x00050085,0x00000006,0x00000365,0x00000363,0x00000364,0x0006000c, - 0x00000006,0x00000366,0x00000001,0x0000000d,0x00000365,0x0004003d,0x00000006,0x00000367, - 0x000000d6,0x00050085,0x00000006,0x00000368,0x00000363,0x00000367,0x00050088,0x00000006, - 0x00000369,0x00000366,0x00000368,0x00050085,0x00000006,0x0000036a,0x00000362,0x00000369, - 0x0003003e,0x00000358,0x0000036a,0x000200f9,0x0000035a,0x000200f8,0x0000035a,0x0004003d, - 0x00000006,0x0000036b,0x00000358,0x000200fe,0x0000036b,0x00010038,0x00050036,0x00000006, - 0x000000da,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d9,0x000200f8,0x000000db, - 0x0004003b,0x00000007,0x00000371,0x00000007,0x0004003b,0x00000007,0x00000372,0x00000007, - 0x0004003b,0x00000007,0x00000374,0x00000007,0x0004003d,0x00000006,0x0000036e,0x000000d9, - 0x0006000c,0x00000006,0x0000036f,0x00000001,0x00000004,0x0000036e,0x0003003e,0x00000371, - 0x0000036f,0x0003003e,0x00000372,0x00000370,0x00060039,0x00000006,0x00000373,0x00000023, - 0x00000371,0x00000372,0x0003003e,0x000000d9,0x00000373,0x0004003d,0x00000006,0x00000375, - 0x000000d9,0x0003003e,0x00000374,0x00000375,0x00050039,0x00000006,0x00000376,0x000000d7, - 0x00000374,0x000200fe,0x00000376,0x00010038,0x00050036,0x00000006,0x000000dd,0x00000000, - 0x00000016,0x00030037,0x00000007,0x000000dc,0x000200f8,0x000000de,0x0004003b,0x00000007, - 0x00000379,0x00000007,0x0004003b,0x00000007,0x0000037e,0x00000007,0x0004003d,0x00000006, - 0x0000037b,0x000000dc,0x00050085,0x00000006,0x0000037c,0x0000037a,0x0000037b,0x00050083, - 0x00000006,0x0000037d,0x0000037c,0x00000155,0x0003003e,0x00000379,0x0000037d,0x0004003d, - 0x00000006,0x0000037f,0x000000dc,0x00050085,0x00000006,0x00000380,0x000002ad,0x0000037f, - 0x00050083,0x00000006,0x00000381,0x00000380,0x00000155,0x0003003e,0x0000037e,0x00000381, - 0x0004003d,0x00000006,0x00000383,0x00000379,0x00050085,0x00000006,0x00000384,0x00000382, - 0x00000383,0x0004003d,0x00000006,0x00000385,0x00000379,0x00050085,0x00000006,0x00000386, - 0x00000384,0x00000385,0x00050083,0x00000006,0x00000388,0x00000386,0x00000387,0x0004003d, - 0x00000006,0x00000389,0x0000037e,0x0004003d,0x00000006,0x0000038a,0x0000037e,0x00050085, - 0x00000006,0x0000038b,0x00000389,0x0000038a,0x00050085,0x00000006,0x0000038c,0x00000388, - 0x0000038b,0x000200fe,0x0000038c,0x00010038,0x00050036,0x00000006,0x000000e0,0x00000000, - 0x00000016,0x00030037,0x00000007,0x000000df,0x000200f8,0x000000e1,0x0004003b,0x00000007, - 0x00000390,0x00000007,0x0004003b,0x00000007,0x00000392,0x00000007,0x0004003b,0x00000007, - 0x00000394,0x00000007,0x0004003d,0x00000006,0x00000391,0x000000df,0x0003003e,0x00000390, - 0x00000391,0x0003003e,0x00000392,0x0000038f,0x00060039,0x00000006,0x00000393,0x00000023, - 0x00000390,0x00000392,0x0003003e,0x000000df,0x00000393,0x0004003d,0x00000006,0x00000395, - 0x000000df,0x0003003e,0x00000394,0x00000395,0x00050039,0x00000006,0x00000396,0x000000dd, - 0x00000394,0x000200fe,0x00000396,0x00010038,0x00050036,0x0000002f,0x000000e8,0x00000000, - 0x000000e2,0x00030037,0x00000030,0x000000e3,0x00030037,0x00000030,0x000000e4,0x00030037, - 0x00000030,0x000000e5,0x00030037,0x00000030,0x000000e6,0x00030037,0x00000007,0x000000e7, - 0x000200f8,0x000000e9,0x0004003b,0x00000007,0x00000399,0x00000007,0x0004003b,0x00000007, - 0x0000039d,0x00000007,0x0004003b,0x00000007,0x0000039f,0x00000007,0x0004003b,0x00000007, - 0x000003a3,0x00000007,0x0004003b,0x00000007,0x000003a5,0x00000007,0x0004003b,0x00000007, - 0x000003a8,0x00000007,0x0004003b,0x00000007,0x000003aa,0x00000007,0x0004003b,0x00000007, - 0x000003ad,0x00000007,0x0004003d,0x00000006,0x0000039b,0x000000e7,0x00050083,0x00000006, - 0x0000039c,0x0000039a,0x0000039b,0x0003003e,0x0000039d,0x0000039c,0x00050039,0x00000006, - 0x0000039e,0x000000da,0x0000039d,0x0003003e,0x00000399,0x0000039e,0x0004003d,0x00000006, - 0x000003a1,0x000000e7,0x00050083,0x00000006,0x000003a2,0x000003a0,0x000003a1,0x0003003e, - 0x000003a3,0x000003a2,0x00050039,0x00000006,0x000003a4,0x000000da,0x000003a3,0x0003003e, - 0x0000039f,0x000003a4,0x0004003d,0x00000006,0x000003a6,0x000000e7,0x00050083,0x00000006, - 0x000003a7,0x00000155,0x000003a6,0x0003003e,0x000003a8,0x000003a7,0x00050039,0x00000006, - 0x000003a9,0x000000da,0x000003a8,0x0003003e,0x000003a5,0x000003a9,0x0004003d,0x00000006, - 0x000003ab,0x000000e7,0x00050083,0x00000006,0x000003ac,0x00000370,0x000003ab,0x0003003e, - 0x000003ad,0x000003ac,0x00050039,0x00000006,0x000003ae,0x000000da,0x000003ad,0x0003003e, - 0x000003aa,0x000003ae,0x0004003d,0x00000006,0x000003af,0x00000399,0x0004003d,0x0000002f, - 0x000003b0,0x000000e3,0x0005008e,0x0000002f,0x000003b1,0x000003b0,0x000003af,0x0004003d, - 0x00000006,0x000003b2,0x0000039f,0x0004003d,0x0000002f,0x000003b3,0x000000e4,0x0005008e, - 0x0000002f,0x000003b4,0x000003b3,0x000003b2,0x00050081,0x0000002f,0x000003b5,0x000003b1, - 0x000003b4,0x0004003d,0x00000006,0x000003b6,0x000003a5,0x0004003d,0x0000002f,0x000003b7, - 0x000000e5,0x0005008e,0x0000002f,0x000003b8,0x000003b7,0x000003b6,0x00050081,0x0000002f, - 0x000003b9,0x000003b5,0x000003b8,0x0004003d,0x00000006,0x000003ba,0x000003aa,0x0004003d, - 0x0000002f,0x000003bb,0x000000e6,0x0005008e,0x0000002f,0x000003bc,0x000003bb,0x000003ba, - 0x00050081,0x0000002f,0x000003bd,0x000003b9,0x000003bc,0x0004003d,0x00000006,0x000003be, - 0x00000399,0x0004003d,0x00000006,0x000003bf,0x0000039f,0x00050081,0x00000006,0x000003c0, - 0x000003be,0x000003bf,0x0004003d,0x00000006,0x000003c1,0x000003a5,0x00050081,0x00000006, - 0x000003c2,0x000003c0,0x000003c1,0x0004003d,0x00000006,0x000003c3,0x000003aa,0x00050081, - 0x00000006,0x000003c4,0x000003c2,0x000003c3,0x00070050,0x0000002f,0x000003c5,0x000003c4, - 0x000003c4,0x000003c4,0x000003c4,0x00050088,0x0000002f,0x000003c6,0x000003bd,0x000003c5, - 0x000200fe,0x000003c6,0x00010038,0x00050036,0x0000002f,0x000000ef,0x00000000,0x000000ec, - 0x00030037,0x000000eb,0x000000ed,0x00030037,0x0000001b,0x000000ee,0x000200f8,0x000000f0, - 0x0004003b,0x00000030,0x000003c9,0x00000007,0x0004003b,0x00000030,0x000003ca,0x00000007, - 0x0004003b,0x00000030,0x000003cd,0x00000007,0x0004003b,0x00000030,0x000003d0,0x00000007, - 0x0004003b,0x00000030,0x000003d3,0x00000007,0x0004003b,0x00000007,0x000003d6,0x00000007, - 0x0004003b,0x00000030,0x000003da,0x00000007,0x0004003b,0x00000030,0x000003dd,0x00000007, - 0x0004003b,0x00000030,0x000003e0,0x00000007,0x0004003b,0x00000030,0x000003e3,0x00000007, - 0x0004003b,0x00000030,0x000003e6,0x00000007,0x0004003b,0x00000007,0x000003e9,0x00000007, - 0x0004003b,0x00000030,0x000003ed,0x00000007,0x0004003b,0x00000030,0x000003f1,0x00000007, - 0x0004003b,0x00000030,0x000003f4,0x00000007,0x0004003b,0x00000030,0x000003f7,0x00000007, - 0x0004003b,0x00000030,0x000003fa,0x00000007,0x0004003b,0x00000007,0x000003fd,0x00000007, - 0x0004003b,0x00000030,0x00000401,0x00000007,0x0004003b,0x00000030,0x00000404,0x00000007, - 0x0004003b,0x00000030,0x00000407,0x00000007,0x0004003b,0x00000030,0x0000040a,0x00000007, - 0x0004003b,0x00000030,0x0000040d,0x00000007,0x0004003b,0x00000007,0x00000410,0x00000007, - 0x0004003b,0x00000030,0x00000414,0x00000007,0x0004003b,0x00000030,0x00000415,0x00000007, - 0x0004003b,0x00000030,0x00000417,0x00000007,0x0004003b,0x00000030,0x00000419,0x00000007, - 0x0004003b,0x00000030,0x0000041b,0x00000007,0x0004003b,0x00000007,0x0000041d,0x00000007, - 0x0004003b,0x00000423,0x00000424,0x00000007,0x0004003b,0x00000030,0x0000042e,0x00000007, - 0x0004003b,0x00000030,0x00000431,0x00000007,0x0004003b,0x00000037,0x00000434,0x00000007, - 0x0004003b,0x00000030,0x0000043d,0x00000007,0x0004003b,0x00000030,0x0000043f,0x00000007, - 0x0004003b,0x00000030,0x00000444,0x00000007,0x0004003b,0x00000030,0x00000446,0x00000007, - 0x00050041,0x00000030,0x000003cb,0x000000ed,0x00000197,0x0004003d,0x0000002f,0x000003cc, - 0x000003cb,0x0003003e,0x000003ca,0x000003cc,0x00050041,0x00000030,0x000003ce,0x000000ed, - 0x0000023e,0x0004003d,0x0000002f,0x000003cf,0x000003ce,0x0003003e,0x000003cd,0x000003cf, - 0x00050041,0x00000030,0x000003d1,0x000000ed,0x000001a2,0x0004003d,0x0000002f,0x000003d2, - 0x000003d1,0x0003003e,0x000003d0,0x000003d2,0x00050041,0x00000030,0x000003d4,0x000000ed, - 0x000001a7,0x0004003d,0x0000002f,0x000003d5,0x000003d4,0x0003003e,0x000003d3,0x000003d5, - 0x00050041,0x00000007,0x000003d7,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x000003d8, - 0x000003d7,0x0003003e,0x000003d6,0x000003d8,0x00090039,0x0000002f,0x000003d9,0x000000e8, - 0x000003ca,0x000003cd,0x000003d0,0x000003d3,0x000003d6,0x0003003e,0x000003c9,0x000003d9, - 0x00050041,0x00000030,0x000003de,0x000000ed,0x0000019d,0x0004003d,0x0000002f,0x000003df, - 0x000003de,0x0003003e,0x000003dd,0x000003df,0x00050041,0x00000030,0x000003e1,0x000000ed, - 0x000003db,0x0004003d,0x0000002f,0x000003e2,0x000003e1,0x0003003e,0x000003e0,0x000003e2, - 0x00050041,0x00000030,0x000003e4,0x000000ed,0x000003dc,0x0004003d,0x0000002f,0x000003e5, - 0x000003e4,0x0003003e,0x000003e3,0x000003e5,0x00050041,0x00000030,0x000003e7,0x000000ed, - 0x000001ac,0x0004003d,0x0000002f,0x000003e8,0x000003e7,0x0003003e,0x000003e6,0x000003e8, - 0x00050041,0x00000007,0x000003ea,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x000003eb, - 0x000003ea,0x0003003e,0x000003e9,0x000003eb,0x00090039,0x0000002f,0x000003ec,0x000000e8, - 0x000003dd,0x000003e0,0x000003e3,0x000003e6,0x000003e9,0x0003003e,0x000003da,0x000003ec, - 0x00050041,0x00000030,0x000003f2,0x000000ed,0x000003ee,0x0004003d,0x0000002f,0x000003f3, - 0x000003f2,0x0003003e,0x000003f1,0x000003f3,0x00050041,0x00000030,0x000003f5,0x000000ed, - 0x000003ef,0x0004003d,0x0000002f,0x000003f6,0x000003f5,0x0003003e,0x000003f4,0x000003f6, - 0x00050041,0x00000030,0x000003f8,0x000000ed,0x000001b2,0x0004003d,0x0000002f,0x000003f9, - 0x000003f8,0x0003003e,0x000003f7,0x000003f9,0x00050041,0x00000030,0x000003fb,0x000000ed, - 0x000003f0,0x0004003d,0x0000002f,0x000003fc,0x000003fb,0x0003003e,0x000003fa,0x000003fc, - 0x00050041,0x00000007,0x000003fe,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x000003ff, - 0x000003fe,0x0003003e,0x000003fd,0x000003ff,0x00090039,0x0000002f,0x00000400,0x000000e8, - 0x000003f1,0x000003f4,0x000003f7,0x000003fa,0x000003fd,0x0003003e,0x000003ed,0x00000400, - 0x00050041,0x00000030,0x00000405,0x000000ed,0x00000402,0x0004003d,0x0000002f,0x00000406, - 0x00000405,0x0003003e,0x00000404,0x00000406,0x00050041,0x00000030,0x00000408,0x000000ed, - 0x000001b7,0x0004003d,0x0000002f,0x00000409,0x00000408,0x0003003e,0x00000407,0x00000409, - 0x00050041,0x00000030,0x0000040b,0x000000ed,0x00000403,0x0004003d,0x0000002f,0x0000040c, - 0x0000040b,0x0003003e,0x0000040a,0x0000040c,0x00050041,0x00000030,0x0000040e,0x000000ed, - 0x000001bd,0x0004003d,0x0000002f,0x0000040f,0x0000040e,0x0003003e,0x0000040d,0x0000040f, - 0x00050041,0x00000007,0x00000411,0x000000ee,0x000001fa,0x0004003d,0x00000006,0x00000412, - 0x00000411,0x0003003e,0x00000410,0x00000412,0x00090039,0x0000002f,0x00000413,0x000000e8, - 0x00000404,0x00000407,0x0000040a,0x0000040d,0x00000410,0x0003003e,0x00000401,0x00000413, - 0x0004003d,0x0000002f,0x00000416,0x000003c9,0x0003003e,0x00000415,0x00000416,0x0004003d, - 0x0000002f,0x00000418,0x000003da,0x0003003e,0x00000417,0x00000418,0x0004003d,0x0000002f, - 0x0000041a,0x000003ed,0x0003003e,0x00000419,0x0000041a,0x0004003d,0x0000002f,0x0000041c, - 0x00000401,0x0003003e,0x0000041b,0x0000041c,0x00050041,0x00000007,0x0000041e,0x000000ee, - 0x00000293,0x0004003d,0x00000006,0x0000041f,0x0000041e,0x0003003e,0x0000041d,0x0000041f, - 0x00090039,0x0000002f,0x00000420,0x000000e8,0x00000415,0x00000417,0x00000419,0x0000041b, - 0x0000041d,0x0003003e,0x00000414,0x00000420,0x00050041,0x00000030,0x00000425,0x000000ed, - 0x000003db,0x0004003d,0x0000002f,0x00000426,0x00000425,0x00050041,0x00000030,0x00000427, - 0x000000ed,0x000003dc,0x0004003d,0x0000002f,0x00000428,0x00000427,0x00050041,0x00000030, - 0x00000429,0x000000ed,0x000003ef,0x0004003d,0x0000002f,0x0000042a,0x00000429,0x00050041, - 0x00000030,0x0000042b,0x000000ed,0x000001b2,0x0004003d,0x0000002f,0x0000042c,0x0000042b, - 0x00070050,0x00000422,0x0000042d,0x00000426,0x00000428,0x0000042a,0x0000042c,0x0003003e, - 0x00000424,0x0000042d,0x00050041,0x00000030,0x0000042f,0x00000424,0x00000197,0x0004003d, - 0x0000002f,0x00000430,0x0000042f,0x0003003e,0x0000042e,0x00000430,0x00050041,0x00000030, - 0x00000432,0x00000424,0x00000197,0x0004003d,0x0000002f,0x00000433,0x00000432,0x0003003e, - 0x00000431,0x00000433,0x0003003e,0x00000434,0x0000023e,0x000200f9,0x00000435,0x000200f8, - 0x00000435,0x000400f6,0x00000437,0x00000438,0x00000000,0x000200f9,0x00000439,0x000200f8, - 0x00000439,0x0004003d,0x00000036,0x0000043a,0x00000434,0x000500b1,0x000000a7,0x0000043b, - 0x0000043a,0x0000019d,0x000400fa,0x0000043b,0x00000436,0x00000437,0x000200f8,0x00000436, - 0x0004003d,0x00000036,0x0000043c,0x00000434,0x0004003d,0x0000002f,0x0000043e,0x0000042e, - 0x0003003e,0x0000043d,0x0000043e,0x00050041,0x00000030,0x00000440,0x00000424,0x0000043c, - 0x0004003d,0x0000002f,0x00000441,0x00000440,0x0003003e,0x0000043f,0x00000441,0x00060039, - 0x0000002f,0x00000442,0x00000034,0x0000043d,0x0000043f,0x0003003e,0x0000042e,0x00000442, - 0x0004003d,0x00000036,0x00000443,0x00000434,0x0004003d,0x0000002f,0x00000445,0x00000431, - 0x0003003e,0x00000444,0x00000445,0x00050041,0x00000030,0x00000447,0x00000424,0x00000443, - 0x0004003d,0x0000002f,0x00000448,0x00000447,0x0003003e,0x00000446,0x00000448,0x00060039, - 0x0000002f,0x00000449,0x0000004b,0x00000444,0x00000446,0x0003003e,0x00000431,0x00000449, - 0x000200f9,0x00000438,0x000200f8,0x00000438,0x0004003d,0x00000036,0x0000044a,0x00000434, - 0x00050080,0x00000036,0x0000044b,0x0000044a,0x0000023e,0x0003003e,0x00000434,0x0000044b, - 0x000200f9,0x00000435,0x000200f8,0x00000437,0x0004003d,0x0000002f,0x0000044c,0x00000414, - 0x0004003d,0x0000002f,0x0000044d,0x0000042e,0x0004003d,0x0000002f,0x0000044e,0x00000431, - 0x0008000c,0x0000002f,0x0000044f,0x00000001,0x0000002b,0x0000044c,0x0000044d,0x0000044e, - 0x0003003e,0x00000414,0x0000044f,0x0004003d,0x0000002f,0x00000450,0x00000414,0x000200fe, - 0x00000450,0x00010038,0x00050036,0x00000055,0x000000f4,0x00000000,0x000000c5,0x00030037, - 0x0000006d,0x000000f1,0x00030037,0x0000006d,0x000000f2,0x00030037,0x0000006d,0x000000f3, - 0x000200f8,0x000000f5,0x0004003b,0x0000006d,0x00000453,0x00000007,0x0004003b,0x00000037, - 0x0000045a,0x00000007,0x0004003b,0x00000037,0x0000045d,0x00000007,0x0004003b,0x00000037, - 0x0000045f,0x00000007,0x0004003b,0x00000037,0x00000460,0x00000007,0x0004003b,0x00000037, - 0x00000466,0x00000007,0x0004003b,0x00000037,0x00000469,0x00000007,0x0004003b,0x00000037, - 0x0000046b,0x00000007,0x0004003b,0x00000037,0x0000046c,0x00000007,0x0004003d,0x00000055, - 0x00000454,0x000000f1,0x0004003d,0x00000055,0x00000455,0x000000f2,0x00050080,0x00000055, - 0x00000456,0x00000454,0x00000455,0x0003003e,0x00000453,0x00000456,0x00050041,0x00000037, - 0x00000457,0x000000f3,0x000001fa,0x0004003d,0x00000036,0x00000458,0x00000457,0x00050082, - 0x00000036,0x00000459,0x00000458,0x000001a2,0x00050041,0x00000037,0x0000045b,0x00000453, - 0x000001fa,0x0004003d,0x00000036,0x0000045c,0x0000045b,0x0003003e,0x0000045a,0x0000045c, - 0x0003003e,0x0000045d,0x00000459,0x00060039,0x00000036,0x0000045e,0x0000003b,0x0000045a, - 0x0000045d,0x0003003e,0x0000045f,0x0000023e,0x0003003e,0x00000460,0x0000045e,0x00060039, - 0x00000036,0x00000461,0x0000004f,0x0000045f,0x00000460,0x00050041,0x00000037,0x00000462, - 0x00000453,0x000001fa,0x0003003e,0x00000462,0x00000461,0x00050041,0x00000037,0x00000463, - 0x000000f3,0x00000293,0x0004003d,0x00000036,0x00000464,0x00000463,0x00050082,0x00000036, - 0x00000465,0x00000464,0x000001a2,0x00050041,0x00000037,0x00000467,0x00000453,0x00000293, - 0x0004003d,0x00000036,0x00000468,0x00000467,0x0003003e,0x00000466,0x00000468,0x0003003e, - 0x00000469,0x00000465,0x00060039,0x00000036,0x0000046a,0x0000003b,0x00000466,0x00000469, - 0x0003003e,0x0000046b,0x0000023e,0x0003003e,0x0000046c,0x0000046a,0x00060039,0x00000036, - 0x0000046d,0x0000004f,0x0000046b,0x0000046c,0x00050041,0x00000037,0x0000046e,0x00000453, - 0x00000293,0x0003003e,0x0000046e,0x0000046d,0x0004003d,0x00000055,0x0000046f,0x00000453, - 0x000200fe,0x0000046f,0x00010038,0x00050036,0x00000002,0x000000f9,0x00000000,0x000000f6, - 0x00030037,0x000000a0,0x000000f7,0x00030037,0x0000000f,0x000000f8,0x000200f8,0x000000fa, - 0x0004003d,0x0000000e,0x00000472,0x000000f8,0x00050041,0x0000000f,0x00000473,0x000000f7, - 0x000001a2,0x0004003d,0x0000000e,0x00000474,0x00000473,0x00050041,0x0000000f,0x00000475, - 0x000000f7,0x000001a7,0x0004003d,0x0000000e,0x00000476,0x00000475,0x0008000c,0x0000000e, - 0x00000477,0x00000001,0x0000002b,0x00000472,0x00000474,0x00000476,0x0003003e,0x000000f8, - 0x00000477,0x000100fd,0x00010038,0x00050036,0x00000006,0x000000fe,0x00000000,0x000000fb, - 0x00030037,0x0000001b,0x000000fc,0x00030037,0x00000007,0x000000fd,0x000200f8,0x000000ff, - 0x0004003b,0x0000001b,0x00000478,0x00000007,0x0004003b,0x00000007,0x0000047d,0x00000007, - 0x0004003b,0x00000007,0x00000481,0x00000007,0x0004003d,0x0000001a,0x00000479,0x000000fc, - 0x0004003d,0x00000006,0x0000047a,0x000000fd,0x00050050,0x0000001a,0x0000047b,0x0000047a, - 0x0000047a,0x00050085,0x0000001a,0x0000047c,0x00000479,0x0000047b,0x0003003e,0x00000478, - 0x0000047c,0x0004003d,0x0000001a,0x0000047e,0x00000478,0x0004003d,0x0000001a,0x0000047f, - 0x00000478,0x00050094,0x00000006,0x00000480,0x0000047e,0x0000047f,0x0003003e,0x00000481, - 0x00000480,0x00050039,0x00000006,0x00000482,0x000000e0,0x00000481,0x0003003e,0x0000047d, - 0x00000482,0x0004003d,0x00000006,0x00000483,0x0000047d,0x000200fe,0x00000483,0x00010038, - 0x00050036,0x00000006,0x00000106,0x00000000,0x00000103,0x00030037,0x00000100,0x00000104, - 0x00030037,0x00000102,0x00000105,0x000200f8,0x00000107,0x0004003b,0x00000007,0x00000486, - 0x00000007,0x0004003b,0x00000007,0x0000048f,0x00000007,0x0004003b,0x00000007,0x00000490, - 0x00000007,0x00040039,0x0000001a,0x00000487,0x00000062,0x00050050,0x0000001a,0x00000488, - 0x00000155,0x00000155,0x00050088,0x0000001a,0x00000489,0x00000488,0x00000487,0x00050050, - 0x0000001a,0x0000048a,0x00000155,0x00000155,0x00050083,0x0000001a,0x0000048b,0x00000489, - 0x0000048a,0x00050051,0x00000006,0x0000048c,0x0000048b,0x00000000,0x00050081,0x00000006, - 0x0000048d,0x00000155,0x0000048c,0x0003003e,0x00000486,0x0000048d,0x0003003e,0x0000048f, - 0x0000048e,0x0004003d,0x00000006,0x00000491,0x00000486,0x0003003e,0x00000490,0x00000491, - 0x00060039,0x00000006,0x00000492,0x00000023,0x0000048f,0x00000490,0x000200fe,0x00000492, - 0x00010038,0x00050036,0x0000000e,0x00000109,0x00000000,0x0000006e,0x00030037,0x0000006d, - 0x00000108,0x000200f8,0x0000010a,0x0004003b,0x0000000f,0x00000495,0x00000007,0x0004003b, - 0x0000006d,0x00000497,0x00000007,0x0004003b,0x0000000f,0x0000049a,0x00000007,0x0004003b, - 0x0000000f,0x0000049b,0x00000007,0x0004003b,0x0000000f,0x0000049f,0x00000007,0x0004003b, - 0x0000000f,0x000004a0,0x00000007,0x0004003d,0x00000055,0x00000498,0x00000108,0x0003003e, - 0x00000497,0x00000498,0x00050039,0x0000000e,0x00000499,0x00000070,0x00000497,0x0003003e, - 0x0000049a,0x00000496,0x0003003e,0x0000049b,0x00000499,0x00060039,0x0000000e,0x0000049c, - 0x00000047,0x0000049a,0x0000049b,0x00040039,0x00000006,0x0000049d,0x00000096,0x0005008e, - 0x0000000e,0x0000049e,0x0000049c,0x0000049d,0x0003003e,0x00000495,0x0000049e,0x0004003d, - 0x0000000e,0x000004a1,0x00000495,0x0003003e,0x000004a0,0x000004a1,0x00050039,0x0000000e, - 0x000004a2,0x000000b9,0x000004a0,0x0003003e,0x0000049f,0x000004a2,0x0004003d,0x0000000e, - 0x000004a3,0x0000049f,0x000200fe,0x000004a3,0x00010038,0x00050036,0x00000002,0x0000010e, - 0x00000000,0x0000010b,0x00030037,0x00000100,0x0000010c,0x00030037,0x00000102,0x0000010d, - 0x000200f8,0x0000010f,0x0004003b,0x0000001b,0x000004a6,0x00000007,0x0004003b,0x0000001b, - 0x000004aa,0x00000007,0x0004003b,0x0000006d,0x000004ae,0x00000007,0x0004003b,0x0000001b, - 0x000004b2,0x00000007,0x0004003b,0x0000001b,0x000004b8,0x00000007,0x0004003b,0x0000006d, - 0x000004bc,0x00000007,0x0004003b,0x000000a8,0x000004cd,0x00000007,0x0004003b,0x000000a8, - 0x000004d3,0x00000007,0x0004003b,0x0000001b,0x000004d9,0x00000007,0x0004003b,0x000000a8, - 0x000004dc,0x00000007,0x0004003b,0x00000037,0x000004df,0x00000007,0x0004003b,0x00000037, - 0x000004e0,0x00000007,0x0004003b,0x00000037,0x000004e8,0x00000007,0x0004003b,0x0000006d, - 0x000004f0,0x00000007,0x0004003b,0x00000037,0x000004f2,0x00000007,0x0004003b,0x00000037, - 0x000004fb,0x00000007,0x0004003b,0x0000006d,0x00000504,0x00000007,0x0004003b,0x0000006d, - 0x0000050a,0x00000007,0x0004003b,0x0000006d,0x0000050c,0x00000007,0x0004003b,0x0000006d, - 0x0000050e,0x00000007,0x0004003b,0x0000006d,0x0000050f,0x00000007,0x0004003b,0x00000513, - 0x00000514,0x00000007,0x0004003b,0x0000006d,0x00000516,0x00000007,0x0004003b,0x0000000f, - 0x0000052c,0x00000007,0x0004003b,0x0000000f,0x00000530,0x00000007,0x0004003b,0x0000000f, - 0x00000532,0x00000007,0x0004003b,0x00000007,0x00000537,0x00000007,0x0004003b,0x00000102, - 0x00000538,0x00000007,0x0004003b,0x00000007,0x0000053c,0x00000007,0x0004003b,0x00000007, - 0x00000541,0x00000007,0x0004003b,0x00000007,0x00000542,0x00000007,0x0004003b,0x00000007, - 0x00000544,0x00000007,0x0004003b,0x00000007,0x0000054e,0x00000007,0x0004003b,0x00000007, - 0x00000550,0x00000007,0x0004003b,0x00000007,0x00000551,0x00000007,0x0004003b,0x00000007, - 0x00000553,0x00000007,0x0004003b,0x00000007,0x00000554,0x00000007,0x0004003b,0x00000007, - 0x00000556,0x00000007,0x0004003b,0x00000007,0x00000557,0x00000007,0x0004003b,0x00000007, - 0x00000559,0x00000007,0x0004003b,0x00000007,0x0000055b,0x00000007,0x0004003b,0x00000037, - 0x0000055e,0x00000007,0x0004003b,0x00000037,0x00000566,0x00000007,0x0004003b,0x0000006d, - 0x0000056e,0x00000007,0x0004003b,0x00000037,0x00000570,0x00000007,0x0004003b,0x00000037, - 0x00000579,0x00000007,0x0004003b,0x0000001b,0x00000582,0x00000007,0x0004003b,0x0000001b, - 0x00000587,0x00000007,0x0004003b,0x0000006d,0x0000058b,0x00000007,0x0004003b,0x00000007, - 0x00000591,0x00000007,0x0004003b,0x0000006d,0x00000594,0x00000007,0x0004003b,0x0000006d, - 0x00000595,0x00000007,0x0004003b,0x00000007,0x0000059c,0x00000007,0x0004003b,0x0000001b, - 0x0000059e,0x00000007,0x0004003b,0x00000007,0x000005a0,0x00000007,0x0004003b,0x00000007, - 0x000005b2,0x00000007,0x0004003b,0x00000007,0x000005b6,0x00000007,0x0004003b,0x000000a8, - 0x000005bd,0x00000007,0x0004003b,0x000000a8,0x000005c7,0x00000007,0x0004003b,0x000000a0, - 0x000005c9,0x00000007,0x0004003b,0x000000a0,0x000005d5,0x00000007,0x0004003b,0x000000a0, - 0x000005f4,0x00000007,0x0004003b,0x0000000f,0x000005f7,0x00000007,0x0004003b,0x0000000f, - 0x00000600,0x00000007,0x0004003b,0x0000000f,0x00000604,0x00000007,0x0004003b,0x0000000f, - 0x00000606,0x00000007,0x00050051,0x00000055,0x000004a7,0x0000010c,0x00000000,0x0004006f, - 0x0000001a,0x000004a8,0x000004a7,0x00050081,0x0000001a,0x000004a9,0x000004a8,0x00000338, - 0x0003003e,0x000004a6,0x000004a9,0x0004003d,0x0000001a,0x000004ab,0x000004a6,0x00040039, - 0x0000001a,0x000004ac,0x00000062,0x00050085,0x0000001a,0x000004ad,0x000004ab,0x000004ac, - 0x0003003e,0x000004aa,0x000004ad,0x0004003d,0x0000001a,0x000004af,0x000004aa,0x0006000c, - 0x0000001a,0x000004b0,0x00000001,0x00000008,0x000004af,0x0004006e,0x00000055,0x000004b1, - 0x000004b0,0x0003003e,0x000004ae,0x000004b1,0x0004003d,0x00000055,0x000004b3,0x000004ae, - 0x0004006f,0x0000001a,0x000004b4,0x000004b3,0x00050081,0x0000001a,0x000004b5,0x000004b4, - 0x00000338,0x00040039,0x0000001a,0x000004b6,0x00000060,0x00050083,0x0000001a,0x000004b7, - 0x000004b5,0x000004b6,0x0003003e,0x000004b2,0x000004b7,0x0004003d,0x0000001a,0x000004b9, - 0x000004b2,0x0004003d,0x0000001a,0x000004ba,0x000004aa,0x00050083,0x0000001a,0x000004bb, - 0x000004b9,0x000004ba,0x0003003e,0x000004b8,0x000004bb,0x00050041,0x00000007,0x000004bd, - 0x000004b2,0x000001fa,0x0004003d,0x00000006,0x000004be,0x000004bd,0x00050041,0x00000007, - 0x000004bf,0x000004aa,0x000001fa,0x0004003d,0x00000006,0x000004c0,0x000004bf,0x000500ba, - 0x000000a7,0x000004c1,0x000004be,0x000004c0,0x000600a9,0x00000036,0x000004c4,0x000004c1, - 0x000004c2,0x000004c3,0x00050041,0x00000037,0x000004c5,0x000004bc,0x000001fa,0x0003003e, - 0x000004c5,0x000004c4,0x00050041,0x00000007,0x000004c6,0x000004b2,0x00000293,0x0004003d, - 0x00000006,0x000004c7,0x000004c6,0x00050041,0x00000007,0x000004c8,0x000004aa,0x00000293, - 0x0004003d,0x00000006,0x000004c9,0x000004c8,0x000500ba,0x000000a7,0x000004ca,0x000004c7, - 0x000004c9,0x000600a9,0x00000036,0x000004cb,0x000004ca,0x000004c2,0x000004c3,0x00050041, - 0x00000037,0x000004cc,0x000004bc,0x00000293,0x0003003e,0x000004cc,0x000004cb,0x00050041, - 0x00000007,0x000004ce,0x000004b2,0x00000293,0x0004003d,0x00000006,0x000004cf,0x000004ce, - 0x00050041,0x00000007,0x000004d0,0x000004aa,0x00000293,0x0004003d,0x00000006,0x000004d1, - 0x000004d0,0x000500ba,0x000000a7,0x000004d2,0x000004cf,0x000004d1,0x0003003e,0x000004cd, - 0x000004d2,0x00050041,0x00000007,0x000004d4,0x000004b2,0x000001fa,0x0004003d,0x00000006, - 0x000004d5,0x000004d4,0x00050041,0x00000007,0x000004d6,0x000004aa,0x000001fa,0x0004003d, - 0x00000006,0x000004d7,0x000004d6,0x000500ba,0x000000a7,0x000004d8,0x000004d5,0x000004d7, - 0x0003003e,0x000004d3,0x000004d8,0x0004003d,0x00000055,0x000004da,0x000004bc,0x0004006f, - 0x0000001a,0x000004db,0x000004da,0x0003003e,0x000004d9,0x000004db,0x00050051,0x00000006, - 0x000004dd,0x0000010c,0x0000000a,0x000500b4,0x000000a7,0x000004de,0x000004dd,0x00000154, - 0x0003003e,0x000004dc,0x000004de,0x0003003e,0x000004df,0x00000197,0x0003003e,0x000004e0, - 0x00000197,0x000200f9,0x000004e1,0x000200f8,0x000004e1,0x000400f6,0x000004e3,0x000004e4, - 0x00000000,0x000200f9,0x000004e5,0x000200f8,0x000004e5,0x0004003d,0x00000036,0x000004e6, - 0x000004e0,0x000500b1,0x000000a7,0x000004e7,0x000004e6,0x000001a7,0x000400fa,0x000004e7, - 0x000004e2,0x000004e3,0x000200f8,0x000004e2,0x0003003e,0x000004e8,0x00000197,0x000200f9, - 0x000004e9,0x000200f8,0x000004e9,0x000400f6,0x000004eb,0x000004ec,0x00000000,0x000200f9, - 0x000004ed,0x000200f8,0x000004ed,0x0004003d,0x00000036,0x000004ee,0x000004e8,0x000500b1, - 0x000000a7,0x000004ef,0x000004ee,0x000001a7,0x000400fa,0x000004ef,0x000004ea,0x000004eb, - 0x000200f8,0x000004ea,0x0004003d,0x000000a7,0x000004f1,0x000004d3,0x000300f7,0x000004f4, - 0x00000000,0x000400fa,0x000004f1,0x000004f3,0x000004f7,0x000200f8,0x000004f3,0x0004003d, - 0x00000036,0x000004f5,0x000004e8,0x00050082,0x00000036,0x000004f6,0x000001a7,0x000004f5, - 0x0003003e,0x000004f2,0x000004f6,0x000200f9,0x000004f4,0x000200f8,0x000004f7,0x0004003d, - 0x00000036,0x000004f8,0x000004e8,0x0003003e,0x000004f2,0x000004f8,0x000200f9,0x000004f4, - 0x000200f8,0x000004f4,0x0004003d,0x00000036,0x000004f9,0x000004f2,0x0004003d,0x000000a7, - 0x000004fa,0x000004cd,0x000300f7,0x000004fd,0x00000000,0x000400fa,0x000004fa,0x000004fc, - 0x00000500,0x000200f8,0x000004fc,0x0004003d,0x00000036,0x000004fe,0x000004e0,0x00050082, - 0x00000036,0x000004ff,0x000001a7,0x000004fe,0x0003003e,0x000004fb,0x000004ff,0x000200f9, - 0x000004fd,0x000200f8,0x00000500,0x0004003d,0x00000036,0x00000501,0x000004e0,0x0003003e, - 0x000004fb,0x00000501,0x000200f9,0x000004fd,0x000200f8,0x000004fd,0x0004003d,0x00000036, - 0x00000502,0x000004fb,0x00050050,0x00000055,0x00000503,0x000004f9,0x00000502,0x0003003e, - 0x000004f0,0x00000503,0x0004003d,0x00000055,0x00000505,0x000004ae,0x0004003d,0x00000055, - 0x00000506,0x000004bc,0x00050080,0x00000055,0x00000507,0x00000505,0x00000506,0x0004003d, - 0x00000055,0x00000508,0x000004f0,0x00050080,0x00000055,0x00000509,0x00000507,0x00000508, - 0x0003003e,0x00000504,0x00000509,0x00040039,0x00000055,0x0000050b,0x00000057,0x0004003d, - 0x00000055,0x0000050d,0x00000504,0x0003003e,0x0000050c,0x0000050d,0x0003003e,0x0000050e, - 0x0000021e,0x0003003e,0x0000050f,0x0000050b,0x00070039,0x00000055,0x00000510,0x000000c9, - 0x0000050c,0x0000050e,0x0000050f,0x0003003e,0x0000050a,0x00000510,0x0004003d,0x00000036, - 0x00000515,0x000004df,0x0004003d,0x00000055,0x00000517,0x0000050a,0x0003003e,0x00000516, - 0x00000517,0x00050039,0x0000000e,0x00000518,0x00000109,0x00000516,0x00050041,0x0000000f, - 0x00000519,0x00000514,0x00000515,0x0003003e,0x00000519,0x00000518,0x0004003d,0x00000036, - 0x0000051a,0x000004df,0x00050080,0x00000036,0x0000051b,0x0000051a,0x0000023e,0x0003003e, - 0x000004df,0x0000051b,0x000200f9,0x000004ec,0x000200f8,0x000004ec,0x0004003d,0x00000036, - 0x0000051c,0x000004e8,0x00050080,0x00000036,0x0000051d,0x0000051c,0x0000023e,0x0003003e, - 0x000004e8,0x0000051d,0x000200f9,0x000004e9,0x000200f8,0x000004eb,0x000200f9,0x000004e4, - 0x000200f8,0x000004e4,0x0004003d,0x00000036,0x0000051e,0x000004e0,0x00050080,0x00000036, - 0x0000051f,0x0000051e,0x0000023e,0x0003003e,0x000004e0,0x0000051f,0x000200f9,0x000004e1, - 0x000200f8,0x000004e3,0x0004003d,0x000000a7,0x00000520,0x000004dc,0x000300f7,0x00000522, - 0x00000000,0x000400fa,0x00000520,0x00000521,0x00000522,0x000200f8,0x00000521,0x0003003e, - 0x000004df,0x00000197,0x000200f9,0x00000523,0x000200f8,0x00000523,0x000400f6,0x00000525, - 0x00000526,0x00000000,0x000200f9,0x00000527,0x000200f8,0x00000527,0x0004003d,0x00000036, - 0x00000528,0x000004df,0x000500b1,0x000000a7,0x00000529,0x00000528,0x000003ef,0x000400fa, - 0x00000529,0x00000524,0x00000525,0x000200f8,0x00000524,0x0004003d,0x00000036,0x0000052a, - 0x000004df,0x0004003d,0x00000036,0x0000052b,0x000004df,0x00050041,0x0000000f,0x0000052d, - 0x00000514,0x0000052b,0x0004003d,0x0000000e,0x0000052e,0x0000052d,0x0003003e,0x0000052c, - 0x0000052e,0x00050039,0x0000000e,0x0000052f,0x000000b6,0x0000052c,0x0003003e,0x00000530, - 0x0000052f,0x00050039,0x0000000e,0x00000531,0x000000bc,0x00000530,0x0003003e,0x00000532, - 0x00000531,0x00050039,0x0000000e,0x00000533,0x000000b9,0x00000532,0x00050041,0x0000000f, - 0x00000534,0x00000514,0x0000052a,0x0003003e,0x00000534,0x00000533,0x000200f9,0x00000526, - 0x000200f8,0x00000526,0x0004003d,0x00000036,0x00000535,0x000004df,0x00050080,0x00000036, - 0x00000536,0x00000535,0x0000023e,0x0003003e,0x000004df,0x00000536,0x000200f9,0x00000523, - 0x000200f8,0x00000525,0x000200f9,0x00000522,0x000200f8,0x00000522,0x0004003d,0x00000101, - 0x00000539,0x0000010d,0x0003003e,0x00000538,0x00000539,0x00060039,0x00000006,0x0000053a, - 0x00000106,0x0000010c,0x00000538,0x0004003d,0x00000101,0x0000053b,0x00000538,0x0003003e, - 0x0000010d,0x0000053b,0x0003003e,0x00000537,0x0000053a,0x0004003d,0x00000006,0x0000053d, - 0x00000537,0x00050081,0x00000006,0x0000053e,0x00000155,0x0000053d,0x00050085,0x00000006, - 0x00000540,0x0000053e,0x0000053f,0x0003003e,0x00000541,0x00000155,0x0003003e,0x00000542, - 0x00000540,0x00060039,0x00000006,0x00000543,0x0000003f,0x00000541,0x00000542,0x0003003e, - 0x0000053c,0x00000543,0x00050051,0x00000006,0x00000545,0x0000010c,0x00000007,0x00050085, - 0x00000006,0x00000546,0x00000545,0x000002b1,0x00050083,0x00000006,0x00000547,0x00000155, - 0x00000546,0x00050051,0x00000006,0x00000548,0x0000010c,0x00000009,0x00050083,0x00000006, - 0x00000549,0x00000155,0x00000548,0x00050041,0x00000007,0x0000054a,0x0000010d,0x0000019d, - 0x0004003d,0x00000006,0x0000054b,0x0000054a,0x00050085,0x00000006,0x0000054d,0x0000054b, - 0x0000054c,0x0003003e,0x0000054e,0x0000054d,0x00050039,0x00000006,0x0000054f,0x00000018, - 0x0000054e,0x0003003e,0x00000550,0x00000549,0x0003003e,0x00000551,0x0000054f,0x00060039, - 0x00000006,0x00000552,0x00000023,0x00000550,0x00000551,0x0003003e,0x00000553,0x00000547, - 0x0003003e,0x00000554,0x00000552,0x00060039,0x00000006,0x00000555,0x00000023,0x00000553, - 0x00000554,0x0003003e,0x00000544,0x00000555,0x0004003d,0x00000006,0x00000558,0x0000053c, - 0x0003003e,0x00000557,0x00000558,0x0004003d,0x00000006,0x0000055a,0x00000537,0x0003003e, - 0x00000559,0x0000055a,0x0004003d,0x00000006,0x0000055c,0x00000544,0x0003003e,0x0000055b, - 0x0000055c,0x00070039,0x00000006,0x0000055d,0x0000000c,0x00000557,0x00000559,0x0000055b, - 0x0003003e,0x00000556,0x0000055d,0x0003003e,0x000004df,0x00000197,0x0003003e,0x0000055e, - 0x00000197,0x000200f9,0x0000055f,0x000200f8,0x0000055f,0x000400f6,0x00000561,0x00000562, - 0x00000000,0x000200f9,0x00000563,0x000200f8,0x00000563,0x0004003d,0x00000036,0x00000564, - 0x0000055e,0x000500b1,0x000000a7,0x00000565,0x00000564,0x000001a7,0x000400fa,0x00000565, - 0x00000560,0x00000561,0x000200f8,0x00000560,0x0003003e,0x00000566,0x00000197,0x000200f9, - 0x00000567,0x000200f8,0x00000567,0x000400f6,0x00000569,0x0000056a,0x00000000,0x000200f9, - 0x0000056b,0x000200f8,0x0000056b,0x0004003d,0x00000036,0x0000056c,0x00000566,0x000500b1, - 0x000000a7,0x0000056d,0x0000056c,0x000001a7,0x000400fa,0x0000056d,0x00000568,0x00000569, - 0x000200f8,0x00000568,0x0004003d,0x000000a7,0x0000056f,0x000004d3,0x000300f7,0x00000572, - 0x00000000,0x000400fa,0x0000056f,0x00000571,0x00000575,0x000200f8,0x00000571,0x0004003d, - 0x00000036,0x00000573,0x00000566,0x00050082,0x00000036,0x00000574,0x000001a7,0x00000573, - 0x0003003e,0x00000570,0x00000574,0x000200f9,0x00000572,0x000200f8,0x00000575,0x0004003d, - 0x00000036,0x00000576,0x00000566,0x0003003e,0x00000570,0x00000576,0x000200f9,0x00000572, - 0x000200f8,0x00000572,0x0004003d,0x00000036,0x00000577,0x00000570,0x0004003d,0x000000a7, - 0x00000578,0x000004cd,0x000300f7,0x0000057b,0x00000000,0x000400fa,0x00000578,0x0000057a, - 0x0000057e,0x000200f8,0x0000057a,0x0004003d,0x00000036,0x0000057c,0x0000055e,0x00050082, - 0x00000036,0x0000057d,0x000001a7,0x0000057c,0x0003003e,0x00000579,0x0000057d,0x000200f9, - 0x0000057b,0x000200f8,0x0000057e,0x0004003d,0x00000036,0x0000057f,0x0000055e,0x0003003e, - 0x00000579,0x0000057f,0x000200f9,0x0000057b,0x000200f8,0x0000057b,0x0004003d,0x00000036, - 0x00000580,0x00000579,0x00050050,0x00000055,0x00000581,0x00000577,0x00000580,0x0003003e, - 0x0000056e,0x00000581,0x0004003d,0x0000001a,0x00000583,0x000004d9,0x0004003d,0x00000055, - 0x00000584,0x0000056e,0x0004006f,0x0000001a,0x00000585,0x00000584,0x00050081,0x0000001a, - 0x00000586,0x00000583,0x00000585,0x0003003e,0x00000582,0x00000586,0x0004003d,0x0000001a, - 0x00000588,0x000004b8,0x0004003d,0x0000001a,0x00000589,0x00000582,0x00050081,0x0000001a, - 0x0000058a,0x00000588,0x00000589,0x0003003e,0x00000587,0x0000058a,0x0004003d,0x00000055, - 0x0000058c,0x000004ae,0x0004003d,0x00000055,0x0000058d,0x000004bc,0x00050080,0x00000055, - 0x0000058e,0x0000058c,0x0000058d,0x0004003d,0x00000055,0x0000058f,0x0000056e,0x00050080, - 0x00000055,0x00000590,0x0000058e,0x0000058f,0x0003003e,0x0000058b,0x00000590,0x0004003d, - 0x00000055,0x00000592,0x0000058b,0x00040039,0x00000055,0x00000593,0x00000057,0x0003003e, - 0x00000594,0x00000592,0x0003003e,0x00000595,0x00000593,0x00060039,0x000000a7,0x00000596, - 0x000000d4,0x00000594,0x00000595,0x000600a9,0x00000006,0x00000597,0x00000596,0x00000155, - 0x00000154,0x0003003e,0x00000591,0x00000597,0x0004003d,0x000000a7,0x00000598,0x000004dc, - 0x000400a8,0x000000a7,0x00000599,0x00000598,0x000300f7,0x0000059b,0x00000000,0x000400fa, - 0x00000599,0x0000059a,0x0000059b,0x000200f8,0x0000059a,0x0004003d,0x00000006,0x0000059d, - 0x00000591,0x0004003d,0x0000001a,0x0000059f,0x00000587,0x0003003e,0x0000059e,0x0000059f, - 0x0004003d,0x00000006,0x000005a1,0x00000556,0x0003003e,0x000005a0,0x000005a1,0x00060039, - 0x00000006,0x000005a2,0x000000fe,0x0000059e,0x000005a0,0x00050085,0x00000006,0x000005a3, - 0x0000059d,0x000005a2,0x0003003e,0x0000059c,0x000005a3,0x0004003d,0x00000036,0x000005a4, - 0x000004df,0x00050041,0x0000000f,0x000005a5,0x00000514,0x000005a4,0x0004003d,0x0000000e, - 0x000005a6,0x000005a5,0x0004003d,0x00000006,0x000005a7,0x0000059c,0x0005008e,0x0000000e, - 0x000005a8,0x000005a6,0x000005a7,0x00050041,0x0000000f,0x000005a9,0x0000010d,0x0000023e, - 0x0004003d,0x0000000e,0x000005aa,0x000005a9,0x00050081,0x0000000e,0x000005ab,0x000005aa, - 0x000005a8,0x00050041,0x0000000f,0x000005ac,0x0000010d,0x0000023e,0x0003003e,0x000005ac, - 0x000005ab,0x0004003d,0x00000006,0x000005ad,0x0000059c,0x00050041,0x00000007,0x000005ae, - 0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005af,0x000005ae,0x00050081,0x00000006, - 0x000005b0,0x000005af,0x000005ad,0x00050041,0x00000007,0x000005b1,0x0000010d,0x000001a2, - 0x0003003e,0x000005b1,0x000005b0,0x000200f9,0x0000059b,0x000200f8,0x0000059b,0x0004003d, - 0x0000001a,0x000005b3,0x00000587,0x0004003d,0x0000001a,0x000005b4,0x00000587,0x00050094, - 0x00000006,0x000005b5,0x000005b3,0x000005b4,0x0003003e,0x000005b2,0x000005b5,0x0004003d, - 0x00000006,0x000005b8,0x000005b2,0x00050085,0x00000006,0x000005b9,0x000005b7,0x000005b8, - 0x0006000c,0x00000006,0x000005ba,0x00000001,0x0000001b,0x000005b9,0x0004003d,0x00000006, - 0x000005bb,0x00000591,0x00050085,0x00000006,0x000005bc,0x000005ba,0x000005bb,0x0003003e, - 0x000005b6,0x000005bc,0x0004003d,0x00000036,0x000005be,0x0000055e,0x000500aa,0x000000a7, - 0x000005bf,0x000005be,0x00000197,0x0004003d,0x00000036,0x000005c0,0x00000566,0x000500aa, - 0x000000a7,0x000005c1,0x000005c0,0x00000197,0x000500a7,0x000000a7,0x000005c2,0x000005bf, - 0x000005c1,0x0003003e,0x000005bd,0x000005c2,0x0004003d,0x00000036,0x000005c3,0x000004df, - 0x00050041,0x0000000f,0x000005c4,0x00000514,0x000005c3,0x0004003d,0x0000000e,0x000005c5, - 0x000005c4,0x0004003d,0x00000006,0x000005c6,0x000005b6,0x0004003d,0x000000a7,0x000005c8, - 0x000005bd,0x0003003e,0x000005c7,0x000005c8,0x00050041,0x000000a0,0x000005ca,0x0000010d, - 0x00000197,0x0004003d,0x0000009f,0x000005cb,0x000005ca,0x0003003e,0x000005c9,0x000005cb, - 0x00080039,0x00000002,0x000005cc,0x000000ae,0x000005c7,0x000005c9,0x000005c5,0x000005c6, - 0x0004003d,0x0000009f,0x000005cd,0x000005c9,0x00050041,0x000000a0,0x000005ce,0x0000010d, - 0x00000197,0x0003003e,0x000005ce,0x000005cd,0x0004003d,0x00000036,0x000005cf,0x000004df, - 0x00050080,0x00000036,0x000005d0,0x000005cf,0x0000023e,0x0003003e,0x000004df,0x000005d0, - 0x000200f9,0x0000056a,0x000200f8,0x0000056a,0x0004003d,0x00000036,0x000005d1,0x00000566, - 0x00050080,0x00000036,0x000005d2,0x000005d1,0x0000023e,0x0003003e,0x00000566,0x000005d2, - 0x000200f9,0x00000567,0x000200f8,0x00000569,0x000200f9,0x00000562,0x000200f8,0x00000562, - 0x0004003d,0x00000036,0x000005d3,0x0000055e,0x00050080,0x00000036,0x000005d4,0x000005d3, - 0x0000023e,0x0003003e,0x0000055e,0x000005d4,0x000200f9,0x0000055f,0x000200f8,0x00000561, - 0x00050041,0x000000a0,0x000005d6,0x0000010d,0x00000197,0x0004003d,0x0000009f,0x000005d7, - 0x000005d6,0x0003003e,0x000005d5,0x000005d7,0x00050039,0x00000002,0x000005d8,0x000000b2, - 0x000005d5,0x0004003d,0x0000009f,0x000005d9,0x000005d5,0x00050041,0x000000a0,0x000005da, - 0x0000010d,0x00000197,0x0003003e,0x000005da,0x000005d9,0x00050041,0x00000007,0x000005db, - 0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005dc,0x000005db,0x000500ba,0x000000a7, - 0x000005dd,0x000005dc,0x000002e7,0x000600a9,0x00000006,0x000005de,0x000005dd,0x00000155, - 0x00000154,0x00050041,0x00000007,0x000005df,0x0000010d,0x000001a2,0x0004003d,0x00000006, - 0x000005e0,0x000005df,0x00050085,0x00000006,0x000005e1,0x000005e0,0x000005de,0x00050041, - 0x00000007,0x000005e2,0x0000010d,0x000001a2,0x0003003e,0x000005e2,0x000005e1,0x00050041, - 0x00000007,0x000005e3,0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005e4,0x000005e3, - 0x000500ba,0x000000a7,0x000005e5,0x000005e4,0x000002e7,0x000300f7,0x000005e7,0x00000000, - 0x000400fa,0x000005e5,0x000005e6,0x000005e7,0x000200f8,0x000005e6,0x00050041,0x0000000f, - 0x000005e8,0x0000010d,0x0000023e,0x0004003d,0x0000000e,0x000005e9,0x000005e8,0x00050041, - 0x00000007,0x000005ea,0x0000010d,0x000001a2,0x0004003d,0x00000006,0x000005eb,0x000005ea, - 0x00060050,0x0000000e,0x000005ec,0x000005eb,0x000005eb,0x000005eb,0x00050088,0x0000000e, - 0x000005ed,0x000005e9,0x000005ec,0x00050041,0x0000000f,0x000005ee,0x0000010d,0x0000023e, - 0x0003003e,0x000005ee,0x000005ed,0x00050041,0x00000007,0x000005f0,0x0000010d,0x000001a2, - 0x0004003d,0x00000006,0x000005f1,0x000005f0,0x00050085,0x00000006,0x000005f2,0x000005f1, - 0x000005ef,0x00050041,0x00000007,0x000005f3,0x0000010d,0x000001a2,0x0003003e,0x000005f3, - 0x000005f2,0x00050041,0x000000a0,0x000005f5,0x0000010d,0x00000197,0x0004003d,0x0000009f, - 0x000005f6,0x000005f5,0x0003003e,0x000005f4,0x000005f6,0x00050041,0x0000000f,0x000005f8, - 0x0000010d,0x0000023e,0x0004003d,0x0000000e,0x000005f9,0x000005f8,0x0003003e,0x000005f7, - 0x000005f9,0x00060039,0x00000002,0x000005fa,0x000000f9,0x000005f4,0x000005f7,0x0004003d, - 0x0000000e,0x000005fb,0x000005f7,0x00050041,0x0000000f,0x000005fc,0x0000010d,0x0000023e, - 0x0003003e,0x000005fc,0x000005fb,0x000200f9,0x000005e7,0x000200f8,0x000005e7,0x0004003d, - 0x000000a7,0x000005fd,0x000004dc,0x000300f7,0x000005ff,0x00000000,0x000400fa,0x000005fd, - 0x000005fe,0x000005ff,0x000200f8,0x000005fe,0x00060041,0x0000000f,0x00000601,0x0000010d, - 0x00000197,0x00000197,0x0004003d,0x0000000e,0x00000602,0x00000601,0x0003003e,0x00000600, - 0x00000602,0x00050039,0x0000000e,0x00000603,0x000000b6,0x00000600,0x0003003e,0x00000604, - 0x00000603,0x00050039,0x0000000e,0x00000605,0x000000bf,0x00000604,0x0003003e,0x00000606, - 0x00000605,0x00050039,0x0000000e,0x00000607,0x000000b9,0x00000606,0x00050041,0x0000000f, - 0x00000608,0x0000010d,0x0000023e,0x0003003e,0x00000608,0x00000607,0x00050041,0x00000007, - 0x00000609,0x0000010d,0x000001a2,0x0003003e,0x00000609,0x00000155,0x00050041,0x00000007, - 0x0000060a,0x0000010d,0x0000019d,0x0003003e,0x0000060a,0x00000154,0x000200f9,0x000005ff, - 0x000200f8,0x000005ff,0x000100fd,0x00010038,0x00050036,0x0000002f,0x00000111,0x00000000, - 0x00000072,0x00030037,0x0000006d,0x00000110,0x000200f8,0x00000112,0x0004003b,0x0000006d, - 0x0000060b,0x00000007,0x0004003d,0x00000055,0x0000060c,0x00000110,0x0003003e,0x0000060b, - 0x0000060c,0x00050039,0x0000002f,0x0000060d,0x00000074,0x0000060b,0x000200fe,0x0000060d, - 0x00010038,0x00050036,0x000000ea,0x00000116,0x00000000,0x00000113,0x00030037,0x0000006d, - 0x00000114,0x00030037,0x0000006d,0x00000115,0x000200f8,0x00000117,0x0004003b,0x000000eb, - 0x00000610,0x00000007,0x0004003b,0x0000006d,0x00000612,0x00000007,0x0004003b,0x0000006d, - 0x00000614,0x00000007,0x0004003b,0x0000006d,0x00000615,0x00000007,0x0004003b,0x0000006d, - 0x00000618,0x00000007,0x0004003b,0x0000006d,0x0000061c,0x00000007,0x0004003b,0x0000006d, - 0x0000061e,0x00000007,0x0004003b,0x0000006d,0x0000061f,0x00000007,0x0004003b,0x0000006d, - 0x00000622,0x00000007,0x0004003b,0x0000006d,0x00000626,0x00000007,0x0004003b,0x0000006d, - 0x00000628,0x00000007,0x0004003b,0x0000006d,0x00000629,0x00000007,0x0004003b,0x0000006d, - 0x0000062c,0x00000007,0x0004003b,0x0000006d,0x00000630,0x00000007,0x0004003b,0x0000006d, - 0x00000632,0x00000007,0x0004003b,0x0000006d,0x00000633,0x00000007,0x0004003b,0x0000006d, - 0x00000636,0x00000007,0x0004003b,0x0000006d,0x0000063a,0x00000007,0x0004003b,0x0000006d, - 0x0000063c,0x00000007,0x0004003b,0x0000006d,0x0000063d,0x00000007,0x0004003b,0x0000006d, - 0x00000640,0x00000007,0x0004003b,0x0000006d,0x00000643,0x00000007,0x0004003b,0x0000006d, - 0x00000645,0x00000007,0x0004003b,0x0000006d,0x00000646,0x00000007,0x0004003b,0x0000006d, - 0x00000649,0x00000007,0x0004003b,0x0000006d,0x0000064d,0x00000007,0x0004003b,0x0000006d, - 0x0000064f,0x00000007,0x0004003b,0x0000006d,0x00000650,0x00000007,0x0004003b,0x0000006d, - 0x00000653,0x00000007,0x0004003b,0x0000006d,0x00000657,0x00000007,0x0004003b,0x0000006d, - 0x00000659,0x00000007,0x0004003b,0x0000006d,0x0000065a,0x00000007,0x0004003b,0x0000006d, - 0x0000065d,0x00000007,0x0004003b,0x0000006d,0x00000661,0x00000007,0x0004003b,0x0000006d, - 0x00000663,0x00000007,0x0004003b,0x0000006d,0x00000664,0x00000007,0x0004003b,0x0000006d, - 0x00000667,0x00000007,0x0004003b,0x0000006d,0x0000066b,0x00000007,0x0004003b,0x0000006d, - 0x0000066d,0x00000007,0x0004003b,0x0000006d,0x0000066e,0x00000007,0x0004003b,0x0000006d, - 0x00000671,0x00000007,0x0004003b,0x0000006d,0x00000675,0x00000007,0x0004003b,0x0000006d, - 0x00000677,0x00000007,0x0004003b,0x0000006d,0x00000678,0x00000007,0x0004003b,0x0000006d, - 0x0000067b,0x00000007,0x0004003b,0x0000006d,0x0000067f,0x00000007,0x0004003b,0x0000006d, - 0x00000681,0x00000007,0x0004003b,0x0000006d,0x00000682,0x00000007,0x0004003b,0x0000006d, - 0x00000685,0x00000007,0x0004003b,0x0000006d,0x00000689,0x00000007,0x0004003b,0x0000006d, - 0x0000068b,0x00000007,0x0004003b,0x0000006d,0x0000068c,0x00000007,0x0004003b,0x0000006d, - 0x0000068f,0x00000007,0x0004003b,0x0000006d,0x00000693,0x00000007,0x0004003b,0x0000006d, - 0x00000695,0x00000007,0x0004003b,0x0000006d,0x00000696,0x00000007,0x0004003b,0x0000006d, - 0x00000699,0x00000007,0x0004003b,0x0000006d,0x0000069d,0x00000007,0x0004003b,0x0000006d, - 0x0000069f,0x00000007,0x0004003b,0x0000006d,0x000006a0,0x00000007,0x0004003b,0x0000006d, - 0x000006a3,0x00000007,0x0004003b,0x0000006d,0x000006a7,0x00000007,0x0004003b,0x0000006d, - 0x000006a9,0x00000007,0x0004003b,0x0000006d,0x000006aa,0x00000007,0x0004003b,0x0000006d, - 0x000006ad,0x00000007,0x0004003d,0x00000055,0x00000613,0x00000114,0x0003003e,0x00000612, - 0x00000613,0x0003003e,0x00000614,0x00000611,0x0004003d,0x00000055,0x00000616,0x00000115, - 0x0003003e,0x00000615,0x00000616,0x00070039,0x00000055,0x00000617,0x000000f4,0x00000612, - 0x00000614,0x00000615,0x0003003e,0x00000618,0x00000617,0x00050039,0x0000002f,0x00000619, - 0x00000111,0x00000618,0x00050041,0x00000030,0x0000061a,0x00000610,0x00000197,0x0003003e, - 0x0000061a,0x00000619,0x0004003d,0x00000055,0x0000061d,0x00000114,0x0003003e,0x0000061c, - 0x0000061d,0x0003003e,0x0000061e,0x0000061b,0x0004003d,0x00000055,0x00000620,0x00000115, - 0x0003003e,0x0000061f,0x00000620,0x00070039,0x00000055,0x00000621,0x000000f4,0x0000061c, - 0x0000061e,0x0000061f,0x0003003e,0x00000622,0x00000621,0x00050039,0x0000002f,0x00000623, - 0x00000111,0x00000622,0x00050041,0x00000030,0x00000624,0x00000610,0x0000023e,0x0003003e, - 0x00000624,0x00000623,0x0004003d,0x00000055,0x00000627,0x00000114,0x0003003e,0x00000626, - 0x00000627,0x0003003e,0x00000628,0x00000625,0x0004003d,0x00000055,0x0000062a,0x00000115, - 0x0003003e,0x00000629,0x0000062a,0x00070039,0x00000055,0x0000062b,0x000000f4,0x00000626, - 0x00000628,0x00000629,0x0003003e,0x0000062c,0x0000062b,0x00050039,0x0000002f,0x0000062d, - 0x00000111,0x0000062c,0x00050041,0x00000030,0x0000062e,0x00000610,0x000001a2,0x0003003e, - 0x0000062e,0x0000062d,0x0004003d,0x00000055,0x00000631,0x00000114,0x0003003e,0x00000630, - 0x00000631,0x0003003e,0x00000632,0x0000062f,0x0004003d,0x00000055,0x00000634,0x00000115, - 0x0003003e,0x00000633,0x00000634,0x00070039,0x00000055,0x00000635,0x000000f4,0x00000630, - 0x00000632,0x00000633,0x0003003e,0x00000636,0x00000635,0x00050039,0x0000002f,0x00000637, - 0x00000111,0x00000636,0x00050041,0x00000030,0x00000638,0x00000610,0x000001a7,0x0003003e, - 0x00000638,0x00000637,0x0004003d,0x00000055,0x0000063b,0x00000114,0x0003003e,0x0000063a, - 0x0000063b,0x0003003e,0x0000063c,0x00000639,0x0004003d,0x00000055,0x0000063e,0x00000115, - 0x0003003e,0x0000063d,0x0000063e,0x00070039,0x00000055,0x0000063f,0x000000f4,0x0000063a, - 0x0000063c,0x0000063d,0x0003003e,0x00000640,0x0000063f,0x00050039,0x0000002f,0x00000641, - 0x00000111,0x00000640,0x00050041,0x00000030,0x00000642,0x00000610,0x0000019d,0x0003003e, - 0x00000642,0x00000641,0x0004003d,0x00000055,0x00000644,0x00000114,0x0003003e,0x00000643, - 0x00000644,0x0003003e,0x00000645,0x0000021e,0x0004003d,0x00000055,0x00000647,0x00000115, - 0x0003003e,0x00000646,0x00000647,0x00070039,0x00000055,0x00000648,0x000000f4,0x00000643, - 0x00000645,0x00000646,0x0003003e,0x00000649,0x00000648,0x00050039,0x0000002f,0x0000064a, - 0x00000111,0x00000649,0x00050041,0x00000030,0x0000064b,0x00000610,0x000003db,0x0003003e, - 0x0000064b,0x0000064a,0x0004003d,0x00000055,0x0000064e,0x00000114,0x0003003e,0x0000064d, - 0x0000064e,0x0003003e,0x0000064f,0x0000064c,0x0004003d,0x00000055,0x00000651,0x00000115, - 0x0003003e,0x00000650,0x00000651,0x00070039,0x00000055,0x00000652,0x000000f4,0x0000064d, - 0x0000064f,0x00000650,0x0003003e,0x00000653,0x00000652,0x00050039,0x0000002f,0x00000654, - 0x00000111,0x00000653,0x00050041,0x00000030,0x00000655,0x00000610,0x000003dc,0x0003003e, - 0x00000655,0x00000654,0x0004003d,0x00000055,0x00000658,0x00000114,0x0003003e,0x00000657, - 0x00000658,0x0003003e,0x00000659,0x00000656,0x0004003d,0x00000055,0x0000065b,0x00000115, - 0x0003003e,0x0000065a,0x0000065b,0x00070039,0x00000055,0x0000065c,0x000000f4,0x00000657, - 0x00000659,0x0000065a,0x0003003e,0x0000065d,0x0000065c,0x00050039,0x0000002f,0x0000065e, - 0x00000111,0x0000065d,0x00050041,0x00000030,0x0000065f,0x00000610,0x000001ac,0x0003003e, - 0x0000065f,0x0000065e,0x0004003d,0x00000055,0x00000662,0x00000114,0x0003003e,0x00000661, - 0x00000662,0x0003003e,0x00000663,0x00000660,0x0004003d,0x00000055,0x00000665,0x00000115, - 0x0003003e,0x00000664,0x00000665,0x00070039,0x00000055,0x00000666,0x000000f4,0x00000661, - 0x00000663,0x00000664,0x0003003e,0x00000667,0x00000666,0x00050039,0x0000002f,0x00000668, - 0x00000111,0x00000667,0x00050041,0x00000030,0x00000669,0x00000610,0x000003ee,0x0003003e, - 0x00000669,0x00000668,0x0004003d,0x00000055,0x0000066c,0x00000114,0x0003003e,0x0000066b, - 0x0000066c,0x0003003e,0x0000066d,0x0000066a,0x0004003d,0x00000055,0x0000066f,0x00000115, - 0x0003003e,0x0000066e,0x0000066f,0x00070039,0x00000055,0x00000670,0x000000f4,0x0000066b, - 0x0000066d,0x0000066e,0x0003003e,0x00000671,0x00000670,0x00050039,0x0000002f,0x00000672, - 0x00000111,0x00000671,0x00050041,0x00000030,0x00000673,0x00000610,0x000003ef,0x0003003e, - 0x00000673,0x00000672,0x0004003d,0x00000055,0x00000676,0x00000114,0x0003003e,0x00000675, - 0x00000676,0x0003003e,0x00000677,0x00000674,0x0004003d,0x00000055,0x00000679,0x00000115, - 0x0003003e,0x00000678,0x00000679,0x00070039,0x00000055,0x0000067a,0x000000f4,0x00000675, - 0x00000677,0x00000678,0x0003003e,0x0000067b,0x0000067a,0x00050039,0x0000002f,0x0000067c, - 0x00000111,0x0000067b,0x00050041,0x00000030,0x0000067d,0x00000610,0x000001b2,0x0003003e, - 0x0000067d,0x0000067c,0x0004003d,0x00000055,0x00000680,0x00000114,0x0003003e,0x0000067f, - 0x00000680,0x0003003e,0x00000681,0x0000067e,0x0004003d,0x00000055,0x00000683,0x00000115, - 0x0003003e,0x00000682,0x00000683,0x00070039,0x00000055,0x00000684,0x000000f4,0x0000067f, - 0x00000681,0x00000682,0x0003003e,0x00000685,0x00000684,0x00050039,0x0000002f,0x00000686, - 0x00000111,0x00000685,0x00050041,0x00000030,0x00000687,0x00000610,0x000003f0,0x0003003e, - 0x00000687,0x00000686,0x0004003d,0x00000055,0x0000068a,0x00000114,0x0003003e,0x00000689, - 0x0000068a,0x0003003e,0x0000068b,0x00000688,0x0004003d,0x00000055,0x0000068d,0x00000115, - 0x0003003e,0x0000068c,0x0000068d,0x00070039,0x00000055,0x0000068e,0x000000f4,0x00000689, - 0x0000068b,0x0000068c,0x0003003e,0x0000068f,0x0000068e,0x00050039,0x0000002f,0x00000690, - 0x00000111,0x0000068f,0x00050041,0x00000030,0x00000691,0x00000610,0x00000402,0x0003003e, - 0x00000691,0x00000690,0x0004003d,0x00000055,0x00000694,0x00000114,0x0003003e,0x00000693, - 0x00000694,0x0003003e,0x00000695,0x00000692,0x0004003d,0x00000055,0x00000697,0x00000115, - 0x0003003e,0x00000696,0x00000697,0x00070039,0x00000055,0x00000698,0x000000f4,0x00000693, - 0x00000695,0x00000696,0x0003003e,0x00000699,0x00000698,0x00050039,0x0000002f,0x0000069a, - 0x00000111,0x00000699,0x00050041,0x00000030,0x0000069b,0x00000610,0x000001b7,0x0003003e, - 0x0000069b,0x0000069a,0x0004003d,0x00000055,0x0000069e,0x00000114,0x0003003e,0x0000069d, - 0x0000069e,0x0003003e,0x0000069f,0x0000069c,0x0004003d,0x00000055,0x000006a1,0x00000115, - 0x0003003e,0x000006a0,0x000006a1,0x00070039,0x00000055,0x000006a2,0x000000f4,0x0000069d, - 0x0000069f,0x000006a0,0x0003003e,0x000006a3,0x000006a2,0x00050039,0x0000002f,0x000006a4, - 0x00000111,0x000006a3,0x00050041,0x00000030,0x000006a5,0x00000610,0x00000403,0x0003003e, - 0x000006a5,0x000006a4,0x0004003d,0x00000055,0x000006a8,0x00000114,0x0003003e,0x000006a7, - 0x000006a8,0x0003003e,0x000006a9,0x000006a6,0x0004003d,0x00000055,0x000006ab,0x00000115, - 0x0003003e,0x000006aa,0x000006ab,0x00070039,0x00000055,0x000006ac,0x000000f4,0x000006a7, - 0x000006a9,0x000006aa,0x0003003e,0x000006ad,0x000006ac,0x00050039,0x0000002f,0x000006ae, - 0x00000111,0x000006ad,0x00050041,0x00000030,0x000006af,0x00000610,0x000001bd,0x0003003e, - 0x000006af,0x000006ae,0x0004003d,0x000000ea,0x000006b0,0x00000610,0x000200fe,0x000006b0, - 0x00010038,0x00050036,0x0000002f,0x0000011b,0x00000000,0x00000118,0x00030037,0x0000001b, - 0x00000119,0x00030037,0x0000006d,0x0000011a,0x000200f8,0x0000011c,0x0004003b,0x0000001b, - 0x000006b3,0x00000007,0x0004003b,0x0000001b,0x000006b9,0x00000007,0x0004003b,0x0000001b, - 0x000006ba,0x00000007,0x0004003b,0x00000007,0x000006c1,0x00000007,0x0004003b,0x00000007, - 0x000006c2,0x00000007,0x0004003b,0x00000007,0x000006c6,0x00000007,0x0004003b,0x00000007, - 0x000006c7,0x00000007,0x0004003b,0x00000007,0x000006ce,0x00000007,0x0004003b,0x00000007, - 0x000006cf,0x00000007,0x0004003b,0x00000007,0x000006d3,0x00000007,0x0004003b,0x00000007, - 0x000006d4,0x00000007,0x0004003b,0x0000006d,0x000006d7,0x00000007,0x0004003b,0x00000030, - 0x000006db,0x00000007,0x0004003b,0x0000006d,0x000006dc,0x00000007,0x0004003b,0x0000006d, - 0x000006de,0x00000007,0x0004003b,0x000000eb,0x000006e1,0x00000007,0x0004003b,0x0000001b, - 0x000006e2,0x00000007,0x0004003d,0x0000001a,0x000006b4,0x00000119,0x0004003d,0x00000055, - 0x000006b5,0x0000011a,0x0004006f,0x0000001a,0x000006b6,0x000006b5,0x00050085,0x0000001a, - 0x000006b7,0x000006b4,0x000006b6,0x00050083,0x0000001a,0x000006b8,0x000006b7,0x00000338, - 0x0003003e,0x000006b3,0x000006b8,0x0004003d,0x0000001a,0x000006bb,0x000006b3,0x0003003e, - 0x000006ba,0x000006bb,0x00050039,0x0000001a,0x000006bc,0x0000001e,0x000006ba,0x0003003e, - 0x000006b9,0x000006bc,0x00050041,0x00000037,0x000006bd,0x0000011a,0x000001fa,0x0004003d, - 0x00000036,0x000006be,0x000006bd,0x00050082,0x00000036,0x000006bf,0x000006be,0x0000023e, - 0x0004006f,0x00000006,0x000006c0,0x000006bf,0x0003003e,0x000006c1,0x000006c0,0x00050041, - 0x00000007,0x000006c3,0x000006b3,0x000001fa,0x0004003d,0x00000006,0x000006c4,0x000006c3, - 0x0003003e,0x000006c2,0x000006c4,0x00060039,0x00000006,0x000006c5,0x00000023,0x000006c1, - 0x000006c2,0x0003003e,0x000006c6,0x00000154,0x0003003e,0x000006c7,0x000006c5,0x00060039, - 0x00000006,0x000006c8,0x0000003f,0x000006c6,0x000006c7,0x00050041,0x00000007,0x000006c9, - 0x000006b3,0x000001fa,0x0003003e,0x000006c9,0x000006c8,0x00050041,0x00000037,0x000006ca, - 0x0000011a,0x00000293,0x0004003d,0x00000036,0x000006cb,0x000006ca,0x00050082,0x00000036, - 0x000006cc,0x000006cb,0x0000023e,0x0004006f,0x00000006,0x000006cd,0x000006cc,0x0003003e, - 0x000006ce,0x000006cd,0x00050041,0x00000007,0x000006d0,0x000006b3,0x00000293,0x0004003d, - 0x00000006,0x000006d1,0x000006d0,0x0003003e,0x000006cf,0x000006d1,0x00060039,0x00000006, - 0x000006d2,0x00000023,0x000006ce,0x000006cf,0x0003003e,0x000006d3,0x00000154,0x0003003e, - 0x000006d4,0x000006d2,0x00060039,0x00000006,0x000006d5,0x0000003f,0x000006d3,0x000006d4, - 0x00050041,0x00000007,0x000006d6,0x000006b3,0x00000293,0x0003003e,0x000006d6,0x000006d5, - 0x0004003d,0x0000001a,0x000006d8,0x000006b3,0x0006000c,0x0000001a,0x000006d9,0x00000001, - 0x00000008,0x000006d8,0x0004006e,0x00000055,0x000006da,0x000006d9,0x0003003e,0x000006d7, - 0x000006da,0x0004003d,0x00000055,0x000006dd,0x000006d7,0x0003003e,0x000006dc,0x000006dd, - 0x0004003d,0x00000055,0x000006df,0x0000011a,0x0003003e,0x000006de,0x000006df,0x00060039, - 0x000000ea,0x000006e0,0x00000116,0x000006dc,0x000006de,0x0003003e,0x000006e1,0x000006e0, - 0x0004003d,0x0000001a,0x000006e3,0x000006b9,0x0003003e,0x000006e2,0x000006e3,0x00060039, - 0x0000002f,0x000006e4,0x000000ef,0x000006e1,0x000006e2,0x0003003e,0x000006db,0x000006e4, - 0x0004003d,0x0000002f,0x000006e5,0x000006db,0x000200fe,0x000006e5,0x00010038,0x00050036, - 0x0000001a,0x00000120,0x00000000,0x0000011d,0x00030037,0x0000006d,0x0000011e,0x00030037, - 0x0000001b,0x0000011f,0x000200f8,0x00000121,0x0004003b,0x0000001b,0x000006e8,0x00000007, - 0x0004003b,0x0000006d,0x000006ee,0x00000007,0x0004003d,0x0000001a,0x000006e9,0x0000011f, - 0x00040039,0x00000055,0x000006ea,0x00000057,0x0004006f,0x0000001a,0x000006eb,0x000006ea, - 0x00050085,0x0000001a,0x000006ec,0x000006e9,0x000006eb,0x0004006e,0x00000055,0x000006ed, - 0x000006ec,0x0003003e,0x000006ee,0x000006ed,0x00050039,0x0000001a,0x000006ef,0x00000094, - 0x000006ee,0x0003003e,0x000006e8,0x000006ef,0x0004003d,0x0000001a,0x000006f0,0x000006e8, - 0x000200fe,0x000006f0,0x00010038,0x00050036,0x00000002,0x00000125,0x00000000,0x00000123, - 0x00030037,0x00000122,0x00000124,0x000200f8,0x00000126,0x0004003b,0x0000001b,0x000006f9, - 0x00000007,0x00050041,0x0000001b,0x000006f3,0x00000124,0x0000023e,0x0004003d,0x0000001a, - 0x000006f4,0x000006f3,0x00050041,0x0000001b,0x000006f5,0x00000124,0x0000019d,0x0004003d, - 0x0000001a,0x000006f6,0x000006f5,0x00050081,0x0000001a,0x000006f7,0x000006f4,0x000006f6, - 0x00050041,0x0000001b,0x000006f8,0x00000124,0x000003db,0x0003003e,0x000006f8,0x000006f7, - 0x00050041,0x0000001b,0x000006fa,0x00000124,0x000003db,0x0004003d,0x0000001a,0x000006fb, - 0x000006fa,0x0003003e,0x000006f9,0x000006fb,0x00050039,0x000000a7,0x000006fc,0x000000c3, - 0x000006f9,0x00050041,0x000000a8,0x000006fd,0x00000124,0x000001b7,0x0003003e,0x000006fd, - 0x000006fc,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000129,0x00000000,0x0000010b, - 0x00030037,0x00000100,0x00000127,0x00030037,0x00000102,0x00000128,0x000200f8,0x0000012a, - 0x0004003b,0x00000030,0x000006fe,0x00000007,0x0004003b,0x0000001b,0x00000700,0x00000007, - 0x0004003b,0x0000006d,0x00000702,0x00000007,0x0004003b,0x0000000f,0x00000711,0x00000007, - 0x00040039,0x00000055,0x000006ff,0x0000005d,0x00050051,0x0000001a,0x00000701,0x00000127, - 0x00000005,0x0003003e,0x00000700,0x00000701,0x0003003e,0x00000702,0x000006ff,0x00060039, - 0x0000002f,0x00000703,0x0000011b,0x00000700,0x00000702,0x0003003e,0x000006fe,0x00000703, - 0x0004003d,0x0000002f,0x00000704,0x000006fe,0x0008004f,0x0000000e,0x00000705,0x00000704, - 0x00000704,0x00000000,0x00000001,0x00000002,0x00050041,0x0000000f,0x00000706,0x00000128, - 0x000001a7,0x0003003e,0x00000706,0x00000705,0x00040039,0x00000006,0x00000707,0x00000067, - 0x00050041,0x0000000f,0x00000708,0x00000128,0x000001a7,0x0004003d,0x0000000e,0x00000709, - 0x00000708,0x0005008e,0x0000000e,0x0000070a,0x00000709,0x00000707,0x00050041,0x0000000f, - 0x0000070b,0x00000128,0x000001a7,0x0003003e,0x0000070b,0x0000070a,0x00040039,0x00000006, - 0x0000070c,0x00000096,0x00050041,0x0000000f,0x0000070d,0x00000128,0x000001a7,0x0004003d, - 0x0000000e,0x0000070e,0x0000070d,0x0005008e,0x0000000e,0x0000070f,0x0000070e,0x0000070c, - 0x00050041,0x0000000f,0x00000710,0x00000128,0x000001a7,0x0003003e,0x00000710,0x0000070f, - 0x00050041,0x0000000f,0x00000712,0x00000128,0x000001a7,0x0004003d,0x0000000e,0x00000713, - 0x00000712,0x0003003e,0x00000711,0x00000713,0x00050039,0x0000000e,0x00000714,0x000000b9, - 0x00000711,0x00050041,0x0000000f,0x00000715,0x00000128,0x000001a7,0x0003003e,0x00000715, - 0x00000714,0x00050041,0x00000007,0x00000717,0x000006fe,0x00000716,0x0004003d,0x00000006, - 0x00000718,0x00000717,0x00050041,0x00000007,0x00000719,0x00000128,0x000003db,0x0003003e, - 0x00000719,0x00000718,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000012d,0x00000000, - 0x0000010b,0x00030037,0x00000100,0x0000012b,0x00030037,0x00000102,0x0000012c,0x000200f8, - 0x0000012e,0x0004003b,0x00000007,0x00000727,0x00000007,0x0004003b,0x00000007,0x00000728, - 0x00000007,0x0004003b,0x0000000f,0x0000072b,0x00000007,0x0004003b,0x0000000f,0x0000072f, - 0x00000007,0x0004003b,0x0000000f,0x00000731,0x00000007,0x0004003b,0x0000000f,0x00000734, - 0x00000007,0x0004003b,0x0000000f,0x00000738,0x00000007,0x0004003b,0x0000000f,0x0000073a, - 0x00000007,0x0004003b,0x00000007,0x0000073d,0x00000007,0x0004003b,0x00000007,0x00000743, - 0x00000007,0x0004003b,0x0000000f,0x00000745,0x00000007,0x0004003b,0x0000000f,0x00000748, - 0x00000007,0x0004003b,0x00000007,0x0000074b,0x00000007,0x0004003b,0x0000000f,0x0000074f, - 0x00000007,0x0004003b,0x0000000f,0x00000754,0x00000007,0x00050041,0x00000007,0x0000071a, - 0x0000012c,0x0000019d,0x0004003d,0x00000006,0x0000071b,0x0000071a,0x000500ba,0x000000a7, - 0x0000071c,0x0000071b,0x000002e7,0x000600a9,0x00000006,0x0000071d,0x0000071c,0x00000155, - 0x00000154,0x00050041,0x00000007,0x0000071e,0x0000012c,0x0000019d,0x0004003d,0x00000006, - 0x0000071f,0x0000071e,0x00050085,0x00000006,0x00000720,0x0000071f,0x0000071d,0x00050041, - 0x00000007,0x00000721,0x0000012c,0x0000019d,0x0003003e,0x00000721,0x00000720,0x00050041, - 0x00000007,0x00000722,0x0000012c,0x0000019d,0x0004003d,0x00000006,0x00000723,0x00000722, - 0x00050041,0x00000007,0x00000724,0x0000012c,0x000001a2,0x0004003d,0x00000006,0x00000725, - 0x00000724,0x00050081,0x00000006,0x00000726,0x00000723,0x00000725,0x0003003e,0x00000727, - 0x000002e7,0x0003003e,0x00000728,0x00000726,0x00060039,0x00000006,0x00000729,0x0000003f, - 0x00000727,0x00000728,0x00050041,0x00000007,0x0000072a,0x0000012c,0x0000019d,0x0003003e, - 0x0000072a,0x00000729,0x00050041,0x0000000f,0x0000072c,0x0000012c,0x0000023e,0x0004003d, - 0x0000000e,0x0000072d,0x0000072c,0x0003003e,0x0000072b,0x0000072d,0x00050039,0x0000000e, - 0x0000072e,0x000000b6,0x0000072b,0x0003003e,0x0000072f,0x0000072e,0x00050039,0x0000000e, - 0x00000730,0x000000bc,0x0000072f,0x0003003e,0x00000731,0x00000730,0x00050039,0x0000000e, - 0x00000732,0x000000b9,0x00000731,0x00050041,0x0000000f,0x00000733,0x0000012c,0x0000023e, - 0x0003003e,0x00000733,0x00000732,0x00050041,0x0000000f,0x00000735,0x0000012c,0x000001a7, - 0x0004003d,0x0000000e,0x00000736,0x00000735,0x0003003e,0x00000734,0x00000736,0x00050039, - 0x0000000e,0x00000737,0x000000b6,0x00000734,0x0003003e,0x00000738,0x00000737,0x00050039, - 0x0000000e,0x00000739,0x000000bc,0x00000738,0x0003003e,0x0000073a,0x00000739,0x00050039, - 0x0000000e,0x0000073b,0x000000b9,0x0000073a,0x00050041,0x0000000f,0x0000073c,0x0000012c, - 0x000001a7,0x0003003e,0x0000073c,0x0000073b,0x00050041,0x00000007,0x0000073e,0x0000012c, - 0x000001a2,0x0004003d,0x00000006,0x0000073f,0x0000073e,0x00050041,0x00000007,0x00000740, - 0x0000012c,0x0000019d,0x0004003d,0x00000006,0x00000741,0x00000740,0x00050088,0x00000006, - 0x00000742,0x0000073f,0x00000741,0x0003003e,0x00000743,0x00000742,0x00050039,0x00000006, - 0x00000744,0x00000018,0x00000743,0x0003003e,0x0000073d,0x00000744,0x00050041,0x0000000f, - 0x00000746,0x0000012c,0x000001a7,0x0004003d,0x0000000e,0x00000747,0x00000746,0x0003003e, - 0x00000745,0x00000747,0x00050041,0x0000000f,0x00000749,0x0000012c,0x0000023e,0x0004003d, - 0x0000000e,0x0000074a,0x00000749,0x0003003e,0x00000748,0x0000074a,0x0004003d,0x00000006, - 0x0000074c,0x0000073d,0x0003003e,0x0000074b,0x0000074c,0x00070039,0x0000000e,0x0000074d, - 0x00000014,0x00000745,0x00000748,0x0000074b,0x00050041,0x0000000f,0x0000074e,0x0000012c, - 0x000001a7,0x0003003e,0x0000074e,0x0000074d,0x00050041,0x0000000f,0x00000750,0x0000012c, - 0x000001a7,0x0004003d,0x0000000e,0x00000751,0x00000750,0x0003003e,0x0000074f,0x00000751, - 0x00050039,0x0000000e,0x00000752,0x000000b6,0x0000074f,0x00050041,0x0000000f,0x00000753, - 0x0000012c,0x000001a7,0x0003003e,0x00000753,0x00000752,0x00050041,0x0000000f,0x00000755, - 0x0000012c,0x000001a7,0x0004003d,0x0000000e,0x00000756,0x00000755,0x0003003e,0x00000754, - 0x00000756,0x00050039,0x0000000e,0x00000757,0x000000bf,0x00000754,0x00050041,0x0000000f, - 0x00000758,0x0000012c,0x000001a7,0x0003003e,0x00000758,0x00000757,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x00000131,0x00000000,0x0000010b,0x00030037,0x00000100,0x0000012f, - 0x00030037,0x00000102,0x00000130,0x000200f8,0x00000132,0x0004003b,0x00000007,0x00000759, - 0x00000007,0x0004003b,0x00000007,0x0000075d,0x00000007,0x0004003b,0x00000007,0x0000075f, - 0x00000007,0x0004003b,0x00000007,0x00000764,0x00000007,0x0004003b,0x00000007,0x00000766, - 0x00000007,0x0004003b,0x00000007,0x00000769,0x00000007,0x0004003b,0x00000007,0x0000076a, - 0x00000007,0x0004003b,0x00000007,0x0000076c,0x00000007,0x0004003b,0x00000007,0x0000076e, - 0x00000007,0x0004003b,0x00000007,0x00000770,0x00000007,0x0004003b,0x00000007,0x00000771, - 0x00000007,0x0004003b,0x00000007,0x00000773,0x00000007,0x0004003b,0x00000007,0x00000776, - 0x00000007,0x0004003b,0x00000007,0x00000778,0x00000007,0x0004003b,0x00000007,0x0000077a, - 0x00000007,0x0004003b,0x00000007,0x0000077c,0x00000007,0x0004003b,0x00000007,0x0000077e, - 0x00000007,0x0004003b,0x00000007,0x00000780,0x00000007,0x0004003b,0x00000007,0x00000782, - 0x00000007,0x0004003b,0x00000007,0x00000784,0x00000007,0x0004003b,0x00000007,0x00000785, - 0x00000007,0x0004003b,0x00000007,0x00000786,0x00000007,0x0004003b,0x0000000f,0x00000789, - 0x00000007,0x0004003b,0x0000000f,0x00000791,0x00000007,0x0004003b,0x0000000f,0x00000794, - 0x00000007,0x0004003b,0x0000000f,0x00000796,0x00000007,0x0004003b,0x0000000f,0x00000798, - 0x00000007,0x0004003b,0x0000000f,0x000007a5,0x00000007,0x0004003b,0x0000000f,0x000007a8, - 0x00000007,0x0004003b,0x00000007,0x000007af,0x00000007,0x0004003b,0x00000007,0x000007b0, - 0x00000007,0x0004003b,0x00000007,0x000007b2,0x00000007,0x0004003b,0x00000007,0x000007bb, - 0x00000007,0x0004003b,0x0000000f,0x000007be,0x00000007,0x0004003b,0x0000000f,0x000007c0, - 0x00000007,0x0004003b,0x00000007,0x000007c3,0x00000007,0x00050051,0x00000006,0x0000075a, - 0x0000012f,0x00000006,0x00050088,0x00000006,0x0000075c,0x0000075a,0x0000075b,0x0003003e, - 0x0000075d,0x0000075c,0x00050039,0x00000006,0x0000075e,0x00000018,0x0000075d,0x0003003e, - 0x00000759,0x0000075e,0x00050051,0x00000006,0x00000761,0x0000012f,0x0000000c,0x00050088, - 0x00000006,0x00000762,0x00000761,0x0000075b,0x00050083,0x00000006,0x00000763,0x00000760, - 0x00000762,0x0003003e,0x00000764,0x00000763,0x00050039,0x00000006,0x00000765,0x00000018, - 0x00000764,0x0003003e,0x0000075f,0x00000765,0x00050051,0x00000006,0x00000767,0x0000012f, - 0x0000000a,0x00050083,0x00000006,0x00000768,0x00000155,0x00000767,0x0003003e,0x00000766, - 0x00000768,0x00050051,0x00000006,0x0000076b,0x0000012f,0x00000008,0x0003003e,0x0000076a, - 0x0000076b,0x0003003e,0x0000076c,0x000002b1,0x00060039,0x00000006,0x0000076d,0x00000053, - 0x0000076a,0x0000076c,0x0003003e,0x00000769,0x0000076d,0x00050051,0x00000006,0x0000076f, - 0x0000012f,0x00000009,0x0003003e,0x0000076e,0x0000076f,0x0004003d,0x00000006,0x00000772, - 0x00000769,0x0003003e,0x00000771,0x00000772,0x0004003d,0x00000006,0x00000774,0x0000076e, - 0x0003003e,0x00000773,0x00000774,0x00060039,0x00000006,0x00000775,0x0000003f,0x00000771, - 0x00000773,0x0004003d,0x00000006,0x00000777,0x00000766,0x0003003e,0x00000776,0x00000777, - 0x0003003e,0x00000778,0x00000775,0x00060039,0x00000006,0x00000779,0x0000003f,0x00000776, - 0x00000778,0x0004003d,0x00000006,0x0000077b,0x0000075f,0x0003003e,0x0000077a,0x0000077b, - 0x0003003e,0x0000077c,0x00000779,0x00060039,0x00000006,0x0000077d,0x0000003f,0x0000077a, - 0x0000077c,0x0004003d,0x00000006,0x0000077f,0x00000759,0x0003003e,0x0000077e,0x0000077f, - 0x0003003e,0x00000780,0x0000077d,0x00060039,0x00000006,0x00000781,0x0000003f,0x0000077e, - 0x00000780,0x0003003e,0x00000770,0x00000781,0x0003003e,0x00000784,0x00000783,0x0003003e, - 0x00000785,0x00000155,0x0004003d,0x00000006,0x00000787,0x00000770,0x0003003e,0x00000786, - 0x00000787,0x00070039,0x00000006,0x00000788,0x0000000c,0x00000784,0x00000785,0x00000786, - 0x0003003e,0x00000782,0x00000788,0x00060041,0x0000000f,0x0000078a,0x00000130,0x00000197, - 0x0000023e,0x0004003d,0x0000000e,0x0000078b,0x0000078a,0x00050085,0x0000000e,0x0000078e, - 0x0000078b,0x0000078d,0x0004003d,0x00000006,0x0000078f,0x00000782,0x0005008e,0x0000000e, - 0x00000790,0x0000078e,0x0000078f,0x0003003e,0x00000789,0x00000790,0x0004003d,0x0000000e, - 0x00000795,0x00000789,0x0003003e,0x00000794,0x00000795,0x0003003e,0x00000796,0x00000793, - 0x00060039,0x0000000e,0x00000797,0x00000047,0x00000794,0x00000796,0x0003003e,0x00000791, - 0x00000797,0x00050041,0x0000000f,0x00000799,0x00000130,0x000001a7,0x0004003d,0x0000000e, - 0x0000079a,0x00000799,0x00060041,0x0000000f,0x0000079b,0x00000130,0x00000197,0x00000197, - 0x0004003d,0x0000000e,0x0000079c,0x0000079b,0x00050083,0x0000000e,0x0000079d,0x0000079a, - 0x0000079c,0x0004003d,0x0000000e,0x0000079e,0x00000791,0x00050088,0x0000000e,0x0000079f, - 0x0000079d,0x0000079e,0x0003003e,0x00000798,0x0000079f,0x0004003d,0x0000000e,0x000007a0, - 0x00000798,0x0006000c,0x00000006,0x000007a1,0x00000001,0x00000042,0x000007a0,0x000500ba, - 0x000000a7,0x000007a2,0x000007a1,0x00000155,0x000300f7,0x000007a4,0x00000000,0x000400fa, - 0x000007a2,0x000007a3,0x000007a4,0x000200f8,0x000007a3,0x0004003d,0x0000000e,0x000007a6, - 0x00000798,0x0006000c,0x0000000e,0x000007a7,0x00000001,0x00000045,0x000007a6,0x0003003e, - 0x000007a5,0x000007a7,0x0004003d,0x0000000e,0x000007a9,0x000007a5,0x0004003d,0x0000000e, - 0x000007aa,0x00000789,0x00050085,0x0000000e,0x000007ab,0x000007a9,0x000007aa,0x00060041, - 0x0000000f,0x000007ac,0x00000130,0x00000197,0x00000197,0x0004003d,0x0000000e,0x000007ad, - 0x000007ac,0x00050081,0x0000000e,0x000007ae,0x000007ab,0x000007ad,0x0003003e,0x000007a8, - 0x000007ae,0x00050051,0x00000006,0x000007b1,0x0000012f,0x0000000b,0x0003003e,0x000007b0, - 0x000007b1,0x00050041,0x00000007,0x000007b3,0x00000130,0x000003dc,0x0004003d,0x00000006, - 0x000007b4,0x000007b3,0x0003003e,0x000007b2,0x000007b4,0x00060039,0x00000006,0x000007b5, - 0x0000003f,0x000007b0,0x000007b2,0x00050051,0x00000006,0x000007b6,0x0000012f,0x0000000a, - 0x00050085,0x00000006,0x000007b7,0x000007b5,0x000007b6,0x00050051,0x00000006,0x000007b8, - 0x0000012f,0x00000007,0x00050083,0x00000006,0x000007b9,0x00000155,0x000007b8,0x00050085, - 0x00000006,0x000007ba,0x000007b7,0x000007b9,0x0003003e,0x000007af,0x000007ba,0x0004003d, - 0x00000006,0x000007bc,0x000007af,0x0003003e,0x000007bb,0x000007bc,0x00050039,0x00000006, - 0x000007bd,0x00000018,0x000007bb,0x0004003d,0x0000000e,0x000007bf,0x000007a8,0x0003003e, - 0x000007be,0x000007bf,0x00050041,0x0000000f,0x000007c1,0x00000130,0x000001a7,0x0004003d, - 0x0000000e,0x000007c2,0x000007c1,0x0003003e,0x000007c0,0x000007c2,0x0003003e,0x000007c3, - 0x000007bd,0x00070039,0x0000000e,0x000007c4,0x00000014,0x000007be,0x000007c0,0x000007c3, - 0x00050041,0x0000000f,0x000007c5,0x00000130,0x000001a7,0x0003003e,0x000007c5,0x000007c4, - 0x000200f9,0x000007a4,0x000200f8,0x000007a4,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x00000136,0x00000000,0x00000133,0x00030037,0x00000122,0x00000134,0x00030037,0x00000102, - 0x00000135,0x000200f8,0x00000137,0x0004003b,0x00000007,0x000007cf,0x00000007,0x0004003b, - 0x00000007,0x000007d0,0x00000007,0x0004003b,0x00000007,0x000007d4,0x00000007,0x0004003b, - 0x00000007,0x000007d7,0x00000007,0x0004003b,0x00000007,0x000007db,0x00000007,0x0004003b, - 0x00000007,0x000007dc,0x00000007,0x0004003b,0x00000007,0x000007e3,0x00000007,0x0004003b, - 0x00000007,0x000007e4,0x00000007,0x0004003b,0x00000007,0x000007ea,0x00000007,0x0004003b, - 0x00000007,0x000007ed,0x00000007,0x0004003b,0x00000007,0x000007f0,0x00000007,0x0004003b, - 0x0000006d,0x000007f1,0x00000007,0x0004003b,0x00000007,0x000007f8,0x00000007,0x0004003b, - 0x00000007,0x000007f9,0x00000007,0x0004003b,0x00000007,0x00000803,0x00000007,0x0004003b, - 0x00000007,0x00000804,0x00000007,0x0004003b,0x00000007,0x00000806,0x00000007,0x0004003b, - 0x00000007,0x00000807,0x00000007,0x0004003b,0x00000007,0x0000080a,0x00000007,0x0004003b, - 0x00000007,0x00000815,0x00000007,0x0004003b,0x00000007,0x00000816,0x00000007,0x0004003b, - 0x0000001b,0x00000819,0x00000007,0x0004003b,0x0000001b,0x0000081f,0x00000007,0x00050041, - 0x000000a8,0x000007c6,0x00000134,0x00000403,0x0004003d,0x000000a7,0x000007c7,0x000007c6, - 0x000500a4,0x000000a7,0x000007c9,0x000007c7,0x000007c8,0x000600a9,0x00000006,0x000007ca, - 0x000007c9,0x00000155,0x00000154,0x00050041,0x00000007,0x000007cb,0x00000135,0x000003db, - 0x0004003d,0x00000006,0x000007cc,0x000007cb,0x00050085,0x00000006,0x000007cd,0x000007cc, - 0x000007ca,0x00050041,0x00000007,0x000007ce,0x00000135,0x000003db,0x0003003e,0x000007ce, - 0x000007cd,0x00050041,0x00000007,0x000007d1,0x00000134,0x000003ef,0x0004003d,0x00000006, - 0x000007d2,0x000007d1,0x0003003e,0x000007d0,0x000007d2,0x00050039,0x00000006,0x000007d3, - 0x00000018,0x000007d0,0x00050041,0x00000007,0x000007d5,0x00000134,0x000003ee,0x0004003d, - 0x00000006,0x000007d6,0x000007d5,0x0003003e,0x000007d4,0x000007d6,0x00050041,0x00000007, - 0x000007d8,0x00000134,0x000001ac,0x0004003d,0x00000006,0x000007d9,0x000007d8,0x0003003e, - 0x000007d7,0x000007d9,0x00060039,0x00000006,0x000007da,0x0000003f,0x000007d4,0x000007d7, - 0x0003003e,0x000007db,0x000007d3,0x0003003e,0x000007dc,0x000007da,0x00060039,0x00000006, - 0x000007dd,0x0000003f,0x000007db,0x000007dc,0x0003003e,0x000007cf,0x000007dd,0x00050041, - 0x00000007,0x000007de,0x00000135,0x000003db,0x0004003d,0x00000006,0x000007df,0x000007de, - 0x0004003d,0x00000006,0x000007e0,0x000007cf,0x00050085,0x00000006,0x000007e1,0x000007e0, - 0x00000370,0x00050083,0x00000006,0x000007e2,0x000007df,0x000007e1,0x0003003e,0x000007e3, - 0x00000154,0x0003003e,0x000007e4,0x000007e2,0x00060039,0x00000006,0x000007e5,0x0000003f, - 0x000007e3,0x000007e4,0x00050041,0x00000007,0x000007e6,0x00000135,0x000003db,0x0003003e, - 0x000007e6,0x000007e5,0x00050041,0x00000007,0x000007e7,0x00000135,0x000003db,0x0004003d, - 0x00000006,0x000007e8,0x000007e7,0x00050083,0x00000006,0x000007e9,0x000007e8,0x00000155, - 0x0003003e,0x000007ea,0x000007e9,0x00050039,0x00000006,0x000007eb,0x00000018,0x000007ea, - 0x00050085,0x00000006,0x000007ec,0x000007eb,0x00000155,0x0003003e,0x000007ed,0x000007ec, - 0x00050039,0x00000006,0x000007ee,0x00000018,0x000007ed,0x00050041,0x00000007,0x000007ef, - 0x00000135,0x000003dc,0x0003003e,0x000007ef,0x000007ee,0x00050041,0x0000006d,0x000007f2, - 0x00000134,0x00000197,0x0004003d,0x00000055,0x000007f3,0x000007f2,0x0003003e,0x000007f1, - 0x000007f3,0x00050039,0x00000006,0x000007f4,0x0000008b,0x000007f1,0x00050041,0x00000007, - 0x000007f5,0x00000134,0x000003ef,0x0004003d,0x00000006,0x000007f6,0x000007f5,0x00050085, - 0x00000006,0x000007f7,0x000007f6,0x00000154,0x0003003e,0x000007f8,0x000007f7,0x00050041, - 0x00000007,0x000007fa,0x00000134,0x000003ee,0x0004003d,0x00000006,0x000007fb,0x000007fa, - 0x0003003e,0x000007f9,0x000007fb,0x00060039,0x00000006,0x000007fc,0x0000003f,0x000007f8, - 0x000007f9,0x00050083,0x00000006,0x000007fd,0x00000155,0x000007fc,0x00050085,0x00000006, - 0x000007fe,0x000007f4,0x000007fd,0x0003003e,0x000007f0,0x000007fe,0x00050041,0x00000007, - 0x000007ff,0x00000135,0x000003db,0x0004003d,0x00000006,0x00000800,0x000007ff,0x0004003d, - 0x00000006,0x00000801,0x000007f0,0x00050081,0x00000006,0x00000802,0x00000800,0x00000801, - 0x0003003e,0x00000803,0x00000802,0x0003003e,0x00000804,0x00000370,0x00060039,0x00000006, - 0x00000805,0x00000023,0x00000803,0x00000804,0x0003003e,0x00000806,0x00000154,0x0003003e, - 0x00000807,0x00000805,0x00060039,0x00000006,0x00000808,0x0000003f,0x00000806,0x00000807, - 0x00050041,0x00000007,0x00000809,0x00000135,0x000003db,0x0003003e,0x00000809,0x00000808, - 0x00040039,0x00000006,0x0000080c,0x00000065,0x00050088,0x00000006,0x0000080d,0x0000080b, - 0x0000080c,0x0004003d,0x00000006,0x0000080e,0x000007cf,0x00050083,0x00000006,0x0000080f, - 0x00000155,0x0000080e,0x00050085,0x00000006,0x00000810,0x0000080d,0x0000080f,0x0003003e, - 0x0000080a,0x00000810,0x00050041,0x00000007,0x00000811,0x00000135,0x000003db,0x0004003d, - 0x00000006,0x00000812,0x00000811,0x0004003d,0x00000006,0x00000813,0x0000080a,0x00050083, - 0x00000006,0x00000814,0x00000812,0x00000813,0x0003003e,0x00000815,0x00000154,0x0003003e, - 0x00000816,0x00000814,0x00060039,0x00000006,0x00000817,0x0000003f,0x00000815,0x00000816, - 0x00050041,0x00000007,0x00000818,0x00000135,0x000003db,0x0003003e,0x00000818,0x00000817, - 0x00050041,0x0000001b,0x0000081a,0x00000134,0x0000023e,0x0004003d,0x0000001a,0x0000081b, - 0x0000081a,0x00050041,0x0000001b,0x0000081c,0x00000134,0x0000019d,0x0004003d,0x0000001a, - 0x0000081d,0x0000081c,0x00050083,0x0000001a,0x0000081e,0x0000081b,0x0000081d,0x0003003e, - 0x00000819,0x0000081e,0x0004003d,0x0000001a,0x00000820,0x00000819,0x0003003e,0x0000081f, - 0x00000820,0x00050039,0x000000a7,0x00000821,0x000000c3,0x0000081f,0x000500a4,0x000000a7, - 0x00000823,0x00000821,0x00000822,0x000600a9,0x00000006,0x00000824,0x00000823,0x00000155, - 0x00000154,0x00050041,0x00000007,0x00000825,0x00000135,0x000003db,0x0004003d,0x00000006, - 0x00000826,0x00000825,0x00050085,0x00000006,0x00000827,0x00000826,0x00000824,0x00050041, - 0x00000007,0x00000828,0x00000135,0x000003db,0x0003003e,0x00000828,0x00000827,0x000100fd, - 0x00010038,0x00050036,0x00000002,0x0000013a,0x00000000,0x0000010b,0x00030037,0x00000100, - 0x00000138,0x00030037,0x00000102,0x00000139,0x000200f8,0x0000013b,0x0004003b,0x00000007, - 0x00000829,0x00000007,0x0004003b,0x00000007,0x00000830,0x00000007,0x0004003b,0x00000007, - 0x00000831,0x00000007,0x0004003b,0x00000007,0x00000833,0x00000007,0x0004003b,0x00000007, - 0x00000835,0x00000007,0x0004003b,0x00000007,0x00000837,0x00000007,0x0004003b,0x00000007, - 0x00000838,0x00000007,0x0004003b,0x00000007,0x0000083a,0x00000007,0x0004003b,0x00000007, - 0x0000083c,0x00000007,0x00050051,0x00000006,0x0000082a,0x00000138,0x0000000a,0x0003003e, - 0x00000829,0x0000082a,0x00050051,0x00000006,0x0000082c,0x00000138,0x00000006,0x00040039, - 0x00000006,0x0000082d,0x0000006b,0x00050085,0x00000006,0x0000082e,0x0000082c,0x0000082d, - 0x00050088,0x00000006,0x0000082f,0x0000082e,0x000002b1,0x0003003e,0x00000830,0x00000154, - 0x0003003e,0x00000831,0x0000082f,0x00060039,0x00000006,0x00000832,0x0000003f,0x00000830, - 0x00000831,0x0003003e,0x00000833,0x00000832,0x00050039,0x00000006,0x00000834,0x00000018, - 0x00000833,0x0004003d,0x00000006,0x00000836,0x00000829,0x0003003e,0x00000835,0x00000836, - 0x0003003e,0x00000837,0x0000082b,0x0003003e,0x00000838,0x00000834,0x00070039,0x00000006, - 0x00000839,0x0000000c,0x00000835,0x00000837,0x00000838,0x0004003d,0x00000006,0x0000083b, - 0x00000829,0x0003003e,0x0000083a,0x0000083b,0x0003003e,0x0000083c,0x00000839,0x00060039, - 0x00000006,0x0000083d,0x00000023,0x0000083a,0x0000083c,0x0003003e,0x00000829,0x0000083d, - 0x0004003d,0x00000006,0x0000083e,0x00000829,0x00050041,0x00000007,0x0000083f,0x00000139, - 0x0000019d,0x0003003e,0x0000083f,0x0000083e,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x00000140,0x00000000,0x0000013c,0x00030037,0x0000006d,0x0000013d,0x00030037,0x00000122, - 0x0000013e,0x00030037,0x00000102,0x0000013f,0x000200f8,0x00000141,0x0004003b,0x0000001b, - 0x00000842,0x00000007,0x0004003b,0x0000001b,0x00000855,0x00000007,0x0004003b,0x0000006d, - 0x00000858,0x00000007,0x0004003b,0x0000006d,0x00000859,0x00000007,0x0004003b,0x0000006d, - 0x0000085c,0x00000007,0x0004003b,0x0000001b,0x0000085e,0x00000007,0x0004003b,0x0000001b, - 0x00000862,0x00000007,0x0004003b,0x00000122,0x00000867,0x00000007,0x0004003b,0x0000001b, - 0x0000086b,0x00000007,0x0004003b,0x0000001b,0x0000086e,0x00000007,0x0004003b,0x0000006d, - 0x00000870,0x00000007,0x0004003b,0x0000006d,0x00000871,0x00000007,0x0004003b,0x0000001b, - 0x00000873,0x00000007,0x0004003b,0x0000001b,0x00000877,0x00000007,0x0004003b,0x0000001b, - 0x0000087c,0x00000007,0x0004003b,0x0000006d,0x0000087f,0x00000007,0x0004003b,0x0000006d, - 0x00000880,0x00000007,0x0004003b,0x0000001b,0x00000882,0x00000007,0x0004003b,0x00000030, - 0x00000890,0x00000007,0x0004003b,0x0000001b,0x00000891,0x00000007,0x0004003b,0x00000007, - 0x00000895,0x00000007,0x0004003b,0x00000007,0x0000089a,0x00000007,0x0004003b,0x00000007, - 0x0000089f,0x00000007,0x0004003b,0x00000007,0x000008a4,0x00000007,0x0004003d,0x00000055, - 0x00000840,0x0000013d,0x00050041,0x0000006d,0x00000841,0x0000013e,0x00000197,0x0003003e, - 0x00000841,0x00000840,0x0004003d,0x00000055,0x00000843,0x0000013d,0x0004006f,0x0000001a, - 0x00000844,0x00000843,0x00050050,0x0000001a,0x00000845,0x000002b1,0x000002b1,0x00050081, - 0x0000001a,0x00000846,0x00000844,0x00000845,0x00040039,0x00000055,0x00000847,0x0000005b, - 0x0004006f,0x0000001a,0x00000848,0x00000847,0x00050088,0x0000001a,0x00000849,0x00000846, - 0x00000848,0x0003003e,0x00000842,0x00000849,0x0004003d,0x0000001a,0x0000084a,0x00000842, - 0x00050041,0x0000001b,0x0000084b,0x0000013e,0x0000023e,0x0003003e,0x0000084b,0x0000084a, - 0x0004003d,0x0000001a,0x0000084c,0x00000842,0x00040039,0x0000001a,0x0000084d,0x00000060, - 0x00040039,0x00000055,0x0000084e,0x00000057,0x0004006f,0x0000001a,0x0000084f,0x0000084e, - 0x00050088,0x0000001a,0x00000850,0x0000084d,0x0000084f,0x00050081,0x0000001a,0x00000851, - 0x0000084c,0x00000850,0x00050041,0x0000001b,0x00000852,0x0000013e,0x000001a2,0x0003003e, - 0x00000852,0x00000851,0x00040039,0x00000055,0x00000853,0x00000057,0x00040039,0x00000055, - 0x00000854,0x00000059,0x00050041,0x0000001b,0x00000856,0x0000013e,0x000001a2,0x0004003d, - 0x0000001a,0x00000857,0x00000856,0x0003003e,0x00000855,0x00000857,0x0003003e,0x00000858, - 0x00000853,0x0003003e,0x00000859,0x00000854,0x00070039,0x0000001a,0x0000085a,0x000000cf, - 0x00000855,0x00000858,0x00000859,0x00050041,0x0000001b,0x0000085b,0x0000013e,0x000001a7, - 0x0003003e,0x0000085b,0x0000085a,0x0004003d,0x00000055,0x0000085d,0x0000013d,0x0003003e, - 0x0000085c,0x0000085d,0x0004003d,0x0000001a,0x0000085f,0x00000842,0x0003003e,0x0000085e, - 0x0000085f,0x00060039,0x0000001a,0x00000860,0x00000120,0x0000085c,0x0000085e,0x00050041, - 0x0000001b,0x00000861,0x0000013e,0x0000019d,0x0003003e,0x00000861,0x00000860,0x00050041, - 0x0000001b,0x00000863,0x0000013e,0x0000019d,0x0004003d,0x0000001a,0x00000864,0x00000863, - 0x0003003e,0x00000862,0x00000864,0x00050039,0x00000006,0x00000865,0x0000009d,0x00000862, - 0x00050041,0x00000007,0x00000866,0x0000013e,0x000003dc,0x0003003e,0x00000866,0x00000865, - 0x0004003d,0x00000100,0x00000868,0x0000013e,0x0003003e,0x00000867,0x00000868,0x00050039, - 0x00000002,0x00000869,0x00000125,0x00000867,0x0004003d,0x00000100,0x0000086a,0x00000867, - 0x0003003e,0x0000013e,0x0000086a,0x00040039,0x00000055,0x0000086c,0x00000057,0x00040039, - 0x00000055,0x0000086d,0x00000059,0x0004003d,0x0000001a,0x0000086f,0x00000842,0x0003003e, - 0x0000086e,0x0000086f,0x0003003e,0x00000870,0x0000086c,0x0003003e,0x00000871,0x0000086d, - 0x00070039,0x0000001a,0x00000872,0x000000cf,0x0000086e,0x00000870,0x00000871,0x0003003e, - 0x0000086b,0x00000872,0x0004003d,0x0000001a,0x00000874,0x0000086b,0x0003003e,0x00000873, - 0x00000874,0x00050039,0x00000006,0x00000875,0x00000087,0x00000873,0x00050041,0x00000007, - 0x00000876,0x0000013e,0x000003f0,0x0003003e,0x00000876,0x00000875,0x00040039,0x00000055, - 0x00000878,0x00000057,0x00050050,0x00000055,0x00000879,0x000001a2,0x000001a2,0x00050087, - 0x00000055,0x0000087a,0x00000878,0x00000879,0x00040039,0x00000055,0x0000087b,0x00000080, - 0x00050041,0x0000001b,0x0000087d,0x0000013e,0x000001a2,0x0004003d,0x0000001a,0x0000087e, - 0x0000087d,0x0003003e,0x0000087c,0x0000087e,0x0003003e,0x0000087f,0x0000087a,0x0003003e, - 0x00000880,0x0000087b,0x00070039,0x0000001a,0x00000881,0x000000cf,0x0000087c,0x0000087f, - 0x00000880,0x0003003e,0x00000877,0x00000881,0x0004003d,0x0000001a,0x00000883,0x00000877, - 0x0003003e,0x00000882,0x00000883,0x00050039,0x00000006,0x00000884,0x00000084,0x00000882, - 0x00050041,0x00000007,0x00000885,0x0000013e,0x00000402,0x0003003e,0x00000885,0x00000884, - 0x00050041,0x000000a8,0x00000886,0x0000013e,0x000001b7,0x0004003d,0x000000a7,0x00000887, - 0x00000886,0x000500a4,0x000000a7,0x00000888,0x00000887,0x000007c8,0x000400a8,0x000000a7, - 0x00000889,0x00000888,0x000300f7,0x0000088b,0x00000000,0x000400fa,0x00000889,0x0000088a, - 0x0000088b,0x000200f8,0x0000088a,0x00040039,0x00000006,0x0000088c,0x00000069,0x000500b4, - 0x000000a7,0x0000088d,0x00000154,0x0000088c,0x000200f9,0x0000088b,0x000200f8,0x0000088b, - 0x000700f5,0x000000a7,0x0000088e,0x00000888,0x00000141,0x0000088d,0x0000088a,0x00050041, - 0x000000a8,0x0000088f,0x0000013e,0x00000403,0x0003003e,0x0000088f,0x0000088e,0x00050041, - 0x0000001b,0x00000892,0x0000013e,0x000001a7,0x0004003d,0x0000001a,0x00000893,0x00000892, - 0x0003003e,0x00000891,0x00000893,0x00050039,0x0000002f,0x00000894,0x0000009a,0x00000891, - 0x0003003e,0x00000890,0x00000894,0x00050041,0x00000007,0x00000896,0x00000890,0x000001fa, - 0x0004003d,0x00000006,0x00000897,0x00000896,0x0003003e,0x00000895,0x00000897,0x00050039, - 0x00000006,0x00000898,0x00000018,0x00000895,0x00050041,0x00000007,0x00000899,0x0000013e, - 0x000003ee,0x0003003e,0x00000899,0x00000898,0x00050041,0x00000007,0x0000089b,0x00000890, - 0x00000293,0x0004003d,0x00000006,0x0000089c,0x0000089b,0x0003003e,0x0000089a,0x0000089c, - 0x00050039,0x00000006,0x0000089d,0x00000018,0x0000089a,0x00050041,0x00000007,0x0000089e, - 0x0000013e,0x000001ac,0x0003003e,0x0000089e,0x0000089d,0x00050041,0x00000007,0x000008a0, - 0x00000890,0x00000297,0x0004003d,0x00000006,0x000008a1,0x000008a0,0x0003003e,0x0000089f, - 0x000008a1,0x00050039,0x00000006,0x000008a2,0x00000018,0x0000089f,0x00050041,0x00000007, - 0x000008a3,0x0000013e,0x000003ef,0x0003003e,0x000008a3,0x000008a2,0x00050041,0x00000007, - 0x000008a5,0x00000890,0x00000716,0x0004003d,0x00000006,0x000008a6,0x000008a5,0x0003003e, - 0x000008a4,0x000008a6,0x00050039,0x00000006,0x000008a7,0x00000018,0x000008a4,0x00050041, - 0x00000007,0x000008a8,0x0000013e,0x000001b2,0x0003003e,0x000008a8,0x000008a7,0x00050041, - 0x00000007,0x000008a9,0x0000013e,0x000001b2,0x0004003d,0x00000006,0x000008aa,0x000008a9, - 0x00050085,0x00000006,0x000008ac,0x000008aa,0x000008ab,0x0006000c,0x00000006,0x000008ad, - 0x00000001,0x00000001,0x000008ac,0x000500ba,0x000000a7,0x000008ae,0x000008ad,0x00000155, - 0x000600a9,0x00000006,0x000008af,0x000008ae,0x00000155,0x00000154,0x00050041,0x00000007, - 0x000008b0,0x0000013e,0x000001b2,0x0004003d,0x00000006,0x000008b1,0x000008b0,0x00050085, - 0x00000006,0x000008b2,0x000008b1,0x000008af,0x00050041,0x00000007,0x000008b3,0x0000013e, - 0x000001b2,0x0003003e,0x000008b3,0x000008b2,0x00050041,0x0000000f,0x000008b4,0x0000013f, - 0x0000023e,0x0003003e,0x000008b4,0x00000496,0x00050041,0x0000000f,0x000008b5,0x0000013f, - 0x000001a7,0x0003003e,0x000008b5,0x00000496,0x00050041,0x00000007,0x000008b6,0x0000013f, - 0x0000019d,0x0003003e,0x000008b6,0x00000155,0x00050041,0x00000007,0x000008b7,0x0000013f, - 0x000001a2,0x0003003e,0x000008b7,0x00000154,0x00050041,0x00000007,0x000008b8,0x0000013f, - 0x000003db,0x0003003e,0x000008b8,0x00000154,0x00050041,0x00000007,0x000008b9,0x0000013f, - 0x000003dc,0x0003003e,0x000008b9,0x00000154,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x00000144,0x00000000,0x00000142,0x00030037,0x0000006d,0x00000143,0x000200f8,0x00000145, - 0x0004003b,0x00000122,0x000008ba,0x00000007,0x0004003b,0x00000102,0x000008bb,0x00000007, - 0x0004003b,0x0000006d,0x000008bc,0x00000007,0x0004003b,0x00000122,0x000008be,0x00000007, - 0x0004003b,0x00000102,0x000008c0,0x00000007,0x0004003b,0x00000102,0x000008d0,0x00000007, - 0x0004003b,0x00000122,0x000008d4,0x00000007,0x0004003b,0x00000102,0x000008d6,0x00000007, - 0x0004003b,0x00000102,0x000008db,0x00000007,0x0004003b,0x00000102,0x000008e0,0x00000007, - 0x0004003b,0x00000102,0x000008e5,0x00000007,0x0004003b,0x00000102,0x000008ea,0x00000007, - 0x0004003b,0x0000000f,0x000008f4,0x00000007,0x0004003b,0x0000000f,0x000008f7,0x00000007, - 0x0004003b,0x0000006d,0x00000902,0x00000007,0x0004003b,0x00000030,0x00000904,0x00000007, - 0x0004003b,0x0000006d,0x00000906,0x00000007,0x0004003b,0x0000000f,0x00000908,0x00000007, - 0x0004003b,0x0000006d,0x0000090c,0x00000007,0x0004003b,0x00000007,0x0000090e,0x00000007, - 0x0004003d,0x00000055,0x000008bd,0x00000143,0x0003003e,0x000008bc,0x000008bd,0x0004003d, - 0x00000100,0x000008bf,0x000008ba,0x0003003e,0x000008be,0x000008bf,0x0004003d,0x00000101, - 0x000008c1,0x000008bb,0x0003003e,0x000008c0,0x000008c1,0x00070039,0x00000002,0x000008c2, - 0x00000140,0x000008bc,0x000008be,0x000008c0,0x0004003d,0x00000100,0x000008c3,0x000008be, - 0x0003003e,0x000008ba,0x000008c3,0x0004003d,0x00000101,0x000008c4,0x000008c0,0x0003003e, - 0x000008bb,0x000008c4,0x00050041,0x000000a8,0x000008c5,0x000008ba,0x000001b7,0x0004003d, - 0x000000a7,0x000008c6,0x000008c5,0x000300f7,0x000008c8,0x00000000,0x000400fa,0x000008c6, - 0x000008c7,0x000008c8,0x000200f8,0x000008c7,0x00050041,0x000000a8,0x000008c9,0x000008ba, - 0x00000403,0x0004003d,0x000000a7,0x000008ca,0x000008c9,0x000400a8,0x000000a7,0x000008cb, - 0x000008ca,0x000200f9,0x000008c8,0x000200f8,0x000008c8,0x000700f5,0x000000a7,0x000008cc, - 0x000008c6,0x00000145,0x000008cb,0x000008c7,0x000300f7,0x000008ce,0x00000000,0x000400fa, - 0x000008cc,0x000008cd,0x000008ce,0x000200f8,0x000008cd,0x0004003d,0x00000100,0x000008cf, - 0x000008ba,0x0004003d,0x00000101,0x000008d1,0x000008bb,0x0003003e,0x000008d0,0x000008d1, - 0x00060039,0x00000002,0x000008d2,0x00000129,0x000008cf,0x000008d0,0x0004003d,0x00000101, - 0x000008d3,0x000008d0,0x0003003e,0x000008bb,0x000008d3,0x000200f9,0x000008ce,0x000200f8, - 0x000008ce,0x0004003d,0x00000100,0x000008d5,0x000008ba,0x0003003e,0x000008d4,0x000008d5, - 0x0004003d,0x00000101,0x000008d7,0x000008bb,0x0003003e,0x000008d6,0x000008d7,0x00060039, - 0x00000002,0x000008d8,0x00000136,0x000008d4,0x000008d6,0x0004003d,0x00000101,0x000008d9, - 0x000008d6,0x0003003e,0x000008bb,0x000008d9,0x0004003d,0x00000100,0x000008da,0x000008ba, - 0x0004003d,0x00000101,0x000008dc,0x000008bb,0x0003003e,0x000008db,0x000008dc,0x00060039, - 0x00000002,0x000008dd,0x0000013a,0x000008da,0x000008db,0x0004003d,0x00000101,0x000008de, - 0x000008db,0x0003003e,0x000008bb,0x000008de,0x0004003d,0x00000100,0x000008df,0x000008ba, - 0x0004003d,0x00000101,0x000008e1,0x000008bb,0x0003003e,0x000008e0,0x000008e1,0x00060039, - 0x00000002,0x000008e2,0x0000010e,0x000008df,0x000008e0,0x0004003d,0x00000101,0x000008e3, - 0x000008e0,0x0003003e,0x000008bb,0x000008e3,0x0004003d,0x00000100,0x000008e4,0x000008ba, - 0x0004003d,0x00000101,0x000008e6,0x000008bb,0x0003003e,0x000008e5,0x000008e6,0x00060039, - 0x00000002,0x000008e7,0x00000131,0x000008e4,0x000008e5,0x0004003d,0x00000101,0x000008e8, - 0x000008e5,0x0003003e,0x000008bb,0x000008e8,0x0004003d,0x00000100,0x000008e9,0x000008ba, - 0x0004003d,0x00000101,0x000008eb,0x000008bb,0x0003003e,0x000008ea,0x000008eb,0x00060039, - 0x00000002,0x000008ec,0x0000012d,0x000008e9,0x000008ea,0x0004003d,0x00000101,0x000008ed, - 0x000008ea,0x0003003e,0x000008bb,0x000008ed,0x00040039,0x00000006,0x000008ee,0x00000096, - 0x00050041,0x0000000f,0x000008ef,0x000008bb,0x000001a7,0x0004003d,0x0000000e,0x000008f0, - 0x000008ef,0x00060050,0x0000000e,0x000008f1,0x000008ee,0x000008ee,0x000008ee,0x00050088, - 0x0000000e,0x000008f2,0x000008f0,0x000008f1,0x00050041,0x0000000f,0x000008f3,0x000008bb, - 0x000001a7,0x0003003e,0x000008f3,0x000008f2,0x00050041,0x0000000f,0x000008f5,0x000008bb, - 0x000001a7,0x0004003d,0x0000000e,0x000008f6,0x000008f5,0x0003003e,0x000008f4,0x000008f6, - 0x0003003e,0x000008f7,0x00000496,0x00060039,0x0000000e,0x000008f8,0x00000047,0x000008f4, - 0x000008f7,0x00050041,0x0000000f,0x000008f9,0x000008bb,0x000001a7,0x0003003e,0x000008f9, - 0x000008f8,0x00050041,0x0000000f,0x000008fa,0x000008bb,0x000001a7,0x0004003d,0x0000000e, - 0x000008fb,0x000008fa,0x00050041,0x00000007,0x000008fc,0x000008bb,0x000003db,0x0004003d, - 0x00000006,0x000008fd,0x000008fc,0x00050051,0x00000006,0x000008fe,0x000008fb,0x00000000, - 0x00050051,0x00000006,0x000008ff,0x000008fb,0x00000001,0x00050051,0x00000006,0x00000900, - 0x000008fb,0x00000002,0x00070050,0x0000002f,0x00000901,0x000008fe,0x000008ff,0x00000900, - 0x000008fd,0x0004003d,0x00000055,0x00000903,0x00000143,0x0003003e,0x00000902,0x00000903, - 0x0003003e,0x00000904,0x00000901,0x00060039,0x00000002,0x00000905,0x00000079,0x00000902, - 0x00000904,0x0004003d,0x00000055,0x00000907,0x00000143,0x0003003e,0x00000906,0x00000907, - 0x00050041,0x0000000f,0x00000909,0x000008bb,0x000001a7,0x0004003d,0x0000000e,0x0000090a, - 0x00000909,0x0003003e,0x00000908,0x0000090a,0x00060039,0x00000002,0x0000090b,0x0000007e, - 0x00000906,0x00000908,0x0004003d,0x00000055,0x0000090d,0x00000143,0x0003003e,0x0000090c, - 0x0000090d,0x0003003e,0x0000090e,0x00000154,0x00060039,0x00000002,0x0000090f,0x00000090, - 0x0000090c,0x0000090e,0x000100fd,0x00010038 + 0x00040020,0x0000018f,0x00000002,0x0000018e,0x0004003b,0x0000018f,0x00000190,0x00000002, + 0x0004002b,0x00000036,0x00000191,0x00000000,0x00040020,0x00000192,0x00000002,0x00000055, + 0x0004002b,0x00000036,0x00000197,0x00000004,0x0004002b,0x00000036,0x0000019c,0x00000002, + 0x0004002b,0x00000036,0x000001a1,0x00000003,0x0004002b,0x00000036,0x000001a6,0x00000007, + 0x00040020,0x000001a7,0x00000002,0x0000001a,0x0004002b,0x00000036,0x000001ac,0x0000000a, + 0x0004002b,0x00000036,0x000001b1,0x0000000d,0x00040020,0x000001b2,0x00000002,0x00000006, + 0x0004002b,0x00000036,0x000001b7,0x0000000f,0x0004002b,0x00000036,0x000001bc,0x00000011, + 0x0004002b,0x00000036,0x000001c1,0x00000012,0x00090019,0x000001c6,0x00000006,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001c7,0x00000000, + 0x000001c6,0x0004003b,0x000001c7,0x000001c8,0x00000000,0x0004003b,0x000001c7,0x000001cf, + 0x00000000,0x00090019,0x000001d5,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, + 0x00000002,0x00000002,0x00040020,0x000001d6,0x00000000,0x000001d5,0x0004003b,0x000001d6, + 0x000001d7,0x00000000,0x00090019,0x000001db,0x00000006,0x00000001,0x00000000,0x00000000, + 0x00000000,0x00000002,0x00000000,0x00040020,0x000001dc,0x00000000,0x000001db,0x0004003b, + 0x000001dc,0x000001dd,0x00000000,0x0004003b,0x000001c7,0x000001e5,0x00000000,0x0002001a, + 0x000001eb,0x00040020,0x000001ec,0x00000000,0x000001eb,0x0004003b,0x000001ec,0x000001ed, + 0x00000000,0x0003001b,0x000001ef,0x000001c6,0x00040015,0x000001f3,0x00000020,0x00000000, + 0x0004002b,0x000001f3,0x000001f4,0x00000000,0x0004003b,0x000001c7,0x000001f8,0x00000000, + 0x00090019,0x00000201,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x0000000f,0x00040020,0x00000202,0x00000000,0x00000201,0x0004003b,0x00000202,0x00000203, + 0x00000000,0x0004003b,0x000001c7,0x0000020e,0x00000000,0x0004003b,0x000001c7,0x00000216, + 0x00000000,0x0005002c,0x00000055,0x00000218,0x00000191,0x00000191,0x0004003b,0x000001c7, + 0x00000222,0x00000000,0x0004002b,0x00000006,0x0000022b,0x45700000,0x0004002b,0x00000006, + 0x0000022c,0x45070000,0x0005002c,0x0000001a,0x0000022d,0x0000022b,0x0000022c,0x0004002b, + 0x00000036,0x00000238,0x00000001,0x0004002b,0x00000006,0x00000265,0x00800000,0x0004002b, + 0x000001f3,0x0000028d,0x00000001,0x0004002b,0x000001f3,0x00000291,0x00000002,0x0004002b, + 0x00000006,0x000002a7,0x3e800000,0x0004002b,0x00000006,0x000002ab,0x3f000000,0x0004002b, + 0x00000006,0x000002bb,0xbe800000,0x0005002c,0x0000001a,0x00000307,0x000002ab,0x000002ab, + 0x00040017,0x0000031b,0x000001f3,0x00000002,0x00040017,0x0000031f,0x000000a7,0x00000002, + 0x0004002b,0x00000006,0x00000326,0x387fda40,0x0004002b,0x00000006,0x0000032c,0x40490fdb, + 0x0004002b,0x00000006,0x00000333,0x3fc90fdb,0x0004002b,0x00000006,0x00000340,0x40000000, + 0x0004002b,0x00000006,0x0000034a,0x3ecccccd,0x0004002b,0x00000006,0x00000352,0x3fc80000, + 0x0004002b,0x00000006,0x00000357,0x3f100000,0x0004002b,0x00000006,0x0000035f,0x40800000, + 0x0004002b,0x00000006,0x0000036a,0xbf800000,0x0004002b,0x00000006,0x00000370,0x80000000, + 0x0004002b,0x00000036,0x000003ab,0x00000005,0x0004002b,0x00000036,0x000003ac,0x00000006, + 0x0004002b,0x00000036,0x000003be,0x00000008,0x0004002b,0x00000036,0x000003bf,0x00000009, + 0x0004002b,0x00000036,0x000003c0,0x0000000b,0x0004002b,0x00000036,0x000003d2,0x0000000c, + 0x0004002b,0x00000036,0x000003d3,0x0000000e,0x0004002b,0x000001f3,0x000003f1,0x00000004, + 0x0004001c,0x000003f2,0x0000002f,0x000003f1,0x00040020,0x000003f3,0x00000007,0x000003f2, + 0x0004002b,0x00000006,0x0000045e,0x3ffeb852,0x0006002c,0x0000000e,0x00000466,0x0000014e, + 0x0000014e,0x0000014e,0x0004002b,0x00000036,0x00000492,0xfffffffe,0x0004002b,0x00000036, + 0x00000493,0xffffffff,0x0004002b,0x000001f3,0x000004e1,0x00000009,0x0004001c,0x000004e2, + 0x0000000e,0x000004e1,0x00040020,0x000004e3,0x00000007,0x000004e2,0x0004002b,0x00000006, + 0x000004f8,0x3e99999a,0x0004002b,0x00000006,0x00000505,0x40a00000,0x0004002b,0x00000006, + 0x00000570,0xc0133333,0x0004002b,0x00000006,0x000005a8,0x3d3d70a4,0x0005002c,0x00000055, + 0x000005c4,0x00000493,0x00000493,0x0005002c,0x00000055,0x000005ce,0x00000191,0x00000493, + 0x0005002c,0x00000055,0x000005d8,0x00000238,0x00000493,0x0005002c,0x00000055,0x000005e2, + 0x0000019c,0x00000493,0x0005002c,0x00000055,0x000005ec,0x00000493,0x00000191,0x0005002c, + 0x00000055,0x000005ff,0x00000238,0x00000191,0x0005002c,0x00000055,0x00000609,0x0000019c, + 0x00000191,0x0005002c,0x00000055,0x00000613,0x00000493,0x00000238,0x0005002c,0x00000055, + 0x0000061d,0x00000191,0x00000238,0x0005002c,0x00000055,0x00000627,0x00000238,0x00000238, + 0x0005002c,0x00000055,0x00000631,0x0000019c,0x00000238,0x0005002c,0x00000055,0x0000063b, + 0x00000493,0x0000019c,0x0005002c,0x00000055,0x00000645,0x00000191,0x0000019c,0x0005002c, + 0x00000055,0x0000064f,0x00000238,0x0000019c,0x0005002c,0x00000055,0x00000659,0x0000019c, + 0x0000019c,0x0004002b,0x000001f3,0x000006c9,0x00000003,0x0004002b,0x00000006,0x000006f7, + 0x41a00000,0x0004002b,0x00000006,0x000006fc,0x3f400000,0x0004002b,0x00000006,0x0000071f, + 0x40400000,0x0004002b,0x00000006,0x00000728,0x3fd9999a,0x0006002c,0x0000000e,0x00000729, + 0x00000728,0x0000014f,0x0000014f,0x0004002b,0x00000006,0x0000072e,0x340018ef,0x0006002c, + 0x0000000e,0x0000072f,0x0000072e,0x0000072e,0x0000072e,0x0003002a,0x000000a7,0x00000764, + 0x0004002b,0x00000006,0x000007a7,0x3dcccccd,0x00030029,0x000000a7,0x000007be,0x0004002b, + 0x00000006,0x000007c7,0x3e19999a,0x0004002b,0x00000006,0x00000847,0x42c80000,0x00040017, + 0x000008ac,0x000001f3,0x00000003,0x00040020,0x000008ad,0x00000001,0x000008ac,0x0004003b, + 0x000008ad,0x000008ae,0x00000001,0x0004002b,0x00000006,0x000008b4,0x477fe000,0x0004002b, + 0x00000006,0x000008b5,0x37801002,0x0004003b,0x000001ec,0x000008b6,0x00000000,0x0004003b, + 0x000001c7,0x000008b7,0x00000000,0x0004003b,0x000001c7,0x000008b8,0x00000000,0x0004002b, + 0x00000006,0x000008b9,0x7f7fffff,0x0004002b,0x00000006,0x000008ba,0x3a1fe868,0x0004002b, + 0x00000006,0x000008bb,0x3d800000,0x0004002b,0x00000006,0x000008bc,0x3e400000,0x0004002b, + 0x00000006,0x000008bd,0x461c4000,0x0004002b,0x000001f3,0x000008be,0x00000008,0x0006002c, + 0x000008ac,0x000008bf,0x000008be,0x000008be,0x0000028d,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000006d,0x000008b2,0x00000007, + 0x0004003d,0x000008ac,0x000008af,0x000008ae,0x0007004f,0x0000031b,0x000008b0,0x000008af, + 0x000008af,0x00000000,0x00000001,0x0004007c,0x00000055,0x000008b1,0x000008b0,0x0003003e, + 0x000008b2,0x000008b1,0x00050039,0x00000002,0x000008b3,0x0000013e,0x000008b2,0x000100fd, + 0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007, + 0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8, + 0x0000000d,0x0004003d,0x00000006,0x00000140,0x00000009,0x0004003d,0x00000006,0x00000141, + 0x0000000a,0x0004003d,0x00000006,0x00000142,0x0000000b,0x0008000c,0x00000006,0x00000143, + 0x00000001,0x0000002e,0x00000140,0x00000141,0x00000142,0x000200fe,0x00000143,0x00010038, + 0x00050036,0x0000000e,0x00000014,0x00000000,0x00000010,0x00030037,0x0000000f,0x00000011, + 0x00030037,0x0000000f,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8,0x00000015, + 0x0004003d,0x0000000e,0x00000146,0x00000011,0x0004003d,0x0000000e,0x00000147,0x00000012, + 0x0004003d,0x00000006,0x00000148,0x00000013,0x00060050,0x0000000e,0x00000149,0x00000148, + 0x00000148,0x00000148,0x0008000c,0x0000000e,0x0000014a,0x00000001,0x0000002e,0x00000146, + 0x00000147,0x00000149,0x000200fe,0x0000014a,0x00010038,0x00050036,0x00000006,0x00000018, + 0x00000000,0x00000016,0x00030037,0x00000007,0x00000017,0x000200f8,0x00000019,0x0004003d, + 0x00000006,0x0000014d,0x00000017,0x0008000c,0x00000006,0x00000150,0x00000001,0x0000002b, + 0x0000014d,0x0000014e,0x0000014f,0x000200fe,0x00000150,0x00010038,0x00050036,0x0000001a, + 0x0000001e,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x000200f8,0x0000001f, + 0x0004003d,0x0000001a,0x00000153,0x0000001d,0x0006000c,0x0000001a,0x00000154,0x00000001, + 0x0000000a,0x00000153,0x000200fe,0x00000154,0x00010038,0x00050036,0x00000006,0x00000023, + 0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x00030037,0x00000007,0x00000022, + 0x000200f8,0x00000024,0x0004003d,0x00000006,0x00000157,0x00000021,0x0004003d,0x00000006, + 0x00000158,0x00000022,0x0007000c,0x00000006,0x00000159,0x00000001,0x00000025,0x00000157, + 0x00000158,0x000200fe,0x00000159,0x00010038,0x00050036,0x0000001a,0x00000028,0x00000000, + 0x00000025,0x00030037,0x0000001b,0x00000026,0x00030037,0x0000001b,0x00000027,0x000200f8, + 0x00000029,0x0004003d,0x0000001a,0x0000015c,0x00000026,0x0004003d,0x0000001a,0x0000015d, + 0x00000027,0x0007000c,0x0000001a,0x0000015e,0x00000001,0x00000025,0x0000015c,0x0000015d, + 0x000200fe,0x0000015e,0x00010038,0x00050036,0x0000000e,0x0000002d,0x00000000,0x0000002a, + 0x00030037,0x0000000f,0x0000002b,0x00030037,0x0000000f,0x0000002c,0x000200f8,0x0000002e, + 0x0004003d,0x0000000e,0x00000161,0x0000002b,0x0004003d,0x0000000e,0x00000162,0x0000002c, + 0x0007000c,0x0000000e,0x00000163,0x00000001,0x00000025,0x00000161,0x00000162,0x000200fe, + 0x00000163,0x00010038,0x00050036,0x0000002f,0x00000034,0x00000000,0x00000031,0x00030037, + 0x00000030,0x00000032,0x00030037,0x00000030,0x00000033,0x000200f8,0x00000035,0x0004003d, + 0x0000002f,0x00000166,0x00000032,0x0004003d,0x0000002f,0x00000167,0x00000033,0x0007000c, + 0x0000002f,0x00000168,0x00000001,0x00000025,0x00000166,0x00000167,0x000200fe,0x00000168, + 0x00010038,0x00050036,0x00000036,0x0000003b,0x00000000,0x00000038,0x00030037,0x00000037, + 0x00000039,0x00030037,0x00000037,0x0000003a,0x000200f8,0x0000003c,0x0004003d,0x00000036, + 0x0000016b,0x00000039,0x0004003d,0x00000036,0x0000016c,0x0000003a,0x0007000c,0x00000036, + 0x0000016d,0x00000001,0x00000027,0x0000016b,0x0000016c,0x000200fe,0x0000016d,0x00010038, + 0x00050036,0x00000006,0x0000003f,0x00000000,0x00000020,0x00030037,0x00000007,0x0000003d, + 0x00030037,0x00000007,0x0000003e,0x000200f8,0x00000040,0x0004003d,0x00000006,0x00000170, + 0x0000003d,0x0004003d,0x00000006,0x00000171,0x0000003e,0x0007000c,0x00000006,0x00000172, + 0x00000001,0x00000028,0x00000170,0x00000171,0x000200fe,0x00000172,0x00010038,0x00050036, + 0x0000001a,0x00000043,0x00000000,0x00000025,0x00030037,0x0000001b,0x00000041,0x00030037, + 0x0000001b,0x00000042,0x000200f8,0x00000044,0x0004003d,0x0000001a,0x00000175,0x00000041, + 0x0004003d,0x0000001a,0x00000176,0x00000042,0x0007000c,0x0000001a,0x00000177,0x00000001, + 0x00000028,0x00000175,0x00000176,0x000200fe,0x00000177,0x00010038,0x00050036,0x0000000e, + 0x00000047,0x00000000,0x0000002a,0x00030037,0x0000000f,0x00000045,0x00030037,0x0000000f, + 0x00000046,0x000200f8,0x00000048,0x0004003d,0x0000000e,0x0000017a,0x00000045,0x0004003d, + 0x0000000e,0x0000017b,0x00000046,0x0007000c,0x0000000e,0x0000017c,0x00000001,0x00000028, + 0x0000017a,0x0000017b,0x000200fe,0x0000017c,0x00010038,0x00050036,0x0000002f,0x0000004b, + 0x00000000,0x00000031,0x00030037,0x00000030,0x00000049,0x00030037,0x00000030,0x0000004a, + 0x000200f8,0x0000004c,0x0004003d,0x0000002f,0x0000017f,0x00000049,0x0004003d,0x0000002f, + 0x00000180,0x0000004a,0x0007000c,0x0000002f,0x00000181,0x00000001,0x00000028,0x0000017f, + 0x00000180,0x000200fe,0x00000181,0x00010038,0x00050036,0x00000036,0x0000004f,0x00000000, + 0x00000038,0x00030037,0x00000037,0x0000004d,0x00030037,0x00000037,0x0000004e,0x000200f8, + 0x00000050,0x0004003d,0x00000036,0x00000184,0x0000004d,0x0004003d,0x00000036,0x00000185, + 0x0000004e,0x0007000c,0x00000036,0x00000186,0x00000001,0x0000002a,0x00000184,0x00000185, + 0x000200fe,0x00000186,0x00010038,0x00050036,0x00000006,0x00000053,0x00000000,0x00000020, + 0x00030037,0x00000007,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8,0x00000054, + 0x0004003d,0x00000006,0x00000189,0x00000051,0x0004003d,0x00000006,0x0000018a,0x00000052, + 0x0007000c,0x00000006,0x0000018b,0x00000001,0x0000001a,0x00000189,0x0000018a,0x000200fe, + 0x0000018b,0x00010038,0x00050036,0x00000055,0x00000057,0x00000000,0x00000056,0x000200f8, + 0x00000058,0x00050041,0x00000192,0x00000193,0x00000190,0x00000191,0x0004003d,0x00000055, + 0x00000194,0x00000193,0x000200fe,0x00000194,0x00010038,0x00050036,0x00000055,0x00000059, + 0x00000000,0x00000056,0x000200f8,0x0000005a,0x00050041,0x00000192,0x00000198,0x00000190, + 0x00000197,0x0004003d,0x00000055,0x00000199,0x00000198,0x000200fe,0x00000199,0x00010038, + 0x00050036,0x00000055,0x0000005b,0x00000000,0x00000056,0x000200f8,0x0000005c,0x00050041, + 0x00000192,0x0000019d,0x00000190,0x0000019c,0x0004003d,0x00000055,0x0000019e,0x0000019d, + 0x000200fe,0x0000019e,0x00010038,0x00050036,0x00000055,0x0000005d,0x00000000,0x00000056, + 0x000200f8,0x0000005e,0x00050041,0x00000192,0x000001a2,0x00000190,0x000001a1,0x0004003d, + 0x00000055,0x000001a3,0x000001a2,0x000200fe,0x000001a3,0x00010038,0x00050036,0x0000001a, + 0x00000060,0x00000000,0x0000005f,0x000200f8,0x00000061,0x00050041,0x000001a7,0x000001a8, + 0x00000190,0x000001a6,0x0004003d,0x0000001a,0x000001a9,0x000001a8,0x000200fe,0x000001a9, + 0x00010038,0x00050036,0x0000001a,0x00000062,0x00000000,0x0000005f,0x000200f8,0x00000063, + 0x00050041,0x000001a7,0x000001ad,0x00000190,0x000001ac,0x0004003d,0x0000001a,0x000001ae, + 0x000001ad,0x000200fe,0x000001ae,0x00010038,0x00050036,0x00000006,0x00000065,0x00000000, + 0x00000064,0x000200f8,0x00000066,0x00050041,0x000001b2,0x000001b3,0x00000190,0x000001b1, + 0x0004003d,0x00000006,0x000001b4,0x000001b3,0x000200fe,0x000001b4,0x00010038,0x00050036, + 0x00000006,0x00000067,0x00000000,0x00000064,0x000200f8,0x00000068,0x00050041,0x000001b2, + 0x000001b8,0x00000190,0x000001b7,0x0004003d,0x00000006,0x000001b9,0x000001b8,0x000200fe, + 0x000001b9,0x00010038,0x00050036,0x00000006,0x00000069,0x00000000,0x00000064,0x000200f8, + 0x0000006a,0x00050041,0x000001b2,0x000001bd,0x00000190,0x000001bc,0x0004003d,0x00000006, + 0x000001be,0x000001bd,0x000200fe,0x000001be,0x00010038,0x00050036,0x00000006,0x0000006b, + 0x00000000,0x00000064,0x000200f8,0x0000006c,0x00050041,0x000001b2,0x000001c2,0x00000190, + 0x000001c1,0x0004003d,0x00000006,0x000001c3,0x000001c2,0x000200fe,0x000001c3,0x00010038, + 0x00050036,0x0000000e,0x00000070,0x00000000,0x0000006e,0x00030037,0x0000006d,0x0000006f, + 0x000200f8,0x00000071,0x0004003d,0x000001c6,0x000001c9,0x000001c8,0x0004003d,0x00000055, + 0x000001ca,0x0000006f,0x0007005f,0x0000002f,0x000001cb,0x000001c9,0x000001ca,0x00000002, + 0x00000191,0x0008004f,0x0000000e,0x000001cc,0x000001cb,0x000001cb,0x00000000,0x00000001, + 0x00000002,0x000200fe,0x000001cc,0x00010038,0x00050036,0x0000002f,0x00000074,0x00000000, + 0x00000072,0x00030037,0x0000006d,0x00000073,0x000200f8,0x00000075,0x0004003d,0x000001c6, + 0x000001d0,0x000001cf,0x0004003d,0x00000055,0x000001d1,0x00000073,0x0007005f,0x0000002f, + 0x000001d2,0x000001d0,0x000001d1,0x00000002,0x00000191,0x000200fe,0x000001d2,0x00010038, + 0x00050036,0x00000002,0x00000079,0x00000000,0x00000076,0x00030037,0x0000006d,0x00000077, + 0x00030037,0x00000030,0x00000078,0x000200f8,0x0000007a,0x0004003d,0x000001d5,0x000001d8, + 0x000001d7,0x0004003d,0x00000055,0x000001d9,0x00000077,0x0004003d,0x0000002f,0x000001da, + 0x00000078,0x00040063,0x000001d8,0x000001d9,0x000001da,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x0000007e,0x00000000,0x0000007b,0x00030037,0x0000006d,0x0000007c,0x00030037, + 0x0000000f,0x0000007d,0x000200f8,0x0000007f,0x0004003d,0x000001db,0x000001de,0x000001dd, + 0x0004003d,0x00000055,0x000001df,0x0000007c,0x0004003d,0x0000000e,0x000001e0,0x0000007d, + 0x00050051,0x00000006,0x000001e1,0x000001e0,0x00000000,0x00050051,0x00000006,0x000001e2, + 0x000001e0,0x00000001,0x00050051,0x00000006,0x000001e3,0x000001e0,0x00000002,0x00070050, + 0x0000002f,0x000001e4,0x000001e1,0x000001e2,0x000001e3,0x0000014f,0x00040063,0x000001de, + 0x000001df,0x000001e4,0x000100fd,0x00010038,0x00050036,0x00000055,0x00000080,0x00000000, + 0x00000056,0x000200f8,0x00000081,0x0004003d,0x000001c6,0x000001e6,0x000001e5,0x00050067, + 0x00000055,0x000001e7,0x000001e6,0x00000191,0x000200fe,0x000001e7,0x00010038,0x00050036, + 0x00000006,0x00000084,0x00000000,0x00000082,0x00030037,0x0000001b,0x00000083,0x000200f8, + 0x00000085,0x0004003d,0x000001c6,0x000001ea,0x000001e5,0x0004003d,0x000001eb,0x000001ee, + 0x000001ed,0x00050056,0x000001ef,0x000001f0,0x000001ea,0x000001ee,0x0004003d,0x0000001a, + 0x000001f1,0x00000083,0x00070058,0x0000002f,0x000001f2,0x000001f0,0x000001f1,0x00000002, + 0x0000014e,0x00050051,0x00000006,0x000001f5,0x000001f2,0x00000000,0x000200fe,0x000001f5, + 0x00010038,0x00050036,0x00000006,0x00000087,0x00000000,0x00000082,0x00030037,0x0000001b, + 0x00000086,0x000200f8,0x00000088,0x0004003d,0x000001c6,0x000001f9,0x000001f8,0x0004003d, + 0x000001eb,0x000001fa,0x000001ed,0x00050056,0x000001ef,0x000001fb,0x000001f9,0x000001fa, + 0x0004003d,0x0000001a,0x000001fc,0x00000086,0x00070058,0x0000002f,0x000001fd,0x000001fb, + 0x000001fc,0x00000002,0x0000014e,0x00050051,0x00000006,0x000001fe,0x000001fd,0x00000000, + 0x000200fe,0x000001fe,0x00010038,0x00050036,0x00000006,0x0000008b,0x00000000,0x00000089, + 0x00030037,0x0000006d,0x0000008a,0x000200f8,0x0000008c,0x0004003d,0x00000201,0x00000204, + 0x00000203,0x0004003d,0x00000055,0x00000205,0x0000008a,0x00050062,0x0000002f,0x00000206, + 0x00000204,0x00000205,0x00050051,0x00000006,0x00000207,0x00000206,0x00000000,0x000200fe, + 0x00000207,0x00010038,0x00050036,0x00000002,0x00000090,0x00000000,0x0000008d,0x00030037, + 0x0000006d,0x0000008e,0x00030037,0x00000007,0x0000008f,0x000200f8,0x00000091,0x0004003d, + 0x00000201,0x0000020a,0x00000203,0x0004003d,0x00000055,0x0000020b,0x0000008e,0x0004003d, + 0x00000006,0x0000020c,0x0000008f,0x00070050,0x0000002f,0x0000020d,0x0000020c,0x0000014e, + 0x0000014e,0x0000014e,0x00040063,0x0000020a,0x0000020b,0x0000020d,0x000100fd,0x00010038, + 0x00050036,0x0000001a,0x00000094,0x00000000,0x00000092,0x00030037,0x0000006d,0x00000093, + 0x000200f8,0x00000095,0x0004003d,0x000001c6,0x0000020f,0x0000020e,0x0004003d,0x00000055, + 0x00000210,0x00000093,0x0007005f,0x0000002f,0x00000211,0x0000020f,0x00000210,0x00000002, + 0x00000191,0x0007004f,0x0000001a,0x00000212,0x00000211,0x00000211,0x00000000,0x00000001, + 0x000200fe,0x00000212,0x00010038,0x00050036,0x00000006,0x00000096,0x00000000,0x00000064, + 0x000200f8,0x00000097,0x0004003b,0x00000007,0x00000215,0x00000007,0x0004003d,0x000001c6, + 0x00000217,0x00000216,0x0007005f,0x0000002f,0x00000219,0x00000217,0x00000218,0x00000002, + 0x00000191,0x00050051,0x00000006,0x0000021a,0x00000219,0x00000000,0x0003003e,0x00000215, + 0x0000021a,0x0004003d,0x00000006,0x0000021b,0x00000215,0x000500b4,0x000000a7,0x0000021c, + 0x0000021b,0x0000014e,0x000300f7,0x0000021e,0x00000000,0x000400fa,0x0000021c,0x0000021d, + 0x0000021e,0x000200f8,0x0000021d,0x0003003e,0x00000215,0x0000014f,0x000200f9,0x0000021e, + 0x000200f8,0x0000021e,0x0004003d,0x00000006,0x0000021f,0x00000215,0x000200fe,0x0000021f, + 0x00010038,0x00050036,0x0000002f,0x0000009a,0x00000000,0x00000098,0x00030037,0x0000001b, + 0x00000099,0x000200f8,0x0000009b,0x0004003d,0x000001c6,0x00000223,0x00000222,0x0004003d, + 0x000001eb,0x00000224,0x000001ed,0x00050056,0x000001ef,0x00000225,0x00000223,0x00000224, + 0x0004003d,0x0000001a,0x00000226,0x00000099,0x00070058,0x0000002f,0x00000227,0x00000225, + 0x00000226,0x00000002,0x0000014e,0x000200fe,0x00000227,0x00010038,0x00050036,0x00000006, + 0x0000009d,0x00000000,0x00000082,0x00030037,0x0000001b,0x0000009c,0x000200f8,0x0000009e, + 0x0004003d,0x0000001a,0x0000022a,0x0000009c,0x00050085,0x0000001a,0x0000022e,0x0000022a, + 0x0000022d,0x0006000c,0x00000006,0x0000022f,0x00000001,0x00000042,0x0000022e,0x000200fe, + 0x0000022f,0x00010038,0x00050036,0x00000002,0x000000a5,0x00000000,0x000000a1,0x00030037, + 0x000000a0,0x000000a2,0x00030037,0x0000000e,0x000000a3,0x00030037,0x00000006,0x000000a4, + 0x000200f8,0x000000a6,0x0004003b,0x0000000f,0x00000234,0x00000007,0x00050041,0x0000000f, + 0x00000232,0x000000a2,0x0000019c,0x0003003e,0x00000232,0x000000a3,0x00050041,0x0000000f, + 0x00000233,0x000000a2,0x000001a1,0x0003003e,0x00000233,0x000000a3,0x0005008e,0x0000000e, + 0x00000235,0x000000a3,0x000000a4,0x0003003e,0x00000234,0x00000235,0x0004003d,0x0000000e, + 0x00000236,0x00000234,0x00050041,0x0000000f,0x00000237,0x000000a2,0x00000191,0x0003003e, + 0x00000237,0x00000236,0x0004003d,0x0000000e,0x00000239,0x00000234,0x00050085,0x0000000e, + 0x0000023a,0x000000a3,0x00000239,0x00050041,0x0000000f,0x0000023b,0x000000a2,0x00000238, + 0x0003003e,0x0000023b,0x0000023a,0x00050041,0x00000007,0x0000023c,0x000000a2,0x00000197, + 0x0003003e,0x0000023c,0x000000a4,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000ae, + 0x00000000,0x000000a9,0x00030037,0x000000a8,0x000000aa,0x00030037,0x000000a0,0x000000ab, + 0x00030037,0x0000000e,0x000000ac,0x00030037,0x00000006,0x000000ad,0x000200f8,0x000000af, + 0x0004003b,0x000000a0,0x00000240,0x00000007,0x0004003b,0x0000000f,0x00000245,0x00000007, + 0x0004003b,0x0000000f,0x00000248,0x00000007,0x0004003b,0x0000000f,0x0000024b,0x00000007, + 0x0004003b,0x0000000f,0x0000024e,0x00000007,0x0004003b,0x0000000f,0x00000251,0x00000007, + 0x0004003d,0x000000a7,0x0000023d,0x000000aa,0x000300f7,0x0000023f,0x00000000,0x000400fa, + 0x0000023d,0x0000023e,0x00000244,0x000200f8,0x0000023e,0x0004003d,0x0000009f,0x00000241, + 0x000000ab,0x0003003e,0x00000240,0x00000241,0x00070039,0x00000002,0x00000242,0x000000a5, + 0x00000240,0x000000ac,0x000000ad,0x0004003d,0x0000009f,0x00000243,0x00000240,0x0003003e, + 0x000000ab,0x00000243,0x000200f9,0x0000023f,0x000200f8,0x00000244,0x00050041,0x0000000f, + 0x00000246,0x000000ab,0x0000019c,0x0004003d,0x0000000e,0x00000247,0x00000246,0x0003003e, + 0x00000245,0x00000247,0x0003003e,0x00000248,0x000000ac,0x00060039,0x0000000e,0x00000249, + 0x0000002d,0x00000245,0x00000248,0x00050041,0x0000000f,0x0000024a,0x000000ab,0x0000019c, + 0x0003003e,0x0000024a,0x00000249,0x00050041,0x0000000f,0x0000024c,0x000000ab,0x000001a1, + 0x0004003d,0x0000000e,0x0000024d,0x0000024c,0x0003003e,0x0000024b,0x0000024d,0x0003003e, + 0x0000024e,0x000000ac,0x00060039,0x0000000e,0x0000024f,0x00000047,0x0000024b,0x0000024e, + 0x00050041,0x0000000f,0x00000250,0x000000ab,0x000001a1,0x0003003e,0x00000250,0x0000024f, + 0x0005008e,0x0000000e,0x00000252,0x000000ac,0x000000ad,0x0003003e,0x00000251,0x00000252, + 0x0004003d,0x0000000e,0x00000253,0x00000251,0x00050041,0x0000000f,0x00000254,0x000000ab, + 0x00000191,0x0004003d,0x0000000e,0x00000255,0x00000254,0x00050081,0x0000000e,0x00000256, + 0x00000255,0x00000253,0x00050041,0x0000000f,0x00000257,0x000000ab,0x00000191,0x0003003e, + 0x00000257,0x00000256,0x0004003d,0x0000000e,0x00000258,0x00000251,0x00050085,0x0000000e, + 0x00000259,0x000000ac,0x00000258,0x00050041,0x0000000f,0x0000025a,0x000000ab,0x00000238, + 0x0004003d,0x0000000e,0x0000025b,0x0000025a,0x00050081,0x0000000e,0x0000025c,0x0000025b, + 0x00000259,0x00050041,0x0000000f,0x0000025d,0x000000ab,0x00000238,0x0003003e,0x0000025d, + 0x0000025c,0x00050041,0x00000007,0x0000025e,0x000000ab,0x00000197,0x0004003d,0x00000006, + 0x0000025f,0x0000025e,0x00050081,0x00000006,0x00000260,0x0000025f,0x000000ad,0x00050041, + 0x00000007,0x00000261,0x000000ab,0x00000197,0x0003003e,0x00000261,0x00000260,0x000200f9, + 0x0000023f,0x000200f8,0x0000023f,0x000100fd,0x00010038,0x00050036,0x00000002,0x000000b2, + 0x00000000,0x000000b0,0x00030037,0x000000a0,0x000000b1,0x000200f8,0x000000b3,0x0004003b, + 0x00000007,0x00000267,0x00000007,0x0004003b,0x0000000f,0x0000027d,0x00000007,0x00050041, + 0x00000007,0x00000262,0x000000b1,0x00000197,0x0004003d,0x00000006,0x00000263,0x00000262, + 0x0006000c,0x00000006,0x00000264,0x00000001,0x00000004,0x00000263,0x000500ba,0x000000a7, + 0x00000266,0x00000264,0x00000265,0x000300f7,0x00000269,0x00000000,0x000400fa,0x00000266, + 0x00000268,0x0000026c,0x000200f8,0x00000268,0x00050041,0x00000007,0x0000026a,0x000000b1, + 0x00000197,0x0004003d,0x00000006,0x0000026b,0x0000026a,0x0003003e,0x00000267,0x0000026b, + 0x000200f9,0x00000269,0x000200f8,0x0000026c,0x0003003e,0x00000267,0x0000014f,0x000200f9, + 0x00000269,0x000200f8,0x00000269,0x0004003d,0x00000006,0x0000026d,0x00000267,0x00050041, + 0x00000007,0x0000026e,0x000000b1,0x00000197,0x0003003e,0x0000026e,0x0000026d,0x00050041, + 0x00000007,0x0000026f,0x000000b1,0x00000197,0x0004003d,0x00000006,0x00000270,0x0000026f, + 0x00050041,0x0000000f,0x00000271,0x000000b1,0x00000191,0x0004003d,0x0000000e,0x00000272, + 0x00000271,0x00060050,0x0000000e,0x00000273,0x00000270,0x00000270,0x00000270,0x00050088, + 0x0000000e,0x00000274,0x00000272,0x00000273,0x00050041,0x0000000f,0x00000275,0x000000b1, + 0x00000191,0x0003003e,0x00000275,0x00000274,0x00050041,0x00000007,0x00000276,0x000000b1, + 0x00000197,0x0004003d,0x00000006,0x00000277,0x00000276,0x00050041,0x0000000f,0x00000278, + 0x000000b1,0x00000238,0x0004003d,0x0000000e,0x00000279,0x00000278,0x00060050,0x0000000e, + 0x0000027a,0x00000277,0x00000277,0x00000277,0x00050088,0x0000000e,0x0000027b,0x00000279, + 0x0000027a,0x00050041,0x0000000f,0x0000027c,0x000000b1,0x00000238,0x0003003e,0x0000027c, + 0x0000027b,0x00050041,0x0000000f,0x0000027e,0x000000b1,0x00000238,0x0004003d,0x0000000e, + 0x0000027f,0x0000027e,0x00050041,0x0000000f,0x00000280,0x000000b1,0x00000191,0x0004003d, + 0x0000000e,0x00000281,0x00000280,0x00050041,0x0000000f,0x00000282,0x000000b1,0x00000191, + 0x0004003d,0x0000000e,0x00000283,0x00000282,0x00050085,0x0000000e,0x00000284,0x00000281, + 0x00000283,0x00050083,0x0000000e,0x00000285,0x0000027f,0x00000284,0x0006000c,0x0000000e, + 0x00000286,0x00000001,0x00000004,0x00000285,0x0006000c,0x0000000e,0x00000287,0x00000001, + 0x0000001f,0x00000286,0x0003003e,0x0000027d,0x00000287,0x0004003d,0x0000000e,0x00000288, + 0x0000027d,0x00050041,0x0000000f,0x00000289,0x000000b1,0x00000238,0x0003003e,0x00000289, + 0x00000288,0x000100fd,0x00010038,0x00050036,0x0000000e,0x000000b6,0x00000000,0x000000b4, + 0x00030037,0x0000000f,0x000000b5,0x000200f8,0x000000b7,0x0004003b,0x0000000f,0x0000028a, + 0x00000007,0x00050041,0x00000007,0x0000028b,0x000000b5,0x000001f4,0x0004003d,0x00000006, + 0x0000028c,0x0000028b,0x00050041,0x00000007,0x0000028e,0x000000b5,0x0000028d,0x0004003d, + 0x00000006,0x0000028f,0x0000028e,0x00050081,0x00000006,0x00000290,0x0000028c,0x0000028f, + 0x00050041,0x00000007,0x00000292,0x000000b5,0x00000291,0x0004003d,0x00000006,0x00000293, + 0x00000292,0x00050083,0x00000006,0x00000294,0x00000290,0x00000293,0x00050041,0x00000007, + 0x00000295,0x000000b5,0x000001f4,0x0004003d,0x00000006,0x00000296,0x00000295,0x00050041, + 0x00000007,0x00000297,0x000000b5,0x00000291,0x0004003d,0x00000006,0x00000298,0x00000297, + 0x00050081,0x00000006,0x00000299,0x00000296,0x00000298,0x00050041,0x00000007,0x0000029a, + 0x000000b5,0x000001f4,0x0004003d,0x00000006,0x0000029b,0x0000029a,0x00050041,0x00000007, + 0x0000029c,0x000000b5,0x0000028d,0x0004003d,0x00000006,0x0000029d,0x0000029c,0x00050083, + 0x00000006,0x0000029e,0x0000029b,0x0000029d,0x00050041,0x00000007,0x0000029f,0x000000b5, + 0x00000291,0x0004003d,0x00000006,0x000002a0,0x0000029f,0x00050083,0x00000006,0x000002a1, + 0x0000029e,0x000002a0,0x00060050,0x0000000e,0x000002a2,0x00000294,0x00000299,0x000002a1, + 0x0003003e,0x0000028a,0x000002a2,0x0004003d,0x0000000e,0x000002a3,0x0000028a,0x000200fe, + 0x000002a3,0x00010038,0x00050036,0x0000000e,0x000000b9,0x00000000,0x000000b4,0x00030037, + 0x0000000f,0x000000b8,0x000200f8,0x000000ba,0x0004003b,0x0000000f,0x000002a6,0x00000007, + 0x00050041,0x00000007,0x000002a8,0x000000b8,0x000001f4,0x0004003d,0x00000006,0x000002a9, + 0x000002a8,0x00050085,0x00000006,0x000002aa,0x000002a7,0x000002a9,0x00050041,0x00000007, + 0x000002ac,0x000000b8,0x0000028d,0x0004003d,0x00000006,0x000002ad,0x000002ac,0x00050085, + 0x00000006,0x000002ae,0x000002ab,0x000002ad,0x00050081,0x00000006,0x000002af,0x000002aa, + 0x000002ae,0x00050041,0x00000007,0x000002b0,0x000000b8,0x00000291,0x0004003d,0x00000006, + 0x000002b1,0x000002b0,0x00050085,0x00000006,0x000002b2,0x000002a7,0x000002b1,0x00050081, + 0x00000006,0x000002b3,0x000002af,0x000002b2,0x00050041,0x00000007,0x000002b4,0x000000b8, + 0x000001f4,0x0004003d,0x00000006,0x000002b5,0x000002b4,0x00050085,0x00000006,0x000002b6, + 0x000002ab,0x000002b5,0x00050041,0x00000007,0x000002b7,0x000000b8,0x00000291,0x0004003d, + 0x00000006,0x000002b8,0x000002b7,0x00050085,0x00000006,0x000002b9,0x000002ab,0x000002b8, + 0x00050083,0x00000006,0x000002ba,0x000002b6,0x000002b9,0x00050041,0x00000007,0x000002bc, + 0x000000b8,0x000001f4,0x0004003d,0x00000006,0x000002bd,0x000002bc,0x00050085,0x00000006, + 0x000002be,0x000002bb,0x000002bd,0x00050041,0x00000007,0x000002bf,0x000000b8,0x0000028d, + 0x0004003d,0x00000006,0x000002c0,0x000002bf,0x00050085,0x00000006,0x000002c1,0x000002ab, + 0x000002c0,0x00050081,0x00000006,0x000002c2,0x000002be,0x000002c1,0x00050041,0x00000007, + 0x000002c3,0x000000b8,0x00000291,0x0004003d,0x00000006,0x000002c4,0x000002c3,0x00050085, + 0x00000006,0x000002c5,0x000002a7,0x000002c4,0x00050083,0x00000006,0x000002c6,0x000002c2, + 0x000002c5,0x00060050,0x0000000e,0x000002c7,0x000002b3,0x000002ba,0x000002c6,0x0003003e, + 0x000002a6,0x000002c7,0x0004003d,0x0000000e,0x000002c8,0x000002a6,0x000200fe,0x000002c8, + 0x00010038,0x00050036,0x000000a7,0x000000bd,0x00000000,0x000000bb,0x00030037,0x0000001b, + 0x000000bc,0x000200f8,0x000000be,0x00050041,0x00000007,0x000002cb,0x000000bc,0x000001f4, + 0x0004003d,0x00000006,0x000002cc,0x000002cb,0x000500be,0x000000a7,0x000002cd,0x000002cc, + 0x0000014e,0x000300f7,0x000002cf,0x00000000,0x000400fa,0x000002cd,0x000002ce,0x000002cf, + 0x000200f8,0x000002ce,0x00050041,0x00000007,0x000002d0,0x000000bc,0x000001f4,0x0004003d, + 0x00000006,0x000002d1,0x000002d0,0x000500bc,0x000000a7,0x000002d2,0x000002d1,0x0000014f, + 0x000200f9,0x000002cf,0x000200f8,0x000002cf,0x000700f5,0x000000a7,0x000002d3,0x000002cd, + 0x000000be,0x000002d2,0x000002ce,0x000300f7,0x000002d5,0x00000000,0x000400fa,0x000002d3, + 0x000002d4,0x000002d5,0x000200f8,0x000002d4,0x00050041,0x00000007,0x000002d6,0x000000bc, + 0x0000028d,0x0004003d,0x00000006,0x000002d7,0x000002d6,0x000500be,0x000000a7,0x000002d8, + 0x000002d7,0x0000014e,0x000300f7,0x000002da,0x00000000,0x000400fa,0x000002d8,0x000002d9, + 0x000002da,0x000200f8,0x000002d9,0x00050041,0x00000007,0x000002db,0x000000bc,0x0000028d, + 0x0004003d,0x00000006,0x000002dc,0x000002db,0x000500bc,0x000000a7,0x000002dd,0x000002dc, + 0x0000014f,0x000200f9,0x000002da,0x000200f8,0x000002da,0x000700f5,0x000000a7,0x000002de, + 0x000002d8,0x000002d4,0x000002dd,0x000002d9,0x000200f9,0x000002d5,0x000200f8,0x000002d5, + 0x000700f5,0x000000a7,0x000002df,0x000002d3,0x000002cf,0x000002de,0x000002da,0x000200fe, + 0x000002df,0x00010038,0x00050036,0x00000055,0x000000c3,0x00000000,0x000000bf,0x00030037, + 0x0000006d,0x000000c0,0x00030037,0x0000006d,0x000000c1,0x00030037,0x0000006d,0x000000c2, + 0x000200f8,0x000000c4,0x0004003b,0x0000006d,0x000002e2,0x00000007,0x0004003b,0x00000037, + 0x000002e9,0x00000007,0x0004003b,0x00000037,0x000002ec,0x00000007,0x0004003b,0x00000037, + 0x000002ee,0x00000007,0x0004003b,0x00000037,0x000002ef,0x00000007,0x0004003b,0x00000037, + 0x000002f5,0x00000007,0x0004003b,0x00000037,0x000002f8,0x00000007,0x0004003b,0x00000037, + 0x000002fa,0x00000007,0x0004003b,0x00000037,0x000002fb,0x00000007,0x0004003d,0x00000055, + 0x000002e3,0x000000c0,0x0004003d,0x00000055,0x000002e4,0x000000c1,0x00050080,0x00000055, + 0x000002e5,0x000002e3,0x000002e4,0x0003003e,0x000002e2,0x000002e5,0x00050041,0x00000037, + 0x000002e6,0x000000c2,0x000001f4,0x0004003d,0x00000036,0x000002e7,0x000002e6,0x00050082, + 0x00000036,0x000002e8,0x000002e7,0x00000238,0x00050041,0x00000037,0x000002ea,0x000002e2, + 0x000001f4,0x0004003d,0x00000036,0x000002eb,0x000002ea,0x0003003e,0x000002e9,0x000002eb, + 0x0003003e,0x000002ec,0x000002e8,0x00060039,0x00000036,0x000002ed,0x0000003b,0x000002e9, + 0x000002ec,0x0003003e,0x000002ee,0x00000191,0x0003003e,0x000002ef,0x000002ed,0x00060039, + 0x00000036,0x000002f0,0x0000004f,0x000002ee,0x000002ef,0x00050041,0x00000037,0x000002f1, + 0x000002e2,0x000001f4,0x0003003e,0x000002f1,0x000002f0,0x00050041,0x00000037,0x000002f2, + 0x000000c2,0x0000028d,0x0004003d,0x00000036,0x000002f3,0x000002f2,0x00050082,0x00000036, + 0x000002f4,0x000002f3,0x00000238,0x00050041,0x00000037,0x000002f6,0x000002e2,0x0000028d, + 0x0004003d,0x00000036,0x000002f7,0x000002f6,0x0003003e,0x000002f5,0x000002f7,0x0003003e, + 0x000002f8,0x000002f4,0x00060039,0x00000036,0x000002f9,0x0000003b,0x000002f5,0x000002f8, + 0x0003003e,0x000002fa,0x00000191,0x0003003e,0x000002fb,0x000002f9,0x00060039,0x00000036, + 0x000002fc,0x0000004f,0x000002fa,0x000002fb,0x00050041,0x00000037,0x000002fd,0x000002e2, + 0x0000028d,0x0003003e,0x000002fd,0x000002fc,0x0004003d,0x00000055,0x000002fe,0x000002e2, + 0x000200fe,0x000002fe,0x00010038,0x00050036,0x0000001a,0x000000c9,0x00000000,0x000000c5, + 0x00030037,0x0000001b,0x000000c6,0x00030037,0x0000006d,0x000000c7,0x00030037,0x0000006d, + 0x000000c8,0x000200f8,0x000000ca,0x0004003b,0x0000001b,0x00000301,0x00000007,0x0004003b, + 0x0000001b,0x00000306,0x00000007,0x0004003b,0x0000001b,0x0000030b,0x00000007,0x0004003b, + 0x0000001b,0x0000030d,0x00000007,0x0004003b,0x0000001b,0x0000030f,0x00000007,0x0004003b, + 0x0000001b,0x00000310,0x00000007,0x0004003b,0x0000001b,0x00000312,0x00000007,0x0004003d, + 0x0000001a,0x00000302,0x000000c6,0x0004003d,0x00000055,0x00000303,0x000000c7,0x0004006f, + 0x0000001a,0x00000304,0x00000303,0x00050085,0x0000001a,0x00000305,0x00000302,0x00000304, + 0x0003003e,0x00000301,0x00000305,0x0004003d,0x00000055,0x00000308,0x000000c7,0x0004006f, + 0x0000001a,0x00000309,0x00000308,0x00050083,0x0000001a,0x0000030a,0x00000309,0x00000307, + 0x0004003d,0x0000001a,0x0000030c,0x00000301,0x0003003e,0x0000030b,0x0000030c,0x0003003e, + 0x0000030d,0x0000030a,0x00060039,0x0000001a,0x0000030e,0x00000028,0x0000030b,0x0000030d, + 0x0003003e,0x0000030f,0x00000307,0x0003003e,0x00000310,0x0000030e,0x00060039,0x0000001a, + 0x00000311,0x00000043,0x0000030f,0x00000310,0x0003003e,0x00000306,0x00000311,0x0004003d, + 0x0000001a,0x00000313,0x00000306,0x0004003d,0x00000055,0x00000314,0x000000c8,0x0004006f, + 0x0000001a,0x00000315,0x00000314,0x00050088,0x0000001a,0x00000316,0x00000313,0x00000315, + 0x0003003e,0x00000312,0x00000316,0x0004003d,0x0000001a,0x00000317,0x00000312,0x000200fe, + 0x00000317,0x00010038,0x00050036,0x000000a7,0x000000ce,0x00000000,0x000000cb,0x00030037, + 0x0000006d,0x000000cc,0x00030037,0x0000006d,0x000000cd,0x000200f8,0x000000cf,0x0004003d, + 0x00000055,0x0000031a,0x000000cc,0x0004007c,0x0000031b,0x0000031c,0x0000031a,0x0004003d, + 0x00000055,0x0000031d,0x000000cd,0x0004007c,0x0000031b,0x0000031e,0x0000031d,0x000500b0, + 0x0000031f,0x00000320,0x0000031c,0x0000031e,0x0004009b,0x000000a7,0x00000321,0x00000320, + 0x000200fe,0x00000321,0x00010038,0x00050036,0x00000006,0x000000d1,0x00000000,0x00000016, + 0x00030037,0x00000007,0x000000d0,0x000200f8,0x000000d2,0x0004003b,0x00000007,0x00000328, + 0x00000007,0x0004003d,0x00000006,0x00000324,0x000000d0,0x0006000c,0x00000006,0x00000325, + 0x00000001,0x00000004,0x00000324,0x000500b8,0x000000a7,0x00000327,0x00000325,0x00000326, + 0x000300f7,0x0000032a,0x00000000,0x000400fa,0x00000327,0x00000329,0x0000032b,0x000200f8, + 0x00000329,0x0003003e,0x00000328,0x0000014f,0x000200f9,0x0000032a,0x000200f8,0x0000032b, + 0x0004003d,0x00000006,0x0000032d,0x000000d0,0x00050085,0x00000006,0x0000032e,0x0000032c, + 0x0000032d,0x0006000c,0x00000006,0x0000032f,0x00000001,0x0000000d,0x0000032e,0x0004003d, + 0x00000006,0x00000330,0x000000d0,0x00050085,0x00000006,0x00000331,0x0000032c,0x00000330, + 0x00050088,0x00000006,0x00000332,0x0000032f,0x00000331,0x0004003d,0x00000006,0x00000334, + 0x000000d0,0x00050085,0x00000006,0x00000335,0x00000333,0x00000334,0x0006000c,0x00000006, + 0x00000336,0x00000001,0x0000000d,0x00000335,0x0004003d,0x00000006,0x00000337,0x000000d0, + 0x00050085,0x00000006,0x00000338,0x00000333,0x00000337,0x00050088,0x00000006,0x00000339, + 0x00000336,0x00000338,0x00050085,0x00000006,0x0000033a,0x00000332,0x00000339,0x0003003e, + 0x00000328,0x0000033a,0x000200f9,0x0000032a,0x000200f8,0x0000032a,0x0004003d,0x00000006, + 0x0000033b,0x00000328,0x000200fe,0x0000033b,0x00010038,0x00050036,0x00000006,0x000000d4, + 0x00000000,0x00000016,0x00030037,0x00000007,0x000000d3,0x000200f8,0x000000d5,0x0004003b, + 0x00000007,0x00000341,0x00000007,0x0004003b,0x00000007,0x00000342,0x00000007,0x0004003b, + 0x00000007,0x00000344,0x00000007,0x0004003d,0x00000006,0x0000033e,0x000000d3,0x0006000c, + 0x00000006,0x0000033f,0x00000001,0x00000004,0x0000033e,0x0003003e,0x00000341,0x0000033f, + 0x0003003e,0x00000342,0x00000340,0x00060039,0x00000006,0x00000343,0x00000023,0x00000341, + 0x00000342,0x0003003e,0x000000d3,0x00000343,0x0004003d,0x00000006,0x00000345,0x000000d3, + 0x0003003e,0x00000344,0x00000345,0x00050039,0x00000006,0x00000346,0x000000d1,0x00000344, + 0x000200fe,0x00000346,0x00010038,0x00050036,0x00000006,0x000000d7,0x00000000,0x00000016, + 0x00030037,0x00000007,0x000000d6,0x000200f8,0x000000d8,0x0004003b,0x00000007,0x00000349, + 0x00000007,0x0004003b,0x00000007,0x0000034e,0x00000007,0x0004003d,0x00000006,0x0000034b, + 0x000000d6,0x00050085,0x00000006,0x0000034c,0x0000034a,0x0000034b,0x00050083,0x00000006, + 0x0000034d,0x0000034c,0x0000014f,0x0003003e,0x00000349,0x0000034d,0x0004003d,0x00000006, + 0x0000034f,0x000000d6,0x00050085,0x00000006,0x00000350,0x000002a7,0x0000034f,0x00050083, + 0x00000006,0x00000351,0x00000350,0x0000014f,0x0003003e,0x0000034e,0x00000351,0x0004003d, + 0x00000006,0x00000353,0x00000349,0x00050085,0x00000006,0x00000354,0x00000352,0x00000353, + 0x0004003d,0x00000006,0x00000355,0x00000349,0x00050085,0x00000006,0x00000356,0x00000354, + 0x00000355,0x00050083,0x00000006,0x00000358,0x00000356,0x00000357,0x0004003d,0x00000006, + 0x00000359,0x0000034e,0x0004003d,0x00000006,0x0000035a,0x0000034e,0x00050085,0x00000006, + 0x0000035b,0x00000359,0x0000035a,0x00050085,0x00000006,0x0000035c,0x00000358,0x0000035b, + 0x000200fe,0x0000035c,0x00010038,0x00050036,0x00000006,0x000000da,0x00000000,0x00000016, + 0x00030037,0x00000007,0x000000d9,0x000200f8,0x000000db,0x0004003b,0x00000007,0x00000360, + 0x00000007,0x0004003b,0x00000007,0x00000362,0x00000007,0x0004003b,0x00000007,0x00000364, + 0x00000007,0x0004003d,0x00000006,0x00000361,0x000000d9,0x0003003e,0x00000360,0x00000361, + 0x0003003e,0x00000362,0x0000035f,0x00060039,0x00000006,0x00000363,0x00000023,0x00000360, + 0x00000362,0x0003003e,0x000000d9,0x00000363,0x0004003d,0x00000006,0x00000365,0x000000d9, + 0x0003003e,0x00000364,0x00000365,0x00050039,0x00000006,0x00000366,0x000000d7,0x00000364, + 0x000200fe,0x00000366,0x00010038,0x00050036,0x0000002f,0x000000e2,0x00000000,0x000000dc, + 0x00030037,0x00000030,0x000000dd,0x00030037,0x00000030,0x000000de,0x00030037,0x00000030, + 0x000000df,0x00030037,0x00000030,0x000000e0,0x00030037,0x00000007,0x000000e1,0x000200f8, + 0x000000e3,0x0004003b,0x00000007,0x00000369,0x00000007,0x0004003b,0x00000007,0x0000036d, + 0x00000007,0x0004003b,0x00000007,0x0000036f,0x00000007,0x0004003b,0x00000007,0x00000373, + 0x00000007,0x0004003b,0x00000007,0x00000375,0x00000007,0x0004003b,0x00000007,0x00000378, + 0x00000007,0x0004003b,0x00000007,0x0000037a,0x00000007,0x0004003b,0x00000007,0x0000037d, + 0x00000007,0x0004003d,0x00000006,0x0000036b,0x000000e1,0x00050083,0x00000006,0x0000036c, + 0x0000036a,0x0000036b,0x0003003e,0x0000036d,0x0000036c,0x00050039,0x00000006,0x0000036e, + 0x000000d4,0x0000036d,0x0003003e,0x00000369,0x0000036e,0x0004003d,0x00000006,0x00000371, + 0x000000e1,0x00050083,0x00000006,0x00000372,0x00000370,0x00000371,0x0003003e,0x00000373, + 0x00000372,0x00050039,0x00000006,0x00000374,0x000000d4,0x00000373,0x0003003e,0x0000036f, + 0x00000374,0x0004003d,0x00000006,0x00000376,0x000000e1,0x00050083,0x00000006,0x00000377, + 0x0000014f,0x00000376,0x0003003e,0x00000378,0x00000377,0x00050039,0x00000006,0x00000379, + 0x000000d4,0x00000378,0x0003003e,0x00000375,0x00000379,0x0004003d,0x00000006,0x0000037b, + 0x000000e1,0x00050083,0x00000006,0x0000037c,0x00000340,0x0000037b,0x0003003e,0x0000037d, + 0x0000037c,0x00050039,0x00000006,0x0000037e,0x000000d4,0x0000037d,0x0003003e,0x0000037a, + 0x0000037e,0x0004003d,0x00000006,0x0000037f,0x00000369,0x0004003d,0x0000002f,0x00000380, + 0x000000dd,0x0005008e,0x0000002f,0x00000381,0x00000380,0x0000037f,0x0004003d,0x00000006, + 0x00000382,0x0000036f,0x0004003d,0x0000002f,0x00000383,0x000000de,0x0005008e,0x0000002f, + 0x00000384,0x00000383,0x00000382,0x00050081,0x0000002f,0x00000385,0x00000381,0x00000384, + 0x0004003d,0x00000006,0x00000386,0x00000375,0x0004003d,0x0000002f,0x00000387,0x000000df, + 0x0005008e,0x0000002f,0x00000388,0x00000387,0x00000386,0x00050081,0x0000002f,0x00000389, + 0x00000385,0x00000388,0x0004003d,0x00000006,0x0000038a,0x0000037a,0x0004003d,0x0000002f, + 0x0000038b,0x000000e0,0x0005008e,0x0000002f,0x0000038c,0x0000038b,0x0000038a,0x00050081, + 0x0000002f,0x0000038d,0x00000389,0x0000038c,0x0004003d,0x00000006,0x0000038e,0x00000369, + 0x0004003d,0x00000006,0x0000038f,0x0000036f,0x00050081,0x00000006,0x00000390,0x0000038e, + 0x0000038f,0x0004003d,0x00000006,0x00000391,0x00000375,0x00050081,0x00000006,0x00000392, + 0x00000390,0x00000391,0x0004003d,0x00000006,0x00000393,0x0000037a,0x00050081,0x00000006, + 0x00000394,0x00000392,0x00000393,0x00070050,0x0000002f,0x00000395,0x00000394,0x00000394, + 0x00000394,0x00000394,0x00050088,0x0000002f,0x00000396,0x0000038d,0x00000395,0x000200fe, + 0x00000396,0x00010038,0x00050036,0x0000002f,0x000000e9,0x00000000,0x000000e6,0x00030037, + 0x000000e5,0x000000e7,0x00030037,0x0000001b,0x000000e8,0x000200f8,0x000000ea,0x0004003b, + 0x00000030,0x00000399,0x00000007,0x0004003b,0x00000030,0x0000039a,0x00000007,0x0004003b, + 0x00000030,0x0000039d,0x00000007,0x0004003b,0x00000030,0x000003a0,0x00000007,0x0004003b, + 0x00000030,0x000003a3,0x00000007,0x0004003b,0x00000007,0x000003a6,0x00000007,0x0004003b, + 0x00000030,0x000003aa,0x00000007,0x0004003b,0x00000030,0x000003ad,0x00000007,0x0004003b, + 0x00000030,0x000003b0,0x00000007,0x0004003b,0x00000030,0x000003b3,0x00000007,0x0004003b, + 0x00000030,0x000003b6,0x00000007,0x0004003b,0x00000007,0x000003b9,0x00000007,0x0004003b, + 0x00000030,0x000003bd,0x00000007,0x0004003b,0x00000030,0x000003c1,0x00000007,0x0004003b, + 0x00000030,0x000003c4,0x00000007,0x0004003b,0x00000030,0x000003c7,0x00000007,0x0004003b, + 0x00000030,0x000003ca,0x00000007,0x0004003b,0x00000007,0x000003cd,0x00000007,0x0004003b, + 0x00000030,0x000003d1,0x00000007,0x0004003b,0x00000030,0x000003d4,0x00000007,0x0004003b, + 0x00000030,0x000003d7,0x00000007,0x0004003b,0x00000030,0x000003da,0x00000007,0x0004003b, + 0x00000030,0x000003dd,0x00000007,0x0004003b,0x00000007,0x000003e0,0x00000007,0x0004003b, + 0x00000030,0x000003e4,0x00000007,0x0004003b,0x00000030,0x000003e5,0x00000007,0x0004003b, + 0x00000030,0x000003e7,0x00000007,0x0004003b,0x00000030,0x000003e9,0x00000007,0x0004003b, + 0x00000030,0x000003eb,0x00000007,0x0004003b,0x00000007,0x000003ed,0x00000007,0x0004003b, + 0x000003f3,0x000003f4,0x00000007,0x0004003b,0x00000030,0x000003fe,0x00000007,0x0004003b, + 0x00000030,0x00000401,0x00000007,0x0004003b,0x00000037,0x00000404,0x00000007,0x0004003b, + 0x00000030,0x0000040d,0x00000007,0x0004003b,0x00000030,0x0000040f,0x00000007,0x0004003b, + 0x00000030,0x00000414,0x00000007,0x0004003b,0x00000030,0x00000416,0x00000007,0x00050041, + 0x00000030,0x0000039b,0x000000e7,0x00000191,0x0004003d,0x0000002f,0x0000039c,0x0000039b, + 0x0003003e,0x0000039a,0x0000039c,0x00050041,0x00000030,0x0000039e,0x000000e7,0x00000238, + 0x0004003d,0x0000002f,0x0000039f,0x0000039e,0x0003003e,0x0000039d,0x0000039f,0x00050041, + 0x00000030,0x000003a1,0x000000e7,0x0000019c,0x0004003d,0x0000002f,0x000003a2,0x000003a1, + 0x0003003e,0x000003a0,0x000003a2,0x00050041,0x00000030,0x000003a4,0x000000e7,0x000001a1, + 0x0004003d,0x0000002f,0x000003a5,0x000003a4,0x0003003e,0x000003a3,0x000003a5,0x00050041, + 0x00000007,0x000003a7,0x000000e8,0x000001f4,0x0004003d,0x00000006,0x000003a8,0x000003a7, + 0x0003003e,0x000003a6,0x000003a8,0x00090039,0x0000002f,0x000003a9,0x000000e2,0x0000039a, + 0x0000039d,0x000003a0,0x000003a3,0x000003a6,0x0003003e,0x00000399,0x000003a9,0x00050041, + 0x00000030,0x000003ae,0x000000e7,0x00000197,0x0004003d,0x0000002f,0x000003af,0x000003ae, + 0x0003003e,0x000003ad,0x000003af,0x00050041,0x00000030,0x000003b1,0x000000e7,0x000003ab, + 0x0004003d,0x0000002f,0x000003b2,0x000003b1,0x0003003e,0x000003b0,0x000003b2,0x00050041, + 0x00000030,0x000003b4,0x000000e7,0x000003ac,0x0004003d,0x0000002f,0x000003b5,0x000003b4, + 0x0003003e,0x000003b3,0x000003b5,0x00050041,0x00000030,0x000003b7,0x000000e7,0x000001a6, + 0x0004003d,0x0000002f,0x000003b8,0x000003b7,0x0003003e,0x000003b6,0x000003b8,0x00050041, + 0x00000007,0x000003ba,0x000000e8,0x000001f4,0x0004003d,0x00000006,0x000003bb,0x000003ba, + 0x0003003e,0x000003b9,0x000003bb,0x00090039,0x0000002f,0x000003bc,0x000000e2,0x000003ad, + 0x000003b0,0x000003b3,0x000003b6,0x000003b9,0x0003003e,0x000003aa,0x000003bc,0x00050041, + 0x00000030,0x000003c2,0x000000e7,0x000003be,0x0004003d,0x0000002f,0x000003c3,0x000003c2, + 0x0003003e,0x000003c1,0x000003c3,0x00050041,0x00000030,0x000003c5,0x000000e7,0x000003bf, + 0x0004003d,0x0000002f,0x000003c6,0x000003c5,0x0003003e,0x000003c4,0x000003c6,0x00050041, + 0x00000030,0x000003c8,0x000000e7,0x000001ac,0x0004003d,0x0000002f,0x000003c9,0x000003c8, + 0x0003003e,0x000003c7,0x000003c9,0x00050041,0x00000030,0x000003cb,0x000000e7,0x000003c0, + 0x0004003d,0x0000002f,0x000003cc,0x000003cb,0x0003003e,0x000003ca,0x000003cc,0x00050041, + 0x00000007,0x000003ce,0x000000e8,0x000001f4,0x0004003d,0x00000006,0x000003cf,0x000003ce, + 0x0003003e,0x000003cd,0x000003cf,0x00090039,0x0000002f,0x000003d0,0x000000e2,0x000003c1, + 0x000003c4,0x000003c7,0x000003ca,0x000003cd,0x0003003e,0x000003bd,0x000003d0,0x00050041, + 0x00000030,0x000003d5,0x000000e7,0x000003d2,0x0004003d,0x0000002f,0x000003d6,0x000003d5, + 0x0003003e,0x000003d4,0x000003d6,0x00050041,0x00000030,0x000003d8,0x000000e7,0x000001b1, + 0x0004003d,0x0000002f,0x000003d9,0x000003d8,0x0003003e,0x000003d7,0x000003d9,0x00050041, + 0x00000030,0x000003db,0x000000e7,0x000003d3,0x0004003d,0x0000002f,0x000003dc,0x000003db, + 0x0003003e,0x000003da,0x000003dc,0x00050041,0x00000030,0x000003de,0x000000e7,0x000001b7, + 0x0004003d,0x0000002f,0x000003df,0x000003de,0x0003003e,0x000003dd,0x000003df,0x00050041, + 0x00000007,0x000003e1,0x000000e8,0x000001f4,0x0004003d,0x00000006,0x000003e2,0x000003e1, + 0x0003003e,0x000003e0,0x000003e2,0x00090039,0x0000002f,0x000003e3,0x000000e2,0x000003d4, + 0x000003d7,0x000003da,0x000003dd,0x000003e0,0x0003003e,0x000003d1,0x000003e3,0x0004003d, + 0x0000002f,0x000003e6,0x00000399,0x0003003e,0x000003e5,0x000003e6,0x0004003d,0x0000002f, + 0x000003e8,0x000003aa,0x0003003e,0x000003e7,0x000003e8,0x0004003d,0x0000002f,0x000003ea, + 0x000003bd,0x0003003e,0x000003e9,0x000003ea,0x0004003d,0x0000002f,0x000003ec,0x000003d1, + 0x0003003e,0x000003eb,0x000003ec,0x00050041,0x00000007,0x000003ee,0x000000e8,0x0000028d, + 0x0004003d,0x00000006,0x000003ef,0x000003ee,0x0003003e,0x000003ed,0x000003ef,0x00090039, + 0x0000002f,0x000003f0,0x000000e2,0x000003e5,0x000003e7,0x000003e9,0x000003eb,0x000003ed, + 0x0003003e,0x000003e4,0x000003f0,0x00050041,0x00000030,0x000003f5,0x000000e7,0x000003ab, + 0x0004003d,0x0000002f,0x000003f6,0x000003f5,0x00050041,0x00000030,0x000003f7,0x000000e7, + 0x000003ac,0x0004003d,0x0000002f,0x000003f8,0x000003f7,0x00050041,0x00000030,0x000003f9, + 0x000000e7,0x000003bf,0x0004003d,0x0000002f,0x000003fa,0x000003f9,0x00050041,0x00000030, + 0x000003fb,0x000000e7,0x000001ac,0x0004003d,0x0000002f,0x000003fc,0x000003fb,0x00070050, + 0x000003f2,0x000003fd,0x000003f6,0x000003f8,0x000003fa,0x000003fc,0x0003003e,0x000003f4, + 0x000003fd,0x00050041,0x00000030,0x000003ff,0x000003f4,0x00000191,0x0004003d,0x0000002f, + 0x00000400,0x000003ff,0x0003003e,0x000003fe,0x00000400,0x00050041,0x00000030,0x00000402, + 0x000003f4,0x00000191,0x0004003d,0x0000002f,0x00000403,0x00000402,0x0003003e,0x00000401, + 0x00000403,0x0003003e,0x00000404,0x00000238,0x000200f9,0x00000405,0x000200f8,0x00000405, + 0x000400f6,0x00000407,0x00000408,0x00000000,0x000200f9,0x00000409,0x000200f8,0x00000409, + 0x0004003d,0x00000036,0x0000040a,0x00000404,0x000500b1,0x000000a7,0x0000040b,0x0000040a, + 0x00000197,0x000400fa,0x0000040b,0x00000406,0x00000407,0x000200f8,0x00000406,0x0004003d, + 0x00000036,0x0000040c,0x00000404,0x0004003d,0x0000002f,0x0000040e,0x000003fe,0x0003003e, + 0x0000040d,0x0000040e,0x00050041,0x00000030,0x00000410,0x000003f4,0x0000040c,0x0004003d, + 0x0000002f,0x00000411,0x00000410,0x0003003e,0x0000040f,0x00000411,0x00060039,0x0000002f, + 0x00000412,0x00000034,0x0000040d,0x0000040f,0x0003003e,0x000003fe,0x00000412,0x0004003d, + 0x00000036,0x00000413,0x00000404,0x0004003d,0x0000002f,0x00000415,0x00000401,0x0003003e, + 0x00000414,0x00000415,0x00050041,0x00000030,0x00000417,0x000003f4,0x00000413,0x0004003d, + 0x0000002f,0x00000418,0x00000417,0x0003003e,0x00000416,0x00000418,0x00060039,0x0000002f, + 0x00000419,0x0000004b,0x00000414,0x00000416,0x0003003e,0x00000401,0x00000419,0x000200f9, + 0x00000408,0x000200f8,0x00000408,0x0004003d,0x00000036,0x0000041a,0x00000404,0x00050080, + 0x00000036,0x0000041b,0x0000041a,0x00000238,0x0003003e,0x00000404,0x0000041b,0x000200f9, + 0x00000405,0x000200f8,0x00000407,0x0004003d,0x0000002f,0x0000041c,0x000003e4,0x0004003d, + 0x0000002f,0x0000041d,0x000003fe,0x0004003d,0x0000002f,0x0000041e,0x00000401,0x0008000c, + 0x0000002f,0x0000041f,0x00000001,0x0000002b,0x0000041c,0x0000041d,0x0000041e,0x0003003e, + 0x000003e4,0x0000041f,0x0004003d,0x0000002f,0x00000420,0x000003e4,0x000200fe,0x00000420, + 0x00010038,0x00050036,0x00000055,0x000000ee,0x00000000,0x000000bf,0x00030037,0x0000006d, + 0x000000eb,0x00030037,0x0000006d,0x000000ec,0x00030037,0x0000006d,0x000000ed,0x000200f8, + 0x000000ef,0x0004003b,0x0000006d,0x00000423,0x00000007,0x0004003b,0x00000037,0x0000042a, + 0x00000007,0x0004003b,0x00000037,0x0000042d,0x00000007,0x0004003b,0x00000037,0x0000042f, + 0x00000007,0x0004003b,0x00000037,0x00000430,0x00000007,0x0004003b,0x00000037,0x00000436, + 0x00000007,0x0004003b,0x00000037,0x00000439,0x00000007,0x0004003b,0x00000037,0x0000043b, + 0x00000007,0x0004003b,0x00000037,0x0000043c,0x00000007,0x0004003d,0x00000055,0x00000424, + 0x000000eb,0x0004003d,0x00000055,0x00000425,0x000000ec,0x00050080,0x00000055,0x00000426, + 0x00000424,0x00000425,0x0003003e,0x00000423,0x00000426,0x00050041,0x00000037,0x00000427, + 0x000000ed,0x000001f4,0x0004003d,0x00000036,0x00000428,0x00000427,0x00050082,0x00000036, + 0x00000429,0x00000428,0x0000019c,0x00050041,0x00000037,0x0000042b,0x00000423,0x000001f4, + 0x0004003d,0x00000036,0x0000042c,0x0000042b,0x0003003e,0x0000042a,0x0000042c,0x0003003e, + 0x0000042d,0x00000429,0x00060039,0x00000036,0x0000042e,0x0000003b,0x0000042a,0x0000042d, + 0x0003003e,0x0000042f,0x00000238,0x0003003e,0x00000430,0x0000042e,0x00060039,0x00000036, + 0x00000431,0x0000004f,0x0000042f,0x00000430,0x00050041,0x00000037,0x00000432,0x00000423, + 0x000001f4,0x0003003e,0x00000432,0x00000431,0x00050041,0x00000037,0x00000433,0x000000ed, + 0x0000028d,0x0004003d,0x00000036,0x00000434,0x00000433,0x00050082,0x00000036,0x00000435, + 0x00000434,0x0000019c,0x00050041,0x00000037,0x00000437,0x00000423,0x0000028d,0x0004003d, + 0x00000036,0x00000438,0x00000437,0x0003003e,0x00000436,0x00000438,0x0003003e,0x00000439, + 0x00000435,0x00060039,0x00000036,0x0000043a,0x0000003b,0x00000436,0x00000439,0x0003003e, + 0x0000043b,0x00000238,0x0003003e,0x0000043c,0x0000043a,0x00060039,0x00000036,0x0000043d, + 0x0000004f,0x0000043b,0x0000043c,0x00050041,0x00000037,0x0000043e,0x00000423,0x0000028d, + 0x0003003e,0x0000043e,0x0000043d,0x0004003d,0x00000055,0x0000043f,0x00000423,0x000200fe, + 0x0000043f,0x00010038,0x00050036,0x00000002,0x000000f3,0x00000000,0x000000f0,0x00030037, + 0x000000a0,0x000000f1,0x00030037,0x0000000f,0x000000f2,0x000200f8,0x000000f4,0x0004003d, + 0x0000000e,0x00000442,0x000000f2,0x00050041,0x0000000f,0x00000443,0x000000f1,0x0000019c, + 0x0004003d,0x0000000e,0x00000444,0x00000443,0x00050041,0x0000000f,0x00000445,0x000000f1, + 0x000001a1,0x0004003d,0x0000000e,0x00000446,0x00000445,0x0008000c,0x0000000e,0x00000447, + 0x00000001,0x0000002b,0x00000442,0x00000444,0x00000446,0x0003003e,0x000000f2,0x00000447, + 0x000100fd,0x00010038,0x00050036,0x00000006,0x000000f8,0x00000000,0x000000f5,0x00030037, + 0x0000001b,0x000000f6,0x00030037,0x00000007,0x000000f7,0x000200f8,0x000000f9,0x0004003b, + 0x0000001b,0x00000448,0x00000007,0x0004003b,0x00000007,0x0000044d,0x00000007,0x0004003b, + 0x00000007,0x00000451,0x00000007,0x0004003d,0x0000001a,0x00000449,0x000000f6,0x0004003d, + 0x00000006,0x0000044a,0x000000f7,0x00050050,0x0000001a,0x0000044b,0x0000044a,0x0000044a, + 0x00050085,0x0000001a,0x0000044c,0x00000449,0x0000044b,0x0003003e,0x00000448,0x0000044c, + 0x0004003d,0x0000001a,0x0000044e,0x00000448,0x0004003d,0x0000001a,0x0000044f,0x00000448, + 0x00050094,0x00000006,0x00000450,0x0000044e,0x0000044f,0x0003003e,0x00000451,0x00000450, + 0x00050039,0x00000006,0x00000452,0x000000da,0x00000451,0x0003003e,0x0000044d,0x00000452, + 0x0004003d,0x00000006,0x00000453,0x0000044d,0x000200fe,0x00000453,0x00010038,0x00050036, + 0x00000006,0x00000100,0x00000000,0x000000fd,0x00030037,0x000000fa,0x000000fe,0x00030037, + 0x000000fc,0x000000ff,0x000200f8,0x00000101,0x0004003b,0x00000007,0x00000456,0x00000007, + 0x0004003b,0x00000007,0x0000045f,0x00000007,0x0004003b,0x00000007,0x00000460,0x00000007, + 0x00040039,0x0000001a,0x00000457,0x00000062,0x00050050,0x0000001a,0x00000458,0x0000014f, + 0x0000014f,0x00050088,0x0000001a,0x00000459,0x00000458,0x00000457,0x00050050,0x0000001a, + 0x0000045a,0x0000014f,0x0000014f,0x00050083,0x0000001a,0x0000045b,0x00000459,0x0000045a, + 0x00050051,0x00000006,0x0000045c,0x0000045b,0x00000000,0x00050081,0x00000006,0x0000045d, + 0x0000014f,0x0000045c,0x0003003e,0x00000456,0x0000045d,0x0003003e,0x0000045f,0x0000045e, + 0x0004003d,0x00000006,0x00000461,0x00000456,0x0003003e,0x00000460,0x00000461,0x00060039, + 0x00000006,0x00000462,0x00000023,0x0000045f,0x00000460,0x000200fe,0x00000462,0x00010038, + 0x00050036,0x0000000e,0x00000103,0x00000000,0x0000006e,0x00030037,0x0000006d,0x00000102, + 0x000200f8,0x00000104,0x0004003b,0x0000000f,0x00000465,0x00000007,0x0004003b,0x0000006d, + 0x00000467,0x00000007,0x0004003b,0x0000000f,0x0000046a,0x00000007,0x0004003b,0x0000000f, + 0x0000046b,0x00000007,0x0004003b,0x0000000f,0x0000046f,0x00000007,0x0004003b,0x0000000f, + 0x00000470,0x00000007,0x0004003d,0x00000055,0x00000468,0x00000102,0x0003003e,0x00000467, + 0x00000468,0x00050039,0x0000000e,0x00000469,0x00000070,0x00000467,0x0003003e,0x0000046a, + 0x00000466,0x0003003e,0x0000046b,0x00000469,0x00060039,0x0000000e,0x0000046c,0x00000047, + 0x0000046a,0x0000046b,0x00040039,0x00000006,0x0000046d,0x00000096,0x0005008e,0x0000000e, + 0x0000046e,0x0000046c,0x0000046d,0x0003003e,0x00000465,0x0000046e,0x0004003d,0x0000000e, + 0x00000471,0x00000465,0x0003003e,0x00000470,0x00000471,0x00050039,0x0000000e,0x00000472, + 0x000000b9,0x00000470,0x0003003e,0x0000046f,0x00000472,0x0004003d,0x0000000e,0x00000473, + 0x0000046f,0x000200fe,0x00000473,0x00010038,0x00050036,0x00000002,0x00000108,0x00000000, + 0x00000105,0x00030037,0x000000fa,0x00000106,0x00030037,0x000000fc,0x00000107,0x000200f8, + 0x00000109,0x0004003b,0x0000001b,0x00000476,0x00000007,0x0004003b,0x0000001b,0x0000047a, + 0x00000007,0x0004003b,0x0000006d,0x0000047e,0x00000007,0x0004003b,0x0000001b,0x00000482, + 0x00000007,0x0004003b,0x0000001b,0x00000488,0x00000007,0x0004003b,0x0000006d,0x0000048c, + 0x00000007,0x0004003b,0x000000a8,0x0000049d,0x00000007,0x0004003b,0x000000a8,0x000004a3, + 0x00000007,0x0004003b,0x0000001b,0x000004a9,0x00000007,0x0004003b,0x000000a8,0x000004ac, + 0x00000007,0x0004003b,0x00000037,0x000004af,0x00000007,0x0004003b,0x00000037,0x000004b0, + 0x00000007,0x0004003b,0x00000037,0x000004b8,0x00000007,0x0004003b,0x0000006d,0x000004c0, + 0x00000007,0x0004003b,0x00000037,0x000004c2,0x00000007,0x0004003b,0x00000037,0x000004cb, + 0x00000007,0x0004003b,0x0000006d,0x000004d4,0x00000007,0x0004003b,0x0000006d,0x000004da, + 0x00000007,0x0004003b,0x0000006d,0x000004dc,0x00000007,0x0004003b,0x0000006d,0x000004de, + 0x00000007,0x0004003b,0x0000006d,0x000004df,0x00000007,0x0004003b,0x000004e3,0x000004e4, + 0x00000007,0x0004003b,0x0000006d,0x000004e6,0x00000007,0x0004003b,0x00000007,0x000004f0, + 0x00000007,0x0004003b,0x000000fc,0x000004f1,0x00000007,0x0004003b,0x00000007,0x000004f5, + 0x00000007,0x0004003b,0x00000007,0x000004fa,0x00000007,0x0004003b,0x00000007,0x000004fb, + 0x00000007,0x0004003b,0x00000007,0x000004fd,0x00000007,0x0004003b,0x00000007,0x00000507, + 0x00000007,0x0004003b,0x00000007,0x00000509,0x00000007,0x0004003b,0x00000007,0x0000050a, + 0x00000007,0x0004003b,0x00000007,0x0000050c,0x00000007,0x0004003b,0x00000007,0x0000050d, + 0x00000007,0x0004003b,0x00000007,0x0000050f,0x00000007,0x0004003b,0x00000007,0x00000510, + 0x00000007,0x0004003b,0x00000007,0x00000512,0x00000007,0x0004003b,0x00000007,0x00000514, + 0x00000007,0x0004003b,0x00000037,0x00000517,0x00000007,0x0004003b,0x00000037,0x0000051f, + 0x00000007,0x0004003b,0x0000006d,0x00000527,0x00000007,0x0004003b,0x00000037,0x00000529, + 0x00000007,0x0004003b,0x00000037,0x00000532,0x00000007,0x0004003b,0x0000001b,0x0000053b, + 0x00000007,0x0004003b,0x0000001b,0x00000540,0x00000007,0x0004003b,0x0000006d,0x00000544, + 0x00000007,0x0004003b,0x00000007,0x0000054a,0x00000007,0x0004003b,0x0000006d,0x0000054d, + 0x00000007,0x0004003b,0x0000006d,0x0000054e,0x00000007,0x0004003b,0x00000007,0x00000555, + 0x00000007,0x0004003b,0x0000001b,0x00000557,0x00000007,0x0004003b,0x00000007,0x00000559, + 0x00000007,0x0004003b,0x00000007,0x0000056b,0x00000007,0x0004003b,0x00000007,0x0000056f, + 0x00000007,0x0004003b,0x000000a8,0x00000576,0x00000007,0x0004003b,0x000000a8,0x00000580, + 0x00000007,0x0004003b,0x000000a0,0x00000582,0x00000007,0x0004003b,0x000000a0,0x0000058e, + 0x00000007,0x0004003b,0x000000a0,0x000005ad,0x00000007,0x0004003b,0x0000000f,0x000005b0, + 0x00000007,0x00050051,0x00000055,0x00000477,0x00000106,0x00000000,0x0004006f,0x0000001a, + 0x00000478,0x00000477,0x00050081,0x0000001a,0x00000479,0x00000478,0x00000307,0x0003003e, + 0x00000476,0x00000479,0x0004003d,0x0000001a,0x0000047b,0x00000476,0x00040039,0x0000001a, + 0x0000047c,0x00000062,0x00050085,0x0000001a,0x0000047d,0x0000047b,0x0000047c,0x0003003e, + 0x0000047a,0x0000047d,0x0004003d,0x0000001a,0x0000047f,0x0000047a,0x0006000c,0x0000001a, + 0x00000480,0x00000001,0x00000008,0x0000047f,0x0004006e,0x00000055,0x00000481,0x00000480, + 0x0003003e,0x0000047e,0x00000481,0x0004003d,0x00000055,0x00000483,0x0000047e,0x0004006f, + 0x0000001a,0x00000484,0x00000483,0x00050081,0x0000001a,0x00000485,0x00000484,0x00000307, + 0x00040039,0x0000001a,0x00000486,0x00000060,0x00050083,0x0000001a,0x00000487,0x00000485, + 0x00000486,0x0003003e,0x00000482,0x00000487,0x0004003d,0x0000001a,0x00000489,0x00000482, + 0x0004003d,0x0000001a,0x0000048a,0x0000047a,0x00050083,0x0000001a,0x0000048b,0x00000489, + 0x0000048a,0x0003003e,0x00000488,0x0000048b,0x00050041,0x00000007,0x0000048d,0x00000482, + 0x000001f4,0x0004003d,0x00000006,0x0000048e,0x0000048d,0x00050041,0x00000007,0x0000048f, + 0x0000047a,0x000001f4,0x0004003d,0x00000006,0x00000490,0x0000048f,0x000500ba,0x000000a7, + 0x00000491,0x0000048e,0x00000490,0x000600a9,0x00000036,0x00000494,0x00000491,0x00000492, + 0x00000493,0x00050041,0x00000037,0x00000495,0x0000048c,0x000001f4,0x0003003e,0x00000495, + 0x00000494,0x00050041,0x00000007,0x00000496,0x00000482,0x0000028d,0x0004003d,0x00000006, + 0x00000497,0x00000496,0x00050041,0x00000007,0x00000498,0x0000047a,0x0000028d,0x0004003d, + 0x00000006,0x00000499,0x00000498,0x000500ba,0x000000a7,0x0000049a,0x00000497,0x00000499, + 0x000600a9,0x00000036,0x0000049b,0x0000049a,0x00000492,0x00000493,0x00050041,0x00000037, + 0x0000049c,0x0000048c,0x0000028d,0x0003003e,0x0000049c,0x0000049b,0x00050041,0x00000007, + 0x0000049e,0x00000482,0x0000028d,0x0004003d,0x00000006,0x0000049f,0x0000049e,0x00050041, + 0x00000007,0x000004a0,0x0000047a,0x0000028d,0x0004003d,0x00000006,0x000004a1,0x000004a0, + 0x000500ba,0x000000a7,0x000004a2,0x0000049f,0x000004a1,0x0003003e,0x0000049d,0x000004a2, + 0x00050041,0x00000007,0x000004a4,0x00000482,0x000001f4,0x0004003d,0x00000006,0x000004a5, + 0x000004a4,0x00050041,0x00000007,0x000004a6,0x0000047a,0x000001f4,0x0004003d,0x00000006, + 0x000004a7,0x000004a6,0x000500ba,0x000000a7,0x000004a8,0x000004a5,0x000004a7,0x0003003e, + 0x000004a3,0x000004a8,0x0004003d,0x00000055,0x000004aa,0x0000048c,0x0004006f,0x0000001a, + 0x000004ab,0x000004aa,0x0003003e,0x000004a9,0x000004ab,0x00050051,0x00000006,0x000004ad, + 0x00000106,0x0000000a,0x000500b4,0x000000a7,0x000004ae,0x000004ad,0x0000014e,0x0003003e, + 0x000004ac,0x000004ae,0x0003003e,0x000004af,0x00000191,0x0003003e,0x000004b0,0x00000191, + 0x000200f9,0x000004b1,0x000200f8,0x000004b1,0x000400f6,0x000004b3,0x000004b4,0x00000000, + 0x000200f9,0x000004b5,0x000200f8,0x000004b5,0x0004003d,0x00000036,0x000004b6,0x000004b0, + 0x000500b1,0x000000a7,0x000004b7,0x000004b6,0x000001a1,0x000400fa,0x000004b7,0x000004b2, + 0x000004b3,0x000200f8,0x000004b2,0x0003003e,0x000004b8,0x00000191,0x000200f9,0x000004b9, + 0x000200f8,0x000004b9,0x000400f6,0x000004bb,0x000004bc,0x00000000,0x000200f9,0x000004bd, + 0x000200f8,0x000004bd,0x0004003d,0x00000036,0x000004be,0x000004b8,0x000500b1,0x000000a7, + 0x000004bf,0x000004be,0x000001a1,0x000400fa,0x000004bf,0x000004ba,0x000004bb,0x000200f8, + 0x000004ba,0x0004003d,0x000000a7,0x000004c1,0x000004a3,0x000300f7,0x000004c4,0x00000000, + 0x000400fa,0x000004c1,0x000004c3,0x000004c7,0x000200f8,0x000004c3,0x0004003d,0x00000036, + 0x000004c5,0x000004b8,0x00050082,0x00000036,0x000004c6,0x000001a1,0x000004c5,0x0003003e, + 0x000004c2,0x000004c6,0x000200f9,0x000004c4,0x000200f8,0x000004c7,0x0004003d,0x00000036, + 0x000004c8,0x000004b8,0x0003003e,0x000004c2,0x000004c8,0x000200f9,0x000004c4,0x000200f8, + 0x000004c4,0x0004003d,0x00000036,0x000004c9,0x000004c2,0x0004003d,0x000000a7,0x000004ca, + 0x0000049d,0x000300f7,0x000004cd,0x00000000,0x000400fa,0x000004ca,0x000004cc,0x000004d0, + 0x000200f8,0x000004cc,0x0004003d,0x00000036,0x000004ce,0x000004b0,0x00050082,0x00000036, + 0x000004cf,0x000001a1,0x000004ce,0x0003003e,0x000004cb,0x000004cf,0x000200f9,0x000004cd, + 0x000200f8,0x000004d0,0x0004003d,0x00000036,0x000004d1,0x000004b0,0x0003003e,0x000004cb, + 0x000004d1,0x000200f9,0x000004cd,0x000200f8,0x000004cd,0x0004003d,0x00000036,0x000004d2, + 0x000004cb,0x00050050,0x00000055,0x000004d3,0x000004c9,0x000004d2,0x0003003e,0x000004c0, + 0x000004d3,0x0004003d,0x00000055,0x000004d5,0x0000047e,0x0004003d,0x00000055,0x000004d6, + 0x0000048c,0x00050080,0x00000055,0x000004d7,0x000004d5,0x000004d6,0x0004003d,0x00000055, + 0x000004d8,0x000004c0,0x00050080,0x00000055,0x000004d9,0x000004d7,0x000004d8,0x0003003e, + 0x000004d4,0x000004d9,0x00040039,0x00000055,0x000004db,0x00000057,0x0004003d,0x00000055, + 0x000004dd,0x000004d4,0x0003003e,0x000004dc,0x000004dd,0x0003003e,0x000004de,0x00000218, + 0x0003003e,0x000004df,0x000004db,0x00070039,0x00000055,0x000004e0,0x000000c3,0x000004dc, + 0x000004de,0x000004df,0x0003003e,0x000004da,0x000004e0,0x0004003d,0x00000036,0x000004e5, + 0x000004af,0x0004003d,0x00000055,0x000004e7,0x000004da,0x0003003e,0x000004e6,0x000004e7, + 0x00050039,0x0000000e,0x000004e8,0x00000103,0x000004e6,0x00050041,0x0000000f,0x000004e9, + 0x000004e4,0x000004e5,0x0003003e,0x000004e9,0x000004e8,0x0004003d,0x00000036,0x000004ea, + 0x000004af,0x00050080,0x00000036,0x000004eb,0x000004ea,0x00000238,0x0003003e,0x000004af, + 0x000004eb,0x000200f9,0x000004bc,0x000200f8,0x000004bc,0x0004003d,0x00000036,0x000004ec, + 0x000004b8,0x00050080,0x00000036,0x000004ed,0x000004ec,0x00000238,0x0003003e,0x000004b8, + 0x000004ed,0x000200f9,0x000004b9,0x000200f8,0x000004bb,0x000200f9,0x000004b4,0x000200f8, + 0x000004b4,0x0004003d,0x00000036,0x000004ee,0x000004b0,0x00050080,0x00000036,0x000004ef, + 0x000004ee,0x00000238,0x0003003e,0x000004b0,0x000004ef,0x000200f9,0x000004b1,0x000200f8, + 0x000004b3,0x0004003d,0x000000fb,0x000004f2,0x00000107,0x0003003e,0x000004f1,0x000004f2, + 0x00060039,0x00000006,0x000004f3,0x00000100,0x00000106,0x000004f1,0x0004003d,0x000000fb, + 0x000004f4,0x000004f1,0x0003003e,0x00000107,0x000004f4,0x0003003e,0x000004f0,0x000004f3, + 0x0004003d,0x00000006,0x000004f6,0x000004f0,0x00050081,0x00000006,0x000004f7,0x0000014f, + 0x000004f6,0x00050085,0x00000006,0x000004f9,0x000004f7,0x000004f8,0x0003003e,0x000004fa, + 0x0000014f,0x0003003e,0x000004fb,0x000004f9,0x00060039,0x00000006,0x000004fc,0x0000003f, + 0x000004fa,0x000004fb,0x0003003e,0x000004f5,0x000004fc,0x00050051,0x00000006,0x000004fe, + 0x00000106,0x00000007,0x00050085,0x00000006,0x000004ff,0x000004fe,0x000002ab,0x00050083, + 0x00000006,0x00000500,0x0000014f,0x000004ff,0x00050051,0x00000006,0x00000501,0x00000106, + 0x00000009,0x00050083,0x00000006,0x00000502,0x0000014f,0x00000501,0x00050041,0x00000007, + 0x00000503,0x00000107,0x00000197,0x0004003d,0x00000006,0x00000504,0x00000503,0x00050085, + 0x00000006,0x00000506,0x00000504,0x00000505,0x0003003e,0x00000507,0x00000506,0x00050039, + 0x00000006,0x00000508,0x00000018,0x00000507,0x0003003e,0x00000509,0x00000502,0x0003003e, + 0x0000050a,0x00000508,0x00060039,0x00000006,0x0000050b,0x00000023,0x00000509,0x0000050a, + 0x0003003e,0x0000050c,0x00000500,0x0003003e,0x0000050d,0x0000050b,0x00060039,0x00000006, + 0x0000050e,0x00000023,0x0000050c,0x0000050d,0x0003003e,0x000004fd,0x0000050e,0x0004003d, + 0x00000006,0x00000511,0x000004f5,0x0003003e,0x00000510,0x00000511,0x0004003d,0x00000006, + 0x00000513,0x000004f0,0x0003003e,0x00000512,0x00000513,0x0004003d,0x00000006,0x00000515, + 0x000004fd,0x0003003e,0x00000514,0x00000515,0x00070039,0x00000006,0x00000516,0x0000000c, + 0x00000510,0x00000512,0x00000514,0x0003003e,0x0000050f,0x00000516,0x0003003e,0x000004af, + 0x00000191,0x0003003e,0x00000517,0x00000191,0x000200f9,0x00000518,0x000200f8,0x00000518, + 0x000400f6,0x0000051a,0x0000051b,0x00000000,0x000200f9,0x0000051c,0x000200f8,0x0000051c, + 0x0004003d,0x00000036,0x0000051d,0x00000517,0x000500b1,0x000000a7,0x0000051e,0x0000051d, + 0x000001a1,0x000400fa,0x0000051e,0x00000519,0x0000051a,0x000200f8,0x00000519,0x0003003e, + 0x0000051f,0x00000191,0x000200f9,0x00000520,0x000200f8,0x00000520,0x000400f6,0x00000522, + 0x00000523,0x00000000,0x000200f9,0x00000524,0x000200f8,0x00000524,0x0004003d,0x00000036, + 0x00000525,0x0000051f,0x000500b1,0x000000a7,0x00000526,0x00000525,0x000001a1,0x000400fa, + 0x00000526,0x00000521,0x00000522,0x000200f8,0x00000521,0x0004003d,0x000000a7,0x00000528, + 0x000004a3,0x000300f7,0x0000052b,0x00000000,0x000400fa,0x00000528,0x0000052a,0x0000052e, + 0x000200f8,0x0000052a,0x0004003d,0x00000036,0x0000052c,0x0000051f,0x00050082,0x00000036, + 0x0000052d,0x000001a1,0x0000052c,0x0003003e,0x00000529,0x0000052d,0x000200f9,0x0000052b, + 0x000200f8,0x0000052e,0x0004003d,0x00000036,0x0000052f,0x0000051f,0x0003003e,0x00000529, + 0x0000052f,0x000200f9,0x0000052b,0x000200f8,0x0000052b,0x0004003d,0x00000036,0x00000530, + 0x00000529,0x0004003d,0x000000a7,0x00000531,0x0000049d,0x000300f7,0x00000534,0x00000000, + 0x000400fa,0x00000531,0x00000533,0x00000537,0x000200f8,0x00000533,0x0004003d,0x00000036, + 0x00000535,0x00000517,0x00050082,0x00000036,0x00000536,0x000001a1,0x00000535,0x0003003e, + 0x00000532,0x00000536,0x000200f9,0x00000534,0x000200f8,0x00000537,0x0004003d,0x00000036, + 0x00000538,0x00000517,0x0003003e,0x00000532,0x00000538,0x000200f9,0x00000534,0x000200f8, + 0x00000534,0x0004003d,0x00000036,0x00000539,0x00000532,0x00050050,0x00000055,0x0000053a, + 0x00000530,0x00000539,0x0003003e,0x00000527,0x0000053a,0x0004003d,0x0000001a,0x0000053c, + 0x000004a9,0x0004003d,0x00000055,0x0000053d,0x00000527,0x0004006f,0x0000001a,0x0000053e, + 0x0000053d,0x00050081,0x0000001a,0x0000053f,0x0000053c,0x0000053e,0x0003003e,0x0000053b, + 0x0000053f,0x0004003d,0x0000001a,0x00000541,0x00000488,0x0004003d,0x0000001a,0x00000542, + 0x0000053b,0x00050081,0x0000001a,0x00000543,0x00000541,0x00000542,0x0003003e,0x00000540, + 0x00000543,0x0004003d,0x00000055,0x00000545,0x0000047e,0x0004003d,0x00000055,0x00000546, + 0x0000048c,0x00050080,0x00000055,0x00000547,0x00000545,0x00000546,0x0004003d,0x00000055, + 0x00000548,0x00000527,0x00050080,0x00000055,0x00000549,0x00000547,0x00000548,0x0003003e, + 0x00000544,0x00000549,0x0004003d,0x00000055,0x0000054b,0x00000544,0x00040039,0x00000055, + 0x0000054c,0x00000057,0x0003003e,0x0000054d,0x0000054b,0x0003003e,0x0000054e,0x0000054c, + 0x00060039,0x000000a7,0x0000054f,0x000000ce,0x0000054d,0x0000054e,0x000600a9,0x00000006, + 0x00000550,0x0000054f,0x0000014f,0x0000014e,0x0003003e,0x0000054a,0x00000550,0x0004003d, + 0x000000a7,0x00000551,0x000004ac,0x000400a8,0x000000a7,0x00000552,0x00000551,0x000300f7, + 0x00000554,0x00000000,0x000400fa,0x00000552,0x00000553,0x00000554,0x000200f8,0x00000553, + 0x0004003d,0x00000006,0x00000556,0x0000054a,0x0004003d,0x0000001a,0x00000558,0x00000540, + 0x0003003e,0x00000557,0x00000558,0x0004003d,0x00000006,0x0000055a,0x0000050f,0x0003003e, + 0x00000559,0x0000055a,0x00060039,0x00000006,0x0000055b,0x000000f8,0x00000557,0x00000559, + 0x00050085,0x00000006,0x0000055c,0x00000556,0x0000055b,0x0003003e,0x00000555,0x0000055c, + 0x0004003d,0x00000036,0x0000055d,0x000004af,0x00050041,0x0000000f,0x0000055e,0x000004e4, + 0x0000055d,0x0004003d,0x0000000e,0x0000055f,0x0000055e,0x0004003d,0x00000006,0x00000560, + 0x00000555,0x0005008e,0x0000000e,0x00000561,0x0000055f,0x00000560,0x00050041,0x0000000f, + 0x00000562,0x00000107,0x00000238,0x0004003d,0x0000000e,0x00000563,0x00000562,0x00050081, + 0x0000000e,0x00000564,0x00000563,0x00000561,0x00050041,0x0000000f,0x00000565,0x00000107, + 0x00000238,0x0003003e,0x00000565,0x00000564,0x0004003d,0x00000006,0x00000566,0x00000555, + 0x00050041,0x00000007,0x00000567,0x00000107,0x0000019c,0x0004003d,0x00000006,0x00000568, + 0x00000567,0x00050081,0x00000006,0x00000569,0x00000568,0x00000566,0x00050041,0x00000007, + 0x0000056a,0x00000107,0x0000019c,0x0003003e,0x0000056a,0x00000569,0x000200f9,0x00000554, + 0x000200f8,0x00000554,0x0004003d,0x0000001a,0x0000056c,0x00000540,0x0004003d,0x0000001a, + 0x0000056d,0x00000540,0x00050094,0x00000006,0x0000056e,0x0000056c,0x0000056d,0x0003003e, + 0x0000056b,0x0000056e,0x0004003d,0x00000006,0x00000571,0x0000056b,0x00050085,0x00000006, + 0x00000572,0x00000570,0x00000571,0x0006000c,0x00000006,0x00000573,0x00000001,0x0000001b, + 0x00000572,0x0004003d,0x00000006,0x00000574,0x0000054a,0x00050085,0x00000006,0x00000575, + 0x00000573,0x00000574,0x0003003e,0x0000056f,0x00000575,0x0004003d,0x00000036,0x00000577, + 0x00000517,0x000500aa,0x000000a7,0x00000578,0x00000577,0x00000191,0x0004003d,0x00000036, + 0x00000579,0x0000051f,0x000500aa,0x000000a7,0x0000057a,0x00000579,0x00000191,0x000500a7, + 0x000000a7,0x0000057b,0x00000578,0x0000057a,0x0003003e,0x00000576,0x0000057b,0x0004003d, + 0x00000036,0x0000057c,0x000004af,0x00050041,0x0000000f,0x0000057d,0x000004e4,0x0000057c, + 0x0004003d,0x0000000e,0x0000057e,0x0000057d,0x0004003d,0x00000006,0x0000057f,0x0000056f, + 0x0004003d,0x000000a7,0x00000581,0x00000576,0x0003003e,0x00000580,0x00000581,0x00050041, + 0x000000a0,0x00000583,0x00000107,0x00000191,0x0004003d,0x0000009f,0x00000584,0x00000583, + 0x0003003e,0x00000582,0x00000584,0x00080039,0x00000002,0x00000585,0x000000ae,0x00000580, + 0x00000582,0x0000057e,0x0000057f,0x0004003d,0x0000009f,0x00000586,0x00000582,0x00050041, + 0x000000a0,0x00000587,0x00000107,0x00000191,0x0003003e,0x00000587,0x00000586,0x0004003d, + 0x00000036,0x00000588,0x000004af,0x00050080,0x00000036,0x00000589,0x00000588,0x00000238, + 0x0003003e,0x000004af,0x00000589,0x000200f9,0x00000523,0x000200f8,0x00000523,0x0004003d, + 0x00000036,0x0000058a,0x0000051f,0x00050080,0x00000036,0x0000058b,0x0000058a,0x00000238, + 0x0003003e,0x0000051f,0x0000058b,0x000200f9,0x00000520,0x000200f8,0x00000522,0x000200f9, + 0x0000051b,0x000200f8,0x0000051b,0x0004003d,0x00000036,0x0000058c,0x00000517,0x00050080, + 0x00000036,0x0000058d,0x0000058c,0x00000238,0x0003003e,0x00000517,0x0000058d,0x000200f9, + 0x00000518,0x000200f8,0x0000051a,0x00050041,0x000000a0,0x0000058f,0x00000107,0x00000191, + 0x0004003d,0x0000009f,0x00000590,0x0000058f,0x0003003e,0x0000058e,0x00000590,0x00050039, + 0x00000002,0x00000591,0x000000b2,0x0000058e,0x0004003d,0x0000009f,0x00000592,0x0000058e, + 0x00050041,0x000000a0,0x00000593,0x00000107,0x00000191,0x0003003e,0x00000593,0x00000592, + 0x00050041,0x00000007,0x00000594,0x00000107,0x0000019c,0x0004003d,0x00000006,0x00000595, + 0x00000594,0x000500ba,0x000000a7,0x00000596,0x00000595,0x00000326,0x000600a9,0x00000006, + 0x00000597,0x00000596,0x0000014f,0x0000014e,0x00050041,0x00000007,0x00000598,0x00000107, + 0x0000019c,0x0004003d,0x00000006,0x00000599,0x00000598,0x00050085,0x00000006,0x0000059a, + 0x00000599,0x00000597,0x00050041,0x00000007,0x0000059b,0x00000107,0x0000019c,0x0003003e, + 0x0000059b,0x0000059a,0x00050041,0x00000007,0x0000059c,0x00000107,0x0000019c,0x0004003d, + 0x00000006,0x0000059d,0x0000059c,0x000500ba,0x000000a7,0x0000059e,0x0000059d,0x00000326, + 0x000300f7,0x000005a0,0x00000000,0x000400fa,0x0000059e,0x0000059f,0x000005a0,0x000200f8, + 0x0000059f,0x00050041,0x0000000f,0x000005a1,0x00000107,0x00000238,0x0004003d,0x0000000e, + 0x000005a2,0x000005a1,0x00050041,0x00000007,0x000005a3,0x00000107,0x0000019c,0x0004003d, + 0x00000006,0x000005a4,0x000005a3,0x00060050,0x0000000e,0x000005a5,0x000005a4,0x000005a4, + 0x000005a4,0x00050088,0x0000000e,0x000005a6,0x000005a2,0x000005a5,0x00050041,0x0000000f, + 0x000005a7,0x00000107,0x00000238,0x0003003e,0x000005a7,0x000005a6,0x00050041,0x00000007, + 0x000005a9,0x00000107,0x0000019c,0x0004003d,0x00000006,0x000005aa,0x000005a9,0x00050085, + 0x00000006,0x000005ab,0x000005aa,0x000005a8,0x00050041,0x00000007,0x000005ac,0x00000107, + 0x0000019c,0x0003003e,0x000005ac,0x000005ab,0x00050041,0x000000a0,0x000005ae,0x00000107, + 0x00000191,0x0004003d,0x0000009f,0x000005af,0x000005ae,0x0003003e,0x000005ad,0x000005af, + 0x00050041,0x0000000f,0x000005b1,0x00000107,0x00000238,0x0004003d,0x0000000e,0x000005b2, + 0x000005b1,0x0003003e,0x000005b0,0x000005b2,0x00060039,0x00000002,0x000005b3,0x000000f3, + 0x000005ad,0x000005b0,0x0004003d,0x0000000e,0x000005b4,0x000005b0,0x00050041,0x0000000f, + 0x000005b5,0x00000107,0x00000238,0x0003003e,0x000005b5,0x000005b4,0x000200f9,0x000005a0, + 0x000200f8,0x000005a0,0x0004003d,0x000000a7,0x000005b6,0x000004ac,0x000300f7,0x000005b8, + 0x00000000,0x000400fa,0x000005b6,0x000005b7,0x000005b8,0x000200f8,0x000005b7,0x00060041, + 0x0000000f,0x000005b9,0x00000107,0x00000191,0x00000191,0x0004003d,0x0000000e,0x000005ba, + 0x000005b9,0x00050041,0x0000000f,0x000005bb,0x00000107,0x00000238,0x0003003e,0x000005bb, + 0x000005ba,0x00050041,0x00000007,0x000005bc,0x00000107,0x0000019c,0x0003003e,0x000005bc, + 0x0000014f,0x00050041,0x00000007,0x000005bd,0x00000107,0x00000197,0x0003003e,0x000005bd, + 0x0000014e,0x000200f9,0x000005b8,0x000200f8,0x000005b8,0x000100fd,0x00010038,0x00050036, + 0x0000002f,0x0000010b,0x00000000,0x00000072,0x00030037,0x0000006d,0x0000010a,0x000200f8, + 0x0000010c,0x0004003b,0x0000006d,0x000005be,0x00000007,0x0004003d,0x00000055,0x000005bf, + 0x0000010a,0x0003003e,0x000005be,0x000005bf,0x00050039,0x0000002f,0x000005c0,0x00000074, + 0x000005be,0x000200fe,0x000005c0,0x00010038,0x00050036,0x000000e4,0x00000110,0x00000000, + 0x0000010d,0x00030037,0x0000006d,0x0000010e,0x00030037,0x0000006d,0x0000010f,0x000200f8, + 0x00000111,0x0004003b,0x000000e5,0x000005c3,0x00000007,0x0004003b,0x0000006d,0x000005c5, + 0x00000007,0x0004003b,0x0000006d,0x000005c7,0x00000007,0x0004003b,0x0000006d,0x000005c8, + 0x00000007,0x0004003b,0x0000006d,0x000005cb,0x00000007,0x0004003b,0x0000006d,0x000005cf, + 0x00000007,0x0004003b,0x0000006d,0x000005d1,0x00000007,0x0004003b,0x0000006d,0x000005d2, + 0x00000007,0x0004003b,0x0000006d,0x000005d5,0x00000007,0x0004003b,0x0000006d,0x000005d9, + 0x00000007,0x0004003b,0x0000006d,0x000005db,0x00000007,0x0004003b,0x0000006d,0x000005dc, + 0x00000007,0x0004003b,0x0000006d,0x000005df,0x00000007,0x0004003b,0x0000006d,0x000005e3, + 0x00000007,0x0004003b,0x0000006d,0x000005e5,0x00000007,0x0004003b,0x0000006d,0x000005e6, + 0x00000007,0x0004003b,0x0000006d,0x000005e9,0x00000007,0x0004003b,0x0000006d,0x000005ed, + 0x00000007,0x0004003b,0x0000006d,0x000005ef,0x00000007,0x0004003b,0x0000006d,0x000005f0, + 0x00000007,0x0004003b,0x0000006d,0x000005f3,0x00000007,0x0004003b,0x0000006d,0x000005f6, + 0x00000007,0x0004003b,0x0000006d,0x000005f8,0x00000007,0x0004003b,0x0000006d,0x000005f9, + 0x00000007,0x0004003b,0x0000006d,0x000005fc,0x00000007,0x0004003b,0x0000006d,0x00000600, + 0x00000007,0x0004003b,0x0000006d,0x00000602,0x00000007,0x0004003b,0x0000006d,0x00000603, + 0x00000007,0x0004003b,0x0000006d,0x00000606,0x00000007,0x0004003b,0x0000006d,0x0000060a, + 0x00000007,0x0004003b,0x0000006d,0x0000060c,0x00000007,0x0004003b,0x0000006d,0x0000060d, + 0x00000007,0x0004003b,0x0000006d,0x00000610,0x00000007,0x0004003b,0x0000006d,0x00000614, + 0x00000007,0x0004003b,0x0000006d,0x00000616,0x00000007,0x0004003b,0x0000006d,0x00000617, + 0x00000007,0x0004003b,0x0000006d,0x0000061a,0x00000007,0x0004003b,0x0000006d,0x0000061e, + 0x00000007,0x0004003b,0x0000006d,0x00000620,0x00000007,0x0004003b,0x0000006d,0x00000621, + 0x00000007,0x0004003b,0x0000006d,0x00000624,0x00000007,0x0004003b,0x0000006d,0x00000628, + 0x00000007,0x0004003b,0x0000006d,0x0000062a,0x00000007,0x0004003b,0x0000006d,0x0000062b, + 0x00000007,0x0004003b,0x0000006d,0x0000062e,0x00000007,0x0004003b,0x0000006d,0x00000632, + 0x00000007,0x0004003b,0x0000006d,0x00000634,0x00000007,0x0004003b,0x0000006d,0x00000635, + 0x00000007,0x0004003b,0x0000006d,0x00000638,0x00000007,0x0004003b,0x0000006d,0x0000063c, + 0x00000007,0x0004003b,0x0000006d,0x0000063e,0x00000007,0x0004003b,0x0000006d,0x0000063f, + 0x00000007,0x0004003b,0x0000006d,0x00000642,0x00000007,0x0004003b,0x0000006d,0x00000646, + 0x00000007,0x0004003b,0x0000006d,0x00000648,0x00000007,0x0004003b,0x0000006d,0x00000649, + 0x00000007,0x0004003b,0x0000006d,0x0000064c,0x00000007,0x0004003b,0x0000006d,0x00000650, + 0x00000007,0x0004003b,0x0000006d,0x00000652,0x00000007,0x0004003b,0x0000006d,0x00000653, + 0x00000007,0x0004003b,0x0000006d,0x00000656,0x00000007,0x0004003b,0x0000006d,0x0000065a, + 0x00000007,0x0004003b,0x0000006d,0x0000065c,0x00000007,0x0004003b,0x0000006d,0x0000065d, + 0x00000007,0x0004003b,0x0000006d,0x00000660,0x00000007,0x0004003d,0x00000055,0x000005c6, + 0x0000010e,0x0003003e,0x000005c5,0x000005c6,0x0003003e,0x000005c7,0x000005c4,0x0004003d, + 0x00000055,0x000005c9,0x0000010f,0x0003003e,0x000005c8,0x000005c9,0x00070039,0x00000055, + 0x000005ca,0x000000ee,0x000005c5,0x000005c7,0x000005c8,0x0003003e,0x000005cb,0x000005ca, + 0x00050039,0x0000002f,0x000005cc,0x0000010b,0x000005cb,0x00050041,0x00000030,0x000005cd, + 0x000005c3,0x00000191,0x0003003e,0x000005cd,0x000005cc,0x0004003d,0x00000055,0x000005d0, + 0x0000010e,0x0003003e,0x000005cf,0x000005d0,0x0003003e,0x000005d1,0x000005ce,0x0004003d, + 0x00000055,0x000005d3,0x0000010f,0x0003003e,0x000005d2,0x000005d3,0x00070039,0x00000055, + 0x000005d4,0x000000ee,0x000005cf,0x000005d1,0x000005d2,0x0003003e,0x000005d5,0x000005d4, + 0x00050039,0x0000002f,0x000005d6,0x0000010b,0x000005d5,0x00050041,0x00000030,0x000005d7, + 0x000005c3,0x00000238,0x0003003e,0x000005d7,0x000005d6,0x0004003d,0x00000055,0x000005da, + 0x0000010e,0x0003003e,0x000005d9,0x000005da,0x0003003e,0x000005db,0x000005d8,0x0004003d, + 0x00000055,0x000005dd,0x0000010f,0x0003003e,0x000005dc,0x000005dd,0x00070039,0x00000055, + 0x000005de,0x000000ee,0x000005d9,0x000005db,0x000005dc,0x0003003e,0x000005df,0x000005de, + 0x00050039,0x0000002f,0x000005e0,0x0000010b,0x000005df,0x00050041,0x00000030,0x000005e1, + 0x000005c3,0x0000019c,0x0003003e,0x000005e1,0x000005e0,0x0004003d,0x00000055,0x000005e4, + 0x0000010e,0x0003003e,0x000005e3,0x000005e4,0x0003003e,0x000005e5,0x000005e2,0x0004003d, + 0x00000055,0x000005e7,0x0000010f,0x0003003e,0x000005e6,0x000005e7,0x00070039,0x00000055, + 0x000005e8,0x000000ee,0x000005e3,0x000005e5,0x000005e6,0x0003003e,0x000005e9,0x000005e8, + 0x00050039,0x0000002f,0x000005ea,0x0000010b,0x000005e9,0x00050041,0x00000030,0x000005eb, + 0x000005c3,0x000001a1,0x0003003e,0x000005eb,0x000005ea,0x0004003d,0x00000055,0x000005ee, + 0x0000010e,0x0003003e,0x000005ed,0x000005ee,0x0003003e,0x000005ef,0x000005ec,0x0004003d, + 0x00000055,0x000005f1,0x0000010f,0x0003003e,0x000005f0,0x000005f1,0x00070039,0x00000055, + 0x000005f2,0x000000ee,0x000005ed,0x000005ef,0x000005f0,0x0003003e,0x000005f3,0x000005f2, + 0x00050039,0x0000002f,0x000005f4,0x0000010b,0x000005f3,0x00050041,0x00000030,0x000005f5, + 0x000005c3,0x00000197,0x0003003e,0x000005f5,0x000005f4,0x0004003d,0x00000055,0x000005f7, + 0x0000010e,0x0003003e,0x000005f6,0x000005f7,0x0003003e,0x000005f8,0x00000218,0x0004003d, + 0x00000055,0x000005fa,0x0000010f,0x0003003e,0x000005f9,0x000005fa,0x00070039,0x00000055, + 0x000005fb,0x000000ee,0x000005f6,0x000005f8,0x000005f9,0x0003003e,0x000005fc,0x000005fb, + 0x00050039,0x0000002f,0x000005fd,0x0000010b,0x000005fc,0x00050041,0x00000030,0x000005fe, + 0x000005c3,0x000003ab,0x0003003e,0x000005fe,0x000005fd,0x0004003d,0x00000055,0x00000601, + 0x0000010e,0x0003003e,0x00000600,0x00000601,0x0003003e,0x00000602,0x000005ff,0x0004003d, + 0x00000055,0x00000604,0x0000010f,0x0003003e,0x00000603,0x00000604,0x00070039,0x00000055, + 0x00000605,0x000000ee,0x00000600,0x00000602,0x00000603,0x0003003e,0x00000606,0x00000605, + 0x00050039,0x0000002f,0x00000607,0x0000010b,0x00000606,0x00050041,0x00000030,0x00000608, + 0x000005c3,0x000003ac,0x0003003e,0x00000608,0x00000607,0x0004003d,0x00000055,0x0000060b, + 0x0000010e,0x0003003e,0x0000060a,0x0000060b,0x0003003e,0x0000060c,0x00000609,0x0004003d, + 0x00000055,0x0000060e,0x0000010f,0x0003003e,0x0000060d,0x0000060e,0x00070039,0x00000055, + 0x0000060f,0x000000ee,0x0000060a,0x0000060c,0x0000060d,0x0003003e,0x00000610,0x0000060f, + 0x00050039,0x0000002f,0x00000611,0x0000010b,0x00000610,0x00050041,0x00000030,0x00000612, + 0x000005c3,0x000001a6,0x0003003e,0x00000612,0x00000611,0x0004003d,0x00000055,0x00000615, + 0x0000010e,0x0003003e,0x00000614,0x00000615,0x0003003e,0x00000616,0x00000613,0x0004003d, + 0x00000055,0x00000618,0x0000010f,0x0003003e,0x00000617,0x00000618,0x00070039,0x00000055, + 0x00000619,0x000000ee,0x00000614,0x00000616,0x00000617,0x0003003e,0x0000061a,0x00000619, + 0x00050039,0x0000002f,0x0000061b,0x0000010b,0x0000061a,0x00050041,0x00000030,0x0000061c, + 0x000005c3,0x000003be,0x0003003e,0x0000061c,0x0000061b,0x0004003d,0x00000055,0x0000061f, + 0x0000010e,0x0003003e,0x0000061e,0x0000061f,0x0003003e,0x00000620,0x0000061d,0x0004003d, + 0x00000055,0x00000622,0x0000010f,0x0003003e,0x00000621,0x00000622,0x00070039,0x00000055, + 0x00000623,0x000000ee,0x0000061e,0x00000620,0x00000621,0x0003003e,0x00000624,0x00000623, + 0x00050039,0x0000002f,0x00000625,0x0000010b,0x00000624,0x00050041,0x00000030,0x00000626, + 0x000005c3,0x000003bf,0x0003003e,0x00000626,0x00000625,0x0004003d,0x00000055,0x00000629, + 0x0000010e,0x0003003e,0x00000628,0x00000629,0x0003003e,0x0000062a,0x00000627,0x0004003d, + 0x00000055,0x0000062c,0x0000010f,0x0003003e,0x0000062b,0x0000062c,0x00070039,0x00000055, + 0x0000062d,0x000000ee,0x00000628,0x0000062a,0x0000062b,0x0003003e,0x0000062e,0x0000062d, + 0x00050039,0x0000002f,0x0000062f,0x0000010b,0x0000062e,0x00050041,0x00000030,0x00000630, + 0x000005c3,0x000001ac,0x0003003e,0x00000630,0x0000062f,0x0004003d,0x00000055,0x00000633, + 0x0000010e,0x0003003e,0x00000632,0x00000633,0x0003003e,0x00000634,0x00000631,0x0004003d, + 0x00000055,0x00000636,0x0000010f,0x0003003e,0x00000635,0x00000636,0x00070039,0x00000055, + 0x00000637,0x000000ee,0x00000632,0x00000634,0x00000635,0x0003003e,0x00000638,0x00000637, + 0x00050039,0x0000002f,0x00000639,0x0000010b,0x00000638,0x00050041,0x00000030,0x0000063a, + 0x000005c3,0x000003c0,0x0003003e,0x0000063a,0x00000639,0x0004003d,0x00000055,0x0000063d, + 0x0000010e,0x0003003e,0x0000063c,0x0000063d,0x0003003e,0x0000063e,0x0000063b,0x0004003d, + 0x00000055,0x00000640,0x0000010f,0x0003003e,0x0000063f,0x00000640,0x00070039,0x00000055, + 0x00000641,0x000000ee,0x0000063c,0x0000063e,0x0000063f,0x0003003e,0x00000642,0x00000641, + 0x00050039,0x0000002f,0x00000643,0x0000010b,0x00000642,0x00050041,0x00000030,0x00000644, + 0x000005c3,0x000003d2,0x0003003e,0x00000644,0x00000643,0x0004003d,0x00000055,0x00000647, + 0x0000010e,0x0003003e,0x00000646,0x00000647,0x0003003e,0x00000648,0x00000645,0x0004003d, + 0x00000055,0x0000064a,0x0000010f,0x0003003e,0x00000649,0x0000064a,0x00070039,0x00000055, + 0x0000064b,0x000000ee,0x00000646,0x00000648,0x00000649,0x0003003e,0x0000064c,0x0000064b, + 0x00050039,0x0000002f,0x0000064d,0x0000010b,0x0000064c,0x00050041,0x00000030,0x0000064e, + 0x000005c3,0x000001b1,0x0003003e,0x0000064e,0x0000064d,0x0004003d,0x00000055,0x00000651, + 0x0000010e,0x0003003e,0x00000650,0x00000651,0x0003003e,0x00000652,0x0000064f,0x0004003d, + 0x00000055,0x00000654,0x0000010f,0x0003003e,0x00000653,0x00000654,0x00070039,0x00000055, + 0x00000655,0x000000ee,0x00000650,0x00000652,0x00000653,0x0003003e,0x00000656,0x00000655, + 0x00050039,0x0000002f,0x00000657,0x0000010b,0x00000656,0x00050041,0x00000030,0x00000658, + 0x000005c3,0x000003d3,0x0003003e,0x00000658,0x00000657,0x0004003d,0x00000055,0x0000065b, + 0x0000010e,0x0003003e,0x0000065a,0x0000065b,0x0003003e,0x0000065c,0x00000659,0x0004003d, + 0x00000055,0x0000065e,0x0000010f,0x0003003e,0x0000065d,0x0000065e,0x00070039,0x00000055, + 0x0000065f,0x000000ee,0x0000065a,0x0000065c,0x0000065d,0x0003003e,0x00000660,0x0000065f, + 0x00050039,0x0000002f,0x00000661,0x0000010b,0x00000660,0x00050041,0x00000030,0x00000662, + 0x000005c3,0x000001b7,0x0003003e,0x00000662,0x00000661,0x0004003d,0x000000e4,0x00000663, + 0x000005c3,0x000200fe,0x00000663,0x00010038,0x00050036,0x0000002f,0x00000115,0x00000000, + 0x00000112,0x00030037,0x0000001b,0x00000113,0x00030037,0x0000006d,0x00000114,0x000200f8, + 0x00000116,0x0004003b,0x0000001b,0x00000666,0x00000007,0x0004003b,0x0000001b,0x0000066c, + 0x00000007,0x0004003b,0x0000001b,0x0000066d,0x00000007,0x0004003b,0x00000007,0x00000674, + 0x00000007,0x0004003b,0x00000007,0x00000675,0x00000007,0x0004003b,0x00000007,0x00000679, + 0x00000007,0x0004003b,0x00000007,0x0000067a,0x00000007,0x0004003b,0x00000007,0x00000681, + 0x00000007,0x0004003b,0x00000007,0x00000682,0x00000007,0x0004003b,0x00000007,0x00000686, + 0x00000007,0x0004003b,0x00000007,0x00000687,0x00000007,0x0004003b,0x0000006d,0x0000068a, + 0x00000007,0x0004003b,0x00000030,0x0000068e,0x00000007,0x0004003b,0x0000006d,0x0000068f, + 0x00000007,0x0004003b,0x0000006d,0x00000691,0x00000007,0x0004003b,0x000000e5,0x00000694, + 0x00000007,0x0004003b,0x0000001b,0x00000695,0x00000007,0x0004003d,0x0000001a,0x00000667, + 0x00000113,0x0004003d,0x00000055,0x00000668,0x00000114,0x0004006f,0x0000001a,0x00000669, + 0x00000668,0x00050085,0x0000001a,0x0000066a,0x00000667,0x00000669,0x00050083,0x0000001a, + 0x0000066b,0x0000066a,0x00000307,0x0003003e,0x00000666,0x0000066b,0x0004003d,0x0000001a, + 0x0000066e,0x00000666,0x0003003e,0x0000066d,0x0000066e,0x00050039,0x0000001a,0x0000066f, + 0x0000001e,0x0000066d,0x0003003e,0x0000066c,0x0000066f,0x00050041,0x00000037,0x00000670, + 0x00000114,0x000001f4,0x0004003d,0x00000036,0x00000671,0x00000670,0x00050082,0x00000036, + 0x00000672,0x00000671,0x00000238,0x0004006f,0x00000006,0x00000673,0x00000672,0x0003003e, + 0x00000674,0x00000673,0x00050041,0x00000007,0x00000676,0x00000666,0x000001f4,0x0004003d, + 0x00000006,0x00000677,0x00000676,0x0003003e,0x00000675,0x00000677,0x00060039,0x00000006, + 0x00000678,0x00000023,0x00000674,0x00000675,0x0003003e,0x00000679,0x0000014e,0x0003003e, + 0x0000067a,0x00000678,0x00060039,0x00000006,0x0000067b,0x0000003f,0x00000679,0x0000067a, + 0x00050041,0x00000007,0x0000067c,0x00000666,0x000001f4,0x0003003e,0x0000067c,0x0000067b, + 0x00050041,0x00000037,0x0000067d,0x00000114,0x0000028d,0x0004003d,0x00000036,0x0000067e, + 0x0000067d,0x00050082,0x00000036,0x0000067f,0x0000067e,0x00000238,0x0004006f,0x00000006, + 0x00000680,0x0000067f,0x0003003e,0x00000681,0x00000680,0x00050041,0x00000007,0x00000683, + 0x00000666,0x0000028d,0x0004003d,0x00000006,0x00000684,0x00000683,0x0003003e,0x00000682, + 0x00000684,0x00060039,0x00000006,0x00000685,0x00000023,0x00000681,0x00000682,0x0003003e, + 0x00000686,0x0000014e,0x0003003e,0x00000687,0x00000685,0x00060039,0x00000006,0x00000688, + 0x0000003f,0x00000686,0x00000687,0x00050041,0x00000007,0x00000689,0x00000666,0x0000028d, + 0x0003003e,0x00000689,0x00000688,0x0004003d,0x0000001a,0x0000068b,0x00000666,0x0006000c, + 0x0000001a,0x0000068c,0x00000001,0x00000008,0x0000068b,0x0004006e,0x00000055,0x0000068d, + 0x0000068c,0x0003003e,0x0000068a,0x0000068d,0x0004003d,0x00000055,0x00000690,0x0000068a, + 0x0003003e,0x0000068f,0x00000690,0x0004003d,0x00000055,0x00000692,0x00000114,0x0003003e, + 0x00000691,0x00000692,0x00060039,0x000000e4,0x00000693,0x00000110,0x0000068f,0x00000691, + 0x0003003e,0x00000694,0x00000693,0x0004003d,0x0000001a,0x00000696,0x0000066c,0x0003003e, + 0x00000695,0x00000696,0x00060039,0x0000002f,0x00000697,0x000000e9,0x00000694,0x00000695, + 0x0003003e,0x0000068e,0x00000697,0x0004003d,0x0000002f,0x00000698,0x0000068e,0x000200fe, + 0x00000698,0x00010038,0x00050036,0x0000001a,0x0000011a,0x00000000,0x00000117,0x00030037, + 0x0000006d,0x00000118,0x00030037,0x0000001b,0x00000119,0x000200f8,0x0000011b,0x0004003b, + 0x0000001b,0x0000069b,0x00000007,0x0004003b,0x0000006d,0x000006a1,0x00000007,0x0004003d, + 0x0000001a,0x0000069c,0x00000119,0x00040039,0x00000055,0x0000069d,0x00000057,0x0004006f, + 0x0000001a,0x0000069e,0x0000069d,0x00050085,0x0000001a,0x0000069f,0x0000069c,0x0000069e, + 0x0004006e,0x00000055,0x000006a0,0x0000069f,0x0003003e,0x000006a1,0x000006a0,0x00050039, + 0x0000001a,0x000006a2,0x00000094,0x000006a1,0x0003003e,0x0000069b,0x000006a2,0x0004003d, + 0x0000001a,0x000006a3,0x0000069b,0x000200fe,0x000006a3,0x00010038,0x00050036,0x00000002, + 0x0000011f,0x00000000,0x0000011d,0x00030037,0x0000011c,0x0000011e,0x000200f8,0x00000120, + 0x0004003b,0x0000001b,0x000006ac,0x00000007,0x00050041,0x0000001b,0x000006a6,0x0000011e, + 0x00000238,0x0004003d,0x0000001a,0x000006a7,0x000006a6,0x00050041,0x0000001b,0x000006a8, + 0x0000011e,0x00000197,0x0004003d,0x0000001a,0x000006a9,0x000006a8,0x00050081,0x0000001a, + 0x000006aa,0x000006a7,0x000006a9,0x00050041,0x0000001b,0x000006ab,0x0000011e,0x000003ab, + 0x0003003e,0x000006ab,0x000006aa,0x00050041,0x0000001b,0x000006ad,0x0000011e,0x000003ab, + 0x0004003d,0x0000001a,0x000006ae,0x000006ad,0x0003003e,0x000006ac,0x000006ae,0x00050039, + 0x000000a7,0x000006af,0x000000bd,0x000006ac,0x00050041,0x000000a8,0x000006b0,0x0000011e, + 0x000001b1,0x0003003e,0x000006b0,0x000006af,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000123,0x00000000,0x00000105,0x00030037,0x000000fa,0x00000121,0x00030037,0x000000fc, + 0x00000122,0x000200f8,0x00000124,0x0004003b,0x00000030,0x000006b1,0x00000007,0x0004003b, + 0x0000001b,0x000006b3,0x00000007,0x0004003b,0x0000006d,0x000006b5,0x00000007,0x0004003b, + 0x0000000f,0x000006c4,0x00000007,0x00040039,0x00000055,0x000006b2,0x0000005d,0x00050051, + 0x0000001a,0x000006b4,0x00000121,0x00000005,0x0003003e,0x000006b3,0x000006b4,0x0003003e, + 0x000006b5,0x000006b2,0x00060039,0x0000002f,0x000006b6,0x00000115,0x000006b3,0x000006b5, + 0x0003003e,0x000006b1,0x000006b6,0x0004003d,0x0000002f,0x000006b7,0x000006b1,0x0008004f, + 0x0000000e,0x000006b8,0x000006b7,0x000006b7,0x00000000,0x00000001,0x00000002,0x00050041, + 0x0000000f,0x000006b9,0x00000122,0x000001a1,0x0003003e,0x000006b9,0x000006b8,0x00040039, + 0x00000006,0x000006ba,0x00000067,0x00050041,0x0000000f,0x000006bb,0x00000122,0x000001a1, + 0x0004003d,0x0000000e,0x000006bc,0x000006bb,0x0005008e,0x0000000e,0x000006bd,0x000006bc, + 0x000006ba,0x00050041,0x0000000f,0x000006be,0x00000122,0x000001a1,0x0003003e,0x000006be, + 0x000006bd,0x00040039,0x00000006,0x000006bf,0x00000096,0x00050041,0x0000000f,0x000006c0, + 0x00000122,0x000001a1,0x0004003d,0x0000000e,0x000006c1,0x000006c0,0x0005008e,0x0000000e, + 0x000006c2,0x000006c1,0x000006bf,0x00050041,0x0000000f,0x000006c3,0x00000122,0x000001a1, + 0x0003003e,0x000006c3,0x000006c2,0x00050041,0x0000000f,0x000006c5,0x00000122,0x000001a1, + 0x0004003d,0x0000000e,0x000006c6,0x000006c5,0x0003003e,0x000006c4,0x000006c6,0x00050039, + 0x0000000e,0x000006c7,0x000000b9,0x000006c4,0x00050041,0x0000000f,0x000006c8,0x00000122, + 0x000001a1,0x0003003e,0x000006c8,0x000006c7,0x00050041,0x00000007,0x000006ca,0x000006b1, + 0x000006c9,0x0004003d,0x00000006,0x000006cb,0x000006ca,0x00050041,0x00000007,0x000006cc, + 0x00000122,0x000003ab,0x0003003e,0x000006cc,0x000006cb,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x00000127,0x00000000,0x00000105,0x00030037,0x000000fa,0x00000125,0x00030037, + 0x000000fc,0x00000126,0x000200f8,0x00000128,0x0004003b,0x00000007,0x000006da,0x00000007, + 0x0004003b,0x00000007,0x000006db,0x00000007,0x0004003b,0x00000007,0x000006de,0x00000007, + 0x0004003b,0x00000007,0x000006e4,0x00000007,0x0004003b,0x0000000f,0x000006e6,0x00000007, + 0x0004003b,0x0000000f,0x000006e9,0x00000007,0x0004003b,0x00000007,0x000006ec,0x00000007, + 0x0004003b,0x0000000f,0x000006f0,0x00000007,0x00050041,0x00000007,0x000006cd,0x00000126, + 0x00000197,0x0004003d,0x00000006,0x000006ce,0x000006cd,0x000500ba,0x000000a7,0x000006cf, + 0x000006ce,0x00000326,0x000600a9,0x00000006,0x000006d0,0x000006cf,0x0000014f,0x0000014e, + 0x00050041,0x00000007,0x000006d1,0x00000126,0x00000197,0x0004003d,0x00000006,0x000006d2, + 0x000006d1,0x00050085,0x00000006,0x000006d3,0x000006d2,0x000006d0,0x00050041,0x00000007, + 0x000006d4,0x00000126,0x00000197,0x0003003e,0x000006d4,0x000006d3,0x00050041,0x00000007, + 0x000006d5,0x00000126,0x00000197,0x0004003d,0x00000006,0x000006d6,0x000006d5,0x00050041, + 0x00000007,0x000006d7,0x00000126,0x0000019c,0x0004003d,0x00000006,0x000006d8,0x000006d7, + 0x00050081,0x00000006,0x000006d9,0x000006d6,0x000006d8,0x0003003e,0x000006da,0x00000326, + 0x0003003e,0x000006db,0x000006d9,0x00060039,0x00000006,0x000006dc,0x0000003f,0x000006da, + 0x000006db,0x00050041,0x00000007,0x000006dd,0x00000126,0x00000197,0x0003003e,0x000006dd, + 0x000006dc,0x00050041,0x00000007,0x000006df,0x00000126,0x0000019c,0x0004003d,0x00000006, + 0x000006e0,0x000006df,0x00050041,0x00000007,0x000006e1,0x00000126,0x00000197,0x0004003d, + 0x00000006,0x000006e2,0x000006e1,0x00050088,0x00000006,0x000006e3,0x000006e0,0x000006e2, + 0x0003003e,0x000006e4,0x000006e3,0x00050039,0x00000006,0x000006e5,0x00000018,0x000006e4, + 0x0003003e,0x000006de,0x000006e5,0x00050041,0x0000000f,0x000006e7,0x00000126,0x000001a1, + 0x0004003d,0x0000000e,0x000006e8,0x000006e7,0x0003003e,0x000006e6,0x000006e8,0x00050041, + 0x0000000f,0x000006ea,0x00000126,0x00000238,0x0004003d,0x0000000e,0x000006eb,0x000006ea, + 0x0003003e,0x000006e9,0x000006eb,0x0004003d,0x00000006,0x000006ed,0x000006de,0x0003003e, + 0x000006ec,0x000006ed,0x00070039,0x0000000e,0x000006ee,0x00000014,0x000006e6,0x000006e9, + 0x000006ec,0x00050041,0x0000000f,0x000006ef,0x00000126,0x000001a1,0x0003003e,0x000006ef, + 0x000006ee,0x00050041,0x0000000f,0x000006f1,0x00000126,0x000001a1,0x0004003d,0x0000000e, + 0x000006f2,0x000006f1,0x0003003e,0x000006f0,0x000006f2,0x00050039,0x0000000e,0x000006f3, + 0x000000b6,0x000006f0,0x00050041,0x0000000f,0x000006f4,0x00000126,0x000001a1,0x0003003e, + 0x000006f4,0x000006f3,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000012b,0x00000000, + 0x00000105,0x00030037,0x000000fa,0x00000129,0x00030037,0x000000fc,0x0000012a,0x000200f8, + 0x0000012c,0x0004003b,0x00000007,0x000006f5,0x00000007,0x0004003b,0x00000007,0x000006f9, + 0x00000007,0x0004003b,0x00000007,0x000006fb,0x00000007,0x0004003b,0x00000007,0x00000700, + 0x00000007,0x0004003b,0x00000007,0x00000702,0x00000007,0x0004003b,0x00000007,0x00000705, + 0x00000007,0x0004003b,0x00000007,0x00000706,0x00000007,0x0004003b,0x00000007,0x00000708, + 0x00000007,0x0004003b,0x00000007,0x0000070a,0x00000007,0x0004003b,0x00000007,0x0000070c, + 0x00000007,0x0004003b,0x00000007,0x0000070d,0x00000007,0x0004003b,0x00000007,0x0000070f, + 0x00000007,0x0004003b,0x00000007,0x00000712,0x00000007,0x0004003b,0x00000007,0x00000714, + 0x00000007,0x0004003b,0x00000007,0x00000716,0x00000007,0x0004003b,0x00000007,0x00000718, + 0x00000007,0x0004003b,0x00000007,0x0000071a,0x00000007,0x0004003b,0x00000007,0x0000071c, + 0x00000007,0x0004003b,0x00000007,0x0000071e,0x00000007,0x0004003b,0x00000007,0x00000720, + 0x00000007,0x0004003b,0x00000007,0x00000721,0x00000007,0x0004003b,0x00000007,0x00000722, + 0x00000007,0x0004003b,0x0000000f,0x00000725,0x00000007,0x0004003b,0x0000000f,0x0000072d, + 0x00000007,0x0004003b,0x0000000f,0x00000730,0x00000007,0x0004003b,0x0000000f,0x00000732, + 0x00000007,0x0004003b,0x0000000f,0x00000734,0x00000007,0x0004003b,0x0000000f,0x00000741, + 0x00000007,0x0004003b,0x0000000f,0x00000744,0x00000007,0x0004003b,0x00000007,0x0000074b, + 0x00000007,0x0004003b,0x00000007,0x0000074c,0x00000007,0x0004003b,0x00000007,0x0000074e, + 0x00000007,0x0004003b,0x00000007,0x00000757,0x00000007,0x0004003b,0x0000000f,0x0000075a, + 0x00000007,0x0004003b,0x0000000f,0x0000075c,0x00000007,0x0004003b,0x00000007,0x0000075f, + 0x00000007,0x00050051,0x00000006,0x000006f6,0x00000129,0x00000006,0x00050088,0x00000006, + 0x000006f8,0x000006f6,0x000006f7,0x0003003e,0x000006f9,0x000006f8,0x00050039,0x00000006, + 0x000006fa,0x00000018,0x000006f9,0x0003003e,0x000006f5,0x000006fa,0x00050051,0x00000006, + 0x000006fd,0x00000129,0x0000000c,0x00050088,0x00000006,0x000006fe,0x000006fd,0x000006f7, + 0x00050083,0x00000006,0x000006ff,0x000006fc,0x000006fe,0x0003003e,0x00000700,0x000006ff, + 0x00050039,0x00000006,0x00000701,0x00000018,0x00000700,0x0003003e,0x000006fb,0x00000701, + 0x00050051,0x00000006,0x00000703,0x00000129,0x0000000a,0x00050083,0x00000006,0x00000704, + 0x0000014f,0x00000703,0x0003003e,0x00000702,0x00000704,0x00050051,0x00000006,0x00000707, + 0x00000129,0x00000008,0x0003003e,0x00000706,0x00000707,0x0003003e,0x00000708,0x000002ab, + 0x00060039,0x00000006,0x00000709,0x00000053,0x00000706,0x00000708,0x0003003e,0x00000705, + 0x00000709,0x00050051,0x00000006,0x0000070b,0x00000129,0x00000009,0x0003003e,0x0000070a, + 0x0000070b,0x0004003d,0x00000006,0x0000070e,0x00000705,0x0003003e,0x0000070d,0x0000070e, + 0x0004003d,0x00000006,0x00000710,0x0000070a,0x0003003e,0x0000070f,0x00000710,0x00060039, + 0x00000006,0x00000711,0x0000003f,0x0000070d,0x0000070f,0x0004003d,0x00000006,0x00000713, + 0x00000702,0x0003003e,0x00000712,0x00000713,0x0003003e,0x00000714,0x00000711,0x00060039, + 0x00000006,0x00000715,0x0000003f,0x00000712,0x00000714,0x0004003d,0x00000006,0x00000717, + 0x000006fb,0x0003003e,0x00000716,0x00000717,0x0003003e,0x00000718,0x00000715,0x00060039, + 0x00000006,0x00000719,0x0000003f,0x00000716,0x00000718,0x0004003d,0x00000006,0x0000071b, + 0x000006f5,0x0003003e,0x0000071a,0x0000071b,0x0003003e,0x0000071c,0x00000719,0x00060039, + 0x00000006,0x0000071d,0x0000003f,0x0000071a,0x0000071c,0x0003003e,0x0000070c,0x0000071d, + 0x0003003e,0x00000720,0x0000071f,0x0003003e,0x00000721,0x0000014f,0x0004003d,0x00000006, + 0x00000723,0x0000070c,0x0003003e,0x00000722,0x00000723,0x00070039,0x00000006,0x00000724, + 0x0000000c,0x00000720,0x00000721,0x00000722,0x0003003e,0x0000071e,0x00000724,0x00060041, + 0x0000000f,0x00000726,0x0000012a,0x00000191,0x00000238,0x0004003d,0x0000000e,0x00000727, + 0x00000726,0x00050085,0x0000000e,0x0000072a,0x00000727,0x00000729,0x0004003d,0x00000006, + 0x0000072b,0x0000071e,0x0005008e,0x0000000e,0x0000072c,0x0000072a,0x0000072b,0x0003003e, + 0x00000725,0x0000072c,0x0004003d,0x0000000e,0x00000731,0x00000725,0x0003003e,0x00000730, + 0x00000731,0x0003003e,0x00000732,0x0000072f,0x00060039,0x0000000e,0x00000733,0x00000047, + 0x00000730,0x00000732,0x0003003e,0x0000072d,0x00000733,0x00050041,0x0000000f,0x00000735, + 0x0000012a,0x000001a1,0x0004003d,0x0000000e,0x00000736,0x00000735,0x00060041,0x0000000f, + 0x00000737,0x0000012a,0x00000191,0x00000191,0x0004003d,0x0000000e,0x00000738,0x00000737, + 0x00050083,0x0000000e,0x00000739,0x00000736,0x00000738,0x0004003d,0x0000000e,0x0000073a, + 0x0000072d,0x00050088,0x0000000e,0x0000073b,0x00000739,0x0000073a,0x0003003e,0x00000734, + 0x0000073b,0x0004003d,0x0000000e,0x0000073c,0x00000734,0x0006000c,0x00000006,0x0000073d, + 0x00000001,0x00000042,0x0000073c,0x000500ba,0x000000a7,0x0000073e,0x0000073d,0x0000014f, + 0x000300f7,0x00000740,0x00000000,0x000400fa,0x0000073e,0x0000073f,0x00000740,0x000200f8, + 0x0000073f,0x0004003d,0x0000000e,0x00000742,0x00000734,0x0006000c,0x0000000e,0x00000743, + 0x00000001,0x00000045,0x00000742,0x0003003e,0x00000741,0x00000743,0x0004003d,0x0000000e, + 0x00000745,0x00000741,0x0004003d,0x0000000e,0x00000746,0x00000725,0x00050085,0x0000000e, + 0x00000747,0x00000745,0x00000746,0x00060041,0x0000000f,0x00000748,0x0000012a,0x00000191, + 0x00000191,0x0004003d,0x0000000e,0x00000749,0x00000748,0x00050081,0x0000000e,0x0000074a, + 0x00000747,0x00000749,0x0003003e,0x00000744,0x0000074a,0x00050051,0x00000006,0x0000074d, + 0x00000129,0x0000000b,0x0003003e,0x0000074c,0x0000074d,0x00050041,0x00000007,0x0000074f, + 0x0000012a,0x000003ac,0x0004003d,0x00000006,0x00000750,0x0000074f,0x0003003e,0x0000074e, + 0x00000750,0x00060039,0x00000006,0x00000751,0x0000003f,0x0000074c,0x0000074e,0x00050051, + 0x00000006,0x00000752,0x00000129,0x0000000a,0x00050085,0x00000006,0x00000753,0x00000751, + 0x00000752,0x00050051,0x00000006,0x00000754,0x00000129,0x00000007,0x00050083,0x00000006, + 0x00000755,0x0000014f,0x00000754,0x00050085,0x00000006,0x00000756,0x00000753,0x00000755, + 0x0003003e,0x0000074b,0x00000756,0x0004003d,0x00000006,0x00000758,0x0000074b,0x0003003e, + 0x00000757,0x00000758,0x00050039,0x00000006,0x00000759,0x00000018,0x00000757,0x0004003d, + 0x0000000e,0x0000075b,0x00000744,0x0003003e,0x0000075a,0x0000075b,0x00050041,0x0000000f, + 0x0000075d,0x0000012a,0x000001a1,0x0004003d,0x0000000e,0x0000075e,0x0000075d,0x0003003e, + 0x0000075c,0x0000075e,0x0003003e,0x0000075f,0x00000759,0x00070039,0x0000000e,0x00000760, + 0x00000014,0x0000075a,0x0000075c,0x0000075f,0x00050041,0x0000000f,0x00000761,0x0000012a, + 0x000001a1,0x0003003e,0x00000761,0x00000760,0x000200f9,0x00000740,0x000200f8,0x00000740, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x00000130,0x00000000,0x0000012d,0x00030037, + 0x0000011c,0x0000012e,0x00030037,0x000000fc,0x0000012f,0x000200f8,0x00000131,0x0004003b, + 0x00000007,0x0000076b,0x00000007,0x0004003b,0x00000007,0x0000076c,0x00000007,0x0004003b, + 0x00000007,0x00000770,0x00000007,0x0004003b,0x00000007,0x00000773,0x00000007,0x0004003b, + 0x00000007,0x00000777,0x00000007,0x0004003b,0x00000007,0x00000778,0x00000007,0x0004003b, + 0x00000007,0x0000077f,0x00000007,0x0004003b,0x00000007,0x00000780,0x00000007,0x0004003b, + 0x00000007,0x00000786,0x00000007,0x0004003b,0x00000007,0x00000789,0x00000007,0x0004003b, + 0x00000007,0x0000078c,0x00000007,0x0004003b,0x0000006d,0x0000078d,0x00000007,0x0004003b, + 0x00000007,0x00000794,0x00000007,0x0004003b,0x00000007,0x00000795,0x00000007,0x0004003b, + 0x00000007,0x0000079f,0x00000007,0x0004003b,0x00000007,0x000007a0,0x00000007,0x0004003b, + 0x00000007,0x000007a2,0x00000007,0x0004003b,0x00000007,0x000007a3,0x00000007,0x0004003b, + 0x00000007,0x000007a6,0x00000007,0x0004003b,0x00000007,0x000007b1,0x00000007,0x0004003b, + 0x00000007,0x000007b2,0x00000007,0x0004003b,0x0000001b,0x000007b5,0x00000007,0x0004003b, + 0x0000001b,0x000007bb,0x00000007,0x00050041,0x000000a8,0x00000762,0x0000012e,0x000003d3, + 0x0004003d,0x000000a7,0x00000763,0x00000762,0x000500a4,0x000000a7,0x00000765,0x00000763, + 0x00000764,0x000600a9,0x00000006,0x00000766,0x00000765,0x0000014f,0x0000014e,0x00050041, + 0x00000007,0x00000767,0x0000012f,0x000003ab,0x0004003d,0x00000006,0x00000768,0x00000767, + 0x00050085,0x00000006,0x00000769,0x00000768,0x00000766,0x00050041,0x00000007,0x0000076a, + 0x0000012f,0x000003ab,0x0003003e,0x0000076a,0x00000769,0x00050041,0x00000007,0x0000076d, + 0x0000012e,0x000003bf,0x0004003d,0x00000006,0x0000076e,0x0000076d,0x0003003e,0x0000076c, + 0x0000076e,0x00050039,0x00000006,0x0000076f,0x00000018,0x0000076c,0x00050041,0x00000007, + 0x00000771,0x0000012e,0x000003be,0x0004003d,0x00000006,0x00000772,0x00000771,0x0003003e, + 0x00000770,0x00000772,0x00050041,0x00000007,0x00000774,0x0000012e,0x000001a6,0x0004003d, + 0x00000006,0x00000775,0x00000774,0x0003003e,0x00000773,0x00000775,0x00060039,0x00000006, + 0x00000776,0x0000003f,0x00000770,0x00000773,0x0003003e,0x00000777,0x0000076f,0x0003003e, + 0x00000778,0x00000776,0x00060039,0x00000006,0x00000779,0x0000003f,0x00000777,0x00000778, + 0x0003003e,0x0000076b,0x00000779,0x00050041,0x00000007,0x0000077a,0x0000012f,0x000003ab, + 0x0004003d,0x00000006,0x0000077b,0x0000077a,0x0004003d,0x00000006,0x0000077c,0x0000076b, + 0x00050085,0x00000006,0x0000077d,0x0000077c,0x00000340,0x00050083,0x00000006,0x0000077e, + 0x0000077b,0x0000077d,0x0003003e,0x0000077f,0x0000014e,0x0003003e,0x00000780,0x0000077e, + 0x00060039,0x00000006,0x00000781,0x0000003f,0x0000077f,0x00000780,0x00050041,0x00000007, + 0x00000782,0x0000012f,0x000003ab,0x0003003e,0x00000782,0x00000781,0x00050041,0x00000007, + 0x00000783,0x0000012f,0x000003ab,0x0004003d,0x00000006,0x00000784,0x00000783,0x00050083, + 0x00000006,0x00000785,0x00000784,0x0000014f,0x0003003e,0x00000786,0x00000785,0x00050039, + 0x00000006,0x00000787,0x00000018,0x00000786,0x00050085,0x00000006,0x00000788,0x00000787, + 0x0000014f,0x0003003e,0x00000789,0x00000788,0x00050039,0x00000006,0x0000078a,0x00000018, + 0x00000789,0x00050041,0x00000007,0x0000078b,0x0000012f,0x000003ac,0x0003003e,0x0000078b, + 0x0000078a,0x00050041,0x0000006d,0x0000078e,0x0000012e,0x00000191,0x0004003d,0x00000055, + 0x0000078f,0x0000078e,0x0003003e,0x0000078d,0x0000078f,0x00050039,0x00000006,0x00000790, + 0x0000008b,0x0000078d,0x00050041,0x00000007,0x00000791,0x0000012e,0x000003bf,0x0004003d, + 0x00000006,0x00000792,0x00000791,0x00050085,0x00000006,0x00000793,0x00000792,0x0000014e, + 0x0003003e,0x00000794,0x00000793,0x00050041,0x00000007,0x00000796,0x0000012e,0x000003be, + 0x0004003d,0x00000006,0x00000797,0x00000796,0x0003003e,0x00000795,0x00000797,0x00060039, + 0x00000006,0x00000798,0x0000003f,0x00000794,0x00000795,0x00050083,0x00000006,0x00000799, + 0x0000014f,0x00000798,0x00050085,0x00000006,0x0000079a,0x00000790,0x00000799,0x0003003e, + 0x0000078c,0x0000079a,0x00050041,0x00000007,0x0000079b,0x0000012f,0x000003ab,0x0004003d, + 0x00000006,0x0000079c,0x0000079b,0x0004003d,0x00000006,0x0000079d,0x0000078c,0x00050081, + 0x00000006,0x0000079e,0x0000079c,0x0000079d,0x0003003e,0x0000079f,0x0000079e,0x0003003e, + 0x000007a0,0x00000340,0x00060039,0x00000006,0x000007a1,0x00000023,0x0000079f,0x000007a0, + 0x0003003e,0x000007a2,0x0000014e,0x0003003e,0x000007a3,0x000007a1,0x00060039,0x00000006, + 0x000007a4,0x0000003f,0x000007a2,0x000007a3,0x00050041,0x00000007,0x000007a5,0x0000012f, + 0x000003ab,0x0003003e,0x000007a5,0x000007a4,0x00040039,0x00000006,0x000007a8,0x00000065, + 0x00050088,0x00000006,0x000007a9,0x000007a7,0x000007a8,0x0004003d,0x00000006,0x000007aa, + 0x0000076b,0x00050083,0x00000006,0x000007ab,0x0000014f,0x000007aa,0x00050085,0x00000006, + 0x000007ac,0x000007a9,0x000007ab,0x0003003e,0x000007a6,0x000007ac,0x00050041,0x00000007, + 0x000007ad,0x0000012f,0x000003ab,0x0004003d,0x00000006,0x000007ae,0x000007ad,0x0004003d, + 0x00000006,0x000007af,0x000007a6,0x00050083,0x00000006,0x000007b0,0x000007ae,0x000007af, + 0x0003003e,0x000007b1,0x0000014e,0x0003003e,0x000007b2,0x000007b0,0x00060039,0x00000006, + 0x000007b3,0x0000003f,0x000007b1,0x000007b2,0x00050041,0x00000007,0x000007b4,0x0000012f, + 0x000003ab,0x0003003e,0x000007b4,0x000007b3,0x00050041,0x0000001b,0x000007b6,0x0000012e, + 0x00000238,0x0004003d,0x0000001a,0x000007b7,0x000007b6,0x00050041,0x0000001b,0x000007b8, + 0x0000012e,0x00000197,0x0004003d,0x0000001a,0x000007b9,0x000007b8,0x00050083,0x0000001a, + 0x000007ba,0x000007b7,0x000007b9,0x0003003e,0x000007b5,0x000007ba,0x0004003d,0x0000001a, + 0x000007bc,0x000007b5,0x0003003e,0x000007bb,0x000007bc,0x00050039,0x000000a7,0x000007bd, + 0x000000bd,0x000007bb,0x000500a4,0x000000a7,0x000007bf,0x000007bd,0x000007be,0x000600a9, + 0x00000006,0x000007c0,0x000007bf,0x0000014f,0x0000014e,0x00050041,0x00000007,0x000007c1, + 0x0000012f,0x000003ab,0x0004003d,0x00000006,0x000007c2,0x000007c1,0x00050085,0x00000006, + 0x000007c3,0x000007c2,0x000007c0,0x00050041,0x00000007,0x000007c4,0x0000012f,0x000003ab, + 0x0003003e,0x000007c4,0x000007c3,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000134, + 0x00000000,0x00000105,0x00030037,0x000000fa,0x00000132,0x00030037,0x000000fc,0x00000133, + 0x000200f8,0x00000135,0x0004003b,0x00000007,0x000007c5,0x00000007,0x0004003b,0x00000007, + 0x000007cc,0x00000007,0x0004003b,0x00000007,0x000007cd,0x00000007,0x0004003b,0x00000007, + 0x000007cf,0x00000007,0x0004003b,0x00000007,0x000007d1,0x00000007,0x0004003b,0x00000007, + 0x000007d3,0x00000007,0x0004003b,0x00000007,0x000007d4,0x00000007,0x0004003b,0x00000007, + 0x000007d6,0x00000007,0x0004003b,0x00000007,0x000007d8,0x00000007,0x00050051,0x00000006, + 0x000007c6,0x00000132,0x0000000a,0x0003003e,0x000007c5,0x000007c6,0x00050051,0x00000006, + 0x000007c8,0x00000132,0x00000006,0x00040039,0x00000006,0x000007c9,0x0000006b,0x00050085, + 0x00000006,0x000007ca,0x000007c8,0x000007c9,0x00050088,0x00000006,0x000007cb,0x000007ca, + 0x000002ab,0x0003003e,0x000007cc,0x0000014e,0x0003003e,0x000007cd,0x000007cb,0x00060039, + 0x00000006,0x000007ce,0x0000003f,0x000007cc,0x000007cd,0x0003003e,0x000007cf,0x000007ce, + 0x00050039,0x00000006,0x000007d0,0x00000018,0x000007cf,0x0004003d,0x00000006,0x000007d2, + 0x000007c5,0x0003003e,0x000007d1,0x000007d2,0x0003003e,0x000007d3,0x000007c7,0x0003003e, + 0x000007d4,0x000007d0,0x00070039,0x00000006,0x000007d5,0x0000000c,0x000007d1,0x000007d3, + 0x000007d4,0x0004003d,0x00000006,0x000007d7,0x000007c5,0x0003003e,0x000007d6,0x000007d7, + 0x0003003e,0x000007d8,0x000007d5,0x00060039,0x00000006,0x000007d9,0x00000023,0x000007d6, + 0x000007d8,0x0003003e,0x000007c5,0x000007d9,0x0004003d,0x00000006,0x000007da,0x000007c5, + 0x00050041,0x00000007,0x000007db,0x00000133,0x00000197,0x0003003e,0x000007db,0x000007da, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x0000013a,0x00000000,0x00000136,0x00030037, + 0x0000006d,0x00000137,0x00030037,0x0000011c,0x00000138,0x00030037,0x000000fc,0x00000139, + 0x000200f8,0x0000013b,0x0004003b,0x0000001b,0x000007de,0x00000007,0x0004003b,0x0000001b, + 0x000007f1,0x00000007,0x0004003b,0x0000006d,0x000007f4,0x00000007,0x0004003b,0x0000006d, + 0x000007f5,0x00000007,0x0004003b,0x0000006d,0x000007f8,0x00000007,0x0004003b,0x0000001b, + 0x000007fa,0x00000007,0x0004003b,0x0000001b,0x000007fe,0x00000007,0x0004003b,0x0000011c, + 0x00000803,0x00000007,0x0004003b,0x0000001b,0x00000807,0x00000007,0x0004003b,0x0000001b, + 0x0000080a,0x00000007,0x0004003b,0x0000006d,0x0000080c,0x00000007,0x0004003b,0x0000006d, + 0x0000080d,0x00000007,0x0004003b,0x0000001b,0x0000080f,0x00000007,0x0004003b,0x0000001b, + 0x00000813,0x00000007,0x0004003b,0x0000001b,0x00000818,0x00000007,0x0004003b,0x0000006d, + 0x0000081b,0x00000007,0x0004003b,0x0000006d,0x0000081c,0x00000007,0x0004003b,0x0000001b, + 0x0000081e,0x00000007,0x0004003b,0x00000030,0x0000082c,0x00000007,0x0004003b,0x0000001b, + 0x0000082d,0x00000007,0x0004003b,0x00000007,0x00000831,0x00000007,0x0004003b,0x00000007, + 0x00000836,0x00000007,0x0004003b,0x00000007,0x0000083b,0x00000007,0x0004003b,0x00000007, + 0x00000840,0x00000007,0x0004003d,0x00000055,0x000007dc,0x00000137,0x00050041,0x0000006d, + 0x000007dd,0x00000138,0x00000191,0x0003003e,0x000007dd,0x000007dc,0x0004003d,0x00000055, + 0x000007df,0x00000137,0x0004006f,0x0000001a,0x000007e0,0x000007df,0x00050050,0x0000001a, + 0x000007e1,0x000002ab,0x000002ab,0x00050081,0x0000001a,0x000007e2,0x000007e0,0x000007e1, + 0x00040039,0x00000055,0x000007e3,0x0000005b,0x0004006f,0x0000001a,0x000007e4,0x000007e3, + 0x00050088,0x0000001a,0x000007e5,0x000007e2,0x000007e4,0x0003003e,0x000007de,0x000007e5, + 0x0004003d,0x0000001a,0x000007e6,0x000007de,0x00050041,0x0000001b,0x000007e7,0x00000138, + 0x00000238,0x0003003e,0x000007e7,0x000007e6,0x0004003d,0x0000001a,0x000007e8,0x000007de, + 0x00040039,0x0000001a,0x000007e9,0x00000060,0x00040039,0x00000055,0x000007ea,0x00000057, + 0x0004006f,0x0000001a,0x000007eb,0x000007ea,0x00050088,0x0000001a,0x000007ec,0x000007e9, + 0x000007eb,0x00050081,0x0000001a,0x000007ed,0x000007e8,0x000007ec,0x00050041,0x0000001b, + 0x000007ee,0x00000138,0x0000019c,0x0003003e,0x000007ee,0x000007ed,0x00040039,0x00000055, + 0x000007ef,0x00000057,0x00040039,0x00000055,0x000007f0,0x00000059,0x00050041,0x0000001b, + 0x000007f2,0x00000138,0x0000019c,0x0004003d,0x0000001a,0x000007f3,0x000007f2,0x0003003e, + 0x000007f1,0x000007f3,0x0003003e,0x000007f4,0x000007ef,0x0003003e,0x000007f5,0x000007f0, + 0x00070039,0x0000001a,0x000007f6,0x000000c9,0x000007f1,0x000007f4,0x000007f5,0x00050041, + 0x0000001b,0x000007f7,0x00000138,0x000001a1,0x0003003e,0x000007f7,0x000007f6,0x0004003d, + 0x00000055,0x000007f9,0x00000137,0x0003003e,0x000007f8,0x000007f9,0x0004003d,0x0000001a, + 0x000007fb,0x000007de,0x0003003e,0x000007fa,0x000007fb,0x00060039,0x0000001a,0x000007fc, + 0x0000011a,0x000007f8,0x000007fa,0x00050041,0x0000001b,0x000007fd,0x00000138,0x00000197, + 0x0003003e,0x000007fd,0x000007fc,0x00050041,0x0000001b,0x000007ff,0x00000138,0x00000197, + 0x0004003d,0x0000001a,0x00000800,0x000007ff,0x0003003e,0x000007fe,0x00000800,0x00050039, + 0x00000006,0x00000801,0x0000009d,0x000007fe,0x00050041,0x00000007,0x00000802,0x00000138, + 0x000003ac,0x0003003e,0x00000802,0x00000801,0x0004003d,0x000000fa,0x00000804,0x00000138, + 0x0003003e,0x00000803,0x00000804,0x00050039,0x00000002,0x00000805,0x0000011f,0x00000803, + 0x0004003d,0x000000fa,0x00000806,0x00000803,0x0003003e,0x00000138,0x00000806,0x00040039, + 0x00000055,0x00000808,0x00000057,0x00040039,0x00000055,0x00000809,0x00000059,0x0004003d, + 0x0000001a,0x0000080b,0x000007de,0x0003003e,0x0000080a,0x0000080b,0x0003003e,0x0000080c, + 0x00000808,0x0003003e,0x0000080d,0x00000809,0x00070039,0x0000001a,0x0000080e,0x000000c9, + 0x0000080a,0x0000080c,0x0000080d,0x0003003e,0x00000807,0x0000080e,0x0004003d,0x0000001a, + 0x00000810,0x00000807,0x0003003e,0x0000080f,0x00000810,0x00050039,0x00000006,0x00000811, + 0x00000087,0x0000080f,0x00050041,0x00000007,0x00000812,0x00000138,0x000003c0,0x0003003e, + 0x00000812,0x00000811,0x00040039,0x00000055,0x00000814,0x00000057,0x00050050,0x00000055, + 0x00000815,0x0000019c,0x0000019c,0x00050087,0x00000055,0x00000816,0x00000814,0x00000815, + 0x00040039,0x00000055,0x00000817,0x00000080,0x00050041,0x0000001b,0x00000819,0x00000138, + 0x0000019c,0x0004003d,0x0000001a,0x0000081a,0x00000819,0x0003003e,0x00000818,0x0000081a, + 0x0003003e,0x0000081b,0x00000816,0x0003003e,0x0000081c,0x00000817,0x00070039,0x0000001a, + 0x0000081d,0x000000c9,0x00000818,0x0000081b,0x0000081c,0x0003003e,0x00000813,0x0000081d, + 0x0004003d,0x0000001a,0x0000081f,0x00000813,0x0003003e,0x0000081e,0x0000081f,0x00050039, + 0x00000006,0x00000820,0x00000084,0x0000081e,0x00050041,0x00000007,0x00000821,0x00000138, + 0x000003d2,0x0003003e,0x00000821,0x00000820,0x00050041,0x000000a8,0x00000822,0x00000138, + 0x000001b1,0x0004003d,0x000000a7,0x00000823,0x00000822,0x000500a4,0x000000a7,0x00000824, + 0x00000823,0x00000764,0x000400a8,0x000000a7,0x00000825,0x00000824,0x000300f7,0x00000827, + 0x00000000,0x000400fa,0x00000825,0x00000826,0x00000827,0x000200f8,0x00000826,0x00040039, + 0x00000006,0x00000828,0x00000069,0x000500b4,0x000000a7,0x00000829,0x0000014e,0x00000828, + 0x000200f9,0x00000827,0x000200f8,0x00000827,0x000700f5,0x000000a7,0x0000082a,0x00000824, + 0x0000013b,0x00000829,0x00000826,0x00050041,0x000000a8,0x0000082b,0x00000138,0x000003d3, + 0x0003003e,0x0000082b,0x0000082a,0x00050041,0x0000001b,0x0000082e,0x00000138,0x000001a1, + 0x0004003d,0x0000001a,0x0000082f,0x0000082e,0x0003003e,0x0000082d,0x0000082f,0x00050039, + 0x0000002f,0x00000830,0x0000009a,0x0000082d,0x0003003e,0x0000082c,0x00000830,0x00050041, + 0x00000007,0x00000832,0x0000082c,0x000001f4,0x0004003d,0x00000006,0x00000833,0x00000832, + 0x0003003e,0x00000831,0x00000833,0x00050039,0x00000006,0x00000834,0x00000018,0x00000831, + 0x00050041,0x00000007,0x00000835,0x00000138,0x000003be,0x0003003e,0x00000835,0x00000834, + 0x00050041,0x00000007,0x00000837,0x0000082c,0x0000028d,0x0004003d,0x00000006,0x00000838, + 0x00000837,0x0003003e,0x00000836,0x00000838,0x00050039,0x00000006,0x00000839,0x00000018, + 0x00000836,0x00050041,0x00000007,0x0000083a,0x00000138,0x000001a6,0x0003003e,0x0000083a, + 0x00000839,0x00050041,0x00000007,0x0000083c,0x0000082c,0x00000291,0x0004003d,0x00000006, + 0x0000083d,0x0000083c,0x0003003e,0x0000083b,0x0000083d,0x00050039,0x00000006,0x0000083e, + 0x00000018,0x0000083b,0x00050041,0x00000007,0x0000083f,0x00000138,0x000003bf,0x0003003e, + 0x0000083f,0x0000083e,0x00050041,0x00000007,0x00000841,0x0000082c,0x000006c9,0x0004003d, + 0x00000006,0x00000842,0x00000841,0x0003003e,0x00000840,0x00000842,0x00050039,0x00000006, + 0x00000843,0x00000018,0x00000840,0x00050041,0x00000007,0x00000844,0x00000138,0x000001ac, + 0x0003003e,0x00000844,0x00000843,0x00050041,0x00000007,0x00000845,0x00000138,0x000001ac, + 0x0004003d,0x00000006,0x00000846,0x00000845,0x00050085,0x00000006,0x00000848,0x00000846, + 0x00000847,0x0006000c,0x00000006,0x00000849,0x00000001,0x00000001,0x00000848,0x000500ba, + 0x000000a7,0x0000084a,0x00000849,0x0000014f,0x000600a9,0x00000006,0x0000084b,0x0000084a, + 0x0000014f,0x0000014e,0x00050041,0x00000007,0x0000084c,0x00000138,0x000001ac,0x0004003d, + 0x00000006,0x0000084d,0x0000084c,0x00050085,0x00000006,0x0000084e,0x0000084d,0x0000084b, + 0x00050041,0x00000007,0x0000084f,0x00000138,0x000001ac,0x0003003e,0x0000084f,0x0000084e, + 0x00050041,0x0000000f,0x00000850,0x00000139,0x00000238,0x0003003e,0x00000850,0x00000466, + 0x00050041,0x0000000f,0x00000851,0x00000139,0x000001a1,0x0003003e,0x00000851,0x00000466, + 0x00050041,0x00000007,0x00000852,0x00000139,0x00000197,0x0003003e,0x00000852,0x0000014f, + 0x00050041,0x00000007,0x00000853,0x00000139,0x0000019c,0x0003003e,0x00000853,0x0000014e, + 0x00050041,0x00000007,0x00000854,0x00000139,0x000003ab,0x0003003e,0x00000854,0x0000014e, + 0x00050041,0x00000007,0x00000855,0x00000139,0x000003ac,0x0003003e,0x00000855,0x0000014e, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x0000013e,0x00000000,0x0000013c,0x00030037, + 0x0000006d,0x0000013d,0x000200f8,0x0000013f,0x0004003b,0x0000011c,0x00000856,0x00000007, + 0x0004003b,0x000000fc,0x00000857,0x00000007,0x0004003b,0x0000006d,0x00000858,0x00000007, + 0x0004003b,0x0000011c,0x0000085a,0x00000007,0x0004003b,0x000000fc,0x0000085c,0x00000007, + 0x0004003b,0x000000fc,0x0000086c,0x00000007,0x0004003b,0x0000011c,0x00000870,0x00000007, + 0x0004003b,0x000000fc,0x00000872,0x00000007,0x0004003b,0x000000fc,0x00000877,0x00000007, + 0x0004003b,0x000000fc,0x0000087c,0x00000007,0x0004003b,0x000000fc,0x00000881,0x00000007, + 0x0004003b,0x000000fc,0x00000886,0x00000007,0x0004003b,0x0000000f,0x00000890,0x00000007, + 0x0004003b,0x0000000f,0x00000893,0x00000007,0x0004003b,0x0000006d,0x0000089e,0x00000007, + 0x0004003b,0x00000030,0x000008a0,0x00000007,0x0004003b,0x0000006d,0x000008a2,0x00000007, + 0x0004003b,0x0000000f,0x000008a4,0x00000007,0x0004003b,0x0000006d,0x000008a8,0x00000007, + 0x0004003b,0x00000007,0x000008aa,0x00000007,0x0004003d,0x00000055,0x00000859,0x0000013d, + 0x0003003e,0x00000858,0x00000859,0x0004003d,0x000000fa,0x0000085b,0x00000856,0x0003003e, + 0x0000085a,0x0000085b,0x0004003d,0x000000fb,0x0000085d,0x00000857,0x0003003e,0x0000085c, + 0x0000085d,0x00070039,0x00000002,0x0000085e,0x0000013a,0x00000858,0x0000085a,0x0000085c, + 0x0004003d,0x000000fa,0x0000085f,0x0000085a,0x0003003e,0x00000856,0x0000085f,0x0004003d, + 0x000000fb,0x00000860,0x0000085c,0x0003003e,0x00000857,0x00000860,0x00050041,0x000000a8, + 0x00000861,0x00000856,0x000001b1,0x0004003d,0x000000a7,0x00000862,0x00000861,0x000300f7, + 0x00000864,0x00000000,0x000400fa,0x00000862,0x00000863,0x00000864,0x000200f8,0x00000863, + 0x00050041,0x000000a8,0x00000865,0x00000856,0x000003d3,0x0004003d,0x000000a7,0x00000866, + 0x00000865,0x000400a8,0x000000a7,0x00000867,0x00000866,0x000200f9,0x00000864,0x000200f8, + 0x00000864,0x000700f5,0x000000a7,0x00000868,0x00000862,0x0000013f,0x00000867,0x00000863, + 0x000300f7,0x0000086a,0x00000000,0x000400fa,0x00000868,0x00000869,0x0000086a,0x000200f8, + 0x00000869,0x0004003d,0x000000fa,0x0000086b,0x00000856,0x0004003d,0x000000fb,0x0000086d, + 0x00000857,0x0003003e,0x0000086c,0x0000086d,0x00060039,0x00000002,0x0000086e,0x00000123, + 0x0000086b,0x0000086c,0x0004003d,0x000000fb,0x0000086f,0x0000086c,0x0003003e,0x00000857, + 0x0000086f,0x000200f9,0x0000086a,0x000200f8,0x0000086a,0x0004003d,0x000000fa,0x00000871, + 0x00000856,0x0003003e,0x00000870,0x00000871,0x0004003d,0x000000fb,0x00000873,0x00000857, + 0x0003003e,0x00000872,0x00000873,0x00060039,0x00000002,0x00000874,0x00000130,0x00000870, + 0x00000872,0x0004003d,0x000000fb,0x00000875,0x00000872,0x0003003e,0x00000857,0x00000875, + 0x0004003d,0x000000fa,0x00000876,0x00000856,0x0004003d,0x000000fb,0x00000878,0x00000857, + 0x0003003e,0x00000877,0x00000878,0x00060039,0x00000002,0x00000879,0x00000134,0x00000876, + 0x00000877,0x0004003d,0x000000fb,0x0000087a,0x00000877,0x0003003e,0x00000857,0x0000087a, + 0x0004003d,0x000000fa,0x0000087b,0x00000856,0x0004003d,0x000000fb,0x0000087d,0x00000857, + 0x0003003e,0x0000087c,0x0000087d,0x00060039,0x00000002,0x0000087e,0x00000108,0x0000087b, + 0x0000087c,0x0004003d,0x000000fb,0x0000087f,0x0000087c,0x0003003e,0x00000857,0x0000087f, + 0x0004003d,0x000000fa,0x00000880,0x00000856,0x0004003d,0x000000fb,0x00000882,0x00000857, + 0x0003003e,0x00000881,0x00000882,0x00060039,0x00000002,0x00000883,0x0000012b,0x00000880, + 0x00000881,0x0004003d,0x000000fb,0x00000884,0x00000881,0x0003003e,0x00000857,0x00000884, + 0x0004003d,0x000000fa,0x00000885,0x00000856,0x0004003d,0x000000fb,0x00000887,0x00000857, + 0x0003003e,0x00000886,0x00000887,0x00060039,0x00000002,0x00000888,0x00000127,0x00000885, + 0x00000886,0x0004003d,0x000000fb,0x00000889,0x00000886,0x0003003e,0x00000857,0x00000889, + 0x00040039,0x00000006,0x0000088a,0x00000096,0x00050041,0x0000000f,0x0000088b,0x00000857, + 0x000001a1,0x0004003d,0x0000000e,0x0000088c,0x0000088b,0x00060050,0x0000000e,0x0000088d, + 0x0000088a,0x0000088a,0x0000088a,0x00050088,0x0000000e,0x0000088e,0x0000088c,0x0000088d, + 0x00050041,0x0000000f,0x0000088f,0x00000857,0x000001a1,0x0003003e,0x0000088f,0x0000088e, + 0x00050041,0x0000000f,0x00000891,0x00000857,0x000001a1,0x0004003d,0x0000000e,0x00000892, + 0x00000891,0x0003003e,0x00000890,0x00000892,0x0003003e,0x00000893,0x00000466,0x00060039, + 0x0000000e,0x00000894,0x00000047,0x00000890,0x00000893,0x00050041,0x0000000f,0x00000895, + 0x00000857,0x000001a1,0x0003003e,0x00000895,0x00000894,0x00050041,0x0000000f,0x00000896, + 0x00000857,0x000001a1,0x0004003d,0x0000000e,0x00000897,0x00000896,0x00050041,0x00000007, + 0x00000898,0x00000857,0x000003ab,0x0004003d,0x00000006,0x00000899,0x00000898,0x00050051, + 0x00000006,0x0000089a,0x00000897,0x00000000,0x00050051,0x00000006,0x0000089b,0x00000897, + 0x00000001,0x00050051,0x00000006,0x0000089c,0x00000897,0x00000002,0x00070050,0x0000002f, + 0x0000089d,0x0000089a,0x0000089b,0x0000089c,0x00000899,0x0004003d,0x00000055,0x0000089f, + 0x0000013d,0x0003003e,0x0000089e,0x0000089f,0x0003003e,0x000008a0,0x0000089d,0x00060039, + 0x00000002,0x000008a1,0x00000079,0x0000089e,0x000008a0,0x0004003d,0x00000055,0x000008a3, + 0x0000013d,0x0003003e,0x000008a2,0x000008a3,0x00050041,0x0000000f,0x000008a5,0x00000857, + 0x000001a1,0x0004003d,0x0000000e,0x000008a6,0x000008a5,0x0003003e,0x000008a4,0x000008a6, + 0x00060039,0x00000002,0x000008a7,0x0000007e,0x000008a2,0x000008a4,0x0004003d,0x00000055, + 0x000008a9,0x0000013d,0x0003003e,0x000008a8,0x000008a9,0x0003003e,0x000008aa,0x0000014e, + 0x00060039,0x00000002,0x000008ab,0x00000090,0x000008a8,0x000008aa,0x000100fd,0x00010038 }; diff --git a/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h b/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h index 9170ff3c1..b3b81e700 100644 --- a/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h +++ b/gpu/vk/shaders/fsr3_accumulate_sharpen_comp_spv.h @@ -1,10 +1,10 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_ACCUMULATE_SHARPEN_COMP_SPV[] = { - 0x07230203,0x00010300,0x0008000b,0x00000912,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010300,0x0008000b,0x000008ae,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x00020011,0x00000032,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e, 0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d, - 0x00000000,0x000008fd,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001, + 0x00000000,0x00000899,0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001, 0x00030003,0x00000002,0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265, 0x745f7373,0x75747865,0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47, 0x735f5458,0x65646168,0x78655f72,0x63696c70,0x615f7469,0x68746972,0x6974656d,0x79745f63, @@ -84,1897 +84,1815 @@ const uint32_t FSR3_ACCUMULATE_SHARPEN_COMP_SPV[] = { 0x63696669,0x6f697461,0x786f426e,0x00000000,0x00060005,0x000000b1,0x436f4359,0x526f5467, 0x76284247,0x003b3366,0x00040005,0x000000b0,0x6f435966,0x00006743,0x00060005,0x000000b4, 0x54424752,0x6f43596f,0x76286743,0x003b3366,0x00040005,0x000000b3,0x62675266,0x00000000, - 0x00060005,0x000000b7,0x656e6f54,0x2870616d,0x3b336676,0x00000000,0x00040005,0x000000b6, - 0x62675266,0x00000000,0x00070005,0x000000ba,0x65766e49,0x54657372,0x6d656e6f,0x76287061, - 0x003b3366,0x00040005,0x000000b9,0x62675266,0x00000000,0x00060005,0x000000be,0x76557349, - 0x69736e49,0x76286564,0x003b3266,0x00030005,0x000000bd,0x00765566,0x00080005,0x000000c4, - 0x6d616c43,0x616f4c70,0x69762864,0x69763b32,0x69763b32,0x00003b32,0x00050005,0x000000c1, - 0x53785069,0x6c706d61,0x00000065,0x00050005,0x000000c2,0x4f785069,0x65736666,0x00000074, - 0x00060005,0x000000c3,0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005,0x000000ca, - 0x6d616c43,0x28765570,0x3b326676,0x3b326976,0x3b326976,0x00000000,0x00030005,0x000000c7, - 0x00765566,0x00060005,0x000000c8,0x78655469,0x65727574,0x657a6953,0x00000000,0x00060005, - 0x000000c9,0x73655269,0x6372756f,0x7a695365,0x00000065,0x00070005,0x000000cf,0x6e4f7349, - 0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005,0x000000cd,0x00736f70,0x00040005, - 0x000000ce,0x657a6973,0x00000000,0x00070005,0x000000d2,0x636e614c,0x32736f7a,0x6c436f4e, - 0x28706d61,0x003b3166,0x00030005,0x000000d1,0x00000078,0x00060005,0x000000d5,0x636e614c, - 0x32736f7a,0x3b316628,0x00000000,0x00030005,0x000000d4,0x00000078,0x00090005,0x000000d8, - 0x636e614c,0x32736f7a,0x72707041,0x7153786f,0x6c436f4e,0x28706d61,0x003b3166,0x00030005, - 0x000000d7,0x00003278,0x00080005,0x000000db,0x636e614c,0x32736f7a,0x72707041,0x7153786f, - 0x3b316628,0x00000000,0x00030005,0x000000da,0x00003278,0x000a0005,0x000000e3,0x636e614c, - 0x32736f7a,0x34667628,0x3466763b,0x3466763b,0x3466763b,0x3b31663b,0x00000000,0x00040005, - 0x000000de,0x6c6f4366,0x0030726f,0x00040005,0x000000df,0x6c6f4366,0x0031726f,0x00040005, - 0x000000e0,0x6c6f4366,0x0032726f,0x00040005,0x000000e1,0x6c6f4366,0x0033726f,0x00030005, - 0x000000e2,0x00000074,0x00080005,0x000000e5,0x63746546,0x42646568,0x62756369,0x61536369, - 0x656c706d,0x00000073,0x00060006,0x000000e5,0x00000000,0x6c6f4366,0x3030726f,0x00000000, - 0x00060006,0x000000e5,0x00000001,0x6c6f4366,0x3031726f,0x00000000,0x00060006,0x000000e5, - 0x00000002,0x6c6f4366,0x3032726f,0x00000000,0x00060006,0x000000e5,0x00000003,0x6c6f4366, - 0x3033726f,0x00000000,0x00060006,0x000000e5,0x00000004,0x6c6f4366,0x3130726f,0x00000000, - 0x00060006,0x000000e5,0x00000005,0x6c6f4366,0x3131726f,0x00000000,0x00060006,0x000000e5, - 0x00000006,0x6c6f4366,0x3132726f,0x00000000,0x00060006,0x000000e5,0x00000007,0x6c6f4366, - 0x3133726f,0x00000000,0x00060006,0x000000e5,0x00000008,0x6c6f4366,0x3230726f,0x00000000, - 0x00060006,0x000000e5,0x00000009,0x6c6f4366,0x3231726f,0x00000000,0x00060006,0x000000e5, - 0x0000000a,0x6c6f4366,0x3232726f,0x00000000,0x00060006,0x000000e5,0x0000000b,0x6c6f4366, - 0x3233726f,0x00000000,0x00060006,0x000000e5,0x0000000c,0x6c6f4366,0x3330726f,0x00000000, - 0x00060006,0x000000e5,0x0000000d,0x6c6f4366,0x3331726f,0x00000000,0x00060006,0x000000e5, - 0x0000000e,0x6c6f4366,0x3332726f,0x00000000,0x00060006,0x000000e5,0x0000000f,0x6c6f4366, - 0x3333726f,0x00000000,0x001d0005,0x000000ea,0x636e614c,0x32736f7a,0x72747328,0x2d746375, - 0x63746546,0x42646568,0x62756369,0x61536369,0x656c706d,0x66762d73,0x66762d34,0x66762d34, + 0x00060005,0x000000b8,0x76557349,0x69736e49,0x76286564,0x003b3266,0x00030005,0x000000b7, + 0x00765566,0x00080005,0x000000be,0x6d616c43,0x616f4c70,0x69762864,0x69763b32,0x69763b32, + 0x00003b32,0x00050005,0x000000bb,0x53785069,0x6c706d61,0x00000065,0x00050005,0x000000bc, + 0x4f785069,0x65736666,0x00000074,0x00060005,0x000000bd,0x78655469,0x65727574,0x657a6953, + 0x00000000,0x00080005,0x000000c4,0x6d616c43,0x28765570,0x3b326676,0x3b326976,0x3b326976, + 0x00000000,0x00030005,0x000000c1,0x00765566,0x00060005,0x000000c2,0x78655469,0x65727574, + 0x657a6953,0x00000000,0x00060005,0x000000c3,0x73655269,0x6372756f,0x7a695365,0x00000065, + 0x00070005,0x000000c9,0x6e4f7349,0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005, + 0x000000c7,0x00736f70,0x00040005,0x000000c8,0x657a6973,0x00000000,0x00070005,0x000000cc, + 0x636e614c,0x32736f7a,0x6c436f4e,0x28706d61,0x003b3166,0x00030005,0x000000cb,0x00000078, + 0x00060005,0x000000cf,0x636e614c,0x32736f7a,0x3b316628,0x00000000,0x00030005,0x000000ce, + 0x00000078,0x00090005,0x000000d2,0x636e614c,0x32736f7a,0x72707041,0x7153786f,0x6c436f4e, + 0x28706d61,0x003b3166,0x00030005,0x000000d1,0x00003278,0x00080005,0x000000d5,0x636e614c, + 0x32736f7a,0x72707041,0x7153786f,0x3b316628,0x00000000,0x00030005,0x000000d4,0x00003278, + 0x000a0005,0x000000dd,0x636e614c,0x32736f7a,0x34667628,0x3466763b,0x3466763b,0x3466763b, + 0x3b31663b,0x00000000,0x00040005,0x000000d8,0x6c6f4366,0x0030726f,0x00040005,0x000000d9, + 0x6c6f4366,0x0031726f,0x00040005,0x000000da,0x6c6f4366,0x0032726f,0x00040005,0x000000db, + 0x6c6f4366,0x0033726f,0x00030005,0x000000dc,0x00000074,0x00080005,0x000000df,0x63746546, + 0x42646568,0x62756369,0x61536369,0x656c706d,0x00000073,0x00060006,0x000000df,0x00000000, + 0x6c6f4366,0x3030726f,0x00000000,0x00060006,0x000000df,0x00000001,0x6c6f4366,0x3031726f, + 0x00000000,0x00060006,0x000000df,0x00000002,0x6c6f4366,0x3032726f,0x00000000,0x00060006, + 0x000000df,0x00000003,0x6c6f4366,0x3033726f,0x00000000,0x00060006,0x000000df,0x00000004, + 0x6c6f4366,0x3130726f,0x00000000,0x00060006,0x000000df,0x00000005,0x6c6f4366,0x3131726f, + 0x00000000,0x00060006,0x000000df,0x00000006,0x6c6f4366,0x3132726f,0x00000000,0x00060006, + 0x000000df,0x00000007,0x6c6f4366,0x3133726f,0x00000000,0x00060006,0x000000df,0x00000008, + 0x6c6f4366,0x3230726f,0x00000000,0x00060006,0x000000df,0x00000009,0x6c6f4366,0x3231726f, + 0x00000000,0x00060006,0x000000df,0x0000000a,0x6c6f4366,0x3232726f,0x00000000,0x00060006, + 0x000000df,0x0000000b,0x6c6f4366,0x3233726f,0x00000000,0x00060006,0x000000df,0x0000000c, + 0x6c6f4366,0x3330726f,0x00000000,0x00060006,0x000000df,0x0000000d,0x6c6f4366,0x3331726f, + 0x00000000,0x00060006,0x000000df,0x0000000e,0x6c6f4366,0x3332726f,0x00000000,0x00060006, + 0x000000df,0x0000000f,0x6c6f4366,0x3333726f,0x00000000,0x001d0005,0x000000e4,0x636e614c, + 0x32736f7a,0x72747328,0x2d746375,0x63746546,0x42646568,0x62756369,0x61536369,0x656c706d, + 0x66762d73,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34, - 0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x66762d34,0x763b3134,0x003b3266,0x00040005, - 0x000000e8,0x706d6153,0x0073656c,0x00040005,0x000000e9,0x46785066,0x00636172,0x00080005, - 0x000000ef,0x6d616c43,0x6f6f4370,0x76286472,0x763b3269,0x763b3269,0x003b3269,0x00050005, - 0x000000ec,0x53785069,0x6c706d61,0x00000065,0x00050005,0x000000ed,0x4f785069,0x65736666, - 0x00000074,0x00060005,0x000000ee,0x78655469,0x65727574,0x657a6953,0x00000000,0x00110005, - 0x000000f4,0x69726544,0x6e69676e,0x74732867,0x74637572,0x6365522d,0x69666974,0x69746163, - 0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66763b31,0x00003b33, - 0x00050005,0x000000f2,0x70696c63,0x676e6970,0x00786f42,0x00040005,0x000000f3,0x6c6f4366, - 0x0000726f,0x000b0005,0x000000f9,0x55746547,0x6d617370,0x4c656c70,0x7a636e61,0x6557736f, - 0x74686769,0x32667628,0x3b31663b,0x00000000,0x00070005,0x000000f7,0x63725366,0x706d6153, - 0x664f656c,0x74657366,0x00000000,0x00060005,0x000000f8,0x72654b66,0x576c656e,0x68676965, - 0x00000074,0x000a0005,0x000000fb,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43, - 0x61506e6f,0x736d6172,0x00000000,0x00060006,0x000000fb,0x00000000,0x48785069,0x736f5072, - 0x00000000,0x00050006,0x000000fb,0x00000001,0x55724866,0x00000076,0x00070006,0x000000fb, - 0x00000002,0x55724c66,0x74694a76,0x65726574,0x00000064,0x00070006,0x000000fb,0x00000003, - 0x55724c66,0x77485f76,0x706d6153,0x0072656c,0x00070006,0x000000fb,0x00000004,0x746f4d66, - 0x566e6f69,0x6f746365,0x00000072,0x00080006,0x000000fb,0x00000005,0x70655266,0x656a6f72, - 0x64657463,0x76557248,0x00000000,0x00060006,0x000000fb,0x00000006,0x564b3466,0x636f6c65, - 0x00797469,0x00070006,0x000000fb,0x00000007,0x73694466,0x6c63636f,0x6f697375,0x0000006e, - 0x00070006,0x000000fb,0x00000008,0x61655266,0x76697463,0x73614d65,0x0000006b,0x00070006, - 0x000000fb,0x00000009,0x61685366,0x676e6964,0x6e616843,0x00006567,0x00070006,0x000000fb, - 0x0000000a,0x63634166,0x6c756d75,0x6f697461,0x0000006e,0x00090006,0x000000fb,0x0000000b, - 0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x74636146,0x0000726f,0x00090006,0x000000fb, - 0x0000000c,0x72614666,0x73656874,0x70654474,0x6e496874,0x6574654d,0x00007372,0x00080006, - 0x000000fb,0x0000000d,0x45734962,0x74736978,0x53676e69,0x6c706d61,0x00000065,0x00070006, - 0x000000fb,0x0000000e,0x4e734962,0x61537765,0x656c706d,0x00000000,0x00080005,0x000000fc, - 0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x00000000,0x00060006,0x000000fc, - 0x00000000,0x70696c63,0x676e6970,0x00786f42,0x00070006,0x000000fc,0x00000001,0x73705566, - 0x6c706d61,0x6f436465,0x00726f6c,0x00080006,0x000000fc,0x00000002,0x73705566,0x6c706d61, - 0x65576465,0x74686769,0x00000000,0x00070006,0x000000fc,0x00000003,0x73694866,0x79726f74, - 0x6f6c6f43,0x00000072,0x00070006,0x000000fc,0x00000004,0x73694866,0x79726f74,0x67696557, - 0x00007468,0x00050006,0x000000fc,0x00000005,0x636f4c66,0x0000006b,0x000a0006,0x000000fc, - 0x00000006,0x636f4c66,0x6e6f436b,0x62697274,0x6f697475,0x6968546e,0x61724673,0x0000656d, - 0x00360005,0x00000101,0x706d6f43,0x4d657475,0x654b7861,0x6c656e72,0x67696557,0x73287468, + 0x763b3134,0x003b3266,0x00040005,0x000000e2,0x706d6153,0x0073656c,0x00040005,0x000000e3, + 0x46785066,0x00636172,0x00080005,0x000000e9,0x6d616c43,0x6f6f4370,0x76286472,0x763b3269, + 0x763b3269,0x003b3269,0x00050005,0x000000e6,0x53785069,0x6c706d61,0x00000065,0x00050005, + 0x000000e7,0x4f785069,0x65736666,0x00000074,0x00060005,0x000000e8,0x78655469,0x65727574, + 0x657a6953,0x00000000,0x00110005,0x000000ee,0x69726544,0x6e69676e,0x74732867,0x74637572, + 0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33, + 0x31662d33,0x66763b31,0x00003b33,0x00050005,0x000000ec,0x70696c63,0x676e6970,0x00786f42, + 0x00040005,0x000000ed,0x6c6f4366,0x0000726f,0x000b0005,0x000000f3,0x55746547,0x6d617370, + 0x4c656c70,0x7a636e61,0x6557736f,0x74686769,0x32667628,0x3b31663b,0x00000000,0x00070005, + 0x000000f1,0x63725366,0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005,0x000000f2, + 0x72654b66,0x576c656e,0x68676965,0x00000074,0x000a0005,0x000000f5,0x75636341,0x616c756d, + 0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x00000000,0x00060006,0x000000f5, + 0x00000000,0x48785069,0x736f5072,0x00000000,0x00050006,0x000000f5,0x00000001,0x55724866, + 0x00000076,0x00070006,0x000000f5,0x00000002,0x55724c66,0x74694a76,0x65726574,0x00000064, + 0x00070006,0x000000f5,0x00000003,0x55724c66,0x77485f76,0x706d6153,0x0072656c,0x00070006, + 0x000000f5,0x00000004,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00080006,0x000000f5, + 0x00000005,0x70655266,0x656a6f72,0x64657463,0x76557248,0x00000000,0x00060006,0x000000f5, + 0x00000006,0x564b3466,0x636f6c65,0x00797469,0x00070006,0x000000f5,0x00000007,0x73694466, + 0x6c63636f,0x6f697375,0x0000006e,0x00070006,0x000000f5,0x00000008,0x61655266,0x76697463, + 0x73614d65,0x0000006b,0x00070006,0x000000f5,0x00000009,0x61685366,0x676e6964,0x6e616843, + 0x00006567,0x00070006,0x000000f5,0x0000000a,0x63634166,0x6c756d75,0x6f697461,0x0000006e, + 0x00090006,0x000000f5,0x0000000b,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x74636146, + 0x0000726f,0x00090006,0x000000f5,0x0000000c,0x72614666,0x73656874,0x70654474,0x6e496874, + 0x6574654d,0x00007372,0x00080006,0x000000f5,0x0000000d,0x45734962,0x74736978,0x53676e69, + 0x6c706d61,0x00000065,0x00070006,0x000000f5,0x0000000e,0x4e734962,0x61537765,0x656c706d, + 0x00000000,0x00080005,0x000000f6,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144, + 0x00000000,0x00060006,0x000000f6,0x00000000,0x70696c63,0x676e6970,0x00786f42,0x00070006, + 0x000000f6,0x00000001,0x73705566,0x6c706d61,0x6f436465,0x00726f6c,0x00080006,0x000000f6, + 0x00000002,0x73705566,0x6c706d61,0x65576465,0x74686769,0x00000000,0x00070006,0x000000f6, + 0x00000003,0x73694866,0x79726f74,0x6f6c6f43,0x00000072,0x00070006,0x000000f6,0x00000004, + 0x73694866,0x79726f74,0x67696557,0x00007468,0x00050006,0x000000f6,0x00000005,0x636f4c66, + 0x0000006b,0x000a0006,0x000000f6,0x00000006,0x636f4c66,0x6e6f436b,0x62697274,0x6f697475, + 0x6968546e,0x61724673,0x0000656d,0x00360005,0x000000fb,0x706d6f43,0x4d657475,0x654b7861, + 0x6c656e72,0x67696557,0x73287468,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, + 0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266, + 0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162, + 0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174, + 0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366, + 0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166, + 0x00000000,0x00040005,0x000000f9,0x61726170,0x0000736d,0x00040005,0x000000fa,0x61746164, + 0x00000000,0x00080005,0x000000fe,0x64616f4c,0x70657250,0x64657261,0x6f6c6f43,0x69762872, + 0x00003b32,0x00050005,0x000000fd,0x6d615369,0x50656c70,0x0000736f,0x00380005,0x00000103, + 0x706d6f43,0x55657475,0x6d617370,0x64656c70,0x6f6c6f43,0x646e4172,0x67696557,0x73287468, 0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150, 0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31, 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74, 0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463, 0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131, - 0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005,0x000000ff, - 0x61726170,0x0000736d,0x00040005,0x00000100,0x61746164,0x00000000,0x00080005,0x00000104, - 0x64616f4c,0x70657250,0x64657261,0x6f6c6f43,0x69762872,0x00003b32,0x00050005,0x00000103, - 0x6d615369,0x50656c70,0x0000736f,0x00380005,0x00000109,0x706d6f43,0x55657475,0x6d617370, - 0x64656c70,0x6f6c6f43,0x646e4172,0x67696557,0x73287468,0x63757274,0x63412d74,0x756d7563, - 0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266, - 0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31, - 0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, - 0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, - 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33, - 0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000107,0x61726170,0x0000736d,0x00040005, - 0x00000108,0x61746164,0x00000000,0x00070005,0x0000010c,0x70617257,0x74736948,0x2879726f, - 0x3b326976,0x00000000,0x00050005,0x0000010b,0x53785069,0x6c706d61,0x00000065,0x000a0005, - 0x00000111,0x63746546,0x73694868,0x79726f74,0x706d6153,0x2873656c,0x3b326976,0x3b326976, - 0x00000000,0x00050005,0x0000010f,0x53785069,0x6c706d61,0x00000065,0x00060005,0x00000110, - 0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005,0x00000116,0x74736948,0x5379726f, - 0x6c706d61,0x66762865,0x69763b32,0x00003b32,0x00050005,0x00000114,0x53765566,0x6c706d61, - 0x00000065,0x00060005,0x00000115,0x78655469,0x65727574,0x657a6953,0x00000000,0x00090005, - 0x0000011b,0x4d746547,0x6f69746f,0x6365566e,0x28726f74,0x3b326976,0x3b326676,0x00000000, - 0x00050005,0x00000119,0x48785069,0x736f5072,0x00000000,0x00040005,0x0000011a,0x55724866, - 0x00000076,0x001e0005,0x00000120,0x706d6f43,0x52657475,0x6f727065,0x7463656a,0x56556465, - 0x74732873,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d, - 0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32, - 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x00003b31,0x00040005, - 0x0000011f,0x61726170,0x0000736d,0x00350005,0x00000124,0x72706552,0x63656a6f,0x73694874, - 0x79726f74,0x6f6c6f43,0x74732872,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e, - 0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32, - 0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31, - 0x74733b31,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x74614473,0x74732d61, - 0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33, - 0x66762d33,0x31662d33,0x66762d31,0x31662d33,0x3366762d,0x2d31662d,0x662d3166,0x003b3131, - 0x00040005,0x00000122,0x61726170,0x0000736d,0x00040005,0x00000123,0x61746164,0x00000000, - 0x00330005,0x00000128,0x75636341,0x616c756d,0x73286574,0x63757274,0x63412d74,0x756d7563, - 0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266, - 0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31, - 0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f, - 0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f, - 0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33, - 0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000126,0x61726170,0x0000736d,0x00040005, - 0x00000127,0x61746164,0x00000000,0x00340005,0x0000012c,0x74636552,0x48796669,0x6f747369, - 0x73287972,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d, - 0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266, - 0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274, - 0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74, - 0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366, - 0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005, - 0x0000012a,0x61726170,0x0000736d,0x00040005,0x0000012b,0x61746164,0x00000000,0x00340005, - 0x00000131,0x61647055,0x6f4c6574,0x74536b63,0x73757461,0x72747328,0x2d746375,0x75636341, - 0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x3269762d,0x3266762d, - 0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, - 0x662d3166,0x31622d31,0x3131622d,0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974, - 0x73736150,0x61746144,0x7274732d,0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e, - 0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d,0x3366762d,0x2d31662d,0x2d336676, - 0x662d3166,0x31662d31,0x00003b31,0x00040005,0x0000012f,0x61726170,0x0000736d,0x00040005, - 0x00000130,0x61746164,0x00000000,0x00370005,0x00000135,0x706d6f43,0x42657475,0x41657361, - 0x6d756363,0x74616c75,0x576e6f69,0x68676965,0x74732874,0x74637572,0x6363412d,0x6c756d75, - 0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32, - 0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, - 0x622d3166,0x31622d31,0x74733b31,0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e, - 0x74614473,0x74732d61,0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f,0x66762d78, - 0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66762d31,0x31662d33,0x3366762d,0x2d31662d, - 0x662d3166,0x003b3131,0x00040005,0x00000133,0x61726170,0x0000736d,0x00040005,0x00000134, - 0x61746164,0x00000000,0x00340005,0x0000013b,0x74696e49,0x73736150,0x61746144,0x32697628, - 0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f, + 0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000101, + 0x61726170,0x0000736d,0x00040005,0x00000102,0x61746164,0x00000000,0x00070005,0x00000106, + 0x70617257,0x74736948,0x2879726f,0x3b326976,0x00000000,0x00050005,0x00000105,0x53785069, + 0x6c706d61,0x00000065,0x000a0005,0x0000010b,0x63746546,0x73694868,0x79726f74,0x706d6153, + 0x2873656c,0x3b326976,0x3b326976,0x00000000,0x00050005,0x00000109,0x53785069,0x6c706d61, + 0x00000065,0x00060005,0x0000010a,0x78655469,0x65727574,0x657a6953,0x00000000,0x00080005, + 0x00000110,0x74736948,0x5379726f,0x6c706d61,0x66762865,0x69763b32,0x00003b32,0x00050005, + 0x0000010e,0x53765566,0x6c706d61,0x00000065,0x00060005,0x0000010f,0x78655469,0x65727574, + 0x657a6953,0x00000000,0x00090005,0x00000115,0x4d746547,0x6f69746f,0x6365566e,0x28726f74, + 0x3b326976,0x3b326676,0x00000000,0x00050005,0x00000113,0x48785069,0x736f5072,0x00000000, + 0x00040005,0x00000114,0x55724866,0x00000076,0x001e0005,0x0000011a,0x706d6f43,0x52657475, + 0x6f727065,0x7463656a,0x56556465,0x74732873,0x74637572,0x6363412d,0x6c756d75,0x6f697461, + 0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32,0x66762d32,0x66762d32, + 0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3166, + 0x31622d31,0x00003b31,0x00040005,0x00000119,0x61726170,0x0000736d,0x00350005,0x0000011e, + 0x72706552,0x63656a6f,0x73694874,0x79726f74,0x6f6c6f43,0x74732872,0x74637572,0x6363412d, + 0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261,0x69762d73,0x66762d32, + 0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d,0x662d3166,0x31662d31, + 0x2d31662d,0x622d3166,0x31622d31,0x74733b31,0x74637572,0x6363412d,0x6c756d75,0x6f697461, + 0x7361506e,0x74614473,0x74732d61,0x74637572,0x6365522d,0x69666974,0x69746163,0x6f426e6f, + 0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66762d31,0x31662d33,0x3366762d, + 0x2d31662d,0x662d3166,0x003b3131,0x00040005,0x0000011c,0x61726170,0x0000736d,0x00040005, + 0x0000011d,0x61746164,0x00000000,0x00330005,0x00000122,0x75636341,0x616c756d,0x73286574, + 0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150, + 0x762d736d,0x762d3269,0x762d3266,0x762d3266,0x762d3266,0x762d3266,0x662d3266,0x31662d31, + 0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x622d3162,0x733b3131,0x63757274,0x63412d74, + 0x756d7563,0x6974616c,0x61506e6f,0x61447373,0x732d6174,0x63757274,0x65522d74,0x66697463, + 0x74616369,0x426e6f69,0x762d786f,0x762d3366,0x762d3366,0x762d3366,0x662d3366,0x762d3131, + 0x662d3366,0x66762d31,0x31662d33,0x2d31662d,0x3b313166,0x00000000,0x00040005,0x00000120, + 0x61726170,0x0000736d,0x00040005,0x00000121,0x61746164,0x00000000,0x00340005,0x00000126, + 0x74636552,0x48796669,0x6f747369,0x73287972,0x63757274,0x63412d74,0x756d7563,0x6974616c, + 0x61506e6f,0x6f437373,0x6e6f6d6d,0x61726150,0x762d736d,0x762d3269,0x762d3266,0x762d3266, + 0x762d3266,0x762d3266,0x662d3266,0x31662d31,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d, + 0x622d3162,0x733b3131,0x63757274,0x63412d74,0x756d7563,0x6974616c,0x61506e6f,0x61447373, + 0x732d6174,0x63757274,0x65522d74,0x66697463,0x74616369,0x426e6f69,0x762d786f,0x762d3366, + 0x762d3366,0x762d3366,0x662d3366,0x762d3131,0x662d3366,0x66762d31,0x31662d33,0x2d31662d, + 0x3b313166,0x00000000,0x00040005,0x00000124,0x61726170,0x0000736d,0x00040005,0x00000125, + 0x61746164,0x00000000,0x00340005,0x0000012b,0x61647055,0x6f4c6574,0x74536b63,0x73757461, + 0x72747328,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x6d6d6f43,0x61506e6f, 0x736d6172,0x3269762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x3266762d,0x2d31662d, 0x662d3166,0x31662d31,0x2d31662d,0x662d3166,0x31622d31,0x3131622d,0x7274733b,0x2d746375, 0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144,0x7274732d,0x2d746375,0x74636552, 0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d,0x3366762d,0x3366762d,0x3131662d, - 0x3366762d,0x2d31662d,0x2d336676,0x662d3166,0x31662d31,0x00003b31,0x00050005,0x00000138, - 0x48785069,0x736f5072,0x00000000,0x00040005,0x00000139,0x61726170,0x0000736d,0x00040005, - 0x0000013a,0x61746164,0x00000000,0x00060005,0x0000013f,0x75636341,0x616c756d,0x76286574, - 0x003b3269,0x00050005,0x0000013e,0x48785069,0x736f5072,0x00000000,0x00070005,0x0000018f, - 0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x0000018f,0x00000000, - 0x6e655269,0x53726564,0x00657a69,0x000a0006,0x0000018f,0x00000001,0x65725069,0x756f6976, - 0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x0000018f,0x00000002, - 0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006,0x0000018f,0x00000003,0x65725069, - 0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x0000018f, - 0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x0000018f,0x00000005, - 0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006,0x0000018f,0x00000006,0x76654466, - 0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006,0x0000018f,0x00000007,0x74694a66, - 0x00726574,0x00090006,0x0000018f,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d, - 0x72657474,0x00000000,0x00080006,0x0000018f,0x00000009,0x746f4d66,0x566e6f69,0x6f746365, - 0x61635372,0x0000656c,0x00080006,0x0000018f,0x0000000a,0x776f4466,0x6163736e,0x6146656c, - 0x726f7463,0x00000000,0x000b0006,0x0000018f,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365, - 0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x0000018f,0x0000000c, - 0x6e615466,0x666c6148,0x00564f46,0x00090006,0x0000018f,0x0000000d,0x74694a66,0x53726574, - 0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006,0x0000018f,0x0000000e,0x6c654466, - 0x69546174,0x0000656d,0x00080006,0x0000018f,0x0000000f,0x6c654466,0x72506174,0x70784565, - 0x7275736f,0x00000065,0x000a0006,0x0000018f,0x00000010,0x65695666,0x61705377,0x6f546563, - 0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006,0x0000018f,0x00000011,0x61724666, - 0x6e49656d,0x00786564,0x00070006,0x0000018f,0x00000012,0x6c655666,0x7469636f,0x63614679, - 0x00726f74,0x00080006,0x0000018f,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373, - 0x0000656c,0x00080006,0x0000018f,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567, - 0x00656c61,0x000a0006,0x0000018f,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e, - 0x65506465,0x61724672,0x0000656d,0x000b0006,0x0000018f,0x00000016,0x6e694d66,0x6f736944, - 0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x00000191, - 0x53466263,0x70553352,0x6c616373,0x00007265,0x00080005,0x000001c9,0x6e695f72,0x5f747570, - 0x6f6c6f63,0x696a5f72,0x72657474,0x00006465,0x00090005,0x000001d0,0x6e695f72,0x6e726574, - 0x755f6c61,0x61637370,0x5f64656c,0x6f6c6f63,0x00000072,0x00090005,0x000001d8,0x695f7772, - 0x7265746e,0x5f6c616e,0x63737075,0x64656c61,0x6c6f635f,0x0000726f,0x00080005,0x000001dc, - 0x61665f72,0x65687472,0x645f7473,0x68747065,0x70696d5f,0x00000031,0x00060005,0x000001e4, - 0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00070005,0x000001ef,0x756c5f72,0x695f616d, - 0x6174736e,0x696c6962,0x00007974,0x00060005,0x000001fa,0x6e5f7772,0x6c5f7765,0x736b636f, - 0x00000000,0x00090005,0x00000205,0x69645f72,0x6574616c,0x6f6d5f64,0x6e6f6974,0x6365765f, - 0x73726f74,0x00000000,0x00050005,0x0000020c,0x6f707865,0x65727573,0x00000000,0x00070005, - 0x0000020d,0x6e695f72,0x5f747570,0x6f707865,0x65727573,0x00000000,0x00090005,0x00000219, - 0x69645f72,0x6574616c,0x65725f64,0x69746361,0x6d5f6576,0x736b7361,0x00000000,0x00060005, - 0x0000022b,0x67696577,0x64657468,0x706d6153,0x0000656c,0x00040005,0x00000237,0x61726170, - 0x0000006d,0x00040005,0x0000023c,0x61726170,0x0000006d,0x00040005,0x0000023f,0x61726170, - 0x0000006d,0x00040005,0x00000242,0x61726170,0x0000006d,0x00040005,0x00000245,0x61726170, - 0x0000006d,0x00060005,0x00000248,0x67696577,0x64657468,0x706d6153,0x0000656c,0x00040005, - 0x00000274,0x44647473,0x00007665,0x00040005,0x00000281,0x62675266,0x00000000,0x00040005, - 0x0000029d,0x6f435966,0x00006743,0x00040005,0x000002c3,0x61726170,0x0000006d,0x00040005, - 0x000002c4,0x61726170,0x0000006d,0x00040005,0x000002c8,0x61726170,0x0000006d,0x00040005, - 0x000002cb,0x61726170,0x0000006d,0x00040005,0x000002cf,0x61726170,0x0000006d,0x00040005, - 0x000002d0,0x61726170,0x0000006d,0x00040005,0x000002d9,0x61726170,0x0000006d,0x00040005, - 0x000002dc,0x61726170,0x0000006d,0x00040005,0x000002e0,0x61726170,0x0000006d,0x00040005, - 0x000002e3,0x61726170,0x0000006d,0x00040005,0x000002e6,0x61726170,0x0000006d,0x00040005, - 0x000002e7,0x61726170,0x0000006d,0x00040005,0x00000304,0x75736572,0x0000746c,0x00040005, - 0x0000030b,0x61726170,0x0000006d,0x00040005,0x0000030e,0x61726170,0x0000006d,0x00040005, - 0x00000310,0x61726170,0x0000006d,0x00040005,0x00000311,0x61726170,0x0000006d,0x00040005, - 0x00000317,0x61726170,0x0000006d,0x00040005,0x0000031a,0x61726170,0x0000006d,0x00040005, - 0x0000031c,0x61726170,0x0000006d,0x00040005,0x0000031d,0x61726170,0x0000006d,0x00060005, - 0x00000323,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69,0x00070005,0x00000328,0x616c4366, - 0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005,0x0000032d,0x61726170,0x0000006d, - 0x00040005,0x0000032f,0x61726170,0x0000006d,0x00040005,0x00000331,0x61726170,0x0000006d, - 0x00040005,0x00000332,0x61726170,0x0000006d,0x00050005,0x00000334,0x616c4366,0x6465706d, - 0x00007655,0x00040005,0x00000362,0x61726170,0x0000006d,0x00040005,0x00000363,0x61726170, - 0x0000006d,0x00040005,0x00000365,0x61726170,0x0000006d,0x00030005,0x0000036a,0x00000061, - 0x00030005,0x0000036f,0x00000062,0x00040005,0x00000381,0x61726170,0x0000006d,0x00040005, - 0x00000383,0x61726170,0x0000006d,0x00040005,0x00000385,0x61726170,0x0000006d,0x00050005, - 0x0000038a,0x69655766,0x30746867,0x00000000,0x00040005,0x0000038e,0x61726170,0x0000006d, - 0x00050005,0x00000390,0x69655766,0x31746867,0x00000000,0x00040005,0x00000394,0x61726170, - 0x0000006d,0x00050005,0x00000396,0x69655766,0x32746867,0x00000000,0x00040005,0x00000399, - 0x61726170,0x0000006d,0x00050005,0x0000039b,0x69655766,0x33746867,0x00000000,0x00040005, - 0x0000039e,0x61726170,0x0000006d,0x00050005,0x000003ba,0x6c6f4366,0x3058726f,0x00000000, - 0x00040005,0x000003bb,0x61726170,0x0000006d,0x00040005,0x000003be,0x61726170,0x0000006d, - 0x00040005,0x000003c1,0x61726170,0x0000006d,0x00040005,0x000003c4,0x61726170,0x0000006d, - 0x00040005,0x000003c7,0x61726170,0x0000006d,0x00050005,0x000003cb,0x6c6f4366,0x3158726f, - 0x00000000,0x00040005,0x000003ce,0x61726170,0x0000006d,0x00040005,0x000003d1,0x61726170, - 0x0000006d,0x00040005,0x000003d4,0x61726170,0x0000006d,0x00040005,0x000003d7,0x61726170, - 0x0000006d,0x00040005,0x000003da,0x61726170,0x0000006d,0x00050005,0x000003de,0x6c6f4366, - 0x3258726f,0x00000000,0x00040005,0x000003e2,0x61726170,0x0000006d,0x00040005,0x000003e5, - 0x61726170,0x0000006d,0x00040005,0x000003e8,0x61726170,0x0000006d,0x00040005,0x000003eb, - 0x61726170,0x0000006d,0x00040005,0x000003ee,0x61726170,0x0000006d,0x00050005,0x000003f2, - 0x6c6f4366,0x3358726f,0x00000000,0x00040005,0x000003f5,0x61726170,0x0000006d,0x00040005, - 0x000003f8,0x61726170,0x0000006d,0x00040005,0x000003fb,0x61726170,0x0000006d,0x00040005, - 0x000003fe,0x61726170,0x0000006d,0x00040005,0x00000401,0x61726170,0x0000006d,0x00050005, - 0x00000405,0x6c6f4366,0x5958726f,0x00000000,0x00040005,0x00000406,0x61726170,0x0000006d, - 0x00040005,0x00000408,0x61726170,0x0000006d,0x00040005,0x0000040a,0x61726170,0x0000006d, - 0x00040005,0x0000040c,0x61726170,0x0000006d,0x00040005,0x0000040e,0x61726170,0x0000006d, - 0x00070005,0x00000415,0x72654466,0x69676e69,0x6153676e,0x656c706d,0x00000073,0x00060005, - 0x0000041f,0x72654466,0x69676e69,0x694d676e,0x0000006e,0x00060005,0x00000422,0x72654466, - 0x69676e69,0x614d676e,0x00000078,0x00060005,0x00000425,0x6d615369,0x49656c70,0x7865646e, - 0x00000000,0x00040005,0x0000042e,0x61726170,0x0000006d,0x00040005,0x00000430,0x61726170, - 0x0000006d,0x00040005,0x00000435,0x61726170,0x0000006d,0x00040005,0x00000437,0x61726170, - 0x0000006d,0x00040005,0x00000444,0x75736572,0x0000746c,0x00040005,0x0000044b,0x61726170, - 0x0000006d,0x00040005,0x0000044e,0x61726170,0x0000006d,0x00040005,0x00000450,0x61726170, - 0x0000006d,0x00040005,0x00000451,0x61726170,0x0000006d,0x00040005,0x00000457,0x61726170, - 0x0000006d,0x00040005,0x0000045a,0x61726170,0x0000006d,0x00040005,0x0000045c,0x61726170, - 0x0000006d,0x00040005,0x0000045d,0x61726170,0x0000006d,0x00080005,0x00000469,0x63725366, - 0x706d6153,0x664f656c,0x74657366,0x73616942,0x00006465,0x00060005,0x0000046e,0x6d615366, - 0x57656c70,0x68676965,0x00000074,0x00040005,0x00000472,0x61726170,0x0000006d,0x00060005, - 0x00000477,0x72654b66,0x536c656e,0x42657a69,0x00736169,0x00040005,0x00000480,0x61726170, - 0x0000006d,0x00040005,0x00000481,0x61726170,0x0000006d,0x00040005,0x00000486,0x62675266, - 0x00000000,0x00040005,0x00000488,0x61726170,0x0000006d,0x00040005,0x0000048b,0x61726170, - 0x0000006d,0x00040005,0x0000048c,0x61726170,0x0000006d,0x00060005,0x00000490,0x65725066, - 0x65726170,0x6f435964,0x00006743,0x00040005,0x00000491,0x61726170,0x0000006d,0x00060005, - 0x00000497,0x74734466,0x7074754f,0x6f507475,0x00000073,0x00060005,0x0000049b,0x63725366, - 0x7074754f,0x6f507475,0x00000073,0x00060005,0x0000049f,0x63725369,0x75706e49,0x736f5074, - 0x00000000,0x00070005,0x000004a3,0x63725366,0x696a6e55,0x72657474,0x6f506465,0x00000073, - 0x00070005,0x000004a9,0x73614266,0x6d615365,0x4f656c70,0x65736666,0x00000074,0x00050005, - 0x000004ad,0x7366666f,0x4c547465,0x00000000,0x00050005,0x000004be,0x696c4662,0x776f5270, - 0x00000000,0x00050005,0x000004c4,0x696c4662,0x6c6f4370,0x00000000,0x00050005,0x000004ca, - 0x66664f66,0x54746573,0x0000004c,0x00070005,0x000004cd,0x49734962,0x6974696e,0x61536c61, - 0x656c706d,0x00000000,0x00060005,0x000004d0,0x6d615369,0x49656c70,0x7865646e,0x00000000, - 0x00030005,0x000004d1,0x00776f72,0x00030005,0x000004d9,0x006c6f63,0x00060005,0x000004e1, - 0x6d615369,0x43656c70,0x6f526c6f,0x00000077,0x00060005,0x000004f5,0x63725369,0x706d6153, - 0x6f50656c,0x00000073,0x00060005,0x000004fb,0x6d615369,0x43656c70,0x64726f6f,0x00000000, - 0x00040005,0x000004fd,0x61726170,0x0000006d,0x00040005,0x000004ff,0x61726170,0x0000006d, - 0x00040005,0x00000500,0x61726170,0x0000006d,0x00050005,0x00000505,0x6d615366,0x73656c70, - 0x00000000,0x00040005,0x00000507,0x61726170,0x0000006d,0x00040005,0x0000051d,0x61726170, - 0x0000006d,0x00040005,0x00000521,0x61726170,0x0000006d,0x00040005,0x00000523,0x61726170, - 0x0000006d,0x00060005,0x00000528,0x72654b66,0x426c656e,0x4d736169,0x00007861,0x00040005, - 0x00000529,0x61726170,0x0000006d,0x00060005,0x0000052d,0x72654b66,0x426c656e,0x4d736169, - 0x00006e69,0x00040005,0x00000532,0x61726170,0x0000006d,0x00040005,0x00000533,0x61726170, - 0x0000006d,0x00070005,0x00000535,0x72654b66,0x426c656e,0x57736169,0x68676965,0x00000074, - 0x00040005,0x0000053f,0x61726170,0x0000006d,0x00040005,0x00000541,0x61726170,0x0000006d, - 0x00040005,0x00000542,0x61726170,0x0000006d,0x00040005,0x00000544,0x61726170,0x0000006d, - 0x00040005,0x00000545,0x61726170,0x0000006d,0x00050005,0x00000547,0x72654b66,0x426c656e, - 0x00736169,0x00040005,0x00000548,0x61726170,0x0000006d,0x00040005,0x0000054a,0x61726170, - 0x0000006d,0x00040005,0x0000054c,0x61726170,0x0000006d,0x00030005,0x0000054f,0x00776f72, - 0x00030005,0x00000557,0x006c6f63,0x00060005,0x0000055f,0x706d6173,0x6f43656c,0x776f526c, - 0x00000000,0x00040005,0x00000573,0x66664f66,0x00746573,0x00070005,0x00000578,0x63725366, - 0x706d6153,0x664f656c,0x74657366,0x00000000,0x00060005,0x0000057c,0x63725369,0x706d6153, - 0x6f50656c,0x00000073,0x00060005,0x00000582,0x536e4f66,0x65657263,0x6361466e,0x00726f74, - 0x00040005,0x00000585,0x61726170,0x0000006d,0x00040005,0x00000586,0x61726170,0x0000006d, - 0x00060005,0x0000058d,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00040005,0x0000058f, - 0x61726170,0x0000006d,0x00040005,0x00000591,0x61726170,0x0000006d,0x00070005,0x000005a3, - 0x63725366,0x706d6153,0x664f656c,0x74657366,0x00007153,0x00070005,0x000005a7,0x786f4266, - 0x706d6153,0x6557656c,0x74686769,0x00000000,0x00060005,0x000005ae,0x696e4962,0x6c616974, - 0x706d6153,0x0000656c,0x00040005,0x000005b8,0x61726170,0x0000006d,0x00040005,0x000005ba, - 0x61726170,0x0000006d,0x00040005,0x000005c6,0x61726170,0x0000006d,0x00040005,0x000005e5, - 0x61726170,0x0000006d,0x00040005,0x000005e8,0x61726170,0x0000006d,0x00040005,0x000005f1, - 0x61726170,0x0000006d,0x00040005,0x000005f5,0x61726170,0x0000006d,0x00040005,0x000005f7, - 0x61726170,0x0000006d,0x00040005,0x000005fc,0x61726170,0x0000006d,0x00040005,0x00000601, - 0x706d6153,0x0073656c,0x00040005,0x00000603,0x61726170,0x0000006d,0x00040005,0x00000605, - 0x61726170,0x0000006d,0x00040005,0x00000606,0x61726170,0x0000006d,0x00040005,0x00000609, - 0x61726170,0x0000006d,0x00040005,0x0000060d,0x61726170,0x0000006d,0x00040005,0x0000060f, - 0x61726170,0x0000006d,0x00040005,0x00000610,0x61726170,0x0000006d,0x00040005,0x00000613, - 0x61726170,0x0000006d,0x00040005,0x00000617,0x61726170,0x0000006d,0x00040005,0x00000619, - 0x61726170,0x0000006d,0x00040005,0x0000061a,0x61726170,0x0000006d,0x00040005,0x0000061d, - 0x61726170,0x0000006d,0x00040005,0x00000621,0x61726170,0x0000006d,0x00040005,0x00000623, - 0x61726170,0x0000006d,0x00040005,0x00000624,0x61726170,0x0000006d,0x00040005,0x00000627, - 0x61726170,0x0000006d,0x00040005,0x0000062b,0x61726170,0x0000006d,0x00040005,0x0000062d, - 0x61726170,0x0000006d,0x00040005,0x0000062e,0x61726170,0x0000006d,0x00040005,0x00000631, - 0x61726170,0x0000006d,0x00040005,0x00000634,0x61726170,0x0000006d,0x00040005,0x00000636, - 0x61726170,0x0000006d,0x00040005,0x00000637,0x61726170,0x0000006d,0x00040005,0x0000063a, - 0x61726170,0x0000006d,0x00040005,0x0000063e,0x61726170,0x0000006d,0x00040005,0x00000640, - 0x61726170,0x0000006d,0x00040005,0x00000641,0x61726170,0x0000006d,0x00040005,0x00000644, - 0x61726170,0x0000006d,0x00040005,0x00000648,0x61726170,0x0000006d,0x00040005,0x0000064a, - 0x61726170,0x0000006d,0x00040005,0x0000064b,0x61726170,0x0000006d,0x00040005,0x0000064e, - 0x61726170,0x0000006d,0x00040005,0x00000652,0x61726170,0x0000006d,0x00040005,0x00000654, - 0x61726170,0x0000006d,0x00040005,0x00000655,0x61726170,0x0000006d,0x00040005,0x00000658, - 0x61726170,0x0000006d,0x00040005,0x0000065c,0x61726170,0x0000006d,0x00040005,0x0000065e, - 0x61726170,0x0000006d,0x00040005,0x0000065f,0x61726170,0x0000006d,0x00040005,0x00000662, - 0x61726170,0x0000006d,0x00040005,0x00000666,0x61726170,0x0000006d,0x00040005,0x00000668, - 0x61726170,0x0000006d,0x00040005,0x00000669,0x61726170,0x0000006d,0x00040005,0x0000066c, - 0x61726170,0x0000006d,0x00040005,0x00000670,0x61726170,0x0000006d,0x00040005,0x00000672, - 0x61726170,0x0000006d,0x00040005,0x00000673,0x61726170,0x0000006d,0x00040005,0x00000676, - 0x61726170,0x0000006d,0x00040005,0x0000067a,0x61726170,0x0000006d,0x00040005,0x0000067c, - 0x61726170,0x0000006d,0x00040005,0x0000067d,0x61726170,0x0000006d,0x00040005,0x00000680, - 0x61726170,0x0000006d,0x00040005,0x00000684,0x61726170,0x0000006d,0x00040005,0x00000686, - 0x61726170,0x0000006d,0x00040005,0x00000687,0x61726170,0x0000006d,0x00040005,0x0000068a, - 0x61726170,0x0000006d,0x00040005,0x0000068e,0x61726170,0x0000006d,0x00040005,0x00000690, - 0x61726170,0x0000006d,0x00040005,0x00000691,0x61726170,0x0000006d,0x00040005,0x00000694, - 0x61726170,0x0000006d,0x00040005,0x00000698,0x61726170,0x0000006d,0x00040005,0x0000069a, - 0x61726170,0x0000006d,0x00040005,0x0000069b,0x61726170,0x0000006d,0x00040005,0x0000069e, - 0x61726170,0x0000006d,0x00050005,0x000006a4,0x53785066,0x6c706d61,0x00000065,0x00040005, - 0x000006aa,0x46785066,0x00636172,0x00040005,0x000006ab,0x61726170,0x0000006d,0x00040005, - 0x000006b2,0x61726170,0x0000006d,0x00040005,0x000006b3,0x61726170,0x0000006d,0x00040005, - 0x000006b7,0x61726170,0x0000006d,0x00040005,0x000006b8,0x61726170,0x0000006d,0x00040005, - 0x000006bf,0x61726170,0x0000006d,0x00040005,0x000006c0,0x61726170,0x0000006d,0x00040005, - 0x000006c4,0x61726170,0x0000006d,0x00040005,0x000006c5,0x61726170,0x0000006d,0x00050005, - 0x000006c8,0x53785069,0x6c706d61,0x00000065,0x00050005,0x000006cc,0x6c6f4366,0x5958726f, - 0x00000000,0x00040005,0x000006cd,0x61726170,0x0000006d,0x00040005,0x000006cf,0x61726170, - 0x0000006d,0x00040005,0x000006d2,0x61726170,0x0000006d,0x00040005,0x000006d3,0x61726170, - 0x0000006d,0x00080005,0x000006d9,0x6c694466,0x64657461,0x69746f4d,0x65566e6f,0x726f7463, - 0x00000000,0x00040005,0x000006df,0x61726170,0x0000006d,0x00040005,0x000006ea,0x61726170, - 0x0000006d,0x00070005,0x000006ef,0x70655266,0x656a6f72,0x64657463,0x74736948,0x0079726f, - 0x00040005,0x000006f1,0x61726170,0x0000006d,0x00040005,0x000006f3,0x61726170,0x0000006d, - 0x00040005,0x00000702,0x61726170,0x0000006d,0x00040005,0x00000718,0x61726170,0x0000006d, - 0x00040005,0x00000719,0x61726170,0x0000006d,0x00040005,0x0000071c,0x61726170,0x0000006d, - 0x00040005,0x00000720,0x61726170,0x0000006d,0x00040005,0x00000722,0x61726170,0x0000006d, - 0x00040005,0x00000725,0x61726170,0x0000006d,0x00040005,0x00000729,0x61726170,0x0000006d, - 0x00040005,0x0000072b,0x61726170,0x0000006d,0x00040005,0x0000072e,0x706c4166,0x00006168, - 0x00040005,0x00000734,0x61726170,0x0000006d,0x00040005,0x00000736,0x61726170,0x0000006d, - 0x00040005,0x00000739,0x61726170,0x0000006d,0x00040005,0x0000073c,0x61726170,0x0000006d, - 0x00040005,0x00000740,0x61726170,0x0000006d,0x00040005,0x00000745,0x61726170,0x0000006d, - 0x00070005,0x0000074a,0x566b3466,0x636f6c65,0x46797469,0x6f746361,0x00000072,0x00040005, - 0x0000074e,0x61726170,0x0000006d,0x00060005,0x00000750,0x73694466,0x636e6174,0x63614665, - 0x00726f74,0x00040005,0x00000755,0x61726170,0x0000006d,0x00070005,0x00000757,0x63634166, - 0x6c756d75,0x6f697461,0x6361466e,0x00726f74,0x00060005,0x0000075a,0x61655266,0x76697463, - 0x63614665,0x00726f74,0x00040005,0x0000075b,0x61726170,0x0000006d,0x00040005,0x0000075d, - 0x61726170,0x0000006d,0x00080005,0x0000075f,0x61685366,0x676e6964,0x6e616843,0x61466567, - 0x726f7463,0x00000000,0x00050005,0x00000761,0x786f4266,0x6c616353,0x00005465,0x00040005, - 0x00000762,0x61726170,0x0000006d,0x00040005,0x00000764,0x61726170,0x0000006d,0x00040005, - 0x00000767,0x61726170,0x0000006d,0x00040005,0x00000769,0x61726170,0x0000006d,0x00040005, - 0x0000076b,0x61726170,0x0000006d,0x00040005,0x0000076d,0x61726170,0x0000006d,0x00040005, - 0x0000076f,0x61726170,0x0000006d,0x00040005,0x00000771,0x61726170,0x0000006d,0x00050005, - 0x00000773,0x786f4266,0x6c616353,0x00000065,0x00040005,0x00000775,0x61726170,0x0000006d, - 0x00040005,0x00000776,0x61726170,0x0000006d,0x00040005,0x00000777,0x61726170,0x0000006d, - 0x00060005,0x0000077a,0x61635366,0x4264656c,0x6556786f,0x00000063,0x00080005,0x00000782, - 0x616c4366,0x6465706d,0x6c616353,0x6f426465,0x63655678,0x00000000,0x00040005,0x00000785, - 0x61726170,0x0000006d,0x00040005,0x00000787,0x61726170,0x0000006d,0x00090005,0x00000789, - 0x61725466,0x6f66736e,0x64656d72,0x74736948,0x4379726f,0x726f6c6f,0x00000000,0x00080005, - 0x00000796,0x616c4366,0x6465706d,0x74736948,0x4379726f,0x726f6c6f,0x00000000,0x00090005, - 0x00000799,0x6e694666,0x6c436c61,0x65706d61,0x73694864,0x79726f74,0x6f6c6f43,0x00000072, - 0x00080005,0x000007a0,0x73694866,0x79726f74,0x746e6f43,0x75626972,0x6e6f6974,0x00000000, - 0x00040005,0x000007a1,0x61726170,0x0000006d,0x00040005,0x000007a3,0x61726170,0x0000006d, - 0x00040005,0x000007ac,0x61726170,0x0000006d,0x00040005,0x000007af,0x61726170,0x0000006d, - 0x00040005,0x000007b1,0x61726170,0x0000006d,0x00040005,0x000007b4,0x61726170,0x0000006d, - 0x00080005,0x000007c0,0x66694c66,0x6d697465,0x63654465,0x73616572,0x63614665,0x00726f74, - 0x00040005,0x000007c1,0x61726170,0x0000006d,0x00040005,0x000007c5,0x61726170,0x0000006d, - 0x00040005,0x000007c8,0x61726170,0x0000006d,0x00040005,0x000007cc,0x61726170,0x0000006d, - 0x00040005,0x000007cd,0x61726170,0x0000006d,0x00040005,0x000007d4,0x61726170,0x0000006d, - 0x00040005,0x000007d5,0x61726170,0x0000006d,0x00040005,0x000007db,0x61726170,0x0000006d, - 0x00040005,0x000007de,0x61726170,0x0000006d,0x00070005,0x000007e1,0x77654e66,0x6b636f4c, - 0x65746e49,0x7469736e,0x00000079,0x00040005,0x000007e2,0x61726170,0x0000006d,0x00040005, - 0x000007e9,0x61726170,0x0000006d,0x00040005,0x000007ea,0x61726170,0x0000006d,0x00040005, - 0x000007f4,0x61726170,0x0000006d,0x00040005,0x000007f5,0x61726170,0x0000006d,0x00040005, - 0x000007f7,0x61726170,0x0000006d,0x00040005,0x000007f8,0x61726170,0x0000006d,0x00070005, - 0x000007fb,0x66694c66,0x6d697465,0x63654465,0x73616572,0x00000065,0x00040005,0x00000806, - 0x61726170,0x0000006d,0x00040005,0x00000807,0x61726170,0x0000006d,0x00080005,0x0000080a, - 0x74734566,0x74616d69,0x76556465,0x7478654e,0x6d617246,0x00000065,0x00040005,0x00000810, - 0x61726170,0x0000006d,0x00070005,0x0000081a,0x73614266,0x63634165,0x6c756d75,0x6f697461, - 0x0000006e,0x00040005,0x00000821,0x61726170,0x0000006d,0x00040005,0x00000822,0x61726170, - 0x0000006d,0x00040005,0x00000824,0x61726170,0x0000006d,0x00040005,0x00000826,0x61726170, - 0x0000006d,0x00040005,0x00000828,0x61726170,0x0000006d,0x00040005,0x00000829,0x61726170, - 0x0000006d,0x00040005,0x0000082b,0x61726170,0x0000006d,0x00040005,0x0000082d,0x61726170, - 0x0000006d,0x00040005,0x00000833,0x55724866,0x00000076,0x00040005,0x00000846,0x61726170, - 0x0000006d,0x00040005,0x00000849,0x61726170,0x0000006d,0x00040005,0x0000084a,0x61726170, - 0x0000006d,0x00040005,0x0000084d,0x61726170,0x0000006d,0x00040005,0x0000084f,0x61726170, - 0x0000006d,0x00040005,0x00000853,0x61726170,0x0000006d,0x00040005,0x00000858,0x61726170, - 0x0000006d,0x00080005,0x0000085c,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x485f7655, - 0x00000057,0x00040005,0x0000085f,0x61726170,0x0000006d,0x00040005,0x00000861,0x61726170, - 0x0000006d,0x00040005,0x00000862,0x61726170,0x0000006d,0x00040005,0x00000864,0x61726170, - 0x0000006d,0x00070005,0x00000868,0x72614666,0x73656874,0x70654474,0x76556874,0x00000000, - 0x00040005,0x0000086d,0x61726170,0x0000006d,0x00040005,0x00000870,0x61726170,0x0000006d, - 0x00040005,0x00000871,0x61726170,0x0000006d,0x00040005,0x00000873,0x61726170,0x0000006d, - 0x00080005,0x00000881,0x6c694466,0x64657461,0x63616552,0x65766974,0x6b73614d,0x00000073, - 0x00040005,0x00000882,0x61726170,0x0000006d,0x00040005,0x00000886,0x61726170,0x0000006d, - 0x00040005,0x0000088b,0x61726170,0x0000006d,0x00040005,0x00000890,0x61726170,0x0000006d, - 0x00040005,0x00000895,0x61726170,0x0000006d,0x00040005,0x000008ab,0x61726170,0x0000736d, - 0x00040005,0x000008ac,0x61746164,0x00000000,0x00040005,0x000008ad,0x61726170,0x0000006d, - 0x00040005,0x000008af,0x61726170,0x0000006d,0x00040005,0x000008b1,0x61726170,0x0000006d, - 0x00040005,0x000008c1,0x61726170,0x0000006d,0x00040005,0x000008c5,0x61726170,0x0000006d, - 0x00040005,0x000008c7,0x61726170,0x0000006d,0x00040005,0x000008cc,0x61726170,0x0000006d, - 0x00040005,0x000008d1,0x61726170,0x0000006d,0x00040005,0x000008d6,0x61726170,0x0000006d, - 0x00040005,0x000008db,0x61726170,0x0000006d,0x00040005,0x000008e5,0x61726170,0x0000006d, - 0x00040005,0x000008e8,0x61726170,0x0000006d,0x00040005,0x000008f3,0x61726170,0x0000006d, - 0x00040005,0x000008f5,0x61726170,0x0000006d,0x00040005,0x000008f7,0x61726170,0x0000006d, - 0x00040005,0x000008f9,0x61726170,0x0000006d,0x00080005,0x000008fd,0x475f6c67,0x61626f6c, - 0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000901,0x61726170,0x0000006d, - 0x00060005,0x00000905,0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00070005,0x00000908, - 0x755f7772,0x61637370,0x5f64656c,0x7074756f,0x00007475,0x00060005,0x00000909,0x75635f72, - 0x6e657272,0x756c5f74,0x0000616d,0x00060005,0x0000090a,0x616c5f72,0x6f7a636e,0x756c5f73, - 0x00000074,0x00030047,0x0000018f,0x00000002,0x00050048,0x0000018f,0x00000000,0x00000023, - 0x00000000,0x00050048,0x0000018f,0x00000001,0x00000023,0x00000008,0x00050048,0x0000018f, - 0x00000002,0x00000023,0x00000010,0x00050048,0x0000018f,0x00000003,0x00000023,0x00000018, - 0x00050048,0x0000018f,0x00000004,0x00000023,0x00000020,0x00050048,0x0000018f,0x00000005, - 0x00000023,0x00000028,0x00050048,0x0000018f,0x00000006,0x00000023,0x00000030,0x00050048, - 0x0000018f,0x00000007,0x00000023,0x00000040,0x00050048,0x0000018f,0x00000008,0x00000023, - 0x00000048,0x00050048,0x0000018f,0x00000009,0x00000023,0x00000050,0x00050048,0x0000018f, - 0x0000000a,0x00000023,0x00000058,0x00050048,0x0000018f,0x0000000b,0x00000023,0x00000060, - 0x00050048,0x0000018f,0x0000000c,0x00000023,0x00000068,0x00050048,0x0000018f,0x0000000d, - 0x00000023,0x0000006c,0x00050048,0x0000018f,0x0000000e,0x00000023,0x00000070,0x00050048, - 0x0000018f,0x0000000f,0x00000023,0x00000074,0x00050048,0x0000018f,0x00000010,0x00000023, - 0x00000078,0x00050048,0x0000018f,0x00000011,0x00000023,0x0000007c,0x00050048,0x0000018f, - 0x00000012,0x00000023,0x00000080,0x00050048,0x0000018f,0x00000013,0x00000023,0x00000084, - 0x00050048,0x0000018f,0x00000014,0x00000023,0x00000088,0x00050048,0x0000018f,0x00000015, - 0x00000023,0x0000008c,0x00050048,0x0000018f,0x00000016,0x00000023,0x00000090,0x00040047, - 0x00000191,0x00000021,0x0000000c,0x00040047,0x00000191,0x00000022,0x00000000,0x00040047, - 0x000001c9,0x00000021,0x00000008,0x00040047,0x000001c9,0x00000022,0x00000000,0x00040047, - 0x000001d0,0x00000021,0x00000003,0x00040047,0x000001d0,0x00000022,0x00000000,0x00030047, - 0x000001d8,0x00000019,0x00040047,0x000001d8,0x00000021,0x00000009,0x00040047,0x000001d8, - 0x00000022,0x00000000,0x00040047,0x000001dc,0x00000021,0x00000005,0x00040047,0x000001dc, - 0x00000022,0x00000000,0x00040047,0x000001e4,0x00000021,0x000003e9,0x00040047,0x000001e4, - 0x00000022,0x00000000,0x00040047,0x000001ef,0x00000021,0x00000007,0x00040047,0x000001ef, - 0x00000022,0x00000000,0x00040047,0x000001fa,0x00000021,0x0000000b,0x00040047,0x000001fa, - 0x00000022,0x00000000,0x00040047,0x00000205,0x00000021,0x00000002,0x00040047,0x00000205, - 0x00000022,0x00000000,0x00040047,0x0000020d,0x00000021,0x00000000,0x00040047,0x0000020d, - 0x00000022,0x00000000,0x00040047,0x00000219,0x00000021,0x00000001,0x00040047,0x00000219, - 0x00000022,0x00000000,0x00040047,0x000008fd,0x0000000b,0x0000001c,0x00040047,0x00000905, - 0x00000021,0x000003e8,0x00040047,0x00000905,0x00000022,0x00000000,0x00030047,0x00000908, - 0x00000019,0x00040047,0x00000908,0x00000021,0x0000000a,0x00040047,0x00000908,0x00000022, - 0x00000000,0x00040047,0x00000909,0x00000021,0x00000006,0x00040047,0x00000909,0x00000022, - 0x00000000,0x00040047,0x0000090a,0x00000021,0x00000004,0x00040047,0x0000090a,0x00000022, - 0x00000000,0x00040047,0x00000911,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021, - 0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040020,0x00000007,0x00000007, - 0x00000006,0x00060021,0x00000008,0x00000006,0x00000007,0x00000007,0x00000007,0x00040017, - 0x0000000e,0x00000006,0x00000003,0x00040020,0x0000000f,0x00000007,0x0000000e,0x00060021, - 0x00000010,0x0000000e,0x0000000f,0x0000000f,0x00000007,0x00040021,0x00000016,0x00000006, - 0x00000007,0x00040017,0x0000001a,0x00000006,0x00000002,0x00040020,0x0000001b,0x00000007, - 0x0000001a,0x00040021,0x0000001c,0x0000001a,0x0000001b,0x00050021,0x00000020,0x00000006, - 0x00000007,0x00000007,0x00050021,0x00000025,0x0000001a,0x0000001b,0x0000001b,0x00050021, - 0x0000002a,0x0000000e,0x0000000f,0x0000000f,0x00040017,0x0000002f,0x00000006,0x00000004, - 0x00040020,0x00000030,0x00000007,0x0000002f,0x00050021,0x00000031,0x0000002f,0x00000030, - 0x00000030,0x00040015,0x00000036,0x00000020,0x00000001,0x00040020,0x00000037,0x00000007, - 0x00000036,0x00050021,0x00000038,0x00000036,0x00000037,0x00000037,0x00040017,0x00000055, - 0x00000036,0x00000002,0x00030021,0x00000056,0x00000055,0x00030021,0x0000005f,0x0000001a, - 0x00030021,0x00000064,0x00000006,0x00040020,0x0000006d,0x00000007,0x00000055,0x00040021, - 0x0000006e,0x0000000e,0x0000006d,0x00040021,0x00000072,0x0000002f,0x0000006d,0x00050021, - 0x00000076,0x00000002,0x0000006d,0x00000030,0x00040021,0x0000007d,0x00000006,0x0000001b, - 0x00040021,0x00000084,0x00000006,0x0000006d,0x00050021,0x00000088,0x00000002,0x0000006d, - 0x00000007,0x00040021,0x0000008d,0x0000001a,0x0000006d,0x00040021,0x00000093,0x0000002f, - 0x0000001b,0x0007001e,0x0000009a,0x0000000e,0x0000000e,0x0000000e,0x0000000e,0x00000006, - 0x00040020,0x0000009b,0x00000007,0x0000009a,0x00060021,0x0000009c,0x00000002,0x0000009b, - 0x0000000e,0x00000006,0x00020014,0x000000a2,0x00040020,0x000000a3,0x00000007,0x000000a2, - 0x00070021,0x000000a4,0x00000002,0x000000a3,0x0000009b,0x0000000e,0x00000006,0x00040021, - 0x000000ab,0x00000002,0x0000009b,0x00040021,0x000000af,0x0000000e,0x0000000f,0x00040021, - 0x000000bc,0x000000a2,0x0000001b,0x00060021,0x000000c0,0x00000055,0x0000006d,0x0000006d, - 0x0000006d,0x00060021,0x000000c6,0x0000001a,0x0000001b,0x0000006d,0x0000006d,0x00050021, - 0x000000cc,0x000000a2,0x0000006d,0x0000006d,0x00080021,0x000000dd,0x0000002f,0x00000030, - 0x00000030,0x00000030,0x00000030,0x00000007,0x0012001e,0x000000e5,0x0000002f,0x0000002f, + 0x3366762d,0x2d31662d,0x2d336676,0x662d3166,0x31662d31,0x00003b31,0x00040005,0x00000129, + 0x61726170,0x0000736d,0x00040005,0x0000012a,0x61746164,0x00000000,0x00370005,0x0000012f, + 0x706d6f43,0x42657475,0x41657361,0x6d756363,0x74616c75,0x576e6f69,0x68676965,0x74732874, + 0x74637572,0x6363412d,0x6c756d75,0x6f697461,0x7361506e,0x6d6f4373,0x506e6f6d,0x6d617261, + 0x69762d73,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x66762d32,0x31662d32,0x2d31662d, + 0x662d3166,0x31662d31,0x2d31662d,0x622d3166,0x31622d31,0x74733b31,0x74637572,0x6363412d, + 0x6c756d75,0x6f697461,0x7361506e,0x74614473,0x74732d61,0x74637572,0x6365522d,0x69666974, + 0x69746163,0x6f426e6f,0x66762d78,0x66762d33,0x66762d33,0x66762d33,0x31662d33,0x66762d31, + 0x31662d33,0x3366762d,0x2d31662d,0x662d3166,0x003b3131,0x00040005,0x0000012d,0x61726170, + 0x0000736d,0x00040005,0x0000012e,0x61746164,0x00000000,0x00340005,0x00000135,0x74696e49, + 0x73736150,0x61746144,0x32697628,0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974, + 0x73736150,0x6d6d6f43,0x61506e6f,0x736d6172,0x3269762d,0x3266762d,0x3266762d,0x3266762d, + 0x3266762d,0x3266762d,0x2d31662d,0x662d3166,0x31662d31,0x2d31662d,0x662d3166,0x31622d31, + 0x3131622d,0x7274733b,0x2d746375,0x75636341,0x616c756d,0x6e6f6974,0x73736150,0x61746144, + 0x7274732d,0x2d746375,0x74636552,0x63696669,0x6f697461,0x786f426e,0x3366762d,0x3366762d, + 0x3366762d,0x3366762d,0x3131662d,0x3366762d,0x2d31662d,0x2d336676,0x662d3166,0x31662d31, + 0x00003b31,0x00050005,0x00000132,0x48785069,0x736f5072,0x00000000,0x00040005,0x00000133, + 0x61726170,0x0000736d,0x00040005,0x00000134,0x61746164,0x00000000,0x00060005,0x00000139, + 0x75636341,0x616c756d,0x76286574,0x003b3269,0x00050005,0x00000138,0x48785069,0x736f5072, + 0x00000000,0x00070005,0x00000189,0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000, + 0x00060006,0x00000189,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006,0x00000189, + 0x00000001,0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000, + 0x00070006,0x00000189,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006, + 0x00000189,0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365, + 0x00000065,0x00070006,0x00000189,0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a, + 0x00070006,0x00000189,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006, + 0x00000189,0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006, + 0x00000189,0x00000007,0x74694a66,0x00726574,0x00090006,0x00000189,0x00000008,0x65725066, + 0x756f6976,0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x00000189,0x00000009, + 0x746f4d66,0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x00000189,0x0000000a, + 0x776f4466,0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x00000189,0x0000000b, + 0x746f4d66,0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69, + 0x00060006,0x00000189,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006,0x00000189, + 0x0000000d,0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006, + 0x00000189,0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x00000189,0x0000000f, + 0x6c654466,0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x00000189,0x00000010, + 0x65695666,0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006, + 0x00000189,0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x00000189,0x00000012, + 0x6c655666,0x7469636f,0x63614679,0x00726f74,0x00080006,0x00000189,0x00000013,0x61655266, + 0x76697463,0x73656e65,0x61635373,0x0000656c,0x00080006,0x00000189,0x00000014,0x61685366, + 0x676e6964,0x6e616843,0x63536567,0x00656c61,0x000a0006,0x00000189,0x00000015,0x63634166, + 0x6c756d75,0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006,0x00000189, + 0x00000016,0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974, + 0x00000000,0x00060005,0x0000018b,0x53466263,0x70553352,0x6c616373,0x00007265,0x00080005, + 0x000001c3,0x6e695f72,0x5f747570,0x6f6c6f63,0x696a5f72,0x72657474,0x00006465,0x00090005, + 0x000001ca,0x6e695f72,0x6e726574,0x755f6c61,0x61637370,0x5f64656c,0x6f6c6f63,0x00000072, + 0x00090005,0x000001d2,0x695f7772,0x7265746e,0x5f6c616e,0x63737075,0x64656c61,0x6c6f635f, + 0x0000726f,0x00080005,0x000001d6,0x61665f72,0x65687472,0x645f7473,0x68747065,0x70696d5f, + 0x00000031,0x00060005,0x000001de,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00070005, + 0x000001e9,0x756c5f72,0x695f616d,0x6174736e,0x696c6962,0x00007974,0x00060005,0x000001f4, + 0x6e5f7772,0x6c5f7765,0x736b636f,0x00000000,0x00090005,0x000001ff,0x69645f72,0x6574616c, + 0x6f6d5f64,0x6e6f6974,0x6365765f,0x73726f74,0x00000000,0x00050005,0x00000206,0x6f707865, + 0x65727573,0x00000000,0x00070005,0x00000207,0x6e695f72,0x5f747570,0x6f707865,0x65727573, + 0x00000000,0x00090005,0x00000213,0x69645f72,0x6574616c,0x65725f64,0x69746361,0x6d5f6576, + 0x736b7361,0x00000000,0x00060005,0x00000225,0x67696577,0x64657468,0x706d6153,0x0000656c, + 0x00040005,0x00000231,0x61726170,0x0000006d,0x00040005,0x00000236,0x61726170,0x0000006d, + 0x00040005,0x00000239,0x61726170,0x0000006d,0x00040005,0x0000023c,0x61726170,0x0000006d, + 0x00040005,0x0000023f,0x61726170,0x0000006d,0x00060005,0x00000242,0x67696577,0x64657468, + 0x706d6153,0x0000656c,0x00040005,0x0000026e,0x44647473,0x00007665,0x00040005,0x0000027b, + 0x62675266,0x00000000,0x00040005,0x00000297,0x6f435966,0x00006743,0x00040005,0x000002d3, + 0x75736572,0x0000746c,0x00040005,0x000002da,0x61726170,0x0000006d,0x00040005,0x000002dd, + 0x61726170,0x0000006d,0x00040005,0x000002df,0x61726170,0x0000006d,0x00040005,0x000002e0, + 0x61726170,0x0000006d,0x00040005,0x000002e6,0x61726170,0x0000006d,0x00040005,0x000002e9, + 0x61726170,0x0000006d,0x00040005,0x000002eb,0x61726170,0x0000006d,0x00040005,0x000002ec, + 0x61726170,0x0000006d,0x00060005,0x000002f2,0x6d615366,0x4c656c70,0x7461636f,0x006e6f69, + 0x00070005,0x000002f7,0x616c4366,0x6465706d,0x61636f4c,0x6e6f6974,0x00000000,0x00040005, + 0x000002fc,0x61726170,0x0000006d,0x00040005,0x000002fe,0x61726170,0x0000006d,0x00040005, + 0x00000300,0x61726170,0x0000006d,0x00040005,0x00000301,0x61726170,0x0000006d,0x00050005, + 0x00000303,0x616c4366,0x6465706d,0x00007655,0x00040005,0x00000332,0x61726170,0x0000006d, + 0x00040005,0x00000333,0x61726170,0x0000006d,0x00040005,0x00000335,0x61726170,0x0000006d, + 0x00030005,0x0000033a,0x00000061,0x00030005,0x0000033f,0x00000062,0x00040005,0x00000351, + 0x61726170,0x0000006d,0x00040005,0x00000353,0x61726170,0x0000006d,0x00040005,0x00000355, + 0x61726170,0x0000006d,0x00050005,0x0000035a,0x69655766,0x30746867,0x00000000,0x00040005, + 0x0000035e,0x61726170,0x0000006d,0x00050005,0x00000360,0x69655766,0x31746867,0x00000000, + 0x00040005,0x00000364,0x61726170,0x0000006d,0x00050005,0x00000366,0x69655766,0x32746867, + 0x00000000,0x00040005,0x00000369,0x61726170,0x0000006d,0x00050005,0x0000036b,0x69655766, + 0x33746867,0x00000000,0x00040005,0x0000036e,0x61726170,0x0000006d,0x00050005,0x0000038a, + 0x6c6f4366,0x3058726f,0x00000000,0x00040005,0x0000038b,0x61726170,0x0000006d,0x00040005, + 0x0000038e,0x61726170,0x0000006d,0x00040005,0x00000391,0x61726170,0x0000006d,0x00040005, + 0x00000394,0x61726170,0x0000006d,0x00040005,0x00000397,0x61726170,0x0000006d,0x00050005, + 0x0000039b,0x6c6f4366,0x3158726f,0x00000000,0x00040005,0x0000039e,0x61726170,0x0000006d, + 0x00040005,0x000003a1,0x61726170,0x0000006d,0x00040005,0x000003a4,0x61726170,0x0000006d, + 0x00040005,0x000003a7,0x61726170,0x0000006d,0x00040005,0x000003aa,0x61726170,0x0000006d, + 0x00050005,0x000003ae,0x6c6f4366,0x3258726f,0x00000000,0x00040005,0x000003b2,0x61726170, + 0x0000006d,0x00040005,0x000003b5,0x61726170,0x0000006d,0x00040005,0x000003b8,0x61726170, + 0x0000006d,0x00040005,0x000003bb,0x61726170,0x0000006d,0x00040005,0x000003be,0x61726170, + 0x0000006d,0x00050005,0x000003c2,0x6c6f4366,0x3358726f,0x00000000,0x00040005,0x000003c5, + 0x61726170,0x0000006d,0x00040005,0x000003c8,0x61726170,0x0000006d,0x00040005,0x000003cb, + 0x61726170,0x0000006d,0x00040005,0x000003ce,0x61726170,0x0000006d,0x00040005,0x000003d1, + 0x61726170,0x0000006d,0x00050005,0x000003d5,0x6c6f4366,0x5958726f,0x00000000,0x00040005, + 0x000003d6,0x61726170,0x0000006d,0x00040005,0x000003d8,0x61726170,0x0000006d,0x00040005, + 0x000003da,0x61726170,0x0000006d,0x00040005,0x000003dc,0x61726170,0x0000006d,0x00040005, + 0x000003de,0x61726170,0x0000006d,0x00070005,0x000003e5,0x72654466,0x69676e69,0x6153676e, + 0x656c706d,0x00000073,0x00060005,0x000003ef,0x72654466,0x69676e69,0x694d676e,0x0000006e, + 0x00060005,0x000003f2,0x72654466,0x69676e69,0x614d676e,0x00000078,0x00060005,0x000003f5, + 0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x000003fe,0x61726170,0x0000006d, + 0x00040005,0x00000400,0x61726170,0x0000006d,0x00040005,0x00000405,0x61726170,0x0000006d, + 0x00040005,0x00000407,0x61726170,0x0000006d,0x00040005,0x00000414,0x75736572,0x0000746c, + 0x00040005,0x0000041b,0x61726170,0x0000006d,0x00040005,0x0000041e,0x61726170,0x0000006d, + 0x00040005,0x00000420,0x61726170,0x0000006d,0x00040005,0x00000421,0x61726170,0x0000006d, + 0x00040005,0x00000427,0x61726170,0x0000006d,0x00040005,0x0000042a,0x61726170,0x0000006d, + 0x00040005,0x0000042c,0x61726170,0x0000006d,0x00040005,0x0000042d,0x61726170,0x0000006d, + 0x00080005,0x00000439,0x63725366,0x706d6153,0x664f656c,0x74657366,0x73616942,0x00006465, + 0x00060005,0x0000043e,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00040005,0x00000442, + 0x61726170,0x0000006d,0x00060005,0x00000447,0x72654b66,0x536c656e,0x42657a69,0x00736169, + 0x00040005,0x00000450,0x61726170,0x0000006d,0x00040005,0x00000451,0x61726170,0x0000006d, + 0x00040005,0x00000456,0x62675266,0x00000000,0x00040005,0x00000458,0x61726170,0x0000006d, + 0x00040005,0x0000045b,0x61726170,0x0000006d,0x00040005,0x0000045c,0x61726170,0x0000006d, + 0x00060005,0x00000460,0x65725066,0x65726170,0x6f435964,0x00006743,0x00040005,0x00000461, + 0x61726170,0x0000006d,0x00060005,0x00000467,0x74734466,0x7074754f,0x6f507475,0x00000073, + 0x00060005,0x0000046b,0x63725366,0x7074754f,0x6f507475,0x00000073,0x00060005,0x0000046f, + 0x63725369,0x75706e49,0x736f5074,0x00000000,0x00070005,0x00000473,0x63725366,0x696a6e55, + 0x72657474,0x6f506465,0x00000073,0x00070005,0x00000479,0x73614266,0x6d615365,0x4f656c70, + 0x65736666,0x00000074,0x00050005,0x0000047d,0x7366666f,0x4c547465,0x00000000,0x00050005, + 0x0000048e,0x696c4662,0x776f5270,0x00000000,0x00050005,0x00000494,0x696c4662,0x6c6f4370, + 0x00000000,0x00050005,0x0000049a,0x66664f66,0x54746573,0x0000004c,0x00070005,0x0000049d, + 0x49734962,0x6974696e,0x61536c61,0x656c706d,0x00000000,0x00060005,0x000004a0,0x6d615369, + 0x49656c70,0x7865646e,0x00000000,0x00030005,0x000004a1,0x00776f72,0x00030005,0x000004a9, + 0x006c6f63,0x00060005,0x000004b1,0x6d615369,0x43656c70,0x6f526c6f,0x00000077,0x00060005, + 0x000004c5,0x63725369,0x706d6153,0x6f50656c,0x00000073,0x00060005,0x000004cb,0x6d615369, + 0x43656c70,0x64726f6f,0x00000000,0x00040005,0x000004cd,0x61726170,0x0000006d,0x00040005, + 0x000004cf,0x61726170,0x0000006d,0x00040005,0x000004d0,0x61726170,0x0000006d,0x00050005, + 0x000004d5,0x6d615366,0x73656c70,0x00000000,0x00040005,0x000004d7,0x61726170,0x0000006d, + 0x00060005,0x000004e1,0x72654b66,0x426c656e,0x4d736169,0x00007861,0x00040005,0x000004e2, + 0x61726170,0x0000006d,0x00060005,0x000004e6,0x72654b66,0x426c656e,0x4d736169,0x00006e69, + 0x00040005,0x000004eb,0x61726170,0x0000006d,0x00040005,0x000004ec,0x61726170,0x0000006d, + 0x00070005,0x000004ee,0x72654b66,0x426c656e,0x57736169,0x68676965,0x00000074,0x00040005, + 0x000004f8,0x61726170,0x0000006d,0x00040005,0x000004fa,0x61726170,0x0000006d,0x00040005, + 0x000004fb,0x61726170,0x0000006d,0x00040005,0x000004fd,0x61726170,0x0000006d,0x00040005, + 0x000004fe,0x61726170,0x0000006d,0x00050005,0x00000500,0x72654b66,0x426c656e,0x00736169, + 0x00040005,0x00000501,0x61726170,0x0000006d,0x00040005,0x00000503,0x61726170,0x0000006d, + 0x00040005,0x00000505,0x61726170,0x0000006d,0x00030005,0x00000508,0x00776f72,0x00030005, + 0x00000510,0x006c6f63,0x00060005,0x00000518,0x706d6173,0x6f43656c,0x776f526c,0x00000000, + 0x00040005,0x0000052c,0x66664f66,0x00746573,0x00070005,0x00000531,0x63725366,0x706d6153, + 0x664f656c,0x74657366,0x00000000,0x00060005,0x00000535,0x63725369,0x706d6153,0x6f50656c, + 0x00000073,0x00060005,0x0000053b,0x536e4f66,0x65657263,0x6361466e,0x00726f74,0x00040005, + 0x0000053e,0x61726170,0x0000006d,0x00040005,0x0000053f,0x61726170,0x0000006d,0x00060005, + 0x00000546,0x6d615366,0x57656c70,0x68676965,0x00000074,0x00040005,0x00000548,0x61726170, + 0x0000006d,0x00040005,0x0000054a,0x61726170,0x0000006d,0x00070005,0x0000055c,0x63725366, + 0x706d6153,0x664f656c,0x74657366,0x00007153,0x00070005,0x00000560,0x786f4266,0x706d6153, + 0x6557656c,0x74686769,0x00000000,0x00060005,0x00000567,0x696e4962,0x6c616974,0x706d6153, + 0x0000656c,0x00040005,0x00000571,0x61726170,0x0000006d,0x00040005,0x00000573,0x61726170, + 0x0000006d,0x00040005,0x0000057f,0x61726170,0x0000006d,0x00040005,0x0000059e,0x61726170, + 0x0000006d,0x00040005,0x000005a1,0x61726170,0x0000006d,0x00040005,0x000005af,0x61726170, + 0x0000006d,0x00040005,0x000005b4,0x706d6153,0x0073656c,0x00040005,0x000005b6,0x61726170, + 0x0000006d,0x00040005,0x000005b8,0x61726170,0x0000006d,0x00040005,0x000005b9,0x61726170, + 0x0000006d,0x00040005,0x000005bc,0x61726170,0x0000006d,0x00040005,0x000005c0,0x61726170, + 0x0000006d,0x00040005,0x000005c2,0x61726170,0x0000006d,0x00040005,0x000005c3,0x61726170, + 0x0000006d,0x00040005,0x000005c6,0x61726170,0x0000006d,0x00040005,0x000005ca,0x61726170, + 0x0000006d,0x00040005,0x000005cc,0x61726170,0x0000006d,0x00040005,0x000005cd,0x61726170, + 0x0000006d,0x00040005,0x000005d0,0x61726170,0x0000006d,0x00040005,0x000005d4,0x61726170, + 0x0000006d,0x00040005,0x000005d6,0x61726170,0x0000006d,0x00040005,0x000005d7,0x61726170, + 0x0000006d,0x00040005,0x000005da,0x61726170,0x0000006d,0x00040005,0x000005de,0x61726170, + 0x0000006d,0x00040005,0x000005e0,0x61726170,0x0000006d,0x00040005,0x000005e1,0x61726170, + 0x0000006d,0x00040005,0x000005e4,0x61726170,0x0000006d,0x00040005,0x000005e7,0x61726170, + 0x0000006d,0x00040005,0x000005e9,0x61726170,0x0000006d,0x00040005,0x000005ea,0x61726170, + 0x0000006d,0x00040005,0x000005ed,0x61726170,0x0000006d,0x00040005,0x000005f1,0x61726170, + 0x0000006d,0x00040005,0x000005f3,0x61726170,0x0000006d,0x00040005,0x000005f4,0x61726170, + 0x0000006d,0x00040005,0x000005f7,0x61726170,0x0000006d,0x00040005,0x000005fb,0x61726170, + 0x0000006d,0x00040005,0x000005fd,0x61726170,0x0000006d,0x00040005,0x000005fe,0x61726170, + 0x0000006d,0x00040005,0x00000601,0x61726170,0x0000006d,0x00040005,0x00000605,0x61726170, + 0x0000006d,0x00040005,0x00000607,0x61726170,0x0000006d,0x00040005,0x00000608,0x61726170, + 0x0000006d,0x00040005,0x0000060b,0x61726170,0x0000006d,0x00040005,0x0000060f,0x61726170, + 0x0000006d,0x00040005,0x00000611,0x61726170,0x0000006d,0x00040005,0x00000612,0x61726170, + 0x0000006d,0x00040005,0x00000615,0x61726170,0x0000006d,0x00040005,0x00000619,0x61726170, + 0x0000006d,0x00040005,0x0000061b,0x61726170,0x0000006d,0x00040005,0x0000061c,0x61726170, + 0x0000006d,0x00040005,0x0000061f,0x61726170,0x0000006d,0x00040005,0x00000623,0x61726170, + 0x0000006d,0x00040005,0x00000625,0x61726170,0x0000006d,0x00040005,0x00000626,0x61726170, + 0x0000006d,0x00040005,0x00000629,0x61726170,0x0000006d,0x00040005,0x0000062d,0x61726170, + 0x0000006d,0x00040005,0x0000062f,0x61726170,0x0000006d,0x00040005,0x00000630,0x61726170, + 0x0000006d,0x00040005,0x00000633,0x61726170,0x0000006d,0x00040005,0x00000637,0x61726170, + 0x0000006d,0x00040005,0x00000639,0x61726170,0x0000006d,0x00040005,0x0000063a,0x61726170, + 0x0000006d,0x00040005,0x0000063d,0x61726170,0x0000006d,0x00040005,0x00000641,0x61726170, + 0x0000006d,0x00040005,0x00000643,0x61726170,0x0000006d,0x00040005,0x00000644,0x61726170, + 0x0000006d,0x00040005,0x00000647,0x61726170,0x0000006d,0x00040005,0x0000064b,0x61726170, + 0x0000006d,0x00040005,0x0000064d,0x61726170,0x0000006d,0x00040005,0x0000064e,0x61726170, + 0x0000006d,0x00040005,0x00000651,0x61726170,0x0000006d,0x00050005,0x00000657,0x53785066, + 0x6c706d61,0x00000065,0x00040005,0x0000065d,0x46785066,0x00636172,0x00040005,0x0000065e, + 0x61726170,0x0000006d,0x00040005,0x00000665,0x61726170,0x0000006d,0x00040005,0x00000666, + 0x61726170,0x0000006d,0x00040005,0x0000066a,0x61726170,0x0000006d,0x00040005,0x0000066b, + 0x61726170,0x0000006d,0x00040005,0x00000672,0x61726170,0x0000006d,0x00040005,0x00000673, + 0x61726170,0x0000006d,0x00040005,0x00000677,0x61726170,0x0000006d,0x00040005,0x00000678, + 0x61726170,0x0000006d,0x00050005,0x0000067b,0x53785069,0x6c706d61,0x00000065,0x00050005, + 0x0000067f,0x6c6f4366,0x5958726f,0x00000000,0x00040005,0x00000680,0x61726170,0x0000006d, + 0x00040005,0x00000682,0x61726170,0x0000006d,0x00040005,0x00000685,0x61726170,0x0000006d, + 0x00040005,0x00000686,0x61726170,0x0000006d,0x00080005,0x0000068c,0x6c694466,0x64657461, + 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x00000692,0x61726170,0x0000006d, + 0x00040005,0x0000069d,0x61726170,0x0000006d,0x00070005,0x000006a2,0x70655266,0x656a6f72, + 0x64657463,0x74736948,0x0079726f,0x00040005,0x000006a4,0x61726170,0x0000006d,0x00040005, + 0x000006a6,0x61726170,0x0000006d,0x00040005,0x000006b5,0x61726170,0x0000006d,0x00040005, + 0x000006cb,0x61726170,0x0000006d,0x00040005,0x000006cc,0x61726170,0x0000006d,0x00040005, + 0x000006cf,0x706c4166,0x00006168,0x00040005,0x000006d5,0x61726170,0x0000006d,0x00040005, + 0x000006d7,0x61726170,0x0000006d,0x00040005,0x000006da,0x61726170,0x0000006d,0x00040005, + 0x000006dd,0x61726170,0x0000006d,0x00040005,0x000006e1,0x61726170,0x0000006d,0x00070005, + 0x000006e6,0x566b3466,0x636f6c65,0x46797469,0x6f746361,0x00000072,0x00040005,0x000006ea, + 0x61726170,0x0000006d,0x00060005,0x000006ec,0x73694466,0x636e6174,0x63614665,0x00726f74, + 0x00040005,0x000006f1,0x61726170,0x0000006d,0x00070005,0x000006f3,0x63634166,0x6c756d75, + 0x6f697461,0x6361466e,0x00726f74,0x00060005,0x000006f6,0x61655266,0x76697463,0x63614665, + 0x00726f74,0x00040005,0x000006f7,0x61726170,0x0000006d,0x00040005,0x000006f9,0x61726170, + 0x0000006d,0x00080005,0x000006fb,0x61685366,0x676e6964,0x6e616843,0x61466567,0x726f7463, + 0x00000000,0x00050005,0x000006fd,0x786f4266,0x6c616353,0x00005465,0x00040005,0x000006fe, + 0x61726170,0x0000006d,0x00040005,0x00000700,0x61726170,0x0000006d,0x00040005,0x00000703, + 0x61726170,0x0000006d,0x00040005,0x00000705,0x61726170,0x0000006d,0x00040005,0x00000707, + 0x61726170,0x0000006d,0x00040005,0x00000709,0x61726170,0x0000006d,0x00040005,0x0000070b, + 0x61726170,0x0000006d,0x00040005,0x0000070d,0x61726170,0x0000006d,0x00050005,0x0000070f, + 0x786f4266,0x6c616353,0x00000065,0x00040005,0x00000711,0x61726170,0x0000006d,0x00040005, + 0x00000712,0x61726170,0x0000006d,0x00040005,0x00000713,0x61726170,0x0000006d,0x00060005, + 0x00000716,0x61635366,0x4264656c,0x6556786f,0x00000063,0x00080005,0x0000071e,0x616c4366, + 0x6465706d,0x6c616353,0x6f426465,0x63655678,0x00000000,0x00040005,0x00000721,0x61726170, + 0x0000006d,0x00040005,0x00000723,0x61726170,0x0000006d,0x00090005,0x00000725,0x61725466, + 0x6f66736e,0x64656d72,0x74736948,0x4379726f,0x726f6c6f,0x00000000,0x00080005,0x00000732, + 0x616c4366,0x6465706d,0x74736948,0x4379726f,0x726f6c6f,0x00000000,0x00090005,0x00000735, + 0x6e694666,0x6c436c61,0x65706d61,0x73694864,0x79726f74,0x6f6c6f43,0x00000072,0x00080005, + 0x0000073c,0x73694866,0x79726f74,0x746e6f43,0x75626972,0x6e6f6974,0x00000000,0x00040005, + 0x0000073d,0x61726170,0x0000006d,0x00040005,0x0000073f,0x61726170,0x0000006d,0x00040005, + 0x00000748,0x61726170,0x0000006d,0x00040005,0x0000074b,0x61726170,0x0000006d,0x00040005, + 0x0000074d,0x61726170,0x0000006d,0x00040005,0x00000750,0x61726170,0x0000006d,0x00080005, + 0x0000075c,0x66694c66,0x6d697465,0x63654465,0x73616572,0x63614665,0x00726f74,0x00040005, + 0x0000075d,0x61726170,0x0000006d,0x00040005,0x00000761,0x61726170,0x0000006d,0x00040005, + 0x00000764,0x61726170,0x0000006d,0x00040005,0x00000768,0x61726170,0x0000006d,0x00040005, + 0x00000769,0x61726170,0x0000006d,0x00040005,0x00000770,0x61726170,0x0000006d,0x00040005, + 0x00000771,0x61726170,0x0000006d,0x00040005,0x00000777,0x61726170,0x0000006d,0x00040005, + 0x0000077a,0x61726170,0x0000006d,0x00070005,0x0000077d,0x77654e66,0x6b636f4c,0x65746e49, + 0x7469736e,0x00000079,0x00040005,0x0000077e,0x61726170,0x0000006d,0x00040005,0x00000785, + 0x61726170,0x0000006d,0x00040005,0x00000786,0x61726170,0x0000006d,0x00040005,0x00000790, + 0x61726170,0x0000006d,0x00040005,0x00000791,0x61726170,0x0000006d,0x00040005,0x00000793, + 0x61726170,0x0000006d,0x00040005,0x00000794,0x61726170,0x0000006d,0x00070005,0x00000797, + 0x66694c66,0x6d697465,0x63654465,0x73616572,0x00000065,0x00040005,0x000007a2,0x61726170, + 0x0000006d,0x00040005,0x000007a3,0x61726170,0x0000006d,0x00080005,0x000007a6,0x74734566, + 0x74616d69,0x76556465,0x7478654e,0x6d617246,0x00000065,0x00040005,0x000007ac,0x61726170, + 0x0000006d,0x00070005,0x000007b6,0x73614266,0x63634165,0x6c756d75,0x6f697461,0x0000006e, + 0x00040005,0x000007bd,0x61726170,0x0000006d,0x00040005,0x000007be,0x61726170,0x0000006d, + 0x00040005,0x000007c0,0x61726170,0x0000006d,0x00040005,0x000007c2,0x61726170,0x0000006d, + 0x00040005,0x000007c4,0x61726170,0x0000006d,0x00040005,0x000007c5,0x61726170,0x0000006d, + 0x00040005,0x000007c7,0x61726170,0x0000006d,0x00040005,0x000007c9,0x61726170,0x0000006d, + 0x00040005,0x000007cf,0x55724866,0x00000076,0x00040005,0x000007e2,0x61726170,0x0000006d, + 0x00040005,0x000007e5,0x61726170,0x0000006d,0x00040005,0x000007e6,0x61726170,0x0000006d, + 0x00040005,0x000007e9,0x61726170,0x0000006d,0x00040005,0x000007eb,0x61726170,0x0000006d, + 0x00040005,0x000007ef,0x61726170,0x0000006d,0x00040005,0x000007f4,0x61726170,0x0000006d, + 0x00080005,0x000007f8,0x6d754c66,0x736e4961,0x69626174,0x7974696c,0x485f7655,0x00000057, + 0x00040005,0x000007fb,0x61726170,0x0000006d,0x00040005,0x000007fd,0x61726170,0x0000006d, + 0x00040005,0x000007fe,0x61726170,0x0000006d,0x00040005,0x00000800,0x61726170,0x0000006d, + 0x00070005,0x00000804,0x72614666,0x73656874,0x70654474,0x76556874,0x00000000,0x00040005, + 0x00000809,0x61726170,0x0000006d,0x00040005,0x0000080c,0x61726170,0x0000006d,0x00040005, + 0x0000080d,0x61726170,0x0000006d,0x00040005,0x0000080f,0x61726170,0x0000006d,0x00080005, + 0x0000081d,0x6c694466,0x64657461,0x63616552,0x65766974,0x6b73614d,0x00000073,0x00040005, + 0x0000081e,0x61726170,0x0000006d,0x00040005,0x00000822,0x61726170,0x0000006d,0x00040005, + 0x00000827,0x61726170,0x0000006d,0x00040005,0x0000082c,0x61726170,0x0000006d,0x00040005, + 0x00000831,0x61726170,0x0000006d,0x00040005,0x00000847,0x61726170,0x0000736d,0x00040005, + 0x00000848,0x61746164,0x00000000,0x00040005,0x00000849,0x61726170,0x0000006d,0x00040005, + 0x0000084b,0x61726170,0x0000006d,0x00040005,0x0000084d,0x61726170,0x0000006d,0x00040005, + 0x0000085d,0x61726170,0x0000006d,0x00040005,0x00000861,0x61726170,0x0000006d,0x00040005, + 0x00000863,0x61726170,0x0000006d,0x00040005,0x00000868,0x61726170,0x0000006d,0x00040005, + 0x0000086d,0x61726170,0x0000006d,0x00040005,0x00000872,0x61726170,0x0000006d,0x00040005, + 0x00000877,0x61726170,0x0000006d,0x00040005,0x00000881,0x61726170,0x0000006d,0x00040005, + 0x00000884,0x61726170,0x0000006d,0x00040005,0x0000088f,0x61726170,0x0000006d,0x00040005, + 0x00000891,0x61726170,0x0000006d,0x00040005,0x00000893,0x61726170,0x0000006d,0x00040005, + 0x00000895,0x61726170,0x0000006d,0x00080005,0x00000899,0x475f6c67,0x61626f6c,0x766e496c, + 0x7461636f,0x496e6f69,0x00000044,0x00040005,0x0000089d,0x61726170,0x0000006d,0x00060005, + 0x000008a1,0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00070005,0x000008a4,0x755f7772, + 0x61637370,0x5f64656c,0x7074756f,0x00007475,0x00060005,0x000008a5,0x75635f72,0x6e657272, + 0x756c5f74,0x0000616d,0x00060005,0x000008a6,0x616c5f72,0x6f7a636e,0x756c5f73,0x00000074, + 0x00030047,0x00000189,0x00000002,0x00050048,0x00000189,0x00000000,0x00000023,0x00000000, + 0x00050048,0x00000189,0x00000001,0x00000023,0x00000008,0x00050048,0x00000189,0x00000002, + 0x00000023,0x00000010,0x00050048,0x00000189,0x00000003,0x00000023,0x00000018,0x00050048, + 0x00000189,0x00000004,0x00000023,0x00000020,0x00050048,0x00000189,0x00000005,0x00000023, + 0x00000028,0x00050048,0x00000189,0x00000006,0x00000023,0x00000030,0x00050048,0x00000189, + 0x00000007,0x00000023,0x00000040,0x00050048,0x00000189,0x00000008,0x00000023,0x00000048, + 0x00050048,0x00000189,0x00000009,0x00000023,0x00000050,0x00050048,0x00000189,0x0000000a, + 0x00000023,0x00000058,0x00050048,0x00000189,0x0000000b,0x00000023,0x00000060,0x00050048, + 0x00000189,0x0000000c,0x00000023,0x00000068,0x00050048,0x00000189,0x0000000d,0x00000023, + 0x0000006c,0x00050048,0x00000189,0x0000000e,0x00000023,0x00000070,0x00050048,0x00000189, + 0x0000000f,0x00000023,0x00000074,0x00050048,0x00000189,0x00000010,0x00000023,0x00000078, + 0x00050048,0x00000189,0x00000011,0x00000023,0x0000007c,0x00050048,0x00000189,0x00000012, + 0x00000023,0x00000080,0x00050048,0x00000189,0x00000013,0x00000023,0x00000084,0x00050048, + 0x00000189,0x00000014,0x00000023,0x00000088,0x00050048,0x00000189,0x00000015,0x00000023, + 0x0000008c,0x00050048,0x00000189,0x00000016,0x00000023,0x00000090,0x00040047,0x0000018b, + 0x00000021,0x0000000c,0x00040047,0x0000018b,0x00000022,0x00000000,0x00040047,0x000001c3, + 0x00000021,0x00000008,0x00040047,0x000001c3,0x00000022,0x00000000,0x00040047,0x000001ca, + 0x00000021,0x00000003,0x00040047,0x000001ca,0x00000022,0x00000000,0x00030047,0x000001d2, + 0x00000019,0x00040047,0x000001d2,0x00000021,0x00000009,0x00040047,0x000001d2,0x00000022, + 0x00000000,0x00040047,0x000001d6,0x00000021,0x00000005,0x00040047,0x000001d6,0x00000022, + 0x00000000,0x00040047,0x000001de,0x00000021,0x000003e9,0x00040047,0x000001de,0x00000022, + 0x00000000,0x00040047,0x000001e9,0x00000021,0x00000007,0x00040047,0x000001e9,0x00000022, + 0x00000000,0x00040047,0x000001f4,0x00000021,0x0000000b,0x00040047,0x000001f4,0x00000022, + 0x00000000,0x00040047,0x000001ff,0x00000021,0x00000002,0x00040047,0x000001ff,0x00000022, + 0x00000000,0x00040047,0x00000207,0x00000021,0x00000000,0x00040047,0x00000207,0x00000022, + 0x00000000,0x00040047,0x00000213,0x00000021,0x00000001,0x00040047,0x00000213,0x00000022, + 0x00000000,0x00040047,0x00000899,0x0000000b,0x0000001c,0x00040047,0x000008a1,0x00000021, + 0x000003e8,0x00040047,0x000008a1,0x00000022,0x00000000,0x00030047,0x000008a4,0x00000019, + 0x00040047,0x000008a4,0x00000021,0x0000000a,0x00040047,0x000008a4,0x00000022,0x00000000, + 0x00040047,0x000008a5,0x00000021,0x00000006,0x00040047,0x000008a5,0x00000022,0x00000000, + 0x00040047,0x000008a6,0x00000021,0x00000004,0x00040047,0x000008a6,0x00000022,0x00000000, + 0x00040047,0x000008ad,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, + 0x00000002,0x00030016,0x00000006,0x00000020,0x00040020,0x00000007,0x00000007,0x00000006, + 0x00060021,0x00000008,0x00000006,0x00000007,0x00000007,0x00000007,0x00040017,0x0000000e, + 0x00000006,0x00000003,0x00040020,0x0000000f,0x00000007,0x0000000e,0x00060021,0x00000010, + 0x0000000e,0x0000000f,0x0000000f,0x00000007,0x00040021,0x00000016,0x00000006,0x00000007, + 0x00040017,0x0000001a,0x00000006,0x00000002,0x00040020,0x0000001b,0x00000007,0x0000001a, + 0x00040021,0x0000001c,0x0000001a,0x0000001b,0x00050021,0x00000020,0x00000006,0x00000007, + 0x00000007,0x00050021,0x00000025,0x0000001a,0x0000001b,0x0000001b,0x00050021,0x0000002a, + 0x0000000e,0x0000000f,0x0000000f,0x00040017,0x0000002f,0x00000006,0x00000004,0x00040020, + 0x00000030,0x00000007,0x0000002f,0x00050021,0x00000031,0x0000002f,0x00000030,0x00000030, + 0x00040015,0x00000036,0x00000020,0x00000001,0x00040020,0x00000037,0x00000007,0x00000036, + 0x00050021,0x00000038,0x00000036,0x00000037,0x00000037,0x00040017,0x00000055,0x00000036, + 0x00000002,0x00030021,0x00000056,0x00000055,0x00030021,0x0000005f,0x0000001a,0x00030021, + 0x00000064,0x00000006,0x00040020,0x0000006d,0x00000007,0x00000055,0x00040021,0x0000006e, + 0x0000000e,0x0000006d,0x00040021,0x00000072,0x0000002f,0x0000006d,0x00050021,0x00000076, + 0x00000002,0x0000006d,0x00000030,0x00040021,0x0000007d,0x00000006,0x0000001b,0x00040021, + 0x00000084,0x00000006,0x0000006d,0x00050021,0x00000088,0x00000002,0x0000006d,0x00000007, + 0x00040021,0x0000008d,0x0000001a,0x0000006d,0x00040021,0x00000093,0x0000002f,0x0000001b, + 0x0007001e,0x0000009a,0x0000000e,0x0000000e,0x0000000e,0x0000000e,0x00000006,0x00040020, + 0x0000009b,0x00000007,0x0000009a,0x00060021,0x0000009c,0x00000002,0x0000009b,0x0000000e, + 0x00000006,0x00020014,0x000000a2,0x00040020,0x000000a3,0x00000007,0x000000a2,0x00070021, + 0x000000a4,0x00000002,0x000000a3,0x0000009b,0x0000000e,0x00000006,0x00040021,0x000000ab, + 0x00000002,0x0000009b,0x00040021,0x000000af,0x0000000e,0x0000000f,0x00040021,0x000000b6, + 0x000000a2,0x0000001b,0x00060021,0x000000ba,0x00000055,0x0000006d,0x0000006d,0x0000006d, + 0x00060021,0x000000c0,0x0000001a,0x0000001b,0x0000006d,0x0000006d,0x00050021,0x000000c6, + 0x000000a2,0x0000006d,0x0000006d,0x00080021,0x000000d7,0x0000002f,0x00000030,0x00000030, + 0x00000030,0x00000030,0x00000007,0x0012001e,0x000000df,0x0000002f,0x0000002f,0x0000002f, 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f, - 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x00040020,0x000000e6, - 0x00000007,0x000000e5,0x00050021,0x000000e7,0x0000002f,0x000000e6,0x0000001b,0x00050021, - 0x000000f1,0x00000002,0x0000009b,0x0000000f,0x00050021,0x000000f6,0x00000006,0x0000001b, - 0x00000007,0x0011001e,0x000000fb,0x00000055,0x0000001a,0x0000001a,0x0000001a,0x0000001a, - 0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x000000a2,0x000000a2,0x0009001e,0x000000fc,0x0000009a,0x0000000e,0x00000006,0x0000000e, - 0x00000006,0x00000006,0x00000006,0x00040020,0x000000fd,0x00000007,0x000000fc,0x00050021, - 0x000000fe,0x00000006,0x000000fb,0x000000fd,0x00050021,0x00000106,0x00000002,0x000000fb, - 0x000000fd,0x00050021,0x0000010e,0x000000e5,0x0000006d,0x0000006d,0x00050021,0x00000113, - 0x0000002f,0x0000001b,0x0000006d,0x00050021,0x00000118,0x0000001a,0x0000006d,0x0000001b, - 0x00040020,0x0000011d,0x00000007,0x000000fb,0x00040021,0x0000011e,0x00000002,0x0000011d, - 0x00050021,0x0000012e,0x00000002,0x0000011d,0x000000fd,0x00060021,0x00000137,0x00000002, - 0x0000006d,0x0000011d,0x000000fd,0x00040021,0x0000013d,0x00000002,0x0000006d,0x0004002b, - 0x00000006,0x0000014f,0x00000000,0x0004002b,0x00000006,0x00000150,0x3f800000,0x0019001e, - 0x0000018f,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x0000002f, - 0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00040020,0x00000190,0x00000002,0x0000018f,0x0004003b,0x00000190,0x00000191,0x00000002, - 0x0004002b,0x00000036,0x00000192,0x00000000,0x00040020,0x00000193,0x00000002,0x00000055, - 0x0004002b,0x00000036,0x00000198,0x00000004,0x0004002b,0x00000036,0x0000019d,0x00000002, - 0x0004002b,0x00000036,0x000001a2,0x00000003,0x0004002b,0x00000036,0x000001a7,0x00000007, - 0x00040020,0x000001a8,0x00000002,0x0000001a,0x0004002b,0x00000036,0x000001ad,0x0000000a, - 0x0004002b,0x00000036,0x000001b2,0x0000000d,0x00040020,0x000001b3,0x00000002,0x00000006, - 0x0004002b,0x00000036,0x000001b8,0x0000000f,0x0004002b,0x00000036,0x000001bd,0x00000011, - 0x0004002b,0x00000036,0x000001c2,0x00000012,0x00090019,0x000001c7,0x00000006,0x00000001, - 0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001c8,0x00000000, - 0x000001c7,0x0004003b,0x000001c8,0x000001c9,0x00000000,0x0004003b,0x000001c8,0x000001d0, - 0x00000000,0x00090019,0x000001d6,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, - 0x00000002,0x00000002,0x00040020,0x000001d7,0x00000000,0x000001d6,0x0004003b,0x000001d7, - 0x000001d8,0x00000000,0x0004003b,0x000001c8,0x000001dc,0x00000000,0x0002001a,0x000001e2, - 0x00040020,0x000001e3,0x00000000,0x000001e2,0x0004003b,0x000001e3,0x000001e4,0x00000000, - 0x0003001b,0x000001e6,0x000001c7,0x00040015,0x000001ea,0x00000020,0x00000000,0x0004002b, - 0x000001ea,0x000001eb,0x00000000,0x0004003b,0x000001c8,0x000001ef,0x00000000,0x00090019, - 0x000001f8,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x0000000f, - 0x00040020,0x000001f9,0x00000000,0x000001f8,0x0004003b,0x000001f9,0x000001fa,0x00000000, - 0x0004003b,0x000001c8,0x00000205,0x00000000,0x0004003b,0x000001c8,0x0000020d,0x00000000, - 0x0005002c,0x00000055,0x0000020f,0x00000192,0x00000192,0x0004003b,0x000001c8,0x00000219, - 0x00000000,0x0004002b,0x00000006,0x00000222,0x45700000,0x0004002b,0x00000006,0x00000223, - 0x45070000,0x0005002c,0x0000001a,0x00000224,0x00000222,0x00000223,0x0004002b,0x00000036, - 0x0000022f,0x00000001,0x0004002b,0x00000006,0x0000025c,0x00800000,0x0004002b,0x000001ea, - 0x00000284,0x00000001,0x0004002b,0x000001ea,0x00000288,0x00000002,0x0004002b,0x00000006, - 0x0000029e,0x3e800000,0x0004002b,0x00000006,0x000002a2,0x3f000000,0x0004002b,0x00000006, - 0x000002b2,0xbe800000,0x0004002b,0x00000006,0x000002d8,0x387fda40,0x0005002c,0x0000001a, - 0x00000329,0x000002a2,0x000002a2,0x00040017,0x0000033d,0x000001ea,0x00000002,0x00040017, - 0x00000341,0x000000a2,0x00000002,0x0004002b,0x00000006,0x0000034d,0x40490fdb,0x0004002b, - 0x00000006,0x00000354,0x3fc90fdb,0x0004002b,0x00000006,0x00000361,0x40000000,0x0004002b, - 0x00000006,0x0000036b,0x3ecccccd,0x0004002b,0x00000006,0x00000373,0x3fc80000,0x0004002b, - 0x00000006,0x00000378,0x3f100000,0x0004002b,0x00000006,0x00000380,0x40800000,0x0004002b, - 0x00000006,0x0000038b,0xbf800000,0x0004002b,0x00000006,0x00000391,0x80000000,0x0004002b, - 0x00000036,0x000003cc,0x00000005,0x0004002b,0x00000036,0x000003cd,0x00000006,0x0004002b, - 0x00000036,0x000003df,0x00000008,0x0004002b,0x00000036,0x000003e0,0x00000009,0x0004002b, - 0x00000036,0x000003e1,0x0000000b,0x0004002b,0x00000036,0x000003f3,0x0000000c,0x0004002b, - 0x00000036,0x000003f4,0x0000000e,0x0004002b,0x000001ea,0x00000412,0x00000004,0x0004001c, - 0x00000413,0x0000002f,0x00000412,0x00040020,0x00000414,0x00000007,0x00000413,0x0004002b, - 0x00000006,0x0000047f,0x3ffeb852,0x0006002c,0x0000000e,0x00000487,0x0000014f,0x0000014f, - 0x0000014f,0x0004002b,0x00000036,0x000004b3,0xfffffffe,0x0004002b,0x00000036,0x000004b4, - 0xffffffff,0x0004002b,0x000001ea,0x00000502,0x00000009,0x0004001c,0x00000503,0x0000000e, - 0x00000502,0x00040020,0x00000504,0x00000007,0x00000503,0x0004002b,0x00000006,0x00000530, - 0x3e99999a,0x0004002b,0x00000006,0x0000053d,0x40a00000,0x0004002b,0x00000006,0x000005a8, - 0xc0133333,0x0004002b,0x00000006,0x000005e0,0x3d3d70a4,0x0005002c,0x00000055,0x00000602, - 0x000004b4,0x000004b4,0x0005002c,0x00000055,0x0000060c,0x00000192,0x000004b4,0x0005002c, - 0x00000055,0x00000616,0x0000022f,0x000004b4,0x0005002c,0x00000055,0x00000620,0x0000019d, - 0x000004b4,0x0005002c,0x00000055,0x0000062a,0x000004b4,0x00000192,0x0005002c,0x00000055, - 0x0000063d,0x0000022f,0x00000192,0x0005002c,0x00000055,0x00000647,0x0000019d,0x00000192, - 0x0005002c,0x00000055,0x00000651,0x000004b4,0x0000022f,0x0005002c,0x00000055,0x0000065b, - 0x00000192,0x0000022f,0x0005002c,0x00000055,0x00000665,0x0000022f,0x0000022f,0x0005002c, - 0x00000055,0x0000066f,0x0000019d,0x0000022f,0x0005002c,0x00000055,0x00000679,0x000004b4, - 0x0000019d,0x0005002c,0x00000055,0x00000683,0x00000192,0x0000019d,0x0005002c,0x00000055, - 0x0000068d,0x0000022f,0x0000019d,0x0005002c,0x00000055,0x00000697,0x0000019d,0x0000019d, - 0x0004002b,0x000001ea,0x00000707,0x00000003,0x0004002b,0x00000006,0x0000074c,0x41a00000, - 0x0004002b,0x00000006,0x00000751,0x3f400000,0x0004002b,0x00000006,0x00000774,0x40400000, - 0x0004002b,0x00000006,0x0000077d,0x3fd9999a,0x0006002c,0x0000000e,0x0000077e,0x0000077d, - 0x00000150,0x00000150,0x0004002b,0x00000006,0x00000783,0x340018ef,0x0006002c,0x0000000e, - 0x00000784,0x00000783,0x00000783,0x00000783,0x0003002a,0x000000a2,0x000007b9,0x0004002b, - 0x00000006,0x000007fc,0x3dcccccd,0x00030029,0x000000a2,0x00000813,0x0004002b,0x00000006, - 0x0000081c,0x3e19999a,0x0004002b,0x00000006,0x0000089c,0x42c80000,0x00040017,0x000008fb, - 0x000001ea,0x00000003,0x00040020,0x000008fc,0x00000001,0x000008fb,0x0004003b,0x000008fc, - 0x000008fd,0x00000001,0x0004002b,0x00000006,0x00000903,0x477fe000,0x0004002b,0x00000006, - 0x00000904,0x37801002,0x0004003b,0x000001e3,0x00000905,0x00000000,0x00090019,0x00000906, - 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00040020, - 0x00000907,0x00000000,0x00000906,0x0004003b,0x00000907,0x00000908,0x00000000,0x0004003b, - 0x000001c8,0x00000909,0x00000000,0x0004003b,0x000001c8,0x0000090a,0x00000000,0x0004002b, - 0x00000006,0x0000090b,0x7f7fffff,0x0004002b,0x00000006,0x0000090c,0x3a1fe868,0x0004002b, - 0x00000006,0x0000090d,0x3d800000,0x0004002b,0x00000006,0x0000090e,0x3e400000,0x0004002b, - 0x00000006,0x0000090f,0x461c4000,0x0004002b,0x000001ea,0x00000910,0x00000008,0x0006002c, - 0x000008fb,0x00000911,0x00000910,0x00000910,0x00000284,0x00050036,0x00000002,0x00000004, - 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000006d,0x00000901,0x00000007, - 0x0004003d,0x000008fb,0x000008fe,0x000008fd,0x0007004f,0x0000033d,0x000008ff,0x000008fe, - 0x000008fe,0x00000000,0x00000001,0x0004007c,0x00000055,0x00000900,0x000008ff,0x0003003e, - 0x00000901,0x00000900,0x00050039,0x00000002,0x00000902,0x0000013f,0x00000901,0x000100fd, - 0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007, - 0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8, - 0x0000000d,0x0004003d,0x00000006,0x00000141,0x00000009,0x0004003d,0x00000006,0x00000142, - 0x0000000a,0x0004003d,0x00000006,0x00000143,0x0000000b,0x0008000c,0x00000006,0x00000144, - 0x00000001,0x0000002e,0x00000141,0x00000142,0x00000143,0x000200fe,0x00000144,0x00010038, - 0x00050036,0x0000000e,0x00000014,0x00000000,0x00000010,0x00030037,0x0000000f,0x00000011, - 0x00030037,0x0000000f,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8,0x00000015, - 0x0004003d,0x0000000e,0x00000147,0x00000011,0x0004003d,0x0000000e,0x00000148,0x00000012, - 0x0004003d,0x00000006,0x00000149,0x00000013,0x00060050,0x0000000e,0x0000014a,0x00000149, - 0x00000149,0x00000149,0x0008000c,0x0000000e,0x0000014b,0x00000001,0x0000002e,0x00000147, - 0x00000148,0x0000014a,0x000200fe,0x0000014b,0x00010038,0x00050036,0x00000006,0x00000018, - 0x00000000,0x00000016,0x00030037,0x00000007,0x00000017,0x000200f8,0x00000019,0x0004003d, - 0x00000006,0x0000014e,0x00000017,0x0008000c,0x00000006,0x00000151,0x00000001,0x0000002b, - 0x0000014e,0x0000014f,0x00000150,0x000200fe,0x00000151,0x00010038,0x00050036,0x0000001a, - 0x0000001e,0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x000200f8,0x0000001f, - 0x0004003d,0x0000001a,0x00000154,0x0000001d,0x0006000c,0x0000001a,0x00000155,0x00000001, - 0x0000000a,0x00000154,0x000200fe,0x00000155,0x00010038,0x00050036,0x00000006,0x00000023, - 0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x00030037,0x00000007,0x00000022, - 0x000200f8,0x00000024,0x0004003d,0x00000006,0x00000158,0x00000021,0x0004003d,0x00000006, - 0x00000159,0x00000022,0x0007000c,0x00000006,0x0000015a,0x00000001,0x00000025,0x00000158, - 0x00000159,0x000200fe,0x0000015a,0x00010038,0x00050036,0x0000001a,0x00000028,0x00000000, - 0x00000025,0x00030037,0x0000001b,0x00000026,0x00030037,0x0000001b,0x00000027,0x000200f8, - 0x00000029,0x0004003d,0x0000001a,0x0000015d,0x00000026,0x0004003d,0x0000001a,0x0000015e, - 0x00000027,0x0007000c,0x0000001a,0x0000015f,0x00000001,0x00000025,0x0000015d,0x0000015e, - 0x000200fe,0x0000015f,0x00010038,0x00050036,0x0000000e,0x0000002d,0x00000000,0x0000002a, - 0x00030037,0x0000000f,0x0000002b,0x00030037,0x0000000f,0x0000002c,0x000200f8,0x0000002e, - 0x0004003d,0x0000000e,0x00000162,0x0000002b,0x0004003d,0x0000000e,0x00000163,0x0000002c, - 0x0007000c,0x0000000e,0x00000164,0x00000001,0x00000025,0x00000162,0x00000163,0x000200fe, - 0x00000164,0x00010038,0x00050036,0x0000002f,0x00000034,0x00000000,0x00000031,0x00030037, - 0x00000030,0x00000032,0x00030037,0x00000030,0x00000033,0x000200f8,0x00000035,0x0004003d, - 0x0000002f,0x00000167,0x00000032,0x0004003d,0x0000002f,0x00000168,0x00000033,0x0007000c, - 0x0000002f,0x00000169,0x00000001,0x00000025,0x00000167,0x00000168,0x000200fe,0x00000169, - 0x00010038,0x00050036,0x00000036,0x0000003b,0x00000000,0x00000038,0x00030037,0x00000037, - 0x00000039,0x00030037,0x00000037,0x0000003a,0x000200f8,0x0000003c,0x0004003d,0x00000036, - 0x0000016c,0x00000039,0x0004003d,0x00000036,0x0000016d,0x0000003a,0x0007000c,0x00000036, - 0x0000016e,0x00000001,0x00000027,0x0000016c,0x0000016d,0x000200fe,0x0000016e,0x00010038, - 0x00050036,0x00000006,0x0000003f,0x00000000,0x00000020,0x00030037,0x00000007,0x0000003d, - 0x00030037,0x00000007,0x0000003e,0x000200f8,0x00000040,0x0004003d,0x00000006,0x00000171, - 0x0000003d,0x0004003d,0x00000006,0x00000172,0x0000003e,0x0007000c,0x00000006,0x00000173, - 0x00000001,0x00000028,0x00000171,0x00000172,0x000200fe,0x00000173,0x00010038,0x00050036, - 0x0000001a,0x00000043,0x00000000,0x00000025,0x00030037,0x0000001b,0x00000041,0x00030037, - 0x0000001b,0x00000042,0x000200f8,0x00000044,0x0004003d,0x0000001a,0x00000176,0x00000041, - 0x0004003d,0x0000001a,0x00000177,0x00000042,0x0007000c,0x0000001a,0x00000178,0x00000001, - 0x00000028,0x00000176,0x00000177,0x000200fe,0x00000178,0x00010038,0x00050036,0x0000000e, - 0x00000047,0x00000000,0x0000002a,0x00030037,0x0000000f,0x00000045,0x00030037,0x0000000f, - 0x00000046,0x000200f8,0x00000048,0x0004003d,0x0000000e,0x0000017b,0x00000045,0x0004003d, - 0x0000000e,0x0000017c,0x00000046,0x0007000c,0x0000000e,0x0000017d,0x00000001,0x00000028, - 0x0000017b,0x0000017c,0x000200fe,0x0000017d,0x00010038,0x00050036,0x0000002f,0x0000004b, - 0x00000000,0x00000031,0x00030037,0x00000030,0x00000049,0x00030037,0x00000030,0x0000004a, - 0x000200f8,0x0000004c,0x0004003d,0x0000002f,0x00000180,0x00000049,0x0004003d,0x0000002f, - 0x00000181,0x0000004a,0x0007000c,0x0000002f,0x00000182,0x00000001,0x00000028,0x00000180, - 0x00000181,0x000200fe,0x00000182,0x00010038,0x00050036,0x00000036,0x0000004f,0x00000000, - 0x00000038,0x00030037,0x00000037,0x0000004d,0x00030037,0x00000037,0x0000004e,0x000200f8, - 0x00000050,0x0004003d,0x00000036,0x00000185,0x0000004d,0x0004003d,0x00000036,0x00000186, - 0x0000004e,0x0007000c,0x00000036,0x00000187,0x00000001,0x0000002a,0x00000185,0x00000186, - 0x000200fe,0x00000187,0x00010038,0x00050036,0x00000006,0x00000053,0x00000000,0x00000020, - 0x00030037,0x00000007,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8,0x00000054, - 0x0004003d,0x00000006,0x0000018a,0x00000051,0x0004003d,0x00000006,0x0000018b,0x00000052, - 0x0007000c,0x00000006,0x0000018c,0x00000001,0x0000001a,0x0000018a,0x0000018b,0x000200fe, - 0x0000018c,0x00010038,0x00050036,0x00000055,0x00000057,0x00000000,0x00000056,0x000200f8, - 0x00000058,0x00050041,0x00000193,0x00000194,0x00000191,0x00000192,0x0004003d,0x00000055, - 0x00000195,0x00000194,0x000200fe,0x00000195,0x00010038,0x00050036,0x00000055,0x00000059, - 0x00000000,0x00000056,0x000200f8,0x0000005a,0x00050041,0x00000193,0x00000199,0x00000191, - 0x00000198,0x0004003d,0x00000055,0x0000019a,0x00000199,0x000200fe,0x0000019a,0x00010038, - 0x00050036,0x00000055,0x0000005b,0x00000000,0x00000056,0x000200f8,0x0000005c,0x00050041, - 0x00000193,0x0000019e,0x00000191,0x0000019d,0x0004003d,0x00000055,0x0000019f,0x0000019e, - 0x000200fe,0x0000019f,0x00010038,0x00050036,0x00000055,0x0000005d,0x00000000,0x00000056, - 0x000200f8,0x0000005e,0x00050041,0x00000193,0x000001a3,0x00000191,0x000001a2,0x0004003d, - 0x00000055,0x000001a4,0x000001a3,0x000200fe,0x000001a4,0x00010038,0x00050036,0x0000001a, - 0x00000060,0x00000000,0x0000005f,0x000200f8,0x00000061,0x00050041,0x000001a8,0x000001a9, - 0x00000191,0x000001a7,0x0004003d,0x0000001a,0x000001aa,0x000001a9,0x000200fe,0x000001aa, - 0x00010038,0x00050036,0x0000001a,0x00000062,0x00000000,0x0000005f,0x000200f8,0x00000063, - 0x00050041,0x000001a8,0x000001ae,0x00000191,0x000001ad,0x0004003d,0x0000001a,0x000001af, - 0x000001ae,0x000200fe,0x000001af,0x00010038,0x00050036,0x00000006,0x00000065,0x00000000, - 0x00000064,0x000200f8,0x00000066,0x00050041,0x000001b3,0x000001b4,0x00000191,0x000001b2, - 0x0004003d,0x00000006,0x000001b5,0x000001b4,0x000200fe,0x000001b5,0x00010038,0x00050036, - 0x00000006,0x00000067,0x00000000,0x00000064,0x000200f8,0x00000068,0x00050041,0x000001b3, - 0x000001b9,0x00000191,0x000001b8,0x0004003d,0x00000006,0x000001ba,0x000001b9,0x000200fe, - 0x000001ba,0x00010038,0x00050036,0x00000006,0x00000069,0x00000000,0x00000064,0x000200f8, - 0x0000006a,0x00050041,0x000001b3,0x000001be,0x00000191,0x000001bd,0x0004003d,0x00000006, - 0x000001bf,0x000001be,0x000200fe,0x000001bf,0x00010038,0x00050036,0x00000006,0x0000006b, - 0x00000000,0x00000064,0x000200f8,0x0000006c,0x00050041,0x000001b3,0x000001c3,0x00000191, - 0x000001c2,0x0004003d,0x00000006,0x000001c4,0x000001c3,0x000200fe,0x000001c4,0x00010038, - 0x00050036,0x0000000e,0x00000070,0x00000000,0x0000006e,0x00030037,0x0000006d,0x0000006f, - 0x000200f8,0x00000071,0x0004003d,0x000001c7,0x000001ca,0x000001c9,0x0004003d,0x00000055, - 0x000001cb,0x0000006f,0x0007005f,0x0000002f,0x000001cc,0x000001ca,0x000001cb,0x00000002, - 0x00000192,0x0008004f,0x0000000e,0x000001cd,0x000001cc,0x000001cc,0x00000000,0x00000001, - 0x00000002,0x000200fe,0x000001cd,0x00010038,0x00050036,0x0000002f,0x00000074,0x00000000, - 0x00000072,0x00030037,0x0000006d,0x00000073,0x000200f8,0x00000075,0x0004003d,0x000001c7, - 0x000001d1,0x000001d0,0x0004003d,0x00000055,0x000001d2,0x00000073,0x0007005f,0x0000002f, - 0x000001d3,0x000001d1,0x000001d2,0x00000002,0x00000192,0x000200fe,0x000001d3,0x00010038, - 0x00050036,0x00000002,0x00000079,0x00000000,0x00000076,0x00030037,0x0000006d,0x00000077, - 0x00030037,0x00000030,0x00000078,0x000200f8,0x0000007a,0x0004003d,0x000001d6,0x000001d9, - 0x000001d8,0x0004003d,0x00000055,0x000001da,0x00000077,0x0004003d,0x0000002f,0x000001db, - 0x00000078,0x00040063,0x000001d9,0x000001da,0x000001db,0x000100fd,0x00010038,0x00050036, - 0x00000055,0x0000007b,0x00000000,0x00000056,0x000200f8,0x0000007c,0x0004003d,0x000001c7, - 0x000001dd,0x000001dc,0x00050067,0x00000055,0x000001de,0x000001dd,0x00000192,0x000200fe, - 0x000001de,0x00010038,0x00050036,0x00000006,0x0000007f,0x00000000,0x0000007d,0x00030037, - 0x0000001b,0x0000007e,0x000200f8,0x00000080,0x0004003d,0x000001c7,0x000001e1,0x000001dc, - 0x0004003d,0x000001e2,0x000001e5,0x000001e4,0x00050056,0x000001e6,0x000001e7,0x000001e1, - 0x000001e5,0x0004003d,0x0000001a,0x000001e8,0x0000007e,0x00070058,0x0000002f,0x000001e9, - 0x000001e7,0x000001e8,0x00000002,0x0000014f,0x00050051,0x00000006,0x000001ec,0x000001e9, - 0x00000000,0x000200fe,0x000001ec,0x00010038,0x00050036,0x00000006,0x00000082,0x00000000, - 0x0000007d,0x00030037,0x0000001b,0x00000081,0x000200f8,0x00000083,0x0004003d,0x000001c7, - 0x000001f0,0x000001ef,0x0004003d,0x000001e2,0x000001f1,0x000001e4,0x00050056,0x000001e6, - 0x000001f2,0x000001f0,0x000001f1,0x0004003d,0x0000001a,0x000001f3,0x00000081,0x00070058, - 0x0000002f,0x000001f4,0x000001f2,0x000001f3,0x00000002,0x0000014f,0x00050051,0x00000006, - 0x000001f5,0x000001f4,0x00000000,0x000200fe,0x000001f5,0x00010038,0x00050036,0x00000006, - 0x00000086,0x00000000,0x00000084,0x00030037,0x0000006d,0x00000085,0x000200f8,0x00000087, - 0x0004003d,0x000001f8,0x000001fb,0x000001fa,0x0004003d,0x00000055,0x000001fc,0x00000085, - 0x00050062,0x0000002f,0x000001fd,0x000001fb,0x000001fc,0x00050051,0x00000006,0x000001fe, - 0x000001fd,0x00000000,0x000200fe,0x000001fe,0x00010038,0x00050036,0x00000002,0x0000008b, - 0x00000000,0x00000088,0x00030037,0x0000006d,0x00000089,0x00030037,0x00000007,0x0000008a, - 0x000200f8,0x0000008c,0x0004003d,0x000001f8,0x00000201,0x000001fa,0x0004003d,0x00000055, - 0x00000202,0x00000089,0x0004003d,0x00000006,0x00000203,0x0000008a,0x00070050,0x0000002f, - 0x00000204,0x00000203,0x0000014f,0x0000014f,0x0000014f,0x00040063,0x00000201,0x00000202, - 0x00000204,0x000100fd,0x00010038,0x00050036,0x0000001a,0x0000008f,0x00000000,0x0000008d, - 0x00030037,0x0000006d,0x0000008e,0x000200f8,0x00000090,0x0004003d,0x000001c7,0x00000206, - 0x00000205,0x0004003d,0x00000055,0x00000207,0x0000008e,0x0007005f,0x0000002f,0x00000208, - 0x00000206,0x00000207,0x00000002,0x00000192,0x0007004f,0x0000001a,0x00000209,0x00000208, - 0x00000208,0x00000000,0x00000001,0x000200fe,0x00000209,0x00010038,0x00050036,0x00000006, - 0x00000091,0x00000000,0x00000064,0x000200f8,0x00000092,0x0004003b,0x00000007,0x0000020c, - 0x00000007,0x0004003d,0x000001c7,0x0000020e,0x0000020d,0x0007005f,0x0000002f,0x00000210, - 0x0000020e,0x0000020f,0x00000002,0x00000192,0x00050051,0x00000006,0x00000211,0x00000210, - 0x00000000,0x0003003e,0x0000020c,0x00000211,0x0004003d,0x00000006,0x00000212,0x0000020c, - 0x000500b4,0x000000a2,0x00000213,0x00000212,0x0000014f,0x000300f7,0x00000215,0x00000000, - 0x000400fa,0x00000213,0x00000214,0x00000215,0x000200f8,0x00000214,0x0003003e,0x0000020c, - 0x00000150,0x000200f9,0x00000215,0x000200f8,0x00000215,0x0004003d,0x00000006,0x00000216, - 0x0000020c,0x000200fe,0x00000216,0x00010038,0x00050036,0x0000002f,0x00000095,0x00000000, - 0x00000093,0x00030037,0x0000001b,0x00000094,0x000200f8,0x00000096,0x0004003d,0x000001c7, - 0x0000021a,0x00000219,0x0004003d,0x000001e2,0x0000021b,0x000001e4,0x00050056,0x000001e6, - 0x0000021c,0x0000021a,0x0000021b,0x0004003d,0x0000001a,0x0000021d,0x00000094,0x00070058, - 0x0000002f,0x0000021e,0x0000021c,0x0000021d,0x00000002,0x0000014f,0x000200fe,0x0000021e, - 0x00010038,0x00050036,0x00000006,0x00000098,0x00000000,0x0000007d,0x00030037,0x0000001b, - 0x00000097,0x000200f8,0x00000099,0x0004003d,0x0000001a,0x00000221,0x00000097,0x00050085, - 0x0000001a,0x00000225,0x00000221,0x00000224,0x0006000c,0x00000006,0x00000226,0x00000001, - 0x00000042,0x00000225,0x000200fe,0x00000226,0x00010038,0x00050036,0x00000002,0x000000a0, - 0x00000000,0x0000009c,0x00030037,0x0000009b,0x0000009d,0x00030037,0x0000000e,0x0000009e, - 0x00030037,0x00000006,0x0000009f,0x000200f8,0x000000a1,0x0004003b,0x0000000f,0x0000022b, - 0x00000007,0x00050041,0x0000000f,0x00000229,0x0000009d,0x0000019d,0x0003003e,0x00000229, - 0x0000009e,0x00050041,0x0000000f,0x0000022a,0x0000009d,0x000001a2,0x0003003e,0x0000022a, - 0x0000009e,0x0005008e,0x0000000e,0x0000022c,0x0000009e,0x0000009f,0x0003003e,0x0000022b, - 0x0000022c,0x0004003d,0x0000000e,0x0000022d,0x0000022b,0x00050041,0x0000000f,0x0000022e, - 0x0000009d,0x00000192,0x0003003e,0x0000022e,0x0000022d,0x0004003d,0x0000000e,0x00000230, - 0x0000022b,0x00050085,0x0000000e,0x00000231,0x0000009e,0x00000230,0x00050041,0x0000000f, - 0x00000232,0x0000009d,0x0000022f,0x0003003e,0x00000232,0x00000231,0x00050041,0x00000007, - 0x00000233,0x0000009d,0x00000198,0x0003003e,0x00000233,0x0000009f,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x000000a9,0x00000000,0x000000a4,0x00030037,0x000000a3,0x000000a5, - 0x00030037,0x0000009b,0x000000a6,0x00030037,0x0000000e,0x000000a7,0x00030037,0x00000006, - 0x000000a8,0x000200f8,0x000000aa,0x0004003b,0x0000009b,0x00000237,0x00000007,0x0004003b, - 0x0000000f,0x0000023c,0x00000007,0x0004003b,0x0000000f,0x0000023f,0x00000007,0x0004003b, - 0x0000000f,0x00000242,0x00000007,0x0004003b,0x0000000f,0x00000245,0x00000007,0x0004003b, - 0x0000000f,0x00000248,0x00000007,0x0004003d,0x000000a2,0x00000234,0x000000a5,0x000300f7, - 0x00000236,0x00000000,0x000400fa,0x00000234,0x00000235,0x0000023b,0x000200f8,0x00000235, - 0x0004003d,0x0000009a,0x00000238,0x000000a6,0x0003003e,0x00000237,0x00000238,0x00070039, - 0x00000002,0x00000239,0x000000a0,0x00000237,0x000000a7,0x000000a8,0x0004003d,0x0000009a, - 0x0000023a,0x00000237,0x0003003e,0x000000a6,0x0000023a,0x000200f9,0x00000236,0x000200f8, - 0x0000023b,0x00050041,0x0000000f,0x0000023d,0x000000a6,0x0000019d,0x0004003d,0x0000000e, - 0x0000023e,0x0000023d,0x0003003e,0x0000023c,0x0000023e,0x0003003e,0x0000023f,0x000000a7, - 0x00060039,0x0000000e,0x00000240,0x0000002d,0x0000023c,0x0000023f,0x00050041,0x0000000f, - 0x00000241,0x000000a6,0x0000019d,0x0003003e,0x00000241,0x00000240,0x00050041,0x0000000f, - 0x00000243,0x000000a6,0x000001a2,0x0004003d,0x0000000e,0x00000244,0x00000243,0x0003003e, - 0x00000242,0x00000244,0x0003003e,0x00000245,0x000000a7,0x00060039,0x0000000e,0x00000246, - 0x00000047,0x00000242,0x00000245,0x00050041,0x0000000f,0x00000247,0x000000a6,0x000001a2, - 0x0003003e,0x00000247,0x00000246,0x0005008e,0x0000000e,0x00000249,0x000000a7,0x000000a8, - 0x0003003e,0x00000248,0x00000249,0x0004003d,0x0000000e,0x0000024a,0x00000248,0x00050041, - 0x0000000f,0x0000024b,0x000000a6,0x00000192,0x0004003d,0x0000000e,0x0000024c,0x0000024b, - 0x00050081,0x0000000e,0x0000024d,0x0000024c,0x0000024a,0x00050041,0x0000000f,0x0000024e, - 0x000000a6,0x00000192,0x0003003e,0x0000024e,0x0000024d,0x0004003d,0x0000000e,0x0000024f, - 0x00000248,0x00050085,0x0000000e,0x00000250,0x000000a7,0x0000024f,0x00050041,0x0000000f, - 0x00000251,0x000000a6,0x0000022f,0x0004003d,0x0000000e,0x00000252,0x00000251,0x00050081, - 0x0000000e,0x00000253,0x00000252,0x00000250,0x00050041,0x0000000f,0x00000254,0x000000a6, - 0x0000022f,0x0003003e,0x00000254,0x00000253,0x00050041,0x00000007,0x00000255,0x000000a6, - 0x00000198,0x0004003d,0x00000006,0x00000256,0x00000255,0x00050081,0x00000006,0x00000257, - 0x00000256,0x000000a8,0x00050041,0x00000007,0x00000258,0x000000a6,0x00000198,0x0003003e, - 0x00000258,0x00000257,0x000200f9,0x00000236,0x000200f8,0x00000236,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x000000ad,0x00000000,0x000000ab,0x00030037,0x0000009b,0x000000ac, - 0x000200f8,0x000000ae,0x0004003b,0x00000007,0x0000025e,0x00000007,0x0004003b,0x0000000f, - 0x00000274,0x00000007,0x00050041,0x00000007,0x00000259,0x000000ac,0x00000198,0x0004003d, - 0x00000006,0x0000025a,0x00000259,0x0006000c,0x00000006,0x0000025b,0x00000001,0x00000004, - 0x0000025a,0x000500ba,0x000000a2,0x0000025d,0x0000025b,0x0000025c,0x000300f7,0x00000260, - 0x00000000,0x000400fa,0x0000025d,0x0000025f,0x00000263,0x000200f8,0x0000025f,0x00050041, - 0x00000007,0x00000261,0x000000ac,0x00000198,0x0004003d,0x00000006,0x00000262,0x00000261, - 0x0003003e,0x0000025e,0x00000262,0x000200f9,0x00000260,0x000200f8,0x00000263,0x0003003e, - 0x0000025e,0x00000150,0x000200f9,0x00000260,0x000200f8,0x00000260,0x0004003d,0x00000006, - 0x00000264,0x0000025e,0x00050041,0x00000007,0x00000265,0x000000ac,0x00000198,0x0003003e, - 0x00000265,0x00000264,0x00050041,0x00000007,0x00000266,0x000000ac,0x00000198,0x0004003d, - 0x00000006,0x00000267,0x00000266,0x00050041,0x0000000f,0x00000268,0x000000ac,0x00000192, - 0x0004003d,0x0000000e,0x00000269,0x00000268,0x00060050,0x0000000e,0x0000026a,0x00000267, - 0x00000267,0x00000267,0x00050088,0x0000000e,0x0000026b,0x00000269,0x0000026a,0x00050041, - 0x0000000f,0x0000026c,0x000000ac,0x00000192,0x0003003e,0x0000026c,0x0000026b,0x00050041, - 0x00000007,0x0000026d,0x000000ac,0x00000198,0x0004003d,0x00000006,0x0000026e,0x0000026d, - 0x00050041,0x0000000f,0x0000026f,0x000000ac,0x0000022f,0x0004003d,0x0000000e,0x00000270, - 0x0000026f,0x00060050,0x0000000e,0x00000271,0x0000026e,0x0000026e,0x0000026e,0x00050088, - 0x0000000e,0x00000272,0x00000270,0x00000271,0x00050041,0x0000000f,0x00000273,0x000000ac, - 0x0000022f,0x0003003e,0x00000273,0x00000272,0x00050041,0x0000000f,0x00000275,0x000000ac, - 0x0000022f,0x0004003d,0x0000000e,0x00000276,0x00000275,0x00050041,0x0000000f,0x00000277, - 0x000000ac,0x00000192,0x0004003d,0x0000000e,0x00000278,0x00000277,0x00050041,0x0000000f, - 0x00000279,0x000000ac,0x00000192,0x0004003d,0x0000000e,0x0000027a,0x00000279,0x00050085, - 0x0000000e,0x0000027b,0x00000278,0x0000027a,0x00050083,0x0000000e,0x0000027c,0x00000276, - 0x0000027b,0x0006000c,0x0000000e,0x0000027d,0x00000001,0x00000004,0x0000027c,0x0006000c, - 0x0000000e,0x0000027e,0x00000001,0x0000001f,0x0000027d,0x0003003e,0x00000274,0x0000027e, - 0x0004003d,0x0000000e,0x0000027f,0x00000274,0x00050041,0x0000000f,0x00000280,0x000000ac, - 0x0000022f,0x0003003e,0x00000280,0x0000027f,0x000100fd,0x00010038,0x00050036,0x0000000e, - 0x000000b1,0x00000000,0x000000af,0x00030037,0x0000000f,0x000000b0,0x000200f8,0x000000b2, - 0x0004003b,0x0000000f,0x00000281,0x00000007,0x00050041,0x00000007,0x00000282,0x000000b0, - 0x000001eb,0x0004003d,0x00000006,0x00000283,0x00000282,0x00050041,0x00000007,0x00000285, - 0x000000b0,0x00000284,0x0004003d,0x00000006,0x00000286,0x00000285,0x00050081,0x00000006, - 0x00000287,0x00000283,0x00000286,0x00050041,0x00000007,0x00000289,0x000000b0,0x00000288, - 0x0004003d,0x00000006,0x0000028a,0x00000289,0x00050083,0x00000006,0x0000028b,0x00000287, - 0x0000028a,0x00050041,0x00000007,0x0000028c,0x000000b0,0x000001eb,0x0004003d,0x00000006, - 0x0000028d,0x0000028c,0x00050041,0x00000007,0x0000028e,0x000000b0,0x00000288,0x0004003d, - 0x00000006,0x0000028f,0x0000028e,0x00050081,0x00000006,0x00000290,0x0000028d,0x0000028f, - 0x00050041,0x00000007,0x00000291,0x000000b0,0x000001eb,0x0004003d,0x00000006,0x00000292, - 0x00000291,0x00050041,0x00000007,0x00000293,0x000000b0,0x00000284,0x0004003d,0x00000006, - 0x00000294,0x00000293,0x00050083,0x00000006,0x00000295,0x00000292,0x00000294,0x00050041, - 0x00000007,0x00000296,0x000000b0,0x00000288,0x0004003d,0x00000006,0x00000297,0x00000296, - 0x00050083,0x00000006,0x00000298,0x00000295,0x00000297,0x00060050,0x0000000e,0x00000299, - 0x0000028b,0x00000290,0x00000298,0x0003003e,0x00000281,0x00000299,0x0004003d,0x0000000e, - 0x0000029a,0x00000281,0x000200fe,0x0000029a,0x00010038,0x00050036,0x0000000e,0x000000b4, - 0x00000000,0x000000af,0x00030037,0x0000000f,0x000000b3,0x000200f8,0x000000b5,0x0004003b, - 0x0000000f,0x0000029d,0x00000007,0x00050041,0x00000007,0x0000029f,0x000000b3,0x000001eb, - 0x0004003d,0x00000006,0x000002a0,0x0000029f,0x00050085,0x00000006,0x000002a1,0x0000029e, - 0x000002a0,0x00050041,0x00000007,0x000002a3,0x000000b3,0x00000284,0x0004003d,0x00000006, - 0x000002a4,0x000002a3,0x00050085,0x00000006,0x000002a5,0x000002a2,0x000002a4,0x00050081, - 0x00000006,0x000002a6,0x000002a1,0x000002a5,0x00050041,0x00000007,0x000002a7,0x000000b3, - 0x00000288,0x0004003d,0x00000006,0x000002a8,0x000002a7,0x00050085,0x00000006,0x000002a9, - 0x0000029e,0x000002a8,0x00050081,0x00000006,0x000002aa,0x000002a6,0x000002a9,0x00050041, - 0x00000007,0x000002ab,0x000000b3,0x000001eb,0x0004003d,0x00000006,0x000002ac,0x000002ab, - 0x00050085,0x00000006,0x000002ad,0x000002a2,0x000002ac,0x00050041,0x00000007,0x000002ae, - 0x000000b3,0x00000288,0x0004003d,0x00000006,0x000002af,0x000002ae,0x00050085,0x00000006, - 0x000002b0,0x000002a2,0x000002af,0x00050083,0x00000006,0x000002b1,0x000002ad,0x000002b0, - 0x00050041,0x00000007,0x000002b3,0x000000b3,0x000001eb,0x0004003d,0x00000006,0x000002b4, - 0x000002b3,0x00050085,0x00000006,0x000002b5,0x000002b2,0x000002b4,0x00050041,0x00000007, - 0x000002b6,0x000000b3,0x00000284,0x0004003d,0x00000006,0x000002b7,0x000002b6,0x00050085, - 0x00000006,0x000002b8,0x000002a2,0x000002b7,0x00050081,0x00000006,0x000002b9,0x000002b5, - 0x000002b8,0x00050041,0x00000007,0x000002ba,0x000000b3,0x00000288,0x0004003d,0x00000006, - 0x000002bb,0x000002ba,0x00050085,0x00000006,0x000002bc,0x0000029e,0x000002bb,0x00050083, - 0x00000006,0x000002bd,0x000002b9,0x000002bc,0x00060050,0x0000000e,0x000002be,0x000002aa, - 0x000002b1,0x000002bd,0x0003003e,0x0000029d,0x000002be,0x0004003d,0x0000000e,0x000002bf, - 0x0000029d,0x000200fe,0x000002bf,0x00010038,0x00050036,0x0000000e,0x000000b7,0x00000000, - 0x000000af,0x00030037,0x0000000f,0x000000b6,0x000200f8,0x000000b8,0x0004003b,0x00000007, - 0x000002c3,0x00000007,0x0004003b,0x00000007,0x000002c4,0x00000007,0x0004003b,0x00000007, - 0x000002c8,0x00000007,0x0004003b,0x00000007,0x000002cb,0x00000007,0x0004003b,0x00000007, - 0x000002cf,0x00000007,0x0004003b,0x00000007,0x000002d0,0x00000007,0x0004003d,0x0000000e, - 0x000002c2,0x000000b6,0x0003003e,0x000002c3,0x0000014f,0x00050041,0x00000007,0x000002c5, - 0x000000b6,0x000001eb,0x0004003d,0x00000006,0x000002c6,0x000002c5,0x0003003e,0x000002c4, - 0x000002c6,0x00060039,0x00000006,0x000002c7,0x0000003f,0x000002c3,0x000002c4,0x00050041, - 0x00000007,0x000002c9,0x000000b6,0x00000284,0x0004003d,0x00000006,0x000002ca,0x000002c9, - 0x0003003e,0x000002c8,0x000002ca,0x00050041,0x00000007,0x000002cc,0x000000b6,0x00000288, - 0x0004003d,0x00000006,0x000002cd,0x000002cc,0x0003003e,0x000002cb,0x000002cd,0x00060039, - 0x00000006,0x000002ce,0x0000003f,0x000002c8,0x000002cb,0x0003003e,0x000002cf,0x000002c7, - 0x0003003e,0x000002d0,0x000002ce,0x00060039,0x00000006,0x000002d1,0x0000003f,0x000002cf, - 0x000002d0,0x00050081,0x00000006,0x000002d2,0x000002d1,0x00000150,0x00060050,0x0000000e, - 0x000002d3,0x000002d2,0x000002d2,0x000002d2,0x00050088,0x0000000e,0x000002d4,0x000002c2, - 0x000002d3,0x000200fe,0x000002d4,0x00010038,0x00050036,0x0000000e,0x000000ba,0x00000000, - 0x000000af,0x00030037,0x0000000f,0x000000b9,0x000200f8,0x000000bb,0x0004003b,0x00000007, - 0x000002d9,0x00000007,0x0004003b,0x00000007,0x000002dc,0x00000007,0x0004003b,0x00000007, - 0x000002e0,0x00000007,0x0004003b,0x00000007,0x000002e3,0x00000007,0x0004003b,0x00000007, - 0x000002e6,0x00000007,0x0004003b,0x00000007,0x000002e7,0x00000007,0x0004003d,0x0000000e, - 0x000002d7,0x000000b9,0x00050041,0x00000007,0x000002da,0x000000b9,0x00000284,0x0004003d, - 0x00000006,0x000002db,0x000002da,0x0003003e,0x000002d9,0x000002db,0x00050041,0x00000007, - 0x000002dd,0x000000b9,0x00000288,0x0004003d,0x00000006,0x000002de,0x000002dd,0x0003003e, - 0x000002dc,0x000002de,0x00060039,0x00000006,0x000002df,0x0000003f,0x000002d9,0x000002dc, - 0x00050041,0x00000007,0x000002e1,0x000000b9,0x000001eb,0x0004003d,0x00000006,0x000002e2, - 0x000002e1,0x0003003e,0x000002e0,0x000002e2,0x0003003e,0x000002e3,0x000002df,0x00060039, - 0x00000006,0x000002e4,0x0000003f,0x000002e0,0x000002e3,0x00050083,0x00000006,0x000002e5, - 0x00000150,0x000002e4,0x0003003e,0x000002e6,0x000002d8,0x0003003e,0x000002e7,0x000002e5, - 0x00060039,0x00000006,0x000002e8,0x0000003f,0x000002e6,0x000002e7,0x00060050,0x0000000e, - 0x000002e9,0x000002e8,0x000002e8,0x000002e8,0x00050088,0x0000000e,0x000002ea,0x000002d7, - 0x000002e9,0x000200fe,0x000002ea,0x00010038,0x00050036,0x000000a2,0x000000be,0x00000000, - 0x000000bc,0x00030037,0x0000001b,0x000000bd,0x000200f8,0x000000bf,0x00050041,0x00000007, - 0x000002ed,0x000000bd,0x000001eb,0x0004003d,0x00000006,0x000002ee,0x000002ed,0x000500be, - 0x000000a2,0x000002ef,0x000002ee,0x0000014f,0x000300f7,0x000002f1,0x00000000,0x000400fa, - 0x000002ef,0x000002f0,0x000002f1,0x000200f8,0x000002f0,0x00050041,0x00000007,0x000002f2, - 0x000000bd,0x000001eb,0x0004003d,0x00000006,0x000002f3,0x000002f2,0x000500bc,0x000000a2, - 0x000002f4,0x000002f3,0x00000150,0x000200f9,0x000002f1,0x000200f8,0x000002f1,0x000700f5, - 0x000000a2,0x000002f5,0x000002ef,0x000000bf,0x000002f4,0x000002f0,0x000300f7,0x000002f7, - 0x00000000,0x000400fa,0x000002f5,0x000002f6,0x000002f7,0x000200f8,0x000002f6,0x00050041, - 0x00000007,0x000002f8,0x000000bd,0x00000284,0x0004003d,0x00000006,0x000002f9,0x000002f8, - 0x000500be,0x000000a2,0x000002fa,0x000002f9,0x0000014f,0x000300f7,0x000002fc,0x00000000, - 0x000400fa,0x000002fa,0x000002fb,0x000002fc,0x000200f8,0x000002fb,0x00050041,0x00000007, - 0x000002fd,0x000000bd,0x00000284,0x0004003d,0x00000006,0x000002fe,0x000002fd,0x000500bc, - 0x000000a2,0x000002ff,0x000002fe,0x00000150,0x000200f9,0x000002fc,0x000200f8,0x000002fc, - 0x000700f5,0x000000a2,0x00000300,0x000002fa,0x000002f6,0x000002ff,0x000002fb,0x000200f9, - 0x000002f7,0x000200f8,0x000002f7,0x000700f5,0x000000a2,0x00000301,0x000002f5,0x000002f1, - 0x00000300,0x000002fc,0x000200fe,0x00000301,0x00010038,0x00050036,0x00000055,0x000000c4, - 0x00000000,0x000000c0,0x00030037,0x0000006d,0x000000c1,0x00030037,0x0000006d,0x000000c2, - 0x00030037,0x0000006d,0x000000c3,0x000200f8,0x000000c5,0x0004003b,0x0000006d,0x00000304, - 0x00000007,0x0004003b,0x00000037,0x0000030b,0x00000007,0x0004003b,0x00000037,0x0000030e, - 0x00000007,0x0004003b,0x00000037,0x00000310,0x00000007,0x0004003b,0x00000037,0x00000311, - 0x00000007,0x0004003b,0x00000037,0x00000317,0x00000007,0x0004003b,0x00000037,0x0000031a, - 0x00000007,0x0004003b,0x00000037,0x0000031c,0x00000007,0x0004003b,0x00000037,0x0000031d, - 0x00000007,0x0004003d,0x00000055,0x00000305,0x000000c1,0x0004003d,0x00000055,0x00000306, - 0x000000c2,0x00050080,0x00000055,0x00000307,0x00000305,0x00000306,0x0003003e,0x00000304, - 0x00000307,0x00050041,0x00000037,0x00000308,0x000000c3,0x000001eb,0x0004003d,0x00000036, - 0x00000309,0x00000308,0x00050082,0x00000036,0x0000030a,0x00000309,0x0000022f,0x00050041, - 0x00000037,0x0000030c,0x00000304,0x000001eb,0x0004003d,0x00000036,0x0000030d,0x0000030c, - 0x0003003e,0x0000030b,0x0000030d,0x0003003e,0x0000030e,0x0000030a,0x00060039,0x00000036, - 0x0000030f,0x0000003b,0x0000030b,0x0000030e,0x0003003e,0x00000310,0x00000192,0x0003003e, - 0x00000311,0x0000030f,0x00060039,0x00000036,0x00000312,0x0000004f,0x00000310,0x00000311, - 0x00050041,0x00000037,0x00000313,0x00000304,0x000001eb,0x0003003e,0x00000313,0x00000312, - 0x00050041,0x00000037,0x00000314,0x000000c3,0x00000284,0x0004003d,0x00000036,0x00000315, - 0x00000314,0x00050082,0x00000036,0x00000316,0x00000315,0x0000022f,0x00050041,0x00000037, - 0x00000318,0x00000304,0x00000284,0x0004003d,0x00000036,0x00000319,0x00000318,0x0003003e, - 0x00000317,0x00000319,0x0003003e,0x0000031a,0x00000316,0x00060039,0x00000036,0x0000031b, - 0x0000003b,0x00000317,0x0000031a,0x0003003e,0x0000031c,0x00000192,0x0003003e,0x0000031d, - 0x0000031b,0x00060039,0x00000036,0x0000031e,0x0000004f,0x0000031c,0x0000031d,0x00050041, - 0x00000037,0x0000031f,0x00000304,0x00000284,0x0003003e,0x0000031f,0x0000031e,0x0004003d, - 0x00000055,0x00000320,0x00000304,0x000200fe,0x00000320,0x00010038,0x00050036,0x0000001a, - 0x000000ca,0x00000000,0x000000c6,0x00030037,0x0000001b,0x000000c7,0x00030037,0x0000006d, - 0x000000c8,0x00030037,0x0000006d,0x000000c9,0x000200f8,0x000000cb,0x0004003b,0x0000001b, - 0x00000323,0x00000007,0x0004003b,0x0000001b,0x00000328,0x00000007,0x0004003b,0x0000001b, - 0x0000032d,0x00000007,0x0004003b,0x0000001b,0x0000032f,0x00000007,0x0004003b,0x0000001b, - 0x00000331,0x00000007,0x0004003b,0x0000001b,0x00000332,0x00000007,0x0004003b,0x0000001b, - 0x00000334,0x00000007,0x0004003d,0x0000001a,0x00000324,0x000000c7,0x0004003d,0x00000055, - 0x00000325,0x000000c8,0x0004006f,0x0000001a,0x00000326,0x00000325,0x00050085,0x0000001a, - 0x00000327,0x00000324,0x00000326,0x0003003e,0x00000323,0x00000327,0x0004003d,0x00000055, - 0x0000032a,0x000000c8,0x0004006f,0x0000001a,0x0000032b,0x0000032a,0x00050083,0x0000001a, - 0x0000032c,0x0000032b,0x00000329,0x0004003d,0x0000001a,0x0000032e,0x00000323,0x0003003e, - 0x0000032d,0x0000032e,0x0003003e,0x0000032f,0x0000032c,0x00060039,0x0000001a,0x00000330, - 0x00000028,0x0000032d,0x0000032f,0x0003003e,0x00000331,0x00000329,0x0003003e,0x00000332, - 0x00000330,0x00060039,0x0000001a,0x00000333,0x00000043,0x00000331,0x00000332,0x0003003e, - 0x00000328,0x00000333,0x0004003d,0x0000001a,0x00000335,0x00000328,0x0004003d,0x00000055, - 0x00000336,0x000000c9,0x0004006f,0x0000001a,0x00000337,0x00000336,0x00050088,0x0000001a, - 0x00000338,0x00000335,0x00000337,0x0003003e,0x00000334,0x00000338,0x0004003d,0x0000001a, - 0x00000339,0x00000334,0x000200fe,0x00000339,0x00010038,0x00050036,0x000000a2,0x000000cf, - 0x00000000,0x000000cc,0x00030037,0x0000006d,0x000000cd,0x00030037,0x0000006d,0x000000ce, - 0x000200f8,0x000000d0,0x0004003d,0x00000055,0x0000033c,0x000000cd,0x0004007c,0x0000033d, - 0x0000033e,0x0000033c,0x0004003d,0x00000055,0x0000033f,0x000000ce,0x0004007c,0x0000033d, - 0x00000340,0x0000033f,0x000500b0,0x00000341,0x00000342,0x0000033e,0x00000340,0x0004009b, - 0x000000a2,0x00000343,0x00000342,0x000200fe,0x00000343,0x00010038,0x00050036,0x00000006, - 0x000000d2,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d1,0x000200f8,0x000000d3, - 0x0004003b,0x00000007,0x00000349,0x00000007,0x0004003d,0x00000006,0x00000346,0x000000d1, - 0x0006000c,0x00000006,0x00000347,0x00000001,0x00000004,0x00000346,0x000500b8,0x000000a2, - 0x00000348,0x00000347,0x000002d8,0x000300f7,0x0000034b,0x00000000,0x000400fa,0x00000348, - 0x0000034a,0x0000034c,0x000200f8,0x0000034a,0x0003003e,0x00000349,0x00000150,0x000200f9, - 0x0000034b,0x000200f8,0x0000034c,0x0004003d,0x00000006,0x0000034e,0x000000d1,0x00050085, - 0x00000006,0x0000034f,0x0000034d,0x0000034e,0x0006000c,0x00000006,0x00000350,0x00000001, - 0x0000000d,0x0000034f,0x0004003d,0x00000006,0x00000351,0x000000d1,0x00050085,0x00000006, - 0x00000352,0x0000034d,0x00000351,0x00050088,0x00000006,0x00000353,0x00000350,0x00000352, - 0x0004003d,0x00000006,0x00000355,0x000000d1,0x00050085,0x00000006,0x00000356,0x00000354, - 0x00000355,0x0006000c,0x00000006,0x00000357,0x00000001,0x0000000d,0x00000356,0x0004003d, - 0x00000006,0x00000358,0x000000d1,0x00050085,0x00000006,0x00000359,0x00000354,0x00000358, - 0x00050088,0x00000006,0x0000035a,0x00000357,0x00000359,0x00050085,0x00000006,0x0000035b, - 0x00000353,0x0000035a,0x0003003e,0x00000349,0x0000035b,0x000200f9,0x0000034b,0x000200f8, - 0x0000034b,0x0004003d,0x00000006,0x0000035c,0x00000349,0x000200fe,0x0000035c,0x00010038, - 0x00050036,0x00000006,0x000000d5,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d4, - 0x000200f8,0x000000d6,0x0004003b,0x00000007,0x00000362,0x00000007,0x0004003b,0x00000007, - 0x00000363,0x00000007,0x0004003b,0x00000007,0x00000365,0x00000007,0x0004003d,0x00000006, - 0x0000035f,0x000000d4,0x0006000c,0x00000006,0x00000360,0x00000001,0x00000004,0x0000035f, - 0x0003003e,0x00000362,0x00000360,0x0003003e,0x00000363,0x00000361,0x00060039,0x00000006, - 0x00000364,0x00000023,0x00000362,0x00000363,0x0003003e,0x000000d4,0x00000364,0x0004003d, - 0x00000006,0x00000366,0x000000d4,0x0003003e,0x00000365,0x00000366,0x00050039,0x00000006, - 0x00000367,0x000000d2,0x00000365,0x000200fe,0x00000367,0x00010038,0x00050036,0x00000006, - 0x000000d8,0x00000000,0x00000016,0x00030037,0x00000007,0x000000d7,0x000200f8,0x000000d9, - 0x0004003b,0x00000007,0x0000036a,0x00000007,0x0004003b,0x00000007,0x0000036f,0x00000007, - 0x0004003d,0x00000006,0x0000036c,0x000000d7,0x00050085,0x00000006,0x0000036d,0x0000036b, - 0x0000036c,0x00050083,0x00000006,0x0000036e,0x0000036d,0x00000150,0x0003003e,0x0000036a, - 0x0000036e,0x0004003d,0x00000006,0x00000370,0x000000d7,0x00050085,0x00000006,0x00000371, - 0x0000029e,0x00000370,0x00050083,0x00000006,0x00000372,0x00000371,0x00000150,0x0003003e, - 0x0000036f,0x00000372,0x0004003d,0x00000006,0x00000374,0x0000036a,0x00050085,0x00000006, - 0x00000375,0x00000373,0x00000374,0x0004003d,0x00000006,0x00000376,0x0000036a,0x00050085, - 0x00000006,0x00000377,0x00000375,0x00000376,0x00050083,0x00000006,0x00000379,0x00000377, - 0x00000378,0x0004003d,0x00000006,0x0000037a,0x0000036f,0x0004003d,0x00000006,0x0000037b, - 0x0000036f,0x00050085,0x00000006,0x0000037c,0x0000037a,0x0000037b,0x00050085,0x00000006, - 0x0000037d,0x00000379,0x0000037c,0x000200fe,0x0000037d,0x00010038,0x00050036,0x00000006, - 0x000000db,0x00000000,0x00000016,0x00030037,0x00000007,0x000000da,0x000200f8,0x000000dc, - 0x0004003b,0x00000007,0x00000381,0x00000007,0x0004003b,0x00000007,0x00000383,0x00000007, - 0x0004003b,0x00000007,0x00000385,0x00000007,0x0004003d,0x00000006,0x00000382,0x000000da, - 0x0003003e,0x00000381,0x00000382,0x0003003e,0x00000383,0x00000380,0x00060039,0x00000006, - 0x00000384,0x00000023,0x00000381,0x00000383,0x0003003e,0x000000da,0x00000384,0x0004003d, - 0x00000006,0x00000386,0x000000da,0x0003003e,0x00000385,0x00000386,0x00050039,0x00000006, - 0x00000387,0x000000d8,0x00000385,0x000200fe,0x00000387,0x00010038,0x00050036,0x0000002f, - 0x000000e3,0x00000000,0x000000dd,0x00030037,0x00000030,0x000000de,0x00030037,0x00000030, - 0x000000df,0x00030037,0x00000030,0x000000e0,0x00030037,0x00000030,0x000000e1,0x00030037, - 0x00000007,0x000000e2,0x000200f8,0x000000e4,0x0004003b,0x00000007,0x0000038a,0x00000007, - 0x0004003b,0x00000007,0x0000038e,0x00000007,0x0004003b,0x00000007,0x00000390,0x00000007, - 0x0004003b,0x00000007,0x00000394,0x00000007,0x0004003b,0x00000007,0x00000396,0x00000007, - 0x0004003b,0x00000007,0x00000399,0x00000007,0x0004003b,0x00000007,0x0000039b,0x00000007, - 0x0004003b,0x00000007,0x0000039e,0x00000007,0x0004003d,0x00000006,0x0000038c,0x000000e2, - 0x00050083,0x00000006,0x0000038d,0x0000038b,0x0000038c,0x0003003e,0x0000038e,0x0000038d, - 0x00050039,0x00000006,0x0000038f,0x000000d5,0x0000038e,0x0003003e,0x0000038a,0x0000038f, - 0x0004003d,0x00000006,0x00000392,0x000000e2,0x00050083,0x00000006,0x00000393,0x00000391, - 0x00000392,0x0003003e,0x00000394,0x00000393,0x00050039,0x00000006,0x00000395,0x000000d5, - 0x00000394,0x0003003e,0x00000390,0x00000395,0x0004003d,0x00000006,0x00000397,0x000000e2, - 0x00050083,0x00000006,0x00000398,0x00000150,0x00000397,0x0003003e,0x00000399,0x00000398, - 0x00050039,0x00000006,0x0000039a,0x000000d5,0x00000399,0x0003003e,0x00000396,0x0000039a, - 0x0004003d,0x00000006,0x0000039c,0x000000e2,0x00050083,0x00000006,0x0000039d,0x00000361, - 0x0000039c,0x0003003e,0x0000039e,0x0000039d,0x00050039,0x00000006,0x0000039f,0x000000d5, - 0x0000039e,0x0003003e,0x0000039b,0x0000039f,0x0004003d,0x00000006,0x000003a0,0x0000038a, - 0x0004003d,0x0000002f,0x000003a1,0x000000de,0x0005008e,0x0000002f,0x000003a2,0x000003a1, - 0x000003a0,0x0004003d,0x00000006,0x000003a3,0x00000390,0x0004003d,0x0000002f,0x000003a4, - 0x000000df,0x0005008e,0x0000002f,0x000003a5,0x000003a4,0x000003a3,0x00050081,0x0000002f, - 0x000003a6,0x000003a2,0x000003a5,0x0004003d,0x00000006,0x000003a7,0x00000396,0x0004003d, - 0x0000002f,0x000003a8,0x000000e0,0x0005008e,0x0000002f,0x000003a9,0x000003a8,0x000003a7, - 0x00050081,0x0000002f,0x000003aa,0x000003a6,0x000003a9,0x0004003d,0x00000006,0x000003ab, - 0x0000039b,0x0004003d,0x0000002f,0x000003ac,0x000000e1,0x0005008e,0x0000002f,0x000003ad, - 0x000003ac,0x000003ab,0x00050081,0x0000002f,0x000003ae,0x000003aa,0x000003ad,0x0004003d, - 0x00000006,0x000003af,0x0000038a,0x0004003d,0x00000006,0x000003b0,0x00000390,0x00050081, - 0x00000006,0x000003b1,0x000003af,0x000003b0,0x0004003d,0x00000006,0x000003b2,0x00000396, - 0x00050081,0x00000006,0x000003b3,0x000003b1,0x000003b2,0x0004003d,0x00000006,0x000003b4, - 0x0000039b,0x00050081,0x00000006,0x000003b5,0x000003b3,0x000003b4,0x00070050,0x0000002f, - 0x000003b6,0x000003b5,0x000003b5,0x000003b5,0x000003b5,0x00050088,0x0000002f,0x000003b7, - 0x000003ae,0x000003b6,0x000200fe,0x000003b7,0x00010038,0x00050036,0x0000002f,0x000000ea, - 0x00000000,0x000000e7,0x00030037,0x000000e6,0x000000e8,0x00030037,0x0000001b,0x000000e9, - 0x000200f8,0x000000eb,0x0004003b,0x00000030,0x000003ba,0x00000007,0x0004003b,0x00000030, - 0x000003bb,0x00000007,0x0004003b,0x00000030,0x000003be,0x00000007,0x0004003b,0x00000030, - 0x000003c1,0x00000007,0x0004003b,0x00000030,0x000003c4,0x00000007,0x0004003b,0x00000007, - 0x000003c7,0x00000007,0x0004003b,0x00000030,0x000003cb,0x00000007,0x0004003b,0x00000030, - 0x000003ce,0x00000007,0x0004003b,0x00000030,0x000003d1,0x00000007,0x0004003b,0x00000030, - 0x000003d4,0x00000007,0x0004003b,0x00000030,0x000003d7,0x00000007,0x0004003b,0x00000007, - 0x000003da,0x00000007,0x0004003b,0x00000030,0x000003de,0x00000007,0x0004003b,0x00000030, - 0x000003e2,0x00000007,0x0004003b,0x00000030,0x000003e5,0x00000007,0x0004003b,0x00000030, - 0x000003e8,0x00000007,0x0004003b,0x00000030,0x000003eb,0x00000007,0x0004003b,0x00000007, - 0x000003ee,0x00000007,0x0004003b,0x00000030,0x000003f2,0x00000007,0x0004003b,0x00000030, - 0x000003f5,0x00000007,0x0004003b,0x00000030,0x000003f8,0x00000007,0x0004003b,0x00000030, - 0x000003fb,0x00000007,0x0004003b,0x00000030,0x000003fe,0x00000007,0x0004003b,0x00000007, - 0x00000401,0x00000007,0x0004003b,0x00000030,0x00000405,0x00000007,0x0004003b,0x00000030, - 0x00000406,0x00000007,0x0004003b,0x00000030,0x00000408,0x00000007,0x0004003b,0x00000030, - 0x0000040a,0x00000007,0x0004003b,0x00000030,0x0000040c,0x00000007,0x0004003b,0x00000007, - 0x0000040e,0x00000007,0x0004003b,0x00000414,0x00000415,0x00000007,0x0004003b,0x00000030, - 0x0000041f,0x00000007,0x0004003b,0x00000030,0x00000422,0x00000007,0x0004003b,0x00000037, - 0x00000425,0x00000007,0x0004003b,0x00000030,0x0000042e,0x00000007,0x0004003b,0x00000030, - 0x00000430,0x00000007,0x0004003b,0x00000030,0x00000435,0x00000007,0x0004003b,0x00000030, - 0x00000437,0x00000007,0x00050041,0x00000030,0x000003bc,0x000000e8,0x00000192,0x0004003d, - 0x0000002f,0x000003bd,0x000003bc,0x0003003e,0x000003bb,0x000003bd,0x00050041,0x00000030, - 0x000003bf,0x000000e8,0x0000022f,0x0004003d,0x0000002f,0x000003c0,0x000003bf,0x0003003e, - 0x000003be,0x000003c0,0x00050041,0x00000030,0x000003c2,0x000000e8,0x0000019d,0x0004003d, - 0x0000002f,0x000003c3,0x000003c2,0x0003003e,0x000003c1,0x000003c3,0x00050041,0x00000030, - 0x000003c5,0x000000e8,0x000001a2,0x0004003d,0x0000002f,0x000003c6,0x000003c5,0x0003003e, - 0x000003c4,0x000003c6,0x00050041,0x00000007,0x000003c8,0x000000e9,0x000001eb,0x0004003d, - 0x00000006,0x000003c9,0x000003c8,0x0003003e,0x000003c7,0x000003c9,0x00090039,0x0000002f, - 0x000003ca,0x000000e3,0x000003bb,0x000003be,0x000003c1,0x000003c4,0x000003c7,0x0003003e, - 0x000003ba,0x000003ca,0x00050041,0x00000030,0x000003cf,0x000000e8,0x00000198,0x0004003d, - 0x0000002f,0x000003d0,0x000003cf,0x0003003e,0x000003ce,0x000003d0,0x00050041,0x00000030, - 0x000003d2,0x000000e8,0x000003cc,0x0004003d,0x0000002f,0x000003d3,0x000003d2,0x0003003e, - 0x000003d1,0x000003d3,0x00050041,0x00000030,0x000003d5,0x000000e8,0x000003cd,0x0004003d, - 0x0000002f,0x000003d6,0x000003d5,0x0003003e,0x000003d4,0x000003d6,0x00050041,0x00000030, - 0x000003d8,0x000000e8,0x000001a7,0x0004003d,0x0000002f,0x000003d9,0x000003d8,0x0003003e, - 0x000003d7,0x000003d9,0x00050041,0x00000007,0x000003db,0x000000e9,0x000001eb,0x0004003d, - 0x00000006,0x000003dc,0x000003db,0x0003003e,0x000003da,0x000003dc,0x00090039,0x0000002f, - 0x000003dd,0x000000e3,0x000003ce,0x000003d1,0x000003d4,0x000003d7,0x000003da,0x0003003e, - 0x000003cb,0x000003dd,0x00050041,0x00000030,0x000003e3,0x000000e8,0x000003df,0x0004003d, - 0x0000002f,0x000003e4,0x000003e3,0x0003003e,0x000003e2,0x000003e4,0x00050041,0x00000030, - 0x000003e6,0x000000e8,0x000003e0,0x0004003d,0x0000002f,0x000003e7,0x000003e6,0x0003003e, - 0x000003e5,0x000003e7,0x00050041,0x00000030,0x000003e9,0x000000e8,0x000001ad,0x0004003d, - 0x0000002f,0x000003ea,0x000003e9,0x0003003e,0x000003e8,0x000003ea,0x00050041,0x00000030, - 0x000003ec,0x000000e8,0x000003e1,0x0004003d,0x0000002f,0x000003ed,0x000003ec,0x0003003e, - 0x000003eb,0x000003ed,0x00050041,0x00000007,0x000003ef,0x000000e9,0x000001eb,0x0004003d, - 0x00000006,0x000003f0,0x000003ef,0x0003003e,0x000003ee,0x000003f0,0x00090039,0x0000002f, - 0x000003f1,0x000000e3,0x000003e2,0x000003e5,0x000003e8,0x000003eb,0x000003ee,0x0003003e, - 0x000003de,0x000003f1,0x00050041,0x00000030,0x000003f6,0x000000e8,0x000003f3,0x0004003d, - 0x0000002f,0x000003f7,0x000003f6,0x0003003e,0x000003f5,0x000003f7,0x00050041,0x00000030, - 0x000003f9,0x000000e8,0x000001b2,0x0004003d,0x0000002f,0x000003fa,0x000003f9,0x0003003e, - 0x000003f8,0x000003fa,0x00050041,0x00000030,0x000003fc,0x000000e8,0x000003f4,0x0004003d, - 0x0000002f,0x000003fd,0x000003fc,0x0003003e,0x000003fb,0x000003fd,0x00050041,0x00000030, - 0x000003ff,0x000000e8,0x000001b8,0x0004003d,0x0000002f,0x00000400,0x000003ff,0x0003003e, - 0x000003fe,0x00000400,0x00050041,0x00000007,0x00000402,0x000000e9,0x000001eb,0x0004003d, - 0x00000006,0x00000403,0x00000402,0x0003003e,0x00000401,0x00000403,0x00090039,0x0000002f, - 0x00000404,0x000000e3,0x000003f5,0x000003f8,0x000003fb,0x000003fe,0x00000401,0x0003003e, - 0x000003f2,0x00000404,0x0004003d,0x0000002f,0x00000407,0x000003ba,0x0003003e,0x00000406, - 0x00000407,0x0004003d,0x0000002f,0x00000409,0x000003cb,0x0003003e,0x00000408,0x00000409, - 0x0004003d,0x0000002f,0x0000040b,0x000003de,0x0003003e,0x0000040a,0x0000040b,0x0004003d, - 0x0000002f,0x0000040d,0x000003f2,0x0003003e,0x0000040c,0x0000040d,0x00050041,0x00000007, - 0x0000040f,0x000000e9,0x00000284,0x0004003d,0x00000006,0x00000410,0x0000040f,0x0003003e, - 0x0000040e,0x00000410,0x00090039,0x0000002f,0x00000411,0x000000e3,0x00000406,0x00000408, - 0x0000040a,0x0000040c,0x0000040e,0x0003003e,0x00000405,0x00000411,0x00050041,0x00000030, - 0x00000416,0x000000e8,0x000003cc,0x0004003d,0x0000002f,0x00000417,0x00000416,0x00050041, - 0x00000030,0x00000418,0x000000e8,0x000003cd,0x0004003d,0x0000002f,0x00000419,0x00000418, - 0x00050041,0x00000030,0x0000041a,0x000000e8,0x000003e0,0x0004003d,0x0000002f,0x0000041b, - 0x0000041a,0x00050041,0x00000030,0x0000041c,0x000000e8,0x000001ad,0x0004003d,0x0000002f, - 0x0000041d,0x0000041c,0x00070050,0x00000413,0x0000041e,0x00000417,0x00000419,0x0000041b, - 0x0000041d,0x0003003e,0x00000415,0x0000041e,0x00050041,0x00000030,0x00000420,0x00000415, - 0x00000192,0x0004003d,0x0000002f,0x00000421,0x00000420,0x0003003e,0x0000041f,0x00000421, - 0x00050041,0x00000030,0x00000423,0x00000415,0x00000192,0x0004003d,0x0000002f,0x00000424, - 0x00000423,0x0003003e,0x00000422,0x00000424,0x0003003e,0x00000425,0x0000022f,0x000200f9, - 0x00000426,0x000200f8,0x00000426,0x000400f6,0x00000428,0x00000429,0x00000000,0x000200f9, - 0x0000042a,0x000200f8,0x0000042a,0x0004003d,0x00000036,0x0000042b,0x00000425,0x000500b1, - 0x000000a2,0x0000042c,0x0000042b,0x00000198,0x000400fa,0x0000042c,0x00000427,0x00000428, - 0x000200f8,0x00000427,0x0004003d,0x00000036,0x0000042d,0x00000425,0x0004003d,0x0000002f, - 0x0000042f,0x0000041f,0x0003003e,0x0000042e,0x0000042f,0x00050041,0x00000030,0x00000431, - 0x00000415,0x0000042d,0x0004003d,0x0000002f,0x00000432,0x00000431,0x0003003e,0x00000430, - 0x00000432,0x00060039,0x0000002f,0x00000433,0x00000034,0x0000042e,0x00000430,0x0003003e, - 0x0000041f,0x00000433,0x0004003d,0x00000036,0x00000434,0x00000425,0x0004003d,0x0000002f, - 0x00000436,0x00000422,0x0003003e,0x00000435,0x00000436,0x00050041,0x00000030,0x00000438, - 0x00000415,0x00000434,0x0004003d,0x0000002f,0x00000439,0x00000438,0x0003003e,0x00000437, - 0x00000439,0x00060039,0x0000002f,0x0000043a,0x0000004b,0x00000435,0x00000437,0x0003003e, - 0x00000422,0x0000043a,0x000200f9,0x00000429,0x000200f8,0x00000429,0x0004003d,0x00000036, - 0x0000043b,0x00000425,0x00050080,0x00000036,0x0000043c,0x0000043b,0x0000022f,0x0003003e, - 0x00000425,0x0000043c,0x000200f9,0x00000426,0x000200f8,0x00000428,0x0004003d,0x0000002f, - 0x0000043d,0x00000405,0x0004003d,0x0000002f,0x0000043e,0x0000041f,0x0004003d,0x0000002f, - 0x0000043f,0x00000422,0x0008000c,0x0000002f,0x00000440,0x00000001,0x0000002b,0x0000043d, - 0x0000043e,0x0000043f,0x0003003e,0x00000405,0x00000440,0x0004003d,0x0000002f,0x00000441, - 0x00000405,0x000200fe,0x00000441,0x00010038,0x00050036,0x00000055,0x000000ef,0x00000000, - 0x000000c0,0x00030037,0x0000006d,0x000000ec,0x00030037,0x0000006d,0x000000ed,0x00030037, - 0x0000006d,0x000000ee,0x000200f8,0x000000f0,0x0004003b,0x0000006d,0x00000444,0x00000007, - 0x0004003b,0x00000037,0x0000044b,0x00000007,0x0004003b,0x00000037,0x0000044e,0x00000007, - 0x0004003b,0x00000037,0x00000450,0x00000007,0x0004003b,0x00000037,0x00000451,0x00000007, - 0x0004003b,0x00000037,0x00000457,0x00000007,0x0004003b,0x00000037,0x0000045a,0x00000007, - 0x0004003b,0x00000037,0x0000045c,0x00000007,0x0004003b,0x00000037,0x0000045d,0x00000007, - 0x0004003d,0x00000055,0x00000445,0x000000ec,0x0004003d,0x00000055,0x00000446,0x000000ed, - 0x00050080,0x00000055,0x00000447,0x00000445,0x00000446,0x0003003e,0x00000444,0x00000447, - 0x00050041,0x00000037,0x00000448,0x000000ee,0x000001eb,0x0004003d,0x00000036,0x00000449, - 0x00000448,0x00050082,0x00000036,0x0000044a,0x00000449,0x0000019d,0x00050041,0x00000037, - 0x0000044c,0x00000444,0x000001eb,0x0004003d,0x00000036,0x0000044d,0x0000044c,0x0003003e, - 0x0000044b,0x0000044d,0x0003003e,0x0000044e,0x0000044a,0x00060039,0x00000036,0x0000044f, - 0x0000003b,0x0000044b,0x0000044e,0x0003003e,0x00000450,0x0000022f,0x0003003e,0x00000451, - 0x0000044f,0x00060039,0x00000036,0x00000452,0x0000004f,0x00000450,0x00000451,0x00050041, - 0x00000037,0x00000453,0x00000444,0x000001eb,0x0003003e,0x00000453,0x00000452,0x00050041, - 0x00000037,0x00000454,0x000000ee,0x00000284,0x0004003d,0x00000036,0x00000455,0x00000454, - 0x00050082,0x00000036,0x00000456,0x00000455,0x0000019d,0x00050041,0x00000037,0x00000458, - 0x00000444,0x00000284,0x0004003d,0x00000036,0x00000459,0x00000458,0x0003003e,0x00000457, - 0x00000459,0x0003003e,0x0000045a,0x00000456,0x00060039,0x00000036,0x0000045b,0x0000003b, - 0x00000457,0x0000045a,0x0003003e,0x0000045c,0x0000022f,0x0003003e,0x0000045d,0x0000045b, - 0x00060039,0x00000036,0x0000045e,0x0000004f,0x0000045c,0x0000045d,0x00050041,0x00000037, - 0x0000045f,0x00000444,0x00000284,0x0003003e,0x0000045f,0x0000045e,0x0004003d,0x00000055, - 0x00000460,0x00000444,0x000200fe,0x00000460,0x00010038,0x00050036,0x00000002,0x000000f4, - 0x00000000,0x000000f1,0x00030037,0x0000009b,0x000000f2,0x00030037,0x0000000f,0x000000f3, - 0x000200f8,0x000000f5,0x0004003d,0x0000000e,0x00000463,0x000000f3,0x00050041,0x0000000f, - 0x00000464,0x000000f2,0x0000019d,0x0004003d,0x0000000e,0x00000465,0x00000464,0x00050041, - 0x0000000f,0x00000466,0x000000f2,0x000001a2,0x0004003d,0x0000000e,0x00000467,0x00000466, - 0x0008000c,0x0000000e,0x00000468,0x00000001,0x0000002b,0x00000463,0x00000465,0x00000467, - 0x0003003e,0x000000f3,0x00000468,0x000100fd,0x00010038,0x00050036,0x00000006,0x000000f9, - 0x00000000,0x000000f6,0x00030037,0x0000001b,0x000000f7,0x00030037,0x00000007,0x000000f8, - 0x000200f8,0x000000fa,0x0004003b,0x0000001b,0x00000469,0x00000007,0x0004003b,0x00000007, - 0x0000046e,0x00000007,0x0004003b,0x00000007,0x00000472,0x00000007,0x0004003d,0x0000001a, - 0x0000046a,0x000000f7,0x0004003d,0x00000006,0x0000046b,0x000000f8,0x00050050,0x0000001a, - 0x0000046c,0x0000046b,0x0000046b,0x00050085,0x0000001a,0x0000046d,0x0000046a,0x0000046c, - 0x0003003e,0x00000469,0x0000046d,0x0004003d,0x0000001a,0x0000046f,0x00000469,0x0004003d, - 0x0000001a,0x00000470,0x00000469,0x00050094,0x00000006,0x00000471,0x0000046f,0x00000470, - 0x0003003e,0x00000472,0x00000471,0x00050039,0x00000006,0x00000473,0x000000db,0x00000472, - 0x0003003e,0x0000046e,0x00000473,0x0004003d,0x00000006,0x00000474,0x0000046e,0x000200fe, - 0x00000474,0x00010038,0x00050036,0x00000006,0x00000101,0x00000000,0x000000fe,0x00030037, - 0x000000fb,0x000000ff,0x00030037,0x000000fd,0x00000100,0x000200f8,0x00000102,0x0004003b, - 0x00000007,0x00000477,0x00000007,0x0004003b,0x00000007,0x00000480,0x00000007,0x0004003b, - 0x00000007,0x00000481,0x00000007,0x00040039,0x0000001a,0x00000478,0x00000062,0x00050050, - 0x0000001a,0x00000479,0x00000150,0x00000150,0x00050088,0x0000001a,0x0000047a,0x00000479, - 0x00000478,0x00050050,0x0000001a,0x0000047b,0x00000150,0x00000150,0x00050083,0x0000001a, - 0x0000047c,0x0000047a,0x0000047b,0x00050051,0x00000006,0x0000047d,0x0000047c,0x00000000, - 0x00050081,0x00000006,0x0000047e,0x00000150,0x0000047d,0x0003003e,0x00000477,0x0000047e, - 0x0003003e,0x00000480,0x0000047f,0x0004003d,0x00000006,0x00000482,0x00000477,0x0003003e, - 0x00000481,0x00000482,0x00060039,0x00000006,0x00000483,0x00000023,0x00000480,0x00000481, - 0x000200fe,0x00000483,0x00010038,0x00050036,0x0000000e,0x00000104,0x00000000,0x0000006e, - 0x00030037,0x0000006d,0x00000103,0x000200f8,0x00000105,0x0004003b,0x0000000f,0x00000486, - 0x00000007,0x0004003b,0x0000006d,0x00000488,0x00000007,0x0004003b,0x0000000f,0x0000048b, - 0x00000007,0x0004003b,0x0000000f,0x0000048c,0x00000007,0x0004003b,0x0000000f,0x00000490, - 0x00000007,0x0004003b,0x0000000f,0x00000491,0x00000007,0x0004003d,0x00000055,0x00000489, - 0x00000103,0x0003003e,0x00000488,0x00000489,0x00050039,0x0000000e,0x0000048a,0x00000070, - 0x00000488,0x0003003e,0x0000048b,0x00000487,0x0003003e,0x0000048c,0x0000048a,0x00060039, - 0x0000000e,0x0000048d,0x00000047,0x0000048b,0x0000048c,0x00040039,0x00000006,0x0000048e, - 0x00000091,0x0005008e,0x0000000e,0x0000048f,0x0000048d,0x0000048e,0x0003003e,0x00000486, - 0x0000048f,0x0004003d,0x0000000e,0x00000492,0x00000486,0x0003003e,0x00000491,0x00000492, - 0x00050039,0x0000000e,0x00000493,0x000000b4,0x00000491,0x0003003e,0x00000490,0x00000493, - 0x0004003d,0x0000000e,0x00000494,0x00000490,0x000200fe,0x00000494,0x00010038,0x00050036, - 0x00000002,0x00000109,0x00000000,0x00000106,0x00030037,0x000000fb,0x00000107,0x00030037, - 0x000000fd,0x00000108,0x000200f8,0x0000010a,0x0004003b,0x0000001b,0x00000497,0x00000007, - 0x0004003b,0x0000001b,0x0000049b,0x00000007,0x0004003b,0x0000006d,0x0000049f,0x00000007, - 0x0004003b,0x0000001b,0x000004a3,0x00000007,0x0004003b,0x0000001b,0x000004a9,0x00000007, - 0x0004003b,0x0000006d,0x000004ad,0x00000007,0x0004003b,0x000000a3,0x000004be,0x00000007, - 0x0004003b,0x000000a3,0x000004c4,0x00000007,0x0004003b,0x0000001b,0x000004ca,0x00000007, - 0x0004003b,0x000000a3,0x000004cd,0x00000007,0x0004003b,0x00000037,0x000004d0,0x00000007, - 0x0004003b,0x00000037,0x000004d1,0x00000007,0x0004003b,0x00000037,0x000004d9,0x00000007, - 0x0004003b,0x0000006d,0x000004e1,0x00000007,0x0004003b,0x00000037,0x000004e3,0x00000007, - 0x0004003b,0x00000037,0x000004ec,0x00000007,0x0004003b,0x0000006d,0x000004f5,0x00000007, - 0x0004003b,0x0000006d,0x000004fb,0x00000007,0x0004003b,0x0000006d,0x000004fd,0x00000007, - 0x0004003b,0x0000006d,0x000004ff,0x00000007,0x0004003b,0x0000006d,0x00000500,0x00000007, - 0x0004003b,0x00000504,0x00000505,0x00000007,0x0004003b,0x0000006d,0x00000507,0x00000007, - 0x0004003b,0x0000000f,0x0000051d,0x00000007,0x0004003b,0x0000000f,0x00000521,0x00000007, - 0x0004003b,0x0000000f,0x00000523,0x00000007,0x0004003b,0x00000007,0x00000528,0x00000007, - 0x0004003b,0x000000fd,0x00000529,0x00000007,0x0004003b,0x00000007,0x0000052d,0x00000007, - 0x0004003b,0x00000007,0x00000532,0x00000007,0x0004003b,0x00000007,0x00000533,0x00000007, - 0x0004003b,0x00000007,0x00000535,0x00000007,0x0004003b,0x00000007,0x0000053f,0x00000007, - 0x0004003b,0x00000007,0x00000541,0x00000007,0x0004003b,0x00000007,0x00000542,0x00000007, - 0x0004003b,0x00000007,0x00000544,0x00000007,0x0004003b,0x00000007,0x00000545,0x00000007, - 0x0004003b,0x00000007,0x00000547,0x00000007,0x0004003b,0x00000007,0x00000548,0x00000007, - 0x0004003b,0x00000007,0x0000054a,0x00000007,0x0004003b,0x00000007,0x0000054c,0x00000007, - 0x0004003b,0x00000037,0x0000054f,0x00000007,0x0004003b,0x00000037,0x00000557,0x00000007, - 0x0004003b,0x0000006d,0x0000055f,0x00000007,0x0004003b,0x00000037,0x00000561,0x00000007, - 0x0004003b,0x00000037,0x0000056a,0x00000007,0x0004003b,0x0000001b,0x00000573,0x00000007, - 0x0004003b,0x0000001b,0x00000578,0x00000007,0x0004003b,0x0000006d,0x0000057c,0x00000007, - 0x0004003b,0x00000007,0x00000582,0x00000007,0x0004003b,0x0000006d,0x00000585,0x00000007, - 0x0004003b,0x0000006d,0x00000586,0x00000007,0x0004003b,0x00000007,0x0000058d,0x00000007, - 0x0004003b,0x0000001b,0x0000058f,0x00000007,0x0004003b,0x00000007,0x00000591,0x00000007, - 0x0004003b,0x00000007,0x000005a3,0x00000007,0x0004003b,0x00000007,0x000005a7,0x00000007, - 0x0004003b,0x000000a3,0x000005ae,0x00000007,0x0004003b,0x000000a3,0x000005b8,0x00000007, - 0x0004003b,0x0000009b,0x000005ba,0x00000007,0x0004003b,0x0000009b,0x000005c6,0x00000007, - 0x0004003b,0x0000009b,0x000005e5,0x00000007,0x0004003b,0x0000000f,0x000005e8,0x00000007, - 0x0004003b,0x0000000f,0x000005f1,0x00000007,0x0004003b,0x0000000f,0x000005f5,0x00000007, - 0x0004003b,0x0000000f,0x000005f7,0x00000007,0x00050051,0x00000055,0x00000498,0x00000107, - 0x00000000,0x0004006f,0x0000001a,0x00000499,0x00000498,0x00050081,0x0000001a,0x0000049a, - 0x00000499,0x00000329,0x0003003e,0x00000497,0x0000049a,0x0004003d,0x0000001a,0x0000049c, - 0x00000497,0x00040039,0x0000001a,0x0000049d,0x00000062,0x00050085,0x0000001a,0x0000049e, - 0x0000049c,0x0000049d,0x0003003e,0x0000049b,0x0000049e,0x0004003d,0x0000001a,0x000004a0, - 0x0000049b,0x0006000c,0x0000001a,0x000004a1,0x00000001,0x00000008,0x000004a0,0x0004006e, - 0x00000055,0x000004a2,0x000004a1,0x0003003e,0x0000049f,0x000004a2,0x0004003d,0x00000055, - 0x000004a4,0x0000049f,0x0004006f,0x0000001a,0x000004a5,0x000004a4,0x00050081,0x0000001a, - 0x000004a6,0x000004a5,0x00000329,0x00040039,0x0000001a,0x000004a7,0x00000060,0x00050083, - 0x0000001a,0x000004a8,0x000004a6,0x000004a7,0x0003003e,0x000004a3,0x000004a8,0x0004003d, - 0x0000001a,0x000004aa,0x000004a3,0x0004003d,0x0000001a,0x000004ab,0x0000049b,0x00050083, - 0x0000001a,0x000004ac,0x000004aa,0x000004ab,0x0003003e,0x000004a9,0x000004ac,0x00050041, - 0x00000007,0x000004ae,0x000004a3,0x000001eb,0x0004003d,0x00000006,0x000004af,0x000004ae, - 0x00050041,0x00000007,0x000004b0,0x0000049b,0x000001eb,0x0004003d,0x00000006,0x000004b1, - 0x000004b0,0x000500ba,0x000000a2,0x000004b2,0x000004af,0x000004b1,0x000600a9,0x00000036, - 0x000004b5,0x000004b2,0x000004b3,0x000004b4,0x00050041,0x00000037,0x000004b6,0x000004ad, - 0x000001eb,0x0003003e,0x000004b6,0x000004b5,0x00050041,0x00000007,0x000004b7,0x000004a3, - 0x00000284,0x0004003d,0x00000006,0x000004b8,0x000004b7,0x00050041,0x00000007,0x000004b9, - 0x0000049b,0x00000284,0x0004003d,0x00000006,0x000004ba,0x000004b9,0x000500ba,0x000000a2, - 0x000004bb,0x000004b8,0x000004ba,0x000600a9,0x00000036,0x000004bc,0x000004bb,0x000004b3, - 0x000004b4,0x00050041,0x00000037,0x000004bd,0x000004ad,0x00000284,0x0003003e,0x000004bd, - 0x000004bc,0x00050041,0x00000007,0x000004bf,0x000004a3,0x00000284,0x0004003d,0x00000006, - 0x000004c0,0x000004bf,0x00050041,0x00000007,0x000004c1,0x0000049b,0x00000284,0x0004003d, - 0x00000006,0x000004c2,0x000004c1,0x000500ba,0x000000a2,0x000004c3,0x000004c0,0x000004c2, - 0x0003003e,0x000004be,0x000004c3,0x00050041,0x00000007,0x000004c5,0x000004a3,0x000001eb, - 0x0004003d,0x00000006,0x000004c6,0x000004c5,0x00050041,0x00000007,0x000004c7,0x0000049b, - 0x000001eb,0x0004003d,0x00000006,0x000004c8,0x000004c7,0x000500ba,0x000000a2,0x000004c9, - 0x000004c6,0x000004c8,0x0003003e,0x000004c4,0x000004c9,0x0004003d,0x00000055,0x000004cb, - 0x000004ad,0x0004006f,0x0000001a,0x000004cc,0x000004cb,0x0003003e,0x000004ca,0x000004cc, - 0x00050051,0x00000006,0x000004ce,0x00000107,0x0000000a,0x000500b4,0x000000a2,0x000004cf, - 0x000004ce,0x0000014f,0x0003003e,0x000004cd,0x000004cf,0x0003003e,0x000004d0,0x00000192, - 0x0003003e,0x000004d1,0x00000192,0x000200f9,0x000004d2,0x000200f8,0x000004d2,0x000400f6, - 0x000004d4,0x000004d5,0x00000000,0x000200f9,0x000004d6,0x000200f8,0x000004d6,0x0004003d, - 0x00000036,0x000004d7,0x000004d1,0x000500b1,0x000000a2,0x000004d8,0x000004d7,0x000001a2, - 0x000400fa,0x000004d8,0x000004d3,0x000004d4,0x000200f8,0x000004d3,0x0003003e,0x000004d9, - 0x00000192,0x000200f9,0x000004da,0x000200f8,0x000004da,0x000400f6,0x000004dc,0x000004dd, - 0x00000000,0x000200f9,0x000004de,0x000200f8,0x000004de,0x0004003d,0x00000036,0x000004df, - 0x000004d9,0x000500b1,0x000000a2,0x000004e0,0x000004df,0x000001a2,0x000400fa,0x000004e0, - 0x000004db,0x000004dc,0x000200f8,0x000004db,0x0004003d,0x000000a2,0x000004e2,0x000004c4, - 0x000300f7,0x000004e5,0x00000000,0x000400fa,0x000004e2,0x000004e4,0x000004e8,0x000200f8, - 0x000004e4,0x0004003d,0x00000036,0x000004e6,0x000004d9,0x00050082,0x00000036,0x000004e7, - 0x000001a2,0x000004e6,0x0003003e,0x000004e3,0x000004e7,0x000200f9,0x000004e5,0x000200f8, - 0x000004e8,0x0004003d,0x00000036,0x000004e9,0x000004d9,0x0003003e,0x000004e3,0x000004e9, - 0x000200f9,0x000004e5,0x000200f8,0x000004e5,0x0004003d,0x00000036,0x000004ea,0x000004e3, - 0x0004003d,0x000000a2,0x000004eb,0x000004be,0x000300f7,0x000004ee,0x00000000,0x000400fa, - 0x000004eb,0x000004ed,0x000004f1,0x000200f8,0x000004ed,0x0004003d,0x00000036,0x000004ef, - 0x000004d1,0x00050082,0x00000036,0x000004f0,0x000001a2,0x000004ef,0x0003003e,0x000004ec, - 0x000004f0,0x000200f9,0x000004ee,0x000200f8,0x000004f1,0x0004003d,0x00000036,0x000004f2, - 0x000004d1,0x0003003e,0x000004ec,0x000004f2,0x000200f9,0x000004ee,0x000200f8,0x000004ee, - 0x0004003d,0x00000036,0x000004f3,0x000004ec,0x00050050,0x00000055,0x000004f4,0x000004ea, - 0x000004f3,0x0003003e,0x000004e1,0x000004f4,0x0004003d,0x00000055,0x000004f6,0x0000049f, - 0x0004003d,0x00000055,0x000004f7,0x000004ad,0x00050080,0x00000055,0x000004f8,0x000004f6, - 0x000004f7,0x0004003d,0x00000055,0x000004f9,0x000004e1,0x00050080,0x00000055,0x000004fa, - 0x000004f8,0x000004f9,0x0003003e,0x000004f5,0x000004fa,0x00040039,0x00000055,0x000004fc, - 0x00000057,0x0004003d,0x00000055,0x000004fe,0x000004f5,0x0003003e,0x000004fd,0x000004fe, - 0x0003003e,0x000004ff,0x0000020f,0x0003003e,0x00000500,0x000004fc,0x00070039,0x00000055, - 0x00000501,0x000000c4,0x000004fd,0x000004ff,0x00000500,0x0003003e,0x000004fb,0x00000501, - 0x0004003d,0x00000036,0x00000506,0x000004d0,0x0004003d,0x00000055,0x00000508,0x000004fb, - 0x0003003e,0x00000507,0x00000508,0x00050039,0x0000000e,0x00000509,0x00000104,0x00000507, - 0x00050041,0x0000000f,0x0000050a,0x00000505,0x00000506,0x0003003e,0x0000050a,0x00000509, - 0x0004003d,0x00000036,0x0000050b,0x000004d0,0x00050080,0x00000036,0x0000050c,0x0000050b, - 0x0000022f,0x0003003e,0x000004d0,0x0000050c,0x000200f9,0x000004dd,0x000200f8,0x000004dd, - 0x0004003d,0x00000036,0x0000050d,0x000004d9,0x00050080,0x00000036,0x0000050e,0x0000050d, - 0x0000022f,0x0003003e,0x000004d9,0x0000050e,0x000200f9,0x000004da,0x000200f8,0x000004dc, - 0x000200f9,0x000004d5,0x000200f8,0x000004d5,0x0004003d,0x00000036,0x0000050f,0x000004d1, - 0x00050080,0x00000036,0x00000510,0x0000050f,0x0000022f,0x0003003e,0x000004d1,0x00000510, - 0x000200f9,0x000004d2,0x000200f8,0x000004d4,0x0004003d,0x000000a2,0x00000511,0x000004cd, - 0x000300f7,0x00000513,0x00000000,0x000400fa,0x00000511,0x00000512,0x00000513,0x000200f8, - 0x00000512,0x0003003e,0x000004d0,0x00000192,0x000200f9,0x00000514,0x000200f8,0x00000514, - 0x000400f6,0x00000516,0x00000517,0x00000000,0x000200f9,0x00000518,0x000200f8,0x00000518, - 0x0004003d,0x00000036,0x00000519,0x000004d0,0x000500b1,0x000000a2,0x0000051a,0x00000519, - 0x000003e0,0x000400fa,0x0000051a,0x00000515,0x00000516,0x000200f8,0x00000515,0x0004003d, - 0x00000036,0x0000051b,0x000004d0,0x0004003d,0x00000036,0x0000051c,0x000004d0,0x00050041, - 0x0000000f,0x0000051e,0x00000505,0x0000051c,0x0004003d,0x0000000e,0x0000051f,0x0000051e, - 0x0003003e,0x0000051d,0x0000051f,0x00050039,0x0000000e,0x00000520,0x000000b1,0x0000051d, - 0x0003003e,0x00000521,0x00000520,0x00050039,0x0000000e,0x00000522,0x000000b7,0x00000521, - 0x0003003e,0x00000523,0x00000522,0x00050039,0x0000000e,0x00000524,0x000000b4,0x00000523, - 0x00050041,0x0000000f,0x00000525,0x00000505,0x0000051b,0x0003003e,0x00000525,0x00000524, - 0x000200f9,0x00000517,0x000200f8,0x00000517,0x0004003d,0x00000036,0x00000526,0x000004d0, - 0x00050080,0x00000036,0x00000527,0x00000526,0x0000022f,0x0003003e,0x000004d0,0x00000527, - 0x000200f9,0x00000514,0x000200f8,0x00000516,0x000200f9,0x00000513,0x000200f8,0x00000513, - 0x0004003d,0x000000fc,0x0000052a,0x00000108,0x0003003e,0x00000529,0x0000052a,0x00060039, - 0x00000006,0x0000052b,0x00000101,0x00000107,0x00000529,0x0004003d,0x000000fc,0x0000052c, - 0x00000529,0x0003003e,0x00000108,0x0000052c,0x0003003e,0x00000528,0x0000052b,0x0004003d, - 0x00000006,0x0000052e,0x00000528,0x00050081,0x00000006,0x0000052f,0x00000150,0x0000052e, - 0x00050085,0x00000006,0x00000531,0x0000052f,0x00000530,0x0003003e,0x00000532,0x00000150, - 0x0003003e,0x00000533,0x00000531,0x00060039,0x00000006,0x00000534,0x0000003f,0x00000532, - 0x00000533,0x0003003e,0x0000052d,0x00000534,0x00050051,0x00000006,0x00000536,0x00000107, - 0x00000007,0x00050085,0x00000006,0x00000537,0x00000536,0x000002a2,0x00050083,0x00000006, - 0x00000538,0x00000150,0x00000537,0x00050051,0x00000006,0x00000539,0x00000107,0x00000009, - 0x00050083,0x00000006,0x0000053a,0x00000150,0x00000539,0x00050041,0x00000007,0x0000053b, - 0x00000108,0x00000198,0x0004003d,0x00000006,0x0000053c,0x0000053b,0x00050085,0x00000006, - 0x0000053e,0x0000053c,0x0000053d,0x0003003e,0x0000053f,0x0000053e,0x00050039,0x00000006, - 0x00000540,0x00000018,0x0000053f,0x0003003e,0x00000541,0x0000053a,0x0003003e,0x00000542, - 0x00000540,0x00060039,0x00000006,0x00000543,0x00000023,0x00000541,0x00000542,0x0003003e, - 0x00000544,0x00000538,0x0003003e,0x00000545,0x00000543,0x00060039,0x00000006,0x00000546, - 0x00000023,0x00000544,0x00000545,0x0003003e,0x00000535,0x00000546,0x0004003d,0x00000006, - 0x00000549,0x0000052d,0x0003003e,0x00000548,0x00000549,0x0004003d,0x00000006,0x0000054b, - 0x00000528,0x0003003e,0x0000054a,0x0000054b,0x0004003d,0x00000006,0x0000054d,0x00000535, - 0x0003003e,0x0000054c,0x0000054d,0x00070039,0x00000006,0x0000054e,0x0000000c,0x00000548, - 0x0000054a,0x0000054c,0x0003003e,0x00000547,0x0000054e,0x0003003e,0x000004d0,0x00000192, - 0x0003003e,0x0000054f,0x00000192,0x000200f9,0x00000550,0x000200f8,0x00000550,0x000400f6, - 0x00000552,0x00000553,0x00000000,0x000200f9,0x00000554,0x000200f8,0x00000554,0x0004003d, - 0x00000036,0x00000555,0x0000054f,0x000500b1,0x000000a2,0x00000556,0x00000555,0x000001a2, - 0x000400fa,0x00000556,0x00000551,0x00000552,0x000200f8,0x00000551,0x0003003e,0x00000557, - 0x00000192,0x000200f9,0x00000558,0x000200f8,0x00000558,0x000400f6,0x0000055a,0x0000055b, - 0x00000000,0x000200f9,0x0000055c,0x000200f8,0x0000055c,0x0004003d,0x00000036,0x0000055d, - 0x00000557,0x000500b1,0x000000a2,0x0000055e,0x0000055d,0x000001a2,0x000400fa,0x0000055e, - 0x00000559,0x0000055a,0x000200f8,0x00000559,0x0004003d,0x000000a2,0x00000560,0x000004c4, - 0x000300f7,0x00000563,0x00000000,0x000400fa,0x00000560,0x00000562,0x00000566,0x000200f8, - 0x00000562,0x0004003d,0x00000036,0x00000564,0x00000557,0x00050082,0x00000036,0x00000565, - 0x000001a2,0x00000564,0x0003003e,0x00000561,0x00000565,0x000200f9,0x00000563,0x000200f8, - 0x00000566,0x0004003d,0x00000036,0x00000567,0x00000557,0x0003003e,0x00000561,0x00000567, - 0x000200f9,0x00000563,0x000200f8,0x00000563,0x0004003d,0x00000036,0x00000568,0x00000561, - 0x0004003d,0x000000a2,0x00000569,0x000004be,0x000300f7,0x0000056c,0x00000000,0x000400fa, - 0x00000569,0x0000056b,0x0000056f,0x000200f8,0x0000056b,0x0004003d,0x00000036,0x0000056d, - 0x0000054f,0x00050082,0x00000036,0x0000056e,0x000001a2,0x0000056d,0x0003003e,0x0000056a, - 0x0000056e,0x000200f9,0x0000056c,0x000200f8,0x0000056f,0x0004003d,0x00000036,0x00000570, - 0x0000054f,0x0003003e,0x0000056a,0x00000570,0x000200f9,0x0000056c,0x000200f8,0x0000056c, - 0x0004003d,0x00000036,0x00000571,0x0000056a,0x00050050,0x00000055,0x00000572,0x00000568, - 0x00000571,0x0003003e,0x0000055f,0x00000572,0x0004003d,0x0000001a,0x00000574,0x000004ca, - 0x0004003d,0x00000055,0x00000575,0x0000055f,0x0004006f,0x0000001a,0x00000576,0x00000575, - 0x00050081,0x0000001a,0x00000577,0x00000574,0x00000576,0x0003003e,0x00000573,0x00000577, - 0x0004003d,0x0000001a,0x00000579,0x000004a9,0x0004003d,0x0000001a,0x0000057a,0x00000573, - 0x00050081,0x0000001a,0x0000057b,0x00000579,0x0000057a,0x0003003e,0x00000578,0x0000057b, - 0x0004003d,0x00000055,0x0000057d,0x0000049f,0x0004003d,0x00000055,0x0000057e,0x000004ad, - 0x00050080,0x00000055,0x0000057f,0x0000057d,0x0000057e,0x0004003d,0x00000055,0x00000580, - 0x0000055f,0x00050080,0x00000055,0x00000581,0x0000057f,0x00000580,0x0003003e,0x0000057c, - 0x00000581,0x0004003d,0x00000055,0x00000583,0x0000057c,0x00040039,0x00000055,0x00000584, - 0x00000057,0x0003003e,0x00000585,0x00000583,0x0003003e,0x00000586,0x00000584,0x00060039, - 0x000000a2,0x00000587,0x000000cf,0x00000585,0x00000586,0x000600a9,0x00000006,0x00000588, - 0x00000587,0x00000150,0x0000014f,0x0003003e,0x00000582,0x00000588,0x0004003d,0x000000a2, - 0x00000589,0x000004cd,0x000400a8,0x000000a2,0x0000058a,0x00000589,0x000300f7,0x0000058c, - 0x00000000,0x000400fa,0x0000058a,0x0000058b,0x0000058c,0x000200f8,0x0000058b,0x0004003d, - 0x00000006,0x0000058e,0x00000582,0x0004003d,0x0000001a,0x00000590,0x00000578,0x0003003e, - 0x0000058f,0x00000590,0x0004003d,0x00000006,0x00000592,0x00000547,0x0003003e,0x00000591, - 0x00000592,0x00060039,0x00000006,0x00000593,0x000000f9,0x0000058f,0x00000591,0x00050085, - 0x00000006,0x00000594,0x0000058e,0x00000593,0x0003003e,0x0000058d,0x00000594,0x0004003d, - 0x00000036,0x00000595,0x000004d0,0x00050041,0x0000000f,0x00000596,0x00000505,0x00000595, - 0x0004003d,0x0000000e,0x00000597,0x00000596,0x0004003d,0x00000006,0x00000598,0x0000058d, - 0x0005008e,0x0000000e,0x00000599,0x00000597,0x00000598,0x00050041,0x0000000f,0x0000059a, - 0x00000108,0x0000022f,0x0004003d,0x0000000e,0x0000059b,0x0000059a,0x00050081,0x0000000e, - 0x0000059c,0x0000059b,0x00000599,0x00050041,0x0000000f,0x0000059d,0x00000108,0x0000022f, - 0x0003003e,0x0000059d,0x0000059c,0x0004003d,0x00000006,0x0000059e,0x0000058d,0x00050041, - 0x00000007,0x0000059f,0x00000108,0x0000019d,0x0004003d,0x00000006,0x000005a0,0x0000059f, - 0x00050081,0x00000006,0x000005a1,0x000005a0,0x0000059e,0x00050041,0x00000007,0x000005a2, - 0x00000108,0x0000019d,0x0003003e,0x000005a2,0x000005a1,0x000200f9,0x0000058c,0x000200f8, - 0x0000058c,0x0004003d,0x0000001a,0x000005a4,0x00000578,0x0004003d,0x0000001a,0x000005a5, - 0x00000578,0x00050094,0x00000006,0x000005a6,0x000005a4,0x000005a5,0x0003003e,0x000005a3, - 0x000005a6,0x0004003d,0x00000006,0x000005a9,0x000005a3,0x00050085,0x00000006,0x000005aa, - 0x000005a8,0x000005a9,0x0006000c,0x00000006,0x000005ab,0x00000001,0x0000001b,0x000005aa, - 0x0004003d,0x00000006,0x000005ac,0x00000582,0x00050085,0x00000006,0x000005ad,0x000005ab, - 0x000005ac,0x0003003e,0x000005a7,0x000005ad,0x0004003d,0x00000036,0x000005af,0x0000054f, - 0x000500aa,0x000000a2,0x000005b0,0x000005af,0x00000192,0x0004003d,0x00000036,0x000005b1, - 0x00000557,0x000500aa,0x000000a2,0x000005b2,0x000005b1,0x00000192,0x000500a7,0x000000a2, - 0x000005b3,0x000005b0,0x000005b2,0x0003003e,0x000005ae,0x000005b3,0x0004003d,0x00000036, - 0x000005b4,0x000004d0,0x00050041,0x0000000f,0x000005b5,0x00000505,0x000005b4,0x0004003d, - 0x0000000e,0x000005b6,0x000005b5,0x0004003d,0x00000006,0x000005b7,0x000005a7,0x0004003d, - 0x000000a2,0x000005b9,0x000005ae,0x0003003e,0x000005b8,0x000005b9,0x00050041,0x0000009b, - 0x000005bb,0x00000108,0x00000192,0x0004003d,0x0000009a,0x000005bc,0x000005bb,0x0003003e, - 0x000005ba,0x000005bc,0x00080039,0x00000002,0x000005bd,0x000000a9,0x000005b8,0x000005ba, - 0x000005b6,0x000005b7,0x0004003d,0x0000009a,0x000005be,0x000005ba,0x00050041,0x0000009b, - 0x000005bf,0x00000108,0x00000192,0x0003003e,0x000005bf,0x000005be,0x0004003d,0x00000036, - 0x000005c0,0x000004d0,0x00050080,0x00000036,0x000005c1,0x000005c0,0x0000022f,0x0003003e, - 0x000004d0,0x000005c1,0x000200f9,0x0000055b,0x000200f8,0x0000055b,0x0004003d,0x00000036, - 0x000005c2,0x00000557,0x00050080,0x00000036,0x000005c3,0x000005c2,0x0000022f,0x0003003e, - 0x00000557,0x000005c3,0x000200f9,0x00000558,0x000200f8,0x0000055a,0x000200f9,0x00000553, - 0x000200f8,0x00000553,0x0004003d,0x00000036,0x000005c4,0x0000054f,0x00050080,0x00000036, - 0x000005c5,0x000005c4,0x0000022f,0x0003003e,0x0000054f,0x000005c5,0x000200f9,0x00000550, - 0x000200f8,0x00000552,0x00050041,0x0000009b,0x000005c7,0x00000108,0x00000192,0x0004003d, - 0x0000009a,0x000005c8,0x000005c7,0x0003003e,0x000005c6,0x000005c8,0x00050039,0x00000002, - 0x000005c9,0x000000ad,0x000005c6,0x0004003d,0x0000009a,0x000005ca,0x000005c6,0x00050041, - 0x0000009b,0x000005cb,0x00000108,0x00000192,0x0003003e,0x000005cb,0x000005ca,0x00050041, - 0x00000007,0x000005cc,0x00000108,0x0000019d,0x0004003d,0x00000006,0x000005cd,0x000005cc, - 0x000500ba,0x000000a2,0x000005ce,0x000005cd,0x000002d8,0x000600a9,0x00000006,0x000005cf, - 0x000005ce,0x00000150,0x0000014f,0x00050041,0x00000007,0x000005d0,0x00000108,0x0000019d, - 0x0004003d,0x00000006,0x000005d1,0x000005d0,0x00050085,0x00000006,0x000005d2,0x000005d1, - 0x000005cf,0x00050041,0x00000007,0x000005d3,0x00000108,0x0000019d,0x0003003e,0x000005d3, - 0x000005d2,0x00050041,0x00000007,0x000005d4,0x00000108,0x0000019d,0x0004003d,0x00000006, - 0x000005d5,0x000005d4,0x000500ba,0x000000a2,0x000005d6,0x000005d5,0x000002d8,0x000300f7, - 0x000005d8,0x00000000,0x000400fa,0x000005d6,0x000005d7,0x000005d8,0x000200f8,0x000005d7, - 0x00050041,0x0000000f,0x000005d9,0x00000108,0x0000022f,0x0004003d,0x0000000e,0x000005da, - 0x000005d9,0x00050041,0x00000007,0x000005db,0x00000108,0x0000019d,0x0004003d,0x00000006, - 0x000005dc,0x000005db,0x00060050,0x0000000e,0x000005dd,0x000005dc,0x000005dc,0x000005dc, - 0x00050088,0x0000000e,0x000005de,0x000005da,0x000005dd,0x00050041,0x0000000f,0x000005df, - 0x00000108,0x0000022f,0x0003003e,0x000005df,0x000005de,0x00050041,0x00000007,0x000005e1, - 0x00000108,0x0000019d,0x0004003d,0x00000006,0x000005e2,0x000005e1,0x00050085,0x00000006, - 0x000005e3,0x000005e2,0x000005e0,0x00050041,0x00000007,0x000005e4,0x00000108,0x0000019d, - 0x0003003e,0x000005e4,0x000005e3,0x00050041,0x0000009b,0x000005e6,0x00000108,0x00000192, - 0x0004003d,0x0000009a,0x000005e7,0x000005e6,0x0003003e,0x000005e5,0x000005e7,0x00050041, - 0x0000000f,0x000005e9,0x00000108,0x0000022f,0x0004003d,0x0000000e,0x000005ea,0x000005e9, - 0x0003003e,0x000005e8,0x000005ea,0x00060039,0x00000002,0x000005eb,0x000000f4,0x000005e5, - 0x000005e8,0x0004003d,0x0000000e,0x000005ec,0x000005e8,0x00050041,0x0000000f,0x000005ed, - 0x00000108,0x0000022f,0x0003003e,0x000005ed,0x000005ec,0x000200f9,0x000005d8,0x000200f8, - 0x000005d8,0x0004003d,0x000000a2,0x000005ee,0x000004cd,0x000300f7,0x000005f0,0x00000000, - 0x000400fa,0x000005ee,0x000005ef,0x000005f0,0x000200f8,0x000005ef,0x00060041,0x0000000f, - 0x000005f2,0x00000108,0x00000192,0x00000192,0x0004003d,0x0000000e,0x000005f3,0x000005f2, - 0x0003003e,0x000005f1,0x000005f3,0x00050039,0x0000000e,0x000005f4,0x000000b1,0x000005f1, - 0x0003003e,0x000005f5,0x000005f4,0x00050039,0x0000000e,0x000005f6,0x000000ba,0x000005f5, - 0x0003003e,0x000005f7,0x000005f6,0x00050039,0x0000000e,0x000005f8,0x000000b4,0x000005f7, - 0x00050041,0x0000000f,0x000005f9,0x00000108,0x0000022f,0x0003003e,0x000005f9,0x000005f8, - 0x00050041,0x00000007,0x000005fa,0x00000108,0x0000019d,0x0003003e,0x000005fa,0x00000150, - 0x00050041,0x00000007,0x000005fb,0x00000108,0x00000198,0x0003003e,0x000005fb,0x0000014f, - 0x000200f9,0x000005f0,0x000200f8,0x000005f0,0x000100fd,0x00010038,0x00050036,0x0000002f, - 0x0000010c,0x00000000,0x00000072,0x00030037,0x0000006d,0x0000010b,0x000200f8,0x0000010d, - 0x0004003b,0x0000006d,0x000005fc,0x00000007,0x0004003d,0x00000055,0x000005fd,0x0000010b, - 0x0003003e,0x000005fc,0x000005fd,0x00050039,0x0000002f,0x000005fe,0x00000074,0x000005fc, - 0x000200fe,0x000005fe,0x00010038,0x00050036,0x000000e5,0x00000111,0x00000000,0x0000010e, - 0x00030037,0x0000006d,0x0000010f,0x00030037,0x0000006d,0x00000110,0x000200f8,0x00000112, - 0x0004003b,0x000000e6,0x00000601,0x00000007,0x0004003b,0x0000006d,0x00000603,0x00000007, - 0x0004003b,0x0000006d,0x00000605,0x00000007,0x0004003b,0x0000006d,0x00000606,0x00000007, - 0x0004003b,0x0000006d,0x00000609,0x00000007,0x0004003b,0x0000006d,0x0000060d,0x00000007, - 0x0004003b,0x0000006d,0x0000060f,0x00000007,0x0004003b,0x0000006d,0x00000610,0x00000007, - 0x0004003b,0x0000006d,0x00000613,0x00000007,0x0004003b,0x0000006d,0x00000617,0x00000007, - 0x0004003b,0x0000006d,0x00000619,0x00000007,0x0004003b,0x0000006d,0x0000061a,0x00000007, - 0x0004003b,0x0000006d,0x0000061d,0x00000007,0x0004003b,0x0000006d,0x00000621,0x00000007, - 0x0004003b,0x0000006d,0x00000623,0x00000007,0x0004003b,0x0000006d,0x00000624,0x00000007, - 0x0004003b,0x0000006d,0x00000627,0x00000007,0x0004003b,0x0000006d,0x0000062b,0x00000007, - 0x0004003b,0x0000006d,0x0000062d,0x00000007,0x0004003b,0x0000006d,0x0000062e,0x00000007, - 0x0004003b,0x0000006d,0x00000631,0x00000007,0x0004003b,0x0000006d,0x00000634,0x00000007, - 0x0004003b,0x0000006d,0x00000636,0x00000007,0x0004003b,0x0000006d,0x00000637,0x00000007, - 0x0004003b,0x0000006d,0x0000063a,0x00000007,0x0004003b,0x0000006d,0x0000063e,0x00000007, - 0x0004003b,0x0000006d,0x00000640,0x00000007,0x0004003b,0x0000006d,0x00000641,0x00000007, - 0x0004003b,0x0000006d,0x00000644,0x00000007,0x0004003b,0x0000006d,0x00000648,0x00000007, - 0x0004003b,0x0000006d,0x0000064a,0x00000007,0x0004003b,0x0000006d,0x0000064b,0x00000007, - 0x0004003b,0x0000006d,0x0000064e,0x00000007,0x0004003b,0x0000006d,0x00000652,0x00000007, - 0x0004003b,0x0000006d,0x00000654,0x00000007,0x0004003b,0x0000006d,0x00000655,0x00000007, - 0x0004003b,0x0000006d,0x00000658,0x00000007,0x0004003b,0x0000006d,0x0000065c,0x00000007, - 0x0004003b,0x0000006d,0x0000065e,0x00000007,0x0004003b,0x0000006d,0x0000065f,0x00000007, - 0x0004003b,0x0000006d,0x00000662,0x00000007,0x0004003b,0x0000006d,0x00000666,0x00000007, - 0x0004003b,0x0000006d,0x00000668,0x00000007,0x0004003b,0x0000006d,0x00000669,0x00000007, - 0x0004003b,0x0000006d,0x0000066c,0x00000007,0x0004003b,0x0000006d,0x00000670,0x00000007, - 0x0004003b,0x0000006d,0x00000672,0x00000007,0x0004003b,0x0000006d,0x00000673,0x00000007, - 0x0004003b,0x0000006d,0x00000676,0x00000007,0x0004003b,0x0000006d,0x0000067a,0x00000007, - 0x0004003b,0x0000006d,0x0000067c,0x00000007,0x0004003b,0x0000006d,0x0000067d,0x00000007, - 0x0004003b,0x0000006d,0x00000680,0x00000007,0x0004003b,0x0000006d,0x00000684,0x00000007, - 0x0004003b,0x0000006d,0x00000686,0x00000007,0x0004003b,0x0000006d,0x00000687,0x00000007, - 0x0004003b,0x0000006d,0x0000068a,0x00000007,0x0004003b,0x0000006d,0x0000068e,0x00000007, - 0x0004003b,0x0000006d,0x00000690,0x00000007,0x0004003b,0x0000006d,0x00000691,0x00000007, - 0x0004003b,0x0000006d,0x00000694,0x00000007,0x0004003b,0x0000006d,0x00000698,0x00000007, - 0x0004003b,0x0000006d,0x0000069a,0x00000007,0x0004003b,0x0000006d,0x0000069b,0x00000007, - 0x0004003b,0x0000006d,0x0000069e,0x00000007,0x0004003d,0x00000055,0x00000604,0x0000010f, - 0x0003003e,0x00000603,0x00000604,0x0003003e,0x00000605,0x00000602,0x0004003d,0x00000055, - 0x00000607,0x00000110,0x0003003e,0x00000606,0x00000607,0x00070039,0x00000055,0x00000608, - 0x000000ef,0x00000603,0x00000605,0x00000606,0x0003003e,0x00000609,0x00000608,0x00050039, - 0x0000002f,0x0000060a,0x0000010c,0x00000609,0x00050041,0x00000030,0x0000060b,0x00000601, - 0x00000192,0x0003003e,0x0000060b,0x0000060a,0x0004003d,0x00000055,0x0000060e,0x0000010f, - 0x0003003e,0x0000060d,0x0000060e,0x0003003e,0x0000060f,0x0000060c,0x0004003d,0x00000055, - 0x00000611,0x00000110,0x0003003e,0x00000610,0x00000611,0x00070039,0x00000055,0x00000612, - 0x000000ef,0x0000060d,0x0000060f,0x00000610,0x0003003e,0x00000613,0x00000612,0x00050039, - 0x0000002f,0x00000614,0x0000010c,0x00000613,0x00050041,0x00000030,0x00000615,0x00000601, - 0x0000022f,0x0003003e,0x00000615,0x00000614,0x0004003d,0x00000055,0x00000618,0x0000010f, - 0x0003003e,0x00000617,0x00000618,0x0003003e,0x00000619,0x00000616,0x0004003d,0x00000055, - 0x0000061b,0x00000110,0x0003003e,0x0000061a,0x0000061b,0x00070039,0x00000055,0x0000061c, - 0x000000ef,0x00000617,0x00000619,0x0000061a,0x0003003e,0x0000061d,0x0000061c,0x00050039, - 0x0000002f,0x0000061e,0x0000010c,0x0000061d,0x00050041,0x00000030,0x0000061f,0x00000601, - 0x0000019d,0x0003003e,0x0000061f,0x0000061e,0x0004003d,0x00000055,0x00000622,0x0000010f, - 0x0003003e,0x00000621,0x00000622,0x0003003e,0x00000623,0x00000620,0x0004003d,0x00000055, - 0x00000625,0x00000110,0x0003003e,0x00000624,0x00000625,0x00070039,0x00000055,0x00000626, - 0x000000ef,0x00000621,0x00000623,0x00000624,0x0003003e,0x00000627,0x00000626,0x00050039, - 0x0000002f,0x00000628,0x0000010c,0x00000627,0x00050041,0x00000030,0x00000629,0x00000601, - 0x000001a2,0x0003003e,0x00000629,0x00000628,0x0004003d,0x00000055,0x0000062c,0x0000010f, - 0x0003003e,0x0000062b,0x0000062c,0x0003003e,0x0000062d,0x0000062a,0x0004003d,0x00000055, - 0x0000062f,0x00000110,0x0003003e,0x0000062e,0x0000062f,0x00070039,0x00000055,0x00000630, - 0x000000ef,0x0000062b,0x0000062d,0x0000062e,0x0003003e,0x00000631,0x00000630,0x00050039, - 0x0000002f,0x00000632,0x0000010c,0x00000631,0x00050041,0x00000030,0x00000633,0x00000601, - 0x00000198,0x0003003e,0x00000633,0x00000632,0x0004003d,0x00000055,0x00000635,0x0000010f, - 0x0003003e,0x00000634,0x00000635,0x0003003e,0x00000636,0x0000020f,0x0004003d,0x00000055, - 0x00000638,0x00000110,0x0003003e,0x00000637,0x00000638,0x00070039,0x00000055,0x00000639, - 0x000000ef,0x00000634,0x00000636,0x00000637,0x0003003e,0x0000063a,0x00000639,0x00050039, - 0x0000002f,0x0000063b,0x0000010c,0x0000063a,0x00050041,0x00000030,0x0000063c,0x00000601, - 0x000003cc,0x0003003e,0x0000063c,0x0000063b,0x0004003d,0x00000055,0x0000063f,0x0000010f, - 0x0003003e,0x0000063e,0x0000063f,0x0003003e,0x00000640,0x0000063d,0x0004003d,0x00000055, - 0x00000642,0x00000110,0x0003003e,0x00000641,0x00000642,0x00070039,0x00000055,0x00000643, - 0x000000ef,0x0000063e,0x00000640,0x00000641,0x0003003e,0x00000644,0x00000643,0x00050039, - 0x0000002f,0x00000645,0x0000010c,0x00000644,0x00050041,0x00000030,0x00000646,0x00000601, - 0x000003cd,0x0003003e,0x00000646,0x00000645,0x0004003d,0x00000055,0x00000649,0x0000010f, - 0x0003003e,0x00000648,0x00000649,0x0003003e,0x0000064a,0x00000647,0x0004003d,0x00000055, - 0x0000064c,0x00000110,0x0003003e,0x0000064b,0x0000064c,0x00070039,0x00000055,0x0000064d, - 0x000000ef,0x00000648,0x0000064a,0x0000064b,0x0003003e,0x0000064e,0x0000064d,0x00050039, - 0x0000002f,0x0000064f,0x0000010c,0x0000064e,0x00050041,0x00000030,0x00000650,0x00000601, - 0x000001a7,0x0003003e,0x00000650,0x0000064f,0x0004003d,0x00000055,0x00000653,0x0000010f, - 0x0003003e,0x00000652,0x00000653,0x0003003e,0x00000654,0x00000651,0x0004003d,0x00000055, - 0x00000656,0x00000110,0x0003003e,0x00000655,0x00000656,0x00070039,0x00000055,0x00000657, - 0x000000ef,0x00000652,0x00000654,0x00000655,0x0003003e,0x00000658,0x00000657,0x00050039, - 0x0000002f,0x00000659,0x0000010c,0x00000658,0x00050041,0x00000030,0x0000065a,0x00000601, - 0x000003df,0x0003003e,0x0000065a,0x00000659,0x0004003d,0x00000055,0x0000065d,0x0000010f, - 0x0003003e,0x0000065c,0x0000065d,0x0003003e,0x0000065e,0x0000065b,0x0004003d,0x00000055, - 0x00000660,0x00000110,0x0003003e,0x0000065f,0x00000660,0x00070039,0x00000055,0x00000661, - 0x000000ef,0x0000065c,0x0000065e,0x0000065f,0x0003003e,0x00000662,0x00000661,0x00050039, - 0x0000002f,0x00000663,0x0000010c,0x00000662,0x00050041,0x00000030,0x00000664,0x00000601, - 0x000003e0,0x0003003e,0x00000664,0x00000663,0x0004003d,0x00000055,0x00000667,0x0000010f, - 0x0003003e,0x00000666,0x00000667,0x0003003e,0x00000668,0x00000665,0x0004003d,0x00000055, - 0x0000066a,0x00000110,0x0003003e,0x00000669,0x0000066a,0x00070039,0x00000055,0x0000066b, - 0x000000ef,0x00000666,0x00000668,0x00000669,0x0003003e,0x0000066c,0x0000066b,0x00050039, - 0x0000002f,0x0000066d,0x0000010c,0x0000066c,0x00050041,0x00000030,0x0000066e,0x00000601, - 0x000001ad,0x0003003e,0x0000066e,0x0000066d,0x0004003d,0x00000055,0x00000671,0x0000010f, - 0x0003003e,0x00000670,0x00000671,0x0003003e,0x00000672,0x0000066f,0x0004003d,0x00000055, - 0x00000674,0x00000110,0x0003003e,0x00000673,0x00000674,0x00070039,0x00000055,0x00000675, - 0x000000ef,0x00000670,0x00000672,0x00000673,0x0003003e,0x00000676,0x00000675,0x00050039, - 0x0000002f,0x00000677,0x0000010c,0x00000676,0x00050041,0x00000030,0x00000678,0x00000601, - 0x000003e1,0x0003003e,0x00000678,0x00000677,0x0004003d,0x00000055,0x0000067b,0x0000010f, - 0x0003003e,0x0000067a,0x0000067b,0x0003003e,0x0000067c,0x00000679,0x0004003d,0x00000055, - 0x0000067e,0x00000110,0x0003003e,0x0000067d,0x0000067e,0x00070039,0x00000055,0x0000067f, - 0x000000ef,0x0000067a,0x0000067c,0x0000067d,0x0003003e,0x00000680,0x0000067f,0x00050039, - 0x0000002f,0x00000681,0x0000010c,0x00000680,0x00050041,0x00000030,0x00000682,0x00000601, - 0x000003f3,0x0003003e,0x00000682,0x00000681,0x0004003d,0x00000055,0x00000685,0x0000010f, - 0x0003003e,0x00000684,0x00000685,0x0003003e,0x00000686,0x00000683,0x0004003d,0x00000055, - 0x00000688,0x00000110,0x0003003e,0x00000687,0x00000688,0x00070039,0x00000055,0x00000689, - 0x000000ef,0x00000684,0x00000686,0x00000687,0x0003003e,0x0000068a,0x00000689,0x00050039, - 0x0000002f,0x0000068b,0x0000010c,0x0000068a,0x00050041,0x00000030,0x0000068c,0x00000601, - 0x000001b2,0x0003003e,0x0000068c,0x0000068b,0x0004003d,0x00000055,0x0000068f,0x0000010f, - 0x0003003e,0x0000068e,0x0000068f,0x0003003e,0x00000690,0x0000068d,0x0004003d,0x00000055, - 0x00000692,0x00000110,0x0003003e,0x00000691,0x00000692,0x00070039,0x00000055,0x00000693, - 0x000000ef,0x0000068e,0x00000690,0x00000691,0x0003003e,0x00000694,0x00000693,0x00050039, - 0x0000002f,0x00000695,0x0000010c,0x00000694,0x00050041,0x00000030,0x00000696,0x00000601, - 0x000003f4,0x0003003e,0x00000696,0x00000695,0x0004003d,0x00000055,0x00000699,0x0000010f, - 0x0003003e,0x00000698,0x00000699,0x0003003e,0x0000069a,0x00000697,0x0004003d,0x00000055, - 0x0000069c,0x00000110,0x0003003e,0x0000069b,0x0000069c,0x00070039,0x00000055,0x0000069d, - 0x000000ef,0x00000698,0x0000069a,0x0000069b,0x0003003e,0x0000069e,0x0000069d,0x00050039, - 0x0000002f,0x0000069f,0x0000010c,0x0000069e,0x00050041,0x00000030,0x000006a0,0x00000601, - 0x000001b8,0x0003003e,0x000006a0,0x0000069f,0x0004003d,0x000000e5,0x000006a1,0x00000601, - 0x000200fe,0x000006a1,0x00010038,0x00050036,0x0000002f,0x00000116,0x00000000,0x00000113, - 0x00030037,0x0000001b,0x00000114,0x00030037,0x0000006d,0x00000115,0x000200f8,0x00000117, - 0x0004003b,0x0000001b,0x000006a4,0x00000007,0x0004003b,0x0000001b,0x000006aa,0x00000007, - 0x0004003b,0x0000001b,0x000006ab,0x00000007,0x0004003b,0x00000007,0x000006b2,0x00000007, - 0x0004003b,0x00000007,0x000006b3,0x00000007,0x0004003b,0x00000007,0x000006b7,0x00000007, - 0x0004003b,0x00000007,0x000006b8,0x00000007,0x0004003b,0x00000007,0x000006bf,0x00000007, - 0x0004003b,0x00000007,0x000006c0,0x00000007,0x0004003b,0x00000007,0x000006c4,0x00000007, - 0x0004003b,0x00000007,0x000006c5,0x00000007,0x0004003b,0x0000006d,0x000006c8,0x00000007, - 0x0004003b,0x00000030,0x000006cc,0x00000007,0x0004003b,0x0000006d,0x000006cd,0x00000007, - 0x0004003b,0x0000006d,0x000006cf,0x00000007,0x0004003b,0x000000e6,0x000006d2,0x00000007, - 0x0004003b,0x0000001b,0x000006d3,0x00000007,0x0004003d,0x0000001a,0x000006a5,0x00000114, - 0x0004003d,0x00000055,0x000006a6,0x00000115,0x0004006f,0x0000001a,0x000006a7,0x000006a6, - 0x00050085,0x0000001a,0x000006a8,0x000006a5,0x000006a7,0x00050083,0x0000001a,0x000006a9, - 0x000006a8,0x00000329,0x0003003e,0x000006a4,0x000006a9,0x0004003d,0x0000001a,0x000006ac, - 0x000006a4,0x0003003e,0x000006ab,0x000006ac,0x00050039,0x0000001a,0x000006ad,0x0000001e, - 0x000006ab,0x0003003e,0x000006aa,0x000006ad,0x00050041,0x00000037,0x000006ae,0x00000115, - 0x000001eb,0x0004003d,0x00000036,0x000006af,0x000006ae,0x00050082,0x00000036,0x000006b0, - 0x000006af,0x0000022f,0x0004006f,0x00000006,0x000006b1,0x000006b0,0x0003003e,0x000006b2, - 0x000006b1,0x00050041,0x00000007,0x000006b4,0x000006a4,0x000001eb,0x0004003d,0x00000006, - 0x000006b5,0x000006b4,0x0003003e,0x000006b3,0x000006b5,0x00060039,0x00000006,0x000006b6, - 0x00000023,0x000006b2,0x000006b3,0x0003003e,0x000006b7,0x0000014f,0x0003003e,0x000006b8, - 0x000006b6,0x00060039,0x00000006,0x000006b9,0x0000003f,0x000006b7,0x000006b8,0x00050041, - 0x00000007,0x000006ba,0x000006a4,0x000001eb,0x0003003e,0x000006ba,0x000006b9,0x00050041, - 0x00000037,0x000006bb,0x00000115,0x00000284,0x0004003d,0x00000036,0x000006bc,0x000006bb, - 0x00050082,0x00000036,0x000006bd,0x000006bc,0x0000022f,0x0004006f,0x00000006,0x000006be, - 0x000006bd,0x0003003e,0x000006bf,0x000006be,0x00050041,0x00000007,0x000006c1,0x000006a4, - 0x00000284,0x0004003d,0x00000006,0x000006c2,0x000006c1,0x0003003e,0x000006c0,0x000006c2, - 0x00060039,0x00000006,0x000006c3,0x00000023,0x000006bf,0x000006c0,0x0003003e,0x000006c4, - 0x0000014f,0x0003003e,0x000006c5,0x000006c3,0x00060039,0x00000006,0x000006c6,0x0000003f, - 0x000006c4,0x000006c5,0x00050041,0x00000007,0x000006c7,0x000006a4,0x00000284,0x0003003e, - 0x000006c7,0x000006c6,0x0004003d,0x0000001a,0x000006c9,0x000006a4,0x0006000c,0x0000001a, - 0x000006ca,0x00000001,0x00000008,0x000006c9,0x0004006e,0x00000055,0x000006cb,0x000006ca, - 0x0003003e,0x000006c8,0x000006cb,0x0004003d,0x00000055,0x000006ce,0x000006c8,0x0003003e, - 0x000006cd,0x000006ce,0x0004003d,0x00000055,0x000006d0,0x00000115,0x0003003e,0x000006cf, - 0x000006d0,0x00060039,0x000000e5,0x000006d1,0x00000111,0x000006cd,0x000006cf,0x0003003e, - 0x000006d2,0x000006d1,0x0004003d,0x0000001a,0x000006d4,0x000006aa,0x0003003e,0x000006d3, - 0x000006d4,0x00060039,0x0000002f,0x000006d5,0x000000ea,0x000006d2,0x000006d3,0x0003003e, - 0x000006cc,0x000006d5,0x0004003d,0x0000002f,0x000006d6,0x000006cc,0x000200fe,0x000006d6, - 0x00010038,0x00050036,0x0000001a,0x0000011b,0x00000000,0x00000118,0x00030037,0x0000006d, - 0x00000119,0x00030037,0x0000001b,0x0000011a,0x000200f8,0x0000011c,0x0004003b,0x0000001b, - 0x000006d9,0x00000007,0x0004003b,0x0000006d,0x000006df,0x00000007,0x0004003d,0x0000001a, - 0x000006da,0x0000011a,0x00040039,0x00000055,0x000006db,0x00000057,0x0004006f,0x0000001a, - 0x000006dc,0x000006db,0x00050085,0x0000001a,0x000006dd,0x000006da,0x000006dc,0x0004006e, - 0x00000055,0x000006de,0x000006dd,0x0003003e,0x000006df,0x000006de,0x00050039,0x0000001a, - 0x000006e0,0x0000008f,0x000006df,0x0003003e,0x000006d9,0x000006e0,0x0004003d,0x0000001a, - 0x000006e1,0x000006d9,0x000200fe,0x000006e1,0x00010038,0x00050036,0x00000002,0x00000120, - 0x00000000,0x0000011e,0x00030037,0x0000011d,0x0000011f,0x000200f8,0x00000121,0x0004003b, - 0x0000001b,0x000006ea,0x00000007,0x00050041,0x0000001b,0x000006e4,0x0000011f,0x0000022f, - 0x0004003d,0x0000001a,0x000006e5,0x000006e4,0x00050041,0x0000001b,0x000006e6,0x0000011f, - 0x00000198,0x0004003d,0x0000001a,0x000006e7,0x000006e6,0x00050081,0x0000001a,0x000006e8, - 0x000006e5,0x000006e7,0x00050041,0x0000001b,0x000006e9,0x0000011f,0x000003cc,0x0003003e, - 0x000006e9,0x000006e8,0x00050041,0x0000001b,0x000006eb,0x0000011f,0x000003cc,0x0004003d, - 0x0000001a,0x000006ec,0x000006eb,0x0003003e,0x000006ea,0x000006ec,0x00050039,0x000000a2, - 0x000006ed,0x000000be,0x000006ea,0x00050041,0x000000a3,0x000006ee,0x0000011f,0x000001b2, - 0x0003003e,0x000006ee,0x000006ed,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000124, - 0x00000000,0x00000106,0x00030037,0x000000fb,0x00000122,0x00030037,0x000000fd,0x00000123, - 0x000200f8,0x00000125,0x0004003b,0x00000030,0x000006ef,0x00000007,0x0004003b,0x0000001b, - 0x000006f1,0x00000007,0x0004003b,0x0000006d,0x000006f3,0x00000007,0x0004003b,0x0000000f, - 0x00000702,0x00000007,0x00040039,0x00000055,0x000006f0,0x0000005d,0x00050051,0x0000001a, - 0x000006f2,0x00000122,0x00000005,0x0003003e,0x000006f1,0x000006f2,0x0003003e,0x000006f3, - 0x000006f0,0x00060039,0x0000002f,0x000006f4,0x00000116,0x000006f1,0x000006f3,0x0003003e, - 0x000006ef,0x000006f4,0x0004003d,0x0000002f,0x000006f5,0x000006ef,0x0008004f,0x0000000e, - 0x000006f6,0x000006f5,0x000006f5,0x00000000,0x00000001,0x00000002,0x00050041,0x0000000f, - 0x000006f7,0x00000123,0x000001a2,0x0003003e,0x000006f7,0x000006f6,0x00040039,0x00000006, - 0x000006f8,0x00000067,0x00050041,0x0000000f,0x000006f9,0x00000123,0x000001a2,0x0004003d, - 0x0000000e,0x000006fa,0x000006f9,0x0005008e,0x0000000e,0x000006fb,0x000006fa,0x000006f8, - 0x00050041,0x0000000f,0x000006fc,0x00000123,0x000001a2,0x0003003e,0x000006fc,0x000006fb, - 0x00040039,0x00000006,0x000006fd,0x00000091,0x00050041,0x0000000f,0x000006fe,0x00000123, - 0x000001a2,0x0004003d,0x0000000e,0x000006ff,0x000006fe,0x0005008e,0x0000000e,0x00000700, - 0x000006ff,0x000006fd,0x00050041,0x0000000f,0x00000701,0x00000123,0x000001a2,0x0003003e, - 0x00000701,0x00000700,0x00050041,0x0000000f,0x00000703,0x00000123,0x000001a2,0x0004003d, - 0x0000000e,0x00000704,0x00000703,0x0003003e,0x00000702,0x00000704,0x00050039,0x0000000e, - 0x00000705,0x000000b4,0x00000702,0x00050041,0x0000000f,0x00000706,0x00000123,0x000001a2, - 0x0003003e,0x00000706,0x00000705,0x00050041,0x00000007,0x00000708,0x000006ef,0x00000707, - 0x0004003d,0x00000006,0x00000709,0x00000708,0x00050041,0x00000007,0x0000070a,0x00000123, - 0x000003cc,0x0003003e,0x0000070a,0x00000709,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x00000128,0x00000000,0x00000106,0x00030037,0x000000fb,0x00000126,0x00030037,0x000000fd, - 0x00000127,0x000200f8,0x00000129,0x0004003b,0x00000007,0x00000718,0x00000007,0x0004003b, - 0x00000007,0x00000719,0x00000007,0x0004003b,0x0000000f,0x0000071c,0x00000007,0x0004003b, - 0x0000000f,0x00000720,0x00000007,0x0004003b,0x0000000f,0x00000722,0x00000007,0x0004003b, - 0x0000000f,0x00000725,0x00000007,0x0004003b,0x0000000f,0x00000729,0x00000007,0x0004003b, - 0x0000000f,0x0000072b,0x00000007,0x0004003b,0x00000007,0x0000072e,0x00000007,0x0004003b, - 0x00000007,0x00000734,0x00000007,0x0004003b,0x0000000f,0x00000736,0x00000007,0x0004003b, - 0x0000000f,0x00000739,0x00000007,0x0004003b,0x00000007,0x0000073c,0x00000007,0x0004003b, - 0x0000000f,0x00000740,0x00000007,0x0004003b,0x0000000f,0x00000745,0x00000007,0x00050041, - 0x00000007,0x0000070b,0x00000127,0x00000198,0x0004003d,0x00000006,0x0000070c,0x0000070b, - 0x000500ba,0x000000a2,0x0000070d,0x0000070c,0x000002d8,0x000600a9,0x00000006,0x0000070e, - 0x0000070d,0x00000150,0x0000014f,0x00050041,0x00000007,0x0000070f,0x00000127,0x00000198, - 0x0004003d,0x00000006,0x00000710,0x0000070f,0x00050085,0x00000006,0x00000711,0x00000710, - 0x0000070e,0x00050041,0x00000007,0x00000712,0x00000127,0x00000198,0x0003003e,0x00000712, - 0x00000711,0x00050041,0x00000007,0x00000713,0x00000127,0x00000198,0x0004003d,0x00000006, - 0x00000714,0x00000713,0x00050041,0x00000007,0x00000715,0x00000127,0x0000019d,0x0004003d, - 0x00000006,0x00000716,0x00000715,0x00050081,0x00000006,0x00000717,0x00000714,0x00000716, - 0x0003003e,0x00000718,0x000002d8,0x0003003e,0x00000719,0x00000717,0x00060039,0x00000006, - 0x0000071a,0x0000003f,0x00000718,0x00000719,0x00050041,0x00000007,0x0000071b,0x00000127, - 0x00000198,0x0003003e,0x0000071b,0x0000071a,0x00050041,0x0000000f,0x0000071d,0x00000127, - 0x0000022f,0x0004003d,0x0000000e,0x0000071e,0x0000071d,0x0003003e,0x0000071c,0x0000071e, - 0x00050039,0x0000000e,0x0000071f,0x000000b1,0x0000071c,0x0003003e,0x00000720,0x0000071f, - 0x00050039,0x0000000e,0x00000721,0x000000b7,0x00000720,0x0003003e,0x00000722,0x00000721, - 0x00050039,0x0000000e,0x00000723,0x000000b4,0x00000722,0x00050041,0x0000000f,0x00000724, - 0x00000127,0x0000022f,0x0003003e,0x00000724,0x00000723,0x00050041,0x0000000f,0x00000726, - 0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000727,0x00000726,0x0003003e,0x00000725, - 0x00000727,0x00050039,0x0000000e,0x00000728,0x000000b1,0x00000725,0x0003003e,0x00000729, - 0x00000728,0x00050039,0x0000000e,0x0000072a,0x000000b7,0x00000729,0x0003003e,0x0000072b, - 0x0000072a,0x00050039,0x0000000e,0x0000072c,0x000000b4,0x0000072b,0x00050041,0x0000000f, - 0x0000072d,0x00000127,0x000001a2,0x0003003e,0x0000072d,0x0000072c,0x00050041,0x00000007, - 0x0000072f,0x00000127,0x0000019d,0x0004003d,0x00000006,0x00000730,0x0000072f,0x00050041, - 0x00000007,0x00000731,0x00000127,0x00000198,0x0004003d,0x00000006,0x00000732,0x00000731, - 0x00050088,0x00000006,0x00000733,0x00000730,0x00000732,0x0003003e,0x00000734,0x00000733, - 0x00050039,0x00000006,0x00000735,0x00000018,0x00000734,0x0003003e,0x0000072e,0x00000735, - 0x00050041,0x0000000f,0x00000737,0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000738, - 0x00000737,0x0003003e,0x00000736,0x00000738,0x00050041,0x0000000f,0x0000073a,0x00000127, - 0x0000022f,0x0004003d,0x0000000e,0x0000073b,0x0000073a,0x0003003e,0x00000739,0x0000073b, - 0x0004003d,0x00000006,0x0000073d,0x0000072e,0x0003003e,0x0000073c,0x0000073d,0x00070039, - 0x0000000e,0x0000073e,0x00000014,0x00000736,0x00000739,0x0000073c,0x00050041,0x0000000f, - 0x0000073f,0x00000127,0x000001a2,0x0003003e,0x0000073f,0x0000073e,0x00050041,0x0000000f, - 0x00000741,0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000742,0x00000741,0x0003003e, - 0x00000740,0x00000742,0x00050039,0x0000000e,0x00000743,0x000000b1,0x00000740,0x00050041, - 0x0000000f,0x00000744,0x00000127,0x000001a2,0x0003003e,0x00000744,0x00000743,0x00050041, - 0x0000000f,0x00000746,0x00000127,0x000001a2,0x0004003d,0x0000000e,0x00000747,0x00000746, - 0x0003003e,0x00000745,0x00000747,0x00050039,0x0000000e,0x00000748,0x000000ba,0x00000745, - 0x00050041,0x0000000f,0x00000749,0x00000127,0x000001a2,0x0003003e,0x00000749,0x00000748, - 0x000100fd,0x00010038,0x00050036,0x00000002,0x0000012c,0x00000000,0x00000106,0x00030037, - 0x000000fb,0x0000012a,0x00030037,0x000000fd,0x0000012b,0x000200f8,0x0000012d,0x0004003b, - 0x00000007,0x0000074a,0x00000007,0x0004003b,0x00000007,0x0000074e,0x00000007,0x0004003b, - 0x00000007,0x00000750,0x00000007,0x0004003b,0x00000007,0x00000755,0x00000007,0x0004003b, - 0x00000007,0x00000757,0x00000007,0x0004003b,0x00000007,0x0000075a,0x00000007,0x0004003b, - 0x00000007,0x0000075b,0x00000007,0x0004003b,0x00000007,0x0000075d,0x00000007,0x0004003b, - 0x00000007,0x0000075f,0x00000007,0x0004003b,0x00000007,0x00000761,0x00000007,0x0004003b, - 0x00000007,0x00000762,0x00000007,0x0004003b,0x00000007,0x00000764,0x00000007,0x0004003b, - 0x00000007,0x00000767,0x00000007,0x0004003b,0x00000007,0x00000769,0x00000007,0x0004003b, - 0x00000007,0x0000076b,0x00000007,0x0004003b,0x00000007,0x0000076d,0x00000007,0x0004003b, - 0x00000007,0x0000076f,0x00000007,0x0004003b,0x00000007,0x00000771,0x00000007,0x0004003b, - 0x00000007,0x00000773,0x00000007,0x0004003b,0x00000007,0x00000775,0x00000007,0x0004003b, - 0x00000007,0x00000776,0x00000007,0x0004003b,0x00000007,0x00000777,0x00000007,0x0004003b, - 0x0000000f,0x0000077a,0x00000007,0x0004003b,0x0000000f,0x00000782,0x00000007,0x0004003b, - 0x0000000f,0x00000785,0x00000007,0x0004003b,0x0000000f,0x00000787,0x00000007,0x0004003b, - 0x0000000f,0x00000789,0x00000007,0x0004003b,0x0000000f,0x00000796,0x00000007,0x0004003b, - 0x0000000f,0x00000799,0x00000007,0x0004003b,0x00000007,0x000007a0,0x00000007,0x0004003b, - 0x00000007,0x000007a1,0x00000007,0x0004003b,0x00000007,0x000007a3,0x00000007,0x0004003b, - 0x00000007,0x000007ac,0x00000007,0x0004003b,0x0000000f,0x000007af,0x00000007,0x0004003b, - 0x0000000f,0x000007b1,0x00000007,0x0004003b,0x00000007,0x000007b4,0x00000007,0x00050051, - 0x00000006,0x0000074b,0x0000012a,0x00000006,0x00050088,0x00000006,0x0000074d,0x0000074b, - 0x0000074c,0x0003003e,0x0000074e,0x0000074d,0x00050039,0x00000006,0x0000074f,0x00000018, - 0x0000074e,0x0003003e,0x0000074a,0x0000074f,0x00050051,0x00000006,0x00000752,0x0000012a, - 0x0000000c,0x00050088,0x00000006,0x00000753,0x00000752,0x0000074c,0x00050083,0x00000006, - 0x00000754,0x00000751,0x00000753,0x0003003e,0x00000755,0x00000754,0x00050039,0x00000006, - 0x00000756,0x00000018,0x00000755,0x0003003e,0x00000750,0x00000756,0x00050051,0x00000006, - 0x00000758,0x0000012a,0x0000000a,0x00050083,0x00000006,0x00000759,0x00000150,0x00000758, - 0x0003003e,0x00000757,0x00000759,0x00050051,0x00000006,0x0000075c,0x0000012a,0x00000008, - 0x0003003e,0x0000075b,0x0000075c,0x0003003e,0x0000075d,0x000002a2,0x00060039,0x00000006, - 0x0000075e,0x00000053,0x0000075b,0x0000075d,0x0003003e,0x0000075a,0x0000075e,0x00050051, - 0x00000006,0x00000760,0x0000012a,0x00000009,0x0003003e,0x0000075f,0x00000760,0x0004003d, - 0x00000006,0x00000763,0x0000075a,0x0003003e,0x00000762,0x00000763,0x0004003d,0x00000006, - 0x00000765,0x0000075f,0x0003003e,0x00000764,0x00000765,0x00060039,0x00000006,0x00000766, - 0x0000003f,0x00000762,0x00000764,0x0004003d,0x00000006,0x00000768,0x00000757,0x0003003e, - 0x00000767,0x00000768,0x0003003e,0x00000769,0x00000766,0x00060039,0x00000006,0x0000076a, - 0x0000003f,0x00000767,0x00000769,0x0004003d,0x00000006,0x0000076c,0x00000750,0x0003003e, - 0x0000076b,0x0000076c,0x0003003e,0x0000076d,0x0000076a,0x00060039,0x00000006,0x0000076e, - 0x0000003f,0x0000076b,0x0000076d,0x0004003d,0x00000006,0x00000770,0x0000074a,0x0003003e, - 0x0000076f,0x00000770,0x0003003e,0x00000771,0x0000076e,0x00060039,0x00000006,0x00000772, - 0x0000003f,0x0000076f,0x00000771,0x0003003e,0x00000761,0x00000772,0x0003003e,0x00000775, - 0x00000774,0x0003003e,0x00000776,0x00000150,0x0004003d,0x00000006,0x00000778,0x00000761, - 0x0003003e,0x00000777,0x00000778,0x00070039,0x00000006,0x00000779,0x0000000c,0x00000775, - 0x00000776,0x00000777,0x0003003e,0x00000773,0x00000779,0x00060041,0x0000000f,0x0000077b, - 0x0000012b,0x00000192,0x0000022f,0x0004003d,0x0000000e,0x0000077c,0x0000077b,0x00050085, - 0x0000000e,0x0000077f,0x0000077c,0x0000077e,0x0004003d,0x00000006,0x00000780,0x00000773, - 0x0005008e,0x0000000e,0x00000781,0x0000077f,0x00000780,0x0003003e,0x0000077a,0x00000781, - 0x0004003d,0x0000000e,0x00000786,0x0000077a,0x0003003e,0x00000785,0x00000786,0x0003003e, - 0x00000787,0x00000784,0x00060039,0x0000000e,0x00000788,0x00000047,0x00000785,0x00000787, - 0x0003003e,0x00000782,0x00000788,0x00050041,0x0000000f,0x0000078a,0x0000012b,0x000001a2, - 0x0004003d,0x0000000e,0x0000078b,0x0000078a,0x00060041,0x0000000f,0x0000078c,0x0000012b, - 0x00000192,0x00000192,0x0004003d,0x0000000e,0x0000078d,0x0000078c,0x00050083,0x0000000e, - 0x0000078e,0x0000078b,0x0000078d,0x0004003d,0x0000000e,0x0000078f,0x00000782,0x00050088, - 0x0000000e,0x00000790,0x0000078e,0x0000078f,0x0003003e,0x00000789,0x00000790,0x0004003d, - 0x0000000e,0x00000791,0x00000789,0x0006000c,0x00000006,0x00000792,0x00000001,0x00000042, - 0x00000791,0x000500ba,0x000000a2,0x00000793,0x00000792,0x00000150,0x000300f7,0x00000795, - 0x00000000,0x000400fa,0x00000793,0x00000794,0x00000795,0x000200f8,0x00000794,0x0004003d, - 0x0000000e,0x00000797,0x00000789,0x0006000c,0x0000000e,0x00000798,0x00000001,0x00000045, - 0x00000797,0x0003003e,0x00000796,0x00000798,0x0004003d,0x0000000e,0x0000079a,0x00000796, - 0x0004003d,0x0000000e,0x0000079b,0x0000077a,0x00050085,0x0000000e,0x0000079c,0x0000079a, - 0x0000079b,0x00060041,0x0000000f,0x0000079d,0x0000012b,0x00000192,0x00000192,0x0004003d, - 0x0000000e,0x0000079e,0x0000079d,0x00050081,0x0000000e,0x0000079f,0x0000079c,0x0000079e, - 0x0003003e,0x00000799,0x0000079f,0x00050051,0x00000006,0x000007a2,0x0000012a,0x0000000b, - 0x0003003e,0x000007a1,0x000007a2,0x00050041,0x00000007,0x000007a4,0x0000012b,0x000003cd, - 0x0004003d,0x00000006,0x000007a5,0x000007a4,0x0003003e,0x000007a3,0x000007a5,0x00060039, - 0x00000006,0x000007a6,0x0000003f,0x000007a1,0x000007a3,0x00050051,0x00000006,0x000007a7, - 0x0000012a,0x0000000a,0x00050085,0x00000006,0x000007a8,0x000007a6,0x000007a7,0x00050051, - 0x00000006,0x000007a9,0x0000012a,0x00000007,0x00050083,0x00000006,0x000007aa,0x00000150, - 0x000007a9,0x00050085,0x00000006,0x000007ab,0x000007a8,0x000007aa,0x0003003e,0x000007a0, - 0x000007ab,0x0004003d,0x00000006,0x000007ad,0x000007a0,0x0003003e,0x000007ac,0x000007ad, - 0x00050039,0x00000006,0x000007ae,0x00000018,0x000007ac,0x0004003d,0x0000000e,0x000007b0, - 0x00000799,0x0003003e,0x000007af,0x000007b0,0x00050041,0x0000000f,0x000007b2,0x0000012b, - 0x000001a2,0x0004003d,0x0000000e,0x000007b3,0x000007b2,0x0003003e,0x000007b1,0x000007b3, - 0x0003003e,0x000007b4,0x000007ae,0x00070039,0x0000000e,0x000007b5,0x00000014,0x000007af, - 0x000007b1,0x000007b4,0x00050041,0x0000000f,0x000007b6,0x0000012b,0x000001a2,0x0003003e, - 0x000007b6,0x000007b5,0x000200f9,0x00000795,0x000200f8,0x00000795,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x00000131,0x00000000,0x0000012e,0x00030037,0x0000011d,0x0000012f, - 0x00030037,0x000000fd,0x00000130,0x000200f8,0x00000132,0x0004003b,0x00000007,0x000007c0, - 0x00000007,0x0004003b,0x00000007,0x000007c1,0x00000007,0x0004003b,0x00000007,0x000007c5, - 0x00000007,0x0004003b,0x00000007,0x000007c8,0x00000007,0x0004003b,0x00000007,0x000007cc, - 0x00000007,0x0004003b,0x00000007,0x000007cd,0x00000007,0x0004003b,0x00000007,0x000007d4, - 0x00000007,0x0004003b,0x00000007,0x000007d5,0x00000007,0x0004003b,0x00000007,0x000007db, - 0x00000007,0x0004003b,0x00000007,0x000007de,0x00000007,0x0004003b,0x00000007,0x000007e1, - 0x00000007,0x0004003b,0x0000006d,0x000007e2,0x00000007,0x0004003b,0x00000007,0x000007e9, - 0x00000007,0x0004003b,0x00000007,0x000007ea,0x00000007,0x0004003b,0x00000007,0x000007f4, - 0x00000007,0x0004003b,0x00000007,0x000007f5,0x00000007,0x0004003b,0x00000007,0x000007f7, - 0x00000007,0x0004003b,0x00000007,0x000007f8,0x00000007,0x0004003b,0x00000007,0x000007fb, - 0x00000007,0x0004003b,0x00000007,0x00000806,0x00000007,0x0004003b,0x00000007,0x00000807, - 0x00000007,0x0004003b,0x0000001b,0x0000080a,0x00000007,0x0004003b,0x0000001b,0x00000810, - 0x00000007,0x00050041,0x000000a3,0x000007b7,0x0000012f,0x000003f4,0x0004003d,0x000000a2, - 0x000007b8,0x000007b7,0x000500a4,0x000000a2,0x000007ba,0x000007b8,0x000007b9,0x000600a9, - 0x00000006,0x000007bb,0x000007ba,0x00000150,0x0000014f,0x00050041,0x00000007,0x000007bc, - 0x00000130,0x000003cc,0x0004003d,0x00000006,0x000007bd,0x000007bc,0x00050085,0x00000006, - 0x000007be,0x000007bd,0x000007bb,0x00050041,0x00000007,0x000007bf,0x00000130,0x000003cc, - 0x0003003e,0x000007bf,0x000007be,0x00050041,0x00000007,0x000007c2,0x0000012f,0x000003e0, - 0x0004003d,0x00000006,0x000007c3,0x000007c2,0x0003003e,0x000007c1,0x000007c3,0x00050039, - 0x00000006,0x000007c4,0x00000018,0x000007c1,0x00050041,0x00000007,0x000007c6,0x0000012f, - 0x000003df,0x0004003d,0x00000006,0x000007c7,0x000007c6,0x0003003e,0x000007c5,0x000007c7, - 0x00050041,0x00000007,0x000007c9,0x0000012f,0x000001a7,0x0004003d,0x00000006,0x000007ca, - 0x000007c9,0x0003003e,0x000007c8,0x000007ca,0x00060039,0x00000006,0x000007cb,0x0000003f, - 0x000007c5,0x000007c8,0x0003003e,0x000007cc,0x000007c4,0x0003003e,0x000007cd,0x000007cb, - 0x00060039,0x00000006,0x000007ce,0x0000003f,0x000007cc,0x000007cd,0x0003003e,0x000007c0, - 0x000007ce,0x00050041,0x00000007,0x000007cf,0x00000130,0x000003cc,0x0004003d,0x00000006, - 0x000007d0,0x000007cf,0x0004003d,0x00000006,0x000007d1,0x000007c0,0x00050085,0x00000006, - 0x000007d2,0x000007d1,0x00000361,0x00050083,0x00000006,0x000007d3,0x000007d0,0x000007d2, - 0x0003003e,0x000007d4,0x0000014f,0x0003003e,0x000007d5,0x000007d3,0x00060039,0x00000006, - 0x000007d6,0x0000003f,0x000007d4,0x000007d5,0x00050041,0x00000007,0x000007d7,0x00000130, - 0x000003cc,0x0003003e,0x000007d7,0x000007d6,0x00050041,0x00000007,0x000007d8,0x00000130, - 0x000003cc,0x0004003d,0x00000006,0x000007d9,0x000007d8,0x00050083,0x00000006,0x000007da, - 0x000007d9,0x00000150,0x0003003e,0x000007db,0x000007da,0x00050039,0x00000006,0x000007dc, - 0x00000018,0x000007db,0x00050085,0x00000006,0x000007dd,0x000007dc,0x00000150,0x0003003e, - 0x000007de,0x000007dd,0x00050039,0x00000006,0x000007df,0x00000018,0x000007de,0x00050041, - 0x00000007,0x000007e0,0x00000130,0x000003cd,0x0003003e,0x000007e0,0x000007df,0x00050041, - 0x0000006d,0x000007e3,0x0000012f,0x00000192,0x0004003d,0x00000055,0x000007e4,0x000007e3, - 0x0003003e,0x000007e2,0x000007e4,0x00050039,0x00000006,0x000007e5,0x00000086,0x000007e2, - 0x00050041,0x00000007,0x000007e6,0x0000012f,0x000003e0,0x0004003d,0x00000006,0x000007e7, - 0x000007e6,0x00050085,0x00000006,0x000007e8,0x000007e7,0x0000014f,0x0003003e,0x000007e9, - 0x000007e8,0x00050041,0x00000007,0x000007eb,0x0000012f,0x000003df,0x0004003d,0x00000006, - 0x000007ec,0x000007eb,0x0003003e,0x000007ea,0x000007ec,0x00060039,0x00000006,0x000007ed, - 0x0000003f,0x000007e9,0x000007ea,0x00050083,0x00000006,0x000007ee,0x00000150,0x000007ed, - 0x00050085,0x00000006,0x000007ef,0x000007e5,0x000007ee,0x0003003e,0x000007e1,0x000007ef, - 0x00050041,0x00000007,0x000007f0,0x00000130,0x000003cc,0x0004003d,0x00000006,0x000007f1, - 0x000007f0,0x0004003d,0x00000006,0x000007f2,0x000007e1,0x00050081,0x00000006,0x000007f3, - 0x000007f1,0x000007f2,0x0003003e,0x000007f4,0x000007f3,0x0003003e,0x000007f5,0x00000361, - 0x00060039,0x00000006,0x000007f6,0x00000023,0x000007f4,0x000007f5,0x0003003e,0x000007f7, - 0x0000014f,0x0003003e,0x000007f8,0x000007f6,0x00060039,0x00000006,0x000007f9,0x0000003f, - 0x000007f7,0x000007f8,0x00050041,0x00000007,0x000007fa,0x00000130,0x000003cc,0x0003003e, - 0x000007fa,0x000007f9,0x00040039,0x00000006,0x000007fd,0x00000065,0x00050088,0x00000006, - 0x000007fe,0x000007fc,0x000007fd,0x0004003d,0x00000006,0x000007ff,0x000007c0,0x00050083, - 0x00000006,0x00000800,0x00000150,0x000007ff,0x00050085,0x00000006,0x00000801,0x000007fe, - 0x00000800,0x0003003e,0x000007fb,0x00000801,0x00050041,0x00000007,0x00000802,0x00000130, - 0x000003cc,0x0004003d,0x00000006,0x00000803,0x00000802,0x0004003d,0x00000006,0x00000804, - 0x000007fb,0x00050083,0x00000006,0x00000805,0x00000803,0x00000804,0x0003003e,0x00000806, - 0x0000014f,0x0003003e,0x00000807,0x00000805,0x00060039,0x00000006,0x00000808,0x0000003f, - 0x00000806,0x00000807,0x00050041,0x00000007,0x00000809,0x00000130,0x000003cc,0x0003003e, - 0x00000809,0x00000808,0x00050041,0x0000001b,0x0000080b,0x0000012f,0x0000022f,0x0004003d, - 0x0000001a,0x0000080c,0x0000080b,0x00050041,0x0000001b,0x0000080d,0x0000012f,0x00000198, - 0x0004003d,0x0000001a,0x0000080e,0x0000080d,0x00050083,0x0000001a,0x0000080f,0x0000080c, - 0x0000080e,0x0003003e,0x0000080a,0x0000080f,0x0004003d,0x0000001a,0x00000811,0x0000080a, - 0x0003003e,0x00000810,0x00000811,0x00050039,0x000000a2,0x00000812,0x000000be,0x00000810, - 0x000500a4,0x000000a2,0x00000814,0x00000812,0x00000813,0x000600a9,0x00000006,0x00000815, - 0x00000814,0x00000150,0x0000014f,0x00050041,0x00000007,0x00000816,0x00000130,0x000003cc, - 0x0004003d,0x00000006,0x00000817,0x00000816,0x00050085,0x00000006,0x00000818,0x00000817, - 0x00000815,0x00050041,0x00000007,0x00000819,0x00000130,0x000003cc,0x0003003e,0x00000819, - 0x00000818,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000135,0x00000000,0x00000106, - 0x00030037,0x000000fb,0x00000133,0x00030037,0x000000fd,0x00000134,0x000200f8,0x00000136, - 0x0004003b,0x00000007,0x0000081a,0x00000007,0x0004003b,0x00000007,0x00000821,0x00000007, - 0x0004003b,0x00000007,0x00000822,0x00000007,0x0004003b,0x00000007,0x00000824,0x00000007, - 0x0004003b,0x00000007,0x00000826,0x00000007,0x0004003b,0x00000007,0x00000828,0x00000007, - 0x0004003b,0x00000007,0x00000829,0x00000007,0x0004003b,0x00000007,0x0000082b,0x00000007, - 0x0004003b,0x00000007,0x0000082d,0x00000007,0x00050051,0x00000006,0x0000081b,0x00000133, - 0x0000000a,0x0003003e,0x0000081a,0x0000081b,0x00050051,0x00000006,0x0000081d,0x00000133, - 0x00000006,0x00040039,0x00000006,0x0000081e,0x0000006b,0x00050085,0x00000006,0x0000081f, - 0x0000081d,0x0000081e,0x00050088,0x00000006,0x00000820,0x0000081f,0x000002a2,0x0003003e, - 0x00000821,0x0000014f,0x0003003e,0x00000822,0x00000820,0x00060039,0x00000006,0x00000823, - 0x0000003f,0x00000821,0x00000822,0x0003003e,0x00000824,0x00000823,0x00050039,0x00000006, - 0x00000825,0x00000018,0x00000824,0x0004003d,0x00000006,0x00000827,0x0000081a,0x0003003e, - 0x00000826,0x00000827,0x0003003e,0x00000828,0x0000081c,0x0003003e,0x00000829,0x00000825, - 0x00070039,0x00000006,0x0000082a,0x0000000c,0x00000826,0x00000828,0x00000829,0x0004003d, - 0x00000006,0x0000082c,0x0000081a,0x0003003e,0x0000082b,0x0000082c,0x0003003e,0x0000082d, - 0x0000082a,0x00060039,0x00000006,0x0000082e,0x00000023,0x0000082b,0x0000082d,0x0003003e, - 0x0000081a,0x0000082e,0x0004003d,0x00000006,0x0000082f,0x0000081a,0x00050041,0x00000007, - 0x00000830,0x00000134,0x00000198,0x0003003e,0x00000830,0x0000082f,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x0000013b,0x00000000,0x00000137,0x00030037,0x0000006d,0x00000138, - 0x00030037,0x0000011d,0x00000139,0x00030037,0x000000fd,0x0000013a,0x000200f8,0x0000013c, - 0x0004003b,0x0000001b,0x00000833,0x00000007,0x0004003b,0x0000001b,0x00000846,0x00000007, - 0x0004003b,0x0000006d,0x00000849,0x00000007,0x0004003b,0x0000006d,0x0000084a,0x00000007, - 0x0004003b,0x0000006d,0x0000084d,0x00000007,0x0004003b,0x0000001b,0x0000084f,0x00000007, - 0x0004003b,0x0000001b,0x00000853,0x00000007,0x0004003b,0x0000011d,0x00000858,0x00000007, - 0x0004003b,0x0000001b,0x0000085c,0x00000007,0x0004003b,0x0000001b,0x0000085f,0x00000007, - 0x0004003b,0x0000006d,0x00000861,0x00000007,0x0004003b,0x0000006d,0x00000862,0x00000007, - 0x0004003b,0x0000001b,0x00000864,0x00000007,0x0004003b,0x0000001b,0x00000868,0x00000007, - 0x0004003b,0x0000001b,0x0000086d,0x00000007,0x0004003b,0x0000006d,0x00000870,0x00000007, - 0x0004003b,0x0000006d,0x00000871,0x00000007,0x0004003b,0x0000001b,0x00000873,0x00000007, - 0x0004003b,0x00000030,0x00000881,0x00000007,0x0004003b,0x0000001b,0x00000882,0x00000007, - 0x0004003b,0x00000007,0x00000886,0x00000007,0x0004003b,0x00000007,0x0000088b,0x00000007, - 0x0004003b,0x00000007,0x00000890,0x00000007,0x0004003b,0x00000007,0x00000895,0x00000007, - 0x0004003d,0x00000055,0x00000831,0x00000138,0x00050041,0x0000006d,0x00000832,0x00000139, - 0x00000192,0x0003003e,0x00000832,0x00000831,0x0004003d,0x00000055,0x00000834,0x00000138, - 0x0004006f,0x0000001a,0x00000835,0x00000834,0x00050050,0x0000001a,0x00000836,0x000002a2, - 0x000002a2,0x00050081,0x0000001a,0x00000837,0x00000835,0x00000836,0x00040039,0x00000055, - 0x00000838,0x0000005b,0x0004006f,0x0000001a,0x00000839,0x00000838,0x00050088,0x0000001a, - 0x0000083a,0x00000837,0x00000839,0x0003003e,0x00000833,0x0000083a,0x0004003d,0x0000001a, - 0x0000083b,0x00000833,0x00050041,0x0000001b,0x0000083c,0x00000139,0x0000022f,0x0003003e, - 0x0000083c,0x0000083b,0x0004003d,0x0000001a,0x0000083d,0x00000833,0x00040039,0x0000001a, - 0x0000083e,0x00000060,0x00040039,0x00000055,0x0000083f,0x00000057,0x0004006f,0x0000001a, - 0x00000840,0x0000083f,0x00050088,0x0000001a,0x00000841,0x0000083e,0x00000840,0x00050081, - 0x0000001a,0x00000842,0x0000083d,0x00000841,0x00050041,0x0000001b,0x00000843,0x00000139, - 0x0000019d,0x0003003e,0x00000843,0x00000842,0x00040039,0x00000055,0x00000844,0x00000057, - 0x00040039,0x00000055,0x00000845,0x00000059,0x00050041,0x0000001b,0x00000847,0x00000139, - 0x0000019d,0x0004003d,0x0000001a,0x00000848,0x00000847,0x0003003e,0x00000846,0x00000848, - 0x0003003e,0x00000849,0x00000844,0x0003003e,0x0000084a,0x00000845,0x00070039,0x0000001a, - 0x0000084b,0x000000ca,0x00000846,0x00000849,0x0000084a,0x00050041,0x0000001b,0x0000084c, - 0x00000139,0x000001a2,0x0003003e,0x0000084c,0x0000084b,0x0004003d,0x00000055,0x0000084e, - 0x00000138,0x0003003e,0x0000084d,0x0000084e,0x0004003d,0x0000001a,0x00000850,0x00000833, - 0x0003003e,0x0000084f,0x00000850,0x00060039,0x0000001a,0x00000851,0x0000011b,0x0000084d, - 0x0000084f,0x00050041,0x0000001b,0x00000852,0x00000139,0x00000198,0x0003003e,0x00000852, - 0x00000851,0x00050041,0x0000001b,0x00000854,0x00000139,0x00000198,0x0004003d,0x0000001a, - 0x00000855,0x00000854,0x0003003e,0x00000853,0x00000855,0x00050039,0x00000006,0x00000856, - 0x00000098,0x00000853,0x00050041,0x00000007,0x00000857,0x00000139,0x000003cd,0x0003003e, - 0x00000857,0x00000856,0x0004003d,0x000000fb,0x00000859,0x00000139,0x0003003e,0x00000858, - 0x00000859,0x00050039,0x00000002,0x0000085a,0x00000120,0x00000858,0x0004003d,0x000000fb, - 0x0000085b,0x00000858,0x0003003e,0x00000139,0x0000085b,0x00040039,0x00000055,0x0000085d, - 0x00000057,0x00040039,0x00000055,0x0000085e,0x00000059,0x0004003d,0x0000001a,0x00000860, - 0x00000833,0x0003003e,0x0000085f,0x00000860,0x0003003e,0x00000861,0x0000085d,0x0003003e, - 0x00000862,0x0000085e,0x00070039,0x0000001a,0x00000863,0x000000ca,0x0000085f,0x00000861, - 0x00000862,0x0003003e,0x0000085c,0x00000863,0x0004003d,0x0000001a,0x00000865,0x0000085c, - 0x0003003e,0x00000864,0x00000865,0x00050039,0x00000006,0x00000866,0x00000082,0x00000864, - 0x00050041,0x00000007,0x00000867,0x00000139,0x000003e1,0x0003003e,0x00000867,0x00000866, - 0x00040039,0x00000055,0x00000869,0x00000057,0x00050050,0x00000055,0x0000086a,0x0000019d, - 0x0000019d,0x00050087,0x00000055,0x0000086b,0x00000869,0x0000086a,0x00040039,0x00000055, - 0x0000086c,0x0000007b,0x00050041,0x0000001b,0x0000086e,0x00000139,0x0000019d,0x0004003d, - 0x0000001a,0x0000086f,0x0000086e,0x0003003e,0x0000086d,0x0000086f,0x0003003e,0x00000870, - 0x0000086b,0x0003003e,0x00000871,0x0000086c,0x00070039,0x0000001a,0x00000872,0x000000ca, - 0x0000086d,0x00000870,0x00000871,0x0003003e,0x00000868,0x00000872,0x0004003d,0x0000001a, - 0x00000874,0x00000868,0x0003003e,0x00000873,0x00000874,0x00050039,0x00000006,0x00000875, - 0x0000007f,0x00000873,0x00050041,0x00000007,0x00000876,0x00000139,0x000003f3,0x0003003e, - 0x00000876,0x00000875,0x00050041,0x000000a3,0x00000877,0x00000139,0x000001b2,0x0004003d, - 0x000000a2,0x00000878,0x00000877,0x000500a4,0x000000a2,0x00000879,0x00000878,0x000007b9, - 0x000400a8,0x000000a2,0x0000087a,0x00000879,0x000300f7,0x0000087c,0x00000000,0x000400fa, - 0x0000087a,0x0000087b,0x0000087c,0x000200f8,0x0000087b,0x00040039,0x00000006,0x0000087d, - 0x00000069,0x000500b4,0x000000a2,0x0000087e,0x0000014f,0x0000087d,0x000200f9,0x0000087c, - 0x000200f8,0x0000087c,0x000700f5,0x000000a2,0x0000087f,0x00000879,0x0000013c,0x0000087e, - 0x0000087b,0x00050041,0x000000a3,0x00000880,0x00000139,0x000003f4,0x0003003e,0x00000880, - 0x0000087f,0x00050041,0x0000001b,0x00000883,0x00000139,0x000001a2,0x0004003d,0x0000001a, - 0x00000884,0x00000883,0x0003003e,0x00000882,0x00000884,0x00050039,0x0000002f,0x00000885, - 0x00000095,0x00000882,0x0003003e,0x00000881,0x00000885,0x00050041,0x00000007,0x00000887, - 0x00000881,0x000001eb,0x0004003d,0x00000006,0x00000888,0x00000887,0x0003003e,0x00000886, - 0x00000888,0x00050039,0x00000006,0x00000889,0x00000018,0x00000886,0x00050041,0x00000007, - 0x0000088a,0x00000139,0x000003df,0x0003003e,0x0000088a,0x00000889,0x00050041,0x00000007, - 0x0000088c,0x00000881,0x00000284,0x0004003d,0x00000006,0x0000088d,0x0000088c,0x0003003e, - 0x0000088b,0x0000088d,0x00050039,0x00000006,0x0000088e,0x00000018,0x0000088b,0x00050041, - 0x00000007,0x0000088f,0x00000139,0x000001a7,0x0003003e,0x0000088f,0x0000088e,0x00050041, - 0x00000007,0x00000891,0x00000881,0x00000288,0x0004003d,0x00000006,0x00000892,0x00000891, - 0x0003003e,0x00000890,0x00000892,0x00050039,0x00000006,0x00000893,0x00000018,0x00000890, - 0x00050041,0x00000007,0x00000894,0x00000139,0x000003e0,0x0003003e,0x00000894,0x00000893, - 0x00050041,0x00000007,0x00000896,0x00000881,0x00000707,0x0004003d,0x00000006,0x00000897, - 0x00000896,0x0003003e,0x00000895,0x00000897,0x00050039,0x00000006,0x00000898,0x00000018, - 0x00000895,0x00050041,0x00000007,0x00000899,0x00000139,0x000001ad,0x0003003e,0x00000899, - 0x00000898,0x00050041,0x00000007,0x0000089a,0x00000139,0x000001ad,0x0004003d,0x00000006, - 0x0000089b,0x0000089a,0x00050085,0x00000006,0x0000089d,0x0000089b,0x0000089c,0x0006000c, - 0x00000006,0x0000089e,0x00000001,0x00000001,0x0000089d,0x000500ba,0x000000a2,0x0000089f, - 0x0000089e,0x00000150,0x000600a9,0x00000006,0x000008a0,0x0000089f,0x00000150,0x0000014f, - 0x00050041,0x00000007,0x000008a1,0x00000139,0x000001ad,0x0004003d,0x00000006,0x000008a2, - 0x000008a1,0x00050085,0x00000006,0x000008a3,0x000008a2,0x000008a0,0x00050041,0x00000007, - 0x000008a4,0x00000139,0x000001ad,0x0003003e,0x000008a4,0x000008a3,0x00050041,0x0000000f, - 0x000008a5,0x0000013a,0x0000022f,0x0003003e,0x000008a5,0x00000487,0x00050041,0x0000000f, - 0x000008a6,0x0000013a,0x000001a2,0x0003003e,0x000008a6,0x00000487,0x00050041,0x00000007, - 0x000008a7,0x0000013a,0x00000198,0x0003003e,0x000008a7,0x00000150,0x00050041,0x00000007, - 0x000008a8,0x0000013a,0x0000019d,0x0003003e,0x000008a8,0x0000014f,0x00050041,0x00000007, - 0x000008a9,0x0000013a,0x000003cc,0x0003003e,0x000008a9,0x0000014f,0x00050041,0x00000007, - 0x000008aa,0x0000013a,0x000003cd,0x0003003e,0x000008aa,0x0000014f,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x0000013f,0x00000000,0x0000013d,0x00030037,0x0000006d,0x0000013e, - 0x000200f8,0x00000140,0x0004003b,0x0000011d,0x000008ab,0x00000007,0x0004003b,0x000000fd, - 0x000008ac,0x00000007,0x0004003b,0x0000006d,0x000008ad,0x00000007,0x0004003b,0x0000011d, - 0x000008af,0x00000007,0x0004003b,0x000000fd,0x000008b1,0x00000007,0x0004003b,0x000000fd, - 0x000008c1,0x00000007,0x0004003b,0x0000011d,0x000008c5,0x00000007,0x0004003b,0x000000fd, - 0x000008c7,0x00000007,0x0004003b,0x000000fd,0x000008cc,0x00000007,0x0004003b,0x000000fd, - 0x000008d1,0x00000007,0x0004003b,0x000000fd,0x000008d6,0x00000007,0x0004003b,0x000000fd, - 0x000008db,0x00000007,0x0004003b,0x0000000f,0x000008e5,0x00000007,0x0004003b,0x0000000f, - 0x000008e8,0x00000007,0x0004003b,0x0000006d,0x000008f3,0x00000007,0x0004003b,0x00000030, - 0x000008f5,0x00000007,0x0004003b,0x0000006d,0x000008f7,0x00000007,0x0004003b,0x00000007, - 0x000008f9,0x00000007,0x0004003d,0x00000055,0x000008ae,0x0000013e,0x0003003e,0x000008ad, - 0x000008ae,0x0004003d,0x000000fb,0x000008b0,0x000008ab,0x0003003e,0x000008af,0x000008b0, - 0x0004003d,0x000000fc,0x000008b2,0x000008ac,0x0003003e,0x000008b1,0x000008b2,0x00070039, - 0x00000002,0x000008b3,0x0000013b,0x000008ad,0x000008af,0x000008b1,0x0004003d,0x000000fb, - 0x000008b4,0x000008af,0x0003003e,0x000008ab,0x000008b4,0x0004003d,0x000000fc,0x000008b5, - 0x000008b1,0x0003003e,0x000008ac,0x000008b5,0x00050041,0x000000a3,0x000008b6,0x000008ab, - 0x000001b2,0x0004003d,0x000000a2,0x000008b7,0x000008b6,0x000300f7,0x000008b9,0x00000000, - 0x000400fa,0x000008b7,0x000008b8,0x000008b9,0x000200f8,0x000008b8,0x00050041,0x000000a3, - 0x000008ba,0x000008ab,0x000003f4,0x0004003d,0x000000a2,0x000008bb,0x000008ba,0x000400a8, - 0x000000a2,0x000008bc,0x000008bb,0x000200f9,0x000008b9,0x000200f8,0x000008b9,0x000700f5, - 0x000000a2,0x000008bd,0x000008b7,0x00000140,0x000008bc,0x000008b8,0x000300f7,0x000008bf, - 0x00000000,0x000400fa,0x000008bd,0x000008be,0x000008bf,0x000200f8,0x000008be,0x0004003d, - 0x000000fb,0x000008c0,0x000008ab,0x0004003d,0x000000fc,0x000008c2,0x000008ac,0x0003003e, - 0x000008c1,0x000008c2,0x00060039,0x00000002,0x000008c3,0x00000124,0x000008c0,0x000008c1, - 0x0004003d,0x000000fc,0x000008c4,0x000008c1,0x0003003e,0x000008ac,0x000008c4,0x000200f9, - 0x000008bf,0x000200f8,0x000008bf,0x0004003d,0x000000fb,0x000008c6,0x000008ab,0x0003003e, - 0x000008c5,0x000008c6,0x0004003d,0x000000fc,0x000008c8,0x000008ac,0x0003003e,0x000008c7, - 0x000008c8,0x00060039,0x00000002,0x000008c9,0x00000131,0x000008c5,0x000008c7,0x0004003d, - 0x000000fc,0x000008ca,0x000008c7,0x0003003e,0x000008ac,0x000008ca,0x0004003d,0x000000fb, - 0x000008cb,0x000008ab,0x0004003d,0x000000fc,0x000008cd,0x000008ac,0x0003003e,0x000008cc, - 0x000008cd,0x00060039,0x00000002,0x000008ce,0x00000135,0x000008cb,0x000008cc,0x0004003d, - 0x000000fc,0x000008cf,0x000008cc,0x0003003e,0x000008ac,0x000008cf,0x0004003d,0x000000fb, - 0x000008d0,0x000008ab,0x0004003d,0x000000fc,0x000008d2,0x000008ac,0x0003003e,0x000008d1, - 0x000008d2,0x00060039,0x00000002,0x000008d3,0x00000109,0x000008d0,0x000008d1,0x0004003d, - 0x000000fc,0x000008d4,0x000008d1,0x0003003e,0x000008ac,0x000008d4,0x0004003d,0x000000fb, - 0x000008d5,0x000008ab,0x0004003d,0x000000fc,0x000008d7,0x000008ac,0x0003003e,0x000008d6, - 0x000008d7,0x00060039,0x00000002,0x000008d8,0x0000012c,0x000008d5,0x000008d6,0x0004003d, - 0x000000fc,0x000008d9,0x000008d6,0x0003003e,0x000008ac,0x000008d9,0x0004003d,0x000000fb, - 0x000008da,0x000008ab,0x0004003d,0x000000fc,0x000008dc,0x000008ac,0x0003003e,0x000008db, - 0x000008dc,0x00060039,0x00000002,0x000008dd,0x00000128,0x000008da,0x000008db,0x0004003d, - 0x000000fc,0x000008de,0x000008db,0x0003003e,0x000008ac,0x000008de,0x00040039,0x00000006, - 0x000008df,0x00000091,0x00050041,0x0000000f,0x000008e0,0x000008ac,0x000001a2,0x0004003d, - 0x0000000e,0x000008e1,0x000008e0,0x00060050,0x0000000e,0x000008e2,0x000008df,0x000008df, - 0x000008df,0x00050088,0x0000000e,0x000008e3,0x000008e1,0x000008e2,0x00050041,0x0000000f, - 0x000008e4,0x000008ac,0x000001a2,0x0003003e,0x000008e4,0x000008e3,0x00050041,0x0000000f, - 0x000008e6,0x000008ac,0x000001a2,0x0004003d,0x0000000e,0x000008e7,0x000008e6,0x0003003e, - 0x000008e5,0x000008e7,0x0003003e,0x000008e8,0x00000487,0x00060039,0x0000000e,0x000008e9, - 0x00000047,0x000008e5,0x000008e8,0x00050041,0x0000000f,0x000008ea,0x000008ac,0x000001a2, - 0x0003003e,0x000008ea,0x000008e9,0x00050041,0x0000000f,0x000008eb,0x000008ac,0x000001a2, - 0x0004003d,0x0000000e,0x000008ec,0x000008eb,0x00050041,0x00000007,0x000008ed,0x000008ac, - 0x000003cc,0x0004003d,0x00000006,0x000008ee,0x000008ed,0x00050051,0x00000006,0x000008ef, - 0x000008ec,0x00000000,0x00050051,0x00000006,0x000008f0,0x000008ec,0x00000001,0x00050051, - 0x00000006,0x000008f1,0x000008ec,0x00000002,0x00070050,0x0000002f,0x000008f2,0x000008ef, - 0x000008f0,0x000008f1,0x000008ee,0x0004003d,0x00000055,0x000008f4,0x0000013e,0x0003003e, - 0x000008f3,0x000008f4,0x0003003e,0x000008f5,0x000008f2,0x00060039,0x00000002,0x000008f6, - 0x00000079,0x000008f3,0x000008f5,0x0004003d,0x00000055,0x000008f8,0x0000013e,0x0003003e, - 0x000008f7,0x000008f8,0x0003003e,0x000008f9,0x0000014f,0x00060039,0x00000002,0x000008fa, - 0x0000008b,0x000008f7,0x000008f9,0x000100fd,0x00010038 + 0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x0000002f,0x00040020,0x000000e0,0x00000007, + 0x000000df,0x00050021,0x000000e1,0x0000002f,0x000000e0,0x0000001b,0x00050021,0x000000eb, + 0x00000002,0x0000009b,0x0000000f,0x00050021,0x000000f0,0x00000006,0x0000001b,0x00000007, + 0x0011001e,0x000000f5,0x00000055,0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x0000001a, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x000000a2, + 0x000000a2,0x0009001e,0x000000f6,0x0000009a,0x0000000e,0x00000006,0x0000000e,0x00000006, + 0x00000006,0x00000006,0x00040020,0x000000f7,0x00000007,0x000000f6,0x00050021,0x000000f8, + 0x00000006,0x000000f5,0x000000f7,0x00050021,0x00000100,0x00000002,0x000000f5,0x000000f7, + 0x00050021,0x00000108,0x000000df,0x0000006d,0x0000006d,0x00050021,0x0000010d,0x0000002f, + 0x0000001b,0x0000006d,0x00050021,0x00000112,0x0000001a,0x0000006d,0x0000001b,0x00040020, + 0x00000117,0x00000007,0x000000f5,0x00040021,0x00000118,0x00000002,0x00000117,0x00050021, + 0x00000128,0x00000002,0x00000117,0x000000f7,0x00060021,0x00000131,0x00000002,0x0000006d, + 0x00000117,0x000000f7,0x00040021,0x00000137,0x00000002,0x0000006d,0x0004002b,0x00000006, + 0x00000149,0x00000000,0x0004002b,0x00000006,0x0000014a,0x3f800000,0x0019001e,0x00000189, + 0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x00000055,0x0000002f,0x0000001a, + 0x0000001a,0x0000001a,0x0000001a,0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020, + 0x0000018a,0x00000002,0x00000189,0x0004003b,0x0000018a,0x0000018b,0x00000002,0x0004002b, + 0x00000036,0x0000018c,0x00000000,0x00040020,0x0000018d,0x00000002,0x00000055,0x0004002b, + 0x00000036,0x00000192,0x00000004,0x0004002b,0x00000036,0x00000197,0x00000002,0x0004002b, + 0x00000036,0x0000019c,0x00000003,0x0004002b,0x00000036,0x000001a1,0x00000007,0x00040020, + 0x000001a2,0x00000002,0x0000001a,0x0004002b,0x00000036,0x000001a7,0x0000000a,0x0004002b, + 0x00000036,0x000001ac,0x0000000d,0x00040020,0x000001ad,0x00000002,0x00000006,0x0004002b, + 0x00000036,0x000001b2,0x0000000f,0x0004002b,0x00000036,0x000001b7,0x00000011,0x0004002b, + 0x00000036,0x000001bc,0x00000012,0x00090019,0x000001c1,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000001,0x00000000,0x00040020,0x000001c2,0x00000000,0x000001c1, + 0x0004003b,0x000001c2,0x000001c3,0x00000000,0x0004003b,0x000001c2,0x000001ca,0x00000000, + 0x00090019,0x000001d0,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, + 0x00000002,0x00040020,0x000001d1,0x00000000,0x000001d0,0x0004003b,0x000001d1,0x000001d2, + 0x00000000,0x0004003b,0x000001c2,0x000001d6,0x00000000,0x0002001a,0x000001dc,0x00040020, + 0x000001dd,0x00000000,0x000001dc,0x0004003b,0x000001dd,0x000001de,0x00000000,0x0003001b, + 0x000001e0,0x000001c1,0x00040015,0x000001e4,0x00000020,0x00000000,0x0004002b,0x000001e4, + 0x000001e5,0x00000000,0x0004003b,0x000001c2,0x000001e9,0x00000000,0x00090019,0x000001f2, + 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x0000000f,0x00040020, + 0x000001f3,0x00000000,0x000001f2,0x0004003b,0x000001f3,0x000001f4,0x00000000,0x0004003b, + 0x000001c2,0x000001ff,0x00000000,0x0004003b,0x000001c2,0x00000207,0x00000000,0x0005002c, + 0x00000055,0x00000209,0x0000018c,0x0000018c,0x0004003b,0x000001c2,0x00000213,0x00000000, + 0x0004002b,0x00000006,0x0000021c,0x45700000,0x0004002b,0x00000006,0x0000021d,0x45070000, + 0x0005002c,0x0000001a,0x0000021e,0x0000021c,0x0000021d,0x0004002b,0x00000036,0x00000229, + 0x00000001,0x0004002b,0x00000006,0x00000256,0x00800000,0x0004002b,0x000001e4,0x0000027e, + 0x00000001,0x0004002b,0x000001e4,0x00000282,0x00000002,0x0004002b,0x00000006,0x00000298, + 0x3e800000,0x0004002b,0x00000006,0x0000029c,0x3f000000,0x0004002b,0x00000006,0x000002ac, + 0xbe800000,0x0005002c,0x0000001a,0x000002f8,0x0000029c,0x0000029c,0x00040017,0x0000030c, + 0x000001e4,0x00000002,0x00040017,0x00000310,0x000000a2,0x00000002,0x0004002b,0x00000006, + 0x00000317,0x387fda40,0x0004002b,0x00000006,0x0000031d,0x40490fdb,0x0004002b,0x00000006, + 0x00000324,0x3fc90fdb,0x0004002b,0x00000006,0x00000331,0x40000000,0x0004002b,0x00000006, + 0x0000033b,0x3ecccccd,0x0004002b,0x00000006,0x00000343,0x3fc80000,0x0004002b,0x00000006, + 0x00000348,0x3f100000,0x0004002b,0x00000006,0x00000350,0x40800000,0x0004002b,0x00000006, + 0x0000035b,0xbf800000,0x0004002b,0x00000006,0x00000361,0x80000000,0x0004002b,0x00000036, + 0x0000039c,0x00000005,0x0004002b,0x00000036,0x0000039d,0x00000006,0x0004002b,0x00000036, + 0x000003af,0x00000008,0x0004002b,0x00000036,0x000003b0,0x00000009,0x0004002b,0x00000036, + 0x000003b1,0x0000000b,0x0004002b,0x00000036,0x000003c3,0x0000000c,0x0004002b,0x00000036, + 0x000003c4,0x0000000e,0x0004002b,0x000001e4,0x000003e2,0x00000004,0x0004001c,0x000003e3, + 0x0000002f,0x000003e2,0x00040020,0x000003e4,0x00000007,0x000003e3,0x0004002b,0x00000006, + 0x0000044f,0x3ffeb852,0x0006002c,0x0000000e,0x00000457,0x00000149,0x00000149,0x00000149, + 0x0004002b,0x00000036,0x00000483,0xfffffffe,0x0004002b,0x00000036,0x00000484,0xffffffff, + 0x0004002b,0x000001e4,0x000004d2,0x00000009,0x0004001c,0x000004d3,0x0000000e,0x000004d2, + 0x00040020,0x000004d4,0x00000007,0x000004d3,0x0004002b,0x00000006,0x000004e9,0x3e99999a, + 0x0004002b,0x00000006,0x000004f6,0x40a00000,0x0004002b,0x00000006,0x00000561,0xc0133333, + 0x0004002b,0x00000006,0x00000599,0x3d3d70a4,0x0005002c,0x00000055,0x000005b5,0x00000484, + 0x00000484,0x0005002c,0x00000055,0x000005bf,0x0000018c,0x00000484,0x0005002c,0x00000055, + 0x000005c9,0x00000229,0x00000484,0x0005002c,0x00000055,0x000005d3,0x00000197,0x00000484, + 0x0005002c,0x00000055,0x000005dd,0x00000484,0x0000018c,0x0005002c,0x00000055,0x000005f0, + 0x00000229,0x0000018c,0x0005002c,0x00000055,0x000005fa,0x00000197,0x0000018c,0x0005002c, + 0x00000055,0x00000604,0x00000484,0x00000229,0x0005002c,0x00000055,0x0000060e,0x0000018c, + 0x00000229,0x0005002c,0x00000055,0x00000618,0x00000229,0x00000229,0x0005002c,0x00000055, + 0x00000622,0x00000197,0x00000229,0x0005002c,0x00000055,0x0000062c,0x00000484,0x00000197, + 0x0005002c,0x00000055,0x00000636,0x0000018c,0x00000197,0x0005002c,0x00000055,0x00000640, + 0x00000229,0x00000197,0x0005002c,0x00000055,0x0000064a,0x00000197,0x00000197,0x0004002b, + 0x000001e4,0x000006ba,0x00000003,0x0004002b,0x00000006,0x000006e8,0x41a00000,0x0004002b, + 0x00000006,0x000006ed,0x3f400000,0x0004002b,0x00000006,0x00000710,0x40400000,0x0004002b, + 0x00000006,0x00000719,0x3fd9999a,0x0006002c,0x0000000e,0x0000071a,0x00000719,0x0000014a, + 0x0000014a,0x0004002b,0x00000006,0x0000071f,0x340018ef,0x0006002c,0x0000000e,0x00000720, + 0x0000071f,0x0000071f,0x0000071f,0x0003002a,0x000000a2,0x00000755,0x0004002b,0x00000006, + 0x00000798,0x3dcccccd,0x00030029,0x000000a2,0x000007af,0x0004002b,0x00000006,0x000007b8, + 0x3e19999a,0x0004002b,0x00000006,0x00000838,0x42c80000,0x00040017,0x00000897,0x000001e4, + 0x00000003,0x00040020,0x00000898,0x00000001,0x00000897,0x0004003b,0x00000898,0x00000899, + 0x00000001,0x0004002b,0x00000006,0x0000089f,0x477fe000,0x0004002b,0x00000006,0x000008a0, + 0x37801002,0x0004003b,0x000001dd,0x000008a1,0x00000000,0x00090019,0x000008a2,0x00000006, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000000,0x00040020,0x000008a3, + 0x00000000,0x000008a2,0x0004003b,0x000008a3,0x000008a4,0x00000000,0x0004003b,0x000001c2, + 0x000008a5,0x00000000,0x0004003b,0x000001c2,0x000008a6,0x00000000,0x0004002b,0x00000006, + 0x000008a7,0x7f7fffff,0x0004002b,0x00000006,0x000008a8,0x3a1fe868,0x0004002b,0x00000006, + 0x000008a9,0x3d800000,0x0004002b,0x00000006,0x000008aa,0x3e400000,0x0004002b,0x00000006, + 0x000008ab,0x461c4000,0x0004002b,0x000001e4,0x000008ac,0x00000008,0x0006002c,0x00000897, + 0x000008ad,0x000008ac,0x000008ac,0x0000027e,0x00050036,0x00000002,0x00000004,0x00000000, + 0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000006d,0x0000089d,0x00000007,0x0004003d, + 0x00000897,0x0000089a,0x00000899,0x0007004f,0x0000030c,0x0000089b,0x0000089a,0x0000089a, + 0x00000000,0x00000001,0x0004007c,0x00000055,0x0000089c,0x0000089b,0x0003003e,0x0000089d, + 0x0000089c,0x00050039,0x00000002,0x0000089e,0x00000139,0x0000089d,0x000100fd,0x00010038, + 0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009, + 0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8,0x0000000d, + 0x0004003d,0x00000006,0x0000013b,0x00000009,0x0004003d,0x00000006,0x0000013c,0x0000000a, + 0x0004003d,0x00000006,0x0000013d,0x0000000b,0x0008000c,0x00000006,0x0000013e,0x00000001, + 0x0000002e,0x0000013b,0x0000013c,0x0000013d,0x000200fe,0x0000013e,0x00010038,0x00050036, + 0x0000000e,0x00000014,0x00000000,0x00000010,0x00030037,0x0000000f,0x00000011,0x00030037, + 0x0000000f,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8,0x00000015,0x0004003d, + 0x0000000e,0x00000141,0x00000011,0x0004003d,0x0000000e,0x00000142,0x00000012,0x0004003d, + 0x00000006,0x00000143,0x00000013,0x00060050,0x0000000e,0x00000144,0x00000143,0x00000143, + 0x00000143,0x0008000c,0x0000000e,0x00000145,0x00000001,0x0000002e,0x00000141,0x00000142, + 0x00000144,0x000200fe,0x00000145,0x00010038,0x00050036,0x00000006,0x00000018,0x00000000, + 0x00000016,0x00030037,0x00000007,0x00000017,0x000200f8,0x00000019,0x0004003d,0x00000006, + 0x00000148,0x00000017,0x0008000c,0x00000006,0x0000014b,0x00000001,0x0000002b,0x00000148, + 0x00000149,0x0000014a,0x000200fe,0x0000014b,0x00010038,0x00050036,0x0000001a,0x0000001e, + 0x00000000,0x0000001c,0x00030037,0x0000001b,0x0000001d,0x000200f8,0x0000001f,0x0004003d, + 0x0000001a,0x0000014e,0x0000001d,0x0006000c,0x0000001a,0x0000014f,0x00000001,0x0000000a, + 0x0000014e,0x000200fe,0x0000014f,0x00010038,0x00050036,0x00000006,0x00000023,0x00000000, + 0x00000020,0x00030037,0x00000007,0x00000021,0x00030037,0x00000007,0x00000022,0x000200f8, + 0x00000024,0x0004003d,0x00000006,0x00000152,0x00000021,0x0004003d,0x00000006,0x00000153, + 0x00000022,0x0007000c,0x00000006,0x00000154,0x00000001,0x00000025,0x00000152,0x00000153, + 0x000200fe,0x00000154,0x00010038,0x00050036,0x0000001a,0x00000028,0x00000000,0x00000025, + 0x00030037,0x0000001b,0x00000026,0x00030037,0x0000001b,0x00000027,0x000200f8,0x00000029, + 0x0004003d,0x0000001a,0x00000157,0x00000026,0x0004003d,0x0000001a,0x00000158,0x00000027, + 0x0007000c,0x0000001a,0x00000159,0x00000001,0x00000025,0x00000157,0x00000158,0x000200fe, + 0x00000159,0x00010038,0x00050036,0x0000000e,0x0000002d,0x00000000,0x0000002a,0x00030037, + 0x0000000f,0x0000002b,0x00030037,0x0000000f,0x0000002c,0x000200f8,0x0000002e,0x0004003d, + 0x0000000e,0x0000015c,0x0000002b,0x0004003d,0x0000000e,0x0000015d,0x0000002c,0x0007000c, + 0x0000000e,0x0000015e,0x00000001,0x00000025,0x0000015c,0x0000015d,0x000200fe,0x0000015e, + 0x00010038,0x00050036,0x0000002f,0x00000034,0x00000000,0x00000031,0x00030037,0x00000030, + 0x00000032,0x00030037,0x00000030,0x00000033,0x000200f8,0x00000035,0x0004003d,0x0000002f, + 0x00000161,0x00000032,0x0004003d,0x0000002f,0x00000162,0x00000033,0x0007000c,0x0000002f, + 0x00000163,0x00000001,0x00000025,0x00000161,0x00000162,0x000200fe,0x00000163,0x00010038, + 0x00050036,0x00000036,0x0000003b,0x00000000,0x00000038,0x00030037,0x00000037,0x00000039, + 0x00030037,0x00000037,0x0000003a,0x000200f8,0x0000003c,0x0004003d,0x00000036,0x00000166, + 0x00000039,0x0004003d,0x00000036,0x00000167,0x0000003a,0x0007000c,0x00000036,0x00000168, + 0x00000001,0x00000027,0x00000166,0x00000167,0x000200fe,0x00000168,0x00010038,0x00050036, + 0x00000006,0x0000003f,0x00000000,0x00000020,0x00030037,0x00000007,0x0000003d,0x00030037, + 0x00000007,0x0000003e,0x000200f8,0x00000040,0x0004003d,0x00000006,0x0000016b,0x0000003d, + 0x0004003d,0x00000006,0x0000016c,0x0000003e,0x0007000c,0x00000006,0x0000016d,0x00000001, + 0x00000028,0x0000016b,0x0000016c,0x000200fe,0x0000016d,0x00010038,0x00050036,0x0000001a, + 0x00000043,0x00000000,0x00000025,0x00030037,0x0000001b,0x00000041,0x00030037,0x0000001b, + 0x00000042,0x000200f8,0x00000044,0x0004003d,0x0000001a,0x00000170,0x00000041,0x0004003d, + 0x0000001a,0x00000171,0x00000042,0x0007000c,0x0000001a,0x00000172,0x00000001,0x00000028, + 0x00000170,0x00000171,0x000200fe,0x00000172,0x00010038,0x00050036,0x0000000e,0x00000047, + 0x00000000,0x0000002a,0x00030037,0x0000000f,0x00000045,0x00030037,0x0000000f,0x00000046, + 0x000200f8,0x00000048,0x0004003d,0x0000000e,0x00000175,0x00000045,0x0004003d,0x0000000e, + 0x00000176,0x00000046,0x0007000c,0x0000000e,0x00000177,0x00000001,0x00000028,0x00000175, + 0x00000176,0x000200fe,0x00000177,0x00010038,0x00050036,0x0000002f,0x0000004b,0x00000000, + 0x00000031,0x00030037,0x00000030,0x00000049,0x00030037,0x00000030,0x0000004a,0x000200f8, + 0x0000004c,0x0004003d,0x0000002f,0x0000017a,0x00000049,0x0004003d,0x0000002f,0x0000017b, + 0x0000004a,0x0007000c,0x0000002f,0x0000017c,0x00000001,0x00000028,0x0000017a,0x0000017b, + 0x000200fe,0x0000017c,0x00010038,0x00050036,0x00000036,0x0000004f,0x00000000,0x00000038, + 0x00030037,0x00000037,0x0000004d,0x00030037,0x00000037,0x0000004e,0x000200f8,0x00000050, + 0x0004003d,0x00000036,0x0000017f,0x0000004d,0x0004003d,0x00000036,0x00000180,0x0000004e, + 0x0007000c,0x00000036,0x00000181,0x00000001,0x0000002a,0x0000017f,0x00000180,0x000200fe, + 0x00000181,0x00010038,0x00050036,0x00000006,0x00000053,0x00000000,0x00000020,0x00030037, + 0x00000007,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8,0x00000054,0x0004003d, + 0x00000006,0x00000184,0x00000051,0x0004003d,0x00000006,0x00000185,0x00000052,0x0007000c, + 0x00000006,0x00000186,0x00000001,0x0000001a,0x00000184,0x00000185,0x000200fe,0x00000186, + 0x00010038,0x00050036,0x00000055,0x00000057,0x00000000,0x00000056,0x000200f8,0x00000058, + 0x00050041,0x0000018d,0x0000018e,0x0000018b,0x0000018c,0x0004003d,0x00000055,0x0000018f, + 0x0000018e,0x000200fe,0x0000018f,0x00010038,0x00050036,0x00000055,0x00000059,0x00000000, + 0x00000056,0x000200f8,0x0000005a,0x00050041,0x0000018d,0x00000193,0x0000018b,0x00000192, + 0x0004003d,0x00000055,0x00000194,0x00000193,0x000200fe,0x00000194,0x00010038,0x00050036, + 0x00000055,0x0000005b,0x00000000,0x00000056,0x000200f8,0x0000005c,0x00050041,0x0000018d, + 0x00000198,0x0000018b,0x00000197,0x0004003d,0x00000055,0x00000199,0x00000198,0x000200fe, + 0x00000199,0x00010038,0x00050036,0x00000055,0x0000005d,0x00000000,0x00000056,0x000200f8, + 0x0000005e,0x00050041,0x0000018d,0x0000019d,0x0000018b,0x0000019c,0x0004003d,0x00000055, + 0x0000019e,0x0000019d,0x000200fe,0x0000019e,0x00010038,0x00050036,0x0000001a,0x00000060, + 0x00000000,0x0000005f,0x000200f8,0x00000061,0x00050041,0x000001a2,0x000001a3,0x0000018b, + 0x000001a1,0x0004003d,0x0000001a,0x000001a4,0x000001a3,0x000200fe,0x000001a4,0x00010038, + 0x00050036,0x0000001a,0x00000062,0x00000000,0x0000005f,0x000200f8,0x00000063,0x00050041, + 0x000001a2,0x000001a8,0x0000018b,0x000001a7,0x0004003d,0x0000001a,0x000001a9,0x000001a8, + 0x000200fe,0x000001a9,0x00010038,0x00050036,0x00000006,0x00000065,0x00000000,0x00000064, + 0x000200f8,0x00000066,0x00050041,0x000001ad,0x000001ae,0x0000018b,0x000001ac,0x0004003d, + 0x00000006,0x000001af,0x000001ae,0x000200fe,0x000001af,0x00010038,0x00050036,0x00000006, + 0x00000067,0x00000000,0x00000064,0x000200f8,0x00000068,0x00050041,0x000001ad,0x000001b3, + 0x0000018b,0x000001b2,0x0004003d,0x00000006,0x000001b4,0x000001b3,0x000200fe,0x000001b4, + 0x00010038,0x00050036,0x00000006,0x00000069,0x00000000,0x00000064,0x000200f8,0x0000006a, + 0x00050041,0x000001ad,0x000001b8,0x0000018b,0x000001b7,0x0004003d,0x00000006,0x000001b9, + 0x000001b8,0x000200fe,0x000001b9,0x00010038,0x00050036,0x00000006,0x0000006b,0x00000000, + 0x00000064,0x000200f8,0x0000006c,0x00050041,0x000001ad,0x000001bd,0x0000018b,0x000001bc, + 0x0004003d,0x00000006,0x000001be,0x000001bd,0x000200fe,0x000001be,0x00010038,0x00050036, + 0x0000000e,0x00000070,0x00000000,0x0000006e,0x00030037,0x0000006d,0x0000006f,0x000200f8, + 0x00000071,0x0004003d,0x000001c1,0x000001c4,0x000001c3,0x0004003d,0x00000055,0x000001c5, + 0x0000006f,0x0007005f,0x0000002f,0x000001c6,0x000001c4,0x000001c5,0x00000002,0x0000018c, + 0x0008004f,0x0000000e,0x000001c7,0x000001c6,0x000001c6,0x00000000,0x00000001,0x00000002, + 0x000200fe,0x000001c7,0x00010038,0x00050036,0x0000002f,0x00000074,0x00000000,0x00000072, + 0x00030037,0x0000006d,0x00000073,0x000200f8,0x00000075,0x0004003d,0x000001c1,0x000001cb, + 0x000001ca,0x0004003d,0x00000055,0x000001cc,0x00000073,0x0007005f,0x0000002f,0x000001cd, + 0x000001cb,0x000001cc,0x00000002,0x0000018c,0x000200fe,0x000001cd,0x00010038,0x00050036, + 0x00000002,0x00000079,0x00000000,0x00000076,0x00030037,0x0000006d,0x00000077,0x00030037, + 0x00000030,0x00000078,0x000200f8,0x0000007a,0x0004003d,0x000001d0,0x000001d3,0x000001d2, + 0x0004003d,0x00000055,0x000001d4,0x00000077,0x0004003d,0x0000002f,0x000001d5,0x00000078, + 0x00040063,0x000001d3,0x000001d4,0x000001d5,0x000100fd,0x00010038,0x00050036,0x00000055, + 0x0000007b,0x00000000,0x00000056,0x000200f8,0x0000007c,0x0004003d,0x000001c1,0x000001d7, + 0x000001d6,0x00050067,0x00000055,0x000001d8,0x000001d7,0x0000018c,0x000200fe,0x000001d8, + 0x00010038,0x00050036,0x00000006,0x0000007f,0x00000000,0x0000007d,0x00030037,0x0000001b, + 0x0000007e,0x000200f8,0x00000080,0x0004003d,0x000001c1,0x000001db,0x000001d6,0x0004003d, + 0x000001dc,0x000001df,0x000001de,0x00050056,0x000001e0,0x000001e1,0x000001db,0x000001df, + 0x0004003d,0x0000001a,0x000001e2,0x0000007e,0x00070058,0x0000002f,0x000001e3,0x000001e1, + 0x000001e2,0x00000002,0x00000149,0x00050051,0x00000006,0x000001e6,0x000001e3,0x00000000, + 0x000200fe,0x000001e6,0x00010038,0x00050036,0x00000006,0x00000082,0x00000000,0x0000007d, + 0x00030037,0x0000001b,0x00000081,0x000200f8,0x00000083,0x0004003d,0x000001c1,0x000001ea, + 0x000001e9,0x0004003d,0x000001dc,0x000001eb,0x000001de,0x00050056,0x000001e0,0x000001ec, + 0x000001ea,0x000001eb,0x0004003d,0x0000001a,0x000001ed,0x00000081,0x00070058,0x0000002f, + 0x000001ee,0x000001ec,0x000001ed,0x00000002,0x00000149,0x00050051,0x00000006,0x000001ef, + 0x000001ee,0x00000000,0x000200fe,0x000001ef,0x00010038,0x00050036,0x00000006,0x00000086, + 0x00000000,0x00000084,0x00030037,0x0000006d,0x00000085,0x000200f8,0x00000087,0x0004003d, + 0x000001f2,0x000001f5,0x000001f4,0x0004003d,0x00000055,0x000001f6,0x00000085,0x00050062, + 0x0000002f,0x000001f7,0x000001f5,0x000001f6,0x00050051,0x00000006,0x000001f8,0x000001f7, + 0x00000000,0x000200fe,0x000001f8,0x00010038,0x00050036,0x00000002,0x0000008b,0x00000000, + 0x00000088,0x00030037,0x0000006d,0x00000089,0x00030037,0x00000007,0x0000008a,0x000200f8, + 0x0000008c,0x0004003d,0x000001f2,0x000001fb,0x000001f4,0x0004003d,0x00000055,0x000001fc, + 0x00000089,0x0004003d,0x00000006,0x000001fd,0x0000008a,0x00070050,0x0000002f,0x000001fe, + 0x000001fd,0x00000149,0x00000149,0x00000149,0x00040063,0x000001fb,0x000001fc,0x000001fe, + 0x000100fd,0x00010038,0x00050036,0x0000001a,0x0000008f,0x00000000,0x0000008d,0x00030037, + 0x0000006d,0x0000008e,0x000200f8,0x00000090,0x0004003d,0x000001c1,0x00000200,0x000001ff, + 0x0004003d,0x00000055,0x00000201,0x0000008e,0x0007005f,0x0000002f,0x00000202,0x00000200, + 0x00000201,0x00000002,0x0000018c,0x0007004f,0x0000001a,0x00000203,0x00000202,0x00000202, + 0x00000000,0x00000001,0x000200fe,0x00000203,0x00010038,0x00050036,0x00000006,0x00000091, + 0x00000000,0x00000064,0x000200f8,0x00000092,0x0004003b,0x00000007,0x00000206,0x00000007, + 0x0004003d,0x000001c1,0x00000208,0x00000207,0x0007005f,0x0000002f,0x0000020a,0x00000208, + 0x00000209,0x00000002,0x0000018c,0x00050051,0x00000006,0x0000020b,0x0000020a,0x00000000, + 0x0003003e,0x00000206,0x0000020b,0x0004003d,0x00000006,0x0000020c,0x00000206,0x000500b4, + 0x000000a2,0x0000020d,0x0000020c,0x00000149,0x000300f7,0x0000020f,0x00000000,0x000400fa, + 0x0000020d,0x0000020e,0x0000020f,0x000200f8,0x0000020e,0x0003003e,0x00000206,0x0000014a, + 0x000200f9,0x0000020f,0x000200f8,0x0000020f,0x0004003d,0x00000006,0x00000210,0x00000206, + 0x000200fe,0x00000210,0x00010038,0x00050036,0x0000002f,0x00000095,0x00000000,0x00000093, + 0x00030037,0x0000001b,0x00000094,0x000200f8,0x00000096,0x0004003d,0x000001c1,0x00000214, + 0x00000213,0x0004003d,0x000001dc,0x00000215,0x000001de,0x00050056,0x000001e0,0x00000216, + 0x00000214,0x00000215,0x0004003d,0x0000001a,0x00000217,0x00000094,0x00070058,0x0000002f, + 0x00000218,0x00000216,0x00000217,0x00000002,0x00000149,0x000200fe,0x00000218,0x00010038, + 0x00050036,0x00000006,0x00000098,0x00000000,0x0000007d,0x00030037,0x0000001b,0x00000097, + 0x000200f8,0x00000099,0x0004003d,0x0000001a,0x0000021b,0x00000097,0x00050085,0x0000001a, + 0x0000021f,0x0000021b,0x0000021e,0x0006000c,0x00000006,0x00000220,0x00000001,0x00000042, + 0x0000021f,0x000200fe,0x00000220,0x00010038,0x00050036,0x00000002,0x000000a0,0x00000000, + 0x0000009c,0x00030037,0x0000009b,0x0000009d,0x00030037,0x0000000e,0x0000009e,0x00030037, + 0x00000006,0x0000009f,0x000200f8,0x000000a1,0x0004003b,0x0000000f,0x00000225,0x00000007, + 0x00050041,0x0000000f,0x00000223,0x0000009d,0x00000197,0x0003003e,0x00000223,0x0000009e, + 0x00050041,0x0000000f,0x00000224,0x0000009d,0x0000019c,0x0003003e,0x00000224,0x0000009e, + 0x0005008e,0x0000000e,0x00000226,0x0000009e,0x0000009f,0x0003003e,0x00000225,0x00000226, + 0x0004003d,0x0000000e,0x00000227,0x00000225,0x00050041,0x0000000f,0x00000228,0x0000009d, + 0x0000018c,0x0003003e,0x00000228,0x00000227,0x0004003d,0x0000000e,0x0000022a,0x00000225, + 0x00050085,0x0000000e,0x0000022b,0x0000009e,0x0000022a,0x00050041,0x0000000f,0x0000022c, + 0x0000009d,0x00000229,0x0003003e,0x0000022c,0x0000022b,0x00050041,0x00000007,0x0000022d, + 0x0000009d,0x00000192,0x0003003e,0x0000022d,0x0000009f,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x000000a9,0x00000000,0x000000a4,0x00030037,0x000000a3,0x000000a5,0x00030037, + 0x0000009b,0x000000a6,0x00030037,0x0000000e,0x000000a7,0x00030037,0x00000006,0x000000a8, + 0x000200f8,0x000000aa,0x0004003b,0x0000009b,0x00000231,0x00000007,0x0004003b,0x0000000f, + 0x00000236,0x00000007,0x0004003b,0x0000000f,0x00000239,0x00000007,0x0004003b,0x0000000f, + 0x0000023c,0x00000007,0x0004003b,0x0000000f,0x0000023f,0x00000007,0x0004003b,0x0000000f, + 0x00000242,0x00000007,0x0004003d,0x000000a2,0x0000022e,0x000000a5,0x000300f7,0x00000230, + 0x00000000,0x000400fa,0x0000022e,0x0000022f,0x00000235,0x000200f8,0x0000022f,0x0004003d, + 0x0000009a,0x00000232,0x000000a6,0x0003003e,0x00000231,0x00000232,0x00070039,0x00000002, + 0x00000233,0x000000a0,0x00000231,0x000000a7,0x000000a8,0x0004003d,0x0000009a,0x00000234, + 0x00000231,0x0003003e,0x000000a6,0x00000234,0x000200f9,0x00000230,0x000200f8,0x00000235, + 0x00050041,0x0000000f,0x00000237,0x000000a6,0x00000197,0x0004003d,0x0000000e,0x00000238, + 0x00000237,0x0003003e,0x00000236,0x00000238,0x0003003e,0x00000239,0x000000a7,0x00060039, + 0x0000000e,0x0000023a,0x0000002d,0x00000236,0x00000239,0x00050041,0x0000000f,0x0000023b, + 0x000000a6,0x00000197,0x0003003e,0x0000023b,0x0000023a,0x00050041,0x0000000f,0x0000023d, + 0x000000a6,0x0000019c,0x0004003d,0x0000000e,0x0000023e,0x0000023d,0x0003003e,0x0000023c, + 0x0000023e,0x0003003e,0x0000023f,0x000000a7,0x00060039,0x0000000e,0x00000240,0x00000047, + 0x0000023c,0x0000023f,0x00050041,0x0000000f,0x00000241,0x000000a6,0x0000019c,0x0003003e, + 0x00000241,0x00000240,0x0005008e,0x0000000e,0x00000243,0x000000a7,0x000000a8,0x0003003e, + 0x00000242,0x00000243,0x0004003d,0x0000000e,0x00000244,0x00000242,0x00050041,0x0000000f, + 0x00000245,0x000000a6,0x0000018c,0x0004003d,0x0000000e,0x00000246,0x00000245,0x00050081, + 0x0000000e,0x00000247,0x00000246,0x00000244,0x00050041,0x0000000f,0x00000248,0x000000a6, + 0x0000018c,0x0003003e,0x00000248,0x00000247,0x0004003d,0x0000000e,0x00000249,0x00000242, + 0x00050085,0x0000000e,0x0000024a,0x000000a7,0x00000249,0x00050041,0x0000000f,0x0000024b, + 0x000000a6,0x00000229,0x0004003d,0x0000000e,0x0000024c,0x0000024b,0x00050081,0x0000000e, + 0x0000024d,0x0000024c,0x0000024a,0x00050041,0x0000000f,0x0000024e,0x000000a6,0x00000229, + 0x0003003e,0x0000024e,0x0000024d,0x00050041,0x00000007,0x0000024f,0x000000a6,0x00000192, + 0x0004003d,0x00000006,0x00000250,0x0000024f,0x00050081,0x00000006,0x00000251,0x00000250, + 0x000000a8,0x00050041,0x00000007,0x00000252,0x000000a6,0x00000192,0x0003003e,0x00000252, + 0x00000251,0x000200f9,0x00000230,0x000200f8,0x00000230,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x000000ad,0x00000000,0x000000ab,0x00030037,0x0000009b,0x000000ac,0x000200f8, + 0x000000ae,0x0004003b,0x00000007,0x00000258,0x00000007,0x0004003b,0x0000000f,0x0000026e, + 0x00000007,0x00050041,0x00000007,0x00000253,0x000000ac,0x00000192,0x0004003d,0x00000006, + 0x00000254,0x00000253,0x0006000c,0x00000006,0x00000255,0x00000001,0x00000004,0x00000254, + 0x000500ba,0x000000a2,0x00000257,0x00000255,0x00000256,0x000300f7,0x0000025a,0x00000000, + 0x000400fa,0x00000257,0x00000259,0x0000025d,0x000200f8,0x00000259,0x00050041,0x00000007, + 0x0000025b,0x000000ac,0x00000192,0x0004003d,0x00000006,0x0000025c,0x0000025b,0x0003003e, + 0x00000258,0x0000025c,0x000200f9,0x0000025a,0x000200f8,0x0000025d,0x0003003e,0x00000258, + 0x0000014a,0x000200f9,0x0000025a,0x000200f8,0x0000025a,0x0004003d,0x00000006,0x0000025e, + 0x00000258,0x00050041,0x00000007,0x0000025f,0x000000ac,0x00000192,0x0003003e,0x0000025f, + 0x0000025e,0x00050041,0x00000007,0x00000260,0x000000ac,0x00000192,0x0004003d,0x00000006, + 0x00000261,0x00000260,0x00050041,0x0000000f,0x00000262,0x000000ac,0x0000018c,0x0004003d, + 0x0000000e,0x00000263,0x00000262,0x00060050,0x0000000e,0x00000264,0x00000261,0x00000261, + 0x00000261,0x00050088,0x0000000e,0x00000265,0x00000263,0x00000264,0x00050041,0x0000000f, + 0x00000266,0x000000ac,0x0000018c,0x0003003e,0x00000266,0x00000265,0x00050041,0x00000007, + 0x00000267,0x000000ac,0x00000192,0x0004003d,0x00000006,0x00000268,0x00000267,0x00050041, + 0x0000000f,0x00000269,0x000000ac,0x00000229,0x0004003d,0x0000000e,0x0000026a,0x00000269, + 0x00060050,0x0000000e,0x0000026b,0x00000268,0x00000268,0x00000268,0x00050088,0x0000000e, + 0x0000026c,0x0000026a,0x0000026b,0x00050041,0x0000000f,0x0000026d,0x000000ac,0x00000229, + 0x0003003e,0x0000026d,0x0000026c,0x00050041,0x0000000f,0x0000026f,0x000000ac,0x00000229, + 0x0004003d,0x0000000e,0x00000270,0x0000026f,0x00050041,0x0000000f,0x00000271,0x000000ac, + 0x0000018c,0x0004003d,0x0000000e,0x00000272,0x00000271,0x00050041,0x0000000f,0x00000273, + 0x000000ac,0x0000018c,0x0004003d,0x0000000e,0x00000274,0x00000273,0x00050085,0x0000000e, + 0x00000275,0x00000272,0x00000274,0x00050083,0x0000000e,0x00000276,0x00000270,0x00000275, + 0x0006000c,0x0000000e,0x00000277,0x00000001,0x00000004,0x00000276,0x0006000c,0x0000000e, + 0x00000278,0x00000001,0x0000001f,0x00000277,0x0003003e,0x0000026e,0x00000278,0x0004003d, + 0x0000000e,0x00000279,0x0000026e,0x00050041,0x0000000f,0x0000027a,0x000000ac,0x00000229, + 0x0003003e,0x0000027a,0x00000279,0x000100fd,0x00010038,0x00050036,0x0000000e,0x000000b1, + 0x00000000,0x000000af,0x00030037,0x0000000f,0x000000b0,0x000200f8,0x000000b2,0x0004003b, + 0x0000000f,0x0000027b,0x00000007,0x00050041,0x00000007,0x0000027c,0x000000b0,0x000001e5, + 0x0004003d,0x00000006,0x0000027d,0x0000027c,0x00050041,0x00000007,0x0000027f,0x000000b0, + 0x0000027e,0x0004003d,0x00000006,0x00000280,0x0000027f,0x00050081,0x00000006,0x00000281, + 0x0000027d,0x00000280,0x00050041,0x00000007,0x00000283,0x000000b0,0x00000282,0x0004003d, + 0x00000006,0x00000284,0x00000283,0x00050083,0x00000006,0x00000285,0x00000281,0x00000284, + 0x00050041,0x00000007,0x00000286,0x000000b0,0x000001e5,0x0004003d,0x00000006,0x00000287, + 0x00000286,0x00050041,0x00000007,0x00000288,0x000000b0,0x00000282,0x0004003d,0x00000006, + 0x00000289,0x00000288,0x00050081,0x00000006,0x0000028a,0x00000287,0x00000289,0x00050041, + 0x00000007,0x0000028b,0x000000b0,0x000001e5,0x0004003d,0x00000006,0x0000028c,0x0000028b, + 0x00050041,0x00000007,0x0000028d,0x000000b0,0x0000027e,0x0004003d,0x00000006,0x0000028e, + 0x0000028d,0x00050083,0x00000006,0x0000028f,0x0000028c,0x0000028e,0x00050041,0x00000007, + 0x00000290,0x000000b0,0x00000282,0x0004003d,0x00000006,0x00000291,0x00000290,0x00050083, + 0x00000006,0x00000292,0x0000028f,0x00000291,0x00060050,0x0000000e,0x00000293,0x00000285, + 0x0000028a,0x00000292,0x0003003e,0x0000027b,0x00000293,0x0004003d,0x0000000e,0x00000294, + 0x0000027b,0x000200fe,0x00000294,0x00010038,0x00050036,0x0000000e,0x000000b4,0x00000000, + 0x000000af,0x00030037,0x0000000f,0x000000b3,0x000200f8,0x000000b5,0x0004003b,0x0000000f, + 0x00000297,0x00000007,0x00050041,0x00000007,0x00000299,0x000000b3,0x000001e5,0x0004003d, + 0x00000006,0x0000029a,0x00000299,0x00050085,0x00000006,0x0000029b,0x00000298,0x0000029a, + 0x00050041,0x00000007,0x0000029d,0x000000b3,0x0000027e,0x0004003d,0x00000006,0x0000029e, + 0x0000029d,0x00050085,0x00000006,0x0000029f,0x0000029c,0x0000029e,0x00050081,0x00000006, + 0x000002a0,0x0000029b,0x0000029f,0x00050041,0x00000007,0x000002a1,0x000000b3,0x00000282, + 0x0004003d,0x00000006,0x000002a2,0x000002a1,0x00050085,0x00000006,0x000002a3,0x00000298, + 0x000002a2,0x00050081,0x00000006,0x000002a4,0x000002a0,0x000002a3,0x00050041,0x00000007, + 0x000002a5,0x000000b3,0x000001e5,0x0004003d,0x00000006,0x000002a6,0x000002a5,0x00050085, + 0x00000006,0x000002a7,0x0000029c,0x000002a6,0x00050041,0x00000007,0x000002a8,0x000000b3, + 0x00000282,0x0004003d,0x00000006,0x000002a9,0x000002a8,0x00050085,0x00000006,0x000002aa, + 0x0000029c,0x000002a9,0x00050083,0x00000006,0x000002ab,0x000002a7,0x000002aa,0x00050041, + 0x00000007,0x000002ad,0x000000b3,0x000001e5,0x0004003d,0x00000006,0x000002ae,0x000002ad, + 0x00050085,0x00000006,0x000002af,0x000002ac,0x000002ae,0x00050041,0x00000007,0x000002b0, + 0x000000b3,0x0000027e,0x0004003d,0x00000006,0x000002b1,0x000002b0,0x00050085,0x00000006, + 0x000002b2,0x0000029c,0x000002b1,0x00050081,0x00000006,0x000002b3,0x000002af,0x000002b2, + 0x00050041,0x00000007,0x000002b4,0x000000b3,0x00000282,0x0004003d,0x00000006,0x000002b5, + 0x000002b4,0x00050085,0x00000006,0x000002b6,0x00000298,0x000002b5,0x00050083,0x00000006, + 0x000002b7,0x000002b3,0x000002b6,0x00060050,0x0000000e,0x000002b8,0x000002a4,0x000002ab, + 0x000002b7,0x0003003e,0x00000297,0x000002b8,0x0004003d,0x0000000e,0x000002b9,0x00000297, + 0x000200fe,0x000002b9,0x00010038,0x00050036,0x000000a2,0x000000b8,0x00000000,0x000000b6, + 0x00030037,0x0000001b,0x000000b7,0x000200f8,0x000000b9,0x00050041,0x00000007,0x000002bc, + 0x000000b7,0x000001e5,0x0004003d,0x00000006,0x000002bd,0x000002bc,0x000500be,0x000000a2, + 0x000002be,0x000002bd,0x00000149,0x000300f7,0x000002c0,0x00000000,0x000400fa,0x000002be, + 0x000002bf,0x000002c0,0x000200f8,0x000002bf,0x00050041,0x00000007,0x000002c1,0x000000b7, + 0x000001e5,0x0004003d,0x00000006,0x000002c2,0x000002c1,0x000500bc,0x000000a2,0x000002c3, + 0x000002c2,0x0000014a,0x000200f9,0x000002c0,0x000200f8,0x000002c0,0x000700f5,0x000000a2, + 0x000002c4,0x000002be,0x000000b9,0x000002c3,0x000002bf,0x000300f7,0x000002c6,0x00000000, + 0x000400fa,0x000002c4,0x000002c5,0x000002c6,0x000200f8,0x000002c5,0x00050041,0x00000007, + 0x000002c7,0x000000b7,0x0000027e,0x0004003d,0x00000006,0x000002c8,0x000002c7,0x000500be, + 0x000000a2,0x000002c9,0x000002c8,0x00000149,0x000300f7,0x000002cb,0x00000000,0x000400fa, + 0x000002c9,0x000002ca,0x000002cb,0x000200f8,0x000002ca,0x00050041,0x00000007,0x000002cc, + 0x000000b7,0x0000027e,0x0004003d,0x00000006,0x000002cd,0x000002cc,0x000500bc,0x000000a2, + 0x000002ce,0x000002cd,0x0000014a,0x000200f9,0x000002cb,0x000200f8,0x000002cb,0x000700f5, + 0x000000a2,0x000002cf,0x000002c9,0x000002c5,0x000002ce,0x000002ca,0x000200f9,0x000002c6, + 0x000200f8,0x000002c6,0x000700f5,0x000000a2,0x000002d0,0x000002c4,0x000002c0,0x000002cf, + 0x000002cb,0x000200fe,0x000002d0,0x00010038,0x00050036,0x00000055,0x000000be,0x00000000, + 0x000000ba,0x00030037,0x0000006d,0x000000bb,0x00030037,0x0000006d,0x000000bc,0x00030037, + 0x0000006d,0x000000bd,0x000200f8,0x000000bf,0x0004003b,0x0000006d,0x000002d3,0x00000007, + 0x0004003b,0x00000037,0x000002da,0x00000007,0x0004003b,0x00000037,0x000002dd,0x00000007, + 0x0004003b,0x00000037,0x000002df,0x00000007,0x0004003b,0x00000037,0x000002e0,0x00000007, + 0x0004003b,0x00000037,0x000002e6,0x00000007,0x0004003b,0x00000037,0x000002e9,0x00000007, + 0x0004003b,0x00000037,0x000002eb,0x00000007,0x0004003b,0x00000037,0x000002ec,0x00000007, + 0x0004003d,0x00000055,0x000002d4,0x000000bb,0x0004003d,0x00000055,0x000002d5,0x000000bc, + 0x00050080,0x00000055,0x000002d6,0x000002d4,0x000002d5,0x0003003e,0x000002d3,0x000002d6, + 0x00050041,0x00000037,0x000002d7,0x000000bd,0x000001e5,0x0004003d,0x00000036,0x000002d8, + 0x000002d7,0x00050082,0x00000036,0x000002d9,0x000002d8,0x00000229,0x00050041,0x00000037, + 0x000002db,0x000002d3,0x000001e5,0x0004003d,0x00000036,0x000002dc,0x000002db,0x0003003e, + 0x000002da,0x000002dc,0x0003003e,0x000002dd,0x000002d9,0x00060039,0x00000036,0x000002de, + 0x0000003b,0x000002da,0x000002dd,0x0003003e,0x000002df,0x0000018c,0x0003003e,0x000002e0, + 0x000002de,0x00060039,0x00000036,0x000002e1,0x0000004f,0x000002df,0x000002e0,0x00050041, + 0x00000037,0x000002e2,0x000002d3,0x000001e5,0x0003003e,0x000002e2,0x000002e1,0x00050041, + 0x00000037,0x000002e3,0x000000bd,0x0000027e,0x0004003d,0x00000036,0x000002e4,0x000002e3, + 0x00050082,0x00000036,0x000002e5,0x000002e4,0x00000229,0x00050041,0x00000037,0x000002e7, + 0x000002d3,0x0000027e,0x0004003d,0x00000036,0x000002e8,0x000002e7,0x0003003e,0x000002e6, + 0x000002e8,0x0003003e,0x000002e9,0x000002e5,0x00060039,0x00000036,0x000002ea,0x0000003b, + 0x000002e6,0x000002e9,0x0003003e,0x000002eb,0x0000018c,0x0003003e,0x000002ec,0x000002ea, + 0x00060039,0x00000036,0x000002ed,0x0000004f,0x000002eb,0x000002ec,0x00050041,0x00000037, + 0x000002ee,0x000002d3,0x0000027e,0x0003003e,0x000002ee,0x000002ed,0x0004003d,0x00000055, + 0x000002ef,0x000002d3,0x000200fe,0x000002ef,0x00010038,0x00050036,0x0000001a,0x000000c4, + 0x00000000,0x000000c0,0x00030037,0x0000001b,0x000000c1,0x00030037,0x0000006d,0x000000c2, + 0x00030037,0x0000006d,0x000000c3,0x000200f8,0x000000c5,0x0004003b,0x0000001b,0x000002f2, + 0x00000007,0x0004003b,0x0000001b,0x000002f7,0x00000007,0x0004003b,0x0000001b,0x000002fc, + 0x00000007,0x0004003b,0x0000001b,0x000002fe,0x00000007,0x0004003b,0x0000001b,0x00000300, + 0x00000007,0x0004003b,0x0000001b,0x00000301,0x00000007,0x0004003b,0x0000001b,0x00000303, + 0x00000007,0x0004003d,0x0000001a,0x000002f3,0x000000c1,0x0004003d,0x00000055,0x000002f4, + 0x000000c2,0x0004006f,0x0000001a,0x000002f5,0x000002f4,0x00050085,0x0000001a,0x000002f6, + 0x000002f3,0x000002f5,0x0003003e,0x000002f2,0x000002f6,0x0004003d,0x00000055,0x000002f9, + 0x000000c2,0x0004006f,0x0000001a,0x000002fa,0x000002f9,0x00050083,0x0000001a,0x000002fb, + 0x000002fa,0x000002f8,0x0004003d,0x0000001a,0x000002fd,0x000002f2,0x0003003e,0x000002fc, + 0x000002fd,0x0003003e,0x000002fe,0x000002fb,0x00060039,0x0000001a,0x000002ff,0x00000028, + 0x000002fc,0x000002fe,0x0003003e,0x00000300,0x000002f8,0x0003003e,0x00000301,0x000002ff, + 0x00060039,0x0000001a,0x00000302,0x00000043,0x00000300,0x00000301,0x0003003e,0x000002f7, + 0x00000302,0x0004003d,0x0000001a,0x00000304,0x000002f7,0x0004003d,0x00000055,0x00000305, + 0x000000c3,0x0004006f,0x0000001a,0x00000306,0x00000305,0x00050088,0x0000001a,0x00000307, + 0x00000304,0x00000306,0x0003003e,0x00000303,0x00000307,0x0004003d,0x0000001a,0x00000308, + 0x00000303,0x000200fe,0x00000308,0x00010038,0x00050036,0x000000a2,0x000000c9,0x00000000, + 0x000000c6,0x00030037,0x0000006d,0x000000c7,0x00030037,0x0000006d,0x000000c8,0x000200f8, + 0x000000ca,0x0004003d,0x00000055,0x0000030b,0x000000c7,0x0004007c,0x0000030c,0x0000030d, + 0x0000030b,0x0004003d,0x00000055,0x0000030e,0x000000c8,0x0004007c,0x0000030c,0x0000030f, + 0x0000030e,0x000500b0,0x00000310,0x00000311,0x0000030d,0x0000030f,0x0004009b,0x000000a2, + 0x00000312,0x00000311,0x000200fe,0x00000312,0x00010038,0x00050036,0x00000006,0x000000cc, + 0x00000000,0x00000016,0x00030037,0x00000007,0x000000cb,0x000200f8,0x000000cd,0x0004003b, + 0x00000007,0x00000319,0x00000007,0x0004003d,0x00000006,0x00000315,0x000000cb,0x0006000c, + 0x00000006,0x00000316,0x00000001,0x00000004,0x00000315,0x000500b8,0x000000a2,0x00000318, + 0x00000316,0x00000317,0x000300f7,0x0000031b,0x00000000,0x000400fa,0x00000318,0x0000031a, + 0x0000031c,0x000200f8,0x0000031a,0x0003003e,0x00000319,0x0000014a,0x000200f9,0x0000031b, + 0x000200f8,0x0000031c,0x0004003d,0x00000006,0x0000031e,0x000000cb,0x00050085,0x00000006, + 0x0000031f,0x0000031d,0x0000031e,0x0006000c,0x00000006,0x00000320,0x00000001,0x0000000d, + 0x0000031f,0x0004003d,0x00000006,0x00000321,0x000000cb,0x00050085,0x00000006,0x00000322, + 0x0000031d,0x00000321,0x00050088,0x00000006,0x00000323,0x00000320,0x00000322,0x0004003d, + 0x00000006,0x00000325,0x000000cb,0x00050085,0x00000006,0x00000326,0x00000324,0x00000325, + 0x0006000c,0x00000006,0x00000327,0x00000001,0x0000000d,0x00000326,0x0004003d,0x00000006, + 0x00000328,0x000000cb,0x00050085,0x00000006,0x00000329,0x00000324,0x00000328,0x00050088, + 0x00000006,0x0000032a,0x00000327,0x00000329,0x00050085,0x00000006,0x0000032b,0x00000323, + 0x0000032a,0x0003003e,0x00000319,0x0000032b,0x000200f9,0x0000031b,0x000200f8,0x0000031b, + 0x0004003d,0x00000006,0x0000032c,0x00000319,0x000200fe,0x0000032c,0x00010038,0x00050036, + 0x00000006,0x000000cf,0x00000000,0x00000016,0x00030037,0x00000007,0x000000ce,0x000200f8, + 0x000000d0,0x0004003b,0x00000007,0x00000332,0x00000007,0x0004003b,0x00000007,0x00000333, + 0x00000007,0x0004003b,0x00000007,0x00000335,0x00000007,0x0004003d,0x00000006,0x0000032f, + 0x000000ce,0x0006000c,0x00000006,0x00000330,0x00000001,0x00000004,0x0000032f,0x0003003e, + 0x00000332,0x00000330,0x0003003e,0x00000333,0x00000331,0x00060039,0x00000006,0x00000334, + 0x00000023,0x00000332,0x00000333,0x0003003e,0x000000ce,0x00000334,0x0004003d,0x00000006, + 0x00000336,0x000000ce,0x0003003e,0x00000335,0x00000336,0x00050039,0x00000006,0x00000337, + 0x000000cc,0x00000335,0x000200fe,0x00000337,0x00010038,0x00050036,0x00000006,0x000000d2, + 0x00000000,0x00000016,0x00030037,0x00000007,0x000000d1,0x000200f8,0x000000d3,0x0004003b, + 0x00000007,0x0000033a,0x00000007,0x0004003b,0x00000007,0x0000033f,0x00000007,0x0004003d, + 0x00000006,0x0000033c,0x000000d1,0x00050085,0x00000006,0x0000033d,0x0000033b,0x0000033c, + 0x00050083,0x00000006,0x0000033e,0x0000033d,0x0000014a,0x0003003e,0x0000033a,0x0000033e, + 0x0004003d,0x00000006,0x00000340,0x000000d1,0x00050085,0x00000006,0x00000341,0x00000298, + 0x00000340,0x00050083,0x00000006,0x00000342,0x00000341,0x0000014a,0x0003003e,0x0000033f, + 0x00000342,0x0004003d,0x00000006,0x00000344,0x0000033a,0x00050085,0x00000006,0x00000345, + 0x00000343,0x00000344,0x0004003d,0x00000006,0x00000346,0x0000033a,0x00050085,0x00000006, + 0x00000347,0x00000345,0x00000346,0x00050083,0x00000006,0x00000349,0x00000347,0x00000348, + 0x0004003d,0x00000006,0x0000034a,0x0000033f,0x0004003d,0x00000006,0x0000034b,0x0000033f, + 0x00050085,0x00000006,0x0000034c,0x0000034a,0x0000034b,0x00050085,0x00000006,0x0000034d, + 0x00000349,0x0000034c,0x000200fe,0x0000034d,0x00010038,0x00050036,0x00000006,0x000000d5, + 0x00000000,0x00000016,0x00030037,0x00000007,0x000000d4,0x000200f8,0x000000d6,0x0004003b, + 0x00000007,0x00000351,0x00000007,0x0004003b,0x00000007,0x00000353,0x00000007,0x0004003b, + 0x00000007,0x00000355,0x00000007,0x0004003d,0x00000006,0x00000352,0x000000d4,0x0003003e, + 0x00000351,0x00000352,0x0003003e,0x00000353,0x00000350,0x00060039,0x00000006,0x00000354, + 0x00000023,0x00000351,0x00000353,0x0003003e,0x000000d4,0x00000354,0x0004003d,0x00000006, + 0x00000356,0x000000d4,0x0003003e,0x00000355,0x00000356,0x00050039,0x00000006,0x00000357, + 0x000000d2,0x00000355,0x000200fe,0x00000357,0x00010038,0x00050036,0x0000002f,0x000000dd, + 0x00000000,0x000000d7,0x00030037,0x00000030,0x000000d8,0x00030037,0x00000030,0x000000d9, + 0x00030037,0x00000030,0x000000da,0x00030037,0x00000030,0x000000db,0x00030037,0x00000007, + 0x000000dc,0x000200f8,0x000000de,0x0004003b,0x00000007,0x0000035a,0x00000007,0x0004003b, + 0x00000007,0x0000035e,0x00000007,0x0004003b,0x00000007,0x00000360,0x00000007,0x0004003b, + 0x00000007,0x00000364,0x00000007,0x0004003b,0x00000007,0x00000366,0x00000007,0x0004003b, + 0x00000007,0x00000369,0x00000007,0x0004003b,0x00000007,0x0000036b,0x00000007,0x0004003b, + 0x00000007,0x0000036e,0x00000007,0x0004003d,0x00000006,0x0000035c,0x000000dc,0x00050083, + 0x00000006,0x0000035d,0x0000035b,0x0000035c,0x0003003e,0x0000035e,0x0000035d,0x00050039, + 0x00000006,0x0000035f,0x000000cf,0x0000035e,0x0003003e,0x0000035a,0x0000035f,0x0004003d, + 0x00000006,0x00000362,0x000000dc,0x00050083,0x00000006,0x00000363,0x00000361,0x00000362, + 0x0003003e,0x00000364,0x00000363,0x00050039,0x00000006,0x00000365,0x000000cf,0x00000364, + 0x0003003e,0x00000360,0x00000365,0x0004003d,0x00000006,0x00000367,0x000000dc,0x00050083, + 0x00000006,0x00000368,0x0000014a,0x00000367,0x0003003e,0x00000369,0x00000368,0x00050039, + 0x00000006,0x0000036a,0x000000cf,0x00000369,0x0003003e,0x00000366,0x0000036a,0x0004003d, + 0x00000006,0x0000036c,0x000000dc,0x00050083,0x00000006,0x0000036d,0x00000331,0x0000036c, + 0x0003003e,0x0000036e,0x0000036d,0x00050039,0x00000006,0x0000036f,0x000000cf,0x0000036e, + 0x0003003e,0x0000036b,0x0000036f,0x0004003d,0x00000006,0x00000370,0x0000035a,0x0004003d, + 0x0000002f,0x00000371,0x000000d8,0x0005008e,0x0000002f,0x00000372,0x00000371,0x00000370, + 0x0004003d,0x00000006,0x00000373,0x00000360,0x0004003d,0x0000002f,0x00000374,0x000000d9, + 0x0005008e,0x0000002f,0x00000375,0x00000374,0x00000373,0x00050081,0x0000002f,0x00000376, + 0x00000372,0x00000375,0x0004003d,0x00000006,0x00000377,0x00000366,0x0004003d,0x0000002f, + 0x00000378,0x000000da,0x0005008e,0x0000002f,0x00000379,0x00000378,0x00000377,0x00050081, + 0x0000002f,0x0000037a,0x00000376,0x00000379,0x0004003d,0x00000006,0x0000037b,0x0000036b, + 0x0004003d,0x0000002f,0x0000037c,0x000000db,0x0005008e,0x0000002f,0x0000037d,0x0000037c, + 0x0000037b,0x00050081,0x0000002f,0x0000037e,0x0000037a,0x0000037d,0x0004003d,0x00000006, + 0x0000037f,0x0000035a,0x0004003d,0x00000006,0x00000380,0x00000360,0x00050081,0x00000006, + 0x00000381,0x0000037f,0x00000380,0x0004003d,0x00000006,0x00000382,0x00000366,0x00050081, + 0x00000006,0x00000383,0x00000381,0x00000382,0x0004003d,0x00000006,0x00000384,0x0000036b, + 0x00050081,0x00000006,0x00000385,0x00000383,0x00000384,0x00070050,0x0000002f,0x00000386, + 0x00000385,0x00000385,0x00000385,0x00000385,0x00050088,0x0000002f,0x00000387,0x0000037e, + 0x00000386,0x000200fe,0x00000387,0x00010038,0x00050036,0x0000002f,0x000000e4,0x00000000, + 0x000000e1,0x00030037,0x000000e0,0x000000e2,0x00030037,0x0000001b,0x000000e3,0x000200f8, + 0x000000e5,0x0004003b,0x00000030,0x0000038a,0x00000007,0x0004003b,0x00000030,0x0000038b, + 0x00000007,0x0004003b,0x00000030,0x0000038e,0x00000007,0x0004003b,0x00000030,0x00000391, + 0x00000007,0x0004003b,0x00000030,0x00000394,0x00000007,0x0004003b,0x00000007,0x00000397, + 0x00000007,0x0004003b,0x00000030,0x0000039b,0x00000007,0x0004003b,0x00000030,0x0000039e, + 0x00000007,0x0004003b,0x00000030,0x000003a1,0x00000007,0x0004003b,0x00000030,0x000003a4, + 0x00000007,0x0004003b,0x00000030,0x000003a7,0x00000007,0x0004003b,0x00000007,0x000003aa, + 0x00000007,0x0004003b,0x00000030,0x000003ae,0x00000007,0x0004003b,0x00000030,0x000003b2, + 0x00000007,0x0004003b,0x00000030,0x000003b5,0x00000007,0x0004003b,0x00000030,0x000003b8, + 0x00000007,0x0004003b,0x00000030,0x000003bb,0x00000007,0x0004003b,0x00000007,0x000003be, + 0x00000007,0x0004003b,0x00000030,0x000003c2,0x00000007,0x0004003b,0x00000030,0x000003c5, + 0x00000007,0x0004003b,0x00000030,0x000003c8,0x00000007,0x0004003b,0x00000030,0x000003cb, + 0x00000007,0x0004003b,0x00000030,0x000003ce,0x00000007,0x0004003b,0x00000007,0x000003d1, + 0x00000007,0x0004003b,0x00000030,0x000003d5,0x00000007,0x0004003b,0x00000030,0x000003d6, + 0x00000007,0x0004003b,0x00000030,0x000003d8,0x00000007,0x0004003b,0x00000030,0x000003da, + 0x00000007,0x0004003b,0x00000030,0x000003dc,0x00000007,0x0004003b,0x00000007,0x000003de, + 0x00000007,0x0004003b,0x000003e4,0x000003e5,0x00000007,0x0004003b,0x00000030,0x000003ef, + 0x00000007,0x0004003b,0x00000030,0x000003f2,0x00000007,0x0004003b,0x00000037,0x000003f5, + 0x00000007,0x0004003b,0x00000030,0x000003fe,0x00000007,0x0004003b,0x00000030,0x00000400, + 0x00000007,0x0004003b,0x00000030,0x00000405,0x00000007,0x0004003b,0x00000030,0x00000407, + 0x00000007,0x00050041,0x00000030,0x0000038c,0x000000e2,0x0000018c,0x0004003d,0x0000002f, + 0x0000038d,0x0000038c,0x0003003e,0x0000038b,0x0000038d,0x00050041,0x00000030,0x0000038f, + 0x000000e2,0x00000229,0x0004003d,0x0000002f,0x00000390,0x0000038f,0x0003003e,0x0000038e, + 0x00000390,0x00050041,0x00000030,0x00000392,0x000000e2,0x00000197,0x0004003d,0x0000002f, + 0x00000393,0x00000392,0x0003003e,0x00000391,0x00000393,0x00050041,0x00000030,0x00000395, + 0x000000e2,0x0000019c,0x0004003d,0x0000002f,0x00000396,0x00000395,0x0003003e,0x00000394, + 0x00000396,0x00050041,0x00000007,0x00000398,0x000000e3,0x000001e5,0x0004003d,0x00000006, + 0x00000399,0x00000398,0x0003003e,0x00000397,0x00000399,0x00090039,0x0000002f,0x0000039a, + 0x000000dd,0x0000038b,0x0000038e,0x00000391,0x00000394,0x00000397,0x0003003e,0x0000038a, + 0x0000039a,0x00050041,0x00000030,0x0000039f,0x000000e2,0x00000192,0x0004003d,0x0000002f, + 0x000003a0,0x0000039f,0x0003003e,0x0000039e,0x000003a0,0x00050041,0x00000030,0x000003a2, + 0x000000e2,0x0000039c,0x0004003d,0x0000002f,0x000003a3,0x000003a2,0x0003003e,0x000003a1, + 0x000003a3,0x00050041,0x00000030,0x000003a5,0x000000e2,0x0000039d,0x0004003d,0x0000002f, + 0x000003a6,0x000003a5,0x0003003e,0x000003a4,0x000003a6,0x00050041,0x00000030,0x000003a8, + 0x000000e2,0x000001a1,0x0004003d,0x0000002f,0x000003a9,0x000003a8,0x0003003e,0x000003a7, + 0x000003a9,0x00050041,0x00000007,0x000003ab,0x000000e3,0x000001e5,0x0004003d,0x00000006, + 0x000003ac,0x000003ab,0x0003003e,0x000003aa,0x000003ac,0x00090039,0x0000002f,0x000003ad, + 0x000000dd,0x0000039e,0x000003a1,0x000003a4,0x000003a7,0x000003aa,0x0003003e,0x0000039b, + 0x000003ad,0x00050041,0x00000030,0x000003b3,0x000000e2,0x000003af,0x0004003d,0x0000002f, + 0x000003b4,0x000003b3,0x0003003e,0x000003b2,0x000003b4,0x00050041,0x00000030,0x000003b6, + 0x000000e2,0x000003b0,0x0004003d,0x0000002f,0x000003b7,0x000003b6,0x0003003e,0x000003b5, + 0x000003b7,0x00050041,0x00000030,0x000003b9,0x000000e2,0x000001a7,0x0004003d,0x0000002f, + 0x000003ba,0x000003b9,0x0003003e,0x000003b8,0x000003ba,0x00050041,0x00000030,0x000003bc, + 0x000000e2,0x000003b1,0x0004003d,0x0000002f,0x000003bd,0x000003bc,0x0003003e,0x000003bb, + 0x000003bd,0x00050041,0x00000007,0x000003bf,0x000000e3,0x000001e5,0x0004003d,0x00000006, + 0x000003c0,0x000003bf,0x0003003e,0x000003be,0x000003c0,0x00090039,0x0000002f,0x000003c1, + 0x000000dd,0x000003b2,0x000003b5,0x000003b8,0x000003bb,0x000003be,0x0003003e,0x000003ae, + 0x000003c1,0x00050041,0x00000030,0x000003c6,0x000000e2,0x000003c3,0x0004003d,0x0000002f, + 0x000003c7,0x000003c6,0x0003003e,0x000003c5,0x000003c7,0x00050041,0x00000030,0x000003c9, + 0x000000e2,0x000001ac,0x0004003d,0x0000002f,0x000003ca,0x000003c9,0x0003003e,0x000003c8, + 0x000003ca,0x00050041,0x00000030,0x000003cc,0x000000e2,0x000003c4,0x0004003d,0x0000002f, + 0x000003cd,0x000003cc,0x0003003e,0x000003cb,0x000003cd,0x00050041,0x00000030,0x000003cf, + 0x000000e2,0x000001b2,0x0004003d,0x0000002f,0x000003d0,0x000003cf,0x0003003e,0x000003ce, + 0x000003d0,0x00050041,0x00000007,0x000003d2,0x000000e3,0x000001e5,0x0004003d,0x00000006, + 0x000003d3,0x000003d2,0x0003003e,0x000003d1,0x000003d3,0x00090039,0x0000002f,0x000003d4, + 0x000000dd,0x000003c5,0x000003c8,0x000003cb,0x000003ce,0x000003d1,0x0003003e,0x000003c2, + 0x000003d4,0x0004003d,0x0000002f,0x000003d7,0x0000038a,0x0003003e,0x000003d6,0x000003d7, + 0x0004003d,0x0000002f,0x000003d9,0x0000039b,0x0003003e,0x000003d8,0x000003d9,0x0004003d, + 0x0000002f,0x000003db,0x000003ae,0x0003003e,0x000003da,0x000003db,0x0004003d,0x0000002f, + 0x000003dd,0x000003c2,0x0003003e,0x000003dc,0x000003dd,0x00050041,0x00000007,0x000003df, + 0x000000e3,0x0000027e,0x0004003d,0x00000006,0x000003e0,0x000003df,0x0003003e,0x000003de, + 0x000003e0,0x00090039,0x0000002f,0x000003e1,0x000000dd,0x000003d6,0x000003d8,0x000003da, + 0x000003dc,0x000003de,0x0003003e,0x000003d5,0x000003e1,0x00050041,0x00000030,0x000003e6, + 0x000000e2,0x0000039c,0x0004003d,0x0000002f,0x000003e7,0x000003e6,0x00050041,0x00000030, + 0x000003e8,0x000000e2,0x0000039d,0x0004003d,0x0000002f,0x000003e9,0x000003e8,0x00050041, + 0x00000030,0x000003ea,0x000000e2,0x000003b0,0x0004003d,0x0000002f,0x000003eb,0x000003ea, + 0x00050041,0x00000030,0x000003ec,0x000000e2,0x000001a7,0x0004003d,0x0000002f,0x000003ed, + 0x000003ec,0x00070050,0x000003e3,0x000003ee,0x000003e7,0x000003e9,0x000003eb,0x000003ed, + 0x0003003e,0x000003e5,0x000003ee,0x00050041,0x00000030,0x000003f0,0x000003e5,0x0000018c, + 0x0004003d,0x0000002f,0x000003f1,0x000003f0,0x0003003e,0x000003ef,0x000003f1,0x00050041, + 0x00000030,0x000003f3,0x000003e5,0x0000018c,0x0004003d,0x0000002f,0x000003f4,0x000003f3, + 0x0003003e,0x000003f2,0x000003f4,0x0003003e,0x000003f5,0x00000229,0x000200f9,0x000003f6, + 0x000200f8,0x000003f6,0x000400f6,0x000003f8,0x000003f9,0x00000000,0x000200f9,0x000003fa, + 0x000200f8,0x000003fa,0x0004003d,0x00000036,0x000003fb,0x000003f5,0x000500b1,0x000000a2, + 0x000003fc,0x000003fb,0x00000192,0x000400fa,0x000003fc,0x000003f7,0x000003f8,0x000200f8, + 0x000003f7,0x0004003d,0x00000036,0x000003fd,0x000003f5,0x0004003d,0x0000002f,0x000003ff, + 0x000003ef,0x0003003e,0x000003fe,0x000003ff,0x00050041,0x00000030,0x00000401,0x000003e5, + 0x000003fd,0x0004003d,0x0000002f,0x00000402,0x00000401,0x0003003e,0x00000400,0x00000402, + 0x00060039,0x0000002f,0x00000403,0x00000034,0x000003fe,0x00000400,0x0003003e,0x000003ef, + 0x00000403,0x0004003d,0x00000036,0x00000404,0x000003f5,0x0004003d,0x0000002f,0x00000406, + 0x000003f2,0x0003003e,0x00000405,0x00000406,0x00050041,0x00000030,0x00000408,0x000003e5, + 0x00000404,0x0004003d,0x0000002f,0x00000409,0x00000408,0x0003003e,0x00000407,0x00000409, + 0x00060039,0x0000002f,0x0000040a,0x0000004b,0x00000405,0x00000407,0x0003003e,0x000003f2, + 0x0000040a,0x000200f9,0x000003f9,0x000200f8,0x000003f9,0x0004003d,0x00000036,0x0000040b, + 0x000003f5,0x00050080,0x00000036,0x0000040c,0x0000040b,0x00000229,0x0003003e,0x000003f5, + 0x0000040c,0x000200f9,0x000003f6,0x000200f8,0x000003f8,0x0004003d,0x0000002f,0x0000040d, + 0x000003d5,0x0004003d,0x0000002f,0x0000040e,0x000003ef,0x0004003d,0x0000002f,0x0000040f, + 0x000003f2,0x0008000c,0x0000002f,0x00000410,0x00000001,0x0000002b,0x0000040d,0x0000040e, + 0x0000040f,0x0003003e,0x000003d5,0x00000410,0x0004003d,0x0000002f,0x00000411,0x000003d5, + 0x000200fe,0x00000411,0x00010038,0x00050036,0x00000055,0x000000e9,0x00000000,0x000000ba, + 0x00030037,0x0000006d,0x000000e6,0x00030037,0x0000006d,0x000000e7,0x00030037,0x0000006d, + 0x000000e8,0x000200f8,0x000000ea,0x0004003b,0x0000006d,0x00000414,0x00000007,0x0004003b, + 0x00000037,0x0000041b,0x00000007,0x0004003b,0x00000037,0x0000041e,0x00000007,0x0004003b, + 0x00000037,0x00000420,0x00000007,0x0004003b,0x00000037,0x00000421,0x00000007,0x0004003b, + 0x00000037,0x00000427,0x00000007,0x0004003b,0x00000037,0x0000042a,0x00000007,0x0004003b, + 0x00000037,0x0000042c,0x00000007,0x0004003b,0x00000037,0x0000042d,0x00000007,0x0004003d, + 0x00000055,0x00000415,0x000000e6,0x0004003d,0x00000055,0x00000416,0x000000e7,0x00050080, + 0x00000055,0x00000417,0x00000415,0x00000416,0x0003003e,0x00000414,0x00000417,0x00050041, + 0x00000037,0x00000418,0x000000e8,0x000001e5,0x0004003d,0x00000036,0x00000419,0x00000418, + 0x00050082,0x00000036,0x0000041a,0x00000419,0x00000197,0x00050041,0x00000037,0x0000041c, + 0x00000414,0x000001e5,0x0004003d,0x00000036,0x0000041d,0x0000041c,0x0003003e,0x0000041b, + 0x0000041d,0x0003003e,0x0000041e,0x0000041a,0x00060039,0x00000036,0x0000041f,0x0000003b, + 0x0000041b,0x0000041e,0x0003003e,0x00000420,0x00000229,0x0003003e,0x00000421,0x0000041f, + 0x00060039,0x00000036,0x00000422,0x0000004f,0x00000420,0x00000421,0x00050041,0x00000037, + 0x00000423,0x00000414,0x000001e5,0x0003003e,0x00000423,0x00000422,0x00050041,0x00000037, + 0x00000424,0x000000e8,0x0000027e,0x0004003d,0x00000036,0x00000425,0x00000424,0x00050082, + 0x00000036,0x00000426,0x00000425,0x00000197,0x00050041,0x00000037,0x00000428,0x00000414, + 0x0000027e,0x0004003d,0x00000036,0x00000429,0x00000428,0x0003003e,0x00000427,0x00000429, + 0x0003003e,0x0000042a,0x00000426,0x00060039,0x00000036,0x0000042b,0x0000003b,0x00000427, + 0x0000042a,0x0003003e,0x0000042c,0x00000229,0x0003003e,0x0000042d,0x0000042b,0x00060039, + 0x00000036,0x0000042e,0x0000004f,0x0000042c,0x0000042d,0x00050041,0x00000037,0x0000042f, + 0x00000414,0x0000027e,0x0003003e,0x0000042f,0x0000042e,0x0004003d,0x00000055,0x00000430, + 0x00000414,0x000200fe,0x00000430,0x00010038,0x00050036,0x00000002,0x000000ee,0x00000000, + 0x000000eb,0x00030037,0x0000009b,0x000000ec,0x00030037,0x0000000f,0x000000ed,0x000200f8, + 0x000000ef,0x0004003d,0x0000000e,0x00000433,0x000000ed,0x00050041,0x0000000f,0x00000434, + 0x000000ec,0x00000197,0x0004003d,0x0000000e,0x00000435,0x00000434,0x00050041,0x0000000f, + 0x00000436,0x000000ec,0x0000019c,0x0004003d,0x0000000e,0x00000437,0x00000436,0x0008000c, + 0x0000000e,0x00000438,0x00000001,0x0000002b,0x00000433,0x00000435,0x00000437,0x0003003e, + 0x000000ed,0x00000438,0x000100fd,0x00010038,0x00050036,0x00000006,0x000000f3,0x00000000, + 0x000000f0,0x00030037,0x0000001b,0x000000f1,0x00030037,0x00000007,0x000000f2,0x000200f8, + 0x000000f4,0x0004003b,0x0000001b,0x00000439,0x00000007,0x0004003b,0x00000007,0x0000043e, + 0x00000007,0x0004003b,0x00000007,0x00000442,0x00000007,0x0004003d,0x0000001a,0x0000043a, + 0x000000f1,0x0004003d,0x00000006,0x0000043b,0x000000f2,0x00050050,0x0000001a,0x0000043c, + 0x0000043b,0x0000043b,0x00050085,0x0000001a,0x0000043d,0x0000043a,0x0000043c,0x0003003e, + 0x00000439,0x0000043d,0x0004003d,0x0000001a,0x0000043f,0x00000439,0x0004003d,0x0000001a, + 0x00000440,0x00000439,0x00050094,0x00000006,0x00000441,0x0000043f,0x00000440,0x0003003e, + 0x00000442,0x00000441,0x00050039,0x00000006,0x00000443,0x000000d5,0x00000442,0x0003003e, + 0x0000043e,0x00000443,0x0004003d,0x00000006,0x00000444,0x0000043e,0x000200fe,0x00000444, + 0x00010038,0x00050036,0x00000006,0x000000fb,0x00000000,0x000000f8,0x00030037,0x000000f5, + 0x000000f9,0x00030037,0x000000f7,0x000000fa,0x000200f8,0x000000fc,0x0004003b,0x00000007, + 0x00000447,0x00000007,0x0004003b,0x00000007,0x00000450,0x00000007,0x0004003b,0x00000007, + 0x00000451,0x00000007,0x00040039,0x0000001a,0x00000448,0x00000062,0x00050050,0x0000001a, + 0x00000449,0x0000014a,0x0000014a,0x00050088,0x0000001a,0x0000044a,0x00000449,0x00000448, + 0x00050050,0x0000001a,0x0000044b,0x0000014a,0x0000014a,0x00050083,0x0000001a,0x0000044c, + 0x0000044a,0x0000044b,0x00050051,0x00000006,0x0000044d,0x0000044c,0x00000000,0x00050081, + 0x00000006,0x0000044e,0x0000014a,0x0000044d,0x0003003e,0x00000447,0x0000044e,0x0003003e, + 0x00000450,0x0000044f,0x0004003d,0x00000006,0x00000452,0x00000447,0x0003003e,0x00000451, + 0x00000452,0x00060039,0x00000006,0x00000453,0x00000023,0x00000450,0x00000451,0x000200fe, + 0x00000453,0x00010038,0x00050036,0x0000000e,0x000000fe,0x00000000,0x0000006e,0x00030037, + 0x0000006d,0x000000fd,0x000200f8,0x000000ff,0x0004003b,0x0000000f,0x00000456,0x00000007, + 0x0004003b,0x0000006d,0x00000458,0x00000007,0x0004003b,0x0000000f,0x0000045b,0x00000007, + 0x0004003b,0x0000000f,0x0000045c,0x00000007,0x0004003b,0x0000000f,0x00000460,0x00000007, + 0x0004003b,0x0000000f,0x00000461,0x00000007,0x0004003d,0x00000055,0x00000459,0x000000fd, + 0x0003003e,0x00000458,0x00000459,0x00050039,0x0000000e,0x0000045a,0x00000070,0x00000458, + 0x0003003e,0x0000045b,0x00000457,0x0003003e,0x0000045c,0x0000045a,0x00060039,0x0000000e, + 0x0000045d,0x00000047,0x0000045b,0x0000045c,0x00040039,0x00000006,0x0000045e,0x00000091, + 0x0005008e,0x0000000e,0x0000045f,0x0000045d,0x0000045e,0x0003003e,0x00000456,0x0000045f, + 0x0004003d,0x0000000e,0x00000462,0x00000456,0x0003003e,0x00000461,0x00000462,0x00050039, + 0x0000000e,0x00000463,0x000000b4,0x00000461,0x0003003e,0x00000460,0x00000463,0x0004003d, + 0x0000000e,0x00000464,0x00000460,0x000200fe,0x00000464,0x00010038,0x00050036,0x00000002, + 0x00000103,0x00000000,0x00000100,0x00030037,0x000000f5,0x00000101,0x00030037,0x000000f7, + 0x00000102,0x000200f8,0x00000104,0x0004003b,0x0000001b,0x00000467,0x00000007,0x0004003b, + 0x0000001b,0x0000046b,0x00000007,0x0004003b,0x0000006d,0x0000046f,0x00000007,0x0004003b, + 0x0000001b,0x00000473,0x00000007,0x0004003b,0x0000001b,0x00000479,0x00000007,0x0004003b, + 0x0000006d,0x0000047d,0x00000007,0x0004003b,0x000000a3,0x0000048e,0x00000007,0x0004003b, + 0x000000a3,0x00000494,0x00000007,0x0004003b,0x0000001b,0x0000049a,0x00000007,0x0004003b, + 0x000000a3,0x0000049d,0x00000007,0x0004003b,0x00000037,0x000004a0,0x00000007,0x0004003b, + 0x00000037,0x000004a1,0x00000007,0x0004003b,0x00000037,0x000004a9,0x00000007,0x0004003b, + 0x0000006d,0x000004b1,0x00000007,0x0004003b,0x00000037,0x000004b3,0x00000007,0x0004003b, + 0x00000037,0x000004bc,0x00000007,0x0004003b,0x0000006d,0x000004c5,0x00000007,0x0004003b, + 0x0000006d,0x000004cb,0x00000007,0x0004003b,0x0000006d,0x000004cd,0x00000007,0x0004003b, + 0x0000006d,0x000004cf,0x00000007,0x0004003b,0x0000006d,0x000004d0,0x00000007,0x0004003b, + 0x000004d4,0x000004d5,0x00000007,0x0004003b,0x0000006d,0x000004d7,0x00000007,0x0004003b, + 0x00000007,0x000004e1,0x00000007,0x0004003b,0x000000f7,0x000004e2,0x00000007,0x0004003b, + 0x00000007,0x000004e6,0x00000007,0x0004003b,0x00000007,0x000004eb,0x00000007,0x0004003b, + 0x00000007,0x000004ec,0x00000007,0x0004003b,0x00000007,0x000004ee,0x00000007,0x0004003b, + 0x00000007,0x000004f8,0x00000007,0x0004003b,0x00000007,0x000004fa,0x00000007,0x0004003b, + 0x00000007,0x000004fb,0x00000007,0x0004003b,0x00000007,0x000004fd,0x00000007,0x0004003b, + 0x00000007,0x000004fe,0x00000007,0x0004003b,0x00000007,0x00000500,0x00000007,0x0004003b, + 0x00000007,0x00000501,0x00000007,0x0004003b,0x00000007,0x00000503,0x00000007,0x0004003b, + 0x00000007,0x00000505,0x00000007,0x0004003b,0x00000037,0x00000508,0x00000007,0x0004003b, + 0x00000037,0x00000510,0x00000007,0x0004003b,0x0000006d,0x00000518,0x00000007,0x0004003b, + 0x00000037,0x0000051a,0x00000007,0x0004003b,0x00000037,0x00000523,0x00000007,0x0004003b, + 0x0000001b,0x0000052c,0x00000007,0x0004003b,0x0000001b,0x00000531,0x00000007,0x0004003b, + 0x0000006d,0x00000535,0x00000007,0x0004003b,0x00000007,0x0000053b,0x00000007,0x0004003b, + 0x0000006d,0x0000053e,0x00000007,0x0004003b,0x0000006d,0x0000053f,0x00000007,0x0004003b, + 0x00000007,0x00000546,0x00000007,0x0004003b,0x0000001b,0x00000548,0x00000007,0x0004003b, + 0x00000007,0x0000054a,0x00000007,0x0004003b,0x00000007,0x0000055c,0x00000007,0x0004003b, + 0x00000007,0x00000560,0x00000007,0x0004003b,0x000000a3,0x00000567,0x00000007,0x0004003b, + 0x000000a3,0x00000571,0x00000007,0x0004003b,0x0000009b,0x00000573,0x00000007,0x0004003b, + 0x0000009b,0x0000057f,0x00000007,0x0004003b,0x0000009b,0x0000059e,0x00000007,0x0004003b, + 0x0000000f,0x000005a1,0x00000007,0x00050051,0x00000055,0x00000468,0x00000101,0x00000000, + 0x0004006f,0x0000001a,0x00000469,0x00000468,0x00050081,0x0000001a,0x0000046a,0x00000469, + 0x000002f8,0x0003003e,0x00000467,0x0000046a,0x0004003d,0x0000001a,0x0000046c,0x00000467, + 0x00040039,0x0000001a,0x0000046d,0x00000062,0x00050085,0x0000001a,0x0000046e,0x0000046c, + 0x0000046d,0x0003003e,0x0000046b,0x0000046e,0x0004003d,0x0000001a,0x00000470,0x0000046b, + 0x0006000c,0x0000001a,0x00000471,0x00000001,0x00000008,0x00000470,0x0004006e,0x00000055, + 0x00000472,0x00000471,0x0003003e,0x0000046f,0x00000472,0x0004003d,0x00000055,0x00000474, + 0x0000046f,0x0004006f,0x0000001a,0x00000475,0x00000474,0x00050081,0x0000001a,0x00000476, + 0x00000475,0x000002f8,0x00040039,0x0000001a,0x00000477,0x00000060,0x00050083,0x0000001a, + 0x00000478,0x00000476,0x00000477,0x0003003e,0x00000473,0x00000478,0x0004003d,0x0000001a, + 0x0000047a,0x00000473,0x0004003d,0x0000001a,0x0000047b,0x0000046b,0x00050083,0x0000001a, + 0x0000047c,0x0000047a,0x0000047b,0x0003003e,0x00000479,0x0000047c,0x00050041,0x00000007, + 0x0000047e,0x00000473,0x000001e5,0x0004003d,0x00000006,0x0000047f,0x0000047e,0x00050041, + 0x00000007,0x00000480,0x0000046b,0x000001e5,0x0004003d,0x00000006,0x00000481,0x00000480, + 0x000500ba,0x000000a2,0x00000482,0x0000047f,0x00000481,0x000600a9,0x00000036,0x00000485, + 0x00000482,0x00000483,0x00000484,0x00050041,0x00000037,0x00000486,0x0000047d,0x000001e5, + 0x0003003e,0x00000486,0x00000485,0x00050041,0x00000007,0x00000487,0x00000473,0x0000027e, + 0x0004003d,0x00000006,0x00000488,0x00000487,0x00050041,0x00000007,0x00000489,0x0000046b, + 0x0000027e,0x0004003d,0x00000006,0x0000048a,0x00000489,0x000500ba,0x000000a2,0x0000048b, + 0x00000488,0x0000048a,0x000600a9,0x00000036,0x0000048c,0x0000048b,0x00000483,0x00000484, + 0x00050041,0x00000037,0x0000048d,0x0000047d,0x0000027e,0x0003003e,0x0000048d,0x0000048c, + 0x00050041,0x00000007,0x0000048f,0x00000473,0x0000027e,0x0004003d,0x00000006,0x00000490, + 0x0000048f,0x00050041,0x00000007,0x00000491,0x0000046b,0x0000027e,0x0004003d,0x00000006, + 0x00000492,0x00000491,0x000500ba,0x000000a2,0x00000493,0x00000490,0x00000492,0x0003003e, + 0x0000048e,0x00000493,0x00050041,0x00000007,0x00000495,0x00000473,0x000001e5,0x0004003d, + 0x00000006,0x00000496,0x00000495,0x00050041,0x00000007,0x00000497,0x0000046b,0x000001e5, + 0x0004003d,0x00000006,0x00000498,0x00000497,0x000500ba,0x000000a2,0x00000499,0x00000496, + 0x00000498,0x0003003e,0x00000494,0x00000499,0x0004003d,0x00000055,0x0000049b,0x0000047d, + 0x0004006f,0x0000001a,0x0000049c,0x0000049b,0x0003003e,0x0000049a,0x0000049c,0x00050051, + 0x00000006,0x0000049e,0x00000101,0x0000000a,0x000500b4,0x000000a2,0x0000049f,0x0000049e, + 0x00000149,0x0003003e,0x0000049d,0x0000049f,0x0003003e,0x000004a0,0x0000018c,0x0003003e, + 0x000004a1,0x0000018c,0x000200f9,0x000004a2,0x000200f8,0x000004a2,0x000400f6,0x000004a4, + 0x000004a5,0x00000000,0x000200f9,0x000004a6,0x000200f8,0x000004a6,0x0004003d,0x00000036, + 0x000004a7,0x000004a1,0x000500b1,0x000000a2,0x000004a8,0x000004a7,0x0000019c,0x000400fa, + 0x000004a8,0x000004a3,0x000004a4,0x000200f8,0x000004a3,0x0003003e,0x000004a9,0x0000018c, + 0x000200f9,0x000004aa,0x000200f8,0x000004aa,0x000400f6,0x000004ac,0x000004ad,0x00000000, + 0x000200f9,0x000004ae,0x000200f8,0x000004ae,0x0004003d,0x00000036,0x000004af,0x000004a9, + 0x000500b1,0x000000a2,0x000004b0,0x000004af,0x0000019c,0x000400fa,0x000004b0,0x000004ab, + 0x000004ac,0x000200f8,0x000004ab,0x0004003d,0x000000a2,0x000004b2,0x00000494,0x000300f7, + 0x000004b5,0x00000000,0x000400fa,0x000004b2,0x000004b4,0x000004b8,0x000200f8,0x000004b4, + 0x0004003d,0x00000036,0x000004b6,0x000004a9,0x00050082,0x00000036,0x000004b7,0x0000019c, + 0x000004b6,0x0003003e,0x000004b3,0x000004b7,0x000200f9,0x000004b5,0x000200f8,0x000004b8, + 0x0004003d,0x00000036,0x000004b9,0x000004a9,0x0003003e,0x000004b3,0x000004b9,0x000200f9, + 0x000004b5,0x000200f8,0x000004b5,0x0004003d,0x00000036,0x000004ba,0x000004b3,0x0004003d, + 0x000000a2,0x000004bb,0x0000048e,0x000300f7,0x000004be,0x00000000,0x000400fa,0x000004bb, + 0x000004bd,0x000004c1,0x000200f8,0x000004bd,0x0004003d,0x00000036,0x000004bf,0x000004a1, + 0x00050082,0x00000036,0x000004c0,0x0000019c,0x000004bf,0x0003003e,0x000004bc,0x000004c0, + 0x000200f9,0x000004be,0x000200f8,0x000004c1,0x0004003d,0x00000036,0x000004c2,0x000004a1, + 0x0003003e,0x000004bc,0x000004c2,0x000200f9,0x000004be,0x000200f8,0x000004be,0x0004003d, + 0x00000036,0x000004c3,0x000004bc,0x00050050,0x00000055,0x000004c4,0x000004ba,0x000004c3, + 0x0003003e,0x000004b1,0x000004c4,0x0004003d,0x00000055,0x000004c6,0x0000046f,0x0004003d, + 0x00000055,0x000004c7,0x0000047d,0x00050080,0x00000055,0x000004c8,0x000004c6,0x000004c7, + 0x0004003d,0x00000055,0x000004c9,0x000004b1,0x00050080,0x00000055,0x000004ca,0x000004c8, + 0x000004c9,0x0003003e,0x000004c5,0x000004ca,0x00040039,0x00000055,0x000004cc,0x00000057, + 0x0004003d,0x00000055,0x000004ce,0x000004c5,0x0003003e,0x000004cd,0x000004ce,0x0003003e, + 0x000004cf,0x00000209,0x0003003e,0x000004d0,0x000004cc,0x00070039,0x00000055,0x000004d1, + 0x000000be,0x000004cd,0x000004cf,0x000004d0,0x0003003e,0x000004cb,0x000004d1,0x0004003d, + 0x00000036,0x000004d6,0x000004a0,0x0004003d,0x00000055,0x000004d8,0x000004cb,0x0003003e, + 0x000004d7,0x000004d8,0x00050039,0x0000000e,0x000004d9,0x000000fe,0x000004d7,0x00050041, + 0x0000000f,0x000004da,0x000004d5,0x000004d6,0x0003003e,0x000004da,0x000004d9,0x0004003d, + 0x00000036,0x000004db,0x000004a0,0x00050080,0x00000036,0x000004dc,0x000004db,0x00000229, + 0x0003003e,0x000004a0,0x000004dc,0x000200f9,0x000004ad,0x000200f8,0x000004ad,0x0004003d, + 0x00000036,0x000004dd,0x000004a9,0x00050080,0x00000036,0x000004de,0x000004dd,0x00000229, + 0x0003003e,0x000004a9,0x000004de,0x000200f9,0x000004aa,0x000200f8,0x000004ac,0x000200f9, + 0x000004a5,0x000200f8,0x000004a5,0x0004003d,0x00000036,0x000004df,0x000004a1,0x00050080, + 0x00000036,0x000004e0,0x000004df,0x00000229,0x0003003e,0x000004a1,0x000004e0,0x000200f9, + 0x000004a2,0x000200f8,0x000004a4,0x0004003d,0x000000f6,0x000004e3,0x00000102,0x0003003e, + 0x000004e2,0x000004e3,0x00060039,0x00000006,0x000004e4,0x000000fb,0x00000101,0x000004e2, + 0x0004003d,0x000000f6,0x000004e5,0x000004e2,0x0003003e,0x00000102,0x000004e5,0x0003003e, + 0x000004e1,0x000004e4,0x0004003d,0x00000006,0x000004e7,0x000004e1,0x00050081,0x00000006, + 0x000004e8,0x0000014a,0x000004e7,0x00050085,0x00000006,0x000004ea,0x000004e8,0x000004e9, + 0x0003003e,0x000004eb,0x0000014a,0x0003003e,0x000004ec,0x000004ea,0x00060039,0x00000006, + 0x000004ed,0x0000003f,0x000004eb,0x000004ec,0x0003003e,0x000004e6,0x000004ed,0x00050051, + 0x00000006,0x000004ef,0x00000101,0x00000007,0x00050085,0x00000006,0x000004f0,0x000004ef, + 0x0000029c,0x00050083,0x00000006,0x000004f1,0x0000014a,0x000004f0,0x00050051,0x00000006, + 0x000004f2,0x00000101,0x00000009,0x00050083,0x00000006,0x000004f3,0x0000014a,0x000004f2, + 0x00050041,0x00000007,0x000004f4,0x00000102,0x00000192,0x0004003d,0x00000006,0x000004f5, + 0x000004f4,0x00050085,0x00000006,0x000004f7,0x000004f5,0x000004f6,0x0003003e,0x000004f8, + 0x000004f7,0x00050039,0x00000006,0x000004f9,0x00000018,0x000004f8,0x0003003e,0x000004fa, + 0x000004f3,0x0003003e,0x000004fb,0x000004f9,0x00060039,0x00000006,0x000004fc,0x00000023, + 0x000004fa,0x000004fb,0x0003003e,0x000004fd,0x000004f1,0x0003003e,0x000004fe,0x000004fc, + 0x00060039,0x00000006,0x000004ff,0x00000023,0x000004fd,0x000004fe,0x0003003e,0x000004ee, + 0x000004ff,0x0004003d,0x00000006,0x00000502,0x000004e6,0x0003003e,0x00000501,0x00000502, + 0x0004003d,0x00000006,0x00000504,0x000004e1,0x0003003e,0x00000503,0x00000504,0x0004003d, + 0x00000006,0x00000506,0x000004ee,0x0003003e,0x00000505,0x00000506,0x00070039,0x00000006, + 0x00000507,0x0000000c,0x00000501,0x00000503,0x00000505,0x0003003e,0x00000500,0x00000507, + 0x0003003e,0x000004a0,0x0000018c,0x0003003e,0x00000508,0x0000018c,0x000200f9,0x00000509, + 0x000200f8,0x00000509,0x000400f6,0x0000050b,0x0000050c,0x00000000,0x000200f9,0x0000050d, + 0x000200f8,0x0000050d,0x0004003d,0x00000036,0x0000050e,0x00000508,0x000500b1,0x000000a2, + 0x0000050f,0x0000050e,0x0000019c,0x000400fa,0x0000050f,0x0000050a,0x0000050b,0x000200f8, + 0x0000050a,0x0003003e,0x00000510,0x0000018c,0x000200f9,0x00000511,0x000200f8,0x00000511, + 0x000400f6,0x00000513,0x00000514,0x00000000,0x000200f9,0x00000515,0x000200f8,0x00000515, + 0x0004003d,0x00000036,0x00000516,0x00000510,0x000500b1,0x000000a2,0x00000517,0x00000516, + 0x0000019c,0x000400fa,0x00000517,0x00000512,0x00000513,0x000200f8,0x00000512,0x0004003d, + 0x000000a2,0x00000519,0x00000494,0x000300f7,0x0000051c,0x00000000,0x000400fa,0x00000519, + 0x0000051b,0x0000051f,0x000200f8,0x0000051b,0x0004003d,0x00000036,0x0000051d,0x00000510, + 0x00050082,0x00000036,0x0000051e,0x0000019c,0x0000051d,0x0003003e,0x0000051a,0x0000051e, + 0x000200f9,0x0000051c,0x000200f8,0x0000051f,0x0004003d,0x00000036,0x00000520,0x00000510, + 0x0003003e,0x0000051a,0x00000520,0x000200f9,0x0000051c,0x000200f8,0x0000051c,0x0004003d, + 0x00000036,0x00000521,0x0000051a,0x0004003d,0x000000a2,0x00000522,0x0000048e,0x000300f7, + 0x00000525,0x00000000,0x000400fa,0x00000522,0x00000524,0x00000528,0x000200f8,0x00000524, + 0x0004003d,0x00000036,0x00000526,0x00000508,0x00050082,0x00000036,0x00000527,0x0000019c, + 0x00000526,0x0003003e,0x00000523,0x00000527,0x000200f9,0x00000525,0x000200f8,0x00000528, + 0x0004003d,0x00000036,0x00000529,0x00000508,0x0003003e,0x00000523,0x00000529,0x000200f9, + 0x00000525,0x000200f8,0x00000525,0x0004003d,0x00000036,0x0000052a,0x00000523,0x00050050, + 0x00000055,0x0000052b,0x00000521,0x0000052a,0x0003003e,0x00000518,0x0000052b,0x0004003d, + 0x0000001a,0x0000052d,0x0000049a,0x0004003d,0x00000055,0x0000052e,0x00000518,0x0004006f, + 0x0000001a,0x0000052f,0x0000052e,0x00050081,0x0000001a,0x00000530,0x0000052d,0x0000052f, + 0x0003003e,0x0000052c,0x00000530,0x0004003d,0x0000001a,0x00000532,0x00000479,0x0004003d, + 0x0000001a,0x00000533,0x0000052c,0x00050081,0x0000001a,0x00000534,0x00000532,0x00000533, + 0x0003003e,0x00000531,0x00000534,0x0004003d,0x00000055,0x00000536,0x0000046f,0x0004003d, + 0x00000055,0x00000537,0x0000047d,0x00050080,0x00000055,0x00000538,0x00000536,0x00000537, + 0x0004003d,0x00000055,0x00000539,0x00000518,0x00050080,0x00000055,0x0000053a,0x00000538, + 0x00000539,0x0003003e,0x00000535,0x0000053a,0x0004003d,0x00000055,0x0000053c,0x00000535, + 0x00040039,0x00000055,0x0000053d,0x00000057,0x0003003e,0x0000053e,0x0000053c,0x0003003e, + 0x0000053f,0x0000053d,0x00060039,0x000000a2,0x00000540,0x000000c9,0x0000053e,0x0000053f, + 0x000600a9,0x00000006,0x00000541,0x00000540,0x0000014a,0x00000149,0x0003003e,0x0000053b, + 0x00000541,0x0004003d,0x000000a2,0x00000542,0x0000049d,0x000400a8,0x000000a2,0x00000543, + 0x00000542,0x000300f7,0x00000545,0x00000000,0x000400fa,0x00000543,0x00000544,0x00000545, + 0x000200f8,0x00000544,0x0004003d,0x00000006,0x00000547,0x0000053b,0x0004003d,0x0000001a, + 0x00000549,0x00000531,0x0003003e,0x00000548,0x00000549,0x0004003d,0x00000006,0x0000054b, + 0x00000500,0x0003003e,0x0000054a,0x0000054b,0x00060039,0x00000006,0x0000054c,0x000000f3, + 0x00000548,0x0000054a,0x00050085,0x00000006,0x0000054d,0x00000547,0x0000054c,0x0003003e, + 0x00000546,0x0000054d,0x0004003d,0x00000036,0x0000054e,0x000004a0,0x00050041,0x0000000f, + 0x0000054f,0x000004d5,0x0000054e,0x0004003d,0x0000000e,0x00000550,0x0000054f,0x0004003d, + 0x00000006,0x00000551,0x00000546,0x0005008e,0x0000000e,0x00000552,0x00000550,0x00000551, + 0x00050041,0x0000000f,0x00000553,0x00000102,0x00000229,0x0004003d,0x0000000e,0x00000554, + 0x00000553,0x00050081,0x0000000e,0x00000555,0x00000554,0x00000552,0x00050041,0x0000000f, + 0x00000556,0x00000102,0x00000229,0x0003003e,0x00000556,0x00000555,0x0004003d,0x00000006, + 0x00000557,0x00000546,0x00050041,0x00000007,0x00000558,0x00000102,0x00000197,0x0004003d, + 0x00000006,0x00000559,0x00000558,0x00050081,0x00000006,0x0000055a,0x00000559,0x00000557, + 0x00050041,0x00000007,0x0000055b,0x00000102,0x00000197,0x0003003e,0x0000055b,0x0000055a, + 0x000200f9,0x00000545,0x000200f8,0x00000545,0x0004003d,0x0000001a,0x0000055d,0x00000531, + 0x0004003d,0x0000001a,0x0000055e,0x00000531,0x00050094,0x00000006,0x0000055f,0x0000055d, + 0x0000055e,0x0003003e,0x0000055c,0x0000055f,0x0004003d,0x00000006,0x00000562,0x0000055c, + 0x00050085,0x00000006,0x00000563,0x00000561,0x00000562,0x0006000c,0x00000006,0x00000564, + 0x00000001,0x0000001b,0x00000563,0x0004003d,0x00000006,0x00000565,0x0000053b,0x00050085, + 0x00000006,0x00000566,0x00000564,0x00000565,0x0003003e,0x00000560,0x00000566,0x0004003d, + 0x00000036,0x00000568,0x00000508,0x000500aa,0x000000a2,0x00000569,0x00000568,0x0000018c, + 0x0004003d,0x00000036,0x0000056a,0x00000510,0x000500aa,0x000000a2,0x0000056b,0x0000056a, + 0x0000018c,0x000500a7,0x000000a2,0x0000056c,0x00000569,0x0000056b,0x0003003e,0x00000567, + 0x0000056c,0x0004003d,0x00000036,0x0000056d,0x000004a0,0x00050041,0x0000000f,0x0000056e, + 0x000004d5,0x0000056d,0x0004003d,0x0000000e,0x0000056f,0x0000056e,0x0004003d,0x00000006, + 0x00000570,0x00000560,0x0004003d,0x000000a2,0x00000572,0x00000567,0x0003003e,0x00000571, + 0x00000572,0x00050041,0x0000009b,0x00000574,0x00000102,0x0000018c,0x0004003d,0x0000009a, + 0x00000575,0x00000574,0x0003003e,0x00000573,0x00000575,0x00080039,0x00000002,0x00000576, + 0x000000a9,0x00000571,0x00000573,0x0000056f,0x00000570,0x0004003d,0x0000009a,0x00000577, + 0x00000573,0x00050041,0x0000009b,0x00000578,0x00000102,0x0000018c,0x0003003e,0x00000578, + 0x00000577,0x0004003d,0x00000036,0x00000579,0x000004a0,0x00050080,0x00000036,0x0000057a, + 0x00000579,0x00000229,0x0003003e,0x000004a0,0x0000057a,0x000200f9,0x00000514,0x000200f8, + 0x00000514,0x0004003d,0x00000036,0x0000057b,0x00000510,0x00050080,0x00000036,0x0000057c, + 0x0000057b,0x00000229,0x0003003e,0x00000510,0x0000057c,0x000200f9,0x00000511,0x000200f8, + 0x00000513,0x000200f9,0x0000050c,0x000200f8,0x0000050c,0x0004003d,0x00000036,0x0000057d, + 0x00000508,0x00050080,0x00000036,0x0000057e,0x0000057d,0x00000229,0x0003003e,0x00000508, + 0x0000057e,0x000200f9,0x00000509,0x000200f8,0x0000050b,0x00050041,0x0000009b,0x00000580, + 0x00000102,0x0000018c,0x0004003d,0x0000009a,0x00000581,0x00000580,0x0003003e,0x0000057f, + 0x00000581,0x00050039,0x00000002,0x00000582,0x000000ad,0x0000057f,0x0004003d,0x0000009a, + 0x00000583,0x0000057f,0x00050041,0x0000009b,0x00000584,0x00000102,0x0000018c,0x0003003e, + 0x00000584,0x00000583,0x00050041,0x00000007,0x00000585,0x00000102,0x00000197,0x0004003d, + 0x00000006,0x00000586,0x00000585,0x000500ba,0x000000a2,0x00000587,0x00000586,0x00000317, + 0x000600a9,0x00000006,0x00000588,0x00000587,0x0000014a,0x00000149,0x00050041,0x00000007, + 0x00000589,0x00000102,0x00000197,0x0004003d,0x00000006,0x0000058a,0x00000589,0x00050085, + 0x00000006,0x0000058b,0x0000058a,0x00000588,0x00050041,0x00000007,0x0000058c,0x00000102, + 0x00000197,0x0003003e,0x0000058c,0x0000058b,0x00050041,0x00000007,0x0000058d,0x00000102, + 0x00000197,0x0004003d,0x00000006,0x0000058e,0x0000058d,0x000500ba,0x000000a2,0x0000058f, + 0x0000058e,0x00000317,0x000300f7,0x00000591,0x00000000,0x000400fa,0x0000058f,0x00000590, + 0x00000591,0x000200f8,0x00000590,0x00050041,0x0000000f,0x00000592,0x00000102,0x00000229, + 0x0004003d,0x0000000e,0x00000593,0x00000592,0x00050041,0x00000007,0x00000594,0x00000102, + 0x00000197,0x0004003d,0x00000006,0x00000595,0x00000594,0x00060050,0x0000000e,0x00000596, + 0x00000595,0x00000595,0x00000595,0x00050088,0x0000000e,0x00000597,0x00000593,0x00000596, + 0x00050041,0x0000000f,0x00000598,0x00000102,0x00000229,0x0003003e,0x00000598,0x00000597, + 0x00050041,0x00000007,0x0000059a,0x00000102,0x00000197,0x0004003d,0x00000006,0x0000059b, + 0x0000059a,0x00050085,0x00000006,0x0000059c,0x0000059b,0x00000599,0x00050041,0x00000007, + 0x0000059d,0x00000102,0x00000197,0x0003003e,0x0000059d,0x0000059c,0x00050041,0x0000009b, + 0x0000059f,0x00000102,0x0000018c,0x0004003d,0x0000009a,0x000005a0,0x0000059f,0x0003003e, + 0x0000059e,0x000005a0,0x00050041,0x0000000f,0x000005a2,0x00000102,0x00000229,0x0004003d, + 0x0000000e,0x000005a3,0x000005a2,0x0003003e,0x000005a1,0x000005a3,0x00060039,0x00000002, + 0x000005a4,0x000000ee,0x0000059e,0x000005a1,0x0004003d,0x0000000e,0x000005a5,0x000005a1, + 0x00050041,0x0000000f,0x000005a6,0x00000102,0x00000229,0x0003003e,0x000005a6,0x000005a5, + 0x000200f9,0x00000591,0x000200f8,0x00000591,0x0004003d,0x000000a2,0x000005a7,0x0000049d, + 0x000300f7,0x000005a9,0x00000000,0x000400fa,0x000005a7,0x000005a8,0x000005a9,0x000200f8, + 0x000005a8,0x00060041,0x0000000f,0x000005aa,0x00000102,0x0000018c,0x0000018c,0x0004003d, + 0x0000000e,0x000005ab,0x000005aa,0x00050041,0x0000000f,0x000005ac,0x00000102,0x00000229, + 0x0003003e,0x000005ac,0x000005ab,0x00050041,0x00000007,0x000005ad,0x00000102,0x00000197, + 0x0003003e,0x000005ad,0x0000014a,0x00050041,0x00000007,0x000005ae,0x00000102,0x00000192, + 0x0003003e,0x000005ae,0x00000149,0x000200f9,0x000005a9,0x000200f8,0x000005a9,0x000100fd, + 0x00010038,0x00050036,0x0000002f,0x00000106,0x00000000,0x00000072,0x00030037,0x0000006d, + 0x00000105,0x000200f8,0x00000107,0x0004003b,0x0000006d,0x000005af,0x00000007,0x0004003d, + 0x00000055,0x000005b0,0x00000105,0x0003003e,0x000005af,0x000005b0,0x00050039,0x0000002f, + 0x000005b1,0x00000074,0x000005af,0x000200fe,0x000005b1,0x00010038,0x00050036,0x000000df, + 0x0000010b,0x00000000,0x00000108,0x00030037,0x0000006d,0x00000109,0x00030037,0x0000006d, + 0x0000010a,0x000200f8,0x0000010c,0x0004003b,0x000000e0,0x000005b4,0x00000007,0x0004003b, + 0x0000006d,0x000005b6,0x00000007,0x0004003b,0x0000006d,0x000005b8,0x00000007,0x0004003b, + 0x0000006d,0x000005b9,0x00000007,0x0004003b,0x0000006d,0x000005bc,0x00000007,0x0004003b, + 0x0000006d,0x000005c0,0x00000007,0x0004003b,0x0000006d,0x000005c2,0x00000007,0x0004003b, + 0x0000006d,0x000005c3,0x00000007,0x0004003b,0x0000006d,0x000005c6,0x00000007,0x0004003b, + 0x0000006d,0x000005ca,0x00000007,0x0004003b,0x0000006d,0x000005cc,0x00000007,0x0004003b, + 0x0000006d,0x000005cd,0x00000007,0x0004003b,0x0000006d,0x000005d0,0x00000007,0x0004003b, + 0x0000006d,0x000005d4,0x00000007,0x0004003b,0x0000006d,0x000005d6,0x00000007,0x0004003b, + 0x0000006d,0x000005d7,0x00000007,0x0004003b,0x0000006d,0x000005da,0x00000007,0x0004003b, + 0x0000006d,0x000005de,0x00000007,0x0004003b,0x0000006d,0x000005e0,0x00000007,0x0004003b, + 0x0000006d,0x000005e1,0x00000007,0x0004003b,0x0000006d,0x000005e4,0x00000007,0x0004003b, + 0x0000006d,0x000005e7,0x00000007,0x0004003b,0x0000006d,0x000005e9,0x00000007,0x0004003b, + 0x0000006d,0x000005ea,0x00000007,0x0004003b,0x0000006d,0x000005ed,0x00000007,0x0004003b, + 0x0000006d,0x000005f1,0x00000007,0x0004003b,0x0000006d,0x000005f3,0x00000007,0x0004003b, + 0x0000006d,0x000005f4,0x00000007,0x0004003b,0x0000006d,0x000005f7,0x00000007,0x0004003b, + 0x0000006d,0x000005fb,0x00000007,0x0004003b,0x0000006d,0x000005fd,0x00000007,0x0004003b, + 0x0000006d,0x000005fe,0x00000007,0x0004003b,0x0000006d,0x00000601,0x00000007,0x0004003b, + 0x0000006d,0x00000605,0x00000007,0x0004003b,0x0000006d,0x00000607,0x00000007,0x0004003b, + 0x0000006d,0x00000608,0x00000007,0x0004003b,0x0000006d,0x0000060b,0x00000007,0x0004003b, + 0x0000006d,0x0000060f,0x00000007,0x0004003b,0x0000006d,0x00000611,0x00000007,0x0004003b, + 0x0000006d,0x00000612,0x00000007,0x0004003b,0x0000006d,0x00000615,0x00000007,0x0004003b, + 0x0000006d,0x00000619,0x00000007,0x0004003b,0x0000006d,0x0000061b,0x00000007,0x0004003b, + 0x0000006d,0x0000061c,0x00000007,0x0004003b,0x0000006d,0x0000061f,0x00000007,0x0004003b, + 0x0000006d,0x00000623,0x00000007,0x0004003b,0x0000006d,0x00000625,0x00000007,0x0004003b, + 0x0000006d,0x00000626,0x00000007,0x0004003b,0x0000006d,0x00000629,0x00000007,0x0004003b, + 0x0000006d,0x0000062d,0x00000007,0x0004003b,0x0000006d,0x0000062f,0x00000007,0x0004003b, + 0x0000006d,0x00000630,0x00000007,0x0004003b,0x0000006d,0x00000633,0x00000007,0x0004003b, + 0x0000006d,0x00000637,0x00000007,0x0004003b,0x0000006d,0x00000639,0x00000007,0x0004003b, + 0x0000006d,0x0000063a,0x00000007,0x0004003b,0x0000006d,0x0000063d,0x00000007,0x0004003b, + 0x0000006d,0x00000641,0x00000007,0x0004003b,0x0000006d,0x00000643,0x00000007,0x0004003b, + 0x0000006d,0x00000644,0x00000007,0x0004003b,0x0000006d,0x00000647,0x00000007,0x0004003b, + 0x0000006d,0x0000064b,0x00000007,0x0004003b,0x0000006d,0x0000064d,0x00000007,0x0004003b, + 0x0000006d,0x0000064e,0x00000007,0x0004003b,0x0000006d,0x00000651,0x00000007,0x0004003d, + 0x00000055,0x000005b7,0x00000109,0x0003003e,0x000005b6,0x000005b7,0x0003003e,0x000005b8, + 0x000005b5,0x0004003d,0x00000055,0x000005ba,0x0000010a,0x0003003e,0x000005b9,0x000005ba, + 0x00070039,0x00000055,0x000005bb,0x000000e9,0x000005b6,0x000005b8,0x000005b9,0x0003003e, + 0x000005bc,0x000005bb,0x00050039,0x0000002f,0x000005bd,0x00000106,0x000005bc,0x00050041, + 0x00000030,0x000005be,0x000005b4,0x0000018c,0x0003003e,0x000005be,0x000005bd,0x0004003d, + 0x00000055,0x000005c1,0x00000109,0x0003003e,0x000005c0,0x000005c1,0x0003003e,0x000005c2, + 0x000005bf,0x0004003d,0x00000055,0x000005c4,0x0000010a,0x0003003e,0x000005c3,0x000005c4, + 0x00070039,0x00000055,0x000005c5,0x000000e9,0x000005c0,0x000005c2,0x000005c3,0x0003003e, + 0x000005c6,0x000005c5,0x00050039,0x0000002f,0x000005c7,0x00000106,0x000005c6,0x00050041, + 0x00000030,0x000005c8,0x000005b4,0x00000229,0x0003003e,0x000005c8,0x000005c7,0x0004003d, + 0x00000055,0x000005cb,0x00000109,0x0003003e,0x000005ca,0x000005cb,0x0003003e,0x000005cc, + 0x000005c9,0x0004003d,0x00000055,0x000005ce,0x0000010a,0x0003003e,0x000005cd,0x000005ce, + 0x00070039,0x00000055,0x000005cf,0x000000e9,0x000005ca,0x000005cc,0x000005cd,0x0003003e, + 0x000005d0,0x000005cf,0x00050039,0x0000002f,0x000005d1,0x00000106,0x000005d0,0x00050041, + 0x00000030,0x000005d2,0x000005b4,0x00000197,0x0003003e,0x000005d2,0x000005d1,0x0004003d, + 0x00000055,0x000005d5,0x00000109,0x0003003e,0x000005d4,0x000005d5,0x0003003e,0x000005d6, + 0x000005d3,0x0004003d,0x00000055,0x000005d8,0x0000010a,0x0003003e,0x000005d7,0x000005d8, + 0x00070039,0x00000055,0x000005d9,0x000000e9,0x000005d4,0x000005d6,0x000005d7,0x0003003e, + 0x000005da,0x000005d9,0x00050039,0x0000002f,0x000005db,0x00000106,0x000005da,0x00050041, + 0x00000030,0x000005dc,0x000005b4,0x0000019c,0x0003003e,0x000005dc,0x000005db,0x0004003d, + 0x00000055,0x000005df,0x00000109,0x0003003e,0x000005de,0x000005df,0x0003003e,0x000005e0, + 0x000005dd,0x0004003d,0x00000055,0x000005e2,0x0000010a,0x0003003e,0x000005e1,0x000005e2, + 0x00070039,0x00000055,0x000005e3,0x000000e9,0x000005de,0x000005e0,0x000005e1,0x0003003e, + 0x000005e4,0x000005e3,0x00050039,0x0000002f,0x000005e5,0x00000106,0x000005e4,0x00050041, + 0x00000030,0x000005e6,0x000005b4,0x00000192,0x0003003e,0x000005e6,0x000005e5,0x0004003d, + 0x00000055,0x000005e8,0x00000109,0x0003003e,0x000005e7,0x000005e8,0x0003003e,0x000005e9, + 0x00000209,0x0004003d,0x00000055,0x000005eb,0x0000010a,0x0003003e,0x000005ea,0x000005eb, + 0x00070039,0x00000055,0x000005ec,0x000000e9,0x000005e7,0x000005e9,0x000005ea,0x0003003e, + 0x000005ed,0x000005ec,0x00050039,0x0000002f,0x000005ee,0x00000106,0x000005ed,0x00050041, + 0x00000030,0x000005ef,0x000005b4,0x0000039c,0x0003003e,0x000005ef,0x000005ee,0x0004003d, + 0x00000055,0x000005f2,0x00000109,0x0003003e,0x000005f1,0x000005f2,0x0003003e,0x000005f3, + 0x000005f0,0x0004003d,0x00000055,0x000005f5,0x0000010a,0x0003003e,0x000005f4,0x000005f5, + 0x00070039,0x00000055,0x000005f6,0x000000e9,0x000005f1,0x000005f3,0x000005f4,0x0003003e, + 0x000005f7,0x000005f6,0x00050039,0x0000002f,0x000005f8,0x00000106,0x000005f7,0x00050041, + 0x00000030,0x000005f9,0x000005b4,0x0000039d,0x0003003e,0x000005f9,0x000005f8,0x0004003d, + 0x00000055,0x000005fc,0x00000109,0x0003003e,0x000005fb,0x000005fc,0x0003003e,0x000005fd, + 0x000005fa,0x0004003d,0x00000055,0x000005ff,0x0000010a,0x0003003e,0x000005fe,0x000005ff, + 0x00070039,0x00000055,0x00000600,0x000000e9,0x000005fb,0x000005fd,0x000005fe,0x0003003e, + 0x00000601,0x00000600,0x00050039,0x0000002f,0x00000602,0x00000106,0x00000601,0x00050041, + 0x00000030,0x00000603,0x000005b4,0x000001a1,0x0003003e,0x00000603,0x00000602,0x0004003d, + 0x00000055,0x00000606,0x00000109,0x0003003e,0x00000605,0x00000606,0x0003003e,0x00000607, + 0x00000604,0x0004003d,0x00000055,0x00000609,0x0000010a,0x0003003e,0x00000608,0x00000609, + 0x00070039,0x00000055,0x0000060a,0x000000e9,0x00000605,0x00000607,0x00000608,0x0003003e, + 0x0000060b,0x0000060a,0x00050039,0x0000002f,0x0000060c,0x00000106,0x0000060b,0x00050041, + 0x00000030,0x0000060d,0x000005b4,0x000003af,0x0003003e,0x0000060d,0x0000060c,0x0004003d, + 0x00000055,0x00000610,0x00000109,0x0003003e,0x0000060f,0x00000610,0x0003003e,0x00000611, + 0x0000060e,0x0004003d,0x00000055,0x00000613,0x0000010a,0x0003003e,0x00000612,0x00000613, + 0x00070039,0x00000055,0x00000614,0x000000e9,0x0000060f,0x00000611,0x00000612,0x0003003e, + 0x00000615,0x00000614,0x00050039,0x0000002f,0x00000616,0x00000106,0x00000615,0x00050041, + 0x00000030,0x00000617,0x000005b4,0x000003b0,0x0003003e,0x00000617,0x00000616,0x0004003d, + 0x00000055,0x0000061a,0x00000109,0x0003003e,0x00000619,0x0000061a,0x0003003e,0x0000061b, + 0x00000618,0x0004003d,0x00000055,0x0000061d,0x0000010a,0x0003003e,0x0000061c,0x0000061d, + 0x00070039,0x00000055,0x0000061e,0x000000e9,0x00000619,0x0000061b,0x0000061c,0x0003003e, + 0x0000061f,0x0000061e,0x00050039,0x0000002f,0x00000620,0x00000106,0x0000061f,0x00050041, + 0x00000030,0x00000621,0x000005b4,0x000001a7,0x0003003e,0x00000621,0x00000620,0x0004003d, + 0x00000055,0x00000624,0x00000109,0x0003003e,0x00000623,0x00000624,0x0003003e,0x00000625, + 0x00000622,0x0004003d,0x00000055,0x00000627,0x0000010a,0x0003003e,0x00000626,0x00000627, + 0x00070039,0x00000055,0x00000628,0x000000e9,0x00000623,0x00000625,0x00000626,0x0003003e, + 0x00000629,0x00000628,0x00050039,0x0000002f,0x0000062a,0x00000106,0x00000629,0x00050041, + 0x00000030,0x0000062b,0x000005b4,0x000003b1,0x0003003e,0x0000062b,0x0000062a,0x0004003d, + 0x00000055,0x0000062e,0x00000109,0x0003003e,0x0000062d,0x0000062e,0x0003003e,0x0000062f, + 0x0000062c,0x0004003d,0x00000055,0x00000631,0x0000010a,0x0003003e,0x00000630,0x00000631, + 0x00070039,0x00000055,0x00000632,0x000000e9,0x0000062d,0x0000062f,0x00000630,0x0003003e, + 0x00000633,0x00000632,0x00050039,0x0000002f,0x00000634,0x00000106,0x00000633,0x00050041, + 0x00000030,0x00000635,0x000005b4,0x000003c3,0x0003003e,0x00000635,0x00000634,0x0004003d, + 0x00000055,0x00000638,0x00000109,0x0003003e,0x00000637,0x00000638,0x0003003e,0x00000639, + 0x00000636,0x0004003d,0x00000055,0x0000063b,0x0000010a,0x0003003e,0x0000063a,0x0000063b, + 0x00070039,0x00000055,0x0000063c,0x000000e9,0x00000637,0x00000639,0x0000063a,0x0003003e, + 0x0000063d,0x0000063c,0x00050039,0x0000002f,0x0000063e,0x00000106,0x0000063d,0x00050041, + 0x00000030,0x0000063f,0x000005b4,0x000001ac,0x0003003e,0x0000063f,0x0000063e,0x0004003d, + 0x00000055,0x00000642,0x00000109,0x0003003e,0x00000641,0x00000642,0x0003003e,0x00000643, + 0x00000640,0x0004003d,0x00000055,0x00000645,0x0000010a,0x0003003e,0x00000644,0x00000645, + 0x00070039,0x00000055,0x00000646,0x000000e9,0x00000641,0x00000643,0x00000644,0x0003003e, + 0x00000647,0x00000646,0x00050039,0x0000002f,0x00000648,0x00000106,0x00000647,0x00050041, + 0x00000030,0x00000649,0x000005b4,0x000003c4,0x0003003e,0x00000649,0x00000648,0x0004003d, + 0x00000055,0x0000064c,0x00000109,0x0003003e,0x0000064b,0x0000064c,0x0003003e,0x0000064d, + 0x0000064a,0x0004003d,0x00000055,0x0000064f,0x0000010a,0x0003003e,0x0000064e,0x0000064f, + 0x00070039,0x00000055,0x00000650,0x000000e9,0x0000064b,0x0000064d,0x0000064e,0x0003003e, + 0x00000651,0x00000650,0x00050039,0x0000002f,0x00000652,0x00000106,0x00000651,0x00050041, + 0x00000030,0x00000653,0x000005b4,0x000001b2,0x0003003e,0x00000653,0x00000652,0x0004003d, + 0x000000df,0x00000654,0x000005b4,0x000200fe,0x00000654,0x00010038,0x00050036,0x0000002f, + 0x00000110,0x00000000,0x0000010d,0x00030037,0x0000001b,0x0000010e,0x00030037,0x0000006d, + 0x0000010f,0x000200f8,0x00000111,0x0004003b,0x0000001b,0x00000657,0x00000007,0x0004003b, + 0x0000001b,0x0000065d,0x00000007,0x0004003b,0x0000001b,0x0000065e,0x00000007,0x0004003b, + 0x00000007,0x00000665,0x00000007,0x0004003b,0x00000007,0x00000666,0x00000007,0x0004003b, + 0x00000007,0x0000066a,0x00000007,0x0004003b,0x00000007,0x0000066b,0x00000007,0x0004003b, + 0x00000007,0x00000672,0x00000007,0x0004003b,0x00000007,0x00000673,0x00000007,0x0004003b, + 0x00000007,0x00000677,0x00000007,0x0004003b,0x00000007,0x00000678,0x00000007,0x0004003b, + 0x0000006d,0x0000067b,0x00000007,0x0004003b,0x00000030,0x0000067f,0x00000007,0x0004003b, + 0x0000006d,0x00000680,0x00000007,0x0004003b,0x0000006d,0x00000682,0x00000007,0x0004003b, + 0x000000e0,0x00000685,0x00000007,0x0004003b,0x0000001b,0x00000686,0x00000007,0x0004003d, + 0x0000001a,0x00000658,0x0000010e,0x0004003d,0x00000055,0x00000659,0x0000010f,0x0004006f, + 0x0000001a,0x0000065a,0x00000659,0x00050085,0x0000001a,0x0000065b,0x00000658,0x0000065a, + 0x00050083,0x0000001a,0x0000065c,0x0000065b,0x000002f8,0x0003003e,0x00000657,0x0000065c, + 0x0004003d,0x0000001a,0x0000065f,0x00000657,0x0003003e,0x0000065e,0x0000065f,0x00050039, + 0x0000001a,0x00000660,0x0000001e,0x0000065e,0x0003003e,0x0000065d,0x00000660,0x00050041, + 0x00000037,0x00000661,0x0000010f,0x000001e5,0x0004003d,0x00000036,0x00000662,0x00000661, + 0x00050082,0x00000036,0x00000663,0x00000662,0x00000229,0x0004006f,0x00000006,0x00000664, + 0x00000663,0x0003003e,0x00000665,0x00000664,0x00050041,0x00000007,0x00000667,0x00000657, + 0x000001e5,0x0004003d,0x00000006,0x00000668,0x00000667,0x0003003e,0x00000666,0x00000668, + 0x00060039,0x00000006,0x00000669,0x00000023,0x00000665,0x00000666,0x0003003e,0x0000066a, + 0x00000149,0x0003003e,0x0000066b,0x00000669,0x00060039,0x00000006,0x0000066c,0x0000003f, + 0x0000066a,0x0000066b,0x00050041,0x00000007,0x0000066d,0x00000657,0x000001e5,0x0003003e, + 0x0000066d,0x0000066c,0x00050041,0x00000037,0x0000066e,0x0000010f,0x0000027e,0x0004003d, + 0x00000036,0x0000066f,0x0000066e,0x00050082,0x00000036,0x00000670,0x0000066f,0x00000229, + 0x0004006f,0x00000006,0x00000671,0x00000670,0x0003003e,0x00000672,0x00000671,0x00050041, + 0x00000007,0x00000674,0x00000657,0x0000027e,0x0004003d,0x00000006,0x00000675,0x00000674, + 0x0003003e,0x00000673,0x00000675,0x00060039,0x00000006,0x00000676,0x00000023,0x00000672, + 0x00000673,0x0003003e,0x00000677,0x00000149,0x0003003e,0x00000678,0x00000676,0x00060039, + 0x00000006,0x00000679,0x0000003f,0x00000677,0x00000678,0x00050041,0x00000007,0x0000067a, + 0x00000657,0x0000027e,0x0003003e,0x0000067a,0x00000679,0x0004003d,0x0000001a,0x0000067c, + 0x00000657,0x0006000c,0x0000001a,0x0000067d,0x00000001,0x00000008,0x0000067c,0x0004006e, + 0x00000055,0x0000067e,0x0000067d,0x0003003e,0x0000067b,0x0000067e,0x0004003d,0x00000055, + 0x00000681,0x0000067b,0x0003003e,0x00000680,0x00000681,0x0004003d,0x00000055,0x00000683, + 0x0000010f,0x0003003e,0x00000682,0x00000683,0x00060039,0x000000df,0x00000684,0x0000010b, + 0x00000680,0x00000682,0x0003003e,0x00000685,0x00000684,0x0004003d,0x0000001a,0x00000687, + 0x0000065d,0x0003003e,0x00000686,0x00000687,0x00060039,0x0000002f,0x00000688,0x000000e4, + 0x00000685,0x00000686,0x0003003e,0x0000067f,0x00000688,0x0004003d,0x0000002f,0x00000689, + 0x0000067f,0x000200fe,0x00000689,0x00010038,0x00050036,0x0000001a,0x00000115,0x00000000, + 0x00000112,0x00030037,0x0000006d,0x00000113,0x00030037,0x0000001b,0x00000114,0x000200f8, + 0x00000116,0x0004003b,0x0000001b,0x0000068c,0x00000007,0x0004003b,0x0000006d,0x00000692, + 0x00000007,0x0004003d,0x0000001a,0x0000068d,0x00000114,0x00040039,0x00000055,0x0000068e, + 0x00000057,0x0004006f,0x0000001a,0x0000068f,0x0000068e,0x00050085,0x0000001a,0x00000690, + 0x0000068d,0x0000068f,0x0004006e,0x00000055,0x00000691,0x00000690,0x0003003e,0x00000692, + 0x00000691,0x00050039,0x0000001a,0x00000693,0x0000008f,0x00000692,0x0003003e,0x0000068c, + 0x00000693,0x0004003d,0x0000001a,0x00000694,0x0000068c,0x000200fe,0x00000694,0x00010038, + 0x00050036,0x00000002,0x0000011a,0x00000000,0x00000118,0x00030037,0x00000117,0x00000119, + 0x000200f8,0x0000011b,0x0004003b,0x0000001b,0x0000069d,0x00000007,0x00050041,0x0000001b, + 0x00000697,0x00000119,0x00000229,0x0004003d,0x0000001a,0x00000698,0x00000697,0x00050041, + 0x0000001b,0x00000699,0x00000119,0x00000192,0x0004003d,0x0000001a,0x0000069a,0x00000699, + 0x00050081,0x0000001a,0x0000069b,0x00000698,0x0000069a,0x00050041,0x0000001b,0x0000069c, + 0x00000119,0x0000039c,0x0003003e,0x0000069c,0x0000069b,0x00050041,0x0000001b,0x0000069e, + 0x00000119,0x0000039c,0x0004003d,0x0000001a,0x0000069f,0x0000069e,0x0003003e,0x0000069d, + 0x0000069f,0x00050039,0x000000a2,0x000006a0,0x000000b8,0x0000069d,0x00050041,0x000000a3, + 0x000006a1,0x00000119,0x000001ac,0x0003003e,0x000006a1,0x000006a0,0x000100fd,0x00010038, + 0x00050036,0x00000002,0x0000011e,0x00000000,0x00000100,0x00030037,0x000000f5,0x0000011c, + 0x00030037,0x000000f7,0x0000011d,0x000200f8,0x0000011f,0x0004003b,0x00000030,0x000006a2, + 0x00000007,0x0004003b,0x0000001b,0x000006a4,0x00000007,0x0004003b,0x0000006d,0x000006a6, + 0x00000007,0x0004003b,0x0000000f,0x000006b5,0x00000007,0x00040039,0x00000055,0x000006a3, + 0x0000005d,0x00050051,0x0000001a,0x000006a5,0x0000011c,0x00000005,0x0003003e,0x000006a4, + 0x000006a5,0x0003003e,0x000006a6,0x000006a3,0x00060039,0x0000002f,0x000006a7,0x00000110, + 0x000006a4,0x000006a6,0x0003003e,0x000006a2,0x000006a7,0x0004003d,0x0000002f,0x000006a8, + 0x000006a2,0x0008004f,0x0000000e,0x000006a9,0x000006a8,0x000006a8,0x00000000,0x00000001, + 0x00000002,0x00050041,0x0000000f,0x000006aa,0x0000011d,0x0000019c,0x0003003e,0x000006aa, + 0x000006a9,0x00040039,0x00000006,0x000006ab,0x00000067,0x00050041,0x0000000f,0x000006ac, + 0x0000011d,0x0000019c,0x0004003d,0x0000000e,0x000006ad,0x000006ac,0x0005008e,0x0000000e, + 0x000006ae,0x000006ad,0x000006ab,0x00050041,0x0000000f,0x000006af,0x0000011d,0x0000019c, + 0x0003003e,0x000006af,0x000006ae,0x00040039,0x00000006,0x000006b0,0x00000091,0x00050041, + 0x0000000f,0x000006b1,0x0000011d,0x0000019c,0x0004003d,0x0000000e,0x000006b2,0x000006b1, + 0x0005008e,0x0000000e,0x000006b3,0x000006b2,0x000006b0,0x00050041,0x0000000f,0x000006b4, + 0x0000011d,0x0000019c,0x0003003e,0x000006b4,0x000006b3,0x00050041,0x0000000f,0x000006b6, + 0x0000011d,0x0000019c,0x0004003d,0x0000000e,0x000006b7,0x000006b6,0x0003003e,0x000006b5, + 0x000006b7,0x00050039,0x0000000e,0x000006b8,0x000000b4,0x000006b5,0x00050041,0x0000000f, + 0x000006b9,0x0000011d,0x0000019c,0x0003003e,0x000006b9,0x000006b8,0x00050041,0x00000007, + 0x000006bb,0x000006a2,0x000006ba,0x0004003d,0x00000006,0x000006bc,0x000006bb,0x00050041, + 0x00000007,0x000006bd,0x0000011d,0x0000039c,0x0003003e,0x000006bd,0x000006bc,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x00000122,0x00000000,0x00000100,0x00030037,0x000000f5, + 0x00000120,0x00030037,0x000000f7,0x00000121,0x000200f8,0x00000123,0x0004003b,0x00000007, + 0x000006cb,0x00000007,0x0004003b,0x00000007,0x000006cc,0x00000007,0x0004003b,0x00000007, + 0x000006cf,0x00000007,0x0004003b,0x00000007,0x000006d5,0x00000007,0x0004003b,0x0000000f, + 0x000006d7,0x00000007,0x0004003b,0x0000000f,0x000006da,0x00000007,0x0004003b,0x00000007, + 0x000006dd,0x00000007,0x0004003b,0x0000000f,0x000006e1,0x00000007,0x00050041,0x00000007, + 0x000006be,0x00000121,0x00000192,0x0004003d,0x00000006,0x000006bf,0x000006be,0x000500ba, + 0x000000a2,0x000006c0,0x000006bf,0x00000317,0x000600a9,0x00000006,0x000006c1,0x000006c0, + 0x0000014a,0x00000149,0x00050041,0x00000007,0x000006c2,0x00000121,0x00000192,0x0004003d, + 0x00000006,0x000006c3,0x000006c2,0x00050085,0x00000006,0x000006c4,0x000006c3,0x000006c1, + 0x00050041,0x00000007,0x000006c5,0x00000121,0x00000192,0x0003003e,0x000006c5,0x000006c4, + 0x00050041,0x00000007,0x000006c6,0x00000121,0x00000192,0x0004003d,0x00000006,0x000006c7, + 0x000006c6,0x00050041,0x00000007,0x000006c8,0x00000121,0x00000197,0x0004003d,0x00000006, + 0x000006c9,0x000006c8,0x00050081,0x00000006,0x000006ca,0x000006c7,0x000006c9,0x0003003e, + 0x000006cb,0x00000317,0x0003003e,0x000006cc,0x000006ca,0x00060039,0x00000006,0x000006cd, + 0x0000003f,0x000006cb,0x000006cc,0x00050041,0x00000007,0x000006ce,0x00000121,0x00000192, + 0x0003003e,0x000006ce,0x000006cd,0x00050041,0x00000007,0x000006d0,0x00000121,0x00000197, + 0x0004003d,0x00000006,0x000006d1,0x000006d0,0x00050041,0x00000007,0x000006d2,0x00000121, + 0x00000192,0x0004003d,0x00000006,0x000006d3,0x000006d2,0x00050088,0x00000006,0x000006d4, + 0x000006d1,0x000006d3,0x0003003e,0x000006d5,0x000006d4,0x00050039,0x00000006,0x000006d6, + 0x00000018,0x000006d5,0x0003003e,0x000006cf,0x000006d6,0x00050041,0x0000000f,0x000006d8, + 0x00000121,0x0000019c,0x0004003d,0x0000000e,0x000006d9,0x000006d8,0x0003003e,0x000006d7, + 0x000006d9,0x00050041,0x0000000f,0x000006db,0x00000121,0x00000229,0x0004003d,0x0000000e, + 0x000006dc,0x000006db,0x0003003e,0x000006da,0x000006dc,0x0004003d,0x00000006,0x000006de, + 0x000006cf,0x0003003e,0x000006dd,0x000006de,0x00070039,0x0000000e,0x000006df,0x00000014, + 0x000006d7,0x000006da,0x000006dd,0x00050041,0x0000000f,0x000006e0,0x00000121,0x0000019c, + 0x0003003e,0x000006e0,0x000006df,0x00050041,0x0000000f,0x000006e2,0x00000121,0x0000019c, + 0x0004003d,0x0000000e,0x000006e3,0x000006e2,0x0003003e,0x000006e1,0x000006e3,0x00050039, + 0x0000000e,0x000006e4,0x000000b1,0x000006e1,0x00050041,0x0000000f,0x000006e5,0x00000121, + 0x0000019c,0x0003003e,0x000006e5,0x000006e4,0x000100fd,0x00010038,0x00050036,0x00000002, + 0x00000126,0x00000000,0x00000100,0x00030037,0x000000f5,0x00000124,0x00030037,0x000000f7, + 0x00000125,0x000200f8,0x00000127,0x0004003b,0x00000007,0x000006e6,0x00000007,0x0004003b, + 0x00000007,0x000006ea,0x00000007,0x0004003b,0x00000007,0x000006ec,0x00000007,0x0004003b, + 0x00000007,0x000006f1,0x00000007,0x0004003b,0x00000007,0x000006f3,0x00000007,0x0004003b, + 0x00000007,0x000006f6,0x00000007,0x0004003b,0x00000007,0x000006f7,0x00000007,0x0004003b, + 0x00000007,0x000006f9,0x00000007,0x0004003b,0x00000007,0x000006fb,0x00000007,0x0004003b, + 0x00000007,0x000006fd,0x00000007,0x0004003b,0x00000007,0x000006fe,0x00000007,0x0004003b, + 0x00000007,0x00000700,0x00000007,0x0004003b,0x00000007,0x00000703,0x00000007,0x0004003b, + 0x00000007,0x00000705,0x00000007,0x0004003b,0x00000007,0x00000707,0x00000007,0x0004003b, + 0x00000007,0x00000709,0x00000007,0x0004003b,0x00000007,0x0000070b,0x00000007,0x0004003b, + 0x00000007,0x0000070d,0x00000007,0x0004003b,0x00000007,0x0000070f,0x00000007,0x0004003b, + 0x00000007,0x00000711,0x00000007,0x0004003b,0x00000007,0x00000712,0x00000007,0x0004003b, + 0x00000007,0x00000713,0x00000007,0x0004003b,0x0000000f,0x00000716,0x00000007,0x0004003b, + 0x0000000f,0x0000071e,0x00000007,0x0004003b,0x0000000f,0x00000721,0x00000007,0x0004003b, + 0x0000000f,0x00000723,0x00000007,0x0004003b,0x0000000f,0x00000725,0x00000007,0x0004003b, + 0x0000000f,0x00000732,0x00000007,0x0004003b,0x0000000f,0x00000735,0x00000007,0x0004003b, + 0x00000007,0x0000073c,0x00000007,0x0004003b,0x00000007,0x0000073d,0x00000007,0x0004003b, + 0x00000007,0x0000073f,0x00000007,0x0004003b,0x00000007,0x00000748,0x00000007,0x0004003b, + 0x0000000f,0x0000074b,0x00000007,0x0004003b,0x0000000f,0x0000074d,0x00000007,0x0004003b, + 0x00000007,0x00000750,0x00000007,0x00050051,0x00000006,0x000006e7,0x00000124,0x00000006, + 0x00050088,0x00000006,0x000006e9,0x000006e7,0x000006e8,0x0003003e,0x000006ea,0x000006e9, + 0x00050039,0x00000006,0x000006eb,0x00000018,0x000006ea,0x0003003e,0x000006e6,0x000006eb, + 0x00050051,0x00000006,0x000006ee,0x00000124,0x0000000c,0x00050088,0x00000006,0x000006ef, + 0x000006ee,0x000006e8,0x00050083,0x00000006,0x000006f0,0x000006ed,0x000006ef,0x0003003e, + 0x000006f1,0x000006f0,0x00050039,0x00000006,0x000006f2,0x00000018,0x000006f1,0x0003003e, + 0x000006ec,0x000006f2,0x00050051,0x00000006,0x000006f4,0x00000124,0x0000000a,0x00050083, + 0x00000006,0x000006f5,0x0000014a,0x000006f4,0x0003003e,0x000006f3,0x000006f5,0x00050051, + 0x00000006,0x000006f8,0x00000124,0x00000008,0x0003003e,0x000006f7,0x000006f8,0x0003003e, + 0x000006f9,0x0000029c,0x00060039,0x00000006,0x000006fa,0x00000053,0x000006f7,0x000006f9, + 0x0003003e,0x000006f6,0x000006fa,0x00050051,0x00000006,0x000006fc,0x00000124,0x00000009, + 0x0003003e,0x000006fb,0x000006fc,0x0004003d,0x00000006,0x000006ff,0x000006f6,0x0003003e, + 0x000006fe,0x000006ff,0x0004003d,0x00000006,0x00000701,0x000006fb,0x0003003e,0x00000700, + 0x00000701,0x00060039,0x00000006,0x00000702,0x0000003f,0x000006fe,0x00000700,0x0004003d, + 0x00000006,0x00000704,0x000006f3,0x0003003e,0x00000703,0x00000704,0x0003003e,0x00000705, + 0x00000702,0x00060039,0x00000006,0x00000706,0x0000003f,0x00000703,0x00000705,0x0004003d, + 0x00000006,0x00000708,0x000006ec,0x0003003e,0x00000707,0x00000708,0x0003003e,0x00000709, + 0x00000706,0x00060039,0x00000006,0x0000070a,0x0000003f,0x00000707,0x00000709,0x0004003d, + 0x00000006,0x0000070c,0x000006e6,0x0003003e,0x0000070b,0x0000070c,0x0003003e,0x0000070d, + 0x0000070a,0x00060039,0x00000006,0x0000070e,0x0000003f,0x0000070b,0x0000070d,0x0003003e, + 0x000006fd,0x0000070e,0x0003003e,0x00000711,0x00000710,0x0003003e,0x00000712,0x0000014a, + 0x0004003d,0x00000006,0x00000714,0x000006fd,0x0003003e,0x00000713,0x00000714,0x00070039, + 0x00000006,0x00000715,0x0000000c,0x00000711,0x00000712,0x00000713,0x0003003e,0x0000070f, + 0x00000715,0x00060041,0x0000000f,0x00000717,0x00000125,0x0000018c,0x00000229,0x0004003d, + 0x0000000e,0x00000718,0x00000717,0x00050085,0x0000000e,0x0000071b,0x00000718,0x0000071a, + 0x0004003d,0x00000006,0x0000071c,0x0000070f,0x0005008e,0x0000000e,0x0000071d,0x0000071b, + 0x0000071c,0x0003003e,0x00000716,0x0000071d,0x0004003d,0x0000000e,0x00000722,0x00000716, + 0x0003003e,0x00000721,0x00000722,0x0003003e,0x00000723,0x00000720,0x00060039,0x0000000e, + 0x00000724,0x00000047,0x00000721,0x00000723,0x0003003e,0x0000071e,0x00000724,0x00050041, + 0x0000000f,0x00000726,0x00000125,0x0000019c,0x0004003d,0x0000000e,0x00000727,0x00000726, + 0x00060041,0x0000000f,0x00000728,0x00000125,0x0000018c,0x0000018c,0x0004003d,0x0000000e, + 0x00000729,0x00000728,0x00050083,0x0000000e,0x0000072a,0x00000727,0x00000729,0x0004003d, + 0x0000000e,0x0000072b,0x0000071e,0x00050088,0x0000000e,0x0000072c,0x0000072a,0x0000072b, + 0x0003003e,0x00000725,0x0000072c,0x0004003d,0x0000000e,0x0000072d,0x00000725,0x0006000c, + 0x00000006,0x0000072e,0x00000001,0x00000042,0x0000072d,0x000500ba,0x000000a2,0x0000072f, + 0x0000072e,0x0000014a,0x000300f7,0x00000731,0x00000000,0x000400fa,0x0000072f,0x00000730, + 0x00000731,0x000200f8,0x00000730,0x0004003d,0x0000000e,0x00000733,0x00000725,0x0006000c, + 0x0000000e,0x00000734,0x00000001,0x00000045,0x00000733,0x0003003e,0x00000732,0x00000734, + 0x0004003d,0x0000000e,0x00000736,0x00000732,0x0004003d,0x0000000e,0x00000737,0x00000716, + 0x00050085,0x0000000e,0x00000738,0x00000736,0x00000737,0x00060041,0x0000000f,0x00000739, + 0x00000125,0x0000018c,0x0000018c,0x0004003d,0x0000000e,0x0000073a,0x00000739,0x00050081, + 0x0000000e,0x0000073b,0x00000738,0x0000073a,0x0003003e,0x00000735,0x0000073b,0x00050051, + 0x00000006,0x0000073e,0x00000124,0x0000000b,0x0003003e,0x0000073d,0x0000073e,0x00050041, + 0x00000007,0x00000740,0x00000125,0x0000039d,0x0004003d,0x00000006,0x00000741,0x00000740, + 0x0003003e,0x0000073f,0x00000741,0x00060039,0x00000006,0x00000742,0x0000003f,0x0000073d, + 0x0000073f,0x00050051,0x00000006,0x00000743,0x00000124,0x0000000a,0x00050085,0x00000006, + 0x00000744,0x00000742,0x00000743,0x00050051,0x00000006,0x00000745,0x00000124,0x00000007, + 0x00050083,0x00000006,0x00000746,0x0000014a,0x00000745,0x00050085,0x00000006,0x00000747, + 0x00000744,0x00000746,0x0003003e,0x0000073c,0x00000747,0x0004003d,0x00000006,0x00000749, + 0x0000073c,0x0003003e,0x00000748,0x00000749,0x00050039,0x00000006,0x0000074a,0x00000018, + 0x00000748,0x0004003d,0x0000000e,0x0000074c,0x00000735,0x0003003e,0x0000074b,0x0000074c, + 0x00050041,0x0000000f,0x0000074e,0x00000125,0x0000019c,0x0004003d,0x0000000e,0x0000074f, + 0x0000074e,0x0003003e,0x0000074d,0x0000074f,0x0003003e,0x00000750,0x0000074a,0x00070039, + 0x0000000e,0x00000751,0x00000014,0x0000074b,0x0000074d,0x00000750,0x00050041,0x0000000f, + 0x00000752,0x00000125,0x0000019c,0x0003003e,0x00000752,0x00000751,0x000200f9,0x00000731, + 0x000200f8,0x00000731,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000012b,0x00000000, + 0x00000128,0x00030037,0x00000117,0x00000129,0x00030037,0x000000f7,0x0000012a,0x000200f8, + 0x0000012c,0x0004003b,0x00000007,0x0000075c,0x00000007,0x0004003b,0x00000007,0x0000075d, + 0x00000007,0x0004003b,0x00000007,0x00000761,0x00000007,0x0004003b,0x00000007,0x00000764, + 0x00000007,0x0004003b,0x00000007,0x00000768,0x00000007,0x0004003b,0x00000007,0x00000769, + 0x00000007,0x0004003b,0x00000007,0x00000770,0x00000007,0x0004003b,0x00000007,0x00000771, + 0x00000007,0x0004003b,0x00000007,0x00000777,0x00000007,0x0004003b,0x00000007,0x0000077a, + 0x00000007,0x0004003b,0x00000007,0x0000077d,0x00000007,0x0004003b,0x0000006d,0x0000077e, + 0x00000007,0x0004003b,0x00000007,0x00000785,0x00000007,0x0004003b,0x00000007,0x00000786, + 0x00000007,0x0004003b,0x00000007,0x00000790,0x00000007,0x0004003b,0x00000007,0x00000791, + 0x00000007,0x0004003b,0x00000007,0x00000793,0x00000007,0x0004003b,0x00000007,0x00000794, + 0x00000007,0x0004003b,0x00000007,0x00000797,0x00000007,0x0004003b,0x00000007,0x000007a2, + 0x00000007,0x0004003b,0x00000007,0x000007a3,0x00000007,0x0004003b,0x0000001b,0x000007a6, + 0x00000007,0x0004003b,0x0000001b,0x000007ac,0x00000007,0x00050041,0x000000a3,0x00000753, + 0x00000129,0x000003c4,0x0004003d,0x000000a2,0x00000754,0x00000753,0x000500a4,0x000000a2, + 0x00000756,0x00000754,0x00000755,0x000600a9,0x00000006,0x00000757,0x00000756,0x0000014a, + 0x00000149,0x00050041,0x00000007,0x00000758,0x0000012a,0x0000039c,0x0004003d,0x00000006, + 0x00000759,0x00000758,0x00050085,0x00000006,0x0000075a,0x00000759,0x00000757,0x00050041, + 0x00000007,0x0000075b,0x0000012a,0x0000039c,0x0003003e,0x0000075b,0x0000075a,0x00050041, + 0x00000007,0x0000075e,0x00000129,0x000003b0,0x0004003d,0x00000006,0x0000075f,0x0000075e, + 0x0003003e,0x0000075d,0x0000075f,0x00050039,0x00000006,0x00000760,0x00000018,0x0000075d, + 0x00050041,0x00000007,0x00000762,0x00000129,0x000003af,0x0004003d,0x00000006,0x00000763, + 0x00000762,0x0003003e,0x00000761,0x00000763,0x00050041,0x00000007,0x00000765,0x00000129, + 0x000001a1,0x0004003d,0x00000006,0x00000766,0x00000765,0x0003003e,0x00000764,0x00000766, + 0x00060039,0x00000006,0x00000767,0x0000003f,0x00000761,0x00000764,0x0003003e,0x00000768, + 0x00000760,0x0003003e,0x00000769,0x00000767,0x00060039,0x00000006,0x0000076a,0x0000003f, + 0x00000768,0x00000769,0x0003003e,0x0000075c,0x0000076a,0x00050041,0x00000007,0x0000076b, + 0x0000012a,0x0000039c,0x0004003d,0x00000006,0x0000076c,0x0000076b,0x0004003d,0x00000006, + 0x0000076d,0x0000075c,0x00050085,0x00000006,0x0000076e,0x0000076d,0x00000331,0x00050083, + 0x00000006,0x0000076f,0x0000076c,0x0000076e,0x0003003e,0x00000770,0x00000149,0x0003003e, + 0x00000771,0x0000076f,0x00060039,0x00000006,0x00000772,0x0000003f,0x00000770,0x00000771, + 0x00050041,0x00000007,0x00000773,0x0000012a,0x0000039c,0x0003003e,0x00000773,0x00000772, + 0x00050041,0x00000007,0x00000774,0x0000012a,0x0000039c,0x0004003d,0x00000006,0x00000775, + 0x00000774,0x00050083,0x00000006,0x00000776,0x00000775,0x0000014a,0x0003003e,0x00000777, + 0x00000776,0x00050039,0x00000006,0x00000778,0x00000018,0x00000777,0x00050085,0x00000006, + 0x00000779,0x00000778,0x0000014a,0x0003003e,0x0000077a,0x00000779,0x00050039,0x00000006, + 0x0000077b,0x00000018,0x0000077a,0x00050041,0x00000007,0x0000077c,0x0000012a,0x0000039d, + 0x0003003e,0x0000077c,0x0000077b,0x00050041,0x0000006d,0x0000077f,0x00000129,0x0000018c, + 0x0004003d,0x00000055,0x00000780,0x0000077f,0x0003003e,0x0000077e,0x00000780,0x00050039, + 0x00000006,0x00000781,0x00000086,0x0000077e,0x00050041,0x00000007,0x00000782,0x00000129, + 0x000003b0,0x0004003d,0x00000006,0x00000783,0x00000782,0x00050085,0x00000006,0x00000784, + 0x00000783,0x00000149,0x0003003e,0x00000785,0x00000784,0x00050041,0x00000007,0x00000787, + 0x00000129,0x000003af,0x0004003d,0x00000006,0x00000788,0x00000787,0x0003003e,0x00000786, + 0x00000788,0x00060039,0x00000006,0x00000789,0x0000003f,0x00000785,0x00000786,0x00050083, + 0x00000006,0x0000078a,0x0000014a,0x00000789,0x00050085,0x00000006,0x0000078b,0x00000781, + 0x0000078a,0x0003003e,0x0000077d,0x0000078b,0x00050041,0x00000007,0x0000078c,0x0000012a, + 0x0000039c,0x0004003d,0x00000006,0x0000078d,0x0000078c,0x0004003d,0x00000006,0x0000078e, + 0x0000077d,0x00050081,0x00000006,0x0000078f,0x0000078d,0x0000078e,0x0003003e,0x00000790, + 0x0000078f,0x0003003e,0x00000791,0x00000331,0x00060039,0x00000006,0x00000792,0x00000023, + 0x00000790,0x00000791,0x0003003e,0x00000793,0x00000149,0x0003003e,0x00000794,0x00000792, + 0x00060039,0x00000006,0x00000795,0x0000003f,0x00000793,0x00000794,0x00050041,0x00000007, + 0x00000796,0x0000012a,0x0000039c,0x0003003e,0x00000796,0x00000795,0x00040039,0x00000006, + 0x00000799,0x00000065,0x00050088,0x00000006,0x0000079a,0x00000798,0x00000799,0x0004003d, + 0x00000006,0x0000079b,0x0000075c,0x00050083,0x00000006,0x0000079c,0x0000014a,0x0000079b, + 0x00050085,0x00000006,0x0000079d,0x0000079a,0x0000079c,0x0003003e,0x00000797,0x0000079d, + 0x00050041,0x00000007,0x0000079e,0x0000012a,0x0000039c,0x0004003d,0x00000006,0x0000079f, + 0x0000079e,0x0004003d,0x00000006,0x000007a0,0x00000797,0x00050083,0x00000006,0x000007a1, + 0x0000079f,0x000007a0,0x0003003e,0x000007a2,0x00000149,0x0003003e,0x000007a3,0x000007a1, + 0x00060039,0x00000006,0x000007a4,0x0000003f,0x000007a2,0x000007a3,0x00050041,0x00000007, + 0x000007a5,0x0000012a,0x0000039c,0x0003003e,0x000007a5,0x000007a4,0x00050041,0x0000001b, + 0x000007a7,0x00000129,0x00000229,0x0004003d,0x0000001a,0x000007a8,0x000007a7,0x00050041, + 0x0000001b,0x000007a9,0x00000129,0x00000192,0x0004003d,0x0000001a,0x000007aa,0x000007a9, + 0x00050083,0x0000001a,0x000007ab,0x000007a8,0x000007aa,0x0003003e,0x000007a6,0x000007ab, + 0x0004003d,0x0000001a,0x000007ad,0x000007a6,0x0003003e,0x000007ac,0x000007ad,0x00050039, + 0x000000a2,0x000007ae,0x000000b8,0x000007ac,0x000500a4,0x000000a2,0x000007b0,0x000007ae, + 0x000007af,0x000600a9,0x00000006,0x000007b1,0x000007b0,0x0000014a,0x00000149,0x00050041, + 0x00000007,0x000007b2,0x0000012a,0x0000039c,0x0004003d,0x00000006,0x000007b3,0x000007b2, + 0x00050085,0x00000006,0x000007b4,0x000007b3,0x000007b1,0x00050041,0x00000007,0x000007b5, + 0x0000012a,0x0000039c,0x0003003e,0x000007b5,0x000007b4,0x000100fd,0x00010038,0x00050036, + 0x00000002,0x0000012f,0x00000000,0x00000100,0x00030037,0x000000f5,0x0000012d,0x00030037, + 0x000000f7,0x0000012e,0x000200f8,0x00000130,0x0004003b,0x00000007,0x000007b6,0x00000007, + 0x0004003b,0x00000007,0x000007bd,0x00000007,0x0004003b,0x00000007,0x000007be,0x00000007, + 0x0004003b,0x00000007,0x000007c0,0x00000007,0x0004003b,0x00000007,0x000007c2,0x00000007, + 0x0004003b,0x00000007,0x000007c4,0x00000007,0x0004003b,0x00000007,0x000007c5,0x00000007, + 0x0004003b,0x00000007,0x000007c7,0x00000007,0x0004003b,0x00000007,0x000007c9,0x00000007, + 0x00050051,0x00000006,0x000007b7,0x0000012d,0x0000000a,0x0003003e,0x000007b6,0x000007b7, + 0x00050051,0x00000006,0x000007b9,0x0000012d,0x00000006,0x00040039,0x00000006,0x000007ba, + 0x0000006b,0x00050085,0x00000006,0x000007bb,0x000007b9,0x000007ba,0x00050088,0x00000006, + 0x000007bc,0x000007bb,0x0000029c,0x0003003e,0x000007bd,0x00000149,0x0003003e,0x000007be, + 0x000007bc,0x00060039,0x00000006,0x000007bf,0x0000003f,0x000007bd,0x000007be,0x0003003e, + 0x000007c0,0x000007bf,0x00050039,0x00000006,0x000007c1,0x00000018,0x000007c0,0x0004003d, + 0x00000006,0x000007c3,0x000007b6,0x0003003e,0x000007c2,0x000007c3,0x0003003e,0x000007c4, + 0x000007b8,0x0003003e,0x000007c5,0x000007c1,0x00070039,0x00000006,0x000007c6,0x0000000c, + 0x000007c2,0x000007c4,0x000007c5,0x0004003d,0x00000006,0x000007c8,0x000007b6,0x0003003e, + 0x000007c7,0x000007c8,0x0003003e,0x000007c9,0x000007c6,0x00060039,0x00000006,0x000007ca, + 0x00000023,0x000007c7,0x000007c9,0x0003003e,0x000007b6,0x000007ca,0x0004003d,0x00000006, + 0x000007cb,0x000007b6,0x00050041,0x00000007,0x000007cc,0x0000012e,0x00000192,0x0003003e, + 0x000007cc,0x000007cb,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000135,0x00000000, + 0x00000131,0x00030037,0x0000006d,0x00000132,0x00030037,0x00000117,0x00000133,0x00030037, + 0x000000f7,0x00000134,0x000200f8,0x00000136,0x0004003b,0x0000001b,0x000007cf,0x00000007, + 0x0004003b,0x0000001b,0x000007e2,0x00000007,0x0004003b,0x0000006d,0x000007e5,0x00000007, + 0x0004003b,0x0000006d,0x000007e6,0x00000007,0x0004003b,0x0000006d,0x000007e9,0x00000007, + 0x0004003b,0x0000001b,0x000007eb,0x00000007,0x0004003b,0x0000001b,0x000007ef,0x00000007, + 0x0004003b,0x00000117,0x000007f4,0x00000007,0x0004003b,0x0000001b,0x000007f8,0x00000007, + 0x0004003b,0x0000001b,0x000007fb,0x00000007,0x0004003b,0x0000006d,0x000007fd,0x00000007, + 0x0004003b,0x0000006d,0x000007fe,0x00000007,0x0004003b,0x0000001b,0x00000800,0x00000007, + 0x0004003b,0x0000001b,0x00000804,0x00000007,0x0004003b,0x0000001b,0x00000809,0x00000007, + 0x0004003b,0x0000006d,0x0000080c,0x00000007,0x0004003b,0x0000006d,0x0000080d,0x00000007, + 0x0004003b,0x0000001b,0x0000080f,0x00000007,0x0004003b,0x00000030,0x0000081d,0x00000007, + 0x0004003b,0x0000001b,0x0000081e,0x00000007,0x0004003b,0x00000007,0x00000822,0x00000007, + 0x0004003b,0x00000007,0x00000827,0x00000007,0x0004003b,0x00000007,0x0000082c,0x00000007, + 0x0004003b,0x00000007,0x00000831,0x00000007,0x0004003d,0x00000055,0x000007cd,0x00000132, + 0x00050041,0x0000006d,0x000007ce,0x00000133,0x0000018c,0x0003003e,0x000007ce,0x000007cd, + 0x0004003d,0x00000055,0x000007d0,0x00000132,0x0004006f,0x0000001a,0x000007d1,0x000007d0, + 0x00050050,0x0000001a,0x000007d2,0x0000029c,0x0000029c,0x00050081,0x0000001a,0x000007d3, + 0x000007d1,0x000007d2,0x00040039,0x00000055,0x000007d4,0x0000005b,0x0004006f,0x0000001a, + 0x000007d5,0x000007d4,0x00050088,0x0000001a,0x000007d6,0x000007d3,0x000007d5,0x0003003e, + 0x000007cf,0x000007d6,0x0004003d,0x0000001a,0x000007d7,0x000007cf,0x00050041,0x0000001b, + 0x000007d8,0x00000133,0x00000229,0x0003003e,0x000007d8,0x000007d7,0x0004003d,0x0000001a, + 0x000007d9,0x000007cf,0x00040039,0x0000001a,0x000007da,0x00000060,0x00040039,0x00000055, + 0x000007db,0x00000057,0x0004006f,0x0000001a,0x000007dc,0x000007db,0x00050088,0x0000001a, + 0x000007dd,0x000007da,0x000007dc,0x00050081,0x0000001a,0x000007de,0x000007d9,0x000007dd, + 0x00050041,0x0000001b,0x000007df,0x00000133,0x00000197,0x0003003e,0x000007df,0x000007de, + 0x00040039,0x00000055,0x000007e0,0x00000057,0x00040039,0x00000055,0x000007e1,0x00000059, + 0x00050041,0x0000001b,0x000007e3,0x00000133,0x00000197,0x0004003d,0x0000001a,0x000007e4, + 0x000007e3,0x0003003e,0x000007e2,0x000007e4,0x0003003e,0x000007e5,0x000007e0,0x0003003e, + 0x000007e6,0x000007e1,0x00070039,0x0000001a,0x000007e7,0x000000c4,0x000007e2,0x000007e5, + 0x000007e6,0x00050041,0x0000001b,0x000007e8,0x00000133,0x0000019c,0x0003003e,0x000007e8, + 0x000007e7,0x0004003d,0x00000055,0x000007ea,0x00000132,0x0003003e,0x000007e9,0x000007ea, + 0x0004003d,0x0000001a,0x000007ec,0x000007cf,0x0003003e,0x000007eb,0x000007ec,0x00060039, + 0x0000001a,0x000007ed,0x00000115,0x000007e9,0x000007eb,0x00050041,0x0000001b,0x000007ee, + 0x00000133,0x00000192,0x0003003e,0x000007ee,0x000007ed,0x00050041,0x0000001b,0x000007f0, + 0x00000133,0x00000192,0x0004003d,0x0000001a,0x000007f1,0x000007f0,0x0003003e,0x000007ef, + 0x000007f1,0x00050039,0x00000006,0x000007f2,0x00000098,0x000007ef,0x00050041,0x00000007, + 0x000007f3,0x00000133,0x0000039d,0x0003003e,0x000007f3,0x000007f2,0x0004003d,0x000000f5, + 0x000007f5,0x00000133,0x0003003e,0x000007f4,0x000007f5,0x00050039,0x00000002,0x000007f6, + 0x0000011a,0x000007f4,0x0004003d,0x000000f5,0x000007f7,0x000007f4,0x0003003e,0x00000133, + 0x000007f7,0x00040039,0x00000055,0x000007f9,0x00000057,0x00040039,0x00000055,0x000007fa, + 0x00000059,0x0004003d,0x0000001a,0x000007fc,0x000007cf,0x0003003e,0x000007fb,0x000007fc, + 0x0003003e,0x000007fd,0x000007f9,0x0003003e,0x000007fe,0x000007fa,0x00070039,0x0000001a, + 0x000007ff,0x000000c4,0x000007fb,0x000007fd,0x000007fe,0x0003003e,0x000007f8,0x000007ff, + 0x0004003d,0x0000001a,0x00000801,0x000007f8,0x0003003e,0x00000800,0x00000801,0x00050039, + 0x00000006,0x00000802,0x00000082,0x00000800,0x00050041,0x00000007,0x00000803,0x00000133, + 0x000003b1,0x0003003e,0x00000803,0x00000802,0x00040039,0x00000055,0x00000805,0x00000057, + 0x00050050,0x00000055,0x00000806,0x00000197,0x00000197,0x00050087,0x00000055,0x00000807, + 0x00000805,0x00000806,0x00040039,0x00000055,0x00000808,0x0000007b,0x00050041,0x0000001b, + 0x0000080a,0x00000133,0x00000197,0x0004003d,0x0000001a,0x0000080b,0x0000080a,0x0003003e, + 0x00000809,0x0000080b,0x0003003e,0x0000080c,0x00000807,0x0003003e,0x0000080d,0x00000808, + 0x00070039,0x0000001a,0x0000080e,0x000000c4,0x00000809,0x0000080c,0x0000080d,0x0003003e, + 0x00000804,0x0000080e,0x0004003d,0x0000001a,0x00000810,0x00000804,0x0003003e,0x0000080f, + 0x00000810,0x00050039,0x00000006,0x00000811,0x0000007f,0x0000080f,0x00050041,0x00000007, + 0x00000812,0x00000133,0x000003c3,0x0003003e,0x00000812,0x00000811,0x00050041,0x000000a3, + 0x00000813,0x00000133,0x000001ac,0x0004003d,0x000000a2,0x00000814,0x00000813,0x000500a4, + 0x000000a2,0x00000815,0x00000814,0x00000755,0x000400a8,0x000000a2,0x00000816,0x00000815, + 0x000300f7,0x00000818,0x00000000,0x000400fa,0x00000816,0x00000817,0x00000818,0x000200f8, + 0x00000817,0x00040039,0x00000006,0x00000819,0x00000069,0x000500b4,0x000000a2,0x0000081a, + 0x00000149,0x00000819,0x000200f9,0x00000818,0x000200f8,0x00000818,0x000700f5,0x000000a2, + 0x0000081b,0x00000815,0x00000136,0x0000081a,0x00000817,0x00050041,0x000000a3,0x0000081c, + 0x00000133,0x000003c4,0x0003003e,0x0000081c,0x0000081b,0x00050041,0x0000001b,0x0000081f, + 0x00000133,0x0000019c,0x0004003d,0x0000001a,0x00000820,0x0000081f,0x0003003e,0x0000081e, + 0x00000820,0x00050039,0x0000002f,0x00000821,0x00000095,0x0000081e,0x0003003e,0x0000081d, + 0x00000821,0x00050041,0x00000007,0x00000823,0x0000081d,0x000001e5,0x0004003d,0x00000006, + 0x00000824,0x00000823,0x0003003e,0x00000822,0x00000824,0x00050039,0x00000006,0x00000825, + 0x00000018,0x00000822,0x00050041,0x00000007,0x00000826,0x00000133,0x000003af,0x0003003e, + 0x00000826,0x00000825,0x00050041,0x00000007,0x00000828,0x0000081d,0x0000027e,0x0004003d, + 0x00000006,0x00000829,0x00000828,0x0003003e,0x00000827,0x00000829,0x00050039,0x00000006, + 0x0000082a,0x00000018,0x00000827,0x00050041,0x00000007,0x0000082b,0x00000133,0x000001a1, + 0x0003003e,0x0000082b,0x0000082a,0x00050041,0x00000007,0x0000082d,0x0000081d,0x00000282, + 0x0004003d,0x00000006,0x0000082e,0x0000082d,0x0003003e,0x0000082c,0x0000082e,0x00050039, + 0x00000006,0x0000082f,0x00000018,0x0000082c,0x00050041,0x00000007,0x00000830,0x00000133, + 0x000003b0,0x0003003e,0x00000830,0x0000082f,0x00050041,0x00000007,0x00000832,0x0000081d, + 0x000006ba,0x0004003d,0x00000006,0x00000833,0x00000832,0x0003003e,0x00000831,0x00000833, + 0x00050039,0x00000006,0x00000834,0x00000018,0x00000831,0x00050041,0x00000007,0x00000835, + 0x00000133,0x000001a7,0x0003003e,0x00000835,0x00000834,0x00050041,0x00000007,0x00000836, + 0x00000133,0x000001a7,0x0004003d,0x00000006,0x00000837,0x00000836,0x00050085,0x00000006, + 0x00000839,0x00000837,0x00000838,0x0006000c,0x00000006,0x0000083a,0x00000001,0x00000001, + 0x00000839,0x000500ba,0x000000a2,0x0000083b,0x0000083a,0x0000014a,0x000600a9,0x00000006, + 0x0000083c,0x0000083b,0x0000014a,0x00000149,0x00050041,0x00000007,0x0000083d,0x00000133, + 0x000001a7,0x0004003d,0x00000006,0x0000083e,0x0000083d,0x00050085,0x00000006,0x0000083f, + 0x0000083e,0x0000083c,0x00050041,0x00000007,0x00000840,0x00000133,0x000001a7,0x0003003e, + 0x00000840,0x0000083f,0x00050041,0x0000000f,0x00000841,0x00000134,0x00000229,0x0003003e, + 0x00000841,0x00000457,0x00050041,0x0000000f,0x00000842,0x00000134,0x0000019c,0x0003003e, + 0x00000842,0x00000457,0x00050041,0x00000007,0x00000843,0x00000134,0x00000192,0x0003003e, + 0x00000843,0x0000014a,0x00050041,0x00000007,0x00000844,0x00000134,0x00000197,0x0003003e, + 0x00000844,0x00000149,0x00050041,0x00000007,0x00000845,0x00000134,0x0000039c,0x0003003e, + 0x00000845,0x00000149,0x00050041,0x00000007,0x00000846,0x00000134,0x0000039d,0x0003003e, + 0x00000846,0x00000149,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000139,0x00000000, + 0x00000137,0x00030037,0x0000006d,0x00000138,0x000200f8,0x0000013a,0x0004003b,0x00000117, + 0x00000847,0x00000007,0x0004003b,0x000000f7,0x00000848,0x00000007,0x0004003b,0x0000006d, + 0x00000849,0x00000007,0x0004003b,0x00000117,0x0000084b,0x00000007,0x0004003b,0x000000f7, + 0x0000084d,0x00000007,0x0004003b,0x000000f7,0x0000085d,0x00000007,0x0004003b,0x00000117, + 0x00000861,0x00000007,0x0004003b,0x000000f7,0x00000863,0x00000007,0x0004003b,0x000000f7, + 0x00000868,0x00000007,0x0004003b,0x000000f7,0x0000086d,0x00000007,0x0004003b,0x000000f7, + 0x00000872,0x00000007,0x0004003b,0x000000f7,0x00000877,0x00000007,0x0004003b,0x0000000f, + 0x00000881,0x00000007,0x0004003b,0x0000000f,0x00000884,0x00000007,0x0004003b,0x0000006d, + 0x0000088f,0x00000007,0x0004003b,0x00000030,0x00000891,0x00000007,0x0004003b,0x0000006d, + 0x00000893,0x00000007,0x0004003b,0x00000007,0x00000895,0x00000007,0x0004003d,0x00000055, + 0x0000084a,0x00000138,0x0003003e,0x00000849,0x0000084a,0x0004003d,0x000000f5,0x0000084c, + 0x00000847,0x0003003e,0x0000084b,0x0000084c,0x0004003d,0x000000f6,0x0000084e,0x00000848, + 0x0003003e,0x0000084d,0x0000084e,0x00070039,0x00000002,0x0000084f,0x00000135,0x00000849, + 0x0000084b,0x0000084d,0x0004003d,0x000000f5,0x00000850,0x0000084b,0x0003003e,0x00000847, + 0x00000850,0x0004003d,0x000000f6,0x00000851,0x0000084d,0x0003003e,0x00000848,0x00000851, + 0x00050041,0x000000a3,0x00000852,0x00000847,0x000001ac,0x0004003d,0x000000a2,0x00000853, + 0x00000852,0x000300f7,0x00000855,0x00000000,0x000400fa,0x00000853,0x00000854,0x00000855, + 0x000200f8,0x00000854,0x00050041,0x000000a3,0x00000856,0x00000847,0x000003c4,0x0004003d, + 0x000000a2,0x00000857,0x00000856,0x000400a8,0x000000a2,0x00000858,0x00000857,0x000200f9, + 0x00000855,0x000200f8,0x00000855,0x000700f5,0x000000a2,0x00000859,0x00000853,0x0000013a, + 0x00000858,0x00000854,0x000300f7,0x0000085b,0x00000000,0x000400fa,0x00000859,0x0000085a, + 0x0000085b,0x000200f8,0x0000085a,0x0004003d,0x000000f5,0x0000085c,0x00000847,0x0004003d, + 0x000000f6,0x0000085e,0x00000848,0x0003003e,0x0000085d,0x0000085e,0x00060039,0x00000002, + 0x0000085f,0x0000011e,0x0000085c,0x0000085d,0x0004003d,0x000000f6,0x00000860,0x0000085d, + 0x0003003e,0x00000848,0x00000860,0x000200f9,0x0000085b,0x000200f8,0x0000085b,0x0004003d, + 0x000000f5,0x00000862,0x00000847,0x0003003e,0x00000861,0x00000862,0x0004003d,0x000000f6, + 0x00000864,0x00000848,0x0003003e,0x00000863,0x00000864,0x00060039,0x00000002,0x00000865, + 0x0000012b,0x00000861,0x00000863,0x0004003d,0x000000f6,0x00000866,0x00000863,0x0003003e, + 0x00000848,0x00000866,0x0004003d,0x000000f5,0x00000867,0x00000847,0x0004003d,0x000000f6, + 0x00000869,0x00000848,0x0003003e,0x00000868,0x00000869,0x00060039,0x00000002,0x0000086a, + 0x0000012f,0x00000867,0x00000868,0x0004003d,0x000000f6,0x0000086b,0x00000868,0x0003003e, + 0x00000848,0x0000086b,0x0004003d,0x000000f5,0x0000086c,0x00000847,0x0004003d,0x000000f6, + 0x0000086e,0x00000848,0x0003003e,0x0000086d,0x0000086e,0x00060039,0x00000002,0x0000086f, + 0x00000103,0x0000086c,0x0000086d,0x0004003d,0x000000f6,0x00000870,0x0000086d,0x0003003e, + 0x00000848,0x00000870,0x0004003d,0x000000f5,0x00000871,0x00000847,0x0004003d,0x000000f6, + 0x00000873,0x00000848,0x0003003e,0x00000872,0x00000873,0x00060039,0x00000002,0x00000874, + 0x00000126,0x00000871,0x00000872,0x0004003d,0x000000f6,0x00000875,0x00000872,0x0003003e, + 0x00000848,0x00000875,0x0004003d,0x000000f5,0x00000876,0x00000847,0x0004003d,0x000000f6, + 0x00000878,0x00000848,0x0003003e,0x00000877,0x00000878,0x00060039,0x00000002,0x00000879, + 0x00000122,0x00000876,0x00000877,0x0004003d,0x000000f6,0x0000087a,0x00000877,0x0003003e, + 0x00000848,0x0000087a,0x00040039,0x00000006,0x0000087b,0x00000091,0x00050041,0x0000000f, + 0x0000087c,0x00000848,0x0000019c,0x0004003d,0x0000000e,0x0000087d,0x0000087c,0x00060050, + 0x0000000e,0x0000087e,0x0000087b,0x0000087b,0x0000087b,0x00050088,0x0000000e,0x0000087f, + 0x0000087d,0x0000087e,0x00050041,0x0000000f,0x00000880,0x00000848,0x0000019c,0x0003003e, + 0x00000880,0x0000087f,0x00050041,0x0000000f,0x00000882,0x00000848,0x0000019c,0x0004003d, + 0x0000000e,0x00000883,0x00000882,0x0003003e,0x00000881,0x00000883,0x0003003e,0x00000884, + 0x00000457,0x00060039,0x0000000e,0x00000885,0x00000047,0x00000881,0x00000884,0x00050041, + 0x0000000f,0x00000886,0x00000848,0x0000019c,0x0003003e,0x00000886,0x00000885,0x00050041, + 0x0000000f,0x00000887,0x00000848,0x0000019c,0x0004003d,0x0000000e,0x00000888,0x00000887, + 0x00050041,0x00000007,0x00000889,0x00000848,0x0000039c,0x0004003d,0x00000006,0x0000088a, + 0x00000889,0x00050051,0x00000006,0x0000088b,0x00000888,0x00000000,0x00050051,0x00000006, + 0x0000088c,0x00000888,0x00000001,0x00050051,0x00000006,0x0000088d,0x00000888,0x00000002, + 0x00070050,0x0000002f,0x0000088e,0x0000088b,0x0000088c,0x0000088d,0x0000088a,0x0004003d, + 0x00000055,0x00000890,0x00000138,0x0003003e,0x0000088f,0x00000890,0x0003003e,0x00000891, + 0x0000088e,0x00060039,0x00000002,0x00000892,0x00000079,0x0000088f,0x00000891,0x0004003d, + 0x00000055,0x00000894,0x00000138,0x0003003e,0x00000893,0x00000894,0x0003003e,0x00000895, + 0x00000149,0x00060039,0x00000002,0x00000896,0x0000008b,0x00000893,0x00000895,0x000100fd, + 0x00010038 }; diff --git a/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h b/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h index eb4cbcc0b..91e60b434 100644 --- a/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h +++ b/gpu/vk/shaders/fsr3_luma_instability_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_LUMA_INSTABILITY_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x0000027a,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h b/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h index 831563084..dd36a52c4 100644 --- a/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h +++ b/gpu/vk/shaders/fsr3_luma_pyramid_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_LUMA_PYRAMID_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x00000747,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h b/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h index 62fd5bf40..971255812 100644 --- a/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h +++ b/gpu/vk/shaders/fsr3_luma_pyramid_nowave_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_LUMA_PYRAMID_NOWAVE_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x00000787,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h b/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h index d03156242..9d53e182e 100644 --- a/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h +++ b/gpu/vk/shaders/fsr3_prepare_inputs_comp_spv.h @@ -1,9 +1,9 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_PREPARE_INPUTS_COMP_SPV[] = { - 0x07230203,0x00010300,0x0008000b,0x0000028f,0x00000000,0x00020011,0x00000001,0x00020011, + 0x07230203,0x00010300,0x0008000b,0x00000298,0x00000000,0x00020011,0x00000001,0x00020011, 0x00000031,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e, - 0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000027a, + 0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000283, 0x00060010,0x00000004,0x00000011,0x00000008,0x00000008,0x00000001,0x00030003,0x00000002, 0x000001c2,0x000b0004,0x455f4c47,0x735f5458,0x6c706d61,0x656c7265,0x745f7373,0x75747865, 0x665f6572,0x74636e75,0x736e6f69,0x00000000,0x000b0004,0x455f4c47,0x735f5458,0x65646168, @@ -16,547 +16,553 @@ const uint32_t FSR3_PREPARE_INPUTS_COMP_SPV[] = { 0x72757461,0x28657461,0x003b3166,0x00030005,0x0000000f,0x00000078,0x00060005,0x00000016, 0x46786666,0x74636172,0x32667628,0x0000003b,0x00030005,0x00000015,0x00000078,0x00060005, 0x0000001b,0x4d786666,0x66286e69,0x31663b31,0x0000003b,0x00030005,0x00000019,0x00000078, - 0x00030005,0x0000001a,0x00000079,0x00060005,0x00000022,0x4d786666,0x76287861,0x763b3366, - 0x003b3366,0x00030005,0x00000020,0x00000078,0x00030005,0x00000021,0x00000079,0x00050005, - 0x00000027,0x646e6552,0x69537265,0x0028657a,0x000b0005,0x0000002b,0x69766544,0x6f546563, - 0x77656956,0x63617053,0x61725465,0x6f66736e,0x61466d72,0x726f7463,0x00002873,0x00070005, - 0x0000002e,0x69746f4d,0x65566e6f,0x726f7463,0x6c616353,0x00002865,0x00090005,0x00000031, - 0x77656956,0x63617053,0x4d6f5465,0x72657465,0x63614673,0x28726f74,0x00000000,0x00070005, - 0x00000036,0x64616f4c,0x75706e49,0x70654474,0x76286874,0x003b3269,0x00040005,0x00000035, - 0x50785069,0x0000736f,0x00070005,0x0000003a,0x64616f4c,0x75706e49,0x6c6f4374,0x7628726f, - 0x003b3269,0x00040005,0x00000039,0x50785069,0x0000736f,0x00090005,0x0000003e,0x64616f4c, - 0x75706e49,0x746f4d74,0x566e6f69,0x6f746365,0x69762872,0x00003b32,0x00090005,0x0000003d, - 0x44785069,0x74616c69,0x6f4d6465,0x6e6f6974,0x74636556,0x6f50726f,0x00000073,0x00090005, - 0x00000043,0x726f7453,0x72614665,0x73656874,0x70654474,0x76286874,0x663b3269,0x00003b31, - 0x00040005,0x00000041,0x50785069,0x0000736f,0x00040005,0x00000042,0x70654466,0x00006874, - 0x00090005,0x00000047,0x726f7453,0x72754365,0x746e6572,0x616d754c,0x32697628,0x3b31663b, - 0x00000000,0x00040005,0x00000045,0x50785069,0x0000736f,0x00040005,0x00000046,0x6d754c66, - 0x00000061,0x000a0005,0x0000004b,0x726f7453,0x63655265,0x74736e6f,0x74637572,0x65446465, - 0x28687470,0x3b326976,0x003b3166,0x00050005,0x00000049,0x53785069,0x6c706d61,0x00000065, - 0x00040005,0x0000004a,0x70654466,0x00006874,0x00090005,0x0000004f,0x726f7453,0x6c694465, - 0x64657461,0x74706544,0x69762868,0x31663b32,0x0000003b,0x00040005,0x0000004d,0x50785069, - 0x0000736f,0x00040005,0x0000004e,0x70654466,0x00006874,0x000b0005,0x00000054,0x726f7453, - 0x6c694465,0x64657461,0x69746f4d,0x65566e6f,0x726f7463,0x32697628,0x3266763b,0x0000003b, - 0x00040005,0x00000052,0x50785069,0x0000736f,0x00060005,0x00000053,0x746f4d66,0x566e6f69, - 0x6f746365,0x00000072,0x000b0005,0x00000057,0x6f636552,0x7274736e,0x65746375,0x70654464, - 0x764d6874,0x68547850,0x68736572,0x28646c6f,0x003b3166,0x00080005,0x00000056,0x61654e66, - 0x74736572,0x74706544,0x4d6e4968,0x72657465,0x00000073,0x00070005,0x0000005b,0x34746547, - 0x6c65564b,0x7469636f,0x66762879,0x00003b32,0x00060005,0x0000005a,0x746f4d66,0x566e6f69, - 0x6f746365,0x00000072,0x00060005,0x0000005f,0x54424752,0x6d754c6f,0x66762861,0x00003b33, - 0x00050005,0x0000005e,0x6e694c66,0x52726165,0x00006267,0x00070005,0x00000065,0x6e4f7349, - 0x65726353,0x76286e65,0x763b3269,0x003b3269,0x00030005,0x00000063,0x00736f70,0x00040005, - 0x00000064,0x657a6973,0x00000000,0x00080005,0x00000068,0x56746547,0x53776569,0x65636170, - 0x74706544,0x31662868,0x0000003b,0x00060005,0x00000067,0x76654466,0x44656369,0x68747065, - 0x00000000,0x000a0005,0x0000006b,0x56746547,0x53776569,0x65636170,0x74706544,0x4d6e4968, - 0x72657465,0x31662873,0x0000003b,0x00060005,0x0000006a,0x76654466,0x44656369,0x68747065, - 0x00000000,0x00080005,0x00000071,0x696c6942,0x7261656e,0x706d6153,0x676e696c,0x61746144, - 0x00000000,0x00060006,0x00000071,0x00000000,0x66664f69,0x73746573,0x00000000,0x00060006, - 0x00000071,0x00000001,0x69655766,0x73746867,0x00000000,0x00060006,0x00000071,0x00000002, - 0x73614269,0x736f5065,0x00000000,0x000b0005,0x00000075,0x42746547,0x6e696c69,0x53726165, - 0x6c706d61,0x44676e69,0x28617461,0x3b326676,0x3b326976,0x00000000,0x00030005,0x00000073, - 0x00765566,0x00040005,0x00000074,0x7a695369,0x00000065,0x000b0005,0x0000007b,0x6f636552, - 0x7274736e,0x50746375,0x44766572,0x68747065,0x32697628,0x3b31663b,0x3b326676,0x00000000, - 0x00040005,0x00000078,0x50785069,0x0000736f,0x00040005,0x00000079,0x70654466,0x00006874, - 0x00060005,0x0000007a,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00060005,0x0000007d, - 0x74706544,0x74784568,0x73746e65,0x00000000,0x00060006,0x0000007d,0x00000000,0x61654e66, - 0x74736572,0x00000000,0x00070006,0x0000007d,0x00000001,0x61654e66,0x74736572,0x726f6f43, - 0x00000064,0x00060006,0x0000007d,0x00000002,0x72614666,0x73656874,0x00000074,0x00080005, - 0x00000080,0x646e6946,0x74706544,0x74784568,0x73746e65,0x32697628,0x0000003b,0x00040005, - 0x0000007f,0x50785069,0x0000736f,0x00100005,0x00000085,0x616c6944,0x6f4d6574,0x6e6f6974, - 0x74636556,0x7628726f,0x733b3269,0x63757274,0x65442d74,0x45687470,0x6e657478,0x662d7374, - 0x69762d31,0x31662d32,0x00003b31,0x00040005,0x00000083,0x50785069,0x0000736f,0x00060005, - 0x00000084,0x74706564,0x74784568,0x73746e65,0x00000000,0x00090005,0x00000088,0x43746547, - 0x65727275,0x7246746e,0x4c656d61,0x28616d75,0x3b326976,0x00000000,0x00040005,0x00000087, - 0x50785069,0x0000736f,0x00070005,0x0000008c,0x70657250,0x49657261,0x7475706e,0x69762873, - 0x00003b32,0x00040005,0x0000008b,0x50785069,0x0000736f,0x00070005,0x000000a8,0x53466263, - 0x50553352,0x4c414353,0x745f5245,0x00000000,0x00060006,0x000000a8,0x00000000,0x6e655269, - 0x53726564,0x00657a69,0x000a0006,0x000000a8,0x00000001,0x65725069,0x756f6976,0x61724673, - 0x6552656d,0x7265646e,0x657a6953,0x00000000,0x00070006,0x000000a8,0x00000002,0x73705569, - 0x656c6163,0x657a6953,0x00000000,0x000a0006,0x000000a8,0x00000003,0x65725069,0x756f6976, - 0x61724673,0x7055656d,0x6c616373,0x7a695365,0x00000065,0x00070006,0x000000a8,0x00000004, - 0x78614d69,0x646e6552,0x69537265,0x0000657a,0x00070006,0x000000a8,0x00000005,0x78614d69, - 0x63737055,0x53656c61,0x00657a69,0x00080006,0x000000a8,0x00000006,0x76654466,0x54656369, - 0x6569566f,0x70654477,0x00006874,0x00050006,0x000000a8,0x00000007,0x74694a66,0x00726574, - 0x00090006,0x000000a8,0x00000008,0x65725066,0x756f6976,0x61724673,0x694a656d,0x72657474, - 0x00000000,0x00080006,0x000000a8,0x00000009,0x746f4d66,0x566e6f69,0x6f746365,0x61635372, - 0x0000656c,0x00080006,0x000000a8,0x0000000a,0x776f4466,0x6163736e,0x6146656c,0x726f7463, - 0x00000000,0x000b0006,0x000000a8,0x0000000b,0x746f4d66,0x566e6f69,0x6f746365,0x74694a72, - 0x43726574,0x65636e61,0x74616c6c,0x006e6f69,0x00060006,0x000000a8,0x0000000c,0x6e615466, - 0x666c6148,0x00564f46,0x00090006,0x000000a8,0x0000000d,0x74694a66,0x53726574,0x65757165, - 0x4c65636e,0x74676e65,0x00000068,0x00060006,0x000000a8,0x0000000e,0x6c654466,0x69546174, - 0x0000656d,0x00080006,0x000000a8,0x0000000f,0x6c654466,0x72506174,0x70784565,0x7275736f, - 0x00000065,0x000a0006,0x000000a8,0x00000010,0x65695666,0x61705377,0x6f546563,0x6574654d, - 0x61467372,0x726f7463,0x00000000,0x00060006,0x000000a8,0x00000011,0x61724666,0x6e49656d, - 0x00786564,0x00070006,0x000000a8,0x00000012,0x6c655666,0x7469636f,0x63614679,0x00726f74, - 0x00080006,0x000000a8,0x00000013,0x61655266,0x76697463,0x73656e65,0x61635373,0x0000656c, - 0x00080006,0x000000a8,0x00000014,0x61685366,0x676e6964,0x6e616843,0x63536567,0x00656c61, - 0x000a0006,0x000000a8,0x00000015,0x63634166,0x6c756d75,0x6f697461,0x6464416e,0x65506465, - 0x61724672,0x0000656d,0x000b0006,0x000000a8,0x00000016,0x6e694d66,0x6f736944,0x756c6363, - 0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974,0x00000000,0x00060005,0x000000aa,0x53466263, - 0x70553352,0x6c616373,0x00007265,0x00060005,0x000000c5,0x6e695f72,0x5f747570,0x74706564, - 0x00000068,0x00080005,0x000000cd,0x6e695f72,0x5f747570,0x6f6c6f63,0x696a5f72,0x72657474, - 0x00006465,0x00070005,0x000000d4,0x63725366,0x69746f4d,0x65566e6f,0x726f7463,0x00000000, - 0x00080005,0x000000d5,0x6e695f72,0x5f747570,0x69746f6d,0x765f6e6f,0x6f746365,0x00007372, - 0x00060005,0x000000da,0x4d765566,0x6f69746f,0x6365566e,0x00726f74,0x00070005,0x000000e3, - 0x665f7772,0x68747261,0x5f747365,0x74706564,0x00000068,0x00060005,0x000000e8,0x635f7772, - 0x65727275,0x6c5f746e,0x00616d75,0x00040005,0x000000ee,0x70654475,0x00006874,0x000c0005, - 0x000000f3,0x725f7772,0x6e6f6365,0x75727473,0x64657463,0x6572705f,0x756f6976,0x656e5f73, - 0x73657261,0x65645f74,0x00687470,0x00070005,0x000000fc,0x645f7772,0x74616c69,0x645f6465, - 0x68747065,0x00000000,0x00090005,0x00000103,0x645f7772,0x74616c69,0x6d5f6465,0x6f69746f, - 0x65765f6e,0x726f7463,0x00000073,0x00040005,0x0000010f,0x61726170,0x0000006d,0x00040005, - 0x00000111,0x61726170,0x0000006d,0x00040005,0x00000112,0x61726170,0x0000006d,0x00040005, - 0x00000113,0x61726170,0x0000006d,0x00070005,0x00000132,0x76654466,0x54656369,0x6569566f, - 0x70654477,0x00006874,0x00040005,0x0000013d,0x61726170,0x0000006d,0x00050005,0x00000144, - 0x53785066,0x6c706d61,0x00000065,0x00040005,0x0000014d,0x61746164,0x00000000,0x00040005, - 0x00000153,0x46785066,0x00636172,0x00040005,0x00000154,0x61726170,0x0000006d,0x00080005, - 0x00000180,0x61654e66,0x74736572,0x74706544,0x4d6e4968,0x72657465,0x00000073,0x00040005, - 0x00000181,0x61726170,0x0000006d,0x00040005,0x00000185,0x61726170,0x0000006d,0x00040005, - 0x00000186,0x61726170,0x0000006d,0x000a0005,0x00000188,0x63655266,0x74736e6f,0x74637572, - 0x65446465,0x764d7470,0x65726854,0x6c6f6873,0x00000064,0x00040005,0x00000189,0x61726170, - 0x0000006d,0x00040005,0x0000018c,0x61726170,0x0000006d,0x00030005,0x00000194,0x00765566, - 0x00060005,0x0000019c,0x70655266,0x656a6f72,0x64657463,0x00007655,0x00060005,0x000001a0, - 0x696c6962,0x7261656e,0x6f666e49,0x00000000,0x00040005,0x000001a2,0x61726170,0x0000006d, - 0x00040005,0x000001a4,0x61726170,0x0000006d,0x00060005,0x000001a7,0x6d615369,0x49656c70, - 0x7865646e,0x00000000,0x00040005,0x000001b0,0x66664f69,0x00746573,0x00040005,0x000001b4, - 0x69655766,0x00746867,0x00050005,0x000001bd,0x6f745369,0x6f506572,0x00000073,0x00040005, - 0x000001c3,0x61726170,0x0000006d,0x00040005,0x000001c5,0x61726170,0x0000006d,0x00040005, - 0x000001c9,0x61726170,0x0000006d,0x00040005,0x000001cb,0x61726170,0x0000006d,0x00060005, - 0x000001d0,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x000001d8,0x736f5069, - 0x00000000,0x00050005,0x000001e5,0x65646e69,0x6c626178,0x00000065,0x00040005,0x000001eb, - 0x74706564,0x00000068,0x00040005,0x000001ed,0x61726170,0x0000006d,0x00040005,0x000001f4, - 0x65747865,0x0073746e,0x00040005,0x00000204,0x736f5069,0x00000000,0x00050005,0x00000207, - 0x65646e69,0x6c626178,0x00000065,0x00040005,0x0000020c,0x61726170,0x0000006d,0x00040005, - 0x0000020e,0x61726170,0x0000006d,0x00050005,0x00000212,0x44644e66,0x68747065,0x00000000, - 0x00040005,0x0000021c,0x61726170,0x0000006d,0x00040005,0x0000021f,0x61726170,0x0000006d, - 0x00050005,0x0000022c,0x6d615369,0x50656c70,0x0000736f,0x00070005,0x0000022e,0x746f4d69, - 0x566e6f69,0x6f746365,0x736f5072,0x00000000,0x00080005,0x00000230,0x6c694466,0x64657461, - 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x00000231,0x61726170,0x0000006d, - 0x00040005,0x00000237,0x62675266,0x00000000,0x00040005,0x00000239,0x61726170,0x0000006d, - 0x00040005,0x0000023c,0x61726170,0x0000006d,0x00040005,0x0000023d,0x61726170,0x0000006d, - 0x00040005,0x0000023f,0x6d754c66,0x00000061,0x00040005,0x00000240,0x61726170,0x0000006d, - 0x00060005,0x00000246,0x74706564,0x74784568,0x73746e65,0x00000000,0x00040005,0x00000247, - 0x61726170,0x0000006d,0x00080005,0x0000024a,0x6c694466,0x64657461,0x69746f4d,0x65566e6f, - 0x726f7463,0x00000000,0x00040005,0x0000024c,0x61726170,0x0000006d,0x00040005,0x0000024f, - 0x61726170,0x0000006d,0x00040005,0x00000251,0x61726170,0x0000006d,0x00040005,0x00000254, - 0x61726170,0x0000006d,0x00040005,0x00000257,0x61726170,0x0000006d,0x00040005,0x00000259, - 0x61726170,0x0000006d,0x00040005,0x0000025c,0x61726170,0x0000006d,0x00040005,0x0000025e, - 0x61726170,0x0000006d,0x00080005,0x00000262,0x72614666,0x73656874,0x70654474,0x6e496874, - 0x6574654d,0x00007372,0x00040005,0x00000263,0x61726170,0x0000006d,0x00040005,0x00000267, - 0x61726170,0x0000006d,0x00040005,0x00000268,0x61726170,0x0000006d,0x00040005,0x0000026a, - 0x61726170,0x0000006d,0x00040005,0x0000026c,0x61726170,0x0000006d,0x00040005,0x0000026f, - 0x6d754c66,0x00000061,0x00040005,0x00000270,0x61726170,0x0000006d,0x00040005,0x00000273, - 0x61726170,0x0000006d,0x00040005,0x00000275,0x61726170,0x0000006d,0x00080005,0x0000027a, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00040005,0x0000027e, - 0x61726170,0x0000006d,0x00060005,0x00000284,0x6f505f73,0x43746e69,0x706d616c,0x00000000, - 0x00060005,0x00000285,0x694c5f73,0x7261656e,0x6d616c43,0x00000070,0x00030047,0x000000a8, - 0x00000002,0x00050048,0x000000a8,0x00000000,0x00000023,0x00000000,0x00050048,0x000000a8, - 0x00000001,0x00000023,0x00000008,0x00050048,0x000000a8,0x00000002,0x00000023,0x00000010, - 0x00050048,0x000000a8,0x00000003,0x00000023,0x00000018,0x00050048,0x000000a8,0x00000004, - 0x00000023,0x00000020,0x00050048,0x000000a8,0x00000005,0x00000023,0x00000028,0x00050048, - 0x000000a8,0x00000006,0x00000023,0x00000030,0x00050048,0x000000a8,0x00000007,0x00000023, - 0x00000040,0x00050048,0x000000a8,0x00000008,0x00000023,0x00000048,0x00050048,0x000000a8, - 0x00000009,0x00000023,0x00000050,0x00050048,0x000000a8,0x0000000a,0x00000023,0x00000058, - 0x00050048,0x000000a8,0x0000000b,0x00000023,0x00000060,0x00050048,0x000000a8,0x0000000c, - 0x00000023,0x00000068,0x00050048,0x000000a8,0x0000000d,0x00000023,0x0000006c,0x00050048, - 0x000000a8,0x0000000e,0x00000023,0x00000070,0x00050048,0x000000a8,0x0000000f,0x00000023, - 0x00000074,0x00050048,0x000000a8,0x00000010,0x00000023,0x00000078,0x00050048,0x000000a8, - 0x00000011,0x00000023,0x0000007c,0x00050048,0x000000a8,0x00000012,0x00000023,0x00000080, - 0x00050048,0x000000a8,0x00000013,0x00000023,0x00000084,0x00050048,0x000000a8,0x00000014, - 0x00000023,0x00000088,0x00050048,0x000000a8,0x00000015,0x00000023,0x0000008c,0x00050048, - 0x000000a8,0x00000016,0x00000023,0x00000090,0x00040047,0x000000aa,0x00000021,0x00000008, - 0x00040047,0x000000aa,0x00000022,0x00000000,0x00040047,0x000000c5,0x00000021,0x00000001, - 0x00040047,0x000000c5,0x00000022,0x00000000,0x00040047,0x000000cd,0x00000021,0x00000002, - 0x00040047,0x000000cd,0x00000022,0x00000000,0x00040047,0x000000d5,0x00000021,0x00000000, - 0x00040047,0x000000d5,0x00000022,0x00000000,0x00040047,0x000000e3,0x00000021,0x00000006, - 0x00040047,0x000000e3,0x00000022,0x00000000,0x00040047,0x000000e8,0x00000021,0x00000007, - 0x00040047,0x000000e8,0x00000022,0x00000000,0x00040047,0x000000f3,0x00000021,0x00000005, - 0x00040047,0x000000f3,0x00000022,0x00000000,0x00030047,0x000000fc,0x00000019,0x00040047, - 0x000000fc,0x00000021,0x00000004,0x00040047,0x000000fc,0x00000022,0x00000000,0x00030047, - 0x00000103,0x00000019,0x00040047,0x00000103,0x00000021,0x00000003,0x00040047,0x00000103, - 0x00000022,0x00000000,0x00040047,0x0000027a,0x0000000b,0x0000001c,0x00040047,0x00000284, - 0x00000021,0x000003e8,0x00040047,0x00000284,0x00000022,0x00000000,0x00040047,0x00000285, - 0x00000021,0x000003e9,0x00040047,0x00000285,0x00000022,0x00000000,0x00040047,0x0000028e, - 0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016, - 0x00000006,0x00000020,0x00040020,0x00000007,0x00000007,0x00000006,0x00060021,0x00000008, - 0x00000006,0x00000007,0x00000007,0x00000007,0x00040021,0x0000000e,0x00000006,0x00000007, - 0x00040017,0x00000012,0x00000006,0x00000002,0x00040020,0x00000013,0x00000007,0x00000012, - 0x00040021,0x00000014,0x00000012,0x00000013,0x00050021,0x00000018,0x00000006,0x00000007, - 0x00000007,0x00040017,0x0000001d,0x00000006,0x00000003,0x00040020,0x0000001e,0x00000007, - 0x0000001d,0x00050021,0x0000001f,0x0000001d,0x0000001e,0x0000001e,0x00040015,0x00000024, - 0x00000020,0x00000001,0x00040017,0x00000025,0x00000024,0x00000002,0x00030021,0x00000026, - 0x00000025,0x00040017,0x00000029,0x00000006,0x00000004,0x00030021,0x0000002a,0x00000029, - 0x00030021,0x0000002d,0x00000012,0x00030021,0x00000030,0x00000006,0x00040020,0x00000033, - 0x00000007,0x00000025,0x00040021,0x00000034,0x00000006,0x00000033,0x00040021,0x00000038, - 0x0000001d,0x00000033,0x00040021,0x0000003c,0x00000012,0x00000033,0x00050021,0x00000040, - 0x00000002,0x00000033,0x00000007,0x00050021,0x00000051,0x00000002,0x00000033,0x00000013, - 0x00040021,0x00000059,0x00000006,0x00000013,0x00040021,0x0000005d,0x00000006,0x0000001e, - 0x00020014,0x00000061,0x00050021,0x00000062,0x00000061,0x00000033,0x00000033,0x00040015, - 0x0000006d,0x00000020,0x00000000,0x0004002b,0x0000006d,0x0000006e,0x00000004,0x0004001c, - 0x0000006f,0x00000025,0x0000006e,0x0004001c,0x00000070,0x00000006,0x0000006e,0x0005001e, - 0x00000071,0x0000006f,0x00000070,0x00000025,0x00050021,0x00000072,0x00000071,0x00000013, - 0x00000033,0x00060021,0x00000077,0x00000002,0x00000033,0x00000007,0x00000013,0x0005001e, - 0x0000007d,0x00000006,0x00000025,0x00000006,0x00040021,0x0000007e,0x0000007d,0x00000033, - 0x00050021,0x00000082,0x00000012,0x00000033,0x0000007d,0x00040021,0x0000008a,0x00000002, - 0x00000033,0x0004002b,0x00000006,0x00000095,0x00000000,0x0004002b,0x00000006,0x00000096, - 0x3f800000,0x0019001e,0x000000a8,0x00000025,0x00000025,0x00000025,0x00000025,0x00000025, - 0x00000025,0x00000029,0x00000012,0x00000012,0x00000012,0x00000012,0x00000012,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00040020,0x000000a9,0x00000002,0x000000a8,0x0004003b,0x000000a9, - 0x000000aa,0x00000002,0x0004002b,0x00000024,0x000000ab,0x00000000,0x00040020,0x000000ac, - 0x00000002,0x00000025,0x0004002b,0x00000024,0x000000b1,0x00000006,0x00040020,0x000000b2, - 0x00000002,0x00000029,0x0004002b,0x00000024,0x000000b7,0x00000009,0x00040020,0x000000b8, - 0x00000002,0x00000012,0x0004002b,0x00000024,0x000000bd,0x00000010,0x00040020,0x000000be, - 0x00000002,0x00000006,0x00090019,0x000000c3,0x00000006,0x00000001,0x00000000,0x00000000, - 0x00000000,0x00000001,0x00000000,0x00040020,0x000000c4,0x00000000,0x000000c3,0x0004003b, - 0x000000c4,0x000000c5,0x00000000,0x0004002b,0x0000006d,0x000000c9,0x00000000,0x0004003b, - 0x000000c4,0x000000cd,0x00000000,0x0004003b,0x000000c4,0x000000d5,0x00000000,0x00090019, - 0x000000e1,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000009, - 0x00040020,0x000000e2,0x00000000,0x000000e1,0x0004003b,0x000000e2,0x000000e3,0x00000000, - 0x0004003b,0x000000e2,0x000000e8,0x00000000,0x00040020,0x000000ed,0x00000007,0x0000006d, - 0x00090019,0x000000f1,0x0000006d,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002, - 0x00000021,0x00040020,0x000000f2,0x00000000,0x000000f1,0x0004003b,0x000000f2,0x000000f3, - 0x00000000,0x00040020,0x000000f6,0x0000000b,0x0000006d,0x0004002b,0x0000006d,0x000000f8, - 0x00000001,0x00090019,0x000000fa,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000, - 0x00000002,0x00000003,0x00040020,0x000000fb,0x00000000,0x000000fa,0x0004003b,0x000000fb, - 0x000000fc,0x00000000,0x00090019,0x00000101,0x00000006,0x00000001,0x00000000,0x00000000, - 0x00000000,0x00000002,0x00000007,0x00040020,0x00000102,0x00000000,0x00000101,0x0004003b, - 0x00000102,0x00000103,0x00000000,0x0004002b,0x00000006,0x0000010a,0x3e800000,0x0004002b, - 0x00000006,0x0000010b,0x3f400000,0x0004002b,0x00000006,0x0000010d,0x42c80000,0x0004002b, - 0x00000006,0x00000118,0x45700000,0x0004002b,0x00000006,0x00000119,0x45070000,0x0005002c, - 0x00000012,0x0000011a,0x00000118,0x00000119,0x0004002b,0x00000006,0x00000120,0x3e59b3d0, - 0x0004002b,0x00000006,0x00000121,0x3f371759,0x0004002b,0x00000006,0x00000122,0x3d93dd98, - 0x0006002c,0x0000001d,0x00000123,0x00000120,0x00000121,0x00000122,0x00040017,0x00000128, - 0x0000006d,0x00000002,0x00040017,0x0000012c,0x00000061,0x00000002,0x00040020,0x00000131, - 0x00000007,0x00000029,0x0004002b,0x00000006,0x00000149,0x3f000000,0x0005002c,0x00000012, - 0x0000014a,0x00000149,0x00000149,0x00040020,0x0000014c,0x00000007,0x00000071,0x0004002b, - 0x00000024,0x0000014e,0x00000002,0x0005002c,0x00000025,0x00000157,0x000000ab,0x000000ab, - 0x0004002b,0x00000024,0x00000159,0x00000001,0x0005002c,0x00000025,0x0000015a,0x00000159, - 0x000000ab,0x0005002c,0x00000025,0x0000015c,0x000000ab,0x00000159,0x0004002b,0x00000024, - 0x0000015e,0x00000003,0x0005002c,0x00000025,0x0000015f,0x00000159,0x00000159,0x0004002b, - 0x00000006,0x00000184,0x477fe000,0x00040020,0x000001a6,0x00000007,0x00000024,0x0004002b, - 0x00000024,0x000001ae,0x00000004,0x0004002b,0x00000006,0x000001b9,0x3a1fe868,0x0004002b, - 0x0000006d,0x000001da,0x00000009,0x0004001c,0x000001db,0x00000025,0x000001da,0x0004002b, - 0x00000024,0x000001dc,0xffffffff,0x0005002c,0x00000025,0x000001dd,0x000000ab,0x000001dc, - 0x0005002c,0x00000025,0x000001de,0x000001dc,0x000000ab,0x0005002c,0x00000025,0x000001df, - 0x000001dc,0x00000159,0x0005002c,0x00000025,0x000001e0,0x000001dc,0x000001dc,0x0005002c, - 0x00000025,0x000001e1,0x00000159,0x000001dc,0x000c002c,0x000001db,0x000001e2,0x00000157, - 0x0000015a,0x0000015c,0x000001dd,0x000001de,0x000001df,0x0000015f,0x000001e0,0x000001e1, - 0x00040020,0x000001e4,0x00000007,0x000001db,0x0004001c,0x000001e9,0x00000006,0x000001da, - 0x00040020,0x000001ea,0x00000007,0x000001e9,0x00040020,0x000001f3,0x00000007,0x0000007d, - 0x0006002c,0x0000001d,0x00000238,0x00000095,0x00000095,0x00000095,0x00040017,0x00000278, - 0x0000006d,0x00000003,0x00040020,0x00000279,0x00000001,0x00000278,0x0004003b,0x00000279, - 0x0000027a,0x00000001,0x0004002b,0x00000006,0x00000280,0x387fda40,0x0004002b,0x00000006, - 0x00000281,0x37801002,0x0002001a,0x00000282,0x00040020,0x00000283,0x00000000,0x00000282, - 0x0004003b,0x00000283,0x00000284,0x00000000,0x0004003b,0x00000283,0x00000285,0x00000000, - 0x0004002b,0x00000006,0x00000286,0x7f7fffff,0x0004002b,0x00000006,0x00000287,0x00800000, - 0x0004002b,0x00000006,0x00000288,0x3d800000,0x0004002b,0x00000006,0x00000289,0x3d3d70a4, - 0x0004002b,0x00000006,0x0000028a,0x3e400000,0x0004002b,0x00000006,0x0000028b,0x40000000, - 0x0004002b,0x00000006,0x0000028c,0x461c4000,0x0004002b,0x0000006d,0x0000028d,0x00000008, - 0x0006002c,0x00000278,0x0000028e,0x0000028d,0x0000028d,0x000000f8,0x00050036,0x00000002, - 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000033,0x0000027e, - 0x00000007,0x0004003d,0x00000278,0x0000027b,0x0000027a,0x0007004f,0x00000128,0x0000027c, - 0x0000027b,0x0000027b,0x00000000,0x00000001,0x0004007c,0x00000025,0x0000027d,0x0000027c, - 0x0003003e,0x0000027e,0x0000027d,0x00050039,0x00000002,0x0000027f,0x0000008c,0x0000027e, - 0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000c,0x00000000,0x00000008,0x00030037, - 0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x00030037,0x00000007,0x0000000b, - 0x000200f8,0x0000000d,0x0004003d,0x00000006,0x0000008e,0x00000009,0x0004003d,0x00000006, - 0x0000008f,0x0000000a,0x0004003d,0x00000006,0x00000090,0x0000000b,0x0008000c,0x00000006, - 0x00000091,0x00000001,0x0000002e,0x0000008e,0x0000008f,0x00000090,0x000200fe,0x00000091, - 0x00010038,0x00050036,0x00000006,0x00000010,0x00000000,0x0000000e,0x00030037,0x00000007, - 0x0000000f,0x000200f8,0x00000011,0x0004003d,0x00000006,0x00000094,0x0000000f,0x0008000c, - 0x00000006,0x00000097,0x00000001,0x0000002b,0x00000094,0x00000095,0x00000096,0x000200fe, - 0x00000097,0x00010038,0x00050036,0x00000012,0x00000016,0x00000000,0x00000014,0x00030037, - 0x00000013,0x00000015,0x000200f8,0x00000017,0x0004003d,0x00000012,0x0000009a,0x00000015, - 0x0006000c,0x00000012,0x0000009b,0x00000001,0x0000000a,0x0000009a,0x000200fe,0x0000009b, - 0x00010038,0x00050036,0x00000006,0x0000001b,0x00000000,0x00000018,0x00030037,0x00000007, - 0x00000019,0x00030037,0x00000007,0x0000001a,0x000200f8,0x0000001c,0x0004003d,0x00000006, - 0x0000009e,0x00000019,0x0004003d,0x00000006,0x0000009f,0x0000001a,0x0007000c,0x00000006, - 0x000000a0,0x00000001,0x00000025,0x0000009e,0x0000009f,0x000200fe,0x000000a0,0x00010038, - 0x00050036,0x0000001d,0x00000022,0x00000000,0x0000001f,0x00030037,0x0000001e,0x00000020, - 0x00030037,0x0000001e,0x00000021,0x000200f8,0x00000023,0x0004003d,0x0000001d,0x000000a3, - 0x00000020,0x0004003d,0x0000001d,0x000000a4,0x00000021,0x0007000c,0x0000001d,0x000000a5, - 0x00000001,0x00000028,0x000000a3,0x000000a4,0x000200fe,0x000000a5,0x00010038,0x00050036, - 0x00000025,0x00000027,0x00000000,0x00000026,0x000200f8,0x00000028,0x00050041,0x000000ac, - 0x000000ad,0x000000aa,0x000000ab,0x0004003d,0x00000025,0x000000ae,0x000000ad,0x000200fe, + 0x00030005,0x0000001a,0x00000079,0x00060005,0x0000001f,0x4d786666,0x66287861,0x31663b31, + 0x0000003b,0x00030005,0x0000001d,0x00000078,0x00030005,0x0000001e,0x00000079,0x00060005, + 0x00000026,0x4d786666,0x76287861,0x763b3366,0x003b3366,0x00030005,0x00000024,0x00000078, + 0x00030005,0x00000025,0x00000079,0x00050005,0x0000002b,0x646e6552,0x69537265,0x0028657a, + 0x000b0005,0x0000002f,0x69766544,0x6f546563,0x77656956,0x63617053,0x61725465,0x6f66736e, + 0x61466d72,0x726f7463,0x00002873,0x00070005,0x00000032,0x69746f4d,0x65566e6f,0x726f7463, + 0x6c616353,0x00002865,0x00090005,0x00000035,0x77656956,0x63617053,0x4d6f5465,0x72657465, + 0x63614673,0x28726f74,0x00000000,0x00070005,0x0000003a,0x64616f4c,0x75706e49,0x70654474, + 0x76286874,0x003b3269,0x00040005,0x00000039,0x50785069,0x0000736f,0x00070005,0x0000003e, + 0x64616f4c,0x75706e49,0x6c6f4374,0x7628726f,0x003b3269,0x00040005,0x0000003d,0x50785069, + 0x0000736f,0x00090005,0x00000042,0x64616f4c,0x75706e49,0x746f4d74,0x566e6f69,0x6f746365, + 0x69762872,0x00003b32,0x00090005,0x00000041,0x44785069,0x74616c69,0x6f4d6465,0x6e6f6974, + 0x74636556,0x6f50726f,0x00000073,0x00090005,0x00000047,0x726f7453,0x72614665,0x73656874, + 0x70654474,0x76286874,0x663b3269,0x00003b31,0x00040005,0x00000045,0x50785069,0x0000736f, + 0x00040005,0x00000046,0x70654466,0x00006874,0x00090005,0x0000004b,0x726f7453,0x72754365, + 0x746e6572,0x616d754c,0x32697628,0x3b31663b,0x00000000,0x00040005,0x00000049,0x50785069, + 0x0000736f,0x00040005,0x0000004a,0x6d754c66,0x00000061,0x000a0005,0x0000004f,0x726f7453, + 0x63655265,0x74736e6f,0x74637572,0x65446465,0x28687470,0x3b326976,0x003b3166,0x00050005, + 0x0000004d,0x53785069,0x6c706d61,0x00000065,0x00040005,0x0000004e,0x70654466,0x00006874, + 0x00090005,0x00000053,0x726f7453,0x6c694465,0x64657461,0x74706544,0x69762868,0x31663b32, + 0x0000003b,0x00040005,0x00000051,0x50785069,0x0000736f,0x00040005,0x00000052,0x70654466, + 0x00006874,0x000b0005,0x00000058,0x726f7453,0x6c694465,0x64657461,0x69746f4d,0x65566e6f, + 0x726f7463,0x32697628,0x3266763b,0x0000003b,0x00040005,0x00000056,0x50785069,0x0000736f, + 0x00060005,0x00000057,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x000b0005,0x0000005b, + 0x6f636552,0x7274736e,0x65746375,0x70654464,0x764d6874,0x68547850,0x68736572,0x28646c6f, + 0x003b3166,0x00080005,0x0000005a,0x61654e66,0x74736572,0x74706544,0x4d6e4968,0x72657465, + 0x00000073,0x00070005,0x0000005f,0x34746547,0x6c65564b,0x7469636f,0x66762879,0x00003b32, + 0x00060005,0x0000005e,0x746f4d66,0x566e6f69,0x6f746365,0x00000072,0x00060005,0x00000063, + 0x54424752,0x6d754c6f,0x66762861,0x00003b33,0x00050005,0x00000062,0x6e694c66,0x52726165, + 0x00006267,0x00070005,0x00000069,0x6e4f7349,0x65726353,0x76286e65,0x763b3269,0x003b3269, + 0x00030005,0x00000067,0x00736f70,0x00040005,0x00000068,0x657a6973,0x00000000,0x00080005, + 0x0000006c,0x56746547,0x53776569,0x65636170,0x74706544,0x31662868,0x0000003b,0x00060005, + 0x0000006b,0x76654466,0x44656369,0x68747065,0x00000000,0x000a0005,0x0000006f,0x56746547, + 0x53776569,0x65636170,0x74706544,0x4d6e4968,0x72657465,0x31662873,0x0000003b,0x00060005, + 0x0000006e,0x76654466,0x44656369,0x68747065,0x00000000,0x00080005,0x00000075,0x696c6942, + 0x7261656e,0x706d6153,0x676e696c,0x61746144,0x00000000,0x00060006,0x00000075,0x00000000, + 0x66664f69,0x73746573,0x00000000,0x00060006,0x00000075,0x00000001,0x69655766,0x73746867, + 0x00000000,0x00060006,0x00000075,0x00000002,0x73614269,0x736f5065,0x00000000,0x000b0005, + 0x00000079,0x42746547,0x6e696c69,0x53726165,0x6c706d61,0x44676e69,0x28617461,0x3b326676, + 0x3b326976,0x00000000,0x00030005,0x00000077,0x00765566,0x00040005,0x00000078,0x7a695369, + 0x00000065,0x000b0005,0x0000007f,0x6f636552,0x7274736e,0x50746375,0x44766572,0x68747065, + 0x32697628,0x3b31663b,0x3b326676,0x00000000,0x00040005,0x0000007c,0x50785069,0x0000736f, + 0x00040005,0x0000007d,0x70654466,0x00006874,0x00060005,0x0000007e,0x746f4d66,0x566e6f69, + 0x6f746365,0x00000072,0x00060005,0x00000081,0x74706544,0x74784568,0x73746e65,0x00000000, + 0x00060006,0x00000081,0x00000000,0x61654e66,0x74736572,0x00000000,0x00070006,0x00000081, + 0x00000001,0x61654e66,0x74736572,0x726f6f43,0x00000064,0x00060006,0x00000081,0x00000002, + 0x72614666,0x73656874,0x00000074,0x00080005,0x00000084,0x646e6946,0x74706544,0x74784568, + 0x73746e65,0x32697628,0x0000003b,0x00040005,0x00000083,0x50785069,0x0000736f,0x00100005, + 0x00000089,0x616c6944,0x6f4d6574,0x6e6f6974,0x74636556,0x7628726f,0x733b3269,0x63757274, + 0x65442d74,0x45687470,0x6e657478,0x662d7374,0x69762d31,0x31662d32,0x00003b31,0x00040005, + 0x00000087,0x50785069,0x0000736f,0x00060005,0x00000088,0x74706564,0x74784568,0x73746e65, + 0x00000000,0x00090005,0x0000008c,0x43746547,0x65727275,0x7246746e,0x4c656d61,0x28616d75, + 0x3b326976,0x00000000,0x00040005,0x0000008b,0x50785069,0x0000736f,0x00070005,0x00000090, + 0x70657250,0x49657261,0x7475706e,0x69762873,0x00003b32,0x00040005,0x0000008f,0x50785069, + 0x0000736f,0x00070005,0x000000b1,0x53466263,0x50553352,0x4c414353,0x745f5245,0x00000000, + 0x00060006,0x000000b1,0x00000000,0x6e655269,0x53726564,0x00657a69,0x000a0006,0x000000b1, + 0x00000001,0x65725069,0x756f6976,0x61724673,0x6552656d,0x7265646e,0x657a6953,0x00000000, + 0x00070006,0x000000b1,0x00000002,0x73705569,0x656c6163,0x657a6953,0x00000000,0x000a0006, + 0x000000b1,0x00000003,0x65725069,0x756f6976,0x61724673,0x7055656d,0x6c616373,0x7a695365, + 0x00000065,0x00070006,0x000000b1,0x00000004,0x78614d69,0x646e6552,0x69537265,0x0000657a, + 0x00070006,0x000000b1,0x00000005,0x78614d69,0x63737055,0x53656c61,0x00657a69,0x00080006, + 0x000000b1,0x00000006,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874,0x00050006, + 0x000000b1,0x00000007,0x74694a66,0x00726574,0x00090006,0x000000b1,0x00000008,0x65725066, + 0x756f6976,0x61724673,0x694a656d,0x72657474,0x00000000,0x00080006,0x000000b1,0x00000009, + 0x746f4d66,0x566e6f69,0x6f746365,0x61635372,0x0000656c,0x00080006,0x000000b1,0x0000000a, + 0x776f4466,0x6163736e,0x6146656c,0x726f7463,0x00000000,0x000b0006,0x000000b1,0x0000000b, + 0x746f4d66,0x566e6f69,0x6f746365,0x74694a72,0x43726574,0x65636e61,0x74616c6c,0x006e6f69, + 0x00060006,0x000000b1,0x0000000c,0x6e615466,0x666c6148,0x00564f46,0x00090006,0x000000b1, + 0x0000000d,0x74694a66,0x53726574,0x65757165,0x4c65636e,0x74676e65,0x00000068,0x00060006, + 0x000000b1,0x0000000e,0x6c654466,0x69546174,0x0000656d,0x00080006,0x000000b1,0x0000000f, + 0x6c654466,0x72506174,0x70784565,0x7275736f,0x00000065,0x000a0006,0x000000b1,0x00000010, + 0x65695666,0x61705377,0x6f546563,0x6574654d,0x61467372,0x726f7463,0x00000000,0x00060006, + 0x000000b1,0x00000011,0x61724666,0x6e49656d,0x00786564,0x00070006,0x000000b1,0x00000012, + 0x6c655666,0x7469636f,0x63614679,0x00726f74,0x00080006,0x000000b1,0x00000013,0x61655266, + 0x76697463,0x73656e65,0x61635373,0x0000656c,0x00080006,0x000000b1,0x00000014,0x61685366, + 0x676e6964,0x6e616843,0x63536567,0x00656c61,0x000a0006,0x000000b1,0x00000015,0x63634166, + 0x6c756d75,0x6f697461,0x6464416e,0x65506465,0x61724672,0x0000656d,0x000b0006,0x000000b1, + 0x00000016,0x6e694d66,0x6f736944,0x756c6363,0x6e6f6973,0x75636341,0x616c756d,0x6e6f6974, + 0x00000000,0x00060005,0x000000b3,0x53466263,0x70553352,0x6c616373,0x00007265,0x00060005, + 0x000000ce,0x6e695f72,0x5f747570,0x74706564,0x00000068,0x00080005,0x000000d6,0x6e695f72, + 0x5f747570,0x6f6c6f63,0x696a5f72,0x72657474,0x00006465,0x00070005,0x000000dd,0x63725366, + 0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00080005,0x000000de,0x6e695f72,0x5f747570, + 0x69746f6d,0x765f6e6f,0x6f746365,0x00007372,0x00060005,0x000000e3,0x4d765566,0x6f69746f, + 0x6365566e,0x00726f74,0x00070005,0x000000ec,0x665f7772,0x68747261,0x5f747365,0x74706564, + 0x00000068,0x00060005,0x000000f1,0x635f7772,0x65727275,0x6c5f746e,0x00616d75,0x00040005, + 0x000000f7,0x70654475,0x00006874,0x000c0005,0x000000fc,0x725f7772,0x6e6f6365,0x75727473, + 0x64657463,0x6572705f,0x756f6976,0x656e5f73,0x73657261,0x65645f74,0x00687470,0x00070005, + 0x00000105,0x645f7772,0x74616c69,0x645f6465,0x68747065,0x00000000,0x00090005,0x0000010c, + 0x645f7772,0x74616c69,0x6d5f6465,0x6f69746f,0x65765f6e,0x726f7463,0x00000073,0x00040005, + 0x00000118,0x61726170,0x0000006d,0x00040005,0x0000011a,0x61726170,0x0000006d,0x00040005, + 0x0000011b,0x61726170,0x0000006d,0x00040005,0x0000011c,0x61726170,0x0000006d,0x00070005, + 0x0000013b,0x76654466,0x54656369,0x6569566f,0x70654477,0x00006874,0x00040005,0x00000146, + 0x61726170,0x0000006d,0x00050005,0x0000014d,0x53785066,0x6c706d61,0x00000065,0x00040005, + 0x00000156,0x61746164,0x00000000,0x00040005,0x0000015c,0x46785066,0x00636172,0x00040005, + 0x0000015d,0x61726170,0x0000006d,0x00080005,0x00000189,0x61654e66,0x74736572,0x74706544, + 0x4d6e4968,0x72657465,0x00000073,0x00040005,0x0000018a,0x61726170,0x0000006d,0x00040005, + 0x0000018e,0x61726170,0x0000006d,0x00040005,0x0000018f,0x61726170,0x0000006d,0x000a0005, + 0x00000191,0x63655266,0x74736e6f,0x74637572,0x65446465,0x764d7470,0x65726854,0x6c6f6873, + 0x00000064,0x00040005,0x00000192,0x61726170,0x0000006d,0x00040005,0x00000195,0x61726170, + 0x0000006d,0x00030005,0x0000019d,0x00765566,0x00060005,0x000001a5,0x70655266,0x656a6f72, + 0x64657463,0x00007655,0x00060005,0x000001a9,0x696c6962,0x7261656e,0x6f666e49,0x00000000, + 0x00040005,0x000001ab,0x61726170,0x0000006d,0x00040005,0x000001ad,0x61726170,0x0000006d, + 0x00060005,0x000001b0,0x6d615369,0x49656c70,0x7865646e,0x00000000,0x00040005,0x000001b9, + 0x66664f69,0x00746573,0x00040005,0x000001bd,0x69655766,0x00746867,0x00050005,0x000001c6, + 0x6f745369,0x6f506572,0x00000073,0x00040005,0x000001cc,0x61726170,0x0000006d,0x00040005, + 0x000001ce,0x61726170,0x0000006d,0x00040005,0x000001d2,0x61726170,0x0000006d,0x00040005, + 0x000001d4,0x61726170,0x0000006d,0x00060005,0x000001d9,0x6d615369,0x49656c70,0x7865646e, + 0x00000000,0x00040005,0x000001e1,0x736f5069,0x00000000,0x00050005,0x000001ee,0x65646e69, + 0x6c626178,0x00000065,0x00040005,0x000001f4,0x74706564,0x00000068,0x00040005,0x000001f6, + 0x61726170,0x0000006d,0x00040005,0x000001fd,0x65747865,0x0073746e,0x00040005,0x0000020d, + 0x736f5069,0x00000000,0x00050005,0x00000210,0x65646e69,0x6c626178,0x00000065,0x00040005, + 0x00000215,0x61726170,0x0000006d,0x00040005,0x00000217,0x61726170,0x0000006d,0x00050005, + 0x0000021b,0x44644e66,0x68747065,0x00000000,0x00040005,0x00000225,0x61726170,0x0000006d, + 0x00040005,0x00000228,0x61726170,0x0000006d,0x00050005,0x00000235,0x6d615369,0x50656c70, + 0x0000736f,0x00070005,0x00000237,0x746f4d69,0x566e6f69,0x6f746365,0x736f5072,0x00000000, + 0x00080005,0x00000239,0x6c694466,0x64657461,0x69746f4d,0x65566e6f,0x726f7463,0x00000000, + 0x00040005,0x0000023a,0x61726170,0x0000006d,0x00040005,0x00000240,0x62675266,0x00000000, + 0x00040005,0x00000242,0x61726170,0x0000006d,0x00040005,0x00000245,0x61726170,0x0000006d, + 0x00040005,0x00000246,0x61726170,0x0000006d,0x00040005,0x00000248,0x6d754c66,0x00000061, + 0x00040005,0x00000249,0x61726170,0x0000006d,0x00060005,0x0000024f,0x74706564,0x74784568, + 0x73746e65,0x00000000,0x00040005,0x00000250,0x61726170,0x0000006d,0x00080005,0x00000253, + 0x6c694466,0x64657461,0x69746f4d,0x65566e6f,0x726f7463,0x00000000,0x00040005,0x00000255, + 0x61726170,0x0000006d,0x00040005,0x00000258,0x61726170,0x0000006d,0x00040005,0x0000025a, + 0x61726170,0x0000006d,0x00040005,0x0000025d,0x61726170,0x0000006d,0x00040005,0x00000260, + 0x61726170,0x0000006d,0x00040005,0x00000262,0x61726170,0x0000006d,0x00040005,0x00000265, + 0x61726170,0x0000006d,0x00040005,0x00000267,0x61726170,0x0000006d,0x00080005,0x0000026b, + 0x72614666,0x73656874,0x70654474,0x6e496874,0x6574654d,0x00007372,0x00040005,0x0000026c, + 0x61726170,0x0000006d,0x00040005,0x00000270,0x61726170,0x0000006d,0x00040005,0x00000271, + 0x61726170,0x0000006d,0x00040005,0x00000273,0x61726170,0x0000006d,0x00040005,0x00000275, + 0x61726170,0x0000006d,0x00040005,0x00000278,0x6d754c66,0x00000061,0x00040005,0x00000279, + 0x61726170,0x0000006d,0x00040005,0x0000027c,0x61726170,0x0000006d,0x00040005,0x0000027e, + 0x61726170,0x0000006d,0x00080005,0x00000283,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f, + 0x496e6f69,0x00000044,0x00040005,0x00000287,0x61726170,0x0000006d,0x00060005,0x0000028d, + 0x6f505f73,0x43746e69,0x706d616c,0x00000000,0x00060005,0x0000028e,0x694c5f73,0x7261656e, + 0x6d616c43,0x00000070,0x00030047,0x000000b1,0x00000002,0x00050048,0x000000b1,0x00000000, + 0x00000023,0x00000000,0x00050048,0x000000b1,0x00000001,0x00000023,0x00000008,0x00050048, + 0x000000b1,0x00000002,0x00000023,0x00000010,0x00050048,0x000000b1,0x00000003,0x00000023, + 0x00000018,0x00050048,0x000000b1,0x00000004,0x00000023,0x00000020,0x00050048,0x000000b1, + 0x00000005,0x00000023,0x00000028,0x00050048,0x000000b1,0x00000006,0x00000023,0x00000030, + 0x00050048,0x000000b1,0x00000007,0x00000023,0x00000040,0x00050048,0x000000b1,0x00000008, + 0x00000023,0x00000048,0x00050048,0x000000b1,0x00000009,0x00000023,0x00000050,0x00050048, + 0x000000b1,0x0000000a,0x00000023,0x00000058,0x00050048,0x000000b1,0x0000000b,0x00000023, + 0x00000060,0x00050048,0x000000b1,0x0000000c,0x00000023,0x00000068,0x00050048,0x000000b1, + 0x0000000d,0x00000023,0x0000006c,0x00050048,0x000000b1,0x0000000e,0x00000023,0x00000070, + 0x00050048,0x000000b1,0x0000000f,0x00000023,0x00000074,0x00050048,0x000000b1,0x00000010, + 0x00000023,0x00000078,0x00050048,0x000000b1,0x00000011,0x00000023,0x0000007c,0x00050048, + 0x000000b1,0x00000012,0x00000023,0x00000080,0x00050048,0x000000b1,0x00000013,0x00000023, + 0x00000084,0x00050048,0x000000b1,0x00000014,0x00000023,0x00000088,0x00050048,0x000000b1, + 0x00000015,0x00000023,0x0000008c,0x00050048,0x000000b1,0x00000016,0x00000023,0x00000090, + 0x00040047,0x000000b3,0x00000021,0x00000008,0x00040047,0x000000b3,0x00000022,0x00000000, + 0x00040047,0x000000ce,0x00000021,0x00000001,0x00040047,0x000000ce,0x00000022,0x00000000, + 0x00040047,0x000000d6,0x00000021,0x00000002,0x00040047,0x000000d6,0x00000022,0x00000000, + 0x00040047,0x000000de,0x00000021,0x00000000,0x00040047,0x000000de,0x00000022,0x00000000, + 0x00040047,0x000000ec,0x00000021,0x00000006,0x00040047,0x000000ec,0x00000022,0x00000000, + 0x00040047,0x000000f1,0x00000021,0x00000007,0x00040047,0x000000f1,0x00000022,0x00000000, + 0x00040047,0x000000fc,0x00000021,0x00000005,0x00040047,0x000000fc,0x00000022,0x00000000, + 0x00030047,0x00000105,0x00000019,0x00040047,0x00000105,0x00000021,0x00000004,0x00040047, + 0x00000105,0x00000022,0x00000000,0x00030047,0x0000010c,0x00000019,0x00040047,0x0000010c, + 0x00000021,0x00000003,0x00040047,0x0000010c,0x00000022,0x00000000,0x00040047,0x00000283, + 0x0000000b,0x0000001c,0x00040047,0x0000028d,0x00000021,0x000003e8,0x00040047,0x0000028d, + 0x00000022,0x00000000,0x00040047,0x0000028e,0x00000021,0x000003e9,0x00040047,0x0000028e, + 0x00000022,0x00000000,0x00040047,0x00000297,0x0000000b,0x00000019,0x00020013,0x00000002, + 0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040020,0x00000007, + 0x00000007,0x00000006,0x00060021,0x00000008,0x00000006,0x00000007,0x00000007,0x00000007, + 0x00040021,0x0000000e,0x00000006,0x00000007,0x00040017,0x00000012,0x00000006,0x00000002, + 0x00040020,0x00000013,0x00000007,0x00000012,0x00040021,0x00000014,0x00000012,0x00000013, + 0x00050021,0x00000018,0x00000006,0x00000007,0x00000007,0x00040017,0x00000021,0x00000006, + 0x00000003,0x00040020,0x00000022,0x00000007,0x00000021,0x00050021,0x00000023,0x00000021, + 0x00000022,0x00000022,0x00040015,0x00000028,0x00000020,0x00000001,0x00040017,0x00000029, + 0x00000028,0x00000002,0x00030021,0x0000002a,0x00000029,0x00040017,0x0000002d,0x00000006, + 0x00000004,0x00030021,0x0000002e,0x0000002d,0x00030021,0x00000031,0x00000012,0x00030021, + 0x00000034,0x00000006,0x00040020,0x00000037,0x00000007,0x00000029,0x00040021,0x00000038, + 0x00000006,0x00000037,0x00040021,0x0000003c,0x00000021,0x00000037,0x00040021,0x00000040, + 0x00000012,0x00000037,0x00050021,0x00000044,0x00000002,0x00000037,0x00000007,0x00050021, + 0x00000055,0x00000002,0x00000037,0x00000013,0x00040021,0x0000005d,0x00000006,0x00000013, + 0x00040021,0x00000061,0x00000006,0x00000022,0x00020014,0x00000065,0x00050021,0x00000066, + 0x00000065,0x00000037,0x00000037,0x00040015,0x00000071,0x00000020,0x00000000,0x0004002b, + 0x00000071,0x00000072,0x00000004,0x0004001c,0x00000073,0x00000029,0x00000072,0x0004001c, + 0x00000074,0x00000006,0x00000072,0x0005001e,0x00000075,0x00000073,0x00000074,0x00000029, + 0x00050021,0x00000076,0x00000075,0x00000013,0x00000037,0x00060021,0x0000007b,0x00000002, + 0x00000037,0x00000007,0x00000013,0x0005001e,0x00000081,0x00000006,0x00000029,0x00000006, + 0x00040021,0x00000082,0x00000081,0x00000037,0x00050021,0x00000086,0x00000012,0x00000037, + 0x00000081,0x00040021,0x0000008e,0x00000002,0x00000037,0x0004002b,0x00000006,0x00000099, + 0x00000000,0x0004002b,0x00000006,0x0000009a,0x3f800000,0x0019001e,0x000000b1,0x00000029, + 0x00000029,0x00000029,0x00000029,0x00000029,0x00000029,0x0000002d,0x00000012,0x00000012, + 0x00000012,0x00000012,0x00000012,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x000000b2, + 0x00000002,0x000000b1,0x0004003b,0x000000b2,0x000000b3,0x00000002,0x0004002b,0x00000028, + 0x000000b4,0x00000000,0x00040020,0x000000b5,0x00000002,0x00000029,0x0004002b,0x00000028, + 0x000000ba,0x00000006,0x00040020,0x000000bb,0x00000002,0x0000002d,0x0004002b,0x00000028, + 0x000000c0,0x00000009,0x00040020,0x000000c1,0x00000002,0x00000012,0x0004002b,0x00000028, + 0x000000c6,0x00000010,0x00040020,0x000000c7,0x00000002,0x00000006,0x00090019,0x000000cc, + 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x00040020, + 0x000000cd,0x00000000,0x000000cc,0x0004003b,0x000000cd,0x000000ce,0x00000000,0x0004002b, + 0x00000071,0x000000d2,0x00000000,0x0004003b,0x000000cd,0x000000d6,0x00000000,0x0004003b, + 0x000000cd,0x000000de,0x00000000,0x00090019,0x000000ea,0x00000006,0x00000001,0x00000000, + 0x00000000,0x00000000,0x00000002,0x00000009,0x00040020,0x000000eb,0x00000000,0x000000ea, + 0x0004003b,0x000000eb,0x000000ec,0x00000000,0x0004003b,0x000000eb,0x000000f1,0x00000000, + 0x00040020,0x000000f6,0x00000007,0x00000071,0x00090019,0x000000fa,0x00000071,0x00000001, + 0x00000000,0x00000000,0x00000000,0x00000002,0x00000021,0x00040020,0x000000fb,0x00000000, + 0x000000fa,0x0004003b,0x000000fb,0x000000fc,0x00000000,0x00040020,0x000000ff,0x0000000b, + 0x00000071,0x0004002b,0x00000071,0x00000101,0x00000001,0x00090019,0x00000103,0x00000006, + 0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000003,0x00040020,0x00000104, + 0x00000000,0x00000103,0x0004003b,0x00000104,0x00000105,0x00000000,0x00090019,0x0000010a, + 0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000002,0x00000007,0x00040020, + 0x0000010b,0x00000000,0x0000010a,0x0004003b,0x0000010b,0x0000010c,0x00000000,0x0004002b, + 0x00000006,0x00000113,0x3e800000,0x0004002b,0x00000006,0x00000114,0x3f400000,0x0004002b, + 0x00000006,0x00000116,0x42c80000,0x0004002b,0x00000006,0x00000121,0x45700000,0x0004002b, + 0x00000006,0x00000122,0x45070000,0x0005002c,0x00000012,0x00000123,0x00000121,0x00000122, + 0x0004002b,0x00000006,0x00000129,0x3e59b3d0,0x0004002b,0x00000006,0x0000012a,0x3f371759, + 0x0004002b,0x00000006,0x0000012b,0x3d93dd98,0x0006002c,0x00000021,0x0000012c,0x00000129, + 0x0000012a,0x0000012b,0x00040017,0x00000131,0x00000071,0x00000002,0x00040017,0x00000135, + 0x00000065,0x00000002,0x00040020,0x0000013a,0x00000007,0x0000002d,0x0004002b,0x00000006, + 0x00000152,0x3f000000,0x0005002c,0x00000012,0x00000153,0x00000152,0x00000152,0x00040020, + 0x00000155,0x00000007,0x00000075,0x0004002b,0x00000028,0x00000157,0x00000002,0x0005002c, + 0x00000029,0x00000160,0x000000b4,0x000000b4,0x0004002b,0x00000028,0x00000162,0x00000001, + 0x0005002c,0x00000029,0x00000163,0x00000162,0x000000b4,0x0005002c,0x00000029,0x00000165, + 0x000000b4,0x00000162,0x0004002b,0x00000028,0x00000167,0x00000003,0x0005002c,0x00000029, + 0x00000168,0x00000162,0x00000162,0x0004002b,0x00000006,0x0000018d,0x477fe000,0x00040020, + 0x000001af,0x00000007,0x00000028,0x0004002b,0x00000028,0x000001b7,0x00000004,0x0004002b, + 0x00000006,0x000001c2,0x3a1fe868,0x0004002b,0x00000071,0x000001e3,0x00000009,0x0004001c, + 0x000001e4,0x00000029,0x000001e3,0x0004002b,0x00000028,0x000001e5,0xffffffff,0x0005002c, + 0x00000029,0x000001e6,0x000000b4,0x000001e5,0x0005002c,0x00000029,0x000001e7,0x000001e5, + 0x000000b4,0x0005002c,0x00000029,0x000001e8,0x000001e5,0x00000162,0x0005002c,0x00000029, + 0x000001e9,0x000001e5,0x000001e5,0x0005002c,0x00000029,0x000001ea,0x00000162,0x000001e5, + 0x000c002c,0x000001e4,0x000001eb,0x00000160,0x00000163,0x00000165,0x000001e6,0x000001e7, + 0x000001e8,0x00000168,0x000001e9,0x000001ea,0x00040020,0x000001ed,0x00000007,0x000001e4, + 0x0004001c,0x000001f2,0x00000006,0x000001e3,0x00040020,0x000001f3,0x00000007,0x000001f2, + 0x00040020,0x000001fc,0x00000007,0x00000081,0x0006002c,0x00000021,0x00000241,0x00000099, + 0x00000099,0x00000099,0x00040017,0x00000281,0x00000071,0x00000003,0x00040020,0x00000282, + 0x00000001,0x00000281,0x0004003b,0x00000282,0x00000283,0x00000001,0x0004002b,0x00000006, + 0x00000289,0x387fda40,0x0004002b,0x00000006,0x0000028a,0x37801002,0x0002001a,0x0000028b, + 0x00040020,0x0000028c,0x00000000,0x0000028b,0x0004003b,0x0000028c,0x0000028d,0x00000000, + 0x0004003b,0x0000028c,0x0000028e,0x00000000,0x0004002b,0x00000006,0x0000028f,0x7f7fffff, + 0x0004002b,0x00000006,0x00000290,0x00800000,0x0004002b,0x00000006,0x00000291,0x3d800000, + 0x0004002b,0x00000006,0x00000292,0x3d3d70a4,0x0004002b,0x00000006,0x00000293,0x3e400000, + 0x0004002b,0x00000006,0x00000294,0x40000000,0x0004002b,0x00000006,0x00000295,0x461c4000, + 0x0004002b,0x00000071,0x00000296,0x00000008,0x0006002c,0x00000281,0x00000297,0x00000296, + 0x00000296,0x00000101,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, + 0x00000005,0x0004003b,0x00000037,0x00000287,0x00000007,0x0004003d,0x00000281,0x00000284, + 0x00000283,0x0007004f,0x00000131,0x00000285,0x00000284,0x00000284,0x00000000,0x00000001, + 0x0004007c,0x00000029,0x00000286,0x00000285,0x0003003e,0x00000287,0x00000286,0x00050039, + 0x00000002,0x00000288,0x00000090,0x00000287,0x000100fd,0x00010038,0x00050036,0x00000006, + 0x0000000c,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x00030037,0x00000007, + 0x0000000a,0x00030037,0x00000007,0x0000000b,0x000200f8,0x0000000d,0x0004003d,0x00000006, + 0x00000092,0x00000009,0x0004003d,0x00000006,0x00000093,0x0000000a,0x0004003d,0x00000006, + 0x00000094,0x0000000b,0x0008000c,0x00000006,0x00000095,0x00000001,0x0000002e,0x00000092, + 0x00000093,0x00000094,0x000200fe,0x00000095,0x00010038,0x00050036,0x00000006,0x00000010, + 0x00000000,0x0000000e,0x00030037,0x00000007,0x0000000f,0x000200f8,0x00000011,0x0004003d, + 0x00000006,0x00000098,0x0000000f,0x0008000c,0x00000006,0x0000009b,0x00000001,0x0000002b, + 0x00000098,0x00000099,0x0000009a,0x000200fe,0x0000009b,0x00010038,0x00050036,0x00000012, + 0x00000016,0x00000000,0x00000014,0x00030037,0x00000013,0x00000015,0x000200f8,0x00000017, + 0x0004003d,0x00000012,0x0000009e,0x00000015,0x0006000c,0x00000012,0x0000009f,0x00000001, + 0x0000000a,0x0000009e,0x000200fe,0x0000009f,0x00010038,0x00050036,0x00000006,0x0000001b, + 0x00000000,0x00000018,0x00030037,0x00000007,0x00000019,0x00030037,0x00000007,0x0000001a, + 0x000200f8,0x0000001c,0x0004003d,0x00000006,0x000000a2,0x00000019,0x0004003d,0x00000006, + 0x000000a3,0x0000001a,0x0007000c,0x00000006,0x000000a4,0x00000001,0x00000025,0x000000a2, + 0x000000a3,0x000200fe,0x000000a4,0x00010038,0x00050036,0x00000006,0x0000001f,0x00000000, + 0x00000018,0x00030037,0x00000007,0x0000001d,0x00030037,0x00000007,0x0000001e,0x000200f8, + 0x00000020,0x0004003d,0x00000006,0x000000a7,0x0000001d,0x0004003d,0x00000006,0x000000a8, + 0x0000001e,0x0007000c,0x00000006,0x000000a9,0x00000001,0x00000028,0x000000a7,0x000000a8, + 0x000200fe,0x000000a9,0x00010038,0x00050036,0x00000021,0x00000026,0x00000000,0x00000023, + 0x00030037,0x00000022,0x00000024,0x00030037,0x00000022,0x00000025,0x000200f8,0x00000027, + 0x0004003d,0x00000021,0x000000ac,0x00000024,0x0004003d,0x00000021,0x000000ad,0x00000025, + 0x0007000c,0x00000021,0x000000ae,0x00000001,0x00000028,0x000000ac,0x000000ad,0x000200fe, 0x000000ae,0x00010038,0x00050036,0x00000029,0x0000002b,0x00000000,0x0000002a,0x000200f8, - 0x0000002c,0x00050041,0x000000b2,0x000000b3,0x000000aa,0x000000b1,0x0004003d,0x00000029, - 0x000000b4,0x000000b3,0x000200fe,0x000000b4,0x00010038,0x00050036,0x00000012,0x0000002e, - 0x00000000,0x0000002d,0x000200f8,0x0000002f,0x00050041,0x000000b8,0x000000b9,0x000000aa, - 0x000000b7,0x0004003d,0x00000012,0x000000ba,0x000000b9,0x000200fe,0x000000ba,0x00010038, - 0x00050036,0x00000006,0x00000031,0x00000000,0x00000030,0x000200f8,0x00000032,0x00050041, - 0x000000be,0x000000bf,0x000000aa,0x000000bd,0x0004003d,0x00000006,0x000000c0,0x000000bf, - 0x000200fe,0x000000c0,0x00010038,0x00050036,0x00000006,0x00000036,0x00000000,0x00000034, - 0x00030037,0x00000033,0x00000035,0x000200f8,0x00000037,0x0004003d,0x000000c3,0x000000c6, - 0x000000c5,0x0004003d,0x00000025,0x000000c7,0x00000035,0x0007005f,0x00000029,0x000000c8, - 0x000000c6,0x000000c7,0x00000002,0x000000ab,0x00050051,0x00000006,0x000000ca,0x000000c8, - 0x00000000,0x000200fe,0x000000ca,0x00010038,0x00050036,0x0000001d,0x0000003a,0x00000000, - 0x00000038,0x00030037,0x00000033,0x00000039,0x000200f8,0x0000003b,0x0004003d,0x000000c3, - 0x000000ce,0x000000cd,0x0004003d,0x00000025,0x000000cf,0x00000039,0x0007005f,0x00000029, - 0x000000d0,0x000000ce,0x000000cf,0x00000002,0x000000ab,0x0008004f,0x0000001d,0x000000d1, - 0x000000d0,0x000000d0,0x00000000,0x00000001,0x00000002,0x000200fe,0x000000d1,0x00010038, - 0x00050036,0x00000012,0x0000003e,0x00000000,0x0000003c,0x00030037,0x00000033,0x0000003d, - 0x000200f8,0x0000003f,0x0004003b,0x00000013,0x000000d4,0x00000007,0x0004003b,0x00000013, - 0x000000da,0x00000007,0x0004003d,0x000000c3,0x000000d6,0x000000d5,0x0004003d,0x00000025, - 0x000000d7,0x0000003d,0x0007005f,0x00000029,0x000000d8,0x000000d6,0x000000d7,0x00000002, - 0x000000ab,0x0007004f,0x00000012,0x000000d9,0x000000d8,0x000000d8,0x00000000,0x00000001, - 0x0003003e,0x000000d4,0x000000d9,0x0004003d,0x00000012,0x000000db,0x000000d4,0x00040039, - 0x00000012,0x000000dc,0x0000002e,0x00050085,0x00000012,0x000000dd,0x000000db,0x000000dc, - 0x0003003e,0x000000da,0x000000dd,0x0004003d,0x00000012,0x000000de,0x000000da,0x000200fe, - 0x000000de,0x00010038,0x00050036,0x00000002,0x00000043,0x00000000,0x00000040,0x00030037, - 0x00000033,0x00000041,0x00030037,0x00000007,0x00000042,0x000200f8,0x00000044,0x0004003d, - 0x000000e1,0x000000e4,0x000000e3,0x0004003d,0x00000025,0x000000e5,0x00000041,0x0004003d, - 0x00000006,0x000000e6,0x00000042,0x00070050,0x00000029,0x000000e7,0x000000e6,0x00000095, - 0x00000095,0x00000095,0x00040063,0x000000e4,0x000000e5,0x000000e7,0x000100fd,0x00010038, - 0x00050036,0x00000002,0x00000047,0x00000000,0x00000040,0x00030037,0x00000033,0x00000045, - 0x00030037,0x00000007,0x00000046,0x000200f8,0x00000048,0x0004003d,0x000000e1,0x000000e9, - 0x000000e8,0x0004003d,0x00000025,0x000000ea,0x00000045,0x0004003d,0x00000006,0x000000eb, - 0x00000046,0x00070050,0x00000029,0x000000ec,0x000000eb,0x00000095,0x00000095,0x00000095, - 0x00040063,0x000000e9,0x000000ea,0x000000ec,0x000100fd,0x00010038,0x00050036,0x00000002, - 0x0000004b,0x00000000,0x00000040,0x00030037,0x00000033,0x00000049,0x00030037,0x00000007, - 0x0000004a,0x000200f8,0x0000004c,0x0004003b,0x000000ed,0x000000ee,0x00000007,0x0004003d, - 0x00000006,0x000000ef,0x0000004a,0x0004007c,0x0000006d,0x000000f0,0x000000ef,0x0003003e, - 0x000000ee,0x000000f0,0x0004003d,0x00000025,0x000000f4,0x00000049,0x0004003d,0x0000006d, - 0x000000f5,0x000000ee,0x0006003c,0x000000f6,0x000000f7,0x000000f3,0x000000f4,0x000000c9, - 0x000700ef,0x0000006d,0x000000f9,0x000000f7,0x000000f8,0x000000c9,0x000000f5,0x000100fd, - 0x00010038,0x00050036,0x00000002,0x0000004f,0x00000000,0x00000040,0x00030037,0x00000033, - 0x0000004d,0x00030037,0x00000007,0x0000004e,0x000200f8,0x00000050,0x0004003d,0x000000fa, - 0x000000fd,0x000000fc,0x0004003d,0x00000025,0x000000fe,0x0000004d,0x0004003d,0x00000006, - 0x000000ff,0x0000004e,0x00070050,0x00000029,0x00000100,0x000000ff,0x00000095,0x00000095, - 0x00000095,0x00040063,0x000000fd,0x000000fe,0x00000100,0x000100fd,0x00010038,0x00050036, - 0x00000002,0x00000054,0x00000000,0x00000051,0x00030037,0x00000033,0x00000052,0x00030037, - 0x00000013,0x00000053,0x000200f8,0x00000055,0x0004003d,0x00000101,0x00000104,0x00000103, - 0x0004003d,0x00000025,0x00000105,0x00000052,0x0004003d,0x00000012,0x00000106,0x00000053, - 0x00050051,0x00000006,0x00000107,0x00000106,0x00000000,0x00050051,0x00000006,0x00000108, - 0x00000106,0x00000001,0x00070050,0x00000029,0x00000109,0x00000107,0x00000108,0x00000095, - 0x00000095,0x00040063,0x00000104,0x00000105,0x00000109,0x000100fd,0x00010038,0x00050036, - 0x00000006,0x00000057,0x00000000,0x0000000e,0x00030037,0x00000007,0x00000056,0x000200f8, - 0x00000058,0x0004003b,0x00000007,0x0000010f,0x00000007,0x0004003b,0x00000007,0x00000111, - 0x00000007,0x0004003b,0x00000007,0x00000112,0x00000007,0x0004003b,0x00000007,0x00000113, - 0x00000007,0x0004003d,0x00000006,0x0000010c,0x00000056,0x00050088,0x00000006,0x0000010e, - 0x0000010c,0x0000010d,0x0003003e,0x0000010f,0x0000010e,0x00050039,0x00000006,0x00000110, - 0x00000010,0x0000010f,0x0003003e,0x00000111,0x0000010a,0x0003003e,0x00000112,0x0000010b, - 0x0003003e,0x00000113,0x00000110,0x00070039,0x00000006,0x00000114,0x0000000c,0x00000111, - 0x00000112,0x00000113,0x000200fe,0x00000114,0x00010038,0x00050036,0x00000006,0x0000005b, - 0x00000000,0x00000059,0x00030037,0x00000013,0x0000005a,0x000200f8,0x0000005c,0x0004003d, - 0x00000012,0x00000117,0x0000005a,0x00050085,0x00000012,0x0000011b,0x00000117,0x0000011a, - 0x0006000c,0x00000006,0x0000011c,0x00000001,0x00000042,0x0000011b,0x000200fe,0x0000011c, - 0x00010038,0x00050036,0x00000006,0x0000005f,0x00000000,0x0000005d,0x00030037,0x0000001e, - 0x0000005e,0x000200f8,0x00000060,0x0004003d,0x0000001d,0x0000011f,0x0000005e,0x00050094, - 0x00000006,0x00000124,0x0000011f,0x00000123,0x000200fe,0x00000124,0x00010038,0x00050036, - 0x00000061,0x00000065,0x00000000,0x00000062,0x00030037,0x00000033,0x00000063,0x00030037, - 0x00000033,0x00000064,0x000200f8,0x00000066,0x0004003d,0x00000025,0x00000127,0x00000063, - 0x0004007c,0x00000128,0x00000129,0x00000127,0x0004003d,0x00000025,0x0000012a,0x00000064, - 0x0004007c,0x00000128,0x0000012b,0x0000012a,0x000500b0,0x0000012c,0x0000012d,0x00000129, - 0x0000012b,0x0004009b,0x00000061,0x0000012e,0x0000012d,0x000200fe,0x0000012e,0x00010038, - 0x00050036,0x00000006,0x00000068,0x00000000,0x0000000e,0x00030037,0x00000007,0x00000067, - 0x000200f8,0x00000069,0x0004003b,0x00000131,0x00000132,0x00000007,0x00040039,0x00000029, - 0x00000133,0x0000002b,0x0003003e,0x00000132,0x00000133,0x00050041,0x00000007,0x00000134, - 0x00000132,0x000000f8,0x0004003d,0x00000006,0x00000135,0x00000134,0x0004003d,0x00000006, - 0x00000136,0x00000067,0x00050041,0x00000007,0x00000137,0x00000132,0x000000c9,0x0004003d, - 0x00000006,0x00000138,0x00000137,0x00050083,0x00000006,0x00000139,0x00000136,0x00000138, - 0x00050088,0x00000006,0x0000013a,0x00000135,0x00000139,0x000200fe,0x0000013a,0x00010038, - 0x00050036,0x00000006,0x0000006b,0x00000000,0x0000000e,0x00030037,0x00000007,0x0000006a, - 0x000200f8,0x0000006c,0x0004003b,0x00000007,0x0000013d,0x00000007,0x0004003d,0x00000006, - 0x0000013e,0x0000006a,0x0003003e,0x0000013d,0x0000013e,0x00050039,0x00000006,0x0000013f, - 0x00000068,0x0000013d,0x00040039,0x00000006,0x00000140,0x00000031,0x00050085,0x00000006, - 0x00000141,0x0000013f,0x00000140,0x000200fe,0x00000141,0x00010038,0x00050036,0x00000071, - 0x00000075,0x00000000,0x00000072,0x00030037,0x00000013,0x00000073,0x00030037,0x00000033, - 0x00000074,0x000200f8,0x00000076,0x0004003b,0x00000013,0x00000144,0x00000007,0x0004003b, - 0x0000014c,0x0000014d,0x00000007,0x0004003b,0x00000013,0x00000153,0x00000007,0x0004003b, - 0x00000013,0x00000154,0x00000007,0x0004003d,0x00000012,0x00000145,0x00000073,0x0004003d, - 0x00000025,0x00000146,0x00000074,0x0004006f,0x00000012,0x00000147,0x00000146,0x00050085, - 0x00000012,0x00000148,0x00000145,0x00000147,0x00050083,0x00000012,0x0000014b,0x00000148, - 0x0000014a,0x0003003e,0x00000144,0x0000014b,0x0004003d,0x00000012,0x0000014f,0x00000144, - 0x0006000c,0x00000012,0x00000150,0x00000001,0x00000008,0x0000014f,0x0004006e,0x00000025, - 0x00000151,0x00000150,0x00050041,0x00000033,0x00000152,0x0000014d,0x0000014e,0x0003003e, - 0x00000152,0x00000151,0x0004003d,0x00000012,0x00000155,0x00000144,0x0003003e,0x00000154, - 0x00000155,0x00050039,0x00000012,0x00000156,0x00000016,0x00000154,0x0003003e,0x00000153, - 0x00000156,0x00060041,0x00000033,0x00000158,0x0000014d,0x000000ab,0x000000ab,0x0003003e, - 0x00000158,0x00000157,0x00060041,0x00000033,0x0000015b,0x0000014d,0x000000ab,0x00000159, - 0x0003003e,0x0000015b,0x0000015a,0x00060041,0x00000033,0x0000015d,0x0000014d,0x000000ab, - 0x0000014e,0x0003003e,0x0000015d,0x0000015c,0x00060041,0x00000033,0x00000160,0x0000014d, - 0x000000ab,0x0000015e,0x0003003e,0x00000160,0x0000015f,0x00050041,0x00000007,0x00000161, - 0x00000153,0x000000c9,0x0004003d,0x00000006,0x00000162,0x00000161,0x00050083,0x00000006, - 0x00000163,0x00000096,0x00000162,0x00050041,0x00000007,0x00000164,0x00000153,0x000000f8, - 0x0004003d,0x00000006,0x00000165,0x00000164,0x00050083,0x00000006,0x00000166,0x00000096, - 0x00000165,0x00050085,0x00000006,0x00000167,0x00000163,0x00000166,0x00060041,0x00000007, - 0x00000168,0x0000014d,0x00000159,0x000000ab,0x0003003e,0x00000168,0x00000167,0x00050041, - 0x00000007,0x00000169,0x00000153,0x000000c9,0x0004003d,0x00000006,0x0000016a,0x00000169, - 0x00050041,0x00000007,0x0000016b,0x00000153,0x000000f8,0x0004003d,0x00000006,0x0000016c, - 0x0000016b,0x00050083,0x00000006,0x0000016d,0x00000096,0x0000016c,0x00050085,0x00000006, - 0x0000016e,0x0000016a,0x0000016d,0x00060041,0x00000007,0x0000016f,0x0000014d,0x00000159, - 0x00000159,0x0003003e,0x0000016f,0x0000016e,0x00050041,0x00000007,0x00000170,0x00000153, - 0x000000c9,0x0004003d,0x00000006,0x00000171,0x00000170,0x00050083,0x00000006,0x00000172, - 0x00000096,0x00000171,0x00050041,0x00000007,0x00000173,0x00000153,0x000000f8,0x0004003d, - 0x00000006,0x00000174,0x00000173,0x00050085,0x00000006,0x00000175,0x00000172,0x00000174, - 0x00060041,0x00000007,0x00000176,0x0000014d,0x00000159,0x0000014e,0x0003003e,0x00000176, - 0x00000175,0x00050041,0x00000007,0x00000177,0x00000153,0x000000c9,0x0004003d,0x00000006, - 0x00000178,0x00000177,0x00050041,0x00000007,0x00000179,0x00000153,0x000000f8,0x0004003d, - 0x00000006,0x0000017a,0x00000179,0x00050085,0x00000006,0x0000017b,0x00000178,0x0000017a, - 0x00060041,0x00000007,0x0000017c,0x0000014d,0x00000159,0x0000015e,0x0003003e,0x0000017c, - 0x0000017b,0x0004003d,0x00000071,0x0000017d,0x0000014d,0x000200fe,0x0000017d,0x00010038, - 0x00050036,0x00000002,0x0000007b,0x00000000,0x00000077,0x00030037,0x00000033,0x00000078, - 0x00030037,0x00000007,0x00000079,0x00030037,0x00000013,0x0000007a,0x000200f8,0x0000007c, - 0x0004003b,0x00000007,0x00000180,0x00000007,0x0004003b,0x00000007,0x00000181,0x00000007, - 0x0004003b,0x00000007,0x00000185,0x00000007,0x0004003b,0x00000007,0x00000186,0x00000007, - 0x0004003b,0x00000007,0x00000188,0x00000007,0x0004003b,0x00000007,0x00000189,0x00000007, - 0x0004003b,0x00000013,0x0000018c,0x00000007,0x0004003b,0x00000013,0x00000194,0x00000007, - 0x0004003b,0x00000013,0x0000019c,0x00000007,0x0004003b,0x0000014c,0x000001a0,0x00000007, - 0x0004003b,0x00000013,0x000001a2,0x00000007,0x0004003b,0x00000033,0x000001a4,0x00000007, - 0x0004003b,0x000001a6,0x000001a7,0x00000007,0x0004003b,0x00000033,0x000001b0,0x00000007, - 0x0004003b,0x00000007,0x000001b4,0x00000007,0x0004003b,0x00000033,0x000001bd,0x00000007, - 0x0004003b,0x00000033,0x000001c3,0x00000007,0x0004003b,0x00000033,0x000001c5,0x00000007, - 0x0004003b,0x00000033,0x000001c9,0x00000007,0x0004003b,0x00000007,0x000001cb,0x00000007, - 0x0004003d,0x00000006,0x00000182,0x00000079,0x0003003e,0x00000181,0x00000182,0x00050039, - 0x00000006,0x00000183,0x0000006b,0x00000181,0x0003003e,0x00000185,0x00000183,0x0003003e, - 0x00000186,0x00000184,0x00060039,0x00000006,0x00000187,0x0000001b,0x00000185,0x00000186, - 0x0003003e,0x00000180,0x00000187,0x0004003d,0x00000006,0x0000018a,0x00000180,0x0003003e, - 0x00000189,0x0000018a,0x00050039,0x00000006,0x0000018b,0x00000057,0x00000189,0x0003003e, - 0x00000188,0x0000018b,0x0004003d,0x00000012,0x0000018d,0x0000007a,0x0003003e,0x0000018c, - 0x0000018d,0x00050039,0x00000006,0x0000018e,0x0000005b,0x0000018c,0x0004003d,0x00000006, - 0x0000018f,0x00000188,0x000500ba,0x00000061,0x00000190,0x0000018e,0x0000018f,0x000600a9, - 0x00000006,0x00000191,0x00000190,0x00000096,0x00000095,0x0004003d,0x00000012,0x00000192, - 0x0000007a,0x0005008e,0x00000012,0x00000193,0x00000192,0x00000191,0x0003003e,0x0000007a, - 0x00000193,0x0004003d,0x00000025,0x00000195,0x00000078,0x0004006f,0x00000012,0x00000196, - 0x00000195,0x00050050,0x00000012,0x00000197,0x00000149,0x00000149,0x00050081,0x00000012, - 0x00000198,0x00000196,0x00000197,0x00040039,0x00000025,0x00000199,0x00000027,0x0004006f, - 0x00000012,0x0000019a,0x00000199,0x00050088,0x00000012,0x0000019b,0x00000198,0x0000019a, - 0x0003003e,0x00000194,0x0000019b,0x0004003d,0x00000012,0x0000019d,0x00000194,0x0004003d, - 0x00000012,0x0000019e,0x0000007a,0x00050081,0x00000012,0x0000019f,0x0000019d,0x0000019e, - 0x0003003e,0x0000019c,0x0000019f,0x00040039,0x00000025,0x000001a1,0x00000027,0x0004003d, - 0x00000012,0x000001a3,0x0000019c,0x0003003e,0x000001a2,0x000001a3,0x0003003e,0x000001a4, - 0x000001a1,0x00060039,0x00000071,0x000001a5,0x00000075,0x000001a2,0x000001a4,0x0003003e, - 0x000001a0,0x000001a5,0x0003003e,0x000001a7,0x000000ab,0x000200f9,0x000001a8,0x000200f8, - 0x000001a8,0x000400f6,0x000001aa,0x000001ab,0x00000000,0x000200f9,0x000001ac,0x000200f8, - 0x000001ac,0x0004003d,0x00000024,0x000001ad,0x000001a7,0x000500b1,0x00000061,0x000001af, - 0x000001ad,0x000001ae,0x000400fa,0x000001af,0x000001a9,0x000001aa,0x000200f8,0x000001a9, - 0x0004003d,0x00000024,0x000001b1,0x000001a7,0x00060041,0x00000033,0x000001b2,0x000001a0, - 0x000000ab,0x000001b1,0x0004003d,0x00000025,0x000001b3,0x000001b2,0x0003003e,0x000001b0, - 0x000001b3,0x0004003d,0x00000024,0x000001b5,0x000001a7,0x00060041,0x00000007,0x000001b6, - 0x000001a0,0x00000159,0x000001b5,0x0004003d,0x00000006,0x000001b7,0x000001b6,0x0003003e, - 0x000001b4,0x000001b7,0x0004003d,0x00000006,0x000001b8,0x000001b4,0x000500ba,0x00000061, - 0x000001ba,0x000001b8,0x000001b9,0x000300f7,0x000001bc,0x00000000,0x000400fa,0x000001ba, - 0x000001bb,0x000001bc,0x000200f8,0x000001bb,0x00050041,0x00000033,0x000001be,0x000001a0, - 0x0000014e,0x0004003d,0x00000025,0x000001bf,0x000001be,0x0004003d,0x00000025,0x000001c0, - 0x000001b0,0x00050080,0x00000025,0x000001c1,0x000001bf,0x000001c0,0x0003003e,0x000001bd, - 0x000001c1,0x00040039,0x00000025,0x000001c2,0x00000027,0x0004003d,0x00000025,0x000001c4, - 0x000001bd,0x0003003e,0x000001c3,0x000001c4,0x0003003e,0x000001c5,0x000001c2,0x00060039, - 0x00000061,0x000001c6,0x00000065,0x000001c3,0x000001c5,0x000300f7,0x000001c8,0x00000000, - 0x000400fa,0x000001c6,0x000001c7,0x000001c8,0x000200f8,0x000001c7,0x0004003d,0x00000025, - 0x000001ca,0x000001bd,0x0003003e,0x000001c9,0x000001ca,0x0004003d,0x00000006,0x000001cc, - 0x00000079,0x0003003e,0x000001cb,0x000001cc,0x00060039,0x00000002,0x000001cd,0x0000004b, - 0x000001c9,0x000001cb,0x000200f9,0x000001c8,0x000200f8,0x000001c8,0x000200f9,0x000001bc, - 0x000200f8,0x000001bc,0x000200f9,0x000001ab,0x000200f8,0x000001ab,0x0004003d,0x00000024, - 0x000001ce,0x000001a7,0x00050080,0x00000024,0x000001cf,0x000001ce,0x00000159,0x0003003e, - 0x000001a7,0x000001cf,0x000200f9,0x000001a8,0x000200f8,0x000001aa,0x000100fd,0x00010038, - 0x00050036,0x0000007d,0x00000080,0x00000000,0x0000007e,0x00030037,0x00000033,0x0000007f, - 0x000200f8,0x00000081,0x0004003b,0x000001a6,0x000001d0,0x00000007,0x0004003b,0x00000033, - 0x000001d8,0x00000007,0x0004003b,0x000001e4,0x000001e5,0x00000007,0x0004003b,0x000001ea, - 0x000001eb,0x00000007,0x0004003b,0x00000033,0x000001ed,0x00000007,0x0004003b,0x000001f3, - 0x000001f4,0x00000007,0x0004003b,0x00000033,0x00000204,0x00000007,0x0004003b,0x000001e4, - 0x00000207,0x00000007,0x0004003b,0x00000033,0x0000020c,0x00000007,0x0004003b,0x00000033, - 0x0000020e,0x00000007,0x0004003b,0x00000007,0x00000212,0x00000007,0x0004003b,0x00000007, - 0x0000021c,0x00000007,0x0004003b,0x00000007,0x0000021f,0x00000007,0x0003003e,0x000001d0, - 0x000000ab,0x0003003e,0x000001d0,0x000000ab,0x000200f9,0x000001d1,0x000200f8,0x000001d1, - 0x000400f6,0x000001d3,0x000001d4,0x00000000,0x000200f9,0x000001d5,0x000200f8,0x000001d5, - 0x0004003d,0x00000024,0x000001d6,0x000001d0,0x000500b1,0x00000061,0x000001d7,0x000001d6, - 0x000000b7,0x000400fa,0x000001d7,0x000001d2,0x000001d3,0x000200f8,0x000001d2,0x0004003d, - 0x00000025,0x000001d9,0x0000007f,0x0004003d,0x00000024,0x000001e3,0x000001d0,0x0003003e, - 0x000001e5,0x000001e2,0x00050041,0x00000033,0x000001e6,0x000001e5,0x000001e3,0x0004003d, - 0x00000025,0x000001e7,0x000001e6,0x00050080,0x00000025,0x000001e8,0x000001d9,0x000001e7, - 0x0003003e,0x000001d8,0x000001e8,0x0004003d,0x00000024,0x000001ec,0x000001d0,0x0004003d, - 0x00000025,0x000001ee,0x000001d8,0x0003003e,0x000001ed,0x000001ee,0x00050039,0x00000006, - 0x000001ef,0x00000036,0x000001ed,0x00050041,0x00000007,0x000001f0,0x000001eb,0x000001ec, - 0x0003003e,0x000001f0,0x000001ef,0x000200f9,0x000001d4,0x000200f8,0x000001d4,0x0004003d, - 0x00000024,0x000001f1,0x000001d0,0x00050080,0x00000024,0x000001f2,0x000001f1,0x00000159, - 0x0003003e,0x000001d0,0x000001f2,0x000200f9,0x000001d1,0x000200f8,0x000001d3,0x0004003d, - 0x00000025,0x000001f5,0x0000007f,0x00050041,0x00000033,0x000001f6,0x000001f4,0x00000159, - 0x0003003e,0x000001f6,0x000001f5,0x00050041,0x00000007,0x000001f7,0x000001eb,0x000000ab, - 0x0004003d,0x00000006,0x000001f8,0x000001f7,0x00050041,0x00000007,0x000001f9,0x000001f4, - 0x000000ab,0x0003003e,0x000001f9,0x000001f8,0x00050041,0x00000007,0x000001fa,0x000001eb, - 0x000000ab,0x0004003d,0x00000006,0x000001fb,0x000001fa,0x00050041,0x00000007,0x000001fc, - 0x000001f4,0x0000014e,0x0003003e,0x000001fc,0x000001fb,0x0003003e,0x000001d0,0x00000159, - 0x000200f9,0x000001fd,0x000200f8,0x000001fd,0x000400f6,0x000001ff,0x00000200,0x00000000, - 0x000200f9,0x00000201,0x000200f8,0x00000201,0x0004003d,0x00000024,0x00000202,0x000001d0, - 0x000500b1,0x00000061,0x00000203,0x00000202,0x000000b7,0x000400fa,0x00000203,0x000001fe, - 0x000001ff,0x000200f8,0x000001fe,0x0004003d,0x00000025,0x00000205,0x0000007f,0x0004003d, - 0x00000024,0x00000206,0x000001d0,0x0003003e,0x00000207,0x000001e2,0x00050041,0x00000033, - 0x00000208,0x00000207,0x00000206,0x0004003d,0x00000025,0x00000209,0x00000208,0x00050080, - 0x00000025,0x0000020a,0x00000205,0x00000209,0x0003003e,0x00000204,0x0000020a,0x00040039, - 0x00000025,0x0000020b,0x00000027,0x0004003d,0x00000025,0x0000020d,0x00000204,0x0003003e, - 0x0000020c,0x0000020d,0x0003003e,0x0000020e,0x0000020b,0x00060039,0x00000061,0x0000020f, - 0x00000065,0x0000020c,0x0000020e,0x000300f7,0x00000211,0x00000000,0x000400fa,0x0000020f, - 0x00000210,0x00000211,0x000200f8,0x00000210,0x0004003d,0x00000024,0x00000213,0x000001d0, - 0x00050041,0x00000007,0x00000214,0x000001eb,0x00000213,0x0004003d,0x00000006,0x00000215, - 0x00000214,0x0003003e,0x00000212,0x00000215,0x0004003d,0x00000006,0x00000216,0x00000212, - 0x00050041,0x00000007,0x00000217,0x000001f4,0x000000ab,0x0004003d,0x00000006,0x00000218, - 0x00000217,0x000500ba,0x00000061,0x00000219,0x00000216,0x00000218,0x000300f7,0x0000021b, - 0x00000000,0x000400fa,0x00000219,0x0000021a,0x0000021b,0x000200f8,0x0000021a,0x00050041, - 0x00000007,0x0000021d,0x000001f4,0x0000014e,0x0004003d,0x00000006,0x0000021e,0x0000021d, - 0x0003003e,0x0000021c,0x0000021e,0x0004003d,0x00000006,0x00000220,0x00000212,0x0003003e, - 0x0000021f,0x00000220,0x00060039,0x00000006,0x00000221,0x0000001b,0x0000021c,0x0000021f, - 0x00050041,0x00000007,0x00000222,0x000001f4,0x0000014e,0x0003003e,0x00000222,0x00000221, - 0x0004003d,0x00000025,0x00000223,0x00000204,0x00050041,0x00000033,0x00000224,0x000001f4, - 0x00000159,0x0003003e,0x00000224,0x00000223,0x0004003d,0x00000006,0x00000225,0x00000212, - 0x00050041,0x00000007,0x00000226,0x000001f4,0x000000ab,0x0003003e,0x00000226,0x00000225, - 0x000200f9,0x0000021b,0x000200f8,0x0000021b,0x000200f9,0x00000211,0x000200f8,0x00000211, - 0x000200f9,0x00000200,0x000200f8,0x00000200,0x0004003d,0x00000024,0x00000227,0x000001d0, - 0x00050080,0x00000024,0x00000228,0x00000227,0x00000159,0x0003003e,0x000001d0,0x00000228, - 0x000200f9,0x000001fd,0x000200f8,0x000001ff,0x0004003d,0x0000007d,0x00000229,0x000001f4, - 0x000200fe,0x00000229,0x00010038,0x00050036,0x00000012,0x00000085,0x00000000,0x00000082, - 0x00030037,0x00000033,0x00000083,0x00030037,0x0000007d,0x00000084,0x000200f8,0x00000086, - 0x0004003b,0x00000033,0x0000022c,0x00000007,0x0004003b,0x00000033,0x0000022e,0x00000007, - 0x0004003b,0x00000013,0x00000230,0x00000007,0x0004003b,0x00000033,0x00000231,0x00000007, - 0x0004003d,0x00000025,0x0000022d,0x00000083,0x0003003e,0x0000022c,0x0000022d,0x00050051, - 0x00000025,0x0000022f,0x00000084,0x00000001,0x0003003e,0x0000022e,0x0000022f,0x0004003d, - 0x00000025,0x00000232,0x0000022e,0x0003003e,0x00000231,0x00000232,0x00050039,0x00000012, - 0x00000233,0x0000003e,0x00000231,0x0003003e,0x00000230,0x00000233,0x0004003d,0x00000012, - 0x00000234,0x00000230,0x000200fe,0x00000234,0x00010038,0x00050036,0x00000006,0x00000088, - 0x00000000,0x00000034,0x00030037,0x00000033,0x00000087,0x000200f8,0x00000089,0x0004003b, - 0x0000001e,0x00000237,0x00000007,0x0004003b,0x00000033,0x00000239,0x00000007,0x0004003b, - 0x0000001e,0x0000023c,0x00000007,0x0004003b,0x0000001e,0x0000023d,0x00000007,0x0004003b, - 0x00000007,0x0000023f,0x00000007,0x0004003b,0x0000001e,0x00000240,0x00000007,0x0004003d, - 0x00000025,0x0000023a,0x00000087,0x0003003e,0x00000239,0x0000023a,0x00050039,0x0000001d, - 0x0000023b,0x0000003a,0x00000239,0x0003003e,0x0000023c,0x00000238,0x0003003e,0x0000023d, - 0x0000023b,0x00060039,0x0000001d,0x0000023e,0x00000022,0x0000023c,0x0000023d,0x0003003e, - 0x00000237,0x0000023e,0x0004003d,0x0000001d,0x00000241,0x00000237,0x0003003e,0x00000240, - 0x00000241,0x00050039,0x00000006,0x00000242,0x0000005f,0x00000240,0x0003003e,0x0000023f, - 0x00000242,0x0004003d,0x00000006,0x00000243,0x0000023f,0x000200fe,0x00000243,0x00010038, - 0x00050036,0x00000002,0x0000008c,0x00000000,0x0000008a,0x00030037,0x00000033,0x0000008b, - 0x000200f8,0x0000008d,0x0004003b,0x000001f3,0x00000246,0x00000007,0x0004003b,0x00000033, - 0x00000247,0x00000007,0x0004003b,0x00000013,0x0000024a,0x00000007,0x0004003b,0x00000033, - 0x0000024c,0x00000007,0x0004003b,0x00000033,0x0000024f,0x00000007,0x0004003b,0x00000007, - 0x00000251,0x00000007,0x0004003b,0x00000013,0x00000254,0x00000007,0x0004003b,0x00000033, - 0x00000257,0x00000007,0x0004003b,0x00000013,0x00000259,0x00000007,0x0004003b,0x00000033, - 0x0000025c,0x00000007,0x0004003b,0x00000007,0x0000025e,0x00000007,0x0004003b,0x00000007, - 0x00000262,0x00000007,0x0004003b,0x00000007,0x00000263,0x00000007,0x0004003b,0x00000007, - 0x00000267,0x00000007,0x0004003b,0x00000007,0x00000268,0x00000007,0x0004003b,0x00000033, - 0x0000026a,0x00000007,0x0004003b,0x00000007,0x0000026c,0x00000007,0x0004003b,0x00000007, - 0x0000026f,0x00000007,0x0004003b,0x00000033,0x00000270,0x00000007,0x0004003b,0x00000033, - 0x00000273,0x00000007,0x0004003b,0x00000007,0x00000275,0x00000007,0x0004003d,0x00000025, - 0x00000248,0x0000008b,0x0003003e,0x00000247,0x00000248,0x00050039,0x0000007d,0x00000249, - 0x00000080,0x00000247,0x0003003e,0x00000246,0x00000249,0x0004003d,0x0000007d,0x0000024b, - 0x00000246,0x0004003d,0x00000025,0x0000024d,0x0000008b,0x0003003e,0x0000024c,0x0000024d, - 0x00060039,0x00000012,0x0000024e,0x00000085,0x0000024c,0x0000024b,0x0003003e,0x0000024a, - 0x0000024e,0x0004003d,0x00000025,0x00000250,0x0000008b,0x0003003e,0x0000024f,0x00000250, - 0x00050041,0x00000007,0x00000252,0x00000246,0x000000ab,0x0004003d,0x00000006,0x00000253, - 0x00000252,0x0003003e,0x00000251,0x00000253,0x0004003d,0x00000012,0x00000255,0x0000024a, - 0x0003003e,0x00000254,0x00000255,0x00070039,0x00000002,0x00000256,0x0000007b,0x0000024f, - 0x00000251,0x00000254,0x0004003d,0x00000025,0x00000258,0x0000008b,0x0003003e,0x00000257, - 0x00000258,0x0004003d,0x00000012,0x0000025a,0x0000024a,0x0003003e,0x00000259,0x0000025a, - 0x00060039,0x00000002,0x0000025b,0x00000054,0x00000257,0x00000259,0x0004003d,0x00000025, - 0x0000025d,0x0000008b,0x0003003e,0x0000025c,0x0000025d,0x00050041,0x00000007,0x0000025f, - 0x00000246,0x000000ab,0x0004003d,0x00000006,0x00000260,0x0000025f,0x0003003e,0x0000025e, - 0x00000260,0x00060039,0x00000002,0x00000261,0x0000004f,0x0000025c,0x0000025e,0x00050041, - 0x00000007,0x00000264,0x00000246,0x0000014e,0x0004003d,0x00000006,0x00000265,0x00000264, - 0x0003003e,0x00000263,0x00000265,0x00050039,0x00000006,0x00000266,0x0000006b,0x00000263, - 0x0003003e,0x00000267,0x00000266,0x0003003e,0x00000268,0x00000184,0x00060039,0x00000006, - 0x00000269,0x0000001b,0x00000267,0x00000268,0x0003003e,0x00000262,0x00000269,0x0004003d, - 0x00000025,0x0000026b,0x0000008b,0x0003003e,0x0000026a,0x0000026b,0x0004003d,0x00000006, - 0x0000026d,0x00000262,0x0003003e,0x0000026c,0x0000026d,0x00060039,0x00000002,0x0000026e, - 0x00000043,0x0000026a,0x0000026c,0x0004003d,0x00000025,0x00000271,0x0000008b,0x0003003e, - 0x00000270,0x00000271,0x00050039,0x00000006,0x00000272,0x00000088,0x00000270,0x0003003e, - 0x0000026f,0x00000272,0x0004003d,0x00000025,0x00000274,0x0000008b,0x0003003e,0x00000273, - 0x00000274,0x0004003d,0x00000006,0x00000276,0x0000026f,0x0003003e,0x00000275,0x00000276, - 0x00060039,0x00000002,0x00000277,0x00000047,0x00000273,0x00000275,0x000100fd,0x00010038 + 0x0000002c,0x00050041,0x000000b5,0x000000b6,0x000000b3,0x000000b4,0x0004003d,0x00000029, + 0x000000b7,0x000000b6,0x000200fe,0x000000b7,0x00010038,0x00050036,0x0000002d,0x0000002f, + 0x00000000,0x0000002e,0x000200f8,0x00000030,0x00050041,0x000000bb,0x000000bc,0x000000b3, + 0x000000ba,0x0004003d,0x0000002d,0x000000bd,0x000000bc,0x000200fe,0x000000bd,0x00010038, + 0x00050036,0x00000012,0x00000032,0x00000000,0x00000031,0x000200f8,0x00000033,0x00050041, + 0x000000c1,0x000000c2,0x000000b3,0x000000c0,0x0004003d,0x00000012,0x000000c3,0x000000c2, + 0x000200fe,0x000000c3,0x00010038,0x00050036,0x00000006,0x00000035,0x00000000,0x00000034, + 0x000200f8,0x00000036,0x00050041,0x000000c7,0x000000c8,0x000000b3,0x000000c6,0x0004003d, + 0x00000006,0x000000c9,0x000000c8,0x000200fe,0x000000c9,0x00010038,0x00050036,0x00000006, + 0x0000003a,0x00000000,0x00000038,0x00030037,0x00000037,0x00000039,0x000200f8,0x0000003b, + 0x0004003d,0x000000cc,0x000000cf,0x000000ce,0x0004003d,0x00000029,0x000000d0,0x00000039, + 0x0007005f,0x0000002d,0x000000d1,0x000000cf,0x000000d0,0x00000002,0x000000b4,0x00050051, + 0x00000006,0x000000d3,0x000000d1,0x00000000,0x000200fe,0x000000d3,0x00010038,0x00050036, + 0x00000021,0x0000003e,0x00000000,0x0000003c,0x00030037,0x00000037,0x0000003d,0x000200f8, + 0x0000003f,0x0004003d,0x000000cc,0x000000d7,0x000000d6,0x0004003d,0x00000029,0x000000d8, + 0x0000003d,0x0007005f,0x0000002d,0x000000d9,0x000000d7,0x000000d8,0x00000002,0x000000b4, + 0x0008004f,0x00000021,0x000000da,0x000000d9,0x000000d9,0x00000000,0x00000001,0x00000002, + 0x000200fe,0x000000da,0x00010038,0x00050036,0x00000012,0x00000042,0x00000000,0x00000040, + 0x00030037,0x00000037,0x00000041,0x000200f8,0x00000043,0x0004003b,0x00000013,0x000000dd, + 0x00000007,0x0004003b,0x00000013,0x000000e3,0x00000007,0x0004003d,0x000000cc,0x000000df, + 0x000000de,0x0004003d,0x00000029,0x000000e0,0x00000041,0x0007005f,0x0000002d,0x000000e1, + 0x000000df,0x000000e0,0x00000002,0x000000b4,0x0007004f,0x00000012,0x000000e2,0x000000e1, + 0x000000e1,0x00000000,0x00000001,0x0003003e,0x000000dd,0x000000e2,0x0004003d,0x00000012, + 0x000000e4,0x000000dd,0x00040039,0x00000012,0x000000e5,0x00000032,0x00050085,0x00000012, + 0x000000e6,0x000000e4,0x000000e5,0x0003003e,0x000000e3,0x000000e6,0x0004003d,0x00000012, + 0x000000e7,0x000000e3,0x000200fe,0x000000e7,0x00010038,0x00050036,0x00000002,0x00000047, + 0x00000000,0x00000044,0x00030037,0x00000037,0x00000045,0x00030037,0x00000007,0x00000046, + 0x000200f8,0x00000048,0x0004003d,0x000000ea,0x000000ed,0x000000ec,0x0004003d,0x00000029, + 0x000000ee,0x00000045,0x0004003d,0x00000006,0x000000ef,0x00000046,0x00070050,0x0000002d, + 0x000000f0,0x000000ef,0x00000099,0x00000099,0x00000099,0x00040063,0x000000ed,0x000000ee, + 0x000000f0,0x000100fd,0x00010038,0x00050036,0x00000002,0x0000004b,0x00000000,0x00000044, + 0x00030037,0x00000037,0x00000049,0x00030037,0x00000007,0x0000004a,0x000200f8,0x0000004c, + 0x0004003d,0x000000ea,0x000000f2,0x000000f1,0x0004003d,0x00000029,0x000000f3,0x00000049, + 0x0004003d,0x00000006,0x000000f4,0x0000004a,0x00070050,0x0000002d,0x000000f5,0x000000f4, + 0x00000099,0x00000099,0x00000099,0x00040063,0x000000f2,0x000000f3,0x000000f5,0x000100fd, + 0x00010038,0x00050036,0x00000002,0x0000004f,0x00000000,0x00000044,0x00030037,0x00000037, + 0x0000004d,0x00030037,0x00000007,0x0000004e,0x000200f8,0x00000050,0x0004003b,0x000000f6, + 0x000000f7,0x00000007,0x0004003d,0x00000006,0x000000f8,0x0000004e,0x0004007c,0x00000071, + 0x000000f9,0x000000f8,0x0003003e,0x000000f7,0x000000f9,0x0004003d,0x00000029,0x000000fd, + 0x0000004d,0x0004003d,0x00000071,0x000000fe,0x000000f7,0x0006003c,0x000000ff,0x00000100, + 0x000000fc,0x000000fd,0x000000d2,0x000700ed,0x00000071,0x00000102,0x00000100,0x00000101, + 0x000000d2,0x000000fe,0x000100fd,0x00010038,0x00050036,0x00000002,0x00000053,0x00000000, + 0x00000044,0x00030037,0x00000037,0x00000051,0x00030037,0x00000007,0x00000052,0x000200f8, + 0x00000054,0x0004003d,0x00000103,0x00000106,0x00000105,0x0004003d,0x00000029,0x00000107, + 0x00000051,0x0004003d,0x00000006,0x00000108,0x00000052,0x00070050,0x0000002d,0x00000109, + 0x00000108,0x00000099,0x00000099,0x00000099,0x00040063,0x00000106,0x00000107,0x00000109, + 0x000100fd,0x00010038,0x00050036,0x00000002,0x00000058,0x00000000,0x00000055,0x00030037, + 0x00000037,0x00000056,0x00030037,0x00000013,0x00000057,0x000200f8,0x00000059,0x0004003d, + 0x0000010a,0x0000010d,0x0000010c,0x0004003d,0x00000029,0x0000010e,0x00000056,0x0004003d, + 0x00000012,0x0000010f,0x00000057,0x00050051,0x00000006,0x00000110,0x0000010f,0x00000000, + 0x00050051,0x00000006,0x00000111,0x0000010f,0x00000001,0x00070050,0x0000002d,0x00000112, + 0x00000110,0x00000111,0x00000099,0x00000099,0x00040063,0x0000010d,0x0000010e,0x00000112, + 0x000100fd,0x00010038,0x00050036,0x00000006,0x0000005b,0x00000000,0x0000000e,0x00030037, + 0x00000007,0x0000005a,0x000200f8,0x0000005c,0x0004003b,0x00000007,0x00000118,0x00000007, + 0x0004003b,0x00000007,0x0000011a,0x00000007,0x0004003b,0x00000007,0x0000011b,0x00000007, + 0x0004003b,0x00000007,0x0000011c,0x00000007,0x0004003d,0x00000006,0x00000115,0x0000005a, + 0x00050088,0x00000006,0x00000117,0x00000115,0x00000116,0x0003003e,0x00000118,0x00000117, + 0x00050039,0x00000006,0x00000119,0x00000010,0x00000118,0x0003003e,0x0000011a,0x00000113, + 0x0003003e,0x0000011b,0x00000114,0x0003003e,0x0000011c,0x00000119,0x00070039,0x00000006, + 0x0000011d,0x0000000c,0x0000011a,0x0000011b,0x0000011c,0x000200fe,0x0000011d,0x00010038, + 0x00050036,0x00000006,0x0000005f,0x00000000,0x0000005d,0x00030037,0x00000013,0x0000005e, + 0x000200f8,0x00000060,0x0004003d,0x00000012,0x00000120,0x0000005e,0x00050085,0x00000012, + 0x00000124,0x00000120,0x00000123,0x0006000c,0x00000006,0x00000125,0x00000001,0x00000042, + 0x00000124,0x000200fe,0x00000125,0x00010038,0x00050036,0x00000006,0x00000063,0x00000000, + 0x00000061,0x00030037,0x00000022,0x00000062,0x000200f8,0x00000064,0x0004003d,0x00000021, + 0x00000128,0x00000062,0x00050094,0x00000006,0x0000012d,0x00000128,0x0000012c,0x000200fe, + 0x0000012d,0x00010038,0x00050036,0x00000065,0x00000069,0x00000000,0x00000066,0x00030037, + 0x00000037,0x00000067,0x00030037,0x00000037,0x00000068,0x000200f8,0x0000006a,0x0004003d, + 0x00000029,0x00000130,0x00000067,0x0004007c,0x00000131,0x00000132,0x00000130,0x0004003d, + 0x00000029,0x00000133,0x00000068,0x0004007c,0x00000131,0x00000134,0x00000133,0x000500b0, + 0x00000135,0x00000136,0x00000132,0x00000134,0x0004009b,0x00000065,0x00000137,0x00000136, + 0x000200fe,0x00000137,0x00010038,0x00050036,0x00000006,0x0000006c,0x00000000,0x0000000e, + 0x00030037,0x00000007,0x0000006b,0x000200f8,0x0000006d,0x0004003b,0x0000013a,0x0000013b, + 0x00000007,0x00040039,0x0000002d,0x0000013c,0x0000002f,0x0003003e,0x0000013b,0x0000013c, + 0x00050041,0x00000007,0x0000013d,0x0000013b,0x00000101,0x0004003d,0x00000006,0x0000013e, + 0x0000013d,0x0004003d,0x00000006,0x0000013f,0x0000006b,0x00050041,0x00000007,0x00000140, + 0x0000013b,0x000000d2,0x0004003d,0x00000006,0x00000141,0x00000140,0x00050083,0x00000006, + 0x00000142,0x0000013f,0x00000141,0x00050088,0x00000006,0x00000143,0x0000013e,0x00000142, + 0x000200fe,0x00000143,0x00010038,0x00050036,0x00000006,0x0000006f,0x00000000,0x0000000e, + 0x00030037,0x00000007,0x0000006e,0x000200f8,0x00000070,0x0004003b,0x00000007,0x00000146, + 0x00000007,0x0004003d,0x00000006,0x00000147,0x0000006e,0x0003003e,0x00000146,0x00000147, + 0x00050039,0x00000006,0x00000148,0x0000006c,0x00000146,0x00040039,0x00000006,0x00000149, + 0x00000035,0x00050085,0x00000006,0x0000014a,0x00000148,0x00000149,0x000200fe,0x0000014a, + 0x00010038,0x00050036,0x00000075,0x00000079,0x00000000,0x00000076,0x00030037,0x00000013, + 0x00000077,0x00030037,0x00000037,0x00000078,0x000200f8,0x0000007a,0x0004003b,0x00000013, + 0x0000014d,0x00000007,0x0004003b,0x00000155,0x00000156,0x00000007,0x0004003b,0x00000013, + 0x0000015c,0x00000007,0x0004003b,0x00000013,0x0000015d,0x00000007,0x0004003d,0x00000012, + 0x0000014e,0x00000077,0x0004003d,0x00000029,0x0000014f,0x00000078,0x0004006f,0x00000012, + 0x00000150,0x0000014f,0x00050085,0x00000012,0x00000151,0x0000014e,0x00000150,0x00050083, + 0x00000012,0x00000154,0x00000151,0x00000153,0x0003003e,0x0000014d,0x00000154,0x0004003d, + 0x00000012,0x00000158,0x0000014d,0x0006000c,0x00000012,0x00000159,0x00000001,0x00000008, + 0x00000158,0x0004006e,0x00000029,0x0000015a,0x00000159,0x00050041,0x00000037,0x0000015b, + 0x00000156,0x00000157,0x0003003e,0x0000015b,0x0000015a,0x0004003d,0x00000012,0x0000015e, + 0x0000014d,0x0003003e,0x0000015d,0x0000015e,0x00050039,0x00000012,0x0000015f,0x00000016, + 0x0000015d,0x0003003e,0x0000015c,0x0000015f,0x00060041,0x00000037,0x00000161,0x00000156, + 0x000000b4,0x000000b4,0x0003003e,0x00000161,0x00000160,0x00060041,0x00000037,0x00000164, + 0x00000156,0x000000b4,0x00000162,0x0003003e,0x00000164,0x00000163,0x00060041,0x00000037, + 0x00000166,0x00000156,0x000000b4,0x00000157,0x0003003e,0x00000166,0x00000165,0x00060041, + 0x00000037,0x00000169,0x00000156,0x000000b4,0x00000167,0x0003003e,0x00000169,0x00000168, + 0x00050041,0x00000007,0x0000016a,0x0000015c,0x000000d2,0x0004003d,0x00000006,0x0000016b, + 0x0000016a,0x00050083,0x00000006,0x0000016c,0x0000009a,0x0000016b,0x00050041,0x00000007, + 0x0000016d,0x0000015c,0x00000101,0x0004003d,0x00000006,0x0000016e,0x0000016d,0x00050083, + 0x00000006,0x0000016f,0x0000009a,0x0000016e,0x00050085,0x00000006,0x00000170,0x0000016c, + 0x0000016f,0x00060041,0x00000007,0x00000171,0x00000156,0x00000162,0x000000b4,0x0003003e, + 0x00000171,0x00000170,0x00050041,0x00000007,0x00000172,0x0000015c,0x000000d2,0x0004003d, + 0x00000006,0x00000173,0x00000172,0x00050041,0x00000007,0x00000174,0x0000015c,0x00000101, + 0x0004003d,0x00000006,0x00000175,0x00000174,0x00050083,0x00000006,0x00000176,0x0000009a, + 0x00000175,0x00050085,0x00000006,0x00000177,0x00000173,0x00000176,0x00060041,0x00000007, + 0x00000178,0x00000156,0x00000162,0x00000162,0x0003003e,0x00000178,0x00000177,0x00050041, + 0x00000007,0x00000179,0x0000015c,0x000000d2,0x0004003d,0x00000006,0x0000017a,0x00000179, + 0x00050083,0x00000006,0x0000017b,0x0000009a,0x0000017a,0x00050041,0x00000007,0x0000017c, + 0x0000015c,0x00000101,0x0004003d,0x00000006,0x0000017d,0x0000017c,0x00050085,0x00000006, + 0x0000017e,0x0000017b,0x0000017d,0x00060041,0x00000007,0x0000017f,0x00000156,0x00000162, + 0x00000157,0x0003003e,0x0000017f,0x0000017e,0x00050041,0x00000007,0x00000180,0x0000015c, + 0x000000d2,0x0004003d,0x00000006,0x00000181,0x00000180,0x00050041,0x00000007,0x00000182, + 0x0000015c,0x00000101,0x0004003d,0x00000006,0x00000183,0x00000182,0x00050085,0x00000006, + 0x00000184,0x00000181,0x00000183,0x00060041,0x00000007,0x00000185,0x00000156,0x00000162, + 0x00000167,0x0003003e,0x00000185,0x00000184,0x0004003d,0x00000075,0x00000186,0x00000156, + 0x000200fe,0x00000186,0x00010038,0x00050036,0x00000002,0x0000007f,0x00000000,0x0000007b, + 0x00030037,0x00000037,0x0000007c,0x00030037,0x00000007,0x0000007d,0x00030037,0x00000013, + 0x0000007e,0x000200f8,0x00000080,0x0004003b,0x00000007,0x00000189,0x00000007,0x0004003b, + 0x00000007,0x0000018a,0x00000007,0x0004003b,0x00000007,0x0000018e,0x00000007,0x0004003b, + 0x00000007,0x0000018f,0x00000007,0x0004003b,0x00000007,0x00000191,0x00000007,0x0004003b, + 0x00000007,0x00000192,0x00000007,0x0004003b,0x00000013,0x00000195,0x00000007,0x0004003b, + 0x00000013,0x0000019d,0x00000007,0x0004003b,0x00000013,0x000001a5,0x00000007,0x0004003b, + 0x00000155,0x000001a9,0x00000007,0x0004003b,0x00000013,0x000001ab,0x00000007,0x0004003b, + 0x00000037,0x000001ad,0x00000007,0x0004003b,0x000001af,0x000001b0,0x00000007,0x0004003b, + 0x00000037,0x000001b9,0x00000007,0x0004003b,0x00000007,0x000001bd,0x00000007,0x0004003b, + 0x00000037,0x000001c6,0x00000007,0x0004003b,0x00000037,0x000001cc,0x00000007,0x0004003b, + 0x00000037,0x000001ce,0x00000007,0x0004003b,0x00000037,0x000001d2,0x00000007,0x0004003b, + 0x00000007,0x000001d4,0x00000007,0x0004003d,0x00000006,0x0000018b,0x0000007d,0x0003003e, + 0x0000018a,0x0000018b,0x00050039,0x00000006,0x0000018c,0x0000006f,0x0000018a,0x0003003e, + 0x0000018e,0x0000018c,0x0003003e,0x0000018f,0x0000018d,0x00060039,0x00000006,0x00000190, + 0x0000001b,0x0000018e,0x0000018f,0x0003003e,0x00000189,0x00000190,0x0004003d,0x00000006, + 0x00000193,0x00000189,0x0003003e,0x00000192,0x00000193,0x00050039,0x00000006,0x00000194, + 0x0000005b,0x00000192,0x0003003e,0x00000191,0x00000194,0x0004003d,0x00000012,0x00000196, + 0x0000007e,0x0003003e,0x00000195,0x00000196,0x00050039,0x00000006,0x00000197,0x0000005f, + 0x00000195,0x0004003d,0x00000006,0x00000198,0x00000191,0x000500ba,0x00000065,0x00000199, + 0x00000197,0x00000198,0x000600a9,0x00000006,0x0000019a,0x00000199,0x0000009a,0x00000099, + 0x0004003d,0x00000012,0x0000019b,0x0000007e,0x0005008e,0x00000012,0x0000019c,0x0000019b, + 0x0000019a,0x0003003e,0x0000007e,0x0000019c,0x0004003d,0x00000029,0x0000019e,0x0000007c, + 0x0004006f,0x00000012,0x0000019f,0x0000019e,0x00050050,0x00000012,0x000001a0,0x00000152, + 0x00000152,0x00050081,0x00000012,0x000001a1,0x0000019f,0x000001a0,0x00040039,0x00000029, + 0x000001a2,0x0000002b,0x0004006f,0x00000012,0x000001a3,0x000001a2,0x00050088,0x00000012, + 0x000001a4,0x000001a1,0x000001a3,0x0003003e,0x0000019d,0x000001a4,0x0004003d,0x00000012, + 0x000001a6,0x0000019d,0x0004003d,0x00000012,0x000001a7,0x0000007e,0x00050081,0x00000012, + 0x000001a8,0x000001a6,0x000001a7,0x0003003e,0x000001a5,0x000001a8,0x00040039,0x00000029, + 0x000001aa,0x0000002b,0x0004003d,0x00000012,0x000001ac,0x000001a5,0x0003003e,0x000001ab, + 0x000001ac,0x0003003e,0x000001ad,0x000001aa,0x00060039,0x00000075,0x000001ae,0x00000079, + 0x000001ab,0x000001ad,0x0003003e,0x000001a9,0x000001ae,0x0003003e,0x000001b0,0x000000b4, + 0x000200f9,0x000001b1,0x000200f8,0x000001b1,0x000400f6,0x000001b3,0x000001b4,0x00000000, + 0x000200f9,0x000001b5,0x000200f8,0x000001b5,0x0004003d,0x00000028,0x000001b6,0x000001b0, + 0x000500b1,0x00000065,0x000001b8,0x000001b6,0x000001b7,0x000400fa,0x000001b8,0x000001b2, + 0x000001b3,0x000200f8,0x000001b2,0x0004003d,0x00000028,0x000001ba,0x000001b0,0x00060041, + 0x00000037,0x000001bb,0x000001a9,0x000000b4,0x000001ba,0x0004003d,0x00000029,0x000001bc, + 0x000001bb,0x0003003e,0x000001b9,0x000001bc,0x0004003d,0x00000028,0x000001be,0x000001b0, + 0x00060041,0x00000007,0x000001bf,0x000001a9,0x00000162,0x000001be,0x0004003d,0x00000006, + 0x000001c0,0x000001bf,0x0003003e,0x000001bd,0x000001c0,0x0004003d,0x00000006,0x000001c1, + 0x000001bd,0x000500ba,0x00000065,0x000001c3,0x000001c1,0x000001c2,0x000300f7,0x000001c5, + 0x00000000,0x000400fa,0x000001c3,0x000001c4,0x000001c5,0x000200f8,0x000001c4,0x00050041, + 0x00000037,0x000001c7,0x000001a9,0x00000157,0x0004003d,0x00000029,0x000001c8,0x000001c7, + 0x0004003d,0x00000029,0x000001c9,0x000001b9,0x00050080,0x00000029,0x000001ca,0x000001c8, + 0x000001c9,0x0003003e,0x000001c6,0x000001ca,0x00040039,0x00000029,0x000001cb,0x0000002b, + 0x0004003d,0x00000029,0x000001cd,0x000001c6,0x0003003e,0x000001cc,0x000001cd,0x0003003e, + 0x000001ce,0x000001cb,0x00060039,0x00000065,0x000001cf,0x00000069,0x000001cc,0x000001ce, + 0x000300f7,0x000001d1,0x00000000,0x000400fa,0x000001cf,0x000001d0,0x000001d1,0x000200f8, + 0x000001d0,0x0004003d,0x00000029,0x000001d3,0x000001c6,0x0003003e,0x000001d2,0x000001d3, + 0x0004003d,0x00000006,0x000001d5,0x0000007d,0x0003003e,0x000001d4,0x000001d5,0x00060039, + 0x00000002,0x000001d6,0x0000004f,0x000001d2,0x000001d4,0x000200f9,0x000001d1,0x000200f8, + 0x000001d1,0x000200f9,0x000001c5,0x000200f8,0x000001c5,0x000200f9,0x000001b4,0x000200f8, + 0x000001b4,0x0004003d,0x00000028,0x000001d7,0x000001b0,0x00050080,0x00000028,0x000001d8, + 0x000001d7,0x00000162,0x0003003e,0x000001b0,0x000001d8,0x000200f9,0x000001b1,0x000200f8, + 0x000001b3,0x000100fd,0x00010038,0x00050036,0x00000081,0x00000084,0x00000000,0x00000082, + 0x00030037,0x00000037,0x00000083,0x000200f8,0x00000085,0x0004003b,0x000001af,0x000001d9, + 0x00000007,0x0004003b,0x00000037,0x000001e1,0x00000007,0x0004003b,0x000001ed,0x000001ee, + 0x00000007,0x0004003b,0x000001f3,0x000001f4,0x00000007,0x0004003b,0x00000037,0x000001f6, + 0x00000007,0x0004003b,0x000001fc,0x000001fd,0x00000007,0x0004003b,0x00000037,0x0000020d, + 0x00000007,0x0004003b,0x000001ed,0x00000210,0x00000007,0x0004003b,0x00000037,0x00000215, + 0x00000007,0x0004003b,0x00000037,0x00000217,0x00000007,0x0004003b,0x00000007,0x0000021b, + 0x00000007,0x0004003b,0x00000007,0x00000225,0x00000007,0x0004003b,0x00000007,0x00000228, + 0x00000007,0x0003003e,0x000001d9,0x000000b4,0x0003003e,0x000001d9,0x000000b4,0x000200f9, + 0x000001da,0x000200f8,0x000001da,0x000400f6,0x000001dc,0x000001dd,0x00000000,0x000200f9, + 0x000001de,0x000200f8,0x000001de,0x0004003d,0x00000028,0x000001df,0x000001d9,0x000500b1, + 0x00000065,0x000001e0,0x000001df,0x000000c0,0x000400fa,0x000001e0,0x000001db,0x000001dc, + 0x000200f8,0x000001db,0x0004003d,0x00000029,0x000001e2,0x00000083,0x0004003d,0x00000028, + 0x000001ec,0x000001d9,0x0003003e,0x000001ee,0x000001eb,0x00050041,0x00000037,0x000001ef, + 0x000001ee,0x000001ec,0x0004003d,0x00000029,0x000001f0,0x000001ef,0x00050080,0x00000029, + 0x000001f1,0x000001e2,0x000001f0,0x0003003e,0x000001e1,0x000001f1,0x0004003d,0x00000028, + 0x000001f5,0x000001d9,0x0004003d,0x00000029,0x000001f7,0x000001e1,0x0003003e,0x000001f6, + 0x000001f7,0x00050039,0x00000006,0x000001f8,0x0000003a,0x000001f6,0x00050041,0x00000007, + 0x000001f9,0x000001f4,0x000001f5,0x0003003e,0x000001f9,0x000001f8,0x000200f9,0x000001dd, + 0x000200f8,0x000001dd,0x0004003d,0x00000028,0x000001fa,0x000001d9,0x00050080,0x00000028, + 0x000001fb,0x000001fa,0x00000162,0x0003003e,0x000001d9,0x000001fb,0x000200f9,0x000001da, + 0x000200f8,0x000001dc,0x0004003d,0x00000029,0x000001fe,0x00000083,0x00050041,0x00000037, + 0x000001ff,0x000001fd,0x00000162,0x0003003e,0x000001ff,0x000001fe,0x00050041,0x00000007, + 0x00000200,0x000001f4,0x000000b4,0x0004003d,0x00000006,0x00000201,0x00000200,0x00050041, + 0x00000007,0x00000202,0x000001fd,0x000000b4,0x0003003e,0x00000202,0x00000201,0x00050041, + 0x00000007,0x00000203,0x000001f4,0x000000b4,0x0004003d,0x00000006,0x00000204,0x00000203, + 0x00050041,0x00000007,0x00000205,0x000001fd,0x00000157,0x0003003e,0x00000205,0x00000204, + 0x0003003e,0x000001d9,0x00000162,0x000200f9,0x00000206,0x000200f8,0x00000206,0x000400f6, + 0x00000208,0x00000209,0x00000000,0x000200f9,0x0000020a,0x000200f8,0x0000020a,0x0004003d, + 0x00000028,0x0000020b,0x000001d9,0x000500b1,0x00000065,0x0000020c,0x0000020b,0x000000c0, + 0x000400fa,0x0000020c,0x00000207,0x00000208,0x000200f8,0x00000207,0x0004003d,0x00000029, + 0x0000020e,0x00000083,0x0004003d,0x00000028,0x0000020f,0x000001d9,0x0003003e,0x00000210, + 0x000001eb,0x00050041,0x00000037,0x00000211,0x00000210,0x0000020f,0x0004003d,0x00000029, + 0x00000212,0x00000211,0x00050080,0x00000029,0x00000213,0x0000020e,0x00000212,0x0003003e, + 0x0000020d,0x00000213,0x00040039,0x00000029,0x00000214,0x0000002b,0x0004003d,0x00000029, + 0x00000216,0x0000020d,0x0003003e,0x00000215,0x00000216,0x0003003e,0x00000217,0x00000214, + 0x00060039,0x00000065,0x00000218,0x00000069,0x00000215,0x00000217,0x000300f7,0x0000021a, + 0x00000000,0x000400fa,0x00000218,0x00000219,0x0000021a,0x000200f8,0x00000219,0x0004003d, + 0x00000028,0x0000021c,0x000001d9,0x00050041,0x00000007,0x0000021d,0x000001f4,0x0000021c, + 0x0004003d,0x00000006,0x0000021e,0x0000021d,0x0003003e,0x0000021b,0x0000021e,0x0004003d, + 0x00000006,0x0000021f,0x0000021b,0x00050041,0x00000007,0x00000220,0x000001fd,0x000000b4, + 0x0004003d,0x00000006,0x00000221,0x00000220,0x000500b8,0x00000065,0x00000222,0x0000021f, + 0x00000221,0x000300f7,0x00000224,0x00000000,0x000400fa,0x00000222,0x00000223,0x00000224, + 0x000200f8,0x00000223,0x00050041,0x00000007,0x00000226,0x000001fd,0x00000157,0x0004003d, + 0x00000006,0x00000227,0x00000226,0x0003003e,0x00000225,0x00000227,0x0004003d,0x00000006, + 0x00000229,0x0000021b,0x0003003e,0x00000228,0x00000229,0x00060039,0x00000006,0x0000022a, + 0x0000001f,0x00000225,0x00000228,0x00050041,0x00000007,0x0000022b,0x000001fd,0x00000157, + 0x0003003e,0x0000022b,0x0000022a,0x0004003d,0x00000029,0x0000022c,0x0000020d,0x00050041, + 0x00000037,0x0000022d,0x000001fd,0x00000162,0x0003003e,0x0000022d,0x0000022c,0x0004003d, + 0x00000006,0x0000022e,0x0000021b,0x00050041,0x00000007,0x0000022f,0x000001fd,0x000000b4, + 0x0003003e,0x0000022f,0x0000022e,0x000200f9,0x00000224,0x000200f8,0x00000224,0x000200f9, + 0x0000021a,0x000200f8,0x0000021a,0x000200f9,0x00000209,0x000200f8,0x00000209,0x0004003d, + 0x00000028,0x00000230,0x000001d9,0x00050080,0x00000028,0x00000231,0x00000230,0x00000162, + 0x0003003e,0x000001d9,0x00000231,0x000200f9,0x00000206,0x000200f8,0x00000208,0x0004003d, + 0x00000081,0x00000232,0x000001fd,0x000200fe,0x00000232,0x00010038,0x00050036,0x00000012, + 0x00000089,0x00000000,0x00000086,0x00030037,0x00000037,0x00000087,0x00030037,0x00000081, + 0x00000088,0x000200f8,0x0000008a,0x0004003b,0x00000037,0x00000235,0x00000007,0x0004003b, + 0x00000037,0x00000237,0x00000007,0x0004003b,0x00000013,0x00000239,0x00000007,0x0004003b, + 0x00000037,0x0000023a,0x00000007,0x0004003d,0x00000029,0x00000236,0x00000087,0x0003003e, + 0x00000235,0x00000236,0x00050051,0x00000029,0x00000238,0x00000088,0x00000001,0x0003003e, + 0x00000237,0x00000238,0x0004003d,0x00000029,0x0000023b,0x00000237,0x0003003e,0x0000023a, + 0x0000023b,0x00050039,0x00000012,0x0000023c,0x00000042,0x0000023a,0x0003003e,0x00000239, + 0x0000023c,0x0004003d,0x00000012,0x0000023d,0x00000239,0x000200fe,0x0000023d,0x00010038, + 0x00050036,0x00000006,0x0000008c,0x00000000,0x00000038,0x00030037,0x00000037,0x0000008b, + 0x000200f8,0x0000008d,0x0004003b,0x00000022,0x00000240,0x00000007,0x0004003b,0x00000037, + 0x00000242,0x00000007,0x0004003b,0x00000022,0x00000245,0x00000007,0x0004003b,0x00000022, + 0x00000246,0x00000007,0x0004003b,0x00000007,0x00000248,0x00000007,0x0004003b,0x00000022, + 0x00000249,0x00000007,0x0004003d,0x00000029,0x00000243,0x0000008b,0x0003003e,0x00000242, + 0x00000243,0x00050039,0x00000021,0x00000244,0x0000003e,0x00000242,0x0003003e,0x00000245, + 0x00000241,0x0003003e,0x00000246,0x00000244,0x00060039,0x00000021,0x00000247,0x00000026, + 0x00000245,0x00000246,0x0003003e,0x00000240,0x00000247,0x0004003d,0x00000021,0x0000024a, + 0x00000240,0x0003003e,0x00000249,0x0000024a,0x00050039,0x00000006,0x0000024b,0x00000063, + 0x00000249,0x0003003e,0x00000248,0x0000024b,0x0004003d,0x00000006,0x0000024c,0x00000248, + 0x000200fe,0x0000024c,0x00010038,0x00050036,0x00000002,0x00000090,0x00000000,0x0000008e, + 0x00030037,0x00000037,0x0000008f,0x000200f8,0x00000091,0x0004003b,0x000001fc,0x0000024f, + 0x00000007,0x0004003b,0x00000037,0x00000250,0x00000007,0x0004003b,0x00000013,0x00000253, + 0x00000007,0x0004003b,0x00000037,0x00000255,0x00000007,0x0004003b,0x00000037,0x00000258, + 0x00000007,0x0004003b,0x00000007,0x0000025a,0x00000007,0x0004003b,0x00000013,0x0000025d, + 0x00000007,0x0004003b,0x00000037,0x00000260,0x00000007,0x0004003b,0x00000013,0x00000262, + 0x00000007,0x0004003b,0x00000037,0x00000265,0x00000007,0x0004003b,0x00000007,0x00000267, + 0x00000007,0x0004003b,0x00000007,0x0000026b,0x00000007,0x0004003b,0x00000007,0x0000026c, + 0x00000007,0x0004003b,0x00000007,0x00000270,0x00000007,0x0004003b,0x00000007,0x00000271, + 0x00000007,0x0004003b,0x00000037,0x00000273,0x00000007,0x0004003b,0x00000007,0x00000275, + 0x00000007,0x0004003b,0x00000007,0x00000278,0x00000007,0x0004003b,0x00000037,0x00000279, + 0x00000007,0x0004003b,0x00000037,0x0000027c,0x00000007,0x0004003b,0x00000007,0x0000027e, + 0x00000007,0x0004003d,0x00000029,0x00000251,0x0000008f,0x0003003e,0x00000250,0x00000251, + 0x00050039,0x00000081,0x00000252,0x00000084,0x00000250,0x0003003e,0x0000024f,0x00000252, + 0x0004003d,0x00000081,0x00000254,0x0000024f,0x0004003d,0x00000029,0x00000256,0x0000008f, + 0x0003003e,0x00000255,0x00000256,0x00060039,0x00000012,0x00000257,0x00000089,0x00000255, + 0x00000254,0x0003003e,0x00000253,0x00000257,0x0004003d,0x00000029,0x00000259,0x0000008f, + 0x0003003e,0x00000258,0x00000259,0x00050041,0x00000007,0x0000025b,0x0000024f,0x000000b4, + 0x0004003d,0x00000006,0x0000025c,0x0000025b,0x0003003e,0x0000025a,0x0000025c,0x0004003d, + 0x00000012,0x0000025e,0x00000253,0x0003003e,0x0000025d,0x0000025e,0x00070039,0x00000002, + 0x0000025f,0x0000007f,0x00000258,0x0000025a,0x0000025d,0x0004003d,0x00000029,0x00000261, + 0x0000008f,0x0003003e,0x00000260,0x00000261,0x0004003d,0x00000012,0x00000263,0x00000253, + 0x0003003e,0x00000262,0x00000263,0x00060039,0x00000002,0x00000264,0x00000058,0x00000260, + 0x00000262,0x0004003d,0x00000029,0x00000266,0x0000008f,0x0003003e,0x00000265,0x00000266, + 0x00050041,0x00000007,0x00000268,0x0000024f,0x000000b4,0x0004003d,0x00000006,0x00000269, + 0x00000268,0x0003003e,0x00000267,0x00000269,0x00060039,0x00000002,0x0000026a,0x00000053, + 0x00000265,0x00000267,0x00050041,0x00000007,0x0000026d,0x0000024f,0x00000157,0x0004003d, + 0x00000006,0x0000026e,0x0000026d,0x0003003e,0x0000026c,0x0000026e,0x00050039,0x00000006, + 0x0000026f,0x0000006f,0x0000026c,0x0003003e,0x00000270,0x0000026f,0x0003003e,0x00000271, + 0x0000018d,0x00060039,0x00000006,0x00000272,0x0000001b,0x00000270,0x00000271,0x0003003e, + 0x0000026b,0x00000272,0x0004003d,0x00000029,0x00000274,0x0000008f,0x0003003e,0x00000273, + 0x00000274,0x0004003d,0x00000006,0x00000276,0x0000026b,0x0003003e,0x00000275,0x00000276, + 0x00060039,0x00000002,0x00000277,0x00000047,0x00000273,0x00000275,0x0004003d,0x00000029, + 0x0000027a,0x0000008f,0x0003003e,0x00000279,0x0000027a,0x00050039,0x00000006,0x0000027b, + 0x0000008c,0x00000279,0x0003003e,0x00000278,0x0000027b,0x0004003d,0x00000029,0x0000027d, + 0x0000008f,0x0003003e,0x0000027c,0x0000027d,0x0004003d,0x00000006,0x0000027f,0x00000278, + 0x0003003e,0x0000027e,0x0000027f,0x00060039,0x00000002,0x00000280,0x0000004b,0x0000027c, + 0x0000027e,0x000100fd,0x00010038 }; diff --git a/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h b/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h index dbf1c35f9..a865575cb 100644 --- a/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h +++ b/gpu/vk/shaders/fsr3_prepare_reactivity_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_PREPARE_REACTIVITY_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x00000523,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_rcas_comp_spv.h b/gpu/vk/shaders/fsr3_rcas_comp_spv.h index 90f455760..5c81366bc 100644 --- a/gpu/vk/shaders/fsr3_rcas_comp_spv.h +++ b/gpu/vk/shaders/fsr3_rcas_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_RCAS_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x0000033d,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_shading_change_comp_spv.h b/gpu/vk/shaders/fsr3_shading_change_comp_spv.h index 892d24cc5..f27a4f8e6 100644 --- a/gpu/vk/shaders/fsr3_shading_change_comp_spv.h +++ b/gpu/vk/shaders/fsr3_shading_change_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_SHADING_CHANGE_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x0000013d,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h b/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h index ec5446d11..74dfc9ad4 100644 --- a/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h +++ b/gpu/vk/shaders/fsr3_shading_change_pyramid_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_SHADING_CHANGE_PYRAMID_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x0000091b,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h b/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h index 6b251bbb6..25cc794bc 100644 --- a/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h +++ b/gpu/vk/shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h @@ -1,4 +1,4 @@ - // 1116.2.0 + // 1116.6.0 #pragma once const uint32_t FSR3_SHADING_CHANGE_PYRAMID_NOWAVE_COMP_SPV[] = { 0x07230203,0x00010300,0x0008000b,0x0000095b,0x00000000,0x00020011,0x00000001,0x00020011, diff --git a/scripts/fsr3_shaders.py b/scripts/fsr3_shaders.py index 1b584898f..8803bc4bf 100644 --- a/scripts/fsr3_shaders.py +++ b/scripts/fsr3_shaders.py @@ -22,18 +22,20 @@ PASSES = SDK / "shaders/fsr3upscaler" OUT = ROOT / "gpu/vk/shaders" -# The option set the renderer records these passes under. Each one is a promise about the inputs: -# the colour is HDR, the motion is low-resolution and not jittered, and the depth is reversed. They -# have to match what gpu/vk/vk_fsr3.cpp hands the passes, which is why they live in one place. +# The option set the renderer records these passes under. Each one is a promise about the inputs, +# which are the ones vk_draw.cpp builds for FSR 4.1: the colour is tonemapped and square-root encoded +# (LDR, values in [0, 1]), the motion is low-resolution and not jittered, and the depth is standard +# (0 near, 1 far, not inverted). They have to match what gpu/vk/vk_fsr3.cpp hands the passes, which is +# why they live in one place, and tests/test_fsr3_shaders.py pins them. OPTIONS = [ "-DFFX_GPU=1", "-DFFX_GLSL=1", "-DFFX_FSR3UPSCALER_OPTION_UPSAMPLE_USE_LANCZOS_TYPE=2", "-DFFX_FSR3UPSCALER_OPTION_REPROJECT_USE_LANCZOS_TYPE=0", - "-DFFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT=1", + "-DFFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT=0", "-DFFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS=1", "-DFFX_FSR3UPSCALER_OPTION_JITTERED_MOTION_VECTORS=0", - "-DFFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH=1", + "-DFFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH=0", ] # name, the pass GLSL it compiles, extra defines. The _nowave variants are for devices without the @@ -70,6 +72,15 @@ def compile_one(glslang, name, pass_name, extra, out_path, target_env, variable= subprocess.run(cmd, check=True) +def comparable(header_text): + """The header without glslang's own version comment on its first line, which changes with every + glslang release while the SPIR-V below it does not.""" + lines = header_text.splitlines() + if lines and lines[0].lstrip().startswith("//"): + lines = lines[1:] + return "\n".join(lines) + "\n" + + def main(): p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) @@ -94,8 +105,8 @@ def main(): compile_one(glslang, name, pass_name, extra, spv, a.target_env, variable=False) subprocess.run([a.spirv_val, str(spv)], check=True) if a.check: - have = header.read_text() if header.exists() else "" - want = made.read_text() + have = comparable(header.read_text()) if header.exists() else "" + want = comparable(made.read_text()) if have != want: bad.append(name) if not have: diff --git a/tests/test_fsr3_shaders.py b/tests/test_fsr3_shaders.py index da890cf19..4bba63698 100644 --- a/tests/test_fsr3_shaders.py +++ b/tests/test_fsr3_shaders.py @@ -16,7 +16,26 @@ ROOT = Path(__file__).resolve().parents[1] +# What the renderer hands the passes (vk_draw.cpp and FSR 4.1's own inputs: tonemapped and square-root encoded colour, standard +# depth, render-pixel motion, jitter told separately). scripts/fsr3_shaders.py compiles them for exactly this; a value here +# changing means changing the renderer too. +OPTIONS_RENDERER_NEEDS = { + "FFX_FSR3UPSCALER_OPTION_HDR_COLOR_INPUT": "0", + "FFX_FSR3UPSCALER_OPTION_INVERTED_DEPTH": "0", + "FFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS": "1", + "FFX_FSR3UPSCALER_OPTION_JITTERED_MOTION_VECTORS": "0", +} + + +def check_options(): + source = (ROOT / "scripts/fsr3_shaders.py").read_text(encoding="utf-8") + for name, value in OPTIONS_RENDERER_NEEDS.items(): + if f'"-D{name}={value}"' not in source: + raise SystemExit(f"scripts/fsr3_shaders.py does not compile with {name}={value}") + + def main(): + check_options() p = argparse.ArgumentParser(description=__doc__) p.add_argument("--glslang") p.add_argument("--spirv-val") diff --git a/third_party/fidelityfx-sdk/PROVENANCE.md b/third_party/fidelityfx-sdk/PROVENANCE.md index a4aaf8099..8edd4be67 100644 --- a/third_party/fidelityfx-sdk/PROVENANCE.md +++ b/third_party/fidelityfx-sdk/PROVENANCE.md @@ -18,7 +18,7 @@ No runtime library is needed, and none is included: the passes are compiled from `gpu/vk/shaders/fsr3_*_comp_spv.h` by `scripts/fsr3_shaders.py`, which is also what `tests/test_fsr3_shaders.py` runs to prove the checked-in headers still match. This is the SDK-source route rather than AMD's FidelityFX API, which would load AMD's own Vulkan runtime and is Windows -only; see `docs/upscaling.md`. +only. Nothing in this folder is edited. A change belongs in a new folder with its own note, per `CONTRIBUTING.md`. From 56b7be095be9489d53b19ec5f0b97968a339a1d9 Mon Sep 17 00:00:00 2001 From: notquiteog Date: Sun, 8 Nov 2026 16:40:05 -0600 Subject: [PATCH 09/13] feat: create FSR 3.1's pipelines and internal images The first half of the backend: what an evaluation needs before one can be recorded. gpu/vk/vk_fsr3.cpp builds the eleven pass pipelines from the SPIR-V the previous commit checked in, the two samplers every pass declares at bindings 1000 and 1001, and the SDK's eighteen internal images. The resource table and the per-pass binding lists are written out in the SDK's order rather than derived, because they are the SDK's and not ours: ffx_fsr3upscaler.cpp fixes the formats and sizes, and each pass file numbers its own bindings. One wrong entry is a validation error at best and a wrong picture at worst. The one place that knowingly departs from the SDK is the luma history, allocated R8G8B8A8_UNORM because that is what the pass files declare as its storage format, where the SDK allocates RGBA16F -- a storage format qualifier has to match. supported() asks once whether the device has push descriptors and every storage format the images need, so a device that cannot run the passes says so before an allocation fails mid-frame rather than after. prepare() re-makes the images when the render or upscale size changes and tears everything down rather than leaving a half-built set behind. Nothing calls this yet, so there is no behaviour change. Builds clean with RX_VK_ONLY=1, 0 warnings. Linux, RTX 5060 Ti, driver 615.71.09. Assisted-by: Claude Opus 5 Co-Authored-By: Claude Opus 5 --- gpu/vk/vk_fsr3.cpp | 311 +++++++++++++++++++++++++++++++++++++++++++++ gpu/vk/vk_fsr3.h | 32 +++++ 2 files changed, 343 insertions(+) create mode 100644 gpu/vk/vk_fsr3.cpp create mode 100644 gpu/vk/vk_fsr3.h diff --git a/gpu/vk/vk_fsr3.cpp b/gpu/vk/vk_fsr3.cpp new file mode 100644 index 000000000..6c20c0fdc --- /dev/null +++ b/gpu/vk/vk_fsr3.cpp @@ -0,0 +1,311 @@ +// (hookshot) FSR 3.1's pipelines and internal images. The dispatch half follows; see vk_fsr3.h. +// +// The resource table and the per-pass binding lists are the SDK's, not ours: ffx_fsr3upscaler.cpp +// decides the formats and sizes, and each pass file numbers its own bindings (FSR3UPSCALER_BIND_*). +// Getting one wrong is a validation error at best and a wrong picture at worst, so they are written +// out here in the SDK's order rather than derived. +#include +#include +#include +#include + +#include "vk_fsr3.h" + +#include "shaders/fsr3_accumulate_comp_spv.h" +#include "shaders/fsr3_accumulate_sharpen_comp_spv.h" +#include "shaders/fsr3_luma_instability_comp_spv.h" +#include "shaders/fsr3_luma_pyramid_comp_spv.h" +#include "shaders/fsr3_luma_pyramid_nowave_comp_spv.h" +#include "shaders/fsr3_prepare_inputs_comp_spv.h" +#include "shaders/fsr3_prepare_reactivity_comp_spv.h" +#include "shaders/fsr3_rcas_comp_spv.h" +#include "shaders/fsr3_shading_change_comp_spv.h" +#include "shaders/fsr3_shading_change_pyramid_comp_spv.h" +#include "shaders/fsr3_shading_change_pyramid_nowave_comp_spv.h" + +namespace mkwvk::fsr3 { +namespace { + +/// A descriptor's kind, in the binding order each pass file declares. Every pass also takes the two +/// samplers at bindings 1000 (point clamp) and 1001 (linear clamp). +enum Kind : uint8_t { T, I, U }; // sampled texture, storage image, uniform buffer + +struct PassInfo { + const char* name; + const uint32_t* spv; + size_t spv_bytes; + const Kind* bindings; + size_t binding_count; +}; + +constexpr Kind PREPARE_INPUTS[]{T, T, T, I, I, I, I, I, U}; +constexpr Kind LUMA_PYRAMID[]{T, T, I, I, I, I, I, I, I, I, I, U, U}; +constexpr Kind SHADING_CHANGE_PYRAMID[]{T, T, T, T, I, I, I, I, I, I, I, U, U}; +constexpr Kind SHADING_CHANGE[]{T, I, U}; +constexpr Kind PREPARE_REACTIVITY[]{T, T, T, T, T, T, T, T, T, I, I, I, U}; +constexpr Kind LUMA_INSTABILITY[]{T, T, T, T, T, T, T, I, I, U}; +constexpr Kind ACCUMULATE[]{T, T, T, T, T, T, T, T, T, I, I, I, U}; +constexpr Kind RCAS[]{T, T, I, U, U}; + +#define PASS(n, spv, b) PassInfo{n, spv, sizeof spv, b, sizeof b / sizeof b[0]} + +/// The passes, in the order PassId numbers them. The two _nowave pyramids are alternatives to the +/// two before them, for devices without the subgroup operations the single-pass downsampler wants. +const PassInfo PASSES[]{ + PASS("prepare_inputs", FSR3_PREPARE_INPUTS_COMP_SPV, PREPARE_INPUTS), + PASS("luma_pyramid", FSR3_LUMA_PYRAMID_COMP_SPV, LUMA_PYRAMID), + PASS("luma_pyramid_nowave", FSR3_LUMA_PYRAMID_NOWAVE_COMP_SPV, LUMA_PYRAMID), + PASS("shading_change_pyramid", FSR3_SHADING_CHANGE_PYRAMID_COMP_SPV, SHADING_CHANGE_PYRAMID), + PASS("shading_change_pyramid_nowave", FSR3_SHADING_CHANGE_PYRAMID_NOWAVE_COMP_SPV, + SHADING_CHANGE_PYRAMID), + PASS("shading_change", FSR3_SHADING_CHANGE_COMP_SPV, SHADING_CHANGE), + PASS("prepare_reactivity", FSR3_PREPARE_REACTIVITY_COMP_SPV, PREPARE_REACTIVITY), + PASS("luma_instability", FSR3_LUMA_INSTABILITY_COMP_SPV, LUMA_INSTABILITY), + PASS("accumulate", FSR3_ACCUMULATE_COMP_SPV, ACCUMULATE), + PASS("accumulate_sharpen", FSR3_ACCUMULATE_SHARPEN_COMP_SPV, ACCUMULATE), + PASS("rcas", FSR3_RCAS_COMP_SPV, RCAS), +}; +#undef PASS + +constexpr size_t kPassCount = sizeof PASSES / sizeof PASSES[0]; +constexpr uint32_t kSpdStoredMips = 6; + +struct Pipeline { + VkDescriptorSetLayout set = VK_NULL_HANDLE; + VkPipelineLayout layout = VK_NULL_HANDLE; + VkPipeline pipeline = VK_NULL_HANDLE; +}; + +struct Image { + VkImage image = VK_NULL_HANDLE; + VmaAllocation memory = nullptr; + VkImageView view = VK_NULL_HANDLE; ///< every level + std::vector levels; ///< one per level, for the mipped ones + uint32_t width = 0, height = 0, level_count = 1; + VkFormat format = VK_FORMAT_UNDEFINED; +}; + +struct State { + bool tried = false; + bool ok = false; + Pipeline passes[kPassCount]; + VkSampler point = VK_NULL_HANDLE; + VkSampler linear = VK_NULL_HANDLE; + // The SDK's internal images. The pairs ping-pong on frame parity, as its resource tables do. + Image accumulation[2], luma[2], luma_history[2], internal_upscaled[2]; + Image farthest_depth, shading_change, new_locks, spd_mips, farthest_depth_mip1; + Image dilated_motion_vectors, dilated_depth, previous_nearest_depth, dilated_reactive_masks; + Image frame_info, spd_atomic, lanczos_lut, default_reactive, output; + uint32_t render_width = 0, render_height = 0, upscale_width = 0, upscale_height = 0; +}; + +State g; + +void drop_image(Image& t) { + for (VkImageView v : t.levels) vkDestroyImageView(dev.device, v, nullptr); + t.levels.clear(); + if (t.view) vkDestroyImageView(dev.device, t.view, nullptr); + if (t.image) mkwvk::destroy_image(t.image, t.memory); + t = Image{}; +} + +/// One of the SDK's internal images: storage and sampled, GENERAL throughout, with a view per level +/// when it has more than one (the pyramids bind their levels separately). +bool make_image(Image& t, VkFormat format, uint32_t width, uint32_t height, uint32_t levels = 1) { + drop_image(t); + t.format = format, t.width = std::max(1u, width), t.height = std::max(1u, height); + t.level_count = std::max(1u, levels); + VkImageCreateInfo ci{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; + ci.imageType = VK_IMAGE_TYPE_2D; + ci.format = format; + ci.extent = {t.width, t.height, 1}; + ci.mipLevels = t.level_count; + ci.arrayLayers = 1; + ci.samples = VK_SAMPLE_COUNT_1_BIT; + ci.tiling = VK_IMAGE_TILING_OPTIMAL; + ci.usage = VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT; + ci.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + if (!create_image(ci, t.image, t.memory, false)) { + logf("vk: fsr3: a %ux%u image (format %d) was not made", t.width, t.height, (int)format); + return false; + } + VkImageViewCreateInfo vi{VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO}; + vi.image = t.image; + vi.viewType = VK_IMAGE_VIEW_TYPE_2D; + vi.format = format; + vi.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, t.level_count, 0, 1}; + if (vkCreateImageView(dev.device, &vi, nullptr, &t.view) != VK_SUCCESS) return false; + if (t.level_count > 1) { + for (uint32_t level = 0; level < t.level_count; level++) { + vi.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, level, 1, 0, 1}; + VkImageView v = VK_NULL_HANDLE; + if (vkCreateImageView(dev.device, &vi, nullptr, &v) != VK_SUCCESS) return false; + t.levels.push_back(v); + } + } + return true; +} + +bool make_pipeline(Pipeline& p, const PassInfo& info) { + std::vector bindings; + bindings.reserve(info.binding_count + 2); + for (size_t i = 0; i < info.binding_count; i++) { + const VkDescriptorType type = info.bindings[i] == T ? VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE + : info.bindings[i] == I ? VK_DESCRIPTOR_TYPE_STORAGE_IMAGE + : VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + bindings.push_back({(uint32_t)i, type, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}); + } + // (the two samplers every pass declares, at the bindings the SDK's GLSL fixes them to) + bindings.push_back({1000, VK_DESCRIPTOR_TYPE_SAMPLER, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}); + bindings.push_back({1001, VK_DESCRIPTOR_TYPE_SAMPLER, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}); + VkDescriptorSetLayoutCreateInfo li{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO}; + li.flags = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR; + li.bindingCount = (uint32_t)bindings.size(); + li.pBindings = bindings.data(); + if (vkCreateDescriptorSetLayout(dev.device, &li, nullptr, &p.set) != VK_SUCCESS) return false; + VkPipelineLayoutCreateInfo pi{VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO}; + pi.setLayoutCount = 1, pi.pSetLayouts = &p.set; + if (vkCreatePipelineLayout(dev.device, &pi, nullptr, &p.layout) != VK_SUCCESS) return false; + VkShaderModuleCreateInfo mi{VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO}; + mi.codeSize = info.spv_bytes; + mi.pCode = info.spv; + VkShaderModule m = VK_NULL_HANDLE; + if (vkCreateShaderModule(dev.device, &mi, nullptr, &m) != VK_SUCCESS) return false; + VkComputePipelineCreateInfo ci{VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO}; + ci.stage = {VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, nullptr, 0, + VK_SHADER_STAGE_COMPUTE_BIT, m, "main", nullptr}; + ci.layout = p.layout; + const VkResult made = vkCreateComputePipelines(dev.device, VK_NULL_HANDLE, 1, &ci, nullptr, &p.pipeline); + vkDestroyShaderModule(dev.device, m, nullptr); + if (made != VK_SUCCESS) { + logf("vk: fsr3: the %s pass pipeline was not made (%d)", info.name, (int)made); + p.pipeline = VK_NULL_HANDLE; + return false; + } + return true; +} + +bool make_samplers() { + VkSamplerCreateInfo si{VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO}; + si.addressModeU = si.addressModeV = si.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; + si.minLod = 0.0f, si.maxLod = VK_LOD_CLAMP_NONE; + si.magFilter = si.minFilter = VK_FILTER_NEAREST; + si.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST; + if (vkCreateSampler(dev.device, &si, nullptr, &g.point) != VK_SUCCESS) return false; + si.magFilter = si.minFilter = VK_FILTER_LINEAR; + si.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; + return vkCreateSampler(dev.device, &si, nullptr, &g.linear) == VK_SUCCESS; +} + +/// Every storage format the internal images need. A device missing one cannot run the passes, and +/// finding that out here is better than a failed image allocation in the middle of a frame. +bool formats_supported() { + static const VkFormat needed[]{ + VK_FORMAT_R8_UNORM, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R8G8B8A8_UNORM, + VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R32_SFLOAT, + VK_FORMAT_R32_UINT, VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R16_SNORM, + }; + for (VkFormat f : needed) { + VkFormatProperties props{}; + vkGetPhysicalDeviceFormatProperties(dev.physical, f, &props); + if (!(props.optimalTilingFeatures & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) || + !(props.optimalTilingFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) { + logf("vk: fsr3: format %d cannot be a storage and sampled image here", (int)f); + return false; + } + } + return true; +} + +} // namespace + +bool supported() { + static const bool answer = [] { + if (!dev.push_descriptor || !vkCmdPushDescriptorSetKHR) { + logf("vk: fsr3: no push descriptors"); + return false; + } + return formats_supported(); + }(); + return answer; +} + +bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_width, + uint32_t upscale_height) { + if (!supported()) return false; + if (!g.tried) { + g.tried = true; + g.ok = make_samplers(); + for (size_t i = 0; i < kPassCount && g.ok; i++) g.ok = make_pipeline(g.passes[i], PASSES[i]); + if (g.ok) logf("vk: fsr3: %zu pass pipelines ready", kPassCount); + } + if (!g.ok) return false; + const bool same = g.output.image && g.render_width == render_width && + g.render_height == render_height && g.upscale_width == upscale_width && + g.upscale_height == upscale_height; + if (same) return true; + + const uint32_t rw = std::max(1u, render_width), rh = std::max(1u, render_height); + const uint32_t uw = std::max(1u, upscale_width), uh = std::max(1u, upscale_height); + bool made = true; + for (size_t i = 0; i < 2 && made; i++) { + made = made && make_image(g.accumulation[i], VK_FORMAT_R8_UNORM, rw, rh); + made = made && make_image(g.luma[i], VK_FORMAT_R16_SFLOAT, rw, rh); + // (the pass files declare the luma history as rgba8; the SDK allocates RGBA16F, which a + // storage format qualifier does not match, so allocate what the shaders store) + made = made && make_image(g.luma_history[i], VK_FORMAT_R8G8B8A8_UNORM, rw, rh); + made = made && make_image(g.internal_upscaled[i], VK_FORMAT_R16G16B16A16_SFLOAT, uw, uh); + } + const uint32_t half_w = std::max(1u, rw / 2), half_h = std::max(1u, rh / 2); + const uint32_t spd_levels = + (uint32_t)std::floor(std::log2((float)std::max(half_w, half_h))) + 1; + made = made && make_image(g.farthest_depth, VK_FORMAT_R16_SFLOAT, rw, rh); + made = made && make_image(g.shading_change, VK_FORMAT_R8_UNORM, half_w, half_h); + made = made && make_image(g.new_locks, VK_FORMAT_R8_UNORM, uw, uh); + made = made && make_image(g.spd_mips, VK_FORMAT_R16G16_SFLOAT, half_w, half_h, + std::max(spd_levels, kSpdStoredMips)); + made = made && make_image(g.farthest_depth_mip1, VK_FORMAT_R16_SFLOAT, half_w, half_h); + made = made && make_image(g.dilated_motion_vectors, VK_FORMAT_R16G16_SFLOAT, rw, rh); + made = made && make_image(g.dilated_depth, VK_FORMAT_R32_SFLOAT, rw, rh); + made = made && make_image(g.previous_nearest_depth, VK_FORMAT_R32_UINT, rw, rh); + made = made && make_image(g.dilated_reactive_masks, VK_FORMAT_R8G8B8A8_UNORM, rw, rh); + made = made && make_image(g.frame_info, VK_FORMAT_R32G32B32A32_SFLOAT, 1, 1); + made = made && make_image(g.spd_atomic, VK_FORMAT_R32_UINT, 1, 1); + made = made && make_image(g.lanczos_lut, VK_FORMAT_R16_SNORM, 128, 1); + made = made && make_image(g.default_reactive, VK_FORMAT_R8_UNORM, 1, 1); + made = made && make_image(g.output, VK_FORMAT_R16G16B16A16_SFLOAT, uw, uh); + if (!made) { + shutdown(); + return false; + } + g.render_width = rw, g.render_height = rh, g.upscale_width = uw, g.upscale_height = uh; + logf("vk: fsr3: %ux%u -> %ux%u", rw, rh, uw, uh); + return true; +} + +VkImage output_image() { + return g.output.image; +} + +VkImageView output_view() { + return g.output.view; +} + +void shutdown() { + for (Image* t : {&g.farthest_depth, &g.shading_change, &g.new_locks, &g.spd_mips, + &g.farthest_depth_mip1, &g.dilated_motion_vectors, &g.dilated_depth, + &g.previous_nearest_depth, &g.dilated_reactive_masks, &g.frame_info, + &g.spd_atomic, &g.lanczos_lut, &g.default_reactive, &g.output}) { + drop_image(*t); + } + for (size_t i = 0; i < 2; i++) { + drop_image(g.accumulation[i]); + drop_image(g.luma[i]); + drop_image(g.luma_history[i]); + drop_image(g.internal_upscaled[i]); + } + g.render_width = g.render_height = g.upscale_width = g.upscale_height = 0; +} + +} // namespace mkwvk::fsr3 diff --git a/gpu/vk/vk_fsr3.h b/gpu/vk/vk_fsr3.h new file mode 100644 index 000000000..a8aee5724 --- /dev/null +++ b/gpu/vk/vk_fsr3.h @@ -0,0 +1,32 @@ +// (hookshot) AMD FidelityFX Super Resolution 3.1 (the FSR 3.1.4 upscaler from FidelityFX SDK +// v1.1.4, shaders in third_party/fidelityfx-sdk compiled by scripts/fsr3_shaders.py) as a backend +// for the game's own upscale dispatch: docs/upscaling.md and gpu/vk/upscale_seam.h. +// +// This file holds what an evaluation needs before it can be recorded -- the eleven pipelines and +// the SDK's internal images -- and nothing that records one. The dispatch half follows. +#pragma once + +#include + +#include "vk_internal.h" + +namespace mkwvk::fsr3 { + +/// Whether this device can run the passes at all: push descriptors, and every storage format the +/// SDK's internal images need. Asked once; the answer is cached. +[[nodiscard]] bool supported(); + +/// Makes the pipelines and the internal images for an evaluation at these sizes, re-making them +/// when the sizes change. False when anything could not be made, which leaves FSR unavailable +/// rather than half-built. +[[nodiscard]] bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_width, + uint32_t upscale_height); + +/// The image an evaluation resolves into: RGBA16F at the upscale size, or null before prepare(). +[[nodiscard]] VkImage output_image(); +[[nodiscard]] VkImageView output_view(); + +/// Frees everything. Safe to call when nothing was made. +void shutdown(); + +} // namespace mkwvk::fsr3 From 9f56405675efd352f0ecbfb3597b65fff0580bb4 Mon Sep 17 00:00:00 2001 From: notquiteog Date: Sun, 8 Nov 2026 16:49:06 -0600 Subject: [PATCH 10/13] feat: record FSR 3.1's nine dispatches The other half: the constants, the clears, the barriers and the nine dispatches, following the SDK's ffx_fsr3upscaler.cpp rather than inventing an order. cbFSR3Upscaler is laid out field for field with a static_assert on its 148 bytes, because every pass reads it by offset and a field out of place is a wrong picture rather than a compile error. What is faithful to the SDK and worth checking in review: the jitter phase count moves one step a frame toward 8*(ratio^2) instead of jumping; the SPD counter, its mips and the previous-nearest-depth scratch are cleared every frame while the accumulation and frame info are cleared only on a reset; the Lanczos weights are built once and copied in; the two ping-pong sets swap on parity at the end; and RCAS only runs when sharpening is asked for, otherwise the sharpening accumulate variant writes the output directly. Three things specific to this renderer rather than the reference. Barriers are synchronization2, which is what this tree loads (vkCmdPipelineBarrier is not in vk_loader.h). The constant blocks live in one host-visible mapped buffer with a set of slots per frame in flight, so writing one frame cannot disturb a frame still being read. And descriptors are pushed per pass, with the two samplers at the bindings the SDK's GLSL fixes them to. upscale() refuses rather than guesses. No colour, depth or motion is a refusal, and so is a missing near plane or field of view: device_to_view_depth and tan_half_fov are built from them, and a guessed camera makes disocclusion wrong in a way that reads as a renderer bug. Nothing calls this yet, so there is no behaviour change. Untested beyond compiling: builds clean with RX_VK_ONLY=1, 0 warnings, Linux, RTX 5060 Ti, driver 615.71.09. No pass has executed, so nothing here is claimed to produce a correct image yet. Assisted-by: Claude Opus 5 Co-Authored-By: Claude Opus 5 --- gpu/vk/vk_fsr3.cpp | 388 ++++++++++++++++++++++++++++++++++++++++++++- gpu/vk/vk_fsr3.h | 27 ++++ 2 files changed, 414 insertions(+), 1 deletion(-) diff --git a/gpu/vk/vk_fsr3.cpp b/gpu/vk/vk_fsr3.cpp index 6c20c0fdc..099b35b69 100644 --- a/gpu/vk/vk_fsr3.cpp +++ b/gpu/vk/vk_fsr3.cpp @@ -5,11 +5,16 @@ // Getting one wrong is a validation error at best and a wrong picture at worst, so they are written // out here in the SDK's order rather than derived. #include +#include #include +#include +#include +#include #include #include #include "vk_fsr3.h" +#include "vk_texture.h" // (full_barrier: what the rest of the renderer uses between passes) #include "shaders/fsr3_accumulate_comp_spv.h" #include "shaders/fsr3_accumulate_sharpen_comp_spv.h" @@ -85,6 +90,90 @@ struct Image { VkFormat format = VK_FORMAT_UNDEFINED; }; +/// cbFSR3Upscaler, exactly as ffx_fsr3upscaler.cpp lays it out. The size is asserted because every +/// pass reads it by offset: a field out of place is a wrong picture, not a compile error. +struct Constants { + int32_t render_size[2]; + int32_t previous_render_size[2]; + int32_t upscale_size[2]; + int32_t previous_upscale_size[2]; + int32_t max_render_size[2]; + int32_t max_upscale_size[2]; + float device_to_view_depth[4]; + float jitter[2]; + float previous_jitter[2]; + float motion_vector_scale[2]; + float downscale_factor[2]; + float motion_vector_jitter_cancellation[2]; + float tan_half_fov; + float jitter_phase_count; + float delta_time; + float delta_pre_exposure; + float view_space_to_meters; + float frame_index; + float velocity_factor; + float reactiveness_scale; + float shading_change_scale; + float accumulation_added_per_frame; + float min_disocclusion_accumulation; +}; +static_assert(sizeof(Constants) == 148, "cbFSR3Upscaler must match the SDK's layout"); + +struct SpdConstants { + uint32_t mips; + uint32_t num_work_groups; + uint32_t work_group_offset[2]; + uint32_t render_size[2]; +}; + +struct RcasConstants { + uint32_t config[4]; +}; + +/// ffxFsr3UpscalerGetJitterPhaseCount. +int32_t jitter_phase_count_for(uint32_t render_width, uint32_t display_width) { + const float ratio = (float)display_width / (float)std::max(1u, render_width); + return (int32_t)(8.0f * ratio * ratio); +} + +/// FidelityFX's AU1_AH1_AF1: a float's bits as a half's. +uint32_t half_bits(float v) { + const _Float16 h = (_Float16)v; + uint16_t bits = 0; + memcpy(&bits, &h, 2); + return bits; +} + +/// FsrRcasCon from ffx_fsr1.h: the sharpness in both halves of the second word. +void rcas_con(uint32_t* con, float sharpness) { + sharpness = std::exp2(-sharpness); + memcpy(&con[0], &sharpness, 4); + con[1] = half_bits(sharpness) | (half_bits(sharpness) << 16); + con[2] = 0; + con[3] = 0; +} + +/// One descriptor of a dispatch: an image view, or a range of the uniform buffer. +struct Resource { + VkImageView view = VK_NULL_HANDLE; + VkBuffer buffer = VK_NULL_HANDLE; + VkDeviceSize offset = 0; + VkDeviceSize size = 0; +}; + +/// A memory dependency over the whole queue, in the synchronization2 form this renderer loads. +void memory_barrier(VkCommandBuffer cmd, VkPipelineStageFlags2 src_stage, VkAccessFlags2 src, + VkPipelineStageFlags2 dst_stage, VkAccessFlags2 dst) { + VkMemoryBarrier2 b{VK_STRUCTURE_TYPE_MEMORY_BARRIER_2}; + b.srcStageMask = src_stage, b.srcAccessMask = src; + b.dstStageMask = dst_stage, b.dstAccessMask = dst; + VkDependencyInfo di{VK_STRUCTURE_TYPE_DEPENDENCY_INFO}; + di.memoryBarrierCount = 1, di.pMemoryBarriers = &b; + vkCmdPipelineBarrier2(cmd, &di); +} + +constexpr VkImageSubresourceRange ALL_LEVELS{VK_IMAGE_ASPECT_COLOR_BIT, 0, VK_REMAINING_MIP_LEVELS, 0, 1}; + struct State { bool tried = false; bool ok = false; @@ -97,8 +186,26 @@ struct State { Image dilated_motion_vectors, dilated_depth, previous_nearest_depth, dilated_reactive_masks; Image frame_info, spd_atomic, lanczos_lut, default_reactive, output; uint32_t render_width = 0, render_height = 0, upscale_width = 0, upscale_height = 0; + // The uniform buffer the three constant blocks are written into, one set of slots per frame in + // flight so a frame being read is not overwritten. + VkBuffer uniforms = VK_NULL_HANDLE; + VmaAllocation uniforms_memory = nullptr; + void* uniforms_mapped = nullptr; + VkDeviceSize slot_fsr = 0, slot_spd = 0, slot_rcas = 0, frame_stride = 0; + uint32_t uniform_frame = 0; + // History, as fsr3upscalerDispatch carries it. + int32_t previous_render_size[2]{}; + int32_t previous_upscale_size[2]{}; + float previous_jitter[2]{}; + float jitter_phase_count = 0.0f; + float frame_index = 0.0f; + uint32_t parity = 0; + bool first_evaluation = true; + bool lut_uploaded = false; }; +constexpr uint32_t kUniformFrames = 4; // (more than the swapchain's images in flight) + State g; void drop_image(Image& t) { @@ -218,6 +325,66 @@ bool formats_supported() { return true; } +/// The uniform buffer the three constant blocks are written into: host visible and mapped, with a +/// set of slots per frame in flight so writing one frame cannot disturb a frame still being read. +bool make_uniforms() { + const VkDeviceSize align = std::max(dev.props.limits.minUniformBufferOffsetAlignment, 16); + const auto round_up = [align](VkDeviceSize n) { return (n + align - 1) / align * align; }; + g.slot_fsr = round_up(sizeof(Constants)); + g.slot_spd = round_up(sizeof(SpdConstants)); + g.slot_rcas = round_up(sizeof(RcasConstants)); + g.frame_stride = g.slot_fsr + g.slot_spd + g.slot_rcas + round_up(128 * sizeof(int16_t)); + return create_buffer(g.frame_stride * kUniformFrames, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT, true, + g.uniforms, g.uniforms_memory, &g.uniforms_mapped); +} + +/// Records one pass: its descriptors pushed in the order the pass file numbers them, then the two +/// samplers it declares at 1000 and 1001, then the dispatch. +void record_pass(VkCommandBuffer cmd, const Pipeline& p, const PassInfo& info, const Resource* res, + size_t count, uint32_t groups_x, uint32_t groups_y) { + std::vector images(count); + std::vector buffers(count); + std::vector writes; + writes.reserve(count + 2); + for (size_t i = 0; i < count; i++) { + VkWriteDescriptorSet w{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET}; + w.dstBinding = (uint32_t)i; + w.descriptorCount = 1; + if (info.bindings[i] == U) { + buffers[i] = {res[i].buffer, res[i].offset, res[i].size}; + w.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + w.pBufferInfo = &buffers[i]; + } else { + images[i] = {VK_NULL_HANDLE, res[i].view, VK_IMAGE_LAYOUT_GENERAL}; + w.descriptorType = info.bindings[i] == T ? VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE + : VK_DESCRIPTOR_TYPE_STORAGE_IMAGE; + w.pImageInfo = &images[i]; + } + writes.push_back(w); + } + const VkDescriptorImageInfo point{g.point, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_UNDEFINED}; + const VkDescriptorImageInfo linear{g.linear, VK_NULL_HANDLE, VK_IMAGE_LAYOUT_UNDEFINED}; + for (const auto& [binding, info_ptr] : + {std::pair{1000, &point}, + std::pair{1001, &linear}}) { + VkWriteDescriptorSet w{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET}; + w.dstBinding = binding; + w.descriptorCount = 1; + w.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER; + w.pImageInfo = info_ptr; + writes.push_back(w); + } + vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, p.pipeline); + vkCmdPushDescriptorSetKHR(cmd, VK_PIPELINE_BIND_POINT_COMPUTE, p.layout, 0, + (uint32_t)writes.size(), writes.data()); + vkCmdDispatch(cmd, std::max(1u, groups_x), std::max(1u, groups_y), 1); + // (every pass reads what the one before it wrote) + memory_barrier(cmd, VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, VK_ACCESS_2_SHADER_WRITE_BIT, + VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, + VK_ACCESS_2_SHADER_READ_BIT | VK_ACCESS_2_SHADER_WRITE_BIT); +} + } // namespace bool supported() { @@ -236,7 +403,7 @@ bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_wid if (!supported()) return false; if (!g.tried) { g.tried = true; - g.ok = make_samplers(); + g.ok = make_samplers() && make_uniforms(); for (size_t i = 0; i < kPassCount && g.ok; i++) g.ok = make_pipeline(g.passes[i], PASSES[i]); if (g.ok) logf("vk: fsr3: %zu pass pipelines ready", kPassCount); } @@ -284,6 +451,222 @@ bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_wid return true; } +bool upscale(VkCommandBuffer cmd, const Inputs& in) { + if (!in.color || !in.depth || !in.motion) return false; + // (a guessed camera makes disocclusion wrong in a way that reads as a renderer bug, so a + // missing one is a refusal: docs/upscaling.md) + if (!(in.near_plane > 0.0f) || !(in.fov_y > 0.0f)) return false; + if (!prepare(in.render_width, in.render_height, in.upscale_width, in.upscale_height)) return false; + + const bool first = g.first_evaluation; + const bool reset = in.reset || first; + g.first_evaluation = false; + const int32_t rw = (int32_t)g.render_width, rh = (int32_t)g.render_height; + const int32_t uw = (int32_t)g.upscale_width, uh = (int32_t)g.upscale_height; + + Constants k{}; + k.render_size[0] = rw, k.render_size[1] = rh; + k.upscale_size[0] = uw, k.upscale_size[1] = uh; + k.max_render_size[0] = rw, k.max_render_size[1] = rh; + k.max_upscale_size[0] = uw, k.max_upscale_size[1] = uh; + for (int i = 0; i < 2; i++) { + k.previous_render_size[i] = first ? k.render_size[i] : g.previous_render_size[i]; + k.previous_upscale_size[i] = first ? k.upscale_size[i] : g.previous_upscale_size[i]; + k.jitter[i] = in.jitter[i]; + k.previous_jitter[i] = first ? in.jitter[i] : g.previous_jitter[i]; + } + { // (setupDeviceDepthToViewSpaceDepthParams for reversed infinite depth) + const float aspect = (float)rw / (float)std::max(1, rh); + const float cot_half_fov = std::cos(0.5f * in.fov_y) / std::sin(0.5f * in.fov_y); + k.device_to_view_depth[0] = -1.0f * FLT_EPSILON; + k.device_to_view_depth[1] = in.near_plane; + k.device_to_view_depth[2] = 1.0f / (cot_half_fov / aspect); + k.device_to_view_depth[3] = 1.0f / cot_half_fov; + k.tan_half_fov = std::tan(std::atan(std::tan(in.fov_y * 0.5f) * aspect)); + } + k.motion_vector_scale[0] = in.motion_scale[0] / (float)std::max(1, rw); + k.motion_vector_scale[1] = in.motion_scale[1] / (float)std::max(1, rh); + k.downscale_factor[0] = (float)rw / (float)std::max(1, uw); + k.downscale_factor[1] = (float)rh / (float)std::max(1, uh); + const float phases = (float)jitter_phase_count_for(g.render_width, g.upscale_width); + if (reset || g.jitter_phase_count == 0.0f) g.jitter_phase_count = phases; + else if (phases > g.jitter_phase_count) g.jitter_phase_count += 1.0f; + else if (phases < g.jitter_phase_count) g.jitter_phase_count -= 1.0f; + k.jitter_phase_count = g.jitter_phase_count; + k.delta_time = std::clamp(in.frame_time_ms / 1000.0f, 0.0f, 1.0f); + k.delta_pre_exposure = 1.0f; + k.view_space_to_meters = 1.0f; + g.frame_index = reset ? 0.0f : g.frame_index + 1.0f; + k.frame_index = g.frame_index; + k.velocity_factor = 1.0f; // (the SDK's FFX_FSR3UPSCALER_CONFIGURE_UPSCALE_KEY_* defaults) + k.reactiveness_scale = 1.0f; + k.shading_change_scale = 1.0f; + k.accumulation_added_per_frame = 1.0f / 3.0f; + k.min_disocclusion_accumulation = -1.0f / 3.0f; + for (int i = 0; i < 2; i++) { + g.previous_render_size[i] = k.render_size[i]; + g.previous_upscale_size[i] = k.upscale_size[i]; + g.previous_jitter[i] = in.jitter[i]; + } + + const uint32_t spd_x = (g.render_width - 1) / 64 + 1; + const uint32_t spd_y = (g.render_height - 1) / 64 + 1; + SpdConstants spd{}; + spd.mips = (uint32_t)std::min(std::floor(std::log2((float)std::max(g.render_width, g.render_height))), 12.0f); + spd.num_work_groups = spd_x * spd_y; + spd.render_size[0] = g.render_width, spd.render_size[1] = g.render_height; + RcasConstants rcas{}; + rcas_con(rcas.config, 2.0f - 2.0f * std::clamp(in.sharpness, 0.0f, 1.0f)); + + // This frame's slots, written through the mapped buffer. + const VkDeviceSize base = (VkDeviceSize)(g.uniform_frame % kUniformFrames) * g.frame_stride; + g.uniform_frame++; + uint8_t* const mapped = (uint8_t*)g.uniforms_mapped + base; + memcpy(mapped, &k, sizeof k); + memcpy(mapped + g.slot_fsr, &spd, sizeof spd); + memcpy(mapped + g.slot_fsr + g.slot_spd, &rcas, sizeof rcas); + const VkDeviceSize lut_at = g.slot_fsr + g.slot_spd + g.slot_rcas; + if (!g.lut_uploaded) { // (the accumulate pass's Lanczos weights, 128 taps as the SDK builds them) + int16_t weights[128]; + for (size_t i = 0; i < 128; i++) { + const float x = 2.0f * (float)i / 127.0f; + const float pi_x = 3.14159265358979f * x; + const float y = std::abs(x) < FLT_EPSILON + ? 1.0f + : (std::sin(pi_x) / pi_x) * (std::sin(0.5f * pi_x) / (0.5f * pi_x)); + weights[i] = (int16_t)std::lround(y * 32767.0f); + } + memcpy(mapped + lut_at, weights, sizeof weights); + } + flush_mapped(g.uniforms_memory, g.frame_stride * kUniformFrames); + + const uint32_t p = g.parity, q = p ^ 1u; + + // What the game's draws wrote has to be visible, and our images need their first layout. + { + memory_barrier(cmd, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT | + VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | + VK_ACCESS_2_SHADER_WRITE_BIT | VK_ACCESS_2_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_2_TRANSFER_BIT | VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, + VK_ACCESS_2_SHADER_READ_BIT | VK_ACCESS_2_SHADER_WRITE_BIT | + VK_ACCESS_2_TRANSFER_WRITE_BIT); + } + std::vector all{&g.farthest_depth, &g.shading_change, &g.new_locks, &g.spd_mips, + &g.farthest_depth_mip1, &g.dilated_motion_vectors, &g.dilated_depth, + &g.previous_nearest_depth, &g.dilated_reactive_masks, &g.frame_info, + &g.spd_atomic, &g.lanczos_lut, &g.default_reactive, &g.output}; + for (size_t i = 0; i < 2; i++) { + all.push_back(&g.accumulation[i]); + all.push_back(&g.luma[i]); + all.push_back(&g.luma_history[i]); + all.push_back(&g.internal_upscaled[i]); + } + if (first) { + std::vector to_general; + to_general.reserve(all.size()); + for (const Image* t : all) { + VkImageMemoryBarrier2 b{VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2}; + b.srcStageMask = VK_PIPELINE_STAGE_2_NONE; + b.dstStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT; + b.dstAccessMask = VK_ACCESS_2_TRANSFER_WRITE_BIT; + b.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; + b.newLayout = VK_IMAGE_LAYOUT_GENERAL; + b.srcQueueFamilyIndex = b.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + b.image = t->image; + b.subresourceRange = ALL_LEVELS; + to_general.push_back(b); + } + VkDependencyInfo di{VK_STRUCTURE_TYPE_DEPENDENCY_INFO}; + di.imageMemoryBarrierCount = (uint32_t)to_general.size(); + di.pImageMemoryBarriers = to_general.data(); + vkCmdPipelineBarrier2(cmd, &di); + const VkClearColorValue zero{}; + for (const Image* t : all) { + vkCmdClearColorImage(cmd, t->image, VK_IMAGE_LAYOUT_GENERAL, &zero, 1, &ALL_LEVELS); + } + } + if (!g.lut_uploaded) { + g.lut_uploaded = true; + VkBufferImageCopy copy{}; + copy.bufferOffset = base + lut_at; + copy.imageSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1}; + copy.imageExtent = {128, 1, 1}; + vkCmdCopyBufferToImage(cmd, g.uniforms, g.lanczos_lut.image, VK_IMAGE_LAYOUT_GENERAL, 1, ©); + } + // Per frame: the nearest-depth scratch, the SPD counter and its mips; the history on a reset. + const VkClearColorValue zero{}; + for (const Image* t : {&g.previous_nearest_depth, &g.spd_atomic, &g.spd_mips}) { + vkCmdClearColorImage(cmd, t->image, VK_IMAGE_LAYOUT_GENERAL, &zero, 1, &ALL_LEVELS); + } + if (reset) { + vkCmdClearColorImage(cmd, g.accumulation[p].image, VK_IMAGE_LAYOUT_GENERAL, &zero, 1, &ALL_LEVELS); + VkClearColorValue info{}; + info.float32[0] = -1.0f, info.float32[1] = 1.0f; + vkCmdClearColorImage(cmd, g.frame_info.image, VK_IMAGE_LAYOUT_GENERAL, &info, 1, &ALL_LEVELS); + } + { + memory_barrier(cmd, VK_PIPELINE_STAGE_2_TRANSFER_BIT, VK_ACCESS_2_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, + VK_ACCESS_2_SHADER_READ_BIT | VK_ACCESS_2_SHADER_WRITE_BIT); + } + + const auto tex = [](const Image& t) { return Resource{t.view}; }; + const auto mip = [](uint32_t level) { + const size_t n = g.spd_mips.levels.size(); + return Resource{g.spd_mips.levels[std::min(level, n ? n - 1 : 0)]}; + }; + const Resource color{in.color}, depth{in.depth}, motion{in.motion}; + const Resource exposure = tex(g.frame_info); // (FSR computes its own exposure) + const Resource current_luma = tex(g.luma[p]); + const Resource cb_fsr{VK_NULL_HANDLE, g.uniforms, base, g.slot_fsr}; + const Resource cb_spd{VK_NULL_HANDLE, g.uniforms, base + g.slot_fsr, g.slot_spd}; + const Resource cb_rcas{VK_NULL_HANDLE, g.uniforms, base + g.slot_fsr + g.slot_spd, g.slot_rcas}; + const auto groups = [](int32_t size, uint32_t tile) { + return ((uint32_t)std::max(1, size) + tile - 1) / tile; + }; + const auto run = [&](size_t pass, std::initializer_list res, uint32_t gx, uint32_t gy) { + record_pass(cmd, g.passes[pass], PASSES[pass], res.begin(), res.size(), gx, gy); + }; + + run(0, {motion, depth, color, tex(g.dilated_motion_vectors), tex(g.dilated_depth), + tex(g.previous_nearest_depth), tex(g.farthest_depth), current_luma, cb_fsr}, + groups(rw, 8), groups(rh, 8)); + run(1, {current_luma, tex(g.farthest_depth), tex(g.spd_atomic), tex(g.frame_info), mip(0), mip(1), + mip(2), mip(3), mip(4), mip(5), tex(g.farthest_depth_mip1), cb_fsr, cb_spd}, + spd_x, spd_y); + run(3, {current_luma, tex(g.luma[q]), tex(g.dilated_motion_vectors), exposure, tex(g.spd_atomic), + mip(0), mip(1), mip(2), mip(3), mip(4), mip(5), cb_fsr, cb_spd}, + spd_x, spd_y); + run(5, {tex(g.spd_mips), tex(g.shading_change), cb_fsr}, groups(rw / 2, 8), groups(rh / 2, 8)); + run(6, {tex(g.previous_nearest_depth), tex(g.dilated_motion_vectors), tex(g.dilated_depth), + tex(g.default_reactive), tex(g.default_reactive), tex(g.accumulation[p]), + tex(g.shading_change), current_luma, exposure, tex(g.dilated_reactive_masks), + tex(g.new_locks), tex(g.accumulation[q]), cb_fsr}, + groups(rw, 8), groups(rh, 8)); + run(7, {exposure, tex(g.dilated_reactive_masks), tex(g.dilated_motion_vectors), tex(g.frame_info), + tex(g.luma_history[p]), tex(g.farthest_depth_mip1), current_luma, tex(g.luma_history[q]), + tex(g.farthest_depth), cb_fsr}, + groups(rw, 8), groups(rh, 8)); + run(in.sharpen ? 9 : 8, + {exposure, tex(g.dilated_reactive_masks), tex(g.dilated_motion_vectors), + tex(g.internal_upscaled[p]), tex(g.lanczos_lut), tex(g.farthest_depth_mip1), current_luma, + tex(g.farthest_depth), color, tex(g.internal_upscaled[q]), tex(g.output), tex(g.new_locks), + cb_fsr}, + groups(uw, 8), groups(uh, 8)); + if (in.sharpen) { + run(10, {exposure, tex(g.internal_upscaled[q]), tex(g.output), cb_fsr, cb_rcas}, + groups(uw, 16), groups(uh, 16)); + } + { + memory_barrier(cmd, VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, VK_ACCESS_2_SHADER_WRITE_BIT, + VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT | VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, + VK_ACCESS_2_SHADER_READ_BIT); + } + g.parity = q; + return true; +} + VkImage output_image() { return g.output.image; } @@ -306,6 +689,9 @@ void shutdown() { drop_image(g.internal_upscaled[i]); } g.render_width = g.render_height = g.upscale_width = g.upscale_height = 0; + g.first_evaluation = true; + g.lut_uploaded = false; + g.parity = 0; } } // namespace mkwvk::fsr3 diff --git a/gpu/vk/vk_fsr3.h b/gpu/vk/vk_fsr3.h index a8aee5724..97a977367 100644 --- a/gpu/vk/vk_fsr3.h +++ b/gpu/vk/vk_fsr3.h @@ -12,6 +12,29 @@ namespace mkwvk::fsr3 { +/// One evaluation's inputs. Every field is the SDK's meaning, not a guess: the colour is HDR and +/// jittered at the render size, the depth is reversed, the motion points at the previous frame, and +/// the jitter is in render pixels (input texel k is sampled at k + 0.5 - jitter). +struct Inputs { + VkImageView color = VK_NULL_HANDLE; + VkImageView depth = VK_NULL_HANDLE; + VkImageView motion = VK_NULL_HANDLE; + uint32_t render_width = 0, render_height = 0; + uint32_t upscale_width = 0, upscale_height = 0; + float jitter[2]{}; + /// Turns a motion vector into render pixels (the render size, for vectors in UV). + float motion_scale[2]{1.0f, 1.0f}; + /// The game's camera, which device_to_view_depth and tan_half_fov are built from. Both must be + /// real: a guessed near plane or field of view makes disocclusion wrong in a way that looks + /// like a renderer bug. + float near_plane = 0.0f; + float fov_y = 0.0f; + float frame_time_ms = 16.667f; + bool reset = false; + bool sharpen = false; + float sharpness = 0.0f; ///< 0 to 1 as FSR takes it +}; + /// Whether this device can run the passes at all: push descriptors, and every storage format the /// SDK's internal images need. Asked once; the answer is cached. [[nodiscard]] bool supported(); @@ -22,6 +45,10 @@ namespace mkwvk::fsr3 { [[nodiscard]] bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_width, uint32_t upscale_height); +/// Records one evaluation. False when the inputs are not usable, which leaves the caller to keep +/// whatever it would otherwise have done. +[[nodiscard]] bool upscale(VkCommandBuffer cmd, const Inputs& in); + /// The image an evaluation resolves into: RGBA16F at the upscale size, or null before prepare(). [[nodiscard]] VkImage output_image(); [[nodiscard]] VkImageView output_view(); From f8055427c3a5ce79520a9e8546e21dcb286c417b Mon Sep 17 00:00:00 2001 From: notquiteog Date: Sun, 8 Nov 2026 16:53:15 -0600 Subject: [PATCH 11/13] fix: the camera is no longer a precondition for FSR 3.1 The reference implementation documents that device_to_view_depth only scales FSR's disocclusion thresholds and uses a typical near plane and field of view, so refusing without the real camera was stricter than the evidence warrants. Inputs defaults both instead. Assisted-by: Claude Opus 5 Co-Authored-By: Claude Opus 5 --- gpu/vk/vk_fsr3.cpp | 4 +--- gpu/vk/vk_fsr3.h | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/gpu/vk/vk_fsr3.cpp b/gpu/vk/vk_fsr3.cpp index 099b35b69..427ab7cb7 100644 --- a/gpu/vk/vk_fsr3.cpp +++ b/gpu/vk/vk_fsr3.cpp @@ -453,9 +453,7 @@ bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_wid bool upscale(VkCommandBuffer cmd, const Inputs& in) { if (!in.color || !in.depth || !in.motion) return false; - // (a guessed camera makes disocclusion wrong in a way that reads as a renderer bug, so a - // missing one is a refusal: docs/upscaling.md) - if (!(in.near_plane > 0.0f) || !(in.fov_y > 0.0f)) return false; + if (!(in.near_plane > 0.0f) || !(in.fov_y > 0.0f)) return false; // (Inputs defaults them) if (!prepare(in.render_width, in.render_height, in.upscale_width, in.upscale_height)) return false; const bool first = g.first_evaluation; diff --git a/gpu/vk/vk_fsr3.h b/gpu/vk/vk_fsr3.h index 97a977367..3638eb6fb 100644 --- a/gpu/vk/vk_fsr3.h +++ b/gpu/vk/vk_fsr3.h @@ -24,11 +24,11 @@ struct Inputs { float jitter[2]{}; /// Turns a motion vector into render pixels (the render size, for vectors in UV). float motion_scale[2]{1.0f, 1.0f}; - /// The game's camera, which device_to_view_depth and tan_half_fov are built from. Both must be - /// real: a guessed near plane or field of view makes disocclusion wrong in a way that looks - /// like a renderer bug. - float near_plane = 0.0f; - float fov_y = 0.0f; + /// The game's camera, which device_to_view_depth and tan_half_fov are built from. That + /// conversion only scales FSR's disocclusion thresholds, so a typical camera is usable and is + /// what these default to; supplying the real one is better but is not a precondition. + float near_plane = 0.1f; + float fov_y = 60.0f * 3.14159265358979f / 180.0f; float frame_time_ms = 16.667f; bool reset = false; bool sharpen = false; From 39e381a71003183f76f434f33aa0b2f0819b4fc3 Mon Sep 17 00:00:00 2001 From: NoBoDyZ Date: Mon, 9 Nov 2026 11:50:12 +0100 Subject: [PATCH 12/13] fix(fsr): run FSR 3.1 on the inputs FSR 4.1 is given Read the camera for finite standard depth, bind the SDK's default exposure (an image of zero reads as 1.0), and use the no-wave pyramids where the device lacks the subgroup operations. The images of an old size were destroyed while in flight and the new ones never left UNDEFINED: retire them and restart the history instead. Add available() and reason() so the menu can show why it cannot run. Assisted-by: Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 --- gpu/vk/vk_fsr3.cpp | 113 ++++++++++++++++++++++++++++++++++++--------- gpu/vk/vk_fsr3.h | 19 ++++++-- 2 files changed, 107 insertions(+), 25 deletions(-) diff --git a/gpu/vk/vk_fsr3.cpp b/gpu/vk/vk_fsr3.cpp index 427ab7cb7..4ad19f614 100644 --- a/gpu/vk/vk_fsr3.cpp +++ b/gpu/vk/vk_fsr3.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include "vk_fsr3.h" @@ -177,6 +178,8 @@ constexpr VkImageSubresourceRange ALL_LEVELS{VK_IMAGE_ASPECT_COLOR_BIT, 0, VK_RE struct State { bool tried = false; bool ok = false; + bool failed = false; // (a pipeline or an image could not be made: not tried again) + bool wave = true; // (the subgroup operations the single-pass downsampler prefers: else the _nowave pyramids) Pipeline passes[kPassCount]; VkSampler point = VK_NULL_HANDLE; VkSampler linear = VK_NULL_HANDLE; @@ -207,6 +210,15 @@ struct State { constexpr uint32_t kUniformFrames = 4; // (more than the swapchain's images in flight) State g; +const char* g_reason = ""; // (why not supported(), short: the menu's and the log's) + +/// Images a new size replaced: work in flight may still use them, so they go a while later. +struct RetiredImage { + Image image; + uint64_t frame = 0; +}; +constexpr uint64_t kRetireFrames = 120; // (frames in flight are far fewer than this) +std::vector g_retired; void drop_image(Image& t) { for (VkImageView v : t.levels) vkDestroyImageView(dev.device, v, nullptr); @@ -216,6 +228,35 @@ void drop_image(Image& t) { t = Image{}; } +/// Every image of the set, a new size's replacing the old one's: retired, not freed. +void for_each_image(const std::function& fn) { + for (Image* t : {&g.farthest_depth, &g.shading_change, &g.new_locks, &g.spd_mips, + &g.farthest_depth_mip1, &g.dilated_motion_vectors, &g.dilated_depth, + &g.previous_nearest_depth, &g.dilated_reactive_masks, &g.frame_info, + &g.spd_atomic, &g.lanczos_lut, &g.default_reactive, &g.output}) { + fn(*t); + } + for (size_t i = 0; i < 2; i++) { + fn(g.accumulation[i]); + fn(g.luma[i]); + fn(g.luma_history[i]); + fn(g.internal_upscaled[i]); + } +} + +/// The images of a size no work recorded for any more can use. +void free_retired(bool all) { + const uint64_t now = texture_frame_no(); + for (size_t i = 0; i < g_retired.size();) { + if (!all && now - g_retired[i].frame < kRetireFrames) { + i++; + continue; + } + drop_image(g_retired[i].image); + g_retired.erase(g_retired.begin() + (ptrdiff_t)i); + } +} + /// One of the SDK's internal images: storage and sampled, GENERAL throughout, with a view per level /// when it has more than one (the pyramids bind their levels separately). bool make_image(Image& t, VkFormat format, uint32_t width, uint32_t height, uint32_t levels = 1) { @@ -391,28 +432,62 @@ bool supported() { static const bool answer = [] { if (!dev.push_descriptor || !vkCmdPushDescriptorSetKHR) { logf("vk: fsr3: no push descriptors"); + g_reason = "no push descriptors"; + return false; + } + if (!formats_supported()) { + g_reason = "a storage format is missing"; return false; } - return formats_supported(); + VkPhysicalDeviceSubgroupProperties sg{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES}; + VkPhysicalDeviceProperties2 p2{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2}; + p2.pNext = &sg; + vkGetPhysicalDeviceProperties2(dev.physical, &p2); + g.wave = (sg.supportedStages & VK_SHADER_STAGE_COMPUTE_BIT) && + (sg.supportedOperations & (VK_SUBGROUP_FEATURE_BASIC_BIT | VK_SUBGROUP_FEATURE_QUAD_BIT)) == + (VK_SUBGROUP_FEATURE_BASIC_BIT | VK_SUBGROUP_FEATURE_QUAD_BIT); + return true; }(); return answer; } +bool available() { + return supported() && !g.failed; +} + +const char* reason() { + return g_reason; +} + bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_width, uint32_t upscale_height) { if (!supported()) return false; + if (g.failed) return false; + free_retired(false); if (!g.tried) { g.tried = true; g.ok = make_samplers() && make_uniforms(); for (size_t i = 0; i < kPassCount && g.ok; i++) g.ok = make_pipeline(g.passes[i], PASSES[i]); if (g.ok) logf("vk: fsr3: %zu pass pipelines ready", kPassCount); } - if (!g.ok) return false; + if (!g.ok) { + g.failed = true, g_reason = "its pipelines were not made"; + return false; + } const bool same = g.output.image && g.render_width == render_width && g.render_height == render_height && g.upscale_width == upscale_width && g.upscale_height == upscale_height; if (same) return true; + // (work recorded against the old size may still run: its images are retired, not destroyed) + for_each_image([](Image& t) { + if (t.image) g_retired.push_back({t, texture_frame_no()}), t = Image{}; + }); + // (the new images start UNDEFINED and hold no history: both are the first evaluation's) + g.first_evaluation = true; + g.lut_uploaded = false; + g.parity = 0; + const uint32_t rw = std::max(1u, render_width), rh = std::max(1u, render_height); const uint32_t uw = std::max(1u, upscale_width), uh = std::max(1u, upscale_height); bool made = true; @@ -443,7 +518,8 @@ bool prepare(uint32_t render_width, uint32_t render_height, uint32_t upscale_wid made = made && make_image(g.default_reactive, VK_FORMAT_R8_UNORM, 1, 1); made = made && make_image(g.output, VK_FORMAT_R16G16B16A16_SFLOAT, uw, uh); if (!made) { - shutdown(); + for_each_image([](Image& t) { drop_image(t); }); // (never recorded against) + g.failed = true, g_reason = "its images were not made"; return false; } g.render_width = rw, g.render_height = rh, g.upscale_width = uw, g.upscale_height = uh; @@ -473,11 +549,14 @@ bool upscale(VkCommandBuffer cmd, const Inputs& in) { k.jitter[i] = in.jitter[i]; k.previous_jitter[i] = first ? in.jitter[i] : g.previous_jitter[i]; } - { // (setupDeviceDepthToViewSpaceDepthParams for reversed infinite depth) + { // (setupDeviceDepthToViewSpaceDepthParams for standard, finite depth: the shaders read + // view depth as device_to_view_depth[1] / (d - device_to_view_depth[0])) const float aspect = (float)rw / (float)std::max(1, rh); const float cot_half_fov = std::cos(0.5f * in.fov_y) / std::sin(0.5f * in.fov_y); - k.device_to_view_depth[0] = -1.0f * FLT_EPSILON; - k.device_to_view_depth[1] = in.near_plane; + const float n = in.near_plane, f = std::max(in.far_plane, in.near_plane * 1.001f); + const float q = f / (n - f); + k.device_to_view_depth[0] = -q; + k.device_to_view_depth[1] = q * n; k.device_to_view_depth[2] = 1.0f / (cot_half_fov / aspect); k.device_to_view_depth[3] = 1.0f / cot_half_fov; k.tan_half_fov = std::tan(std::atan(std::tan(in.fov_y * 0.5f) * aspect)); @@ -615,7 +694,9 @@ bool upscale(VkCommandBuffer cmd, const Inputs& in) { return Resource{g.spd_mips.levels[std::min(level, n ? n - 1 : 0)]}; }; const Resource color{in.color}, depth{in.depth}, motion{in.motion}; - const Resource exposure = tex(g.frame_info); // (FSR computes its own exposure) + // (the colour is tonemapped already: no auto exposure. The SDK's default exposure is an image of + // zero, which its Exposure() reads as 1.0, the same as FSR 4.1's unit exposure in vk_fsr4.cpp) + const Resource exposure = tex(g.default_reactive); const Resource current_luma = tex(g.luma[p]); const Resource cb_fsr{VK_NULL_HANDLE, g.uniforms, base, g.slot_fsr}; const Resource cb_spd{VK_NULL_HANDLE, g.uniforms, base + g.slot_fsr, g.slot_spd}; @@ -630,10 +711,10 @@ bool upscale(VkCommandBuffer cmd, const Inputs& in) { run(0, {motion, depth, color, tex(g.dilated_motion_vectors), tex(g.dilated_depth), tex(g.previous_nearest_depth), tex(g.farthest_depth), current_luma, cb_fsr}, groups(rw, 8), groups(rh, 8)); - run(1, {current_luma, tex(g.farthest_depth), tex(g.spd_atomic), tex(g.frame_info), mip(0), mip(1), + run(g.wave ? 1 : 2, {current_luma, tex(g.farthest_depth), tex(g.spd_atomic), tex(g.frame_info), mip(0), mip(1), mip(2), mip(3), mip(4), mip(5), tex(g.farthest_depth_mip1), cb_fsr, cb_spd}, spd_x, spd_y); - run(3, {current_luma, tex(g.luma[q]), tex(g.dilated_motion_vectors), exposure, tex(g.spd_atomic), + run(g.wave ? 3 : 4, {current_luma, tex(g.luma[q]), tex(g.dilated_motion_vectors), exposure, tex(g.spd_atomic), mip(0), mip(1), mip(2), mip(3), mip(4), mip(5), cb_fsr, cb_spd}, spd_x, spd_y); run(5, {tex(g.spd_mips), tex(g.shading_change), cb_fsr}, groups(rw / 2, 8), groups(rh / 2, 8)); @@ -674,18 +755,8 @@ VkImageView output_view() { } void shutdown() { - for (Image* t : {&g.farthest_depth, &g.shading_change, &g.new_locks, &g.spd_mips, - &g.farthest_depth_mip1, &g.dilated_motion_vectors, &g.dilated_depth, - &g.previous_nearest_depth, &g.dilated_reactive_masks, &g.frame_info, - &g.spd_atomic, &g.lanczos_lut, &g.default_reactive, &g.output}) { - drop_image(*t); - } - for (size_t i = 0; i < 2; i++) { - drop_image(g.accumulation[i]); - drop_image(g.luma[i]); - drop_image(g.luma_history[i]); - drop_image(g.internal_upscaled[i]); - } + for_each_image([](Image& t) { drop_image(t); }); + free_retired(true); g.render_width = g.render_height = g.upscale_width = g.upscale_height = 0; g.first_evaluation = true; g.lut_uploaded = false; diff --git a/gpu/vk/vk_fsr3.h b/gpu/vk/vk_fsr3.h index 3638eb6fb..de64dff78 100644 --- a/gpu/vk/vk_fsr3.h +++ b/gpu/vk/vk_fsr3.h @@ -1,6 +1,6 @@ // (hookshot) AMD FidelityFX Super Resolution 3.1 (the FSR 3.1.4 upscaler from FidelityFX SDK // v1.1.4, shaders in third_party/fidelityfx-sdk compiled by scripts/fsr3_shaders.py) as a backend -// for the game's own upscale dispatch: docs/upscaling.md and gpu/vk/upscale_seam.h. +// for the game's own upscale dispatch. // // This file holds what an evaluation needs before it can be recorded -- the eleven pipelines and // the SDK's internal images -- and nothing that records one. The dispatch half follows. @@ -12,9 +12,12 @@ namespace mkwvk::fsr3 { -/// One evaluation's inputs. Every field is the SDK's meaning, not a guess: the colour is HDR and -/// jittered at the render size, the depth is reversed, the motion points at the previous frame, and -/// the jitter is in render pixels (input texel k is sampled at k + 0.5 - jitter). +/// One evaluation's inputs, the ones vk_draw.cpp builds for FSR 4.1 too. The colour is tonemapped and +/// square-root encoded (LDR, in [0, 1]) and jittered at the render size, the depth is standard (0 near, +/// 1 far), the motion points at the previous frame in render pixels, and the jitter is in render pixels +/// (input texel k is sampled at k + 0.5 - jitter). The pass shaders are compiled for exactly this: +/// scripts/fsr3_shaders.py. A view of the same inputs in another colour or depth convention would need +/// new shaders. struct Inputs { VkImageView color = VK_NULL_HANDLE; VkImageView depth = VK_NULL_HANDLE; @@ -28,6 +31,7 @@ struct Inputs { /// conversion only scales FSR's disocclusion thresholds, so a typical camera is usable and is /// what these default to; supplying the real one is better but is not a precondition. float near_plane = 0.1f; + float far_plane = 1000.0f; float fov_y = 60.0f * 3.14159265358979f / 180.0f; float frame_time_ms = 16.667f; bool reset = false; @@ -39,6 +43,13 @@ struct Inputs { /// SDK's internal images need. Asked once; the answer is cached. [[nodiscard]] bool supported(); +/// supported(), and nothing has failed for good since (a pipeline or an image that could not be +/// made). What the Insert menu and the upscaler choice ask each frame. +[[nodiscard]] bool available(); + +/// Why not available(), short, for the menu and the log; empty while it is. Starts nothing. +[[nodiscard]] const char* reason(); + /// Makes the pipelines and the internal images for an evaluation at these sizes, re-making them /// when the sizes change. False when anything could not be made, which leaves FSR unavailable /// rather than half-built. From 1bbdb025385db3c7f5b6491a0a637b5fdf0bdd83 Mon Sep 17 00:00:00 2001 From: NoBoDyZ Date: Mon, 9 Nov 2026 11:52:33 +0100 Subject: [PATCH 13/13] feat(fsr): select FSR 4.1 or FSR 3.1 with RX_UPSCALER and upscaler= FSR 3.1 now runs on the chain FSR 4.1 uses (dlss_dispatch), from the same colour, depth, motion and jitter, with near, far and field of view read from the camera matrix; the output goes through dlss_output.comp as before, and the history restarts whenever the engine changes. The choice is Off, Auto, FSR 4.1 or FSR 3.1. Auto takes FSR 4.1 when AMD's library is present with a model for the card, else the built-in FSR 3.1, else the game's upscale; FSR 4.1 failing in play falls back to FSR 3.1. gpu/vk/upscale_engine.h holds that choice and the camera read, plain data so tests/upscale_engine_test.cpp checks them without a game or a GPU. RX_UPSCALER and upscaler= are the new keys; RX_FSR4=0/1 and an old ini's fsr4= still work (Off and Auto). The menu row is still the AMD FSR 4.1 row, whose On is now Auto: the next commit makes it the four-value row. Assisted-by: Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 --- gpu/PROVENANCE.md | 4 ++ gpu/vk/upscale_engine.h | 107 +++++++++++++++++++++++++++++++++ gpu/vk/vk_draw.cpp | 68 +++++++++++++++++---- gpu/vk/vk_fsr4.cpp | 4 +- gpu/vk/vk_fsr4.h | 3 + gpu/vk/vk_menu.cpp | 22 +++++-- gpu/vk/vk_menu.h | 3 +- tests/run_all.py | 1 + tests/test_upscale_engine.py | 27 +++++++++ tests/upscale_engine_test.cpp | 108 ++++++++++++++++++++++++++++++++++ 10 files changed, 330 insertions(+), 17 deletions(-) create mode 100644 gpu/vk/upscale_engine.h create mode 100644 tests/test_upscale_engine.py create mode 100644 tests/upscale_engine_test.cpp diff --git a/gpu/PROVENANCE.md b/gpu/PROVENANCE.md index 8408631ce..97f85d2e7 100644 --- a/gpu/PROVENANCE.md +++ b/gpu/PROVENANCE.md @@ -40,3 +40,7 @@ Hookshot's AMD FSR 4.1 (`vk/vk_fsr4.cpp`, the FSR and jitter parts of `vk/vk_dra `vk_rasterizer.cpp`'s Ocarina jitter, `host_shaders/ocarina_*.comp`; GPL-3.0-or-later). `third_party/fidelityfx/` is AMD's FSR API headers from FidelityFX SDK v2.4.0 (MIT, `LICENSE.md`); AMD's signed DLLs are loaded from the user's PC at run time and are not vendored. + +Hookshot's AMD FSR 3.1 (`vk/vk_fsr3.cpp`, `vk/shaders/fsr3_*`) comes from notquiteog's FSR 3.1 +pull request on NotRexed/Hookshot (#822, GPL-3.0-or-later); the shaders are compiled from `third_party/fidelityfx-sdk/` (AMD FidelityFX SDK +v1.1.4, MIT). diff --git a/gpu/vk/upscale_engine.h b/gpu/vk/upscale_engine.h new file mode 100644 index 000000000..07550832f --- /dev/null +++ b/gpu/vk/upscale_engine.h @@ -0,0 +1,107 @@ +// (hookshot) Which FSR engine the Insert menu's upscaler row resolves to, and the camera FSR is told, read from the +// view projection. Plain data and no Vulkan, so tests/upscale_engine_test.cpp checks them without a game or a GPU. +#pragma once + +#include +#include +#include + +namespace mkwvk::upscale { + +/// The Insert menu's upscaler row. Values are what hookshot_options.ini's `upscaler=` keeps; 0 is the default. +enum class Choice : int { Off = 0, Auto = 1, Fsr4 = 2, Fsr3 = 3 }; + +/// What actually draws the upscale. +enum class Engine : uint8_t { None, Fsr4, Fsr3 }; + +/// What a choice is resolved against. The replay thread fills it (it may load AMD's library); the menu reads the same +/// state without loading anything, so `fsr4_pending` says "not looked for yet". +struct EngineState { + bool dlss_on = false; + bool fsr4_usable = false; ///< loaded, with an FSR 4 model for this GPU, and nothing has failed + bool fsr4_pending = false; ///< not looked for yet: the menu only + bool fsr4_failed = false; ///< it started and then failed: FSR 3.1 takes over, whatever the choice was + const char* fsr4_why = ""; ///< why not usable, short + bool fsr3_usable = false; + const char* fsr3_why = ""; +}; + +/// The engine a choice resolves to. Auto: FSR 4.1 if it is usable, else FSR 3.1, else nothing (the game's own upscale). +/// A forced choice resolves only to itself, except FSR 4.1 failing in play, which falls back to FSR 3.1. +inline Engine engine_for(Choice c, const EngineState& s) { + if (c == Choice::Off || s.dlss_on) return Engine::None; + switch (c) { + case Choice::Auto: + return s.fsr4_usable ? Engine::Fsr4 : s.fsr3_usable ? Engine::Fsr3 : Engine::None; + case Choice::Fsr4: + return s.fsr4_usable ? Engine::Fsr4 : (s.fsr4_failed && s.fsr3_usable) ? Engine::Fsr3 : Engine::None; + case Choice::Fsr3: + return s.fsr3_usable ? Engine::Fsr3 : Engine::None; + default: break; + } + return Engine::None; +} + +inline const char* engine_name(Engine e) { + switch (e) { + case Engine::Fsr4: return "FSR 4.1"; + case Engine::Fsr3: return "FSR 3.1"; + default: break; + } + return "none"; +} + +/// The row's text: the engine in use, and why a forced choice is not running. +inline void row_text(char* out, size_t n, Choice c, const EngineState& s) { + static const char* const names[] = {"Off", "Auto", "FSR 4.1", "FSR 3.1"}; + if (c == Choice::Off) { + snprintf(out, n, "Off"); + return; + } + const char* const name = names[(int)c]; + if (s.dlss_on) { + snprintf(out, n, "%s (DLSS is on)", name); + return; + } + if (c == Choice::Auto) { + if (s.fsr4_pending) snprintf(out, n, "Auto"); + else if (const Engine e = engine_for(c, s); e != Engine::None) snprintf(out, n, "Auto (%s)", engine_name(e)); + else snprintf(out, n, "Auto (the game's upscale)"); + return; + } + if (c == Choice::Fsr4) { + if (s.fsr4_pending || s.fsr4_usable) snprintf(out, n, "FSR 4.1"); + else if (s.fsr4_failed && s.fsr3_usable) snprintf(out, n, "FSR 4.1 (failed: using FSR 3.1)"); + else snprintf(out, n, "FSR 4.1 (%s)", *s.fsr4_why ? s.fsr4_why : "unavailable"); + return; + } + if (s.fsr3_usable) snprintf(out, n, "FSR 3.1"); + else snprintf(out, n, "FSR 3.1 (%s)", *s.fsr3_why ? s.fsr3_why : "unavailable"); +} + +/// The near and far planes and tan(fovy / 2) a view-projection matrix was built with (row major, [-1, 1] clip depth, w = -view z: +/// how the game's own scene camera is laid out). Not valid when it is not such a matrix: a backend keeps its defaults. +struct Camera { + float near_plane = 0.0f, far_plane = 0.0f, tan_half_fov = 0.0f; + bool valid = false; +}; +inline Camera camera_from_view_projection(const float* m) { + Camera c; + const float r3[3] = {m[12], m[13], m[14]}; + const float r2[3] = {m[8], m[9], m[10]}; + const float r1[3] = {m[4], m[5], m[6]}; + const float r3_len2 = r3[0] * r3[0] + r3[1] * r3[1] + r3[2] * r3[2]; + const float r1_len2 = r1[0] * r1[0] + r1[1] * r1[1] + r1[2] * r1[2]; + if (!(r3_len2 > 0.0f) || !(r1_len2 > 0.0f)) return c; + const float a = -(r2[0] * r3[0] + r2[1] * r3[1] + r2[2] * r3[2]) / r3_len2; + const float b = m[11] + a * m[15]; + const float near_plane = b / (a - 1.0f), far_plane = b / (a + 1.0f); + const float tan_half = std::sqrt(r3_len2 / r1_len2); + if (!std::isfinite(near_plane) || !std::isfinite(far_plane) || !std::isfinite(tan_half) || near_plane <= 0.0f || + far_plane <= near_plane || tan_half <= 0.0f || tan_half > 100.0f) + return c; + c.near_plane = near_plane, c.far_plane = far_plane, c.tan_half_fov = tan_half, c.valid = true; + return c; +} + +} // namespace mkwvk::upscale diff --git a/gpu/vk/vk_draw.cpp b/gpu/vk/vk_draw.cpp index 75c789be9..839d06ed0 100644 --- a/gpu/vk/vk_draw.cpp +++ b/gpu/vk/vk_draw.cpp @@ -48,7 +48,9 @@ #include "shaders/dlss_color_comp_spv.h" #include "shaders/dlss_output_comp_spv.h" #include "shaders/dlss_debug_comp_spv.h" +#include "upscale_engine.h" #include "vk_dlss.h" +#include "vk_fsr3.h" #include "vk_fsr4.h" #include "vk_menu.h" #include "shader_recompiler/backend/spirv/mma_layout.h" @@ -5960,11 +5962,21 @@ struct DlssState { DlssState ds; // ponytail: one set of images, no lock: the replay records one frame at a time (RX_VK_PARALLEL would need ParLock here) bool dlss_on() { return opts.dlss && dlss_available(); } -// (hookshot-amd) AMD FSR 4.1 on the same frames (vk_fsr4.cpp), from the same colour, depth and camera motion, when DLSS is not on: -// the menu's AMD FSR 4.1 row (at once) and AMD's DLLs found. Ported from madebyjordan's FSR 4.1 work on Lichii -bool fsr_on() { return opts.fsr4 && !dlss_on() && fsr4_available(); } +// (hookshot-amd) AMD FSR on the same frames, from the same colour, depth and camera motion, when DLSS is not on: the menu's FSR +// upscaler row (at once). 4.1 is AMD's library when it is there and has a model for this card (vk_fsr4.cpp, ported from madebyjordan's +// FSR 4.1 work on Lichii); 3.1 is the SDK's own passes built in (vk_fsr3.cpp), for every card and every folder without the library. +upscale::Engine fsr_engine() { + const auto choice = (upscale::Choice)opts.upscaler; + if (choice == upscale::Choice::Off || dlss_on()) return upscale::Engine::None; + upscale::EngineState state; + state.fsr4_usable = choice != upscale::Choice::Fsr3 && fsr4_available(); // (AMD's library is loaded at the first frame it is wanted) + state.fsr4_failed = fsr4_failed(); + state.fsr3_usable = fsr3::available(); + return upscale::engine_for(choice, state); +} +bool fsr_on() { return fsr_engine() != upscale::Engine::None; } bool upscaler_on() { return dlss_on() || fsr_on(); } -const char* upscaler_name() { return fsr_on() ? "fsr4" : "dlss"; } +const char* upscaler_name() { return dlss_on() ? "dlss" : fsr_engine() == upscale::Engine::Fsr3 ? "fsr3" : fsr_engine() == upscale::Engine::Fsr4 ? "fsr4" : "dlss"; } // FSR's jitter. The game draws without one, so a temporal upscaler has no sub-pixel detail to gather: the draws that test or write // the scene's depth are moved by a sub-pixel amount through the viewport (dyn_pack, dynamic_state), Halton (2, 3) as FSR's own @@ -5986,6 +5998,7 @@ struct FsrJitter { bool live = false; // (and the jitter is on) bool used = false; // (a draw of this frame was moved: FSR is told x, y) uint64_t net_present = 0; // (the present the last network pass came in) + upscale::Engine engine = upscale::Engine::None; // (the one that drew the last evaluation: a new one starts from no history) }; FsrJitter fj; float halton(uint32_t i, uint32_t base) { @@ -6232,6 +6245,27 @@ bool dlss_take_colour(VkCommandBuffer cmd, const Program& p, bool encode) { return true; } +/// (hookshot-amd) AMD FSR 3.1 from the inputs FSR 4.1 takes (the passes are compiled for them: scripts/fsr3_shaders.py), the output left +/// in its own image for dlss_output.comp. The camera is the one the motion was computed from +static bool fsr3_evaluate(VkCommandBuffer cmd, const DlssImage& color, const DlssImage& depth, const DlssImage& motion, uint32_t ow, uint32_t oh, + const Mat& camera, float jitter_x, float jitter_y, bool reset) { + fsr3::Inputs in; + in.color = color.view, in.depth = depth.view, in.motion = motion.view; + in.render_width = color.width, in.render_height = color.height; + in.upscale_width = ow, in.upscale_height = oh; + in.jitter[0] = jitter_x, in.jitter[1] = jitter_y; + in.reset = reset; + const upscale::Camera c = upscale::camera_from_view_projection(camera.data()); + if (c.valid) in.near_plane = c.near_plane, in.far_plane = c.far_plane, in.fov_y = 2.0f * std::atan(c.tan_half_fov); + if (!fsr3::upscale(cmd, in)) return false; + static uint64_t evals = 0; + static int told = 0; // (the first evaluation, and the first resets: a camera cut each) + if (evals++ == 0 || (reset && told < 40)) + told++, logf("vk: fsr3: %ux%u -> %ux%u, jitter %.3f %.3f%s (camera near %.3f far %.1f)%s", color.width, color.height, ow, oh, jitter_x, + jitter_y, reset ? " (history reset)" : "", in.near_plane, in.far_plane, c.valid ? "" : " (not read from the view projection: defaults)"); + return true; +} + /// From dispatch(), the program's descriptors built: true when the dispatch is replaced (the network on a DLSS frame; with /// unless RX_DLSS_KEEP_PREPASSES=1, the chain's first three passes too) bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { @@ -6249,7 +6283,8 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { } if (!known && !skip_pre) return false; // (unknown networks by their place only: with the prepasses left out) // (hookshot-amd: the game's frame ends here; FSR's next jitter, live when FSR drew this one) - const bool fsr = fsr_on(); + const upscale::Engine engine = fsr_engine(); + const bool fsr = engine != upscale::Engine::None; struct FrameEnd { bool drew = false; uint32_t rw = 0, ow = 0; @@ -6282,7 +6317,8 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { const uint32_t ow = out->width, oh = out->height, rw = ds.used.w, rh = ds.used.h; gprof_begin(cmd); full_barrier(cmd); - bool ok = dlss_image(ds.out, ow, oh, VK_FORMAT_R16G16B16A16_SFLOAT, + bool ok = engine == upscale::Engine::Fsr3 || // (FSR 3.1 writes its own output image) + dlss_image(ds.out, ow, oh, VK_FORMAT_R16G16B16A16_SFLOAT, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, cmd); Mat clip{}; const bool have_motion = clip_to_previous(ds.used.cur, ds.used.prev, clip); @@ -6296,7 +6332,8 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { bool same_camera = true; // (a camera cut: the previous matrix is not last frame's current one) for (int i = 0; i < 16; i++) same_camera = same_camera && std::abs(ds.used.prev[i] - ds.last_vp[i]) < 0.001f; // (FSR: history goes on while it drew the last network pass; presents can come mid-frame, and made frames add presents) - const bool reset = (fsr ? !fj.drew : (ds.last_frame == ~0ull || now != ds.last_frame + 1)) || !same_camera; + // (and a new engine starts from no history: the images the other one kept are not its own) + const bool reset = (fsr ? !fj.drew || fj.engine != engine : (ds.last_frame == ~0ull || now != ds.last_frame + 1)) || !same_camera; ds.resets += reset, ds.cuts += reset && !same_camera; if (dlss_debug() && ds.evals >= 1500 && ds.evals < 1512) { // (the camera of 12 frames: a jitter would move [0][3]/[1][3] by ~1/w) const Mat& m = ds.used.cur; @@ -6312,13 +6349,20 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { const DlssImage motion{ds.motion.image, ds.motion.view, VK_FORMAT_R16G16_SFLOAT, rw, rh, VK_IMAGE_ASPECT_COLOR_BIT}; const DlssImage output{ds.out.image, ds.out.view, VK_FORMAT_R16G16B16A16_SFLOAT, ow, oh, VK_IMAGE_ASPECT_COLOR_BIT}; // (FSR is told the offset this frame's scene was drawn with: none when no draw was moved) - ok = fsr ? fsr4_evaluate(cmd, color, depth, motion, output, fj.used ? fj.x : 0.0f, fj.used ? fj.y : 0.0f, reset) - : dlss_evaluate(cmd, color, depth, motion, output, reset, ds.evals++); + const float jitter_x = fj.used ? fj.x : 0.0f, jitter_y = fj.used ? fj.y : 0.0f; + ok = engine == upscale::Engine::Fsr4 ? fsr4_evaluate(cmd, color, depth, motion, output, jitter_x, jitter_y, reset) + : engine == upscale::Engine::Fsr3 ? fsr3_evaluate(cmd, color, depth, motion, ow, oh, ds.used.cur, jitter_x, jitter_y, reset) + : dlss_evaluate(cmd, color, depth, motion, output, reset, ds.evals++); if (fsr) ds.evals++; frame_end.drew = ok && fsr, frame_end.rw = rw, frame_end.ow = ow; + if (ok && fsr && fj.engine != engine) { + logf("vk: fsr: %s draws the upscale from now on", upscale::engine_name(engine)); + fj.engine = engine; + } if (ok) { if (ds.reason || ds.last_frame == ~0ull) - logf("vk: %s: %s draws the upscale from frame %llu (%ux%u -> %ux%u)", upscaler_name(), fsr ? "AMD FSR 4.1" : "DLSS", + logf("vk: %s: %s draws the upscale from frame %llu (%ux%u -> %ux%u)", upscaler_name(), + engine == upscale::Engine::Fsr3 ? "AMD FSR 3.1" : fsr ? "AMD FSR 4.1" : "DLSS", (unsigned long long)now, rw, rh, ow, oh); ds.reason = nullptr; ds.last_frame = now, ds.last_vp = ds.used.cur; @@ -6333,7 +6377,9 @@ bool dlss_dispatch(VkCommandBuffer cmd, const NvnState& s, const Program& p) { } if (ok && dlss_debug() && dlss_debug_pass(cmd, dw.imgs[ntex].imageView, ow, oh, ds.used)) { } else if (ok) { - dlss_pass(cmd, ds.output_pipe, ds.nearest, ds.out.view, dw.imgs[ntex].imageView, ow, oh, nullptr); // (squared back) + // (squared back: FSR 3.1's own image, or the output image the other two wrote) + dlss_pass(cmd, ds.output_pipe, ds.nearest, engine == upscale::Engine::Fsr3 ? fsr3::output_view() : ds.out.view, + dw.imgs[ntex].imageView, ow, oh, nullptr); } else { // (DLSS failed with the first passes left out: a linear upscale of the square-rooted scene this frame) dlss_fallback(have_motion ? "DLSS declined the frame: a linear upscale" : "the camera matrix is not invertible: a linear upscale"); dlss_pass(cmd, ds.output_pipe, ds.linear, ds.color.view, dw.imgs[ntex].imageView, ow, oh, nullptr); diff --git a/gpu/vk/vk_fsr4.cpp b/gpu/vk/vk_fsr4.cpp index 9604d5bfc..c891e2de6 100644 --- a/gpu/vk/vk_fsr4.cpp +++ b/gpu/vk/vk_fsr4.cpp @@ -36,7 +36,7 @@ constexpr const char* kLoader = "amd_fidelityfx_upscaler_vk.so"; #endif struct Fsr { - bool tried = false, ok = false; + bool tried = false, ok = false, started = false; const char* reason = "not started"; HMODULE lib = nullptr; PfnFfxCreateContext create = nullptr; @@ -168,6 +168,7 @@ bool start() { } logf("vk: fsr4: upscalers %s; using %u.%u.%u", listed.c_str(), best[0], best[1], best[2]); fsr.ok = true; + fsr.started = true; fsr.reason = ""; return true; } @@ -282,6 +283,7 @@ bool fsr4_available() { return fsr.ok; } const char* fsr4_reason() { return fsr.reason; } +bool fsr4_failed() { return fsr.started && !fsr.ok; } bool fsr4_wants_descriptor_buffer() { #ifdef _WIN32 diff --git a/gpu/vk/vk_fsr4.h b/gpu/vk/vk_fsr4.h index b3bea5db8..7f9aa5962 100644 --- a/gpu/vk/vk_fsr4.h +++ b/gpu/vk/vk_fsr4.h @@ -15,6 +15,9 @@ namespace mkwvk { /// among those it lists. Made at the first use (no instance or device extensions needed), once. True when there is one bool fsr4_available(); const char* fsr4_reason(); // (why not, short: the menu and the log) +/// It started, then failed while playing (the game's upscale would stand in again; FSR 3.1 takes over instead, whatever the +/// menu chose: vk_draw.cpp) +bool fsr4_failed(); /// (linux) a Vulkan FSR 4 library such as fsr4-vk's is there and records with descriptor buffers: the device has to enable them bool fsr4_wants_descriptor_buffer(); diff --git a/gpu/vk/vk_menu.cpp b/gpu/vk/vk_menu.cpp index 1dc5493d7..b55171f38 100644 --- a/gpu/vk/vk_menu.cpp +++ b/gpu/vk/vk_menu.cpp @@ -22,7 +22,9 @@ #include "vk_menu_hit.h" #include "oot_cheat_items.h" #include "vk_dlss.h" +#include "vk_fsr3.h" #include "vk_fsr4.h" +#include "upscale_engine.h" #include "vk_work.h" // (after the others: counts the commands that do GPU work, for full_barrier) #ifndef HOOKSHOT_VERSION // (nx2/build.py gives it to this file: nx2/version.py) #define HOOKSHOT_VERSION "unknown" @@ -232,7 +234,7 @@ Row rows[] = { "NVIDIA's DLSS model, changed at once. M: NVIDIA's pick for Performance, close to L's picture but nearer K's speed. L: its " "pick for Ultra Performance, sharper and steadier, less ghosting, slower. K: its pick for Quality, Balanced and DLAA. J: " "like K, slightly less ghosting, more flicker."}, - {TAB_GRAPHICS, "AMD FSR 4.1", &opts.fsr4, 0, 1, 1, tx_fsr4, + {TAB_GRAPHICS, "AMD FSR 4.1", &opts.upscaler, 0, 1, 1, tx_fsr4, "AMD FSR 4.1 in place of the game's own upscale, with the scene's depth, the camera's motion and a sub-pixel jitter: steadier " "edges, less shimmer. Resolution sets what it upscales from: 75% is FSR's Quality, 50% Performance, 100% anti-aliasing only. " "Needs AMD's two FidelityFX DLLs beside the game. DLSS takes priority when on."}, @@ -431,7 +433,7 @@ std::string ini_path() { } const char* ini_key(const Row& r) { if (r.value == &opts.output_res) return "output_res"; - if (r.value == &opts.fsr4) return "fsr4"; // (host/nn_applet.c reads it at the start) + if (r.value == &opts.upscaler) return "upscaler"; static char k[32]; size_t n = 0; for (const char* p = r.name; *p && n + 1 < sizeof k; p++) k[n++] = *p == ' ' ? '_' : (char)tolower(*p); @@ -1134,7 +1136,8 @@ void menu_init() { if (FILE* f = fopen(ini_path().c_str(), "r")) { has_options = true; char line[80]; - bool has_resolution = false; + bool has_resolution = false, has_upscaler = false; + int old_fsr4 = -1; // (the row before the FSR upscaler row: fsr4=0/1, 1 meaning what Auto does now) bool v2 = false; int old_dynres = -1; // (the row before Resolution: 0, the full scale, is its 100%; 1 is Auto) while (fgets(line, sizeof line, f)) { @@ -1144,11 +1147,14 @@ void menu_init() { for (Row& r : rows) if (r.value && !strcmp(line, ini_key(r))) *r.value = std::min(std::max(atoi(eq + 1), r.lo), r.hi); has_resolution |= !strcmp(line, "resolution"); + has_upscaler |= !strcmp(line, "upscaler"); + if (!strcmp(line, "fsr4")) old_fsr4 = atoi(eq + 1); v2 |= !strcmp(line, "options_version"); if (!strcmp(line, "dynamic_resolution")) old_dynres = atoi(eq + 1); } fclose(f); if (!has_resolution && old_dynres >= 0) opts.resolution = old_dynres ? 0 : 1; + if (!has_upscaler && old_fsr4 >= 0) opts.upscaler = old_fsr4 ? (int)upscale::Choice::Auto : (int)upscale::Choice::Off; // (Game speed is Real time by default now: Per frame played at half speed at 30 fps, the "slow motion" players // reported. An options file from before kept the old default whether chosen or not: Real time for it too) if (!v2) opts.realtime = 1; @@ -1171,7 +1177,15 @@ void menu_init() { if (const char* e = getenv("HOS_REALTIME_STEP")) opts.realtime = atoi(e) != 0; if (const char* e = getenv("HOS_DYNRES")) opts.resolution = atoi(e) != 0 ? 0 : 1; if (const char* e = getenv("RX_DLSS")) opts.dlss = atoi(e) != 0; - if (const char* e = getenv("RX_FSR4")) opts.fsr4 = atoi(e) != 0; + // (the older RX_FSR4: 1 is the upscaler row's Auto, as an old ini's fsr4=1 is) + if (const char* e = getenv("RX_FSR4")) opts.upscaler = atoi(e) != 0 ? (int)upscale::Choice::Auto : (int)upscale::Choice::Off; + if (const char* e = getenv("RX_UPSCALER")) { + const std::string v(e); + for (const auto& [name, choice] : std::initializer_list>{ + {"off", upscale::Choice::Off}, {"0", upscale::Choice::Off}, {"auto", upscale::Choice::Auto}, {"1", upscale::Choice::Auto}, + {"fsr4", upscale::Choice::Fsr4}, {"2", upscale::Choice::Fsr4}, {"fsr3", upscale::Choice::Fsr3}, {"3", upscale::Choice::Fsr3}}) + if (v == name) opts.upscaler = (int)choice; + } if (const char* e = getenv("HOS_OUTPUT_RES")) opts.output_res = std::min(std::max(atoi(e), 0), 2); if (const char* e = getenv("RX_DLSS_PRESET"); e && e[0] >= 'J' && e[0] <= 'M') opts.dlss_preset = e[0] - 'J'; } diff --git a/gpu/vk/vk_menu.h b/gpu/vk/vk_menu.h index fe385402e..0ffaa41f1 100644 --- a/gpu/vk/vk_menu.h +++ b/gpu/vk/vk_menu.h @@ -34,7 +34,8 @@ struct Options { int dlss = 0; // the game's gameplay upscale through NVIDIA DLSS (vk_dlss.cpp); read once, at the start (RX_DLSS=0/1 over it) int dlss_mode = 3; // the render size with DLSS on: 0 Ultra Performance .. 3 Quality, 4 DLAA (dlss_render_size) int dlss_preset = 3; // DLSS's model: 0 J, 1 K, 2 L, 3 M; applies at once (RX_DLSS_PRESET=J..M over it) - int fsr4 = 0; // (hookshot-amd) the gameplay upscale through AMD FSR 4.1 (vk_fsr4.cpp) when DLSS is off; at once (RX_FSR4=0/1 over it) + int upscaler = 0; // (hookshot-amd) the gameplay upscale through AMD FSR when DLSS is off, at once: upscale::Choice (0 Off, 1 Auto, 2 FSR 4.1, + // 3 FSR 3.1). RX_UPSCALER=off|auto|fsr4|fsr3 over it; RX_FSR4=0/1 and an old ini's fsr4= still work (0 Off, 1 Auto) }; extern Options opts; /// (vk_memory.cpp) true when the quality preset's memory budgets (vram_mb, mirror_mb) are to be used: the card has no more diff --git a/tests/run_all.py b/tests/run_all.py index 8015dfb70..0f8db0aa6 100644 --- a/tests/run_all.py +++ b/tests/run_all.py @@ -37,6 +37,7 @@ "tests/test_text_speed.py": ["--cc", "gcc"], "tests/test_upscale_fallback.py": ["--cxx", "g++"], "tests/test_fsr3_shaders.py": ["--glslang", "{glslang}", "--spirv-val", "{spirv_val}"], + "tests/test_upscale_engine.py": ["--cxx", "g++"], "tests/test_taau_env_lookup.py": ["--cxx", "g++"], "tests/test_target_overlap.py": ["--cxx", "g++"], "tests/test_menu_hit.py": ["--cxx", "g++"], diff --git a/tests/test_upscale_engine.py b/tests/test_upscale_engine.py new file mode 100644 index 000000000..9000b0e94 --- /dev/null +++ b/tests/test_upscale_engine.py @@ -0,0 +1,27 @@ +"""The FSR upscaler row's choice: which engine each value resolves to, what the row says, and the camera read out of a +view projection. Compiles tests/upscale_engine_test.cpp against gpu/vk/upscale_engine.h; no game, GPU, Vulkan or SDK. + +python -I -B tests/test_upscale_engine.py [--cxx clang++] +""" +import argparse +import subprocess +import tempfile +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] + + +def main(): + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--cxx", default="clang++") + a = p.parse_args() + with tempfile.TemporaryDirectory(prefix="upscale-engine-") as tmp: + exe = Path(tmp) / "upscale_engine_test" + subprocess.run([a.cxx, "-std=c++20", "-O1", "-Wall", "-Wextra", "-Werror", + "-I" + str(ROOT / "gpu/vk"), + str(ROOT / "tests/upscale_engine_test.cpp"), "-o", str(exe)], check=True) + subprocess.run([str(exe)], check=True) + + +if __name__ == "__main__": + main() diff --git a/tests/upscale_engine_test.cpp b/tests/upscale_engine_test.cpp new file mode 100644 index 000000000..1e43425d6 --- /dev/null +++ b/tests/upscale_engine_test.cpp @@ -0,0 +1,108 @@ +// (hookshot) gpu/vk/upscale_engine.h without a game, a GPU or Vulkan: which engine each choice of the FSR upscaler row +// resolves to, the row's text, and the camera read from a view projection. tests/test_upscale_engine.py compiles and +// runs this. +#include +#include +#include + +#include "upscale_engine.h" + +using namespace mkwvk::upscale; + +static int failures = 0; + +static void check(bool ok, const char* what) { + if (!ok) { + std::fprintf(stderr, "FAIL: %s\n", what); + ++failures; + } +} + +static void check_text(Choice c, const EngineState& e, const char* want, const char* what) { + char got[96]; + row_text(got, sizeof got, c, e); + if (std::strcmp(got, want) != 0) { + std::fprintf(stderr, "FAIL: %s: got \"%s\", wanted \"%s\"\n", what, got, want); + ++failures; + } +} + +static void test_engine_choice() { + EngineState none; // (no FSR 4 library, no FSR 3.1 either) + EngineState only3; + only3.fsr3_usable = true; + only3.fsr4_why = "no AMD FSR DLLs"; + EngineState both = only3; + both.fsr4_usable = true; + both.fsr4_why = ""; + EngineState failed = only3; + failed.fsr4_failed = true; + failed.fsr4_why = "FSR 4 failed"; + + check(engine_for(Choice::Off, both) == Engine::None, "Off draws nothing"); + check(engine_for(Choice::Auto, both) == Engine::Fsr4, "Auto takes FSR 4.1 when it is usable"); + check(engine_for(Choice::Auto, only3) == Engine::Fsr3, "Auto falls back to FSR 3.1 without the library"); + check(engine_for(Choice::Auto, none) == Engine::None, "Auto leaves the game's upscale with neither"); + check(engine_for(Choice::Fsr4, only3) == Engine::None, "a forced FSR 4.1 without the library is not FSR 3.1"); + check(engine_for(Choice::Fsr4, failed) == Engine::Fsr3, "FSR 4.1 failing in play falls back to FSR 3.1"); + check(engine_for(Choice::Fsr3, both) == Engine::Fsr3, "a forced FSR 3.1 ignores FSR 4.1"); + check(engine_for(Choice::Fsr3, none) == Engine::None, "a forced FSR 3.1 needs FSR 3.1"); + { + EngineState dlss = both; + dlss.dlss_on = true; + check(engine_for(Choice::Auto, dlss) == Engine::None, "DLSS on leaves the choice waiting"); + check_text(Choice::Auto, dlss, "Auto (DLSS is on)", "DLSS on says so"); + } + check_text(Choice::Off, both, "Off", "off"); + check_text(Choice::Auto, both, "Auto (FSR 4.1)", "auto with FSR 4.1"); + check_text(Choice::Auto, only3, "Auto (FSR 3.1)", "auto with FSR 3.1"); + check_text(Choice::Auto, none, "Auto (the game's upscale)", "auto with neither"); + check_text(Choice::Fsr4, both, "FSR 4.1", "forced FSR 4.1"); + check_text(Choice::Fsr4, only3, "FSR 4.1 (no AMD FSR DLLs)", "forced FSR 4.1 says why not"); + check_text(Choice::Fsr4, failed, "FSR 4.1 (failed: using FSR 3.1)", "forced FSR 4.1 failed"); + check_text(Choice::Fsr3, only3, "FSR 3.1", "forced FSR 3.1"); + { + EngineState no3; + no3.fsr3_why = "no push descriptors"; + check_text(Choice::Fsr3, no3, "FSR 3.1 (no push descriptors)", "forced FSR 3.1 says why not"); + } + { + EngineState pending = only3; + pending.fsr4_pending = true; + check_text(Choice::Auto, pending, "Auto", "the menu says nothing before the first frame"); + } +} + +static void test_camera() { + const float n = 0.5f, f = 2000.0f, tan_half = 0.57735f; // (a 60 degree vertical view, an aspect of 16:9) + const float A = -(f + n) / (f - n), B = -2.0f * f * n / (f - n); + const float view[16] = {1, 0, 0, 3, 0, 0.8f, -0.6f, 2, 0, 0.6f, 0.8f, -5, 0, 0, 0, 1}; // (a rotation about x and a translation) + const float cx = (9.0f / 16.0f) / tan_half, cy = 1.0f / tan_half; + const float proj[16] = {cx, 0, 0, 0, 0, cy, 0, 0, 0, 0, A, B, 0, 0, -1, 0}; + float vp[16]; + for (int r = 0; r < 4; r++) + for (int c = 0; c < 4; c++) { + float sum = 0.0f; + for (int k = 0; k < 4; k++) sum += proj[r * 4 + k] * view[k * 4 + c]; + vp[r * 4 + c] = sum; + } + const Camera cam = camera_from_view_projection(vp); + check(cam.valid, "a game-style view projection is read"); + check(std::fabs(cam.near_plane - n) / n < 1e-3f, "its near plane"); + check(std::fabs(cam.far_plane - f) / f < 1e-2f, "its far plane"); + check(std::fabs(cam.tan_half_fov - tan_half) / tan_half < 1e-3f, "its tan(fovy / 2)"); + const float zero[16] = {}; + check(!camera_from_view_projection(zero).valid, "a zero matrix is not a camera"); +} + +int main() { + test_engine_choice(); + test_camera(); + + if (failures != 0) { + std::fprintf(stderr, "%d check(s) failed\n", failures); + return 1; + } + std::printf("upscale engine: all checks passed\n"); + return 0; +}