From 5abf3c54c772983eb14aca0ae1d682d35c7221b8 Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 10 Nov 2024 22:51:30 -0800 Subject: [PATCH 01/32] Add BackBufferRenderer --- CMakeLists.txt | 26 ++++++ src/Mods.cpp | 2 + src/REFramework.cpp | 14 +++ src/REFramework.hpp | 2 + src/mods/BackBufferRenderer.cpp | 151 ++++++++++++++++++++++++++++++++ src/mods/BackBufferRenderer.hpp | 67 ++++++++++++++ src/mods/vr/D3D12Component.cpp | 11 --- src/mods/vr/D3D12Component.hpp | 1 - 8 files changed, 262 insertions(+), 12 deletions(-) create mode 100644 src/mods/BackBufferRenderer.cpp create mode 100644 src/mods/BackBufferRenderer.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 57d1b6648..fa6d0e160 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2226,6 +2226,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -2276,6 +2277,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -2433,6 +2435,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -2483,6 +2486,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -4305,6 +4309,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -4355,6 +4360,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -4512,6 +4518,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -4562,6 +4569,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -4719,6 +4727,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -4769,6 +4778,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -7425,6 +7435,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -7475,6 +7486,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -7632,6 +7644,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -7682,6 +7695,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -8673,6 +8687,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -8723,6 +8738,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -9712,6 +9728,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -9762,6 +9779,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -10753,6 +10771,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -10803,6 +10822,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -11794,6 +11814,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -11844,6 +11865,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -12835,6 +12857,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -12885,6 +12908,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" @@ -13876,6 +13900,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowsMessageHook.cpp" "src/cimgui/cimgui.cpp" "src/mods/APIProxy.cpp" + "src/mods/BackBufferRenderer.cpp" "src/mods/Camera.cpp" "src/mods/DeveloperTools.cpp" "src/mods/FirstPerson.cpp" @@ -13926,6 +13951,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/WindowFilter.hpp" "src/WindowsMessageHook.hpp" "src/mods/APIProxy.hpp" + "src/mods/BackBufferRenderer.hpp" "src/mods/Camera.hpp" "src/mods/DeveloperTools.hpp" "src/mods/FirstPerson.hpp" diff --git a/src/Mods.cpp b/src/Mods.cpp index 9c5542074..b681dd643 100644 --- a/src/Mods.cpp +++ b/src/Mods.cpp @@ -1,5 +1,6 @@ #include +#include "mods/BackBufferRenderer.hpp" #include "mods/APIProxy.hpp" #include "mods/Camera.hpp" #include "mods/Graphics.hpp" @@ -20,6 +21,7 @@ #include "Mods.hpp" Mods::Mods() { + m_mods.emplace_back(BackBufferRenderer::get()); m_mods.emplace_back(REFrameworkConfig::get()); #if defined(REENGINE_AT) diff --git a/src/REFramework.cpp b/src/REFramework.cpp index 6ad3f488e..546f09c5d 100644 --- a/src/REFramework.cpp +++ b/src/REFramework.cpp @@ -1067,6 +1067,13 @@ void REFramework::on_post_present_d3d12() { return; } + + if (m_d3d12.graphics_memory != nullptr) { + auto& hook = get_d3d12_hook(); + auto command_queue = hook->get_command_queue(); + + m_d3d12.graphics_memory->Commit(command_queue); + } for (auto& mod : m_mods->get_mods()) { mod->on_post_present(); @@ -2165,6 +2172,13 @@ bool REFramework::init_d3d12() { auto device = m_d3d12_hook->get_device(); + spdlog::info("[D3D12] Creating DXTK graphics memory..."); + + // Realistically we only have one device. If not, then... IDK + if (m_d3d12.graphics_memory == nullptr) { + m_d3d12.graphics_memory = std::make_unique(device); + } + spdlog::info("[D3D12] Creating command allocator..."); m_d3d12.cmd_ctxs.clear(); diff --git a/src/REFramework.hpp b/src/REFramework.hpp index 6d0250f57..c6075fb74 100644 --- a/src/REFramework.hpp +++ b/src/REFramework.hpp @@ -8,6 +8,7 @@ #include #include +#include <../../directxtk12-src/Inc/GraphicsMemory.h> #include "mods/vr/d3d12/CommandContext.hpp" class Mods; @@ -315,6 +316,7 @@ class REFramework { uint32_t rt_height{}; std::array imgui_backend_datas{}; + std::unique_ptr graphics_memory{}; // for use in several places around REF } m_d3d12{}; public: diff --git a/src/mods/BackBufferRenderer.cpp b/src/mods/BackBufferRenderer.cpp new file mode 100644 index 000000000..6d03be175 --- /dev/null +++ b/src/mods/BackBufferRenderer.cpp @@ -0,0 +1,151 @@ +#include "BackBufferRenderer.hpp" + +std::shared_ptr& BackBufferRenderer::get() { + static auto instance = std::make_shared(); + return instance; +} + +std::optional BackBufferRenderer::on_initialize_d3d_thread() { + if (g_framework->is_dx12()) { + for (auto& context : m_d3d12.command_contexts) { + context = std::make_unique(); + context->setup(L"BackBufferRenderer D3D12 Command Context"); + } + + auto swapchain = g_framework->get_d3d12_hook()->get_swap_chain(); + auto device = g_framework->get_d3d12_hook()->get_device(); + + d3d12::ComPtr backbuffer{}; + if (FAILED(swapchain->GetBuffer(0, IID_PPV_ARGS(&backbuffer)))) { + return "Failed to get back buffer"; + } + + auto desc = backbuffer->GetDesc(); + + m_d3d12.default_rt_state = DirectX::RenderTargetState{desc.Format, DXGI_FORMAT_UNKNOWN}; + + spdlog::info("BackBufferRenderer D3D12 initialized"); + } else { + // TODO + spdlog::info("BackBufferRenderer D3D11 initialized"); + } + + // OK + return Mod::on_initialize(); +} + +void BackBufferRenderer::on_device_reset() { + for (auto& ctx : m_d3d12.command_contexts) { + ctx.reset(); + } + + for (auto& bb : m_d3d12.backbuffers) { + bb.reset(); + } +} + +void BackBufferRenderer::render_d3d12() { + if (m_d3d12.render_work.empty()) { + return; + } + + for (auto& ctx : m_d3d12.command_contexts) { + if (ctx == nullptr) { + ctx = std::make_unique(); + ctx->setup(L"BackBufferRenderer D3D12 Command Context"); + } + } + + auto swapchain = g_framework->get_d3d12_hook()->get_swap_chain(); + auto device = g_framework->get_d3d12_hook()->get_device(); + for (size_t i = 0; i < m_d3d12.backbuffers.size(); ++i) { + d3d12::ComPtr backbuffer{}; + if (FAILED(swapchain->GetBuffer(i, IID_PPV_ARGS(&backbuffer)))) { + break; + } + + if (m_d3d12.backbuffers[i] == nullptr || m_d3d12.backbuffers[i]->texture.Get() != backbuffer.Get()) { + spdlog::info("[ChainViewer] Setting up backbuffer {}", i); + + m_d3d12.backbuffers[i].reset(); + + m_d3d12.backbuffers[i] = std::make_unique(); + if (!m_d3d12.backbuffers[i]->setup(device, backbuffer.Get(), std::nullopt, std::nullopt, L"ChainViewer Backbuffer")) { + spdlog::error("[ChainViewer] Failed to setup backbuffer {}", i); + m_d3d12.backbuffers[i].reset(); + continue; + } + } + } + + const auto bb_index = swapchain->GetCurrentBackBufferIndex(); + + d3d12::ComPtr backbuffer{}; + if (FAILED(swapchain->GetBuffer(bb_index, IID_PPV_ARGS(&backbuffer)))) { + return; + } + + const auto desc = backbuffer->GetDesc(); + + auto& bb_context = m_d3d12.backbuffers[bb_index % m_d3d12.backbuffers.size()]; + auto& command_context = m_d3d12.command_contexts[bb_index % m_d3d12.command_contexts.size()]; + + command_context->wait(2000); + + auto& cmd_list = command_context->cmd_list; + + D3D12_RECT scissor_rect{}; + scissor_rect.left = 0; + scissor_rect.top = 0; + scissor_rect.right = (LONG)desc.Width; + scissor_rect.bottom = (LONG)desc.Height; + + D3D12_VIEWPORT viewport{}; + viewport.Width = (float)desc.Width; + viewport.Height = (float)desc.Height; + viewport.MaxDepth = 1.0f; + + D3D12_RESOURCE_BARRIER barrier{}; + barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barrier.Transition.pResource = backbuffer.Get(); + barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT; + barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET; + barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + cmd_list->ResourceBarrier(1, &barrier); + + D3D12_CPU_DESCRIPTOR_HANDLE rtv_heaps[] = { bb_context->get_rtv() }; + cmd_list->OMSetRenderTargets(1, rtv_heaps, FALSE, nullptr); + + cmd_list->RSSetViewports(1, &viewport); + cmd_list->RSSetScissorRects(1, &scissor_rect); + + decltype(m_d3d12.render_work) works{}; + { + std::scoped_lock _{m_d3d12.render_work_mtx}; + works = m_d3d12.render_work; + m_d3d12.render_work.clear(); + } + + for (auto& work : works) { + work(cmd_list.Get()); + } + + barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; + barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT; + cmd_list->ResourceBarrier(1, &barrier); + + command_context->has_commands = true; + command_context->execute(); +} + +void BackBufferRenderer::render_d3d11() { + // TODO +} + +void BackBufferRenderer::on_present() { + if (g_framework->is_dx12()) { + render_d3d12(); + } else { + render_d3d11(); + } +} \ No newline at end of file diff --git a/src/mods/BackBufferRenderer.hpp b/src/mods/BackBufferRenderer.hpp new file mode 100644 index 000000000..249517bfc --- /dev/null +++ b/src/mods/BackBufferRenderer.hpp @@ -0,0 +1,67 @@ +#pragma once + +#include + +#include <../directxtk12-src/Inc/SimpleMath.h> +#include <../directxtk12-src/Inc/CommonStates.h> +#include <../directxtk12-src/Inc/Effects.h> +#include <../directxtk12-src/Inc/GeometricPrimitive.h> + +#include "vr/d3d12/CommandContext.hpp" +#include "vr/d3d12/TextureContext.hpp" +#include "vr/d3d12/ComPtr.hpp" + +#include "Mod.hpp" + +// BackBufferRenderer is a backend mod that other mods can use +// to render to the backbuffer, so we don't need to have boilerplate everywhere. +// Automatically sets up render target to backbuffer, scissor rect and viewport. +class BackBufferRenderer : public Mod { +public: + static std::shared_ptr& get(); + +public: + std::string_view get_name() const override { + return "BackBufferRenderer"; + } + + std::optional on_initialize_d3d_thread() override; + void on_present() override; + void on_device_reset() override; + +public: + using D3D12RenderWorkFn = std::function; + + void submit_work_d3d12(D3D12RenderWorkFn&& work) { + std::scoped_lock _{ m_d3d12.render_work_mtx }; + m_d3d12.render_work.push_back(std::move(work)); + } + + void submit_work_d3d12(std::vector&& work) { + std::scoped_lock _{ m_d3d12.render_work_mtx }; + + if (m_d3d12.render_work.empty()) { + m_d3d12.render_work = std::move(work); + return; + } + + m_d3d12.render_work.insert(m_d3d12.render_work.end(), work.begin(), work.end()); + } + + DirectX::RenderTargetState get_default_rt_state() { + return m_d3d12.default_rt_state; + } + +private: + void render_d3d12(); + void render_d3d11(); + + struct { + std::array, 3> command_contexts{}; + std::array, 3> backbuffers{}; // For the RTV + std::vector render_work{}; + std::mutex render_work_mtx{}; + + DirectX::RenderTargetState default_rt_state{}; + } m_d3d12; +}; \ No newline at end of file diff --git a/src/mods/vr/D3D12Component.cpp b/src/mods/vr/D3D12Component.cpp index 2bb4e8066..fa7a0961a 100644 --- a/src/mods/vr/D3D12Component.cpp +++ b/src/mods/vr/D3D12Component.cpp @@ -184,12 +184,6 @@ vr::EVRCompositorError D3D12Component::on_frame(VR* vr) { } void D3D12Component::on_post_present(VR* vr) { - if (m_graphics_memory != nullptr) { - auto& hook = g_framework->get_d3d12_hook(); - auto command_queue = hook->get_command_queue(); - - m_graphics_memory->Commit(command_queue); - } } void D3D12Component::on_reset(VR* vr) { @@ -210,7 +204,6 @@ void D3D12Component::on_reset(VR* vr) { m_prev_backbuffer.Reset(); m_backbuffer_copy.reset(); m_converted_eye_tex.reset(); - m_graphics_memory.reset(); if (runtime->is_openxr() && runtime->loaded) { if (m_openxr.last_resolution[0] != vr->get_hmd_width() || m_openxr.last_resolution[1] != vr->get_hmd_height()) { @@ -243,10 +236,6 @@ void D3D12Component::setup() { return; } - if (m_graphics_memory == nullptr) { - m_graphics_memory = std::make_unique(device); - } - const auto backbuffer_desc = backbuffer->GetDesc(); m_backbuffer_is_8bit = backbuffer_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM; diff --git a/src/mods/vr/D3D12Component.hpp b/src/mods/vr/D3D12Component.hpp index afb949e22..ae2d20a8c 100644 --- a/src/mods/vr/D3D12Component.hpp +++ b/src/mods/vr/D3D12Component.hpp @@ -53,7 +53,6 @@ class D3D12Component { d3d12::TextureContext m_converted_eye_tex{}; std::array m_generic_copiers{}; - std::unique_ptr m_graphics_memory{}; std::unique_ptr m_sprite_batch{}; // Mimicking what OpenXR does. From c92548fd82bfd1c6d84f7c1fe6e49894911afbac Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 10 Nov 2024 22:58:43 -0800 Subject: [PATCH 02/32] ChainViewer (DX12): Update with accurate 3D capsules --- src/mods/tools/ChainViewer.cpp | 104 ++++++++++++++++++++++++++++++++- src/mods/tools/ChainViewer.hpp | 21 +++++++ 2 files changed, 122 insertions(+), 3 deletions(-) diff --git a/src/mods/tools/ChainViewer.cpp b/src/mods/tools/ChainViewer.cpp index 03ffedb37..b64190cc0 100644 --- a/src/mods/tools/ChainViewer.cpp +++ b/src/mods/tools/ChainViewer.cpp @@ -1,6 +1,8 @@ #include #include +#include + #include #include @@ -50,6 +52,7 @@ #endif +#include "../BackBufferRenderer.hpp" #include "ObjectExplorer.hpp" #include "ChainViewer.hpp" @@ -59,6 +62,39 @@ std::optional ChainViewer::on_initialize() { return Mod::on_initialize(); } +std::optional ChainViewer::on_initialize_d3d_thread() { + if (g_framework->is_dx12()) { + DirectX::EffectPipelineStateDescription psd( + &DirectX::DX12::GeometricPrimitive::VertexType::InputLayout, + DirectX::DX12::CommonStates::AlphaBlend, + DirectX::DX12::CommonStates::DepthNone, + DirectX::DX12::CommonStates::CullCounterClockwise, + BackBufferRenderer::get()->get_default_rt_state() + ); + + auto device = g_framework->get_d3d12_hook()->get_device(); + + m_d3d12.effect = std::make_unique(device, DirectX::EffectFlags::None, psd); + m_d3d12.effect->SetWorld(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect->SetView(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect->SetProjection(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect->SetDiffuseColor(DirectX::Colors::Blue); + m_d3d12.effect->SetAlpha(m_effect_alpha); + + m_d3d12.cylinder = DirectX::GeometricPrimitive::CreateCylinder(); + m_d3d12.sphere = DirectX::GeometricPrimitive::CreateSphere(); + + spdlog::info("ChainViewer D3D12 initialized"); + } else { + // TODO + spdlog::info("ChainViewer D3D11 initialized"); + } + + // OK + return Mod::on_initialize(); +} + + void ChainViewer::on_config_load(const utility::Config& cfg) { for (IModValue& option : m_options) { option.config_load(cfg); @@ -82,6 +118,21 @@ void ChainViewer::on_draw_dev_ui() { if (m_enabled->draw("Enabled") && !m_enabled->value()) { // todo } + + if (ImGui::SliderFloat("Effect Alpha", &m_effect_alpha, 0.0f, 1.0f)) { + m_effect_dirty = true; + } +} + +void ChainViewer::on_present() { + if (g_framework->is_dx12()) { + if (m_effect_dirty) { + m_d3d12.effect->SetAlpha(m_effect_alpha); + m_effect_dirty = false; + } + } else { + // TODO + } } void ChainViewer::on_frame() { @@ -145,13 +196,24 @@ void ChainViewer::on_frame() { return; } - Matrix4x4f proj{}, view{}; + __declspec(align(16)) Matrix4x4f proj{}, view{}; const auto camera_origin = sdk::get_transform_position(camera_transform); sdk::call_object_func(camera, "get_ProjectionMatrix", &proj, context, camera); sdk::call_object_func(camera, "get_ViewMatrix", &view, context, camera); + auto proj_directx = DirectX::SimpleMath::Matrix{&proj[0][0]}; + auto view_directx = DirectX::SimpleMath::Matrix{&view[0][0]}; + + std::vector d3d12_work{}; + + // Set the view and projection matrices for the effect once per frame + d3d12_work.emplace_back([this, proj_directx, view_directx](ID3D12GraphicsCommandList* cmd_list) { + m_d3d12.effect->SetProjection(proj_directx); + m_d3d12.effect->SetView(view_directx); + }); + /*view = view * Matrix4x4f { -1, 0, 0, 0, 0, 1, 0, 0, @@ -256,11 +318,23 @@ void ChainViewer::on_frame() { // Draw spheres/capsules and imguizmo widgets if (collider.pair_joint == nullptr) { - imgui::draw_sphere(adjusted_pos1, collider.sphere.r, ImGui::GetColorU32(col), true); Matrix4x4f mat = glm::scale(Vector3f{collider.sphere.r, collider.sphere.r, collider.sphere.r}); mat[3] = Vector4f{adjusted_pos1, 1.0f}; + if (g_framework->is_dx12()) { + d3d12_work.emplace_back([this, adjusted_pos1, radius = collider.sphere.r](ID3D12GraphicsCommandList* cmd_list){ + DirectX::SimpleMath::Matrix world = DirectX::SimpleMath::Matrix::CreateScale(radius) * DirectX::SimpleMath::Matrix::CreateTranslation(adjusted_pos1.x, adjusted_pos1.y, adjusted_pos1.z); + m_d3d12.effect->SetWorld(world); + + m_d3d12.effect->Apply(cmd_list); + m_d3d12.sphere->Draw(cmd_list); + }); + } else { + // TODO + imgui::draw_sphere(adjusted_pos1, collider.sphere.r, ImGui::GetColorU32(col), true); + } + const auto screen_pos1 = sdk::renderer::world_to_screen(adjusted_pos1); const auto screen_pos1_top = sdk::renderer::world_to_screen(adjusted_pos1 + Vector3f{0.0f, collider.sphere.r, 0.0f}); const auto cursor_pos = *(Vector2f*)&ImGui::GetIO().MousePos; @@ -278,7 +352,27 @@ void ChainViewer::on_frame() { } } else { // Capsule - imgui::draw_capsule(adjusted_pos1, adjusted_pos2, collider.capsule.r, ImGui::GetColorU32(col), true); + if (g_framework->is_dx12()) { + d3d12_work.emplace_back([this, adjusted_pos1, adjusted_pos2, radius = collider.capsule.r](ID3D12GraphicsCommandList* cmd_list){ + const auto delta = adjusted_pos2 - adjusted_pos1; + const auto dir = glm::normalize(delta); + const auto length = glm::length(delta) + (radius * 2.0f); + const auto center = (adjusted_pos1 + adjusted_pos2) * 0.5f; + DirectX::SimpleMath::Matrix world = + DirectX::SimpleMath::Matrix::CreateScale(radius * 2.0f, radius * 2.0f, length) * + DirectX::SimpleMath::Matrix::CreateLookAt(DirectX::SimpleMath::Vector3::Zero, DirectX::SimpleMath::Vector3(dir.x, dir.y, dir.z), DirectX::SimpleMath::Vector3::Up).Invert() * + DirectX::SimpleMath::Matrix::CreateTranslation(center.x, center.y, center.z); + + m_d3d12.effect->SetWorld(world); + + m_d3d12.effect->Apply(cmd_list); + m_d3d12.sphere->Draw(cmd_list); + }); + } else { + // TODO + imgui::draw_capsule(adjusted_pos1, adjusted_pos2, collider.capsule.r, ImGui::GetColorU32(col), true); + } + const auto screen_pos1 = sdk::renderer::world_to_screen(adjusted_pos1); const auto screen_pos1_top = sdk::renderer::world_to_screen(adjusted_pos1 + Vector3f{0.0f, collider.capsule.r, 0.0f}); @@ -428,5 +522,9 @@ void ChainViewer::on_frame() { } ImGui::End(); + + if (g_framework->is_dx12()) { + BackBufferRenderer::get()->submit_work_d3d12(std::move(d3d12_work)); + } } diff --git a/src/mods/tools/ChainViewer.hpp b/src/mods/tools/ChainViewer.hpp index ec5619c46..47773dd97 100644 --- a/src/mods/tools/ChainViewer.hpp +++ b/src/mods/tools/ChainViewer.hpp @@ -2,6 +2,15 @@ #include +#include <../../directxtk12-src/Inc/SimpleMath.h> +#include <../../directxtk12-src/Inc/CommonStates.h> +#include <../../directxtk12-src/Inc/Effects.h> +#include <../../directxtk12-src/Inc/GeometricPrimitive.h> + +#include "../mods/vr/d3d12/CommandContext.hpp" +#include "../mods/vr/d3d12/TextureContext.hpp" +#include "../mods/vr/d3d12/ComPtr.hpp" + #include "Tool.hpp" class ChainViewer : public Tool { @@ -11,11 +20,23 @@ class ChainViewer : public Tool { } std::optional on_initialize() override; + std::optional on_initialize_d3d_thread() override; void on_config_load(const utility::Config& cfg) override; void on_config_save(utility::Config& cfg) override; void on_draw_dev_ui() override; void on_frame() override; + void on_present() override; + +private: + struct { + std::unique_ptr effect{}; + std::unique_ptr cylinder{}; + std::unique_ptr sphere{}; + } m_d3d12; + + float m_effect_alpha{0.5f}; + bool m_effect_dirty{false}; private: const ModToggle::Ptr m_enabled{ ModToggle::create(generate_name("Enabled")) }; From cad903b32843af5d081430c02814b1780de0aec3 Mon Sep 17 00:00:00 2001 From: praydog Date: Mon, 11 Nov 2024 13:46:59 -0800 Subject: [PATCH 03/32] BackBufferRenderer: Pass additional info to predicate --- src/mods/BackBufferRenderer.cpp | 17 +++++++++------ src/mods/BackBufferRenderer.hpp | 15 +++++++++++-- src/mods/tools/ChainViewer.cpp | 38 ++++++++++++++++++--------------- 3 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/mods/BackBufferRenderer.cpp b/src/mods/BackBufferRenderer.cpp index 6d03be175..7b937bd2a 100644 --- a/src/mods/BackBufferRenderer.cpp +++ b/src/mods/BackBufferRenderer.cpp @@ -100,10 +100,9 @@ void BackBufferRenderer::render_d3d12() { scissor_rect.right = (LONG)desc.Width; scissor_rect.bottom = (LONG)desc.Height; - D3D12_VIEWPORT viewport{}; - viewport.Width = (float)desc.Width; - viewport.Height = (float)desc.Height; - viewport.MaxDepth = 1.0f; + m_d3d12.viewport.Width = (float)desc.Width; + m_d3d12.viewport.Height = (float)desc.Height; + m_d3d12.viewport.MaxDepth = 1.0f; D3D12_RESOURCE_BARRIER barrier{}; barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; @@ -116,7 +115,7 @@ void BackBufferRenderer::render_d3d12() { D3D12_CPU_DESCRIPTOR_HANDLE rtv_heaps[] = { bb_context->get_rtv() }; cmd_list->OMSetRenderTargets(1, rtv_heaps, FALSE, nullptr); - cmd_list->RSSetViewports(1, &viewport); + cmd_list->RSSetViewports(1, &m_d3d12.viewport); cmd_list->RSSetScissorRects(1, &scissor_rect); decltype(m_d3d12.render_work) works{}; @@ -126,8 +125,14 @@ void BackBufferRenderer::render_d3d12() { m_d3d12.render_work.clear(); } + const RenderWorkData data{ + cmd_list.Get(), + m_d3d12.viewport, + bb_context.get() + }; + for (auto& work : works) { - work(cmd_list.Get()); + work(data); } barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; diff --git a/src/mods/BackBufferRenderer.hpp b/src/mods/BackBufferRenderer.hpp index 249517bfc..3e973483f 100644 --- a/src/mods/BackBufferRenderer.hpp +++ b/src/mods/BackBufferRenderer.hpp @@ -30,8 +30,13 @@ class BackBufferRenderer : public Mod { void on_device_reset() override; public: - using D3D12RenderWorkFn = std::function; - + struct RenderWorkData { + ID3D12GraphicsCommandList* command_list; + D3D12_VIEWPORT viewport; + d3d12::TextureContext* backbuffer_ctx; + }; + using D3D12RenderWorkFn = std::function; + void submit_work_d3d12(D3D12RenderWorkFn&& work) { std::scoped_lock _{ m_d3d12.render_work_mtx }; m_d3d12.render_work.push_back(std::move(work)); @@ -52,6 +57,10 @@ class BackBufferRenderer : public Mod { return m_d3d12.default_rt_state; } + D3D12_VIEWPORT get_viewport_d3d12() { + return m_d3d12.viewport; + } + private: void render_d3d12(); void render_d3d11(); @@ -63,5 +72,7 @@ class BackBufferRenderer : public Mod { std::mutex render_work_mtx{}; DirectX::RenderTargetState default_rt_state{}; + + D3D12_VIEWPORT viewport{}; } m_d3d12; }; \ No newline at end of file diff --git a/src/mods/tools/ChainViewer.cpp b/src/mods/tools/ChainViewer.cpp index b64190cc0..c47ff57d8 100644 --- a/src/mods/tools/ChainViewer.cpp +++ b/src/mods/tools/ChainViewer.cpp @@ -209,7 +209,7 @@ void ChainViewer::on_frame() { std::vector d3d12_work{}; // Set the view and projection matrices for the effect once per frame - d3d12_work.emplace_back([this, proj_directx, view_directx](ID3D12GraphicsCommandList* cmd_list) { + d3d12_work.emplace_back([this, proj_directx, view_directx](const BackBufferRenderer::RenderWorkData& data) { m_d3d12.effect->SetProjection(proj_directx); m_d3d12.effect->SetView(view_directx); }); @@ -323,12 +323,14 @@ void ChainViewer::on_frame() { mat[3] = Vector4f{adjusted_pos1, 1.0f}; if (g_framework->is_dx12()) { - d3d12_work.emplace_back([this, adjusted_pos1, radius = collider.sphere.r](ID3D12GraphicsCommandList* cmd_list){ - DirectX::SimpleMath::Matrix world = DirectX::SimpleMath::Matrix::CreateScale(radius) * DirectX::SimpleMath::Matrix::CreateTranslation(adjusted_pos1.x, adjusted_pos1.y, adjusted_pos1.z); + const auto radius = collider.sphere.r; + DirectX::SimpleMath::Matrix world = DirectX::SimpleMath::Matrix::CreateScale(radius) * DirectX::SimpleMath::Matrix::CreateTranslation(adjusted_pos1.x, adjusted_pos1.y, adjusted_pos1.z); + + d3d12_work.emplace_back([this, world](const BackBufferRenderer::RenderWorkData& data){ m_d3d12.effect->SetWorld(world); - m_d3d12.effect->Apply(cmd_list); - m_d3d12.sphere->Draw(cmd_list); + m_d3d12.effect->Apply(data.command_list); + m_d3d12.sphere->Draw(data.command_list); }); } else { // TODO @@ -353,20 +355,22 @@ void ChainViewer::on_frame() { } else { // Capsule if (g_framework->is_dx12()) { - d3d12_work.emplace_back([this, adjusted_pos1, adjusted_pos2, radius = collider.capsule.r](ID3D12GraphicsCommandList* cmd_list){ - const auto delta = adjusted_pos2 - adjusted_pos1; - const auto dir = glm::normalize(delta); - const auto length = glm::length(delta) + (radius * 2.0f); - const auto center = (adjusted_pos1 + adjusted_pos2) * 0.5f; - DirectX::SimpleMath::Matrix world = - DirectX::SimpleMath::Matrix::CreateScale(radius * 2.0f, radius * 2.0f, length) * - DirectX::SimpleMath::Matrix::CreateLookAt(DirectX::SimpleMath::Vector3::Zero, DirectX::SimpleMath::Vector3(dir.x, dir.y, dir.z), DirectX::SimpleMath::Vector3::Up).Invert() * - DirectX::SimpleMath::Matrix::CreateTranslation(center.x, center.y, center.z); - + const auto radius = collider.capsule.r; + const auto delta = adjusted_pos2 - adjusted_pos1; + const auto dir = glm::normalize(delta); + const auto length = glm::length(delta) + (radius * 2.0f); + const auto center = (adjusted_pos1 + adjusted_pos2) * 0.5f; + DirectX::SimpleMath::Matrix world = + DirectX::SimpleMath::Matrix::CreateScale(radius * 2.0f, radius * 2.0f, length) * + DirectX::SimpleMath::Matrix::CreateLookAt(DirectX::SimpleMath::Vector3::Zero, DirectX::SimpleMath::Vector3(dir.x, dir.y, dir.z), DirectX::SimpleMath::Vector3::Up).Invert() * + DirectX::SimpleMath::Matrix::CreateTranslation(center.x, center.y, center.z); + + + d3d12_work.emplace_back([this, world](const BackBufferRenderer::RenderWorkData& data){ m_d3d12.effect->SetWorld(world); - m_d3d12.effect->Apply(cmd_list); - m_d3d12.sphere->Draw(cmd_list); + m_d3d12.effect->Apply(data.command_list); + m_d3d12.sphere->Draw(data.command_list); }); } else { // TODO From fe305ee207337d25278e35fedc9874de3f4388e5 Mon Sep 17 00:00:00 2001 From: praydog Date: Mon, 11 Nov 2024 13:47:29 -0800 Subject: [PATCH 04/32] GameObjectsDisplay (DX12): Render text in 3D space --- src/mods/spritefonts/Roboto.spritefont.h | 3421 ++++++++++++++++++++++ src/mods/tools/GameObjectsDisplay.cpp | 209 +- src/mods/tools/GameObjectsDisplay.hpp | 26 + 3 files changed, 3645 insertions(+), 11 deletions(-) create mode 100644 src/mods/spritefonts/Roboto.spritefont.h diff --git a/src/mods/spritefonts/Roboto.spritefont.h b/src/mods/spritefonts/Roboto.spritefont.h new file mode 100644 index 000000000..94690f013 --- /dev/null +++ b/src/mods/spritefonts/Roboto.spritefont.h @@ -0,0 +1,3421 @@ +#ifndef ROBOTO_SPRITEFONT_H +#define ROBOTO_SPRITEFONT_H + +static const unsigned char Roboto_spritefont[] = { + 0x44, 0x58, 0x54, 0x4b, 0x66, 0x6f, 0x6e, 0x74, 0x5f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x41, + 0x00, 0x00, 0x84, 0x42, 0x00, 0x00, 0x60, 0xc1, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x22, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x23, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0xb2, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x24, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x80, 0xc0, 0x25, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x26, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xc0, 0xc0, 0x27, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x28, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x80, 0xc0, + 0x29, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x40, 0xc0, 0x2a, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0xa0, 0xc0, 0x2b, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x2c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0xe0, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x2d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0xa8, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x2e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0xe0, 0x41, 0x00, 0x00, 0x40, 0xc0, + 0x2f, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x30, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x31, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0x3f, + 0x32, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x33, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x34, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, + 0x35, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x36, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x39, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x3a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x70, 0x41, 0x00, 0x00, 0x40, 0xc0, + 0x3b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x70, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x3c, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x3d, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x80, 0x41, 0x00, 0x00, 0x40, 0xc0, + 0x3e, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x3f, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x41, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x42, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x43, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x45, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x46, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, + 0x47, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0xc0, 0x48, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0xc0, + 0x4a, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0xc0, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0xc0, 0xc0, 0x4c, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x4d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0xc0, 0x4e, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x50, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x51, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x52, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, + 0x53, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x54, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x55, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0xc0, + 0x56, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x57, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x58, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, + 0x59, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x5a, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x5b, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0xa0, 0xc0, + 0x5c, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x5d, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x40, 0xc0, 0x5e, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x5f, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0xf8, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x60, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x00, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x61, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x62, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x63, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x41, + 0x00, 0x00, 0xa0, 0xc0, 0x64, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x65, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x66, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x41, + 0x00, 0x00, 0xa0, 0xc0, 0x67, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x68, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x40, 0xc0, 0x69, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x6a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x6b, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x6c, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x6d, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x40, 0xc0, + 0x6e, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x40, 0xc0, 0x6f, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x70, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x71, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x40, 0xc0, 0x72, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x73, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x41, 0x00, 0x00, 0x80, 0xc0, + 0x74, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x30, 0x41, 0x00, 0x00, 0x80, 0xc0, 0x75, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x70, 0x41, + 0x00, 0x00, 0x40, 0xc0, 0x76, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x70, 0x41, 0x00, 0x00, 0xa0, 0xc0, + 0x77, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0x70, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x78, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x70, 0x41, + 0x00, 0x00, 0xa0, 0xc0, 0x79, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0x70, 0x41, 0x00, 0x00, 0xa0, 0xc0, + 0x7a, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, + 0x00, 0x00, 0x70, 0x41, 0x00, 0x00, 0xa0, 0xc0, 0x7b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0xe0, 0x40, + 0x00, 0x00, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0xc0, + 0x7d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, + 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0xa0, 0xc0, 0x7e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x98, 0x41, + 0x00, 0x00, 0x80, 0xc0, 0x55, 0xc7, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xc5, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xa0, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xa5, 0x89, 0x00, 0x00, 0x00, 0xa5, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x25, 0x25, 0x00, 0x00, 0xaa, 0xaa, + 0xff, 0xff, 0x5f, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0xa5, 0x00, 0xfa, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xb5, 0x25, 0xf5, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x0d, 0x00, 0x00, 0x00, 0x50, + 0xfa, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x02, 0x80, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xaf, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x35, 0x00, 0x00, 0x50, 0x05, + 0xff, 0x0f, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x7d, 0x40, 0x70, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xf5, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x35, 0x95, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5c, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf0, 0x5f, + 0xf0, 0x5f, 0xf0, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x55, 0xc1, 0xc1, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa5, + 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x05, 0x05, + 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x00, 0xa5, + 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x03, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0xaa, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xaa, 0x00, 0x2a, 0x00, 0x00, 0x05, 0x00, 0xff, 0x05, 0xff, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x55, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xf5, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x15, 0x95, 0x00, 0x00, 0x05, 0x00, + 0xaf, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x58, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xf5, 0x05, 0x0d, 0x00, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x57, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x35, 0x35, + 0x00, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x56, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x35, 0x00, 0x00, 0x00, 0x55, + 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xf5, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xaf, 0x50, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xd8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, + 0x00, 0x00, 0x00, 0x50, 0xa0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0x0a, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf5, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xc3, 0xc2, + 0x00, 0x00, 0x00, 0xaa, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xa5, 0x05, 0x05, 0x00, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa5, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x25, 0x25, 0x00, 0x00, 0x0a, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x35, 0xd5, 0x55, 0x55, 0x5f, 0x00, 0xff, 0x00, 0xff, 0x0a, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x50, 0x60, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x15, 0x25, 0xfa, 0x0a, 0xff, 0x00, 0x5f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x62, 0x50, 0x5c, 0x54, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xff, 0xa0, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x15, 0x05, 0x89, 0xfa, 0xaf, 0xaf, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x82, 0x58, 0x56, 0x55, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, 0xfa, 0x5f, 0x50, 0xff, + 0x00, 0xf0, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xc2, 0x0d, 0x15, 0xd5, + 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x54, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x50, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x0d, 0x09, 0x09, + 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf0, 0xaf, + 0xa0, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc3, 0x81, 0x09, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x50, 0xff, + 0xf5, 0xff, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x0d, 0x03, 0xc0, + 0xfa, 0xaf, 0xff, 0xff, 0xaa, 0xfa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x82, 0x00, 0x2a, 0x55, 0x05, 0x00, 0xff, 0x05, 0xff, 0x5f, 0xfa, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x70, 0xc0, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x54, 0x00, 0xf5, 0x00, 0xff, + 0x50, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x35, 0x05, 0x0d, 0x09, + 0xff, 0x05, 0x5f, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x5c, 0x56, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0x50, 0xff, + 0x00, 0xfa, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x03, 0x0d, 0x25, 0x15, + 0x05, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x54, 0x5c, 0x58, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xff, 0x05, 0xfa, 0x0f, 0xf5, 0x0f, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x42, 0x43, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xaf, 0xf0, 0x5f, + 0xf5, 0x0f, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x89, 0xc1, 0x43, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x7d, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0xff, 0xa0, 0xff, + 0xf0, 0xff, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x05, 0x09, 0x01, 0x83, + 0xaf, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xf8, 0x56, 0x55, 0x55, 0x55, 0xff, 0x00, 0xf5, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x0f, 0x35, 0xd5, 0xd5, 0xff, 0x05, 0xff, 0x05, + 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x00, 0xf0, 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x25, 0x05, 0x0d, 0xff, 0x5a, 0xaf, 0x00, 0x0f, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xe0, 0x58, 0x54, 0x56, 0x55, 0xf5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x3f, 0x55, 0x55, 0x55, + 0xff, 0x5f, 0xff, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0xc0, 0xc3, 0xc3, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xaf, 0x50, 0xff, + 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x81, 0x0d, 0x05, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0x54, 0x00, 0xff, 0x50, 0xff, 0xf0, 0xaf, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x0d, 0x81, 0xc3, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, 0xf5, 0x0f, 0xfa, 0x05, + 0xff, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x43, 0x72, 0x50, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x95, 0x00, 0x55, 0xa0, 0xff, 0xff, 0x5f, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x09, 0xc0, 0x58, 0x55, 0x00, 0xff, 0x5f, + 0xa5, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x5f, 0xc0, 0x0b, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0x55, 0xff, 0x00, 0xf5, 0x05, 0xf0, 0x0a, 0xf0, 0x0f, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x73, 0x61, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x0a, 0xff, 0x05, 0xff, 0x05, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x70, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, 0x09, 0x0d, 0x0d, 0xf5, + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x57, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0xf0, 0xff, 0xf5, 0xaf, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x83, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x95, 0xd5, 0xd5, 0xff, 0x00, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x70, 0x70, 0x70, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x0d, 0x05, 0x35, 0x00, 0x00, 0x05, 0x00, + 0x0a, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa0, + 0x00, 0xf0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x15, 0x35, + 0xff, 0x00, 0xaf, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x58, 0x5c, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xff, + 0xf0, 0xff, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x95, 0x05, 0x01, 0x82, + 0xff, 0xff, 0xff, 0xff, 0x5a, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x55, 0x0a, 0xf5, 0xff, 0xfa, 0xfa, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x36, 0x20, 0x02, 0x0d, 0x5f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x70, 0x70, 0x70, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, + 0x0f, 0xf5, 0xaf, 0xff, 0xff, 0x5f, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x34, 0x08, 0xc0, 0x58, 0xff, 0xff, 0xff, 0xff, 0x55, 0xf5, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x55, 0x05, 0x00, 0xaf, 0x00, + 0xff, 0x05, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x57, 0x58, 0x70, 0x40, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x00, 0xa0, 0x00, 0xfa, + 0xa0, 0xff, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x95, 0x25, 0x09, 0x82, + 0xff, 0x0a, 0xaf, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x58, 0x56, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x35, 0x35, 0x35, 0x0f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x5c, 0x5c, 0x5c, 0xf5, 0x5f, 0xfa, 0x0f, + 0xfa, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0x42, 0x42, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0xa0, 0x00, 0xf0, + 0x00, 0xf0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x95, 0x15, 0x15, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x54, 0x54, 0x00, 0xf5, 0x00, 0xff, 0x00, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x05, 0x05, 0x0d, 0x0f, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x57, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xaf, 0x50, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x8d, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0x0f, 0xa0, 0x5f, + 0xa0, 0x5f, 0xa0, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x49, 0xc9, 0xc9, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xd5, 0x05, 0xf0, 0xff, 0xf5, 0xaf, 0xfa, 0x5f, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x83, 0xc2, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x05, 0x25, 0x95, 0x05, 0x00, 0x0a, 0x00, + 0x5f, 0x00, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x57, 0x56, 0x5c, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xff, 0x5f, 0xf5, 0xff, 0xa0, 0xff, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0xc0, 0x03, 0x09, 0x35, 0x00, 0x00, 0x0a, 0x00, + 0xff, 0x5a, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x54, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf0, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x81, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0x95, 0xff, 0x05, 0xff, 0x05, + 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xa0, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x15, 0x95, 0xd5, 0x55, + 0x5f, 0x00, 0xff, 0x00, 0xff, 0x05, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x50, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0xf0, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x05, 0x0d, 0xc1, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0xd5, 0xd5, + 0xff, 0x0f, 0xff, 0x0a, 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x40, 0x60, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0xf5, 0x5f, 0xf0, 0xaf, 0xf0, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0x81, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x56, + 0x00, 0x50, 0x00, 0x50, 0x00, 0xa0, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0xd5, 0x95, 0x25, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x50, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x05, 0x05, 0x35, + 0x05, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x56, 0x54, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x95, 0xf5, 0x5f, 0xf5, 0x5f, + 0xfa, 0x5f, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc2, 0xc0, + 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x05, 0x05, 0x05, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf0, 0xaf, 0xf0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0x81, 0x01, 0x09, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0xa0, 0x0f, 0xf5, + 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x94, 0x34, 0x0c, 0x00, + 0xff, 0x0a, 0xaf, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x58, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x15, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x50, 0xaf, 0xa0, 0xaf, + 0xa0, 0xaf, 0xa0, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x8d, 0x89, 0x89, 0x89, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xaf, 0xa0, 0x5f, 0xa0, 0x5f, 0xf0, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x8d, 0xc9, 0xc9, 0xc1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0x5f, 0xa0, 0x0f, 0xf0, 0x0f, 0xf5, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0xc9, 0x49, 0x41, 0x63, 0x00, 0xff, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x05, 0xf5, 0x55, 0x55, 0xaf, 0x00, 0xff, 0x0f, + 0xf5, 0x5f, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x58, 0x40, 0xc3, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf5, + 0x00, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x35, 0x05, 0x0d, + 0xff, 0x5f, 0xaf, 0x05, 0x0f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0x78, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa5, 0xff, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x0b, 0xd5, 0x55, 0x55, 0xff, 0x0a, 0xff, 0xaf, 0xf0, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x80, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x56, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0xf0, 0xff, 0xa0, 0xff, + 0x50, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x09, 0x0d, 0x05, + 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x56, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf0, + 0x00, 0xfa, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x25, 0x0d, + 0xff, 0x00, 0xaf, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x58, 0x5c, 0x54, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xfa, 0x0f, 0xf0, 0x5f, 0xa0, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x42, 0xc1, 0x09, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0xf5, 0x0f, 0xfa, 0x0a, 0xff, 0x05, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x43, 0x62, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0x55, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0xfa, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x25, 0x95, 0x55, 0x55, + 0xff, 0x5a, 0xff, 0xff, 0xa5, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xe0, 0x00, 0xab, 0x55, 0xfa, 0xff, 0xff, 0x5a, 0x5a, 0x50, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x02, 0xe0, 0xde, 0x95, 0xff, 0x05, 0xff, 0x05, + 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x55, 0x55, 0x55, 0xff, 0xaf, 0xfa, 0xff, 0x50, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x80, 0x02, 0xad, 0x55, 0x55, 0xff, 0xff, 0xaf, + 0xaa, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0f, 0x80, 0x7a, 0x55, + 0xff, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0xc3, 0xc3, 0xc3, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, 0xf0, 0xaf, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x81, 0x83, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0xff, 0xff, 0xff, 0xa0, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x90, 0x54, 0x54, 0xaf, 0x00, 0xff, 0x05, 0xff, 0x0f, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x70, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x25, + 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x54, 0x54, 0xfa, 0x0f, 0xfa, 0x0f, 0xf5, 0x0f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x42, 0x42, 0x43, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0xf0, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x95, 0xd5, 0x55, 0x5f, 0x00, 0x5f, 0x00, + 0xaf, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x58, 0x50, + 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x05, 0x35, 0xd5, 0x00, 0x00, 0x5f, 0xf5, 0xff, 0xff, 0xaa, 0x5a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x3c, 0x00, 0xea, 0xfa, 0x5f, 0xaf, 0xff, + 0x05, 0xfa, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xc2, 0x08, 0x27, 0xd5, + 0x00, 0x00, 0x05, 0xa0, 0xff, 0xff, 0xaa, 0x5a, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x97, 0x00, 0xea, 0xff, 0x00, 0x5f, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x5c, 0x56, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x15, 0x95, + 0x5f, 0x00, 0xaf, 0x00, 0xff, 0x00, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x58, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xff, + 0x50, 0xff, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x05, 0x0d, 0x03, + 0x0a, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x56, 0x57, 0x57, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0xf5, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x35, 0xd5, 0x55, 0x55, 0xff, 0x05, 0xff, 0xff, 0xf5, 0xff, 0x00, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x00, 0x03, 0xf5, 0x00, 0x00, 0xaa, 0xfa, + 0xff, 0xff, 0xaa, 0xaa, 0xff, 0xff, 0x00, 0x00, 0x55, 0x2a, 0x00, 0xaa, + 0xf5, 0xff, 0xff, 0x5f, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xc0, 0x40, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xfa, + 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x05, 0x25, 0x35, 0x15, + 0x0a, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x54, 0x5c, 0x58, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfa, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x25, 0x05, 0x5f, 0x00, 0x0f, 0x00, + 0x0a, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x54, 0x56, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xff, 0x0f, 0xf5, 0xaf, + 0xa0, 0xff, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x40, 0x83, 0x09, 0x25, + 0x00, 0x00, 0x00, 0x00, 0xaf, 0xa5, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xb8, 0x00, 0x00, 0xfa, 0xa0, 0xff, 0xff, 0xff, 0xaf, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x09, 0x00, 0x38, 0x5f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, + 0x00, 0x05, 0x00, 0xaf, 0x50, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x75, 0x85, 0x0d, 0x35, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xf8, 0x00, 0x00, 0xf0, 0x00, 0xfa, + 0xf5, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x15, 0x25, 0x03, 0x80, + 0xff, 0x00, 0xaf, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x58, 0x54, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, + 0x5f, 0x00, 0xff, 0x05, 0xff, 0xaf, 0x5a, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x70, 0x80, 0x0e, 0x00, 0x00, 0x00, 0x50, 0x55, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x0f, 0x00, 0xfa, 0x5f, 0xff, 0x0f, + 0xff, 0x05, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc2, 0x40, 0x70, 0x5c, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0xa0, 0xff, 0x00, 0xfa, + 0x00, 0xf0, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x09, 0x25, 0x15, 0xd5, + 0x0a, 0x00, 0x5f, 0x00, 0xff, 0x00, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x5c, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xff, 0x50, 0xff, 0xa0, 0xff, 0xf0, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x0d, 0x09, 0xc1, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x57, 0x55, 0x55, 0xf0, 0xaf, 0xa0, 0xff, + 0x50, 0xff, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x81, 0x09, 0x0d, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0x56, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xfa, 0x0a, 0xf0, 0x5f, 0x50, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x62, 0xc1, 0x0d, 0x35, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xaf, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0xa0, 0xff, 0xf0, 0xff, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x09, 0x01, 0xc3, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xa0, 0xff, 0x00, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0xd5, 0x55, 0xaa, 0xfa, 0xff, 0xff, + 0xfa, 0xaf, 0xf5, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x82, 0x43, + 0xff, 0x5f, 0xff, 0x05, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0x70, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xff, 0xa5, 0xff, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x05, 0x0b, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0x00, 0xfa, 0x00, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x25, 0xd5, 0x55, 0x5f, 0x00, 0xff, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x50, 0x5c, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xff, 0x00, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x7f, 0x55, 0x55, 0x50, 0xff, 0x50, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0d, 0xfd, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x75, 0x05, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd7, 0x55, 0x55, 0x55, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x5a, 0xa5, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0b, 0x55, 0x55, 0x55, + 0xaf, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x78, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xb5, 0xa5, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x6b, 0x55, 0x55, 0x56, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, 0xff, 0xff, 0x00, 0x00, + 0xf5, 0x55, 0x55, 0x7f, 0x05, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd7, 0x55, 0x55, 0x55, 0xaa, 0x5a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xea, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x5f, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0xd5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x5f, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x15, 0x25, 0xfa, 0x0f, 0xff, 0x05, 0x5f, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x42, 0x70, 0x5c, 0x56, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x95, 0x55, 0x55, 0x5f, 0x00, 0xff, 0x00, 0xfa, 0x0a, 0xf0, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x50, 0x62, 0x81, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0xd5, + 0x0f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x25, 0x25, 0xd5, 0xf0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, 0xff, 0xff, 0x50, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x2d, 0x55, 0x55, + 0x5a, 0x55, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x00, 0xff, 0x55, 0xfa, 0xff, 0xff, 0x5a, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0xe0, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x35, 0xd5, 0x55, 0x55, + 0xaf, 0x00, 0xff, 0x0f, 0xa5, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x40, 0x6b, 0x55, 0x00, 0x50, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x35, 0x35, 0x55, 0xff, 0x0f, 0xff, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x40, 0x50, 0x57, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x0f, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x43, 0x69, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x55, 0x55, + 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xc0, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x95, 0x05, + 0x00, 0x00, 0x00, 0x00, 0xaa, 0x5a, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0xf5, 0x35, 0x35, 0x35, + 0x55, 0x05, 0xff, 0x0a, 0xff, 0x0f, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x7f, 0x60, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0x50, 0x55, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x15, 0x15, 0x15, 0xaf, 0x50, 0xaf, 0xfa, 0xff, 0xaf, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0xd8, 0x28, 0x80, 0x60, 0xff, 0xff, 0xff, 0xff, + 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x55, + 0x5f, 0x00, 0xff, 0x0a, 0xff, 0x5f, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x60, 0xc0, 0x01, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xff, 0xf0, 0xff, 0xf5, 0xaf, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x01, 0x83, 0xc3, 0xff, 0xaf, 0x5a, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x80, 0xfe, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0xfa, 0x0f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf0, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0x81, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x15, 0x15, 0x35, 0xff, 0x05, 0xff, 0x0a, 0xff, 0x0f, 0xff, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x60, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x25, 0x05, 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x54, 0x54, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xaf, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x8d, 0x75, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xaf, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x85, 0xd5, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x50, 0xaa, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xad, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x5a, 0x50, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xed, 0x8d, 0x00, 0x00, 0x00, 0x55, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xf5, 0x15, 0x95, 0x00, 0x00, 0x55, 0x00, + 0xff, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x5f, 0x50, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, + 0x00, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xf5, 0x05, 0x0d, + 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x50, 0xaa, + 0xff, 0xff, 0xff, 0x5a, 0xff, 0xff, 0x00, 0x00, 0x55, 0xad, 0x00, 0xe0, + 0x00, 0x00, 0xaa, 0x05, 0xff, 0xaf, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x7a, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x15, 0x15, 0x00, 0x00, 0x5a, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x5e, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x35, 0x05, 0x0d, 0x55, 0x00, 0xaf, 0x00, + 0xff, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x5f, 0x58, 0x50, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xaf, 0xf5, 0x0f, 0xf5, 0x0a, 0xf5, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x81, 0x43, 0x63, 0x63, 0x00, 0xf5, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x95, 0xd5, 0xd5, 0x0f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x5c, 0x5c, 0x58, + 0x00, 0x00, 0x00, 0xfa, 0x50, 0xff, 0xf0, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x25, 0x0d, 0xc1, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0xff, 0xff, 0xaf, 0xff, 0x5f, 0xff, 0x5f, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x2c, 0x00, 0x00, 0x05, 0x00, + 0x0a, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x35, 0x25, 0x05, 0xff, 0xff, 0xaf, 0xff, + 0x5f, 0xff, 0x5a, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x0e, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x05, 0x05, 0x25, 0x05, 0xa0, 0x0a, 0xa0, + 0x0f, 0xa0, 0x0f, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x97, 0x96, 0x94, 0x94, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x50, 0xff, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x05, 0xfa, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x75, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x58, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x05, 0x05, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x60, 0x60, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0xf0, 0xff, 0xa0, 0xff, + 0x50, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x09, 0x0d, 0x05, + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x57, 0x56, 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x05, 0x0d, 0x0d, 0xfa, 0x5f, 0xaa, 0xff, + 0x55, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc2, 0x0a, 0x0f, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x50, 0xff, 0x50, 0xff, 0xa0, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x09, 0x01, 0x0a, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x57, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0xfa, 0xf5, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x25, 0x03, 0x80, 0xaa, 0xaa, 0xff, 0xff, 0xaf, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xaa, 0x00, 0xa8, 0x55, 0x5a, 0x00, 0xff, 0x5f, + 0xff, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x5e, 0xc0, 0x00, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x56, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x25, 0x25, 0xa0, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x40, 0x40, 0x50, 0xaf, 0x50, 0xaf, 0x50, 0xaf, 0x50, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x8d, 0x8d, 0x8d, 0x8d, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0xff, 0x0a, 0xff, 0x0f, 0xfa, 0x5f, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x40, 0xc2, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0xf0, 0xff, 0xf5, 0x5f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x01, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x25, 0x25, 0x35, + 0xaf, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x5c, 0x5c, 0x5c, 0x00, 0xff, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x35, 0x35, 0x05, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5e, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xf0, 0xaf, + 0xf5, 0x5f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x09, 0x81, 0xc3, 0x40, + 0xfa, 0x0f, 0xf5, 0x5f, 0xf0, 0xaf, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x42, 0xc3, 0x81, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x0a, 0xf0, 0x0f, 0x50, 0xff, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x63, 0x41, 0x0d, 0x25, 0x00, 0x50, 0x00, 0xf0, + 0x55, 0xfa, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x15, 0x2f, 0x80, + 0x5f, 0x00, 0x5f, 0x00, 0x0a, 0xa0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x96, 0x35, 0xf5, 0x0a, 0xff, 0x00, 0x5f, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x63, 0x50, 0x5c, 0x56, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, 0x5f, 0xf5, 0x5f, 0xf0, + 0x5f, 0x50, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x1c, 0xdc, 0x5c, + 0x5f, 0x00, 0xff, 0x00, 0xff, 0x05, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x50, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0xf0, 0xff, + 0xf5, 0x5f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x01, 0xc3, 0x42, + 0x55, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0f, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0xf0, 0x00, 0xf0, + 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xff, + 0x00, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x25, 0x05, 0x05, 0x0d, + 0x0f, 0xa0, 0x0f, 0xa0, 0x0a, 0xa0, 0x0a, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x94, 0x94, 0x96, 0x96, 0xff, 0xff, 0xff, 0x0a, 0xff, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x60, 0x50, 0x50, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0xff, 0x5f, 0xf5, 0xaf, 0xf0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0x83, 0x01, 0x09, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x55, 0x55, 0x55, 0xfa, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc3, 0xc3, 0xc3, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5f, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x5f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, + 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x25, 0x35, 0x15, 0x0f, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x5c, 0x58, 0xa0, 0xaf, 0xf0, 0x5f, + 0xf5, 0x0f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x89, 0xc1, 0x43, 0x42, + 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x35, 0x35, 0x15, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x54, 0x54, 0x5c, 0xf0, 0xaf, 0xf5, 0x5f, + 0xf5, 0x0f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x81, 0xc3, 0x43, 0x42, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa0, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x35, 0x25, 0x05, 0xff, 0x05, 0xaf, 0x00, 0x5f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x58, 0x5c, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x15, 0xd5, 0x55, 0x55, 0xff, 0x00, 0xff, 0x0a, 0xff, 0x0f, 0xfa, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x60, 0x40, 0xc2, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0xa5, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0b, 0x09, 0x09, 0x09, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x7f, 0x55, 0x55, 0x55, 0x50, 0x5f, 0x50, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xcd, 0xfd, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x09, 0x05, 0x05, 0x00, 0x00, 0x05, 0x00, + 0x0a, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x54, + 0x00, 0x50, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x95, 0x15, 0x35, 0xff, 0x0a, 0xff, 0x05, 0xff, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x70, 0x50, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x95, 0x55, 0x55, 0xff, 0x00, 0xff, 0x55, 0xff, 0xff, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x50, 0xf0, 0x00, 0x03, 0xa0, 0xff, 0xff, 0x5f, + 0xff, 0x05, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x09, 0xc0, 0x70, 0x56, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa0, + 0x00, 0xf0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x15, 0x35, + 0xff, 0x05, 0xff, 0x00, 0xaf, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x50, 0x58, 0x5c, 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x05, 0x35, 0x15, 0x05, 0x00, 0x0f, 0x00, + 0x5f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x54, 0x5c, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5f, 0x55, 0x55, 0x55, 0x00, 0xff, 0xa0, 0x5f, 0xf5, 0x0f, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x05, 0xc9, 0x43, 0x70, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x55, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0xf5, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0xfa, 0x0f, 0xf5, 0x5f, 0xf0, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x42, 0xc3, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x50, + 0x00, 0xf0, 0x05, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x15, 0x37, + 0xff, 0x0a, 0xff, 0x05, 0xff, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x70, 0x50, 0x5c, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x15, 0x15, 0x15, 0xff, 0x00, 0xff, 0x0a, 0xff, 0xff, 0xff, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x60, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0xf5, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x3e, 0x00, + 0xa0, 0xff, 0xfa, 0xff, 0xff, 0x5f, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x02, 0xc0, 0x70, 0x05, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x97, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0xf0, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x95, 0xd5, 0x55, 0xaf, 0x00, 0xff, 0x50, + 0xff, 0x55, 0xff, 0xa5, 0xff, 0xff, 0x00, 0x00, 0x58, 0xd0, 0xf0, 0xb0, + 0xff, 0x05, 0xff, 0x05, 0xff, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x70, 0x50, 0x58, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x95, 0xd5, 0x55, 0x55, 0xaf, 0x00, 0xff, 0x50, + 0xff, 0x55, 0xfa, 0xa5, 0xff, 0xff, 0x00, 0x00, 0x58, 0xd0, 0xf0, 0xb2, + 0xff, 0x0a, 0xff, 0x05, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x70, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0x50, 0x05, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x0d, 0x0d, 0x0d, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x56, 0x56, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf0, + 0x00, 0xa0, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x35, 0x15, 0x95, 0xd5, + 0x5f, 0x00, 0xaf, 0x00, 0xff, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x58, 0x50, 0x70, 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x05, 0x0d, 0x09, 0x5f, 0x00, 0x0f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x54, 0x57, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xfa, 0x50, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x25, 0x0d, 0x01, 0xff, 0xff, 0xff, 0xfa, + 0x0a, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0x96, 0x55, + 0x0f, 0x00, 0xaf, 0x00, 0xff, 0x0a, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x58, 0x60, 0xc2, 0x00, 0x00, 0x00, 0xa5, 0x00, 0xfa, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x25, 0x05, 0x00, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0x56, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x95, 0x15, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5e, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x05, 0x0d, 0x01, 0x0f, 0x00, 0x0a, 0x00, 0xaf, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x56, 0xa8, 0x00, 0x00, 0xa0, 0x00, 0x50, + 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x95, 0xd5, 0xaa, 0x00, + 0xff, 0x00, 0xff, 0x05, 0xff, 0x0a, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xfa, 0x50, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x15, 0x25, 0x8d, 0xaf, 0x00, 0x0f, 0x50, + 0x05, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x58, 0xd4, 0x97, 0x95, + 0xff, 0x5a, 0xff, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xe0, 0x50, 0x5c, 0x5c, 0xf5, 0x5f, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0x05, 0x25, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x57, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0xff, 0x00, 0xfa, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x05, 0x25, 0x15, 0x95, + 0x0a, 0xfa, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x26, 0x0c, 0x00, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x56, 0x57, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0xa5, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xab, 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, + 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xfa, 0xfa, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x20, 0x02, 0x03, 0x03, 0x5f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x54, 0x56, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0xaa, 0xf5, 0xff, 0xf0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xa3, 0x03, 0x01, 0x09, 0xaf, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x5c, 0x5c, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x7d, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x05, 0x05, 0x05, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x56, 0x56, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xff, 0x0a, 0xfa, 0x0f, 0xf5, 0x5f, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x42, 0xc3, 0x01, 0xf0, 0xaf, 0xf5, 0x5f, + 0xfa, 0x0f, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x81, 0xc3, 0x42, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x05, 0x35, 0xd5, 0x05, 0xff, 0xaf, 0xff, + 0xff, 0xaf, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x07, 0x08, 0x80, 0xc0, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x15, 0x25, 0xaf, 0x00, 0xaf, 0x00, + 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x58, 0x58, 0x5c, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0xf5, 0xff, 0xfa, 0x0f, 0xff, 0x0f, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x03, 0x42, 0x40, 0x70, 0xaa, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x55, + 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xaa, 0x55, 0x55, 0x55, 0xfa, 0x5f, 0xf0, 0xff, 0xa0, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xc2, 0x01, 0x09, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0x5f, 0xf5, 0x05, + 0xa0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc1, 0x73, 0x59, 0x55, + 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0xd5, 0x55, 0x55, 0x5f, 0x00, 0xaf, 0x00, 0xff, 0x05, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x58, 0x70, 0x03, 0x00, 0xfa, 0x00, 0xff, + 0xa0, 0xaf, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x25, 0x05, 0x89, 0x40, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0x55, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0xf5, 0x55, 0x5f, 0x00, 0x5f, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5f, 0x55, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xff, 0x5f, 0xff, 0x0f, 0x55, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc0, 0x40, 0x7f, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0xfd, 0x55, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x55, 0x00, 0xf0, 0x00, 0xf0, + 0x00, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x95, 0x55, + 0xff, 0x00, 0xff, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x5a, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x95, 0xd5, 0x55, 0xff, 0x00, 0xff, 0x00, 0x55, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x5f, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0x50, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0xfd, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0x55, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0x7f, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x55, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0xf5, 0x55, 0x5f, 0x00, 0x5f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x57, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0xfd, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0xf5, 0x55, 0x55, 0x0a, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x57, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaf, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x83, 0x69, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x35, 0x95, 0x55, 0x5f, 0x00, 0xff, 0x00, 0xff, 0x0a, 0xff, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x50, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x15, 0x0d, 0xff, 0x0f, 0xff, 0x0a, 0xff, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x60, 0x50, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x00, 0xff, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x05, 0xd5, 0x55, 0xaf, 0x0a, 0xff, 0x0f, 0xaa, 0x0a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x68, 0x40, 0x6a, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0xff, + 0x00, 0xfa, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x05, 0x25, 0xf5, + 0xff, 0x05, 0xff, 0x00, 0x5f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x50, 0x5c, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x00, 0xff, 0x00, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x05, 0x95, 0x55, 0x0a, 0x00, 0xff, 0x55, 0xff, 0xff, 0x55, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x56, 0xf0, 0x00, 0xaf, 0x00, 0xf5, 0xa5, 0xff, + 0xff, 0xff, 0xaa, 0x05, 0xff, 0xff, 0x00, 0x00, 0x35, 0x0b, 0x00, 0x7a, + 0xff, 0xaf, 0xff, 0xff, 0x05, 0xff, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x80, 0x00, 0x07, 0xd5, 0x00, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x55, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x5c, 0x5f, 0x00, 0xff, 0x00, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0xb5, 0x55, 0x55, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0x55, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x15, 0xf5, 0x55, 0xff, 0x00, 0xaf, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x58, 0x5f, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xf5, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x35, 0xd5, 0x55, + 0x0f, 0x00, 0x5f, 0x00, 0x55, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x5c, 0x5f, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xf5, 0x50, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, 0xad, 0x55, 0x55, 0x5f, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x5e, 0x55, 0x55, 0x79, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x55, 0x55, 0x00, 0x00, 0x55, 0x05, + 0xff, 0x0f, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x55, 0x7f, 0x40, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x55, + 0x50, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xf5, 0x0d, 0x01, + 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x56, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x50, + 0x00, 0xa0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x95, 0x15, + 0x00, 0x00, 0x55, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x5f, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x55, 0x50, 0xaf, 0xa0, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xf5, 0x8d, 0xc9, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x00, 0xa5, 0xf5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xb5, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0xff, 0xff, 0x5a, 0xa5, 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xbe, + 0x00, 0x00, 0x05, 0x00, 0xff, 0x05, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x57, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, + 0x00, 0x00, 0x00, 0xa5, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xb5, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0x5a, 0xa5, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xbe, 0x00, 0x00, 0x05, 0x00, + 0xff, 0x0a, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x60, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x50, 0xff, 0x00, 0xfa, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0x0d, 0x25, 0x15, 0x05, 0x00, 0x0f, 0x00, + 0xaf, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x57, 0x54, 0x58, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf5, 0x50, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x35, 0x0d, 0x01, 0x55, 0x00, 0xaf, 0x00, + 0x0f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5f, 0x58, 0x54, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xfa, 0xf0, 0xff, 0xff, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x25, 0x01, 0x80, 0x55, 0x55, 0xff, 0xaf, + 0xff, 0x5f, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x80, 0xc0, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0x00, 0xfa, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x25, 0xd5, 0x55, + 0xaf, 0xaa, 0xff, 0xff, 0xa5, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xa8, 0x00, 0xab, 0x55, 0xff, 0xff, 0xff, 0x5f, 0x5a, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x5e, 0x55, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xf5, 0x35, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5f, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x50, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x50, 0x55, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xfd, 0x0d, 0x0d, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x55, 0xa0, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xf5, 0x09, 0x02, 0x00, 0x00, 0x55, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x5f, 0x56, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x09, 0x09, + 0x00, 0x00, 0x00, 0x50, 0x50, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x54, 0x54, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0xff, 0x5f, 0xff, 0x5f, 0xa0, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0x79, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x0d, 0x05, 0x35, 0x00, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0x54, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x95, 0x15, + 0xf5, 0xaf, 0xff, 0x0f, 0xff, 0x05, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x83, 0x40, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xf5, + 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xf5, 0x55, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x35, 0x35, 0x2f, 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x5a, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x56, 0xfe, 0xf0, 0x5f, 0xf0, 0x0f, + 0xf5, 0x0f, 0xfa, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xc1, 0x41, 0x43, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x05, 0x0d, 0x09, 0xff, 0x05, 0x5f, 0x00, + 0x0a, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x70, 0x5c, 0x56, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x05, 0x25, 0x35, 0x05, 0x00, 0x0f, 0x00, + 0x5f, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x54, 0x5c, 0x58, + 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x05, 0x0d, 0x09, 0xff, 0x05, 0x5f, 0x00, 0x0a, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x5c, 0x56, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x05, 0x35, 0x15, 0x0a, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x54, 0x5c, 0x58, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0xff, 0x0f, 0xfa, 0xaf, 0xf0, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x40, 0x82, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x05, 0xa0, 0x0f, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x97, 0x34, 0xf5, 0xff, 0xff, 0x5f, + 0xff, 0x05, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xc0, 0x70, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x35, 0x05, 0x0d, 0xff, 0x05, 0x5f, 0x00, + 0x0f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x70, 0x5c, 0x54, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x50, 0x55, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xfd, 0x0d, 0x0d, + 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0xaf, 0xaa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xff, 0x00, 0xa8, 0x00, 0x00, 0x55, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, 0xff, 0x0a, 0xff, 0x5f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x60, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x0d, 0x0d, 0x0d, + 0xaf, 0xaa, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xa8, 0x56, 0x56, 0x56, 0xaa, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xea, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x35, 0x05, 0x0d, 0xff, 0xaf, 0xff, 0xaf, + 0xff, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x80, 0x80, 0x80, 0x83, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x50, 0x00, 0xf5, 0x50, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x35, 0x0d, 0x01, 0xff, 0x0f, 0xff, 0x00, 0x5f, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x50, 0x5c, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0xff, 0x5a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xe0, 0x56, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x15, 0xd5, 0x55, 0x55, 0xff, 0x05, 0xff, 0x0a, + 0xfa, 0x5f, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x70, 0x60, 0xc2, 0x83, + 0x00, 0xfa, 0x00, 0xff, 0xa0, 0xff, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x05, 0x09, 0x81, 0x5f, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x54, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xff, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x05, 0xa5, 0x55, 0x55, 0xff, 0xff, 0xaa, 0xff, 0x50, 0xff, 0x50, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x8d, 0xff, 0xff, 0xaa, 0xaa, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x00, 0xaa, 0x55, 0xd5, + 0xff, 0xff, 0xff, 0xaa, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xa0, 0x50, 0x50, 0xaf, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x5e, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xaf, + 0xf5, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x01, 0x81, 0x83, 0x83, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5f, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xaf, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x81, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xf0, 0x00, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x15, 0xd5, 0x55, 0x5f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x80, + 0x5f, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x09, 0x09, 0x01, + 0x50, 0xfa, 0xf5, 0xff, 0xff, 0x5a, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x2d, 0x03, 0xe0, 0x5c, 0xff, 0x5a, 0xff, 0xff, 0x55, 0xff, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0xe0, 0x00, 0x0f, 0x15, 0x00, 0x00, 0x0a, 0x00, + 0x5f, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0x5c, 0x50, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x55, + 0xff, 0x0f, 0xfa, 0xaf, 0xa0, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x40, 0x82, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x56, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0xfa, 0x5f, 0xf5, 0x5f, 0x50, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x2c, 0x3c, 0xdc, 0x5c, 0x5f, 0x00, 0xff, 0x00, 0xff, 0x0a, 0xff, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x50, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x15, 0xf5, 0x5f, 0xff, 0x0a, + 0xff, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc3, 0x60, 0x50, 0x5c, + 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x05, 0x00, 0x05, 0xf0, 0x05, 0xfa, 0xa5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x17, 0x27, 0x0b, 0xff, 0x5f, 0xff, 0x0a, 0xaf, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc0, 0x60, 0x58, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0x03, 0x03, 0x83, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x00, 0x00, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x00, 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xff, 0x55, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x00, 0x00, 0x2f, 0x5f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x05, 0x25, 0x35, 0xfa, 0x5f, 0xff, 0x0a, 0xff, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc2, 0x60, 0x50, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xa9, 0xa0, 0x5f, 0xa0, 0x5f, + 0xf0, 0x0f, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, 0xc9, 0xc9, 0x41, 0x82, + 0x00, 0x50, 0x00, 0xa0, 0x00, 0xf0, 0xaa, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x95, 0x15, 0x2a, 0xaf, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xaf, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x5c, 0x5c, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, + 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x83, 0x83, 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaf, 0xf5, 0xaf, + 0xf0, 0xaf, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x83, 0x83, 0x81, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x50, 0xff, 0x50, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x0d, 0x0d, 0x55, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x15, + 0x55, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5f, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xf5, + 0x00, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x95, 0x35, 0x05, 0x09, + 0xff, 0xff, 0xff, 0xff, 0x5f, 0xff, 0x0a, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x36, 0x05, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x56, 0x5c, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0xf0, 0xaf, 0xf0, 0xaf, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x81, 0x81, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0xff, 0x05, 0xff, 0x0a, 0xff, 0x0f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x60, 0x40, 0x42, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x35, 0x35, 0x35, 0x0f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x5c, 0x5c, 0x5c, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0xf5, 0xff, 0x50, 0xff, + 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x03, 0x0d, 0x05, 0x35, + 0x00, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x56, 0x5c, 0x50, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x56, 0x56, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x50, 0xff, + 0xf0, 0xaf, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x25, 0x0d, 0x81, 0x42, + 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x57, 0x55, 0x55, 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0xff, 0xff, 0xff, 0xaa, 0xaf, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xa0, 0x58, 0x54, 0xff, 0x00, 0xff, 0x0a, + 0xfa, 0xaf, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x50, 0x60, 0x82, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0xa0, 0x05, 0xff, 0x5f, 0xff, 0x5f, 0xa0, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x79, 0xc0, 0xc0, 0x79, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, 0xaf, 0x00, 0xaf, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x58, 0x58, 0x58, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0x50, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xfd, 0x55, 0x55, + 0xff, 0xff, 0xfa, 0x5a, 0xfa, 0x05, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xe2, 0x72, 0x50, 0xff, 0xff, 0x55, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x2f, 0x25, 0x25, 0xff, 0xff, 0x5a, 0x55, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0x57, 0x57, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x09, 0x0d, 0x05, 0x00, 0x00, 0x05, 0x00, + 0x0a, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x35, 0x25, 0x05, 0x55, 0x00, 0xaf, 0x00, + 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5f, 0x58, 0x5c, 0x54, + 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x0d, 0x05, 0x25, 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x54, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x15, 0x15, 0x15, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x50, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x15, + 0xf5, 0xff, 0xff, 0x5f, 0xff, 0x0a, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xc0, 0x60, 0x70, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, 0xff, 0x0a, 0xff, 0x5f, + 0xf5, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x60, 0xc0, 0x03, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x56, 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x0d, 0x05, 0x25, 0x00, 0x00, 0x05, 0x00, + 0x0a, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xd5, 0x35, 0xff, 0x0f, 0xff, 0x0a, 0xff, 0x05, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x60, 0x70, 0x50, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, + 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x55, 0x55, 0x55, 0xff, 0x0a, 0xff, 0x5f, 0xf5, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x60, 0xc0, 0x03, 0x09, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf0, + 0x00, 0xf5, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x15, 0x35, 0xd5, + 0xff, 0x05, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x00, 0x00, 0xff, 0xf5, 0xaf, 0xff, 0xff, + 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, 0x83, 0x00, 0x00, 0x02, + 0x00, 0x00, 0xff, 0x0a, 0xff, 0x0a, 0x55, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x60, 0x60, 0x7f, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x50, 0xff, 0x00, 0xf5, 0x00, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x35, 0x95, 0x55, 0x0f, 0x00, 0xaf, 0x00, 0xff, 0x0a, 0xff, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x58, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0x50, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0xfd, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0xd5, + 0xaf, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x58, 0x58, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0xd5, 0xd5, 0xff, 0x00, 0xaf, 0x00, 0x5f, 0x00, 0x55, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x58, 0x5c, 0x5f, 0x00, 0xff, 0x50, 0xff, + 0x50, 0xaf, 0x50, 0x55, 0xff, 0xff, 0x00, 0x00, 0x05, 0x0d, 0x8d, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x35, 0xd5, 0x55, 0x55, + 0xff, 0x05, 0xff, 0xff, 0xf5, 0xff, 0x00, 0xa5, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xb5, 0x00, 0x00, 0x5a, 0xaa, 0xff, 0xff, 0xaa, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xae, 0x00, 0xaa, 0xf5, 0xff, 0xff, 0xaf, + 0xff, 0x05, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x80, 0x70, 0x57, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0xff, 0x0a, 0xff, 0xff, + 0xa0, 0xff, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x60, 0x00, 0x09, 0xd5, + 0x00, 0x00, 0x5a, 0xa5, 0xff, 0xff, 0xaa, 0xaa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xbe, 0x00, 0xaa, 0x00, 0xfa, 0xfa, 0xff, 0xff, 0xaf, 0x5a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x02, 0x80, 0x5e, 0xaf, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x58, 0x56, 0x55, 0x55, + 0x00, 0xfa, 0x50, 0xff, 0x50, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x0d, 0xfd, 0x55, 0x5f, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x54, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xff, 0x00, 0xf5, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x35, 0xd5, 0x55, 0x5f, 0x00, 0xff, 0x00, 0x55, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x50, 0x7f, 0x55, 0x00, 0xa0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x95, 0x55, 0x55, 0x55, + 0xff, 0x5f, 0xfa, 0xff, 0x50, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0x02, 0xad, 0x55, 0xa5, 0xff, 0xff, 0xff, 0xaa, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x0b, 0x00, 0x7a, 0x55, 0x5f, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x57, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xff, 0x50, 0xff, 0xa0, 0xff, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x0d, 0x09, 0x82, 0x0f, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x56, 0x57, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xf5, + 0x00, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x35, 0x95, 0x55, + 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0x55, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0xfd, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0x50, 0xff, + 0x00, 0xfa, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x03, 0x0d, 0x25, 0xd5, + 0x00, 0x00, 0x0f, 0x00, 0xaf, 0x00, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x54, 0x58, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xff, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x35, 0xf5, 0x55, 0x55, 0x5f, 0x00, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5f, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x35, + 0x00, 0x00, 0x00, 0x00, 0xa5, 0xaa, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x05, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xf5, 0x35, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5f, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x55, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xfd, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5f, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0xf5, 0xff, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xff, 0x03, 0x03, 0x00, 0x00, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0xaa, 0xff, 0xff, 0x00, 0x00, 0x55, 0xff, 0x00, 0xaa, + 0x00, 0x00, 0x55, 0x05, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x7f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5c, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xfa, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x25, 0x01, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0x5f, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xfc, 0x00, 0x00, 0x5a, 0x00, + 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x5e, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0xfd, 0x05, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x57, 0x00, 0x00, 0xff, + 0x00, 0xf5, 0xff, 0xff, 0xff, 0xff, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x5f, 0xff, 0x0f, 0xaf, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x58, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xf5, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x5f, 0x55, 0x55, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x7a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xff, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x55, 0x55, 0x7f, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0xf5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0x55, 0x55, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xb5, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0x5a, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xea, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0xf5, 0x25, 0x25, 0x25, + 0x05, 0xa0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x97, 0x14, 0x14, 0x14, 0x0a, 0x50, 0x5f, 0xa0, 0x5f, 0xa0, 0x0f, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0xd6, 0x9c, 0x9c, 0x94, 0x0a, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x5c, 0x5c, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xaa, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x55, + 0xff, 0xff, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x35, 0x55, 0x55, 0xaf, 0x00, 0xff, 0x0a, 0xff, 0x0f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x60, 0x40, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xf5, 0xff, 0xff, 0x5f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x03, 0xc0, 0x40, 0xaf, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf8, 0x55, 0x55, 0x55, 0xaa, 0xff, 0x00, 0xf5, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x35, 0xd5, 0x55, + 0x5f, 0x00, 0xff, 0x05, 0xff, 0x0a, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x70, 0x60, 0x40, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x55, + 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xff, 0x00, 0xff, 0xa0, 0xff, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x0a, 0x05, 0x09, 0x83, 0xaf, 0x00, 0x5f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x58, 0x5c, 0x57, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0xaf, 0xaa, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xa8, 0x57, 0x57, 0x57, 0xfa, 0xff, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0xd5, 0x55, 0x55, + 0xff, 0x0a, 0xff, 0x5f, 0xf5, 0xaf, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x60, 0xc0, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xfa, + 0x00, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x35, 0x25, 0x05, 0x09, + 0xff, 0x05, 0xff, 0x0a, 0xfa, 0x0f, 0xf0, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x60, 0x42, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, 0xff, 0x5f, 0xf5, 0xff, + 0xa0, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x03, 0x09, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0x05, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xd7, 0xd7, 0xfa, 0xaf, 0xff, 0x0a, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x82, 0x60, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x05, 0x25, 0x35, 0x0a, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x54, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xb5, 0x03, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x5a, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xff, 0xa0, 0xff, 0xf0, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x05, 0x09, 0x81, 0xff, 0xff, 0xff, 0x55, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0x57, 0x55, + 0xff, 0xaf, 0xf5, 0xff, 0x00, 0xfa, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x80, 0x03, 0x25, 0x15, 0x00, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x54, 0x5c, 0x50, 0x00, 0xf0, 0x00, 0xf0, + 0x00, 0xf0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x15, 0x35, + 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x5c, 0x5c, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0x05, 0xff, 0x05, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x25, 0xb5, 0x55, 0x55, 0xff, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xaa, 0x55, 0x55, 0xff, 0xff, 0xaa, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xaa, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0xff, 0x50, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x0a, 0x0d, 0x09, 0x0f, 0x50, 0x0f, 0x50, 0x05, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xd4, 0xd4, 0xd7, 0xd5, 0xff, 0x0a, 0xff, 0x0a, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xfa, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x15, 0x25, 0x05, 0xff, 0xaf, 0xff, 0x00, + 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0x50, 0x5c, 0x54, + 0x55, 0xff, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x0f, 0x95, 0x55, 0x55, 0xff, 0x00, 0xff, 0x0a, 0xff, 0x0f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x60, 0x40, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x14, 0x14, 0x14, 0x94, 0x0f, 0xa0, 0x0f, 0xa0, + 0x0a, 0xa0, 0x05, 0x50, 0xff, 0xff, 0x00, 0x00, 0x94, 0x94, 0x96, 0xd7, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xff, 0x0f, 0xff, 0x5f, 0xf5, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x40, 0xc0, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0xaf, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa5, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x6b, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf5, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x35, 0x05, 0xff, 0x0f, 0xff, 0x05, + 0xaf, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x40, 0x70, 0x58, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x5a, 0x55, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xa5, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xbf, 0xf0, 0xff, 0xf0, 0xaf, 0xfa, 0x5f, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x81, 0xc2, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, + 0xf0, 0x5f, 0xf5, 0x0f, 0xfa, 0x0a, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0xc1, 0x43, 0x62, 0x70, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x05, 0x25, 0x35, 0x00, 0x00, 0x05, 0x00, + 0x0a, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x54, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0xa0, 0xff, 0xf0, 0xff, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x09, 0x01, 0x82, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x05, 0x0d, 0x83, 0x0f, 0x00, 0x0a, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x56, 0x57, 0x55, + 0x00, 0xa0, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x35, 0x25, 0x25, 0xff, 0xaf, 0xff, 0x00, 0x5f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x80, 0x50, 0x5c, 0x54, 0x55, 0xff, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0f, 0x95, 0x55, 0x55, + 0xff, 0x00, 0xff, 0x0a, 0xff, 0x0f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x60, 0x40, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0x50, 0x05, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc3, 0x7d, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x15, 0x35, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x5c, + 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x35, 0x35, 0x35, 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0x5f, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x54, 0xac, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xaf, 0x5a, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0xf0, 0x5f, 0xfa, 0x0f, 0xff, 0x0a, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc1, 0x42, 0x60, 0x50, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x0d, 0x0d, 0x0d, + 0x0a, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x56, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0x83, 0x83, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x5a, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xe9, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x95, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x56, 0x5c, + 0xf5, 0x5f, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0x03, 0x03, 0x83, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xff, 0x00, 0xf5, 0xfa, 0xff, + 0xff, 0xff, 0xfa, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x35, 0x02, 0x00, 0x82, + 0xff, 0x05, 0xaf, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x58, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x25, 0xd5, 0x55, 0x55, + 0xff, 0xff, 0xfa, 0xff, 0x00, 0xa5, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x02, 0xb5, 0x55, 0x5a, 0x00, 0xff, 0xaf, 0xff, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x5e, 0x80, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5c, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x15, 0xf0, 0xff, 0xf5, 0xaf, + 0xff, 0x0f, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x01, 0x83, 0x40, 0x70, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0xff, 0xff, 0xff, 0xff, 0x5a, 0x55, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x57, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x55, 0x5f, 0x00, 0xff, 0x05, + 0xff, 0x5f, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x70, 0xc0, 0x01, + 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0xd5, 0x55, 0x55, 0xff, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x5f, 0x55, 0x55, 0x00, 0xf0, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x15, 0xd5, 0x55, 0x55, + 0x5f, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5f, 0x55, 0x55, 0xf5, 0xaf, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x83, 0x03, 0x03, 0xc3, 0x55, 0x55, 0xff, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xaa, 0x55, + 0x55, 0xfa, 0xff, 0xff, 0xaa, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x2f, 0x00, 0xea, 0x55, 0xff, 0x0f, 0xaf, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x58, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xfa, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x15, 0x25, 0x09, 0xff, 0x0f, 0xff, 0x05, + 0x5f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x40, 0x70, 0x5c, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x35, 0x95, 0x0f, 0x00, 0x0f, 0x00, + 0xaf, 0x00, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x58, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xd5, 0x35, 0xf5, 0x5f, 0xfa, 0x0f, 0xff, 0x0a, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0x42, 0x60, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0x50, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x01, 0x01, 0xfd, 0x50, 0xff, 0xff, 0xaf, + 0xff, 0x5f, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x80, 0xc0, 0x03, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x55, 0x55, 0x56, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xa5, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0xb5, 0x55, 0xff, 0xff, 0xff, 0xaa, + 0x0a, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xa0, 0x56, 0x55, + 0xff, 0xff, 0xaa, 0xff, 0x00, 0xf5, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x0a, 0x35, 0xd5, 0x0a, 0x00, 0xaf, 0x00, 0xff, 0x05, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x58, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x35, 0x05, 0x0d, 0xaf, 0x00, 0x5f, 0x00, + 0x0f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x58, 0x5c, 0x54, 0x57, + 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x54, 0x54, 0xf0, 0xaf, 0xf0, 0x5f, 0xf5, 0x5f, 0xfa, 0x0f, + 0xff, 0xff, 0x00, 0x00, 0x81, 0xc1, 0xc3, 0x42, 0x00, 0xfa, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x25, 0x95, 0x55, 0x55, + 0x5f, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x56, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0x50, 0xff, 0x00, 0xfa, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x0d, 0x25, 0x35, 0x05, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x56, 0x5c, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x95, 0x95, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x95, 0x55, 0x55, 0x55, + 0xff, 0x0a, 0xff, 0x0f, 0xfa, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x40, 0xc2, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x50, 0xff, + 0xf0, 0xff, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x25, 0x0d, 0x01, 0xc2, + 0xaf, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x54, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0xa5, 0x5a, 0xf0, 0xff, + 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0xeb, 0x01, 0x05, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x56, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf5, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x35, 0x0d, 0xfa, 0xaf, 0xff, 0x0a, + 0xaf, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x82, 0x60, 0x58, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x95, 0x35, + 0xf5, 0xff, 0xf5, 0xff, 0xff, 0x5a, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0x03, 0xe0, 0x58, 0xff, 0xff, 0xff, 0xff, 0x55, 0xfa, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xd5, 0x0a, 0x00, 0x0a, 0x00, + 0xff, 0x00, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x56, 0x56, 0x50, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x7d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x95, 0xd5, 0xd5, 0xaf, 0x00, 0xff, 0x00, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x50, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xf5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xff, 0x0f, 0xfa, 0x5f, + 0xfa, 0x5f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x40, 0xc2, 0xc2, 0x42, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, 0xf0, 0xff, 0xf5, 0x5f, + 0xfa, 0x0f, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x01, 0xc3, 0x42, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x0a, 0xff, 0x0a, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x05, 0x05, 0x25, 0x05, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x56, 0x56, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0xaf, 0xf5, 0x5f, 0xf5, 0x5f, 0xfa, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc2, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0x50, 0xff, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0x0d, 0x25, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x56, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xff, 0x00, 0xff, 0xa0, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x05, 0x09, 0x02, 0x0f, 0x50, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xd4, 0x54, 0x57, 0x55, 0xff, 0x05, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x70, 0x5f, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, + 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x55, 0x55, 0x55, 0xff, 0x05, 0xff, 0x0f, + 0xfa, 0x5f, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x70, 0x40, 0xc2, 0x01, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xff, 0x0a, 0xfa, 0xaf, 0xa0, 0xff, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x82, 0x09, 0x35, 0x00, 0x00, 0x05, 0x00, + 0xff, 0x5a, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0xa0, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x95, 0x0a, 0x00, 0xff, 0x0f, 0xff, 0x0a, 0xaf, 0x00, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x60, 0x58, 0x56, 0x00, 0x50, 0x00, 0xf0, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x15, 0x25, 0x25, + 0xff, 0x0a, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x70, 0x70, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xaf, 0xff, 0x0a, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x80, 0x60, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5a, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x55, 0xf5, 0xaf, 0xff, 0xaf, + 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x83, 0x80, 0x00, 0xff, + 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xaa, 0x00, 0xff, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xff, 0x00, 0x00, 0xaa, 0x00, + 0xff, 0x05, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x5a, 0x70, 0x5f, + 0x00, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x0d, 0x0d, 0x0d, 0x0f, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf5, 0xaf, 0xf0, 0xaf, 0xf5, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0x83, 0x81, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0xaf, + 0xf0, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc3, 0x83, 0x01, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0xf0, 0x00, 0x50, 0x00, 0xa0, 0x00, 0xfa, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x95, 0x25, 0x03, 0xff, 0x05, 0xff, 0x00, + 0xaf, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x70, 0x50, 0x58, 0x54, + 0x50, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x05, 0x35, 0x00, 0x00, 0x05, 0x00, 0x5f, 0x00, 0xff, 0x5a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x5c, 0xe0, 0x00, 0x00, 0x00, 0x50, + 0x00, 0xf0, 0xa5, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x15, 0x0b, + 0xff, 0x0f, 0xff, 0x0a, 0xff, 0x05, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x40, 0x60, 0x70, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xf0, + 0x00, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x95, 0x15, 0x25, 0x05, + 0xff, 0x00, 0xaf, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x58, 0x5c, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf0, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x35, 0x15, 0xd5, 0x55, + 0x5f, 0x00, 0xff, 0x00, 0xff, 0xaf, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x50, 0x80, 0x03, 0x00, 0x00, 0x00, 0xa0, 0x55, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x0f, 0x00, 0xff, 0x0f, 0xff, 0x05, + 0xaf, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x40, 0x70, 0x58, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0xff, 0xaf, 0xfa, 0xff, + 0x00, 0xa5, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0x02, 0xb5, 0x55, + 0x55, 0xfa, 0xff, 0xff, 0xaa, 0x5a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x2f, 0x00, 0xea, 0x55, 0xff, 0x0f, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x58, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xff, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfd, 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x0d, + 0x55, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xaf, 0x55, 0x55, 0x57, 0xaa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x7a, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x42, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xf5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x50, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0xad, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0x55, 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0xfa, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5f, 0x55, 0x55, 0x55, 0x50, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfd, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x5b, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x6b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x25, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xaa, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x55, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x7f, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xfd, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf0, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x25, 0x15, 0x55, 0x0f, 0x00, 0xaf, 0x00, + 0xff, 0xaf, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, 0x54, 0x58, 0x80, 0x02, + 0x00, 0x00, 0x00, 0x50, 0x55, 0xfa, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x2f, 0x00, 0xf5, 0x5f, 0xff, 0x0f, 0xff, 0x05, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0x40, 0x70, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x55, 0x55, 0x55, 0xff, 0xff, 0x55, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xaf, 0x55, 0x55, 0xff, 0xaf, 0x5a, 0x05, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0x7e, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0x50, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xad, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0x05, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x7a, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0xff, 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0xfd, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xff, 0x0a, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x7f, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x57, 0xaa, 0x5a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xea, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x25, 0x03, 0x00, 0x00, 0x50, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x56, 0x50, + 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0xff, 0xff, 0xaf, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x70, 0x70, 0xff, 0xff, 0xaa, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xaa, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xaa, 0x55, 0x55, 0x5f, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x0a, 0xff, 0x0a, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, + 0x00, 0xff, 0x00, 0xfa, 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x25, 0x35, 0x15, 0x0f, 0x00, 0x0f, 0x00, 0x5f, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x5c, 0x50, 0x00, 0x00, 0x00, 0x50, + 0x00, 0xa0, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x95, 0x15, + 0xff, 0x0a, 0xff, 0x05, 0xff, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x70, 0x50, 0x58, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf5, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x35, 0x25, 0xfa, 0xff, 0xff, 0xaf, + 0xaf, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x80, 0x58, 0x54, + 0xff, 0xff, 0xa5, 0xff, 0x00, 0xf5, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x0b, 0x35, 0x95, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0x00, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x5c, 0x50, 0x70, 0x00, 0x00, 0x00, 0x50, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x0d, 0x0d, + 0x00, 0xf5, 0xfa, 0xff, 0xff, 0xff, 0x5f, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x02, 0x00, 0x9c, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, 0xfa, 0x5f, 0xfa, 0x5f, + 0x50, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc2, 0x5d, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, 0xa0, 0xff, 0xf5, 0xaf, + 0xff, 0x0f, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x09, 0x83, 0x40, 0x70, + 0x5f, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xbc, 0x55, 0x55, 0x55, 0xff, 0x5f, 0xf5, 0xff, 0x50, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xc0, 0x03, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x54, + 0xf5, 0xff, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xc3, 0xc3, 0xc3, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x55, 0x55, + 0xaa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x7a, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xb5, 0x55, 0x55, 0xd5, 0xaa, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xea, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xf5, 0xa0, 0xff, 0xfa, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x35, 0x09, 0x82, 0x50, 0x05, 0xff, 0xff, + 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x7d, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x5a, 0x00, 0xff, 0x0a, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x5e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x15, 0x05, + 0x00, 0x50, 0xfa, 0xff, 0xff, 0xff, 0xaf, 0x55, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x02, 0x00, 0xf8, 0x00, 0x00, 0xff, 0x0a, 0xff, 0xff, 0x55, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x95, 0x00, 0x00, 0x50, 0xff, 0xfa, 0xff, 0xff, 0x5a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x0d, 0x02, 0xe0, 0x05, 0x00, 0xff, 0xaf, + 0xff, 0xff, 0x55, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x57, 0x80, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x54, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xaf, 0xf0, 0xaf, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x81, 0x81, 0x01, 0x01, 0x50, 0xff, 0xfa, 0xff, 0xaf, 0x55, 0x0a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x02, 0xf8, 0x56, 0xff, 0x5f, 0xff, 0xff, + 0x55, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x00, 0x0f, 0x35, + 0x00, 0x50, 0x0a, 0xfa, 0xff, 0xaf, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x26, 0x80, 0x60, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x55, 0xaf, 0x00, 0xff, 0x0a, + 0xff, 0x5f, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x58, 0x60, 0xc0, 0x81, + 0x00, 0x50, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x95, 0x95, 0x55, 0xff, 0x5f, 0xff, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc0, 0x50, 0x5e, 0x55, 0x00, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x55, + 0xff, 0x0f, 0xfa, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x40, 0xc2, 0xc3, 0xc3, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x05, 0xff, 0x05, + 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x95, 0xd5, 0x55, 0x55, 0xff, 0x00, 0xff, 0x05, + 0xff, 0x0f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x50, 0x70, 0x40, 0x42, + 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x25, 0x05, 0x0d, 0x5f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x54, 0x56, 0x57, 0x00, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x55, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x56, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, 0x00, 0xa0, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0x95, 0x15, 0xff, 0x05, 0xff, 0x05, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x50, 0x50, + 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x7d, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0x00, 0x00, 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xc2, 0xc2, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x25, 0x35, 0x35, 0x35, + 0x0f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x5c, 0x5c, 0x5c, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf5, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x95, 0x35, 0x05, 0xa5, 0xff, 0xff, 0xff, 0xff, 0x55, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x0b, 0x00, 0xf0, 0x54, 0xff, 0x5f, 0xff, 0xff, + 0x55, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x00, 0x0f, 0x15, + 0x00, 0x00, 0x0a, 0x00, 0xaf, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x56, 0x58, 0x50, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x15, 0x35, 0x35, 0xff, 0x0a, 0xff, 0x00, + 0xaf, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x60, 0x50, 0x58, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x0d, 0x05, 0x25, 0x00, 0x00, 0x0a, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0x54, 0x54, + 0x50, 0xff, 0xf0, 0xff, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x01, 0xc3, 0xc3, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xa0, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x35, 0x95, 0xd5, 0x55, + 0xaf, 0x00, 0xff, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x50, 0x5a, 0x55, 0x00, 0xf5, 0x00, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x05, 0x0d, 0x0d, 0xaf, 0x00, 0x0f, 0x00, + 0x05, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0x58, 0x54, 0x57, 0xff, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0xff, 0xff, 0x05, 0xff, 0x0f, 0xfa, 0x0f, 0xfa, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x40, 0x42, 0xc2, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x95, 0x95, 0x95, 0xff, 0x05, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x95, 0x00, 0x50, 0x50, 0xff, + 0xff, 0xff, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x0d, 0x00, 0x70, + 0x55, 0x55, 0xff, 0xff, 0x5a, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x00, 0xfe, 0x55, 0xfa, 0x5f, 0xff, 0x5f, 0xfa, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc0, 0xc2, 0xc3, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0xff, 0x05, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x80, 0x00, 0x80, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0xaa, 0xaa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xaa, 0x00, 0xaa, 0x00, 0x00, 0xaa, 0x5a, + 0xff, 0xaf, 0xaa, 0x5a, 0xff, 0xff, 0x00, 0x00, 0x55, 0xea, 0x80, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf5, 0x5f, 0xf0, 0xff, 0x50, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0x01, 0x0d, 0x05, 0xa0, 0xff, 0xf0, 0xaf, 0xf5, 0x5f, 0xff, 0x0f, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x81, 0xc3, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x95, 0x00, 0xff, 0xf0, 0xff, + 0xfa, 0xaf, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x05, 0x01, 0x82, 0x60, + 0x5f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, + 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x50, 0x50, 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc2, 0xc2, 0xc2, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xff, 0x0f, 0xfa, 0x5f, 0xf0, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x40, 0xc2, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0x55, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xfe, 0x00, + 0x00, 0xfa, 0xa0, 0xff, 0xfa, 0xff, 0xaf, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x09, 0x02, 0x38, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0x54, 0xf5, 0xff, 0xf5, 0xff, + 0xf5, 0xaf, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x03, 0x03, 0x83, 0xc3, + 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x55, 0x0f, 0x00, 0x0f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x57, 0x55, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x05, 0x35, 0xd5, 0x0a, 0x00, 0x0f, 0x00, + 0xff, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x56, 0x54, 0x70, 0x00, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x05, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x78, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x35, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x35, 0x35, 0x35, 0x25, + 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x5c, 0x5c, 0x54, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x57, 0x57, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0x5f, 0xff, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x00, 0xf0, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x15, 0x35, 0x35, 0x15, + 0xaf, 0x00, 0x5f, 0x00, 0xaf, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x5c, 0x58, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x95, 0xf5, 0x5f, 0xf5, 0x5f, + 0xfa, 0x5f, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0xc2, 0xc0, + 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xfd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x0a, 0xff, 0x0a, + 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xff, 0x00, 0xf5, 0x00, 0xf0, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x35, 0x15, 0x15, 0xff, 0x0a, 0xff, 0x05, + 0xff, 0x00, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x60, 0x70, 0x50, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xf5, + 0x00, 0xf5, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x15, 0x35, 0x35, 0xd5, + 0xff, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x5c, 0x5c, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, 0xfa, 0x5f, 0xfa, 0x5f, + 0xfa, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc2, 0xc2, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x55, 0x55, 0x55, 0x05, 0xfa, 0x00, 0xff, 0x00, 0xff, 0xa0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x27, 0x05, 0x05, 0x09, 0x0f, 0x00, 0x0a, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x56, 0x57, 0x55, + 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x55, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xfd, + 0xa5, 0xff, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x0b, 0xd5, 0x55, 0x55, 0xff, 0xff, 0xa5, 0xff, 0x00, 0xf0, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x0b, 0x15, 0xd5, 0x05, 0x00, 0xaf, 0x00, + 0xff, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x57, 0x58, 0x50, 0x70, + 0x00, 0xf0, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x95, 0xd5, 0x55, 0xaf, 0x00, 0xff, 0x05, 0xff, 0x0f, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x70, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0xa5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xbe, + 0x00, 0xff, 0x50, 0xff, 0xf5, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x0d, 0x03, 0x40, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x57, 0x55, 0x55, 0xf0, 0xaf, 0xf0, 0xff, + 0x50, 0xff, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x81, 0x01, 0x0d, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0x5a, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x56, 0xe0, 0x00, 0x50, 0x00, 0xa0, 0x00, 0xfa, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0x95, 0x25, 0x03, 0xaa, 0x00, 0xff, 0x00, + 0x5f, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5a, 0x50, 0x5c, 0x56, + 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x05, 0x35, 0x95, 0x0a, 0x00, 0x5f, 0x00, 0xff, 0x00, 0xff, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x5c, 0x50, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x2f, + 0x00, 0x00, 0x50, 0x00, 0xfa, 0x0a, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x5d, 0x62, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, + 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0xff, 0xaf, 0xfa, 0xff, 0x50, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x80, 0x02, 0xad, 0x55, 0xaa, 0xff, 0xff, 0xaf, + 0xaa, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x80, 0x7a, 0x55, + 0xff, 0xaf, 0xf0, 0xff, 0x50, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x80, 0x01, 0xfd, 0x55, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, 0xff, 0x05, 0xff, 0x05, + 0xff, 0x05, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xf0, 0xaf, 0xf0, 0xff, 0xa0, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x81, 0x01, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0x5a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x56, 0xe0, 0x00, 0x50, 0x00, 0xa0, + 0x00, 0xfa, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x95, 0x25, 0x02, + 0xff, 0x0a, 0xff, 0x05, 0xff, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x60, 0x70, 0x50, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xf5, 0x00, 0xf5, 0x00, 0xfa, + 0x00, 0xff, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, 0x35, 0x25, 0x05, 0x03, + 0x5f, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0x54, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xd5, 0x25, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x5f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0xc2, 0xc2, 0xc2, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0xb5, 0x35, 0x00, 0x00, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x35, 0x00, 0x80, 0xfa, 0x5f, 0xff, 0x0a, + 0xaf, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0xc2, 0x60, 0x58, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, 0xff, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xc3, 0xc3, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x05, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x70, 0x70, 0x50, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0x0d, + 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x0f, 0xff, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x40, 0x40, + 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x0d, 0x05, 0x35, 0xd5, 0x05, 0x00, 0x5f, 0x00, 0xff, 0x5a, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x5c, 0xe0, 0x00, 0x00, 0x50, 0x00, 0xa0, + 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x95, 0x0b, 0x00, + 0xff, 0x05, 0xff, 0x00, 0xaf, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x50, 0x58, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0d, 0xd5, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xaa, 0x55, 0x55, 0xff, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x55, 0x55, 0x55, 0xff, 0xff, 0x50, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xad, 0x55, 0x55, 0xff, 0xaf, 0x5a, 0x05, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0x7e, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0x00, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xb5, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0x5a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xea, 0x55, 0x55, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x5c, 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x42, + 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x5f, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x57, + 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfd, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x25, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xa5, 0x5a, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xb6, 0x0e, + 0x00, 0x00, 0x50, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x56, 0x58, 0x00, 0x50, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0xd5, 0x55, 0x55, + 0xff, 0x05, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x7f, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x55, 0x55, 0x55, 0xff, 0xff, 0x50, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xad, 0x55, 0x55, + 0xff, 0xff, 0xaa, 0x05, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x7a, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x55, 0x55, + 0xff, 0x5f, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0x70, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x95, 0x55, 0x55, 0x5f, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5c, 0x56, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x95, 0xd5, 0x55, 0x55, + 0xff, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x5f, 0x55, 0x55, 0xfa, 0x5f, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xc2, 0x7f, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x55, 0x55, 0x6b, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x5f, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xc3, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x55, 0x55, 0xd5, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xff, 0x05, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x70, 0x55, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x55, 0x55, 0x05, + 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfd, 0x55, 0x55, 0x5c, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0xc0, + 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x7f, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x0d, 0x50, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xad, 0x55, 0x55, 0x00, + 0xaa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x7a, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x50, 0xff, + 0x50, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x0d, 0xfd, 0x55, + 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0xff, 0x50, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0d, 0xff, 0x00, 0xff, 0x00, + 0xaf, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x58, 0x56, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, + 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x35, + 0x00, 0x00, 0x00, 0xa5, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xb5, 0x0b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xf0, 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x95, 0xd5, 0x55, 0xaf, 0x00, 0xff, 0x00, 0xff, 0x05, 0xff, 0x0a, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x50, 0x70, 0x60, 0x00, 0x00, 0x00, 0x50, + 0x00, 0x50, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0xd5, 0x15, + 0xff, 0x0f, 0xff, 0x5f, 0xff, 0xaf, 0xaf, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x40, 0xc0, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0xa0, 0xff, + 0xf0, 0x5f, 0xf5, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x09, 0xc1, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, + 0xff, 0x5f, 0xaf, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xc0, 0x58, 0x54, 0x54, 0x55, 0xf5, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x3f, 0xd5, 0x55, 0x55, 0xff, 0x05, 0xff, 0x0a, + 0xff, 0x0f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x70, 0x60, 0x40, 0x42, + 0x00, 0x00, 0xf0, 0x05, 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x71, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0x5a, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x56, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x50, 0xaf, + 0x50, 0xaf, 0x50, 0xaf, 0xff, 0xff, 0x00, 0x00, 0xfd, 0x8d, 0x8d, 0x8d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x95, 0x95, 0x55, 0x55, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, + 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x15, 0x25, + 0x50, 0xaa, 0xff, 0xff, 0xff, 0xfa, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xad, 0x00, 0x20, 0x5c, 0x05, 0x00, 0xff, 0x05, 0xff, 0x5f, 0xf5, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x70, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x50, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd6, + 0x50, 0x05, 0xf5, 0x0f, 0xf5, 0x0f, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x7d, 0x43, 0x43, 0x70, 0x00, 0x55, 0x00, 0xff, 0x00, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf5, 0x05, 0xa5, 0x55, 0x55, 0x55, 0xff, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xaa, 0x55, + 0x55, 0x55, 0xff, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x00, 0xaa, 0x55, 0x55, 0x55, 0xff, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xfa, 0x5f, 0xfa, 0x5f, + 0xfa, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc2, 0xc2, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xaf, 0xa0, 0xff, + 0x50, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x81, 0x09, 0x0d, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x57, 0x56, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x15, 0x35, 0x25, 0xff, 0x00, 0xaf, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x58, 0x54, 0x54, + 0x00, 0xf5, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x95, 0x55, 0x55, 0xff, 0x00, 0xff, 0x05, 0xff, 0x0f, 0xf5, 0xaf, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x70, 0x40, 0x83, 0x00, 0x50, 0x00, 0xf5, + 0x00, 0xfa, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x35, 0x25, 0x0d, + 0xff, 0x05, 0xff, 0x00, 0x5f, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x70, 0x50, 0x5c, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x50, 0xff, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0d, 0xf5, 0x55, 0x55, + 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xff, 0x55, 0x55, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf5, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x95, 0x35, 0xf0, 0xff, 0xff, 0x5f, + 0xff, 0x05, 0xaf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, + 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0xf5, + 0xfa, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x55, 0x35, 0x02, 0x80, + 0xf5, 0xff, 0xff, 0xff, 0xaf, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0x00, 0x78, 0x55, 0xff, 0x5a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xe0, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xfa, 0x0f, 0xf5, 0x0f, + 0xf0, 0x5f, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x42, 0x43, 0xc1, 0x81, + 0x00, 0xf0, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x15, 0x35, 0x25, 0x05, 0x0f, 0xff, 0x0a, 0xfa, 0x05, 0xf5, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x37, 0x15, 0x05, 0x00, 0x0a, 0x00, + 0x0f, 0x00, 0x5f, 0x50, 0xff, 0xff, 0x00, 0x00, 0x57, 0x56, 0x54, 0xdc, + 0xf5, 0x0f, 0xfa, 0x0a, 0xff, 0x05, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x43, 0x62, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xfa, 0x0f, 0xfa, 0x0f, 0xfa, 0x0f, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x42, 0x42, 0x42, 0x42, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xb5, 0x55, 0x55, 0x55, 0xff, 0xff, 0x50, 0xff, + 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0d, 0xd5, 0x55, + 0x5f, 0x00, 0xff, 0x5f, 0xfa, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x5c, 0xc0, 0x02, 0x35, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x58, 0x50, 0xf0, 0x05, 0xf5, 0xff, + 0x50, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x71, 0x03, 0x0d, 0x55, + 0x50, 0xaf, 0x5a, 0xaf, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x8d, 0x8e, 0x00, 0x03, 0x00, 0xa5, 0xf5, 0xff, 0xff, 0xaf, 0x5a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xb5, 0x03, 0x80, 0x5e, 0x05, 0x00, 0x0a, 0x00, + 0x05, 0x00, 0x00, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x57, 0x56, 0x57, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x00, + 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x05, 0x55, 0x55, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x56, 0x57, 0x55, 0x55, 0x00, 0xff, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x95, 0x55, 0x55, + 0xff, 0xff, 0xff, 0xff, 0x50, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x7d, 0x55, 0xaf, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x50, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xd5, 0x25, 0x25, 0x00, 0x00, 0x55, 0x55, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0xff, 0x00, 0x00, + 0xfa, 0x5f, 0xfa, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xc2, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0xff, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x57, 0x5c, 0x5c, + 0x00, 0xf5, 0x00, 0xf0, 0x00, 0xa0, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x35, 0x15, 0x95, 0xd5, 0x0f, 0x00, 0x5f, 0x00, 0xaf, 0x00, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x54, 0x5c, 0x58, 0x50, 0x00, 0xff, 0x50, 0xff, + 0xa0, 0xaf, 0xf0, 0x5f, 0xff, 0xff, 0x00, 0x00, 0x05, 0x0d, 0x89, 0xc1, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa0, 0xff, 0x00, 0xff, + 0x00, 0xf5, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x09, 0x05, 0x35, 0x15, + 0xf5, 0xff, 0xff, 0x5f, 0xff, 0x0a, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xc0, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, 0x00, 0xff, 0xf0, 0xff, + 0xfa, 0x5f, 0xff, 0x0a, 0xff, 0xff, 0x00, 0x00, 0x05, 0x01, 0xc2, 0x60, + 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, + 0xff, 0xff, 0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, + 0xff, 0xff, 0x50, 0xff, 0x00, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x0d, 0xd5, 0x55, 0x5a, 0x00, 0xff, 0x5f, 0xff, 0xff, 0x50, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x5e, 0xc0, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0xaf, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x0d, 0x05, 0x25, 0x50, 0xff, 0xa0, 0x5f, 0xf5, 0x5f, 0xff, 0x0f, + 0xff, 0xff, 0x00, 0x00, 0x0d, 0xc9, 0xc3, 0x40, 0x00, 0xa0, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x95, 0xd5, 0x55, 0x55, + 0xaf, 0x50, 0xff, 0xa0, 0xff, 0xf5, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xd8, 0x90, 0x30, 0x02, 0xff, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x50, 0x5c, 0x5c, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, + 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0x25, 0x25, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x54, 0x54, 0x54, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xfa, 0x0f, 0xfa, 0x0f, 0xfa, 0x0f, 0xfa, 0x0f, + 0xff, 0xff, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x50, 0x50, 0xff, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x0d, + 0x00, 0x00, 0x00, 0xf5, 0xfa, 0xff, 0xff, 0xaf, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x35, 0x02, 0x80, 0xa5, 0xff, 0xff, 0xff, 0xaf, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x0b, 0x00, 0x78, 0x55, 0xff, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x50, 0x57, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x50, 0x00, 0xf0, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, + 0x55, 0xd5, 0x15, 0x25, 0xfa, 0xff, 0xff, 0xf5, 0x5f, 0x50, 0x0f, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x30, 0xdc, 0x54, 0x0a, 0x00, 0x5f, 0x00, + 0xff, 0x05, 0xfa, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x56, 0x5c, 0x70, 0x42, + 0x00, 0xa0, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x95, 0xd5, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x55, 0x55, + 0xff, 0xff, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xff, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x55, 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, 0xfa, 0x5f, + 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc2, 0xc2, 0xc2, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xff, 0x05, 0xfa, 0x0a, + 0xf5, 0x5f, 0xf0, 0xaf, 0xff, 0xff, 0x00, 0x00, 0x70, 0x62, 0xc3, 0x81, + 0xf5, 0x0f, 0xfa, 0x0a, 0xff, 0x05, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x43, 0x62, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0xfa, 0x50, 0xff, 0xf0, 0xff, 0xfa, 0x5f, 0xff, 0xff, 0x00, 0x00, + 0x25, 0x0d, 0x01, 0xc2, 0xff, 0x0f, 0xfa, 0xaf, 0xa0, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x40, 0x82, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x57, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x15, 0x05, 0x09, 0x09, + 0xff, 0x00, 0x5f, 0x00, 0xaf, 0xaa, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x5c, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0xff, 0x05, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x5a, 0x70, + 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0xf5, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x0d, 0x05, 0x35, 0x00, 0x00, 0x0a, 0x00, 0xff, 0x55, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x56, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xfa, + 0xfa, 0xff, 0xff, 0xa5, 0xff, 0xff, 0x00, 0x00, 0x15, 0x25, 0x02, 0xb0, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xd5, 0x55, 0x55, 0x55, + 0xfa, 0xff, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x25, 0x55, 0x55, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x57, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf5, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x50, + 0xff, 0xff, 0x00, 0x00, 0x35, 0x15, 0x15, 0xd5, 0xff, 0x0a, 0xff, 0x05, + 0xff, 0x00, 0x55, 0x00, 0xff, 0xff, 0x00, 0x00, 0x60, 0x70, 0x50, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0xf0, 0xff, 0xa0, 0xff, 0x50, 0x55, + 0xff, 0xff, 0x00, 0x00, 0x03, 0x01, 0x09, 0xfd, 0x0a, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x56, 0x57, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0xfa, 0x00, 0xfa, + 0x00, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x25, 0x25, 0xf5, 0x55, + 0x0f, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x54, 0x54, 0x57, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xfa, 0x0f, 0xfa, 0x0f, + 0x55, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x42, 0x42, 0x7f, 0x55, + 0xf0, 0xff, 0xf0, 0x5f, 0x50, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0xc1, 0x5d, 0x55, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5c, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x15, 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x57, 0x55, 0x55, 0x55, + 0xf0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x71, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xfa, 0x5f, 0xfa, 0x5f, + 0xfa, 0x5f, 0x50, 0x05, 0xff, 0xff, 0x00, 0x00, 0xc2, 0xc2, 0xc2, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0xa0, 0xff, 0x50, 0xff, 0x00, 0xff, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x09, 0x0d, 0x05, 0xf5, 0xaf, 0x00, 0x5f, 0x00, 0x0f, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x58, 0x5c, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x50, 0x00, 0xf0, 0x00, 0xfa, 0x00, 0x55, 0xff, 0xff, 0x00, 0x00, + 0xd5, 0x15, 0x25, 0xf5, 0xff, 0x0a, 0xff, 0x00, 0x5f, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x60, 0x50, 0x5c, 0x57, 0x00, 0xf5, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x35, 0x95, 0x55, 0x55, + 0xaf, 0x00, 0xff, 0x05, 0xff, 0x0f, 0x55, 0x55, 0xff, 0xff, 0x00, 0x00, + 0x58, 0x70, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x50, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x5f, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xa5, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xab, 0x55, 0x55, 0x55, + 0x05, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xd7, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x5f, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55 +}; + +#endif /* ROBOTO_SPRITEFONT_H */ diff --git a/src/mods/tools/GameObjectsDisplay.cpp b/src/mods/tools/GameObjectsDisplay.cpp index 5ea4f5589..0302796fb 100644 --- a/src/mods/tools/GameObjectsDisplay.cpp +++ b/src/mods/tools/GameObjectsDisplay.cpp @@ -1,9 +1,18 @@ +#include +#include <../../directxtk12-src/Src/d3dx12.h> + + +#include <../../directxtk12-src/Inc/ResourceUploadBatch.h> + +#include "../spritefonts/Roboto.spritefont.h" + #include "REFramework.hpp" #include "sdk/SceneManager.hpp" #include "sdk/RETypeDB.hpp" #include "sdk/REManagedObject.hpp" #include "sdk/REGameObject.hpp" +#include "../BackBufferRenderer.hpp" #include "GameObjectsDisplay.hpp" namespace detail { @@ -19,8 +28,74 @@ struct Predicate : public REManagedObject { }; } +std::optional GameObjectsDisplay::on_initialize_d3d_thread() { + if (g_framework->is_dx12()) { + DirectX::EffectPipelineStateDescription psd( + &DirectX::DX12::GeometricPrimitive::VertexType::InputLayout, + DirectX::DX12::CommonStates::AlphaBlend, + DirectX::DX12::CommonStates::DepthNone, + DirectX::DX12::CommonStates::CullCounterClockwise, + BackBufferRenderer::get()->get_default_rt_state() + ); + + auto device = g_framework->get_d3d12_hook()->get_device(); + + m_d3d12.states = std::make_unique(device); + + m_d3d12.effect = std::make_unique(device, DirectX::EffectFlags::Texture, psd); + m_d3d12.effect->SetWorld(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect->SetView(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect->SetProjection(DirectX::SimpleMath::Matrix::Identity); + //m_d3d12.effect->SetDiffuseColor(DirectX::Colors::Black); + + // Upload sprite font + DirectX::ResourceUploadBatch upload(device); + upload.Begin(); + + m_d3d12.font_heap = std::make_unique(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE, 10); + m_d3d12.font = std::make_unique( + device, upload, Roboto_spritefont, sizeof(Roboto_spritefont), + m_d3d12.font_heap->GetCpuHandle(FontHeapIndices::SpriteFont_Data), + m_d3d12.font_heap->GetGpuHandle(FontHeapIndices::SpriteFont_Data) + ); + + DirectX::RenderTargetState output_state{BackBufferRenderer::get()->get_default_rt_state()}; + DirectX::SpriteBatchPipelineStateDescription pd{output_state}; + + m_d3d12.sprite_batch = std::make_unique(device, upload, pd); + + auto finished = upload.End(g_framework->get_d3d12_hook()->get_command_queue()); + finished.wait(); + + m_d3d12.quad = DirectX::GeometricPrimitive::CreateBox({1.0f, 1.0f, 1.0f}); + + // Create text texture + d3d12::ComPtr text_texture{}; + const auto tex_desc = CD3DX12_RESOURCE_DESC::Tex2D(output_state.rtvFormats[0], 512, 512, 1, 1, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET); + const auto heap_props = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT); + if (FAILED(device->CreateCommittedResource(&heap_props, D3D12_HEAP_FLAG_NONE, &tex_desc, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, nullptr, IID_PPV_ARGS(&text_texture)))) { + return "Failed to create text texture"; + } + + m_d3d12.text_texture = std::make_unique(); + if (!m_d3d12.text_texture->setup(device, text_texture.Get(), std::nullopt, std::nullopt, L"GameObjectsDisplay Text Texture")) { + return "Failed to setup text texture"; + } + + m_d3d12.effect->SetTexture(m_d3d12.text_texture->get_srv_gpu(), m_d3d12.states->LinearWrap()); + + spdlog::info("GameObjectsDisplay D3D12 initialized"); + } else { + // TODO + } + + // OK + return Mod::on_initialize(); +} + std::optional GameObjectsDisplay::on_initialize() { + // OK return Mod::on_initialize(); } @@ -101,26 +176,59 @@ void GameObjectsDisplay::on_frame() { camera_origin.w = 1.0f; - Vector4f camera_forward{}; + /*Vector4f camera_forward{}; get_axisz_method->call(&camera_forward, context, camera_transform); - camera_forward.w = 1.0f; + camera_forward.w = 1.0f;*/ // Translate 2d position to 3d position (screen to world) - Matrix4x4f proj{}, view{}; + __declspec(align(16)) Matrix4x4f proj{}, view{}; float screen_size[2]{}; sdk::call_object_func(camera, "get_ProjectionMatrix", &proj, context, camera); sdk::call_object_func(camera, "get_ViewMatrix", &view, context, camera); sdk::call_object_func(main_view, "get_WindowSize", &screen_size, context, main_view); + // Extract the camera forward vector from the view matrix + auto camera_forward = *(Vector4f*)&view[2]; + //auto camera_origin = *(Vector4f*)&view[3]; + static auto world_to_screen = math_t->get_method("worldPos2ScreenPos(via.vec3, via.mat4, via.mat4, via.Size)"); - Vector4f pos{}; - Vector4f screen_pos{}; + __declspec(align(16)) Vector4f pos{}; + __declspec(align(16)) Vector4f screen_pos{}; auto draw_list = ImGui::GetBackgroundDrawList(); const auto has_max_distance = m_max_distance->value() > 0.0f; + const auto is_d3d12 = g_framework->is_dx12(); + + auto proj_directx = DirectX::SimpleMath::Matrix{&proj[0][0]}; + auto view_directx = DirectX::SimpleMath::Matrix{&view[0][0]}; + + std::vector d3d12_work{}; + + // Set the view and projection matrices for the effect once per frame + if (is_d3d12) { + d3d12_work.emplace_back([this, proj_directx, view_directx](const BackBufferRenderer::RenderWorkData& data) { + // Viewport for our text texture + D3D12_VIEWPORT rt_viewport{}; + rt_viewport.Width = 512.0f; + rt_viewport.Height = 512.0f; + rt_viewport.MinDepth = D3D12_MIN_DEPTH; + rt_viewport.MaxDepth = D3D12_MAX_DEPTH; + m_d3d12.sprite_batch->SetViewport(rt_viewport); + + ID3D12DescriptorHeap* heaps[] = { + m_d3d12.font_heap->Heap(), + m_d3d12.states->Heap() + }; + data.command_list->SetDescriptorHeaps(2, heaps); + + m_d3d12.effect->SetProjection(proj_directx); + m_d3d12.effect->SetView(view_directx); + }); + } + for (auto transform = first_transform; transform != nullptr; transform = next_transform_method->call(context, transform)) @@ -143,20 +251,99 @@ void GameObjectsDisplay::on_frame() { const auto delta = pos - camera_origin; // behind camera - if (glm::dot(Vector3f{delta}, Vector3f{-camera_forward}) <= 0.0f) { + /*if (glm::dot(Vector3f{delta}, Vector3f{camera_forward}) <= 0.0f) { continue; - } + }*/ - if (has_max_distance) { - const auto distance = glm::length(Vector3f{delta}); + const auto distance = glm::length(Vector3f{delta}); + if (has_max_distance) { if (distance > m_max_distance->value()) { continue; } } - world_to_screen->call(&screen_pos, context, &pos, &view, &proj, &screen_size); - draw_list->AddText(ImVec2(screen_pos.x, screen_pos.y), ImGui::GetColorU32(ImVec4(1.0f, 1.0f, 1.0f, 1.0f)), owner_name.c_str()); + if (is_d3d12) { + // Billboard rotation to make the quad face the camera + /*DirectX::SimpleMath::Matrix rotation = DirectX::SimpleMath::Matrix::CreateBillboard( + DirectX::SimpleMath::Vector3(pos.x, pos.y, pos.z), + DirectX::SimpleMath::Vector3(camera_origin.x, camera_origin.y, camera_origin.z), + DirectX::SimpleMath::Vector3::Up + );*/ + + Matrix4x4f world_matrix{}; + sdk::call_object_func(transform, "get_WorldMatrix", &world_matrix, context, transform); + + DirectX::SimpleMath::Matrix world = + DirectX::SimpleMath::Matrix{&world_matrix[0][0]}; + + d3d12_work.emplace_back([this, world, owner_name](const BackBufferRenderer::RenderWorkData& data) { + // Create barrier to transition to render target + D3D12_RESOURCE_BARRIER barrier{}; + barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barrier.Transition.pResource = m_d3d12.text_texture->texture.Get(); + barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE; + barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET; + barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + data.command_list->ResourceBarrier(1, &barrier); + + D3D12_CPU_DESCRIPTOR_HANDLE rtv_heaps[] = { m_d3d12.text_texture->get_rtv() }; + data.command_list->OMSetRenderTargets(1, rtv_heaps, FALSE, nullptr); + + // Set viewport to text texture + D3D12_VIEWPORT viewport{}; + viewport.Width = 512.0f; + viewport.Height = 512.0f; + viewport.MinDepth = D3D12_MIN_DEPTH; + viewport.MaxDepth = D3D12_MAX_DEPTH; + data.command_list->RSSetViewports(1, &viewport); + + // Set scissors to text texture + D3D12_RECT scissor_rect{}; + scissor_rect.left = 0; + scissor_rect.top = 0; + scissor_rect.right = 512; + scissor_rect.bottom = 512; + data.command_list->RSSetScissorRects(1, &scissor_rect); + + // Clear text texture + data.command_list->ClearRenderTargetView(m_d3d12.text_texture->get_rtv(), DirectX::Colors::Transparent, 0, nullptr); + + m_d3d12.sprite_batch->Begin(data.command_list); + + m_d3d12.font->DrawString(m_d3d12.sprite_batch.get(), owner_name.c_str(), DirectX::SimpleMath::Vector2(0, 0), DirectX::Colors::White); + + m_d3d12.sprite_batch->End(); + + // Transition back to pixel shader resource + barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; + barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE; + data.command_list->ResourceBarrier(1, &barrier); + + // Reset viewport to backbuffer + data.command_list->RSSetViewports(1, &data.viewport); + + // Reset scissors to backbuffer + scissor_rect.right = (LONG)data.viewport.Width; + scissor_rect.bottom = (LONG)data.viewport.Height; + data.command_list->RSSetScissorRects(1, &scissor_rect); + + // Reset render target to backbuffer + D3D12_CPU_DESCRIPTOR_HANDLE bbrtv_heaps[] = { data.backbuffer_ctx->get_rtv() }; + data.command_list->OMSetRenderTargets(1, bbrtv_heaps, FALSE, nullptr); + + m_d3d12.effect->SetWorld(world); + m_d3d12.effect->Apply(data.command_list); + m_d3d12.quad->Draw(data.command_list); + }); + } else { + world_to_screen->call(&screen_pos, context, &pos, &view, &proj, &screen_size); + draw_list->AddText(ImVec2(screen_pos.x, screen_pos.y), ImGui::GetColorU32(ImVec4(1.0f, 1.0f, 1.0f, 1.0f)), owner_name.c_str()); + } + } + + if (is_d3d12) { + BackBufferRenderer::get()->submit_work_d3d12(std::move(d3d12_work)); } } diff --git a/src/mods/tools/GameObjectsDisplay.hpp b/src/mods/tools/GameObjectsDisplay.hpp index fcbbee8b3..ab6cf1f2b 100644 --- a/src/mods/tools/GameObjectsDisplay.hpp +++ b/src/mods/tools/GameObjectsDisplay.hpp @@ -2,12 +2,22 @@ #include "Tool.hpp" +#include <../../directxtk12-src/Inc/SimpleMath.h> +#include <../../directxtk12-src/Inc/CommonStates.h> +#include <../../directxtk12-src/Inc/Effects.h> +#include <../../directxtk12-src/Inc/GeometricPrimitive.h> +#include <../../directxtk12-src/Inc/SpriteFont.h> +#include <../../directxtk12-src/Inc/DescriptorHeap.h> + +#include "../vr/d3d12/TextureContext.hpp" + class GameObjectsDisplay : public Tool { public: std::string_view get_name() const override { return "GameObjectsDisplay"; } + std::optional on_initialize_d3d_thread() override; std::optional on_initialize() override; void on_config_load(const utility::Config& cfg) override; void on_config_save(utility::Config& cfg) override; @@ -15,6 +25,22 @@ class GameObjectsDisplay : public Tool { void on_draw_dev_ui() override; void on_frame() override; +private: + enum FontHeapIndices { + SpriteFont_Data, + }; + + struct { + std::unique_ptr effect{}; + std::unique_ptr font{}; + std::unique_ptr font_heap{}; + std::unique_ptr sprite_batch{}; + std::unique_ptr quad{}; // For rendering the text in 3D space + std::unique_ptr states{}; + + std::unique_ptr text_texture{}; + } m_d3d12; + private: const ModToggle::Ptr m_enabled{ ModToggle::create(generate_name("Enabled")) }; const ModSlider::Ptr m_max_distance{ ModSlider::create(generate_name("MaxDistance"), 0.0f, 1000.0f, 0.0f) }; From 0147b74beab3ede53f8fb3946d6d9f6da928d822 Mon Sep 17 00:00:00 2001 From: praydog Date: Mon, 11 Nov 2024 14:32:54 -0800 Subject: [PATCH 05/32] GameObjectsDisplay: Slight perf improvement + flicker reduction fix --- src/mods/BackBufferRenderer.cpp | 9 ++++++++- src/mods/BackBufferRenderer.hpp | 1 + src/mods/tools/GameObjectsDisplay.cpp | 13 ++++--------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/mods/BackBufferRenderer.cpp b/src/mods/BackBufferRenderer.cpp index 7b937bd2a..88095eab8 100644 --- a/src/mods/BackBufferRenderer.cpp +++ b/src/mods/BackBufferRenderer.cpp @@ -122,7 +122,6 @@ void BackBufferRenderer::render_d3d12() { { std::scoped_lock _{m_d3d12.render_work_mtx}; works = m_d3d12.render_work; - m_d3d12.render_work.clear(); } const RenderWorkData data{ @@ -153,4 +152,12 @@ void BackBufferRenderer::on_present() { } else { render_d3d11(); } +} + +void BackBufferRenderer::on_frame() { + // Clearing this here instead of every time whenever we present fixes flickering in some games + if (g_framework->is_dx12() && !m_d3d12.render_work.empty()) { + std::scoped_lock _{m_d3d12.render_work_mtx}; + m_d3d12.render_work.clear(); + } } \ No newline at end of file diff --git a/src/mods/BackBufferRenderer.hpp b/src/mods/BackBufferRenderer.hpp index 3e973483f..39a72408a 100644 --- a/src/mods/BackBufferRenderer.hpp +++ b/src/mods/BackBufferRenderer.hpp @@ -27,6 +27,7 @@ class BackBufferRenderer : public Mod { std::optional on_initialize_d3d_thread() override; void on_present() override; + void on_frame() override; void on_device_reset() override; public: diff --git a/src/mods/tools/GameObjectsDisplay.cpp b/src/mods/tools/GameObjectsDisplay.cpp index 0302796fb..2b60f76e8 100644 --- a/src/mods/tools/GameObjectsDisplay.cpp +++ b/src/mods/tools/GameObjectsDisplay.cpp @@ -152,6 +152,7 @@ void GameObjectsDisplay::on_frame() { static auto get_gameobject_method = transform_def->get_method("get_GameObject"); static auto get_position_method = transform_def->get_method("get_Position"); static auto get_axisz_method = transform_def->get_method("get_AxisZ"); + static auto get_world_matrix_method = transform_def->get_method("get_WorldMatrix"); auto math = sdk::get_native_singleton("via.math"); auto math_t = sdk::find_type_definition("via.math"); @@ -229,6 +230,8 @@ void GameObjectsDisplay::on_frame() { }); } + __declspec(align(16)) Matrix4x4f world_matrix{}; + for (auto transform = first_transform; transform != nullptr; transform = next_transform_method->call(context, transform)) @@ -264,15 +267,7 @@ void GameObjectsDisplay::on_frame() { } if (is_d3d12) { - // Billboard rotation to make the quad face the camera - /*DirectX::SimpleMath::Matrix rotation = DirectX::SimpleMath::Matrix::CreateBillboard( - DirectX::SimpleMath::Vector3(pos.x, pos.y, pos.z), - DirectX::SimpleMath::Vector3(camera_origin.x, camera_origin.y, camera_origin.z), - DirectX::SimpleMath::Vector3::Up - );*/ - - Matrix4x4f world_matrix{}; - sdk::call_object_func(transform, "get_WorldMatrix", &world_matrix, context, transform); + get_world_matrix_method->call(&world_matrix, context, transform); DirectX::SimpleMath::Matrix world = DirectX::SimpleMath::Matrix{&world_matrix[0][0]}; From cc6ed911be34271e964083c7fff94eae76d0ad6c Mon Sep 17 00:00:00 2001 From: praydog Date: Wed, 13 Nov 2024 13:16:55 -0800 Subject: [PATCH 06/32] DD2: Tentative fix for BHVT action list --- shared/sdk/MotionFsm2Layer.cpp | 11 ++++++++++- shared/sdk/MotionFsm2Layer.hpp | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/shared/sdk/MotionFsm2Layer.cpp b/shared/sdk/MotionFsm2Layer.cpp index fa165492b..857065264 100644 --- a/shared/sdk/MotionFsm2Layer.cpp +++ b/shared/sdk/MotionFsm2Layer.cpp @@ -325,7 +325,7 @@ void BehaviorTree::set_current_node(sdk::behaviortree::TreeNode* node, uint32_t method->call(sdk::get_thread_context(), this, node->get_id(), tree_idx, set_node_info); } -bool is_delayed() { +bool TreeObject::is_delayed() const { #if TDB_VER >= 69 static auto bhvt_manager = sdk::get_native_singleton("via.behaviortree.BehaviorTreeManager"); static auto bhvt_manager_t = sdk::find_type_definition("via.behaviortree.BehaviorTreeManager"); @@ -333,6 +333,15 @@ bool is_delayed() { static auto is_delay_setup_objects_prop = utility::re_type::get_field_desc(bhvt_manager_retype, "DelaySetupObjects"); const auto is_delay_setup_objects = utility::re_managed_object::get_field((::REManagedObject*)bhvt_manager, is_delay_setup_objects_prop); + + if (!is_delay_setup_objects) { + // For some reason this can happen + if (this->actions.count == 0 && this->conditions.count == 0 && this->transitions.count == 0) { + if (this->delayed_actions.count > 0 || this->delayed_conditions.count > 0 || this->delayed_transitions.count > 0) { + return true; + } + } + } #else const auto is_delay_setup_objects = false; #endif diff --git a/shared/sdk/MotionFsm2Layer.hpp b/shared/sdk/MotionFsm2Layer.hpp index a07dba774..b22d97489 100644 --- a/shared/sdk/MotionFsm2Layer.hpp +++ b/shared/sdk/MotionFsm2Layer.hpp @@ -235,6 +235,7 @@ class TreeObjectData : public regenny::via::behaviortree::TreeObjectData { class TreeObject : public regenny::via::behaviortree::TreeObject { public: + bool is_delayed() const; void relocate(uintptr_t old_start, uintptr_t old_end, sdk::NativeArrayNoCapacity& new_nodes); void relocate_datas(uintptr_t old_start, uintptr_t old_end, sdk::NativeArrayNoCapacity& new_nodes); From ac59669b80ef8c239f38206c5f3122942df9309a Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 15 Nov 2024 11:07:22 -0800 Subject: [PATCH 07/32] Deps: Update DirectXTK12 --- CMakeLists.txt | 4 ++-- cmake.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa6d0e160..f667ebf29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,13 +105,13 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(directxtk) -message(STATUS "Fetching directxtk12 (528801aa6dd8d628c2f756c41a76d300f47de478)...") +message(STATUS "Fetching directxtk12 (be5dfc7e391aefaa4eeab8e8a08f7e2669e56cbb)...") FetchContent_Declare( directxtk12 GIT_REPOSITORY https://github.com/microsoft/DirectXTK12 GIT_TAG - 528801aa6dd8d628c2f756c41a76d300f47de478 + be5dfc7e391aefaa4eeab8e8a08f7e2669e56cbb ) FetchContent_MakeAvailable(directxtk12) diff --git a/cmake.toml b/cmake.toml index 60286ed4c..e236f0315 100644 --- a/cmake.toml +++ b/cmake.toml @@ -82,7 +82,7 @@ tag = "f5026eb34e7053b1aff325d38db107703f394974" [fetch-content.directxtk12] git = "https://github.com/microsoft/DirectXTK12" -tag = "528801aa6dd8d628c2f756c41a76d300f47de478" +tag = "be5dfc7e391aefaa4eeab8e8a08f7e2669e56cbb" [target.spdlog] cmake-after=""" From 5619822c0d0e8a9751ca7524f84a9c2126306a6c Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 15 Nov 2024 11:11:19 -0800 Subject: [PATCH 08/32] D3D12 (GameObjectsDisplay, ChainViewer): Fix some correctness issues --- CMakeLists.txt | 13 ++++++ src/REFramework.cpp | 5 +-- src/mods/BackBufferRenderer.cpp | 6 +-- src/mods/tools/ChainViewer.cpp | 19 +++++--- src/mods/tools/ChainViewer.hpp | 7 +++ src/mods/tools/GameObjectsDisplay.cpp | 62 ++++++++++++++++++++------- src/mods/tools/GameObjectsDisplay.hpp | 21 +++++++-- 7 files changed, 103 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f667ebf29..be7ffa2c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2316,6 +2316,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -2525,6 +2526,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -4399,6 +4401,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -4608,6 +4611,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -4817,6 +4821,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -7525,6 +7530,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -7734,6 +7740,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -8777,6 +8784,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -9818,6 +9826,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -10861,6 +10870,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -11904,6 +11914,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -12947,6 +12958,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" @@ -13990,6 +14002,7 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework "src/re2-imgui/re2_imconfig.hpp" "src/utility/ImGui.hpp" "src/cimgui/cimgui.h" + "src/mods/spritefonts/Roboto.spritefont.h" "src/re2-imgui/af_fadef.h" "src/re2-imgui/imgui_impl_dx11.h" "src/re2-imgui/imgui_impl_dx12.h" diff --git a/src/REFramework.cpp b/src/REFramework.cpp index 546f09c5d..b052dc83f 100644 --- a/src/REFramework.cpp +++ b/src/REFramework.cpp @@ -2175,9 +2175,8 @@ bool REFramework::init_d3d12() { spdlog::info("[D3D12] Creating DXTK graphics memory..."); // Realistically we only have one device. If not, then... IDK - if (m_d3d12.graphics_memory == nullptr) { - m_d3d12.graphics_memory = std::make_unique(device); - } + m_d3d12.graphics_memory.reset(); + m_d3d12.graphics_memory = std::make_unique(device); spdlog::info("[D3D12] Creating command allocator..."); diff --git a/src/mods/BackBufferRenderer.cpp b/src/mods/BackBufferRenderer.cpp index 88095eab8..e10aa848b 100644 --- a/src/mods/BackBufferRenderer.cpp +++ b/src/mods/BackBufferRenderer.cpp @@ -65,13 +65,13 @@ void BackBufferRenderer::render_d3d12() { } if (m_d3d12.backbuffers[i] == nullptr || m_d3d12.backbuffers[i]->texture.Get() != backbuffer.Get()) { - spdlog::info("[ChainViewer] Setting up backbuffer {}", i); + spdlog::info("[BackBufferRenderer] Setting up backbuffer {}", i); m_d3d12.backbuffers[i].reset(); m_d3d12.backbuffers[i] = std::make_unique(); - if (!m_d3d12.backbuffers[i]->setup(device, backbuffer.Get(), std::nullopt, std::nullopt, L"ChainViewer Backbuffer")) { - spdlog::error("[ChainViewer] Failed to setup backbuffer {}", i); + if (!m_d3d12.backbuffers[i]->setup(device, backbuffer.Get(), std::nullopt, std::nullopt, L"BackBufferRenderer Backbuffer")) { + spdlog::error("[BackBufferRenderer] Failed to setup backbuffer {}", i); m_d3d12.backbuffers[i].reset(); continue; } diff --git a/src/mods/tools/ChainViewer.cpp b/src/mods/tools/ChainViewer.cpp index c47ff57d8..dcba05920 100644 --- a/src/mods/tools/ChainViewer.cpp +++ b/src/mods/tools/ChainViewer.cpp @@ -57,13 +57,18 @@ #include "ChainViewer.hpp" std::optional ChainViewer::on_initialize() { - // OK return Mod::on_initialize(); } std::optional ChainViewer::on_initialize_d3d_thread() { + return initialize_d3d_resources(); +} + +std::optional ChainViewer::initialize_d3d_resources() { if (g_framework->is_dx12()) { + m_d3d12 = {}; + DirectX::EffectPipelineStateDescription psd( &DirectX::DX12::GeometricPrimitive::VertexType::InputLayout, DirectX::DX12::CommonStates::AlphaBlend, @@ -90,10 +95,10 @@ std::optional ChainViewer::on_initialize_d3d_thread() { spdlog::info("ChainViewer D3D11 initialized"); } - // OK - return Mod::on_initialize(); -} + m_needs_d3d_init = false; + return std::nullopt; +} void ChainViewer::on_config_load(const utility::Config& cfg) { for (IModValue& option : m_options) { @@ -125,6 +130,10 @@ void ChainViewer::on_draw_dev_ui() { } void ChainViewer::on_present() { + if (m_needs_d3d_init) { + initialize_d3d_resources(); + } + if (g_framework->is_dx12()) { if (m_effect_dirty) { m_d3d12.effect->SetAlpha(m_effect_alpha); @@ -136,7 +145,7 @@ void ChainViewer::on_present() { } void ChainViewer::on_frame() { - if (!m_enabled->value()) { + if (!m_enabled->value() || m_needs_d3d_init) { return; } diff --git a/src/mods/tools/ChainViewer.hpp b/src/mods/tools/ChainViewer.hpp index 47773dd97..43aadcadc 100644 --- a/src/mods/tools/ChainViewer.hpp +++ b/src/mods/tools/ChainViewer.hpp @@ -24,11 +24,17 @@ class ChainViewer : public Tool { void on_config_load(const utility::Config& cfg) override; void on_config_save(utility::Config& cfg) override; + void on_device_reset() override { + m_needs_d3d_init = true; + } + void on_draw_dev_ui() override; void on_frame() override; void on_present() override; private: + std::optional initialize_d3d_resources(); + struct { std::unique_ptr effect{}; std::unique_ptr cylinder{}; @@ -37,6 +43,7 @@ class ChainViewer : public Tool { float m_effect_alpha{0.5f}; bool m_effect_dirty{false}; + bool m_needs_d3d_init{true}; private: const ModToggle::Ptr m_enabled{ ModToggle::create(generate_name("Enabled")) }; diff --git a/src/mods/tools/GameObjectsDisplay.cpp b/src/mods/tools/GameObjectsDisplay.cpp index 2b60f76e8..ed7f6dd2b 100644 --- a/src/mods/tools/GameObjectsDisplay.cpp +++ b/src/mods/tools/GameObjectsDisplay.cpp @@ -29,8 +29,19 @@ struct Predicate : public REManagedObject { } std::optional GameObjectsDisplay::on_initialize_d3d_thread() { + return initialize_d3d_resources(); +} + +std::optional GameObjectsDisplay::on_initialize() { + // OK + return Mod::on_initialize(); +} + +std::optional GameObjectsDisplay::initialize_d3d_resources() { if (g_framework->is_dx12()) { - DirectX::EffectPipelineStateDescription psd( + m_d3d12 = {}; + + DirectX::EffectPipelineStateDescription bbuffer_psd( &DirectX::DX12::GeometricPrimitive::VertexType::InputLayout, DirectX::DX12::CommonStates::AlphaBlend, DirectX::DX12::CommonStates::DepthNone, @@ -42,24 +53,34 @@ std::optional GameObjectsDisplay::on_initialize_d3d_thread() { m_d3d12.states = std::make_unique(device); - m_d3d12.effect = std::make_unique(device, DirectX::EffectFlags::Texture, psd); + m_d3d12.effect = std::make_unique(device, DirectX::EffectFlags::Texture, bbuffer_psd); m_d3d12.effect->SetWorld(DirectX::SimpleMath::Matrix::Identity); m_d3d12.effect->SetView(DirectX::SimpleMath::Matrix::Identity); m_d3d12.effect->SetProjection(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect->SetAlpha(1.0f); //m_d3d12.effect->SetDiffuseColor(DirectX::Colors::Black); + m_d3d12.effect_no_tex = std::make_unique(device, DirectX::EffectFlags::None, bbuffer_psd); + m_d3d12.effect_no_tex->SetWorld(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect_no_tex->SetView(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect_no_tex->SetProjection(DirectX::SimpleMath::Matrix::Identity); + m_d3d12.effect_no_tex->SetDiffuseColor(DirectX::Colors::Blue); + m_d3d12.effect_no_tex->SetAlpha(0.5f); + + + m_d3d12.font_heap = std::make_unique(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE, FontHeapIndices::FontHeap_Count); + // Upload sprite font DirectX::ResourceUploadBatch upload(device); upload.Begin(); - m_d3d12.font_heap = std::make_unique(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE, 10); m_d3d12.font = std::make_unique( device, upload, Roboto_spritefont, sizeof(Roboto_spritefont), m_d3d12.font_heap->GetCpuHandle(FontHeapIndices::SpriteFont_Data), m_d3d12.font_heap->GetGpuHandle(FontHeapIndices::SpriteFont_Data) ); - DirectX::RenderTargetState output_state{BackBufferRenderer::get()->get_default_rt_state()}; + DirectX::RenderTargetState output_state{DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_UNKNOWN}; DirectX::SpriteBatchPipelineStateDescription pd{output_state}; m_d3d12.sprite_batch = std::make_unique(device, upload, pd); @@ -71,7 +92,7 @@ std::optional GameObjectsDisplay::on_initialize_d3d_thread() { // Create text texture d3d12::ComPtr text_texture{}; - const auto tex_desc = CD3DX12_RESOURCE_DESC::Tex2D(output_state.rtvFormats[0], 512, 512, 1, 1, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET); + const auto tex_desc = CD3DX12_RESOURCE_DESC::Tex2D(DXGI_FORMAT_R8G8B8A8_UNORM, 512, 512, 1, 1, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET); const auto heap_props = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT); if (FAILED(device->CreateCommittedResource(&heap_props, D3D12_HEAP_FLAG_NONE, &tex_desc, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, nullptr, IID_PPV_ARGS(&text_texture)))) { return "Failed to create text texture"; @@ -88,16 +109,10 @@ std::optional GameObjectsDisplay::on_initialize_d3d_thread() { } else { // TODO } + + m_needs_d3d_init = false; - // OK - return Mod::on_initialize(); -} - -std::optional GameObjectsDisplay::on_initialize() { - - - // OK - return Mod::on_initialize(); + return std::nullopt; } void GameObjectsDisplay::on_config_load(const utility::Config& cfg) { @@ -125,10 +140,27 @@ void GameObjectsDisplay::on_draw_dev_ui() { } m_max_distance->draw("Max Distance for GameObjects"); + + if (ImGui::SliderFloat("Object Effect Alpha", &m_effect_alpha, 0.0f, 1.0f)) { + m_effect_dirty = true; + } +} + +void GameObjectsDisplay::on_present() { + if (m_needs_d3d_init) { + if (auto result = initialize_d3d_resources(); result.has_value()) { + spdlog::error(result.value()); + } + } + + if (m_effect_dirty) { + m_d3d12.effect_no_tex->SetAlpha(m_effect_alpha); + m_effect_dirty = false; + } } void GameObjectsDisplay::on_frame() { - if (!m_enabled->value()) { + if (!m_enabled->value() || m_needs_d3d_init) { return; } diff --git a/src/mods/tools/GameObjectsDisplay.hpp b/src/mods/tools/GameObjectsDisplay.hpp index ab6cf1f2b..1e84c9493 100644 --- a/src/mods/tools/GameObjectsDisplay.hpp +++ b/src/mods/tools/GameObjectsDisplay.hpp @@ -22,29 +22,42 @@ class GameObjectsDisplay : public Tool { void on_config_load(const utility::Config& cfg) override; void on_config_save(utility::Config& cfg) override; + void on_device_reset() override { + m_needs_d3d_init = true; + } void on_draw_dev_ui() override; void on_frame() override; + void on_present() override; private: + std::optional initialize_d3d_resources(); + enum FontHeapIndices { - SpriteFont_Data, + SpriteFont_Data = 0, + FontHeap_Count }; struct { + std::unique_ptr text_texture{}; + std::unique_ptr effect{}; + std::unique_ptr effect_no_tex{}; std::unique_ptr font{}; + std::unique_ptr quad{}; // For rendering the text in 3D space + std::unique_ptr font_heap{}; std::unique_ptr sprite_batch{}; - std::unique_ptr quad{}; // For rendering the text in 3D space std::unique_ptr states{}; - - std::unique_ptr text_texture{}; } m_d3d12; private: const ModToggle::Ptr m_enabled{ ModToggle::create(generate_name("Enabled")) }; const ModSlider::Ptr m_max_distance{ ModSlider::create(generate_name("MaxDistance"), 0.0f, 1000.0f, 0.0f) }; + float m_effect_alpha{ 0.5f }; + bool m_effect_dirty{ false }; + bool m_needs_d3d_init{ false }; + ValueList m_options{ *m_enabled, *m_max_distance From defa62922ebf5ccec1d2e325973e4eb2b1b3ccc4 Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 15 Nov 2024 11:12:12 -0800 Subject: [PATCH 09/32] GameObjectsDisplay: Center text, draw cube around objects --- src/mods/tools/GameObjectsDisplay.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/mods/tools/GameObjectsDisplay.cpp b/src/mods/tools/GameObjectsDisplay.cpp index ed7f6dd2b..f95b4328c 100644 --- a/src/mods/tools/GameObjectsDisplay.cpp +++ b/src/mods/tools/GameObjectsDisplay.cpp @@ -259,6 +259,10 @@ void GameObjectsDisplay::on_frame() { m_d3d12.effect->SetProjection(proj_directx); m_d3d12.effect->SetView(view_directx); + m_d3d12.effect->SetTexture(m_d3d12.text_texture->get_srv_gpu(), m_d3d12.states->LinearWrap()); + + m_d3d12.effect_no_tex->SetProjection(proj_directx); + m_d3d12.effect_no_tex->SetView(view_directx); }); } @@ -304,7 +308,7 @@ void GameObjectsDisplay::on_frame() { DirectX::SimpleMath::Matrix world = DirectX::SimpleMath::Matrix{&world_matrix[0][0]}; - d3d12_work.emplace_back([this, world, owner_name](const BackBufferRenderer::RenderWorkData& data) { + d3d12_work.emplace_back([this, owner_name, world](const BackBufferRenderer::RenderWorkData& data) { // Create barrier to transition to render target D3D12_RESOURCE_BARRIER barrier{}; barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; @@ -337,8 +341,9 @@ void GameObjectsDisplay::on_frame() { data.command_list->ClearRenderTargetView(m_d3d12.text_texture->get_rtv(), DirectX::Colors::Transparent, 0, nullptr); m_d3d12.sprite_batch->Begin(data.command_list); - - m_d3d12.font->DrawString(m_d3d12.sprite_batch.get(), owner_name.c_str(), DirectX::SimpleMath::Vector2(0, 0), DirectX::Colors::White); + + const auto measurements = m_d3d12.font->MeasureString(owner_name.c_str()); + m_d3d12.font->DrawString(m_d3d12.sprite_batch.get(), owner_name.c_str(), DirectX::SimpleMath::Vector2(256.0f - glm::min(DirectX::XMVectorGetX(measurements) / 2.0f, 256.0f), 256.0f), DirectX::Colors::White); m_d3d12.sprite_batch->End(); @@ -359,6 +364,12 @@ void GameObjectsDisplay::on_frame() { D3D12_CPU_DESCRIPTOR_HANDLE bbrtv_heaps[] = { data.backbuffer_ctx->get_rtv() }; data.command_list->OMSetRenderTargets(1, bbrtv_heaps, FALSE, nullptr); + if (m_effect_alpha > 0.0f) { + m_d3d12.effect_no_tex->SetWorld(world); + m_d3d12.effect_no_tex->Apply(data.command_list); + m_d3d12.quad->Draw(data.command_list); + } + m_d3d12.effect->SetWorld(world); m_d3d12.effect->Apply(data.command_list); m_d3d12.quad->Draw(data.command_list); From d12ffb215dec07700311e8591a6efcf4496b4f0f Mon Sep 17 00:00:00 2001 From: dtlnor Date: Sun, 17 Nov 2024 10:56:46 +0800 Subject: [PATCH 10/32] Introduce Struct type (#1152) * ObjectExplorer: Add `element_type_name` when exporting il2cpp_dump if it is an array For TDB >= 69 * RSZ: introduce `Struct` type when it is array of `Struct` Make `original_type` point to its element type rather than its own type for array-like object --- reversing/rsz/non-native-dumper.py | 20 +++++++++++++++++++- src/mods/tools/ObjectExplorer.cpp | 10 ++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/reversing/rsz/non-native-dumper.py b/reversing/rsz/non-native-dumper.py index 2738df2b3..6a6520c50 100644 --- a/reversing/rsz/non-native-dumper.py +++ b/reversing/rsz/non-native-dumper.py @@ -48,6 +48,8 @@ def als(align, size): "GameObjectRef": als(8, 16), "Color": als(4, 4), "DateTime": als(8, 8), + # Struct could have variable size and alignment depends on its element. So we set to (1, 1). + "Struct": als(1, 1), # Enum could have variable size and alignment, so we fallback to its base type and never use it. "Uint2": als(4, 8), @@ -387,7 +389,9 @@ def generate_field_entries(il2cpp_dump, natives, key, il2cpp_entry, use_typedefs code = rsz_entry["code"] type = rsz_entry["type"] - if code == "Struct" and type in il2cpp_dump: + if code == "Struct" and type in il2cpp_dump and rsz_entry.get("array", 0) != 1: + # keep struct type data unpacked for backwards compatibility if it is not an array. + nested_entry, nested_str, i, struct_i = generate_field_entries(il2cpp_dump, natives, type, il2cpp_dump[type], use_typedefs, "STRUCT_" + name + "_", i, struct_i) if len(nested_entry) > 0: @@ -405,6 +409,20 @@ def generate_field_entries(il2cpp_dump, natives, key, il2cpp_entry, use_typedefs code = code_typedefs[code] else: code = "RSZ" + code + + if rsz_entry["array"] == 1: + array_type = il2cpp_dump[type] + if array_type.get("element_type_name", None) is not None: + type = array_type["element_type_name"] + elif array_type.get("is_generic_type", False): + array_element_types = [item["type"] for item in array_type["generic_arg_types"]] + if len(array_element_types) == 1: + type = array_element_types[0] + else: + print(f"Array type {type} has multiple element types: {array_element_types}") + else: + print(f"Array type {type} has no element type") + ''' if rsz_entry["array"] == True: diff --git a/src/mods/tools/ObjectExplorer.cpp b/src/mods/tools/ObjectExplorer.cpp index a5d00eb81..1d9861a4b 100644 --- a/src/mods/tools/ObjectExplorer.cpp +++ b/src/mods/tools/ObjectExplorer.cpp @@ -1083,6 +1083,16 @@ void ObjectExplorer::generate_sdk() { type_entry["is_generic_type"] = t.is_generic_type(); type_entry["is_generic_type_definition"] = t.is_generic_type_definition(); +#if TDB_VER >= 71 + if (tdef->element_typeid_TBD != 0) { + type_entry["element_type_name"] = init_type(il2cpp_dump, tdb, tdef->element_typeid_TBD)->full_name; + } +#elif TDB_VER >= 69 + if (tdef->element_typeid != 0) { + type_entry["element_type_name"] = init_type(il2cpp_dump, tdb, tdef->element_typeid)->full_name; + } +#endif + if (auto gtd = t.get_generic_type_definition(); gtd != nullptr) { type_entry["generic_type_definition"] = gtd->get_full_name(); } From 48058763cf0cf79822ed1646305651799f443e29 Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 17 Nov 2024 09:32:08 -0800 Subject: [PATCH 11/32] GameObjectsDisplay/ChainViewer: Only init D3D resources if enabled --- src/mods/tools/ChainViewer.cpp | 9 +++++++++ src/mods/tools/ChainViewer.hpp | 2 ++ src/mods/tools/GameObjectsDisplay.cpp | 9 +++++++++ src/mods/tools/GameObjectsDisplay.hpp | 2 ++ 4 files changed, 22 insertions(+) diff --git a/src/mods/tools/ChainViewer.cpp b/src/mods/tools/ChainViewer.cpp index dcba05920..d89cb28f5 100644 --- a/src/mods/tools/ChainViewer.cpp +++ b/src/mods/tools/ChainViewer.cpp @@ -66,6 +66,14 @@ std::optional ChainViewer::on_initialize_d3d_thread() { } std::optional ChainViewer::initialize_d3d_resources() { + if (!m_enabled->value()) { + if (m_d3d12.initialized) { + m_d3d12 = {}; + } + + return std::nullopt; + } + if (g_framework->is_dx12()) { m_d3d12 = {}; @@ -89,6 +97,7 @@ std::optional ChainViewer::initialize_d3d_resources() { m_d3d12.cylinder = DirectX::GeometricPrimitive::CreateCylinder(); m_d3d12.sphere = DirectX::GeometricPrimitive::CreateSphere(); + m_d3d12.initialized = true; spdlog::info("ChainViewer D3D12 initialized"); } else { // TODO diff --git a/src/mods/tools/ChainViewer.hpp b/src/mods/tools/ChainViewer.hpp index 43aadcadc..dfb704c5c 100644 --- a/src/mods/tools/ChainViewer.hpp +++ b/src/mods/tools/ChainViewer.hpp @@ -39,6 +39,8 @@ class ChainViewer : public Tool { std::unique_ptr effect{}; std::unique_ptr cylinder{}; std::unique_ptr sphere{}; + + bool initialized{false}; } m_d3d12; float m_effect_alpha{0.5f}; diff --git a/src/mods/tools/GameObjectsDisplay.cpp b/src/mods/tools/GameObjectsDisplay.cpp index f95b4328c..7e5358a67 100644 --- a/src/mods/tools/GameObjectsDisplay.cpp +++ b/src/mods/tools/GameObjectsDisplay.cpp @@ -38,6 +38,14 @@ std::optional GameObjectsDisplay::on_initialize() { } std::optional GameObjectsDisplay::initialize_d3d_resources() { + if (!m_enabled->value()) { + if (m_d3d12.initialized) { + m_d3d12 = {}; + } + + return std::nullopt; + } + if (g_framework->is_dx12()) { m_d3d12 = {}; @@ -105,6 +113,7 @@ std::optional GameObjectsDisplay::initialize_d3d_resources() { m_d3d12.effect->SetTexture(m_d3d12.text_texture->get_srv_gpu(), m_d3d12.states->LinearWrap()); + m_d3d12.initialized = true; spdlog::info("GameObjectsDisplay D3D12 initialized"); } else { // TODO diff --git a/src/mods/tools/GameObjectsDisplay.hpp b/src/mods/tools/GameObjectsDisplay.hpp index 1e84c9493..75a42084c 100644 --- a/src/mods/tools/GameObjectsDisplay.hpp +++ b/src/mods/tools/GameObjectsDisplay.hpp @@ -48,6 +48,8 @@ class GameObjectsDisplay : public Tool { std::unique_ptr font_heap{}; std::unique_ptr sprite_batch{}; std::unique_ptr states{}; + + bool initialized{false}; } m_d3d12; private: From dc3cb6daaa59521704b7b7457b93c9e6799b8e29 Mon Sep 17 00:00:00 2001 From: praydog Date: Thu, 28 Nov 2024 23:21:21 -0800 Subject: [PATCH 12/32] Possible fix for premature D3D hook removal on script load --- src/mods/ScriptRunner.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mods/ScriptRunner.cpp b/src/mods/ScriptRunner.cpp index 246a92f72..5b48d148a 100644 --- a/src/mods/ScriptRunner.cpp +++ b/src/mods/ScriptRunner.cpp @@ -1169,6 +1169,7 @@ void ScriptRunner::spew_error(const std::string& p) { void ScriptRunner::reset_scripts() { std::scoped_lock _{ m_access_mutex }; + std::scoped_lock __{ g_framework->get_hook_monitor_mutex() }; // Stops D3D monitor from attempting to re-hook during long script startups { std::unique_lock _{ m_script_error_mutex }; From e55866daf4f785d2cf28a901631ff5bd5acc6fb5 Mon Sep 17 00:00:00 2001 From: praydog Date: Sat, 30 Nov 2024 12:17:32 -0800 Subject: [PATCH 13/32] Graphics: Fix disabling RT not working (fixes #1163) --- src/mods/Graphics.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mods/Graphics.cpp b/src/mods/Graphics.cpp index 6a9bc7f09..190bd38b4 100644 --- a/src/mods/Graphics.cpp +++ b/src/mods/Graphics.cpp @@ -1067,6 +1067,12 @@ void Graphics::apply_ray_tracing_tweaks() { } if (set_enabled != nullptr) { + if (rt_type == 0) { + // Just turn it off + set_enabled->call(context, target, false); + return; + } + set_enabled->call(context, target, true); // Some games have this disabled. } From 22d24b83752a4e5e787ed2364538998e71485c72 Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 1 Dec 2024 10:45:45 -0800 Subject: [PATCH 14/32] VR (RE2/3): Remove unused code causing startup errors --- scripts/re2_vr_melee.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/re2_vr_melee.lua b/scripts/re2_vr_melee.lua index d7c329245..12b53e8b0 100644 --- a/scripts/re2_vr_melee.lua +++ b/scripts/re2_vr_melee.lua @@ -23,9 +23,6 @@ local function get_gameobject(component) return component:call("get_GameObject") end -local camera = sdk.get_primary_camera() -local camera_gameobject = camera:call("get_GameObject") - local melee_type = sdk.find_type_definition(sdk.game_namespace("implement.Melee")) local function is_weapon_melee(weapon) From 31ab924c5c6afee1eaea48e4459465644491c51c Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 8 Dec 2024 19:02:15 -0800 Subject: [PATCH 15/32] Deps: Update kananlib (1.8-2x startup time improvement) --- CMakeLists.txt | 4 ++-- cmake.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be7ffa2c9..427b04481 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,13 +135,13 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(bddisasm) -message(STATUS "Fetching kananlib (61a04d4219e3cb81b524a6990d3924289982bbf6)...") +message(STATUS "Fetching kananlib (93dea461e52f5117aad383b7ed6a2b866c1acafc)...") FetchContent_Declare( kananlib GIT_REPOSITORY https://github.com/cursey/kananlib GIT_TAG - 61a04d4219e3cb81b524a6990d3924289982bbf6 + 93dea461e52f5117aad383b7ed6a2b866c1acafc ) FetchContent_MakeAvailable(kananlib) diff --git a/cmake.toml b/cmake.toml index e236f0315..694123d8d 100644 --- a/cmake.toml +++ b/cmake.toml @@ -177,7 +177,7 @@ tag = "v1.34.10" [fetch-content.kananlib] git = "https://github.com/cursey/kananlib" -tag = "61a04d4219e3cb81b524a6990d3924289982bbf6" +tag = "93dea461e52f5117aad383b7ed6a2b866c1acafc" [target.utility] type = "static" From 23169b937b98b2225b643e40a8b79983e6a1c358 Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 8 Dec 2024 19:09:23 -0800 Subject: [PATCH 16/32] Deps: Update kananlib (minor fix to perf improvements) --- CMakeLists.txt | 4 ++-- cmake.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 427b04481..b6c5081dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,13 +135,13 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(bddisasm) -message(STATUS "Fetching kananlib (93dea461e52f5117aad383b7ed6a2b866c1acafc)...") +message(STATUS "Fetching kananlib (8b29e1694dbf4ad4c878ff54bcbcabf280b37168)...") FetchContent_Declare( kananlib GIT_REPOSITORY https://github.com/cursey/kananlib GIT_TAG - 93dea461e52f5117aad383b7ed6a2b866c1acafc + 8b29e1694dbf4ad4c878ff54bcbcabf280b37168 ) FetchContent_MakeAvailable(kananlib) diff --git a/cmake.toml b/cmake.toml index 694123d8d..999d90817 100644 --- a/cmake.toml +++ b/cmake.toml @@ -177,7 +177,7 @@ tag = "v1.34.10" [fetch-content.kananlib] git = "https://github.com/cursey/kananlib" -tag = "93dea461e52f5117aad383b7ed6a2b866c1acafc" +tag = "8b29e1694dbf4ad4c878ff54bcbcabf280b37168" [target.utility] type = "static" From 517b299009dfae89253b5d9bc8446e70780d213e Mon Sep 17 00:00:00 2001 From: praydog Date: Mon, 16 Dec 2024 14:47:49 -0800 Subject: [PATCH 17/32] Lua: Possible fix for 'require' not working in some scenarios --- src/mods/ScriptRunner.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mods/ScriptRunner.cpp b/src/mods/ScriptRunner.cpp index 5b48d148a..81917eff0 100644 --- a/src/mods/ScriptRunner.cpp +++ b/src/mods/ScriptRunner.cpp @@ -1220,6 +1220,17 @@ void ScriptRunner::reset_scripts() { std::filesystem::create_directories(autorun_path); spdlog::info("[ScriptRunner] Loading scripts..."); + auto path = std::filesystem::path(autorun_path); + auto dir = path.parent_path(); + + std::string old_path = m_main_state->lua()["package"]["path"]; + + std::string package_path = old_path + ";" + dir.string() + "/?.lua"; + package_path = package_path + ";" + dir.string() + "/?/init.lua"; + package_path = package_path + ";" + dir.string() + "/?.dll"; + + m_main_state->lua()["package"]["path"] = package_path; + for (auto&& entry : std::filesystem::directory_iterator{autorun_path}) { auto&& path = entry.path(); From c93ee5e96eeefca57724abba5c4a02524ad0a135 Mon Sep 17 00:00:00 2001 From: praydog Date: Tue, 17 Dec 2024 09:07:33 -0800 Subject: [PATCH 18/32] Lua: Fix package path using parent autorun path --- src/mods/ScriptRunner.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/mods/ScriptRunner.cpp b/src/mods/ScriptRunner.cpp index 81917eff0..08efb2e1a 100644 --- a/src/mods/ScriptRunner.cpp +++ b/src/mods/ScriptRunner.cpp @@ -1220,14 +1220,11 @@ void ScriptRunner::reset_scripts() { std::filesystem::create_directories(autorun_path); spdlog::info("[ScriptRunner] Loading scripts..."); - auto path = std::filesystem::path(autorun_path); - auto dir = path.parent_path(); - std::string old_path = m_main_state->lua()["package"]["path"]; - std::string package_path = old_path + ";" + dir.string() + "/?.lua"; - package_path = package_path + ";" + dir.string() + "/?/init.lua"; - package_path = package_path + ";" + dir.string() + "/?.dll"; + std::string package_path = old_path + ";" + autorun_path.string() + "/?.lua"; + package_path = package_path + ";" + autorun_path.string() + "/?/init.lua"; + package_path = package_path + ";" + autorun_path.string() + "/?.dll"; m_main_state->lua()["package"]["path"] = package_path; From bbe7765de70ee900be8a764ca5780fc6ee2cc8b1 Mon Sep 17 00:00:00 2001 From: praydog Date: Wed, 26 Feb 2025 12:34:25 -0800 Subject: [PATCH 19/32] SDK: Fix get_underlying_type on new RE Engine versions --- shared/sdk/RETypeDefinition.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/shared/sdk/RETypeDefinition.cpp b/shared/sdk/RETypeDefinition.cpp index fb99be2b0..3ee2f0164 100644 --- a/shared/sdk/RETypeDefinition.cpp +++ b/shared/sdk/RETypeDefinition.cpp @@ -4,6 +4,8 @@ #include #include +#include + #include @@ -350,9 +352,6 @@ sdk::RETypeDefinition* RETypeDefinition::get_underlying_type() const { } #if TDB_VER > 49 - // get the underlying type of the enum - // and then hash the name of the type instead - static auto get_underlying_type_method = this->get_method("GetUnderlyingType"); const auto runtime_type = this->get_runtime_type(); // dont forget to do this, passing nullptr into GetUnderlyingType causes System.ArgumentNullException @@ -362,11 +361,24 @@ sdk::RETypeDefinition* RETypeDefinition::get_underlying_type() const { return nullptr; } + // get the underlying type of the enum + // and then hash the name of the type instead + static const auto system_runtime_type_type = sdk::find_type_definition("System.RuntimeType"); + static const auto old_get_underlying_type_method = system_runtime_type_type != nullptr ? system_runtime_type_type->get_method("GetUnderlyingType") : nullptr; + static const auto new_underlying_type_method = system_runtime_type_type != nullptr ? system_runtime_type_type->get_method("GetEnumUnderlyingType") : nullptr; + const auto get_underlying_type_method = old_get_underlying_type_method != nullptr ? old_get_underlying_type_method : new_underlying_type_method; + + if (get_underlying_type_method == nullptr) { + std::unique_lock _{ g_underlying_mtx }; + g_underlying_types[this] = nullptr; + SPDLOG_WARN("[RETypeDefinition] Failed to find GetUnderlyingType method for {}", this->get_full_name()); + return nullptr; + } + const auto underlying_type = get_underlying_type_method->call<::REManagedObject*>(sdk::get_thread_context(), runtime_type); if (underlying_type != nullptr) { - static auto system_runtime_type_type = sdk::find_type_definition("System.RuntimeType"); - static auto get_name_method = system_runtime_type_type->get_method("get_FullName"); + static const auto get_name_method = system_runtime_type_type->get_method("get_FullName"); const auto full_name = get_name_method->call<::REManagedObject*>(sdk::get_thread_context(), underlying_type); From 5f272b1b60608e933847bc8e1d67a18fbcea3d28 Mon Sep 17 00:00:00 2001 From: Synthlight <1075166+Synthlight@users.noreply.github.com> Date: Wed, 26 Feb 2025 15:59:46 -0500 Subject: [PATCH 20/32] Add a button to dump only `il2cpp_dump.json`, skipping the `sdk_ida` folder. (#1194) --- src/mods/tools/ObjectExplorer.cpp | 16 +++++++++++----- src/mods/tools/ObjectExplorer.hpp | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/mods/tools/ObjectExplorer.cpp b/src/mods/tools/ObjectExplorer.cpp index 1d9861a4b..6f9b26904 100644 --- a/src/mods/tools/ObjectExplorer.cpp +++ b/src/mods/tools/ObjectExplorer.cpp @@ -344,7 +344,11 @@ void ObjectExplorer::on_draw_dev_ui() { return; } if (ImGui::Button("Dump SDK")) { - std::thread t(&ObjectExplorer::generate_sdk, this); + std::thread t(&ObjectExplorer::generate_sdk, this, false); + t.detach(); + } + if (ImGui::Button("Dump il2cpp json Only")) { + std::thread t(&ObjectExplorer::generate_sdk, this, true); t.detach(); } @@ -989,7 +993,7 @@ void ObjectExplorer::export_deserializer_chain(nlohmann::json& il2cpp_dump, sdk: } #endif -void ObjectExplorer::generate_sdk() { +void ObjectExplorer::generate_sdk(const bool justIl2CppJson) { // enums //auto ref = utility::scan(g_framework->get_module().as(), "66 C7 40 18 01 01 48 89 05 ? ? ? ?"); //auto& l = *(std::map*)(utility::calculate_absolute(*ref + 9)); @@ -2242,9 +2246,11 @@ void ObjectExplorer::generate_sdk() { spdlog::info("Generating IDA SDK..."); m_sdk_dump_stage = SdkDumpStage::GENERATE_SDK; - - genny::ida::transform(sdk); - sdk.generate("sdk_ida"); + + if (!justIl2CppJson) { + genny::ida::transform(sdk); + sdk.generate("sdk_ida"); + } // Free a couple gigabytes of no longer used memory g_stypedb.clear(); diff --git a/src/mods/tools/ObjectExplorer.hpp b/src/mods/tools/ObjectExplorer.hpp index 245b9a95d..c2ad7fd59 100644 --- a/src/mods/tools/ObjectExplorer.hpp +++ b/src/mods/tools/ObjectExplorer.hpp @@ -144,7 +144,7 @@ class ObjectExplorer : public Tool { std::string generate_full_name(sdk::RETypeDB* tdb, uint32_t i); void export_deserializer_chain(nlohmann::json& il2cpp_dump, sdk::RETypeDB* tdb, REType* t, std::optional real_name = std::nullopt); #endif - void generate_sdk(); + void generate_sdk(bool justIl2CppJson); void report_sdk_dump_progress(float progress); void handle_game_object(REGameObject* game_object); From 3d533b69ca87ed5f5cd020ba2353b04c0b9bfdb8 Mon Sep 17 00:00:00 2001 From: praydog Date: Wed, 26 Feb 2025 13:03:40 -0800 Subject: [PATCH 21/32] ObjectExplorer: Adjust style of last commit --- src/mods/tools/ObjectExplorer.cpp | 6 ++++-- src/mods/tools/ObjectExplorer.hpp | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mods/tools/ObjectExplorer.cpp b/src/mods/tools/ObjectExplorer.cpp index 6f9b26904..5147475fc 100644 --- a/src/mods/tools/ObjectExplorer.cpp +++ b/src/mods/tools/ObjectExplorer.cpp @@ -347,6 +347,8 @@ void ObjectExplorer::on_draw_dev_ui() { std::thread t(&ObjectExplorer::generate_sdk, this, false); t.detach(); } + + ImGui::SameLine(); if (ImGui::Button("Dump il2cpp json Only")) { std::thread t(&ObjectExplorer::generate_sdk, this, true); t.detach(); @@ -993,7 +995,7 @@ void ObjectExplorer::export_deserializer_chain(nlohmann::json& il2cpp_dump, sdk: } #endif -void ObjectExplorer::generate_sdk(const bool justIl2CppJson) { +void ObjectExplorer::generate_sdk(const bool skip_sdkgenny) { // enums //auto ref = utility::scan(g_framework->get_module().as(), "66 C7 40 18 01 01 48 89 05 ? ? ? ?"); //auto& l = *(std::map*)(utility::calculate_absolute(*ref + 9)); @@ -2247,7 +2249,7 @@ void ObjectExplorer::generate_sdk(const bool justIl2CppJson) { spdlog::info("Generating IDA SDK..."); m_sdk_dump_stage = SdkDumpStage::GENERATE_SDK; - if (!justIl2CppJson) { + if (!skip_sdkgenny) { genny::ida::transform(sdk); sdk.generate("sdk_ida"); } diff --git a/src/mods/tools/ObjectExplorer.hpp b/src/mods/tools/ObjectExplorer.hpp index c2ad7fd59..667be125a 100644 --- a/src/mods/tools/ObjectExplorer.hpp +++ b/src/mods/tools/ObjectExplorer.hpp @@ -144,7 +144,7 @@ class ObjectExplorer : public Tool { std::string generate_full_name(sdk::RETypeDB* tdb, uint32_t i); void export_deserializer_chain(nlohmann::json& il2cpp_dump, sdk::RETypeDB* tdb, REType* t, std::optional real_name = std::nullopt); #endif - void generate_sdk(bool justIl2CppJson); + void generate_sdk(bool skip_sdkgenny); void report_sdk_dump_progress(float progress); void handle_game_object(REGameObject* game_object); From e8e3522798c3ad19100c4a1563e930b7877f6f5b Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 28 Feb 2025 09:39:14 -0800 Subject: [PATCH 22/32] MHWilds: Fix TDB --- shared/sdk/RETypeDefinition.hpp | 2 +- shared/sdk/TDBVer.hpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/shared/sdk/RETypeDefinition.hpp b/shared/sdk/RETypeDefinition.hpp index ae819c514..3406f68ad 100644 --- a/shared/sdk/RETypeDefinition.hpp +++ b/shared/sdk/RETypeDefinition.hpp @@ -43,7 +43,7 @@ struct RETypeDefVersion74 { uint32_t type_crc; uint64_t default_ctor : 22; uint64_t member_method : 22; - uint64_t member_field : TYPE_INDEX_BITS; + uint64_t member_field : FIELD_BITS; uint32_t num_member_prop : 12; uint32_t member_prop : TYPE_INDEX_BITS; diff --git a/shared/sdk/TDBVer.hpp b/shared/sdk/TDBVer.hpp index baafca6ad..ecec2f441 100644 --- a/shared/sdk/TDBVer.hpp +++ b/shared/sdk/TDBVer.hpp @@ -53,48 +53,61 @@ struct RETypeDefinition; #if defined(MHWILDS) #define TYPE_INDEX_BITS 19 +#define FIELD_BITS 20 using RETypeDefinition_ = sdk::RETypeDefVersion74; #elif defined(DD2) #define TYPE_INDEX_BITS 19 +#define FIELD_BITS 19 using RETypeDefinition_ = sdk::RETypeDefVersion71; // same thing for now #elif defined(SF6) #define TYPE_INDEX_BITS 19 +#define FIELD_BITS 19 using RETypeDefinition_ = sdk::RETypeDefVersion71; #elif defined(RE4) #define TYPE_INDEX_BITS 19 +#define FIELD_BITS 19 using RETypeDefinition_ = sdk::RETypeDefVersion71; #elif defined(MHRISE) #ifdef MHRISE_TDB70 // it's version 70 but looks the same for now i guess #define TYPE_INDEX_BITS 18 +#define FIELD_BITS 18 using RETypeDefinition_ = sdk::RETypeDefVersion69; #else #define TYPE_INDEX_BITS 19 +#define FIELD_BITS 19 using RETypeDefinition_ = sdk::RETypeDefVersion71; #endif #elif defined(RE8) #define TYPE_INDEX_BITS 18 +#define FIELD_BITS 18 using RETypeDefinition_ = sdk::RETypeDefVersion69; #elif defined(DMC5) #define TYPE_INDEX_BITS 17 +#define FIELD_BITS 17 using RETypeDefinition_ = sdk::RETypeDefVersion67; #elif defined(RE2) || defined(RE3) #ifdef RE2_TDB66 #define TYPE_INDEX_BITS 16 +#define FIELD_BITS 16 using RETypeDefinition_ = sdk::RETypeDefVersion66; #elif defined(RE3_TDB67) #define TYPE_INDEX_BITS 17 +#define FIELD_BITS 17 using RETypeDefinition_ = sdk::RETypeDefVersion67; #else #define TYPE_INDEX_BITS 18 +#define FIELD_BITS 18 using RETypeDefinition_ = sdk::RETypeDefVersion69; #endif #elif RE7 #ifdef RE7_TDB49 #define TYPE_INDEX_BITS 16 +#define FIELD_BITS 16 using RETypeDefinition_ = sdk::RETypeDefVersion49; #else #define TYPE_INDEX_BITS 18 +#define FIELD_BITS 18 using RETypeDefinition_ = sdk::RETypeDefVersion69; #endif #endif From 4f40265fdbfb547b3908c62cb53f436a6d1adb90 Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 28 Feb 2025 10:50:29 -0800 Subject: [PATCH 23/32] Deps: Update kananlib --- CMakeLists.txt | 4 ++-- cmake.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6c5081dc..a82278ff3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,13 +135,13 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(bddisasm) -message(STATUS "Fetching kananlib (8b29e1694dbf4ad4c878ff54bcbcabf280b37168)...") +message(STATUS "Fetching kananlib (d659e3b8312e26ba19329f96b73ba88d1211bfdb)...") FetchContent_Declare( kananlib GIT_REPOSITORY https://github.com/cursey/kananlib GIT_TAG - 8b29e1694dbf4ad4c878ff54bcbcabf280b37168 + d659e3b8312e26ba19329f96b73ba88d1211bfdb ) FetchContent_MakeAvailable(kananlib) diff --git a/cmake.toml b/cmake.toml index 999d90817..cb4233e10 100644 --- a/cmake.toml +++ b/cmake.toml @@ -177,7 +177,7 @@ tag = "v1.34.10" [fetch-content.kananlib] git = "https://github.com/cursey/kananlib" -tag = "8b29e1694dbf4ad4c878ff54bcbcabf280b37168" +tag = "d659e3b8312e26ba19329f96b73ba88d1211bfdb" [target.utility] type = "static" From 97ca32ba7a9a072141785e86563fc0520b7d2160 Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 28 Feb 2025 10:51:32 -0800 Subject: [PATCH 24/32] MHWilds: Tentative crash fix --- src/mods/IntegrityCheckBypass.cpp | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/mods/IntegrityCheckBypass.cpp b/src/mods/IntegrityCheckBypass.cpp index 9ac337614..8c3e9e30c 100644 --- a/src/mods/IntegrityCheckBypass.cpp +++ b/src/mods/IntegrityCheckBypass.cpp @@ -518,6 +518,41 @@ void IntegrityCheckBypass::immediate_patch_dd2() { spdlog::info("[IntegrityCheckBypass]: Scanning DD2..."); const auto game = utility::get_executable(); + +#if TDB_VER >= 74 + const auto query_performance_frequency = &QueryPerformanceFrequency; + const auto query_performance_counter = &QueryPerformanceCounter; + + if (query_performance_frequency != nullptr && query_performance_counter != nullptr) { + const auto qpf_import = utility::scan_ptr(game, (uintptr_t)query_performance_frequency); + const auto qpc_import = utility::scan_ptr(game, (uintptr_t)query_performance_counter); + + if (qpf_import && qpc_import) { + const auto crasher_fn = utility::find_function_with_refs(game, { *qpf_import, *qpc_import }); + + if (crasher_fn) { + spdlog::info("[IntegrityCheckBypass]: Found crasher_fn!"); + + // Make function just ret + //static auto patch = Patch::create(*crasher_fn, { 0xC3 }, true); + + const auto cmp_jz = utility::find_pattern_in_path((uint8_t*)*crasher_fn, 1000, false, "39 0C 82 74 ?"); + + if (cmp_jz) { + static auto patch = Patch::create(cmp_jz->addr + 3, { 0xEB }, true); + spdlog::info("[IntegrityCheckBypass]: Patched crasher_fn!"); + } else { + spdlog::error("[IntegrityCheckBypass]: Could not find cmp_jz!"); + } + } else { + spdlog::error("[IntegrityCheckBypass]: Could not find crasher_fn!"); + } + } else { + spdlog::error("[IntegrityCheckBypass]: Could not find QueryPerformanceFrequency/Counter imports!"); + } + } +#endif + const auto conditional_jmp_block = utility::scan(game, "41 8B ? ? 78 83 ? 07 ? ? 75 ?"); if (conditional_jmp_block) { From 44b311669d5727f5f58dadadeb92d84deb8b14ac Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 28 Feb 2025 11:54:26 -0800 Subject: [PATCH 25/32] MHWilds: Tentative graphical corruption fix --- src/mods/IntegrityCheckBypass.cpp | 43 +++++++++++++++++++++++++++++++ src/mods/IntegrityCheckBypass.hpp | 5 ++++ 2 files changed, 48 insertions(+) diff --git a/src/mods/IntegrityCheckBypass.cpp b/src/mods/IntegrityCheckBypass.cpp index 8c3e9e30c..afc2f1e26 100644 --- a/src/mods/IntegrityCheckBypass.cpp +++ b/src/mods/IntegrityCheckBypass.cpp @@ -506,6 +506,19 @@ void IntegrityCheckBypass::immediate_patch_re4() { spdlog::info("[IntegrityCheckBypass]: Patched conditional_jmp!"); } +void* IntegrityCheckBypass::renderer_create_blas_hook(void* a1, void* a2, void* a3, void* a4, void* a5) { + if (s_corruption_when_zero != nullptr) { + if (*s_corruption_when_zero == 0) { + *s_corruption_when_zero = s_last_non_zero_corruption; + spdlog::info("[IntegrityCheckBypass]: Fixed corruption_when_zero!"); + } + + s_last_non_zero_corruption = *s_corruption_when_zero; + } + + return s_renderer_create_blas_hook->get_original()(a1, a2, a3, a4, a5); +} + void IntegrityCheckBypass::immediate_patch_dd2() { // Just like RE4, this deals with the scans that are done every frame on the game's memory. // The scans are still performed, but the crash will be avoided. @@ -551,6 +564,36 @@ void IntegrityCheckBypass::immediate_patch_dd2() { spdlog::error("[IntegrityCheckBypass]: Could not find QueryPerformanceFrequency/Counter imports!"); } } + + if (const auto create_blas_fn = utility::find_function_from_string_ref(game, "createBLAS"); create_blas_fn.has_value()) { + const auto create_blas_fn_unwind = utility::find_function_start_unwind(*create_blas_fn); + + if (create_blas_fn_unwind) { + spdlog::info("[IntegrityCheckBypass]: Found createBLAS!"); + + // Look for first lea rcx, [mem] + const auto lea_rcx = utility::find_pattern_in_path((uint8_t*)*create_blas_fn_unwind, 1000, false, "48 8D 0D ? ? ? ?"); + + if (lea_rcx) { + s_corruption_when_zero = (uint32_t*)utility::calculate_absolute(lea_rcx->addr + 3); + spdlog::info("[IntegrityCheckBypass]: Found corruption_when_zero!"); + } else { + spdlog::error("[IntegrityCheckBypass]: Could not find lea_rcx!"); + } + + s_renderer_create_blas_hook = std::make_unique(*create_blas_fn, &renderer_create_blas_hook); + + if (!s_renderer_create_blas_hook->create()) { + spdlog::error("[IntegrityCheckBypass]: Failed to hook createBLAS!"); + } else { + spdlog::info("[IntegrityCheckBypass]: Hooked createBLAS!"); + } + } else { + spdlog::error("[IntegrityCheckBypass]: Could not find unwound createBLAS!"); + } + } else { + spdlog::error("[IntegrityCheckBypass]: Could not find createBLAS!"); + } #endif const auto conditional_jmp_block = utility::scan(game, "41 8B ? ? 78 83 ? 07 ? ? 75 ?"); diff --git a/src/mods/IntegrityCheckBypass.hpp b/src/mods/IntegrityCheckBypass.hpp index 27be86870..7952a481d 100644 --- a/src/mods/IntegrityCheckBypass.hpp +++ b/src/mods/IntegrityCheckBypass.hpp @@ -38,6 +38,11 @@ class IntegrityCheckBypass : public Mod { } private: + static void* renderer_create_blas_hook(void* a1, void* a2, void* a3, void* a4, void* a5); + static inline std::unique_ptr s_renderer_create_blas_hook{}; + static inline uint32_t* s_corruption_when_zero{ nullptr }; + static inline uint32_t s_last_non_zero_corruption{ 8 }; // What I've seen it default to + static BOOL WINAPI virtual_protect_impl(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); static BOOL WINAPI virtual_protect_hook(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); From 1e8911e07e8417a45e73e721aa4d38051a884056 Mon Sep 17 00:00:00 2001 From: praydog Date: Sat, 1 Mar 2025 15:57:15 -0800 Subject: [PATCH 26/32] Fix bug during backbuffer resize allowing ignored hooks to execute --- src/REFramework.hpp | 1 + src/mods/Hooks.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/REFramework.hpp b/src/REFramework.hpp index c6075fb74..f29d68499 100644 --- a/src/REFramework.hpp +++ b/src/REFramework.hpp @@ -46,6 +46,7 @@ class REFramework { Address get_module() const { return m_game_module; } bool is_ready() const { return m_initialized && m_game_data_initialized; } + bool is_game_data_initialized() const { return m_game_data_initialized; } bool is_ui_focused() const { return m_is_ui_focused; } void run_imgui_frame(bool from_present); diff --git a/src/mods/Hooks.cpp b/src/mods/Hooks.cpp index bf2d307a9..5b4cf5ed2 100644 --- a/src/mods/Hooks.cpp +++ b/src/mods/Hooks.cpp @@ -899,7 +899,7 @@ void Hooks::global_application_entry_hook_internal(void* entry, const char* name auto original = m_application_entry_hooks[name]; - if (!g_framework->is_ready()) { + if (!g_framework->is_game_data_initialized()) { return original(entry); } From c81024d4541d9d16f82f968913e169a70fe7928c Mon Sep 17 00:00:00 2001 From: praydog Date: Sat, 1 Mar 2025 16:05:12 -0800 Subject: [PATCH 27/32] ExceptionHandler: Log suspicious (fake) exceptions --- src/ExceptionHandler.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ExceptionHandler.cpp b/src/ExceptionHandler.cpp index 3e39d81d3..f4968bfb5 100644 --- a/src/ExceptionHandler.cpp +++ b/src/ExceptionHandler.cpp @@ -19,7 +19,13 @@ LONG WINAPI reframework::global_exception_handler(struct _EXCEPTION_POINTERS* ei spdlog::flush_on(spdlog::level::err); + if (_ReturnAddress() == nullptr) { + spdlog::warn("SUSPICIOUS EXCEPTION: _ReturnAddress() == nullptr"); + } + spdlog::error("Exception occurred: {:x}", ei->ExceptionRecord->ExceptionCode); + + spdlog::error("RIP (exception record): {:x}", (uintptr_t)ei->ExceptionRecord->ExceptionAddress); spdlog::error("RIP: {:x}", ei->ContextRecord->Rip); spdlog::error("RSP: {:x}", ei->ContextRecord->Rsp); spdlog::error("RCX: {:x}", ei->ContextRecord->Rcx); From e1f53ea8e85871b6b81a121b7c34928e569ca680 Mon Sep 17 00:00:00 2001 From: praydog Date: Sat, 1 Mar 2025 16:48:08 -0800 Subject: [PATCH 28/32] MHWilds: Nuke various checks + anti-debugger from orbit --- src/mods/IntegrityCheckBypass.cpp | 110 ++++++++++++++++++++++++++++++ src/mods/IntegrityCheckBypass.hpp | 5 ++ 2 files changed, 115 insertions(+) diff --git a/src/mods/IntegrityCheckBypass.cpp b/src/mods/IntegrityCheckBypass.cpp index afc2f1e26..89e17b474 100644 --- a/src/mods/IntegrityCheckBypass.cpp +++ b/src/mods/IntegrityCheckBypass.cpp @@ -307,6 +307,10 @@ void IntegrityCheckBypass::ignore_application_entries() { Hooks::get()->ignore_application_entry(0x00c0ab9309584734); Hooks::get()->ignore_application_entry(0xa474f1d3a294e6a4); #endif +#if TDB_VER >= 74 + Hooks::get()->ignore_application_entry(0x00ec4793097cd833); + Hooks::get()->ignore_application_entry(0x00d85893096c4c0c); +#endif } void IntegrityCheckBypass::immediate_patch_re8() { @@ -519,6 +523,110 @@ void* IntegrityCheckBypass::renderer_create_blas_hook(void* a1, void* a2, void* return s_renderer_create_blas_hook->get_original()(a1, a2, a3, a4, a5); } +// This is used to nuke the heap allocated code that causes crashes +// when debuggers are attached and other integrity checks. +// They happen to be in the same (heap allocated) executable section, so we can just +// replace every byte with a RET instruction. +void IntegrityCheckBypass::nuke_heap_allocated_code(uintptr_t addr) { + // Get the base of the memory region. + MEMORY_BASIC_INFORMATION mbi{}; + if (VirtualQuery((LPCVOID)addr, &mbi, sizeof(mbi)) == 0) { + spdlog::error("[IntegrityCheckBypass]: VirtualQuery failed!"); + return; + } + + // Get the end of the memory region. + const auto start = (uintptr_t)mbi.BaseAddress; + const auto end = (uintptr_t)mbi.BaseAddress + mbi.RegionSize; + + spdlog::info("[IntegrityCheckBypass]: Nuking heap allocated code at 0x{:X} - 0x{:X}", start, end); + + // Fix the protection of the memory region. + ProtectionOverride _{(void*)start, mbi.RegionSize, PAGE_EXECUTE_READWRITE}; + + // Replace every single byte with a RET (C3) instruction. + std::memset((void*)start, 0xC3, mbi.RegionSize); + + spdlog::info("[IntegrityCheckBypass]: Nuked heap allocated code at 0x{:X}", start); +} + +void IntegrityCheckBypass::anti_debug_watcher() try { + static const auto ntdll = GetModuleHandleW(L"ntdll.dll"); + static const auto dbg_ui_remote_breakin = ntdll != nullptr ? GetProcAddress(ntdll, "DbgUiRemoteBreakin") : nullptr; + static auto original_dbg_ui_remote_breakin_bytes = dbg_ui_remote_breakin != nullptr ? utility::get_original_bytes(dbg_ui_remote_breakin) : std::optional>{}; + + if (dbg_ui_remote_breakin == nullptr) { + return; + } + + // We can generally assume it's not hooked at this point if the original bytes are empty. + if (!original_dbg_ui_remote_breakin_bytes || original_dbg_ui_remote_breakin_bytes->empty()) { + spdlog::info("[IntegrityCheckBypass]: Manually copying original bytes for DbgUiRemoteBreakin."); + if (!original_dbg_ui_remote_breakin_bytes) { + original_dbg_ui_remote_breakin_bytes = std::vector{}; + } + + if (original_dbg_ui_remote_breakin_bytes->size() < 32) { + std::copy_n((uint8_t*)dbg_ui_remote_breakin + original_dbg_ui_remote_breakin_bytes->size(), 32 - original_dbg_ui_remote_breakin_bytes->size(), std::back_inserter(*original_dbg_ui_remote_breakin_bytes)); + } + } + + const uint64_t* first_8_bytes = (uint64_t*)dbg_ui_remote_breakin; + const uint8_t* first_8_bytes_ptr = (uint8_t*)dbg_ui_remote_breakin; + + if (*(uint64_t*)original_dbg_ui_remote_breakin_bytes->data() != *first_8_bytes) { + spdlog::info("[IntegrityCheckBypass]: DbgUiRemoteBreakin was hooked, restoring original bytes."); + + if (first_8_bytes_ptr[0] == 0xE9) { + spdlog::info("[IntegrityCheckBypass]: DbgUiRemoteBreakin was directly hooked, resolving..."); + const auto resolved_jmp = utility::calculate_absolute((uintptr_t)dbg_ui_remote_breakin + 1); + const auto is_heap_allocated = utility::get_module_within(resolved_jmp).value_or(nullptr) == nullptr; + + if (is_heap_allocated && !IsBadReadPtr((void*)resolved_jmp, 32)) { + spdlog::info("[IntegrityCheckBypass]: Nuking heap allocated code at 0x{:X}", resolved_jmp); + nuke_heap_allocated_code(resolved_jmp); + } + } else if (first_8_bytes_ptr[0] == 0xFF && first_8_bytes_ptr[1] == 0x25) { + spdlog::info("[IntegrityCheckBypass]: DbgUiRemoteBreakin was indirectly hooked, resolving..."); + const auto resolved_ptr = utility::calculate_absolute((uintptr_t)dbg_ui_remote_breakin + 2); + const auto resolved_jmp = *(uintptr_t*)resolved_ptr; + const auto is_heap_allocated = utility::get_module_within(resolved_jmp).value_or(nullptr) == nullptr; + + if (is_heap_allocated && !IsBadReadPtr((void*)resolved_jmp, 32)) { + spdlog::info("[IntegrityCheckBypass]: Nuking heap allocated code at 0x{:X}", resolved_jmp); + nuke_heap_allocated_code(resolved_jmp); + } + } + + ProtectionOverride _{dbg_ui_remote_breakin, original_dbg_ui_remote_breakin_bytes->size(), PAGE_EXECUTE_READWRITE}; + std::copy(original_dbg_ui_remote_breakin_bytes->begin(), original_dbg_ui_remote_breakin_bytes->end(), (uint8_t*)dbg_ui_remote_breakin); + + spdlog::info("[IntegrityCheckBypass]: Restored DbgUiRemoteBreakin."); + } +} catch (const std::exception& e) { + spdlog::error("[IntegrityCheckBypass]: Exception in anti_debug_watcher: {}", e.what()); +} catch (...) { + spdlog::error("[IntegrityCheckBypass]: Unknown exception in anti_debug_watcher!"); +} + +void IntegrityCheckBypass::init_anti_debug_watcher() { + if (s_anti_anti_debug_thread != nullptr) { + return; + } + + // Run the original watcher once so we get it at least without creating a thread first. + anti_debug_watcher(); + + s_anti_anti_debug_thread = std::make_unique([](std::stop_token stop_token) { + spdlog::info("[IntegrityCheckBypass]: Hello from anti_debug_watcher!"); + + while (!stop_token.stop_requested()) { + anti_debug_watcher(); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + } + }); +} + void IntegrityCheckBypass::immediate_patch_dd2() { // Just like RE4, this deals with the scans that are done every frame on the game's memory. // The scans are still performed, but the crash will be avoided. @@ -533,6 +641,8 @@ void IntegrityCheckBypass::immediate_patch_dd2() { const auto game = utility::get_executable(); #if TDB_VER >= 74 + init_anti_debug_watcher(); + const auto query_performance_frequency = &QueryPerformanceFrequency; const auto query_performance_counter = &QueryPerformanceCounter; diff --git a/src/mods/IntegrityCheckBypass.hpp b/src/mods/IntegrityCheckBypass.hpp index 7952a481d..c6c7dc67a 100644 --- a/src/mods/IntegrityCheckBypass.hpp +++ b/src/mods/IntegrityCheckBypass.hpp @@ -43,6 +43,11 @@ class IntegrityCheckBypass : public Mod { static inline uint32_t* s_corruption_when_zero{ nullptr }; static inline uint32_t s_last_non_zero_corruption{ 8 }; // What I've seen it default to + static void anti_debug_watcher(); + static void init_anti_debug_watcher(); + static void nuke_heap_allocated_code(uintptr_t addr); + static inline std::unique_ptr s_anti_anti_debug_thread{nullptr}; + static BOOL WINAPI virtual_protect_impl(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); static BOOL WINAPI virtual_protect_hook(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); From 8225c1eaad2c93f81bbbc236f2067f201766512c Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 2 Mar 2025 14:53:33 -0800 Subject: [PATCH 29/32] Add Wilds to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9fbd84ff2..b35fedfcf 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Supports both DirectX 11 and DirectX 12. * Devil May Cry 5 * Street Fighter 6 * Monster Hunter Rise +* Monster Hunter Wilds * Dragon's Dogma 2 * Ghosts 'n Goblins Resurrection (Using RE8 build) * Apollo Justice: Ace Attorney Trilogy (Using DD2 build) From 26aa7c6e567208bbaf92170b30fd3f669154c24a Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 2 Mar 2025 14:54:44 -0800 Subject: [PATCH 30/32] SDK/Lua: Add RETypeDefinition::get_types_inheriting_from_this() --- shared/sdk/RETypeDefinition.cpp | 22 +++++++++++++++++++++- shared/sdk/RETypeDefinition.hpp | 4 +++- src/mods/bindings/Sdk.cpp | 4 +++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/shared/sdk/RETypeDefinition.cpp b/shared/sdk/RETypeDefinition.cpp index 3ee2f0164..bb7681c56 100644 --- a/shared/sdk/RETypeDefinition.cpp +++ b/shared/sdk/RETypeDefinition.cpp @@ -638,7 +638,7 @@ bool RETypeDefinition::has_fieldptr_offset() const { #endif } -bool RETypeDefinition::is_a(sdk::RETypeDefinition* other) const { +bool RETypeDefinition::is_a(const sdk::RETypeDefinition* other) const { if (other == nullptr) { return false; } @@ -1133,4 +1133,24 @@ uint32_t RETypeDefinition::get_flags() const { bool RETypeDefinition::should_pass_by_pointer() const { return !is_value_type() || (get_valuetype_size() > sizeof(void*) || (!is_primitive() && !is_enum())); } + +std::vector RETypeDefinition::get_types_inherting_from_this() const { + std::vector out{}; + auto tdb = RETypeDB::get(); + + // Maybe optimize by making a dependency graph? + for (auto i = 0; i < tdb->numTypes; ++i) { + auto type = tdb->get_type(i); + + if (type == nullptr) { + continue; + } + + if (type->is_a(this)) { + out.push_back(type); + } + } + + return out; +} } // namespace sdk \ No newline at end of file diff --git a/shared/sdk/RETypeDefinition.hpp b/shared/sdk/RETypeDefinition.hpp index 3406f68ad..65a7fbe0b 100644 --- a/shared/sdk/RETypeDefinition.hpp +++ b/shared/sdk/RETypeDefinition.hpp @@ -367,7 +367,7 @@ struct RETypeDefinition : public sdk::RETypeDefinition_ { uint32_t get_index() const; int32_t get_fieldptr_offset() const; bool has_fieldptr_offset() const; - bool is_a(sdk::RETypeDefinition* other) const; + bool is_a(const sdk::RETypeDefinition* other) const; bool is_a(std::string_view other) const; ::via::clr::VMObjType get_vm_obj_type() const; @@ -396,6 +396,8 @@ struct RETypeDefinition : public sdk::RETypeDefinition_ { ::REObjectInfo* get_managed_vt() const; uint32_t get_flags() const; + std::vector get_types_inherting_from_this() const; + private: void set_vm_obj_type(::via::clr::VMObjType type); // for REFramework shenanigans only! }; diff --git a/src/mods/bindings/Sdk.cpp b/src/mods/bindings/Sdk.cpp index 4b9b63861..b8842c8af 100644 --- a/src/mods/bindings/Sdk.cpp +++ b/src/mods/bindings/Sdk.cpp @@ -1570,7 +1570,9 @@ void bindings::open_sdk(ScriptState* s) { return false; }, - "create_instance", &::sdk::RETypeDefinition::create_instance_full); + "create_instance", &::sdk::RETypeDefinition::create_instance_full, + "get_types_inheriting_from_this", &::sdk::RETypeDefinition::get_types_inherting_from_this + ); auto method_call = [](sdk::REMethodDefinition* def, sol::object obj, sol::variadic_args va) { auto l = va.lua_state(); From a0a86e504c10cedb0cce46b3eefe82cddee0af5a Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 2 Mar 2025 14:55:14 -0800 Subject: [PATCH 31/32] GameObjectsDisplay: Add "Legacy Mode" options --- src/mods/tools/GameObjectsDisplay.cpp | 6 +++++- src/mods/tools/GameObjectsDisplay.hpp | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mods/tools/GameObjectsDisplay.cpp b/src/mods/tools/GameObjectsDisplay.cpp index 7e5358a67..3ea30ddf9 100644 --- a/src/mods/tools/GameObjectsDisplay.cpp +++ b/src/mods/tools/GameObjectsDisplay.cpp @@ -148,6 +148,10 @@ void GameObjectsDisplay::on_draw_dev_ui() { // todo } + ImGui::SameLine(); + + ImGui::Checkbox("Legacy Mode", &m_legacy_mode); + m_max_distance->draw("Max Distance for GameObjects"); if (ImGui::SliderFloat("Object Effect Alpha", &m_effect_alpha, 0.0f, 1.0f)) { @@ -311,7 +315,7 @@ void GameObjectsDisplay::on_frame() { } } - if (is_d3d12) { + if (is_d3d12 && !m_legacy_mode) { get_world_matrix_method->call(&world_matrix, context, transform); DirectX::SimpleMath::Matrix world = diff --git a/src/mods/tools/GameObjectsDisplay.hpp b/src/mods/tools/GameObjectsDisplay.hpp index 75a42084c..83d410dea 100644 --- a/src/mods/tools/GameObjectsDisplay.hpp +++ b/src/mods/tools/GameObjectsDisplay.hpp @@ -59,6 +59,7 @@ class GameObjectsDisplay : public Tool { float m_effect_alpha{ 0.5f }; bool m_effect_dirty{ false }; bool m_needs_d3d_init{ false }; + bool m_legacy_mode{ false }; ValueList m_options{ *m_enabled, From e2b27563358d4e16a35f154f586412aa9bcdc500 Mon Sep 17 00:00:00 2001 From: praydog Date: Sun, 2 Mar 2025 14:59:11 -0800 Subject: [PATCH 32/32] MHWilds: Fix logic error in anti-anti-debugger --- src/mods/IntegrityCheckBypass.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mods/IntegrityCheckBypass.cpp b/src/mods/IntegrityCheckBypass.cpp index 89e17b474..94e91653e 100644 --- a/src/mods/IntegrityCheckBypass.cpp +++ b/src/mods/IntegrityCheckBypass.cpp @@ -565,10 +565,10 @@ void IntegrityCheckBypass::anti_debug_watcher() try { if (!original_dbg_ui_remote_breakin_bytes) { original_dbg_ui_remote_breakin_bytes = std::vector{}; } + } - if (original_dbg_ui_remote_breakin_bytes->size() < 32) { - std::copy_n((uint8_t*)dbg_ui_remote_breakin + original_dbg_ui_remote_breakin_bytes->size(), 32 - original_dbg_ui_remote_breakin_bytes->size(), std::back_inserter(*original_dbg_ui_remote_breakin_bytes)); - } + if (original_dbg_ui_remote_breakin_bytes->size() < 32) { + std::copy_n((uint8_t*)dbg_ui_remote_breakin + original_dbg_ui_remote_breakin_bytes->size(), 32 - original_dbg_ui_remote_breakin_bytes->size(), std::back_inserter(*original_dbg_ui_remote_breakin_bytes)); } const uint64_t* first_8_bytes = (uint64_t*)dbg_ui_remote_breakin;